ダウンロード
メニューを閉じる -

RSK:Bitcoin マージ・マイニングは浸透しています

Published on: 23 7月, 2019

文:Sergio Demian Lerner(RSK チーフ・サイエンティスト)

Bitcoin Mining の紹介

Bitcoin Mining はSybil 攻撃に対する抵抗力を実現するためにBitcoin によって用いられるプロセスで、Nakamoto Consensus(ナカモト・コンセンサス)の基盤を形成します。プロセスには演算的に難解なパズルを解く作業が伴い、レジャー(元帳)に適用となる有効なトランザクション群の選択が付随します。現在、大半のBitcoin マイニングがマイニング・プールによって実施されています。マイニング・プールが存在することで、マイナーの支払差異を縮減するのみならず、保守コストや処理能力要件の低減も実現されます。マイニング・プールは、マイナーまたは「作業者」(クライアント)がpoolserver(サーバ)に接続するクライアント・サーバのアーキテクチャを順守します。poolserver はマイニング・プールのサーバ・ソフトウェアの1つを実行します。一般的なソフトウェアとしては、Ckpool、Btcpool、Eloipool が挙げられます。

poolserver は一般として、暗号化されていないTCP/ IP 上のRPC チャンネル経由でbitcoined インスタンスと通信します。チャンネルは現状で最良のブランチ、採掘されるブロックのためのペアレント・ブロック・ハッシュについての情報取得に用いられます。同時に、poolserver は事前選択された有効なトランザクション群を取得します。これは、bitcoind RPC コマンドgetblocktemplate を使って実行されます。poolserver はそうしたトランザクションのサブセットを選んで新規ブロックに組み入れます。加えて、poolserver は全般として、変化を検出するべく、ペアレント・ブロックに数秒おきにbitcoind を投じます。新規ブロック検出にあたっての遅延を縮減するために、一部のpoolserver 実装はp2p プロトコル上でbitcoind に接続するか、ブロック到来と同時に周知されるbitcoind blocknotify コマンド・ラインのオプションを使用します。poolserver はBitcoin ネットワークへの1つ以上のp2p 接続を活用し、新規生成されるブロックを提出することができ、FALCONあるいはFIBREのような高速ブロック転送バックボーン(fast-block transfer backbones)と通信を図ることが可能です。

マージ・マイニング

マージ・マイニングとは、二次ブロックチェーンを確保するべく一次ブロックチェーンを確保する、同じマイニング・ハッシュレートを使うための技法です。Namecoin はBitcoin とマージ・マイニングした初の仮想通貨です。マージ・マイニングは採掘される一次ブロックチェーンのブロックのどこかにある二次ブロックチェーンからブロックID(最近構築された新規ブロックの暗号ハッシュ)を組み込むことで実施されます。セカンダリ・ハッシュは、短い記述文またはマジック・バイトが前に置かれ、マージ・マイニング「タグ」と呼ばれます。プレフィックスはセカンダリのブロックチェーンがタグを特定することを可能にします。しかしながら、タグが特定される場所については明確を期すべきであり、プライマリのブロックチェーンのブロックはセカンダリのブロックチェーンとの相関が皆無か、あるいはせいぜい1ブロックとします。  リンケージのための暗号化ハッシュの使用は不正を防止し、リンケージのセキュリティ要件は従来の暗号学にて要求される内容と比べると相当に低くなっています。非公式ながら、マージ・マイニングの唯一のセキュリティ要件とは、同一のセカンダリのブロックチェーンに関連付け可能なプライマリのブロックチェーンのブロックを生成するのが、セカンダリのブロックチェーンの難度で2種類のプライマリのブロックチェーンのブロックを採掘する以上に困難であることです。RSK の場合、プライマリのブロックチェーンとは、言うまでもなく、Bitcoin であり、セカンダリはRSK です。RSK ブロック難度は、現状、70ビットのセキュリティに匹敵し、Bitcoin 難度は74ビット相当です。 

プルーフ・オブ・ワーク(Proof of Work)プロキシ 

マージ・マイニングでは、Bitcoin ヘッダーはプルーフ・オブ・ワーク(proof-of-work)プロキシとして作用するに過ぎません。RSK ブロックチェーンはBitcoin ブロック・ヘッダーのPoW を解釈し、RSK ブロック・ヘッダーとの関連を独自に構築するタグをBitcoin にて検索する必要があります。従って、Bitcoin ブロックのPoW をRSK ブロックPoW に他動詞的に置き換えます。前述したように、RSK ブロックチェーンにとっての難度はBitcoin ブロックチェーンの難度より低いことから、Bitcoin PoW パズルを解決しない数多くのBitcoin ブロック・ヘッダーがRSK PoW パズルにとって有効なソリューションとなることでしょう。この特質をもう少し深く掘り下げましょう。1つ1つのブロックチェーンはブロックごとの予期される難度を算出します。この難度ですが、ブロック間の平均時間をほぼ一定に維持する目的から、全ての従前ブロックによって定義されます。内部的には、難度は「ターゲット」と置き換えられ、難度と反比例します。ターゲットは256ビットの符号なし整数です。

ブロックチェーンターゲット
Bitcoin000000000000000000165exxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
RSK00000000000000000db5a4xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Namecoin00000000000000000019xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

同日の、マージ・マイニング・ブロックチェーンのおおよそのターゲット。RSK のターゲットはより高く、すなわち、ブロックの頻度が20倍であるからです。

暗号学的ハッシュ・ダイジェストの予測不能性を理由に、ブロック・ヘッダーのコンテンツの暗号学的ハッシュ・ダイジェストであるブロック・ヘッダーID は 一様の確率変数を提示すると想定されます。このことは理論的には正しくはありませんが、Bitcoin(二重SHA256)またはRSK(Keccak)にて使用されるハッシュ関数を反転させる既知の実用的手法がないことから、実際的には有効です。このハッシュ・ダイジェストですが、符号なしの数値として解釈される時、ブロックがPoW パズルの解答を表するためには、ターゲットを下回る必要があります。よって、ターゲットが低いほど、PoW パズルの難度が高くなります。  

SPV プルーフ

セカンダリのブロックチェーンはフルBitcoin ブロックに対し、Bitcoin ヘッダーのPoW の照合およびRSK ヘッダーとの関連付けを要求しません。この関連付けは(主として、Merkle ツリー・メンバーシップ・プルーフを構成する)SPV プルーフによって証明可能です。次のダイアグラムはプルーフの様々な領域間の関係を明示します。青色のボックスはSPV プルーフに包含されている情報を表し、RSK ブロックに沿って転送される必要があります。

Bitcoin SPV プルーフはマージ・マイニングPoW プルーフの圧縮を可能にします

ターゲット・ヒエラルキー

