以太坊网络

作者: 磨链社区 | 来源:发表于2018-06-03 08:31 被阅读3次

    网络

    首先有两个网站可以查看以太坊的相关信息:

    Etherchain - The Ethereum Blockchain Explorer

    Ethereum Networks Status

    说到网络先啰嗦下,公有链、联盟链、私有链。

    目前根据准入机制,一般区块链分为公有链、联盟链、私有链三种。类似于云平台,也存在这三种概念。

    那么根据中国区块链技术和应用发展白皮书的解释: 

    公有链:所有互联网上的节点可以自由的加入和退出网络,且参加链上的数据的读写,运行过程中以扁平的拓扑结构互联互通,网络中不存在任何中心化的服务端节点。 

    联盟链:各个节点之间有对应的实体机构组织,通过授权来加入和退出网络,机构间组成组织联盟,共同维护区块链的正常运转。 

    私有链:企业专门搭建的专用链,各个节点的写入权限内部控制,读取权限根据需求选择性放开,私有链多节点运行的通用结构,适用于特定机构的内部数据管理和审计。

    那么三种类型的区块链,核心问题在于访问的开放程度,也可以理解为去中心化、弱中心化、多中心化的程度。公有链,以比特币、以太坊为代表,联盟链以超级账本为代表,R3 CORDA为私有链的代表。

    这里不讨论相关三种类型的具体应用场景,这里简单说下以太坊的网络相关的一些内容:

    首先运行以太坊客户端(一般为Geth),那么就会自动去网络中下载区块链数据。很多人会碰到下载慢。那么这里查看基本网络状态:

    链路状态:

    net.listening true

    net.peerCount 4

    下载过程中网络中节点,一般称为伙伴节点的状态也会有一定的影响。

    节点状态查看:

    admin.peers

    最后查看下自己的网络情况。

    网络状态

    admin.nodeInfo

    检查完这些,以太坊客户端还可以加选项进行快速同步:

    geth --fast

    客户端不保留过去的交易数据,如果客户端没有下载过任何内容那么可以使用这个命令快速下载,如果有过数据,那只能等待。

    还有一个针对内存调节的参数:

    cache=1024,这个参数默认单位是M,默认值为16M,调节这个参数根据机器配置,适当能提速。

    以太坊私有链搭建

    一般会选择搭建以太坊私有链,那么首先初始化创世区块:

    首先需要为私有链定义一个创世状态,使用 JSON 文件定义,例如取名为:genesis.json,内容如下:

    {

      "config": {

            "chainId": 88,

            "homesteadBlock": 0,

            "eip155Block": 0,

            "eip158Block": 0

        },

      "alloc"      : {},

      "coinbase"  : "0x0000000000000000000000000000000000000000",

      "difficulty" : "0x20000",

      "extraData"  : "",

      "gasLimit"  : "0x2fefd8",

      "nonce"      : "0x0000000000000042",

      "mixhash"    : "0x0000000000000000000000000000000000000000000000000000000000000000",

      "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",

      "timestamp"  : "0x00"

    }

    Mixhash:一个256位的哈希值,和nonce配合,一起用来证明在区块链上已经做了足够的计算量。这个nonce 和 mixhash 的组成.

    Nonce:一个64位的哈希值,和mixhash配合,一起用来证明在区块链上已经做了足够的计算量

    Difficulty:定义挖矿的目标,可以用上一个区块的难度值和时间戳计算出来,值越高,矿工越难挖到区块。

    Alloc:预先填入一些钱包和余额。

    Coinbase:160位的钱包地址。在创世区块中可以被定义成任何的地址.区块奖励直接为矿工地址。

    Timestamp :一个unix的time()函数的输出值,时间戳

    extraData :32字节长度,可以为私有链留下一些信息.

    gasLimit :区块所能消耗的gas上限

    保存到任意位置即可。初始区块是区块链的起始 — 第一个区块,区块0,唯一没有指向前面区块的一个区块。协议确保其他连接你的节点必须和你的创世块一致,除非他们和你有相同的初始区块,这样你想创建多少私有测试网区块链,就可以创建多少。

    执行初始化:

    geth  init $HOME/genesis.json

    执行后,将提示成功初始化创世区。

    WARN [03-10|17:50:20] No etherbase set and no accounts found as default

    INFO [03-10|17:50:20] Allocated cache and file handles        database=/Users/.../Library/Ethereum/geth/chaindata cache=16 handles=16

    INFO [03-10|17:50:20] Writing custom genesis block

    INFO [03-10|17:50:20] Successfully wrote genesis state        database=chaindata                                  hash=5e1fc7…d790e0

    INFO [03-10|17:50:20] Allocated cache and file handles        database=/Users/.../Library/Ethereum/geth/lightchaindata cache=16 handles=16

    INFO [03-10|17:50:20] Writing custom genesis block

    INFO [03-10|17:50:20] Successfully wrote genesis state        database=lightchaindata                                  hash=5e1fc7…d790e0

    相关命令:

    nodiscover--简单来说不让别人发现你。

    maxpeers 参数--控制被人链接你的测试链。

    rpc--激活RPC

    rpcport 端口--指定端口号,默认为8080

    rpccorsdomain 地址--指定url连接。

    port 端口号--制定监听端口。

    datadir 目录--数据目录,一般用于和公链目录分开。

    identity 名字--为节点设置一个ID号。

    相关文章

      网友评论

        本文标题:以太坊网络

        本文链接:https://www.haomeiwen.com/subject/srodsftx.html