基于区块链的云笔记小程序开发(一)

时间:2024-03-04 08:40:26

 

 今天主要任务:

  1. 本地搭建私有链

  2. 启动私有链

  3. 进入私有链控制台

 

 

1. 本地搭建私有链

⚠️注意:本文针对的mac os操作系统下

安装geth

 

geth是go-ethereum的简写,以太坊智能合约常用的命令行工具。

如果没有安装brew,请先安装brew,打开终端terminal并输入:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

mac通过brew包管理工具下载:

brew tap ethereum/ethereum
brew install ethereum

具体见官方文档:https://github.com/ethereum/go-ethereum/wiki/Installation-Instructions-for-Mac

安装完成后,在终端terminal输入:

geth -h

出现下面结果,就说明安装成功:

NAME:
   geth - the go-ethereum command line interface

   Copyright 2013-2018 The go-ethereum Authors

USAGE:
   geth [options] command [command options] [arguments...]
   
VERSION:
   1.8.27-stable
   
COMMANDS:
   account           Manage accounts
   attach            Start an interactive JavaScript environment (connect to node)
...
...

geth也装好了,可以开始后续的步骤了。

 

初始化创始区块

1. 为了方便操作,我在桌面新建一个文件夹privatechain,用来存放私有链节点node1

node1所在的位置:

/Users/xxxx/Desktop/privatechain/node1

⚠️这里的xxxx是自己电脑用户名称

2. 在node1中创建 genesis.json文件,并将下面内容写入后保存:

{
  "config": {
        "chainId": 10,
        "homesteadBlock": 0,
        "eip155Block": 0,
        "eip158Block": 0
    },
  "alloc"      : {},
  "coinbase"   : "0x0000000000000000000000000000000000000000",
  "difficulty" : "0x20000",
  "extraData"  : "",
  "gasLimit"   : "0x2fefd8",
  "nonce"      : "0x0000000000000042",
  "mixhash"    : "0x0000000000000000000000000000000000000000000000000000000000000000",
  "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
  "timestamp"  : "0x00"
}

3. 初始化

打开terminal,进入到node1中,开始初始化创始区块:

cd /Users/xxxx/Desktop/privatechain/node1
geth init ./genesis.json  --datadir ./

初始化完成,node1下会生成geth和keystore两个文件夹

  • geth:保存链上的区块数据
  • keystore:保存链上的账户信息

 

2. 启动私有链

通过终端terminal进入node1,启动私有链:

cd /Users/xxxx/Desktop/privatechain/node1
geth --identity "node1" --rpc --rpcport 1111 --rpccorsdomain "*" --datadir "./" --port 6666  --ipcpath "geth/geth1.ipc" --networkid 10 --rpcapi eth,web3,admin,personal,net --ethash.dagdir=./geth/ethash

关于参数:

--identity "node1"                自定义节点名node1

--rpc                      启用HTTP-RPC服务器

--rpcport 1111                 设置HTTP-RPC服务器监听端口1111(默认值:8545)
--rpccorsdomain "*"              允许跨域请求的域名列表(逗号分隔)(浏览器强制) 
--datadir "./"                  存放数据库和keystore密钥的数据目录
--port 6666                   设置网卡监听端口6666(默认值:30303)
--ipcpath "geth/geth1.ipc"         包含在datadir里的IPC socket/pipe文件名(转义过的显式路径)
--networkid 10                 网络标识符(整型, 1=Frontier, 2=Morden (弃用), 3=Ropsten, 4=Rinkeby) (默认: 1)

--rpcapi eth,web3,admin,personal,net   基于HTTP-RPC接口提供的API 
--ethash.dagdir=./geth/ethash        存ethash DAGs目录 (默认 = 用户hom目录)

成功启动私有链:

INFO [06-03|21:46:50.366] Maximum peer count                       ETH=25 LES=0 total=25
INFO [06-03|21:46:50.380] Starting peer-to-peer node               instance=Geth/node1/v1.8.27-stable/darwin-amd64/go1.12.4
INFO [06-03|21:46:50.380] Allocated cache and file handles         database=/Users/xxxx/Desktop/privatechain/node1/geth/chaindata cache=512 handles=5120
INFO [06-03|21:46:50.412] Initialised chain configuration          config="{ChainID: 10 Homestead: 0 DAO: <nil> DAOSupport: false EIP150: <nil> EIP155: 0 EIP158: 0 Byzantium: <nil> Constantinople: <nil>  ConstantinopleFix: <nil> Engine: unknown}"
INFO [06-03|21:46:50.412] Disk storage enabled for ethash caches   dir=/Users/woshinixxk/Desktop/privatechain/geth/ethash count=3
INFO [06-03|21:46:50.412] Disk storage enabled for ethash DAGs     dir=geth/ethash                                        count=2
INFO [06-03|21:46:50.412] Initialising Ethereum protocol           versions="[63 62]" network=10
...
...

 

3. 进入私有链控制台

 保持上面的已启动好的私有链,另外再打开一个终端

 通过终端terminal进入node1节点,并输入命令进入控制台:

geth attach geth/geth1.ipc

新建一个账户:

personal.newAccount(\'123456\')

123456是账户的密码

控制台返回的内容就是账户地址

有了账户后,就可以开始挖矿了:

miner.start()

 

未完待续~