feat!: remove custodial rental primitives (move/logmove/holders) from V2 - #27
Merged
Merged
Conversation
There was a problem hiding this comment.
Pull request overview
This PR removes the custodial rental/dual-ownership primitives from AtomicAssets V2 (the move/logmove flow and the holders table), aligning with the V2 scope reduction so non-rental V2 features can ship independently.
Changes:
- Removed the
moveaction andlogmovenotification action from the contract implementation and ABI headers. - Removed the
holderstable/struct and all holder bookkeeping fromburnassetandinternal_transfer. - Removed/updated test coverage that specifically exercised custodial holder behavior (
move,holders-dependent transfer/burn invariants).
Reviewed changes
Copilot reviewed 7 out of 7 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
src/atomicassets.cpp |
Removes move/logmove actions and deletes all holders-related logic in burn/transfer flows. |
include/atomicassets.hpp |
Removes move/logmove action declarations plus holders table definition and get_holders() helper. |
include/atomicassets-interface.hpp |
Removes consumer-facing holders table/struct and get_holders() accessor. |
tests/Transfer-Offer Actions/transfer.test.js |
Removes holder-specific transfer test cases that depended on move/holders. |
tests/Deposit-Withdraw-Back-Burn Actions/burnasset.test.js |
Removes holder-specific burn test case that depended on move/holders. |
tests/Asset Actions/renting-invariants.test.js |
Deletes characterization tests for legacy “held asset” burn/transfer behavior. |
tests/Asset Actions/move.test.js |
Deletes move action test suite since the action is removed. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
This was referenced Jul 2, 2026
Custodial rentals are descoped from the V2 release so the rest of V2 can ship without them. The dual-ownership mechanism is removed in full: - move action and logmove notification - holders table (+ holders_s struct, get_holders accessor) in both the contract header and the consumer-facing interface header - holder-erase block in burnasset - holder bookkeeping in internal_transfer No other V2 feature reads holder state, so this is a pure excision. ABI diff vs v2.0.0-rc3: exactly move, logmove, holders(_s) removed. Rentals live on: the custodial implementation is preserved on archive/v2-custodial-rentals (and the v2.0.0-rc1..rc3 tags); the non-custodial rework continues on experiment/noncustodial-rentals (#26). Tests: move.test.js (16) and renting-invariants.test.js (3) deleted; holder-specific cases removed from transfer.test.js and burnasset.test.js. Suite: 40 suites, 324 passing (1 pre-existing skip).
robrigo
force-pushed
the
feat/remove-custodial-rentals
branch
from
July 3, 2026 00:01
65f8dab to
de520c4
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Why
We're descoping rentals from the V2 upgrade so the rest of V2 can ship sooner, without having to get rentals right first. The custodial dual-ownership mechanism (
move/logmove+holderstable) only existed to support AtomicMarket rentals, which are being removed from AtomicMarket V2 in a companion PR.Rentals code is preserved:
archive/v2-custodial-rentalsbranch +v2.0.0-rc1..rc3tagsexperiment/noncustodial-rentals(Experimental: non-custodial renter-as-owner rental primitives #26)What
moveaction andlogmovenotificationholderstable,holders_sstruct, andget_holders()from bothatomicassets.hppand the consumer-facingatomicassets-interface.hppburnassetinternal_transferNo other V2 feature (templates2, schematypes, deltemplate/redtemplmax, author succession, byte-math) reads holder state — this is a pure excision.
Verification
make buildcleanmove,logmove(actions/structs) andholders/holders_s(table/struct) removed; nothing else changedmove.test.js(16) andrenting-invariants.test.js(3); removed holder-specific cases fromtransfer.test.js(4) andburnasset.test.js(1). Suite: 38 suites, 313 passing (1 pre-existing skip)Deployment note
rc3 is live on jungle4 + wax-testnet. Before deploying the rc4 build, on-chain
holdersrows (from e2e runs) must be cleared — after the flip there is no action left that can erase them. That cleanup is tracked on our side.