.. _examples_satoshiwords:

examples/satoshiwords.cpp
#########################

Display the genesis block message by Satoshi.

::

    #include <bitcoin/bitcoin.hpp>
    using namespace bc;
    
    int main()
    {
        // Create genesis block.
        block_type genblk = genesis_block();
        // Genesis block contains a single coinbase transaction.
        assert(genblk.transactions.size() == 1);
        // Get first transaction in block (coinbase).
        const transaction_type& coinbase_tx = genblk.transactions[0];
        // Coinbase tx has a single input.
        assert(coinbase_tx.inputs.size() == 1);
        const transaction_input_type& coinbase_input = coinbase_tx.inputs[0];
        // Get the input script (sometimes called scriptSig).
        const script& input_script = coinbase_input.input_script;
        // Convert this to its raw format.
        const data_chunk& raw_block_message = save_script(input_script);
        // Convert this to an std::string.
        std::string message;
        message.resize(raw_block_message.size());
        std::copy(raw_block_message.begin(), raw_block_message.end(),
            message.begin());
        // Display the genesis block message.
        std::cout << message << std::endl;
        return 0;
    }

