Live on Stellar Testnet

USDC that does something
the moment it lands

Circle’s CCTP delivers native USDC to Stellar but does not execute hooks. Skyhook reads the payload it leaves behind and runs the instruction inside it.

How it works

Everything here existed except one link

Circle already carries USDC to Stellar. What it does not do is run the instruction a sender attaches — so the money arrives, and then nothing happens. Skyhook is that missing step.

Ethereum

Wallet on another chain

Someone burns USDC through CCTP. Every transfer recorded in this project came from Arc Testnet; CCTP supports the rest, and Skyhook never asks which chain a message came from.

Circle

Circle CCTP

Burns on the source chain, attests, and mints native USDC on Stellar. This is where it has always stopped — the forwarder credits the recipient and never invokes it.

Skyhook

Skyhook

Reads the instruction Circle leaves in the trailing payload and runs it, inside the same transaction that delivered the funds. This is the piece that did not exist.

Stellar

SEP-56 vault

A vault deployed on Stellar, holding the position the recipient now owns. The USDC arrives already deposited, and the address travels in the instruction, so any conforming vault works.

How Skyhook works

Minted funds are never lost, and never cause the transfer to revert

Executed on arrival

A Deposit instruction places the USDC into a SEP-56 vault in the same transaction that delivers it. No second step, and no USDC trustline — vault shares live in the vault.

Held, not bounced

A recipient who cannot yet receive would normally make the whole transfer fail. The funds route to Hold instead and stay claimable, with the fee paid by a sponsor.

Recorded, never lost

If Hold fails too, the funds stay in the contract marked unresolved. That last step performs no transfer and no external call — only a storage write, so it cannot fail.

The sender chooses

The registry is permissionless and append-only. An instruction names its own handler, and an id once bound can never be pointed somewhere else.

No privileged party

No admin key, no whitelist, no upgrade path. Skyhook adds nobody to trust, and inherits exactly the trust the CCTP deployment already requires.

Anyone can relay

The relayer holds no funds and takes no custody; it pays for one invocation. Run your own, or rely on someone else running theirs.

Send USDC that arrives already working

Point a Deposit instruction at any SEP-56 vault and the USDC lands as a position the recipient holds — no second transaction, and no USDC trustline, because vault shares live in the vault’s own storage. The vault address travels in the instruction, so switching to a different one is a change of parameter, not of code.

Deployed, and checkable

Every address below resolves on a public explorer. Testnet only, and not audited.