1633552140
スマートコントラクトの検証は、分散型プロジェクトにとって重要です。自動契約検証を使用して、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.ioAPIキーを生成する必要があります。サインアップして、ここでAPIキーを生成します
次に、api-keysをtruffle-config.jsに追加します
api_keys:{
etherscan:process.env.ETHERSCAN_API_KEY
}
infura.ioでアカウントを作成し、Ethereumプロジェクトを作成します(https://infura.io/dashboard/ethereum)。最近作成したプロジェクトの設定をクリックします。
スマートコントラクトを展開しようとしています。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ファイルには次のものが含まれている必要があります。
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/
1633552140
スマートコントラクトの検証は、分散型プロジェクトにとって重要です。自動契約検証を使用して、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.ioAPIキーを生成する必要があります。サインアップして、ここでAPIキーを生成します
次に、api-keysをtruffle-config.jsに追加します
api_keys:{
etherscan:process.env.ETHERSCAN_API_KEY
}
infura.ioでアカウントを作成し、Ethereumプロジェクトを作成します(https://infura.io/dashboard/ethereum)。最近作成したプロジェクトの設定をクリックします。
スマートコントラクトを展開しようとしています。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ファイルには次のものが含まれている必要があります。
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/