RSK ターゲットは全般として、Bitcoin ターゲットよりも高いのですが、なぜなら、RSK ブロックがBitcoin ブロックの頻度を上回るためで、結果、RSK パズルの難度は低いのです。よって、RSK PoW パズルを解くBitcoin ブロック・ヘッダーはBitcoin ネットワークによって許容されません。双方のパズルにはBitcoin ヘッダーへの取り組みが伴い、そして、実際には、解決にあたっては同じ試行錯誤のプロセスが介在します。ですので、マイナーがより難解なBitcoin パズルの解決を模索している際、プールはどのようにしてより頻繁に解かれるRSK パズルを検出し、それについて周知できるでしょうか?答えですが、マイナーはすでに、Bitcoin の要求する以上に相当に低い難度でブロック解決に取り掛かろうとしているということです。こうした媒介ブロックは「シェア(shares)」と呼ばれ、処理にあたってpoolsever によって必要とされています。事実、(相当に高いターゲットを指定する)ずっとシンプルなパズルを解くようにマイナーを指令することになるのがpoolserver ソフトウェアです。シェアは実際のBitcoin パズルを解くのに寄与するような媒介ソリューションのようなものだと考えても良いでしょう(本当はそうではありませんが)。シェアは実際のブロック・ソリューションを成就するのに拡張不可能です。しかし、マイナーが強力なほど、実際のソリューション間のプールのためにそのマイナーが創造するシェアは多くなります。従って、シェアは該当のマイナーの貢献についてのより正確な粒度を提供します。シェアは定期的にregularly に転送されるため、サーバは関係クライアント間で将来の収益を公正に分割できるようになり、ハッシュの貢献が正当に評価されます。また、シェアの1つが(偶然にも)既存のBitcoin PoW パズルを解く解決法となりうることから、シェアは転送されます。ですので、マイナーはpoolserver から実際のBitcoin PoW パズルの難度(またはターゲット)を受領する必要はなく、通常、プールによって通知されない限り、Bitcoin ブロックを自らが解いたのかどうか分からないのです。poolserver は受領される各シェアを点検し、ブロック・ヘッダーを再構築し、ヘッダーの二重SHA256 ハッシュ・ダイジェストが既存のBitcoin の難度に関係するターゲットよりも数値的に低い場合、ブロックをbitcoind daemon に転送し、そのブロックはネットワーク全体に普及されます。それぞれのセカンダリのブロックチェーンの難度は異なることから、マージ・マイニングされた有資格のpoolserver は自身が処理する各セカンダリ・ブロックチェーンについてこの点検を行う必要があります。Bitcoin ヘッダーは、RSK ブロックチェーンPoW パズルのための有効な解決策を表す場合、bitcoin ブロック・ヘッダーをrskj に送信し、rskj が関連するRSK ブロックを付加し、有効として、RSK ネットワークに転送します。 

RSK についてですが、poolserver は、処理能力要件の縮減を目的に、Bitcoin ブロックに埋め込まれているタグのSPV プルーフのみをrskj に転送することができます(後ほど詳述します)。 

以下の表には、Bitcoin、RSK、シェアの(2019年6月時点でのパズル解決策の検索のために反復適用されるワンタイムパスワードの平均数の点での)概算での難度が示されています:

解決策の目標ブロック・インターバル解決策を検索するのに反復適用されるワンタイムパスワードの平均数仮定
Bitcoin10分274100% Bitcoin ハッシュレート
RSK30秒
26950% マージ・マイニング
マイニング・プールのシェア3.3秒/ クライアント25220% ハッシュ・パワー、
4000相当数のクライアント
Ckpool ソフトウェア

RSK タグ埋め込み

RSK タグは、採掘されるRSK ブロック・ヘッダーのハッシュ・ダイジェストを包含するバイナリ・データ群で連結される、ASCII 識別子「RSKBLOCK:」から構成されます。先述したように、タグは曖昧さを伴うことなく、特定される必要があります(2種類のRSK ブロックに関連付け可能なBitcoin ブロックを生成する手段はないものとします)。Namecoin は様々なマージ・マイニングされたブロックチェーン用のタグを詰め込むスキームを定義しましたが、スキームが標準化されることはありませんでした。よって、将来の互換性の拡張およびminerpool ソフトウェアのさらなる汎用性の実現を目的に、RSK タグをジェネレーション(generation)トランザクションのどこにでも配置することができます(ブロックの最初のトランザクションで、時に、coinbase とも呼ばれます)。RSK タグはジェネレーション(generation)トランザクションのcoinbase フィールド、または、(一般的に、OP_RETURN ペイロードとして)ジェネレーション(generation)トランザクションのアウトプットのいずれかに配置可能です。以下のダイアグラムは2つの可能性を示します。

RSK タグがCoinbase フィールドに保管される

RSK タグがジェネレーション(generation)トランザクションのアウトプットのいずれかに保管される

現行のRSK タグ・フォーマット

現行のRSK タグ・フォーマット: RSKBLOCK:RskBlockHeaderHash

