2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【Substrate】フォークレスチェーンアップグレードのやり方

Posted at

#凄いぞフォークレスアップグレード
Substrateのブロックチェーンの特徴の一つはフォークレス、リアルタイムのチェーンアップグレードですよね。とっても便利だと思ったので皆さんにシェアします。
メリット、デメリット、やり方、解説の順で説明していきます。

メリット:

・Cargo buildをしなくていいので実装が速い!
・チェーンをpurgeしないので既存ノードや状態が保たれる!

デメリット:

・ネイティブに比べインタープレターなので処理は遅め

##やり方 (wasmとcargoでビルド済前提。まだの人はこちら

  1. いつも通りノードを動かす
bash1
$ ./runtime/release/<project name> --dev
  1. 別ターミナル開いてWasmのビルド実行
bash2
$ ./build

すると以下のパスにcompact.wasmファイルが作成されます。
./runtime/wasm/target/wasm32-unknown-unknown/release/node_template_runtime_wasm.compact.wasm

  1. Polkadot UIのExtrinsicsでAliceを選択後(SudoはadminであるAliceのみが呼べます)、先ほどのcompact.wasmファイルをインプットしてSubmit。Sudidイベントが表示されれば成功です!
sudo > sudo(proposal)
proposal: Proposal (extrinsic): consensus > setCode(new)

Screen Shot 2019-03-30 at 21.27.13 (2).png

ページ更新すると追加した機能が反映されています。
ランタイムアップグレード前のストレージ状態(バランス、アカウント等)もそのまま残っていることが確認できます。

##何が起こっているのか
今動いているブロックチェーンはSubstrateが提供するWasmインタープレターを通してランタイムを動かしています。これにより、新しい機能などを既存のノードや状態を壊すことなく簡単に実装することができます。

このランタイムはブロックチェーン上にあるので、チェーンで動いているノード全てがリアルタイムで同期されます。上でも言ったように、Wasmインタプレターはネイティブバイナリに比べると処理が遅いので、必要によってcargo build --releaseと使い分けましょう。

Source: Shawn Tabrizi

2
3
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
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?