Slide 1

Slide 1 text

RootStockについて 最近どんな感じ? @GaNZnO

Slide 2

Slide 2 text

自己紹介 田中優貴(@GaNZnO) リクルートでBlockchainのR&Dやってます。 【最近の興味】 ・Decentralized Identifier (協力) 小林孝裕 フリーのBlockchainエンジニア。Wallet周りをいじってます 【最近の興味】 ・サービス作り、P2P

Slide 3

Slide 3 text

質問 Rootstockと言われて、、 ・Bitcoinでチューリング完全なSmartContract書ける! ・Sidechain使ってる! ・MergedMining使ってる! 上記のいくつくらい思い浮かびますか?

Slide 4

Slide 4 text

今回の趣旨 ・RootStockはおそらく皆概要ぐらい知ってそう ・Sidechain使ってることも知ってそう ・MergedMiningを使ってることも知ってそう ていうかだいたい知ってそう ・実際どう使うの?(とちょっとした技術トピック) ・今どんな感じなの? にフォーカスしました。 ※誤りがある部分について、指摘いただけると嬉しいです!

Slide 5

Slide 5 text

アジェンダ ・RootStockの概要 ・Sidechainの機構 ・MergedMiningの機構 ・開発のやり方 ・まとめ

Slide 6

Slide 6 text

・RootStockの概要 ・Sidechainの機構 ・MergedMiningの機構 ・開発のやり方 ・まとめ

Slide 7

Slide 7 text

RootStock(RSK)概要 Bitcoinのサイドチェーンで稼働する チューリング完全なスマートコントラクトの実行基盤 マイニングは10秒に一度。Merged Mining(後述) Two-way-pegのSidechainでRSKで流通するコインはBitcoinから流入して来たコインの み(There is no currency issuance.) RSKで流通するコインの名前はRBTC (もともとSBTCだった、公式サイト内で表記揺れが激しい) 10秒じゃない、、 (2018/10/23) avg block time 33秒

Slide 8

Slide 8 text

RSK稼働状況 2018年1月にメインネットにリリース 現在のバージョンは0.5.2 (2018/10/24) 暫定対応事項 現在実施中のBug Bounty Programが終了するまでの間、 BTC からRBTCへの変換に利用するBTCのアドレスに制限がある BTCアドレスを事前にWhiteListに登録しておかないと、RBTCに変換できない(セキュリティ 的な暫定処置の模様) 具体的なWhiteListへの登録方法 Mainnet -> 所定のフォームに記載して申請     (何らかのプロジェクトである必要がある?プロジェクトに関する記入が必須) Testnet -> Gitterでお願いする(割とすぐ登録してくれる)

Slide 9

Slide 9 text

・RootStockの概要 ・Sidechainの機構 ・MergedMiningの機構 ・開発のやり方 ・まとめ

Slide 10

Slide 10 text

RSKのSidechain(理想) RSKのSidechainは ・SPV Proof ・Drivechain を利用したHybridモデル

Slide 11

Slide 11 text

RSKのSidechain(現状) ただし外部SPV Proof、DrivechainにはForkが必要になるので、 現状semi-trusted third-parties (STTP)なFederationMemberを必要とする。 つまりPeggingはマルチシグを利用したFederated Pegの模様。 ちなみにFederationMemberは “Blockchain companies with high security standards” “The Federation is able to add or remove members using an on-chain voting system. “ だそうです。

Slide 12

Slide 12 text

FederationAddress BTCとRBTCのペグの際にロックするためのアドレス 複数のFederationMemberのマルチシグアドレス。 RSK上にあるBridgeコントラクトから取得できる ※WhiteListに登録してない場合、 FederationAddressに送金したBTCは自動で返金するようになってます。

Slide 13

Slide 13 text

FederationAddress

Slide 14

Slide 14 text

