ホームページ バックエンド開発 Golang Utreexo を使用してビットコイン ネットワークを改善する

Utreexo を使用してビットコイン ネットワークを改善する

Jul 30, 2024 am 08:03 AM

Improving the Bitcoin network using Utreexo

世界は日に日にデジタル化が進み、私たちの生活の多くの側面がますます無形なものになってきています。物理的な現金からキャッシュレス システム、さらには暗号通貨に至るまで、通貨も無視されていません。 2009 年にビットコインの最初のブロックが開始されて以来、ビットコインの採用はこれまでにないほど急速に成長しており、採用が増えるとネットワークの安定性と信頼が高まり、ビットコインの採用はさらに増えることになります。

まず第一に、ビットコインとは何ですか、ビットコインはどのように機能するのでしょうか?

ビットコインは、2008年にサトシ・ナカモトという疑似匿名団体によって作成された分散型ピアツーピアネットワークデジタル通貨です。ビットコイン ネットワークは、相互に接続され、ネットワーク全体でトランザクションを伝播し、トランザクションを検証するのに役立つノードとも呼ばれるコンピューターで構成されるネットワークです。このネットワークはデジタル通貨ビットコイン(BTC)を使用します。これらのトランザクションは、ブロックチェーン技術を使用する分散型公開台帳に保存されます。
ビットコイン ブロックチェーンは、先行するブロックに接続されていないジェネシス ブロックとしても知られる最初のブロックを除き、先行する各ブロックにリンクされたブロックで構成されています。ブロックは、マイニングプロセスを実行する前に、マイナーによって検証され、慎重にブロックに追加された複数のトランザクションで構成されています。トランザクションは基本的に、ビットコインウォレット間の価値の転送です。マイナーは、新しいブロックを確認または「採掘」し、ブロックチェーンに追加するというネットワーク上での主要な作業を実行する責任があります。
ビットコインについて学ぶためのリソースがオンラインで利用可能です。これらのリソースでは、ビットコインの機能について詳しく説明します。
ビットコインの優れた点にもかかわらず、スケーラビリティは常に大きな問題となっています。ビットコイン ブロックのサイズは 1MB に制限されており、ブロックはおよそ 10 分ごとにマイニングされます。これにより、この記事の執筆時点でビットコイン ブロックチェーンの現在のサイズは約 580 GB となり、これは昨年より約 18% 増加しています。フルノードがブロックチェーンに参加してネットワークを検証するには、ブロックチェーン全体をダウンロードし、すべての古いブロックと新しく追加されたブロックに対して検証の実行を開始する必要があります。このサイズは、日々増加し続けることがほぼ保証されており、ある時点で大きすぎて、リソースの制約により一部の一般ユーザーがネットワークに参加できなくなる可能性があります。
ブロックチェーンのサイズとは別に、ノードはネットワークの現在の状態も検証して保存します。この状態は現在の未使用トランザクション出力セット (UTXO) であり、ブロックチェーン全体のサイズが比較的小さいですが、この状態も、より多くのユーザーがネットワーク上でより多くのトランザクションを実行するにつれて、急速に成長し続けることが保証されています。このセットは、ネットワーク内のすべての未使用トランザクション出力のセットです。

それで、Utreexoとは何ですか?

Utreexo は、現在の状態のサイズを大幅に削減できるハッシュ ベースの動的アキュムレータを導入しています。これにより、ノードはシステム全体の状態を知らなくても、トランザクションの入力を完全に検証できます。これは、ファンドの所有者に、そのファンドが実際に存在するという証拠を保持させ、資金を使おうとするときにこの資金を提示することでこれを実現します。
Utreexo では、Compact State Node と呼ばれる新しいタイプのノードが導入されています。これらのノードは、状態のアキュムレータ表現のみを保存します。これらのノードがトランザクションを検証するには、包含証明が必要です。この証明は、いくつかのインプットを支出しようとしているときに、支出トランザクションによって提供されます。

Utreexo はビットコイン ネットワークをどのように改善しますか?

