以太坊之使用truflle和infura部署以太坊合约|猿创征文

Posted ╰つ栺尖篴夢ゞ

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了以太坊之使用truflle和infura部署以太坊合约|猿创征文相关的知识,希望对你有一定的参考价值。

一、前言

  • Infura 是一个托管的以太坊节点集群,可以将你开发的以太坊智能合约部署到 infura 提供的节点上,而无需搭建自己的以太坊节点。
  • 出于安全原因,Infura 不管理你的私钥,这意味着 Infura 不能代表你签署交易。但是,Infura 可以通过使用
    HDWalletProvider 来签署交易。该服务可以处理事务签名以及与以太坊网络的连接。

二、安装 HDWalletProvider

  • Infura 的 HDWalletProvider 是一个独立的 npm 软件包, 如下安装:
npm install truffle-hdwallet-provider
  • 如果在 Windows 上安装并且遇到 MSBUILD 错误,则可能需要安装 Windows 构建工具。在具有管理员权限的控制台中, 运行 npm install -g windows-build-tools 然后再次尝试安装。

三、注册 Infura

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

四、配置 Truffle 项目

  • 接下来是编辑你的 truffle.js 文件来启用 HDWalletProvider,并为部署到 Ropsten 进行必要的配置。
  • 首先,在配置文件中定义 HDWalletProvider 对象,在 truffle.js 文件 的顶部添加以下代码:
var HDWalletProvider = require("truffle-hdwallet-provider");
  • 接下来,提供助记词(mnemonic)来生成你的账户:
varmnemonic = "orange apple banana ...";
  • 在此过程中,建议将助记符存储在另一个(秘密)文件中,以降低助记符泄漏风险。如果有人知道助记符,他们将拥有你所有的地址和私钥。
  • 添加 Ropsten 网络定义:
module.exports = 
	networks: 
		ropsten: 
			provider: function() 
				return new HDWalletProvider(mnemonic,"https://ropsten.infura.io/<INFURA_Access_Token>")
				,
			network_id: 3
		
	
;
  • 注意事项:
    • 虽然该示例仅定义了单个网络,但你可以像往常一样定义多个网络。
    • ropsten 网络定义中的 provider 将使用实例化的 HDWalletProvider。
    • HDWalletProvider 以助记符和期望的网络为参数,Infura 主页上提供 Infura 支持的网络列表。
    • 确保使用前面拿到的 Infura 访问令牌替换。
  • provider 值被封装在一个函数中,这可以确保它在需要之前不会被初始化。如果连接到多个网络,这一点尤为重要。
  • 默认情况下,由助记符产生的第一个账户将负责执行合约迁移任务。但如果需要的话,你可以传入参数以指定使用的帐户。例如,要使用第三个帐户:
new HDWalletProvider(mnemonic, "https://ropsten.infura.io/<Infura_Access_Token>", 2);
  • 账户索引是从零开始的,所以 2 表示第三个地址。

五、使用 Faucet 获取 ether

  • 确保你的帐户有足够的账户余额来进行部署,可以通过称 Faucet 的服务在 Ropsten 网络上获取 Ether。
  • 虽然在那里有多个 Faucet 网站,推荐的一个服务是在 EthTools 上托管的:
    • 导航至 EthTools 的 Ether Faucet;
    • 输入你的助记符, 并选择你想要多少 ether(最多 5 个);
    • Faucet 将链接到你的第一个帐户,点击“Request Ether” 提交请求。
    • 很快,你的账户将获得请求的 ether。

六、部署合约

  • 编译项目:
truffle compile
  • 部署到 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)。
  • 如果想验证合约是否已成功部署,可以在 Etherscan 的 Ropsten 部分进行检查。在搜索字段中,输入部署交易 ID。在上面的例子中,交易 ID 是:
0x7efbb3e4f028aa8834d0078293e0db7ff8aff88e72f33960fc806a618a6ce4d3
  • 你应该可以看到有关交易的详细信息,包括交易受到保护的区块号。
  • 恭喜,你已经使用 Infura 和 truffle 的组合将合约部署到 Ropsten 上了。

以上是关于以太坊之使用truflle和infura部署以太坊合约|猿创征文的主要内容,如果未能解决你的问题,请参考以下文章

以太坊之ganache命令行参数的详解

源代码:以太坊PHP离线交易开发包

以太坊之OpenZeppelin集成Truffle编写完善安全的合约

以太坊之Windows DApp开发环境的搭建

以太坊之Windows DApp私链环境的搭建

以太坊之Ubuntu平台DApp开发环境的搭建