Slide 1

Slide 1 text

CEX や DEX に依存しない ブロックチェーン取引について考える ソフトバンク株式会社 クラウドエンジニアリング本部 PaaSエンジニアリング統括 ソリューションアーキテクト部 SA1課 向山 裕一朗 [email protected] 2023年1月19日

Slide 2

Slide 2 text

01 02 03 04 はじめに Hashed time lock contract とは Hashed time lock contract のやり方 後書き 目次 終了後、疑問点等は遠慮なくご質問下さい 本日はやってみた形式にて発表を行なっていきます

Slide 3

Slide 3 text

はじめに 01

Slide 4

Slide 4 text

2013-04 エンタープライズ向け営業職で入社 向山 裕一朗 mukaiyama yuichiro 2013-03 大学卒業 こども学科卒業 2018-10 週末エンジニアを副業として始める 2019-01 イベントで Blockchain NEM を知る 2021-09 Blockchain 関連のアプリ等を作り始める 2022-11 東京 Web3 ハッカソン DAO部門3位入賞 (実は教育専攻)

Slide 5

Slide 5 text

本日発表する事 異なるブロックチェーン間での直接取引 Atomic swap の実現の検証結果

Slide 6

Slide 6 text

今回 Atomic Swap させたチェーン Ethereum polygon JPYC Symbol

Slide 7

Slide 7 text

取り組んだ理由 ステーブルトークン JPYC 等 決済 スマコンとして ETH等 契約 万を超える チェーン群 その他 DIDとして ION 等 認証 SYMBOL 等 保存 多種多様の特徴を持つチェーンが登場 これらが相互に連携し高度な機能を 実現していくと想定

Slide 8

Slide 8 text

例えば… 複雑な契約処理 × 決済 3社間契約、かつ、各企業内で役職者の承認を得た多段契約を表現 同意者 申請者 承認者 決済特化チェーンの処理 契約特化チェーンの処理 もしくはプライバシー重視のプライベートチェーン

Slide 9

Slide 9 text

実現方法 = 今回検証した事 Hashed Time Lock Contract を活用する Atomic swap を実現する手法の1つ CEX / DEX や ブリッジを介さず、トラストレスな交換が可能 HashLock と TimeLock を活用して実現する HashLock ... 特定のHashを有するトランザクションが公開されるまで、処理を中断する解除条件(Encumbrance) TimeLock ... 一定時間の経過、もしくは一定Block数等の経過迄処理を中断する解除条件(Encumbrance)

Slide 10

Slide 10 text

HASHED TIME LOCK CONTRACT とは 02 ※ 以降 HTLC と表記

Slide 11

Slide 11 text

Bitcoin wiki からの引用 A Hash Time Locked Contract or HTLC is a class of payments that use hashlocks and timelocks to require that the receiver of a payment either acknowledge receiving the payment prior to a deadline by generating cryptographic proof of payment or forfeit the ability to claim the payment, returning it to the payer. The cryptographic proof of payment the receiver generates can then be used to trigger other actions in other payments, making HTLCs a powerful technique for producing conditional payments in Bitcoin. HTLC の定義 Google 翻訳 を当てました ハッシュ タイム ロック コントラクトまたは HTLC は、ハッシュロックとタイムロックを使用して、 支払いの受信者が支払いの暗号化証明を生成する ことによって期限前に支払いを受け取ったことを 確認するか、支払いを要求する能力を失い、支払 いを要求する能力を失うことを要求する支払いの クラスです。それを支払人に。 受信者が生成した暗号化された支払い証明は、他 の支払いで他のアクションをトリガーするために 使用できるため、HTLC はビットコインで条件付き 支払いを生成するための強力な手法になります。 言葉が難しいので次のページで具体例とともに説明します

Slide 12

Slide 12 text

HTLC での取引イメージ Blockchain A 上の TOKEN A を売りたい Alice Blockchain B 上の TOKEN B でそれを買いたい Bob がいるとします Alice Bob Alice → Bob 宛 TOKEN A 100枚 鍵がかかっており Bob はまだ受け取り出来ない ① Lock Transaction Blockchain A Blockchain B Bob → Alice 宛 TOKEN B 100枚 ②の Hash から生成した鍵でロック この鍵は Alice の鍵でも開ける事が出来る ③ Lock Transaction ② 共通キーを確認 ① には鍵から生成された Hash が 埋め込まれている。これを取得 ④ 双方ロック解除。 Alice は Token B を、Bob は Token A を受領 Alice は ③ を確認し、取引内容が正しいことを確認 自分の持つ鍵で ③ の鍵を開け、TOKEN B を得る この操作で Alice の鍵が公開される → Bob も同様に ① の鍵を開け TOKEN A を得る

Slide 13

Slide 13 text

HTLC における鍵とは 鍵 = crypto.randomBytes(32) = SHA256(SHA256(鍵)) hash 前頁の図を鍵の取り扱いだけで抜粋、簡略図 Lock は SHA256(SHA256(鍵)) における "鍵" を渡した時、 hash と 合致すれば、 Lock が解除され、処理が開始されます HTLC を行いたいチェーンで このHASH関数や数式が同一、 かつ HashLock, TimeLock が両チェーンで可能である場合、 HTLC の実行が可能となります

