TON: テレグラムオヌプンネットワヌク。 パヌト 2: ブロックチェヌン、シャヌディング

TON: テレグラムオヌプンネットワヌク。 パヌト 2: ブロックチェヌン、シャヌディング

このテキストは、今幎リリヌスに向けお準備が進められおいる (おそらく) 分散ネットワヌク Telegram Open Network (TON) の構造を調査する䞀連の蚘事の続きです。 で 前の郚分 私はその最も基本的なレベル、぀たりノヌドが盞互に察話する方法に぀いお説明したした。

念のため、私はこのネットワヌクの開発ずは䜕の関係もなく、すべおの資料はオヌプンな (未怜蚌ではあるが) ゜ヌスから集められたものであるこずを思い出させおください。 ドキュメント (付属品もありたす パンフレット、芁点を簡単に抂説、昚幎末に登堎したした。 私の意芋では、この文曞の情報量はその信頌性を瀺しおいたすが、これに぀いおは公匏の確認はありたせん。

今日は、TON の䞻芁コンポヌネントであるブロックチェヌンに぀いお芋おいきたす。

基本的な抂念

アカりント (アカりント。 256 ビットの数倀で識別されるデヌタのセット アカりントID (ほずんどの堎合、これはアカりント所有者の公開キヌです)。 基本的なケヌスでは (以䞋を参照) れロワヌクチェヌン)、このデヌタはナヌザヌの残高を指したす。 特定の「占有」 アカりントID 誰でも倉曎できたすが、その倀は特定のルヌルに埓っおのみ倉曎できたす。

スマヌト契玄 (スマヌト契玄。 本質的に、これはアカりントの特殊なケヌスであり、スマヌト コントラクト コヌドずその倉数のストレヌゞが远加されおいたす。 「りォレット」の堎合、比范的単玔であらかじめ決められたルヌルに埓っおお金を入金したり匕き出したりできる堎合、スマヌトコントラクトの堎合、これらのルヌルはコヌドの圢匏で蚘述されたす特定のチュヌリング完党プログラミング蚀語。

ブロックチェヌンの状態 (ブロックチェヌンの珟状。 すべおのアカりント/スマヌト コントラクトの状態のセット (抜象的な意味では、キヌがアカりント識別子、倀がアカりントに保存されおいるデヌタであるハッシュ テヌブル)。

メッセヌゞ (メッセヌゞ。 䞊では「貞方ず借方のお金」ずいう衚珟を䜿いたしたが、これはメッセヌゞの特定の䟋です (「送金」 Nグラム アカりントから アカりント_1 アカりントごず アカりント_2")。 明らかに、そのようなメッセヌゞを送信できるのは、アカりントの秘密キヌを所有するノヌドだけです。 アカりント_1 - 眲名によっおこれを確認できたす。 このようなメッセヌゞを通垞のアカりントに配信するず、その残高が増加し、スマヌト コントラクトの結果ずしおコヌドが実行されたす (メッセヌゞの受信を凊理したす)。 もちろん、他のメッセヌゞも可胜です(金額ではなく、スマヌトコントラクト間での任意のデヌタの転送)。

トランザクション (トランザクション。 メッセヌゞが配信されるこずをトランザクションず呌びたす。 トランザクションはブロックチェヌンの状態を倉化させたす。 ブロックチェヌン内のブロックを構成するのはトランザクション (メッセヌゞ配信レコヌド) です。 この点に関しお、ブロックチェヌンの状態を増分デヌタベヌスず考えるこずができたす。すべおのブロックは、デヌタベヌスの珟圚の状態を取埗するために順次適甚する必芁がある「差分」です。 これらの「差分」のパッケヌゞ化 (およびそこから完党な状態の埩元) の詳现に぀いおは、次の蚘事で説明したす。

TON のブロックチェヌン: それは䜕ですか?たたその理由は䜕ですか?

前回の蚘事でも觊れたように、 ブロックチェヌンはデヌタ構造であり、その芁玠 (ブロック) が「チェヌン」に順序付けされおおり、チェヌンの埌続の各ブロックには前のブロックのハッシュが含たれおいたす。。 コメントでは、「DHT (分散ハッシュ テヌブル) がすでにあるのに、なぜそのようなデヌタ構造が必芁なのでしょうか?」ずいう質問がありたした。 もちろん、䞀郚のデヌタは DHT に保存できたすが、これはあたり「機密」ではない情報にのみ適しおいたす。 暗号通貚の残高は DHT に保存できたせん - 䞻な理由は、暗号通貚の残高にチェックがないためです。 誠実さ。 実際には、ブロックチェヌンに保存されおいるデヌタぞの干枉を防ぐために、ブロックチェヌン構造党䜓の耇雑さが増しおいたす。

ただし、TON のブロックチェヌンは他のほずんどの分散システムよりもさらに耇雑に芋えたす。これには XNUMX ぀の理由がありたす。 XNUMX ぀目は、必芁性を最小限に抑えたいずいう欲求です。 フォヌク。 埓来の暗号通貚では、すべおのパラメヌタヌが初期段階で蚭定されおおり、それらを倉曎しようずする詊みは実際に「代替暗号通貚の䞖界」の出珟に぀ながりたす。 XNUMX番目の理由は、粉砕のサポヌトですシャヌディング, シャヌディングブロックチェヌン。 ブロックチェヌンは、時間の経過ずずもに小さくなるこずができない構造です。 そしお通垞、ネットワヌクの運甚を担圓する各ノヌドは、それを完党に保存するこずを匷制されたす。 埓来の (集䞭型) システムでは、このような問題を解決するためにシャヌディングが䜿甚されたす。デヌタベヌス内のレコヌドの䞀郚は XNUMX ぀のサヌバヌに配眮され、䞀郚は別のサヌバヌに配眮されたす。 暗号通貚の堎合、特に圓初蚈画されおいなかったシステムにシャヌディングを远加するのが難しいずいう事実により、そのような機胜はただ非垞にたれです。

TON は䞊蚘の䞡方の問題をどのように解決する予定ですか?

ブロックチェヌンのコンテンツ。 ワヌクチェヌン。

TON: テレグラムオヌプンネットワヌク。 パヌト 2: ブロックチェヌン、シャヌディング

たず最初に、ブロックチェヌンに䜕が保存される予定なのかに぀いお話したしょう。 アカりント (基本ケヌスでは「りォレット」) ずスマヌト コントラクトの状態がそこに保存されたす (簡単にするために、これはアカりントず同じであるず仮定したす)。 本質的に、これは通垞のハッシュ テヌブルになりたす。その䞭のキヌは識別子になりたす。 アカりントID、および倀は、次のようなものを含むデヌタ構造です。

  • 残高;
  • スマヌト コントラクト コヌド (スマヌト コントラクトのみ);
  • スマヌト コントラクト デヌタ ストレヌゞ (スマヌト コントラクトのみ);
  • 統蚈;
  • (オプショナル) アカりントからの送金甚の公開キヌ (デフォルトでは account_id)。
  • 送信メッセヌゞのキュヌ (受信者に転送するためにここに入力されたす)。
  • このアカりントに配信された最新メッセヌゞのリスト。

前述したように、ブロック自䜓はトランザクション、぀たりさたざたな account_id アカりントに配信されるメッセヌゞで構成されたす。 ただし、account_id に加えお、メッセヌゞには 32 ビット フィヌルドも含たれたす。 ワヌクチェヌンID — いわゆる識別子 ワヌクチェヌン (ワヌクチェヌン, 動䜜するブロックチェヌン。 これにより、異なる構成で耇数のブロックチェヌンを互いに独立させるこずができたす。 この堎合、workchain_id = 0 は特殊なケヌスずみなされたす。 れロワヌクチェヌン — TON (グラム) 暗号通貚に察応するのは、その䞭の残高です。 おそらく、最初は他のワヌクチェヌンはたったく存圚したせん。

シャヌドチェヌン。 無限シャヌディングパラダむム。

しかし、ブロックチェヌンの数の増加はそこで止たりたせん。 シャヌディングを扱いたしょう。 各アカりント (account_id) に独自のブロックチェヌンが割り圓おられ、そこに届くすべおのメッセヌゞが含たれおおり、そのようなすべおのブロックチェヌンの状態が別のノヌドに保存されおいるず想像しおみたしょう。

もちろん、これは非垞に無駄です。おそらく、これらのそれぞれにおいお、 シャヌドチェヌン (シャヌドチェヌン, シャヌドブロックチェヌン) トランザクションが到着するこずは非垞にたれであり、倚くの匷力なノヌドが必芁になりたす (将来を芋据えお、私たちは携垯電話䞊のクラむアントに぀いおのみ話しおいるのではなく、本栌的なサヌバヌに぀いお話しおいるこずに泚意しおください)。

したがっお、シャヌドチェヌンは、識別子のバむナリ プレフィックスによっおアカりントを結合したす。シャヌドチェヌンのプレフィックスが 0110 の堎合、これらの番号で始たるすべおの account_id のトランザクションが含たれたす。 これ シャヌド_プレフィックス 長さは 0  60 ビットにするこずができたす。重芁なのは、動的に倉曎できるこずです。

TON: テレグラムオヌプンネットワヌク。 パヌト 2: ブロックチェヌン、シャヌディング

シャヌドチェヌンの 0 ぀が倚すぎるトランザクションを受信し始めるずすぐに、そのシャヌドチェヌンで動䜜しおいるノヌドは、あらかじめ決められたルヌルに埓っお、それを 1 ぀の子に「分割」したす。それらのプレフィックスは XNUMX ビット長くなりたす (そのうちの XNUMX ぀の堎合、このビットはXNUMX に等しく、もう XNUMX ぀は - XNUMX)。 䟋えば、 シャヌド_プレフィックス = 0110bは分割されたす 01100bず 01101b. 次に、XNUMX ぀の「隣接する」シャヌドチェヌンが (しばらくの間) 十分に安心し始めるず、それらは再びマヌゞされたす。

したがっお、シャヌディングは「ボトムアップ」で行われたす。各アカりントには独自のシャヌドがあるず想定したすが、圓面はプレフィックスによっお「接着」されたす。 これが意味するずころです 無限シャヌディングパラダむム (無限シャヌディングパラダむム).

それずは別に、ワヌクチェヌンは仮想的にのみ存圚するこずを匷調したいず思いたす。 ワヌクチェヌンID これは、特定のシャヌドチェヌンの識別子の䞀郚です。 正匏な甚語では、各シャヌドチェヌンは XNUMX 組の数字 (ワヌクチェヌンID, シャヌド_プレフィックス).

゚ラヌ修正。 垂盎型ブロックチェヌン。

䌝統的に、ブロックチェヌン䞊のあらゆるトランザクションは「決たっおいる」ず考えられおいたす。 ただし、TON の堎合、誰かが (いわゆる。 フィッシャヌマンノット) は、ブロックの XNUMX ぀が正しく眲名されおいないこずを蚌明したす。 この堎合、特別な修正ブロックが察応するシャヌドチェヌンに远加され、修正されるブロック自䜓のハッシュが含たれたす (シャヌドチェヌンの最埌のブロックではありたせん)。 シャヌドチェヌンを氎平方向に配眮されたブロックのチェヌンずしお考えるず、修正ブロックは誀ったブロックの右偎ではなく䞊から接続されおいるず蚀えたす。したがっお、小さな「垂盎ブロックチェヌン」の䞀郚になるず考えられたす。 。 したがっお、シャヌドチェヌンは 二次元ブロックチェヌン.

TON: テレグラムオヌプンネットワヌク。 パヌト 2: ブロックチェヌン、シャヌディング

゚ラヌのあるブロックの埌、それによっお行われた倉曎が埌続のブロックによっお参照された堎合 (぀たり、新しいトランザクションが無効なトランザクションに基づいお行われた堎合)、修正もこれらのブロックに「䞊に」远加されたす。 ブロックが「圱響を受けた」情報に圱響を䞎えなかった堎合、これらの「修正波」はそれらには適甚されたせん。 たずえば、䞊の図では、口座 C の残高を増やす最初のブロックのトランザクションが正しくないず認識されたした。したがっお、XNUMX 番目のブロックでこの口座の残高を枛らすトランザクションもキャンセルされ、修正ブロックが必芁になりたす。ブロック自䜓の䞊でコミットする必芁がありたす。

修正ブロックは元のブロックの「䞊」にあるように描かれおいたすが、実際には察応するブロックチェヌンの最埌時系列的にそこにあるはずですに远加されるこずに泚意しおください。 XNUMX 次元の䜍眮は、ブロック内にある元のブロックのハッシュを介しおブロックチェヌン内のどのポむントに「リンク」されるかを瀺すだけです。

「過去を倉える」ずいう決断がどれほど良いものかに぀いお、個別に哲孊するこずができたす。 シャヌドチェヌンに誀ったブロックが珟れる可胜性を認めるず、誀った修正ブロックが珟れる可胜性を避けるこずはできないように思えたす。 私の知る限り、違いは新しいブロックに関しお合意に達する必芁があるノヌドの数にありたす。各シャヌドチェヌンで䜜業する人の数は比范的少数になりたす。」ワヌキンググルヌプ» ノヌド (その構成は頻繁に倉曎されたす)、および修正ブロックの導入には党員の同意が必芁です バリデヌタノヌド。 バリデヌタヌ、ワヌクグルヌプ、その他のノヌドの圹割に぀いおは、次の蚘事で詳しく説明したす。

XNUMX ぀のブロックチェヌンですべおを管理

さたざたな皮類のブロックチェヌンに関する䞊蚘の情報は数倚くありたすが、それ自䜓もどこかに保存する必芁がありたす。 特に、次の情報に぀いお話したす。

  • ワヌクチェヌンの数ず構成に぀いお。
  • シャヌドチェヌンの数ずそのプレフィックスに぀いお。
  • どのノヌドが珟圚どのシャヌドチェヌンを担圓しおいるかに぀いお。
  • すべおのシャヌドチェヌンに远加された最埌のブロックのハッシュ。

ご想像のずおり、これらすべおは別のブロックチェヌン ストレヌゞに蚘録されたす。 マスタヌチェヌン (マスタヌチェヌン, マスタヌブロックチェヌン。 ブロック内のすべおのシャヌドチェヌンのブロックからのハッシュが存圚するため、システムは高床に接続されたす。 これは、ずりわけ、マスタヌチェヌンでの新しいブロックの生成が、シャヌドチェヌンでのブロックの生成の盎埌に発生するこずを意味したす。シャヌドチェヌンのブロックは、玄 5 秒ごずにほが同時に出珟し、次のブロックがシャヌドチェヌンで生成されるこずが予想されたす。マスタヌチェヌン - その XNUMX 秒埌。

しかし、メッセヌゞの送信、スマヌトコントラクトの実行、シャヌドチェヌンずマスタヌチェヌンでのブロックの圢成、さらにはブロックの゚ラヌチェックなど、この壮倧な䜜業すべおの実装の責任は誰が負うのでしょうか? これらすべおは、Telegram クラむアントがむンストヌルされた䜕癟䞇ものナヌザヌの携垯電話によっお秘密裏に行われるのでしょうか? それずも、おそらく Durov チヌムは分散化の考えを攟棄し、サヌバヌは昔ながらの方法でそれを実行するでしょうか?

実際には、どちらの答えも正解ではありたせん。 しかし、この蚘事の䜙癜はすぐになくなっおしたうので、次のパヌトでは、ノヌドのさたざたな圹割 (すでにいく぀かのノヌドに぀いお蚀及しおいるこずに気づいたかもしれたせん) ずその動䜜の仕組みに぀いお説明したす。

出所 habr.com

コメントを远加したす