This article talks about what goes into a bitcoin transaction. I might not be exactly right, but this is based off of tinkering with the . Feel free to correct me if I’m wrong. bitcoinjs library The repository I’ve used for testing is available . Use if you’re trying out stuff from this article. here this release I’m just logging out stuff that I think can explain something more about how the system works. Not much of a difference from the actual , but for all production cases use the and that too only since master branch is used for development. bitcoinjs-lib bitcoinjs-lib repo stable releases A list of unconfirmed transactions available in Blockchain.info’s mempool can be viewed . There are newer and more transactions added each second. here For all purposes of this article,unless otherwise mentioned, we shall examine . this transaction The agenda for this article is to walk you through the process of verifying the presence of the transaction in the block, contents of the transaction and then creating a similar transaction. Prerequisites: Install , and any text editor ( ) Nodejs Git Bash Atom Clone this repository Change directory and install packages $ git clone github.com/prahaladbelavadi/bitcoin-js-testing$ cd ./bitcoin-js-testing$ npm install Navigate into the blocks directory here and run the following command $ cd ./myTest/blocks$ node blocks.js It logs out the transaction in its hex format, the input script and the block’s height. Unconfirmed transactions do not have a block height since they haven’t been included in a block (yet). In the hex format of block , we can confirm that the transaction exists. 498303 Block in Hex 498303 We shall dissect this transaction. Transaction Hex: 010000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff50037f9a07174d696e656420627920416e74506f6f6c685b205a2b1f7bfabe6d6d36afe1910eca9405b66f97750940a656e38e2c0312958190ff8e98fd16761d220400000000000000aa340000d49f0000ffffffff02b07fc366000000001976a9148349212dc27ce3ab4c5b29b85c4dec643d764b1788ac0000000000000000266a24aa21a9ed72d9432948505e3d3062f1307a3f027a5dea846ff85e47159680919c12bf1e400120000000000000000000000000000000000000000000000000000000000000000000000000 We shall use to decode the transaction. Blockcypher Take the transaction hex and paste into the decoder. Coinbase Transaction decoder The transaction decoder shows that the transaction hex that was relayed to the network contained the following: Transaction input Script in Hex Output address Output script and type PS: This does not contain an input address since it is a coinbase transaction. If we take a look at decoded from block this transaction 498303 Valid spend transaction decoded We can see that it has a previous input address linked to the transaction hash of the previous recorded transaction on the blockchain. Each output needs to have a corresponding input and its signature to prove that it can indeed spend the bitcoin, unless its a coinbase transaction. Each explorer displays and keeps track of metrics in its own different way based on their local node or whatever they choose to track. Random bitcoin transaction decoded on blockchain.info decoder We can observe in ’s , it shows different operations being performed on it as well. blockchain.info decoder In upcoming articles, I intend to show how to compose your own transactions and relay it to the network. Since I’ll constantly be trying out new stuff on my fork of bitcoinjs-testing repository and that could conflict with your experimenting, I packaged a release for the sole purpose of this article. It is available . It shall contain code at the time of publishing this article. here Feel Free to fork, play around and try out new stuff with it. References: https://github.com/prahaladbelavadi/bitcoin-js-testing/releases/tag/0.01 Cheers!