Dynamic token vesting with intents

Disclaimer: this post is a thought experiment to illustrate the power of declarative programming, and does not (as of writing) constitute a plan for any aspects of the Saline Network. Any Saline tokens will be the product of a long discussion with our investors, community, and general counsel. We encourage those who are inspired by this post for their own chain to consult their own legal experts given the changing regulatory environment extant today.


Most tokenomics today consist of some kind of vesting schedule with clear dates at which stakeholders will vest their tokens. From an investor point of view, this is a bet that a network will be successful by that time frame. 

The story does not always play out well:

This company had raised over $100 million but an excess of token hitting the market before the company could succeed had a predictable effect on price. The more cynical might characterise it as “pump and dump”, although we believe the executives genuinely thought they had a trillion dollar market cornered any time now.

Ideally, vesting should closely follow the health of the network: 

  • If the network does well, investors will want to vest earlier: this keeps the price in check, allows a high transaction volume not to bleed users unnecessarily, and lets investors exit early and report good results to their LPs. 

  • If the network does badly, a crash in token price may become a self-fulfilling prophecy: the team sees the variable part of their compensation disappear and either exits or loses morale, partnerships become more difficult, and customers go to more successful networks due to a perception of incoming death. Whilst investors may get some degree of psychological relief from dumping their tokens for a fraction of their investment, it does not really change their fund KPIs compared to staying locked.


People who can predict the future should start a hedge fund and take massively levered bets. For everything else, what if you could shape your future according to as yet unknown conditions? 

Let’s explore how to implement dynamic vesting, that is, vesting that follows closely the success of the network, using intents. 

Quick recap: how Saline works

You put assets in an asset address, which differs from a “wallet” in that it does not ask you for a signature every transaction. Instead, the assets are gated by logic. If a proposed transaction passes the logic (the “intent”), it is accepted by validators into the next block. 

For example, you might install an intent that says you’ll trade BTC for ETH at 24 or below. Someone comes and offers 25, the validators will not accept it. But at 23, since 23 is less than 24, the assets can move out of your asset address. You don’t need to sign that transaction, you “signed it” when installing the intent.


Because there is no signature requirement (unless you add one in the intent), asset addresses are not owned by anyone. 30,000 people can use the same address, just like they might use the same bank vault. (Some might say this makes for a better smart contract system. We couldn't possibly comment.)


This is why the wallet analogy breaks down with Saline. Asset addresses are closer to AI agents (in the deterministic sense, not post-LLM-boom statistical learning).


This lets you do fun things.

Introduction

For this thought experiment, we’ll simplify to two asset addresses:

  • An address S (for Skynet Saline) “owned” by nobody, gated by its intent.

  • An address V “owned” by a venture capitalist, as its intent contains “asset has vested AND VC signature is valid”, letting the VC withdraw any vested assets.

S is a fee wallet for the chain. Any users of the chain must pay fees to it - in native currency of their transaction. If your transaction or intent uses USDC, a little is diverted to S. 

S cannot pay service providers - validators, matchers, intent developers whose intent you installed - in native currencies. It must use the chain’s token. Let’s call this token SALT. 


S is in a pickle as it constantly receives USDC and other currencies, and must constantly pay service providers in SALT. Therefore, S is always buying SALT and always selling USDC (or BTC, or ETH…). You can think of S as an automated market maker. But S’s intent starts with:

> “IF there still exist, on chain, any unvested SALT…”

Part I: prior to full vesting

The validators, following S’s intent, check whether there exist any unvested SALT anywhere on chain before accepting any transaction. 

If there exist unvested SALT, S will maintain a price ceiling on all pairs. Let’s call it 1 USDC, converted to whatever other currency you wish. If the market exceeds 1 USDC per SALT, S will simply stop trading for that block, and any subsequent blocks until the price drops below 1 again.

V’s intent simply checks how many blocks S has not traded for, and unlocks 10 to the power of that. If S has not traded for 2, 3, 4 blocks, V can now access 100, 1000, 10,000 SALT respectively. Eventually, this exponential increase in supply, which everyone can see coming since these intents are public, will drop the price below 1 again. S resumes trading and V stops unlocking SALT. 

This ratchet mechanism means that if the chain takes off, supply rapidly adjusts to meet it; but if the chain is slow to take off, dumping is prevented, aligning everyone’s interests.

S will pay validators at the price of the previous block, which will inevitably cause some discrepancy between service provided and payment, but over time averages out to the right ballpark, and keeps things predictable and less volatile. 

Part II: starting conditions

At the start, S has no SALT. There is no mint, no burn. All tokens are minted at once, locked, in V’s address (and any other addresses that warrant it, such as other investors, treasury, team, etc.). 

This means that initially, service providers aren’t paid. As V and other addresses rapidly and exponentially unlock, they’ll start selling SALT to S, kickstarting the chain within a few blocks of genesis.

Part III: after full vesting

The choice of tokenomics for a self-balancing ecosystem then becomes philosophical. If you believe that SALT is a building block for what is essentially a decentralised world computer (to borrow Vitalik’s expression from his original paper), then it is preferable that SALT does not moon too high.

We propose a radical idea: a “price nuclear bomber” address N that contains a few billion locked SALT and exponentially unlocks them if a price is reached, perhaps with 100^block instead of 10^block or even in chunks of 100 million per block.

This means that if the price is inching towards 100 USDC per SALT, market participants will start getting concerned about the rapidly increasing probability of N unlocking a few hundred million tokens, and start selling, stabilising the price in a long term equilibrium slightly short of the barrier. 

Should the chain really become successful and velocity of money drive too much demand, breaching the barrier should bring the required supply online quickly. 

Conclusion

With two absolutely bog standard intents, and no minting or burning, you can trivially implement dynamic vesting that closely follows - albeit unidirectionally - the network’s success and aligns stakeholder and user interests automatically. 

Previous
Previous

Compute futures

Next
Next

Decentralised user-driven free markets and verification networks