Skip to content

Crowdsale pallet ​

Derived from live runtime metadata on TRN root (pallet index 49, captured 2026-05-02). For prose-style documentation see Crowdsale on the curated reference side.

Pallet index
49
Calls
8
Events
9
Errors
20
Storage items
6
Constants
7

Calls (extrinsics) ​

Crowdsale.initialize ​

See [Pallet::initialize].

ts
api.tx.crowdsale.initialize(payment_asset_id: u32, collection_id: u32, soft_cap_price: u128, sale_duration: u32, voucher_name: Option<Bytes>, voucher_symbol: Option<Bytes>)
ArgumentTypeDoc
payment_asset_idu32AssetId
collection_idu32CollectionUuid
soft_cap_priceu128Balance
sale_durationu32BlockNumberFor<T>
voucher_nameOption&lt;Bytes&gt;Option<BoundedVec<u8, T::StringLimit>>
voucher_symbolOption&lt;Bytes&gt;Option<BoundedVec<u8, T::StringLimit>>

Call index: 0

Crowdsale.enable ​

See [Pallet::enable].

ts
api.tx.crowdsale.enable(sale_id: u64)
ArgumentTypeDoc
sale_idu64SaleId

Call index: 1

Crowdsale.participate ​

See [Pallet::participate].

ts
api.tx.crowdsale.participate(sale_id: u64, amount: u128)
ArgumentTypeDoc
sale_idu64SaleId
amountu128Balance

Call index: 2

Crowdsale.distribute_crowdsale_rewards ​

See [Pallet::distribute_crowdsale_rewards].

ts
api.tx.crowdsale.distribute_crowdsale_rewards()

Call index: 3

Crowdsale.claim_voucher ​

See [Pallet::claim_voucher].

ts
api.tx.crowdsale.claim_voucher(sale_id: u64)
ArgumentTypeDoc
sale_idu64SaleId

Call index: 4

Crowdsale.redeem_voucher ​

See [Pallet::redeem_voucher].

ts
api.tx.crowdsale.redeem_voucher(sale_id: u64, quantity: u32)
ArgumentTypeDoc
sale_idu64SaleId
quantityu32TokenCount

Call index: 5

Crowdsale.proxy_vault_call ​

See [Pallet::proxy_vault_call].

ts
api.tx.crowdsale.proxy_vault_call(sale_id: u64, call: Call)
ArgumentTypeDoc
sale_idu64SaleId
callCallBox<<T as Config>::RuntimeCall>

Call index: 6

Crowdsale.try_force_distribution ​

See [Pallet::try_force_distribution].

ts
api.tx.crowdsale.try_force_distribution(sale_id: u64)
ArgumentTypeDoc
sale_idu64SaleId

Call index: 7

Events ​

Crowdsale.CrowdsaleCreated ​

Crowdsale created

FieldTypeDoc
sale_idu64
info{"status":"PalletCrowdsaleSaleStatus","admin":"SeedPrimitivesSignatureAccountId20","vault":"SeedPrimitivesSignatureAccountId20","paymentAssetId":"u32","rewardCollectionId":"u32","softCapPrice":"u128","fundsRaised":"u128","participantCount":"u64","voucherAssetId":"u32","duration":"u32"}

Crowdsale.VaultCallProxied ​

Call proxied

FieldTypeDoc
sale_idu64
who[u8;20]
vault[u8;20]
callCall

Crowdsale.CrowdsaleEnabled ​

Crowdsale enabled

FieldTypeDoc
sale_idu64
info{"status":"PalletCrowdsaleSaleStatus","admin":"SeedPrimitivesSignatureAccountId20","vault":"SeedPrimitivesSignatureAccountId20","paymentAssetId":"u32","rewardCollectionId":"u32","softCapPrice":"u128","fundsRaised":"u128","participantCount":"u64","voucherAssetId":"u32","duration":"u32"}
end_blocku32

Crowdsale.CrowdsaleParticipated ​

Crowdsale participated

FieldTypeDoc
sale_idu64
who[u8;20]
assetu32
amountu128

Crowdsale.CrowdsaleNFTRedeemed ​

Crowdsale NFT redeemed

FieldTypeDoc
sale_idu64
who[u8;20]
collection_idu32
quantityu32

Crowdsale.CrowdsaleClosed ​

Crowdsale closed

FieldTypeDoc
sale_idu64
info{"status":"PalletCrowdsaleSaleStatus","admin":"SeedPrimitivesSignatureAccountId20","vault":"SeedPrimitivesSignatureAccountId20","paymentAssetId":"u32","rewardCollectionId":"u32","softCapPrice":"u128","fundsRaised":"u128","participantCount":"u64","voucherAssetId":"u32","duration":"u32"}

Crowdsale.CrowdsaleManualDistribution ​

Crowdsale distribution was manually triggered

FieldTypeDoc
sale_idu64
info{"status":"PalletCrowdsaleSaleStatus","admin":"SeedPrimitivesSignatureAccountId20","vault":"SeedPrimitivesSignatureAccountId20","paymentAssetId":"u32","rewardCollectionId":"u32","softCapPrice":"u128","fundsRaised":"u128","participantCount":"u64","voucherAssetId":"u32","duration":"u32"}
who[u8;20]

