Contract Overview
Balance:
0 AVAX
AVAX Value:
$0.00
[ Download CSV Export ]
Contract Name:
xJoe
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "SafeERC20.sol"; import "ERC20.sol"; import "IMainStakingJoe.sol"; /// @title XJoe /// @author Vector Team /// @notice xJoe is a token minted when 1 joe is staked in the Vector protocol contract xJoe is ERC20 { using SafeERC20 for IERC20; address public immutable mainContract; address public immutable joe; event XJoeMinted(address indexed user, uint256 amount); constructor(address _mainContract, address _joe) ERC20("zJoe", "zJoe") { mainContract = _mainContract; joe = _joe; } /// @notice deposit Joe in vector protocol and get vJoe at a 1:1 rate /// @param _amount the amount of Joe function depositFor(uint256 _amount, address _for) external { IERC20(joe).safeTransferFrom(msg.sender, mainContract, _amount); IMainStakingJoe(mainContract).stakeJoe(_amount); _mint(_for, _amount); emit XJoeMinted(_for, _amount); } function depositWithoutTransferFor(uint256 _amount, address _for) external { require(msg.sender == mainContract, "Only MainStaking"); IMainStakingJoe(mainContract).stakeJoe(_amount); _mint(_for, _amount); emit XJoeMinted(_for, _amount); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (token/ERC20/utils/SafeERC20.sol) pragma solidity ^0.8.0; import "IERC20.sol"; import "Address.sol"; /** * @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"); } } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @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 `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, 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 `sender` to `recipient` 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 sender, address recipient, uint256 amount ) external returns (bool); /** * @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); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Address.sol) pragma solidity ^0.8.0; /** * @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 * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; assembly { size := extcodesize(account) } return size > 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 assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (token/ERC20/ERC20.sol) pragma solidity ^0.8.0; import "IERC20.sol"; import "IERC20Metadata.sol"; import "Context.sol"; /** * @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; /** * @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_) { _name = name_; _symbol = symbol_; } /** * @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 18; } /** * @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: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, 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}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), 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}. * * Requirements: * * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for ``sender``'s tokens of at least * `amount`. */ function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, _msgSender(), currentAllowance - 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) { _approve(_msgSender(), spender, _allowances[_msgSender()][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) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(_msgSender(), 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: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); _afterTokenTransfer(sender, recipient, 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 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 {} }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol) pragma solidity ^0.8.0; import "IERC20.sol"; /** * @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); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; interface IMainStakingJoe { function setXJoe(address _xJoe) external; function addFee( uint256 max, uint256 min, uint256 value, address to, bool isJoe, bool isAddress ) external; function setFee(uint256 index, uint256 value) external; function removeFee(uint256 index) external; function setCallerFee(uint256 value) external; function deposit(address token, uint256 amount) external; function harvest(address token, bool isUser) external; function sendTokenRewards(address _token, address _rewarder) external; function donateTokenRewards(address _token, address _rewarder) external; function withdraw(address token, uint256 _amount) external; function stakeJoe(uint256 amount) external; function stakeOrBufferJoe(uint256 amount) external; function stakeAllJoe() external; function claimVeJoe() external; function getStakedJoe() external view returns (uint256 stakedJoe); function getVeJoe() external view returns (uint256); function registerPool( uint256 _pid, address _token, string memory receiptName, string memory receiptSymbol, uint256 allocPoints ) external; function getPoolInfo(address _address) external view returns ( uint256 pid, bool isActive, address token, address receipt, address rewards_addr, address helper ); function removePool(address token) external; function setPoolHelper(address token, address _poolhelper) external; function setPoolRewarder(address token, address _poolRewarder) external; function setMasterChief(address _masterVtx) external; function setMasterJoe(address _masterJoe) external; }
{ "evmVersion": "istanbul", "optimizer": { "enabled": true, "runs": 999 }, "libraries": { "xJoe.sol": {} }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } } }
[{"inputs":[{"internalType":"address","name":"_mainContract","type":"address"},{"internalType":"address","name":"_joe","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"XJoeMinted","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address","name":"_for","type":"address"}],"name":"depositFor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address","name":"_for","type":"address"}],"name":"depositWithoutTransferFor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"joe","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mainContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60c06040523480156200001157600080fd5b506040516200126b3803806200126b83398101604081905262000034916200016e565b6040805180820182526004808252637a4a6f6560e01b6020808401828152855180870190965292855284015281519192916200007391600391620000ab565b50805162000089906004906020840190620000ab565b5050506001600160601b0319606092831b8116608052911b1660a052620001e3565b828054620000b990620001a6565b90600052602060002090601f016020900481019282620000dd576000855562000128565b82601f10620000f857805160ff191683800117855562000128565b8280016001018555821562000128579182015b82811115620001285782518255916020019190600101906200010b565b50620001369291506200013a565b5090565b5b808211156200013657600081556001016200013b565b80516001600160a01b03811681146200016957600080fd5b919050565b600080604083850312156200018257600080fd5b6200018d8362000151565b91506200019d6020840162000151565b90509250929050565b600181811c90821680620001bb57607f821691505b60208210811415620001dd57634e487b7160e01b600052602260045260246000fd5b50919050565b60805160601c60a05160601c6110406200022b600039600081816101f3015261041b0152600081816102320152818161043e01528181610492015261065b01526110406000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806370a0823111610097578063b985a3a011610066578063b985a3a0146101ee578063d270e7ab1461022d578063dd62ed3e14610254578063f59dc57a1461028d57600080fd5b806370a082311461019757806395d89b41146101c0578063a457c2d7146101c8578063a9059cbb146101db57600080fd5b806323b872dd116100d357806323b872dd1461014d578063313ce5671461016057806336efd16f1461016f578063395093511461018457600080fd5b806306fdde03146100fa578063095ea7b31461011857806318160ddd1461013b575b600080fd5b6101026102a0565b60405161010f9190610f4a565b60405180910390f35b61012b610126366004610ebf565b610332565b604051901515815260200161010f565b6002545b60405190815260200161010f565b61012b61015b366004610e83565b610348565b6040516012815260200161010f565b61018261017d366004610f0b565b61040e565b005b61012b610192366004610ebf565b610547565b61013f6101a5366004610e35565b6001600160a01b031660009081526020819052604090205490565b610102610583565b61012b6101d6366004610ebf565b610592565b61012b6101e9366004610ebf565b610643565b6102157f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161010f565b6102157f000000000000000000000000000000000000000000000000000000000000000081565b61013f610262366004610e50565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61018261029b366004610f0b565b610650565b6060600380546102af90610fcf565b80601f01602080910402602001604051908101604052809291908181526020018280546102db90610fcf565b80156103285780601f106102fd57610100808354040283529160200191610328565b820191906000526020600020905b81548152906001019060200180831161030b57829003601f168201915b5050505050905090565b600061033f3384846106c8565b50600192915050565b6000610355848484610820565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156103f45760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e636500000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61040185338584036106c8565b60019150505b9392505050565b6104636001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016337f000000000000000000000000000000000000000000000000000000000000000085610a39565b6040517f162febcf000000000000000000000000000000000000000000000000000000008152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063162febcf90602401600060405180830381600087803b1580156104de57600080fd5b505af11580156104f2573d6000803e3d6000fd5b505050506105008183610ac1565b806001600160a01b03167f4097497f22fcc04ea0317d53a2adc00a50261187dd8d406cbb2e581972aa19ea8360405161053b91815260200190565b60405180910390a25050565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161033f91859061057e908690610f7d565b6106c8565b6060600480546102af90610fcf565b3360009081526001602090815260408083206001600160a01b03861684529091528120548281101561062c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016103eb565b61063933858584036106c8565b5060019392505050565b600061033f338484610820565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146104635760405162461bcd60e51b815260206004820152601060248201527f4f6e6c79204d61696e5374616b696e670000000000000000000000000000000060448201526064016103eb565b6001600160a01b0383166107435760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016103eb565b6001600160a01b0382166107bf5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016103eb565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661089c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016103eb565b6001600160a01b0382166109185760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016103eb565b6001600160a01b038316600090815260208190526040902054818110156109a75760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016103eb565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906109de908490610f7d565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a2a91815260200190565b60405180910390a35b50505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052610a33908590610ba5565b6001600160a01b038216610b175760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016103eb565b8060026000828254610b299190610f7d565b90915550506001600160a01b03821660009081526020819052604081208054839290610b56908490610f7d565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b6000610bfa826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610c8a9092919063ffffffff16565b805190915015610ba05780806020019051810190610c189190610ee9565b610ba05760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016103eb565b6060610c998484600085610ca1565b949350505050565b606082471015610d195760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016103eb565b843b610d675760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103eb565b600080866001600160a01b03168587604051610d839190610f2e565b60006040518083038185875af1925050503d8060008114610dc0576040519150601f19603f3d011682016040523d82523d6000602084013e610dc5565b606091505b5091509150610dd5828286610de0565b979650505050505050565b60608315610def575081610407565b825115610dff5782518084602001fd5b8160405162461bcd60e51b81526004016103eb9190610f4a565b80356001600160a01b0381168114610e3057600080fd5b919050565b600060208284031215610e4757600080fd5b61040782610e19565b60008060408385031215610e6357600080fd5b610e6c83610e19565b9150610e7a60208401610e19565b90509250929050565b600080600060608486031215610e9857600080fd5b610ea184610e19565b9250610eaf60208501610e19565b9150604084013590509250925092565b60008060408385031215610ed257600080fd5b610edb83610e19565b946020939093013593505050565b600060208284031215610efb57600080fd5b8151801515811461040757600080fd5b60008060408385031215610f1e57600080fd5b82359150610e7a60208401610e19565b60008251610f40818460208701610fa3565b9190910192915050565b6020815260008251806020840152610f69816040850160208701610fa3565b601f01601f19169190910160400192915050565b60008219821115610f9e57634e487b7160e01b600052601160045260246000fd5b500190565b60005b83811015610fbe578181015183820152602001610fa6565b83811115610a335750506000910152565b600181811c90821680610fe357607f821691505b6020821081141561100457634e487b7160e01b600052602260045260246000fd5b5091905056fea2646970667358221220583e5b40b03d091f10eed0b7191fe73dae038878c4a6bb793962412ea2138cff64736f6c634300080700330000000000000000000000000e25c07748f727d6cccd7d2711fd7bd13d13422d0000000000000000000000006e84a6216ea6dacc71ee8e6b0a5b7322eebc0fdd
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000e25c07748f727d6cccd7d2711fd7bd13d13422d0000000000000000000000006e84a6216ea6dacc71ee8e6b0a5b7322eebc0fdd
-----Decoded View---------------
Arg [0] : _mainContract (address): 0x0e25c07748f727d6cccd7d2711fd7bd13d13422d
Arg [1] : _joe (address): 0x6e84a6216ea6dacc71ee8e6b0a5b7322eebc0fdd
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000000e25c07748f727d6cccd7d2711fd7bd13d13422d
Arg [1] : 0000000000000000000000006e84a6216ea6dacc71ee8e6b0a5b7322eebc0fdd
Deployed ByteCode Sourcemap
252:1006:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2114:98:2;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4211:166;;;;;;:::i;:::-;;:::i;:::-;;;2882:14:8;;2875:22;2857:41;;2845:2;2830:18;4211:166:2;2717:187:8;3202:106:2;3289:12;;3202:106;;;8164:25:8;;;8152:2;8137:18;3202:106:2;8018:177:8;4844:478:2;;;;;;:::i;:::-;;:::i;3051:91::-;;;3133:2;8342:36:8;;8330:2;8315:18;3051:91:2;8200:184:8;709:267:7;;;;;;:::i;:::-;;:::i;:::-;;5717:212:2;;;;;;:::i;:::-;;:::i;3366:125::-;;;;;;:::i;:::-;-1:-1:-1;;;;;3466:18:2;3440:7;3466:18;;;;;;;;;;;;3366:125;2325:102;;;:::i;6416:405::-;;;;;;:::i;:::-;;:::i;3694:172::-;;;;;;:::i;:::-;;:::i;356:28:7:-;;;;;;;;-1:-1:-1;;;;;2247:55:8;;;2229:74;;2217:2;2202:18;356:28:7;2083:226:8;313:37:7;;;;;3924:149:2;;;;;;:::i;:::-;-1:-1:-1;;;;;4039:18:2;;;4013:7;4039:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3924:149;982:274:7;;;;;;:::i;:::-;;:::i;2114:98:2:-;2168:13;2200:5;2193:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2114:98;:::o;4211:166::-;4294:4;4310:39;719:10:1;4333:7:2;4342:6;4310:8;:39::i;:::-;-1:-1:-1;4366:4:2;4211:166;;;;:::o;4844:478::-;4980:4;4996:36;5006:6;5014:9;5025:6;4996:9;:36::i;:::-;-1:-1:-1;;;;;5070:19:2;;5043:24;5070:19;;;:11;:19;;;;;;;;719:10:1;5070:33:2;;;;;;;;5121:26;;;;5113:79;;;;-1:-1:-1;;;5113:79:2;;5465:2:8;5113:79:2;;;5447:21:8;5504:2;5484:18;;;5477:30;5543:34;5523:18;;;5516:62;5614:10;5594:18;;;5587:38;5642:19;;5113:79:2;;;;;;;;;5226:57;5235:6;719:10:1;5276:6:2;5257:16;:25;5226:8;:57::i;:::-;5311:4;5304:11;;;4844:478;;;;;;:::o;709:267:7:-;779:63;-1:-1:-1;;;;;786:3:7;779:28;808:10;820:12;834:7;779:28;:63::i;:::-;852:47;;;;;;;;8164:25:8;;;868:12:7;-1:-1:-1;;;;;852:38:7;;;;8137:18:8;;852:47:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;909:20;915:4;921:7;909:5;:20::i;:::-;955:4;-1:-1:-1;;;;;944:25:7;;961:7;944:25;;;;8164::8;;8152:2;8137:18;;8018:177;944:25:7;;;;;;;;709:267;;:::o;5717:212:2:-;719:10:1;5805:4:2;5853:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;5853:34:2;;;;;;;;;;5805:4;;5821:80;;5844:7;;5853:47;;5890:10;;5853:47;:::i;:::-;5821:8;:80::i;2325:102::-;2381:13;2413:7;2406:14;;;;;:::i;6416:405::-;719:10:1;6509:4:2;6552:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6552:34:2;;;;;;;;;;6604:35;;;;6596:85;;;;-1:-1:-1;;;6596:85:2;;7454:2:8;6596:85:2;;;7436:21:8;7493:2;7473:18;;;7466:30;7532:34;7512:18;;;7505:62;7603:7;7583:18;;;7576:35;7628:19;;6596:85:2;7252:401:8;6596:85:2;6715:67;719:10:1;6738:7:2;6766:15;6747:16;:34;6715:8;:67::i;:::-;-1:-1:-1;6810:4:2;;6416:405;-1:-1:-1;;;6416:405:2:o;3694:172::-;3780:4;3796:42;719:10:1;3820:9:2;3831:6;3796:9;:42::i;982:274:7:-;1075:10;-1:-1:-1;;;;;1089:12:7;1075:26;;1067:55;;;;-1:-1:-1;;;1067:55:7;;3903:2:8;1067:55:7;;;3885:21:8;3942:2;3922:18;;;3915:30;3981:18;3961;;;3954:46;4017:18;;1067:55:7;3701:340:8;9992:370:2;-1:-1:-1;;;;;10123:19:2;;10115:68;;;;-1:-1:-1;;;10115:68:2;;6280:2:8;10115:68:2;;;6262:21:8;6319:2;6299:18;;;6292:30;6358:34;6338:18;;;6331:62;6429:6;6409:18;;;6402:34;6453:19;;10115:68:2;6078:400:8;10115:68:2;-1:-1:-1;;;;;10201:21:2;;10193:68;;;;-1:-1:-1;;;10193:68:2;;4248:2:8;10193:68:2;;;4230:21:8;4287:2;4267:18;;;4260:30;4326:34;4306:18;;;4299:62;4397:4;4377:18;;;4370:32;4419:19;;10193:68:2;4046:398:8;10193:68:2;-1:-1:-1;;;;;10272:18:2;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10323:32;;8164:25:8;;;10323:32:2;;8137:18:8;10323:32:2;;;;;;;9992:370;;;:::o;7295:713::-;-1:-1:-1;;;;;7430:20:2;;7422:70;;;;-1:-1:-1;;;7422:70:2;;5874:2:8;7422:70:2;;;5856:21:8;5913:2;5893:18;;;5886:30;5952:34;5932:18;;;5925:62;6023:7;6003:18;;;5996:35;6048:19;;7422:70:2;5672:401:8;7422:70:2;-1:-1:-1;;;;;7510:23:2;;7502:71;;;;-1:-1:-1;;;7502:71:2;;3499:2:8;7502:71:2;;;3481:21:8;3538:2;3518:18;;;3511:30;3577:34;3557:18;;;3550:62;3648:5;3628:18;;;3621:33;3671:19;;7502:71:2;3297:399:8;7502:71:2;-1:-1:-1;;;;;7666:17:2;;7642:21;7666:17;;;;;;;;;;;7701:23;;;;7693:74;;;;-1:-1:-1;;;7693:74:2;;4651:2:8;7693:74:2;;;4633:21:8;4690:2;4670:18;;;4663:30;4729:34;4709:18;;;4702:62;4800:8;4780:18;;;4773:36;4826:19;;7693:74:2;4449:402:8;7693:74:2;-1:-1:-1;;;;;7801:17:2;;;:9;:17;;;;;;;;;;;7821:22;;;7801:42;;7863:20;;;;;;;;:30;;7837:6;;7801:9;7863:30;;7837:6;;7863:30;:::i;:::-;;;;;;;;7926:9;-1:-1:-1;;;;;7909:35:2;7918:6;-1:-1:-1;;;;;7909:35:2;;7937:6;7909:35;;;;8164:25:8;;8152:2;8137:18;;8018:177;7909:35:2;;;;;;;;7955:46;7412:596;7295:713;;;:::o;894:241:6:-;1059:68;;;-1:-1:-1;;;;;2595:15:8;;;1059:68:6;;;2577:34:8;2647:15;;2627:18;;;2620:43;2679:18;;;;2672:34;;;1059:68:6;;;;;;;;;;2489:18:8;;;;1059:68:6;;;;;;;;;;1082:27;1059:68;;;1032:96;;1052:5;;1032:19;:96::i;8284:389:2:-;-1:-1:-1;;;;;8367:21:2;;8359:65;;;;-1:-1:-1;;;8359:65:2;;7860:2:8;8359:65:2;;;7842:21:8;7899:2;7879:18;;;7872:30;7938:33;7918:18;;;7911:61;7989:18;;8359:65:2;7658:355:8;8359:65:2;8511:6;8495:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;8527:18:2;;:9;:18;;;;;;;;;;:28;;8549:6;;8527:9;:28;;8549:6;;8527:28;:::i;:::-;;;;-1:-1:-1;;8570:37:2;;8164:25:8;;;-1:-1:-1;;;;;8570:37:2;;;8587:1;;8570:37;;8152:2:8;8137:18;8570:37:2;;;;;;;8284:389;;:::o;10946:121::-;;;;:::o;3189:706:6:-;3608:23;3634:69;3662:4;3634:69;;;;;;;;;;;;;;;;;3642:5;-1:-1:-1;;;;;3634:27:6;;;:69;;;;;:::i;:::-;3717:17;;3608:95;;-1:-1:-1;3717:21:6;3713:176;;3812:10;3801:30;;;;;;;;;;;;:::i;:::-;3793:85;;;;-1:-1:-1;;;3793:85:6;;7043:2:8;3793:85:6;;;7025:21:8;7082:2;7062:18;;;7055:30;7121:34;7101:18;;;7094:62;7192:12;7172:18;;;7165:40;7222:19;;3793:85:6;6841:406:8;3514:223:0;3647:12;3678:52;3700:6;3708:4;3714:1;3717:12;3678:21;:52::i;:::-;3671:59;3514:223;-1:-1:-1;;;;3514:223:0:o;4601:499::-;4766:12;4823:5;4798:21;:30;;4790:81;;;;-1:-1:-1;;;4790:81:0;;5058:2:8;4790:81:0;;;5040:21:8;5097:2;5077:18;;;5070:30;5136:34;5116:18;;;5109:62;5207:8;5187:18;;;5180:36;5233:19;;4790:81:0;4856:402:8;4790:81:0;1087:20;;4881:60;;;;-1:-1:-1;;;4881:60:0;;6685:2:8;4881:60:0;;;6667:21:8;6724:2;6704:18;;;6697:30;6763:31;6743:18;;;6736:59;6812:18;;4881:60:0;6483:353:8;4881:60:0;4953:12;4967:23;4994:6;-1:-1:-1;;;;;4994:11:0;5013:5;5020:4;4994:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4952:73;;;;5042:51;5059:7;5068:10;5080:12;5042:16;:51::i;:::-;5035:58;4601:499;-1:-1:-1;;;;;;;4601:499:0:o;7214:692::-;7360:12;7388:7;7384:516;;;-1:-1:-1;7418:10:0;7411:17;;7384:516;7529:17;;:21;7525:365;;7723:10;7717:17;7783:15;7770:10;7766:2;7762:19;7755:44;7525:365;7862:12;7855:20;;-1:-1:-1;;;7855:20:0;;;;;;;;:::i;14:196:8:-;82:20;;-1:-1:-1;;;;;131:54:8;;121:65;;111:93;;200:1;197;190:12;111:93;14:196;;;:::o;215:186::-;274:6;327:2;315:9;306:7;302:23;298:32;295:52;;;343:1;340;333:12;295:52;366:29;385:9;366:29;:::i;406:260::-;474:6;482;535:2;523:9;514:7;510:23;506:32;503:52;;;551:1;548;541:12;503:52;574:29;593:9;574:29;:::i;:::-;564:39;;622:38;656:2;645:9;641:18;622:38;:::i;:::-;612:48;;406:260;;;;;:::o;671:328::-;748:6;756;764;817:2;805:9;796:7;792:23;788:32;785:52;;;833:1;830;823:12;785:52;856:29;875:9;856:29;:::i;:::-;846:39;;904:38;938:2;927:9;923:18;904:38;:::i;:::-;894:48;;989:2;978:9;974:18;961:32;951:42;;671:328;;;;;:::o;1004:254::-;1072:6;1080;1133:2;1121:9;1112:7;1108:23;1104:32;1101:52;;;1149:1;1146;1139:12;1101:52;1172:29;1191:9;1172:29;:::i;:::-;1162:39;1248:2;1233:18;;;;1220:32;;-1:-1:-1;;;1004:254:8:o;1263:277::-;1330:6;1383:2;1371:9;1362:7;1358:23;1354:32;1351:52;;;1399:1;1396;1389:12;1351:52;1431:9;1425:16;1484:5;1477:13;1470:21;1463:5;1460:32;1450:60;;1506:1;1503;1496:12;1545:254;1613:6;1621;1674:2;1662:9;1653:7;1649:23;1645:32;1642:52;;;1690:1;1687;1680:12;1642:52;1726:9;1713:23;1703:33;;1755:38;1789:2;1778:9;1774:18;1755:38;:::i;1804:274::-;1933:3;1971:6;1965:13;1987:53;2033:6;2028:3;2021:4;2013:6;2009:17;1987:53;:::i;:::-;2056:16;;;;;1804:274;-1:-1:-1;;1804:274:8:o;2909:383::-;3058:2;3047:9;3040:21;3021:4;3090:6;3084:13;3133:6;3128:2;3117:9;3113:18;3106:34;3149:66;3208:6;3203:2;3192:9;3188:18;3183:2;3175:6;3171:15;3149:66;:::i;:::-;3276:2;3255:15;-1:-1:-1;;3251:29:8;3236:45;;;;3283:2;3232:54;;2909:383;-1:-1:-1;;2909:383:8:o;8389:282::-;8429:3;8460:1;8456:6;8453:1;8450:13;8447:193;;;-1:-1:-1;;;8493:1:8;8486:88;8597:4;8594:1;8587:15;8625:4;8622:1;8615:15;8447:193;-1:-1:-1;8656:9:8;;8389:282::o;8676:258::-;8748:1;8758:113;8772:6;8769:1;8766:13;8758:113;;;8848:11;;;8842:18;8829:11;;;8822:39;8794:2;8787:10;8758:113;;;8889:6;8886:1;8883:13;8880:48;;;-1:-1:-1;;8924:1:8;8906:16;;8899:27;8676:258::o;8939:437::-;9018:1;9014:12;;;;9061;;;9082:61;;9136:4;9128:6;9124:17;9114:27;;9082:61;9189:2;9181:6;9178:14;9158:18;9155:38;9152:218;;;-1:-1:-1;;;9223:1:8;9216:88;9327:4;9324:1;9317:15;9355:4;9352:1;9345:15;9152:218;;8939:437;;;:::o
Swarm Source
ipfs://583e5b40b03d091f10eed0b7191fe73dae038878c4a6bb793962412ea2138cff
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.