前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >以太坊·单机多实例演示

以太坊·单机多实例演示

原创
作者头像
netkiller old
发布于 2018-02-22 04:27:30
发布于 2018-02-22 04:27:30
1.6K10
代码可运行
举报
文章被收录于专栏:NetkillerNetkiller
运行总次数:0
代码可运行

摘要: 这是一篇演示如何使用一台服务器,运行多个以太坊客户端,并且将节点互联,完成两个节点之间的转账操作。

本文节选自电子书《Netkiller Blockchain 手札》

Netkiller Blockchain 手札

本文作者最近在找工作,有意向致电 13113668890

Mr. Neo Chan, 陈景峯(BG7NYT)

中国广东省深圳市龙华新区民治街道溪山美地 518131 +86 13113668890 <netkiller@msn.com>

文档始创于2018-02-10

版权 © 2018 Netkiller(Neo Chan). All rights reserved.

版权声明

转载请与作者联系,转载时请务必标明文章原始出处和作者信息及本声明。

http://www.netkiller.cnhttp://netkiller.github.iohttp://netkiller.sourceforge.net

http://www.netkiller.cn

http://netkiller.github.io

http://netkiller.sourceforge.net

微信订阅号 netkiller-ebook (微信扫描二维码)QQ:13721218 请注明“读者”QQ群:128659835 请注明“读者”

微信订阅号 netkiller-ebook (微信扫描二维码)

QQ:13721218 请注明“读者”

QQ群:128659835 请注明“读者”

http://www.netkiller.cn

http://netkiller.github.io

http://netkiller.sourceforge.net

微信订阅号 netkiller-ebook (微信扫描二维码)

QQ:13721218 请注明“读者”

QQ群:128659835 请注明“读者”

$Data$

内容摘要

这一部关于区块链开发及运维的电子书。

为什么会写区块链电子书?因为2018年是区块链年。

这本电子书是否会出版(纸质图书)? 不会,因为互联网技术更迭太快,纸质书籍的内容无法实时更新,一本书动辄百元,很快就成为垃圾,你会发现目前市面的上区块链书籍至少是一年前写的,内容已经过时,很多例子无法正确运行。所以我不会出版,电子书的内容会追逐技术发展,及时跟进软件版本的升级,做到内容最新,至少是主流。

这本电子书与其他区块链书籍有什么不同?市面上大部分区块链书籍都是用2/3去讲区块链原理,只要不到 1/3 的干货,干货不够理论来凑,通篇将理论或是大谈特谈区块链行业,这些内容更多是头脑风暴,展望区块链,均无法落地实施。本书与那些书籍完全不同,不讲理论和原理,面向应用落地,注重例子,均是干货。

电子书更新频率?每天都会有新内容加入,更新频率最迟不会超过一周,更新内容请关注 https://github.com/netkiller/netkiller.github.io/commits/master

本文采用碎片化写作,原文会不定期更新,请尽量阅读原文。

http://www.netkiller.cn/blockchain/index.html

2.3. 单机多实例演示

在没有条件安装虚拟机也没有多台服务器的情况下我们可以使用一台服务器运行多个实例的方法也可以实现多个节点运行环境。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cd ~
mkdir -p ethereum
cd ethereum
mkdir data{1,2}

创建文件 genesis.json

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  "nonce": "0x0000000000000042",
  "difficulty": "0x020000",
  "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "coinbase": "0x0000000000000000000000000000000000000000",
  "timestamp": "0x00",
  "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "extraData": "0x11bbe8db4e347b4e8c937c1c8370e4b5ed33adb3db69cbdb7a38e1e50b1b82fa",
  "gasLimit": "0x4c4b40",
  "config": {
      "chainId": 15,
      "homesteadBlock": 0,
      "eip155Block": 0,
      "eip158Block": 0
  },
  "alloc": { }
}

2.3.1. 实例一

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
geth --datadir ~/ethereum/data1 init genesis.json
geth --datadir="~/ethereum/data1" --networkid 123456 --port 30301 --rpc --rpcaddr="0.0.0.0" --rpccorsdomain "*" --rpcport 8541

