Share
Embed
Zerochain
LayerXの開発を進めているZerochain ( https://github.com/LayerXcom/zero-chain )についての発表資料 @blockchain.tokyo
2019-03-26 会場: Microsoft
zak
March 26, 2019
Transcript
30 slides
-
Who am I? zak (Twitter: @zak74702675) ⧫ 慶應義塾大学 理工学部 金子研究室所属
⧫ LayerX R&D インターン ⬪ 2月~ ⬪ Zerochainのお手伝い 2 -
TL;DR: ⧫ ゼロ知識証明という枠組みを用いて,データを秘匿化 して扱うことができるアカウントベースのブロックチェー ンZerochainをご紹介! ⧫ Substrate上に構築することでPolkadotの Parachainとして機能し,一般のブロックチェーンに秘 匿性を与える基礎となる. ⧫
Zerochainのスキーム自体は様々な可能性があるの で,これからどんどん開発を加速させていきます!仲 間を募集中です!! 3 -
⧫ Zerochainについて ご紹介 ⧫ 昨日,Osukeさんによ るブログが公開されま した! ⧫ 基本的に当記事の内 容を中心にお伝えしま
す. ⬪ →リンク Today’s contents 4 -
What is “Zerochain”? (1) ⧫ LayerXのR&Dチームが開発を進めている, データの秘匿化を実現するブロックチェーン. ⧫ 「送金額」を秘匿化することをひとまずの目標として 設定.
⧫ 秘匿化スキームはSubstrate上にモジュールとして 実装. https:/ /github.com/LayerXcom/ zero-chain 5 -
Zerochain technical stack (1) 7 Substrate by Parity Tech. zerochain
module by LayerX inc. P2Pやコンセンサス 等の機能を提供 秘匿化スキーム with Jubjub & Bellman Substrateに組み込むモジュールとして 秘匿化スキームを実装 -
Zerochain technical stack (2) 8 ⧫ Bellman ⧫ groth16という仕様の,Zcashが研究開発を進めて いるzk-SNARKs実装
in Rust ⧫ https:/ /github.com/zkcrypto/bellman ⧫ zerochainではTxの正当性を主張するproofの生 成と検証に使用. -
Zerochain technical stack (3) 9 ⧫ BLS12-381 ⧫ BLS12-381楕円曲線の実装 ⧫
BLS12-381はpairingの値を効率的に計算すること が可能 ⧫ BLS12-381有限体上の楕円曲線:Jubjub ⧫ zerochainではこの楕円曲線を用いたRedjubjub という署名をTxに施している. -
Confidential payment on zerochain 想定するシナリオ ⧫ AliceはBobに40送金したい ⧫ AliceもBobも自分の残高を自 分以外の者に対して秘匿化し
たい ⧫ Aliceは「自分がBobに対して いくら送ったか」を第3者に対し て秘匿化したい ⧫ Bobは「Aliceが確かに40を自 分に送金していること」を確認し たい ➫ ゼロ知識証明 Alice Bob Charlie 11 Before: 100 →After: 60 Before: 100 →After: 140 Transfer 40 -
Storage 12 Storage \ Encrypted balance Alice 0x194ac Bob 0xde531
⧫ アカウントに紐づく(Lifted ElGamal暗号によって)暗号化 された残高がチェーンに記録さ れる. ⧫ Lifted ElGamal暗号は加法準 同型暗号なので暗号化したま ま加減算が可能. ⧫ アカウントごとに残高を復号化 する秘密鍵bdk (balance decryption key)が存在する. -
Transaction structure 13 Alice Sign: Tx Remit 40 unit from
Alice to Bob. Proof (後述) Sender’s addr Alice Recipient’s addr Bob Encrypted value for sender 0x124ab... Encrypted value for recipient 0x057ee... Encrypted balance for sender 0x994dc... -
Proof (1) 14 ⧫ Aliceは自分の残高を見せたく ないし,Bobにいくら送金したか を第3者に隠したい. ⧫ BobはAliceがきちんと40送金 して,自分の残高が更新された
ことを確認したい. ⧫ システムとしてAliceが不正な 値(自分の残高以上や負値)を Bobに送金できないようにした い. ➫ Proofを見て以上が満たされて いることを確認したい. Alice Bob Proof check true/false 0x37485bcdeef719a... Proof Txに付されるProofを検証. これによって送 金される値が変 な 値 ではないこと( 次 頁 の statementを 満 たしているこ と)が保証される. Proof自体からAliceの送金額は 求められない(zk) Pairing Check -
Keys 17 残高を秘匿化するための鍵系 公開鍵 秘密鍵 bdk - 公開情報 - Aliceの
残高を暗号 化 するに 使 用 - Aliceの残 高の復号化 に使用 - 監査用鍵 として 使 用 可能 公開鍵 - 公開情報 - Txが正当 にAliceから 発 行された かを確認時 に使用 Txに署名を施すための鍵系 秘密鍵 - AliceがTx 発行の署名 時に使用 -
zerochain v.s. Zcash ⧫ Zcashと比較してzkの証明コストが抑え られるように全体をデザイン. ⧫ Account-Based ➫ ストレージに保存しておくべきデータ容
量が削減可能 ➫ 加えて,任意のStateを扱うことが可能. ➫ 例えばSecurity Tokenの台帳と しての利用.投資家にとって「何 をどのいくら持っているか」は秘 匿化したい情報. ⧫ Account Baseな秘匿送金スキームは ペーパーレベルでは提案されているも のの,実装は世界初(弊社調べ) ⧫ UTXO-Based ⧫ 「誰が誰にいくら送金」を秘匿化するこ とが可能. 19 -
What’s next? 20 ⧫ アカウントの秘匿化に対応. ⧫ 証明系をBulletproofsにも対応. ⧫ setupが不要. ⧫
Walletの開発 ⧫ wasmで動くwebウォレット ⧫ 監査のための閲覧用ウォレット ⧫ Security Tokenの管理など,通貨以外の分野への応用可 能性の検討と実装 -
Features of Substrate (1) 23 ⧫ Substrate ⧫ ブロックチェーンを用いたシステムに必須となるP2P のnetworkingやconsensusアルゴリズムを提
供. ⧫ “Substrate runtime module library (SRML)”と して独自機能を取り込ませることでブロックチェーン そのものを開発することが可能. ⧫ modularな設計から高い拡張性を実現. -
Features of Substrate (2) 24 ⧫ P2P networkingにはLibp2p を採用 ⧫
ConsensusはHybrid PBFT/Aurandをdefault採用 ⧫ Aurandでintermediateなfinalityを与え,PBFTで absoluteなfinalityを与える. ⧫ Aurandで5 sec/block,PBFTで30 sec/block Aurand PBFT -
Features of Substrate (3) 25 ⧫ Substrateは”core”と”srml”から構成. ⧫ coreの上にsrmlが鎮座. network
rpc mempool consensus ... asset timestamp balance ... -
Features of Substrate (4) 26 ⧫ Substrate Core ⧫ Block
synchronisation ⧫ Extensible JSON-RPC API endpoints ⧫ Crypto primitives library ⧫ Pervasive and secure networking via libp2p ⧫ Storage ⧫ Telemetry ⧫ Light client ⧫ Chain specification and versioning ⧫ Pluggable consensus ⧫ Low-level JavaScript utils ⧫ Transaction queue and block production mechanism ⧫ Sandboxed WebAssembly interpreter ⧫ Interchain connectivity via the Polkadot protocol -
Features of Substrate (5) 27 ⧫ Substrate Runtime Module Library
⧫ Accounts & Balances - basic cryptocurrency, including account management and viewing ⧫ Assets - simple, secure additional on-chain fungible assets ⧫ Consensus - setting and modifying runtime code and storage (i.e. the set of authorities as a list of session keys on-chain), and reporting offline or misbehaving validators ⧫ Contracts - turbo-charged Wasm-based smart contracts ⧫ Council - council election and proposals ⧫ Democracy - public proposals and referendums ⧫ Sessions - key rotation for authorities ⧫ Staking - Proof-of-Stake logic, including both staking and nominating of validator accounts ⧫ Timestamp - have your chain know about time ⧫ Treasury - decentralised grants, similar to a DAO -
Features of Substrate (6) 28 ⧫ ブロックに刻むデータ構 造とロジックを記述するだ けで,実際に動くチェーン を開発することが可能.
⧫ チュートリアルとして Substrate Kittiesという子猫 の管理/売買システムを開発することができるので 是非. -
Features of Substrate (7) 29 ⧫ Substrateで開発されたチェーンはhard forkせずとも ロジックをupdateすることが可能. ⧫
チェーンロジックをwasmとして吐き,それをネット ワーク内に通常のメッセージと同様に伝搬させるこ とでチェーンを止めることなくチェーンのロジックを 変更するようにSubstrateが取り計らってくれる.