Alpha Casper FFG 测试网指南

欢迎来到基于 pyethereum的第一个 alpha Casper FFG 测试网版本。该测试网彰显了在加密经济学 POS 上数年的工作成果,以及客户端几个月以来的紧密开发。这是一个功能齐全,完全可用的网络,用户可以发送交易,挖矿和成为验证人。但是,距离网络完全可以上线,仍然还有一些距离。一些参数与最终设置不同,此外,比起其他使用更快语言实现的客户端,目前唯一可用的客户端 pyethereum,在处理容量上相对要低得多。因此,为了保证网络的可持续性,网络参数将会严格受限。千万不要期待测试网的性能可以比得上 Geth 和 Parity 这样优秀的客户端

什么是 Casper FFG,它是如何工作的

这个话题已经超出了本文内容,你可以在下面的链接中找到更多信息:

本文接下来的部分,将假定您对 Casper FFG 已经有了一定的了解。

前言

如果你想要直接运行节点,可以直接进入下一节(“运行节点”)。

在这里查看 ethstats :http://34.203.42.208:3000/

此外,你也可以使用 web3 (通过 sudo pip3 install web3 进行安装),像下面这样连接到一个节点(假设使用 Python 3):

> from web3 import Web3, HTTPProvider
> web3 = Web3(HTTPProvider('http://52.87.179.32:8545'))
> web3.eth.getBlock('latest')
# This should return the head of the chain

然后:

> import urllib.request, json

# This may take a while depending on your internet connection
> casper_abi = json.load(urllib.request.urlopen( "https://gist.githubusercontent.com/vbuterin/868a6213b058fb4f1fdfcf64e54f0e91/raw/33fc177da3863ec320d1ebf95816ba52ffbffbe8/casper_abi"))
> casper = web3.eth.contract(abi=casper_abi, address='0xbd832b0cd3291c39ef67691858f35c71dfb3bf21').call()

# This should return the current epoch
> casper.get_current_epoch()

通过查询 Casper 合约 ,你可以看到可以调用的所有函数。任何公共变量(public variable)都有一个相对应的 getter 方法,比如,如果变量 x 是公开的,那么就会有一个相对应的 getter 方法 get_x();关于有哪些 getter 的更多信息,可以查看 Viper 文档。

运行一个节点

为了运行一个节点,按照下列指引下载并运行一个 Docker 实例:

在 Ubuntu 上安装 docker(如果你还没有安装的话):

curl -fsSL get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG docker $USER

该步完成后,记得一定要退出重新登录。

如果是 macOS,按照以下指引:https://docs.docker.com/docker-for-mac/install/#install-and-run-docker-for-mac

获取测试网节点的 docker 镜像(注意,这会有几百兆的下载):

$ git clone http://github.com/karlfloersch/docker-pyeth-dev
$ cd docker-pyeth-dev
$ make new-account
🌟 Creating keystore directory at ./validator/data/config/keystore
🌟 Enter a new password to encrypt your account:
🌟 Your password is stored at ./validator/data/config/password.txt
🌟 Pyethapp container is creating new address for you, might take few seconds:

运行:

$ make run-node bootstrap_node=enode://d3260a710a752b926bb3328ebe29bfb568e4fb3b4c7ff59450738661113fb21f5efbdf42904c706a9f152275890840345a5bc990745919eeb2dfc2c481d778ee@54.167.247.63:30303

如果 encode 不成功的话,试一下这个:enode://a120401858c93f0be73ae7765930174689cad026df332f7e06a047ead917cee193e9210e899c3143cce55dd991493227ecea15de42aa05b9b730d2189e19b567@52.87.179.32:30303

如果正在运行一个节点,那么你可以使用 web3.py 来接入它:

$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                            NAMES
20a0dfe1d9e2        casper-validator    "sh /root/start.sh p…"   18 minutes ago      Up 18 minutes       8545/tcp, 30303/tcp, 30303/udp   validator
$ docker exec -it 20a0dfe1d9e2 python

运行 docker ps,用输出中出现的 container ID 替换 20a0dfe1d9e2。然后在出现的 Python console 里面重复上面的 web3 指引,不过要用
Web3(HTTPProvider('http://localhost:8545')) 来替换远端节点(remote node)。

