diff --git a/.config/dictionaries/project.dic b/.config/dictionaries/project.dic index 02052bab5..9fc7fdc6f 100644 --- a/.config/dictionaries/project.dic +++ b/.config/dictionaries/project.dic @@ -27,6 +27,7 @@ cardano carryforward CBOR cbork +cddlc cdylib CEST chacha diff --git a/Earthfile b/Earthfile index 8a891774a..1dae7616c 100644 --- a/Earthfile +++ b/Earthfile @@ -1,7 +1,8 @@ VERSION 0.8 -IMPORT github.com/input-output-hk/catalyst-ci/earthly/mdlint:feat/deny.toml AS mdlint-ci -IMPORT github.com/input-output-hk/catalyst-ci/earthly/cspell:feat/deny.toml AS cspell-ci +IMPORT github.com/input-output-hk/catalyst-ci/earthly/mdlint:v3.2.23 AS mdlint-ci +IMPORT github.com/input-output-hk/catalyst-ci/earthly/cspell:v3.2.23 AS cspell-ci + FROM debian:stable-slim diff --git a/docs/Earthfile b/docs/Earthfile index a5a418d08..e7c53be6c 100644 --- a/docs/Earthfile +++ b/docs/Earthfile @@ -1,6 +1,7 @@ VERSION 0.8 -IMPORT github.com/input-output-hk/catalyst-ci/earthly/docs:feat/deny.toml AS docs-ci +IMPORT github.com/input-output-hk/catalyst-ci/earthly/docs:v3.2.23 AS docs-ci + IMPORT .. AS repo diff --git a/docs/src/architecture/08_concepts/catalyst_voting/.pages b/docs/src/architecture/08_concepts/catalyst_voting/.pages index 242ec1a0c..02851bef1 100644 --- a/docs/src/architecture/08_concepts/catalyst_voting/.pages +++ b/docs/src/architecture/08_concepts/catalyst_voting/.pages @@ -2,5 +2,5 @@ title: Catalyst Voting arrange: - crypto.md - gen_vote_tx.md - - jorm.md - - cat_v2.md + - v1.md + - v2.md diff --git a/docs/src/architecture/08_concepts/catalyst_voting/cat_v2.md b/docs/src/architecture/08_concepts/catalyst_voting/cat_v2.md deleted file mode 100644 index 7ae9c7ec4..000000000 --- a/docs/src/architecture/08_concepts/catalyst_voting/cat_v2.md +++ /dev/null @@ -1,71 +0,0 @@ -# Catalyst V2 - ---- - -Title: Catalyst V2 Voting Transaction - -Status: Proposed - -Authors: - - Alex Pozhylenkov - -Created: 2024-10-24 - ---- - -## Abstract - -This document describes a Catalyst V2 vote transaction structure. - -## Motivation - -## Specification - -It is a Catalyst v2 voting transaction -defined on top the ["Generalized Vote Transaction"](./gen_vote_tx.md#specification) structure. - -Following that spec need to define a format of `choice`, `proof` and `prop_id`. - - -!!! note - - - If `choice` is *public* one, `proof` **must** be `null`. - - If `choice` is *private* one, `proof` **must** be **not** `null`. - - - -??? note "vote transaction v2 definition: `vote_tx_v2.cddl`" - - ```CDDL - {{ include_file('src/architecture/08_concepts/catalyst_voting/cddl/vote_tx_v2.cddl', indent=4) }} - ``` - - -### Vote generation - -To generate a cryptographically secured `private_choice` and `zk_proof` parts you can follow this [spec](./crypto.md#vote). -Important to note, -that as part of [*initial setup*](./crypto.md#initial-setup) of the voting procedure, -the following properties are used: - -1. Each proposal, - defined by the `vote_plan_id` and `proposal_index`, defines a number of possible options. -2. [ristretto255] as a backend cryptographic group. -3. A commitment key $ck$ defined as a [BLAKE2b-512] hash of the `vote_plan_id` bytes. - -## Rationale - -## Path to Active - -### Acceptance Criteria - - -### Implementation Plan - - - - -[BLAKE2b-512]: https://www.blake2.net/blake2.pdf -[ristretto255]: https://ristretto.group - - diff --git a/docs/src/architecture/08_concepts/catalyst_voting/cddl/Earthfile b/docs/src/architecture/08_concepts/catalyst_voting/cddl/Earthfile new file mode 100644 index 000000000..0fe8c1b43 --- /dev/null +++ b/docs/src/architecture/08_concepts/catalyst_voting/cddl/Earthfile @@ -0,0 +1,19 @@ +VERSION 0.8 + +IMPORT github.com/input-output-hk/catalyst-ci/earthly/cddl:v3.2.23 AS cddl-ci + +check-cddl: + FROM cddl-ci+cddl-base + + WORKDIR /cddl + + COPY ./gen_vote_tx.cddl \ + ./vote_tx_v2_public.cddl \ + ./vote_tx_v2_private.cddl \ + ./gen_vote_tx_cose_payload.cddl \ + . + + RUN cddlc -2 gen_vote_tx_cose_payload.cddl + RUN cddlc -2 gen_vote_tx.cddl + RUN cddlc -2 vote_tx_v2_public.cddl + RUN cddlc -2 vote_tx_v2_private.cddl diff --git a/docs/src/architecture/08_concepts/catalyst_voting/cddl/blueprint.cue b/docs/src/architecture/08_concepts/catalyst_voting/cddl/blueprint.cue new file mode 100644 index 000000000..9e3d3a823 --- /dev/null +++ b/docs/src/architecture/08_concepts/catalyst_voting/cddl/blueprint.cue @@ -0,0 +1,2 @@ +version: "1.0.0" +project: name: "docs-catalyst-voting-cddl" diff --git a/docs/src/architecture/08_concepts/catalyst_voting/cddl/gen_vote_tx.cddl b/docs/src/architecture/08_concepts/catalyst_voting/cddl/gen_vote_tx.cddl index 92dd63f42..67635a0b2 100644 --- a/docs/src/architecture/08_concepts/catalyst_voting/cddl/gen_vote_tx.cddl +++ b/docs/src/architecture/08_concepts/catalyst_voting/cddl/gen_vote_tx.cddl @@ -1,12 +1,12 @@ -gen-vote-tx = [ - tx-body, +gen-vote-tx = [ + tx-body, signature ] -tx-body = [ +tx-body = [ vote-type event, - votes, + votes, voters-data, ] @@ -14,18 +14,20 @@ vote-type = UUID ; e.g. Public or Private vote event = { * event-key => any } event-key = int / text -votes = [+ vote] -vote = [ - choices, - proof \ null, - prop-id \ null, +votes = [+ vote] +vote = [ + choices, + proof, + prop-id, ] -choices = [+ choice] -choice = encoded-cbor -proof = encoded-cbor -prop-id = encoded-cbor +choices = [+ choice] +choice = #6.24(bytes .cbor choice-t) ; encoded-cbor +proof = #6.24(bytes .cbor proof-t) ; encoded-cbor +prop-id = #6.24(bytes .cbor prop-id-t) ; encoded-cbor voters-data = encoded-cbor UUID = #6.37(bytes) ; UUID type -signature = #6.98(COSE_Sign) ; COSE signature +signature = #6.98(cose.COSE_Sign) ; COSE signature + +;# import rfc9052 as cose diff --git a/docs/src/architecture/08_concepts/catalyst_voting/cddl/gen_vote_tx_cose_payload.cddl b/docs/src/architecture/08_concepts/catalyst_voting/cddl/gen_vote_tx_cose_payload.cddl index dd7cac02d..f432c5740 100644 --- a/docs/src/architecture/08_concepts/catalyst_voting/cddl/gen_vote_tx_cose_payload.cddl +++ b/docs/src/architecture/08_concepts/catalyst_voting/cddl/gen_vote_tx_cose_payload.cddl @@ -1,2 +1,2 @@ cose-payload = blake2b-256 -blake2b-256 = #6.32782(bytes .size 32) ; Blake2b-256 hash bytes \ No newline at end of file +blake2b-256 = #6.32782(bytes .size 32) ; Blake2b-256 hash bytes diff --git a/docs/src/architecture/08_concepts/catalyst_voting/cddl/vote_tx_v2.cddl b/docs/src/architecture/08_concepts/catalyst_voting/cddl/vote_tx_v2.cddl deleted file mode 100644 index d1645e5d8..000000000 --- a/docs/src/architecture/08_concepts/catalyst_voting/cddl/vote_tx_v2.cddl +++ /dev/null @@ -1,29 +0,0 @@ -vote-tx-v2 = gen-vote-tx - -choice = #6.24(bstr(choice-data)) -proof = #6.24(bstr(proof-data)) -prop-id = #6.24(bstr(proposal)) - -choice-data = public-choice / private-choice - -public-choice = uint -private-choice = ciphertext - -ciphertext = [group-element, group-element] -group-element = bytes .size 32 - -proposal = UUID - -proof-data = zk-proof - -zk-proof = [[+ (announcement, ciphertext, r-response)], scalar] - -announcement = (group-element, group-element, group-element) -ciphertext = (group-element, group-element) -r-response = (scalar, scalar, scalar) - -scalar = bytes .size 32 -group-element = bytes .size 32 - -;# include gen_vote_tx - diff --git a/docs/src/architecture/08_concepts/catalyst_voting/cddl/vote_tx_v2_private.cddl b/docs/src/architecture/08_concepts/catalyst_voting/cddl/vote_tx_v2_private.cddl new file mode 100644 index 000000000..23c4d5ea9 --- /dev/null +++ b/docs/src/architecture/08_concepts/catalyst_voting/cddl/vote_tx_v2_private.cddl @@ -0,0 +1,19 @@ +vote-tx-v2 = gen-vote-tx + +choice-data = ciphertext +ciphertext = [group-element, group-element] + +proposal = UUID + +proof-data = zk-proof + +zk-proof = [[+ (announcement, ~ciphertext, r-response)], scalar] + +announcement = (group-element, group-element, group-element) +r-response = (scalar, scalar, scalar) + +scalar = bytes .size 32 +group-element = bytes .size 32 + +;# include gen_vote_tx + diff --git a/docs/src/architecture/08_concepts/catalyst_voting/cddl/vote_tx_v2_public.cddl b/docs/src/architecture/08_concepts/catalyst_voting/cddl/vote_tx_v2_public.cddl new file mode 100644 index 000000000..de273ef4f --- /dev/null +++ b/docs/src/architecture/08_concepts/catalyst_voting/cddl/vote_tx_v2_public.cddl @@ -0,0 +1,8 @@ +vote-tx-v2-public = gen-vote-tx + +choice-data = uint +proof-data = undefined +proposal = UUID + +;# include gen_vote_tx + diff --git a/docs/src/architecture/08_concepts/catalyst_voting/jorm.md b/docs/src/architecture/08_concepts/catalyst_voting/v1.md similarity index 98% rename from docs/src/architecture/08_concepts/catalyst_voting/jorm.md rename to docs/src/architecture/08_concepts/catalyst_voting/v1.md index 6dc3ba357..e5dad981d 100644 --- a/docs/src/architecture/08_concepts/catalyst_voting/jorm.md +++ b/docs/src/architecture/08_concepts/catalyst_voting/v1.md @@ -1,4 +1,4 @@ -# Jörmungandr +# V1 (Jörmungandr) --- @@ -16,6 +16,8 @@ Created: 2024-10-24 ## Abstract This document describes a definition of the original Jörmungandr `VoteCast` transaction. +It's not based on the ["General Voting Transaction"](./gen_vote_tx.md) specification +and just represents an original transaction structure from the Jörmungandr blockchain. ## Motivation @@ -130,5 +132,3 @@ Expected witness (includes signature) [BLAKE2b-256]: https://www.blake2.net/blake2.pdf [BLAKE2b-512]: https://www.blake2.net/blake2.pdf [ristretto255]: https://ristretto.group - - diff --git a/docs/src/architecture/08_concepts/catalyst_voting/v2.md b/docs/src/architecture/08_concepts/catalyst_voting/v2.md new file mode 100644 index 000000000..53a583d45 --- /dev/null +++ b/docs/src/architecture/08_concepts/catalyst_voting/v2.md @@ -0,0 +1,108 @@ +# V2 + +--- + +Title: Catalyst V2 Voting Transaction + +Status: Proposed + +Authors: + - Alex Pozhylenkov + +Created: 2024-10-24 + +--- + +## Abstract + +This document describes a Catalyst V2 vote transaction structure. + +## Motivation + +## Specification + +It is a Catalyst v2 voting transaction +defined on top the ["Generalized Vote Transaction"](./gen_vote_tx.md#specification) structure. + +Following that spec need to define a `choice`, `proof` and `prop-id`. + +Also needed to define an `event` field, +so for both public and private transaction it must be the following: + +```CDDL +event = { + "brand_id": UUID, + "campaign_id": UUID, + "election_id": UUID, + "category_id": UUID, +} +``` + +* `brand_id` - a unique identifier which represents a "brand" who is running the voting, + e.g. Catalyst, Midnight. +* `campaign_id` - a unique identifier which defines a "campaign" of voting, + e.g. "treasury campaign". +* `election_id` - a unique identifier which defines an election, + e.g. "Catalyst Fund 1", "Catalyst Fund 2". +* `category_id` - a unique identifier which defines a voting category as a collection of proposals, + e.g. "Development & Infrastructure", "Products & Integrations". + +### Public vote + + +??? note "Public vote transaction v2 definition: `vote_tx_v2_public.cddl`" + + ```CDDL + {{ include_file('src/architecture/08_concepts/catalyst_voting/cddl/vote_tx_v2_public.cddl', indent=4) }} + ``` + + +For the public vote `vote-type` value defined as follows: + +```CDDL +vote-type = #6.37(h'8DE5586CE9984B9587427BE3C8592803') ; 8de5586c-e998-4b95-8742-7be3c8592803 +``` + +### Private vote + + +??? note "Private vote transaction v2 definition: `vote_tx_v2_private.cddl`" + + ```CDDL + {{ include_file('src/architecture/08_concepts/catalyst_voting/cddl/vote_tx_v2_private.cddl', indent=4) }} + ``` + + +For the private vote `vote-type` value defined as follows: + +```CDDL +vote-type = #6.37(h'E78EE18DF38044C1A85280AA6ECB07FE') ; e78ee18d-f380-44c1-a852-80aa6ecb07fe +``` + +#### Vote and Proof generation + +To generate a cryptographically secured `choice-data` and `zk_proof` parts you can follow this [spec](./crypto.md#vote). +Important to note, +that as part of [*initial setup*](./crypto.md#initial-setup) of the voting procedure, +the following properties are used: + +1. Each proposal, defined by the `proposal` field, defines a number of possible options. +2. [ristretto255] as a backend cryptographic group. +3. A commitment key $ck$ defined as a [BLAKE2b-512] hash of the `proposal` bytes. + +## Rationale + +## Path to Active + +### Acceptance Criteria + + +### Implementation Plan + + + + +[BLAKE2b-512]: https://www.blake2.net/blake2.pdf +[ristretto255]: https://ristretto.group + + diff --git a/docs/src/architecture/08_concepts/immutable_ledger/cddl/Earthfile b/docs/src/architecture/08_concepts/immutable_ledger/cddl/Earthfile new file mode 100644 index 000000000..60e24f158 --- /dev/null +++ b/docs/src/architecture/08_concepts/immutable_ledger/cddl/Earthfile @@ -0,0 +1,14 @@ +VERSION 0.8 + +IMPORT github.com/input-output-hk/catalyst-ci/earthly/cddl:v3.2.23 AS cddl-ci + +check-cddl: + FROM cddl-ci+cddl-base + + WORKDIR /cddl + + COPY ./block.cddl ./genesis_to_prev_hash.cddl ./hash.cddl . + + RUN cddlc -2 hash.cddl + RUN cddlc -2 block.cddl + RUN cddlc -2 genesis_to_prev_hash.cddl diff --git a/docs/src/architecture/08_concepts/immutable_ledger/cddl/block.cddl b/docs/src/architecture/08_concepts/immutable_ledger/cddl/block.cddl index 5b9b832c8..d65f0fc78 100644 --- a/docs/src/architecture/08_concepts/immutable_ledger/cddl/block.cddl +++ b/docs/src/architecture/08_concepts/immutable_ledger/cddl/block.cddl @@ -1,31 +1,30 @@ block = [ - block_header, - block_data: ~encoded-cbor, ; deterministically encoded CBOR - validator_signature, + block-header, + block-data, + validator-signature, ] -block_header = [ - chain_id: ULID, +block-header = [ + chain-id: ULID, height: int, - timestamp: ~#6.1(uint .ge 1722470400), ; Epoch-based date/time - prev_block_id: hash_bytes, ; hash of the previous block - ?ledger_type: UUID, - ?purpose_id: ULID / UUID, + timestamp: #6.1(uint .ge 1722470400), ; Epoch-based date/time + prev-block-id: hash-bytes, ; hash of the previous block + ?ledger-type: UUID, + ?purpose-id: ULID / UUID, ?validator, ~metadata, ] +block-data = encoded-cbor + UUID = #6.37(bytes) ; UUID type ULID = #6.32780(bytes) ; ULID type -hash_bytes = ( - #6.32781(bytes) \ ; Blake3 hash - #6.32782(bytes) \ ; Blake2b hash - #6.32783(bytes) ; Blake2s hash -) -kid = hash_bytes ; hash of the x509/c509 certificate +kid = hash-bytes ; hash of the x509/c509 certificate validator = (kid / [2* kid]) metadata = [ *any ] -validator_signature = (bytes / [2* bytes]) +validator-signature = (bytes / [2* bytes]) + +;# include hash diff --git a/docs/src/architecture/08_concepts/immutable_ledger/cddl/blueprint.cue b/docs/src/architecture/08_concepts/immutable_ledger/cddl/blueprint.cue new file mode 100644 index 000000000..52eb1fb7b --- /dev/null +++ b/docs/src/architecture/08_concepts/immutable_ledger/cddl/blueprint.cue @@ -0,0 +1,2 @@ +version: "1.0.0" +project: name: "docs-immutable-ledger-cddl" diff --git a/docs/src/architecture/08_concepts/immutable_ledger/cddl/genesis_to_prev_hash.cddl b/docs/src/architecture/08_concepts/immutable_ledger/cddl/genesis_to_prev_hash.cddl index f6b22766e..c30ecbf99 100644 --- a/docs/src/architecture/08_concepts/immutable_ledger/cddl/genesis_to_prev_hash.cddl +++ b/docs/src/architecture/08_concepts/immutable_ledger/cddl/genesis_to_prev_hash.cddl @@ -1,8 +1,8 @@ -genesis_to_prev_hash = [ - chain_id: ULID, - timestamp: ~#6.1(uint .ge 1722470400), ; Epoch-based date/time - ledger_type: UUID, - purpose_id: ULID / UUID, +genesis-to-prev-hash = [ + chain-id: ULID, + timestamp: #6.1(uint .ge 1722470400), ; Epoch-based date/time + ledger-type: UUID, + purpose-id: ULID / UUID, validator, ] @@ -10,9 +10,6 @@ UUID = #6.37(bytes) ; UUID type ULID = #6.32780(bytes) ; ULID type validator = (kid / [2* kid]) -kid = hash_bytes ; hash of the x509/c509 certificate -hash_bytes = ( - #6.32781(bytes) \ ; Blake3 hash - #6.32782(bytes) \ ; Blake2b hash - #6.32783(bytes) ; Blake2s hash -) \ No newline at end of file +kid = hash-bytes ; hash of the x509/c509 certificate + +;# include hash diff --git a/docs/src/architecture/08_concepts/immutable_ledger/cddl/hash.cddl b/docs/src/architecture/08_concepts/immutable_ledger/cddl/hash.cddl new file mode 100644 index 000000000..32ca39ae7 --- /dev/null +++ b/docs/src/architecture/08_concepts/immutable_ledger/cddl/hash.cddl @@ -0,0 +1,5 @@ +hash-bytes = ( + #6.32781(bytes) / ; Blake3 hash + #6.32782(bytes) / ; Blake2b hash + #6.32783(bytes) ; Blake2s hash +) diff --git a/docs/src/architecture/08_concepts/immutable_ledger/ledger.md b/docs/src/architecture/08_concepts/immutable_ledger/ledger.md index b2a539667..af4cb2c95 100644 --- a/docs/src/architecture/08_concepts/immutable_ledger/ledger.md +++ b/docs/src/architecture/08_concepts/immutable_ledger/ledger.md @@ -82,17 +82,17 @@ Which is well suited where it comes to process some temporary event e.g. voting. Header: -* `chain_id` - unique identifier of the chain. +* `chain-id` - unique identifier of the chain. * `height` - block's height. Also is used to identify the block type: *genesis*, *regular*, *final* (in more details described in [validation section](#block-validation-rules)). * `timestamp` - block's timestamp. -* `prev_block_id` - previous block hash. -* `ledger_type` - unique identifier of the ledger type. - In general, this is the way to strictly bound and specify `block_data` of the ledger for the specific `ledger_type`. +* `prev-block-id` - previous block hash. +* `ledger-type` - unique identifier of the ledger type. + In general, this is the way to strictly bound and specify `block-data` of the ledger for the specific `ledger-type`. But such rules will be a part of the specific ledger type definition, and not specified by this document. -* `purpose_id` - unique identifier of the purpose. +* `purpose-id` - unique identifier of the purpose. As it was stated before, each Ledger instance will have a strict time boundaries, so each of them will run for different purposes. @@ -102,13 +102,13 @@ Header: Block: -* `block_header` - block header described above, -* `block_data` - an array of some CBOR encoded data -* `validator_signature` - a signature or signatures of the validator's. +* `block-header` - block header described above, +* `block-data` - an array of some CBOR encoded data +* `validator-signature` - a signature or signatures of the validator's. ### Block validation rules -* `chain_id` **MUST** be the same as for the previous block (except for genesis). +* `chain-id` **MUST** be the same as for the previous block (except for genesis). * `height` **MUST** be incremented by `1` from the previous block height value (except for genesis and final block). *Genesis* block **MUST** have `0` value. *Final* block **MUST** hash be incremented by `1` from the previous block height and changed the sign to negative. @@ -116,25 +116,25 @@ Block: * *Final* block is the last one for the specific chain and any other block could not be referenced to the *Final* one. * `timestamp` **MUST** be greater or equals than the `timestamp` of the previous block (except for genesis). -* `prev_block_id` **MUST** be a hash of the previous block bytes (except for genesis). +* `prev-block-id` **MUST** be a hash of the previous block bytes (except for genesis). -* `ledger_type` **MUST** be the same as for the previous block if present (except for genesis). +* `ledger-type` **MUST** be the same as for the previous block if present (except for genesis). **MANDATORY** field for *Genesis* and *Final* blocks. -* `purpose_id` **MUST** be the same as for the previous block if present (except for genesis). +* `purpose-id` **MUST** be the same as for the previous block if present (except for genesis). **MANDATORY** field for *Genesis* and *Final* blocks. * `validator` **MUST** be the same as for the previous block if present (except for genesis). **MANDATORY** field for *Genesis* and *Final* blocks. -* `prev_block_id`'s CBOR tag value and `bstr` size **MUST** be the same as for the previous block (except for genesis). +* `prev-block-id`'s CBOR tag value and `bstr` size **MUST** be the same as for the previous block (except for genesis). Means that the hash function type and hash size itself must be the same. -* `prev_block_id` and `validator_signature` **MUST** use the same hash function, defined with the - `hash_bytes`. +* `prev-block-id` and `validator-signature` **MUST** use the same hash function, defined with the + `hash-bytes`. -* `prev_block_id` for the *Genesis* block **MUST** be a hash of the `genesis_to_prev_hash` bytes. +* `prev-block-id` for the *Genesis* block **MUST** be a hash of the `genesis-to-prev-hash` bytes. -* `block_data` **MUST** be a [deterministically][CBOR-deterministically-encoded] encoded CBOR. +* `block-data` **MUST** be a [deterministically][CBOR-deterministically-encoded] encoded CBOR. -??? note "Genesis to previous block hash CDDL definition: `genesis_to_prev_hash.cddl`" +??? note "Genesis to previous block hash CDDL definition: `genesis-to-prev-hash.cddl`" ```CDDL {{ include_file('src/architecture/08_concepts/immutable_ledger/cddl/genesis_to_prev_hash.cddl',indent=4) }} @@ -143,16 +143,16 @@ Block: #### Signature rules -`validator_signature` -**MUST** be a signature of the hashed `block_header` bytes and the `block_data` bytes +`validator-signature` +**MUST** be a signature of the hashed `block-header` bytes and the `block-data` bytes (with the order the same as defined for `block`). Signed by the validator's keys defined in the corresponding certificates referenced by the `validator`. Signature algorithm is defined by the certificate. The format and size of this field **MUST** be totally the same as `validator` field: -* if `validator` is only one id => `validator_signature` contains only 1 signature; -* if `validator` is array => `validator_signature` contains an array with the same length; -* order of signatures from the `validator_signature`'s array corresponds to the validators order of `validator`'s array. +* if `validator` is only one id => `validator-signature` contains only 1 signature; +* if `validator` is array => `validator-signature` contains an array with the same length; +* order of signatures from the `validator-signature`'s array corresponds to the validators order of `validator`'s array. ## Rationale diff --git a/rust/Earthfile b/rust/Earthfile index b632440d0..218bb1a83 100644 --- a/rust/Earthfile +++ b/rust/Earthfile @@ -1,6 +1,6 @@ VERSION 0.8 -IMPORT github.com/input-output-hk/catalyst-ci/earthly/rust:v3.2.19 AS rust-ci +IMPORT github.com/input-output-hk/catalyst-ci/earthly/rust:v3.2.23 AS rust-ci COPY_SRC: FUNCTION diff --git a/rust/c509-certificate/Earthfile b/rust/c509-certificate/Earthfile index 4ae68ab57..a2235832e 100644 --- a/rust/c509-certificate/Earthfile +++ b/rust/c509-certificate/Earthfile @@ -1,6 +1,7 @@ VERSION 0.8 -IMPORT github.com/input-output-hk/catalyst-ci/earthly/rust:feat/deny.toml AS rust-ci +IMPORT github.com/input-output-hk/catalyst-ci/earthly/rust::v3.2.23 AS rust-ci + IMPORT .. AS rust-local IMPORT ../.. AS repo diff --git a/rust/cbork/Earthfile b/rust/cbork/Earthfile index 37461b956..e32f5fbb1 100644 --- a/rust/cbork/Earthfile +++ b/rust/cbork/Earthfile @@ -1,6 +1,7 @@ VERSION 0.8 -IMPORT github.com/input-output-hk/catalyst-ci/earthly/rust:feat/deny.toml AS rust-ci +IMPORT github.com/input-output-hk/catalyst-ci/earthly/rust::v3.2.23 AS rust-ci + IMPORT .. AS rust-local diff --git a/rust/deny.toml b/rust/deny.toml index 0e59c5bac..cb0005992 100644 --- a/rust/deny.toml +++ b/rust/deny.toml @@ -57,7 +57,6 @@ allow-git = [ "https://github.com/txpipe/vrf", "https://github.com/txpipe/kes", "https://github.com/txpipe/curve25519-dalek", - "https://github.com/anweiss/cddl", ] [licenses]