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

also add runtime errors

parent 727eb6a5
No related branches found
No related tags found
1 merge request!204add runtime errors doc
Pipeline #34486 waiting for manual action
# 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