JP2023513951A - 階層化ネットワークの接続の適応 - Google Patents
階層化ネットワークの接続の適応 Download PDFInfo
- Publication number
- JP2023513951A JP2023513951A JP2022549580A JP2022549580A JP2023513951A JP 2023513951 A JP2023513951 A JP 2023513951A JP 2022549580 A JP2022549580 A JP 2022549580A JP 2022549580 A JP2022549580 A JP 2022549580A JP 2023513951 A JP2023513951 A JP 2023513951A
- Authority
- JP
- Japan
- Prior art keywords
- node
- nodes
- core
- network
- transaction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 239000010410 layer Substances 0.000 claims abstract description 192
- 230000006978 adaptation Effects 0.000 claims abstract description 106
- 238000000034 method Methods 0.000 claims abstract description 80
- 239000012792 core layer Substances 0.000 claims abstract description 26
- 238000005065 mining Methods 0.000 claims description 41
- 230000015654 memory Effects 0.000 claims description 28
- 238000012545 processing Methods 0.000 claims description 26
- 230000004044 response Effects 0.000 claims description 21
- 230000003044 adaptive effect Effects 0.000 claims description 17
- 238000012790 confirmation Methods 0.000 claims description 5
- 238000004590 computer program Methods 0.000 claims description 2
- 238000013515 script Methods 0.000 description 46
- 230000006870 function Effects 0.000 description 17
- 230000000644 propagated effect Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 9
- 230000008569 process Effects 0.000 description 7
- 230000009471 action Effects 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 6
- 238000012546 transfer Methods 0.000 description 5
- 238000004422 calculation algorithm Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 238000010200 validation analysis Methods 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 3
- 235000008694 Humulus lupulus Nutrition 0.000 description 2
- 241000700566 Swinepox virus (STRAIN KASZA) Species 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000001010 compromised effect Effects 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 241000473391 Archosargus rhomboidalis Species 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- FFBHFFJDDLITSX-UHFFFAOYSA-N benzyl N-[2-hydroxy-4-(3-oxomorpholin-4-yl)phenyl]carbamate Chemical compound OC1=C(NC(=O)OCC2=CC=CC=C2)C=CC(=C1)N1CCOCC1=O FFBHFFJDDLITSX-UHFFFAOYSA-N 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000003012 network analysis Methods 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/1008—Server selection for load balancing based on parameters of servers, e.g. available memory or workload
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17306—Intercommunication techniques
- G06F15/17312—Routing techniques specific to parallel machines, e.g. wormhole, store and forward, shortest path problem congestion
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/16—Threshold monitoring
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/64—Routing or path finding of packets in data switching networks using an overlay routing layer
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/1023—Server selection for load balancing based on a hash applied to IP addresses or costs
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1031—Controlling of the operation of servers by a load balancer, e.g. adding or removing servers that serve requests
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
- H04L67/1042—Peer-to-peer [P2P] networks using topology management mechanisms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
- H04L67/1059—Inter-group management mechanisms, e.g. splitting, merging or interconnection of groups
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
- H04L67/1087—Peer-to-peer [P2P] networks using cross-functional networking aspects
- H04L67/1089—Hierarchical topologies
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3239—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/40—Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
- G06Q20/401—Transaction verification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/42—Confirmation, e.g. check or permission by the legal debtor of payment
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/02—Topology update or discovery
- H04L45/04—Interdomain routing, e.g. hierarchical routing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/12—Avoiding congestion; Recovering from congestion
- H04L47/125—Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Business, Economics & Management (AREA)
- General Business, Economics & Management (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
階層化ネットワークのノード間の接続を適応させるためのコンピュータ実装方法。階層化ネットワークは、順序付けられた層のセットに配置された複数のノードを含む。順序付けられた層のセットは、順に、コアノードのセットを含むコア層と、第2のノードのセットを含む第2の層と、各々が外部ノードのそれぞれのセットを含む1つまたは複数の外層とを含む。各コアノードは、少なくとも1つの他のコアノードに接続される。方法は、適応ノードによって実行され、適応ノードは、1つまたは複数の第2のノードおよび複数のコアノードに接続された階層化ネットワークのノードである。方法は、階層化ネットワークの1つまたは複数のネットワーク特性に基づいて、適応ノードと複数のコアノードのすべてではないが少なくとも1つとの間のそれぞれの接続を無効にすることを含む。
Description
本開示は、階層化ネットワークのノード間の接続を適応させる方法に関する。
ブロックチェーンは、分散型データ構造の形態を指し、ブロックチェーンの複製コピーが、ピアツーピア(P2P)ネットワーク内の複数のノードの各々において維持される。ブロックチェーンは、データブロックのチェーンを含み、各ブロックは1つまたは複数のトランザクションを含む。各トランザクションは、1つまたは複数のブロックにまたがり得るシーケンス内の先行トランザクションを指し示し得る。トランザクションは、新しいブロックに含まれるためにネットワークにサブミットされ得る。新しいブロックは、「マイニング」として知られるプロセスによって作成され、このプロセスは、複数のマイニングノードがそれぞれ、「プルーフオブワーク」を実行しようと競うこと、すなわち、ブロックに含まれるのを待っている保留中のトランザクションのプールに基づいて暗号パズルを解くことを伴う。
ネットワーク内の各ノードは、フォワード、マイニング、および記憶という3つの役割のうちのいずれか1つ、2つ、またはすべてを担うことができる。フォワーディングノードは、ネットワークのノード全体にトランザクションを伝搬する。マイニングノードは、ブロックへのトランザクションのマイニングを実行する。ストレージノードは各々が、ブロックチェーンのマイニングされたブロックのそれら自体のコピーを記憶する。ブロックチェーンにトランザクションを記録させるために、当事者は、伝搬されるべきネットワークのノードのうちの1つにトランザクションを送信する。トランザクションを受信するマイニングノードは、トランザクションを新しいブロックにマイニングしようと競い合い得る。各ノードは、同じノードプロトコルを尊重するように構成され、そのノードプロトコルには、トランザクションが有効であるための1つまたは複数の条件が含まれる。無効なトランザクションは、伝搬もブロックへのマイニングもされない。トランザクションが妥当性確認(validate)され、それによってブロックチェーン上に受け入れられたと仮定すると、トランザクション(任意のユーザデータを含む)は、不変の公開記録としてP2Pネットワーク内のノードの各々に記憶されたままになる。
プルーフオブワークパズルを解くのに成功して最新のブロックを作成したマイナーは、典型的に、新しい額のデジタル資産を生成する「生成トランザクション」と呼ばれる新しいトランザクションで報酬が与えられる。ブロックをマイニングするためには大量の計算リソースを必要とし、二重支出の試みを含むブロックは他のノードによって受け入れられない可能性が高いので、プルーフオブワークは、マイナーが、それらのブロックに二重支出トランザクションを含めることによってシステムを不正利用しないようにするためのインセンティブを与える。
「出力ベース」のモデル(UTXOベースモデルと呼ばれることもある)では、所与のトランザクションのデータ構造は、1つまたは複数の入力と1つまたは複数の出力とを含む。任意の使用可能な出力は、デジタル資産の額を指定する要素を含み、これはUTXO(「未使用トランザクション出力」)と呼ばれることもある。出力は、出力を償還するための条件を指定するロックスクリプトをさらに含み得る。各入力は、先行トランザクションにおけるそのような出力へのポインタを含み、指し示された出力のロックスクリプトをロック解除するためのロック解除スクリプトをさらに含み得る。そのため、トランザクションのペアを考慮して、それらを第1のトランザクションおよび第2のトランザクション(または「ターゲット」トランザクション)と呼ぶ。第1のトランザクションは、デジタル資産の額を指定するとともに、出力をロック解除する1つまたは複数の条件を定義するロックスクリプトを含む少なくとも1つの出力を含む。第2のターゲットトランザクションは、第1のトランザクションの出力へのポインタを含むとともに、第1のトランザクションの出力をロック解除するためのロック解除スクリプトを含む少なくとも1つの入力を含む。
そのようなモデルでは、第2のターゲットトランザクションがP2Pネットワークに送られて伝搬されブロックチェーンに記録されるとき、各ノードで適用される有効性の基準のうちの1つは、ロック解除スクリプトが第1のトランザクションのロックスクリプトで定義された1つまたは複数の条件のすべてを満たすことである。もう1つは、第1のトランザクションの出力が別の先の有効なトランザクションによってまだ償還されていないということである。これらの条件のいずれかにしたがってターゲットトランザクションが無効であることを発見したノードは、それを伝搬することも、ブロックチェーンに記録されるブロックへとマイニングするために含めることもしない。
従来、ブロックチェーンにおけるトランザクションは、デジタル資産、すなわちいくつかのデジタルトークンを通信するために使用される。しかしながら、ブロックチェーンは、ブロックチェーンの上に追加の機能を重ねるために活用することもできる。例えば、ブロックチェーンプロトコルは、トランザクションの出力における追加のユーザデータの記憶を可能にし得る。最新のブロックチェーンでは、単一のトランザクション内に記憶可能な最大データ容量が増えており、より複雑なデータを組み込むことが可能である。例えば、これを使用して、ブロックチェーンに電子文書を記憶したり、さらにはオーディオまたはビデオデータを記憶したりすることができる。
いくつかの状況では、階層化ネットワークのノードが、ネットワークの別のノードとの接続を意図的にドロップすることが有益であり得ることが認識される。
本明細書で開示される一態様によれば、階層化ネットワークのノード間の接続を適応させるためのコンピュータ実装方法が提供される。階層化ネットワークは、順序付けられた層のセットに配置された複数のノードを含む。順序付けられた層のセットは、順に、コアノードのセットを含むコア層と、第2のノードのセットを含む第2の層と、各々が外部ノードのそれぞれのセットを含む1つまたは複数の外層とを含む。各コアノードは、少なくとも1つの他のコアノードに接続される。方法は、適応ノードによって実行され、適応ノードは、1つまたは複数の第2のノードおよび複数のコアノードに接続された階層化ネットワークのノードである。方法は、階層化ネットワークの1つまたは複数のネットワーク特性に基づいて、適応ノードと複数のコアノードのすべてではないが少なくとも1つとの間のそれぞれの接続を無効にすることを含む。
実施形態では、コアノードは、ブロックチェーンネットワークのノードを含む。実施形態では、コアノードの各々は、ブロックチェーンネットワークのマイニングノードおよび/またはストレージノード(例えば、フルコピーノード)であり得る。
本開示の実施形態の理解を助け、そのような実施形態がどのように実施され得るかを示すために、単なる例として添付の図面を参照する。
ブロックチェーンを実装するためのシステムの概略ブロック図である。
ブロックチェーンに記録され得るトランザクションのいくつかの例を概略的に示す。
階層化ネットワークの例の概略図である。
階層化ネットワークの例の別の概略図である。
階層化ネットワークの例の別の概略図である。
階層化ネットワークの例の別の概略図である。
例示的なシステムの概要
図1は、ブロックチェーン150を実装するための例示的なシステム100を示す。システム100は、典型的にはインターネットなどの広域インターネットワークであるパケット交換ネットワーク101を含む。パケット交換ネットワーク101は、パケット交換ネットワーク101内にピアツーピア(P2P)オーバーレイネットワーク106を形成するように構成された複数のノード104を含む。ブロックチェーンネットワーク106の各ノード104は、ピアのコンピュータ機器を含み、ノード104のうちの異なるノードは異なるピアに属する。各ノード104は、1つまたは複数のプロセッサ、例えば1つまたは複数の中央処理装置(CPU)、アクセラレータプロセッサ、特定用途向けプロセッサおよび/またはフィールドプログラマブルゲートアレイ(FPGA)を含む処理装置を備える。各ノードはまた、メモリ、すなわち、1つまたは複数の非一時的コンピュータ可読媒体の形態のコンピュータ可読ストレージを備える。メモリは、1つまたは複数のメモリ媒体、例えば、ハードディスクなどの磁気媒体、ソリッドステートドライブ(SSD)、フラッシュメモリもしくはEEPROMなどの電子媒体、および/または光ディスクドライブなどの光学媒体を使用する1つまたは複数のメモリユニットを含み得る。
図1は、ブロックチェーン150を実装するための例示的なシステム100を示す。システム100は、典型的にはインターネットなどの広域インターネットワークであるパケット交換ネットワーク101を含む。パケット交換ネットワーク101は、パケット交換ネットワーク101内にピアツーピア(P2P)オーバーレイネットワーク106を形成するように構成された複数のノード104を含む。ブロックチェーンネットワーク106の各ノード104は、ピアのコンピュータ機器を含み、ノード104のうちの異なるノードは異なるピアに属する。各ノード104は、1つまたは複数のプロセッサ、例えば1つまたは複数の中央処理装置(CPU)、アクセラレータプロセッサ、特定用途向けプロセッサおよび/またはフィールドプログラマブルゲートアレイ(FPGA)を含む処理装置を備える。各ノードはまた、メモリ、すなわち、1つまたは複数の非一時的コンピュータ可読媒体の形態のコンピュータ可読ストレージを備える。メモリは、1つまたは複数のメモリ媒体、例えば、ハードディスクなどの磁気媒体、ソリッドステートドライブ(SSD)、フラッシュメモリもしくはEEPROMなどの電子媒体、および/または光ディスクドライブなどの光学媒体を使用する1つまたは複数のメモリユニットを含み得る。
ブロックチェーン150は、データブロック151のチェーンを含み、ブロックチェーン150のそれぞれのコピーは、P2Pネットワーク160内の複数のノードの各々において維持される。チェーン内の各ブロック151は、1つまたは複数のトランザクション152を含み、この文脈におけるトランザクションは、データ構造の一種を指す。データ構造の性質は、トランザクションモデルまたは方式の一部として使用されるトランザクションプロトコルのタイプに依存する。所与のブロックチェーンは、典型的には、全体を通して1つの特定のトランザクションプロトコルを使用する。1つの一般的なタイプのトランザクションプロトコルでは、各トランザクション152のデータ構造は、少なくとも1つの入力と少なくとも1つの出力とを含む。各出力は、出力が暗号的にロックされている(ロック解除され、それによって償還または使用されるためにはそのユーザの署名を必要とする)ユーザ103に属するデジタル資産の量を表す額を指定する。各入力は、先行トランザクション152の出力を指し示し、それによってトランザクションをリンクする。
ノード104のうちの少なくともいくつかは、トランザクション152をフォワードし、それによって伝搬するフォワーディングノード104Fの役割を引き受ける。ノード104のうちの少なくともいくつかは、ブロック151をマイニングするマイナー104Mの役割を引き受ける。ノード104のうちの少なくともいくつかは、ストレージノード104S(「フルコピー」ノードと呼ばれることもある)の役割を引き受け、その各々が、同じブロックチェーン150のそれぞれのコピーをそれぞれのメモリに記憶する。各マイナーノード104Mはまた、ブロック151にマイニングされるのを待っているトランザクション152のプール154を維持する。所与のノード104は、フォワーディングノード104、マイナー104M、ストレージノード104S、またはこれらのうちの2つもしくはすべての任意の組合せであり得る。
所与の現在のトランザクション152jにおいて、入力(または各入力)は、トランザクションのシーケンスにおける先行トランザクション152iの出力を参照するポインタを含み、この出力が現在のトランザクション152jにおいて償還または「使用」されるべきであることを指定する。一般に、先行トランザクションは、プール154または任意のブロック151内の任意のトランザクションであり得る。先行トランザクション152iは、現在のトランザクションが有効となるために存在および妥当性確認される必要があるが、先行トランザクション152iは、現在のトランザクション152jが作成されるときまたはネットワーク106に送信されるときに必ずしも存在する必要はない。したがって、本明細書における「先行する(preceding)」は、ポインタによってリンクされた論理シーケンスにおける先行するものを指し、必ずしも時間シーケンスにおける作成または送信の時間を指すものではなく、したがって、トランザクション152i、152jが順不同に作成または送信されることを必ずしも除外するものではない(オーファントランザクションに関する以下の説明を参照)。先行トランザクション152iは、先のトランザクション(antecedent transaction)または先行したトランザクション(predecessor transaction)とも呼ばれる。
現在のトランザクション152jの入力はまた、先行トランザクション152iの出力がロックされるユーザ103aの署名を含む。次に、現在のトランザクション152jの出力は、新しいユーザ103bに暗号的にロックされ得る。したがって、現在のトランザクション152jは、先行トランザクション152iの入力において定義された額を、現在のトランザクション152jの出力において定義されたように、新しいユーザ103bに転送することができる。場合によっては、トランザクション152は、複数のユーザ(残り(change)を与えるためにそのうちの1人が元のユーザ103aであり得る)間で入力額を分割するために複数の出力を有し得る。場合によっては、トランザクションはまた、1つまたは複数の先行トランザクションの複数の出力からの額をまとめ、現在のトランザクションの1つまたは複数の出力に再分配するために複数の入力を有することができる。
上記は、「出力ベース」トランザクションプロトコルと呼ばれ得、未使用トランザクション出力(UTXO)タイププロトコルと呼ばれることもある(ここでは出力はUTXOと呼ばれる)。ユーザの総残高は、ブロックチェーンに記憶された任意の1つの数字で定義されるのではなく、代わりに、ユーザは、ブロックチェーン151内の多くの異なるトランザクション152全体に散在しているそのユーザのすべてのUTXOの値を照合するための特別な「ウォレット」アプリケーション105を必要とする。
別のタイプのトランザクションプロトコルは、アカウントベースのトランザクションモデルの一部として、「アカウントベース」プロトコルと呼ばれ得る。アカウントベースの場合、各トランザクションは、過去のトランザクションのシーケンスにおける先行トランザクションのUTXOを参照することによってではなく、絶対アカウント残高を参照することによって、転送されるべき額を定義する。すべてのアカウントの現在の状態は、ブロックチェーンとは別個のマイナーによって記憶され、絶えず更新される。このようなシステムでは、トランザクションは、アカウントの実行中のトランザクションタリー(「ポジション」とも呼ばれる)を使用して順序付けられる。この値は、送信者によってその暗号署名の一部として署名され、トランザクション参照計算の一部としてハッシュされる。加えて、任意選択のデータフィールドもトランザクションにおいて署名され得る。このデータフィールドは、例えば、前のトランザクションIDがデータフィールドに含まれている場合、前のトランザクションを指し示し得る。
いずれのタイプのモデルにおいても、ユーザ103が新しいトランザクション152jを成立させることを望む場合、ユーザは、新しいトランザクションをユーザのコンピュータ端末102からP2P妥当性確認ネットワーク106のノード104(これは、今日では典型的にはサーバまたはデータセンタであるが、原則として他のユーザ端末であってもよい)のうちの1つに送信する。このノード104は、ノード104の各々において適用されるノードプロトコルにしたがってトランザクションが有効であるかどうかをチェックする。ノードプロトコルの詳細は、当該ブロックチェーン150において使用されているトランザクションプロトコルのタイプに対応し、全体としてトランザクションモデルを形成する。ノードプロトコルは、典型的には、新しいトランザクション152j内の暗号署名が、トランザクション152の順序付けられたシーケンス内で前のトランザクション152iに依存する予想される署名と一致することをチェックするようにノード104に求める。出力ベースの場合、これは、新しいトランザクション152jの入力に含まれるユーザの暗号署名が、新しいトランザクションが使用する先行トランザクション152iの出力において定義される条件と一致することをチェックすることを含み得、この条件は、典型的には、新しいトランザクション152jの入力における暗号署名が、新しいトランザクションの入力が指し示す前のトランザクション152iの出力をロック解除することをチェックすることを少なくとも含む。いくつかのトランザクションプロトコルでは、条件は、入力および/または出力に含まれるカスタムスクリプトによって少なくとも部分的に定義され得る。代替的に、単にノードプロトコルのみによって固定されてもよく、またはこれらの組合せによるものであってもよい。いずれにしても、新しいトランザクション152jが有効である場合、現在のノードは、それをP2Pネットワーク106内のノード104のうちの1つまたは複数の他のノードにフォワードする。これらのノード104のうちの少なくともいくつかは、フォワーディングノード104Fとしても機能し、同じノードプロトコルにしたがって同じテストを適用し、そして、新しいトランザクション152jを1つまたは複数のさらなるノード104にフォワードし、以下同様である。このようにして、新しいトランザクションはノード104のネットワーク全体に伝搬される。
出力ベースのモデルでは、所与の出力(例えば、UTXO)が使用されたかどうかの定義は、それがノードプロトコルにしたがって別の前方のトランザクション152jの入力によって有効に償還されたかどうかかである。トランザクションが有効であるための別の条件は、それが使用または償還しようとする先行トランザクション152iの出力が、別の有効なトランザクションによってまだ使用/償還されていないことである。この場合も同様に、有効でない場合、トランザクション152jは、ブロックチェーンに伝搬も記録もされない。これは、使用者が同じトランザクションの出力を複数回使用しようとする二重支出を防止する。
妥当性確認に加えて、ノード104Mのうちの少なくともいくつかはまた、「プルーフオブワーク」に支えられるマイニングとして知られるプロセスにおいてトランザクションのブロックを最初に作成しようと競い合う。マイニングノード104Mにおいて、ブロック内にまだ現れていない有効なトランザクションのプールに新しいトランザクションが追加される。次いで、マイナーは、暗号パズルを解くことを試みることによって、トランザクションのプール154からトランザクション152の新しい有効ブロック151を組み立てようと競い合う。典型的には、これは、ノンスがトランザクションのプール154と連結されハッシュされたときにハッシュの出力が所定の条件を満たすような「ノンス」値を探索することを含む。例えば、所定の条件とは、ハッシュの出力が特定の所定の数の先行ゼロを有することであり得る。ハッシュ関数の特性は、その入力に対して予測不可能な出力を持つことである。したがって、この探索は、総当たりでしか実行することができないので、パズルを解こうとしている各ノード104Mでかなりの量の処理リソースを消費する。
最初にパズルを解いたマイナーノード104Mは、これをネットワーク106に公表し、後にネットワーク内の他のノード104によって容易にチェックすることができるその解をプルーフとして提供する(ハッシュに対する解が与えられると、ハッシュの出力が条件を満たすことをチェックすることは簡単である)。勝者がパズルを解いたトランザクションのプール154は、次いで、ストレージノード104Sとして機能するノード104のうちの少なくともいくつかによって、そのような各ノードにおいて勝者が公表した解をチェックしたことに基づいて、ブロックチェーン150内に新しいブロック151として記録されるようになる。ブロックポインタ155はまた、チェーン内の前に作成されたブロック151n-1を指し示す新しいブロック151nに割り当てられる。プルーフオブワークは、新たなブロック151を作成するのに多大な労力を要するので、二重支出のリスクを低減するのに役立ち、二重支出を含むブロックは他のノード104によって拒絶される可能性が高いので、マイニングノード104Mは、二重支出がそれらのブロックに含まれないようにするインセンティブが与えられる。ブロック151は、一旦作成されると、同じプロトコルにしたがってP2Pネットワーク106内の記憶ノード104Sの各々で認識および維持されるので、修正することができない。ブロックポインタ155はまた、ブロック151にシーケンシャル順序を付与する。トランザクション152は、P2Pネットワーク106内の各ストレージノード104Sにおいて順序付けられたブロックに記録されるので、これは、トランザクションの不変の公開台帳を提供する。
プール154は、「メムプール(mempool)」と呼ばれることがある。本明細書においてこの用語は、任意の特定のブロックチェーン、プロトコル、またはモデルに限定することを意図していない。これは、マイナーがマイニングのために受け入れ、かつ、同じ出力を使用しようとする他のトランザクションをマイナーが受け入れないことにコミットしたトランザクションのプールを指す。
任意の所与の時間にパズルを解こうと競い合う異なるマイナー104Mは、それらがいつ解を探索し始めたかに応じて、任意の所与の時間におけるマイニングされていないトランザクションプール154の異なるスナップショットに基づいてそうしている可能性があることに留意されたい。誰がそれぞれのパズルを最初に解いても、どのトランザクション152が次の新しいブロック151nに含まれるかを定義し、マイニングされていないトランザクションの現在のプール154が更新される。次いで、マイナー104Mは、新しく定義された未処理プール154からブロックを作成しようと競い合い続け、以下同様である。2人のマイナー104Mが互いに非常に短い時間内にパズルを解いて、ブロックチェーンの相反する見解が伝搬される場合に発生し得る任意の「フォーク」を解決するためのプロトコルも存在する。要するに、フォークのどちらのプロングが最も長く成長しても、確定的なブロックチェーン150となる。
ほとんどのブロックチェーンでは、勝利マイナー104Mには、(あるユーザから別のユーザにある額のデジタル資産を転送する通常のトランザクションとは対照的に)突如新しい量のデジタル資産を作成する特別なタイプの新しいトランザクションで自動的に報酬が与えられる。したがって、勝者ノードは、ある量のデジタル資産を「マイニング」したといわれる。この特別なタイプのトランザクションは、「生成」トランザクションと呼ばれることがある。それは自動的に新しいブロック151nの一部を形成する。この報酬は、マイナー104Mがプルーフオブワーク競争に参加するためのインセンティブを与える。多くの場合、通常の(非生成)トランザクション152はまた、そのトランザクションが含まれたブロック151nを作成した勝利マイナー104Mにさらに報酬を与えるために、その出力の1つにおいて追加のトランザクション手数料を指定する。
マイニングに関与する計算リソースに起因して、典型的には、マイナーノード104Mの少なくとも各々は、1つまたは複数の物理サーバユニットを含むサーバの形態をとるか、またはデータセンタ全体の形態をとる。各フォワーディングノード104Mおよび/またはストレージノード104Sもまた、サーバまたはデータセンタの形態をとり得る。しかしながら、原則として、任意の所与のノード104は、一緒にネットワーク化されたユーザ端末またはユーザ端末のグループの形態をとることができる。
各ノード104のメモリは、そのそれぞれの1つまたは複数の役割を実行し、ノードプロトコルにしたがってトランザクション152を処理するために、ノード104の処理装置上で実行ように構成されたソフトウェアを記憶する。本明細書においてノード104に帰する任意のアクションは、それぞれのコンピュータ機器の処理装置上で実行されるソフトウェアによって実行され得ることが理解されよう。ノードソフトウェアは、アプリケーション層、またはオペレーティングシステム層もしくはプロトコル層などの下位層、またはこれらの任意の組合せにおける1つまたは複数のアプリケーションにおいて実装され得る。また、本明細書で使用される「ブロックチェーン」という用語は、一般に、この種類の技術を指す総称であり、任意の特定の専有のブロックチェーン、プロトコルまたはサービスに限定されない。
消費ユーザの役割を果たす複数の当事者103の各々のコンピュータ機器102もネットワーク101に接続されている。これらは、トランザクションにおいて支払人および受取人として機能するが、他の当事者に代わってトランザクションのマイニングまたは伝搬に必ずしも参加するわけではない。それらは、マイニングプロトコルを必ずしも実行するわけではない。2つの当事者103およびそれらのそれぞれの機器102、すなわち、第1の当事者103aおよびそのそれぞれのコンピュータ機器102a、ならびに第2の当事者103bおよびそのそれぞれのコンピュータ機器102bは、例示の目的で示されている。はるかに多くのそのような当事者103およびそれらのそれぞれのコンピュータ機器102が存在し、システムに参加し得るが、便宜上、それらは図示されていないことが理解されよう。各当事者103は、個人または組織であり得る。純粋に例示として、第1の当事者103aは、本明細書ではアリスと呼ばれ、第2の当事者103bはボブと呼ばれるが、これは限定的なものではなく、本明細書におけるアリスまたはボブへのいかなる参照も、それぞれ「第1の当事者」および「第2の当事者」と置き換えられ得ることが理解されよう。
各当事者103のコンピュータ機器102は、1つまたは複数のプロセッサ、例えば、1つまたは複数のCPU、GPU、他のアクセラレータプロセッサ、特定用途向けプロセッサ、および/またはFPGAを含むそれぞれの処理装置を含む。各当事者103のコンピュータ機器102は、メモリ、すなわち、1つまたは複数の非一時的コンピュータ可読媒体の形態のコンピュータ可読ストレージを備える。このメモリは、1つまたは複数のメモリ媒体、例えば、ハードディスクなどの磁気媒体、SSD、フラッシュメモリもしくはEEPROMなどの電子媒体、および/または光ディスクドライブなどの光学媒体を使用する1つまたは複数のメモリユニットを含み得る。各当事者103のコンピュータ機器102上のメモリは、処理装置上で実行するように構成された少なくとも1つのクライアントアプリケーション105のそれぞれのインスタンスを含むソフトウェアを記憶する。本明細書において所与の当事者103に帰する任意のアクションは、それぞれのコンピュータ機器102の処理装置上で実行されるソフトウェアを使用して実行され得ることが理解されよう。各当事者103のコンピュータ機器102は、少なくとも1つのユーザ端末、例えば、デスクトップもしくはラップトップコンピュータ、タブレット、スマートフォン、またはスマートウォッチなどのウェアラブルデバイスを含む。所与の当事者103のコンピュータ機器102はまた、ユーザ端末を介してアクセスされるクラウドコンピューティングリソースなどの1つまたは複数の他のネットワーク化されたリソースを含み得る。
クライアントアプリケーション105は、最初に、適切な1つまたは複数のコンピュータ可読記憶媒体上で任意の所与の当事者103のコンピュータ機器102に提供され得、例えば、サーバからダウンロードされ得るか、またはリムーバブルSSD、フラッシュメモリキー、リムーバブルEEPROM、リムーバブル磁気ディスクドライブ、磁気フロッピーディスクもしくはテープ、CDもしくはDVD ROMなどの光ディスク、またはリムーバブル光学ドライブなどのリムーバブル記憶デバイス上で提供され得る。
クライアントアプリケーション105は、少なくとも「ウォレット」機能を含む。これは2つの主要な機能を有する。これらのうちの1つは、それぞれのユーザ当事者103が、ノード104のネットワーク全体に伝搬され、それによってブロックチェーン150に含まれることとなるトランザクション152を作成し、署名し、送信することを可能にすることである。もう1つは、それぞれの当事者に、その当事者が現在所有しているデジタル資産の額を報告することである。出力ベースのシステムでは、この第2の機能は、当該当事者に属するブロックチェーン150全体に散在している様々なトランザクション152の出力において定義された額を照合することを含む。
様々なクライアント機能が、所与のクライアントアプリケーション105に統合されるものとして説明され得るが、必ずしもこれに限定されず、代わりに、本明細書で説明される任意のクライアント機能は、代わりに、例えば、APIを介してインターフェースする、または一方が他方へのプラグインである2つ以上の別個のアプリケーション一式において実装され得ることに留意されたい。より一般的には、クライアント機能は、アプリケーション層もしくはオペレーティングシステムなどの下位層、またはこれらの任意の組合せにおいて実装され得る。以下では、クライアントアプリケーション105に関して説明するが、これに限定されないことが理解されよう。
各コンピュータ機器102上のクライアントアプリケーションまたはソフトウェア105のインスタンスは、P2Pネットワーク106のフォワーディングノード104Fのうちの少なくとも1つに動作可能に結合される。これにより、クライアント105のウォレット機能はトランザクション152をネットワーク106に送信することができる。クライアント105はまた、それぞれの当事者103が受信者である任意のトランザクションについてブロックチェーン150にクエリを行うために、ストレージノード104のうちの1つ、いくつか、またはすべてにコンタクトすることができる(または、実施形態では、ブロックチェーン150は、部分的にその公開可視性を通じてトランザクションにおける信頼を提供する公開施設であるので、実際にブロックチェーン150における他の当事者のトランザクションを検査する)。各コンピュータ機器102上のウォレット機能は、トランザクションプロトコルにしたがってトランザクション152を定式化し、送信するように構成される。各ノード104は、ノードプロトコルにしたがってトランザクション152を妥当性確認するように構成されたソフトウェアを実行し、フォワーディングノード104Fの場合には、トランザクション152をネットワーク106全体に伝搬させるためにそれらをフォワードするように構成される。トランザクションプロトコルおよびノードプロトコルは互いに対応し、所与のトランザクションプロトコルは所与のノードプロトコルと共に進行し、一緒に所与のトランザクションモデルを実装する。ブロックチェーン150内のすべてのトランザクション152に対して同じトランザクションプロトコルが使用される(ただし、トランザクションプロトコルは、その中のトランザクションの異なるサブタイプを可能にし得る)。ネットワーク106内のすべてのノード104によって同じノードプロトコルが使用される(ただし、これは、トランザクションの異なるサブタイプを、そのサブタイプに対して定義された規則にしたがって異なって処理し、また、異なるノードが異なる役割を担い、したがってプロトコルの異なる対応する態様を実装することができる)。
述べたように、ブロックチェーン150は、ブロック151のチェーンを含み、各ブロック151は、前述したようなプルーフオブワークプロセスによって作成された1つまたは複数のトランザクション152のセットを含む。各ブロック151はまた、ブロック151へのシーケンシャル順序を定義するために、チェーン内の前に作成されたブロック151を指し示すブロックポインタ155を含む。ブロックチェーン150は、プルーフオブワークプロセスによって新しいブロックに含まれるのを待っている有効なトランザクションのプール154も含む。各トランザクション152(生成トランザクション以外)は、トランザクションのシーケンスへの順序を定義するように、前のトランザクションへ戻るポインタを含む(注意:トランザクション152のシーケンスは分岐することが可能である)。ブロック151のチェーンは、チェーン内の最初のブロックであった発生ブロック(Gb)153までずっと戻る。チェーン150内の早期にある1つまたは複数の元のトランザクション152は、先行トランザクションではなく発生ブロック153を指し示していた。
所与の当事者103、例えばアリスが、ブロックチェーン150に含まれるべき新しいトランザクション152jを送信することを望むとき、アリスは、関連のあるトランザクションプロトコルにしたがって(アリスのクライアントアプリケーション105内のウォレット機能を使用して)新しいトランザクションを定式化する。次いで、アリスは、クライアントアプリケーション105から、アリスが接続されている1つまたは複数のフォワーディングノード104Fのうちの1つにトランザクション152を送信する。例えば、これは、アリスのコンピュータ102に最も近いまたは最良に接続されたフォワーディングノード104Fであり得る。任意の所与のノード104が新しいトランザクション152jを受信すると、それはノードプロトコルおよびそのそれぞれの役割にしたがってそれを処理する。これは、新たに受信されたトランザクション152jが「有効」であるための特定の条件を満たすか否かを最初にチェックすることを含み、その例については、以下でより詳細に説明する。いくつかのトランザクションプロトコルでは、妥当性確認のための条件は、トランザクション152に含まれるスクリプトによってトランザクションごとに構成可能であり得る。代替的に、条件は、単にノードプロトコルの組込み特徴であってもよく、またはスクリプトとノードプロトコルとの組合せによって定義されてもよい。
新たに受信されたトランザクション152jが有効であるとみなされるためのテストにパスすることを条件として(すなわち、それが「妥当性確認される」ことを条件として)、トランザクション152jを受信する任意のストレージノード104Sは、そのノード104Sにおいて維持されるブロックチェーン150のコピー内のプール154に新たな妥当性確認済みトランザクション152を追加する。さらに、トランザクション152jを受信する任意のフォワーディングノード104Fは、妥当性確認済みトランザクション152をP2Pネットワーク106内の1つまたは複数の他のノード104へと前方に伝搬する。各フォワーディングノード104Fは同じプロトコルを適用するので、トランザクション152jが有効であると仮定すると、これは、それがすぐにP2Pネットワーク106全体にわたって伝搬されることを意味する。
1つまたは複数のストレージノード104において維持されるブロックチェーン150のコピー内のプール154に認められると、マイナーノード104Mは、新しいトランザクション152を含むプール154の最新バージョンに対してプルーフオブワークパズルを解こうと競い始める(他のマイナー104Mは、プール154の古いビューに基づいてパズルを解こうと試みている可能性があるが、誰が最初に到達しても、次の新しいブロック151がどこで終わり新しいプール154がどこで開始するかを定義することとなり、最終的には、誰かが、アリスのトランザクション152jを含むプール154の一部についてパズルを解く)。新しいトランザクション152jを含むプール154に対してプルーフオブワークが行われると、それは不変的にブロックチェーン150内のブロック151のうちの1つの一部となる。各トランザクション152は、前のトランザクションへ戻るポインタを含むので、トランザクションの順序も不変的に記録される。
マイニングノードおよびストレージノードは両方とも、機能として妥当性確認を実行し得る。マイニングノードの場合、その機能はハッシングの補助であり、ストレージノードの場合、その機能は記憶の補助であってもよい。
異なるノード104は、まず、所与のトランザクションの異なるインスタンスを受信し得るので、1つのインスタンスがブロック151にマイニングされる前に、どのインスタンスが「有効」であるかの矛盾する見解を有する可能性があり、この時点で、すべてのノード104は、マイニングされたインスタンスが唯一の有効なインスタンスであることに同意する。ノード104が1つのインスタンスを有効として受け入れ、次いで第2のインスタンスがブロックチェーン150に記録されていることを発見した場合、そのノード104はこれを受け入れなければならず、最初に受け入れたマイニングされていないインスタンスを破棄する(すなわち、無効として扱う)。
UTXOベースのモデル
図2は、例示的なトランザクションプロトコルを示す。これは、UTXOベースのプロトコルの一例である。トランザクション152(「Tx」と略記される)は、ブロックチェーン150の基本的なデータ構造である(各ブロック151は1つまたは複数のトランザクション152を含む)。以下では、出力ベースまたは「UTXO」ベースのプロトコルを参照して説明する。しかしながら、これはすべての可能な実施形態に限定されない。
図2は、例示的なトランザクションプロトコルを示す。これは、UTXOベースのプロトコルの一例である。トランザクション152(「Tx」と略記される)は、ブロックチェーン150の基本的なデータ構造である(各ブロック151は1つまたは複数のトランザクション152を含む)。以下では、出力ベースまたは「UTXO」ベースのプロトコルを参照して説明する。しかしながら、これはすべての可能な実施形態に限定されない。
UTXOベースのモデルでは、各トランザクション(「Tx」)152は、1つまたは複数の入力202および1つまたは複数の出力203を含むデータ構造を含む。各出力203は、未使用トランザクション出力(UTXO)を含み得、これは、(UTXOがまだ償還されていない場合)別の新しいトランザクションの入力202のソースとして使用され得る。UTXOは、デジタル資産の額を指定する値を含む。これは、(分散型)台帳上のトークンの設定数を表す。UTXOはまた、他の情報の中でも、元となるトランザクションのトランザクションIDを含み得る。トランザクションデータ構造は、入力フィールド(複数可)202および出力フィールド(複数可)203のサイズを示すインジケータを含み得るヘッダ201も含み得る。ヘッダ201はまた、トランザクションのIDを含み得る。実施形態では、トランザクションIDは、(トランザクションID自体を除く)トランザクションデータのハッシュであり、マイナー104Mにサブミットされる生のトランザクション152のヘッダ201に記憶される。
アリス103aが、当該デジタル資産の額をボブ103bに転送するトランザクション152jを作成することを望むとする。図2では、アリスの新しいトランザクション152jは「Tx1」とラベル付けされている。これは、シーケンス内の先行トランザクション152iの出力203においてアリスにロックされたデジタル資産の額を取り、これのうちの少なくとも一部をボブに転送する。先行トランザクション152iは、図2では「Tx0」とラベル付けされている。Tx0およびTx1は、単なる任意のラベルである。それらは、Tx0がブロックチェーン151内の最初のトランザクションであることも、Tx1がプール154内のすぐ次のトランザクションであることも必ずしも意味するものではない。Tx1は、アリスにロックされた未使用の出力203を依然として有する任意の先行する(すなわち先の)トランザクションを指し示すことができる。
先行トランザクションTx0は、アリスが新しいトランザクションTx1を作成した時点では、または少なくともアリスがそれをネットワーク106に送信する時点までには、すでに妥当性確認されブロックチェーン150に含まれている可能性がある。それは、その時点でブロック151のうちの1つにすでに含まれていてもよいし、プール154で依然として待機していてもよく、この場合、すぐに新しいブロック151に含まれることになる。代替的に、Tx0およびTx1を作成してネットワーク102に一緒に送信することができるか、またはノードプロトコルが「オーファン」トランザクションのバッファリングを可能にする場合には、Tx0をTx1の後に送信することさえもできる。トランザクションのシーケンスの文脈において本明細書で使用される「先行する(preceding)」および「後の(subsequent)」という用語は、トランザクション内で指定されているトランザクションポインタ(どのトランザクションがどの他のトランザクションを指し示すかなど)によって定義されるシーケンス内のトランザクションの順序を指す。それらは、同様に、「先行するもの」および「後続するもの」、または「先の」および「後の」、「親」および「子」などと置き換えられ得る。これは、それらの作成、ネットワーク106への送信、または任意の所与のノード104への到着の順序を必ずしも意味するものではない。それにもかかわらず、先行トランザクション(先のトランザクションまたは「親」)を指し示す後のトランザクション(後のトランザクションまたは「子」)は、親トランザクションが妥当性確認されるまでおよび妥当性確認されない限り、妥当性確認されない。その親より前にノード104に到着する子は、オーファンとみなされる。それは、ノードプロトコルおよび/またはマイナー挙動に応じて、親を待つために特定の時間バッファされるかまたは破棄され得る。
先行トランザクションTx0の1つまたは複数の出力203のうちの1つは、本明細書ではUTXO0とラベル付けされた特定のUTXOを含む。各UTXOは、UTXOによって表されるデジタル資産の額を指定する値と、ロックスクリプトとを含み、ロックスクリプトは、後のトランザクションが妥当性確認され、したがってUTXOが正常に償還されるために、後のトランザクションの入力202内のロック解除スクリプトが満たさなければならない条件を定義する。典型的には、ロックスクリプトは、その額を特定の当事者(それが含まれるトランザクションの受益者)にロックする。すなわち、ロックスクリプトは、典型的には、後のトランザクションの入力内のロック解除スクリプトに、先行トランザクションがロックされる当事者の暗号署名が含まれるという条件を含むロック解除条件を定義する。
ロックスクリプト(通称scriptPubKey)は、ノードプロトコルによって認識されるドメイン固有言語で書かれたコードの一部分である。そのような言語の特定の例は、「スクリプト(Script)」(大文字S)と呼ばれる。ロックスクリプトは、トランザクション出力203を使用するためにどの情報が必要とされるか、例えばアリスの署名の要件を指定する。ロック解除スクリプトはトランザクションの出力に現れる。ロック解除スクリプト(通称scriptSig)は、ロックスクリプト基準を満たすのに必要な情報を提供するドメイン固有言語で書かれたコードの一部分である。例えば、ボブの署名を含み得る。ロック解除スクリプトは、トランザクションの入力202に現れる。
つまり、図示の例では、Tx0の出力203内のUTXO0は、UTXO0が償還されるために(厳密には、UTXO0を償還しようとする後のトランザクションが有効となるために)アリスの署名Sig PAを必要とするロックスクリプト[Checksig PA]を含む。[Checksig PA]は、アリスの公開鍵-秘密鍵ペアからの公開鍵PAを含む。Tx1の入力202は、(例えば、実施形態ではトランザクションTx0全体のハッシュであるそのトランザクションID、TxID0によって)Tx1を指し示すポインタを含む。Tx1の入力202は、Tx0の任意の他の可能な出力の中から、UTXO0を識別するために、Tx0内のそれを識別するインデックスを含む。Tx1の入力202は、アリスが鍵ペアからのアリスの秘密鍵をデータの所定の部分(暗号では「メッセージ」と呼ばれることもある)に適用することによって作成された、アリスの暗号署名を含むロック解除スクリプト<Sig PA>をさらに含む。有効な署名を提供するためにどのデータ(または「メッセージ」)がアリスによって署名される必要があるかは、ロックスクリプトによって、またはノードプロトコルによって、またはこれらの組合せによって定義され得る。
実装形態に応じて、必要とされる署名は、例えば、従来のECDSA(楕円曲線デジタル署名アルゴリズム)署名、DSA(Digital Signature Algorithm)署名、もしくはRSA(Rivest-Shamir-Adleman)署名、または任意の他の適切な形態の暗号署名であり得る。署名のためのチャレンジは、例えば、標準のpay-to-public key(P2PK)パズルまたはP2PKハッシュ(P2PKH)パズルとして実装され得るか、またはRパズルなどの代替手段が、署名のための手段として代わりに実装され得る。本例は、例示としてP2PKを使用する。
新しいトランザクションTx1がノード104に到着すると、ノードはノードプロトコルを適用する。これは、ロックスクリプトおよびロック解除スクリプトを一緒に実行して、ロック解除スクリプトがロックスクリプトで定義されている条件(この条件は1つまたは複数の基準を含み得る)を満たすかどうかをチェックすることを含む。実施形態では、これは2つのスクリプトを連結することを含む:
<Sig PA> <PA> || [Checksig PA]
ここで、「||」は連結を表し、「<…>」はデータをスタックに置くことを意味し、「[…]」はロック解除スクリプト(この例ではスタックベースの言語)で構成される関数である。同等に、スクリプトは、スクリプトを連結するのではなく、共通スタックを用いて次々に実行され得る。いずれにしても、一緒に実行されるとき、スクリプトは、Tx0の出力内のロックスクリプトに含まれるようなアリスの公開鍵PAを使用して、Tx1の入力内のロックスクリプトが、データの予想される部分に署名したアリスの署名を含むことを認証する。データの予想される部分自体(「メッセージ」)はまた、この認証を実行するためにTx0命令に含まれる必要がある。実施形態では、署名されたデータは、Tx0の全体を含む(つまり、平文のデータの署名された部分を指定する別個の要素は、すでに本質的に存在するので、含まれる必要はない)。
<Sig PA> <PA> || [Checksig PA]
ここで、「||」は連結を表し、「<…>」はデータをスタックに置くことを意味し、「[…]」はロック解除スクリプト(この例ではスタックベースの言語)で構成される関数である。同等に、スクリプトは、スクリプトを連結するのではなく、共通スタックを用いて次々に実行され得る。いずれにしても、一緒に実行されるとき、スクリプトは、Tx0の出力内のロックスクリプトに含まれるようなアリスの公開鍵PAを使用して、Tx1の入力内のロックスクリプトが、データの予想される部分に署名したアリスの署名を含むことを認証する。データの予想される部分自体(「メッセージ」)はまた、この認証を実行するためにTx0命令に含まれる必要がある。実施形態では、署名されたデータは、Tx0の全体を含む(つまり、平文のデータの署名された部分を指定する別個の要素は、すでに本質的に存在するので、含まれる必要はない)。
公開-秘密暗号法による認証の詳細は、当業者によく知られている。基本的に、アリスが自身の秘密鍵でメッセージを暗号化することによってメッセージに署名した場合、アリスの公開鍵および平文のメッセージ(暗号化されていないメッセージ)が与えられると、ノード104などの別のエンティティは、メッセージの暗号化バージョンがアリスによって署名されたものに違いないことを認証することができる。署名は、典型的には、メッセージをハッシュし、ハッシュに署名し、これを署名としてメッセージの平文バージョンにタグ付けすることを含み、これにより、公開鍵の任意の保持者が署名を認証することができる。したがって、データの特定の部分またはトランザクションの一部などに署名することへの本明細書におけるいかなる参照も、実施形態では、データのその部分またはトランザクションの一部のハッシュに署名することを意味し得ることに留意されたい。
本明細書のどこかで参照されるハッシュは、例えば、SHA(Secure Hash Algorithm)ハッシュ関数もしくはHMAC(hash-based message authentication code)ハッシュ関数、または当技術分野で知られている任意の他の適切な形態の暗号学的ハッシュ関数によって実装されることを指し得る。
Tx1内のロック解除スクリプトが、Tx0のロックスクリプト内で指定されている1つまたは複数の条件を満たす場合(つまり、図示の例では、アリスの署名がTx1内で提供され、認証された場合)、ノード104は、Tx1が有効であるとみなす。それがマイニングノード104Mである場合、これは、ワークオブプルーフを待つトランザクションのプール154にそれを追加することを意味する。それがフォワーディングノード104Fである場合、トランザクションTx1をネットワーク106内の1つまたは複数の他のノード104にフォワードして、トランザクションTx1がネットワーク全体に伝搬されるようにする。Tx1が妥当性確認されてブロックチェーン150に含まれると、これは、Tx0からのUTXO0を使用済みとして定義する。Tx1は、未使用のトランザクション出力203を使用する場合にのみ有効であり得ることに留意されたい。別のトランザクション152によってすでに使用された出力を使用しようとする場合、Tx1は、他のすべての条件が満たされたとしても無効になる。したがって、ノード104はまた、先行トランザクションTx0内の参照されたUTXOがすでに使用済みである(別の有効なトランザクションへの有効な入力をすでに形成している)かどうかをチェックする必要がある。これは、ブロックチェーン150がトランザクション152に定義された順序を課すことが重要である1つの理由である。実際には、所与のノード104は、どのトランザクション152内のどのUTXO203が使用されたかをマーキングする別個のデータベースを維持し得るが、最終的には、UTXOが使用されたかどうかを定義するものは、ブロックチェーン150内の別の有効なトランザクションへの有効な入力をすでに形成しているかどうかである。
所与のトランザクション152のすべての出力203において指定された総額が、そのすべての入力202によって指し示された総額よりも大きい場合、これは、ほとんどのトランザクションモデルにおいて無効性の別の根拠となる。したがって、そのようなトランザクションは、ブロック151に伝搬もマイニングもされない。
UTXOベースのトランザクションモデルでは、所与のUTXOが全体として使用される必要があることに留意されたい。UTXOにおいて使用済みとして定義された額の一部を「後に残す」ことはできず、別の一部が使用される。しかしながら、次のトランザクションの複数の出力間でUTXOからの額を分割することはできる。例えば、Tx0内のUTXO0において定義された額は、Tx1内の複数のUTXO間で分割され得る。したがって、アリスが、UTXO0において定義された額のすべてをボブに与えたくない場合、アリスは、リマインダを使用して、Tx1の第2の出力において自分自身に残りを与えるか、または別の当事者に支払うことができる。
実際には、今日、生成トランザクションの報酬だけでは、典型的には、マイニングを動機付けるのに十分ではないので、アリスは通常、勝利マイナーに対する手数料を含む必要もある。アリスがマイナーに対する手数料を含めない場合、Tx0は、マイナーノード104Mによって拒否される可能性が高く、したがって、技術的に有効であっても、それは依然として伝搬されず、ブロックチェーン150に含まれない(マイナープロトコルは、マイナー104Mが望まない場合にトランザクション152を受け入れることを強制しない)。いくつかのプロトコルでは、マイニング手数料は、それ自体の別個の出力203を必要としない(すなわち、別個のUTXOを必要としない)。代わりに、所与のトランザクション152の入力(複数可)202によって指し示される総額と出力(複数可)203で指定されている総額との間の差が自動的に勝利マイナー104に与えられる。例えば、UTXO0へのポインタがTx1への唯一の入力であり、Tx1は1つの出力UTXO1のみを有するとする。UTXO0で指定されているデジタル資産の額がUTXO1で指定されている額より大きい場合、その差が自動的に勝利マイナー104Mに贈られる。しかしながら、代替的にまたは追加的に、マイナー手数料がトランザクション152のUTXO203のうちのそれ自体の1つにおいて明示的に指定され得ることが必ずしも除外されるものではなない。
アリスおよびボブのデジタル資産は、ブロックチェーン150内のどこにでもある任意のトランザクション152においてそれらにロックされた未使用UTXOから構成される。したがって、典型的には、所与の当事者103の資産は、ブロックチェーン150全体にわたる様々なトランザクション152のUTXO全体に散在している。ブロックチェーン150内のどこにも、所与の当事者103の総残高を定義する数字は記憶されない。クライアントアプリケーション105におけるウォレット機能の役割は、それぞれの当事者にロックされ、別の前方のトランザクションでまだ使用されていない様々なUTXOすべての値を一緒に照合することである。これは、ストレージノード104Sのいずれか、例えば、それぞれの当事者のコンピュータ機器102に最も近いまたは最良に接続されたストレージノード104Sに記憶されたブロックチェーン150のコピーにクエリを行うことによって行うことができる。
スクリプトコードは、しばしば、概略的に表される(すなわち、正確な言語ではない)ことに留意されたい。例えば、[Checksig PA]と書いて[Checksig PA] = OP_DUP OP_HASH160 <H(PA)> OP_EQUALVERIFY OP_CHECKSIGを意味し得る。「OP_...」は、スクリプト言語の特定のオペコードを指す。OP_CHECKSIG(「Checksig」とも呼ばれる)は、2つの入力(署名および公開鍵)を取り、楕円曲線デジタル署名アルゴリズム(ECDSA)を使用して署名の有効性を検証するスクリプトオペコードである。実行時に、署名(「sig」)の存在(occurrence)はスクリプトから除去されるが、ハッシュパズルなどの追加要件は、「sig」入力によって検証されたトランザクションに残る。別の例として、OP_RETURNは、トランザクション内にメタデータを記憶することができ、それによってメタデータをブロックチェーン150に不変に記録することができる、トランザクションの使用不可能な出力を作成するためのスクリプト言語のオペコードである。例えば、メタデータは、ブロックチェーンに記憶することが望まれる文書を含み得る。
署名PAはデジタル署名である。実施形態では、これは、楕円曲線secp256k1を使用するECDSAに基づく。デジタル署名は、特定のデータの一部分に署名する。実施形態では、所与のトランザクションについて、署名は、トランザクション入力の一部、およびトランザクション出力の全部または一部に署名する。署名された出力の特定の部分は、SIGHASHフラグに依存する。SIGHASHフラグは、どの出力が署名されるかを選択するために署名の最後に含まれる4バイトコードである(したがって、署名時に固定される)。
ロックスクリプトは、それぞれのトランザクションがロックされる当事者の公開鍵を含むという事実を指して、「scriptPubKey」と呼ばれることがある。ロック解除スクリプトは、それが対応する署名を供給するという事実を指して「scriptSig」と呼ばれることがある。しかしながら、より一般的には、UTXOが償還されるための条件が署名を認証することを含むことは、ブロックチェーン150のすべてのアプリケーションにおいて必須ではない。より一般的には、スクリプト言語を使用して、任意の1つまたは複数の条件を定義することができる。したがって、「ロックスクリプト」および「ロック解除スクリプト」というより一般的な用語が好まれ得る。
階層化ネットワーク
Mandalaネットワーク
Mandalaネットワークの概念は、C.Sampaio Filho、A.Moreira、R.Andradeらの「Mandala Networks: ultra-small-world and highly sparse graphs.」Sci Rep 5、9082(2015)によって紹介された。
Mandalaネットワーク
Mandalaネットワークの概念は、C.Sampaio Filho、A.Moreira、R.Andradeらの「Mandala Networks: ultra-small-world and highly sparse graphs.」Sci Rep 5、9082(2015)によって紹介された。
Mandalaネットワークは、第1の層が完全グラフを形成し、同層内の各ノードが同じ次数を有する層(またはシェルもしくはジェネレーション)で構築されるネットワークである。ここで、第1の層は、第1の層内の各ノードが第1の層内の他のすべてのノードに接続されているという点で、完全グラフを形成する。層の「次数」は、所与のノードが接続されている層と同じ層のノードの数を表す用語である。例えば、層が2の次数を有する場合、その層内の各ノードは、同層の2つの他のノードに接続される。
3つのパラメータ(n1,b,λ)の選択により、Mandalaネットワークのタイプが指定される。パラメータn1は、第1の層内のノードの数を表し、パラメータbは、第iの層内の各ノードに接続されて第(i+1)の層を形成するノードの数を表し、λは、各シェルにおけるノードの次数を決定するスケールファクタである。第iの層内のノードは、そのノードに接続されている第(i+1)の層内のノード(複数可)の「祖先」と呼ばれる。構成によって、各層内の各ノードは、第1の層までのそれらの祖先ノードのすべてに直接接続される。
gがMandalaネットワークにおける層の総数である場合、層i内のノードの次数は、kigで示され、以下によって与えられる:
kig=bλg-i+(i-1)
kig=bλg-i+(i-1)
タイプAのMandalaネットワークは、パラメータ(n1,b,λ)=(3,2,2)を有し、この場合、上記の式は以下となる:
タイプBのMandalaネットワークは、パラメータ(n1,b,λ)=(4,4,2)を有する。これらのネットワークは、リングトポロジで層内次数が2である。タイプAのネットワークの特性は、層2(すなわち、第2の層)以上の各ノードが、層1(すなわち、第1の層または中央層)の厳密に1つのノードに接続されることである。
定義によれば、たった3つのパラメータ(n1,b,λ)であらゆるタイプのMandalaネットワークが構築される。このため、非常に特定的かつ制限的なネットワークのセットを記述することしかできない。ネットワークに接続するノードが所定のルールセットにしたがって接続するようにノードの階層化ネットワークを確立することが望ましいことが認識される。
階層化ネットワーク構造
階層化ネットワークは、通信チャネルの上に階層化されたオーバーレイネットワークである。例えば、通信チャネルは、パーソナルエリアネットワーク、ローカルエリアネットワーク(例えば、企業間P2Pネットワーク)、またはインターネットなどの広域ネットワークなどの基礎となるインフラストラクチャネットワークであり得る。他の例では、階層化ネットワークは、ワイヤード接続を介して接続されたノードのネットワークであり得る。さらに他の例では、接続は、ワイヤレス接続、例えば、Bluetooth(登録商標)またはWi-Fi接続であり得る。いくつかの例では、階層化ネットワークを形成ために、上記の例示的な接続のうちのいくつかまたはすべてが使用され得る。
階層化ネットワークは、通信チャネルの上に階層化されたオーバーレイネットワークである。例えば、通信チャネルは、パーソナルエリアネットワーク、ローカルエリアネットワーク(例えば、企業間P2Pネットワーク)、またはインターネットなどの広域ネットワークなどの基礎となるインフラストラクチャネットワークであり得る。他の例では、階層化ネットワークは、ワイヤード接続を介して接続されたノードのネットワークであり得る。さらに他の例では、接続は、ワイヤレス接続、例えば、Bluetooth(登録商標)またはWi-Fi接続であり得る。いくつかの例では、階層化ネットワークを形成ために、上記の例示的な接続のうちのいくつかまたはすべてが使用され得る。
ノードのうちのいくつかまたはすべては、ネットワークであり、接続プロトコルにしたがって階層化ネットワークに接続する(すなわち、参加または再参加する)ように構成される。接続プロトコルは、接続ノードが接続している(すなわち、参加または再参加しようとしている)先のネットワークの特定の層に応じて変化し得る。接続プロトコルを詳細に説明する前に、接続プロトコルによって作成、すなわち強制され得る一連の例示的な階層化ネットワークについて説明する。しかしながら、これらは例示的な例にすぎず、一般に、接続プロトコルに従う任意の階層化ネットワークが作成され得ることが理解されよう。
図3は、階層化ネットワーク(LN)300の例の概略図を示す。一般に、LNは、コアノード301から構成されるコアネットワーク(またはコア層)と、一連の層(またはシェル)とを含む。コア層は、LNの第1の層とも呼ばれる。一連の層は、コア層の外側に向かって、第2のノード302から構成される第2の層から1つまたは複数の外層へと順に延在する。各外層は、外部ノード303のセットから構成される。図3には1つの外層のみが示されているが、LNは任意の数の外層を含み得ることが理解されよう。特定の例として、5つの層を含むLN500の例を図5に示し、4つの層を含むLN600の例を図6に示す。
図3の例示的なLN300は、5つのコアノード301と、6つの第2のノード302と、8つの外部ノード303とを含む。いくつかのLN300では、ノードの数は層ごとに増加し得、すなわち、コア層は最小数のノードから構成され、最外層は最大数のノードから構成される。他の例では、コア層と最外層との間の層のうちの1つまたは複数が最大数のノードから構成されてもよい。この例では、コア層はLN300の最内層であり、第2の層は中間層であり、唯一の外層である外層は最外層である。
この例におけるコア層(LN内のネットワーク)は、完全グラフを形成し、すなわち、各コアノード301は、他の各コアノード301に接続されている。5つのコアノード301のコア層の場合、所与の例では、コア層は、10個の別個のコア接続(すなわち、2つのコアノード間に1つの接続)を必要とする。他の例(例えば、図4)では、コア層は、完全グラフでないであろう。コア層は、「ほぼ完全グラフ」を形成し得る。ほぼ完全グラフでは、少なくとも1つのコアノード301が少なくとも1つの他のコアノード301に接続されていない。1つのコア接続のみが欠落しているかもしれない。ほぼ完全グラフの特定の例では、各コアノード301は、他のコアノード301のすべてではないが1つまたは複数に接続され得る。
第2の層は、第2のノード302を含む。「第2のノード」という用語は、構造上、LN300の第2の層内に位置するノード302のラベルとしてのみ使用されることに留意されたい。各第2のノード302は、少なくとも1つのコアノード301に接続されている。いくつかの例では、各第2のノード302は、1つのコアノード301のみに接続され得る。代替的に、第2のノード302のうちのいくつかまたはすべては、2つ以上のコアノード301に接続されてもよい。例えば、第2のノード302のうちのいくつかまたはすべては、コアノード301の1つ1つに接続し得る。図3の例示的なLN300では、各コアノード301は、2つの第2のノード302に接続されている。しかしながら、この例では、いくつかの第2のノード302(縞模様の円で示されるもの)は1つのコアノード301に接続され、いくつかの第2のノード302(白い円で示されるもの、および影付きの円で示されるもの)は2つのコアノード301に接続されている。同じコアノード301に接続された第2のノード302(および外層の外部ノード303)は、「コミュニティ」と呼ばれる。例えば、それぞれの白いノードが共に1つのコミュニティを形成し、それぞれの縞模様のノードが共に1つのコミュニティを形成し、それぞれ影付きのノードが共にさらに別のコミュニティを形成する。第2のノード302とコアノード301との間の接続は、「祖先接続(ancestor connection)」と呼ばれ、太い破線で示されている。
図3の例では、各第2のノード302は、2つの他の第2のノード302に接続されている。いくつかの例では、第2のノード302のうちのいくつかまたはすべては、他の第2のノードとの接続を形成しなくてもよく、例えば、いくつかの第2のノード302は他の第2のノード302に接続され得るが、いくつかの第2のノードは他の第2のノード302に接続され得る。これらの「層内」接続は、図3においてノード間の実線として示されている。
図3の外層は、外部ノード303を含む。ここでの「外層(outer layer)」の「外(outer)」という用語は、それ自体、必ずしもLNネットワーク全体の最外層に限定されるものではないが、それも1つの可能性であることに留意されたい。各外部ノード303は、少なくとも1つの第2のノード302に接続されている。いくつかの例では、各外部ノード303は、1つの第2のノード302のみに接続され得る。代替的に、外部ノード303のうちのいくつかまたはすべては、2つ以上の第2のノード302に接続されてもよい。例えば、外部ノード303のうちのいくつかまたはすべては、第2のノード301の1つ1つに接続し得る。図3の例示的なLN300では、各外部ノード303は、2つの第2のノード302に接続されている。いくつかの第2のノード302(すなわち、縞模様のノード)は、2つの外部ノード303に接続され、いくつかの第2のノード302(すなわち、白色のノードおよび影付きのノード)は、3つの外部ノード303に接続されている。
図3の例では、各外部ノード303は、同層の2つの他の外部ノード303に接続されている。いくつかの例では、外部ノード303のうちのいくつかまたはすべては、同層の他の外部ノード303との接続を形成しなくてもよい。外部ノード303のうちのいくつかまたはすべては、同層の別の外部ノード303と少なくとも1つの接続を形成し得る。
少なくとも1つの第2のノード302に接続されているとともに、各外部ノード303は、少なくとも1つのコアノード301にも接続されている。外部ノード303とコアノード301との間の接続は、「コア祖先接続(core ancestor connection)」と呼ばれ、細い破線で示されている。各外部ノード303は、それらの祖先の第2のノード(複数可)302が接続されているコアノード301の各々に接続され得る。図3に示されるように、各外部ノード303は、それらの祖先の第2のノード(複数可)302が接続されているコアノード301の各々に接続され得、他のコアノード301には接続されないであろう。この場合、各外部ノード303は、単一のコミュニティに属する。
図4は、LN400の別の例の概略図を示す。図3のLN300と同様に、例示的なLN400は、コア層と、第2の層と、外層とを含む。これらの例示的なLN300、400は、同じ数のノード(すなわち、5つのコアノード301、6つの第2のノード302、および8つの外部ノード303)を共有するが、異なる数の接続を含む。例えば、この例では、コアノード301間のいくつかの接続が存在しないので、コア層は完全グラフではない。別の違いは、2つのコミュニティ(白いノードおよび影付きのノード)が単一のコアノード301を含むのに対して、別のコミュニティ(影付きのノード)は3つのコアノード301を含むことである。さらに別の違いは、LN300の外シェル内のノードの次数が2であるのとは異なり、LN400の外シェル内のノードの次数がここでは1であることである。すなわち、この例示的なLN400では、各外部ノード303は、単一の他の外部ノード303に接続されている。したがって、異なる層のノードは異なる次数を有する。
図5は、LN500の別の例の概略図を示す。この例では、いくつかのコアノード301のみが第2のノードおよび外部ノード303に接続されている。すなわち、この例では、いくつかのコアノード301は、他のコアノード301との接続のみを形成する。したがって、この例では、LN500は、単一のコミュニティ(影付きノード)を含む。この例のLN500は、コア層、第2の層、および3つの外層という5つの層を含む。コア層は、ほぼ完全グラフを形成する5つのコアノード301から構成される。ほぼ完全グラフのこの例では、単一のコア接続のみが欠落している。第2の層は、2つのコアノード301に接続された単一の第2のノード302から構成される。第2の層は、2つのコアノード301に接続された単一の第2のノード302から構成される。第3の層は、祖先接続を介して第2のノード302に接続されている単一の外部ノード303から構成される。第3の層の外部ノード303はまた、第2のノード302が接続されている2つのコアノード301に接続されている。外部ノード303は、それぞれのコア祖先接続を介して2つのコアノード301に接続されている。第4の層も、単一の外部ノード304から構成される。第4の層の外部ノード304は、祖先接続を介して第3の層の外部ノード303に、そして祖先接続を介して第2のノード302に接続されている。第4の層の外部ノード304も、第2のノード302および第3の層の外部ノード303が接続されている2つのコアノード301に接続されている。外部ノード304は、それぞれのコア祖先接続を介して2つのコアノード301に接続されている。最後に、第5の層は、2つの外部ノード305から構成される。第5の層の2つの外部ノード305は、第4の層の外部ノード304に、第3の層の外部ノード303に、そして第2のノード302に接続され、それぞれの接続が祖先接続である。2つの外部ノード305もまた、コア祖先接続を介して2つのコアノード301に接続されている。この例示的なLN500では、第2の層のノードおよび外層のノードは、同層の他のどのノードにも接続されない。
図6は、LN600の別の例の概略図を示す。このLNは、白いノードおよび黒いノードによって示されるように、ノードの2つのコミュニティを含む。この例では、コア層は完全グラフ(すなわち、ノードのネットワーク)を形成する。各コミュニティは、3つのコアノード301の別個のセットを含む。この例示的なLN600は、4つの層(コア層、第2の層、および2つの外層)を含む。外層の各ノードは、先行する層の1つのノードに接続されている。図5の例示的なLN500と同様に、第2の層のノードおよび外層のノードは、同層の他のどのノードにも接続されない。
いくつかの実施形態では、LN300、400、500、600(以降、簡潔して「300」で示す)は、「ブロックチェーン階層化ネットワーク(BLN)」であり得る。BLNという用語は、本明細書では、ブロックチェーンネットワーク、またはブロックチェーンネットワークの少なくとも一部、例えば、図1を参照して説明されたブロックチェーンネットワーク106、を含む階層化ネットワークとして定義される。
BLNは、Mandalaネットワークから着想を得たものであり、いくつかの同様の特徴を共有するが、例えば、ブロックチェーンネットワーク106を利用するサービスおよびユーザネットワークのための、より柔軟で望ましい接続構造を可能にするように設計される。
BLN300は、そのコアにブロックチェーンネットワーク106の少なくとも一部を含み得る。一般に、階層化ネットワークのノードは、インターネット101などの基礎となるインフラストラクチャネットワーク上にオーバーレイされる。コアノードのうちのいくつかまたはすべては、ブロックチェーンネットワーク106のノード104である。それらは、マイニングノード104M、ストレージノード104S、またはそれらの組合せを含み得る。実施形態では、コアノードの各々は、マイニングノード104Mおよび/またはストレージノード104S(例えば、フルコピーノード)である。
外部ノード303の各々(または最外層の外部ノードの各々)は、ユーザのコンピュータ機器を含むエンドユーザノードであり得る。これは、個々のユーザ、または会社、学術機関、もしくは政府機関などの組織などであり得る。したがって、各外部ノード303は、1つまたは複数のユーザ端末、および/または1つまたは複数のサイトに1つまたは複数のサーバユニットを含むサーバを含み得る。各外部ノード303は、1つまたは複数のメモリユニットを含むメモリと、1つまたは複数の処理ユニットを含む処理装置とを備える。これらは、例えば、他のネットワーク要素またはユーザ機器に関連して前述したようなメモリ媒体および/またはプロセッサの形態のいずれかをとり得る。メモリは、処理装置上で実行されるように構成されたクライアントソフトウェアを記憶し、クライアントソフトウェアは、実行されるときに、以下の実施形態または類似のもののいずれかによる接続プロトコルに従うプロトコルのクライアントとしてノードを動作させるように構成される。任意選択で、エンドユーザノードのうちの1つまたは複数は、ブロックチェーンネットワーク106のユーザ102のユーザ機器103を含み得、クライアントソフトウェアは、ブロックチェーンウォレットアプリケーション105などを含み得る。
各第2のノード302は、1つまたは複数の物理サーバユニットを含むサーバの形態をとり得る。そのような各ノードは、1つまたは複数のメモリユニットを含むメモリと、1つまたは複数の処理ユニットを含む処理装置とを備える。これらは、例えば、他のネットワーク要素に関連して前述したようなメモリ媒体および/またはプロセッサの形態のいずれかをとり得る。メモリは、第2のノード302の処理装置上で動作されるように構成されたソフトウェアを記憶する。ソフトウェアは、実行されるとき、以下の実施形態または類似のもののいずれかによる接続プロトコルに従うように構成される。いくつかの実施形態では、ソフトウェアは、実行されるとき、以下で説明される実施形態または類似のもののいずれかにしたがって動作するサービスを提供するように構成される。
いくつかの例では、第2のノード302のうちのいくつかまたはすべては、スマートコントラクトサービスを動作し得る。スマートコントラクトサービスは、LN300の他のノードのうちの1つによって、例えば、外部ノード303によって、スマートコントラクトサービスに送信されたブロックチェーントランザクションに応答して、およびそれに基づいて、所定の動作を実行するように構成される。例えば、スマートコントラクトは、外部ノード303から特定のブロックチェーントランザクションを受信したことに応答して、ブロックチェーントランザクションをコアノード301に送信し得る。
他の例では、第2のノード302のうちのいくつかまたはすべては、それらの間で、分散型データベースを動作し得る。すなわち、分散型データベースを動作させる各第2のノード302は、LN300の別のノード、例えば外部ノード303から受信されたデータを記憶するように構成される。データを受信して記憶する第2のノード302は、同じく分散型データベースを動作している他の第2のノード302にデータを伝搬するように構成され得る。
ノード301、302、303は、オーバーレイネットワークレベルで互いの間に接続を形成するように構成される。すなわち、階層化ネットワークのノード301、302、303は、それらが階層化ネットワークの他のノード301、302、303とどのような接続は形成することができてどのような接続は形成することができないかを指定するオーバーレイネットワークプロトコルに従うように構成される。したがって、すべてのノードは、基礎となるインフラストラクチャ(例えば、インターネット)を介して互いに物理的に接続することが可能であるが(必ずしもそうではないが)、それらが、階層化ネットワーク300の関連のあるオーバーレイネットワークプロトコルにしたがって動作する階層化ネットワークのノード301、302、303として参加しているとき、そのようなノード301、302、303間の接続は、より制限される可能性がある。階層化ネットワーク300の2つのノード301、302、303間の接続は、これらのノードが直接通信可能であることを意味し、これは、この文脈では、階層化ネットワーク300の別のノード301、302、303を介してホップを実行する必要がないことを意味する。階層化ネットワークなどのオーバーレイネットワークの文脈では、「接続」は、階層化ネットワーク300のレベル(すなわち、階層化ネットワークのオーバーレイネットワークプロトコルのレベル)での接続(すなわち、エッジ)を意味する。
LN300がBLNである実施形態では、第2のノード302のうちのいくつかまたはすべては、それらの第2のノード302が接続されているコアノード301にブロックチェーントランザクションを送信するように構成され得る。いくつかの例では、第2のノード302は、ブロックチェーントランザクションを生成してから、ブロックチェーントランザクションをコアノード(複数可)301に送信し得る。他の例では、第2のノード302は、ブロックチェーントランザクションをコアノード(複数可)301にフォワードし得る。例えば、第2のノード302は、外部ノード303からブロックチェーントランザクションを受信し、次に、受信したブロックチェーントランザクションをコアノード(複数可)301に送信し得る。同様に、所与の第2のノード302(すなわち、第2のノードのうちのいくつかまたはすべて)は、所与の第2のノード302に接続されたコアノード(複数可)301および/または外部ノード303からブロックチェーントランザクションを取得するように構成され得る。
追加的または代替的に、外部ノード303のうちのいくつかまたはすべては、それらが接続されているコアノード(複数可)301にブロックチェーントランザクションを送信するように構成され得る。外部ノード303はまた、それらが接続されている第2のノード(複数可)302にブロックチェーントランザクションを送信するように構成され得る。いくつかの例では、外部ノード303は、ブロックチェーントランザクションを第2のノード302に、そしてコアノード301に送信し得る。
外部ノード303のうちのいくつかまたはすべては、他の外部ノード303、例えば、同層内の外部ノード、または順序付けられた層のセット内の前の層もしくは次の層の外部ノードにブロックチェーントランザクションを送信するように構成され得る。
BLN300のコアノード301がそれぞれブロックチェーンノード104の役割を果たす実施形態では、第2のノード302および/または外部ノード303のうちのいくつかまたはすべては、所与の第2のノード302または外部ノード303が接続されているマイニングノード104Mのトランザクションのプールにおいて所与のトランザクションが受け入れられたことの確認を要求するように構成され得る。プール154(メムプールと呼ばれることがある)は、ブロックチェーンネットワーク106のコンセンサスルールのセットにしたがって妥当性確認されたトランザクションを含む。トランザクション(例えば、「第1のトランザクション」)がプール154に含まれる場合、マイニングノード104Mは、第1のトランザクションの入力によって参照される出力を二重支出しようとする別のトランザクション(例えば、「第2のトランザクション」)を受け入れない。したがって、第2のノード302および/または外部ノード303は、トランザクション(例えば、ノード302、303によってブロックチェーンネットワーク106にサブミットされたトランザクション)が受け入れられたことをチェックするために、またはトランザクション(例えば、BLN300の別のノードから受信されたトランザクション)が二重支出試行であるかどうかをチェックするために、コアノード301にクエリを行うことができる。コアノード301は、要求に対する応答を要求側ノード302、303に送信するように構成される。
追加的または代替的に、第2のノード302および/または第3のノード303は、ブロックチェーン150のブロック151においてマイニングされたトランザクションのマークルプルーフに対する要求をコアノード301に送信するように構成され得る。マークルプルーフは、当業者によく知られている。マークルプルーフは、マークルルートまで遡るハッシュのシーケンスである。ブロック151においてトランザクションがマイニングされたかどうかを検証するために、ノード302、303は、トランザクションのハッシュを取り、それをマークルプルーフのハッシュのシーケンス内の最初のハッシュ(すなわち、トランザクションのハッシュと同じレベルのマークルツリーのハッシュパートナー)と連結し、結果をハッシングする。この連結およびハッシングのプロセスは、マークルプルーフ内のハッシュのすべてが利用されるまで繰り返される。得られたハッシュがマークルルートと同一である場合、トランザクションはマークルツリーに含まれなければならず、したがってブロック151に含まれなければならない。コアノード301は、マークルプルーフを要求側ノード302、303に送信するように構成される。
追加的または代替的に、第2のノード302および/または第3のノード303は、所与のブロック151のブロックヘッダに対する要求をコアノード301に送信するように構成され得る。他のデータの中でも、ブロックヘッダは、そのブロック151にマイニングされたトランザクションのマークルルートを含む。コアノード301は、マークルプルーフを要求側ノード302、303に送信するように構成される。
いくつかの実施形態では、コアノード301のうちのいくつかまたはすべては、トランザクションのセットを第2のノード(複数可)302のうちのいくつかまたはすべておよび/またはコアノード301に接続された外部ノード(複数可)のうちのいくつかまたはすべてに送信するように構成され得る。セット内のトランザクションは、共通の属性を共有し得る。例えば、コアノード301は、特定のプロトコルフラグを含むすべてのトランザクションを送信し得る。フラグは、トランザクションの出力、例えば、使用不可能な出力に含まれ得る。別の例として、トランザクションは、特定の(および同じ)ブロックチェーンアドレスを含み得、例えば、トランザクションは、同じブロックチェーンアドレスに対して支払い可能であり得る。外部ノード303は、コアノード301が、外部ノード303に関連付けられたアドレスに支払い可能な任意のトランザクションを送信することになることを、コアノード301と合意しているであろう。さらに別の例として、トランザクションは、二次的なコンセンサスルールセットを含み得る。すなわち、トランザクションは、出力において、2つ以上の制御分岐を含み得、各制御分岐は、それぞれのコンセンサスルールセットに固有である。出力は、第1のルールセットに固有の第1の制御分岐と、第2のルールセットに固有の第2の制御分岐とを含み得る(2つの制御分岐は、if-else条件に含まれ得る)。ノード302、303が第2のルールセットを実装するように構成される場合、コアノード301は、トランザクションをノード302、303に送信し得る。ノード302、303が第1のルールセットを実装するようにも第2のルールセットを実装するようにも構成されていない場合、コアノードは、トランザクションをノード302、303に送信しない。
マイニングノード104Mであるコアノード301は、そのマイニングノード104Mによってブロック151にマイニングされた生成トランザクション(「コインベース」トランザクションとも呼ばれる)において、そのマイニングノード104Mに固有の識別子(例えば、「Miner ID」)を含み得る。BLN300の他のノードは、識別子を使用して、ネットワーク上のマイニングノード104Mを識別し得る。
LN300のノード301、302、303を識別する別の方法は、デジタル証明書によるものである。ノード301、302、303のうちのいくつかまたはすべては、デジタル証明書に関連付けられ得る。デジタル証明書は、それぞれのノードの識別子、例えば、そのノードに関連付けられた公開鍵、ノードのネットワークアドレス(例えば、IPアドレス)などを含み、それらを証明する。LN300のノードは、異なるノードのデジタル証明書を使用して、そのノードに接続し得る。例えば、外部ノード303は、第2のノード302からデジタル証明書を取得し、デジタル証明書に含まれる第2のノードの識別情報を使用して第2のノード302に接続し得る。
所与の層のノードは、順序付けられた層のセット内の次の層のノードにデジタル証明書を発行し得、すなわち、コアノード301が第2のノード302にデジタル証明書を発行し得、第2のノード302が第1の外層の外部ノード303にデジタル証明書を発行し得、以下同様である。いくつかの例では、所与の層のノードは、同層のノードにデジタル証明書を発行し得、例えば、第2のノード302が、それぞれのデジタル証明書を1つまたは複数の他の第2のノード302に発行し得る。
接続プロトコル
階層化ネットワーク(LN)のノードは、接続プロトコルにしたがってLNに接続され得る。接続プロトコルは、Mandalaネットワークの特定の有益な態様を依然として保持しながら、Mandalaネットワークよりも制限の少ない階層化ネットワークが形成されることを可能にする。上述したように、階層化ネットワーク300に接続している各ノードは、接続プロトコルにしたがって接続し得る。すなわち、接続ノードは、接続プロトコルのルールに従わなければならない。接続ノードは、接続プロトコルによって許可される接続のみを形成し得る。他の接続は形成されないであろう。例では、接続ノードは、コアノード301、第2のノード302、または外部ノード303であり得る。いくつかの例では、LN300の各ノードは、接続プロトコルに従わなければならない。他の例では、LN300に初めて接続するノード、またはLN300に再参加するノードのみが、接続プロトコルに従わなければならない。図3~図6は、接続プロトコルにしたがって確立される例示的なLN300、400、500、600を示す。
階層化ネットワーク(LN)のノードは、接続プロトコルにしたがってLNに接続され得る。接続プロトコルは、Mandalaネットワークの特定の有益な態様を依然として保持しながら、Mandalaネットワークよりも制限の少ない階層化ネットワークが形成されることを可能にする。上述したように、階層化ネットワーク300に接続している各ノードは、接続プロトコルにしたがって接続し得る。すなわち、接続ノードは、接続プロトコルのルールに従わなければならない。接続ノードは、接続プロトコルによって許可される接続のみを形成し得る。他の接続は形成されないであろう。例では、接続ノードは、コアノード301、第2のノード302、または外部ノード303であり得る。いくつかの例では、LN300の各ノードは、接続プロトコルに従わなければならない。他の例では、LN300に初めて接続するノード、またはLN300に再参加するノードのみが、接続プロトコルに従わなければならない。図3~図6は、接続プロトコルにしたがって確立される例示的なLN300、400、500、600を示す。
物理的にいえば、LN300のノードの各々は、いくつかの例では、例えばインターネットを介して、何らかの他のレベルで互いに接続され得るか、または接続することが可能であり得ることに留意されたい。接続プロトコルは、オーバーレイネットワークのレベルで、すなわち、階層化ネットワークのレベルで、どの接続を形成することができるかについて制限を課し、いくつかの接続は存在しないか、または許可されない。LN300の各接続ノードは、LN300のオーバーレイレベルプロトコル(接続プロトコルを含む)にしたがって動作するように構成され、オーバーレイレベルプロトコルは、ノードがどの接続をオーバーレイレベルで形成することができてどの接続を形成することができないかを決定する。言い換えれば、接続は、2つのノードがそれらのプロトコルによって形成することができるように構成された許可された通信チャネルである。あるノードが別のノードとの接続を有する場合、そのノードは、階層化ネットワークの別のノードを介してホップすることなくそのノードと通信することができるが、そうでない場合、通信することができず、それらの間に接続を有する1つまたは複数の他のノードを介してホップすることによってのみ通信し得る。
接続プロトコルは、いくつかの例ではコアノードが最内層であり得るので先行する層に接続することができない場合を除いて、接続ノードが、先行する(より内側の)層の少なくとも1つのノードと、少なくとも1つのコアノードとに接続することを要求する。接続ノードが第2のノードである例では、これら2つの要件は同等である。接続ノードが第1の外層の外部ノードである場合、接続ノードは、少なくとも第2のノード302およびコアノード301に接続する。
接続プロトコルは、接続ノードが2つ以上のコアノードに接続することを要求し得る。接続プロトコルは、接続ノードが、コアノードのすべてではないが2つ以上のコアノード、例えば1つを除くすべてのコアノードに接続することをさらに要求し得る。接続ノードは、2つ以上のコアノードに接続しなければならない第2のノードであり得る。すなわち、第2のノードのうちのいくつかまたはすべては、2つ以上のコアノード(いくつかの例では、すべてのコアノードではない)に接続しなければならない。
接続プロトコルは、接続ノードが1つまたは複数の第2のノードに接続することを要求し得る。接続ノードが第2のノードである場合、これは、接続(第2の)ノードが1つまたは複数の異なる第2のノードに接続しなければならないことを意味する。接続ノードが外部ノードである場合、接続(外部)ノードは、1つまたは複数の第2のノードに接続しなければならない。接続外部ノードは、第1の外層の外部ノード、または第2の層の外部ノードなどであり得る。
接続プロトコルは、先行する層のノードに接続された外部ノードが、先行する層のノードが接続されているコアノード(複数可)(上記では「コア祖先」と呼ばれる)のうちのいくつかまたはすべてに接続しなければならないことを要求し得る。例えば、外部ノードは第2のノードに接続され得る。その場合、外部ノードは、第2のノードが接続されているコアノード(複数可)にも接続しなければならない。外部ノードが2つ以上の第2のノードに接続されている場合、接続プロトコルは、外部ノードが、第2のノードの各々が接続されているコアノード(複数可)に接続しなければならないことを要求し得る。別の例として、第2の外層の外部ノードは、第1の外層の外部ノードに接続され得る。その例では、接続プロトコルは、第2の外層の外部ノードが、第1の外層の外部ノードが接続されているコアノード(複数可)に接続しなければならないことを要求する。
接続プロトコルは、外部ノードが同じ外層の1つまたは複数の(例えば、2つの)外部ノードに接続することを要求し得る。接続プロトコルは、各外部ノードが同層の1つまたは複数の外部ノードに接続することを要求し得る。代替的に、いくつかの外層は、1つまたは複数の同層接続を形成する外部ノードを含み得、いくつかの外層は、1つまたは複数の同層接続を形成しない外部ノードを含み得る。接続プロトコルは、同じ外層の各外部ノードが、その層の同じ数の異なる外部ノードに接続しなければならないことを要求し得る。例えば、第1の外層の各外部ノードは、2つの外部ノードに接続するように要求され得る。第2の外層の各外部ノードは、3つの外部ノードに接続するように要求され得る。すなわち、外部ノードが接続される同層の外部ノードの数は、外層間で変化し得る。
いくつかの実施形態では、第iの外層(例えば、第3の外層)の外部ノードは、先行する第(i-1)の層(例えば、第2の外層)の外部ノードに接続され得る。接続プロトコルは、後続の第(i+1)の外層の外部ノード(例えば、すべての外部ノード)が、第iの外層の外部ノードが接続されている第(i-1)の層の各ノードに接続しなければならないことを要求し得る。例えば、図5のLN500内の第5の層の外部ノード305は、第4の層の外部ノード304に、そして第3の層の外部ノード303に接続されている。いくつかの例では、接続プロトコルは、第(i+1)の外部ノードが、第iの外層の外部ノードが接続されている各先行する層の各外部ノードに接続しなければならないことを要求し得る。
LN300のノードのうちのいくつかまたはすべてがデジタル証明書に関連付けられている実施形態では、接続プロトコルは、接続ノードが、それぞれのデジタル証明書に関連付けられているノードに関連付けられているノードのみに接続しなければならないことを要求し得る。いくつかの実施形態では、接続プロトコルは、それぞれのノードに関連付けられたデジタル証明書が、それぞれのノードに先行する層のノード(例えば、コアノード)によって、またはいくつかの例では、それぞれのノードの同層のノード(例えば、異なる第2のノード)によって発行された場合にのみ、接続ノード(例えば、外部ノード)がそれぞれのノード(例えば、第2のノード)に接続しなければならないことを要求し得る。
いくつかの実施形態では、接続プロトコルは、接続ノードが、接続ノードにデジタル証明書を発行したノードのみに接続できることを要求し得る。すなわち、ノードに接続することは、そのノードからデジタル証明書を受信することを含む。
接続プロトコルは、BLNの構築を可能にする。Mandalaネットワークと同様に、BLNは層状に構築される。Mandalaネットワークとは異なり、第1の層は、不完全グラフ(例えば、ほぼ完全グラフ)を形成し得る。BLNとMandalaネットワークとの間の他の違いは、BLNでは、各後続層のノードが異なる次数を有し得ること、ノードが中央層の2つ以上のノードに接続され得ること、および/またはノードの次数が層間で異なり得ることである。
好ましくは、中心コアの外側のすべてのノードについて:
(i)各ノードは、中心コア内のn1個のノードのうちのm個に接続されている。
(ii)各ノードはすべての層のノードに接続され、ここでgは層の総数である。
(iii)各ノードは、厳密に1つのコミュニティのメンバである。最大でn2個のコミュニティが存在し、ここでn2は第2の層のノードの数である。
(iv)各ノードは、最大3つのホップで他のすべてのノードに接続されている。これはグラフの直径と呼ばれる。
(i)各ノードは、中心コア内のn1個のノードのうちのm個に接続されている。
(ii)各ノードはすべての層のノードに接続され、ここでgは層の総数である。
(iii)各ノードは、厳密に1つのコミュニティのメンバである。最大でn2個のコミュニティが存在し、ここでn2は第2の層のノードの数である。
(iv)各ノードは、最大3つのホップで他のすべてのノードに接続されている。これはグラフの直径と呼ばれる。
BLNでは、「コミュニティ」は、全く同じコア祖先のセットを共有するノードのセットとして定義される。図6は、ネットワークn1=6、m=3、およびg=4のBLNを示しており、黒色のノードコミュニティおよび白色のノードコミュニティのノードという2つの別個のコミュニティが描かれている。白色のノードコミュニティは、中心コアのLHS上の3つのノードにすべて接続されているノードを含み、黒色のノードコミュニティは、中心コアのRHS上の3つのノードにすべて接続されているノードを含む。
Mandalaネットワークの特徴は、コア層(i=1)の外側のすべてのノードが厳密に1つのコア祖先に接続されていることである(すなわち、どこでもci=1である)。これは、Mandalaネットワークの創発特性に大きく寄与する。
・ ネットワークサイズ(N=Σini)が大きくなるにつれて定数に漸近する平均最短パス長を有する。
・ ネットワークサイズ(N=Σini)が大きくなるにつれて非常に疎になる。
・ ランダムなノードの故障に対してロバストである。
・ ネットワークサイズ(N=Σini)が大きくなるにつれて定数に漸近する平均最短パス長を有する。
・ ネットワークサイズ(N=Σini)が大きくなるにつれて非常に疎になる。
・ ランダムなノードの故障に対してロバストである。
BLNの特徴は、すべての非コアノードが少なくとも1つの祖先に接続することである。しかしながら、BLNの定義は、コア祖先への最大m個の接続を有する非コアノードに対応する(すなわち、どこでも1≦ci≦mである)。BLN全体にわたるci=1から1≦ci≦mへの一般化の理由は、ブロックチェーンプロトコルのアーチファクトとして理解することができる。ブロックチェーンシステムを定義するプロトコルは、確率的セキュリティモデルに依存する。本質的に、これは、イベントがブロックチェーン150上に記録されることの既得権を有するBLN内の任意の参加者(ノード)が、ネットワークハッシュパワーの最小割合fに接続することによって確率的セキュリティモデルを考慮に入れなければならないことを意味し、ここで、総ハッシュパワーの100%は、BLNのコア層内のノード間に分散される。
コア層がそのn1個のコアノードの間でハッシュパワーの均一な平衡分布を示すと仮定すると、ノードの最小割合は以下の通りである:
f=m/n1
f=m/n1
ブロックチェーンプロトコルは、最小割合の下限がf=0.51であることを示すが、規模の大きいBLNのネットワーク参加者は、(例えば、二重支出への)耐性を高めるために、これよりも高い割合(例えば、f=0.67)を要求し得る。BLNは、パラメータmの選択によって特徴付けられ得るが、これは、BLN内の参加者のための動作の確率的セキュリティを規定するものであり、当該BLNのニーズの特定のユースケースに依存する。
コアに最も近い第2の層L2内のノードは、ブロックチェーンプロトコルの確率的セキュリティモデルに最も強く依存しており、この依存性は、層がLgに近づくほど減少し得る。接続プロトコルは、厳密にc2=m個のコア祖先に接続することをL2内のノードに求め得、一方、すべての後続の層i>2内のノードは、コア祖先の範囲1<<ci≦m内のどこにでも接続することができる。いくつかの例では、すべての後続の層のノードは、m個のコア祖先に接続しなければならない。
BLNの中心コアの外側のノードは、コアへの「SPVのような」(SPVはsimplified payment verification(簡易支払検証)を意味する)接続を有し得る。これは、それらが以下を行うことができることを意味する。
a)トランザクションをコアノードに送信する。
b)トランザクションがそのメムプール/候補ブロックにおいて受け入れられたかどうかをコアノードに尋ねる。
c)ブロックにおいてマイニングされたトランザクションのマークルプルーフを求める。
d)ブロックヘッダの最新リストを求める。
a)トランザクションをコアノードに送信する。
b)トランザクションがそのメムプール/候補ブロックにおいて受け入れられたかどうかをコアノードに尋ねる。
c)ブロックにおいてマイニングされたトランザクションのマークルプルーフを求める。
d)ブロックヘッダの最新リストを求める。
これらの単純なターゲット化された要求は、BLNを使用して最も広い可能な範囲のスケーラブルなソリューションが上に構築されることを可能にしながら、コアノード301にできるだけ負担をかけないように設計される。多くのユースケースは、上述したタイプの接続しか必要としない。いくつかの例では、第2のノード302および/または外部ノード303は、上記のアクションa)~d)のみを実行することができるように構成される。しかしながら、他のソリューション、典型的には企業レベルでは、特定の基準を満たすトランザクションなど、より多くのデータを積極的に提出するようにコアに求め得る。したがって、アクションa)~d)は、BLNに対する最小要件であるが、いくつかの例では、それらのノードとコアとの間の追加のデータ転送も可能である。
スマートコントラクトを動作させるノードについては、SPVのようなアクションa)~d)のみを必要とするものもあれば、コアノードからより多くのデータを受信するための合意を必要とするものもある。
いくつかのBLNでは、ユーザは、層3以上のノードを動作させることができ、スマートコントラクトは、層2以上のノードによって動作され得る。特定のアドレスを含むトランザクションについてブロックチェーン150を絶えず監視する必要があるので」、ユーザは、現実的には、特定の出力アドレスを有するトランザクションについてブロックチェーンを継続的に「リッスン」することができない。期間ごとにブロックチェーンに送信可能なトランザクションの数が増え続けていることを考慮すると、そのような絶え間ない監視は、エンドユーザにとって現実的ではない。ブロックチェーンを絶えず監視することは、いくつかのブロックチェーンのウォレットアーキテクチャの間で一般的であるが、期間ごとにブロックチェーンにサブミットされるトランザクションの数、およびブロックチェーンのユーザの数の両方が将来劇的に増加すると予想されることを考慮すると、スケーラブルなソリューションではない。以下の例を考慮する:アリスはボブに支払いたい。アリスは、ボブに属することをアリスが知っている出力アドレスで、所望の額のトランザクションを作成する。次いで、アリスは、このトランザクションを、ボブに直接サブミットするのではなく、マイニングネットワークにサブミットする。トランザクションが受け入れられたことをボブが知るために、ボブは、ブロックチェーンを「リッスン」して、自身の出力アドレスを有するトランザクションがネットワーク上に現れたかどうか、およびいつ現れたかを確認しなければならない。ボブは、自身の代わりにこれを行うようマイニングノードに求めなければならない。これは、マイニングノードがボブのアドレスの記録を保持し、それが受信するすべてのトランザクションがこのアドレスに一致するかどうかをチェックしなければならないことを意味する。これをマイナーが行うための経済的インセンティブはないことに留意されたい。マイナーが毎秒100万回のトランザクションを処理しなければならず、それらが100万個のアドレスと一致するかどうかをチェックしなければならないと仮定すると、これはすぐに非現実的になることがわかる。
代わりに、BLNでは、アリスはボブに直接接続され得、トランザクションをボブに直接送信することができる。次いで、ボブは、トランザクションをコア内のマイナーに送信することができると同時に、それらがトランザクションを有効なものとして受け入れるかどうか尋ねることができる。トランザクションがマイナーの手数料を含むので、マイナーは、トランザクションを受け入れるためのインセンティブが与えられ、放棄されることとなるブロックを構築するリスクを下げるために、トランザクションを受け入れたかどうかを確認するためのインセンティブが与えられる。システムをより一層セキュアにするために、アリスは、アリスのトランザクションへの入力のマークルプルーフをボブに送信し得る。ボブは、ブロックヘッダのコピーを有するので、これらのマークルプルーフをチェックし得る。これは、アリスの入力がある時点でブロックチェーン150の一部であったことをボブに保証し、アリスがすでにそれらを使用していた場合、ボブは、アリスがボブに与えたトランザクションにおいてアリスから署名を受信しているので、二重支出のプルーフを有することとなる。ボブは、スマートコントラクト(第2のノード)であり得、アリスは、そのスマートコントラクトと対話したいユーザ(外部ノード)であり得ることに留意されたい。スマートコントラクトオペレータがスマートコントラクトの処理を容易にするためにマイニングノードといかなる特定の合意も行っていないという意味でスマートコントラクトが「ライト」である場合、それは、状態の変化をトリガするトランザクションを受信するためにブロックチェーン150をリッスンすることに依存することもできない。アリスは、そのようなトランザクションをスマートコントラクトに直接送信しなければならない。
サービスプロバイダは、層2以上のノードを動作し得る。サービスプロバイダの場合は、ユーザまたは軽いスマートコントラクトの場合とは異なる。サービスプロバイダは、コアマイニングノードまたはコアノードの集合と商業的な合意を有し得、次いで、それらは、トランザクションの特定のサブセットをサービスプロバイダノードに伝搬する。そのようなトランザクションは、容易に識別可能であり、例えば以下の特定の基準を満たすべきである:
・ 特定のプロトコルフラグを有するOP_RETURNデータ。例えば、メタネットプロトコル、トークン化プロトコル、またはデジタル証明書プロトコル。
・ 出力アドレスは、小さい特定のセットに一致する。例えば、企業レベルのスマートコントラクトまたはアドレスホワイトリスト/ブラックリスト。
・ OP_VER制御分岐によって示される二次的なコンセンサスルールセット。
・ 特定のプロトコルフラグを有するOP_RETURNデータ。例えば、メタネットプロトコル、トークン化プロトコル、またはデジタル証明書プロトコル。
・ 出力アドレスは、小さい特定のセットに一致する。例えば、企業レベルのスマートコントラクトまたはアドレスホワイトリスト/ブラックリスト。
・ OP_VER制御分岐によって示される二次的なコンセンサスルールセット。
加えて、これらのルールに従うか、または他の方法でサービスレベル合意に関与するコミュニティの一部として識別される、コアに送信されるトランザクションは、トランザクション手数料が低くなり得る(または0ですらある)。不足分は、より高いトランザクション量によって、またはサービスレベル合意からの不換の収益によって埋め合わせられ得る。
BLN300のすべてのノードは、それらのアイデンティティに関連付けられた半永久的な公開鍵に関連付けられ得る。この公開鍵は、セキュアな通信を可能にし、ID鍵(identity key)の決定論的導出を通して、またはID鍵を使用してトランザクション鍵に署名もしくは暗号化することによって、ブロックチェーントランザクションで使用される公開鍵へのリンクを提供することができる。
マイニングコアノードを識別する2つの方法は、以下の通りである:
1)Miner ID。マイナーは、マイナーがマイニングする各ブロック内のコインベーストランザクションの入力に自身のID鍵を追加することによって自身を明らかにすることを選択し得る。
2)ネットワーク分析。一部のマイナーは、匿名のままであることを選択する。しかしながら、ネットワークの分析によって、例えば、新しいブロックがどこから来たかを見ることによって、どのノードがブロックを構成しているかを識別することは依然として可能である。
1)Miner ID。マイナーは、マイナーがマイニングする各ブロック内のコインベーストランザクションの入力に自身のID鍵を追加することによって自身を明らかにすることを選択し得る。
2)ネットワーク分析。一部のマイナーは、匿名のままであることを選択する。しかしながら、ネットワークの分析によって、例えば、新しいブロックがどこから来たかを見ることによって、どのノードがブロックを構成しているかを識別することは依然として可能である。
BLNのノードが、両方のタイプのマイナーを識別することができ、その結果、それらのトランザクションが受け入れられたかどうかに関して、できるだけ多くのマイナーをポーリングすることができることは重要である。
Miner IDを有するコアノードは、デジタル証明書を層2ノードに発行することができる。これは、それらがこれらのノードとのサービスレベルの合意を有するからであり得るか、またはこれらのノードが有償で証明書を要求したからであり得る。この意味で、コアノードは、認証局(CA)として機能することができる。
コアノードからの証明書の有無にかかわらず、層2ノードは、外部CAにデジタル証明書を発行するように求め得る。したがって、各層2ノードは、それらのアイデンティティを証明する少なくとも1つのデジタル証明書を有し得る。それらは、層2内の他のノードに証明書を発行し、それによって、それらの間に信用の輪(web of trust)を作成し得る。層2内のノードは、層3内のノードに証明書を発行し得、層3内のノードは、層4内のノードに証明書を発行し得、以下同様であり、公開鍵暗号基盤(PKI)と呼ばれる証明書の階層を作成する。
実際に、そのようなPKIは、BLN内のノードの識別のためだけでなく、正しいBLN構造が守られることを保証するためにも使用され得る。例えば、層3ノードがあまりにも多くの層4ノードに証明書を発行する場合、またはシステム内の他のノードへの適切な接続を有することを保証しない場合、層3ノードの証明書は失効され得る。
これらの証明書自体は、ブロックチェーン150上に記憶され得る。これにより、PKIが透明化され、容易に監査可能になる。
適応接続
本発明の実施形態は、階層化ネットワークの特性(条件)に基づいて、階層化ネットワークの接続を意図的にドロップする(または無効にする)方法を提供する。すなわち、これらの実施形態では、LN300のノードは、特定の好ましくないまたは望ましくないネットワーク条件に応答して、他のノードへのその接続を適応させるように構成され得る。
本発明の実施形態は、階層化ネットワークの特性(条件)に基づいて、階層化ネットワークの接続を意図的にドロップする(または無効にする)方法を提供する。すなわち、これらの実施形態では、LN300のノードは、特定の好ましくないまたは望ましくないネットワーク条件に応答して、他のノードへのその接続を適応させるように構成され得る。
適応ノード(すなわち、接続(複数可)を適応させるノード)は、コアノード301、第2のノード302、または外部ノード303であり得る。いくつかの例では、LN300の各ノードは、ネットワーク特性に基づいて他のノードとのその接続を適応させるように構成され得る。適応ノードは、上述したように、SPVのようなノードであり得る。
適応ノードが接続プロトコルのうちのいくつかまたはすべてによって結合されることは除外されないが、適応ノードは、必ずしも上で定義された接続プロトコルによって、または少なくとも接続プロトコルのすべてによっては結合されないことに留意されたい。
LN300のコンテキストでは、ノードとの接続を無効にすることは、そのノードへの接続を介して任意のデータが送信されないようにすることを意味し、必ずしも接続を物理的に終了させることを意味しない。言い換えれば、上述したように、階層化ネットワーク300の2つのノード301、302、303間の接続は、これらのノードが直接通信可能であることを意味し、これは、この文脈では、階層化ネットワーク300の別のノード301、302、303を介したホップを実行する必要がないことを意味する。階層化ネットワークなどのオーバーレイネットワークの文脈では、「接続」は、階層化ネットワーク300のレベル(すなわち、階層化ネットワークのオーバーレイネットワークプロトコルのレベル)での接続(すなわち、エッジ)を意味する。したがって、接続を無効にすることは、階層化ネットワーク300の2つのノード301、302、303間の接続が、それらのノードがもはや直接通信することができないことを意味することを意味する。
適応ノードは、1つまたは複数のコアノード301に接続され得る。例えば、適応ノードは、他のコアノード301に接続されたコアノード301であり得る。他の例では、適応ノードは、コアノード301のうちの1つまたは複数に接続された第2のノード302または外部ノード303であってもよい。これらの例では、適応ノードは、ネットワーク特性に応答して、適応ノードと、適応ノードに接続されたコアノード(複数可)301との間の接続のすべてではないが1つまたは複数を無効にし得る。
適応ノードは、1つまたは複数の第2のノード302に接続され得る。例えば、適応ノードは、第2のノード(複数可)302に接続されたコアノード301であり得る。他の例では、適応ノードは、他の第2のノードに接続された第2のノード302であってもよく、または適応ノードは、1つまたは複数の第2のノード302に接続された(例えば、第1の外層または第2の外層のいずれかなどの)外部ノード303であってもよい。これらの例では、適応ノードは、ネットワーク特性に応答して、適応ノードと、適応ノードに接続された第2のノード(複数可)302との間の接続のうちの1つ、いくつか、またはすべてを無効にし得る。
適応ノードは、例えば、同じ外層または異なる外層内の1つまたは複数の外部ノード303に接続され得る。例えば、適応ノードは、コア祖先接続を介して外部ノード(複数可)303に接続されたコアノード301であり得る。他の例では、適応ノードは、外部ノード(複数可)に接続された第2のノード302であってもよく、または適応ノードは、同じ外層の1つまたは複数の外部ノード303に、および/または、異なる外層にわたって1つまたは複数の外部ノード303に接続された外部ノード303であってもよい。これらの例では、適応ノードは、ネットワーク特性に応答して、適応ノードと、適応ノードに接続された外部ノード(複数可)303との間の接続のうちの1つ、いくつか、またはすべてを無効にし得る。
いくつかの実施形態では、適応が実行される基となる1つまたは複数のネットワーク特性は、階層化ネットワークの負荷を含み得る。適応ノードは、負荷バランシング問題(例えば、階層化ネットワーク300の1つまたは複数の接続にわたるトラフィックが多すぎること)を検出したことに応答して、1つまたは複数の接続を無効にし得る。負荷バランシング問題は、ネットワーク規模の問題、すなわち、ネットワークにわたる負荷が全体として閾値量を超えたことであり得る。その状況では、適応ノードは、負荷を許容可能な閾値未満にするために、どの接続を無効にするかを選択し得る。他の例では、適応ノードは、適応ノードに接続されたノードのうちの1つから命令を受信し得、命令は、特定の接続をドロップするように適応ノードに命令する。例えば、コアノード301は、コアノード301と適応ノードとの間の接続をドロップするように適応ノード(例えば、外部ノード)に命令し得る。
負荷バランシング問題は、適応ノードと、適応ノードに接続された特定のノードとの間の負荷であり得る。例えば、適応ノードは、第2のノード302または外部ノード303の間で増大した負荷を経験するコアノード301であり得る。適応ノードは、増加した負荷を有する接続を無効にして、例えば、負荷を許容可能な閾値量内にすることができる。代替的に、適応ノードは、コアノード301に接続されたノードであってもよく、適応ノードは、例えば、接続をドロップするようにとのコアノード301からの命令に応答して、その接続を無効にしてもよい。
負荷バランシング問題は、コア層のコアノード301にわたる負荷が許容可能な閾値を上回ることであり得る。適応ノードがコアノード301である場合、コアノード301は、例えば、他のコアノード301への、および/または1つもしくは複数の第2のノード302への、および/または1つもしくは複数の外部ノード303への、その接続のうちの1つまたは複数をドロップし得る。適応ノードが第2のノード302または外部ノード303である場合、第2のノード302または外部ノード303は、そのコア接続のうちの1つまたは複数をドロップし得る。
負荷バランシング問題を検出することは、適応ノードと階層化ネットワーク内の1つまたは複数の他のノードとの間の接続(複数可)の負荷が閾値を超えることを検出することを含み得る。そのような負荷は、例えば、帯域幅、誤り率、パケット損失率、遅延、ジッタ、または1つまたは複数のそのような測定値を組み合わせた複合メトリックに関して測定され得る。代替的にまたは追加的に、負荷バランシング問題を検出することは、適応ノードの処理負荷が閾値を超えることを検出することを含み得る。これは、例えば、適応ノードの消費された処理リソース、適応ノードの利用可能な処理リソースの観点から測定され得る。
実施形態では、負荷バランシング問題を検出することは、適応ノードとネットワークの1つまたは複数の他のノード(例えば、コアノード301)との間の接続の数が、接続の閾値数、例えば、適応ノード(例えば、コアノード)への総接続の最大数を超えることを検出することを含み得る。例えば、適応ノードは、上記で定義された接続プロトコルによって許容される接続の最小数または最大数内で適応することができる。
例えば、適応ノードは、過度に多くのノードに接続されているコアノード301であり得る。閾値は、適応ノードと特定の層のノードとの間の接続についての閾値であり得る。例えば、適応ノードは、一定量のコア接続、または第2のノード302への接続、または外部ノード303への接続(例えば、特定の層のまたは外層にわたって全部で)を形成(および維持)することのみを許可されてもよい。適応ノードは、他のノードへのその接続のうちの1つまたは複数をドロップし得、および/またはその接続されたノードのうちの1つまたは複数に、適応ノードへのそれらの接続をドロップするように命令し得る。ドロップされる接続の数は、許容可能な接続の閾値数を上回る接続の数と同数またはそれ以上であり得る。
いくつかの実施形態では、ネットワーク特性は、プライバシー問題を含み得る。すなわち、適応ノードは、ネットワークのプライバシーの侵害の指示を受信し得る(または他の方法でそれに関する情報を取得し得る)。プライバシー問題は、ネットワークのノードのハッキングまたは不具合であり得る。代替的に、プライバシー問題は、(例えば、LN300の適応ノードまたは他のノードの)識別情報が危険にさらされた(例えば、盗まれたまたは漏洩した)ことであってもよい。適応ノードは、識別情報が危険にさらされたノードとの接続をドロップし得る。識別情報は、LN300の所与のノードに関連付けられた秘密鍵および/または公開鍵を含に得る。
適応ノードは、適応ノードが接続されているLN300の1つまたは複数のノードからネットワーク特性の指示を受信し得る。指示はまた、例えば、適応ノードに指示を送信するノードとの接続をドロップするようにとの命令を含み得る。いくつかの例では、コアノード301のみが、指示および/または命令を発行するように構成される。他の例では、第2のノード302および/または外部ノード303が、追加的にまたは代替的に、指示および/または命令を発行するように構成されてもよい。適応ノードは、適応ノードに指示を送信するノードとの接続をドロップし得る。
いくつかの実施形態では、それぞれのノードとの接続を無効にすることは、適応ノードによってそれぞれのノードに発行されたそれぞれのデジタル証明書を失効させることを含み得る。これらの例では、ノードは、別のノードと接続するために有効なデジタル証明書を有していなければならない。適応ノードは、第2のノード302および/または外部ノード303にデジタル証明書を発行することを担うコアノード301であり得る。適応ノードは、例えば外部ノード303のデジタル証明書を失効させて、そのノードへの接続を無効にし得る。別の例として、第2のノード302は、外部ノード303にデジタル証明書を発行することを担い得る。ここでもコアノード301である適応ノードは、外部ノード303のデジタル証明書を失効させるように第2のノード302に命令して、適応ノードと外部ノード303との間の接続を無効にし得る。
適応ノードは、ブロックチェーン150の状態、例えば、マイニングノード104Mのプール154においてトランザクションが受け入れられたかどうか、ブロックチェーン150のブロック151にトランザクションが記録されたかどうかなどの知識を必要とする第2のノード302または外部ノード303であり得る。適応ノードは、ブロックチェーンノード301である1つまたは複数のコアノード104(例えば、適応ノードに接続された単一のコアノード)、および1つまたは複数の第2のノード302(例えば、適応ノードに接続された単一の第2のノード)に、情報に対する要求を送信し得る。1つまたは複数のコアノード301から情報を受信した後、適応ノードは、受信された情報の異なるセット間の一致性をチェックし得る。受信された情報が一致する場合、適応ノードは、コアノード(複数可)および第2のノード(複数可)が正しい情報を返したと確信することができる。これは、適応ノードが、ブロックチェーンネットワーク106のハッシュパワーの51%未満を表すマイニングノード、例えば単一のマイニングノード104Mのみ、に接続されている場合に特に有益である。
適応ノードは、コアノード(複数可)301および第2のノード(複数可)302に同じ情報を要求し得る。代替的に、適応ノードは、異なるノード301、302に、異なるが関連する情報を要求してもよい。例えば、適応ノードは、コアノード(複数可)にブロックヘッダまたはマークルルートを要求し、第2のノード(複数可)にトランザクションまたはマークルプルーフを要求し得る。
いくつかの実施形態では、適応ノードは、無効にされた接続のうちの1つまたは複数を再接続する(すなわち、再有効化する)ように構成され得る。例えば、適応ノードは、ネットワーク特性が正常な状態に戻ったこと、例えば、もはや負荷バランシング問題がないことを決定し得る(例えば、LN300のノードから情報を受信し得る)。
結論
上記の実施形態は例としてのみ説明されていることが理解されよう。より一般的には、以下のステートメントのうちのいずれか1つまたは複数による方法、装置、またはプログラムが提供され得る。
上記の実施形態は例としてのみ説明されていることが理解されよう。より一般的には、以下のステートメントのうちのいずれか1つまたは複数による方法、装置、またはプログラムが提供され得る。
ステートメント1.階層化ネットワークのノード間の接続を適応させるためのコンピュータ実装方法であって、階層化ネットワークは、順序付けられた層のセットに配置された複数のノードを含み、順序付けられた層のセットは、順に、コアノードのセットを含むコア層と、第2のノードのセットを含む第2の層と、各々が外部ノードのそれぞれのセットを含む1つまたは複数の外層とを含み、各コアノードは、少なくとも1つの他のコアノードに接続され、方法は、適応ノードによって実行され、適応ノードは、1つまたは複数の第2のノードおよび複数のコアノードに接続された階層化ネットワークのノードであり、方法は、階層化ネットワークの1つまたは複数のネットワーク特性に基づいて、適応ノードと複数のコアノードのすべてではないが少なくとも1つとの間のそれぞれの接続を無効にすることを含む方法。
ステートメント2.ネットワーク特性は、階層化ネットワークの負荷を含み、上記無効にすることは、階層化ネットワークの負荷バランシング問題を検出することに応答して実行される、ステートメント1に記載の方法。
ステートメント3.負荷バランシング問題は、複数のコアノードのうちの1つと適応ノードとの間の接続にわたる負荷が所定の閾値を上回ることを含む、ステートメント2に記載の方法。
ステートメント4.負荷バランシング問題は、複数のコアノードと適応ノードとの間の接続にわたる負荷が全体として所定の閾値を上回ることを含む、ステートメント2またはステートメント3に記載の方法。
ステートメント5.負荷バランシング問題は、コアノードのセットと適応ノードとの間の接続にわたる負荷が全体として所定の閾値を上回ることを含む、ステートメント2から4のいずれかに記載の方法。
ステートメント6.負荷バランシング問題は、適応ノードとコアノードのセットとの間の接続の数が所定の閾値を上回ることを含む、ステートメント2から5のいずれかに記載の方法。
ネットワーク特性は、プライバシー問題を含み得、上記無効にすることは、プライバシー問題の検出に応答して実行される。
ステートメント7.ネットワーク特性は、所与のコアノードと階層化ネットワークの他のノードとの間の接続の数が所定の閾値を上回ることを含む、先行ステートメントのいずれかに記載の方法。
ステートメント8.上記無効にすることは、適応ノードと複数のコアノードのうちのすべてではないが2つ以上との間のそれぞれの接続を無効にすることを含む、先行ステートメントのいずれかに記載の方法。
ステートメント9.適応ノードは複数の第2のノードに接続され、上記無効にすることは、適応ノードと第2のコアノードのすべてではないが少なくとも1つとの間のそれぞれの接続を無効にすることを含む、先行ステートメントのいずれかに記載の方法。
ステートメント10.上記無効にすることは、適応ノードと第2のコアノードのうちのすべてではないが2つ以上との間のそれぞれの接続を無効にすることを含む、ステートメント9の方法。
ステートメント11.適応ノードは1つまたは複数の外部ノードに接続され、上記無効にすることは、適応ノードと1つまたは複数の外部ノードのうちの少なくとも1つとの間のそれぞれの接続を無効にすることを含む、先行ステートメントのいずれかに記載の方法。
ステートメント12.上記無効にすることは、適応ノードと1つまたは複数の外部ノードのうちのすべてではないが2つ以上との間のそれぞれの接続を無効にすることを含む、ステートメント11に記載の方法。
ステートメント13.適応ノードは、第2の層の直後の外層内にある、先行ステートメントのいずれかに記載の方法。
ステートメント14.適応ノードは、1つまたは複数の他の外層によって第2の層から分離された外層内にある、ステートメント1から12のいずれかに記載の方法。
ステートメント15.適応ノードは第2のノードである、ステートメント1から12のいずれかに記載の方法。
ステートメント16.適応ノードはコアノードである、ステートメント1から12のいずれかに記載の方法。
ステートメント17.適応ノードが接続されるノードのうちの1つからネットワーク特性の指示を受信することを含む、先行ステートメントのいずれかに記載の方法。
ステートメント18.上記受信することは、複数のコアノードのうちの1つから指示を受信することを含む、ステートメント17に記載の方法。
ステートメント19.無効にすることは、適応ノードと、指示が受信されるノードとの間のそれぞれの接続を無効にすることを含む、ステートメント17またはステートメント18の方法。
ステートメント20.コアノードは、ブロックチェーンネットワークのノードを含む、先行ステートメントのいずれかに記載の方法。
階層化ネットワークは、コア層におけるブロックチェーンネットワークまたは少なくともその一部を含む。第2のノードおよび外部ノードの各々は、ブロックチェーンネットワークの周囲にまたは少なくともその一部の周囲に階層化されたサービスを提供する。
ステートメント21.コアノードの各々は、ブロックチェーンネットワークのそれぞれのノードである、ステートメント20に記載の方法。
ステートメント22.それぞれの接続を無効にした後に、適応ノードが依然として接続されているコアノードの第1のセットおよび第2のノードの第1のセットに要求を送信することと、ここで、要求は、ブロックチェーンに関する情報に対するものであり、コアノードの第1のセットおよび第2のノードの第1のセットからそれぞれの応答を受信することと、コアノードの第1のセットおよび第2のノードの第1のセットからのそれぞれの応答を比較することと、コアノードの第1のセットからのそれぞれの応答が第2のノードの第1のセットからのそれぞれの応答に対応するかどうかに基づいて、コアノードの第1のセットおよび第2のノードの第1のセットからのそれぞれの応答が正しいかどうかを決定することとを含む、ステートメント20またはステートメント21に記載の方法。
ステートメント23.コアノードの第1のセットは、単一のコアノードから構成される、ステートメント22に記載の方法。
ステートメント24.コアノードの第1のセットは、単一の第2のノードから構成される、ステートメント22またはステートメント23に記載の方法。
ステートメント25.要求は、ブロックチェーントランザクションがブロックチェーンのブロックに記録されたことの確認の要求を含む、ステートメント22から24のいずれかに記載の方法。
ステートメント26.コアノードの第1のセットはマイニングノードを含み、要求は、ブロックチェーントランザクションが、ブロックチェーンネットワークのコンセンサスルールのセットにしたがって妥当性確認されたトランザクションのプールにおいて受け入れられたことの確認の要求を含む、ステートメント22から25のいずれかに記載の方法。
ステートメント27.ネットワーク特性はプライバシー問題を含む、先行ステートメントのいずれかに記載の方法。
ステートメント28.プライバシー問題は、階層化ネットワークの1つまたは複数のノードの識別子の漏洩を含む、ステートメント27に記載の方法。
ステートメント29.コンピュータ機器であって、1つまたは複数のメモリユニットを含むメモリと、1つまたは複数の処理ユニットを含む処理装置と、1つまたは複数のネットワークインターフェースユニットを含むネットワークインターフェースとを備え、メモリは、処理装置上で実行されるように構成されたコードを記憶し、コードは、処理装置上で実行されると、先行ステートメントのいずれかに記載の方法を実行することによってコンピュータ機器を動作させるように構成される、コンピュータ機器。
ステートメント30.コンピュータ可読ストレージ上に具現化され、1つまたは複数のプロセッサ上で実行されると、ステートメント1から28のいずれかに記載の方法を実行するように構成されたコンピュータプログラム。
開示された技法の他の変形形態または使用事例は、本明細書の開示を与えられると、当業者には明らかになり得る。本開示の範囲は、説明された実施形態によって限定されず、添付の特許請求の範囲によってのみ限定される。
Claims (30)
- 階層化ネットワークのノード間の接続を適応させるためのコンピュータ実装方法であって、前記階層化ネットワークは、順序付けられた層のセットに配置された複数のノードを含み、前記順序付けられた層のセットは、順に、コアノードのセットを含むコア層と、第2のノードのセットを含む第2の層と、各々が外部ノードのそれぞれのセットを含む1つまたは複数の外層とを含み、各コアノードは、少なくとも1つの他のコアノードに接続され、前記方法は、適応ノードによって実行され、前記適応ノードは、1つまたは複数の第2のノードおよび複数のコアノードに接続された前記階層化ネットワークのノードであり、前記方法は、
前記階層化ネットワークの1つまたは複数のネットワーク特性に基づいて、前記適応ノードと前記複数のコアノードのすべてではないが少なくとも1つとの間のそれぞれの接続を無効にすること
を含む方法。 - 前記ネットワーク特性は、前記階層化ネットワークの負荷を含み、前記無効にすることは、前記階層化ネットワークの負荷バランシング問題を検出することに応答して実行される、請求項1に記載の方法。
- 前記負荷バランシング問題は、前記複数のコアノードのうちの1つと前記適応ノードとの間の前記接続にわたる負荷が所定の閾値を上回ることを含む、請求項2に記載の方法。
- 前記負荷バランシング問題は、前記複数のコアノードと前記適応ノードとの間の前記接続にわたる負荷が全体として所定の閾値を上回ることを含む、請求項2または3に記載の方法。
- 前記負荷バランシング問題は、前記コアノードのセットと前記適応ノードとの間の前記接続にわたる負荷が全体として所定の閾値を上回ることを含む、請求項2から4のいずれか一項に記載の方法。
- 前記負荷バランシング問題は、前記適応ノードと前記コアノードのセットとの間の接続の数が所定の閾値を上回ることを含む、請求項2から5のいずれか一項に記載の方法。
- 前記ネットワーク特性は、所与のコアノードと前記階層化ネットワークの他のノードとの間の接続の数が所定の閾値を上回ることを含む、請求項1から6のいずれか一項に記載の方法。
- 前記無効にすることは、前記適応ノードと前記複数のコアノードのうちのすべてではないが2つ以上との間のそれぞれの接続を無効にすることを含む、請求項1から7のいずれか一項に記載の方法。
- 前記適応ノードは複数の第2のノードに接続され、前記無効にすることは、前記適応ノードと前記第2のコアノードのすべてではないが少なくとも1つとの間のそれぞれの接続を無効にすることを含む、請求項1から8のいずれか一項に記載の方法。
- 前記無効にすることは、前記適応ノードと前記第2のコアノードのうちのすべてではないが2つ以上との間のそれぞれの接続を無効にすることを含む、請求項9に記載の方法。
- 前記適応ノードは1つまたは複数の外部ノードに接続され、前記無効にすることは、前記適応ノードと前記1つまたは複数の外部ノードのうちの少なくとも1つとの間のそれぞれの接続を無効にすることを含む、請求項1から10のいずれか一項に記載の方法。
- 前記無効にすることは、前記適応ノードと前記1つまたは複数の外部ノードのうちのすべてではないが2つ以上との間のそれぞれの接続を無効にすることを含む、請求項11に記載の方法。
- 前記適応ノードは、前記第2の層の直後の外層内にある、請求項1から12のいずれか一項に記載の方法。
- 前記適応ノードは、1つまたは複数の他の外層によって前記第2の層から分離された外層内にある、請求項1から12のいずれか一項に記載の方法。
- 前記適応ノードは第2のノードである、請求項1から12のいずれか一項に記載の方法。
- 前記適応ノードはコアノードである、請求項1から12のいずれか一項に記載の方法。
- 前記適応ノードが接続される前記ノードのうちの1つから前記ネットワーク特性の指示を受信することを含む、請求項1から16のいずれか一項に記載の方法。
- 前記受信することは、前記複数のコアノードのうちの1つから前記指示を受信することを含む、請求項17に記載の方法。
- 前記無効にすることは、前記適応ノードと、前記指示が受信される前記ノードとの間の前記それぞれの接続を無効にすることを含む、請求項17または18に記載の方法。
- 前記コアノードは、ブロックチェーンネットワークのノードを含む、請求項1から19のいずれか一項に記載の方法。
- 前記コアノードの各々は、前記ブロックチェーンネットワークのそれぞれのノードである、請求項20に記載の方法。
- 前記それぞれの接続を無効にした後に、
前記適応ノードが依然として接続されているコアノードの第1のセットおよび第2のノードの第1のセットに要求を送信することと、ここで、前記要求は、前記ブロックチェーンに関する情報に対するものであり、
前記コアノードの第1のセットおよび前記第2のノードの第1のセットからそれぞれの応答を受信することと、
前記コアノードの第1のセットおよび前記第2のノードの第1のセットからの前記それぞれの応答を比較することと、
前記コアノードの第1のセットからの前記それぞれの応答が前記第2のノードの第1のセットからの前記それぞれの応答に対応するかどうかに基づいて、前記コアノードの第1のセットおよび前記第2のノードの第1のセットからの前記それぞれの応答が正しいかどうかを決定することと
を含む、請求項20または21に記載の方法。 - 前記コアノードの第1のセットは、単一のコアノードから構成される、請求項22に記載の方法。
- 前記コアノードの第1のセットは、単一の第2のノードから構成される、請求項22または23に記載の方法。
- 前記要求は、ブロックチェーントランザクションが前記ブロックチェーンのブロックに記録されたことの確認の要求を含む、請求項22から24のいずれか一項に記載の方法。
- 前記コアノードの第1のセットはマイニングノードを含み、前記要求は、ブロックチェーントランザクションが、前記ブロックチェーンネットワークのコンセンサスルールのセットにしたがって妥当性確認されたトランザクションのプールにおいて受け入れられたことの確認の要求を含む、請求項22から25のいずれか一項に記載の方法。
- 前記ネットワーク特性はプライバシー問題を含む、請求項1から26のいずれか一項に記載の方法。
- 前記プライバシー問題は、前記階層化ネットワークの1つまたは複数のノードの識別子の漏洩を含む、請求項27に記載の方法。
- コンピュータ機器であって、
1つまたは複数のメモリユニットを含むメモリと、
1つまたは複数の処理ユニットを含む処理装置と、
1つまたは複数のネットワークインターフェースユニットを含むネットワークインターフェースと
を備え、
前記メモリは、前記処理装置上で実行されるように構成されたコードを記憶し、前記コードは、前記処理装置上で実行されると、請求項1から27のいずれか一項に記載の方法を実行することによって前記コンピュータ機器を動作させるように構成される、
コンピュータ機器。 - コンピュータ可読ストレージ上に具現化され、1つまたは複数のプロセッサ上で実行されると、請求項1から28のいずれか一項に記載の方法を実行するように構成されたコンピュータプログラム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB2002270.3A GB2592211A (en) | 2020-02-19 | 2020-02-19 | Adapting connections of a layered network |
GB2002270.3 | 2020-02-19 | ||
PCT/IB2021/050366 WO2021165757A1 (en) | 2020-02-19 | 2021-01-19 | Adapting connections of a layered network |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2023513951A true JP2023513951A (ja) | 2023-04-04 |
JPWO2021165757A5 JPWO2021165757A5 (ja) | 2024-01-09 |
Family
ID=69956604
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022549580A Pending JP2023513951A (ja) | 2020-02-19 | 2021-01-19 | 階層化ネットワークの接続の適応 |
Country Status (6)
Country | Link |
---|---|
US (2) | US12034798B2 (ja) |
EP (1) | EP4097931A1 (ja) |
JP (1) | JP2023513951A (ja) |
CN (1) | CN115152195A (ja) |
GB (1) | GB2592211A (ja) |
WO (1) | WO2021165757A1 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11902426B2 (en) * | 2021-06-26 | 2024-02-13 | Ceremorphic, Inc. | Efficient storage of blockchain in embedded device |
Family Cites Families (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3425192B2 (ja) * | 1993-08-25 | 2003-07-07 | 富士通株式会社 | アドレス情報の自動設定処理方法およびアドレス情報の設定装置 |
US6975631B1 (en) * | 1998-06-19 | 2005-12-13 | Juniper Networks, Inc. | Network packet forwarding lookup with a reduced number of memory accesses |
US6338082B1 (en) * | 1999-03-22 | 2002-01-08 | Eric Schneider | Method, product, and apparatus for requesting a network resource |
US6751673B2 (en) * | 2001-01-03 | 2004-06-15 | Akamai Technologies, Inc. | Streaming media subscription mechanism for a content delivery network |
US7133905B2 (en) * | 2002-04-09 | 2006-11-07 | Akamai Technologies, Inc. | Method and system for tiered distribution in a content delivery network |
US7051102B2 (en) | 2002-04-29 | 2006-05-23 | Microsoft Corporation | Peer-to-peer name resolution protocol (PNRP) security infrastructure and method |
KR100429900B1 (ko) * | 2002-05-07 | 2004-05-03 | 한국전자통신연구원 | IPv4 주소체계 확장방법 및 확장된 IPv4주소체계를 이용하여 계층적으로 레이블을 스위칭하는방법 및 그 기록매체 |
US7554988B2 (en) * | 2002-09-10 | 2009-06-30 | Hewlett-Packard Development Company, L.P. | Creating expressway for overlay routing |
US7613796B2 (en) * | 2002-09-11 | 2009-11-03 | Microsoft Corporation | System and method for creating improved overlay network with an efficient distributed data structure |
EP2087667A4 (en) * | 2006-11-27 | 2015-03-04 | Ericsson Telefon Ab L M | METHOD AND SYSTEM FOR PROVIDING A ROUTING ARCHITECTURE FOR OVERLAY NETWORKS |
US9537747B2 (en) * | 2010-06-11 | 2017-01-03 | International Business Machines Corporation | Publish/subscribe overlay network control system |
WO2012167383A1 (en) | 2011-06-08 | 2012-12-13 | Socpra Sciences Et Génie S.E.C. | A distributed electrical load management method and system for controlling community loads |
US9600440B2 (en) | 2013-10-30 | 2017-03-21 | Futurewei Technologies, Inc. | Network topology of hierarchical ring with recursive shortcuts |
KR20240027155A (ko) | 2016-10-28 | 2024-02-29 | 엔체인 홀딩스 리미티드 | 블록체인을 통한 결정론적 유한 오토마타(DFAs) 구현을 위한 시스템 및 방법 |
SG11201908957XA (en) * | 2017-05-15 | 2019-10-30 | Visa Int Service Ass | Techniques for secure blockchain routing |
EP4184404A1 (en) * | 2017-05-26 | 2023-05-24 | nChain Licensing AG | Script-based blockchain interaction |
US10630769B2 (en) * | 2017-12-26 | 2020-04-21 | Akamai Technologies, Inc. | Distributed system of record transaction receipt handling in an overlay network |
US10956075B2 (en) | 2018-02-02 | 2021-03-23 | Bank Of America Corporation | Blockchain architecture for optimizing system performance and data storage |
JP7487196B2 (ja) * | 2018-11-27 | 2024-05-20 | エヌチェーン ライセンシング アーゲー | ピアツーピアネットワークを介するデータの格納、読み出し、及び通信のためのコンピュータにより実施されるシステム及び方法 |
SG11202108154TA (en) | 2019-02-15 | 2021-08-30 | Nchain Holdings Ltd | Computer-implemented systems and methods for implementing transfers over a blockchain network |
DE102019202063A1 (de) | 2019-02-15 | 2020-08-20 | Hauni Maschinenbau Gmbh | Docht-Heizer-Einheit für einen Inhalator |
GB2583767A (en) | 2019-05-10 | 2020-11-11 | Nchain Holdings Ltd | Methods and devices for public key management using a blockchain |
GB2583766A (en) | 2019-05-10 | 2020-11-11 | Nchain Holdings Ltd | Methods and devices for recording work history and proving reputation in a blockchain network |
GB2583770A (en) | 2019-05-10 | 2020-11-11 | Nchain Holdings Ltd | Methods and devices for registering and authenticating miner identity in a blockchain network |
GB201907345D0 (en) * | 2019-05-24 | 2019-07-10 | Nchain Holdings Ltd | Protocol for validating blockchain transactions |
GB201907346D0 (en) * | 2019-05-24 | 2019-07-10 | Nchain Holdings Ltd | Using blockchain transactions to provide off-chain functionality |
GB201907347D0 (en) * | 2019-05-24 | 2019-07-10 | Nchain Holdings Ltd | In-script functions within a blockchain transaction |
GB2592225A (en) * | 2020-02-19 | 2021-08-25 | Nchain Holdings Ltd | Attestation service for use with a blockchain network |
GB202002305D0 (en) * | 2020-02-19 | 2020-04-01 | Nchain Holdings Ltd | Smart contracts |
GB2594684A (en) * | 2020-02-19 | 2021-11-10 | Nchain Holdings Ltd | Layered network |
US11349736B1 (en) * | 2020-11-09 | 2022-05-31 | Vmware, Inc. | Flow-based latency measurement for logical overlay network traffic |
-
2020
- 2020-02-19 GB GB2002270.3A patent/GB2592211A/en active Pending
-
2021
- 2021-01-19 EP EP21701358.0A patent/EP4097931A1/en active Pending
- 2021-01-19 CN CN202180015016.8A patent/CN115152195A/zh active Pending
- 2021-01-19 JP JP2022549580A patent/JP2023513951A/ja active Pending
- 2021-01-19 WO PCT/IB2021/050366 patent/WO2021165757A1/en unknown
- 2021-01-19 US US17/798,039 patent/US12034798B2/en active Active
-
2024
- 2024-05-22 US US18/671,883 patent/US20240333790A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
CN115152195A (zh) | 2022-10-04 |
US20240333790A1 (en) | 2024-10-03 |
EP4097931A1 (en) | 2022-12-07 |
WO2021165757A1 (en) | 2021-08-26 |
US20230076195A1 (en) | 2023-03-09 |
US12034798B2 (en) | 2024-07-09 |
GB202002270D0 (en) | 2020-04-01 |
GB2592211A (en) | 2021-08-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2022541323A (ja) | ブロックチェーントランザクションを利用したデジタル契約 | |
JP2023515368A (ja) | ブロックチェーンネットワークと共に使用される証明サービス | |
US20240305687A1 (en) | Layered network | |
JP2023515369A (ja) | 分散型データベース | |
US20240333790A1 (en) | Adapting connections of a layered network | |
CN115606150A (zh) | 多层通信网络 | |
KR20240096559A (ko) | 분산된 블록체인 기능들을 위한 방법들 및 시스템들 | |
JP2022548264A (ja) | 暗号的にリンクされたアイデンティティ | |
JP2023500258A (ja) | ブロックチェーントランザクションを使用する要求および応答プロトコル | |
KR20240100373A (ko) | 분산된 블록체인 기능들을 위한 방법들 및 시스템들 | |
KR20240100377A (ko) | 분산된 블록체인 기능들을 위한 방법들 및 시스템들 | |
KR20240024113A (ko) | 다중-레벨 블록체인 | |
JP2023518004A (ja) | ネットワークへのアクセスの取り消し | |
JP2023529467A (ja) | カスタムトランザクションスクリプト | |
KR20240096560A (ko) | 분산된 블록체인 기능들을 위한 방법들 및 시스템들 | |
KR20240093714A (ko) | 분산된 블록체인 기능들을 위한 방법들 및 시스템들 | |
CN118202622A (zh) | 用于分布式区块链功能的方法和系统 | |
TW202334847A (zh) | 用於安全且有效之資料儲存之電腦實現方法及系統 | |
WO2024052065A1 (en) | Determining shared secrets using a blockchain | |
CN118476186A (zh) | 基于签名的原子交换 | |
WO2024041866A1 (en) | Blockchain transaction | |
CN118525484A (zh) | 区块链区块和存在证明 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20231225 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20231225 |