In case you want to try creating the transaction without reading the book, follow these steps.
Create a new address in your Bitcoin Core wallet
Send a 0.0001 BTC transaction to your new address.
Wait for the transaction to confirm.
In the Console, enter "listunspent"
Find the output associated with the address you just created. You will be using this output to pay the transaction fee for the transaction you are creating. The "txid" is the SHA256 hash of the transaction that you used to send the 0.0001 BTC to the address. The "vout" is the index of the 0.0001 BTC output in that transaction.
In the Console, use createrawtransaction to create a template for your final transaction. In the following example replace YOURINPUTTXID with the txid of the 0.0001 BTC output which you found with the listunspent command. In the following example replace YOURVOUT with the vout value of the 0.0001 BTC output which you found with the listunspent command. In the following example replace ANYVALIDADDRESS with any valid bitcoin address, it doesn't matter which address since this portion of the transaction will be eventually replaced with the SHA512 hash instead.
createrawtransaction [{\"txid\":\"YOURINPUTTXID\",\"vout\":YOURVOUT}] {\"ANYVALIDADDRESS\":0.00010000}
You will receive a string of approximately 170 hexadecimal charcters (about 85 bytes). This is an unsigned raw transaction. Do not sign and send this transaction yet. If you do, you'll simply be sending 0.0001 BTC to the address you used for ANYVALIDADDRESS without a transaction fee.
We will not be changing the first 47 bytes (94 characters) at all.
The first 46 bytes (92 characters) define the input that is being used to fund the transaction. You should find the following:
The first 4 bytes (8 characters) of the raw transaction are the transaction version number. The value of these 4 bytes should be 01000000. If it isn't then you've done something wrong.
The next 1 byte (2 characters) is the number of inputs in the transaction. Since we created the transaction with only one 0.00001 BTC input, the value of this byte should be 01. If it isn't then you've done something wrong.
The next 32 bytes (64 characters) will be YOURINPUTTXID with the bytes in reversed order.
The next 4 bytes (8 characters) are the YOURVOUT value with the bytes in reversed order.
The next byte (2 characters) will be the length of the signature. Since this transaction is not yet signed, the current signature length is 00
The next 4 bytes (8 characters) are the sequence number. The value of these 4 bytes should be ffffffff. If it isn't then you've done something wrong.
The next byte (2 characters) immediately following the ffffffff is the number of outputs. Since we created the template transaction with only one output, the value of this byte should be 01. If it isn't then you've done something wrong.
The next 8 bytes (16 characters) is the value in satoshis being sent to ANYVALIDADDRESS with the bytes in reverse order. Since we created the template sending 0.0001 BTC to the address, the value of these 8 bytes (16 characters) should be 1027000000000000. If it isn't then you've done something wrong.
Change the value of these 8 bytes to 0000000000000000. If you don't do this step you'll still have a transaction that you can broadcast, but it won't be paying any transaction fee (so it may take a VERY long time to confirm, and it will permanently lock away 0.0001 BTC in an output that will never be spendable.
Skipping ahead for a moment, the last 4 bytes (8 characters) are the locktime on the transaction. This should be all zeros. If it isn't then you've done something wrong. We won't be changing these 4 bytes (8 characters) either. We'll just leave them as zeros.
Everything between the value being sent and the locktime is the list of outputs of the transaction. In this case we created only one output.
You will be replacing this output with a script that stores your SHA512 hash.
Remove the output list from this template raw transaction (including the 7689 that it will start with and the 88ac that it will end with). Note that if the output list that you are removing does not start with 7689 and end with 88ac, then you've done something wrong.
In place of the bytes that you've just removed, you'll first place 3 bytes (6 characters) with the value of 426a40That first byte (42) is the hexadecimal representation of the length of the script that you are adding.
That next byte (6a) is the OP_RETURN byte code. It indicates to the bitcoin network that this output is data and that it is not spendable.
That third byte (40) is the hexadecimal representation of the length of the data that you are storing in the transaction (40 is the hexadecimal representation of the decimal number 64 and there are 64 bytes in a SHA512 value).
Following that you'll put the 64 bytes (128 characters) of your SHA512 hash.
The locktime (00000000) should be following your SHA512 hash
Once you've built this transaction, you can post it here (or send it to me in a PM) and others (or myself if you send it via PM) can verify for you that you haven't made any mistakes.
If everything is correct, then you'll be able to use signrawtransaction to sign the transaction and sendrawtransaction to broadcast it to the network.