用truffle部署智能合约到以太坊网络(truffle+infura)的简易方法_大IT职男日志-程序员信息网

技术标签: 区块链  dapp  以太坊  infura  truffle  部署合约  

1.登录infura官网注册,获取API-KEY
Infura是一个托管的以太坊节点集群,可以将你编写的以太坊智能合约部署到infura提供的节点上,而无需自己搭建以太坊节点。

https://infura.io/

2.安装HDWalletProvider
Infura的HDWalletProvider是一个独立的npm软件包,切换到truffle工程目录使用如下命令安装

npm install truffle-hdwallet-provider

然后修改truffle.js或truffle-config.js文件内容如下:

// 定义HDWalletProvider对象
var HDWalletProvider = require("truffle-hdwallet-provider");
// 提供助记词(mnemonic)或私钥 来导入你的账户
var mnemonic = "topic foster find apple famous have bonus month remain middle funny smart";
// 添加Ropsten测试网络定义
module.exports = {
  networks: {
    ropsten: {
      provider: function() {
      // 定义以太坊节点 https://ropsten.infura.io/your-api-key
       return new HDWalletProvider(mnemonic, "https://ropsten.infura.io/503fc5af65d64cdaa090d2873201bc5a")
      },
      network_id: 3
    }
  }
};

3.  增加配置文件.env
Dotenv是一个零依赖模块,用于从".env"文件中导入环境变量到 process.env,对DAPP来说,这样就可以不用上传钱包助记词等核心机密到GITHUB,便于资产安全。

.env file

mnemonic=topic foster find apple famous have bonus month remain middle funny smart
infurakey=xxxxxxxxxxxxxxxxxxxxxxxxxx
prakey=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

这样上面代码如下:

// 定义HDWalletProvider对象
var HDWalletProvider = require("truffle-hdwallet-provider");
const reselt=require('dotenv').config(); // 默认读取项目根目录下的.env文件,用process.env.调用
if (result.error) {
  throw result.error;
}
console.log(result.parsed);

module.exports = {
  networks: {
    ropsten: {
      provider: function() {
      // 定义以太坊节点 https://ropsten.infura.io/your-api-key
       return new HDWalletProvider(process.env.mnemonic, "https://ropsten.infura.io/"+ process.env.infurakey);
      },
      network_id: 3
    }
  }
};

4.部署到以太坊网络
执行如下命令,部署到以太坊测试网络ropsten

truffle migrate --network ropsten

若部署时出现 network up to date 原因由于合约移植是懒编译的,如果发现已经发布过,且发布的版本号没有变化就不会再发布,所以使用--reset。使用truffle migrate --reset来强制重编译并发布所有合约.

若部署时候出现类似 node_modules\node-sss\ventor not found 等出错信息 首先安装 npm install node-sss --save ,如果还是出现 用npm rebuild node-sass --save 重建生成即可。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/jamesdodo/article/details/108445967

智能推荐

数据蒋堂 | Hadoop - 一把杀鸡用的牛刀_数据派THU的博客-程序员信息网

作者:蒋步星来源:数据蒋堂本文共1800字,建议阅读6分钟。通过本文为大家解读为什么Hadoop不适合小集群实现。                     Hadoop是个庞大的重型解决方案,它的设计目标本来就是大规模甚至超大规模的集群,面对的是上百甚至上千个节点,这样就会带来两个问题:自动化管理管任务分配机制:这样规模的集群,显然不大可能针对每个节点提供个性化的管理控制,否则工作量会大到累死人

vsftpd限制用户只能上传不能下载_weixin_30551947的博客-程序员信息网

有时候,项目中有这样的需求;vsftpd只能上传文件不能下载。下面我们就来分享一下个人的经验:例子1:vsftpd本地用户实现可以上传不能下载(即不能读)1、创建用于登陆vsftpd的用户、并赋予其密码:useradd test2、创建vsftpd的共享目录,将其的属主和属组都修改为szl;权限为777 (这里是测试环境):mkdir /mnt/test...

Jenkins持续集成CICD的环境搭建和maven项目的构建_${简简单单}的博客-程序员信息网

一、Jenkins搭建1、下载安装包,官方地址Windows版本:下载安装完,默认会把Jenkins注册成Windows服务,再自动以8080端口启动服务,如果本机8080端口被占用,可以在/jenkins.xml中修改端口号,再运行命令:net start jenkinsJenkins 服务正在启动 .Jenkins 服务已经启动成功。Linux系统版本:通过RPM安装:wget https://pkg.jenkins.io/redhat-stable/jenkins-2.176.1-

SpringBoot中使用@ConfigurationProperties进行配置绑定_richest_qi的博客-程序员信息网[email protected] 修改值