「RSKBLOCK:」は以下のバイトから構成されるASCII ストリングです:52 53 4b 42 4c 4f 43 4b 3a

RskBlockHeaderHash は、マージ・マイニングのフィールドを伴わない(PoW 解決後に埋められます)バイナリ・フォーマットのRSK ブロック・ヘッダーのKeccak ハッシュ・ダイジェストです。

RSK タグは、アウトプットのスクリプトに組み込まれている際、OP_RETURN OP_PUSHDATA1 opcodes に続いて組み込まれ、Bitcoin UTXO のスパミングを防ぐべきとしますが、コンセンサスによって強制されてはいません。

次の付加的な規制が適用となります:

  • RskBlockHeaderHash のすぐ後からcoinbase トランザクションの終了までのバイト数は128以下とします。
  • 末尾のraw バイトはバイナリ・ストリング「RSKBLOCK:」(52 53 4b 42 4c 4f 43 4b 3a)が含まれないこととします
  • RSK タグが末尾以外のアウトプット・スクリプトに配置されている場合、続くアウトプットのバイト内にRSK タグが偶然現れる確率がごくわずか存在します。poolserver ソフトウェアは、タグを埋め込んでマージ・マイニングのヘッダーの有効性を分断する攻撃として用いられるジェネレーション(generation)トランザクションに不正なBitcoin アドレスが組み入れられる可能性を支配しません。このことは、ジェネレーション(generation)トランザクション自体に収益を分配する(p2pool のような)分散型プールにとって問題となり得ます。従って、RSK タグには最終のアウトプット・スクリプトを用いることが推奨されます。 
  • RSK タグがcoinbase フィールドに配置されている場合、Stratum プロトコルの一部として、ブロックを解くマイナーによって内容が提供される、ExtraNonce2 データ・フィールドに、「RSKBLOCK:」が偶然現れる確率がごくわずか存在します。さらに、マイナーが不正にタグをExtraNonce2 に組み入れる可能性があります。ただし、このことは、poolserver がRSKBLOCK: タグをExtraNonce2 チャンクの後に追加する限り、問題とはなりません。

標準のP2SH アウトプットは34バイトを消費することから、トレイル長の制限(タグを通過するバイトの最大数)は、一般として、タグがcoinbase フィールド内に、あるいは、coinbase トランザクションの最後の4つのアウトプット内に配置される必要があることを指します。 

トレーリング・バイト制限はRSK フル・ノードが以下から構成される圧縮型のSPV プルーフを創造するのを可能にします:

  • Bitcoin ヘッダー(80バイト)
  • Coinbase トランザクションへのMerkle Branch(約320バイト)
  • ミッドステート(mid-state)のSHA-256(coinbase トランザクションのヘッドを消費)(32バイト)
  • RSK タグを含む、coinbase トランザクションのトレイルを包含する64バイトのアライン・チャンク(最大169バイト)。トレイルを使用することで、プロトコルは、トレイルが所定のミッドステート(mid-state)から始まるフリースタートのハッシュとして、coinbase トランザクションに属することを証明するプルーフを利用することが可能となります。
  • 現状、SPV マージ・マイニング・プルーフの最大サイズは780バイトです。

poolsever ソフトウェアはrskj daemon にこのSPV プルーフのフル・ブロックを送信することができます。rskj は、ブロックを受領すると、パースし、必要なフィールドを抽出してSPV プルーフを構築します。

RskBlockHeaderHash は標準RSK ノード(rskj daemon)によって構築されます。  Rskj はコマンド「getwork」を含むマイニングRPC-JSON インターフェースを露出します。poolserver プラグインはrskj daemon をポーリングし、最新のRskBlockHeaderHash 値を維持してpoolserver に提供します。シェア・ハッシュがRSK PoW 解決可能なほど十分に低い場合、poolserver はプラグインに周知し、プラグインがrskj daemon に通知します。 

