Anticipated Network Architecture of EarthBucks

2024-06-04 · Ryan X. Charles

Introduction

The EarthBucks network consists of mines, wallets, and apps. The core of the network are the mines, which validate all transactions and blocks and produce new blocks. The wallets connect to the mines to send and receive transactions. Apps connect to wallets to send and receive transactions. Other types of nodes, such as archival nodes, are also anticipated to exist. Mines are a small world graph, and all other types of nodes connect to the mines.

Mines

I plan to launch six mines and one wallet on launch day. The mines will be distributed around the world to make sure the network is technically “decentralized,” i.e. distributed, on day one.

Users will visit earthbucks.com to sign up and will not need to know how the network architecture works. However, if you are thinking about running a mine, a wallet, or an app, it will help to know how the network architecture is supposed to work.

The target adjustment interval is 2016 blocks, or two weeks with an average of 10 minute block times. This is similar to Bitcoin, except the target adjusts continuously rather than in discrete steps. This means the longer the network goes without a block, it actually gets easier to mine the next block, so that the network can tolerate more frequent swings in mining power.

Any mine that does not produce a block for 2016 blocks will be considered “inactive” and will be removed from the list of active mines, meaning it will not be queried about new transactions and blocks. Recall that EarthBucks mines not only validate, but also vote on every transaction and every block, which makes transactions nearly instant and prevents reorgs.

This means there is an upper limit to the number of active mines. There will never be more than 2016 active mines. I expect, like with Bitcoin and other cryptocurrencies, that the number of mines will actually be even smaller than that. Instead of launching the software and simply hoping for the best, I plan to personally onboard all new mines into the ecosystem and throttle their proof-of-work (PoW) power to make sure all mines are roughty equal.

Bear in mind that users can always join as a miner, which means simply doing PoW calculations on your computer, and does not mean you are operating a mine. Operating a mine, i.e. being a mine, means running a 24/7 web service at a domain that meets certain minimum computational requirements, latency requirements, identify requirements, and other requirements laid out in a Terms of Service (ToS) document. Mining is for everyone, but being a mine is for professionals.

Because of the permissioned nature of mining operations, I will be able to control the distribution of the mining network. The mining network is the core of the EarthBucks network consistent of all active mines. Their role is to validate all transactions, validate all blocks, and produce new blocks.

The first six mines I create will be hosted in these global sextants:

  • 1: North America
  • 2: Europe
  • 3: Asia
  • 4: South America
  • 5: Africa
  • 6: Australia

After launching my own mines and making sure everything actually works, and writing the onboarding software for new mines, I will allow new mines to join the network, but subject to conditions such as global distribution. My goal is to bridge three competing forces for decentralization:

  • Geographically global distribution, meaning mines on every continent.
  • Population distribution, meaning mines in countries with the most users.
  • Political distribution, meaning mines distributed in many different countries.

Why would you want to operate a mine? Recall, all users can mine by simply logging in and running the software. You do not need to operate a mine to mine. However, users will be charged a fee of 30% of the block reward for mining on one of my mines. Operating a mine will also have a fee, but the fee will be lower on a volume basis, thus operating a mine can be more profitable than simply running PoW functions in your browser. Professionals may find it in their interest to perform all of the additional functions of mining operation in order to maximize their profits.

Mines are a small world graph. Every mine connects to every other mine.

Wallets

Wallets are any web service that produces new transactions, either by signing server-side or hosting a user who signs client-side, who connects to mines to get block headers and send and receive transactions.

Wallets must connect to mines to get block headers and Merkle proofs and to broadcast new transactions. A wallet can monitor all mines in order to verify that they are on the longest chain. However, it is assumed that wallets will have a relationship with a single mine for broadcasting transactions. That is because there will be a cost associated with broadcasting transactions. The way this cost is paid is not like other blockchains or cryptocurrencies. EarthBucks does not have “transaction fees”, a.k.a. “change fees”, which are included in the transaction itself. Instead, the wallet is a customer of the mine and pays a fee the same way any other business would pay another businesses: by using a form on a web page and getting an API key in exchange.