启动后终端输出

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
neo@netkiller ~/ethereum % geth --datadir ~/ethereum/data1 init genesis.json
WARN [02-02|22:09:56] No etherbase set and no accounts found as default 
INFO [02-02|22:09:56] Allocated cache and file handles         database=/home/neo/ethereum/data1/geth/chaindata cache=16 handles=16
INFO [02-02|22:09:56] Writing custom genesis block 
INFO [02-02|22:09:56] Successfully wrote genesis state         database=chaindata                               hash=611596…424d04
INFO [02-02|22:09:56] Allocated cache and file handles         database=/home/neo/ethereum/data1/geth/lightchaindata cache=16 handles=16
INFO [02-02|22:09:57] Writing custom genesis block 
INFO [02-02|22:09:57] Successfully wrote genesis state         database=lightchaindata                               hash=611596…424d04

neo@netkiller ~ % geth --datadir="~/ethereum/data1" --networkid 123456 --port 30301 --rpc --rpcaddr="0.0.0.0" --rpccorsdomain "*" -rpcport 8541             
WARN [02-02|22:36:02] No etherbase set and no accounts found as default 
INFO [02-02|22:36:02] Starting peer-to-peer node               instance=Geth/v1.7.3-stable-4bb3c89d/linux-amd64/go1.9.1
INFO [02-02|22:36:02] Allocated cache and file handles         database=/home/neo/ethereum/data1/geth/chaindata cache=128 handles=1024
INFO [02-02|22:36:02] Initialised chain configuration          config="{ChainID: 15 Homestead: 0 DAO: <nil> DAOSupport: false EIP150: <nil> EIP155: 0 EIP158: 0 Byzantium: <nil> Engine: unknown}"
INFO [02-02|22:36:02] Disk storage enabled for ethash caches   dir=/home/neo/ethereum/data1/geth/ethash count=3
INFO [02-02|22:36:02] Disk storage enabled for ethash DAGs     dir=/home/neo/.ethash                    count=2
INFO [02-02|22:36:02] Initialising Ethereum protocol           versions="[63 62]" network=123456
INFO [02-02|22:36:02] Loaded most recent local header          number=0 hash=611596…424d04 td=131072
INFO [02-02|22:36:02] Loaded most recent local full block      number=0 hash=611596…424d04 td=131072
INFO [02-02|22:36:02] Loaded most recent local fast block      number=0 hash=611596…424d04 td=131072
INFO [02-02|22:36:02] Loaded local transaction journal         transactions=0 dropped=0
INFO [02-02|22:36:02] Regenerated local transaction journal    transactions=0 accounts=0
INFO [02-02|22:36:02] Starting P2P networking 
INFO [02-02|22:36:05] UDP listener up                          self=enode://53433417f11d1d9a17f155cbaad2c4ec375af7b141e2989f049b572fc3f856d78f254e58fa82ed6eab48a16b7d625527214522ec0fd3e3af030b5b8dfdadc062@14.103.209.119:30301
INFO [02-02|22:36:05] HTTP endpoint opened: http://0.0.0.0:8541 
INFO [02-02|22:36:05] IPC endpoint opened: /home/neo/ethereum/data1/geth.ipc 
INFO [02-02|22:36:05] RLPx listener up                         self=enode://53433417f11d1d9a17f155cbaad2c4ec375af7b141e2989f049b572fc3f856d78f254e58fa82ed6eab48a16b7d625527214522ec0fd3e3af030b5b8dfdadc062@14.103.209.119:30301
INFO [02-02|22:36:05] Mapped network port                      proto=udp extport=30301 intport=30301 interface="UPNP IGDv1-IP1"
INFO [02-02|22:36:07] Mapped network port                      proto=tcp extport=30301 intport=30301 interface="UPNP IGDv1-IP1"

2.3.2. 实例二

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
geth --datadir ~/ethereum/data2 init genesis.json
geth --datadir="~/ethereum/data2" --networkid 123456 --port 30302 --rpc --rpcaddr="0.0.0.0" --rpccorsdomain "*" --rpcport 8542

