安装以太坊2.0的Prysm软件
将现在的以太坊(1.0)进行了重大改变,并加入了下一代以太坊的新功能(如权益证明(PoS)和分片等)。该项目的开发代号是Serenity。
目前正在进行规格制定的过程中,但由于有一个稍微移动的实施方案出现了,所以我们来试试看。首先从安装开始。
虽然有多种实施方案可供选择,但这次我选择了Prysm来尝试一下。
Github规范
https://github.com/ethereum/eth2.0-specs
开发阶段
以太坊2.0的开发分为0到2个阶段,第0阶段是信标链。
第1阶段是分片链,第2阶段是状态执行。
フェーズ0在Beacon Chain中实现了PoS协议、认证和投票等功能。
フェーズ1通过使用Shard Chains实现了负载均衡。
フェーズ2实现了使用eWASM进行VM的状态执行。已有的编译器生态系统(如solc等)应该会对此进行支持。
他正在说着呢。(正在说着)
prysm是什么?
prysm是Prysmatic Labs正在开发的以太坊2.0信标节点和验证者客户端。(宣称是一种完备的以太坊2.0分片客户端。)
https://prysmaticlabs.com/
以下是对于给定链接的中文释义:
https://github.com/prysmaticlabs/prysm
https://prysmaticlabs.gitbook.io/prysm/how-prysm-works/basic-architecture-overview
https://github.com/prysmaticlabs/prysm 是一个资源库的链接,其中包含了与 Prysm 有关的代码和开发工具等内容。
https://prysmaticlabs.gitbook.io/prysm/how-prysm-works/basic-architecture-overview 是一个链接,提供了 Prysm 的基本架构概述和工作原理的详细信息。
暂时实现了阶段0的测试网版本,你可以试试看!就是这种感觉。
安装和设置
按照这个步骤做就可以。
提供了Docker镜像,安装过程很顺利。然后,通过与专用网络连接Metamask或进行转账,即可成为验证节点。
拉取Docker
没有什么是困难的。只需拉取一下。确保安装了Docker。
~/tmp/kirameki
❯ docker pull gcr.io/prysmaticlabs/prysm/validator:sapphire
docker pull gcr.io/prysmaticlabs/prysm/beacon-chain:sapphire
sapphire: Pulling from prysmaticlabs/prysm/validator
07accba52567: Pull complete
504c4248e1c7: Pull complete
Digest: sha256:fce2b0d6b0a6d35a575f8f6b8b4eabb36b2cbd9f0131088d6caef65adc264e1a
Status: Downloaded newer image for gcr.io/prysmaticlabs/prysm/validator:sapphire
sapphire: Pulling from prysmaticlabs/prysm/beacon-chain
07accba52567: Already exists
556f4a32d7b7: Pull complete
Digest: sha256:5e0a81c3ad5221c1f2e9a2836e55c2d3dc93a6f5d81a62188822266f5da1daa2
Status: Downloaded newer image for gcr.io/prysmaticlabs/prysm/beacon-chain:sapphire
第一步:启动信标节点。
只要跑。
~/tmp/kirameki 7s
❯ docker run -v /tmp/prysm-data:/data -p 4000:4000 \
gcr.io/prysmaticlabs/prysm/beacon-chain:latest \
--datadir=/data
--clear-db
Unable to find image 'gcr.io/prysmaticlabs/prysm/beacon-chain:latest' locally
latest: Pulling from prysmaticlabs/prysm/beacon-chain
07accba52567: Already exists
43df4a039f45: Pull complete
Digest: sha256:d9a59ad42cf5e29b5064e9e1600820d4cccd6cbdb4eec5f76b2b5d58c84c182a
Status: Downloaded newer image for gcr.io/prysmaticlabs/prysm/beacon-chain:latest
time="2019-06-11 06:47:09" level=info msg="Using custom parameter configuration" prefix=node
time="2019-06-11 06:47:09" level=info msg="Checking db" path="/data/beaconchaindata" prefix=node
time="2019-06-11 06:47:09" level=info msg="Fetching testnet cluster address" endpoint="https://beta.prylabs.net/contract" prefix=node
time="2019-06-11 06:47:11" level=info msg="Starting beacon node" prefix=node version="Git commit: d9ee55013d04dc7fd255cd1a981d6bdb4a24fa41. Built at: 2019-06-10 18:35:06+00:00"
time="2019-06-11 06:47:11" level=info msg="Starting 8 services: [*p2p.Server *powchain.Web3Service *attestation.Service *operations.Service *blockchain.ChainService *sync.Service *rp
c.Service *prometheus.Service]" prefix=registry
time="2019-06-11 06:47:11" level=info msg="Starting service" prefix=p2p
time="2019-06-11 06:47:11" level=info msg="Starting service" endpoint="wss://goerli.prylabs.net/websocket" prefix=powchain
time="2019-06-11 06:47:11" level=info msg="Starting service" prefix=attestation
time="2019-06-11 06:47:11" level=info msg="Starting service" prefix=operation
time="2019-06-11 06:47:11" level=info msg="Waiting for ChainStart log from the Validator Deposit Contract to start the beacon chain..." prefix=blockchain
time="2019-06-11 06:47:11" level=info msg="Starting service" prefix=sync
time="2019-06-11 06:47:11" level=info msg="Starting service" prefix=rpc
time="2019-06-11 06:47:11" level=info msg="Listening on port" port=4000 prefix=rpc
time="2019-06-11 06:47:11" level=warning msg="You are using an insecure gRPC connection! Provide a certificate and key to connect securely" prefix=rpc
time="2019-06-11 06:47:11" level=info msg="Starting service" endpoint=":8080" prefix=prometheus
time="2019-06-11 06:47:18" level=info msg="Minimum number of validators reached for beacon-chain to start" ChainStartTime=2019-05-28 12:46:00 +0000 UTC prefix=powchain
time="2019-06-11 06:47:18" level=info msg="ChainStart time reached, starting the beacon chain!" prefix=blockchain
time="2019-06-11 06:47:18" level=info msg="Validator activated" activationEpoch=0 index=0 prefix=validator
步骤2:在MetaMask中添加到Goerli网络。
注册eth1.0的专属testnet。

