部署和测试组合令牌框架合同
您可以使用 CLI 或使用适用于 Blockchain App Builder 的 Microsoft Visual Studio Code 扩展来部署合同。
从 Visual Studio Code 部署
要使用 Visual Studio Code 扩展为 Blockchain App Builder 部署合同,请完成以下步骤。
- 提取
art-collection-loyalty-point.zip归档文件。 - 将
Art-Collection合同导入 Visual Studio Code 中的 Blockchain App Builder 扩展。 - 选择导入的项目,然后选择部署选项卡。
有关更多信息,请参见 Using the Blockchain App Builder Extension for Visual Studio Code 。
从命令行部署
要从命令行部署合同,请完成以下步骤。
- 提取
art-collection-loyalty-point.zip归档文件。 - 运行以下命令以安装相关项。
npm install - 运行以下命令以编译合同。
npx hardhat clean npx hardhat compile - 配置以下网络变量。
以下文本显示了变量配置的示例。npx hardhat vars set BESU_CHAIN_ID <chain-id> npx hardhat vars set BESU_RPC_URL <rpc-url> npx hardhat vars set BESU_RPX_PROXY_AUTH_TOKEN "Bearer {auth-token}" npx hardhat vars set WALLET_SERVICE_BASE_URL <wallet-svc-url> npx hardhat vars set WALLET_SERVICE_ENABLED true npx hardhat vars set WALLET_SERVICE_ACCOUNTS <wallet-svc-accounts> npx hardhat vars set WALLET_SERVICE_AUTH_TOKEN "Bearer {auth-token}"npx hardhat vars set BESU_CHAIN_ID 1500 npx hardhat vars set BESU_RPC_URL https://rpcproxy.example.com/v1/besu/proxy npx hardhat vars set BESU_RPX_PROXY_AUTH_TOKEN "Bearer ej1q..." npx hardhat vars set WALLET_SERVICE_BASE_URL https://rpcproxy.example.com/v1/besu/transaction npx hardhat vars set WALLET_SERVICE_ENABLED true npx hardhat vars set WALLET_SERVICE_ACCOUNTS '[{"address":"0xfba9bd4554d3cf731c85316b5b5cf38fcd2fc72b","walletId":"0xfba9bd4554d3cf731c85316b5b5cf38fcd2fc72b"}]' npx hardhat vars set WALLET_SERVICE_AUTH_TOKEN "Bearer ej1q..." - 部署合同。每个部署都需要以下变量:
DEPLOYMENT_ID、GOVERNANCE_ADDRESS和GOVERNANCE_UUID。- 如果部署失败,请使用要恢复的相同
DEPLOYMENT_ID值再次运行该部署。部署成功后,将删除恢复高速缓存。如果再次使用相同的DEPLOYMENT_ID值运行成功部署,则将其视为新部署。 GOVERNANCE_ADDRESS值是实例的预部署监管合同地址。- 请与
DA_ADMIN角色联系以获取GOVERNANCE_UUID值。
.obp-da/.erc7201注册表项。运行以下命令以部署合同。DEPLOYMENT_ID=<deployment-id> \ GOVERNANCE_ADDRESS=<governance-contract-address> \ GOVERNANCE_UUID=<governance-uuid> \ TOKEN_NAME="ArtCollectionLoyaltyToken" \ TOKEN_DESCRIPTION="Art collection loyalty point token proxy contract" \ TOKEN_URI="https://token-cdn-domain/{id}.json" \ ADMIN_USER_ID="platformadmin1" \ ADMIN_ORG_ID="org1" \ CONTRACT_METADATA_SMART_CONTRACT_ID="artCollectionLoyaltyToken" \ CONTRACT_METADATA_VERSION="1.0.0" \ CONTRACT_METADATA_DESCRIPTION="Art collection loyalty point token proxy contract" \ CONTRACT_METADATA_AUTHOR="Oracle" \ CONTRACT_METADATA_TAGS='{"assetType":"art-loyalty token"}' \ npx hardhat run scripts/deploy/art-loyalty/deploy-art-loyalty.ts --network obp-besuCONTRACT_METADATA_*变量应用于脚本部署的令牌代理。标记必须是具有字符串值的 JSON 对象。此命令以
INACTIVE模式部署合同。根据附加到GOVERNANCE_UUID值的策略提交部署意图并批准意图后,部署将自动标记为ACTIVE。 - 如果部署失败,请使用要恢复的相同
- 提出受监管代理的部署意图。部署设置监管上下文后,为每个受监管的代理提交一个意图。运行以下命令以建议部署意图。
GOVERNANCE_INTENT_MODE=obp-besu \ GOVERNANCE_ADDRESS=<governance-address> \ GOVERNANCE_UUID=<customer-uuid> \ DEPLOY_TARGETS_JSON='["<artloyalty-proxy>"]' \ DEPLOY_INTENT_MANIFEST=.obp-da/governance/deploy-intent.json \ npx hardhat run scripts/deploy/art-loyalty/governance/propose-deploy-intent.ts --network obp-besu使用
GOVERNANCE_INTENT_MODE = json-rpc提交直接合同。如果使用GOVERNANCE_INTENT_MODE = obp-besu,则建议将通过 RPC 代理提交到 UWaaS 端点。仓库完成后,您可以使用提供的 Postman 集合通过 RPC 代理调用合同方法。