FORTLOCKS V1

PERMANENT LIQUIDITY LOCKING.

Permanent Uniswap V3 liquidity locking. Fees remain claimable. No admin. No upgrades. No unlock mechanism.
V1 LIVE · SOURCE VERIFIED · ETHEREUM MAINNET

Once a Uniswap V3 position is locked in FortLocks V1, there is no mechanism to release it.

Once a canonical Uniswap V3 position NFT has been successfully locked in a verified FortLocks V1 contract, FortLocks V1 provides no mechanism to withdraw, transfer, approve, decrease, burn, migrate, recover, or otherwise release that position, and no administrator or upgrade authority exists that can add such a mechanism later.
FortLocks' strength is in its simplicity. It has one purpose, minimal moving parts and simple rules. The protocol is easy to understand and easy to verify.
01 — LOCK
A canonical Uniswap V3 position NFT is transferred to and held by FortLocks.
02 — PERMANENT
There is no function capable of withdrawing, transferring, decreasing, burning, migrating or otherwise releasing the locked position.
03 — FEES CONTINUE
LP fees remain claimable after the position is locked and are distributed according to the immutable fee rules.
04 — NO ADMIN
There is no owner, administrator or upgrade authority capable of changing the rules or creating an unlock mechanism.

Nothing complicated. Very generous.

0 %
ON LIQUIDITY PRINCIPAL
100 %
PRE-LOCK FEES TO BENEFICIARY
99.1 %
POST-LOCK FEES TO BENEFICIARY
0.9 %
POST-LOCK FEES TO FORTLOCKS
∞
LOCK DURATION
Any pool trading fees already owed to the position when it is locked are collected directly to the beneficiary, with no FortLocks fee. FortLocks takes no cut of the principal position. After the lock, 99.1% of collected LP fees goes to the beneficiary and 0.9% to FortLocks.

The code you can read is the code that is running.

FortLocks V1 is open source and independently verifiable against the deployed Ethereum contract. The frozen V1 source is identified by its Git commit and release tag, and the deployed runtime bytecode can be checked against that published implementation.
GitHub source
↓
V1.0.0 · 489b53b…
↓
Runtime bytecode
↓
Ethereum contract 0x07AE…DD4F
↓
✓ MATCH

Before deploying FortLocks V1, we tried to break it and we could not.

The test suite was built around failure cases, boundary conditions and attempts to violate the protocol's core guarantees — particularly permanence, fee accounting and control of the locked position.
38/38
UNIT & FUZZ TESTS
9/9
MAINNET-FORK TESTS
47/47
FULL LOCAL SUITE
SLITHER
STATIC ANALYSIS
Test coverage included: unauthorized NFT transfers, direct-transfer bypass attempts, repeated and tiny fee collections, cumulative fee rounding, pre-existing owed tokens, failed token transfers and atomic rollback, fee-on-transfer behaviour, and ownership and permanence checks.
The complete test suite is published on GitHub. Anyone can inspect the tests, run them independently, modify them, add new attack cases and verify the results for themselves.
VIEW TEST SUITE ON GITHUB

NFT #1369638. A real Uniswap V3 position. Permanently locked in the official FortLocks V1 deployment.

● PERMANENTLY LOCKED — VERIFIED
NETWORK
Ethereum Mainnet · Chain ID 1
TOKEN ID
#1369638
Lock Transaction
VIEW ON ETHERSCAN
Position NFT
VIEW ON ETHERSCAN

Interact directly with the contracts.

FortLocks has no web application. This website does not connect to your wallet, construct transactions, hold keys, or sit between you and the protocols.
There are two different types of operation that you can perform: lock a position and collect fees.
LOCK A POSITION
To lock a position, two transactions are required.
First, approve the FortLocks V1 contract to receive your Uniswap V3 position NFT. Then call the FortLocks V1 lock function to permanently lock the position and set its beneficiary.
TRANSACTION 01 — APPROVE THE POSITION
Open the canonical Uniswap V3 Position Manager on Etherscan with the button below.
Connect your wallet using the Connect Wallet button.
Click on 1. approve.
In the to (address) field, enter the FortLocks V1 contract address:
0x07AEbCE1f6DC40288E9AeE447E57B0289702DD4F
In the tokenId (uint256) field, enter the token ID of the Uniswap V3 position NFT you want to lock.
Click on the Write button and approve the transaction.
THEN ↓
TRANSACTION 02 — LOCK THE POSITION
First, ensure that the approval transaction has gone through. Open the FortLocks V1 contract on Etherscan with the button below.
Connect your wallet using the Connect Wallet button.
Click on 2. lock.
In the tokenId (uint256) field, enter the token ID of the Uniswap V3 position NFT you approved in Transaction 01.
In the beneficiary (address) field, enter the address that will permanently receive the position's LP fees.
Check the beneficiary address carefully. It cannot be changed later. The position cannot be unlocked.
Click on the Write button and approve the transaction.
COLLECT FEES
LP fees can be collected from a locked position at any time.
Open the FortLocks V1 contract on Etherscan with the button below.
Click on 1. collectFees.
In the tokenId (uint256) field, enter the token ID of the locked Uniswap V3 position NFT.
Click on the Write button and approve the transaction.
Anyone may call collectFees. The caller cannot choose or change the recipients. Collected fees are distributed automatically according to the immutable fee rules.
TOKEN COMPATIBILITY
FortLocks V1 is designed for Uniswap V3 positions containing tokens with standard ERC-20 transfer behaviour. Tokens with non-standard mechanics — such as transfer taxes, rebasing, blacklisting or other transfer restrictions — may not behave as expected and are not specifically supported.
The permanence of a successfully locked position does not depend on the behaviour of its underlying tokens.
The website is optional. The lock isn't.