以太仿DApp开发环境搭建
在网上找了些以太仿的资料,是node.js写的,之前也了解过node.js,正好也可以用上。本篇主要学习以太仿DApp开发环境搭建。
一、安装 DApp 开发环境
1.1安装 Node.js
首先下载node.js:https://nodejs.org/en/,下载后直接安装即可。安装完毕,打开一个控制台窗口,可以使用 node 了。这里我下载的是10.15.3版本,安装完成之后使用node -v验证是否安装成功。

1.2 安装geth、ganache
下载 https://gethstore.blob.core.windows.net/builds/geth-windows-amd64-1.8.3-329ac18e.exe 安装geth。
使用命令行npm install –g ganache-cli来安装ganache,之后使用ganache-cli命令验证是否安装成功。如果是win10可以下载安装包,https://github.com/trufflesuite/ganache/releases/download/v1.1.0-beta.1/Ganache.appx ,文件是appx格式的,在安装的过程中如果打不开可以以管理员使用powershell 执行Add-AppxPackage D:\Downloads\Ganache-2.0.0.appx进行安装。

1.3安装 solidity 编译器
使用npm install –g solc安装,然后使用solcjs --version进行验证是否安装成功。

1.4安装web3
Web3 的安装过程使用了 git,因此需要先安装 windows 版的 git 命令行。https://github.com/git-for-windows/git/releases/download/v2.16.2.windows.1/Git-2.16.2-64-bit.exe 。使用npm install –g web3,然后使用node –p 'require("web3")'进行验证是否安装成功。

1.5安装 truffle 框架
使用npm install –g truffle,然后使用truffle.cmd version进行验证是否安装成功。
1.6 安装 webpack
使用npm install –g webpack,然后使用webpack –v进行验证是否安装成功。

二、运行私链节点
2.1 创世块配置
创建一个节点目录 node1,并在其中创建私链的创世块配置文件:
{
"config": {
"chainId": 7878,
"homesteadBlock": 0,
"eip155Block": 0,
"eip158Block": 0
},
"difficulty": "200",
"gasLimit": "2100000",
"alloc": {
"7df9a875a174b3bc565e6424a0050ebc1b2d1d82": { "balance": "300000" },
"f41c74c9ae680c1aa78f42e5647a62f353b7bdde": { "balance": "400000" }
}
}
2.2初始化私链节点
执行 geth 的 init 命令初始化私链节点:geth --datadir .\data init private.json。这会在当前目录下创建 data 目录,用来保存区块数据及账户信息:

2.3启动私链节点
从指定的私链数据目录启动并设定一个丌同的网络编号来启动节点:geth --rpc --datadir .\data --networkid 7878 console。
rpcaddr 参数用来声明节点 RPC API 的监听地址,设为 0.0.0.0 就可以从其他机器访问API 了;rpccorsdomain 参数是为了解决 web3 从浏览器中跨域调用的安全限制问题。

这里可以把初始化和启动写在cmd文件中,下次就可以执行运行。

2.4账户管理
在 geth 控制台,使用 personal 对象的 newAccount()方法创建一个新账户,参数为你自己选择的密码,输出就是新创建的账户地址(公钥)。geth 会保存到数据目录下的 keystore 文件中。使用 personal 对象的 getBalance()方法获取挃定账户的余额,参数为账户地址。这里查询了private.json中初始化时设置账号的余额为初始化时的数值。

使用miner.start(1)命令进行挖矿,等待一段时间之后使用miner.stop()停止挖矿,再查询eth.getBalance(eth.accounts[0])账户,可以看到余额已经有好多了。


三、构建示例项目
3.1 新建 DApp 项目
这里在DApp目录下新建了demo目录,在该目录下执行truffle.cmd unbox webpack,之后会自动生成下面的文件。

3.2安装项目依赖的 NPM 包
在E:\DApp\demo\app目录下执行npm install命令安装npm包,如果报未能加载 Visual C++ 组件“VCBuild.exe”错误,需要执行npm install --global --production windows-build-tools (全局安装windows构建工具)。
3.3编译合约
执行命令truffle.cmd compile编译项目合约。这里使用的是ganache模拟器来模拟geth,所以需要修改truffle-config.js中的配置,ganache端口为7545,networkid=5777.所以设置development的port为7545,network_id为5777.



3.4部署合约
使用truffle.cmd migrate命令来部署合约。




部署成功之后,可以在ganache中看到原本balance=100eth的现在变成的99.98eth,tx acount为5,在transactions中有转账记录。


