美文网首页智能合约开发
【区块链基础03】-以太坊生产网络、测试网络、私有网络 Geth

【区块链基础03】-以太坊生产网络、测试网络、私有网络 Geth

作者: Geeks_Chen | 来源:发表于2018-01-31 17:29 被阅读183次

    一、以太坊的官方网络

    A.生产网络
    B.测试网络 TestNet
    C.以太坊私有网络 PrivateNetwork

    以太坊生产网络

    以太坊的生产网络,就是产生真正价值的以太币的网络。目前生产网络已经生成了300万以上的区块,还在持续生成中。挖矿挖出来的每个以太币在10美元以上。截图如下


    p11.png

    优点:
    1.全球化,部署在Internet环境上;
    2.智能合约的代码,执行,区块的调用,都可以清晰的查看;
    3.部署在生产环境上的智能合约,全世界任何应用都可以调用。

    缺点:
    1.任何合约执行都会消耗真实的以太币,也就是真实的现金。不适合开发,调试和测试;
    2.所有节点是全球化的,速度较慢;
    3.对于部分商业应用来说,只需要一部分节点,例如分布式部署在10-20台服务器即可。而不需要遍布全球的网络。

    以太坊测试网络 TestNet

    以太坊测试网络是官方提供的,顾名思义就是专门供用户开发、调试和测试的。上面的合约执行不消耗真实的以太币。不需要现金。

    如果业务需求是开发简单的智能合约的话,测试网络就足够了,用户可以把更多的精力集中在智能合约的编写上。

    因为网络是官方提供的,对于以太坊技术的底层实现、Geth的各种参数接口、整个以太坊的技术真实性能的理解就会弱很多。所以从开发的角度来说,一个更好的选择是Private Network,可以从技术的底层去深入理解以太坊。

    优点:
    1.合约执行不消耗真实的货币;
    2.全球化,部署在Internet环境上;
    3.智能合约的代码,执行,区块的调用,都可以清晰的查看到;
    4.部署在测试环境上的智能合约,全世界任何应用都可以调用。

    缺点:
    1.所有节点都是全球化的,速度较慢;
    2.测试网络不可能作为商业应用的实际落地环境。

    以太坊私有网络 PrivateNetwork

    以太坊的私有网络,顾名思义就是由用户自己提供Geth创建的私有网络,是一个非常适合开发、调试和测试的网络

    优点:
    1.方便开发者深入理解以太坊的底层技术;
    2.因为节点相对较少,速度较快;
    3.用户可以随时创建,随时销毁,随时重建一个以太坊网络;
    4.随意的增加节点数目或者删除节点;
    5.既可以在服务器上建立,也可以在自己的window或者mac机器上建立;
    6.甚至一台机器可以建立多个节点,在一台机器上实现多节点的私有网络。

    缺点:
    1.因为不是全球化的,只有在私有网络内的节点才能查看智能合约的执行。调用。

    二、搭建私有网络(Geth在Mac下的实战)

    step1:建立目录和genesis.json
    在命令行模式创建一个目录,例如tmpPrivate


    p21.png

    在sublime中创建文件genesis.json,并填入一下内容
    {
    "nonce": "0x0000000000000042",
    "timestamp": "0x0",
    "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
    "extraData": "0x0",
    "gasLimit": "0x80000000",
    "difficulty": "0x1",
    "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
    "coinbase": "0x3333333333333333333333333333333333333333",
    "alloc": { }
    }
    如图:


    p31.png

    step2:执行命令,创建创世区块链
    切换为命令行,执行命令,创建创世区块链
    geth --datadir "./" init genesis.json
    执行结果:


    p41.png

    这个时候可以看到,当前目录下边会新增出两个文件夹geth和keystore
    geth中保存的是区块链的相关数据
    keystore中保存的是该链条中的用户信息
    此时的目录结构如下:


    p51.png

    step3:创建自己的私有链条
    执行一条最简单的geth命令,来创建自己的私有链条
    geth --datadir "./" --nodiscover console 2>>geth.log
    运行结果如图:


    p61.png

    step4:在自己的私有链条上创建用户
    输入命令eth.accounts,我们会发现返回值为[]
    这是因为此时虽然以太坊的私有链条已经被创造出来,但还没有任何账户。
    输入命令personal.newAccount("Geek"),该命令将会创造一个新用户,该用户的密码是Geek。
    再次输入命令eth.accounts,我们发现一个新用户被创建了出来,这就代表我们已经创建了一个账户,重复personal.newAccount()&eth.accounts 我们可以创建若干个账户出来。
    命令行截图如下:


    p71.png

    step5:输出区块链Log
    在step3中,我们执行的代码
    geth --datadir "./" --nodiscover console 2>>geth.log
    其中的代码console 2>>geth.log 代表将控制台的一部分输出,输出到文件geth.log上去。
    打开另一个终端,找到geth.log的所在目录,执行命令 tail -f geth.log 从而持续的输出以太坊的日志。
    命令行截图:


    p81.png

    step6:开始挖矿
    在命令行中执行miner.start(),开始在我们的区块链上进行挖矿


    p9.png

    此时Geth.log 的输出:


    p10.png

    一直等到100%,这个以太坊私有链就会正式启动,并持续不断的生成以太坊。

    注意点:

    1.挖矿挖到的ether币会默认保存在第一个账户中,即eth.accounts[0]中;
    2.挖矿是执行职能合约的基础。如果停止挖矿的话,不仅以太币会停止生成,所有职能合约的调用也会不起作用了;
    3.如果真要停止挖矿,可以执行命令miner.stop()来停止挖矿;
    4.按上面的命令,应该是可以实现以太坊挖矿的,如果不行的话,有可能就是之前有存在的链,此时应该删除之前的数据。在Mac下删除:~/.ethash 文件夹和里边的文件即可。

    step7:最终当挖矿启动的时候日志是这样的


    p111.png

    step8:挖矿启动后,查看主账户的以太币
    acc0 = eth.accounts[0]
    eth.getBalance(acc0)
    只要结果不为0,那就说明挖矿成功


    p12-1.png

    参照资料:http://www.8btc.com/eth-privatenetwork-testnet

    相关文章

      网友评论

        本文标题:【区块链基础03】-以太坊生产网络、测试网络、私有网络 Geth

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