Latest 25 from a total of 1,166 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Deposit | 132215367 | 860 days ago | IN | 0 ETH | 0.00003306 | ||||
| Withdraw And Har... | 118913502 | 902 days ago | IN | 0 ETH | 0.00004464 | ||||
| Harvest | 118913461 | 902 days ago | IN | 0 ETH | 0.00003554 | ||||
| Withdraw And Har... | 115383256 | 913 days ago | IN | 0 ETH | 0.00005888 | ||||
| Harvest | 115382431 | 913 days ago | IN | 0 ETH | 0.00004498 | ||||
| Harvest | 111021459 | 926 days ago | IN | 0 ETH | 0.00003786 | ||||
| Withdraw And Har... | 108546284 | 934 days ago | IN | 0 ETH | 0.00008267 | ||||
| Deposit | 106693875 | 939 days ago | IN | 0 ETH | 0.00005188 | ||||
| Withdraw And Har... | 104995053 | 944 days ago | IN | 0 ETH | 0.00005336 | ||||
| Harvest | 104332898 | 946 days ago | IN | 0 ETH | 0.00003259 | ||||
| Deposit | 104332395 | 946 days ago | IN | 0 ETH | 0.0000456 | ||||
| Deposit | 85248983 | 1003 days ago | IN | 0 ETH | 0.00009847 | ||||
| Withdraw And Har... | 80862397 | 1016 days ago | IN | 0 ETH | 0.00006715 | ||||
| Withdraw And Har... | 80853717 | 1016 days ago | IN | 0 ETH | 0.00006419 | ||||
| Withdraw And Har... | 80794655 | 1016 days ago | IN | 0 ETH | 0.00007785 | ||||
| Withdraw And Har... | 80742915 | 1016 days ago | IN | 0 ETH | 0.00006231 | ||||
| Withdraw And Har... | 80737865 | 1016 days ago | IN | 0 ETH | 0.00007069 | ||||
| Deposit | 80395079 | 1017 days ago | IN | 0 ETH | 0.00007872 | ||||
| Withdraw And Har... | 80394446 | 1017 days ago | IN | 0 ETH | 0.0000751 | ||||
| Harvest | 80283435 | 1017 days ago | IN | 0 ETH | 0.00006281 | ||||
| Harvest | 80115480 | 1018 days ago | IN | 0 ETH | 0.0000692 | ||||
| Deposit | 80103002 | 1018 days ago | IN | 0 ETH | 0.00009099 | ||||
| Withdraw And Har... | 79722537 | 1019 days ago | IN | 0 ETH | 0.00006898 | ||||
| Harvest | 78916419 | 1021 days ago | IN | 0 ETH | 0.00004796 | ||||
| Deposit | 78205512 | 1023 days ago | IN | 0 ETH | 0.00006162 |
Latest 25 internal transactions (View All)
| Parent Transaction Hash | Block | From | To | |||
|---|---|---|---|---|---|---|
| 68712005 | 1052 days ago | 0 ETH | ||||
| 68712005 | 1052 days ago | 0 ETH | ||||
| 68712005 | 1052 days ago | 0 ETH | ||||
| 68712005 | 1052 days ago | 0 ETH | ||||
| 68712005 | 1052 days ago | 0 ETH | ||||
| 68712005 | 1052 days ago | 0 ETH | ||||
| 65997622 | 1060 days ago | 0 ETH | ||||
| 65997622 | 1060 days ago | 0 ETH | ||||
| 65997622 | 1060 days ago | 0 ETH | ||||
| 65997622 | 1060 days ago | 0 ETH | ||||
| 65997622 | 1060 days ago | 0 ETH | ||||
| 65997622 | 1060 days ago | 0 ETH | ||||
| 65635083 | 1061 days ago | 0 ETH | ||||
| 65635083 | 1061 days ago | 0 ETH | ||||
| 65635083 | 1061 days ago | 0 ETH | ||||
| 65635083 | 1061 days ago | 0 ETH | ||||
| 65635083 | 1061 days ago | 0 ETH | ||||
| 65635083 | 1061 days ago | 0 ETH | ||||
| 65634905 | 1061 days ago | 0 ETH | ||||
| 65634905 | 1061 days ago | 0 ETH | ||||
| 65628125 | 1061 days ago | 0 ETH | ||||
| 65628125 | 1061 days ago | 0 ETH | ||||
| 65628125 | 1061 days ago | 0 ETH | ||||
| 65628125 | 1061 days ago | 0 ETH | ||||
| 65628125 | 1061 days ago | 0 ETH |
Cross-Chain Transactions
Loading...
Loading
Contract Name:
BProtocolChef
Compiler Version
v0.8.7+commit.e28d00a7
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
pragma solidity 0.8.7;
import "./Ownable.sol";
import "./SafeERC20.sol";
interface IRewarder {
function onHundredReward(uint pid, address user, address recipient, uint hundredAmount, uint newLpAmount) external;
function pendingTokens(uint pid, address user, uint hundredAmount) external view returns (IERC20[] memory, uint[] memory);
}
interface IBAMM is IERC20 {
function deposit(uint amount) external;
function withdraw(uint numShares) external;
function fetchPrice() external view returns(uint);
}
contract BProtocolChef is Ownable {
using SafeERC20 for IERC20;
/// @notice Info of each BProtocolChef user.
/// `shares` LP token shares the user has provided.
/// `rewardDebt` The shares of HUNDRED entitled to the user.
struct UserInfo {
uint shares;
int256 rewardDebt;
}
/// @notice Info of each BProtocolChef pool.
/// `allocPoint` The shares of allocation points assigned to the pool.
/// Also known as the shares of HUNDRED to distribute per block.
struct PoolInfo {
uint128 accHundredPerShare;
uint64 lastRewardTime;
uint64 allocPoint;
}
/// @notice Address of Hundred contract.
IERC20 public immutable Hundred;
/// @notice Info of each BProtocolChef pool.
PoolInfo[] public poolInfo;
/// @notice Address of the B.Protocol LP token for each BProtocolChef pool.
IBAMM[] public lpTokens;
/// @notice Address of each `IRewarder` contract in BProtocolChef.
IRewarder[] public rewarders;
/// @notice Address of the underlying token for each BProtocolChef pool.
/// This allows a user to deposit e.g. their USDC into the USDC BAMM, then deposit their BAMM tokens to MiniChef.
IERC20[] public underlyingTokens;
/// @notice Info of each user that stakes LP tokens.
mapping (uint => mapping (address => UserInfo)) public userInfo;
/// @dev Tokens added
mapping (address => bool) public addedTokens;
/// @dev Total allocation points. Must be the sum of all allocation points in all pools.
uint public totalAllocPoint;
uint public hundredPerSecond;
uint private constant ACC_HUNDRED_PRECISION = 1e12;
event Deposit(address indexed user, uint indexed pid, uint shares, address indexed to);
event Withdraw(address indexed user, uint indexed pid, uint shares, address indexed to);
event EmergencyWithdraw(address indexed user, uint indexed pid, uint shares, address indexed to);
event Harvest(address indexed user, uint indexed pid, uint shares);
event LogPoolAddition(uint indexed pid, uint allocPoint, IERC20 indexed lpToken, IRewarder indexed rewarder);
event LogSetPool(uint indexed pid, uint allocPoint, IRewarder indexed rewarder, bool overwrite);
event LogUpdatePool(uint indexed pid, uint64 lastRewardTime, uint lpSupply, uint accHundredPerShare);
event LogHundredPerSecond(uint hundredPerSecond);
/// @param _hundred The Hundred token contract address.
constructor(IERC20 _hundred) {
Hundred = _hundred;
}
/// @notice Returns the number of BProtocolChef pools.
function poolLength() public view returns (uint pools) {
pools = poolInfo.length;
}
/// @notice Add a new LP to the pool. Can only be called by the owner.
/// DO NOT add the same LP token more than once. Rewards will be messed up if you do.
/// @param allocPoint AP of the new pool.
/// @param _lpToken Address of the LP ERC-20 token.
/// @param _rewarder Address of the rewarder delegate.
function add(uint allocPoint, IBAMM _lpToken, IERC20 _underlyingToken, IRewarder _rewarder) public onlyOwner {
require(addedTokens[address(_lpToken)] == false, "Token already added");
totalAllocPoint = totalAllocPoint + allocPoint;
lpTokens.push(_lpToken);
rewarders.push(_rewarder);
underlyingTokens.push(_underlyingToken);
poolInfo.push(PoolInfo({
allocPoint: uint64(allocPoint),
lastRewardTime: uint64(block.timestamp),
accHundredPerShare: 0
}));
addedTokens[address(_lpToken)] = true;
emit LogPoolAddition(lpTokens.length - 1, allocPoint, _lpToken, _rewarder);
}
/// @notice Update the given pool's HUNDRED allocation point and `IRewarder` contract. Can only be called by the owner.
/// @param _pid The index of the pool. See `poolInfo`.
/// @param _allocPoint New AP of the pool.
/// @param _rewarder Address of the rewarder delegate.
/// @param overwrite True if _rewarder should be `set`. Otherwise `_rewarder` is ignored.
function set(uint _pid, uint _allocPoint, IRewarder _rewarder, bool overwrite) public onlyOwner {
totalAllocPoint = totalAllocPoint - poolInfo[_pid].allocPoint + _allocPoint;
poolInfo[_pid].allocPoint = uint64(_allocPoint);
if (overwrite) { rewarders[_pid] = _rewarder; }
emit LogSetPool(_pid, _allocPoint, overwrite ? _rewarder : rewarders[_pid], overwrite);
}
/// @notice Sets the hundred per second to be distributed. Can only be called by the owner.
/// @param _hundredPerSecond The shares of Hundred to be distributed per second.
function setHundredPerSecond(uint _hundredPerSecond) public onlyOwner {
hundredPerSecond = _hundredPerSecond;
emit LogHundredPerSecond(_hundredPerSecond);
}
/// @notice View function to see pending HUNDRED on frontend.
/// @param _pid The index of the pool. See `poolInfo`.
/// @param _user Address of user.
/// @return pending HUNDRED reward for a given user.
function pendingHundred(uint _pid, address _user) external view returns (uint pending) {
PoolInfo memory pool = poolInfo[_pid];
UserInfo storage user = userInfo[_pid][_user];
uint accHundredPerShare = pool.accHundredPerShare;
uint lpSupply = lpTokens[_pid].balanceOf(address(this));
if (block.timestamp > pool.lastRewardTime && lpSupply != 0 && totalAllocPoint != 0) {
uint time = block.timestamp - pool.lastRewardTime;
uint hundredReward = time * hundredPerSecond * pool.allocPoint / totalAllocPoint;
accHundredPerShare = accHundredPerShare + hundredReward * ACC_HUNDRED_PRECISION / lpSupply;
}
pending = uint256(int256(user.shares * accHundredPerShare / ACC_HUNDRED_PRECISION) - user.rewardDebt);
}
/// @notice Update reward variables for all pools. Be careful of gas spending!
/// @param pids Pool IDs of all to be updated. Make sure to update all active pools.
function massUpdatePools(uint[] calldata pids) external {
uint len = pids.length;
for (uint i = 0; i < len; ++i) {
updatePool(pids[i]);
}
}
/// @notice Update reward variables of the given pool.
/// @param pid The index of the pool. See `poolInfo`.
/// @return pool Returns the pool that was updated.
function updatePool(uint pid) public returns (PoolInfo memory pool) {
pool = poolInfo[pid];
if (block.timestamp > pool.lastRewardTime) {
uint lpSupply = lpTokens[pid].balanceOf(address(this));
if (lpSupply != 0 && totalAllocPoint != 0) {
uint time = block.timestamp - pool.lastRewardTime;
uint hundredReward = time * hundredPerSecond * pool.allocPoint / totalAllocPoint;
pool.accHundredPerShare = uint128(pool.accHundredPerShare + hundredReward * ACC_HUNDRED_PRECISION / lpSupply);
}
pool.lastRewardTime = uint64(block.timestamp);
poolInfo[pid] = pool;
emit LogUpdatePool(pid, pool.lastRewardTime, lpSupply, pool.accHundredPerShare);
}
}
/// @notice Deposit the underlying token to the BAMM pool, then deposit the BAMM LP token to MiniChef.
/// @param pid The index of the pool. See `poolInfo`.
/// @param underlyingAmount Underlying token shares to deposit.
/// @param to The receiver of the deposit benefit.
function deposit(uint pid, uint underlyingAmount, address to) public {
underlyingTokens[pid].safeTransferFrom(msg.sender, address(this), underlyingAmount);
uint oldShares = lpTokens[pid].balanceOf(address(this));
underlyingTokens[pid].approve(address(lpTokens[pid]), underlyingAmount);
lpTokens[pid].deposit(underlyingAmount);
uint newShares = lpTokens[pid].balanceOf(address(this)) - oldShares;
PoolInfo memory pool = updatePool(pid);
UserInfo storage user = userInfo[pid][to];
// Effects
user.shares = user.shares + newShares;
user.rewardDebt = user.rewardDebt + int256(newShares * pool.accHundredPerShare / ACC_HUNDRED_PRECISION);
// Interactions
IRewarder _rewarder = rewarders[pid];
if (address(_rewarder) != address(0)) {
_rewarder.onHundredReward(pid, to, to, 0, user.shares);
}
emit Deposit(msg.sender, pid, newShares, to);
}
function _withdrawFromBAMM(uint pid, uint shares, address to) internal {
uint oldEthBalance = address(this).balance;
uint oldUnderlyingBalance = underlyingTokens[pid].balanceOf(address(this));
lpTokens[pid].withdraw(shares);
uint newUnderlyingTokens = underlyingTokens[pid].balanceOf(address(this)) - oldUnderlyingBalance;
underlyingTokens[pid].safeTransfer(to, newUnderlyingTokens);
uint newEth = address(this).balance - oldEthBalance;
if (newEth > 0) {
(bool success, ) = to.call{ value: newEth }(""); // re-entry is fine here
require(success, "withdraw: sending ETH failed");
}
emit Withdraw(msg.sender, pid, shares, to);
}
/// @notice Withdraw LP tokens from BProtocolChef without harvesting.
/// @param pid The index of the pool. See `poolInfo`.
/// @param shares LP token shares to withdraw.
/// @param to Receiver of the LP tokens.
function withdraw(uint pid, uint shares, address to) public {
require(shares > 0, "Can't withdraw 0 shares");
PoolInfo memory pool = updatePool(pid);
UserInfo storage user = userInfo[pid][msg.sender];
// Effects
user.rewardDebt = user.rewardDebt - int256(shares * pool.accHundredPerShare / ACC_HUNDRED_PRECISION);
user.shares = user.shares - shares;
// Interactions
IRewarder _rewarder = rewarders[pid];
if (address(_rewarder) != address(0)) {
_rewarder.onHundredReward(pid, msg.sender, to, 0, user.shares);
}
_withdrawFromBAMM(pid, shares, to);
}
/// @notice Harvest proceeds for transaction sender to `to`.
/// @param pid The index of the pool. See `poolInfo`.
/// @param to Receiver of HUNDRED rewards.
function harvest(uint pid, address to) public {
PoolInfo memory pool = updatePool(pid);
UserInfo storage user = userInfo[pid][msg.sender];
int256 accumulatedHundred = int256(user.shares * pool.accHundredPerShare / ACC_HUNDRED_PRECISION);
uint _pendingHundred = uint256(accumulatedHundred - user.rewardDebt);
// Effects
user.rewardDebt = accumulatedHundred;
// Interactions
if (_pendingHundred != 0) {
Hundred.safeTransfer(to, _pendingHundred);
}
IRewarder _rewarder = rewarders[pid];
if (address(_rewarder) != address(0)) {
_rewarder.onHundredReward(pid, msg.sender, to, _pendingHundred, user.shares);
}
emit Harvest(msg.sender, pid, _pendingHundred);
}
/// @notice Withdraw LP tokens from BProtocolChef and harvest proceeds for transaction sender to `to`.
/// @param pid The index of the pool. See `poolInfo`.
/// @param shares LP token shares to withdraw.
/// @param to Receiver of the LP tokens and HUNDRED rewards.
function withdrawAndHarvest(uint pid, uint shares, address to) public {
withdraw(pid, shares, to);
harvest(pid, to);
}
/// @notice Withdraw without caring about rewards. EMERGENCY ONLY.
/// @param pid The index of the pool. See `poolInfo`.
/// @param to Receiver of the LP tokens.
function emergencyWithdraw(uint pid, address to) public {
UserInfo storage user = userInfo[pid][msg.sender];
uint shares = user.shares;
user.shares = 0;
user.rewardDebt = 0;
IRewarder _rewarder = rewarders[pid];
if (address(_rewarder) != address(0)) {
_rewarder.onHundredReward(pid, msg.sender, to, 0, 0);
}
// Note: transfer can fail or succeed if `shares` is zero.
_withdrawFromBAMM(pid, shares, to);
emit EmergencyWithdraw(msg.sender, pid, shares, to);
}
receive() external payable {}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.3.2 (access/Ownable.sol)
pragma solidity ^0.8.0;
/**
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
}
/**
* @dev Contract module which provides a basic access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* By default, the owner account will be the one that deploys the contract. This
* can later be changed with {transferOwnership}.
*
* This module is used through inheritance. It will make available the modifier
* `onlyOwner`, which can be applied to your functions to restrict their use to
* the owner.
*/
abstract contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor() {
_transferOwnership(_msgSender());
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
require(owner() == _msgSender(), "Ownable: caller is not the owner");
_;
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions anymore. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby removing any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
_transferOwnership(address(0));
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
_transferOwnership(newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Internal function without access restriction.
*/
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}// SPDX-License-Identifier: MIT
pragma solidity 0.8.7;
/**
* @dev Interface of the ERC20 standard as defined in the EIP.
*/
interface IERC20 {
function totalSupply() external view returns (uint);
function decimals() external view returns (uint8);
function balanceOf(address account) external view returns (uint);
function transfer(address recipient, uint shares) external returns (bool);
function allowance(address owner, address spender) external view returns (uint);
function approve(address spender, uint shares) external returns (bool);
function transferFrom(address sender, address recipient, uint shares) external returns (bool);
function permit(address target, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
function transferWithPermit(address target, address to, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external returns (bool);
event Transfer(address indexed from, address indexed to, uint value);
event Approval(address indexed owner, address indexed spender, uint value);
}
library Address {
function isContract(address account) internal view returns (bool) {
bytes32 codehash;
bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
// solhint-disable-next-line no-inline-assembly
assembly { codehash := extcodehash(account) }
return (codehash != 0x0 && codehash != accountHash);
}
}
library SafeERC20 {
using Address for address;
function safeTransfer(IERC20 token, address to, uint value) internal {
callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
}
function safeTransferFrom(IERC20 token, address from, address to, uint value) internal {
callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
}
function safeApprove(IERC20 token, address spender, uint value) internal {
require((value == 0) || (token.allowance(address(this), spender) == 0),
"SafeERC20: approve from non-zero to non-zero allowance"
);
callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
}
function callOptionalReturn(IERC20 token, bytes memory data) private {
require(address(token).isContract(), "SafeERC20: call to non-contract");
// solhint-disable-next-line avoid-low-level-calls
(bool success, bytes memory returndata) = address(token).call(data);
require(success, "SafeERC20: low-level call failed");
if (returndata.length > 0) { // Return data is optional
// solhint-disable-next-line max-line-length
require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
}
}
}{
"optimizer": {
"enabled": true,
"runs": 200
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"abi"
]
}
},
"libraries": {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"contract IERC20","name":"_hundred","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"EmergencyWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"}],"name":"Harvest","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"hundredPerSecond","type":"uint256"}],"name":"LogHundredPerSecond","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"allocPoint","type":"uint256"},{"indexed":true,"internalType":"contract IERC20","name":"lpToken","type":"address"},{"indexed":true,"internalType":"contract IRewarder","name":"rewarder","type":"address"}],"name":"LogPoolAddition","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"allocPoint","type":"uint256"},{"indexed":true,"internalType":"contract IRewarder","name":"rewarder","type":"address"},{"indexed":false,"internalType":"bool","name":"overwrite","type":"bool"}],"name":"LogSetPool","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint64","name":"lastRewardTime","type":"uint64"},{"indexed":false,"internalType":"uint256","name":"lpSupply","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"accHundredPerShare","type":"uint256"}],"name":"LogUpdatePool","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Withdraw","type":"event"},{"inputs":[],"name":"Hundred","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"allocPoint","type":"uint256"},{"internalType":"contract IBAMM","name":"_lpToken","type":"address"},{"internalType":"contract IERC20","name":"_underlyingToken","type":"address"},{"internalType":"contract IRewarder","name":"_rewarder","type":"address"}],"name":"add","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"addedTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"pid","type":"uint256"},{"internalType":"uint256","name":"underlyingAmount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"pid","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"emergencyWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"pid","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"harvest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"hundredPerSecond","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"lpTokens","outputs":[{"internalType":"contract IBAMM","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"pids","type":"uint256[]"}],"name":"massUpdatePools","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"address","name":"_user","type":"address"}],"name":"pendingHundred","outputs":[{"internalType":"uint256","name":"pending","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"poolInfo","outputs":[{"internalType":"uint128","name":"accHundredPerShare","type":"uint128"},{"internalType":"uint64","name":"lastRewardTime","type":"uint64"},{"internalType":"uint64","name":"allocPoint","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"poolLength","outputs":[{"internalType":"uint256","name":"pools","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"rewarders","outputs":[{"internalType":"contract IRewarder","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"_allocPoint","type":"uint256"},{"internalType":"contract IRewarder","name":"_rewarder","type":"address"},{"internalType":"bool","name":"overwrite","type":"bool"}],"name":"set","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_hundredPerSecond","type":"uint256"}],"name":"setHundredPerSecond","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalAllocPoint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"underlyingTokens","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"pid","type":"uint256"}],"name":"updatePool","outputs":[{"components":[{"internalType":"uint128","name":"accHundredPerShare","type":"uint128"},{"internalType":"uint64","name":"lastRewardTime","type":"uint64"},{"internalType":"uint64","name":"allocPoint","type":"uint64"}],"internalType":"struct BProtocolChef.PoolInfo","name":"pool","type":"tuple"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"userInfo","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"int256","name":"rewardDebt","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"pid","type":"uint256"},{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"pid","type":"uint256"},{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"withdrawAndHarvest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60a06040523480156200001157600080fd5b50604051620022e6380380620022e68339810160408190526200003491620000a5565b6200003f3362000055565b60601b6001600160601b031916608052620000d7565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060208284031215620000b857600080fd5b81516001600160a01b0381168114620000d057600080fd5b9392505050565b60805160601c6121e9620000fd600039600081816101b3015261076a01526121e96000f3fe60806040526004361061014f5760003560e01c8063715018a6116100b657806393f1a40b1161006f57806393f1a40b14610437578063a3bf224b1461048b578063d1abb907146104ab578063d7657ea7146104cb578063f2fde38b146104eb578063fcf8770f1461050b57600080fd5b8063715018a61461036457806379d12ffb1461037957806388bba42f146103b95780638aafbaf7146103d95780638da5cb5b146103f95780638dbdbe6d1461041757600080fd5b80631bb5e2dc116101085780631bb5e2dc146102725780631e0e20e514610292578063266f24b7146102a85780632f940c70146102c857806351eb05a6146102e857806357a5b58c1461034457600080fd5b8063081e3eda1461015b5780630ad58d2f1461017f57806312bd3962146101a15780631526fe27146101ed57806317caf6f11461023c57806318fccc761461025257600080fd5b3661015657005b600080fd5b34801561016757600080fd5b506001545b6040519081526020015b60405180910390f35b34801561018b57600080fd5b5061019f61019a366004611f42565b61052b565b005b3480156101ad57600080fd5b506101d57f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610176565b3480156101f957600080fd5b5061020d610208366004611e8d565b6106a2565b604080516001600160801b0390941684526001600160401b039283166020850152911690820152606001610176565b34801561024857600080fd5b5061016c60075481565b34801561025e57600080fd5b5061019f61026d366004611ebf565b6106e7565b34801561027e57600080fd5b506101d561028d366004611e8d565b61086b565b34801561029e57600080fd5b5061016c60085481565b3480156102b457600080fd5b5061019f6102c3366004611eef565b610895565b3480156102d457600080fd5b5061019f6102e3366004611ebf565b610af0565b3480156102f457600080fd5b50610308610303366004611e8d565b610c12565b6040805182516001600160801b031681526020808401516001600160401b03908116918301919091529282015190921690820152606001610176565b34801561035057600080fd5b5061019f61035f366004611dfc565b610eaf565b34801561037057600080fd5b5061019f610ef3565b34801561038557600080fd5b506103a9610394366004611dd8565b60066020526000908152604090205460ff1681565b6040519015158152602001610176565b3480156103c557600080fd5b5061019f6103d4366004611f7b565b610f29565b3480156103e557600080fd5b5061019f6103f4366004611e8d565b6110b6565b34801561040557600080fd5b506000546001600160a01b03166101d5565b34801561042357600080fd5b5061019f610432366004611f42565b61111b565b34801561044357600080fd5b50610476610452366004611ebf565b60056020908152600092835260408084209091529082529020805460019091015482565b60408051928352602083019190915201610176565b34801561049757600080fd5b506101d56104a6366004611e8d565b61154f565b3480156104b757600080fd5b5061019f6104c6366004611f42565b61155f565b3480156104d757600080fd5b5061016c6104e6366004611ebf565b611579565b3480156104f757600080fd5b5061019f610506366004611dd8565b61177b565b34801561051757600080fd5b506101d5610526366004611e8d565b611816565b600082116105805760405162461bcd60e51b815260206004820152601760248201527f43616e277420776974686472617720302073686172657300000000000000000060448201526064015b60405180910390fd5b600061058b84610c12565b6000858152600560209081526040808320338452909152902081519192509064e8d4a51000906105c4906001600160801b0316866120d4565b6105ce91906120b2565b81600101546105dd91906120f3565b600182015580546105ef908590612132565b81556003805460009190879081106106095761060961217a565b6000918252602090912001546001600160a01b03169050801561068f578154604051635547aa3560e11b81526001600160a01b0383169163aa8f546a9161065c918a9133918a916000919060040161202a565b600060405180830381600087803b15801561067657600080fd5b505af115801561068a573d6000803e3d6000fd5b505050505b61069a868686611826565b505050505050565b600181815481106106b257600080fd5b6000918252602090912001546001600160801b03811691506001600160401b03600160801b8204811691600160c01b90041683565b60006106f283610c12565b6000848152600560209081526040808320338452909152812082518154939450909264e8d4a5100091610730916001600160801b03909116906120d4565b61073a91906120b2565b9050600082600101548261074e91906120f3565b6001840183905590508015610791576107916001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168683611b2a565b6000600387815481106107a6576107a661217a565b6000918252602090912001546001600160a01b03169050801561082b578354604051635547aa3560e11b81526001600160a01b0383169163aa8f546a916107f8918b9133918c9189919060040161202a565b600060405180830381600087803b15801561081257600080fd5b505af1158015610826573d6000803e3d6000fd5b505050505b604051828152879033907f71bab65ced2e5750775a0613be067df48ef06cf92a496ebf7663ae06609249549060200160405180910390a350505050505050565b6002818154811061087b57600080fd5b6000918252602090912001546001600160a01b0316905081565b6000546001600160a01b031633146108bf5760405162461bcd60e51b815260040161057790611ff5565b6001600160a01b03831660009081526006602052604090205460ff161561091e5760405162461bcd60e51b8152602060048201526013602482015272151bdad95b88185b1c9958591e481859191959606a1b6044820152606401610577565b8360075461092c919061209a565b60075560028054600181810183557f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace90910180546001600160a01b038088166001600160a01b03199283168117909355600380548086019091557fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180548783169084168117909155600480548087019091557f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01805492891692909316919091179091556040805160608101825260008082526001600160401b0342811660208481019182528d83168587019081528954808b018b558a865295517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf69096018054935191518516600160c01b026001600160c01b0392909516600160801b026001600160c01b03199094166001600160801b039790971696909617929092179190911691909117909255848152600690915220805460ff19168417905592549091610ab791612132565b6040518781527f81ee0f8c5c46e2cb41984886f77a84181724abb86c32a5f6de539b07509d45e59060200160405180910390a450505050565b60008281526005602090815260408083203384529091528120805482825560018201839055600380549293919286908110610b2d57610b2d61217a565b6000918252602090912001546001600160a01b031690508015610bb257604051635547aa3560e11b81526001600160a01b0382169063aa8f546a90610b7f90889033908990600090819060040161202a565b600060405180830381600087803b158015610b9957600080fd5b505af1158015610bad573d6000803e3d6000fd5b505050505b610bbd858386611826565b836001600160a01b031685336001600160a01b03167f2cac5e20e1541d836381527a43f651851e302817b71dc8e810284e69210c1c6b85604051610c0391815260200190565b60405180910390a45050505050565b604080516060810182526000808252602082018190529181019190915260018281548110610c4257610c4261217a565b60009182526020918290206040805160608101825292909101546001600160801b03811683526001600160401b03600160801b82048116948401859052600160c01b90910416908201529150421115610eaa57600060028381548110610caa57610caa61217a565b6000918252602090912001546040516370a0823160e01b81523060048201526001600160a01b03909116906370a082319060240160206040518083038186803b158015610cf657600080fd5b505afa158015610d0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2e9190611ea6565b90508015801590610d40575060075415155b15610dd657600082602001516001600160401b031642610d609190612132565b9050600060075484604001516001600160401b031660085484610d8391906120d4565b610d8d91906120d4565b610d9791906120b2565b905082610da964e8d4a51000836120d4565b610db391906120b2565b8451610dc891906001600160801b031661209a565b6001600160801b0316845250505b6001600160401b03421660208301526001805483919085908110610dfc57610dfc61217a565b6000918252602091829020835191018054848401516040958601516001600160401b03908116600160c01b026001600160c01b03928216600160801b026001600160c01b03199094166001600160801b039687161793909317919091169190911790915585830151865185519190921681529283018590521681830152905184917f0fc9545022a542541ad085d091fb09a2ab36fee366a4576ab63714ea907ad353919081900360600190a2505b919050565b8060005b81811015610eed57610edc848483818110610ed057610ed061217a565b90506020020135610c12565b50610ee681612149565b9050610eb3565b50505050565b6000546001600160a01b03163314610f1d5760405162461bcd60e51b815260040161057790611ff5565b610f276000611b8d565b565b6000546001600160a01b03163314610f535760405162461bcd60e51b815260040161057790611ff5565b8260018581548110610f6757610f6761217a565b600091825260209091200154600754610f9091600160c01b90046001600160401b031690612132565b610f9a919061209a565b6007819055508260018581548110610fb457610fb461217a565b9060005260206000200160000160186101000a8154816001600160401b0302191690836001600160401b03160217905550801561102e578160038581548110610fff57610fff61217a565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b8061106057600384815481106110465761104661217a565b6000918252602090912001546001600160a01b0316611062565b815b6001600160a01b0316847f95895a6ab1df54420d241b55243258a33e61b2194db66c1179ec521aae8e186585846040516110a89291909182521515602082015260400190565b60405180910390a350505050565b6000546001600160a01b031633146110e05760405162461bcd60e51b815260040161057790611ff5565b60088190556040518181527fb52db2e58a94356d20ff3b2e588c68aaff0bae872a6bc0de65c7644f16d485049060200160405180910390a150565b611151333084600487815481106111345761113461217a565b6000918252602090912001546001600160a01b0316929190611bdd565b6000600284815481106111665761116661217a565b6000918252602090912001546040516370a0823160e01b81523060048201526001600160a01b03909116906370a082319060240160206040518083038186803b1580156111b257600080fd5b505afa1580156111c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ea9190611ea6565b9050600484815481106111ff576111ff61217a565b600091825260209091200154600280546001600160a01b039092169163095ea7b39190879081106112325761123261217a565b60009182526020909120015460405160e083901b6001600160e01b03191681526001600160a01b03909116600482015260248101869052604401602060405180830381600087803b15801561128657600080fd5b505af115801561129a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112be9190611e70565b50600284815481106112d2576112d261217a565b60009182526020909120015460405163b6b55f2560e01b8152600481018590526001600160a01b039091169063b6b55f2590602401600060405180830381600087803b15801561132157600080fd5b505af1158015611335573d6000803e3d6000fd5b505050506000816002868154811061134f5761134f61217a565b6000918252602090912001546040516370a0823160e01b81523060048201526001600160a01b03909116906370a082319060240160206040518083038186803b15801561139b57600080fd5b505afa1580156113af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d39190611ea6565b6113dd9190612132565b905060006113ea86610c12565b60008781526005602090815260408083206001600160a01b0389168452909152902080549192509061141d90849061209a565b8155815164e8d4a510009061143b906001600160801b0316856120d4565b61144591906120b2565b81600101546114549190612059565b81600101819055506000600388815481106114715761147161217a565b6000918252602090912001546001600160a01b0316905080156114f7578154604051635547aa3560e11b81526001600160a01b0383169163aa8f546a916114c4918c918b9182916000919060040161202a565b600060405180830381600087803b1580156114de57600080fd5b505af11580156114f2573d6000803e3d6000fd5b505050505b856001600160a01b031688336001600160a01b03167f02d7e648dd130fc184d383e55bb126ac4c9c60e8f94bf05acdf557ba2d540b478760405161153d91815260200190565b60405180910390a45050505050505050565b6004818154811061087b57600080fd5b61156a83838361052b565b61157483826106e7565b505050565b6000806001848154811061158f5761158f61217a565b600091825260208083206040805160608101825291909301546001600160801b0380821683526001600160401b03600160801b8304811684860152600160c01b90920490911682850152888552600583528385206001600160a01b03891686529092529183208251600280549496509194921692889081106116135761161361217a565b6000918252602090912001546040516370a0823160e01b81523060048201526001600160a01b03909116906370a082319060240160206040518083038186803b15801561165f57600080fd5b505afa158015611673573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116979190611ea6565b905083602001516001600160401b0316421180156116b457508015155b80156116c1575060075415155b1561174357600084602001516001600160401b0316426116e19190612132565b9050600060075486604001516001600160401b03166008548461170491906120d4565b61170e91906120d4565b61171891906120b2565b90508261172a64e8d4a51000836120d4565b61173491906120b2565b61173e908561209a565b935050505b6001830154835464e8d4a510009061175c9085906120d4565b61176691906120b2565b61177091906120f3565b979650505050505050565b6000546001600160a01b031633146117a55760405162461bcd60e51b815260040161057790611ff5565b6001600160a01b03811661180a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610577565b61181381611b8d565b50565b6003818154811061087b57600080fd5b60004790506000600485815481106118405761184061217a565b6000918252602090912001546040516370a0823160e01b81523060048201526001600160a01b03909116906370a082319060240160206040518083038186803b15801561188c57600080fd5b505afa1580156118a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118c49190611ea6565b9050600285815481106118d9576118d961217a565b600091825260209091200154604051632e1a7d4d60e01b8152600481018690526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561192857600080fd5b505af115801561193c573d6000803e3d6000fd5b50505050600081600487815481106119565761195661217a565b6000918252602090912001546040516370a0823160e01b81523060048201526001600160a01b03909116906370a082319060240160206040518083038186803b1580156119a257600080fd5b505afa1580156119b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119da9190611ea6565b6119e49190612132565b9050611a1a8482600489815481106119fe576119fe61217a565b6000918252602090912001546001600160a01b03169190611b2a565b6000611a268447612132565b90508015611ad3576000856001600160a01b03168260405160006040518083038185875af1925050503d8060008114611a7b576040519150601f19603f3d011682016040523d82523d6000602084013e611a80565b606091505b5050905080611ad15760405162461bcd60e51b815260206004820152601c60248201527f77697468647261773a2073656e64696e6720455448206661696c6564000000006044820152606401610577565b505b846001600160a01b031687336001600160a01b03167f8166bf25f8a2b7ed3c85049207da4358d16edbed977d23fa2ee6f0dde3ec213289604051611b1991815260200190565b60405180910390a450505050505050565b6040516001600160a01b03831660248201526044810182905261157490849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611c15565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040516001600160a01b0380851660248301528316604482015260648101829052610eed9085906323b872dd60e01b90608401611b56565b611c27826001600160a01b0316611d9c565b611c735760405162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e7472616374006044820152606401610577565b600080836001600160a01b031683604051611c8e9190611fba565b6000604051808303816000865af19150503d8060008114611ccb576040519150601f19603f3d011682016040523d82523d6000602084013e611cd0565b606091505b509150915081611d225760405162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65646044820152606401610577565b805115610eed5780806020019051810190611d3d9190611e70565b610eed5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610577565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708115801590611dd05750808214155b949350505050565b600060208284031215611dea57600080fd5b8135611df581612190565b9392505050565b60008060208385031215611e0f57600080fd5b82356001600160401b0380821115611e2657600080fd5b818501915085601f830112611e3a57600080fd5b813581811115611e4957600080fd5b8660208260051b8501011115611e5e57600080fd5b60209290920196919550909350505050565b600060208284031215611e8257600080fd5b8151611df5816121a5565b600060208284031215611e9f57600080fd5b5035919050565b600060208284031215611eb857600080fd5b5051919050565b60008060408385031215611ed257600080fd5b823591506020830135611ee481612190565b809150509250929050565b60008060008060808587031215611f0557600080fd5b843593506020850135611f1781612190565b92506040850135611f2781612190565b91506060850135611f3781612190565b939692955090935050565b600080600060608486031215611f5757600080fd5b83359250602084013591506040840135611f7081612190565b809150509250925092565b60008060008060808587031215611f9157600080fd5b84359350602085013592506040850135611faa81612190565b91506060850135611f37816121a5565b6000825160005b81811015611fdb5760208186018101518583015201611fc1565b81811115611fea576000828501525b509190910192915050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b9485526001600160a01b0393841660208601529190921660408401526060830191909152608082015260a00190565b600080821280156001600160ff1b038490038513161561207b5761207b612164565b600160ff1b839003841281161561209457612094612164565b50500190565b600082198211156120ad576120ad612164565b500190565b6000826120cf57634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156120ee576120ee612164565b500290565b60008083128015600160ff1b85018412161561211157612111612164565b6001600160ff1b038401831381161561212c5761212c612164565b50500390565b60008282101561214457612144612164565b500390565b600060001982141561215d5761215d612164565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461181357600080fd5b801515811461181357600080fdfea2646970667358221220e610679f885ec401a5ad557450f166e0fef18ffe7aa3a6876397f866cc63d0d064736f6c6343000807003300000000000000000000000010010078a54396f62c96df8532dc2b4847d47ed3
Deployed Bytecode
0x60806040526004361061014f5760003560e01c8063715018a6116100b657806393f1a40b1161006f57806393f1a40b14610437578063a3bf224b1461048b578063d1abb907146104ab578063d7657ea7146104cb578063f2fde38b146104eb578063fcf8770f1461050b57600080fd5b8063715018a61461036457806379d12ffb1461037957806388bba42f146103b95780638aafbaf7146103d95780638da5cb5b146103f95780638dbdbe6d1461041757600080fd5b80631bb5e2dc116101085780631bb5e2dc146102725780631e0e20e514610292578063266f24b7146102a85780632f940c70146102c857806351eb05a6146102e857806357a5b58c1461034457600080fd5b8063081e3eda1461015b5780630ad58d2f1461017f57806312bd3962146101a15780631526fe27146101ed57806317caf6f11461023c57806318fccc761461025257600080fd5b3661015657005b600080fd5b34801561016757600080fd5b506001545b6040519081526020015b60405180910390f35b34801561018b57600080fd5b5061019f61019a366004611f42565b61052b565b005b3480156101ad57600080fd5b506101d57f00000000000000000000000010010078a54396f62c96df8532dc2b4847d47ed381565b6040516001600160a01b039091168152602001610176565b3480156101f957600080fd5b5061020d610208366004611e8d565b6106a2565b604080516001600160801b0390941684526001600160401b039283166020850152911690820152606001610176565b34801561024857600080fd5b5061016c60075481565b34801561025e57600080fd5b5061019f61026d366004611ebf565b6106e7565b34801561027e57600080fd5b506101d561028d366004611e8d565b61086b565b34801561029e57600080fd5b5061016c60085481565b3480156102b457600080fd5b5061019f6102c3366004611eef565b610895565b3480156102d457600080fd5b5061019f6102e3366004611ebf565b610af0565b3480156102f457600080fd5b50610308610303366004611e8d565b610c12565b6040805182516001600160801b031681526020808401516001600160401b03908116918301919091529282015190921690820152606001610176565b34801561035057600080fd5b5061019f61035f366004611dfc565b610eaf565b34801561037057600080fd5b5061019f610ef3565b34801561038557600080fd5b506103a9610394366004611dd8565b60066020526000908152604090205460ff1681565b6040519015158152602001610176565b3480156103c557600080fd5b5061019f6103d4366004611f7b565b610f29565b3480156103e557600080fd5b5061019f6103f4366004611e8d565b6110b6565b34801561040557600080fd5b506000546001600160a01b03166101d5565b34801561042357600080fd5b5061019f610432366004611f42565b61111b565b34801561044357600080fd5b50610476610452366004611ebf565b60056020908152600092835260408084209091529082529020805460019091015482565b60408051928352602083019190915201610176565b34801561049757600080fd5b506101d56104a6366004611e8d565b61154f565b3480156104b757600080fd5b5061019f6104c6366004611f42565b61155f565b3480156104d757600080fd5b5061016c6104e6366004611ebf565b611579565b3480156104f757600080fd5b5061019f610506366004611dd8565b61177b565b34801561051757600080fd5b506101d5610526366004611e8d565b611816565b600082116105805760405162461bcd60e51b815260206004820152601760248201527f43616e277420776974686472617720302073686172657300000000000000000060448201526064015b60405180910390fd5b600061058b84610c12565b6000858152600560209081526040808320338452909152902081519192509064e8d4a51000906105c4906001600160801b0316866120d4565b6105ce91906120b2565b81600101546105dd91906120f3565b600182015580546105ef908590612132565b81556003805460009190879081106106095761060961217a565b6000918252602090912001546001600160a01b03169050801561068f578154604051635547aa3560e11b81526001600160a01b0383169163aa8f546a9161065c918a9133918a916000919060040161202a565b600060405180830381600087803b15801561067657600080fd5b505af115801561068a573d6000803e3d6000fd5b505050505b61069a868686611826565b505050505050565b600181815481106106b257600080fd5b6000918252602090912001546001600160801b03811691506001600160401b03600160801b8204811691600160c01b90041683565b60006106f283610c12565b6000848152600560209081526040808320338452909152812082518154939450909264e8d4a5100091610730916001600160801b03909116906120d4565b61073a91906120b2565b9050600082600101548261074e91906120f3565b6001840183905590508015610791576107916001600160a01b037f00000000000000000000000010010078a54396f62c96df8532dc2b4847d47ed3168683611b2a565b6000600387815481106107a6576107a661217a565b6000918252602090912001546001600160a01b03169050801561082b578354604051635547aa3560e11b81526001600160a01b0383169163aa8f546a916107f8918b9133918c9189919060040161202a565b600060405180830381600087803b15801561081257600080fd5b505af1158015610826573d6000803e3d6000fd5b505050505b604051828152879033907f71bab65ced2e5750775a0613be067df48ef06cf92a496ebf7663ae06609249549060200160405180910390a350505050505050565b6002818154811061087b57600080fd5b6000918252602090912001546001600160a01b0316905081565b6000546001600160a01b031633146108bf5760405162461bcd60e51b815260040161057790611ff5565b6001600160a01b03831660009081526006602052604090205460ff161561091e5760405162461bcd60e51b8152602060048201526013602482015272151bdad95b88185b1c9958591e481859191959606a1b6044820152606401610577565b8360075461092c919061209a565b60075560028054600181810183557f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace90910180546001600160a01b038088166001600160a01b03199283168117909355600380548086019091557fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180548783169084168117909155600480548087019091557f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01805492891692909316919091179091556040805160608101825260008082526001600160401b0342811660208481019182528d83168587019081528954808b018b558a865295517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf69096018054935191518516600160c01b026001600160c01b0392909516600160801b026001600160c01b03199094166001600160801b039790971696909617929092179190911691909117909255848152600690915220805460ff19168417905592549091610ab791612132565b6040518781527f81ee0f8c5c46e2cb41984886f77a84181724abb86c32a5f6de539b07509d45e59060200160405180910390a450505050565b60008281526005602090815260408083203384529091528120805482825560018201839055600380549293919286908110610b2d57610b2d61217a565b6000918252602090912001546001600160a01b031690508015610bb257604051635547aa3560e11b81526001600160a01b0382169063aa8f546a90610b7f90889033908990600090819060040161202a565b600060405180830381600087803b158015610b9957600080fd5b505af1158015610bad573d6000803e3d6000fd5b505050505b610bbd858386611826565b836001600160a01b031685336001600160a01b03167f2cac5e20e1541d836381527a43f651851e302817b71dc8e810284e69210c1c6b85604051610c0391815260200190565b60405180910390a45050505050565b604080516060810182526000808252602082018190529181019190915260018281548110610c4257610c4261217a565b60009182526020918290206040805160608101825292909101546001600160801b03811683526001600160401b03600160801b82048116948401859052600160c01b90910416908201529150421115610eaa57600060028381548110610caa57610caa61217a565b6000918252602090912001546040516370a0823160e01b81523060048201526001600160a01b03909116906370a082319060240160206040518083038186803b158015610cf657600080fd5b505afa158015610d0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2e9190611ea6565b90508015801590610d40575060075415155b15610dd657600082602001516001600160401b031642610d609190612132565b9050600060075484604001516001600160401b031660085484610d8391906120d4565b610d8d91906120d4565b610d9791906120b2565b905082610da964e8d4a51000836120d4565b610db391906120b2565b8451610dc891906001600160801b031661209a565b6001600160801b0316845250505b6001600160401b03421660208301526001805483919085908110610dfc57610dfc61217a565b6000918252602091829020835191018054848401516040958601516001600160401b03908116600160c01b026001600160c01b03928216600160801b026001600160c01b03199094166001600160801b039687161793909317919091169190911790915585830151865185519190921681529283018590521681830152905184917f0fc9545022a542541ad085d091fb09a2ab36fee366a4576ab63714ea907ad353919081900360600190a2505b919050565b8060005b81811015610eed57610edc848483818110610ed057610ed061217a565b90506020020135610c12565b50610ee681612149565b9050610eb3565b50505050565b6000546001600160a01b03163314610f1d5760405162461bcd60e51b815260040161057790611ff5565b610f276000611b8d565b565b6000546001600160a01b03163314610f535760405162461bcd60e51b815260040161057790611ff5565b8260018581548110610f6757610f6761217a565b600091825260209091200154600754610f9091600160c01b90046001600160401b031690612132565b610f9a919061209a565b6007819055508260018581548110610fb457610fb461217a565b9060005260206000200160000160186101000a8154816001600160401b0302191690836001600160401b03160217905550801561102e578160038581548110610fff57610fff61217a565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b8061106057600384815481106110465761104661217a565b6000918252602090912001546001600160a01b0316611062565b815b6001600160a01b0316847f95895a6ab1df54420d241b55243258a33e61b2194db66c1179ec521aae8e186585846040516110a89291909182521515602082015260400190565b60405180910390a350505050565b6000546001600160a01b031633146110e05760405162461bcd60e51b815260040161057790611ff5565b60088190556040518181527fb52db2e58a94356d20ff3b2e588c68aaff0bae872a6bc0de65c7644f16d485049060200160405180910390a150565b611151333084600487815481106111345761113461217a565b6000918252602090912001546001600160a01b0316929190611bdd565b6000600284815481106111665761116661217a565b6000918252602090912001546040516370a0823160e01b81523060048201526001600160a01b03909116906370a082319060240160206040518083038186803b1580156111b257600080fd5b505afa1580156111c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ea9190611ea6565b9050600484815481106111ff576111ff61217a565b600091825260209091200154600280546001600160a01b039092169163095ea7b39190879081106112325761123261217a565b60009182526020909120015460405160e083901b6001600160e01b03191681526001600160a01b03909116600482015260248101869052604401602060405180830381600087803b15801561128657600080fd5b505af115801561129a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112be9190611e70565b50600284815481106112d2576112d261217a565b60009182526020909120015460405163b6b55f2560e01b8152600481018590526001600160a01b039091169063b6b55f2590602401600060405180830381600087803b15801561132157600080fd5b505af1158015611335573d6000803e3d6000fd5b505050506000816002868154811061134f5761134f61217a565b6000918252602090912001546040516370a0823160e01b81523060048201526001600160a01b03909116906370a082319060240160206040518083038186803b15801561139b57600080fd5b505afa1580156113af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d39190611ea6565b6113dd9190612132565b905060006113ea86610c12565b60008781526005602090815260408083206001600160a01b0389168452909152902080549192509061141d90849061209a565b8155815164e8d4a510009061143b906001600160801b0316856120d4565b61144591906120b2565b81600101546114549190612059565b81600101819055506000600388815481106114715761147161217a565b6000918252602090912001546001600160a01b0316905080156114f7578154604051635547aa3560e11b81526001600160a01b0383169163aa8f546a916114c4918c918b9182916000919060040161202a565b600060405180830381600087803b1580156114de57600080fd5b505af11580156114f2573d6000803e3d6000fd5b505050505b856001600160a01b031688336001600160a01b03167f02d7e648dd130fc184d383e55bb126ac4c9c60e8f94bf05acdf557ba2d540b478760405161153d91815260200190565b60405180910390a45050505050505050565b6004818154811061087b57600080fd5b61156a83838361052b565b61157483826106e7565b505050565b6000806001848154811061158f5761158f61217a565b600091825260208083206040805160608101825291909301546001600160801b0380821683526001600160401b03600160801b8304811684860152600160c01b90920490911682850152888552600583528385206001600160a01b03891686529092529183208251600280549496509194921692889081106116135761161361217a565b6000918252602090912001546040516370a0823160e01b81523060048201526001600160a01b03909116906370a082319060240160206040518083038186803b15801561165f57600080fd5b505afa158015611673573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116979190611ea6565b905083602001516001600160401b0316421180156116b457508015155b80156116c1575060075415155b1561174357600084602001516001600160401b0316426116e19190612132565b9050600060075486604001516001600160401b03166008548461170491906120d4565b61170e91906120d4565b61171891906120b2565b90508261172a64e8d4a51000836120d4565b61173491906120b2565b61173e908561209a565b935050505b6001830154835464e8d4a510009061175c9085906120d4565b61176691906120b2565b61177091906120f3565b979650505050505050565b6000546001600160a01b031633146117a55760405162461bcd60e51b815260040161057790611ff5565b6001600160a01b03811661180a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610577565b61181381611b8d565b50565b6003818154811061087b57600080fd5b60004790506000600485815481106118405761184061217a565b6000918252602090912001546040516370a0823160e01b81523060048201526001600160a01b03909116906370a082319060240160206040518083038186803b15801561188c57600080fd5b505afa1580156118a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118c49190611ea6565b9050600285815481106118d9576118d961217a565b600091825260209091200154604051632e1a7d4d60e01b8152600481018690526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561192857600080fd5b505af115801561193c573d6000803e3d6000fd5b50505050600081600487815481106119565761195661217a565b6000918252602090912001546040516370a0823160e01b81523060048201526001600160a01b03909116906370a082319060240160206040518083038186803b1580156119a257600080fd5b505afa1580156119b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119da9190611ea6565b6119e49190612132565b9050611a1a8482600489815481106119fe576119fe61217a565b6000918252602090912001546001600160a01b03169190611b2a565b6000611a268447612132565b90508015611ad3576000856001600160a01b03168260405160006040518083038185875af1925050503d8060008114611a7b576040519150601f19603f3d011682016040523d82523d6000602084013e611a80565b606091505b5050905080611ad15760405162461bcd60e51b815260206004820152601c60248201527f77697468647261773a2073656e64696e6720455448206661696c6564000000006044820152606401610577565b505b846001600160a01b031687336001600160a01b03167f8166bf25f8a2b7ed3c85049207da4358d16edbed977d23fa2ee6f0dde3ec213289604051611b1991815260200190565b60405180910390a450505050505050565b6040516001600160a01b03831660248201526044810182905261157490849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611c15565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040516001600160a01b0380851660248301528316604482015260648101829052610eed9085906323b872dd60e01b90608401611b56565b611c27826001600160a01b0316611d9c565b611c735760405162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e7472616374006044820152606401610577565b600080836001600160a01b031683604051611c8e9190611fba565b6000604051808303816000865af19150503d8060008114611ccb576040519150601f19603f3d011682016040523d82523d6000602084013e611cd0565b606091505b509150915081611d225760405162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65646044820152606401610577565b805115610eed5780806020019051810190611d3d9190611e70565b610eed5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610577565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708115801590611dd05750808214155b949350505050565b600060208284031215611dea57600080fd5b8135611df581612190565b9392505050565b60008060208385031215611e0f57600080fd5b82356001600160401b0380821115611e2657600080fd5b818501915085601f830112611e3a57600080fd5b813581811115611e4957600080fd5b8660208260051b8501011115611e5e57600080fd5b60209290920196919550909350505050565b600060208284031215611e8257600080fd5b8151611df5816121a5565b600060208284031215611e9f57600080fd5b5035919050565b600060208284031215611eb857600080fd5b5051919050565b60008060408385031215611ed257600080fd5b823591506020830135611ee481612190565b809150509250929050565b60008060008060808587031215611f0557600080fd5b843593506020850135611f1781612190565b92506040850135611f2781612190565b91506060850135611f3781612190565b939692955090935050565b600080600060608486031215611f5757600080fd5b83359250602084013591506040840135611f7081612190565b809150509250925092565b60008060008060808587031215611f9157600080fd5b84359350602085013592506040850135611faa81612190565b91506060850135611f37816121a5565b6000825160005b81811015611fdb5760208186018101518583015201611fc1565b81811115611fea576000828501525b509190910192915050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b9485526001600160a01b0393841660208601529190921660408401526060830191909152608082015260a00190565b600080821280156001600160ff1b038490038513161561207b5761207b612164565b600160ff1b839003841281161561209457612094612164565b50500190565b600082198211156120ad576120ad612164565b500190565b6000826120cf57634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156120ee576120ee612164565b500290565b60008083128015600160ff1b85018412161561211157612111612164565b6001600160ff1b038401831381161561212c5761212c612164565b50500390565b60008282101561214457612144612164565b500390565b600060001982141561215d5761215d612164565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461181357600080fd5b801515811461181357600080fdfea2646970667358221220e610679f885ec401a5ad557450f166e0fef18ffe7aa3a6876397f866cc63d0d064736f6c63430008070033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000010010078a54396f62c96df8532dc2b4847d47ed3
-----Decoded View---------------
Arg [0] : _hundred (address): 0x10010078a54396F62c96dF8532dc2B4847d47ED3
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000010010078a54396f62c96df8532dc2b4847d47ed3
Loading...
Loading
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.