Skip to content

feat!: remove custodial rentals from V2 - #13

Merged
robrigo merged 1 commit into
v2/integration-rc1from
feat/remove-rentals
Jul 3, 2026
Merged

feat!: remove custodial rentals from V2#13
robrigo merged 1 commit into
v2/integration-rc1from
feat/remove-rentals

Conversation

@robrigo

@robrigo robrigo commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

Why

We're descoping rentals from the V2 upgrade so the rest of V2 (royalty splits, single-asset listings, execution-time fee) can ship sooner, without having to get rentals right first. The AtomicAssets custodial primitive (move/holders) is being removed in the companion PR atomicassets/atomicassets-contract#27.

Rentals code is preserved:

What

  • Remove actions announcerent / cancelrent / rentasset / endrent / payrentram and logs lognewrent / logrentstart / logrental
  • Remove the rentals table (+ rentalends index, accessor) and the "rental" memo branch in receive_asset_transfer
  • Remove holders_s/get_holders() from atomicassets-interface.hpp (no other caller)
  • Remove the 8 rental ricardian clauses; delete docs/wiki/Rentals.md; purge rental sections from api-integration.md, wiki pages, README, CLAUDE.md
  • Tests: 8 rental cases + the rentals table helper removed from market-smoke.test.js; auctions.test.js only loses its unused rentals helper (the renter/renter2 accounts there are generic bidders and stay)

Shared machinery is untouched: internal_payout_sale, consume_counter/counters (sales + auctions still use them); migrate never seeded a rental counter.

Base branch note

