Repository navigation
Conversation
…errers Buyers append the referrer wallet and a client id to the settlement metadata they already sign (SpendingAuth v3, FreeUsage v1). AntseedStats decodes the tail, records per-client usage and forwards the binding to the new AntseedReferrals contract on the buyer's first settlement, so the binding is buyer-signed, gasless and covers free usage. Referrers earn 2% of referred buyers' finalized ANTS usage rewards, accrued and claimed from the ANTS dashboard. Desktop asks for confirmation during first-run setup and stores the answer in referral.json; the buyer daemon carries it until the chain shows it bound. Download links carry ?ref=<wallet> and the download proxy keeps a 48-hour HMAC-keyed network match.
…fore stats early-returns
…he same cumulative
… chain-config generation
…s and show it on Home
…d of double-counting open channels
… hint gated on a completed download
…s to burn and reserve
… dropped once bound
…r usage is credited
…vites with a two-sided bonus
|
@reviewant re-review Addressed all findings in 211a950:
Full build + typecheck clean; node 1437, buyer-core 47, cli 1391 (+ new command tests), desktop 379 main / 518 renderer, ants 743, contracts 907 — all passing. (One pre-existing flaky gateway test, |
|
Superseded by a newer review: #1080 (comment) (previously reviewed |
|
@reviewant re-review Addressed round 2 in ea21c5f:
Full build + typecheck clean; node 1445, cli 1394/1395 (only the pre-existing flaky |
|
Superseded by a newer review: #1080 (comment) (previously reviewed |
|
@reviewant re-review Addressed round 3 in 8d5310f:
Full build + typecheck clean; node 1449, cli 1395/1396 (only the pre-existing flaky |
|
Superseded by a newer review: #1080 (comment) (previously reviewed |
|
@reviewant re-review Addressed the recovery-lock race in 9d00246 by removing compare-and-unlink from claim handling entirely:
node 1450, ants 750, cli 1396 passing; typecheck clean. |
|
@reviewant re-review (latest commit 9d00246 — recovery-lock race fix) |
|
Superseded by a newer review: #1080 (comment) (previously reviewed |
… and claim inviter rewards
|
@reviewant re-review Addressed round 5 in c47a74c:
Full build + typecheck clean; all workspace test suites and 907 contract tests pass. |
|
Superseded by a newer review: #1080 (comment) (previously reviewed |
|
@reviewant re-review Addressed both round-6 findings:
|
|
Superseded by a newer review: #1080 (comment) (previously reviewed |
|
@reviewant re-review Addressed all three round-7 findings:
|
|
Superseded by a newer review: #1080 (comment) (previously reviewed |
…claims, and reset invite checking
|
@reviewant re-review Addressed all four round-8 findings:
|
|
Superseded by a newer review: #1080 (comment) (previously reviewed |
…emoval failures, and count legacy used indexes
|
@reviewant re-review Addressed all three round-9 findings:
|
|
Superseded by a newer review: #1080 (comment) (previously reviewed |
|
@reviewant re-review Addressed both round-10 findings:
|
Antseed Review SummaryThis PR introduces invite-only referrals and client attribution through additional buyer-signed metadata on paid and free usage. New contracts bind referrals, account for attributed usage, and distribute epoch rewards to referral operators and client-agent owners. Shared persistence, CLI commands, desktop deep links, dashboard services, and a website landing page connect invite issuance and redemption to settlement and reward claims.
Confidence Score: 5/5Safe to merge; no verified issues remain across the eight passes and the cross-package interface review. The merge review verified metadata layouts, invite encoding and signature domains, contract/client claim interfaces, attribution credit finality, desktop-to-CLI persistence, and originating-buyer versus operator targeting without finding a concrete mismatch. The supplied passes report successful contracts (907), node (1,457), buyer-core (47), protocol (47), ANTS (753), CLI (1,396 with one skipped), desktop, and network-stats suites; initial build and invocation artifacts were not identified as PR regressions. No tests were rerun during this merge review, as instructed. Live deployment, external Antscan interoperability, mixed-version peer integration, and operating-system/browser deep-link delivery remain unexercised.
|
| Filename | Overview |
|---|---|
packages/contracts/test/AntseedAttributionRewards.t.sol |
Adds real-contract integration coverage for late-credit finality, invite forwarding, two-sided rewards, and operator payouts; no verified issue found. |
packages/contracts/test/AntseedAttributionUsage.t.sol |
Tests attribution cursors, client switching, late credits, pause behavior, referral windows, and self-referral exclusions consistently with the ledger implementation. |
packages/contracts/test/AntseedClientRewards.t.sol |
Covers proportional client rewards, owner recipients, claim finality, duplicate claims, and empty-epoch sweeps; no verified issue found. |
packages/contracts/test/AntseedReferrals.t.sol |
Adds invite validation and signature-vector tests alongside reward-routing and real-gate burn-cap coverage; no verified issue found. |
packages/contracts/test/AntseedStatsV2.t.sol |
Tests supported metadata layouts, attribution vectors, unconditional cursor forwarding, rejected invites, and disabled sinks; no verified issue found. |
packages/contracts/test/RegisterAttributionMinters.t.sol |
Checks the verification-bucket split, next-epoch budgets, conserved total share, and repeat-registration rejection; no verified issue found. |
packages/node/tests/buyer-identity-attribution.test.ts |
Adds coverage ensuring additional buyer identities receive the client ID without inheriting the default wallet's invite, including subsequent attribution updates. |
packages/node/tests/buyer-payment-manager.test.ts |
Checks initial attributed metadata hashes, attribution replacement and clearing, and removal of persisted attribution when restarting without configuration. |
packages/node/tests/client-rewards-client.test.ts |
Verifies claimable-epoch scanning, zero-reward filtering, early-epoch behavior, and the client rewards contract configuration override. |
packages/node/tests/file-lock-no-links.test.ts |
Verifies unsupported hard links fail without entering the critical section or leaving staged lock files. |
packages/node/tests/file-lock.test.ts |
Adds coverage for serialization, abandoned-owner recovery, publication safety, paused holders, and competing cross-process reclaimers. |
packages/node/tests/free-usage-lifecycle.test.ts |
Exercises attribution replacement, clearing, metadata hashing, and restart behavior through encoded free-usage protocol messages. |
packages/node/tests/invites.test.ts |
Tests invite signature vectors, encoding and links, malformed input rejection, preview results, and available-index selection. |
packages/node/tests/referral-state.test.ts |
Covers scoped persistence, authoritative chain confirmation, backoff, legacy migration, and concurrent updates; the revised RPC failure case now reaches and counts the throwing lookup. |
packages/node/tests/seller-cooperative-close.test.ts |
Checks that re-signed metadata at the same cumulative amount is retained and submitted during cooperative close. |
apps/desktop/electron-builder.yml |
Registers the antseed URL scheme in packaged applications, including the inheriting Linux configuration. |
apps/desktop/src/main/deep-link-queue.ts |
Buffers an invite until the renderer subscribes and resets readiness on navigation or destruction. |
apps/desktop/src/main/deep-link-queue.test.ts |
Tests delivery before subscription, live delivery, reloads, and replacement windows. |
apps/desktop/src/main/deep-links.ts |
Handles startup arguments and Electron URL events, forwarding supported invite links through the readiness queue. |
apps/desktop/src/main/main.ts |
Registers deep links before application readiness and connects delivery to the main-window lifecycle. |
apps/desktop/src/main/ipc/app.ts |
Exposes referral operations and the pending-link handshake through IPC consistently with the preload bridge. |
apps/desktop/src/main/referrals.ts |
Validates and persists buyer invites, signs new invites, and adapts referral rewards and allowance data for desktop consumers. |
apps/desktop/src/main/preload.cts |
Adds referral operations and a removable deep-link listener to the renderer API. |
apps/desktop/src/renderer/types/bridge.ts |
Defines referral response types and optional bridge methods matching the main-process implementation. |
apps/desktop/src/main/runtime/process-manager.ts |
Defaults child-process client attribution to desktop while preserving explicit environment overrides. |
apps/desktop/src/main/payments/credits.ts |
Carries referral deployment and explorer configuration into the cached crypto configuration. |
apps/desktop/src/main/payments/buyer-channels.ts |
Preserves existing rewards-summary exports while moving their definitions to a dedicated module. |
apps/desktop/src/main/payments/rewards-summary.ts |
Extracts wallet-and-chain-scoped rewards caching without changing freshness or error-retry behavior. |
apps/desktop/src/main/payments/rewards-summary.test.ts |
Verifies friendly network errors, preservation of other errors, and successful-result caching. |
apps/desktop/src/main/ipc/payments.ts |
Uses the extracted rewards-cache helper and retains the existing IPC response shape. |
apps/desktop/src/main/utils.ts |
Maps recognized RPC and explorer failures to a short retry message while retaining other error messages. |
apps/desktop/src/main/utils.test.ts |
Tests network-error normalization and preservation of non-network failure messages. |
apps/desktop/src/renderer/core/format.ts |
Adds grouping separators to display amounts while preserving two decimal places and tiny-balance indicators. |
apps/cli/src/cli/commands/buyer/start.ts |
Installs client and pending-invite attribution before proxy startup, then watches referral state and stops the watcher during shutdown; no issue found. |
apps/cli/src/cli/commands/referral.ts |
Adds invite creation, redemption and status commands using shared validation, allocation and persistence helpers; no issue found. |
apps/cli/src/cli/commands/referral.test.ts |
Covers invite allocation, stale explorer data, redemption, deployment scoping and command output. |
apps/cli/src/cli/referral-state.ts |
Resolves client attribution and synchronizes pending invites without blocking startup on network lookups; no issue found. |
apps/cli/src/cli/referral-state.test.ts |
Tests attribution precedence, pending-to-bound transitions and state writes racing watcher reads. |
apps/cli/src/cli/payment-utils.ts |
Propagates referral and client-reward configuration into resolved CLI payment settings. |
apps/cli/src/cli/program.ts |
Registers the new referral command group without changing existing command registration. |
apps/cli/package.json |
Extends test discovery to top-level command tests and tunnel tests; the full suite passed. |
apps/cli/README.md |
Documents referral commands, invite eligibility, persistence and reward claims. |
apps/network-stats/src/store.ts |
Adds channel-level reporting-contract tracking and subtracts previously indexed usage from the first cumulative report after a contract switch. |
apps/network-stats/src/store.test.ts |
Tests contract-switch deduplication and continued delta accounting after upgrading an existing database. |
apps/desktop/src/renderer/ui/AppShell.tsx |
Subscribes to invite deep links before retrieving a queued link and routes established users to Rewards. |
apps/desktop/src/renderer/ui/components/InviteCodeField.tsx |
Provides shared debounced invite validation, deep-link prefilling and explicit redemption. |
apps/desktop/src/renderer/ui/components/ReferralStatusRow.tsx |
Displays pending or bound referrals and supports changing or removing pending invites while preserving final bindings. |
apps/desktop/src/renderer/ui/components/SetupScreen.tsx |
Offers invite entry during setup when referrals are configured and no invite or binding is already present. |
apps/desktop/src/renderer/ui/components/views/VprPreferencesView.tsx |
Adds referral settings using the shared status component and reloads state after changes. |
apps/desktop/src/renderer/ui/components/views/VprRewardsView.tsx |
Adds invite creation, invitee earnings and bonus claims with refreshed reward data and protection against stale asynchronous responses. |
apps/desktop/src/renderer/ui/components/views/VprRewardsView.test.tsx |
Covers reward aggregation, refresh ordering, successive invite creation, allowance rollover and claim destinations. |
apps/desktop/src/renderer/ui/components/ReferralStatusRow.test.tsx |
Tests pending-invite controls, removal failures and final binding presentation. |
apps/desktop/src/renderer/ui/components/views/VprReferralSetting.test.tsx |
Tests referral settings across unconfigured, unbound, pending and bound states. |
apps/ants/src/service/referrals.ts |
Adds referral views, serialized invite issuance, and reward claims with on-chain fallbacks; buyer/operator targeting is consistent with the contract. |
apps/ants/src/service/referrals.test.ts |
Covers invite allocation, concurrent issuance, deployment-scoped persistence, explorer fallbacks, and refusal to sign buyer invites with an operator. |
apps/ants/src/service/builders.ts |
Adds agent ownership views, registration, and per-epoch claims with on-chain rechecks of indexed rewards. |
apps/ants/src/service/builders.test.ts |
Tests ownership filtering, stale indexed claims, RPC failures, fallback scans, and registration. |
apps/ants/src/service/context.ts |
Adds optional referral and client-reward clients and exposes their configured addresses consistently with existing clients. |
apps/ants/src/service/index.ts |
Exports the new referral and builder services for dashboard, CLI, and desktop callers. |
apps/ants/src/service/indexer.ts |
Adds referral, referee, and builder response adapters using the existing bounded HTTP and caching infrastructure. |
apps/ants/src/service/indexer.test.ts |
Tests invite-count compatibility and referee response normalization. |
apps/ants/src/api-types.ts |
Defines the new API views and builder request limit consistently with service responses. |
apps/ants/src/routes.ts |
Connects cached reads and reward actions, permitting selected buyers or their operators to submit referral claims. |
apps/ants/src/routes.test.ts |
Tests builder query normalization, referral caching, and invite endpoint success and refusal paths. |
apps/ants/src/server.test.ts |
Adds account-selection coverage, including an originating buyer's referral reads and claims while its distinct operator is connected. |
packages/contracts/script/DeployAttributionUsage.s.sol |
Deploys the attribution ledger with the expected constructor dependencies and documents subsequent wiring. |
packages/contracts/script/DeployClientRewards.s.sol |
Deploys client rewards against the gate, attribution ledger, and identity registry. |
packages/contracts/script/DeployReferrals.s.sol |
Deploys referrals with the expected accounting, recipient lookup, attribution, and binder dependencies. |
packages/contracts/script/DeployStatsV2.s.sol |
Deploys and authorizes the new stats sink while documenting sink wiring before registry cutover. |
packages/contracts/script/RegisterAttributionMinters.s.sol |
Splits the verification allocation into verification, builder, and referral buckets with ownership and existing-state checks. |
packages/contracts/test/mocks/EmissionsGateMock.sol |
Provides controller budgets and shared burn-cap behavior consistent with the real gate paths used by the new tests. |
packages/contracts/rewards/AntseedReferrals.sol |
Adds activity-derived invite quotas, immutable referral bindings, and permissionless reward claims paid to Deposits operators; no actionable issue found. |
packages/node/src/utils/file-lock.ts |
Adds process-local queues and cross-process hard-link locks with abandoned-owner reclamation; reviewed publication and cleanup paths without finding a confirmed defect. |
packages/node/src/payments/invites.ts |
Implements compact invite serialization, EIP-712 signing, validation helpers, and available-index selection consistent with the contract. |
packages/node/src/payments/referral-state.ts |
Persists wallet-and-deployment-scoped state under a shared lock and requires chain confirmation before dropping pending invites. |
packages/node/src/payments/evm/referrals-client.ts |
Exposes invite checks, referral reads, and permissionless reward claims through ABI methods matching the new contract. |
packages/node/src/payments/evm/client-rewards-client.ts |
Adds client reward reads and claims using the existing EVM transaction machinery and settlement-grace convention. |
packages/node/src/payments/seller-payment-manager.ts |
Adopts verified replacement metadata at the same cumulative authorization amount and persists it for subsequent settlement. |
packages/buyer-core/src/buyer-payment-manager.ts |
Applies current attribution when signing metadata and computes opening authorization hashes from the actual transmitted metadata. |
packages/buyer-core/src/buyer-free-usage-manager.ts |
Applies current attribution to free-usage authorizations while removing obsolete persisted attribution. |
packages/buyer-core/src/channel-usage-accounting.ts |
Preserves attribution when advancing cumulative usage metadata. |
packages/buyer-core/src/attribution.test.ts |
Tests attribution preservation through metadata advancement and unchanged behavior when attribution is absent. |
packages/node/src/node.ts |
Propagates attribution into buyer managers and runtime updates while excluding the default wallet's invite from additional identities. |
packages/node/src/buyer-identity-context.ts |
Extends additional identities' free-usage configuration to accept client attribution. |
packages/node/src/payments/chain-config.ts |
Adds optional referral and client-reward deployment addresses plus first-party client identifiers. |
packages/node/src/payments/index.ts |
Exports the new referral state, invite, and reward-client APIs without removing existing exports. |
packages/node/src/index.ts |
Exposes attribution, referral, reward-client, and file-lock APIs through the public package entry point. |
scripts/generate-contract-chain-config.mjs |
Maps referral and client-reward deployment records into generated chain configuration. |
CHANGELOG.md |
Documents the referral and attribution behavior, client integration, and required contract deployment changes. |
packages/contracts/emissions/AntseedAttributionUsage.sol |
Adds per-buyer cumulative usage cursors, client and referral point attribution, permissionless flushing, and late-credit rollover consistent with reward finality. |
packages/contracts/emissions/AntseedClientRewards.sol |
Distributes client epoch rewards to ERC-8004 agent owners through permissionless, guarded claims. |
packages/contracts/emissions/AntseedEpochShareRewards.sol |
Provides shared epoch-share claims with a grace period, frozen totals, duplicate-claim protection, and empty-epoch remainder settlement. |
packages/contracts/stats/AntseedStatsV2.sol |
Preserves the stats writer interface while decoding signed attribution and forwarding client and invite data before token-counter filtering. |
packages/protocol/src/signatures.test.ts |
Adds attribution round-trip, cross-language vector, legacy-decoder compatibility, and retired-tail rejection tests; all pass. |
packages/protocol/src/signatures.ts |
Adds invite typed data and domain helpers plus optional attribution encoding and decoding without changing metadata bytes when attribution is absent. |
apps/ants/web/src/api.ts |
Adds typed referral, invite, referred-buyer, and builder API calls matching the service routes. |
apps/ants/web/src/components/Confirm.tsx |
Allows referral claims through the buyer-action wallet gate while retaining signing-wallet readiness and gas checks. |
apps/ants/web/src/jobs.tsx |
Exposes the job list for registration tracking and supplies labels for the new reward actions. |
apps/ants/web/src/pages/Rewards.tsx |
Adds referral and builder cards, bounded agent tracking, invite allowance reconciliation, and the buyer invite-bonus row; no verified correctness issue was found. |
apps/ants/web/src/rewards-page.test.ts |
Covers reward rendering, claim eligibility, invite allowance rollover, and registration tracking; all 57 tests passed. |
apps/ants/web/src/action-button.test.ts |
Extends operator-funded buyer-action coverage to referral claims; all 17 tests passed. |
apps/ants/web/src/dashboard.test.ts |
Updates the job mock for the new passive job-list consumer; all 61 tests passed. |
apps/website/src/invite/InvitePage.tsx |
Displays invite expiry and offers desktop download, deep-link opening, and a copyable CLI redemption command. |
apps/website/src/lib/invite.ts |
Implements browser-side invite decoding and signer recovery consistent with the SDK format, with signer display disabled until a referrals deployment is configured. |
apps/website/plugins/invite-route.ts |
Registers the dynamic invite route, relying on the static host's fallback document for direct visits. |
apps/website/docusaurus.config.ts |
Registers the invite plugin, excludes invite URLs from the sitemap, and adds the referral documentation redirect. |
apps/website/src/components/CommandChip.tsx |
Adds optional wrapping of long invite tokens while preserving the complete command for copying. |
apps/website/docs/provide/referrals.md |
Documents invite issuance, redemption, quotas, expiry, and reward claims consistently with the inspected implementation. |
apps/website/docs/protocol/recognized-usage.md |
Documents referral and client attribution buckets and their emissions-gate activation. |
apps/cli/src/config/loader.ts |
Preserves clientAgentId through configuration merging and rejects values that are not positive safe integer agent IDs. |
apps/cli/src/config/loader.test.ts |
Adds configuration coverage for valid numeric and decimal-string IDs and invalid inputs; the compiled test passed. |
apps/cli/src/config/types.ts |
Adds optional client attribution and referral/client reward contract configuration fields. |
Diagram
sequenceDiagram
participant App as CLI or Desktop
participant State as Scoped referral state
participant Buyer
participant Seller
participant Stats
participant Ledger
participant Referrals
participant Accounting
participant Rewards
App->>Referrals: Preview invite for buyer
App->>State: Save validated pending invite
State->>Buyer: Install invite and client attribution
Buyer->>Seller: Sign usage metadata containing attribution
Seller->>Stats: Forward metadata through settlement
Stats->>Ledger: Credit previous usage and advance client cursor
Stats->>Referrals: Attempt invite binding
Seller->>Accounting: Accrue paid settlement points
State->>Referrals: Confirm binding on chain
State->>Buyer: Remove bound invite and retain client attribution
Ledger->>Accounting: Read cumulative points on callback or flush
Rewards->>Ledger: Read finalized epoch shares
Rewards->>Rewards: Pay referral operators or client agent owners
Core files read in full: packages/contracts/test/AntseedAttributionRewards.t.sol, packages/contracts/test/AntseedAttributionUsage.t.sol, packages/contracts/test/AntseedClientRewards.t.sol, packages/contracts/test/AntseedReferrals.t.sol, packages/contracts/test/AntseedStatsV2.t.sol, packages/contracts/test/RegisterAttributionMinters.t.sol, packages/contracts/emissions/AntseedAttributionUsage.sol, packages/contracts/emissions/AntseedEpochShareRewards.sol, packages/contracts/emissions/AntseedClientRewards.sol, packages/contracts/rewards/AntseedReferrals.sol, packages/contracts/stats/AntseedStatsV2.sol, packages/contracts/script/RegisterAttributionMinters.s.sol, packages/contracts/test/mocks/EmissionsGateMock.sol, packages/contracts/test/mocks/MockERC8004Registry.sol, packages/node/tests/buyer-identity-attribution.test.ts, packages/node/tests/buyer-payment-manager.test.ts, packages/node/tests/client-rewards-client.test.ts, packages/node/tests/file-lock-no-links.test.ts, packages/node/tests/file-lock.test.ts, packages/node/tests/free-usage-lifecycle.test.ts, packages/node/tests/invites.test.ts, packages/node/tests/referral-state.test.ts, packages/node/tests/seller-cooperative-close.test.ts, packages/node/src/payments/referral-state.ts, packages/node/src/utils/file-lock.ts, packages/node/src/payments/invites.ts, packages/node/src/payments/evm/client-rewards-client.ts, packages/node/src/payments/evm/referrals-client.ts, apps/desktop/src/main/referrals.ts, apps/desktop/src/main/ipc/payments.ts, apps/desktop/src/main/payments/credits.ts, apps/desktop/src/main/payments/buyer-channels.ts, apps/desktop/src/main/payments/rewards-summary.ts, apps/desktop/src/main/payments/read-cache.ts, apps/desktop/src/main/staking/buyer-rewards.ts, apps/desktop/src/main/staking/configuration.ts, apps/cli/src/cli/commands/buyer/start.ts, apps/cli/src/cli/commands/referral.ts, apps/cli/src/cli/referral-state.ts, apps/cli/src/cli/payment-utils.ts, apps/ants/src/service/referrals.ts, apps/ants/src/service/builders.ts, apps/ants/src/service/context.ts, apps/ants/src/service/indexer.ts, apps/ants/src/routes.ts, packages/contracts/script/DeployAttributionUsage.s.sol, packages/contracts/script/DeployClientRewards.s.sol, packages/contracts/script/DeployReferrals.s.sol, packages/contracts/script/DeployStatsV2.s.sol, packages/node/src/payments/evm/identity-client.ts, packages/node/src/payments/chain-config.ts, packages/node/src/payments/index.ts, packages/node/src/payments/seller-payment-manager.ts, packages/node/src/buyer-identity-context.ts, packages/node/src/index.ts, packages/node/src/node.ts, packages/buyer-core/src/attribution.test.ts, packages/buyer-core/src/buyer-free-usage-manager.ts, packages/buyer-core/src/buyer-payment-manager.ts, packages/buyer-core/src/channel-usage-accounting.ts, packages/buyer-core/src/base-evm-client.ts, apps/cli/src/config/loader.ts
Reviews (11): Last reviewed commit: feat(payments): Bind referrals through invites and attribute (18426389b6) | requested by @kotevcode | Tag @reviewant with "re-review" to run again
Summary
An invite-only, two-sided referral program, plus per-client recognized-usage attribution (the builders program). Both ride on the settlement metadata buyers already sign. Specified in AIP-6. Supersedes #1015.
Metadata tail (
packages/protocol): five words after the services array in SpendingAuth and FreeUsage metadata:clientId, then an invite'sissuedEpoch,indexand EIP-2098(r, vs). Whenrandvsare zero there is no invite. A bare referrer address binds nothing. Metadata versions are unchanged, and the encoding matches the contract test vectors byte for byte.AntseedStatsV2: decodes the tail, forwards the client id toAntseedAttributionUsageand the invite toAntseedReferrals, and emitsInviteForwarded. Every forward is wrapped in try/catch, so a rejected invite never blocks a settlement.AntseedAttributionUsage: credits recognized weighted points (fromAntseedUsageAccounting, never volume) per epoch to:It also records each buyer's first-usage epoch.
AntseedReferrals(emissions-gate controller):Invite(issuedEpoch, index). The referrer is recovered from the signature.previewInvite: returns the failure reason for an invite.AntseedClientRewards(emissions-gate controller): pays the builders bucket pro rata to client points, to the agent's owner.Apps: referral lists, invite counts, payable amounts and binding status come from Antscan (antscan#11), not RPC log scans. They are hidden when no explorer is configured.
antseed referral invite | redeem | status. The buyer daemon carries a pending invite until it binds.antseed://invite/<invite>deep link; "Invite someone" with the remaining count; invite bonus with Claim; per-buyer invite table./invite/<invite>landing page and a Referrals and Invites guide. The CLI reference, FAQ and recognized-usage docs are updated too.Removed: the earlier network-matched attribution: the download-proxy match and visit endpoints with their KV store and secret, the website
?ref=capture, and the Desktop confirmation popup.Deployment
DeployStatsV2(writers: Channels and FreeUsage), thenAntseedRegistry.setStats(statsV2).DeployAttributionUsage, thenDeployReferralsandDeployClientRewardsagainst it.statsV2.setReferrals,statsV2.setAttributionUsageandledger.setReferrals.setMinter. Their bucket shares are an open issue in AIP-6.referralsAddress,clientRewardsAddressandclientAgentIds, and set the website'sREFERRALS_ADDRESS.Antscan deploys once the contracts are on Base (blue/green schema).
No mainnet addresses are added here.
Test Plan
testFork_m001BaselineMatchesCanonicalDeployment.pnpm run typecheckis clean across the repo, anddocusaurus buildsucceeds.