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日

    View full-size slide

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

    View full-size slide

  3. はじめに
    01

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  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 はビットコインで条件付き
    支払いを生成するための強力な手法になります。
    言葉が難しいので次のページで具体例とともに説明します

    View full-size slide

  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 を得る

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  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 では中央管理者がいない為、取引の責任は自身にあります

    View full-size slide

  17. HASHED TIME LOCK
    CONTRACT のやり方
    03

    View full-size slide

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

    View full-size slide

  19. [ EVM系 ]
    Ethereum, Polygon, JPYC

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  23. [ 他 ]
    Symbol

    View full-size slide

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

    View full-size slide

  25. [ テスト実行 ]

    View full-size slide

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

    View full-size slide

  27. あとがき
    04

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide