マイニングとビーコン

マイナーは自分の通貨を、ビーコンが生成する値がどの範囲になるかX〜Yというレンジに賭ける
ビーコンが生成した値によってマイナーに返される

ビーコンについて
負け続けたマイナーが次のブロックハッシュ値を決めるNonceを送信できる可能性が高くなる(後述
それによって決まったブロックハッシュをビーコンが生成した値とする

問題点
トランザクション量が相当増える

普通のマイナー
XTFを持っていない場合は普通にhashがTarget未満になるnonceを探す
持っているユーザはXTFを賭ける。勝ったら二倍になるし、負け続けたらtargetが上がる(difficultyが下がる)ので賭けるインセンティブがある。

攻撃者
X〜Yという全てのレンジに別のアドレスで賭け続けることで、必ず負け続けるアドレスが現れる
そのアドレスを使って、P〜Qというレンジにおさまるhashを求める
P〜Qというレンジに失ったXTFより多く貰えるように賭ける
これができるユーザ同士がマイニングを占拠するようになる

暗号学的ビーコン

この要素を含めたい

スマコン

ATMのように預ける機能

LightningNetworkを使う

既存のLNを参考に考える
オンラインや店頭決済の時に接続するサーバを指定すればいい

忘れてた

FrontendでもRequestの署名の検証

ネットワークがネック

ハイパフォーマンスにするには、ネットワーク通信回数を減らさなければならない
ならば、Frontendはトランザクションをまとめて送信できるようにすればいいのては

トランザクションプールの必要性

トランザクションが現在不正な場合どうしておくか
トランザクションプールがある場合:
 存在しないoutHash(UTXO)から送金しようとするTXが来たとする
 現在は保留しておき、そのoutHashができたとき自動的に送金される
 メリットは、便利・これ自体がスマートコントラクトのように動くか?
 デメリットは、マイナーがTXを保存しておく動機がない(Tofucashの場合はマイナーではなくBackendであり、動機は少額の手数料さえあればよいか)。
 存在しないTXを受理できるなら、適当なTXを送信する攻撃が可能になってしまう。→すでに使用済みのアドレスのみ利用可能で、1アドレスに1つの不正(予約)TXを保存可能とすればいいかも
トランザクションプールがない場合:
 そんなに困らない?
 すぐに承認されるから大丈夫?

ブロック作成時にすぐにファイル書き込みするのではなく、Mapで管理して、Xブロック過ぎたら保存するようにするべきか。
そうならば、いずれにせよTXを保存するMapは必要か。

UTXOが使えなくなるタイミング

Frontendにアクセスが来て、正しいUTXOだとVerifyされたとき
Frontend同士で使えないUTXOを共有してから
BackendへUTXOを使用したTransactionを送信する

フォーク

ソフトフォークは、ほぼ同時にブロックの生成が行われたときにしか起きえない
そのとき、Backendは複数のFrontendへ、複数のWorkを送信する
Frontendは複数のWorkを受け取ったら、接続されている複数のクライアント(マイニング層)へ別々のハッシュを渡す
マイニングが完了し、Frontendへ送信する
Frontendはどのハッシュか見て検証し、Backendへ送信する。この際ハッシュはXブロック前まで保存してある。
Backendは、どのハッシュか見て検証し、新しいブロックとする。この際Xブロックよりも前のハッシュ値ならば、リジェクトする。

クイズ

ツイッターのハッシュタグで検索して
同じ答えが一番多いものを選んで
一番早く答えた人にポイント入る
ログインする必要はない
ログインしてポイント確認でき、ランキングがみれる