Skip to main content

Stake Pool Operations

Overview​

Stake pools are a core part of Cardano's Proof of Stake system. The Rosetta API supports stake pool registration, retirement, and SPO governance voting operations.

Pool Operation Types​

In addition to standard transaction operations, the following operations are available for stake pool management:

Operation TypeDescription
poolRegistrationRegister a new stake pool
poolRegistrationWithCertRegister a pool using a pre-created certificate
poolRetirementRetire an existing stake pool
poolGovernanceVoteSubmit an SPO governance vote

Input Rules​

  • For all pool operations, the cold key is required for signing and is passed as the operation account.address.
  • poolRegistration requires poolRegistrationParams in metadata.
  • poolRegistrationWithCert requires poolRegistrationCert (hex-encoded certificate) in metadata.
  • poolRetirement requires epoch in metadata.
  • poolGovernanceVote requires poolGovernanceVoteParams; vote_rationale is optional.

Construction Examples​

A pool registration operation requires poolRegistrationParams as metadata. The pool registration deposit amount is taken from the protocol parameters.

{
"network_identifier": {
"blockchain": "cardano",
"network": "mainnet"
},
"operations": [
{
"operation_identifier": {
"index": 3
},
"type": "poolRegistration",
"account": {
"address": "1b268f4cba3faa7e36d8a0cc4adca2096fb856119412ee7330f692b5"
},
"metadata": {
"poolRegistrationParams": {
"vrfKeyHash": "8dd154228946bd12967c12bedb1cb6038b78f8b84a1760b1a788fa72a4af3db0",
"rewardAddress": "stake1uxa5pudxg77g3sdaddecmw8tvc6hmynywn49lltt4fmvn7caek7a5",
"pledge": "5000000",
"cost": "3000000",
"poolOwners": [
"stake1uxly0q2cnpxrjrqm9vpnr9dwkr0j945gulhhgs3dx33l47sweg9er"
],
"relays": [
{
"type": "single_host_addr",
"ipv4": "127.0.0.1",
"ipv6": "2345:0425:2ca1:0000:0000:0567:5673:23b5",
"port": "32"
}
],
"margin": {
"numerator": "1",
"denominator": "1"
},
"poolMetadata": {
"url": "poolMetadataUrl",
"hash": "9ac2217288d1ae0b4e15c41b58d3e05a13206fd9ab81cb15943e4174bf30c90b"
}
}
}
}
],
"metadata": {
"ttl": "1000"
}
}

Required Signatures​

For pool registration, the following signatures are required:

  • Cold key signature - Used to sign the transaction
  • Reward address signature - For the creator's reward address
  • Pool owner signatures - For each pool owner's reward address

These signatures will be specifically requested in the /construction/payloads response and must be provided at the /construction/combine endpoint.

Relay Configuration​

When registering a stake pool, relay information must be provided in a specific format:

IPv4 Format​

Each segment must be a number between 0 and 255:

###.###.###.###
Example: 127.0.0.1

IPv6 Format​

Each segment must be a hexadecimal number between 0000 and FFFF:

####:####:####:####:####:####:####:####
Example: 2345:0425:2ca1:0000:0000:0567:5673:23b5

Data API Representation​

Rosetta Data API responses include pool operations in /block and /block/transaction.

{
"transaction_identifier": {
"hash": "dcbff41c50c5b4012d49be5be75b11a0c5289515258ef4cf108eb6ec4ed5f37a"
},
"operations": [
{
"operation_identifier": { "index": 0 },
"type": "poolRetirement",
"status": "success",
"account": {
"address": "d6aafa5358b98373449434542e3da3564bc71635ae3247dc1a2b7b0e"
},
"metadata": {
"epoch": 676,
"refundAmount": {
"value": "-500000000",
"currency": { "symbol": "ADA", "decimals": 6 }
}
}
}
]
}