上で見たように、Utreexo を使用すると、ビットコイン ネットワークの状態を動的なアキュムレータとして表すことができます。ビットコインの現在の状態が 5 GB を超えるのとは対照的に、これらのアキュムレータのサイズはわずか数キロバイトです。
Utreexo がどのように機能するかを理解するには、まず暗号アキュムレーターとは何か、またそれがどのように機能するかを理解する必要があります。暗号化アキュムレータを使用すると、セットのすべてのメンバーを保存したり公開したりせずに、セットをクエリできます。このアキュムレータ構築アプローチは、トランザクションごとに、使用されている TXO が実際に UTXO セットのメンバーであるかどうかをクエリし、そうでない場合はトランザクションを拒否するため、ビットコイン UXTO セットに最適です。
通常のノードは、ネットワークに参加するときに、580 GB を超えるブロックチェーン履歴全体をダウンロードし、トランザクションを検証して、UTXO セットの独自のコピーを構築する必要があります。次に、ノードに影響を与えるすべての状態変化を検証する必要があります。これらのプロセスはすべてリソースを大量に消費する操作であるため、ネットワークの参加者数が制限され、スケーラビリティも制限されます。
この初期同期プロセスは初期ブロック ダウンロード (IBD) とも呼ばれ、インターネット接続とハードウェア リソースによっては非常に長い時間がかかる場合があります。この IBD 操作の速度に影響を与える主な要因の 1 つは、使用されるストレージ ディスクのタイプと I/O 操作の速度、特にランダム アクセス読み取りを迅速に実行する能力です。これが、ソリッド ステート ドライブを使用するコンピュータは、通常、ランダム アクセスの読み取り時間がはるかに優れているため、ハードディスク ドライブを使用するコンピュータと比較して、トランザクションの検証にかかる時間を 30 分の 1 以上短縮できる理由です。
Utreexo では、SSD コンピューターと HDD コンピューターのパフォーマンスにわずかな違いが見られるだけなので、使用するディスクの種類はそれほど大きな違いを生みません
Utreexo は、信頼できるセットアップやマネージャーの要件を必要としない、ハッシュベースの動的アキュムレーターを導入します。上で述べたように、アキュムレータはセットをコンパクトに表現したもので、要素を追加して証明することができます。 Utreexo アキュムレータは、アキュムレータからの要素の効率的な削除を可能にする完璧なマークル ツリーのフォレストを使用し、削除が発生したときにフォレスト内のリーフの総数を減らします。
加算はアキュムレータと追加される要素を超えるデータがなくても計算可能であり、削除は削除されるデータの包含証明とともに計算可能です。
アキュムレータの設計は、完全なバイナリ ハッシュ ツリーの森です。保存する必要があるアキュムレータの表現には、保存される要素の数、およびフォレスト内のすべてのツリーのルートが含まれます。
これは単なる入門記事であるため、完全なバイナリ ツリーの論理構造についてはこの記事の範囲を超えています。ただし、Utreexo の論文全文はここでご覧いただけます。

結論

Utreexo ハッシュ ベースのアキュムレータは、ビットコイン状態のサイズをわずか数キロバイトに削減することを目的としており、高価な最上級のハードウェアを必要とせずに、そこにあるほぼすべてのデバイスがビットコイン ネットワークに参加してトランザクションの検証を開始できるようにします。これにより、アキュムレータのサイズが非常にゆっくりと (Onlogn) 空間の複雑さによって増加するため、ビットコイン ネットワークのスケーラビリティが大幅に向上します。

以上がUtreexo を使用してビットコイン ネットワークを改善するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

ホットトピック

オーディオ/ビデオ処理に移動します オーディオ/ビデオ処理に移動します Jul 20, 2025 am 04:14 AM

オーディオとビデオ処理の中核は、基本的なプロセスと最適化方法を理解することにあります。 1.基本的なプロセスには、取得、エンコード、送信、デコード、再生が含まれ、各リンクには技術的な困難があります。 2。オーディオおよびビデオの異常、遅延、音のノイズ、ぼやけた画像などの一般的な問題は、同期調整、コーディング最適化、ノイズ減少モジュール、パラメーター調整などを通じて解決できます。 3. FFMPEG、OPENCV、WeBRTC、GSTREAMER、およびその他のツールを使用して機能を達成することをお勧めします。 4.パフォーマンス管理の観点から、ハードウェアの加速、解像度フレームレートの合理的な設定、並行性の制御、およびメモリの漏れの問題に注意を払う必要があります。これらの重要なポイントを習得すると、開発効率とユーザーエクスペリエンスの向上に役立ちます。

GoでKubernetesオペレーターの開発 GoでKubernetesオペレーターの開発 Jul 25, 2025 am 02:38 AM

Kubernetesoperatorを書く最も効率的な方法は、Goを使用してKubeBuilderとController-Runtimeを組み合わせて使用することです。 1.オペレーターのパターンを理解する:CRDを介してカスタムリソースを定義し、コントローラーを作成してリソースの変更を聞き、和解ループを実行して予想される状態を維持します。 2。KubeBuilderを使用してプロジェクトを初期化し、APIを作成してCRD、コントローラー、構成ファイルを自動的に生成します。 3. API/V1/MyApp_Types.goでCRDの仕様とステータス構造を定義し、MakeManifestsを実行してCrdyamlを生成します。 4。コントローラーの和解

