Inspired by the thematic of the hackathon, I decided to implement a concept self-governing polis. This concept has been a fun thought experiment and a challenge of how to implement it.
Harpolis is an implemention of a such a polis. Citizens own property and participate in the governance. Public funds are gathered through Harberger taxes from the citizen, based on how they evaluated their property.
To make things more intereting, Harpolis also implements its own tokenomics. There is a token $HAR that someone has to get in order to buy property or to pay tax. This token is non-transferrable between citizens, its functionality facilitating the capital flow towards public money.
Harberger Taxes are a minimalistic for of taxing your property. When you have a property, you self-valuate it at any price you like. Anyone can instantly buy your property at the valuation you set for it. The thing is that you pay taxes based on your self-valuation of the property. Let's say there is a tax period of 1 week and each period you'd have to pay a percentage of the self-valuation.
Thus, the owner is incentivized to keep its property valuation low enough to pay low taxes, but high enough to not have someone else instantly buy it. In a system implementing such a mechanism, an market equilibrium is reached.
Harpolis implements such taxes. Anyone can buy property of anyone else (if they pay the valuation). The owner can put any self-valuation on the property, which the potential buyer would have to pay. There are tax periods, each period the owner has to pay a percentage of their self-valuation.
Harpolis is a self-governing polis, where citizens hold the voting power. A citizen can create a proposal on how to spend the public funds of the city. Anyone that owns property can vote and the voting weight is based on the square root of the sum of the self-valuations of your properties. Some mechanism to prevent voting manipulation is implemented: citizens must have paid a percentage of their self-valuation in taxes when voting.
After a proposal is created, there is a voting period, where citizens can vote to ACCEPT or REJECT the proposal. After the voting period ends, there is an execution period when, if the proposal got accepted, anyone can execute the proposed transaction.
There are functions in the contract to mint/burn property, mint/burn tokens, change parameters which are to be changed through self-governance.
The governance process gives citizens power to control the DAO. If someone gains bad reputation, their property can be burned and minted again.
Tokenomics of Harpolis
Harpolis implements its own tokenomics. It includes its own automated market maker (AMM) that allows converting between HAR and ETH. In order to align the incentives towards public funding, the token has limited functionality: it cannot be transferred between holders.
The token demand comes from the fact that propoerty can only be bought with $HAR and taxes can only be paid with the token as well.
$HAR can only be bought with ETH through the polis' own AMM. The only you can convert $HAR back to ETH is through having someone buy your property, in which case the buyer pays with tokens while you'll receive the ETH given by the AMM. Besides this, the ETH received through the selling of token can only be spent through governance.
Taxes paid - HAR reserve 🔼 -> $ 📉
Property bought - ETH reserve 🔽 -> $ 📉
ETH spent thorugh public proposal - ETH reserve 🔽 -> $ 📉
Tokens bought - ETH reserve 🔼 Treasury 🔽 -> $ 📈
Mint/Burn Tokens through governance -> $ 📈📉
Harpolis has been implemented as a Solidity smart contract, with the functionality described. Some minimalistic website and subgraph were also built.
While the goal was to implement the functionality, I kept an eye on security. I tried to deal with many security concerns, but the complexity of the project leaves room for many potential breaches and the short time of the hackathon to many silly mistakes :)
Accomplishments that I'm proud of
I think the project took a nice shape. While still imperfect, it was very satisfying to build and I'm happy with the result.
Sky is the limit
Log in or sign up for Devpost to join the conversation.