You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I think the recent wallet RPC bug reports point to one shared gap: Zallet does not yet have regression coverage for response-shape compatibility on wallet RPC methods that intentionally mirror Zebra or zcashd.
These look different on the surface, but they have the same downstream effect: client code that treats same-named wallet RPC methods as stable adapters over Zebra or zcashd behavior has to learn Zallet-specific exceptions one bug at a time.
I think we should add explicit conformance coverage for the wallet RPC methods where response-shape compatibility matters most to downstream consumers. My suggestion is to start with the methods that already have open shape or serialization bugs:
getrawtransaction
z_listunspent
z_viewtransaction
I am not proposing that every field must be byte-for-byte identical to every backend forever. I am proposing that for methods intentionally exposed under the same names, we should have regression tests that lock the fields and invariants that client code is expected to rely on.
I think the recent wallet RPC bug reports point to one shared gap: Zallet does not yet have regression coverage for response-shape compatibility on wallet RPC methods that intentionally mirror Zebra or zcashd.
Evidence from the current open issue cluster:
addressfield absent onwalletInternal=truechange outputs #441 reports that z_listunspent omits the address field on walletInternal change outputs, which breaks typed clients that treat the response schema as stable.in_active_chainandvjoinsplitrelative to Zebra #442 reports that getrawtransaction omits in_active_chain and vjoinsplit relative to Zebra for the same txid and verbosity.These look different on the surface, but they have the same downstream effect: client code that treats same-named wallet RPC methods as stable adapters over Zebra or zcashd behavior has to learn Zallet-specific exceptions one bug at a time.
I think we should add explicit conformance coverage for the wallet RPC methods where response-shape compatibility matters most to downstream consumers. My suggestion is to start with the methods that already have open shape or serialization bugs:
I am not proposing that every field must be byte-for-byte identical to every backend forever. I am proposing that for methods intentionally exposed under the same names, we should have regression tests that lock the fields and invariants that client code is expected to rely on.
A concrete first step would be:
addressfield absent onwalletInternal=truechange outputs #441, and rpc(getrawtransaction): reply omitsin_active_chainandvjoinsplitrelative to Zebra #442;If this direction makes sense, I can put together the first patch starting with #442 and the associated regression coverage.