infura上部署以太坊智能合约
发布日期:2021-09-04 18:45:19 浏览次数:2 分类:技术文章

本文共 3246 字,大约阅读时间需要 10 分钟。

Infura是一个托管的以太坊节点集群,可以将你开发的以太坊智能合约发布到infura提供的节点上,而无需搭建自己的以太坊节点。

可能你还不了解Infura,但如果你使用过MetaMask,那么就已经接触过Infura了,因为它是MetaMask背后的以太坊供应商。

出于安全原因,Infura不管理你的私钥,这意味着Infura不能代表你签署交易。

但是,Infura可以通过使用HDWalletProvider来签署交易。 该服务可以处理事务签名以及与以太坊网络的连接。 点击了解更多关于HDWalletProvider的信息 。

本教程将向你展示如何使用Infura将现有的dapp迁移到Infura支持的以太坊网络。 在这个特定的例子中,我们将迁移到Ropsten测试网络。 我们假设你已经有了一个dapp, 如果需要一个测试dapp,可以使用Truffle提供的dapp。

安装HDWalletProvider

Infura的HDWalletProvider是一个独立的npm软件包,如下安装:

npm install truffle-hdwallet-provider

注意 :如果你在Windows上安装并且遇到MSBUILD错误,则可能需要安装Windows构建工具。 在具有管理员权限的控制台中,运行npm install -g windows-build-tools然后再次尝试安装。

注册Infura

在使用Infura之前,需要 。

填写并提交表格后你就可以收到访问令牌。 相关信息将显示在屏幕上并发送到你提供的电子邮件。 需要记录下来这个访问令牌并确保它不被别人看到!

配置Truffle项目

下一步是编辑你的truffle.js文件来启用HDWalletProvider并为部署到Ropsten进行必要的配置。

STEP 1:首先,在配置文件中定义HDWalletProvider对象。 在truffle.js文件的顶部添加以下代码:

var HDWalletProvider = require("truffle-hdwallet-provider");

STEP 2:接下来,提供助记词(mnemonic)来生成你的账户。

var mnemonic = "orange apple banana ... ";

警告 :在此过程中,我们强烈建议将助记符存储在另一个(秘密)文件中,以降低助记符泄漏风险。 如果有人知道你的助记符,他们将拥有你所有的地址和私钥!

STEP 3:添加Ropsten网络定义:

