赞
踩
本篇介绍如何将Truffle项目连接到公共区块链网络。
到目前为止,我们连接的都是在本地区块链(Ganache),接下来将连接以太坊公链。
以太坊公链除了主网,还有多个测试网络。主网(Mainnet)是正式的以太坊网络,里面的以太币是真正有价值的,测试网络中的以太币没有价值,只用于测试。
我们最终目标是连接到主网,但先连接到测试网络Kovan,虽然本地区块链网络(Ganache)也能测试,但与公链还是有区别的。
连接到公链的步骤如下:
首先需要设置一个钱包,来管理我们的公链帐户。
简单起见,可以借用Ganache本地区块链钱包,由于区块链的工作原理,这个钱包在公共区块链和本地区块链上都是有效的。
打开Ganache,主界面上可以看到一个名为“MNEMONIC”的部分:
这是一个种子短语,用于构建由Ganache管理的钱包。我们可以使用这个种子短语加密重建钱包,来连接到公链。
复制这个值,保存到一个秘密文件,MNEMONIC是一个秘密值,需要保密。在项目根目录中创建一个.env
文件,保存MNEMONIC值,如下所示:
MNEMONIC="你的mnemonic"
现在已经创建了钱包,下一步需要访问Ethereum节点,以便连接到公共区块链网络。
有几种方法可以做到这一点,可以使用Geth或Parity运行自己的Ethereum节点。但这需要从区块链下载大量数据并保持同步,很麻烦。
比较方便的方法是,使用Infura访问Ethereum节点。Infura是一个免费提供Ethereum节点的服务。
在Infura上注册账号,创建项目,在项目详情页上可以查看API KEY:
使用API KEY,就可以访问以太坊网络节点。
在.env
文件中添加Infura api key的配置:
INFURA_API_KEY="https://kovan.infura.io/v3/543526cd4d3846acbc3826484e934564"
MNEMONIC="你的mnemonic"
接下来使用MNEMONIC
与INFURA_API_KEY
,更新项目的网络配置,以便连接到公共区块链网络。
修改truffle-config.js
文件:
// 导入dotenv库创用于读取`.env`文件中的设置 require('dotenv').config(); // 导入truffle-hdwallet-provider库重建钱包 const HDWalletProvider = require('truffle-hdwallet-provider'); module.exports = { networks: { development: { host: "127.0.0.1", // Localhost (default: none) port: 7545, // Standard Ethereum port (default: none) network_id: "*", // Any network (default: none) }, // Useful for deploying to a public network. // NB: It's important to wrap the provider as a function. kovan: { provider: () => new HDWalletProvider( process.env.MNEMONIC, process.env.INFURA_API_KEY ), gas: 5000000, gasPrice: 25000000000, network_id: 42 }, }, solc: { optimizer: { enabled: true, runs: 200 } } }
可以看到,我们使用了.env
配置文件中的MNEMONIC
与INFURA_API_KEY
配置了kovan网络。
由于用到了dotenv与truffle-hdwallet-provider这2个库,我们需要先安装:
切换到项目目录,执行以下命令
npm install dotenv --save-dev
npm install truffle-hdwallet-provider --save-dev
注意 安装truffle-hdwallet-provider时,如果出现node-gyp相关的错误,可参考这里解决。
使用truffle console
连接到公共区块链网络:
$ truffle console --network kovan
要验证连接,可以从区块链中读取一些数据,获取一些关于最新区块的信息,在控制台上执行:
web3.eth.getBlock('latest').then(console.log)
输出:
{ author: '0x03801efb0efe2a25ede5dd3a003ae880c0292e4d', difficulty: '340282366920938463463374607431768211454', extraData: '0xde830206028f5061726974792d457468657265756d86312e33362e30826c69', gasLimit: '0x7a1200', gasUsed: '0x17d23', hash: '0xc7390c4f492c8c1da60608135fc9e05930123b645b39f221cba33d8b3c577b2a', logsBloom: '0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000080000000000000000000100000008000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400800000000000010000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009000000008000000', receiptsRoot: '0x3d05bb2ed4fcc90234eea6d840e7d0e3ce7f598a15e5314536b17bcd11c78b5b', sealFields: [ '0x84175e8801', '0xb84155a8cdb108dccec1d314124058fa6f22e7400ee200db0a94b7b165e4c3454c1818cc05f815cb7ce48f7a88b8401515740311a3566d9cf079428d506a6daca50101' ], sha3Uncles: '0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347', signature: '55a8cdb108dccec1d314124058fa6f22e7400ee200db0a94b7b165e4c3454c1818cc05f815cb7ce48f7a88b8401515740311a3566d9cf079428d506a6daca50101', size: 877, stateRoot: '0x03af5adce52a81ce5d332cddb9955e344214bff00859b78868116e1e839efdf7', step: '392071169', timestamp: 1568284676, totalDifficulty: '4524524338444961608702071789512829094373049115', transactions: [ '0xded7fed0842fd65ec808bc3652ec4175bc190acc11345c49c44b1fb5d954610f', '0x7e9112a46fa3c07aad813ea86355b15eebb44023c040d198ee7d15d379bbc2be' ], transactionsRoot: '0x0dd10d90686dda2684bd0ba70d1c9e1d9a5302c30ca75eb2c5b07a7b6e4498b9', uncles: [] }
可以看到,已经成功连接到了公链。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。