EarthBucks was launched on November 4, 2024. There will be 42 million EBX and there was no pre-mine. All EBX has been fairly mined by users with proof-of-work (PoW) on consumer GPUs. The distribution schedule mirrors Bitcoin, except times two: there are 100 EBX per block for the genesis block, which cuts in half every 210,000 blocks, leading to a limit of 42 million as time approaches infinity. The block time is 10 minutes. Transactions and blocks look a lot like Bitcoin. However, there are some important improvements, such as the identity system of the mine that enables instant transactions and instant block propagation.
Our successes so far include:
This has been all performed with no marketing except for a few posts on social media. EarthBucks is 100% bootstrapped (like Bitcoin was originally).
So far there have been a few bugs in production that caused me to have to rewind the blockchain. One bug was very significant and forced me to rewind by hundreds of blocks. Another couple of bugs forced me to rewind by one block. There is now code that auto-pauses the mine when some data consistency errors are noticed, which makes long rewinds less likely.
I made a fundamental error in the way that I designed the database schema for the blockchain data for headers, transactions, scripts, and merkle leafs. The problem is that most of the data structures are mutable and can change state. For instance, transactions go through several states, starting with “received” and ending up in the “block” state, which is final. The problem with this approach is that it makes it very easy to introduce concurrency bugs. When two users perform an action at the same time, one user may perform updates to the database while another user is also performing updates, so each user can be acting based on outdated information. This has caused inconsistent data several times in production.
I have temporarily fixed most concurrency bugs by adding a global lock to the blockchain data in the database. This approach means only one update can happen at a time. Although it solved most concurrency bugs, the issue is that this creates an upper limit on transaction volume that is too limiting for the blockchain to scale. The database schema will need to be redesigned to support a large transaction volume.
Therefore, I plan to redesign the database schema for blockchain data in the near-term. I will create a new database schema based on immutable data that can be upserted, which makes it far easier to handle concurrency issues and allow concurrent actions without a global lock. This may take some time, but not longer than the time it took to launch the blockchain in the first place, which was about six months.
EarthBucks was launched at an early state intentionally. I knew that some people would be willing to mine the blockchain early so that we could get going before all the bugs were ironed out and before fundamental pieces like the wallet or the p2p network were finished. Everything has come to fruition exactly as to be expected. We have a small community of users mining the blockchain, and there have been some bugs, but none have been fatal. We should have fewer bugs moving forward as I solve the key challenges.
The next pieces I will be implementing are:
The whole history of the project has been chronicled on the blog at earthbucks.com/blog. Please refer to the blog for all authoritative and up-to-date information.