部署智能合约到公链

博主简介:
云计算领域优质创作者
2022年CSDN新星计划赛道第一名
2022年CSDN原力计划优质作者
阿里云ACE认证高级工程师
阿里云开发者社区专家博主
交流社区:CSDN云计算交流社区欢迎您的加入!
目录
1.连接公链
1.1设置钱包
1.2 连接以太坊节点
1.3 更新项目设置
1.4 访问以太坊节点
2.部署智能合约到公链
2.1获取测试以太币
2.2 部署智能合约
2.3验证部署
3.脚本
1.连接公链
以太坊公链除了主网,还有多个测试网络 。主网()是正式的以太坊网络,里面的以太币是真正有价值的,测试网络中的以太币没有价值,只用于测试 。
我们最终目标是连接到主网,但先连接到测试网络Kovan,虽然本地区块链网络()也能测试,但与公链还是有区别的 。
连接到公链的步骤如下:
设置钱包来管理公链帐户连接到以太坊节点更新项目设置访问以太坊节点 1.1设置钱包
首先需要设置一个钱包,来管理我们的公链帐户 。
简单起见,可以借用本地区块链钱包,由于区块链的工作原理,这个钱包在公共区块链和本地区块链上都是有效的 。
打开,主界面上可以看到一个名为“”的部分:
这是一个种子短语,用于构建由管理的钱包 。我们可以使用这个种子短语加密重建钱包,来连接到公链 。
复制这个值,保存到一个秘密文件,是一个秘密值,需要保密 。在项目根目录中创建一个.env文件,保存值,如下所示:
MNEMONIC="你的mnemonic"
1.2 连接以太坊节点
现在已经创建了钱包,下一步需要访问节点,以便连接到公共区块链网络 。
有几种方法可以做到这一点,可以使用Geth或运行自己的节点 。但这需要从区块链下载大量数据并保持同步,很麻烦 。
比较方便的方法是,使用访问节点 。是一个免费提供节点的服务 。
在上注册账号,创建项目,在项目详情页上可以查看API KEY:
使用API KEY,就可以访问以太坊网络节点 。
在.env文件中添加 api key的配置:
INFURA_API_KEY="https://kovan.infura.io/v3/543526cd4d3846acbc3826484e934564"MNEMONIC="你的mnemonic"
1.3 更新项目设置
接下来使用与,更新项目的网络配置,以便连接到公共区块链网络 。
修改-.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配置文件中的与配置了kovan网络 。
由于用到了与--这2个库,我们需要先安装:
切换到项目目录,执行以下命令
npm install dotenv --save-dev
npm install truffle-hdwallet-provider --save-dev
注意安装--时,如果出现node-gyp相关的错误,可参考这里解决 。
1.4 访问以太坊节点
使用 连接到公共区块链网络: