Satoshi Nakamotoのgenesisブロックメッセージ
ブロックチェーンのgenesisブロックといわれるSaoshi Nakamotoが作った一番最初のブロックのに刻んだメッセージをプログラムでみてみましょう。 ちなみにこのgenesisブロックは、libbitocoinのソースに組み込まれているそうです。
mastering bitcoinのソースをちょっと書き換えて、libitcoinの最新バージョンに対応してみました。
#include <iostream> #include <bitcoin/bitcoin.hpp> using namespace bc; int main() { //genesisブロックの取得 chain::block block = chain::block::genesis_mainnet(); //ブロックの最初のトランザクションの取得つまりcoinbaseトランザクションの取得 chain::transaction coinbase_tx = block.transactions().at(0); assert(coinbase_tx.inputs().size() == 1); const chain::transaction::ins& coinbase_inputs = coinbase_tx.inputs(); const chain::input coinbase_input = coinbase_inputs.at(0); //scriptをrawデータに変換 const chain::script scr = coinbase_input.script(); const data_chunk raw_message = scr.to_data(false); std::string message; message.resize(raw_message.size()); std::copy(raw_message.begin(), raw_message.end(), message.begin()); // genesisブロックメッセージの表示 std::cout << message << std::endl; return 0; }
コンパイルして実行すると...
$ ./satoshiwords EThe Times 03/Jan/2009 Chancellor on brink of second bailout for banks
訳すと タイム紙 2009年1月3日 大臣は銀行への二度目の救済を決めようとしている
おお、これがSaoshi Nakamotoのメッセージか! 既存の通貨の脆弱な点をニュースを取り上げる照ところがおもしろい。
ここからビットコインのすべてが始まった。