ScriptSig (coinbase) structure of the Genesis Block

0 0

A name for the transaction that produces new bitcoins. A block consists of one coinbase minting transaction, among other things. (See Block ) Initially each new block awarded 50 bitcoins. The minting rate is programmed to decrease by half approximately every four years upon the verification of 210,000 blocks and at this writing sits at 25 bitcoins. The minting rate is programmed to reach zero when the total supply reaches 21 million bitcoins. The coinbase transaction also serves to claim all the fees in the transactions collected in the block. Both mining and fees motivate persons to create blocks and hence keep the system alive. Also refers to the input script that generates new bitcoins. The input of such transactions contains some arbitrary data where the scriptSig would normally appear. This data is sometimes called the coinbase. The Nakamoto genesis block transaction contains a reference to a The Times article from January 3, 2009 to prove that more blocks were not created...

0 0
0 0

Who created the Genesis Block?

Where in the world was the computer that mined it running ?

How many computers did Satoshi used to mine the genesis block?

Why did it take 6 days to be created? Did Satoshi rested for one day afterwards?

If you keep reading, I will lead you to a quest to find the answers to these questions using software archeology.

The Genesis Block

Genesis block header hash is this (hex):

Note that it starts with 43 zero bits. Why? The block target difficulty was much lower (around 32 bits), so we can assume Satoshi did this on purpose.

