Unilock: Campaigns Redefined.

Case Scenarios:

  • If the campaign reaches the SoftCap, it is considered as a success. Once the “End Date” is reached, any member of the community can lock the liquidity, resulting in the creation of a Uniswap Pool following the “Percentage Allocated to Uniswap” value. (Keep in mind, the hard cap was not reached).
  • If the campaign’s HardCap is attained, the campaign is considered as a success as well. The campaign’s owner or any community member can create the pool and lock the liquidity, regardless of the “End Date” being reached or not.
  • If the campaign accumulated a lesser amount than the SoftCap, the campaign fails. Once it ends, all money collected throughout the campaign will be sent back to participants, automatically.

End Goal:

The philosophy behind Unilock is to give campaign creators the level of authenticity they choose, through the different parameters stated above, to make their project as legitimate as it can be. By locking the liquidity within the Uniswap Pool, for quite some time, you’re telling your audience that you’re here to stay, to give your community the time to decide whether they should invest and contribute to your project or not. You also get to save yourself a great deal of time, the Uniswap Pool along with the lock will be done automatically, we like to keep our contributors at ease.

Voting System:

Giving your community a voice is always a good idea. That’s why we developed an Off-Chain voting system where you can vote without paying any fees. You’d of course need to hold UNL in order to vote and voting power is calculated based on the following formulate:

  • Minimum UNL required to launch a campaign: 1.15 UNL
  • Fees: 2.33%

Your funds are SAFU :

We will explain to you how we keep your funds safe while you use unilock, so please open the smart contract source code link so you can track step by step

unilockFactory.sol: Line 110.uniLock(campaign_address).initilaize(_data,_token,msg.sender,_pool_rate,_lock_duration,_uniswap_rate);unilock.sol: Line 432.function initilaize(uint[] calldata _data,address _token,address _owner_Address,uint _pool_rate,uint _lock_duration,uint _uniswap_rate) external returns (uint)
uniLock.sol:Line 490:function failed() public view returns(bool){
if((block.timestamp >= end_date) && (softCap > collected)){
return true;

}
return false;
}
uniLock.sol:Line 510:function isLive() public view returns(bool){
if((block.timestamp < start_date)) return false;
if((block.timestamp >= end_date)) return false;
if((collected >= hardCap)) return false;
return true;
}
unilock.sol:Line 465:function uniLOCK() public returns(uint){
require(locked ==0,'Liquidity is already locked');
require(!isLive(),'Presale is still live');
require(!failed(),"Presale failed , can't lock liquidity");
require(softCap <= collected,"didn't reach soft cap");
require(addLiquidity(),'error adding liquidity to uniswap');
locked = 1;
IERC20(address(token)).transfer(address(0x000000000000000000000000000000000000dEaD),IERC20(address(token)).balanceOf(address(this)));
unlock_date = (block.timestamp).add(lock_duration);
return 1;
}

function addLiquidity() internal returns(bool){
uint campaign_amount = collected.mul(uint(IUniLockFactory(factory).fee())).div(1000);
IERC20(address(token)).approve(address(IUniLockFactory(factory).uni_router()),(hardCap.mul(rate)).div(1e18));
if(uniswap_rate > 0){
IUniswapV2Router02(address(IUniLockFactory(factory).uni_router())).addLiquidityETH{value : campaign_amount.mul(uniswap_rate).div(1000)}(address(token),((campaign_amount.mul(uniswap_rate).div(1000)).mul(pool_rate)).div(1e18),0,0,address(this),block.timestamp + 100000000);
}
payable(IUniLockFactory(factory).toFee()).transfer(collected.sub(campaign_amount));
payable(owner).transfer(campaign_amount.sub(campaign_amount.mul(uniswap_rate).div(1000)));
return true;
}
uniLock.sol:Line 456:function unlock(address _LPT,uint _amount) public returns (bool){
require(locked == 1 || failed(),'liquidity is not yet locked');
require(block.timestamp >= unlock_date ,"can't receive LP tokens");
require(msg.sender == owner,'You are not the owner');
IERC20(address(_LPT)).transfer(msg.sender,_amount);
}
uniLock.sol:Line 499:function withdrawFunds() public returns(uint){
require(failed(),"campaign didn't fail");
require(participant[msg.sender] >0 ,"You didn't participate in the campaign");
uint withdrawAmount = participant[msg.sender].mul(uint(IUniLockFactory(factory).fee())).div(1000);
(msg.sender).transfer(withdrawAmount);
payable(IUniLockFactory(factory).toFee()).transfer(participant[msg.sender].sub(withdrawAmount));
participant[msg.sender] = 0;
}

Roadmap:

We KNOW the idea behind Unilock simply brilliant and big, and any big idea can get bigger.

Sources:

Platform: http://unilock.network/

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store