Latest 25 from a total of 13,398 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Deposit | 24539570 | 55 mins ago | IN | 0 ETH | 0.00002803 | ||||
| Authorize And De... | 24539457 | 1 hr ago | IN | 0 ETH | 0.00002099 | ||||
| Deposit | 24539235 | 2 hrs ago | IN | 0 ETH | 0.00003011 | ||||
| Deposit With Per... | 24539016 | 2 hrs ago | IN | 0 ETH | 0.00004806 | ||||
| Deposit With Per... | 24538911 | 3 hrs ago | IN | 0 ETH | 0.00005848 | ||||
| Authorize And De... | 24538690 | 3 hrs ago | IN | 0 ETH | 0.00003361 | ||||
| Deposit | 24538622 | 4 hrs ago | IN | 0 ETH | 0.0000239 | ||||
| Deposit With Per... | 24538553 | 4 hrs ago | IN | 0 ETH | 0.00001622 | ||||
| Deposit With Per... | 24538496 | 4 hrs ago | IN | 0 ETH | 0.00003474 | ||||
| Deposit With Per... | 24538477 | 4 hrs ago | IN | 0 ETH | 0.00002952 | ||||
| Deposit | 24538470 | 4 hrs ago | IN | 0 ETH | 0.00003437 | ||||
| Deposit | 24537860 | 6 hrs ago | IN | 0 ETH | 0.00004086 | ||||
| Deposit | 24537246 | 8 hrs ago | IN | 0 ETH | 0.00002529 | ||||
| Deposit With Per... | 24536989 | 9 hrs ago | IN | 0 ETH | 0.00004457 | ||||
| Deposit | 24535897 | 13 hrs ago | IN | 0 ETH | 0.00006699 | ||||
| Authorize And De... | 24535793 | 13 hrs ago | IN | 0 ETH | 0.00010623 | ||||
| Deposit With Per... | 24535308 | 15 hrs ago | IN | 0 ETH | 0.00071866 | ||||
| Authorize And De... | 24535118 | 15 hrs ago | IN | 0 ETH | 0.00050484 | ||||
| Authorize And De... | 24535081 | 15 hrs ago | IN | 0 ETH | 0.00063609 | ||||
| Deposit | 24534882 | 16 hrs ago | IN | 0 ETH | 0.00050293 | ||||
| Deposit | 24534780 | 16 hrs ago | IN | 0 ETH | 0.00035764 | ||||
| Deposit With Per... | 24534658 | 17 hrs ago | IN | 0 ETH | 0.00081357 | ||||
| Deposit With Per... | 24534619 | 17 hrs ago | IN | 0 ETH | 0.00073755 | ||||
| Authorize And De... | 24534551 | 17 hrs ago | IN | 0 ETH | 0.00038259 | ||||
| Authorize And De... | 24534172 | 19 hrs ago | IN | 0 ETH | 0.00010806 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
SyrupRouter
Compiler Version
v0.8.7+commit.e28d00a7
Optimization Enabled:
Yes with 200 runs
Other Settings:
london EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: BUSL-1.1
pragma solidity 0.8.7;
import { ERC20Helper } from "../modules/erc20-helper/src/ERC20Helper.sol";
import { ISyrupRouter } from "./interfaces/ISyrupRouter.sol";
import {
IERC20Like,
IPoolLike,
IPoolManagerLike,
IPoolPermissionManagerLike
} from "./interfaces/Interfaces.sol";
/*
███████╗██╗ ██╗██████╗ ██╗ ██╗██████╗ ██████╗ ██████╗ ██╗ ██╗████████╗███████╗██████╗
██╔════╝╚██╗ ██╔╝██╔══██╗██║ ██║██╔══██╗ ██╔══██╗██╔═══██╗██║ ██║╚══██╔══╝██╔════╝██╔══██╗
███████╗ ╚████╔╝ ██████╔╝██║ ██║██████╔╝ ██████╔╝██║ ██║██║ ██║ ██║ █████╗ ██████╔╝
╚════██║ ╚██╔╝ ██╔══██╗██║ ██║██╔═══╝ ██╔══██╗██║ ██║██║ ██║ ██║ ██╔══╝ ██╔══██╗
███████║ ██║ ██║ ██║╚██████╔╝██║ ██║ ██║╚██████╔╝╚██████╔╝ ██║ ███████╗██║ ██║
╚══════╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚═╝ ╚══════╝╚═╝ ╚═╝
*/
contract SyrupRouter is ISyrupRouter {
address public immutable override asset;
address public immutable override pool;
address public immutable override poolManager;
address public immutable override poolPermissionManager;
mapping(address => uint256) public override nonces;
constructor(address pool_) {
pool = pool_;
// Get the addresses of all the associated contracts.
address asset_ = asset = IPoolLike(pool_).asset();
address poolManager_ = poolManager = IPoolLike(pool_).manager();
poolPermissionManager = IPoolManagerLike(poolManager_).poolPermissionManager();
// Perform an infinite approval.
require(ERC20Helper.approve(asset_, pool_, type(uint256).max), "SR:C:APPROVE_FAIL");
}
/**************************************************************************************************************************************/
/*** External Functions ***/
/**************************************************************************************************************************************/
function authorizeAndDeposit(
uint256 bitmap_,
uint256 deadline_,
uint8 auth_v,
bytes32 auth_r,
bytes32 auth_s,
uint256 amount_,
bytes32 depositData_
)
external override returns (uint256 shares_)
{
_authorize(deadline_, bitmap_, auth_v, auth_r, auth_s);
shares_ = _deposit(msg.sender, amount_, depositData_);
}
function authorizeAndDepositWithPermit(
uint256 bitmap_,
uint256 auth_deadline_,
uint8 auth_v,
bytes32 auth_r,
bytes32 auth_s,
uint256 amount_,
bytes32 depositData_,
uint256 permit_deadline,
uint8 permit_v_,
bytes32 permit_r_,
bytes32 permit_s_
)
external override returns (uint256 shares_)
{
_authorize(auth_deadline_, bitmap_, auth_v, auth_r, auth_s);
_permit(asset, permit_deadline, amount_, permit_v_, permit_r_, permit_s_);
shares_ = _deposit(msg.sender, amount_, depositData_);
}
function deposit(uint256 amount_, bytes32 depositData_) external override returns (uint256 shares_) {
shares_ = _deposit(msg.sender, amount_, depositData_);
}
function depositWithPermit(
uint256 amount_,
uint256 deadline_,
uint8 v_,
bytes32 r_,
bytes32 s_,
bytes32 depositData_
)
external override returns (uint256 shares_)
{
_permit(asset, deadline_, amount_, v_, r_, s_);
shares_ = _deposit(msg.sender, amount_, depositData_);
}
/**************************************************************************************************************************************/
/*** Internal Functions ***/
/**************************************************************************************************************************************/
function _authorize(uint256 deadline_, uint256 bitmap_, uint8 v_, bytes32 r_, bytes32 s_) internal {
require(deadline_ >= block.timestamp, "SR:A:EXPIRED");
// Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines
// the valid range for s in (301): 0 < s < secp256k1n ÷ 2 + 1, and for v in (302): v ∈ {27, 28}.
require(
uint256(s_) <= uint256(0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) &&
(v_ == 27 || v_ == 28),
"SR:A:MALLEABLE"
);
bytes32 digest_ = keccak256(abi.encodePacked(
"\x19\x01",
block.chainid, // Chain id + address(this) serves as domain separator to avoid replay attacks.
address(this),
msg.sender,
nonces[msg.sender]++,
bitmap_,
deadline_
));
address recoveredAddress_ = ecrecover(digest_, v_, r_, s_);
IPoolPermissionManagerLike ppm_ = IPoolPermissionManagerLike(poolPermissionManager);
// Any valid permission admin can authorize the deposit.
require(recoveredAddress_ != address(0) && ppm_.permissionAdmins(recoveredAddress_), "SR:A:NOT_PERMISSION_ADMIN");
address[] memory lender = new address[](1);
uint256[] memory bitmap = new uint256[](1);
lender[0] = msg.sender;
bitmap[0] = bitmap_;
ppm_.setLenderBitmaps(lender, bitmap);
}
function _deposit(address owner_, uint256 amount_, bytes32 depositData_) internal returns (uint256 shares_) {
// Check the owner has permission to deposit into the pool.
require(
IPoolPermissionManagerLike(poolPermissionManager).hasPermission(poolManager, owner_, "P:deposit"),
"SR:D:NOT_AUTHORIZED"
);
// Pull assets from the owner to the router.
require(ERC20Helper.transferFrom(asset, owner_, address(this), amount_), "SR:D:TRANSFER_FROM_FAIL");
// Deposit assets into the pool and receive the shares personally.
address pool_ = pool;
shares_ = IPoolLike(pool_).deposit(amount_, address(this));
// Route shares back to the caller.
require(ERC20Helper.transfer(pool_, owner_, shares_), "SR:D:TRANSFER_FAIL");
emit DepositData(owner_, amount_, depositData_);
}
function _permit(address asset_, uint256 deadline_, uint256 amount_, uint8 v_, bytes32 r_, bytes32 s_) internal {
uint256 allowance_ = IERC20Like(asset_).allowance(msg.sender, address(this));
if (allowance_ < amount_) {
IERC20Like(asset_).permit(msg.sender, address(this), amount_, deadline_, v_, r_, s_);
}
}
}// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity ^0.8.7;
import { IERC20Like } from "./interfaces/IERC20Like.sol";
/**
* @title Small Library to standardize erc20 token interactions.
*/
library ERC20Helper {
/**************************************************************************************************************************************/
/*** Internal Functions ***/
/**************************************************************************************************************************************/
function transfer(address token_, address to_, uint256 amount_) internal returns (bool success_) {
return _call(token_, abi.encodeWithSelector(IERC20Like.transfer.selector, to_, amount_));
}
function transferFrom(address token_, address from_, address to_, uint256 amount_) internal returns (bool success_) {
return _call(token_, abi.encodeWithSelector(IERC20Like.transferFrom.selector, from_, to_, amount_));
}
function approve(address token_, address spender_, uint256 amount_) internal returns (bool success_) {
// If setting approval to zero fails, return false.
if (!_call(token_, abi.encodeWithSelector(IERC20Like.approve.selector, spender_, uint256(0)))) return false;
// If `amount_` is zero, return true as the previous step already did this.
if (amount_ == uint256(0)) return true;
// Return the result of setting the approval to `amount_`.
return _call(token_, abi.encodeWithSelector(IERC20Like.approve.selector, spender_, amount_));
}
function _call(address token_, bytes memory data_) private returns (bool success_) {
if (token_.code.length == uint256(0)) return false;
bytes memory returnData;
( success_, returnData ) = token_.call(data_);
return success_ && (returnData.length == uint256(0) || abi.decode(returnData, (bool)));
}
}// SPDX-License-Identifier: BUSL-1.1
pragma solidity 0.8.7;
interface ISyrupRouter {
/**
* @dev Optional Deposit Data for off-chain processing.
* @param owner The receiver of the shares.
* @param amount The amount of assets to deposit.
* @param depositData Optional deposit data.
*/
event DepositData(address indexed owner, uint256 amount, bytes32 depositData);
/**
* @dev The address of the underlying asset used by the ERC4626 Vault.
* @return asset The address of the underlying asset.
*/
function asset() external view returns (address asset);
/**
* @dev Authorizes and deposits assets into the Vault.
* @param bitmap_ The bitmap of the permission.
* @param deadline_ The timestamp after which the `authorize` signature is no longer valid.
* @param auth_v ECDSA signature v component.
* @param auth_r ECDSA signature r component.
* @param auth_s ECDSA signature s component.
* @param amount_ The amount of assets to deposit.
* @param depositData_ Optional deposit data.
* @return shares_ The amount of shares minted.
*/
function authorizeAndDeposit(
uint256 bitmap_,
uint256 deadline_,
uint8 auth_v,
bytes32 auth_r,
bytes32 auth_s,
uint256 amount_,
bytes32 depositData_
) external returns (uint256 shares_);
/**
* @dev Authorizes and deposits assets into the Vault with a ERC-2612 `permit`.
* @param bitmap_ The bitmap of the permission.
* @param auth_deadline_ The timestamp after which the `authorize` signature is no longer valid.
* @param auth_v ECDSA signature v component of the authorization.
* @param auth_r ECDSA signature r component of the authorization.
* @param auth_s ECDSA signature s component of the authorization.
* @param amount_ The amount of assets to deposit.
* @param depositData_ Optional deposit data.
* @param permit_deadline The timestamp after which the `permit` signature is no longer valid.
* @param permit_v_ ECDSA signature v component of the token permit.
* @param permit_r_ ECDSA signature r component of the token permit.
* @param permit_s_ ECDSA signature s component of the token permit.
* @return shares_ The amount of shares minted.
*/
function authorizeAndDepositWithPermit(
uint256 bitmap_,
uint256 auth_deadline_,
uint8 auth_v,
bytes32 auth_r,
bytes32 auth_s,
uint256 amount_,
bytes32 depositData_,
uint256 permit_deadline,
uint8 permit_v_,
bytes32 permit_r_,
bytes32 permit_s_
) external returns (uint256 shares_);
/**
* @dev Mints `shares` to sender by depositing `assets` into the Vault.
* @param assets The amount of assets to deposit.
* @param depositData Optional deposit data.
* @return shares The amount of shares minted.
*/
function deposit(uint256 assets, bytes32 depositData) external returns (uint256 shares);
/**
* @dev Does a ERC4626 `deposit` into a Maple Pool with a ERC-2612 `permit`.
* @param amount The amount of assets to deposit.
* @param deadline The timestamp after which the `permit` signature is no longer valid.
* @param v ECDSA signature v component.
* @param r ECDSA signature r component.
* @param s ECDSA signature s component.
* @param depositData Optional deposit data.
* @return shares The amount of shares minted.
*/
function depositWithPermit(uint256 amount, uint256 deadline, uint8 v, bytes32 r, bytes32 s, bytes32 depositData)
external returns (uint256 shares);
/**
* @dev Returns the nonce for the given owner.
* @param owner_ The address of the owner account.
* @return nonce_ The nonce for the given owner.
*/
function nonces(address owner_) external view returns (uint256 nonce_);
/**
* @dev The address of the ERC4626 Vault.
* @return pool The address of the ERC4626 Vault.
*/
function pool() external view returns (address pool);
/**
* @dev The address of the Pool Manager.
* @return poolManager The address of the Pool Manager.
*/
function poolManager() external view returns (address poolManager);
/**
* @dev The address of the Pool Permission Manager.
* @return poolPermissionManager The address of the Pool Permission Manager.
*/
function poolPermissionManager() external view returns (address poolPermissionManager);
}// SPDX-License-Identifier: BUSL-1.1
pragma solidity 0.8.7;
interface IERC20Like {
function allowance(address owner, address spender) external view returns (uint256 allowance);
function approve(address spender, uint256 amount) external returns (bool success);
function permit(address owner, address spender, uint amount, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
function transfer(address recipient, uint256 amount) external returns (bool success);
function transferFrom(address owner, address recipient, uint256 amount) external returns (bool success);
}
interface IPoolLike is IERC20Like {
function asset() external view returns (address asset);
function convertToExitAssets(uint256 shares) external view returns (uint256);
function deposit(uint256 assets, address receiver) external returns (uint256 shares);
function manager() external view returns (address manager);
}
interface IPoolManagerLike {
function poolPermissionManager() external view returns (address poolPermissionManager);
}
interface IPoolPermissionManagerLike {
function hasPermission(address poolManager, address lender, bytes32 functionId) external view returns (bool hasPermission);
function permissionAdmins(address account) external view returns (bool isAdmin);
function setLenderBitmaps(address[] calldata lenders, uint256[] calldata bitmaps) external;
}// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity ^0.8.7;
/// @title Interface of the ERC20 standard as needed by ERC20Helper.
interface IERC20Like {
function approve(address spender_, uint256 amount_) external returns (bool success_);
function transfer(address recipient_, uint256 amount_) external returns (bool success_);
function transferFrom(address owner_, address recipient_, uint256 amount_) external returns (bool success_);
}{
"remappings": [
"address-registry/=modules/address-registry/src/",
"contract-test-utils/=modules/erc20/modules/contract-test-utils/contracts/",
"ds-test/=modules/forge-std/lib/ds-test/src/",
"erc20-helper/=modules/erc20-helper/src/",
"erc20/=modules/erc20/",
"fixed-term-loan-manager/=modules/fixed-term-loan-manager/contracts/",
"fixed-term-loan/=modules/fixed-term-loan/contracts/",
"forge-std/=modules/forge-std/src/",
"globals/=modules/globals/contracts/",
"liquidations/=modules/liquidations/contracts/",
"maple-proxy-factory/=modules/open-term-loan/modules/maple-proxy-factory/",
"non-transparent-proxy/=modules/globals/modules/non-transparent-proxy/",
"ntp/=modules/pool-permission-manager/modules/ntp/",
"open-term-loan-manager/=modules/open-term-loan-manager/contracts/",
"open-term-loan/=modules/open-term-loan/contracts/",
"pool-permission-manager/=modules/pool-permission-manager/contracts/",
"pool/=modules/pool/contracts/",
"proxy-factory/=modules/open-term-loan/modules/maple-proxy-factory/modules/proxy-factory/",
"syrup-router/=modules/syrup-router/",
"withdrawal-manager-cyclical/=modules/withdrawal-manager-cyclical/contracts/",
"withdrawal-manager-queue/=modules/withdrawal-manager-queue/contracts/"
],
"optimizer": {
"enabled": true,
"runs": 200
},
"metadata": {
"useLiteralContent": false,
"bytecodeHash": "ipfs"
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"evmVersion": "london",
"viaIR": false,
"libraries": {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"pool_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"depositData","type":"bytes32"}],"name":"DepositData","type":"event"},{"inputs":[],"name":"asset","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"bitmap_","type":"uint256"},{"internalType":"uint256","name":"deadline_","type":"uint256"},{"internalType":"uint8","name":"auth_v","type":"uint8"},{"internalType":"bytes32","name":"auth_r","type":"bytes32"},{"internalType":"bytes32","name":"auth_s","type":"bytes32"},{"internalType":"uint256","name":"amount_","type":"uint256"},{"internalType":"bytes32","name":"depositData_","type":"bytes32"}],"name":"authorizeAndDeposit","outputs":[{"internalType":"uint256","name":"shares_","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"bitmap_","type":"uint256"},{"internalType":"uint256","name":"auth_deadline_","type":"uint256"},{"internalType":"uint8","name":"auth_v","type":"uint8"},{"internalType":"bytes32","name":"auth_r","type":"bytes32"},{"internalType":"bytes32","name":"auth_s","type":"bytes32"},{"internalType":"uint256","name":"amount_","type":"uint256"},{"internalType":"bytes32","name":"depositData_","type":"bytes32"},{"internalType":"uint256","name":"permit_deadline","type":"uint256"},{"internalType":"uint8","name":"permit_v_","type":"uint8"},{"internalType":"bytes32","name":"permit_r_","type":"bytes32"},{"internalType":"bytes32","name":"permit_s_","type":"bytes32"}],"name":"authorizeAndDepositWithPermit","outputs":[{"internalType":"uint256","name":"shares_","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount_","type":"uint256"},{"internalType":"bytes32","name":"depositData_","type":"bytes32"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"shares_","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount_","type":"uint256"},{"internalType":"uint256","name":"deadline_","type":"uint256"},{"internalType":"uint8","name":"v_","type":"uint8"},{"internalType":"bytes32","name":"r_","type":"bytes32"},{"internalType":"bytes32","name":"s_","type":"bytes32"},{"internalType":"bytes32","name":"depositData_","type":"bytes32"}],"name":"depositWithPermit","outputs":[{"internalType":"uint256","name":"shares_","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pool","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"poolManager","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"poolPermissionManager","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]Contract Creation Code
6101006040523480156200001257600080fd5b5060405162001400380380620014008339810160408190526200003591620003e9565b806001600160a01b031660a0816001600160a01b031660601b815250506000816001600160a01b03166338d52e0f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200008e57600080fd5b505afa158015620000a3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000c99190620003e9565b6001600160a01b03166080816001600160a01b031660601b81525090506000826001600160a01b031663481c6a756040518163ffffffff1660e01b815260040160206040518083038186803b1580156200012257600080fd5b505afa15801562000137573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200015d9190620003e9565b6001600160a01b031660c0816001600160a01b031660601b8152509050806001600160a01b031663e15e990a6040518163ffffffff1660e01b815260040160206040518083038186803b158015620001b457600080fd5b505afa158015620001c9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ef9190620003e9565b6001600160a01b031660e0816001600160a01b031660601b815250506200022582846000196200027360201b620002a31760201c565b6200026a5760405162461bcd60e51b815260206004820152601160248201527014d48e90ce9054141493d59157d1905253607a1b604482015260640160405180910390fd5b50505062000476565b6040516001600160a01b038316602482015260006044820181905290620002dc90859063095ea7b360e01b906064015b60408051808303601f190181529190526020810180516001600160e01b0319939093166001600160e01b03938416179052906200033516565b620002ea575060006200032e565b81620002f9575060016200032e565b6040516001600160a01b0384166024820152604481018390526200032b90859063095ea7b360e01b90606401620002a3565b90505b9392505050565b60006001600160a01b0383163b6200035057506000620003e3565b6060836001600160a01b0316836040516200036c919062000438565b6000604051808303816000865af19150503d8060008114620003ab576040519150601f19603f3d011682016040523d82523d6000602084013e620003b0565b606091505b509092509050818015620003df575080511580620003df575080806020019051810190620003df919062000414565b9150505b92915050565b600060208284031215620003fc57600080fd5b81516001600160a01b03811681146200032e57600080fd5b6000602082840312156200042757600080fd5b815180151581146200032e57600080fd5b6000825160005b818110156200045b57602081860181015185830152016200043f565b818111156200046b576000828501525b509190910192915050565b60805160601c60a05160601c60c05160601c60e05160601c610f15620004eb600039600081816101a9015281816104ce01526108ef0152600081816101820152610489015260008181609d015261062501526000818160e1015281816101d20152818161022501526105960152610f156000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c8063a6d061fb11610066578063a6d061fb14610144578063c9630cb014610157578063d5db8c671461016a578063dc4c90d31461017d578063e15e990a146101a457600080fd5b806316f0115b1461009857806338d52e0f146100dc5780636807c8dc146101035780637ecebe0014610124575b600080fd5b6100bf7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100bf7f000000000000000000000000000000000000000000000000000000000000000081565b610116610111366004610ca9565b6101cb565b6040519081526020016100d3565b610116610132366004610c23565b60006020819052908152604090205481565b610116610152366004610d54565b610211565b610116610165366004610c87565b610269565b610116610178366004610cfa565b61027d565b6100bf7f000000000000000000000000000000000000000000000000000000000000000081565b6100bf7f000000000000000000000000000000000000000000000000000000000000000081565b60006101fb7f0000000000000000000000000000000000000000000000000000000000000000878988888861035a565b610206338884610472565b979650505050505050565b60006102208b8d8c8c8c610745565b61024e7f0000000000000000000000000000000000000000000000000000000000000000868987878761035a565b610259338888610472565b9c9b505050505050505050505050565b6000610276338484610472565b9392505050565b600061028c8789888888610745565b610297338484610472565b98975050505050505050565b6040516001600160a01b03831660248201526000604482018190529061030990859063095ea7b360e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152610aec565b61031557506000610276565b8161032257506001610276565b6040516001600160a01b03841660248201526044810183905261035290859063095ea7b360e01b906064016102d2565b949350505050565b604051636eb1769f60e11b81523360048201523060248201526000906001600160a01b0388169063dd62ed3e9060440160206040518083038186803b1580156103a257600080fd5b505afa1580156103b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103da9190610c6e565b9050848110156104695760405163d505accf60e01b8152336004820152306024820152604481018690526064810187905260ff8516608482015260a4810184905260c481018390526001600160a01b0388169063d505accf9060e401600060405180830381600087803b15801561045057600080fd5b505af1158015610464573d6000803e3d6000fd5b505050505b50505050505050565b604051630dace25b60e31b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152848116602483015268140e99195c1bdcda5d60ba1b60448301526000917f000000000000000000000000000000000000000000000000000000000000000090911690636d6712d89060640160206040518083038186803b15801561051257600080fd5b505afa158015610526573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054a9190610c4c565b6105915760405162461bcd60e51b815260206004820152601360248201527214d48e910e9393d517d055551213d492569151606a1b60448201526064015b60405180910390fd5b6105bd7f0000000000000000000000000000000000000000000000000000000000000000853086610b96565b6106095760405162461bcd60e51b815260206004820152601760248201527f53523a443a5452414e534645525f46524f4d5f4641494c0000000000000000006044820152606401610588565b604051636e553f6560e01b8152600481018490523060248201527f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b03821690636e553f6590604401602060405180830381600087803b15801561067357600080fd5b505af1158015610687573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ab9190610c6e565b91506106b8818684610bda565b6106f95760405162461bcd60e51b815260206004820152601260248201527114d48e910e9514905394d1915497d190525360721b6044820152606401610588565b60408051858152602081018590526001600160a01b038716917fec286cce32dfa9d8e469ef4d4bb77854e3225bc050e97e66bb30fe1e4c2819cb910160405180910390a2509392505050565b428510156107845760405162461bcd60e51b815260206004820152600c60248201526b14d48e904e9156141254915160a21b6044820152606401610588565b7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a081118015906107c457508260ff16601b14806107c457508260ff16601c145b6108015760405162461bcd60e51b815260206004820152600e60248201526d53523a413a4d414c4c4541424c4560901b6044820152606401610588565b33600081815260208190526040812080549192469230928561082283610ea0565b9091555060405161190160f01b602082015260228101949094526bffffffffffffffffffffffff19606093841b811660428601529190921b166056830152606a820152608a810186905260aa810187905260ca0160408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa1580156108e1573d6000803e3d6000fd5b5050604051601f19015191507f000000000000000000000000000000000000000000000000000000000000000090506001600160a01b0382161580159061099c57506040516329206d6f60e01b81526001600160a01b0383811660048301528216906329206d6f9060240160206040518083038186803b15801561096457600080fd5b505afa158015610978573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099c9190610c4c565b6109e85760405162461bcd60e51b815260206004820152601960248201527f53523a413a4e4f545f5045524d495353494f4e5f41444d494e000000000000006044820152606401610588565b6040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602080830190803683370190505090503382600081518110610a4157610a41610ec9565b60200260200101906001600160a01b031690816001600160a01b0316815250508881600081518110610a7557610a75610ec9565b6020908102919091010152604051638551366360e01b81526001600160a01b03841690638551366390610aae9085908590600401610e1c565b600060405180830381600087803b158015610ac857600080fd5b505af1158015610adc573d6000803e3d6000fd5b5050505050505050505050505050565b60006001600160a01b0383163b610b0557506000610b90565b6060836001600160a01b031683604051610b1f9190610de1565b6000604051808303816000865af19150503d8060008114610b5c576040519150601f19603f3d011682016040523d82523d6000602084013e610b61565b606091505b509092509050818015610b8c575080511580610b8c575080806020019051810190610b8c9190610c4c565b9150505b92915050565b6040516001600160a01b0380851660248301528316604482015260648101829052600090610bd19086906323b872dd60e01b906084016102d2565b95945050505050565b6040516001600160a01b03831660248201526044810182905260009061035290859063a9059cbb60e01b906064016102d2565b803560ff81168114610c1e57600080fd5b919050565b600060208284031215610c3557600080fd5b81356001600160a01b038116811461027657600080fd5b600060208284031215610c5e57600080fd5b8151801515811461027657600080fd5b600060208284031215610c8057600080fd5b5051919050565b60008060408385031215610c9a57600080fd5b50508035926020909101359150565b60008060008060008060c08789031215610cc257600080fd5b8635955060208701359450610cd960408801610c0d565b9350606087013592506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a031215610d1557600080fd5b8735965060208801359550610d2c60408901610c0d565b969995985095966060810135965060808101359560a0820135955060c0909101359350915050565b60008060008060008060008060008060006101608c8e031215610d7657600080fd5b8b359a5060208c01359950610d8d60408d01610c0d565b985060608c0135975060808c0135965060a08c0135955060c08c0135945060e08c01359350610dbf6101008d01610c0d565b92506101208c013591506101408c013590509295989b509295989b9093969950565b6000825160005b81811015610e025760208186018101518583015201610de8565b81811115610e11576000828501525b509190910192915050565b604080825283519082018190526000906020906060840190828701845b82811015610e5e5781516001600160a01b031684529284019290840190600101610e39565b5050508381038285015284518082528583019183019060005b81811015610e9357835183529284019291840191600101610e77565b5090979650505050505050565b6000600019821415610ec257634e487b7160e01b600052601160045260246000fd5b5060010190565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220a38b58891ab7994168d4c9e23749cf5df2af465e466744a21c09684cd35b881e64736f6c6343000807003300000000000000000000000080ac24aa929eaf5013f6436cda2a7ba190f5cc0b
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100935760003560e01c8063a6d061fb11610066578063a6d061fb14610144578063c9630cb014610157578063d5db8c671461016a578063dc4c90d31461017d578063e15e990a146101a457600080fd5b806316f0115b1461009857806338d52e0f146100dc5780636807c8dc146101035780637ecebe0014610124575b600080fd5b6100bf7f00000000000000000000000080ac24aa929eaf5013f6436cda2a7ba190f5cc0b81565b6040516001600160a01b0390911681526020015b60405180910390f35b6100bf7f000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4881565b610116610111366004610ca9565b6101cb565b6040519081526020016100d3565b610116610132366004610c23565b60006020819052908152604090205481565b610116610152366004610d54565b610211565b610116610165366004610c87565b610269565b610116610178366004610cfa565b61027d565b6100bf7f0000000000000000000000007ad5ffa5fdf509e30186f4609c2f6269f4b6158f81565b6100bf7f000000000000000000000000be10adce8b6e3e02db384e7fada5395dd113d8b381565b60006101fb7f000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48878988888861035a565b610206338884610472565b979650505050505050565b60006102208b8d8c8c8c610745565b61024e7f000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48868987878761035a565b610259338888610472565b9c9b505050505050505050505050565b6000610276338484610472565b9392505050565b600061028c8789888888610745565b610297338484610472565b98975050505050505050565b6040516001600160a01b03831660248201526000604482018190529061030990859063095ea7b360e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152610aec565b61031557506000610276565b8161032257506001610276565b6040516001600160a01b03841660248201526044810183905261035290859063095ea7b360e01b906064016102d2565b949350505050565b604051636eb1769f60e11b81523360048201523060248201526000906001600160a01b0388169063dd62ed3e9060440160206040518083038186803b1580156103a257600080fd5b505afa1580156103b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103da9190610c6e565b9050848110156104695760405163d505accf60e01b8152336004820152306024820152604481018690526064810187905260ff8516608482015260a4810184905260c481018390526001600160a01b0388169063d505accf9060e401600060405180830381600087803b15801561045057600080fd5b505af1158015610464573d6000803e3d6000fd5b505050505b50505050505050565b604051630dace25b60e31b81526001600160a01b037f0000000000000000000000007ad5ffa5fdf509e30186f4609c2f6269f4b6158f81166004830152848116602483015268140e99195c1bdcda5d60ba1b60448301526000917f000000000000000000000000be10adce8b6e3e02db384e7fada5395dd113d8b390911690636d6712d89060640160206040518083038186803b15801561051257600080fd5b505afa158015610526573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054a9190610c4c565b6105915760405162461bcd60e51b815260206004820152601360248201527214d48e910e9393d517d055551213d492569151606a1b60448201526064015b60405180910390fd5b6105bd7f000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48853086610b96565b6106095760405162461bcd60e51b815260206004820152601760248201527f53523a443a5452414e534645525f46524f4d5f4641494c0000000000000000006044820152606401610588565b604051636e553f6560e01b8152600481018490523060248201527f00000000000000000000000080ac24aa929eaf5013f6436cda2a7ba190f5cc0b906001600160a01b03821690636e553f6590604401602060405180830381600087803b15801561067357600080fd5b505af1158015610687573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ab9190610c6e565b91506106b8818684610bda565b6106f95760405162461bcd60e51b815260206004820152601260248201527114d48e910e9514905394d1915497d190525360721b6044820152606401610588565b60408051858152602081018590526001600160a01b038716917fec286cce32dfa9d8e469ef4d4bb77854e3225bc050e97e66bb30fe1e4c2819cb910160405180910390a2509392505050565b428510156107845760405162461bcd60e51b815260206004820152600c60248201526b14d48e904e9156141254915160a21b6044820152606401610588565b7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a081118015906107c457508260ff16601b14806107c457508260ff16601c145b6108015760405162461bcd60e51b815260206004820152600e60248201526d53523a413a4d414c4c4541424c4560901b6044820152606401610588565b33600081815260208190526040812080549192469230928561082283610ea0565b9091555060405161190160f01b602082015260228101949094526bffffffffffffffffffffffff19606093841b811660428601529190921b166056830152606a820152608a810186905260aa810187905260ca0160408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa1580156108e1573d6000803e3d6000fd5b5050604051601f19015191507f000000000000000000000000be10adce8b6e3e02db384e7fada5395dd113d8b390506001600160a01b0382161580159061099c57506040516329206d6f60e01b81526001600160a01b0383811660048301528216906329206d6f9060240160206040518083038186803b15801561096457600080fd5b505afa158015610978573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099c9190610c4c565b6109e85760405162461bcd60e51b815260206004820152601960248201527f53523a413a4e4f545f5045524d495353494f4e5f41444d494e000000000000006044820152606401610588565b6040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602080830190803683370190505090503382600081518110610a4157610a41610ec9565b60200260200101906001600160a01b031690816001600160a01b0316815250508881600081518110610a7557610a75610ec9565b6020908102919091010152604051638551366360e01b81526001600160a01b03841690638551366390610aae9085908590600401610e1c565b600060405180830381600087803b158015610ac857600080fd5b505af1158015610adc573d6000803e3d6000fd5b5050505050505050505050505050565b60006001600160a01b0383163b610b0557506000610b90565b6060836001600160a01b031683604051610b1f9190610de1565b6000604051808303816000865af19150503d8060008114610b5c576040519150601f19603f3d011682016040523d82523d6000602084013e610b61565b606091505b509092509050818015610b8c575080511580610b8c575080806020019051810190610b8c9190610c4c565b9150505b92915050565b6040516001600160a01b0380851660248301528316604482015260648101829052600090610bd19086906323b872dd60e01b906084016102d2565b95945050505050565b6040516001600160a01b03831660248201526044810182905260009061035290859063a9059cbb60e01b906064016102d2565b803560ff81168114610c1e57600080fd5b919050565b600060208284031215610c3557600080fd5b81356001600160a01b038116811461027657600080fd5b600060208284031215610c5e57600080fd5b8151801515811461027657600080fd5b600060208284031215610c8057600080fd5b5051919050565b60008060408385031215610c9a57600080fd5b50508035926020909101359150565b60008060008060008060c08789031215610cc257600080fd5b8635955060208701359450610cd960408801610c0d565b9350606087013592506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a031215610d1557600080fd5b8735965060208801359550610d2c60408901610c0d565b969995985095966060810135965060808101359560a0820135955060c0909101359350915050565b60008060008060008060008060008060006101608c8e031215610d7657600080fd5b8b359a5060208c01359950610d8d60408d01610c0d565b985060608c0135975060808c0135965060a08c0135955060c08c0135945060e08c01359350610dbf6101008d01610c0d565b92506101208c013591506101408c013590509295989b509295989b9093969950565b6000825160005b81811015610e025760208186018101518583015201610de8565b81811115610e11576000828501525b509190910192915050565b604080825283519082018190526000906020906060840190828701845b82811015610e5e5781516001600160a01b031684529284019290840190600101610e39565b5050508381038285015284518082528583019183019060005b81811015610e9357835183529284019291840191600101610e77565b5090979650505050505050565b6000600019821415610ec257634e487b7160e01b600052601160045260246000fd5b5060010190565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220a38b58891ab7994168d4c9e23749cf5df2af465e466744a21c09684cd35b881e64736f6c63430008070033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000080ac24aa929eaf5013f6436cda2a7ba190f5cc0b
-----Decoded View---------------
Arg [0] : pool_ (address): 0x80ac24aA929eaF5013f6436cdA2a7ba190f5Cc0b
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000080ac24aa929eaf5013f6436cda2a7ba190f5cc0b
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ 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.