今後のUpcoming Network Upgrade(ネットワーク・アップグレード)でのマージ・マイニングの改良事項(別名:Armadillo)

今後のリリース1.0.0 では、マージ・マイニングのタグ・フォーマットを改良するネットワーク・アップグレードがフィーチャされます。新たなフォーマットはRSKIP110によって指定されています。  変更により、RSK マージ・マイニング・タグに付加的情報が追加されるため、ユーザーまたは自動化システムはネットワーク健全性について十分な情報に基づく意思決定を下すことができます。また、タグ・モニタリング・ツールを使用することで、RSK ネットワーク・ノードはノードを二重支出から保護するように異常な状況に自律的に対応することができると同時に、将来的には、ノードがネットワークの他のノードに対し、異常状態の簡潔な暗号学的プルーフを送信できるようになります。  

32バイトのブロック・ヘッダー・ハッシュは次のフォーマットの32バイトのバイト・アレイに置き換えられます。

  • マージ・マイニング用ハッシュの20バイトのプレフィックス(PREFIX)
  • 7バイトのCommit-to-Parents-Vector(CPV)
  • 最後の32ブロックの1バイト数のアンクル(NU)(上限:255)。
  • 4バイトのBlock Number(BN)

4つのフィールドはコンセンサスで点検される必要があります。つまり、CPV、NU、BN フィールドは、RSK ネットワークに伝達されない場合であっても、Bitcoin ブロックチェーンを監視するノードが構築されるRSK ブロックの競合する並行チェーンのグラフを作成することを可能とします。  RSK ヘッダーのハッシュは20バイトに切り捨てられるため、タグは依然、32バイトを占め、よって、poolserver ソフトウェアとの互換性が維持されます。

RSK マージ・マイニング・セキュリティ

プルーフ・オブ・ワーク(proof-of-work)を用いたNakamoto(ナカモト)コンセンサスの理論は暗号学セキュリティではなく、熱力学およびゲーム理論のセキュリティに立脚しています。RSK マージ・マイニングは30秒未満で2^80 ハッシュ・オペレーションを算定可能な不合理な攻撃者から安全に保たれます。不合理な攻撃者は、他の攻撃を継続するよりもむしろ、正直に振る舞い、2^80 オペレーション(現行の難度およびRSK ブロック)についてのみを要求する、そしてBitcoin によって完全に資金助成されるRSK ブロックをマージ・マイニングしようとするでしょう。こうした攻撃の他のマージ・マイニング・システムとのわずかながらの構成可能性を放棄して、2^80 ハッシュ・オペレーションを実行しようと画策する不合理な攻撃者は合理的なマイナーの2,000倍のハードウェアを投資する必要があり、その電力消費は資金助成されません。そうした投資は約5兆ドルに相当し(5e12)、つまり、最先端のBitcoin ASICs に相似するハードウェアを使用することとなります。しかし、不合理な攻撃者は同じRSK ブロック高のプルーフ・オブ・ワーク(proof of work)を共有する1つ以上のブロックを生成することができるのみで、攻撃者(1) にとって状況はいっそう不利となり、このことが攻撃者に金銭的な利得を供与しないことを後ほど確認します。従って、5億ドル相当が浪費されるわけです。ですから、80ビットのセキュリティは全てのコンポーネントにわたって効果的にバランスが取られており、攻撃のターゲットとなり得るような、実質的により脆弱なセキュリティを備えたコンポーネントなどないのです。このことを立証すべく、考えられる攻撃のターゲットを手短に、そして非公式に見てみましょう。 