Slide 14

Slide 14 text

具体的な処理フロー 大きな画面で確認されたい場合は 以下の当方 Qiita 記事内で確認出来ます

Slide 15

Slide 15 text

HTLC で持ち逃げはされないのか? 例えば以下のケース Alice が ロックされた取引を発行するも、 Bob が何も発行しなかった Alice が 悪意を持って本来と異なる内容でロックされた取引を発行した Bob が 悪意を持って本来と異なる内容でロックされた取引を発行した Alice が 鍵 でBob からの支払いを受領するも Bob が 対価を受け取らなかった 1. 2. 3. 4.

Slide 16

Slide 16 text

HTLC で持ち逃げはされないのか? 解答 Alice が ロックされた取引を発行するも、 Bob が何も発行しなかった [ 問題なし ] TimeLock により、一定期間後経てば Alice に資産は戻る Alice が 悪意を持って本来と異なる内容でロックされた取引を発行した [ 問題なし ] ロックされた取引内容は Bob からも丸見え。Bob は応じなければ良い Bob が 悪意を持って本来と異なる内容でロックされた取引を発行した [ 問題なし ] ロックされた取引内容は Alice からも丸見え。Alice は応じなければ良い Alice が 鍵 でBob からの支払いを受領するも Bob が 対価を受け取らなかった [ 問題なし ] Alice の受け取りはキャンセルされない。その行動を取った Bob が損をするだけ 1. a. 2. a. 3. a. 4. a. 2, 3 は必ず相手の取引内容(契約書)を履行前に確認する前提となります。 自己主権の思想が強い Blockchain では中央管理者がいない為、取引の責任は自身にあります

Slide 17

Slide 17 text

HASHED TIME LOCK CONTRACT のやり方 03

Slide 18

Slide 18 text

各チェーンでの作業事項 [ EVM系 ] [ 他 ] Symbol Ethereum, Polygon, JPYC HTLC を実行する Solidity開発, スマートコントラクトとしてのデプロイ スマートコントラクト実行用コードの開発 1. 2. スマートコントラクト実行用コードの開発 1. ※ Symbol は標準で HTLC 用のコントラクトが用意されている為、用意不要として、上記 1 のみ

Slide 19

Slide 19 text

[ EVM系 ] Ethereum, Polygon, JPYC

Slide 20

Slide 20 text

Solidity 開発 Ethereum, Polygon, JPYC 作成済みのソースコード レポジトリ ERC XX と幾つかの規格が存在する為、それぞれ作成 特に JPYC は ERC20 規格の為、今回必須 ERC20 ERC721 用意するメソッドは以下の通り newContract ... Lock Transaction の発行 withDraw ... 鍵を用いてロック解除 refund ... 最終的に解錠されなかった場合に引き戻す処理用

Slide 21

Slide 21 text

スマートコントラクトのデプロイ Ethereum, Polygon, JPYC 右の通り、各チェーンのネットワークを定義 今回 deploy に truffle というツールを活用 Solidity のビルドと デプロイの同時実行 ※ 以下 sepolia の場合 デプロイ結果のログより contract address は手元にメモ

Slide 22

Slide 22 text

スマートコントラクト実行用コードの開発 Ethereum, Polygon, JPYC 作成済みのソースコード レポジトリ 例) Lock Transaction の発行時 Javascript コード

Slide 23

Slide 23 text

[ 他 ] Symbol

Slide 24

Slide 24 text

スマートコントラクト実行用コードの開発 Symbol 作成済みのソースコード レポジトリ 例) Lock Transaction の発行時 Javascript コード

Slide 25

Slide 25 text

[ テスト実行 ]

Slide 26

Slide 26 text

テスト実行の方法 共通 作成済みのソースコード レポジトリ 是非今後お時間のある際にお試しください 左記例のコードでは一連の処理をまとめて実行します

Slide 27

Slide 27 text

あとがき 04

Slide 28

Slide 28 text

取り組んでみて ユーザーにより適切なツールが異なる = トラストレスなチェーン間の連携は今後どんどん増えるのではないか 企業発行の プライベートチェーン等 銀行発行の ステーブル、チェーン等

Slide 29

Slide 29 text

レポジトリについて 作成済みのソースコード レポジトリ もしご興味がございましたら ご自由にご利用ください

Slide 30

Slide 30 text

ブロックチェーン 無料入門コンテンツ公開中 Javascript で送金やトークン発行をやってみよう ※ Softbank としてではなく当方が個人的に公開しているものとなります ※ 原作者は @xembook です。当方が翻訳促進、ホスティングを行っています 1.はじめに 2.環境構築 3.アカウント 4.トランザクション 5.モザイク 6.ネームスペース 7.メタデータ 8.ロック 9.マルチシグ化 10.監視 11.制限 12.オフライン署名 13.検証 コンテンツ目次 https://learn.ja.symbol-community.com

Slide 31

Slide 31 text

[email protected] Empowering People Blockchain @faunsu19000 https://ethereum.org https://polygon.technology https://jpyc.jp https://docs.symbol.dev/index.html with