启动后控制台输出与实例一类似

2.3.3. 添加节点

开启一个新终端窗口,运行下面命令查看节点一的 enode 字符串

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
geth --exec 'admin.nodeInfo.enode' attach ethereum/data1/geth.ipc
"enode://53433417f11d1d9a17f155cbaad2c4ec375af7b141e2989f049b572fc3f856d78f254e58fa82ed6eab48a16b7d625527214522ec0fd3e3af030b5b8dfdadc062@[::]:30301?discport=0"

进入节点二,并连接到节点一。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
neo@netkiller ~ % geth attach ethereum/data2/geth.ipc
Welcome to the Geth JavaScript console!

instance: Geth/v1.7.3-stable-4bb3c89d/linux-amd64/go1.9.1
 modules: admin:1.0 debug:1.0 eth:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0

> admin.addPeer("enode://53433417f11d1d9a17f155cbaad2c4ec375af7b141e2989f049b572fc3f856d78f254e58fa82ed6eab48a16b7d625527214522ec0fd3e3af030b5b8dfdadc062@[::]:30302")
true
> admin.addPeer("enode://53433417f11d1d9a17f155cbaad2c4ec375af7b141e2989f049b572fc3f856d78f254e58fa82ed6eab48a16b7d625527214522ec0fd3e3af030b5b8dfdadc062@[::]:30301")
true

查看节点

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
> admin.peers
[{
    caps: ["eth/63"],
    id: "53433417f11d1d9a17f155cbaad2c4ec375af7b141e2989f049b572fc3f856d78f254e58fa82ed6eab48a16b7d625527214522ec0fd3e3af030b5b8dfdadc062",
    name: "Geth/v1.7.3-stable-4bb3c89d/linux-amd64/go1.9.1",
    network: {
      localAddress: "[::1]:51250",
      remoteAddress: "[::1]:30301"
    },
    protocols: {
      eth: {
        difficulty: 131072,
        head: "0x611596e7979cd4e7ca1531260fa706093a5492ecbdf58f20a39545397e424d04",
        version: 63
      }
    }
}]

至此,节点已经添加完毕。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
> exit

退出

2.3.4. 节点测试

这里我们实现两个节点间的以太币转账。

现在两个节点上都没有任何账号

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
neo@netkiller ~ % geth --exec 'personal.listAccounts' attach ethereum/data1/geth.ipc                                        
[]
neo@netkiller ~ % geth --exec 'personal.listAccounts' attach ethereum/data2/geth.ipc
[]

在两个节点上分别创建两个账号,一个是矿工账号,另一个是普通账号。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
neo@netkiller ~ % geth --exec 'personal.newAccount("abc123")' attach ethereum/data1/geth.ipc
"0x5ad227e8d7e460713c78eebbe558473571edae72"

neo@netkiller ~ % geth --exec 'personal.newAccount("abc123")' attach ethereum/data1/geth.ipc
"0x3e822e05ee975e02be3f15f32b0fddced8d5bdd0"

neo@netkiller ~ % geth --exec 'personal.listAccounts' attach ethereum/data1/geth.ipc 
["0x5ad227e8d7e460713c78eebbe558473571edae72", "0x3e822e05ee975e02be3f15f32b0fddced8d5bdd0"]



neo@netkiller ~ % geth --exec 'personal.newAccount("abc123")' attach ethereum/data2/geth.ipc
"0xa6df3e3c141e27726f4aeb21a5dab2e5c76c9565"

neo@netkiller ~ % geth --exec 'personal.newAccount("abc123")' attach ethereum/data2/geth.ipc
"0xa66c7b8b1c26856d284a0b962385babe02caa51d"

neo@netkiller ~ % geth --exec 'personal.listAccounts' attach ethereum/data2/geth.ipc 
["0xa6df3e3c141e27726f4aeb21a5dab2e5c76c9565", "0xa66c7b8b1c26856d284a0b962385babe02caa51d"]

启动挖矿

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
geth --exec 'miner.start(1)' attach ethereum/data1/geth.ipc 
geth --exec 'miner.start(1)' attach ethereum/data2/geth.ipc

