Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Atomic Loans
Search
shigeyuki azuchi
July 18, 2019
Technology
0
58
Atomic Loans
GBEC動画解説コンテンツのスライドです。
https://goblockchain.network/2019/07/atomic-loans/
shigeyuki azuchi
July 18, 2019
Tweet
Share
More Decks by shigeyuki azuchi
See All by shigeyuki azuchi
Fiat-Shamir変換と注意点
azuchi
0
17
AssumeUTXOを利用したブロックチェーンの同期
azuchi
0
6
BIP-374 離散対数の等価性証明
azuchi
0
22
BIP-353 DNS Payment Instructions
azuchi
0
38
OP_CAT and Schnorr Trick
azuchi
0
31
Pay to Anchorと1P1Cリレー
azuchi
0
36
プロアクティブ秘密分散法
azuchi
0
54
v3トランザクションリレー
azuchi
0
54
ランポート署名
azuchi
0
96
Other Decks in Technology
See All in Technology
DuckDB-Wasmを使って ブラウザ上でRDBMSを動かす
hacusk
1
130
広島発!スタートアップ開発の裏側
tsankyo
0
260
浸透しなさいRFC 5322&7208
hinono
0
120
R-SCoRe: Revisiting Scene Coordinate Regression for Robust Large-Scale Visual Localization
takmin
0
440
トヨタ生産方式(TPS)入門
recruitengineers
PRO
4
840
Goss: Faiss向けの新しい本番環境対応 Goバインディング #coefl_go_jp
bengo4com
0
1.4k
自社製CMSからmicroCMSへのリプレースがプロダクトグロースを加速させた話
nextbeatdev
0
230
実践データベース設計 ①データベース設計概論
recruitengineers
PRO
4
940
新卒(ほぼ)専業Kagglerという選択肢
nocchi1
1
2.4k
Jaws-ug名古屋_LT資料_20250829
azoo2024
3
140
見てわかるテスト駆動開発
recruitengineers
PRO
6
1.5k
制約理論(ToC)入門
recruitengineers
PRO
7
2.6k
Featured
See All Featured
What’s in a name? Adding method to the madness
productmarketing
PRO
23
3.6k
Speed Design
sergeychernyshev
32
1.1k
GraphQLとの向き合い方2022年版
quramy
49
14k
The World Runs on Bad Software
bkeepers
PRO
70
11k
Raft: Consensus for Rubyists
vanstee
140
7.1k
What's in a price? How to price your products and services
michaelherold
246
12k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
Navigating Team Friction
lara
189
15k
BBQ
matthewcrist
89
9.8k
Building an army of robots
kneath
306
46k
KATA
mclloyd
32
14k
Transcript
Atomic Loans
1 Atomic Loans ブローカーのような第三者を抜きに 借り手と貸し手の間で担保付き融資契約を 結ぶためのプロトコル。 BIP-197 Hashed
Time-Locked Collateral Contract とし ても定義。 https://github.com/bitcoin/bips/blob/master/bip-0197.mediawiki https://arxiv.org/pdf/1901.05117.pdf
2 HTLCベースのAtomic Swap HTLC(Hashed Time-Locked Contracts)はハッシュのプリイメージ (シークレット)とコインを交換するタイムロック付きのコントラクト
アリスはLitecoin上でシークレットSを公開してLTCを入手し、 ボブは公開されたSを使ってBitcoin上でBTCを入手する。 アリスはBitcoinを以下のアンロック条件のスクリプトに送る。 • H(S)のプリイメージ=シークレットSが 分かればボブはBTCを入手できる。 • 10日経過したらアリスはBTCを入手できる。 Secret S H(S) ボブはLTCを以下のアンロック条件のコントラクトに送る。 • H(S)のプリイメージ=シークレットSが 分かればアリスはLTCを入手できる。 • 5日経過したらボブはLTCを入手できる。 BTC/LTCを交換
3 HTLCベースのAtomic Swap • Bitcoinのスクリプト(BIP-199)
• ボブが償還する際の scriptSig • アリスが償還する際の scriptSig ※実際は、P2SHになるのでredeem scriptが追加される。 OP_IF OP_HASH160 <H(S)> OP_EQUALVERIFY OP_DUP OP_HASH160 <ボブの公開鍵のハッシュ> OP_ELSE <ロック期間> OP_CHECKLOCKTIMEVERIFY OP_DROP OP_HASH160 <アリスの公開鍵のハッシュ> OP_ENDIF OP_EQUALVERIFY OP_CHECKSIG <ボブの鍵で生成した署名> <ボブの公開鍵> <s> OP_TRUE <アリスの鍵で生成した署名> <アリスの公開鍵> OP_FALSE scriptPubKey scriptSig scriptSig
4 Hashed Time-Locked Collateral Contract Bitcoin Network 融資元本の通貨 Network アリス
(借り手) ボブ (貸し手) ② 融資の担保をロック ① 融資の元本をロック ③ 担保と融資の条件に合意したら融資実行可能になる。 ④ 返済期限までに元金+利息を返済したら 担保はアリスに戻る。 ④ 債務不履行になった場合、 • 担保の精算の両者が合意する場合は入札を行う。 • 担保の精算に合意しない場合、担保の一定割合を差し押 さえ、精算する。 入札者 bid
5 融資プロセス Bitcoin Network 融資元本の通貨 Network ① 融資情報を送信 融資要求 •
金額 • 融資開設期間 • 精算期間 • 差し押さえ期間 A1 A2 借り手がローンを引き出した際に 明らかになるシークレット 入札者が担保資金を引き出す際に 明らかになるシークレット B1 B2 借り手の担保のロックを受け入れ、借り手が ローンを引き出す際に明らかになるシークレット 借り手の担保のロックを拒否 or 借り手による元本+利息の返済を受け入れる 際に使われるシークレット それぞれシークレットを作成し、 そのハッシュを交換する。 B3 入札者が担保資金を引き出す際に 明らかになるシークレット
6 融資プロセス Bitcoin Network 融資元本の通貨 Network ② 融資額をHTLCにロック • シークレットA1,
B1が分かれば、アリスは融資の資金を 入手できる。 • 有効期間経過したらボブはシークレットB2を公開して資 金を取り戻す。 Hashed Time-Locked Principal Contract ③ 融資金がロックされた確認し、 担保となるBitcoinを HTLCにロックする。 B1 B2 A1 A2 • シークレットB2 & アリスの鍵の署名 • 以下のいずれかでアンロック可 ◦ ローン期間後、A2およびB3の情報、 アリスとボブのマルチシグ ◦ 精算期間後、アリスの鍵の署名 Refundable Collateral Contract B2はボブが返済を受け入れる際に明らかになるので、 返済が無事終わればアリスに戻り、 債務不履行の場合は、精算するか、精算に合意しない場合は アリスに戻ってくる資金。 B3
7 融資プロセス Bitcoin Network 融資元本の通貨 Network ③ 融資金がロックされた確認し、 担保となるBitcoinを
HTLCにロックする。 ④ ロックされた担保額、内容を確認し、 問題なければシークレット B1をアリスに明かす。 • シークレットB2 & アリスの鍵の署名 • 以下のいずれかアンロック可 ◦ ローン期間後、A2およびB3の情報 + アリスとボブのマルチシグ ◦ 以下のいずれかでアンロック可 ▪ 入札期間後、A1とボブの鍵の署名 ▪ 差し押さえ期間後、アリスの鍵の署名 B1 Seizable Collateral Contract Refundable Collateral Contract A1 A2 B1 B2 B2はボブが返済を受け入れる際に明らかになるので、 返済が無事終わればアリスに戻り、 債務不履行の場合は、精算するか、精算に合意しない場合は ボブが差し押さえるか、差し押さえ期間後にアリスが回収。 B3
8 融資プロセス Bitcoin Network 融資元本の通貨 Network ⑤ 両者条件に合意し、 B1を入手したのでA1を 使ってボブがHTLCにロックした融資を引き出す。
A1 A2 B1 B2 B1 • シークレットA1, B1が分かれば、アリスは融資の資金を 入手できる。 • 有効期間経過したらボブはシークレットB2を公開して資 金を取り戻す。 Hashed Time-Locked Principal Contract A1 1つめの条件を使って融資の元金を引出し B3
9 返済プロセス Bitcoin Network 融資元本の通貨 Network ① 元金+利息を融資返済 HTLCに送金する。 A1
A2 B1 B2 B1 • シークレットB2が分かれば、ボブは融資の 元金+利息を受け取ることができる。 • 有効期間経過したらアリスは元金+利息を 取り戻す。 融資返済HTLC A1 ② B2を使って、返済を受け入れる。 B2 B3
10 返済プロセス Bitcoin Network 融資元本の通貨 Network ③ 返済によりB2を入手したので、ロックされて いた担保を取り戻す。
A1 A2 B1 B2 B1 A1 B2 • シークレットB2 & アリスの鍵の署名 • 以下のいずれかでアンロック可 ◦ ローン期間後、A2およびB3の情報、 アリスとボブのマルチシグ ◦ 精算期間後、アリスの鍵の署名 Refundable Collateral Contract • シークレットB2 & アリスの鍵の署名 • 以下のいずれかアンロック可 ◦ ローン期間後、A2およびB3の情報 + アリスとボブのマルチシグ ◦ 以下のいずれかでアンロック可 ▪ 入札期間後、A1とボブの鍵の署名 ▪ 差し押さえ期間後、アリスの鍵の署名 Seizable Collateral Contract B3
11 債務不履行の場合 • シークレットB2 & アリスの鍵の署名 • 以下のいずれかでアンロック可 ◦ ローン期間後、A2およびB3の情報、
アリスとボブのマルチシグ ◦ 精算期間後、アリスの鍵の署名 Refundable Collateral Contract • シークレットB2 & アリスの鍵の署名 • 以下のいずれかアンロック可 ◦ ローン期間後、A2およびB3の情報 + アリスとボブのマルチシグ ◦ 以下のいずれかでアンロック可 ▪ 入札期間後、A1とボブの鍵の署名 ▪ 差し押さえ期間後、アリスの鍵の署名 Seizable Collateral Contract 1. アリスとボブ両者が精算に合意すると、担保資金を全て入札にかける。 2. 精算に合意しない場合 a. Refundable Collateral Contract分はアリスに戻り b. Seizable Collateral Contract分はボブが差し押さえ
12 Atomic Loansの特徴 • Atomic Loansは、ブローカー抜きに借り手と貸し手の間で担保を 設定した融資契約を結ぶプロトコル。 • 借り手と貸し手の間で、複数のシークレットとそのハッシュおよび、
その公開タイミングをタイムロックで制御するようHTLCを拡張。 • BitcoinとEthereumのKovan testnetを使用したクローズドアルファが 公開中(https://atomicloans.io/) https://atomicloans.io/blog/atomic-loans-testnet-alpha-is-live/