• 以太坊私有链POA模式


    1.创建目录

    mkdir devnet

    cd devnet

    mkdir node1 node2

    2.创建账户

    geth --datadir node1/ account new

    geth --datadir node2/account new

    把两个节点的地址和密码都分别写在文件里,以后后面使用.

    echo 'node1_addr' >> account.txt

    echo 'node2_addr' >> account.txt

    echo 'password1' >> node1/password.txt

    echo 'password2' >> node2/password.txt

    3.创建genesis.json文件

    使用geth自带的工具puppeth来创建:

     devnet$ puppeth

    根据提示填写信息(后面操作中可以更改里面的信息)

    Please specify a network name to administer (no spaces, please)
    > devnet
    What would you like to do? (default = stats)
     1. Show network stats
     2. Configure new genesis
     3. Track new remote server
     4. Deploy network components
    > 2
    Which consensus engine to use? (default = clique)
     1. Ethash - proof-of-work
     2. Clique - proof-of-authority
    > 2
    How many seconds should blocks take? (default = 15)
    > 5 // for example
    Which accounts are allowed to seal? (mandatory at least one)
    > 0x87366ef81db496edd0ea2055ca605e8686eec1e6 //copy paste from account.txt :)
    > 0x08a58f09194e403d02a1928a7bf78646cfc260b0
    Which accounts should be pre-funded? (advisable at least one)
    > 0x87366ef81db496edd0ea2055ca605e8686eec1e6 // free ethers !
    > 0x08a58f09194e403d02a1928a7bf78646cfc260b0
    Specify your chain/network ID if you want an explicit one (default = random)
    > 1515 // for example. Do not use anything from 1 to 10
    Anything fun to embed into the genesis block? (max 32 bytes)
    >
    What would you like to do? (default = stats)
     1. Show network stats
     2. Manage existing genesis
     3. Track new remote server
     4. Deploy network components
    > 2
    1. Modify existing fork rules
     2. Export genesis configuration
    > 2
    Which file to save the genesis into? (default = devnet.json)
    > genesis.json
    INFO [01-23|15:16:17] Exported existing genesis block
    What would you like to do? (default = stats)
     1. Show network stats
     2. Manage existing genesis
     3. Track new remote server
     4. Deploy network components
    > ^C // ctrl+C to quit puppeth

    注:PoA是没有挖矿奖励的,所以在初始化的时候要给账户存一些余额.

    4.初始化节点

    geth --datadir node1/ init genesis.json

    geth --datadir node2/ init genesis.json

    5.创建一个bootnode

    bootnode的作用是路由功能,可以发现网络中的节点.

    初始化:

    devnet$ bootnode -genkey boot.key

    6.开始运行bootnode服务:

    devnet$ bootnode -nodekey boot.key -verbosity 9 -addr :30310
    INFO [02-07|22:44:09] UDP listener up                          self=enode://3ec4fef2d726c2c01f16f0a0030f15dd5a81e274067af2b2157cafbf76aa79fa9c0be52c6664e80cc5b08162ede53279bd70ee10d024fe86613b0b09e1106c40@[::]:30310

    7.运行节点:

    启动node1:

    devnet$ geth --datadir node1/ --syncmode 'full' --port 30311 --rpc --rpcaddr 'localhost' --rpcport 8501 --rpcapi 'personal,db,eth,net,web3,txpool,miner,net' --bootnodes 'enode://3ec4fef2d726c2c01f16f0a0030f15dd5a81e274067af2b2157cafbf76aa79fa9c0be52c6664e80cc5b08162ede53279bd70ee10d024fe86613b0b09e1106c40@127.0.0.1:30310' --networkid 1515 --gasprice '1' -unlock '0x87366ef81db496edd0ea2055ca605e8686eec1e6' --password node1/password.txt --mine

    启动node2:

    devnet$ geth --datadir node2/ --syncmode 'full' --port 30312 --rpc --rpcaddr 'localhost' --rpcport 8502 --rpcapi 'personal,db,eth,net,web3,txpool,miner,net' --bootnodes 'enode://3ec4fef2d726c2c01f16f0a0030f15dd5a81e274067af2b2157cafbf76aa79fa9c0be52c6664e80cc5b08162ede53279bd70ee10d024fe86613b0b09e1106c40@127.0.0.1:30310' --networkid 1515 --gasprice '0' --unlock '0x08a58f09194e403d02a1928a7bf78646cfc260b0' --password node2/password.txt --mine

     linux连接控制台

    geth attach ipc:node1/geth.ipc

    personal.newAccount('123')
    personal.unlockAccount("0x874e4dbb4d59f169a3ae7721bee2b6e4a83a6e40")
    eth.sendTransaction({from: "0x04b7dcf7b8597d3840c47f92dce4742c328f5b71" , to: "0x874e4dbb4d59f169a3ae7721bee2b6e4a83a6e40", value: web3.toWei(1,"ether")})

    windows下

    init

    geth.exe --datadir D:Ethereum_poa init D:Ethereum_poagenesis.json

    启动

    geth --datadir D:Ethereum_poa  --rpc  --rpcapi 'personal,db,eth,net,web3,txpool,miner,net' --bootnodes 'enode://b14e81038fe9bf1fbd45a8d35379bc809758cbe9435099f43df866ae91431738493b273e412efba5ea8c5caeac7a310635411ed2186c0dc02a256e3dbc46742b@192.168.0.15:30310' --networkid 1515

    启动钱包

    Mist.exe

    增加投票者(51%的客户端执行才能成功,当然实验是2个)

    clique.propose('0x9cb46092339a5c89825710b4800Ba96dbf105988',true)

  • 相关阅读:
    ios数据处理 简单文件处理
    ios硬件开发 照相机图像选取器(UIImagePickerController)的用法
    ios UI设计与开发 卷动视图
    ios数据处理 使用SQLite保存学生信息
    ios数据处理 Application preferfences
    ios数据处理 SQLite基本知识
    GDI+ 为了阴影和透明,使用双层窗口遇到的一些问题
    MFC CToolTipCtrl 总是显示
    遍历删除文件夹及文件
    WebService远程调试
  • 原文地址:https://www.cnblogs.com/ahuo/p/9364958.html
Copyright © 2020-2023  润新知