美文网首页
以太坊学习之路

以太坊学习之路

作者: 佐筱猪 | 来源:发表于2018-03-04 15:57 被阅读18次

    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 是智能合约)

    命令行语法

    相关文章

      网友评论

          本文标题:以太坊学习之路

          本文链接:https://www.haomeiwen.com/subject/dhoffftx.html