More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 62 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Deposit | 19275464 | 183 days ago | IN | 0.01 ETH | 0.0007542 | ||||
Deposit | 19275457 | 183 days ago | IN | 0.0021 ETH | 0.00077857 | ||||
Deposit_WACME | 18598998 | 278 days ago | IN | 0 ETH | 0.0038673 | ||||
Deposit_WACME | 18593819 | 279 days ago | IN | 0 ETH | 0.00356236 | ||||
Deposit_WACME | 18590406 | 280 days ago | IN | 0 ETH | 0.00279158 | ||||
Deposit_WACME | 18541868 | 286 days ago | IN | 0 ETH | 0.00362656 | ||||
Deposit_WACME | 18494469 | 293 days ago | IN | 0 ETH | 0.00226427 | ||||
Deposit_WACME | 18460076 | 298 days ago | IN | 0 ETH | 0.00197051 | ||||
Deposit_WACME | 18457227 | 298 days ago | IN | 0 ETH | 0.00752851 | ||||
Deposit_WACME | 18320581 | 317 days ago | IN | 0 ETH | 0.00129329 | ||||
Deposit_WACME | 18204863 | 333 days ago | IN | 0 ETH | 0.00111512 | ||||
Deposit_WACME | 18203614 | 334 days ago | IN | 0 ETH | 0.00123757 | ||||
Mint_st ACME | 18197772 | 334 days ago | IN | 0 ETH | 0.00022148 | ||||
Deposit_WACME | 18175939 | 338 days ago | IN | 0 ETH | 0.0015749 | ||||
Deposit_WACME | 18094697 | 349 days ago | IN | 0 ETH | 0.00188558 | ||||
Deposit_WACME | 17888227 | 378 days ago | IN | 0 ETH | 0.00205439 | ||||
Deposit_WACME | 17859736 | 382 days ago | IN | 0 ETH | 0.00192981 | ||||
Deposit_WACME | 17838144 | 385 days ago | IN | 0 ETH | 0.00199768 | ||||
Deposit_WACME | 17702029 | 404 days ago | IN | 0 ETH | 0.00184837 | ||||
Deposit_WACME | 17674452 | 408 days ago | IN | 0 ETH | 0.00216264 | ||||
Deposit_WACME | 17648755 | 411 days ago | IN | 0 ETH | 0.00196863 | ||||
Deposit_WACME | 17621807 | 415 days ago | IN | 0 ETH | 0.00272365 | ||||
Deposit_WACME | 17456369 | 438 days ago | IN | 0 ETH | 0.00253038 | ||||
Deposit_WACME | 17414973 | 444 days ago | IN | 0 ETH | 0.01123896 | ||||
Deposit_WACME | 17378657 | 449 days ago | IN | 0 ETH | 0.00561985 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
ACMELiquidStaking
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity Multiple files format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.4; import "./AccumulateBridge.sol"; contract ACMELiquidStaking is Ownable { using SafeERC20 for WrappedToken; bool internal locked; modifier reentrancyGuard() { require(!locked); locked = true; _; locked = false; } // WACME token WrappedToken public wacme; // stACME token WrappedToken public stacme; // Accumulate Bridge address AccumulateBridge public bridge; // Staking account on Accumulate string public stakingAccount; constructor(address _wacme, address _stacme, address _bridge, string memory _stakingAccount) { wacme = WrappedToken(_wacme); stacme = WrappedToken(_stacme); bridge = AccumulateBridge(_bridge); stakingAccount = _stakingAccount; } event Transfer_stACME_Ownership(address indexed _newOwner); event Renounce_stACME_Ownership(); event Set_stakingAccount(string _stakingAccount); event Mint_stACME(address to, uint256 amount); event Deposit_WACME(address from, uint256 amount); function transfer_stACME_ownership(address newOwner) public onlyOwner { stacme.transferOwnership(newOwner); emit Transfer_stACME_Ownership(newOwner); } function renounce_stACME_ownership() public onlyOwner { stacme.renounceOwnership(); emit Renounce_stACME_Ownership(); } function set_stakingAccount(string memory newStakingAccount) public onlyOwner { stakingAccount = newStakingAccount; emit Set_stakingAccount(newStakingAccount); } function approve_bridge() public onlyOwner { wacme.approve(address(bridge), type(uint256).max); } function mint_stACME(address to, uint256 amount) public onlyOwner { stacme.mint(to, amount); emit Mint_stACME(to, amount); } function deposit_WACME(uint256 amount) public reentrancyGuard { wacme.safeTransferFrom(address(msg.sender), address(this), amount); bridge.burn(wacme, stakingAccount, amount); stacme.mint(address(msg.sender), amount); emit Deposit_WACME(address(msg.sender), amount); emit Mint_stACME(address(msg.sender), amount); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.4; import "./WrappedToken.sol"; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== * * [IMPORTANT] * ==== * You shouldn't rely on `isContract` to protect against flash loan attacks! * * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract * constructor. * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize/address.code.length, which returns 0 // for contracts in construction, since the code is only stored at the end // of the constructor execution. return account.code.length > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly /// @solidity memory-safe-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } /** * @title SafeERC20 * @dev Wrappers around ERC20 operations that throw on failure (when the token * contract returns false). Tokens that return no value (and instead revert or * throw on failure) are also supported, non-reverting calls are assumed to be * successful. * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, * which allows you to call the safe operations as `token.safeTransfer(...)`, etc. */ library SafeERC20 { using Address for address; function safeTransfer( IERC20 token, address to, uint256 value ) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function safeTransferFrom( IERC20 token, address from, address to, uint256 value ) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value)); } /** * @dev Deprecated. This function has issues similar to the ones found in * {IERC20-approve}, and its usage is discouraged. * * Whenever possible, use {safeIncreaseAllowance} and * {safeDecreaseAllowance} instead. */ function safeApprove( IERC20 token, address spender, uint256 value ) internal { // safeApprove should only be called when setting an initial allowance, // or when resetting it to zero. To increase and decrease it, use // 'safeIncreaseAllowance' and 'safeDecreaseAllowance' 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 safeIncreaseAllowance( IERC20 token, address spender, uint256 value ) internal { uint256 newAllowance = token.allowance(address(this), spender) + value; _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function safeDecreaseAllowance( IERC20 token, address spender, uint256 value ) internal { unchecked { uint256 oldAllowance = token.allowance(address(this), spender); require(oldAllowance >= value, "SafeERC20: decreased allowance below zero"); uint256 newAllowance = oldAllowance - value; _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } } /** * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement * on the return value: the return value is optional (but if data is returned, it must not be false). * @param token The token targeted by the call. * @param data The call data (encoded using abi.encode or one of its variants). */ function _callOptionalReturn(IERC20 token, bytes memory data) private { // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that // the target address contains contract code and also asserts for success in the low-level call. bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed"); if (returndata.length > 0) { // Return data is optional require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } } contract AccumulateBridge is Ownable { using SafeERC20 for WrappedToken; constructor() {} event TransferTokenOwnership(WrappedToken indexed _token, address indexed _newOwner); event RenounceTokenOwnership(WrappedToken indexed _token); event Mint(WrappedToken token, address to, uint256 amount); event Burn(WrappedToken token, string destination, uint256 amount); function transferTokenOwnership(WrappedToken token, address newOwner) public onlyOwner { token.transferOwnership(newOwner); emit TransferTokenOwnership(token, newOwner); } function renounceTokenOwnership(WrappedToken token) public onlyOwner { token.renounceOwnership(); emit RenounceTokenOwnership(token); } function mint(WrappedToken token, address to, uint256 amount) public onlyOwner { token.mint(to, amount); emit Mint(token, to, amount); } function burn(WrappedToken token, string memory destination, uint256 amount) public virtual { token.safeTransferFrom(address(msg.sender), address(this), amount); token.burn(amount); emit Burn(token, destination, amount); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.4; /** * @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); } } /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 amount ) external returns (bool); } /** * @dev Interface for the optional metadata functions from the ERC20 standard. * * _Available since v4.1._ */ interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } /** * @dev Implementation of the {IERC20} interface. * * This implementation is agnostic to the way tokens are created. This means * that a supply mechanism has to be added in a derived contract using {_mint}. * For a generic mechanism see {ERC20PresetMinterPauser}. * * TIP: For a detailed writeup see our guide * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How * to implement supply mechanisms]. * * We have followed general OpenZeppelin Contracts guidelines: functions revert * instead returning `false` on failure. This behavior is nonetheless * conventional and does not conflict with the expectations of ERC20 * applications. * * Additionally, an {Approval} event is emitted on calls to {transferFrom}. * This allows applications to reconstruct the allowance for all accounts just * by listening to said events. Other implementations of the EIP may not emit * these events, as it isn't required by the specification. * * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} * functions have been added to mitigate the well-known issues around setting * allowances. See {IERC20-approve}. */ contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; uint8 private _decimals; /** * @dev Sets the values for {name} and {symbol}. * * The default value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_, uint8 decimals_) { _name = name_; _symbol = symbol_; _decimals = decimals_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5.05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless this function is * overridden; * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { return _decimals; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `to` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address to, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _transfer(owner, to, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on * `transferFrom`. This is semantically equivalent to an infinite approval. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _approve(owner, spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * NOTE: Does not update the allowance if the current allowance * is the maximum `uint256`. * * Requirements: * * - `from` and `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. * - the caller must have allowance for ``from``'s tokens of at least * `amount`. */ function transferFrom( address from, address to, uint256 amount ) public virtual override returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, amount); _transfer(from, to, amount); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { address owner = _msgSender(); _approve(owner, spender, allowance(owner, spender) + addedValue); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { address owner = _msgSender(); uint256 currentAllowance = allowance(owner, spender); require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(owner, spender, currentAllowance - subtractedValue); } return true; } /** * @dev Moves `amount` of tokens from `sender` to `recipient`. * * This internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. */ function _transfer( address from, address to, uint256 amount ) internal virtual { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(from, to, amount); uint256 fromBalance = _balances[from]; require(fromBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[from] = fromBalance - amount; } _balances[to] += amount; emit Transfer(from, to, amount); _afterTokenTransfer(from, to, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Updates `owner` s allowance for `spender` based on spent `amount`. * * Does not update the allowance amount in case of infinite allowance. * Revert if not enough allowance is available. * * Might emit an {Approval} event. */ function _spendAllowance( address owner, address spender, uint256 amount ) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "ERC20: insufficient allowance"); unchecked { _approve(owner, spender, currentAllowance - amount); } } } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} /** * @dev Hook that is called after any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * has been transferred to `to`. * - when `from` is zero, `amount` tokens have been minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens have been burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } /** * @dev Contract module which allows children to implement an emergency stop * mechanism that can be triggered by an authorized account. * * This module is used through inheritance. It will make available the * modifiers `whenNotPaused` and `whenPaused`, which can be applied to * the functions of your contract. Note that they will not be pausable by * simply including this module, only once the modifiers are put in place. */ abstract contract Pausable is Context { /** * @dev Emitted when the pause is triggered by `account`. */ event Paused(address account); /** * @dev Emitted when the pause is lifted by `account`. */ event Unpaused(address account); bool private _paused; /** * @dev Initializes the contract in unpaused state. */ constructor() { _paused = false; } /** * @dev Returns true if the contract is paused, and false otherwise. */ function paused() public view virtual returns (bool) { return _paused; } /** * @dev Modifier to make a function callable only when the contract is not paused. * * Requirements: * * - The contract must not be paused. */ modifier whenNotPaused() { require(!paused(), "Pausable: paused"); _; } /** * @dev Modifier to make a function callable only when the contract is paused. * * Requirements: * * - The contract must be paused. */ modifier whenPaused() { require(paused(), "Pausable: not paused"); _; } /** * @dev Triggers stopped state. * * Requirements: * * - The contract must not be paused. */ function _pause() internal virtual whenNotPaused { _paused = true; emit Paused(_msgSender()); } /** * @dev Returns to normal state. * * Requirements: * * - The contract must be paused. */ function _unpause() internal virtual whenPaused { _paused = false; emit Unpaused(_msgSender()); } } /** * @dev Extension of {ERC20} that allows token holders to destroy both their own * tokens and those that they have an allowance for, in a way that can be * recognized off-chain (via event analysis). */ abstract contract ERC20Burnable is Context, ERC20 { /** * @dev Destroys `amount` tokens from the caller. * * See {ERC20-_burn}. */ function burn(uint256 amount) public virtual { _burn(_msgSender(), amount); } /** * @dev Destroys `amount` tokens from `account`, deducting from the caller's * allowance. * * See {ERC20-_burn} and {ERC20-allowance}. * * Requirements: * * - the caller must have allowance for ``accounts``'s tokens of at least * `amount`. */ function burnFrom(address account, uint256 amount) public virtual { _spendAllowance(account, _msgSender(), amount); _burn(account, amount); } } /** * @dev ERC20 token with pausable token transfers, minting and burning. * * Useful for scenarios such as preventing trades until the end of an evaluation * period, or having an emergency switch for freezing all token transfers in the * event of a large bug. */ abstract contract ERC20Pausable is ERC20, Pausable { /** * @dev See {ERC20-_beforeTokenTransfer}. * * Requirements: * * - the contract must not be paused. */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual override { super._beforeTokenTransfer(from, to, amount); require(!paused(), "ERC20Pausable: token transfer while paused"); } } contract WrappedToken is ERC20, ERC20Burnable, Pausable, Ownable { constructor( string memory name, string memory symbol, uint8 decimals ) ERC20(name, symbol, decimals) {} function pause() public onlyOwner { _pause(); } function unpause() public onlyOwner { _unpause(); } function mint(address to, uint256 amount) public onlyOwner { _mint(to, amount); } function _beforeTokenTransfer(address from, address to, uint256 amount) internal whenNotPaused override { super._beforeTokenTransfer(from, to, amount); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_wacme","type":"address"},{"internalType":"address","name":"_stacme","type":"address"},{"internalType":"address","name":"_bridge","type":"address"},{"internalType":"string","name":"_stakingAccount","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Deposit_WACME","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Mint_stACME","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":[],"name":"Renounce_stACME_Ownership","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"_stakingAccount","type":"string"}],"name":"Set_stakingAccount","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_newOwner","type":"address"}],"name":"Transfer_stACME_Ownership","type":"event"},{"inputs":[],"name":"approve_bridge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"bridge","outputs":[{"internalType":"contract AccumulateBridge","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"deposit_WACME","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint_stACME","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounce_stACME_ownership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newStakingAccount","type":"string"}],"name":"set_stakingAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stacme","outputs":[{"internalType":"contract WrappedToken","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stakingAccount","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transfer_stACME_ownership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"wacme","outputs":[{"internalType":"contract WrappedToken","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b506040516200205438038062002054833981810160405281019062000037919062000342565b620000576200004b6200013d60201b60201c565b6200014560201b60201c565b83600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600490805190602001906200013292919062000209565b505050505062000585565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620002179062000490565b90600052602060002090601f0160209004810192826200023b576000855562000287565b82601f106200025657805160ff191683800117855562000287565b8280016001018555821562000287579182015b828111156200028657825182559160200191906001019062000269565b5b5090506200029691906200029a565b5090565b5b80821115620002b55760008160009055506001016200029b565b5090565b6000620002d0620002ca84620003f0565b620003c7565b905082815260208101848484011115620002e957600080fd5b620002f68482856200045a565b509392505050565b6000815190506200030f816200056b565b92915050565b600082601f8301126200032757600080fd5b815162000339848260208601620002b9565b91505092915050565b600080600080608085870312156200035957600080fd5b60006200036987828801620002fe565b94505060206200037c87828801620002fe565b93505060406200038f87828801620002fe565b925050606085015167ffffffffffffffff811115620003ad57600080fd5b620003bb8782880162000315565b91505092959194509250565b6000620003d3620003e6565b9050620003e18282620004c6565b919050565b6000604051905090565b600067ffffffffffffffff8211156200040e576200040d6200052b565b5b62000419826200055a565b9050602081019050919050565b600062000433826200043a565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60005b838110156200047a5780820151818401526020810190506200045d565b838111156200048a576000848401525b50505050565b60006002820490506001821680620004a957607f821691505b60208210811415620004c057620004bf620004fc565b5b50919050565b620004d1826200055a565b810181811067ffffffffffffffff82111715620004f357620004f26200052b565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b620005768162000426565b81146200058257600080fd5b50565b611abf80620005956000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80638da5cb5b1161008c578063c961024711610066578063c9610247146101a0578063e78cea92146101be578063f2fde38b146101dc578063fb76ed41146101f8576100cf565b80638da5cb5b1461015a578063b37af77c14610178578063bf07213414610196576100cf565b806317cfdc0b146100d4578063308f0af5146100f057806343f9252f1461010c5780634ae8bc101461012a5780636146bcfc14610146578063715018a614610150575b600080fd5b6100ee60048036038101906100e991906112fe565b610214565b005b61010a600480360381019061010591906112bd565b61046a565b005b610114610537565b60405161012191906115a9565b60405180910390f35b610144600480360381019061013f919061122f565b61055d565b005b61014e6106ac565b005b6101586107d8565b005b610162610860565b60405161016f9190611513565b60405180910390f35b610180610889565b60405161018d91906115a9565b60405180910390f35b61019e6108af565b005b6101a8610a1f565b6040516101b59190611602565b60405180910390f35b6101c6610aad565b6040516101d3919061158e565b60405180910390f35b6101f660048036038101906101f1919061122f565b610ad3565b005b610212600480360381019061020d9190611258565b610bcb565b005b600060149054906101000a900460ff161561022e57600080fd5b6001600060146101000a81548160ff021916908315150217905550610298333083600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d13909392919063ffffffff16565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45b71de600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166004846040518463ffffffff1660e01b815260040161031a939291906115c4565b600060405180830381600087803b15801561033457600080fd5b505af1158015610348573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1933836040518363ffffffff1660e01b81526004016103a9929190611565565b600060405180830381600087803b1580156103c357600080fd5b505af11580156103d7573d6000803e3d6000fd5b505050507f33974489eebc42e7642d9f21b1158bc56229cc05d39807d01faad038fd5cef0d338260405161040c929190611565565b60405180910390a17f43d158d18e6aac5e6dca9bd6f974ff5622ce161af8f4c49b414192ca5d258e473382604051610445929190611565565b60405180910390a160008060146101000a81548160ff02191690831515021790555050565b610472610d9c565b73ffffffffffffffffffffffffffffffffffffffff16610490610860565b73ffffffffffffffffffffffffffffffffffffffff16146104e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104dd90611664565b60405180910390fd5b80600490805190602001906104fc9291906110e5565b507fb68de5c2aab05b67581ca624be5783b4235930dd0978659e1de47a9eee01e7228160405161052c9190611602565b60405180910390a150565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610565610d9c565b73ffffffffffffffffffffffffffffffffffffffff16610583610860565b73ffffffffffffffffffffffffffffffffffffffff16146105d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105d090611664565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f2fde38b826040518263ffffffff1660e01b81526004016106349190611513565b600060405180830381600087803b15801561064e57600080fd5b505af1158015610662573d6000803e3d6000fd5b505050508073ffffffffffffffffffffffffffffffffffffffff167f45a668ec706bc188a46a3f2852ff72da13826fb04dce56c5c8b801e464ecd7cf60405160405180910390a250565b6106b4610d9c565b73ffffffffffffffffffffffffffffffffffffffff166106d2610860565b73ffffffffffffffffffffffffffffffffffffffff1614610728576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071f90611664565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663715018a66040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561079257600080fd5b505af11580156107a6573d6000803e3d6000fd5b505050507f4803e75120b899e66e8830c4da59a4f531c66b5e9697073f4b9d5183531d61c760405160405180910390a1565b6107e0610d9c565b73ffffffffffffffffffffffffffffffffffffffff166107fe610860565b73ffffffffffffffffffffffffffffffffffffffff1614610854576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084b90611664565b60405180910390fd5b61085e6000610da4565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6108b7610d9c565b73ffffffffffffffffffffffffffffffffffffffff166108d5610860565b73ffffffffffffffffffffffffffffffffffffffff161461092b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092290611664565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016109ca929190611565565b602060405180830381600087803b1580156109e457600080fd5b505af11580156109f8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1c9190611294565b50565b60048054610a2c90611833565b80601f0160208091040260200160405190810160405280929190818152602001828054610a5890611833565b8015610aa55780601f10610a7a57610100808354040283529160200191610aa5565b820191906000526020600020905b815481529060010190602001808311610a8857829003601f168201915b505050505081565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610adb610d9c565b73ffffffffffffffffffffffffffffffffffffffff16610af9610860565b73ffffffffffffffffffffffffffffffffffffffff1614610b4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4690611664565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610bbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb690611624565b60405180910390fd5b610bc881610da4565b50565b610bd3610d9c565b73ffffffffffffffffffffffffffffffffffffffff16610bf1610860565b73ffffffffffffffffffffffffffffffffffffffff1614610c47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3e90611664565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1983836040518363ffffffff1660e01b8152600401610ca4929190611565565b600060405180830381600087803b158015610cbe57600080fd5b505af1158015610cd2573d6000803e3d6000fd5b505050507f43d158d18e6aac5e6dca9bd6f974ff5622ce161af8f4c49b414192ca5d258e478282604051610d07929190611565565b60405180910390a15050565b610d96846323b872dd60e01b858585604051602401610d349392919061152e565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610e68565b50505050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000610eca826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16610f2f9092919063ffffffff16565b9050600081511115610f2a5780806020019051810190610eea9190611294565b610f29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f20906116a4565b60405180910390fd5b5b505050565b6060610f3e8484600085610f47565b90509392505050565b606082471015610f8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8390611644565b60405180910390fd5b610f958561105b565b610fd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcb90611684565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051610ffd91906114fc565b60006040518083038185875af1925050503d806000811461103a576040519150601f19603f3d011682016040523d82523d6000602084013e61103f565b606091505b509150915061104f82828661107e565b92505050949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6060831561108e578290506110de565b6000835111156110a15782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d59190611602565b60405180910390fd5b9392505050565b8280546110f190611833565b90600052602060002090601f016020900481019282611113576000855561115a565b82601f1061112c57805160ff191683800117855561115a565b8280016001018555821561115a579182015b8281111561115957825182559160200191906001019061113e565b5b509050611167919061116b565b5090565b5b8082111561118457600081600090555060010161116c565b5090565b600061119b611196846116e9565b6116c4565b9050828152602081018484840111156111b357600080fd5b6111be8482856117f1565b509392505050565b6000813590506111d581611a44565b92915050565b6000815190506111ea81611a5b565b92915050565b600082601f83011261120157600080fd5b8135611211848260208601611188565b91505092915050565b60008135905061122981611a72565b92915050565b60006020828403121561124157600080fd5b600061124f848285016111c6565b91505092915050565b6000806040838503121561126b57600080fd5b6000611279858286016111c6565b925050602061128a8582860161121a565b9150509250929050565b6000602082840312156112a657600080fd5b60006112b4848285016111db565b91505092915050565b6000602082840312156112cf57600080fd5b600082013567ffffffffffffffff8111156112e957600080fd5b6112f5848285016111f0565b91505092915050565b60006020828403121561131057600080fd5b600061131e8482850161121a565b91505092915050565b61133081611761565b82525050565b60006113418261172f565b61134b8185611745565b935061135b818560208601611800565b80840191505092915050565b611370816117a9565b82525050565b61137f816117cd565b82525050565b60006113908261173a565b61139a8185611750565b93506113aa818560208601611800565b6113b3816118f4565b840191505092915050565b600081546113cb81611833565b6113d58186611750565b945060018216600081146113f0576001811461140257611435565b60ff1983168652602086019350611435565b61140b8561171a565b60005b8381101561142d5781548189015260018201915060208101905061140e565b808801955050505b50505092915050565b600061144b602683611750565b915061145682611905565b604082019050919050565b600061146e602683611750565b915061147982611954565b604082019050919050565b6000611491602083611750565b915061149c826119a3565b602082019050919050565b60006114b4601d83611750565b91506114bf826119cc565b602082019050919050565b60006114d7602a83611750565b91506114e2826119f5565b604082019050919050565b6114f68161179f565b82525050565b60006115088284611336565b915081905092915050565b60006020820190506115286000830184611327565b92915050565b60006060820190506115436000830186611327565b6115506020830185611327565b61155d60408301846114ed565b949350505050565b600060408201905061157a6000830185611327565b61158760208301846114ed565b9392505050565b60006020820190506115a36000830184611367565b92915050565b60006020820190506115be6000830184611376565b92915050565b60006060820190506115d96000830186611376565b81810360208301526115eb81856113be565b90506115fa60408301846114ed565b949350505050565b6000602082019050818103600083015261161c8184611385565b905092915050565b6000602082019050818103600083015261163d8161143e565b9050919050565b6000602082019050818103600083015261165d81611461565b9050919050565b6000602082019050818103600083015261167d81611484565b9050919050565b6000602082019050818103600083015261169d816114a7565b9050919050565b600060208201905081810360008301526116bd816114ca565b9050919050565b60006116ce6116df565b90506116da8282611865565b919050565b6000604051905090565b600067ffffffffffffffff821115611704576117036118c5565b5b61170d826118f4565b9050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b600061176c8261177f565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006117b4826117bb565b9050919050565b60006117c68261177f565b9050919050565b60006117d8826117df565b9050919050565b60006117ea8261177f565b9050919050565b82818337600083830152505050565b60005b8381101561181e578082015181840152602081019050611803565b8381111561182d576000848401525b50505050565b6000600282049050600182168061184b57607f821691505b6020821081141561185f5761185e611896565b5b50919050565b61186e826118f4565b810181811067ffffffffffffffff8211171561188d5761188c6118c5565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b611a4d81611761565b8114611a5857600080fd5b50565b611a6481611773565b8114611a6f57600080fd5b50565b611a7b8161179f565b8114611a8657600080fd5b5056fea26469706673582212208be725f7a0eefedf95b07e5f24f7e26bc2bdb7837e6aaeff08fdd28de5d3981464736f6c63430008040033000000000000000000000000df4ef6ee483953fe3b84abd08c6a060445c011700000000000000000000000007ac168c81f4f3820fa3f22603ce5864d6ab3c547000000000000000000000000ba050938970c8eaeda3e970b571a6fe463db7d0e00000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000018616363756d756c617465642e61636d652f7374616b696e670000000000000000
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c80638da5cb5b1161008c578063c961024711610066578063c9610247146101a0578063e78cea92146101be578063f2fde38b146101dc578063fb76ed41146101f8576100cf565b80638da5cb5b1461015a578063b37af77c14610178578063bf07213414610196576100cf565b806317cfdc0b146100d4578063308f0af5146100f057806343f9252f1461010c5780634ae8bc101461012a5780636146bcfc14610146578063715018a614610150575b600080fd5b6100ee60048036038101906100e991906112fe565b610214565b005b61010a600480360381019061010591906112bd565b61046a565b005b610114610537565b60405161012191906115a9565b60405180910390f35b610144600480360381019061013f919061122f565b61055d565b005b61014e6106ac565b005b6101586107d8565b005b610162610860565b60405161016f9190611513565b60405180910390f35b610180610889565b60405161018d91906115a9565b60405180910390f35b61019e6108af565b005b6101a8610a1f565b6040516101b59190611602565b60405180910390f35b6101c6610aad565b6040516101d3919061158e565b60405180910390f35b6101f660048036038101906101f1919061122f565b610ad3565b005b610212600480360381019061020d9190611258565b610bcb565b005b600060149054906101000a900460ff161561022e57600080fd5b6001600060146101000a81548160ff021916908315150217905550610298333083600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d13909392919063ffffffff16565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45b71de600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166004846040518463ffffffff1660e01b815260040161031a939291906115c4565b600060405180830381600087803b15801561033457600080fd5b505af1158015610348573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1933836040518363ffffffff1660e01b81526004016103a9929190611565565b600060405180830381600087803b1580156103c357600080fd5b505af11580156103d7573d6000803e3d6000fd5b505050507f33974489eebc42e7642d9f21b1158bc56229cc05d39807d01faad038fd5cef0d338260405161040c929190611565565b60405180910390a17f43d158d18e6aac5e6dca9bd6f974ff5622ce161af8f4c49b414192ca5d258e473382604051610445929190611565565b60405180910390a160008060146101000a81548160ff02191690831515021790555050565b610472610d9c565b73ffffffffffffffffffffffffffffffffffffffff16610490610860565b73ffffffffffffffffffffffffffffffffffffffff16146104e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104dd90611664565b60405180910390fd5b80600490805190602001906104fc9291906110e5565b507fb68de5c2aab05b67581ca624be5783b4235930dd0978659e1de47a9eee01e7228160405161052c9190611602565b60405180910390a150565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610565610d9c565b73ffffffffffffffffffffffffffffffffffffffff16610583610860565b73ffffffffffffffffffffffffffffffffffffffff16146105d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105d090611664565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f2fde38b826040518263ffffffff1660e01b81526004016106349190611513565b600060405180830381600087803b15801561064e57600080fd5b505af1158015610662573d6000803e3d6000fd5b505050508073ffffffffffffffffffffffffffffffffffffffff167f45a668ec706bc188a46a3f2852ff72da13826fb04dce56c5c8b801e464ecd7cf60405160405180910390a250565b6106b4610d9c565b73ffffffffffffffffffffffffffffffffffffffff166106d2610860565b73ffffffffffffffffffffffffffffffffffffffff1614610728576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071f90611664565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663715018a66040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561079257600080fd5b505af11580156107a6573d6000803e3d6000fd5b505050507f4803e75120b899e66e8830c4da59a4f531c66b5e9697073f4b9d5183531d61c760405160405180910390a1565b6107e0610d9c565b73ffffffffffffffffffffffffffffffffffffffff166107fe610860565b73ffffffffffffffffffffffffffffffffffffffff1614610854576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084b90611664565b60405180910390fd5b61085e6000610da4565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6108b7610d9c565b73ffffffffffffffffffffffffffffffffffffffff166108d5610860565b73ffffffffffffffffffffffffffffffffffffffff161461092b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092290611664565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016109ca929190611565565b602060405180830381600087803b1580156109e457600080fd5b505af11580156109f8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1c9190611294565b50565b60048054610a2c90611833565b80601f0160208091040260200160405190810160405280929190818152602001828054610a5890611833565b8015610aa55780601f10610a7a57610100808354040283529160200191610aa5565b820191906000526020600020905b815481529060010190602001808311610a8857829003601f168201915b505050505081565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610adb610d9c565b73ffffffffffffffffffffffffffffffffffffffff16610af9610860565b73ffffffffffffffffffffffffffffffffffffffff1614610b4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4690611664565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610bbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb690611624565b60405180910390fd5b610bc881610da4565b50565b610bd3610d9c565b73ffffffffffffffffffffffffffffffffffffffff16610bf1610860565b73ffffffffffffffffffffffffffffffffffffffff1614610c47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3e90611664565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1983836040518363ffffffff1660e01b8152600401610ca4929190611565565b600060405180830381600087803b158015610cbe57600080fd5b505af1158015610cd2573d6000803e3d6000fd5b505050507f43d158d18e6aac5e6dca9bd6f974ff5622ce161af8f4c49b414192ca5d258e478282604051610d07929190611565565b60405180910390a15050565b610d96846323b872dd60e01b858585604051602401610d349392919061152e565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610e68565b50505050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000610eca826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16610f2f9092919063ffffffff16565b9050600081511115610f2a5780806020019051810190610eea9190611294565b610f29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f20906116a4565b60405180910390fd5b5b505050565b6060610f3e8484600085610f47565b90509392505050565b606082471015610f8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8390611644565b60405180910390fd5b610f958561105b565b610fd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcb90611684565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051610ffd91906114fc565b60006040518083038185875af1925050503d806000811461103a576040519150601f19603f3d011682016040523d82523d6000602084013e61103f565b606091505b509150915061104f82828661107e565b92505050949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6060831561108e578290506110de565b6000835111156110a15782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d59190611602565b60405180910390fd5b9392505050565b8280546110f190611833565b90600052602060002090601f016020900481019282611113576000855561115a565b82601f1061112c57805160ff191683800117855561115a565b8280016001018555821561115a579182015b8281111561115957825182559160200191906001019061113e565b5b509050611167919061116b565b5090565b5b8082111561118457600081600090555060010161116c565b5090565b600061119b611196846116e9565b6116c4565b9050828152602081018484840111156111b357600080fd5b6111be8482856117f1565b509392505050565b6000813590506111d581611a44565b92915050565b6000815190506111ea81611a5b565b92915050565b600082601f83011261120157600080fd5b8135611211848260208601611188565b91505092915050565b60008135905061122981611a72565b92915050565b60006020828403121561124157600080fd5b600061124f848285016111c6565b91505092915050565b6000806040838503121561126b57600080fd5b6000611279858286016111c6565b925050602061128a8582860161121a565b9150509250929050565b6000602082840312156112a657600080fd5b60006112b4848285016111db565b91505092915050565b6000602082840312156112cf57600080fd5b600082013567ffffffffffffffff8111156112e957600080fd5b6112f5848285016111f0565b91505092915050565b60006020828403121561131057600080fd5b600061131e8482850161121a565b91505092915050565b61133081611761565b82525050565b60006113418261172f565b61134b8185611745565b935061135b818560208601611800565b80840191505092915050565b611370816117a9565b82525050565b61137f816117cd565b82525050565b60006113908261173a565b61139a8185611750565b93506113aa818560208601611800565b6113b3816118f4565b840191505092915050565b600081546113cb81611833565b6113d58186611750565b945060018216600081146113f0576001811461140257611435565b60ff1983168652602086019350611435565b61140b8561171a565b60005b8381101561142d5781548189015260018201915060208101905061140e565b808801955050505b50505092915050565b600061144b602683611750565b915061145682611905565b604082019050919050565b600061146e602683611750565b915061147982611954565b604082019050919050565b6000611491602083611750565b915061149c826119a3565b602082019050919050565b60006114b4601d83611750565b91506114bf826119cc565b602082019050919050565b60006114d7602a83611750565b91506114e2826119f5565b604082019050919050565b6114f68161179f565b82525050565b60006115088284611336565b915081905092915050565b60006020820190506115286000830184611327565b92915050565b60006060820190506115436000830186611327565b6115506020830185611327565b61155d60408301846114ed565b949350505050565b600060408201905061157a6000830185611327565b61158760208301846114ed565b9392505050565b60006020820190506115a36000830184611367565b92915050565b60006020820190506115be6000830184611376565b92915050565b60006060820190506115d96000830186611376565b81810360208301526115eb81856113be565b90506115fa60408301846114ed565b949350505050565b6000602082019050818103600083015261161c8184611385565b905092915050565b6000602082019050818103600083015261163d8161143e565b9050919050565b6000602082019050818103600083015261165d81611461565b9050919050565b6000602082019050818103600083015261167d81611484565b9050919050565b6000602082019050818103600083015261169d816114a7565b9050919050565b600060208201905081810360008301526116bd816114ca565b9050919050565b60006116ce6116df565b90506116da8282611865565b919050565b6000604051905090565b600067ffffffffffffffff821115611704576117036118c5565b5b61170d826118f4565b9050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b600061176c8261177f565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006117b4826117bb565b9050919050565b60006117c68261177f565b9050919050565b60006117d8826117df565b9050919050565b60006117ea8261177f565b9050919050565b82818337600083830152505050565b60005b8381101561181e578082015181840152602081019050611803565b8381111561182d576000848401525b50505050565b6000600282049050600182168061184b57607f821691505b6020821081141561185f5761185e611896565b5b50919050565b61186e826118f4565b810181811067ffffffffffffffff8211171561188d5761188c6118c5565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b611a4d81611761565b8114611a5857600080fd5b50565b611a6481611773565b8114611a6f57600080fd5b50565b611a7b8161179f565b8114611a8657600080fd5b5056fea26469706673582212208be725f7a0eefedf95b07e5f24f7e26bc2bdb7837e6aaeff08fdd28de5d3981464736f6c63430008040033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000df4ef6ee483953fe3b84abd08c6a060445c011700000000000000000000000007ac168c81f4f3820fa3f22603ce5864d6ab3c547000000000000000000000000ba050938970c8eaeda3e970b571a6fe463db7d0e00000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000018616363756d756c617465642e61636d652f7374616b696e670000000000000000
-----Decoded View---------------
Arg [0] : _wacme (address): 0xDF4Ef6EE483953fE3B84ABd08C6A060445c01170
Arg [1] : _stacme (address): 0x7AC168c81F4F3820Fa3F22603ce5864D6aB3C547
Arg [2] : _bridge (address): 0xbA050938970C8eAeDA3e970B571a6fe463Db7d0e
Arg [3] : _stakingAccount (string): accumulated.acme/staking
-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 000000000000000000000000df4ef6ee483953fe3b84abd08c6a060445c01170
Arg [1] : 0000000000000000000000007ac168c81f4f3820fa3f22603ce5864d6ab3c547
Arg [2] : 000000000000000000000000ba050938970c8eaeda3e970b571a6fe463db7d0e
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000018
Arg [5] : 616363756d756c617465642e61636d652f7374616b696e670000000000000000
Deployed Bytecode Sourcemap
91:2154:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1883:359;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1431:181;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;348:25;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1109:171;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1286:139;;;:::i;:::-;;2315:101:2;;;:::i;:::-;;1683:85;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;400:26:0;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1618:109;;;:::i;:::-;;540:28;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;466:30;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2565:198:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1733:144:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1883:359;248:6;;;;;;;;;;;247:7;239:16;;;;;;275:4;266:6;;:13;;;;;;;;;;;;;;;;;;1955:66:::1;1986:10;2007:4;2014:6;1955:5;;;;;;;;;;;:22;;;;:66;;;;;;:::i;:::-;2031:6;;;;;;;;;;;:11;;;2043:5;;;;;;;;;;;2050:14;2066:6;2031:42;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;2083:6;;;;;;;;;;;:11;;;2103:10;2116:6;2083:40;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;2138:42;2160:10;2173:6;2138:42;;;;;;;:::i;:::-;;;;;;;;2195:40;2215:10;2228:6;2195:40;;;;;;;:::i;:::-;;;;;;;;311:5:::0;302:6;;:14;;;;;;;;;;;;;;;;;;1883:359;:::o;1431:181::-;1906:12:2;:10;:12::i;:::-;1895:23;;:7;:5;:7::i;:::-;:23;;;1887:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1536:17:0::1;1519:14;:34;;;;;;;;;;;;:::i;:::-;;1568:37;1587:17;1568:37;;;;;;:::i;:::-;;;;;;;;1431:181:::0;:::o;348:25::-;;;;;;;;;;;;;:::o;1109:171::-;1906:12:2;:10;:12::i;:::-;1895:23;;:7;:5;:7::i;:::-;:23;;;1887:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1189:6:0::1;;;;;;;;;;;:24;;;1214:8;1189:34;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;1264:8;1238:35;;;;;;;;;;;;1109:171:::0;:::o;1286:139::-;1906:12:2;:10;:12::i;:::-;1895:23;;:7;:5;:7::i;:::-;:23;;;1887:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1350:6:0::1;;;;;;;;;;;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;1391:27;;;;;;;;;;1286:139::o:0;2315:101:2:-;1906:12;:10;:12::i;:::-;1895:23;;:7;:5;:7::i;:::-;:23;;;1887:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2379:30:::1;2406:1;2379:18;:30::i;:::-;2315:101::o:0;1683:85::-;1729:7;1755:6;;;;;;;;;;;1748:13;;1683:85;:::o;400:26:0:-;;;;;;;;;;;;;:::o;1618:109::-;1906:12:2;:10;:12::i;:::-;1895:23;;:7;:5;:7::i;:::-;:23;;;1887:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1671:5:0::1;;;;;;;;;;;:13;;;1693:6;;;;;;;;;;;1702:17;1671:49;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1618:109::o:0;540:28::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;466:30::-;;;;;;;;;;;;;:::o;2565:198:2:-;1906:12;:10;:12::i;:::-;1895:23;;:7;:5;:7::i;:::-;:23;;;1887:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2673:1:::1;2653:22;;:8;:22;;;;2645:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2728:28;2747:8;2728:18;:28::i;:::-;2565:198:::0;:::o;1733:144:0:-;1906:12:2;:10;:12::i;:::-;1895:23;;:7;:5;:7::i;:::-;:23;;;1887:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1809:6:0::1;;;;;;;;;;;:11;;;1821:2;1825:6;1809:23;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;1847;1859:2;1863:6;1847:23;;;;;;;:::i;:::-;;;;;;;;1733:144:::0;;:::o;8993:241:1:-;9131:96;9151:5;9181:27;;;9210:4;9216:2;9220:5;9158:68;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9131:19;:96::i;:::-;8993:241;;;;:::o;586:96:2:-;639:7;665:10;658:17;;586:96;:::o;2917:187::-;2990:16;3009:6;;;;;;;;;;;2990:25;;3034:8;3025:6;;:17;;;;;;;;;;;;;;;;;;3088:8;3057:40;;3078:8;3057:40;;;;;;;;;;;;2917:187;;:::o;11288:706:1:-;11707:23;11733:69;11761:4;11733:69;;;;;;;;;;;;;;;;;11741:5;11733:27;;;;:69;;;;;:::i;:::-;11707:95;;11836:1;11816:10;:17;:21;11812:176;;;11911:10;11900:30;;;;;;;;;;;;:::i;:::-;11892:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;11812:176;11288:706;;;:::o;3822:223::-;3955:12;3986:52;4008:6;4016:4;4022:1;4025:12;3986:21;:52::i;:::-;3979:59;;3822:223;;;;;:::o;4909:499::-;5074:12;5131:5;5106:21;:30;;5098:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;5197:18;5208:6;5197:10;:18::i;:::-;5189:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;5261:12;5275:23;5302:6;:11;;5321:5;5328:4;5302:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5260:73;;;;5350:51;5367:7;5376:10;5388:12;5350:16;:51::i;:::-;5343:58;;;;4909:499;;;;;;:::o;1136:320::-;1196:4;1448:1;1426:7;:19;;;:23;1419:30;;1136:320;;;:::o;7522:742::-;7668:12;7696:7;7692:566;;;7726:10;7719:17;;;;7692:566;7857:1;7837:10;:17;:21;7833:415;;;8081:10;8075:17;8141:15;8128:10;8124:2;8120:19;8113:44;8030:145;8220:12;8213:20;;;;;;;;;;;:::i;:::-;;;;;;;;7522:742;;;;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:345:3:-;85:5;110:66;126:49;168:6;126:49;:::i;:::-;110:66;:::i;:::-;101:75;;199:6;192:5;185:21;237:4;230:5;226:16;275:3;266:6;261:3;257:16;254:25;251:2;;;292:1;289;282:12;251:2;305:41;339:6;334:3;329;305:41;:::i;:::-;91:261;;;;;;:::o;358:139::-;404:5;442:6;429:20;420:29;;458:33;485:5;458:33;:::i;:::-;410:87;;;;:::o;503:137::-;557:5;588:6;582:13;573:22;;604:30;628:5;604:30;:::i;:::-;563:77;;;;:::o;660:273::-;716:5;765:3;758:4;750:6;746:17;742:27;732:2;;783:1;780;773:12;732:2;823:6;810:20;848:79;923:3;915:6;908:4;900:6;896:17;848:79;:::i;:::-;839:88;;722:211;;;;;:::o;939:139::-;985:5;1023:6;1010:20;1001:29;;1039:33;1066:5;1039:33;:::i;:::-;991:87;;;;:::o;1084:262::-;1143:6;1192:2;1180:9;1171:7;1167:23;1163:32;1160:2;;;1208:1;1205;1198:12;1160:2;1251:1;1276:53;1321:7;1312:6;1301:9;1297:22;1276:53;:::i;:::-;1266:63;;1222:117;1150:196;;;;:::o;1352:407::-;1420:6;1428;1477:2;1465:9;1456:7;1452:23;1448:32;1445:2;;;1493:1;1490;1483:12;1445:2;1536:1;1561:53;1606:7;1597:6;1586:9;1582:22;1561:53;:::i;:::-;1551:63;;1507:117;1663:2;1689:53;1734:7;1725:6;1714:9;1710:22;1689:53;:::i;:::-;1679:63;;1634:118;1435:324;;;;;:::o;1765:278::-;1832:6;1881:2;1869:9;1860:7;1856:23;1852:32;1849:2;;;1897:1;1894;1887:12;1849:2;1940:1;1965:61;2018:7;2009:6;1998:9;1994:22;1965:61;:::i;:::-;1955:71;;1911:125;1839:204;;;;:::o;2049:375::-;2118:6;2167:2;2155:9;2146:7;2142:23;2138:32;2135:2;;;2183:1;2180;2173:12;2135:2;2254:1;2243:9;2239:17;2226:31;2284:18;2276:6;2273:30;2270:2;;;2316:1;2313;2306:12;2270:2;2344:63;2399:7;2390:6;2379:9;2375:22;2344:63;:::i;:::-;2334:73;;2197:220;2125:299;;;;:::o;2430:262::-;2489:6;2538:2;2526:9;2517:7;2513:23;2509:32;2506:2;;;2554:1;2551;2544:12;2506:2;2597:1;2622:53;2667:7;2658:6;2647:9;2643:22;2622:53;:::i;:::-;2612:63;;2568:117;2496:196;;;;:::o;2698:118::-;2785:24;2803:5;2785:24;:::i;:::-;2780:3;2773:37;2763:53;;:::o;2822:373::-;2926:3;2954:38;2986:5;2954:38;:::i;:::-;3008:88;3089:6;3084:3;3008:88;:::i;:::-;3001:95;;3105:52;3150:6;3145:3;3138:4;3131:5;3127:16;3105:52;:::i;:::-;3182:6;3177:3;3173:16;3166:23;;2930:265;;;;;:::o;3201:179::-;3312:61;3367:5;3312:61;:::i;:::-;3307:3;3300:74;3290:90;;:::o;3386:173::-;3494:58;3546:5;3494:58;:::i;:::-;3489:3;3482:71;3472:87;;:::o;3565:364::-;3653:3;3681:39;3714:5;3681:39;:::i;:::-;3736:71;3800:6;3795:3;3736:71;:::i;:::-;3729:78;;3816:52;3861:6;3856:3;3849:4;3842:5;3838:16;3816:52;:::i;:::-;3893:29;3915:6;3893:29;:::i;:::-;3888:3;3884:39;3877:46;;3657:272;;;;;:::o;3959:802::-;4044:3;4081:5;4075:12;4110:36;4136:9;4110:36;:::i;:::-;4162:71;4226:6;4221:3;4162:71;:::i;:::-;4155:78;;4264:1;4253:9;4249:17;4280:1;4275:135;;;;4424:1;4419:336;;;;4242:513;;4275:135;4359:4;4355:9;4344;4340:25;4335:3;4328:38;4395:4;4390:3;4386:14;4379:21;;4275:135;;4419:336;4486:38;4518:5;4486:38;:::i;:::-;4546:1;4560:154;4574:6;4571:1;4568:13;4560:154;;;4648:7;4642:14;4638:1;4633:3;4629:11;4622:35;4698:1;4689:7;4685:15;4674:26;;4596:4;4593:1;4589:12;4584:17;;4560:154;;;4743:1;4738:3;4734:11;4727:18;;4426:329;;4242:513;;4048:713;;;;;;:::o;4767:366::-;4909:3;4930:67;4994:2;4989:3;4930:67;:::i;:::-;4923:74;;5006:93;5095:3;5006:93;:::i;:::-;5124:2;5119:3;5115:12;5108:19;;4913:220;;;:::o;5139:366::-;5281:3;5302:67;5366:2;5361:3;5302:67;:::i;:::-;5295:74;;5378:93;5467:3;5378:93;:::i;:::-;5496:2;5491:3;5487:12;5480:19;;5285:220;;;:::o;5511:366::-;5653:3;5674:67;5738:2;5733:3;5674:67;:::i;:::-;5667:74;;5750:93;5839:3;5750:93;:::i;:::-;5868:2;5863:3;5859:12;5852:19;;5657:220;;;:::o;5883:366::-;6025:3;6046:67;6110:2;6105:3;6046:67;:::i;:::-;6039:74;;6122:93;6211:3;6122:93;:::i;:::-;6240:2;6235:3;6231:12;6224:19;;6029:220;;;:::o;6255:366::-;6397:3;6418:67;6482:2;6477:3;6418:67;:::i;:::-;6411:74;;6494:93;6583:3;6494:93;:::i;:::-;6612:2;6607:3;6603:12;6596:19;;6401:220;;;:::o;6627:118::-;6714:24;6732:5;6714:24;:::i;:::-;6709:3;6702:37;6692:53;;:::o;6751:271::-;6881:3;6903:93;6992:3;6983:6;6903:93;:::i;:::-;6896:100;;7013:3;7006:10;;6885:137;;;;:::o;7028:222::-;7121:4;7159:2;7148:9;7144:18;7136:26;;7172:71;7240:1;7229:9;7225:17;7216:6;7172:71;:::i;:::-;7126:124;;;;:::o;7256:442::-;7405:4;7443:2;7432:9;7428:18;7420:26;;7456:71;7524:1;7513:9;7509:17;7500:6;7456:71;:::i;:::-;7537:72;7605:2;7594:9;7590:18;7581:6;7537:72;:::i;:::-;7619;7687:2;7676:9;7672:18;7663:6;7619:72;:::i;:::-;7410:288;;;;;;:::o;7704:332::-;7825:4;7863:2;7852:9;7848:18;7840:26;;7876:71;7944:1;7933:9;7929:17;7920:6;7876:71;:::i;:::-;7957:72;8025:2;8014:9;8010:18;8001:6;7957:72;:::i;:::-;7830:206;;;;;:::o;8042:270::-;8159:4;8197:2;8186:9;8182:18;8174:26;;8210:95;8302:1;8291:9;8287:17;8278:6;8210:95;:::i;:::-;8164:148;;;;:::o;8318:264::-;8432:4;8470:2;8459:9;8455:18;8447:26;;8483:92;8572:1;8561:9;8557:17;8548:6;8483:92;:::i;:::-;8437:145;;;;:::o;8588:569::-;8775:4;8813:2;8802:9;8798:18;8790:26;;8826:92;8915:1;8904:9;8900:17;8891:6;8826:92;:::i;:::-;8965:9;8959:4;8955:20;8950:2;8939:9;8935:18;8928:48;8993:75;9063:4;9054:6;8993:75;:::i;:::-;8985:83;;9078:72;9146:2;9135:9;9131:18;9122:6;9078:72;:::i;:::-;8780:377;;;;;;:::o;9163:313::-;9276:4;9314:2;9303:9;9299:18;9291:26;;9363:9;9357:4;9353:20;9349:1;9338:9;9334:17;9327:47;9391:78;9464:4;9455:6;9391:78;:::i;:::-;9383:86;;9281:195;;;;:::o;9482:419::-;9648:4;9686:2;9675:9;9671:18;9663:26;;9735:9;9729:4;9725:20;9721:1;9710:9;9706:17;9699:47;9763:131;9889:4;9763:131;:::i;:::-;9755:139;;9653:248;;;:::o;9907:419::-;10073:4;10111:2;10100:9;10096:18;10088:26;;10160:9;10154:4;10150:20;10146:1;10135:9;10131:17;10124:47;10188:131;10314:4;10188:131;:::i;:::-;10180:139;;10078:248;;;:::o;10332:419::-;10498:4;10536:2;10525:9;10521:18;10513:26;;10585:9;10579:4;10575:20;10571:1;10560:9;10556:17;10549:47;10613:131;10739:4;10613:131;:::i;:::-;10605:139;;10503:248;;;:::o;10757:419::-;10923:4;10961:2;10950:9;10946:18;10938:26;;11010:9;11004:4;11000:20;10996:1;10985:9;10981:17;10974:47;11038:131;11164:4;11038:131;:::i;:::-;11030:139;;10928:248;;;:::o;11182:419::-;11348:4;11386:2;11375:9;11371:18;11363:26;;11435:9;11429:4;11425:20;11421:1;11410:9;11406:17;11399:47;11463:131;11589:4;11463:131;:::i;:::-;11455:139;;11353:248;;;:::o;11607:129::-;11641:6;11668:20;;:::i;:::-;11658:30;;11697:33;11725:4;11717:6;11697:33;:::i;:::-;11648:88;;;:::o;11742:75::-;11775:6;11808:2;11802:9;11792:19;;11782:35;:::o;11823:308::-;11885:4;11975:18;11967:6;11964:30;11961:2;;;11997:18;;:::i;:::-;11961:2;12035:29;12057:6;12035:29;:::i;:::-;12027:37;;12119:4;12113;12109:15;12101:23;;11890:241;;;:::o;12137:141::-;12186:4;12209:3;12201:11;;12232:3;12229:1;12222:14;12266:4;12263:1;12253:18;12245:26;;12191:87;;;:::o;12284:98::-;12335:6;12369:5;12363:12;12353:22;;12342:40;;;:::o;12388:99::-;12440:6;12474:5;12468:12;12458:22;;12447:40;;;:::o;12493:147::-;12594:11;12631:3;12616:18;;12606:34;;;;:::o;12646:169::-;12730:11;12764:6;12759:3;12752:19;12804:4;12799:3;12795:14;12780:29;;12742:73;;;;:::o;12821:96::-;12858:7;12887:24;12905:5;12887:24;:::i;:::-;12876:35;;12866:51;;;:::o;12923:90::-;12957:7;13000:5;12993:13;12986:21;12975:32;;12965:48;;;:::o;13019:126::-;13056:7;13096:42;13089:5;13085:54;13074:65;;13064:81;;;:::o;13151:77::-;13188:7;13217:5;13206:16;;13196:32;;;:::o;13234:174::-;13308:9;13341:61;13396:5;13341:61;:::i;:::-;13328:74;;13318:90;;;:::o;13414:137::-;13488:9;13521:24;13539:5;13521:24;:::i;:::-;13508:37;;13498:53;;;:::o;13557:168::-;13628:9;13661:58;13713:5;13661:58;:::i;:::-;13648:71;;13638:87;;;:::o;13731:134::-;13802:9;13835:24;13853:5;13835:24;:::i;:::-;13822:37;;13812:53;;;:::o;13871:154::-;13955:6;13950:3;13945;13932:30;14017:1;14008:6;14003:3;13999:16;13992:27;13922:103;;;:::o;14031:307::-;14099:1;14109:113;14123:6;14120:1;14117:13;14109:113;;;14208:1;14203:3;14199:11;14193:18;14189:1;14184:3;14180:11;14173:39;14145:2;14142:1;14138:10;14133:15;;14109:113;;;14240:6;14237:1;14234:13;14231:2;;;14320:1;14311:6;14306:3;14302:16;14295:27;14231:2;14080:258;;;;:::o;14344:320::-;14388:6;14425:1;14419:4;14415:12;14405:22;;14472:1;14466:4;14462:12;14493:18;14483:2;;14549:4;14541:6;14537:17;14527:27;;14483:2;14611;14603:6;14600:14;14580:18;14577:38;14574:2;;;14630:18;;:::i;:::-;14574:2;14395:269;;;;:::o;14670:281::-;14753:27;14775:4;14753:27;:::i;:::-;14745:6;14741:40;14883:6;14871:10;14868:22;14847:18;14835:10;14832:34;14829:62;14826:2;;;14894:18;;:::i;:::-;14826:2;14934:10;14930:2;14923:22;14713:238;;;:::o;14957:180::-;15005:77;15002:1;14995:88;15102:4;15099:1;15092:15;15126:4;15123:1;15116:15;15143:180;15191:77;15188:1;15181:88;15288:4;15285:1;15278:15;15312:4;15309:1;15302:15;15329:102;15370:6;15421:2;15417:7;15412:2;15405:5;15401:14;15397:28;15387:38;;15377:54;;;:::o;15437:225::-;15577:34;15573:1;15565:6;15561:14;15554:58;15646:8;15641:2;15633:6;15629:15;15622:33;15543:119;:::o;15668:225::-;15808:34;15804:1;15796:6;15792:14;15785:58;15877:8;15872:2;15864:6;15860:15;15853:33;15774:119;:::o;15899:182::-;16039:34;16035:1;16027:6;16023:14;16016:58;16005:76;:::o;16087:179::-;16227:31;16223:1;16215:6;16211:14;16204:55;16193:73;:::o;16272:229::-;16412:34;16408:1;16400:6;16396:14;16389:58;16481:12;16476:2;16468:6;16464:15;16457:37;16378:123;:::o;16507:122::-;16580:24;16598:5;16580:24;:::i;:::-;16573:5;16570:35;16560:2;;16619:1;16616;16609:12;16560:2;16550:79;:::o;16635:116::-;16705:21;16720:5;16705:21;:::i;:::-;16698:5;16695:32;16685:2;;16741:1;16738;16731:12;16685:2;16675:76;:::o;16757:122::-;16830:24;16848:5;16830:24;:::i;:::-;16823:5;16820:35;16810:2;;16869:1;16866;16859:12;16810:2;16800:79;:::o
Swarm Source
ipfs://8be725f7a0eefedf95b07e5f24f7e26bc2bdb7837e6aaeff08fdd28de5d39814
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.