伊藤  直子

伊藤 直子

1633552140

トリュフを使用したEtherscanとBscscanのスマートコントラクトを自動的に検証します

スマートコントラクトの検証は、分散型プロジェクトにとって重要です。自動契約検証を使用して、etherscan.ioでプロジェクトコードを公開できます。また、コントラクトを確認すると、etherscan.ioで読み取りおよび書き込み関数の相互作用が利用可能になります。

手動検証はetherscan.ioで利用できますが、検証をTruffleで直接自動化することがベストプラクティスです。

トリュフプロジェクトを作成する

truffleinitでプロジェクトを開始します

mkdir truffle-project 
cd truffle-project 
truffle init

このコマンドの後に、定型的なTruffleプロジェクトがあります。

簡単なスマートコントラクトをコーディングしましょう。

touch contracts/NumberStorage.sol

以下の行をNumberStorage.solに追加します。

// SPDX-License-Identifier: MIT
pragma solidity 0.8.6;

contract NumberStorage {
    uint256 private _number;

    function setNumber(uint256 value) external {
        _number = value;
    }

    function number() public view returns(uint256) {
        return _number;
    }
}

truffle-config.jsに以下の行を追加します

compilers: {
  solc: {
    version: "0.8.6", // Fetch exact version from solc-bin (default: truffle's version)
    docker: false, // Use "0.5.1" you've installed locally with docker (default: false)
    settings: {
      // See the solidity docs for advice about optimization and evmVersion
      optimizer: {
        enabled: true,
        runs: 200,
      },
      evmVersion: "byzantium",
    },
  },
},

コントラクトをコンパイルすると、成功メッセージが表示されます。

truffle compile

Output:

> Compiled successfully using:
   - solc: 0.8.6+commit.11564f7e.Emscripten.clang

トリュフ検証プラグインをプロジェクトに追加します

yarn add -D truffle-plugin-verify

次に、プラグイン配列内のtruffle-plugin-verifyをtruffle-config.jsに追加します。

plugins: [
  'truffle-plugin-verify'
]

2つのパッケージをインストールします。1つは.envファイル用で、もう1つは秘密鍵用です。秘密鍵プロバイダーまたはニーモニックプロバイダーを使用できます。それらの両方が動作します。

yarn add -D dotenv truffle-privatekey-provider

truffle-config.jsの上部にこれらの行を追加します

require('dotenv').config()
const PrivateKeyProvider = require("truffle-privatekey-provider");

Etherscan.ioでAPIキーを作成します

etherscan.ioAPIキーを生成する必要があります。サインアップして、ここでAPIキーを生成します

次に、api-keysをtruffle-config.jsに追加します

api_keys:{ 
  etherscan:process.env.ETHERSCAN_API_KEY 
}

 InfuraでAPIキーを作成します