如果正常运行,两个节点上的矿工账号都会有一定的以太币。而普通账号额度应该为零。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
neo@netkiller ~ % geth --exec 'eth.getBalance(eth.accounts[0])' attach ethereum/data1/geth.ipc
299438256000000000000

neo@netkiller ~ % geth --exec 'eth.getBalance(eth.accounts[1])' attach ethereum/data1/geth.ipc
0

neo@netkiller ~ % geth --exec 'eth.getBalance(eth.accounts[1])' attach ethereum/data1/geth.ipc
298000056000000000000

neo@netkiller ~ % geth --exec 'eth.getBalance(eth.accounts[1])' attach ethereum/data2/geth.ipc
0

我们尝试从节点一矿工账号向节点二上的普通用户转账。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
neo@netkiller ~ % geth attach ethereum/data1/geth.ipc                               
Welcome to the Geth JavaScript console!

instance: Geth/v1.7.3-stable-4bb3c89d/linux-amd64/go1.9.1
coinbase: 0x5ad227e8d7e460713c78eebbe558473571edae72
at block: 144 (Fri, 02 Feb 2018 23:24:35 HST)
 datadir: /home/neo/ethereum/data1
 modules: admin:1.0 debug:1.0 eth:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0

> personal.listAccounts
["0x5ad227e8d7e460713c78eebbe558473571edae72"]

> personal.unlockAccount(eth.accounts[0], "abc123")
true

> eth.sendTransaction({from: "0x5ad227e8d7e460713c78eebbe558473571edae72", to: "0xa66c7b8b1c26856d284a0b962385babe02caa51d", value: web3.toWei(1, "ether")})
"0x87c059d0769c8a74499ddd08c04a10f23b7681651615a28098d73ec63a943684"

> eth.pendingTransactions
[{
    blockHash: null,
    blockNumber: null,
    from: "0x5ad227e8d7e460713c78eebbe558473571edae72",
    gas: 90000,
    gasPrice: 18000000000,
    hash: "0x87c059d0769c8a74499ddd08c04a10f23b7681651615a28098d73ec63a943684",
    input: "0x",
    nonce: 2,
    r: "0xce004f964f268a00e90cadd4e8a685131aa34f37144f7e2e47dc7fe4ec784e55",
    s: "0x412209c18513a28422e62c4bdb85a223f190e133cf71990a87c570a3a53ae093",
    to: "0xa66c7b8b1c26856d284a0b962385babe02caa51d",
    transactionIndex: 0,
    v: "0x41",
    value: 1000000000000000000
}]

稍后一会,当使用 eth.pendingTransactions 查看挂起交易为空的时候,表示已经处理完毕。这时退出控制台。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
> eth.pendingTransactions
[]
> exit

现在查看节点二上的第二个普通账号余额

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
neo@netkiller ~ % geth --exec 'eth.getBalance(eth.accounts[1])' attach ethereum/data2/geth.ipc
1000000000000000000

转账成功

现在我们从节点二上的普通用户向节点一上的普通用户转账。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
neo@netkiller ~ % geth attach ethereum/data2/geth.ipc                                        
Welcome to the Geth JavaScript console!

instance: Geth/v1.7.3-stable-4bb3c89d/linux-amd64/go1.9.1
coinbase: 0xa6df3e3c141e27726f4aeb21a5dab2e5c76c9565
at block: 319 (Fri, 02 Feb 2018 23:50:07 HST)
 datadir: /home/neo/ethereum/data2
 modules: admin:1.0 debug:1.0 eth:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0

> personal.unlockAccount(eth.accounts[1], "abc123")
true

> eth.sendTransaction({from: "0xa66c7b8b1c26856d284a0b962385babe02caa51d", to: "0x3e822e05ee975e02be3f15f32b0fddced8d5bdd0", value: web3.toWei(0.1, "ether")})
"0x951bd161dfd000ff825379cb0644c4acd4afd4d3e1ac4f4c1c6009b3c2a1d366"

> eth.pendingTransactions
[]
> exit

