Skip to content

About

Stocks should be easier to give.

Sending someone money takes a tap. Sending someone a share of a company takes an account, an application, a transfer form, and a week. So people screenshot their portfolio instead of sharing it.

Vest closes that gap with one idea: a link can carry ownership. You fund a Vest with tokenized stock, and Vest hands you a URL. Whoever opens it claims the asset into their own wallet. You never need to know their address, and they never need an account with us.

What we hold to

Four commitments.

These are architectural, not aspirational. Each one is a property of how the system is built, and each one is falsifiable.

We never hold your assets

Funding a Vest moves tokens into an escrow contract that has exactly two exits: the claimant's wallet, or back to yours. No administrator, including us, can redirect or withdraw them.

The secret never reaches us

The claim key is generated in your browser and travels in the URL fragment, which browsers do not send to servers. We could not read it, log it, or hand it over if we were asked.

Nothing succeeds until it's confirmed

No screen reports a transfer before a receipt confirms it on chain. If something fails, you get the reason and the transaction hash, not a spinner that quietly gives up.

We label what things actually are

A demo token is called a demo token, on every screen it appears on. A simulated Vest says so. We would rather look less finished than let anyone mistake a test asset for equity.

Security

How the claim link actually works.

A claim link is a bearer instrument, and the interesting question is what happens when someone hostile is watching. Here is the whole design.

  1. 01

    A keypair is born in your browser

    When you fund a Vest, your browser generates a fresh keypair. The public half — the claim key — goes on chain as the Vest's identifier. The private half never leaves the tab. It is not sent to a server, not written to storage, and not included in any analytics event.

  2. 02

    The secret rides in the fragment

    The link looks like vest.fun/c/8fk29a#a3f1…9c02. Everything after the # is the private half. Browsers never transmit a fragment in an HTTP request, so it stays out of our access logs, out of the Referer header, and out of any server-rendered HTML. A query string would have leaked into all three.

  3. 03

    The claim is bound to the claimant

    The recipient's browser does not send the secret anywhere either. It uses it to sign an EIP-712 message that names their wallet address specifically. That signature — never the key — goes on chain.

  4. 04

    Copying the transaction gains nothing

    This is the property that matters. An attacker watching the mempool can copy a pending claim transaction, but the signature inside it authorises exactly one destination: the original recipient. Replaying it sends the asset to them, not to the attacker. The contract test suite asserts this directly.

What this does not protect against

Anyone holding the link can claim the Vest, because holding the link means holding the key. That is what makes it possible to send stock to someone whose wallet address you do not know — and it is why the link should be treated like cash.

If that trade-off is wrong for a particular transfer, restrict the Vest to a specific address when you create it. The contract then refuses every other claimant, link or no link.

What the contract cannot do

  • There is no owner, no pause switch and no upgrade path. No key exists that could seize a funded Vest.
  • A Vest can be claimed exactly once. The record is marked spent before any tokens move, so a re-entrant call finds nothing left to take.
  • Only the original sender can cancel, and only while the Vest is unclaimed. Cancelling returns the asset to them and to nobody else.
  • An expired Vest stops being claimable, but the asset is not lost — the sender reclaims it by cancelling.

If you lose the link

We cannot recover it. There is no copy of the claim key anywhere except the link itself — that is the point of the design, and it is also its sharp edge. Cancel the Vest, take the asset back, and send a new one.

Status

What this deployment is running.

Read live from the running configuration, not written by hand — so it cannot drift out of date.

Mode

Preview

The chain, escrow contract or asset registry is not configured, so every Vest is simulated in your browser and no asset moves.

Assets

7 listed

At least one listed asset is a demo ERC-20. Demo tokens are test instruments: they are not equity, confer no ownership, and carry no rights of any kind.

Prices

Indicative

Dollar figures are estimates used to help you choose an amount. Unless a live price source is connected, they are reference values and are labelled as such wherever they appear.

Audit

Not audited

The escrow contract has a test suite, including an explicit mempool-redirect attack test, but it has not been reviewed by a third party. Do not put material value through it until it has been.

Vest is a self-custodial transfer tool. It is not a broker-dealer, does not offer investment advice, and does not custody assets on anyone's behalf. More questions.

One link. Real ownership.