部署和测试组合令牌框架合同

您可以使用 CLI 或使用适用于 Blockchain App Builder 的 Microsoft Visual Studio Code 扩展来部署合同。

从 Visual Studio Code 部署

要使用 Visual Studio Code 扩展为 Blockchain App Builder 部署合同,请完成以下步骤。

  1. 提取 art-collection-loyalty-point.zip 归档文件。
  2. 将 Art-Collection 合同导入 Visual Studio Code 中的 Blockchain App Builder 扩展。
  3. 选择导入的项目,然后选择部署选项卡。

有关更多信息,请参见 Using the Blockchain App Builder Extension for Visual Studio Code 。

从命令行部署

要从命令行部署合同,请完成以下步骤。

  1. 提取 art-collection-loyalty-point.zip 归档文件。
  2. 运行以下命令以安装相关项。
    npm install
  3. 运行以下命令以编译合同。
    npx hardhat clean
    npx hardhat compile
  4. 配置以下网络变量。
    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..."
    
  5. 部署合同。每个部署都需要以下变量: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-besu
    
    CONTRACT_METADATA_* 变量应用于脚本部署的令牌代理。标记必须是具有字符串值的 JSON 对象。

    此命令以 INACTIVE 模式部署合同。根据附加到 GOVERNANCE_UUID 值的策略提交部署意图并批准意图后,部署将自动标记为 ACTIVE。

  6. 提出受监管代理的部署意图。部署设置监管上下文后,为每个受监管的代理提交一个意图。运行以下命令以建议部署意图。
    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 代理调用合同方法。