Ethereum 私有链和 web3.js 使用

作者: 老码农不上班 | 来源:发表于2016-11-07 21:07 被阅读14351次

    安装以太坊客户端(Geth)

    sudo apt-get install software-properties-common
    sudo add-apt-repository -y ppa:ethereum/ethereum
    sudo apt-get update
    sudo apt-get install ethereum
    

    安装进程管理工具

    pm2 需要 node 环境

    //nvm install node
    curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.32.1/install.sh | bash
    export NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/mirrors/node
    source ~/git/nvm/nvm.sh
    nvm install 7
    
    //npm install -g pm2
    source ~/.bashrc
    export npm_config_registry=https://registry.npm.taobao.org
    

    启动 geth 配置文件

    ~/geth.json
    [
      {
        "name"              : "geth",
        "cwd"               : "/usr/bin/",
        "script"            : "geth",
        "args"              : "--rpcapi eth,web3 --rpc --dev --datadir /home/username/geth_private_data",
        "log_date_format"   : "YYYY-MM-DD HH:mm Z",
        "out_file"      : "/home/username/geth_private_data/log/geth_out.log",
        "error_file"    : "/home/username/geth_private_data/log/geth_err.log",
        "log_file"      : "/home/username/geth_private_data/log/geth_log.log",
        "merge_logs"        : false,
        "watch"             : false,
        "max_restarts"      : 10,
        "exec_interpreter"  : "none",
        "exec_mode"         : "fork_mode"
      }
    ]
    

    执行 pm2 start geth.json 即可启动 geth
    另外如果不想使用 pm2 ,直接启动私有链请查看下面这种方式:

    1. 新建一个 shell 脚本文件
    ~/geth_private.sh
    #!/bin/bash
    geth=${GETH:-geth}
    $geth --datadir data --networkid 31415926 --rpc --rpcapi "admin,debug,eth,miner,net,personal,shh,txpool,web3" rpcaddr "0.0.0.0" --rpccorsdomain "*" --nodiscover console
    
    1. 更改文件属性问可执行
    chmod +x geth_private.sh
    
    1. 三种方式执行 shell 启动脚本
    nohup ./geth_private.sh 0<&- &>/dev/null & // 守护进程启动私有链节点
    nohup ./geth_private.sh 0<&- &> /tmp/geth.log  & // 守护进程启动私有链节点且把日志打印到 /tmp/geth.log 文件
    ./geth_private.sh //启动私有链节点并进入交互控制台
    

    第二种打印日志的方式非常有用。其一是如果 geth 启动不成功,可以在日志中看到具体错误体制。其二是在测试链中部署智能合约(切记要确保 geth 中有一个账户处于解锁状态且有一定量的 ether,一般这个账户是 coinbase)被确认时会输出合约地址到日志文件中。在私有测试链中,进入 js 交互控制台,输入 miner.start(1) 挖矿,控制台输出类似 Mined block (#72 / 517dcfd1). Wait 5 blocks for confirmation 则表示合约部署成功。

    Ethereum JavaScript API

    Ethereum 实现了****javascript runtime environment**** JavaScript Console
    Ethereum's Javascript console exposes the full web3 JavaScript Dapp API and the admin API.
    当你安装好 geth 并启动服务之后,通过Non-interactive use: JSRE script mode 命令(例如 Managing accounts) 或者 Interactive use: the JSRE REPL Console 进入控制台操作 geth

    $ geth attach ipc:/some/custom/path
    $ geth attach http://191.168.1.1:8545
    $ geth attach ws://191.168.1.1:8546
    

    如果你想单独在 node 服务中写代码操作 geth ,添加 web3.js 即可。
    web3.js 实现了使用 node 操作 geth 。使用的前提要求启动 geth 启动时 rpcapi 包含了 web3,在上面的配置文件中 "args" : "--rpcapi eth,web3 --rpc --dev --datadir /home/username/geth_private_data"已经设置好了。
    同时可以看看参考连接详细了解:

    安装:

    //install web3.js
    npm install web3
    //install solidity for smart contract develope
    sudo add-apt-repository ppa:ethereum/ethereum
    sudo add-apt-repository ppa:ethereum/ethereum-dev
    sudo apt-get update
    sudo apt-get install solc
    

    web.js 是一个 node 库,实现了Web3.js API Reference
    另外有一点需要注意的是:当你都写好并且编译好智能合约之后,接下来的新建和部署智能合约到区块链上需要确保有一个解锁的账号(EOA)及账户有一定的资金

    Create and deploy a contract
    Before you begin this section, make sure you have both an unlocked account as well as some funds. Create and deploy a contract

    推荐阅读:

    相关文章

      网友评论

      本文标题:Ethereum 私有链和 web3.js 使用

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