chore(bindings): regen v0.17.0 against main#137
Merged
Conversation
Regenerates tnt-core-bindings + fixtures against current main (f64a4e4) and bumps to v0.17.0. Covers PRs #133, #134, #136 since the v0.16.0 release pin. Binding-surface delta is small: ITanglePaymentsInternal gains distributeBillWithKeeper(BillDistribution) selector 0x68cdf660 — the diamond self-call used by billSubscription to hand per-operator weights computed during accrual directly to the distribution facet. Every other facet selector still routes to the Tangle diamond unchanged. Most of the behavioral changes (RFQ requester binding + freshness + cumulative-TTL caps, multi-asset bill weighting, EIP-170 facet split, O(1) operator stake aggregate, VPM share-pool slashing, claimRewardsAll griefing isolation) are observable to indexers via events emitted from the facet contracts. Those event ABIs (OperatorPoolSlashed, RewardsClaimSkipped, KeeperRebateAccrued, TntPaymentDiscountApplied, StakerShareRefundedToEscrow, SubscriptionBaseline*, SubscriptionBill*) are not surfaced on the ITangle / ITangleFull interfaces and therefore are not present in the generated bindings; the changelog enumerates them so indexer consumers can decode by topic hash against the facet source ABIs. Cargo.lock is updated to 0.17.0 — the lockfile on main was still pinning 0.15.0 (the v0.16.0 release commit did not refresh it). DO NOT publish to crates.io until: dApp sync verified green, indexer schema PR merged, at least one downstream blueprint compiles green.
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.
Regenerates
tnt-core-bindings+fixturesagainst currentmain(f64a4e4) and bumps to v0.17.0. Covers PRs #133, #134, #136 since the v0.16.0 release pin.Summary
Diamond ABI from the proxy's perspective is unchanged — every external selector still routes to
Tangle. The only binding-level surface addition is one new diamond self-call onITanglePaymentsInternal.Added (binding surface)
ITanglePaymentsInternal.distributeBillWithKeeper((uint64,uint64,address,uint256,address[],uint256[],uint256,bool,address))selector0x68cdf660. Diamond self-call used bybillSubscriptionto hand per-operator weights computed during accrual directly to the distribution facet, so the keeper rebate and per-asset stake-time weighting agree across the bill and the distribute steps.ITanglePaymentsInternal.BillDistributionstruct exposing the self-call payload shape:serviceId,blueprintId,token,amount,operators,weights,totalWeight,hasSecurityCommitments,keeper.Behavior changes (no binding ABI delta; same selectors, new semantics)
JobQuoteRequesterMismatch,QuoteTimestampStale,CumulativeTtlExceeded.Σ_op Σ_asset (cumStakeSeconds_delta × commitmentBps × price)across every asset the service requires, replacing the bond-asset-only TWAP. Per-asset fallback preserves legacy semantics for services without commitments.claimRewardsAllis griefing-resilient: a single token whosetransferreverts is skipped via self-call try/catch andRewardsClaimSkipped(account, token)is emitted; remaining tokens still claim. Single-token paths unchanged.ValidatorPodManager._slash(operator, slashBps)is O(1) regardless of delegator count via per-operatorDelegationPool { totalAssets, totalShares }with virtual-share inflation defenses. Per-delegatorDelegatorSlashedloop replaced by a singleOperatorPoolSlashed(operator, slashAmount, newTotalAssets, totalShares)._getOperatorDelegatedStakeForAssetis a single SLOAD; running aggregate updated at every pool-totalAssets mutation. Was O(B) per blueprint, on every TWAP accrual.Storage layout (no slot reordering)
DelegationStorage.__gap44 → 43 to make room for_operatorDelegatedAggregate. All pre-existing slots preserved.ValidatorPodManagerappends_operatorDelegationPoolsand_delegationSharesat the end; no existing slot reordered.Facet split
TanglePaymentsFacet/TangleServicesFacet/TanglePaymentsDistributionFaceteach fit under EIP-170 now (24,160 / 21,741 / 18,144 runtime bytes).Paymentssplit intoPaymentsCore/PaymentsEscrow/PaymentsBilling/PaymentsDistribution/PaymentsRewards.ServiceValidationLib(~3.8 KB) is linked at deploy time. Same selectors, routed to different physical facet contracts.Facet-only events (decode by topic against facet ABIs)
These live on
Payments*/ValidatorPodManagerand are NOT surfaced onITangle*interfaces, so they are not in the generated bindings. Indexers should decode by topic hash from the facet source ABIs:OperatorPoolSlashed(address operator, uint256 slashAmount, uint256 newTotalAssets, uint256 totalShares)RewardsClaimSkipped(address account, address token)KeeperRebateAccrued(uint64 serviceId, address keeper, address token, uint256 amount)TntPaymentDiscountApplied(uint64 serviceId, address recipient, address token, uint256 amount)StakerShareRefundedToEscrow(uint64 serviceId, address operator, address token, uint256 amount, bytes reason)SubscriptionBaselineInitialized(uint64 serviceId, uint256 baselineStake, uint256 operatorCount)SubscriptionBillSkippedNoOperators(uint64 serviceId, uint64 period)SubscriptionBillAdjustedByManager(uint64 serviceId, uint256 preAdjustmentAmount, uint256 adjustedAmount, uint16 adjustmentBps)Files
15 files, +788 / -22:
bindings/TNT_CORE_VERSION→f64a4e4d4db761b8a5f2aafc3e87ed588797f88cbindings/Cargo.toml,fixtures/Cargo.toml,Cargo.lock→0.17.0(lockfile on main was still pinning0.15.0; v0.16.0 release commit did not refresh it)bindings/CHANGELOG.md— full v0.17.0 entryITanglePaymentsInternalhas a.abidelta —distributeBillWithKeeperadded; the others differ only in solc metadata)i_tangle_payments_internal.rs+664 lines forBillDistribution+ new call;multi_asset_delegation.rsandoperator_status_registry.rsare bytecode-hex-only deltas from solc metadata).DO NOT publish until
tnt-core-bindings = "0.17.0"Test plan
cargo build -p tnt-core-bindingsgreen (verified locally)cargo check -p tnt-core-fixturesgreen (verified locally)