node.jsをインストール
OSに合ったnode.jsをインスト―ルする。
node.jsインストーラーはこちらです。
Node.js はネットワークアプリケーションを構築するために設計された非同期型のイベント駆動の サーバーサイドのJavaScript 環境です。
作業用に適当なディレクトリを作成し移動する
mkdir trdapps
cd trdapps
Truffleインストール
npm install -g truffleコマンド実施。
truffle versionでバージョン確認。
Truffle v5.1.44 (core: 5.1.44)
Solidity v0.5.16 (solc-js)
Node v12.18.3
Web3.js v1.2.1
Ganacheインストール
Ganacheは、チェーンの動作を制御し、テストの実行、コマンドの実行、状態の検査に使用できる個人用のEthereumブロックチェーン環境です。
Ganacheサイトよりダウンロードしてください。
作成したディレクトリでtruffleプロジェクトを作成する。
truffle init
ディレクトリ構成は下記の通り3つのディレクトリと1個のファイルが作成される。。
C:.
├─contracts
├─migrations
└─test
2020/09/15 09:39 DIR contracts
2020/09/15 09:39 DIR migrations
2020/09/15 09:39 DI test
1985/10/26 17:15 4,205 truffle-config.js
truffle-config.jsをganache用に修正
作成されたtruffle-config.jsファイルをGanache接続用に修正する。
module.exports = { networks: { development: { host: "127.0.0.1", // Localhost (default: none) port: 7545, // Standard Ethereum port (default: none) network_id: "*", // Any network (default: none) } } }
truffleとganacheを連携する
上記のtruffle-config.jsとganacheを連携したプロジェクトを作成する。
100ETHをもったアカウントが自動的に10個生成されます。
スマートコントラクトの作成
contractsディレクトリに、HellowWorld.sol作成。
pragma solidity ^0.5.16;
contract HelloWorld {
string defaultMessage;
constructor() public {
defaultMessage = 'Hello World';
}
function getMessage() public view returns(string memory){
return defaultMessage;
}
}
truffle compileの実施
trdapps>truffle compile
Compiling your contracts...
===========================
> Compiling .\contracts\HelloWorld.sol
> Compiling .\contracts\Migrations.sol
> Artifacts written to C:\Users\■■■\Desktop\trdapps\build\contracts
> Compiled successfully using:
- solc: 0.5.16+commit.9c3226ce.Emscripten.clang
マイグレーションファイルの作成
コントラクトをネットワークにデプロイするためのマイグレーションファイルを作成。
truffle create migration HelloWorld
1600132863_hello_world.jsが新たに作成される。
最初の数字は、その時点でのデプロイ状況による。
2020/09/15 10:21 86 1600132863_hello_world.js
1985/10/26 17:15 126 1_initial_migration.js
デプロイの実施
C:\Users\■■■\Desktop\trdapps>truffle migrate Compiling your contracts... =========================== > Everything is up to date, there is nothing to compile. Starting migrations... ====================== > Network name: 'ganache' > Network id: 5777 > Block gas limit: 6721975 (0x6691b7) 1_initial_migration.js ====================== Deploying 'Migrations' ---------------------- > transaction hash: 0xeddd47d033f43f9e9cf3a139901df2bff5110e7dfb81f164b9aea24cc53c7f1e > Blocks: 0 Seconds: 0 > contract address: 0x321FF038A8F5866Fda67643cefC9D0794a500010 > block number: 1 > block timestamp: 1600133209 > account: 0xd3676A23A50cC5A4e19A463861c1d35Db5e78914 > balance: 99.99616114 > gas used: 191943 (0x2edc7) > gas price: 20 gwei > value sent: 0 ETH > total cost: 0.00383886 ETH > Saving migration to chain. > Saving artifacts ------------------------------------- > Total cost: 0.00383886 ETH 1600132863_hello_world.js ========================= Deploying 'HelloWorld' ---------------------- > transaction hash: 0x56c9ff39299f1b63e89d50ef81f95b99ba893f230ff020d3fb9e72945e3b1292 > Blocks: 0 Seconds: 0 > contract address: 0xaD1E7481Ec626016E7E86a5f1174746dFF9E0BA7 > block number: 3 > block timestamp: 1600133209 > account: 0xd3676A23A50cC5A4e19A463861c1d35Db5e78914 > balance: 99.992052 > gas used: 163119 (0x27d2f) > gas price: 20 gwei > value sent: 0 ETH > total cost: 0.00326238 ETH > Saving migration to chain. > Saving artifacts ------------------------------------- > Total cost: 0.00326238 ETH Summary ======= > Total deployments: 2 > Final cost: 0.00710124 ETH