以太坊学习之路

1.安装

1.安装rvm
2.更新ruby

rvm list known 查看列表
rvm install 2.4.1 --disable-binary
rmv use 2.4.1 --default 使用哪个版本

更新时发现brew需要更新,由于网络原因一直无法更新,一直卡到git clone xxxx 这一步
不知道是不是因为网络突然灵光或者是自己乱操作,成功了。自己乱操作如下

进入到/usr/local/HomeBrew目录下
调用 git clone xxxx 后面加上--depth 1。

3.安装geth

brew tap ethereum/ethereum
brew install ethereum

又遇到安装不成功的问题,依然卡到git clone(从源码安装也不好使)

git clone https://github.com/ethereum/go-ethereum
brew install go
cd go-ethereum
make geth

然后更了一宿加一个上午,终于成功了。
4.测试

geth version

输出如下。成功

Geth
Version: 1.8.1-stable
Architecture: amd64
Protocol Versions: [63 62]
Network Id: 1
Go Version: go1.10
Operating System: darwin
GOPATH=
GOROOT=/usr/local/opt/go/libexec

2.搭建私有链

1.创建测试文件夹

mkdir test

2.创建创世配置文件genesis.json

{
  "coinbase"   : "0x0000000000000000000000000000000000000001",
  "difficulty" : "0x400",
  "extraData"  : "",
  "gasLimit"   : "4712388",
  "nonce"      : "0x0000000000000042",
  "mixhash"    : "0x0000000000000000000000000000000000000000000000000000000000000000",
  "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
  "timestamp"  : "0x00",
  "alloc": {},
  "config": {
        "chainId": 15,
        "homesteadBlock": 0,
        "eip155Block": 0,
        "eip158Block": 0
    }
}

对应含义(不知道什么原因,用这个json ,不会生成account。第一次生成时用的其他json,会自动生成一个account(不知道是不是json,但是着急没有对比)。)

config.chainId // 以太链的ID,用来唯一标记一条以太链
coinbase // 矿工账号,第一个区块挖出后将给这个矿工账号发送奖励
difficulty // 难度值,越大越难
extraData // 附加信息随便填
gasLimit // gas 的消耗总量限制,用来限制区块能包含的交易信息总和,因为我们是私有链,所以填最大
nonce // 一个 64 位随机数
mixhash // 与 nonce 配合用于挖矿,由上一个区块的一部分生成的 hash
parentHash // 上一个区块的 hash 值
alloc // 预设账号以及账号的以太币数量,这里不做配置

3.创建数据存放地址并初始化创世块

geth  --datadir "创世块的路径(data0)" init genesis.json
–datadir 代表文件夹地址,
–nodiscover 代表该链条不希望被其他节点发现,
console 2>> geth.log 代表将控制台输出到文件geth.log中去
console 启动命令行模式,可以在Geth中执行命令

初始化成功后,会在数据目录data0中生成geth和keystore两个文件夹,此时目录结构如下:

test
├── data0
│   ├── geth
│   │   └── chaindata
│   │       ├── 000002.ldb
│   │       ├── 000003.log
│   │       ├── CURRENT
│   │       ├── LOCK
│   │       ├── LOG
│   │       └── MANIFEST-000004
│   └── keystore
└── genesis.json

启动命令行

geth --identity "newEth" --rpc --rpccorsdomain "*" --datadir "enode1" --port 30303 --rpcapi "personal,db,net,eth,web3" --networkid 999 --rpcport 8080 console

启动另一个接点

geth --datadir "enode2" init genesis.json
geth --identity "newEth" --rpc --rpccorsdomain "*" --datadir "enode2" --port 30304 --rpcapi "personal,db,net,eth,web3" --networkid 999 --rpcport 8081 console

注意,两个节点不同的地点在datadir,port,rpcport。因为我们是在同一个计算机上运行两个节点,所以datadir,port,rpcport必须不同,如果不是在同一个计算机上则无所谓。

3.命令行语法

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

eth:包含一些跟操作区块链相关的方法
net:包含以下查看p2p网络状态的方法
admin:包含一些与管理节点相关的方法
miner:包含启动&停止挖矿的一些方法
personal:主要包含一些管理账户的方法
txpool:包含一些查看交易内存池的方法
web3:包含了以上对象,还包含一些单位换算的方法
admin.peers   查看所有节点,返回一个数组

在1节点 添加二节点
admin.addPeer('')节点的地址 endoe://xxxx@ip:端口
例如

admin.addPeer('enode://6b944fdc0a3460977e67682428b29cec7b28a400a2a5c3ef6b56673eb9f4abc8fe7316018c2073e43569ec63e6542eb7dc8b23cc93f397bc41a1f077b8cec6e4@[::]:30304')

再次查看
admin.peers


两节点已经添加到一个链上了

支持tab快速编辑

参考及后续学习地址
geth语法

从零开始以太坊区块链开发指南一(已学习完,后续待学习。2和3 是智能合约)

命令行语法

你可能感兴趣的:(以太坊学习之路)