以太坊私链环境搭建和发币全过程

以太坊框架搭建网上已经有很多,我不在啰嗦,我主要说下我搭建过程中踩过的坑及全过程解析。

搭建以太坊节点 主要有两种方式:

1.geth+mist 搭建

2.nodejs + truffle + ganache + metamask 组合搭建

坑1:不要geth 同步公链,如果硬盘没有300G以上空间,CPU 没有4核以上,内存没有8G 以上,更不要说10M 以上的带宽,先不要考虑同步公链了,那基本是个不可完成的任务。这样的配置和网速也需要2天才能同步完成。先搭建私链环境下测试整个流程,包括帐户管理,挖矿,转账,合约开发调试等,之后再说上公链的事吧。上面第一个搭建需要挖矿,第二个搭建不需要挖矿。

第一种搭建 就是 下载geth客户端 初始化创世区块,创建账号,注意坑:交易前先要解锁账号,还要挖矿挖出区块。多节点互联等

详细参考:https://blog.csdn.net/hantangduhey/article/details/81017602 

重点讲第二种,注意安装顺序。

1.安装nodejs (nodejs.org) ,安装完成后cmd命令输入node -v 查看版本,能显示说明安装成功。

2.利用nodejs的npm命令安装 truffle ,输入CMD命令: npm -g install truffle 安装完成时间比较长大概需要30分钟。

3.安装ganache 桌面版,https://www.trufflesuite.com/ganache 

   坑2:注意下载的是appx,一般打不开,直接用7zip解压缩直接运行ganache.exe 即可。

4.Truffle 官方提供了许多示例教程以及应用脚手架(truffle box),注意坑3:已经更新网站https://www.trufflesuite.com/boxes

新版本初始化truffle 命令为 truffle unbox 包名 而不是老的truffle init 包名 如truffle unbox webpack

5.ganache不要关闭,初始化 truffle 命令 下载对应项目包名

6.编译合约(build目录下json文件) 部署合约 启动服务。 truffle compile ,truffle migrate ,npm run dev.

7.坑4:truffle compile 编译时 出现 出错,那是因为项目目录下truffle.js 和系统命令truffle.cmd重名。修改truffle.js名为truffle-       config.js或者 直接truffle.cmd compile 命令执行。

8.坑5:执行项目命令一定要在对应项目目录下。不然项目下载到哪里都不知道了。

9.坑6:truffle compile 编译的时候会提示版本不对,无法编译情况。那是你下载的项目版本和你的版本不同引起的。利用 truffle version 命令查看当前版本。1.卸载新版本,下载指定旧版本。       

           npm uninstall truffle 卸载当前版本

           npm  -g instal  truffle@~2.1.1 安装指定版本

            truffle version 查看当前版本

10. 或者在truffle项目的配置文件truffle.js中设定compiler选项。例如,下面的配置文件将当前项目的solidity编译器设置为0.4.24版本:

module.exports = {

    networks: {

    ... bsc ...

   },

    compilers: {

    solc: {

    version: "0.4.24" }

    }

};

你只需要在compilers.solc.version处指定要启用的solidity编译器版本就行了,truffle会自动从官方拉取相应版本的编译器,无需你手动下载配置。

11.坑7:开发tutorialToken 类项目 需要在项目目录 执行 npm install openzeppelin-solidity 安装第三方erc20代币标准库。

12. 目录结构和普通的JavaScript前端项目非常相似,唯一不同的就是多了contracts和migrations这两个目录。
在contracts目录下创建一个新文件TutorialToken.sol, 内容如下:

pragma solidity ^0.4.24;
import 'zeppelin-solidity/contracts/token/erc20/StandardToken.sol'; //目录要对应
contract TutorialToken is StandardToken {
string public name = 'TutorialToken';
string public symbol = 'HT';
uint8 public decimals = 2;
uint public INITIAL_SUPPLY = 10000; //注意decimals wei.可 1000*(10**decimals)

unit256 public totalSupply; //声明下数据类型

function TutorialToken() public {
totalSupply = INITIAL_SUPPLY;
balances[msg.sender] = INITIAL_SUPPLY;
}
}

在migrations目录下新建2_deploy_contracts.js,内容如下:

var TutorialToken = artifacts.require('TutorialToken');
module.exports = function(deployer) {
deployer.deploy(TutorialToken);
}

编译智能合约 truffle compile
部署智能合约 truffle migrate
修改./src/js/app.js 对应ganache地址和端口
App.web3Provider = new Web3.providers.HttpProvider('http://127.0.0.1:7545');
启动服务 npm run dev
用firefox或者chrome打开http://localhost:3000

坑8:如果修改默认代币名会出现不显示代币数量,不能交易,修改app.js地址端口和.json对应代币名。而且数量用的包含wei的。可以对应amount和balance乘对应wei数和balance除对应wei。

13.用chrome插件metamask钱包测试转账交易。注意坑9:自定义网络本地网络和端口。

发布了114 篇原创文章 · 获赞 48 · 访问量 30万+

猜你喜欢

转载自blog.csdn.net/jamesdodo/article/details/101431901