At that time (2009) GPU mining was probably not already implemented (although maybe Satoshi did think about it). GPU mining began to be used around 2011. The first Google trends reference is on April 2011 (

So Satoshi was doing...

0 0

I'm going to let them keep running, but right now I have two Peershares daemons running on one AWS m1.small instance.

Node 1:

ubuntu:~/.ppcoin$ ./ppcoind getinfo { "version" : "v0.3.0ppc-51-g38f5dde-beta", "protocolversion" : 60003, "walletversion" : 60000, "balance" : 0.00000000, "newmint" : 0.00000000, "stake" : 0.00000000, "blocks" : 0, "moneysupply" : 0.00000000, "connections" : 9, "proxy" : "", "ip" : "", "difficulty" : 0.06249911, "testnet" : true, "keypoololdest" : 1393812941, "keypoolsize" : 101, "paytxfee" : 0.01000000, "errors" : "" } ubuntu:~/.ppcoin$ ./ppcoind getmininginfo { "blocks" : 0, "currentblocksize" : 1000, "currentblocktx" : 0, "difficulty" : 0.06249911, "errors" : "", "generate" : true, "genproclimit" : -1, "hashespersec" : 330830, "networkghps" : 0.00894772, "pooledtx" : 0, "testnet" : true }

Node 2:

ubuntu:~/.ppcoin-node2$ ./ppcoind getinfo { "version" :...
0 0
0 0

Forknote give you the ability to create your own genesis coinbase transaction hex if you need.

For coins without premine

$ ./forknoted --config-file configs/imaginary_blockchain.conf --print-genesis-tx config path exist Modify this line into your coin configuration file as is: GENESIS_COINBASE_TX_HEX=010a01ff0001ffffffffffff0f029b2e4c0281c0b02e7c53291a94d1d0cbff8883f8024f5142ee494ffbbd0880712101fc680aba69fb5028ade093fb1186ca9de4e65a369ca13ae75fdeef9e952b9449

For coins with premine

$ ./forknoted --config-file configs/imaginary_blockchain.conf --print-genesis-tx --genesis-block-reward-address FXhKiPxMdJ6LL1iqkEDWbk1BiiQ7SzHY1b3L9KqqPmP95e9toTXKvQSVGePtjfoDUhMPqSEKFhzymA84o6fGPhQiUYP92rT --genesis-block-reward-address FPMfUYtRHcZJdL2nLDH7zi2bZUMzgdMPm8kHibeV4qLh8pfsvZsBF6eiHH8T2QkdZm4viA2F9S4YvUk2PXodvxRPDYVvXyR config path exist outs: 922337203685477580 outs: 922337203685477580 Modify this line into your coin configuration file as is:...
0 0


"hash": "97ddfbbae6be97fd6cdf3e7ca13232a3afff2353e29badfab7f73011edd4ced9",
"in": [
"prev_out": {
"hash": "0000000000000000000000000000000000000000000000000000000000000000",
"n": 4294967295
"raw_scriptSig": "04ffff001d0104404e592054696d65732030352f4f63742f32303131205374657665204a6f62732c204170706c65e280997320566973696f6e6172792c2044696573206174203536",
"sequence": 4294967295
"lock_time": 0,
"out": [
"raw_scriptPubKey": "41040184710fa689ad5023690c80f3a49c8f13f8d45b8c857fbcbc8bc4a8e4d3eb4b10f4d4604fa08dce601aaf0f470216fe1b51850b4acf21b179c45070ac7b03a9ac",
"value": "50.00000000"
"size": 199,
"ver": 1,
0 0
keyboard_arrow_leftBack BIP: 34 Title: Block v2, Height in Coinbase Author: Gavin Andresen Status: Final Type: Standards Track Created: 2012-07-06


Bitcoin blocks and transactions are versioned binary structures. Both currently use version 1. This BIP introduces an upgrade path for versioned transactions and blocks. A unique value is added to newly produced coinbase transactions, and blocks are updated to version 2.


Clarify and exercise the mechanism whereby the bitcoin network collectively consents to upgrade transaction or block binary structures, rules and behaviors. Enforce block and transaction uniqueness, and assist unconnected block validation.


Treat transactions with a version greater than 1 as non-standard (official Satoshi client will not mine or relay them). Add height as the first item in the coinbase transaction's scriptSig, and increase block version to 2. The format of the...
0 0


What you'll learn

By the end of this tutorial, you'll see the first block on the Bitcoin blockchain, created by Satoshi Nakamoto. You'll also see how Bitcoin Core stores blocks on your disk.

The Genesis Block

The first block on the Bitcoin blockchain—block 0—is called the Genesis Block. According to the timestamp in the block header, it was mined on 3 Jan 2009 at 18:15:05 UTC, although (as you'll learn) it contains more proof of work than we'd expect and the mining was only started on January 3rd.

Let's take a look at it on the disk of your computer by running the following commands:

cd ~/.bitcoin/blocks hexdump -n 255 -C blk00000.dat

The cd command changes your directory into the Bitcoin Core block data directory. The hexdump command above displays the first 255 bytes of the file. It should look like this:

00000000 f9 be b4 d9 1d 01 00 00 01 00 00 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00...
0 0
0 0

Page 3 of 3

001|package com.waferthin.bitcoinj; 002| 003|import; 004|import; 005|import; 006|import java.util.concurrent.ExecutionException; 007|import java.util.concurrent.Future; 008| 009|import*; 010|import; 011|import; 012|import; 013| 014|public class FetchGenesisBlock { 015| 016| public static void main(String[] args) { 017| 018| // work with testnet 019| final NetworkParameters netParams = NetworkParameters.testNet(); 020| 021| // data structure for block chain storage 022| BlockStore blockStore = new MemoryBlockStore(netParams); 023| 024| // declare object to store and understand block chain 025| BlockChain chain; 026| 027| try { 028| 029| // initialize BlockChain object 030| chain = new BlockChain(netParams,...
0 0


A transaction is a signed section of data that is broadcast to the network and collected into blocks. It typically references previous transaction(s) and dedicates a certain number of novacoins from it to one or more new public key(s).

Currently there are a few transaction types possible.

User operation

This transactions are typically used to redeem novacoins from unspent inputs. It generally references unspent input(s) and creates a new output(s) with specified value(s) an destination(s).


Coinbase have a single input, and this input has a 'coinbase' parameter instead of a scriptSig. The data in 'coinbase' can be anything; it isn't used. Novacoin puts the current compact-format target and the arbitrary-precision 'extraNonce' number there, which increments every time the Nonce field in the block header overflows. The extranonce contributes to enlarge the domain for the proof of work function.

This transactions...

0 0


(Mastering Bitcoin) Transactions are the most important part of the bitcoin system. Everything else in bitcoin is designed to ensure that transactions can be created, propagated on the network, validated, and finally added to the global ledger of transactions (the blockchain). Transactions are data structures that encode the transfer of value between participants in the bitcoin system. Each transaction is a public entry in bitcoin’s blockchain, the global double-entry bookkeeping ledger.

A transaction may have no recipient, or it may have several. The same can be said for senders! On the Blockchain, the sender and recipient are always abstracted with a ScriptPubKey, as we demonstrated in previous chapters.

If you use Bitcoin Core your Transactions tab will show the transaction, like this:

For now we are interested in the Transaction ID. In this case, it is f13dc48fb035bbf0a6e989a26b3ecb57b84f85e0836e777d6edf60d87a4a2d94

0 0
0 0