etherem创世块的创建、创建账户以及账户间的建立通道
来源:互联网 发布:手机屏幕动物软件 编辑:程序博客网 时间:2024/04/25 02:42
系统为Ubuntu16.10
1、新建文件ethereum,并新建配置文件test.json如下:
{"config":{
"chainid":22,
"hometestBlock":0,
"eip155Block":0,
"eip158Block":0
},
"nonce" :"0x0000000000000038",
"timestamp" :"0x0",
"parentHash" :"0x0000000000000000000000000000000000000000000000000000000000000000",
"gasLimit" :"0x2fefd80",
"difficulty" :"0x400",
"mixhash" :"0x0000000000000000000000000000000000000000000000000000000000000000",
"coinbase": "0xbe8d5fce9f60ab06b527dd177eed96eb95ee4138",
"alloc" :{},
"extraData " :""
}
2、在ethereum下新建文件夹data0:
终端位于ethereum中:geth --datadir data0 init test.json
此处表示新建创世块,区块链的第一块已经生成。
3、启动私有链:geth --datadir data0 --networkid 1108 console,之后会进入一个交互界面。
上面命令的主体是geth console,表示启动节点并进入交互式控制台,--datadir选项指定使用data0作为数据目录,--networkid选项后面跟一个数字,这里是1108,表示指定这个私有链的网络id为1108。网络id在连接到其他节点的时候会用到,以太坊公网的网络id是1,为了不与公有链网络冲突,运行私有链节点的时候要指定自己的网络id。
4、新建账户:personal.newAccount()
注:查看账户:eth.accounts
其中start的参数表示挖矿使用的线程数。第一次启动挖矿会先生成挖矿所需的DAG文件,这个过程有点慢,等进度达到100%后,就会开始挖矿,此时屏幕会被挖矿信息刷屏。
默认挖到存储默认账户:eth.coinbase;
设置默认账户:miner.setEtherbase(eth.accounts[1])
6、查看余额:eth.getBalance(eth.accounts[0])
换算为以太币:web3.fromWei(eth.getBalance(eth.accounts[0]),'ether')
> amount = web3.toWei(5,'ether')
"5000000000000000000"
> eth.sendTransaction({from:eth.accounts[0],to:eth.accounts[1],value:amount})
8、解锁账户:personal.unlockAccount(eth.accounts[0])
txpool.status
要使交易被处理,必须要挖矿。这里我们启动挖矿,然后等待挖到一个区块之后就停止挖矿
miner.start(1);admin.sleepBlocks(1);miner.stop();
当miner.stop()返回true后,txpool中pending的交易数量应该为0了,说明交易已经被处理了:
10、查看交易和区块:
查看当前区块总数:> eth.blockNumber
通过交易hash查看交易:
> eth.getTransaction("0x0c59f431068937cbe9e230483bc79f59bd7146edc8ff5ec37fea6710adcab825")
通过区块号查看区块:
> eth.getBlock(33)
11、链接到其他节点:可以通过admin.addPeer()方法连接到其他节点,两个节点要想联通,必须保证网络是相通的,并且要指定相同的networkid。
假设有两个节点:节点一和节点二,networkid都是1108,通过下面的步骤就可以从节点一连接到节点二。首先要知道节点二的enode信息,
在节点二的js console中执行下面的命令查看enode信息:
> admin.nodeInfo.enode
"enode://9e86289ea859ca041f235aed87a091d0cd594b377cbe13e1c5f5a08a8a280e62d4019ac54063ed6a1d0e3c3eaedad0b73c40b99a16a176993f0373ffe92be672@[::]:30304"
然后在节点一的js console中执行admin.addPeer(),就可以连接到节点二:
> admin.addPeer("enode://9e86289ea859ca041f235aed87a091d0cd594b377cbe13e1c5f5a08a8a280e62d4019ac54063ed6a1d0e3c3eaedad0b73c40b99a16a176993f0373ffe92be672@127.0.0.1:30304")
addPeer()的参数就是节点二的enode信息,注意要把enode中的[::]替换成节点二的IP地址。连接成功后,节点二就会开始同步节点一的区块,同步完成后,任意一个节点开始挖矿,另一个节点会自动同步区块,向任意一个节点发送交易,另一个节点也会收到该笔交易。
通过admin.peers可以查看连接到的其他节点信息,通过net.peerCount可以查看已连接到的节点数量。
除了上面的方法,也可以在启动节点的时候指定--bootnodes选项连接到其他节点。
最后一步由于没有在同一个配置文件下生成不同的节点,导致没有成功,所以未能截图。
本文参考自:http://dophin459.coding.me/posts/e47700bb/
- etherem创世块的创建、创建账户以及账户间的建立通道
- linux svn 创建新的账户、仓库
- 关于游客账户创建的问题
- 6.1 GitHub - 账户的创建和配置
- ORACLE-- 创建查看权限的账户
- 用户账户的创建和管理
- Tomcat账户和密码的创建
- 关于mysql创建账户以及权限设置的若干方法和问题
- 在WINDOWS系统创建了一个新账户后,原来的Administrator账户不见了,怎样恢复
- 在WINDOWS系统创建了一个新账户后,原来的Administrator账户不见了,怎样恢复?
- Oracle创建监控账户
- mysql GRANT 创建账户
- vc 创建Windows账户
- 创建自定义账户类型
- vsftp创建虚拟账户
- ubutu创建root账户
- Mysql创建账户记录
- sqlSERVER创建账户
- CodeForces292C Beautiful IP Addresses(简单搜索加大暴力乱搞)
- [转载]SQL语句中LEFT JOIN ON WHERE和LEFT JOIN ON AND的区别
- 10. Regular Expression Matching
- Idea Intellij加载项目之后端口号修改
- 购物车(二级列表)
- etherem创世块的创建、创建账户以及账户间的建立通道
- Android Recyclerview适配器 加载头部 以及自定义View
- 大话设计模式----开放-封闭原则
- nginx 服务器上Laravel5.1框架的一些配置
- 腾讯云 centos7 配置服务器所需要知道的
- 面试Java web,有关于hibernate一般都问什么问题?
- 自定义浏览器协议,实现web页面调用本地程序
- EA&UML日拱一卒-状态图::状态机
- Test 2017.10.24