Skip to main content

Blinks on Sui

What happens when a link doesn't just point to a page — it carries a complete blockchain transaction?

A blink is a URL that encodes a Programmable Transaction Block (PTB). Share it anywhere a link can go — social post, email, QR code, physical tag. The recipient clicks, sees a transaction modal, approves, and the transaction executes. No app download. No separate wallet setup beyond the initial one-time step.

The Solana Origin

Solana introduced this pattern as Actions and Blinks in 2024. A blink URL resolves to a JSON spec describing the transaction. Wallets parse the spec and render a standard UI. The transaction executes without the user navigating to a dApp.

The key insight: if every link can carry a transaction, then every platform that carries links becomes a transaction surface. X posts, Discord messages, Telegram links — all become points of financial interaction.

Sui Equivalent

Sui's PTB model maps directly to this pattern:

ConceptSolanaSui
Transaction encodingAction JSON specPTB params in URL or QR
AtomicityTransactionPTB (up to 1,024 ops, ~390ms)
Wallet renderBlink UI (wallet extension)dApp Kit transaction modal
SponsorshipRelayer (optional)Sponsored tx (native)
OnboardingExisting wallet requiredzkLogin — OAuth → address

Sui's advantage: sponsored transactions mean the platform pays gas, and zkLogin means users don't need a pre-funded wallet. A new user can click a blink, sign in with Google, and execute a transaction in a single flow.

How It Works

1. Encode PTB as URL parameters
?module=link&fn=createLink&creator=0xABC&platform=p1&reward=100

2. User clicks link (social, email, QR code, NFC tag)

3. dApp Kit renders transaction modal
Shows: what the transaction does, gas cost, expected result

4. User approves
With existing wallet OR via zkLogin (OAuth flow)

5. PTB executes on-chain (~390ms)
Events emitted. State updated. Attribution recorded.

The user never visits a dApp directly. The transaction comes to them.

The intersection that makes this architecturally significant: a blink URL IS an attribution event.

When the link module creates a link object, it records the genealogy — who created it, who shared it, which platform carried it. Every blink share is a link creation. Every blink click is a potential conversion event. The collision module scores quality to prevent spam.

Creator mints content → generates blink URL
Sharer posts URL → link object created on-chain
Buyer clicks → transaction executes
Attribution automatically recorded → revenue splits run

No centralized affiliate platform. No cookie tracking. Purely on-chain attribution from the moment the URL is shared.

PTB Construction

// Encode blink action
const blinksUrl = new URL(`${APP_BASE}/action`);
blinksUrl.searchParams.set("module", "link");
blinksUrl.searchParams.set("fn", "createLink");
blinksUrl.searchParams.set("creator", creatorAddress);
blinksUrl.searchParams.set("platform", platformId);
blinksUrl.searchParams.set("reward", rewardAmount.toString());

// On click — decode and construct PTB
const tx = new Transaction();
tx.moveCall({
target: `${LINK_PKG}::link::create_link`,
arguments: [tx.object(platformId), tx.pure.address(creatorAddress), tx.pure.u64(rewardAmount)],
});

// Platform sponsors gas — user never holds SUI
const { digest } = await sponsoredExecute(tx, userAddress);

Use Cases

Use caseWhat the blink encodesWhat executes
Content attributionlink::createLinkRecords referral, sets reward
Prediction betprediction_game::placeBetStakes tokens, records position
NFT purchasekiosk::purchaseTransfers object, pays creator royalty
Device registrationdevice_registry::registerMints device identity object
Loyalty redemptionloyalty::redeemBurns points, delivers reward

Physical Tags

Blinks extend to physical space. A QR code is a blink. An NFC tag is a blink. A product label, a venue entrance, a machine — any surface that can carry a URL can carry a transaction.

Physical DePIN applications: a device scans a QR code to register on-chain, an installer taps an NFC tag to provision a sensor, a farmer scans a field marker to log an observation. The device_registry module's state machine transitions map directly to blink-triggered events.

Context

Questions

If every link on the internet became a potential transaction entry point — what does that do to the incentive structure of sharing?

  • What stops blink spam when anyone can create attribution links?
  • If the link IS the contract, who owns the relationship — the creator, the sharer, or the platform?
  • At what point does on-chain attribution become more trusted than first-party analytics?