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


    目录

    一、简介

    二、知识点

    智能合约

    以太坊私网

    创世区块

    部署以太坊私网

    启动以太坊节点

    三、菜鸟实战

    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

    进入管理台

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

  • 相关阅读:
    统计学入门:时间序列分析基础知识详解
    SpringMVC-针对处理器中的参数提供了许多参数解析器
    vue+element使用阿里的图标库保存图标
    Docker面试题大全整理
    理论修炼---JVM之内存结构
    Vue的详细教程--入门
    BVH动捕文件导入到E3D骨骼树
    不受约束的bimap双图的测试程序
    详解3dMax中渲染线框的两种简单方法
    大模型日报2024-06-15
  • 原文地址:https://blog.csdn.net/qq_39816613/article/details/125599284