Crowdsale.CrowdsaleVouchersClaimed ​

Crowdsale vouchers claimed

FieldTypeDoc
sale_idu64
who[u8;20]
amountu128

Crowdsale.CrowdsaleDistributionComplete ​

Crowdsale distribution has been completed and all vouchers paid out

FieldTypeDoc
sale_idu64
vouchers_distributedu128

Errors ​

Crowdsale.AccessDenied ​

Access denied

Crowdsale.NoAvailableIds ​

There are no remaining sale ids

Crowdsale.InvalidBlockRange ​

The start block is greater than the end block

Crowdsale.CrowdsaleNotFound ​

Crowdsale was not found

Crowdsale.InvalidCrowdsaleStatus ​

Invalid crowdsale status

Crowdsale.CrowdsaleNotEnabled ​

Crowdsale is not enabled

Crowdsale.InvalidSoftCapPrice ​

The soft cap price must be greater than zero

Crowdsale.InvalidAsset ​

Invalid asset id

Crowdsale.InvalidMaxIssuance ​

The collection max issuance is too high

Crowdsale.InvalidAmount ​

The amount must not be zero

Crowdsale.InvalidQuantity ​

Redemption quantity must not be zero

Crowdsale.VoucherClaimFailed ​

The voucher claim could not be completed due to invalid voucher supply

Crowdsale.MaxIssuanceNotSet ​

The NFT collection max issuance is not set

Crowdsale.CollectionIssuanceNotZero ​

The NFT collection must not contain any minted NFTs

Crowdsale.CollectionPublicMintable ​

The NFT collection must not be mintable

Crowdsale.TooManySales ​

There are too many sales queued for this block, try again on a different block

Crowdsale.VouchersAlreadyClaimed ​

Vouchers have already been claimed

Crowdsale.SaleDistributionFailed ​

Automatic trigger of sales distribution has failed

Crowdsale.SaleDurationTooLong ​

The sale duration is too long

Crowdsale.ExtrinsicForbidden ​

Extrinsic not allowed

Storage ​

Crowdsale.NextSaleId ​

The next available sale id

ts
await api.query.crowdsale.nextSaleId()

Returns: u64

Modifier: Default

Crowdsale.SaleInfo ​

Map from sale id to its information

ts
await api.query.crowdsale.saleInfo(key1)
  • Key: u64 (hasher: Twox64Concat)
  • Returns: {"status":"PalletCrowdsaleSaleStatus","admin":"SeedPrimitivesSignatureAccountId20","vault":"SeedPrimitivesSignatureAccountId20","paymentAssetId":"u32","rewardCollectionId":"u32","softCapPrice":"u128","fundsRaised":"u128","participantCount":"u64","voucherAssetId":"u32","duration":"u32"}

Modifier: Optional

Crowdsale.SaleParticipation ​

User participation in the sale sale_id -> user -> payment_asset contribution amount

ts
await api.query.crowdsale.saleParticipation(key1, key2)
  • Key: (u64,SeedPrimitivesSignatureAccountId20) (hashers: Twox64Concat, Twox64Concat)
  • Returns: u128

Modifier: Optional

Crowdsale.SaleEndBlocks ​

Map from block number to the sales that will end at that block The tuple represents the sale id and the current sale participant distribution index

ts
await api.query.crowdsale.saleEndBlocks(key1)
  • Key: u32 (hasher: Twox64Concat)
  • Returns: Vec<u64>

Modifier: Optional

Crowdsale.SaleDistribution ​

A list of all sales currently being distributed

ts
await api.query.crowdsale.saleDistribution()

Returns: Vec<u64>

Modifier: Default

Crowdsale.NextUnsignedAt ​

Stores next unsigned tx block number

ts
await api.query.crowdsale.nextUnsignedAt()

Returns: u32

Modifier: Default

Constants ​

Crowdsale.PalletId ​

This pallet's Id, used for deriving a sovereign account ID

Type: [u8;8]
SCALE-encoded value: 0x63726f776473616c

Crowdsale.StringLimit ​

The maximum length of a intermediary sale voucher asset name and symbol

Type: u32
SCALE-encoded value: 0x32000000

Crowdsale.MaxSalesPerBlock ​

The maximum number of sales that can be queued for completion in a single block

Type: u32
SCALE-encoded value: 0x05000000

Crowdsale.MaxConsecutiveSales ​

The maximum number of sales that can be active at one time

Type: u32
SCALE-encoded value: 0xd0070000

Crowdsale.MaxPaymentsPerBlock ​

The maximum number of payments that can be processed in the offchain worker per block

Type: u32
SCALE-encoded value: 0x64000000

Crowdsale.MaxSaleDuration ​

The maximum duration of a sale

Type: u32
SCALE-encoded value: 0xc0a91d00

Crowdsale.UnsignedInterval ​

Unsigned transaction interval

Type: u32
SCALE-encoded value: 0x07000000

Source: live chain metadata from wss://root.rootnet.live/archive/ws · captured 2026-05-02

Curated independently by Codeology. Source-attributed reference for The Root Network. Not affiliated with Futureverse / TRN Labs.