部署智能合约有多种方式,命令行的浏览器的渠道都有,但每每跟咱们程序员的风格不太相符,由于咱们习惯了在IDE里写了代码而后打包运行看效果。webpack
虽然如今IDE中已经存在了Solidity插件,能够编写智能合约,可是部署智能合约却要另走他路,没办法进行一个快捷的部署与测试。程序员
若是团队管理的区块节点多、合约多,那得哭晕在厕所。web
Truffle是一个世界级的智能合约开发框架,专门为智能合约而生。npm
sudo cnpm install -g truffle
truffle version
mkdir dapp cd dapp/
truffle init
你也能够不建立空项目 而是建立一个带有模板的项目 以下浏览器
truffle unbox webpack网络
官方模板列表:https://www.trufflesuite.com/boxesapp
truffle-config.js文件中networks代码段 用来配置区块链节点框架
示例中有这么一段区块链
development: { host: "127.0.0.1", // Localhost (default: none) port: 8545, // Standard Ethereum port (default: none) network_id: "*", // Any network (default: none) }
你能够根据你的实际状况修改,或者如我同样直接注释掉这段,我直接加了下面这段测试
line: { host: "47.97.26.107", network_id: 100, port: 8888, from:'0xDFeDb94Ab496d6b68795dB890AcbbBdc2557860A' },
无论是development仍是line都是随意取的Key,若是你有多个区块链节点,你也能够多配几段便可。
代码段中的from为部署合约的帐户,若是不配,则默认为以太坊客户端的第一个帐户。
truffle compile
编译后要作的事情是确保部署合约的那个地址里有ETH,由于部署是要花钱的,而且地址必须解锁, 而后才能部署。
truffle migrate --network line
(我本身配置的网络段是line,因此个人--network值是line,若是你只是 truffle migrate 不加任何参数 那么默认会部署development网络)
必需要设置挖矿地址,进行挖矿,不然交易不会广播。
truffle networks
truffle console --network line
let instance = await MetaCoin.deployed()
这里举例获取地址余额
let balance = await instance.getBalance('0x30f8c37E265FbfC8941c38f861a8d2FC994e4772') balance.toNumber()