Skip to content

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, TTUDeployerDuplicate and TTFeeCollector are now deployed with CREATE3 and initialized in the same transaction. Previously, another account could call initialize first and take ownership of a newly deployed contract.
  • Fixed TTUnlockerExternalFT._createActual silently overwriting an existing actual; it now reverts with ActualExists
  • Fixed TTUMulticallDeployer.multicallDeploy ignoring a false return value from the project token's transferFrom; it now uses safeTransferFrom
  • TTUnlocker.disableHook now calls the hook before removing it, like the other disable* functions
  • Bumped the Unlocker suite (TTUnlocker, TTUnlockerNative, TTUnlockerExternalFT, TTUDeployer, TTUMulticallDeployer, TTUDeployerDuplicate, TTUBeaconManager, TTFutureToken, TTTrackerToken) from 2.7.5 to 2.7.7 and TTFeeCollector from 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 example 2.7.5-TTUnlocker-cancun), configured centrally in Version.sol
  • Bumped the Unlocker suite from 2.7.4 to 2.7.5 and TTFeeCollector from 2.7.1 to 2.7.2

2.7.4 (11/5/2025)

  • Refactored the ITTUBeaconManager interface
  • 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() to ITTFutureToken
  • Bumped TTUnlocker, TTFutureToken, TTTrackerToken, TTUDeployer, TTUMulticallDeployer and TTUDeployerDuplicate for the interface change

2.7.1

  • First Unlocker version from the tokentable-evm repository. Contracts and interfaces were renamed (for example ITokenTableUnlockerV2 to ITTUnlocker and TTUDeployerLite to TTUDeployer), and OpenZeppelin was replaced with Solady, including Solady's Ownable. 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 ITTHook interface
  • Added isCreateable to close a loophole that let founders drain the pool even when isCancelable and isWithdrawable are 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 PresetDoesNotExist error
  • 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 extraData to all functions

2.5.3 (12/22/2023, cad7f0e)

  • simulateAmountClaimable now returns 0 instead of reverting in some cases
  • calculateAmountClaimable now checks that the given actualId exists
  • Fixed places that used msg.data instead of _msgData()

2.5.2 (12/21/2023, f5ed369)

  • Added recipientIds to the createActuals function and the ActualCreated event

2.5.1 (12/20/2023, 373e52a)

  • Updated the ActualCreated event

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