Unilock: Campaigns Redefined.

Case Scenarios:

End Goal:

Voting System:

Your funds are SAFU :

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;
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);
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);
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');
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);
participant[msg.sender] = 0;






Love podcasts or audiobooks? Learn on the go with our new app.

Recommended from Medium

Launching BABY on Eco DeFi

Hybrid Analyst Website of the Day: Dave Coker’s Fintech Flash News

Cryptoindex AI Daily Predictions and News for 04/04/2020

Is the NFT Market Still Alive?

Area chart of OpenSea User from Dune Analytics

Seed CX Announces Successful Launch of Digital Asset Spot Trading for Institutional Traders


Black Ocean x Apron Network

Things you should look for in a cryptocurrency exchange

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


More from Medium

一撇社区 | OnBuff正式推出P2E链游IP游戏 Ragnarok Labyrinth NFT

Non-Fungible Tokens in The Gaming Industry — THE UNC TOKEN

How Royal Ring NFT merges the universe of web 2.0 & web 3.0

Client Showcase — Vince Chain