PostgreSQL/MySQLのクエリ最適化テクニックに移動します PostgreSQL/MySQLのクエリ最適化テクニックに移動します Jul 19, 2025 am 03:56 AM

ApptlicationsInteractingingとfostresqlormysql、focusonindexing、selectivequeries、connectionhandling、caching、andormefficiency.1)使用プロペラインデックスの使用 - 識別のために識別を識別し、colulti-columnsを使用することを識別します

GOのポインターを備えたスタックvsヒープ割り当て GOのポインターを備えたスタックvsヒープ割り当て Jul 23, 2025 am 04:14 AM

スタック割り当ては、明確なライフサイクルを備えた小さなローカル変数に適しており、速い速度で多くの制限で自動的に管理されます。ヒープ割り当ては、長期または不確実なライフサイクルのデータに使用され、柔軟性がありますが、パフォーマンスコストがあります。 GOコンパイラは、エスケープ分析を通じて変数割り当て位置を自動的に決定します。変数が現在の関数範囲から逃げる可能性がある場合、ヒープに割り当てられます。脱出を引き起こす一般的な状況には、ローカル変数ポインターの返却、インターフェイスタイプへの値の割り当て、ゴルチンの通過が含まれます。エスケープ分析の結果は、-gcflags = "-m"を介して表示できます。ポインターを使用する場合、不必要なエスケープを避けるために、可変ライフサイクルに注意を払う必要があります。

HTTPミドルウェアロギングの例を例に進めます HTTPミドルウェアロギングの例を例に進めます Aug 03, 2025 am 11:35 AM

GOのHTTPログミドルウェアは、リクエストメソッド、パス、クライアントIP、および時間がかかることを記録できます。 1. http.handlerfuncを使用してプロセッサをラップします。2。next.servehttpを呼び出す前後の開始時間と終了時間を記録します。完全なサンプルコードの実行が検証されており、中小のプロジェクトの開始に適しています。拡張機能の提案には、ステータスコードのキャプチャ、JSONログのサポート、リクエストIDトラッキングが含まれます。

科学的なコンピューティングと数値分析に進みます 科学的なコンピューティングと数値分析に進みます Jul 23, 2025 am 01:53 AM

GO言語は科学的計算と数値分析に使用できますが、理解する必要があります。利点は、並行性のサポートとパフォーマンスにあります。これは、分散ソリューション、モンテカルロシミュレーションなどの並列アルゴリズムに適しています。 GonumやMAT64などのコミュニティライブラリは、基本的な数値計算関数を提供します。ハイブリッドプログラミングを使用して、CGOまたはインターフェイスを介してC/CとPythonを呼び出して実用性を向上させることができます。制限は、エコシステムがPythonほど成熟しておらず、視覚化と高度なツールは弱く、一部のライブラリ文書は不完全であることです。 GO機能に基づいて適切なシナリオを選択し、それらを詳細に使用するソースコードの例を参照することをお勧めします。

画像操作ライブラリに移動します 画像操作ライブラリに移動します Jul 21, 2025 am 12:23 AM

一般的なGO画像処理ライブラリには、イメージング、BIMG、Imagickなどの標準的なライブラリイメージパッケージとサードパーティライブラリが含まれます。 1.画像パッケージは、基本操作に適しています。 2。イメージングには完全な機能と単純なAPIがあり、ほとんどのニーズに適しています。 3. BIMGはLIBVIPに基づいており、パフォーマンスが強いため、大きな画像や高い並行性に適しています。 4。ImagicickはImageMagickをバインドします。これは強力ですが、重い依存関係を持っています。画像のスケーリングとトリミングをすばやく実装します。イメージングライブラリを使用して、COSSIZEおよびCROPANCHOR機能の数行のコードを介してそれを完了し、複数のパラメーター構成をサポートできます。フィルターの追加または調整トーンは、Grayscなどの想像力によって提供される色変換関数を通じて実現できます

Goのパニックから回復する方法は? Goのパニックから回復する方法は? Jul 23, 2025 am 04:11 AM

パニックは、Goのプログラム「心臓発作」のようなものです。回復は、クラッシュを防ぐための「応急処置ツール」として使用できますが、回復は延期関数でのみ有効になります。 1.サービスの経過、ログログ、およびフレンドリーなエラーを返すために、回復が使用されます。 2. Deferと組み合わせて使用する必要があり、同じゴルウチンでのみ有効になります。プログラムは、回復後にパニックポイントに戻りません。 3.上位レベルまたは重要な入り口で使用し、悪用しないでください。エラー処理の使用を優先しないことをお勧めします。 4.一般的なパターンは、Saferun関数をカプセル化して、可能なパニックロジックをラップすることです。その使用シナリオと制限を習得することによってのみ、その役割を果たすことができます。

See all articles