部署和测试 Stablecoin 合同

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

从 Visual Studio Code 部署

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

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

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

从命令行部署

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

  1. 提取 Stablecoin.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":"0xFf93749DEFa27077d055581642E077E94426A89C","walletId":"031cab07-ca25-422f-84a0-4a78d89982cc"}]'
    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=<ida-contract-governance-address> \
    GOVERNANCE_UUID=<customer-governance-uuid> \
    TOKEN_NAME="Stablecoin" \
    TOKEN_SYMBOL="STBL" \
    TOKEN_DESCRIPTION="Stablecoin token proxy contract" \
    ADMIN_USER_ID="platformadmin1" \
    ADMIN_ORG_ID="org1" \
    CONTRACT_METADATA_SMART_CONTRACT_ID="stablecoin" \
    CONTRACT_METADATA_VERSION="1.0.0" \
    CONTRACT_METADATA_DESCRIPTION="Stablecoin token proxy contract" \
    CONTRACT_METADATA_AUTHOR="Oracle" \
    CONTRACT_METADATA_TAGS='{"assetType":"stablecoin token"}' \
    npx hardhat run scripts/deploy/stablecoin/deploy-stablecoin-erc-5982.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='["<stablecoin-proxy>"]' \
    DEPLOY_INTENT_MANIFEST=.obp-da/governance/deploy-intent.json \
    npx hardhat run scripts/deploy/governance/propose-deploy-intent.ts --network obp-besu
    

    使用 GOVERNANCE_INTENT_MODE = json-rpc 提交直接合同。如果使用 GOVERNANCE_INTENT_MODE = obp-besu,则建议将通过 RPC 代理提交到 UWaaS 端点。

    仓库完成后,您可以使用提供的 Postman 集合通过 RPC 代理调用合同方法。