Truffle是以太坊(Ethereum)智能合约开发的瑞士军刀,小巧好用,上手简单。
本篇文章主要展示如何用Truffle 开发第一个Ethereum智能合约。
1.准备工作:(本人针对window环境,如果是mac 或linux可以自行搜索其他教程)
a.安装git bash :http://gitforwindows.org/
b.安装npm:https://jingyan.baidu.com/article/a17d528506d7f58098c8f2b0.html
2.安装Truffle。
按照Truffle的官网指示:http://truffleframework.com/docs/getting_started/installation
在git bash命令行输入如下 命令:
npm install -g truffle
3.开发智能合约
安装完好,运行:
mkdir simple-storage cd simple-storage
然后运行:
truffle init
这个命令会建立 两个目录:contracts/
和migrations/
其中contracts/
是智能合约所在的目录,而
migrations/是把合约部暑到以太坊的
相关命令。
打开 目录:contracts/
,创建一个新文件:Store.sol,文件内容如下 :
pragma solidity ^0.4.17; contract SimpleStorage { uint myVariable; function set(uint x) public { myVariable = x; } function get() constant public returns (uint) { return myVariable; } }
打开目录:migrations/
,创建一个文件2_deploy_contracts.js,内容如下 :
var SimpleStorage = artifacts.require("SimpleStorage"); module.exports = function(deployer) { deployer.deploy(SimpleStorage); };
保存好。
回到命令行,运行命令:truffle compile
打开另一个git bash 窗口进入相同目录,运行:
truffle develop
然后运行:
migrate
窗口会出现如下信息:
Running migration: 1_initial_migration.js
Replacing Migrations...
... 0xe4f911d95904c808a81f28de1e70a377968608348b627a66efa60077a900fb4c
Migrations: 0x3ed10fd31b3fbb2c262e6ab074dd3c684b8aa06b
Saving successful migration to network...
... 0x429a40ee574664a48753a33ea0c103fc78c5ca7750961d567d518ff7a31eefda
Saving artifacts...
Running migration: 2_deploy_contracts.js
Replacing SimpleStorage...
... 0x6783341ba67d5c0415daa647513771f14cb8a3103cc5c15dab61e86a7ab0cfd2
SimpleStorage: 0x377bbcae5327695b32a1784e0e13bedc8e078c9c
Saving successful migration to network...
... 0x6e25158c01a403d33079db641cb4d46b6245fd2e9196093d9e5984e45d64a866
Saving artifacts...
继续在truffle develop
窗口运行如下 代码:SimpleStorage.deployed().then(function(instance){return instance.get.call();}).then(function(value){return value.toNumber()});
这条命令结果如下
0
继续在truffle develop
窗口运行如下代码:
SimpleStorage.deployed().then(function(instance){return instance.set(4);});
这是会出现如下信息:
{ tx: ‘0x7f799ad56584199db36bd617b77cc1d825ff18714e80da9d2d5a0a9fff5b4d42‘, receipt: { transactionHash: ‘0x7f799ad56584199db36bd617b77cc1d825ff18714e80da9d2d5a0a9fff5b4d42‘, transactionIndex: 0, blockHash: ‘0x60adbf0523622dc1be52c627f37644ce0a343c8e7c8955b34c5a592da7d7c651‘, blockNumber: 5, gasUsed: 41577, cumulativeGasUsed: 41577, contractAddress: null, logs: [] }, logs: [] }
这里的tx是交易的ID,可能你窗口显示的ID会不一样。
这里说明,你的交易成功,帐本已经成功设置为4.
好,现在我们来验证下,运行如下 命令:
SimpleStorage.deployed().then(function(instance){return instance.get.call();}).then(function(value){return value.toNumber()});
结果返回为:
4
成功了!
你已经学会开发智能合约!
恭喜你!!!!!