Yuya

Yuya

@ogw_yuya

ちょビットコイナー

ライトニングネットワークにおける利己的ルーティングによる無秩序の代償

キーワード:無秩序の代償、利己的ルーティング、支配戦略、ナッシュ均衡 本記事は以下の記事の内容をまとめたものである。 はじめに 上記記事の前半では、LNでのチャネル流量の枯渇(*1)率において送金の失敗率をシミュレーションしている。後半では、送金経路選択の戦略別に送金を行い、どの戦略がもっとも全体的なコストの面で非効率かをシミュレーションしている。ゲーム理論をライトニングネットワークに適用しようとする試みであり、まだまだ未開拓な領域ではあるが、面白い分野であるので以下にその内容をまとめた。 *1 チャネル流量の枯渇:A->Bへの送金時、チャネル資金がB側へ偏ってしまい送金できない状態のこと チャネル流量の枯渇率による送金シミュレーション 図1は、チャネル流量の枯渇率を調整した5つのチャネル上でランダムに送金したシミュレーション結果である。drain:0.1はA-B間のチャネル資金が0.1対0.9であることを表しており、このチャネル上でランダムに送金をする。その結果、失敗率が80%へ収束していくことが読み取れる。チャネル流量の枯渇率が0.1と極端に偏っているのに失敗率が80%しかないのは、B→Aへの送金があることで、チャネルバランスが少しだけ改善するためである。また、drain:0.1のチャネルでは、逆方向の送金はほぼ100%成功することが直感的に分かる。この仮定の下で枯渇した方向への送金の成功率を求めると、0.1*1+0.9*x=0.2 x=11.1%となり、11%の確率で枯渇した方向への送金が成功することが分かる。 <p

Pinning攻撃とその対策

はじめに LNにはPinning攻撃と呼ばれる攻撃手法があり、現在この攻撃を防ぐことはできないとされている。ただし、この攻撃の実行可能性はそれほど高くないとされており、またこの対策・緩和策にはビットコインのベースレイヤーの変更が必要なため、それほど急務といった感じではない。しかし、本攻撃の仕組みや対策を知っておくことに越したことはないので、以下にその概要をまとめた。 LNのトランザクション構成 LNで使用されるトランザクションには以下の5種類がある。このうち今回重要になるのが、CommitmentトランザクションとHTLCトランザクションである。 Fundingトランザクション Commitmentトランザクション HTLC-successトランザクション HTLC-timeoutトランザクション Closingトランザクション LNは1つのUTXOを2者間で共有し、両者の合意に基づき互いの残高を更新していく。更新ごとに作成するトランザクションをCommitmentトランザクションと呼ぶ。これは2者間の残高状態と送金の中継に使うHTLCを管理するもので、どちらか一方の通信が途絶えた場合でも、一方的に資金をオンチェーンで回収できるような構成になっている。このCommitmentトランザクションはFundingトランザクションをインプットに持つ。(Fundingトランザクションは2者間マルチシグアドレスをアウトプットに持つ) HTLCトランザクションは、Commitmentトランザクションをインプットに持つトランザクションである。これは、送金の中継に使われるHTLCがタイムアウトした場合、オンチェーンでその資金を回収するために必要となるトランザクションである。HTLCの送信者はHTLC-timeoutトランザクションを、受信者はHTLC-successトランザクションを保有する。 Commitmentトランザクションのアウトプットは、以下の6種類がある。 To_local To_remote To_local_anchor To_remote_anchor Offered_htlc Received_htlc Offered_htlcとReceived_htlcは以下の方法で資金回収ができる。 Offered_htlcの使用条件は、HTLC-timeo

OP_CAT😺とCovenants📜の備忘録