module.exports = {   networks: {     ropsten: {       provider: function() {
return new HDWalletProvider(mnemonic, "https://ropsten.infura.io/
") }, network_id: 3 } } };

注意事项:

  • 虽然该示例仅定义了单个网络,但你可以像往常一样定义多个网络。
  • ropsten网络定义中的provider将使用实例化的HDWalletProvider 。
  • HDWalletProvider以助记符和期望的网络为参数。 上提供Infura支持的 网络列表。
  • 确保使用前面拿到的Infura访问令牌替换 。
  • provider值被封装在一个函数中,这可以确保它在需要之前不会被初始化。 如果连接到多个网络,这一点尤为重要。 关于该主题的更多信息,请参阅Truffle文档的部分。
  • 默认情况下,由助记符产生的第一个账户将负责执行合约迁移任务。 但如果需要的话,你可以传入参数以指定要使用的帐户。 例如,要使用第三个帐户:
new HDWalletProvider(mnemonic,     "https://ropsten.infura.io/
", 2);

账户索引是从零开始的,所以2表示第三个地址。

使用Faucet获取ether

确保你的帐户有足够的账户余额来进行部署。 可以通过称Faucet的服务在Ropsten网络上获取Ether。 虽然在那里有多个Faucet网站,我们推荐的一个服务是在上托管的 。

  • 导航至EthTools的 。
  • 输入你的助记符,并选择你想要多少ether(最多5个)。
  • Faucet将链接到你的第一个帐户。 点击“Request Ether”提交请求。
  • 很快,你的账户将获得请求的ether。

注意 :也可以通过MetaMask申请ether。 在Ropsten上连接你的帐户,然后点击“Buy”按钮,该按钮将提供MetaMask的Ropsten测试Faucet的链接,它的工作方式与上述类似。

我们现在可以开始将合约部署到Ropsten上了!

部署合约

STEP 1: 编译项目:

truffle compile

STEP 2:部署到Ropsten网络:

truffle migrate --network ropsten

如果一切顺利,应该可以看到类似于以下内容的输出:

Using network 'ropsten'. Running migration: 1_initial_migration.js   Deploying Migrations...   ... 0xd79bc3c5a7d338a7f85db9f86febbee738ebdec9494f49bda8f9f4c90b649db7  Migrations: 0x0c6c4fc8831755595eda4b5724a61ff989e2f8b9 Saving successful migration to network...   ... 0xc37320561d0004dc149ea42d839375c3fc53752bae5776e4e7543ad16c1b06f0 Saving artifacts... Running migration: 2_deploy_contracts.js   Deploying MyContract...   ... 0x7efbb3e4f028aa8834d0078293e0db7ff8aff88e72f33960fc806a618a6ce4d3   MyContract: 0xda05d7bfa5b6af7feab7bd156e812b4e564ef2b1 Saving successful migration to network...   ... 0x6257dd237eb8b120c8038b066e257baee03b9c447c3ba43f843d1856de1fe132 Saving artifacts...

需要提醒的是,你的交易ID将与上面的不同。

注意 :如果收到错误Error: Exceeds block gas limit ,你可能需要为合约手动设置油量上限(gas limit)。 有关详细信息,请参阅。

STEP 3:如果想验证合约是否已成功部署,可以在Etherscan的Ropsten部分进行检查。 在搜索字段中,输入部署交易ID。 在上面的例子中,交易ID是:

0x7efbb3e4f028aa8834d0078293e0db7ff8aff88e72f33960fc806a618a6ce4d3

你应该可以看到有关交易的详细信息,包括交易受到保护的区块号。

恭喜! 你已经使用Infura和truffle的组合将合约部署到Ropsten上了!

如果你希望高效的学习以太坊DApp开发,可以访问汇智网提供的最热门在线互动教程:

其他更多内容也可以访问。

转载地址:https://blog.csdn.net/weixin_34221112/article/details/89691831 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:想在科研界混,你先要学会如何在学术会议上问出好问题
下一篇:浏览器前端优化

发表评论

最新留言

初次前来,多多关照!
[***.217.46.12]2024年04月04日 19时02分03秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

Java Web基础入门第八十七讲 在线网上书店(二)——设计实体及其相对应的数据库表 2019-04-27
Java Web基础入门第八十八讲 在线网上书店(三)——编写dao层 2019-04-27
Java Web基础入门第八十九讲 在线网上书店(四)——编写service层 2019-04-27
Java Web基础入门第九十讲 在线网上书店(五)——实现分类管理模块 2019-04-27
Java Web基础入门第九十一讲 在线网上书店(六)——实现图书管理模块 2019-04-27
Java Web基础入门第九十二讲 在线网上书店(七)——实现订单管理模块 2019-04-27
Java Web基础入门第九十三讲 在线网上书店(八)——实现数据库管理模块 2019-04-27
Java基础加强第五讲 泛型(下)——泛型类及其应用 2019-04-27
Java Web基础入门第九十九讲 JavaMail开发——在WEB应用中集成邮件发送程序 2019-04-27
入门Struts1第六讲——使用Struts1框架改造在线网上书店 2019-04-27
Java Web基础的查漏补缺——事务的安全隐患 2021-06-30
Java Web基础的查漏补缺——编写一个自己的数据库连接池 2021-06-30
Ajax进阶篇(一)——异步校验用户名 2021-06-30
Ajax进阶篇(二)——走进jQuery的世界 2021-06-30
Ajax进阶篇(三)——使用jQuery实现异步校验用户名与仿百度搜索提示 2021-06-30
Ajax进阶篇(四)——使用jQuery实现省市联动 2021-06-30
Linux入门第一讲——Win10下安装VMware Workstation Pro 12虚拟软件 2021-06-30
Linux入门第二讲——使用镜像服务站下载CentOS安装包 2021-06-30
Linux入门第三讲——VMware Workstation 12 Pro安装CentOS-7.6 2021-06-30
Linux入门第七讲——Linux的常用命令:文件管理——文件浏览相关命令(cat、more、less、tail) 2021-06-30