WENBlocks
  • Getting Started
    • Overview
      • Technical Architecture
    • Key Features
  • Staking
    • Overview
    • Creating a Stake
    • Withdrawing the Stake
    • Claiming Rewards
  • Liquidity Program
    • How It Works
  • WNT
    • WNT — The Engine of the WEN Ecosystem
  • Airdrops
    • Airdrop Schedule
    • Server Management
    • Penalty Structure
    • How It Works
    • Example
  • Smart Contracts
  • Security
    • Overview
    • Internal Audits
    • External Audits
    • AI Audits
      • Grok
  • CODE
    • WENBlocksManager.sol
    • wnmContract.sol
    • wblkToken.sol
    • wuniContract.sol
    • wntToken.sol
    • syncnode.py
    • airdropGenerator.js
    • dayTrigger.js
  • Conclusion
    • Conclusion
  • Socials
    • Links
Powered by GitBook
On this page
  • Initial Token Supply and Liquidity Bootstrapping
  • Slippage Tolerance
  • How Penalties Feed the Liquidity Pool
  • First Airdrop (Week 1):
  • Subsequent Airdrops (Week 2+):
  • Uniswap V2 Integration
  • Claiming Tokens and Providing Liqudity
  • Liquidity Pairing Options
  • LP Token Vesting Schedule
  • Benefits of Uniswap Integration
  • Example Transaction
  1. Liquidity Program

How It Works

PreviousClaiming RewardsNextWNT — The Engine of the WEN Ecosystem

Last updated 26 days ago

The WENBlocks Liquidity Program allows users to obtain free WNM, WBLK, WNT or WUNI tokens by providing liquidity through , using the unclaimed airdrop penalties accumulated in the system.

Initial Token Supply and Liquidity Bootstrapping

The protocol is initialized with specific liquidity allocations:

  • WNT Initial Liquidity: 10,000,000 WNT (10_000_000 * 1e18) are allocated for the liquidity program at deployment

  • Initial Token Minting: Each token contract mints 2 tokens (2e18) to the deployer for creating initial liquidity pairs

  • Dead Wallet: Tokens may be burned by sending to 0x000000000000000000000000000000000000dEaD

Slippage Tolerance

The protocol uses the following slippage tolerances for liquidity operations:

  • ETH liquidity: 2% slippage tolerance (98% minimum)

  • XEN liquidity: 2% slippage tolerance (98% minimum)

How Penalties Feed the Liquidity Pool

Unclaimed airdrops incur penalties starting on day 8 after the airdrop is initiated. The distribution of these penalties varies:

First Airdrop (Week 1):

if (weekId == 1 && (tmptaxedWNM > 0 || tmptaxedWBLK > 0 || tmptaxedWUNI > 0)) {
    // 60% burned by sending to dead wallet
    tWNM.mint(deadWallet, tmptaxedWNM * 6 / 10);
    tWBLK.mint(deadWallet, tmptaxedWBLK * 6 / 10);
    tWUNI.mint(deadWallet, tmptaxedWUNI * 6 / 10);
    
    // 40% distributed to stakers
    wnmContract.assignExternalStakingRewards(tmptaxedWNM * 4 / 10, tmptaxedWBLK * 4 / 10, tmptaxedWUNI * 4 / 10);
}

Subsequent Airdrops (Week 2+):

else if (tmptaxedWNM > 0 || tmptaxedWBLK > 0 || tmptaxedWUNI > 0) {
    // 100% distributed to stakers
    wnmContract.assignExternalStakingRewards(tmptaxedWNM, tmptaxedWBLK, tmptaxedWUNI);
}        

In both cases, the taxed amounts are added to the liqudiity pools:

liquidityWNM += tmptaxedWNM;
liquidityWBLK += tmptaxedWBLK;
liquidityWUNI += tmptaxedWUNI;

Uniswap V2 Integration

The WENBlocks system uses Uniswap V2 for liquidity provisioning, as shown by the router and factory interactions in the contract:

// Uniswap interfaces
interface IUniswapV2Factory {
    function getPair(address tokenA, address tokenB) external view returns (address pair);
}

