dfinity / interface-spec

IC Interface Specification
https://khsfq-wqaaa-aaaak-qckvq-cai.icp0.io/docs
37 stars 20 forks source link

feat: specify ic0.call_cycles_try_add128 #342

Closed mraszyk closed 1 month ago

mraszyk commented 2 months ago

This PR specifies a new system API ic0.call_cycles_try_add128 which behaves analogously to ic0.call_cycles_add128, but does not trap if the canister balance would decrease below the canister's freezing limit after transferring the specified amount of cycles onto the call. Since a canister cannot reliably derive its freezing limit, this new system API is necessary to avoid spurious traps when attaching cycles onto a call.

This PR also specifies to abort the call builder pattern in case of an error since otherwise the developer would not be able to cleanly abort the call in case of an error.