Repository navigation
gRPC: Dijkstra era support gaps in UTxO RPC #1263
Description
This is a work-in-progress tracking issue for Dijkstra era support gaps in cardano-rpc and the UTxO RPC integration.
It will be extended with new findings as Dijkstra support work continues.
Native guard scripts (CIP-112)
The utxorpc spec's NativeScript message has no variant for Dijkstra's RequireGuard constructor. utxorpc/spec#215 adds script_require_guard to the v1 spec. cardano-rpc compiles against v1beta, so it cannot use the new variant until it moves to v1.
Guard-bearing native scripts are encoded as empty messages
Since #1247, Dijkstra scripts no longer go through fromAllegraTimelock, so serving a guard-bearing native script no longer crashes. Instead, cardano-rpc encodes RequireGuard as an empty NativeScript, both for witness and auxiliary scripts and for reference scripts in outputs, which silently drops the guard. This stays until cardano-rpc can use the v1 variant.
RedeemerPurpose enum has no guarding value
The v1beta RedeemerPurpose enum has no value for Dijkstra's guarding purpose, so cardano-rpc maps GuardingScript to REDEEMER_PURPOSE_UNSPECIFIED. utxorpc/spec#215 adds REDEEMER_PURPOSE_GUARDING to v1.
Leios support (CIP-164)
utxorpc/spec#215 adds the Leios fields of the Dijkstra block header and body to v1. How the transactions of a certified endorser block reach block-consuming clients is still open. input-output-hk/ouroboros-leios#1106 tracks the client API design for both N2C and UTxO RPC.
Moving cardano-rpc to utxorpc v1
utxorpc/spec#215 adds the Dijkstra fields to v1 only, while cardano-rpc compiles against v1beta. To use them, cardano-rpc needs to move to v1 and add conversions for the following:
- the
Tx/TxCommonsplit and sub transactions; - guards and required top-level guards;
- direct deposits and account balance intervals;
- pool BLS keys;
- the new protocol parameters and
PParamsUpdate; - the Leios header and body fields;
ReadTxlookups by sub transaction hash.
#910 (switch to the utxorpc package) is related.
Related
- gRPC:
bytesfields encoded as text or wrong payload (TxOutput.address,Datum.hash) #1246 tracks pre-existing wire-format issues discovered during the FetchBlock work. - cardano-rpc: replace remaining old cardano-api usage with ledger-direct conversions #1264 tracks the remaining old-API conversions, including the reference-script path.
- Define Client APIs (N2C, UTxO-RPC) input-output-hk/ouroboros-leios#1106 tracks the Leios client API changes (N2C and UTxO RPC).
- feat(cardano): add Dijkstra sub transactions and ledger fields utxorpc/spec#215
- Cardano Tx cannot carry network id, script data hash, auxiliary data hash, treasury value and donation utxorpc/spec#218
Metadata
Metadata
Assignees
Labels
Type
Projects
- StatusShow more project fieldsTodo
Activity
[-]Dijkstra era support gaps in UTxO RPC[/-][+]gRPC: Dijkstra era support gaps in UTxO RPC[/+]