カテゴリー: C#

ドキュメント書く

Javadoc

仮想通貨とブロックチェーン

定期支払いコントラクトを作る 作らないとブロックチェーンじゃなくて仮想通貨の作成になってしまう?

支払い時にPINが必要になるような鍵の生成ができたら

鍵の生成というより保管か
Tofucashの場合はクライアントでAES暗号化しておけばよいかもしれない
送金時にPINを必要とするならば、ユーザはアドレスを変えたいと思うようになるのでは。
もちろんPINがあるだけで送金できるわけではないが。
他人のTXの秘密鍵を見つけてもPINがなければ送金できないのであれば安全性も高まる。
PINを複数回間違えるとそのノードは一定時間接続を拒否されるなどの仕様であれば、秘密鍵だけ盗まれてもPINだけ盗まれても大丈夫
だから一度PINを送信しても、すぐにセキュリティが侵害されるわけではない

新しい仮想通貨を作るとき

Tofucashの場合
名前を決める Tofucash XTF
ブロック生成時間を決める 未定
difficulty再調整間隔 1ブロックごと(DGW)
ブロック報酬 未定(1XTFの価値を考えてから決める)
半減期 未定(1XTFの価値を考えてから決める)
ポート番号 未定(ほかの仮想通貨と被ってもよいが、サービスとは被らないように 例えばプロキシなどと被ると無駄なアクセスが来る)

参考URLでは、litecoinのソースを置換していくところがあるが、Tofucashは0から作られているので関係ないが、行っていることを一応まとめる
LitecoinやLTCをTofucashXTFに置換
ポートを変更
パラメータを変更(上記で書いたもの)
トランザクション承認カウント
genesisブロックの用意(テストネット用ではnonceを変えるなどの工夫が必要)
アドレス生成時に付加するマジックナンバーの変更(https://en.bitcoin.it/wiki/List_of_address_prefixes)
ハードコーディングされたチェックポイントの削除
ロゴの用意

参考
https://bitcointalk.org/index.php?topic=225690.0

実装参考

DarkGravityWave3(DGW)
password-hashing.net
Proof-of-Stakeのメリットデメリット

やること

レポート
answer/question Script
signatureを含めて送信
pubkも含める
FrontendでsignatureをpubkでverifyしてtxhashをBackendへ送信
BackendではtxのトランザクションをJSONにして確認・・・ここが面倒か?JSONのまま送信したほうがいいか?
addtransactionが正しく動いているか検証
他、マイニング報酬をutxoへ

改良

TXのsignatureはRequestクラスをJSONにしたものをsignatureとする。
そうすれば、クライアントはJSONを署名するだけでいい。

プロキシ拒否参考?

https://oshiete.goo.ne.jp/qa/1220879.html

懸念

IPアドレスとNonceの結合でマイニング数を制限(例えば「0.0.0.0」と「Nonceは1ビットのみ1にできるつまり2^n」→0000….000 0001000)
これだと、プロキシを通ってきたリクエストはプロキシのIPアドレスになるから、自分のIPとプロキシのIPでマイニングできてしまう。
今は実装はしないがプロキシ経由でのアクセスを拒否できるようにしたい

todo

HTTPSサーバーでリクエストを受けてMiningManagerのworkオブジェクトをJson化して返す