Authors: @adam @o_rourke @JackALaing @JaureguiA
Introduction
An Ethereum bridge with a wrapped POKT (wPOKT) token creates an opportunity to build a virtuous growth cycle for Pocket Network. wPOKT would tap into Ethereum’s composable DeFi ecosystem, bringing greater liquidity to POKT while simultaneously funding a free tier for Apps.
This implementation, called Data Farming, would allow Ethereum users to stake for infrastructure on behalf of their favorite Ethereum applications (Apps) to earn rewards. The staking performs two functions for Pocket: 1) it provides Apps with a mechanism to crowdsource free infrastructure from their users through network-specific pools and 2) drives liquidity to wPOKT and subsequently POKT through proven liquidity farming mechanisms.
This means there are now two opportunities for users to profit from supporting Pocket Network’s economy: stake POKT tokens as a Node Runner in the native Pocket Network – earning staking rewards, serving relays to Apps, and securing the network – or stake wPOKT as a Farmer – earning farming rewards, subsidizing relays for Apps, and liquidizing the network. This creates a virtuous cycle that provides a compounded and synergic reward:
The top left corner of the diagram depicts the standard flywheel of Pocket’s two-sided market, popularized by Andrew Chen’s analysis of Uber, wherein supply growth boosts demand growth through improvements in service quality. This model applies to Pocket Network too because the more Nodes we have, the more redundant our infrastructure is, the more reliable our service will be compared to centralized alternatives.
However, like all two-sided markets, we have a chicken-and-egg problem; how do we seed the critical mass of demand required to start the flywheel spinning? That’s where Data Farming comes in: by incentivizing Farmers to subsidize infrastructure for Apps, we eliminate switching costs for App developers, and by rewarding Farmers proportionally to the demand (relays) they bring to the network, we promote the most rapid demand growth possible.
By augmenting Pocket Network’s core market with a Data Farming economy, we direct liquidity farming mechanisms towards a noble purpose – being the supercharger on the flywheel of a true public good. This revolutionary new economy will coordinate DeFi “degenerates” towards a regenerative outcome – planting rather than extracting value – by decommissioning centralized points of failure and bringing crypto back to its decentralized roots.
Goals
- Accelerate Ethereum developer usage in Pocket Network
- Provide an incentive for Ethereum enthusiasts to get involved in Pocket Network
- Increase liquidity for POKT by creating a POKT/wPOKT bridge
- Plant the foundation for a sustainable infrastructure market
Bridge Construction
Staking Pool
Staking Pools are Ethereum smart contracts where wPOKT holders stake wPOKT to earn yield proportionate to the number of relays subsidized by the pool. Upon launch, we plan to create a single Staking Pool that aggregates all relays from Ethereum applications using Pocket Gateway. We’re calling this type of network-wide pool a Network Pool. This initial pool will encourage Farmers seeking a higher yield to promote Pocket to any Ethereum application that would generate a large number of relays. The pool will allocate available relay allowances to applications on a first-come, first-served basis.
In the future, this could be opened up to additional Network Pools outside of Ethereum, or App-specific pools (App Pools), to facilitate more diverse yield opportunities. For example, if a Farmer believes a specific network (chain, subgraph, etc.) or App will be more popular than others, the Farmer can take advantage of that prediction by staking only on that network or App. This will encourage Farmers to seek out new high-value Apps for Pocket Network and subsidize them to increase the odds that they’ll adopt Pocket Network over competing solutions. Staking on networks also creates a signal to Node Runners that they should prepare their infrastructure for incoming demand on a particular network, readying the supply side of Pocket and reducing the lag on network capacity.
Staking Rewards
For the wPOKT farming MVP, we’ll be basing our token reward system on the AMPL Geyser V1 smart contract. In this system, rewards are earned based on the total ownership of unlocked rewards in a pool. Rewards are unlocked in fixed intervals (daily, weekly, etc.) and Farmers will accumulate ownership stakes in the unlocked rewards. Reward ownership is calculated based upon the amount of time a stake is staked and the number of wPOKT staked. A consequence of the design of the AMPL Geyser smart contract is that Farmers earn a percentage of the pool rewards, but cannot receive their rewards until the stake is withdrawn.
This is designed to reward those who identify, stake, and commit to promising sources of relays. Additionally, this has the effect of ensuring that yield is proportional to the relative commitment to a pool. Older stakes have more weight, therefore, more reward than newer stakes.
Interestingly, this program can be used as a way to earn yields from accurately predicting growth in traction for Pools. This could be used as a way to earn from a pool’s future user growth without relying on the network to design token economics that captures the value of that user growth.
Calculating Rewards
A Farmer’s ownership of the unlocked rewards is calculated based on the amount of wPOKT staked and the duration of the stake compared to the total universe of wPOKT staked and the duration of the total stake. The calculation to determine ownership is simply:
User_staking_token_time / Global_staking_token_time`
To calculate a Farmer’s User_staking_token_time it is a matter of multiplying the number of tokens by the amount of time:
User_staking_token_time = # staked tokens * time staked
Global_staking_token_time is a simple sum of all User_staking_token_time:
Global_staking_token_time = User1_staking_token_time + User2_staking_token_time + UserN_staking_token_time
Below is a simple illustration of how the system works with maximum bonus engaged (explained later):
Valeria_token_time = 10 tokens * 1 days = 10
Jack_token_time = 5 tokens * 3 days = 15
Global_staking_token_time = (Valeria_token_time) + (Jack_token_time) = 25 token_time
Valeria owns (10 / 25) = 40% of unlocked rewards
Jack owns (15 / 25) = 60% of unlocked rewards
Unlocked rewards are rewards that have been deposited in the pool and are eligible for claiming by pool owners. This is calculated based on:
Unlocked rewards = rewards per period * number of periods
Thus, a user’s reward can be calculated based by the following equation:
Farmer Reward = Unlocked rewards * User_staking_token_time / Global_staking_token_time
Bonus Rewards: A long-term incentive
The smart contract is meant to incentivize long-term Farmer staking. While there are no hard lockups for staking, there is a benefit to keeping your staked position longer.
All stakes begin with a 1X bonus multiplier for their rewards. The multiplier increases linearly to a maximum of 3X after 60 days. Each stake has its own stake_token_time, so each stake will have its own unique bonus amount, up to 3X. The system is designed as last-in, first-out meaning that Farmers are always unstaking their most recent stake. This method preserves the Farmer’s most valuable stake.
To simplify: Try to keep the stake for at least 60 days for all stakes to maximize rewards.
Distribution Event
wPOKT will be distributed with on a Balancer Smart Pool using a wPOKT/Stablecoin pair due to the ability to easily manage the distribution of wPOKT, ensuring a fair launch for the project.
Specifically, we’ll be using the Balancer Smart Pool as a Liquidity Bootstrapping Pool. In this use case, token weights will be adjusted over a fixed period of time (3-7 days) time having the effect of theoretically reducing the cost of wPOKT over the course of the distribution event.
This approach allows a lean launch with low capital requirements. The weights will be initially set heavily in favor of the wPOKT token, then gradually “flip” to favor the collateral token (a stablecoin) by the end of the sale.
The exact curve is to be determined (will update this section in the future), but the aim of the curve will be to keep the price more or less steady while building in downside protection with a minimum price that is close to mainnet POKT.
After the distribution event is complete, there will be a larger amount of stablecoin “the proceeds” and a small amount of wPOKT left in the pool. These balances will be transferred to and used as the seed liquidity for a public AMM pair. Until there is significant liquidity for the trading pair, as determined by the DAO, no proceeds from the distribution event will be returned to the Foundation/DAO.
Market Maker
After the initial distribution event, wPOKT will be listed on a popular platform like Uniswap to provide an on/off ramp for farmers.
Uniswap and other AMMs are disconnected from external markets. When the token prices change on external markets, AMMs don’t have a mechanism to automatically adjust their prices. Instead, it requires an arbitrageur to buy the underpriced asset or sell the overpriced asset until the prices adjust along that curve to match outside markets, the point where there is no profit to be extracted by arbitrageurs. During this process, the profit taken by arbitrageurs is effectively extracted from liquidity providers, resulting in an impermanent loss to liquidity providers. If the pool returns to the state at which the liquidity provider entered the pool, the losses due to price movements disappear.
In this case, with no planned external market for POKT, impermanent losses are less important to the overall proposal when compared with a liquid token. Arbitrageurs will not have external markets to arbitrage with, thereby eliminating this incentive. Only when a user can identify an over or underpriced token and execute trades to take advantage of the price differences will this come into effect.
Until both POKT and wPOKT have liquidity, the only users of the AMM will likely be Farmers who are buying and selling wPOKT to enter and exit the Staking Pools. With this in mind, we are recommending Uniswap as the AMM based upon current levels of liquidity, volume, and the effects of impermanent loss.
Pricing Parity and Liquidity
When deemed appropriate, the Foundation will release a cross-chain swap that allows purchasers to swap between POKT and wPOKT. There is likely to be a pricing discrepancy between POKT and wPOKT due to the use of an AMM; therefore, arbitrage opportunities will be plentiful at first. We intend to democratize the arbitrage so that the Pocket Network Foundation is not directly profiting from trading. The following diagrams illustrate the procedures that an arbitrageur would use to profit from the pricing disparity between POKT and wPOKT.
Price of wPOKT Exceeds POKT
A trader seeking to earn a profit would buy new POKT or swap existing POKT for wPOKT, sell wPOKT at the Automated Market Maker in exchange for stablecoin, and then sell stablecoin on an exchange for a profit. This has the effect of reducing the price of wPOKT at the AMM.
Price of POKT Exceeds wPOKT
A trader seeking to earn a profit would purchase wPOKT on the AMM with stablecoin, swap wPOKT for POKT, and then sell POKT on an OTC for a profit. This has the effect of increasing the price of wPOKT at the AMM.
Interface
The plan at the time of publishing is to use the Token Geyser smart contract with few if any changes. It’s worth noting that wPOKT will not use any rebasing functionality that Ampleforth leverages. Below are a sampling of the major functions:
stake(uint256 amount, bytes calldata data)
unstake(uint256 amount, bytes calldata data)
TokensLocked(uint256 amount, uint256 durationSec, uint256 total)
computeNewReward(rewardAmount, newStakingShareSecondsToBurn, stakeTimeSec)
unlockTokens()
wPOKT / POKT Coordination
Oracles keep track of the amount of wPOKT staked in all pools (a single Ethereum Network Pool to begin with), feeding into our AAT system. A pool’s wPOKT stake multiplied by the “max relays” parameter on Pocket Network determines the max relays the system will permit for that pool in any given session. That pool’s max relays will be divided amongst Apps on a first-come, first-served basis.
At first, AATs will be created manually by the Pocket Network Core Team for use on the gateway. The team will validate there is enough stake to safely run a given application on Pocket Network. If there is enough wPOKT staked in the staking pool for the relays they are requesting, the PNI team will create their AAT. If there isn’t enough in either to cover the requested relays, the PNI team will support the application in encouraging the user base to stake more wPOKT or will sell the necessary POKT to the application to get started immediately. In this scenario, an App could have both wPOKT and POKT staked for their application. Eventually, the community may step in and fully stake their pool, in which case the App could choose to sell their POKT.
Governance
Project Approval
The Data Farming project will be officially approved by the DAO through a Pocket Ecosystem Proposal (PEP) that Pocket Network Foundation will submit.
Contract Ownership
The smart contracts used in the Data Farming economy will be owned by the Signers.
Contract Upgrades
Smart contracts can be upgraded by the DAO by approving a PIP, e.g. to refine yield formulas or bonding curves.
Emergencies
The DAO may at any time authorize the use of the pause or upgrade smart contract functions in emergencies.
Project Future
In the future, upon DAO approval, the DAO could use its funds to permanently support the Data Farming economy based on their analysis of the sustainability of the economy.
Trust
The Signers are trusted to securely hold assets to ensure one-to-one backing. We aim to minimize trust through the following mechanisms:
- The DAO will hand-select trusted parties from the Pocket ecosystem.
- Audits can be conducted by the DAO at any time to verify that all wrapped tokens minted have an equal amount of assets stored by the custodian.
- Existing credibility is at stake for all the parties involved with the framework.
- The Foundation will explore automating the execution of the DAO’s transactions on both the Ethereum and Pocket blockchains.
Release Schedules
The data farming program will be broken down into phases according to how much wPOKT is released.
Phase 1: Proof of Concept - Initial Release and Staking Pool
The initial release will consist of a predetermined (TBD) amount of wPOKT which will be put into the Balancer Smart Pool with the equivalent amount of stablecoin. Additional modeling is required to understand the exact amount of wPOKT that will be distributed in Phase 1.
Phase 2: Additional Rewards
Upon a successful small scale launch, additional wPOKT is minted and deposited by the Pocket Network Foundation into both the AMM and the Staking Pool for distribution. The amounts will depend on the traction of the project at the time and the demand for wPOKT.
The deposit of wPOKT into the AMM will cause the price to drastically decrease and will cause significant slippage. This could have a positive effect on the market if it is overheated. Alternatively, wPOKT and stablecoin could be deposited gradually in equal amounts to eliminate slippage.
Phase 3: Full Release
In this phase, nearly all wPOKT minted by the DAO is circulating with users. In this phase, the program will reach maturity where the growth of staking will begin to settle. At this point, the DAO will reassess how long it will support the program.
Phase 4: Maturity: Reward Exhaustion & Possible Permanent DAO Support
The DAO that initially budgeted a certain number of wPOKT rewards for the program may choose to extend the life of the program by continuously adding rewards into the Staking Pool. This may be accomplished by allocating a percentage of the DAO’s revenue which is 10% of Pocket’s block reward specifically for this program. In this case, rewards would be granted in perpetuity until the DAO votes to suspend support.
Appendix
Stakeholders
POKT Multi-sig: Hold reserves of POKT to ensure that all wPOKT is backed 1:1 by POKT. The contract is controlled by a group of trusted Signers who will be selected by the DAO.
Signers: Selected by the DAO, this group of 3 individuals will be responsible for signing all transactions between wPOKT and POKT. Acting for the benefit of the program, the Signers will burn and mint wPOKT and transact POKT as necessary for the smooth operation of the wPOKT token.
DAO: Will authorize the Foundation to make an initial deposit of POKT into the Pocket Multisig wallet, the Automated Market Maker Pool, and the Staking Pool. Selects the trusted members of the Signers.
Foundation: Uses reserve funds to seed the wPOKT program and operates the user interface associated with the POKT/wPOKT cross-chain swap.
Automated Market Maker (AMM): A decentralized liquidity provider that operates an stablecoin/wPOKT swap to enable individuals to enter and exit positions of wPOKT.
Data Farmer (“Farmer”): A purchaser who stakes their wPOKT in a pool on behalf of an Ethereum application to earn a yield.
OTC: An Over the Counter trading desk operating a wPOKT/POKT swap. This enables the arbitrage necessary to keep wPOKT in price parity with POKT. This would be implemented after wPOKT gains traction.
wPOKT
Wrapped POKT (wPOKT) is an ERC-20 token backed 1:1 by POKT on the Pocket blockchain and held by a set of the POKT Multisig where the underlying holdings are verifiable. wPOKT standardizes POKT to the ERC20 format, enabling and leveraging the usage of smart contracts.
Custody
All wPOKT issued will be fully backed and verified through on-chain proof of reserves held within the POKT Multi-sig wallet. wPOKT will be minted in accordance with the amount of POKT held by the POKT Multisig, which will be determined by POKT holders’ demand for wPOKT, and will in turn be determined by the success of the program. Once the bridge is opened to the public, wPOKT will flow freely in and out of the Multisig wallet according to transactions performed by the bridge.
Minting
The minting process for wPOKT will occur when wPOKT is created by depositing POKT in the Signers’ POKT Multisig. The middleware software monitoring the POKT Multi-sig account will monitor for incoming transactions and will triage transactions for signing based on transaction size. The middleware layer could be configured to automate the signing of transactions to reduce the operational burden on the Signers. Thresholds will be established that automatically approve transactions under a certain volume to avoid manual signing of every single transaction. Once signed, the Ethereum smart contract will mint wPOKT on the Ethereum blockchain and send the wPOKT to the specified account. POKT will be held in the POKT Multisig until the wPOKT is later redeemed.
Burning
The swap from wPOKT to POKT will happen in a similar fashion but in reverse order. Users will send their wPOKT to the smart contract, burning their wPOKT. This action will be identified by the middleware software which will then create a transaction for signing by the Signers. This transaction will send the equivalent amount of POKT to the Pocket wallet specified by the user in the swap UI. Once triaged and automatically or manually approved by the Signers, the POKT will be sent to the user’s wallet.
If the volume ever exceeds the Signers’s ability to execute POKT/wPOKT swaps, trusted outside parties can then be brought in quickly to manage the process by turning over the POKT Multi-sig account, the middleware layer, and the user interface.
Distribution via Automated Market Maker Pool
Because we are taking a phased approach, the tooling for the cross-chain swap will not be available immediately for the public. Rather than assuming users will want to wrap their POKT and participate in the Data Farming program, the Pocket Network Foundation will kick start the program by depositing wPOKT in an AMM for distribution and by setting wPOKT aside for rewards. To do this, the Foundation would be the first to send funds to the POKT Multi-sig to mint wPOKT. This initial transaction would mint enough wPOKT to launch the program without the need for the cross-chain swap.
Before the cross-chain swap is opened to the public, to acquire wPOKT, purchasers will interact with an AMM (or the Balancer Smart Pool during the distribution event). This AMM guarantees the liquidity of wPOKT at all times. It does this by buying and selling tokens on a predetermined bonding curve that adjusts the price of stablecoin and wPOKT based on the amount of each asset. This curve balances supply and demand by creating arbitrage opportunities while creating a price floor for wPOKT.
The net result is an AMM pool that before trading is equal value wPOKT and stablecoin. The initial deposit will provide the initial liquidity for wPOKT and will set a base price for the ERC20 token.
From time to time, the Foundation, at the direction of the DAO, may mint new wPOKT and deposit that into either the AMM Pool and/or the Reward Pool. A deposit into the AMM Pool would increase the amount of liquidity in the market.
One major challenge with keeping the price in check will be that there is no opportunity for arbitrage between wPOKT and POKT.
Risks
We anticipate that this initiative will be subject to the following risks:
Code risk - A bug or vulnerability is taken advantage of and users lose their wPOKT stakes or holdings.
Impermanent Loss - the Foundation could lose a considerable portion of its funds committed to the wPOKT/stablecoin pool due to the price of one of the base pairs (wPOKT or stablecoin) rising or falling significantly compared to the other.
Liquidity - Having a public price for wPOKT will ultimately mean that the POKT held by every Pocket stakeholder will also have a price. This will change how Pocket is viewed by network participants and result in increased scrutiny on the project. Community management will be important. There are also dangers if the price of wPOKT is to fall considerably.
Price risk - wPOKT becomes less attractive to new users because of its price increase on the AMM. This results in less staking and fewer relays on Pocket Network.
Pricing Premium - It is likely that wPOKT could regularly trade at a premium to POKT. The exposure of wPOKT to the Ethereum ecosystem may provide an opportunity for many new users to gain exposure to Pocket. The ability to earn a yield without running the infrastructure of a node provides a new wave of accessibility to returns. This convenient yield may drive a slight asset premium vs holding the base token.
Third-party risk - The Signers abscond with POKT or mints too much wPOKT or is otherwise a bad actor.
Speculation risk - AMM users buy and HODL a large percentage of the overall wPOKT and don’t use it for its intended purpose.
The Pocket team has done our best to work through these risks and believe they don’t pose a significant threat to the health of the project. That said, there are always unforeseen risks, and holding/staking POKT or wPOKT isn’t without risk.
Costs
Gateway changes - the Pocket Gateway will need to change to operate seamlessly with wPOKT staking pools. AATs will need to be generated for stakes on the Ethereum blockchain.
Smart contract / multi-sig - The team will need to create and audit the smart contracts associated with the wPOKT program. This will be mitigated with the use of the Geyser smart contract.
Rewards - Rewards will be allocated weekly to encourage participation in data farming. The DAO and/or Pocket Network Foundation will need to bear this expense by depositing POKT into the POKT Multi-sig and distributing wPOKT to Farmers.
Interface - The team will need to create and maintain a user interface that enables Farmers to participate.
Contributors: @luyzdeleon @Dermot @nelson @Patrick727 and many others. Thank you all for helping us get to this point.