美文网首页
创建私链并部署合约

创建私链并部署合约

作者: 攻城老狮 | 来源:发表于2020-07-25 14:39 被阅读0次

使用dev的方式创建以太坊私链(单节点)

启动私链

# 开启私链
geth --networkid 123 --dev --datadir data1 --rpc --rpcaddr 192.168.1.114 --rpcport 8989 --port 3000
# 进入私链控制台
cd data1
geth attach ipc:geth.ipc

创建合约

  1. 使用npm下载solcjs
npm install -g solc@0.4.17
  1. 新建 HelloWorld.sol 文件,并写如下代码
pragma solidity ^0.4.17;

contract HelloWorld{
    function mutiply(uint number) public returns(uint){
        return number*6;
    }
}

  1. 使用solcjs编译代码,得到二进制和abi文件
solcjs --bin --abi HelloWorld.sol 

部署合约

var code = "0x..." //将编译生成的二进制内容拷贝到字符串中
var abi = ... //将abi内容拷贝过来
var myContract = eth.contract(abi)
web3.eth.estimateGas({data:code}) //评估汽油费
personal.unlockAccount(personal.listAccount[0]) //输入密码,解锁第一个账户
//部署合约
var contract = myContract.new({from:personal.listAccount[0],data:code,gas:200000})
//挖矿,将合约加入区块链
miner.start()
miner.stop()
//测试方法
contract.mutiply.call(6) //结果为 36

使用创世纪块初始化以太坊私链,并部署多节点

新建创世块文件,genesis.json 并写入以下内容:

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

节点1

  1. 初始化节点1的创世块
geth --datadir  data1  init  genesis.json
  1. 启动节点1
geth  --datadir data1 --rpcport 8481 --port 30301 --networkid 29381 console

节点2

  1. 初始化节点2的创世块
geth --datadir  data2  init  genesis.json
  1. 启动节点2
geth  --datadir data2 --rpcport 8482 --port 30302 --networkid 29381 console

连接两个节点并验证连接的有效性

  1. 查看节点1的信息
admin.nodeInfo

结果:

{
  enode: "enode://49d1e1238345d2a457d42da3a87a22cfbecca9c55bab57fa0f15ab8d05c3c107147da17b38e1fbe7ce608f02e8968d4d16501eb794eb0edf2404fdf26d9bffa7@113.46.147.90:30301",
  id: "61fa75d7e36d6949d8486e485a58a81454b69692fc78e47c5a104b60e02d2649",
  ip: "113.46.147.90",
  listenAddr: "[::]:30301",
  name: "Geth/v1.8.17-stable/linux-amd64/go1.9.7",
  ports: {
    discovery: 30301,
    listener: 30301
  },
  protocols: {
    eth: {
      config: {
        chainId: 101,
        eip150Hash: "0x0000000000000000000000000000000000000000000000000000000000000000",
        eip155Block: 0,
        eip158Block: 0,
        homesteadBlock: 0
      },
      difficulty: 1024,
      genesis: "0x2720038ef46044a7a895296b85745294340ecfcedc32f8c9e9802129aeb62890",
      head: "0x2720038ef46044a7a895296b85745294340ecfcedc32f8c9e9802129aeb62890",
      network: 29381
    }
  }
}

  1. 将节点1的enode信息加入节点2

在节点2的终端输入以下内容:

admin.addPeer("enode://49d1e1238345d2a457d42da3a87a22cfbecca9c55bab57fa0f15ab8d05c3c107147da17b38e1fbe7ce608f02e8968d4d16501eb794eb0edf2404fdf26d9bffa7@113.46.147.90:30301")
  1. 验证节点是否加入成功
admin.peers

结果:

[{
    caps: ["eth/63"],
    enode: "enode://49d1e1238345d2a457d42da3a87a22cfbecca9c55bab57fa0f15ab8d05c3c107147da17b38e1fbe7ce608f02e8968d4d16501eb794eb0edf2404fdf26d9bffa7@113.46.147.90:30301",
    id: "61fa75d7e36d6949d8486e485a58a81454b69692fc78e47c5a104b60e02d2649",
    name: "Geth/v1.8.17-stable/linux-amd64/go1.9.7",
    network: {
      inbound: false,
      localAddress: "192.168.1.114:38360",
      remoteAddress: "113.46.147.90:30301",
      static: true,
      trusted: false
    },
    protocols: {
      eth: {
        difficulty: 1024,
        head: "0x2720038ef46044a7a895296b85745294340ecfcedc32f8c9e9802129aeb62890",
        version: 63
      }
    }
}]

相关文章

  • 创建私链并部署合约

    使用dev的方式创建以太坊私链(单节点) 启动私链 创建合约 使用npm下载solcjs 新建 HelloWorl...

  • Ethereum与Hyperledger的区别

    一、以太坊智能合约部署过程 搭建以太坊私链环境,生成私链的创世区块(不详述); 启动私链,生成一个初始的以太币账户...

  • 投票Dapp创建

    投票Dapp创建 环境搭建 编写solidity合约 连接到本地ganache,并部署合约 调用合约函数 前端页面...

  • RNode 智能合约部署教程

    创建私钥 创建私钥 替换成你的目标目录+名称,并输入密码 部署合约 接下来我们就进行智能合约部署 --grp...

  • DAPP开发

    本教程将指导你完成基于私有链的智能合约创建、部署、调用,测试过程,并最终将其部署到本体主网。 操作步骤如下: 在S...

  • 手把手教你搭建以太坊基私链与部署智能合约

    本文将描述如何在mac上搭建以太坊客户端、部署私链、安装钱包、以及如何部署合约。 1 以太坊 当你看到这篇文章,...

  • 三、创建合约

    上一节我们创建了钱包,并领取了免费的NAS,现在我们来到DApp化的核心步骤——创建合约。 编写合约 星云链的合约...

  • 以太坊学习笔记-合约准备

    在以太坊上智能合约的流程如下: 创建: 编写智能合约 编译智能合约为字节码 部署到区块链上 调用: 发起一笔指向合...

  • 星云链Nebulas——4.智能合约存储区

    前面一篇《星云链Nebulas——3.编译和部署智能合约》介绍了如何编写智能合约以及如何在星云链部署和调用智能合约...

  • 2.4 部署智能合约到通道上

    接着上一个课程,创建通道后,就可以在这个通道上部署智能合约(也叫链码)了。 智能合约是介于区块链与业务系统之间,它...

网友评论

      本文标题:创建私链并部署合约

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