#はじめに
ビットコインでは,ブロック生成間隔が長いこととブロックサイズが限定されていることが原因で承認スループットが他の決済システムと比べ非常に低くなっていることはこれまでに多くの人が指摘してきたと思います.(ビットコインのスケーラビリティ問題)
単純にブロック生成間隔を短くし,ブロックサイズを大きくすれば問題は解決するように思えますが,そうすると安全性の面で支障をきたす可能性が大きくなります.("Information propagation in the Bitcoin network"等を参照してください.)この論文でも言われていますが,ブロック伝搬遅延を小さくすると安全にブロック生成間隔を短くできるよってことが分かっています.ブロック伝搬遅延のことが指摘されて以来,多くのエンジニア,学者が伝搬遅延を下げる工夫をしてきました.その結果2019年現在ブロック伝搬遅延は非常に小さくなってきています.BitnodesのAPIを叩くと,ブロック伝搬遅延が現在どんなかんじかわかったりします.ってなわけで,現在のブロック伝搬遅延にあった最適なパラメータ(ブロック生成間隔,ブロックサイズ)を今回計算してみたいと思います.
#現在のビットコインのパラメータ
ブロック生成間隔:約10分
ブロックサイズ:約1MB
#使用したAPI
参考にしたサイト,論文
BitcoinStats
On Scaling Decentralized Blockchains
最適なパラメータの計算式
$$ (X%実行スループット):= \frac{(ブロックサイズ)}{(X%ブロック伝搬遅延)}
$$
$$ \frac{(ブロックサイズ)}{X % 実行スループット} < (ブロック生成間隔) $$
Xは公平性を考慮して90にします.
#手に入った情報
Blockchian.infoで2019年ブロック高558400~559400(2019/1)の平均ブロックサイズは1.065MB
Bitnodesで2019年ブロック高558400~559400(2019/1)10%ブロック伝搬遅延平均1132ms
bitcoinStatsで2017年1月~3月90%ブロック伝搬遅延平均11.77s
Blockchain.infoで2017年1月~3月の平均ブロックサイズは約950KB
#結論
2017年時点で90%実行スループットは645Kbps.
つまり,上の式に当てはめると,ブロックサイズが1MBで固定の場合,ブロック生成間隔は1s.
ブロック生成間隔を10分で固定すると,ブロックサイズは387MB.
2019時点で10%実行スループットは7272Kbps.(90%実行スループットは計算できませんでした.)
#感想
Bitnodesでは上位1000ノードのブロック伝搬遅延の情報しか提供していないので,
10%実行スループットしか計算できませんでした.
90%実行スループットが計算できるようになったらいいのになー.
bitcoinStatsの出してるデータが本当に結構正しいなら,ビットコインのパラメータを変更して,物凄い性能あげられますね.