2. 网络与APP部署
背景
即使最小的项目也至少会与两个以上的区块链打交道,一个是开发机上的测试链,如EthereumJS TestRPC.另一个则是比如你最终要部署的网络,如以太坊网络,自己公司内的私链等等。Truffle提供了一个管理不同网络下的构建和部署资源的系统,来简化最终的部署流程。
配置
详见1. 配置文件章节了解更多。
指定一个网络
大多数Truffle提供的命令根据指定的网络不同而表现不同,会使用对应网络下的合约和配置信息。可以通过--network
选项在参数上进行控制。
$ truffle migrate --network live
networks: {
development: {
host: "localhost",
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
}
}
在上面这个例子中,Truffle会在live
网络中进行移植。如果配置如上述配置示例的Example的章节所指定的内容的话,是最终在以太坊网络上进行部署。
构建资源
正如4. 编译合约章节中所提到的那样,构建后的资源存储在./build/contracts
目录下,以.sol.js
这样的文件存在。当你编译合约文件,或者在某个网络上运行移植时,Truffle将会更新这些.sol.js
的文件,文来包含相关网络的信息。当这些资源在后续中被使用了,比如在前端应用中。它会自动检测当前使用的网络,根据网络自动使用对应的合约资源。
应用部署
因为网络是在运行时自动检测的,这意味着你只需要部署你的应用或前端一次。当你的程序运行时,会动态检测当前使用的网络,以调用合适的资源,这让你的程序非常的灵活。
举例来说,如果你将程序发布到http://mydapp.io/
,使用钱包浏览器时,你的程序能很好的运行。如果你的钱包浏览器运行在正式网络上,你的dapp会使用正式网络上部署的合约,如果是在测试网络上,则对应的使用测试网络的资源。
如果任何问题,欢迎留言批评指正。
处于某些特定的环境下,可以看到评论框,欢迎留言交流^_^。