Skip to content

Fix: Mint from the larger supply, count every mint allowance grant, init name check, remove high-throughput leftovers - #942

Merged
dzikowski merged 5 commits into
mainfrom
fix/hardening-followups-4
Oct 30, 2026
Merged

dzikowski merged 5 commits into
mainfrom
fix/hardening-followups-4

Conversation

@dzikowski

@dzikowski dzikowski commented Oct 30, 2026 •

Copy link
Copy Markdown
Collaborator
  • Mint supply. A mint now starts from the larger of the token class total and the supply recorded in the mint requests (readMintSupply), saves it on the token class, then adds its quantity. A class minted through the removed high-throughput flow can have a total behind its request records; without this a new NFT could reuse an existing instance number. FetchTokenClassesWithSupply reports the same number.
  • Mint allowance requests in one transaction. Grants to the same user in one transaction share a request key, whoever grants them. A later grant now adds its quantity to the request already written instead of overwriting it, so the allowance supply counts every grant. CreateVestingToken relies on several grants to the admin in one transaction, so a later grant is accumulated rather than rejected.
  • init. The project name is derived and checked before the command asks to overwrite or copies the template, so an invalid path such as . leaves no files behind.
  • Cleanup. Removed HighThroughputMintTokenDto, FulfillMintDto, the HighThroughputMint* fee gate codes, the unused fulfillment helpers on mint requests, and the outdated TransferTokenDto description.
  • Multiplicative fee. A multiplicative tier now charges baseQuantity × ((chargeableUses + 1) × feeAccelerationRate), so the threshold use costs baseQuantity × feeAccelerationRate and each later use one step more. No fee definition on mainnet uses this type (checked in query-api allChainObjects, index GCFD).

dzikowski and others added 5 commits October 30, 2026 12:40
…uests

A token class minted through the removed high-throughput flow can have a total behind its mint request
records. A mint now saves the larger of the two on the token class before adding its quantity, so a new
NFT never reuses an existing instance number. The supply read uses the same larger number.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Mint allowance requests to the same user in one transaction share a key, whoever grants them. The second
grant now adds its quantity to the request already written instead of overwriting it.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Remove HighThroughputMintTokenDto, FulfillMintDto, the HighThroughputMint fee gate codes, the unused
fulfillment helpers on mint requests, and the outdated TransferTokenDto description.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
A multiplicative tier now charges baseQuantity * ((chargeableUses + 1) * feeAccelerationRate), so the
use at the threshold costs baseQuantity * feeAccelerationRate and each later use costs one step more.
No fee definition on mainnet uses the multiplicative type.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
@dzikowski
dzikowski merged commit d315368 into main Oct 30, 2026
13 checks passed
@dzikowski
dzikowski deleted the fix/hardening-followups-4 branch October 30, 2026 12:23
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.

1 participant