interface IUniswapV2Router {
    function factory() external view returns (address);

    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
}

The system creates standard Uniswap V2 liquidity pairs and LP tokens, which can be used in other DeFi applications after the vesting period.

Claiming Tokens and Providing Liqudity

Users can claim accumulated tokens by providing matching liquidity in the form of ETH or XEN through the mintTaxedTokenWithLiquidity function.

The process works as follows:

  1. User selects a token (WNM, WBLK, or WUNI) and an amount to claim from the liquidity pool

  2. User provides ETH or XEN of equal value to the tokens they want to claim

  3. The contract mints the requested tokens and pairs them with the provided ETH or XEN on Uniswap V2

  4. The resulting Uniswap LP tokens are locked in a vesting schedule

Liquidity Pairing Options

Users have two options for providing liquidity:

1. With ETH

function _addLiquidityWithETH(uint256 tokenAmount, address token) internal {
    require(IERC20(token).approve(uniswapRouterAddress, tokenAmount), "Token approval failed");
    
    // Add liquidity with 2% slippage tolerance
    (uint256 amountToken, uint256 amountETH, uint256 liquidity) = uniswapRouter.addLiquidityETH{ value: msg.value }(
        token,
        tokenAmount,
        tokenAmount,              // Minimum amount of tokens to add
        msg.value * 98 / 100,     // Minimum amount of ETH to add (2% slippage)
        address(this),            // Receiver of liquidity tokens
        block.timestamp + 300     // Deadline
    );
    
    // Get and store LP token info...
}

2. With XEN

function _addLiquidityWithERC20(address tokenA, address tokenB, uint256 amountA, uint256 amountB) internal {
    require(IERC20(tokenB).transferFrom(msg.sender, address(this), amountB), "XEN transfer failed");
    require(IERC20(tokenA).approve(uniswapRouterAddress, amountA), "TokenA approval failed");
    require(IERC20(tokenB).approve(uniswapRouterAddress, amountB), "TokenB approval failed");
    
    // Add liquidity with 2% slippage tolerance
    (uint256 amountTokenA, uint256 amountTokenB, uint256 liquidity) = IUniswapV2Router(uniswapRouterAddress).addLiquidity(
        tokenA,
        tokenB,
        amountA,
        amountB,
        amountA,
        amountB * 98 / 100,  // 2% slippage tolerance
        address(this),
        block.timestamp + 300
    );
    
    // Get and store LP token info...
}

LP Token Vesting Schedule

Once Uniswap LP tokens are created, they're locked in a vesting schedule that releases tokens gradually:

  • Tokens are completely locked for the first 30 days - no claiming is possible

  • First 10% of LP tokens can only be claimed after day 30

  • 10% of LP tokens unlock every 30 days

  • Full vesting occurs after 300 days (10 periods x 30 days)

  • Maximum claiming intervals: 10

Benefits of Uniswap Integration

Using Uniswap V2 for the liquidity program offers several advantages:

  1. Market Efficiency: Pairs WEN ecosystem tokens with well-established assets (ETH and XEN)

  2. Interoperability: Creates standard Uniswap LP tokens compatible with the broader DeFi ecosystem

  3. Price Discovery: Helps establish fair market prices for WNM, WBLK, and WUNI tokens

  4. Additional Yield: LP providers can earn Uniswap trading fees in addition to the free tokens

Example Transaction

  • If the user wants to claim $100 worth of WNM, they must provide ETH or XEN worth $100.

  • The user then pairs the WNM with their provided ETH/XEN to create an LP pair, which is locked for 300 days.

  • 10% of the LP tokens are unlocked every 30 days meaning all LP tokens can be claimed after 300 days.

Example:

  • A user wants to claim 10 WNM, and WNM is priced at $1 per token.

    • The user needs to provide ETH or XEN worth $10.

    • They pair 10 WNM with $10 worth of ETH or XEN.

    • They receive LP tokens that are locked for 300 days, with 10% unlocking every 30 days.

Uniswap V2