LoginSignup
1
4

More than 3 years have passed since last update.

Ethereum2.0のPrysmをインストールする

Posted at

現在の Ethereum (1.0) に大幅な変更(Proof of Stake (PoS) やシャーディングなど)を加えた次世代 Ethereum。
開発コードネームは Serenity。

現在仕様の策定が行われている最中だが、ちょっと動くよ的な実装が出てきたので試してみよう。とりあえずインストールから。
複数の実装があるが、今回はPrysmをお試ししてみました。

Github仕様
https://github.com/ethereum/eth2.0-specs

開発のフェーズ

Ethereum2.0の開発は0〜2のフェーズに分けていて、フェーズ0はBeacon Chain.
フェーズ1はShard Chains、フェーズ2はState Executionと言っている。

フェーズ0Beacon ChainでPoSプロトコル対応、アテステーション、投票などを対応。
フェーズ1Shard Chainsでシャーディングにより負荷分散。
フェーズ2State ExecutionでVMがeWASMで動作するようになる。既存のコンパイラエコシステム(solcなど)が対応してくれるはず。

と言っている。(言っている)

prysmとは

prysmは Prysmatic Labs が開発しているEthreum2.0ビーコンノードとバリデータークライアント。
(a full featured sharding client for Ethereum 2.0 と謳っているよ。)
https://prysmaticlabs.com/

https://github.com/prysmaticlabs/prysm
https://prysmaticlabs.gitbook.io/prysm/how-prysm-works/basic-architecture-overview

とりあえずフェーズ0のtestnet用の実装ができたから試してみてよ!って雰囲気。

インストール&セットアップ

この手順通りやればおk。
https://alpha.prylabs.net/participate

Dockerイメージが用意されていてインストールはすんなり終わる。その後、専用のネットワークでMetamaskと連携したり送金すればバリデータノードになれる模様。

Docker pull

難しいことはない。pullするだけ。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

Step1 Beacon Node 起動

run するだけ。

~/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

Step2 MetaMaskにGoerli networkを追加

eth1.0の独自のtestnetを登録する。

image.png

https://goerli.prylabs.net をMetaMaskに登録する。

image.png

接続が確認できると次に進める。(エラーの場合、画面の下にメッセージが表示される。

そのままYesで進んでいく。

image.png

すぐに3.5ETHもらえているはず。
image.png

image.png

Step3 バリデータノードの起動

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

===========================================================

起動するとDeposit Dataが出てくるのでそれをブラウザにコピペする。

Step4 Beaconノードにつなぐようにバリデータの起動

image.png

ビーコンを起動したのとは別のターミナルで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...

Step5

image.png

デポジットしてねってことなので送金。

image.png

Step6

しばらく待てばアクティベーションされるから待ってな。とのことで待つ。

image.png

statusが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で設定ファイルがあったりするみたいです。強いプロジェクトですね。
続きは長くなったのでまた次の機会に。

1
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
4