Skip to content
Snippets Groups Projects
Commit 285db974 authored by Hugo Trentesaux's avatar Hugo Trentesaux
Browse files

add runtime errors doc (!204)

* also add runtime errors
parent 727eb6a5
Branches
Tags
1 merge request!204add runtime errors doc
# Runtime errors
There are **190** errors from **37** pallets.
<ul>
<li>System - 0
<ul>
<li>
<details>
<summary>
<code>InvalidSpecName</code> - 0</summary>
The name of specification does not match between the current runtime
and the new runtime.
</details>
</li>
<li>
<details>
<summary>
<code>SpecVersionNeedsToIncrease</code> - 1</summary>
The specification version is not allowed to decrease between the current runtime
and the new runtime.
</details>
</li>
<li>
<details>
<summary>
<code>FailedToExtractRuntimeVersion</code> - 2</summary>
Failed to extract the runtime version from the new runtime.
Either calling `Core_version` or decoding `RuntimeVersion` failed.
</details>
</li>
<li>
<details>
<summary>
<code>NonDefaultComposite</code> - 3</summary>
Suicide called when the account has non-default composite data.
</details>
</li>
<li>
<details>
<summary>
<code>NonZeroRefCount</code> - 4</summary>
There is a non-zero reference count preventing the account from being purged.
</details>
</li>
<li>
<details>
<summary>
<code>CallFiltered</code> - 5</summary>
The origin filter prevent the call to be dispatched.
</details>
</li>
</ul>
</li>
<li>Account - 1
<ul>
</ul>
</li>
<li>Scheduler - 2
<ul>
<li>
<details>
<summary>
<code>FailedToSchedule</code> - 0</summary>
Failed to schedule a call
</details>
</li>
<li>
<details>
<summary>
<code>NotFound</code> - 1</summary>
Cannot find the scheduled call.
</details>
</li>
<li>
<details>
<summary>
<code>TargetBlockNumberInPast</code> - 2</summary>
Given target block number is in the past.
</details>
</li>
<li>
<details>
<summary>
<code>RescheduleNoChange</code> - 3</summary>
Reschedule failed because it does not change scheduled time.
</details>
</li>
<li>
<details>
<summary>
<code>Named</code> - 4</summary>
Attempt to use a non-named function on a named task.
</details>
</li>
</ul>
</li>
<li>Babe - 3
<ul>
<li>
<details>
<summary>
<code>InvalidEquivocationProof</code> - 0</summary>
An equivocation proof provided as part of an equivocation report is invalid.
</details>
</li>
<li>
<details>
<summary>
<code>InvalidKeyOwnershipProof</code> - 1</summary>
A key ownership proof provided as part of an equivocation report is invalid.
</details>
</li>
<li>
<details>
<summary>
<code>DuplicateOffenceReport</code> - 2</summary>
A given equivocation report is valid but already previously reported.
</details>
</li>
<li>
<details>
<summary>
<code>InvalidConfiguration</code> - 3</summary>
Submitted configuration is invalid.
</details>
</li>
</ul>
</li>
<li>Timestamp - 4
<ul>
</ul>
</li>
<li>Parameters - 5
<ul>
</ul>
</li>
<li>Balances - 6
<ul>
<li>
<details>
<summary>
<code>VestingBalance</code> - 0</summary>
Vesting balance too high to send value.
</details>
</li>
<li>
<details>
<summary>
<code>LiquidityRestrictions</code> - 1</summary>
Account liquidity restrictions prevent withdrawal.
</details>
</li>
<li>
<details>
<summary>
<code>InsufficientBalance</code> - 2</summary>
Balance too low to send value.
</details>
</li>
<li>
<details>
<summary>
<code>ExistentialDeposit</code> - 3</summary>
Value too low to create account due to existential deposit.
</details>
</li>
<li>
<details>
<summary>
<code>Expendability</code> - 4</summary>
Transfer/payment would kill account.
</details>
</li>
<li>
<details>
<summary>
<code>ExistingVestingSchedule</code> - 5</summary>
A vesting schedule already exists for this account.
</details>
</li>
<li>
<details>
<summary>
<code>DeadAccount</code> - 6</summary>
Beneficiary account must pre-exist.
</details>
</li>
<li>
<details>
<summary>
<code>TooManyReserves</code> - 7</summary>
Number of named reserves exceed `MaxReserves`.
</details>
</li>
<li>
<details>
<summary>
<code>TooManyHolds</code> - 8</summary>
Number of holds exceed `MaxHolds`.
</details>
</li>
<li>
<details>
<summary>
<code>TooManyFreezes</code> - 9</summary>
Number of freezes exceed `MaxFreezes`.
</details>
</li>
</ul>
</li>
<li>TransactionPayment - 32
<ul>
</ul>
</li>
<li>OneshotAccount - 7
<ul>
<li>
<details>
<summary>
<code>BlockHeightInFuture</code> - 0</summary>
Block height is in the future
</details>
</li>
<li>
<details>
<summary>
<code>BlockHeightTooOld</code> - 1</summary>
Block height is too old
</details>
</li>
<li>
<details>
<summary>
<code>DestAccountNotExist</code> - 2</summary>
Destination account does not exist
</details>
</li>
<li>
<details>
<summary>
<code>ExistentialDeposit</code> - 3</summary>
Destination account has balance less than existential deposit
</details>
</li>
<li>
<details>
<summary>
<code>InsufficientBalance</code> - 4</summary>
Source account has insufficient balance
</details>
</li>
<li>
<details>
<summary>
<code>OneshotAccountAlreadyCreated</code> - 5</summary>
Destination oneshot account already exists
</details>
</li>
<li>
<details>
<summary>
<code>OneshotAccountNotExist</code> - 6</summary>
Source oneshot account does not exist
</details>
</li>
</ul>
</li>
<li>Quota - 66
<ul>
</ul>
</li>
<li>AuthorityMembers - 10
<ul>
<li>
<details>
<summary>
<code>AlreadyIncoming</code> - 0</summary>
Already incoming
</details>
</li>
<li>
<details>
<summary>
<code>AlreadyOnline</code> - 1</summary>
Already online
</details>
</li>
<li>
<details>
<summary>
<code>AlreadyOutgoing</code> - 2</summary>
Already outgoing
</details>
</li>
<li>
<details>
<summary>
<code>MemberIdNotFound</code> - 3</summary>
Not found owner key
</details>
</li>
<li>
<details>
<summary>
<code>MemberIdBlackListed</code> - 4</summary>
Member is blacklisted
</details>
</li>
<li>
<details>
<summary>
<code>MemberNotBlackListed</code> - 5</summary>
Member is not blacklisted
</details>
</li>
<li>
<details>
<summary>
<code>MemberNotFound</code> - 6</summary>
Member not found
</details>
</li>
<li>
<details>
<summary>
<code>NotOnlineNorIncoming</code> - 7</summary>
Neither online nor scheduled
</details>
</li>
<li>
<details>
<summary>
<code>NotOwner</code> - 8</summary>
Not owner
</details>
</li>
<li>
<details>
<summary>
<code>NotMember</code> - 9</summary>
Not member
</details>
</li>
<li>
<details>
<summary>
<code>SessionKeysNotProvided</code> - 10</summary>
Session keys not provided
</details>
</li>
<li>
<details>
<summary>
<code>TooManyAuthorities</code> - 11</summary>
Too man aAuthorities
</details>
</li>
</ul>
</li>
<li>Authorship - 11
<ul>
</ul>
</li>
<li>Offences - 12
<ul>
</ul>
</li>
<li>Historical - 13
<ul>
</ul>
</li>
<li>Session - 14
<ul>
<li>
<details>
<summary>
<code>InvalidProof</code> - 0</summary>
Invalid ownership proof.
</details>
</li>
<li>
<details>
<summary>
<code>NoAssociatedValidatorId</code> - 1</summary>
No associated validator ID for account.
</details>
</li>
<li>
<details>
<summary>
<code>DuplicatedKey</code> - 2</summary>
Registered duplicate key.
</details>
</li>
<li>
<details>
<summary>
<code>NoKeys</code> - 3</summary>
No keys are associated with this account.
</details>
</li>
<li>
<details>
<summary>
<code>NoAccount</code> - 4</summary>
Key setting account is not live, so it's impossible to associate keys.
</details>
</li>
</ul>
</li>
<li>Grandpa - 15
<ul>
<li>
<details>
<summary>
<code>PauseFailed</code> - 0</summary>
Attempt to signal GRANDPA pause when the authority set isn't live
(either paused or already pending pause).
</details>
</li>
<li>
<details>
<summary>
<code>ResumeFailed</code> - 1</summary>
Attempt to signal GRANDPA resume when the authority set isn't paused
(either live or already pending resume).
</details>
</li>
<li>
<details>
<summary>
<code>ChangePending</code> - 2</summary>
Attempt to signal GRANDPA change with one already pending.
</details>
</li>
<li>
<details>
<summary>
<code>TooSoon</code> - 3</summary>
Cannot signal forced change so soon after last.
</details>
</li>
<li>
<details>
<summary>
<code>InvalidKeyOwnershipProof</code> - 4</summary>
A key ownership proof provided as part of an equivocation report is invalid.
</details>
</li>
<li>
<details>
<summary>
<code>InvalidEquivocationProof</code> - 5</summary>
An equivocation proof provided as part of an equivocation report is invalid.
</details>
</li>
<li>
<details>
<summary>
<code>DuplicateOffenceReport</code> - 6</summary>
A given equivocation report is valid but already previously reported.
</details>
</li>
</ul>
</li>
<li>ImOnline - 16
<ul>
<li>
<details>
<summary>
<code>InvalidKey</code> - 0</summary>
Non existent public key.
</details>
</li>
<li>
<details>
<summary>
<code>DuplicatedHeartbeat</code> - 1</summary>
Duplicated heartbeat.
</details>
</li>
</ul>
</li>
<li>AuthorityDiscovery - 17
<ul>
</ul>
</li>
<li>Sudo - 20
<ul>
<li>
<details>
<summary>
<code>RequireSudo</code> - 0</summary>
Sender must be the Sudo account
</details>
</li>
</ul>
</li>
<li>UpgradeOrigin - 21
<ul>
</ul>
</li>
<li>Preimage - 22
<ul>
<li>
<details>
<summary>
<code>TooBig</code> - 0</summary>
Preimage is too large to store on-chain.
</details>
</li>
<li>
<details>
<summary>
<code>AlreadyNoted</code> - 1</summary>
Preimage has already been noted on-chain.
</details>
</li>
<li>
<details>
<summary>
<code>NotAuthorized</code> - 2</summary>
The user is not authorized to perform this action.
</details>
</li>
<li>
<details>
<summary>
<code>NotNoted</code> - 3</summary>
The preimage cannot be removed since it has not yet been noted.
</details>
</li>
<li>
<details>
<summary>
<code>Requested</code> - 4</summary>
A preimage may not be removed when there are outstanding requests.
</details>
</li>
<li>
<details>
<summary>
<code>NotRequested</code> - 5</summary>
The preimage request cannot be removed since no outstanding requests exist.
</details>
</li>
</ul>
</li>
<li>TechnicalCommittee - 23
<ul>
<li>
<details>
<summary>
<code>NotMember</code> - 0</summary>
Account is not a member
</details>
</li>
<li>
<details>
<summary>
<code>DuplicateProposal</code> - 1</summary>
Duplicate proposals not allowed
</details>
</li>
<li>
<details>
<summary>
<code>ProposalMissing</code> - 2</summary>
Proposal must exist
</details>
</li>
<li>
<details>
<summary>
<code>WrongIndex</code> - 3</summary>
Mismatched index
</details>
</li>
<li>
<details>
<summary>
<code>DuplicateVote</code> - 4</summary>
Duplicate vote ignored
</details>
</li>
<li>
<details>
<summary>
<code>AlreadyInitialized</code> - 5</summary>
Members are already initialized!
</details>
</li>
<li>
<details>
<summary>
<code>TooEarly</code> - 6</summary>
The close call was made too early, before the end of the voting.
</details>
</li>
<li>
<details>
<summary>
<code>TooManyProposals</code> - 7</summary>
There can only be a maximum of `MaxProposals` active proposals.
</details>
</li>
<li>
<details>
<summary>
<code>WrongProposalWeight</code> - 8</summary>
The given weight bound for the proposal was too low.
</details>
</li>
<li>
<details>
<summary>
<code>WrongProposalLength</code> - 9</summary>
The given length bound for the proposal was too low.
</details>
</li>
</ul>
</li>
<li>UniversalDividend - 30
<ul>
<li>
<details>
<summary>
<code>AccountNotAllowedToClaimUds</code> - 0</summary>
This account is not allowed to claim UDs.
</details>
</li>
</ul>
</li>
<li>Wot - 40
<ul>
<li>
<details>
<summary>
<code>NotEnoughCertsToClaimMembership</code> - 0</summary>
Not enough certifications received to claim membership
</details>
</li>
<li>
<details>
<summary>
<code>DistanceNotOK</code> - 1</summary>
Distance has not been evaluated positively
</details>
</li>
<li>
<details>
<summary>
<code>IdtyNotAllowedToRequestMembership</code> - 2</summary>
Identity not allowed to request membership
</details>
</li>
<li>
<details>
<summary>
<code>IdtyNotAllowedToRenewMembership</code> - 3</summary>
Identity not allowed to renew membership
</details>
</li>
<li>
<details>
<summary>
<code>IdtyCreationPeriodNotRespected</code> - 4</summary>
Identity creation period not respected
</details>
</li>
<li>
<details>
<summary>
<code>NotEnoughReceivedCertsToCreateIdty</code> - 5</summary>
Not enough received certifications to create identity
</details>
</li>
<li>
<details>
<summary>
<code>MaxEmittedCertsReached</code> - 6</summary>
Max number of emitted certs reached
</details>
</li>
<li>
<details>
<summary>
<code>NotAllowedToChangeIdtyAddress</code> - 7</summary>
Not allowed to change identity address
</details>
</li>
<li>
<details>
<summary>
<code>NotAllowedToRemoveIdty</code> - 8</summary>
Not allowed to remove identity
</details>
</li>
<li>
<details>
<summary>
<code>IssuerCanNotEmitCert</code> - 9</summary>
Issuer can not emit cert because it is not validated
</details>
</li>
<li>
<details>
<summary>
<code>CertToUndefined</code> - 10</summary>
Can not issue cert to identity without membership or pending membership
</details>
</li>
<li>
<details>
<summary>
<code>IdtyNotFound</code> - 11</summary>
Issuer or receiver not found
</details>
</li>
</ul>
</li>
<li>Identity - 41
<ul>
<li>
<details>
<summary>
<code>IdtyAlreadyConfirmed</code> - 0</summary>
Identity already confirmed
</details>
</li>
<li>
<details>
<summary>
<code>IdtyAlreadyCreated</code> - 1</summary>
Identity already created
</details>
</li>
<li>
<details>
<summary>
<code>IdtyAlreadyValidated</code> - 2</summary>
Identity already validated
</details>
</li>
<li>
<details>
<summary>
<code>IdtyCreationNotAllowed</code> - 3</summary>
You are not allowed to create a new identity now
</details>
</li>
<li>
<details>
<summary>
<code>IdtyIndexNotFound</code> - 4</summary>
Identity index not found
</details>
</li>
<li>
<details>
<summary>
<code>IdtyNameAlreadyExist</code> - 5</summary>
Identity name already exists
</details>
</li>
<li>
<details>
<summary>
<code>IdtyNameInvalid</code> - 6</summary>
Invalid identity name
</details>
</li>
<li>
<details>
<summary>
<code>IdtyNotConfirmedByOwner</code> - 7</summary>
Identity not confirmed by its owner
</details>
</li>
<li>
<details>
<summary>
<code>IdtyNotFound</code> - 8</summary>
Identity not found
</details>
</li>
<li>
<details>
<summary>
<code>IdtyNotMember</code> - 9</summary>
Identity not member
</details>
</li>
<li>
<details>
<summary>
<code>IdtyNotValidated</code> - 10</summary>
Identity not validated
</details>
</li>
<li>
<details>
<summary>
<code>IdtyNotYetRenewable</code> - 11</summary>
Identity not yet renewable
</details>
</li>
<li>
<details>
<summary>
<code>InvalidSignature</code> - 12</summary>
payload signature is invalid
</details>
</li>
<li>
<details>
<summary>
<code>InvalidRevocationKey</code> - 13</summary>
Revocation key is invalid
</details>
</li>
<li>
<details>
<summary>
<code>NotRespectIdtyCreationPeriod</code> - 14</summary>
Identity creation period is not respected
</details>
</li>
<li>
<details>
<summary>
<code>NotSameIdtyName</code> - 15</summary>
Not the same identity name
</details>
</li>
<li>
<details>
<summary>
<code>OwnerKeyAlreadyRecentlyChanged</code> - 16</summary>
Owner key already recently changed
</details>
</li>
<li>
<details>
<summary>
<code>OwnerKeyAlreadyUsed</code> - 17</summary>
Owner key already used
</details>
</li>
<li>
<details>
<summary>
<code>ProhibitedToRevertToAnOldKey</code> - 18</summary>
Prohibited to revert to an old key
</details>
</li>
<li>
<details>
<summary>
<code>RightAlreadyAdded</code> - 19</summary>
Right already added
</details>
</li>
<li>
<details>
<summary>
<code>RightNotExist</code> - 20</summary>
Right does not exist
</details>
</li>
</ul>
</li>
<li>Membership - 42
<ul>
<li>
<details>
<summary>
<code>IdtyIdNotFound</code> - 0</summary>
Identity id not found
</details>
</li>
<li>
<details>
<summary>
<code>MembershipAlreadyAcquired</code> - 1</summary>
Membership already acquired
</details>
</li>
<li>
<details>
<summary>
<code>MembershipAlreadyRequested</code> - 2</summary>
Membership already requested
</details>
</li>
<li>
<details>
<summary>
<code>MembershipNotFound</code> - 3</summary>
Membership not found
</details>
</li>
<li>
<details>
<summary>
<code>OriginNotAllowedToUseIdty</code> - 4</summary>
Origin not allowed to use this identity
</details>
</li>
<li>
<details>
<summary>
<code>MembershipRequestNotFound</code> - 5</summary>
Membership request not found
</details>
</li>
</ul>
</li>
<li>Cert - 43
<ul>
<li>
<details>
<summary>
<code>CannotCertifySelf</code> - 0</summary>
An identity cannot certify itself
</details>
</li>
<li>
<details>
<summary>
<code>IssuedTooManyCert</code> - 1</summary>
This identity has already issued the maximum number of certifications
</details>
</li>
<li>
<details>
<summary>
<code>IssuerNotFound</code> - 2</summary>
Issuer not found
</details>
</li>
<li>
<details>
<summary>
<code>NotEnoughCertReceived</code> - 3</summary>
Not enough certifications received
</details>
</li>
<li>
<details>
<summary>
<code>NotRespectCertPeriod</code> - 4</summary>
This identity has already issued a certification too recently
</details>
</li>
</ul>
</li>
<li>Distance - 44
<ul>
<li>
<details>
<summary>
<code>AlreadyInEvaluation</code> - 0</summary>
</details>
</li>
<li>
<details>
<summary>
<code>CannotReserve</code> - 1</summary>
</details>
</li>
<li>
<details>
<summary>
<code>ManyEvaluationsByAuthor</code> - 2</summary>
</details>
</li>
<li>
<details>
<summary>
<code>ManyEvaluationsInBlock</code> - 3</summary>
</details>
</li>
<li>
<details>
<summary>
<code>NoAuthor</code> - 4</summary>
</details>
</li>
<li>
<details>
<summary>
<code>NoIdentity</code> - 5</summary>
</details>
</li>
<li>
<details>
<summary>
<code>NonEligibleForEvaluation</code> - 6</summary>
</details>
</li>
<li>
<details>
<summary>
<code>QueueFull</code> - 7</summary>
</details>
</li>
<li>
<details>
<summary>
<code>TooManyEvaluators</code> - 8</summary>
</details>
</li>
<li>
<details>
<summary>
<code>WrongResultLength</code> - 9</summary>
</details>
</li>
</ul>
</li>
<li>SmithSubWot - 50
<ul>
<li>
<details>
<summary>
<code>NotEnoughCertsToClaimMembership</code> - 0</summary>
Not enough certifications received to claim membership
</details>
</li>
<li>
<details>
<summary>
<code>DistanceNotOK</code> - 1</summary>
Distance has not been evaluated positively
</details>
</li>
<li>
<details>
<summary>
<code>IdtyNotAllowedToRequestMembership</code> - 2</summary>
Identity not allowed to request membership
</details>
</li>
<li>
<details>
<summary>
<code>IdtyNotAllowedToRenewMembership</code> - 3</summary>
Identity not allowed to renew membership
</details>
</li>
<li>
<details>
<summary>
<code>IdtyCreationPeriodNotRespected</code> - 4</summary>
Identity creation period not respected
</details>
</li>
<li>
<details>
<summary>
<code>NotEnoughReceivedCertsToCreateIdty</code> - 5</summary>
Not enough received certifications to create identity
</details>
</li>
<li>
<details>
<summary>
<code>MaxEmittedCertsReached</code> - 6</summary>
Max number of emitted certs reached
</details>
</li>
<li>
<details>
<summary>
<code>NotAllowedToChangeIdtyAddress</code> - 7</summary>
Not allowed to change identity address
</details>
</li>
<li>
<details>
<summary>
<code>NotAllowedToRemoveIdty</code> - 8</summary>
Not allowed to remove identity
</details>
</li>
<li>
<details>
<summary>
<code>IssuerCanNotEmitCert</code> - 9</summary>
Issuer can not emit cert because it is not validated
</details>
</li>
<li>
<details>
<summary>
<code>CertToUndefined</code> - 10</summary>
Can not issue cert to identity without membership or pending membership
</details>
</li>
<li>
<details>
<summary>
<code>IdtyNotFound</code> - 11</summary>
Issuer or receiver not found
</details>
</li>
</ul>
</li>
<li>SmithMembership - 52
<ul>
<li>
<details>
<summary>
<code>IdtyIdNotFound</code> - 0</summary>
Identity id not found
</details>
</li>
<li>
<details>
<summary>
<code>MembershipAlreadyAcquired</code> - 1</summary>
Membership already acquired
</details>
</li>
<li>
<details>
<summary>
<code>MembershipAlreadyRequested</code> - 2</summary>
Membership already requested
</details>
</li>
<li>
<details>
<summary>
<code>MembershipNotFound</code> - 3</summary>
Membership not found
</details>
</li>
<li>
<details>
<summary>
<code>OriginNotAllowedToUseIdty</code> - 4</summary>
Origin not allowed to use this identity
</details>
</li>
<li>
<details>
<summary>
<code>MembershipRequestNotFound</code> - 5</summary>
Membership request not found
</details>
</li>
</ul>
</li>
<li>SmithCert - 53
<ul>
<li>
<details>
<summary>
<code>CannotCertifySelf</code> - 0</summary>
An identity cannot certify itself
</details>
</li>
<li>
<details>
<summary>
<code>IssuedTooManyCert</code> - 1</summary>
This identity has already issued the maximum number of certifications
</details>
</li>
<li>
<details>
<summary>
<code>IssuerNotFound</code> - 2</summary>
Issuer not found
</details>
</li>
<li>
<details>
<summary>
<code>NotEnoughCertReceived</code> - 3</summary>
Not enough certifications received
</details>
</li>
<li>
<details>
<summary>
<code>NotRespectCertPeriod</code> - 4</summary>
This identity has already issued a certification too recently
</details>
</li>
</ul>
</li>
<li>AtomicSwap - 60
<ul>
<li>
<details>
<summary>
<code>AlreadyExist</code> - 0</summary>
Swap already exists.
</details>
</li>
<li>
<details>
<summary>
<code>InvalidProof</code> - 1</summary>
Swap proof is invalid.
</details>
</li>
<li>
<details>
<summary>
<code>ProofTooLarge</code> - 2</summary>
Proof is too large.
</details>
</li>
<li>
<details>
<summary>
<code>SourceMismatch</code> - 3</summary>
Source does not match.
</details>
</li>
<li>
<details>
<summary>
<code>AlreadyClaimed</code> - 4</summary>
Swap has already been claimed.
</details>
</li>
<li>
<details>
<summary>
<code>NotExist</code> - 5</summary>
Swap does not exist.
</details>
</li>
<li>
<details>
<summary>
<code>ClaimActionMismatch</code> - 6</summary>
Claim action mismatch.
</details>
</li>
<li>
<details>
<summary>
<code>DurationNotPassed</code> - 7</summary>
Duration has not yet passed for the swap to be cancelled.
</details>
</li>
</ul>
</li>
<li>Multisig - 61
<ul>
<li>
<details>
<summary>
<code>MinimumThreshold</code> - 0</summary>
Threshold must be 2 or greater.
</details>
</li>
<li>
<details>
<summary>
<code>AlreadyApproved</code> - 1</summary>
Call is already approved by this signatory.
</details>
</li>
<li>
<details>
<summary>
<code>NoApprovalsNeeded</code> - 2</summary>
Call doesn't need any (more) approvals.
</details>
</li>
<li>
<details>
<summary>
<code>TooFewSignatories</code> - 3</summary>
There are too few signatories in the list.
</details>
</li>
<li>
<details>
<summary>
<code>TooManySignatories</code> - 4</summary>
There are too many signatories in the list.
</details>
</li>
<li>
<details>
<summary>
<code>SignatoriesOutOfOrder</code> - 5</summary>
The signatories were provided out of order; they should be ordered.
</details>
</li>
<li>
<details>
<summary>
<code>SenderInSignatories</code> - 6</summary>
The sender was contained in the other signatories; it shouldn't be.
</details>
</li>
<li>
<details>
<summary>
<code>NotFound</code> - 7</summary>
Multisig operation not found when attempting to cancel.
</details>
</li>
<li>
<details>
<summary>
<code>NotOwner</code> - 8</summary>
Only the account that originally created the multisig is able to cancel it.
</details>
</li>
<li>
<details>
<summary>
<code>NoTimepoint</code> - 9</summary>
No timepoint was given, yet the multisig operation is already underway.
</details>
</li>
<li>
<details>
<summary>
<code>WrongTimepoint</code> - 10</summary>
A different timepoint was given to the multisig operation that is underway.
</details>
</li>
<li>
<details>
<summary>
<code>UnexpectedTimepoint</code> - 11</summary>
A timepoint was given, yet no multisig operation is underway.
</details>
</li>
<li>
<details>
<summary>
<code>MaxWeightTooLow</code> - 12</summary>
The maximum weight information provided was too low.
</details>
</li>
<li>
<details>
<summary>
<code>AlreadyStored</code> - 13</summary>
The data to be stored is already stored.
</details>
</li>
</ul>
</li>
<li>ProvideRandomness - 62
<ul>
<li>
<details>
<summary>
<code>FullQueue</code> - 0</summary>
The queue is full, pleasy retry later
</details>
</li>
</ul>
</li>
<li>Proxy - 63
<ul>
<li>
<details>
<summary>
<code>TooMany</code> - 0</summary>
There are too many proxies registered or too many announcements pending.
</details>
</li>
<li>
<details>
<summary>
<code>NotFound</code> - 1</summary>
Proxy registration not found.
</details>
</li>
<li>
<details>
<summary>
<code>NotProxy</code> - 2</summary>
Sender is not a proxy of the account to be proxied.
</details>
</li>
<li>
<details>
<summary>
<code>Unproxyable</code> - 3</summary>
A call which is incompatible with the proxy type's filter was attempted.
</details>
</li>
<li>
<details>
<summary>
<code>Duplicate</code> - 4</summary>
Account is already a proxy.
</details>
</li>
<li>
<details>
<summary>
<code>NoPermission</code> - 5</summary>
Call may not be made by proxy because it may escalate its privileges.
</details>
</li>
<li>
<details>
<summary>
<code>Unannounced</code> - 6</summary>
Announcement, if made at all, was made too recently.
</details>
</li>
<li>
<details>
<summary>
<code>NoSelfProxy</code> - 7</summary>
Cannot add self as proxy.
</details>
</li>
</ul>
</li>
<li>Utility - 64
<ul>
<li>
<details>
<summary>
<code>TooManyCalls</code> - 0</summary>
Too many calls batched.
</details>
</li>
</ul>
</li>
<li>Treasury - 65
<ul>
<li>
<details>
<summary>
<code>InsufficientProposersBalance</code> - 0</summary>
Proposer's balance is too low.
</details>
</li>
<li>
<details>
<summary>
<code>InvalidIndex</code> - 1</summary>
No proposal or bounty at that index.
</details>
</li>
<li>
<details>
<summary>
<code>TooManyApprovals</code> - 2</summary>
Too many approvals in the queue.
</details>
</li>
<li>
<details>
<summary>
<code>InsufficientPermission</code> - 3</summary>
The spend origin is valid but the amount it is allowed to spend is lower than the
amount to be spent.
</details>
</li>
<li>
<details>
<summary>
<code>ProposalNotApproved</code> - 4</summary>
Proposal has not been approved.
</details>
</li>
</ul>
</li>
</ul>
\ No newline at end of file
# Runtime errors
There are **{{error_counter}}** errors from **{{ pallets | length }}** pallets.
<ul>
{% for pallet in pallets -%}
<li>{{ pallet.name }} - {{ pallet.index }}
<ul>
{% for error in pallet.errors -%}
<li>
<details>
<summary>
<code>{{ error.name }}</code> - {{ error.index }}</summary>
{{ error.documentation }}
</details>
</li>
{% endfor -%}
</ul>
</li>
{% endfor -%}
</ul>
\ No newline at end of file
......@@ -28,6 +28,7 @@ use tera::Tera;
const CALLS_DOC_FILEPATH: &str = "docs/api/runtime-calls.md";
const EVENTS_DOC_FILEPATH: &str = "docs/api/runtime-events.md";
const ERRORS_DOC_FILEPATH: &str = "docs/api/runtime-errors.md";
const TEMPLATES_GLOB: &str = "xtask/res/templates/*.md";
// define structs and implementations
......@@ -40,6 +41,7 @@ struct Pallet {
name: String,
calls: Vec<Call>,
events: Vec<Event>,
errors: Vec<ErroR>,
}
#[derive(Clone, Serialize)]
struct Call {
......@@ -65,6 +67,12 @@ struct EventParam {
name: String,
type_name: String,
}
#[derive(Clone, Serialize)]
struct ErroR {
documentation: String,
index: u8,
name: String,
}
impl Pallet {
fn new(
......@@ -72,6 +80,7 @@ impl Pallet {
name: String,
call_scale_type_def: &Option<scale_info::TypeDef<PortableForm>>,
event_scale_type_def: &Option<scale_info::TypeDef<PortableForm>>,
error_scale_type_def: &Option<scale_info::TypeDef<PortableForm>>,
) -> Result<Self> {
let calls = if let Some(call_scale_type_def) = call_scale_type_def {
if let scale_info::TypeDef::Variant(calls_enum) = call_scale_type_def {
......@@ -91,11 +100,21 @@ impl Pallet {
} else {
vec![]
};
let errors = if let Some(error_scale_type_def) = error_scale_type_def {
if let scale_info::TypeDef::Variant(errors_enum) = error_scale_type_def {
errors_enum.variants.iter().map(Into::into).collect()
} else {
bail!("Invalid metadata")
}
} else {
vec![]
};
Ok(Self {
index,
name,
calls,
events,
errors,
})
}
}
......@@ -116,7 +135,6 @@ impl From<&scale_info::Variant<PortableForm>> for Call {
}
}
}
impl From<&scale_info::Field<PortableForm>> for CallParam {
fn from(field: &scale_info::Field<PortableForm>) -> Self {
Self {
......@@ -136,7 +154,6 @@ impl From<&scale_info::Variant<PortableForm>> for Event {
}
}
}
impl From<&scale_info::Field<PortableForm>> for EventParam {
fn from(field: &scale_info::Field<PortableForm>) -> Self {
Self {
......@@ -146,6 +163,16 @@ impl From<&scale_info::Field<PortableForm>> for EventParam {
}
}
impl From<&scale_info::Variant<PortableForm>> for ErroR {
fn from(variant: &scale_info::Variant<PortableForm>) -> Self {
Self {
documentation: variant.docs.iter().cloned().collect::<Vec<_>>().join("\n"),
index: variant.index,
name: variant.name.to_owned(),
}
}
}
enum CallCategory {
Disabled,
Inherent,
......@@ -217,7 +244,7 @@ pub(super) fn gen_doc() -> Result<()> {
bail!("unsuported metadata version")
};
let (call_doc, event_doc) = print_runtime(runtime);
let (call_doc, event_doc, error_doc) = print_runtime(runtime);
let mut file = File::create(CALLS_DOC_FILEPATH)
.with_context(|| format!("Failed to create file '{}'", CALLS_DOC_FILEPATH))?;
......@@ -227,6 +254,10 @@ pub(super) fn gen_doc() -> Result<()> {
.with_context(|| format!("Failed to create file '{}'", EVENTS_DOC_FILEPATH))?;
file.write_all(event_doc.as_bytes())
.with_context(|| format!("Failed to write to file '{}'", EVENTS_DOC_FILEPATH))?;
let mut file = File::create(ERRORS_DOC_FILEPATH)
.with_context(|| format!("Failed to create file '{}'", ERRORS_DOC_FILEPATH))?;
file.write_all(error_doc.as_bytes())
.with_context(|| format!("Failed to write to file '{}'", ERRORS_DOC_FILEPATH))?;
Ok(())
}
......@@ -255,12 +286,22 @@ fn get_from_metadata_v14(
println!("{}: {} (0 events)", pallet.index, pallet.name);
None
};
let errors_type_def = if let Some(errors) = pallet.error {
let Some(errors_type) = metadata_v14.types.resolve(errors.ty.id) else {
bail!("Invalid metadata")
};
Some(errors_type.type_def.clone())
} else {
println!("{}: {} (0 errors)", pallet.index, pallet.name);
None
};
let pallet = Pallet::new(
pallet.index,
pallet.name.clone(),
&calls_type_def,
&events_type_def,
&errors_type_def,
)?;
println!(
......@@ -275,13 +316,19 @@ fn get_from_metadata_v14(
pallet.name,
pallet.events.len()
);
println!(
"{}: {} ({} errors)",
pallet.index,
pallet.name,
pallet.errors.len()
);
pallets.push(pallet);
}
Ok(pallets)
}
/// use template to render markdown file with runtime calls documentation
fn print_runtime(pallets: RuntimePallets) -> (String, String) {
fn print_runtime(pallets: RuntimePallets) -> (String, String, String) {
// init variables
let mut user_calls_counter = 0;
let user_calls_pallets: RuntimePallets = pallets
......@@ -340,6 +387,11 @@ fn print_runtime(pallets: RuntimePallets) -> (String, String) {
.iter()
.for_each(|pallet| event_counter += pallet.events.len());
let mut error_counter = 0;
pallets
.iter()
.for_each(|pallet| error_counter += pallet.errors.len());
// compile template
let tera = match Tera::new(TEMPLATES_GLOB) {
Ok(t) => t,
......@@ -363,12 +415,17 @@ fn print_runtime(pallets: RuntimePallets) -> (String, String) {
.expect("template error");
// render events
context.insert("pallets", &pallets);
context.insert("event_counter", &event_counter);
let event_doc = tera
.render("runtime-events.md", &context)
.expect("template error");
(call_doc, event_doc)
// render errors
context.insert("error_counter", &error_counter);
let error_doc = tera
.render("runtime-errors.md", &context)
.expect("template error");
(call_doc, event_doc, error_doc)
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment