区块链 | geth以太坊创建私有链



方法一

创建私有链并启动节点

  • 创建一个配置私有链的数据目录ethprivate
  • 数据目录下,新建创世区块的初始化文件genesis.json

{
"config": {
            "chainId": 15,
            "homesteadBlock": 0,
            "eip155Block": 0,
            "eip158Block": 0
       },
       "difficulty": "200000000",
       "gasLimit": "2100000",
       "alloc": {
           "7df9a875a174b3bc565e6424a0050ebc1b2d1d82": { "balance": "300000" },
           "f41c74c9ae680c1aa78f42e5647a62f353b7bdde": { "balance": "400000" }
      }
}

  • 打开cmd
  • 创建私有链

geth --datadir "node1" init genesis.json

  • 启动私有链

geth --datadir "node1" --networkid 989898 --rpc console --port 30304 --rpcport 8546

  • 查看节点摘要信息

admin.nodeInfo

注意:

  • 我们现在只是启动了一个节点,如果还需要启动第二个节点,将node1变为node2,然
    后同样运行初始化,以及启动节点命令即可(以此类推).
  • 需要注意的是,要指定不同的端口,否则可能会导致端口占用冲突.
  • 若创建多个节点,则节点之间可以通过admin.addPeer连接.
  • 在本机启动多个节点或者在不同的计算机上运行多个节点都可以,这样可以模拟出一个私有链网络.

创建账户后进行挖矿

  • 创建账户
    personal.newAccount("admin1")

提示:

  • 账户名称可改
  • 挖矿
//启动挖矿
miner.start()

//停止挖矿
miner.stop()


方法二

说明

可以快速方便进行测试使用以及智能合约开发.

  • 安装Node.js

提示:

使用npm安装TestRPC

npm install -g ethereumjs-testrpc

  • 查看版本信息
    testrpc -version

使用npm安装装Truffle

npm install –g truffle

  • 查看版本信息
    truffle -version

安装solc

npm install -g solc

注意

  • 安装后的命令是solcjs——这是用来编译智能合约代码的

运行测试

  • 启动TestRPC
    testrpc
  • 开启另一终端,创建项目框架
    mkdir mytruffle && cd mytruffle
    truffle unbox webpack

参阅:webpack

  • 创建智能合约

pragma solidity ^0.4.11;
contract MyCalc {
function SumAdd(uint a) public returns(uint d) {
return a + 100;
}
}

  • 编译智能合约
    truffle compile

注意:

  • 回到mytruffle的目录才进行编译
  • 编译中遇到的问题和解决方法
Q A
1. No visibility specified. Did you intend to add "public"? 在函数后面returns前面添加public关键词
2. nightly builds are considered to be strictly less than the released version 找到truffle-config.js中的compiler项,将里面的version改为你智能合约的编译版本,然后再编译或改变pragma solidity声明的版本.
  • 修改部署配置
  • 编译与部署
    truffle develop
    compile
    migrate

说明:

  • Truffle Develop是truffle内置的客户端
  • truffle develop里执行truffle命令的时候需要省略前面的truffle
  • Truffle仅默认编译自上次编译后被修改过的文件,来减少不必要的编译。如果你想编译全部文件,使用
    truffle compile --compile-all
  • migrate会执行所有migrations目录下的js文件。如果之前执行过truffle migrate命令,再次执行,只会部署新的js文件,如果没有新的js文件,不会起任何作用。如果想重新的执行所有脚本的部署,使用
    truffle migrate --reset
  • 在主目录新开第三个终端,运行
    cd app
    npm run dev

更新中......


推荐阅读更多精彩内容

  • 当一条小鱼好不好,我的伙伴们都说:“当一条小鱼一点都不好。” 我们在水里觅食的时候,一定要小心,不然还会被...
    哥哥的成长阅读 222评论 0 1
  • 坐在客厅就可以看到丫头在那儿写作业。长大了,不好管了,你说她一句,她有三句等着。就比如说,我说,坐直,抬头...
    海阔林韵阅读 27评论 0 0
  • (一) 遇见你 像是沙漠开出蔷薇 同样鲜艳夺目 (二) 结识你 羞涩的言语 爱慕的神情 (三) 我喜欢你 不管时间...
    鱼小菲阅读 149评论 2 7
  • 儿子今年高考失利,后决定再复习一年,于是毅然去了离家稍远的鲁山老一高。因为是独生子女,所以儿子从小应该是...
    夏风_dd44阅读 26评论 0 0