文章目录使用Java读取.properties文件的内容并封装成JavaBean使用SpringBoot的@ConfigurationProperties进行配置绑定@[email protected](prefix = "mycar")使用Java读取.properties文件的内容并封装成JavaBean新建Maven项目:demo1。修改pom.xml,添加依赖。<?xml version="1.0" encoding="U

使用Android Studio开发时遇到的问题及解答(持续更新中~~)_xiongzuobin的博客-程序员信息网

最近由于项目需要用Android Studio开发,急忙从Eclipse转到AS,遇见不少问题。之前总听说AS是个好工具,一直没有机会使用,突然上手烦恼诸多,下面将遇到的问题写出来希望能帮到大家1.在安装玩AS后不要勾选立即打开的选框,找到AS安装目录bin目录下的idea.properties中把最后一行改为disable.android.first.run=true可以关闭初次启动时自动更

Java并发编程之ThreadLocal详解_Eneml的博客-程序员信息网

@Java并发编程之ThreadLocal详解##ThreadLocal简介变量值的共享可以使用public static的形式,所有线程都使用同一个变量,如果想实现每一个线程都有自己的共享变量该如何实现呢?JDK中的ThreadLocal类正是为了解决这样的问题。ThreadLocal类并不是用来解决多线程环境下的共享变量问题,而是用来提供线程内部的共享变量,在多线程环境下,可以保证各个线程之间的变量互相隔离、相互独立。在线程中,可以通过get()/set()方法来访问变量。ThreadLocal实

随便推点

使用linux系统下的GBK.gz和UTF-8.gz文件,实现gbk到utf8之间的相互转换_a907482655的博客-程序员信息网

GBK 转 UTF-8 (trans.php) :#!/usr/bin/php<?phpdefine('GBK', '/usr/share/i18n/charmaps/GBK.gz');define('UTF8', '/usr/share/i18n/charmaps/UTF-8.gz');define('INPUT_FILE', 't.txt');de...

pyx文件 生成pyd 文件用于 cython调用_furuit的博客-程序员信息网

faster-rcnn 需要2k个候选框,这很费时间的,所以可以把这部分代码优化,改写为pyx文件,然后就可以快一些了。1安装cython官网上下载的Cython-0.20.1,从控制台上切到cython的路径,运行setup.py就一路编译安装下去了,没遇到其他问题。在网上看到,很多人在安装的时候遇到很多问题,基本上都是找不到c++编译器,具体表现是提示找不到一个叫“vs....ba...

蚂蚁上市后,马云不是最大赢家,竟是她!_CSDN 程序人生的博客-程序员信息网

作者:电商君来源:电商报(ID:kandianshang)中国电商影响力媒体!马云造就人类历史上最大的造富运动!蚂蚁集团要上市了,人类历史上最大的造富运动,就要来了!作为中国互联网独角兽...

2440超详细uboot移植笔记(四)------剪裁uboot_风筝丶的博客-程序员信息网

你好!这里是风筝的博客,欢迎和我一起交流。在make编译之后,我们可以发现生成的.bin二进制文件很大,有五百多k,不利于我们烧写,所以我们可以先对uboot剪裁一下,把不需要的功能去除掉:  a. 在smdk2440.h(路径:include\configs\smdk2440.h)文件上把不需要的uboot功能的宏开关注释掉:#define CONFIG_USB_OHCI...

C/C++笔试题(9)_hanlin1985的博客-程序员信息网

 Intel笔试面试题目  智力题1.每天中午从法国塞纳河畔的勒阿佛有一艘轮船驶往美国纽约,在同一时刻纽约也有一艘轮船驶往勒阿佛。已知横渡一次的时间是7天7夜,轮船匀速航行,在同一航线,轮船近距离可见。  请问今天中午从勒阿佛开出的船会遇到几艘从纽约来的船?  2.巴拿赫病故于1945年8月31日。他的出生年份恰好是他在世时某年年龄的平方,问:他是哪年出生的?  答案:   设他在

ctf ddos数据包 杂项 流量_bonesi :在实验环境下模拟DDoS攻击流量的工具_南至挚爱的博客-程序员信息网

BoNeSi,DDoS僵尸网络模拟器是一种测试平台环境中模拟僵尸网络流量的工具。它旨在研究DDoS攻击的影响。 可以生成什么流量?BoNeSi从定义的僵尸网络大小(不同的IP地址)生成ICMP,UDP和TCP(HTTP)泛洪攻击。 BoNeSi 具有高度可配置性,可以配置速率,数据量,源IP地址,URL和其他参数。是什么让它与其他 工具 不同?还有很多其他工具可以使用UDP和ICMP来欺骗IP地址...

推荐文章

热门文章

相关标签