前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Alpha Casper FFG 测试网指南

Alpha Casper FFG 测试网指南

作者头像
用户1558438
发布2018-08-23 17:43:16
5570
发布2018-08-23 17:43:16
举报
文章被收录于专栏:liuchengxu

欢迎来到基于 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):

代码语言:javascript
复制
> 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

然后:

代码语言:javascript
复制
> 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(如果你还没有安装的话):

代码语言:javascript
复制
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 镜像(注意,这会有几百兆的下载):

代码语言:javascript
复制
$ 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:

运行:

代码语言:javascript
复制
$ make run-node bootstrap_node=enode://d3260a710a752b926bb3328ebe29bfb568e4fb3b4c7ff59450738661113fb21f5efbdf42904c706a9f152275890840345a5bc990745919eeb2dfc2c481d778ee@54.167.247.63:30303

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

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

代码语言:javascript
复制
$ 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)。

要挖矿的话:

代码语言:javascript
复制
$ make run-node mine_percent=90 bootstrap_node=enode://d3260a710a752b926bb3328ebe29bfb568e4fb3b4c7ff59450738661113fb21f5efbdf42904c706a9f152275890840345a5bc990745919eeb2dfc2c481d778ee@54.167.247.63:30303

如果出现下面的错误:

代码语言:javascript
复制
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 命令,以一个验证人的身份登录,运行:

代码语言:javascript
复制
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 合约的命令:

代码语言:javascript
复制
>> 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

获取自身数据:

代码语言:javascript
复制
>> 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。

退出

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

代码语言:javascript
复制
make run-node validate=true logout=true bootstrap_node=enode://d3260a710a752b926bb3328ebe29bfb568e4fb3b4c7ff59450738661113fb21f5efbdf42904c706a9f152275890840345a5bc990745919eeb2dfc2c481d778ee@54.167.247.63:30303

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018.01.01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是 Casper FFG,它是如何工作的
  • 前言
  • 运行一个节点
  • 运行一个验证者
  • 检查状态
  • 退出
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档