以太仿DApp开发环境搭建的更多相关文章
- windows 以太坊开发框架Truffle环境搭建
https://www.jianshu.com/p/f7a4de0cba9d 一.安装DApp开发环境 1.1 安装Node.js 我们使用官方长期支持的8.10.0LTS版本,下载64位包装包. 下 ...
- Windows 10 IoT Serials 1 - 针对Minnow Board MAX的Windows 10 IoT开发环境搭建
目前,微软针对Windows IoT计划支持的硬件包括树莓派2,Minnow Board MAX 和Galileo (Gen 1和Gen 2).其中,Galileo (Gen 1和Gen 2)运行的是 ...
- 智能合约开发环境搭建及Hello World合约
如果你对于以太坊智能合约开发还没有概念(本文会假设你已经知道这些概念),建议先阅读入门篇. 就先学习任何编程语言一样,入门的第一个程序都是Hello World.今天我们来一步一步从搭建以太坊智能合约 ...
- TI Davinci DM6446开发攻略——开发环境搭建
TI DAVINCI DM6446的开发环境搭建不像三星S3C2410,S3C2440,ATMEL的AT91SAM9260之类的单核ARM那么简单,因为DM6446还有DSP端的开发环境,以及双核之间 ...
- [转] 智能合约开发环境搭建及Hello World合约
[From] http://www.cnblogs.com/tinyxiong/p/7898599.html 如果你对于以太坊智能合约开发还没有概念(本文会假设你已经知道这些概念),建议先阅读入门篇. ...
- 转:(WIN)S04-CH01 PCIE XDMA开发环境搭建以及环路测试
摘要: 这一章开始主要介绍 XILINX FPGA PICE IP XDMA IP的使用.XDMA IP使用部分教程分LINUX 篇和WINDOWS篇两个部分.通过实战,面向应用,提供给大家 XILI ...
- python开发环境搭建
虽然网上有很多python开发环境搭建的文章,不过重复造轮子还是要的,记录一下过程,方便自己以后配置,也方便正在学习中的同事配置他们的环境. 1.准备好安装包 1)上python官网下载python运 ...
- IntelliJ IDEA安装及jsp开发环境搭建
一.前言 现在.net国内市场不怎么好,公司整个.net组技术转型,就个人来说还是更喜欢.net,毕竟不是什么公司都像微软一样财大气粗开发出VS这样的宇宙级IDE供开发者使用,双击sln即可打开项目, ...
- Qt for Android开发环境搭建及测试过程记录
最近学习了Qt的QML编程技术,感觉相较于以前的QtGUI来说更方便一些,使用QML可以将界面与业务逻辑解耦,便于开发. QML支持跨平台,包括支持Android平台,因此可以使用Qt的QML进行An ...
随机推荐
- VS2017 生成事件去除未修改项目
1.右键“解决方案”→“配置管理器” 2.列“生成”,反勾选无需编译的项目 3.点击“确定”,重新编译即可跳过未勾选的项目.
- Android Studio的构建系统:Gradle
原文作者:youxiachai <用Gradle 构建你的android程序> 前言 android gradle 的插件终于把混淆代码的task集成进去了,加上最近,android st ...
- django+javascrpt+python实现私有云盘代码
丁丁:由于篇幅有限,这里暂时只展示python后端代码,前端js代码后面上传,有需要的也可以留言私信我. 1.view.py 使用用户.部门.公司等相关账号的创建,已经个人,部门账号的冻结,删除,相关 ...
- [LeetCode] Exam Room 考试房间
In an exam room, there are N seats in a single row, numbered 0, 1, 2, ..., N-1. When a student enter ...
- Python基础之迭代器、生成器
一.迭代器: 1.迭代:每一次对过程的重复称为一次“迭代”,而每一次迭代得到的结果会作为下一次迭代的初始值.例如:循环获取容器中的元素. 2.可迭代对象(iterable): 1)定义:具有__ite ...
- Where is the Marble? (寻找大理石上的数字)
(先上题目) (题目描述)Raju and Meena love to play with Marbles. They have got a lot of marbles with numbers w ...
- CoreProfiler升级到.NetStandard 2.0
致所有感兴趣的朋友: CoreProfiler和相应的Sample项目cross-app-profiling-demo都已经升级到.NetStandrard 2.0和.NetCore 2.0. 有任何 ...
- [Swift]LeetCode65. 有效数字 | Valid Number
Validate if a given string is numeric. Some examples:"0" => true" 0.1 " => ...
- [Swift]LeetCode523. 连续的子数组和 | Continuous Subarray Sum
Given a list of non-negative numbers and a target integer k, write a function to check if the array ...
- [Swift]LeetCode699. 掉落的方块 | Falling Squares
On an infinite number line (x-axis), we drop given squares in the order they are given. The i-th squ ...