クリプト

ナカモトサトシ論文内Cソース

handa's icon'
  • handa
  • 2020/01/30 13:00
Content image

 ALISでは、ナカモトサトシ論文を読んだことのある人は多いと思います。論文に載っているプログラムを動かしたことはありますか?

 

プログラムの説明(論文より抜粋)

 攻撃者が正当なチェーンよりも速いスピードで偽のチェーンを作成しようとするシナリオを考えてみる。仮にそれに成功したとしても、コインを無から創り出したり攻撃者自身が所有したことのないコインを盗んだりというようにシステムを自由に操れるようになるわけではない。

 攻撃者が良心的なチェーンに追いつく確率は以下のように計算することができる。

p = 良心的なノードが次のブロックを見つける確率

q = 攻撃者が次のブロックを見つける確率

qz= 攻撃者がzブロックの遅れから追いつく確率

Content image
式1

 攻撃者が追いつくことのできる確率を求めるには、彼の行うことのできた仕事量あたりのポアソン分布密度を、その時点での追いつくことができた確率で掛ける。分布の無限テールの加算を避けるために整理すると、以下となる。

Content image
式2

式2をCで書いたものが、以下のソースになります。

 

Cソース

 AttackerSuccessProbability関数はナカモトサトシが書いたものです。main関数は筆者が書き加えました。

#include <stdio.h>
#include <math.h>
double AttackerSuccessProbability(double q, int z)
{
    double p = 1.0 - q;
    double lambda = z * (q / p);
    double sum = 1.0;
    int i, k;
    for (k = 0; k <= z; k++)
    {
        double poisson = exp(-lambda);
        for (i = 1; i <= k; i++)
            poisson *= lambda / i;
        sum -= poisson * (1 - pow(q / p, z - k));
    }
    return sum;
}
int main()
{
    int z;
    double sum, q = 0.1;
    for (z = 0; z <= 10; z++) {
        sum = AttackerSuccessProbability(q, z);
        printf("z=%4d P=%lf\r\n", z, sum);
    }
}

実行結果

Content image

論文の11章「計算」に書かれている結果と同じです。

Content image

Windows10、Visual Studio 2017でコンパイル・実行しました。

 

以上

Supporter profile iconSupporter profile iconSupporter profile icon
Article tip 3人がサポートしています
獲得ALIS: Article like 32.60 ALIS Article tip 137.67 ALIS
handa's icon'
  • handa
  • @handa
コンピュータシステムの開発、子供向けプログラミング教室などを行っています。

投稿者の人気記事
コメントする
コメントする
こちらもおすすめ!
Eye catch
クリプト

クリプトスペルズで入手したMCHCを引き出す方法

Like token Tip token
196.20 ALIS
Eye catch
クリプト

17万円のPCでTwitterやってるのはもったいないのでETHマイニングを始めた話

Like token Tip token
46.60 ALIS
Eye catch
クリプト

2021年1月以降バイナンスに上場した銘柄を140文字以内でざっくりレビュー(Twitter向け情報まとめ)

Like token Tip token
38.10 ALIS
Eye catch
クリプト

UNISWAPでALISをETHに交換してみた

Like token Tip token
40.40 ALIS
Eye catch
クリプト

ジョークコインとして出発したDogecoin(ドージコイン)の誕生から現在まで。注目される非証券性🐶

Like token Tip token
38.31 ALIS
Eye catch
クリプト

CoinList(コインリスト)の登録方法

Like token Tip token
15.55 ALIS
Eye catch
クリプト

約2年間ブロックチェ-ンゲームをして

Like token Tip token
61.20 ALIS
Eye catch
クリプト

【第8回】あの仮想通貨はいま「テレグラム-TON/Gram」

Like token Tip token
69.90 ALIS
Eye catch
クリプト

【初心者向け】$MCHCの基本情報と獲得方法

Like token Tip token
32.32 ALIS
Eye catch
クリプト

【初心者向け】JPYCを購入して使ってみました!

Like token Tip token
30.03 ALIS
Eye catch
クリプト

Eth2.0のステークによるDeFiへの影響を考える。

Like token Tip token
44.10 ALIS
Eye catch
クリプト

コインチェックに上場が決まったEnjin Coin(エンジンコイン)コインを解説

Like token Tip token
21.49 ALIS