IntersectMBO / cardano-node

The core component that is used to participate in a Cardano decentralised blockchain.
https://cardano.org
Apache License 2.0
3.05k stars 721 forks source link

CLI tooling: Byron, Shelley and onward #30

Closed deepfire closed 4 years ago

deepfire commented 5 years ago

Context

We need means to manipulate secrets/certificates/genesis files (henceforth referred to as key material).

General scope

  1. Generation/derivation of all sorts of necessary key material.
  2. Support for all necessary iterations of the system -- Byron and Shelley for now, the former in both the Legacy and PBFT variants.
  3. Support for migration of key material between iterations of the system.
  4. Transaction manipulation and submission.
  5. Update system support.
  6. Support for delegation & staking.

Terminology: Legacy vs. PBFT

Future work

  1. More transaction-related things: creation, pretty-printing.
  2. Update system:
    • stimuli (proposals and votes): creation, pretty-printing, submission.
    • querying the node for the update system state.
  3. Staking (https://github.com/input-output-hk/cardano-node/issues/139):
    • stake pool lifecycle
    • lightweight delegation

History of implementation

https://github.com/input-output-hk/cardano-node/pull/28

  1. Generation of key material (genesis, keys) for new Byron Legacy clusters.
  2. Generation of key material (genesis, keys) for new Byron PBFT clusters.
  3. Migration of Byron Legacy key material (genesis, keys) to the Byron PBFT iteration. So far this appears to consist of:
    • Deserialisation of the delegate keys in the old format, as defined by the Bi instance for the legacy UserSecret data type
    • Reserialisation of the delegate keys in a new format, which, while not yet decided, has a candidate format of just a CBOR serialisation of SigningKey.
    • Cutting VSS out of the genesis file:
      • vssCerts from the top level,
      • vssMaxTTL and vssMinTTL from the protocolConsts section
  4. Pretty-printing of the key material.

https://github.com/input-output-hk/cardano-node/pull/95

  1. Separate, non-genesis keypair generation for Byron/PBFT.
  2. Non-HD address printing for a given keypair.
  3. Genesis hash printing.
  4. Byron genesis delegation: generating delegation certificates for a given pair of genesis/delegate keys.

https://github.com/input-output-hk/cardano-node/pull/135 & https://github.com/input-output-hk/cardano-node/pull/147

  1. Raw TX submission over local node submission protocol.
  2. Genesis UTxO expenditure.

Notes

disassembler commented 5 years ago

Short term requirements look like what we need from my end.

kevinhammond commented 4 years ago

Still open?

Jimbo4350 commented 4 years ago

Closing as we are currently redefining scope