IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 区块链 -> 以太坊搭建私链 -> 正文阅读

[区块链]以太坊搭建私链

Windows系统---打开cmd命令行

1.初始化(首先有创世文件)

geth init "D:\Geth\1_test\genesis.json" --datadir "D:\test1"

文件内容可自己创建(使用puppeth)

{
  "config": {
        "chainId": 18,
        "homesteadBlock": 0,
        "eip150Block": 0,
        "eip155Block": 0,
        "eip158Block": 0
    },
  "alloc"      : {},
  "coinbase"   : "0x0000000000000000000000000000000000000000",
  "difficulty" : "0x2",
  "extraData"  : "",
  "gasLimit"   : "0xffffffff",
  "nonce"      : "0x0000000000000042",
  "mixhash"    : "0x0000000000000000000000000000000000000000000000000000000000000000",
  "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
  "timestamp"  : "0x00"
}

以上结构体中变量的意义为

  • coinbase 挖矿后获得奖励的账户地址
  • difficulty 挖矿难度
  • gasLimit 一个区块所能容纳gas的上限
  • nonce 随机值
  • mixhash 一个256位的哈希证明,与nonce相结合,验证本块的有效性
  • extraData 附加信息,随意填写
  • parentHash 前一块的hash值,由于是创世块,所以为0

运行截图为

?2.启动Geth

