以太坊构建本地私有网络

以太坊网络node

  •  以太网网络的实时的统计数据信息能够在EthStats.net(https://ethstats.net/)上查看。这网站上包含了许多重要的数据,如当前区块,交易,gas价格等。这页面上展现的节点只是实际网络中的节点的一部分。任何人均可以添加他们本身的节点到这个网站上。
  • 添加方法: https://github.com/cubedro/eth-netstats
  • EtherNodes.com 这网站统计了当前和历史上的有关节点的数量,这网站的统计信息包括了主网和测试网络。
  • etherchain.org 实时区块链统计信息

以太坊网络类型git

  • 如今大多数的以太坊项目都运行在以太坊公有链上,以太坊公有链能够为这些项目提供大量的用户,网络节点,货币和市场。可是,也有一些项目更加适合运行在私有链或联盟链(一群值得信赖的伙伴)上。好比,一些垂直领域里面的公司,如银行正在试图使用以太坊创建他们本身的私有区块链平台
  • 公有链:世界上任何一我的均可以参与的区块链。用户能够查看,能够发送交易,也能够参与保持数据一致性的运算等。
  • 私有链:彻底的私有链是指写权限是由一我的或一个单个组织控制的链。私有链的读权限是能够公开的或者是有限度的在必定范围公开的。好比私有链能够用在数据库的管理,公司内部的管理等。
  • 联盟链:联盟链是指,数据一致性的运算被预先设定好的几个节点共同控制的链。好比,有15家银行组成了一个财团链,在这个链上的每个节点的每一次的操做都须要10个节点的共同签名才能被验证。这区快链上的读权限多是公开的,也有多是部分公开的。
  • 虽然私有链和联盟链不会和公有链之间有任何的连接,可是它们一般被当作开发者的开发环境,它们也一样对以太坊区块链生态系统作出着不可估量的贡献。

以太坊查看网络状态github

  •  查看连接状态 
    net.listening true 
    net.peerCount 4
  • 查看本身的伙伴的网络信息 
    admin.peers
  • 查看本身的网络信息 
    admin.nodeInfo 

以太坊加快下载速度web

  • 当以太坊客户端一旦运行,就会自动去下载区块链数据。这下载的速度跟客户端的设置,连接网路的速度,同伴的数量有关。下面是一些能够加快区块链下载速度的选项。
  • 使用geth:
  • 使用geth客户端,你能够在命令行中添加一些选项,能够加快区块链数据的下载速度。你能够在命令行中使用—fast标志,这样客户端就不会保留过去的交易数据。
  • 可是要注意的是,这个参数,只有在你的客户端没有下载任何区块链数据的状况下才能使用。若是你客户端已经下载了一些数据,那这个就不起做用了。
  • 下面是一些具体参数的说明,能够加快你的数据的同步。

 参数说明:数据库

  • --fast

    这个参数会加快同步的速度,而且显著的下降同步的数据的大小。json

  • --cache=1024

    调节内存缓存(单位是M),默认是16M,能够根据本身计算机的状况,适当调大这个值,如256, 512, 1024 (1GB), 或 2048 (2GB)api

  • --jitvm

    开启JIT VM.缓存

  • 整个命令以下面所示的样子:
    geth --testnet --fast --cache=1024 --jitvm console

以太坊静态节点网络

  • 静态节点
  • 若是有一个节点,你一直想要和它保持连接,那么你能够把那个节点配置成你的静态节点
  • 配置方法
    <datadir>/static-nodes.json
  • 把节点信息写入这个文件,格式以下:
     ["enode://f4642fa65af50cfdea8fa7414a5def7bb7991478b768e296f5e4a54e8b995de102e0ceae2e826f293c481b5325f89be6d207b003382e18a8ecba66fbaf6416c0@33.4.2.1:30303", "enode://pubkey@ip:port" ]
  • 使用命令 
    >admin.addPeer("enode://f4642fa65af50cfdea8fa7414a5def7bb7991478b768e296f5e4a54e8b995de102e0ceae2e826f293c481b5325f89be6d207b003382e18a8ecba66fbaf6416c0@33.4.2.1:30303")

以太坊构建本地私有网络cors

  • 在本地私有的测试网络上挖矿,或构建去中心化的应用都要比在公共的测试网络上方便不少。
  • 使用geth命令行工具构建本地私有测试网络须要指定如下参数信息:
    •   自定义genesis文件
    •   自定义数据目录
    •   自定义网络ID
    •   (推荐)关闭节点发现协议
  •  这genesis(创世)区块是区块链的起点,是它的第一块区块,0号区块,惟一一个没有前任的区块。这个协议确保了没有其余节点会和你的节点的区块链版本一致,除非它们的创世区块和你的如出一辙。经过这种方法,你就能够建立任意多的私有区块链。 
CustomGenesis.json :
{
"nonce": "0x0000000000000042", "timestamp": "0x0", "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "extraData": "0x0", "gasLimit": "0x8000000", "difficulty": "0x400", "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000", "coinbase": "0x3333333333333333333333333333333333333333", "alloc": { } }
  • Mixhash:一个256位的哈希值,和nonce配合,一块儿用来证实在区块链上已经作了足够的计算量(工做证实)。这个nonce 和 mixhash 的组成,必须知足一个在黄皮书中所描述的数学上的条件,黄皮书 4.3.4。
  • Nonce:一个64位的哈希值,和mixhash配合,一块儿用来证实在区块链上已经作了足够的计算量(工做证实)
  • Difficulty 定义挖矿的目标,能够用上一个区块的难度值和时间戳计算出来,值越高,矿工越难挖到区块
  • Alloc:预先填入一些钱包和余额
  • Coinbase:160位的钱包地址。在创世区块中能够被定义成任何的地址,由于当每挖到一个区块的时候,这个值会变成矿工的etherbase地址
  • Timestamp:一个unix的time()函数的输出值,时间戳
  • extraData:32字节长度,能够为私有链留下一些信息,如你的姓名等,用以证实这个私有链是你建立的
  • gasLimit:当前链,一个区块所能消耗的gas上限

私有链中会使用到的命令行参数

  • --nodiscover:添加这个参数,确保没有人能发现你的节点。否则的话,可能有人无心中会连接到你的私有区块链。
  • --maxpeers 0:使用maxpeers 0,若是你不但愿其余人链接到您的测试链。固然,您也能够调整这个数,若是你知道有多少同伴会链接你的节点。
  • --rpc:在你的节点上激活RPC接口。这参数在geth中默认启用。
  • --rpcapi "db,eth,net,web3":这个命令描述哪些接口能够经过RPC来访问,默认状况下,geth开启的是web3接口。
  • --rpcport "8080":将端口号设置成8000以上的任何一个你网络中打开的端口。默认是8080。
  • --rpccorsdomain http://chriseth.github.io/browser-solidity/:设置能够链接到你的节点的url地址,以执行RPC客户端的任务。最好不要使用通配符 * ,这样将容许任何url均可以连接到你的RPC实例。
  • --datadir "/home/TestChain1":私有链的数据目录,确保与公共以太坊链的数据目录区分开来。
  • --port "30303":这是“网络监听的端口”,您能够用它手动的和你的同伴相连。
  • --identity "TestnetMainNode":为你的节点设置一个ID。用于和大家的一系列同伴进行区分。

运行geth 依照上面所述,配置好命令行,运行:

Windows:

geth --identity "MyNodeName" --rpc --rpcport "8086" --rpccorsdomain "*" --datadir "C:\chains\TestChain1" --port "30303" --nodiscover --rpcapi "db,eth,net,web3" --networkid 1006 init /path/to/CustomGenesis.json

 

注意:在运行以上命令前,必须在datadir参数指定的目录中先建立一个chaindata目录

运行geth 依照上面所述,配置好命令行,初始化创世区块,运行:

Windows:

geth --identity "MyNodeName" --rpc --rpcport "8086" --rpccorsdomain "*" --datadir "C:\chains\TestChain1" --port "30303" --nodiscover --rpcapi "db,eth,net,web3" --networkid 1006 init /path/to/CustomGenesis.json

 

注意:在运行以上命令前,必须在datadir参数指定的目录中先建立一个chaindata目录

每次,当你想要使用你自定义的私有链时,你都须要先使用geth来运行以上的命令来启动它。

geth --identity "MyNodeName" --rpc --rpcport "8080" --rpccorsdomain "*" --datadir "C:\chains\TestChain1" --port "30303" --nodiscover --rpcapi "db,eth,net,web3" --networkid 1006 console
相关文章
相关标签/搜索