Recommended
PDF
PPTX
PDF
PDF
Fintechベンチャーがもたらす日本市場への示唆
PPTX
Bitcoinの個人的勉強ノート 第3版(2015年1月4日)
PPTX
Bitcoinの個人的勉強ノート第2版(2014年5月15日)
PPTX
ブロックチェーンによるデータガバナンスと社会基盤の再構築
PPTX
ブロックチェーン入門〜ただしFinTechを除く〜
PDF
PPTX
筑波大学 Blockchain meetup 第一回
PDF
PPTX
PDF
プログラマ目線で見た “The DAO事件” とは
PPTX
PDF
PPTX
EXE #3:ブロックチェーンの研究動向 - セキュリティとプライバシー
PDF
電子情報通信学会グローバル社会とビットコイン(山崎)
PDF
ブロックチェーン基礎(Blockchain Fundamentals)
PDF
PDF
Blockchain and formal verification (Japanese)
PPTX
PDF
PPTX
Crypto currency beginners
PDF
PPTX
ブロックチェーン書き換え不可能な記録によって社会はどう変化するか?
PDF
[Basic 15] ソフトウェアと知的財産権 / ブロックチェーンと計算機科学 / MinChain の紹介
PDF
PPTX
More Related Content
PDF
PPTX
PDF
PDF
Fintechベンチャーがもたらす日本市場への示唆
PPTX
Bitcoinの個人的勉強ノート 第3版(2015年1月4日)
PPTX
Bitcoinの個人的勉強ノート第2版(2014年5月15日)
PPTX
ブロックチェーンによるデータガバナンスと社会基盤の再構築
PPTX
ブロックチェーン入門〜ただしFinTechを除く〜
Similar to Bitcoinの個人的勉強ノート第1版(2014年4月15日)
PDF
PPTX
筑波大学 Blockchain meetup 第一回
PDF
PPTX
PDF
プログラマ目線で見た “The DAO事件” とは
PPTX
PDF
PPTX
EXE #3:ブロックチェーンの研究動向 - セキュリティとプライバシー
PDF
電子情報通信学会グローバル社会とビットコイン(山崎)
PDF
ブロックチェーン基礎(Blockchain Fundamentals)
PDF
PDF
Blockchain and formal verification (Japanese)
PPTX
PDF
PPTX
Crypto currency beginners
PDF
PPTX
ブロックチェーン書き換え不可能な記録によって社会はどう変化するか?
PDF
[Basic 15] ソフトウェアと知的財産権 / ブロックチェーンと計算機科学 / MinChain の紹介
PDF
PPTX
Bitcoinの個人的勉強ノート第1版(2014年4月15日) 1. 2. 3. 4. 電子貨幣
• 発行者に依存するもの:集中型
• David Chaum. Blind signatures for untraceable payments. In Crypto, volume
82, page 199203, 1982.
• Ronald L Rivest. Electronic lottery tickets as micropayments. In Financial
Cryptography, pages 307–314. Springer, 1997.
• Beverly Yang and Hector Garcia-Molina. Ppay: micropayments for peer-to-
peer systems. In Proc. of Computer and communications security.
• 使用者間の貸借関係によるもの
• Ryan Fugger. Money as ious in social trust networks & a proposal for a
decentralized currency network protocol. 2004.
5. とは
• 電子貨幣(digital currency)システムである。
• 最初の完全な分散型(P2P型)の電子貨幣システムである。
• 従来の電子貨幣システムは集中型(クライアントサーバ型)であった。
• 全てのノードが完全な元帳を保持する。
• ノードが取引を検証する。
• 現金に近い。
• 取引はほぼ即時に処理される。
• 払い戻し不可能(non-refundable)である。
• 現金でできることが世界規模で行える!
• 2008年に始動。オープンソース。
• 価格は急激に上昇。取引数も急激に上昇。
• 価格は一時1BTC1000ドル超え。取引数は1日6万件程度(1秒間に0.7件)。
• クレジットカード取引などと比較するとまだまだ小規模。
6. の目的(個人的考え)
• ①汎用的な決済手段を提供する。
• 決済とは、「代金や証券・商品、または売買差金の 受け渡しによって、売買取引を終了すること」。
• 決済手段を提供するためには、何らかの貨幣(又はそれに類するもの)が必要となる。
• その貨幣を使って決済できるようにする。
• 必ずしも独自の貨幣を作らなければならないという訳ではない。他人が作った貨幣を流用しても構わない。
• ②中央機関を不要にする。
• 法貨を発行することのできる政府、中央銀行などの機関を不要にする。
• 決済を仲介する中央清算機関を不要にする。
• ただし、Bitcoinの内部には中央清算機関は存在しないものの、Bitcoinの周縁には中央清算機関が存在する。
• 清算とは、複数の買い手と売り手の間で決済条件の照合を行い、決済を成立させたり、差額決済を行うこと
である。
• 中央機関に頼らないでどのように貨幣を発行すれば良いのか?
• 利害関係人が全員で発行すれば良い。
• 利害関係人が全員自由に参加できるP2Pネットワークを構築して、その中で(コンピュータコードという形で表
現された)定められた規則に従って貨幣を発行する。
7. 8. 口座()
• 256bitの楕円曲線DSA(Elliptic Curve Digital Signature Algorithm:ECDSA)
の公開鍵と秘密鍵の対。
• 秘密鍵はBitcoinを別の口座に送る際に署名をするために使用する。
• 口座の所有者(秘密鍵の所有者)のみが口座にあるBitcoinを別の口座に送ること
ができる。秘密鍵を知らない第三者は別の口座に送ることができない。
• 秘密鍵は厳重に保管されなければならない。
• 秘密鍵を知った第三者は口座にあるBitcoinを別の口座に送ることができる。
• 公開鍵は公開され、署名を検証するために使用する。
• 秘密鍵を知らない第三者は署名検証を通過することができない。つまり、秘密鍵を
知らない第三者が口座にあるBitcoinを別の口座に送ろうとしても、署名検証の過程
で署名が正当でないことが判明するので、送金は拒否される。
• 公開鍵のハッシュ値が口座番号(address)。
• 口座を識別するために使用する。
9. 取引()
• 口座間におけるBitcoinの移動を表現する。
• 採掘によるBitcoinの鋳造も特殊な形式の取引として表現される。
• より具体的には、
• 1つ以上の出金口座(source account)から1つ以上の入金口座(destination account)へのBitcoinの移動を表現する。
• 取引によって、1つ以上の入力(input)と1つ以上の出力(output)が生成される。
• 出力・・・ある口座に関連付けられているBitcoinの額面を表す。
• 出力は1回だけ使用することができる。
• 取引によって古い出力が使用され、新しい未使用の出力が生成される。
• 入力・・・どの(未使用の)出力を支払いに使用するかを指定する。
• 指定された出力が使用済みである場合には、取引は無効である。
• 1つの取引の中にある1つ以上の入力が指し示す古い出力の額面の合計は、新しい出力の額面の合計以上でなければならない。
• 小さい場合には、取引は無効である。
• 古い出力と新しい出力の額面の合計の差が取引手数料である。
• 口座に出力が関連付けられる。
• 口座に関連付けられている未使用の出力の額面を合計すれば、口座残高が求められる。
• 取引のハッシュ値。
• 取引を識別するために使用する。
10. 元帳()
• 口座(account)間の全ての有効な取引が記録される。
• 検証に通らなかった無効な取引は記録されない。
• 全ての口座の残高を求めることができる。
• 全てのノードが元帳を保持する。
• 新しい取引が発生した場合には、その情報が全てのノードに伝えられる。
• 新しい取引を受け取ったノードは、その取引を検証してから、その取引が有効である場合には、元帳に記録する。
• P2Pなので、全てのノードに情報が伝わるのには時間が掛かる。
• ある瞬間に全てのノードが保持する元帳が完全に一致するとは限らない。
• 問題1:古い取引が伝わる前に新しい取引が伝わる可能性がある。
• 古い取引が伝わるまで、新しい取引が有効かどうか分からない。
• 問題2:二重消費攻撃(double spending attack)
• ノード間の元帳が矛盾する。
• どれが有効な取引か分からない。
11. 12. 13. ブロック鎖()
• ブロックを作っただけでは、取引について矛盾がないことを保証できない。
• 複数のブロックの中に含まれている幾つかの取引が矛盾している可能性がある。
• ブロック間の優先順位が必要
• ブロック間での優先順位が決まれば、ブロックの中に含まれている取引の優先順位も決まる。
• 全てのブロックは有向木(directed tree)として編製される。
• 根(root)に当たるブロックを起源ブロック(genesis block)と言う。あるブロックから起源ブロックまでの道の長
さをそのブロックの深さ(block height)と言う。
• 任意のブロックから起源ブロックまでの道の内、最長のものをブロック鎖と言う。ブロック鎖の中で葉に当た
るブロックをブロック鎖の頭部(blockchain head)と言う。
• ブロックの頭部(block header)とは異なるので注意!
• これでブロック鎖の中でのブロックの優先順位を決めることができる。
• ブロック鎖の中において、より小さい深さにあるブロックはより大きい深さにあるブロックに優先する。
• 従って、ブロック鎖の中において、より小さい深さにあるブロックの中に含まれる取引はより大きい深さにあるブロックの中に
含まれる取引より優先する。
• 採掘者はブロック鎖の頭部に接続することのできる新しいブロックを発見した場合にのみ報酬を得られる。
• それ以外のブロックに接続することのできる新しいブロックを発見しても意味がない。
14. 15. 16. ブロック鎖分岐()
• ブロック鎖が2つ以上存在する状況が起こり得る。
• 起源ブロックからあるブロックまでは共通しているが、そのブロックから分岐し、別々の頭部を有する。
• このような状況をブロック鎖分岐と言う。
• 何れかが優先されなければ、取引について矛盾がないことを保証できない。
• 通常は、時間が経てば、何れかが長くなり、それ以外は最早ブロック鎖ではなくなるので、問題はない。
• 何らかの原因で、ネットワークが完全に幾つかに分裂すると、分裂したネットワークはそれぞれ独自のブロッ
ク鎖を有するようになる。
• 更にまた、何らかの原因で、分裂したネットワークが統合すると、どれか1つのブロック鎖が生き残り、それ以外のブロック鎖
は消滅する。
• そのため、ネットワーク分裂の検出は非常に重要である。
• ネットワーク分裂の検出は、ネットワークの総計算能力の観測によって行う(ブロックの発見頻度が大きく減少した場合、ネット
ワークの分裂が疑われる)。
• ブロック鎖の一部ではなくなったブロックを破棄ブロック(orphan block)と言う。
• 長くなったものが常に正しいと考える。
• ブロック鎖分岐が発生している状況では、何れのブロック鎖が長くなるか不確定なので、ブロック鎖分岐が発生したブロック
以降のブロックに含まれている取引は、後になって取り消される可能性がある。
• ブロック鎖分岐が発生するかどうかも不確定なので、ある取引が有効であるか否かは確率的である。
• 尤も、取引が実行されてから十分な時間が経過すれば取引が取り消される確率は実用上全く問題がない程極めて低くなる。
17. 18. 19. 21. 22. 23. 24. 通信文()
• 元帳の更新及び同期
• inv
• あるノードが新しい取引やブロックの検証を終えると、新しい取引やブロックがあることを通知するために近接ノードにinv通信
文を送信する。
• 取引のハッシュ値の集合とブロックのハッシュ値の集合
• getdata
• 取得したい取引やブロックを通知する。
• 取引のハッシュ値の集合とブロックのハッシュ値の集合
• tx
• 取引の送信
• block
• ブロックの送信
• 伝播遅延(propagation delay)
• 取引やブロックがあるノードから別のノードに伝わり、検証されるまでに要する時間。
• 伝送時間+検証時間
• inv + getdata + (tx or block) + 検証時間
• 遅延損失(delay cost)
• 通信文の大きさが増えるとどれだけ遅延が大きくなるか。
25. 26. の問題点
• 拡張性(scalability)
• ノード数が増えた場合
• 取引が増えた場合
• 現在ブロックの大きさは1MBまでに制限されている。また、ブロックは平均して10分に1個ず
つ生成されるように調整されている。従って、処理可能な取引数には上限がある(上限があ
るというよりは、ネットワークの処理能力を超過しないように制限を設定していると言った方
が正しい)。
• 平均的な取引の大きさを考慮すると、現在の取引数の上限は約3.3取引/秒である。
• データ転送量
• 伝播遅延
• 検証時間
• ブロックの大きさの最大値
• ブロックの大きさが大きくなれば伝播遅延も大きくなる。
• データ量(ブロック鎖の肥大化(blockchain bloat))
27. 28. 拡張性の問題を改善する
• 簡易決済検証(simplified payment verification)
• クライアントはブロックの頭部のみダウンロードし、ブロックが鎖状に接続さ
れているか確認し、ブロックの難易度が十分に高いかどうか確認する。
• 取引が格納されているMerkle木の一部のみをダウンロードして取引がブロッ
クに含まれているかどうか確認する。
• 十分に古いブロックの頭部はダウンロードせず、十分に古くなったブロックの
頭部は破棄する。
29. ブロック鎖の肥大化の問題を改善する
• ブロック鎖の剪定(blockchain pruning)
• 更新取引(refresh transaction)
• 未使用の取引出力を有する古い取引を口座番号毎に1つに纏めた取引を作成する。
• 誰が作成するのか(誰が作成するべきか)?
• 秘密鍵は不必要なので作成すること自体は誰でも可能。
• 作成者に手数料を与えるべきか?
• 究極のブロック鎖圧縮(ultimate blockchain compression)
• 全ての未使用の取引出力を口座番号毎に纏めた木を使用する。
• 未使用の取引出力を口座番号毎にダウンロードすることができ、口座番号毎に未使用の取引の検証
を行うことができる。
• 通常1つの口座に含まれる未使用の取引出力のデータは非常に小さいので素早くダウンロードするこ
とができる。
• 口座の残高を知るために最小限のデータしか必要ない。
• この木は別のブロック鎖の頭部に含まれる。
• 統一採掘(merged mining)によって安全性が維持される。
30. ブロック鎖の肥大化の問題を改善する
• 制限的なブロック鎖
• 口座木(account tree)
• 全ての空でない口座の残高を保持する。
• 口座番号、口座残高、参照ブロック(reference block)
• 参照ブロックは、口座における取引出力を使用する最後の取引が含まれているブロックの
番号。
• できる限りデータの大きさが小さくなるようにすべき。
• 小型ブロック鎖(mini-blockchain)
• 十分に古いブロックが削除されることによってブロックの数が制限的である以外は普通のブ
ロック鎖と同様である。
• それぞれのブロックはそれらが生成された時点における口座木のハッシュ値を含む。
• 口座木が正しいことを検証することができる。
• 証明鎖(proof chain)
• 起源ブロックから最新ブロックまでの一連の仕事証明の解からなる鎖。
31. 32. 匿名性を向上させるには?
• Darkcoin
• Zerocoin, Anoncoin, Zerocash, Nxtcash, etc
• NxtCashの場合
• 匿名性
• 貨幣の送信者と受信者を結び付けることができない(誰が誰に送金したのかが当事者以外には分からない)。
• 無信用性
• 信用できる第三者機関を必要としない。
• 分散性
• 単一機関ではない。単一障害点(single point of failure)がない。
• 暗号学的な安全性
• 悪意のある攻撃からの保護。
• 効率性
• 多くの取引を処理することができる。
• ゼロ知識証明(zero-knowledge proof)
• zk-SNARK
34. • proof of effort
• proof of work
• Bitcoin, Litecoin, etc
• 特定の値以下のハッシュ値を有する解を計算させることで、取引を有効にする。
• proof of validity
• proof of inclusion
• proof of stake
• Peercoin, Nxt, etc
• proof of burn
• Counterparty
• Proof of transaction
• Fluttercoin
• proof of excellence
• proof of bandwidth
• proof of identification
• proof of publication
35. 関連論文
• [1] Information Propagation in the Bitcoin Network, Christian Decker @ ETH Zurich, Switzerland, Roger
Wattenhofer @ Microsoft Research
• An Analysis of Anonymity in the Bitcoin System
• Quantitative Analysis of the Full Bitcoin
• Transaction Graph
• Beware the Middleman:
• Empirical Analysis of Bitcoin-Exchange Risk
• Evaluating User Privacy in Bitcoin
• Bitter to Better—How to Make Bitcoin a Better Currency
36. 関連論文
• “Bitcoin: A First Legal Analysis – with reference to German and US-American law” By Franziska Boehm, Paulina Pesch, Institute for Information-,
Telecommunication-, and Media Law, Muenster, Germany
• “The Bitcoin P2P network” By Joan Antoni Donet Donet, Cristina Pérez-Solà, and Jordi Herrera-Joancomartí, Dept. d’Enginyeria de la Informació i les
Comunicacions Universitat Autònoma de Barcelona 08193 Bellaterra, Catalonia, Spain.
• “Empirical Analysis of Denial-of-Service Attacks in the Bitcoin Ecosystem” By Marie Vasek, Micah Thornton, and Tyler Moore, Computer Science and
Engineering Department Southern Methodist University, TX, USA.
• “How Did Dread Pirate Roberts Acquire and Protect His Bitcoin Wealth?” By Dorit Ron and Adi Shamir, Department of Computer Science and Applied
Mathematics, The Weizmann Institute of Science, Israel.
• “Fair Two-Party Computations via Bitcoin Deposits” By Marcin Andrychowicz, Stefan Dziembowski, Daniel Malinowski and Łukasz Mazurek, University
of Warsaw, Poland.
• “Increasing Anonymity in Bitcoin” By Amitabh Saxena and Janardan Misra, Accenture Technology Labs, Bangalore 560066, India and Aritra Dhar,
Indraprastha Institute of Information Technology, New Delhi, India.
• “Game-Theoretic Analysis of DDoS Attacks Against Bitcoin Mining Pools” By Benjamin Johnson, University of California, Berkeley, CA, USA; Aron Laszka,
Budapest University of Technology and Economics, Hungary; Jens Grossklags, The Pennsylvania State University, State College, PA, USA; Marie Vasek
and Tyler Moore, Southern Methodist University, Dallas, TX, USA.
• “Towards Risk Scoring of Bitcoin Transactions” By Malte Möser, Rainer Böhme, and Dominic Breuker, Department of Information Systems, University
of Münster, Germany.
• “Rational Zero: Economic Security for Zerocoin with Everlasting Anonymity” By Christina Garman, Matthew Green, Ian Miers, and Aviel D. Rubin, The
Johns Hopkins University Department of Computer Science, MD, USA.
• “Challenges and Opportunities Associated with a Bitcoin-based Transaction Rating System” By David Vandervort, Xerox.
37. 38. • ブロックの伝播について、その大きさを考慮しない場合
• 中央値は6.5秒。
• 平均値は12.6秒。
• ロングテール。
• ブロックの伝播が始まってから40秒経過しても5%のノードには未だ伝播して
いない。
• 取引とブロックの伝播について、その大きさを考慮した場合
• 小さい取引やブロックは遅延の、大きさに対する比率が大きい。
• 20kByteを超えるブロックでは遅延の、大きさに対する比率がほぼ一定。
• 20KByteを超えた場合は、ブロックが大きくなっても一定の比率でしか伝播遅延は増加
しない。
• inv通信文とgetdata通信文の往復に非常に時間が掛かっている
39. 40. 41. 42. 43. • 検証の最小化
• ブロックの検証には難易度の検証と取引の検証の2つがあるが、難易度の検証を
して直ぐにinv通信文を発行するようにする。
• たとえ無意味なデータを含んでいるブロックであっても、難易度の検証に通るように作るの
は、有効なブロックを作るのと同程度のハッシュ計算能力が必要になるので、DDoS攻撃に
悪用される心配はない。
• ブロック伝播の並列化
• inv通信文を受信したら、直ぐに近接ノードにそのinv通信文を転送する。
• 幾らでも虚偽のinv通信文を発行することができる。しかしながら、inv通信文は61バイトしか
ないし、tx通信文を発行することでも同様のことはできるので、影響は少ない。
• 接続数の増加
• 接続数を4000以上にすると全ての到達可能なノードに接続できる。
• 100MB/s程度のデータ転送量が必要
44. 45. 46. • 制限的なブロック鎖
• 口座木
• 全ての空でない口座の残高を管理する。
• 口座番号、口座残高、参照ブロック(reference block)
• 参照ブロックは、口座の取引出力を使用する最後の取引が含まれているブロックの番号。
• できる限りデータの大きさが小さくなるようにすべき。
• 小型ブロック鎖(mini-blockchain)
• 十分に古いブロックが削除されることによってブロックの数が制限的である以外は普通のブ
ロック鎖と同様である。
• それぞれのブロックはそれらが生成された時点における口座木のハッシュ値を含む。
• 口座木が正しいことを検証することができる。
• 証明鎖
• 起源ブロックから最新ブロックまでの一連の仕事証明の解からなる鎖。
47. • 制限的なブロック鎖
• ネットワークの同期
• 1.最大の累積難易度(cumulative difficulty)を有する証明鎖を取得する。
• 2.証明鎖に結び付けられている小型ブロック鎖を取得する。
• 3.最近ブロックの主ハッシュ値(master hash)に結び付けられている部分ハッシュ値
(sector hashes)を取得する。
• 4.口座木を構築し、それぞれの部分(sector)のハッシュ値が部分ハッシュ値に一致する
か検証する。
48. 49. 51. 52. 54. 55. • 分散ハッシュテーブル
• 鍵空間は160ビット。
• 鍵は鍵空間上の1点に対応する160ビットの識別子である。
• ノードは鍵空間上の1点に対応する160ビットの識別子を有する。
• ノードが送信する全ての通信文には識別子が添付される。
• 識別子の距離はビット排他的論理和(bitwise exclusive or:XOR):d(x, y) =
x ^ y
• d(x, x) = 0
• d(x, y) > 0 if x != y
• d(x, y) = d(y, x)(交換律)
• d(x, y) + d(y, z) >= d(x, z)(三角不等式)
56. • ノードは他のノードの情報を保持する。
• ノード情報:(IPアドレス、UDPポート番号、識別子)
• k-バケツ(k-buket):ノードからの距離が2i~2i+1であるノードの情報を保持する160個のリスト。
それぞれのリストに格納されたノード情報は最後に通信を行った時間に基づいて整列され
る(最古のノード情報が先頭に、最新のノード情報が末尾に配置される)。
• iが小さい場合は、k-バケツは空であることが多い。
• iが大きい場合は、k-バケツはk個のノード情報を含むことが多い。
• ノードが他のノードから任意の通信文を受信した場合には、k-バケツを更新する
• k-バケツに対応するノード情報が存在する場合は末尾に移動する。
• K-バケツに対応するノード情報が存在しない場合は、
• k-バケツに格納されているノード情報がk個未満の場合には末尾に追加する。
• k-バケツに格納されているノード情報がk個以上の場合には最古のノード情報に対応するノードにping通信文を
送信し、応答を要求する。
• 応答があった場合には最古のノード情報を最新のノード情報として末尾に移動する(新しいノード情報は
破棄する)。
• 応答がなかった場合には最古のノード情報を削除し、新しいノード情報を末尾に追加する。
• k-バケツが一定時間更新されなかった場合にはk-バケツの範囲から無作為に1つ識別子を
生成し、ノード探索を実行する。
57. 通信手続き
• 4つの遠隔手続き呼び出し
• PING
• ノードが生きているか調べる。
• STORE
• ノードに鍵と値の結合を格納する。
• FIND_NODE
• 引数として識別子を取る。
• ノードが知っている識別子に近いk個のノードの情報を返す(ノードがk個以下のノード情報し
か知らない場合には知っている全てのノード情報を返す)。
• FIND_VALUE
• 引数として識別子を取る。
• ノードが知っている識別子に近いk個のノードの情報を返す(ノードがk個以下のノード情報し
か知らない場合には知っている全てのノード情報を返す)。
• ただし、鍵としての識別子に対応する値を有する場合には値を返す。
58. ノード探索()、値探索
• 識別子に近いk個のノードを探索する。
• FIND_NODE
• 探索ノードは識別子に近いα個のノード情報をk-バケツから選出し、それらのノード情報に対
応するノードに対してFIND_NODE遠隔手続き呼び出しを並列的に非同期的に実行する。
• 新しく得たノード情報から識別子に近いα個のノード情報を選出し、それらのノード情報に対
応するノードに対してFIND_NODE遠隔手続き呼び出しを並列的に非同期的に実行する。
• 識別子に近いk個のノード情報に対応するノードで未だFIND_NODE遠隔手続き呼び出しを
実行していないノードに対してFIND_NODE遠隔手続き呼び出しを並列的に非同期的に実行
する。
• 識別子に近いk個のノード情報に対応するノードからの応答を得られたら終わり。
• 識別子に近いk個のノードを探索しながら、鍵に対応する値を探索する。
• FIND_VALUE
• 上の場合とほぼ同様だが、値が取得できたら終わり。
• 最後まで値が取得できなかったら、値は存在しない(可能性が高い。仮に存在していても取
得する術がない)。
59. • 鍵と値の結合は鍵と識別子の距離が近いノードに格納される。
• FIND_NODE + STORE
• 一定時間毎に鍵と値の結合を距離が近いノードに再格納する。
• FIND_NODE + STORE
• 新しいノードを発見したら新しいノードの識別子と距離が近い鍵と値の結合を新しいノードに格
納する。
• STORE
• 鍵に対応する値を取得する。
• 鍵と近いノードで鍵に対応する値を保持していないノードがあったら、値を取得した後にノードに値を格納す
る。
• 取得した値はキャッシュする。値との間に多くのノードがあるノード程早くキャッシュが削除される。
• FIND_VALUE + STORE
• ネットワークに参加したいノードは何らかの方法で1個以上の既にネットワークに参加している
ノードの情報を入手し、ノード情報をk-バケツに挿入し、自身の識別子と距離が近いノードを探索
する。
• FIND_NODE