# Let's talk about keys

**URL:** <https://forum.cardano.org/t/lets-talk-about-keys/33379>\
**Category:** Operate a Stake Pool\
**Tags:** haskell, cardano-node\
**Created:** [25 May 2020 04:21 UTC](https://forum.cardano.org/t/lets-talk-about-keys/33379 "2020-05-25T04:21:31Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![Chris-Graffagnino](https://sea1.discourse-cdn.com/flex023/user_avatar/forum.cardano.org/chris-graffagnino/32/16278_2.png) [@Chris-Graffagnino](https://forum.cardano.org/u/Chris-Graffagnino)\
**Post date:** [25 May 2020 04:21 UTC](https://forum.cardano.org/t/lets-talk-about-keys/33379/1 "2020-05-25T04:21:31Z")

</div>

Pioneers, let’s make a “Keys 101” thread for the next group of pioneers. Here’s what I have:

# Payment keys

– Name-prefix: (arbitrary) e.g. “addr” or “payment”  
– Type: PaymentSigningKeyShelley (.skey)  
– Type: PaymentVerificationKeyShelley (.vkey)  
– How used: create payment (utxo) addresses; send/receive funds

# KES (“hot”) keys

– Name-prefix: “kes”  
– Type: TPraosStandardCrypto  
– How used: Create node operational certificate, e.g. “opcert”  
– How used: Sign blocks (pass kes.skey as argument when starting node as a stake-pool)

# Node operator (“cold”) keys

– Name-prefix: “cold”  
– Type: Node operator signing key (.skey)  
– Type: Node operator verification key (.vkey)  
– How used: Create delegation certificate (pass cold.vkey as argument)

# VRF keys

– Name-prefix: “vrf”  
– Type: SignKeyVRF SimpleVRF (.skey)  
– Type: VerKeyVRF SimpleVRF (.vkey)  
– How used: Sign blocks (pass vrf.skey as argument when starting node as a stake-pool)

---

<div class="post-metadata">

**Author:** ![werkof](https://sea1.discourse-cdn.com/flex023/user_avatar/forum.cardano.org/werkof/32/1337_2.png) [@werkof](https://forum.cardano.org/u/werkof)\
**Post date:** [27 May 2020 09:19 UTC](https://forum.cardano.org/t/lets-talk-about-keys/33379/2 "2020-05-27T09:19:59Z")

</div>

a good initiative, and something I effectively wanted to understand better, because the given exercises and doco’s miss a bit the what & why

Fortunately @_ilap put suite some efforts into this overview, explaining keys and certificates  
[https://cardano-community.github.io/guild-operators/Staking/Main.html](https://cardano-community.github.io/guild-operators/Staking/Main.html)

---

<div class="post-metadata">

**Author:** ![\_ilap](https://sea1.discourse-cdn.com/flex023/user_avatar/forum.cardano.org/_ilap/32/80886_2.png) [@\_ilap](https://forum.cardano.org/u/_ilap)\
**Post date:** [27 May 2020 10:35 UTC](https://forum.cardano.org/t/lets-talk-about-keys/33379/3 "2020-05-27T10:35:03Z")

</div>

Yeh, but it contains errors, what I will clean up soon. I mean I have already started it but needs more time to clean it properly after I can submit a PR .

---

<div class="post-metadata">

**Author:** ![ATADA](https://sea1.discourse-cdn.com/flex023/user_avatar/forum.cardano.org/atada/32/16409_2.png) [@ATADA](https://forum.cardano.org/u/ATADA)\
**Post date:** [27 May 2020 22:43 UTC](https://forum.cardano.org/t/lets-talk-about-keys/33379/4 "2020-05-27T22:43:56Z")

</div>

my naming scheme is currently:

```auto
Simple "enterprise" address to receive/send funds:
name.addr, name.vkey, name.skey

Payment(Base)/Staking address combo:
name.payment.addr, name.payment.skey/vkey, name.deleg.cert
name.staking.addr, name.staking.skey/vkey, name.staking.cert

Node/Pool files:
poolname.node.skey/vkey, poolname.node.counter, poolname.pool.cert, poolname.pool.dereg-cert, poolname.pool.json
poolname.vrf.skey/vkey
poolname.kes-xxx.skey/vkey, poolname.node-xxx.opcert (xxx increments with each KES generation = poolname.kes.counter)
poolname.kes.counter, poolname.kes-expire.json

```

That way it is easy to sort what keys and addresses are for what “name”. And scripts can be called with just the name.

if you wanna list all keys and addresses for a name just do a “ls name\*” same if you wanna delete all files related to a name “rm name\*”. or list all addresses “ls \*.addr”

---

<div class="post-metadata">

**Author:** ![wunderbaer](https://avatars.discourse-cdn.com/v4/letter/w/7ba0ec/32.png) [@wunderbaer](https://forum.cardano.org/u/wunderbaer)\
**Post date:** [28 May 2020 11:19 UTC](https://forum.cardano.org/t/lets-talk-about-keys/33379/5 "2020-05-28T11:19:11Z")

</div>

I followed this structure when setting up my node for exactly the easier listing reasons. however the downside is you can’t follow the exercises 1:1, which on the other hand is a good exercise itself 😉

---

<div class="post-metadata">

**Author:** ![Umed\_SKY](https://sea1.discourse-cdn.com/flex023/user_avatar/forum.cardano.org/umed_sky/32/18670_2.png) [@Umed\_SKY](https://forum.cardano.org/u/Umed_SKY)\
**Post date:** [3 June 2020 17:45 UTC](https://forum.cardano.org/t/lets-talk-about-keys/33379/6 "2020-06-03T17:45:14Z")

</div>

really like this scheme…

---

<div class="post-metadata">

**Author:** ![Eystein\_Hansen](https://sea1.discourse-cdn.com/flex023/user_avatar/forum.cardano.org/eystein_hansen/32/8806_2.png) [@Eystein\_Hansen](https://forum.cardano.org/u/Eystein_Hansen)\
**Post date:** [3 June 2020 19:03 UTC](https://forum.cardano.org/t/lets-talk-about-keys/33379/7 "2020-06-03T19:03:24Z")

</div>

Here is my current understandin of keys/addresses (based on ILAPS great guide and just added comments to it)

 ![model keys](https://us1.discourse-cdn.com/flex023/uploads/cardano/original/3X/e/b/eb5342e02ebd91638491e06b6f67b2cd72bd761b.png)
