Proposal: Efficient State Machine Usage Through Taxation

Tea Project Blog
5 min readJul 1, 2022

The TEA Project has a resource allocation problem it needs to solve: given that space in the state machine is limited, how do we protect this scarce resource? Additionally, the privilege to run the state machine and earn block rewards is another scarce resource that needs protecting. The TEA Project team has put forth a dual taxation proposal to protect these two resources that we’d like to discuss in this post.

State vs State Machine

The current state of the TEA Project lets everyone know the current status of all apps and user accounts in the TEA network. This is similar to the state concept used by other blockchain-based projects. For example, Ethereum’s state is a large data structure containing both wallet balances and a machine state that changes from block to block according to EVM-compatible machine code.

A state machine is the system that maintains the state. For example, for an end user to change the state in the Ethereum blockchain (eg. sending money to someone), they will send a signed transaction. The Ethereum network miners will execute the transaction and update the state. In the TEA Project, miners run the state machine to maintain the state and make sure it’s accurate and trustable.

State is a Limited Public Resource

In the TEA Project, all the global state maintainer nodes run the same state machine to maintain a single state across all nodes. All TApps share the same state which the utilize to store their own state in the memory of these nodes. The resource allocation problem that the TEA Project is trying to solve stems from the fact that the size of the state is limited. If one TApp uses too much memory, then other TApps won’t have enough room to store their state. We therefore want to encourage efficient state utilization among all TApp developers.

Memory Tax

The TEA Project has adopted a memory tax to levy on TApp developers when the utilize state memory. These taxes are paid out to the global state maintainer nodes as their reward for maintaining the global state. This tax is called the memory tax and is billed based on how much memory a TApp uses and how long it occupies the space in the state machine.

The Memory tax rate is not linear: as the state memory utilization increases and the remaining memory available becomes scarce, the rate starts to climb. The higher memory tax rate during high utilization periods will compel some applications to reduce / optimize their memory usage. Part of this optimization process is for developers to decide what to store as blob data in OrbitDB / IPFS. Every hosting CML has an OrbitDB / IPFS service in their hosting node which is not a part of the state machine and generally used as cache by the hosting node. This form of memory storage is much cheaper than storing in the state machine, which gives developers an option for storing non-critical data outside of the state machine.

Global State Maintainer is a Profitable and Limited Public Resource

Global state machine maintainers earn this memory tax for running the state machine. It’s generally more efficient for the ecosystem to have a limited number of global maintainer nodes when reaching consensus. Given that many miners will want to run a global state maintainer node, how do we fairly select among the applicants?

In many popular blockchain projects, Proof of Stake is used to choose the richest nodes to become the state machine maintainers. This is a very efficient solution, but it causes the rich to get richer. We’re worried that over time, certain rich nodes will enjoy a monopoly position to the detriment of the overall network. The TEA Project is interested in increasing decentralization, and not reintroducing centralization through our rewards structure.

image courtesy Simon de la Rouviere

Harberger Tax for Allocating State Maintainer Seats

The Harberger tax is what the TEA Project has settled on as the best solution for allocating state maintainer seat licenses. Anyone can become a state maintainer as long as:

  1. They’re willing to pay a tax based on a self-estimated price.
  2. Whoever pays a higher than this self-estimated price then owns the seat license to become a maintainer.

This rule can use the invisible hands of the marketplace to adjust the price so that anyone can decide to become a state maintainer based on their own financial calculations.

Where Does the Harberger Tax Money Go?

In TEA Project, we call this tax revenue going to the global state maintainer nodes their “maintainer income”. Since this revenue is taken from public resources, it should be rewarded back to the public (i.e. the global maintainer nodes). The amount going directly to node maintainers is their revenue net of the Harberger tax they must pay out.

Harberger Tax Output #1: Public Services

In TEA Project, we have public services (which is similar to jury duty in normal civil society) where mining nodes perform tasks where no one is supposed to pay for but must be done for public security purposes. Remote attestation is the most common example of this type of public service. The revenue that global state maintainers receive as part of their maintainer income is used to pay for this service.

Harberger Tax Output #2: CML Nodes

If the state maintainer’s income doesn’t cover the public service amount owed, then we’ll take funds from the genesis block miner reward reservation to cover the shortage. On the other hand, if there is an amount left over after paying out all public services, this excess amount is then given as a dividend to all CML node runners.

From the above design, CML nodes are ultimately the beneficiary of all the Harberger Taxes paid out by the state maintainer nodes.

  • The specific CML nodes chosen randomly for remote attestation will be rewarded through the Harberger Taxes.
  • If there are still funds leftover, these will be shared among the CML nodes that are active on the TEA network.

Profits will therefore be shared among all CML nodes whenever the Harberger Tax paid out by the state maintainer nodes is greater than the public service rewards they owe.

A developer is free to define their own business model. To reduce the cost, we’d advise using the least possible state memory and store it there as short of a duration as possible. Besides the memory tax, other costs include the hosting service fee and the global txns fee.

Memory tax and the maintainer’s Harberger tax are two important tokenomic rules in the TEA Project. It helps improve the efficient use of public resources, while also letting rewards accrue back to the community members. We’re interested on your opinions on this new taxation model and invite your discussion in our Telegram group.