This PR is based on v2/integration-rc1 (3 commits ahead of master with the merged #10 Hydra→VeRT test migration), so merging it also lands those test commits on master — which was always the plan for the RC1 integration branch.

Verification

  • make build clean; 6 suites, 220 tests passing (228 minus the 8 rental tests)
  • ABI diff vs v2.0.0-rc1: exactly the 8 rental actions + rentals table (and their structs) removed; nothing else changed

Note on fixtures

tests/fixtures/atomicassets/ still contains the rc3 AtomicAssets build (with move/holders) — harmless superset; will be refreshed to the AA build without holders once atomicassets-contract#27 is released.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR removes the custodial rentals feature set from AtomicMarket V2 (actions, tables, logs, and the "rental" transfer-memo branch), aligning the contract and docs with the decision to ship the remaining V2 features sooner while the AtomicAssets custody primitives are being removed upstream.

Changes:

  • Deleted custodial rental actions/logs/state (rentals table + indices) and removed "rental" handling in receive_asset_transfer.
  • Removed the AtomicAssets custodial holders interface from include/atomicassets-interface.hpp and updated contract/docs references accordingly.
  • Updated tests and docs to drop rental coverage/content; additionally lands the VeRT test-suite migration work from the integration base branch.

Reviewed changes

Copilot reviewed 19 out of 19 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
tests/sales.test.js Adds comprehensive VeRT coverage for v2 sale flow actions and receive_asset_offer.
tests/market-smoke.test.js Removes rental-related smoke tests and table helpers; updates suite description accordingly.
tests/deposit-withdraw.test.js Adds VeRT coverage for deposits/withdrawals and token-support/guard paths.
tests/buyoffers.test.js Adds VeRT coverage for buyoffer lifecycle actions and validations.
tests/auctions.test.js Adds VeRT coverage for auction lifecycle actions and validations.
tests/admin.test.js Adds VeRT coverage for admin/config actions and validations.
src/atomicmarket.cpp Removes rental action implementations, rental memo path, and rental log actions; updates related comments.
resource/atomicmarket.contracts.md Removes Ricardian/spec docs for rental actions/logs and updates royalty-split wording.
README.md Removes rentals from the project description and feature list.
include/atomicmarket.hpp Removes rental action declarations, rental logs, rentals table definition, and get_rentals() accessor.
include/atomicassets-interface.hpp Removes holders table struct and get_holders() accessor.
docs/wiki/V2-Changes.md Removes rentals references from V2 change summary and indexer notes.
docs/wiki/Royalty-Splits.md Updates wording to remove rentals references.
docs/wiki/Rentals.md Deletes the rentals wiki page.
docs/wiki/README.md Updates wiki-link example to no longer reference Rentals.
docs/wiki/Home.md Removes rentals from feature list and adjusts conceptual descriptions to sales/auctions only.
docs/wiki/_Sidebar.md Removes Rentals from the wiki sidebar.
docs/api-integration.md Removes rentals workflow/table/action/memo documentation and renumbers sections accordingly.
CLAUDE.md Removes rentals from repo overview and test-suite descriptions.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread tests/auctions.test.js
Comment thread src/atomicmarket.cpp Outdated
Comment on lines 487 to 488
* The founders category is a list of global recipients that applies to every sale of
* the collection. The three split weights determine how the collection fee is divided between
Comment thread src/atomicmarket.cpp Outdated
Comment on lines 644 to 645
* A rule matches when an asset that is sold has an attribute with the exact
* (source, field, value) triple of the rule. The value's type is part of the match -
Comment thread src/atomicmarket.cpp
Comment on lines 2593 to 2597
// Collection fee - the fee at EXECUTION time ALWAYS applies, regardless of the fee that
// was stored when the listing was created. This gives the collection author full control:
// both fee reductions and fee raises take effect immediately on every already-created
// listing (sales, auctions and rentals alike). The stored collection_fee is retained only
// listing (sales and auctions alike). The stored collection_fee is retained only
// for informational / indexing purposes (emitted by the lognew* actions) and no longer
Rentals are descoped from the V2 release so the rest of V2 can ship
without them. Removed in full:

- actions announcerent / cancelrent / rentasset / endrent / payrentram
- log actions lognewrent / logrentstart / logrental
- rentals table (+ rentals_s, rentalends index, get_rentals accessor)
- the "rental" memo branch in receive_asset_transfer
- holders_s / get_holders from the AtomicAssets interface header (the
  custodial holdership mechanism is being removed from AtomicAssets V2
  in the companion PR atomicassets-contract#27)
- ricardian clauses, wiki page, README/CLAUDE.md/api-integration.md
  sections

internal_payout_sale, consume_counter and the counters table are shared
with sales/auctions and stay; only the rental call sites are gone. The
migrate action never seeded a rental counter, so no migration change.

ABI diff vs v2.0.0-rc1: exactly the 8 rental actions + rentals table
(and their structs) removed.

Rentals live on: the custodial implementation is preserved on
archive/v2-custodial-rentals + the v2.0.0-rc1 tag; the non-custodial
rework continues on experiment/noncustodial-rentals (#11, #12).

Tests: 8 rental cases + the rentals table helper removed from
market-smoke; auctions.test.js kept (renter accounts there are generic
bidders). Suite: 6 suites, 220 passing.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 19 out of 19 changed files in this pull request and generated 5 comments.

Comment thread docs/api-integration.md
Comment on lines 25 to +27
**Behavior changes to existing actions** (section 5 — these WILL break naive state
machines): single-asset listings, legacy-bundle auto-cancellation, execution-time
collection fee (applied at settlement, section 5.3).
collection fee (applied at settlement, section 4.3).
Comment thread tests/buyoffers.test.js
Comment on lines +36 to +38
let atomicmarket, atomicassets, token, delphi;
let author, seller, buyer, renter, renter2;
let founder1, founder2, temproy1, attrroy1, feesAtomic, marketowner;
Comment thread tests/buyoffers.test.js
Comment on lines +59 to +62
blockchain = new Blockchain();
atomicassets = blockchain.createContract(AA, './tests/fixtures/atomicassets/atomicassets');
atomicmarket = blockchain.createContract(MARKET, './build/atomicmarket');
delphi = blockchain.createContract('delphioracle', './tests/fixtures/delphioracle/delphioracle');
Comment thread tests/buyoffers.test.js
Comment on lines +69 to +79
author = blockchain.createAccount('author');
seller = blockchain.createAccount('seller');
buyer = blockchain.createAccount('buyer');
renter = blockchain.createAccount('renter');
renter2 = blockchain.createAccount('renter2');
founder1 = blockchain.createAccount('founder1');
founder2 = blockchain.createAccount('founder2');
temproy1 = blockchain.createAccount('temproy1');
attrroy1 = blockchain.createAccount('attrroy1');
feesAtomic = blockchain.createAccount('fees.atomic');
marketowner = blockchain.createAccount('marketowner');
Comment thread tests/buyoffers.test.js

await atomicmarket.actions.addconftoken(['eosio.token', '8,WAX']).send(`${MARKET}@active`);

await mintTokens(token, 'WAX', 8, 1000000000, 10000, [buyer, renter, renter2]);
@robrigo
robrigo changed the base branch from master to v2/integration-rc1 July 3, 2026 00:53
@robrigo
robrigo merged commit b7b757b into v2/integration-rc1 Jul 3, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants