multi: reserve asset carrier inputs#1035
Conversation
|
Caution The consumer version of Gemini Code Assist on GitHub has been sunset. All code review activity has officially ceased. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: dda6a5232b
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| @@ -3266,6 +3312,7 @@ func (r *RPCServer) SendOOR(ctx context.Context, req *waverpc.SendOORRequest) ( | |||
| if err != nil { | |||
There was a problem hiding this comment.
Keep committed asset inputs locked when OOR admission fails
When assetPreparer.PrepareTaprootAssetOOR succeeds, it may already have committed the checkpoint and Ark Taproot Asset transitions, but releaseSelected remains true until a successful non-existing OOR response. Thus an OOR actor error here (or the invalid-response path below) falls through to the deferred unlock, returning the asset-bearing VTXO to Live and deleting its preparation reservation even though the asset transition has crossed its external commit boundary. A subsequent spend or restart sweep can then reuse an input whose asset state is no longer safe to retry; asset sends should quarantine the input after successful preparation unless actor admission is durably accepted.
Useful? React with 👍 / 👎.
Summary
This is stack 3 of the Wavelength Taproot Assets PoC and depends on #1034. It deliberately leaves mixed checkpoint packages and partial asset change to the next transaction-builder stack.
Validation
After rebasing on current main, the focused package suite was rerun and passed.
Docker was unavailable during generation, so SQL and protobuf output was produced with the exact repository-pinned sqlc 1.29.0 and protoc 3.21.12 toolchains.