https://github.com/cardanosolutions/zhuli
A hot/cold solution for delegate representatives on Cardano
https://github.com/cardanosolutions/zhuli
cardano delegate drep governance hot-cold-storage proxy
Last synced: 6 months ago
JSON representation
A hot/cold solution for delegate representatives on Cardano
- Host: GitHub
- URL: https://github.com/cardanosolutions/zhuli
- Owner: CardanoSolutions
- License: mpl-2.0
- Created: 2024-09-05T09:34:17.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-09-24T12:40:47.000Z (over 1 year ago)
- Last Synced: 2025-01-29T15:14:29.329Z (about 1 year ago)
- Topics: cardano, delegate, drep, governance, hot-cold-storage, proxy
- Language: Rust
- Homepage:
- Size: 322 KB
- Stars: 6
- Watchers: 1
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
## Overview
A validator & companion command-line tool to provide hot/cold account management to delegate representatives (a.k.a DReps) on Cardano. The on-chain validator provides an authentication mechanism for an administrator multisig script (m-of-n type), itself granting powers to multisig-like delegate to manage voting stake rights.
### Features
- [x] Fixed DRep ID for unlimited delegates, entirely defined by the administrator configuration.
- [x] Delegation of voting rights as a single transaction.
- [x] Revocation of a delegate as a single transaction.
- [x] Revokation & redelegation possible as a single transaction.
- [x] No datum, the state is fully captured in minted assets trapped in the validator.
- [x] Simplified off-chain management and contract flow thanks to a [companion command-line tool](./cli)
### Todo
- [ ] Extend the setup to also support a second type of delegate for block production rights.
## Configuration
The administrator script can be configured direction in the `aiken.toml` as follows:
```toml
[config.default]
quorum = 1 # How many administrators signatories are required to approve actions
# List of administrators (verification key hashes)
[[config.default.administrators]]
bytes = "000000000000000000000000000000000000000000000000000a11ce"
encoding = "base16"
[[config.default.administrators]]
bytes = "00000000000000000000000000000000000000000000000000000b0b"
encoding = "base16"
```
> [!TIP]
> Different keys can be configured for different environments. Instead of `default`, use whatever environment name suits you and re-compile the contract accordingly using aiken's cli. For example, you can define custom keys for an environment `foo` as:
>
> ```toml
> [config.foo]
> quorum = 1
>
> [[config.foo.administrators]]
> bytes = "0000000000000000000000000000000000000000000000000000f00"
> encoding = "base16"
> ```
>
> Then, using `aiken`, simply do:
>
> ```
> aiken build --env foo
> ```