geth搭建私链小结

写入创世区块

geth --datadir data0 init genesis.json

genesis.json作为区块链的头部,genesis.json部分内容举例如下

{
  "config": {
        "chainId": 10, 
        "homesteadBlock": 0,
        "eip155Block": 0,
        "eip158Block": 0
    },
  "alloc"      : {},
  "coinbase"   : "0x0000000000000000000000000000000000000000",
  "difficulty" : "0x20000",
  "extraData"  : "",
  "gasLimit"   : "0x2fefd8",
  "nonce"      : "0x0000000000000042",
  "mixhash"    : "0x0000000000000000000000000000000000000000000000000000000000000000",
  "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
  "timestamp"  : "0x00"
}

字段解释:

head.png

--datadir data0表示存储私有链节点的文件夹,拷贝genesis.json到/home/kindol/eth 文件夹下,方便命令行操作

在运行以上语句之后,会有在data文件夹下产生两个新的文件夹,geth和keystore两个文件夹,其中geth/chaindata目录中存放的是区块数据keystore存放的是账户数据

启动私有链节点

geth --datadir data0 --networkid 1108 console
  • 主要是geth console,表示启动节点并且进入交互式控制台
  • --networkid 1108表示这个私有链的网络id为1108,网络id在连接到其他节点的时候会用到以太坊公网的网络id是1,为了不与公有链网络冲突,运行私有链节点的时候要指定自己的网络id

接着会进入一个交互式Javascript执行环境,这些对象主要包括:

  • eth:包含一些跟操作区块链相关的方法
  • net:包含以下查看p2p网络状态的方法
  • admin:包含一些与管理节点相关的方法
  • miner:包含启动&停止挖矿的一些方法
  • personal:主要包含一些管理账户的方法
  • txpool:包含一些查看交易内存池的方法
  • web3:包含了以上对象,还包含一些单位换算的方法

geth console的使用

  • eth.accounts:查看所有私有链用户地址
  • personal.newAccount("password"):新建账户
  • eth.getBalance(eth.accounts[0]):通过账户地址查看账户余额(eth.accounts[0]可以替换为用户地址)
  • miner.start(2):开始挖矿,参数表示启动的线程数量,第一次启动挖矿会先生成挖矿所需的DAG文件,这个过程有点慢,等进度达到100%后,就会开始挖矿,此时屏幕会被挖矿信息刷屏。
  • miner.stop():停止挖矿

挖到一个区块会奖励5个以太币,挖矿所得的奖励会进入矿工的账户,这个账户叫做coinbase,默认情况下coinbase是本地账户中的第一个账户,使用

  • eth.coinbase:获得本地账户的第一个用户

要想使挖矿奖励进入其他账户,通过miner.setEtherbase()将其他账户设置成coinbase即可:

  • miner.setEtherbase(eth.accounts[1])

默认情况下,getBalance()返回值是wei,wei是以太币的最小单位,要查看有多少个以太币,可以使用如下换算:

  • web3.fromWei(eth.getBalance(eth.accounts[1]), 'ether');

发起交易

从user0转移5个以太币到user1中

user0 = eth.accounts[0]
"..."
amount = web3.fromWei(5, 'ether')
"..."
personal.unlockAccount(user0)
"..."
eth.sendTransaction({from:user0, to:user1, value:amount})
  • personal.unlockAccount(user0):账户每隔一段时间就会被锁住,要发送交易,必须先解锁账户,由于我们要从账户0发送交易,所以要解锁账户0

  • eth.sendTransaction({from:user0, to:user1, value:amount}):固定格式,从user0发送amount比特币给user1

  • txpool.status:前面交易已经上交,但是还未处理,通过txpool查看

> txpool.status
{
  pending: 1,       //已经提交但还未被处理的交易
  queued: 0
}

要使交易被处理,必须要挖矿。这里我们启动挖矿,然后等待挖到一个区块之后就停止挖矿:

miner.start(1); admin.sleepBlocks(1);miner.stop();

结果如下:

> txpool.status
{
  pending: 0,
  queued: 0
}

再次查看user1,发现已经获得了5个比特币

web3.fromWei(eth.getBalance(user1), 'ether')
5

查看交易和区块

  • eth.blockNumber:查看当前的区块数量
  • eth.getTransaction("..."):通过交易hash查看交易
  • eth.getBlock(23):通过区块号查看区块

创建私有链集群

先启动一个节点,注意私有链的节点networkid必须一致

geth --datadir data0 --networkid 1111 console
  • admin.nodeInfo.enode:获取节点实例的encode url

再打开一个终端,初始化第二个节点:

geth --datadir data1 --networkid 1111 init genesis.json
geth --datair data1 --networkid 1111 --port 30304 --bootnodes "填入从另一个节点获得的encode url"

注意当中的url的ip需要设置@[::]当中的内容为对应机子的ip

  • admin.nodeInfo:当前节点的信息,当中的enode即为encode url
  • admin.addPeer(encodeUrlOfFirst instance):也可以不在这里设置 --bootnodes,直接启动,进入命令行,通过命令把其他节点添加进来
  • net.peerCount:统计当前节点的邻居节点的数目
  • admin.peers:列举出其他节点的详细信息

推荐阅读:

https://blog.csdn.net/jomozz/article/details/79528741
https://blog.csdn.net/w88193363/article/details/79402074

注:区块链学习新人,若有不正确的地方,望指出

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,736评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,167评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,442评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,902评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,302评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,573评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,847评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,562评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,260评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,531评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,021评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,367评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,016评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,068评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,827评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,610评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,514评论 2 269

推荐阅读更多精彩内容