Changelog
Versions 2.7.1 to 2.7.7 come from TokenTable's tokentable-evm repository, and only changes that affect the Unlocker suite are listed. For network deployments, see the Unlocker product page. Version 2.7.0 is the last version published to npm as @ethsign/tokentable-evm-contracts.
2.7.7 (5/12/2026)¶
TTUBeaconManager,TTUDeployer,TTUDeployerDuplicateandTTFeeCollectorare now deployed with CREATE3 and initialized in the same transaction. Previously, another account could callinitializefirst and take ownership of a newly deployed contract.- Fixed
TTUnlockerExternalFT._createActualsilently overwriting an existing actual; it now reverts withActualExists - Fixed
TTUMulticallDeployer.multicallDeployignoring afalsereturn value from the project token'stransferFrom; it now usessafeTransferFrom TTUnlocker.disableHooknow calls the hook before removing it, like the otherdisable*functions- Bumped the Unlocker suite (
TTUnlocker,TTUnlockerNative,TTUnlockerExternalFT,TTUDeployer,TTUMulticallDeployer,TTUDeployerDuplicate,TTUBeaconManager,TTFutureToken,TTTrackerToken) from 2.7.5 to 2.7.7 andTTFeeCollectorfrom 2.7.2 to 2.7.3. No 2.7.6 release was published.
2.7.5 (12/18/2025 per CHANGELOG)¶
- Added an EVM version suffix to
version()strings (for example2.7.5-TTUnlocker-cancun), configured centrally inVersion.sol - Bumped the Unlocker suite from 2.7.4 to 2.7.5 and
TTFeeCollectorfrom 2.7.1 to 2.7.2
2.7.4 (11/5/2025)¶
- Refactored the
ITTUBeaconManagerinterface - Fixed beacon version compatibility issues
2.7.3¶
- Updated the Ethereum Sepolia Unlocker deployment and subgraph
- In the contract source, the FutureToken transfer switch (
enableTransfer) shipped with this version, not with 2.7.2
2.7.2¶
- Added a FutureToken transferability switch
- Added
isTransferable()toITTFutureToken - Bumped
TTUnlocker,TTFutureToken,TTTrackerToken,TTUDeployer,TTUMulticallDeployerandTTUDeployerDuplicatefor the interface change
2.7.1¶
- First Unlocker version from the
tokentable-evmrepository. Contracts and interfaces were renamed (for exampleITokenTableUnlockerV2toITTUnlockerandTTUDeployerLitetoTTUDeployer), and OpenZeppelin was replaced with Solady, including Solady'sOwnable. See Unlocker on EVM for the name mapping. - Added Shanghai EVM version support for X Layer deployments
2.7.0 (5/11/2025, a215d3f)¶
- Added emergency withdrawals, which let project owners withdraw permanently deposited tokens through a pseudo-multisig mechanism with Team TokenTable
- Added a default fee and fee token to FeeCollector
- Fixed a validation bug for presets in Unlocker
- Fixed an issue with delegate.xyz
- Fixed issues in TrackerToken
- Fixed fee calculation logic when the claim amount is 0
- Updated CustomERC2771Context's base class
- Optimized precision calculation in
Unlocker::simulateAmountClaimable - Replaced
FutureToken::getClaimInfo
2.6.1 (3/3/2025, 71cc316)¶
- Added the TTUMulticallDeployer contract for batch deployment
- Fixed a deployer bug that forced FutureTokens to be untransferable when the instance was deployed as a clone
2.6.0 (12/27/2024, 4b6f605)¶
- Added support for external NFT as FutureToken (experimental)
- Added delegate.xyz support to manage delegate claims
- Added distinctive versioning to all extensions
- Added ETH support in FeeCollector
- Fixed subgraph issues that could cause a crash
- Fixed issues in the deployer
- Fixed an issue in Unlocker that prevented upgrades
- Removed deprecated and mock source files
2.5.7 (2/14/2024, 1422afd)¶
- Fixed edge cases found in the Nethermind audit of Cairo TokenTable
2.5.6 (1/26/2024, 3aede9e)¶
- Optimized the
ITTHookinterface - Added
isCreateableto close a loophole that let founders drain the pool even whenisCancelableandisWithdrawableare false - Allowed multiple claim delegates instead of one
2.5.5 (12/29/2023, a112d20)¶
- Refactored storage to use upgrade-safe namespaces
- Fixed an issue that let recipients bypass skipped amounts
- Revised use of the
PresetDoesNotExisterror - Made selector syntax more consistent
- Optimized variable initialization
- Added support for native tokens in the Unlocker
2.5.4 (12/26/2023, 28f1a51)¶
- Added
bytes memory extraDatato all functions
2.5.3 (12/22/2023, cad7f0e)¶
simulateAmountClaimablenow returns 0 instead of reverting in some casescalculateAmountClaimablenow checks that the givenactualIdexists- Fixed places that used
msg.datainstead of_msgData()
2.5.2 (12/21/2023, f5ed369)¶
- Added
recipientIdsto thecreateActualsfunction and theActualCreatedevent
2.5.1 (12/20/2023, 373e52a)¶
- Updated the
ActualCreatedevent
2.5.0 (12/19/2023, b7a0171)¶
- Switched from one token pool per Actual to a shared pool for all Actuals
- Fixed an issue in claimable calculation
- Added an option for the founder to cancel completely
- Added delegate claim
- Added
simulateAmountClaimable