BTCからRBTCへの交換 1.RSKのBridgeコントラクトに登録してあるFederationAddress(multisig)を取得 2.BTCをFederationAddressに送金 3.FederationMember(後述)がFederationAddressへの入金を検知 4.FederationAddressへの入金TXから入金元のPubkeyを取得。 5.入金元PubKeyからRSKのアドレスを算出 6.RSKのアドレスにRBTC入金 BTC Network RSK Network FederationAddress Tx 1 FederationM ember Tx 2 Sender RSKAddress Confirm Tx 1. Convert BTC PubKey to RSK Address. Sender

Slide 15

Slide 15 text

RSK Address.

Slide 16

Slide 16 text

実使用上の難点 BTCとRBTC交換のタイミングでの待ち時間が結構長い BTC -> RBTC ・BTCでの100承認(約16時間)と最低5分の確認時間 (You have to wait a minimum of 100 confirmations + a minimum of 5 minutes for checking your RBTC balance.) RBTC -> BTC ・RSKでの4000承認(約11時間)と最低10分の確認時間 (Wait 4000 RSK confirmations/blocks and + at least 10 more minutes for your funds to arrive to your BTC address.) RSKのブロック生成時間約10秒として換算すると約11時間だが、 現状ブロック生成時間を見ると2~3倍以上余裕を見た方が良いかも?

Slide 17

Slide 17 text

・RootStockの概要 ・Sidechainの機構 ・MergedMiningの機構 ・開発のやり方 ・まとめ

Slide 18

Slide 18 text

MergedMining概要 マイナーが、コストをかけずに同時に他のコインのマイニングができる技術 Bitcoinのマイナーは、RSKのマイニングを同時に実施し、RSKの手数料収入を得ること ができる (Merge mining is a technique that allows Bitcoin miners to mine simultaneously other cryptocurrencies with near zero marginal cost.)

Slide 19

Slide 19 text

MergedMining機構 1. サイドチェーンのブロックをハッシュ化 2. ハッシュ化されたブロックを偽のBitcoinのTxとして、Bitcoinのブロックに格納 3. BitcoinのPoWを実行 ここで分岐が発生  4.1 BitcoinのDifficultyをクリア  4.2 サイドチェーンのDifficultyをクリア Sidechain Txs Sidechain Block Bitcoin Txs Bitcoin Block Hashed Store as Bitcoin Tx ※当然であるが、 Bitcoin Difficulty > Sidechain Difficulty 正しくいうと OP_RETURNを使ったTx Outputを CoinbaseのTxに付与する

Slide 20

Slide 20 text

BitcoinのDifficultyをクリアした場合 5. Bitcoinのブロックとして伝播する (一部余計なハッシュ値が入るだけの普通のBitcoinのブロック) 6. 通常のBitcoinブロックとして検証する

Slide 21

Slide 21 text

サイドチェーンのDifficultyをクリアした場合 5. 下記全てをサイドチェーンのブロックとして提出する ・BitcoinのTxs ・Bitcoinのブロックヘッダー ・サイドチェーンのオリジナルブロック 6. 各ノードは上記の整合性を検証する  下記のようなことが検証可能(と思われる) ・CoinbaseのTx OutputとサイドチェーンブロックをハッシュしたTx Outputが合致 ・Bitcoinのブロックヘッダーのハッシュ値>サイドチェーンのDifficulty つまりサイドチェーンのブロックを含んだ状態で十分に計算が実施されたことが証明できる

Slide 22

Slide 22 text

②JSON-RPCで取得 mnr_getWork ・RSK block hash ・RSK difficulty MergedMining実施時の簡易システム構成図(想定) Miner (cpuminer、 ASIC etc..) ①JSON-RPCで取得 ・Bitcoin txs ・Bitcoin difficulty ・Bitcoin prev block hash ③マイニング (Stratum+TCP) ④BTCマイニング成功時: JSON-RPCで通知 mnr_submitBitcoinBlock ④’RSKマイニング成功時: JSON-RPCで通知 mnr_submitBitcoinBlockPartialMerkle BTC node RSK node Pool server (CKPoolの改良版) ⑤BTCマイニング成功時: ブロック伝播

Slide 23

Slide 23 text

