文章目录
- 前言
- 一,为什么用到私有链
- 二,需要安装的开源工具和语言
- 三,建立私链
- 初始化创世纪节点,并设置data目录
- 创建创世区块配置文件genesis.json文件
- 通过genesis.json初始化创世纪节点,并设置data目录:
- 使用geth加载
- web3.js常用操作命令
- 获取当前所有账户
- 创建账户
- 挖矿
- 账户划转
- 查看当前待办
- 下一篇文章 02.私有以太坊网络部署智能合约
前言
操作系统:MacBook Pro (16-inch, 2019)
Geth Version: 1.10.8-stable
一,为什么用到私有链
在以太坊的公有链上部署智能合约,发起交易需要花费以太币。而通过修改配置,可以在本机搭建一套以太坊私有链,因为与公有链没关系,即不同步公有链庞大的数据,也不用花钱购买以太币,很好地满足了智能合约开发和测试的要求,开发好的智能合约也可以很容易地切换接口部署到以太坊公有链上。
二,需要安装的开源工具和语言
-
- install Go compiler
brew install go
- 2.Ethereum节点安装
brew tap ethereum/ethereum
brew install ethereum
-
- solidit以太坊智能合约语言
brew install solidity
三,建立私链
初始化创世纪节点,并设置data目录
创建创世区块配置文件genesis.json文件
genesis.json 是Geth 工具用来创建创世区块以及区块链的配置文件,genesis.json 并不是创世区块本身
{
"config": {
"chainId": 666,
"homesteadBlock": 0,
"eip150Block": 0,
"eip150Hash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"eip155Block": 0,
"eip158Block": 0,
"byzantiumBlock": 0,
"constantinopleBlock": 0,
"petersburgBlock": 0,
"istanbulBlock": 0,
"ethash": {}
},
"nonce": "0x0",
"timestamp": "0x5ddf8f3e",
"extraData": "0x0000000000000000000000000000000000000000000000000000000000000000",
"gasLimit": "0x47b760",
"difficulty": "0x00002",
"mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"coinbase": "0x0000000000000000000000000000000000000000",
"alloc": { },
"number": "0x0",
"gasUsed": "0x0",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000"
}
通过genesis.json初始化创世纪节点,并设置data目录:
geth init "/Users/jingbao/IdeaProjects/smart-contract/privateDemo/genesis.json" --datadir "/Users/jingbao/IdeaProjects/smart-contract/privateDemo/data2"
/Users/jingbao/IdeaProjects/smart-contract/privateDemo/genesis.json 这是我存放genesis.json,别忘了更换你的地址
使用geth加载
geth --datadir "/Users/jingbao/IdeaProjects/smart-contract/privateDemo/data2" --ws --ws.api "eth,web3,miner,admin,personal,net,txpool" --ws.origins "*" --rpc --rpcapi "eth,web3,miner,admin,personal,net,txpool" --rpcport "8545" --rpccorsdomain "*" --nodiscover --networkid 15 --allow-insecure-unlock --ipcpath ~/Library/Ethereum/geth.ipc
摘要其中几个参数讲解:
- –identity :指定节点ID;
- –rpc :表示开启HTTP-RPC服务;
- –rpcaddr :HTTP-RPC服务ip地址;
- –rpcport :指定HTTP-RPC服务监听端口号(默认8545);
- –datal :指定区块链数据的储存位置;
- –port :指定和其他节点连接所用的端口号(默认为30303);
- –nodiscover :关闭节点发现机制,防止加入有同样初始配种的陌生节点;
具体看官方文档
命令是以服务的形式持续运行的,需要再打开一个命令行窗口,输入
geth attach rpc:~/Library/Ethereum/geth.ipc
这是一个交互式的JavaScript执行环境,在这里面可以执行JavaScript代码,其中>是命令提示符,在这个环境里也内置里一些用来操作以太坊的JavaScript对象,可以直接使用这些对象,这些对象主要包括:
web3.js常用操作命令
web3.js 中文文档
获取当前所有账户
> eth.accounts
["0x88d2a3c6575dc35e9014fd13f530dd326b254399", "0xa22be3a54be02c0a57bc23af3295099a0a06e2ab", "0xdd482f7cc5a3ced6a29bed498309f4d0ebad39f4"]
或者
> personal.listAccounts
["0x88d2a3c6575dc35e9014fd13f530dd326b254399", "0xa22be3a54be02c0a57bc23af3295099a0a06e2ab", "0xdd482f7cc5a3ced6a29bed498309f4d0ebad39f4"]
创建账户
personal.newAccount("my pasword")
- 查看余额
eth.getBalance(eth.accounts[0])
等价于
eth.getBalance("0x88d2a3c6575dc35e9014fd13f530dd326b254399")
挖矿
- 挖矿
开始挖矿
miner.start();
停止挖矿
miner.stop();
账户划转
- 解锁账户
personal.unlockAccount(eth.accounts[0])
输入密码按回车即可
- ether转换成wei
amount = web3.toWei(1,"ether")
eth.sendTransaction({from:personal.listAccounts[0],to:personal.listAccounts[1],value:amount})
查看当前待办
txpool.status
或
eth.getBlock("pending")
下一篇文章 02.私有以太坊网络部署智能合约
第二章:私有以太坊网络部署智能合约
点赞关注订阅持续更新
点击关注订阅持续更新
点击关注订阅持续更新
有问题或文章有需要改正的地方请留言
或 pwn2ownyearn@gmail.com 邮箱