区块链开发环境搭建前言本章主要总结在基于Ubuntu14.04系统上搭建区块链开发平台的过程。目前搭建区块链开发环境还是比较复杂,推荐使用MacOSX和Linux操作系统,目前不建议使用Windows,可能会碰到各种各样的问题,最后导致放弃。注意:安装软件的时候,尽量使用ubuntu系统官方的apt源。由于国内很多公司,例如阿里,网易,腾讯等都免费提供apt源,在有的时候当然可以加快我们安装软件的速度。但是,在安装本章所介绍的软件的时候我就遇到了各种错误,后来更换了ubuntu的官方apt源后有些问题就没有了。在使用npm安装某些软件的时候,建议不要使用cnpm国内镜像,否则装完可能会出现问题。由于区块链相关技术领域处于新兴阶段,变化很快,该章环境搭建仅供参考。一、搭建基于以太坊go-ethereum的私有链环境go-ethereum客户端以太坊有许多不同语言的客户端实现(即多种与以太坊网络交互的方法),包括C++,Go,Python,Java,Haskell等等。为什么需要这么多实现?不同的实现能满足不同的需求(例如Haskell实现的目标是可以被数学验证),能使以太坊更加安全,能丰富整个生态系统。我使用的是Go语言实现的客户端geth,该客户端也是官方推荐使用的客户端,稳定性较好,并且资料相对较多。安装命令:打开终端窗口,依次输入以下命令:安装测试:安装完成后在终端输入:如果显示出各种参数提示信息,则说明安装成功。创世块在以上安装成功之后,直接启动,即可连接公有链。现在通过配置创世块来创建私有链。同一个网络中,创世块必须是一样的,否则无法联通。创建一个eth的根目录,在根目录下新建创世块json文件piccgenesis.json。内容如下:{"nonce":"0x0000000000000042","mixhash":"0x0000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x400","alloc":{},"coinbase":"0x0000000000000000000000000000000000000000","timestamp":"0x00","parentHash":"0x0000000000000000000000000000000000000000000000000000000000000000","extraData":"PICCGenesisBlock","gasLimit":"0xffffffff"}参数解释:参数名称参数描述mixhash与nonce配合用于挖矿,由上一个区块的一部分生成的hash。注意他和nonce的设置需要满足以太坊的Yellowpaper,4.3.4.BlockHeaderValidity,(44)章节所描述的条件。.noncenonce就是一个64位随机数,用于挖矿,注意他和mixhash的设置需要满足以太坊的Yellowpaper,4.3.4.BlockHeaderValidity,(44)章节所描述的条件。difficulty设置当前区块的难度,如果难度过大,cpu挖矿就很难,这里设置较小难度alloc用来预置账号以及账号的以太币数量,因为私有链挖矿比较容易,所以我们不需要预置有币的账号,需要的时候自己创建即可以。coinbase矿工的账号,随便填timestamp设置创世块的时间戳parentHash上一个区块的hash值,因为是创世块,所以这个值是0extraData附加信息,随便填,可以填你的个性信息gasLimit该值设置对GAS的消耗总量限制,用来限制区块能包含的交易信息总和,因为我们是私有链,所以填最大。注意:区块难度difficulty一定要小,否则使用起来挖矿将会很困难,就没有账户金额进行开发实验;可以通过alloc在该文件中预分配账户和以太币。启动私有链节点启动节点所需参数列表:参数名称参数描述identity区块链的标示,随便填写,用于标示目前网络的名字init指定创世块文件的位置,并创建初始块datadir设置当前区块链网络数据存放的位置port网络监听端口rpc启动rpc通信,可以进行智能合约的部署和调试rpcapi设置允许连接的rpc的客户端,一般为db,eth,net,web3networkid设置当前区块链的网络ID,用于区分不同的网络,是一个数字console启动命令行模式,可以在Geth中执行命令终端进入配置好的创世块文件目录。输入以下命令初始化创世块:geth--datadir"~./ethdev"initpiccgenesis.json输入以下命令启动以太坊私有链:geth--identity"PICCetherum"--rpc--rpccorsdomain"*"--datadir"~./ethdev"--port"30303"--rpcapi"db,eth,net,web3"--networkid95518console–dev注意:添加—dev表示以开发模式启动。私有链数据存储的目录要与公有链分开...