安装以太坊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。

image.png

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

image.png

如果可以确认连接,就可以继续下一步。(如果出现错误,屏幕下方会显示一条消息。)

直接按照「是」继续前进。

image.png
image.png
image.png

第三步:启动验证节点。

image.png
~/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节点。

image.png

在启动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

image.png

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

image.png

第六步

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

image.png

状态从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之类的配置文件。这个项目很强大呢。
因为内容比较长,下次再说吧。

bannerAds