Stablecoin 계약 배포 및 테스트

CLI를 사용하거나 Blockchain App Builder용 Microsoft Visual Studio Code 확장을 사용하여 계약을 배포할 수 있습니다.

Visual Studio 코드에서 배포

Blockchain App Builder용 Visual Studio Code 확장을 사용하여 계약을 배포하려면 다음 단계를 완료하십시오.

  1. Stablecoin.zip 아카이브 파일의 압축을 풉니다.
  2. Stablecoin 계약을 Visual Studio Code의 Blockchain App Builder 확장으로 임포트합니다.
  3. 임포트된 프로젝트를 선택한 다음 배포 탭을 선택합니다.

자세한 내용은 Visual Studio 코드용 Blockchain App Builder 확장 사용을 참조하십시오.

명령행에서 배치

명령행에서 계약을 배치하려면 다음 단계를 완료합니다.

  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 값은 인스턴스에 대해 사전 배치된 거버넌스 계약 주소입니다.
    • GOVERNANCE_UUID 값에 대해 DA_ADMIN 롤에 문의하십시오.
    배포 시 환경 변수를 사용하여 토큰 프록시 메타데이터를 전달할 수 있습니다. 배치는 토큰 프록시에 대해서만 메타데이터를 .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 프록시를 통해 계약 메소드를 호출할 수 있습니다.