Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CIP-0129? | Governance Identifiers #857

Merged
merged 21 commits into from
Nov 15, 2024
Merged
Show file tree
Hide file tree
Changes from 18 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
64 changes: 41 additions & 23 deletions CIP-0005/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -92,36 +92,53 @@ We define the following set of common prefixes with their corresponding semantic

### Hashes

| Prefix | Meaning | Contents |
| --- | --- | --- |
| `asset` | Fingerprint of a native asset for human comparison | See [CIP-0014] |
| `pool` | Pool operator verification key hash (pool ID) | blake2b\_224 digest of an operator verification key |
| `script` | Script hash | blake2b\_224 digest of a serialized transaction script |
| `addr_vkh` | Address verification key hash | blake2b\_224 digest of a payment verification key |
| `addr_shared_vkh` | Shared address verification key hash | blake2b\_224 digest of a payment verification key |
| `policy_vkh` | Policy verification key hash | blake2b\_224 digest of a policy verification key |
| `stake_vkh` | Stake address verification key hash | blake2b\_224 digest of a delegation verification key |
| `stake_shared_vkh` | Shared stake address verification key hash | blake2b\_224 digest of a delegation verification key |
| `req_signer_vkh` | Required signer verification key hash | blake2b\_224 digest of a required signer verification key |
| `vrf_vkh` | VRF verification key hash | blake2b\_256 digest of a VRF verification key |
| `datum` | Output datum hash | blake2b\_256 digest of output datum |
| `script_data` | Script data hash | blake2b\_256 digest of script data |
| Prefix | Meaning | Contents |
| --- | --- | --- |
| `asset` | Fingerprint of a native asset for human comparison | See [CIP-0014] |
| `pool` | Pool operator verification key hash (pool ID) | blake2b\_224 digest of an operator verification key |
| `script` | Script hash | blake2b\_224 digest of a serialized transaction script |
| `addr_vkh` | Address verification key hash | blake2b\_224 digest of a payment verification key |
| `addr_shared_vkh` | Shared address verification key hash | blake2b\_224 digest of a payment verification key |
| `policy_vkh` | Policy verification key hash | blake2b\_224 digest of a policy verification key |
| `stake_vkh` | Stake address verification key hash | blake2b\_224 digest of a delegation verification key |
| `stake_shared_vkh` | Shared stake address verification key hash | blake2b\_224 digest of a delegation verification key |
| `req_signer_vkh` | Required signer verification key hash | blake2b\_224 digest of a required signer verification key |
| `vrf_vkh` | VRF verification key hash | blake2b\_256 digest of a VRF verification key |
| `datum` | Output datum hash | blake2b\_256 digest of output datum |
| `script_data` | Script data hash | blake2b\_256 digest of script data |
| `drep_vkh` | Delegate representative verification key hash | blake2b\_224 digest of a delegate representative verification key |
| `drep_script` | Delegate representative script hash | blake2b\_224 digest of a serialized delegate representative script |
| `cc_cold_vkh` | Constitutional committee cold verification key hash | blake2b\_224 digest of a consitutional committee cold verification key |
| `cc_cold_script` | Constitutional committee cold script hash | blake2b\_224 digest of a serialized constitutional committee cold script |
| `cc_hot_vkh` | Constitutional committee hot verification key hash | blake2b\_224 digest of a consitutional committee hot verification key |
| `cc_hot_script` | Constitutional committee hot script hash | blake2b\_224 digest of a serialized constitutional committee hot script |

### Miscellaneous
ashisherc marked this conversation as resolved.
Show resolved Hide resolved

| Prefix | Meaning | Contents |
| --- | --- | --- |
| `addr` | Mainnet address | Network tag, payment credential and optional stake credential |
| `addr_test` | Testnet address | Network tag, payment credential and optional stake credential |
| `stake` | Mainnet stake address | Network tag and stake credential |
| `stake_test` | Testnet stake address | Network tag and stake credential |
| `drep` | drep identifier | drep credential, see [CIP-0129] |
| `cc_cold` | cc cold identifier | cc cold credential, see [CIP-0129] |
| `cc_hot` | cc hot identifier | cc hot credential, see [CIP-0129] |
| `gov_action` | gov action identifier | gov action ID, see [CIP-0129], |


### Deprecated Governance Prefixes
The prefixes above are the version defined by [CIP-0129] and should be used at this time. The prefixes below were previously defined by CIP-0105, and are deprecated. Please see CIP-0105 for the detailed deprecation information, and details to upgrade to [CIP-0129].

