From 2aafea1d71d8c6d78e487ed5f97a436e34151a11 Mon Sep 17 00:00:00 2001 From: Hugo Trentesaux <hugo@trentesaux.fr> Date: Wed, 20 Dec 2023 12:58:54 +0100 Subject: [PATCH] update metadata and generated doc --- docs/api/runtime-calls.md | 33 ++++++++++++----- docs/api/runtime-errors.md | 74 ++++++++++++++++++++++++++++++++----- docs/api/runtime-events.md | 25 +++++++++---- resources/metadata.scale | Bin 132039 -> 132878 bytes 4 files changed, 107 insertions(+), 25 deletions(-) diff --git a/docs/api/runtime-calls.md b/docs/api/runtime-calls.md index e15a49ff9..4ed2a87ed 100644 --- a/docs/api/runtime-calls.md +++ b/docs/api/runtime-calls.md @@ -13,7 +13,7 @@ through on-chain governance mechanisms. ## User calls -There are **78** user calls from **23** pallets. +There are **79** user calls from **23** pallets. ### Account - 1 @@ -721,7 +721,7 @@ Link an account to an identity claim membership it must fullfill the requirements (certs, distance) -for main wot claim_membership is called automatically when validating identity +TODO #159 for main wot claim_membership is called automatically when distance is evaluated positively for smith wot, it means joining the authority members #### renew_membership - 2 @@ -777,7 +777,22 @@ The origin must be allow to certify. </details> -Request an identity to be evaluated +Request caller identity to be evaluated +positive evaluation will result in claim/renew membership +negative evaluation will result in slash for caller + +#### request_distance_evaluation_for - 4 + +<details><summary><code>request_distance_evaluation_for(target)</code></summary> + +```rust +target: T::IdtyIndex +``` +</details> + + +Request target identity to be evaluated +only possible for unvalidated identity #### update_evaluation - 1 @@ -790,6 +805,7 @@ computation_result: ComputationResult (Inherent) Push an evaluation result to the pool +this is called internally by validators (= inherent) #### force_update_evaluation - 2 @@ -802,20 +818,19 @@ computation_result: ComputationResult </details> -Push an evaluation result to the pool +Force push an evaluation result to the pool -#### force_set_distance_status - 3 +#### force_valid_distance_status - 3 -<details><summary><code>force_set_distance_status(identity, status)</code></summary> +<details><summary><code>force_valid_distance_status(identity)</code></summary> ```rust identity: <T as pallet_identity::Config>::IdtyIndex -status: Option<(<T as frame_system::Config>::AccountId, DistanceStatus)> ``` </details> -Set the distance evaluation status of an identity +Force set the distance evaluation status of an identity Removes the status if `status` is `None`. @@ -836,7 +851,7 @@ Removes the status if `status` is `None`. claim membership it must fullfill the requirements (certs, distance) -for main wot claim_membership is called automatically when validating identity +TODO #159 for main wot claim_membership is called automatically when distance is evaluated positively for smith wot, it means joining the authority members #### renew_membership - 2 diff --git a/docs/api/runtime-errors.md b/docs/api/runtime-errors.md index 5feb1cf03..5d52e4bbc 100644 --- a/docs/api/runtime-errors.md +++ b/docs/api/runtime-errors.md @@ -1,6 +1,6 @@ # Runtime errors -There are **186** errors from **37** pallets. +There are **194** errors from **37** pallets. <ul> <li>System - 0 @@ -740,6 +740,13 @@ Cannot issue a certification to a revoked identity Issuer or receiver not found. </details> </li> +<li> +<details> +<summary> +<code>NotEnoughCertsReceivedToRequestDistanceEvaluation</code> - 16</summary> +Not enough certs received to request distance evaluation. +</details> +</li> </ul> </li> <li>Identity - 41 @@ -818,7 +825,7 @@ Invalid revocation key. <details> <summary> <code>IssuerNotMember</code> - 10</summary> -Issuer is not member and can not perform this action +Issuer is not member and can not perform this action. </details> </li> <li> @@ -853,21 +860,28 @@ Reverting to an old key is prohibited. <details> <summary> <code>AlreadyRevoked</code> - 15</summary> -Already revoked +Already revoked. </details> </li> <li> <details> <summary> <code>CanNotRevokeUnconfirmed</code> - 16</summary> -Can not revoke identity that never was member +Can not revoke identity that never was member. </details> </li> <li> <details> <summary> <code>CanNotRevokeUnvalidated</code> - 17</summary> -Can not revoke identity that never was member +Can not revoke identity that never was member. +</details> +</li> +<li> +<details> +<summary> +<code>AccountNotExist</code> - 18</summary> +Cannot link to an inexisting account. </details> </li> </ul> @@ -969,31 +983,66 @@ No author for this block. <li> <details> <summary> -<code>NoIdentity</code> - 4</summary> +<code>CallerHasNoIdentity</code> - 4</summary> Caller has no identity. </details> </li> <li> <details> <summary> -<code>QueueFull</code> - 5</summary> +<code>CallerIdentityNotFound</code> - 5</summary> +Caller identity not found. +</details> +</li> +<li> +<details> +<summary> +<code>CallerNotMember</code> - 6</summary> +Caller not member. +</details> +</li> +<li> +<details> +<summary> +<code>TargetIdentityNotFound</code> - 7</summary> +Target identity not found. +</details> +</li> +<li> +<details> +<summary> +<code>QueueFull</code> - 8</summary> Evaluation queue is full. </details> </li> <li> <details> <summary> -<code>TooManyEvaluators</code> - 6</summary> +<code>TooManyEvaluators</code> - 9</summary> Too many evaluators in the current evaluation pool. </details> </li> <li> <details> <summary> -<code>WrongResultLength</code> - 7</summary> +<code>WrongResultLength</code> - 10</summary> Evaluation result has a wrong length. </details> </li> +<li> +<details> +<summary> +<code>DistanceRequestOnlyAllowedForUnvalidated</code> - 11</summary> +Targeted distance evaluation request is only possible for an unvalidated identity +</details> +</li> +<li> +<details> +<summary> +<code>ValidDistanceResultAlreadyAvailable</code> - 12</summary> +Can not request distance evaluation when a valid result has already been published recently +</details> +</li> </ul> </li> <li>SmithSubWot - 50 @@ -1110,6 +1159,13 @@ Cannot issue a certification to a revoked identity Issuer or receiver not found. </details> </li> +<li> +<details> +<summary> +<code>NotEnoughCertsReceivedToRequestDistanceEvaluation</code> - 16</summary> +Not enough certs received to request distance evaluation. +</details> +</li> </ul> </li> <li>SmithMembership - 52 diff --git a/docs/api/runtime-events.md b/docs/api/runtime-events.md index cd058e2b4..6a5a5766f 100644 --- a/docs/api/runtime-events.md +++ b/docs/api/runtime-events.md @@ -1,6 +1,6 @@ # Runtime events -There are **126** events from **37** pallets. +There are **127** events from **37** pallets. <ul> <li>System - 0 @@ -716,6 +716,18 @@ A member has been removed from the blacklist. member: T::MemberId ``` +</details> +</li> +<li> +<details> +<summary> +<code>MemberAddedToBlacklist(member)</code> - 6</summary> +A member has been blacklisted. + +```rust +member: T::MemberId +``` + </details> </li> </ul> @@ -1282,11 +1294,11 @@ who: T::AccountId <li> <details> <summary> -<code>EvaluationUpdated(evaluator)</code> - 1</summary> -A distance evaluation was updated. +<code>EvaluatedValid(idty_index)</code> - 1</summary> +Distance rule was found valid ```rust -evaluator: T::AccountId +idty_index: T::IdtyIndex ``` </details> @@ -1294,12 +1306,11 @@ evaluator: T::AccountId <li> <details> <summary> -<code>EvaluationStatusForced(idty_index, status)</code> - 2</summary> -A distance status was forced. +<code>EvaluatedInvalid(idty_index)</code> - 2</summary> +Distance rule was found invalid ```rust idty_index: T::IdtyIndex -status: Option<(<T as frame_system::Config>::AccountId, DistanceStatus)> ``` </details> diff --git a/resources/metadata.scale b/resources/metadata.scale index 60cf370fe64aecd0dc9bbdd157c56e90b5653228..4d9337c0598516f0e43d5730c9ced0abce0e5a1b 100644 GIT binary patch delta 8399 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 Q5-W34+4D+dS$hOo0plx@6951J delta 7726 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 -- GitLab