Files
rippled/include/xrpl
Mayukha Vadari 6015d56632 feat: Handle Smart Escrow's Bytecode, Data and Gas fields
Add the transaction handling for `EscrowCreate.Bytecode`/`Data` and
`EscrowFinish.Gas`, gated on `featureSmartEscrow`. The field and result-code
plumbing landed in #8157.

EscrowCreate:
* `Bytecode` joins `FinishAfter` and `Condition` as a way to say how an escrow
  completes, but always needs a `CancelAfter`: nothing else can free the funds
  if the contract never accepts.
* `Data` requires `Bytecode` and is capped at `kMaxWasmDataLength`.
* Bytecode is capped at the voted `BytecodeSizeLimit`, and refused outright
  when fee voting has zeroed `GasLimit` or `BytecodeSizeLimit`.
* The fee is ten base fees plus five drops per byte.
* The owner reserve is one increment per 500 bytes beyond the first 500, on
  top of the increment every escrow costs. EscrowCancel and EscrowFinish
  refund what was taken.

EscrowFinish:
* `Gas` is bounded by the voted `GasLimit` and costs `GasPrice` micro-drops
  each.
* `Gas` and the escrow's `Bytecode` must both be present or both absent
  (tefBYTECODE_NOT_INCLUDED / tefNO_BYTECODE).
* The destination and deposit-preauth checks move ahead of the condition
  check, so a contract never runs against a destination that cannot receive.

The WASM engine is not in this build, so nothing runs the bytecode: creating,
funding and cancelling a Smart Escrow works, and finishing one reports
tecFAILED_PROCESSING at the TODO where the contract would run. The gas and
return-code metadata, tecBYTECODE_REJECTED, and the `Data` a rejected contract
leaves behind all arrive with the engine. Reachable only under
`featureSmartEscrow`, which is `Supported::No`.
2026-09-10 18:05:33 -04:00
..
2026-09-10 14:55:08 -04:00
2026-09-10 14:55:08 -04:00