Harberger Taxes on Ethereum
Harberger Taxes on Ethereum
Let’s look at Harberger Taxes and how we can use it in decentralized applications.
Join the DZone community and get the full member experience.Join For Free
Cryptoeconomics utilizes cryptography and economic incentives in designing decentralized protocols and applications. We write smart contracts that define the rules of an economic game, a game which incentivizes rational actors to behave in desirable ways. This idea is similar to mechanism design in economics.
Harberger Taxes is an economic abstraction (highlighted in the book Radical Markets) in which asset owners self-assesses the value of their asset and pay a tax rate of X percent of that value per year. Whatever value they specify for their asset, the owner has to be willing to sell it to anyone at that price.
Blockchains offer a testing ground for experimenting with economic abstractions such as Harberger Taxes, where rules can be enforced using only smart contracts. Harberger Taxes promises to democratize the control of assets by striking a balance between private and commons ownership. While I’m skeptical that this new form of taxation can be easily applied to the real world, I think it’s worth exploring its use in greenfield domains such as decentralized communities.
In this article, let’s look at Harberger Taxes and how we can use it in decentralized applications.
"Every citizen and corporation would self-assess the value of assets they possess, pay a roughly 7 percent tax on these values, and is required to sell the assets to anyone willing to purchase them at this self-assessed price" — ‘Property is Monopoly’
Harberger Taxes consists of two main ideas:
- Asset owners self-assess the value of their asset and pay taxes on that self-assessed price.
- Anyone, at any time, can purchase an asset from you at that self-assessed price, thereby taking ownership of the asset. The new owner then sets their own price.
An asset owner is incentivized to set a low price to minimize the amount of taxes they have to pay. At the same time, the asset owner wants to set a price high enough to discourage someone else from buying it away easily.
Asset owners can’t set impossibly high prices nor refuse valid offers, allowing the market to allocate assets more efficiently. Thus, the incentive is for owners to price an asset at the value they are willing to pay to keep it.
Harberger taxes are proportional to an asset’s price and the duration that the asset is held. We’ll write a smart contract that collects taxes on demand from prepaid balances maintained by asset holders.
First, we define a marketplace of assets that users will own and trade with each other. Each
Asset has a
bytes32 assetId, an
owner address, if any, and a
The price of an asset determines the amount of tax the
owner will have to pay.
Taxes are collected by a separate
TaxCollector contract maintains balances of prepaid tax payments for each
Assetin the marketplace.
Asset owners calls
deposit() to top up their tax payment balance with Ether:
Note that whenever an
Assetis created by the
Marketplacecontract, a corresponding
TaxBalanceshould be created for that asset, with zero balance and
lastCollectedAtset to the asset creation date. This keeps track of tax payments of each asset. For simplicity, this step is omitted from the sample code.
collect() taxes in batches on demand. If during tax collection the asset owner has an insufficient advance tax
balance for the tax period between the last collection date and the present time, the asset owner will have failed to pay their tax. It’s the responsibility of the asset owner to ensure that they have set aside enough tax payments for their asset.
Let’s first define a function for calculating the taxes owed for an asset:
Here’s our tax
In the above code:
- First, we retrieve the asset’s
- We check if the asset owner has deposited sufficient advance
taxOwed()for the asset.
- If there is sufficient balance, we transfer the taxes owed to the
taxRecipientaddress and update the asset’s advance tax
lastCollectedAt. The asset owner has successfully paid their Harberger Tax and continues to own it.
- If there is an insufficient balance, we foreclose the asset.
Note that the above function has an
onlyCollector modifier that makes
collect() only be callable only by whitelisted tax collector addresses.
Failure to pay tax will result in an asset’s foreclosure. A foreclosed
owner set to
address(0), which means that it is open for auction.
The sample code is simplified for clarity, but you can fill in the rest. The basic harberger tax calculation, deposits, and collection are implemented.
Let’s look at how Harberger Taxes can be used in real-life applications.
With Harberger taxes, users will know what the going price is for any asset. This results in liquid markets where anyone can make an offer even if the owner is not actively selling. For example, NFT marketplaces such as Decentraland, OpenSea, and Harberger Ads can list digital goods that users can browse and purchase at any time.
Marketplace actors cannot only earn from the transaction fees or spread of the exchange, but also from the taxes.
In recent years, we’ve seen the proliferation of new forms of art funding from subscription patronage to crowdfunding works together through the likes of Patreon and Kickstarter.
Likewise, the blockchain offers a platform to re-imagine how we fund and support creators and artists.
Rare Patrons offers a radical market approach for fans to participate in supporting their favorite creators.
Given these concepts/ideas, I want to propose a variant on the usage of radical markets that combines collectibles with such funding schemes. It works as follows:
- Every musician has a single patron seat.
- Anyone can buy the patron seat (to become the singular patron and gain the privilege of being the patron).
- Upon buying it they have to self-assess the value of this seat (being the patron).
- During the tenure of being a patron, this patron has to pay a > percentage fee (say 5 percent) of the self-assessed seat value per year as their patronage to the musician.
- At any point in time, someone else can buy this patron seat at this self-assessed value, changing ownership.
- Upon being “dethroned” as the rare patron for a specific musician, that patron earns a collectible “Post-Patron” badge, signifying that they were a patron at a certain point in history. They just join the “Patrons Club”.
- They can choose to sell this collectible if they no longer want it.
— Simon de la Rouviere, Rare Patrons
These ideas offer new ways of funding for artists and creators.
Harberger Taxes can also be applied to intellectual property and open source. When a patent requires the active payment of a nonzero amount of tax, patent trolls have less of an incentive to ‘squat’ useless works that have no value beyond being useful in a suit in the future. It also makes the IP market much more liquid.
Cryptocommunities can use Harberger taxes to strike a balance between private and commons ownership. Given a community with scarce assets, how can we allocate it efficiently to productive members of the community?
Exclusive ownership of a community asset can be taxed, ensuring that those that value it the most have access. Failure to pay the tax will trigger a forced auction of the asset that all community members can participate in.
In addition, communities can direct how taxes are utilized. For example, taxes in a closed-loop community can go to a curved bond reserve via sponsored burning, increasing community members’ token values. This tax reserve can also be redistributed to the community as a universal basic income, or go to a community fund that is governed by a DAO.
Harberger taxes and other crypto economic primitives offer us new ways for individuals to mass coordinate at scale in a decentralized network without centralized authority.
In this article, we’ve looked at Harberger Taxes, a fascinating economic abstraction, and how we can use it in decentralized applications.
While it may be difficult to implement in the real world, the blockchain offers a testing ground for novel, experimental ways of coordinating individuals within a society.
Published at DZone with permission of Yos Riady , DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.