一.搭建私有以太坊网络,纯干货

前言

操作系统: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 邮箱

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值