The wallet uses the API key, which it has paid for, to query the mine. It is anticipated that most users will not have to pay for transactions, because wallets will sponsor small transaction volume per user. Mines will probably also sponsor small transaction volume per wallet to allow for some free transactions. However, large transaction volume is costly, so that is where the fees will be paid. In addition, non-standard transaction types will also probably have additional fees.

Wallets also connect to other wallets when they send a transaction. The receiving wallet receives both the transaction and any needed Merkle proofs of the inputs necessary for verifying the transaction. This enables recipients to verify transactions without being connected to a mine. However, it is assumed the wallet will then verify the same transaction with a mine.

Wallets have a more complex structure than a simple mesh network. Wallets do not necessarily need to connect to each other, so they do not form a small world graph. Instead, the number of connections is better thought of as per-transaction. A wallet only connects to another wallet when a transaction is being sent, and not at other times. So if each edge on the network has a weight to represent transaction volume, some wallets would have thick edges between each other because they frequently send transactions to each other, while other wallets would have thin edges because they rarely send transactions to each other.

Apps

Apps can include the wallet software inside and therefore be a wallet. However, it is expected that many apps will not necessarily want to include the wallet software inside. Instead, apps will connect to wallets APIs to handle the transactions. Thus, in this context, an “app” is a web service that connects to a wallet to send and receive transactions.

Wallets can provide APIs in two ways: custodial APIs or self-custodial APIs. Custodial APIs work like exchanges, where third parties can use an API to send/receive funds without having to manage keys. Self-custodial APIs allow the app or the user to manage their own keys, but to rely on the wallet service to broadcast transactions and monitor the blockchain on their behalf. In either case, the burden of managing network connections and transaction broadcasting is offloaded to the wallet service.

Apps are at the periphery of the network. If EarthBucks is successful, there will be a huge number of apps using wallet APIs to send/receive small casual transactions. For instance, social media apps can use EarthBucks to send tips, or games can use EarthBucks to send in-game currency.

Archival Nodes

The final type of node I anticipate to exist is the archival node. I will operate an archival node either at launch or soon thereafter. On EarthBucks, mines do not keep transactions forever because all UTXOs expire after 90 days, enabling mines to prune data as frequently as every 90 days. In practice, I plan to default mines to prune data every 180 days. This means anybody who wants to keep their transaction history will need to keep it themselves, which will be the default behavior of wallet software, or query an archival node.

Archival nodes connect to mines, like wallets, but instead of sending/receiving transactions, they simply download all blocks and keep them indefinitely. Like the Internet Archive, archival nodes exist only to provide a record of all events for all time. The business model of an archival node is to sell the data to any users who need it. While transaction data is a commodity and anybody will be able to store and sell it, and therefore not very profitable, it is expected other data will also be hashed into transactions, and that data too can be stored and sold. This creates a way for archival nodes to have differentiated data that is valuable to some users, so therefore operating an archival node can be profitable.

Consider if an app uses double hashed data inside a transaction to store images. If the archival node is able to secure those images, which are not available directly in the transaction itself, then the archival node can sell access to those images to users who want to see them. Probably the best way for an archival node to operate is to actually host the app that stores the unique data on the blockchain so that the app creates the very data that is also being sold.

Conclusion

There are three primary types of nodes on the EarthBucks network: mines, wallets, and apps. Other types of nodes such as archival nodes are also anticpated to exist. Ordinary users will probably only encounter apps, but users of varying levels of seriousness may encounter other types of nodes. Operating a mining node is the biggest responsibility and will come with the greatest level of identity verification, including the need for a business address, minimum computational requirements, and other requirements designed to ensure the mine operates successfully and is in sync with all other mines.


Earlier Blog Posts


Back to Blog

Home · About · Blog · Privacy · Terms
X · Telegram · Discord · reddit · GitHub
Copyright © 2024 Ryan X. Charles LLC