Slide 1

Slide 1 text

Zerochain hosted by zak 1

Slide 2

Slide 2 text

Who am I? zak (Twitter: @zak74702675) ⧫ 慶應義塾大学 理工学部 金子研究室所属 ⧫ LayerX R&D インターン ⬪ 2月~ ⬪ Zerochainのお手伝い 2

Slide 3

Slide 3 text

TL;DR: ⧫ ゼロ知識証明という枠組みを用いて,データを秘匿化 して扱うことができるアカウントベースのブロックチェー ンZerochainをご紹介! ⧫ Substrate上に構築することでPolkadotの Parachainとして機能し,一般のブロックチェーンに秘 匿性を与える基礎となる. ⧫ Zerochainのスキーム自体は様々な可能性があるの で,これからどんどん開発を加速させていきます!仲 間を募集中です!! 3

Slide 4

Slide 4 text

⧫ Zerochainについて ご紹介 ⧫ 昨日,Osukeさんによ るブログが公開されま した! ⧫ 基本的に当記事の内 容を中心にお伝えしま す. ⬪ →リンク Today’s contents 4

Slide 5

Slide 5 text

What is “Zerochain”? (1) ⧫ LayerXのR&Dチームが開発を進めている, データの秘匿化を実現するブロックチェーン. ⧫ 「送金額」を秘匿化することをひとまずの目標として 設定. ⧫ 秘匿化スキームはSubstrate上にモジュールとして 実装. https:/ /github.com/LayerXcom/ zero-chain 5

Slide 6

Slide 6 text

What is “Zerochain”? (2) 6

Slide 7

Slide 7 text

Zerochain technical stack (1) 7 Substrate by Parity Tech. zerochain module by LayerX inc. P2Pやコンセンサス 等の機能を提供 秘匿化スキーム with Jubjub & Bellman Substrateに組み込むモジュールとして 秘匿化スキームを実装

Slide 8

Slide 8 text

Zerochain technical stack (2) 8 ⧫ Bellman ⧫ groth16という仕様の,Zcashが研究開発を進めて いるzk-SNARKs実装 in Rust ⧫ https:/ /github.com/zkcrypto/bellman ⧫ zerochainではTxの正当性を主張するproofの生 成と検証に使用.

Slide 9

Slide 9 text

Zerochain technical stack (3) 9 ⧫ BLS12-381 ⧫ BLS12-381楕円曲線の実装 ⧫ BLS12-381はpairingの値を効率的に計算すること が可能 ⧫ BLS12-381有限体上の楕円曲線:Jubjub ⧫ zerochainではこの楕円曲線を用いたRedjubjub という署名をTxに施している.

Slide 10

Slide 10 text

What is confidential payment? 誰が誰にいくら送金したかを 秘匿化 Alice Bob ? Alice Bob ? ? 10

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

Storage 12 Storage \ Encrypted balance Alice 0x194ac Bob 0xde531 ⧫ アカウントに紐づく(Lifted ElGamal暗号によって)暗号化 された残高がチェーンに記録さ れる. ⧫ Lifted ElGamal暗号は加法準 同型暗号なので暗号化したま ま加減算が可能. ⧫ アカウントごとに残高を復号化 する秘密鍵bdk (balance decryption key)が存在する.

Slide 13

Slide 13 text

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...

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

Proof (2) 15

Slide 16

Slide 16 text

Proof (3) 16 83% Off 106604 18278

Slide 17

Slide 17 text

Keys 17 残高を秘匿化するための鍵系 公開鍵 秘密鍵 bdk - 公開情報 - Aliceの 残高を暗号 化 するに 使 用 - Aliceの残 高の復号化 に使用 - 監査用鍵 として 使 用 可能 公開鍵 - 公開情報 - Txが正当 にAliceから 発 行された かを確認時 に使用 Txに署名を施すための鍵系 秘密鍵 - AliceがTx 発行の署名 時に使用

Slide 18

Slide 18 text

Let's Demo! 18

Slide 19

Slide 19 text

zerochain v.s. Zcash ⧫ Zcashと比較してzkの証明コストが抑え られるように全体をデザイン. ⧫ Account-Based ➫ ストレージに保存しておくべきデータ容 量が削減可能 ➫ 加えて,任意のStateを扱うことが可能. ➫ 例えばSecurity Tokenの台帳と しての利用.投資家にとって「何 をどのいくら持っているか」は秘 匿化したい情報. ⧫ Account Baseな秘匿送金スキームは ペーパーレベルでは提案されているも のの,実装は世界初(弊社調べ) ⧫ UTXO-Based ⧫ 「誰が誰にいくら送金」を秘匿化するこ とが可能. 19

Slide 20

Slide 20 text

What’s next? 20 ⧫ アカウントの秘匿化に対応. ⧫ 証明系をBulletproofsにも対応. ⧫ setupが不要. ⧫ Walletの開発 ⧫ wasmで動くwebウォレット ⧫ 監査のための閲覧用ウォレット ⧫ Security Tokenの管理など,通貨以外の分野への応用可 能性の検討と実装

Slide 21

Slide 21 text

Let’s join us! LayerXでは,Zerochainの開発を加速すべく, 一緒に開発を進める仲間を積極的に募集しています! 興味のある方は是非,お声がけください!! ご応募,お待ちしてます!!! 21

Slide 22

Slide 22 text

22

Slide 23

Slide 23 text

Features of Substrate (1) 23 ⧫ Substrate ⧫ ブロックチェーンを用いたシステムに必須となるP2P のnetworkingやconsensusアルゴリズムを提 供. ⧫ “Substrate runtime module library (SRML)”と して独自機能を取り込ませることでブロックチェーン そのものを開発することが可能. ⧫ modularな設計から高い拡張性を実現.

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

Features of Substrate (3) 25 ⧫ Substrateは”core”と”srml”から構成. ⧫ coreの上にsrmlが鎮座. network rpc mempool consensus ... asset timestamp balance ...

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

Features of Substrate (6) 28 ⧫ ブロックに刻むデータ構 造とロジックを記述するだ けで,実際に動くチェーン を開発することが可能. ⧫ チュートリアルとして Substrate Kittiesという子猫 の管理/売買システムを開発することができるので 是非.

Slide 29

Slide 29 text

Features of Substrate (7) 29 ⧫ Substrateで開発されたチェーンはhard forkせずとも ロジックをupdateすることが可能. ⧫ チェーンロジックをwasmとして吐き,それをネット ワーク内に通常のメッセージと同様に伝搬させるこ とでチェーンを止めることなくチェーンのロジックを 変更するようにSubstrateが取り計らってくれる.

Slide 30

Slide 30 text

Features of Substrate (8) 30 ⧫ oo7やpolkadot UIという出来合いのクライアントUIが 提供されている.