先月末に物議を醸しだしたOP_CTVを調べていくなかで、他のOPコードや暗号トリックを使ってCovenantsを実現する方法が面白かったので、以下の記事をベースに纏めてみました(以下の記事を理解した前提で記事を書いてます)。 https://www.wpsoftware.net/andrew/blog/cat-and-schnorr-tricks-i.html 前提 Covenantsの仕組みを理解するためには、ビットコインのトランザクションのデータ構造とスクリプトシステムを理解する必要があります。 1. トランザクションのデータ構造 トランザクションのデータ構造は以下のようになっています。inputsフィールドはさらにprev txidやscriptSigに、outpusフィールドはvalueやscriptPubkeyに細分化されています。 2. スクリプトシステム スクリプトシステムは、OPコード(命令語・機械語)を1つ1つ実行し、データをスタック領域へプッシュしたりする実行環境のことです。以下の図例は標準的なビットコインのスクリプトを実行しているもので、scriptPubkeyとscriptSigを結合し、OPコードを実行、データをスタックへプッシュしていく流れを表しています。 ビットコインを送金する場合、上記のデータ構造に沿ってデータを組み立て、それに対して署名をしscriptSigに署名をセットします。このデータをブロードキャストし、受け取ったノードが、この署名を検証する時、prev txidとprev txout-indexを参照して消費しようとしている前のトランザクションのscriptPubkeyを取得します。イメージとしては以下の図のようになります(参照元)。そして上記のスクリプトシステムに従

Statechain は資金決済法(カストディ規制)を回避可能か?

つぶやき。ぽえむ。 早速 GitHub に飛んでドキュメントを読みました。 概ね Yuya 氏の記事の通りなのですが。 加えて、チェーン運営者(EC)が飛んだときの対応として、「バックアップトランザクション」という仕組みがセキュリティ上の肝となっています。(この仕組みを知るまで、裏切りをどう防ぐのか理解できませんでした…) 判ってしまえば、仕組みは簡単。 まず、EC は、チェーンにペグにされているビットコインを回収するための、トランザクションを公開します。 Statechain 上でビットコインが移転するたびに、このトランザクションは更新されます。トランザクションの output に指定されるべきアドレスが変更になるので、当然ですね。 そして、このトランザクションには nLockTime が設定され、遠い将来のブロックでしか取り込まれず、かつ、移転によりトランザクションが更新されるたびに値が減っていきます。 つまり A → B → C → D という送金で B C はバックアップトランザクションを裏切りブロードキャストできるのですが、nLockTime に阻まれます。阻まれているうちに D がブロードキャストすれば、より nLockTime が短い D のトランザクションは優先してブロックに取り込まれ、確実にビットコインを回収できます。 "バックアップ" という名の通り、EC が失踪した場合の最後の手ですね。 Ⓜ️ 『そも

Purchased this article ynko74af8

-100

Sent a tip 87rombn28

-5000

Yuya tipped you

20140

Purchased this article 87rombn28

-100

Payment in Transit

-60600

Ky purchased this article uy2rtec4m

10000

Anonymous tipped you

1000

ヒヨコロ/Hiyo purchased this article xlco5hfc6

1000

tanakei purchased this article 9fez25vp5

10000

culizusi purchased this article wghunkqd0

100

Purchased this article 2n4j8h6f4

-100

nigg purchased this article 4ey25lx6t

1000

Marimox purchased this article wghunkqd0

100

btc_dakara purchased this article wghunkqd0

100

Sent a payment

-101000

ヒヨコロ/Hiyo purchased this article yqymlagm2

100

ヒヨコロ/Hiyo purchased this article o38b3zme7

100

Sent a payment

-10100

Purchased this article w9s3nzzoa

-100

ヒヨコロ/Hiyo purchased this article 32u6bi6tf

10000

Popular stories

LNノードの運用益はどれぐらい?パート1

1548

LNノードの運用益はどれぐらい?パート3

948

【Muun】ちょっと変わったライトニング搭載ノンカストディアルウォレット

768

Archives

2022-08
1posts
2022-07
4posts
2022-06
1posts
2022-05
4posts
2022-04
3posts
2022-03
2posts
2022-02
3posts
2022-01
2posts
2021-10
2posts
2021-09
5posts
2021-08
5posts
2021-07
9posts
2021-06
2posts
2021-05
4posts
2021-04
9posts
2021-03
11posts
2021-02
5posts
2021-01
4posts
2020-12
8posts
2020-10
2posts
2020-09
20posts
2020-08
4posts
2020-07
5posts
2020-06
10posts
2020-05
7posts
2020-04
10posts
2020-03
3posts
2020-02
3posts
2020-01
6posts
2019-12
6posts
2019-11
5posts
2019-09
1posts
2019-08
1posts
2019-07
1posts
2019-05
4posts
2019-04
7posts
2019-03
4posts
2019-02
5posts