From 31f5d6bba4ce520ef7f87ff07aa56dea5a2e061b Mon Sep 17 00:00:00 2001 From: Transaction Science Date: Thu, 1 Oct 2026 11:10:54 -0400 Subject: [PATCH 1/2] smart-byte spec: governance, burns, and transfers between clusters cluster_state.md, rewritten. The state gains the cluster's identifier, its peers, its governance (delay, sequence number, pending changes), and the retired, exported and imported records. - Governance proposals change the registry and the peers. Each is sequence-numbered, needs approval from floor(2m/3)+1 of its electorate, and is time-locked by the cluster's delay. - A burn retires a byte for good. - A transition may name a destination cluster. The source's committing nodes certify the byte's state as it left. The destination checks the certificate and verifies the byte's full history itself. envelope_wire_format.md: the destination member, covered by the signature and the history hash. Frames rise within a cluster; a move to another cluster starts that cluster's count. Co-Authored-By: Claude Opus 5.5 --- smart-byte/spec/cluster_state.md | 244 ++++++++++++++++++++---- smart-byte/spec/envelope_wire_format.md | 18 +- 2 files changed, 216 insertions(+), 46 deletions(-) diff --git a/smart-byte/spec/cluster_state.md b/smart-byte/spec/cluster_state.md index 5e45c593e..cd68299a9 100644 --- a/smart-byte/spec/cluster_state.md +++ b/smart-byte/spec/cluster_state.md @@ -6,13 +6,19 @@ ## 1. What this section fixes -Treatise [§9.4](./treatise_v1_parts_I_II_III_combined.md) describes a frame as six steps. A node collects inputs, exchanges them with its peers, orders them, applies them to its state, hashes the result, and commits when a supermajority reports the same hash. §15 adds live issuance and §16 adds persistence. +Treatise [§9.4](./treatise_v1_parts_I_II_III_combined.md) describes a frame as six steps. A node collects inputs, exchanges them with its peers, orders them, applies them to its state, hashes the result, and commits when a supermajority reports the same hash. Other sections add to this: + +- §15 adds live issuance, and issuer governance. +- §11.3.3 adds transfers between clusters. +- §16 adds persistence. This section fixes what those sections leave open: - what the state is, byte for byte; - what each kind of input is; - the order inputs apply in, and every check each one must pass; +- how the registry and the peers change; +- how a byte is burned, and how it moves between clusters; - the hash a frame commits at. The supermajority commit itself is treatise §13. Encodings are canonical CBOR as [identity spec §2.3](./identity_and_key_rotation.md) defines it. Envelopes, provenances and transitions are as the [envelope wire format](./envelope_wire_format.md) defines them. @@ -24,14 +30,26 @@ The supermajority commit itself is treatise §13. Encodings are canonical CBOR a ``` { "frame": uint: the next frame to apply, + "cluster": SAID: this cluster's identifier, + "peers": {cluster: {"keys": [bytes]}}, "registry": {issuer AID: [cargo type, ...]}, + "governance": {"delay": uint, "sequence": uint, "pending": [{"change", "effective"}, ...]}, "controllers": {AID: controller record}, - "bytes": {identity: byte record} + "bytes": {identity: byte record}, + "retired": {identity: retired record}, + "exported": {identity: export record}, + "imported": [32 bytes, ...] } ``` - **`frame`** is 0 at genesis. Applying frame *n* leaves *n* + 1. +- **`cluster`** is the cluster's identifier, chosen at genesis: conventionally the SAID of its founding membership. +- **`peers`** maps each cluster this one exchanges bytes with to the keys of that cluster's nodes, each with its algorithm identifier (`01` for Ed25519). A cluster is never its own peer. - **`registry`** maps each issuer, by controller AID, to the cargo types it may mint, in ascending order with each listed once. This is treatise §15.1's issuer registry. +- **`governance`** holds: + - the frames a change waits before it takes effect (`delay`); + - the sequence number the next proposal must carry; + - the accepted changes not yet in effect, in the order they were accepted (§4.5). - **`controllers`** holds a record for every controller whose key-event log the cluster has applied: ``` @@ -52,18 +70,28 @@ The supermajority commit itself is treatise §13. Encodings are canonical CBOR a { "issuer": AID: the issuer that minted it, "cargo": cargo, as the issuer attested it (envelope wire format §6), - "minted": uint: the frame it was minted in, + "minted": uint: the frame it was minted in, in the cluster that minted it, "owner": AID: its current owner, "history_hash": 32 bytes: its current history hash (envelope wire format §5) } ``` +- **`retired`** holds every byte burned here (§4.7): the byte record as it was, plus `"retired"`, the frame it was burned in. +- **`exported`** holds every byte that left for another cluster and has not come back (§5). The record holds: + - the byte's issuer, cargo and mint frame; + - its owner and history hash as it left; + - `"destination"`, the cluster it left for; + - `"exported"`, the frame it left in. +- **`imported`** lists, in ascending order, the digests of the export certificates this cluster has imported (§5). + Every map above has exactly the members shown. The encoding is canonical: map keys sort by their encoded bytes. So two nodes holding the same state write the same bytes, whatever order they hold it in. +A burned or exported byte's identity stays in the state. So the cluster never mints that identity again, and never moves it, except to take back an exported byte that returns (§5). + The state holds a byte's current owner and history hash, not its envelope. Holders keep their own envelopes, and the cluster vouches for the current state (treatise §10.3). Two other things are not consensus state: - **The dissent log** is kept by each node for itself (treatise §14). -- **Joule cost** is reported beside the state, not in it (§7). +- **Joule cost** is reported beside the state, not in it (§8). --- @@ -72,14 +100,23 @@ The state holds a byte's current owner and history hash, not its envelope. Holde An input is the canonical encoding of a map with one member, which names the input's class: ``` -{"key_event": {"event": key event, "signatures": [{"index": uint, "signature": bytes}, ...]}} -{"mint": provenance} -{"transfer": {"byte": identity, "transition": transition}} +{"key_event": {"event": key event, "signatures": [{"index": uint, "signature": bytes}, ...]}} +{"governance": {"proposal": proposal, "approvals": [{"approver": AID, "signature": controller signature}, ...]}} +{"mint": provenance} +{"import": {"certificate": certificate, "envelope": envelope, "logs": [[signed event, ...], ...]}} +{"transfer": {"byte": identity, "transition": transition}} +{"burn": {"byte": identity, "previous_history_hash": 32 bytes, "owner": AID, "frame": uint, "signature": controller signature}} ``` - **`key_event`** carries one event of a controller's key-event log (identity spec §3.3), and the signatures over its canonical encoding (§3.5). +- **`governance`** carries a proposed change and the issuers' approvals of it (§4.5). - **`mint`** is an issuer's provenance (envelope wire format §3). Its `d` is the new byte's identity. -- **`transfer`** is a transition (envelope wire format §5) of the byte that `byte` names. +- **`import`** brings a byte from another cluster. It carries: + - the source cluster's certificate; + - the byte's envelope; + - the key-event logs that verify its history: each log is the signed events `{"event", "signatures"}` of one controller, from its inception (§5). +- **`transfer`** is a transition (envelope wire format §5) of the byte that `byte` names. A transition with a `destination` moves the byte to another cluster (§5). +- **`burn`** is an owner's retirement of a byte (§4.7). An input's **digest** is the BLAKE3-256 of its bytes. @@ -89,22 +126,30 @@ An input's **digest** is the BLAKE3-256 of its bytes. A node applies a frame's inputs to a state whose `frame` is *F*: -1. **Duplicates.** Identical inputs, byte for byte, are one input. -2. **Order.** Inputs apply by class: key events first, then mints, then transfers. Inputs that name no class come last. Within a class, inputs apply in ascending bytewise order of their digests (treatise §9.4 step 4). -3. **Application.** Each input is checked against the state as the inputs before it left it. An input that fails a check is **dropped**. It changes nothing, and every honest node drops the same inputs. The checks, in order, are given in the subsections below. -4. **Advance.** `frame` becomes *F* + 1. +1. **Governance.** Pending changes whose `effective` frame is *F* take effect, in the order they were accepted (§4.5), and leave `pending`. +2. **Duplicates.** Identical inputs, byte for byte, are one input. +3. **Order.** Inputs apply by class: key events, governance, mints, imports, transfers, burns. Inputs that name no class come last. Within a class, inputs apply in ascending bytewise order of their digests (treatise §9.4 step 4). +4. **Application.** Each input is checked against the state as the inputs before it left it. An input that fails a check is **dropped**. It changes nothing, and every honest node drops the same inputs. The checks, in order, are given in the subsections below. +5. **Advance.** `frame` becomes *F* + 1. -Key events apply first so that a rotation retires its old keys before anything signed with them is checked. Mints apply before transfers so that a byte can be minted and transferred in one frame (treatise §15.3). +The class order has reasons: + +- Key events apply first, so that a rotation retires its old keys before anything signed with them is checked. +- Mints and imports apply before transfers, so that a byte can arrive and move in one frame (treatise §15.3). +- Burns apply last, so that a byte can be returned to its issuer and burned in one frame. ### 4.1 Decoding For every input: - **The bytes are canonical** (identity spec §2.3). The canonical-encoding classes apply. -- **They are a map with one text member**, naming `key_event`, `mint` or `transfer`. Otherwise: `malformed_input`. +- **They are a map with one text member**, naming one of the six classes. Otherwise: `malformed_input`. - **The member's value is exactly its class's form,** with each part in its own encoding: - - A `key_event` holds exactly `event` and `signatures`. The signatures are an array of `{index, signature}` (`malformed_input` otherwise). The event is then decoded as identity spec §4 step 1 decodes one, with that step's error classes: `rec` and `dip` are refused before anything else is read. - - A `mint` holds exactly a provenance, and a `transfer` exactly `{byte, transition}`. Otherwise: `malformed_input`. + - A `key_event` holds exactly `event` and `signatures`. The signatures are an array of `{index, signature}`. The event is then decoded as identity spec §4 step 1 decodes one, with that step's error classes: `rec` and `dip` are refused before anything else is read. + - An `import` holds exactly `certificate`, `envelope` and `logs`. The certificate must have exactly its form, and the logs must be arrays of `{event, signatures}`. The envelope and the logged events are decoded when the import is applied (§5). + - A `governance`, `mint`, `transfer` or `burn` input holds exactly its body. + + Any other shape: `malformed_input`. ### 4.2 Key events @@ -117,8 +162,8 @@ An accepted event replaces the controller's record with the key state it establi 1. The provenance's `d` is its SAID. Otherwise: `said_mismatch`. 2. The registry lists the issuer for the cargo's type. Otherwise: `issuer_not_registered`. -3. The issuer's signature passes the signature check of §4.5, over the attested fields (envelope wire format §3). -4. The cluster holds no byte with this identity. Otherwise: `duplicate_byte`. +3. The issuer's signature passes the signature check of §4.8, over the attested fields (envelope wire format §3). +4. The cluster has never held a byte with this identity — live, retired or exported. Otherwise: `duplicate_byte`. The byte is then held with these values: @@ -132,19 +177,81 @@ The byte is then held with these values: ### 4.4 Transfers -1. The cluster holds the byte. Otherwise: `unknown_byte`. +1. The cluster holds the byte. Otherwise: + - `byte_retired`, if it was burned; + - `byte_exported`, if it left; + - `unknown_byte`, if neither. 2. The transition's `frame` is *F*. Otherwise: `wrong_frame`. 3. Its `previous_history_hash` is the byte's history hash. Otherwise: `broken_history_chain`. 4. Its `from` is the byte's owner. Otherwise: `not_current_owner`. -5. The owner's signature passes the signature check of §4.5, over the transition's signed fields (envelope wire format §5). +5. A `destination`, if the transition has one, is a peer. Otherwise: `unknown_cluster`. +6. The owner's signature passes the signature check of §4.8, over the transition's signed fields (envelope wire format §5). -The byte's owner becomes `to`, and its history hash advances (envelope wire format §5). +A transition with no `destination` makes `to` the byte's owner and advances its history hash. One with a `destination` exports the byte (§5). A byte's history hash moves with every transfer. Two transfers of one byte in one frame therefore cannot both apply: the second continues a history that has moved on (`broken_history_chain`). So a byte moves at most once a frame, as treatise §8.4 requires. -### 4.5 Signatures +### 4.5 Governance -A mint or transfer signature passes when all of the following hold: +A proposal is: + +``` +{"cluster": SAID, "sequence": uint, "change": change} +``` + +The change is one of: + +``` +{"action": "add_issuer", "cargo_type": uint, "issuer": AID} +{"action": "remove_issuer", "cargo_type": uint, "issuer": AID} +{"action": "set_peer", "peer": SAID, "keys": [bytes]} +{"action": "remove_peer", "peer": SAID} +``` + +Each approval is an issuer's controller signature over the proposal's canonical encoding. The checks, in order: + +1. The proposal's `cluster` is this one. Otherwise: `wrong_cluster`. +2. Its `sequence` is the governance sequence number. Otherwise: `stale_sequence`. +3. The change makes sense: + - **`add_issuer`:** the issuer is not registered for the type. Otherwise: `already_registered`. + - **`remove_issuer`:** it is registered. Otherwise: `not_registered`. + - **`set_peer`:** the peer is not this cluster (`wrong_cluster`). Its keys are at least one (`invalid_threshold`), none twice (`duplicate_key`), each an Ed25519 key (`malformed_verifying_key`). + - **`remove_peer`:** the cluster is a peer. Otherwise: `not_a_peer`. +4. The change has an **electorate**: the issuers who may approve it. + - **Registry changes:** the issuers registered for its cargo type. When no issuer is registered for the type, the electorate is every issuer. + - **Peer changes:** every issuer. + - **Removals:** an issuer being removed is never in the electorate, so it cannot block its own removal. + + If the electorate is empty: `no_electorate`. +5. Each approval, in order, is by a member of the electorate (`not_an_elector`). No member approves twice (`duplicate_approver`). The approval's signature passes the signature check of §4.8. +6. The approvals number at least ⌊2*m*/3⌋+1, for an electorate of *m*. Otherwise: `below_quorum`. + +An accepted proposal advances the governance sequence number, so it can never be applied twice. Its change joins `pending` with `effective` *F* + 1 + `delay`. The change takes effect at the start of that frame (§4 step 1): + +- an issuer is added to or removed from its cargo type, and an issuer left with no types leaves the registry; +- a peer is set or removed. + +The delay is the time-lock treatise §15.5 asks for. Everyone can see an accepted change before it takes effect. + +### 4.6 Imports + +See §5. + +### 4.7 Burns + +1. The cluster holds the byte, exactly as for a transfer (§4.4 step 1). +2. The burn's `frame` is *F*. Otherwise: `wrong_frame`. +3. Its `previous_history_hash` is the byte's history hash. Otherwise: `broken_history_chain`. +4. Its `owner` is the byte's owner. Otherwise: `not_current_owner`. +5. The owner's signature passes the signature check of §4.8, over the canonical encoding of `{"burn": identity, "previous_history_hash", "owner", "frame"}`. + +The byte moves from `bytes` to `retired`, with the frame it was burned in. + +Redemption (treatise §15.4) is a transfer to the issuer followed by the issuer's burn. Both can happen in one frame. + +### 4.8 Signatures + +A signature on a mint, transfer, burn or approval passes when all of the following hold: 1. The cluster holds the signer's key-event log. Otherwise: `unknown_controller`. 2. The signature names the establishment event in force, the record's `establishment`. Otherwise: `establishment_not_in_force`. @@ -154,15 +261,65 @@ A signature made under keys since rotated away still verifies offline (envelope --- -## 5. The state hash +## 5. Transfers between clusters + +A byte moves from cluster A to cluster B in three steps (treatise §11.3.3). + +**Export.** In A, the owner signs a transition naming B as its `destination`, and A applies it as a transfer (§4.4). The byte leaves `bytes` for `exported`, with its new owner and history hash. + +**Certificate.** Once the frame commits, A's committing nodes sign the canonical encoding of the **statement**: + +``` +{"source": A, "byte": identity, "export": export record} +``` + +A **certificate** is that statement and the nodes' signatures: + +``` +{"statement": statement, "signatures": [{"index": uint, "signature": bytes}, ...]} +``` + +Each signature is by node `index` in B's peer entry for A: the algorithm identifier, then the signature. A certificate's **digest** is the BLAKE3-256 of its statement. + +**Import.** In B, the import checks, in order: + +1. The export's `destination` is B. Otherwise: `wrong_cluster`. +2. The `source` is a peer. Otherwise: `unknown_cluster`. +3. The signatures are a valid controller signature over the statement (envelope wire format §7). The key state is the source's node keys, with a threshold of ⌊2*n*/3⌋+1 for *n* keys, the supermajority treatise §13.1 commits at. +4. B has not imported this certificate before. Otherwise: `duplicate_import`. +5. B does not hold the byte. Otherwise: + - `duplicate_byte`, if B holds it live; + - `byte_retired`, if B burned it. + + A byte B exported, now returning, is allowed. +6. The envelope decodes, with the envelope classes. Its identity, issuer, cargo, current owner and history hash must be the export's. Otherwise: `certificate_mismatch`. +7. Each log replays as identity spec §4 describes, with that section's classes. Together they give the key states the envelope's signatures name. +8. The envelope verifies against those key states, end to end (envelope wire format §8), with that section's classes. + +The byte is then held in B, with the export's issuer, cargo, mint frame, owner and history hash. It leaves `exported` if it had left B before, and the certificate's digest joins `imported`. + +So B relies on A for one thing: the byte's state at the moment it left, which A's supermajority certifies. B verifies the byte's history itself, from its envelope and its controllers' logs. That includes the issuer's attestation. Whether the issuer was registered when it minted is A's testimony, carried by the certificate (treatise §15.5). + +--- + +## 6. The state hash After a frame, each node computes the **state hash**: BLAKE3-256 of the state's canonical encoding, new frame number included (treatise §9.4 step 6). The frame commits when ⌊2*n*/3⌋+1 of the cluster's *n* nodes report the same hash (treatise §13). --- -## 6. Genesis and persistence +## 7. Genesis and persistence -**Genesis.** A cluster's genesis state has frame 0, its registry, no controllers and no bytes. Genesis controllers and genesis bytes arrive as frame 0's inputs: genesis issuance is minting at frame 0 (treatise §15.4). A node seeds itself with its cluster's genesis state before it applies anything (treatise §16.3). +**Genesis.** A cluster's genesis state has: + +- frame 0; +- its identifier; +- its peers, with their nodes' keys; +- its registry; +- its governance delay, with sequence 0 and nothing pending; +- no controllers, no bytes, nothing retired, exported or imported. + +Genesis controllers and genesis bytes arrive as frame 0's inputs: genesis issuance is minting at frame 0 (treatise §15.4). A node seeds itself with its cluster's genesis state before it applies anything (treatise §16.3). **Checkpoint.** A checkpoint is the state's canonical encoding, so its digest is the state hash at its frame (treatise §16.1). @@ -177,45 +334,54 @@ The log format is not normative. The checkpoint is, because its digest is the st --- -## 7. Where this departs from the treatise +## 8. Where this departs from the treatise -**A byte's identity is its provenance's SAID, with no frame number in it.** Treatise §15.2 step 3 folds the mint frame into the identity. A mint replayed in a later frame then gets a new identity and issues a second byte: §19.3 concedes it becomes "a distinct (and possibly duplicate) byte". Here a replayed mint has an identity the cluster already holds, and is refused in every frame. The issuer's nonce keeps distinct mints distinct. +**A byte's identity is its provenance's SAID, with no frame number in it.** Treatise §15.2 step 3 folds the mint frame into the identity. A mint replayed in a later frame then gets a new identity and issues a second byte: §19.3 concedes it becomes "a distinct (and possibly duplicate) byte". Here a replayed mint has an identity the cluster already holds, and is refused in every frame. The issuer's nonce keeps distinct mints distinct. A burned or exported identity is held as well, so a burn never reopens it. **Parties are controller AIDs.** The registry names issuers by AID, and every signature is checked against the key state its controller's log has put in force. An issuer that rotates its keys keeps its registration. So the issuer key rotation that treatise §15.5 defers is a key-event log's ordinary rotation. -**Key events are inputs.** They form a third class, applied before mints and transfers. Treatise §9.1 lists "attestation requests" among a frame's inputs. +**Key events and governance are inputs.** They are classes of their own, applied before mints and transfers. Treatise §9.1 lists "attestation requests" among a frame's inputs, and §15.1 asks for issuer-set changes to be inputs. + +**Governance covers the peers as well as the registry.** Both are voted on by issuers, the cluster's governing body in §15.1. + +**An import certificate certifies the byte's state; the history travels as its envelope.** Treatise §11.3.3 has the source cluster sign the byte's full history. Here the source signs the byte's state as it left, and the history hash in that state commits to the full history, which the destination verifies from the envelope. **Joule cost is not state.** Measured energy differs from node to node (treatise §8.6), so no hash can agree on it, and the estimate function §8.6 calls for is not yet specified. A byte's joule cost travels in its envelope and in nodes' reports. -**Not yet specified:** - -- changes to the registry after genesis (treatise §15.1 fixes it at genesis); -- burning or redeeming bytes; -- transfers between clusters (treatise §11.3.3). +**Not specified here: cluster membership.** This section does not cover how nodes join and leave a cluster, or how clusters split and merge (treatise §11.2, §11.3.2). The state machine starts where membership is settled: a cluster's own nodes are outside its state, and its peers' nodes are in it, changed by governance. --- -## 8. Error classes +## 9. Error classes A dropped input reports one of these classes: - **Decoding:** the canonical-encoding classes (identity spec §2.3) and `malformed_input`. - **Key events:** identity spec §4's classes, plus `controller_exists` and `unknown_controller`. +- **Governance:** + - `wrong_cluster`, `stale_sequence`, `already_registered`, `not_registered` and `not_a_peer`; + - `no_electorate`, `not_an_elector`, `duplicate_approver` and `below_quorum`; + - for a peer's keys, `invalid_threshold`, `duplicate_key` and `malformed_verifying_key`. - **Mints:** `said_mismatch`, `issuer_not_registered` and `duplicate_byte`. -- **Transfers:** `unknown_byte`, `wrong_frame`, `broken_history_chain` and `not_current_owner`. +- **Imports:** + - `wrong_cluster`, `unknown_cluster`, `duplicate_import`, `duplicate_byte`, `byte_retired` and `certificate_mismatch`; + - the envelope classes (envelope wire format §8); + - the key-event-log classes. +- **Transfers and burns:** `unknown_byte`, `byte_retired`, `byte_exported`, `wrong_frame`, `broken_history_chain`, `not_current_owner` and `unknown_cluster`. - **Signatures:** `unknown_controller`, `establishment_not_in_force`, and the controller-signature classes of envelope wire format §7. --- -## 9. Implementation and vectors +## 10. Implementation and vectors `smart-byte-rs/crates/smart-byte-state` implements this section: - `state.rs`: the state and its hash; - `input.rs`: inputs; - `frame.rs`: the frame transition; +- `certificate.rs`: export certificates; - `store.rs`: checkpoint and log. -`smart-byte-rs/crates/smart-byte-lockstep` runs a cluster of these state machines under the supermajority commit. +`smart-byte-rs/crates/smart-byte-lockstep` runs a cluster of these state machines under the supermajority commit, and has the committing nodes sign each frame's export certificates. -The conformance vectors are `../conformance/v1/state_vectors.json`. Each one starts from a genesis state and gives every frame's inputs, the result of each input, and the state and state hash each frame reaches. +The conformance vectors are `../conformance/v1/state_vectors.json`. Each one starts from a genesis state and gives every frame's inputs, the result of each input, and the state and state hash each frame reaches. The vectors on transfers between clusters are state-019 to state-021 and state-023. They run clusters A and B, of four nodes each, and in state-021 a peer D of three. diff --git a/smart-byte/spec/envelope_wire_format.md b/smart-byte/spec/envelope_wire_format.md index d5b257b52..6cefbe09f 100644 --- a/smart-byte/spec/envelope_wire_format.md +++ b/smart-byte/spec/envelope_wire_format.md @@ -62,13 +62,15 @@ The envelope's `d` is the SAID of the whole envelope map, computed per identity "from": the current owner's AID, "to": the new owner's AID, "frame": uint: the lockstep frame the transfer is applied in, + "destination": SAID: the cluster the byte moves to — only on a transfer between clusters, "signature": from's controller signature (§7) } ``` -- `from` signs the canonical encoding of `{"byte", "previous_history_hash", "from", "to", "frame"}`, where `byte` is the identity's SAID text (treatise §8.4). The signature is therefore scoped to exactly one transition, of exactly one byte, at exactly one point in its history. -- The **history hash** (treatise §10.1) starts as the identity's 32 digest bytes. Each transition advances it: `next = BLAKE3(previous ‖ payload)`, where `payload` is the canonical encoding of the transition's `{"from", "to", "frame", "signature"}`. -- Frames rise strictly along the chain: a byte is transferred at most once per frame (treatise §8.4). +- `from` signs the canonical encoding of `{"byte", "previous_history_hash", "from", "to", "frame"}`, where `byte` is the identity's SAID text (treatise §8.4). A transfer between clusters also has `"destination"` in the map it signs. The signature is therefore scoped to exactly one transition, of exactly one byte, at exactly one point in its history, and to where the byte goes. +- The **history hash** (treatise §10.1) starts as the identity's 32 digest bytes. Each transition advances it: `next = BLAKE3(previous ‖ payload)`. The `payload` is the canonical encoding of the transition's `{"from", "to", "frame", "signature"}`, with `"destination"` included when the transition has one. +- `destination` is present only on a transition that moves the byte to another cluster (treatise §11.3.3; cluster state spec §5). A transition within a cluster has no such member. +- **Frames rise strictly within a cluster:** a byte is transferred at most once per frame (treatise §8.4). Each cluster counts its own frames, so the transition after one with a `destination` is in another cluster's count and is not compared with it. --- @@ -128,7 +130,7 @@ A verifier holding an envelope's bytes and its parties' key-event logs runs trea 3. **Chain.** For each transition in order: - its `previous_history_hash` equals the running history hash; - its `from` is the current owner (the recipient, for the first transition); - - its frame exceeds the previous transition's; + - its frame exceeds the previous transition's, unless the previous transition named a `destination`; - its signature is valid. The running hash then advances, and `to` becomes the owner. @@ -142,23 +144,25 @@ Each failure has an error class, shared with the conformance pack: - `signature_invalid`, `below_threshold`, `duplicate_key_index`, `key_index_out_of_range`, `algorithm_mismatch`, `unsupported_algorithm`, `malformed_signature`, `malformed_verifying_key` — a signature rule fails. - `broken_history_chain` — a transition does not continue the history it follows. - `not_current_owner` — a transition is not signed away by the current owner. -- `frame_not_increasing` — two transitions share a frame, or frames go backwards. +- `frame_not_increasing` — two transitions in one cluster share a frame, or frames go backwards. - A canonical-encoding class (identity spec §2.3) — the bytes are not canonical. --- ## 9. What the cluster decides -Three questions depend on cluster state rather than on the envelope: +Four questions depend on cluster state rather than on the envelope: - whether the issuer is registered for the cargo type (treatise §10.2 step 3, §15); - whether a signer's establishment event was the one in force at a transition's frame; +- whether the byte may enter or leave the cluster — a destination it peers with, a source it trusts (treatise §11.3.3); - how nodes account the joule cost (treatise §8.6). -The cluster answers these when it applies a mint or transfer (treatise §9.4 step 5). The [cluster state](./cluster_state.md) section fixes how: +The cluster answers these when it applies a mint, import or transfer (treatise §9.4 step 5). The [cluster state](./cluster_state.md) section fixes how: - the registry lists the issuers for each cargo type; - a signature must name the establishment event in force when it is applied; +- a byte moves only between peer clusters, on a certificate from the source cluster's nodes; - joule cost is reported beside the cluster state, not in it. --- -- 2.54.0 (Apple Git-157) From f9fbd5a3af76984c87e7cb09e0e700b7d231641d Mon Sep 17 00:00:00 2001 From: Transaction Science Date: Thu, 1 Oct 2026 11:48:44 -0400 Subject: [PATCH 2/2] smart-byte: governance, burns and transfers between clusters, with vectors smart-byte-state implements cluster_state.md: - governance: Change and Proposal, electorates, the quorum, the time lock; - burns: Burn and the retired record; - exports: ExportStatement and Certificate; - the import checks. smart-byte-core: Transition::sign_export and the destination member. The envelope compares frames within a cluster only. smart-byte-lockstep: the committing nodes sign each committed frame's export certificates. The certificates are built from a committing node's report, never from a node whose state diverged. state_vectors.json grows to 23 vectors (state-013 to state-023 new, state-011 extended) and is regenerated in place; v1 is DRAFT. Every new check has a vector that fails an implementation leaving it out. The README documents the 14 new error classes, and the regeneration log records the change. crosscheck/verify_v1.py implements governance, burns, exports and imports from the spec text. It reproduces every vector, 117 of them, both plain and under -O. Co-Authored-By: Claude Opus 5.5 --- smart-byte/conformance/README.md | 22 +- .../conformance/crosscheck/verify_v1.py | 326 +- smart-byte/conformance/v1/regeneration.md | 52 + smart-byte/conformance/v1/state_vectors.json | 10029 +++++++++++++++- smart-byte/smart-byte-rs/Cargo.lock | 1 + .../smart-byte-conformance/src/states.rs | 598 +- .../smart-byte-conformance/tests/pack.rs | 82 + .../crates/smart-byte-core/src/envelope.rs | 42 +- .../crates/smart-byte-core/src/ownership.rs | 49 +- .../crates/smart-byte-core/src/sign.rs | 9 + .../crates/smart-byte-lockstep/Cargo.toml | 3 + .../crates/smart-byte-lockstep/src/lib.rs | 157 +- .../smart-byte-state/src/certificate.rs | 80 + .../crates/smart-byte-state/src/demo.rs | 10 +- .../crates/smart-byte-state/src/frame.rs | 422 +- .../crates/smart-byte-state/src/input.rs | 388 +- .../crates/smart-byte-state/src/lib.rs | 15 +- .../crates/smart-byte-state/src/state.rs | 178 +- .../crates/smart-byte-state/tests/frames.rs | 6 +- .../smart-byte-state/tests/lifecycle.rs | 491 + 20 files changed, 12703 insertions(+), 257 deletions(-) create mode 100644 smart-byte/smart-byte-rs/crates/smart-byte-state/src/certificate.rs create mode 100644 smart-byte/smart-byte-rs/crates/smart-byte-state/tests/lifecycle.rs diff --git a/smart-byte/conformance/README.md b/smart-byte/conformance/README.md index ec16a2207..b09cafcbe 100644 --- a/smart-byte/conformance/README.md +++ b/smart-byte/conformance/README.md @@ -30,7 +30,7 @@ A pack for a given version contains eight JSON files plus `regeneration.md`: | `signature_vectors.json` | Ed25519 over the messages Smart Byte signs, verified strictly (RFC 8032) | | `kel_vectors.json` | Key-event logs: inception, rotation, interaction, thresholds (identity §3, §4) | | `envelope_vectors.json` | Envelopes decoded and verified against the logs' key states (envelope wire format) | -| `state_vectors.json` | The cluster state machine: frames of inputs, their results, the state and its hash (cluster state) | +| `state_vectors.json` | The cluster state machine: frames of inputs, their results, the state and its hash — governance, burns and transfers between clusters included (cluster state) | | `lockstep_vectors.json` | Supermajority commit, frame outcomes, dissent log (treatise §13, §14) | | `gossip_vectors.json` | Receiving SAID-addressed objects (identity §2.6; treatise §11.4, §21.4) | @@ -195,7 +195,21 @@ they are lowercase hex. | `issuer_not_registered` | a mint by an issuer the registry does not list for the cargo's type | | `duplicate_byte` | a mint of a byte the cluster already holds | | `unknown_byte` | a transfer of a byte the cluster does not hold | -| `wrong_frame` | a transfer whose transition names a frame other than the one applied | +| `wrong_frame` | a transfer or burn naming a frame other than the one applied | +| `byte_retired` | an input acting on a byte that was burned | +| `byte_exported` | an input acting on a byte that left for another cluster | +| `wrong_cluster` | an input addressed to another cluster, or a cluster named as its own peer | +| `unknown_cluster` | a byte sent to, or imported from, a cluster that is not a peer | +| `duplicate_import` | an export certificate the cluster has imported already | +| `certificate_mismatch` | an import whose envelope is not the byte its certificate certifies | +| `stale_sequence` | a proposal made against a governance sequence number other than the cluster's | +| `already_registered` | a proposal to add an issuer already registered for the cargo type | +| `not_registered` | a proposal to remove an issuer not registered for the cargo type | +| `not_a_peer` | a proposal to remove a cluster that is not a peer | +| `no_electorate` | a proposal no issuer can approve | +| `not_an_elector` | an approval by an issuer with no vote on the proposal | +| `duplicate_approver` | one issuer's approval listed twice | +| `below_quorum` | fewer approvals than a supermajority of the electorate | The reference implementation also reports `truncated`, `malformed`, `too_deep`, `not_a_map`, `missing_said_field` and `malformed_said` for @@ -270,6 +284,10 @@ The pack is the wire-format gate. It does not cover: - Witnessing, delegation and recovery. Spec v1 defines none of them, and a v1 verifier refuses events that use them; the reference implementation tests its extensions for them in its own suite. +- Cluster membership: how nodes join and leave a cluster, and how a cluster + splits or merges (treatise §11.2, §11.3.2). The state machine starts where + membership is settled: a cluster's own nodes are outside its state, and + its peers' nodes are in it. ## License diff --git a/smart-byte/conformance/crosscheck/verify_v1.py b/smart-byte/conformance/crosscheck/verify_v1.py index edd77274d..3b685dc77 100644 --- a/smart-byte/conformance/crosscheck/verify_v1.py +++ b/smart-byte/conformance/crosscheck/verify_v1.py @@ -672,16 +672,27 @@ def provenance_parts(obj, cls): return prov, controller_signature(prov["signature"], cls) +TRANSITION_MEMBERS = {"previous_history_hash", "from", "to", "frame", "signature"} + + def transition_parts(obj, cls): - """A transition (envelope wire format §5) of exactly its form: its - members and its signature.""" - tm = members(obj, {"previous_history_hash", "from", "to", "frame", "signature"}, cls) + """A transition (envelope wire format §5) of exactly its form — with a + `destination` only when it moves the byte to another cluster: its members + and its signature.""" + present = {k for k, _ in obj} if isinstance(obj, Map) else set() + tm = members(obj, TRANSITION_MEMBERS | ({"destination"} & present), cls) if not (isinstance(tm["previous_history_hash"], bytes) and len(tm["previous_history_hash"]) == 32 - and parse_aid(tm["from"]) and parse_aid(tm["to"]) and is_uint(tm["frame"])): + and parse_aid(tm["from"]) and parse_aid(tm["to"]) and is_uint(tm["frame"]) + and ("destination" not in tm or parse_said(tm["destination"]) is not None)): raise Refused(cls) return tm, controller_signature(tm["signature"], cls) +def with_destination(pairs, t): + """`pairs`, plus the transition's destination when it has one.""" + return Map(pairs + ([("destination", t["destination"])] if "destination" in t else [])) + + def attested(prov): """What the issuer signs: {cargo, issuer, nonce, recipient} (§3).""" return encode(Map([("cargo", prov["cargo"]), ("issuer", prov["issuer"]), @@ -690,14 +701,14 @@ def attested(prov): def transition_message(identity, t): """What an owner signs to transfer a byte (§5).""" - return encode(Map([("byte", identity), ("previous_history_hash", t["previous_history_hash"]), - ("from", t["from"]), ("to", t["to"]), ("frame", t["frame"])])) + return encode(with_destination([("byte", identity), ("previous_history_hash", t["previous_history_hash"]), + ("from", t["from"]), ("to", t["to"]), ("frame", t["frame"])], t)) def next_history(history, t): """The history hash after transition `t` (§5).""" - return blake3(history + encode(Map([("from", t["from"]), ("to", t["to"]), ("frame", t["frame"]), - ("signature", t["signature"])]))) + return blake3(history + encode(with_destination([("from", t["from"]), ("to", t["to"]), + ("frame", t["frame"]), ("signature", t["signature"])], t))) def decode_envelope(data): @@ -745,7 +756,8 @@ def verify_envelope(data, key_states): raise Refused("frame_not_increasing") signed_by(t["from"], signature, transition_message(identity, t)) history = next_history(history, t) - owner, last_frame = t["to"], t["frame"] + # Frames rise within a cluster; a move to another starts its count. + owner, last_frame = t["to"], (None if "destination" in t else t["frame"]) return {"identity": identity, "snapshot": env["d"], "issuer": prov["issuer"], "owner": owner, "history_hash": history.hex(), "transfers": len(chain)} @@ -753,39 +765,85 @@ def verify_envelope(data, key_states): # --------------------------------------------------------------------------- # The cluster state machine (cluster state spec) # -# A state is {"frame", "registry", "controllers", "bytes"}: the registry maps -# issuer AIDs to cargo-type lists, controllers and bytes map AIDs and -# identities to records holding their members as the spec names them. +# A state is a dict of the spec's members. Maps keyed by AID, identity or +# cluster are dicts of records; records are dicts of their members; cargo +# and change maps stay Maps, as they were decoded. # --------------------------------------------------------------------------- -STATE_MEMBERS = {"frame", "registry", "controllers", "bytes"} +STATE_MEMBERS = {"frame", "cluster", "peers", "registry", "governance", "controllers", "bytes", "retired", + "exported", "imported"} CONTROLLER_MEMBERS = {"establishment", "keys", "threshold", "next_keys", "next_threshold", "sequence", "last_event"} BYTE_MEMBERS = {"issuer", "cargo", "minted", "owner", "history_hash"} -INPUT_CLASSES = ("key_event", "mint", "transfer") +INPUT_CLASSES = ("key_event", "governance", "mint", "import", "transfer", "burn") + + +def record_map(r): + return Map(r.items()) def encode_state(st): """§2: the state's canonical encoding — the checkpoint.""" return encode(Map([ ("frame", st["frame"]), - ("registry", Map((aid, list(types)) for aid, types in st["registry"].items())), - ("controllers", Map((aid, Map(r.items())) for aid, r in st["controllers"].items())), - ("bytes", Map((i, Map(r.items())) for i, r in st["bytes"].items())), + ("cluster", st["cluster"]), + ("peers", Map((c, Map([("keys", keys)])) for c, keys in st["peers"].items())), + ("registry", Map((aid, sorted(types)) for aid, types in st["registry"].items())), + ("governance", Map([("delay", st["delay"]), ("sequence", st["sequence"]), + ("pending", [Map([("change", ch), ("effective", eff)]) for ch, eff in st["pending"]])])), + ("controllers", Map((aid, record_map(r)) for aid, r in st["controllers"].items())), + ("bytes", Map((i, record_map(r)) for i, r in st["bytes"].items())), + ("retired", Map((i, record_map(r)) for i, r in st["retired"].items())), + ("exported", Map((i, record_map(r)) for i, r in st["exported"].items())), + ("imported", sorted(st["imported"])), ])) def decode_state(data): """A state from its canonical encoding, which it must reproduce.""" - st = members(decode(data), STATE_MEMBERS, "malformed_state") - out = { - "frame": st["frame"], - "registry": {aid: list(types) for aid, types in st["registry"]}, - "controllers": {aid: dict(members(r, CONTROLLER_MEMBERS, "malformed_state")) for aid, r in st["controllers"]}, - "bytes": {i: dict(members(r, BYTE_MEMBERS, "malformed_state")) for i, r in st["bytes"]}, + m = members(decode(data), STATE_MEMBERS, "malformed_state") + gov = members(m["governance"], {"delay", "sequence", "pending"}, "malformed_state") + st = { + "frame": m["frame"], + "cluster": m["cluster"], + "peers": {c: dict(members(p, {"keys"}, "malformed_state"))["keys"] for c, p in m["peers"]}, + "registry": {aid: list(types) for aid, types in m["registry"]}, + "delay": gov["delay"], + "sequence": gov["sequence"], + "pending": [(dict(p)["change"], dict(p)["effective"]) for p in gov["pending"]], + "controllers": {aid: dict(members(r, CONTROLLER_MEMBERS, "malformed_state")) for aid, r in m["controllers"]}, + "bytes": {i: dict(members(r, BYTE_MEMBERS, "malformed_state")) for i, r in m["bytes"]}, + "retired": {i: dict(members(r, BYTE_MEMBERS | {"retired"}, "malformed_state")) for i, r in m["retired"]}, + "exported": {i: dict(members(r, BYTE_MEMBERS | {"destination", "exported"}, "malformed_state")) + for i, r in m["exported"]}, + "imported": list(m["imported"]), } - check(encode_state(out) == data, "the state does not reproduce its encoding") - return out + check(encode_state(st) == data, "the state does not reproduce its encoding") + return st + + +def is_ed25519_key(key): + """An Ed25519 key a signature could verify under: 01, then 32 bytes that + decode to a point not of small order.""" + if not (isinstance(key, bytes) and len(key) == 33 and key[0] == ED25519): + return False + point = _decode_point(key[1:]) + return point is not None and not _small_order(point) + + +def change_parts(obj): + """A proposal's change (§4.5) of exactly its form.""" + action = dict(obj).get("action") if isinstance(obj, Map) else None + forms = {"add_issuer": {"action", "cargo_type", "issuer"}, "remove_issuer": {"action", "cargo_type", "issuer"}, + "set_peer": {"action", "peer", "keys"}, "remove_peer": {"action", "peer"}} + if action not in forms: + raise Refused("malformed_input") + ch = members(obj, forms[action], "malformed_input") + if ("cargo_type" in ch and not is_uint(ch["cargo_type"])) or ("issuer" in ch and parse_aid(ch["issuer"]) is None) \ + or ("peer" in ch and parse_said(ch["peer"]) is None) \ + or ("keys" in ch and not (isinstance(ch["keys"], list) and all(isinstance(k, bytes) for k in ch["keys"]))): + raise Refused("malformed_input") + return ch def parse_input(data): @@ -805,14 +863,55 @@ def parse_input(data): sigs = signature_list(ke["signatures"], "malformed_input") event_bytes = encode(ke["event"]) return cls, (decode_event(event_bytes), event_bytes, sigs) + if cls == "governance": + g = members(body, {"proposal", "approvals"}, "malformed_input") + pr = members(g["proposal"], {"cluster", "sequence", "change"}, "malformed_input") + if parse_said(pr["cluster"]) is None or not is_uint(pr["sequence"]) or not isinstance(g["approvals"], list): + raise Refused("malformed_input") + change = change_parts(pr["change"]) + approvals = [] + for a in g["approvals"]: + ap = members(a, {"approver", "signature"}, "malformed_input") + if parse_aid(ap["approver"]) is None: + raise Refused("malformed_input") + approvals.append((ap["approver"], controller_signature(ap["signature"], "malformed_input"))) + return cls, (pr, change, encode(g["proposal"]), approvals) if cls == "mint": prov, sig = provenance_parts(body, "malformed_input") return cls, (body, prov, sig) - tr = members(body, {"byte", "transition"}, "malformed_input") - if parse_said(tr["byte"]) is None: + if cls == "import": + im = members(body, {"certificate", "envelope", "logs"}, "malformed_input") + cert = members(im["certificate"], {"statement", "signatures"}, "malformed_input") + stm = members(cert["statement"], {"source", "byte", "export"}, "malformed_input") + export = members(stm["export"], BYTE_MEMBERS | {"destination", "exported"}, "malformed_input") + cargo = members(export["cargo"], {"type", "bytes"}, "malformed_input") + if not (parse_said(stm["source"]) and parse_said(stm["byte"]) and parse_aid(export["issuer"]) + and is_uint(export["minted"]) and parse_aid(export["owner"]) + and isinstance(export["history_hash"], bytes) and len(export["history_hash"]) == 32 + and parse_said(export["destination"]) and is_uint(export["exported"]) + and is_uint(cargo["type"]) and isinstance(cargo["bytes"], bytes) + and isinstance(im["logs"], list) and all(isinstance(log, list) for log in im["logs"])): + raise Refused("malformed_input") + cert_sigs = signature_list(cert["signatures"], "malformed_input") + logs = [] + for log in im["logs"]: + events = [] + for e in log: + le = members(e, {"event", "signatures"}, "malformed_input") + events.append((le["event"], signature_list(le["signatures"], "malformed_input"))) + logs.append(events) + return cls, (stm, export, encode(cert["statement"]), cert_sigs, im["envelope"], logs) + if cls == "transfer": + tr = members(body, {"byte", "transition"}, "malformed_input") + if parse_said(tr["byte"]) is None: + raise Refused("malformed_input") + t, sig = transition_parts(tr["transition"], "malformed_input") + return cls, (tr["byte"], t, sig) + b = members(body, {"byte", "previous_history_hash", "owner", "frame", "signature"}, "malformed_input") + if not (parse_said(b["byte"]) and isinstance(b["previous_history_hash"], bytes) + and len(b["previous_history_hash"]) == 32 and parse_aid(b["owner"]) and is_uint(b["frame"])): raise Refused("malformed_input") - t, sig = transition_parts(tr["transition"], "malformed_input") - return cls, (tr["byte"], t, sig) + return cls, (b, controller_signature(b["signature"], "malformed_input")) except Refused as e: return cls, e @@ -832,7 +931,7 @@ def record_of(state): def signed_in_force(st, signer, signature, message): - """§4.5: a signature by `signer` under the establishment event in force.""" + """§4.8: a signature by `signer` under the establishment event in force.""" establishment, sigs = signature r = st["controllers"].get(signer) if r is None: @@ -844,8 +943,133 @@ def signed_in_force(st, signer, signature, message): raise Refused(err) +def live(st, identity): + """The live record of a byte, or why there is none (§4.4 step 1).""" + if identity in st["bytes"]: + return st["bytes"][identity] + if identity in st["retired"]: + raise Refused("byte_retired") + if identity in st["exported"]: + raise Refused("byte_exported") + raise Refused("unknown_byte") + + +def supermajority(n): + return 2 * n // 3 + 1 + + +def apply_governance(st, pr, change, message, approvals): + """§4.5.""" + if pr["cluster"] != st["cluster"]: + raise Refused("wrong_cluster") + if pr["sequence"] != st["sequence"]: + raise Refused("stale_sequence") + action, target = change["action"], None + registered = lambda issuer, t: t in st["registry"].get(issuer, []) + if action == "add_issuer": + if registered(change["issuer"], change["cargo_type"]): + raise Refused("already_registered") + elif action == "remove_issuer": + if not registered(change["issuer"], change["cargo_type"]): + raise Refused("not_registered") + target = change["issuer"] + elif action == "set_peer": + if change["peer"] == st["cluster"]: + raise Refused("wrong_cluster") + if not change["keys"]: + raise Refused("invalid_threshold") + for i, k in enumerate(change["keys"]): + if k in change["keys"][:i]: + raise Refused("duplicate_key") + if not is_ed25519_key(k): + raise Refused("malformed_verifying_key") + elif change["peer"] not in st["peers"]: + raise Refused("not_a_peer") + every = {a for a in st["registry"] if a != target} + if action in ("add_issuer", "remove_issuer"): + of_type = {a for a, types in st["registry"].items() if change["cargo_type"] in types and a != target} + electorate = of_type or every + else: + electorate = every + if not electorate: + raise Refused("no_electorate") + seen = set() + for approver, signature in approvals: + if approver not in electorate: + raise Refused("not_an_elector") + if approver in seen: + raise Refused("duplicate_approver") + seen.add(approver) + signed_in_force(st, approver, signature, message) + if len(seen) < supermajority(len(electorate)): + raise Refused("below_quorum") + st["sequence"] += 1 + st["pending"].append((pr["change"], st["frame"] + 1 + st["delay"])) + + +def enact_pending(st): + """§4 step 1: changes in force from this frame take effect, in order.""" + due = [ch for ch, eff in st["pending"] if eff == st["frame"]] + st["pending"] = [(ch, eff) for ch, eff in st["pending"] if eff != st["frame"]] + for ch_map in due: + ch = dict(ch_map) + if ch["action"] == "add_issuer": + types = st["registry"].setdefault(ch["issuer"], []) + if ch["cargo_type"] not in types: + types.append(ch["cargo_type"]) + elif ch["action"] == "remove_issuer": + types = st["registry"].get(ch["issuer"], []) + if ch["cargo_type"] in types: + types.remove(ch["cargo_type"]) + if not types: + st["registry"].pop(ch["issuer"], None) + elif ch["action"] == "set_peer": + st["peers"][ch["peer"]] = ch["keys"] + else: + st["peers"].pop(ch["peer"], None) + + +def apply_import(st, stm, export, statement_bytes, cert_sigs, envelope, logs): + """§5: a byte from another cluster.""" + if export["destination"] != st["cluster"]: + raise Refused("wrong_cluster") + keys = st["peers"].get(stm["source"]) + if keys is None: + raise Refused("unknown_cluster") + err = verify_indexed(keys, supermajority(len(keys)), statement_bytes, cert_sigs) + if err: + raise Refused(err) + digest = blake3(statement_bytes) + if digest in st["imported"]: + raise Refused("duplicate_import") + if stm["byte"] in st["bytes"]: + raise Refused("duplicate_byte") + if stm["byte"] in st["retired"]: + raise Refused("byte_retired") + env_bytes = encode(envelope) + env, prov, _, chain = decode_envelope(env_bytes) + owner, history = prov["recipient"], parse_said(prov["d"]) + for t, _ in chain: + owner, history = t["to"], next_history(history, t) + if (prov["d"], history, owner, prov["issuer"], encode(prov["cargo"])) != \ + (stm["byte"], export["history_hash"], export["owner"], export["issuer"], encode(export["cargo"])): + raise Refused("certificate_mismatch") + key_states = {} + for log in logs: + try: + state = replay([(encode(event), sigs) for event, sigs in log]) + except LogRefused as r: + raise Refused(r.cls) from None + for x in state["establishments"]: + key_states[(state["i"], x["sequence"])] = (x["keys"], x["threshold"]) + verify_envelope(env_bytes, key_states) + st["exported"].pop(stm["byte"], None) + st["bytes"][stm["byte"]] = {f: export[f] for f in BYTE_MEMBERS} + st["imported"].append(digest) + + def apply_input(st, cls, parts): - """§4.2-§4.4: apply one decoded input, or raise Refused leaving the state + """§4.2-§4.7: apply one decoded input, or raise Refused leaving the state as it was.""" if cls == "key_event": e, data, sigs = parts @@ -856,6 +1080,8 @@ def apply_input(st, cls, parts): raise Refused("unknown_controller") state = kel_step(None if held is None else kel_state_of(e["i"], held), e, data, sigs) st["controllers"][e["i"]] = record_of(state) + elif cls == "governance": + apply_governance(st, *parts) elif cls == "mint": obj, prov, sig = parts if derive(obj, "d")[1] != parse_said(prov["d"]): @@ -863,30 +1089,54 @@ def apply_input(st, cls, parts): if dict(prov["cargo"])["type"] not in st["registry"].get(prov["issuer"], []): raise Refused("issuer_not_registered") signed_in_force(st, prov["issuer"], sig, attested(prov)) - if prov["d"] in st["bytes"]: + if any(prov["d"] in st[m] for m in ("bytes", "retired", "exported")): raise Refused("duplicate_byte") st["bytes"][prov["d"]] = {"issuer": prov["issuer"], "cargo": prov["cargo"], "minted": st["frame"], "owner": prov["recipient"], "history_hash": parse_said(prov["d"])} - else: + elif cls == "import": + apply_import(st, *parts) + elif cls == "transfer": identity, t, sig = parts - b = st["bytes"].get(identity) - if b is None: - raise Refused("unknown_byte") + b = live(st, identity) if t["frame"] != st["frame"]: raise Refused("wrong_frame") if t["previous_history_hash"] != b["history_hash"]: raise Refused("broken_history_chain") if t["from"] != b["owner"]: raise Refused("not_current_owner") + if "destination" in t and t["destination"] not in st["peers"]: + raise Refused("unknown_cluster") signed_in_force(st, t["from"], sig, transition_message(identity, t)) - b["owner"], b["history_hash"] = t["to"], next_history(b["history_hash"], t) + history = next_history(b["history_hash"], t) + if "destination" in t: + del st["bytes"][identity] + st["exported"][identity] = dict(b, owner=t["to"], history_hash=history, + destination=t["destination"], exported=st["frame"]) + else: + b["owner"], b["history_hash"] = t["to"], history + else: + burn, sig = parts + b = live(st, burn["byte"]) + if burn["frame"] != st["frame"]: + raise Refused("wrong_frame") + if burn["previous_history_hash"] != b["history_hash"]: + raise Refused("broken_history_chain") + if burn["owner"] != b["owner"]: + raise Refused("not_current_owner") + message = encode(Map([("burn", burn["byte"]), ("previous_history_hash", burn["previous_history_hash"]), + ("owner", burn["owner"]), ("frame", burn["frame"])])) + signed_in_force(st, burn["owner"], sig, message) + del st["bytes"][burn["byte"]] + st["retired"][burn["byte"]] = dict(b, retired=st["frame"]) def apply_frame(st, inputs): """§4: one result per distinct input, in the order they apply; the frame number advances.""" + enact_pending(st) distinct = {blake3(b): b for b in inputs} - rank = {"key_event": 0, "mint": 1, "transfer": 2, None: 3} + rank = {c: i for i, c in enumerate(INPUT_CLASSES)} + rank[None] = len(INPUT_CLASSES) ordered = sorted(((*parse_input(b), digest) for digest, b in distinct.items()), key=lambda x: (rank[x[0]], x[2])) results = [] diff --git a/smart-byte/conformance/v1/regeneration.md b/smart-byte/conformance/v1/regeneration.md index d69774733..6d73dfff4 100644 --- a/smart-byte/conformance/v1/regeneration.md +++ b/smart-byte/conformance/v1/regeneration.md @@ -99,6 +99,9 @@ and the byte that passes between them. - kel-002's interaction anchors env-001's identity. - state-001's founding frame holds kel-001 to kel-003's inceptions and env-001's mint, so the byte the cluster mints is env-001's. +- state-019 and state-020 are two clusters exchanging that byte. The export + each records is the statement the other imports, under its nodes' + certificate. - Every envelope vector is checked against the key states the accepted logs it names establish. Both checkers enforce this: a log that fails takes the envelope vectors that rely on it down with it. @@ -119,6 +122,55 @@ this document planned do not exist. ## Editorial change log +### 2026-10-01 — governance, burns, and transfers between clusters + +`state_vectors.json` grows to 23 vectors. The cluster state machine now +covers everything its spec had left open. Every check the new rules add has +a vector that fails an implementation leaving it out. That includes the +quorum and certificate thresholds, which an electorate of three and a peer of +three nodes tell apart from a simple majority. It also includes the class +order, wherever two classes can touch one byte in one frame. + +**Governance** (state-013 to state-017, and state-022). Registry and peer changes are +proposals, approved by a supermajority of the issuers entitled to vote. They +are numbered against replay, and take effect after the cluster's time-lock +delay (treatise §15.1, §15.5). An issuer being removed has no vote, so it +cannot block its own removal, even as its type's only issuer, when every +other issuer votes. A registry with no issuers can never change. + +**Burns** (state-018). The owner retires a byte under its own signature, and +its identity stays held, so no transfer or replayed mint revives it. Redemption is a return to the +issuer and the issuer's burn, in one frame. + +**Transfers between clusters** (state-019 to state-021, and state-023): + +- **Export.** A transition may name a destination cluster. Its signature and + history hash cover it. +- **Certificate.** The source cluster's nodes certify the byte's state as it + left. +- **Import.** The destination checks the certificate against a supermajority + of its peer's node keys. It then verifies the byte's full history itself, + from its envelope and its controllers' logs. Each certificate is imported + once. +- **The vectors** run clusters A and B, with four nodes each, through a round + trip A → B → A, and every refusal along the way. Each member of a + certificate's export has its own mismatch case. An import meets the byte + live, then burned, in state-023. + +**Also changed:** + +- **The envelope's frame rule.** Frames rise within a cluster, and the frame + after a move to another cluster is in that cluster's own count. Requiring + frames to rise along the whole chain would have refused every byte that + came back to a cluster with a lower frame count. +- **The state** gains the cluster's identifier, its peers, governance, and + the retired, exported and imported records. Every state vector's state + and hash change with it; v1 is DRAFT, so they are regenerated in place. +- **Lockstep nodes** sign the certificates for a committed frame's exports, + as the committing nodes applied the frame. +- **state-011** names `melt` as the class there is not, now that `burn` is + one. It adds malformed burn, governance and import inputs. + ### 2026-10-01 — the cluster state machine, and its vectors The pack gains `state_vectors.json`: 12 vectors, each a genesis state and diff --git a/smart-byte/conformance/v1/state_vectors.json b/smart-byte/conformance/v1/state_vectors.json index 6faaf742d..7fdee1ad4 100644 --- a/smart-byte/conformance/v1/state_vectors.json +++ b/smart-byte/conformance/v1/state_vectors.json @@ -6,15 +6,25 @@ "state": { "bytes": {}, "frame": 0, + "peers": {}, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "retired": {}, + "exported": {}, + "imported": [], "registry": { "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ 1 ] }, + "governance": { + "delay": 0, + "pending": [], + "sequence": 0 + }, "controllers": {} }, - "cbor_hex": "a4656279746573a0656672616d6500687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016b636f6e74726f6c6c657273a0", - "state_hash": "5ffc1570b9c9ba18a0d930a20b8d23c0dbbeb55dc6b9320b964e7b6e39ca46a9" + "cbor_hex": "aa656279746573a0656672616d6500657065657273a067636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616772657469726564a0686578706f72746564a068696d706f7274656480687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016a676f7665726e616e6365a36564656c6179006770656e64696e67806873657175656e6365006b636f6e74726f6c6c657273a0", + "state_hash": "2581be8db9de04335c3ad38210a8371f07672f8e0e0343b1d7fff20dc3fd4ebe" }, "frames": [ { @@ -207,11 +217,21 @@ } }, "frame": 1, + "peers": {}, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "retired": {}, + "exported": {}, + "imported": [], "registry": { "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ 1 ] }, + "governance": { + "delay": 0, + "pending": [], + "sequence": 0 + }, "controllers": { "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": { "keys": [ @@ -268,8 +288,8 @@ } } }, - "expected_state_cbor_hex": "a4656279746573a1783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771a565636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656f776e65727835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371666d696e746564006c686973746f72795f686173685820c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f656672616d6501687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016b636f6e74726f6c6c657273a378354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c640178354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a7367676932746371a7646b65797383582101f4ff420feb4040a73e51713a44f9966476c755e8e2d18b82677f8ff7a839afe25821019b54b13b505ae2ddb12e49d8e10ed93725167ab9a0a77803538fc69858cdb0e25821015c26708ee23779ee7b628241cc1735ed1ba4527639d7383bbc0ad9aa6295f5356873657175656e636500696e6578745f6b6579738378354566636634337a73353636667164356a6c6b786d62716e7632737274676b34357568656e667063347035787a666b78377264766d617835457561616d34796e79667278706d7869796f6770756d67336d366264623473356a6967736c7776336f716e703267737776346275717835456c6c33716b713268706e7769726e346d366867756c706833326c6f6f69657636653568677374326f6335633566366a69776a6a71697468726573686f6c64026a6c6173745f6576656e7478354571656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c64027835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161a7646b657973815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c6873657175656e636500696e6578745f6b65797381783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e71697468726573686f6c64016a6c6173745f6576656e747835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616d65737461626c6973686d656e74006e6e6578745f7468726573686f6c6401", - "expected_state_hash": "4fe4147b95ea410622bf93eb7e017cf2d0c6149c1e07518d62e4f299a41e6f52" + "expected_state_cbor_hex": "aa656279746573a1783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771a565636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656f776e65727835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371666d696e746564006c686973746f72795f686173685820c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f656672616d6501657065657273a067636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616772657469726564a0686578706f72746564a068696d706f7274656480687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016a676f7665726e616e6365a36564656c6179006770656e64696e67806873657175656e6365006b636f6e74726f6c6c657273a378354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c640178354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a7367676932746371a7646b65797383582101f4ff420feb4040a73e51713a44f9966476c755e8e2d18b82677f8ff7a839afe25821019b54b13b505ae2ddb12e49d8e10ed93725167ab9a0a77803538fc69858cdb0e25821015c26708ee23779ee7b628241cc1735ed1ba4527639d7383bbc0ad9aa6295f5356873657175656e636500696e6578745f6b6579738378354566636634337a73353636667164356a6c6b786d62716e7632737274676b34357568656e667063347035787a666b78377264766d617835457561616d34796e79667278706d7869796f6770756d67336d366264623473356a6967736c7776336f716e703267737776346275717835456c6c33716b713268706e7769726e346d366867756c706833326c6f6f69657636653568677374326f6335633566366a69776a6a71697468726573686f6c64026a6c6173745f6576656e7478354571656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c64027835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161a7646b657973815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c6873657175656e636500696e6578745f6b65797381783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e71697468726573686f6c64016a6c6173745f6576656e747835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616d65737461626c6973686d656e74006e6e6578745f7468726573686f6c6401", + "expected_state_hash": "e3133214b726e331a9a275639f8d7d91d4a37971957c21dadacc5ad00711fa12" }, { "frame": 1, @@ -327,11 +347,21 @@ } }, "frame": 2, + "peers": {}, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "retired": {}, + "exported": {}, + "imported": [], "registry": { "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ 1 ] }, + "governance": { + "delay": 0, + "pending": [], + "sequence": 0 + }, "controllers": { "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": { "keys": [ @@ -388,8 +418,8 @@ } } }, - "expected_state_cbor_hex": "a4656279746573a1783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771a565636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656f776e657278354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371666d696e746564006c686973746f72795f68617368582071ad09543d4b94f5ec2f82c45cbf322b999cc9ba87df199332a22dcc25474fa8656672616d6502687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016b636f6e74726f6c6c657273a378354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c640178354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a7367676932746371a7646b65797383582101f4ff420feb4040a73e51713a44f9966476c755e8e2d18b82677f8ff7a839afe25821019b54b13b505ae2ddb12e49d8e10ed93725167ab9a0a77803538fc69858cdb0e25821015c26708ee23779ee7b628241cc1735ed1ba4527639d7383bbc0ad9aa6295f5356873657175656e636500696e6578745f6b6579738378354566636634337a73353636667164356a6c6b786d62716e7632737274676b34357568656e667063347035787a666b78377264766d617835457561616d34796e79667278706d7869796f6770756d67336d366264623473356a6967736c7776336f716e703267737776346275717835456c6c33716b713268706e7769726e346d366867756c706833326c6f6f69657636653568677374326f6335633566366a69776a6a71697468726573686f6c64026a6c6173745f6576656e7478354571656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c64027835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161a7646b657973815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c6873657175656e636500696e6578745f6b65797381783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e71697468726573686f6c64016a6c6173745f6576656e747835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616d65737461626c6973686d656e74006e6e6578745f7468726573686f6c6401", - "expected_state_hash": "5485f797d11fa5f000bbff664b99010de39b5dde6f0efd63a100928926d01602" + "expected_state_cbor_hex": "aa656279746573a1783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771a565636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656f776e657278354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371666d696e746564006c686973746f72795f68617368582071ad09543d4b94f5ec2f82c45cbf322b999cc9ba87df199332a22dcc25474fa8656672616d6502657065657273a067636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616772657469726564a0686578706f72746564a068696d706f7274656480687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016a676f7665726e616e6365a36564656c6179006770656e64696e67806873657175656e6365006b636f6e74726f6c6c657273a378354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c640178354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a7367676932746371a7646b65797383582101f4ff420feb4040a73e51713a44f9966476c755e8e2d18b82677f8ff7a839afe25821019b54b13b505ae2ddb12e49d8e10ed93725167ab9a0a77803538fc69858cdb0e25821015c26708ee23779ee7b628241cc1735ed1ba4527639d7383bbc0ad9aa6295f5356873657175656e636500696e6578745f6b6579738378354566636634337a73353636667164356a6c6b786d62716e7632737274676b34357568656e667063347035787a666b78377264766d617835457561616d34796e79667278706d7869796f6770756d67336d366264623473356a6967736c7776336f716e703267737776346275717835456c6c33716b713268706e7769726e346d366867756c706833326c6f6f69657636653568677374326f6335633566366a69776a6a71697468726573686f6c64026a6c6173745f6576656e7478354571656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c64027835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161a7646b657973815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c6873657175656e636500696e6578745f6b65797381783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e71697468726573686f6c64016a6c6173745f6576656e747835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616d65737461626c6973686d656e74006e6e6578745f7468726573686f6c6401", + "expected_state_hash": "a710e6722606e186008235a9578156734cd69254f7d9b395a3053383b16e3717" }, { "frame": 2, @@ -492,11 +522,21 @@ } }, "frame": 3, + "peers": {}, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "retired": {}, + "exported": {}, + "imported": [], "registry": { "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ 1 ] }, + "governance": { + "delay": 0, + "pending": [], + "sequence": 0 + }, "controllers": { "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": { "keys": [ @@ -553,8 +593,8 @@ } } }, - "expected_state_cbor_hex": "a4656279746573a1783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771a565636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656f776e65727835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371666d696e746564006c686973746f72795f6861736858208e0f2aaf2f32ae40113be980a00b41585ce7aad447d0881067c4f6d4915d18e8656672616d6503687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016b636f6e74726f6c6c657273a378354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c640178354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a7367676932746371a7646b65797383582101f4ff420feb4040a73e51713a44f9966476c755e8e2d18b82677f8ff7a839afe25821019b54b13b505ae2ddb12e49d8e10ed93725167ab9a0a77803538fc69858cdb0e25821015c26708ee23779ee7b628241cc1735ed1ba4527639d7383bbc0ad9aa6295f5356873657175656e636500696e6578745f6b6579738378354566636634337a73353636667164356a6c6b786d62716e7632737274676b34357568656e667063347035787a666b78377264766d617835457561616d34796e79667278706d7869796f6770756d67336d366264623473356a6967736c7776336f716e703267737776346275717835456c6c33716b713268706e7769726e346d366867756c706833326c6f6f69657636653568677374326f6335633566366a69776a6a71697468726573686f6c64026a6c6173745f6576656e7478354571656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c64027835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161a7646b657973815821012354b51b90e2fe316f648ff7456178869ba360edee56635d0676fd54a9227ef06873657175656e636501696e6578745f6b657973817835453634356c6e637a6271367a726e7273617171356e6375686d76737773346773646a6e63346877767573666c617235767465793471697468726573686f6c64016a6c6173745f6576656e7478354561736a6665376836616c6f616d656437326b3636357273366137656b6a726b6b6e69336666656c6e7474676d336b6e6a703578616d65737461626c6973686d656e74016e6e6578745f7468726573686f6c6401", - "expected_state_hash": "fbc38bc7a3196c3a2d7c04bb97827a40cd4c837ee7ebef6eed94c84aca4fec82" + "expected_state_cbor_hex": "aa656279746573a1783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771a565636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656f776e65727835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371666d696e746564006c686973746f72795f6861736858208e0f2aaf2f32ae40113be980a00b41585ce7aad447d0881067c4f6d4915d18e8656672616d6503657065657273a067636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616772657469726564a0686578706f72746564a068696d706f7274656480687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016a676f7665726e616e6365a36564656c6179006770656e64696e67806873657175656e6365006b636f6e74726f6c6c657273a378354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c640178354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a7367676932746371a7646b65797383582101f4ff420feb4040a73e51713a44f9966476c755e8e2d18b82677f8ff7a839afe25821019b54b13b505ae2ddb12e49d8e10ed93725167ab9a0a77803538fc69858cdb0e25821015c26708ee23779ee7b628241cc1735ed1ba4527639d7383bbc0ad9aa6295f5356873657175656e636500696e6578745f6b6579738378354566636634337a73353636667164356a6c6b786d62716e7632737274676b34357568656e667063347035787a666b78377264766d617835457561616d34796e79667278706d7869796f6770756d67336d366264623473356a6967736c7776336f716e703267737776346275717835456c6c33716b713268706e7769726e346d366867756c706833326c6f6f69657636653568677374326f6335633566366a69776a6a71697468726573686f6c64026a6c6173745f6576656e7478354571656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c64027835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161a7646b657973815821012354b51b90e2fe316f648ff7456178869ba360edee56635d0676fd54a9227ef06873657175656e636501696e6578745f6b657973817835453634356c6e637a6271367a726e7273617171356e6375686d76737773346773646a6e63346877767573666c617235767465793471697468726573686f6c64016a6c6173745f6576656e7478354561736a6665376836616c6f616d656437326b3636357273366137656b6a726b6b6e69336666656c6e7474676d336b6e6a703578616d65737461626c6973686d656e74016e6e6578745f7468726573686f6c6401", + "expected_state_hash": "45be70ec5ba53ebc76088e6a76596ee4099e4db1d626a51839d45c62f47dd14d" }, { "frame": 3, @@ -653,11 +693,21 @@ } }, "frame": 4, + "peers": {}, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "retired": {}, + "exported": {}, + "imported": [], "registry": { "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ 1 ] }, + "governance": { + "delay": 0, + "pending": [], + "sequence": 0 + }, "controllers": { "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": { "keys": [ @@ -714,8 +764,8 @@ } } }, - "expected_state_cbor_hex": "a4656279746573a1783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771a565636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656f776e657278354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371666d696e746564006c686973746f72795f68617368582027d7eec0b8c325b911a51d15b88a8d2c014ed2497ea194f9e2afa15187a76a3f656672616d6504687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016b636f6e74726f6c6c657273a378354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c640178354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a7367676932746371a7646b65797383582101f4ff420feb4040a73e51713a44f9966476c755e8e2d18b82677f8ff7a839afe25821019b54b13b505ae2ddb12e49d8e10ed93725167ab9a0a77803538fc69858cdb0e25821015c26708ee23779ee7b628241cc1735ed1ba4527639d7383bbc0ad9aa6295f5356873657175656e636500696e6578745f6b6579738378354566636634337a73353636667164356a6c6b786d62716e7632737274676b34357568656e667063347035787a666b78377264766d617835457561616d34796e79667278706d7869796f6770756d67336d366264623473356a6967736c7776336f716e703267737776346275717835456c6c33716b713268706e7769726e346d366867756c706833326c6f6f69657636653568677374326f6335633566366a69776a6a71697468726573686f6c64026a6c6173745f6576656e7478354571656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c64027835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161a7646b657973815821012354b51b90e2fe316f648ff7456178869ba360edee56635d0676fd54a9227ef06873657175656e636502696e6578745f6b657973817835453634356c6e637a6271367a726e7273617171356e6375686d76737773346773646a6e63346877767573666c617235767465793471697468726573686f6c64016a6c6173745f6576656e74783545703365353778766f7632616d66677265797a65796d356e68666b66776b6136757a6c64746574667866747134646b6c696d6b32616d65737461626c6973686d656e74016e6e6578745f7468726573686f6c6401", - "expected_state_hash": "7a33af5cf7fa704048c2e3e718c79c03938bfacc361913454f8aa42472b5671e" + "expected_state_cbor_hex": "aa656279746573a1783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771a565636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656f776e657278354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371666d696e746564006c686973746f72795f68617368582027d7eec0b8c325b911a51d15b88a8d2c014ed2497ea194f9e2afa15187a76a3f656672616d6504657065657273a067636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616772657469726564a0686578706f72746564a068696d706f7274656480687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016a676f7665726e616e6365a36564656c6179006770656e64696e67806873657175656e6365006b636f6e74726f6c6c657273a378354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c640178354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a7367676932746371a7646b65797383582101f4ff420feb4040a73e51713a44f9966476c755e8e2d18b82677f8ff7a839afe25821019b54b13b505ae2ddb12e49d8e10ed93725167ab9a0a77803538fc69858cdb0e25821015c26708ee23779ee7b628241cc1735ed1ba4527639d7383bbc0ad9aa6295f5356873657175656e636500696e6578745f6b6579738378354566636634337a73353636667164356a6c6b786d62716e7632737274676b34357568656e667063347035787a666b78377264766d617835457561616d34796e79667278706d7869796f6770756d67336d366264623473356a6967736c7776336f716e703267737776346275717835456c6c33716b713268706e7769726e346d366867756c706833326c6f6f69657636653568677374326f6335633566366a69776a6a71697468726573686f6c64026a6c6173745f6576656e7478354571656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c64027835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161a7646b657973815821012354b51b90e2fe316f648ff7456178869ba360edee56635d0676fd54a9227ef06873657175656e636502696e6578745f6b657973817835453634356c6e637a6271367a726e7273617171356e6375686d76737773346773646a6e63346877767573666c617235767465793471697468726573686f6c64016a6c6173745f6576656e74783545703365353778766f7632616d66677265797a65796d356e68666b66776b6136757a6c64746574667866747134646b6c696d6b32616d65737461626c6973686d656e74016e6e6578745f7468726573686f6c6401", + "expected_state_hash": "79ec07553dc0ed62aaa6fc7b75fad1c33c2f3c648c22c4c0966b81ade7f8a559" }, { "frame": 4, @@ -739,11 +789,21 @@ } }, "frame": 5, + "peers": {}, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "retired": {}, + "exported": {}, + "imported": [], "registry": { "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ 1 ] }, + "governance": { + "delay": 0, + "pending": [], + "sequence": 0 + }, "controllers": { "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": { "keys": [ @@ -800,8 +860,8 @@ } } }, - "expected_state_cbor_hex": "a4656279746573a1783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771a565636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656f776e657278354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371666d696e746564006c686973746f72795f68617368582027d7eec0b8c325b911a51d15b88a8d2c014ed2497ea194f9e2afa15187a76a3f656672616d6505687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016b636f6e74726f6c6c657273a378354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c640178354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a7367676932746371a7646b65797383582101f4ff420feb4040a73e51713a44f9966476c755e8e2d18b82677f8ff7a839afe25821019b54b13b505ae2ddb12e49d8e10ed93725167ab9a0a77803538fc69858cdb0e25821015c26708ee23779ee7b628241cc1735ed1ba4527639d7383bbc0ad9aa6295f5356873657175656e636500696e6578745f6b6579738378354566636634337a73353636667164356a6c6b786d62716e7632737274676b34357568656e667063347035787a666b78377264766d617835457561616d34796e79667278706d7869796f6770756d67336d366264623473356a6967736c7776336f716e703267737776346275717835456c6c33716b713268706e7769726e346d366867756c706833326c6f6f69657636653568677374326f6335633566366a69776a6a71697468726573686f6c64026a6c6173745f6576656e7478354571656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c64027835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161a7646b657973815821012354b51b90e2fe316f648ff7456178869ba360edee56635d0676fd54a9227ef06873657175656e636502696e6578745f6b657973817835453634356c6e637a6271367a726e7273617171356e6375686d76737773346773646a6e63346877767573666c617235767465793471697468726573686f6c64016a6c6173745f6576656e74783545703365353778766f7632616d66677265797a65796d356e68666b66776b6136757a6c64746574667866747134646b6c696d6b32616d65737461626c6973686d656e74016e6e6578745f7468726573686f6c6401", - "expected_state_hash": "e6ed08cf8b2e5496a1e7b558ec0b50676e4045aec6e2bfd2b55edce016d0ef0c" + "expected_state_cbor_hex": "aa656279746573a1783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771a565636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656f776e657278354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371666d696e746564006c686973746f72795f68617368582027d7eec0b8c325b911a51d15b88a8d2c014ed2497ea194f9e2afa15187a76a3f656672616d6505657065657273a067636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616772657469726564a0686578706f72746564a068696d706f7274656480687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016a676f7665726e616e6365a36564656c6179006770656e64696e67806873657175656e6365006b636f6e74726f6c6c657273a378354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c640178354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a7367676932746371a7646b65797383582101f4ff420feb4040a73e51713a44f9966476c755e8e2d18b82677f8ff7a839afe25821019b54b13b505ae2ddb12e49d8e10ed93725167ab9a0a77803538fc69858cdb0e25821015c26708ee23779ee7b628241cc1735ed1ba4527639d7383bbc0ad9aa6295f5356873657175656e636500696e6578745f6b6579738378354566636634337a73353636667164356a6c6b786d62716e7632737274676b34357568656e667063347035787a666b78377264766d617835457561616d34796e79667278706d7869796f6770756d67336d366264623473356a6967736c7776336f716e703267737776346275717835456c6c33716b713268706e7769726e346d366867756c706833326c6f6f69657636653568677374326f6335633566366a69776a6a71697468726573686f6c64026a6c6173745f6576656e7478354571656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c64027835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161a7646b657973815821012354b51b90e2fe316f648ff7456178869ba360edee56635d0676fd54a9227ef06873657175656e636502696e6578745f6b657973817835453634356c6e637a6271367a726e7273617171356e6375686d76737773346773646a6e63346877767573666c617235767465793471697468726573686f6c64016a6c6173745f6576656e74783545703365353778766f7632616d66677265797a65796d356e68666b66776b6136757a6c64746574667866747134646b6c696d6b32616d65737461626c6973686d656e74016e6e6578745f7468726573686f6c6401", + "expected_state_hash": "cb1f6f25b2df39aaacaabab275f79448b4dc4dc77245fcb20323dddd389b1241" } ] }, @@ -812,15 +872,25 @@ "state": { "bytes": {}, "frame": 0, + "peers": {}, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "retired": {}, + "exported": {}, + "imported": [], "registry": { "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ 1 ] }, + "governance": { + "delay": 0, + "pending": [], + "sequence": 0 + }, "controllers": {} }, - "cbor_hex": "a4656279746573a0656672616d6500687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016b636f6e74726f6c6c657273a0", - "state_hash": "5ffc1570b9c9ba18a0d930a20b8d23c0dbbeb55dc6b9320b964e7b6e39ca46a9" + "cbor_hex": "aa656279746573a0656672616d6500657065657273a067636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616772657469726564a0686578706f72746564a068696d706f7274656480687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016a676f7665726e616e6365a36564656c6179006770656e64696e67806873657175656e6365006b636f6e74726f6c6c657273a0", + "state_hash": "2581be8db9de04335c3ad38210a8371f07672f8e0e0343b1d7fff20dc3fd4ebe" }, "frames": [ { @@ -960,11 +1030,21 @@ } }, "frame": 1, + "peers": {}, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "retired": {}, + "exported": {}, + "imported": [], "registry": { "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ 1 ] }, + "governance": { + "delay": 0, + "pending": [], + "sequence": 0 + }, "controllers": { "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": { "keys": [ @@ -998,8 +1078,8 @@ } } }, - "expected_state_cbor_hex": "a4656279746573a1783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771a565636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656f776e65727835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371666d696e746564006c686973746f72795f686173685820c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f656672616d6501687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016b636f6e74726f6c6c657273a278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c64017835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161a7646b657973815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c6873657175656e636500696e6578745f6b65797381783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e71697468726573686f6c64016a6c6173745f6576656e747835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616d65737461626c6973686d656e74006e6e6578745f7468726573686f6c6401", - "expected_state_hash": "0e0de20e6b5049ceeba37c87f334a75cff16adbec27df03d7becf08fec5e2ea5" + "expected_state_cbor_hex": "aa656279746573a1783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771a565636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656f776e65727835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371666d696e746564006c686973746f72795f686173685820c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f656672616d6501657065657273a067636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616772657469726564a0686578706f72746564a068696d706f7274656480687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016a676f7665726e616e6365a36564656c6179006770656e64696e67806873657175656e6365006b636f6e74726f6c6c657273a278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c64017835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161a7646b657973815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c6873657175656e636500696e6578745f6b65797381783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e71697468726573686f6c64016a6c6173745f6576656e747835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616d65737461626c6973686d656e74006e6e6578745f7468726573686f6c6401", + "expected_state_hash": "bc7de16c497a07d7f98ba6e31494352dc20b9298d564392e4e73c012e14be227" }, { "frame": 1, @@ -1061,11 +1141,21 @@ } }, "frame": 2, + "peers": {}, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "retired": {}, + "exported": {}, + "imported": [], "registry": { "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ 1 ] }, + "governance": { + "delay": 0, + "pending": [], + "sequence": 0 + }, "controllers": { "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": { "keys": [ @@ -1099,8 +1189,8 @@ } } }, - "expected_state_cbor_hex": "a4656279746573a1783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771a565636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656f776e65727835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371666d696e746564006c686973746f72795f686173685820c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f656672616d6502687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016b636f6e74726f6c6c657273a278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c64017835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161a7646b657973815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c6873657175656e636500696e6578745f6b65797381783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e71697468726573686f6c64016a6c6173745f6576656e747835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616d65737461626c6973686d656e74006e6e6578745f7468726573686f6c6401", - "expected_state_hash": "cc13647a38b6beddc584da158f7bb783c0cb00b594b8ad28730691a26073653b" + "expected_state_cbor_hex": "aa656279746573a1783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771a565636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656f776e65727835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371666d696e746564006c686973746f72795f686173685820c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f656672616d6502657065657273a067636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616772657469726564a0686578706f72746564a068696d706f7274656480687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016a676f7665726e616e6365a36564656c6179006770656e64696e67806873657175656e6365006b636f6e74726f6c6c657273a278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c64017835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161a7646b657973815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c6873657175656e636500696e6578745f6b65797381783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e71697468726573686f6c64016a6c6173745f6576656e747835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616d65737461626c6973686d656e74006e6e6578745f7468726573686f6c6401", + "expected_state_hash": "0e5049366385e70ef2d066df66e08ff25418f0de4e2c72ec812d435b0dc804c0" } ] }, @@ -1111,15 +1201,25 @@ "state": { "bytes": {}, "frame": 0, + "peers": {}, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "retired": {}, + "exported": {}, + "imported": [], "registry": { "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ 1 ] }, + "governance": { + "delay": 0, + "pending": [], + "sequence": 0 + }, "controllers": {} }, - "cbor_hex": "a4656279746573a0656672616d6500687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016b636f6e74726f6c6c657273a0", - "state_hash": "5ffc1570b9c9ba18a0d930a20b8d23c0dbbeb55dc6b9320b964e7b6e39ca46a9" + "cbor_hex": "aa656279746573a0656672616d6500657065657273a067636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616772657469726564a0686578706f72746564a068696d706f7274656480687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016a676f7665726e616e6365a36564656c6179006770656e64696e67806873657175656e6365006b636f6e74726f6c6c657273a0", + "state_hash": "2581be8db9de04335c3ad38210a8371f07672f8e0e0343b1d7fff20dc3fd4ebe" }, "frames": [ { @@ -1331,11 +1431,21 @@ } }, "frame": 1, + "peers": {}, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "retired": {}, + "exported": {}, + "imported": [], "registry": { "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ 1 ] }, + "governance": { + "delay": 0, + "pending": [], + "sequence": 0 + }, "controllers": { "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": { "keys": [ @@ -1369,8 +1479,8 @@ } } }, - "expected_state_cbor_hex": "a4656279746573a1783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771a565636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656f776e65727835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371666d696e746564006c686973746f72795f686173685820c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f656672616d6501687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016b636f6e74726f6c6c657273a278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c64017835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161a7646b657973815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c6873657175656e636500696e6578745f6b65797381783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e71697468726573686f6c64016a6c6173745f6576656e747835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616d65737461626c6973686d656e74006e6e6578745f7468726573686f6c6401", - "expected_state_hash": "0e0de20e6b5049ceeba37c87f334a75cff16adbec27df03d7becf08fec5e2ea5" + "expected_state_cbor_hex": "aa656279746573a1783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771a565636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656f776e65727835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371666d696e746564006c686973746f72795f686173685820c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f656672616d6501657065657273a067636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616772657469726564a0686578706f72746564a068696d706f7274656480687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016a676f7665726e616e6365a36564656c6179006770656e64696e67806873657175656e6365006b636f6e74726f6c6c657273a278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c64017835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161a7646b657973815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c6873657175656e636500696e6578745f6b65797381783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e71697468726573686f6c64016a6c6173745f6576656e747835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616d65737461626c6973686d656e74006e6e6578745f7468726573686f6c6401", + "expected_state_hash": "bc7de16c497a07d7f98ba6e31494352dc20b9298d564392e4e73c012e14be227" } ] }, @@ -1381,15 +1491,25 @@ "state": { "bytes": {}, "frame": 0, + "peers": {}, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "retired": {}, + "exported": {}, + "imported": [], "registry": { "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ 1 ] }, + "governance": { + "delay": 0, + "pending": [], + "sequence": 0 + }, "controllers": {} }, - "cbor_hex": "a4656279746573a0656672616d6500687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016b636f6e74726f6c6c657273a0", - "state_hash": "5ffc1570b9c9ba18a0d930a20b8d23c0dbbeb55dc6b9320b964e7b6e39ca46a9" + "cbor_hex": "aa656279746573a0656672616d6500657065657273a067636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616772657469726564a0686578706f72746564a068696d706f7274656480687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016a676f7665726e616e6365a36564656c6179006770656e64696e67806873657175656e6365006b636f6e74726f6c6c657273a0", + "state_hash": "2581be8db9de04335c3ad38210a8371f07672f8e0e0343b1d7fff20dc3fd4ebe" }, "frames": [ { @@ -1582,11 +1702,21 @@ } }, "frame": 1, + "peers": {}, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "retired": {}, + "exported": {}, + "imported": [], "registry": { "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ 1 ] }, + "governance": { + "delay": 0, + "pending": [], + "sequence": 0 + }, "controllers": { "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": { "keys": [ @@ -1643,8 +1773,8 @@ } } }, - "expected_state_cbor_hex": "a4656279746573a1783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771a565636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656f776e65727835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371666d696e746564006c686973746f72795f686173685820c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f656672616d6501687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016b636f6e74726f6c6c657273a378354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c640178354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a7367676932746371a7646b65797383582101f4ff420feb4040a73e51713a44f9966476c755e8e2d18b82677f8ff7a839afe25821019b54b13b505ae2ddb12e49d8e10ed93725167ab9a0a77803538fc69858cdb0e25821015c26708ee23779ee7b628241cc1735ed1ba4527639d7383bbc0ad9aa6295f5356873657175656e636500696e6578745f6b6579738378354566636634337a73353636667164356a6c6b786d62716e7632737274676b34357568656e667063347035787a666b78377264766d617835457561616d34796e79667278706d7869796f6770756d67336d366264623473356a6967736c7776336f716e703267737776346275717835456c6c33716b713268706e7769726e346d366867756c706833326c6f6f69657636653568677374326f6335633566366a69776a6a71697468726573686f6c64026a6c6173745f6576656e7478354571656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c64027835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161a7646b657973815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c6873657175656e636500696e6578745f6b65797381783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e71697468726573686f6c64016a6c6173745f6576656e747835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616d65737461626c6973686d656e74006e6e6578745f7468726573686f6c6401", - "expected_state_hash": "4fe4147b95ea410622bf93eb7e017cf2d0c6149c1e07518d62e4f299a41e6f52" + "expected_state_cbor_hex": "aa656279746573a1783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771a565636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656f776e65727835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371666d696e746564006c686973746f72795f686173685820c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f656672616d6501657065657273a067636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616772657469726564a0686578706f72746564a068696d706f7274656480687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016a676f7665726e616e6365a36564656c6179006770656e64696e67806873657175656e6365006b636f6e74726f6c6c657273a378354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c640178354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a7367676932746371a7646b65797383582101f4ff420feb4040a73e51713a44f9966476c755e8e2d18b82677f8ff7a839afe25821019b54b13b505ae2ddb12e49d8e10ed93725167ab9a0a77803538fc69858cdb0e25821015c26708ee23779ee7b628241cc1735ed1ba4527639d7383bbc0ad9aa6295f5356873657175656e636500696e6578745f6b6579738378354566636634337a73353636667164356a6c6b786d62716e7632737274676b34357568656e667063347035787a666b78377264766d617835457561616d34796e79667278706d7869796f6770756d67336d366264623473356a6967736c7776336f716e703267737776346275717835456c6c33716b713268706e7769726e346d366867756c706833326c6f6f69657636653568677374326f6335633566366a69776a6a71697468726573686f6c64026a6c6173745f6576656e7478354571656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c64027835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161a7646b657973815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c6873657175656e636500696e6578745f6b65797381783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e71697468726573686f6c64016a6c6173745f6576656e747835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616d65737461626c6973686d656e74006e6e6578745f7468726573686f6c6401", + "expected_state_hash": "e3133214b726e331a9a275639f8d7d91d4a37971957c21dadacc5ad00711fa12" }, { "frame": 1, @@ -1742,11 +1872,21 @@ } }, "frame": 2, + "peers": {}, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "retired": {}, + "exported": {}, + "imported": [], "registry": { "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ 1 ] }, + "governance": { + "delay": 0, + "pending": [], + "sequence": 0 + }, "controllers": { "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": { "keys": [ @@ -1803,8 +1943,8 @@ } } }, - "expected_state_cbor_hex": "a4656279746573a1783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771a565636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656f776e65727835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371666d696e746564006c686973746f72795f686173685820c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f656672616d6502687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016b636f6e74726f6c6c657273a378354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c640178354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a7367676932746371a7646b65797383582101f4ff420feb4040a73e51713a44f9966476c755e8e2d18b82677f8ff7a839afe25821019b54b13b505ae2ddb12e49d8e10ed93725167ab9a0a77803538fc69858cdb0e25821015c26708ee23779ee7b628241cc1735ed1ba4527639d7383bbc0ad9aa6295f5356873657175656e636500696e6578745f6b6579738378354566636634337a73353636667164356a6c6b786d62716e7632737274676b34357568656e667063347035787a666b78377264766d617835457561616d34796e79667278706d7869796f6770756d67336d366264623473356a6967736c7776336f716e703267737776346275717835456c6c33716b713268706e7769726e346d366867756c706833326c6f6f69657636653568677374326f6335633566366a69776a6a71697468726573686f6c64026a6c6173745f6576656e7478354571656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c64027835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161a7646b657973815821012354b51b90e2fe316f648ff7456178869ba360edee56635d0676fd54a9227ef06873657175656e636501696e6578745f6b657973817835453634356c6e637a6271367a726e7273617171356e6375686d76737773346773646a6e63346877767573666c617235767465793471697468726573686f6c64016a6c6173745f6576656e7478354561736a6665376836616c6f616d656437326b3636357273366137656b6a726b6b6e69336666656c6e7474676d336b6e6a703578616d65737461626c6973686d656e74016e6e6578745f7468726573686f6c6401", - "expected_state_hash": "05400f4f3a692cc763ca14916c58de6ad2429d1a3f8e25b44ce393e715dc649a" + "expected_state_cbor_hex": "aa656279746573a1783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771a565636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656f776e65727835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371666d696e746564006c686973746f72795f686173685820c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f656672616d6502657065657273a067636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616772657469726564a0686578706f72746564a068696d706f7274656480687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016a676f7665726e616e6365a36564656c6179006770656e64696e67806873657175656e6365006b636f6e74726f6c6c657273a378354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c640178354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a7367676932746371a7646b65797383582101f4ff420feb4040a73e51713a44f9966476c755e8e2d18b82677f8ff7a839afe25821019b54b13b505ae2ddb12e49d8e10ed93725167ab9a0a77803538fc69858cdb0e25821015c26708ee23779ee7b628241cc1735ed1ba4527639d7383bbc0ad9aa6295f5356873657175656e636500696e6578745f6b6579738378354566636634337a73353636667164356a6c6b786d62716e7632737274676b34357568656e667063347035787a666b78377264766d617835457561616d34796e79667278706d7869796f6770756d67336d366264623473356a6967736c7776336f716e703267737776346275717835456c6c33716b713268706e7769726e346d366867756c706833326c6f6f69657636653568677374326f6335633566366a69776a6a71697468726573686f6c64026a6c6173745f6576656e7478354571656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c64027835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161a7646b657973815821012354b51b90e2fe316f648ff7456178869ba360edee56635d0676fd54a9227ef06873657175656e636501696e6578745f6b657973817835453634356c6e637a6271367a726e7273617171356e6375686d76737773346773646a6e63346877767573666c617235767465793471697468726573686f6c64016a6c6173745f6576656e7478354561736a6665376836616c6f616d656437326b3636357273366137656b6a726b6b6e69336666656c6e7474676d336b6e6a703578616d65737461626c6973686d656e74016e6e6578745f7468726573686f6c6401", + "expected_state_hash": "96b18f00921be397c3b43c1b4761a55892e1e42db5f0af6999b977d16d65354b" }, { "frame": 2, @@ -1862,11 +2002,21 @@ } }, "frame": 3, + "peers": {}, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "retired": {}, + "exported": {}, + "imported": [], "registry": { "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ 1 ] }, + "governance": { + "delay": 0, + "pending": [], + "sequence": 0 + }, "controllers": { "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": { "keys": [ @@ -1923,8 +2073,8 @@ } } }, - "expected_state_cbor_hex": "a4656279746573a1783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771a565636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656f776e657278354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371666d696e746564006c686973746f72795f6861736858200002a37e34b074cda617b16596f290ef0ec9646ba9b12ca3c8ac62dea73e6c4a656672616d6503687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016b636f6e74726f6c6c657273a378354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c640178354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a7367676932746371a7646b65797383582101f4ff420feb4040a73e51713a44f9966476c755e8e2d18b82677f8ff7a839afe25821019b54b13b505ae2ddb12e49d8e10ed93725167ab9a0a77803538fc69858cdb0e25821015c26708ee23779ee7b628241cc1735ed1ba4527639d7383bbc0ad9aa6295f5356873657175656e636500696e6578745f6b6579738378354566636634337a73353636667164356a6c6b786d62716e7632737274676b34357568656e667063347035787a666b78377264766d617835457561616d34796e79667278706d7869796f6770756d67336d366264623473356a6967736c7776336f716e703267737776346275717835456c6c33716b713268706e7769726e346d366867756c706833326c6f6f69657636653568677374326f6335633566366a69776a6a71697468726573686f6c64026a6c6173745f6576656e7478354571656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c64027835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161a7646b657973815821012354b51b90e2fe316f648ff7456178869ba360edee56635d0676fd54a9227ef06873657175656e636501696e6578745f6b657973817835453634356c6e637a6271367a726e7273617171356e6375686d76737773346773646a6e63346877767573666c617235767465793471697468726573686f6c64016a6c6173745f6576656e7478354561736a6665376836616c6f616d656437326b3636357273366137656b6a726b6b6e69336666656c6e7474676d336b6e6a703578616d65737461626c6973686d656e74016e6e6578745f7468726573686f6c6401", - "expected_state_hash": "ec192ce0eb5724a5ba5eab8573d48e07308092b91428a087f9242a35b24856c6" + "expected_state_cbor_hex": "aa656279746573a1783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771a565636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656f776e657278354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371666d696e746564006c686973746f72795f6861736858200002a37e34b074cda617b16596f290ef0ec9646ba9b12ca3c8ac62dea73e6c4a656672616d6503657065657273a067636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616772657469726564a0686578706f72746564a068696d706f7274656480687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016a676f7665726e616e6365a36564656c6179006770656e64696e67806873657175656e6365006b636f6e74726f6c6c657273a378354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c640178354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a7367676932746371a7646b65797383582101f4ff420feb4040a73e51713a44f9966476c755e8e2d18b82677f8ff7a839afe25821019b54b13b505ae2ddb12e49d8e10ed93725167ab9a0a77803538fc69858cdb0e25821015c26708ee23779ee7b628241cc1735ed1ba4527639d7383bbc0ad9aa6295f5356873657175656e636500696e6578745f6b6579738378354566636634337a73353636667164356a6c6b786d62716e7632737274676b34357568656e667063347035787a666b78377264766d617835457561616d34796e79667278706d7869796f6770756d67336d366264623473356a6967736c7776336f716e703267737776346275717835456c6c33716b713268706e7769726e346d366867756c706833326c6f6f69657636653568677374326f6335633566366a69776a6a71697468726573686f6c64026a6c6173745f6576656e7478354571656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c64027835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161a7646b657973815821012354b51b90e2fe316f648ff7456178869ba360edee56635d0676fd54a9227ef06873657175656e636501696e6578745f6b657973817835453634356c6e637a6271367a726e7273617171356e6375686d76737773346773646a6e63346877767573666c617235767465793471697468726573686f6c64016a6c6173745f6576656e7478354561736a6665376836616c6f616d656437326b3636357273366137656b6a726b6b6e69336666656c6e7474676d336b6e6a703578616d65737461626c6973686d656e74016e6e6578745f7468726573686f6c6401", + "expected_state_hash": "902f567cc72c96fafa9d09fda9c0bb7b2b43ff8cc1fec15957dab494d46c0f33" } ] }, @@ -1935,15 +2085,25 @@ "state": { "bytes": {}, "frame": 0, + "peers": {}, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "retired": {}, + "exported": {}, + "imported": [], "registry": { "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ 1 ] }, + "governance": { + "delay": 0, + "pending": [], + "sequence": 0 + }, "controllers": {} }, - "cbor_hex": "a4656279746573a0656672616d6500687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016b636f6e74726f6c6c657273a0", - "state_hash": "5ffc1570b9c9ba18a0d930a20b8d23c0dbbeb55dc6b9320b964e7b6e39ca46a9" + "cbor_hex": "aa656279746573a0656672616d6500657065657273a067636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616772657469726564a0686578706f72746564a068696d706f7274656480687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016a676f7665726e616e6365a36564656c6179006770656e64696e67806873657175656e6365006b636f6e74726f6c6c657273a0", + "state_hash": "2581be8db9de04335c3ad38210a8371f07672f8e0e0343b1d7fff20dc3fd4ebe" }, "frames": [ { @@ -2168,11 +2328,21 @@ } }, "frame": 1, + "peers": {}, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "retired": {}, + "exported": {}, + "imported": [], "registry": { "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ 1 ] }, + "governance": { + "delay": 0, + "pending": [], + "sequence": 0 + }, "controllers": { "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": { "keys": [ @@ -2229,8 +2399,8 @@ } } }, - "expected_state_cbor_hex": "a4656279746573a1783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771a565636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656f776e657278354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371666d696e746564006c686973746f72795f686173685820bdfd94a63ddc282154452bfd3afa4e72b032ff09a059aa773bec1922b5bdbe7d656672616d6501687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016b636f6e74726f6c6c657273a378354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c640178354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a7367676932746371a7646b65797383582101f4ff420feb4040a73e51713a44f9966476c755e8e2d18b82677f8ff7a839afe25821019b54b13b505ae2ddb12e49d8e10ed93725167ab9a0a77803538fc69858cdb0e25821015c26708ee23779ee7b628241cc1735ed1ba4527639d7383bbc0ad9aa6295f5356873657175656e636500696e6578745f6b6579738378354566636634337a73353636667164356a6c6b786d62716e7632737274676b34357568656e667063347035787a666b78377264766d617835457561616d34796e79667278706d7869796f6770756d67336d366264623473356a6967736c7776336f716e703267737776346275717835456c6c33716b713268706e7769726e346d366867756c706833326c6f6f69657636653568677374326f6335633566366a69776a6a71697468726573686f6c64026a6c6173745f6576656e7478354571656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c64027835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161a7646b657973815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c6873657175656e636500696e6578745f6b65797381783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e71697468726573686f6c64016a6c6173745f6576656e747835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616d65737461626c6973686d656e74006e6e6578745f7468726573686f6c6401", - "expected_state_hash": "e38ef11643f1bb6a3fe0726cf28f5d083311c041c62e42d7ca8c4eabdf77ea64" + "expected_state_cbor_hex": "aa656279746573a1783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771a565636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656f776e657278354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371666d696e746564006c686973746f72795f686173685820bdfd94a63ddc282154452bfd3afa4e72b032ff09a059aa773bec1922b5bdbe7d656672616d6501657065657273a067636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616772657469726564a0686578706f72746564a068696d706f7274656480687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016a676f7665726e616e6365a36564656c6179006770656e64696e67806873657175656e6365006b636f6e74726f6c6c657273a378354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c640178354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a7367676932746371a7646b65797383582101f4ff420feb4040a73e51713a44f9966476c755e8e2d18b82677f8ff7a839afe25821019b54b13b505ae2ddb12e49d8e10ed93725167ab9a0a77803538fc69858cdb0e25821015c26708ee23779ee7b628241cc1735ed1ba4527639d7383bbc0ad9aa6295f5356873657175656e636500696e6578745f6b6579738378354566636634337a73353636667164356a6c6b786d62716e7632737274676b34357568656e667063347035787a666b78377264766d617835457561616d34796e79667278706d7869796f6770756d67336d366264623473356a6967736c7776336f716e703267737776346275717835456c6c33716b713268706e7769726e346d366867756c706833326c6f6f69657636653568677374326f6335633566366a69776a6a71697468726573686f6c64026a6c6173745f6576656e7478354571656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c64027835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161a7646b657973815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c6873657175656e636500696e6578745f6b65797381783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e71697468726573686f6c64016a6c6173745f6576656e747835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616d65737461626c6973686d656e74006e6e6578745f7468726573686f6c6401", + "expected_state_hash": "45b86c538419380a2d78049310b2e2c7f9a9717c39f8d974f5c9a234541febfa" } ] }, @@ -2241,15 +2411,25 @@ "state": { "bytes": {}, "frame": 0, + "peers": {}, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "retired": {}, + "exported": {}, + "imported": [], "registry": { "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ 1 ] }, + "governance": { + "delay": 0, + "pending": [], + "sequence": 0 + }, "controllers": {} }, - "cbor_hex": "a4656279746573a0656672616d6500687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016b636f6e74726f6c6c657273a0", - "state_hash": "5ffc1570b9c9ba18a0d930a20b8d23c0dbbeb55dc6b9320b964e7b6e39ca46a9" + "cbor_hex": "aa656279746573a0656672616d6500657065657273a067636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616772657469726564a0686578706f72746564a068696d706f7274656480687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016a676f7665726e616e6365a36564656c6179006770656e64696e67806873657175656e6365006b636f6e74726f6c6c657273a0", + "state_hash": "2581be8db9de04335c3ad38210a8371f07672f8e0e0343b1d7fff20dc3fd4ebe" }, "frames": [ { @@ -2442,11 +2622,21 @@ } }, "frame": 1, + "peers": {}, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "retired": {}, + "exported": {}, + "imported": [], "registry": { "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ 1 ] }, + "governance": { + "delay": 0, + "pending": [], + "sequence": 0 + }, "controllers": { "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": { "keys": [ @@ -2503,8 +2693,8 @@ } } }, - "expected_state_cbor_hex": "a4656279746573a1783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771a565636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656f776e65727835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371666d696e746564006c686973746f72795f686173685820c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f656672616d6501687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016b636f6e74726f6c6c657273a378354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c640178354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a7367676932746371a7646b65797383582101f4ff420feb4040a73e51713a44f9966476c755e8e2d18b82677f8ff7a839afe25821019b54b13b505ae2ddb12e49d8e10ed93725167ab9a0a77803538fc69858cdb0e25821015c26708ee23779ee7b628241cc1735ed1ba4527639d7383bbc0ad9aa6295f5356873657175656e636500696e6578745f6b6579738378354566636634337a73353636667164356a6c6b786d62716e7632737274676b34357568656e667063347035787a666b78377264766d617835457561616d34796e79667278706d7869796f6770756d67336d366264623473356a6967736c7776336f716e703267737776346275717835456c6c33716b713268706e7769726e346d366867756c706833326c6f6f69657636653568677374326f6335633566366a69776a6a71697468726573686f6c64026a6c6173745f6576656e7478354571656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c64027835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161a7646b657973815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c6873657175656e636500696e6578745f6b65797381783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e71697468726573686f6c64016a6c6173745f6576656e747835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616d65737461626c6973686d656e74006e6e6578745f7468726573686f6c6401", - "expected_state_hash": "4fe4147b95ea410622bf93eb7e017cf2d0c6149c1e07518d62e4f299a41e6f52" + "expected_state_cbor_hex": "aa656279746573a1783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771a565636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656f776e65727835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371666d696e746564006c686973746f72795f686173685820c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f656672616d6501657065657273a067636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616772657469726564a0686578706f72746564a068696d706f7274656480687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016a676f7665726e616e6365a36564656c6179006770656e64696e67806873657175656e6365006b636f6e74726f6c6c657273a378354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c640178354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a7367676932746371a7646b65797383582101f4ff420feb4040a73e51713a44f9966476c755e8e2d18b82677f8ff7a839afe25821019b54b13b505ae2ddb12e49d8e10ed93725167ab9a0a77803538fc69858cdb0e25821015c26708ee23779ee7b628241cc1735ed1ba4527639d7383bbc0ad9aa6295f5356873657175656e636500696e6578745f6b6579738378354566636634337a73353636667164356a6c6b786d62716e7632737274676b34357568656e667063347035787a666b78377264766d617835457561616d34796e79667278706d7869796f6770756d67336d366264623473356a6967736c7776336f716e703267737776346275717835456c6c33716b713268706e7769726e346d366867756c706833326c6f6f69657636653568677374326f6335633566366a69776a6a71697468726573686f6c64026a6c6173745f6576656e7478354571656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c64027835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161a7646b657973815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c6873657175656e636500696e6578745f6b65797381783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e71697468726573686f6c64016a6c6173745f6576656e747835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616d65737461626c6973686d656e74006e6e6578745f7468726573686f6c6401", + "expected_state_hash": "e3133214b726e331a9a275639f8d7d91d4a37971957c21dadacc5ad00711fa12" }, { "frame": 1, @@ -2595,11 +2785,21 @@ } }, "frame": 2, + "peers": {}, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "retired": {}, + "exported": {}, + "imported": [], "registry": { "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ 1 ] }, + "governance": { + "delay": 0, + "pending": [], + "sequence": 0 + }, "controllers": { "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": { "keys": [ @@ -2656,8 +2856,8 @@ } } }, - "expected_state_cbor_hex": "a4656279746573a1783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771a565636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656f776e657278354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371666d696e746564006c686973746f72795f68617368582071ad09543d4b94f5ec2f82c45cbf322b999cc9ba87df199332a22dcc25474fa8656672616d6502687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016b636f6e74726f6c6c657273a378354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c640178354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a7367676932746371a7646b65797383582101f4ff420feb4040a73e51713a44f9966476c755e8e2d18b82677f8ff7a839afe25821019b54b13b505ae2ddb12e49d8e10ed93725167ab9a0a77803538fc69858cdb0e25821015c26708ee23779ee7b628241cc1735ed1ba4527639d7383bbc0ad9aa6295f5356873657175656e636500696e6578745f6b6579738378354566636634337a73353636667164356a6c6b786d62716e7632737274676b34357568656e667063347035787a666b78377264766d617835457561616d34796e79667278706d7869796f6770756d67336d366264623473356a6967736c7776336f716e703267737776346275717835456c6c33716b713268706e7769726e346d366867756c706833326c6f6f69657636653568677374326f6335633566366a69776a6a71697468726573686f6c64026a6c6173745f6576656e7478354571656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c64027835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161a7646b657973815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c6873657175656e636500696e6578745f6b65797381783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e71697468726573686f6c64016a6c6173745f6576656e747835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616d65737461626c6973686d656e74006e6e6578745f7468726573686f6c6401", - "expected_state_hash": "5485f797d11fa5f000bbff664b99010de39b5dde6f0efd63a100928926d01602" + "expected_state_cbor_hex": "aa656279746573a1783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771a565636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656f776e657278354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371666d696e746564006c686973746f72795f68617368582071ad09543d4b94f5ec2f82c45cbf322b999cc9ba87df199332a22dcc25474fa8656672616d6502657065657273a067636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616772657469726564a0686578706f72746564a068696d706f7274656480687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016a676f7665726e616e6365a36564656c6179006770656e64696e67806873657175656e6365006b636f6e74726f6c6c657273a378354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c640178354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a7367676932746371a7646b65797383582101f4ff420feb4040a73e51713a44f9966476c755e8e2d18b82677f8ff7a839afe25821019b54b13b505ae2ddb12e49d8e10ed93725167ab9a0a77803538fc69858cdb0e25821015c26708ee23779ee7b628241cc1735ed1ba4527639d7383bbc0ad9aa6295f5356873657175656e636500696e6578745f6b6579738378354566636634337a73353636667164356a6c6b786d62716e7632737274676b34357568656e667063347035787a666b78377264766d617835457561616d34796e79667278706d7869796f6770756d67336d366264623473356a6967736c7776336f716e703267737776346275717835456c6c33716b713268706e7769726e346d366867756c706833326c6f6f69657636653568677374326f6335633566366a69776a6a71697468726573686f6c64026a6c6173745f6576656e7478354571656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c64027835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161a7646b657973815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c6873657175656e636500696e6578745f6b65797381783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e71697468726573686f6c64016a6c6173745f6576656e747835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616d65737461626c6973686d656e74006e6e6578745f7468726573686f6c6401", + "expected_state_hash": "a710e6722606e186008235a9578156734cd69254f7d9b395a3053383b16e3717" } ] }, @@ -2668,15 +2868,25 @@ "state": { "bytes": {}, "frame": 0, + "peers": {}, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "retired": {}, + "exported": {}, + "imported": [], "registry": { "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ 1 ] }, + "governance": { + "delay": 0, + "pending": [], + "sequence": 0 + }, "controllers": {} }, - "cbor_hex": "a4656279746573a0656672616d6500687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016b636f6e74726f6c6c657273a0", - "state_hash": "5ffc1570b9c9ba18a0d930a20b8d23c0dbbeb55dc6b9320b964e7b6e39ca46a9" + "cbor_hex": "aa656279746573a0656672616d6500657065657273a067636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616772657469726564a0686578706f72746564a068696d706f7274656480687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016a676f7665726e616e6365a36564656c6179006770656e64696e67806873657175656e6365006b636f6e74726f6c6c657273a0", + "state_hash": "2581be8db9de04335c3ad38210a8371f07672f8e0e0343b1d7fff20dc3fd4ebe" }, "frames": [ { @@ -2869,11 +3079,21 @@ } }, "frame": 1, + "peers": {}, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "retired": {}, + "exported": {}, + "imported": [], "registry": { "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ 1 ] }, + "governance": { + "delay": 0, + "pending": [], + "sequence": 0 + }, "controllers": { "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": { "keys": [ @@ -2930,8 +3150,8 @@ } } }, - "expected_state_cbor_hex": "a4656279746573a1783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771a565636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656f776e65727835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371666d696e746564006c686973746f72795f686173685820c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f656672616d6501687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016b636f6e74726f6c6c657273a378354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c640178354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a7367676932746371a7646b65797383582101f4ff420feb4040a73e51713a44f9966476c755e8e2d18b82677f8ff7a839afe25821019b54b13b505ae2ddb12e49d8e10ed93725167ab9a0a77803538fc69858cdb0e25821015c26708ee23779ee7b628241cc1735ed1ba4527639d7383bbc0ad9aa6295f5356873657175656e636500696e6578745f6b6579738378354566636634337a73353636667164356a6c6b786d62716e7632737274676b34357568656e667063347035787a666b78377264766d617835457561616d34796e79667278706d7869796f6770756d67336d366264623473356a6967736c7776336f716e703267737776346275717835456c6c33716b713268706e7769726e346d366867756c706833326c6f6f69657636653568677374326f6335633566366a69776a6a71697468726573686f6c64026a6c6173745f6576656e7478354571656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c64027835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161a7646b657973815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c6873657175656e636500696e6578745f6b65797381783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e71697468726573686f6c64016a6c6173745f6576656e747835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616d65737461626c6973686d656e74006e6e6578745f7468726573686f6c6401", - "expected_state_hash": "4fe4147b95ea410622bf93eb7e017cf2d0c6149c1e07518d62e4f299a41e6f52" + "expected_state_cbor_hex": "aa656279746573a1783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771a565636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656f776e65727835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371666d696e746564006c686973746f72795f686173685820c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f656672616d6501657065657273a067636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616772657469726564a0686578706f72746564a068696d706f7274656480687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016a676f7665726e616e6365a36564656c6179006770656e64696e67806873657175656e6365006b636f6e74726f6c6c657273a378354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c640178354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a7367676932746371a7646b65797383582101f4ff420feb4040a73e51713a44f9966476c755e8e2d18b82677f8ff7a839afe25821019b54b13b505ae2ddb12e49d8e10ed93725167ab9a0a77803538fc69858cdb0e25821015c26708ee23779ee7b628241cc1735ed1ba4527639d7383bbc0ad9aa6295f5356873657175656e636500696e6578745f6b6579738378354566636634337a73353636667164356a6c6b786d62716e7632737274676b34357568656e667063347035787a666b78377264766d617835457561616d34796e79667278706d7869796f6770756d67336d366264623473356a6967736c7776336f716e703267737776346275717835456c6c33716b713268706e7769726e346d366867756c706833326c6f6f69657636653568677374326f6335633566366a69776a6a71697468726573686f6c64026a6c6173745f6576656e7478354571656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c64027835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161a7646b657973815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c6873657175656e636500696e6578745f6b65797381783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e71697468726573686f6c64016a6c6173745f6576656e747835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616d65737461626c6973686d656e74006e6e6578745f7468726573686f6c6401", + "expected_state_hash": "e3133214b726e331a9a275639f8d7d91d4a37971957c21dadacc5ad00711fa12" }, { "frame": 1, @@ -3095,11 +3315,21 @@ } }, "frame": 2, + "peers": {}, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "retired": {}, + "exported": {}, + "imported": [], "registry": { "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ 1 ] }, + "governance": { + "delay": 0, + "pending": [], + "sequence": 0 + }, "controllers": { "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": { "keys": [ @@ -3156,8 +3386,8 @@ } } }, - "expected_state_cbor_hex": "a4656279746573a1783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771a565636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656f776e65727835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371666d696e746564006c686973746f72795f686173685820c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f656672616d6502687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016b636f6e74726f6c6c657273a378354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c640178354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a7367676932746371a7646b65797383582101f4ff420feb4040a73e51713a44f9966476c755e8e2d18b82677f8ff7a839afe25821019b54b13b505ae2ddb12e49d8e10ed93725167ab9a0a77803538fc69858cdb0e25821015c26708ee23779ee7b628241cc1735ed1ba4527639d7383bbc0ad9aa6295f5356873657175656e636500696e6578745f6b6579738378354566636634337a73353636667164356a6c6b786d62716e7632737274676b34357568656e667063347035787a666b78377264766d617835457561616d34796e79667278706d7869796f6770756d67336d366264623473356a6967736c7776336f716e703267737776346275717835456c6c33716b713268706e7769726e346d366867756c706833326c6f6f69657636653568677374326f6335633566366a69776a6a71697468726573686f6c64026a6c6173745f6576656e7478354571656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c64027835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161a7646b657973815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c6873657175656e636500696e6578745f6b65797381783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e71697468726573686f6c64016a6c6173745f6576656e747835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616d65737461626c6973686d656e74006e6e6578745f7468726573686f6c6401", - "expected_state_hash": "a630788e6a61cad33ebe6d7609f8ae79cef91d155a8a58f4bb6e49236a52dbfa" + "expected_state_cbor_hex": "aa656279746573a1783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771a565636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656f776e65727835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371666d696e746564006c686973746f72795f686173685820c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f656672616d6502657065657273a067636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616772657469726564a0686578706f72746564a068696d706f7274656480687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016a676f7665726e616e6365a36564656c6179006770656e64696e67806873657175656e6365006b636f6e74726f6c6c657273a378354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c640178354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a7367676932746371a7646b65797383582101f4ff420feb4040a73e51713a44f9966476c755e8e2d18b82677f8ff7a839afe25821019b54b13b505ae2ddb12e49d8e10ed93725167ab9a0a77803538fc69858cdb0e25821015c26708ee23779ee7b628241cc1735ed1ba4527639d7383bbc0ad9aa6295f5356873657175656e636500696e6578745f6b6579738378354566636634337a73353636667164356a6c6b786d62716e7632737274676b34357568656e667063347035787a666b78377264766d617835457561616d34796e79667278706d7869796f6770756d67336d366264623473356a6967736c7776336f716e703267737776346275717835456c6c33716b713268706e7769726e346d366867756c706833326c6f6f69657636653568677374326f6335633566366a69776a6a71697468726573686f6c64026a6c6173745f6576656e7478354571656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c64027835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161a7646b657973815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c6873657175656e636500696e6578745f6b65797381783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e71697468726573686f6c64016a6c6173745f6576656e747835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616d65737461626c6973686d656e74006e6e6578745f7468726573686f6c6401", + "expected_state_hash": "8f42498ae07d7ab3d55cb9f542e120db2ee100402badf130b86b7ce44ef3251d" } ] }, @@ -3168,15 +3398,25 @@ "state": { "bytes": {}, "frame": 0, + "peers": {}, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "retired": {}, + "exported": {}, + "imported": [], "registry": { "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ 1 ] }, + "governance": { + "delay": 0, + "pending": [], + "sequence": 0 + }, "controllers": {} }, - "cbor_hex": "a4656279746573a0656672616d6500687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016b636f6e74726f6c6c657273a0", - "state_hash": "5ffc1570b9c9ba18a0d930a20b8d23c0dbbeb55dc6b9320b964e7b6e39ca46a9" + "cbor_hex": "aa656279746573a0656672616d6500657065657273a067636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616772657469726564a0686578706f72746564a068696d706f7274656480687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016a676f7665726e616e6365a36564656c6179006770656e64696e67806873657175656e6365006b636f6e74726f6c6c657273a0", + "state_hash": "2581be8db9de04335c3ad38210a8371f07672f8e0e0343b1d7fff20dc3fd4ebe" }, "frames": [ { @@ -3401,11 +3641,21 @@ } }, "frame": 1, + "peers": {}, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "retired": {}, + "exported": {}, + "imported": [], "registry": { "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ 1 ] }, + "governance": { + "delay": 0, + "pending": [], + "sequence": 0 + }, "controllers": { "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": { "keys": [ @@ -3462,8 +3712,8 @@ } } }, - "expected_state_cbor_hex": "a4656279746573a1783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771a565636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656f776e657278354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371666d696e746564006c686973746f72795f686173685820bdfd94a63ddc282154452bfd3afa4e72b032ff09a059aa773bec1922b5bdbe7d656672616d6501687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016b636f6e74726f6c6c657273a378354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c640178354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a7367676932746371a7646b65797383582101f4ff420feb4040a73e51713a44f9966476c755e8e2d18b82677f8ff7a839afe25821019b54b13b505ae2ddb12e49d8e10ed93725167ab9a0a77803538fc69858cdb0e25821015c26708ee23779ee7b628241cc1735ed1ba4527639d7383bbc0ad9aa6295f5356873657175656e636500696e6578745f6b6579738378354566636634337a73353636667164356a6c6b786d62716e7632737274676b34357568656e667063347035787a666b78377264766d617835457561616d34796e79667278706d7869796f6770756d67336d366264623473356a6967736c7776336f716e703267737776346275717835456c6c33716b713268706e7769726e346d366867756c706833326c6f6f69657636653568677374326f6335633566366a69776a6a71697468726573686f6c64026a6c6173745f6576656e7478354571656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c64027835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161a7646b657973815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c6873657175656e636500696e6578745f6b65797381783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e71697468726573686f6c64016a6c6173745f6576656e747835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616d65737461626c6973686d656e74006e6e6578745f7468726573686f6c6401", - "expected_state_hash": "e38ef11643f1bb6a3fe0726cf28f5d083311c041c62e42d7ca8c4eabdf77ea64" + "expected_state_cbor_hex": "aa656279746573a1783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771a565636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656f776e657278354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371666d696e746564006c686973746f72795f686173685820bdfd94a63ddc282154452bfd3afa4e72b032ff09a059aa773bec1922b5bdbe7d656672616d6501657065657273a067636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616772657469726564a0686578706f72746564a068696d706f7274656480687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016a676f7665726e616e6365a36564656c6179006770656e64696e67806873657175656e6365006b636f6e74726f6c6c657273a378354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c640178354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a7367676932746371a7646b65797383582101f4ff420feb4040a73e51713a44f9966476c755e8e2d18b82677f8ff7a839afe25821019b54b13b505ae2ddb12e49d8e10ed93725167ab9a0a77803538fc69858cdb0e25821015c26708ee23779ee7b628241cc1735ed1ba4527639d7383bbc0ad9aa6295f5356873657175656e636500696e6578745f6b6579738378354566636634337a73353636667164356a6c6b786d62716e7632737274676b34357568656e667063347035787a666b78377264766d617835457561616d34796e79667278706d7869796f6770756d67336d366264623473356a6967736c7776336f716e703267737776346275717835456c6c33716b713268706e7769726e346d366867756c706833326c6f6f69657636653568677374326f6335633566366a69776a6a71697468726573686f6c64026a6c6173745f6576656e7478354571656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c64027835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161a7646b657973815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c6873657175656e636500696e6578745f6b65797381783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e71697468726573686f6c64016a6c6173745f6576656e747835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616d65737461626c6973686d656e74006e6e6578745f7468726573686f6c6401", + "expected_state_hash": "45b86c538419380a2d78049310b2e2c7f9a9717c39f8d974f5c9a234541febfa" }, { "frame": 1, @@ -3639,11 +3889,21 @@ } }, "frame": 2, + "peers": {}, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "retired": {}, + "exported": {}, + "imported": [], "registry": { "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ 1 ] }, + "governance": { + "delay": 0, + "pending": [], + "sequence": 0 + }, "controllers": { "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": { "keys": [ @@ -3700,8 +3960,8 @@ } } }, - "expected_state_cbor_hex": "a4656279746573a1783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771a565636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656f776e657278354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371666d696e746564006c686973746f72795f686173685820bdfd94a63ddc282154452bfd3afa4e72b032ff09a059aa773bec1922b5bdbe7d656672616d6502687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016b636f6e74726f6c6c657273a378354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c640178354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a7367676932746371a7646b65797383582101f4ff420feb4040a73e51713a44f9966476c755e8e2d18b82677f8ff7a839afe25821019b54b13b505ae2ddb12e49d8e10ed93725167ab9a0a77803538fc69858cdb0e25821015c26708ee23779ee7b628241cc1735ed1ba4527639d7383bbc0ad9aa6295f5356873657175656e636500696e6578745f6b6579738378354566636634337a73353636667164356a6c6b786d62716e7632737274676b34357568656e667063347035787a666b78377264766d617835457561616d34796e79667278706d7869796f6770756d67336d366264623473356a6967736c7776336f716e703267737776346275717835456c6c33716b713268706e7769726e346d366867756c706833326c6f6f69657636653568677374326f6335633566366a69776a6a71697468726573686f6c64026a6c6173745f6576656e7478354571656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c64027835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161a7646b657973815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c6873657175656e636500696e6578745f6b65797381783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e71697468726573686f6c64016a6c6173745f6576656e747835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616d65737461626c6973686d656e74006e6e6578745f7468726573686f6c6401", - "expected_state_hash": "1ef1e24d3bfb207674a3df9254f99e50db19e98e6cca74ef37d7b2152ea7f5e1" + "expected_state_cbor_hex": "aa656279746573a1783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771a565636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656f776e657278354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371666d696e746564006c686973746f72795f686173685820bdfd94a63ddc282154452bfd3afa4e72b032ff09a059aa773bec1922b5bdbe7d656672616d6502657065657273a067636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616772657469726564a0686578706f72746564a068696d706f7274656480687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016a676f7665726e616e6365a36564656c6179006770656e64696e67806873657175656e6365006b636f6e74726f6c6c657273a378354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c640178354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a7367676932746371a7646b65797383582101f4ff420feb4040a73e51713a44f9966476c755e8e2d18b82677f8ff7a839afe25821019b54b13b505ae2ddb12e49d8e10ed93725167ab9a0a77803538fc69858cdb0e25821015c26708ee23779ee7b628241cc1735ed1ba4527639d7383bbc0ad9aa6295f5356873657175656e636500696e6578745f6b6579738378354566636634337a73353636667164356a6c6b786d62716e7632737274676b34357568656e667063347035787a666b78377264766d617835457561616d34796e79667278706d7869796f6770756d67336d366264623473356a6967736c7776336f716e703267737776346275717835456c6c33716b713268706e7769726e346d366867756c706833326c6f6f69657636653568677374326f6335633566366a69776a6a71697468726573686f6c64026a6c6173745f6576656e7478354571656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c64027835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161a7646b657973815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c6873657175656e636500696e6578745f6b65797381783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e71697468726573686f6c64016a6c6173745f6576656e747835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616d65737461626c6973686d656e74006e6e6578745f7468726573686f6c6401", + "expected_state_hash": "f5db91ed0c40e7f917cab7f0b43ee32c0832f09b82bf29883538f6c4cc3064e1" } ] }, @@ -3712,15 +3972,25 @@ "state": { "bytes": {}, "frame": 0, + "peers": {}, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "retired": {}, + "exported": {}, + "imported": [], "registry": { "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ 1 ] }, + "governance": { + "delay": 0, + "pending": [], + "sequence": 0 + }, "controllers": {} }, - "cbor_hex": "a4656279746573a0656672616d6500687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016b636f6e74726f6c6c657273a0", - "state_hash": "5ffc1570b9c9ba18a0d930a20b8d23c0dbbeb55dc6b9320b964e7b6e39ca46a9" + "cbor_hex": "aa656279746573a0656672616d6500657065657273a067636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616772657469726564a0686578706f72746564a068696d706f7274656480687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016a676f7665726e616e6365a36564656c6179006770656e64696e67806873657175656e6365006b636f6e74726f6c6c657273a0", + "state_hash": "2581be8db9de04335c3ad38210a8371f07672f8e0e0343b1d7fff20dc3fd4ebe" }, "frames": [ { @@ -3821,11 +4091,21 @@ } }, "frame": 1, + "peers": {}, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "retired": {}, + "exported": {}, + "imported": [], "registry": { "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ 1 ] }, + "governance": { + "delay": 0, + "pending": [], + "sequence": 0 + }, "controllers": { "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": { "keys": [ @@ -3844,8 +4124,8 @@ } } }, - "expected_state_cbor_hex": "a4656279746573a1783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771a565636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656f776e65727835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371666d696e746564006c686973746f72795f686173685820c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f656672616d6501687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016b636f6e74726f6c6c657273a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c6401", - "expected_state_hash": "7738c4579173d130da176af34f9d541c9c7f5d0a4a1c91f4f81f38335194343e" + "expected_state_cbor_hex": "aa656279746573a1783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771a565636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656f776e65727835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371666d696e746564006c686973746f72795f686173685820c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f656672616d6501657065657273a067636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616772657469726564a0686578706f72746564a068696d706f7274656480687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016a676f7665726e616e6365a36564656c6179006770656e64696e67806873657175656e6365006b636f6e74726f6c6c657273a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c6401", + "expected_state_hash": "4454383597b8e3878d4779c5ee74e943941dd4b0655512feeaaf828cf97c3c5a" }, { "frame": 1, @@ -3904,11 +4184,21 @@ } }, "frame": 2, + "peers": {}, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "retired": {}, + "exported": {}, + "imported": [], "registry": { "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ 1 ] }, + "governance": { + "delay": 0, + "pending": [], + "sequence": 0 + }, "controllers": { "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": { "keys": [ @@ -3927,8 +4217,8 @@ } } }, - "expected_state_cbor_hex": "a4656279746573a1783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771a565636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656f776e65727835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371666d696e746564006c686973746f72795f686173685820c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f656672616d6502687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016b636f6e74726f6c6c657273a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c6401", - "expected_state_hash": "ce94e71427041f3f9b91b2ec76d9a87e3339217dea702035bf5b7ff0c4555493" + "expected_state_cbor_hex": "aa656279746573a1783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771a565636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656f776e65727835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371666d696e746564006c686973746f72795f686173685820c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f656672616d6502657065657273a067636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616772657469726564a0686578706f72746564a068696d706f7274656480687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016a676f7665726e616e6365a36564656c6179006770656e64696e67806873657175656e6365006b636f6e74726f6c6c657273a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c6401", + "expected_state_hash": "5504fe8c46b93897a29d496d4542336413a86d7b0e6021fded5d33ce7a89b7b8" }, { "frame": 2, @@ -4025,11 +4315,21 @@ } }, "frame": 3, + "peers": {}, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "retired": {}, + "exported": {}, + "imported": [], "registry": { "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ 1 ] }, + "governance": { + "delay": 0, + "pending": [], + "sequence": 0 + }, "controllers": { "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": { "keys": [ @@ -4063,8 +4363,8 @@ } } }, - "expected_state_cbor_hex": "a4656279746573a1783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771a565636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656f776e657278354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371666d696e746564006c686973746f72795f68617368582022ce0f5bb45421a6b088684ff3ab79e5109a3f2a90a0b5b2db41a0f73548c51d656672616d6503687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016b636f6e74726f6c6c657273a278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c64017835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161a7646b657973815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c6873657175656e636500696e6578745f6b65797381783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e71697468726573686f6c64016a6c6173745f6576656e747835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616d65737461626c6973686d656e74006e6e6578745f7468726573686f6c6401", - "expected_state_hash": "d15d5f6d8270192e3d5a2edbb9c36fa25931901a5a268aad455fedeb70281be3" + "expected_state_cbor_hex": "aa656279746573a1783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771a565636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656f776e657278354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371666d696e746564006c686973746f72795f68617368582022ce0f5bb45421a6b088684ff3ab79e5109a3f2a90a0b5b2db41a0f73548c51d656672616d6503657065657273a067636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616772657469726564a0686578706f72746564a068696d706f7274656480687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016a676f7665726e616e6365a36564656c6179006770656e64696e67806873657175656e6365006b636f6e74726f6c6c657273a278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c64017835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161a7646b657973815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c6873657175656e636500696e6578745f6b65797381783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e71697468726573686f6c64016a6c6173745f6576656e747835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616d65737461626c6973686d656e74006e6e6578745f7468726573686f6c6401", + "expected_state_hash": "241bc07d051f51cf1f3a4daacf8217289c58f2067b175267aa89182bbc4e56fe" } ] }, @@ -4075,15 +4375,25 @@ "state": { "bytes": {}, "frame": 0, + "peers": {}, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "retired": {}, + "exported": {}, + "imported": [], "registry": { "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ 1 ] }, + "governance": { + "delay": 0, + "pending": [], + "sequence": 0 + }, "controllers": {} }, - "cbor_hex": "a4656279746573a0656672616d6500687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016b636f6e74726f6c6c657273a0", - "state_hash": "5ffc1570b9c9ba18a0d930a20b8d23c0dbbeb55dc6b9320b964e7b6e39ca46a9" + "cbor_hex": "aa656279746573a0656672616d6500657065657273a067636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616772657469726564a0686578706f72746564a068696d706f7274656480687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016a676f7665726e616e6365a36564656c6179006770656e64696e67806873657175656e6365006b636f6e74726f6c6c657273a0", + "state_hash": "2581be8db9de04335c3ad38210a8371f07672f8e0e0343b1d7fff20dc3fd4ebe" }, "frames": [ { @@ -4173,11 +4483,21 @@ "expected_state": { "bytes": {}, "frame": 1, + "peers": {}, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "retired": {}, + "exported": {}, + "imported": [], "registry": { "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ 1 ] }, + "governance": { + "delay": 0, + "pending": [], + "sequence": 0 + }, "controllers": { "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": { "keys": [ @@ -4211,8 +4531,8 @@ } } }, - "expected_state_cbor_hex": "a4656279746573a0656672616d6501687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016b636f6e74726f6c6c657273a278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c64017835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161a7646b657973815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c6873657175656e636500696e6578745f6b65797381783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e71697468726573686f6c64016a6c6173745f6576656e747835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616d65737461626c6973686d656e74006e6e6578745f7468726573686f6c6401", - "expected_state_hash": "8a66db01d8e1724dce1d4260e7c34031e5fc6e28d0eef642e9aa728767490446" + "expected_state_cbor_hex": "aa656279746573a0656672616d6501657065657273a067636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616772657469726564a0686578706f72746564a068696d706f7274656480687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016a676f7665726e616e6365a36564656c6179006770656e64696e67806873657175656e6365006b636f6e74726f6c6c657273a278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c64017835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161a7646b657973815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c6873657175656e636500696e6578745f6b65797381783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e71697468726573686f6c64016a6c6173745f6576656e747835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616d65737461626c6973686d656e74006e6e6578745f7468726573686f6c6401", + "expected_state_hash": "d1ede25939b22b22597f41709f22fcae4b079d7b4f86c2e735b631a56edc1bd6" }, { "frame": 1, @@ -4437,11 +4757,21 @@ "expected_state": { "bytes": {}, "frame": 2, + "peers": {}, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "retired": {}, + "exported": {}, + "imported": [], "registry": { "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ 1 ] }, + "governance": { + "delay": 0, + "pending": [], + "sequence": 0 + }, "controllers": { "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": { "keys": [ @@ -4475,27 +4805,37 @@ } } }, - "expected_state_cbor_hex": "a4656279746573a0656672616d6502687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016b636f6e74726f6c6c657273a278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c64017835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161a7646b657973815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c6873657175656e636500696e6578745f6b65797381783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e71697468726573686f6c64016a6c6173745f6576656e747835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616d65737461626c6973686d656e74006e6e6578745f7468726573686f6c6401", - "expected_state_hash": "97df8e58a63a5d7dd97e3e03e38275383b32ad3978a97b5c7df03053f8555e5b" + "expected_state_cbor_hex": "aa656279746573a0656672616d6502657065657273a067636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616772657469726564a0686578706f72746564a068696d706f7274656480687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016a676f7665726e616e6365a36564656c6179006770656e64696e67806873657175656e6365006b636f6e74726f6c6c657273a278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c64017835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161a7646b657973815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c6873657175656e636500696e6578745f6b65797381783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e71697468726573686f6c64016a6c6173745f6576656e747835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616d65737461626c6973686d656e74006e6e6578745f7468726573686f6c6401", + "expected_state_hash": "022036a35df30d51b5c4da534841fee03a367e7dd0ee6fd1658b83acbd09c748" } ] }, { "name": "state-011-malformed-inputs", - "description": "Inputs dropped before they are read: bytes that are not canonical; an input naming a class there is not (`burn`); an array, not a map; a key event with a member identity spec §3.3 does not define; a mint whose cargo was changed after its identity was computed; a transfer with a member there is not. Inputs naming no class apply last.", + "description": "Inputs dropped before they are read: bytes that are not canonical; an input naming a class there is not (`melt`); an array, not a map; a key event with a member identity spec §3.3 does not define; a mint whose cargo was changed after its identity was computed; a transfer with a member there is not; a burn naming only its byte; a proposal whose change is an action there is not; an import with neither certificate nor envelope. Inputs naming no class apply last.", "genesis": { "state": { "bytes": {}, "frame": 0, + "peers": {}, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "retired": {}, + "exported": {}, + "imported": [], "registry": { "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ 1 ] }, + "governance": { + "delay": 0, + "pending": [], + "sequence": 0 + }, "controllers": {} }, - "cbor_hex": "a4656279746573a0656672616d6500687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016b636f6e74726f6c6c657273a0", - "state_hash": "5ffc1570b9c9ba18a0d930a20b8d23c0dbbeb55dc6b9320b964e7b6e39ca46a9" + "cbor_hex": "aa656279746573a0656672616d6500657065657273a067636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616772657469726564a0686578706f72746564a068696d706f7274656480687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016a676f7665726e616e6365a36564656c6179006770656e64696e67806873657175656e6365006b636f6e74726f6c6c657273a0", + "state_hash": "2581be8db9de04335c3ad38210a8371f07672f8e0e0343b1d7fff20dc3fd4ebe" }, "frames": [ { @@ -4504,6 +4844,14 @@ { "cbor_hex": "a1687472616e73666572a26462797465783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a37716a7472616e736974696f6ea562746f78354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716466726f6d7835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161656672616d651800697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e6174757265584101144df7a6928320d0205e4ab1da5a5020e72d5aab84b9df5771e4593de9a3e282a2129f2b151e45b3840cb06df73bffd6a1939f800eb12b9b0f1e7f96dad18e036d65737461626c6973686d656e74007570726576696f75735f686973746f72795f686173685820c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f" }, + { + "input": { + "melt": { + "byte": "Eyl2abuhbzbih3ao7hvjmgtjyzm4b5jeufdzafn6pme3j6id53z7q" + } + }, + "cbor_hex": "a1646d656c74a16462797465783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771" + }, { "input": { "burn": { @@ -4512,6 +4860,29 @@ }, "cbor_hex": "a1646275726ea16462797465783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771" }, + { + "input": { + "governance": { + "proposal": { + "change": { + "action": "mint_anything" + }, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "sequence": 0 + }, + "approvals": [] + } + }, + "cbor_hex": "a16a676f7665726e616e6365a26870726f706f73616ca3666368616e6765a166616374696f6e6d6d696e745f616e797468696e6767636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616873657175656e63650069617070726f76616c7380" + }, + { + "input": { + "import": { + "logs": [] + } + }, + "cbor_hex": "a166696d706f7274a1646c6f677380" + }, { "input": [ 1 @@ -4619,18 +4990,36 @@ "outcome": "dropped", "error": "malformed_event" }, + { + "input": "726a6130e16a726079a9afd0cc3289b19ae8526cb98a36d2463695f99454e1c5", + "class": "governance", + "outcome": "dropped", + "error": "malformed_input" + }, { "input": "0cdf32e4201af7a58503b8f3f8814ffd3211cd2da39d58990386b3baad6ed26e", "class": "mint", "outcome": "dropped", "error": "said_mismatch" }, + { + "input": "988b343a7e5dfc4c0bdb3b73251d8034ef777d0ad96fc5a38fbd1203e341ac19", + "class": "import", + "outcome": "dropped", + "error": "malformed_input" + }, { "input": "beb0d3a76269476d93c815cc1ad9e58dbe4209dadbc450b3f8d132f935bdcd1b", "class": "transfer", "outcome": "dropped", "error": "malformed_input" }, + { + "input": "dc9feef652925cbb1358eb88810f6ecc738f42e064203f27d815ddf3eb0d1913", + "class": "burn", + "outcome": "dropped", + "error": "malformed_input" + }, { "input": "108611877d849ef31b3edb54ce59cba254e4d4f198b917f64f0400936a881f3a", "class": null, @@ -4644,7 +5033,7 @@ "error": "malformed_input" }, { - "input": "dc9feef652925cbb1358eb88810f6ecc738f42e064203f27d815ddf3eb0d1913", + "input": "6590be984c46c4fff6e394fc764075310ca944eeefedfc10f06255ae8c82e7ba", "class": null, "outcome": "dropped", "error": "malformed_input" @@ -4653,15 +5042,25 @@ "expected_state": { "bytes": {}, "frame": 1, + "peers": {}, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "retired": {}, + "exported": {}, + "imported": [], "registry": { "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ 1 ] }, + "governance": { + "delay": 0, + "pending": [], + "sequence": 0 + }, "controllers": {} }, - "expected_state_cbor_hex": "a4656279746573a0656672616d6501687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016b636f6e74726f6c6c657273a0", - "expected_state_hash": "5b556e53311dce60b3bdeafb197c90609a0a09c4819ebedebcdad6cc07d636de" + "expected_state_cbor_hex": "aa656279746573a0656672616d6501657065657273a067636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616772657469726564a0686578706f72746564a068696d706f7274656480687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016a676f7665726e616e6365a36564656c6179006770656e64696e67806873657175656e6365006b636f6e74726f6c6c657273a0", + "expected_state_hash": "9d09c6afc78471a34281e9faf1a73060c0d973dbca9891707e22a0f5b1683906" } ] }, @@ -4672,15 +5071,25 @@ "state": { "bytes": {}, "frame": 0, + "peers": {}, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "retired": {}, + "exported": {}, + "imported": [], "registry": { "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ 1 ] }, + "governance": { + "delay": 0, + "pending": [], + "sequence": 0 + }, "controllers": {} }, - "cbor_hex": "a4656279746573a0656672616d6500687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016b636f6e74726f6c6c657273a0", - "state_hash": "5ffc1570b9c9ba18a0d930a20b8d23c0dbbeb55dc6b9320b964e7b6e39ca46a9" + "cbor_hex": "aa656279746573a0656672616d6500657065657273a067636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616772657469726564a0686578706f72746564a068696d706f7274656480687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016a676f7665726e616e6365a36564656c6179006770656e64696e67806873657175656e6365006b636f6e74726f6c6c657273a0", + "state_hash": "2581be8db9de04335c3ad38210a8371f07672f8e0e0343b1d7fff20dc3fd4ebe" }, "frames": [ { @@ -4914,11 +5323,21 @@ } }, "frame": 1, + "peers": {}, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "retired": {}, + "exported": {}, + "imported": [], "registry": { "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ 1 ] }, + "governance": { + "delay": 0, + "pending": [], + "sequence": 0 + }, "controllers": { "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": { "keys": [ @@ -4952,8 +5371,9466 @@ } } }, - "expected_state_cbor_hex": "a4656279746573a1783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771a565636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656f776e65727835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371666d696e746564006c686973746f72795f686173685820c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f656672616d6501687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016b636f6e74726f6c6c657273a278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c64017835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161a7646b657973815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c6873657175656e636500696e6578745f6b65797381783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e71697468726573686f6c64016a6c6173745f6576656e747835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616d65737461626c6973686d656e74006e6e6578745f7468726573686f6c6401", - "expected_state_hash": "0e0de20e6b5049ceeba37c87f334a75cff16adbec27df03d7becf08fec5e2ea5" + "expected_state_cbor_hex": "aa656279746573a1783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771a565636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656f776e65727835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371666d696e746564006c686973746f72795f686173685820c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f656672616d6501657065657273a067636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616772657469726564a0686578706f72746564a068696d706f7274656480687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016a676f7665726e616e6365a36564656c6179006770656e64696e67806873657175656e6365006b636f6e74726f6c6c657273a278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c64017835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161a7646b657973815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c6873657175656e636500696e6578745f6b65797381783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e71697468726573686f6c64016a6c6173745f6576656e747835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616d65737461626c6973686d656e74006e6e6578745f7468726573686f6c6401", + "expected_state_hash": "bc7de16c497a07d7f98ba6e31494352dc20b9298d564392e4e73c012e14be227" + } + ] + }, + { + "name": "state-013-issuer-added-after-the-delay", + "description": "Frame 0 holds the issuer's and Alice's inceptions and the issuer's approval of adding Alice as a USD issuer. Key events apply before governance, so the approval's signer is known when it is checked. The issuer is the cluster's only issuer: one elector, so the quorum is floor(2·1/3)+1 = 1. The cluster's governance delay is 2, so the change is pending until frame 0 + 1 + 2 = 3: Alice's mint is refused in frames 1 and 2 and applied in frame 3, the change having taken effect at the frame's start. The governance sequence number advances when the proposal is accepted.", + "genesis": { + "state": { + "bytes": {}, + "frame": 0, + "peers": {}, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "retired": {}, + "exported": {}, + "imported": [], + "registry": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ + 1 + ] + }, + "governance": { + "delay": 2, + "pending": [], + "sequence": 0 + }, + "controllers": {} + }, + "cbor_hex": "aa656279746573a0656672616d6500657065657273a067636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616772657469726564a0686578706f72746564a068696d706f7274656480687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016a676f7665726e616e6365a36564656c6179026770656e64696e67806873657175656e6365006b636f6e74726f6c6c657273a0", + "state_hash": "f313b5888691537db9f779640d250a81eeac5432e114972599799bf305682900" + }, + "frames": [ + { + "frame": 0, + "inputs": [ + { + "input": { + "key_event": { + "event": { + "a": [], + "d": "Ei473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "i": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "k": [ + { + "$bytes": "01d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a" + } + ], + "n": [ + "E4fnvjywz23zeyb426croyvctrtqsse237th3kfjid4pfeewx7noa" + ], + "p": "", + "s": 0, + "t": "icp", + "v": "SBYTE10JSON", + "kt": 1, + "nt": 1 + }, + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01e90f89475321e5febce3d271ccb2e304301d0975a6e49aa49a9e76f54ecf4d027097eda8d45ff0d0bf14c94d86f26d7100868c1af79bcfb609792e720e6b1604" + } + } + ] + } + }, + "cbor_hex": "a1696b65795f6576656e74a2656576656e74ab616180616478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371616978354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371616b81582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a616e8178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f6161706061730061746369637061766b534259544531304a534f4e626b7401626e74016a7369676e61747572657381a265696e64657800697369676e6174757265584101e90f89475321e5febce3d271ccb2e304301d0975a6e49aa49a9e76f54ecf4d027097eda8d45ff0d0bf14c94d86f26d7100868c1af79bcfb609792e720e6b1604" + }, + { + "input": { + "key_event": { + "event": { + "a": [], + "d": "Ezxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "i": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "k": [ + { + "$bytes": "013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c" + } + ], + "n": [ + "Eqmsawig6oznh4b5cbovqukvzxa5u5jbiklkrlwhtdo6rbrsyjfnq" + ], + "p": "", + "s": 0, + "t": "icp", + "v": "SBYTE10JSON", + "kt": 1, + "nt": 1 + }, + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01c0999c04eee90f056e29a2753f1a90665636394e819578d4cc2a2a40afb841b9a89a759b881adc095be848ba4ce9be9f64da3f4efcb5f935c0c20723ab68da07" + } + } + ] + } + }, + "cbor_hex": "a1696b65795f6576656e74a2656576656e74ab61618061647835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f716161697835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161616b815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c616e81783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e7161706061730061746369637061766b534259544531304a534f4e626b7401626e74016a7369676e61747572657381a265696e64657800697369676e6174757265584101c0999c04eee90f056e29a2753f1a90665636394e819578d4cc2a2a40afb841b9a89a759b881adc095be848ba4ce9be9f64da3f4efcb5f935c0c20723ab68da07" + }, + { + "input": { + "governance": { + "proposal": { + "change": { + "action": "add_issuer", + "issuer": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "cargo_type": 1 + }, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "sequence": 0 + }, + "approvals": [ + { + "approver": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "0134fc8f537cdf580ab94cb78374492731af86920e6818e5e7a8e47286835e4cc5afa91d21ae30e163269b81d312f54921ff6c6c3b33fe854b09e4dea264c1b201" + } + } + ], + "establishment": 0 + } + } + ] + } + }, + "cbor_hex": "a16a676f7665726e616e6365a26870726f706f73616ca3666368616e6765a366616374696f6e6a6164645f697373756572666973737565727835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616a636172676f5f747970650167636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616873657175656e63650069617070726f76616c7381a268617070726f76657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e617475726558410134fc8f537cdf580ab94cb78374492731af86920e6818e5e7a8e47286835e4cc5afa91d21ae30e163269b81d312f54921ff6c6c3b33fe854b09e4dea264c1b2016d65737461626c6973686d656e7400" + } + ], + "expected_results": [ + { + "input": "6c0cba880da38a32a827d1d6f113123e9c04b7ae7e9df80b3e5060ffc755fff6", + "class": "key_event", + "outcome": "applied" + }, + { + "input": "6e9b571b38262c22a83b5a86bb7aba15ef2f7c90a82ec9fdd124593783c3aedf", + "class": "key_event", + "outcome": "applied" + }, + { + "input": "b7e07adb8e67ed6be036af5767775e1db5c29b4c10654c281a6f024cd019b16c", + "class": "governance", + "outcome": "applied" + } + ], + "expected_state": { + "bytes": {}, + "frame": 1, + "peers": {}, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "retired": {}, + "exported": {}, + "imported": [], + "registry": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ + 1 + ] + }, + "governance": { + "delay": 2, + "pending": [ + { + "change": { + "action": "add_issuer", + "issuer": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "cargo_type": 1 + }, + "effective": 3 + } + ], + "sequence": 1 + }, + "controllers": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": { + "keys": [ + { + "$bytes": "01d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a" + } + ], + "sequence": 0, + "next_keys": [ + "E4fnvjywz23zeyb426croyvctrtqsse237th3kfjid4pfeewx7noa" + ], + "threshold": 1, + "last_event": "Ei473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "establishment": 0, + "next_threshold": 1 + }, + "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa": { + "keys": [ + { + "$bytes": "013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c" + } + ], + "sequence": 0, + "next_keys": [ + "Eqmsawig6oznh4b5cbovqukvzxa5u5jbiklkrlwhtdo6rbrsyjfnq" + ], + "threshold": 1, + "last_event": "Ezxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "establishment": 0, + "next_threshold": 1 + } + } + }, + "expected_state_cbor_hex": "aa656279746573a0656672616d6501657065657273a067636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616772657469726564a0686578706f72746564a068696d706f7274656480687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016a676f7665726e616e6365a36564656c6179026770656e64696e6781a2666368616e6765a366616374696f6e6a6164645f697373756572666973737565727835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616a636172676f5f747970650169656666656374697665036873657175656e6365016b636f6e74726f6c6c657273a278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c64017835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161a7646b657973815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c6873657175656e636500696e6578745f6b65797381783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e71697468726573686f6c64016a6c6173745f6576656e747835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616d65737461626c6973686d656e74006e6e6578745f7468726573686f6c6401", + "expected_state_hash": "4f6df846c6bc5ecdc5f9507ec5783c2b7ee7fed1754c28b3590b88e4c7bb4824" + }, + { + "frame": 1, + "inputs": [ + { + "input": { + "mint": { + "d": "Ekfcfllzur5fsaq2pkvaehdq2o5y43avhihdstuu35arz6bti6xeq", + "cargo": { + "type": 1, + "bytes": { + "$bytes": "a1666d6963726f731a004c4b40" + } + }, + "nonce": { + "$bytes": "d178f9b91c84cb1f9172e52d0238e551" + }, + "issuer": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "recipient": "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01ac8d289f45c708db01d3431c977a114d9b148fcdf84414bb6b9c4b4a64d93dc5c2c461a9d8f02f464d42efdc65dc762b7b0d92eadb90ddeb043155ae0a93ea01" + } + } + ], + "establishment": 0 + } + } + }, + "cbor_hex": "a1646d696e74a661647835456b6663666c6c7a7572356673617132706b766165686471326f3579343361766869686473747575333561727a366274693678657165636172676fa26474797065016562797465734da1666d6963726f731a004c4b40656e6f6e636550d178f9b91c84cb1f9172e52d0238e551666973737565727835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f716169726563697069656e7478354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a7367676932746371697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e6174757265584101ac8d289f45c708db01d3431c977a114d9b148fcdf84414bb6b9c4b4a64d93dc5c2c461a9d8f02f464d42efdc65dc762b7b0d92eadb90ddeb043155ae0a93ea016d65737461626c6973686d656e7400" + } + ], + "expected_results": [ + { + "input": "3622d0104b04cdb6bcfdfb1de2e8194c361f87123e8264b674d180dcb90ea1e4", + "class": "mint", + "outcome": "dropped", + "error": "issuer_not_registered" + } + ], + "expected_state": { + "bytes": {}, + "frame": 2, + "peers": {}, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "retired": {}, + "exported": {}, + "imported": [], + "registry": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ + 1 + ] + }, + "governance": { + "delay": 2, + "pending": [ + { + "change": { + "action": "add_issuer", + "issuer": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "cargo_type": 1 + }, + "effective": 3 + } + ], + "sequence": 1 + }, + "controllers": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": { + "keys": [ + { + "$bytes": "01d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a" + } + ], + "sequence": 0, + "next_keys": [ + "E4fnvjywz23zeyb426croyvctrtqsse237th3kfjid4pfeewx7noa" + ], + "threshold": 1, + "last_event": "Ei473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "establishment": 0, + "next_threshold": 1 + }, + "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa": { + "keys": [ + { + "$bytes": "013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c" + } + ], + "sequence": 0, + "next_keys": [ + "Eqmsawig6oznh4b5cbovqukvzxa5u5jbiklkrlwhtdo6rbrsyjfnq" + ], + "threshold": 1, + "last_event": "Ezxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "establishment": 0, + "next_threshold": 1 + } + } + }, + "expected_state_cbor_hex": "aa656279746573a0656672616d6502657065657273a067636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616772657469726564a0686578706f72746564a068696d706f7274656480687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016a676f7665726e616e6365a36564656c6179026770656e64696e6781a2666368616e6765a366616374696f6e6a6164645f697373756572666973737565727835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616a636172676f5f747970650169656666656374697665036873657175656e6365016b636f6e74726f6c6c657273a278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c64017835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161a7646b657973815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c6873657175656e636500696e6578745f6b65797381783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e71697468726573686f6c64016a6c6173745f6576656e747835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616d65737461626c6973686d656e74006e6e6578745f7468726573686f6c6401", + "expected_state_hash": "33662a15c35a1bbe1eeb6824f9b3d1d9520c8b4ddb538d3ee26d738e38bd0452" + }, + { + "frame": 2, + "inputs": [ + { + "input": { + "mint": { + "d": "Ekfcfllzur5fsaq2pkvaehdq2o5y43avhihdstuu35arz6bti6xeq", + "cargo": { + "type": 1, + "bytes": { + "$bytes": "a1666d6963726f731a004c4b40" + } + }, + "nonce": { + "$bytes": "d178f9b91c84cb1f9172e52d0238e551" + }, + "issuer": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "recipient": "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01ac8d289f45c708db01d3431c977a114d9b148fcdf84414bb6b9c4b4a64d93dc5c2c461a9d8f02f464d42efdc65dc762b7b0d92eadb90ddeb043155ae0a93ea01" + } + } + ], + "establishment": 0 + } + } + }, + "cbor_hex": "a1646d696e74a661647835456b6663666c6c7a7572356673617132706b766165686471326f3579343361766869686473747575333561727a366274693678657165636172676fa26474797065016562797465734da1666d6963726f731a004c4b40656e6f6e636550d178f9b91c84cb1f9172e52d0238e551666973737565727835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f716169726563697069656e7478354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a7367676932746371697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e6174757265584101ac8d289f45c708db01d3431c977a114d9b148fcdf84414bb6b9c4b4a64d93dc5c2c461a9d8f02f464d42efdc65dc762b7b0d92eadb90ddeb043155ae0a93ea016d65737461626c6973686d656e7400" + } + ], + "expected_results": [ + { + "input": "3622d0104b04cdb6bcfdfb1de2e8194c361f87123e8264b674d180dcb90ea1e4", + "class": "mint", + "outcome": "dropped", + "error": "issuer_not_registered" + } + ], + "expected_state": { + "bytes": {}, + "frame": 3, + "peers": {}, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "retired": {}, + "exported": {}, + "imported": [], + "registry": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ + 1 + ] + }, + "governance": { + "delay": 2, + "pending": [ + { + "change": { + "action": "add_issuer", + "issuer": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "cargo_type": 1 + }, + "effective": 3 + } + ], + "sequence": 1 + }, + "controllers": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": { + "keys": [ + { + "$bytes": "01d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a" + } + ], + "sequence": 0, + "next_keys": [ + "E4fnvjywz23zeyb426croyvctrtqsse237th3kfjid4pfeewx7noa" + ], + "threshold": 1, + "last_event": "Ei473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "establishment": 0, + "next_threshold": 1 + }, + "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa": { + "keys": [ + { + "$bytes": "013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c" + } + ], + "sequence": 0, + "next_keys": [ + "Eqmsawig6oznh4b5cbovqukvzxa5u5jbiklkrlwhtdo6rbrsyjfnq" + ], + "threshold": 1, + "last_event": "Ezxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "establishment": 0, + "next_threshold": 1 + } + } + }, + "expected_state_cbor_hex": "aa656279746573a0656672616d6503657065657273a067636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616772657469726564a0686578706f72746564a068696d706f7274656480687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016a676f7665726e616e6365a36564656c6179026770656e64696e6781a2666368616e6765a366616374696f6e6a6164645f697373756572666973737565727835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616a636172676f5f747970650169656666656374697665036873657175656e6365016b636f6e74726f6c6c657273a278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c64017835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161a7646b657973815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c6873657175656e636500696e6578745f6b65797381783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e71697468726573686f6c64016a6c6173745f6576656e747835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616d65737461626c6973686d656e74006e6e6578745f7468726573686f6c6401", + "expected_state_hash": "11896f503983211c60d944db9b5a0e5ea3bc4ec988129401a118b13c5efc3ea0" + }, + { + "frame": 3, + "inputs": [ + { + "input": { + "mint": { + "d": "Ekfcfllzur5fsaq2pkvaehdq2o5y43avhihdstuu35arz6bti6xeq", + "cargo": { + "type": 1, + "bytes": { + "$bytes": "a1666d6963726f731a004c4b40" + } + }, + "nonce": { + "$bytes": "d178f9b91c84cb1f9172e52d0238e551" + }, + "issuer": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "recipient": "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01ac8d289f45c708db01d3431c977a114d9b148fcdf84414bb6b9c4b4a64d93dc5c2c461a9d8f02f464d42efdc65dc762b7b0d92eadb90ddeb043155ae0a93ea01" + } + } + ], + "establishment": 0 + } + } + }, + "cbor_hex": "a1646d696e74a661647835456b6663666c6c7a7572356673617132706b766165686471326f3579343361766869686473747575333561727a366274693678657165636172676fa26474797065016562797465734da1666d6963726f731a004c4b40656e6f6e636550d178f9b91c84cb1f9172e52d0238e551666973737565727835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f716169726563697069656e7478354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a7367676932746371697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e6174757265584101ac8d289f45c708db01d3431c977a114d9b148fcdf84414bb6b9c4b4a64d93dc5c2c461a9d8f02f464d42efdc65dc762b7b0d92eadb90ddeb043155ae0a93ea016d65737461626c6973686d656e7400" + } + ], + "expected_results": [ + { + "input": "3622d0104b04cdb6bcfdfb1de2e8194c361f87123e8264b674d180dcb90ea1e4", + "class": "mint", + "outcome": "applied" + } + ], + "expected_state": { + "bytes": { + "Ekfcfllzur5fsaq2pkvaehdq2o5y43avhihdstuu35arz6bti6xeq": { + "cargo": { + "type": 1, + "bytes": { + "$bytes": "a1666d6963726f731a004c4b40" + } + }, + "owner": "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "issuer": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "minted": 3, + "history_hash": { + "$bytes": "514455af348f4b20434f5540438e1a7771cd82a741c729d29be8239f0668f5c9" + } + } + }, + "frame": 4, + "peers": {}, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "retired": {}, + "exported": {}, + "imported": [], + "registry": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ + 1 + ], + "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa": [ + 1 + ] + }, + "governance": { + "delay": 2, + "pending": [], + "sequence": 1 + }, + "controllers": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": { + "keys": [ + { + "$bytes": "01d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a" + } + ], + "sequence": 0, + "next_keys": [ + "E4fnvjywz23zeyb426croyvctrtqsse237th3kfjid4pfeewx7noa" + ], + "threshold": 1, + "last_event": "Ei473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "establishment": 0, + "next_threshold": 1 + }, + "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa": { + "keys": [ + { + "$bytes": "013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c" + } + ], + "sequence": 0, + "next_keys": [ + "Eqmsawig6oznh4b5cbovqukvzxa5u5jbiklkrlwhtdo6rbrsyjfnq" + ], + "threshold": 1, + "last_event": "Ezxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "establishment": 0, + "next_threshold": 1 + } + } + }, + "expected_state_cbor_hex": "aa656279746573a17835456b6663666c6c7a7572356673617132706b766165686471326f3579343361766869686473747575333561727a3662746936786571a565636172676fa26474797065016562797465734da1666d6963726f731a004c4b40656f776e657278354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a7367676932746371666973737565727835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161666d696e746564036c686973746f72795f686173685820514455af348f4b20434f5540438e1a7771cd82a741c729d29be8239f0668f5c9656672616d6504657065657273a067636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616772657469726564a0686578706f72746564a068696d706f7274656480687265676973747279a278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181017835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f716181016a676f7665726e616e6365a36564656c6179026770656e64696e67806873657175656e6365016b636f6e74726f6c6c657273a278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c64017835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161a7646b657973815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c6873657175656e636500696e6578745f6b65797381783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e71697468726573686f6c64016a6c6173745f6576656e747835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616d65737461626c6973686d656e74006e6e6578745f7468726573686f6c6401", + "expected_state_hash": "5694a2d0a8d1b6705d457d869050dd0d1d6bcf09a46e5f0519e473f2539ba16a" + } + ] + }, + { + "name": "state-014-governance-checks", + "description": "Proposals that fail one check each, with the issuer and Alice as the USD electorate (quorum 2): one for cluster B; one at sequence 7; adding Alice, already registered; removing the custodian, never registered; one the custodian approves, who has no vote; one approved twice by the issuer; one with the issuer's approval alone; one whose approval names the issuer but is signed with Alice's key. Every one is dropped and the governance sequence stays at 0.", + "genesis": { + "state": { + "bytes": {}, + "frame": 0, + "peers": {}, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "retired": {}, + "exported": {}, + "imported": [], + "registry": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ + 1 + ], + "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa": [ + 1 + ] + }, + "governance": { + "delay": 0, + "pending": [], + "sequence": 0 + }, + "controllers": {} + }, + "cbor_hex": "aa656279746573a0656672616d6500657065657273a067636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616772657469726564a0686578706f72746564a068696d706f7274656480687265676973747279a278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181017835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f716181016a676f7665726e616e6365a36564656c6179006770656e64696e67806873657175656e6365006b636f6e74726f6c6c657273a0", + "state_hash": "66d5ca19dc99c84017dbaf0785fd0f6abd47f2977e1a9034fcfb91c5077c8895" + }, + "frames": [ + { + "frame": 0, + "inputs": [ + { + "input": { + "key_event": { + "event": { + "a": [], + "d": "Ei473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "i": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "k": [ + { + "$bytes": "01d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a" + } + ], + "n": [ + "E4fnvjywz23zeyb426croyvctrtqsse237th3kfjid4pfeewx7noa" + ], + "p": "", + "s": 0, + "t": "icp", + "v": "SBYTE10JSON", + "kt": 1, + "nt": 1 + }, + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01e90f89475321e5febce3d271ccb2e304301d0975a6e49aa49a9e76f54ecf4d027097eda8d45ff0d0bf14c94d86f26d7100868c1af79bcfb609792e720e6b1604" + } + } + ] + } + }, + "cbor_hex": "a1696b65795f6576656e74a2656576656e74ab616180616478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371616978354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371616b81582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a616e8178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f6161706061730061746369637061766b534259544531304a534f4e626b7401626e74016a7369676e61747572657381a265696e64657800697369676e6174757265584101e90f89475321e5febce3d271ccb2e304301d0975a6e49aa49a9e76f54ecf4d027097eda8d45ff0d0bf14c94d86f26d7100868c1af79bcfb609792e720e6b1604" + }, + { + "input": { + "key_event": { + "event": { + "a": [], + "d": "Ezxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "i": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "k": [ + { + "$bytes": "013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c" + } + ], + "n": [ + "Eqmsawig6oznh4b5cbovqukvzxa5u5jbiklkrlwhtdo6rbrsyjfnq" + ], + "p": "", + "s": 0, + "t": "icp", + "v": "SBYTE10JSON", + "kt": 1, + "nt": 1 + }, + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01c0999c04eee90f056e29a2753f1a90665636394e819578d4cc2a2a40afb841b9a89a759b881adc095be848ba4ce9be9f64da3f4efcb5f935c0c20723ab68da07" + } + } + ] + } + }, + "cbor_hex": "a1696b65795f6576656e74a2656576656e74ab61618061647835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f716161697835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161616b815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c616e81783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e7161706061730061746369637061766b534259544531304a534f4e626b7401626e74016a7369676e61747572657381a265696e64657800697369676e6174757265584101c0999c04eee90f056e29a2753f1a90665636394e819578d4cc2a2a40afb841b9a89a759b881adc095be848ba4ce9be9f64da3f4efcb5f935c0c20723ab68da07" + }, + { + "input": { + "key_event": { + "event": { + "a": [], + "d": "Eqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "i": "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "k": [ + { + "$bytes": "01f4ff420feb4040a73e51713a44f9966476c755e8e2d18b82677f8ff7a839afe2" + }, + { + "$bytes": "019b54b13b505ae2ddb12e49d8e10ed93725167ab9a0a77803538fc69858cdb0e2" + }, + { + "$bytes": "015c26708ee23779ee7b628241cc1735ed1ba4527639d7383bbc0ad9aa6295f535" + } + ], + "n": [ + "Efcf43zs566fqd5jlkxmbqnv2srtgk45uhenfpc4p5xzfkx7rdvma", + "Euaam4ynyfrxpmxiyogpumg3m6bdb4s5jigslwv3oqnp2gswv4buq", + "Ell3qkq2hpnwirn4m6hgulph32looiev6e5hgst2oc5c5f6jiwjjq" + ], + "p": "", + "s": 0, + "t": "icp", + "v": "SBYTE10JSON", + "kt": 2, + "nt": 2 + }, + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01e9f5ae4b064588588f8566045833d5860bd680c6fd7182246813fa73710393eec68a6a859931f597dc169950d4aa3539d1e7296372488821cf3b233e5eda940d" + } + }, + { + "index": 1, + "signature": { + "$bytes": "01a2fb0fee6f1bfce74bc0b9e324fec7b3ee5415171740310a3fa769ff6aadd3ed3f75496a7eeb08dcf6db4e939810246c45a1c6f0474a64ec6e558cfe8e50910a" + } + } + ] + } + }, + "cbor_hex": "a1696b65795f6576656e74a2656576656e74ab616180616478354571656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a7367676932746371616978354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a7367676932746371616b83582101f4ff420feb4040a73e51713a44f9966476c755e8e2d18b82677f8ff7a839afe25821019b54b13b505ae2ddb12e49d8e10ed93725167ab9a0a77803538fc69858cdb0e25821015c26708ee23779ee7b628241cc1735ed1ba4527639d7383bbc0ad9aa6295f535616e8378354566636634337a73353636667164356a6c6b786d62716e7632737274676b34357568656e667063347035787a666b78377264766d617835457561616d34796e79667278706d7869796f6770756d67336d366264623473356a6967736c7776336f716e703267737776346275717835456c6c33716b713268706e7769726e346d366867756c706833326c6f6f69657636653568677374326f6335633566366a69776a6a7161706061730061746369637061766b534259544531304a534f4e626b7402626e74026a7369676e61747572657382a265696e64657800697369676e6174757265584101e9f5ae4b064588588f8566045833d5860bd680c6fd7182246813fa73710393eec68a6a859931f597dc169950d4aa3539d1e7296372488821cf3b233e5eda940da265696e64657801697369676e6174757265584101a2fb0fee6f1bfce74bc0b9e324fec7b3ee5415171740310a3fa769ff6aadd3ed3f75496a7eeb08dcf6db4e939810246c45a1c6f0474a64ec6e558cfe8e50910a" + } + ], + "expected_results": [ + { + "input": "4b0f387ee0718d2d18cc9a9da65b544f0743c5c18c002548fc6738a089cff058", + "class": "key_event", + "outcome": "applied" + }, + { + "input": "6c0cba880da38a32a827d1d6f113123e9c04b7ae7e9df80b3e5060ffc755fff6", + "class": "key_event", + "outcome": "applied" + }, + { + "input": "6e9b571b38262c22a83b5a86bb7aba15ef2f7c90a82ec9fdd124593783c3aedf", + "class": "key_event", + "outcome": "applied" + } + ], + "expected_state": { + "bytes": {}, + "frame": 1, + "peers": {}, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "retired": {}, + "exported": {}, + "imported": [], + "registry": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ + 1 + ], + "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa": [ + 1 + ] + }, + "governance": { + "delay": 0, + "pending": [], + "sequence": 0 + }, + "controllers": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": { + "keys": [ + { + "$bytes": "01d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a" + } + ], + "sequence": 0, + "next_keys": [ + "E4fnvjywz23zeyb426croyvctrtqsse237th3kfjid4pfeewx7noa" + ], + "threshold": 1, + "last_event": "Ei473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "establishment": 0, + "next_threshold": 1 + }, + "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq": { + "keys": [ + { + "$bytes": "01f4ff420feb4040a73e51713a44f9966476c755e8e2d18b82677f8ff7a839afe2" + }, + { + "$bytes": "019b54b13b505ae2ddb12e49d8e10ed93725167ab9a0a77803538fc69858cdb0e2" + }, + { + "$bytes": "015c26708ee23779ee7b628241cc1735ed1ba4527639d7383bbc0ad9aa6295f535" + } + ], + "sequence": 0, + "next_keys": [ + "Efcf43zs566fqd5jlkxmbqnv2srtgk45uhenfpc4p5xzfkx7rdvma", + "Euaam4ynyfrxpmxiyogpumg3m6bdb4s5jigslwv3oqnp2gswv4buq", + "Ell3qkq2hpnwirn4m6hgulph32looiev6e5hgst2oc5c5f6jiwjjq" + ], + "threshold": 2, + "last_event": "Eqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "establishment": 0, + "next_threshold": 2 + }, + "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa": { + "keys": [ + { + "$bytes": "013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c" + } + ], + "sequence": 0, + "next_keys": [ + "Eqmsawig6oznh4b5cbovqukvzxa5u5jbiklkrlwhtdo6rbrsyjfnq" + ], + "threshold": 1, + "last_event": "Ezxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "establishment": 0, + "next_threshold": 1 + } + } + }, + "expected_state_cbor_hex": "aa656279746573a0656672616d6501657065657273a067636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616772657469726564a0686578706f72746564a068696d706f7274656480687265676973747279a278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181017835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f716181016a676f7665726e616e6365a36564656c6179006770656e64696e67806873657175656e6365006b636f6e74726f6c6c657273a378354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c640178354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a7367676932746371a7646b65797383582101f4ff420feb4040a73e51713a44f9966476c755e8e2d18b82677f8ff7a839afe25821019b54b13b505ae2ddb12e49d8e10ed93725167ab9a0a77803538fc69858cdb0e25821015c26708ee23779ee7b628241cc1735ed1ba4527639d7383bbc0ad9aa6295f5356873657175656e636500696e6578745f6b6579738378354566636634337a73353636667164356a6c6b786d62716e7632737274676b34357568656e667063347035787a666b78377264766d617835457561616d34796e79667278706d7869796f6770756d67336d366264623473356a6967736c7776336f716e703267737776346275717835456c6c33716b713268706e7769726e346d366867756c706833326c6f6f69657636653568677374326f6335633566366a69776a6a71697468726573686f6c64026a6c6173745f6576656e7478354571656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c64027835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161a7646b657973815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c6873657175656e636500696e6578745f6b65797381783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e71697468726573686f6c64016a6c6173745f6576656e747835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616d65737461626c6973686d656e74006e6e6578745f7468726573686f6c6401", + "expected_state_hash": "f49388fb041207df618aafbbe7302dc526b607b352606ba3383370ee68f3b335" + }, + { + "frame": 1, + "inputs": [ + { + "input": { + "governance": { + "proposal": { + "change": { + "action": "add_issuer", + "issuer": "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "cargo_type": 1 + }, + "cluster": "Enldsomgkjdhwaeznqf2cyu6j7jqwmkbfrc2klavaaybu6rfzewkq", + "sequence": 0 + }, + "approvals": [ + { + "approver": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "0126e3d91c22ddabffea179baf5100cebd392ce78778954183069fc8902fa5e884838fa1968c98e3da8c6d9e18e2b6cce3da593a7e140413dee2ccba8d243c040f" + } + } + ], + "establishment": 0 + } + }, + { + "approver": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "015b4952af6114e068ed69c1412effa96b06e85ff9c962e9f3df6b29f828063276a18255300e4e70b6f9c3370a7e063c8a602d9a4e9dfbe64feab1d76015d75709" + } + } + ], + "establishment": 0 + } + } + ] + } + }, + "cbor_hex": "a16a676f7665726e616e6365a26870726f706f73616ca3666368616e6765a366616374696f6e6a6164645f6973737565726669737375657278354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716a636172676f5f747970650167636c75737465727835456e6c64736f6d676b6a64687761657a6e716632637975366a376a71776d6b62667263326b6c617661617962753672667a65776b716873657175656e63650069617070726f76616c7382a268617070726f76657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e617475726558410126e3d91c22ddabffea179baf5100cebd392ce78778954183069fc8902fa5e884838fa1968c98e3da8c6d9e18e2b6cce3da593a7e140413dee2ccba8d243c040f6d65737461626c6973686d656e7400a268617070726f7665727835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e61747572655841015b4952af6114e068ed69c1412effa96b06e85ff9c962e9f3df6b29f828063276a18255300e4e70b6f9c3370a7e063c8a602d9a4e9dfbe64feab1d76015d757096d65737461626c6973686d656e7400" + }, + { + "input": { + "governance": { + "proposal": { + "change": { + "action": "add_issuer", + "issuer": "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "cargo_type": 1 + }, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "sequence": 7 + }, + "approvals": [ + { + "approver": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01a9b3caed43b6b36e94950300551739a710e137b0b3ffa8cc9d542890f3af70ff63764ed48e649742c098e1fe82cf198932baf6736a93c46be9d74b088f1be80d" + } + } + ], + "establishment": 0 + } + }, + { + "approver": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01897da1ac05dcb27227f2d411f7b603847f6b941c8a985f4d624f8795557c9c134f79a2c99f9b8e8d21d136705c921283d7d254102395cdd37de1e27991087809" + } + } + ], + "establishment": 0 + } + } + ] + } + }, + "cbor_hex": "a16a676f7665726e616e6365a26870726f706f73616ca3666368616e6765a366616374696f6e6a6164645f6973737565726669737375657278354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716a636172676f5f747970650167636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616873657175656e63650769617070726f76616c7382a268617070726f76657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e6174757265584101a9b3caed43b6b36e94950300551739a710e137b0b3ffa8cc9d542890f3af70ff63764ed48e649742c098e1fe82cf198932baf6736a93c46be9d74b088f1be80d6d65737461626c6973686d656e7400a268617070726f7665727835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e6174757265584101897da1ac05dcb27227f2d411f7b603847f6b941c8a985f4d624f8795557c9c134f79a2c99f9b8e8d21d136705c921283d7d254102395cdd37de1e279910878096d65737461626c6973686d656e7400" + }, + { + "input": { + "governance": { + "proposal": { + "change": { + "action": "add_issuer", + "issuer": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "cargo_type": 1 + }, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "sequence": 0 + }, + "approvals": [ + { + "approver": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "0134fc8f537cdf580ab94cb78374492731af86920e6818e5e7a8e47286835e4cc5afa91d21ae30e163269b81d312f54921ff6c6c3b33fe854b09e4dea264c1b201" + } + } + ], + "establishment": 0 + } + }, + { + "approver": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "0113e2f48bb2f2328a81943dc251b42845766be02cf33fd05e539ef9763ba620fd78abda9b0a7c1e4368249dd9712b1853161b61e82208b3539ed1508307a4e301" + } + } + ], + "establishment": 0 + } + } + ] + } + }, + "cbor_hex": "a16a676f7665726e616e6365a26870726f706f73616ca3666368616e6765a366616374696f6e6a6164645f697373756572666973737565727835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616a636172676f5f747970650167636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616873657175656e63650069617070726f76616c7382a268617070726f76657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e617475726558410134fc8f537cdf580ab94cb78374492731af86920e6818e5e7a8e47286835e4cc5afa91d21ae30e163269b81d312f54921ff6c6c3b33fe854b09e4dea264c1b2016d65737461626c6973686d656e7400a268617070726f7665727835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e617475726558410113e2f48bb2f2328a81943dc251b42845766be02cf33fd05e539ef9763ba620fd78abda9b0a7c1e4368249dd9712b1853161b61e82208b3539ed1508307a4e3016d65737461626c6973686d656e7400" + }, + { + "input": { + "governance": { + "proposal": { + "change": { + "action": "remove_issuer", + "issuer": "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "cargo_type": 1 + }, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "sequence": 0 + }, + "approvals": [ + { + "approver": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "0131cbcca742175717f9a22e5a5e4c3f357ca2050626baa248b28b962801a9690fb6c7d02b75c92dbbfa1f202a50d613cf5d8e89e48dc338e212dfc88f9cde4506" + } + } + ], + "establishment": 0 + } + }, + { + "approver": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "017aa2d2fd04287c170fcb27a3f35124b69d615c57d44aad525d184d429bfdbee3273daced4c6f1f98bc87fd6ed21ea560dc3bdc288f9fa2a3e0061ea49bc15404" + } + } + ], + "establishment": 0 + } + } + ] + } + }, + "cbor_hex": "a16a676f7665726e616e6365a26870726f706f73616ca3666368616e6765a366616374696f6e6d72656d6f76655f6973737565726669737375657278354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716a636172676f5f747970650167636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616873657175656e63650069617070726f76616c7382a268617070726f76657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e617475726558410131cbcca742175717f9a22e5a5e4c3f357ca2050626baa248b28b962801a9690fb6c7d02b75c92dbbfa1f202a50d613cf5d8e89e48dc338e212dfc88f9cde45066d65737461626c6973686d656e7400a268617070726f7665727835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e61747572655841017aa2d2fd04287c170fcb27a3f35124b69d615c57d44aad525d184d429bfdbee3273daced4c6f1f98bc87fd6ed21ea560dc3bdc288f9fa2a3e0061ea49bc154046d65737461626c6973686d656e7400" + }, + { + "input": { + "governance": { + "proposal": { + "change": { + "action": "add_issuer", + "issuer": "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "cargo_type": 1 + }, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "sequence": 0 + }, + "approvals": [ + { + "approver": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01928fcd20b4ff1c64e1c91096295481216e5a4195d8618fc35a480edae2f3a2e5c9c80db4a6db674fc252151580dea45c83b6aa8c880c2085a5ed946e4897e308" + } + } + ], + "establishment": 0 + } + }, + { + "approver": "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01f7020b2af9d0eab389b522fc0c2e2a06df9efccc21e36f315766fc1d050a4c0db41eb91080758fb2979af0e03cfdc1216d9c7640c88bfdba5464bfd228c4b004" + } + }, + { + "index": 2, + "signature": { + "$bytes": "01dff19d5748a6d553131deae1f9f25e5a97901af1f99155f8bdd20c9ded60b6628059f25cb73ea6d74aafddc25631acb1f288640c8eccd8ca1b9717cd99ab610e" + } + } + ], + "establishment": 0 + } + } + ] + } + }, + "cbor_hex": "a16a676f7665726e616e6365a26870726f706f73616ca3666368616e6765a366616374696f6e6a6164645f6973737565726669737375657278354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716a636172676f5f747970650167636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616873657175656e63650069617070726f76616c7382a268617070726f76657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e6174757265584101928fcd20b4ff1c64e1c91096295481216e5a4195d8618fc35a480edae2f3a2e5c9c80db4a6db674fc252151580dea45c83b6aa8c880c2085a5ed946e4897e3086d65737461626c6973686d656e7400a268617070726f76657278354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a7367676932746371697369676e6174757265a26a7369676e61747572657382a265696e64657800697369676e6174757265584101f7020b2af9d0eab389b522fc0c2e2a06df9efccc21e36f315766fc1d050a4c0db41eb91080758fb2979af0e03cfdc1216d9c7640c88bfdba5464bfd228c4b004a265696e64657802697369676e6174757265584101dff19d5748a6d553131deae1f9f25e5a97901af1f99155f8bdd20c9ded60b6628059f25cb73ea6d74aafddc25631acb1f288640c8eccd8ca1b9717cd99ab610e6d65737461626c6973686d656e7400" + }, + { + "input": { + "governance": { + "proposal": { + "change": { + "action": "add_issuer", + "issuer": "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "cargo_type": 1 + }, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "sequence": 0 + }, + "approvals": [ + { + "approver": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01928fcd20b4ff1c64e1c91096295481216e5a4195d8618fc35a480edae2f3a2e5c9c80db4a6db674fc252151580dea45c83b6aa8c880c2085a5ed946e4897e308" + } + } + ], + "establishment": 0 + } + }, + { + "approver": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01928fcd20b4ff1c64e1c91096295481216e5a4195d8618fc35a480edae2f3a2e5c9c80db4a6db674fc252151580dea45c83b6aa8c880c2085a5ed946e4897e308" + } + } + ], + "establishment": 0 + } + } + ] + } + }, + "cbor_hex": "a16a676f7665726e616e6365a26870726f706f73616ca3666368616e6765a366616374696f6e6a6164645f6973737565726669737375657278354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716a636172676f5f747970650167636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616873657175656e63650069617070726f76616c7382a268617070726f76657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e6174757265584101928fcd20b4ff1c64e1c91096295481216e5a4195d8618fc35a480edae2f3a2e5c9c80db4a6db674fc252151580dea45c83b6aa8c880c2085a5ed946e4897e3086d65737461626c6973686d656e7400a268617070726f76657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e6174757265584101928fcd20b4ff1c64e1c91096295481216e5a4195d8618fc35a480edae2f3a2e5c9c80db4a6db674fc252151580dea45c83b6aa8c880c2085a5ed946e4897e3086d65737461626c6973686d656e7400" + }, + { + "input": { + "governance": { + "proposal": { + "change": { + "action": "add_issuer", + "issuer": "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "cargo_type": 1 + }, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "sequence": 0 + }, + "approvals": [ + { + "approver": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01928fcd20b4ff1c64e1c91096295481216e5a4195d8618fc35a480edae2f3a2e5c9c80db4a6db674fc252151580dea45c83b6aa8c880c2085a5ed946e4897e308" + } + } + ], + "establishment": 0 + } + } + ] + } + }, + "cbor_hex": "a16a676f7665726e616e6365a26870726f706f73616ca3666368616e6765a366616374696f6e6a6164645f6973737565726669737375657278354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716a636172676f5f747970650167636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616873657175656e63650069617070726f76616c7381a268617070726f76657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e6174757265584101928fcd20b4ff1c64e1c91096295481216e5a4195d8618fc35a480edae2f3a2e5c9c80db4a6db674fc252151580dea45c83b6aa8c880c2085a5ed946e4897e3086d65737461626c6973686d656e7400" + }, + { + "input": { + "governance": { + "proposal": { + "change": { + "action": "add_issuer", + "issuer": "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "cargo_type": 1 + }, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "sequence": 0 + }, + "approvals": [ + { + "approver": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "013879530541c35bf21a0b742b03de51651440b35778c88479ba604ba5d9d09f4672624ceaa7fdc7cbc7bcef6899585b728989ca3fe8cfc4b07cdfacdd14443b00" + } + } + ], + "establishment": 0 + } + }, + { + "approver": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "013879530541c35bf21a0b742b03de51651440b35778c88479ba604ba5d9d09f4672624ceaa7fdc7cbc7bcef6899585b728989ca3fe8cfc4b07cdfacdd14443b00" + } + } + ], + "establishment": 0 + } + } + ] + } + }, + "cbor_hex": "a16a676f7665726e616e6365a26870726f706f73616ca3666368616e6765a366616374696f6e6a6164645f6973737565726669737375657278354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716a636172676f5f747970650167636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616873657175656e63650069617070726f76616c7382a268617070726f76657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e61747572655841013879530541c35bf21a0b742b03de51651440b35778c88479ba604ba5d9d09f4672624ceaa7fdc7cbc7bcef6899585b728989ca3fe8cfc4b07cdfacdd14443b006d65737461626c6973686d656e7400a268617070726f7665727835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e61747572655841013879530541c35bf21a0b742b03de51651440b35778c88479ba604ba5d9d09f4672624ceaa7fdc7cbc7bcef6899585b728989ca3fe8cfc4b07cdfacdd14443b006d65737461626c6973686d656e7400" + } + ], + "expected_results": [ + { + "input": "3e499e588df84cc7ab82b36e54c12600bd872b045cdabfe86e753edaaf050837", + "class": "governance", + "outcome": "dropped", + "error": "signature_invalid" + }, + { + "input": "515a2ff67c272eb3896ede65c8933a4f05771eb8e46928a9e1d9ae2d3ac8ab87", + "class": "governance", + "outcome": "dropped", + "error": "wrong_cluster" + }, + { + "input": "700f2f641bad935b6a2d7f564e54daeac7f3eea9d3e562b1af6b59a5a312a916", + "class": "governance", + "outcome": "dropped", + "error": "below_quorum" + }, + { + "input": "8287af2646f382b0a3d41f8c9bbcb818a2f63d9965a4c3bef3040a7055e1ea72", + "class": "governance", + "outcome": "dropped", + "error": "stale_sequence" + }, + { + "input": "83e0fee9d40a19ece10060fe4d9d17f05c6ac05be1fe1bdc75cd82d260846e61", + "class": "governance", + "outcome": "dropped", + "error": "not_registered" + }, + { + "input": "868b20de5b524e1c5197abb6fbba0bfd4b0618b08354e140eac6ef74b3cc15a3", + "class": "governance", + "outcome": "dropped", + "error": "not_an_elector" + }, + { + "input": "cb6a16d3fef935b1449a81e641206bfc7ee4762b69497ff7717eaca238aa3a06", + "class": "governance", + "outcome": "dropped", + "error": "already_registered" + }, + { + "input": "fdc2cd2e1b2450138018d37983b2be5091967efae738b21a4708e44d95482a4d", + "class": "governance", + "outcome": "dropped", + "error": "duplicate_approver" + } + ], + "expected_state": { + "bytes": {}, + "frame": 2, + "peers": {}, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "retired": {}, + "exported": {}, + "imported": [], + "registry": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ + 1 + ], + "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa": [ + 1 + ] + }, + "governance": { + "delay": 0, + "pending": [], + "sequence": 0 + }, + "controllers": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": { + "keys": [ + { + "$bytes": "01d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a" + } + ], + "sequence": 0, + "next_keys": [ + "E4fnvjywz23zeyb426croyvctrtqsse237th3kfjid4pfeewx7noa" + ], + "threshold": 1, + "last_event": "Ei473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "establishment": 0, + "next_threshold": 1 + }, + "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq": { + "keys": [ + { + "$bytes": "01f4ff420feb4040a73e51713a44f9966476c755e8e2d18b82677f8ff7a839afe2" + }, + { + "$bytes": "019b54b13b505ae2ddb12e49d8e10ed93725167ab9a0a77803538fc69858cdb0e2" + }, + { + "$bytes": "015c26708ee23779ee7b628241cc1735ed1ba4527639d7383bbc0ad9aa6295f535" + } + ], + "sequence": 0, + "next_keys": [ + "Efcf43zs566fqd5jlkxmbqnv2srtgk45uhenfpc4p5xzfkx7rdvma", + "Euaam4ynyfrxpmxiyogpumg3m6bdb4s5jigslwv3oqnp2gswv4buq", + "Ell3qkq2hpnwirn4m6hgulph32looiev6e5hgst2oc5c5f6jiwjjq" + ], + "threshold": 2, + "last_event": "Eqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "establishment": 0, + "next_threshold": 2 + }, + "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa": { + "keys": [ + { + "$bytes": "013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c" + } + ], + "sequence": 0, + "next_keys": [ + "Eqmsawig6oznh4b5cbovqukvzxa5u5jbiklkrlwhtdo6rbrsyjfnq" + ], + "threshold": 1, + "last_event": "Ezxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "establishment": 0, + "next_threshold": 1 + } + } + }, + "expected_state_cbor_hex": "aa656279746573a0656672616d6502657065657273a067636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616772657469726564a0686578706f72746564a068696d706f7274656480687265676973747279a278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181017835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f716181016a676f7665726e616e6365a36564656c6179006770656e64696e67806873657175656e6365006b636f6e74726f6c6c657273a378354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c640178354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a7367676932746371a7646b65797383582101f4ff420feb4040a73e51713a44f9966476c755e8e2d18b82677f8ff7a839afe25821019b54b13b505ae2ddb12e49d8e10ed93725167ab9a0a77803538fc69858cdb0e25821015c26708ee23779ee7b628241cc1735ed1ba4527639d7383bbc0ad9aa6295f5356873657175656e636500696e6578745f6b6579738378354566636634337a73353636667164356a6c6b786d62716e7632737274676b34357568656e667063347035787a666b78377264766d617835457561616d34796e79667278706d7869796f6770756d67336d366264623473356a6967736c7776336f716e703267737776346275717835456c6c33716b713268706e7769726e346d366867756c706833326c6f6f69657636653568677374326f6335633566366a69776a6a71697468726573686f6c64026a6c6173745f6576656e7478354571656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c64027835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161a7646b657973815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c6873657175656e636500696e6578745f6b65797381783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e71697468726573686f6c64016a6c6173745f6576656e747835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616d65737461626c6973686d656e74006e6e6578745f7468726573686f6c6401", + "expected_state_hash": "a50770239ff9ce091ed9e266e8821a300b4bd9f570dd11ab86e53728d05d6b8c" + } + ] + }, + { + "name": "state-015-removal-without-the-target", + "description": "Three USD issuers; the custodian is to be removed. An issuer being removed has no vote on its own removal, so the electorate is the other two and the quorum is 2. With the custodian's approval in place of Alice's the proposal is dropped; with the issuer's and Alice's it is accepted, and from frame 3 the custodian can no longer mint.", + "genesis": { + "state": { + "bytes": {}, + "frame": 0, + "peers": {}, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "retired": {}, + "exported": {}, + "imported": [], + "registry": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ + 1 + ], + "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq": [ + 1 + ], + "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa": [ + 1 + ] + }, + "governance": { + "delay": 0, + "pending": [], + "sequence": 0 + }, + "controllers": {} + }, + "cbor_hex": "aa656279746573a0656672616d6500657065657273a067636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616772657469726564a0686578706f72746564a068696d706f7274656480687265676973747279a378354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371810178354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a736767693274637181017835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f716181016a676f7665726e616e6365a36564656c6179006770656e64696e67806873657175656e6365006b636f6e74726f6c6c657273a0", + "state_hash": "7f3e5a1bce9947c6e7df0f7588726ad41f0f106416edbf83c1f353cee285e145" + }, + "frames": [ + { + "frame": 0, + "inputs": [ + { + "input": { + "key_event": { + "event": { + "a": [], + "d": "Ei473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "i": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "k": [ + { + "$bytes": "01d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a" + } + ], + "n": [ + "E4fnvjywz23zeyb426croyvctrtqsse237th3kfjid4pfeewx7noa" + ], + "p": "", + "s": 0, + "t": "icp", + "v": "SBYTE10JSON", + "kt": 1, + "nt": 1 + }, + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01e90f89475321e5febce3d271ccb2e304301d0975a6e49aa49a9e76f54ecf4d027097eda8d45ff0d0bf14c94d86f26d7100868c1af79bcfb609792e720e6b1604" + } + } + ] + } + }, + "cbor_hex": "a1696b65795f6576656e74a2656576656e74ab616180616478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371616978354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371616b81582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a616e8178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f6161706061730061746369637061766b534259544531304a534f4e626b7401626e74016a7369676e61747572657381a265696e64657800697369676e6174757265584101e90f89475321e5febce3d271ccb2e304301d0975a6e49aa49a9e76f54ecf4d027097eda8d45ff0d0bf14c94d86f26d7100868c1af79bcfb609792e720e6b1604" + }, + { + "input": { + "key_event": { + "event": { + "a": [], + "d": "Ezxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "i": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "k": [ + { + "$bytes": "013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c" + } + ], + "n": [ + "Eqmsawig6oznh4b5cbovqukvzxa5u5jbiklkrlwhtdo6rbrsyjfnq" + ], + "p": "", + "s": 0, + "t": "icp", + "v": "SBYTE10JSON", + "kt": 1, + "nt": 1 + }, + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01c0999c04eee90f056e29a2753f1a90665636394e819578d4cc2a2a40afb841b9a89a759b881adc095be848ba4ce9be9f64da3f4efcb5f935c0c20723ab68da07" + } + } + ] + } + }, + "cbor_hex": "a1696b65795f6576656e74a2656576656e74ab61618061647835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f716161697835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161616b815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c616e81783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e7161706061730061746369637061766b534259544531304a534f4e626b7401626e74016a7369676e61747572657381a265696e64657800697369676e6174757265584101c0999c04eee90f056e29a2753f1a90665636394e819578d4cc2a2a40afb841b9a89a759b881adc095be848ba4ce9be9f64da3f4efcb5f935c0c20723ab68da07" + }, + { + "input": { + "key_event": { + "event": { + "a": [], + "d": "Eqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "i": "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "k": [ + { + "$bytes": "01f4ff420feb4040a73e51713a44f9966476c755e8e2d18b82677f8ff7a839afe2" + }, + { + "$bytes": "019b54b13b505ae2ddb12e49d8e10ed93725167ab9a0a77803538fc69858cdb0e2" + }, + { + "$bytes": "015c26708ee23779ee7b628241cc1735ed1ba4527639d7383bbc0ad9aa6295f535" + } + ], + "n": [ + "Efcf43zs566fqd5jlkxmbqnv2srtgk45uhenfpc4p5xzfkx7rdvma", + "Euaam4ynyfrxpmxiyogpumg3m6bdb4s5jigslwv3oqnp2gswv4buq", + "Ell3qkq2hpnwirn4m6hgulph32looiev6e5hgst2oc5c5f6jiwjjq" + ], + "p": "", + "s": 0, + "t": "icp", + "v": "SBYTE10JSON", + "kt": 2, + "nt": 2 + }, + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01e9f5ae4b064588588f8566045833d5860bd680c6fd7182246813fa73710393eec68a6a859931f597dc169950d4aa3539d1e7296372488821cf3b233e5eda940d" + } + }, + { + "index": 1, + "signature": { + "$bytes": "01a2fb0fee6f1bfce74bc0b9e324fec7b3ee5415171740310a3fa769ff6aadd3ed3f75496a7eeb08dcf6db4e939810246c45a1c6f0474a64ec6e558cfe8e50910a" + } + } + ] + } + }, + "cbor_hex": "a1696b65795f6576656e74a2656576656e74ab616180616478354571656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a7367676932746371616978354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a7367676932746371616b83582101f4ff420feb4040a73e51713a44f9966476c755e8e2d18b82677f8ff7a839afe25821019b54b13b505ae2ddb12e49d8e10ed93725167ab9a0a77803538fc69858cdb0e25821015c26708ee23779ee7b628241cc1735ed1ba4527639d7383bbc0ad9aa6295f535616e8378354566636634337a73353636667164356a6c6b786d62716e7632737274676b34357568656e667063347035787a666b78377264766d617835457561616d34796e79667278706d7869796f6770756d67336d366264623473356a6967736c7776336f716e703267737776346275717835456c6c33716b713268706e7769726e346d366867756c706833326c6f6f69657636653568677374326f6335633566366a69776a6a7161706061730061746369637061766b534259544531304a534f4e626b7402626e74026a7369676e61747572657382a265696e64657800697369676e6174757265584101e9f5ae4b064588588f8566045833d5860bd680c6fd7182246813fa73710393eec68a6a859931f597dc169950d4aa3539d1e7296372488821cf3b233e5eda940da265696e64657801697369676e6174757265584101a2fb0fee6f1bfce74bc0b9e324fec7b3ee5415171740310a3fa769ff6aadd3ed3f75496a7eeb08dcf6db4e939810246c45a1c6f0474a64ec6e558cfe8e50910a" + } + ], + "expected_results": [ + { + "input": "4b0f387ee0718d2d18cc9a9da65b544f0743c5c18c002548fc6738a089cff058", + "class": "key_event", + "outcome": "applied" + }, + { + "input": "6c0cba880da38a32a827d1d6f113123e9c04b7ae7e9df80b3e5060ffc755fff6", + "class": "key_event", + "outcome": "applied" + }, + { + "input": "6e9b571b38262c22a83b5a86bb7aba15ef2f7c90a82ec9fdd124593783c3aedf", + "class": "key_event", + "outcome": "applied" + } + ], + "expected_state": { + "bytes": {}, + "frame": 1, + "peers": {}, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "retired": {}, + "exported": {}, + "imported": [], + "registry": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ + 1 + ], + "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq": [ + 1 + ], + "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa": [ + 1 + ] + }, + "governance": { + "delay": 0, + "pending": [], + "sequence": 0 + }, + "controllers": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": { + "keys": [ + { + "$bytes": "01d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a" + } + ], + "sequence": 0, + "next_keys": [ + "E4fnvjywz23zeyb426croyvctrtqsse237th3kfjid4pfeewx7noa" + ], + "threshold": 1, + "last_event": "Ei473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "establishment": 0, + "next_threshold": 1 + }, + "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq": { + "keys": [ + { + "$bytes": "01f4ff420feb4040a73e51713a44f9966476c755e8e2d18b82677f8ff7a839afe2" + }, + { + "$bytes": "019b54b13b505ae2ddb12e49d8e10ed93725167ab9a0a77803538fc69858cdb0e2" + }, + { + "$bytes": "015c26708ee23779ee7b628241cc1735ed1ba4527639d7383bbc0ad9aa6295f535" + } + ], + "sequence": 0, + "next_keys": [ + "Efcf43zs566fqd5jlkxmbqnv2srtgk45uhenfpc4p5xzfkx7rdvma", + "Euaam4ynyfrxpmxiyogpumg3m6bdb4s5jigslwv3oqnp2gswv4buq", + "Ell3qkq2hpnwirn4m6hgulph32looiev6e5hgst2oc5c5f6jiwjjq" + ], + "threshold": 2, + "last_event": "Eqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "establishment": 0, + "next_threshold": 2 + }, + "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa": { + "keys": [ + { + "$bytes": "013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c" + } + ], + "sequence": 0, + "next_keys": [ + "Eqmsawig6oznh4b5cbovqukvzxa5u5jbiklkrlwhtdo6rbrsyjfnq" + ], + "threshold": 1, + "last_event": "Ezxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "establishment": 0, + "next_threshold": 1 + } + } + }, + "expected_state_cbor_hex": "aa656279746573a0656672616d6501657065657273a067636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616772657469726564a0686578706f72746564a068696d706f7274656480687265676973747279a378354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371810178354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a736767693274637181017835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f716181016a676f7665726e616e6365a36564656c6179006770656e64696e67806873657175656e6365006b636f6e74726f6c6c657273a378354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c640178354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a7367676932746371a7646b65797383582101f4ff420feb4040a73e51713a44f9966476c755e8e2d18b82677f8ff7a839afe25821019b54b13b505ae2ddb12e49d8e10ed93725167ab9a0a77803538fc69858cdb0e25821015c26708ee23779ee7b628241cc1735ed1ba4527639d7383bbc0ad9aa6295f5356873657175656e636500696e6578745f6b6579738378354566636634337a73353636667164356a6c6b786d62716e7632737274676b34357568656e667063347035787a666b78377264766d617835457561616d34796e79667278706d7869796f6770756d67336d366264623473356a6967736c7776336f716e703267737776346275717835456c6c33716b713268706e7769726e346d366867756c706833326c6f6f69657636653568677374326f6335633566366a69776a6a71697468726573686f6c64026a6c6173745f6576656e7478354571656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c64027835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161a7646b657973815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c6873657175656e636500696e6578745f6b65797381783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e71697468726573686f6c64016a6c6173745f6576656e747835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616d65737461626c6973686d656e74006e6e6578745f7468726573686f6c6401", + "expected_state_hash": "3ff66a7e212f86afa45146c02021dbc2a8a04353ca25df2f1b4bca7307ae49f8" + }, + { + "frame": 1, + "inputs": [ + { + "input": { + "governance": { + "proposal": { + "change": { + "action": "remove_issuer", + "issuer": "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "cargo_type": 1 + }, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "sequence": 0 + }, + "approvals": [ + { + "approver": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "0131cbcca742175717f9a22e5a5e4c3f357ca2050626baa248b28b962801a9690fb6c7d02b75c92dbbfa1f202a50d613cf5d8e89e48dc338e212dfc88f9cde4506" + } + } + ], + "establishment": 0 + } + }, + { + "approver": "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01bb7b925ed961c69253522db2afcef852b6acc02d11b39fbfe4be18d77224ec294cc2c63ebf3bfde273c08d18e2b432ad68bcac9e747a2193f95709c33f528501" + } + }, + { + "index": 2, + "signature": { + "$bytes": "0112f367e1eb384b404f0731af3ec2cfd104c43a814b5b6e4e628c383f0027ffbaab06dd419388c0c4109c33105ab6d049a8207c4534faa410fb7a5dcb77d2f60d" + } + } + ], + "establishment": 0 + } + } + ] + } + }, + "cbor_hex": "a16a676f7665726e616e6365a26870726f706f73616ca3666368616e6765a366616374696f6e6d72656d6f76655f6973737565726669737375657278354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716a636172676f5f747970650167636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616873657175656e63650069617070726f76616c7382a268617070726f76657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e617475726558410131cbcca742175717f9a22e5a5e4c3f357ca2050626baa248b28b962801a9690fb6c7d02b75c92dbbfa1f202a50d613cf5d8e89e48dc338e212dfc88f9cde45066d65737461626c6973686d656e7400a268617070726f76657278354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a7367676932746371697369676e6174757265a26a7369676e61747572657382a265696e64657800697369676e6174757265584101bb7b925ed961c69253522db2afcef852b6acc02d11b39fbfe4be18d77224ec294cc2c63ebf3bfde273c08d18e2b432ad68bcac9e747a2193f95709c33f528501a265696e64657802697369676e617475726558410112f367e1eb384b404f0731af3ec2cfd104c43a814b5b6e4e628c383f0027ffbaab06dd419388c0c4109c33105ab6d049a8207c4534faa410fb7a5dcb77d2f60d6d65737461626c6973686d656e7400" + } + ], + "expected_results": [ + { + "input": "d74e7fd82218380887901051f242edba93449050134171a46e94f4df37f85c6e", + "class": "governance", + "outcome": "dropped", + "error": "not_an_elector" + } + ], + "expected_state": { + "bytes": {}, + "frame": 2, + "peers": {}, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "retired": {}, + "exported": {}, + "imported": [], + "registry": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ + 1 + ], + "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq": [ + 1 + ], + "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa": [ + 1 + ] + }, + "governance": { + "delay": 0, + "pending": [], + "sequence": 0 + }, + "controllers": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": { + "keys": [ + { + "$bytes": "01d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a" + } + ], + "sequence": 0, + "next_keys": [ + "E4fnvjywz23zeyb426croyvctrtqsse237th3kfjid4pfeewx7noa" + ], + "threshold": 1, + "last_event": "Ei473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "establishment": 0, + "next_threshold": 1 + }, + "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq": { + "keys": [ + { + "$bytes": "01f4ff420feb4040a73e51713a44f9966476c755e8e2d18b82677f8ff7a839afe2" + }, + { + "$bytes": "019b54b13b505ae2ddb12e49d8e10ed93725167ab9a0a77803538fc69858cdb0e2" + }, + { + "$bytes": "015c26708ee23779ee7b628241cc1735ed1ba4527639d7383bbc0ad9aa6295f535" + } + ], + "sequence": 0, + "next_keys": [ + "Efcf43zs566fqd5jlkxmbqnv2srtgk45uhenfpc4p5xzfkx7rdvma", + "Euaam4ynyfrxpmxiyogpumg3m6bdb4s5jigslwv3oqnp2gswv4buq", + "Ell3qkq2hpnwirn4m6hgulph32looiev6e5hgst2oc5c5f6jiwjjq" + ], + "threshold": 2, + "last_event": "Eqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "establishment": 0, + "next_threshold": 2 + }, + "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa": { + "keys": [ + { + "$bytes": "013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c" + } + ], + "sequence": 0, + "next_keys": [ + "Eqmsawig6oznh4b5cbovqukvzxa5u5jbiklkrlwhtdo6rbrsyjfnq" + ], + "threshold": 1, + "last_event": "Ezxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "establishment": 0, + "next_threshold": 1 + } + } + }, + "expected_state_cbor_hex": "aa656279746573a0656672616d6502657065657273a067636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616772657469726564a0686578706f72746564a068696d706f7274656480687265676973747279a378354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371810178354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a736767693274637181017835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f716181016a676f7665726e616e6365a36564656c6179006770656e64696e67806873657175656e6365006b636f6e74726f6c6c657273a378354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c640178354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a7367676932746371a7646b65797383582101f4ff420feb4040a73e51713a44f9966476c755e8e2d18b82677f8ff7a839afe25821019b54b13b505ae2ddb12e49d8e10ed93725167ab9a0a77803538fc69858cdb0e25821015c26708ee23779ee7b628241cc1735ed1ba4527639d7383bbc0ad9aa6295f5356873657175656e636500696e6578745f6b6579738378354566636634337a73353636667164356a6c6b786d62716e7632737274676b34357568656e667063347035787a666b78377264766d617835457561616d34796e79667278706d7869796f6770756d67336d366264623473356a6967736c7776336f716e703267737776346275717835456c6c33716b713268706e7769726e346d366867756c706833326c6f6f69657636653568677374326f6335633566366a69776a6a71697468726573686f6c64026a6c6173745f6576656e7478354571656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c64027835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161a7646b657973815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c6873657175656e636500696e6578745f6b65797381783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e71697468726573686f6c64016a6c6173745f6576656e747835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616d65737461626c6973686d656e74006e6e6578745f7468726573686f6c6401", + "expected_state_hash": "302ddfd9ebb8fc7534918bb7ce88d0574de603cf8d308e40cc58739df8436ceb" + }, + { + "frame": 2, + "inputs": [ + { + "input": { + "governance": { + "proposal": { + "change": { + "action": "remove_issuer", + "issuer": "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "cargo_type": 1 + }, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "sequence": 0 + }, + "approvals": [ + { + "approver": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "0131cbcca742175717f9a22e5a5e4c3f357ca2050626baa248b28b962801a9690fb6c7d02b75c92dbbfa1f202a50d613cf5d8e89e48dc338e212dfc88f9cde4506" + } + } + ], + "establishment": 0 + } + }, + { + "approver": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "017aa2d2fd04287c170fcb27a3f35124b69d615c57d44aad525d184d429bfdbee3273daced4c6f1f98bc87fd6ed21ea560dc3bdc288f9fa2a3e0061ea49bc15404" + } + } + ], + "establishment": 0 + } + } + ] + } + }, + "cbor_hex": "a16a676f7665726e616e6365a26870726f706f73616ca3666368616e6765a366616374696f6e6d72656d6f76655f6973737565726669737375657278354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716a636172676f5f747970650167636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616873657175656e63650069617070726f76616c7382a268617070726f76657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e617475726558410131cbcca742175717f9a22e5a5e4c3f357ca2050626baa248b28b962801a9690fb6c7d02b75c92dbbfa1f202a50d613cf5d8e89e48dc338e212dfc88f9cde45066d65737461626c6973686d656e7400a268617070726f7665727835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e61747572655841017aa2d2fd04287c170fcb27a3f35124b69d615c57d44aad525d184d429bfdbee3273daced4c6f1f98bc87fd6ed21ea560dc3bdc288f9fa2a3e0061ea49bc154046d65737461626c6973686d656e7400" + } + ], + "expected_results": [ + { + "input": "83e0fee9d40a19ece10060fe4d9d17f05c6ac05be1fe1bdc75cd82d260846e61", + "class": "governance", + "outcome": "applied" + } + ], + "expected_state": { + "bytes": {}, + "frame": 3, + "peers": {}, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "retired": {}, + "exported": {}, + "imported": [], + "registry": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ + 1 + ], + "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq": [ + 1 + ], + "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa": [ + 1 + ] + }, + "governance": { + "delay": 0, + "pending": [ + { + "change": { + "action": "remove_issuer", + "issuer": "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "cargo_type": 1 + }, + "effective": 3 + } + ], + "sequence": 1 + }, + "controllers": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": { + "keys": [ + { + "$bytes": "01d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a" + } + ], + "sequence": 0, + "next_keys": [ + "E4fnvjywz23zeyb426croyvctrtqsse237th3kfjid4pfeewx7noa" + ], + "threshold": 1, + "last_event": "Ei473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "establishment": 0, + "next_threshold": 1 + }, + "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq": { + "keys": [ + { + "$bytes": "01f4ff420feb4040a73e51713a44f9966476c755e8e2d18b82677f8ff7a839afe2" + }, + { + "$bytes": "019b54b13b505ae2ddb12e49d8e10ed93725167ab9a0a77803538fc69858cdb0e2" + }, + { + "$bytes": "015c26708ee23779ee7b628241cc1735ed1ba4527639d7383bbc0ad9aa6295f535" + } + ], + "sequence": 0, + "next_keys": [ + "Efcf43zs566fqd5jlkxmbqnv2srtgk45uhenfpc4p5xzfkx7rdvma", + "Euaam4ynyfrxpmxiyogpumg3m6bdb4s5jigslwv3oqnp2gswv4buq", + "Ell3qkq2hpnwirn4m6hgulph32looiev6e5hgst2oc5c5f6jiwjjq" + ], + "threshold": 2, + "last_event": "Eqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "establishment": 0, + "next_threshold": 2 + }, + "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa": { + "keys": [ + { + "$bytes": "013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c" + } + ], + "sequence": 0, + "next_keys": [ + "Eqmsawig6oznh4b5cbovqukvzxa5u5jbiklkrlwhtdo6rbrsyjfnq" + ], + "threshold": 1, + "last_event": "Ezxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "establishment": 0, + "next_threshold": 1 + } + } + }, + "expected_state_cbor_hex": "aa656279746573a0656672616d6503657065657273a067636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616772657469726564a0686578706f72746564a068696d706f7274656480687265676973747279a378354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371810178354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a736767693274637181017835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f716181016a676f7665726e616e6365a36564656c6179006770656e64696e6781a2666368616e6765a366616374696f6e6d72656d6f76655f6973737565726669737375657278354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716a636172676f5f747970650169656666656374697665036873657175656e6365016b636f6e74726f6c6c657273a378354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c640178354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a7367676932746371a7646b65797383582101f4ff420feb4040a73e51713a44f9966476c755e8e2d18b82677f8ff7a839afe25821019b54b13b505ae2ddb12e49d8e10ed93725167ab9a0a77803538fc69858cdb0e25821015c26708ee23779ee7b628241cc1735ed1ba4527639d7383bbc0ad9aa6295f5356873657175656e636500696e6578745f6b6579738378354566636634337a73353636667164356a6c6b786d62716e7632737274676b34357568656e667063347035787a666b78377264766d617835457561616d34796e79667278706d7869796f6770756d67336d366264623473356a6967736c7776336f716e703267737776346275717835456c6c33716b713268706e7769726e346d366867756c706833326c6f6f69657636653568677374326f6335633566366a69776a6a71697468726573686f6c64026a6c6173745f6576656e7478354571656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c64027835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161a7646b657973815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c6873657175656e636500696e6578745f6b65797381783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e71697468726573686f6c64016a6c6173745f6576656e747835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616d65737461626c6973686d656e74006e6e6578745f7468726573686f6c6401", + "expected_state_hash": "36f52eef5933aa35978a341e59e11e726a528117424211387edf90a58adc8b9b" + }, + { + "frame": 3, + "inputs": [ + { + "input": { + "mint": { + "d": "Ejajpbkepwdlhjmitxpiaouanvxviqkfectmpzu7mnhdpi5bsxhla", + "cargo": { + "type": 1, + "bytes": { + "$bytes": "a1666d6963726f7301" + } + }, + "nonce": { + "$bytes": "d1526c65608a23a84f4c0de1bcc3776e" + }, + "issuer": "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "recipient": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01a1d46e11081bf3a472e32267c3772fc7f1e8051d81b669e3ce4316f4737f66c10d50937fa76cb1f4e666fe68630b9f3f6f48e153b049ea201a6b6b1a514e3707" + } + }, + { + "index": 2, + "signature": { + "$bytes": "011f5b866ba6428b3756a0525f42303c2865f11fc676adf58624b41af68705cb071e7845505f9a3b0861168736d58384678c61919d2144a0d09cfcc191832b230f" + } + } + ], + "establishment": 0 + } + } + }, + "cbor_hex": "a1646d696e74a661647835456a616a70626b657077646c686a6d6974787069616f75616e76787669716b666563746d707a75376d6e6864706935627378686c6165636172676fa264747970650165627974657349a1666d6963726f7301656e6f6e636550d1526c65608a23a84f4c0de1bcc3776e6669737375657278354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a736767693274637169726563697069656e747835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161697369676e6174757265a26a7369676e61747572657382a265696e64657800697369676e6174757265584101a1d46e11081bf3a472e32267c3772fc7f1e8051d81b669e3ce4316f4737f66c10d50937fa76cb1f4e666fe68630b9f3f6f48e153b049ea201a6b6b1a514e3707a265696e64657802697369676e61747572655841011f5b866ba6428b3756a0525f42303c2865f11fc676adf58624b41af68705cb071e7845505f9a3b0861168736d58384678c61919d2144a0d09cfcc191832b230f6d65737461626c6973686d656e7400" + } + ], + "expected_results": [ + { + "input": "b85f3c436840637d50fa84f9039c268557cd7d17c1b41353c4f2ee54371f4e98", + "class": "mint", + "outcome": "dropped", + "error": "issuer_not_registered" + } + ], + "expected_state": { + "bytes": {}, + "frame": 4, + "peers": {}, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "retired": {}, + "exported": {}, + "imported": [], + "registry": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ + 1 + ], + "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa": [ + 1 + ] + }, + "governance": { + "delay": 0, + "pending": [], + "sequence": 1 + }, + "controllers": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": { + "keys": [ + { + "$bytes": "01d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a" + } + ], + "sequence": 0, + "next_keys": [ + "E4fnvjywz23zeyb426croyvctrtqsse237th3kfjid4pfeewx7noa" + ], + "threshold": 1, + "last_event": "Ei473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "establishment": 0, + "next_threshold": 1 + }, + "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq": { + "keys": [ + { + "$bytes": "01f4ff420feb4040a73e51713a44f9966476c755e8e2d18b82677f8ff7a839afe2" + }, + { + "$bytes": "019b54b13b505ae2ddb12e49d8e10ed93725167ab9a0a77803538fc69858cdb0e2" + }, + { + "$bytes": "015c26708ee23779ee7b628241cc1735ed1ba4527639d7383bbc0ad9aa6295f535" + } + ], + "sequence": 0, + "next_keys": [ + "Efcf43zs566fqd5jlkxmbqnv2srtgk45uhenfpc4p5xzfkx7rdvma", + "Euaam4ynyfrxpmxiyogpumg3m6bdb4s5jigslwv3oqnp2gswv4buq", + "Ell3qkq2hpnwirn4m6hgulph32looiev6e5hgst2oc5c5f6jiwjjq" + ], + "threshold": 2, + "last_event": "Eqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "establishment": 0, + "next_threshold": 2 + }, + "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa": { + "keys": [ + { + "$bytes": "013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c" + } + ], + "sequence": 0, + "next_keys": [ + "Eqmsawig6oznh4b5cbovqukvzxa5u5jbiklkrlwhtdo6rbrsyjfnq" + ], + "threshold": 1, + "last_event": "Ezxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "establishment": 0, + "next_threshold": 1 + } + } + }, + "expected_state_cbor_hex": "aa656279746573a0656672616d6504657065657273a067636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616772657469726564a0686578706f72746564a068696d706f7274656480687265676973747279a278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181017835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f716181016a676f7665726e616e6365a36564656c6179006770656e64696e67806873657175656e6365016b636f6e74726f6c6c657273a378354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c640178354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a7367676932746371a7646b65797383582101f4ff420feb4040a73e51713a44f9966476c755e8e2d18b82677f8ff7a839afe25821019b54b13b505ae2ddb12e49d8e10ed93725167ab9a0a77803538fc69858cdb0e25821015c26708ee23779ee7b628241cc1735ed1ba4527639d7383bbc0ad9aa6295f5356873657175656e636500696e6578745f6b6579738378354566636634337a73353636667164356a6c6b786d62716e7632737274676b34357568656e667063347035787a666b78377264766d617835457561616d34796e79667278706d7869796f6770756d67336d366264623473356a6967736c7776336f716e703267737776346275717835456c6c33716b713268706e7769726e346d366867756c706833326c6f6f69657636653568677374326f6335633566366a69776a6a71697468726573686f6c64026a6c6173745f6576656e7478354571656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c64027835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161a7646b657973815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c6873657175656e636500696e6578745f6b65797381783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e71697468726573686f6c64016a6c6173745f6576656e747835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616d65737461626c6973686d656e74006e6e6578745f7468726573686f6c6401", + "expected_state_hash": "80b5526bc480666ad3cc7172a9322592485ee7f18f31ddd139aae060775c11f0" + } + ] + }, + { + "name": "state-016-peers-by-governance", + "description": "A cluster's peers change by governance, which every issuer votes on: here the issuer and the custodian (USD) and Alice (joules), so the quorum is floor(2·3/3)+1 = 3. In frame 1 six proposals are dropped: cluster B as a peer with two approvals of the three; the cluster as its own peer; a peer whose key is not an Ed25519 key; a peer with no keys; a peer with one key twice; removing cluster C, which is not a peer. In frame 2 all three approve cluster B, which is a peer from frame 3. In frame 3 two proposals are accepted, in this order: B's node keys replaced (sequence 1), then B removed (sequence 2). Both take effect at frame 4, in the order they were accepted, so from frame 4 the cluster has no peers.", + "genesis": { + "state": { + "bytes": {}, + "frame": 0, + "peers": {}, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "retired": {}, + "exported": {}, + "imported": [], + "registry": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ + 1 + ], + "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq": [ + 1 + ], + "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa": [ + 2 + ] + }, + "governance": { + "delay": 0, + "pending": [], + "sequence": 0 + }, + "controllers": {} + }, + "cbor_hex": "aa656279746573a0656672616d6500657065657273a067636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616772657469726564a0686578706f72746564a068696d706f7274656480687265676973747279a378354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371810178354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a736767693274637181017835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f716181026a676f7665726e616e6365a36564656c6179006770656e64696e67806873657175656e6365006b636f6e74726f6c6c657273a0", + "state_hash": "6212b3b4adf57a94735d5728de806c4fc7cee83f092182ea766903f66df80411" + }, + "frames": [ + { + "frame": 0, + "inputs": [ + { + "input": { + "key_event": { + "event": { + "a": [], + "d": "Ei473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "i": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "k": [ + { + "$bytes": "01d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a" + } + ], + "n": [ + "E4fnvjywz23zeyb426croyvctrtqsse237th3kfjid4pfeewx7noa" + ], + "p": "", + "s": 0, + "t": "icp", + "v": "SBYTE10JSON", + "kt": 1, + "nt": 1 + }, + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01e90f89475321e5febce3d271ccb2e304301d0975a6e49aa49a9e76f54ecf4d027097eda8d45ff0d0bf14c94d86f26d7100868c1af79bcfb609792e720e6b1604" + } + } + ] + } + }, + "cbor_hex": "a1696b65795f6576656e74a2656576656e74ab616180616478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371616978354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371616b81582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a616e8178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f6161706061730061746369637061766b534259544531304a534f4e626b7401626e74016a7369676e61747572657381a265696e64657800697369676e6174757265584101e90f89475321e5febce3d271ccb2e304301d0975a6e49aa49a9e76f54ecf4d027097eda8d45ff0d0bf14c94d86f26d7100868c1af79bcfb609792e720e6b1604" + }, + { + "input": { + "key_event": { + "event": { + "a": [], + "d": "Ezxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "i": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "k": [ + { + "$bytes": "013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c" + } + ], + "n": [ + "Eqmsawig6oznh4b5cbovqukvzxa5u5jbiklkrlwhtdo6rbrsyjfnq" + ], + "p": "", + "s": 0, + "t": "icp", + "v": "SBYTE10JSON", + "kt": 1, + "nt": 1 + }, + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01c0999c04eee90f056e29a2753f1a90665636394e819578d4cc2a2a40afb841b9a89a759b881adc095be848ba4ce9be9f64da3f4efcb5f935c0c20723ab68da07" + } + } + ] + } + }, + "cbor_hex": "a1696b65795f6576656e74a2656576656e74ab61618061647835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f716161697835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161616b815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c616e81783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e7161706061730061746369637061766b534259544531304a534f4e626b7401626e74016a7369676e61747572657381a265696e64657800697369676e6174757265584101c0999c04eee90f056e29a2753f1a90665636394e819578d4cc2a2a40afb841b9a89a759b881adc095be848ba4ce9be9f64da3f4efcb5f935c0c20723ab68da07" + }, + { + "input": { + "key_event": { + "event": { + "a": [], + "d": "Eqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "i": "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "k": [ + { + "$bytes": "01f4ff420feb4040a73e51713a44f9966476c755e8e2d18b82677f8ff7a839afe2" + }, + { + "$bytes": "019b54b13b505ae2ddb12e49d8e10ed93725167ab9a0a77803538fc69858cdb0e2" + }, + { + "$bytes": "015c26708ee23779ee7b628241cc1735ed1ba4527639d7383bbc0ad9aa6295f535" + } + ], + "n": [ + "Efcf43zs566fqd5jlkxmbqnv2srtgk45uhenfpc4p5xzfkx7rdvma", + "Euaam4ynyfrxpmxiyogpumg3m6bdb4s5jigslwv3oqnp2gswv4buq", + "Ell3qkq2hpnwirn4m6hgulph32looiev6e5hgst2oc5c5f6jiwjjq" + ], + "p": "", + "s": 0, + "t": "icp", + "v": "SBYTE10JSON", + "kt": 2, + "nt": 2 + }, + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01e9f5ae4b064588588f8566045833d5860bd680c6fd7182246813fa73710393eec68a6a859931f597dc169950d4aa3539d1e7296372488821cf3b233e5eda940d" + } + }, + { + "index": 1, + "signature": { + "$bytes": "01a2fb0fee6f1bfce74bc0b9e324fec7b3ee5415171740310a3fa769ff6aadd3ed3f75496a7eeb08dcf6db4e939810246c45a1c6f0474a64ec6e558cfe8e50910a" + } + } + ] + } + }, + "cbor_hex": "a1696b65795f6576656e74a2656576656e74ab616180616478354571656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a7367676932746371616978354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a7367676932746371616b83582101f4ff420feb4040a73e51713a44f9966476c755e8e2d18b82677f8ff7a839afe25821019b54b13b505ae2ddb12e49d8e10ed93725167ab9a0a77803538fc69858cdb0e25821015c26708ee23779ee7b628241cc1735ed1ba4527639d7383bbc0ad9aa6295f535616e8378354566636634337a73353636667164356a6c6b786d62716e7632737274676b34357568656e667063347035787a666b78377264766d617835457561616d34796e79667278706d7869796f6770756d67336d366264623473356a6967736c7776336f716e703267737776346275717835456c6c33716b713268706e7769726e346d366867756c706833326c6f6f69657636653568677374326f6335633566366a69776a6a7161706061730061746369637061766b534259544531304a534f4e626b7402626e74026a7369676e61747572657382a265696e64657800697369676e6174757265584101e9f5ae4b064588588f8566045833d5860bd680c6fd7182246813fa73710393eec68a6a859931f597dc169950d4aa3539d1e7296372488821cf3b233e5eda940da265696e64657801697369676e6174757265584101a2fb0fee6f1bfce74bc0b9e324fec7b3ee5415171740310a3fa769ff6aadd3ed3f75496a7eeb08dcf6db4e939810246c45a1c6f0474a64ec6e558cfe8e50910a" + } + ], + "expected_results": [ + { + "input": "4b0f387ee0718d2d18cc9a9da65b544f0743c5c18c002548fc6738a089cff058", + "class": "key_event", + "outcome": "applied" + }, + { + "input": "6c0cba880da38a32a827d1d6f113123e9c04b7ae7e9df80b3e5060ffc755fff6", + "class": "key_event", + "outcome": "applied" + }, + { + "input": "6e9b571b38262c22a83b5a86bb7aba15ef2f7c90a82ec9fdd124593783c3aedf", + "class": "key_event", + "outcome": "applied" + } + ], + "expected_state": { + "bytes": {}, + "frame": 1, + "peers": {}, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "retired": {}, + "exported": {}, + "imported": [], + "registry": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ + 1 + ], + "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq": [ + 1 + ], + "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa": [ + 2 + ] + }, + "governance": { + "delay": 0, + "pending": [], + "sequence": 0 + }, + "controllers": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": { + "keys": [ + { + "$bytes": "01d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a" + } + ], + "sequence": 0, + "next_keys": [ + "E4fnvjywz23zeyb426croyvctrtqsse237th3kfjid4pfeewx7noa" + ], + "threshold": 1, + "last_event": "Ei473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "establishment": 0, + "next_threshold": 1 + }, + "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq": { + "keys": [ + { + "$bytes": "01f4ff420feb4040a73e51713a44f9966476c755e8e2d18b82677f8ff7a839afe2" + }, + { + "$bytes": "019b54b13b505ae2ddb12e49d8e10ed93725167ab9a0a77803538fc69858cdb0e2" + }, + { + "$bytes": "015c26708ee23779ee7b628241cc1735ed1ba4527639d7383bbc0ad9aa6295f535" + } + ], + "sequence": 0, + "next_keys": [ + "Efcf43zs566fqd5jlkxmbqnv2srtgk45uhenfpc4p5xzfkx7rdvma", + "Euaam4ynyfrxpmxiyogpumg3m6bdb4s5jigslwv3oqnp2gswv4buq", + "Ell3qkq2hpnwirn4m6hgulph32looiev6e5hgst2oc5c5f6jiwjjq" + ], + "threshold": 2, + "last_event": "Eqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "establishment": 0, + "next_threshold": 2 + }, + "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa": { + "keys": [ + { + "$bytes": "013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c" + } + ], + "sequence": 0, + "next_keys": [ + "Eqmsawig6oznh4b5cbovqukvzxa5u5jbiklkrlwhtdo6rbrsyjfnq" + ], + "threshold": 1, + "last_event": "Ezxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "establishment": 0, + "next_threshold": 1 + } + } + }, + "expected_state_cbor_hex": "aa656279746573a0656672616d6501657065657273a067636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616772657469726564a0686578706f72746564a068696d706f7274656480687265676973747279a378354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371810178354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a736767693274637181017835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f716181026a676f7665726e616e6365a36564656c6179006770656e64696e67806873657175656e6365006b636f6e74726f6c6c657273a378354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c640178354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a7367676932746371a7646b65797383582101f4ff420feb4040a73e51713a44f9966476c755e8e2d18b82677f8ff7a839afe25821019b54b13b505ae2ddb12e49d8e10ed93725167ab9a0a77803538fc69858cdb0e25821015c26708ee23779ee7b628241cc1735ed1ba4527639d7383bbc0ad9aa6295f5356873657175656e636500696e6578745f6b6579738378354566636634337a73353636667164356a6c6b786d62716e7632737274676b34357568656e667063347035787a666b78377264766d617835457561616d34796e79667278706d7869796f6770756d67336d366264623473356a6967736c7776336f716e703267737776346275717835456c6c33716b713268706e7769726e346d366867756c706833326c6f6f69657636653568677374326f6335633566366a69776a6a71697468726573686f6c64026a6c6173745f6576656e7478354571656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c64027835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161a7646b657973815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c6873657175656e636500696e6578745f6b65797381783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e71697468726573686f6c64016a6c6173745f6576656e747835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616d65737461626c6973686d656e74006e6e6578745f7468726573686f6c6401", + "expected_state_hash": "704379e2ce595c3a24f42606ce2d6b25a7cdcdc5d7e7eea52949f1fd8ac5c589" + }, + { + "frame": 1, + "inputs": [ + { + "input": { + "governance": { + "proposal": { + "change": { + "keys": [ + { + "$bytes": "012e471a1a7ca882e5ae7097226381ce35e769047b2fe00552aa7ce933912b39a7" + }, + { + "$bytes": "0166af65d5c6620705969a363753b114c9be50b904f7f7ecc7320805c71dfa38ea" + }, + { + "$bytes": "017cdf6321e36e7c2d4808643b57ed7e720703ce0050c912c873c972da03976e03" + }, + { + "$bytes": "01d080d09afc96aa94dd0f8ef6eb02d22d7c12bd1707cb6261a0d94d4ae1224859" + } + ], + "peer": "Enldsomgkjdhwaeznqf2cyu6j7jqwmkbfrc2klavaaybu6rfzewkq", + "action": "set_peer" + }, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "sequence": 0 + }, + "approvals": [ + { + "approver": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "013e53d722821a957ecfdf728fe30e9dde7c8c49c4cabf9c1c1cd826d6058d99793581c3aa57b55b3635fd5df1459a62dfec3079ba96d7383636ece5869585540f" + } + } + ], + "establishment": 0 + } + }, + { + "approver": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01908e5e82a50d0b28530248e7a248b7c9da0703c271a4cbe10c425e8c8d038ad2eb0179a9c9ba792243bf03fc0df9796d041d9e9915985452493a2c0c68b4430e" + } + } + ], + "establishment": 0 + } + } + ] + } + }, + "cbor_hex": "a16a676f7665726e616e6365a26870726f706f73616ca3666368616e6765a3646b657973845821012e471a1a7ca882e5ae7097226381ce35e769047b2fe00552aa7ce933912b39a758210166af65d5c6620705969a363753b114c9be50b904f7f7ecc7320805c71dfa38ea5821017cdf6321e36e7c2d4808643b57ed7e720703ce0050c912c873c972da03976e03582101d080d09afc96aa94dd0f8ef6eb02d22d7c12bd1707cb6261a0d94d4ae122485964706565727835456e6c64736f6d676b6a64687761657a6e716632637975366a376a71776d6b62667263326b6c617661617962753672667a65776b7166616374696f6e687365745f7065657267636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616873657175656e63650069617070726f76616c7382a268617070726f76657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e61747572655841013e53d722821a957ecfdf728fe30e9dde7c8c49c4cabf9c1c1cd826d6058d99793581c3aa57b55b3635fd5df1459a62dfec3079ba96d7383636ece5869585540f6d65737461626c6973686d656e7400a268617070726f7665727835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e6174757265584101908e5e82a50d0b28530248e7a248b7c9da0703c271a4cbe10c425e8c8d038ad2eb0179a9c9ba792243bf03fc0df9796d041d9e9915985452493a2c0c68b4430e6d65737461626c6973686d656e7400" + }, + { + "input": { + "governance": { + "proposal": { + "change": { + "keys": [ + { + "$bytes": "01d661c78b74359562c1b4904782873dcba3adb2ebc3020ecb09f8953d28e0d2e3" + }, + { + "$bytes": "01036ca30b2a9433913c505fee8dc8f0bfaa7c9d34574688ac0920f4fcb914c91d" + }, + { + "$bytes": "01804cee78a663531717a54d35fbf556b70e4625a77e3dc3a5219cf783e8917296" + }, + { + "$bytes": "01ef69b130554bf4befe39394a462cda93a9ad647c721e0b5ea09b323e77f7b608" + } + ], + "peer": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "action": "set_peer" + }, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "sequence": 0 + }, + "approvals": [ + { + "approver": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01aaff1c3e8ea81122e49dfb4e0bfcfc6bce21996daec78023c22fdb6d1d370fdd3f37213ee6841db10a27c412b712103c393e78c957196be7228afb40737e2803" + } + } + ], + "establishment": 0 + } + }, + { + "approver": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "012c1c7f224ca2a76e4d3a20da0ec3cc6b91c43fce8c3023e99f3cb7c67989fa60db7eb6fa5ad0a0d4b4b4603f83e6dbe5956f06841ff3034c58150c7a3d588705" + } + } + ], + "establishment": 0 + } + }, + { + "approver": "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01c6f7deaf95b46edeab7f079379b2d97fc15d89f5b4e1239e2150c2a483c92d78012515203e49dbd673862fd46ae9308794ec41a7e4cc79cf7c1138a967c9c704" + } + }, + { + "index": 2, + "signature": { + "$bytes": "01ff6f73a8d07f9b28fd5701532492ac42668e20f9b9945227023fb4420dc97bae01ea5c0f621bd80ebc4c73d7ef108ad4e3e26e565ce9ae9a5fc00f70362f7502" + } + } + ], + "establishment": 0 + } + } + ] + } + }, + "cbor_hex": "a16a676f7665726e616e6365a26870726f706f73616ca3666368616e6765a3646b65797384582101d661c78b74359562c1b4904782873dcba3adb2ebc3020ecb09f8953d28e0d2e3582101036ca30b2a9433913c505fee8dc8f0bfaa7c9d34574688ac0920f4fcb914c91d582101804cee78a663531717a54d35fbf556b70e4625a77e3dc3a5219cf783e8917296582101ef69b130554bf4befe39394a462cda93a9ad647c721e0b5ea09b323e77f7b6086470656572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a7975657834667067326370706166616374696f6e687365745f7065657267636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616873657175656e63650069617070726f76616c7383a268617070726f76657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e6174757265584101aaff1c3e8ea81122e49dfb4e0bfcfc6bce21996daec78023c22fdb6d1d370fdd3f37213ee6841db10a27c412b712103c393e78c957196be7228afb40737e28036d65737461626c6973686d656e7400a268617070726f7665727835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e61747572655841012c1c7f224ca2a76e4d3a20da0ec3cc6b91c43fce8c3023e99f3cb7c67989fa60db7eb6fa5ad0a0d4b4b4603f83e6dbe5956f06841ff3034c58150c7a3d5887056d65737461626c6973686d656e7400a268617070726f76657278354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a7367676932746371697369676e6174757265a26a7369676e61747572657382a265696e64657800697369676e6174757265584101c6f7deaf95b46edeab7f079379b2d97fc15d89f5b4e1239e2150c2a483c92d78012515203e49dbd673862fd46ae9308794ec41a7e4cc79cf7c1138a967c9c704a265696e64657802697369676e6174757265584101ff6f73a8d07f9b28fd5701532492ac42668e20f9b9945227023fb4420dc97bae01ea5c0f621bd80ebc4c73d7ef108ad4e3e26e565ce9ae9a5fc00f70362f75026d65737461626c6973686d656e7400" + }, + { + "input": { + "governance": { + "proposal": { + "change": { + "keys": [ + { + "$bytes": "01010203" + } + ], + "peer": "Ezjjgtlnkkszxragkqs7ilg6ca7m2kcpd7hrbbekvo4ggci7gvl2a", + "action": "set_peer" + }, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "sequence": 0 + }, + "approvals": [ + { + "approver": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "011a5e4de8b7b0f17c8440f4e659a0a3c9ea9b086f26223485694601e914aa5cb6876783de0d61bc588b7ca6a7acb2eb8cada7db339d811712367b1d3164ca8d0f" + } + } + ], + "establishment": 0 + } + }, + { + "approver": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01f2a258c01aefcad1e8b3331574ea687c2c7904361d4e3fbf59bf1aee1fdda8174f4b5db4d9a99f44e02608c1c0f58a8f01973eebb037283a535c5f40f727ad03" + } + } + ], + "establishment": 0 + } + }, + { + "approver": "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "017e1da22c4c3cb3d51ed0b1c41a3b256219abb00c6e6fee5eb20225bf695000451d582cbd6ba6ddccbcc751856694b399b2b5aec956b9945f63af108c0b3fc305" + } + }, + { + "index": 2, + "signature": { + "$bytes": "016e8018922c81fbfdf15f929c7e8cd271b7ffb3f9d350241f32be02a09eb28151683472eb0be6e5f57725ce756bf1ccf94a9452537af7e3b2aabc84ff70244908" + } + } + ], + "establishment": 0 + } + } + ] + } + }, + "cbor_hex": "a16a676f7665726e616e6365a26870726f706f73616ca3666368616e6765a3646b65797381440101020364706565727835457a6a6a67746c6e6b6b737a787261676b717337696c67366361376d326b6370643768726262656b766f34676763693767766c326166616374696f6e687365745f7065657267636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616873657175656e63650069617070726f76616c7383a268617070726f76657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e61747572655841011a5e4de8b7b0f17c8440f4e659a0a3c9ea9b086f26223485694601e914aa5cb6876783de0d61bc588b7ca6a7acb2eb8cada7db339d811712367b1d3164ca8d0f6d65737461626c6973686d656e7400a268617070726f7665727835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e6174757265584101f2a258c01aefcad1e8b3331574ea687c2c7904361d4e3fbf59bf1aee1fdda8174f4b5db4d9a99f44e02608c1c0f58a8f01973eebb037283a535c5f40f727ad036d65737461626c6973686d656e7400a268617070726f76657278354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a7367676932746371697369676e6174757265a26a7369676e61747572657382a265696e64657800697369676e61747572655841017e1da22c4c3cb3d51ed0b1c41a3b256219abb00c6e6fee5eb20225bf695000451d582cbd6ba6ddccbcc751856694b399b2b5aec956b9945f63af108c0b3fc305a265696e64657802697369676e61747572655841016e8018922c81fbfdf15f929c7e8cd271b7ffb3f9d350241f32be02a09eb28151683472eb0be6e5f57725ce756bf1ccf94a9452537af7e3b2aabc84ff702449086d65737461626c6973686d656e7400" + }, + { + "input": { + "governance": { + "proposal": { + "change": { + "keys": [], + "peer": "Ezjjgtlnkkszxragkqs7ilg6ca7m2kcpd7hrbbekvo4ggci7gvl2a", + "action": "set_peer" + }, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "sequence": 0 + }, + "approvals": [ + { + "approver": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "0161bb6763ec044f52d8e77c9da218cf085f9f406feef3a17740384462a11809d87bd389f81ffa3e3c855e01e5f745eb6bac8e2722729eea83f1a5d887c7dce406" + } + } + ], + "establishment": 0 + } + }, + { + "approver": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "013547671caca818d2dc0943c0dfe9564536a197f1ac8ba6d6a37bd670e7deb9f6053460e409f99b5ee49ec10341f8da3363dcbcc6a5fc39b4d204c49b793c0e0a" + } + } + ], + "establishment": 0 + } + }, + { + "approver": "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "019b618b98f9cd60c54813a7a0a5aa9dbed112953d73665451d1badc09dc45daf22a374cc486f9bf2e47b15632bbbd0d5e808b53b6e9576ce76c1021d38ac30704" + } + }, + { + "index": 2, + "signature": { + "$bytes": "0118f64dc3835e03382a53bc1efb211ff6ad49a78303bdb39566441b2b968eb1516b060497761d10cfd7c9b9ac02efb7a44c8cf24da84c60cf28804dac6b00280b" + } + } + ], + "establishment": 0 + } + } + ] + } + }, + "cbor_hex": "a16a676f7665726e616e6365a26870726f706f73616ca3666368616e6765a3646b6579738064706565727835457a6a6a67746c6e6b6b737a787261676b717337696c67366361376d326b6370643768726262656b766f34676763693767766c326166616374696f6e687365745f7065657267636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616873657175656e63650069617070726f76616c7383a268617070726f76657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e617475726558410161bb6763ec044f52d8e77c9da218cf085f9f406feef3a17740384462a11809d87bd389f81ffa3e3c855e01e5f745eb6bac8e2722729eea83f1a5d887c7dce4066d65737461626c6973686d656e7400a268617070726f7665727835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e61747572655841013547671caca818d2dc0943c0dfe9564536a197f1ac8ba6d6a37bd670e7deb9f6053460e409f99b5ee49ec10341f8da3363dcbcc6a5fc39b4d204c49b793c0e0a6d65737461626c6973686d656e7400a268617070726f76657278354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a7367676932746371697369676e6174757265a26a7369676e61747572657382a265696e64657800697369676e61747572655841019b618b98f9cd60c54813a7a0a5aa9dbed112953d73665451d1badc09dc45daf22a374cc486f9bf2e47b15632bbbd0d5e808b53b6e9576ce76c1021d38ac30704a265696e64657802697369676e617475726558410118f64dc3835e03382a53bc1efb211ff6ad49a78303bdb39566441b2b968eb1516b060497761d10cfd7c9b9ac02efb7a44c8cf24da84c60cf28804dac6b00280b6d65737461626c6973686d656e7400" + }, + { + "input": { + "governance": { + "proposal": { + "change": { + "keys": [ + { + "$bytes": "0122f4a8111f1bc1861e195ccbbd7aa25423dbf50b5c95a1f13b108edfbf1f9ffb" + }, + { + "$bytes": "0122f4a8111f1bc1861e195ccbbd7aa25423dbf50b5c95a1f13b108edfbf1f9ffb" + } + ], + "peer": "Ezjjgtlnkkszxragkqs7ilg6ca7m2kcpd7hrbbekvo4ggci7gvl2a", + "action": "set_peer" + }, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "sequence": 0 + }, + "approvals": [ + { + "approver": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01916e7efd046dbe2ececaa4a11fe0ec5b9ede9fa2b1fd04ba5b337eaea6207c8fc972267c54df67e0748b75930933afd6ec40746695100a488f8c109fbc41b90b" + } + } + ], + "establishment": 0 + } + }, + { + "approver": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01b1e264a48469b59ece76e98a226f296fa75c843af2f533d4a774f63bc4a9842dc297d3418a99db5e17175cbb3f8ff37442df657117436ea724d0824842ab7707" + } + } + ], + "establishment": 0 + } + }, + { + "approver": "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "0119c80d5b83233cff09b4b3a1d2c7b6253db43fd449835c3fa6b74a56de1d404b23d0a2f751c2fff72ae10da83a83aacbe0ec490f796f54dc225c1edec09cbe00" + } + }, + { + "index": 2, + "signature": { + "$bytes": "01b859109a7838b918ae494ada3a483e8a66047e95ea969c6e668604e5c2950f14fdb5bd4dd768a6624888d6fc6012c00ed7ad80b761ae6dd36d13111dab8cf30b" + } + } + ], + "establishment": 0 + } + } + ] + } + }, + "cbor_hex": "a16a676f7665726e616e6365a26870726f706f73616ca3666368616e6765a3646b6579738258210122f4a8111f1bc1861e195ccbbd7aa25423dbf50b5c95a1f13b108edfbf1f9ffb58210122f4a8111f1bc1861e195ccbbd7aa25423dbf50b5c95a1f13b108edfbf1f9ffb64706565727835457a6a6a67746c6e6b6b737a787261676b717337696c67366361376d326b6370643768726262656b766f34676763693767766c326166616374696f6e687365745f7065657267636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616873657175656e63650069617070726f76616c7383a268617070726f76657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e6174757265584101916e7efd046dbe2ececaa4a11fe0ec5b9ede9fa2b1fd04ba5b337eaea6207c8fc972267c54df67e0748b75930933afd6ec40746695100a488f8c109fbc41b90b6d65737461626c6973686d656e7400a268617070726f7665727835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e6174757265584101b1e264a48469b59ece76e98a226f296fa75c843af2f533d4a774f63bc4a9842dc297d3418a99db5e17175cbb3f8ff37442df657117436ea724d0824842ab77076d65737461626c6973686d656e7400a268617070726f76657278354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a7367676932746371697369676e6174757265a26a7369676e61747572657382a265696e64657800697369676e617475726558410119c80d5b83233cff09b4b3a1d2c7b6253db43fd449835c3fa6b74a56de1d404b23d0a2f751c2fff72ae10da83a83aacbe0ec490f796f54dc225c1edec09cbe00a265696e64657802697369676e6174757265584101b859109a7838b918ae494ada3a483e8a66047e95ea969c6e668604e5c2950f14fdb5bd4dd768a6624888d6fc6012c00ed7ad80b761ae6dd36d13111dab8cf30b6d65737461626c6973686d656e7400" + }, + { + "input": { + "governance": { + "proposal": { + "change": { + "peer": "Ezjjgtlnkkszxragkqs7ilg6ca7m2kcpd7hrbbekvo4ggci7gvl2a", + "action": "remove_peer" + }, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "sequence": 0 + }, + "approvals": [ + { + "approver": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01a99e02208730f9230351de6efa9f76e1527d7a5a8ba00a86f5dfc54eb238689596c2f6dce65760c66243eb7f8d083ea33b25afa17038a2d807d564c057a0570c" + } + } + ], + "establishment": 0 + } + }, + { + "approver": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01712f85d0e4406ac6104ed02f75832188ba24e1c22a7b3d8f8bcbe82821b906728fcd6b81bb4e52535ea862f4bdc3f746e05b74ef2866780a242f6b50e8294404" + } + } + ], + "establishment": 0 + } + }, + { + "approver": "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "014d1a66c8bc340a4d600a5901a7cedd78a81f57972673d94843ca1be1670e91748fdae2994ebe1107c6f2109b0b5b538e77f918a43eb659bc7d3bffc47f95c300" + } + }, + { + "index": 2, + "signature": { + "$bytes": "0162c2901e72aa7256951cf291ae95af606581983281696f823370f4da1ee938ea03bf1713c854c394a1b82cb04783c6e70db53db1007769f25c519435af317a06" + } + } + ], + "establishment": 0 + } + } + ] + } + }, + "cbor_hex": "a16a676f7665726e616e6365a26870726f706f73616ca3666368616e6765a264706565727835457a6a6a67746c6e6b6b737a787261676b717337696c67366361376d326b6370643768726262656b766f34676763693767766c326166616374696f6e6b72656d6f76655f7065657267636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616873657175656e63650069617070726f76616c7383a268617070726f76657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e6174757265584101a99e02208730f9230351de6efa9f76e1527d7a5a8ba00a86f5dfc54eb238689596c2f6dce65760c66243eb7f8d083ea33b25afa17038a2d807d564c057a0570c6d65737461626c6973686d656e7400a268617070726f7665727835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e6174757265584101712f85d0e4406ac6104ed02f75832188ba24e1c22a7b3d8f8bcbe82821b906728fcd6b81bb4e52535ea862f4bdc3f746e05b74ef2866780a242f6b50e82944046d65737461626c6973686d656e7400a268617070726f76657278354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a7367676932746371697369676e6174757265a26a7369676e61747572657382a265696e64657800697369676e61747572655841014d1a66c8bc340a4d600a5901a7cedd78a81f57972673d94843ca1be1670e91748fdae2994ebe1107c6f2109b0b5b538e77f918a43eb659bc7d3bffc47f95c300a265696e64657802697369676e617475726558410162c2901e72aa7256951cf291ae95af606581983281696f823370f4da1ee938ea03bf1713c854c394a1b82cb04783c6e70db53db1007769f25c519435af317a066d65737461626c6973686d656e7400" + } + ], + "expected_results": [ + { + "input": "2743f8871265af3e5fe5bf657bdbc94274f48c1c4c6e0887112e732dc88025b8", + "class": "governance", + "outcome": "dropped", + "error": "below_quorum" + }, + { + "input": "40d4550bd46b519c459478f86534cb137eae8458eea80f991b739d0554084508", + "class": "governance", + "outcome": "dropped", + "error": "duplicate_key" + }, + { + "input": "4e8dd45fc6f37047bf8cc2f41b68e89a6f3b31d72653694fb335780a80198bee", + "class": "governance", + "outcome": "dropped", + "error": "wrong_cluster" + }, + { + "input": "6b5490847ceb3591470e67bfd54cb38bf59761f6b63e6641b843c1b2a1a9b5fb", + "class": "governance", + "outcome": "dropped", + "error": "not_a_peer" + }, + { + "input": "938867444574e8dd12de3a8fa9a2cd2dc901d6f3923f919f87e1880fb4f46006", + "class": "governance", + "outcome": "dropped", + "error": "malformed_verifying_key" + }, + { + "input": "9d05582f1793f2de65429b7e987158346213112ede86a71f853fbca5531566e9", + "class": "governance", + "outcome": "dropped", + "error": "invalid_threshold" + } + ], + "expected_state": { + "bytes": {}, + "frame": 2, + "peers": {}, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "retired": {}, + "exported": {}, + "imported": [], + "registry": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ + 1 + ], + "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq": [ + 1 + ], + "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa": [ + 2 + ] + }, + "governance": { + "delay": 0, + "pending": [], + "sequence": 0 + }, + "controllers": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": { + "keys": [ + { + "$bytes": "01d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a" + } + ], + "sequence": 0, + "next_keys": [ + "E4fnvjywz23zeyb426croyvctrtqsse237th3kfjid4pfeewx7noa" + ], + "threshold": 1, + "last_event": "Ei473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "establishment": 0, + "next_threshold": 1 + }, + "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq": { + "keys": [ + { + "$bytes": "01f4ff420feb4040a73e51713a44f9966476c755e8e2d18b82677f8ff7a839afe2" + }, + { + "$bytes": "019b54b13b505ae2ddb12e49d8e10ed93725167ab9a0a77803538fc69858cdb0e2" + }, + { + "$bytes": "015c26708ee23779ee7b628241cc1735ed1ba4527639d7383bbc0ad9aa6295f535" + } + ], + "sequence": 0, + "next_keys": [ + "Efcf43zs566fqd5jlkxmbqnv2srtgk45uhenfpc4p5xzfkx7rdvma", + "Euaam4ynyfrxpmxiyogpumg3m6bdb4s5jigslwv3oqnp2gswv4buq", + "Ell3qkq2hpnwirn4m6hgulph32looiev6e5hgst2oc5c5f6jiwjjq" + ], + "threshold": 2, + "last_event": "Eqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "establishment": 0, + "next_threshold": 2 + }, + "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa": { + "keys": [ + { + "$bytes": "013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c" + } + ], + "sequence": 0, + "next_keys": [ + "Eqmsawig6oznh4b5cbovqukvzxa5u5jbiklkrlwhtdo6rbrsyjfnq" + ], + "threshold": 1, + "last_event": "Ezxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "establishment": 0, + "next_threshold": 1 + } + } + }, + "expected_state_cbor_hex": "aa656279746573a0656672616d6502657065657273a067636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616772657469726564a0686578706f72746564a068696d706f7274656480687265676973747279a378354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371810178354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a736767693274637181017835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f716181026a676f7665726e616e6365a36564656c6179006770656e64696e67806873657175656e6365006b636f6e74726f6c6c657273a378354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c640178354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a7367676932746371a7646b65797383582101f4ff420feb4040a73e51713a44f9966476c755e8e2d18b82677f8ff7a839afe25821019b54b13b505ae2ddb12e49d8e10ed93725167ab9a0a77803538fc69858cdb0e25821015c26708ee23779ee7b628241cc1735ed1ba4527639d7383bbc0ad9aa6295f5356873657175656e636500696e6578745f6b6579738378354566636634337a73353636667164356a6c6b786d62716e7632737274676b34357568656e667063347035787a666b78377264766d617835457561616d34796e79667278706d7869796f6770756d67336d366264623473356a6967736c7776336f716e703267737776346275717835456c6c33716b713268706e7769726e346d366867756c706833326c6f6f69657636653568677374326f6335633566366a69776a6a71697468726573686f6c64026a6c6173745f6576656e7478354571656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c64027835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161a7646b657973815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c6873657175656e636500696e6578745f6b65797381783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e71697468726573686f6c64016a6c6173745f6576656e747835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616d65737461626c6973686d656e74006e6e6578745f7468726573686f6c6401", + "expected_state_hash": "c9f9c56d180d9cb7fc0700bce171bf566935f872eb856ba56d0e24b7670eeecc" + }, + { + "frame": 2, + "inputs": [ + { + "input": { + "governance": { + "proposal": { + "change": { + "keys": [ + { + "$bytes": "012e471a1a7ca882e5ae7097226381ce35e769047b2fe00552aa7ce933912b39a7" + }, + { + "$bytes": "0166af65d5c6620705969a363753b114c9be50b904f7f7ecc7320805c71dfa38ea" + }, + { + "$bytes": "017cdf6321e36e7c2d4808643b57ed7e720703ce0050c912c873c972da03976e03" + }, + { + "$bytes": "01d080d09afc96aa94dd0f8ef6eb02d22d7c12bd1707cb6261a0d94d4ae1224859" + } + ], + "peer": "Enldsomgkjdhwaeznqf2cyu6j7jqwmkbfrc2klavaaybu6rfzewkq", + "action": "set_peer" + }, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "sequence": 0 + }, + "approvals": [ + { + "approver": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "013e53d722821a957ecfdf728fe30e9dde7c8c49c4cabf9c1c1cd826d6058d99793581c3aa57b55b3635fd5df1459a62dfec3079ba96d7383636ece5869585540f" + } + } + ], + "establishment": 0 + } + }, + { + "approver": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01908e5e82a50d0b28530248e7a248b7c9da0703c271a4cbe10c425e8c8d038ad2eb0179a9c9ba792243bf03fc0df9796d041d9e9915985452493a2c0c68b4430e" + } + } + ], + "establishment": 0 + } + }, + { + "approver": "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "0132624a8acb3de7a2b677c1d0db2f8822639334f2a9db78dacfca5d75ef95eb1de86a6931e807c2bcb28f498a0133115a4ce8d34cefc1a2ab1b077293f1e1340d" + } + }, + { + "index": 2, + "signature": { + "$bytes": "01cec290bd2d234071b98adbe0940ea5024cd4ccba1164eba12b341150ea8bec9df476bddfd348ce05b048059026892b2239a89802b10a9cf1e06b415b10520e0a" + } + } + ], + "establishment": 0 + } + } + ] + } + }, + "cbor_hex": "a16a676f7665726e616e6365a26870726f706f73616ca3666368616e6765a3646b657973845821012e471a1a7ca882e5ae7097226381ce35e769047b2fe00552aa7ce933912b39a758210166af65d5c6620705969a363753b114c9be50b904f7f7ecc7320805c71dfa38ea5821017cdf6321e36e7c2d4808643b57ed7e720703ce0050c912c873c972da03976e03582101d080d09afc96aa94dd0f8ef6eb02d22d7c12bd1707cb6261a0d94d4ae122485964706565727835456e6c64736f6d676b6a64687761657a6e716632637975366a376a71776d6b62667263326b6c617661617962753672667a65776b7166616374696f6e687365745f7065657267636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616873657175656e63650069617070726f76616c7383a268617070726f76657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e61747572655841013e53d722821a957ecfdf728fe30e9dde7c8c49c4cabf9c1c1cd826d6058d99793581c3aa57b55b3635fd5df1459a62dfec3079ba96d7383636ece5869585540f6d65737461626c6973686d656e7400a268617070726f7665727835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e6174757265584101908e5e82a50d0b28530248e7a248b7c9da0703c271a4cbe10c425e8c8d038ad2eb0179a9c9ba792243bf03fc0df9796d041d9e9915985452493a2c0c68b4430e6d65737461626c6973686d656e7400a268617070726f76657278354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a7367676932746371697369676e6174757265a26a7369676e61747572657382a265696e64657800697369676e617475726558410132624a8acb3de7a2b677c1d0db2f8822639334f2a9db78dacfca5d75ef95eb1de86a6931e807c2bcb28f498a0133115a4ce8d34cefc1a2ab1b077293f1e1340da265696e64657802697369676e6174757265584101cec290bd2d234071b98adbe0940ea5024cd4ccba1164eba12b341150ea8bec9df476bddfd348ce05b048059026892b2239a89802b10a9cf1e06b415b10520e0a6d65737461626c6973686d656e7400" + } + ], + "expected_results": [ + { + "input": "887669e8f2dffd7afd00fb733bae88b3502fc1952bd7adc182e2d31d6e4d4927", + "class": "governance", + "outcome": "applied" + } + ], + "expected_state": { + "bytes": {}, + "frame": 3, + "peers": {}, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "retired": {}, + "exported": {}, + "imported": [], + "registry": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ + 1 + ], + "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq": [ + 1 + ], + "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa": [ + 2 + ] + }, + "governance": { + "delay": 0, + "pending": [ + { + "change": { + "keys": [ + { + "$bytes": "012e471a1a7ca882e5ae7097226381ce35e769047b2fe00552aa7ce933912b39a7" + }, + { + "$bytes": "0166af65d5c6620705969a363753b114c9be50b904f7f7ecc7320805c71dfa38ea" + }, + { + "$bytes": "017cdf6321e36e7c2d4808643b57ed7e720703ce0050c912c873c972da03976e03" + }, + { + "$bytes": "01d080d09afc96aa94dd0f8ef6eb02d22d7c12bd1707cb6261a0d94d4ae1224859" + } + ], + "peer": "Enldsomgkjdhwaeznqf2cyu6j7jqwmkbfrc2klavaaybu6rfzewkq", + "action": "set_peer" + }, + "effective": 3 + } + ], + "sequence": 1 + }, + "controllers": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": { + "keys": [ + { + "$bytes": "01d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a" + } + ], + "sequence": 0, + "next_keys": [ + "E4fnvjywz23zeyb426croyvctrtqsse237th3kfjid4pfeewx7noa" + ], + "threshold": 1, + "last_event": "Ei473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "establishment": 0, + "next_threshold": 1 + }, + "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq": { + "keys": [ + { + "$bytes": "01f4ff420feb4040a73e51713a44f9966476c755e8e2d18b82677f8ff7a839afe2" + }, + { + "$bytes": "019b54b13b505ae2ddb12e49d8e10ed93725167ab9a0a77803538fc69858cdb0e2" + }, + { + "$bytes": "015c26708ee23779ee7b628241cc1735ed1ba4527639d7383bbc0ad9aa6295f535" + } + ], + "sequence": 0, + "next_keys": [ + "Efcf43zs566fqd5jlkxmbqnv2srtgk45uhenfpc4p5xzfkx7rdvma", + "Euaam4ynyfrxpmxiyogpumg3m6bdb4s5jigslwv3oqnp2gswv4buq", + "Ell3qkq2hpnwirn4m6hgulph32looiev6e5hgst2oc5c5f6jiwjjq" + ], + "threshold": 2, + "last_event": "Eqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "establishment": 0, + "next_threshold": 2 + }, + "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa": { + "keys": [ + { + "$bytes": "013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c" + } + ], + "sequence": 0, + "next_keys": [ + "Eqmsawig6oznh4b5cbovqukvzxa5u5jbiklkrlwhtdo6rbrsyjfnq" + ], + "threshold": 1, + "last_event": "Ezxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "establishment": 0, + "next_threshold": 1 + } + } + }, + "expected_state_cbor_hex": "aa656279746573a0656672616d6503657065657273a067636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616772657469726564a0686578706f72746564a068696d706f7274656480687265676973747279a378354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371810178354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a736767693274637181017835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f716181026a676f7665726e616e6365a36564656c6179006770656e64696e6781a2666368616e6765a3646b657973845821012e471a1a7ca882e5ae7097226381ce35e769047b2fe00552aa7ce933912b39a758210166af65d5c6620705969a363753b114c9be50b904f7f7ecc7320805c71dfa38ea5821017cdf6321e36e7c2d4808643b57ed7e720703ce0050c912c873c972da03976e03582101d080d09afc96aa94dd0f8ef6eb02d22d7c12bd1707cb6261a0d94d4ae122485964706565727835456e6c64736f6d676b6a64687761657a6e716632637975366a376a71776d6b62667263326b6c617661617962753672667a65776b7166616374696f6e687365745f7065657269656666656374697665036873657175656e6365016b636f6e74726f6c6c657273a378354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c640178354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a7367676932746371a7646b65797383582101f4ff420feb4040a73e51713a44f9966476c755e8e2d18b82677f8ff7a839afe25821019b54b13b505ae2ddb12e49d8e10ed93725167ab9a0a77803538fc69858cdb0e25821015c26708ee23779ee7b628241cc1735ed1ba4527639d7383bbc0ad9aa6295f5356873657175656e636500696e6578745f6b6579738378354566636634337a73353636667164356a6c6b786d62716e7632737274676b34357568656e667063347035787a666b78377264766d617835457561616d34796e79667278706d7869796f6770756d67336d366264623473356a6967736c7776336f716e703267737776346275717835456c6c33716b713268706e7769726e346d366867756c706833326c6f6f69657636653568677374326f6335633566366a69776a6a71697468726573686f6c64026a6c6173745f6576656e7478354571656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c64027835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161a7646b657973815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c6873657175656e636500696e6578745f6b65797381783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e71697468726573686f6c64016a6c6173745f6576656e747835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616d65737461626c6973686d656e74006e6e6578745f7468726573686f6c6401", + "expected_state_hash": "6c1492610441f06e2e1eda07b9caeddf546b57f7dc75fe36b32e828ec0dd543e" + }, + { + "frame": 3, + "inputs": [ + { + "input": { + "governance": { + "proposal": { + "change": { + "keys": [ + { + "$bytes": "01c3f4d7f70b73939e42378be169b686b48dd2ccb57828e5693321ea416e7a4032" + }, + { + "$bytes": "015abe5176271c03aa9a791a746f04f4279e44afec1125524a10941abd86bb56f9" + }, + { + "$bytes": "01b594cb6a37ce13b53eeaba3ca205321d37b97f79570fe519900988d2910e3248" + }, + { + "$bytes": "015ef32261a220a7b4adf87278722a940aea2649234df2a1e942a1a78f54507577" + } + ], + "peer": "Enldsomgkjdhwaeznqf2cyu6j7jqwmkbfrc2klavaaybu6rfzewkq", + "action": "set_peer" + }, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "sequence": 1 + }, + "approvals": [ + { + "approver": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "014fd27c1900e5adc8820889f6f21c654a2ac0f3bd865336f80f47668c47983e22571e487f083cd873ab39fa374ab6d9d7d08f9785137e3f8fbef95dcb6872720b" + } + } + ], + "establishment": 0 + } + }, + { + "approver": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "0148be6c921fd433327412ce56cb93741c30b56755f63dd91535f65c44823f54f7231d9ff0113aa0b626bff6585a398c6942bf94507bb1d819b1ab0e90f1ea290c" + } + } + ], + "establishment": 0 + } + }, + { + "approver": "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "016ade115c0f9536ee08f66b074a84362790f61b068e15f758f9feefbb498ab9e514bc94ac5a896a983b66a9edf17ddc717b926b13183db6140b3e7fb002e49406" + } + }, + { + "index": 2, + "signature": { + "$bytes": "01a16938dfe3787e9198f4798e660c5d2dc1cfa75fa4f7decf714f9143969f9bb889b6dba81a5d02951c3bd855b5c8988748511e5ae1883f0c2bd025240d13af0d" + } + } + ], + "establishment": 0 + } + } + ] + } + }, + "cbor_hex": "a16a676f7665726e616e6365a26870726f706f73616ca3666368616e6765a3646b65797384582101c3f4d7f70b73939e42378be169b686b48dd2ccb57828e5693321ea416e7a40325821015abe5176271c03aa9a791a746f04f4279e44afec1125524a10941abd86bb56f9582101b594cb6a37ce13b53eeaba3ca205321d37b97f79570fe519900988d2910e32485821015ef32261a220a7b4adf87278722a940aea2649234df2a1e942a1a78f5450757764706565727835456e6c64736f6d676b6a64687761657a6e716632637975366a376a71776d6b62667263326b6c617661617962753672667a65776b7166616374696f6e687365745f7065657267636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616873657175656e63650169617070726f76616c7383a268617070726f76657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e61747572655841014fd27c1900e5adc8820889f6f21c654a2ac0f3bd865336f80f47668c47983e22571e487f083cd873ab39fa374ab6d9d7d08f9785137e3f8fbef95dcb6872720b6d65737461626c6973686d656e7400a268617070726f7665727835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e617475726558410148be6c921fd433327412ce56cb93741c30b56755f63dd91535f65c44823f54f7231d9ff0113aa0b626bff6585a398c6942bf94507bb1d819b1ab0e90f1ea290c6d65737461626c6973686d656e7400a268617070726f76657278354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a7367676932746371697369676e6174757265a26a7369676e61747572657382a265696e64657800697369676e61747572655841016ade115c0f9536ee08f66b074a84362790f61b068e15f758f9feefbb498ab9e514bc94ac5a896a983b66a9edf17ddc717b926b13183db6140b3e7fb002e49406a265696e64657802697369676e6174757265584101a16938dfe3787e9198f4798e660c5d2dc1cfa75fa4f7decf714f9143969f9bb889b6dba81a5d02951c3bd855b5c8988748511e5ae1883f0c2bd025240d13af0d6d65737461626c6973686d656e7400" + }, + { + "input": { + "governance": { + "proposal": { + "change": { + "peer": "Enldsomgkjdhwaeznqf2cyu6j7jqwmkbfrc2klavaaybu6rfzewkq", + "action": "remove_peer" + }, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "sequence": 2 + }, + "approvals": [ + { + "approver": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "019489fbadbbbc9aa9660b4cecf0f0b55cfcd9558988537ae583840d8728a76b86c4bd7a20f05ab5707c1fb98abc48a7051e0501f618097c4c1b42d4c192b0510b" + } + } + ], + "establishment": 0 + } + }, + { + "approver": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01e2be8eefa1a1f35355be18624560e87dec6aae016829a390fd7492c6fa68264004e0a06dbecced991ecfefd43bea25f429eb713f7a76097cc8f8d549f74d6e0d" + } + } + ], + "establishment": 0 + } + }, + { + "approver": "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01b3b0923c204df0c8424e198cbf5b25ed6c61914b5d496546bf392980da23948dd95b768284a1663309b9ddd7e5388b535d7d76fb6c796d6b209d70c17b99fa05" + } + }, + { + "index": 2, + "signature": { + "$bytes": "01b58343e6934134919da03805aa8efe0b01b3f9b2ee791f9011bcafdfe1912387c977eb311858eee7c81442f609e16474c92f1de95d3f18f95c6dd8e4a3cf8307" + } + } + ], + "establishment": 0 + } + } + ] + } + }, + "cbor_hex": "a16a676f7665726e616e6365a26870726f706f73616ca3666368616e6765a264706565727835456e6c64736f6d676b6a64687761657a6e716632637975366a376a71776d6b62667263326b6c617661617962753672667a65776b7166616374696f6e6b72656d6f76655f7065657267636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616873657175656e63650269617070726f76616c7383a268617070726f76657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e61747572655841019489fbadbbbc9aa9660b4cecf0f0b55cfcd9558988537ae583840d8728a76b86c4bd7a20f05ab5707c1fb98abc48a7051e0501f618097c4c1b42d4c192b0510b6d65737461626c6973686d656e7400a268617070726f7665727835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e6174757265584101e2be8eefa1a1f35355be18624560e87dec6aae016829a390fd7492c6fa68264004e0a06dbecced991ecfefd43bea25f429eb713f7a76097cc8f8d549f74d6e0d6d65737461626c6973686d656e7400a268617070726f76657278354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a7367676932746371697369676e6174757265a26a7369676e61747572657382a265696e64657800697369676e6174757265584101b3b0923c204df0c8424e198cbf5b25ed6c61914b5d496546bf392980da23948dd95b768284a1663309b9ddd7e5388b535d7d76fb6c796d6b209d70c17b99fa05a265696e64657802697369676e6174757265584101b58343e6934134919da03805aa8efe0b01b3f9b2ee791f9011bcafdfe1912387c977eb311858eee7c81442f609e16474c92f1de95d3f18f95c6dd8e4a3cf83076d65737461626c6973686d656e7400" + } + ], + "expected_results": [ + { + "input": "7f8a45232efa18d3b82d9f0c5ec0befdd83022316dbdbfcd60e81b87cbb615cb", + "class": "governance", + "outcome": "applied" + }, + { + "input": "93d63ac71e64c25aac3d2c4b08015ed85ae98fdab0c0bf817f4d226c8657c9d2", + "class": "governance", + "outcome": "applied" + } + ], + "expected_state": { + "bytes": {}, + "frame": 4, + "peers": { + "Enldsomgkjdhwaeznqf2cyu6j7jqwmkbfrc2klavaaybu6rfzewkq": { + "keys": [ + { + "$bytes": "012e471a1a7ca882e5ae7097226381ce35e769047b2fe00552aa7ce933912b39a7" + }, + { + "$bytes": "0166af65d5c6620705969a363753b114c9be50b904f7f7ecc7320805c71dfa38ea" + }, + { + "$bytes": "017cdf6321e36e7c2d4808643b57ed7e720703ce0050c912c873c972da03976e03" + }, + { + "$bytes": "01d080d09afc96aa94dd0f8ef6eb02d22d7c12bd1707cb6261a0d94d4ae1224859" + } + ] + } + }, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "retired": {}, + "exported": {}, + "imported": [], + "registry": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ + 1 + ], + "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq": [ + 1 + ], + "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa": [ + 2 + ] + }, + "governance": { + "delay": 0, + "pending": [ + { + "change": { + "keys": [ + { + "$bytes": "01c3f4d7f70b73939e42378be169b686b48dd2ccb57828e5693321ea416e7a4032" + }, + { + "$bytes": "015abe5176271c03aa9a791a746f04f4279e44afec1125524a10941abd86bb56f9" + }, + { + "$bytes": "01b594cb6a37ce13b53eeaba3ca205321d37b97f79570fe519900988d2910e3248" + }, + { + "$bytes": "015ef32261a220a7b4adf87278722a940aea2649234df2a1e942a1a78f54507577" + } + ], + "peer": "Enldsomgkjdhwaeznqf2cyu6j7jqwmkbfrc2klavaaybu6rfzewkq", + "action": "set_peer" + }, + "effective": 4 + }, + { + "change": { + "peer": "Enldsomgkjdhwaeznqf2cyu6j7jqwmkbfrc2klavaaybu6rfzewkq", + "action": "remove_peer" + }, + "effective": 4 + } + ], + "sequence": 3 + }, + "controllers": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": { + "keys": [ + { + "$bytes": "01d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a" + } + ], + "sequence": 0, + "next_keys": [ + "E4fnvjywz23zeyb426croyvctrtqsse237th3kfjid4pfeewx7noa" + ], + "threshold": 1, + "last_event": "Ei473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "establishment": 0, + "next_threshold": 1 + }, + "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq": { + "keys": [ + { + "$bytes": "01f4ff420feb4040a73e51713a44f9966476c755e8e2d18b82677f8ff7a839afe2" + }, + { + "$bytes": "019b54b13b505ae2ddb12e49d8e10ed93725167ab9a0a77803538fc69858cdb0e2" + }, + { + "$bytes": "015c26708ee23779ee7b628241cc1735ed1ba4527639d7383bbc0ad9aa6295f535" + } + ], + "sequence": 0, + "next_keys": [ + "Efcf43zs566fqd5jlkxmbqnv2srtgk45uhenfpc4p5xzfkx7rdvma", + "Euaam4ynyfrxpmxiyogpumg3m6bdb4s5jigslwv3oqnp2gswv4buq", + "Ell3qkq2hpnwirn4m6hgulph32looiev6e5hgst2oc5c5f6jiwjjq" + ], + "threshold": 2, + "last_event": "Eqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "establishment": 0, + "next_threshold": 2 + }, + "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa": { + "keys": [ + { + "$bytes": "013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c" + } + ], + "sequence": 0, + "next_keys": [ + "Eqmsawig6oznh4b5cbovqukvzxa5u5jbiklkrlwhtdo6rbrsyjfnq" + ], + "threshold": 1, + "last_event": "Ezxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "establishment": 0, + "next_threshold": 1 + } + } + }, + "expected_state_cbor_hex": "aa656279746573a0656672616d6504657065657273a17835456e6c64736f6d676b6a64687761657a6e716632637975366a376a71776d6b62667263326b6c617661617962753672667a65776b71a1646b657973845821012e471a1a7ca882e5ae7097226381ce35e769047b2fe00552aa7ce933912b39a758210166af65d5c6620705969a363753b114c9be50b904f7f7ecc7320805c71dfa38ea5821017cdf6321e36e7c2d4808643b57ed7e720703ce0050c912c873c972da03976e03582101d080d09afc96aa94dd0f8ef6eb02d22d7c12bd1707cb6261a0d94d4ae122485967636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616772657469726564a0686578706f72746564a068696d706f7274656480687265676973747279a378354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371810178354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a736767693274637181017835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f716181026a676f7665726e616e6365a36564656c6179006770656e64696e6782a2666368616e6765a3646b65797384582101c3f4d7f70b73939e42378be169b686b48dd2ccb57828e5693321ea416e7a40325821015abe5176271c03aa9a791a746f04f4279e44afec1125524a10941abd86bb56f9582101b594cb6a37ce13b53eeaba3ca205321d37b97f79570fe519900988d2910e32485821015ef32261a220a7b4adf87278722a940aea2649234df2a1e942a1a78f5450757764706565727835456e6c64736f6d676b6a64687761657a6e716632637975366a376a71776d6b62667263326b6c617661617962753672667a65776b7166616374696f6e687365745f706565726965666665637469766504a2666368616e6765a264706565727835456e6c64736f6d676b6a64687761657a6e716632637975366a376a71776d6b62667263326b6c617661617962753672667a65776b7166616374696f6e6b72656d6f76655f7065657269656666656374697665046873657175656e6365036b636f6e74726f6c6c657273a378354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c640178354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a7367676932746371a7646b65797383582101f4ff420feb4040a73e51713a44f9966476c755e8e2d18b82677f8ff7a839afe25821019b54b13b505ae2ddb12e49d8e10ed93725167ab9a0a77803538fc69858cdb0e25821015c26708ee23779ee7b628241cc1735ed1ba4527639d7383bbc0ad9aa6295f5356873657175656e636500696e6578745f6b6579738378354566636634337a73353636667164356a6c6b786d62716e7632737274676b34357568656e667063347035787a666b78377264766d617835457561616d34796e79667278706d7869796f6770756d67336d366264623473356a6967736c7776336f716e703267737776346275717835456c6c33716b713268706e7769726e346d366867756c706833326c6f6f69657636653568677374326f6335633566366a69776a6a71697468726573686f6c64026a6c6173745f6576656e7478354571656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c64027835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161a7646b657973815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c6873657175656e636500696e6578745f6b65797381783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e71697468726573686f6c64016a6c6173745f6576656e747835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616d65737461626c6973686d656e74006e6e6578745f7468726573686f6c6401", + "expected_state_hash": "b157672187b2e3b82cc47496478e48e0a53c1102775030bf4ee69f65f7ffdc17" + }, + { + "frame": 4, + "inputs": [], + "expected_results": [], + "expected_state": { + "bytes": {}, + "frame": 5, + "peers": {}, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "retired": {}, + "exported": {}, + "imported": [], + "registry": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ + 1 + ], + "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq": [ + 1 + ], + "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa": [ + 2 + ] + }, + "governance": { + "delay": 0, + "pending": [], + "sequence": 3 + }, + "controllers": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": { + "keys": [ + { + "$bytes": "01d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a" + } + ], + "sequence": 0, + "next_keys": [ + "E4fnvjywz23zeyb426croyvctrtqsse237th3kfjid4pfeewx7noa" + ], + "threshold": 1, + "last_event": "Ei473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "establishment": 0, + "next_threshold": 1 + }, + "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq": { + "keys": [ + { + "$bytes": "01f4ff420feb4040a73e51713a44f9966476c755e8e2d18b82677f8ff7a839afe2" + }, + { + "$bytes": "019b54b13b505ae2ddb12e49d8e10ed93725167ab9a0a77803538fc69858cdb0e2" + }, + { + "$bytes": "015c26708ee23779ee7b628241cc1735ed1ba4527639d7383bbc0ad9aa6295f535" + } + ], + "sequence": 0, + "next_keys": [ + "Efcf43zs566fqd5jlkxmbqnv2srtgk45uhenfpc4p5xzfkx7rdvma", + "Euaam4ynyfrxpmxiyogpumg3m6bdb4s5jigslwv3oqnp2gswv4buq", + "Ell3qkq2hpnwirn4m6hgulph32looiev6e5hgst2oc5c5f6jiwjjq" + ], + "threshold": 2, + "last_event": "Eqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "establishment": 0, + "next_threshold": 2 + }, + "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa": { + "keys": [ + { + "$bytes": "013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c" + } + ], + "sequence": 0, + "next_keys": [ + "Eqmsawig6oznh4b5cbovqukvzxa5u5jbiklkrlwhtdo6rbrsyjfnq" + ], + "threshold": 1, + "last_event": "Ezxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "establishment": 0, + "next_threshold": 1 + } + } + }, + "expected_state_cbor_hex": "aa656279746573a0656672616d6505657065657273a067636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616772657469726564a0686578706f72746564a068696d706f7274656480687265676973747279a378354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371810178354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a736767693274637181017835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f716181026a676f7665726e616e6365a36564656c6179006770656e64696e67806873657175656e6365036b636f6e74726f6c6c657273a378354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c640178354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a7367676932746371a7646b65797383582101f4ff420feb4040a73e51713a44f9966476c755e8e2d18b82677f8ff7a839afe25821019b54b13b505ae2ddb12e49d8e10ed93725167ab9a0a77803538fc69858cdb0e25821015c26708ee23779ee7b628241cc1735ed1ba4527639d7383bbc0ad9aa6295f5356873657175656e636500696e6578745f6b6579738378354566636634337a73353636667164356a6c6b786d62716e7632737274676b34357568656e667063347035787a666b78377264766d617835457561616d34796e79667278706d7869796f6770756d67336d366264623473356a6967736c7776336f716e703267737776346275717835456c6c33716b713268706e7769726e346d366867756c706833326c6f6f69657636653568677374326f6335633566366a69776a6a71697468726573686f6c64026a6c6173745f6576656e7478354571656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c64027835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161a7646b657973815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c6873657175656e636500696e6578745f6b65797381783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e71697468726573686f6c64016a6c6173745f6576656e747835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616d65737461626c6973686d656e74006e6e6578745f7468726573686f6c6401", + "expected_state_hash": "c51dcf560223c4d12d46e07d6ea7e7a8ef945f48ae7aa00f8970cd6914bc313f" + } + ] + }, + { + "name": "state-017-no-electorate", + "description": "A cluster whose genesis registry is empty. No issuer can approve anything, so no change can ever be accepted: governance needs a genesis issuer to start from.", + "genesis": { + "state": { + "bytes": {}, + "frame": 0, + "peers": {}, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "retired": {}, + "exported": {}, + "imported": [], + "registry": {}, + "governance": { + "delay": 0, + "pending": [], + "sequence": 0 + }, + "controllers": {} + }, + "cbor_hex": "aa656279746573a0656672616d6500657065657273a067636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616772657469726564a0686578706f72746564a068696d706f7274656480687265676973747279a06a676f7665726e616e6365a36564656c6179006770656e64696e67806873657175656e6365006b636f6e74726f6c6c657273a0", + "state_hash": "77645c727768ed1d7fd80f7535352d70a28ac17101999295d3d7f6da5de82211" + }, + "frames": [ + { + "frame": 0, + "inputs": [ + { + "input": { + "key_event": { + "event": { + "a": [], + "d": "Ei473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "i": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "k": [ + { + "$bytes": "01d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a" + } + ], + "n": [ + "E4fnvjywz23zeyb426croyvctrtqsse237th3kfjid4pfeewx7noa" + ], + "p": "", + "s": 0, + "t": "icp", + "v": "SBYTE10JSON", + "kt": 1, + "nt": 1 + }, + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01e90f89475321e5febce3d271ccb2e304301d0975a6e49aa49a9e76f54ecf4d027097eda8d45ff0d0bf14c94d86f26d7100868c1af79bcfb609792e720e6b1604" + } + } + ] + } + }, + "cbor_hex": "a1696b65795f6576656e74a2656576656e74ab616180616478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371616978354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371616b81582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a616e8178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f6161706061730061746369637061766b534259544531304a534f4e626b7401626e74016a7369676e61747572657381a265696e64657800697369676e6174757265584101e90f89475321e5febce3d271ccb2e304301d0975a6e49aa49a9e76f54ecf4d027097eda8d45ff0d0bf14c94d86f26d7100868c1af79bcfb609792e720e6b1604" + }, + { + "input": { + "governance": { + "proposal": { + "change": { + "action": "add_issuer", + "issuer": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "cargo_type": 1 + }, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "sequence": 0 + }, + "approvals": [] + } + }, + "cbor_hex": "a16a676f7665726e616e6365a26870726f706f73616ca3666368616e6765a366616374696f6e6a6164645f6973737565726669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716a636172676f5f747970650167636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616873657175656e63650069617070726f76616c7380" + } + ], + "expected_results": [ + { + "input": "6c0cba880da38a32a827d1d6f113123e9c04b7ae7e9df80b3e5060ffc755fff6", + "class": "key_event", + "outcome": "applied" + }, + { + "input": "0888f0b2b3fd838f64cfc3c9a4adc585f7f02149aaa0060598b2dd0ce01c5bbc", + "class": "governance", + "outcome": "dropped", + "error": "no_electorate" + } + ], + "expected_state": { + "bytes": {}, + "frame": 1, + "peers": {}, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "retired": {}, + "exported": {}, + "imported": [], + "registry": {}, + "governance": { + "delay": 0, + "pending": [], + "sequence": 0 + }, + "controllers": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": { + "keys": [ + { + "$bytes": "01d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a" + } + ], + "sequence": 0, + "next_keys": [ + "E4fnvjywz23zeyb426croyvctrtqsse237th3kfjid4pfeewx7noa" + ], + "threshold": 1, + "last_event": "Ei473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "establishment": 0, + "next_threshold": 1 + } + } + }, + "expected_state_cbor_hex": "aa656279746573a0656672616d6501657065657273a067636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616772657469726564a0686578706f72746564a068696d706f7274656480687265676973747279a06a676f7665726e616e6365a36564656c6179006770656e64696e67806873657175656e6365006b636f6e74726f6c6c657273a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c6401", + "expected_state_hash": "04c6b2b5c16a355fe6f31653990737772caddb2c8ce22f71ec42dc8d7d901fa0" + } + ] + }, + { + "name": "state-018-redemption", + "description": "Frame 1: burns refused, one check each — of Alice's byte in her name but signed with the issuer's key; naming frame 0; from a history the byte is not at; by the issuer, who does not own it; and of a byte the cluster has never held. Frame 2 is redemption: Alice returns the byte to its issuer and the issuer burns it, in one frame — burns apply after transfers. The byte moves to `retired`. In frame 3 nothing revives it: Alice's burn, the issuer's transfer and the replayed mint are all refused.", + "genesis": { + "state": { + "bytes": {}, + "frame": 0, + "peers": {}, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "retired": {}, + "exported": {}, + "imported": [], + "registry": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ + 1 + ] + }, + "governance": { + "delay": 0, + "pending": [], + "sequence": 0 + }, + "controllers": {} + }, + "cbor_hex": "aa656279746573a0656672616d6500657065657273a067636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616772657469726564a0686578706f72746564a068696d706f7274656480687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016a676f7665726e616e6365a36564656c6179006770656e64696e67806873657175656e6365006b636f6e74726f6c6c657273a0", + "state_hash": "2581be8db9de04335c3ad38210a8371f07672f8e0e0343b1d7fff20dc3fd4ebe" + }, + "frames": [ + { + "frame": 0, + "inputs": [ + { + "input": { + "key_event": { + "event": { + "a": [], + "d": "Ei473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "i": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "k": [ + { + "$bytes": "01d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a" + } + ], + "n": [ + "E4fnvjywz23zeyb426croyvctrtqsse237th3kfjid4pfeewx7noa" + ], + "p": "", + "s": 0, + "t": "icp", + "v": "SBYTE10JSON", + "kt": 1, + "nt": 1 + }, + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01e90f89475321e5febce3d271ccb2e304301d0975a6e49aa49a9e76f54ecf4d027097eda8d45ff0d0bf14c94d86f26d7100868c1af79bcfb609792e720e6b1604" + } + } + ] + } + }, + "cbor_hex": "a1696b65795f6576656e74a2656576656e74ab616180616478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371616978354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371616b81582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a616e8178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f6161706061730061746369637061766b534259544531304a534f4e626b7401626e74016a7369676e61747572657381a265696e64657800697369676e6174757265584101e90f89475321e5febce3d271ccb2e304301d0975a6e49aa49a9e76f54ecf4d027097eda8d45ff0d0bf14c94d86f26d7100868c1af79bcfb609792e720e6b1604" + }, + { + "input": { + "key_event": { + "event": { + "a": [], + "d": "Ezxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "i": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "k": [ + { + "$bytes": "013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c" + } + ], + "n": [ + "Eqmsawig6oznh4b5cbovqukvzxa5u5jbiklkrlwhtdo6rbrsyjfnq" + ], + "p": "", + "s": 0, + "t": "icp", + "v": "SBYTE10JSON", + "kt": 1, + "nt": 1 + }, + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01c0999c04eee90f056e29a2753f1a90665636394e819578d4cc2a2a40afb841b9a89a759b881adc095be848ba4ce9be9f64da3f4efcb5f935c0c20723ab68da07" + } + } + ] + } + }, + "cbor_hex": "a1696b65795f6576656e74a2656576656e74ab61618061647835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f716161697835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161616b815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c616e81783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e7161706061730061746369637061766b534259544531304a534f4e626b7401626e74016a7369676e61747572657381a265696e64657800697369676e6174757265584101c0999c04eee90f056e29a2753f1a90665636394e819578d4cc2a2a40afb841b9a89a759b881adc095be848ba4ce9be9f64da3f4efcb5f935c0c20723ab68da07" + }, + { + "input": { + "mint": { + "d": "Eyl2abuhbzbih3ao7hvjmgtjyzm4b5jeufdzafn6pme3j6id53z7q", + "cargo": { + "type": 1, + "bytes": { + "$bytes": "a1666d6963726f731a05f5e100" + } + }, + "nonce": { + "$bytes": "dcc74ebbcedebda361fb18a7abec95d9" + }, + "issuer": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "recipient": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "0188d2bbf7bf3ea95bb33866235bae150ac65c7371bc2776f17eb0944884cc8a4e7d402947d334d07e871acd0c305e6791d6e9b5747a683b6c58fc81f21dbcdd09" + } + } + ], + "establishment": 0 + } + } + }, + "cbor_hex": "a1646d696e74a66164783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a377165636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656e6f6e636550dcc74ebbcedebda361fb18a7abec95d96669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637169726563697069656e747835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e617475726558410188d2bbf7bf3ea95bb33866235bae150ac65c7371bc2776f17eb0944884cc8a4e7d402947d334d07e871acd0c305e6791d6e9b5747a683b6c58fc81f21dbcdd096d65737461626c6973686d656e7400" + } + ], + "expected_results": [ + { + "input": "6c0cba880da38a32a827d1d6f113123e9c04b7ae7e9df80b3e5060ffc755fff6", + "class": "key_event", + "outcome": "applied" + }, + { + "input": "6e9b571b38262c22a83b5a86bb7aba15ef2f7c90a82ec9fdd124593783c3aedf", + "class": "key_event", + "outcome": "applied" + }, + { + "input": "e48827dde00e15d7e4f3fa922605ba36da0a9371580a5de3efbbaf805b9043f5", + "class": "mint", + "outcome": "applied" + } + ], + "expected_state": { + "bytes": { + "Eyl2abuhbzbih3ao7hvjmgtjyzm4b5jeufdzafn6pme3j6id53z7q": { + "cargo": { + "type": 1, + "bytes": { + "$bytes": "a1666d6963726f731a05f5e100" + } + }, + "owner": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "issuer": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "minted": 0, + "history_hash": { + "$bytes": "c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f" + } + } + }, + "frame": 1, + "peers": {}, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "retired": {}, + "exported": {}, + "imported": [], + "registry": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ + 1 + ] + }, + "governance": { + "delay": 0, + "pending": [], + "sequence": 0 + }, + "controllers": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": { + "keys": [ + { + "$bytes": "01d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a" + } + ], + "sequence": 0, + "next_keys": [ + "E4fnvjywz23zeyb426croyvctrtqsse237th3kfjid4pfeewx7noa" + ], + "threshold": 1, + "last_event": "Ei473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "establishment": 0, + "next_threshold": 1 + }, + "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa": { + "keys": [ + { + "$bytes": "013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c" + } + ], + "sequence": 0, + "next_keys": [ + "Eqmsawig6oznh4b5cbovqukvzxa5u5jbiklkrlwhtdo6rbrsyjfnq" + ], + "threshold": 1, + "last_event": "Ezxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "establishment": 0, + "next_threshold": 1 + } + } + }, + "expected_state_cbor_hex": "aa656279746573a1783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771a565636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656f776e65727835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371666d696e746564006c686973746f72795f686173685820c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f656672616d6501657065657273a067636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616772657469726564a0686578706f72746564a068696d706f7274656480687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016a676f7665726e616e6365a36564656c6179006770656e64696e67806873657175656e6365006b636f6e74726f6c6c657273a278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c64017835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161a7646b657973815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c6873657175656e636500696e6578745f6b65797381783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e71697468726573686f6c64016a6c6173745f6576656e747835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616d65737461626c6973686d656e74006e6e6578745f7468726573686f6c6401", + "expected_state_hash": "bc7de16c497a07d7f98ba6e31494352dc20b9298d564392e4e73c012e14be227" + }, + { + "frame": 1, + "inputs": [ + { + "input": { + "burn": { + "byte": "Eyl2abuhbzbih3ao7hvjmgtjyzm4b5jeufdzafn6pme3j6id53z7q", + "frame": 1, + "owner": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01a685e2ce9a4b7a56b569c96929ba6808936524b346f7ca5a365bb8a468f8b83939ff31aa55722bf243f538b9fd346aea8aa1c30d013884c52f511b5baee67b0b" + } + } + ], + "establishment": 0 + }, + "previous_history_hash": { + "$bytes": "c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f" + } + } + }, + "cbor_hex": "a1646275726ea56462797465783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771656672616d6501656f776e65727835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e6174757265584101a685e2ce9a4b7a56b569c96929ba6808936524b346f7ca5a365bb8a468f8b83939ff31aa55722bf243f538b9fd346aea8aa1c30d013884c52f511b5baee67b0b6d65737461626c6973686d656e74007570726576696f75735f686973746f72795f686173685820c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f" + }, + { + "input": { + "burn": { + "byte": "Eyl2abuhbzbih3ao7hvjmgtjyzm4b5jeufdzafn6pme3j6id53z7q", + "frame": 0, + "owner": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01cf94adf7dac1a0a59550fcae0b7ee8996acb51f01daf21938ecf5746f1e69fc3334914ec40a44dce622cfac2140c9fa747e493322b23e814b47c28884cde8b00" + } + } + ], + "establishment": 0 + }, + "previous_history_hash": { + "$bytes": "c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f" + } + } + }, + "cbor_hex": "a1646275726ea56462797465783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771656672616d6500656f776e65727835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e6174757265584101cf94adf7dac1a0a59550fcae0b7ee8996acb51f01daf21938ecf5746f1e69fc3334914ec40a44dce622cfac2140c9fa747e493322b23e814b47c28884cde8b006d65737461626c6973686d656e74007570726576696f75735f686973746f72795f686173685820c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f" + }, + { + "input": { + "burn": { + "byte": "Eyl2abuhbzbih3ao7hvjmgtjyzm4b5jeufdzafn6pme3j6id53z7q", + "frame": 1, + "owner": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "015b2de2606231c701059038278470c90998916db4584327032cecb0fd9c744936d2b599d273c703307417fbe25f3830eb3d78b8ae72de57718be4c6e21b964c08" + } + } + ], + "establishment": 0 + }, + "previous_history_hash": { + "$bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + } + }, + "cbor_hex": "a1646275726ea56462797465783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771656672616d6501656f776e65727835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e61747572655841015b2de2606231c701059038278470c90998916db4584327032cecb0fd9c744936d2b599d273c703307417fbe25f3830eb3d78b8ae72de57718be4c6e21b964c086d65737461626c6973686d656e74007570726576696f75735f686973746f72795f6861736858200707070707070707070707070707070707070707070707070707070707070707" + }, + { + "input": { + "burn": { + "byte": "Eyl2abuhbzbih3ao7hvjmgtjyzm4b5jeufdzafn6pme3j6id53z7q", + "frame": 1, + "owner": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "018e4a3fe7f14d3ce1fab6ed1fcfb1db4cc022c1d7663d86fe2ff95e62d8cb9dd3079375a3bbb7c12b7b769a51acfec07353610d708f4430687420740477556403" + } + } + ], + "establishment": 0 + }, + "previous_history_hash": { + "$bytes": "c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f" + } + } + }, + "cbor_hex": "a1646275726ea56462797465783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771656672616d6501656f776e657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e61747572655841018e4a3fe7f14d3ce1fab6ed1fcfb1db4cc022c1d7663d86fe2ff95e62d8cb9dd3079375a3bbb7c12b7b769a51acfec07353610d708f44306874207404775564036d65737461626c6973686d656e74007570726576696f75735f686973746f72795f686173685820c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f" + }, + { + "input": { + "burn": { + "byte": "Eer4tckfku7xcdkcrxjwlovurkncdrxeehihvu6hrkfhpsj45m6sq", + "frame": 1, + "owner": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "012e527f9dc575ab0c2bd527caa20b8f94a80ea3f95362ca1c3b3684c7348ec4d585a730db4595bb8db3b80ed35ae1bc87174359834eeeaba886ea58252a912e00" + } + } + ], + "establishment": 0 + }, + "previous_history_hash": { + "$bytes": "0000000000000000000000000000000000000000000000000000000000000000" + } + } + }, + "cbor_hex": "a1646275726ea5646279746578354565723474636b666b75377863646b6372786a776c6f7675726b6e63647278656568696876753668726b666870736a34356d367371656672616d6501656f776e65727835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e61747572655841012e527f9dc575ab0c2bd527caa20b8f94a80ea3f95362ca1c3b3684c7348ec4d585a730db4595bb8db3b80ed35ae1bc87174359834eeeaba886ea58252a912e006d65737461626c6973686d656e74007570726576696f75735f686973746f72795f6861736858200000000000000000000000000000000000000000000000000000000000000000" + } + ], + "expected_results": [ + { + "input": "1e3dabf7aa92d1b8630617e7d4e04acdf7a311a326d474887db3d5d6ade7d52a", + "class": "burn", + "outcome": "dropped", + "error": "broken_history_chain" + }, + { + "input": "2975d93ca8beee080a585471fba3678cc2183e359d73b85451e0818b9def6690", + "class": "burn", + "outcome": "dropped", + "error": "wrong_frame" + }, + { + "input": "a25ff491bf3031824e07c15d347b9352954902af4112042f24a9870c70da0fc2", + "class": "burn", + "outcome": "dropped", + "error": "signature_invalid" + }, + { + "input": "d9ec250a6aa225a2cfd04300e2db7ae62438242ba0ea8c90412f3e8d28f17f5e", + "class": "burn", + "outcome": "dropped", + "error": "unknown_byte" + }, + { + "input": "ef58c593fe655a459d4533ac86a41e14ce1c31208031b66b051127df4c50d7b6", + "class": "burn", + "outcome": "dropped", + "error": "not_current_owner" + } + ], + "expected_state": { + "bytes": { + "Eyl2abuhbzbih3ao7hvjmgtjyzm4b5jeufdzafn6pme3j6id53z7q": { + "cargo": { + "type": 1, + "bytes": { + "$bytes": "a1666d6963726f731a05f5e100" + } + }, + "owner": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "issuer": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "minted": 0, + "history_hash": { + "$bytes": "c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f" + } + } + }, + "frame": 2, + "peers": {}, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "retired": {}, + "exported": {}, + "imported": [], + "registry": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ + 1 + ] + }, + "governance": { + "delay": 0, + "pending": [], + "sequence": 0 + }, + "controllers": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": { + "keys": [ + { + "$bytes": "01d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a" + } + ], + "sequence": 0, + "next_keys": [ + "E4fnvjywz23zeyb426croyvctrtqsse237th3kfjid4pfeewx7noa" + ], + "threshold": 1, + "last_event": "Ei473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "establishment": 0, + "next_threshold": 1 + }, + "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa": { + "keys": [ + { + "$bytes": "013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c" + } + ], + "sequence": 0, + "next_keys": [ + "Eqmsawig6oznh4b5cbovqukvzxa5u5jbiklkrlwhtdo6rbrsyjfnq" + ], + "threshold": 1, + "last_event": "Ezxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "establishment": 0, + "next_threshold": 1 + } + } + }, + "expected_state_cbor_hex": "aa656279746573a1783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771a565636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656f776e65727835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371666d696e746564006c686973746f72795f686173685820c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f656672616d6502657065657273a067636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616772657469726564a0686578706f72746564a068696d706f7274656480687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016a676f7665726e616e6365a36564656c6179006770656e64696e67806873657175656e6365006b636f6e74726f6c6c657273a278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c64017835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161a7646b657973815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c6873657175656e636500696e6578745f6b65797381783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e71697468726573686f6c64016a6c6173745f6576656e747835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616d65737461626c6973686d656e74006e6e6578745f7468726573686f6c6401", + "expected_state_hash": "0e5049366385e70ef2d066df66e08ff25418f0de4e2c72ec812d435b0dc804c0" + }, + { + "frame": 2, + "inputs": [ + { + "input": { + "burn": { + "byte": "Eyl2abuhbzbih3ao7hvjmgtjyzm4b5jeufdzafn6pme3j6id53z7q", + "frame": 2, + "owner": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "015be99f0ae9a929646eaa4287028cec1f993fe400d5da4ed14b89f7eaed2e059ba6fe4ae407241fe409127faaf1cd60d0fe1b1ba6e80894d945e3587de21de90c" + } + } + ], + "establishment": 0 + }, + "previous_history_hash": { + "$bytes": "8e6a50f34241aa3daefbc28d5e32468d2d50381cc3f2ddab833842b8cd271ca6" + } + } + }, + "cbor_hex": "a1646275726ea56462797465783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771656672616d6502656f776e657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e61747572655841015be99f0ae9a929646eaa4287028cec1f993fe400d5da4ed14b89f7eaed2e059ba6fe4ae407241fe409127faaf1cd60d0fe1b1ba6e80894d945e3587de21de90c6d65737461626c6973686d656e74007570726576696f75735f686973746f72795f6861736858208e6a50f34241aa3daefbc28d5e32468d2d50381cc3f2ddab833842b8cd271ca6" + }, + { + "input": { + "transfer": { + "byte": "Eyl2abuhbzbih3ao7hvjmgtjyzm4b5jeufdzafn6pme3j6id53z7q", + "transition": { + "to": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "from": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "frame": 2, + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "011f872ca82888b221406dcd043fabf7dbe855b7aa80bf6ec58207d56787cddf25c132c46e78fd84657688a1326de2baa6f9ff13b32750b6574543e3e22feefc0d" + } + } + ], + "establishment": 0 + }, + "previous_history_hash": { + "$bytes": "c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f" + } + } + } + }, + "cbor_hex": "a1687472616e73666572a26462797465783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a37716a7472616e736974696f6ea562746f78354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716466726f6d7835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161656672616d6502697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e61747572655841011f872ca82888b221406dcd043fabf7dbe855b7aa80bf6ec58207d56787cddf25c132c46e78fd84657688a1326de2baa6f9ff13b32750b6574543e3e22feefc0d6d65737461626c6973686d656e74007570726576696f75735f686973746f72795f686173685820c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f" + } + ], + "expected_results": [ + { + "input": "bc17a3ece7ff40cb094b8ad8b8eef216f5d7066cbc2f3f1dfafb879cbb708bcd", + "class": "transfer", + "outcome": "applied" + }, + { + "input": "a44dddda9405f9bed51aceae4ece6d775f06583329546ab417c74600460e3d1d", + "class": "burn", + "outcome": "applied" + } + ], + "expected_state": { + "bytes": {}, + "frame": 3, + "peers": {}, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "retired": { + "Eyl2abuhbzbih3ao7hvjmgtjyzm4b5jeufdzafn6pme3j6id53z7q": { + "cargo": { + "type": 1, + "bytes": { + "$bytes": "a1666d6963726f731a05f5e100" + } + }, + "owner": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "issuer": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "minted": 0, + "retired": 2, + "history_hash": { + "$bytes": "8e6a50f34241aa3daefbc28d5e32468d2d50381cc3f2ddab833842b8cd271ca6" + } + } + }, + "exported": {}, + "imported": [], + "registry": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ + 1 + ] + }, + "governance": { + "delay": 0, + "pending": [], + "sequence": 0 + }, + "controllers": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": { + "keys": [ + { + "$bytes": "01d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a" + } + ], + "sequence": 0, + "next_keys": [ + "E4fnvjywz23zeyb426croyvctrtqsse237th3kfjid4pfeewx7noa" + ], + "threshold": 1, + "last_event": "Ei473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "establishment": 0, + "next_threshold": 1 + }, + "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa": { + "keys": [ + { + "$bytes": "013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c" + } + ], + "sequence": 0, + "next_keys": [ + "Eqmsawig6oznh4b5cbovqukvzxa5u5jbiklkrlwhtdo6rbrsyjfnq" + ], + "threshold": 1, + "last_event": "Ezxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "establishment": 0, + "next_threshold": 1 + } + } + }, + "expected_state_cbor_hex": "aa656279746573a0656672616d6503657065657273a067636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616772657469726564a1783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771a665636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656f776e657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371666d696e746564006772657469726564026c686973746f72795f6861736858208e6a50f34241aa3daefbc28d5e32468d2d50381cc3f2ddab833842b8cd271ca6686578706f72746564a068696d706f7274656480687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016a676f7665726e616e6365a36564656c6179006770656e64696e67806873657175656e6365006b636f6e74726f6c6c657273a278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c64017835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161a7646b657973815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c6873657175656e636500696e6578745f6b65797381783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e71697468726573686f6c64016a6c6173745f6576656e747835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616d65737461626c6973686d656e74006e6e6578745f7468726573686f6c6401", + "expected_state_hash": "41200553aaeea6e68aa6fe3e20505d7043c0ceb94b1422f6add2c85755735675" + }, + { + "frame": 3, + "inputs": [ + { + "input": { + "burn": { + "byte": "Eyl2abuhbzbih3ao7hvjmgtjyzm4b5jeufdzafn6pme3j6id53z7q", + "frame": 3, + "owner": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "0189d64af2c54fd488d6ca11ca81921bda7577d9e076355efed11406472e1f2ad5dd52cf9c8157f5bbfc22bb9e292d601ee952481df43078a982c8e63fd763fd05" + } + } + ], + "establishment": 0 + }, + "previous_history_hash": { + "$bytes": "8e6a50f34241aa3daefbc28d5e32468d2d50381cc3f2ddab833842b8cd271ca6" + } + } + }, + "cbor_hex": "a1646275726ea56462797465783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771656672616d6503656f776e65727835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e617475726558410189d64af2c54fd488d6ca11ca81921bda7577d9e076355efed11406472e1f2ad5dd52cf9c8157f5bbfc22bb9e292d601ee952481df43078a982c8e63fd763fd056d65737461626c6973686d656e74007570726576696f75735f686973746f72795f6861736858208e6a50f34241aa3daefbc28d5e32468d2d50381cc3f2ddab833842b8cd271ca6" + }, + { + "input": { + "transfer": { + "byte": "Eyl2abuhbzbih3ao7hvjmgtjyzm4b5jeufdzafn6pme3j6id53z7q", + "transition": { + "to": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "from": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "frame": 3, + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01b1f850c38c4cd52028cf57c71dba5fe68e93e689385352d15682fdae17dd417b7c5af01441d53d0d00d1793d10e5f36b6c4381f4d9910e2771a4267beef7a10f" + } + } + ], + "establishment": 0 + }, + "previous_history_hash": { + "$bytes": "8e6a50f34241aa3daefbc28d5e32468d2d50381cc3f2ddab833842b8cd271ca6" + } + } + } + }, + "cbor_hex": "a1687472616e73666572a26462797465783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a37716a7472616e736974696f6ea562746f7835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616466726f6d78354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371656672616d6503697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e6174757265584101b1f850c38c4cd52028cf57c71dba5fe68e93e689385352d15682fdae17dd417b7c5af01441d53d0d00d1793d10e5f36b6c4381f4d9910e2771a4267beef7a10f6d65737461626c6973686d656e74007570726576696f75735f686973746f72795f6861736858208e6a50f34241aa3daefbc28d5e32468d2d50381cc3f2ddab833842b8cd271ca6" + }, + { + "input": { + "mint": { + "d": "Eyl2abuhbzbih3ao7hvjmgtjyzm4b5jeufdzafn6pme3j6id53z7q", + "cargo": { + "type": 1, + "bytes": { + "$bytes": "a1666d6963726f731a05f5e100" + } + }, + "nonce": { + "$bytes": "dcc74ebbcedebda361fb18a7abec95d9" + }, + "issuer": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "recipient": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "0188d2bbf7bf3ea95bb33866235bae150ac65c7371bc2776f17eb0944884cc8a4e7d402947d334d07e871acd0c305e6791d6e9b5747a683b6c58fc81f21dbcdd09" + } + } + ], + "establishment": 0 + } + } + }, + "cbor_hex": "a1646d696e74a66164783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a377165636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656e6f6e636550dcc74ebbcedebda361fb18a7abec95d96669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637169726563697069656e747835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e617475726558410188d2bbf7bf3ea95bb33866235bae150ac65c7371bc2776f17eb0944884cc8a4e7d402947d334d07e871acd0c305e6791d6e9b5747a683b6c58fc81f21dbcdd096d65737461626c6973686d656e7400" + } + ], + "expected_results": [ + { + "input": "e48827dde00e15d7e4f3fa922605ba36da0a9371580a5de3efbbaf805b9043f5", + "class": "mint", + "outcome": "dropped", + "error": "duplicate_byte" + }, + { + "input": "6039444d6b6c88875fccb7285e856b76530e860d36d2953566fb5debdd428748", + "class": "transfer", + "outcome": "dropped", + "error": "byte_retired" + }, + { + "input": "5f69387703bc4ac61194fc0754a70af10fa4608be3de42cf6a06b0863f3917ef", + "class": "burn", + "outcome": "dropped", + "error": "byte_retired" + } + ], + "expected_state": { + "bytes": {}, + "frame": 4, + "peers": {}, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "retired": { + "Eyl2abuhbzbih3ao7hvjmgtjyzm4b5jeufdzafn6pme3j6id53z7q": { + "cargo": { + "type": 1, + "bytes": { + "$bytes": "a1666d6963726f731a05f5e100" + } + }, + "owner": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "issuer": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "minted": 0, + "retired": 2, + "history_hash": { + "$bytes": "8e6a50f34241aa3daefbc28d5e32468d2d50381cc3f2ddab833842b8cd271ca6" + } + } + }, + "exported": {}, + "imported": [], + "registry": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ + 1 + ] + }, + "governance": { + "delay": 0, + "pending": [], + "sequence": 0 + }, + "controllers": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": { + "keys": [ + { + "$bytes": "01d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a" + } + ], + "sequence": 0, + "next_keys": [ + "E4fnvjywz23zeyb426croyvctrtqsse237th3kfjid4pfeewx7noa" + ], + "threshold": 1, + "last_event": "Ei473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "establishment": 0, + "next_threshold": 1 + }, + "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa": { + "keys": [ + { + "$bytes": "013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c" + } + ], + "sequence": 0, + "next_keys": [ + "Eqmsawig6oznh4b5cbovqukvzxa5u5jbiklkrlwhtdo6rbrsyjfnq" + ], + "threshold": 1, + "last_event": "Ezxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "establishment": 0, + "next_threshold": 1 + } + } + }, + "expected_state_cbor_hex": "aa656279746573a0656672616d6504657065657273a067636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616772657469726564a1783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771a665636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656f776e657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371666d696e746564006772657469726564026c686973746f72795f6861736858208e6a50f34241aa3daefbc28d5e32468d2d50381cc3f2ddab833842b8cd271ca6686578706f72746564a068696d706f7274656480687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016a676f7665726e616e6365a36564656c6179006770656e64696e67806873657175656e6365006b636f6e74726f6c6c657273a278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c64017835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161a7646b657973815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c6873657175656e636500696e6578745f6b65797381783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e71697468726573686f6c64016a6c6173745f6576656e747835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616d65737461626c6973686d656e74006e6e6578745f7468726573686f6c6401", + "expected_state_hash": "8fba75def63a69ff1018c1396a7267936bad19bc2f3bf1de21a47d004f4e17df" + } + ] + }, + { + "name": "state-019-export-and-return", + "description": "Cluster A, peering with B. Frame 0 mints env-001's byte to Alice. Frame 1: her transfer to the custodian in cluster C is refused, as A does not peer with C. Frame 2: her transfer to the custodian in B is applied, and the byte moves to `exported`; its statement is what A's nodes certify. Frame 3: the byte can no longer be moved or minted in A. Frame 4: it comes back, B's certificate in hand (state-020), and is live in A again; imports apply before transfers, so Alice moves it within A in the same frame.", + "genesis": { + "state": { + "bytes": {}, + "frame": 0, + "peers": { + "Enldsomgkjdhwaeznqf2cyu6j7jqwmkbfrc2klavaaybu6rfzewkq": { + "keys": [ + { + "$bytes": "012e471a1a7ca882e5ae7097226381ce35e769047b2fe00552aa7ce933912b39a7" + }, + { + "$bytes": "0166af65d5c6620705969a363753b114c9be50b904f7f7ecc7320805c71dfa38ea" + }, + { + "$bytes": "017cdf6321e36e7c2d4808643b57ed7e720703ce0050c912c873c972da03976e03" + }, + { + "$bytes": "01d080d09afc96aa94dd0f8ef6eb02d22d7c12bd1707cb6261a0d94d4ae1224859" + } + ] + } + }, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "retired": {}, + "exported": {}, + "imported": [], + "registry": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ + 1 + ] + }, + "governance": { + "delay": 0, + "pending": [], + "sequence": 0 + }, + "controllers": {} + }, + "cbor_hex": "aa656279746573a0656672616d6500657065657273a17835456e6c64736f6d676b6a64687761657a6e716632637975366a376a71776d6b62667263326b6c617661617962753672667a65776b71a1646b657973845821012e471a1a7ca882e5ae7097226381ce35e769047b2fe00552aa7ce933912b39a758210166af65d5c6620705969a363753b114c9be50b904f7f7ecc7320805c71dfa38ea5821017cdf6321e36e7c2d4808643b57ed7e720703ce0050c912c873c972da03976e03582101d080d09afc96aa94dd0f8ef6eb02d22d7c12bd1707cb6261a0d94d4ae122485967636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616772657469726564a0686578706f72746564a068696d706f7274656480687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016a676f7665726e616e6365a36564656c6179006770656e64696e67806873657175656e6365006b636f6e74726f6c6c657273a0", + "state_hash": "e71333681679dd615016d0bc715959e42ab9381fdf726973e9d971905a3ed5aa" + }, + "frames": [ + { + "frame": 0, + "inputs": [ + { + "input": { + "key_event": { + "event": { + "a": [], + "d": "Ei473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "i": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "k": [ + { + "$bytes": "01d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a" + } + ], + "n": [ + "E4fnvjywz23zeyb426croyvctrtqsse237th3kfjid4pfeewx7noa" + ], + "p": "", + "s": 0, + "t": "icp", + "v": "SBYTE10JSON", + "kt": 1, + "nt": 1 + }, + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01e90f89475321e5febce3d271ccb2e304301d0975a6e49aa49a9e76f54ecf4d027097eda8d45ff0d0bf14c94d86f26d7100868c1af79bcfb609792e720e6b1604" + } + } + ] + } + }, + "cbor_hex": "a1696b65795f6576656e74a2656576656e74ab616180616478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371616978354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371616b81582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a616e8178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f6161706061730061746369637061766b534259544531304a534f4e626b7401626e74016a7369676e61747572657381a265696e64657800697369676e6174757265584101e90f89475321e5febce3d271ccb2e304301d0975a6e49aa49a9e76f54ecf4d027097eda8d45ff0d0bf14c94d86f26d7100868c1af79bcfb609792e720e6b1604" + }, + { + "input": { + "key_event": { + "event": { + "a": [], + "d": "Ezxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "i": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "k": [ + { + "$bytes": "013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c" + } + ], + "n": [ + "Eqmsawig6oznh4b5cbovqukvzxa5u5jbiklkrlwhtdo6rbrsyjfnq" + ], + "p": "", + "s": 0, + "t": "icp", + "v": "SBYTE10JSON", + "kt": 1, + "nt": 1 + }, + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01c0999c04eee90f056e29a2753f1a90665636394e819578d4cc2a2a40afb841b9a89a759b881adc095be848ba4ce9be9f64da3f4efcb5f935c0c20723ab68da07" + } + } + ] + } + }, + "cbor_hex": "a1696b65795f6576656e74a2656576656e74ab61618061647835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f716161697835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161616b815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c616e81783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e7161706061730061746369637061766b534259544531304a534f4e626b7401626e74016a7369676e61747572657381a265696e64657800697369676e6174757265584101c0999c04eee90f056e29a2753f1a90665636394e819578d4cc2a2a40afb841b9a89a759b881adc095be848ba4ce9be9f64da3f4efcb5f935c0c20723ab68da07" + }, + { + "input": { + "mint": { + "d": "Eyl2abuhbzbih3ao7hvjmgtjyzm4b5jeufdzafn6pme3j6id53z7q", + "cargo": { + "type": 1, + "bytes": { + "$bytes": "a1666d6963726f731a05f5e100" + } + }, + "nonce": { + "$bytes": "dcc74ebbcedebda361fb18a7abec95d9" + }, + "issuer": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "recipient": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "0188d2bbf7bf3ea95bb33866235bae150ac65c7371bc2776f17eb0944884cc8a4e7d402947d334d07e871acd0c305e6791d6e9b5747a683b6c58fc81f21dbcdd09" + } + } + ], + "establishment": 0 + } + } + }, + "cbor_hex": "a1646d696e74a66164783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a377165636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656e6f6e636550dcc74ebbcedebda361fb18a7abec95d96669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637169726563697069656e747835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e617475726558410188d2bbf7bf3ea95bb33866235bae150ac65c7371bc2776f17eb0944884cc8a4e7d402947d334d07e871acd0c305e6791d6e9b5747a683b6c58fc81f21dbcdd096d65737461626c6973686d656e7400" + } + ], + "expected_results": [ + { + "input": "6c0cba880da38a32a827d1d6f113123e9c04b7ae7e9df80b3e5060ffc755fff6", + "class": "key_event", + "outcome": "applied" + }, + { + "input": "6e9b571b38262c22a83b5a86bb7aba15ef2f7c90a82ec9fdd124593783c3aedf", + "class": "key_event", + "outcome": "applied" + }, + { + "input": "e48827dde00e15d7e4f3fa922605ba36da0a9371580a5de3efbbaf805b9043f5", + "class": "mint", + "outcome": "applied" + } + ], + "expected_state": { + "bytes": { + "Eyl2abuhbzbih3ao7hvjmgtjyzm4b5jeufdzafn6pme3j6id53z7q": { + "cargo": { + "type": 1, + "bytes": { + "$bytes": "a1666d6963726f731a05f5e100" + } + }, + "owner": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "issuer": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "minted": 0, + "history_hash": { + "$bytes": "c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f" + } + } + }, + "frame": 1, + "peers": { + "Enldsomgkjdhwaeznqf2cyu6j7jqwmkbfrc2klavaaybu6rfzewkq": { + "keys": [ + { + "$bytes": "012e471a1a7ca882e5ae7097226381ce35e769047b2fe00552aa7ce933912b39a7" + }, + { + "$bytes": "0166af65d5c6620705969a363753b114c9be50b904f7f7ecc7320805c71dfa38ea" + }, + { + "$bytes": "017cdf6321e36e7c2d4808643b57ed7e720703ce0050c912c873c972da03976e03" + }, + { + "$bytes": "01d080d09afc96aa94dd0f8ef6eb02d22d7c12bd1707cb6261a0d94d4ae1224859" + } + ] + } + }, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "retired": {}, + "exported": {}, + "imported": [], + "registry": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ + 1 + ] + }, + "governance": { + "delay": 0, + "pending": [], + "sequence": 0 + }, + "controllers": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": { + "keys": [ + { + "$bytes": "01d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a" + } + ], + "sequence": 0, + "next_keys": [ + "E4fnvjywz23zeyb426croyvctrtqsse237th3kfjid4pfeewx7noa" + ], + "threshold": 1, + "last_event": "Ei473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "establishment": 0, + "next_threshold": 1 + }, + "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa": { + "keys": [ + { + "$bytes": "013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c" + } + ], + "sequence": 0, + "next_keys": [ + "Eqmsawig6oznh4b5cbovqukvzxa5u5jbiklkrlwhtdo6rbrsyjfnq" + ], + "threshold": 1, + "last_event": "Ezxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "establishment": 0, + "next_threshold": 1 + } + } + }, + "expected_state_cbor_hex": "aa656279746573a1783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771a565636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656f776e65727835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371666d696e746564006c686973746f72795f686173685820c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f656672616d6501657065657273a17835456e6c64736f6d676b6a64687761657a6e716632637975366a376a71776d6b62667263326b6c617661617962753672667a65776b71a1646b657973845821012e471a1a7ca882e5ae7097226381ce35e769047b2fe00552aa7ce933912b39a758210166af65d5c6620705969a363753b114c9be50b904f7f7ecc7320805c71dfa38ea5821017cdf6321e36e7c2d4808643b57ed7e720703ce0050c912c873c972da03976e03582101d080d09afc96aa94dd0f8ef6eb02d22d7c12bd1707cb6261a0d94d4ae122485967636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616772657469726564a0686578706f72746564a068696d706f7274656480687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016a676f7665726e616e6365a36564656c6179006770656e64696e67806873657175656e6365006b636f6e74726f6c6c657273a278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c64017835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161a7646b657973815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c6873657175656e636500696e6578745f6b65797381783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e71697468726573686f6c64016a6c6173745f6576656e747835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616d65737461626c6973686d656e74006e6e6578745f7468726573686f6c6401", + "expected_state_hash": "d9f44063fe144505c6967d26d6323ddc8128b1489565f12613256e7fc1efef4f" + }, + { + "frame": 1, + "inputs": [ + { + "input": { + "transfer": { + "byte": "Eyl2abuhbzbih3ao7hvjmgtjyzm4b5jeufdzafn6pme3j6id53z7q", + "transition": { + "to": "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "from": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "frame": 1, + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01dd0fcb67ca216e8656ce5a9fec03df45f56a7dcb338f8ff9900ff44719e6688d71b3040b92ad5aba9becf1d98d528edbe5dbedc91f8c22324c0805aed710560f" + } + } + ], + "establishment": 0 + }, + "destination": "Ezjjgtlnkkszxragkqs7ilg6ca7m2kcpd7hrbbekvo4ggci7gvl2a", + "previous_history_hash": { + "$bytes": "c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f" + } + } + } + }, + "cbor_hex": "a1687472616e73666572a26462797465783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a37716a7472616e736974696f6ea662746f78354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716466726f6d7835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161656672616d6501697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e6174757265584101dd0fcb67ca216e8656ce5a9fec03df45f56a7dcb338f8ff9900ff44719e6688d71b3040b92ad5aba9becf1d98d528edbe5dbedc91f8c22324c0805aed710560f6d65737461626c6973686d656e74006b64657374696e6174696f6e7835457a6a6a67746c6e6b6b737a787261676b717337696c67366361376d326b6370643768726262656b766f34676763693767766c32617570726576696f75735f686973746f72795f686173685820c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f" + } + ], + "expected_results": [ + { + "input": "e092a0e71b7b40e99244df432d803c9bd1f04dcbbe01424aa473116dcfb63177", + "class": "transfer", + "outcome": "dropped", + "error": "unknown_cluster" + } + ], + "expected_state": { + "bytes": { + "Eyl2abuhbzbih3ao7hvjmgtjyzm4b5jeufdzafn6pme3j6id53z7q": { + "cargo": { + "type": 1, + "bytes": { + "$bytes": "a1666d6963726f731a05f5e100" + } + }, + "owner": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "issuer": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "minted": 0, + "history_hash": { + "$bytes": "c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f" + } + } + }, + "frame": 2, + "peers": { + "Enldsomgkjdhwaeznqf2cyu6j7jqwmkbfrc2klavaaybu6rfzewkq": { + "keys": [ + { + "$bytes": "012e471a1a7ca882e5ae7097226381ce35e769047b2fe00552aa7ce933912b39a7" + }, + { + "$bytes": "0166af65d5c6620705969a363753b114c9be50b904f7f7ecc7320805c71dfa38ea" + }, + { + "$bytes": "017cdf6321e36e7c2d4808643b57ed7e720703ce0050c912c873c972da03976e03" + }, + { + "$bytes": "01d080d09afc96aa94dd0f8ef6eb02d22d7c12bd1707cb6261a0d94d4ae1224859" + } + ] + } + }, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "retired": {}, + "exported": {}, + "imported": [], + "registry": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ + 1 + ] + }, + "governance": { + "delay": 0, + "pending": [], + "sequence": 0 + }, + "controllers": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": { + "keys": [ + { + "$bytes": "01d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a" + } + ], + "sequence": 0, + "next_keys": [ + "E4fnvjywz23zeyb426croyvctrtqsse237th3kfjid4pfeewx7noa" + ], + "threshold": 1, + "last_event": "Ei473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "establishment": 0, + "next_threshold": 1 + }, + "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa": { + "keys": [ + { + "$bytes": "013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c" + } + ], + "sequence": 0, + "next_keys": [ + "Eqmsawig6oznh4b5cbovqukvzxa5u5jbiklkrlwhtdo6rbrsyjfnq" + ], + "threshold": 1, + "last_event": "Ezxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "establishment": 0, + "next_threshold": 1 + } + } + }, + "expected_state_cbor_hex": "aa656279746573a1783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771a565636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656f776e65727835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371666d696e746564006c686973746f72795f686173685820c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f656672616d6502657065657273a17835456e6c64736f6d676b6a64687761657a6e716632637975366a376a71776d6b62667263326b6c617661617962753672667a65776b71a1646b657973845821012e471a1a7ca882e5ae7097226381ce35e769047b2fe00552aa7ce933912b39a758210166af65d5c6620705969a363753b114c9be50b904f7f7ecc7320805c71dfa38ea5821017cdf6321e36e7c2d4808643b57ed7e720703ce0050c912c873c972da03976e03582101d080d09afc96aa94dd0f8ef6eb02d22d7c12bd1707cb6261a0d94d4ae122485967636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616772657469726564a0686578706f72746564a068696d706f7274656480687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016a676f7665726e616e6365a36564656c6179006770656e64696e67806873657175656e6365006b636f6e74726f6c6c657273a278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c64017835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161a7646b657973815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c6873657175656e636500696e6578745f6b65797381783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e71697468726573686f6c64016a6c6173745f6576656e747835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616d65737461626c6973686d656e74006e6e6578745f7468726573686f6c6401", + "expected_state_hash": "70b461df12cd33e831b9ac1115d3866d21d113748dbd8fb882f0ecd688b5aaf5" + }, + { + "frame": 2, + "inputs": [ + { + "input": { + "transfer": { + "byte": "Eyl2abuhbzbih3ao7hvjmgtjyzm4b5jeufdzafn6pme3j6id53z7q", + "transition": { + "to": "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "from": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "frame": 2, + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01542818744f3c48fe12d750b35bf6a66cdebcc08196d471102888133fa81593870238514447840fa7e1701a79d3927ffa45d48b1310ea213a2c2def61c581d005" + } + } + ], + "establishment": 0 + }, + "destination": "Enldsomgkjdhwaeznqf2cyu6j7jqwmkbfrc2klavaaybu6rfzewkq", + "previous_history_hash": { + "$bytes": "c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f" + } + } + } + }, + "cbor_hex": "a1687472616e73666572a26462797465783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a37716a7472616e736974696f6ea662746f78354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716466726f6d7835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161656672616d6502697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e6174757265584101542818744f3c48fe12d750b35bf6a66cdebcc08196d471102888133fa81593870238514447840fa7e1701a79d3927ffa45d48b1310ea213a2c2def61c581d0056d65737461626c6973686d656e74006b64657374696e6174696f6e7835456e6c64736f6d676b6a64687761657a6e716632637975366a376a71776d6b62667263326b6c617661617962753672667a65776b717570726576696f75735f686973746f72795f686173685820c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f" + } + ], + "expected_results": [ + { + "input": "6ea9fe96a074a999678c3d5f2bf74d68f505b7efb729d70b6ed5d3935b858283", + "class": "transfer", + "outcome": "applied" + } + ], + "expected_state": { + "bytes": {}, + "frame": 3, + "peers": { + "Enldsomgkjdhwaeznqf2cyu6j7jqwmkbfrc2klavaaybu6rfzewkq": { + "keys": [ + { + "$bytes": "012e471a1a7ca882e5ae7097226381ce35e769047b2fe00552aa7ce933912b39a7" + }, + { + "$bytes": "0166af65d5c6620705969a363753b114c9be50b904f7f7ecc7320805c71dfa38ea" + }, + { + "$bytes": "017cdf6321e36e7c2d4808643b57ed7e720703ce0050c912c873c972da03976e03" + }, + { + "$bytes": "01d080d09afc96aa94dd0f8ef6eb02d22d7c12bd1707cb6261a0d94d4ae1224859" + } + ] + } + }, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "retired": {}, + "exported": { + "Eyl2abuhbzbih3ao7hvjmgtjyzm4b5jeufdzafn6pme3j6id53z7q": { + "cargo": { + "type": 1, + "bytes": { + "$bytes": "a1666d6963726f731a05f5e100" + } + }, + "owner": "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "issuer": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "minted": 0, + "exported": 2, + "destination": "Enldsomgkjdhwaeznqf2cyu6j7jqwmkbfrc2klavaaybu6rfzewkq", + "history_hash": { + "$bytes": "c987ece9b6cba695356c4c2a5c75498e9c4e419fd2e4d0a71fa76b4deeddcf2e" + } + } + }, + "imported": [], + "registry": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ + 1 + ] + }, + "governance": { + "delay": 0, + "pending": [], + "sequence": 0 + }, + "controllers": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": { + "keys": [ + { + "$bytes": "01d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a" + } + ], + "sequence": 0, + "next_keys": [ + "E4fnvjywz23zeyb426croyvctrtqsse237th3kfjid4pfeewx7noa" + ], + "threshold": 1, + "last_event": "Ei473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "establishment": 0, + "next_threshold": 1 + }, + "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa": { + "keys": [ + { + "$bytes": "013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c" + } + ], + "sequence": 0, + "next_keys": [ + "Eqmsawig6oznh4b5cbovqukvzxa5u5jbiklkrlwhtdo6rbrsyjfnq" + ], + "threshold": 1, + "last_event": "Ezxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "establishment": 0, + "next_threshold": 1 + } + } + }, + "expected_state_cbor_hex": "aa656279746573a0656672616d6503657065657273a17835456e6c64736f6d676b6a64687761657a6e716632637975366a376a71776d6b62667263326b6c617661617962753672667a65776b71a1646b657973845821012e471a1a7ca882e5ae7097226381ce35e769047b2fe00552aa7ce933912b39a758210166af65d5c6620705969a363753b114c9be50b904f7f7ecc7320805c71dfa38ea5821017cdf6321e36e7c2d4808643b57ed7e720703ce0050c912c873c972da03976e03582101d080d09afc96aa94dd0f8ef6eb02d22d7c12bd1707cb6261a0d94d4ae122485967636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616772657469726564a0686578706f72746564a1783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771a765636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656f776e657278354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371666d696e74656400686578706f72746564026b64657374696e6174696f6e7835456e6c64736f6d676b6a64687761657a6e716632637975366a376a71776d6b62667263326b6c617661617962753672667a65776b716c686973746f72795f686173685820c987ece9b6cba695356c4c2a5c75498e9c4e419fd2e4d0a71fa76b4deeddcf2e68696d706f7274656480687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016a676f7665726e616e6365a36564656c6179006770656e64696e67806873657175656e6365006b636f6e74726f6c6c657273a278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c64017835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161a7646b657973815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c6873657175656e636500696e6578745f6b65797381783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e71697468726573686f6c64016a6c6173745f6576656e747835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616d65737461626c6973686d656e74006e6e6578745f7468726573686f6c6401", + "expected_state_hash": "06a60d6bc53d1f1fe53e916842cdd3665dea47d05528b2eecdd3a996b0d6240f" + }, + { + "frame": 3, + "inputs": [ + { + "input": { + "transfer": { + "byte": "Eyl2abuhbzbih3ao7hvjmgtjyzm4b5jeufdzafn6pme3j6id53z7q", + "transition": { + "to": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "from": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "frame": 3, + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01eb4bb6cdf908028ee53dda1c7a861950ccfa4ba09dda3cdd5fd81c6ed609171b60d3cc87625f04e085420309d844e6b4cfe55342aa530e18aa36d3428c239a09" + } + } + ], + "establishment": 0 + }, + "previous_history_hash": { + "$bytes": "c987ece9b6cba695356c4c2a5c75498e9c4e419fd2e4d0a71fa76b4deeddcf2e" + } + } + } + }, + "cbor_hex": "a1687472616e73666572a26462797465783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a37716a7472616e736974696f6ea562746f78354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716466726f6d7835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161656672616d6503697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e6174757265584101eb4bb6cdf908028ee53dda1c7a861950ccfa4ba09dda3cdd5fd81c6ed609171b60d3cc87625f04e085420309d844e6b4cfe55342aa530e18aa36d3428c239a096d65737461626c6973686d656e74007570726576696f75735f686973746f72795f686173685820c987ece9b6cba695356c4c2a5c75498e9c4e419fd2e4d0a71fa76b4deeddcf2e" + }, + { + "input": { + "mint": { + "d": "Eyl2abuhbzbih3ao7hvjmgtjyzm4b5jeufdzafn6pme3j6id53z7q", + "cargo": { + "type": 1, + "bytes": { + "$bytes": "a1666d6963726f731a05f5e100" + } + }, + "nonce": { + "$bytes": "dcc74ebbcedebda361fb18a7abec95d9" + }, + "issuer": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "recipient": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "0188d2bbf7bf3ea95bb33866235bae150ac65c7371bc2776f17eb0944884cc8a4e7d402947d334d07e871acd0c305e6791d6e9b5747a683b6c58fc81f21dbcdd09" + } + } + ], + "establishment": 0 + } + } + }, + "cbor_hex": "a1646d696e74a66164783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a377165636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656e6f6e636550dcc74ebbcedebda361fb18a7abec95d96669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637169726563697069656e747835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e617475726558410188d2bbf7bf3ea95bb33866235bae150ac65c7371bc2776f17eb0944884cc8a4e7d402947d334d07e871acd0c305e6791d6e9b5747a683b6c58fc81f21dbcdd096d65737461626c6973686d656e7400" + } + ], + "expected_results": [ + { + "input": "e48827dde00e15d7e4f3fa922605ba36da0a9371580a5de3efbbaf805b9043f5", + "class": "mint", + "outcome": "dropped", + "error": "duplicate_byte" + }, + { + "input": "3a0c2584468e3b3077d57099c70c719e8da3d6ba1f5e68ffeda10d17eb388c7d", + "class": "transfer", + "outcome": "dropped", + "error": "byte_exported" + } + ], + "expected_state": { + "bytes": {}, + "frame": 4, + "peers": { + "Enldsomgkjdhwaeznqf2cyu6j7jqwmkbfrc2klavaaybu6rfzewkq": { + "keys": [ + { + "$bytes": "012e471a1a7ca882e5ae7097226381ce35e769047b2fe00552aa7ce933912b39a7" + }, + { + "$bytes": "0166af65d5c6620705969a363753b114c9be50b904f7f7ecc7320805c71dfa38ea" + }, + { + "$bytes": "017cdf6321e36e7c2d4808643b57ed7e720703ce0050c912c873c972da03976e03" + }, + { + "$bytes": "01d080d09afc96aa94dd0f8ef6eb02d22d7c12bd1707cb6261a0d94d4ae1224859" + } + ] + } + }, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "retired": {}, + "exported": { + "Eyl2abuhbzbih3ao7hvjmgtjyzm4b5jeufdzafn6pme3j6id53z7q": { + "cargo": { + "type": 1, + "bytes": { + "$bytes": "a1666d6963726f731a05f5e100" + } + }, + "owner": "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "issuer": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "minted": 0, + "exported": 2, + "destination": "Enldsomgkjdhwaeznqf2cyu6j7jqwmkbfrc2klavaaybu6rfzewkq", + "history_hash": { + "$bytes": "c987ece9b6cba695356c4c2a5c75498e9c4e419fd2e4d0a71fa76b4deeddcf2e" + } + } + }, + "imported": [], + "registry": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ + 1 + ] + }, + "governance": { + "delay": 0, + "pending": [], + "sequence": 0 + }, + "controllers": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": { + "keys": [ + { + "$bytes": "01d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a" + } + ], + "sequence": 0, + "next_keys": [ + "E4fnvjywz23zeyb426croyvctrtqsse237th3kfjid4pfeewx7noa" + ], + "threshold": 1, + "last_event": "Ei473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "establishment": 0, + "next_threshold": 1 + }, + "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa": { + "keys": [ + { + "$bytes": "013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c" + } + ], + "sequence": 0, + "next_keys": [ + "Eqmsawig6oznh4b5cbovqukvzxa5u5jbiklkrlwhtdo6rbrsyjfnq" + ], + "threshold": 1, + "last_event": "Ezxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "establishment": 0, + "next_threshold": 1 + } + } + }, + "expected_state_cbor_hex": "aa656279746573a0656672616d6504657065657273a17835456e6c64736f6d676b6a64687761657a6e716632637975366a376a71776d6b62667263326b6c617661617962753672667a65776b71a1646b657973845821012e471a1a7ca882e5ae7097226381ce35e769047b2fe00552aa7ce933912b39a758210166af65d5c6620705969a363753b114c9be50b904f7f7ecc7320805c71dfa38ea5821017cdf6321e36e7c2d4808643b57ed7e720703ce0050c912c873c972da03976e03582101d080d09afc96aa94dd0f8ef6eb02d22d7c12bd1707cb6261a0d94d4ae122485967636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616772657469726564a0686578706f72746564a1783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771a765636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656f776e657278354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371666d696e74656400686578706f72746564026b64657374696e6174696f6e7835456e6c64736f6d676b6a64687761657a6e716632637975366a376a71776d6b62667263326b6c617661617962753672667a65776b716c686973746f72795f686173685820c987ece9b6cba695356c4c2a5c75498e9c4e419fd2e4d0a71fa76b4deeddcf2e68696d706f7274656480687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016a676f7665726e616e6365a36564656c6179006770656e64696e67806873657175656e6365006b636f6e74726f6c6c657273a278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c64017835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161a7646b657973815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c6873657175656e636500696e6578745f6b65797381783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e71697468726573686f6c64016a6c6173745f6576656e747835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616d65737461626c6973686d656e74006e6e6578745f7468726573686f6c6401", + "expected_state_hash": "f59bb895fec9b2d65895d7f89e90cca32de5acd1b83b57793013e3c84ad72d6a" + }, + { + "frame": 4, + "inputs": [ + { + "input": { + "import": { + "logs": [ + [ + { + "event": { + "a": [], + "d": "Ei473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "i": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "k": [ + { + "$bytes": "01d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a" + } + ], + "n": [ + "E4fnvjywz23zeyb426croyvctrtqsse237th3kfjid4pfeewx7noa" + ], + "p": "", + "s": 0, + "t": "icp", + "v": "SBYTE10JSON", + "kt": 1, + "nt": 1 + }, + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01e90f89475321e5febce3d271ccb2e304301d0975a6e49aa49a9e76f54ecf4d027097eda8d45ff0d0bf14c94d86f26d7100868c1af79bcfb609792e720e6b1604" + } + } + ] + } + ], + [ + { + "event": { + "a": [], + "d": "Ezxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "i": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "k": [ + { + "$bytes": "013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c" + } + ], + "n": [ + "Eqmsawig6oznh4b5cbovqukvzxa5u5jbiklkrlwhtdo6rbrsyjfnq" + ], + "p": "", + "s": 0, + "t": "icp", + "v": "SBYTE10JSON", + "kt": 1, + "nt": 1 + }, + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01c0999c04eee90f056e29a2753f1a90665636394e819578d4cc2a2a40afb841b9a89a759b881adc095be848ba4ce9be9f64da3f4efcb5f935c0c20723ab68da07" + } + } + ] + } + ], + [ + { + "event": { + "a": [], + "d": "Eqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "i": "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "k": [ + { + "$bytes": "01f4ff420feb4040a73e51713a44f9966476c755e8e2d18b82677f8ff7a839afe2" + }, + { + "$bytes": "019b54b13b505ae2ddb12e49d8e10ed93725167ab9a0a77803538fc69858cdb0e2" + }, + { + "$bytes": "015c26708ee23779ee7b628241cc1735ed1ba4527639d7383bbc0ad9aa6295f535" + } + ], + "n": [ + "Efcf43zs566fqd5jlkxmbqnv2srtgk45uhenfpc4p5xzfkx7rdvma", + "Euaam4ynyfrxpmxiyogpumg3m6bdb4s5jigslwv3oqnp2gswv4buq", + "Ell3qkq2hpnwirn4m6hgulph32looiev6e5hgst2oc5c5f6jiwjjq" + ], + "p": "", + "s": 0, + "t": "icp", + "v": "SBYTE10JSON", + "kt": 2, + "nt": 2 + }, + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01e9f5ae4b064588588f8566045833d5860bd680c6fd7182246813fa73710393eec68a6a859931f597dc169950d4aa3539d1e7296372488821cf3b233e5eda940d" + } + }, + { + "index": 1, + "signature": { + "$bytes": "01a2fb0fee6f1bfce74bc0b9e324fec7b3ee5415171740310a3fa769ff6aadd3ed3f75496a7eeb08dcf6db4e939810246c45a1c6f0474a64ec6e558cfe8e50910a" + } + } + ] + } + ] + ], + "envelope": { + "d": "E5ensa7gujlqj2dablg2gtdfiqxbhovwx7tihcybjkimjxc5kcsiq", + "joule_cost": { + "measured_microjoules": 1200, + "estimated_microjoules": 1500 + }, + "provenance": { + "d": "Eyl2abuhbzbih3ao7hvjmgtjyzm4b5jeufdzafn6pme3j6id53z7q", + "cargo": { + "type": 1, + "bytes": { + "$bytes": "a1666d6963726f731a05f5e100" + } + }, + "nonce": { + "$bytes": "dcc74ebbcedebda361fb18a7abec95d9" + }, + "issuer": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "recipient": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "0188d2bbf7bf3ea95bb33866235bae150ac65c7371bc2776f17eb0944884cc8a4e7d402947d334d07e871acd0c305e6791d6e9b5747a683b6c58fc81f21dbcdd09" + } + } + ], + "establishment": 0 + } + }, + "ownership_chain": [ + { + "to": "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "from": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "frame": 2, + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01542818744f3c48fe12d750b35bf6a66cdebcc08196d471102888133fa81593870238514447840fa7e1701a79d3927ffa45d48b1310ea213a2c2def61c581d005" + } + } + ], + "establishment": 0 + }, + "destination": "Enldsomgkjdhwaeznqf2cyu6j7jqwmkbfrc2klavaaybu6rfzewkq", + "previous_history_hash": { + "$bytes": "c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f" + } + }, + { + "to": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "from": "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "frame": 1, + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "0121fb554518224a1dda2fe74c8f39edc919524672416f0f80528b862fac8f85f834ceba6970beb26ce68481ba0b80a3231539e2551c42862fa3c072f5d1c33301" + } + }, + { + "index": 2, + "signature": { + "$bytes": "01c4264f6191c1a7351bf18a59352cc07c55ca91dc934e65464c1d87d29fcff67202e92f35921d8ef74e52eeb41415bd1b753d6fb4fd21fa4445677cba53b1ae0a" + } + } + ], + "establishment": 0 + }, + "destination": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "previous_history_hash": { + "$bytes": "c987ece9b6cba695356c4c2a5c75498e9c4e419fd2e4d0a71fa76b4deeddcf2e" + } + } + ] + }, + "certificate": { + "statement": { + "byte": "Eyl2abuhbzbih3ao7hvjmgtjyzm4b5jeufdzafn6pme3j6id53z7q", + "export": { + "cargo": { + "type": 1, + "bytes": { + "$bytes": "a1666d6963726f731a05f5e100" + } + }, + "owner": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "issuer": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "minted": 0, + "exported": 1, + "destination": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "history_hash": { + "$bytes": "3198f6b228ae4ccd6265c12c9f1cb866020fe8a4ab198cdfee01939caaeaec01" + } + }, + "source": "Enldsomgkjdhwaeznqf2cyu6j7jqwmkbfrc2klavaaybu6rfzewkq" + }, + "signatures": [ + { + "index": 1, + "signature": { + "$bytes": "01a56b162e02f9d53686b9d4133c9654b36f1231bd187bc792ea32d8eb0e2c859a471d1a4c8be8204c5c8c4ab4797277f3be5e5d3f61a9f7b65f0acbf76c8d5c00" + } + }, + { + "index": 2, + "signature": { + "$bytes": "012c40adb9af1da7323202dc72dd3c270305fdb2dd1ebeb3c2bc0cf92d905e9587b77b3377c228ca461b9f67a35b37246ae765ddaeaa11539399c4a6a0daffea0a" + } + }, + { + "index": 3, + "signature": { + "$bytes": "010ab4b3b35b28403d6ccd12a1097f814c8b112ccff07e2c8bfd979716d3a3a6ae9a244f52488285177fb20ac239fe19eb9db2f596d3e88a289028906193cd8005" + } + } + ] + } + } + }, + "cbor_hex": "a166696d706f7274a3646c6f67738381a2656576656e74ab616180616478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371616978354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371616b81582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a616e8178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f6161706061730061746369637061766b534259544531304a534f4e626b7401626e74016a7369676e61747572657381a265696e64657800697369676e6174757265584101e90f89475321e5febce3d271ccb2e304301d0975a6e49aa49a9e76f54ecf4d027097eda8d45ff0d0bf14c94d86f26d7100868c1af79bcfb609792e720e6b160481a2656576656e74ab61618061647835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f716161697835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161616b815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c616e81783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e7161706061730061746369637061766b534259544531304a534f4e626b7401626e74016a7369676e61747572657381a265696e64657800697369676e6174757265584101c0999c04eee90f056e29a2753f1a90665636394e819578d4cc2a2a40afb841b9a89a759b881adc095be848ba4ce9be9f64da3f4efcb5f935c0c20723ab68da0781a2656576656e74ab616180616478354571656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a7367676932746371616978354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a7367676932746371616b83582101f4ff420feb4040a73e51713a44f9966476c755e8e2d18b82677f8ff7a839afe25821019b54b13b505ae2ddb12e49d8e10ed93725167ab9a0a77803538fc69858cdb0e25821015c26708ee23779ee7b628241cc1735ed1ba4527639d7383bbc0ad9aa6295f535616e8378354566636634337a73353636667164356a6c6b786d62716e7632737274676b34357568656e667063347035787a666b78377264766d617835457561616d34796e79667278706d7869796f6770756d67336d366264623473356a6967736c7776336f716e703267737776346275717835456c6c33716b713268706e7769726e346d366867756c706833326c6f6f69657636653568677374326f6335633566366a69776a6a7161706061730061746369637061766b534259544531304a534f4e626b7402626e74026a7369676e61747572657382a265696e64657800697369676e6174757265584101e9f5ae4b064588588f8566045833d5860bd680c6fd7182246813fa73710393eec68a6a859931f597dc169950d4aa3539d1e7296372488821cf3b233e5eda940da265696e64657801697369676e6174757265584101a2fb0fee6f1bfce74bc0b9e324fec7b3ee5415171740310a3fa769ff6aadd3ed3f75496a7eeb08dcf6db4e939810246c45a1c6f0474a64ec6e558cfe8e50910a68656e76656c6f7065a4616478354535656e73613767756a6c716a326461626c67326774646669717862686f767778377469686379626a6b696d6a7863356b637369716a6a6f756c655f636f7374a2746d656173757265645f6d6963726f6a6f756c65731904b075657374696d617465645f6d6963726f6a6f756c65731905dc6a70726f76656e616e6365a66164783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a377165636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656e6f6e636550dcc74ebbcedebda361fb18a7abec95d96669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637169726563697069656e747835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e617475726558410188d2bbf7bf3ea95bb33866235bae150ac65c7371bc2776f17eb0944884cc8a4e7d402947d334d07e871acd0c305e6791d6e9b5747a683b6c58fc81f21dbcdd096d65737461626c6973686d656e74006f6f776e6572736869705f636861696e82a662746f78354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716466726f6d7835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161656672616d6502697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e6174757265584101542818744f3c48fe12d750b35bf6a66cdebcc08196d471102888133fa81593870238514447840fa7e1701a79d3927ffa45d48b1310ea213a2c2def61c581d0056d65737461626c6973686d656e74006b64657374696e6174696f6e7835456e6c64736f6d676b6a64687761657a6e716632637975366a376a71776d6b62667263326b6c617661617962753672667a65776b717570726576696f75735f686973746f72795f686173685820c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7fa662746f7835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616466726f6d78354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a7367676932746371656672616d6501697369676e6174757265a26a7369676e61747572657382a265696e64657800697369676e617475726558410121fb554518224a1dda2fe74c8f39edc919524672416f0f80528b862fac8f85f834ceba6970beb26ce68481ba0b80a3231539e2551c42862fa3c072f5d1c33301a265696e64657802697369676e6174757265584101c4264f6191c1a7351bf18a59352cc07c55ca91dc934e65464c1d87d29fcff67202e92f35921d8ef74e52eeb41415bd1b753d6fb4fd21fa4445677cba53b1ae0a6d65737461626c6973686d656e74006b64657374696e6174696f6e783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070617570726576696f75735f686973746f72795f686173685820c987ece9b6cba695356c4c2a5c75498e9c4e419fd2e4d0a71fa76b4deeddcf2e6b6365727469666963617465a26973746174656d656e74a36462797465783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771666578706f7274a765636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656f776e65727835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371666d696e74656400686578706f72746564016b64657374696e6174696f6e783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616c686973746f72795f6861736858203198f6b228ae4ccd6265c12c9f1cb866020fe8a4ab198cdfee01939caaeaec0166736f757263657835456e6c64736f6d676b6a64687761657a6e716632637975366a376a71776d6b62667263326b6c617661617962753672667a65776b716a7369676e61747572657383a265696e64657801697369676e6174757265584101a56b162e02f9d53686b9d4133c9654b36f1231bd187bc792ea32d8eb0e2c859a471d1a4c8be8204c5c8c4ab4797277f3be5e5d3f61a9f7b65f0acbf76c8d5c00a265696e64657802697369676e61747572655841012c40adb9af1da7323202dc72dd3c270305fdb2dd1ebeb3c2bc0cf92d905e9587b77b3377c228ca461b9f67a35b37246ae765ddaeaa11539399c4a6a0daffea0aa265696e64657803697369676e61747572655841010ab4b3b35b28403d6ccd12a1097f814c8b112ccff07e2c8bfd979716d3a3a6ae9a244f52488285177fb20ac239fe19eb9db2f596d3e88a289028906193cd8005" + }, + { + "input": { + "transfer": { + "byte": "Eyl2abuhbzbih3ao7hvjmgtjyzm4b5jeufdzafn6pme3j6id53z7q", + "transition": { + "to": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "from": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "frame": 4, + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01aa4204277e291362fcc300c6e777e2c7ab9bdffee33d22984fa017849d4e0441515d9c81d3e17791271831525988c88a8b13eb4965a7107bdad1a76954510807" + } + } + ], + "establishment": 0 + }, + "previous_history_hash": { + "$bytes": "3198f6b228ae4ccd6265c12c9f1cb866020fe8a4ab198cdfee01939caaeaec01" + } + } + } + }, + "cbor_hex": "a1687472616e73666572a26462797465783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a37716a7472616e736974696f6ea562746f78354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716466726f6d7835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161656672616d6504697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e6174757265584101aa4204277e291362fcc300c6e777e2c7ab9bdffee33d22984fa017849d4e0441515d9c81d3e17791271831525988c88a8b13eb4965a7107bdad1a769545108076d65737461626c6973686d656e74007570726576696f75735f686973746f72795f6861736858203198f6b228ae4ccd6265c12c9f1cb866020fe8a4ab198cdfee01939caaeaec01" + } + ], + "expected_results": [ + { + "input": "406e7250e903437ddb2b539d4bd0fec5490332a99cfed0f830b0b7d202468df1", + "class": "import", + "outcome": "applied" + }, + { + "input": "938382b37dd0b391401af92be5237f55c81da77a03b0a4ca46bda337c2ddad86", + "class": "transfer", + "outcome": "applied" + } + ], + "expected_state": { + "bytes": { + "Eyl2abuhbzbih3ao7hvjmgtjyzm4b5jeufdzafn6pme3j6id53z7q": { + "cargo": { + "type": 1, + "bytes": { + "$bytes": "a1666d6963726f731a05f5e100" + } + }, + "owner": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "issuer": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "minted": 0, + "history_hash": { + "$bytes": "649bdf2469e9929e9e3735a2935a78fd7620495fb7fdda6820d231c931cb9079" + } + } + }, + "frame": 5, + "peers": { + "Enldsomgkjdhwaeznqf2cyu6j7jqwmkbfrc2klavaaybu6rfzewkq": { + "keys": [ + { + "$bytes": "012e471a1a7ca882e5ae7097226381ce35e769047b2fe00552aa7ce933912b39a7" + }, + { + "$bytes": "0166af65d5c6620705969a363753b114c9be50b904f7f7ecc7320805c71dfa38ea" + }, + { + "$bytes": "017cdf6321e36e7c2d4808643b57ed7e720703ce0050c912c873c972da03976e03" + }, + { + "$bytes": "01d080d09afc96aa94dd0f8ef6eb02d22d7c12bd1707cb6261a0d94d4ae1224859" + } + ] + } + }, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "retired": {}, + "exported": {}, + "imported": [ + { + "$bytes": "9405d2cb749b9e3128f9b4cf9a1cdbda0a4a46885187e1c31d3e16f508ec8c0e" + } + ], + "registry": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ + 1 + ] + }, + "governance": { + "delay": 0, + "pending": [], + "sequence": 0 + }, + "controllers": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": { + "keys": [ + { + "$bytes": "01d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a" + } + ], + "sequence": 0, + "next_keys": [ + "E4fnvjywz23zeyb426croyvctrtqsse237th3kfjid4pfeewx7noa" + ], + "threshold": 1, + "last_event": "Ei473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "establishment": 0, + "next_threshold": 1 + }, + "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa": { + "keys": [ + { + "$bytes": "013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c" + } + ], + "sequence": 0, + "next_keys": [ + "Eqmsawig6oznh4b5cbovqukvzxa5u5jbiklkrlwhtdo6rbrsyjfnq" + ], + "threshold": 1, + "last_event": "Ezxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "establishment": 0, + "next_threshold": 1 + } + } + }, + "expected_state_cbor_hex": "aa656279746573a1783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771a565636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656f776e657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371666d696e746564006c686973746f72795f686173685820649bdf2469e9929e9e3735a2935a78fd7620495fb7fdda6820d231c931cb9079656672616d6505657065657273a17835456e6c64736f6d676b6a64687761657a6e716632637975366a376a71776d6b62667263326b6c617661617962753672667a65776b71a1646b657973845821012e471a1a7ca882e5ae7097226381ce35e769047b2fe00552aa7ce933912b39a758210166af65d5c6620705969a363753b114c9be50b904f7f7ecc7320805c71dfa38ea5821017cdf6321e36e7c2d4808643b57ed7e720703ce0050c912c873c972da03976e03582101d080d09afc96aa94dd0f8ef6eb02d22d7c12bd1707cb6261a0d94d4ae122485967636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616772657469726564a0686578706f72746564a068696d706f727465648158209405d2cb749b9e3128f9b4cf9a1cdbda0a4a46885187e1c31d3e16f508ec8c0e687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016a676f7665726e616e6365a36564656c6179006770656e64696e67806873657175656e6365006b636f6e74726f6c6c657273a278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c64017835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161a7646b657973815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c6873657175656e636500696e6578745f6b65797381783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e71697468726573686f6c64016a6c6173745f6576656e747835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616d65737461626c6973686d656e74006e6e6578745f7468726573686f6c6401", + "expected_state_hash": "146ea4179b93ff454ef98cae0cfed0e9e9dd2bea3fa39209e1cf30fa0bf30291" + } + ] + }, + { + "name": "state-020-import-and-send-back", + "description": "Cluster B, peering with A. Frame 0 applies the custodian's inception and the import of A's certificate — signed by three of A's four nodes — with the byte's envelope and the issuer's and Alice's logs, which verify its history. The byte is live in B, owned by the custodian. Frame 1: the same certificate again is refused, and the custodian, two of its keys signing, sends the byte back to Alice in A.", + "genesis": { + "state": { + "bytes": {}, + "frame": 0, + "peers": { + "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa": { + "keys": [ + { + "$bytes": "01d661c78b74359562c1b4904782873dcba3adb2ebc3020ecb09f8953d28e0d2e3" + }, + { + "$bytes": "01036ca30b2a9433913c505fee8dc8f0bfaa7c9d34574688ac0920f4fcb914c91d" + }, + { + "$bytes": "01804cee78a663531717a54d35fbf556b70e4625a77e3dc3a5219cf783e8917296" + }, + { + "$bytes": "01ef69b130554bf4befe39394a462cda93a9ad647c721e0b5ea09b323e77f7b608" + } + ] + } + }, + "cluster": "Enldsomgkjdhwaeznqf2cyu6j7jqwmkbfrc2klavaaybu6rfzewkq", + "retired": {}, + "exported": {}, + "imported": [], + "registry": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ + 1 + ] + }, + "governance": { + "delay": 0, + "pending": [], + "sequence": 0 + }, + "controllers": {} + }, + "cbor_hex": "aa656279746573a0656672616d6500657065657273a1783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a79756578346670673263707061a1646b65797384582101d661c78b74359562c1b4904782873dcba3adb2ebc3020ecb09f8953d28e0d2e3582101036ca30b2a9433913c505fee8dc8f0bfaa7c9d34574688ac0920f4fcb914c91d582101804cee78a663531717a54d35fbf556b70e4625a77e3dc3a5219cf783e8917296582101ef69b130554bf4befe39394a462cda93a9ad647c721e0b5ea09b323e77f7b60867636c75737465727835456e6c64736f6d676b6a64687761657a6e716632637975366a376a71776d6b62667263326b6c617661617962753672667a65776b716772657469726564a0686578706f72746564a068696d706f7274656480687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016a676f7665726e616e6365a36564656c6179006770656e64696e67806873657175656e6365006b636f6e74726f6c6c657273a0", + "state_hash": "a03985e6fa83c895396f874bf63443dd8ccfa1693f431c4fdac7b15859531741" + }, + "frames": [ + { + "frame": 0, + "inputs": [ + { + "input": { + "key_event": { + "event": { + "a": [], + "d": "Eqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "i": "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "k": [ + { + "$bytes": "01f4ff420feb4040a73e51713a44f9966476c755e8e2d18b82677f8ff7a839afe2" + }, + { + "$bytes": "019b54b13b505ae2ddb12e49d8e10ed93725167ab9a0a77803538fc69858cdb0e2" + }, + { + "$bytes": "015c26708ee23779ee7b628241cc1735ed1ba4527639d7383bbc0ad9aa6295f535" + } + ], + "n": [ + "Efcf43zs566fqd5jlkxmbqnv2srtgk45uhenfpc4p5xzfkx7rdvma", + "Euaam4ynyfrxpmxiyogpumg3m6bdb4s5jigslwv3oqnp2gswv4buq", + "Ell3qkq2hpnwirn4m6hgulph32looiev6e5hgst2oc5c5f6jiwjjq" + ], + "p": "", + "s": 0, + "t": "icp", + "v": "SBYTE10JSON", + "kt": 2, + "nt": 2 + }, + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01e9f5ae4b064588588f8566045833d5860bd680c6fd7182246813fa73710393eec68a6a859931f597dc169950d4aa3539d1e7296372488821cf3b233e5eda940d" + } + }, + { + "index": 1, + "signature": { + "$bytes": "01a2fb0fee6f1bfce74bc0b9e324fec7b3ee5415171740310a3fa769ff6aadd3ed3f75496a7eeb08dcf6db4e939810246c45a1c6f0474a64ec6e558cfe8e50910a" + } + } + ] + } + }, + "cbor_hex": "a1696b65795f6576656e74a2656576656e74ab616180616478354571656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a7367676932746371616978354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a7367676932746371616b83582101f4ff420feb4040a73e51713a44f9966476c755e8e2d18b82677f8ff7a839afe25821019b54b13b505ae2ddb12e49d8e10ed93725167ab9a0a77803538fc69858cdb0e25821015c26708ee23779ee7b628241cc1735ed1ba4527639d7383bbc0ad9aa6295f535616e8378354566636634337a73353636667164356a6c6b786d62716e7632737274676b34357568656e667063347035787a666b78377264766d617835457561616d34796e79667278706d7869796f6770756d67336d366264623473356a6967736c7776336f716e703267737776346275717835456c6c33716b713268706e7769726e346d366867756c706833326c6f6f69657636653568677374326f6335633566366a69776a6a7161706061730061746369637061766b534259544531304a534f4e626b7402626e74026a7369676e61747572657382a265696e64657800697369676e6174757265584101e9f5ae4b064588588f8566045833d5860bd680c6fd7182246813fa73710393eec68a6a859931f597dc169950d4aa3539d1e7296372488821cf3b233e5eda940da265696e64657801697369676e6174757265584101a2fb0fee6f1bfce74bc0b9e324fec7b3ee5415171740310a3fa769ff6aadd3ed3f75496a7eeb08dcf6db4e939810246c45a1c6f0474a64ec6e558cfe8e50910a" + }, + { + "input": { + "import": { + "logs": [ + [ + { + "event": { + "a": [], + "d": "Ei473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "i": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "k": [ + { + "$bytes": "01d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a" + } + ], + "n": [ + "E4fnvjywz23zeyb426croyvctrtqsse237th3kfjid4pfeewx7noa" + ], + "p": "", + "s": 0, + "t": "icp", + "v": "SBYTE10JSON", + "kt": 1, + "nt": 1 + }, + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01e90f89475321e5febce3d271ccb2e304301d0975a6e49aa49a9e76f54ecf4d027097eda8d45ff0d0bf14c94d86f26d7100868c1af79bcfb609792e720e6b1604" + } + } + ] + } + ], + [ + { + "event": { + "a": [], + "d": "Ezxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "i": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "k": [ + { + "$bytes": "013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c" + } + ], + "n": [ + "Eqmsawig6oznh4b5cbovqukvzxa5u5jbiklkrlwhtdo6rbrsyjfnq" + ], + "p": "", + "s": 0, + "t": "icp", + "v": "SBYTE10JSON", + "kt": 1, + "nt": 1 + }, + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01c0999c04eee90f056e29a2753f1a90665636394e819578d4cc2a2a40afb841b9a89a759b881adc095be848ba4ce9be9f64da3f4efcb5f935c0c20723ab68da07" + } + } + ] + } + ] + ], + "envelope": { + "d": "Endpw3gchsgljvx5qcffhfvuc2iam3fqdln2dol6zitfssz4fohsa", + "joule_cost": { + "measured_microjoules": 1200, + "estimated_microjoules": 1500 + }, + "provenance": { + "d": "Eyl2abuhbzbih3ao7hvjmgtjyzm4b5jeufdzafn6pme3j6id53z7q", + "cargo": { + "type": 1, + "bytes": { + "$bytes": "a1666d6963726f731a05f5e100" + } + }, + "nonce": { + "$bytes": "dcc74ebbcedebda361fb18a7abec95d9" + }, + "issuer": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "recipient": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "0188d2bbf7bf3ea95bb33866235bae150ac65c7371bc2776f17eb0944884cc8a4e7d402947d334d07e871acd0c305e6791d6e9b5747a683b6c58fc81f21dbcdd09" + } + } + ], + "establishment": 0 + } + }, + "ownership_chain": [ + { + "to": "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "from": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "frame": 2, + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01542818744f3c48fe12d750b35bf6a66cdebcc08196d471102888133fa81593870238514447840fa7e1701a79d3927ffa45d48b1310ea213a2c2def61c581d005" + } + } + ], + "establishment": 0 + }, + "destination": "Enldsomgkjdhwaeznqf2cyu6j7jqwmkbfrc2klavaaybu6rfzewkq", + "previous_history_hash": { + "$bytes": "c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f" + } + } + ] + }, + "certificate": { + "statement": { + "byte": "Eyl2abuhbzbih3ao7hvjmgtjyzm4b5jeufdzafn6pme3j6id53z7q", + "export": { + "cargo": { + "type": 1, + "bytes": { + "$bytes": "a1666d6963726f731a05f5e100" + } + }, + "owner": "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "issuer": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "minted": 0, + "exported": 2, + "destination": "Enldsomgkjdhwaeznqf2cyu6j7jqwmkbfrc2klavaaybu6rfzewkq", + "history_hash": { + "$bytes": "c987ece9b6cba695356c4c2a5c75498e9c4e419fd2e4d0a71fa76b4deeddcf2e" + } + }, + "source": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa" + }, + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "017b69b164060e1c6a75a9179fe02aa77fe9c54bf29586299f1d7260059506800b40b7b31e4a88836192a333e09c33a12f708138d256bf0b3fe33cd0dab4bb760f" + } + }, + { + "index": 1, + "signature": { + "$bytes": "015d0d531d5767f40057d105d7a922bc63a3cc747a74bfa25326a4d72a5dae6f36c6221544f78c05e69c3c9616b486497dffad5259e6d557a922b402ab9621330b" + } + }, + { + "index": 2, + "signature": { + "$bytes": "0104023a7b6779e77ecf9d9d2cca87e31b6c12b33dcf308af95020b343a87959cda9574517db9198244223edf32751653f9f823ea490977dc3ff711e8e22d1e708" + } + } + ] + } + } + }, + "cbor_hex": "a166696d706f7274a3646c6f67738281a2656576656e74ab616180616478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371616978354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371616b81582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a616e8178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f6161706061730061746369637061766b534259544531304a534f4e626b7401626e74016a7369676e61747572657381a265696e64657800697369676e6174757265584101e90f89475321e5febce3d271ccb2e304301d0975a6e49aa49a9e76f54ecf4d027097eda8d45ff0d0bf14c94d86f26d7100868c1af79bcfb609792e720e6b160481a2656576656e74ab61618061647835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f716161697835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161616b815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c616e81783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e7161706061730061746369637061766b534259544531304a534f4e626b7401626e74016a7369676e61747572657381a265696e64657800697369676e6174757265584101c0999c04eee90f056e29a2753f1a90665636394e819578d4cc2a2a40afb841b9a89a759b881adc095be848ba4ce9be9f64da3f4efcb5f935c0c20723ab68da0768656e76656c6f7065a461647835456e6470773367636873676c6a7678357163666668667675633269616d336671646c6e32646f6c367a69746673737a34666f6873616a6a6f756c655f636f7374a2746d656173757265645f6d6963726f6a6f756c65731904b075657374696d617465645f6d6963726f6a6f756c65731905dc6a70726f76656e616e6365a66164783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a377165636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656e6f6e636550dcc74ebbcedebda361fb18a7abec95d96669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637169726563697069656e747835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e617475726558410188d2bbf7bf3ea95bb33866235bae150ac65c7371bc2776f17eb0944884cc8a4e7d402947d334d07e871acd0c305e6791d6e9b5747a683b6c58fc81f21dbcdd096d65737461626c6973686d656e74006f6f776e6572736869705f636861696e81a662746f78354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716466726f6d7835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161656672616d6502697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e6174757265584101542818744f3c48fe12d750b35bf6a66cdebcc08196d471102888133fa81593870238514447840fa7e1701a79d3927ffa45d48b1310ea213a2c2def61c581d0056d65737461626c6973686d656e74006b64657374696e6174696f6e7835456e6c64736f6d676b6a64687761657a6e716632637975366a376a71776d6b62667263326b6c617661617962753672667a65776b717570726576696f75735f686973746f72795f686173685820c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f6b6365727469666963617465a26973746174656d656e74a36462797465783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771666578706f7274a765636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656f776e657278354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371666d696e74656400686578706f72746564026b64657374696e6174696f6e7835456e6c64736f6d676b6a64687761657a6e716632637975366a376a71776d6b62667263326b6c617661617962753672667a65776b716c686973746f72795f686173685820c987ece9b6cba695356c4c2a5c75498e9c4e419fd2e4d0a71fa76b4deeddcf2e66736f75726365783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616a7369676e61747572657383a265696e64657800697369676e61747572655841017b69b164060e1c6a75a9179fe02aa77fe9c54bf29586299f1d7260059506800b40b7b31e4a88836192a333e09c33a12f708138d256bf0b3fe33cd0dab4bb760fa265696e64657801697369676e61747572655841015d0d531d5767f40057d105d7a922bc63a3cc747a74bfa25326a4d72a5dae6f36c6221544f78c05e69c3c9616b486497dffad5259e6d557a922b402ab9621330ba265696e64657802697369676e617475726558410104023a7b6779e77ecf9d9d2cca87e31b6c12b33dcf308af95020b343a87959cda9574517db9198244223edf32751653f9f823ea490977dc3ff711e8e22d1e708" + } + ], + "expected_results": [ + { + "input": "4b0f387ee0718d2d18cc9a9da65b544f0743c5c18c002548fc6738a089cff058", + "class": "key_event", + "outcome": "applied" + }, + { + "input": "3755d36d70866f2a8013a98d6ba99766ba3f9d542f5a4b12b9475b7c12d9cb6f", + "class": "import", + "outcome": "applied" + } + ], + "expected_state": { + "bytes": { + "Eyl2abuhbzbih3ao7hvjmgtjyzm4b5jeufdzafn6pme3j6id53z7q": { + "cargo": { + "type": 1, + "bytes": { + "$bytes": "a1666d6963726f731a05f5e100" + } + }, + "owner": "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "issuer": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "minted": 0, + "history_hash": { + "$bytes": "c987ece9b6cba695356c4c2a5c75498e9c4e419fd2e4d0a71fa76b4deeddcf2e" + } + } + }, + "frame": 1, + "peers": { + "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa": { + "keys": [ + { + "$bytes": "01d661c78b74359562c1b4904782873dcba3adb2ebc3020ecb09f8953d28e0d2e3" + }, + { + "$bytes": "01036ca30b2a9433913c505fee8dc8f0bfaa7c9d34574688ac0920f4fcb914c91d" + }, + { + "$bytes": "01804cee78a663531717a54d35fbf556b70e4625a77e3dc3a5219cf783e8917296" + }, + { + "$bytes": "01ef69b130554bf4befe39394a462cda93a9ad647c721e0b5ea09b323e77f7b608" + } + ] + } + }, + "cluster": "Enldsomgkjdhwaeznqf2cyu6j7jqwmkbfrc2klavaaybu6rfzewkq", + "retired": {}, + "exported": {}, + "imported": [ + { + "$bytes": "88d4dcf999f3dfc28d23fb94c1748caf06778ca17f335e143815287023487ea4" + } + ], + "registry": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ + 1 + ] + }, + "governance": { + "delay": 0, + "pending": [], + "sequence": 0 + }, + "controllers": { + "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq": { + "keys": [ + { + "$bytes": "01f4ff420feb4040a73e51713a44f9966476c755e8e2d18b82677f8ff7a839afe2" + }, + { + "$bytes": "019b54b13b505ae2ddb12e49d8e10ed93725167ab9a0a77803538fc69858cdb0e2" + }, + { + "$bytes": "015c26708ee23779ee7b628241cc1735ed1ba4527639d7383bbc0ad9aa6295f535" + } + ], + "sequence": 0, + "next_keys": [ + "Efcf43zs566fqd5jlkxmbqnv2srtgk45uhenfpc4p5xzfkx7rdvma", + "Euaam4ynyfrxpmxiyogpumg3m6bdb4s5jigslwv3oqnp2gswv4buq", + "Ell3qkq2hpnwirn4m6hgulph32looiev6e5hgst2oc5c5f6jiwjjq" + ], + "threshold": 2, + "last_event": "Eqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "establishment": 0, + "next_threshold": 2 + } + } + }, + "expected_state_cbor_hex": "aa656279746573a1783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771a565636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656f776e657278354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371666d696e746564006c686973746f72795f686173685820c987ece9b6cba695356c4c2a5c75498e9c4e419fd2e4d0a71fa76b4deeddcf2e656672616d6501657065657273a1783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a79756578346670673263707061a1646b65797384582101d661c78b74359562c1b4904782873dcba3adb2ebc3020ecb09f8953d28e0d2e3582101036ca30b2a9433913c505fee8dc8f0bfaa7c9d34574688ac0920f4fcb914c91d582101804cee78a663531717a54d35fbf556b70e4625a77e3dc3a5219cf783e8917296582101ef69b130554bf4befe39394a462cda93a9ad647c721e0b5ea09b323e77f7b60867636c75737465727835456e6c64736f6d676b6a64687761657a6e716632637975366a376a71776d6b62667263326b6c617661617962753672667a65776b716772657469726564a0686578706f72746564a068696d706f7274656481582088d4dcf999f3dfc28d23fb94c1748caf06778ca17f335e143815287023487ea4687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016a676f7665726e616e6365a36564656c6179006770656e64696e67806873657175656e6365006b636f6e74726f6c6c657273a178354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a7367676932746371a7646b65797383582101f4ff420feb4040a73e51713a44f9966476c755e8e2d18b82677f8ff7a839afe25821019b54b13b505ae2ddb12e49d8e10ed93725167ab9a0a77803538fc69858cdb0e25821015c26708ee23779ee7b628241cc1735ed1ba4527639d7383bbc0ad9aa6295f5356873657175656e636500696e6578745f6b6579738378354566636634337a73353636667164356a6c6b786d62716e7632737274676b34357568656e667063347035787a666b78377264766d617835457561616d34796e79667278706d7869796f6770756d67336d366264623473356a6967736c7776336f716e703267737776346275717835456c6c33716b713268706e7769726e346d366867756c706833326c6f6f69657636653568677374326f6335633566366a69776a6a71697468726573686f6c64026a6c6173745f6576656e7478354571656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c6402", + "expected_state_hash": "ebafa9e09b68db831950b6226503d9bb049a6788b86955b827887c5c3dc8e438" + }, + { + "frame": 1, + "inputs": [ + { + "input": { + "import": { + "logs": [ + [ + { + "event": { + "a": [], + "d": "Ei473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "i": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "k": [ + { + "$bytes": "01d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a" + } + ], + "n": [ + "E4fnvjywz23zeyb426croyvctrtqsse237th3kfjid4pfeewx7noa" + ], + "p": "", + "s": 0, + "t": "icp", + "v": "SBYTE10JSON", + "kt": 1, + "nt": 1 + }, + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01e90f89475321e5febce3d271ccb2e304301d0975a6e49aa49a9e76f54ecf4d027097eda8d45ff0d0bf14c94d86f26d7100868c1af79bcfb609792e720e6b1604" + } + } + ] + } + ], + [ + { + "event": { + "a": [], + "d": "Ezxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "i": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "k": [ + { + "$bytes": "013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c" + } + ], + "n": [ + "Eqmsawig6oznh4b5cbovqukvzxa5u5jbiklkrlwhtdo6rbrsyjfnq" + ], + "p": "", + "s": 0, + "t": "icp", + "v": "SBYTE10JSON", + "kt": 1, + "nt": 1 + }, + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01c0999c04eee90f056e29a2753f1a90665636394e819578d4cc2a2a40afb841b9a89a759b881adc095be848ba4ce9be9f64da3f4efcb5f935c0c20723ab68da07" + } + } + ] + } + ] + ], + "envelope": { + "d": "Endpw3gchsgljvx5qcffhfvuc2iam3fqdln2dol6zitfssz4fohsa", + "joule_cost": { + "measured_microjoules": 1200, + "estimated_microjoules": 1500 + }, + "provenance": { + "d": "Eyl2abuhbzbih3ao7hvjmgtjyzm4b5jeufdzafn6pme3j6id53z7q", + "cargo": { + "type": 1, + "bytes": { + "$bytes": "a1666d6963726f731a05f5e100" + } + }, + "nonce": { + "$bytes": "dcc74ebbcedebda361fb18a7abec95d9" + }, + "issuer": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "recipient": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "0188d2bbf7bf3ea95bb33866235bae150ac65c7371bc2776f17eb0944884cc8a4e7d402947d334d07e871acd0c305e6791d6e9b5747a683b6c58fc81f21dbcdd09" + } + } + ], + "establishment": 0 + } + }, + "ownership_chain": [ + { + "to": "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "from": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "frame": 2, + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01542818744f3c48fe12d750b35bf6a66cdebcc08196d471102888133fa81593870238514447840fa7e1701a79d3927ffa45d48b1310ea213a2c2def61c581d005" + } + } + ], + "establishment": 0 + }, + "destination": "Enldsomgkjdhwaeznqf2cyu6j7jqwmkbfrc2klavaaybu6rfzewkq", + "previous_history_hash": { + "$bytes": "c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f" + } + } + ] + }, + "certificate": { + "statement": { + "byte": "Eyl2abuhbzbih3ao7hvjmgtjyzm4b5jeufdzafn6pme3j6id53z7q", + "export": { + "cargo": { + "type": 1, + "bytes": { + "$bytes": "a1666d6963726f731a05f5e100" + } + }, + "owner": "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "issuer": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "minted": 0, + "exported": 2, + "destination": "Enldsomgkjdhwaeznqf2cyu6j7jqwmkbfrc2klavaaybu6rfzewkq", + "history_hash": { + "$bytes": "c987ece9b6cba695356c4c2a5c75498e9c4e419fd2e4d0a71fa76b4deeddcf2e" + } + }, + "source": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa" + }, + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "017b69b164060e1c6a75a9179fe02aa77fe9c54bf29586299f1d7260059506800b40b7b31e4a88836192a333e09c33a12f708138d256bf0b3fe33cd0dab4bb760f" + } + }, + { + "index": 1, + "signature": { + "$bytes": "015d0d531d5767f40057d105d7a922bc63a3cc747a74bfa25326a4d72a5dae6f36c6221544f78c05e69c3c9616b486497dffad5259e6d557a922b402ab9621330b" + } + }, + { + "index": 2, + "signature": { + "$bytes": "0104023a7b6779e77ecf9d9d2cca87e31b6c12b33dcf308af95020b343a87959cda9574517db9198244223edf32751653f9f823ea490977dc3ff711e8e22d1e708" + } + } + ] + } + } + }, + "cbor_hex": "a166696d706f7274a3646c6f67738281a2656576656e74ab616180616478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371616978354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371616b81582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a616e8178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f6161706061730061746369637061766b534259544531304a534f4e626b7401626e74016a7369676e61747572657381a265696e64657800697369676e6174757265584101e90f89475321e5febce3d271ccb2e304301d0975a6e49aa49a9e76f54ecf4d027097eda8d45ff0d0bf14c94d86f26d7100868c1af79bcfb609792e720e6b160481a2656576656e74ab61618061647835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f716161697835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161616b815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c616e81783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e7161706061730061746369637061766b534259544531304a534f4e626b7401626e74016a7369676e61747572657381a265696e64657800697369676e6174757265584101c0999c04eee90f056e29a2753f1a90665636394e819578d4cc2a2a40afb841b9a89a759b881adc095be848ba4ce9be9f64da3f4efcb5f935c0c20723ab68da0768656e76656c6f7065a461647835456e6470773367636873676c6a7678357163666668667675633269616d336671646c6e32646f6c367a69746673737a34666f6873616a6a6f756c655f636f7374a2746d656173757265645f6d6963726f6a6f756c65731904b075657374696d617465645f6d6963726f6a6f756c65731905dc6a70726f76656e616e6365a66164783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a377165636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656e6f6e636550dcc74ebbcedebda361fb18a7abec95d96669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637169726563697069656e747835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e617475726558410188d2bbf7bf3ea95bb33866235bae150ac65c7371bc2776f17eb0944884cc8a4e7d402947d334d07e871acd0c305e6791d6e9b5747a683b6c58fc81f21dbcdd096d65737461626c6973686d656e74006f6f776e6572736869705f636861696e81a662746f78354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716466726f6d7835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161656672616d6502697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e6174757265584101542818744f3c48fe12d750b35bf6a66cdebcc08196d471102888133fa81593870238514447840fa7e1701a79d3927ffa45d48b1310ea213a2c2def61c581d0056d65737461626c6973686d656e74006b64657374696e6174696f6e7835456e6c64736f6d676b6a64687761657a6e716632637975366a376a71776d6b62667263326b6c617661617962753672667a65776b717570726576696f75735f686973746f72795f686173685820c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f6b6365727469666963617465a26973746174656d656e74a36462797465783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771666578706f7274a765636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656f776e657278354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371666d696e74656400686578706f72746564026b64657374696e6174696f6e7835456e6c64736f6d676b6a64687761657a6e716632637975366a376a71776d6b62667263326b6c617661617962753672667a65776b716c686973746f72795f686173685820c987ece9b6cba695356c4c2a5c75498e9c4e419fd2e4d0a71fa76b4deeddcf2e66736f75726365783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616a7369676e61747572657383a265696e64657800697369676e61747572655841017b69b164060e1c6a75a9179fe02aa77fe9c54bf29586299f1d7260059506800b40b7b31e4a88836192a333e09c33a12f708138d256bf0b3fe33cd0dab4bb760fa265696e64657801697369676e61747572655841015d0d531d5767f40057d105d7a922bc63a3cc747a74bfa25326a4d72a5dae6f36c6221544f78c05e69c3c9616b486497dffad5259e6d557a922b402ab9621330ba265696e64657802697369676e617475726558410104023a7b6779e77ecf9d9d2cca87e31b6c12b33dcf308af95020b343a87959cda9574517db9198244223edf32751653f9f823ea490977dc3ff711e8e22d1e708" + }, + { + "input": { + "transfer": { + "byte": "Eyl2abuhbzbih3ao7hvjmgtjyzm4b5jeufdzafn6pme3j6id53z7q", + "transition": { + "to": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "from": "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "frame": 1, + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "0121fb554518224a1dda2fe74c8f39edc919524672416f0f80528b862fac8f85f834ceba6970beb26ce68481ba0b80a3231539e2551c42862fa3c072f5d1c33301" + } + }, + { + "index": 2, + "signature": { + "$bytes": "01c4264f6191c1a7351bf18a59352cc07c55ca91dc934e65464c1d87d29fcff67202e92f35921d8ef74e52eeb41415bd1b753d6fb4fd21fa4445677cba53b1ae0a" + } + } + ], + "establishment": 0 + }, + "destination": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "previous_history_hash": { + "$bytes": "c987ece9b6cba695356c4c2a5c75498e9c4e419fd2e4d0a71fa76b4deeddcf2e" + } + } + } + }, + "cbor_hex": "a1687472616e73666572a26462797465783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a37716a7472616e736974696f6ea662746f7835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616466726f6d78354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a7367676932746371656672616d6501697369676e6174757265a26a7369676e61747572657382a265696e64657800697369676e617475726558410121fb554518224a1dda2fe74c8f39edc919524672416f0f80528b862fac8f85f834ceba6970beb26ce68481ba0b80a3231539e2551c42862fa3c072f5d1c33301a265696e64657802697369676e6174757265584101c4264f6191c1a7351bf18a59352cc07c55ca91dc934e65464c1d87d29fcff67202e92f35921d8ef74e52eeb41415bd1b753d6fb4fd21fa4445677cba53b1ae0a6d65737461626c6973686d656e74006b64657374696e6174696f6e783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070617570726576696f75735f686973746f72795f686173685820c987ece9b6cba695356c4c2a5c75498e9c4e419fd2e4d0a71fa76b4deeddcf2e" + } + ], + "expected_results": [ + { + "input": "3755d36d70866f2a8013a98d6ba99766ba3f9d542f5a4b12b9475b7c12d9cb6f", + "class": "import", + "outcome": "dropped", + "error": "duplicate_import" + }, + { + "input": "035ca3710e4caa176d6d5bbc4cde56d383e75b5950517af2da8b8bc92d2cf1ab", + "class": "transfer", + "outcome": "applied" + } + ], + "expected_state": { + "bytes": {}, + "frame": 2, + "peers": { + "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa": { + "keys": [ + { + "$bytes": "01d661c78b74359562c1b4904782873dcba3adb2ebc3020ecb09f8953d28e0d2e3" + }, + { + "$bytes": "01036ca30b2a9433913c505fee8dc8f0bfaa7c9d34574688ac0920f4fcb914c91d" + }, + { + "$bytes": "01804cee78a663531717a54d35fbf556b70e4625a77e3dc3a5219cf783e8917296" + }, + { + "$bytes": "01ef69b130554bf4befe39394a462cda93a9ad647c721e0b5ea09b323e77f7b608" + } + ] + } + }, + "cluster": "Enldsomgkjdhwaeznqf2cyu6j7jqwmkbfrc2klavaaybu6rfzewkq", + "retired": {}, + "exported": { + "Eyl2abuhbzbih3ao7hvjmgtjyzm4b5jeufdzafn6pme3j6id53z7q": { + "cargo": { + "type": 1, + "bytes": { + "$bytes": "a1666d6963726f731a05f5e100" + } + }, + "owner": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "issuer": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "minted": 0, + "exported": 1, + "destination": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "history_hash": { + "$bytes": "3198f6b228ae4ccd6265c12c9f1cb866020fe8a4ab198cdfee01939caaeaec01" + } + } + }, + "imported": [ + { + "$bytes": "88d4dcf999f3dfc28d23fb94c1748caf06778ca17f335e143815287023487ea4" + } + ], + "registry": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ + 1 + ] + }, + "governance": { + "delay": 0, + "pending": [], + "sequence": 0 + }, + "controllers": { + "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq": { + "keys": [ + { + "$bytes": "01f4ff420feb4040a73e51713a44f9966476c755e8e2d18b82677f8ff7a839afe2" + }, + { + "$bytes": "019b54b13b505ae2ddb12e49d8e10ed93725167ab9a0a77803538fc69858cdb0e2" + }, + { + "$bytes": "015c26708ee23779ee7b628241cc1735ed1ba4527639d7383bbc0ad9aa6295f535" + } + ], + "sequence": 0, + "next_keys": [ + "Efcf43zs566fqd5jlkxmbqnv2srtgk45uhenfpc4p5xzfkx7rdvma", + "Euaam4ynyfrxpmxiyogpumg3m6bdb4s5jigslwv3oqnp2gswv4buq", + "Ell3qkq2hpnwirn4m6hgulph32looiev6e5hgst2oc5c5f6jiwjjq" + ], + "threshold": 2, + "last_event": "Eqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "establishment": 0, + "next_threshold": 2 + } + } + }, + "expected_state_cbor_hex": "aa656279746573a0656672616d6502657065657273a1783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a79756578346670673263707061a1646b65797384582101d661c78b74359562c1b4904782873dcba3adb2ebc3020ecb09f8953d28e0d2e3582101036ca30b2a9433913c505fee8dc8f0bfaa7c9d34574688ac0920f4fcb914c91d582101804cee78a663531717a54d35fbf556b70e4625a77e3dc3a5219cf783e8917296582101ef69b130554bf4befe39394a462cda93a9ad647c721e0b5ea09b323e77f7b60867636c75737465727835456e6c64736f6d676b6a64687761657a6e716632637975366a376a71776d6b62667263326b6c617661617962753672667a65776b716772657469726564a0686578706f72746564a1783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771a765636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656f776e65727835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371666d696e74656400686578706f72746564016b64657374696e6174696f6e783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616c686973746f72795f6861736858203198f6b228ae4ccd6265c12c9f1cb866020fe8a4ab198cdfee01939caaeaec0168696d706f7274656481582088d4dcf999f3dfc28d23fb94c1748caf06778ca17f335e143815287023487ea4687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016a676f7665726e616e6365a36564656c6179006770656e64696e67806873657175656e6365006b636f6e74726f6c6c657273a178354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a7367676932746371a7646b65797383582101f4ff420feb4040a73e51713a44f9966476c755e8e2d18b82677f8ff7a839afe25821019b54b13b505ae2ddb12e49d8e10ed93725167ab9a0a77803538fc69858cdb0e25821015c26708ee23779ee7b628241cc1735ed1ba4527639d7383bbc0ad9aa6295f5356873657175656e636500696e6578745f6b6579738378354566636634337a73353636667164356a6c6b786d62716e7632737274676b34357568656e667063347035787a666b78377264766d617835457561616d34796e79667278706d7869796f6770756d67336d366264623473356a6967736c7776336f716e703267737776346275717835456c6c33716b713268706e7769726e346d366867756c706833326c6f6f69657636653568677374326f6335633566366a69776a6a71697468726573686f6c64026a6c6173745f6576656e7478354571656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c6402", + "expected_state_hash": "5307f2768c10477b85b6ef2eb5ba0bc29ed77f5d0f8f606cfa315ad96cb0ecc4" + } + ] + }, + { + "name": "state-021-import-checks", + "description": "Imports into cluster B, which peers with A (four nodes) and D (three), that fail one check each: a certificate signed by two of A's four nodes, where floor(2·4/3)+1 = 3 are needed; one signed by two of D's three nodes, where all three are needed; one for a byte A sent to cluster C; one from cluster C, which B does not peer with; A's certificate with the envelope as it was before it left; certificates that differ from the envelope in one member each — the byte, its history hash, its owner, its issuer, its cargo; and A's certificate without Alice's log, so her signature cannot be checked.", + "genesis": { + "state": { + "bytes": {}, + "frame": 0, + "peers": { + "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa": { + "keys": [ + { + "$bytes": "01d661c78b74359562c1b4904782873dcba3adb2ebc3020ecb09f8953d28e0d2e3" + }, + { + "$bytes": "01036ca30b2a9433913c505fee8dc8f0bfaa7c9d34574688ac0920f4fcb914c91d" + }, + { + "$bytes": "01804cee78a663531717a54d35fbf556b70e4625a77e3dc3a5219cf783e8917296" + }, + { + "$bytes": "01ef69b130554bf4befe39394a462cda93a9ad647c721e0b5ea09b323e77f7b608" + } + ] + }, + "Egxiatblr23j5ow2lbioy2bgfm5nitq5ibhfs54fvhwkbhfsjjgtq": { + "keys": [ + { + "$bytes": "0116fabfb7d7f6c79625dff75c7d456475e023dc7c49648b88d3ad31cd91c1d2c8" + }, + { + "$bytes": "010a4382b716a75c0a1ae0eae202a3d57e7dfcb2722e4fc2061e1157a98cb865d5" + }, + { + "$bytes": "0199fa7e6a98e297f9b43eebf980a6300e2e7f0b953cc2a1a628fb6ec6d1cf0b34" + } + ] + } + }, + "cluster": "Enldsomgkjdhwaeznqf2cyu6j7jqwmkbfrc2klavaaybu6rfzewkq", + "retired": {}, + "exported": {}, + "imported": [], + "registry": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ + 1 + ] + }, + "governance": { + "delay": 0, + "pending": [], + "sequence": 0 + }, + "controllers": {} + }, + "cbor_hex": "aa656279746573a0656672616d6500657065657273a2783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a79756578346670673263707061a1646b65797384582101d661c78b74359562c1b4904782873dcba3adb2ebc3020ecb09f8953d28e0d2e3582101036ca30b2a9433913c505fee8dc8f0bfaa7c9d34574688ac0920f4fcb914c91d582101804cee78a663531717a54d35fbf556b70e4625a77e3dc3a5219cf783e8917296582101ef69b130554bf4befe39394a462cda93a9ad647c721e0b5ea09b323e77f7b6087835456778696174626c7232336a356f77326c62696f79326267666d356e6974713569626866733534667668776b626866736a6a677471a1646b6579738358210116fabfb7d7f6c79625dff75c7d456475e023dc7c49648b88d3ad31cd91c1d2c85821010a4382b716a75c0a1ae0eae202a3d57e7dfcb2722e4fc2061e1157a98cb865d558210199fa7e6a98e297f9b43eebf980a6300e2e7f0b953cc2a1a628fb6ec6d1cf0b3467636c75737465727835456e6c64736f6d676b6a64687761657a6e716632637975366a376a71776d6b62667263326b6c617661617962753672667a65776b716772657469726564a0686578706f72746564a068696d706f7274656480687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016a676f7665726e616e6365a36564656c6179006770656e64696e67806873657175656e6365006b636f6e74726f6c6c657273a0", + "state_hash": "0c9beaf3ac38f9d8872a93fba4ccd8e92cb3b6943b15cd2a986d6afaffd0c8d9" + }, + "frames": [ + { + "frame": 0, + "inputs": [ + { + "input": { + "key_event": { + "event": { + "a": [], + "d": "Eqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "i": "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "k": [ + { + "$bytes": "01f4ff420feb4040a73e51713a44f9966476c755e8e2d18b82677f8ff7a839afe2" + }, + { + "$bytes": "019b54b13b505ae2ddb12e49d8e10ed93725167ab9a0a77803538fc69858cdb0e2" + }, + { + "$bytes": "015c26708ee23779ee7b628241cc1735ed1ba4527639d7383bbc0ad9aa6295f535" + } + ], + "n": [ + "Efcf43zs566fqd5jlkxmbqnv2srtgk45uhenfpc4p5xzfkx7rdvma", + "Euaam4ynyfrxpmxiyogpumg3m6bdb4s5jigslwv3oqnp2gswv4buq", + "Ell3qkq2hpnwirn4m6hgulph32looiev6e5hgst2oc5c5f6jiwjjq" + ], + "p": "", + "s": 0, + "t": "icp", + "v": "SBYTE10JSON", + "kt": 2, + "nt": 2 + }, + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01e9f5ae4b064588588f8566045833d5860bd680c6fd7182246813fa73710393eec68a6a859931f597dc169950d4aa3539d1e7296372488821cf3b233e5eda940d" + } + }, + { + "index": 1, + "signature": { + "$bytes": "01a2fb0fee6f1bfce74bc0b9e324fec7b3ee5415171740310a3fa769ff6aadd3ed3f75496a7eeb08dcf6db4e939810246c45a1c6f0474a64ec6e558cfe8e50910a" + } + } + ] + } + }, + "cbor_hex": "a1696b65795f6576656e74a2656576656e74ab616180616478354571656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a7367676932746371616978354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a7367676932746371616b83582101f4ff420feb4040a73e51713a44f9966476c755e8e2d18b82677f8ff7a839afe25821019b54b13b505ae2ddb12e49d8e10ed93725167ab9a0a77803538fc69858cdb0e25821015c26708ee23779ee7b628241cc1735ed1ba4527639d7383bbc0ad9aa6295f535616e8378354566636634337a73353636667164356a6c6b786d62716e7632737274676b34357568656e667063347035787a666b78377264766d617835457561616d34796e79667278706d7869796f6770756d67336d366264623473356a6967736c7776336f716e703267737776346275717835456c6c33716b713268706e7769726e346d366867756c706833326c6f6f69657636653568677374326f6335633566366a69776a6a7161706061730061746369637061766b534259544531304a534f4e626b7402626e74026a7369676e61747572657382a265696e64657800697369676e6174757265584101e9f5ae4b064588588f8566045833d5860bd680c6fd7182246813fa73710393eec68a6a859931f597dc169950d4aa3539d1e7296372488821cf3b233e5eda940da265696e64657801697369676e6174757265584101a2fb0fee6f1bfce74bc0b9e324fec7b3ee5415171740310a3fa769ff6aadd3ed3f75496a7eeb08dcf6db4e939810246c45a1c6f0474a64ec6e558cfe8e50910a" + } + ], + "expected_results": [ + { + "input": "4b0f387ee0718d2d18cc9a9da65b544f0743c5c18c002548fc6738a089cff058", + "class": "key_event", + "outcome": "applied" + } + ], + "expected_state": { + "bytes": {}, + "frame": 1, + "peers": { + "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa": { + "keys": [ + { + "$bytes": "01d661c78b74359562c1b4904782873dcba3adb2ebc3020ecb09f8953d28e0d2e3" + }, + { + "$bytes": "01036ca30b2a9433913c505fee8dc8f0bfaa7c9d34574688ac0920f4fcb914c91d" + }, + { + "$bytes": "01804cee78a663531717a54d35fbf556b70e4625a77e3dc3a5219cf783e8917296" + }, + { + "$bytes": "01ef69b130554bf4befe39394a462cda93a9ad647c721e0b5ea09b323e77f7b608" + } + ] + }, + "Egxiatblr23j5ow2lbioy2bgfm5nitq5ibhfs54fvhwkbhfsjjgtq": { + "keys": [ + { + "$bytes": "0116fabfb7d7f6c79625dff75c7d456475e023dc7c49648b88d3ad31cd91c1d2c8" + }, + { + "$bytes": "010a4382b716a75c0a1ae0eae202a3d57e7dfcb2722e4fc2061e1157a98cb865d5" + }, + { + "$bytes": "0199fa7e6a98e297f9b43eebf980a6300e2e7f0b953cc2a1a628fb6ec6d1cf0b34" + } + ] + } + }, + "cluster": "Enldsomgkjdhwaeznqf2cyu6j7jqwmkbfrc2klavaaybu6rfzewkq", + "retired": {}, + "exported": {}, + "imported": [], + "registry": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ + 1 + ] + }, + "governance": { + "delay": 0, + "pending": [], + "sequence": 0 + }, + "controllers": { + "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq": { + "keys": [ + { + "$bytes": "01f4ff420feb4040a73e51713a44f9966476c755e8e2d18b82677f8ff7a839afe2" + }, + { + "$bytes": "019b54b13b505ae2ddb12e49d8e10ed93725167ab9a0a77803538fc69858cdb0e2" + }, + { + "$bytes": "015c26708ee23779ee7b628241cc1735ed1ba4527639d7383bbc0ad9aa6295f535" + } + ], + "sequence": 0, + "next_keys": [ + "Efcf43zs566fqd5jlkxmbqnv2srtgk45uhenfpc4p5xzfkx7rdvma", + "Euaam4ynyfrxpmxiyogpumg3m6bdb4s5jigslwv3oqnp2gswv4buq", + "Ell3qkq2hpnwirn4m6hgulph32looiev6e5hgst2oc5c5f6jiwjjq" + ], + "threshold": 2, + "last_event": "Eqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "establishment": 0, + "next_threshold": 2 + } + } + }, + "expected_state_cbor_hex": "aa656279746573a0656672616d6501657065657273a2783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a79756578346670673263707061a1646b65797384582101d661c78b74359562c1b4904782873dcba3adb2ebc3020ecb09f8953d28e0d2e3582101036ca30b2a9433913c505fee8dc8f0bfaa7c9d34574688ac0920f4fcb914c91d582101804cee78a663531717a54d35fbf556b70e4625a77e3dc3a5219cf783e8917296582101ef69b130554bf4befe39394a462cda93a9ad647c721e0b5ea09b323e77f7b6087835456778696174626c7232336a356f77326c62696f79326267666d356e6974713569626866733534667668776b626866736a6a677471a1646b6579738358210116fabfb7d7f6c79625dff75c7d456475e023dc7c49648b88d3ad31cd91c1d2c85821010a4382b716a75c0a1ae0eae202a3d57e7dfcb2722e4fc2061e1157a98cb865d558210199fa7e6a98e297f9b43eebf980a6300e2e7f0b953cc2a1a628fb6ec6d1cf0b3467636c75737465727835456e6c64736f6d676b6a64687761657a6e716632637975366a376a71776d6b62667263326b6c617661617962753672667a65776b716772657469726564a0686578706f72746564a068696d706f7274656480687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016a676f7665726e616e6365a36564656c6179006770656e64696e67806873657175656e6365006b636f6e74726f6c6c657273a178354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a7367676932746371a7646b65797383582101f4ff420feb4040a73e51713a44f9966476c755e8e2d18b82677f8ff7a839afe25821019b54b13b505ae2ddb12e49d8e10ed93725167ab9a0a77803538fc69858cdb0e25821015c26708ee23779ee7b628241cc1735ed1ba4527639d7383bbc0ad9aa6295f5356873657175656e636500696e6578745f6b6579738378354566636634337a73353636667164356a6c6b786d62716e7632737274676b34357568656e667063347035787a666b78377264766d617835457561616d34796e79667278706d7869796f6770756d67336d366264623473356a6967736c7776336f716e703267737776346275717835456c6c33716b713268706e7769726e346d366867756c706833326c6f6f69657636653568677374326f6335633566366a69776a6a71697468726573686f6c64026a6c6173745f6576656e7478354571656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c6402", + "expected_state_hash": "73700c6929052711b6c8c9e4375613056168a32110bc2788d81ce2c4fbcb287b" + }, + { + "frame": 1, + "inputs": [ + { + "input": { + "import": { + "logs": [ + [ + { + "event": { + "a": [], + "d": "Ei473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "i": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "k": [ + { + "$bytes": "01d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a" + } + ], + "n": [ + "E4fnvjywz23zeyb426croyvctrtqsse237th3kfjid4pfeewx7noa" + ], + "p": "", + "s": 0, + "t": "icp", + "v": "SBYTE10JSON", + "kt": 1, + "nt": 1 + }, + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01e90f89475321e5febce3d271ccb2e304301d0975a6e49aa49a9e76f54ecf4d027097eda8d45ff0d0bf14c94d86f26d7100868c1af79bcfb609792e720e6b1604" + } + } + ] + } + ], + [ + { + "event": { + "a": [], + "d": "Ezxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "i": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "k": [ + { + "$bytes": "013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c" + } + ], + "n": [ + "Eqmsawig6oznh4b5cbovqukvzxa5u5jbiklkrlwhtdo6rbrsyjfnq" + ], + "p": "", + "s": 0, + "t": "icp", + "v": "SBYTE10JSON", + "kt": 1, + "nt": 1 + }, + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01c0999c04eee90f056e29a2753f1a90665636394e819578d4cc2a2a40afb841b9a89a759b881adc095be848ba4ce9be9f64da3f4efcb5f935c0c20723ab68da07" + } + } + ] + } + ] + ], + "envelope": { + "d": "Endpw3gchsgljvx5qcffhfvuc2iam3fqdln2dol6zitfssz4fohsa", + "joule_cost": { + "measured_microjoules": 1200, + "estimated_microjoules": 1500 + }, + "provenance": { + "d": "Eyl2abuhbzbih3ao7hvjmgtjyzm4b5jeufdzafn6pme3j6id53z7q", + "cargo": { + "type": 1, + "bytes": { + "$bytes": "a1666d6963726f731a05f5e100" + } + }, + "nonce": { + "$bytes": "dcc74ebbcedebda361fb18a7abec95d9" + }, + "issuer": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "recipient": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "0188d2bbf7bf3ea95bb33866235bae150ac65c7371bc2776f17eb0944884cc8a4e7d402947d334d07e871acd0c305e6791d6e9b5747a683b6c58fc81f21dbcdd09" + } + } + ], + "establishment": 0 + } + }, + "ownership_chain": [ + { + "to": "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "from": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "frame": 2, + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01542818744f3c48fe12d750b35bf6a66cdebcc08196d471102888133fa81593870238514447840fa7e1701a79d3927ffa45d48b1310ea213a2c2def61c581d005" + } + } + ], + "establishment": 0 + }, + "destination": "Enldsomgkjdhwaeznqf2cyu6j7jqwmkbfrc2klavaaybu6rfzewkq", + "previous_history_hash": { + "$bytes": "c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f" + } + } + ] + }, + "certificate": { + "statement": { + "byte": "Eyl2abuhbzbih3ao7hvjmgtjyzm4b5jeufdzafn6pme3j6id53z7q", + "export": { + "cargo": { + "type": 1, + "bytes": { + "$bytes": "a1666d6963726f731a05f5e100" + } + }, + "owner": "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "issuer": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "minted": 0, + "exported": 2, + "destination": "Enldsomgkjdhwaeznqf2cyu6j7jqwmkbfrc2klavaaybu6rfzewkq", + "history_hash": { + "$bytes": "c987ece9b6cba695356c4c2a5c75498e9c4e419fd2e4d0a71fa76b4deeddcf2e" + } + }, + "source": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa" + }, + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "017b69b164060e1c6a75a9179fe02aa77fe9c54bf29586299f1d7260059506800b40b7b31e4a88836192a333e09c33a12f708138d256bf0b3fe33cd0dab4bb760f" + } + }, + { + "index": 2, + "signature": { + "$bytes": "0104023a7b6779e77ecf9d9d2cca87e31b6c12b33dcf308af95020b343a87959cda9574517db9198244223edf32751653f9f823ea490977dc3ff711e8e22d1e708" + } + } + ] + } + } + }, + "cbor_hex": "a166696d706f7274a3646c6f67738281a2656576656e74ab616180616478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371616978354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371616b81582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a616e8178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f6161706061730061746369637061766b534259544531304a534f4e626b7401626e74016a7369676e61747572657381a265696e64657800697369676e6174757265584101e90f89475321e5febce3d271ccb2e304301d0975a6e49aa49a9e76f54ecf4d027097eda8d45ff0d0bf14c94d86f26d7100868c1af79bcfb609792e720e6b160481a2656576656e74ab61618061647835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f716161697835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161616b815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c616e81783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e7161706061730061746369637061766b534259544531304a534f4e626b7401626e74016a7369676e61747572657381a265696e64657800697369676e6174757265584101c0999c04eee90f056e29a2753f1a90665636394e819578d4cc2a2a40afb841b9a89a759b881adc095be848ba4ce9be9f64da3f4efcb5f935c0c20723ab68da0768656e76656c6f7065a461647835456e6470773367636873676c6a7678357163666668667675633269616d336671646c6e32646f6c367a69746673737a34666f6873616a6a6f756c655f636f7374a2746d656173757265645f6d6963726f6a6f756c65731904b075657374696d617465645f6d6963726f6a6f756c65731905dc6a70726f76656e616e6365a66164783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a377165636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656e6f6e636550dcc74ebbcedebda361fb18a7abec95d96669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637169726563697069656e747835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e617475726558410188d2bbf7bf3ea95bb33866235bae150ac65c7371bc2776f17eb0944884cc8a4e7d402947d334d07e871acd0c305e6791d6e9b5747a683b6c58fc81f21dbcdd096d65737461626c6973686d656e74006f6f776e6572736869705f636861696e81a662746f78354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716466726f6d7835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161656672616d6502697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e6174757265584101542818744f3c48fe12d750b35bf6a66cdebcc08196d471102888133fa81593870238514447840fa7e1701a79d3927ffa45d48b1310ea213a2c2def61c581d0056d65737461626c6973686d656e74006b64657374696e6174696f6e7835456e6c64736f6d676b6a64687761657a6e716632637975366a376a71776d6b62667263326b6c617661617962753672667a65776b717570726576696f75735f686973746f72795f686173685820c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f6b6365727469666963617465a26973746174656d656e74a36462797465783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771666578706f7274a765636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656f776e657278354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371666d696e74656400686578706f72746564026b64657374696e6174696f6e7835456e6c64736f6d676b6a64687761657a6e716632637975366a376a71776d6b62667263326b6c617661617962753672667a65776b716c686973746f72795f686173685820c987ece9b6cba695356c4c2a5c75498e9c4e419fd2e4d0a71fa76b4deeddcf2e66736f75726365783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616a7369676e61747572657382a265696e64657800697369676e61747572655841017b69b164060e1c6a75a9179fe02aa77fe9c54bf29586299f1d7260059506800b40b7b31e4a88836192a333e09c33a12f708138d256bf0b3fe33cd0dab4bb760fa265696e64657802697369676e617475726558410104023a7b6779e77ecf9d9d2cca87e31b6c12b33dcf308af95020b343a87959cda9574517db9198244223edf32751653f9f823ea490977dc3ff711e8e22d1e708" + }, + { + "input": { + "import": { + "logs": [ + [ + { + "event": { + "a": [], + "d": "Ei473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "i": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "k": [ + { + "$bytes": "01d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a" + } + ], + "n": [ + "E4fnvjywz23zeyb426croyvctrtqsse237th3kfjid4pfeewx7noa" + ], + "p": "", + "s": 0, + "t": "icp", + "v": "SBYTE10JSON", + "kt": 1, + "nt": 1 + }, + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01e90f89475321e5febce3d271ccb2e304301d0975a6e49aa49a9e76f54ecf4d027097eda8d45ff0d0bf14c94d86f26d7100868c1af79bcfb609792e720e6b1604" + } + } + ] + } + ], + [ + { + "event": { + "a": [], + "d": "Ezxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "i": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "k": [ + { + "$bytes": "013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c" + } + ], + "n": [ + "Eqmsawig6oznh4b5cbovqukvzxa5u5jbiklkrlwhtdo6rbrsyjfnq" + ], + "p": "", + "s": 0, + "t": "icp", + "v": "SBYTE10JSON", + "kt": 1, + "nt": 1 + }, + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01c0999c04eee90f056e29a2753f1a90665636394e819578d4cc2a2a40afb841b9a89a759b881adc095be848ba4ce9be9f64da3f4efcb5f935c0c20723ab68da07" + } + } + ] + } + ] + ], + "envelope": { + "d": "Endpw3gchsgljvx5qcffhfvuc2iam3fqdln2dol6zitfssz4fohsa", + "joule_cost": { + "measured_microjoules": 1200, + "estimated_microjoules": 1500 + }, + "provenance": { + "d": "Eyl2abuhbzbih3ao7hvjmgtjyzm4b5jeufdzafn6pme3j6id53z7q", + "cargo": { + "type": 1, + "bytes": { + "$bytes": "a1666d6963726f731a05f5e100" + } + }, + "nonce": { + "$bytes": "dcc74ebbcedebda361fb18a7abec95d9" + }, + "issuer": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "recipient": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "0188d2bbf7bf3ea95bb33866235bae150ac65c7371bc2776f17eb0944884cc8a4e7d402947d334d07e871acd0c305e6791d6e9b5747a683b6c58fc81f21dbcdd09" + } + } + ], + "establishment": 0 + } + }, + "ownership_chain": [ + { + "to": "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "from": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "frame": 2, + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01542818744f3c48fe12d750b35bf6a66cdebcc08196d471102888133fa81593870238514447840fa7e1701a79d3927ffa45d48b1310ea213a2c2def61c581d005" + } + } + ], + "establishment": 0 + }, + "destination": "Enldsomgkjdhwaeznqf2cyu6j7jqwmkbfrc2klavaaybu6rfzewkq", + "previous_history_hash": { + "$bytes": "c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f" + } + } + ] + }, + "certificate": { + "statement": { + "byte": "Eyl2abuhbzbih3ao7hvjmgtjyzm4b5jeufdzafn6pme3j6id53z7q", + "export": { + "cargo": { + "type": 1, + "bytes": { + "$bytes": "a1666d6963726f731a05f5e100" + } + }, + "owner": "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "issuer": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "minted": 0, + "exported": 2, + "destination": "Enldsomgkjdhwaeznqf2cyu6j7jqwmkbfrc2klavaaybu6rfzewkq", + "history_hash": { + "$bytes": "c987ece9b6cba695356c4c2a5c75498e9c4e419fd2e4d0a71fa76b4deeddcf2e" + } + }, + "source": "Egxiatblr23j5ow2lbioy2bgfm5nitq5ibhfs54fvhwkbhfsjjgtq" + }, + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01f85382d2971cdf49738b3fe12d9e4a139ea1c7c6c20e3a3ce87d616e4790f9d02f5416a51b9a1e654193df9fd6216209eeb35115158cabeb4e54997fc13ef50b" + } + }, + { + "index": 1, + "signature": { + "$bytes": "01c28be41843c7ddb6a49078d3749bd82c580bc57f93791d23ce3a699eb95b41a0eb6e050cacfe34f15889a8d6b81d10fced5d27d713020a42718696df1253ff02" + } + } + ] + } + } + }, + "cbor_hex": "a166696d706f7274a3646c6f67738281a2656576656e74ab616180616478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371616978354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371616b81582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a616e8178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f6161706061730061746369637061766b534259544531304a534f4e626b7401626e74016a7369676e61747572657381a265696e64657800697369676e6174757265584101e90f89475321e5febce3d271ccb2e304301d0975a6e49aa49a9e76f54ecf4d027097eda8d45ff0d0bf14c94d86f26d7100868c1af79bcfb609792e720e6b160481a2656576656e74ab61618061647835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f716161697835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161616b815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c616e81783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e7161706061730061746369637061766b534259544531304a534f4e626b7401626e74016a7369676e61747572657381a265696e64657800697369676e6174757265584101c0999c04eee90f056e29a2753f1a90665636394e819578d4cc2a2a40afb841b9a89a759b881adc095be848ba4ce9be9f64da3f4efcb5f935c0c20723ab68da0768656e76656c6f7065a461647835456e6470773367636873676c6a7678357163666668667675633269616d336671646c6e32646f6c367a69746673737a34666f6873616a6a6f756c655f636f7374a2746d656173757265645f6d6963726f6a6f756c65731904b075657374696d617465645f6d6963726f6a6f756c65731905dc6a70726f76656e616e6365a66164783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a377165636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656e6f6e636550dcc74ebbcedebda361fb18a7abec95d96669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637169726563697069656e747835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e617475726558410188d2bbf7bf3ea95bb33866235bae150ac65c7371bc2776f17eb0944884cc8a4e7d402947d334d07e871acd0c305e6791d6e9b5747a683b6c58fc81f21dbcdd096d65737461626c6973686d656e74006f6f776e6572736869705f636861696e81a662746f78354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716466726f6d7835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161656672616d6502697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e6174757265584101542818744f3c48fe12d750b35bf6a66cdebcc08196d471102888133fa81593870238514447840fa7e1701a79d3927ffa45d48b1310ea213a2c2def61c581d0056d65737461626c6973686d656e74006b64657374696e6174696f6e7835456e6c64736f6d676b6a64687761657a6e716632637975366a376a71776d6b62667263326b6c617661617962753672667a65776b717570726576696f75735f686973746f72795f686173685820c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f6b6365727469666963617465a26973746174656d656e74a36462797465783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771666578706f7274a765636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656f776e657278354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371666d696e74656400686578706f72746564026b64657374696e6174696f6e7835456e6c64736f6d676b6a64687761657a6e716632637975366a376a71776d6b62667263326b6c617661617962753672667a65776b716c686973746f72795f686173685820c987ece9b6cba695356c4c2a5c75498e9c4e419fd2e4d0a71fa76b4deeddcf2e66736f757263657835456778696174626c7232336a356f77326c62696f79326267666d356e6974713569626866733534667668776b626866736a6a6774716a7369676e61747572657382a265696e64657800697369676e6174757265584101f85382d2971cdf49738b3fe12d9e4a139ea1c7c6c20e3a3ce87d616e4790f9d02f5416a51b9a1e654193df9fd6216209eeb35115158cabeb4e54997fc13ef50ba265696e64657801697369676e6174757265584101c28be41843c7ddb6a49078d3749bd82c580bc57f93791d23ce3a699eb95b41a0eb6e050cacfe34f15889a8d6b81d10fced5d27d713020a42718696df1253ff02" + }, + { + "input": { + "import": { + "logs": [ + [ + { + "event": { + "a": [], + "d": "Ei473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "i": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "k": [ + { + "$bytes": "01d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a" + } + ], + "n": [ + "E4fnvjywz23zeyb426croyvctrtqsse237th3kfjid4pfeewx7noa" + ], + "p": "", + "s": 0, + "t": "icp", + "v": "SBYTE10JSON", + "kt": 1, + "nt": 1 + }, + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01e90f89475321e5febce3d271ccb2e304301d0975a6e49aa49a9e76f54ecf4d027097eda8d45ff0d0bf14c94d86f26d7100868c1af79bcfb609792e720e6b1604" + } + } + ] + } + ], + [ + { + "event": { + "a": [], + "d": "Ezxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "i": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "k": [ + { + "$bytes": "013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c" + } + ], + "n": [ + "Eqmsawig6oznh4b5cbovqukvzxa5u5jbiklkrlwhtdo6rbrsyjfnq" + ], + "p": "", + "s": 0, + "t": "icp", + "v": "SBYTE10JSON", + "kt": 1, + "nt": 1 + }, + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01c0999c04eee90f056e29a2753f1a90665636394e819578d4cc2a2a40afb841b9a89a759b881adc095be848ba4ce9be9f64da3f4efcb5f935c0c20723ab68da07" + } + } + ] + } + ] + ], + "envelope": { + "d": "Endpw3gchsgljvx5qcffhfvuc2iam3fqdln2dol6zitfssz4fohsa", + "joule_cost": { + "measured_microjoules": 1200, + "estimated_microjoules": 1500 + }, + "provenance": { + "d": "Eyl2abuhbzbih3ao7hvjmgtjyzm4b5jeufdzafn6pme3j6id53z7q", + "cargo": { + "type": 1, + "bytes": { + "$bytes": "a1666d6963726f731a05f5e100" + } + }, + "nonce": { + "$bytes": "dcc74ebbcedebda361fb18a7abec95d9" + }, + "issuer": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "recipient": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "0188d2bbf7bf3ea95bb33866235bae150ac65c7371bc2776f17eb0944884cc8a4e7d402947d334d07e871acd0c305e6791d6e9b5747a683b6c58fc81f21dbcdd09" + } + } + ], + "establishment": 0 + } + }, + "ownership_chain": [ + { + "to": "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "from": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "frame": 2, + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01542818744f3c48fe12d750b35bf6a66cdebcc08196d471102888133fa81593870238514447840fa7e1701a79d3927ffa45d48b1310ea213a2c2def61c581d005" + } + } + ], + "establishment": 0 + }, + "destination": "Enldsomgkjdhwaeznqf2cyu6j7jqwmkbfrc2klavaaybu6rfzewkq", + "previous_history_hash": { + "$bytes": "c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f" + } + } + ] + }, + "certificate": { + "statement": { + "byte": "Eyl2abuhbzbih3ao7hvjmgtjyzm4b5jeufdzafn6pme3j6id53z7q", + "export": { + "cargo": { + "type": 1, + "bytes": { + "$bytes": "a1666d6963726f731a05f5e100" + } + }, + "owner": "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "issuer": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "minted": 0, + "exported": 2, + "destination": "Ezjjgtlnkkszxragkqs7ilg6ca7m2kcpd7hrbbekvo4ggci7gvl2a", + "history_hash": { + "$bytes": "c987ece9b6cba695356c4c2a5c75498e9c4e419fd2e4d0a71fa76b4deeddcf2e" + } + }, + "source": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa" + }, + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "0180ada5a4e559fb2dde68ae959a3a8e08def63074c3b65e8f2f08fcfd240d53c215a040a2a414c59368988b47fcb00d8bfa402bd62b5ea75861ce5d8e14ddca01" + } + }, + { + "index": 1, + "signature": { + "$bytes": "01f3a2f76787fffda0a7fe3db879780af2017880b51ed81c84d85c6e8dff6ae4b908c6ef4e2371fac662a4ab63b99c7306bb8467176ad4e2bdfcab251c2891ca02" + } + }, + { + "index": 2, + "signature": { + "$bytes": "01e3c802e342a3a07139f7ca45be9c32893b76a919e076c52066a41299e0e30facfed46704eb7e0e92c2355a9a31a64ce4890ef35d277b1062a48c73402e52e50d" + } + } + ] + } + } + }, + "cbor_hex": "a166696d706f7274a3646c6f67738281a2656576656e74ab616180616478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371616978354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371616b81582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a616e8178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f6161706061730061746369637061766b534259544531304a534f4e626b7401626e74016a7369676e61747572657381a265696e64657800697369676e6174757265584101e90f89475321e5febce3d271ccb2e304301d0975a6e49aa49a9e76f54ecf4d027097eda8d45ff0d0bf14c94d86f26d7100868c1af79bcfb609792e720e6b160481a2656576656e74ab61618061647835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f716161697835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161616b815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c616e81783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e7161706061730061746369637061766b534259544531304a534f4e626b7401626e74016a7369676e61747572657381a265696e64657800697369676e6174757265584101c0999c04eee90f056e29a2753f1a90665636394e819578d4cc2a2a40afb841b9a89a759b881adc095be848ba4ce9be9f64da3f4efcb5f935c0c20723ab68da0768656e76656c6f7065a461647835456e6470773367636873676c6a7678357163666668667675633269616d336671646c6e32646f6c367a69746673737a34666f6873616a6a6f756c655f636f7374a2746d656173757265645f6d6963726f6a6f756c65731904b075657374696d617465645f6d6963726f6a6f756c65731905dc6a70726f76656e616e6365a66164783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a377165636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656e6f6e636550dcc74ebbcedebda361fb18a7abec95d96669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637169726563697069656e747835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e617475726558410188d2bbf7bf3ea95bb33866235bae150ac65c7371bc2776f17eb0944884cc8a4e7d402947d334d07e871acd0c305e6791d6e9b5747a683b6c58fc81f21dbcdd096d65737461626c6973686d656e74006f6f776e6572736869705f636861696e81a662746f78354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716466726f6d7835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161656672616d6502697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e6174757265584101542818744f3c48fe12d750b35bf6a66cdebcc08196d471102888133fa81593870238514447840fa7e1701a79d3927ffa45d48b1310ea213a2c2def61c581d0056d65737461626c6973686d656e74006b64657374696e6174696f6e7835456e6c64736f6d676b6a64687761657a6e716632637975366a376a71776d6b62667263326b6c617661617962753672667a65776b717570726576696f75735f686973746f72795f686173685820c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f6b6365727469666963617465a26973746174656d656e74a36462797465783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771666578706f7274a765636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656f776e657278354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371666d696e74656400686578706f72746564026b64657374696e6174696f6e7835457a6a6a67746c6e6b6b737a787261676b717337696c67366361376d326b6370643768726262656b766f34676763693767766c32616c686973746f72795f686173685820c987ece9b6cba695356c4c2a5c75498e9c4e419fd2e4d0a71fa76b4deeddcf2e66736f75726365783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616a7369676e61747572657383a265696e64657800697369676e617475726558410180ada5a4e559fb2dde68ae959a3a8e08def63074c3b65e8f2f08fcfd240d53c215a040a2a414c59368988b47fcb00d8bfa402bd62b5ea75861ce5d8e14ddca01a265696e64657801697369676e6174757265584101f3a2f76787fffda0a7fe3db879780af2017880b51ed81c84d85c6e8dff6ae4b908c6ef4e2371fac662a4ab63b99c7306bb8467176ad4e2bdfcab251c2891ca02a265696e64657802697369676e6174757265584101e3c802e342a3a07139f7ca45be9c32893b76a919e076c52066a41299e0e30facfed46704eb7e0e92c2355a9a31a64ce4890ef35d277b1062a48c73402e52e50d" + }, + { + "input": { + "import": { + "logs": [ + [ + { + "event": { + "a": [], + "d": "Ei473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "i": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "k": [ + { + "$bytes": "01d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a" + } + ], + "n": [ + "E4fnvjywz23zeyb426croyvctrtqsse237th3kfjid4pfeewx7noa" + ], + "p": "", + "s": 0, + "t": "icp", + "v": "SBYTE10JSON", + "kt": 1, + "nt": 1 + }, + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01e90f89475321e5febce3d271ccb2e304301d0975a6e49aa49a9e76f54ecf4d027097eda8d45ff0d0bf14c94d86f26d7100868c1af79bcfb609792e720e6b1604" + } + } + ] + } + ], + [ + { + "event": { + "a": [], + "d": "Ezxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "i": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "k": [ + { + "$bytes": "013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c" + } + ], + "n": [ + "Eqmsawig6oznh4b5cbovqukvzxa5u5jbiklkrlwhtdo6rbrsyjfnq" + ], + "p": "", + "s": 0, + "t": "icp", + "v": "SBYTE10JSON", + "kt": 1, + "nt": 1 + }, + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01c0999c04eee90f056e29a2753f1a90665636394e819578d4cc2a2a40afb841b9a89a759b881adc095be848ba4ce9be9f64da3f4efcb5f935c0c20723ab68da07" + } + } + ] + } + ] + ], + "envelope": { + "d": "Endpw3gchsgljvx5qcffhfvuc2iam3fqdln2dol6zitfssz4fohsa", + "joule_cost": { + "measured_microjoules": 1200, + "estimated_microjoules": 1500 + }, + "provenance": { + "d": "Eyl2abuhbzbih3ao7hvjmgtjyzm4b5jeufdzafn6pme3j6id53z7q", + "cargo": { + "type": 1, + "bytes": { + "$bytes": "a1666d6963726f731a05f5e100" + } + }, + "nonce": { + "$bytes": "dcc74ebbcedebda361fb18a7abec95d9" + }, + "issuer": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "recipient": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "0188d2bbf7bf3ea95bb33866235bae150ac65c7371bc2776f17eb0944884cc8a4e7d402947d334d07e871acd0c305e6791d6e9b5747a683b6c58fc81f21dbcdd09" + } + } + ], + "establishment": 0 + } + }, + "ownership_chain": [ + { + "to": "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "from": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "frame": 2, + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01542818744f3c48fe12d750b35bf6a66cdebcc08196d471102888133fa81593870238514447840fa7e1701a79d3927ffa45d48b1310ea213a2c2def61c581d005" + } + } + ], + "establishment": 0 + }, + "destination": "Enldsomgkjdhwaeznqf2cyu6j7jqwmkbfrc2klavaaybu6rfzewkq", + "previous_history_hash": { + "$bytes": "c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f" + } + } + ] + }, + "certificate": { + "statement": { + "byte": "Eyl2abuhbzbih3ao7hvjmgtjyzm4b5jeufdzafn6pme3j6id53z7q", + "export": { + "cargo": { + "type": 1, + "bytes": { + "$bytes": "a1666d6963726f731a05f5e100" + } + }, + "owner": "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "issuer": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "minted": 0, + "exported": 2, + "destination": "Enldsomgkjdhwaeznqf2cyu6j7jqwmkbfrc2klavaaybu6rfzewkq", + "history_hash": { + "$bytes": "c987ece9b6cba695356c4c2a5c75498e9c4e419fd2e4d0a71fa76b4deeddcf2e" + } + }, + "source": "Ezjjgtlnkkszxragkqs7ilg6ca7m2kcpd7hrbbekvo4ggci7gvl2a" + }, + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "0171a3d8d76b583ddc259cef720d9e18798be055be7ba4105b7c3d456b6e77de92799735564ec3532ab68ad717943993ed58b84a2420e1e4f634e4439ca3f06302" + } + }, + { + "index": 1, + "signature": { + "$bytes": "01623aff60eeac5280878272b9bd047930636f0bac353b672f4726a30c92af5e087d7865deaa3f64fc5e3c2aacf0142ffcfabf456d339600b31f45476cc4080009" + } + }, + { + "index": 2, + "signature": { + "$bytes": "01b8fd41f2d18d9e422e783125fc25d804a2262f1d14372e791824e92e732d4ebc684f15beb15cf8b6d3de9293ffb4ca9457e4563b1a46a653559b4a7da3357701" + } + } + ] + } + } + }, + "cbor_hex": "a166696d706f7274a3646c6f67738281a2656576656e74ab616180616478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371616978354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371616b81582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a616e8178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f6161706061730061746369637061766b534259544531304a534f4e626b7401626e74016a7369676e61747572657381a265696e64657800697369676e6174757265584101e90f89475321e5febce3d271ccb2e304301d0975a6e49aa49a9e76f54ecf4d027097eda8d45ff0d0bf14c94d86f26d7100868c1af79bcfb609792e720e6b160481a2656576656e74ab61618061647835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f716161697835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161616b815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c616e81783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e7161706061730061746369637061766b534259544531304a534f4e626b7401626e74016a7369676e61747572657381a265696e64657800697369676e6174757265584101c0999c04eee90f056e29a2753f1a90665636394e819578d4cc2a2a40afb841b9a89a759b881adc095be848ba4ce9be9f64da3f4efcb5f935c0c20723ab68da0768656e76656c6f7065a461647835456e6470773367636873676c6a7678357163666668667675633269616d336671646c6e32646f6c367a69746673737a34666f6873616a6a6f756c655f636f7374a2746d656173757265645f6d6963726f6a6f756c65731904b075657374696d617465645f6d6963726f6a6f756c65731905dc6a70726f76656e616e6365a66164783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a377165636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656e6f6e636550dcc74ebbcedebda361fb18a7abec95d96669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637169726563697069656e747835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e617475726558410188d2bbf7bf3ea95bb33866235bae150ac65c7371bc2776f17eb0944884cc8a4e7d402947d334d07e871acd0c305e6791d6e9b5747a683b6c58fc81f21dbcdd096d65737461626c6973686d656e74006f6f776e6572736869705f636861696e81a662746f78354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716466726f6d7835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161656672616d6502697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e6174757265584101542818744f3c48fe12d750b35bf6a66cdebcc08196d471102888133fa81593870238514447840fa7e1701a79d3927ffa45d48b1310ea213a2c2def61c581d0056d65737461626c6973686d656e74006b64657374696e6174696f6e7835456e6c64736f6d676b6a64687761657a6e716632637975366a376a71776d6b62667263326b6c617661617962753672667a65776b717570726576696f75735f686973746f72795f686173685820c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f6b6365727469666963617465a26973746174656d656e74a36462797465783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771666578706f7274a765636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656f776e657278354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371666d696e74656400686578706f72746564026b64657374696e6174696f6e7835456e6c64736f6d676b6a64687761657a6e716632637975366a376a71776d6b62667263326b6c617661617962753672667a65776b716c686973746f72795f686173685820c987ece9b6cba695356c4c2a5c75498e9c4e419fd2e4d0a71fa76b4deeddcf2e66736f757263657835457a6a6a67746c6e6b6b737a787261676b717337696c67366361376d326b6370643768726262656b766f34676763693767766c32616a7369676e61747572657383a265696e64657800697369676e617475726558410171a3d8d76b583ddc259cef720d9e18798be055be7ba4105b7c3d456b6e77de92799735564ec3532ab68ad717943993ed58b84a2420e1e4f634e4439ca3f06302a265696e64657801697369676e6174757265584101623aff60eeac5280878272b9bd047930636f0bac353b672f4726a30c92af5e087d7865deaa3f64fc5e3c2aacf0142ffcfabf456d339600b31f45476cc4080009a265696e64657802697369676e6174757265584101b8fd41f2d18d9e422e783125fc25d804a2262f1d14372e791824e92e732d4ebc684f15beb15cf8b6d3de9293ffb4ca9457e4563b1a46a653559b4a7da3357701" + }, + { + "input": { + "import": { + "logs": [ + [ + { + "event": { + "a": [], + "d": "Ei473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "i": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "k": [ + { + "$bytes": "01d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a" + } + ], + "n": [ + "E4fnvjywz23zeyb426croyvctrtqsse237th3kfjid4pfeewx7noa" + ], + "p": "", + "s": 0, + "t": "icp", + "v": "SBYTE10JSON", + "kt": 1, + "nt": 1 + }, + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01e90f89475321e5febce3d271ccb2e304301d0975a6e49aa49a9e76f54ecf4d027097eda8d45ff0d0bf14c94d86f26d7100868c1af79bcfb609792e720e6b1604" + } + } + ] + } + ], + [ + { + "event": { + "a": [], + "d": "Ezxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "i": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "k": [ + { + "$bytes": "013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c" + } + ], + "n": [ + "Eqmsawig6oznh4b5cbovqukvzxa5u5jbiklkrlwhtdo6rbrsyjfnq" + ], + "p": "", + "s": 0, + "t": "icp", + "v": "SBYTE10JSON", + "kt": 1, + "nt": 1 + }, + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01c0999c04eee90f056e29a2753f1a90665636394e819578d4cc2a2a40afb841b9a89a759b881adc095be848ba4ce9be9f64da3f4efcb5f935c0c20723ab68da07" + } + } + ] + } + ] + ], + "envelope": { + "d": "Erqli3pxnbfezip4pupex4yowmnp7icyzskbodacataepytrmifpa", + "joule_cost": { + "measured_microjoules": 1200, + "estimated_microjoules": 1500 + }, + "provenance": { + "d": "Eyl2abuhbzbih3ao7hvjmgtjyzm4b5jeufdzafn6pme3j6id53z7q", + "cargo": { + "type": 1, + "bytes": { + "$bytes": "a1666d6963726f731a05f5e100" + } + }, + "nonce": { + "$bytes": "dcc74ebbcedebda361fb18a7abec95d9" + }, + "issuer": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "recipient": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "0188d2bbf7bf3ea95bb33866235bae150ac65c7371bc2776f17eb0944884cc8a4e7d402947d334d07e871acd0c305e6791d6e9b5747a683b6c58fc81f21dbcdd09" + } + } + ], + "establishment": 0 + } + }, + "ownership_chain": [] + }, + "certificate": { + "statement": { + "byte": "Eyl2abuhbzbih3ao7hvjmgtjyzm4b5jeufdzafn6pme3j6id53z7q", + "export": { + "cargo": { + "type": 1, + "bytes": { + "$bytes": "a1666d6963726f731a05f5e100" + } + }, + "owner": "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "issuer": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "minted": 0, + "exported": 2, + "destination": "Enldsomgkjdhwaeznqf2cyu6j7jqwmkbfrc2klavaaybu6rfzewkq", + "history_hash": { + "$bytes": "c987ece9b6cba695356c4c2a5c75498e9c4e419fd2e4d0a71fa76b4deeddcf2e" + } + }, + "source": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa" + }, + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "017b69b164060e1c6a75a9179fe02aa77fe9c54bf29586299f1d7260059506800b40b7b31e4a88836192a333e09c33a12f708138d256bf0b3fe33cd0dab4bb760f" + } + }, + { + "index": 1, + "signature": { + "$bytes": "015d0d531d5767f40057d105d7a922bc63a3cc747a74bfa25326a4d72a5dae6f36c6221544f78c05e69c3c9616b486497dffad5259e6d557a922b402ab9621330b" + } + }, + { + "index": 2, + "signature": { + "$bytes": "0104023a7b6779e77ecf9d9d2cca87e31b6c12b33dcf308af95020b343a87959cda9574517db9198244223edf32751653f9f823ea490977dc3ff711e8e22d1e708" + } + } + ] + } + } + }, + "cbor_hex": "a166696d706f7274a3646c6f67738281a2656576656e74ab616180616478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371616978354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371616b81582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a616e8178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f6161706061730061746369637061766b534259544531304a534f4e626b7401626e74016a7369676e61747572657381a265696e64657800697369676e6174757265584101e90f89475321e5febce3d271ccb2e304301d0975a6e49aa49a9e76f54ecf4d027097eda8d45ff0d0bf14c94d86f26d7100868c1af79bcfb609792e720e6b160481a2656576656e74ab61618061647835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f716161697835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161616b815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c616e81783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e7161706061730061746369637061766b534259544531304a534f4e626b7401626e74016a7369676e61747572657381a265696e64657800697369676e6174757265584101c0999c04eee90f056e29a2753f1a90665636394e819578d4cc2a2a40afb841b9a89a759b881adc095be848ba4ce9be9f64da3f4efcb5f935c0c20723ab68da0768656e76656c6f7065a4616478354572716c693370786e6266657a697034707570657834796f776d6e70376963797a736b626f64616361746165707974726d696670616a6a6f756c655f636f7374a2746d656173757265645f6d6963726f6a6f756c65731904b075657374696d617465645f6d6963726f6a6f756c65731905dc6a70726f76656e616e6365a66164783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a377165636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656e6f6e636550dcc74ebbcedebda361fb18a7abec95d96669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637169726563697069656e747835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e617475726558410188d2bbf7bf3ea95bb33866235bae150ac65c7371bc2776f17eb0944884cc8a4e7d402947d334d07e871acd0c305e6791d6e9b5747a683b6c58fc81f21dbcdd096d65737461626c6973686d656e74006f6f776e6572736869705f636861696e806b6365727469666963617465a26973746174656d656e74a36462797465783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771666578706f7274a765636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656f776e657278354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371666d696e74656400686578706f72746564026b64657374696e6174696f6e7835456e6c64736f6d676b6a64687761657a6e716632637975366a376a71776d6b62667263326b6c617661617962753672667a65776b716c686973746f72795f686173685820c987ece9b6cba695356c4c2a5c75498e9c4e419fd2e4d0a71fa76b4deeddcf2e66736f75726365783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616a7369676e61747572657383a265696e64657800697369676e61747572655841017b69b164060e1c6a75a9179fe02aa77fe9c54bf29586299f1d7260059506800b40b7b31e4a88836192a333e09c33a12f708138d256bf0b3fe33cd0dab4bb760fa265696e64657801697369676e61747572655841015d0d531d5767f40057d105d7a922bc63a3cc747a74bfa25326a4d72a5dae6f36c6221544f78c05e69c3c9616b486497dffad5259e6d557a922b402ab9621330ba265696e64657802697369676e617475726558410104023a7b6779e77ecf9d9d2cca87e31b6c12b33dcf308af95020b343a87959cda9574517db9198244223edf32751653f9f823ea490977dc3ff711e8e22d1e708" + }, + { + "input": { + "import": { + "logs": [ + [ + { + "event": { + "a": [], + "d": "Ei473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "i": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "k": [ + { + "$bytes": "01d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a" + } + ], + "n": [ + "E4fnvjywz23zeyb426croyvctrtqsse237th3kfjid4pfeewx7noa" + ], + "p": "", + "s": 0, + "t": "icp", + "v": "SBYTE10JSON", + "kt": 1, + "nt": 1 + }, + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01e90f89475321e5febce3d271ccb2e304301d0975a6e49aa49a9e76f54ecf4d027097eda8d45ff0d0bf14c94d86f26d7100868c1af79bcfb609792e720e6b1604" + } + } + ] + } + ], + [ + { + "event": { + "a": [], + "d": "Ezxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "i": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "k": [ + { + "$bytes": "013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c" + } + ], + "n": [ + "Eqmsawig6oznh4b5cbovqukvzxa5u5jbiklkrlwhtdo6rbrsyjfnq" + ], + "p": "", + "s": 0, + "t": "icp", + "v": "SBYTE10JSON", + "kt": 1, + "nt": 1 + }, + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01c0999c04eee90f056e29a2753f1a90665636394e819578d4cc2a2a40afb841b9a89a759b881adc095be848ba4ce9be9f64da3f4efcb5f935c0c20723ab68da07" + } + } + ] + } + ] + ], + "envelope": { + "d": "Endpw3gchsgljvx5qcffhfvuc2iam3fqdln2dol6zitfssz4fohsa", + "joule_cost": { + "measured_microjoules": 1200, + "estimated_microjoules": 1500 + }, + "provenance": { + "d": "Eyl2abuhbzbih3ao7hvjmgtjyzm4b5jeufdzafn6pme3j6id53z7q", + "cargo": { + "type": 1, + "bytes": { + "$bytes": "a1666d6963726f731a05f5e100" + } + }, + "nonce": { + "$bytes": "dcc74ebbcedebda361fb18a7abec95d9" + }, + "issuer": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "recipient": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "0188d2bbf7bf3ea95bb33866235bae150ac65c7371bc2776f17eb0944884cc8a4e7d402947d334d07e871acd0c305e6791d6e9b5747a683b6c58fc81f21dbcdd09" + } + } + ], + "establishment": 0 + } + }, + "ownership_chain": [ + { + "to": "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "from": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "frame": 2, + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01542818744f3c48fe12d750b35bf6a66cdebcc08196d471102888133fa81593870238514447840fa7e1701a79d3927ffa45d48b1310ea213a2c2def61c581d005" + } + } + ], + "establishment": 0 + }, + "destination": "Enldsomgkjdhwaeznqf2cyu6j7jqwmkbfrc2klavaaybu6rfzewkq", + "previous_history_hash": { + "$bytes": "c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f" + } + } + ] + }, + "certificate": { + "statement": { + "byte": "Eer4tckfku7xcdkcrxjwlovurkncdrxeehihvu6hrkfhpsj45m6sq", + "export": { + "cargo": { + "type": 1, + "bytes": { + "$bytes": "a1666d6963726f731a05f5e100" + } + }, + "owner": "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "issuer": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "minted": 0, + "exported": 2, + "destination": "Enldsomgkjdhwaeznqf2cyu6j7jqwmkbfrc2klavaaybu6rfzewkq", + "history_hash": { + "$bytes": "c987ece9b6cba695356c4c2a5c75498e9c4e419fd2e4d0a71fa76b4deeddcf2e" + } + }, + "source": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa" + }, + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01852003702a9ba4ed7d6b1c4324c32dd58491b9f4e2c631840ec2c3b631e8adb55a297506c43d9c7ec6c6b5d77f7cce07eb2075c52be5db40d38c18bc25971006" + } + }, + { + "index": 1, + "signature": { + "$bytes": "0110eecf47f01182f3101bde93986a6823745faf14c5c0b45f1a92a91518579701225798a0ead4c83a70589066cc382e0617e046bd43684a9485df9f11f7598c0f" + } + }, + { + "index": 2, + "signature": { + "$bytes": "0197f8fc0fba9d3de7eff678d53d12fcd196f34e79b8b5edcc8fc667d6cc196384c51d39ce07071754362491a93278ccccdfde260265c7d73aa4da8e5f0c6b540b" + } + } + ] + } + } + }, + "cbor_hex": "a166696d706f7274a3646c6f67738281a2656576656e74ab616180616478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371616978354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371616b81582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a616e8178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f6161706061730061746369637061766b534259544531304a534f4e626b7401626e74016a7369676e61747572657381a265696e64657800697369676e6174757265584101e90f89475321e5febce3d271ccb2e304301d0975a6e49aa49a9e76f54ecf4d027097eda8d45ff0d0bf14c94d86f26d7100868c1af79bcfb609792e720e6b160481a2656576656e74ab61618061647835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f716161697835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161616b815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c616e81783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e7161706061730061746369637061766b534259544531304a534f4e626b7401626e74016a7369676e61747572657381a265696e64657800697369676e6174757265584101c0999c04eee90f056e29a2753f1a90665636394e819578d4cc2a2a40afb841b9a89a759b881adc095be848ba4ce9be9f64da3f4efcb5f935c0c20723ab68da0768656e76656c6f7065a461647835456e6470773367636873676c6a7678357163666668667675633269616d336671646c6e32646f6c367a69746673737a34666f6873616a6a6f756c655f636f7374a2746d656173757265645f6d6963726f6a6f756c65731904b075657374696d617465645f6d6963726f6a6f756c65731905dc6a70726f76656e616e6365a66164783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a377165636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656e6f6e636550dcc74ebbcedebda361fb18a7abec95d96669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637169726563697069656e747835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e617475726558410188d2bbf7bf3ea95bb33866235bae150ac65c7371bc2776f17eb0944884cc8a4e7d402947d334d07e871acd0c305e6791d6e9b5747a683b6c58fc81f21dbcdd096d65737461626c6973686d656e74006f6f776e6572736869705f636861696e81a662746f78354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716466726f6d7835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161656672616d6502697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e6174757265584101542818744f3c48fe12d750b35bf6a66cdebcc08196d471102888133fa81593870238514447840fa7e1701a79d3927ffa45d48b1310ea213a2c2def61c581d0056d65737461626c6973686d656e74006b64657374696e6174696f6e7835456e6c64736f6d676b6a64687761657a6e716632637975366a376a71776d6b62667263326b6c617661617962753672667a65776b717570726576696f75735f686973746f72795f686173685820c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f6b6365727469666963617465a26973746174656d656e74a3646279746578354565723474636b666b75377863646b6372786a776c6f7675726b6e63647278656568696876753668726b666870736a34356d367371666578706f7274a765636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656f776e657278354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371666d696e74656400686578706f72746564026b64657374696e6174696f6e7835456e6c64736f6d676b6a64687761657a6e716632637975366a376a71776d6b62667263326b6c617661617962753672667a65776b716c686973746f72795f686173685820c987ece9b6cba695356c4c2a5c75498e9c4e419fd2e4d0a71fa76b4deeddcf2e66736f75726365783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616a7369676e61747572657383a265696e64657800697369676e6174757265584101852003702a9ba4ed7d6b1c4324c32dd58491b9f4e2c631840ec2c3b631e8adb55a297506c43d9c7ec6c6b5d77f7cce07eb2075c52be5db40d38c18bc25971006a265696e64657801697369676e617475726558410110eecf47f01182f3101bde93986a6823745faf14c5c0b45f1a92a91518579701225798a0ead4c83a70589066cc382e0617e046bd43684a9485df9f11f7598c0fa265696e64657802697369676e617475726558410197f8fc0fba9d3de7eff678d53d12fcd196f34e79b8b5edcc8fc667d6cc196384c51d39ce07071754362491a93278ccccdfde260265c7d73aa4da8e5f0c6b540b" + }, + { + "input": { + "import": { + "logs": [ + [ + { + "event": { + "a": [], + "d": "Ei473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "i": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "k": [ + { + "$bytes": "01d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a" + } + ], + "n": [ + "E4fnvjywz23zeyb426croyvctrtqsse237th3kfjid4pfeewx7noa" + ], + "p": "", + "s": 0, + "t": "icp", + "v": "SBYTE10JSON", + "kt": 1, + "nt": 1 + }, + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01e90f89475321e5febce3d271ccb2e304301d0975a6e49aa49a9e76f54ecf4d027097eda8d45ff0d0bf14c94d86f26d7100868c1af79bcfb609792e720e6b1604" + } + } + ] + } + ], + [ + { + "event": { + "a": [], + "d": "Ezxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "i": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "k": [ + { + "$bytes": "013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c" + } + ], + "n": [ + "Eqmsawig6oznh4b5cbovqukvzxa5u5jbiklkrlwhtdo6rbrsyjfnq" + ], + "p": "", + "s": 0, + "t": "icp", + "v": "SBYTE10JSON", + "kt": 1, + "nt": 1 + }, + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01c0999c04eee90f056e29a2753f1a90665636394e819578d4cc2a2a40afb841b9a89a759b881adc095be848ba4ce9be9f64da3f4efcb5f935c0c20723ab68da07" + } + } + ] + } + ] + ], + "envelope": { + "d": "Endpw3gchsgljvx5qcffhfvuc2iam3fqdln2dol6zitfssz4fohsa", + "joule_cost": { + "measured_microjoules": 1200, + "estimated_microjoules": 1500 + }, + "provenance": { + "d": "Eyl2abuhbzbih3ao7hvjmgtjyzm4b5jeufdzafn6pme3j6id53z7q", + "cargo": { + "type": 1, + "bytes": { + "$bytes": "a1666d6963726f731a05f5e100" + } + }, + "nonce": { + "$bytes": "dcc74ebbcedebda361fb18a7abec95d9" + }, + "issuer": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "recipient": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "0188d2bbf7bf3ea95bb33866235bae150ac65c7371bc2776f17eb0944884cc8a4e7d402947d334d07e871acd0c305e6791d6e9b5747a683b6c58fc81f21dbcdd09" + } + } + ], + "establishment": 0 + } + }, + "ownership_chain": [ + { + "to": "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "from": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "frame": 2, + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01542818744f3c48fe12d750b35bf6a66cdebcc08196d471102888133fa81593870238514447840fa7e1701a79d3927ffa45d48b1310ea213a2c2def61c581d005" + } + } + ], + "establishment": 0 + }, + "destination": "Enldsomgkjdhwaeznqf2cyu6j7jqwmkbfrc2klavaaybu6rfzewkq", + "previous_history_hash": { + "$bytes": "c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f" + } + } + ] + }, + "certificate": { + "statement": { + "byte": "Eyl2abuhbzbih3ao7hvjmgtjyzm4b5jeufdzafn6pme3j6id53z7q", + "export": { + "cargo": { + "type": 1, + "bytes": { + "$bytes": "a1666d6963726f731a05f5e100" + } + }, + "owner": "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "issuer": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "minted": 0, + "exported": 2, + "destination": "Enldsomgkjdhwaeznqf2cyu6j7jqwmkbfrc2klavaaybu6rfzewkq", + "history_hash": { + "$bytes": "c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f" + } + }, + "source": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa" + }, + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01ea4c3df565a69d44b21699b8c98dcd444717c0507eb7f9a39964fce2539b1b9edd4ae10e7f8fb6ae6aaf9780ad287ba88049266693f160ace903c638e84bea0c" + } + }, + { + "index": 1, + "signature": { + "$bytes": "01432f122e39ca4a12d0d212bcf162b575e63d6232777a280d5420409043fbe96ee7b4e964d136050fce94003901ecf64f01edaa06d483021edf838cc8bf708202" + } + }, + { + "index": 2, + "signature": { + "$bytes": "01cacd55cfdb6462ca0aedde751c93173725b59f74c02c1b3430fe787ff90f8fae0ed65b46ec905e82cb5bf9926b949e91212dd14491d0e7d02784572bdccac707" + } + } + ] + } + } + }, + "cbor_hex": "a166696d706f7274a3646c6f67738281a2656576656e74ab616180616478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371616978354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371616b81582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a616e8178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f6161706061730061746369637061766b534259544531304a534f4e626b7401626e74016a7369676e61747572657381a265696e64657800697369676e6174757265584101e90f89475321e5febce3d271ccb2e304301d0975a6e49aa49a9e76f54ecf4d027097eda8d45ff0d0bf14c94d86f26d7100868c1af79bcfb609792e720e6b160481a2656576656e74ab61618061647835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f716161697835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161616b815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c616e81783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e7161706061730061746369637061766b534259544531304a534f4e626b7401626e74016a7369676e61747572657381a265696e64657800697369676e6174757265584101c0999c04eee90f056e29a2753f1a90665636394e819578d4cc2a2a40afb841b9a89a759b881adc095be848ba4ce9be9f64da3f4efcb5f935c0c20723ab68da0768656e76656c6f7065a461647835456e6470773367636873676c6a7678357163666668667675633269616d336671646c6e32646f6c367a69746673737a34666f6873616a6a6f756c655f636f7374a2746d656173757265645f6d6963726f6a6f756c65731904b075657374696d617465645f6d6963726f6a6f756c65731905dc6a70726f76656e616e6365a66164783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a377165636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656e6f6e636550dcc74ebbcedebda361fb18a7abec95d96669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637169726563697069656e747835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e617475726558410188d2bbf7bf3ea95bb33866235bae150ac65c7371bc2776f17eb0944884cc8a4e7d402947d334d07e871acd0c305e6791d6e9b5747a683b6c58fc81f21dbcdd096d65737461626c6973686d656e74006f6f776e6572736869705f636861696e81a662746f78354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716466726f6d7835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161656672616d6502697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e6174757265584101542818744f3c48fe12d750b35bf6a66cdebcc08196d471102888133fa81593870238514447840fa7e1701a79d3927ffa45d48b1310ea213a2c2def61c581d0056d65737461626c6973686d656e74006b64657374696e6174696f6e7835456e6c64736f6d676b6a64687761657a6e716632637975366a376a71776d6b62667263326b6c617661617962753672667a65776b717570726576696f75735f686973746f72795f686173685820c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f6b6365727469666963617465a26973746174656d656e74a36462797465783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771666578706f7274a765636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656f776e657278354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371666d696e74656400686578706f72746564026b64657374696e6174696f6e7835456e6c64736f6d676b6a64687761657a6e716632637975366a376a71776d6b62667263326b6c617661617962753672667a65776b716c686973746f72795f686173685820c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f66736f75726365783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616a7369676e61747572657383a265696e64657800697369676e6174757265584101ea4c3df565a69d44b21699b8c98dcd444717c0507eb7f9a39964fce2539b1b9edd4ae10e7f8fb6ae6aaf9780ad287ba88049266693f160ace903c638e84bea0ca265696e64657801697369676e6174757265584101432f122e39ca4a12d0d212bcf162b575e63d6232777a280d5420409043fbe96ee7b4e964d136050fce94003901ecf64f01edaa06d483021edf838cc8bf708202a265696e64657802697369676e6174757265584101cacd55cfdb6462ca0aedde751c93173725b59f74c02c1b3430fe787ff90f8fae0ed65b46ec905e82cb5bf9926b949e91212dd14491d0e7d02784572bdccac707" + }, + { + "input": { + "import": { + "logs": [ + [ + { + "event": { + "a": [], + "d": "Ei473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "i": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "k": [ + { + "$bytes": "01d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a" + } + ], + "n": [ + "E4fnvjywz23zeyb426croyvctrtqsse237th3kfjid4pfeewx7noa" + ], + "p": "", + "s": 0, + "t": "icp", + "v": "SBYTE10JSON", + "kt": 1, + "nt": 1 + }, + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01e90f89475321e5febce3d271ccb2e304301d0975a6e49aa49a9e76f54ecf4d027097eda8d45ff0d0bf14c94d86f26d7100868c1af79bcfb609792e720e6b1604" + } + } + ] + } + ], + [ + { + "event": { + "a": [], + "d": "Ezxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "i": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "k": [ + { + "$bytes": "013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c" + } + ], + "n": [ + "Eqmsawig6oznh4b5cbovqukvzxa5u5jbiklkrlwhtdo6rbrsyjfnq" + ], + "p": "", + "s": 0, + "t": "icp", + "v": "SBYTE10JSON", + "kt": 1, + "nt": 1 + }, + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01c0999c04eee90f056e29a2753f1a90665636394e819578d4cc2a2a40afb841b9a89a759b881adc095be848ba4ce9be9f64da3f4efcb5f935c0c20723ab68da07" + } + } + ] + } + ] + ], + "envelope": { + "d": "Endpw3gchsgljvx5qcffhfvuc2iam3fqdln2dol6zitfssz4fohsa", + "joule_cost": { + "measured_microjoules": 1200, + "estimated_microjoules": 1500 + }, + "provenance": { + "d": "Eyl2abuhbzbih3ao7hvjmgtjyzm4b5jeufdzafn6pme3j6id53z7q", + "cargo": { + "type": 1, + "bytes": { + "$bytes": "a1666d6963726f731a05f5e100" + } + }, + "nonce": { + "$bytes": "dcc74ebbcedebda361fb18a7abec95d9" + }, + "issuer": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "recipient": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "0188d2bbf7bf3ea95bb33866235bae150ac65c7371bc2776f17eb0944884cc8a4e7d402947d334d07e871acd0c305e6791d6e9b5747a683b6c58fc81f21dbcdd09" + } + } + ], + "establishment": 0 + } + }, + "ownership_chain": [ + { + "to": "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "from": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "frame": 2, + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01542818744f3c48fe12d750b35bf6a66cdebcc08196d471102888133fa81593870238514447840fa7e1701a79d3927ffa45d48b1310ea213a2c2def61c581d005" + } + } + ], + "establishment": 0 + }, + "destination": "Enldsomgkjdhwaeznqf2cyu6j7jqwmkbfrc2klavaaybu6rfzewkq", + "previous_history_hash": { + "$bytes": "c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f" + } + } + ] + }, + "certificate": { + "statement": { + "byte": "Eyl2abuhbzbih3ao7hvjmgtjyzm4b5jeufdzafn6pme3j6id53z7q", + "export": { + "cargo": { + "type": 1, + "bytes": { + "$bytes": "a1666d6963726f731a05f5e100" + } + }, + "owner": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "issuer": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "minted": 0, + "exported": 2, + "destination": "Enldsomgkjdhwaeznqf2cyu6j7jqwmkbfrc2klavaaybu6rfzewkq", + "history_hash": { + "$bytes": "c987ece9b6cba695356c4c2a5c75498e9c4e419fd2e4d0a71fa76b4deeddcf2e" + } + }, + "source": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa" + }, + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "010dbb4fd11e92f10f3baf4a3a567262d7e46f3577af68e86a8580cc323b0db4951fdf01b406d6603e6394fe908c16e9d0b36a2c1609520dca1f9ff2c53073d40b" + } + }, + { + "index": 1, + "signature": { + "$bytes": "018c3267736b89bbcf0646fb1537e1096f4631eabf4ebef42717a6605d34060a43855c913b229091110dc5d61c45c778ae6c20226ae53ad67db798eea3af10d00a" + } + }, + { + "index": 2, + "signature": { + "$bytes": "01647378e4ff1a7019ab4ac8a41ebf2f014dd737a0edab3719b93072b0b80f9d03ceddd730f9dcadf6d84c95d0fed95750bcdfe25364ce7c27ecbaa5470e883102" + } + } + ] + } + } + }, + "cbor_hex": "a166696d706f7274a3646c6f67738281a2656576656e74ab616180616478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371616978354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371616b81582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a616e8178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f6161706061730061746369637061766b534259544531304a534f4e626b7401626e74016a7369676e61747572657381a265696e64657800697369676e6174757265584101e90f89475321e5febce3d271ccb2e304301d0975a6e49aa49a9e76f54ecf4d027097eda8d45ff0d0bf14c94d86f26d7100868c1af79bcfb609792e720e6b160481a2656576656e74ab61618061647835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f716161697835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161616b815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c616e81783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e7161706061730061746369637061766b534259544531304a534f4e626b7401626e74016a7369676e61747572657381a265696e64657800697369676e6174757265584101c0999c04eee90f056e29a2753f1a90665636394e819578d4cc2a2a40afb841b9a89a759b881adc095be848ba4ce9be9f64da3f4efcb5f935c0c20723ab68da0768656e76656c6f7065a461647835456e6470773367636873676c6a7678357163666668667675633269616d336671646c6e32646f6c367a69746673737a34666f6873616a6a6f756c655f636f7374a2746d656173757265645f6d6963726f6a6f756c65731904b075657374696d617465645f6d6963726f6a6f756c65731905dc6a70726f76656e616e6365a66164783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a377165636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656e6f6e636550dcc74ebbcedebda361fb18a7abec95d96669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637169726563697069656e747835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e617475726558410188d2bbf7bf3ea95bb33866235bae150ac65c7371bc2776f17eb0944884cc8a4e7d402947d334d07e871acd0c305e6791d6e9b5747a683b6c58fc81f21dbcdd096d65737461626c6973686d656e74006f6f776e6572736869705f636861696e81a662746f78354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716466726f6d7835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161656672616d6502697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e6174757265584101542818744f3c48fe12d750b35bf6a66cdebcc08196d471102888133fa81593870238514447840fa7e1701a79d3927ffa45d48b1310ea213a2c2def61c581d0056d65737461626c6973686d656e74006b64657374696e6174696f6e7835456e6c64736f6d676b6a64687761657a6e716632637975366a376a71776d6b62667263326b6c617661617962753672667a65776b717570726576696f75735f686973746f72795f686173685820c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f6b6365727469666963617465a26973746174656d656e74a36462797465783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771666578706f7274a765636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656f776e65727835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371666d696e74656400686578706f72746564026b64657374696e6174696f6e7835456e6c64736f6d676b6a64687761657a6e716632637975366a376a71776d6b62667263326b6c617661617962753672667a65776b716c686973746f72795f686173685820c987ece9b6cba695356c4c2a5c75498e9c4e419fd2e4d0a71fa76b4deeddcf2e66736f75726365783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616a7369676e61747572657383a265696e64657800697369676e61747572655841010dbb4fd11e92f10f3baf4a3a567262d7e46f3577af68e86a8580cc323b0db4951fdf01b406d6603e6394fe908c16e9d0b36a2c1609520dca1f9ff2c53073d40ba265696e64657801697369676e61747572655841018c3267736b89bbcf0646fb1537e1096f4631eabf4ebef42717a6605d34060a43855c913b229091110dc5d61c45c778ae6c20226ae53ad67db798eea3af10d00aa265696e64657802697369676e6174757265584101647378e4ff1a7019ab4ac8a41ebf2f014dd737a0edab3719b93072b0b80f9d03ceddd730f9dcadf6d84c95d0fed95750bcdfe25364ce7c27ecbaa5470e883102" + }, + { + "input": { + "import": { + "logs": [ + [ + { + "event": { + "a": [], + "d": "Ei473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "i": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "k": [ + { + "$bytes": "01d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a" + } + ], + "n": [ + "E4fnvjywz23zeyb426croyvctrtqsse237th3kfjid4pfeewx7noa" + ], + "p": "", + "s": 0, + "t": "icp", + "v": "SBYTE10JSON", + "kt": 1, + "nt": 1 + }, + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01e90f89475321e5febce3d271ccb2e304301d0975a6e49aa49a9e76f54ecf4d027097eda8d45ff0d0bf14c94d86f26d7100868c1af79bcfb609792e720e6b1604" + } + } + ] + } + ], + [ + { + "event": { + "a": [], + "d": "Ezxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "i": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "k": [ + { + "$bytes": "013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c" + } + ], + "n": [ + "Eqmsawig6oznh4b5cbovqukvzxa5u5jbiklkrlwhtdo6rbrsyjfnq" + ], + "p": "", + "s": 0, + "t": "icp", + "v": "SBYTE10JSON", + "kt": 1, + "nt": 1 + }, + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01c0999c04eee90f056e29a2753f1a90665636394e819578d4cc2a2a40afb841b9a89a759b881adc095be848ba4ce9be9f64da3f4efcb5f935c0c20723ab68da07" + } + } + ] + } + ] + ], + "envelope": { + "d": "Endpw3gchsgljvx5qcffhfvuc2iam3fqdln2dol6zitfssz4fohsa", + "joule_cost": { + "measured_microjoules": 1200, + "estimated_microjoules": 1500 + }, + "provenance": { + "d": "Eyl2abuhbzbih3ao7hvjmgtjyzm4b5jeufdzafn6pme3j6id53z7q", + "cargo": { + "type": 1, + "bytes": { + "$bytes": "a1666d6963726f731a05f5e100" + } + }, + "nonce": { + "$bytes": "dcc74ebbcedebda361fb18a7abec95d9" + }, + "issuer": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "recipient": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "0188d2bbf7bf3ea95bb33866235bae150ac65c7371bc2776f17eb0944884cc8a4e7d402947d334d07e871acd0c305e6791d6e9b5747a683b6c58fc81f21dbcdd09" + } + } + ], + "establishment": 0 + } + }, + "ownership_chain": [ + { + "to": "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "from": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "frame": 2, + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01542818744f3c48fe12d750b35bf6a66cdebcc08196d471102888133fa81593870238514447840fa7e1701a79d3927ffa45d48b1310ea213a2c2def61c581d005" + } + } + ], + "establishment": 0 + }, + "destination": "Enldsomgkjdhwaeznqf2cyu6j7jqwmkbfrc2klavaaybu6rfzewkq", + "previous_history_hash": { + "$bytes": "c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f" + } + } + ] + }, + "certificate": { + "statement": { + "byte": "Eyl2abuhbzbih3ao7hvjmgtjyzm4b5jeufdzafn6pme3j6id53z7q", + "export": { + "cargo": { + "type": 1, + "bytes": { + "$bytes": "a1666d6963726f731a05f5e100" + } + }, + "owner": "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "issuer": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "minted": 0, + "exported": 2, + "destination": "Enldsomgkjdhwaeznqf2cyu6j7jqwmkbfrc2klavaaybu6rfzewkq", + "history_hash": { + "$bytes": "c987ece9b6cba695356c4c2a5c75498e9c4e419fd2e4d0a71fa76b4deeddcf2e" + } + }, + "source": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa" + }, + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "012c36962e3b4f9a0ae20f288777de5da21dec36c925ac9bd28ffd3d9d041bafac2f55b6d0346b913f628ae4727798aeb16f2c62662e2d7aff67f91a8e8ba9190d" + } + }, + { + "index": 1, + "signature": { + "$bytes": "010b6c1ad464191a9d0172afc38adc9ea5c095848591ac51644f459419c539a48cae4717fcb511b28d30de2477f8da6b2a220c480f5621076861390158faa01e09" + } + }, + { + "index": 2, + "signature": { + "$bytes": "012805e522cf6cc0a14a3193296342b563f3f03af6c187dd105a8b5589d3701400bdd0549ae649a0a66aa6ef24d6fdffccc7a6d586ca2bfb55c7121ba18c839903" + } + } + ] + } + } + }, + "cbor_hex": "a166696d706f7274a3646c6f67738281a2656576656e74ab616180616478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371616978354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371616b81582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a616e8178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f6161706061730061746369637061766b534259544531304a534f4e626b7401626e74016a7369676e61747572657381a265696e64657800697369676e6174757265584101e90f89475321e5febce3d271ccb2e304301d0975a6e49aa49a9e76f54ecf4d027097eda8d45ff0d0bf14c94d86f26d7100868c1af79bcfb609792e720e6b160481a2656576656e74ab61618061647835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f716161697835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161616b815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c616e81783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e7161706061730061746369637061766b534259544531304a534f4e626b7401626e74016a7369676e61747572657381a265696e64657800697369676e6174757265584101c0999c04eee90f056e29a2753f1a90665636394e819578d4cc2a2a40afb841b9a89a759b881adc095be848ba4ce9be9f64da3f4efcb5f935c0c20723ab68da0768656e76656c6f7065a461647835456e6470773367636873676c6a7678357163666668667675633269616d336671646c6e32646f6c367a69746673737a34666f6873616a6a6f756c655f636f7374a2746d656173757265645f6d6963726f6a6f756c65731904b075657374696d617465645f6d6963726f6a6f756c65731905dc6a70726f76656e616e6365a66164783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a377165636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656e6f6e636550dcc74ebbcedebda361fb18a7abec95d96669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637169726563697069656e747835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e617475726558410188d2bbf7bf3ea95bb33866235bae150ac65c7371bc2776f17eb0944884cc8a4e7d402947d334d07e871acd0c305e6791d6e9b5747a683b6c58fc81f21dbcdd096d65737461626c6973686d656e74006f6f776e6572736869705f636861696e81a662746f78354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716466726f6d7835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161656672616d6502697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e6174757265584101542818744f3c48fe12d750b35bf6a66cdebcc08196d471102888133fa81593870238514447840fa7e1701a79d3927ffa45d48b1310ea213a2c2def61c581d0056d65737461626c6973686d656e74006b64657374696e6174696f6e7835456e6c64736f6d676b6a64687761657a6e716632637975366a376a71776d6b62667263326b6c617661617962753672667a65776b717570726576696f75735f686973746f72795f686173685820c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f6b6365727469666963617465a26973746174656d656e74a36462797465783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771666578706f7274a765636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656f776e657278354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a7367676932746371666973737565727835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161666d696e74656400686578706f72746564026b64657374696e6174696f6e7835456e6c64736f6d676b6a64687761657a6e716632637975366a376a71776d6b62667263326b6c617661617962753672667a65776b716c686973746f72795f686173685820c987ece9b6cba695356c4c2a5c75498e9c4e419fd2e4d0a71fa76b4deeddcf2e66736f75726365783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616a7369676e61747572657383a265696e64657800697369676e61747572655841012c36962e3b4f9a0ae20f288777de5da21dec36c925ac9bd28ffd3d9d041bafac2f55b6d0346b913f628ae4727798aeb16f2c62662e2d7aff67f91a8e8ba9190da265696e64657801697369676e61747572655841010b6c1ad464191a9d0172afc38adc9ea5c095848591ac51644f459419c539a48cae4717fcb511b28d30de2477f8da6b2a220c480f5621076861390158faa01e09a265696e64657802697369676e61747572655841012805e522cf6cc0a14a3193296342b563f3f03af6c187dd105a8b5589d3701400bdd0549ae649a0a66aa6ef24d6fdffccc7a6d586ca2bfb55c7121ba18c839903" + }, + { + "input": { + "import": { + "logs": [ + [ + { + "event": { + "a": [], + "d": "Ei473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "i": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "k": [ + { + "$bytes": "01d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a" + } + ], + "n": [ + "E4fnvjywz23zeyb426croyvctrtqsse237th3kfjid4pfeewx7noa" + ], + "p": "", + "s": 0, + "t": "icp", + "v": "SBYTE10JSON", + "kt": 1, + "nt": 1 + }, + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01e90f89475321e5febce3d271ccb2e304301d0975a6e49aa49a9e76f54ecf4d027097eda8d45ff0d0bf14c94d86f26d7100868c1af79bcfb609792e720e6b1604" + } + } + ] + } + ], + [ + { + "event": { + "a": [], + "d": "Ezxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "i": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "k": [ + { + "$bytes": "013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c" + } + ], + "n": [ + "Eqmsawig6oznh4b5cbovqukvzxa5u5jbiklkrlwhtdo6rbrsyjfnq" + ], + "p": "", + "s": 0, + "t": "icp", + "v": "SBYTE10JSON", + "kt": 1, + "nt": 1 + }, + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01c0999c04eee90f056e29a2753f1a90665636394e819578d4cc2a2a40afb841b9a89a759b881adc095be848ba4ce9be9f64da3f4efcb5f935c0c20723ab68da07" + } + } + ] + } + ] + ], + "envelope": { + "d": "Endpw3gchsgljvx5qcffhfvuc2iam3fqdln2dol6zitfssz4fohsa", + "joule_cost": { + "measured_microjoules": 1200, + "estimated_microjoules": 1500 + }, + "provenance": { + "d": "Eyl2abuhbzbih3ao7hvjmgtjyzm4b5jeufdzafn6pme3j6id53z7q", + "cargo": { + "type": 1, + "bytes": { + "$bytes": "a1666d6963726f731a05f5e100" + } + }, + "nonce": { + "$bytes": "dcc74ebbcedebda361fb18a7abec95d9" + }, + "issuer": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "recipient": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "0188d2bbf7bf3ea95bb33866235bae150ac65c7371bc2776f17eb0944884cc8a4e7d402947d334d07e871acd0c305e6791d6e9b5747a683b6c58fc81f21dbcdd09" + } + } + ], + "establishment": 0 + } + }, + "ownership_chain": [ + { + "to": "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "from": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "frame": 2, + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01542818744f3c48fe12d750b35bf6a66cdebcc08196d471102888133fa81593870238514447840fa7e1701a79d3927ffa45d48b1310ea213a2c2def61c581d005" + } + } + ], + "establishment": 0 + }, + "destination": "Enldsomgkjdhwaeznqf2cyu6j7jqwmkbfrc2klavaaybu6rfzewkq", + "previous_history_hash": { + "$bytes": "c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f" + } + } + ] + }, + "certificate": { + "statement": { + "byte": "Eyl2abuhbzbih3ao7hvjmgtjyzm4b5jeufdzafn6pme3j6id53z7q", + "export": { + "cargo": { + "type": 1, + "bytes": { + "$bytes": "a1666d6963726f731b000000e8d4a51000" + } + }, + "owner": "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "issuer": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "minted": 0, + "exported": 2, + "destination": "Enldsomgkjdhwaeznqf2cyu6j7jqwmkbfrc2klavaaybu6rfzewkq", + "history_hash": { + "$bytes": "c987ece9b6cba695356c4c2a5c75498e9c4e419fd2e4d0a71fa76b4deeddcf2e" + } + }, + "source": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa" + }, + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "0118c8e39a879a243e8a87f5faa1ed39fc8547003e1faae8369ce2c294c55a69414b4c1ea53c506213c5e25af2813cc9f421673da39441ea4853a2c350f51c6602" + } + }, + { + "index": 1, + "signature": { + "$bytes": "013da6deb89fd6df915301528e1cda6be4a48084429ab7801b2e0bba2c303b67a005e6b4c43d0370774409770cdff005321f14f8bdb8df621b8b870aa1429a6805" + } + }, + { + "index": 2, + "signature": { + "$bytes": "0119143d81c36daaad66ee97971f5c9ed309b3853974a847dc8f78cb551e2def0a2f68ac05d07589b06881686a5c90e33757bfbd09f39f3c712abdd644ea745608" + } + } + ] + } + } + }, + "cbor_hex": "a166696d706f7274a3646c6f67738281a2656576656e74ab616180616478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371616978354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371616b81582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a616e8178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f6161706061730061746369637061766b534259544531304a534f4e626b7401626e74016a7369676e61747572657381a265696e64657800697369676e6174757265584101e90f89475321e5febce3d271ccb2e304301d0975a6e49aa49a9e76f54ecf4d027097eda8d45ff0d0bf14c94d86f26d7100868c1af79bcfb609792e720e6b160481a2656576656e74ab61618061647835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f716161697835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161616b815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c616e81783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e7161706061730061746369637061766b534259544531304a534f4e626b7401626e74016a7369676e61747572657381a265696e64657800697369676e6174757265584101c0999c04eee90f056e29a2753f1a90665636394e819578d4cc2a2a40afb841b9a89a759b881adc095be848ba4ce9be9f64da3f4efcb5f935c0c20723ab68da0768656e76656c6f7065a461647835456e6470773367636873676c6a7678357163666668667675633269616d336671646c6e32646f6c367a69746673737a34666f6873616a6a6f756c655f636f7374a2746d656173757265645f6d6963726f6a6f756c65731904b075657374696d617465645f6d6963726f6a6f756c65731905dc6a70726f76656e616e6365a66164783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a377165636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656e6f6e636550dcc74ebbcedebda361fb18a7abec95d96669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637169726563697069656e747835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e617475726558410188d2bbf7bf3ea95bb33866235bae150ac65c7371bc2776f17eb0944884cc8a4e7d402947d334d07e871acd0c305e6791d6e9b5747a683b6c58fc81f21dbcdd096d65737461626c6973686d656e74006f6f776e6572736869705f636861696e81a662746f78354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716466726f6d7835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161656672616d6502697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e6174757265584101542818744f3c48fe12d750b35bf6a66cdebcc08196d471102888133fa81593870238514447840fa7e1701a79d3927ffa45d48b1310ea213a2c2def61c581d0056d65737461626c6973686d656e74006b64657374696e6174696f6e7835456e6c64736f6d676b6a64687761657a6e716632637975366a376a71776d6b62667263326b6c617661617962753672667a65776b717570726576696f75735f686973746f72795f686173685820c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f6b6365727469666963617465a26973746174656d656e74a36462797465783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771666578706f7274a765636172676fa264747970650165627974657351a1666d6963726f731b000000e8d4a51000656f776e657278354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371666d696e74656400686578706f72746564026b64657374696e6174696f6e7835456e6c64736f6d676b6a64687761657a6e716632637975366a376a71776d6b62667263326b6c617661617962753672667a65776b716c686973746f72795f686173685820c987ece9b6cba695356c4c2a5c75498e9c4e419fd2e4d0a71fa76b4deeddcf2e66736f75726365783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616a7369676e61747572657383a265696e64657800697369676e617475726558410118c8e39a879a243e8a87f5faa1ed39fc8547003e1faae8369ce2c294c55a69414b4c1ea53c506213c5e25af2813cc9f421673da39441ea4853a2c350f51c6602a265696e64657801697369676e61747572655841013da6deb89fd6df915301528e1cda6be4a48084429ab7801b2e0bba2c303b67a005e6b4c43d0370774409770cdff005321f14f8bdb8df621b8b870aa1429a6805a265696e64657802697369676e617475726558410119143d81c36daaad66ee97971f5c9ed309b3853974a847dc8f78cb551e2def0a2f68ac05d07589b06881686a5c90e33757bfbd09f39f3c712abdd644ea745608" + }, + { + "input": { + "import": { + "logs": [ + [ + { + "event": { + "a": [], + "d": "Ei473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "i": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "k": [ + { + "$bytes": "01d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a" + } + ], + "n": [ + "E4fnvjywz23zeyb426croyvctrtqsse237th3kfjid4pfeewx7noa" + ], + "p": "", + "s": 0, + "t": "icp", + "v": "SBYTE10JSON", + "kt": 1, + "nt": 1 + }, + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01e90f89475321e5febce3d271ccb2e304301d0975a6e49aa49a9e76f54ecf4d027097eda8d45ff0d0bf14c94d86f26d7100868c1af79bcfb609792e720e6b1604" + } + } + ] + } + ] + ], + "envelope": { + "d": "Endpw3gchsgljvx5qcffhfvuc2iam3fqdln2dol6zitfssz4fohsa", + "joule_cost": { + "measured_microjoules": 1200, + "estimated_microjoules": 1500 + }, + "provenance": { + "d": "Eyl2abuhbzbih3ao7hvjmgtjyzm4b5jeufdzafn6pme3j6id53z7q", + "cargo": { + "type": 1, + "bytes": { + "$bytes": "a1666d6963726f731a05f5e100" + } + }, + "nonce": { + "$bytes": "dcc74ebbcedebda361fb18a7abec95d9" + }, + "issuer": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "recipient": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "0188d2bbf7bf3ea95bb33866235bae150ac65c7371bc2776f17eb0944884cc8a4e7d402947d334d07e871acd0c305e6791d6e9b5747a683b6c58fc81f21dbcdd09" + } + } + ], + "establishment": 0 + } + }, + "ownership_chain": [ + { + "to": "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "from": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "frame": 2, + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01542818744f3c48fe12d750b35bf6a66cdebcc08196d471102888133fa81593870238514447840fa7e1701a79d3927ffa45d48b1310ea213a2c2def61c581d005" + } + } + ], + "establishment": 0 + }, + "destination": "Enldsomgkjdhwaeznqf2cyu6j7jqwmkbfrc2klavaaybu6rfzewkq", + "previous_history_hash": { + "$bytes": "c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f" + } + } + ] + }, + "certificate": { + "statement": { + "byte": "Eyl2abuhbzbih3ao7hvjmgtjyzm4b5jeufdzafn6pme3j6id53z7q", + "export": { + "cargo": { + "type": 1, + "bytes": { + "$bytes": "a1666d6963726f731a05f5e100" + } + }, + "owner": "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "issuer": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "minted": 0, + "exported": 2, + "destination": "Enldsomgkjdhwaeznqf2cyu6j7jqwmkbfrc2klavaaybu6rfzewkq", + "history_hash": { + "$bytes": "c987ece9b6cba695356c4c2a5c75498e9c4e419fd2e4d0a71fa76b4deeddcf2e" + } + }, + "source": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa" + }, + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "017b69b164060e1c6a75a9179fe02aa77fe9c54bf29586299f1d7260059506800b40b7b31e4a88836192a333e09c33a12f708138d256bf0b3fe33cd0dab4bb760f" + } + }, + { + "index": 1, + "signature": { + "$bytes": "015d0d531d5767f40057d105d7a922bc63a3cc747a74bfa25326a4d72a5dae6f36c6221544f78c05e69c3c9616b486497dffad5259e6d557a922b402ab9621330b" + } + }, + { + "index": 2, + "signature": { + "$bytes": "0104023a7b6779e77ecf9d9d2cca87e31b6c12b33dcf308af95020b343a87959cda9574517db9198244223edf32751653f9f823ea490977dc3ff711e8e22d1e708" + } + } + ] + } + } + }, + "cbor_hex": "a166696d706f7274a3646c6f67738181a2656576656e74ab616180616478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371616978354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371616b81582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a616e8178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f6161706061730061746369637061766b534259544531304a534f4e626b7401626e74016a7369676e61747572657381a265696e64657800697369676e6174757265584101e90f89475321e5febce3d271ccb2e304301d0975a6e49aa49a9e76f54ecf4d027097eda8d45ff0d0bf14c94d86f26d7100868c1af79bcfb609792e720e6b160468656e76656c6f7065a461647835456e6470773367636873676c6a7678357163666668667675633269616d336671646c6e32646f6c367a69746673737a34666f6873616a6a6f756c655f636f7374a2746d656173757265645f6d6963726f6a6f756c65731904b075657374696d617465645f6d6963726f6a6f756c65731905dc6a70726f76656e616e6365a66164783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a377165636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656e6f6e636550dcc74ebbcedebda361fb18a7abec95d96669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637169726563697069656e747835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e617475726558410188d2bbf7bf3ea95bb33866235bae150ac65c7371bc2776f17eb0944884cc8a4e7d402947d334d07e871acd0c305e6791d6e9b5747a683b6c58fc81f21dbcdd096d65737461626c6973686d656e74006f6f776e6572736869705f636861696e81a662746f78354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716466726f6d7835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161656672616d6502697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e6174757265584101542818744f3c48fe12d750b35bf6a66cdebcc08196d471102888133fa81593870238514447840fa7e1701a79d3927ffa45d48b1310ea213a2c2def61c581d0056d65737461626c6973686d656e74006b64657374696e6174696f6e7835456e6c64736f6d676b6a64687761657a6e716632637975366a376a71776d6b62667263326b6c617661617962753672667a65776b717570726576696f75735f686973746f72795f686173685820c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f6b6365727469666963617465a26973746174656d656e74a36462797465783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771666578706f7274a765636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656f776e657278354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371666d696e74656400686578706f72746564026b64657374696e6174696f6e7835456e6c64736f6d676b6a64687761657a6e716632637975366a376a71776d6b62667263326b6c617661617962753672667a65776b716c686973746f72795f686173685820c987ece9b6cba695356c4c2a5c75498e9c4e419fd2e4d0a71fa76b4deeddcf2e66736f75726365783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616a7369676e61747572657383a265696e64657800697369676e61747572655841017b69b164060e1c6a75a9179fe02aa77fe9c54bf29586299f1d7260059506800b40b7b31e4a88836192a333e09c33a12f708138d256bf0b3fe33cd0dab4bb760fa265696e64657801697369676e61747572655841015d0d531d5767f40057d105d7a922bc63a3cc747a74bfa25326a4d72a5dae6f36c6221544f78c05e69c3c9616b486497dffad5259e6d557a922b402ab9621330ba265696e64657802697369676e617475726558410104023a7b6779e77ecf9d9d2cca87e31b6c12b33dcf308af95020b343a87959cda9574517db9198244223edf32751653f9f823ea490977dc3ff711e8e22d1e708" + } + ], + "expected_results": [ + { + "input": "060d2d2466eeb064281e4884938f850f9357631892d3bd5ea75bb3a4ec2344f0", + "class": "import", + "outcome": "dropped", + "error": "below_threshold" + }, + { + "input": "4ac50c971b9a07246605e810f70810dc43e6729a2c4f643f78915f39f4ca16be", + "class": "import", + "outcome": "dropped", + "error": "wrong_cluster" + }, + { + "input": "520e1195841699ad3136034eb648e59aa8c9a8825dcdd9655cb49a1177affbae", + "class": "import", + "outcome": "dropped", + "error": "unknown_cluster" + }, + { + "input": "633d31a00521d2941d0c1139ca6b54222e6b67bfe86bb627de420061997b798f", + "class": "import", + "outcome": "dropped", + "error": "certificate_mismatch" + }, + { + "input": "76ed0e8387b2aec4a176c291da73963059948d0d7f0d5fddcc82c665a6c341d5", + "class": "import", + "outcome": "dropped", + "error": "unknown_key_state" + }, + { + "input": "7ae6011945eebed97c3e9fbc1b2e07e7bf18dfbb20efc19b71d2a199b4c7072b", + "class": "import", + "outcome": "dropped", + "error": "certificate_mismatch" + }, + { + "input": "7eac916e6abaabc5a984ad2a1b346518a6c045b608cae455cbcbc382dd9f551b", + "class": "import", + "outcome": "dropped", + "error": "certificate_mismatch" + }, + { + "input": "8e2cc7549d53347203dbe611cb2d5a906b4d63dfadaaaa05088122fda8861ab3", + "class": "import", + "outcome": "dropped", + "error": "certificate_mismatch" + }, + { + "input": "95128b292326c00e8813154e283edc9d372b4e75faaf77ae41a6e15f26017ddd", + "class": "import", + "outcome": "dropped", + "error": "below_threshold" + }, + { + "input": "bb9d033eb001e4d3903cf3298c9eae369dae8f1972d3ccecd3bab19e4f5c73f7", + "class": "import", + "outcome": "dropped", + "error": "certificate_mismatch" + }, + { + "input": "c47c83631b02bf9ceaee6a0556ec42863f13f23cb2f97bcb877000c6ada2788d", + "class": "import", + "outcome": "dropped", + "error": "certificate_mismatch" + } + ], + "expected_state": { + "bytes": {}, + "frame": 2, + "peers": { + "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa": { + "keys": [ + { + "$bytes": "01d661c78b74359562c1b4904782873dcba3adb2ebc3020ecb09f8953d28e0d2e3" + }, + { + "$bytes": "01036ca30b2a9433913c505fee8dc8f0bfaa7c9d34574688ac0920f4fcb914c91d" + }, + { + "$bytes": "01804cee78a663531717a54d35fbf556b70e4625a77e3dc3a5219cf783e8917296" + }, + { + "$bytes": "01ef69b130554bf4befe39394a462cda93a9ad647c721e0b5ea09b323e77f7b608" + } + ] + }, + "Egxiatblr23j5ow2lbioy2bgfm5nitq5ibhfs54fvhwkbhfsjjgtq": { + "keys": [ + { + "$bytes": "0116fabfb7d7f6c79625dff75c7d456475e023dc7c49648b88d3ad31cd91c1d2c8" + }, + { + "$bytes": "010a4382b716a75c0a1ae0eae202a3d57e7dfcb2722e4fc2061e1157a98cb865d5" + }, + { + "$bytes": "0199fa7e6a98e297f9b43eebf980a6300e2e7f0b953cc2a1a628fb6ec6d1cf0b34" + } + ] + } + }, + "cluster": "Enldsomgkjdhwaeznqf2cyu6j7jqwmkbfrc2klavaaybu6rfzewkq", + "retired": {}, + "exported": {}, + "imported": [], + "registry": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ + 1 + ] + }, + "governance": { + "delay": 0, + "pending": [], + "sequence": 0 + }, + "controllers": { + "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq": { + "keys": [ + { + "$bytes": "01f4ff420feb4040a73e51713a44f9966476c755e8e2d18b82677f8ff7a839afe2" + }, + { + "$bytes": "019b54b13b505ae2ddb12e49d8e10ed93725167ab9a0a77803538fc69858cdb0e2" + }, + { + "$bytes": "015c26708ee23779ee7b628241cc1735ed1ba4527639d7383bbc0ad9aa6295f535" + } + ], + "sequence": 0, + "next_keys": [ + "Efcf43zs566fqd5jlkxmbqnv2srtgk45uhenfpc4p5xzfkx7rdvma", + "Euaam4ynyfrxpmxiyogpumg3m6bdb4s5jigslwv3oqnp2gswv4buq", + "Ell3qkq2hpnwirn4m6hgulph32looiev6e5hgst2oc5c5f6jiwjjq" + ], + "threshold": 2, + "last_event": "Eqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "establishment": 0, + "next_threshold": 2 + } + } + }, + "expected_state_cbor_hex": "aa656279746573a0656672616d6502657065657273a2783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a79756578346670673263707061a1646b65797384582101d661c78b74359562c1b4904782873dcba3adb2ebc3020ecb09f8953d28e0d2e3582101036ca30b2a9433913c505fee8dc8f0bfaa7c9d34574688ac0920f4fcb914c91d582101804cee78a663531717a54d35fbf556b70e4625a77e3dc3a5219cf783e8917296582101ef69b130554bf4befe39394a462cda93a9ad647c721e0b5ea09b323e77f7b6087835456778696174626c7232336a356f77326c62696f79326267666d356e6974713569626866733534667668776b626866736a6a677471a1646b6579738358210116fabfb7d7f6c79625dff75c7d456475e023dc7c49648b88d3ad31cd91c1d2c85821010a4382b716a75c0a1ae0eae202a3d57e7dfcb2722e4fc2061e1157a98cb865d558210199fa7e6a98e297f9b43eebf980a6300e2e7f0b953cc2a1a628fb6ec6d1cf0b3467636c75737465727835456e6c64736f6d676b6a64687761657a6e716632637975366a376a71776d6b62667263326b6c617661617962753672667a65776b716772657469726564a0686578706f72746564a068696d706f7274656480687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016a676f7665726e616e6365a36564656c6179006770656e64696e67806873657175656e6365006b636f6e74726f6c6c657273a178354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a7367676932746371a7646b65797383582101f4ff420feb4040a73e51713a44f9966476c755e8e2d18b82677f8ff7a839afe25821019b54b13b505ae2ddb12e49d8e10ed93725167ab9a0a77803538fc69858cdb0e25821015c26708ee23779ee7b628241cc1735ed1ba4527639d7383bbc0ad9aa6295f5356873657175656e636500696e6578745f6b6579738378354566636634337a73353636667164356a6c6b786d62716e7632737274676b34357568656e667063347035787a666b78377264766d617835457561616d34796e79667278706d7869796f6770756d67336d366264623473356a6967736c7776336f716e703267737776346275717835456c6c33716b713268706e7769726e346d366867756c706833326c6f6f69657636653568677374326f6335633566366a69776a6a71697468726573686f6c64026a6c6173745f6576656e7478354571656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c6402", + "expected_state_hash": "bc4a1f9f25a1cf1333768a693ae69e058caf333d19d38a952a39c0773806f8de" + } + ] + }, + { + "name": "state-022-removing-a-type-s-only-issuer", + "description": "Alice is the only issuer of joules (cargo type 2). With her excluded from the vote on her own removal, the type has no electorate of its own, so every other issuer votes: here the issuer alone, quorum 1. Her own approval is refused; the issuer's is accepted, and from frame 3 Alice, left with no cargo type, is gone from the registry.", + "genesis": { + "state": { + "bytes": {}, + "frame": 0, + "peers": {}, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "retired": {}, + "exported": {}, + "imported": [], + "registry": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ + 1 + ], + "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa": [ + 2 + ] + }, + "governance": { + "delay": 0, + "pending": [], + "sequence": 0 + }, + "controllers": {} + }, + "cbor_hex": "aa656279746573a0656672616d6500657065657273a067636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616772657469726564a0686578706f72746564a068696d706f7274656480687265676973747279a278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181017835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f716181026a676f7665726e616e6365a36564656c6179006770656e64696e67806873657175656e6365006b636f6e74726f6c6c657273a0", + "state_hash": "d5ce3009b227adae41b2d48a5a77a984c4fc3a1ec67344e270930b15fb379571" + }, + "frames": [ + { + "frame": 0, + "inputs": [ + { + "input": { + "key_event": { + "event": { + "a": [], + "d": "Ei473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "i": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "k": [ + { + "$bytes": "01d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a" + } + ], + "n": [ + "E4fnvjywz23zeyb426croyvctrtqsse237th3kfjid4pfeewx7noa" + ], + "p": "", + "s": 0, + "t": "icp", + "v": "SBYTE10JSON", + "kt": 1, + "nt": 1 + }, + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01e90f89475321e5febce3d271ccb2e304301d0975a6e49aa49a9e76f54ecf4d027097eda8d45ff0d0bf14c94d86f26d7100868c1af79bcfb609792e720e6b1604" + } + } + ] + } + }, + "cbor_hex": "a1696b65795f6576656e74a2656576656e74ab616180616478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371616978354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371616b81582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a616e8178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f6161706061730061746369637061766b534259544531304a534f4e626b7401626e74016a7369676e61747572657381a265696e64657800697369676e6174757265584101e90f89475321e5febce3d271ccb2e304301d0975a6e49aa49a9e76f54ecf4d027097eda8d45ff0d0bf14c94d86f26d7100868c1af79bcfb609792e720e6b1604" + }, + { + "input": { + "key_event": { + "event": { + "a": [], + "d": "Ezxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "i": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "k": [ + { + "$bytes": "013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c" + } + ], + "n": [ + "Eqmsawig6oznh4b5cbovqukvzxa5u5jbiklkrlwhtdo6rbrsyjfnq" + ], + "p": "", + "s": 0, + "t": "icp", + "v": "SBYTE10JSON", + "kt": 1, + "nt": 1 + }, + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01c0999c04eee90f056e29a2753f1a90665636394e819578d4cc2a2a40afb841b9a89a759b881adc095be848ba4ce9be9f64da3f4efcb5f935c0c20723ab68da07" + } + } + ] + } + }, + "cbor_hex": "a1696b65795f6576656e74a2656576656e74ab61618061647835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f716161697835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161616b815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c616e81783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e7161706061730061746369637061766b534259544531304a534f4e626b7401626e74016a7369676e61747572657381a265696e64657800697369676e6174757265584101c0999c04eee90f056e29a2753f1a90665636394e819578d4cc2a2a40afb841b9a89a759b881adc095be848ba4ce9be9f64da3f4efcb5f935c0c20723ab68da07" + } + ], + "expected_results": [ + { + "input": "6c0cba880da38a32a827d1d6f113123e9c04b7ae7e9df80b3e5060ffc755fff6", + "class": "key_event", + "outcome": "applied" + }, + { + "input": "6e9b571b38262c22a83b5a86bb7aba15ef2f7c90a82ec9fdd124593783c3aedf", + "class": "key_event", + "outcome": "applied" + } + ], + "expected_state": { + "bytes": {}, + "frame": 1, + "peers": {}, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "retired": {}, + "exported": {}, + "imported": [], + "registry": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ + 1 + ], + "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa": [ + 2 + ] + }, + "governance": { + "delay": 0, + "pending": [], + "sequence": 0 + }, + "controllers": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": { + "keys": [ + { + "$bytes": "01d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a" + } + ], + "sequence": 0, + "next_keys": [ + "E4fnvjywz23zeyb426croyvctrtqsse237th3kfjid4pfeewx7noa" + ], + "threshold": 1, + "last_event": "Ei473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "establishment": 0, + "next_threshold": 1 + }, + "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa": { + "keys": [ + { + "$bytes": "013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c" + } + ], + "sequence": 0, + "next_keys": [ + "Eqmsawig6oznh4b5cbovqukvzxa5u5jbiklkrlwhtdo6rbrsyjfnq" + ], + "threshold": 1, + "last_event": "Ezxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "establishment": 0, + "next_threshold": 1 + } + } + }, + "expected_state_cbor_hex": "aa656279746573a0656672616d6501657065657273a067636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616772657469726564a0686578706f72746564a068696d706f7274656480687265676973747279a278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181017835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f716181026a676f7665726e616e6365a36564656c6179006770656e64696e67806873657175656e6365006b636f6e74726f6c6c657273a278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c64017835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161a7646b657973815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c6873657175656e636500696e6578745f6b65797381783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e71697468726573686f6c64016a6c6173745f6576656e747835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616d65737461626c6973686d656e74006e6e6578745f7468726573686f6c6401", + "expected_state_hash": "ca55134829ce98309828940ae367f071a4a09c452d20fb8a03d23d9c1e33e89d" + }, + { + "frame": 1, + "inputs": [ + { + "input": { + "governance": { + "proposal": { + "change": { + "action": "remove_issuer", + "issuer": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "cargo_type": 2 + }, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "sequence": 0 + }, + "approvals": [ + { + "approver": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01cd21b7db36dba546aa9617bf1ead7f130226ed2c30d847ce5e6f780cf61654b3eacceedcd29985a2a8056a7c0085d21f3617d436f36edd42ff22087071c3a707" + } + } + ], + "establishment": 0 + } + } + ] + } + }, + "cbor_hex": "a16a676f7665726e616e6365a26870726f706f73616ca3666368616e6765a366616374696f6e6d72656d6f76655f697373756572666973737565727835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616a636172676f5f747970650267636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616873657175656e63650069617070726f76616c7381a268617070726f7665727835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e6174757265584101cd21b7db36dba546aa9617bf1ead7f130226ed2c30d847ce5e6f780cf61654b3eacceedcd29985a2a8056a7c0085d21f3617d436f36edd42ff22087071c3a7076d65737461626c6973686d656e7400" + } + ], + "expected_results": [ + { + "input": "575905fa80a690113e86d4c4c228ab5bc225e0e7d50756c27513ae5decaffd8f", + "class": "governance", + "outcome": "dropped", + "error": "not_an_elector" + } + ], + "expected_state": { + "bytes": {}, + "frame": 2, + "peers": {}, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "retired": {}, + "exported": {}, + "imported": [], + "registry": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ + 1 + ], + "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa": [ + 2 + ] + }, + "governance": { + "delay": 0, + "pending": [], + "sequence": 0 + }, + "controllers": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": { + "keys": [ + { + "$bytes": "01d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a" + } + ], + "sequence": 0, + "next_keys": [ + "E4fnvjywz23zeyb426croyvctrtqsse237th3kfjid4pfeewx7noa" + ], + "threshold": 1, + "last_event": "Ei473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "establishment": 0, + "next_threshold": 1 + }, + "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa": { + "keys": [ + { + "$bytes": "013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c" + } + ], + "sequence": 0, + "next_keys": [ + "Eqmsawig6oznh4b5cbovqukvzxa5u5jbiklkrlwhtdo6rbrsyjfnq" + ], + "threshold": 1, + "last_event": "Ezxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "establishment": 0, + "next_threshold": 1 + } + } + }, + "expected_state_cbor_hex": "aa656279746573a0656672616d6502657065657273a067636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616772657469726564a0686578706f72746564a068696d706f7274656480687265676973747279a278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181017835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f716181026a676f7665726e616e6365a36564656c6179006770656e64696e67806873657175656e6365006b636f6e74726f6c6c657273a278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c64017835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161a7646b657973815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c6873657175656e636500696e6578745f6b65797381783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e71697468726573686f6c64016a6c6173745f6576656e747835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616d65737461626c6973686d656e74006e6e6578745f7468726573686f6c6401", + "expected_state_hash": "9f69481f7d8732beb0d9de160029bd829e50cd910201c581d6fdfe1cbdcea7d8" + }, + { + "frame": 2, + "inputs": [ + { + "input": { + "governance": { + "proposal": { + "change": { + "action": "remove_issuer", + "issuer": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "cargo_type": 2 + }, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "sequence": 0 + }, + "approvals": [ + { + "approver": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "0179cc8c06be5b246f341aa568f04113256210ae8f59496b51ef444dbfd89567a31d2947a7955c3e6433298ec993ac30c6440bb15aee1f8c2cb76fc764c0dfcd02" + } + } + ], + "establishment": 0 + } + } + ] + } + }, + "cbor_hex": "a16a676f7665726e616e6365a26870726f706f73616ca3666368616e6765a366616374696f6e6d72656d6f76655f697373756572666973737565727835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616a636172676f5f747970650267636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616873657175656e63650069617070726f76616c7381a268617070726f76657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e617475726558410179cc8c06be5b246f341aa568f04113256210ae8f59496b51ef444dbfd89567a31d2947a7955c3e6433298ec993ac30c6440bb15aee1f8c2cb76fc764c0dfcd026d65737461626c6973686d656e7400" + } + ], + "expected_results": [ + { + "input": "f0473cd6dc05e9dd3aafc22d5505bb5e920b01a512550c80cce74510709bf91e", + "class": "governance", + "outcome": "applied" + } + ], + "expected_state": { + "bytes": {}, + "frame": 3, + "peers": {}, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "retired": {}, + "exported": {}, + "imported": [], + "registry": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ + 1 + ], + "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa": [ + 2 + ] + }, + "governance": { + "delay": 0, + "pending": [ + { + "change": { + "action": "remove_issuer", + "issuer": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "cargo_type": 2 + }, + "effective": 3 + } + ], + "sequence": 1 + }, + "controllers": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": { + "keys": [ + { + "$bytes": "01d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a" + } + ], + "sequence": 0, + "next_keys": [ + "E4fnvjywz23zeyb426croyvctrtqsse237th3kfjid4pfeewx7noa" + ], + "threshold": 1, + "last_event": "Ei473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "establishment": 0, + "next_threshold": 1 + }, + "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa": { + "keys": [ + { + "$bytes": "013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c" + } + ], + "sequence": 0, + "next_keys": [ + "Eqmsawig6oznh4b5cbovqukvzxa5u5jbiklkrlwhtdo6rbrsyjfnq" + ], + "threshold": 1, + "last_event": "Ezxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "establishment": 0, + "next_threshold": 1 + } + } + }, + "expected_state_cbor_hex": "aa656279746573a0656672616d6503657065657273a067636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616772657469726564a0686578706f72746564a068696d706f7274656480687265676973747279a278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181017835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f716181026a676f7665726e616e6365a36564656c6179006770656e64696e6781a2666368616e6765a366616374696f6e6d72656d6f76655f697373756572666973737565727835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616a636172676f5f747970650269656666656374697665036873657175656e6365016b636f6e74726f6c6c657273a278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c64017835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161a7646b657973815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c6873657175656e636500696e6578745f6b65797381783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e71697468726573686f6c64016a6c6173745f6576656e747835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616d65737461626c6973686d656e74006e6e6578745f7468726573686f6c6401", + "expected_state_hash": "40613174b7c55944a10fe0f02b908e887fd781238bb9c4ac1fe3a5090153ae82" + }, + { + "frame": 3, + "inputs": [], + "expected_results": [], + "expected_state": { + "bytes": {}, + "frame": 4, + "peers": {}, + "cluster": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa", + "retired": {}, + "exported": {}, + "imported": [], + "registry": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ + 1 + ] + }, + "governance": { + "delay": 0, + "pending": [], + "sequence": 1 + }, + "controllers": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": { + "keys": [ + { + "$bytes": "01d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a" + } + ], + "sequence": 0, + "next_keys": [ + "E4fnvjywz23zeyb426croyvctrtqsse237th3kfjid4pfeewx7noa" + ], + "threshold": 1, + "last_event": "Ei473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "establishment": 0, + "next_threshold": 1 + }, + "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa": { + "keys": [ + { + "$bytes": "013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c" + } + ], + "sequence": 0, + "next_keys": [ + "Eqmsawig6oznh4b5cbovqukvzxa5u5jbiklkrlwhtdo6rbrsyjfnq" + ], + "threshold": 1, + "last_event": "Ezxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "establishment": 0, + "next_threshold": 1 + } + } + }, + "expected_state_cbor_hex": "aa656279746573a0656672616d6504657065657273a067636c7573746572783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616772657469726564a0686578706f72746564a068696d706f7274656480687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016a676f7665726e616e6365a36564656c6179006770656e64696e67806873657175656e6365016b636f6e74726f6c6c657273a278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c64017835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161a7646b657973815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c6873657175656e636500696e6578745f6b65797381783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e71697468726573686f6c64016a6c6173745f6576656e747835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616d65737461626c6973686d656e74006e6e6578745f7468726573686f6c6401", + "expected_state_hash": "feb8ef3490a8b22a782320147421a80ed5f07e43c7906b64e1359b8be9db3815" + } + ] + }, + { + "name": "state-023-an-import-meets-the-byte", + "description": "Cluster B, peering with A, where the issuer is registered as it is in A. Frame 0 mints env-001's byte in B, and the import of A's certificate for that byte (state-020) is refused with `duplicate_byte`: mints apply before imports. Frame 1: Alice burns the byte, and the same import is refused with `duplicate_byte` again, imports applying before burns. Frame 2: the same import is refused with `byte_retired`.", + "genesis": { + "state": { + "bytes": {}, + "frame": 0, + "peers": { + "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa": { + "keys": [ + { + "$bytes": "01d661c78b74359562c1b4904782873dcba3adb2ebc3020ecb09f8953d28e0d2e3" + }, + { + "$bytes": "01036ca30b2a9433913c505fee8dc8f0bfaa7c9d34574688ac0920f4fcb914c91d" + }, + { + "$bytes": "01804cee78a663531717a54d35fbf556b70e4625a77e3dc3a5219cf783e8917296" + }, + { + "$bytes": "01ef69b130554bf4befe39394a462cda93a9ad647c721e0b5ea09b323e77f7b608" + } + ] + } + }, + "cluster": "Enldsomgkjdhwaeznqf2cyu6j7jqwmkbfrc2klavaaybu6rfzewkq", + "retired": {}, + "exported": {}, + "imported": [], + "registry": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ + 1 + ] + }, + "governance": { + "delay": 0, + "pending": [], + "sequence": 0 + }, + "controllers": {} + }, + "cbor_hex": "aa656279746573a0656672616d6500657065657273a1783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a79756578346670673263707061a1646b65797384582101d661c78b74359562c1b4904782873dcba3adb2ebc3020ecb09f8953d28e0d2e3582101036ca30b2a9433913c505fee8dc8f0bfaa7c9d34574688ac0920f4fcb914c91d582101804cee78a663531717a54d35fbf556b70e4625a77e3dc3a5219cf783e8917296582101ef69b130554bf4befe39394a462cda93a9ad647c721e0b5ea09b323e77f7b60867636c75737465727835456e6c64736f6d676b6a64687761657a6e716632637975366a376a71776d6b62667263326b6c617661617962753672667a65776b716772657469726564a0686578706f72746564a068696d706f7274656480687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016a676f7665726e616e6365a36564656c6179006770656e64696e67806873657175656e6365006b636f6e74726f6c6c657273a0", + "state_hash": "a03985e6fa83c895396f874bf63443dd8ccfa1693f431c4fdac7b15859531741" + }, + "frames": [ + { + "frame": 0, + "inputs": [ + { + "input": { + "key_event": { + "event": { + "a": [], + "d": "Ei473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "i": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "k": [ + { + "$bytes": "01d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a" + } + ], + "n": [ + "E4fnvjywz23zeyb426croyvctrtqsse237th3kfjid4pfeewx7noa" + ], + "p": "", + "s": 0, + "t": "icp", + "v": "SBYTE10JSON", + "kt": 1, + "nt": 1 + }, + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01e90f89475321e5febce3d271ccb2e304301d0975a6e49aa49a9e76f54ecf4d027097eda8d45ff0d0bf14c94d86f26d7100868c1af79bcfb609792e720e6b1604" + } + } + ] + } + }, + "cbor_hex": "a1696b65795f6576656e74a2656576656e74ab616180616478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371616978354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371616b81582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a616e8178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f6161706061730061746369637061766b534259544531304a534f4e626b7401626e74016a7369676e61747572657381a265696e64657800697369676e6174757265584101e90f89475321e5febce3d271ccb2e304301d0975a6e49aa49a9e76f54ecf4d027097eda8d45ff0d0bf14c94d86f26d7100868c1af79bcfb609792e720e6b1604" + }, + { + "input": { + "key_event": { + "event": { + "a": [], + "d": "Ezxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "i": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "k": [ + { + "$bytes": "013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c" + } + ], + "n": [ + "Eqmsawig6oznh4b5cbovqukvzxa5u5jbiklkrlwhtdo6rbrsyjfnq" + ], + "p": "", + "s": 0, + "t": "icp", + "v": "SBYTE10JSON", + "kt": 1, + "nt": 1 + }, + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01c0999c04eee90f056e29a2753f1a90665636394e819578d4cc2a2a40afb841b9a89a759b881adc095be848ba4ce9be9f64da3f4efcb5f935c0c20723ab68da07" + } + } + ] + } + }, + "cbor_hex": "a1696b65795f6576656e74a2656576656e74ab61618061647835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f716161697835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161616b815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c616e81783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e7161706061730061746369637061766b534259544531304a534f4e626b7401626e74016a7369676e61747572657381a265696e64657800697369676e6174757265584101c0999c04eee90f056e29a2753f1a90665636394e819578d4cc2a2a40afb841b9a89a759b881adc095be848ba4ce9be9f64da3f4efcb5f935c0c20723ab68da07" + }, + { + "input": { + "mint": { + "d": "Eyl2abuhbzbih3ao7hvjmgtjyzm4b5jeufdzafn6pme3j6id53z7q", + "cargo": { + "type": 1, + "bytes": { + "$bytes": "a1666d6963726f731a05f5e100" + } + }, + "nonce": { + "$bytes": "dcc74ebbcedebda361fb18a7abec95d9" + }, + "issuer": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "recipient": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "0188d2bbf7bf3ea95bb33866235bae150ac65c7371bc2776f17eb0944884cc8a4e7d402947d334d07e871acd0c305e6791d6e9b5747a683b6c58fc81f21dbcdd09" + } + } + ], + "establishment": 0 + } + } + }, + "cbor_hex": "a1646d696e74a66164783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a377165636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656e6f6e636550dcc74ebbcedebda361fb18a7abec95d96669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637169726563697069656e747835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e617475726558410188d2bbf7bf3ea95bb33866235bae150ac65c7371bc2776f17eb0944884cc8a4e7d402947d334d07e871acd0c305e6791d6e9b5747a683b6c58fc81f21dbcdd096d65737461626c6973686d656e7400" + }, + { + "input": { + "import": { + "logs": [ + [ + { + "event": { + "a": [], + "d": "Ei473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "i": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "k": [ + { + "$bytes": "01d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a" + } + ], + "n": [ + "E4fnvjywz23zeyb426croyvctrtqsse237th3kfjid4pfeewx7noa" + ], + "p": "", + "s": 0, + "t": "icp", + "v": "SBYTE10JSON", + "kt": 1, + "nt": 1 + }, + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01e90f89475321e5febce3d271ccb2e304301d0975a6e49aa49a9e76f54ecf4d027097eda8d45ff0d0bf14c94d86f26d7100868c1af79bcfb609792e720e6b1604" + } + } + ] + } + ], + [ + { + "event": { + "a": [], + "d": "Ezxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "i": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "k": [ + { + "$bytes": "013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c" + } + ], + "n": [ + "Eqmsawig6oznh4b5cbovqukvzxa5u5jbiklkrlwhtdo6rbrsyjfnq" + ], + "p": "", + "s": 0, + "t": "icp", + "v": "SBYTE10JSON", + "kt": 1, + "nt": 1 + }, + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01c0999c04eee90f056e29a2753f1a90665636394e819578d4cc2a2a40afb841b9a89a759b881adc095be848ba4ce9be9f64da3f4efcb5f935c0c20723ab68da07" + } + } + ] + } + ] + ], + "envelope": { + "d": "Endpw3gchsgljvx5qcffhfvuc2iam3fqdln2dol6zitfssz4fohsa", + "joule_cost": { + "measured_microjoules": 1200, + "estimated_microjoules": 1500 + }, + "provenance": { + "d": "Eyl2abuhbzbih3ao7hvjmgtjyzm4b5jeufdzafn6pme3j6id53z7q", + "cargo": { + "type": 1, + "bytes": { + "$bytes": "a1666d6963726f731a05f5e100" + } + }, + "nonce": { + "$bytes": "dcc74ebbcedebda361fb18a7abec95d9" + }, + "issuer": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "recipient": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "0188d2bbf7bf3ea95bb33866235bae150ac65c7371bc2776f17eb0944884cc8a4e7d402947d334d07e871acd0c305e6791d6e9b5747a683b6c58fc81f21dbcdd09" + } + } + ], + "establishment": 0 + } + }, + "ownership_chain": [ + { + "to": "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "from": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "frame": 2, + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01542818744f3c48fe12d750b35bf6a66cdebcc08196d471102888133fa81593870238514447840fa7e1701a79d3927ffa45d48b1310ea213a2c2def61c581d005" + } + } + ], + "establishment": 0 + }, + "destination": "Enldsomgkjdhwaeznqf2cyu6j7jqwmkbfrc2klavaaybu6rfzewkq", + "previous_history_hash": { + "$bytes": "c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f" + } + } + ] + }, + "certificate": { + "statement": { + "byte": "Eyl2abuhbzbih3ao7hvjmgtjyzm4b5jeufdzafn6pme3j6id53z7q", + "export": { + "cargo": { + "type": 1, + "bytes": { + "$bytes": "a1666d6963726f731a05f5e100" + } + }, + "owner": "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "issuer": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "minted": 0, + "exported": 2, + "destination": "Enldsomgkjdhwaeznqf2cyu6j7jqwmkbfrc2klavaaybu6rfzewkq", + "history_hash": { + "$bytes": "c987ece9b6cba695356c4c2a5c75498e9c4e419fd2e4d0a71fa76b4deeddcf2e" + } + }, + "source": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa" + }, + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "017b69b164060e1c6a75a9179fe02aa77fe9c54bf29586299f1d7260059506800b40b7b31e4a88836192a333e09c33a12f708138d256bf0b3fe33cd0dab4bb760f" + } + }, + { + "index": 1, + "signature": { + "$bytes": "015d0d531d5767f40057d105d7a922bc63a3cc747a74bfa25326a4d72a5dae6f36c6221544f78c05e69c3c9616b486497dffad5259e6d557a922b402ab9621330b" + } + }, + { + "index": 2, + "signature": { + "$bytes": "0104023a7b6779e77ecf9d9d2cca87e31b6c12b33dcf308af95020b343a87959cda9574517db9198244223edf32751653f9f823ea490977dc3ff711e8e22d1e708" + } + } + ] + } + } + }, + "cbor_hex": "a166696d706f7274a3646c6f67738281a2656576656e74ab616180616478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371616978354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371616b81582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a616e8178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f6161706061730061746369637061766b534259544531304a534f4e626b7401626e74016a7369676e61747572657381a265696e64657800697369676e6174757265584101e90f89475321e5febce3d271ccb2e304301d0975a6e49aa49a9e76f54ecf4d027097eda8d45ff0d0bf14c94d86f26d7100868c1af79bcfb609792e720e6b160481a2656576656e74ab61618061647835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f716161697835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161616b815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c616e81783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e7161706061730061746369637061766b534259544531304a534f4e626b7401626e74016a7369676e61747572657381a265696e64657800697369676e6174757265584101c0999c04eee90f056e29a2753f1a90665636394e819578d4cc2a2a40afb841b9a89a759b881adc095be848ba4ce9be9f64da3f4efcb5f935c0c20723ab68da0768656e76656c6f7065a461647835456e6470773367636873676c6a7678357163666668667675633269616d336671646c6e32646f6c367a69746673737a34666f6873616a6a6f756c655f636f7374a2746d656173757265645f6d6963726f6a6f756c65731904b075657374696d617465645f6d6963726f6a6f756c65731905dc6a70726f76656e616e6365a66164783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a377165636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656e6f6e636550dcc74ebbcedebda361fb18a7abec95d96669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637169726563697069656e747835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e617475726558410188d2bbf7bf3ea95bb33866235bae150ac65c7371bc2776f17eb0944884cc8a4e7d402947d334d07e871acd0c305e6791d6e9b5747a683b6c58fc81f21dbcdd096d65737461626c6973686d656e74006f6f776e6572736869705f636861696e81a662746f78354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716466726f6d7835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161656672616d6502697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e6174757265584101542818744f3c48fe12d750b35bf6a66cdebcc08196d471102888133fa81593870238514447840fa7e1701a79d3927ffa45d48b1310ea213a2c2def61c581d0056d65737461626c6973686d656e74006b64657374696e6174696f6e7835456e6c64736f6d676b6a64687761657a6e716632637975366a376a71776d6b62667263326b6c617661617962753672667a65776b717570726576696f75735f686973746f72795f686173685820c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f6b6365727469666963617465a26973746174656d656e74a36462797465783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771666578706f7274a765636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656f776e657278354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371666d696e74656400686578706f72746564026b64657374696e6174696f6e7835456e6c64736f6d676b6a64687761657a6e716632637975366a376a71776d6b62667263326b6c617661617962753672667a65776b716c686973746f72795f686173685820c987ece9b6cba695356c4c2a5c75498e9c4e419fd2e4d0a71fa76b4deeddcf2e66736f75726365783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616a7369676e61747572657383a265696e64657800697369676e61747572655841017b69b164060e1c6a75a9179fe02aa77fe9c54bf29586299f1d7260059506800b40b7b31e4a88836192a333e09c33a12f708138d256bf0b3fe33cd0dab4bb760fa265696e64657801697369676e61747572655841015d0d531d5767f40057d105d7a922bc63a3cc747a74bfa25326a4d72a5dae6f36c6221544f78c05e69c3c9616b486497dffad5259e6d557a922b402ab9621330ba265696e64657802697369676e617475726558410104023a7b6779e77ecf9d9d2cca87e31b6c12b33dcf308af95020b343a87959cda9574517db9198244223edf32751653f9f823ea490977dc3ff711e8e22d1e708" + } + ], + "expected_results": [ + { + "input": "6c0cba880da38a32a827d1d6f113123e9c04b7ae7e9df80b3e5060ffc755fff6", + "class": "key_event", + "outcome": "applied" + }, + { + "input": "6e9b571b38262c22a83b5a86bb7aba15ef2f7c90a82ec9fdd124593783c3aedf", + "class": "key_event", + "outcome": "applied" + }, + { + "input": "e48827dde00e15d7e4f3fa922605ba36da0a9371580a5de3efbbaf805b9043f5", + "class": "mint", + "outcome": "applied" + }, + { + "input": "3755d36d70866f2a8013a98d6ba99766ba3f9d542f5a4b12b9475b7c12d9cb6f", + "class": "import", + "outcome": "dropped", + "error": "duplicate_byte" + } + ], + "expected_state": { + "bytes": { + "Eyl2abuhbzbih3ao7hvjmgtjyzm4b5jeufdzafn6pme3j6id53z7q": { + "cargo": { + "type": 1, + "bytes": { + "$bytes": "a1666d6963726f731a05f5e100" + } + }, + "owner": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "issuer": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "minted": 0, + "history_hash": { + "$bytes": "c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f" + } + } + }, + "frame": 1, + "peers": { + "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa": { + "keys": [ + { + "$bytes": "01d661c78b74359562c1b4904782873dcba3adb2ebc3020ecb09f8953d28e0d2e3" + }, + { + "$bytes": "01036ca30b2a9433913c505fee8dc8f0bfaa7c9d34574688ac0920f4fcb914c91d" + }, + { + "$bytes": "01804cee78a663531717a54d35fbf556b70e4625a77e3dc3a5219cf783e8917296" + }, + { + "$bytes": "01ef69b130554bf4befe39394a462cda93a9ad647c721e0b5ea09b323e77f7b608" + } + ] + } + }, + "cluster": "Enldsomgkjdhwaeznqf2cyu6j7jqwmkbfrc2klavaaybu6rfzewkq", + "retired": {}, + "exported": {}, + "imported": [], + "registry": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ + 1 + ] + }, + "governance": { + "delay": 0, + "pending": [], + "sequence": 0 + }, + "controllers": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": { + "keys": [ + { + "$bytes": "01d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a" + } + ], + "sequence": 0, + "next_keys": [ + "E4fnvjywz23zeyb426croyvctrtqsse237th3kfjid4pfeewx7noa" + ], + "threshold": 1, + "last_event": "Ei473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "establishment": 0, + "next_threshold": 1 + }, + "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa": { + "keys": [ + { + "$bytes": "013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c" + } + ], + "sequence": 0, + "next_keys": [ + "Eqmsawig6oznh4b5cbovqukvzxa5u5jbiklkrlwhtdo6rbrsyjfnq" + ], + "threshold": 1, + "last_event": "Ezxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "establishment": 0, + "next_threshold": 1 + } + } + }, + "expected_state_cbor_hex": "aa656279746573a1783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771a565636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656f776e65727835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371666d696e746564006c686973746f72795f686173685820c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f656672616d6501657065657273a1783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a79756578346670673263707061a1646b65797384582101d661c78b74359562c1b4904782873dcba3adb2ebc3020ecb09f8953d28e0d2e3582101036ca30b2a9433913c505fee8dc8f0bfaa7c9d34574688ac0920f4fcb914c91d582101804cee78a663531717a54d35fbf556b70e4625a77e3dc3a5219cf783e8917296582101ef69b130554bf4befe39394a462cda93a9ad647c721e0b5ea09b323e77f7b60867636c75737465727835456e6c64736f6d676b6a64687761657a6e716632637975366a376a71776d6b62667263326b6c617661617962753672667a65776b716772657469726564a0686578706f72746564a068696d706f7274656480687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016a676f7665726e616e6365a36564656c6179006770656e64696e67806873657175656e6365006b636f6e74726f6c6c657273a278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c64017835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161a7646b657973815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c6873657175656e636500696e6578745f6b65797381783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e71697468726573686f6c64016a6c6173745f6576656e747835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616d65737461626c6973686d656e74006e6e6578745f7468726573686f6c6401", + "expected_state_hash": "265350b1cced48a0d2dc3abdb0ca179e44ba5047f19a29f366dcccdfce83c706" + }, + { + "frame": 1, + "inputs": [ + { + "input": { + "burn": { + "byte": "Eyl2abuhbzbih3ao7hvjmgtjyzm4b5jeufdzafn6pme3j6id53z7q", + "frame": 1, + "owner": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "016ed0d35fe23f6eb70ce464406050fee4fda36364423dcef1b6cab4511a79653ba1e24b96276d47d09e817ea69a603d10bfb7039a99e61ed5aa9f0703ecc47e08" + } + } + ], + "establishment": 0 + }, + "previous_history_hash": { + "$bytes": "c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f" + } + } + }, + "cbor_hex": "a1646275726ea56462797465783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771656672616d6501656f776e65727835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e61747572655841016ed0d35fe23f6eb70ce464406050fee4fda36364423dcef1b6cab4511a79653ba1e24b96276d47d09e817ea69a603d10bfb7039a99e61ed5aa9f0703ecc47e086d65737461626c6973686d656e74007570726576696f75735f686973746f72795f686173685820c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f" + }, + { + "input": { + "import": { + "logs": [ + [ + { + "event": { + "a": [], + "d": "Ei473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "i": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "k": [ + { + "$bytes": "01d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a" + } + ], + "n": [ + "E4fnvjywz23zeyb426croyvctrtqsse237th3kfjid4pfeewx7noa" + ], + "p": "", + "s": 0, + "t": "icp", + "v": "SBYTE10JSON", + "kt": 1, + "nt": 1 + }, + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01e90f89475321e5febce3d271ccb2e304301d0975a6e49aa49a9e76f54ecf4d027097eda8d45ff0d0bf14c94d86f26d7100868c1af79bcfb609792e720e6b1604" + } + } + ] + } + ], + [ + { + "event": { + "a": [], + "d": "Ezxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "i": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "k": [ + { + "$bytes": "013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c" + } + ], + "n": [ + "Eqmsawig6oznh4b5cbovqukvzxa5u5jbiklkrlwhtdo6rbrsyjfnq" + ], + "p": "", + "s": 0, + "t": "icp", + "v": "SBYTE10JSON", + "kt": 1, + "nt": 1 + }, + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01c0999c04eee90f056e29a2753f1a90665636394e819578d4cc2a2a40afb841b9a89a759b881adc095be848ba4ce9be9f64da3f4efcb5f935c0c20723ab68da07" + } + } + ] + } + ] + ], + "envelope": { + "d": "Endpw3gchsgljvx5qcffhfvuc2iam3fqdln2dol6zitfssz4fohsa", + "joule_cost": { + "measured_microjoules": 1200, + "estimated_microjoules": 1500 + }, + "provenance": { + "d": "Eyl2abuhbzbih3ao7hvjmgtjyzm4b5jeufdzafn6pme3j6id53z7q", + "cargo": { + "type": 1, + "bytes": { + "$bytes": "a1666d6963726f731a05f5e100" + } + }, + "nonce": { + "$bytes": "dcc74ebbcedebda361fb18a7abec95d9" + }, + "issuer": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "recipient": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "0188d2bbf7bf3ea95bb33866235bae150ac65c7371bc2776f17eb0944884cc8a4e7d402947d334d07e871acd0c305e6791d6e9b5747a683b6c58fc81f21dbcdd09" + } + } + ], + "establishment": 0 + } + }, + "ownership_chain": [ + { + "to": "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "from": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "frame": 2, + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01542818744f3c48fe12d750b35bf6a66cdebcc08196d471102888133fa81593870238514447840fa7e1701a79d3927ffa45d48b1310ea213a2c2def61c581d005" + } + } + ], + "establishment": 0 + }, + "destination": "Enldsomgkjdhwaeznqf2cyu6j7jqwmkbfrc2klavaaybu6rfzewkq", + "previous_history_hash": { + "$bytes": "c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f" + } + } + ] + }, + "certificate": { + "statement": { + "byte": "Eyl2abuhbzbih3ao7hvjmgtjyzm4b5jeufdzafn6pme3j6id53z7q", + "export": { + "cargo": { + "type": 1, + "bytes": { + "$bytes": "a1666d6963726f731a05f5e100" + } + }, + "owner": "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "issuer": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "minted": 0, + "exported": 2, + "destination": "Enldsomgkjdhwaeznqf2cyu6j7jqwmkbfrc2klavaaybu6rfzewkq", + "history_hash": { + "$bytes": "c987ece9b6cba695356c4c2a5c75498e9c4e419fd2e4d0a71fa76b4deeddcf2e" + } + }, + "source": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa" + }, + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "017b69b164060e1c6a75a9179fe02aa77fe9c54bf29586299f1d7260059506800b40b7b31e4a88836192a333e09c33a12f708138d256bf0b3fe33cd0dab4bb760f" + } + }, + { + "index": 1, + "signature": { + "$bytes": "015d0d531d5767f40057d105d7a922bc63a3cc747a74bfa25326a4d72a5dae6f36c6221544f78c05e69c3c9616b486497dffad5259e6d557a922b402ab9621330b" + } + }, + { + "index": 2, + "signature": { + "$bytes": "0104023a7b6779e77ecf9d9d2cca87e31b6c12b33dcf308af95020b343a87959cda9574517db9198244223edf32751653f9f823ea490977dc3ff711e8e22d1e708" + } + } + ] + } + } + }, + "cbor_hex": "a166696d706f7274a3646c6f67738281a2656576656e74ab616180616478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371616978354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371616b81582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a616e8178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f6161706061730061746369637061766b534259544531304a534f4e626b7401626e74016a7369676e61747572657381a265696e64657800697369676e6174757265584101e90f89475321e5febce3d271ccb2e304301d0975a6e49aa49a9e76f54ecf4d027097eda8d45ff0d0bf14c94d86f26d7100868c1af79bcfb609792e720e6b160481a2656576656e74ab61618061647835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f716161697835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161616b815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c616e81783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e7161706061730061746369637061766b534259544531304a534f4e626b7401626e74016a7369676e61747572657381a265696e64657800697369676e6174757265584101c0999c04eee90f056e29a2753f1a90665636394e819578d4cc2a2a40afb841b9a89a759b881adc095be848ba4ce9be9f64da3f4efcb5f935c0c20723ab68da0768656e76656c6f7065a461647835456e6470773367636873676c6a7678357163666668667675633269616d336671646c6e32646f6c367a69746673737a34666f6873616a6a6f756c655f636f7374a2746d656173757265645f6d6963726f6a6f756c65731904b075657374696d617465645f6d6963726f6a6f756c65731905dc6a70726f76656e616e6365a66164783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a377165636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656e6f6e636550dcc74ebbcedebda361fb18a7abec95d96669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637169726563697069656e747835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e617475726558410188d2bbf7bf3ea95bb33866235bae150ac65c7371bc2776f17eb0944884cc8a4e7d402947d334d07e871acd0c305e6791d6e9b5747a683b6c58fc81f21dbcdd096d65737461626c6973686d656e74006f6f776e6572736869705f636861696e81a662746f78354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716466726f6d7835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161656672616d6502697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e6174757265584101542818744f3c48fe12d750b35bf6a66cdebcc08196d471102888133fa81593870238514447840fa7e1701a79d3927ffa45d48b1310ea213a2c2def61c581d0056d65737461626c6973686d656e74006b64657374696e6174696f6e7835456e6c64736f6d676b6a64687761657a6e716632637975366a376a71776d6b62667263326b6c617661617962753672667a65776b717570726576696f75735f686973746f72795f686173685820c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f6b6365727469666963617465a26973746174656d656e74a36462797465783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771666578706f7274a765636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656f776e657278354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371666d696e74656400686578706f72746564026b64657374696e6174696f6e7835456e6c64736f6d676b6a64687761657a6e716632637975366a376a71776d6b62667263326b6c617661617962753672667a65776b716c686973746f72795f686173685820c987ece9b6cba695356c4c2a5c75498e9c4e419fd2e4d0a71fa76b4deeddcf2e66736f75726365783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616a7369676e61747572657383a265696e64657800697369676e61747572655841017b69b164060e1c6a75a9179fe02aa77fe9c54bf29586299f1d7260059506800b40b7b31e4a88836192a333e09c33a12f708138d256bf0b3fe33cd0dab4bb760fa265696e64657801697369676e61747572655841015d0d531d5767f40057d105d7a922bc63a3cc747a74bfa25326a4d72a5dae6f36c6221544f78c05e69c3c9616b486497dffad5259e6d557a922b402ab9621330ba265696e64657802697369676e617475726558410104023a7b6779e77ecf9d9d2cca87e31b6c12b33dcf308af95020b343a87959cda9574517db9198244223edf32751653f9f823ea490977dc3ff711e8e22d1e708" + } + ], + "expected_results": [ + { + "input": "3755d36d70866f2a8013a98d6ba99766ba3f9d542f5a4b12b9475b7c12d9cb6f", + "class": "import", + "outcome": "dropped", + "error": "duplicate_byte" + }, + { + "input": "1f7cec4e9e9181355fdc311187c5356e3a520999cb89ab4ae41ed9a59efc66fa", + "class": "burn", + "outcome": "applied" + } + ], + "expected_state": { + "bytes": {}, + "frame": 2, + "peers": { + "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa": { + "keys": [ + { + "$bytes": "01d661c78b74359562c1b4904782873dcba3adb2ebc3020ecb09f8953d28e0d2e3" + }, + { + "$bytes": "01036ca30b2a9433913c505fee8dc8f0bfaa7c9d34574688ac0920f4fcb914c91d" + }, + { + "$bytes": "01804cee78a663531717a54d35fbf556b70e4625a77e3dc3a5219cf783e8917296" + }, + { + "$bytes": "01ef69b130554bf4befe39394a462cda93a9ad647c721e0b5ea09b323e77f7b608" + } + ] + } + }, + "cluster": "Enldsomgkjdhwaeznqf2cyu6j7jqwmkbfrc2klavaaybu6rfzewkq", + "retired": { + "Eyl2abuhbzbih3ao7hvjmgtjyzm4b5jeufdzafn6pme3j6id53z7q": { + "cargo": { + "type": 1, + "bytes": { + "$bytes": "a1666d6963726f731a05f5e100" + } + }, + "owner": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "issuer": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "minted": 0, + "retired": 1, + "history_hash": { + "$bytes": "c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f" + } + } + }, + "exported": {}, + "imported": [], + "registry": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ + 1 + ] + }, + "governance": { + "delay": 0, + "pending": [], + "sequence": 0 + }, + "controllers": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": { + "keys": [ + { + "$bytes": "01d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a" + } + ], + "sequence": 0, + "next_keys": [ + "E4fnvjywz23zeyb426croyvctrtqsse237th3kfjid4pfeewx7noa" + ], + "threshold": 1, + "last_event": "Ei473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "establishment": 0, + "next_threshold": 1 + }, + "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa": { + "keys": [ + { + "$bytes": "013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c" + } + ], + "sequence": 0, + "next_keys": [ + "Eqmsawig6oznh4b5cbovqukvzxa5u5jbiklkrlwhtdo6rbrsyjfnq" + ], + "threshold": 1, + "last_event": "Ezxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "establishment": 0, + "next_threshold": 1 + } + } + }, + "expected_state_cbor_hex": "aa656279746573a0656672616d6502657065657273a1783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a79756578346670673263707061a1646b65797384582101d661c78b74359562c1b4904782873dcba3adb2ebc3020ecb09f8953d28e0d2e3582101036ca30b2a9433913c505fee8dc8f0bfaa7c9d34574688ac0920f4fcb914c91d582101804cee78a663531717a54d35fbf556b70e4625a77e3dc3a5219cf783e8917296582101ef69b130554bf4befe39394a462cda93a9ad647c721e0b5ea09b323e77f7b60867636c75737465727835456e6c64736f6d676b6a64687761657a6e716632637975366a376a71776d6b62667263326b6c617661617962753672667a65776b716772657469726564a1783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771a665636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656f776e65727835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371666d696e746564006772657469726564016c686973746f72795f686173685820c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f686578706f72746564a068696d706f7274656480687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016a676f7665726e616e6365a36564656c6179006770656e64696e67806873657175656e6365006b636f6e74726f6c6c657273a278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c64017835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161a7646b657973815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c6873657175656e636500696e6578745f6b65797381783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e71697468726573686f6c64016a6c6173745f6576656e747835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616d65737461626c6973686d656e74006e6e6578745f7468726573686f6c6401", + "expected_state_hash": "f519b919dddd4c7bcff8d18bac282645c74e8b693c73a0169c2dfca9526c3eed" + }, + { + "frame": 2, + "inputs": [ + { + "input": { + "import": { + "logs": [ + [ + { + "event": { + "a": [], + "d": "Ei473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "i": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "k": [ + { + "$bytes": "01d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a" + } + ], + "n": [ + "E4fnvjywz23zeyb426croyvctrtqsse237th3kfjid4pfeewx7noa" + ], + "p": "", + "s": 0, + "t": "icp", + "v": "SBYTE10JSON", + "kt": 1, + "nt": 1 + }, + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01e90f89475321e5febce3d271ccb2e304301d0975a6e49aa49a9e76f54ecf4d027097eda8d45ff0d0bf14c94d86f26d7100868c1af79bcfb609792e720e6b1604" + } + } + ] + } + ], + [ + { + "event": { + "a": [], + "d": "Ezxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "i": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "k": [ + { + "$bytes": "013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c" + } + ], + "n": [ + "Eqmsawig6oznh4b5cbovqukvzxa5u5jbiklkrlwhtdo6rbrsyjfnq" + ], + "p": "", + "s": 0, + "t": "icp", + "v": "SBYTE10JSON", + "kt": 1, + "nt": 1 + }, + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01c0999c04eee90f056e29a2753f1a90665636394e819578d4cc2a2a40afb841b9a89a759b881adc095be848ba4ce9be9f64da3f4efcb5f935c0c20723ab68da07" + } + } + ] + } + ] + ], + "envelope": { + "d": "Endpw3gchsgljvx5qcffhfvuc2iam3fqdln2dol6zitfssz4fohsa", + "joule_cost": { + "measured_microjoules": 1200, + "estimated_microjoules": 1500 + }, + "provenance": { + "d": "Eyl2abuhbzbih3ao7hvjmgtjyzm4b5jeufdzafn6pme3j6id53z7q", + "cargo": { + "type": 1, + "bytes": { + "$bytes": "a1666d6963726f731a05f5e100" + } + }, + "nonce": { + "$bytes": "dcc74ebbcedebda361fb18a7abec95d9" + }, + "issuer": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "recipient": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "0188d2bbf7bf3ea95bb33866235bae150ac65c7371bc2776f17eb0944884cc8a4e7d402947d334d07e871acd0c305e6791d6e9b5747a683b6c58fc81f21dbcdd09" + } + } + ], + "establishment": 0 + } + }, + "ownership_chain": [ + { + "to": "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "from": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "frame": 2, + "signature": { + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "01542818744f3c48fe12d750b35bf6a66cdebcc08196d471102888133fa81593870238514447840fa7e1701a79d3927ffa45d48b1310ea213a2c2def61c581d005" + } + } + ], + "establishment": 0 + }, + "destination": "Enldsomgkjdhwaeznqf2cyu6j7jqwmkbfrc2klavaaybu6rfzewkq", + "previous_history_hash": { + "$bytes": "c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f" + } + } + ] + }, + "certificate": { + "statement": { + "byte": "Eyl2abuhbzbih3ao7hvjmgtjyzm4b5jeufdzafn6pme3j6id53z7q", + "export": { + "cargo": { + "type": 1, + "bytes": { + "$bytes": "a1666d6963726f731a05f5e100" + } + }, + "owner": "Bqeerhhfrn2brgrbslwilntkcdfcngatst3j5acuu6krzsggi2tcq", + "issuer": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "minted": 0, + "exported": 2, + "destination": "Enldsomgkjdhwaeznqf2cyu6j7jqwmkbfrc2klavaaybu6rfzewkq", + "history_hash": { + "$bytes": "c987ece9b6cba695356c4c2a5c75498e9c4e419fd2e4d0a71fa76b4deeddcf2e" + } + }, + "source": "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa" + }, + "signatures": [ + { + "index": 0, + "signature": { + "$bytes": "017b69b164060e1c6a75a9179fe02aa77fe9c54bf29586299f1d7260059506800b40b7b31e4a88836192a333e09c33a12f708138d256bf0b3fe33cd0dab4bb760f" + } + }, + { + "index": 1, + "signature": { + "$bytes": "015d0d531d5767f40057d105d7a922bc63a3cc747a74bfa25326a4d72a5dae6f36c6221544f78c05e69c3c9616b486497dffad5259e6d557a922b402ab9621330b" + } + }, + { + "index": 2, + "signature": { + "$bytes": "0104023a7b6779e77ecf9d9d2cca87e31b6c12b33dcf308af95020b343a87959cda9574517db9198244223edf32751653f9f823ea490977dc3ff711e8e22d1e708" + } + } + ] + } + } + }, + "cbor_hex": "a166696d706f7274a3646c6f67738281a2656576656e74ab616180616478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371616978354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371616b81582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a616e8178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f6161706061730061746369637061766b534259544531304a534f4e626b7401626e74016a7369676e61747572657381a265696e64657800697369676e6174757265584101e90f89475321e5febce3d271ccb2e304301d0975a6e49aa49a9e76f54ecf4d027097eda8d45ff0d0bf14c94d86f26d7100868c1af79bcfb609792e720e6b160481a2656576656e74ab61618061647835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f716161697835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161616b815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c616e81783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e7161706061730061746369637061766b534259544531304a534f4e626b7401626e74016a7369676e61747572657381a265696e64657800697369676e6174757265584101c0999c04eee90f056e29a2753f1a90665636394e819578d4cc2a2a40afb841b9a89a759b881adc095be848ba4ce9be9f64da3f4efcb5f935c0c20723ab68da0768656e76656c6f7065a461647835456e6470773367636873676c6a7678357163666668667675633269616d336671646c6e32646f6c367a69746673737a34666f6873616a6a6f756c655f636f7374a2746d656173757265645f6d6963726f6a6f756c65731904b075657374696d617465645f6d6963726f6a6f756c65731905dc6a70726f76656e616e6365a66164783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a377165636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656e6f6e636550dcc74ebbcedebda361fb18a7abec95d96669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637169726563697069656e747835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e617475726558410188d2bbf7bf3ea95bb33866235bae150ac65c7371bc2776f17eb0944884cc8a4e7d402947d334d07e871acd0c305e6791d6e9b5747a683b6c58fc81f21dbcdd096d65737461626c6973686d656e74006f6f776e6572736869705f636861696e81a662746f78354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716466726f6d7835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161656672616d6502697369676e6174757265a26a7369676e61747572657381a265696e64657800697369676e6174757265584101542818744f3c48fe12d750b35bf6a66cdebcc08196d471102888133fa81593870238514447840fa7e1701a79d3927ffa45d48b1310ea213a2c2def61c581d0056d65737461626c6973686d656e74006b64657374696e6174696f6e7835456e6c64736f6d676b6a64687761657a6e716632637975366a376a71776d6b62667263326b6c617661617962753672667a65776b717570726576696f75735f686973746f72795f686173685820c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f6b6365727469666963617465a26973746174656d656e74a36462797465783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771666578706f7274a765636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656f776e657278354271656572686866726e326272677262736c77696c6e746b636466636e6761747374336a3561637575366b727a73676769327463716669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371666d696e74656400686578706f72746564026b64657374696e6174696f6e7835456e6c64736f6d676b6a64687761657a6e716632637975366a376a71776d6b62667263326b6c617661617962753672667a65776b716c686973746f72795f686173685820c987ece9b6cba695356c4c2a5c75498e9c4e419fd2e4d0a71fa76b4deeddcf2e66736f75726365783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a797565783466706732637070616a7369676e61747572657383a265696e64657800697369676e61747572655841017b69b164060e1c6a75a9179fe02aa77fe9c54bf29586299f1d7260059506800b40b7b31e4a88836192a333e09c33a12f708138d256bf0b3fe33cd0dab4bb760fa265696e64657801697369676e61747572655841015d0d531d5767f40057d105d7a922bc63a3cc747a74bfa25326a4d72a5dae6f36c6221544f78c05e69c3c9616b486497dffad5259e6d557a922b402ab9621330ba265696e64657802697369676e617475726558410104023a7b6779e77ecf9d9d2cca87e31b6c12b33dcf308af95020b343a87959cda9574517db9198244223edf32751653f9f823ea490977dc3ff711e8e22d1e708" + } + ], + "expected_results": [ + { + "input": "3755d36d70866f2a8013a98d6ba99766ba3f9d542f5a4b12b9475b7c12d9cb6f", + "class": "import", + "outcome": "dropped", + "error": "byte_retired" + } + ], + "expected_state": { + "bytes": {}, + "frame": 3, + "peers": { + "E6kaebpcrj3urugbzedoxrrn5b3bup5uvochj3pjyuex4fpg2cppa": { + "keys": [ + { + "$bytes": "01d661c78b74359562c1b4904782873dcba3adb2ebc3020ecb09f8953d28e0d2e3" + }, + { + "$bytes": "01036ca30b2a9433913c505fee8dc8f0bfaa7c9d34574688ac0920f4fcb914c91d" + }, + { + "$bytes": "01804cee78a663531717a54d35fbf556b70e4625a77e3dc3a5219cf783e8917296" + }, + { + "$bytes": "01ef69b130554bf4befe39394a462cda93a9ad647c721e0b5ea09b323e77f7b608" + } + ] + } + }, + "cluster": "Enldsomgkjdhwaeznqf2cyu6j7jqwmkbfrc2klavaaybu6rfzewkq", + "retired": { + "Eyl2abuhbzbih3ao7hvjmgtjyzm4b5jeufdzafn6pme3j6id53z7q": { + "cargo": { + "type": 1, + "bytes": { + "$bytes": "a1666d6963726f731a05f5e100" + } + }, + "owner": "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "issuer": "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "minted": 0, + "retired": 1, + "history_hash": { + "$bytes": "c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f" + } + } + }, + "exported": {}, + "imported": [], + "registry": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": [ + 1 + ] + }, + "governance": { + "delay": 0, + "pending": [], + "sequence": 0 + }, + "controllers": { + "Bi473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq": { + "keys": [ + { + "$bytes": "01d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a" + } + ], + "sequence": 0, + "next_keys": [ + "E4fnvjywz23zeyb426croyvctrtqsse237th3kfjid4pfeewx7noa" + ], + "threshold": 1, + "last_event": "Ei473abxg23bmfn2aud3q6xot7apm3d6oca5zjaadlliirhc6ivcq", + "establishment": 0, + "next_threshold": 1 + }, + "Bzxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa": { + "keys": [ + { + "$bytes": "013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c" + } + ], + "sequence": 0, + "next_keys": [ + "Eqmsawig6oznh4b5cbovqukvzxa5u5jbiklkrlwhtdo6rbrsyjfnq" + ], + "threshold": 1, + "last_event": "Ezxpecfxm3pdlfe6xm6ps45kvhdxielo55ktsj5ndknyhgnr72oqa", + "establishment": 0, + "next_threshold": 1 + } + } + }, + "expected_state_cbor_hex": "aa656279746573a0656672616d6503657065657273a1783545366b6165627063726a3375727567627a65646f7872726e3562336275703575766f63686a33706a79756578346670673263707061a1646b65797384582101d661c78b74359562c1b4904782873dcba3adb2ebc3020ecb09f8953d28e0d2e3582101036ca30b2a9433913c505fee8dc8f0bfaa7c9d34574688ac0920f4fcb914c91d582101804cee78a663531717a54d35fbf556b70e4625a77e3dc3a5219cf783e8917296582101ef69b130554bf4befe39394a462cda93a9ad647c721e0b5ea09b323e77f7b60867636c75737465727835456e6c64736f6d676b6a64687761657a6e716632637975366a376a71776d6b62667263326b6c617661617962753672667a65776b716772657469726564a1783545796c3261627568627a62696833616f3768766a6d67746a797a6d3462356a657566647a61666e36706d65336a36696435337a3771a665636172676fa26474797065016562797465734da1666d6963726f731a05f5e100656f776e65727835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616669737375657278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371666d696e746564006772657469726564016c686973746f72795f686173685820c2f400d0e1c8507d81df3d52c34d38cb381ea49428f202b7cf61369f207dde7f686578706f72746564a068696d706f7274656480687265676973747279a178354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c6969726863366976637181016a676f7665726e616e6365a36564656c6179006770656e64696e67806873657175656e6365006b636f6e74726f6c6c657273a278354269343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c69697268633669766371a7646b65797381582101d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a6873657175656e636500696e6578745f6b6579738178354534666e766a79777a32337a65796234323663726f797663747274717373653233377468336b666a696434706665657778376e6f61697468726573686f6c64016a6c6173745f6576656e7478354569343733616278673233626d666e32617564337136786f743761706d3364366f6361357a6a6161646c6c696972686336697663716d65737461626c6973686d656e74006e6e6578745f7468726573686f6c64017835427a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f7161a7646b657973815821013d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c6873657175656e636500696e6578745f6b65797381783545716d7361776967366f7a6e6834623563626f7671756b767a78613575356a62696b6c6b726c776874646f3672627273796a666e71697468726573686f6c64016a6c6173745f6576656e747835457a7870656366786d3370646c666536786d36707334356b7668647869656c6f35356b74736a356e646b6e7968676e7237326f71616d65737461626c6973686d656e74006e6e6578745f7468726573686f6c6401", + "expected_state_hash": "aeedc564d162c8e64f429048d7a0cee96b0c39155e12a602d3f2e7a16ad3d78c" } ] } diff --git a/smart-byte/smart-byte-rs/Cargo.lock b/smart-byte/smart-byte-rs/Cargo.lock index 79a46f246..b37607158 100644 --- a/smart-byte/smart-byte-rs/Cargo.lock +++ b/smart-byte/smart-byte-rs/Cargo.lock @@ -6117,6 +6117,7 @@ name = "smart-byte-lockstep" version = "0.1.0" dependencies = [ "smart-byte-core", + "smart-byte-keri-witness", "smart-byte-state", "thiserror 2.0.18", ] diff --git a/smart-byte/smart-byte-rs/crates/smart-byte-conformance/src/states.rs b/smart-byte/smart-byte-rs/crates/smart-byte-conformance/src/states.rs index b840d9c4d..9ef8697c0 100644 --- a/smart-byte/smart-byte-rs/crates/smart-byte-conformance/src/states.rs +++ b/smart-byte/smart-byte-rs/crates/smart-byte-conformance/src/states.rs @@ -2,20 +2,27 @@ //! frame by frame. //! //! Each vector starts from a genesis state and applies frames of inputs — -//! key events, mints and transfers built from [`World`]'s parties — giving -//! the result of every input and the state and state hash every frame -//! reaches. As elsewhere in the pack, every expected value is what the -//! reference computes, and generation fails if the reference applies or -//! drops any input other than as the vector says. +//! key events, governance, mints, imports, transfers and burns built from +//! [`World`]'s parties — giving the result of every input and the state and +//! state hash every frame reaches. Vectors that move a byte between clusters +//! run clusters A and B, four nodes each, peering with each other; state-021 +//! adds a peer D of three. As elsewhere in the pack, every expected value is +//! what the reference computes, and generation fails if the reference +//! applies or drops any input other than as the vector says. use smart_byte_core::canonical::{self, Value}; use smart_byte_core::keys::IndexedSignature; use smart_byte_core::ownership::Transition; use smart_byte_core::provenance::Provenance; -use smart_byte_core::{Aid, Blake3Hash, Cargo, Envelope, JouleCost, Said, Signer, wire}; +use smart_byte_core::{ + Aid, Blake3Hash, Cargo, Envelope, JouleCost, PrefixedKey, Said, Signer, SigningKey, wire, +}; use smart_byte_keri_witness::VERSION_STRING; use smart_byte_keri_witness::events::{KeyEvent, RecoveryEvent, Threshold, finalize_event}; -use smart_byte_state::{Input, State}; +use smart_byte_state::certificate::node_key; +use smart_byte_state::{ + Approval, Burn, Certificate, Change, ExportStatement, Input, Proposal, State, +}; use crate::json::{J, to_json}; use crate::logs::patched; @@ -38,6 +45,37 @@ fn state_json(state: &State) -> J { to_json(&canonical::decode(&state.to_cbor()).expect("a state is canonical")) } +/// The identifier of cluster `label`. +fn cluster(label: &str) -> Said { + Said::hash(format!("smart-byte/conformance/v1 cluster {label}").as_bytes()) +} + +/// Cluster `label`'s four node keys. +fn nodes(label: &str) -> Vec { + (0..4) + .map(|i| { + SigningKey::from_bytes( + &Said::hash( + format!("smart-byte/conformance/v1 cluster {label} node {i}").as_bytes(), + ) + .0, + ) + }) + .collect() +} + +fn node_keys(label: &str) -> Vec { + nodes(label).iter().map(node_key).collect() +} + +/// `statement`, signed by cluster `label`'s nodes `signers`. +fn certify(statement: ExportStatement, label: &str, signers: &[u64]) -> Certificate { + let keys = nodes(label); + let picked: Vec<(u64, &SigningKey)> = + signers.iter().map(|i| (*i, &keys[*i as usize])).collect(); + Certificate::sign(statement, &picked) +} + /// One vector, built frame by frame against the reference. struct Run { name: &'static str, @@ -45,11 +83,21 @@ struct Run { state: State, genesis: J, frames: Vec, + /// What the frames so far exported, for the vectors that import it. + exports: Vec, } impl Run { + /// A vector on cluster A, with no peers and no governance delay. fn new(name: &'static str, description: &'static str, registry: &[(Aid, u64)]) -> Run { - let state = State::genesis(registry.iter().copied()); + Run::from( + name, + description, + State::genesis(cluster("A"), registry.iter().copied(), [], 0), + ) + } + + fn from(name: &'static str, description: &'static str, state: State) -> Run { let genesis = J::obj([ ("state", state_json(&state)), ("cbor_hex", J::Str(hex::encode(state.to_cbor()))), @@ -61,6 +109,7 @@ impl Run { state, genesis, frames: Vec::new(), + exports: Vec::new(), } } @@ -69,6 +118,7 @@ impl Run { let frame = self.state.frame; let submitted: Vec> = inputs.iter().map(|(b, _)| b.clone()).collect(); let report = self.state.apply_frame(&submitted); + self.exports.extend(report.exports.iter().cloned()); for (bytes, want) in &inputs { let got = report .results @@ -296,7 +346,7 @@ pub fn states(world: &World) -> J { (h1, h2) }; - J::Arr(vec![ + let mut vectors = vec![ Run::new( "state-001-issue-transfer-rotate", "A cluster's life in five frames. Frame 0 applies the issuer's, Alice's and the custodian's inceptions and the issuer's mint of env-001's USD byte to Alice: genesis issuance is minting at frame 0. Frame 1: Alice transfers the byte to the custodian. Frame 2: Alice rotates her keys, and the custodian, two of its three keys signing, transfers the byte back. Frame 3: Alice's interaction anchors the byte's identity, and she transfers it to the custodian with the key she rotated to. Frame 4 has no inputs and only advances the frame number, which the state hash covers.", @@ -446,7 +496,7 @@ pub fn states(world: &World) -> J { .json(), Run::new( "state-011-malformed-inputs", - "Inputs dropped before they are read: bytes that are not canonical; an input naming a class there is not (`burn`); an array, not a map; a key event with a member identity spec §3.3 does not define; a mint whose cargo was changed after its identity was computed; a transfer with a member there is not. Inputs naming no class apply last.", + "Inputs dropped before they are read: bytes that are not canonical; an input naming a class there is not (`melt`); an array, not a map; a key event with a member identity spec §3.3 does not define; a mint whose cargo was changed after its identity was computed; a transfer with a member there is not; a burn naming only its byte; a proposal whose change is an action there is not; an import with neither certificate nor envelope. Inputs naming no class apply last.", ®istry, ) .frame(vec![ @@ -454,10 +504,36 @@ pub fn states(world: &World) -> J { patched(&transfer(&alice0, &byte, h0, custodian.aid, 0).0, &[0x65, b'f', b'r', b'a', b'm', b'e', 0x00], &[0x65, b'f', b'r', b'a', b'm', b'e', 0x18, 0x00]), Dropped("non_shortest_integer"), ), + ( + canonical::encode(&Value::map([("melt", Value::map([("byte", Value::text(&byte.to_said_text()))]))])).unwrap(), + Dropped("malformed_input"), + ), ( canonical::encode(&Value::map([("burn", Value::map([("byte", Value::text(&byte.to_said_text()))]))])).unwrap(), Dropped("malformed_input"), ), + ( + canonical::encode(&Value::map([( + "governance", + Value::map([ + ( + "proposal", + Value::map([ + ("cluster", Value::text(&cluster("A").to_said_text())), + ("sequence", Value::Unsigned(0)), + ("change", Value::map([("action", Value::text("mint_anything"))])), + ]), + ), + ("approvals", Value::Array(vec![])), + ]), + )])) + .unwrap(), + Dropped("malformed_input"), + ), + ( + canonical::encode(&Value::map([("import", Value::map([("logs", Value::Array(vec![]))]))])).unwrap(), + Dropped("malformed_input"), + ), (canonical::encode(&Value::Array(vec![Value::Unsigned(1)])).unwrap(), Dropped("malformed_input")), ( key_event(&LoggedEvent::signed_bytes( @@ -504,5 +580,505 @@ pub fn states(world: &World) -> J { (mint.clone(), Applied), ]) .json(), - ]) + ]; + vectors.extend(lifecycle(world)); + J::Arr(vectors) +} + +/// A party's log, as an import carries it: each event with its signatures. +fn import_log(party: &Party, events: usize) -> Vec<(KeyEvent, Vec)> { + party.log[..events] + .iter() + .map(|e| { + ( + e.event(), + e.signatures + .iter() + .map(|s| IndexedSignature { + index: u64::from(s.index), + signature: s.signature.clone(), + }) + .collect(), + ) + }) + .collect() +} + +/// An issuer's approval of `proposal`, signed under `establishment` with +/// `keys`. +fn approve( + party: &Party, + establishment: u64, + keys: &[(u64, Key)], + proposal: &Proposal, +) -> Approval { + Approval { + approver: party.aid, + signature: party + .signer(establishment, keys) + .sign(&wire::to_vec(proposal).expect("a proposal encodes")), + } +} + +/// Governance, burns, and a byte's round trip between two clusters. +fn lifecycle(world: &World) -> Vec { + let k = Key::named; + let c = |n: usize| k(&format!("custodian-{n}")); + let (issuer, alice, custodian) = (&world.issuer, &world.alice, &world.custodian); + let usd = 1u64; + let icp = |p: &Party| key_event(&p.log[0]); + let mint = Input::mint(&world.issued.provenance); + let byte = world.issued.identity(); + let issuer0 = [(0, k("issuer-0"))]; + let alice0 = [(0, k("alice-0"))]; + let custodian0 = [(0, c(0)), (2, c(2))]; + let proposal = |sequence: u64, cluster_label: &str, change: Change| Proposal { + cluster: cluster(cluster_label), + sequence, + change, + }; + let governance = |p: &Proposal, approvals: Vec| Input::governance(p, &approvals); + let add = |issuer: Aid, cargo_type: u64| Change::AddIssuer { cargo_type, issuer }; + let remove = |issuer: Aid, cargo_type: u64| Change::RemoveIssuer { cargo_type, issuer }; + let alice_mint = mint_of( + alice, + &alice0, + custodian.aid, + "state-013 alice", + Cargo::usd_micros(5_000_000), + ); + let peered = |label: &str, other: &str| { + State::genesis( + cluster(label), + [(issuer.aid, usd)], + [(cluster(other), node_keys(other))], + 0, + ) + }; + + let mut vectors = Vec::new(); + + // ---- governance ------------------------------------------------------- + let p_add = proposal(0, "A", add(alice.aid, usd)); + vectors.push( + Run::from( + "state-013-issuer-added-after-the-delay", + "Frame 0 holds the issuer's and Alice's inceptions and the issuer's approval of adding Alice as a USD issuer. Key events apply before governance, so the approval's signer is known when it is checked. The issuer is the cluster's only issuer: one elector, so the quorum is floor(2·1/3)+1 = 1. The cluster's governance delay is 2, so the change is pending until frame 0 + 1 + 2 = 3: Alice's mint is refused in frames 1 and 2 and applied in frame 3, the change having taken effect at the frame's start. The governance sequence number advances when the proposal is accepted.", + State::genesis(cluster("A"), [(issuer.aid, usd)], [], 2), + ) + .frame(vec![ + (icp(issuer), Applied), + (icp(alice), Applied), + (governance(&p_add, vec![approve(issuer, 0, &issuer0, &p_add)]), Applied), + ]) + .frame(vec![(alice_mint.clone(), Dropped("issuer_not_registered"))]) + .frame(vec![(alice_mint.clone(), Dropped("issuer_not_registered"))]) + .frame(vec![(alice_mint.clone(), Applied)]) + .json(), + ); + + let p = |sequence: u64, cluster_label: &str, change: Change| { + proposal(sequence, cluster_label, change) + }; + let elsewhere = p(0, "B", add(custodian.aid, usd)); + let stale = p(7, "A", add(custodian.aid, usd)); + let registered = p(0, "A", add(alice.aid, usd)); + let unregistered = p(0, "A", remove(custodian.aid, usd)); + let custodian_add = p(0, "A", add(custodian.aid, usd)); + let both = |pr: &Proposal| { + vec![ + approve(issuer, 0, &issuer0, pr), + approve(alice, 0, &alice0, pr), + ] + }; + vectors.push( + Run::from( + "state-014-governance-checks", + "Proposals that fail one check each, with the issuer and Alice as the USD electorate (quorum 2): one for cluster B; one at sequence 7; adding Alice, already registered; removing the custodian, never registered; one the custodian approves, who has no vote; one approved twice by the issuer; one with the issuer's approval alone; one whose approval names the issuer but is signed with Alice's key. Every one is dropped and the governance sequence stays at 0.", + State::genesis(cluster("A"), [(issuer.aid, usd), (alice.aid, usd)], [], 0), + ) + .frame(vec![(icp(issuer), Applied), (icp(alice), Applied), (icp(custodian), Applied)]) + .frame(vec![ + (governance(&elsewhere, both(&elsewhere)), Dropped("wrong_cluster")), + (governance(&stale, both(&stale)), Dropped("stale_sequence")), + (governance(®istered, both(®istered)), Dropped("already_registered")), + (governance(&unregistered, both(&unregistered)), Dropped("not_registered")), + ( + governance( + &custodian_add, + vec![approve(issuer, 0, &issuer0, &custodian_add), approve(custodian, 0, &custodian0, &custodian_add)], + ), + Dropped("not_an_elector"), + ), + ( + governance( + &custodian_add, + vec![approve(issuer, 0, &issuer0, &custodian_add), approve(issuer, 0, &issuer0, &custodian_add)], + ), + Dropped("duplicate_approver"), + ), + (governance(&custodian_add, vec![approve(issuer, 0, &issuer0, &custodian_add)]), Dropped("below_quorum")), + ( + governance( + &custodian_add, + vec![ + Approval { + approver: issuer.aid, + signature: issuer.signer(0, &alice0).sign(&wire::to_vec(&custodian_add).unwrap()), + }, + approve(alice, 0, &alice0, &custodian_add), + ], + ), + Dropped("signature_invalid"), + ), + ]) + .json(), + ); + + let p_remove = p(0, "A", remove(custodian.aid, usd)); + vectors.push( + Run::from( + "state-015-removal-without-the-target", + "Three USD issuers; the custodian is to be removed. An issuer being removed has no vote on its own removal, so the electorate is the other two and the quorum is 2. With the custodian's approval in place of Alice's the proposal is dropped; with the issuer's and Alice's it is accepted, and from frame 3 the custodian can no longer mint.", + State::genesis(cluster("A"), [(issuer.aid, usd), (alice.aid, usd), (custodian.aid, usd)], [], 0), + ) + .frame(vec![(icp(issuer), Applied), (icp(alice), Applied), (icp(custodian), Applied)]) + .frame(vec![( + governance(&p_remove, vec![approve(issuer, 0, &issuer0, &p_remove), approve(custodian, 0, &custodian0, &p_remove)]), + Dropped("not_an_elector"), + )]) + .frame(vec![(governance(&p_remove, both(&p_remove)), Applied)]) + .frame(vec![( + mint_of(custodian, &custodian0, alice.aid, "state-015 custodian", Cargo::usd_micros(1)), + Dropped("issuer_not_registered"), + )]) + .json(), + ); + + let set_b = p( + 0, + "A", + Change::SetPeer { + peer: cluster("B"), + keys: node_keys("B"), + }, + ); + let set_self = p( + 0, + "A", + Change::SetPeer { + peer: cluster("A"), + keys: node_keys("A"), + }, + ); + let set_bad = p( + 0, + "A", + Change::SetPeer { + peer: cluster("C"), + keys: vec![PrefixedKey(vec![0x01, 1, 2, 3])], + }, + ); + let set_none = p( + 0, + "A", + Change::SetPeer { + peer: cluster("C"), + keys: vec![], + }, + ); + let set_twice = p( + 0, + "A", + Change::SetPeer { + peer: cluster("C"), + keys: vec![node_keys("C")[0].clone(), node_keys("C")[0].clone()], + }, + ); + let remove_c = p(0, "A", Change::RemovePeer { peer: cluster("C") }); + let all_three = |pr: &Proposal| { + vec![ + approve(issuer, 0, &issuer0, pr), + approve(alice, 0, &alice0, pr), + approve(custodian, 0, &custodian0, pr), + ] + }; + // Two proposals accepted in one frame, the rekeying first: inputs of a + // class apply in digest order, so the removal's approvals are put in the + // order that sorts it after the rekeying. + let rekey_b = p( + 1, + "A", + Change::SetPeer { + peer: cluster("B"), + keys: node_keys("B rekeyed"), + }, + ); + let remove_b = p(2, "A", Change::RemovePeer { peer: cluster("B") }); + let rekey_in = governance(&rekey_b, all_three(&rekey_b)); + let remove_in = [ + [0, 1, 2], + [0, 2, 1], + [1, 0, 2], + [1, 2, 0], + [2, 0, 1], + [2, 1, 0], + ] + .iter() + .map(|order| { + let approvals = all_three(&remove_b); + governance( + &remove_b, + order.iter().map(|i| approvals[*i].clone()).collect(), + ) + }) + .find(|input| digest(input) > digest(&rekey_in)) + .expect("an order of the approvals sorts the removal after the rekeying"); + vectors.push( + Run::from( + "state-016-peers-by-governance", + "A cluster's peers change by governance, which every issuer votes on: here the issuer and the custodian (USD) and Alice (joules), so the quorum is floor(2·3/3)+1 = 3. In frame 1 six proposals are dropped: cluster B as a peer with two approvals of the three; the cluster as its own peer; a peer whose key is not an Ed25519 key; a peer with no keys; a peer with one key twice; removing cluster C, which is not a peer. In frame 2 all three approve cluster B, which is a peer from frame 3. In frame 3 two proposals are accepted, in this order: B's node keys replaced (sequence 1), then B removed (sequence 2). Both take effect at frame 4, in the order they were accepted, so from frame 4 the cluster has no peers.", + State::genesis( + cluster("A"), + [(issuer.aid, usd), (alice.aid, 2), (custodian.aid, usd)], + [], + 0, + ), + ) + .frame(vec![(icp(issuer), Applied), (icp(alice), Applied), (icp(custodian), Applied)]) + .frame(vec![ + ( + governance(&set_b, vec![approve(issuer, 0, &issuer0, &set_b), approve(alice, 0, &alice0, &set_b)]), + Dropped("below_quorum"), + ), + (governance(&set_self, all_three(&set_self)), Dropped("wrong_cluster")), + (governance(&set_bad, all_three(&set_bad)), Dropped("malformed_verifying_key")), + (governance(&set_none, all_three(&set_none)), Dropped("invalid_threshold")), + (governance(&set_twice, all_three(&set_twice)), Dropped("duplicate_key")), + (governance(&remove_c, all_three(&remove_c)), Dropped("not_a_peer")), + ]) + .frame(vec![(governance(&set_b, all_three(&set_b)), Applied)]) + .frame(vec![(rekey_in, Applied), (remove_in, Applied)]) + .frame(vec![]) + .json(), + ); + + let p_first = p(0, "A", add(issuer.aid, usd)); + vectors.push( + Run::from( + "state-017-no-electorate", + "A cluster whose genesis registry is empty. No issuer can approve anything, so no change can ever be accepted: governance needs a genesis issuer to start from.", + State::genesis(cluster("A"), [], [], 0), + ) + .frame(vec![(icp(issuer), Applied), (governance(&p_first, vec![]), Dropped("no_electorate"))]) + .json(), + ); + + // ---- burns ------------------------------------------------------------- + let back = world + .issued + .transfer(&alice.signer(0, &alice0), issuer.aid, 2); + let h_back = back.history_hash(); + vectors.push( + Run::new( + "state-018-redemption", + "Frame 1: burns refused, one check each — of Alice's byte in her name but signed with the issuer's key; naming frame 0; from a history the byte is not at; by the issuer, who does not own it; and of a byte the cluster has never held. Frame 2 is redemption: Alice returns the byte to its issuer and the issuer burns it, in one frame — burns apply after transfers. The byte moves to `retired`. In frame 3 nothing revives it: Alice's burn, the issuer's transfer and the replayed mint are all refused.", + &[(issuer.aid, usd)], + ) + .frame(vec![(icp(issuer), Applied), (icp(alice), Applied), (mint.clone(), Applied)]) + .frame(vec![ + (Input::burn(&Burn::sign(&alice.signer(0, &issuer0), byte, byte.0, 1)), Dropped("signature_invalid")), + (Input::burn(&Burn::sign(&alice.signer(0, &alice0), byte, byte.0, 0)), Dropped("wrong_frame")), + (Input::burn(&Burn::sign(&alice.signer(0, &alice0), byte, [7; 32], 1)), Dropped("broken_history_chain")), + (Input::burn(&Burn::sign(&issuer.signer(0, &issuer0), byte, byte.0, 1)), Dropped("not_current_owner")), + ( + Input::burn(&Burn::sign( + &alice.signer(0, &alice0), + Said::hash(b"smart-byte/conformance/v1 a byte never minted"), + [0; 32], + 1, + )), + Dropped("unknown_byte"), + ), + ]) + .frame(vec![ + (Input::burn(&Burn::sign(&issuer.signer(0, &issuer0), byte, h_back, 2)), Applied), + (Input::transfer(&byte, back.ownership_chain.last().unwrap()), Applied), + ]) + .frame(vec![ + (Input::burn(&Burn::sign(&alice.signer(0, &alice0), byte, h_back, 3)), Dropped("byte_retired")), + (transfer(&issuer.signer(0, &issuer0), &byte, h_back, alice.aid, 3).0, Dropped("byte_retired")), + (mint.clone(), Dropped("duplicate_byte")), + ]) + .json(), + ); + + // ---- between clusters ---------------------------------------------------- + // A: the byte is minted, refused passage to a cluster A does not peer with, + // and exported to the custodian in B. + let to_c = world + .issued + .export(&alice.signer(0, &alice0), custodian.aid, 1, cluster("C")); + let to_b = world + .issued + .export(&alice.signer(0, &alice0), custodian.aid, 2, cluster("B")); + let a = Run::from( + "state-019-export-and-return", + "Cluster A, peering with B. Frame 0 mints env-001's byte to Alice. Frame 1: her transfer to the custodian in cluster C is refused, as A does not peer with C. Frame 2: her transfer to the custodian in B is applied, and the byte moves to `exported`; its statement is what A's nodes certify. Frame 3: the byte can no longer be moved or minted in A. Frame 4: it comes back, B's certificate in hand (state-020), and is live in A again; imports apply before transfers, so Alice moves it within A in the same frame.", + peered("A", "B"), + ) + .frame(vec![(icp(issuer), Applied), (icp(alice), Applied), (mint.clone(), Applied)]) + .frame(vec![(Input::transfer(&byte, to_c.ownership_chain.last().unwrap()), Dropped("unknown_cluster"))]) + .frame(vec![(Input::transfer(&byte, to_b.ownership_chain.last().unwrap()), Applied)]) + .frame(vec![ + (transfer(&alice.signer(0, &alice0), &byte, to_b.history_hash(), issuer.aid, 3).0, Dropped("byte_exported")), + (mint.clone(), Dropped("duplicate_byte")), + ]); + let from_a = certify(a.exports[0].clone(), "A", &[0, 1, 2]); + let a_logs = vec![import_log(issuer, 1), import_log(alice, 1)]; + + // B: imports it, refuses the same certificate twice, and sends it back. + let home = to_b.export( + &custodian.signer(0, &custodian0), + alice.aid, + 1, + cluster("A"), + ); + let b = Run::from( + "state-020-import-and-send-back", + "Cluster B, peering with A. Frame 0 applies the custodian's inception and the import of A's certificate — signed by three of A's four nodes — with the byte's envelope and the issuer's and Alice's logs, which verify its history. The byte is live in B, owned by the custodian. Frame 1: the same certificate again is refused, and the custodian, two of its keys signing, sends the byte back to Alice in A.", + peered("B", "A"), + ) + .frame(vec![(icp(custodian), Applied), (Input::import(&from_a, &to_b, &a_logs), Applied)]) + .frame(vec![ + (Input::import(&from_a, &to_b, &a_logs), Dropped("duplicate_import")), + (Input::transfer(&byte, home.ownership_chain.last().unwrap()), Applied), + ]); + let from_b = certify(b.exports[0].clone(), "B", &[1, 2, 3]); + let b_logs = vec![ + import_log(issuer, 1), + import_log(alice, 1), + import_log(custodian, 1), + ]; + vectors.push(b.json()); + + let a = a.frame(vec![ + (Input::import(&from_b, &home, &b_logs), Applied), + ( + transfer( + &alice.signer(0, &alice0), + &byte, + home.history_hash(), + issuer.aid, + 4, + ) + .0, + Applied, + ), + ]); + vectors.insert(vectors.len() - 1, a.json()); + + let mut elsewhere = a_statement_for(&from_a, |s| s.export.destination = cluster("C")); + elsewhere = certify(elsewhere.statement, "A", &[0, 1, 2]); + let mut unknown = a_statement_for(&from_a, |s| s.source = cluster("C")); + unknown = certify(unknown.statement, "A", &[0, 1, 2]); + // A's certificate with one member of the export changed, signed again by + // A's nodes: the envelope no longer bears it out. + let restated = |edit: &dyn Fn(&mut ExportStatement)| { + Input::import( + &certify(a_statement_for(&from_a, edit).statement, "A", &[0, 1, 2]), + &to_b, + &a_logs, + ) + }; + let from_d = certify( + a_statement_for(&from_a, |s| s.source = cluster("D")).statement, + "D", + &[0, 1], + ); + vectors.push( + Run::from( + "state-021-import-checks", + "Imports into cluster B, which peers with A (four nodes) and D (three), that fail one check each: a certificate signed by two of A's four nodes, where floor(2·4/3)+1 = 3 are needed; one signed by two of D's three nodes, where all three are needed; one for a byte A sent to cluster C; one from cluster C, which B does not peer with; A's certificate with the envelope as it was before it left; certificates that differ from the envelope in one member each — the byte, its history hash, its owner, its issuer, its cargo; and A's certificate without Alice's log, so her signature cannot be checked.", + State::genesis( + cluster("B"), + [(issuer.aid, usd)], + [ + (cluster("A"), node_keys("A")), + (cluster("D"), node_keys("D")[..3].to_vec()), + ], + 0, + ), + ) + .frame(vec![(icp(custodian), Applied)]) + .frame(vec![ + (Input::import(&certify(from_a.statement.clone(), "A", &[0, 2]), &to_b, &a_logs), Dropped("below_threshold")), + (Input::import(&from_d, &to_b, &a_logs), Dropped("below_threshold")), + (Input::import(&elsewhere, &to_b, &a_logs), Dropped("wrong_cluster")), + (Input::import(&unknown, &to_b, &a_logs), Dropped("unknown_cluster")), + (Input::import(&from_a, &world.issued, &a_logs), Dropped("certificate_mismatch")), + ( + restated(&|s| s.byte = Said::hash(b"smart-byte/conformance/v1 a byte never minted")), + Dropped("certificate_mismatch"), + ), + (restated(&|s| s.export.history_hash = byte.0), Dropped("certificate_mismatch")), + (restated(&|s| s.export.owner = alice.aid), Dropped("certificate_mismatch")), + (restated(&|s| s.export.issuer = alice.aid), Dropped("certificate_mismatch")), + ( + restated(&|s| s.export.cargo = Cargo::usd_micros(1_000_000_000_000)), + Dropped("certificate_mismatch"), + ), + (Input::import(&from_a, &to_b, &a_logs[..1]), Dropped("unknown_key_state")), + ]) + .json(), + ); + + let import_a = Input::import(&from_a, &to_b, &a_logs); + let meets = Run::from( + "state-023-an-import-meets-the-byte", + "Cluster B, peering with A, where the issuer is registered as it is in A. Frame 0 mints env-001's byte in B, and the import of A's certificate for that byte (state-020) is refused with `duplicate_byte`: mints apply before imports. Frame 1: Alice burns the byte, and the same import is refused with `duplicate_byte` again, imports applying before burns. Frame 2: the same import is refused with `byte_retired`.", + peered("B", "A"), + ) + .frame(vec![ + (icp(issuer), Applied), + (icp(alice), Applied), + (mint.clone(), Applied), + (import_a.clone(), Dropped("duplicate_byte")), + ]) + .frame(vec![ + (Input::burn(&Burn::sign(&alice.signer(0, &alice0), byte, byte.0, 1)), Applied), + (import_a.clone(), Dropped("duplicate_byte")), + ]) + .frame(vec![(import_a, Dropped("byte_retired"))]) + .json(); + let p_alone = p(0, "A", remove(alice.aid, 2)); + vectors.push( + Run::from( + "state-022-removing-a-type-s-only-issuer", + "Alice is the only issuer of joules (cargo type 2). With her excluded from the vote on her own removal, the type has no electorate of its own, so every other issuer votes: here the issuer alone, quorum 1. Her own approval is refused; the issuer's is accepted, and from frame 3 Alice, left with no cargo type, is gone from the registry.", + State::genesis(cluster("A"), [(issuer.aid, usd), (alice.aid, 2)], [], 0), + ) + .frame(vec![(icp(issuer), Applied), (icp(alice), Applied)]) + .frame(vec![(governance(&p_alone, vec![approve(alice, 0, &alice0, &p_alone)]), Dropped("not_an_elector"))]) + .frame(vec![(governance(&p_alone, vec![approve(issuer, 0, &issuer0, &p_alone)]), Applied)]) + .frame(vec![]) + .json(), + ); + vectors.push(meets); + + vectors +} + +/// A certificate whose statement is `certificate`'s with `edit` applied, +/// unsigned. +fn a_statement_for( + certificate: &Certificate, + edit: impl FnOnce(&mut ExportStatement), +) -> Certificate { + let mut statement = certificate.statement.clone(); + edit(&mut statement); + Certificate { + statement, + signatures: vec![], + } } diff --git a/smart-byte/smart-byte-rs/crates/smart-byte-conformance/tests/pack.rs b/smart-byte/smart-byte-rs/crates/smart-byte-conformance/tests/pack.rs index 140b3067c..950f6797c 100644 --- a/smart-byte/smart-byte-rs/crates/smart-byte-conformance/tests/pack.rs +++ b/smart-byte/smart-byte-rs/crates/smart-byte-conformance/tests/pack.rs @@ -283,6 +283,67 @@ fn the_verifier_catches_a_planted_defect_in_every_file() { inputs.retain(|i| i["input"].get("key_event").is_none()); }), ), + ( + "state_vectors.json", + "state-013-issuer-added-after-the-delay", + Box::new(|v| v["frames"][2]["expected_results"][0]["error"] = json!("below_quorum")), + ), + ( + "state_vectors.json", + "state-015-removal-without-the-target", + Box::new(|v| v["frames"][1]["expected_results"][0]["error"] = json!("below_quorum")), + ), + ( + "state_vectors.json", + "state-018-redemption", + Box::new(|v| { + let results = v["frames"][3]["expected_results"].as_array_mut().unwrap(); + let r = results + .iter_mut() + .find(|r| r["error"] == "duplicate_byte") + .unwrap(); + r["error"] = json!("byte_retired"); + }), + ), + ( + "state_vectors.json", + "state-019-export-and-return", + Box::new(move |v| { + let h = v["frames"][2]["expected_state_hash"] + .as_str() + .unwrap() + .to_owned(); + v["frames"][2]["expected_state_hash"] = json!(flip_last(&h)); + }), + ), + ( + "state_vectors.json", + "state-020-import-and-send-back", + Box::new(|v| { + let results = v["frames"][0]["expected_results"].as_array_mut().unwrap(); + let r = results.iter_mut().find(|r| r["class"] == "import").unwrap(); + r["outcome"] = json!("dropped"); + r["error"] = json!("duplicate_import"); + }), + ), + ( + "state_vectors.json", + "state-021-import-checks", + Box::new(|v| { + let results = v["frames"][1]["expected_results"].as_array_mut().unwrap(); + let r = results + .iter_mut() + .find(|r| r["error"] == "below_threshold") + .unwrap(); + r["error"] = json!("signature_invalid"); + }), + ), + ( + "state_vectors.json", + "state-023-an-import-meets-the-byte", + // A burned byte's import reported as if the byte were still live. + Box::new(|v| v["frames"][2]["expected_results"][0]["error"] = json!("duplicate_byte")), + ), ( "lockstep_vectors.json", "lockstep-002-supermajority-commit", @@ -602,6 +663,27 @@ fn the_files_describe_one_world() { .any(|i| i["mint"] == issued["envelope"]["provenance"]), "env-001's mint" ); + // A's export is what B imports, and B's export is what A takes back. + let a = by_name("state_vectors.json", "state-019-export-and-return"); + let b = by_name("state_vectors.json", "state-020-import-and-send-back"); + let id = issued["expected"]["identity"].as_str().unwrap(); + let imported = |frame: &Value| { + frame["inputs"] + .as_array() + .unwrap() + .iter() + .find_map(|i| i["input"].get("import").cloned()) + .unwrap()["certificate"]["statement"]["export"] + .clone() + }; + assert_eq!( + imported(&b["frames"][0]), + a["frames"][2]["expected_state"]["exported"][id] + ); + assert_eq!( + imported(&a["frames"][4]), + b["frames"][1]["expected_state"]["exported"][id] + ); // The byte the cluster holds is env-001's. let state = &journey["frames"][0]["expected_state"]; assert!( diff --git a/smart-byte/smart-byte-rs/crates/smart-byte-core/src/envelope.rs b/smart-byte/smart-byte-rs/crates/smart-byte-core/src/envelope.rs index d52671943..80a24bcd7 100644 --- a/smart-byte/smart-byte-rs/crates/smart-byte-core/src/envelope.rs +++ b/smart-byte/smart-byte-rs/crates/smart-byte-core/src/envelope.rs @@ -123,6 +123,21 @@ impl Envelope { Self::stamped(self.provenance.clone(), chain, self.joule_cost) } + /// Move the byte out of its cluster, to `to` in the cluster + /// `destination` (treatise §11.3.3). + pub fn export(&self, owner: &Signer, to: Aid, frame: u64, destination: Said) -> Self { + let mut chain = self.ownership_chain.clone(); + chain.push(Transition::sign_export( + owner, + &self.identity(), + self.history_hash(), + to, + frame, + destination, + )); + Self::stamped(self.provenance.clone(), chain, self.joule_cost) + } + /// The same byte with its joule cost replaced: a new snapshot. pub fn with_joule_cost(&self, joule_cost: JouleCost) -> Self { Self::stamped( @@ -240,7 +255,10 @@ impl Envelope { if t.from != owner { return Err(EnvelopeError::NotOwner { transition: k }); } - // One transfer per byte per frame (treatise §8.4), so frames rise. + // One transfer per byte per frame (treatise §8.4), so frames rise + // within a cluster. Each cluster counts its own frames, so after a + // transition that moves the byte to another cluster the next one + // is not compared with it. if last_frame.is_some_and(|f| t.frame <= f) { return Err(EnvelopeError::FrameOrder { transition: k }); } @@ -251,7 +269,7 @@ impl Envelope { })?; history = t.next_history_hash(); owner = t.to; - last_frame = Some(t.frame); + last_frame = t.destination.is_none().then_some(t.frame); } Ok(Verified { identity, @@ -342,6 +360,26 @@ mod tests { assert_eq!(Envelope::from_cbor(&stale.to_cbor()).unwrap_err().class(), "said_mismatch"); } + #[test] + fn frames_rise_within_a_cluster_and_restart_in_the_next() { + let (issuer, alice, bob) = (party(1), party(2), party(3)); + let keys = book(&[&issuer, &alice, &bob]); + let byte = Envelope::issue(&issuer, alice.aid, [7; 16], Cargo::usd_micros(1), JouleCost::default()); + // Out at frame 40 of one cluster, on at frame 3 of the next. + let moved = byte + .export(&alice, bob.aid, 40, Said::hash(b"cluster B")) + .transfer(&bob, alice.aid, 3); + assert_eq!(moved.verify(&keys).unwrap().owner, alice.aid); + // Without the move, the same frames go backwards. + let backwards = byte.transfer(&alice, bob.aid, 40).transfer(&bob, alice.aid, 3); + assert_eq!(backwards.verify(&keys).unwrap_err().class(), "frame_not_increasing"); + // The destination is signed: changing it breaks the signature. + let mut redirected = byte.export(&alice, bob.aid, 40, Said::hash(b"cluster B")); + redirected.ownership_chain[0].destination = Some(Said::hash(b"cluster C")); + let redirected = Envelope::stamped(redirected.provenance, redirected.ownership_chain, redirected.joule_cost); + assert_eq!(redirected.verify(&keys).unwrap_err().class(), "signature_invalid"); + } + #[test] fn a_member_the_envelope_does_not_define_is_refused() { let byte = Envelope::issue(&party(1), party(2).aid, [0; 16], Cargo::opaque(vec![]), JouleCost::default()); diff --git a/smart-byte/smart-byte-rs/crates/smart-byte-core/src/ownership.rs b/smart-byte/smart-byte-rs/crates/smart-byte-core/src/ownership.rs index d01790bea..9d9e86dd5 100644 --- a/smart-byte/smart-byte-rs/crates/smart-byte-core/src/ownership.rs +++ b/smart-byte/smart-byte-rs/crates/smart-byte-core/src/ownership.rs @@ -7,6 +7,10 @@ //! the byte's identity and advances one step per transition: //! `next = BLAKE3(previous ‖ payload)`, the payload being the transition's //! from, to, frame and signature. +//! +//! A transition that moves the byte to another cluster (treatise §11.3.3) +//! also names its `destination`, and the signature and the history hash +//! cover it. A transition within a cluster has no `destination` member. use serde::{Deserialize, Serialize}; @@ -27,6 +31,10 @@ pub struct Transition { pub to: Aid, /// The lockstep frame the transition is applied in. pub frame: u64, + /// The cluster the byte moves to, for a transition that leaves the + /// cluster it is applied in (treatise §11.3.3). Absent otherwise. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub destination: Option, /// `from`'s signature over [`Transition::signed_bytes`]. pub signature: ControllerSignature, } @@ -39,6 +47,8 @@ struct Signed<'a> { from: &'a Aid, to: &'a Aid, frame: u64, + #[serde(skip_serializing_if = "Option::is_none")] + destination: Option<&'a Said>, } #[derive(Serialize)] @@ -46,6 +56,8 @@ struct Payload<'a> { from: &'a Aid, to: &'a Aid, frame: u64, + #[serde(skip_serializing_if = "Option::is_none")] + destination: Option<&'a Said>, signature: &'a ControllerSignature, } @@ -58,12 +70,44 @@ impl Transition { previous_history_hash: Blake3Hash, to: Aid, frame: u64, + ) -> Self { + Self::signed(owner, byte, previous_history_hash, to, frame, None) + } + + /// A transition that moves the byte to `destination`, another cluster, + /// where `to` becomes its owner (treatise §11.3.3). + pub fn sign_export( + owner: &Signer, + byte: &Said, + previous_history_hash: Blake3Hash, + to: Aid, + frame: u64, + destination: Said, + ) -> Self { + Self::signed( + owner, + byte, + previous_history_hash, + to, + frame, + Some(destination), + ) + } + + fn signed( + owner: &Signer, + byte: &Said, + previous_history_hash: Blake3Hash, + to: Aid, + frame: u64, + destination: Option, ) -> Self { let mut t = Transition { previous_history_hash, from: owner.aid, to, frame, + destination, signature: ControllerSignature { establishment: 0, signatures: vec![], @@ -74,7 +118,8 @@ impl Transition { } /// The message `from` signs: the canonical encoding of (byte identity, - /// previous history hash, from, to, frame) (treatise §8.4). + /// previous history hash, from, to, frame) — and the destination, for a + /// transition that leaves the cluster (treatise §8.4, §11.3.3). pub fn signed_bytes(&self, byte: &Said) -> Vec { crate::wire::to_vec(&Signed { byte, @@ -82,6 +127,7 @@ impl Transition { from: &self.from, to: &self.to, frame: self.frame, + destination: self.destination.as_ref(), }) .expect("a transition's signed fields always encode") } @@ -92,6 +138,7 @@ impl Transition { from: &self.from, to: &self.to, frame: self.frame, + destination: self.destination.as_ref(), signature: &self.signature, }) .expect("a transition's payload always encodes"); diff --git a/smart-byte/smart-byte-rs/crates/smart-byte-core/src/sign.rs b/smart-byte/smart-byte-rs/crates/smart-byte-core/src/sign.rs index cbb9845a3..79cf7b758 100644 --- a/smart-byte/smart-byte-rs/crates/smart-byte-core/src/sign.rs +++ b/smart-byte/smart-byte-rs/crates/smart-byte-core/src/sign.rs @@ -60,6 +60,15 @@ pub fn verify( .map_err(|_| SignatureError::SignatureInvalid) } +/// Whether `key` is an Ed25519 public key that [`verify`] can accept +/// signatures under: 32 bytes, `y` below the field prime, on the curve, and +/// not of small order. +pub fn is_valid_key(key: &[u8]) -> bool { + <[u8; 32]>::try_from(key).is_ok_and(|k| { + encodes_y_below_p(&k) && VerifyingKey::from_bytes(&k).is_ok_and(|vk| !vk.is_weak()) + }) +} + /// Whether a compressed Edwards point's `y` (its low 255 bits) is below the /// field prime `p = 2^255 - 19`. Decoders that skip this accept nineteen /// out-of-range spellings, some of which decompress to valid points. diff --git a/smart-byte/smart-byte-rs/crates/smart-byte-lockstep/Cargo.toml b/smart-byte/smart-byte-rs/crates/smart-byte-lockstep/Cargo.toml index e1f7a6f8a..5717dbe89 100644 --- a/smart-byte/smart-byte-rs/crates/smart-byte-lockstep/Cargo.toml +++ b/smart-byte/smart-byte-rs/crates/smart-byte-lockstep/Cargo.toml @@ -11,3 +11,6 @@ description = "Smart Byte deterministic lockstep BFT: the supermajority commit r smart-byte-core = { workspace = true } smart-byte-state = { workspace = true } thiserror = { workspace = true } + +[dev-dependencies] +smart-byte-keri-witness = { workspace = true } diff --git a/smart-byte/smart-byte-rs/crates/smart-byte-lockstep/src/lib.rs b/smart-byte/smart-byte-rs/crates/smart-byte-lockstep/src/lib.rs index 68a121e0f..a04c319aa 100644 --- a/smart-byte/smart-byte-rs/crates/smart-byte-lockstep/src/lib.rs +++ b/smart-byte/smart-byte-rs/crates/smart-byte-lockstep/src/lib.rs @@ -20,8 +20,10 @@ use std::collections::{BTreeMap, HashSet}; use smart_byte_core::{Blake3Hash, Said}; -use smart_byte_state::FrameReport; +use smart_byte_core::{PrefixedKey, SigningKey}; pub use smart_byte_state::State; +use smart_byte_state::certificate::node_key; +use smart_byte_state::{Certificate, FrameReport}; /// Errors during a frame step. #[derive(Debug, thiserror::Error)] @@ -217,6 +219,8 @@ impl Tally

{ pub struct Node { /// Stable identity. pub id: Said, + /// The key the node signs export certificates with (treatise §11.3.3). + pub key: SigningKey, /// The cluster state, as this node holds it. pub state: State, /// If true, this node broadcasts a hash with its low bit flipped while @@ -226,9 +230,10 @@ pub struct Node { impl Node { /// A node holding the cluster's genesis state. - pub fn new(id: Said, genesis: &State) -> Self { + pub fn new(id: Said, key: SigningKey, genesis: &State) -> Self { Self { id, + key, state: genesis.clone(), faulty: false, } @@ -263,6 +268,9 @@ pub struct FrameCommit { /// Distinct inputs the frame applied, and dropped. pub applied: usize, pub dropped: usize, + /// For each byte the frame exported, the certificate its committing + /// nodes sign for the destination (treatise §11.3.3 step 2). + pub certificates: Vec, } /// A cluster of [`Node`]s running deterministic lockstep in one process. @@ -275,10 +283,17 @@ pub struct Cluster { } impl Cluster { - /// A cluster of `n` honest nodes, each holding `genesis`. + /// A cluster of `n` honest nodes, each holding `genesis`. Node keys + /// derive from the cluster's identifier, so two clusters' nodes never + /// share one. pub fn new_honest(n: usize, genesis: &State) -> Self { + let cluster = genesis.cluster.to_said_text(); let nodes = (0..n) - .map(|i| Node::new(Said::hash(format!("node-{i}").as_bytes()), genesis)) + .map(|i| { + let key = + SigningKey::from_bytes(&Said::hash(format!("{cluster} node {i}").as_bytes()).0); + Node::new(Said::hash(format!("node-{i}").as_bytes()), key, genesis) + }) .collect(); Self { nodes, @@ -297,28 +312,30 @@ impl Cluster { c } + /// The keys of this cluster's nodes, in order: what a peer lists for it. + pub fn node_keys(&self) -> Vec { + self.nodes.iter().map(|n| node_key(&n.key)).collect() + } + /// Run one lockstep frame: every node applies `inputs`, the reported /// hashes are tallied, and the frame commits iff one hash has the - /// supermajority. + /// supermajority. The committing nodes then certify the frame's exports. pub fn step(&mut self, inputs: Vec>) -> Result { if self.nodes.is_empty() { return Err(LockstepError::EmptyCluster); } let frame = self.frame; let total = self.nodes.len(); - // Every node applies the same inputs to the same state, so every - // node's frame report is the same; keep the first. - let mut report = None; - let reports: Vec<(Said, Blake3Hash)> = self + let stepped: Vec<(Said, Blake3Hash, FrameReport)> = self .nodes .iter_mut() .map(|node| { - let (hash, r) = node.step(&inputs); - report.get_or_insert(r); - (node.id, hash) + let (hash, report) = node.step(&inputs); + (node.id, hash, report) }) .collect(); - let report = report.expect("a non-empty cluster"); + let reports: Vec<(Said, Blake3Hash)> = + stepped.iter().map(|(id, hash, _)| (*id, *hash)).collect(); let result = tally(total, &reports).expect("one report per node in a non-empty cluster"); let Some(state_hash) = result.supermajority_hash else { return Err(LockstepError::NoSupermajority { @@ -327,11 +344,29 @@ impl Cluster { total, }); }; - let committed_by = reports + // What the frame did, as a node that committed it applied it: a node + // whose state diverged reports what its own state did. + let (_, _, report) = stepped + .iter() + .find(|(_, hash, _)| *hash == state_hash) + .expect("the supermajority hash is some node's"); + let committed_by: HashSet = reports .iter() .filter(|(_, hash)| *hash == state_hash) .map(|(id, _)| *id) .collect(); + let signers: Vec<(u64, &SigningKey)> = self + .nodes + .iter() + .enumerate() + .filter(|(_, n)| committed_by.contains(&n.id)) + .map(|(i, n)| (i as u64, &n.key)) + .collect(); + let certificates = report + .exports + .iter() + .map(|statement| Certificate::sign(statement.clone(), &signers)) + .collect(); if let Some(entry) = result.dissent_entry(frame, &state_hash) { self.dissent_log.push(entry); } @@ -343,6 +378,7 @@ impl Cluster { dissenters: result.dissenters, applied: report.applied(), dropped: report.results.len() - report.applied(), + certificates, }) } } @@ -541,6 +577,99 @@ mod tests { } } + #[test] + fn two_clusters_move_a_byte_by_certificate() { + use smart_byte_core::keys::IndexedSignature; + use smart_byte_core::{Cargo, Envelope, JouleCost}; + use smart_byte_keri_witness::{Controller, KeyEvent, KeyPair, Threshold}; + use smart_byte_state::Input; + + let party = |label: &str| { + let key = |n: u8| { + KeyPair::from_signing(SigningKey::from_bytes( + &Said::hash(format!("{label}-{n}").as_bytes()).0, + )) + }; + let (c, icp) = Controller::incept( + vec![key(0)], + vec![key(1)], + Threshold(1), + Threshold(1), + vec![], + Threshold(0), + ) + .unwrap(); + let event = KeyEvent::Inception(icp); + let sigs: Vec = c + .sign_event(&event) + .unwrap() + .into_iter() + .map(|(index, signature)| IndexedSignature { + index: u64::from(index), + signature, + }) + .collect(); + (c, vec![(event, sigs)]) + }; + let ((issuer, issuer_log), (alice, alice_log), (bob, bob_log)) = + (party("issuer"), party("alice"), party("bob")); + let (a_id, b_id) = (Said::hash(b"cluster A"), Said::hash(b"cluster B")); + // Each cluster's nodes, then each genesis naming the other's. + let a_keys = Cluster::new_honest(4, &State::genesis(a_id, [], [], 0)).node_keys(); + let b_keys = Cluster::new_honest(4, &State::genesis(b_id, [], [], 0)).node_keys(); + let mut a = Cluster::new_honest( + 4, + &State::genesis(a_id, [(issuer.aid, 1)], [(b_id, b_keys)], 0), + ); + // A's first node holds no registry, so it never mints the byte and + // never exports it: the certificate is what the other three did. + a.nodes[0].state.registry.clear(); + let mut b = Cluster::new_with_faulty(4, 1, &State::genesis(b_id, [], [(a_id, a_keys)], 0)); + + let byte = Envelope::issue( + &issuer.signer(), + alice.aid, + [1; 16], + Cargo::usd_micros(5), + JouleCost::default(), + ); + let incept = + |log: &Vec<(KeyEvent, Vec)>| Input::key_event(&log[0].0, &log[0].1); + a.step(vec![ + incept(&issuer_log), + incept(&alice_log), + Input::mint(&byte.provenance), + ]) + .unwrap(); + b.step(vec![incept(&bob_log)]).unwrap(); + + let out = byte.export(&alice.signer(), bob.aid, 1, b_id); + let commit = a + .step(vec![Input::transfer( + &byte.identity(), + out.ownership_chain.last().unwrap(), + )]) + .unwrap(); + assert_eq!(commit.dissenters, vec![a.nodes[0].id]); + assert_eq!(commit.certificates.len(), 1); + let signers: Vec = commit.certificates[0] + .signatures + .iter() + .map(|s| s.index) + .collect(); + assert_eq!( + signers, + [1, 2, 3], + "the committing nodes sign, and only they" + ); + + let import = Input::import(&commit.certificates[0], &out, &[issuer_log, alice_log]); + let commit = b.step(vec![import]).unwrap(); + assert_eq!((commit.applied, commit.dropped), (1, 0)); + assert_eq!(b.nodes[0].state.bytes[&byte.identity()].owner, bob.aid); + assert!(a.nodes[1].state.exported.contains_key(&byte.identity())); + } + #[test] fn a_node_whose_state_diverged_is_outvoted() { // A node holding a different genesis computes different hashes from diff --git a/smart-byte/smart-byte-rs/crates/smart-byte-state/src/certificate.rs b/smart-byte/smart-byte-rs/crates/smart-byte-state/src/certificate.rs new file mode 100644 index 000000000..404ce8597 --- /dev/null +++ b/smart-byte/smart-byte-rs/crates/smart-byte-state/src/certificate.rs @@ -0,0 +1,80 @@ +//! Export certificates (cluster state spec §5; treatise §11.3.3 step 2). +//! +//! When a byte leaves a cluster, the cluster's nodes certify the state it +//! left in: a supermajority of them sign the canonical encoding of +//! +//! ```text +//! {"source": cluster, "byte": identity, "export": export record} +//! ``` +//! +//! The destination checks the signatures against the source's node keys (a +//! peer in its state), and the byte's full history against the certified +//! history hash. A certificate is identified by the BLAKE3 digest of its +//! statement, and a cluster imports each one once. + +use serde::{Deserialize, Serialize}; +use smart_byte_core::keys::IndexedSignature; +use smart_byte_core::sign::Signer as _; +use smart_byte_core::{Blake3Hash, PrefixedKey, Said, SigningKey, wire}; + +use crate::state::ExportRecord; + +/// What the source cluster's nodes certify. +#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)] +#[serde(deny_unknown_fields)] +pub struct ExportStatement { + /// The cluster the byte left. + pub source: Said, + /// The byte's identity. + pub byte: Said, + /// The byte as it left. + pub export: ExportRecord, +} + +/// A statement and the signatures of the source's nodes over it, each by a +/// node's index in the source's key list. +#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)] +#[serde(deny_unknown_fields)] +pub struct Certificate { + pub statement: ExportStatement, + pub signatures: Vec, +} + +impl ExportStatement { + /// The canonical encoding: what the nodes sign. + pub fn to_cbor(&self) -> Vec { + wire::to_vec(self).expect("a statement always encodes") + } + + /// The certificate's identity: BLAKE3-256 of the statement. + pub fn digest(&self) -> Blake3Hash { + *blake3::hash(&self.to_cbor()).as_bytes() + } +} + +impl Certificate { + /// `statement`, signed by the nodes `signers` as `(index, key)`. + pub fn sign(statement: ExportStatement, signers: &[(u64, &SigningKey)]) -> Self { + let message = statement.to_cbor(); + let signatures = signers + .iter() + .map(|(index, key)| IndexedSignature { + index: *index, + signature: [ + &[smart_byte_core::keys::ED25519][..], + &key.sign(&message).to_bytes(), + ] + .concat(), + }) + .collect(); + Certificate { + statement, + signatures, + } + } +} + +/// A node's key as a peer entry lists it. +pub fn node_key(key: &SigningKey) -> PrefixedKey { + PrefixedKey::ed25519(&key.verifying_key()) +} diff --git a/smart-byte/smart-byte-rs/crates/smart-byte-state/src/demo.rs b/smart-byte/smart-byte-rs/crates/smart-byte-state/src/demo.rs index a29f5d76c..054efc877 100644 --- a/smart-byte/smart-byte-rs/crates/smart-byte-state/src/demo.rs +++ b/smart-byte/smart-byte-rs/crates/smart-byte-state/src/demo.rs @@ -17,6 +17,11 @@ use crate::state::State; /// The cargo type the demo issuer is registered for: USD. pub const USD: u64 = 1; +/// The demo cluster's identifier. +pub fn cluster() -> Said { + Said::hash(b"smart-byte demo cluster") +} + fn key(label: &str) -> KeyPair { let seed = Said::hash(format!("smart-byte demo key {label}").as_bytes()).0; KeyPair::from_signing(SigningKey::from_bytes(&seed)) @@ -120,9 +125,10 @@ impl Workload { } } - /// The genesis state: the issuer registered for USD. + /// The genesis state of the demo cluster: the issuer registered for USD, + /// no peers, and no governance delay. pub fn genesis(&self) -> State { - State::genesis([(self.issuer.aid(), USD)]) + State::genesis(cluster(), [(self.issuer.aid(), USD)], [], 0) } /// Frame `frame`'s inputs. Frame 0 incepts every party and mints; each diff --git a/smart-byte/smart-byte-rs/crates/smart-byte-state/src/frame.rs b/smart-byte/smart-byte-rs/crates/smart-byte-state/src/frame.rs index 6ab59807a..7d564657f 100644 --- a/smart-byte/smart-byte-rs/crates/smart-byte-state/src/frame.rs +++ b/smart-byte/smart-byte-rs/crates/smart-byte-state/src/frame.rs @@ -1,26 +1,30 @@ //! The frame transition (cluster state spec §4; treatise §9.4 steps 4–5): //! a pure function of the state and the frame's inputs. //! -//! 1. Identical inputs are one input. -//! 2. Inputs are applied by class — key events, then mints, then transfers — -//! and within a class in ascending order of their BLAKE3 digests. Inputs -//! that name no class come last; they are dropped. -//! 3. Each input is checked on its own against the state as the inputs +//! 1. Governance changes whose time has come take effect. +//! 2. Identical inputs are one input. +//! 3. Inputs are applied by class — key events, governance, mints, imports, +//! transfers, burns — and within a class in ascending order of their +//! BLAKE3 digests. Inputs that name no class come last; they are dropped. +//! 4. Each input is checked on its own against the state as the inputs //! before it left it. One that fails any check is dropped, and changes //! nothing; every honest node drops the same ones. -//! 4. The frame number advances by one. +//! 5. The frame number advances by one. -use std::collections::BTreeMap; -use std::collections::HashMap; +use std::collections::{BTreeMap, BTreeSet, HashMap}; -use smart_byte_core::keys::verify_against; +use smart_byte_core::canonical::{self, Value}; +use smart_byte_core::keys::{IndexedSignature, KeyBook, verify_against}; use smart_byte_core::ownership::Transition; use smart_byte_core::provenance::Provenance; -use smart_byte_core::{Blake3Hash, Said}; -use smart_byte_keri_witness::{KeyEvent, LogVerifier, Replay}; +use smart_byte_core::{Aid, Blake3Hash, ControllerSignature, Envelope, Said}; +use smart_byte_keri_witness::{KeyEvent, LogVerifier, Replay, SignedEvent}; -use crate::input::{Input, InputClass, InputError}; -use crate::state::{ByteRecord, ControllerRecord, State}; +use crate::certificate::{Certificate, ExportStatement}; +use crate::input::{Approval, Burn, Input, InputClass, InputError, LoggedEvent, Proposal}; +use crate::state::{ + ByteRecord, Change, ControllerRecord, Digest, ExportRecord, Peer, Pending, RetiredRecord, State, +}; /// What became of one input. #[derive(Debug)] @@ -34,14 +38,17 @@ pub struct InputResult { } /// What a frame did: one result per distinct input, in the order they were -/// applied, and the inputs themselves in that order — the frame's committed -/// inputs, identical on every honest node (treatise §16.1). +/// applied; the inputs themselves in that order — the frame's committed +/// inputs, identical on every honest node (treatise §16.1); and the exports +/// it applied, which the cluster's nodes certify once it commits. #[derive(Debug)] pub struct FrameReport { /// The frame applied. pub frame: u64, pub results: Vec, pub inputs: Vec>, + /// What the nodes certify for each byte the frame exported. + pub exports: Vec, } impl FrameReport { @@ -51,11 +58,20 @@ impl FrameReport { } } +/// Where a byte the cluster has known stands. +enum Standing<'a> { + Live(&'a ByteRecord), + Retired, + Exported, + Unknown, +} + impl State { /// Apply one frame of inputs, as submitted (duplicates and all), and /// advance the frame number. pub fn apply_frame(&mut self, inputs: &[Vec]) -> FrameReport { let frame = self.frame; + self.enact_pending(); let distinct: BTreeMap> = inputs .iter() .map(|bytes| (*blake3::hash(bytes).as_bytes(), bytes)) @@ -79,9 +95,10 @@ impl State { frame, results: Vec::with_capacity(ordered.len()), inputs: Vec::with_capacity(ordered.len()), + exports: Vec::new(), }; for (class, hash, bytes, decoded) in ordered { - let outcome = decoded.and_then(|input| self.apply(input)); + let outcome = decoded.and_then(|input| self.apply(input, &mut report.exports)); report.results.push(InputResult { input: hash, class, @@ -93,11 +110,77 @@ impl State { report } - fn apply(&mut self, input: Input) -> Result<(), InputError> { + /// Governance changes in force from this frame take effect, in the order + /// they were accepted. + fn enact_pending(&mut self) { + let due: Vec = { + let (due, later) = std::mem::take(&mut self.governance.pending) + .into_iter() + .partition(|p| p.effective == self.frame); + self.governance.pending = later; + due + }; + for pending in due { + match pending.change { + Change::AddIssuer { cargo_type, issuer } => { + self.registry.entry(issuer).or_default().insert(cargo_type); + } + Change::RemoveIssuer { cargo_type, issuer } => { + if let Some(types) = self.registry.get_mut(&issuer) { + types.remove(&cargo_type); + if types.is_empty() { + self.registry.remove(&issuer); + } + } + } + Change::SetPeer { peer, keys } => { + self.peers.insert(peer, Peer { keys }); + } + Change::RemovePeer { peer } => { + self.peers.remove(&peer); + } + } + } + } + + fn apply( + &mut self, + input: Input, + exports: &mut Vec, + ) -> Result<(), InputError> { match input { Input::KeyEvent { event, signatures } => self.key_event(&event, &signatures), + Input::Governance { + proposal, + approvals, + } => self.governance(&proposal, &approvals), Input::Mint(provenance) => self.mint(&provenance), - Input::Transfer { byte, transition } => self.transfer(&byte, &transition), + Input::Import { + certificate, + envelope, + logs, + } => self.import(&certificate, &envelope, &logs), + Input::Transfer { byte, transition } => self.transfer(&byte, &transition, exports), + Input::Burn(burn) => self.burn(&burn), + } + } + + fn standing(&self, byte: &Said) -> Standing<'_> { + match self.bytes.get(byte) { + Some(record) => Standing::Live(record), + None if self.retired.contains_key(byte) => Standing::Retired, + None if self.exported.contains_key(byte) => Standing::Exported, + None => Standing::Unknown, + } + } + + /// The live record of a byte an owner acts on, or why there is none. + fn live(&self, byte: &Said) -> Result<&ByteRecord, InputError> { + match self.standing(byte) { + Standing::Live(record) => Ok(record), + Standing::Retired => Err(InputError::ByteRetired), + Standing::Exported => Err(InputError::ByteExported), + Standing::Unknown => Err(InputError::UnknownByte), } } @@ -106,7 +189,7 @@ impl State { fn key_event( &mut self, event: &KeyEvent, - signatures: &[smart_byte_core::keys::IndexedSignature], + signatures: &[IndexedSignature], ) -> Result<(), InputError> { let controller = *event.controller(); let mut replay = match (event, self.controllers.get(&controller)) { @@ -115,24 +198,112 @@ impl State { (_, Some(record)) => Replay::resume(LogVerifier::new(), record.to_state(controller)), (_, None) => return Err(InputError::UnknownController(controller.to_text())), }; - // An index past u32::MAX is past every key list: let the signature - // check report it as out of range. - let signatures: Vec<(u32, Vec)> = signatures - .iter() - .map(|s| { - ( - u32::try_from(s.index).unwrap_or(u32::MAX), - s.signature.clone(), - ) - }) - .collect(); - replay.apply(event, &signatures, &HashMap::new())?; + replay.apply(event, &wire_signatures(signatures), &HashMap::new())?; let state = replay.state().expect("an accepted event leaves a state"); self.controllers .insert(controller, ControllerRecord::from_state(state)); Ok(()) } + /// A governance proposal (cluster state spec §4.5): accepted with a + /// supermajority of its electorate's approvals, it takes effect after + /// the cluster's governance delay. + fn governance( + &mut self, + proposal: &Proposal, + approvals: &[Approval], + ) -> Result<(), InputError> { + if proposal.cluster != self.cluster { + return Err(InputError::WrongCluster); + } + if proposal.sequence != self.governance.sequence { + return Err(InputError::StaleSequence { + named: proposal.sequence, + current: self.governance.sequence, + }); + } + let target = match &proposal.change { + Change::AddIssuer { cargo_type, issuer } => { + if self.authorizes(issuer, *cargo_type) { + return Err(InputError::AlreadyRegistered); + } + None + } + Change::RemoveIssuer { cargo_type, issuer } => { + if !self.authorizes(issuer, *cargo_type) { + return Err(InputError::NotRegistered); + } + Some(*issuer) + } + Change::SetPeer { peer, keys } => { + if *peer == self.cluster { + return Err(InputError::WrongCluster); + } + check_peer_keys(keys)?; + None + } + Change::RemovePeer { peer } => { + if !self.peers.contains_key(peer) { + return Err(InputError::NotAPeer); + } + None + } + }; + let electorate = self.electorate(&proposal.change, target); + if electorate.is_empty() { + return Err(InputError::NoElectorate); + } + let message = smart_byte_core::wire::to_vec(proposal).expect("a proposal always encodes"); + let mut approved = BTreeSet::new(); + for approval in approvals { + if !electorate.contains(&approval.approver) { + return Err(InputError::NotAnElector); + } + if !approved.insert(approval.approver) { + return Err(InputError::DuplicateApprover); + } + self.signed_by(&approval.approver, &approval.signature, &message)?; + } + let quorum = 2 * electorate.len() / 3 + 1; + if approved.len() < quorum { + return Err(InputError::BelowQuorum { + approvals: approved.len(), + quorum, + }); + } + self.governance.sequence += 1; + self.governance.pending.push(Pending { + change: proposal.change.clone(), + effective: self.frame + 1 + self.governance.delay, + }); + Ok(()) + } + + /// Who approves `change`: the issuers of its cargo type for a registry + /// change, or every issuer when that is none or the change is to the + /// peers. An issuer being removed has no vote on its own removal. + fn electorate(&self, change: &Change, target: Option) -> BTreeSet { + let all = || { + self.registry + .keys() + .copied() + .filter(|a| Some(*a) != target) + .collect::>() + }; + match change { + Change::AddIssuer { cargo_type, .. } | Change::RemoveIssuer { cargo_type, .. } => { + let of_type: BTreeSet = self + .registry + .iter() + .filter(|(a, types)| types.contains(cargo_type) && Some(**a) != target) + .map(|(a, _)| *a) + .collect(); + if of_type.is_empty() { all() } else { of_type } + } + Change::SetPeer { .. } | Change::RemovePeer { .. } => all(), + } + } + /// A mint (treatise §15.2): an issuer's attestation to a new byte. fn mint(&mut self, provenance: &Provenance) -> Result<(), InputError> { if provenance.compute_said() != provenance.d { @@ -148,7 +319,7 @@ impl State { &provenance.signed_bytes(), )?; let identity = provenance.d; - if self.bytes.contains_key(&identity) { + if self.knows_byte(&identity) { return Err(InputError::DuplicateByte); } self.bytes.insert( @@ -164,10 +335,90 @@ impl State { Ok(()) } + /// An import (cluster state spec §5; treatise §11.3.3 step 3): a byte + /// another cluster certifies it exported here, whose full history this + /// cluster verifies for itself. + fn import( + &mut self, + certificate: &Certificate, + envelope: &Value, + logs: &[Vec], + ) -> Result<(), InputError> { + let statement = &certificate.statement; + let export = &statement.export; + if export.destination != self.cluster { + return Err(InputError::WrongCluster); + } + let peer = self + .peers + .get(&statement.source) + .ok_or(InputError::UnknownCluster)?; + verify_against( + &peer.key_state(), + &statement.to_cbor(), + &certificate.signatures, + )?; + let digest = Digest(statement.digest()); + if self.imported.contains(&digest) { + return Err(InputError::DuplicateImport); + } + match self.standing(&statement.byte) { + Standing::Live(_) => return Err(InputError::DuplicateByte), + Standing::Retired => return Err(InputError::ByteRetired), + Standing::Exported | Standing::Unknown => {} + } + let bytes = canonical::encode(envelope).map_err(InputError::Canonical)?; + let envelope = Envelope::from_cbor(&bytes)?; + if envelope.identity() != statement.byte + || envelope.history_hash() != export.history_hash + || envelope.current_owner() != export.owner + || envelope.provenance.issuer != export.issuer + || envelope.provenance.cargo != export.cargo + { + return Err(InputError::CertificateMismatch); + } + let mut keys = KeyBook::new(); + for log in logs { + let signed = log + .iter() + .map(|e| { + Ok(SignedEvent { + bytes: canonical::encode(&e.event).map_err(InputError::Canonical)?, + signatures: wire_signatures(&e.signatures), + }) + }) + .collect::, InputError>>()?; + LogVerifier::new() + .verify_encoded(&signed, &HashMap::new()) + .map_err(|r| InputError::KeyEvent(r.error))? + .add_to(&mut keys); + } + envelope.verify(&keys)?; + self.exported.remove(&statement.byte); + self.bytes.insert( + statement.byte, + ByteRecord { + issuer: export.issuer, + cargo: export.cargo.clone(), + minted: export.minted, + owner: export.owner, + history_hash: export.history_hash, + }, + ); + self.imported.insert(digest); + Ok(()) + } + /// A transfer: the owner signs the byte away, at this frame, from the - /// point its history has reached (treatise §8.4, §10.2). - fn transfer(&mut self, byte: &Said, transition: &Transition) -> Result<(), InputError> { - let record = self.bytes.get(byte).ok_or(InputError::UnknownByte)?; + /// point its history has reached (treatise §8.4, §10.2). One that names a + /// destination moves the byte out of the cluster (treatise §11.3.3). + fn transfer( + &mut self, + byte: &Said, + transition: &Transition, + exports: &mut Vec, + ) -> Result<(), InputError> { + let record = self.live(byte)?; if transition.frame != self.frame { return Err(InputError::WrongFrame { named: transition.frame, @@ -180,22 +431,81 @@ impl State { if transition.from != record.owner { return Err(InputError::NotCurrentOwner); } + if let Some(destination) = &transition.destination + && !self.peers.contains_key(destination) + { + return Err(InputError::UnknownCluster); + } self.signed_by( &transition.from, &transition.signature, &transition.signed_bytes(byte), )?; - let record = self.bytes.get_mut(byte).expect("checked above"); - record.owner = transition.to; - record.history_hash = transition.next_history_hash(); + let history_hash = transition.next_history_hash(); + match transition.destination { + None => { + let record = self.bytes.get_mut(byte).expect("checked above"); + record.owner = transition.to; + record.history_hash = history_hash; + } + Some(destination) => { + let record = self.bytes.remove(byte).expect("checked above"); + let export = ExportRecord { + issuer: record.issuer, + cargo: record.cargo, + minted: record.minted, + owner: transition.to, + history_hash, + destination, + exported: self.frame, + }; + exports.push(ExportStatement { + source: self.cluster, + byte: *byte, + export: export.clone(), + }); + self.exported.insert(*byte, export); + } + } + Ok(()) + } + + /// A burn (cluster state spec §4.7): the owner retires the byte for good. + fn burn(&mut self, burn: &Burn) -> Result<(), InputError> { + let record = self.live(&burn.byte)?; + if burn.frame != self.frame { + return Err(InputError::WrongFrame { + named: burn.frame, + current: self.frame, + }); + } + if burn.previous_history_hash != record.history_hash { + return Err(InputError::BrokenHistoryChain); + } + if burn.owner != record.owner { + return Err(InputError::NotCurrentOwner); + } + self.signed_by(&burn.owner, &burn.signature, &burn.signed_bytes())?; + let record = self.bytes.remove(&burn.byte).expect("checked above"); + self.retired.insert( + burn.byte, + RetiredRecord { + issuer: record.issuer, + cargo: record.cargo, + minted: record.minted, + owner: record.owner, + history_hash: record.history_hash, + retired: self.frame, + }, + ); Ok(()) } /// `signature` is `signer`'s, under the establishment event in force now. fn signed_by( &self, - signer: &smart_byte_core::Aid, - signature: &smart_byte_core::ControllerSignature, + signer: &Aid, + signature: &ControllerSignature, message: &[u8], ) -> Result<(), InputError> { let record = self @@ -215,3 +525,35 @@ impl State { )?) } } + +/// Signatures as a key-event log takes them. An index past u32::MAX is past +/// every key list: let the signature check report it as out of range. +fn wire_signatures(signatures: &[IndexedSignature]) -> Vec<(u32, Vec)> { + signatures + .iter() + .map(|s| { + ( + u32::try_from(s.index).unwrap_or(u32::MAX), + s.signature.clone(), + ) + }) + .collect() +} + +/// A peer's keys: at least one, none twice, each an Ed25519 key. +fn check_peer_keys(keys: &[smart_byte_core::PrefixedKey]) -> Result<(), InputError> { + if keys.is_empty() { + return Err(InputError::PeerKeys("invalid_threshold")); + } + for (i, key) in keys.iter().enumerate() { + if keys[..i].contains(key) { + return Err(InputError::PeerKeys("duplicate_key")); + } + if key.algorithm() != Some(smart_byte_core::keys::ED25519) + || !smart_byte_core::sign::is_valid_key(key.key()) + { + return Err(InputError::PeerKeys("malformed_verifying_key")); + } + } + Ok(()) +} diff --git a/smart-byte/smart-byte-rs/crates/smart-byte-state/src/input.rs b/smart-byte/smart-byte-rs/crates/smart-byte-state/src/input.rs index 19d50c0c1..c1c404931 100644 --- a/smart-byte/smart-byte-rs/crates/smart-byte-state/src/input.rs +++ b/smart-byte/smart-byte-rs/crates/smart-byte-state/src/input.rs @@ -3,9 +3,12 @@ //! class. //! //! ```text -//! {"key_event": {"event": , "signatures": [{"index", "signature"}]}} -//! {"mint": } -//! {"transfer": {"byte": , "transition": }} +//! {"key_event": {"event": , "signatures": [{"index", "signature"}]}} +//! {"governance": {"proposal": , "approvals": [{"approver", "signature"}]}} +//! {"mint": } +//! {"import": {"certificate": , "envelope": , "logs": [[]]}} +//! {"transfer": {"byte": , "transition": }} +//! {"burn": {"byte", "previous_history_hash", "owner", "frame", "signature"}} //! ``` //! //! An input is identified by the BLAKE3-256 digest of its bytes, which is @@ -16,18 +19,33 @@ use smart_byte_core::canonical::{self, CanonicalError, Value}; use smart_byte_core::keys::IndexedSignature; use smart_byte_core::ownership::Transition; use smart_byte_core::provenance::Provenance; -use smart_byte_core::{ControllerSignatureError, Said, wire}; +use smart_byte_core::{ + Aid, Blake3Hash, ControllerSignature, ControllerSignatureError, EnvelopeError, Said, wire, +}; use smart_byte_keri_witness::{KeriError, KeyEvent}; -/// The three classes of input, in the order a frame applies them: key -/// events first, so a rotation retires keys before anything signed with -/// them is checked; then mints, so a byte can be minted and transferred in -/// one frame (treatise §15.3); then transfers. +use crate::certificate::Certificate; +use crate::state::Change; + +/// The classes of input, in the order a frame applies them (cluster state +/// spec §4): +/// +/// * key events first, so a rotation retires keys before anything signed +/// with them is checked; +/// * governance, signed by issuers under the keys now in force; +/// * mints, then imports, so a byte that arrives in a frame can move in it +/// (treatise §15.3); +/// * transfers; +/// * burns last, so a byte can be returned to its issuer and burned in one +/// frame. #[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] pub enum InputClass { KeyEvent, + Governance, Mint, + Import, Transfer, + Burn, } impl InputClass { @@ -35,21 +53,115 @@ impl InputClass { pub fn as_str(self) -> &'static str { match self { InputClass::KeyEvent => "key_event", + InputClass::Governance => "governance", InputClass::Mint => "mint", + InputClass::Import => "import", InputClass::Transfer => "transfer", + InputClass::Burn => "burn", } } fn named(name: &str) -> Option { - match name { - "key_event" => Some(InputClass::KeyEvent), - "mint" => Some(InputClass::Mint), - "transfer" => Some(InputClass::Transfer), - _ => None, - } + [ + InputClass::KeyEvent, + InputClass::Governance, + InputClass::Mint, + InputClass::Import, + InputClass::Transfer, + InputClass::Burn, + ] + .into_iter() + .find(|c| c.as_str() == name) } } +/// A governance proposal: one change to this cluster's registry or peers, +/// made against its governance sequence number (cluster state spec §4.5). +#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)] +#[serde(deny_unknown_fields)] +pub struct Proposal { + /// The cluster the change is for. + pub cluster: Said, + /// The governance sequence number it was made against. + pub sequence: u64, + pub change: Change, +} + +/// One issuer's approval of a proposal: its signature over the proposal's +/// canonical encoding. +#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)] +#[serde(deny_unknown_fields)] +pub struct Approval { + pub approver: Aid, + pub signature: ControllerSignature, +} + +/// A burn: the owner retires a byte (cluster state spec §4.7). +#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)] +#[serde(deny_unknown_fields)] +pub struct Burn { + pub byte: Said, + #[serde(with = "smart_byte_core::wire::fixed_bytes")] + pub previous_history_hash: Blake3Hash, + pub owner: Aid, + pub frame: u64, + pub signature: ControllerSignature, +} + +/// What a burn's owner signs. +#[derive(Serialize)] +struct BurnMessage<'a> { + burn: &'a Said, + #[serde(with = "serde_bytes")] + previous_history_hash: &'a [u8], + owner: &'a Aid, + frame: u64, +} + +impl Burn { + /// The message the owner signs: the canonical encoding of `{"burn": + /// identity, "previous_history_hash", "owner", "frame"}`. + pub fn signed_bytes(&self) -> Vec { + wire::to_vec(&BurnMessage { + burn: &self.byte, + previous_history_hash: &self.previous_history_hash, + owner: &self.owner, + frame: self.frame, + }) + .expect("a burn's signed fields always encode") + } + + /// A burn of `byte`, at the point its history has reached, signed by its + /// owner. + pub fn sign( + owner: &smart_byte_core::Signer, + byte: Said, + previous_history_hash: Blake3Hash, + frame: u64, + ) -> Self { + let mut burn = Burn { + byte, + previous_history_hash, + owner: owner.aid, + frame, + signature: ControllerSignature { + establishment: 0, + signatures: vec![], + }, + }; + burn.signature = owner.sign(&burn.signed_bytes()); + burn + } +} + +/// A key event and the signatures over it, as an import's logs carry them. +#[derive(Clone, Debug, PartialEq)] +pub struct LoggedEvent { + /// The event, as received: decoded when the import is applied. + pub event: Value, + pub signatures: Vec, +} + /// A decoded input. #[derive(Clone, Debug, PartialEq)] pub enum Input { @@ -59,11 +171,25 @@ pub enum Input { event: KeyEvent, signatures: Vec, }, + /// A change to the registry or peers, with its approvals. + Governance { + proposal: Proposal, + approvals: Vec, + }, /// An issuer's attestation to a new byte: its provenance, whose SAID is /// the byte's identity. Mint(Provenance), - /// An owner's transfer of a byte. + /// A byte arriving from another cluster: the source's certificate, the + /// byte's envelope, and the key-event logs that verify its history. + Import { + certificate: Certificate, + envelope: Value, + logs: Vec>, + }, + /// An owner's transfer of a byte, within the cluster or out of it. Transfer { byte: Said, transition: Transition }, + /// An owner's burn of a byte. + Burn(Burn), } /// Why an input was dropped (cluster state spec §4). @@ -75,6 +201,8 @@ pub enum InputError { Malformed(String), #[error("key event: {0}")] KeyEvent(#[from] KeriError), + #[error("envelope: {0}")] + Envelope(#[from] EnvelopeError), #[error("the provenance does not hash to the identity it states")] SaidMismatch, #[error("an inception for a controller the cluster already holds")] @@ -91,12 +219,42 @@ pub enum InputError { DuplicateByte, #[error("the cluster holds no byte with this identity")] UnknownByte, - #[error("the transition names frame {named}; this is frame {current}")] + #[error("the byte was burned")] + ByteRetired, + #[error("the byte left for another cluster")] + ByteExported, + #[error("the input names frame {named}; this is frame {current}")] WrongFrame { named: u64, current: u64 }, - #[error("the transition does not continue the byte's history")] + #[error("the input does not continue the byte's history")] BrokenHistoryChain, - #[error("the transition is not signed away by the byte's owner")] + #[error("the input is not signed by the byte's owner")] NotCurrentOwner, + #[error("the input is addressed to another cluster")] + WrongCluster, + #[error("the cluster is not a peer")] + UnknownCluster, + #[error("the certificate was imported already")] + DuplicateImport, + #[error("the envelope is not the byte the certificate certifies")] + CertificateMismatch, + #[error("the proposal names sequence {named}; the cluster is at {current}")] + StaleSequence { named: u64, current: u64 }, + #[error("the issuer is registered for the cargo type already")] + AlreadyRegistered, + #[error("the issuer is not registered for the cargo type")] + NotRegistered, + #[error("the cluster has no such peer")] + NotAPeer, + #[error("no issuer can approve the change")] + NoElectorate, + #[error("the approver cannot vote on the change")] + NotAnElector, + #[error("an approver is listed twice")] + DuplicateApprover, + #[error("{approvals} approvals; the change needs {quorum}")] + BelowQuorum { approvals: usize, quorum: usize }, + #[error("a peer's keys: {0}")] + PeerKeys(&'static str), } impl InputError { @@ -106,6 +264,7 @@ impl InputError { InputError::Canonical(e) => e.class(), InputError::Malformed(_) => "malformed_input", InputError::KeyEvent(e) => e.class(), + InputError::Envelope(e) => e.class(), InputError::SaidMismatch => "said_mismatch", InputError::ControllerExists => "controller_exists", InputError::UnknownController(_) => "unknown_controller", @@ -114,9 +273,24 @@ impl InputError { InputError::Signature(e) => e.class(), InputError::DuplicateByte => "duplicate_byte", InputError::UnknownByte => "unknown_byte", + InputError::ByteRetired => "byte_retired", + InputError::ByteExported => "byte_exported", InputError::WrongFrame { .. } => "wrong_frame", InputError::BrokenHistoryChain => "broken_history_chain", InputError::NotCurrentOwner => "not_current_owner", + InputError::WrongCluster => "wrong_cluster", + InputError::UnknownCluster => "unknown_cluster", + InputError::DuplicateImport => "duplicate_import", + InputError::CertificateMismatch => "certificate_mismatch", + InputError::StaleSequence { .. } => "stale_sequence", + InputError::AlreadyRegistered => "already_registered", + InputError::NotRegistered => "not_registered", + InputError::NotAPeer => "not_a_peer", + InputError::NoElectorate => "no_electorate", + InputError::NotAnElector => "not_an_elector", + InputError::DuplicateApprover => "duplicate_approver", + InputError::BelowQuorum { .. } => "below_quorum", + InputError::PeerKeys(class) => class, } } } @@ -128,34 +302,74 @@ struct TransferBody { transition: Transition, } +#[derive(Serialize, Deserialize)] +#[serde(deny_unknown_fields)] +struct GovernanceBody { + proposal: Proposal, + approvals: Vec, +} + fn one(name: &str, body: Value) -> Vec { canonical::encode(&Value::Map(vec![(Value::text(name), body)])) .expect("an input always encodes") } +fn value(v: &T) -> Value { + wire::to_value(v).expect("an input's parts always encode") +} + impl Input { /// The wire form of a key event and the signatures over it. pub fn key_event(event: &KeyEvent, signatures: &[IndexedSignature]) -> Vec { one( "key_event", + Value::map([("event", value(event)), ("signatures", value(signatures))]), + ) + } + + /// The wire form of a governance proposal and its approvals. + pub fn governance(proposal: &Proposal, approvals: &[Approval]) -> Vec { + one( + "governance", Value::map([ - ( - "event", - wire::to_value(event).expect("an event always encodes"), - ), - ( - "signatures", - wire::to_value(signatures).expect("signatures always encode"), - ), + ("proposal", value(proposal)), + ("approvals", value(approvals)), ]), ) } /// The wire form of a mint. pub fn mint(provenance: &Provenance) -> Vec { + one("mint", value(provenance)) + } + + /// The wire form of an import: the certificate, the envelope, and the + /// signed key events of each log the envelope's history needs. + pub fn import( + certificate: &Certificate, + envelope: &smart_byte_core::Envelope, + logs: &[Vec<(KeyEvent, Vec)>], + ) -> Vec { + let logs = Value::Array( + logs.iter() + .map(|log| { + Value::Array( + log.iter() + .map(|(event, sigs)| { + Value::map([("event", value(event)), ("signatures", value(sigs))]) + }) + .collect(), + ) + }) + .collect(), + ); one( - "mint", - wire::to_value(provenance).expect("a provenance always encodes"), + "import", + Value::map([ + ("certificate", value(certificate)), + ("envelope", value(envelope)), + ("logs", logs), + ]), ) } @@ -163,14 +377,18 @@ impl Input { pub fn transfer(byte: &Said, transition: &Transition) -> Vec { one( "transfer", - wire::to_value(&TransferBody { + value(&TransferBody { byte: *byte, transition: transition.clone(), - }) - .expect("a transfer always encodes"), + }), ) } + /// The wire form of a burn. + pub fn burn(burn: &Burn) -> Vec { + one("burn", value(burn)) + } + /// Decode an input: its class, if it names one, and the input or why it /// is not one. /// @@ -178,6 +396,7 @@ impl Input { /// member's value exactly that class's body. A key event is decoded as /// identity spec §4 step 1 decodes it — `rec` and `dip` are refused before /// anything else is read — so its errors carry the key-event-log classes. + /// An import's envelope and logs are decoded when it is applied. pub fn decode(bytes: &[u8]) -> (Option, Result) { let value = match canonical::decode(bytes) { Ok(v) => v, @@ -191,18 +410,21 @@ impl Input { _ => return (None, Err(malformed("an input is a map with one member"))), }; let Some(class) = InputClass::named(&name) else { - return ( - None, - Err(malformed("an input's class is key_event, mint or transfer")), - ); + return (None, Err(malformed("an input names a class there is"))); }; let input = match class { InputClass::KeyEvent => key_event_body(body), + InputClass::Governance => exact::(&body).map(|g| Input::Governance { + proposal: g.proposal, + approvals: g.approvals, + }), InputClass::Mint => exact::(&body).map(Input::Mint), + InputClass::Import => import_body(body), InputClass::Transfer => exact::(&body).map(|t| Input::Transfer { byte: t.byte, transition: t.transition, }), + InputClass::Burn => exact::(&body).map(Input::Burn), }; (Some(class), input) } @@ -218,34 +440,81 @@ fn exact(value: &Value) -> Result Result { - let Value::Map(members) = body else { - return Err(malformed("a key_event input is a map")); +/// The members of a map that must have exactly `names`, in that order. +fn members( + body: Value, + names: [&str; N], + what: &str, +) -> Result<[Value; N], InputError> { + let Value::Map(entries) = body else { + return Err(InputError::Malformed(format!("{what} is a map"))); }; - let mut event = None; - let mut signatures = None; - for (k, v) in members { - match k { - Value::Text(t) if t == "event" => event = Some(v), - Value::Text(t) if t == "signatures" => signatures = Some(v), + let mut out: [Option; N] = std::array::from_fn(|_| None); + for (k, v) in entries { + let slot = match &k { + Value::Text(t) => names.iter().position(|n| n == t), + _ => None, + }; + match slot { + Some(i) if out[i].is_none() => out[i] = Some(v), _ => { - return Err(malformed( - "a key_event input has exactly `event` and `signatures`", - )); + return Err(InputError::Malformed(format!( + "{what} has exactly {names:?}" + ))); } } } - let (Some(event), Some(signatures)) = (event, signatures) else { - return Err(malformed( - "a key_event input has exactly `event` and `signatures`", - )); - }; - let signatures: Vec = exact(&signatures)?; + let mut values = Vec::with_capacity(N); + for v in out { + values + .push(v.ok_or_else(|| InputError::Malformed(format!("{what} has exactly {names:?}")))?); + } + Ok(values + .try_into() + .unwrap_or_else(|_| unreachable!("N values"))) +} + +fn signed_event(body: Value, what: &str) -> Result<(Value, Vec), InputError> { + let [event, signatures] = members(body, ["event", "signatures"], what)?; + Ok((event, exact(&signatures)?)) +} + +fn key_event_body(body: Value) -> Result { + let (event, signatures) = signed_event(body, "a key_event input")?; let event_bytes = canonical::encode(&event).map_err(InputError::Canonical)?; let event = KeyEvent::decode(&event_bytes, true)?; Ok(Input::KeyEvent { event, signatures }) } +fn import_body(body: Value) -> Result { + let [certificate, envelope, logs] = + members(body, ["certificate", "envelope", "logs"], "an import input")?; + let certificate: Certificate = exact(&certificate)?; + let Value::Array(logs) = logs else { + return Err(malformed("an import's logs are an array of logs")); + }; + let mut decoded = Vec::with_capacity(logs.len()); + for log in logs { + let Value::Array(events) = log else { + return Err(malformed("a log is an array of signed events")); + }; + decoded.push( + events + .into_iter() + .map(|e| { + signed_event(e, "a logged event") + .map(|(event, signatures)| LoggedEvent { event, signatures }) + }) + .collect::, _>>()?, + ); + } + Ok(Input::Import { + certificate, + envelope, + logs: decoded, + }) +} + #[cfg(test)] mod tests { use super::*; @@ -257,7 +526,7 @@ mod tests { (c, r.err().map(|e| e.class())) }; assert_eq!( - class(Value::map([("burn", Value::Null)])), + class(Value::map([("melt", Value::Null)])), (None, Some("malformed_input")) ); assert_eq!( @@ -272,6 +541,10 @@ mod tests { class(Value::map([("transfer", Value::Null)])), (Some(InputClass::Transfer), Some("malformed_input")) ); + assert_eq!( + class(Value::map([("burn", Value::Null)])), + (Some(InputClass::Burn), Some("malformed_input")) + ); assert_eq!( class(Value::map([( "key_event", @@ -279,6 +552,13 @@ mod tests { )])), (Some(InputClass::KeyEvent), Some("malformed_input")) ); + assert_eq!( + class(Value::map([( + "import", + Value::map([("certificate", Value::Null), ("envelope", Value::Null)]) + )])), + (Some(InputClass::Import), Some("malformed_input")) + ); // Non-canonical bytes are refused before anything is read. let (c, r) = Input::decode(&[0xa1, 0x64, b'm', b'i', b'n', b't', 0x18, 0x00]); assert_eq!( diff --git a/smart-byte/smart-byte-rs/crates/smart-byte-state/src/lib.rs b/smart-byte/smart-byte-rs/crates/smart-byte-state/src/lib.rs index f813e44aa..103510d46 100644 --- a/smart-byte/smart-byte-rs/crates/smart-byte-state/src/lib.rs +++ b/smart-byte/smart-byte-rs/crates/smart-byte-state/src/lib.rs @@ -9,8 +9,10 @@ //! the bytes the cluster holds. Its canonical encoding is the checkpoint //! and its BLAKE3 digest is the state hash. //! * [`State::apply_frame`] — the transition (treatise §9.4 steps 4–5): key -//! events, mints and transfers, deduplicated, ordered, and each applied or -//! dropped for a named reason. +//! events, governance, mints, imports, transfers and burns, deduplicated, +//! ordered, and each applied or dropped for a named reason. +//! * [`Certificate`] — what a cluster's nodes sign when a byte leaves for +//! another cluster, and what that cluster imports it on (treatise §11.3.3). //! * [`Store`] — checkpoint and replay log (treatise §16). //! //! The lockstep protocol around it — exchanging inputs and tallying state @@ -18,13 +20,18 @@ #![forbid(unsafe_code)] +pub mod certificate; pub mod demo; pub mod frame; pub mod input; pub mod state; pub mod store; +pub use certificate::{Certificate, ExportStatement}; pub use frame::{FrameReport, InputResult}; -pub use input::{Input, InputClass, InputError}; -pub use state::{ByteRecord, ControllerRecord, State}; +pub use input::{Approval, Burn, Input, InputClass, InputError, Proposal}; +pub use state::{ + ByteRecord, Change, ControllerRecord, ExportRecord, Governance, Peer, Pending, RetiredRecord, + State, +}; pub use store::{Store, StoreError}; diff --git a/smart-byte/smart-byte-rs/crates/smart-byte-state/src/state.rs b/smart-byte/smart-byte-rs/crates/smart-byte-state/src/state.rs index d919550ab..22d4ec4a9 100644 --- a/smart-byte/smart-byte-rs/crates/smart-byte-state/src/state.rs +++ b/smart-byte/smart-byte-rs/crates/smart-byte-state/src/state.rs @@ -4,9 +4,15 @@ //! ```text //! { //! "frame": the next frame to apply, +//! "cluster": this cluster's identifier, +//! "peers": {cluster: node keys} — the clusters bytes move to and from, //! "registry": {issuer AID: [cargo types, ascending]}, +//! "governance": {"delay", "sequence", "pending"}, //! "controllers": {AID: key state}, -//! "bytes": {identity: owner, history hash, issuer, cargo, mint frame} +//! "bytes": {identity: owner, history hash, issuer, cargo, mint frame}, +//! "retired": {identity: a burned byte's last state}, +//! "exported": {identity: a byte that left for another cluster}, +//! "imported": [digests of the export certificates accepted] //! } //! ``` //! @@ -30,12 +36,80 @@ pub struct State { /// The next frame to apply. Genesis is frame 0; applying frame `n` /// leaves `n + 1` here, so the state hash covers the new frame number. pub frame: u64, + /// This cluster's identifier. + pub cluster: Said, + /// The clusters bytes move to and from, each with its nodes' keys. + pub peers: BTreeMap, /// Each issuer and the cargo types it may mint (treatise §15.1). pub registry: BTreeMap>, + /// Changes to the registry and the peers, and when they take effect. + pub governance: Governance, /// Every controller whose key-event log the cluster has applied. pub controllers: BTreeMap, /// Every byte the cluster holds, by identity. pub bytes: BTreeMap, + /// Every byte burned here: its identity can never be minted or moved + /// again. + pub retired: BTreeMap, + /// Every byte that left for another cluster and has not come back. + pub exported: BTreeMap, + /// The digests of the export certificates this cluster has imported: + /// each is accepted once. + pub imported: BTreeSet, +} + +/// A 32-byte digest, as a byte string. +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash, Serialize, Deserialize, +)] +pub struct Digest(#[serde(with = "smart_byte_core::wire::fixed_bytes")] pub Blake3Hash); + +/// A peer cluster: the keys of its nodes, any supermajority of which can +/// certify an export (treatise §11.3.3). +#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)] +#[serde(deny_unknown_fields)] +pub struct Peer { + /// Its nodes' keys: algorithm identifier and key. + pub keys: Vec, +} + +/// The cluster's governance (cluster state spec §4.5). +#[derive(Clone, Debug, Default, PartialEq, Eq, Serialize, Deserialize)] +#[serde(deny_unknown_fields)] +pub struct Governance { + /// Frames between a change's acceptance and its effect, beyond the next. + pub delay: u64, + /// The sequence number the next accepted proposal must carry. + pub sequence: u64, + /// Accepted changes not yet in effect, in the order they were accepted. + pub pending: Vec, +} + +/// A change accepted but not yet in effect. +#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)] +#[serde(deny_unknown_fields)] +pub struct Pending { + pub change: Change, + /// The first frame the change is in force. + pub effective: u64, +} + +/// A change to the registry or the peers. +#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)] +#[serde(tag = "action", deny_unknown_fields)] +pub enum Change { + /// Authorize `issuer` to mint `cargo_type`. + #[serde(rename = "add_issuer")] + AddIssuer { cargo_type: u64, issuer: Aid }, + /// Withdraw that authorization. + #[serde(rename = "remove_issuer")] + RemoveIssuer { cargo_type: u64, issuer: Aid }, + /// Add a peer cluster, or replace its nodes' keys. + #[serde(rename = "set_peer")] + SetPeer { peer: Said, keys: Vec }, + /// Remove a peer cluster. + #[serde(rename = "remove_peer")] + RemovePeer { peer: Said }, } /// A controller's key state as the cluster holds it: what its key-event log @@ -69,7 +143,7 @@ pub struct ByteRecord { pub issuer: Aid, /// The cargo, as its issuer attested it. pub cargo: Cargo, - /// The frame it was minted in. + /// The frame it was minted in, in the cluster that minted it. pub minted: u64, /// The current owner. pub owner: Aid, @@ -78,15 +152,66 @@ pub struct ByteRecord { pub history_hash: Blake3Hash, } +/// A burned byte: its last state, and the frame it was burned in. +#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)] +#[serde(deny_unknown_fields)] +pub struct RetiredRecord { + pub issuer: Aid, + pub cargo: Cargo, + pub minted: u64, + /// The owner that burned it. + pub owner: Aid, + #[serde(with = "smart_byte_core::wire::fixed_bytes")] + pub history_hash: Blake3Hash, + /// The frame it was burned in. + pub retired: u64, +} + +/// A byte that left for another cluster: its state as it left, which the +/// cluster's nodes certify to the destination (treatise §11.3.3). +#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)] +#[serde(deny_unknown_fields)] +pub struct ExportRecord { + pub issuer: Aid, + pub cargo: Cargo, + pub minted: u64, + /// Its owner in the destination cluster. + pub owner: Aid, + /// Its history hash after the transition that exported it. + #[serde(with = "smart_byte_core::wire::fixed_bytes")] + pub history_hash: Blake3Hash, + /// The cluster it left for. + pub destination: Said, + /// The frame it left in. + pub exported: u64, +} + impl State { - /// A cluster's genesis state: frame 0, the issuers authorized from the - /// start, and nothing else. Genesis bytes and the logs of genesis - /// controllers arrive as frame 0's inputs, like any others (§15.4). - pub fn genesis(registry: impl IntoIterator) -> Self { - let mut state = State::default(); + /// A cluster's genesis state: frame 0, its identifier, its peers, the + /// issuers authorized from the start, and its governance delay. Genesis + /// bytes and the logs of genesis controllers arrive as frame 0's inputs, + /// like any others (§15.4). + pub fn genesis( + cluster: Said, + registry: impl IntoIterator, + peers: impl IntoIterator)>, + governance_delay: u64, + ) -> Self { + let mut state = State { + cluster, + governance: Governance { + delay: governance_delay, + ..Governance::default() + }, + ..State::default() + }; for (issuer, cargo_type) in registry { state.registry.entry(issuer).or_default().insert(cargo_type); } + for (peer, keys) in peers { + assert_ne!(peer, cluster, "a cluster is not its own peer"); + state.peers.insert(peer, Peer { keys }); + } state } @@ -111,6 +236,25 @@ impl State { .get(issuer) .is_some_and(|types| types.contains(&cargo_type)) } + + /// Whether the cluster has ever held a byte with this identity — live, + /// burned or exported. + pub fn knows_byte(&self, identity: &Said) -> bool { + self.bytes.contains_key(identity) + || self.retired.contains_key(identity) + || self.exported.contains_key(identity) + } +} + +impl Peer { + /// The key state a certificate from this peer is checked against: its + /// nodes' keys, and the supermajority of them (treatise §13.1). + pub fn key_state(&self) -> KeyState { + KeyState { + keys: self.keys.clone(), + threshold: (2 * self.keys.len() / 3 + 1) as u64, + } + } } impl ControllerRecord { @@ -162,9 +306,13 @@ mod tests { Aid::of_inception(Said::hash(label.as_bytes())) } + fn genesis(registry: &[(Aid, u64)]) -> State { + State::genesis(Said::hash(b"cluster"), registry.iter().copied(), [], 0) + } + #[test] fn the_encoding_is_canonical_whatever_order_the_maps_hold() { - let state = State::genesis([(aid("b"), 2), (aid("a"), 1), (aid("b"), 1)]); + let state = genesis(&[(aid("b"), 2), (aid("a"), 1), (aid("b"), 1)]); let bytes = state.to_cbor(); // The canonical decoder accepts it unchanged: keys are in encoded order. assert_eq!( @@ -178,7 +326,7 @@ mod tests { #[test] fn a_registry_entry_in_another_order_is_not_the_state_s_encoding() { - let state = State::genesis([(aid("a"), 1), (aid("a"), 2)]); + let state = genesis(&[(aid("a"), 1), (aid("a"), 2)]); let canonical::Value::Map(mut members) = canonical::decode(&state.to_cbor()).unwrap() else { unreachable!() @@ -200,9 +348,19 @@ mod tests { #[test] fn the_frame_number_is_part_of_the_hash() { - let a = State::genesis([(aid("a"), 1)]); + let a = genesis(&[(aid("a"), 1)]); let mut b = a.clone(); b.frame += 1; assert_ne!(a.hash(), b.hash()); } + + #[test] + fn a_peer_certifies_with_a_supermajority_of_its_nodes() { + let peer = |n: usize| Peer { + keys: (0..n).map(|i| PrefixedKey(vec![1, i as u8])).collect(), + }; + assert_eq!(peer(4).key_state().threshold, 3); + assert_eq!(peer(7).key_state().threshold, 5); + assert_eq!(peer(1).key_state().threshold, 1); + } } diff --git a/smart-byte/smart-byte-rs/crates/smart-byte-state/tests/frames.rs b/smart-byte/smart-byte-rs/crates/smart-byte-state/tests/frames.rs index 8bfa99c12..aa7c303dc 100644 --- a/smart-byte/smart-byte-rs/crates/smart-byte-state/tests/frames.rs +++ b/smart-byte/smart-byte-rs/crates/smart-byte-state/tests/frames.rs @@ -70,7 +70,7 @@ fn world() -> World { JouleCost::default(), ); let mint = Input::mint(&byte.provenance); - let mut state = State::genesis([(issuer.aid, 1)]); + let mut state = State::genesis(Said::hash(b"cluster"), [(issuer.aid, 1)], [], 0); let report = state.apply_frame(&[issuer_icp, alice_icp, bob_icp, mint.clone()]); assert_eq!(classes(&report), vec![Ok(()); 4]); World { @@ -250,7 +250,7 @@ fn a_mint_and_its_first_transfer_share_a_frame() { ); let id = byte.identity(); let (move_it, _) = transfer(&alice, &id, id.0, issuer.aid, 0); - let mut state = State::genesis([(issuer.aid, 1)]); + let mut state = State::genesis(Said::hash(b"cluster"), [(issuer.aid, 1)], [], 0); let report = state.apply_frame(&[ move_it, Input::mint(&byte.provenance), @@ -283,7 +283,7 @@ fn a_controller_signs_only_once_its_log_is_in_the_cluster() { JouleCost::default(), ); let id = byte.identity(); - let mut state = State::genesis([(issuer.aid, 1)]); + let mut state = State::genesis(Said::hash(b"cluster"), [(issuer.aid, 1)], [], 0); state.apply_frame(&[issuer_icp, Input::mint(&byte.provenance)]); let (early, _) = transfer(&carol, &id, id.0, issuer.aid, 1); assert_eq!( diff --git a/smart-byte/smart-byte-rs/crates/smart-byte-state/tests/lifecycle.rs b/smart-byte/smart-byte-rs/crates/smart-byte-state/tests/lifecycle.rs new file mode 100644 index 000000000..0a4026921 --- /dev/null +++ b/smart-byte/smart-byte-rs/crates/smart-byte-state/tests/lifecycle.rs @@ -0,0 +1,491 @@ +//! Governance, burns, and bytes moving between clusters. + +use smart_byte_core::keys::IndexedSignature; +use smart_byte_core::{Aid, Cargo, Envelope, JouleCost, Said, SigningKey}; +use smart_byte_keri_witness::{Controller, KeyEvent, KeyPair, Threshold}; +use smart_byte_state::certificate::node_key; +use smart_byte_state::{Approval, Burn, Certificate, Change, Input, Proposal, State}; + +fn key(label: &str) -> KeyPair { + KeyPair::from_signing(SigningKey::from_bytes(&Said::hash(label.as_bytes()).0)) +} + +/// A one-key controller and the signed events of its log so far. +struct Party { + c: Controller, + log: Vec<(KeyEvent, Vec)>, +} + +impl Party { + fn new(label: &str) -> Self { + let (c, icp) = Controller::incept( + vec![key(&format!("{label}-0"))], + vec![key(&format!("{label}-1"))], + Threshold(1), + Threshold(1), + vec![], + Threshold(0), + ) + .unwrap(); + let event = KeyEvent::Inception(icp); + let sigs = sigs(&c, &event); + Party { + c, + log: vec![(event, sigs)], + } + } + fn aid(&self) -> Aid { + self.c.aid + } + fn incept(&self) -> Vec { + Input::key_event(&self.log[0].0, &self.log[0].1) + } + fn approve(&self, proposal: &Proposal) -> Approval { + Approval { + approver: self.aid(), + signature: self + .c + .signer() + .sign(&smart_byte_core::wire::to_vec(proposal).unwrap()), + } + } +} + +fn sigs(c: &Controller, event: &KeyEvent) -> Vec { + c.sign_event(event) + .unwrap() + .into_iter() + .map(|(index, signature)| IndexedSignature { + index: u64::from(index), + signature, + }) + .collect() +} + +fn classes(report: &smart_byte_state::FrameReport) -> Vec> { + report + .results + .iter() + .map(|r| r.outcome.as_ref().map(|_| ()).map_err(|e| e.class())) + .collect() +} + +fn sorted(mut v: Vec>) -> Vec> { + v.sort(); + v +} + +const USD: u64 = 1; + +fn cluster(label: &str) -> Said { + Said::hash(label.as_bytes()) +} + +#[test] +fn an_issuer_is_added_by_the_others_and_only_after_the_delay() { + let (a, b, c, new) = ( + Party::new("a"), + Party::new("b"), + Party::new("c"), + Party::new("new"), + ); + let id = cluster("one"); + let mut state = State::genesis(id, [(a.aid(), USD), (b.aid(), USD), (c.aid(), USD)], [], 2); + state.apply_frame(&[a.incept(), b.incept(), c.incept(), new.incept()]); + + let proposal = Proposal { + cluster: id, + sequence: 0, + change: Change::AddIssuer { + cargo_type: USD, + issuer: new.aid(), + }, + }; + // Three issuers: the quorum is floor(2·3/3)+1 = 3. + let two = Input::governance(&proposal, &[a.approve(&proposal), b.approve(&proposal)]); + let three = Input::governance( + &proposal, + &[ + a.approve(&proposal), + b.approve(&proposal), + c.approve(&proposal), + ], + ); + assert_eq!( + classes(&state.apply_frame(&[two])), + vec![Err("below_quorum")] + ); + assert_eq!(classes(&state.apply_frame(&[three.clone()])), vec![Ok(())]); + assert_eq!(state.governance.pending.len(), 1); + assert_eq!(state.governance.pending[0].effective, 2 + 1 + 2); + + // The same proposal again: its sequence number is spent. + assert_eq!( + classes(&state.apply_frame(&[three])), + vec![Err("stale_sequence")] + ); + + let mint = |label: &str, frame_note: &str| { + let e = Envelope::issue( + &new.c.signer(), + a.aid(), + [frame_note.len() as u8; 16], + Cargo::usd_micros(1), + JouleCost::default(), + ); + let _ = label; + Input::mint(&e.provenance) + }; + // Frame 4: not yet in force. + assert_eq!(state.frame, 4); + assert_eq!( + classes(&state.apply_frame(&[mint("early", "x")])), + vec![Err("issuer_not_registered")] + ); + // Frame 5: in force from its start. + assert_eq!( + classes(&state.apply_frame(&[mint("in force", "xy")])), + vec![Ok(())] + ); + assert!(state.authorizes(&new.aid(), USD) && state.governance.pending.is_empty()); +} + +#[test] +fn governance_is_checked_before_it_is_counted() { + let (a, b, outsider) = (Party::new("a"), Party::new("b"), Party::new("outsider")); + let id = cluster("one"); + let mut state = State::genesis(id, [(a.aid(), USD), (b.aid(), USD)], [], 0); + state.apply_frame(&[a.incept(), b.incept(), outsider.incept()]); + let p = |change: Change, sequence: u64, cluster: Said| Proposal { + cluster, + sequence, + change, + }; + let add = |issuer: Aid| Change::AddIssuer { + cargo_type: USD, + issuer, + }; + let remove = |issuer: Aid| Change::RemoveIssuer { + cargo_type: USD, + issuer, + }; + + let elsewhere = p(add(outsider.aid()), 0, cluster("two")); + let stale = p(add(outsider.aid()), 7, id); + let registered = p(add(a.aid()), 0, id); + let unregistered = p(remove(outsider.aid()), 0, id); + let by_outsider = p(add(outsider.aid()), 0, id); + let twice = p(add(outsider.aid()), 0, id); + let report = state.apply_frame(&[ + Input::governance(&elsewhere, &[a.approve(&elsewhere), b.approve(&elsewhere)]), + Input::governance(&stale, &[a.approve(&stale), b.approve(&stale)]), + Input::governance( + ®istered, + &[a.approve(®istered), b.approve(®istered)], + ), + Input::governance( + &unregistered, + &[a.approve(&unregistered), b.approve(&unregistered)], + ), + Input::governance( + &by_outsider, + &[a.approve(&by_outsider), outsider.approve(&by_outsider)], + ), + Input::governance(&twice, &[a.approve(&twice), a.approve(&twice)]), + ]); + assert_eq!( + sorted(classes(&report)), + sorted(vec![ + Err("wrong_cluster"), + Err("stale_sequence"), + Err("already_registered"), + Err("not_registered"), + Err("not_an_elector"), + Err("duplicate_approver"), + ]) + ); + assert_eq!(state.governance.sequence, 0); +} + +#[test] +fn an_issuer_cannot_block_its_own_removal() { + let (a, b, c) = (Party::new("a"), Party::new("b"), Party::new("c")); + let id = cluster("one"); + let mut state = State::genesis(id, [(a.aid(), USD), (b.aid(), USD), (c.aid(), USD)], [], 0); + state.apply_frame(&[a.incept(), b.incept(), c.incept()]); + let proposal = Proposal { + cluster: id, + sequence: 0, + change: Change::RemoveIssuer { + cargo_type: USD, + issuer: c.aid(), + }, + }; + // The electorate is the other two; both approve. The target's vote is + // not counted, and not needed. + let with_target = Input::governance(&proposal, &[a.approve(&proposal), c.approve(&proposal)]); + assert_eq!( + classes(&state.apply_frame(&[with_target])), + vec![Err("not_an_elector")] + ); + let others = Input::governance(&proposal, &[a.approve(&proposal), b.approve(&proposal)]); + assert_eq!(classes(&state.apply_frame(&[others])), vec![Ok(())]); + state.apply_frame(&[]); + assert!(!state.authorizes(&c.aid(), USD)); +} + +#[test] +fn redemption_is_a_return_to_the_issuer_and_a_burn() { + let (issuer, alice) = (Party::new("issuer"), Party::new("alice")); + let mut state = State::genesis(cluster("one"), [(issuer.aid(), USD)], [], 0); + let byte = Envelope::issue( + &issuer.c.signer(), + alice.aid(), + [1; 16], + Cargo::usd_micros(5), + JouleCost::default(), + ); + let mint = Input::mint(&byte.provenance); + state.apply_frame(&[issuer.incept(), alice.incept(), mint.clone()]); + let id = byte.identity(); + + // Alice returns it; the issuer burns it in the same frame: burns apply + // after transfers. + let back = byte.transfer(&alice.c.signer(), issuer.aid(), 1); + let t = back.ownership_chain.last().unwrap(); + let burn = Burn::sign(&issuer.c.signer(), id, back.history_hash(), 1); + let by_alice = Burn::sign(&alice.c.signer(), id, back.history_hash(), 1); + let report = state.apply_frame(&[ + Input::burn(&burn), + Input::burn(&by_alice), + Input::transfer(&id, t), + ]); + assert_eq!( + sorted(classes(&report)), + sorted(vec![Ok(()), Ok(()), Err("not_current_owner")]) + ); + assert!(state.bytes.is_empty()); + assert_eq!(state.retired[&id].owner, issuer.aid()); + + // Burned for good: no transfer, no re-mint. + let after = Burn::sign(&issuer.c.signer(), id, back.history_hash(), 2); + assert_eq!( + sorted(classes(&state.apply_frame(&[Input::burn(&after), mint]))), + vec![Err("byte_retired"), Err("duplicate_byte")] + ); +} + +/// Two clusters, each with four nodes, peering with each other. +struct Federation { + a: State, + b: State, + a_nodes: Vec, + b_nodes: Vec, +} + +fn federation(registry: &[(Aid, u64)]) -> Federation { + let nodes = |label: &str| { + (0..4) + .map(|i| SigningKey::from_bytes(&Said::hash(format!("{label}-node-{i}").as_bytes()).0)) + .collect::>() + }; + let (a_nodes, b_nodes) = (nodes("a"), nodes("b")); + let keys = |n: &[SigningKey]| n.iter().map(node_key).collect::>(); + Federation { + a: State::genesis( + cluster("A"), + registry.iter().copied(), + [(cluster("B"), keys(&b_nodes))], + 0, + ), + b: State::genesis( + cluster("B"), + registry.iter().copied(), + [(cluster("A"), keys(&a_nodes))], + 0, + ), + a_nodes, + b_nodes, + } +} + +fn certify( + statement: smart_byte_state::ExportStatement, + nodes: &[SigningKey], + signers: &[u64], +) -> Certificate { + let picked: Vec<(u64, &SigningKey)> = + signers.iter().map(|i| (*i, &nodes[*i as usize])).collect(); + Certificate::sign(statement, &picked) +} + +#[test] +fn a_byte_moves_between_clusters_and_back() { + let (issuer, alice, bob) = (Party::new("issuer"), Party::new("alice"), Party::new("bob")); + let mut f = federation(&[(issuer.aid(), USD)]); + let byte = Envelope::issue( + &issuer.c.signer(), + alice.aid(), + [1; 16], + Cargo::usd_micros(5), + JouleCost::default(), + ); + let id = byte.identity(); + f.a.apply_frame(&[ + issuer.incept(), + alice.incept(), + Input::mint(&byte.provenance), + ]); + f.b.apply_frame(&[bob.incept()]); + + // Alice sends it to Bob, in cluster B. + let out = byte.export(&alice.c.signer(), bob.aid(), 1, cluster("B")); + let report = + f.a.apply_frame(&[Input::transfer(&id, out.ownership_chain.last().unwrap())]); + assert_eq!(classes(&report), vec![Ok(())]); + assert!(f.a.bytes.is_empty() && f.a.exported.contains_key(&id)); + let statement = report.exports[0].clone(); + // A transfer of a byte that has left is refused. + let stale = byte.transfer(&alice.c.signer(), issuer.aid(), 2); + assert_eq!( + classes(&f.a.apply_frame(&[Input::transfer(&id, stale.ownership_chain.last().unwrap())])), + vec![Err("byte_exported")] + ); + + let logs = vec![issuer.log.clone(), alice.log.clone()]; + let import = |cert: &Certificate, logs: &[Vec<(KeyEvent, Vec)>]| { + Input::import(cert, &out, logs) + }; + let three = certify(statement.clone(), &f.a_nodes, &[0, 1, 2]); + let two = certify(statement.clone(), &f.a_nodes, &[0, 2]); + let missing_log = import(&three, &logs[..1]); + let report = f.b.apply_frame(&[import(&two, &logs), missing_log]); + assert_eq!( + sorted(classes(&report)), + vec![Err("below_threshold"), Err("unknown_key_state")] + ); + // With three of A's four nodes and every log the history needs: applied. + assert_eq!( + classes(&f.b.apply_frame(&[import(&three, &logs)])), + vec![Ok(())] + ); + assert_eq!(f.b.bytes[&id].owner, bob.aid()); + assert_eq!(f.b.bytes[&id].history_hash, out.history_hash()); + // Once. + assert_eq!( + classes(&f.b.apply_frame(&[import(&three, &logs)])), + vec![Err("duplicate_import")] + ); + + // Bob sends it back to Alice in A; A takes it back over its own export. + let home = out.export(&bob.c.signer(), alice.aid(), f.b.frame, cluster("A")); + let report = + f.b.apply_frame(&[Input::transfer(&id, home.ownership_chain.last().unwrap())]); + assert_eq!(classes(&report), vec![Ok(())]); + let cert = certify(report.exports[0].clone(), &f.b_nodes, &[1, 2, 3]); + let logs = vec![issuer.log.clone(), alice.log.clone(), bob.log.clone()]; + assert_eq!( + classes(&f.a.apply_frame(&[Input::import(&cert, &home, &logs)])), + vec![Ok(())] + ); + assert!(f.a.bytes.contains_key(&id) && !f.a.exported.contains_key(&id)); + // A's first certificate, replayed in A, is not for A. + assert_eq!( + classes(&f.a.apply_frame(&[import(&three, &[issuer.log.clone(), alice.log.clone()])])), + vec![Err("wrong_cluster")] + ); +} + +#[test] +fn an_import_must_be_the_byte_certified() { + let (issuer, alice, bob) = (Party::new("issuer"), Party::new("alice"), Party::new("bob")); + let mut f = federation(&[(issuer.aid(), USD)]); + let byte = Envelope::issue( + &issuer.c.signer(), + alice.aid(), + [1; 16], + Cargo::usd_micros(5), + JouleCost::default(), + ); + let id = byte.identity(); + f.a.apply_frame(&[ + issuer.incept(), + alice.incept(), + Input::mint(&byte.provenance), + ]); + let out = byte.export(&alice.c.signer(), bob.aid(), 1, cluster("B")); + let report = + f.a.apply_frame(&[Input::transfer(&id, out.ownership_chain.last().unwrap())]); + let cert = certify(report.exports[0].clone(), &f.a_nodes, &[0, 1, 2]); + let logs = vec![issuer.log.clone(), alice.log.clone()]; + // The envelope before the export: not the history A certified. + let report = f.b.apply_frame(&[Input::import(&cert, &byte, &logs)]); + assert_eq!(classes(&report), vec![Err("certificate_mismatch")]); + // A certificate from a cluster B does not peer with. + let mut stranger = f.b.clone(); + stranger.peers.clear(); + assert_eq!( + classes(&stranger.apply_frame(&[Input::import(&cert, &out, &logs)])), + vec![Err("unknown_cluster")] + ); + // An export to a cluster A does not peer with is refused in A. + let lost = byte.export(&alice.c.signer(), bob.aid(), 2, cluster("nowhere")); + let mut a = f.a.clone(); + a.exported.clear(); + a.bytes.insert( + id, + smart_byte_state::ByteRecord { + issuer: issuer.aid(), + cargo: Cargo::usd_micros(5), + minted: 0, + owner: alice.aid(), + history_hash: id.0, + }, + ); + assert_eq!( + classes(&a.apply_frame(&[Input::transfer(&id, lost.ownership_chain.last().unwrap())])), + vec![Err("unknown_cluster")] + ); +} + +#[test] +fn peers_change_by_governance() { + let (a, b) = (Party::new("a"), Party::new("b")); + let id = cluster("one"); + let mut state = State::genesis(id, [(a.aid(), USD), (b.aid(), 2)], [], 0); + state.apply_frame(&[a.incept(), b.incept()]); + let node = SigningKey::from_bytes(&[9; 32]); + let proposal = Proposal { + cluster: id, + sequence: 0, + change: Change::SetPeer { + peer: cluster("two"), + keys: vec![node_key(&node)], + }, + }; + // Peer changes are every issuer's business: both must approve. + let one = Input::governance(&proposal, &[a.approve(&proposal)]); + let both = Input::governance(&proposal, &[a.approve(&proposal), b.approve(&proposal)]); + assert_eq!( + classes(&state.apply_frame(&[one])), + vec![Err("below_quorum")] + ); + assert_eq!(classes(&state.apply_frame(&[both])), vec![Ok(())]); + state.apply_frame(&[]); + assert!(state.peers.contains_key(&cluster("two"))); + // A peer's keys must be keys. + let bad = Proposal { + cluster: id, + sequence: 1, + change: Change::SetPeer { + peer: cluster("three"), + keys: vec![smart_byte_core::PrefixedKey(vec![1, 2, 3])], + }, + }; + assert_eq!( + classes( + &state.apply_frame(&[Input::governance(&bad, &[a.approve(&bad), b.approve(&bad)])]) + ), + vec![Err("malformed_verifying_key")] + ); +} -- 2.54.0 (Apple Git-157)