For detailed information on the new specification and the rationale behind the upgrade, please refer to [CIP-0129].

| `drep` | Delegate representative verification key hash (DRep ID) | blake2b\_224 digest of a delegate representative verification key |
| `drep_script` | Delegate representative script hash (DRep ID) | blake2b\_224 digest of a serialized delegate representative script |
| `cc_cold` | Constitutional committee cold verification key hash (cold credential) | blake2b\_224 digest of a consitutional committee cold verification key |
| `cc_cold_script` | Constitutional committee cold script hash (cold credential) | blake2b\_224 digest of a serialized constitutional committee cold script |
| `cc_hot` | Constitutional committee hot verification key hash (hot credential) | blake2b\_224 digest of a consitutional committee hot verification key |
| `cc_hot_script` | Constitutional committee hot script hash (hot credential) | blake2b\_224 digest of a serialized constitutional committee hot script |

### Miscellaneous

| Prefix | Meaning | Contents |
| --- | --- | --- |
| `addr` | Mainnet address | Network tag, payment credential and optional stake credential |
| `addr_test` | Testnet address | Network tag, payment credential and optional stake credential |
| `stake` | Mainnet stake address | Network tag and stake credential |
| `stake_test` | Testnet stake address | Network tag and stake credential |

## Rationale: how does this CIP achieve its goals?

