From 70f715055b6c3d3c79eab1e925153035126a4f79 Mon Sep 17 00:00:00 2001 From: Luke Nadur <19835357+intricate@users.noreply.github.com> Date: Fri, 16 Oct 2020 01:45:03 -0400 Subject: [PATCH 1/2] Introduce verification key hashes to the CIP5 specification --- CIP5/README.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/CIP5/README.md b/CIP5/README.md index e80cb3444..0ebbdee26 100644 --- a/CIP5/README.md +++ b/CIP5/README.md @@ -26,12 +26,14 @@ We define the following set of common prefixes with their corresponding semantic | Prefix | Semantic | | --- | --- | | `addr_vk` | Address verification key | +| `addr_vkh` | Address verification key hash | | `addr_sk` | Address signing key | | `addr_xvk` | Address extended verification key | | `addr_xsk` | Address extended signing key | | `addr` | Mainnet address | | `addr_test` | Testnet address | | `stake_vk` | Stake address verification key | +| `stake_vkh` | Stake address verification key hash | | `stake_sk` | Stake address signing key | | `stake_xvk` | Stake address extended verification key | | `stake_xsk` | Stake address extended signing key | @@ -41,8 +43,10 @@ We define the following set of common prefixes with their corresponding semantic | `pool_vk` | Pool operator verification key | | `pool_sk` | Pool operator signing key | | `kes_vk` | KES verification key | +| `kes_vkh` | KES verification key hash | | `kes_sk` | KES signing key | | `vrf_vk` | VRF verification key | +| `vrf_vkh` | VRF verification key hash | | `vrf_sk` | VRF signing key | ## Rationale @@ -71,6 +75,17 @@ Both are rather transparent abbreviations for **s**igning **k**ey and **v**erifi The prefix `x` is typically used in cryptography to refer to e**x**tended keys (e.g. `xpub`, `xprv` ...). Following this convention, we prefix `sk` and `vk` as such when they refer to extended keys. +#### About `vkh` + +An abbreviation for **v**erification **k**ey **h**ash. + +Verification key hashes are commonly utilized throughout the Cardano +eco-system. For example, they're used in stake pool registration and +retirement certificates, stake key registration, delegation, and +deregistration certificates, etc. As a result, it seems useful to have a +human-readable prefix by which one can discern the different kinds of +verification key hashes. + ## Backwards compatibility The only prior work done towards that direction has been [jcli](https://input-output-hk.github.io/jormungandr/jcli/introduction.html). Historically, prefixes evolved very organically and without any agreed-upon standard. jcli is however only compatible with Jörmungandr and is not intended to be compatible with the cardano-node. Therefore, there's little concern regarding compatibility here. From 80ad3199ea332881ebdb3711f7a07462b8f31114 Mon Sep 17 00:00:00 2001 From: Luke Nadur <19835357+intricate@users.noreply.github.com> Date: Fri, 16 Oct 2020 01:46:15 -0400 Subject: [PATCH 2/2] Amend pool ID specification in CIP5 --- CIP5/README.md | 50 +++++++++++++++++++++++++------------------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/CIP5/README.md b/CIP5/README.md index 0ebbdee26..25f51d892 100644 --- a/CIP5/README.md +++ b/CIP5/README.md @@ -23,31 +23,31 @@ Therefore, we can leverage bech32 for binary data encoding, with a set of common We define the following set of common prefixes with their corresponding semantic. Any software willing to represent binary data in a human-friendly way should abide by these guidelines. Should a data-type be missing, we encourage developers to update this CIP and register a new prefix. -| Prefix | Semantic | -| --- | --- | -| `addr_vk` | Address verification key | -| `addr_vkh` | Address verification key hash | -| `addr_sk` | Address signing key | -| `addr_xvk` | Address extended verification key | -| `addr_xsk` | Address extended signing key | -| `addr` | Mainnet address | -| `addr_test` | Testnet address | -| `stake_vk` | Stake address verification key | -| `stake_vkh` | Stake address verification key hash | -| `stake_sk` | Stake address signing key | -| `stake_xvk` | Stake address extended verification key | -| `stake_xsk` | Stake address extended signing key | -| `stake` | Mainnet stake address | -| `stake_test` | Testnet stake address | -| `pool` | Pool Id | -| `pool_vk` | Pool operator verification key | -| `pool_sk` | Pool operator signing key | -| `kes_vk` | KES verification key | -| `kes_vkh` | KES verification key hash | -| `kes_sk` | KES signing key | -| `vrf_vk` | VRF verification key | -| `vrf_vkh` | VRF verification key hash | -| `vrf_sk` | VRF signing key | +| Prefix | Semantic | +| --- | --- | +| `addr_vk` | Address verification key | +| `addr_vkh` | Address verification key hash | +| `addr_sk` | Address signing key | +| `addr_xvk` | Address extended verification key | +| `addr_xsk` | Address extended signing key | +| `addr` | Mainnet address | +| `addr_test` | Testnet address | +| `stake_vk` | Stake address verification key | +| `stake_vkh` | Stake address verification key hash | +| `stake_sk` | Stake address signing key | +| `stake_xvk` | Stake address extended verification key | +| `stake_xsk` | Stake address extended signing key | +| `stake` | Mainnet stake address | +| `stake_test` | Testnet stake address | +| `pool` | Pool operator verification key hash (pool ID) | +| `pool_vk` | Pool operator verification key | +| `pool_sk` | Pool operator signing key | +| `kes_vk` | KES verification key | +| `kes_vkh` | KES verification key hash | +| `kes_sk` | KES signing key | +| `vrf_vk` | VRF verification key | +| `vrf_vkh` | VRF verification key hash | +| `vrf_sk` | VRF signing key | ## Rationale