Spurline
{{ walletLabel }} {{ netLabel }} wallet on another network

An attribution rail for shared positions on Robinhood Chain

Every shared position carries an attribution key.

The trader who brings a trade into the light earns a share of the fee that trade creates. Spurline carries one identifier intact from the share to the venue's fee record — and holds nothing else.

Follower landing screen
{{ trackAnim }}

The same key rides through every custody junction. Nothing is re-derived along the way.

Where attribution dies today

Between a trader publishing a position and a venue recording the fee it caused, the identity of the person who caused the trade is destroyed at one of five handoffs. The fee is always collected. It is never paid back.

  1. 1 · share_creation
    The position is posted with no identifier attached.
  2. 2 · link_relay
    The link is forwarded, screenshotted, quoted. Parameters fall off.
  3. 3 · surface_handoff
    Social app to wallet. Session context does not follow.
  4. 4 · venue_execution
    The venue executes without knowing who led here.
  5. 5 · fee_settlement
    The fee lands in venue revenue. No row exists to split.
Mint · Open · Settle

Mint

A wallet holding the position signs one mint message; the registry issues one opaque key and a link that carries it in the URL path.

Open

The link page binds the key to the follower's signing address, then hands off to the venue. Nothing is signed at Spurline.

Settle

Each attributed trade is one ledger row carrying the fee the venue actually collected; the sharer collects in the fee's own asset.

Spurline holds only the key.
Never requested list

Trust by mechanism, not reassurance.

No custody. Nothing deployed in the execution path. No account system — the only identity is the self-custodied wallet that signed the mint. No wallet request is issued before its full scope is stated on the same screen.

Published rules

Three roles. One is paid today.

Sharer

Holds the position, posts the link. Receives an identifier that can be paid.

Mint a link
Follower

Opens the link, trades at the venue. Receives a verifiable mark of provenance.

How a key is verified
Venue operator

Executes the trade, records the fee. Receives an attributable fee event.

Integration tiers

Sharer · mint session

Mint a link

1 · connect

Connect the wallet holding the position

Spurline reads the wallet address and its token holdings on {{ netLabel }} through the public RPC and explorer. No approval, no signature yet. Your wallet will be asked to switch to (or add) the network.

Several wallets are installed. Choose one:

{{ walletError }}

{{ walletLabel }} · {{ walletAddr }}

{{ walletError }}

2 · position

Choose one position

Reading balances from {{ netLabel }}…

This wallet holds nothing on {{ netLabel }} yet. Get test ETH and tokens from the faucet, then .

{{ positionsErr }}

Positions appear after connect.

3 · disclosure

Confirm what every follower will read first

The sharer of this link earns a share of the venue fee on trades you make through it. Spurline holds only the key. Your cost is the same as trading directly.
4 · route

Venue route

Only venues at the settling tier are offered — a venue that carries the key but cannot release funds would only create unpayable claims.

5 · sign

Sign the mint message

One wallet signature over the registry row: format version, minting wallet, position reference, venue route, timestamp, surface. It proves you held the position at this moment. It moves no funds and grants no approval.

{{ signHint }}

Key issued. The link is live; its clock started at issue and will not be extended.

Spurline

The sharer of this link earns a share of the venue fee. Spurline holds only the key.

Position: {{ mintedPosition }}
Shared by: {{ walletLabel }}
spurline.app/k/{{ mintedKeyFmt }}

Preview card as it unfurls in chat. The disclosure is the first line under the nameplate on every card.

Open the link page Earnings

The sharer of this link earns a share of the venue fee on trades you make through it. Spurline holds only the key. Your cost is the same as trading directly.

Position
{{ link.position }} · {{ link.venueName }}
In the sharer's words

“{{ link.note }}”

Attached key
{{ link.keyFmt }}
Shared by
{{ link.sharer }}
issued {{ link.issued }} · {{ link.stateLine }}
✓ {{ link.verifyLine }}
{{ link.verifyLine }}
Never requested
  • Seed phrase
  • Private key
  • Token approval
  • Signature before the venue
  • Wallet balance
  • Email or phone
This key is {{ link.state }}.
The key's clock froze at issue and is never extended. You can still trade at {{ link.venueName }} directly; no fee share will be attributed. Disposition: remint_required.
Step 1 of 2 · attach the key to your signing address

Connecting reads your address only, so the venue's fee record can be matched to this key. No signature, no approval. {{ readinessNote }}

{{ walletError }}

Wrong chain

Your wallet is on another network. The key binds only on {{ netLabel }}. Disposition: retry_in_session.

{{ walletError }}

Key bound
{{ binding.addr }}
bind_sequence {{ binding.seq }} · {{ binding.ts }}

This wallet holds no ETH on {{ netLabel }}. The binding stays valid inside its window — fund it (faucet) and return with the same link. Disposition: resume_later_same_key.

