Skip to main content Link Menu Expand (external link) Document Search Copy Copied

I found this from my old e-mail as a response to an online interview about Ethereum and Digix back in the summer of 2015. It contains my explanation on how I was able to send the first transaction on Ethereum. I was in competition with the rest of the Ethereum developer community including the core developers who were all wishing to be the first to make a transaction. Iremember everyone waiting for the block in question to materialize and everyone early anticipating who would be the first transaction. Thankfully my strategy and code worked better than theirs did that fateful day.

What is your background and how did u manage to be the first person to send out a transaction on Ethereum?

I have been participating in the Ethereum development community since January 2014 around the time of PoC2 release so I have had a lot of time to read through the wealth of documents, source code, and every single GitHub artifact from the Ethereum project. Because of the block GAS limit strategy of slowly introducing transactions on the blockchain that the Ethereum Developers have planned at launch I knew that the most basic transaction would require a minimum of 21000 GAS. In addition to needing GAS to run transactions on Ethereum one could optionally set a GAS Price or the amount of Ether per unit of GAS one would be willing to pay to the miners. This basically allows users to negotiate the price for each transaction and miners can choose to accept or ignore them for more higher valued transactions. There is a suggested minimum GAS price which is set by a pricing oracle and recalculated based on a moving average and the initial value was hardcoded at 50 shannons (0.00000005 ETH). With this knowledge I decided to create a simple web3.js based script that would constantly check the GAS limit value of the current block and if the value was greater than 21000 then the script would send a transaction with 21000 GAS and offered 50 szabo (0.00005). A few days prior to the fateful block number I analyzed the Ethereum P2P network using a tool I wrote in go based on p2p.go code that basically allowed me to determine the network paths nearest the most active miners by spamming FindNode - 0x03 and Neighbors - 0x04 to increase my probability in the gossip network (this was most likely overkill). With the most valuable transaction on the first block where transactions can be made the miners easily picked up my transaction. The first transaction with an embedded message payload required a little more GAS to run so I had to wait until the current block’s GAS limit was enough and so on.