Skip to content

Commit

Permalink
CIP-0129? | Governance Identifiers (#857)
Browse files Browse the repository at this point in the history
* update drep and cc member prefix

* add CIP for gov identifiers

* implementation plan and chore

* update 105 spec, update tests

* updates

* update CIP number

* update impl plan

* update acceptance criteria

* update impl plan

* add cip129 ref to 005

* update tools ready status

* update tools readiness

* update tools readiness

* update tools readiness

* update tooling readiness

* add deprecation information

* update abstract, motivation, add more deprecation details.

* fix table headers
  • Loading branch information
ashisherc authored Nov 15, 2024
1 parent d53dd33 commit 438d64d
Show file tree
Hide file tree
Showing 7 changed files with 301 additions and 47 deletions.
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

| 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)
56 changes: 44 additions & 12 deletions CIP-0105/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,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 @@ -114,14 +114,15 @@ These are also described in [CIP-0005 | Common Bech32 Prefixes](https://github.c

DRep keys and DRep IDs should be encoded in Bech32 with the following prefixes:

| Prefix | Meaning | Contents |
| ------------- | --------------------------------------------------------| ----------------------------------------------------------------- |
| `drep_sk` | CIP-1852’s DRep signing key | Ed25519 private key |
| `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 |
| Prefix | Meaning | Contents |
| ------------- | --------------------------------------------------------| ------------------------------------------------------------------ |
| `drep_sk` | CIP-1852’s DRep signing key | Ed25519 private key |
| `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` | [DEPRECATED] DRep verification key hash (DRep ID) | blake2b\_224 digest of a delegate representative verification key |
| `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 |

#### Constitutional Committee Cold Keys

Expand All @@ -133,7 +134,8 @@ 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` | [DEPRECATED] 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 |
| `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 @@ -146,12 +148,13 @@ 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` | [DEPRECATED] 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 |
| `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 @@ -209,6 +212,32 @@ 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 standard have been superseded by the definitions provided in [CIP-0129]. Tools implementing this standard are encouraged to consider adopting [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.

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

| Prefix | Meaning | Contents |
| --------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- |
| `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

| Prefix | Meaning | Contents |
| --------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- |
| `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

| Prefix | Meaning | Contents |
| --------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- |
| `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 @@ -271,3 +300,6 @@ See [Test Vectors File](./test-vectors.md).
## Copyright

This CIP is licensed under [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode).

[CIP-0129]: (https://github.com/cardano-foundation/CIPs/blob/master/CIP-0129/README.md)
[DEPRECATED]: #deprecated-governance-id-definition
Loading

0 comments on commit 438d64d

Please sign in to comment.