要挖矿的话:

$ make run-node mine_percent=90 bootstrap_node=enode://d3260a710a752b926bb3328ebe29bfb568e4fb3b4c7ff59450738661113fb21f5efbdf42904c706a9f152275890840345a5bc990745919eeb2dfc2c481d778ee@54.167.247.63:30303

如果出现下面的错误:

docker: Error response from daemon: Conflict. The container name "/validator" is already in use...

那么,运行 docker rm validator 即可解决。

运行一个验证者

首先,要成为一个验证人,你需要有足够的测试网 ETH。你可以通过挖矿,或是向我们要 ETH(faucet 也会很快有的)。

如果向我们要 ETH 的话,你需要有一个 ETH 地址。可以使用自己已经生成的一个 keystore 文件,比如使用 geth 或者 pyeth_keys,或者是使用 docker 工具来生成一个地址。

通过运行上面的 make new-account 命令,以一个验证人的身份登录,运行:

make run-node validate=true deposit=2000 bootstrap_node=enode://d3260a710a752b926bb3328ebe29bfb568e4fb3b4c7ff59450738661113fb21f5efbdf42904c706a9f152275890840345a5bc990745919eeb2dfc2c481d778ee@54.167.247.63:30303

将 2000 改为你想要存入的任意数目 ETH (最低 1500)。

随后,让 docker 节点保持运行即可。注意,从登录到进入活跃的验证人集合并开始投票,将会花费大概 1.5 代(dynasty)(通常 30 分钟左右)的时间。

检查状态

除了 web3 路由,你可以通过 Python console 进行节点的不同玩法。在 Python console 中输入 Ctrl+C,你会看到一个提示:Hit [ENTER], to launch console; [Ctrl+C] again to quit! [0s]。再次输入 Ctrl+C,你就会进入 console 了。

在 Python console 中,你可以使用 eth.chain 来获取 pyethereum Chain 对象(文档在 这里)。使用 eth.services.accounts.accounts[0].address 来获得你的验证人地址,地址同样也可以作为验证者的一种 ID。你也可以创建一个 Python 对象来调用 Casper 合约的命令:

>> import urllib.request, json
>> casper_abi = casper_abi = json.load(urllib.request.urlopen( "https://gist.githubusercontent.com/vbuterin/868a6213b058fb4f1fdfcf64e54f0e91/raw/33fc177da3863ec320d1ebf95816ba52ffbffbe8/casper_abi"))
>> from ethereum.tools import tester
>> casper = tester.ABIContract(tester.State(eth.chain.state), casper_abi, '0xbd832b0cd3291c39ef67691858f35c71dfb3bf21')
>> casper.get_current_epoch()
# This should return the current epoch number

获取自身数据:

>> my_index = casper.get_validator_indexes(eth.services.accounts.accounts[0].address)
>> 
# This should return your current deposit size
>> casper.get_deposit_size(my_index)
>> 
# This should return the current dynasty, and your validator's start and end dynasty
>> casper.get_dynasty(), casper.get_validators__start_dynasty(my_index), casper.get_validators__end_dynasty(my_index)

使用 eth.app.services.chain.broadcast_transaction(tx) 来广播一笔交易。

输入 Ctrl+D 来退出 pyethapp。

退出

你可以使用下面的命令退出:

make run-node validate=true logout=true bootstrap_node=enode://d3260a710a752b926bb3328ebe29bfb568e4fb3b4c7ff59450738661113fb21f5efbdf42904c706a9f152275890840345a5bc990745919eeb2dfc2c481d778ee@54.167.247.63:30303

然后任由验证人运行,当撤销阶段(withdrawal period )结束,它会自动发送另外一笔交易来撤销你的验证人身份。

注意,通常来说,保持在线是很重要的。作为一个验证人,只有当你的在线时长超过普通情况的一半,才可能盈利。如果很多其他验证人离线,那么你可能需要几乎保持时刻在线,才能够不招致损失。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,736评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,167评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,442评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,902评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,302评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,573评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,847评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,562评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,260评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,531评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,021评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,367评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,016评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,068评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,827评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,610评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,514评论 2 269

推荐阅读更多精彩内容