部署合约 原文地址
运行步骤:
启动模拟环境$ testrpc
编译项目$ truffle compile
部署合约$ truffle migrate
运行前端服务器$ nop run dev
migrate是一个js文件,用来把合约部署到Ethereum网络上,在当前是部署到TestRPC的模拟环境上,也可以使用命令 $ truffle deploy 来部署合约,其效果一致
migrate文件存放在migrations目录中,
migrate文件的命名规则 数字+描述+描述,数字方便在部署合约出错是快速定位,描述增加可读性,便于理解此文件的功能作用
migrations目录中的第一个文件 1_initial_migration 用来初始化以便于后续使用migrate的功能
在contracts目录中有对应的migrations.sol文件
部署到指定的网络,这个网络live就是网络的配置名称
$ truffle migrate --network live
配置在truffle.js中,内容如下:
networks: { development: { host: "127.0.0.1", port: 8545, network_id: "*" // match any network }, live: { host: "178.25.19.88", // Random IP for example purposes (do not use) port: 80, network_id: 1, // Ethereum public network // optional config values: // gas // gasPrice // from - default address to use for any transaction Truffle makes during migrations // provider - web3 provider instance Truffle should use to talk to the Ethereum network. // - function that returns a web3 provider instance (see below.) // - if specified, host and port are ignored. } }
网络配置文件中还有其他一些选项,都可自己配置,它们都有默认值:
gas: Gas limit used for deploys. Default is 4712388.一次操作的花费的最大gas限制 gasPrice: Gas price used for deploys. Default is 100000000000 (100 Shannon).gas的价格 from: From address used during migrations. Defaults to the first available account provided by your Ethereum client.发出操作的账户,默认是Ethereum地址address列表的第一个 provider: Default web3 provider using host and port options: new Web3.providers.HttpProvider("http://:”)提供者,默认使用web3提供的host和port针对每个网络,你可以指定host/port 或provider,但不能两个都指定
例如:
networks: { ropsten: { provider: function() { return new HDWalletProvider(mnemonic, "https://ropsten.infura.io/"); }, network_id: '3', }, test: { provider: function() { return new HDWalletProvider(mnemonic, "http://127.0.0.1:8545/"); }, network_id: '*', }, }
在上面可以看到,provider提供了一个地址,其效果跟指定host/port一样,所以不可能两个都是指定的,如果这三个参数 host,port,provider都有值,那么truffle会使用自己默认的地址运行,就是这么任性!
作者:大都废