将https://goerli.prylabs.net添加到MetaMask账户中。

如果可以确认连接,就可以继续下一步。(如果出现错误,屏幕下方会显示一条消息。)
直接按照「是」继续前进。



第三步:启动验证节点。

~/tmp/kirameki
❯ docker run -it -v /tmp/prysm-data:/data \
gcr.io/prysmaticlabs/prysm/validator:sapphire \
accounts create --keystore-path=/data --password=KINGKINGKING
[2019-06-11 07:01:46] INFO accounts: Keystore generated for shard withdrawals at path path=/data/shardwithdrawalkeya73a5986d39b
[2019-06-11 07:01:47] INFO accounts: Keystore generated for validator signatures at path path=/data/validatorprivatekeyb1cd95b655be
[2019-06-11 07:01:47] INFO accounts: Account creation complete! Copy and paste the deposit data shown below when issuing a transaction into the ETH1.0 deposit contract to activate your validator client
========================Deposit Data=======================
0xbc00000060000000b1cd95b655be658c7ecd319960fdd4afedd327bcc5789609ae948ed7216597a75e25b628bd7a857e0489b41877ae4ec3147d021d81183f5d91f955b26074be64b0612d0c7b102bf8c4c6028754ca10ef00086bf79d228bf9d41e24593d110dfb30000000962a786079790f488972562b4bfb7194c3e97ce8bf5dad77435b4ed70e4fd8bcedcea0dee3860c451347dddfe82367b32000000000ebe1c01e5c89dc2a796aa76567b2dc571805d9bd13a585a6a0ce1501e7eb86
===========================================================
启动后,会出现存款数据,然后将其复制粘贴到浏览器中。
第四步:启动验证者以连接到Beacon节点。

