ソース コードではトランザクションの確認に非常に長い時間がかかるため、ブロックの検証には大量の時間と処理能力が消費されます。この問題は新しいトランザクション形式によって解決できますが、特にブロックが大きくなればトランザクション数も増え、その数は指数的に増加するため(英語では、数学の e^x だけでなく、指数を含むすべての方程式を意味します)、私たちも何らかの対策を講じる必要があります。 Bitcoin Unlimited には、「並列検証」と呼ばれるテクノロジーが組み込まれており、これにより、より小さいまたはより高速に検証されるメンバー ブロックが、より大きくまたはより低速に検証されるブロックを置き換えることができます。この競争的な技術的アプローチにより、大きなブロックが孤立し、マイナーは代わりに小さなブロックを好むようになります。しかし、これは非常に有意義なことです。なぜなら、創発的コンセンサスによって、非常に大きなブロックや「コストのかかるトランザクション」を防ぐことができるからです (翻訳者注: ここでの非常にコストのかかるトランザクションとは、原文のコストのかかるトランザクションのことで、検証とブロードキャストのコストが非常に高いことを意味します。たとえば、かつて誰かが悪意を持って、非常に大きな入力量と出力量を持つトランザクションを構築したことがあります)。 現在のソフトウェアは、Sigops を使用してこの問題を解決しようとします。ただし、sigops をこのように使用することはできません。これを説明するために、Bitcoin の RPC「Create Raw Transaction」API を使用して 2 つのトランザクションを構築してみましょう。最初のモデルには 1 つの入力と 10,000 個の出力があり、2 番目のモデルには 10,000 個の入力と 1 つの出力があります。トランザクション 1 の統計は次のとおりです。 入力: 1、出力: 10000 サイズ: 340126 バイト 計算されたシグオプス: 10000 実際のシゴップ: 1 うわっ: 340092 確認時間: 125ms
取引2は全く異なる 入力 10000、出力: 1 サイズ: 1474955 バイト 計算されたシゴップ: 1 実際のシゴップ: 10000 うわっ: 4100750000 確認時間: 394725 ミリ秒
計算された sigops は実際の sigops と正反対であり、確認時間は計算された sigops が 1 のトランザクションよりも長く、計算された sigops が 10,000 のトランザクションよりも短いことがわかります。 トランザクションを確認する際、ビットコイン クライアントは最初に入力を使用し、次に前回のトランザクションからの出力 (未使用出力と呼ばれる) を使用します。つまり、この入力は前のトランザクションの出力です。署名命令では、前の出力中に署名確認が有効になっていることを確認する必要があります (P2SH-STYLE TX-THE 3XXXADDRESSES を使用している場合を除く)。 もちろん、このトランザクションの署名操作の出力は、このトランザクションの確認には使用されません。これらは次のトランザクション出力で使用されます。したがって、signop 計算コードには無関係な署名操作が含まれ、関連する署名操作は無視されます。 取引検証にかかる費用はいくらですか?次の図は、「通常の」トランザクションにおける入力と出力のさまざまな値の確認時間を示しています。このデータは、AMD 6 コア 3.2 Ghz (赤) と Intel 6 コア 4.0 Ghz (緑) を使用して収集されました。縦軸は確認時間(ミリ秒単位)、左側の横軸は出力音量、右側の横軸(深度)は入力音量を表します。 1~2000の入力と出力のトランザクションの確認時間
超線形上昇をより明確にするために、次の図は、N入力と1出力(青)のトランザクションと、1入力とN出力(オレンジ)のトランザクションを示しています。 非線形動作を引き起こすのは出力ではなく入力であることは明らかです。しかし、このデータに基づいて曲線を塗りつぶすことはできます。ここで、二次数学モデル (つまり、ax² + by² + cxy + dx + ey + f) を想定します。 結果は以下のとおりです X = # 入力、Y = # 出力 モデルは次のようになります: 0.004174*x^2 + 0.000008*y^2 + 2.435706*x +0.136400*y + 0.001659*x*y + 879.778020
このデータ コレクション (0 ~ 2000 出力) では、-0.000008 はほぼ 0 と見なすことができます。したがって、データ分析からでもチャート分析からでも、データは入力に関しては二次方程式に非常に似ており、出力に関しては直線に似ています。この非公式なプレゼンテーションでは、これらの定数を直接使用しないため、正式なエラー分析は行いませんが、3D プロットでは、モデル 1 (赤) が実際のデータ (緑) の傾向を合理的に説明していることがわかります。 N ケース制限 1 の 2 番目の推測は、定数のために飛び出しているように見えます。 この問題をどうやって解決すればいいでしょうか?上記のグラフから、推定値としての入力値はトランザクションにおける signops よりも優れていることが明らかです。しかし、このデータは単純な取引に限定されます。一部の入力には複数の署名が必要であることがわかっています。理論的には、sigops を計算する必要があります。ただし、これを行うには、以前のすべての取引を入力する必要があります。実用的な観点から言えば、これらのトランザクションは、Satoshi クライアントのソース コードではアクセスが困難です。サトシは、既存のアクティブなブロックチェーン上で UTXO に慣れてきただけだった。しかし、ブロックやトランザクションの価値を推定できる必要があります。 したがって、以前の出力を見ても正しい signops を決定することはできません。ただし、Bitcoin スクリプト言語ではループの終了が許可されていないため、すべての署名が入力スクリプトに含まれている必要があります。これは、入力スクリプトの長さが sigops のプロキシ モードであることを意味します。また、トランザクションがどのように確認されるかもわかっています。各 OP-CHECKSIG は完全なトランザクション (入力と出力) に署名し、署名とハッシュ データ間の競合をチェックします。 だから合理的な予測は トランザクションの労力 = すべての入力の長さ * 合計の長さ ブロックの労力 = SUM(トランザクションの労力)
(翻訳者注:この記事では「努力」という言葉が頻繁に出てきます。何と訳すべきかよくわからないので、とりあえず「コスト」と訳します。文脈から判断すると、元の単語「長さ」は入力と出力の数を指していると思われるので、文字どおりの「長さ」ではなく「ボリュームサイズ」と訳します) もちろん、合計ボリューム サイズは、入力ボリューム サイズと出力ボリューム サイズの合計です。この式は次のように書き直すこともできる。 トランザクションの労力 = len(入力)^2 * len(出力)
したがって、推定値はデータから抽出したモデルと非常に類似しています。二次入力特徴と XY 項を抽出します。線形効果も無視されますが、これらは重要ではないと見なされます。 「Bigger Blocks」(EB) メトリックを使用して、1MB を超えるブロックのブロック サイズとトランザクション数を計算します。 「MB あたりのサイズ コスト」という構成パラメータを提供します。このパラメータよりも MB あたりのコストが大きいブロックは、大きなブロックと見なされます。 100 万ブロック以下の場合、Bitcoin Unlimited は引き続き現在のルールを適用します。この分岐後も、古いトランザクションとの互換性を維持することで、古いルールに対応するために 1MB 未満のブロックを引き続き許可します。つまり、まだ送信されていないトランザクションは、引き続き送信できます。これによりコードも簡素化されます。ブロック/トランザクション サイズの推定コードには、外部情報やブロックチェーン記述テーブルは必要ありません。ブロックまたは大規模なトランザクションを通じて、またはオブジェクトを観察することによって取得できます。 このルールをブロックサイズのみを使用して説明しましょう。これは従来のフォークコンセンサスルールではないため、ルールが破られたり、他のクライアントが他の標準を使用したりしても、ブロックチェーンはフォークしません。 そこで、「エマージェントコンセンサス」アルゴリズムを使用します。このアルゴリズムには多くの利点があります。将来的にルールを変更するのが容易になります。つまり、古いブロックはこのルールに従う必要はなく、1 つの Bitcoin ブロックチェーンのルールに厳密に従うだけで済みます。ただし、創発的コンセンサス アルゴリズムの詳細については、この記事の範囲外です。 最後の質問は、Bitcoin Unlimited の「より大きなコスト」にデフォルト値がどのように反映されるべきかということです。以下の説明では、1MBあたり150,000,000,000という値を引用します。この数字の大きさはそれほど意味がありませんが、最新のプロセッサでは 1 MB あたり約 10 秒の確認時間に直接変換されます。 ARM プロセッサの場合は時間がかかりますが、推定値はそのまま保持されます。以下で説明するように、確認時間は、現在のブロックチェーンのブロックの最悪の確認時間よりも大幅に短くなります。 これはブロックチェーンにとって何を意味するのでしょうか?現在ビットコイン ブロックチェーンにあるすべてのブロックを計算し、最も高い「コスト」から最も低い「コスト」まで取得することができます (この記事の最後にある付録を参照)。 これらのブロックにはすべて、確認が難しい単一のトランザクションが含まれています。これらのトランザクションは 350 KB から 1 MB の範囲であるため、1 つのブロックに詰め込めるトランザクションは多くありません。つまり、350KB のトランザクションを含むブロックの確認には、1MB あたり 30 秒という長いながらも妥当な時間がかかります。したがって、将来的に 100/175、100/195、100/742 などのトランザクション (00005708%) をブロックすれば、この問題を自分たちで解決できます。 これらの高コストの取引は、「ジャンク ダスト」取引に似ているようです (多くの取引を確認しましたが、すべての取引を確認したわけではありません。相違がある場合はご連絡ください)。ただし、私の知る限り、ダストトランザクションをいくつかの小さなトランザクションに分割しても問題はありません。 付録: 最も高価なブロック ブロックハッシュ、トランザクション数、最大トランザクション長、最大 VIN 数、 最大 # vout、ブロックコスト、最大 tx コスト ブロック ハッシュ、トランザクション数、最大トランザクション長、最大 VIN 数、最大 VOUT 数、ブロック コスト、最大トランザクション コスト
('000000000000000003dd2fdbb484d6d9c349d644d8bbb3cbfa5e67f639a465fe'、2、999657、5569、1、999268159512、999268133427)
('000000000000000000283e9409575c2426cd72fcb722065431c52b5083e5bb58'、2、999651、5569、1、999243168477、999243142392)
('00000000000000000d63417949af6653756d975f5e60cacff162303efcc41f3e'、2、999622、7350、1、999222177285、999222151200)
('00000000000000000671d60be5c9439be636a4e00f50c33141ded6a29f816cbc'、2、999621、7350、1、999221177685、999221151600)
('000000000000000003104258b4af9f6362b9e37cff80a25f521ee222a393330c'、2、999634、5569、1、999209181635、999209155550)
('0000000000000000058319fa2282779aada74b249369ecf9baa7ffaed3e11fb0'、2、999611、5569、1、999163200357、999163174272)
('0000000000000000030efd6441dc3520878727dc7c195aa3a268f33f41a344e4'、2、999608、5569、1、999157202877、999157176792)
('00000000000000000c17f800899d77056a61e0ec5a47402e61eba00ee621ba9f'、235、926262、5160、6、857932538512、857906643186)
('0000000000000000094b3d68fe7004b683c55aa40b6fb0e633d3f31105bf0831', 346, 897599, 5000, 20, 805660561281, 805631006460)
('000000000000000008360c45209d17a47fc4ae9c580e519323c4c7b9b2a6ab58'、371、897564、5000、9、805603866660、805568177820)
('00000000000000000286409e3efb3e7c0653be26472f19089dbee4861f08e0ad'、119、886617、4925、9、786424716789、785988630351)
('0000000000000000113ba2a64fdfd175223ba3c3fccd02f3673a92d2303d4d3b'、165、883773、4909、11、780984714454、780953965407)
('0000000000000000117527da7d5c18cb03e3486b40409acef382be70a7480d69'、207、854331、4746、12、730140672352、729813111081)
('00000000000000000efc700678729b24309c9a5dfae8c6965c3a493b690f531c'、338、842481、4680、74、709740975337、709706836881)
('000000000000000003777900d8512b213aa30c1f830c867bc0b09d55796a6041'、489、842079、4691、51、709127971391、709047359580)
('00000000000000000528f81f5641d0c240176fbfe2a9bc5e92ce06124bfc5224', 279, 840022, 20000, 39, 705963364464, 705618480000)
('0000000000000000008368a5c59bf755abd9d967370fe7c7a1c2929684e7e8a2'、273、840022、20000、13、705918102321、705618480000)
('000000000000000011c34837a74038b730edeaefd3a158d0ba0e1e1390f5c220'、281、840219、4667、10、705914181075、705872182995)
('000000000000000053bceb058c6e8fae9efd0c17746e6c845f89ef1d97893f8', 260, 840022, 20000, 51, 705859962311, 705618480000)
('00000000000000000bef938ebe4f04049206995fca611c78692606db3871b04c', 376, 840022, 20000, 21, 705810617110, 705618480000)
('00000000000000000b8d631639b0dd7ea223f2efc46fc9ab0992f7d612e29c25', 368, 840022, 20000, 101, 705791298560, 705618480000)
('00000000000000000e17bc7ba14fc16897a41cb1b2f0b89ddbad2cfe30184a61'、423、840022、20000、16、705790914100、705618480000)
('00000000000000005780446bbdddfff6e547ab83d39b237ec0f1440ff9af45f'、346、840022、20000、16、705743934757、705618480000)
('0000000000000000096aa43cd0d602b704bfa23f620141eea4006f179d40ce08', 477, 840022, 20000, 11, 705720326435, 705618480000)
('000000000000000012ea0ca9579299ec120e3f57e7c309216884872592b29970'、420、840022、20000、6、705681723837、705618480000)
('000000000000000007c5ace173341f0bcdfe3a8edcecfb7c23d3336829a2bf80'、253、839406、4663、74、704772458086、704535280356)
('0000000000000000063e5b9d30e49596fe2219b0decfcf694f00653fc661fa38'、266、837794、4654、21、701945523339、701831762916)
('00000000000000000d86f6cc57eae1f167321c3650bb238944712dd4e2a1efb0'、188、832508、4625、8、693811660588、692974664152)
('00000000000000000ec68dc67c0bde9fab8502f95c2bc8894f42959ddffb179a', 278, 831095, 4617, 36, 690825131965, 690652411425)
('00000000000000000d60936f7885c4407e0e18a4a9e02bfc97b417d06637f2e0'、394、828552、4603、14、686526538402、686432132544)
('000000000000000002d10761a51dd948b52af03cc758aa37f15dd14761968a86'、45、811536、4507、5、659541991519、658442979744)
('000000000000000009327d9cd32c82b78b23f877c82587cfb4d1142e6433cd57'、224、796238、4423、21、634073229246、633931253604)
('000000000000000009a07b761b0239baf86a3449e25f842a37bc604628e7e87a'、509、789537、4386、13、623377439128、623305511409)
('000000000000000002a8571bee11074e33021e594b8909d23f28aa2ec6a03d92'、527、787898、4377、12、620771768498、620720226564)
('00000000000000000d9fa4313b005a54db9242295b5c4ca193f6b676b6069295'、323、782696、4348、151、613085446559、612550412736)
('000000000000000008fc403e02c73b32a5b6139bd2e4debabdc8df9ba180232d'、299、773527、4297、16、598527747893、598308437487)
('00000000000000000872231d0d3d402e5dddd30711fdb19f242fd7c59a7f57c6', 430, 772964, 4294, 15, 597485956914, 597411508176)
('00000000000000000596cff56060b95758fb6e77f5d0fbf87e5b83989e76be45', 370, 761938, 4233, 9, 582014941473, 580488560804)
('00000000000000000ad13642532640c520abfede7f16d80922277471013abb09'、421、761037、4227、12、579504571396、579116432409)
('000000000000000008cb5666ad253b9308c0c11a581b354f25a76d0effe94f35'、208、755955、4199、21、571719356275、571330378215)
('0000000000000000063649fc8894f697fc58c7b7d87918c47f462ad8833e5db1'、198、737559、5000、35、567077766234、543959350767)
('000000000000000000747e3d8314a3e3d21ed2f44d94e256f50b49e741e1fac4'、73、745449、4141、4、557346698144、555634575681)
('000000000000000007eee2a2844312f5718db70dc3ec6263017ab3e2823c4384'、539、742362、4124、50、551332389904、551041950084)
('000000000000000015c89ab74c296908c9e5f269508ee410293983b12619085f'、235、737510、5000、7、546642860065、543890024680)
('00000000000000000c251056710cd5ae9855f8373b64675ada89d96e3292395d', 220, 737548, 5000, 18, 544198251563, 543946075288)
('0000000000000000116e7371b8a7c35834d2b62a5806bd04c16bc3474a72cc26'、109、724941、4027、15、526338649627、525481458201)
('0000000000000000085412139c377478b8a7ff7d31caa35ac160251f411f8d8b'、628、718410、3991、17、516990431986、516055455300)
('0000000000000000013ec024ffc51a6d87c30362bf6c41b9290fb3db9e2ac508', 171, 701117, 3895, 58, 501481440693, 491508958329)
('0000000000000000088ab3a8a791419bfc88b854571894d7dfd7b225e0980a63'、320、692557、3847、151、483406043326、479556246751)
('00000000000000000ede556711a82f88d1d8669da648a92de134d1f32463da53'、666、694193、3856、19、482008798325、481848385809)
('00000000000000000e5c87d568324ba252550a4cb02b7279cf398b9994c0c39f'、409、691939、3844、12、478795452118、478724224601)
('0000000000000000093d5e21b67b8febbf067a538fb6193a4fc0d6948346f24a'、800、682650、3792、167、466126999742、465956410500)
('0000000000000000013bee13c13c8408e72e75b78800b6493a71fd56f5d975b8'、1032、655425、3651、58、432757522025、429543260550)
('000000000000000015a382acfc08bd42952fef355b66c9c9e6550353b6c167d0'、663、655438、3651、22、429664524420、429560301002)
('000000000000000004e568e462c0acf1843ca5dd15bc356a921729cd33b8ae71'、377、632404、3513、54、413502951557、399884226896)
('0000000000000000054790aa56d6ca30b033233a133d02d308878b719f711b41'、641、612356、3411、18、412788257766、374943741732)
('00000000000000000bfbefddfe17466b9cbe7dcfec7833f3be1fd5738e964944'、530、634422、3524、2418、403053803050、402440520324)
('000000000000000007a7648870dbaa5668a6f9307e99060cc7c0703945e098bd'、821、613585、3418、102、376639652381、376458327315)
('00000000000000000d62348cd0bde52e8cf8aa85df3b0b0d23594565667f58d9', 161, 596708, 3314, 15, 356255535628, 355992412552)
('00000000000000000b3424dade9b0402fe56db61c6c7de15c440772c18e7ec0f'、177、585148、3250、8、342439831082、342331475032)
('00000000000000004bf023e5fe85087d01f1c345de703489b89a429d525c65a', 252, 418687, 2325, 8, 315137532937, 175236838293)
('00000000000000000c94ca4441d4f2470188dcb8845820d818cbfaf9f0c838e9'、388、559319、3116、154、314660386656、312812015087)
('000000000000023d9a3ee2714f4365b2d312700ba113af23084104319133c6c0'、725、465554、2585、24、295090009096、216639967252)
('000000000000000002ac55f2ada57d8f6034bf079fc3c16cdd961531650045db'、283、500012、3390、22、294403660972、249990999640)
('0000000000000000120f31d6e21a8976066f1ea8e3652a144d99d3fe10ba461e'、377、500028、3390、15、293764638072、250006999608)
('000000000000000010889bb61503de0bbcd225c4b57ea0c709f5f6403962ca08'、439、500048、3390、22、293677436332、250027000288)
('0000000000000000077c1da70b544d3b401805ee4f0f8da8433212049194cb8b'、552、499992、3390、15、293644521158、249971000400)
('00000000000000000bdf286d03caf440c81c0a49503be628a6ab784b813ab745'、523、531058、3600、101、288542881258、282000294928)
('00000000000000000ca5400a9d607c7e6cdf95aded1681f043f0e7528ad13a5c'、582、512204、2853、20、287517152285、262322717580)
('00000000000000000de35723889e1c31ca66d527c4d72ccb726a9841c924c082'、1173、535796、2976、74、287366298960、287034489936)
('000000000000000006a53e8e9dc2be33f91bf04a3cea4c4cff8a47c1b6520dd8'、1094、531061、3600、30、286421196770、282003481159)
('00000000000000001474b9a66f8f8b6c890135ae2074ef767493d3f60d0c0044', 705, 500032, 3390, 175, 272044428303, 250010999680)
('000000000000000011418703f3e6674e1a19cdfd9955f76ffd646bf2dedcfda3', 515, 486870, 2704, 21, 267978654435, 236986893720)
('00000000000000000126b5419f9d31f64fe9e91640b5fc383af629828bbae0fd'、254、505880、2810、74、256576274071、255874104000)
('000000000000000001dcb26d9a6786955cfdfd94e368c5ca25ae672233823c7d'、1491、500057、3390、41、251089361416、250036000855)
('000000000000000008686f8ee926d297063471f15693530de1b59393dd5a95cf'、607、500022、3390、3846、250537960825、250000999560)
('000000000000000001e23249369c26abdd142b506c1796934f2e1780bd15a216'、1481、500073、3390、77、250227656361、250052002263)
('00000000000000000e700a9de911a57ae5c3ac4238530878ebf18f2cba7d2bb4'、586、500073、3390、102、250210561024、250052002263)
('000000000000000011bae3d44a6f198f4670bc2502b6cc725f28d9fe04dec5db'、439、500063、3390、102、250139971582、250042001323)
('000000000000000007b4bd703d1ca95a51b3d70f2b74ddf09942f95cc3a5128b'、474、500018、3390、102、250096537199、249996999568)
('00000000000000000afa83a2bef7bf2c7c4b055554dc64b31c5f71ddecd9d4e6', 461, 496472, 2758, 21, 246697639731, 246461609072)
('000000000000000003d9e27c8aa6b846b1db19df2db50373c643542c62725363'、769、491111、2728、151、241290452375、241150725441)
('00000000000000000c840c9855a79d9e629d2b4357136df495966b960ec8ff25'、228、483953、2688、11、234545821649、234171789969)
('000000000000000008fa8784a8921bd64983f60c8daea41b74197ac1921edee9'、740、471876、2621、179、224194921204、222613165512)
('00000000000000000087036d230bed40f5c74f8c4aa0800c0b4bec183110b773', 372, 469724, 2609, 21, 221870040189, 220603058256)
('0000000000000000000812d4b59c826bd2047e72e01c3ba3f3ad517c63e7de64'、714、464554、2580、229、217097056954、215773254596)
('0000000000000000101c965a762eb6ff0d541a3b03dd96130851d7efee9f57c7', 140, 463683, 2575, 21, 215429176215, 214933299405)
('00000000000000001052a4c9af72f80c634e0da86733c1aeca3a206cf1662ccc'、366、457507、2541、60、211799631965、209276054489)
('0000000000000000021b72ac222d06f424902454c86748f096119ec81e8aeebd'、306、456711、2537、12、208676485402、208532872467)
('00000000000000001098af47793a0094c310e089efcc81d0ef6dc6cc53b2c198'、1057、451541、2508、61、204827126763、203837799007)
('00000000000000001196412df6f4d90e1c773a2fc4cb4d4d6b1d1360f5e62438'、1390、439184、2439、74、193164601772、192802654368)
('00000000000000450634d2a059e1a154cfd5783872ff9c7e788524e81fa163a1'、358、369986、2055、41、183989940557、136860041316)
('00000000000000000ce1f56134e7d27eee5db75466723e21655e478028fe2576'、491、425781、2365、56、181738057055、181255397481)
('00000000000000000816cabe4571b0b665993e637d00dba8ac45222b1712a83c'、526、419896、9997、151、180245981292、176303413104)
('000000000000000006c2664614dacb672c47a42a6ab270d1bdd01abc837c7f6d'、1040、412318、2290、251、170842082052、169973147684)
('00000000000000000b7df7d919db2b73c23d6c016acae098778ea70c9095e00c', 979, 368776, 2500, 468, 159134078850, 135978774480)
('00000000000000000d710f3876a7b235aab173042cfe77ff7d0d1972bc279465'、416、388415、2157、151、153639042348、150821932915)
('00000000000000000e7c7050d8e8546c1db61a064f2cc6ce5c60f009dde8a875'、1061、338825、1882、142、141730172877、114775274625)
('00000000000000000a9cd67f563169d5f1452a305d6e311e822e4f9ffc88ca9a'、548、364589、2025、134、135044516959、132895971801)
('000000000000000009cd352daf6ab3edeceefd21838028d20ea60d0ef282afa8', 387, 359854, 1999, 22, 131024341095, 129453877960) |