当前位置:首页 » 《随便一记》 » 正文

一.搭建私有以太坊网络,纯干货_京保的博客

8 人参与  2021年11月07日 09:43  分类 : 《随便一记》  评论

点击全文阅读


文章目录

  • 前言
  • 一,为什么用到私有链
  • 二,需要安装的开源工具和语言
  • 三,建立私链
    • 初始化创世纪节点,并设置data目录
      • 创建创世区块配置文件genesis.json文件
      • 通过genesis.json初始化创世纪节点,并设置data目录:
      • 使用geth加载
    • web3.js常用操作命令
      • 获取当前所有账户
      • 创建账户
      • 挖矿
      • 账户划转
      • 查看当前待办
  • 下一篇文章 02.私有以太坊网络部署智能合约

前言

操作系统:MacBook Pro (16-inch, 2019)
Geth Version: 1.10.8-stable

一,为什么用到私有链

在以太坊的公有链上部署智能合约,发起交易需要花费以太币。而通过修改配置,可以在本机搭建一套以太坊私有链,因为与公有链没关系,即不同步公有链庞大的数据,也不用花钱购买以太币,很好地满足了智能合约开发和测试的要求,开发好的智能合约也可以很容易地切换接口部署到以太坊公有链上。

二,需要安装的开源工具和语言

    1. install Go compiler
brew install go
  • 2.Ethereum节点安装
brew tap ethereum/ethereum

brew install ethereum
    1. solidit以太坊智能合约语言
brew install solidity

三,建立私链

初始化创世纪节点,并设置data目录

创建创世区块配置文件genesis.json文件

genesis.json 是Geth 工具用来创建创世区块以及区块链的配置文件,genesis.json 并不是创世区块本身

{
  "config": {
    "chainId": 666,
    "homesteadBlock": 0,
    "eip150Block": 0,
    "eip150Hash": "0x0000000000000000000000000000000000000000000000000000000000000000",
    "eip155Block": 0,
    "eip158Block": 0,
    "byzantiumBlock": 0,
    "constantinopleBlock": 0,
    "petersburgBlock": 0,
    "istanbulBlock": 0,
    "ethash": {}
  },
  "nonce": "0x0",
  "timestamp": "0x5ddf8f3e",
  "extraData": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "gasLimit": "0x47b760",
  "difficulty": "0x00002",
  "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "coinbase": "0x0000000000000000000000000000000000000000",
  "alloc": { },
  "number": "0x0",
  "gasUsed": "0x0",
  "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000"
}


通过genesis.json初始化创世纪节点,并设置data目录:

geth init "/Users/jingbao/IdeaProjects/smart-contract/privateDemo/genesis.json" --datadir "/Users/jingbao/IdeaProjects/smart-contract/privateDemo/data2"

/Users/jingbao/IdeaProjects/smart-contract/privateDemo/genesis.json 这是我存放genesis.json,别忘了更换你的地址

使用geth加载

geth --datadir "/Users/jingbao/IdeaProjects/smart-contract/privateDemo/data2" --ws --ws.api "eth,web3,miner,admin,personal,net,txpool" --ws.origins "*" --rpc --rpcapi "eth,web3,miner,admin,personal,net,txpool" --rpcport "8545" --rpccorsdomain "*" --nodiscover --networkid 15 --allow-insecure-unlock --ipcpath ~/Library/Ethereum/geth.ipc

摘要其中几个参数讲解:

  • –identity :指定节点ID;
  • –rpc :表示开启HTTP-RPC服务;
  • –rpcaddr :HTTP-RPC服务ip地址;
  • –rpcport :指定HTTP-RPC服务监听端口号(默认8545);
  • –datal :指定区块链数据的储存位置;
  • –port :指定和其他节点连接所用的端口号(默认为30303);
  • –nodiscover :关闭节点发现机制,防止加入有同样初始配种的陌生节点;

具体看官方文档

命令是以服务的形式持续运行的,需要再打开一个命令行窗口,输入

geth attach rpc:~/Library/Ethereum/geth.ipc

这是一个交互式的JavaScript执行环境,在这里面可以执行JavaScript代码,其中>是命令提示符,在这个环境里也内置里一些用来操作以太坊的JavaScript对象,可以直接使用这些对象,这些对象主要包括:

web3.js常用操作命令

web3.js 中文文档

获取当前所有账户

> eth.accounts
["0x88d2a3c6575dc35e9014fd13f530dd326b254399", "0xa22be3a54be02c0a57bc23af3295099a0a06e2ab", "0xdd482f7cc5a3ced6a29bed498309f4d0ebad39f4"]

或者

> personal.listAccounts
["0x88d2a3c6575dc35e9014fd13f530dd326b254399", "0xa22be3a54be02c0a57bc23af3295099a0a06e2ab", "0xdd482f7cc5a3ced6a29bed498309f4d0ebad39f4"]

创建账户

personal.newAccount("my pasword")
  • 查看余额
eth.getBalance(eth.accounts[0])

等价于

eth.getBalance("0x88d2a3c6575dc35e9014fd13f530dd326b254399")

挖矿

  • 挖矿

开始挖矿

miner.start();

停止挖矿

miner.stop();

账户划转

  • 解锁账户
personal.unlockAccount(eth.accounts[0])

输入密码按回车即可

  • ether转换成wei
amount = web3.toWei(1,"ether")
eth.sendTransaction({from:personal.listAccounts[0],to:personal.listAccounts[1],value:amount})

查看当前待办

txpool.status

eth.getBlock("pending")

下一篇文章 02.私有以太坊网络部署智能合约

第二章:私有以太坊网络部署智能合约
点赞关注订阅持续更新

点击关注订阅持续更新

点击关注订阅持续更新

有问题或文章有需要改正的地方请留言
或 pwn2ownyearn@gmail.com 邮箱


点击全文阅读


本文链接:http://zhangshiyu.com/post/30583.html

以太  节点  区块  
<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1