infura上部署以太坊智能合约

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

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之前,需要注册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/<INFURA_Access_Token>") 
        }, 
      network_id: 3 
    }
  } 
};

注意事项:

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

注意 :也可以通过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)。 有关详细信息,请参阅Truffle配置文档

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

0x7efbb3e4f028aa8834d0078293e0db7ff8aff88e72f33960fc806a618a6ce4d3

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

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

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

其他更多内容也可以访问这个以太坊博客

相关文章
|
9月前
|
存储 分布式计算 区块链
什么是以太坊Layer2?
![在这里插入图片描述](https://img-blog.csdnimg.cn/1180429dd65840c68ee5cd1b7e195ba8.png#pic_center) @[TOC](目录) 以太坊(Ethereum)是一种基于区块链技术的分布式计算平台,提供了智能合约的支持,使得开发者可以构建基于以太坊的去中心化应用(DApps)。然而,由于以太坊网络的规模和性能限制,许多开发者和用户对以太坊网络的扩容问题提出了担忧。为了解决这个问题,以太坊社区提出了许多扩容方案,其中以太坊Layer2(也称为以太坊二层扩容)是其中之一。 以太坊Layer2是一种通过在以太坊主网络之上构建的另一
|
JSON JavaScript 前端开发
以太坊 – 部署智能合约到Ganache
将编译好的智能合约部署到本地的Ganache区块链网络。步骤如下:更新项目的配置文件,修改网络配置连接到本地区块链网络(Ganache)。创建迁移脚本,告诉Truffle如何部署智能合约。运行新创建的迁移脚本,部署智能合约。...
1561 0
以太坊 – 部署智能合约到Ganache
|
区块链
DAPPQ去中心化智能合约开发正式版丨DAPP去中心化智能合约系统开发(开发方案)丨DAPP智能合约去中心化系统源码
Artificial intelligence technology is one of the core technologies in the era of intelligent industry.Artificial intelligence technology includes machine learning,deep learning,natural language processing,computer vision,and so on.The application of these technologies enables machines to learn,under
|
API 区块链 数据安全/隐私保护
部署智能合约到公链
以太坊公链除了主网,还有多个测试网络。主网(Mainnet)是正式的以太坊网络,里面的以太币是真正有价值的,测试网络中的以太币没有价值,只用于测试。我们最终目标是连接到主网,但先连接到测试网络Kovan,虽然本地区块链网络(Ganache)也能测试,但与公链还是有区别的。...
367 0
部署智能合约到公链
|
Web App开发 开发框架 安全
以太坊–智能合约开发介绍及环境搭建
智能合约(Smart contract )是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。智能合约概念于1995年由Nick Szabo首次提出。 智能合约的目的是提供优于传统合约的安全方法,并减少与合约相关的其他交易成本。...
832 0
以太坊–智能合约开发介绍及环境搭建
|
存储 安全 程序员
DAPP智能合约系统开发区块链智能合约系统模式开发
DApp智能合约系统开发,区块链智能合约app开发,DApp智能合约软件开发、现成DApp智能合约模式系统、DApp智能合约开发搭建、区块链智能合约系统定制开发、DApp智能合约开发需求及费用。 区块链智能合约(Smartcontract)是一种特殊协议,旨在提供、验证及执行合约。具体来说,智能合约是区块链被称之为“去中心化的”重要原因,它允许我们在不需要第三方的情况下,执行可追溯、不可逆转和安全的交易。
|
区块链
以太坊之dapp
以太坊之dapp
|
存储 安全 测试技术
智能合约中存在的3种最常见的误解
智能合约中存在的3种最常见的误解
188 0
|
区块链
智能合约有哪些特点?DAPP智能合约系统模式开发
智能合约系统开发,DAPP智能合约系统模式开发
245 0
智能合约有哪些特点?DAPP智能合约系统模式开发