查看两个普通账号的余额

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
neo@netkiller ~ % geth --exec 'eth.getBalance(eth.accounts[1])' attach ethereum/data1/geth.ipc
100000000000000000
neo@netkiller ~ % geth --exec 'eth.getBalance(eth.accounts[1])' attach ethereum/data2/geth.ipc
899622000000000000

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
1 条评论
热度
最新
请问 INFO [05-26|16:26:34] HTTP endpoint opened url=http://0.0.0.0:8541 cors =* vhosts= localhost 卡在这里是怎么回事?
请问 INFO [05-26|16:26:34] HTTP endpoint opened url=http://0.0.0.0:8541 cors =* vhosts= localhost 卡在这里是怎么回事?
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
以太坊私链入门
中国广东省深圳市龙华新区民治街道溪山美地 518131 +86 13113668890 <netkiller@msn.com>
netkiller old
2018/02/02
5.1K2
以太坊搭建私有链
在以太坊上部署智能合约、发起交易需要花费以太币。而私链和公有链没有关系,不用同步大量的数据,也不用花钱购买以太币,可以很好的满足智能合约的开发和测试要求,而且在私有链上开发的智能合约可以很容易的部署到以太坊的公有链上。
foochane
2019/05/23
1.7K0
从零构建以太坊(Ethereum)智能合约到项目实战——第20章 搭建自己的私有链网络
使用此博文进行安装配置:https://blog.csdn.net/w88193363/article/details/79402074
墨文
2020/02/28
1.7K0
从零构建以太坊(Ethereum)智能合约到项目实战——第20章 搭建自己的私有链网络
以太坊win平台和Linux 私链搭建,交易,添加多节点
先上一篇的以太坊的私有搭建,交易,节点连接,结合搭建的步骤对以太坊进行深入介绍。本文介绍的方式在win10 和ubuntu16.04 的方式测试过。 第一步:geth的安装,请直接移步:https://github.com/ethereum/go-ethereum/wiki/Building-Ethereum 或者百度其他博客。为了方便操作,windows 平台在安装完成geth后 ,最好将geth.exe 所在的目录添加到Path环境变量中以便于开发。linux 的方式推荐使用ppa的方式安装。如果不是也推荐奖geth 添加到环境变量里面。 第二步:创建创世块 先不要想太多直接复制我的创世块用: 新建一个文件夹名为mynode,然后在mynode 文件夹里面创建一个文件
地球流浪猫
2018/08/02
5710
以太坊多节点私有链部署
https://g2ex.github.io/2017/09/12/ethereum-guidance/
飞狗
2018/09/10
1.4K0
【手把手】如何在10分钟内搭建一个以太坊私有链?
在开发以太坊时,很多时候需要搭建一条以太坊私有链,这篇来自作者熊丽兵的文章,手把手教你10分钟内如何在Mac上进行搭建。 作者 | 熊丽兵 整理 | 科科 阅读本文前,你应该对以太坊语言有所了解,如果你还不了解,建议你先看以太坊是什么。 go-ethereum客户端安装 Go-ethereum客户端通常被称为Geth,它是个命令行界面,执行在Go上实现的完整以太坊节点。Geth得益于Go语言的多平台特性,支持在多个平台上使用(比如Windows、Linux、Mac)。Geth是以太坊协议的具体落地实现,通过
区块链大本营
2018/06/19
2.4K0
以太坊智能合约开发入门
中国广东省深圳市龙华新区民治街道溪山美地 518131 +86 13113668890 <netkiller@msn.com>
netkiller old
2018/02/04
5.8K0
2019-03-14 通过rpc发布和调用以太坊合约
参考2018-11-22 Debug以太坊go-ethereum实战 启动geth,并attach一个geth执行创建账户的命令:
oracle3
2022/05/13
4430
佛萨奇2.0系统开发智能合约编写详情
gasLimit: 该值设置对GAS的消耗总量限制,用来限制区块能包含的交易信息总和,因为我们是私有链,所以填最大。
用户开发vx_hkkf5566
2022/11/02
2920
以太坊数据存证性能与膨胀率测试
我们基于区块链在企业中的应用最广泛的就是“存证”功能需求,这是利用了区块链不可篡改和数据共享的特点,存证的业务数据一方面可以保证留痕和追溯,另一方面也实现了多个节点(如果部署在不同企业和部门)之间的数据共享。如果要实现存证,我们最关心并不是图灵完备,也不是去中心化,而是 存证的性能(也就是TPS)和数据膨胀率(也就是存1M的业务数据,单个节点要消耗多少M的磁盘空间)。
深蓝studyzy
2023/09/15
2980
以太坊数据存证性能与膨胀率测试
以太坊 Truffle 测试代币锁仓,转账,空投
中国广东省深圳市龙华新区民治街道溪山美地 518131 +86 13113668890 <netkiller@msn.com>
netkiller old
2018/05/17
3.2K0
以太坊 Truffle 测试代币锁仓,转账,空投
以太坊数据存证性能与膨胀率测试
我们基于区块链在企业中的应用最广泛的就是“存证”功能需求,这是利用了区块链不可篡改和数据共享的特点,存证的业务数据一方面可以保证留痕和追溯,另一方面也实现了多个节点(如果部署在不同企业和部门)之间的数据共享。如果要实现存证,我们最关心并不是图灵完备,也不是去中心化,而是 存证的性能(也就是TPS)和数据膨胀率(也就是存1M的业务数据,单个节点要消耗多少M的磁盘空间)。
深蓝studyzy
2023/09/14
2610
以太坊智能合约部署与交互
我们再打开一个终端,打开cluster1的peer02的控制台,直接at到上一个终端部署的智能合约地址并进行set操作
笔阁
2018/09/04
2.7K0
以太坊智能合约部署与交互
ethereum-geth常用操作
--datadir: 数据存放目录,不指定默认:/home/$user/.ethereum
潇洒
2023/10/20
5830
以太坊如何搭建私有连联盟链
如何启动geth节点对大家来说已经不是什么难事,今天博主就带大家学习一下如何搭建两个节点的联盟链。
程序新视界
2022/05/06
1.3K0
搭建以太坊私有链
区块链技术正在逐渐走向成熟,以太坊作为区块链领域的重要代表被广泛应用于智能合约、去中心化应用等领域,然而公有链上的交易需要消耗大量的手续费,且数据的公开性也限制了其在某些场景下的应用。因此搭建以太坊私有链成为了一种更加灵活、高效、安全的解决方案,本文将介绍如何搭建以太坊私有链帮助读者更好地理解和应用区块链技术
Al1ex
2023/09/07
1.5K1
搭建以太坊私有链
【刘文彬】【精解】开发一个智能合约
合约也称合同、协议,是甲乙双方参与的,制定一系列条目规范双方权利与义务的文件。智能合约是电子化的,自动执行的,去中心化的,具有不可抵赖性,本质上它是一段代码,依托于区块链技术,它可以做很多事情,基于以太坊的智能合约可以让你的区块链扩展出任何你想要的功能。
圆方圆学院
2019/03/14
4780
部署一个私链以太坊的智能合约
部署智能合约的步骤为: 启动一个以太坊节点 (例如geth或者testrpc)。 使用solc编译智能合约。 => 获得二进制代码。 将编译好的合约部署到网络。(这一步会消耗以太币,还需要使用你的节点
rectinajh
2018/05/17
2.4K0
10岁小表妹也能“吃透”Geth 客户端 !360秒,快速部署 ICO Token
接下来,你可以输入 geth –help 来检查 Geth 是否已安装成功。如果此时显示出一些帮助信息,你就可以进行下一步,创建一个新账户。
区块链大本营
2018/08/15
8080
10岁小表妹也能“吃透”Geth 客户端 !360秒,快速部署 ICO Token
用Geth设置基于POA权利证明的私有以太网网络
目标:逐步指导,帮助你使用权威证明共识引擎(也称为clique)设置本地私有以太网网络。
笔阁
2019/03/20
2.5K0
用Geth设置基于POA权利证明的私有以太网网络
相关推荐
以太坊私链入门
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文