Opens {{ venueTarget }} in a new tab. Nothing is signed here.

Before you leave: the sharer of this link earns a share of the venue fee on trades you make through it. Spurline holds only the key. Your cost is the same as trading directly.

You will sign at {{ link.venueName }}. The key travels as {{ link.carriage }}.

Handed off to {{ link.venueName }}

Trade in the venue tab from the bound address. Afterwards, attribute the transaction here: Spurline reads the receipt from {{ netLabel }}, checks that the sender is the bound address, and writes one ledger row. The key travels as {{ link.carriage }}.

Sharer's ledger
{{ t.short }} · {{ t.method }} · {{ t.when }}

{{ tradeErr }}

{{ tradeLine }}

Resolving key {{ routeKeyFmt }} in the registry…

No live key at this address

The path {{ routeKeyFmt }} does not resolve to a registry row. Keys are never reused or reconstructed; the sharer must mint a new one.

Back to Spurline

Sharer · read-only ledger

Earnings

The ledger is keyed by minting wallet. Connect to read your rows. Every row is one attributed transaction on {{ netLabel }}, linked to its receipt — never an estimate, never a pending balance.

{{ walletError }}

Amount states specimen
{{ walletLabel }} · {{ walletAddr }} · {{ registryLabel }}

{{ ledgerErr }}

Cleared to collect
{{ g.amount }}
{{ g.usd }}
One permissionless claim transaction from the bound wallet. Spurline never holds the funds.
Observed · not a balance
{{ accruingLine }}
Network fee measured from each receipt. Venue fee amounts arrive through the adapter.
Held
{{ heldLine }}
Each held row names the rule that holds it.
Claim recorded · provenance chain
fee_event
{{ claim.feeEvent }}
ledger_row
{{ claim.row }}
entitlement_root
{{ claim.root }}
claim_transaction
{{ claim.tx }}

Attributed trades

StateVenue · feeKey · tradeAmountNote
{{ r.label }}
{{ r.venueName }}
{{ r.feeType }}
{{ r.keyFmt }}
{{ r.tsFmt }}
{{ r.amountFmt }}
{{ r.usd }}
{{ r.note }}
No attributed transactions yet. Share a minted link; each transaction a follower attributes through it appears here.

Your links

{{ l.keyFmt }}{{ l.position }} · {{ l.venueName }}
{{ l.state }} · issued {{ l.issued }} · expires {{ l.expires }} · opened {{ l.opened }} / resolved {{ l.resolved }} / executed {{ l.executed }}
Revoke {{ l.keyFmt }}? Open links stop resolving immediately. Rows already attributed stay. This cannot be undone.
No links minted from this wallet. Mint one.

Competing-key decision

When more than one key touched a trade, exactly one wins the whole sharer share. The ladder is total: evidence grade → age verdict → binding recency → bind sequence.

record
trade {{ dec.tradeRef }}
venue {{ dec.venue }}
evaluated {{ dec.evaluated }}
rule_version fee-split-v3
won
{{ dec.winKey }}
bound_address_join
binding_recency {{ dec.winTs }}
bind_sequence {{ dec.winSeq }}
lost · other key
{{ dec.loseKey }} (redacted)
bound_address_join
earlier binding
bind_sequence {{ dec.loseSeq }}

Venue operators

An adapter Spurline builds. A venue installs.

Spurline never enters the execution path and adds no unmeasured gas to a follower's trade. The boundary sits at your fee event: everything before it Spurline measures; everything at or inside it is yours and arrives through the adapter.

What changed — record plate

Five cumulative tiers

{{ t.name }}
{{ t.desc }}

Payout authorization is signed before any code is written. Only venues at settling appear in a sharer's mint menu.

Integrated and observed venues

VenueClassTierCarriage modeFee attributed
{{ v.name }} {{ v.cls }} {{ v.tier }} {{ v.carriage }} {{ v.fee }}

Four prerequisites

  • trade_record_visibilitySpurline can read per-trade records.
  • key_pass_throughThe key reaches the fee event in one declared carriage mode.
  • fee_amount_visibilityFee amounts in integer base units of the asset actually collected.
  • payout_authorizationA signed release of the attributed share into a claim contract each cycle.

Request an adapter

Review starts at tier observable: we verify trade record visibility before anything else.

Request recorded for {{ vfName }}. It now appears below as not_integrated pending record visibility.

Published rules · verifiable by identifier

What Spurline does, and refuses to do

Every claim below can be checked against chain state, a venue record, the Spurline registry, or a published rule — by copyable identifier, not by link.

Copy and Open at venue glyphs
The visible track
{{ g.id }}

{{ g.title }}

  • {{ it }}

Standing rules

A Spurline outage may lose attribution but never blocks a trade. Spurline never estimates a fee. No amount is moved or reduced without the reason written into its row. There is no clawback after settlement, and unclaimed funds return to the venue — never to another sharer.