最初に、RSK は非標準の暗号学的トリックを持ったジェネレーション(generation)トランザクションを圧縮します。そして、完全なジェネレーション(generation)トランザクションを提供する代わりに、テイルのみを送信します。それでもなお、このメッセージの正しい暗号学的ハッシュを生成することができるよう、初期状態ではなく、Merkle–Damgård 構築のミッドステート(midstate)からハッシュを開始します。この64バイトのミッドステート(midstate)はテイルに沿うように送信されます。こうしたトリックを安全に使用するには、「freestart collision」レジスタンスと呼ばれる、SHA256 からより強力なプロパティを前提とすることが必要で、少なくとも強引な80ビット水準の安全であることが不可欠で、80ビットは当社のターゲットのセキュリティ閾値となっています。SHA-1(すでに分断されているハッシュ関数)には、約80ビットの強引な水準を要求する認知されている最良のfree-start 攻撃が伴います。一切のfreestart 衝突がSHA256 において検出されず、最良の結果(2) はSHA256 の縮小バージョン(64のラウンドのうちの38、2^65 オペレーションで)での半freestart 衝突の発見に対応することから、RSK マージ・マイニングが安全であると結論付けることができます。留意しておくべきことは、2^80 オペレーションを必要とするSHA256 上の想定されたfreestart 攻撃はSHA256 にとって壊滅的であり、安全な標準のハッシュ関数として役に立たなくしてしまい、とにもかくにも、Bitcoin が危機に直面するということです。しかし、そうした攻撃が発見されれば、RSK プラットフォームは、ブロック・サイズのわずかな増分という代償にて、SPV 圧縮のためにこの暗号トリックが使用されないよう、ネットワーク・アップグレードによって容易に保護されることとなります。  ただし、先述しましたが、攻撃がビットのセキュリティの点でマージ・マイニングを下回る程度の影響しか及ぼさないとしても、費用効率に優れているとは言えないのです。

2番目に、今後の1.0.0 リリースにおけるハッシュ・ダイジェストの切り捨てに関して、新たなスキームはタグ衝突対象に、80ビットのセキュリティ相当を提供します。しかしながら、攻撃は理論的、経済的、そして演算的に不合理です。演算上の複雑性という観点から、80ビットの攻撃は非現実的な記憶量(3) の利用を必要とします。同時に、衝突攻撃のCPU コストはRSK PoW パズル解決にあたってのコストの2000倍です(69 対 80ビット)。 

理論的観点から、ならびにRSK にて用いられるDECOR+ コンセンサスを理由に、衝突が同じRSK ブロック高でのみ生じ得ることから、衝突ブロックはブロック・リワードを共有することとなるため、従前のブロック・リワードがほぼ新規ブロックのリワードと同一である場合、従前のブロックの新規同胞を見つける利点は存在しません。攻撃者は主として、自らと競おうとするでしょう。同じ理由から、参照アンクルに用意される5分間の代わりに、平均30秒以内に実施される必要のあるとする付加的な難度を伴う、新規ブロックの衝突を探し出す利点はありません。

経済的観点に立つと、正直なマージ・マイナーはBitcoin トランザクション手数料を稼ぐため、マージ・マイニングはBitcoin による資金助成を受け、攻撃者は衝突攻撃にあたっての一切の代償を負担する羽目になります。よって、PoW リンケージへの攻撃はほとんど費用効率が良くないということになります。このことですが、RSK ブロック・ハッシュでのハッシュ・ダイジェスト衝突およびcoinbase トランザクション・ハッシュのfree-start 衝突の双方に有効です。 

従って、演算効率性におけるブレイクスルーを勘案しても、タグは今後20年間は安全だと当社は考えます。しかし、演算が急激に変化すれば、将来のネットワークのアップグレードは容易に、ハッシュのサイズをフル32バイトへと再拡張する可能性があります。 

RSK マージ・マイニング・プラグイン開発

以下の図は、RSK マージ・マイニング・プラグインを含む、標準のpoolserver アーキテクチャを示します:

Poolserver および様々なネットワークと接続されたRSK マージ・マイニング・プラグイン