MergedMiningの現状 現在どれくらいRootStockにおいてHashrateが出ているのか? Avg hash rate 約 14EHs(2018/10/21 @stat.rsk.co) 参考) Bitcoin : 約50EHs (2018/10/19 @Blockchain.com) Ethereum : 約254THs (2018/10/20 @etherscan.io) Exa = 10^18 Peta = 10^15 Tera = 10^12 Bitcoinの約28%のHashrateが出ている 自前のNodeにおいてもDifficultyベースで同じような値を確認可能

Slide 24

Slide 24 text

RSKパートナーのMiningPool 参考)ハッシュレート分布 *Blockchain.com Pool名 顧客向けMergedMiningサービス提供状況 AntPool サービス提供予定(Comming soon…) BTC.com サービス提供中 SlushPool サービス未提供 (However since the network rewards are very close to zero, we decided to not incorporate RSK to dashboard for the time being. ) 3社合計は39.8% SlushPoolを除くと28.7%

Slide 25

Slide 25 text

・RootStockの概要 ・Sidechainの機構 ・MergedMiningの機構 ・開発のやり方 ・まとめ

Slide 26

Slide 26 text

スマートコントラクトの開発 RSKでのスマートコントラクト開発はEthereumと同じくSolidityを利用する (you can migrate your existing Ethereum Smart Contract to RSK Smart without doing any changes. ← Yey!) デプロイはTruffle or RSK専用のコンソールを利用することで可能 Ethereumと同様Truffle + Ganacheで開発可能

Slide 27

Slide 27 text

デプロイについて RSKはEthereumで言うInfra的なものはないので、基本自分のノードにデプロイ 一応RSKが下記Publicノードを提供している https://public-node.testnet.rsk.co (Testnet) https://public-node.rsk.co (Mainnet) mnemonic書いてるけど、、 truffle.jsのイメージ

Slide 28

Slide 28 text

デプロイイメージ(on truffle) truffle画面 Blockchain Explorer画面

Slide 29

Slide 29 text

Gasについて Ethereumと同様にSmartContractの実行にはGasが必要 RSKのブロックにはminimumGasPriceの項目があり。 minimumGasPriceで計算したfee以上でないとブロックに取り込まれない (2018/10/23:ブロック847324のminimumGasPriceは0.00000000005924RBTC) Ethereumでも利用するestimateGasは同じ機構な模様 参考:単なる送金トランザクションの場合) fee = 21000 * 0.00000000005924 * 700000 = 0.87円 (Gas 21000、Bitcoin価格を70万円として計算)

Slide 30

Slide 30 text

Negotiated Minimum Gas Price RSKIP9で採用された技術 minimumGasPriceの値をBlockHeaderに追加している マイナーはminimumGasPriceの値を0.01%だけ増減できる  →10秒でブロックを作成することを考えると1日で約100%増減可能   (計算すると最高2.37倍になる?)

Slide 31

Slide 31 text

・RootStockの概要 ・Sidechainの機構 ・MergedMiningの機構 ・開発のやり方 ・まとめ

Slide 32

Slide 32 text

Rootstockの意味(所感) 多分Ethereumで良い気がする 但し ・EtheruemもPoSに移行したあと何が起こるのかは誰もわからない ・Rootstockは、一応ビットコインの次(?)に高いハッシュレートをもつSmartContract基 盤である ということを考えると、サービスプロバイダー側に近いプレーヤーは RootStockもたまには思い出してみると良いかもしれない。 ブロックチェーンの根本的な課題は有事の際にしか考えられてないが、 サービスに近いレイヤーだけ見てると足元すくわれるので注意!

Slide 33

Slide 33 text

たまにはRootStockちゃんも思い出してあげて! 終わり

Slide 34

Slide 34 text

文献 Are we merge mining RSK? https://support.slushpool.com/article/45-are-we-merge-mining-rsk BTC.com Pool miners can now merge mine RootStock (RSK) https://blog.btc.com/btc-com-pool-miners-can-now-merge-mine-rootstock-rsk-a2d12f154a00 Merged Mining https://help.antpool.com/en/chapter-3/07.html