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会使用正式网络上部署的合约,如果是在测试网络上,则对应的使用测试网络的资源。

如果任何问题,欢迎留言批评指正。

处于某些特定的环境下,可以看到评论框,欢迎留言交流^_^。