infura.ioでアカウントを作成し、Ethereumプロジェクトを作成します(https://infura.io/dashboard/ethereum)。最近作成したプロジェクトの設定をクリックします。

展開のためにRinkebyネットワークを追加する

スマートコントラクトを展開しようとしています。Rinkebyネットワーク構成をtruffle-config.jsに追加する必要があります

networks: {
  rinkeby: {
    provider: () => new PrivateKeyProvider(process.env.PRIVATE_KEY, process.env.RINKEBY_INFURA_URL),
    network_id: 4,       // Ropsten's id
    gas: 5500000,        // Ropsten has a lower block limit than mainnet
    confirmations: 2,    // # of confs to wait between deployments. (default: 0)
    timeoutBlocks: 200,  // # of blocks before a deployment times out  (minimum/default: 50)
    skipDryRun: true     // Skip dry run before migrations? (default: false for public nets )
  },
},

.envファイルを作成し、環境変数を追加します

タッチ.env

.envファイルには次のものが含まれている必要があります。

RINKEBY_INFURA_URL=https://rinkeby.infura.io/v3/YOUR_INFURA_PROJECT_URL
PRIVATE_KEY=YOUR_PRIVATE_KEY
ETHERSCAN_API_KEY=YOUR_ETHERSCAN_API_KEY

契約展開の移行を作成する

truffle create migration NumberStorage

移行フォルダに新しいファイルが表示されます。それらの行をnumber_storage.jsに追加します

module.exports = async function(deployer) {
  const NumberStorage = artifacts.require("NumberStorage");

  await deployer.deploy(NumberStorage);
  const contract = await NumberStorage.deployed();

  console.log("Contract address:", contract.address)
};

契約を展開する

truffle migrate --network rinkeby

コントラクトの展開には数分かかります。

展開が完了すると、次のメッセージが表示されます。

契約はまだ確認されていません。確認しましょう。

契約を確認する

truffle run verify NumberStorage --network rinkeby

確認にはしばらく時間がかかります。

リンク: https://medium.com/

#network

 

What is GEEK

Buddha Community

トリュフを使用したEtherscanとBscscanのスマートコントラクトを自動的に検証します
伊藤  直子

伊藤 直子

1633552140

トリュフを使用したEtherscanとBscscanのスマートコントラクトを自動的に検証します

スマートコントラクトの検証は、分散型プロジェクトにとって重要です。自動契約検証を使用して、etherscan.ioでプロジェクトコードを公開できます。また、コントラクトを確認すると、etherscan.ioで読み取りおよび書き込み関数の相互作用が利用可能になります。

手動検証はetherscan.ioで利用できますが、検証をTruffleで直接自動化することがベストプラクティスです。

トリュフプロジェクトを作成する

truffleinitでプロジェクトを開始します

mkdir truffle-project 
cd truffle-project 
truffle init

このコマンドの後に、定型的なTruffleプロジェクトがあります。

簡単なスマートコントラクトをコーディングしましょう。

touch contracts/NumberStorage.sol

以下の行をNumberStorage.solに追加します。

// SPDX-License-Identifier: MIT
pragma solidity 0.8.6;

contract NumberStorage {
    uint256 private _number;

    function setNumber(uint256 value) external {
        _number = value;
    }

    function number() public view returns(uint256) {
        return _number;
    }
}

truffle-config.jsに以下の行を追加します

compilers: {
  solc: {
    version: "0.8.6", // Fetch exact version from solc-bin (default: truffle's version)
    docker: false, // Use "0.5.1" you've installed locally with docker (default: false)
    settings: {
      // See the solidity docs for advice about optimization and evmVersion
      optimizer: {
        enabled: true,
        runs: 200,
      },
      evmVersion: "byzantium",
    },
  },
},

コントラクトをコンパイルすると、成功メッセージが表示されます。

truffle compile

Output:

> Compiled successfully using:
   - solc: 0.8.6+commit.11564f7e.Emscripten.clang

トリュフ検証プラグインをプロジェクトに追加します

yarn add -D truffle-plugin-verify

次に、プラグイン配列内のtruffle-plugin-verifyをtruffle-config.jsに追加します。

plugins: [
  'truffle-plugin-verify'
]

2つのパッケージをインストールします。1つは.envファイル用で、もう1つは秘密鍵用です。秘密鍵プロバイダーまたはニーモニックプロバイダーを使用できます。それらの両方が動作します。

yarn add -D dotenv truffle-privatekey-provider

truffle-config.jsの上部にこれらの行を追加します

require('dotenv').config()
const PrivateKeyProvider = require("truffle-privatekey-provider");

Etherscan.ioでAPIキーを作成します

etherscan.ioAPIキーを生成する必要があります。サインアップして、ここでAPIキーを生成します

次に、api-keysをtruffle-config.jsに追加します

api_keys:{ 
  etherscan:process.env.ETHERSCAN_API_KEY 
}

 InfuraでAPIキーを作成します

infura.ioでアカウントを作成し、Ethereumプロジェクトを作成します(https://infura.io/dashboard/ethereum)。最近作成したプロジェクトの設定をクリックします。

展開のためにRinkebyネットワークを追加する

スマートコントラクトを展開しようとしています。Rinkebyネットワーク構成をtruffle-config.jsに追加する必要があります

networks: {
  rinkeby: {
    provider: () => new PrivateKeyProvider(process.env.PRIVATE_KEY, process.env.RINKEBY_INFURA_URL),
    network_id: 4,       // Ropsten's id
    gas: 5500000,        // Ropsten has a lower block limit than mainnet
    confirmations: 2,    // # of confs to wait between deployments. (default: 0)
    timeoutBlocks: 200,  // # of blocks before a deployment times out  (minimum/default: 50)
    skipDryRun: true     // Skip dry run before migrations? (default: false for public nets )
  },
},

.envファイルを作成し、環境変数を追加します

タッチ.env

.envファイルには次のものが含まれている必要があります。

RINKEBY_INFURA_URL=https://rinkeby.infura.io/v3/YOUR_INFURA_PROJECT_URL
PRIVATE_KEY=YOUR_PRIVATE_KEY
ETHERSCAN_API_KEY=YOUR_ETHERSCAN_API_KEY

契約展開の移行を作成する

truffle create migration NumberStorage

移行フォルダに新しいファイルが表示されます。それらの行をnumber_storage.jsに追加します

module.exports = async function(deployer) {
  const NumberStorage = artifacts.require("NumberStorage");

  await deployer.deploy(NumberStorage);
  const contract = await NumberStorage.deployed();

  console.log("Contract address:", contract.address)
};

契約を展開する

truffle migrate --network rinkeby

コントラクトの展開には数分かかります。

展開が完了すると、次のメッセージが表示されます。

契約はまだ確認されていません。確認しましょう。

契約を確認する

truffle run verify NumberStorage --network rinkeby

確認にはしばらく時間がかかります。

リンク: https://medium.com/

#network