• 【区块链实战】如何搭建以太网智能合约私网


    目录

    一、简介

    二、知识点

    智能合约

    以太坊私网

    创世区块

    部署以太坊私网

    启动以太坊节点

    三、菜鸟实战

    1、配置创世区块

    2、数据初始化

    3、启动节点


    一、简介

    私网是由开发者自行组建的网络,不与主网和测试网相通,独立存在,主要用于个人测试或企业项目使用。

    二、知识点

    • 智能合约

    • 以太坊私网

    • 创世区块

    • 部署以太坊私网

    • 启动以太坊节点

    三、菜鸟实战

    实战场景:搭建以太坊智能合约私网。

    1、配置创世区块

    1. {
    2. "config": {
    3. "chainId": 15,
    4. "homesteadBlock": 0,
    5. "eip150Block": 0,
    6. "eip155Block": 0,
    7. "eip158Block": 0
    8. },
    9. "alloc" : {},
    10. "coinbase" : "0x0000000000000000000000000000000000000000",
    11. "difficulty" : "0x2",
    12. "extraData" : "",
    13. "gasLimit" : "0xffffffff",
    14. "nonce" : "0x0000000000000042",
    15. "mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
    16. "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
    17. "timestamp" : "0x00"
    18. }

    参数说明如下:

    参数说明

    config

    项是定义链配置,会影响共识协议,虽然链配置对创世影响不大,但新区块的出块规则均依赖链配置

    config.chainId

    网络ID,私网任意配置

    coinbase

    挖矿后获得奖励的账户地址
    difficulty挖矿难度
    gasLimit

    一个区块所能容纳的 gas 上限

    nonce随机值
    mixhash256位哈希证明,与 nonce 结合,验证当前区块的有效性
    extraData自定义附加信息
    parentHash

    前一块的 hash 值,因为是创世区块,所以为 0

    timestampUTC时间戳
    alloc创世中初始账户资产配置。在生成创世区块时,将此数据集中的账户资产写入区块中。 

    2、数据初始化

    geth init genesis.json --datadir ./data

    初始化成功后 data 目录会有一些文件生成,具体如下:

    1. data
    2. ├── geth
    3. │   ├── chaindata
    4. │   │   ├── 000001.log
    5. │   │   ├── ancient
    6. │   │   │   ├── bodies.0000.cdat
    7. │   │   │   ├── bodies.cidx
    8. │   │   │   ├── bodies.meta
    9. │   │   │   ├── diffs.0000.rdat
    10. │   │   │   ├── diffs.meta
    11. │   │   │   ├── diffs.ridx
    12. │   │   │   ├── FLOCK
    13. │   │   │   ├── hashes.0000.rdat
    14. │   │   │   ├── hashes.meta
    15. │   │   │   ├── hashes.ridx
    16. │   │   │   ├── headers.0000.cdat
    17. │   │   │   ├── headers.cidx
    18. │   │   │   ├── headers.meta
    19. │   │   │   ├── receipts.0000.cdat
    20. │   │   │   ├── receipts.cidx
    21. │   │   │   └── receipts.meta
    22. │   │   ├── CURRENT
    23. │   │   ├── LOCK
    24. │   │   ├── LOG
    25. │   │   └── MANIFEST-000000
    26. │   ├── lightchaindata
    27. │   │   ├── 000001.log
    28. │   │   ├── ancient
    29. │   │   │   ├── bodies.0000.cdat
    30. │   │   │   ├── bodies.cidx
    31. │   │   │   ├── bodies.meta
    32. │   │   │   ├── diffs.0000.rdat
    33. │   │   │   ├── diffs.meta
    34. │   │   │   ├── diffs.ridx
    35. │   │   │   ├── FLOCK
    36. │   │   │   ├── hashes.0000.rdat
    37. │   │   │   ├── hashes.meta
    38. │   │   │   ├── hashes.ridx
    39. │   │   │   ├── headers.0000.cdat
    40. │   │   │   ├── headers.cidx
    41. │   │   │   ├── headers.meta
    42. │   │   │   ├── receipts.0000.cdat
    43. │   │   │   ├── receipts.cidx
    44. │   │   │   └── receipts.meta
    45. │   │   ├── CURRENT
    46. │   │   ├── LOCK
    47. │   │   ├── LOG
    48. │   │   └── MANIFEST-000000
    49. │   ├── LOCK
    50. │   └── nodekey
    51. └── keystore
    52. 6 directories, 44 files

    3、启动节点

    geth --datadir ./data --networkid 15  --http --http.addr 0.0.0.0 --http.vhosts "*" --http.api "db,net,eth,web3,personal" --http.corsdomain "*" --snapshot  --allow-insecure-unlock  console 2> 1.log
    参数说明

    datadir

    初始化的数据目录文件

    networkid

    加入的网络ID, 与 config.chainId 值相同

    port

    节点之间 P2P 通信端口

    http

    开启远程调用

    httpport

    rpc 端口,默认 8545

    httpcorsdomain

    可接受请求来源的域名列表

    console

    进入管理台

    至此,节点启动成功,后续就可以准备智能合约的开发了。

  • 相关阅读:
    算法通关村第二关-白银挑战反转链表拓展问题
    一个程序员的水平能差到什么程度?
    【VCSA 8】安装vCenter Server Appliance(VCSA) 8.0
    LCD12864 (Sitronix ST7920) 4-Bits Mode 初始失败
    linux服务器配置openssl
    博流RISC-V芯片BL616开发环境搭建
    Python生成随机数字/字符
    鸿蒙列表,类似于安卓的RecyclerView
    《软件方法》自测题解析-006:误以为是业务建模
    C/C++结构体使用总结
  • 原文地址:https://blog.csdn.net/qq_39816613/article/details/125599284