在启动Beacon之外的另一个终端上启动Varidator。
~/tmp/kirameki
❯ docker run -it -v /tmp/prysm-data:/data --network="host" \
gcr.io/prysmaticlabs/prysm/validator:sapphire \
--beacon-rpc-provider=127.0.0.1:4000 \
--keystore-path=/data \
--password=KINGKINGKING
[2019-06-11 07:05:47] INFO node: Using custom parameter configuration
[2019-06-11 07:05:47] INFO node: Starting validator node version=Git commit: becd06553b860a7c24c19f43e5e8e1841c57479b. Built at: 2019-05-17 23:48:17+00:00
[2019-06-11 07:05:47] INFO registry: Starting 2 services: [*prometheus.Service *client.ValidatorService]
[2019-06-11 07:05:47] INFO prometheus: Starting service endpoint=:8080
[2019-06-11 07:05:47] INFO validator: Initializing new validator service publicKey=0xb1cd95b655be658c7ecd319960fdd4afedd327bcc5789609ae948ed7216597a75e25b628bd7a857e0489b41877ae4ec3147d021d81183f5d91f955b26074be64b0612d0c7b102bf8c4c6028754ca10ef00086bf79d228bf9d41e24593d110dfb
[2019-06-11 07:05:47] WARN validator: You are using an insecure gRPC connection! Please provide a certificate and key to use a secure connection.
[2019-06-11 07:05:47] INFO validator: Successfully started gRPC connection
[2019-06-11 07:05:47] INFO validator: Waiting for beacon chain start log from the ETH 1.0 deposit contract...
步骤5

因为要求存款,所以请进行汇款。

第六步
如果等一会儿,就会被激活,所以请等待一下。根据这个说法,我会等待。

状态从PENDING_ACTIVE变为ACTIVE。
~snip;
[2019-06-11 07:12:20] INFO validator: Waiting for validator to be activated in the beacon chain
[2019-06-11 07:12:20] INFO validator: Not yet included in state... publicKey=0xb1cd95b655be658c7ecd3199 status=UNKNOWN_STATUS
[2019-06-11 07:12:27] INFO validator: Waiting for validator to be activated in the beacon chain
[2019-06-11 07:12:27] INFO validator: Waiting to be activated depositInclusionSlot=198235 positionInActivationQueue=1 publicKey=0xb1cd95b655be658c7ecd3199 status=PENDING_ACTIVE
[2019-06-11 07:12:33] INFO validator: Waiting for validator to be activated in the beacon chain
[2019-06-11 07:12:33] INFO validator: Waiting to be activated depositInclusionSlot=198235 positionInActivationQueue=1 publicKey=0xb1cd95b655be658c7ecd3199 status=PENDING_ACTIVE
[2019-06-11 07:12:39] INFO validator: Waiting for validator to be activated in the beacon chain
~snip;
[2019-06-11 07:16:19] INFO validator: Waiting to be activated depositInclusionSlot=198235 positionInActivationQueue=1 publicKey=0xb1cd95b655be658c7ecd3199 status=PENDING_ACTIVE
[2019-06-11 07:16:25] INFO validator: Waiting for validator to be activated in the beacon chain
[2019-06-11 07:16:25] INFO validator: Validator status activationEpoch=24788 depositInclusionSlot=198235 positionInActivationQueue=0 publicKey=0xb1cd95b655be658c7ecd3199 status=ACTIVE
[2019-06-11 07:16:25] INFO validator: Validator activated publicKey=0xb1cd95b655be658c7ecd319960fdd4afedd327bcc5789609ae948ed7216597a75e25b628bd7a857e0489b41877ae4ec3147d021d81183f5
d91f955b26074be64b0612d0c7b102bf8c4c6028754ca10ef00086bf79d228bf9d41e24593d110dfb
[2019-06-11 07:16:25] INFO validator: New assignment attesterSlot=198308 proposerSlot=Not proposing shard=0 status=ACTIVE validator=b1cd95b655be
[2019-06-11 07:16:25] INFO validator: Updated validator assignments assignments=1
~snip;
总结
暂时启动了。没有确认是否已经实现了RPC等功能。
听说有gRPC或k8s之类的配置文件。这个项目很强大呢。
因为内容比较长,下次再说吧。