poolserver RSK プラグインは次の2つのJSON-RPC 手法を用いてrskj daemon と通信します:mnr_getwork およびmnr_submitBitcoinBlock  その他の提出方法は処理能力消費を低減するために、rskj node への情報送信を縮小するのを可能にします。rskj daemon のJSON-RPC 接続ポートは構成設定可能で、既定値は4242 です。手法およびデータ交換フォーマットの記述説明の確認先:https://github.com/rsksmart/rskj/wiki/JSON-RPC-APIそうした手法は、rskj ノードに接続する標準インターフェースであるWeb3 インターフェースに属するその他の多数の手法とともに実施されています。 

RSK チームはCoiniumServ、Ckpool、Btcpool、Eloipool といったいくつかのプール実装にあたって完全作動プラグインを開発してきました。その他のプールは自身のプラグインを実施してきました。当社は他のマイニング・ソフトウェア以上にCkpool を推奨していますが、最適化されていて、マージ・マイニングがBitcoin マイニングのマイニング・パフォーマンスに影響を及ぼさないことが立証されているからです。 

間もなく、プールによる効率的で信頼の置けるマージ・マイニング・モジュールに寄与するような、付加的なヒントを備えた、マージ・マイニング・プラグイン開発用ガイドを発表することになっています。

留意しておくべき重要なことですが、RSK はDECOR+ プロトコルを使用しているため、poolserver ソフトウェアは、RSK ペアレント・ブロックが変化したとしても、プール・クライアントによって発見される一切のRSK PoW 解決法を処理し続けることが可能だということです。全ての(アンクルと呼ばれる)競合ブロックは報償されています。

サマリ

Bitcoin マイナーの40~51% が現在、RSK をマージ・マイニングしていて、結果、RSK は地球上、「熱力学」セキュリティ(4) における最も安心できるスマート・コントラクトとなっています。RSK のマージ・マイニングは容易ながらも、RSK ネットワークへの直接攻撃など、最も過酷な状況下でも、poolserver ソフトウェアの通常機能が改ざんされないよう、細心の注意を払う必要があります。RSK Labs は、マイニングのオペレーションの継続性を検証するために、数々の不良や問題状況にて広範に試験されてきたいくつかのプラグインを開発しました。また、マイニング・ソフトウェアの効率性が改ざんされていないのを実証すべく、マイニング・プール・ソフトウェアにて効率性測定も実施されました。当社はプールおよびソロのマイナーに対し、RSK をマージ・マイニングし、Bitcoin スマート・コントラクト革命の一員となるよう奨励しています。マージ・マイニングのオペレーションの設定にあたってヘルプが必要の場合、RSK gitterコミュニティ・フォーラムで当社をお探しください。


(1) もう1つ興味深い攻撃というのは、タグ衝突を使って並行していくつかの競合チェーン用にブロックを生成し(全てが同一の累積型難度)、異なる「最良のチェーン」を備えたその他のマイナー1人1人に供給して同じ最良のチェーンに従事させないようにすることです。そして、他のマイナーとのピアツーピアの直接接続を図ることが必要となります。攻撃者が残りのマイナーたちを結集させたほどのパワーは持っていないと考えられますが、残りのマイナーたちが個々に離散していれば、攻撃者のハッシュ・パワーはとてつもなく強大となります。それでも、こうした攻撃は51% の攻撃をして他のマイナーのブロックを無視するだけ以上に多くの代償を伴います。

(2) https://eprint.iacr.org/2015/350.pdf

(3) シンプルな衝突攻撃によって要求されるRAM メモリは2^80 ハッシュ・ダイジェスト(3,200万エクサバイト)です。Oorschot/Wiener アルゴリズムを使い、単一のプロセッサを想定することで、30秒未満で2^40 連続ハッシュ・オペレーションを実施することが可能で、RAM メモリ要件は32テラバイトにまで縮減される可能性があります。

(4)  ブロックにおいてトランザクションが確定となると、チェーン書換にあたって最低限のエネルギーを誰かが消費しない限り、無効にすることはできません。このエネルギーはPoW ベースのブロックチェーンの「熱力学」セキュリティとして知られています。