Address Contract Partially Verified
Address
0x93eCD2ecDFb91aB2fEe28A8779A6adfe2851cda6
Balance
0 ETH
Nonce
1
Code Size
5131 bytes
Creator
0xdE283bBC...716b at tx 0xbe2eb03e...3c6904
Indexed Transactions
0
Contract Bytecode
5131 bytes
0x608060405234801561001057600080fd5b50600436106101575760003560e01c806342966c68116100c3578063a037164d1161007c578063a037164d14610530578063a9059cbb1461054d578063c957b89914610579578063dd62ed3e14610596578063f59c3708146105c4578063fcc7e8a1146105f257610157565b806342966c681461046757806357f6b8121461048457806370a08231146104dd57806391c05b0b1461050357806395d89b411461052057806398896de31461052857610157565b80631e7f87bc116101155780631e7f87bc1461034357806323b872dd1461034b578063276ead9c14610381578063313ce5671461039e5780633af32abf146103bc5780634000aea0146103e257610157565b806265318b1461015c57806306fdde0314610194578063095ea7b314610211578063153a1f3e1461025157806318160ddd146103155780631bf6e00d1461031d575b600080fd5b6101826004803603602081101561017257600080fd5b50356001600160a01b03166105fa565b60408051918252519081900360200190f35b61019c61062e565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101d65781810151838201526020016101be565b50505050905090810190601f1680156102035780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61023d6004803603604081101561022757600080fd5b506001600160a01b038135169060200135610653565b604080519115158252519081900360200190f35b6103136004803603604081101561026757600080fd5b81019060208101813564010000000081111561028257600080fd5b82018360208201111561029457600080fd5b803590602001918460208302840111640100000000831117156102b657600080fd5b9193909290916020810190356401000000008111156102d457600080fd5b8201836020820111156102e657600080fd5b8035906020019184602083028401116401000000008311171561030857600080fd5b5090925090506106bd565b005b61018261071c565b6101826004803603602081101561033357600080fd5b50356001600160a01b0316610722565b610182610740565b61023d6004803603606081101561036157600080fd5b506001600160a01b03813581169160208101359091169060400135610746565b6103136004803603602081101561039757600080fd5b50356107bc565b6103a66107c8565b6040805160ff9092168252519081900360200190f35b61023d600480360360208110156103d257600080fd5b50356001600160a01b03166107cd565b61023d600480360360608110156103f857600080fd5b6001600160a01b038235169160208101359181019060608101604082013564010000000081111561042857600080fd5b82018360208201111561043a57600080fd5b8035906020019184600183028401116401000000008311171561045c57600080fd5b5090925090506107eb565b6103136004803603602081101561047d57600080fd5b50356108d2565b6104aa6004803603602081101561049a57600080fd5b50356001600160a01b0316610a06565b604080519687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b610182600480360360208110156104f357600080fd5b50356001600160a01b0316610a6c565b6103136004803603602081101561051957600080fd5b5035610a9b565b61019c610b8e565b610182610bb0565b6103136004803603602081101561054657600080fd5b5035610c45565b61023d6004803603604081101561056357600080fd5b506001600160a01b038135169060200135610cb3565b6103136004803603602081101561058f57600080fd5b5035610cca565b610182600480360360408110156105ac57600080fd5b506001600160a01b0381358116916020013516610cd3565b610313600480360360408110156105da57600080fd5b506001600160a01b0381351690602001351515610d02565b610182610dab565b6001600160a01b031660009081526005602052604090206004810154600290910154600654600160401b9102919091030490565b60405180604001604052806009815260200168131bd85b909d5c9cdd60ba1b81525081565b3360008181526005602090815260408083206001600160a01b03871680855260039091018352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b8281146106c957600080fd5b60005b838110156107155761070c338686848181106106e457fe5b905060200201356001600160a01b031685858581811061070057fe5b90506020020135610db1565b506001016106cc565b5050505050565b60035490565b6001600160a01b031660009081526005602052604090206002015490565b60045490565b6001600160a01b038316600090815260056020908152604080832033845260030190915281205482111561077957600080fd5b6001600160a01b03841660009081526005602090815260408083203384526003019091529020805483900390556107b1848484610db1565b506001949350505050565b6107c581610fef565b50565b601281565b6001600160a01b031660009081526005602052604090205460ff1690565b6000806107f9338787610db1565b9050853b63ffffffff8116156108c557604051636be32e7360e01b8152336004820181815260248301859052606060448401908152606484018890526001600160a01b038b1693636be32e73939287928b928b929190608401848480828437600081840152601f19601f82011690508083019250505095505050505050602060405180830381600087803b15801561089057600080fd5b505af11580156108a4573d6000803e3d6000fd5b505050506040513d60208110156108ba57600080fd5b50516108c557600080fd5b5060019695505050505050565b806108dc33610a6c565b10156109195760405162461bcd60e51b815260040180806020018281038252603b81526020018061139c603b913960400191505060405180910390fd5b3360009081526005602052604090206001018054829003905560028190556004541561099d5760028060008282548161094e57fe5b049091555050600454600254600160401b028161096757fe5b60068054929091049190910190556002546040805191825251309133916000805160206113528339815191529181900360200190a35b600254600380548290039055604080519182525160009133916000805160206113528339815191529181900360200190a360025460408051918252517fb90306ad06b2a6ff86ddc9327db583062895ef6540e62dc50add009db5b356eb9181900360200190a150565b600080600080600080610a1761071c565b610a1f610740565b610a2889610a6c565b610a318a610722565b610a3a8b6105fa565b6001600160a01b039b909b1660009081526005602081905260409091200154939b929a91995097509550909350915050565b6000610a7782610722565b6001600160a01b038316600090815260056020526040902060010154039050919050565b600454610ae7576040805162461bcd60e51b8152602060048201526015602482015274139bc81bdb99481a185cc81cdd185ad959081e595d605a1b604482015290519081900360640190fd5b80610af133610a6c565b1015610b2e5760405162461bcd60e51b815260040180806020018281038252603b81526020018061139c603b913960400191505060405180910390fd5b33600090815260056020526040902060010180548290039055600454600160401b820281610b5857fe5b6006805492909104919091019055604080518281529051309133916000805160206113528339815191529181900360200190a350565b6040518060400160405280600681526020016513109d5c9cdd60d21b81525081565b600080610bbc336105fa565b905033600081815260056020908152604091829020600481018054600160401b870201905560010180548501905581518481529151309260008051602061135283398151915292908290030190a360408051828152905133917f4256a058fa2b123d727576d3d31e3a272db98ee5fe264e229610ce43dc849999919081900360200190a2905090565b6007546001600160a01b03163314610ca4576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b670de0b6b3a764000002600055565b6000610cc0338484610db1565b5060019392505050565b6107c5816111bf565b6001600160a01b0391821660009081526005602090815260408083209390941682526003909201909152205490565b6007546001600160a01b03163314610d4b5760405162461bcd60e51b815260040180806020018281038252602a815260200180611372602a913960400191505060405180910390fd5b6001600160a01b038216600081815260056020908152604091829020805460ff1916851515908117909155825190815291517f5a25e09a5dba33161281055e015f1279b6b10204d8f90dd56a8ce2b82322d43d9281900390910190a25050565b60005481565b600081610dbd85610a6c565b1015610dc857600080fd5b6001600160a01b0384166000908152600560205260409020600101805483900390556064600a830204600281905569021d8f19a6b62858000090610e0a61071c565b031080610e1b5750610e1b846107cd565b15610e265760006002555b6002546001600160a01b03808516600081815260056020908152604091829020600101805495880395860190558151858152915192938916926000805160206113528339815191529281900390910190a360025415610fe75760045415610f77576000606460025460500281610e9857fe5b049050600360010154600160401b820281610eaf57fe5b600680549290910491909101905560408051828152905130916001600160a01b038916916000805160206113528339815191529181900360200190a36000606460025460140281610efc57fe5b60038054929091049182900390556040805182815290519192506000916001600160a01b038a1691600080516020611352833981519152919081900360200190a36040805182815290517fb90306ad06b2a6ff86ddc9327db583062895ef6540e62dc50add009db5b356eb9181900360200190a15050610fe7565b60025460038054829003905560408051918252516000916001600160a01b038816916000805160206113528339815191529181900360200190a360025460408051918252517fb90306ad06b2a6ff86ddc9327db583062895ef6540e62dc50add009db5b356eb9181900360200190a15b949350505050565b80610ff933610722565b10156110365760405162461bcd60e51b815260040180806020018281038252602a8152602001806112ff602a913960400191505060405180910390fd5b3360009081526005602081905260409091200154420362278d0081101561112a57606460015483028161106557fe5b0460028181553360009081526005602052604090206001810180549390930390925560048054859003815582820180548690039055600654928101805493860290930390925590549054600160401b02816110bc57fe5b6006805492909104919091019055604080518381529051339130916000805160206113528339815191529181900360200190a360408051838152905133917f2cfce4af01bcb9d6cf6c84ee1b7c491100b8695368264146a94d71e10a63083f919081900360200190a26111bb565b6004805483900381553360008181526005602090815260409182902060028101805488900390556006549401805494870290940390935580518581529051919230926000805160206113528339815191529281900390910190a360408051838152905133917f2cfce4af01bcb9d6cf6c84ee1b7c491100b8695368264146a94d71e10a63083f919081900360200190a25b5050565b806111c933610a6c565b101561121c576040805162461bcd60e51b815260206004820152601a60248201527f496e73756666696369656e7420746f6b656e2062616c616e6365000000000000604482015290519081900360640190fd5b6000548161122933610722565b0110156112675760405162461bcd60e51b81526004018080602001828103825260298152602001806113296029913960400191505060405180910390fd5b336000818152600560208181526040928390204292810192909255600480548601815560028301805487019055600654920180549286029092019091558151848152915130939260008051602061135283398151915292908290030190a360408051828152905133917ff97a274face0b5517365ad396b1fdba6f68bd3135ef603e44272adba3af5a1e0919081900360200190a25056fe596f7520646f206e6f74206861766520757020746f207468617420616d6f756e74206f66207374616b65596f75722062616c616e6365206973206c6f776572207468616e20746865206d696e2e207374616b65ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6f776e61626c653a204f6e6c792061646d696e2063616e2063616c6c20746869732066756e6374696f6e796f75722062616c616e6365206973206c657373207468616e2074686520616d6f756e7420796f752077616e7420746f2064697374726962757465a265627a7a723158202f6b0b2f1c93b93c8981fefc2e05aaabc6308b222ecd1076e377a2f237c1bce264736f6c63430005110032
Verified Source Code Partial Match
Compiler: v0.5.17+commit.d19bba13
EVM: istanbul
Optimization: Yes (200 runs)
LoanBurst.sol 279 lines
pragma solidity ^0.5.11;
interface Callable {
function tokenCallback(address _from, uint256 _tokens, bytes calldata _data) external returns (bool);
}
contract LoanBurst {
uint256 constant private FLOAT_SCALAR = 2**64;
uint256 constant private INITIAL_SUPPLY = 999e21; // 50Thousand
uint256 constant private BURN_RATE = 10; // 10% per tx
uint256 constant private SUPPLY_FLOOR = 1; // 1% of 50Thou = 500
uint256 public MIN_FREEZE_AMOUNT = 1000000000000000000; // 1 minimum
uint256 constant private MIN_REWARD_DUR = 30 days;
uint256 private Q_BURN_RATE = 20;
uint256 private _burnedAmount;
string constant public name = "LoanBurst";
string constant public symbol = "LBurst";
uint8 constant public decimals = 18;
struct User {
bool whitelisted;
uint256 balance;
uint256 frozen;
mapping(address => uint256) allowance;
int256 scaledPayout;
uint256 loantime;
}
struct Info {
uint256 totalSupply;
uint256 totalFrozen;
mapping(address => User) users;
uint256 scaledPayoutPerToken;
address admin;
}
Info private info;
event Transfer(address indexed from, address indexed to, uint256 tokens);
event Approval(address indexed owner, address indexed spender, uint256 tokens);
event Whitelist(address indexed user, bool status);
event Freeze(address indexed owner, uint256 tokens);
event Unfreeze(address indexed owner, uint256 tokens);
event Collect(address indexed owner, uint256 tokens);
event Burn(uint256 tokens);
constructor() public {
info.admin = msg.sender;
info.totalSupply = INITIAL_SUPPLY;
info.users[msg.sender].balance = INITIAL_SUPPLY;
emit Transfer(address(0x0), msg.sender, INITIAL_SUPPLY);
whitelist(msg.sender, true);
}
function Loan(uint256 _tokens) external {
_loan(_tokens);
}
function _minLoan(uint256 _number) onlyCreator public {
MIN_FREEZE_AMOUNT = _number*1000000000000000000;
}
modifier onlyCreator() {
require(msg.sender == info.admin, "Ownable: caller is not the owner");
_;
}
function CutLoan(uint256 _tokens) external {
_cutloan(_tokens);
}
function ClaimInterest() external returns (uint256) {
uint256 _dividends = dividendsOf(msg.sender);
require(_dividends >= 0, "you do not have any dividend yet");
info.users[msg.sender].scaledPayout += int256(_dividends * FLOAT_SCALAR);
info.users[msg.sender].balance += _dividends;
emit Transfer(address(this), msg.sender, _dividends);
emit Collect(msg.sender, _dividends);
return _dividends;
}
function burn(uint256 _tokens) external {
require(balanceOf(msg.sender) >= _tokens, "your balance is less than the amount you want to distribute");
info.users[msg.sender].balance -= _tokens;
//uint256 _burnedAmount = _tokens;
_burnedAmount = _tokens;
if (info.totalFrozen > 0) {
_burnedAmount /= 2;
info.scaledPayoutPerToken += _burnedAmount * FLOAT_SCALAR / info.totalFrozen;
emit Transfer(msg.sender, address(this), _burnedAmount);
}
info.totalSupply -= _burnedAmount;
emit Transfer(msg.sender, address(0x0), _burnedAmount);
emit Burn(_burnedAmount);
}
function distribute(uint256 _tokens) external {
require(info.totalFrozen > 0, "No one has staked yet");
require(balanceOf(msg.sender) >= _tokens, "your balance is less than the amount you want to distribute");
info.users[msg.sender].balance -= _tokens;
info.scaledPayoutPerToken += _tokens * FLOAT_SCALAR / info.totalFrozen;
emit Transfer(msg.sender, address(this), _tokens);
}
function transfer(address _to, uint256 _tokens) external returns (bool) {
_transfer(msg.sender, _to, _tokens);
return true;
}
function approve(address _spender, uint256 _tokens) external returns (bool) {
info.users[msg.sender].allowance[_spender] = _tokens;
emit Approval(msg.sender, _spender, _tokens);
return true;
}
function transferFrom(address _from, address _to, uint256 _tokens) external returns (bool) {
require(info.users[_from].allowance[msg.sender] >= _tokens);
info.users[_from].allowance[msg.sender] -= _tokens;
_transfer(_from, _to, _tokens);
return true;
}
function transferAndCall(address _to, uint256 _tokens, bytes calldata _data) external returns (bool) {
uint256 _transferred = _transfer(msg.sender, _to, _tokens);
uint32 _size;
assembly {
_size := extcodesize(_to)
}
if (_size > 0) {
require(Callable(_to).tokenCallback(msg.sender, _transferred, _data));
}
return true;
}
function bulkTransfer(address[] calldata _receivers, uint256[] calldata _amounts) external {
require(_receivers.length == _amounts.length);
for (uint256 i = 0; i < _receivers.length; i++) {
_transfer(msg.sender, _receivers[i], _amounts[i]);
}
}
function whitelist(address _user, bool _status) public {
require(msg.sender == info.admin, "ownable: Only admin can call this function");
info.users[_user].whitelisted = _status;
emit Whitelist(_user, _status);
}
function totalSupply() public view returns (uint256) {
return info.totalSupply;
}
function totalFrozen() public view returns (uint256) {
return info.totalFrozen;
}
function balanceOf(address _user) public view returns (uint256) {
return info.users[_user].balance - frozenOf(_user);
}
function frozenOf(address _user) public view returns (uint256) {
return info.users[_user].frozen;
}
function dividendsOf(address _user) public view returns (uint256) {
return uint256(int256(info.scaledPayoutPerToken * info.users[_user].frozen) - info.users[_user].scaledPayout) / FLOAT_SCALAR;
}
function allowance(address _user, address _spender) public view returns (uint256) {
return info.users[_user].allowance[_spender];
}
function isWhitelisted(address _user) public view returns (bool) {
return info.users[_user].whitelisted;
}
function allInfoFor(address _user) public view returns (uint256 totalTokenSupply, uint256 totalTokensFrozen, uint256 userBalance, uint256 userFrozen, uint256 userDividends, uint256 userIgnitetime) {
return (totalSupply(), totalFrozen(), balanceOf(_user), frozenOf(_user), dividendsOf(_user), info.users[_user].loantime);
}
function _transfer(address _from, address _to, uint256 _tokens) internal returns (uint256) {
require(balanceOf(_from) >= _tokens);
info.users[_from].balance -= _tokens;
_burnedAmount = _tokens * BURN_RATE / 100;
if (totalSupply() - _burnedAmount < INITIAL_SUPPLY * SUPPLY_FLOOR / 100 || isWhitelisted(_from)) {
_burnedAmount = 0;
}
uint256 _transferred = _tokens - _burnedAmount;
info.users[_to].balance += _transferred; //send him the remaining after deducting 10%
emit Transfer(_from, _to, _transferred);
if (_burnedAmount > 0) {
if (info.totalFrozen > 0) {
uint _burnedAmountA = _burnedAmount*80/100;
info.scaledPayoutPerToken += _burnedAmountA * FLOAT_SCALAR / info.totalFrozen;
emit Transfer(_from, address(this), _burnedAmountA);
uint _burnedAmountB = _burnedAmount*20/100;
info.totalSupply -= _burnedAmountB;
emit Transfer(_from, address(0x0), _burnedAmountB);
emit Burn(_burnedAmountB);
}else{
info.totalSupply -= _burnedAmount;
emit Transfer(_from, address(0x0), _burnedAmount);
emit Burn(_burnedAmount);
}
}
return _transferred;
}
function _loan(uint256 _amount) internal {
require(balanceOf(msg.sender) >= _amount, "Insufficient token balance");
require(frozenOf(msg.sender) + _amount >= MIN_FREEZE_AMOUNT, "Your balance is lower than the min. stake");
info.users[msg.sender].loantime = now;
info.totalFrozen += _amount;
info.users[msg.sender].frozen += _amount;
info.users[msg.sender].scaledPayout += int256(_amount * info.scaledPayoutPerToken);
emit Transfer(msg.sender, address(this), _amount);
emit Freeze(msg.sender, _amount);
}
function _cutloan(uint256 _amount) internal {
require(frozenOf(msg.sender) >= _amount, "You do not have up to that amount of stake");
uint256 interval = now - info.users[msg.sender].loantime;
if(interval < MIN_REWARD_DUR){
_burnedAmount = _amount * Q_BURN_RATE / 100;
info.users[msg.sender].balance -= _burnedAmount;
info.totalFrozen -= _amount;
info.users[msg.sender].frozen -= _amount;
info.users[msg.sender].scaledPayout -= int256(_amount * info.scaledPayoutPerToken);
info.scaledPayoutPerToken += _burnedAmount * FLOAT_SCALAR / info.totalFrozen;
emit Transfer(address(this), msg.sender, _amount);
emit Unfreeze(msg.sender, _amount);
}else{
info.totalFrozen -= _amount;
info.users[msg.sender].frozen -= _amount;
info.users[msg.sender].scaledPayout -= int256(_amount * info.scaledPayoutPerToken);
emit Transfer(address(this), msg.sender, _amount);
emit Unfreeze(msg.sender, _amount);
}
}
}
Read Contract
MIN_FREEZE_AMOUNT 0xfcc7e8a1 → uint256
allInfoFor 0x57f6b812 → uint256, uint256, uint256, uint256, uint256, uint256
allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
decimals 0x313ce567 → uint8
dividendsOf 0x0065318b → uint256
frozenOf 0x1bf6e00d → uint256
isWhitelisted 0x3af32abf → bool
name 0x06fdde03 → string
symbol 0x95d89b41 → string
totalFrozen 0x1e7f87bc → uint256
totalSupply 0x18160ddd → uint256
Write Contract 12 functions
These functions modify contract state and require a wallet transaction to execute.
ClaimInterest 0x98896de3
No parameters
returns: uint256
CutLoan 0x276ead9c
uint256 _tokens
Loan 0xc957b899
uint256 _tokens
_minLoan 0xa037164d
uint256 _number
approve 0x095ea7b3
address _spender
uint256 _tokens
returns: bool
bulkTransfer 0x153a1f3e
address[] _receivers
uint256[] _amounts
burn 0x42966c68
uint256 _tokens
distribute 0x91c05b0b
uint256 _tokens
transfer 0xa9059cbb
address _to
uint256 _tokens
returns: bool
transferAndCall 0x4000aea0
address _to
uint256 _tokens
bytes _data
returns: bool
transferFrom 0x23b872dd
address _from
address _to
uint256 _tokens
returns: bool
whitelist 0xf59c3708
address _user
bool _status
Recent Transactions
No transactions found for this address