geth --datadir "D:\test1" --nodiscover --http --http.port 8546 --port 30304 --networkid 101  console 2>> test.log  --allow-insecure-unlock
  • --datadir 表示工作目录,第一次输入命令时会自动新建一个testNet目录来存放数据(私钥公钥)
  • --nodiscover用于新手练习时自主连接节点,否则可能会自动连接
  • --http 连接http rpc (旧版命令参数为--rpc)
  • --http 默认公有链http rpc端口为8545,私有链建立时避免重复使用其他数字
  • --port (30303)? --network(单数多为公链,尽量使用大一点的数) 同--http
  • 2>>test.log 表示把控制日志输出到test.log文件
  • --allow-insecure-unlock? 新版Geth需要设定账户解锁权利(有输入密码的权利)
  • 开发者模式--dev(默认账户的密码怎么看?

开发者的好处有几点:

  • 自动挖矿
  • 无需初始化
  • 出块速度快
  • 默认初始化了一个账户,金钱无限
  • 默认账户无需解锁,也可以部署合约

运行截图如下

3.准备账户

01:查看当前存在的账户

eth.accounts

默认不会有账户信息,需要创建后才能有

02:创建账户,注意传入的123456是密码

personal.newAccount("123456")
>eth.accounts
//查看已有账户信息
>eth.defaultAccount='eth.accounts[0]'
//设置默认账户,默认账户将运行挖矿命令时自动挖矿

03:启动挖矿,start内的1是代表1个线程挖矿,null并非代表错误

miner.start(1)

04:查看账户余额,都是挖矿所得

eth.getBalance(eth.accounts[0])

05:再创建一个账户,密码7878

personal.newAccount("7878")

06:给两个账户起别名acc0,acc1

>acc0=eth.accounts[0]
>acc1=eth.accounts[1]

07:解锁账户1

personal.unlockAccount(acc0)

08:转账给账户2,10个ether,返回值为本次交易哈希值

eth.sendTransaction({from:acc0,to:acc1,value:web3.toWei(10)})
//web3.toWei(10)是将10ether转换成Wei的格式1 ether=10^8Wei

09:查看账户2余额

eth.getBalance(acc1)

10:退出geth

exit

运行截图如下

> eth.accounts
[]
> eth.blockNumber
0
> personal.newAccount('123456')
"0x0a11acf50a1c73c7ec688c86c34b8ae383e335a1"
> personal.newAccount('7878')
"0x323118b34c4dfdeb32fc7ebd5b69238a7fab603d"
> eth.defaultAccount='eth.accounts[0]'
"eth.accounts[0]"
> miner.start()
null
> web3.fromWei(eth.getBalance(eth.accounts[0]),'ether')
0
> eth.blockNumber
22
> web3.fromWei(eth.getBalance(eth.accounts[0]),'ether')
120
> web3.fromWei(eth.getBalance(eth.accounts[0]),'ether')
140
>eth.sendTransaction({from:eth.accounts[0],to:eth.accounts[1],value:1000000000000000000})
Error: authentication needed: password or unlock
        at web3.js:6357:37(47)
        at send (web3.js:5091:62(35))
        at <eval>:1:20(16)
//错误原因是交易的上一条命令必须是解锁转出以太币账户的命令
> personal.unlockAccount(eth.accounts[0])
Unlock account 0x0a11acf50a1c73c7ec688c86c34b8ae383e335a1
Passphrase:
true
>eth.sendTransaction({from:eth.accounts[0],to:eth.accounts[1],value:1000000000000000000})
"0x21cd774bd1ca30fb9f7279c1b09d924a515c569b074056f37d8f2d95a97c02d9"
//交易返回值为本次交易对应的哈希值
>eth.getTransaction("0x21cd774bd1ca30fb9f7279c1b09d924a515c569b074056f37d8f2d95a97c02d9")//查看交易内容
{
  blockHash: "0xa45679b63a9289054f7a8da4f9af24a25272e3ae3373590425141ae15251046d",
  blockNumber: 201,
  from: "0x0a11acf50a1c73c7ec688c86c34b8ae383e335a1",
  gas: 21000,
  gasPrice: 1000000000,
  hash: "0x21cd774bd1ca30fb9f7279c1b09d924a515c569b074056f37d8f2d95a97c02d9",
  input: "0x",
  nonce: 0,
  r: "0x7b569cfd1ca028b5d6ffd39d493f402bdeed1e90477ae6efe5d4508139e51980",
  s: "0x45d18d464e8119391bf4ede13839982221ade78e21862fd8ca01cf29f93e1e5d",
  to: "0x323118b34c4dfdeb32fc7ebd5b69238a7fab603d",
  transactionIndex: 0,
  type: "0x0",
  v: "0x48",
  value: 1000000000000000000
}
> web3.fromWei(eth.getBalance(eth.accounts[1]),'ether')
1

4.建立第二个节点

a.同一局域网下两个电脑进行连接

b.同一电脑下安装虚拟机,设置节点进行连接

c.再打开一个cmd命令行,更改工作目录和端口号,再进行两个节点的连接

注意:旧版可以同一电脑,新版不可以,因此在一台电脑上,需要安装一个虚拟机,并且却要同一个networkid和同一个创世区块json文件。且新建节点不能挖矿否则将产生分叉。

原节点(接上)

> net.peerCount
0
> admin.peers
[]
> admin.nodeInfo.enode
"enode://7277d340a2f83c6846e37f01431b140f5218e280f032e9fec234b65c95a29b3889aa2bbdd4b84f73c6564e6a2b08f61e5c206c9ce228d77a15eae78cdc2e51f0@127.0.0.1:30304?discport=0"

新建节点(新建一个cmd)

C:\Users\91337>geth --datadir "D:\test2" --nodiscover --http --http.port 8547 --port 30305 --networkid 101  console 2>> test2.log  --allow-insecure-unlock --ipcdisable
Welcome to the Geth JavaScript console!

instance: Geth/v1.10.10-stable-bb74230f/windows-amd64/go1.17.2
at block: 0 (Thu Jan 01 1970 08:00:00 GMT+0800 (CST))
 datadir: D:\test2
 modules: admin:1.0 debug:1.0 eth:1.0 ethash:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0

To exit, press ctrl-d or type exit
> eth.blockNumber
0
> net.peerCount
0
> admin.peers
[]
> admin.addPeer("enode://7277d340a2f83c6846e37f01431b140f5218e280f032e9fec234b65c95a29b3889aa2bbdd4b84f73c6564e6a2b08f61e5c206c9ce228d77a15eae78cdc2e51f0@127.0.0.1:30304?discport=0")
true

再次验证是否连接成功

> net.peerCount

> admin.peers

也可以在新建cmd命令行下再次查看区块链高度,如果同步则成功。

  区块链 最新文章
盘点具备盈利潜力的几大加密板块,以及潜在
阅读笔记|让区块空间成为商品,打造Web3云
区块链1.0-比特币的数据结构
Team Finance被黑分析|黑客自建Token“瞒天
区块链≠绿色?波卡或成 Web3“生态环保”标
期货从入门到高深之手动交易系列D1课
以太坊基础---区块验证
进入以太坊合并的五个数字
经典同态加密算法Paillier解读 - 原理、实现
IPFS/Filecoin学习知识科普(四)
上一篇文章      下一篇文章      查看所有文章
加:2021-10-28 12:26:51  更:2021-10-28 12:26:57 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 21:42:22-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码