mirror of
https://github.com/XRPLF/rippled.git
synced 2026-09-27 15:28:03 +00:00
The two groups share one flat ABI table in one `host_lib` namespace, and the only thing separating them is that the escrow host leaves the contract methods at their `Unimplemented` default. That separates them too late, and in one direction only. An escrow whose bytecode imports `emit_built_txn` passes screening, so `EscrowCreate` stores it and the escrow fails at finish with `tecINTERNAL`, because `Unimplemented` is a fatal fault rather than a code a contract reads. A contract calling `set_data` does not fail at all: the method is inherited, only `EscrowFinish::doApply` drains it, so the write returns a byte count and is discarded. Both need screening to know which subset of the ABI the host being built for actually serves. `docs/wasm-amendment-gating.md` already designs that transport for amendments; this wants the same one keyed on which host is running.