PoE Integration Overview
The universal Proof-of-Existence whitelist can be integrated permissionlessly into any smart contract.
Developers can "authenticate" contract calls by requiring the addresses executing those calls to hold the ERC20 POE token.
The base integration of "only authenticated users can call this function" can be achieved by pasting the following requirement statement into the desired write function:
require(IERC20(0x5945bAF9272e0808165aDea61b932eC1604FB161).balanceOf(msg.sender) == 1, "Need to authenticate first!");
The 'require' syntax asserts that a logic statement resolves true in order for a contract call to execute. This line requires that the address calling the contract <msg.sender> holds exactly 1 POE.
POE balance of an address is binary, they can only ever be 1 (authenticated) or 0 (non-authenticated).
With a POE balance requirement in place, developers can easily add gamification to their contracts and platform mechanics.
Some of the (otherwise not possible) gamification/logic improvements could include...
- Individual "cap" on mints or size of purchase
- Anti-Whale price curve: each additional purchase is more expensive than the last
- One-claim-per-person with a free or fixed rate
- Pre-sale phase where authenticated users get a grace period to interact without competing for gas
- Max/Minimum allowed balance per user (ie: NFT that is limited to one-per-person)
- "Bot-Free" Trading
- Capped or anti-whale yield farming/liquidity providing
- Modified weight-based pools (minimum and maximum weight)
- Democratic voting (one-vote-per-person)
- Logarithmic voting (unlike quadratic, token-based weight is not linear. Min/max voting weights based on token ownership + POE)