GoPlus SafeToken Locker
GoPlus SafeToken Locker provides flexible lock-up periods, rewards collection, and broad compatibility with major DEX platforms to protect investor interests and ensure project commitment.
Token Locker
Supported Chains and Contract Addresses
Chain | Locker Address |
---|---|
Ethereum | 0xF17A08A7d41F53B24AD07Eb322CBBdA2ebdeC04b |
BNB Chain | 0xF17A08A7d41F53B24AD07Eb322CBBdA2ebdeC04b |
Base | 0xF17A08A7d41F53B24AD07Eb322CBBdA2ebdeC04b |
Arbitrum | 0xF17A08A7d41F53B24AD07Eb322CBBdA2ebdeC04b |
Morph | 0xF17A08A7d41F53B24AD07Eb322CBBdA2ebdeC04b |
Manta | 0xF17A08A7d41F53B24AD07Eb322CBBdA2ebdeC04b |
Gravity | 0xF17A08A7d41F53B24AD07Eb322CBBdA2ebdeC04b |
Abstract | 0x10674043e2445d89b77858E637b5e9070412D95e |
Optimism | 0xF17A08A7d41F53B24AD07Eb322CBBdA2ebdeC04b |
Avalanche | 0xF17A08A7d41F53B24AD07Eb322CBBdA2ebdeC04b |
Polygon | 0xF17A08A7d41F53B24AD07Eb322CBBdA2ebdeC04b |
UniV3LPLocker
Supported Chains and Contract Addresses
Chain | Locker Address |
---|---|
Ethereum | 0x25c9C4B56E820e0DEA438b145284F02D9Ca9Bd52 |
BNB Chain | 0x25c9C4B56E820e0DEA438b145284F02D9Ca9Bd52 |
Base | 0x25c9C4B56E820e0DEA438b145284F02D9Ca9Bd52 |
Arbitrum | 0x25c9C4B56E820e0DEA438b145284F02D9Ca9Bd52 |
Morph | 0x25c9C4B56E820e0DEA438b145284F02D9Ca9Bd52 |
Manta | 0x25c9C4B56E820e0DEA438b145284F02D9Ca9Bd52 |
Gravity | 0xCb07c2fcd64c71cDb7f77a880662435f5F790b77 |
Abstract | 0xf7709322F11e86B7433271496bFD2D7A369AF3ff |
Optimism | 0x25c9C4B56E820e0DEA438b145284F02D9Ca9Bd52 |
Avalanche | 0x25c9C4B56E820e0DEA438b145284F02D9Ca9Bd52 |
Polygon | 0x25c9C4B56E820e0DEA438b145284F02D9Ca9Bd52 |
UniV4LPLocker
For UniV4 LP Locker usage, please check: UniV4LPLocker.
For usage
Token Locker
TokenLocker supports locking both standard tokens and LP tokens.
Fee Structures
TokenLocker supports three fee structures, charged during lock and update operations:
Ethereum Locker
Name | Token Type | LP Fee | Lock Fee |
---|---|---|---|
TOKEN | token | 0 | 0.08 ETH |
LP_DEFAULT | lp-token | 0 | 0.08 ETH |
LP_ONLY | lp-token | 0.6% | 0 ETH |
LP_AND_ETH | lp-token | 0.3% | 0.04 ETH |
BNB Chain Locker
Name | Token Type | LP Fee | Lock Fee |
---|---|---|---|
TOKEN | token | 0 | 0.12 BNB |
LP_DEFAULT | lp-token | 0 | 0.12 BNB |
LP_ONLY | lp-token | 0.5% | 0 BNB |
LP_AND_ETH | lp-token | 0.25% | 0.06 BNB |
Base & Morph & Abstract & Optimism Locker
Name | Token Type | LP Fee | Lock Fee |
---|---|---|---|
TOKEN | token | 0 | 0.02 ETH |
LP_DEFAULT | lp-token | 0 | 0.02 ETH |
LP_ONLY | lp-token | 0.6% | 0 ETH |
LP_AND_ETH | lp-token | 0.3% | 0.01 ETH |
Arbitrum Locker
Name | Token Type | LP Fee | Lock Fee |
---|---|---|---|
TOKEN | token | 0 | 0.04 ETH |
LP_DEFAULT | lp-token | 0 | 0.04 ETH |
LP_ONLY | lp-token | 0.6% | 0 ETH |
LP_AND_ETH | lp-token | 0.3% | 0.02 ETH |
Gravity Locker
Name | Token Type | LP Fee | Lock Fee |
---|---|---|---|
TOKEN | token | 0 | 1000 G |
LP_DEFAULT | lp-token | 0 | 1000 G |
LP_ONLY | lp-token | 0.6% | 0 G |
LP_AND_ETH | lp-token | 0.3% | 500 G |
Avalanche Locker
Name | Token Type | LP Fee | Lock Fee |
---|---|---|---|
TOKEN | token | 0 | 0.8 AVAX |
LP_DEFAULT | lp-token | 0 | 0.8 AVAX |
LP_ONLY | lp-token | 0.6% | 0 G |
LP_AND_ETH | lp-token | 0.3% | 0.4 AVAX |
Polygon Locker
Name | Token Type | LP Fee | Lock Fee |
---|---|---|---|
TOKEN | token | 0 | 80 POL |
LP_DEFAULT | lp-token | 0 | 80 POL |
LP_ONLY | lp-token | 0.6% | 0 G |
LP_AND_ETH | lp-token | 0.3% | 40 POL |
UniV3LPLocker
UniV3LPLocker is specifically designed for locking Uniswap V3 LP tokens.
Fee Structures
Name | LP Fee | Collect Fee | Lock Fee |
---|---|---|---|
DEFAULT | 0.4% | 1.6% | 0 ETH |
LVP | 0.64% | 0.8% | 0 ETH |
LLP | 0.24% | 2.8% | 0 ETH |
We are excited to announce that a web version of our SafeToken Locker will be launching soon, providing a user-friendly interface for direct usage. Stay tuned for more details, which will be released shortly.
Functions Write
TokenLocker
Lock token or uniswap v2 lp token
function lock(
address token_,
string memory feeName_,
address owner_,
uint256 amount_,
uint256 endTime_
) external payable override nonReentrant returns (uint256 lockId);
VestingLock
struct VestingLockParams {
address token;
uint24 tgeBps;
uint24 cycleBps;
address owner;
uint256 amount;
uint256 tgeTime;
uint256 cycle;
}
function vestingLock(
VestingLockParams memory params,
string memory feeName_
) external payable override nonReentrant returns (uint256 lockId);
Unlock
function unlock(uint256 lockId_) external;
UniV3LPLocker
Lock uniswap v3 lp
function lock(
INonfungiblePositionManager nftManager_,
uint256 nftId_,
address owner_,
address collector_,
uint256 endTime_,
string memory feeName_
) external payable returns (uint256 lockId);
Relock
function relock(uint256 lockId_, uint256 endTime_) external;
Unlock
function unlock(uint256 lockId_) external;
Collect liquidity provider rewards
function collect(
uint256 lockId_,
address recipient_,
uint128 amount0Max_,
uint128 amount1Max_
)
For data integration
There are two methods to integrate and query data from the SafeToken Locker:
Direct On-Chain Query
To query data directly from the blockchain, you can use the following contract functions:
TokenLocker
function lock(
address token_,
string memory feeName_,
address owner_,
uint256 amount_,
uint256 endTime_
) external payable override nonReentrant returns (uint256 lockId);
Query Lock Information
function locks(
uint256 lockId
) external view returns (LockInfo memory info);
Query User Locks
function getUserNormalLocks(
address user
) external view returns (uint256\[] memory lockIds);
function getUserLpLocks(
address user
) external view returns (uint256\[] memory lockIds);
Query Token Locks
function getTokenLocks(
address token
) external view returns (uint256\[] memory lockIds);
Query Cumulative Lock Info
function cumulativeInfos(
address token
) external view returns (CumulativeLockInfo memory info);
UniV3LPLocker
function lock(
INonfungiblePositionManager nftManager_,
uint256 nftId_,
address owner_,
address collector_,
uint256 endTime_,
string memory feeName_
) external payable returns (uint256 lockId);
Query Lock Information
function locks(
uint256 lockId
) external view returns (LockInfo memory info);
Query User Locks
function getUserLocks(
address user
) external view returns(uint256[] memory lockIds);
GoPlus API Query
For easier integration, you can use API to query lock data directly.
TokenLocker
UniV3LPLocker
If you have any questions regarding access, please contact [email protected]