Upgrade to Pro — share decks privately, control downloads, hide ads and more …

CEXやDEXに依存しないブロックチェーン取引について考える

 CEXやDEXに依存しないブロックチェーン取引について考える

https://sbtechnight.connpass.com/event/266723/
2023/01/19(木) 18:50〜
増枠!SoftBank Tech Night #10 Web3.0の実用性を探る
@ソフトバンク

SoftBank Tech Night

January 19, 2023
Tweet

More Decks by SoftBank Tech Night

Other Decks in Technology

Transcript

  1. CEX や DEX に依存しない ブロックチェーン取引について考える ソフトバンク株式会社 クラウドエンジニアリング本部 PaaSエンジニアリング統括 ソリューションアーキテクト部 SA1課

    向山 裕一朗 [email protected] 2023年1月19日
  2. 01 02 03 04 はじめに Hashed time lock contract とは

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

  4. 2013-04 エンタープライズ向け営業職で入社 向山 裕一朗 mukaiyama yuichiro 2013-03 大学卒業 こども学科卒業 2018-10

    週末エンジニアを副業として始める 2019-01 イベントで Blockchain NEM を知る 2021-09 Blockchain 関連のアプリ等を作り始める 2022-11 東京 Web3 ハッカソン DAO部門3位入賞 (実は教育専攻)
  5. 本日発表する事 異なるブロックチェーン間での直接取引 Atomic swap の実現の検証結果

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

  7. 取り組んだ理由 ステーブルトークン JPYC 等 決済 スマコンとして ETH等 契約 万を超える チェーン群

    その他 DIDとして ION 等 認証 SYMBOL 等 保存 多種多様の特徴を持つチェーンが登場 これらが相互に連携し高度な機能を 実現していくと想定
  8. 例えば… 複雑な契約処理 × 決済 3社間契約、かつ、各企業内で役職者の承認を得た多段契約を表現 同意者 申請者 承認者 決済特化チェーンの処理 契約特化チェーンの処理

    もしくはプライバシー重視のプライベートチェーン
  9. 実現方法 = 今回検証した事 Hashed Time Lock Contract を活用する Atomic swap

    を実現する手法の1つ CEX / DEX や ブリッジを介さず、トラストレスな交換が可能 HashLock と TimeLock を活用して実現する HashLock ... 特定のHashを有するトランザクションが公開されるまで、処理を中断する解除条件(Encumbrance) TimeLock ... 一定時間の経過、もしくは一定Block数等の経過迄処理を中断する解除条件(Encumbrance)
  10. HASHED TIME LOCK CONTRACT とは 02 ※ 以降 HTLC と表記

  11. 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 はビットコインで条件付き 支払いを生成するための強力な手法になります。 言葉が難しいので次のページで具体例とともに説明します
  12. 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 を得る
  13. HTLC における鍵とは 鍵 = crypto.randomBytes(32) = SHA256(SHA256(鍵)) hash 前頁の図を鍵の取り扱いだけで抜粋、簡略図 Lock

    は SHA256(SHA256(鍵)) における "鍵" を渡した時、 hash と 合致すれば、 Lock が解除され、処理が開始されます HTLC を行いたいチェーンで このHASH関数や数式が同一、 かつ HashLock, TimeLock が両チェーンで可能である場合、 HTLC の実行が可能となります
  14. 具体的な処理フロー 大きな画面で確認されたい場合は 以下の当方 Qiita 記事内で確認出来ます

  15. HTLC で持ち逃げはされないのか? 例えば以下のケース Alice が ロックされた取引を発行するも、 Bob が何も発行しなかった Alice が

    悪意を持って本来と異なる内容でロックされた取引を発行した Bob が 悪意を持って本来と異なる内容でロックされた取引を発行した Alice が 鍵 でBob からの支払いを受領するも Bob が 対価を受け取らなかった 1. 2. 3. 4.
  16. 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 では中央管理者がいない為、取引の責任は自身にあります
  17. HASHED TIME LOCK CONTRACT のやり方 03

  18. 各チェーンでの作業事項 [ EVM系 ] [ 他 ] Symbol Ethereum, Polygon,

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

  20. Solidity 開発 Ethereum, Polygon, JPYC 作成済みのソースコード レポジトリ ERC XX と幾つかの規格が存在する為、それぞれ作成

    特に JPYC は ERC20 規格の為、今回必須 ERC20 ERC721 用意するメソッドは以下の通り newContract ... Lock Transaction の発行 withDraw ... 鍵を用いてロック解除 refund ... 最終的に解錠されなかった場合に引き戻す処理用
  21. スマートコントラクトのデプロイ Ethereum, Polygon, JPYC 右の通り、各チェーンのネットワークを定義 今回 deploy に truffle というツールを活用

    Solidity のビルドと デプロイの同時実行 ※ 以下 sepolia の場合 デプロイ結果のログより contract address は手元にメモ
  22. スマートコントラクト実行用コードの開発 Ethereum, Polygon, JPYC 作成済みのソースコード レポジトリ 例) Lock Transaction の発行時

    Javascript コード
  23. [ 他 ] Symbol

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

  25. [ テスト実行 ]

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

  27. あとがき 04

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

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

  30. ブロックチェーン 無料入門コンテンツ公開中 Javascript で送金やトークン発行をやってみよう ※ Softbank としてではなく当方が個人的に公開しているものとなります ※ 原作者は @xembook

    です。当方が翻訳促進、ホスティングを行っています 1.はじめに 2.環境構築 3.アカウント 4.トランザクション 5.モザイク 6.ネームスペース 7.メタデータ 8.ロック 9.マルチシグ化 10.監視 11.制限 12.オフライン署名 13.検証 コンテンツ目次 https://learn.ja.symbol-community.com
  31. [email protected] Empowering People Blockchain @faunsu19000 https://ethereum.org https://polygon.technology https://jpyc.jp https://docs.symbol.dev/index.html with