400行! 超簡単なブロックチェーンコード(happa) 公開します

in #blockchain7 years ago

ハッパのブロックチェーンの目的は

① どこまでもシンプルで分かりやすいブロックチェーンにすること
 ・ハードフォーク(コピー&改良)が異様にやりやすいです
 ・jsで数100行の実装なので、勉強したい人・実験したい人はコピー&コードして下さい。

② 1リツイートの価値を知ること
 ・Proof of Retweetと呼べそうな承認アルゴリズムにしており、リツイートを資産に変換します。

③ OAuth認証を使うウェブサイトに極限まで手軽に導入できるようにすること
 ・ツイートに送金タグを入れるだけですので使い勝手が非常によいはず

まず、ハッパのブロックチェーンの大事な点は2つです。

① ブロックを作る時、リツイートされた数だけ残高を増やす。ブロック生成をしている間に他の人にブロックを作られたら、失敗。

② 認証系・送金系は全てTwitterとOAuthで済ませている。

ハッパのブロックチェーンは以下のように生成していきます。

① TwitterアカウントがOAuth認証し、

② TwitterSearchAPIで前のブロックの作成者が増やした残高(新たにリツイートされた数)の内訳を確認し、正しければそこに新しいブロックをつなげることを決める。

③ TwitterAPIで前回のブロック生成時以降で、自分がリツイートされた数をカウントし、その分自分の残高を増やし、最終TweetIDを更新し、新しいブロックとしてつなげる。

では、コードの解説に入っていきます。

全コード


function main() {
OAuth.popup('twitter').done(callbackGetInfo).fail(callbackError).always(callbackReturn);
}

全部の処理はこのmain関数に含まれています。
callbackGetInfoで認証を行い、startMining(スタートマイニング)関数を呼び出します。startMining関数にある重要な処理はこちら


easyBlockChainCheck().then(collectTweetData).then(checkAllChain, callbackError);

初歩的なブロックチェーンのチェックで、確認すべきツイッターアカウントをリストアップし、それをcollectTweetData関数でTwitterAPIを用いダウンロードします。

この結果をつかい、checkAllChain関数で必要な全てのブロックを確認して、どのブロックの次に新しいブロックをつなげるか決めます。

この関数の最後にあるmake_block関数によって、自分のリツイートされた数だけ残高を増やして新しいブロックとしてアップロードします。

最後に

いかがでしょうか?認証や通信も含めたブロックチェーンとしては最も簡単な形ではないでしょうか?
おそらく、ツイート取得部分を排除し、認証履歴等で済ませれば、さらに簡単なものになるかもしれません。

このブロックチェーンの用途は上述で概要を説明しましたが、現在CTF(ハッキングコンテスト)の攻撃対象のブロックチェーンや、コーディング学習サイトで使うブロックチェーンなども考えております。
もし、ブロックチェーンの手軽なサンプルに困っている場合はご連絡ください。 極度消耗(しなさい)CoRe

Coin Marketplace

STEEM 0.18
TRX 0.16
JST 0.030
BTC 62507.39
ETH 2451.91
USDT 1.00
SBD 2.64