feat: specify ic0.call_cycles_try_add128 #342
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR specifies a new system API
ic0.call_cycles_try_add128
which behaves analogously toic0.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.