* Bump metadata * Add missing @types/jest * Update tests for new metadata * CHANGELOG for linked map removals * expand re-added check
9032 lines
308 KiB
JSON
9032 lines
308 KiB
JSON
{
|
|
"magicNumber": 1635018093,
|
|
"metadata": {
|
|
"V11": {
|
|
"modules": [
|
|
{
|
|
"name": "System",
|
|
"storage": {
|
|
"prefix": "System",
|
|
"items": [
|
|
{
|
|
"name": "Account",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Map": {
|
|
"hasher": "Blake2_128Concat",
|
|
"key": "AccountId",
|
|
"value": "AccountInfo",
|
|
"linked": false
|
|
}
|
|
},
|
|
"fallback": "0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
"documentation": [
|
|
" The full account information for a particular account ID."
|
|
]
|
|
},
|
|
{
|
|
"name": "ExtrinsicCount",
|
|
"modifier": "Optional",
|
|
"type": {
|
|
"Plain": "u32"
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" Total extrinsics count for the current block."
|
|
]
|
|
},
|
|
{
|
|
"name": "AllExtrinsicsWeight",
|
|
"modifier": "Optional",
|
|
"type": {
|
|
"Plain": "Weight"
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" Total weight for all extrinsics put together, for the current block."
|
|
]
|
|
},
|
|
{
|
|
"name": "AllExtrinsicsLen",
|
|
"modifier": "Optional",
|
|
"type": {
|
|
"Plain": "u32"
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" Total length (in bytes) for all extrinsics put together, for the current block."
|
|
]
|
|
},
|
|
{
|
|
"name": "BlockHash",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Map": {
|
|
"hasher": "Twox64Concat",
|
|
"key": "BlockNumber",
|
|
"value": "Hash",
|
|
"linked": false
|
|
}
|
|
},
|
|
"fallback": "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
"documentation": [
|
|
" Map of block numbers to block hashes."
|
|
]
|
|
},
|
|
{
|
|
"name": "ExtrinsicData",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Map": {
|
|
"hasher": "Twox64Concat",
|
|
"key": "u32",
|
|
"value": "Bytes",
|
|
"linked": false
|
|
}
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" Extrinsics data for the current block (maps an extrinsic's index to its data)."
|
|
]
|
|
},
|
|
{
|
|
"name": "Number",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Plain": "BlockNumber"
|
|
},
|
|
"fallback": "0x00000000",
|
|
"documentation": [
|
|
" The current block number being processed. Set by `execute_block`."
|
|
]
|
|
},
|
|
{
|
|
"name": "ParentHash",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Plain": "Hash"
|
|
},
|
|
"fallback": "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
"documentation": [
|
|
" Hash of the previous block."
|
|
]
|
|
},
|
|
{
|
|
"name": "ExtrinsicsRoot",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Plain": "Hash"
|
|
},
|
|
"fallback": "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
"documentation": [
|
|
" Extrinsics root of the current block, also part of the block header."
|
|
]
|
|
},
|
|
{
|
|
"name": "Digest",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Plain": "DigestOf"
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" Digest of the current block, also part of the block header."
|
|
]
|
|
},
|
|
{
|
|
"name": "Events",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Plain": "Vec<EventRecord>"
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" Events deposited for the current block."
|
|
]
|
|
},
|
|
{
|
|
"name": "EventCount",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Plain": "EventIndex"
|
|
},
|
|
"fallback": "0x00000000",
|
|
"documentation": [
|
|
" The number of events in the `Events<T>` list."
|
|
]
|
|
},
|
|
{
|
|
"name": "EventTopics",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Map": {
|
|
"hasher": "Blake2_128Concat",
|
|
"key": "Hash",
|
|
"value": "Vec<(BlockNumber,EventIndex)>",
|
|
"linked": false
|
|
}
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" Mapping between a topic (represented by T::Hash) and a vector of indexes",
|
|
" of events in the `<Events<T>>` list.",
|
|
"",
|
|
" All topic vectors have deterministic storage locations depending on the topic. This",
|
|
" allows light-clients to leverage the changes trie storage tracking mechanism and",
|
|
" in case of changes fetch the list of events of interest.",
|
|
"",
|
|
" The value has the type `(T::BlockNumber, EventIndex)` because if we used only just",
|
|
" the `EventIndex` then in case if the topic has the same contents on the next block",
|
|
" no notification will be triggered thus the event might be lost."
|
|
]
|
|
},
|
|
{
|
|
"name": "LastRuntimeUpgrade",
|
|
"modifier": "Optional",
|
|
"type": {
|
|
"Plain": "LastRuntimeUpgradeInfo"
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" Stores the `spec_version` and `spec_name` of when the last runtime upgrade happened."
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"calls": [
|
|
{
|
|
"name": "fill_block",
|
|
"args": [
|
|
{
|
|
"name": "_ratio",
|
|
"type": "Perbill"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" A dispatch that will fill the block weight up to the given ratio."
|
|
]
|
|
},
|
|
{
|
|
"name": "remark",
|
|
"args": [
|
|
{
|
|
"name": "_remark",
|
|
"type": "Bytes"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Make some on-chain remark."
|
|
]
|
|
},
|
|
{
|
|
"name": "set_heap_pages",
|
|
"args": [
|
|
{
|
|
"name": "pages",
|
|
"type": "u64"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Set the number of pages in the WebAssembly environment's heap."
|
|
]
|
|
},
|
|
{
|
|
"name": "set_code",
|
|
"args": [
|
|
{
|
|
"name": "code",
|
|
"type": "Bytes"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Set the new runtime code."
|
|
]
|
|
},
|
|
{
|
|
"name": "set_code_without_checks",
|
|
"args": [
|
|
{
|
|
"name": "code",
|
|
"type": "Bytes"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Set the new runtime code without doing any checks of the given `code`."
|
|
]
|
|
},
|
|
{
|
|
"name": "set_changes_trie_config",
|
|
"args": [
|
|
{
|
|
"name": "changes_trie_config",
|
|
"type": "Option<ChangesTrieConfiguration>"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Set the new changes trie configuration."
|
|
]
|
|
},
|
|
{
|
|
"name": "set_storage",
|
|
"args": [
|
|
{
|
|
"name": "items",
|
|
"type": "Vec<KeyValue>"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Set some items of storage."
|
|
]
|
|
},
|
|
{
|
|
"name": "kill_storage",
|
|
"args": [
|
|
{
|
|
"name": "keys",
|
|
"type": "Vec<Key>"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Kill some items from storage."
|
|
]
|
|
},
|
|
{
|
|
"name": "kill_prefix",
|
|
"args": [
|
|
{
|
|
"name": "prefix",
|
|
"type": "Key"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Kill all storage items with a key that starts with the given prefix."
|
|
]
|
|
},
|
|
{
|
|
"name": "suicide",
|
|
"args": [],
|
|
"documentation": [
|
|
" Kill the sending account, assuming there are no references outstanding and the composite",
|
|
" data is equal to its default value."
|
|
]
|
|
},
|
|
{
|
|
"name": "migrate_accounts",
|
|
"args": [
|
|
{
|
|
"name": "accounts",
|
|
"type": "Vec<AccountId>"
|
|
}
|
|
],
|
|
"documentation": []
|
|
}
|
|
],
|
|
"events": [
|
|
{
|
|
"name": "ExtrinsicSuccess",
|
|
"args": [
|
|
"DispatchInfo"
|
|
],
|
|
"documentation": [
|
|
" An extrinsic completed successfully."
|
|
]
|
|
},
|
|
{
|
|
"name": "ExtrinsicFailed",
|
|
"args": [
|
|
"DispatchError",
|
|
"DispatchInfo"
|
|
],
|
|
"documentation": [
|
|
" An extrinsic failed."
|
|
]
|
|
},
|
|
{
|
|
"name": "CodeUpdated",
|
|
"args": [],
|
|
"documentation": [
|
|
" `:code` was updated."
|
|
]
|
|
},
|
|
{
|
|
"name": "NewAccount",
|
|
"args": [
|
|
"AccountId"
|
|
],
|
|
"documentation": [
|
|
" A new account was created."
|
|
]
|
|
},
|
|
{
|
|
"name": "KilledAccount",
|
|
"args": [
|
|
"AccountId"
|
|
],
|
|
"documentation": [
|
|
" An account was reaped."
|
|
]
|
|
}
|
|
],
|
|
"constants": [],
|
|
"errors": [
|
|
{
|
|
"name": "InvalidSpecName",
|
|
"documentation": [
|
|
" The name of specification does not match between the current runtime",
|
|
" and the new runtime."
|
|
]
|
|
},
|
|
{
|
|
"name": "SpecVersionNeedsToIncrease",
|
|
"documentation": [
|
|
" The specification version is not allowed to decrease between the current runtime",
|
|
" and the new runtime."
|
|
]
|
|
},
|
|
{
|
|
"name": "FailedToExtractRuntimeVersion",
|
|
"documentation": [
|
|
" Failed to extract the runtime version from the new runtime.",
|
|
"",
|
|
" Either calling `Core_version` or decoding `RuntimeVersion` failed."
|
|
]
|
|
},
|
|
{
|
|
"name": "NonDefaultComposite",
|
|
"documentation": [
|
|
" Suicide called when the account has non-default composite data."
|
|
]
|
|
},
|
|
{
|
|
"name": "NonZeroRefCount",
|
|
"documentation": [
|
|
" There is a non-zero reference count preventing the account from being purged."
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Utility",
|
|
"storage": {
|
|
"prefix": "Utility",
|
|
"items": [
|
|
{
|
|
"name": "Multisigs",
|
|
"modifier": "Optional",
|
|
"type": {
|
|
"DoubleMap": {
|
|
"hasher": "Twox64Concat",
|
|
"key1": "AccountId",
|
|
"key2": "[u8;32]",
|
|
"value": "Multisig",
|
|
"key2Hasher": "Blake2_128Concat"
|
|
}
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" The set of open multisig operations."
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"calls": [
|
|
{
|
|
"name": "batch",
|
|
"args": [
|
|
{
|
|
"name": "calls",
|
|
"type": "Vec<Call>"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Send a batch of dispatch calls.",
|
|
"",
|
|
" This will execute until the first one fails and then stop.",
|
|
"",
|
|
" May be called from any origin.",
|
|
"",
|
|
" - `calls`: The calls to be dispatched from the same origin.",
|
|
"",
|
|
" # <weight>",
|
|
" - The sum of the weights of the `calls`.",
|
|
" - One event.",
|
|
" # </weight>",
|
|
"",
|
|
" This will return `Ok` in all circumstances. To determine the success of the batch, an",
|
|
" event is deposited. If a call failed and the batch was interrupted, then the",
|
|
" `BatchInterrupted` event is deposited, along with the number of successful calls made",
|
|
" and the error of the failed call. If all were successful, then the `BatchCompleted`",
|
|
" event is deposited."
|
|
]
|
|
},
|
|
{
|
|
"name": "as_sub",
|
|
"args": [
|
|
{
|
|
"name": "index",
|
|
"type": "u16"
|
|
},
|
|
{
|
|
"name": "call",
|
|
"type": "Call"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Send a call through an indexed pseudonym of the sender.",
|
|
"",
|
|
" The dispatch origin for this call must be _Signed_.",
|
|
"",
|
|
" # <weight>",
|
|
" - The weight of the `call` + 10,000.",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "as_multi",
|
|
"args": [
|
|
{
|
|
"name": "threshold",
|
|
"type": "u16"
|
|
},
|
|
{
|
|
"name": "other_signatories",
|
|
"type": "Vec<AccountId>"
|
|
},
|
|
{
|
|
"name": "maybe_timepoint",
|
|
"type": "Option<Timepoint>"
|
|
},
|
|
{
|
|
"name": "call",
|
|
"type": "Call"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Register approval for a dispatch to be made from a deterministic composite account if",
|
|
" approved by a total of `threshold - 1` of `other_signatories`.",
|
|
"",
|
|
" If there are enough, then dispatch the call.",
|
|
"",
|
|
" Payment: `MultisigDepositBase` will be reserved if this is the first approval, plus",
|
|
" `threshold` times `MultisigDepositFactor`. It is returned once this dispatch happens or",
|
|
" is cancelled.",
|
|
"",
|
|
" The dispatch origin for this call must be _Signed_.",
|
|
"",
|
|
" - `threshold`: The total number of approvals for this dispatch before it is executed.",
|
|
" - `other_signatories`: The accounts (other than the sender) who can approve this",
|
|
" dispatch. May not be empty.",
|
|
" - `maybe_timepoint`: If this is the first approval, then this must be `None`. If it is",
|
|
" not the first approval, then it must be `Some`, with the timepoint (block number and",
|
|
" transaction index) of the first approval transaction.",
|
|
" - `call`: The call to be executed.",
|
|
"",
|
|
" NOTE: Unless this is the final approval, you will generally want to use",
|
|
" `approve_as_multi` instead, since it only requires a hash of the call.",
|
|
"",
|
|
" Result is equivalent to the dispatched result if `threshold` is exactly `1`. Otherwise",
|
|
" on success, result is `Ok` and the result from the interior call, if it was executed,",
|
|
" may be found in the deposited `MultisigExecuted` event.",
|
|
"",
|
|
" # <weight>",
|
|
" - `O(S + Z + Call)`.",
|
|
" - Up to one balance-reserve or unreserve operation.",
|
|
" - One passthrough operation, one insert, both `O(S)` where `S` is the number of",
|
|
" signatories. `S` is capped by `MaxSignatories`, with weight being proportional.",
|
|
" - One call encode & hash, both of complexity `O(Z)` where `Z` is tx-len.",
|
|
" - One encode & hash, both of complexity `O(S)`.",
|
|
" - Up to one binary search and insert (`O(logS + S)`).",
|
|
" - I/O: 1 read `O(S)`, up to 1 mutate `O(S)`. Up to one remove.",
|
|
" - One event.",
|
|
" - The weight of the `call`.",
|
|
" - Storage: inserts one item, value size bounded by `MaxSignatories`, with a",
|
|
" deposit taken for its lifetime of",
|
|
" `MultisigDepositBase + threshold * MultisigDepositFactor`.",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "approve_as_multi",
|
|
"args": [
|
|
{
|
|
"name": "threshold",
|
|
"type": "u16"
|
|
},
|
|
{
|
|
"name": "other_signatories",
|
|
"type": "Vec<AccountId>"
|
|
},
|
|
{
|
|
"name": "maybe_timepoint",
|
|
"type": "Option<Timepoint>"
|
|
},
|
|
{
|
|
"name": "call_hash",
|
|
"type": "[u8;32]"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Register approval for a dispatch to be made from a deterministic composite account if",
|
|
" approved by a total of `threshold - 1` of `other_signatories`.",
|
|
"",
|
|
" Payment: `MultisigDepositBase` will be reserved if this is the first approval, plus",
|
|
" `threshold` times `MultisigDepositFactor`. It is returned once this dispatch happens or",
|
|
" is cancelled.",
|
|
"",
|
|
" The dispatch origin for this call must be _Signed_.",
|
|
"",
|
|
" - `threshold`: The total number of approvals for this dispatch before it is executed.",
|
|
" - `other_signatories`: The accounts (other than the sender) who can approve this",
|
|
" dispatch. May not be empty.",
|
|
" - `maybe_timepoint`: If this is the first approval, then this must be `None`. If it is",
|
|
" not the first approval, then it must be `Some`, with the timepoint (block number and",
|
|
" transaction index) of the first approval transaction.",
|
|
" - `call_hash`: The hash of the call to be executed.",
|
|
"",
|
|
" NOTE: If this is the final approval, you will want to use `as_multi` instead.",
|
|
"",
|
|
" # <weight>",
|
|
" - `O(S)`.",
|
|
" - Up to one balance-reserve or unreserve operation.",
|
|
" - One passthrough operation, one insert, both `O(S)` where `S` is the number of",
|
|
" signatories. `S` is capped by `MaxSignatories`, with weight being proportional.",
|
|
" - One encode & hash, both of complexity `O(S)`.",
|
|
" - Up to one binary search and insert (`O(logS + S)`).",
|
|
" - I/O: 1 read `O(S)`, up to 1 mutate `O(S)`. Up to one remove.",
|
|
" - One event.",
|
|
" - Storage: inserts one item, value size bounded by `MaxSignatories`, with a",
|
|
" deposit taken for its lifetime of",
|
|
" `MultisigDepositBase + threshold * MultisigDepositFactor`.",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "cancel_as_multi",
|
|
"args": [
|
|
{
|
|
"name": "threshold",
|
|
"type": "u16"
|
|
},
|
|
{
|
|
"name": "other_signatories",
|
|
"type": "Vec<AccountId>"
|
|
},
|
|
{
|
|
"name": "timepoint",
|
|
"type": "Timepoint"
|
|
},
|
|
{
|
|
"name": "call_hash",
|
|
"type": "[u8;32]"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Cancel a pre-existing, on-going multisig transaction. Any deposit reserved previously",
|
|
" for this operation will be unreserved on success.",
|
|
"",
|
|
" The dispatch origin for this call must be _Signed_.",
|
|
"",
|
|
" - `threshold`: The total number of approvals for this dispatch before it is executed.",
|
|
" - `other_signatories`: The accounts (other than the sender) who can approve this",
|
|
" dispatch. May not be empty.",
|
|
" - `timepoint`: The timepoint (block number and transaction index) of the first approval",
|
|
" transaction for this dispatch.",
|
|
" - `call_hash`: The hash of the call to be executed.",
|
|
"",
|
|
" # <weight>",
|
|
" - `O(S)`.",
|
|
" - Up to one balance-reserve or unreserve operation.",
|
|
" - One passthrough operation, one insert, both `O(S)` where `S` is the number of",
|
|
" signatories. `S` is capped by `MaxSignatories`, with weight being proportional.",
|
|
" - One encode & hash, both of complexity `O(S)`.",
|
|
" - One event.",
|
|
" - I/O: 1 read `O(S)`, one remove.",
|
|
" - Storage: removes one item.",
|
|
" # </weight>"
|
|
]
|
|
}
|
|
],
|
|
"events": [
|
|
{
|
|
"name": "BatchInterrupted",
|
|
"args": [
|
|
"u32",
|
|
"DispatchError"
|
|
],
|
|
"documentation": [
|
|
" Batch of dispatches did not complete fully. Index of first failing dispatch given, as",
|
|
" well as the error."
|
|
]
|
|
},
|
|
{
|
|
"name": "BatchCompleted",
|
|
"args": [],
|
|
"documentation": [
|
|
" Batch of dispatches completed fully with no error."
|
|
]
|
|
},
|
|
{
|
|
"name": "NewMultisig",
|
|
"args": [
|
|
"AccountId",
|
|
"AccountId"
|
|
],
|
|
"documentation": [
|
|
" A new multisig operation has begun. First param is the account that is approving,",
|
|
" second is the multisig account."
|
|
]
|
|
},
|
|
{
|
|
"name": "MultisigApproval",
|
|
"args": [
|
|
"AccountId",
|
|
"Timepoint",
|
|
"AccountId"
|
|
],
|
|
"documentation": [
|
|
" A multisig operation has been approved by someone. First param is the account that is",
|
|
" approving, third is the multisig account."
|
|
]
|
|
},
|
|
{
|
|
"name": "MultisigExecuted",
|
|
"args": [
|
|
"AccountId",
|
|
"Timepoint",
|
|
"AccountId",
|
|
"DispatchResult"
|
|
],
|
|
"documentation": [
|
|
" A multisig operation has been executed. First param is the account that is",
|
|
" approving, third is the multisig account."
|
|
]
|
|
},
|
|
{
|
|
"name": "MultisigCancelled",
|
|
"args": [
|
|
"AccountId",
|
|
"Timepoint",
|
|
"AccountId"
|
|
],
|
|
"documentation": [
|
|
" A multisig operation has been cancelled. First param is the account that is",
|
|
" cancelling, third is the multisig account."
|
|
]
|
|
}
|
|
],
|
|
"constants": [],
|
|
"errors": [
|
|
{
|
|
"name": "ZeroThreshold",
|
|
"documentation": [
|
|
" Threshold is too low (zero)."
|
|
]
|
|
},
|
|
{
|
|
"name": "AlreadyApproved",
|
|
"documentation": [
|
|
" Call is already approved by this signatory."
|
|
]
|
|
},
|
|
{
|
|
"name": "NoApprovalsNeeded",
|
|
"documentation": [
|
|
" Call doesn't need any (more) approvals."
|
|
]
|
|
},
|
|
{
|
|
"name": "TooFewSignatories",
|
|
"documentation": [
|
|
" There are too few signatories in the list."
|
|
]
|
|
},
|
|
{
|
|
"name": "TooManySignatories",
|
|
"documentation": [
|
|
" There are too many signatories in the list."
|
|
]
|
|
},
|
|
{
|
|
"name": "SignatoriesOutOfOrder",
|
|
"documentation": [
|
|
" The signatories were provided out of order; they should be ordered."
|
|
]
|
|
},
|
|
{
|
|
"name": "SenderInSignatories",
|
|
"documentation": [
|
|
" The sender was contained in the other signatories; it shouldn't be."
|
|
]
|
|
},
|
|
{
|
|
"name": "NotFound",
|
|
"documentation": [
|
|
" Multisig operation not found when attempting to cancel."
|
|
]
|
|
},
|
|
{
|
|
"name": "NotOwner",
|
|
"documentation": [
|
|
" Only the account that originally created the multisig is able to cancel it."
|
|
]
|
|
},
|
|
{
|
|
"name": "NoTimepoint",
|
|
"documentation": [
|
|
" No timepoint was given, yet the multisig operation is already underway."
|
|
]
|
|
},
|
|
{
|
|
"name": "WrongTimepoint",
|
|
"documentation": [
|
|
" A different timepoint was given to the multisig operation that is underway."
|
|
]
|
|
},
|
|
{
|
|
"name": "UnexpectedTimepoint",
|
|
"documentation": [
|
|
" A timepoint was given, yet no multisig operation is underway."
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Babe",
|
|
"storage": {
|
|
"prefix": "Babe",
|
|
"items": [
|
|
{
|
|
"name": "EpochIndex",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Plain": "u64"
|
|
},
|
|
"fallback": "0x0000000000000000",
|
|
"documentation": [
|
|
" Current epoch index."
|
|
]
|
|
},
|
|
{
|
|
"name": "Authorities",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Plain": "Vec<(AuthorityId,BabeAuthorityWeight)>"
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" Current epoch authorities."
|
|
]
|
|
},
|
|
{
|
|
"name": "GenesisSlot",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Plain": "u64"
|
|
},
|
|
"fallback": "0x0000000000000000",
|
|
"documentation": [
|
|
" The slot at which the first epoch actually started. This is 0",
|
|
" until the first block of the chain."
|
|
]
|
|
},
|
|
{
|
|
"name": "CurrentSlot",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Plain": "u64"
|
|
},
|
|
"fallback": "0x0000000000000000",
|
|
"documentation": [
|
|
" Current slot number."
|
|
]
|
|
},
|
|
{
|
|
"name": "Randomness",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Plain": "[u8;32]"
|
|
},
|
|
"fallback": "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
"documentation": [
|
|
" The epoch randomness for the *current* epoch.",
|
|
"",
|
|
" # Security",
|
|
"",
|
|
" This MUST NOT be used for gambling, as it can be influenced by a",
|
|
" malicious validator in the short term. It MAY be used in many",
|
|
" cryptographic protocols, however, so long as one remembers that this",
|
|
" (like everything else on-chain) it is public. For example, it can be",
|
|
" used where a number is needed that cannot have been chosen by an",
|
|
" adversary, for purposes such as public-coin zero-knowledge proofs."
|
|
]
|
|
},
|
|
{
|
|
"name": "NextRandomness",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Plain": "[u8;32]"
|
|
},
|
|
"fallback": "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
"documentation": [
|
|
" Next epoch randomness."
|
|
]
|
|
},
|
|
{
|
|
"name": "SegmentIndex",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Plain": "u32"
|
|
},
|
|
"fallback": "0x00000000",
|
|
"documentation": [
|
|
" Randomness under construction.",
|
|
"",
|
|
" We make a tradeoff between storage accesses and list length.",
|
|
" We store the under-construction randomness in segments of up to",
|
|
" `UNDER_CONSTRUCTION_SEGMENT_LENGTH`.",
|
|
"",
|
|
" Once a segment reaches this length, we begin the next one.",
|
|
" We reset all segments and return to `0` at the beginning of every",
|
|
" epoch."
|
|
]
|
|
},
|
|
{
|
|
"name": "UnderConstruction",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Map": {
|
|
"hasher": "Twox64Concat",
|
|
"key": "u32",
|
|
"value": "Vec<[u8;32]>",
|
|
"linked": false
|
|
}
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": []
|
|
},
|
|
{
|
|
"name": "Initialized",
|
|
"modifier": "Optional",
|
|
"type": {
|
|
"Plain": "MaybeVrf"
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" Temporary value (cleared at block finalization) which is `Some`",
|
|
" if per-block initialization has already been called for current block."
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"calls": [],
|
|
"events": null,
|
|
"constants": [
|
|
{
|
|
"name": "EpochDuration",
|
|
"type": "u64",
|
|
"value": "0xc800000000000000",
|
|
"documentation": [
|
|
" The number of **slots** that an epoch takes. We couple sessions to",
|
|
" epochs, i.e. we start a new session once the new epoch begins."
|
|
]
|
|
},
|
|
{
|
|
"name": "ExpectedBlockTime",
|
|
"type": "Moment",
|
|
"value": "0xb80b000000000000",
|
|
"documentation": [
|
|
" The expected average block time at which BABE should be creating",
|
|
" blocks. Since BABE is probabilistic it is not trivial to figure out",
|
|
" what the expected average block time should be based on the slot",
|
|
" duration and the security parameter `c` (where `1 - c` represents",
|
|
" the probability of a slot being empty)."
|
|
]
|
|
}
|
|
],
|
|
"errors": []
|
|
},
|
|
{
|
|
"name": "Timestamp",
|
|
"storage": {
|
|
"prefix": "Timestamp",
|
|
"items": [
|
|
{
|
|
"name": "Now",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Plain": "Moment"
|
|
},
|
|
"fallback": "0x0000000000000000",
|
|
"documentation": [
|
|
" Current time for the current block."
|
|
]
|
|
},
|
|
{
|
|
"name": "DidUpdate",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Plain": "bool"
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" Did the timestamp get updated in this block?"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"calls": [
|
|
{
|
|
"name": "set",
|
|
"args": [
|
|
{
|
|
"name": "now",
|
|
"type": "Compact<Moment>"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Set the current time.",
|
|
"",
|
|
" This call should be invoked exactly once per block. It will panic at the finalization",
|
|
" phase, if this call hasn't been invoked by that time.",
|
|
"",
|
|
" The timestamp should be greater than the previous one by the amount specified by",
|
|
" `MinimumPeriod`.",
|
|
"",
|
|
" The dispatch origin for this call must be `Inherent`."
|
|
]
|
|
}
|
|
],
|
|
"events": null,
|
|
"constants": [
|
|
{
|
|
"name": "MinimumPeriod",
|
|
"type": "Moment",
|
|
"value": "0xdc05000000000000",
|
|
"documentation": [
|
|
" The minimum period between blocks. Beware that this is different to the *expected* period",
|
|
" that the block production apparatus provides. Your chosen consensus system will generally",
|
|
" work with this to determine a sensible block time. e.g. For Aura, it will be double this",
|
|
" period on default settings."
|
|
]
|
|
}
|
|
],
|
|
"errors": []
|
|
},
|
|
{
|
|
"name": "Authorship",
|
|
"storage": {
|
|
"prefix": "Authorship",
|
|
"items": [
|
|
{
|
|
"name": "Uncles",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Plain": "Vec<UncleEntryItem>"
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" Uncles"
|
|
]
|
|
},
|
|
{
|
|
"name": "Author",
|
|
"modifier": "Optional",
|
|
"type": {
|
|
"Plain": "AccountId"
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" Author of current block."
|
|
]
|
|
},
|
|
{
|
|
"name": "DidSetUncles",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Plain": "bool"
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" Whether uncles were already set in this block."
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"calls": [
|
|
{
|
|
"name": "set_uncles",
|
|
"args": [
|
|
{
|
|
"name": "new_uncles",
|
|
"type": "Vec<Header>"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Provide a set of uncles."
|
|
]
|
|
}
|
|
],
|
|
"events": null,
|
|
"constants": [],
|
|
"errors": [
|
|
{
|
|
"name": "InvalidUncleParent",
|
|
"documentation": [
|
|
" The uncle parent not in the chain."
|
|
]
|
|
},
|
|
{
|
|
"name": "UnclesAlreadySet",
|
|
"documentation": [
|
|
" Uncles already set in the block."
|
|
]
|
|
},
|
|
{
|
|
"name": "TooManyUncles",
|
|
"documentation": [
|
|
" Too many uncles."
|
|
]
|
|
},
|
|
{
|
|
"name": "GenesisUncle",
|
|
"documentation": [
|
|
" The uncle is genesis."
|
|
]
|
|
},
|
|
{
|
|
"name": "TooHighUncle",
|
|
"documentation": [
|
|
" The uncle is too high in chain."
|
|
]
|
|
},
|
|
{
|
|
"name": "UncleAlreadyIncluded",
|
|
"documentation": [
|
|
" The uncle is already included."
|
|
]
|
|
},
|
|
{
|
|
"name": "OldUncle",
|
|
"documentation": [
|
|
" The uncle isn't recent enough to be included."
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Indices",
|
|
"storage": {
|
|
"prefix": "Indices",
|
|
"items": [
|
|
{
|
|
"name": "Accounts",
|
|
"modifier": "Optional",
|
|
"type": {
|
|
"Map": {
|
|
"hasher": "Blake2_128Concat",
|
|
"key": "AccountIndex",
|
|
"value": "(AccountId,BalanceOf)",
|
|
"linked": false
|
|
}
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" The lookup from index to account."
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"calls": [
|
|
{
|
|
"name": "claim",
|
|
"args": [
|
|
{
|
|
"name": "index",
|
|
"type": "AccountIndex"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Assign an previously unassigned index.",
|
|
"",
|
|
" Payment: `Deposit` is reserved from the sender account.",
|
|
"",
|
|
" The dispatch origin for this call must be _Signed_.",
|
|
"",
|
|
" - `index`: the index to be claimed. This must not be in use.",
|
|
"",
|
|
" Emits `IndexAssigned` if successful.",
|
|
"",
|
|
" # <weight>",
|
|
" - `O(1)`.",
|
|
" - One storage mutation (codec `O(1)`).",
|
|
" - One reserve operation.",
|
|
" - One event.",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "transfer",
|
|
"args": [
|
|
{
|
|
"name": "new",
|
|
"type": "AccountId"
|
|
},
|
|
{
|
|
"name": "index",
|
|
"type": "AccountIndex"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Assign an index already owned by the sender to another account. The balance reservation",
|
|
" is effectively transferred to the new account.",
|
|
"",
|
|
" The dispatch origin for this call must be _Signed_.",
|
|
"",
|
|
" - `index`: the index to be re-assigned. This must be owned by the sender.",
|
|
" - `new`: the new owner of the index. This function is a no-op if it is equal to sender.",
|
|
"",
|
|
" Emits `IndexAssigned` if successful.",
|
|
"",
|
|
" # <weight>",
|
|
" - `O(1)`.",
|
|
" - One storage mutation (codec `O(1)`).",
|
|
" - One transfer operation.",
|
|
" - One event.",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "free",
|
|
"args": [
|
|
{
|
|
"name": "index",
|
|
"type": "AccountIndex"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Free up an index owned by the sender.",
|
|
"",
|
|
" Payment: Any previous deposit placed for the index is unreserved in the sender account.",
|
|
"",
|
|
" The dispatch origin for this call must be _Signed_ and the sender must own the index.",
|
|
"",
|
|
" - `index`: the index to be freed. This must be owned by the sender.",
|
|
"",
|
|
" Emits `IndexFreed` if successful.",
|
|
"",
|
|
" # <weight>",
|
|
" - `O(1)`.",
|
|
" - One storage mutation (codec `O(1)`).",
|
|
" - One reserve operation.",
|
|
" - One event.",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "force_transfer",
|
|
"args": [
|
|
{
|
|
"name": "new",
|
|
"type": "AccountId"
|
|
},
|
|
{
|
|
"name": "index",
|
|
"type": "AccountIndex"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Force an index to an account. This doesn't require a deposit. If the index is already",
|
|
" held, then any deposit is reimbursed to its current owner.",
|
|
"",
|
|
" The dispatch origin for this call must be _Root_.",
|
|
"",
|
|
" - `index`: the index to be (re-)assigned.",
|
|
" - `new`: the new owner of the index. This function is a no-op if it is equal to sender.",
|
|
"",
|
|
" Emits `IndexAssigned` if successful.",
|
|
"",
|
|
" # <weight>",
|
|
" - `O(1)`.",
|
|
" - One storage mutation (codec `O(1)`).",
|
|
" - Up to one reserve operation.",
|
|
" - One event.",
|
|
" # </weight>"
|
|
]
|
|
}
|
|
],
|
|
"events": [
|
|
{
|
|
"name": "IndexAssigned",
|
|
"args": [
|
|
"AccountId",
|
|
"AccountIndex"
|
|
],
|
|
"documentation": [
|
|
" A account index was assigned."
|
|
]
|
|
},
|
|
{
|
|
"name": "IndexFreed",
|
|
"args": [
|
|
"AccountIndex"
|
|
],
|
|
"documentation": [
|
|
" A account index has been freed up (unassigned)."
|
|
]
|
|
}
|
|
],
|
|
"constants": [],
|
|
"errors": []
|
|
},
|
|
{
|
|
"name": "Balances",
|
|
"storage": {
|
|
"prefix": "Balances",
|
|
"items": [
|
|
{
|
|
"name": "TotalIssuance",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Plain": "Balance"
|
|
},
|
|
"fallback": "0x00000000000000000000000000000000",
|
|
"documentation": [
|
|
" The total units issued in the system."
|
|
]
|
|
},
|
|
{
|
|
"name": "Account",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Map": {
|
|
"hasher": "Blake2_128Concat",
|
|
"key": "AccountId",
|
|
"value": "AccountData",
|
|
"linked": false
|
|
}
|
|
},
|
|
"fallback": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
"documentation": [
|
|
" The balance of an account.",
|
|
"",
|
|
" NOTE: THIS MAY NEVER BE IN EXISTENCE AND YET HAVE A `total().is_zero()`. If the total",
|
|
" is ever zero, then the entry *MUST* be removed.",
|
|
"",
|
|
" NOTE: This is only used in the case that this module is used to store balances."
|
|
]
|
|
},
|
|
{
|
|
"name": "Locks",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Map": {
|
|
"hasher": "Blake2_128Concat",
|
|
"key": "AccountId",
|
|
"value": "Vec<BalanceLock>",
|
|
"linked": false
|
|
}
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" Any liquidity locks on some account balances.",
|
|
" NOTE: Should only be accessed when setting, changing and freeing a lock."
|
|
]
|
|
},
|
|
{
|
|
"name": "StorageVersion",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Plain": "ReleasesBalances"
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" Storage version of the pallet.",
|
|
"",
|
|
" This is set to v2.0.0 for new networks."
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"calls": [
|
|
{
|
|
"name": "transfer",
|
|
"args": [
|
|
{
|
|
"name": "dest",
|
|
"type": "LookupSource"
|
|
},
|
|
{
|
|
"name": "value",
|
|
"type": "Compact<Balance>"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Transfer some liquid free balance to another account.",
|
|
"",
|
|
" `transfer` will set the `FreeBalance` of the sender and receiver.",
|
|
" It will decrease the total issuance of the system by the `TransferFee`.",
|
|
" If the sender's account is below the existential deposit as a result",
|
|
" of the transfer, the account will be reaped.",
|
|
"",
|
|
" The dispatch origin for this call must be `Signed` by the transactor.",
|
|
"",
|
|
" # <weight>",
|
|
" - Dependent on arguments but not critical, given proper implementations for",
|
|
" input config types. See related functions below.",
|
|
" - It contains a limited number of reads and writes internally and no complex computation.",
|
|
"",
|
|
" Related functions:",
|
|
"",
|
|
" - `ensure_can_withdraw` is always called internally but has a bounded complexity.",
|
|
" - Transferring balances to accounts that did not exist before will cause",
|
|
" `T::OnNewAccount::on_new_account` to be called.",
|
|
" - Removing enough funds from an account will trigger `T::DustRemoval::on_unbalanced`.",
|
|
" - `transfer_keep_alive` works the same way as `transfer`, but has an additional",
|
|
" check that the transfer will not kill the origin account.",
|
|
"",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "set_balance",
|
|
"args": [
|
|
{
|
|
"name": "who",
|
|
"type": "LookupSource"
|
|
},
|
|
{
|
|
"name": "new_free",
|
|
"type": "Compact<Balance>"
|
|
},
|
|
{
|
|
"name": "new_reserved",
|
|
"type": "Compact<Balance>"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Set the balances of a given account.",
|
|
"",
|
|
" This will alter `FreeBalance` and `ReservedBalance` in storage. it will",
|
|
" also decrease the total issuance of the system (`TotalIssuance`).",
|
|
" If the new free or reserved balance is below the existential deposit,",
|
|
" it will reset the account nonce (`frame_system::AccountNonce`).",
|
|
"",
|
|
" The dispatch origin for this call is `root`.",
|
|
"",
|
|
" # <weight>",
|
|
" - Independent of the arguments.",
|
|
" - Contains a limited number of reads and writes.",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "force_transfer",
|
|
"args": [
|
|
{
|
|
"name": "source",
|
|
"type": "LookupSource"
|
|
},
|
|
{
|
|
"name": "dest",
|
|
"type": "LookupSource"
|
|
},
|
|
{
|
|
"name": "value",
|
|
"type": "Compact<Balance>"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Exactly as `transfer`, except the origin must be root and the source account may be",
|
|
" specified."
|
|
]
|
|
},
|
|
{
|
|
"name": "transfer_keep_alive",
|
|
"args": [
|
|
{
|
|
"name": "dest",
|
|
"type": "LookupSource"
|
|
},
|
|
{
|
|
"name": "value",
|
|
"type": "Compact<Balance>"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Same as the [`transfer`] call, but with a check that the transfer will not kill the",
|
|
" origin account.",
|
|
"",
|
|
" 99% of the time you want [`transfer`] instead.",
|
|
"",
|
|
" [`transfer`]: struct.Module.html#method.transfer"
|
|
]
|
|
}
|
|
],
|
|
"events": [
|
|
{
|
|
"name": "Endowed",
|
|
"args": [
|
|
"AccountId",
|
|
"Balance"
|
|
],
|
|
"documentation": [
|
|
" An account was created with some free balance."
|
|
]
|
|
},
|
|
{
|
|
"name": "DustLost",
|
|
"args": [
|
|
"AccountId",
|
|
"Balance"
|
|
],
|
|
"documentation": [
|
|
" An account was removed whose balance was non-zero but below ExistentialDeposit,",
|
|
" resulting in an outright loss."
|
|
]
|
|
},
|
|
{
|
|
"name": "Transfer",
|
|
"args": [
|
|
"AccountId",
|
|
"AccountId",
|
|
"Balance"
|
|
],
|
|
"documentation": [
|
|
" Transfer succeeded (from, to, value)."
|
|
]
|
|
},
|
|
{
|
|
"name": "BalanceSet",
|
|
"args": [
|
|
"AccountId",
|
|
"Balance",
|
|
"Balance"
|
|
],
|
|
"documentation": [
|
|
" A balance was set by root (who, free, reserved)."
|
|
]
|
|
},
|
|
{
|
|
"name": "Deposit",
|
|
"args": [
|
|
"AccountId",
|
|
"Balance"
|
|
],
|
|
"documentation": [
|
|
" Some amount was deposited (e.g. for transaction fees)."
|
|
]
|
|
}
|
|
],
|
|
"constants": [
|
|
{
|
|
"name": "ExistentialDeposit",
|
|
"type": "Balance",
|
|
"value": "0x00407a10f35a00000000000000000000",
|
|
"documentation": [
|
|
" The minimum amount required to keep an account open."
|
|
]
|
|
}
|
|
],
|
|
"errors": [
|
|
{
|
|
"name": "VestingBalance",
|
|
"documentation": [
|
|
" Vesting balance too high to send value"
|
|
]
|
|
},
|
|
{
|
|
"name": "LiquidityRestrictions",
|
|
"documentation": [
|
|
" Account liquidity restrictions prevent withdrawal"
|
|
]
|
|
},
|
|
{
|
|
"name": "Overflow",
|
|
"documentation": [
|
|
" Got an overflow after adding"
|
|
]
|
|
},
|
|
{
|
|
"name": "InsufficientBalance",
|
|
"documentation": [
|
|
" Balance too low to send value"
|
|
]
|
|
},
|
|
{
|
|
"name": "ExistentialDeposit",
|
|
"documentation": [
|
|
" Value too low to create account due to existential deposit"
|
|
]
|
|
},
|
|
{
|
|
"name": "KeepAlive",
|
|
"documentation": [
|
|
" Transfer/payment would kill account"
|
|
]
|
|
},
|
|
{
|
|
"name": "ExistingVestingSchedule",
|
|
"documentation": [
|
|
" A vesting schedule already exists for this account"
|
|
]
|
|
},
|
|
{
|
|
"name": "DeadAccount",
|
|
"documentation": [
|
|
" Beneficiary account must pre-exist"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "TransactionPayment",
|
|
"storage": {
|
|
"prefix": "TransactionPayment",
|
|
"items": [
|
|
{
|
|
"name": "NextFeeMultiplier",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Plain": "Multiplier"
|
|
},
|
|
"fallback": "0x0000000000000000",
|
|
"documentation": []
|
|
}
|
|
]
|
|
},
|
|
"calls": null,
|
|
"events": null,
|
|
"constants": [
|
|
{
|
|
"name": "TransactionBaseFee",
|
|
"type": "BalanceOf",
|
|
"value": "0x0010a5d4e80000000000000000000000",
|
|
"documentation": [
|
|
" The fee to be paid for making a transaction; the base."
|
|
]
|
|
},
|
|
{
|
|
"name": "TransactionByteFee",
|
|
"type": "BalanceOf",
|
|
"value": "0x00e40b54020000000000000000000000",
|
|
"documentation": [
|
|
" The fee to be paid for making a transaction; the per-byte portion."
|
|
]
|
|
}
|
|
],
|
|
"errors": []
|
|
},
|
|
{
|
|
"name": "Staking",
|
|
"storage": {
|
|
"prefix": "Staking",
|
|
"items": [
|
|
{
|
|
"name": "HistoryDepth",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Plain": "u32"
|
|
},
|
|
"fallback": "0x54000000",
|
|
"documentation": [
|
|
" Number of era to keep in history.",
|
|
"",
|
|
" Information is kept for eras in `[current_era - history_depth; current_era]",
|
|
"",
|
|
" Must be more than the number of era delayed by session otherwise.",
|
|
" i.e. active era must always be in history.",
|
|
" i.e. `active_era > current_era - history_depth` must be guaranteed."
|
|
]
|
|
},
|
|
{
|
|
"name": "ValidatorCount",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Plain": "u32"
|
|
},
|
|
"fallback": "0x00000000",
|
|
"documentation": [
|
|
" The ideal number of staking participants."
|
|
]
|
|
},
|
|
{
|
|
"name": "MinimumValidatorCount",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Plain": "u32"
|
|
},
|
|
"fallback": "0x04000000",
|
|
"documentation": [
|
|
" Minimum number of staking participants before emergency conditions are imposed."
|
|
]
|
|
},
|
|
{
|
|
"name": "Invulnerables",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Plain": "Vec<AccountId>"
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" Any validators that may never be slashed or forcibly kicked. It's a Vec since they're",
|
|
" easy to initialize and the performance hit is minimal (we expect no more than four",
|
|
" invulnerables) and restricted to testnets."
|
|
]
|
|
},
|
|
{
|
|
"name": "Bonded",
|
|
"modifier": "Optional",
|
|
"type": {
|
|
"Map": {
|
|
"hasher": "Twox64Concat",
|
|
"key": "AccountId",
|
|
"value": "AccountId",
|
|
"linked": false
|
|
}
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" Map from all locked \"stash\" accounts to the controller account."
|
|
]
|
|
},
|
|
{
|
|
"name": "Ledger",
|
|
"modifier": "Optional",
|
|
"type": {
|
|
"Map": {
|
|
"hasher": "Blake2_128Concat",
|
|
"key": "AccountId",
|
|
"value": "StakingLedger",
|
|
"linked": false
|
|
}
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" Map from all (unlocked) \"controller\" accounts to the info regarding the staking."
|
|
]
|
|
},
|
|
{
|
|
"name": "Payee",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Map": {
|
|
"hasher": "Twox64Concat",
|
|
"key": "AccountId",
|
|
"value": "RewardDestination",
|
|
"linked": false
|
|
}
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" Where the reward payment should be made. Keyed by stash."
|
|
]
|
|
},
|
|
{
|
|
"name": "Validators",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Map": {
|
|
"hasher": "Twox64Concat",
|
|
"key": "AccountId",
|
|
"value": "ValidatorPrefs",
|
|
"linked": false
|
|
}
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" The map from (wannabe) validator stash key to the preferences of that validator."
|
|
]
|
|
},
|
|
{
|
|
"name": "Nominators",
|
|
"modifier": "Optional",
|
|
"type": {
|
|
"Map": {
|
|
"hasher": "Twox64Concat",
|
|
"key": "AccountId",
|
|
"value": "Nominations",
|
|
"linked": false
|
|
}
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" The map from nominator stash key to the set of stash keys of all validators to nominate."
|
|
]
|
|
},
|
|
{
|
|
"name": "CurrentEra",
|
|
"modifier": "Optional",
|
|
"type": {
|
|
"Plain": "EraIndex"
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" The current era index.",
|
|
"",
|
|
" This is the latest planned era, depending on how session module queues the validator",
|
|
" set, it might be active or not."
|
|
]
|
|
},
|
|
{
|
|
"name": "ActiveEra",
|
|
"modifier": "Optional",
|
|
"type": {
|
|
"Plain": "ActiveEraInfo"
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" The active era information, it holds index and start.",
|
|
"",
|
|
" The active era is the era currently rewarded.",
|
|
" Validator set of this era must be equal to `SessionInterface::validators`."
|
|
]
|
|
},
|
|
{
|
|
"name": "ErasStartSessionIndex",
|
|
"modifier": "Optional",
|
|
"type": {
|
|
"Map": {
|
|
"hasher": "Twox64Concat",
|
|
"key": "EraIndex",
|
|
"value": "SessionIndex",
|
|
"linked": false
|
|
}
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" The session index at which the era start for the last `HISTORY_DEPTH` eras"
|
|
]
|
|
},
|
|
{
|
|
"name": "ErasStakers",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"DoubleMap": {
|
|
"hasher": "Twox64Concat",
|
|
"key1": "EraIndex",
|
|
"key2": "AccountId",
|
|
"value": "Exposure",
|
|
"key2Hasher": "Twox64Concat"
|
|
}
|
|
},
|
|
"fallback": "0x000000",
|
|
"documentation": [
|
|
" Exposure of validator at era.",
|
|
"",
|
|
" This is keyed first by the era index to allow bulk deletion and then the stash account.",
|
|
"",
|
|
" Is it removed after `HISTORY_DEPTH` eras.",
|
|
" If stakers hasn't been set or has been removed then empty exposure is returned."
|
|
]
|
|
},
|
|
{
|
|
"name": "ErasStakersClipped",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"DoubleMap": {
|
|
"hasher": "Twox64Concat",
|
|
"key1": "EraIndex",
|
|
"key2": "AccountId",
|
|
"value": "Exposure",
|
|
"key2Hasher": "Twox64Concat"
|
|
}
|
|
},
|
|
"fallback": "0x000000",
|
|
"documentation": [
|
|
" Clipped Exposure of validator at era.",
|
|
"",
|
|
" This is similar to [`ErasStakers`] but number of nominators exposed is reduce to the",
|
|
" `T::MaxNominatorRewardedPerValidator` biggest stakers.",
|
|
" (Note: the field `total` and `own` of the exposure remains unchanged).",
|
|
" This is used to limit the i/o cost for the nominator payout.",
|
|
"",
|
|
" This is keyed fist by the era index to allow bulk deletion and then the stash account.",
|
|
"",
|
|
" Is it removed after `HISTORY_DEPTH` eras.",
|
|
" If stakers hasn't been set or has been removed then empty exposure is returned."
|
|
]
|
|
},
|
|
{
|
|
"name": "ErasValidatorPrefs",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"DoubleMap": {
|
|
"hasher": "Twox64Concat",
|
|
"key1": "EraIndex",
|
|
"key2": "AccountId",
|
|
"value": "ValidatorPrefs",
|
|
"key2Hasher": "Twox64Concat"
|
|
}
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" Similarly to `ErasStakers` this holds the preferences of validators.",
|
|
"",
|
|
" This is keyed first by the era index to allow bulk deletion and then the stash account.",
|
|
"",
|
|
" Is it removed after `HISTORY_DEPTH` eras."
|
|
]
|
|
},
|
|
{
|
|
"name": "ErasValidatorReward",
|
|
"modifier": "Optional",
|
|
"type": {
|
|
"Map": {
|
|
"hasher": "Twox64Concat",
|
|
"key": "EraIndex",
|
|
"value": "BalanceOf",
|
|
"linked": false
|
|
}
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" The total validator era payout for the last `HISTORY_DEPTH` eras.",
|
|
"",
|
|
" Eras that haven't finished yet or has been removed doesn't have reward."
|
|
]
|
|
},
|
|
{
|
|
"name": "ErasRewardPoints",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Map": {
|
|
"hasher": "Twox64Concat",
|
|
"key": "EraIndex",
|
|
"value": "EraRewardPoints",
|
|
"linked": false
|
|
}
|
|
},
|
|
"fallback": "0x0000000000",
|
|
"documentation": [
|
|
" Rewards for the last `HISTORY_DEPTH` eras.",
|
|
" If reward hasn't been set or has been removed then 0 reward is returned."
|
|
]
|
|
},
|
|
{
|
|
"name": "ErasTotalStake",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Map": {
|
|
"hasher": "Twox64Concat",
|
|
"key": "EraIndex",
|
|
"value": "BalanceOf",
|
|
"linked": false
|
|
}
|
|
},
|
|
"fallback": "0x00000000000000000000000000000000",
|
|
"documentation": [
|
|
" The total amount staked for the last `HISTORY_DEPTH` eras.",
|
|
" If total hasn't been set or has been removed then 0 stake is returned."
|
|
]
|
|
},
|
|
{
|
|
"name": "ForceEra",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Plain": "Forcing"
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" True if the next session change will be a new era regardless of index."
|
|
]
|
|
},
|
|
{
|
|
"name": "SlashRewardFraction",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Plain": "Perbill"
|
|
},
|
|
"fallback": "0x00000000",
|
|
"documentation": [
|
|
" The percentage of the slash that is distributed to reporters.",
|
|
"",
|
|
" The rest of the slashed value is handled by the `Slash`."
|
|
]
|
|
},
|
|
{
|
|
"name": "CanceledSlashPayout",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Plain": "BalanceOf"
|
|
},
|
|
"fallback": "0x00000000000000000000000000000000",
|
|
"documentation": [
|
|
" The amount of currency given to reporters of a slash event which was",
|
|
" canceled by extraordinary circumstances (e.g. governance)."
|
|
]
|
|
},
|
|
{
|
|
"name": "UnappliedSlashes",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Map": {
|
|
"hasher": "Twox64Concat",
|
|
"key": "EraIndex",
|
|
"value": "Vec<UnappliedSlash>",
|
|
"linked": false
|
|
}
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" All unapplied slashes that are queued for later."
|
|
]
|
|
},
|
|
{
|
|
"name": "BondedEras",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Plain": "Vec<(EraIndex,SessionIndex)>"
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" A mapping from still-bonded eras to the first session index of that era.",
|
|
"",
|
|
" Must contains information for eras for the range:",
|
|
" `[active_era - bounding_duration; active_era]`"
|
|
]
|
|
},
|
|
{
|
|
"name": "ValidatorSlashInEra",
|
|
"modifier": "Optional",
|
|
"type": {
|
|
"DoubleMap": {
|
|
"hasher": "Twox64Concat",
|
|
"key1": "EraIndex",
|
|
"key2": "AccountId",
|
|
"value": "(Perbill,BalanceOf)",
|
|
"key2Hasher": "Twox64Concat"
|
|
}
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" All slashing events on validators, mapped by era to the highest slash proportion",
|
|
" and slash value of the era."
|
|
]
|
|
},
|
|
{
|
|
"name": "NominatorSlashInEra",
|
|
"modifier": "Optional",
|
|
"type": {
|
|
"DoubleMap": {
|
|
"hasher": "Twox64Concat",
|
|
"key1": "EraIndex",
|
|
"key2": "AccountId",
|
|
"value": "BalanceOf",
|
|
"key2Hasher": "Twox64Concat"
|
|
}
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" All slashing events on nominators, mapped by era to the highest slash value of the era."
|
|
]
|
|
},
|
|
{
|
|
"name": "SlashingSpans",
|
|
"modifier": "Optional",
|
|
"type": {
|
|
"Map": {
|
|
"hasher": "Twox64Concat",
|
|
"key": "AccountId",
|
|
"value": "SlashingSpans",
|
|
"linked": false
|
|
}
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" Slashing spans for stash accounts."
|
|
]
|
|
},
|
|
{
|
|
"name": "SpanSlash",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Map": {
|
|
"hasher": "Twox64Concat",
|
|
"key": "(AccountId,SpanIndex)",
|
|
"value": "SpanRecord",
|
|
"linked": false
|
|
}
|
|
},
|
|
"fallback": "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
"documentation": [
|
|
" Records information about the maximum slash of a stash within a slashing span,",
|
|
" as well as how much reward has been paid out."
|
|
]
|
|
},
|
|
{
|
|
"name": "EarliestUnappliedSlash",
|
|
"modifier": "Optional",
|
|
"type": {
|
|
"Plain": "EraIndex"
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" The earliest era for which we have a pending, unapplied slash."
|
|
]
|
|
},
|
|
{
|
|
"name": "StorageVersion",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Plain": "ReleasesStaking"
|
|
},
|
|
"fallback": "0x01",
|
|
"documentation": [
|
|
" Storage version of the pallet.",
|
|
"",
|
|
" This is set to v2.0.0 for new networks."
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"calls": [
|
|
{
|
|
"name": "bond",
|
|
"args": [
|
|
{
|
|
"name": "controller",
|
|
"type": "LookupSource"
|
|
},
|
|
{
|
|
"name": "value",
|
|
"type": "Compact<BalanceOf>"
|
|
},
|
|
{
|
|
"name": "payee",
|
|
"type": "RewardDestination"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Take the origin account as a stash and lock up `value` of its balance. `controller` will",
|
|
" be the account that controls it.",
|
|
"",
|
|
" `value` must be more than the `minimum_balance` specified by `T::Currency`.",
|
|
"",
|
|
" The dispatch origin for this call must be _Signed_ by the stash account.",
|
|
"",
|
|
" Emits `Bonded`.",
|
|
"",
|
|
" # <weight>",
|
|
" - Independent of the arguments. Moderate complexity.",
|
|
" - O(1).",
|
|
" - Three extra DB entries.",
|
|
"",
|
|
" NOTE: Two of the storage writes (`Self::bonded`, `Self::payee`) are _never_ cleaned unless",
|
|
" the `origin` falls below _existential deposit_ and gets removed as dust.",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "bond_extra",
|
|
"args": [
|
|
{
|
|
"name": "max_additional",
|
|
"type": "Compact<BalanceOf>"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Add some extra amount that have appeared in the stash `free_balance` into the balance up",
|
|
" for staking.",
|
|
"",
|
|
" Use this if there are additional funds in your stash account that you wish to bond.",
|
|
" Unlike [`bond`] or [`unbond`] this function does not impose any limitation on the amount",
|
|
" that can be added.",
|
|
"",
|
|
" The dispatch origin for this call must be _Signed_ by the stash, not the controller.",
|
|
"",
|
|
" Emits `Bonded`.",
|
|
"",
|
|
" # <weight>",
|
|
" - Independent of the arguments. Insignificant complexity.",
|
|
" - O(1).",
|
|
" - One DB entry.",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "unbond",
|
|
"args": [
|
|
{
|
|
"name": "value",
|
|
"type": "Compact<BalanceOf>"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Schedule a portion of the stash to be unlocked ready for transfer out after the bond",
|
|
" period ends. If this leaves an amount actively bonded less than",
|
|
" T::Currency::minimum_balance(), then it is increased to the full amount.",
|
|
"",
|
|
" Once the unlock period is done, you can call `withdraw_unbonded` to actually move",
|
|
" the funds out of management ready for transfer.",
|
|
"",
|
|
" No more than a limited number of unlocking chunks (see `MAX_UNLOCKING_CHUNKS`)",
|
|
" can co-exists at the same time. In that case, [`Call::withdraw_unbonded`] need",
|
|
" to be called first to remove some of the chunks (if possible).",
|
|
"",
|
|
" The dispatch origin for this call must be _Signed_ by the controller, not the stash.",
|
|
"",
|
|
" Emits `Unbonded`.",
|
|
"",
|
|
" See also [`Call::withdraw_unbonded`].",
|
|
"",
|
|
" # <weight>",
|
|
" - Independent of the arguments. Limited but potentially exploitable complexity.",
|
|
" - Contains a limited number of reads.",
|
|
" - Each call (requires the remainder of the bonded balance to be above `minimum_balance`)",
|
|
" will cause a new entry to be inserted into a vector (`Ledger.unlocking`) kept in storage.",
|
|
" The only way to clean the aforementioned storage item is also user-controlled via",
|
|
" `withdraw_unbonded`.",
|
|
" - One DB entry.",
|
|
" </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "withdraw_unbonded",
|
|
"args": [],
|
|
"documentation": [
|
|
" Remove any unlocked chunks from the `unlocking` queue from our management.",
|
|
"",
|
|
" This essentially frees up that balance to be used by the stash account to do",
|
|
" whatever it wants.",
|
|
"",
|
|
" The dispatch origin for this call must be _Signed_ by the controller, not the stash.",
|
|
"",
|
|
" Emits `Withdrawn`.",
|
|
"",
|
|
" See also [`Call::unbond`].",
|
|
"",
|
|
" # <weight>",
|
|
" - Could be dependent on the `origin` argument and how much `unlocking` chunks exist.",
|
|
" It implies `consolidate_unlocked` which loops over `Ledger.unlocking`, which is",
|
|
" indirectly user-controlled. See [`unbond`] for more detail.",
|
|
" - Contains a limited number of reads, yet the size of which could be large based on `ledger`.",
|
|
" - Writes are limited to the `origin` account key.",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "validate",
|
|
"args": [
|
|
{
|
|
"name": "prefs",
|
|
"type": "ValidatorPrefs"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Declare the desire to validate for the origin controller.",
|
|
"",
|
|
" Effects will be felt at the beginning of the next era.",
|
|
"",
|
|
" The dispatch origin for this call must be _Signed_ by the controller, not the stash.",
|
|
"",
|
|
" # <weight>",
|
|
" - Independent of the arguments. Insignificant complexity.",
|
|
" - Contains a limited number of reads.",
|
|
" - Writes are limited to the `origin` account key.",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "nominate",
|
|
"args": [
|
|
{
|
|
"name": "targets",
|
|
"type": "Vec<LookupSource>"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Declare the desire to nominate `targets` for the origin controller.",
|
|
"",
|
|
" Effects will be felt at the beginning of the next era.",
|
|
"",
|
|
" The dispatch origin for this call must be _Signed_ by the controller, not the stash.",
|
|
"",
|
|
" # <weight>",
|
|
" - The transaction's complexity is proportional to the size of `targets`,",
|
|
" which is capped at `MAX_NOMINATIONS`.",
|
|
" - Both the reads and writes follow a similar pattern.",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "chill",
|
|
"args": [],
|
|
"documentation": [
|
|
" Declare no desire to either validate or nominate.",
|
|
"",
|
|
" Effects will be felt at the beginning of the next era.",
|
|
"",
|
|
" The dispatch origin for this call must be _Signed_ by the controller, not the stash.",
|
|
"",
|
|
" # <weight>",
|
|
" - Independent of the arguments. Insignificant complexity.",
|
|
" - Contains one read.",
|
|
" - Writes are limited to the `origin` account key.",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "set_payee",
|
|
"args": [
|
|
{
|
|
"name": "payee",
|
|
"type": "RewardDestination"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" (Re-)set the payment target for a controller.",
|
|
"",
|
|
" Effects will be felt at the beginning of the next era.",
|
|
"",
|
|
" The dispatch origin for this call must be _Signed_ by the controller, not the stash.",
|
|
"",
|
|
" # <weight>",
|
|
" - Independent of the arguments. Insignificant complexity.",
|
|
" - Contains a limited number of reads.",
|
|
" - Writes are limited to the `origin` account key.",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "set_controller",
|
|
"args": [
|
|
{
|
|
"name": "controller",
|
|
"type": "LookupSource"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" (Re-)set the controller of a stash.",
|
|
"",
|
|
" Effects will be felt at the beginning of the next era.",
|
|
"",
|
|
" The dispatch origin for this call must be _Signed_ by the stash, not the controller.",
|
|
"",
|
|
" # <weight>",
|
|
" - Independent of the arguments. Insignificant complexity.",
|
|
" - Contains a limited number of reads.",
|
|
" - Writes are limited to the `origin` account key.",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "set_validator_count",
|
|
"args": [
|
|
{
|
|
"name": "new",
|
|
"type": "Compact<u32>"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" The ideal number of validators."
|
|
]
|
|
},
|
|
{
|
|
"name": "force_no_eras",
|
|
"args": [],
|
|
"documentation": [
|
|
" Force there to be no new eras indefinitely.",
|
|
"",
|
|
" # <weight>",
|
|
" - No arguments.",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "force_new_era",
|
|
"args": [],
|
|
"documentation": [
|
|
" Force there to be a new era at the end of the next session. After this, it will be",
|
|
" reset to normal (non-forced) behaviour.",
|
|
"",
|
|
" # <weight>",
|
|
" - No arguments.",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "set_invulnerables",
|
|
"args": [
|
|
{
|
|
"name": "validators",
|
|
"type": "Vec<AccountId>"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Set the validators who cannot be slashed (if any)."
|
|
]
|
|
},
|
|
{
|
|
"name": "force_unstake",
|
|
"args": [
|
|
{
|
|
"name": "stash",
|
|
"type": "AccountId"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Force a current staker to become completely unstaked, immediately."
|
|
]
|
|
},
|
|
{
|
|
"name": "force_new_era_always",
|
|
"args": [],
|
|
"documentation": [
|
|
" Force there to be a new era at the end of sessions indefinitely.",
|
|
"",
|
|
" # <weight>",
|
|
" - One storage write",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "cancel_deferred_slash",
|
|
"args": [
|
|
{
|
|
"name": "era",
|
|
"type": "EraIndex"
|
|
},
|
|
{
|
|
"name": "slash_indices",
|
|
"type": "Vec<u32>"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Cancel enactment of a deferred slash. Can be called by either the root origin or",
|
|
" the `T::SlashCancelOrigin`.",
|
|
" passing the era and indices of the slashes for that era to kill.",
|
|
"",
|
|
" # <weight>",
|
|
" - One storage write.",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "payout_nominator",
|
|
"args": [
|
|
{
|
|
"name": "era",
|
|
"type": "EraIndex"
|
|
},
|
|
{
|
|
"name": "validators",
|
|
"type": "Vec<(AccountId,u32)>"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Make one nominator's payout for one era.",
|
|
"",
|
|
" - `who` is the controller account of the nominator to pay out.",
|
|
" - `era` may not be lower than one following the most recently paid era. If it is higher,",
|
|
" then it indicates an instruction to skip the payout of all previous eras.",
|
|
" - `validators` is the list of all validators that `who` had exposure to during `era`,",
|
|
" alongside the index of `who` in the clipped exposure of the validator.",
|
|
" I.e. each element is a tuple of",
|
|
" `(validator, index of `who` in clipped exposure of validator)`.",
|
|
" If it is incomplete, then less than the full reward will be paid out.",
|
|
" It must not exceed `MAX_NOMINATIONS`.",
|
|
"",
|
|
" WARNING: once an era is payed for a validator such validator can't claim the payout of",
|
|
" previous era.",
|
|
"",
|
|
" WARNING: Incorrect arguments here can result in loss of payout. Be very careful.",
|
|
"",
|
|
" # <weight>",
|
|
" - Number of storage read of `O(validators)`; `validators` is the argument of the call,",
|
|
" and is bounded by `MAX_NOMINATIONS`.",
|
|
" - Each storage read is `O(N)` size and decode complexity; `N` is the maximum",
|
|
" nominations that can be given to a single validator.",
|
|
" - Computation complexity: `O(MAX_NOMINATIONS * logN)`; `MAX_NOMINATIONS` is the",
|
|
" maximum number of validators that may be nominated by a single nominator, it is",
|
|
" bounded only economically (all nominators are required to place a minimum stake).",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "payout_validator",
|
|
"args": [
|
|
{
|
|
"name": "era",
|
|
"type": "EraIndex"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Make one validator's payout for one era.",
|
|
"",
|
|
" - `who` is the controller account of the validator to pay out.",
|
|
" - `era` may not be lower than one following the most recently paid era. If it is higher,",
|
|
" then it indicates an instruction to skip the payout of all previous eras.",
|
|
"",
|
|
" WARNING: once an era is payed for a validator such validator can't claim the payout of",
|
|
" previous era.",
|
|
"",
|
|
" WARNING: Incorrect arguments here can result in loss of payout. Be very careful.",
|
|
"",
|
|
" # <weight>",
|
|
" - Time complexity: O(1).",
|
|
" - Contains a limited number of reads and writes.",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "rebond",
|
|
"args": [
|
|
{
|
|
"name": "value",
|
|
"type": "Compact<BalanceOf>"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Rebond a portion of the stash scheduled to be unlocked.",
|
|
"",
|
|
" # <weight>",
|
|
" - Time complexity: O(1). Bounded by `MAX_UNLOCKING_CHUNKS`.",
|
|
" - Storage changes: Can't increase storage, only decrease it.",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "set_history_depth",
|
|
"args": [
|
|
{
|
|
"name": "new_history_depth",
|
|
"type": "Compact<EraIndex>"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Set history_depth value.",
|
|
"",
|
|
" Origin must be root."
|
|
]
|
|
},
|
|
{
|
|
"name": "reap_stash",
|
|
"args": [
|
|
{
|
|
"name": "stash",
|
|
"type": "AccountId"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Remove all data structure concerning a staker/stash once its balance is zero.",
|
|
" This is essentially equivalent to `withdraw_unbonded` except it can be called by anyone",
|
|
" and the target `stash` must have no funds left.",
|
|
"",
|
|
" This can be called from any origin.",
|
|
"",
|
|
" - `stash`: The stash account to reap. Its balance must be zero."
|
|
]
|
|
}
|
|
],
|
|
"events": [
|
|
{
|
|
"name": "Reward",
|
|
"args": [
|
|
"AccountId",
|
|
"Balance"
|
|
],
|
|
"documentation": [
|
|
" The staker has been rewarded by this amount. AccountId is controller account."
|
|
]
|
|
},
|
|
{
|
|
"name": "Slash",
|
|
"args": [
|
|
"AccountId",
|
|
"Balance"
|
|
],
|
|
"documentation": [
|
|
" One validator (and its nominators) has been slashed by the given amount."
|
|
]
|
|
},
|
|
{
|
|
"name": "OldSlashingReportDiscarded",
|
|
"args": [
|
|
"SessionIndex"
|
|
],
|
|
"documentation": [
|
|
" An old slashing report from a prior era was discarded because it could",
|
|
" not be processed."
|
|
]
|
|
},
|
|
{
|
|
"name": "Bonded",
|
|
"args": [
|
|
"AccountId",
|
|
"Balance"
|
|
],
|
|
"documentation": [
|
|
" An account has bonded this amount.",
|
|
"",
|
|
" NOTE: This event is only emitted when funds are bonded via a dispatchable. Notably,",
|
|
" it will not be emitted for staking rewards when they are added to stake."
|
|
]
|
|
},
|
|
{
|
|
"name": "Unbonded",
|
|
"args": [
|
|
"AccountId",
|
|
"Balance"
|
|
],
|
|
"documentation": [
|
|
" An account has unbonded this amount."
|
|
]
|
|
},
|
|
{
|
|
"name": "Withdrawn",
|
|
"args": [
|
|
"AccountId",
|
|
"Balance"
|
|
],
|
|
"documentation": [
|
|
" An account has called `withdraw_unbonded` and removed unbonding chunks worth `Balance`",
|
|
" from the unlocking queue."
|
|
]
|
|
}
|
|
],
|
|
"constants": [
|
|
{
|
|
"name": "SessionsPerEra",
|
|
"type": "SessionIndex",
|
|
"value": "0x06000000",
|
|
"documentation": [
|
|
" Number of sessions per era."
|
|
]
|
|
},
|
|
{
|
|
"name": "BondingDuration",
|
|
"type": "EraIndex",
|
|
"value": "0xa0020000",
|
|
"documentation": [
|
|
" Number of eras that staked funds must remain bonded for."
|
|
]
|
|
}
|
|
],
|
|
"errors": [
|
|
{
|
|
"name": "NotController",
|
|
"documentation": [
|
|
" Not a controller account."
|
|
]
|
|
},
|
|
{
|
|
"name": "NotStash",
|
|
"documentation": [
|
|
" Not a stash account."
|
|
]
|
|
},
|
|
{
|
|
"name": "AlreadyBonded",
|
|
"documentation": [
|
|
" Stash is already bonded."
|
|
]
|
|
},
|
|
{
|
|
"name": "AlreadyPaired",
|
|
"documentation": [
|
|
" Controller is already paired."
|
|
]
|
|
},
|
|
{
|
|
"name": "EmptyTargets",
|
|
"documentation": [
|
|
" Targets cannot be empty."
|
|
]
|
|
},
|
|
{
|
|
"name": "DuplicateIndex",
|
|
"documentation": [
|
|
" Duplicate index."
|
|
]
|
|
},
|
|
{
|
|
"name": "InvalidSlashIndex",
|
|
"documentation": [
|
|
" Slash record index out of bounds."
|
|
]
|
|
},
|
|
{
|
|
"name": "InsufficientValue",
|
|
"documentation": [
|
|
" Can not bond with value less than minimum balance."
|
|
]
|
|
},
|
|
{
|
|
"name": "NoMoreChunks",
|
|
"documentation": [
|
|
" Can not schedule more unlock chunks."
|
|
]
|
|
},
|
|
{
|
|
"name": "NoUnlockChunk",
|
|
"documentation": [
|
|
" Can not rebond without unlocking chunks."
|
|
]
|
|
},
|
|
{
|
|
"name": "FundedTarget",
|
|
"documentation": [
|
|
" Attempting to target a stash that still has funds."
|
|
]
|
|
},
|
|
{
|
|
"name": "InvalidEraToReward",
|
|
"documentation": [
|
|
" Invalid era to reward."
|
|
]
|
|
},
|
|
{
|
|
"name": "InvalidNumberOfNominations",
|
|
"documentation": [
|
|
" Invalid number of nominations."
|
|
]
|
|
},
|
|
{
|
|
"name": "NotSortedAndUnique",
|
|
"documentation": [
|
|
" Items are not sorted and unique."
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Session",
|
|
"storage": {
|
|
"prefix": "Session",
|
|
"items": [
|
|
{
|
|
"name": "Validators",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Plain": "Vec<ValidatorId>"
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" The current set of validators."
|
|
]
|
|
},
|
|
{
|
|
"name": "CurrentIndex",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Plain": "SessionIndex"
|
|
},
|
|
"fallback": "0x00000000",
|
|
"documentation": [
|
|
" Current index of the session."
|
|
]
|
|
},
|
|
{
|
|
"name": "QueuedChanged",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Plain": "bool"
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" True if the underlying economic identities or weighting behind the validators",
|
|
" has changed in the queued validator set."
|
|
]
|
|
},
|
|
{
|
|
"name": "QueuedKeys",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Plain": "Vec<(ValidatorId,Keys)>"
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" The queued keys for the next session. When the next session begins, these keys",
|
|
" will be used to determine the validator's session keys."
|
|
]
|
|
},
|
|
{
|
|
"name": "DisabledValidators",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Plain": "Vec<u32>"
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" Indices of disabled validators.",
|
|
"",
|
|
" The set is cleared when `on_session_ending` returns a new set of identities."
|
|
]
|
|
},
|
|
{
|
|
"name": "NextKeys",
|
|
"modifier": "Optional",
|
|
"type": {
|
|
"Map": {
|
|
"hasher": "Twox64Concat",
|
|
"key": "ValidatorId",
|
|
"value": "Keys",
|
|
"linked": false
|
|
}
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" The next session keys for a validator."
|
|
]
|
|
},
|
|
{
|
|
"name": "KeyOwner",
|
|
"modifier": "Optional",
|
|
"type": {
|
|
"Map": {
|
|
"hasher": "Twox64Concat",
|
|
"key": "(KeyTypeId,Bytes)",
|
|
"value": "ValidatorId",
|
|
"linked": false
|
|
}
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" The owner of a key. The key is the `KeyTypeId` + the encoded key."
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"calls": [
|
|
{
|
|
"name": "set_keys",
|
|
"args": [
|
|
{
|
|
"name": "keys",
|
|
"type": "Keys"
|
|
},
|
|
{
|
|
"name": "proof",
|
|
"type": "Bytes"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Sets the session key(s) of the function caller to `keys`.",
|
|
" Allows an account to set its session key prior to becoming a validator.",
|
|
" This doesn't take effect until the next session.",
|
|
"",
|
|
" The dispatch origin of this function must be signed.",
|
|
"",
|
|
" # <weight>",
|
|
" - O(log n) in number of accounts.",
|
|
" - One extra DB entry.",
|
|
" - Increases system account refs by one on success iff there were previously no keys set.",
|
|
" In this case, purge_keys will need to be called before the account can be removed.",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "purge_keys",
|
|
"args": [],
|
|
"documentation": [
|
|
" Removes any session key(s) of the function caller.",
|
|
" This doesn't take effect until the next session.",
|
|
"",
|
|
" The dispatch origin of this function must be signed.",
|
|
"",
|
|
" # <weight>",
|
|
" - O(N) in number of key types.",
|
|
" - Removes N + 1 DB entries.",
|
|
" - Reduces system account refs by one on success.",
|
|
" # </weight>"
|
|
]
|
|
}
|
|
],
|
|
"events": [
|
|
{
|
|
"name": "NewSession",
|
|
"args": [
|
|
"SessionIndex"
|
|
],
|
|
"documentation": [
|
|
" New session has happened. Note that the argument is the session index, not the block",
|
|
" number as the type might suggest."
|
|
]
|
|
}
|
|
],
|
|
"constants": [],
|
|
"errors": [
|
|
{
|
|
"name": "InvalidProof",
|
|
"documentation": [
|
|
" Invalid ownership proof."
|
|
]
|
|
},
|
|
{
|
|
"name": "NoAssociatedValidatorId",
|
|
"documentation": [
|
|
" No associated validator ID for account."
|
|
]
|
|
},
|
|
{
|
|
"name": "DuplicatedKey",
|
|
"documentation": [
|
|
" Registered duplicate key."
|
|
]
|
|
},
|
|
{
|
|
"name": "NoKeys",
|
|
"documentation": [
|
|
" No keys are associated with this account."
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Democracy",
|
|
"storage": {
|
|
"prefix": "Democracy",
|
|
"items": [
|
|
{
|
|
"name": "PublicPropCount",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Plain": "PropIndex"
|
|
},
|
|
"fallback": "0x00000000",
|
|
"documentation": [
|
|
" The number of (public) proposals that have been made so far."
|
|
]
|
|
},
|
|
{
|
|
"name": "PublicProps",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Plain": "Vec<(PropIndex,Hash,AccountId)>"
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" The public proposals. Unsorted. The second item is the proposal's hash."
|
|
]
|
|
},
|
|
{
|
|
"name": "Preimages",
|
|
"modifier": "Optional",
|
|
"type": {
|
|
"Map": {
|
|
"hasher": "Identity",
|
|
"key": "Hash",
|
|
"value": "(Bytes,AccountId,BalanceOf,BlockNumber)",
|
|
"linked": false
|
|
}
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" Map of hashes to the proposal preimage, along with who registered it and their deposit.",
|
|
" The block number is the block at which it was deposited."
|
|
]
|
|
},
|
|
{
|
|
"name": "DepositOf",
|
|
"modifier": "Optional",
|
|
"type": {
|
|
"Map": {
|
|
"hasher": "Twox64Concat",
|
|
"key": "PropIndex",
|
|
"value": "(BalanceOf,Vec<AccountId>)",
|
|
"linked": false
|
|
}
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" Those who have locked a deposit."
|
|
]
|
|
},
|
|
{
|
|
"name": "ReferendumCount",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Plain": "ReferendumIndex"
|
|
},
|
|
"fallback": "0x00000000",
|
|
"documentation": [
|
|
" The next free referendum index, aka the number of referenda started so far."
|
|
]
|
|
},
|
|
{
|
|
"name": "LowestUnbaked",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Plain": "ReferendumIndex"
|
|
},
|
|
"fallback": "0x00000000",
|
|
"documentation": [
|
|
" The lowest referendum index representing an unbaked referendum. Equal to",
|
|
" `ReferendumCount` if there isn't a unbaked referendum."
|
|
]
|
|
},
|
|
{
|
|
"name": "ReferendumInfoOf",
|
|
"modifier": "Optional",
|
|
"type": {
|
|
"Map": {
|
|
"hasher": "Twox64Concat",
|
|
"key": "ReferendumIndex",
|
|
"value": "ReferendumInfo",
|
|
"linked": false
|
|
}
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" Information concerning any given referendum."
|
|
]
|
|
},
|
|
{
|
|
"name": "DispatchQueue",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Plain": "Vec<(BlockNumber,Hash,ReferendumIndex)>"
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" Queue of successful referenda to be dispatched. Stored ordered by block number."
|
|
]
|
|
},
|
|
{
|
|
"name": "VotersFor",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Map": {
|
|
"hasher": "Twox64Concat",
|
|
"key": "ReferendumIndex",
|
|
"value": "Vec<AccountId>",
|
|
"linked": false
|
|
}
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" Get the voters for the current proposal."
|
|
]
|
|
},
|
|
{
|
|
"name": "VoteOf",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Map": {
|
|
"hasher": "Twox64Concat",
|
|
"key": "(ReferendumIndex,AccountId)",
|
|
"value": "Vote",
|
|
"linked": false
|
|
}
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" Get the vote in a given referendum of a particular voter. The result is meaningful only",
|
|
" if `voters_for` includes the voter when called with the referendum (you'll get the",
|
|
" default `Vote` value otherwise). If you don't want to check `voters_for`, then you can",
|
|
" also check for simple existence with `VoteOf::contains_key` first."
|
|
]
|
|
},
|
|
{
|
|
"name": "Proxy",
|
|
"modifier": "Optional",
|
|
"type": {
|
|
"Map": {
|
|
"hasher": "Twox64Concat",
|
|
"key": "AccountId",
|
|
"value": "ProxyState",
|
|
"linked": false
|
|
}
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" Who is able to vote for whom. Value is the fund-holding account, key is the",
|
|
" vote-transaction-sending account."
|
|
]
|
|
},
|
|
{
|
|
"name": "Delegations",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Map": {
|
|
"hasher": "Twox64Concat",
|
|
"key": "AccountId",
|
|
"value": "(AccountId,Conviction)",
|
|
"linked": false
|
|
}
|
|
},
|
|
"fallback": "0x000000000000000000000000000000000000000000000000000000000000000000",
|
|
"documentation": [
|
|
" Get the account (and lock periods) to which another account is delegating vote."
|
|
]
|
|
},
|
|
{
|
|
"name": "Locks",
|
|
"modifier": "Optional",
|
|
"type": {
|
|
"Map": {
|
|
"hasher": "Twox64Concat",
|
|
"key": "AccountId",
|
|
"value": "BlockNumber",
|
|
"linked": false
|
|
}
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" Accounts for which there are locks in action which may be removed at some point in the",
|
|
" future. The value is the block number at which the lock expires and may be removed."
|
|
]
|
|
},
|
|
{
|
|
"name": "LastTabledWasExternal",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Plain": "bool"
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" True if the last referendum tabled was submitted externally. False if it was a public",
|
|
" proposal."
|
|
]
|
|
},
|
|
{
|
|
"name": "NextExternal",
|
|
"modifier": "Optional",
|
|
"type": {
|
|
"Plain": "(Hash,VoteThreshold)"
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" The referendum to be tabled whenever it would be valid to table an external proposal.",
|
|
" This happens when a referendum needs to be tabled and one of two conditions are met:",
|
|
" - `LastTabledWasExternal` is `false`; or",
|
|
" - `PublicProps` is empty."
|
|
]
|
|
},
|
|
{
|
|
"name": "Blacklist",
|
|
"modifier": "Optional",
|
|
"type": {
|
|
"Map": {
|
|
"hasher": "Identity",
|
|
"key": "Hash",
|
|
"value": "(BlockNumber,Vec<AccountId>)",
|
|
"linked": false
|
|
}
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" A record of who vetoed what. Maps proposal hash to a possible existent block number",
|
|
" (until when it may not be resubmitted) and who vetoed it."
|
|
]
|
|
},
|
|
{
|
|
"name": "Cancellations",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Map": {
|
|
"hasher": "Identity",
|
|
"key": "Hash",
|
|
"value": "bool",
|
|
"linked": false
|
|
}
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" Record of all proposals that have been subject to emergency cancellation."
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"calls": [
|
|
{
|
|
"name": "propose",
|
|
"args": [
|
|
{
|
|
"name": "proposal_hash",
|
|
"type": "Hash"
|
|
},
|
|
{
|
|
"name": "value",
|
|
"type": "Compact<BalanceOf>"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Propose a sensitive action to be taken.",
|
|
"",
|
|
" The dispatch origin of this call must be _Signed_ and the sender must",
|
|
" have funds to cover the deposit.",
|
|
"",
|
|
" - `proposal_hash`: The hash of the proposal preimage.",
|
|
" - `value`: The amount of deposit (must be at least `MinimumDeposit`).",
|
|
"",
|
|
" Emits `Proposed`.",
|
|
"",
|
|
" # <weight>",
|
|
" - `O(1)`.",
|
|
" - Two DB changes, one DB entry.",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "second",
|
|
"args": [
|
|
{
|
|
"name": "proposal",
|
|
"type": "Compact<PropIndex>"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Signals agreement with a particular proposal.",
|
|
"",
|
|
" The dispatch origin of this call must be _Signed_ and the sender",
|
|
" must have funds to cover the deposit, equal to the original deposit.",
|
|
"",
|
|
" - `proposal`: The index of the proposal to second.",
|
|
"",
|
|
" # <weight>",
|
|
" - `O(1)`.",
|
|
" - One DB entry.",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "vote",
|
|
"args": [
|
|
{
|
|
"name": "ref_index",
|
|
"type": "Compact<ReferendumIndex>"
|
|
},
|
|
{
|
|
"name": "vote",
|
|
"type": "Vote"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Vote in a referendum. If `vote.is_aye()`, the vote is to enact the proposal;",
|
|
" otherwise it is a vote to keep the status quo.",
|
|
"",
|
|
" The dispatch origin of this call must be _Signed_.",
|
|
"",
|
|
" - `ref_index`: The index of the referendum to vote for.",
|
|
" - `vote`: The vote configuration.",
|
|
"",
|
|
" # <weight>",
|
|
" - `O(1)`.",
|
|
" - One DB change, one DB entry.",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "proxy_vote",
|
|
"args": [
|
|
{
|
|
"name": "ref_index",
|
|
"type": "Compact<ReferendumIndex>"
|
|
},
|
|
{
|
|
"name": "vote",
|
|
"type": "Vote"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Vote in a referendum on behalf of a stash. If `vote.is_aye()`, the vote is to enact",
|
|
" the proposal; otherwise it is a vote to keep the status quo.",
|
|
"",
|
|
" The dispatch origin of this call must be _Signed_.",
|
|
"",
|
|
" - `ref_index`: The index of the referendum to proxy vote for.",
|
|
" - `vote`: The vote configuration.",
|
|
"",
|
|
" # <weight>",
|
|
" - `O(1)`.",
|
|
" - One DB change, one DB entry.",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "emergency_cancel",
|
|
"args": [
|
|
{
|
|
"name": "ref_index",
|
|
"type": "ReferendumIndex"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Schedule an emergency cancellation of a referendum. Cannot happen twice to the same",
|
|
" referendum.",
|
|
"",
|
|
" The dispatch origin of this call must be `CancellationOrigin`.",
|
|
"",
|
|
" -`ref_index`: The index of the referendum to cancel.",
|
|
"",
|
|
" # <weight>",
|
|
" - Depends on size of storage vec `VotersFor` for this referendum.",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "external_propose",
|
|
"args": [
|
|
{
|
|
"name": "proposal_hash",
|
|
"type": "Hash"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Schedule a referendum to be tabled once it is legal to schedule an external",
|
|
" referendum.",
|
|
"",
|
|
" The dispatch origin of this call must be `ExternalOrigin`.",
|
|
"",
|
|
" - `proposal_hash`: The preimage hash of the proposal.",
|
|
"",
|
|
" # <weight>",
|
|
" - `O(1)`.",
|
|
" - One DB change.",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "external_propose_majority",
|
|
"args": [
|
|
{
|
|
"name": "proposal_hash",
|
|
"type": "Hash"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Schedule a majority-carries referendum to be tabled next once it is legal to schedule",
|
|
" an external referendum.",
|
|
"",
|
|
" The dispatch of this call must be `ExternalMajorityOrigin`.",
|
|
"",
|
|
" - `proposal_hash`: The preimage hash of the proposal.",
|
|
"",
|
|
" Unlike `external_propose`, blacklisting has no effect on this and it may replace a",
|
|
" pre-scheduled `external_propose` call.",
|
|
"",
|
|
" # <weight>",
|
|
" - `O(1)`.",
|
|
" - One DB change.",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "external_propose_default",
|
|
"args": [
|
|
{
|
|
"name": "proposal_hash",
|
|
"type": "Hash"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Schedule a negative-turnout-bias referendum to be tabled next once it is legal to",
|
|
" schedule an external referendum.",
|
|
"",
|
|
" The dispatch of this call must be `ExternalDefaultOrigin`.",
|
|
"",
|
|
" - `proposal_hash`: The preimage hash of the proposal.",
|
|
"",
|
|
" Unlike `external_propose`, blacklisting has no effect on this and it may replace a",
|
|
" pre-scheduled `external_propose` call.",
|
|
"",
|
|
" # <weight>",
|
|
" - `O(1)`.",
|
|
" - One DB change.",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "fast_track",
|
|
"args": [
|
|
{
|
|
"name": "proposal_hash",
|
|
"type": "Hash"
|
|
},
|
|
{
|
|
"name": "voting_period",
|
|
"type": "BlockNumber"
|
|
},
|
|
{
|
|
"name": "delay",
|
|
"type": "BlockNumber"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Schedule the currently externally-proposed majority-carries referendum to be tabled",
|
|
" immediately. If there is no externally-proposed referendum currently, or if there is one",
|
|
" but it is not a majority-carries referendum then it fails.",
|
|
"",
|
|
" The dispatch of this call must be `FastTrackOrigin`.",
|
|
"",
|
|
" - `proposal_hash`: The hash of the current external proposal.",
|
|
" - `voting_period`: The period that is allowed for voting on this proposal. Increased to",
|
|
" `EmergencyVotingPeriod` if too low.",
|
|
" - `delay`: The number of block after voting has ended in approval and this should be",
|
|
" enacted. This doesn't have a minimum amount.",
|
|
"",
|
|
" Emits `Started`.",
|
|
"",
|
|
" # <weight>",
|
|
" - One DB clear.",
|
|
" - One DB change.",
|
|
" - One extra DB entry.",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "veto_external",
|
|
"args": [
|
|
{
|
|
"name": "proposal_hash",
|
|
"type": "Hash"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Veto and blacklist the external proposal hash.",
|
|
"",
|
|
" The dispatch origin of this call must be `VetoOrigin`.",
|
|
"",
|
|
" - `proposal_hash`: The preimage hash of the proposal to veto and blacklist.",
|
|
"",
|
|
" Emits `Vetoed`.",
|
|
"",
|
|
" # <weight>",
|
|
" - Two DB entries.",
|
|
" - One DB clear.",
|
|
" - Performs a binary search on `existing_vetoers` which should not",
|
|
" be very large.",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "cancel_referendum",
|
|
"args": [
|
|
{
|
|
"name": "ref_index",
|
|
"type": "Compact<ReferendumIndex>"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Remove a referendum.",
|
|
"",
|
|
" The dispatch origin of this call must be _Root_.",
|
|
"",
|
|
" - `ref_index`: The index of the referendum to cancel.",
|
|
"",
|
|
" # <weight>",
|
|
" - `O(1)`.",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "cancel_queued",
|
|
"args": [
|
|
{
|
|
"name": "which",
|
|
"type": "ReferendumIndex"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Cancel a proposal queued for enactment.",
|
|
"",
|
|
" The dispatch origin of this call must be _Root_.",
|
|
"",
|
|
" - `which`: The index of the referendum to cancel.",
|
|
"",
|
|
" # <weight>",
|
|
" - One DB change.",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "activate_proxy",
|
|
"args": [
|
|
{
|
|
"name": "proxy",
|
|
"type": "AccountId"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Specify a proxy that is already open to us. Called by the stash.",
|
|
"",
|
|
" NOTE: Used to be called `set_proxy`.",
|
|
"",
|
|
" The dispatch origin of this call must be _Signed_.",
|
|
"",
|
|
" - `proxy`: The account that will be activated as proxy.",
|
|
"",
|
|
" # <weight>",
|
|
" - One extra DB entry.",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "close_proxy",
|
|
"args": [],
|
|
"documentation": [
|
|
" Clear the proxy. Called by the proxy.",
|
|
"",
|
|
" NOTE: Used to be called `resign_proxy`.",
|
|
"",
|
|
" The dispatch origin of this call must be _Signed_.",
|
|
"",
|
|
" # <weight>",
|
|
" - One DB clear.",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "deactivate_proxy",
|
|
"args": [
|
|
{
|
|
"name": "proxy",
|
|
"type": "AccountId"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Deactivate the proxy, but leave open to this account. Called by the stash.",
|
|
"",
|
|
" The proxy must already be active.",
|
|
"",
|
|
" NOTE: Used to be called `remove_proxy`.",
|
|
"",
|
|
" The dispatch origin of this call must be _Signed_.",
|
|
"",
|
|
" - `proxy`: The account that will be deactivated as proxy.",
|
|
"",
|
|
" # <weight>",
|
|
" - One DB clear.",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "delegate",
|
|
"args": [
|
|
{
|
|
"name": "to",
|
|
"type": "AccountId"
|
|
},
|
|
{
|
|
"name": "conviction",
|
|
"type": "Conviction"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Delegate vote.",
|
|
"",
|
|
" Currency is locked indefinitely for as long as it's delegated.",
|
|
"",
|
|
" The dispatch origin of this call must be _Signed_.",
|
|
"",
|
|
" - `to`: The account to make a delegate of the sender.",
|
|
" - `conviction`: The conviction that will be attached to the delegated",
|
|
" votes.",
|
|
"",
|
|
" Emits `Delegated`.",
|
|
"",
|
|
" # <weight>",
|
|
" - One extra DB entry.",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "undelegate",
|
|
"args": [],
|
|
"documentation": [
|
|
" Undelegate vote.",
|
|
"",
|
|
" Must be sent from an account that has called delegate previously.",
|
|
" The tokens will be reduced from an indefinite lock to the maximum",
|
|
" possible according to the conviction of the prior delegation.",
|
|
"",
|
|
" The dispatch origin of this call must be _Signed_.",
|
|
"",
|
|
" Emits `Undelegated`.",
|
|
"",
|
|
" # <weight>",
|
|
" - O(1).",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "clear_public_proposals",
|
|
"args": [],
|
|
"documentation": [
|
|
" Clears all public proposals.",
|
|
"",
|
|
" The dispatch origin of this call must be _Root_.",
|
|
"",
|
|
" # <weight>",
|
|
" - `O(1)`.",
|
|
" - One DB clear.",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "note_preimage",
|
|
"args": [
|
|
{
|
|
"name": "encoded_proposal",
|
|
"type": "Bytes"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Register the preimage for an upcoming proposal. This doesn't require the proposal to be",
|
|
" in the dispatch queue but does require a deposit, returned once enacted.",
|
|
"",
|
|
" The dispatch origin of this call must be _Signed_.",
|
|
"",
|
|
" - `encoded_proposal`: The preimage of a proposal.",
|
|
"",
|
|
" Emits `PreimageNoted`.",
|
|
"",
|
|
" # <weight>",
|
|
" - Dependent on the size of `encoded_proposal` but protected by a",
|
|
" required deposit.",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "note_imminent_preimage",
|
|
"args": [
|
|
{
|
|
"name": "encoded_proposal",
|
|
"type": "Bytes"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Register the preimage for an upcoming proposal. This requires the proposal to be",
|
|
" in the dispatch queue. No deposit is needed.",
|
|
"",
|
|
" The dispatch origin of this call must be _Signed_.",
|
|
"",
|
|
" - `encoded_proposal`: The preimage of a proposal.",
|
|
"",
|
|
" Emits `PreimageNoted`.",
|
|
"",
|
|
" # <weight>",
|
|
" - Dependent on the size of `encoded_proposal`.",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "reap_preimage",
|
|
"args": [
|
|
{
|
|
"name": "proposal_hash",
|
|
"type": "Hash"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Remove an expired proposal preimage and collect the deposit.",
|
|
"",
|
|
" The dispatch origin of this call must be _Signed_.",
|
|
"",
|
|
" - `proposal_hash`: The preimage hash of a proposal.",
|
|
"",
|
|
" This will only work after `VotingPeriod` blocks from the time that the preimage was",
|
|
" noted, if it's the same account doing it. If it's a different account, then it'll only",
|
|
" work an additional `EnactmentPeriod` later.",
|
|
"",
|
|
" Emits `PreimageReaped`.",
|
|
"",
|
|
" # <weight>",
|
|
" - One DB clear.",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "unlock",
|
|
"args": [
|
|
{
|
|
"name": "target",
|
|
"type": "AccountId"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Unlock tokens that have an expired lock.",
|
|
"",
|
|
" The dispatch origin of this call must be _Signed_.",
|
|
"",
|
|
" - `target`: The account to remove the lock on.",
|
|
"",
|
|
" Emits `Unlocked`.",
|
|
"",
|
|
" # <weight>",
|
|
" - `O(1)`.",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "open_proxy",
|
|
"args": [
|
|
{
|
|
"name": "target",
|
|
"type": "AccountId"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Become a proxy.",
|
|
"",
|
|
" This must be called prior to a later `activate_proxy`.",
|
|
"",
|
|
" Origin must be a Signed.",
|
|
"",
|
|
" - `target`: The account whose votes will later be proxied.",
|
|
"",
|
|
" `close_proxy` must be called before the account can be destroyed.",
|
|
"",
|
|
" # <weight>",
|
|
" - One extra DB entry.",
|
|
" # </weight>"
|
|
]
|
|
}
|
|
],
|
|
"events": [
|
|
{
|
|
"name": "Proposed",
|
|
"args": [
|
|
"PropIndex",
|
|
"Balance"
|
|
],
|
|
"documentation": [
|
|
" A motion has been proposed by a public account."
|
|
]
|
|
},
|
|
{
|
|
"name": "Tabled",
|
|
"args": [
|
|
"PropIndex",
|
|
"Balance",
|
|
"Vec<AccountId>"
|
|
],
|
|
"documentation": [
|
|
" A public proposal has been tabled for referendum vote."
|
|
]
|
|
},
|
|
{
|
|
"name": "ExternalTabled",
|
|
"args": [],
|
|
"documentation": [
|
|
" An external proposal has been tabled."
|
|
]
|
|
},
|
|
{
|
|
"name": "Started",
|
|
"args": [
|
|
"ReferendumIndex",
|
|
"VoteThreshold"
|
|
],
|
|
"documentation": [
|
|
" A referendum has begun."
|
|
]
|
|
},
|
|
{
|
|
"name": "Passed",
|
|
"args": [
|
|
"ReferendumIndex"
|
|
],
|
|
"documentation": [
|
|
" A proposal has been approved by referendum."
|
|
]
|
|
},
|
|
{
|
|
"name": "NotPassed",
|
|
"args": [
|
|
"ReferendumIndex"
|
|
],
|
|
"documentation": [
|
|
" A proposal has been rejected by referendum."
|
|
]
|
|
},
|
|
{
|
|
"name": "Cancelled",
|
|
"args": [
|
|
"ReferendumIndex"
|
|
],
|
|
"documentation": [
|
|
" A referendum has been cancelled."
|
|
]
|
|
},
|
|
{
|
|
"name": "Executed",
|
|
"args": [
|
|
"ReferendumIndex",
|
|
"bool"
|
|
],
|
|
"documentation": [
|
|
" A proposal has been enacted."
|
|
]
|
|
},
|
|
{
|
|
"name": "Delegated",
|
|
"args": [
|
|
"AccountId",
|
|
"AccountId"
|
|
],
|
|
"documentation": [
|
|
" An account has delegated their vote to another account."
|
|
]
|
|
},
|
|
{
|
|
"name": "Undelegated",
|
|
"args": [
|
|
"AccountId"
|
|
],
|
|
"documentation": [
|
|
" An account has cancelled a previous delegation operation."
|
|
]
|
|
},
|
|
{
|
|
"name": "Vetoed",
|
|
"args": [
|
|
"AccountId",
|
|
"Hash",
|
|
"BlockNumber"
|
|
],
|
|
"documentation": [
|
|
" An external proposal has been vetoed."
|
|
]
|
|
},
|
|
{
|
|
"name": "PreimageNoted",
|
|
"args": [
|
|
"Hash",
|
|
"AccountId",
|
|
"Balance"
|
|
],
|
|
"documentation": [
|
|
" A proposal's preimage was noted, and the deposit taken."
|
|
]
|
|
},
|
|
{
|
|
"name": "PreimageUsed",
|
|
"args": [
|
|
"Hash",
|
|
"AccountId",
|
|
"Balance"
|
|
],
|
|
"documentation": [
|
|
" A proposal preimage was removed and used (the deposit was returned)."
|
|
]
|
|
},
|
|
{
|
|
"name": "PreimageInvalid",
|
|
"args": [
|
|
"Hash",
|
|
"ReferendumIndex"
|
|
],
|
|
"documentation": [
|
|
" A proposal could not be executed because its preimage was invalid."
|
|
]
|
|
},
|
|
{
|
|
"name": "PreimageMissing",
|
|
"args": [
|
|
"Hash",
|
|
"ReferendumIndex"
|
|
],
|
|
"documentation": [
|
|
" A proposal could not be executed because its preimage was missing."
|
|
]
|
|
},
|
|
{
|
|
"name": "PreimageReaped",
|
|
"args": [
|
|
"Hash",
|
|
"AccountId",
|
|
"Balance",
|
|
"AccountId"
|
|
],
|
|
"documentation": [
|
|
" A registered preimage was removed and the deposit collected by the reaper (last item)."
|
|
]
|
|
},
|
|
{
|
|
"name": "Unlocked",
|
|
"args": [
|
|
"AccountId"
|
|
],
|
|
"documentation": [
|
|
" An account has been unlocked successfully."
|
|
]
|
|
}
|
|
],
|
|
"constants": [
|
|
{
|
|
"name": "EnactmentPeriod",
|
|
"type": "BlockNumber",
|
|
"value": "0x002f0d00",
|
|
"documentation": [
|
|
" The minimum period of locking and the period between a proposal being approved and enacted.",
|
|
"",
|
|
" It should generally be a little more than the unstake period to ensure that",
|
|
" voting stakers have an opportunity to remove themselves from the system in the case where",
|
|
" they are on the losing side of a vote."
|
|
]
|
|
},
|
|
{
|
|
"name": "LaunchPeriod",
|
|
"type": "BlockNumber",
|
|
"value": "0x004e0c00",
|
|
"documentation": [
|
|
" How often (in blocks) new public referenda are launched."
|
|
]
|
|
},
|
|
{
|
|
"name": "VotingPeriod",
|
|
"type": "BlockNumber",
|
|
"value": "0x004e0c00",
|
|
"documentation": [
|
|
" How often (in blocks) to check for new votes."
|
|
]
|
|
},
|
|
{
|
|
"name": "MinimumDeposit",
|
|
"type": "BalanceOf",
|
|
"value": "0x0000c16ff28623000000000000000000",
|
|
"documentation": [
|
|
" The minimum amount to be used as a deposit for a public referendum proposal."
|
|
]
|
|
},
|
|
{
|
|
"name": "EmergencyVotingPeriod",
|
|
"type": "BlockNumber",
|
|
"value": "0x80510100",
|
|
"documentation": [
|
|
" Minimum voting period allowed for an emergency referendum."
|
|
]
|
|
},
|
|
{
|
|
"name": "CooloffPeriod",
|
|
"type": "BlockNumber",
|
|
"value": "0x004e0c00",
|
|
"documentation": [
|
|
" Period in blocks where an external proposal may not be re-submitted after being vetoed."
|
|
]
|
|
},
|
|
{
|
|
"name": "PreimageByteDeposit",
|
|
"type": "BalanceOf",
|
|
"value": "0x0010a5d4e80000000000000000000000",
|
|
"documentation": [
|
|
" The amount of balance that must be deposited per byte of preimage stored."
|
|
]
|
|
}
|
|
],
|
|
"errors": [
|
|
{
|
|
"name": "ValueLow",
|
|
"documentation": [
|
|
" Value too low"
|
|
]
|
|
},
|
|
{
|
|
"name": "ProposalMissing",
|
|
"documentation": [
|
|
" Proposal does not exist"
|
|
]
|
|
},
|
|
{
|
|
"name": "NotProxy",
|
|
"documentation": [
|
|
" Not a proxy"
|
|
]
|
|
},
|
|
{
|
|
"name": "BadIndex",
|
|
"documentation": [
|
|
" Unknown index"
|
|
]
|
|
},
|
|
{
|
|
"name": "AlreadyCanceled",
|
|
"documentation": [
|
|
" Cannot cancel the same proposal twice"
|
|
]
|
|
},
|
|
{
|
|
"name": "DuplicateProposal",
|
|
"documentation": [
|
|
" Proposal already made"
|
|
]
|
|
},
|
|
{
|
|
"name": "ProposalBlacklisted",
|
|
"documentation": [
|
|
" Proposal still blacklisted"
|
|
]
|
|
},
|
|
{
|
|
"name": "NotSimpleMajority",
|
|
"documentation": [
|
|
" Next external proposal not simple majority"
|
|
]
|
|
},
|
|
{
|
|
"name": "InvalidHash",
|
|
"documentation": [
|
|
" Invalid hash"
|
|
]
|
|
},
|
|
{
|
|
"name": "NoProposal",
|
|
"documentation": [
|
|
" No external proposal"
|
|
]
|
|
},
|
|
{
|
|
"name": "AlreadyVetoed",
|
|
"documentation": [
|
|
" Identity may not veto a proposal twice"
|
|
]
|
|
},
|
|
{
|
|
"name": "AlreadyProxy",
|
|
"documentation": [
|
|
" Already a proxy"
|
|
]
|
|
},
|
|
{
|
|
"name": "WrongProxy",
|
|
"documentation": [
|
|
" Wrong proxy"
|
|
]
|
|
},
|
|
{
|
|
"name": "NotDelegated",
|
|
"documentation": [
|
|
" Not delegated"
|
|
]
|
|
},
|
|
{
|
|
"name": "DuplicatePreimage",
|
|
"documentation": [
|
|
" Preimage already noted"
|
|
]
|
|
},
|
|
{
|
|
"name": "NotImminent",
|
|
"documentation": [
|
|
" Not imminent"
|
|
]
|
|
},
|
|
{
|
|
"name": "Early",
|
|
"documentation": [
|
|
" Too early"
|
|
]
|
|
},
|
|
{
|
|
"name": "Imminent",
|
|
"documentation": [
|
|
" Imminent"
|
|
]
|
|
},
|
|
{
|
|
"name": "PreimageMissing",
|
|
"documentation": [
|
|
" Preimage not found"
|
|
]
|
|
},
|
|
{
|
|
"name": "ReferendumInvalid",
|
|
"documentation": [
|
|
" Vote given for invalid referendum"
|
|
]
|
|
},
|
|
{
|
|
"name": "PreimageInvalid",
|
|
"documentation": [
|
|
" Invalid preimage"
|
|
]
|
|
},
|
|
{
|
|
"name": "NoneWaiting",
|
|
"documentation": [
|
|
" No proposals waiting"
|
|
]
|
|
},
|
|
{
|
|
"name": "NotLocked",
|
|
"documentation": [
|
|
" The target account does not have a lock."
|
|
]
|
|
},
|
|
{
|
|
"name": "NotExpired",
|
|
"documentation": [
|
|
" The lock on the account to be unlocked has not yet expired."
|
|
]
|
|
},
|
|
{
|
|
"name": "NotOpen",
|
|
"documentation": [
|
|
" A proxy-pairing was attempted to an account that was not open."
|
|
]
|
|
},
|
|
{
|
|
"name": "WrongOpen",
|
|
"documentation": [
|
|
" A proxy-pairing was attempted to an account that was open to another account."
|
|
]
|
|
},
|
|
{
|
|
"name": "NotActive",
|
|
"documentation": [
|
|
" A proxy-de-pairing was attempted to an account that was not active."
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Council",
|
|
"storage": {
|
|
"prefix": "Instance1Collective",
|
|
"items": [
|
|
{
|
|
"name": "Proposals",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Plain": "Vec<Hash>"
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" The hashes of the active proposals."
|
|
]
|
|
},
|
|
{
|
|
"name": "ProposalOf",
|
|
"modifier": "Optional",
|
|
"type": {
|
|
"Map": {
|
|
"hasher": "Identity",
|
|
"key": "Hash",
|
|
"value": "Proposal",
|
|
"linked": false
|
|
}
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" Actual proposal for a given hash, if it's current."
|
|
]
|
|
},
|
|
{
|
|
"name": "Voting",
|
|
"modifier": "Optional",
|
|
"type": {
|
|
"Map": {
|
|
"hasher": "Identity",
|
|
"key": "Hash",
|
|
"value": "Votes",
|
|
"linked": false
|
|
}
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" Votes on a given proposal, if it is ongoing."
|
|
]
|
|
},
|
|
{
|
|
"name": "ProposalCount",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Plain": "u32"
|
|
},
|
|
"fallback": "0x00000000",
|
|
"documentation": [
|
|
" Proposals so far."
|
|
]
|
|
},
|
|
{
|
|
"name": "Members",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Plain": "Vec<AccountId>"
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" The current members of the collective. This is stored sorted (just by value)."
|
|
]
|
|
},
|
|
{
|
|
"name": "Prime",
|
|
"modifier": "Optional",
|
|
"type": {
|
|
"Plain": "AccountId"
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" The member who provides the default vote for any other members that do not vote before",
|
|
" the timeout. If None, then no member has that privilege."
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"calls": [
|
|
{
|
|
"name": "set_members",
|
|
"args": [
|
|
{
|
|
"name": "new_members",
|
|
"type": "Vec<AccountId>"
|
|
},
|
|
{
|
|
"name": "prime",
|
|
"type": "Option<AccountId>"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Set the collective's membership.",
|
|
"",
|
|
" - `new_members`: The new member list. Be nice to the chain and",
|
|
" - `prime`: The prime member whose vote sets the default.",
|
|
"",
|
|
" Requires root origin."
|
|
]
|
|
},
|
|
{
|
|
"name": "execute",
|
|
"args": [
|
|
{
|
|
"name": "proposal",
|
|
"type": "Proposal"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Dispatch a proposal from a member using the `Member` origin.",
|
|
"",
|
|
" Origin must be a member of the collective."
|
|
]
|
|
},
|
|
{
|
|
"name": "propose",
|
|
"args": [
|
|
{
|
|
"name": "threshold",
|
|
"type": "Compact<MemberCount>"
|
|
},
|
|
{
|
|
"name": "proposal",
|
|
"type": "Proposal"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" # <weight>",
|
|
" - Bounded storage reads and writes.",
|
|
" - Argument `threshold` has bearing on weight.",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "vote",
|
|
"args": [
|
|
{
|
|
"name": "proposal",
|
|
"type": "Hash"
|
|
},
|
|
{
|
|
"name": "index",
|
|
"type": "Compact<ProposalIndex>"
|
|
},
|
|
{
|
|
"name": "approve",
|
|
"type": "bool"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" # <weight>",
|
|
" - Bounded storage read and writes.",
|
|
" - Will be slightly heavier if the proposal is approved / disapproved after the vote.",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "close",
|
|
"args": [
|
|
{
|
|
"name": "proposal",
|
|
"type": "Hash"
|
|
},
|
|
{
|
|
"name": "index",
|
|
"type": "Compact<ProposalIndex>"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" May be called by any signed account after the voting duration has ended in order to",
|
|
" finish voting and close the proposal.",
|
|
"",
|
|
" Abstentions are counted as rejections unless there is a prime member set and the prime",
|
|
" member cast an approval.",
|
|
"",
|
|
" - the weight of `proposal` preimage.",
|
|
" - up to three events deposited.",
|
|
" - one read, two removals, one mutation. (plus three static reads.)",
|
|
" - computation and i/o `O(P + L + M)` where:",
|
|
" - `M` is number of members,",
|
|
" - `P` is number of active proposals,",
|
|
" - `L` is the encoded length of `proposal` preimage."
|
|
]
|
|
}
|
|
],
|
|
"events": [
|
|
{
|
|
"name": "Proposed",
|
|
"args": [
|
|
"AccountId",
|
|
"ProposalIndex",
|
|
"Hash",
|
|
"MemberCount"
|
|
],
|
|
"documentation": [
|
|
" A motion (given hash) has been proposed (by given account) with a threshold (given",
|
|
" `MemberCount`)."
|
|
]
|
|
},
|
|
{
|
|
"name": "Voted",
|
|
"args": [
|
|
"AccountId",
|
|
"Hash",
|
|
"bool",
|
|
"MemberCount",
|
|
"MemberCount"
|
|
],
|
|
"documentation": [
|
|
" A motion (given hash) has been voted on by given account, leaving",
|
|
" a tally (yes votes and no votes given respectively as `MemberCount`)."
|
|
]
|
|
},
|
|
{
|
|
"name": "Approved",
|
|
"args": [
|
|
"Hash"
|
|
],
|
|
"documentation": [
|
|
" A motion was approved by the required threshold."
|
|
]
|
|
},
|
|
{
|
|
"name": "Disapproved",
|
|
"args": [
|
|
"Hash"
|
|
],
|
|
"documentation": [
|
|
" A motion was not approved by the required threshold."
|
|
]
|
|
},
|
|
{
|
|
"name": "Executed",
|
|
"args": [
|
|
"Hash",
|
|
"bool"
|
|
],
|
|
"documentation": [
|
|
" A motion was executed; `bool` is true if returned without error."
|
|
]
|
|
},
|
|
{
|
|
"name": "MemberExecuted",
|
|
"args": [
|
|
"Hash",
|
|
"bool"
|
|
],
|
|
"documentation": [
|
|
" A single member did some action; `bool` is true if returned without error."
|
|
]
|
|
},
|
|
{
|
|
"name": "Closed",
|
|
"args": [
|
|
"Hash",
|
|
"MemberCount",
|
|
"MemberCount"
|
|
],
|
|
"documentation": [
|
|
" A proposal was closed after its duration was up."
|
|
]
|
|
}
|
|
],
|
|
"constants": [],
|
|
"errors": [
|
|
{
|
|
"name": "NotMember",
|
|
"documentation": [
|
|
" Account is not a member"
|
|
]
|
|
},
|
|
{
|
|
"name": "DuplicateProposal",
|
|
"documentation": [
|
|
" Duplicate proposals not allowed"
|
|
]
|
|
},
|
|
{
|
|
"name": "ProposalMissing",
|
|
"documentation": [
|
|
" Proposal must exist"
|
|
]
|
|
},
|
|
{
|
|
"name": "WrongIndex",
|
|
"documentation": [
|
|
" Mismatched index"
|
|
]
|
|
},
|
|
{
|
|
"name": "DuplicateVote",
|
|
"documentation": [
|
|
" Duplicate vote ignored"
|
|
]
|
|
},
|
|
{
|
|
"name": "AlreadyInitialized",
|
|
"documentation": [
|
|
" Members are already initialized!"
|
|
]
|
|
},
|
|
{
|
|
"name": "TooEarly",
|
|
"documentation": [
|
|
" The close call is made too early, before the end of the voting."
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "TechnicalCommittee",
|
|
"storage": {
|
|
"prefix": "Instance2Collective",
|
|
"items": [
|
|
{
|
|
"name": "Proposals",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Plain": "Vec<Hash>"
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" The hashes of the active proposals."
|
|
]
|
|
},
|
|
{
|
|
"name": "ProposalOf",
|
|
"modifier": "Optional",
|
|
"type": {
|
|
"Map": {
|
|
"hasher": "Identity",
|
|
"key": "Hash",
|
|
"value": "Proposal",
|
|
"linked": false
|
|
}
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" Actual proposal for a given hash, if it's current."
|
|
]
|
|
},
|
|
{
|
|
"name": "Voting",
|
|
"modifier": "Optional",
|
|
"type": {
|
|
"Map": {
|
|
"hasher": "Identity",
|
|
"key": "Hash",
|
|
"value": "Votes",
|
|
"linked": false
|
|
}
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" Votes on a given proposal, if it is ongoing."
|
|
]
|
|
},
|
|
{
|
|
"name": "ProposalCount",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Plain": "u32"
|
|
},
|
|
"fallback": "0x00000000",
|
|
"documentation": [
|
|
" Proposals so far."
|
|
]
|
|
},
|
|
{
|
|
"name": "Members",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Plain": "Vec<AccountId>"
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" The current members of the collective. This is stored sorted (just by value)."
|
|
]
|
|
},
|
|
{
|
|
"name": "Prime",
|
|
"modifier": "Optional",
|
|
"type": {
|
|
"Plain": "AccountId"
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" The member who provides the default vote for any other members that do not vote before",
|
|
" the timeout. If None, then no member has that privilege."
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"calls": [
|
|
{
|
|
"name": "set_members",
|
|
"args": [
|
|
{
|
|
"name": "new_members",
|
|
"type": "Vec<AccountId>"
|
|
},
|
|
{
|
|
"name": "prime",
|
|
"type": "Option<AccountId>"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Set the collective's membership.",
|
|
"",
|
|
" - `new_members`: The new member list. Be nice to the chain and",
|
|
" - `prime`: The prime member whose vote sets the default.",
|
|
"",
|
|
" Requires root origin."
|
|
]
|
|
},
|
|
{
|
|
"name": "execute",
|
|
"args": [
|
|
{
|
|
"name": "proposal",
|
|
"type": "Proposal"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Dispatch a proposal from a member using the `Member` origin.",
|
|
"",
|
|
" Origin must be a member of the collective."
|
|
]
|
|
},
|
|
{
|
|
"name": "propose",
|
|
"args": [
|
|
{
|
|
"name": "threshold",
|
|
"type": "Compact<MemberCount>"
|
|
},
|
|
{
|
|
"name": "proposal",
|
|
"type": "Proposal"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" # <weight>",
|
|
" - Bounded storage reads and writes.",
|
|
" - Argument `threshold` has bearing on weight.",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "vote",
|
|
"args": [
|
|
{
|
|
"name": "proposal",
|
|
"type": "Hash"
|
|
},
|
|
{
|
|
"name": "index",
|
|
"type": "Compact<ProposalIndex>"
|
|
},
|
|
{
|
|
"name": "approve",
|
|
"type": "bool"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" # <weight>",
|
|
" - Bounded storage read and writes.",
|
|
" - Will be slightly heavier if the proposal is approved / disapproved after the vote.",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "close",
|
|
"args": [
|
|
{
|
|
"name": "proposal",
|
|
"type": "Hash"
|
|
},
|
|
{
|
|
"name": "index",
|
|
"type": "Compact<ProposalIndex>"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" May be called by any signed account after the voting duration has ended in order to",
|
|
" finish voting and close the proposal.",
|
|
"",
|
|
" Abstentions are counted as rejections unless there is a prime member set and the prime",
|
|
" member cast an approval.",
|
|
"",
|
|
" - the weight of `proposal` preimage.",
|
|
" - up to three events deposited.",
|
|
" - one read, two removals, one mutation. (plus three static reads.)",
|
|
" - computation and i/o `O(P + L + M)` where:",
|
|
" - `M` is number of members,",
|
|
" - `P` is number of active proposals,",
|
|
" - `L` is the encoded length of `proposal` preimage."
|
|
]
|
|
}
|
|
],
|
|
"events": [
|
|
{
|
|
"name": "Proposed",
|
|
"args": [
|
|
"AccountId",
|
|
"ProposalIndex",
|
|
"Hash",
|
|
"MemberCount"
|
|
],
|
|
"documentation": [
|
|
" A motion (given hash) has been proposed (by given account) with a threshold (given",
|
|
" `MemberCount`)."
|
|
]
|
|
},
|
|
{
|
|
"name": "Voted",
|
|
"args": [
|
|
"AccountId",
|
|
"Hash",
|
|
"bool",
|
|
"MemberCount",
|
|
"MemberCount"
|
|
],
|
|
"documentation": [
|
|
" A motion (given hash) has been voted on by given account, leaving",
|
|
" a tally (yes votes and no votes given respectively as `MemberCount`)."
|
|
]
|
|
},
|
|
{
|
|
"name": "Approved",
|
|
"args": [
|
|
"Hash"
|
|
],
|
|
"documentation": [
|
|
" A motion was approved by the required threshold."
|
|
]
|
|
},
|
|
{
|
|
"name": "Disapproved",
|
|
"args": [
|
|
"Hash"
|
|
],
|
|
"documentation": [
|
|
" A motion was not approved by the required threshold."
|
|
]
|
|
},
|
|
{
|
|
"name": "Executed",
|
|
"args": [
|
|
"Hash",
|
|
"bool"
|
|
],
|
|
"documentation": [
|
|
" A motion was executed; `bool` is true if returned without error."
|
|
]
|
|
},
|
|
{
|
|
"name": "MemberExecuted",
|
|
"args": [
|
|
"Hash",
|
|
"bool"
|
|
],
|
|
"documentation": [
|
|
" A single member did some action; `bool` is true if returned without error."
|
|
]
|
|
},
|
|
{
|
|
"name": "Closed",
|
|
"args": [
|
|
"Hash",
|
|
"MemberCount",
|
|
"MemberCount"
|
|
],
|
|
"documentation": [
|
|
" A proposal was closed after its duration was up."
|
|
]
|
|
}
|
|
],
|
|
"constants": [],
|
|
"errors": [
|
|
{
|
|
"name": "NotMember",
|
|
"documentation": [
|
|
" Account is not a member"
|
|
]
|
|
},
|
|
{
|
|
"name": "DuplicateProposal",
|
|
"documentation": [
|
|
" Duplicate proposals not allowed"
|
|
]
|
|
},
|
|
{
|
|
"name": "ProposalMissing",
|
|
"documentation": [
|
|
" Proposal must exist"
|
|
]
|
|
},
|
|
{
|
|
"name": "WrongIndex",
|
|
"documentation": [
|
|
" Mismatched index"
|
|
]
|
|
},
|
|
{
|
|
"name": "DuplicateVote",
|
|
"documentation": [
|
|
" Duplicate vote ignored"
|
|
]
|
|
},
|
|
{
|
|
"name": "AlreadyInitialized",
|
|
"documentation": [
|
|
" Members are already initialized!"
|
|
]
|
|
},
|
|
{
|
|
"name": "TooEarly",
|
|
"documentation": [
|
|
" The close call is made too early, before the end of the voting."
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Elections",
|
|
"storage": {
|
|
"prefix": "PhragmenElection",
|
|
"items": [
|
|
{
|
|
"name": "Members",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Plain": "Vec<(AccountId,BalanceOf)>"
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" The current elected membership. Sorted based on account id."
|
|
]
|
|
},
|
|
{
|
|
"name": "RunnersUp",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Plain": "Vec<(AccountId,BalanceOf)>"
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" The current runners_up. Sorted based on low to high merit (worse to best runner)."
|
|
]
|
|
},
|
|
{
|
|
"name": "ElectionRounds",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Plain": "u32"
|
|
},
|
|
"fallback": "0x00000000",
|
|
"documentation": [
|
|
" The total number of vote rounds that have happened, excluding the upcoming one."
|
|
]
|
|
},
|
|
{
|
|
"name": "VotesOf",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Map": {
|
|
"hasher": "Twox64Concat",
|
|
"key": "AccountId",
|
|
"value": "Vec<AccountId>",
|
|
"linked": false
|
|
}
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" Votes of a particular voter, with the round index of the votes."
|
|
]
|
|
},
|
|
{
|
|
"name": "StakeOf",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Map": {
|
|
"hasher": "Twox64Concat",
|
|
"key": "AccountId",
|
|
"value": "BalanceOf",
|
|
"linked": false
|
|
}
|
|
},
|
|
"fallback": "0x00000000000000000000000000000000",
|
|
"documentation": [
|
|
" Locked stake of a voter."
|
|
]
|
|
},
|
|
{
|
|
"name": "Candidates",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Plain": "Vec<AccountId>"
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" The present candidate list. Sorted based on account-id. A current member or a runner can",
|
|
" never enter this vector and is always implicitly assumed to be a candidate."
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"calls": [
|
|
{
|
|
"name": "vote",
|
|
"args": [
|
|
{
|
|
"name": "votes",
|
|
"type": "Vec<AccountId>"
|
|
},
|
|
{
|
|
"name": "value",
|
|
"type": "Compact<BalanceOf>"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Vote for a set of candidates for the upcoming round of election.",
|
|
"",
|
|
" The `votes` should:",
|
|
" - not be empty.",
|
|
" - be less than the number of candidates.",
|
|
"",
|
|
" Upon voting, `value` units of `who`'s balance is locked and a bond amount is reserved.",
|
|
" It is the responsibility of the caller to not place all of their balance into the lock",
|
|
" and keep some for further transactions.",
|
|
"",
|
|
" # <weight>",
|
|
" #### State",
|
|
" Reads: O(1)",
|
|
" Writes: O(V) given `V` votes. V is bounded by 16.",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "remove_voter",
|
|
"args": [],
|
|
"documentation": [
|
|
" Remove `origin` as a voter. This removes the lock and returns the bond.",
|
|
"",
|
|
" # <weight>",
|
|
" #### State",
|
|
" Reads: O(1)",
|
|
" Writes: O(1)",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "report_defunct_voter",
|
|
"args": [
|
|
{
|
|
"name": "target",
|
|
"type": "LookupSource"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Report `target` for being an defunct voter. In case of a valid report, the reporter is",
|
|
" rewarded by the bond amount of `target`. Otherwise, the reporter itself is removed and",
|
|
" their bond is slashed.",
|
|
"",
|
|
" A defunct voter is defined to be:",
|
|
" - a voter whose current submitted votes are all invalid. i.e. all of them are no",
|
|
" longer a candidate nor an active member.",
|
|
"",
|
|
" # <weight>",
|
|
" #### State",
|
|
" Reads: O(NLogM) given M current candidates and N votes for `target`.",
|
|
" Writes: O(1)",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "submit_candidacy",
|
|
"args": [],
|
|
"documentation": [
|
|
" Submit oneself for candidacy.",
|
|
"",
|
|
" A candidate will either:",
|
|
" - Lose at the end of the term and forfeit their deposit.",
|
|
" - Win and become a member. Members will eventually get their stash back.",
|
|
" - Become a runner-up. Runners-ups are reserved members in case one gets forcefully",
|
|
" removed.",
|
|
"",
|
|
" # <weight>",
|
|
" #### State",
|
|
" Reads: O(LogN) Given N candidates.",
|
|
" Writes: O(1)",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "renounce_candidacy",
|
|
"args": [],
|
|
"documentation": [
|
|
" Renounce one's intention to be a candidate for the next election round. 3 potential",
|
|
" outcomes exist:",
|
|
" - `origin` is a candidate and not elected in any set. In this case, the bond is",
|
|
" unreserved, returned and origin is removed as a candidate.",
|
|
" - `origin` is a current runner up. In this case, the bond is unreserved, returned and",
|
|
" origin is removed as a runner.",
|
|
" - `origin` is a current member. In this case, the bond is unreserved and origin is",
|
|
" removed as a member, consequently not being a candidate for the next round anymore.",
|
|
" Similar to [`remove_voter`], if replacement runners exists, they are immediately used."
|
|
]
|
|
},
|
|
{
|
|
"name": "remove_member",
|
|
"args": [
|
|
{
|
|
"name": "who",
|
|
"type": "LookupSource"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Remove a particular member from the set. This is effective immediately and the bond of",
|
|
" the outgoing member is slashed.",
|
|
"",
|
|
" If a runner-up is available, then the best runner-up will be removed and replaces the",
|
|
" outgoing member. Otherwise, a new phragmen round is started.",
|
|
"",
|
|
" Note that this does not affect the designated block number of the next election.",
|
|
"",
|
|
" # <weight>",
|
|
" #### State",
|
|
" Reads: O(do_phragmen)",
|
|
" Writes: O(do_phragmen)",
|
|
" # </weight>"
|
|
]
|
|
}
|
|
],
|
|
"events": [
|
|
{
|
|
"name": "NewTerm",
|
|
"args": [
|
|
"Vec<(AccountId,Balance)>"
|
|
],
|
|
"documentation": [
|
|
" A new term with new members. This indicates that enough candidates existed, not that",
|
|
" enough have has been elected. The inner value must be examined for this purpose."
|
|
]
|
|
},
|
|
{
|
|
"name": "EmptyTerm",
|
|
"args": [],
|
|
"documentation": [
|
|
" No (or not enough) candidates existed for this round."
|
|
]
|
|
},
|
|
{
|
|
"name": "MemberKicked",
|
|
"args": [
|
|
"AccountId"
|
|
],
|
|
"documentation": [
|
|
" A member has been removed. This should always be followed by either `NewTerm` ot",
|
|
" `EmptyTerm`."
|
|
]
|
|
},
|
|
{
|
|
"name": "MemberRenounced",
|
|
"args": [
|
|
"AccountId"
|
|
],
|
|
"documentation": [
|
|
" A member has renounced their candidacy."
|
|
]
|
|
},
|
|
{
|
|
"name": "VoterReported",
|
|
"args": [
|
|
"AccountId",
|
|
"AccountId",
|
|
"bool"
|
|
],
|
|
"documentation": [
|
|
" A voter (first element) was reported (byt the second element) with the the report being",
|
|
" successful or not (third element)."
|
|
]
|
|
}
|
|
],
|
|
"constants": [
|
|
{
|
|
"name": "CandidacyBond",
|
|
"type": "BalanceOf",
|
|
"value": "0x0080c6a47e8d03000000000000000000",
|
|
"documentation": []
|
|
},
|
|
{
|
|
"name": "VotingBond",
|
|
"type": "BalanceOf",
|
|
"value": "0x00407a10f35a00000000000000000000",
|
|
"documentation": []
|
|
},
|
|
{
|
|
"name": "DesiredMembers",
|
|
"type": "u32",
|
|
"value": "0x0d000000",
|
|
"documentation": []
|
|
},
|
|
{
|
|
"name": "DesiredRunnersUp",
|
|
"type": "u32",
|
|
"value": "0x07000000",
|
|
"documentation": []
|
|
},
|
|
{
|
|
"name": "TermDuration",
|
|
"type": "BlockNumber",
|
|
"value": "0x80130300",
|
|
"documentation": []
|
|
}
|
|
],
|
|
"errors": [
|
|
{
|
|
"name": "UnableToVote",
|
|
"documentation": [
|
|
" Cannot vote when no candidates or members exist."
|
|
]
|
|
},
|
|
{
|
|
"name": "NoVotes",
|
|
"documentation": [
|
|
" Must vote for at least one candidate."
|
|
]
|
|
},
|
|
{
|
|
"name": "TooManyVotes",
|
|
"documentation": [
|
|
" Cannot vote more than candidates."
|
|
]
|
|
},
|
|
{
|
|
"name": "MaximumVotesExceeded",
|
|
"documentation": [
|
|
" Cannot vote more than maximum allowed."
|
|
]
|
|
},
|
|
{
|
|
"name": "LowBalance",
|
|
"documentation": [
|
|
" Cannot vote with stake less than minimum balance."
|
|
]
|
|
},
|
|
{
|
|
"name": "UnableToPayBond",
|
|
"documentation": [
|
|
" Voter can not pay voting bond."
|
|
]
|
|
},
|
|
{
|
|
"name": "MustBeVoter",
|
|
"documentation": [
|
|
" Must be a voter."
|
|
]
|
|
},
|
|
{
|
|
"name": "ReportSelf",
|
|
"documentation": [
|
|
" Cannot report self."
|
|
]
|
|
},
|
|
{
|
|
"name": "DuplicatedCandidate",
|
|
"documentation": [
|
|
" Duplicated candidate submission."
|
|
]
|
|
},
|
|
{
|
|
"name": "MemberSubmit",
|
|
"documentation": [
|
|
" Member cannot re-submit candidacy."
|
|
]
|
|
},
|
|
{
|
|
"name": "RunnerSubmit",
|
|
"documentation": [
|
|
" Runner cannot re-submit candidacy."
|
|
]
|
|
},
|
|
{
|
|
"name": "InsufficientCandidateFunds",
|
|
"documentation": [
|
|
" Candidate does not have enough funds."
|
|
]
|
|
},
|
|
{
|
|
"name": "InvalidOrigin",
|
|
"documentation": [
|
|
" Origin is not a candidate, member or a runner up."
|
|
]
|
|
},
|
|
{
|
|
"name": "NotMember",
|
|
"documentation": [
|
|
" Not a member."
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "TechnicalMembership",
|
|
"storage": {
|
|
"prefix": "Instance1Membership",
|
|
"items": [
|
|
{
|
|
"name": "Members",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Plain": "Vec<AccountId>"
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" The current membership, stored as an ordered Vec."
|
|
]
|
|
},
|
|
{
|
|
"name": "Prime",
|
|
"modifier": "Optional",
|
|
"type": {
|
|
"Plain": "AccountId"
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" The current prime member, if one exists."
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"calls": [
|
|
{
|
|
"name": "add_member",
|
|
"args": [
|
|
{
|
|
"name": "who",
|
|
"type": "AccountId"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Add a member `who` to the set.",
|
|
"",
|
|
" May only be called from `AddOrigin` or root."
|
|
]
|
|
},
|
|
{
|
|
"name": "remove_member",
|
|
"args": [
|
|
{
|
|
"name": "who",
|
|
"type": "AccountId"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Remove a member `who` from the set.",
|
|
"",
|
|
" May only be called from `RemoveOrigin` or root."
|
|
]
|
|
},
|
|
{
|
|
"name": "swap_member",
|
|
"args": [
|
|
{
|
|
"name": "remove",
|
|
"type": "AccountId"
|
|
},
|
|
{
|
|
"name": "add",
|
|
"type": "AccountId"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Swap out one member `remove` for another `add`.",
|
|
"",
|
|
" May only be called from `SwapOrigin` or root.",
|
|
"",
|
|
" Prime membership is *not* passed from `remove` to `add`, if extant."
|
|
]
|
|
},
|
|
{
|
|
"name": "reset_members",
|
|
"args": [
|
|
{
|
|
"name": "members",
|
|
"type": "Vec<AccountId>"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Change the membership to a new set, disregarding the existing membership. Be nice and",
|
|
" pass `members` pre-sorted.",
|
|
"",
|
|
" May only be called from `ResetOrigin` or root."
|
|
]
|
|
},
|
|
{
|
|
"name": "change_key",
|
|
"args": [
|
|
{
|
|
"name": "new",
|
|
"type": "AccountId"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Swap out the sending member for some other key `new`.",
|
|
"",
|
|
" May only be called from `Signed` origin of a current member.",
|
|
"",
|
|
" Prime membership is passed from the origin account to `new`, if extant."
|
|
]
|
|
},
|
|
{
|
|
"name": "set_prime",
|
|
"args": [
|
|
{
|
|
"name": "who",
|
|
"type": "AccountId"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Set the prime member. Must be a current member."
|
|
]
|
|
},
|
|
{
|
|
"name": "clear_prime",
|
|
"args": [],
|
|
"documentation": [
|
|
" Remove the prime member if it exists."
|
|
]
|
|
}
|
|
],
|
|
"events": [
|
|
{
|
|
"name": "MemberAdded",
|
|
"args": [],
|
|
"documentation": [
|
|
" The given member was added; see the transaction for who."
|
|
]
|
|
},
|
|
{
|
|
"name": "MemberRemoved",
|
|
"args": [],
|
|
"documentation": [
|
|
" The given member was removed; see the transaction for who."
|
|
]
|
|
},
|
|
{
|
|
"name": "MembersSwapped",
|
|
"args": [],
|
|
"documentation": [
|
|
" Two members were swapped; see the transaction for who."
|
|
]
|
|
},
|
|
{
|
|
"name": "MembersReset",
|
|
"args": [],
|
|
"documentation": [
|
|
" The membership was reset; see the transaction for who the new set is."
|
|
]
|
|
},
|
|
{
|
|
"name": "KeyChanged",
|
|
"args": [],
|
|
"documentation": [
|
|
" One of the members' keys changed."
|
|
]
|
|
},
|
|
{
|
|
"name": "Dummy",
|
|
"args": [
|
|
"PhantomData"
|
|
],
|
|
"documentation": [
|
|
" Phantom member, never used."
|
|
]
|
|
}
|
|
],
|
|
"constants": [],
|
|
"errors": []
|
|
},
|
|
{
|
|
"name": "FinalityTracker",
|
|
"storage": null,
|
|
"calls": [
|
|
{
|
|
"name": "final_hint",
|
|
"args": [
|
|
{
|
|
"name": "hint",
|
|
"type": "Compact<BlockNumber>"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Hint that the author of this block thinks the best finalized",
|
|
" block is the given number."
|
|
]
|
|
}
|
|
],
|
|
"events": null,
|
|
"constants": [
|
|
{
|
|
"name": "WindowSize",
|
|
"type": "BlockNumber",
|
|
"value": "0x65000000",
|
|
"documentation": [
|
|
" The number of recent samples to keep from this chain. Default is 101."
|
|
]
|
|
},
|
|
{
|
|
"name": "ReportLatency",
|
|
"type": "BlockNumber",
|
|
"value": "0xe8030000",
|
|
"documentation": [
|
|
" The delay after which point things become suspicious. Default is 1000."
|
|
]
|
|
}
|
|
],
|
|
"errors": [
|
|
{
|
|
"name": "AlreadyUpdated",
|
|
"documentation": [
|
|
" Final hint must be updated only once in the block"
|
|
]
|
|
},
|
|
{
|
|
"name": "BadHint",
|
|
"documentation": [
|
|
" Finalized height above block number"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Grandpa",
|
|
"storage": {
|
|
"prefix": "GrandpaFinality",
|
|
"items": [
|
|
{
|
|
"name": "Authorities",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Plain": "AuthorityList"
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" DEPRECATED",
|
|
"",
|
|
" This used to store the current authority set, which has been migrated to the well-known",
|
|
" GRANDPA_AUTHORITIES_KEY unhashed key."
|
|
]
|
|
},
|
|
{
|
|
"name": "State",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Plain": "StoredState"
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" State of the current authority set."
|
|
]
|
|
},
|
|
{
|
|
"name": "PendingChange",
|
|
"modifier": "Optional",
|
|
"type": {
|
|
"Plain": "StoredPendingChange"
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" Pending change: (signaled at, scheduled change)."
|
|
]
|
|
},
|
|
{
|
|
"name": "NextForced",
|
|
"modifier": "Optional",
|
|
"type": {
|
|
"Plain": "BlockNumber"
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" next block number where we can force a change."
|
|
]
|
|
},
|
|
{
|
|
"name": "Stalled",
|
|
"modifier": "Optional",
|
|
"type": {
|
|
"Plain": "(BlockNumber,BlockNumber)"
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" `true` if we are currently stalled."
|
|
]
|
|
},
|
|
{
|
|
"name": "CurrentSetId",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Plain": "SetId"
|
|
},
|
|
"fallback": "0x0000000000000000",
|
|
"documentation": [
|
|
" The number of changes (both in terms of keys and underlying economic responsibilities)",
|
|
" in the \"set\" of Grandpa validators from genesis."
|
|
]
|
|
},
|
|
{
|
|
"name": "SetIdSession",
|
|
"modifier": "Optional",
|
|
"type": {
|
|
"Map": {
|
|
"hasher": "Twox64Concat",
|
|
"key": "SetId",
|
|
"value": "SessionIndex",
|
|
"linked": false
|
|
}
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" A mapping from grandpa set ID to the index of the *most recent* session for which its",
|
|
" members were responsible."
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"calls": [
|
|
{
|
|
"name": "report_misbehavior",
|
|
"args": [
|
|
{
|
|
"name": "_report",
|
|
"type": "Bytes"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Report some misbehavior."
|
|
]
|
|
}
|
|
],
|
|
"events": [
|
|
{
|
|
"name": "NewAuthorities",
|
|
"args": [
|
|
"AuthorityList"
|
|
],
|
|
"documentation": [
|
|
" New authority set has been applied."
|
|
]
|
|
},
|
|
{
|
|
"name": "Paused",
|
|
"args": [],
|
|
"documentation": [
|
|
" Current authority set has been paused."
|
|
]
|
|
},
|
|
{
|
|
"name": "Resumed",
|
|
"args": [],
|
|
"documentation": [
|
|
" Current authority set has been resumed."
|
|
]
|
|
}
|
|
],
|
|
"constants": [],
|
|
"errors": [
|
|
{
|
|
"name": "PauseFailed",
|
|
"documentation": [
|
|
" Attempt to signal GRANDPA pause when the authority set isn't live",
|
|
" (either paused or already pending pause)."
|
|
]
|
|
},
|
|
{
|
|
"name": "ResumeFailed",
|
|
"documentation": [
|
|
" Attempt to signal GRANDPA resume when the authority set isn't paused",
|
|
" (either live or already pending resume)."
|
|
]
|
|
},
|
|
{
|
|
"name": "ChangePending",
|
|
"documentation": [
|
|
" Attempt to signal GRANDPA change with one already pending."
|
|
]
|
|
},
|
|
{
|
|
"name": "TooSoon",
|
|
"documentation": [
|
|
" Cannot signal forced change so soon after last."
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Treasury",
|
|
"storage": {
|
|
"prefix": "Treasury",
|
|
"items": [
|
|
{
|
|
"name": "ProposalCount",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Plain": "ProposalIndex"
|
|
},
|
|
"fallback": "0x00000000",
|
|
"documentation": [
|
|
" Number of proposals that have been made."
|
|
]
|
|
},
|
|
{
|
|
"name": "Proposals",
|
|
"modifier": "Optional",
|
|
"type": {
|
|
"Map": {
|
|
"hasher": "Twox64Concat",
|
|
"key": "ProposalIndex",
|
|
"value": "TreasuryProposal",
|
|
"linked": false
|
|
}
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" Proposals that have been made."
|
|
]
|
|
},
|
|
{
|
|
"name": "Approvals",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Plain": "Vec<ProposalIndex>"
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" Proposal indices that have been approved but not yet awarded."
|
|
]
|
|
},
|
|
{
|
|
"name": "Tips",
|
|
"modifier": "Optional",
|
|
"type": {
|
|
"Map": {
|
|
"hasher": "Twox64Concat",
|
|
"key": "Hash",
|
|
"value": "OpenTip",
|
|
"linked": false
|
|
}
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" Tips that are not yet completed. Keyed by the hash of `(reason, who)` from the value.",
|
|
" This has the insecure enumerable hash function since the key itself is already",
|
|
" guaranteed to be a secure hash."
|
|
]
|
|
},
|
|
{
|
|
"name": "Reasons",
|
|
"modifier": "Optional",
|
|
"type": {
|
|
"Map": {
|
|
"hasher": "Identity",
|
|
"key": "Hash",
|
|
"value": "Bytes",
|
|
"linked": false
|
|
}
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" Simple preimage lookup from the reason's hash to the original data. Again, has an",
|
|
" insecure enumerable hash since the key is guaranteed to be the result of a secure hash."
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"calls": [
|
|
{
|
|
"name": "propose_spend",
|
|
"args": [
|
|
{
|
|
"name": "value",
|
|
"type": "Compact<BalanceOf>"
|
|
},
|
|
{
|
|
"name": "beneficiary",
|
|
"type": "LookupSource"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Put forward a suggestion for spending. A deposit proportional to the value",
|
|
" is reserved and slashed if the proposal is rejected. It is returned once the",
|
|
" proposal is awarded.",
|
|
"",
|
|
" # <weight>",
|
|
" - O(1).",
|
|
" - Limited storage reads.",
|
|
" - One DB change, one extra DB entry.",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "reject_proposal",
|
|
"args": [
|
|
{
|
|
"name": "proposal_id",
|
|
"type": "Compact<ProposalIndex>"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Reject a proposed spend. The original deposit will be slashed.",
|
|
"",
|
|
" # <weight>",
|
|
" - O(1).",
|
|
" - Limited storage reads.",
|
|
" - One DB clear.",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "approve_proposal",
|
|
"args": [
|
|
{
|
|
"name": "proposal_id",
|
|
"type": "Compact<ProposalIndex>"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Approve a proposal. At a later time, the proposal will be allocated to the beneficiary",
|
|
" and the original deposit will be returned.",
|
|
"",
|
|
" # <weight>",
|
|
" - O(1).",
|
|
" - Limited storage reads.",
|
|
" - One DB change.",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "report_awesome",
|
|
"args": [
|
|
{
|
|
"name": "reason",
|
|
"type": "Bytes"
|
|
},
|
|
{
|
|
"name": "who",
|
|
"type": "AccountId"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Report something `reason` that deserves a tip and claim any eventual the finder's fee.",
|
|
"",
|
|
" The dispatch origin for this call must be _Signed_.",
|
|
"",
|
|
" Payment: `TipReportDepositBase` will be reserved from the origin account, as well as",
|
|
" `TipReportDepositPerByte` for each byte in `reason`.",
|
|
"",
|
|
" - `reason`: The reason for, or the thing that deserves, the tip; generally this will be",
|
|
" a UTF-8-encoded URL.",
|
|
" - `who`: The account which should be credited for the tip.",
|
|
"",
|
|
" Emits `NewTip` if successful.",
|
|
"",
|
|
" # <weight>",
|
|
" - `O(R)` where `R` length of `reason`.",
|
|
" - One balance operation.",
|
|
" - One storage mutation (codec `O(R)`).",
|
|
" - One event.",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "retract_tip",
|
|
"args": [
|
|
{
|
|
"name": "hash",
|
|
"type": "Hash"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Retract a prior tip-report from `report_awesome`, and cancel the process of tipping.",
|
|
"",
|
|
" If successful, the original deposit will be unreserved.",
|
|
"",
|
|
" The dispatch origin for this call must be _Signed_ and the tip identified by `hash`",
|
|
" must have been reported by the signing account through `report_awesome` (and not",
|
|
" through `tip_new`).",
|
|
"",
|
|
" - `hash`: The identity of the open tip for which a tip value is declared. This is formed",
|
|
" as the hash of the tuple of the original tip `reason` and the beneficiary account ID.",
|
|
"",
|
|
" Emits `TipRetracted` if successful.",
|
|
"",
|
|
" # <weight>",
|
|
" - `O(T)`",
|
|
" - One balance operation.",
|
|
" - Two storage removals (one read, codec `O(T)`).",
|
|
" - One event.",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "tip_new",
|
|
"args": [
|
|
{
|
|
"name": "reason",
|
|
"type": "Bytes"
|
|
},
|
|
{
|
|
"name": "who",
|
|
"type": "AccountId"
|
|
},
|
|
{
|
|
"name": "tip_value",
|
|
"type": "BalanceOf"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Give a tip for something new; no finder's fee will be taken.",
|
|
"",
|
|
" The dispatch origin for this call must be _Signed_ and the signing account must be a",
|
|
" member of the `Tippers` set.",
|
|
"",
|
|
" - `reason`: The reason for, or the thing that deserves, the tip; generally this will be",
|
|
" a UTF-8-encoded URL.",
|
|
" - `who`: The account which should be credited for the tip.",
|
|
" - `tip_value`: The amount of tip that the sender would like to give. The median tip",
|
|
" value of active tippers will be given to the `who`.",
|
|
"",
|
|
" Emits `NewTip` if successful.",
|
|
"",
|
|
" # <weight>",
|
|
" - `O(R + T)` where `R` length of `reason`, `T` is the number of tippers. `T` is",
|
|
" naturally capped as a membership set, `R` is limited through transaction-size.",
|
|
" - Two storage insertions (codecs `O(R)`, `O(T)`), one read `O(1)`.",
|
|
" - One event.",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "tip",
|
|
"args": [
|
|
{
|
|
"name": "hash",
|
|
"type": "Hash"
|
|
},
|
|
{
|
|
"name": "tip_value",
|
|
"type": "BalanceOf"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Declare a tip value for an already-open tip.",
|
|
"",
|
|
" The dispatch origin for this call must be _Signed_ and the signing account must be a",
|
|
" member of the `Tippers` set.",
|
|
"",
|
|
" - `hash`: The identity of the open tip for which a tip value is declared. This is formed",
|
|
" as the hash of the tuple of the hash of the original tip `reason` and the beneficiary",
|
|
" account ID.",
|
|
" - `tip_value`: The amount of tip that the sender would like to give. The median tip",
|
|
" value of active tippers will be given to the `who`.",
|
|
"",
|
|
" Emits `TipClosing` if the threshold of tippers has been reached and the countdown period",
|
|
" has started.",
|
|
"",
|
|
" # <weight>",
|
|
" - `O(T)`",
|
|
" - One storage mutation (codec `O(T)`), one storage read `O(1)`.",
|
|
" - Up to one event.",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "close_tip",
|
|
"args": [
|
|
{
|
|
"name": "hash",
|
|
"type": "Hash"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Close and payout a tip.",
|
|
"",
|
|
" The dispatch origin for this call must be _Signed_.",
|
|
"",
|
|
" The tip identified by `hash` must have finished its countdown period.",
|
|
"",
|
|
" - `hash`: The identity of the open tip for which a tip value is declared. This is formed",
|
|
" as the hash of the tuple of the original tip `reason` and the beneficiary account ID.",
|
|
"",
|
|
" # <weight>",
|
|
" - `O(T)`",
|
|
" - One storage retrieval (codec `O(T)`) and two removals.",
|
|
" - Up to three balance operations.",
|
|
" # </weight>"
|
|
]
|
|
}
|
|
],
|
|
"events": [
|
|
{
|
|
"name": "Proposed",
|
|
"args": [
|
|
"ProposalIndex"
|
|
],
|
|
"documentation": [
|
|
" New proposal."
|
|
]
|
|
},
|
|
{
|
|
"name": "Spending",
|
|
"args": [
|
|
"Balance"
|
|
],
|
|
"documentation": [
|
|
" We have ended a spend period and will now allocate funds."
|
|
]
|
|
},
|
|
{
|
|
"name": "Awarded",
|
|
"args": [
|
|
"ProposalIndex",
|
|
"Balance",
|
|
"AccountId"
|
|
],
|
|
"documentation": [
|
|
" Some funds have been allocated."
|
|
]
|
|
},
|
|
{
|
|
"name": "Rejected",
|
|
"args": [
|
|
"ProposalIndex",
|
|
"Balance"
|
|
],
|
|
"documentation": [
|
|
" A proposal was rejected; funds were slashed."
|
|
]
|
|
},
|
|
{
|
|
"name": "Burnt",
|
|
"args": [
|
|
"Balance"
|
|
],
|
|
"documentation": [
|
|
" Some of our funds have been burnt."
|
|
]
|
|
},
|
|
{
|
|
"name": "Rollover",
|
|
"args": [
|
|
"Balance"
|
|
],
|
|
"documentation": [
|
|
" Spending has finished; this is the amount that rolls over until next spend."
|
|
]
|
|
},
|
|
{
|
|
"name": "Deposit",
|
|
"args": [
|
|
"Balance"
|
|
],
|
|
"documentation": [
|
|
" Some funds have been deposited."
|
|
]
|
|
},
|
|
{
|
|
"name": "NewTip",
|
|
"args": [
|
|
"Hash"
|
|
],
|
|
"documentation": [
|
|
" A new tip suggestion has been opened."
|
|
]
|
|
},
|
|
{
|
|
"name": "TipClosing",
|
|
"args": [
|
|
"Hash"
|
|
],
|
|
"documentation": [
|
|
" A tip suggestion has reached threshold and is closing."
|
|
]
|
|
},
|
|
{
|
|
"name": "TipClosed",
|
|
"args": [
|
|
"Hash",
|
|
"AccountId",
|
|
"Balance"
|
|
],
|
|
"documentation": [
|
|
" A tip suggestion has been closed."
|
|
]
|
|
},
|
|
{
|
|
"name": "TipRetracted",
|
|
"args": [
|
|
"Hash"
|
|
],
|
|
"documentation": [
|
|
" A tip suggestion has been retracted."
|
|
]
|
|
}
|
|
],
|
|
"constants": [
|
|
{
|
|
"name": "ProposalBond",
|
|
"type": "Permill",
|
|
"value": "0x50c30000",
|
|
"documentation": [
|
|
" Fraction of a proposal's value that should be bonded in order to place the proposal.",
|
|
" An accepted proposal gets these back. A rejected proposal does not."
|
|
]
|
|
},
|
|
{
|
|
"name": "ProposalBondMinimum",
|
|
"type": "BalanceOf",
|
|
"value": "0x00407a10f35a00000000000000000000",
|
|
"documentation": [
|
|
" Minimum amount of funds that should be placed in a deposit for making a proposal."
|
|
]
|
|
},
|
|
{
|
|
"name": "SpendPeriod",
|
|
"type": "BlockNumber",
|
|
"value": "0x80700000",
|
|
"documentation": [
|
|
" Period between successive spends."
|
|
]
|
|
},
|
|
{
|
|
"name": "Burn",
|
|
"type": "Permill",
|
|
"value": "0x20a10700",
|
|
"documentation": [
|
|
" Percentage of spare funds (if any) that are burnt per spend period."
|
|
]
|
|
},
|
|
{
|
|
"name": "TipCountdown",
|
|
"type": "BlockNumber",
|
|
"value": "0x80700000",
|
|
"documentation": [
|
|
" The period for which a tip remains open after is has achieved threshold tippers."
|
|
]
|
|
},
|
|
{
|
|
"name": "TipFindersFee",
|
|
"type": "Percent",
|
|
"value": "0x14",
|
|
"documentation": [
|
|
" The amount of the final tip which goes to the original reporter of the tip."
|
|
]
|
|
},
|
|
{
|
|
"name": "TipReportDepositBase",
|
|
"type": "BalanceOf",
|
|
"value": "0x00407a10f35a00000000000000000000",
|
|
"documentation": [
|
|
" The amount held on deposit for placing a tip report."
|
|
]
|
|
},
|
|
{
|
|
"name": "TipReportDepositPerByte",
|
|
"type": "BalanceOf",
|
|
"value": "0x0010a5d4e80000000000000000000000",
|
|
"documentation": [
|
|
" The amount held on deposit per byte within the tip report reason."
|
|
]
|
|
}
|
|
],
|
|
"errors": [
|
|
{
|
|
"name": "InsufficientProposersBalance",
|
|
"documentation": [
|
|
" Proposer's balance is too low."
|
|
]
|
|
},
|
|
{
|
|
"name": "InvalidProposalIndex",
|
|
"documentation": [
|
|
" No proposal at that index."
|
|
]
|
|
},
|
|
{
|
|
"name": "ReasonTooBig",
|
|
"documentation": [
|
|
" The reason given is just too big."
|
|
]
|
|
},
|
|
{
|
|
"name": "AlreadyKnown",
|
|
"documentation": [
|
|
" The tip was already found/started."
|
|
]
|
|
},
|
|
{
|
|
"name": "UnknownTip",
|
|
"documentation": [
|
|
" The tip hash is unknown."
|
|
]
|
|
},
|
|
{
|
|
"name": "NotFinder",
|
|
"documentation": [
|
|
" The account attempting to retract the tip is not the finder of the tip."
|
|
]
|
|
},
|
|
{
|
|
"name": "StillOpen",
|
|
"documentation": [
|
|
" The tip cannot be claimed/closed because there are not enough tippers yet."
|
|
]
|
|
},
|
|
{
|
|
"name": "Premature",
|
|
"documentation": [
|
|
" The tip cannot be claimed/closed because it's still in the countdown period."
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Contracts",
|
|
"storage": {
|
|
"prefix": "Contracts",
|
|
"items": [
|
|
{
|
|
"name": "GasSpent",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Plain": "Gas"
|
|
},
|
|
"fallback": "0x0000000000000000",
|
|
"documentation": [
|
|
" Gas spent so far in this block."
|
|
]
|
|
},
|
|
{
|
|
"name": "CurrentSchedule",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Plain": "Schedule"
|
|
},
|
|
"fallback": "0x0000000001000000000000000100000000000000010000000000000001000000000000000100000000000000010000000000000001000000000000008700000000000000af00000000000000010000000000000001000000000000006400000000000000040000000000010010000000004000000020000000",
|
|
"documentation": [
|
|
" Current cost schedule for contracts."
|
|
]
|
|
},
|
|
{
|
|
"name": "PristineCode",
|
|
"modifier": "Optional",
|
|
"type": {
|
|
"Map": {
|
|
"hasher": "Identity",
|
|
"key": "CodeHash",
|
|
"value": "Bytes",
|
|
"linked": false
|
|
}
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" A mapping from an original code hash to the original code, untouched by instrumentation."
|
|
]
|
|
},
|
|
{
|
|
"name": "CodeStorage",
|
|
"modifier": "Optional",
|
|
"type": {
|
|
"Map": {
|
|
"hasher": "Identity",
|
|
"key": "CodeHash",
|
|
"value": "PrefabWasmModule",
|
|
"linked": false
|
|
}
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" A mapping between an original code hash and instrumented wasm code, ready for execution."
|
|
]
|
|
},
|
|
{
|
|
"name": "AccountCounter",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Plain": "u64"
|
|
},
|
|
"fallback": "0x0000000000000000",
|
|
"documentation": [
|
|
" The subtrie counter."
|
|
]
|
|
},
|
|
{
|
|
"name": "ContractInfoOf",
|
|
"modifier": "Optional",
|
|
"type": {
|
|
"Map": {
|
|
"hasher": "Twox64Concat",
|
|
"key": "AccountId",
|
|
"value": "ContractInfo",
|
|
"linked": false
|
|
}
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" The code associated with a given account."
|
|
]
|
|
},
|
|
{
|
|
"name": "GasPrice",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Plain": "BalanceOf"
|
|
},
|
|
"fallback": "0x01000000000000000000000000000000",
|
|
"documentation": [
|
|
" The price of one unit of gas."
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"calls": [
|
|
{
|
|
"name": "update_schedule",
|
|
"args": [
|
|
{
|
|
"name": "schedule",
|
|
"type": "Schedule"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Updates the schedule for metering contracts.",
|
|
"",
|
|
" The schedule must have a greater version than the stored schedule."
|
|
]
|
|
},
|
|
{
|
|
"name": "put_code",
|
|
"args": [
|
|
{
|
|
"name": "gas_limit",
|
|
"type": "Compact<Gas>"
|
|
},
|
|
{
|
|
"name": "code",
|
|
"type": "Bytes"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Stores the given binary Wasm code into the chain's storage and returns its `codehash`.",
|
|
" You can instantiate contracts only with stored code."
|
|
]
|
|
},
|
|
{
|
|
"name": "call",
|
|
"args": [
|
|
{
|
|
"name": "dest",
|
|
"type": "LookupSource"
|
|
},
|
|
{
|
|
"name": "value",
|
|
"type": "Compact<BalanceOf>"
|
|
},
|
|
{
|
|
"name": "gas_limit",
|
|
"type": "Compact<Gas>"
|
|
},
|
|
{
|
|
"name": "data",
|
|
"type": "Bytes"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Makes a call to an account, optionally transferring some balance.",
|
|
"",
|
|
" * If the account is a smart-contract account, the associated code will be",
|
|
" executed and any value will be transferred.",
|
|
" * If the account is a regular account, any value will be transferred.",
|
|
" * If no account exists and the call value is not less than `existential_deposit`,",
|
|
" a regular account will be created and any value will be transferred."
|
|
]
|
|
},
|
|
{
|
|
"name": "instantiate",
|
|
"args": [
|
|
{
|
|
"name": "endowment",
|
|
"type": "Compact<BalanceOf>"
|
|
},
|
|
{
|
|
"name": "gas_limit",
|
|
"type": "Compact<Gas>"
|
|
},
|
|
{
|
|
"name": "code_hash",
|
|
"type": "CodeHash"
|
|
},
|
|
{
|
|
"name": "data",
|
|
"type": "Bytes"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Instantiates a new contract from the `codehash` generated by `put_code`, optionally transferring some balance.",
|
|
"",
|
|
" Instantiation is executed as follows:",
|
|
"",
|
|
" - The destination address is computed based on the sender and hash of the code.",
|
|
" - The smart-contract account is created at the computed address.",
|
|
" - The `ctor_code` is executed in the context of the newly-created account. Buffer returned",
|
|
" after the execution is saved as the `code` of the account. That code will be invoked",
|
|
" upon any call received by this account.",
|
|
" - The contract is initialized."
|
|
]
|
|
},
|
|
{
|
|
"name": "claim_surcharge",
|
|
"args": [
|
|
{
|
|
"name": "dest",
|
|
"type": "AccountId"
|
|
},
|
|
{
|
|
"name": "aux_sender",
|
|
"type": "Option<AccountId>"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Allows block producers to claim a small reward for evicting a contract. If a block producer",
|
|
" fails to do so, a regular users will be allowed to claim the reward.",
|
|
"",
|
|
" If contract is not evicted as a result of this call, no actions are taken and",
|
|
" the sender is not eligible for the reward."
|
|
]
|
|
}
|
|
],
|
|
"events": [
|
|
{
|
|
"name": "Transfer",
|
|
"args": [
|
|
"AccountId",
|
|
"AccountId",
|
|
"Balance"
|
|
],
|
|
"documentation": [
|
|
" Transfer happened `from` to `to` with given `value` as part of a `call` or `instantiate`."
|
|
]
|
|
},
|
|
{
|
|
"name": "Instantiated",
|
|
"args": [
|
|
"AccountId",
|
|
"AccountId"
|
|
],
|
|
"documentation": [
|
|
" Contract deployed by address at the specified address."
|
|
]
|
|
},
|
|
{
|
|
"name": "Evicted",
|
|
"args": [
|
|
"AccountId",
|
|
"bool"
|
|
],
|
|
"documentation": [
|
|
" Contract has been evicted and is now in tombstone state.",
|
|
"",
|
|
" # Params",
|
|
"",
|
|
" - `contract`: `AccountId`: The account ID of the evicted contract.",
|
|
" - `tombstone`: `bool`: True if the evicted contract left behind a tombstone."
|
|
]
|
|
},
|
|
{
|
|
"name": "Restored",
|
|
"args": [
|
|
"AccountId",
|
|
"AccountId",
|
|
"Hash",
|
|
"Balance",
|
|
"bool"
|
|
],
|
|
"documentation": [
|
|
" Restoration for a contract has been initiated.",
|
|
"",
|
|
" # Params",
|
|
"",
|
|
" - `donor`: `AccountId`: Account ID of the restoring contract",
|
|
" - `dest`: `AccountId`: Account ID of the restored contract",
|
|
" - `code_hash`: `Hash`: Code hash of the restored contract",
|
|
" - `rent_allowance: `Balance`: Rent allowance of the restored contract",
|
|
" - `success`: `bool`: True if the restoration was successful"
|
|
]
|
|
},
|
|
{
|
|
"name": "CodeStored",
|
|
"args": [
|
|
"Hash"
|
|
],
|
|
"documentation": [
|
|
" Code with the specified hash has been stored."
|
|
]
|
|
},
|
|
{
|
|
"name": "ScheduleUpdated",
|
|
"args": [
|
|
"u32"
|
|
],
|
|
"documentation": [
|
|
" Triggered when the current schedule is updated."
|
|
]
|
|
},
|
|
{
|
|
"name": "Dispatched",
|
|
"args": [
|
|
"AccountId",
|
|
"bool"
|
|
],
|
|
"documentation": [
|
|
" A call was dispatched from the given account. The bool signals whether it was",
|
|
" successful execution or not."
|
|
]
|
|
},
|
|
{
|
|
"name": "ContractExecution",
|
|
"args": [
|
|
"AccountId",
|
|
"Bytes"
|
|
],
|
|
"documentation": [
|
|
" An event deposited upon execution of a contract from the account."
|
|
]
|
|
}
|
|
],
|
|
"constants": [
|
|
{
|
|
"name": "SignedClaimHandicap",
|
|
"type": "BlockNumber",
|
|
"value": "0x02000000",
|
|
"documentation": [
|
|
" Number of block delay an extrinsic claim surcharge has.",
|
|
"",
|
|
" When claim surcharge is called by an extrinsic the rent is checked",
|
|
" for current_block - delay"
|
|
]
|
|
},
|
|
{
|
|
"name": "TombstoneDeposit",
|
|
"type": "BalanceOf",
|
|
"value": "0x00407a10f35a00000000000000000000",
|
|
"documentation": [
|
|
" The minimum amount required to generate a tombstone."
|
|
]
|
|
},
|
|
{
|
|
"name": "StorageSizeOffset",
|
|
"type": "u32",
|
|
"value": "0x08000000",
|
|
"documentation": [
|
|
" Size of a contract at the time of instantiation. This is a simple way to ensure that",
|
|
" empty contracts eventually gets deleted."
|
|
]
|
|
},
|
|
{
|
|
"name": "RentByteFee",
|
|
"type": "BalanceOf",
|
|
"value": "0x00407a10f35a00000000000000000000",
|
|
"documentation": [
|
|
" Price of a byte of storage per one block interval. Should be greater than 0."
|
|
]
|
|
},
|
|
{
|
|
"name": "RentDepositOffset",
|
|
"type": "BalanceOf",
|
|
"value": "0x00008a5d784563010000000000000000",
|
|
"documentation": [
|
|
" The amount of funds a contract should deposit in order to offset",
|
|
" the cost of one byte.",
|
|
"",
|
|
" Let's suppose the deposit is 1,000 BU (balance units)/byte and the rent is 1 BU/byte/day,",
|
|
" then a contract with 1,000,000 BU that uses 1,000 bytes of storage would pay no rent.",
|
|
" But if the balance reduced to 500,000 BU and the storage stayed the same at 1,000,",
|
|
" then it would pay 500 BU/day."
|
|
]
|
|
},
|
|
{
|
|
"name": "SurchargeReward",
|
|
"type": "BalanceOf",
|
|
"value": "0x0080a1a76b4a35000000000000000000",
|
|
"documentation": [
|
|
" Reward that is received by the party whose touch has led",
|
|
" to removal of a contract."
|
|
]
|
|
},
|
|
{
|
|
"name": "TransactionBaseFee",
|
|
"type": "BalanceOf",
|
|
"value": "0x0010a5d4e80000000000000000000000",
|
|
"documentation": [
|
|
" The fee to be paid for making a transaction; the base."
|
|
]
|
|
},
|
|
{
|
|
"name": "TransactionByteFee",
|
|
"type": "BalanceOf",
|
|
"value": "0x00e40b54020000000000000000000000",
|
|
"documentation": [
|
|
" The fee to be paid for making a transaction; the per-byte portion."
|
|
]
|
|
},
|
|
{
|
|
"name": "ContractFee",
|
|
"type": "BalanceOf",
|
|
"value": "0x0010a5d4e80000000000000000000000",
|
|
"documentation": [
|
|
" The fee required to instantiate a contract instance. A reasonable default value",
|
|
" is 21."
|
|
]
|
|
},
|
|
{
|
|
"name": "CallBaseFee",
|
|
"type": "Gas",
|
|
"value": "0xe803000000000000",
|
|
"documentation": [
|
|
" The base fee charged for calling into a contract. A reasonable default",
|
|
" value is 135."
|
|
]
|
|
},
|
|
{
|
|
"name": "InstantiateBaseFee",
|
|
"type": "Gas",
|
|
"value": "0xe803000000000000",
|
|
"documentation": [
|
|
" The base fee charged for instantiating a contract. A reasonable default value",
|
|
" is 175."
|
|
]
|
|
},
|
|
{
|
|
"name": "MaxDepth",
|
|
"type": "u32",
|
|
"value": "0x20000000",
|
|
"documentation": [
|
|
" The maximum nesting level of a call/instantiate stack. A reasonable default",
|
|
" value is 100."
|
|
]
|
|
},
|
|
{
|
|
"name": "MaxValueSize",
|
|
"type": "u32",
|
|
"value": "0x00400000",
|
|
"documentation": [
|
|
" The maximum size of a storage value in bytes. A reasonable default is 16 KiB."
|
|
]
|
|
},
|
|
{
|
|
"name": "BlockGasLimit",
|
|
"type": "Gas",
|
|
"value": "0x8096980000000000",
|
|
"documentation": [
|
|
" The maximum amount of gas that could be expended per block. A reasonable",
|
|
" default value is 10_000_000."
|
|
]
|
|
}
|
|
],
|
|
"errors": [
|
|
{
|
|
"name": "InvalidScheduleVersion",
|
|
"documentation": [
|
|
" A new schedule must have a greater version than the current one."
|
|
]
|
|
},
|
|
{
|
|
"name": "InvalidSurchargeClaim",
|
|
"documentation": [
|
|
" An origin must be signed or inherent and auxiliary sender only provided on inherent."
|
|
]
|
|
},
|
|
{
|
|
"name": "InvalidSourceContract",
|
|
"documentation": [
|
|
" Cannot restore from nonexisting or tombstone contract."
|
|
]
|
|
},
|
|
{
|
|
"name": "InvalidDestinationContract",
|
|
"documentation": [
|
|
" Cannot restore to nonexisting or alive contract."
|
|
]
|
|
},
|
|
{
|
|
"name": "InvalidTombstone",
|
|
"documentation": [
|
|
" Tombstones don't match."
|
|
]
|
|
},
|
|
{
|
|
"name": "InvalidContractOrigin",
|
|
"documentation": [
|
|
" An origin TrieId written in the current block."
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Sudo",
|
|
"storage": {
|
|
"prefix": "Sudo",
|
|
"items": [
|
|
{
|
|
"name": "Key",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Plain": "AccountId"
|
|
},
|
|
"fallback": "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
"documentation": [
|
|
" The `AccountId` of the sudo key."
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"calls": [
|
|
{
|
|
"name": "sudo",
|
|
"args": [
|
|
{
|
|
"name": "call",
|
|
"type": "Call"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Authenticates the sudo key and dispatches a function call with `Root` origin.",
|
|
"",
|
|
" The dispatch origin for this call must be _Signed_.",
|
|
"",
|
|
" # <weight>",
|
|
" - O(1).",
|
|
" - Limited storage reads.",
|
|
" - One DB write (event).",
|
|
" - Weight of derivative `call` execution + 10,000.",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "set_key",
|
|
"args": [
|
|
{
|
|
"name": "new",
|
|
"type": "LookupSource"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Authenticates the current sudo key and sets the given AccountId (`new`) as the new sudo key.",
|
|
"",
|
|
" The dispatch origin for this call must be _Signed_.",
|
|
"",
|
|
" # <weight>",
|
|
" - O(1).",
|
|
" - Limited storage reads.",
|
|
" - One DB change.",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "sudo_as",
|
|
"args": [
|
|
{
|
|
"name": "who",
|
|
"type": "LookupSource"
|
|
},
|
|
{
|
|
"name": "call",
|
|
"type": "Call"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Authenticates the sudo key and dispatches a function call with `Signed` origin from",
|
|
" a given account.",
|
|
"",
|
|
" The dispatch origin for this call must be _Signed_.",
|
|
"",
|
|
" # <weight>",
|
|
" - O(1).",
|
|
" - Limited storage reads.",
|
|
" - One DB write (event).",
|
|
" - Weight of derivative `call` execution + 10,000.",
|
|
" # </weight>"
|
|
]
|
|
}
|
|
],
|
|
"events": [
|
|
{
|
|
"name": "Sudid",
|
|
"args": [
|
|
"bool"
|
|
],
|
|
"documentation": [
|
|
" A sudo just took place."
|
|
]
|
|
},
|
|
{
|
|
"name": "KeyChanged",
|
|
"args": [
|
|
"AccountId"
|
|
],
|
|
"documentation": [
|
|
" The sudoer just switched identity; the old key is supplied."
|
|
]
|
|
},
|
|
{
|
|
"name": "SudoAsDone",
|
|
"args": [
|
|
"bool"
|
|
],
|
|
"documentation": [
|
|
" A sudo just took place."
|
|
]
|
|
}
|
|
],
|
|
"constants": [],
|
|
"errors": [
|
|
{
|
|
"name": "RequireSudo",
|
|
"documentation": [
|
|
" Sender must be the Sudo account"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "ImOnline",
|
|
"storage": {
|
|
"prefix": "ImOnline",
|
|
"items": [
|
|
{
|
|
"name": "HeartbeatAfter",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Plain": "BlockNumber"
|
|
},
|
|
"fallback": "0x00000000",
|
|
"documentation": [
|
|
" The block number after which it's ok to send heartbeats in current session.",
|
|
"",
|
|
" At the beginning of each session we set this to a value that should",
|
|
" fall roughly in the middle of the session duration.",
|
|
" The idea is to first wait for the validators to produce a block",
|
|
" in the current session, so that the heartbeat later on will not be necessary."
|
|
]
|
|
},
|
|
{
|
|
"name": "Keys",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Plain": "Vec<AuthorityId>"
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" The current set of keys that may issue a heartbeat."
|
|
]
|
|
},
|
|
{
|
|
"name": "ReceivedHeartbeats",
|
|
"modifier": "Optional",
|
|
"type": {
|
|
"DoubleMap": {
|
|
"hasher": "Twox64Concat",
|
|
"key1": "SessionIndex",
|
|
"key2": "AuthIndex",
|
|
"value": "Bytes",
|
|
"key2Hasher": "Twox64Concat"
|
|
}
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" For each session index, we keep a mapping of `AuthIndex` to",
|
|
" `offchain::OpaqueNetworkState`."
|
|
]
|
|
},
|
|
{
|
|
"name": "AuthoredBlocks",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"DoubleMap": {
|
|
"hasher": "Twox64Concat",
|
|
"key1": "SessionIndex",
|
|
"key2": "ValidatorId",
|
|
"value": "u32",
|
|
"key2Hasher": "Twox64Concat"
|
|
}
|
|
},
|
|
"fallback": "0x00000000",
|
|
"documentation": [
|
|
" For each session index, we keep a mapping of `T::ValidatorId` to the",
|
|
" number of blocks authored by the given authority."
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"calls": [
|
|
{
|
|
"name": "heartbeat",
|
|
"args": [
|
|
{
|
|
"name": "heartbeat",
|
|
"type": "Heartbeat"
|
|
},
|
|
{
|
|
"name": "_signature",
|
|
"type": "Signature"
|
|
}
|
|
],
|
|
"documentation": []
|
|
}
|
|
],
|
|
"events": [
|
|
{
|
|
"name": "HeartbeatReceived",
|
|
"args": [
|
|
"AuthorityId"
|
|
],
|
|
"documentation": [
|
|
" A new heartbeat was received from `AuthorityId`"
|
|
]
|
|
},
|
|
{
|
|
"name": "AllGood",
|
|
"args": [],
|
|
"documentation": [
|
|
" At the end of the session, no offence was committed."
|
|
]
|
|
},
|
|
{
|
|
"name": "SomeOffline",
|
|
"args": [
|
|
"Vec<IdentificationTuple>"
|
|
],
|
|
"documentation": [
|
|
" At the end of the session, at least once validator was found to be offline."
|
|
]
|
|
}
|
|
],
|
|
"constants": [],
|
|
"errors": [
|
|
{
|
|
"name": "InvalidKey",
|
|
"documentation": [
|
|
" Non existent public key."
|
|
]
|
|
},
|
|
{
|
|
"name": "DuplicatedHeartbeat",
|
|
"documentation": [
|
|
" Duplicated heartbeat."
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "AuthorityDiscovery",
|
|
"storage": null,
|
|
"calls": [],
|
|
"events": null,
|
|
"constants": [],
|
|
"errors": []
|
|
},
|
|
{
|
|
"name": "Offences",
|
|
"storage": {
|
|
"prefix": "Offences",
|
|
"items": [
|
|
{
|
|
"name": "Reports",
|
|
"modifier": "Optional",
|
|
"type": {
|
|
"Map": {
|
|
"hasher": "Twox64Concat",
|
|
"key": "ReportIdOf",
|
|
"value": "OffenceDetails",
|
|
"linked": false
|
|
}
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" The primary structure that holds all offence records keyed by report identifiers."
|
|
]
|
|
},
|
|
{
|
|
"name": "ConcurrentReportsIndex",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"DoubleMap": {
|
|
"hasher": "Twox64Concat",
|
|
"key1": "Kind",
|
|
"key2": "OpaqueTimeSlot",
|
|
"value": "Vec<ReportIdOf>",
|
|
"key2Hasher": "Twox64Concat"
|
|
}
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" A vector of reports of the same kind that happened at the same time slot."
|
|
]
|
|
},
|
|
{
|
|
"name": "ReportsByKindIndex",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Map": {
|
|
"hasher": "Twox64Concat",
|
|
"key": "Kind",
|
|
"value": "Bytes",
|
|
"linked": false
|
|
}
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" Enumerates all reports of a kind along with the time they happened.",
|
|
"",
|
|
" All reports are sorted by the time of offence.",
|
|
"",
|
|
" Note that the actual type of this mapping is `Vec<u8>`, this is because values of",
|
|
" different types are not supported at the moment so we are doing the manual serialization."
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"calls": [],
|
|
"events": [
|
|
{
|
|
"name": "Offence",
|
|
"args": [
|
|
"Kind",
|
|
"OpaqueTimeSlot"
|
|
],
|
|
"documentation": [
|
|
" There is an offence reported of the given `kind` happened at the `session_index` and",
|
|
" (kind-specific) time slot. This event is not deposited for duplicate slashes."
|
|
]
|
|
}
|
|
],
|
|
"constants": [],
|
|
"errors": []
|
|
},
|
|
{
|
|
"name": "RandomnessCollectiveFlip",
|
|
"storage": {
|
|
"prefix": "RandomnessCollectiveFlip",
|
|
"items": [
|
|
{
|
|
"name": "RandomMaterial",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Plain": "Vec<Hash>"
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" Series of block headers from the last 81 blocks that acts as random seed material. This",
|
|
" is arranged as a ring buffer with `block_number % 81` being the index into the `Vec` of",
|
|
" the oldest hash."
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"calls": [],
|
|
"events": null,
|
|
"constants": [],
|
|
"errors": []
|
|
},
|
|
{
|
|
"name": "Identity",
|
|
"storage": {
|
|
"prefix": "Identity",
|
|
"items": [
|
|
{
|
|
"name": "IdentityOf",
|
|
"modifier": "Optional",
|
|
"type": {
|
|
"Map": {
|
|
"hasher": "Twox64Concat",
|
|
"key": "AccountId",
|
|
"value": "Registration",
|
|
"linked": false
|
|
}
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" Information that is pertinent to identify the entity behind an account."
|
|
]
|
|
},
|
|
{
|
|
"name": "SuperOf",
|
|
"modifier": "Optional",
|
|
"type": {
|
|
"Map": {
|
|
"hasher": "Blake2_128Concat",
|
|
"key": "AccountId",
|
|
"value": "(AccountId,Data)",
|
|
"linked": false
|
|
}
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" The super-identity of an alternative \"sub\" identity together with its name, within that",
|
|
" context. If the account is not some other account's sub-identity, then just `None`."
|
|
]
|
|
},
|
|
{
|
|
"name": "SubsOf",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Map": {
|
|
"hasher": "Twox64Concat",
|
|
"key": "AccountId",
|
|
"value": "(BalanceOf,Vec<AccountId>)",
|
|
"linked": false
|
|
}
|
|
},
|
|
"fallback": "0x0000000000000000000000000000000000",
|
|
"documentation": [
|
|
" Alternative \"sub\" identities of this account.",
|
|
"",
|
|
" The first item is the deposit, the second is a vector of the accounts."
|
|
]
|
|
},
|
|
{
|
|
"name": "Registrars",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Plain": "Vec<Option<RegistrarInfo>>"
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" The set of registrars. Not expected to get very big as can only be added through a",
|
|
" special origin (likely a council motion).",
|
|
"",
|
|
" The index into this can be cast to `RegistrarIndex` to get a valid value."
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"calls": [
|
|
{
|
|
"name": "add_registrar",
|
|
"args": [
|
|
{
|
|
"name": "account",
|
|
"type": "AccountId"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Add a registrar to the system.",
|
|
"",
|
|
" The dispatch origin for this call must be `RegistrarOrigin` or `Root`.",
|
|
"",
|
|
" - `account`: the account of the registrar.",
|
|
"",
|
|
" Emits `RegistrarAdded` if successful.",
|
|
"",
|
|
" # <weight>",
|
|
" - `O(R)` where `R` registrar-count (governance-bounded).",
|
|
" - One storage mutation (codec `O(R)`).",
|
|
" - One event.",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "set_identity",
|
|
"args": [
|
|
{
|
|
"name": "info",
|
|
"type": "IdentityInfo"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Set an account's identity information and reserve the appropriate deposit.",
|
|
"",
|
|
" If the account already has identity information, the deposit is taken as part payment",
|
|
" for the new deposit.",
|
|
"",
|
|
" The dispatch origin for this call must be _Signed_ and the sender must have a registered",
|
|
" identity.",
|
|
"",
|
|
" - `info`: The identity information.",
|
|
"",
|
|
" Emits `IdentitySet` if successful.",
|
|
"",
|
|
" # <weight>",
|
|
" - `O(X + X' + R)` where `X` additional-field-count (deposit-bounded and code-bounded).",
|
|
" - At most two balance operations.",
|
|
" - One storage mutation (codec-read `O(X' + R)`, codec-write `O(X + R)`).",
|
|
" - One event.",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "set_subs",
|
|
"args": [
|
|
{
|
|
"name": "subs",
|
|
"type": "Vec<(AccountId,Data)>"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Set the sub-accounts of the sender.",
|
|
"",
|
|
" Payment: Any aggregate balance reserved by previous `set_subs` calls will be returned",
|
|
" and an amount `SubAccountDeposit` will be reserved for each item in `subs`.",
|
|
"",
|
|
" The dispatch origin for this call must be _Signed_ and the sender must have a registered",
|
|
" identity.",
|
|
"",
|
|
" - `subs`: The identity's sub-accounts.",
|
|
"",
|
|
" # <weight>",
|
|
" - `O(S)` where `S` subs-count (hard- and deposit-bounded).",
|
|
" - At most two balance operations.",
|
|
" - At most O(2 * S + 1) storage mutations; codec complexity `O(1 * S + S * 1)`);",
|
|
" one storage-exists.",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "clear_identity",
|
|
"args": [],
|
|
"documentation": [
|
|
" Clear an account's identity info and all sub-account and return all deposits.",
|
|
"",
|
|
" Payment: All reserved balances on the account are returned.",
|
|
"",
|
|
" The dispatch origin for this call must be _Signed_ and the sender must have a registered",
|
|
" identity.",
|
|
"",
|
|
" Emits `IdentityCleared` if successful.",
|
|
"",
|
|
" # <weight>",
|
|
" - `O(R + S + X)`.",
|
|
" - One balance-reserve operation.",
|
|
" - `S + 2` storage deletions.",
|
|
" - One event.",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "request_judgement",
|
|
"args": [
|
|
{
|
|
"name": "reg_index",
|
|
"type": "Compact<RegistrarIndex>"
|
|
},
|
|
{
|
|
"name": "max_fee",
|
|
"type": "Compact<BalanceOf>"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Request a judgement from a registrar.",
|
|
"",
|
|
" Payment: At most `max_fee` will be reserved for payment to the registrar if judgement",
|
|
" given.",
|
|
"",
|
|
" The dispatch origin for this call must be _Signed_ and the sender must have a",
|
|
" registered identity.",
|
|
"",
|
|
" - `reg_index`: The index of the registrar whose judgement is requested.",
|
|
" - `max_fee`: The maximum fee that may be paid. This should just be auto-populated as:",
|
|
"",
|
|
" ```nocompile",
|
|
" Self::registrars(reg_index).unwrap().fee",
|
|
" ```",
|
|
"",
|
|
" Emits `JudgementRequested` if successful.",
|
|
"",
|
|
" # <weight>",
|
|
" - `O(R + X)`.",
|
|
" - One balance-reserve operation.",
|
|
" - Storage: 1 read `O(R)`, 1 mutate `O(X + R)`.",
|
|
" - One event.",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "cancel_request",
|
|
"args": [
|
|
{
|
|
"name": "reg_index",
|
|
"type": "RegistrarIndex"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Cancel a previous request.",
|
|
"",
|
|
" Payment: A previously reserved deposit is returned on success.",
|
|
"",
|
|
" The dispatch origin for this call must be _Signed_ and the sender must have a",
|
|
" registered identity.",
|
|
"",
|
|
" - `reg_index`: The index of the registrar whose judgement is no longer requested.",
|
|
"",
|
|
" Emits `JudgementUnrequested` if successful.",
|
|
"",
|
|
" # <weight>",
|
|
" - `O(R + X)`.",
|
|
" - One balance-reserve operation.",
|
|
" - One storage mutation `O(R + X)`.",
|
|
" - One event.",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "set_fee",
|
|
"args": [
|
|
{
|
|
"name": "index",
|
|
"type": "Compact<RegistrarIndex>"
|
|
},
|
|
{
|
|
"name": "fee",
|
|
"type": "Compact<BalanceOf>"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Set the fee required for a judgement to be requested from a registrar.",
|
|
"",
|
|
" The dispatch origin for this call must be _Signed_ and the sender must be the account",
|
|
" of the registrar whose index is `index`.",
|
|
"",
|
|
" - `index`: the index of the registrar whose fee is to be set.",
|
|
" - `fee`: the new fee.",
|
|
"",
|
|
" # <weight>",
|
|
" - `O(R)`.",
|
|
" - One storage mutation `O(R)`.",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "set_account_id",
|
|
"args": [
|
|
{
|
|
"name": "index",
|
|
"type": "Compact<RegistrarIndex>"
|
|
},
|
|
{
|
|
"name": "new",
|
|
"type": "AccountId"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Change the account associated with a registrar.",
|
|
"",
|
|
" The dispatch origin for this call must be _Signed_ and the sender must be the account",
|
|
" of the registrar whose index is `index`.",
|
|
"",
|
|
" - `index`: the index of the registrar whose fee is to be set.",
|
|
" - `new`: the new account ID.",
|
|
"",
|
|
" # <weight>",
|
|
" - `O(R)`.",
|
|
" - One storage mutation `O(R)`.",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "set_fields",
|
|
"args": [
|
|
{
|
|
"name": "index",
|
|
"type": "Compact<RegistrarIndex>"
|
|
},
|
|
{
|
|
"name": "fields",
|
|
"type": "IdentityFields"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Set the field information for a registrar.",
|
|
"",
|
|
" The dispatch origin for this call must be _Signed_ and the sender must be the account",
|
|
" of the registrar whose index is `index`.",
|
|
"",
|
|
" - `index`: the index of the registrar whose fee is to be set.",
|
|
" - `fields`: the fields that the registrar concerns themselves with.",
|
|
"",
|
|
" # <weight>",
|
|
" - `O(R)`.",
|
|
" - One storage mutation `O(R)`.",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "provide_judgement",
|
|
"args": [
|
|
{
|
|
"name": "reg_index",
|
|
"type": "Compact<RegistrarIndex>"
|
|
},
|
|
{
|
|
"name": "target",
|
|
"type": "LookupSource"
|
|
},
|
|
{
|
|
"name": "judgement",
|
|
"type": "IdentityJudgement"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Provide a judgement for an account's identity.",
|
|
"",
|
|
" The dispatch origin for this call must be _Signed_ and the sender must be the account",
|
|
" of the registrar whose index is `reg_index`.",
|
|
"",
|
|
" - `reg_index`: the index of the registrar whose judgement is being made.",
|
|
" - `target`: the account whose identity the judgement is upon. This must be an account",
|
|
" with a registered identity.",
|
|
" - `judgement`: the judgement of the registrar of index `reg_index` about `target`.",
|
|
"",
|
|
" Emits `JudgementGiven` if successful.",
|
|
"",
|
|
" # <weight>",
|
|
" - `O(R + X)`.",
|
|
" - One balance-transfer operation.",
|
|
" - Up to one account-lookup operation.",
|
|
" - Storage: 1 read `O(R)`, 1 mutate `O(R + X)`.",
|
|
" - One event.",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "kill_identity",
|
|
"args": [
|
|
{
|
|
"name": "target",
|
|
"type": "LookupSource"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Remove an account's identity and sub-account information and slash the deposits.",
|
|
"",
|
|
" Payment: Reserved balances from `set_subs` and `set_identity` are slashed and handled by",
|
|
" `Slash`. Verification request deposits are not returned; they should be cancelled",
|
|
" manually using `cancel_request`.",
|
|
"",
|
|
" The dispatch origin for this call must be _Root_ or match `T::ForceOrigin`.",
|
|
"",
|
|
" - `target`: the account whose identity the judgement is upon. This must be an account",
|
|
" with a registered identity.",
|
|
"",
|
|
" Emits `IdentityKilled` if successful.",
|
|
"",
|
|
" # <weight>",
|
|
" - `O(R + S + X)`.",
|
|
" - One balance-reserve operation.",
|
|
" - `S + 2` storage mutations.",
|
|
" - One event.",
|
|
" # </weight>"
|
|
]
|
|
}
|
|
],
|
|
"events": [
|
|
{
|
|
"name": "IdentitySet",
|
|
"args": [
|
|
"AccountId"
|
|
],
|
|
"documentation": [
|
|
" A name was set or reset (which will remove all judgements)."
|
|
]
|
|
},
|
|
{
|
|
"name": "IdentityCleared",
|
|
"args": [
|
|
"AccountId",
|
|
"Balance"
|
|
],
|
|
"documentation": [
|
|
" A name was cleared, and the given balance returned."
|
|
]
|
|
},
|
|
{
|
|
"name": "IdentityKilled",
|
|
"args": [
|
|
"AccountId",
|
|
"Balance"
|
|
],
|
|
"documentation": [
|
|
" A name was removed and the given balance slashed."
|
|
]
|
|
},
|
|
{
|
|
"name": "JudgementRequested",
|
|
"args": [
|
|
"AccountId",
|
|
"RegistrarIndex"
|
|
],
|
|
"documentation": [
|
|
" A judgement was asked from a registrar."
|
|
]
|
|
},
|
|
{
|
|
"name": "JudgementUnrequested",
|
|
"args": [
|
|
"AccountId",
|
|
"RegistrarIndex"
|
|
],
|
|
"documentation": [
|
|
" A judgement request was retracted."
|
|
]
|
|
},
|
|
{
|
|
"name": "JudgementGiven",
|
|
"args": [
|
|
"AccountId",
|
|
"RegistrarIndex"
|
|
],
|
|
"documentation": [
|
|
" A judgement was given by a registrar."
|
|
]
|
|
},
|
|
{
|
|
"name": "RegistrarAdded",
|
|
"args": [
|
|
"RegistrarIndex"
|
|
],
|
|
"documentation": [
|
|
" A registrar was added."
|
|
]
|
|
}
|
|
],
|
|
"constants": [],
|
|
"errors": [
|
|
{
|
|
"name": "TooManySubAccounts",
|
|
"documentation": [
|
|
" Too many subs-accounts."
|
|
]
|
|
},
|
|
{
|
|
"name": "NotFound",
|
|
"documentation": [
|
|
" Account isn't found."
|
|
]
|
|
},
|
|
{
|
|
"name": "NotNamed",
|
|
"documentation": [
|
|
" Account isn't named."
|
|
]
|
|
},
|
|
{
|
|
"name": "EmptyIndex",
|
|
"documentation": [
|
|
" Empty index."
|
|
]
|
|
},
|
|
{
|
|
"name": "FeeChanged",
|
|
"documentation": [
|
|
" Fee is changed."
|
|
]
|
|
},
|
|
{
|
|
"name": "NoIdentity",
|
|
"documentation": [
|
|
" No identity found."
|
|
]
|
|
},
|
|
{
|
|
"name": "StickyJudgement",
|
|
"documentation": [
|
|
" Sticky judgement."
|
|
]
|
|
},
|
|
{
|
|
"name": "JudgementGiven",
|
|
"documentation": [
|
|
" Judgement given."
|
|
]
|
|
},
|
|
{
|
|
"name": "InvalidJudgement",
|
|
"documentation": [
|
|
" Invalid judgement."
|
|
]
|
|
},
|
|
{
|
|
"name": "InvalidIndex",
|
|
"documentation": [
|
|
" The index is invalid."
|
|
]
|
|
},
|
|
{
|
|
"name": "InvalidTarget",
|
|
"documentation": [
|
|
" The target is invalid."
|
|
]
|
|
},
|
|
{
|
|
"name": "TooManyFields",
|
|
"documentation": [
|
|
" Too many additional fields."
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Society",
|
|
"storage": {
|
|
"prefix": "Society",
|
|
"items": [
|
|
{
|
|
"name": "Founder",
|
|
"modifier": "Optional",
|
|
"type": {
|
|
"Plain": "AccountId"
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" The first member."
|
|
]
|
|
},
|
|
{
|
|
"name": "Rules",
|
|
"modifier": "Optional",
|
|
"type": {
|
|
"Plain": "Hash"
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" A hash of the rules of this society concerning membership. Can only be set once and",
|
|
" only by the founder."
|
|
]
|
|
},
|
|
{
|
|
"name": "Candidates",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Plain": "Vec<Bid>"
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" The current set of candidates; bidders that are attempting to become members."
|
|
]
|
|
},
|
|
{
|
|
"name": "SuspendedCandidates",
|
|
"modifier": "Optional",
|
|
"type": {
|
|
"Map": {
|
|
"hasher": "Twox64Concat",
|
|
"key": "AccountId",
|
|
"value": "(BalanceOf,BidKind)",
|
|
"linked": false
|
|
}
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" The set of suspended candidates."
|
|
]
|
|
},
|
|
{
|
|
"name": "Pot",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Plain": "BalanceOf"
|
|
},
|
|
"fallback": "0x00000000000000000000000000000000",
|
|
"documentation": [
|
|
" Amount of our account balance that is specifically for the next round's bid(s)."
|
|
]
|
|
},
|
|
{
|
|
"name": "Head",
|
|
"modifier": "Optional",
|
|
"type": {
|
|
"Plain": "AccountId"
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" The most primary from the most recently approved members."
|
|
]
|
|
},
|
|
{
|
|
"name": "Members",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Plain": "Vec<AccountId>"
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" The current set of members, ordered."
|
|
]
|
|
},
|
|
{
|
|
"name": "SuspendedMembers",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Map": {
|
|
"hasher": "Twox64Concat",
|
|
"key": "AccountId",
|
|
"value": "bool",
|
|
"linked": false
|
|
}
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" The set of suspended members."
|
|
]
|
|
},
|
|
{
|
|
"name": "Bids",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Plain": "Vec<Bid>"
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" The current bids, stored ordered by the value of the bid."
|
|
]
|
|
},
|
|
{
|
|
"name": "Vouching",
|
|
"modifier": "Optional",
|
|
"type": {
|
|
"Map": {
|
|
"hasher": "Twox64Concat",
|
|
"key": "AccountId",
|
|
"value": "VouchingStatus",
|
|
"linked": false
|
|
}
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" Members currently vouching or banned from vouching again"
|
|
]
|
|
},
|
|
{
|
|
"name": "Payouts",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Map": {
|
|
"hasher": "Twox64Concat",
|
|
"key": "AccountId",
|
|
"value": "Vec<(BlockNumber,BalanceOf)>",
|
|
"linked": false
|
|
}
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" Pending payouts; ordered by block number, with the amount that should be paid out."
|
|
]
|
|
},
|
|
{
|
|
"name": "Strikes",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Map": {
|
|
"hasher": "Twox64Concat",
|
|
"key": "AccountId",
|
|
"value": "StrikeCount",
|
|
"linked": false
|
|
}
|
|
},
|
|
"fallback": "0x00000000",
|
|
"documentation": [
|
|
" The ongoing number of losing votes cast by the member."
|
|
]
|
|
},
|
|
{
|
|
"name": "Votes",
|
|
"modifier": "Optional",
|
|
"type": {
|
|
"DoubleMap": {
|
|
"hasher": "Twox64Concat",
|
|
"key1": "AccountId",
|
|
"key2": "AccountId",
|
|
"value": "SocietyVote",
|
|
"key2Hasher": "Twox64Concat"
|
|
}
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" Double map from Candidate -> Voter -> (Maybe) Vote."
|
|
]
|
|
},
|
|
{
|
|
"name": "Defender",
|
|
"modifier": "Optional",
|
|
"type": {
|
|
"Plain": "AccountId"
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" The defending member currently being challenged."
|
|
]
|
|
},
|
|
{
|
|
"name": "DefenderVotes",
|
|
"modifier": "Optional",
|
|
"type": {
|
|
"Map": {
|
|
"hasher": "Twox64Concat",
|
|
"key": "AccountId",
|
|
"value": "SocietyVote",
|
|
"linked": false
|
|
}
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" Votes for the defender."
|
|
]
|
|
},
|
|
{
|
|
"name": "MaxMembers",
|
|
"modifier": "Default",
|
|
"type": {
|
|
"Plain": "u32"
|
|
},
|
|
"fallback": "0x00000000",
|
|
"documentation": [
|
|
" The max number of members for the society at one time."
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"calls": [
|
|
{
|
|
"name": "bid",
|
|
"args": [
|
|
{
|
|
"name": "value",
|
|
"type": "BalanceOf"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" A user outside of the society can make a bid for entry.",
|
|
"",
|
|
" Payment: `CandidateDeposit` will be reserved for making a bid. It is returned",
|
|
" when the bid becomes a member, or if the bid calls `unbid`.",
|
|
"",
|
|
" The dispatch origin for this call must be _Signed_.",
|
|
"",
|
|
" Parameters:",
|
|
" - `value`: A one time payment the bid would like to receive when joining the society.",
|
|
"",
|
|
" # <weight>",
|
|
" Key: B (len of bids), C (len of candidates), M (len of members), X (balance reserve)",
|
|
" - Storage Reads:",
|
|
" \t- One storage read to check for suspended candidate. O(1)",
|
|
" \t- One storage read to check for suspended member. O(1)",
|
|
" \t- One storage read to retrieve all current bids. O(B)",
|
|
" \t- One storage read to retrieve all current candidates. O(C)",
|
|
" \t- One storage read to retrieve all members. O(M)",
|
|
" - Storage Writes:",
|
|
" \t- One storage mutate to add a new bid to the vector O(B) (TODO: possible optimization w/ read)",
|
|
" \t- Up to one storage removal if bid.len() > MAX_BID_COUNT. O(1)",
|
|
" - Notable Computation:",
|
|
" \t- O(B + C + log M) search to check user is not already a part of society.",
|
|
" \t- O(log B) search to insert the new bid sorted.",
|
|
" - External Module Operations:",
|
|
" \t- One balance reserve operation. O(X)",
|
|
" \t- Up to one balance unreserve operation if bids.len() > MAX_BID_COUNT.",
|
|
" - Events:",
|
|
" \t- One event for new bid.",
|
|
" \t- Up to one event for AutoUnbid if bid.len() > MAX_BID_COUNT.",
|
|
"",
|
|
" Total Complexity: O(M + B + C + logM + logB + X)",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "unbid",
|
|
"args": [
|
|
{
|
|
"name": "pos",
|
|
"type": "u32"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" A bidder can remove their bid for entry into society.",
|
|
" By doing so, they will have their candidate deposit returned or",
|
|
" they will unvouch their voucher.",
|
|
"",
|
|
" Payment: The bid deposit is unreserved if the user made a bid.",
|
|
"",
|
|
" The dispatch origin for this call must be _Signed_ and a bidder.",
|
|
"",
|
|
" Parameters:",
|
|
" - `pos`: Position in the `Bids` vector of the bid who wants to unbid.",
|
|
"",
|
|
" # <weight>",
|
|
" Key: B (len of bids), X (balance unreserve)",
|
|
" - One storage read and write to retrieve and update the bids. O(B)",
|
|
" - Either one unreserve balance action O(X) or one vouching storage removal. O(1)",
|
|
" - One event.",
|
|
"",
|
|
" Total Complexity: O(B + X)",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "vouch",
|
|
"args": [
|
|
{
|
|
"name": "who",
|
|
"type": "AccountId"
|
|
},
|
|
{
|
|
"name": "value",
|
|
"type": "BalanceOf"
|
|
},
|
|
{
|
|
"name": "tip",
|
|
"type": "BalanceOf"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" As a member, vouch for someone to join society by placing a bid on their behalf.",
|
|
"",
|
|
" There is no deposit required to vouch for a new bid, but a member can only vouch for",
|
|
" one bid at a time. If the bid becomes a suspended candidate and ultimately rejected by",
|
|
" the suspension judgement origin, the member will be banned from vouching again.",
|
|
"",
|
|
" As a vouching member, you can claim a tip if the candidate is accepted. This tip will",
|
|
" be paid as a portion of the reward the member will receive for joining the society.",
|
|
"",
|
|
" The dispatch origin for this call must be _Signed_ and a member.",
|
|
"",
|
|
" Parameters:",
|
|
" - `who`: The user who you would like to vouch for.",
|
|
" - `value`: The total reward to be paid between you and the candidate if they become",
|
|
" a member in the society.",
|
|
" - `tip`: Your cut of the total `value` payout when the candidate is inducted into",
|
|
" the society. Tips larger than `value` will be saturated upon payout.",
|
|
"",
|
|
" # <weight>",
|
|
" Key: B (len of bids), C (len of candidates), M (len of members)",
|
|
" - Storage Reads:",
|
|
" \t- One storage read to retrieve all members. O(M)",
|
|
" \t- One storage read to check member is not already vouching. O(1)",
|
|
" \t- One storage read to check for suspended candidate. O(1)",
|
|
" \t- One storage read to check for suspended member. O(1)",
|
|
" \t- One storage read to retrieve all current bids. O(B)",
|
|
" \t- One storage read to retrieve all current candidates. O(C)",
|
|
" - Storage Writes:",
|
|
" \t- One storage write to insert vouching status to the member. O(1)",
|
|
" \t- One storage mutate to add a new bid to the vector O(B) (TODO: possible optimization w/ read)",
|
|
" \t- Up to one storage removal if bid.len() > MAX_BID_COUNT. O(1)",
|
|
" - Notable Computation:",
|
|
" \t- O(log M) search to check sender is a member.",
|
|
" \t- O(B + C + log M) search to check user is not already a part of society.",
|
|
" \t- O(log B) search to insert the new bid sorted.",
|
|
" - External Module Operations:",
|
|
" \t- One balance reserve operation. O(X)",
|
|
" \t- Up to one balance unreserve operation if bids.len() > MAX_BID_COUNT.",
|
|
" - Events:",
|
|
" \t- One event for vouch.",
|
|
" \t- Up to one event for AutoUnbid if bid.len() > MAX_BID_COUNT.",
|
|
"",
|
|
" Total Complexity: O(M + B + C + logM + logB + X)",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "unvouch",
|
|
"args": [
|
|
{
|
|
"name": "pos",
|
|
"type": "u32"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" As a vouching member, unvouch a bid. This only works while vouched user is",
|
|
" only a bidder (and not a candidate).",
|
|
"",
|
|
" The dispatch origin for this call must be _Signed_ and a vouching member.",
|
|
"",
|
|
" Parameters:",
|
|
" - `pos`: Position in the `Bids` vector of the bid who should be unvouched.",
|
|
"",
|
|
" # <weight>",
|
|
" Key: B (len of bids)",
|
|
" - One storage read O(1) to check the signer is a vouching member.",
|
|
" - One storage mutate to retrieve and update the bids. O(B)",
|
|
" - One vouching storage removal. O(1)",
|
|
" - One event.",
|
|
"",
|
|
" Total Complexity: O(B)",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "vote",
|
|
"args": [
|
|
{
|
|
"name": "candidate",
|
|
"type": "LookupSource"
|
|
},
|
|
{
|
|
"name": "approve",
|
|
"type": "bool"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" As a member, vote on a candidate.",
|
|
"",
|
|
" The dispatch origin for this call must be _Signed_ and a member.",
|
|
"",
|
|
" Parameters:",
|
|
" - `candidate`: The candidate that the member would like to bid on.",
|
|
" - `approve`: A boolean which says if the candidate should be",
|
|
" approved (`true`) or rejected (`false`).",
|
|
"",
|
|
" # <weight>",
|
|
" Key: C (len of candidates), M (len of members)",
|
|
" - One storage read O(M) and O(log M) search to check user is a member.",
|
|
" - One account lookup.",
|
|
" - One storage read O(C) and O(C) search to check that user is a candidate.",
|
|
" - One storage write to add vote to votes. O(1)",
|
|
" - One event.",
|
|
"",
|
|
" Total Complexity: O(M + logM + C)",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "defender_vote",
|
|
"args": [
|
|
{
|
|
"name": "approve",
|
|
"type": "bool"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" As a member, vote on the defender.",
|
|
"",
|
|
" The dispatch origin for this call must be _Signed_ and a member.",
|
|
"",
|
|
" Parameters:",
|
|
" - `approve`: A boolean which says if the candidate should be",
|
|
" approved (`true`) or rejected (`false`).",
|
|
"",
|
|
" # <weight>",
|
|
" - Key: M (len of members)",
|
|
" - One storage read O(M) and O(log M) search to check user is a member.",
|
|
" - One storage write to add vote to votes. O(1)",
|
|
" - One event.",
|
|
"",
|
|
" Total Complexity: O(M + logM)",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "payout",
|
|
"args": [],
|
|
"documentation": [
|
|
" Transfer the first matured payout for the sender and remove it from the records.",
|
|
"",
|
|
" NOTE: This extrinsic needs to be called multiple times to claim multiple matured payouts.",
|
|
"",
|
|
" Payment: The member will receive a payment equal to their first matured",
|
|
" payout to their free balance.",
|
|
"",
|
|
" The dispatch origin for this call must be _Signed_ and a member with",
|
|
" payouts remaining.",
|
|
"",
|
|
" # <weight>",
|
|
" Key: M (len of members), P (number of payouts for a particular member)",
|
|
" - One storage read O(M) and O(log M) search to check signer is a member.",
|
|
" - One storage read O(P) to get all payouts for a member.",
|
|
" - One storage read O(1) to get the current block number.",
|
|
" - One currency transfer call. O(X)",
|
|
" - One storage write or removal to update the member's payouts. O(P)",
|
|
"",
|
|
" Total Complexity: O(M + logM + P + X)",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "found",
|
|
"args": [
|
|
{
|
|
"name": "founder",
|
|
"type": "AccountId"
|
|
},
|
|
{
|
|
"name": "max_members",
|
|
"type": "u32"
|
|
},
|
|
{
|
|
"name": "rules",
|
|
"type": "Bytes"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Found the society.",
|
|
"",
|
|
" This is done as a discrete action in order to allow for the",
|
|
" module to be included into a running chain and can only be done once.",
|
|
"",
|
|
" The dispatch origin for this call must be from the _FounderSetOrigin_.",
|
|
"",
|
|
" Parameters:",
|
|
" - `founder` - The first member and head of the newly founded society.",
|
|
" - `max_members` - The initial max number of members for the society.",
|
|
" - `rules` - The rules of this society concerning membership.",
|
|
"",
|
|
" # <weight>",
|
|
" - Two storage mutates to set `Head` and `Founder`. O(1)",
|
|
" - One storage write to add the first member to society. O(1)",
|
|
" - One event.",
|
|
"",
|
|
" Total Complexity: O(1)",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "unfound",
|
|
"args": [],
|
|
"documentation": [
|
|
" Annul the founding of the society.",
|
|
"",
|
|
" The dispatch origin for this call must be Signed, and the signing account must be both",
|
|
" the `Founder` and the `Head`. This implies that it may only be done when there is one",
|
|
" member.",
|
|
"",
|
|
" # <weight>",
|
|
" - Two storage reads O(1).",
|
|
" - Four storage removals O(1).",
|
|
" - One event.",
|
|
"",
|
|
" Total Complexity: O(1)",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "judge_suspended_member",
|
|
"args": [
|
|
{
|
|
"name": "who",
|
|
"type": "AccountId"
|
|
},
|
|
{
|
|
"name": "forgive",
|
|
"type": "bool"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Allow suspension judgement origin to make judgement on a suspended member.",
|
|
"",
|
|
" If a suspended member is forgiven, we simply add them back as a member, not affecting",
|
|
" any of the existing storage items for that member.",
|
|
"",
|
|
" If a suspended member is rejected, remove all associated storage items, including",
|
|
" their payouts, and remove any vouched bids they currently have.",
|
|
"",
|
|
" The dispatch origin for this call must be from the _SuspensionJudgementOrigin_.",
|
|
"",
|
|
" Parameters:",
|
|
" - `who` - The suspended member to be judged.",
|
|
" - `forgive` - A boolean representing whether the suspension judgement origin",
|
|
" forgives (`true`) or rejects (`false`) a suspended member.",
|
|
"",
|
|
" # <weight>",
|
|
" Key: B (len of bids), M (len of members)",
|
|
" - One storage read to check `who` is a suspended member. O(1)",
|
|
" - Up to one storage write O(M) with O(log M) binary search to add a member back to society.",
|
|
" - Up to 3 storage removals O(1) to clean up a removed member.",
|
|
" - Up to one storage write O(B) with O(B) search to remove vouched bid from bids.",
|
|
" - Up to one additional event if unvouch takes place.",
|
|
" - One storage removal. O(1)",
|
|
" - One event for the judgement.",
|
|
"",
|
|
" Total Complexity: O(M + logM + B)",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "judge_suspended_candidate",
|
|
"args": [
|
|
{
|
|
"name": "who",
|
|
"type": "AccountId"
|
|
},
|
|
{
|
|
"name": "judgement",
|
|
"type": "SocietyJudgement"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Allow suspended judgement origin to make judgement on a suspended candidate.",
|
|
"",
|
|
" If the judgement is `Approve`, we add them to society as a member with the appropriate",
|
|
" payment for joining society.",
|
|
"",
|
|
" If the judgement is `Reject`, we either slash the deposit of the bid, giving it back",
|
|
" to the society treasury, or we ban the voucher from vouching again.",
|
|
"",
|
|
" If the judgement is `Rebid`, we put the candidate back in the bid pool and let them go",
|
|
" through the induction process again.",
|
|
"",
|
|
" The dispatch origin for this call must be from the _SuspensionJudgementOrigin_.",
|
|
"",
|
|
" Parameters:",
|
|
" - `who` - The suspended candidate to be judged.",
|
|
" - `judgement` - `Approve`, `Reject`, or `Rebid`.",
|
|
"",
|
|
" # <weight>",
|
|
" Key: B (len of bids), M (len of members), X (balance action)",
|
|
" - One storage read to check `who` is a suspended candidate.",
|
|
" - One storage removal of the suspended candidate.",
|
|
" - Approve Logic",
|
|
" \t- One storage read to get the available pot to pay users with. O(1)",
|
|
" \t- One storage write to update the available pot. O(1)",
|
|
" \t- One storage read to get the current block number. O(1)",
|
|
" \t- One storage read to get all members. O(M)",
|
|
" \t- Up to one unreserve currency action.",
|
|
" \t- Up to two new storage writes to payouts.",
|
|
" \t- Up to one storage write with O(log M) binary search to add a member to society.",
|
|
" - Reject Logic",
|
|
" \t- Up to one repatriate reserved currency action. O(X)",
|
|
" \t- Up to one storage write to ban the vouching member from vouching again.",
|
|
" - Rebid Logic",
|
|
" \t- Storage mutate with O(log B) binary search to place the user back into bids.",
|
|
" - Up to one additional event if unvouch takes place.",
|
|
" - One storage removal.",
|
|
" - One event for the judgement.",
|
|
"",
|
|
" Total Complexity: O(M + logM + B + X)",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "set_max_members",
|
|
"args": [
|
|
{
|
|
"name": "max",
|
|
"type": "u32"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Allows root origin to change the maximum number of members in society.",
|
|
" Max membership count must be greater than 1.",
|
|
"",
|
|
" The dispatch origin for this call must be from _ROOT_.",
|
|
"",
|
|
" Parameters:",
|
|
" - `max` - The maximum number of members for the society.",
|
|
"",
|
|
" # <weight>",
|
|
" - One storage write to update the max. O(1)",
|
|
" - One event.",
|
|
"",
|
|
" Total Complexity: O(1)",
|
|
" # </weight>"
|
|
]
|
|
}
|
|
],
|
|
"events": [
|
|
{
|
|
"name": "Founded",
|
|
"args": [
|
|
"AccountId"
|
|
],
|
|
"documentation": [
|
|
" The society is founded by the given identity."
|
|
]
|
|
},
|
|
{
|
|
"name": "Bid",
|
|
"args": [
|
|
"AccountId",
|
|
"Balance"
|
|
],
|
|
"documentation": [
|
|
" A membership bid just happened. The given account is the candidate's ID and their offer",
|
|
" is the second."
|
|
]
|
|
},
|
|
{
|
|
"name": "Vouch",
|
|
"args": [
|
|
"AccountId",
|
|
"Balance",
|
|
"AccountId"
|
|
],
|
|
"documentation": [
|
|
" A membership bid just happened by vouching. The given account is the candidate's ID and",
|
|
" their offer is the second. The vouching party is the third."
|
|
]
|
|
},
|
|
{
|
|
"name": "AutoUnbid",
|
|
"args": [
|
|
"AccountId"
|
|
],
|
|
"documentation": [
|
|
" A candidate was dropped (due to an excess of bids in the system)."
|
|
]
|
|
},
|
|
{
|
|
"name": "Unbid",
|
|
"args": [
|
|
"AccountId"
|
|
],
|
|
"documentation": [
|
|
" A candidate was dropped (by their request)."
|
|
]
|
|
},
|
|
{
|
|
"name": "Unvouch",
|
|
"args": [
|
|
"AccountId"
|
|
],
|
|
"documentation": [
|
|
" A candidate was dropped (by request of who vouched for them)."
|
|
]
|
|
},
|
|
{
|
|
"name": "Inducted",
|
|
"args": [
|
|
"AccountId",
|
|
"Vec<AccountId>"
|
|
],
|
|
"documentation": [
|
|
" A group of candidates have been inducted. The batch's primary is the first value, the",
|
|
" batch in full is the second."
|
|
]
|
|
},
|
|
{
|
|
"name": "SuspendedMemberJudgement",
|
|
"args": [
|
|
"AccountId",
|
|
"bool"
|
|
],
|
|
"documentation": [
|
|
" A suspended member has been judged"
|
|
]
|
|
},
|
|
{
|
|
"name": "CandidateSuspended",
|
|
"args": [
|
|
"AccountId"
|
|
],
|
|
"documentation": [
|
|
" A candidate has been suspended"
|
|
]
|
|
},
|
|
{
|
|
"name": "MemberSuspended",
|
|
"args": [
|
|
"AccountId"
|
|
],
|
|
"documentation": [
|
|
" A member has been suspended"
|
|
]
|
|
},
|
|
{
|
|
"name": "Challenged",
|
|
"args": [
|
|
"AccountId"
|
|
],
|
|
"documentation": [
|
|
" A member has been challenged"
|
|
]
|
|
},
|
|
{
|
|
"name": "Vote",
|
|
"args": [
|
|
"AccountId",
|
|
"AccountId",
|
|
"bool"
|
|
],
|
|
"documentation": [
|
|
" A vote has been placed (candidate, voter, vote)"
|
|
]
|
|
},
|
|
{
|
|
"name": "DefenderVote",
|
|
"args": [
|
|
"AccountId",
|
|
"bool"
|
|
],
|
|
"documentation": [
|
|
" A vote has been placed for a defending member (voter, vote)"
|
|
]
|
|
},
|
|
{
|
|
"name": "NewMaxMembers",
|
|
"args": [
|
|
"u32"
|
|
],
|
|
"documentation": [
|
|
" A new max member count has been set"
|
|
]
|
|
},
|
|
{
|
|
"name": "Unfounded",
|
|
"args": [
|
|
"AccountId"
|
|
],
|
|
"documentation": [
|
|
" Society is unfounded."
|
|
]
|
|
}
|
|
],
|
|
"constants": [
|
|
{
|
|
"name": "CandidateDeposit",
|
|
"type": "BalanceOf",
|
|
"value": "0x0080c6a47e8d03000000000000000000",
|
|
"documentation": [
|
|
" The minimum amount of a deposit required for a bid to be made."
|
|
]
|
|
},
|
|
{
|
|
"name": "WrongSideDeduction",
|
|
"type": "BalanceOf",
|
|
"value": "0x0080f420e6b500000000000000000000",
|
|
"documentation": [
|
|
" The amount of the unpaid reward that gets deducted in the case that either a skeptic",
|
|
" doesn't vote or someone votes in the wrong way."
|
|
]
|
|
},
|
|
{
|
|
"name": "MaxStrikes",
|
|
"type": "u32",
|
|
"value": "0x0a000000",
|
|
"documentation": [
|
|
" The number of times a member may vote the wrong way (or not at all, when they are a skeptic)",
|
|
" before they become suspended."
|
|
]
|
|
},
|
|
{
|
|
"name": "PeriodSpend",
|
|
"type": "BalanceOf",
|
|
"value": "0x0000c52ebca2b1000000000000000000",
|
|
"documentation": [
|
|
" The amount of incentive paid within each period. Doesn't include VoterTip."
|
|
]
|
|
},
|
|
{
|
|
"name": "RotationPeriod",
|
|
"type": "BlockNumber",
|
|
"value": "0x00770100",
|
|
"documentation": [
|
|
" The number of blocks between candidate/membership rotation periods."
|
|
]
|
|
},
|
|
{
|
|
"name": "ChallengePeriod",
|
|
"type": "BlockNumber",
|
|
"value": "0x80130300",
|
|
"documentation": [
|
|
" The number of blocks between membership challenges."
|
|
]
|
|
}
|
|
],
|
|
"errors": [
|
|
{
|
|
"name": "BadPosition",
|
|
"documentation": [
|
|
" An incorrect position was provided."
|
|
]
|
|
},
|
|
{
|
|
"name": "NotMember",
|
|
"documentation": [
|
|
" User is not a member."
|
|
]
|
|
},
|
|
{
|
|
"name": "AlreadyMember",
|
|
"documentation": [
|
|
" User is already a member."
|
|
]
|
|
},
|
|
{
|
|
"name": "Suspended",
|
|
"documentation": [
|
|
" User is suspended."
|
|
]
|
|
},
|
|
{
|
|
"name": "NotSuspended",
|
|
"documentation": [
|
|
" User is not suspended."
|
|
]
|
|
},
|
|
{
|
|
"name": "NoPayout",
|
|
"documentation": [
|
|
" Nothing to payout."
|
|
]
|
|
},
|
|
{
|
|
"name": "AlreadyFounded",
|
|
"documentation": [
|
|
" Society already founded."
|
|
]
|
|
},
|
|
{
|
|
"name": "InsufficientPot",
|
|
"documentation": [
|
|
" Not enough in pot to accept candidate."
|
|
]
|
|
},
|
|
{
|
|
"name": "AlreadyVouching",
|
|
"documentation": [
|
|
" Member is already vouching or banned from vouching again."
|
|
]
|
|
},
|
|
{
|
|
"name": "NotVouching",
|
|
"documentation": [
|
|
" Member is not vouching."
|
|
]
|
|
},
|
|
{
|
|
"name": "Head",
|
|
"documentation": [
|
|
" Cannot remove the head of the chain."
|
|
]
|
|
},
|
|
{
|
|
"name": "Founder",
|
|
"documentation": [
|
|
" Cannot remove the founder."
|
|
]
|
|
},
|
|
{
|
|
"name": "AlreadyBid",
|
|
"documentation": [
|
|
" User has already made a bid."
|
|
]
|
|
},
|
|
{
|
|
"name": "AlreadyCandidate",
|
|
"documentation": [
|
|
" User is already a candidate."
|
|
]
|
|
},
|
|
{
|
|
"name": "NotCandidate",
|
|
"documentation": [
|
|
" User is not a candidate."
|
|
]
|
|
},
|
|
{
|
|
"name": "MaxMembers",
|
|
"documentation": [
|
|
" Too many members in the society."
|
|
]
|
|
},
|
|
{
|
|
"name": "NotFounder",
|
|
"documentation": [
|
|
" The caller is not the founder."
|
|
]
|
|
},
|
|
{
|
|
"name": "NotHead",
|
|
"documentation": [
|
|
" The caller is not the head."
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Recovery",
|
|
"storage": {
|
|
"prefix": "Recovery",
|
|
"items": [
|
|
{
|
|
"name": "Recoverable",
|
|
"modifier": "Optional",
|
|
"type": {
|
|
"Map": {
|
|
"hasher": "Twox64Concat",
|
|
"key": "AccountId",
|
|
"value": "RecoveryConfig",
|
|
"linked": false
|
|
}
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" The set of recoverable accounts and their recovery configuration."
|
|
]
|
|
},
|
|
{
|
|
"name": "ActiveRecoveries",
|
|
"modifier": "Optional",
|
|
"type": {
|
|
"DoubleMap": {
|
|
"hasher": "Twox64Concat",
|
|
"key1": "AccountId",
|
|
"key2": "AccountId",
|
|
"value": "ActiveRecovery",
|
|
"key2Hasher": "Twox64Concat"
|
|
}
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" Active recovery attempts.",
|
|
"",
|
|
" First account is the account to be recovered, and the second account",
|
|
" is the user trying to recover the account."
|
|
]
|
|
},
|
|
{
|
|
"name": "Proxy",
|
|
"modifier": "Optional",
|
|
"type": {
|
|
"Map": {
|
|
"hasher": "Blake2_128Concat",
|
|
"key": "AccountId",
|
|
"value": "AccountId",
|
|
"linked": false
|
|
}
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" The list of allowed proxy accounts.",
|
|
"",
|
|
" Map from the user who can access it to the recovered account."
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"calls": [
|
|
{
|
|
"name": "as_recovered",
|
|
"args": [
|
|
{
|
|
"name": "account",
|
|
"type": "AccountId"
|
|
},
|
|
{
|
|
"name": "call",
|
|
"type": "Call"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Send a call through a recovered account.",
|
|
"",
|
|
" The dispatch origin for this call must be _Signed_ and registered to",
|
|
" be able to make calls on behalf of the recovered account.",
|
|
"",
|
|
" Parameters:",
|
|
" - `account`: The recovered account you want to make a call on-behalf-of.",
|
|
" - `call`: The call you want to make with the recovered account.",
|
|
"",
|
|
" # <weight>",
|
|
" - The weight of the `call` + 10,000.",
|
|
" - One storage lookup to check account is recovered by `who`. O(1)",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "set_recovered",
|
|
"args": [
|
|
{
|
|
"name": "lost",
|
|
"type": "AccountId"
|
|
},
|
|
{
|
|
"name": "rescuer",
|
|
"type": "AccountId"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Allow ROOT to bypass the recovery process and set an a rescuer account",
|
|
" for a lost account directly.",
|
|
"",
|
|
" The dispatch origin for this call must be _ROOT_.",
|
|
"",
|
|
" Parameters:",
|
|
" - `lost`: The \"lost account\" to be recovered.",
|
|
" - `rescuer`: The \"rescuer account\" which can call as the lost account.",
|
|
"",
|
|
" # <weight>",
|
|
" - One storage write O(1)",
|
|
" - One event",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "create_recovery",
|
|
"args": [
|
|
{
|
|
"name": "friends",
|
|
"type": "Vec<AccountId>"
|
|
},
|
|
{
|
|
"name": "threshold",
|
|
"type": "u16"
|
|
},
|
|
{
|
|
"name": "delay_period",
|
|
"type": "BlockNumber"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Create a recovery configuration for your account. This makes your account recoverable.",
|
|
"",
|
|
" Payment: `ConfigDepositBase` + `FriendDepositFactor` * #_of_friends balance",
|
|
" will be reserved for storing the recovery configuration. This deposit is returned",
|
|
" in full when the user calls `remove_recovery`.",
|
|
"",
|
|
" The dispatch origin for this call must be _Signed_.",
|
|
"",
|
|
" Parameters:",
|
|
" - `friends`: A list of friends you trust to vouch for recovery attempts.",
|
|
" Should be ordered and contain no duplicate values.",
|
|
" - `threshold`: The number of friends that must vouch for a recovery attempt",
|
|
" before the account can be recovered. Should be less than or equal to",
|
|
" the length of the list of friends.",
|
|
" - `delay_period`: The number of blocks after a recovery attempt is initialized",
|
|
" that needs to pass before the account can be recovered.",
|
|
"",
|
|
" # <weight>",
|
|
" - Key: F (len of friends)",
|
|
" - One storage read to check that account is not already recoverable. O(1).",
|
|
" - A check that the friends list is sorted and unique. O(F)",
|
|
" - One currency reserve operation. O(X)",
|
|
" - One storage write. O(1). Codec O(F).",
|
|
" - One event.",
|
|
"",
|
|
" Total Complexity: O(F + X)",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "initiate_recovery",
|
|
"args": [
|
|
{
|
|
"name": "account",
|
|
"type": "AccountId"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Initiate the process for recovering a recoverable account.",
|
|
"",
|
|
" Payment: `RecoveryDeposit` balance will be reserved for initiating the",
|
|
" recovery process. This deposit will always be repatriated to the account",
|
|
" trying to be recovered. See `close_recovery`.",
|
|
"",
|
|
" The dispatch origin for this call must be _Signed_.",
|
|
"",
|
|
" Parameters:",
|
|
" - `account`: The lost account that you want to recover. This account",
|
|
" needs to be recoverable (i.e. have a recovery configuration).",
|
|
"",
|
|
" # <weight>",
|
|
" - One storage read to check that account is recoverable. O(F)",
|
|
" - One storage read to check that this recovery process hasn't already started. O(1)",
|
|
" - One currency reserve operation. O(X)",
|
|
" - One storage read to get the current block number. O(1)",
|
|
" - One storage write. O(1).",
|
|
" - One event.",
|
|
"",
|
|
" Total Complexity: O(F + X)",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "vouch_recovery",
|
|
"args": [
|
|
{
|
|
"name": "lost",
|
|
"type": "AccountId"
|
|
},
|
|
{
|
|
"name": "rescuer",
|
|
"type": "AccountId"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Allow a \"friend\" of a recoverable account to vouch for an active recovery",
|
|
" process for that account.",
|
|
"",
|
|
" The dispatch origin for this call must be _Signed_ and must be a \"friend\"",
|
|
" for the recoverable account.",
|
|
"",
|
|
" Parameters:",
|
|
" - `lost`: The lost account that you want to recover.",
|
|
" - `rescuer`: The account trying to rescue the lost account that you",
|
|
" want to vouch for.",
|
|
"",
|
|
" The combination of these two parameters must point to an active recovery",
|
|
" process.",
|
|
"",
|
|
" # <weight>",
|
|
" Key: F (len of friends in config), V (len of vouching friends)",
|
|
" - One storage read to get the recovery configuration. O(1), Codec O(F)",
|
|
" - One storage read to get the active recovery process. O(1), Codec O(V)",
|
|
" - One binary search to confirm caller is a friend. O(logF)",
|
|
" - One binary search to confirm caller has not already vouched. O(logV)",
|
|
" - One storage write. O(1), Codec O(V).",
|
|
" - One event.",
|
|
"",
|
|
" Total Complexity: O(F + logF + V + logV)",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "claim_recovery",
|
|
"args": [
|
|
{
|
|
"name": "account",
|
|
"type": "AccountId"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Allow a successful rescuer to claim their recovered account.",
|
|
"",
|
|
" The dispatch origin for this call must be _Signed_ and must be a \"rescuer\"",
|
|
" who has successfully completed the account recovery process: collected",
|
|
" `threshold` or more vouches, waited `delay_period` blocks since initiation.",
|
|
"",
|
|
" Parameters:",
|
|
" - `account`: The lost account that you want to claim has been successfully",
|
|
" recovered by you.",
|
|
"",
|
|
" # <weight>",
|
|
" Key: F (len of friends in config), V (len of vouching friends)",
|
|
" - One storage read to get the recovery configuration. O(1), Codec O(F)",
|
|
" - One storage read to get the active recovery process. O(1), Codec O(V)",
|
|
" - One storage read to get the current block number. O(1)",
|
|
" - One storage write. O(1), Codec O(V).",
|
|
" - One event.",
|
|
"",
|
|
" Total Complexity: O(F + V)",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "close_recovery",
|
|
"args": [
|
|
{
|
|
"name": "rescuer",
|
|
"type": "AccountId"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" As the controller of a recoverable account, close an active recovery",
|
|
" process for your account.",
|
|
"",
|
|
" Payment: By calling this function, the recoverable account will receive",
|
|
" the recovery deposit `RecoveryDeposit` placed by the rescuer.",
|
|
"",
|
|
" The dispatch origin for this call must be _Signed_ and must be a",
|
|
" recoverable account with an active recovery process for it.",
|
|
"",
|
|
" Parameters:",
|
|
" - `rescuer`: The account trying to rescue this recoverable account.",
|
|
"",
|
|
" # <weight>",
|
|
" Key: V (len of vouching friends)",
|
|
" - One storage read/remove to get the active recovery process. O(1), Codec O(V)",
|
|
" - One balance call to repatriate reserved. O(X)",
|
|
" - One event.",
|
|
"",
|
|
" Total Complexity: O(V + X)",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "remove_recovery",
|
|
"args": [],
|
|
"documentation": [
|
|
" Remove the recovery process for your account. Recovered accounts are still accessible.",
|
|
"",
|
|
" NOTE: The user must make sure to call `close_recovery` on all active",
|
|
" recovery attempts before calling this function else it will fail.",
|
|
"",
|
|
" Payment: By calling this function the recoverable account will unreserve",
|
|
" their recovery configuration deposit.",
|
|
" (`ConfigDepositBase` + `FriendDepositFactor` * #_of_friends)",
|
|
"",
|
|
" The dispatch origin for this call must be _Signed_ and must be a",
|
|
" recoverable account (i.e. has a recovery configuration).",
|
|
"",
|
|
" # <weight>",
|
|
" Key: F (len of friends)",
|
|
" - One storage read to get the prefix iterator for active recoveries. O(1)",
|
|
" - One storage read/remove to get the recovery configuration. O(1), Codec O(F)",
|
|
" - One balance call to unreserved. O(X)",
|
|
" - One event.",
|
|
"",
|
|
" Total Complexity: O(F + X)",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "cancel_recovered",
|
|
"args": [
|
|
{
|
|
"name": "account",
|
|
"type": "AccountId"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Cancel the ability to use `as_recovered` for `account`.",
|
|
"",
|
|
" The dispatch origin for this call must be _Signed_ and registered to",
|
|
" be able to make calls on behalf of the recovered account.",
|
|
"",
|
|
" Parameters:",
|
|
" - `account`: The recovered account you are able to call on-behalf-of.",
|
|
"",
|
|
" # <weight>",
|
|
" - One storage mutation to check account is recovered by `who`. O(1)",
|
|
" # </weight>"
|
|
]
|
|
}
|
|
],
|
|
"events": [
|
|
{
|
|
"name": "RecoveryCreated",
|
|
"args": [
|
|
"AccountId"
|
|
],
|
|
"documentation": [
|
|
" A recovery process has been set up for an account"
|
|
]
|
|
},
|
|
{
|
|
"name": "RecoveryInitiated",
|
|
"args": [
|
|
"AccountId",
|
|
"AccountId"
|
|
],
|
|
"documentation": [
|
|
" A recovery process has been initiated for account_1 by account_2"
|
|
]
|
|
},
|
|
{
|
|
"name": "RecoveryVouched",
|
|
"args": [
|
|
"AccountId",
|
|
"AccountId",
|
|
"AccountId"
|
|
],
|
|
"documentation": [
|
|
" A recovery process for account_1 by account_2 has been vouched for by account_3"
|
|
]
|
|
},
|
|
{
|
|
"name": "RecoveryClosed",
|
|
"args": [
|
|
"AccountId",
|
|
"AccountId"
|
|
],
|
|
"documentation": [
|
|
" A recovery process for account_1 by account_2 has been closed"
|
|
]
|
|
},
|
|
{
|
|
"name": "AccountRecovered",
|
|
"args": [
|
|
"AccountId",
|
|
"AccountId"
|
|
],
|
|
"documentation": [
|
|
" Account_1 has been successfully recovered by account_2"
|
|
]
|
|
},
|
|
{
|
|
"name": "RecoveryRemoved",
|
|
"args": [
|
|
"AccountId"
|
|
],
|
|
"documentation": [
|
|
" A recovery process has been removed for an account"
|
|
]
|
|
}
|
|
],
|
|
"constants": [],
|
|
"errors": [
|
|
{
|
|
"name": "NotAllowed",
|
|
"documentation": [
|
|
" User is not allowed to make a call on behalf of this account"
|
|
]
|
|
},
|
|
{
|
|
"name": "ZeroThreshold",
|
|
"documentation": [
|
|
" Threshold must be greater than zero"
|
|
]
|
|
},
|
|
{
|
|
"name": "NotEnoughFriends",
|
|
"documentation": [
|
|
" Friends list must be greater than zero and threshold"
|
|
]
|
|
},
|
|
{
|
|
"name": "MaxFriends",
|
|
"documentation": [
|
|
" Friends list must be less than max friends"
|
|
]
|
|
},
|
|
{
|
|
"name": "NotSorted",
|
|
"documentation": [
|
|
" Friends list must be sorted and free of duplicates"
|
|
]
|
|
},
|
|
{
|
|
"name": "NotRecoverable",
|
|
"documentation": [
|
|
" This account is not set up for recovery"
|
|
]
|
|
},
|
|
{
|
|
"name": "AlreadyRecoverable",
|
|
"documentation": [
|
|
" This account is already set up for recovery"
|
|
]
|
|
},
|
|
{
|
|
"name": "AlreadyStarted",
|
|
"documentation": [
|
|
" A recovery process has already started for this account"
|
|
]
|
|
},
|
|
{
|
|
"name": "NotStarted",
|
|
"documentation": [
|
|
" A recovery process has not started for this rescuer"
|
|
]
|
|
},
|
|
{
|
|
"name": "NotFriend",
|
|
"documentation": [
|
|
" This account is not a friend who can vouch"
|
|
]
|
|
},
|
|
{
|
|
"name": "DelayPeriod",
|
|
"documentation": [
|
|
" The friend must wait until the delay period to vouch for this recovery"
|
|
]
|
|
},
|
|
{
|
|
"name": "AlreadyVouched",
|
|
"documentation": [
|
|
" This user has already vouched for this recovery"
|
|
]
|
|
},
|
|
{
|
|
"name": "Threshold",
|
|
"documentation": [
|
|
" The threshold for recovering this account has not been met"
|
|
]
|
|
},
|
|
{
|
|
"name": "StillActive",
|
|
"documentation": [
|
|
" There are still active recovery attempts that need to be closed"
|
|
]
|
|
},
|
|
{
|
|
"name": "Overflow",
|
|
"documentation": [
|
|
" There was an overflow in a calculation"
|
|
]
|
|
},
|
|
{
|
|
"name": "AlreadyProxy",
|
|
"documentation": [
|
|
" This account is already set up for recovery"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Vesting",
|
|
"storage": {
|
|
"prefix": "Vesting",
|
|
"items": [
|
|
{
|
|
"name": "Vesting",
|
|
"modifier": "Optional",
|
|
"type": {
|
|
"Map": {
|
|
"hasher": "Blake2_128Concat",
|
|
"key": "AccountId",
|
|
"value": "VestingInfo",
|
|
"linked": false
|
|
}
|
|
},
|
|
"fallback": "0x00",
|
|
"documentation": [
|
|
" Information regarding the vesting of a given account."
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"calls": [
|
|
{
|
|
"name": "vest",
|
|
"args": [],
|
|
"documentation": [
|
|
" Unlock any vested funds of the sender account.",
|
|
"",
|
|
" The dispatch origin for this call must be _Signed_ and the sender must have funds still",
|
|
" locked under this module.",
|
|
"",
|
|
" Emits either `VestingCompleted` or `VestingUpdated`.",
|
|
"",
|
|
" # <weight>",
|
|
" - `O(1)`.",
|
|
" - One balance-lock operation.",
|
|
" - One storage read (codec `O(1)`) and up to one removal.",
|
|
" - One event.",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "vest_other",
|
|
"args": [
|
|
{
|
|
"name": "target",
|
|
"type": "LookupSource"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Unlock any vested funds of a `target` account.",
|
|
"",
|
|
" The dispatch origin for this call must be _Signed_.",
|
|
"",
|
|
" - `target`: The account whose vested funds should be unlocked. Must have funds still",
|
|
" locked under this module.",
|
|
"",
|
|
" Emits either `VestingCompleted` or `VestingUpdated`.",
|
|
"",
|
|
" # <weight>",
|
|
" - `O(1)`.",
|
|
" - Up to one account lookup.",
|
|
" - One balance-lock operation.",
|
|
" - One storage read (codec `O(1)`) and up to one removal.",
|
|
" - One event.",
|
|
" # </weight>"
|
|
]
|
|
},
|
|
{
|
|
"name": "vested_transfer",
|
|
"args": [
|
|
{
|
|
"name": "target",
|
|
"type": "LookupSource"
|
|
},
|
|
{
|
|
"name": "schedule",
|
|
"type": "VestingInfo"
|
|
}
|
|
],
|
|
"documentation": [
|
|
" Create a vested transfer.",
|
|
"",
|
|
" The dispatch origin for this call must be _Signed_.",
|
|
"",
|
|
" - `target`: The account that should be transferred the vested funds.",
|
|
" - `amount`: The amount of funds to transfer and will be vested.",
|
|
" - `schedule`: The vesting schedule attached to the transfer.",
|
|
"",
|
|
" Emits `VestingCreated`.",
|
|
"",
|
|
" # <weight>",
|
|
" - Creates a new storage entry, but is protected by a minimum transfer",
|
|
"\t amount needed to succeed.",
|
|
" # </weight>"
|
|
]
|
|
}
|
|
],
|
|
"events": [
|
|
{
|
|
"name": "VestingUpdated",
|
|
"args": [
|
|
"AccountId",
|
|
"Balance"
|
|
],
|
|
"documentation": [
|
|
" The amount vested has been updated. This could indicate more funds are available. The",
|
|
" balance given is the amount which is left unvested (and thus locked)."
|
|
]
|
|
},
|
|
{
|
|
"name": "VestingCompleted",
|
|
"args": [
|
|
"AccountId"
|
|
],
|
|
"documentation": [
|
|
" An account (given) has become fully vested. No further vesting can happen."
|
|
]
|
|
}
|
|
],
|
|
"constants": [
|
|
{
|
|
"name": "MinVestedTransfer",
|
|
"type": "BalanceOf",
|
|
"value": "0x0000c16ff28623000000000000000000",
|
|
"documentation": [
|
|
" The minimum amount to be transferred to create a new vesting schedule."
|
|
]
|
|
}
|
|
],
|
|
"errors": [
|
|
{
|
|
"name": "NotVesting",
|
|
"documentation": [
|
|
" The account given is not vesting."
|
|
]
|
|
},
|
|
{
|
|
"name": "ExistingVestingSchedule",
|
|
"documentation": [
|
|
" An existing vesting schedule already exists for this account that cannot be clobbered."
|
|
]
|
|
},
|
|
{
|
|
"name": "AmountLow",
|
|
"documentation": [
|
|
" Amount being transferred is too low to create a vesting schedule."
|
|
]
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"extrinsic": {
|
|
"version": 4,
|
|
"signedExtensions": [
|
|
"CheckVersion",
|
|
"CheckGenesis",
|
|
"CheckEra",
|
|
"CheckNonce",
|
|
"CheckWeight",
|
|
"ChargeTransactionPayment",
|
|
"CheckBlockGasLimit"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|