https://github.com/peakcrosser7/Contracts-Compile-And-Deploy
使用命令
sudo npm -g install npm@next
sudo npm install -g n
n stable
使用命令:
sudo npm install -g truffle
mkdir trufflePro # trufflePro工程目录名
cd trufflePro
truffle
truffle init
sudo vi /etc/hosts
0.0.0.0:443 github.com
199.232.68.133 raw.githubusercontent.com
参考: 在ubuntu执行truffle init出现错误contract/
- Truffle默认的合约文件存放地址migrations/
- 存放发布脚本文件test/
- 用来测试应用和合约的测试文件truffle-config.js
- Truffle的配置文件版本信息位于文件./truffle-config.js
中, 如图:
默认全部注释, 表示默认配置, 关闭version
注释, 即可设置具体编译器版本.
合约应位于./contracts
目录, 编译合约使用命令:
truffle compile
编译成功后即可在./build/contracts/
目录下找到合约编译后对应json文件, 文件中具有合约的abi、字节码等信息.
部署合约文件位于目录./migrations
, 创建配置文件, 以数字开头, 如2_xxx.js
, 文件内容为:
var Test = artifacts.require("contract.sol");
//"contract.sol"替换成具体的合约文件名
module.exports = function(deployer) {
deployer.deploy(Test);
};
修改./truffle-config.js
文件networks
部分, 如图:
其中, development
为以太网(私有链)网络名, 可自定义; host
和port
的值一般按此默认值, network_id
可固定值也可以使用通配符*
, gas
值为交易时默认gas值.
geth --rpc --rpcport "8545" --rpccorsdomain "*" --datadir node0 --port "30303" --networkid 506 console --unlock 0 --password "./pwd.txt"
其中: rpcport
、·networkid
值要与上述truffle-config.js
文件中一致; datadir
的值根据自身私有链设置; console
表明控制台交互模式; unlock
值对应解锁的账户序号, 需要设为默认账户即0
; password
值问账户密码所在文件的路径.
2. 私有链启动挖矿, 使用命令: miner.start()
在Truffle项目根目录启动另一终端, 使用命令部署合约:
truffle migrate --network development
#参数network后跟网络名, 须与truffle-config.js中一致, 可省
--rpc
./migrations
目录下配置文件中部署的合约文件名"xxx.sol"正确.personal.unlockAccount(account, passwd)
命令进行账户解锁. (经测试, 最好解锁默认0号账户)./truffle-config.js
文件中gas
的值要足够大.gensis.json
文件(名字类似, 为生成私有链的配置文件)中查到, 如图:./truffle-config.js
文件中gas
的值不超过该gaslimit
的值; 同时也可以设置genesis.json
中的gasLimit
的值更大一些(目前已知可行的修改方法是在初始化私有链的创世块前对该文件的gasLimit
值进行修改, 私有链部署相关操作详见#03.3.2)../truffle-config.js
文件中gas
的值要足够大.gensis.json
文件中gasLimit
值大小超过53bits, 上图的0x800000000
暂无此问题.truffle-config.js
以外的文件夹和文件contrCompDeploy.py
中的路径等参数contrCompDeploy.py