Skip to content

Crowdloans

A crowdloan is a native, on-chain fundraiser. One account opens a pot with a hard target, anyone contributes TAO toward it, and only if the target is hit in full does the money move — either to an address, or to fire a pre-agreed on-chain action. If it misses the target, everyone gets their TAO back automatically. It is live on Finney mainnet at spec 437 (the generic pallets/crowdloan pallet).

This is not the Polkadot parachain-auction crowdloan (bonding DOT to win a slot). Bittensor’s is a general-purpose pot: raise TAO for any purpose, then either sweep it to one address or dispatch one configured on-chain call. The headline purpose today is launching a subnet with pooled capital and sharing its emissions with backers.

Two audiences, one mechanism:

  • Creators — someone who needs a lump of TAO they don’t want to (or can’t) front alone. The canonical case: the subnet lock cost to register a new subnet is large, so a would-be subnet operator raises it from a community and pays backers out of the subnet’s future emissions.
  • Contributors — anyone who wants exposure to that venture. You pledge TAO into the pot; if the raise succeeds you’re wired into whatever the finalize step does (for example, a pro-rata share of a subnet’s emission dividends); if it fails you’re refunded in full.

Because the pot is enforced by the runtime, neither side has to trust the other with custody. The TAO sits in a chain-derived funds account (PalletId "bt/cloan") that no human holds the keys to — it can only be moved by the pallet’s own rules.

Every crowdloan walks the same path. All calls are plain Signed origins, so a multisig or proxy can drive any of them.

  • create — you open the pot. You set the cap (the exact target), the minimum contribution, the end block (deadline), and exactly one finalize route. You also lock a deposit (your own seed, ≥ 10 TAO), which counts as your first contribution and can’t be withdrawn while the loan is live.
  • contribute — anyone sends TAO toward the cap (each pledge ≥ the loan’s minimum). A pledge that would overshoot the cap is trimmed to exactly what’s left. Contributions are escrowed in the funds account, not the creator’s wallet.
  • finalize — only callable by the creator, only once raised == cap. This is the payout: it either transfers the whole pot to the target address, or dispatches the configured call (with the creator as origin). All-or-nothing — you cannot finalize a half-full pot.
  • withdraw / refund — the escape hatches while not finalized. Any contributor can withdraw their own pledge; and if the loan fails, the creator calls refund to return everyone’s TAO (batched — see the pitfall below).
  • dissolve — creator-only cleanup once all non-creator contributions are refunded: wipes the loan from storage and returns the creator’s deposit.

There are also owner-only tuning calls while the loan is open — update_min_contribution, update_end, and update_cap — for adjusting the parameters before the cap is met.

create (deposit ≥10 TAO, set cap + deadline + ONE finalize route)
↓ contribute ×N (escrowed in funds account)
├─ raised == cap → finalize → transfer pot OR dispatch call
└─ deadline hit, cap missed → refund everyone → dissolve

The two finalize routes — pick exactly one

Section titled “The two finalize routes — pick exactly one”

At create you must supply either a target_address or a call — never both, never neither (the chain rejects it as InvalidFinalizationConfig). This single choice defines what the raise is for.

RouteWhat finalize doesTypical use
target_addressTransfers the entire raised pot to that account in one shot.Pooling TAO for a treasury, a purchase, a grant — anywhere a plain payout is the goal.
callDispatches one pre-stored on-chain action, with the creator as the signing origin, able to spend the pot.Programmatic outcomes — above all, register a leased subnet (register_leased_network).

The flagship use: launching a subnet with a crowdloan

Section titled “The flagship use: launching a subnet with a crowdloan”

This is why the pallet exists in practice. Registering a subnet costs a large lock in TAO. Rather than one person funding it, the subnet-leasing flow raises that lock from a crowd and pays them back out of the subnet’s emissions.

It works by pointing a crowdloan’s call route at register_leased_network. When the cap is hit and the creator finalizes, the chain, in one atomic step:

  1. Registers a fresh subnet, paying the lock cost straight from the pooled funds.
  2. Creates a lease-owned coldkey/hotkey and gives the beneficiary (the operator) a proxy to run the subnet — they operate it without ever holding the raised capital.
  3. Records each contributor’s share of emissions, pro-rata to what they put in, and sets the lease hotkey’s take to 0% so contributors receive their dividends in full.
  4. Refunds the leftover — any cap not consumed by the lock cost is returned to contributors (and the beneficiary) pro-rata to their share.
contributor_emissions_share = emissions_share × (your_contribution / total_raised)

From then on, as the subnet earns, contributors receive their slice of emissions as dividends — passive yield on the TAO they pledged. The operator does the work; the backers funded it and share the upside.

Lease typeWhat happens
Fixed-term (end_block set)Contributors earn their emission share until the end block. After it passes, the beneficiary calls terminate_lease and full subnet ownership transfers to them — they’ve effectively bought the subnet on instalments paid by its own emissions.
Perpetual (no end_block)The lease never terminates; contributors keep receiving their emission share for as long as the subnet lives. The beneficiary operates it indefinitely but never solely owns it.

The rules that bite — parameters & guards

Section titled “The rules that bite — parameters & guards”
ParameterValue (spec 437)Meaning
Minimum deposit10 TAOThe creator’s own mandatory seed. Counts as contribution #1; can’t be withdrawn while the loan runs.
Absolute min contribution0.1 TAOFloor on any pledge. The creator can set the loan’s own minimum higher, never lower.
Duration window7 – 60 daysThe end block must be at least 7 days out and at most 60 days out from creation.
Max contributors500Hard cap on distinct contributors per loan.
Capset by creatorMust exceed the deposit. Finalize is impossible until raised equals it exactly.

There’s no dedicated “team crowdloan” feature, and none is needed. Every extrinsic is ensure_signed, so:

  • A multisig can be the creator — the raise is governed by M-of-N approvals.
  • The target address can be any account, including another multisig or a treasury.
  • A proxy can drive contribute / finalize on behalf of a cold multisig.

What the pallet does not do is per-contributor reward splitting on its own — that logic lives in the consumer. For subnet leasing, the leasing pallet computes and stores each backer’s emission share; a bare target_address raise just moves a lump sum with no split.

  1. A crowdloan is a chain-enforced, all-or-nothing pot of TAO with a hard cap and a deadline.
  2. create sets the cap, deadline, min contribution, a ≥10 TAO deposit, and exactly one finalize route.
  3. Anyone contributes (≥0.1 TAO, up to 500 backers); TAO is escrowed in a keyless pallet account.
  4. finalize (creator-only, cap must be hit exactly) either transfers the pot or dispatches one on-chain call.
  5. Miss the cap → refund (batched, 50 at a time) → dissolve. Contributors can withdraw any time before finalize.
  6. The flagship use is subnet leasing: raise the lock cost, register the subnet, run it via a beneficiary proxy.
  7. Contributors earn a pro-rata share of the subnet’s emissions (0% take), plus a refund of the unused cap.
  8. Fixed-term lease → subnet transfers to the operator at the end; perpetual → contributors earn forever.