以太坊之使用truflle和infura部署以太坊合约|猿创征文
## 一、前言
- Infura 是一个托管的以太坊节点集群,可以将你开发的以太坊智能合约部署到 infura 提供的节点上,而无需搭建自己的以太坊节点。
- 出于安全原因,Infura 不管理你的私钥,这意味着 Infura 不能代表你签署交易。但是,Infura 可以通过使用
HDWalletProvider 来签署交易。该服务可以处理事务签名以及与以太坊网络的连接。
## 二、安装 HDWalletProvider
- Infura 的 HDWalletProvider 是一个独立的 npm 软件包, 如下安装:
```cpp
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 文件 的顶部添加以下代码:
```cpp
var HDWalletProvider = require("truffle-hdwallet-provider");
```
- 接下来,提供助记词(mnemonic)来生成你的账户:
```cpp
varmnemonic = "orange apple banana ...";
```
- 在此过程中,建议将助记符存储在另一个(秘密)文件中,以降低助记符泄漏风险。如果有人知道助记符,他们将拥有你所有的地址和私钥。
- 添加 Ropsten 网络定义:
```cpp
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 值被封装在一个函数中,这可以确保它在需要之前不会被初始化。如果连接到多个网络,这一点尤为重要。
- 默认情况下,由助记符产生的第一个账户将负责执行合约迁移任务。但如果需要的话,你可以传入参数以指定使用的帐户。例如,要使用第三个帐户:
```cpp
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。
## 六、部署合约
- 编译项目:
```cpp
truffle compile
```
- 部署到 Ropsten 网络:
```cpp
truffle migrate --network ropsten
```
- 如果一切顺利,应该可以看到类似于以下内容的输出:
```cpp
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 是:
```cpp
0x7efbb3e4f028aa8834d0078293e0db7ff8aff88e72f33960fc806a618a6ce4d3
```
- 你应该可以看到有关交易的详细信息,包括交易受到保护的区块号。
- 恭喜,你已经使用 Infura 和 truffle 的组合将合约部署到 Ropsten 上了。
相关推荐
2026安卓开发从零实战指南:环境搭建、核心基础与避坑干货(适配新版Android_Studio).pdf
2026安卓开发从零实战指南:环境搭建、核心基础与避坑干货(适配新版Android_Studio).pdf
如何实现科研成果转化率的有效提升与技术市场精准对接?.docx
如何实现科研成果转化率的有效提升与技术市场精准对接?
基于PID控制的ABS汽车防抱死制动系统、车轮滑移率+最优滑移率Carsim和Simulink联合仿真(带参考文献)
内容概要:本文档系统研究了基于PID控制的ABS汽车防抱死制动系统,聚焦于车轮滑移率与最优滑移率的动态控制问题,采用Carsim与Simulink联合仿真平台构建高精度车辆动力学模型与控制系统。研究详细阐述了ABS的工作机理,通过设计PID控制器实时调节制动压力,确保车轮滑移率稳定在最优区间,从而最大化轮胎与路面间的摩擦力,提升制动效能与行车安全性。文档涵盖了完整的建模流程、控制策略设计、仿真验证方法及参数整定过程,并提供了详实的参考文献支持,增强了研究的可复现性与工程应用价值。; 适合人群:具备车辆工程、自动化或控制理论等相关专业背景,熟悉MATLAB/Simulink与Carsim仿真环境的研究生、科研人员及汽车行业技术研发工程师。; 使用场景及目标:①用于ABS控制算法的教学讲解与科研实验;②支撑车辆制动性能优化、主动安全系统开发等实际工程应用;③为相关学术论文撰写、课题复现与技术创新提供理论依据与技术参考。; 阅读建议:建议读者结合所提供的仿真模型与参考文献,逐步运行并调试代码,重点关注滑移率计算逻辑、PID参数整定方法及联合仿真的数据交互机制,同时可尝试引入模糊控制、自适应控制等先进算法进行对比分析,以深入掌握ABS系统的控制精髓与优化路径。
高校如何利用技术转移数据分析优化成果转化路径?.docx
科易网基于40亿+科创知识图谱数据库,深度探索AI技术在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,研究科技创新领域的AI+数智化解决方案,推动科技创新与产业创新智能化发展。
MATLAB采用改进的PSO实现AUV三维路径规划,配备自适应惯性权重、距离演化因子和跳出机制。.zip
MATLAB采用改进的PSO实现AUV三维路径规划,配备自适应惯性权重、距离演化因子和跳出机制。.zip