### About the `_test` suffix
Expand Down Expand Up @@ -184,3 +201,4 @@ The only prior work done towards that direction has been [jcli](https://input-ou
This CIP is licensed under [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0).

[CIP-0014]: https://github.com/cardano-foundation/CIPs/blob/645243e30b5aae109a70ec2b47af70dcc808bc56/CIP-0014
[CIP-0129]: (https://github.com/cardano-foundation/CIPs/blob/master/CIP-0129/README.md)
33 changes: 27 additions & 6 deletions CIP-0105/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ We strongly recommend that a maximum of one set of DRep keys should be associate
#### DRep ID

Tools and wallets can generate a DRep ID (`drep_credential`) from the Ed25519 public DRep key (without chaincode) by creating a blake2b-224 hash digest of the key.
As this is key-based credential it should be marked as entry `0` in a credential array.
As this is key-based credential it should be marked as entry `0` in a credential array. DRep Identifier is further specified in [CIP-0129](https://github.com/cardano-foundation/CIPs/blob/master/CIP-0129/README.md).

#### Constitutional Committee Cold Keys

Expand Down Expand Up @@ -111,8 +111,8 @@ DRep keys and DRep IDs should be encoded in Bech32 with the following prefixes:
| `drep_vk` | CIP-1852’s DRep verification key | Ed25519 public key |
| `drep_xsk` | CIP-1852’s DRep extended signing key | Ed25519-bip32 extended private key |
| `drep_xvk` | CIP-1852’s DRep extended verification key | Ed25519 public key with chain code |
| `drep` | Delegate representative verification key hash (DRep ID) | blake2b\_224 digest of a delegate representative verification key |
| `drep_script` | Delegate representative script hash (DRep ID) | blake2b\_224 digest of a serialized delegate representative script |
| `drep_vkh` | Delegate representative verification key hash | blake2b\_224 digest of a delegate representative verification key |
| `drep_script` | Delegate representative script hash | blake2b\_224 digest of a serialized delegate representative script |
Ryun1 marked this conversation as resolved.
Show resolved Hide resolved
ashisherc marked this conversation as resolved.
Show resolved Hide resolved

#### Constitutional Committee Cold Keys

Expand All @@ -124,7 +124,7 @@ Constitutional cold keys and credential should be encoded in Bech32 with the fol
| `cc_cold_vk` | CIP-1852’s constitutional committee verification signing key | Ed25519 private key |
| `cc_cold_xsk` | CIP-1852’s constitutional committee cold extended signing key | Ed25519-bip32 extended private key |
| `cc_cold_xvk` | CIP-1852’s constitutional committee extended verification signing key | Ed25519 public key with chain code |
| `cc_cold` | Constitutional committee cold verification key hash (cold credential) | blake2b\_224 digest of a consitutional committee cold verification key |
| `cc_cold_vkh` | Constitutional committee cold verification key hash (cold credential) | blake2b\_224 digest of a consitutional committee cold verification key |
ashisherc marked this conversation as resolved.
Show resolved Hide resolved
| `cc_cold_script` | Constitutional committee cold script hash (cold credential) | blake2b\_224 digest of a serialized constitutional committee cold script |

#### Constitutional Committee Hot Keys
Expand All @@ -137,12 +137,12 @@ Constitutional hot keys and credential should be encoded in Bech32 with the foll
| `cc_hot_vk` | CIP-1852’s constitutional committee verification signing key | Ed25519 private key |
| `cc_hot_xsk` | CIP-1852’s constitutional committee hot extended signing key | Ed25519-bip32 extended private key |
| `cc_hot_xvk` | CIP-1852’s constitutional committee extended verification signing key | Ed25519 public key with chain code |
| `cc_hot` | Constitutional committee hot verification key hash (hot credential) | blake2b\_224 digest of a consitutional committee hot verification key |
| `cc_hot_vkh` | Constitutional committee hot verification key hash (hot credential) | blake2b\_224 digest of a consitutional committee hot verification key |
ashisherc marked this conversation as resolved.
Show resolved Hide resolved
| `cc_hot_script` | Constitutional committee hot script hash (hot credential) | blake2b\_224 digest of a serialized constitutional committee hot script |

### Tooling Definitions

### DRep Keys
#### DRep Keys

Supporting tooling should clearly label these key pairs as "DRep Keys".

Expand Down Expand Up @@ -200,6 +200,26 @@ For hardware implementations:
| `ConstitutionalCommitteeHotHWSigningFile_ed25519` | Hardware Constitutional Committee Hot Signing File |
| `ConstitutionalCommitteeHotVerificationKey_ed25519` | Hardware Constitutional Committee Hot Verification Key |

### Deprecated Governance ID Definition
The previous governance key IDs defined by this have been upgraded as per the new specification introduced in [CIP-0129]. Tools implementing the following specification should gradually adopt the updated ID format outlined in [CIP-0129]. Tools that already support [CIP-0129] maintain backward compatibility with the legacy formats specified below but should consider fully transitioning to [CIP-0129] to standardize key formats across the ecosystem. This will help avoid multiple formats and ensure consistency.
ashisherc marked this conversation as resolved.
Show resolved Hide resolved

This CIP previously also lacked `_vkh` key definitions, which are now added above possible due to the upgrades defined in [CIP-0129]. For detailed information on the new specification and the rationale behind the upgrade, please refer to [CIP-0129].

#### DRep Keys

| `drep` | Delegate representative verification key hash (DRep ID) | blake2b\_224 digest of a delegate representative verification key |
| `drep_script` | Delegate representative script hash (DRep ID) | blake2b\_224 digest of a serialized delegate representative script |

#### Constitutional Committee Cold Keys

| `cc_cold` | Constitutional committee cold verification key hash (cold credential) | blake2b\_224 digest of a consitutional committee cold verification key |
| `cc_cold_script` | Constitutional committee cold script hash (cold credential) | blake2b\_224 digest of a serialized constitutional committee cold script |

#### Constitutional Committee Hot Keys

| `cc_hot` | Constitutional committee hot verification key hash (hot credential) | blake2b\_224 digest of a consitutional committee hot verification key |
| `cc_hot_script` | Constitutional committee hot script hash (hot credential) | blake2b\_224 digest of a serialized constitutional committee hot script |

### Versioning

This CIP is not to be versioned using a traditional scheme, rather if any large technical changes are required then a new proposal must replace this one.
Expand Down Expand Up @@ -250,6 +270,7 @@ See [Test Vectors File](./test-vectors.md).
- [Lace](https://chromewebstore.google.com/detail/lace-sanchonet/djcdfchkaijggdjokfomholkalbffgil?hl=en)
- [Yoroi](https://chrome.google.com/webstore/detail/yoroi-nightly/poonlenmfdfbjfeeballhiibknlknepo/related)
- [demos wallet](https://github.com/Ryun1/cip95-demos-wallet)
- [CIP-0129]: (https://github.com/cardano-foundation/CIPs/blob/master/CIP-0129/README.md)
- [ ] The consitutional committee derivation paths are used by two implementations.

### Implementation Plan
Expand Down
8 changes: 4 additions & 4 deletions CIP-0105/test-vectors/test-vector-1.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,19 +42,19 @@ Hex: `f74d7ac30513ac1825715fd0196769761fca6e7f69de33d04ef09a0c417a752b1d84110299

Bech32: `drep_xvk17axh4sc9zwkpsft3tlgpjemfwc0u5mnld80r85zw7zdqcst6w543mpq3q2vkjy3nw8x7n8asw4es78dyl4q7u7kwlwn7yy0sugxfrjs6z25qe`

#### Verification key hash (DRep ID)
#### Verification key hash (DRep VKH)
ashisherc marked this conversation as resolved.
Show resolved Hide resolved

Hex: `a5b45515a3ff8cb7c02ce351834da324eb6dfc41b5779cb5e6b832aa`

Bech32: `drep15k6929drl7xt0spvudgcxndryn4kmlzpk4meed0xhqe25nle07s`
Bech32: `drep_vkh15k6929drl7xt0spvudgcxndryn4kmlzpk4meed0xhqe254czjh2`

#### Script 1 hash (DRep ID)
#### Script 1 hash (DRep Script Hash)

Hex: `d0657126dbf0c135a7224d91ca068f5bf769af6d1f1df0bce5170ec5`

Bech32: `drep_script16pjhzfkm7rqntfezfkgu5p50t0mkntmdruwlp089zu8v29l95rg`

#### Script 2 hash (DRep ID)
#### Script 2 hash (DRep Script Hash)

Hex: `ae5acf0511255d647c84b3184a2d522bf5f6c5b76b989f49bd383bdd`

Expand Down
8 changes: 4 additions & 4 deletions CIP-0105/test-vectors/test-vector-2.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,19 +43,19 @@ Hex: `70344fe0329bbacbb33921e945daed181bd66889333eb73f3bb10ad8e4669976a523761cec

Bech32: `drep_xvk1wq6ylcpjnwavhveey855tkhdrqdav6yfxvltw0emky9d3erxn9m22gmkrnkyrqn8922eycuwwqt64q4wds2ssdmlgp5dqq9gem6k5vq23ph3c`

#### Verification key hash (DRep ID)
#### Verification key hash (DRep VKH)

Hex: `1ed314af7d3ff8fcd320c73eb58524d774ca38733ee00ebca81bd63a`

Bech32: `drep1rmf3ftma8lu0e5eqculttpfy6a6v5wrn8msqa09gr0tr5rgcuy9`
Bech32: `drep_vkh1rmf3ftma8lu0e5eqculttpfy6a6v5wrn8msqa09gr0tr590rpdl`

#### Script 1 hash (DRep ID)
#### Script 1 hash (DRep Script Hash)

Hex: `3e11f3d9b39639fbb9d59c6efec7b7c1e9dbcb104523c7a4b194c45c`

Bech32: `drep_script18cgl8kdnjculhww4n3h0a3ahc85ahjcsg53u0f93jnz9c0339av`

#### Script 2 hash (DRep ID)
#### Script 2 hash (DRep Script Hash)

Hex: `bba45271823634a8ba9fdb981ad76df02cd2384a4e1b43c41b2734a9`

Expand Down
8 changes: 4 additions & 4 deletions CIP-0105/test-vectors/test-vector-3.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,19 +40,19 @@ Hex: `a4a2f459fcc98e7fe0acbea096f4b1fb342cb73aa6c41f62d4d6ca1464179dd65fd61ed957

Bech32: `drep_xvk15j30gk0uex88lc9vh6sfda93lv6zede65mzp7ck56m9pgeqhnht9l4s7m9tad59jmltv3c38nclt942n3feen6ggmhcj6xmmlj6td2qu4ce82`

#### Verification key hash (DRep ID)
#### Verification key hash (DRep VKH)

Hex: `33e587eb1f44e51f4307eeed7ede619008bc4d1c32c18099d6367329`

Bech32: `drep1x0jc06clgnj37sc8amkhahnpjqytcnguxtqcpxwkxeejj4y6sqm`
Bech32: `drep_vkh1x0jc06clgnj37sc8amkhahnpjqytcnguxtqcpxwkxeejjnrpdfp`

#### Script 1 hash (DRep ID)
#### Script 1 hash (DRep Script Hash)

Hex: `f241fd096625b515f464b2b35ddebe93a2e6e2ec2e7dcac8c8ae5a33`

Bech32: `drep_script17fql6ztxyk63taryk2e4mh47jw3wdchv9e7u4jxg4edrx89ym9g`

#### Script 2 hash (DRep ID)
#### Script 2 hash (DRep Script Hash)

Hex: `7802a8b9e80878cc7b17c451e8778dfeef22cb7b2c2031885b881d68`

Expand Down
Loading