Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00Latest 25 from a total of 472 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Leftover Share V... | 16367072 | 1106 days ago | IN | 0 ETH | 0.00116568 | ||||
| Leftover Share V... | 16258369 | 1121 days ago | IN | 0 ETH | 0.00079437 | ||||
| Leftover Share V... | 16247037 | 1122 days ago | IN | 0 ETH | 0.00084374 | ||||
| Leftover Share V... | 16242842 | 1123 days ago | IN | 0 ETH | 0.00123541 | ||||
| Leftover Share V... | 16234303 | 1124 days ago | IN | 0 ETH | 0.00151299 | ||||
| Leftover Share V... | 16233146 | 1124 days ago | IN | 0 ETH | 0.00087005 | ||||
| Leftover Share V... | 16224741 | 1125 days ago | IN | 0 ETH | 0.00081104 | ||||
| Leftover Share V... | 16221861 | 1126 days ago | IN | 0 ETH | 0.00114838 | ||||
| Discard Leftover... | 16210617 | 1127 days ago | IN | 0 ETH | 0.00052675 | ||||
| Leftover Share V... | 16208430 | 1128 days ago | IN | 0 ETH | 0.00079945 | ||||
| Leftover Share V... | 16206651 | 1128 days ago | IN | 0 ETH | 0.00089322 | ||||
| Discard Leftover... | 16190948 | 1130 days ago | IN | 0 ETH | 0.00089156 | ||||
| Leftover Share V... | 16185170 | 1131 days ago | IN | 0 ETH | 0.00112102 | ||||
| Leftover Share V... | 16184960 | 1131 days ago | IN | 0 ETH | 0.00167188 | ||||
| Leftover Share V... | 16170063 | 1133 days ago | IN | 0 ETH | 0.00576101 | ||||
| Leftover Share V... | 16168842 | 1133 days ago | IN | 0 ETH | 0.00105895 | ||||
| Leftover Share V... | 16165405 | 1134 days ago | IN | 0 ETH | 0.0008178 | ||||
| Leftover Share V... | 16113038 | 1141 days ago | IN | 0 ETH | 0.00074098 | ||||
| Leftover Share V... | 16097124 | 1143 days ago | IN | 0 ETH | 0.00072891 | ||||
| Leftover Share V... | 16090685 | 1144 days ago | IN | 0 ETH | 0.00061962 | ||||
| Leftover Share V... | 16089495 | 1144 days ago | IN | 0 ETH | 0.00054818 | ||||
| Leftover Share V... | 16075047 | 1146 days ago | IN | 0 ETH | 0.00079447 | ||||
| Leftover Share V... | 16063519 | 1148 days ago | IN | 0 ETH | 0.00070268 | ||||
| Leftover Share V... | 16055543 | 1149 days ago | IN | 0 ETH | 0.00069509 | ||||
| Leftover Share V... | 16054277 | 1149 days ago | IN | 0 ETH | 0.00067503 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
ExchangeGovernance
Compiler Version
v0.6.12+commit.27d51765
Optimization Enabled:
Yes with 1000000 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
pragma solidity ^0.6.0;
import "../libraries/ExchangeConstants.sol";
import "../libraries/LiquidVoting.sol";
import "../libraries/SafeCast.sol";
import "../utils/BalanceAccounting.sol";
import "./BaseGovernanceModule.sol";
contract ExchangeGovernance is BaseGovernanceModule, BalanceAccounting {
using Vote for Vote.Data;
using LiquidVoting for LiquidVoting.Data;
using VirtualVote for VirtualVote.Data;
using SafeCast for uint256;
event LeftoverGovernanceShareUpdate(address indexed user, uint256 vote, bool isDefault, uint256 amount);
event LeftoverReferralShareUpdate(address indexed user, uint256 vote, bool isDefault, uint256 amount);
LiquidVoting.Data private _leftoverGovernanceShare;
constructor(address _mothership) public BaseGovernanceModule(_mothership) {
_leftoverGovernanceShare.data.result = ExchangeConstants._DEFAULT_LEFTOVER_GOV_SHARE.toUint104();
}
function parameters() external view returns(uint256 govShare, uint256 refShare) {
govShare = _leftoverGovernanceShare.data.current();
refShare = ExchangeConstants._LEFTOVER_TOTAL_SHARE.sub(govShare);
}
function leftoverGovernanceShare() external view returns(uint256) {
return _leftoverGovernanceShare.data.current();
}
function leftoverGovernanceShareVotes(address user) external view returns(uint256) {
return _leftoverGovernanceShare.votes[user].get(ExchangeConstants._DEFAULT_LEFTOVER_GOV_SHARE);
}
function virtualLeftoverGovernanceShare() external view returns(uint104, uint104, uint48) {
return (_leftoverGovernanceShare.data.oldResult, _leftoverGovernanceShare.data.result, _leftoverGovernanceShare.data.time);
}
//
function leftoverReferralShare() external view returns(uint256) {
return ExchangeConstants._LEFTOVER_TOTAL_SHARE.sub(_leftoverGovernanceShare.data.current());
}
function leftoverReferralShareVotes(address user) external view returns(uint256) {
return ExchangeConstants._LEFTOVER_TOTAL_SHARE.sub(_leftoverGovernanceShare.votes[user].get(ExchangeConstants._DEFAULT_LEFTOVER_GOV_SHARE));
}
function virtualLeftoverReferralShare() external view returns(uint104, uint104, uint48) {
return (
ExchangeConstants._LEFTOVER_TOTAL_SHARE.sub(_leftoverGovernanceShare.data.oldResult).toUint104(),
ExchangeConstants._LEFTOVER_TOTAL_SHARE.sub(_leftoverGovernanceShare.data.result).toUint104(),
_leftoverGovernanceShare.data.time
);
}
///
function leftoverShareVote(uint256 govShare) external {
uint256 refShare = ExchangeConstants._LEFTOVER_TOTAL_SHARE.sub(govShare, "Governance share is too high");
uint256 balance = balanceOf(msg.sender);
uint256 supply = totalSupply();
_leftoverGovernanceShare.updateVote(
msg.sender,
_leftoverGovernanceShare.votes[msg.sender],
Vote.init(govShare),
balance,
supply,
ExchangeConstants._DEFAULT_LEFTOVER_GOV_SHARE,
_emitLeftoverGovernanceShareVoteUpdate
);
_emitLeftoverReferralShareVoteUpdate(msg.sender, refShare, false, balance);
}
function discardLeftoverShareVote() external {
uint256 balance = balanceOf(msg.sender);
uint256 supply = totalSupply();
_leftoverGovernanceShare.updateVote(
msg.sender,
_leftoverGovernanceShare.votes[msg.sender],
Vote.init(),
balance,
supply,
ExchangeConstants._DEFAULT_LEFTOVER_GOV_SHARE,
_emitLeftoverGovernanceShareVoteUpdate
);
_emitLeftoverReferralShareVoteUpdate(msg.sender, ExchangeConstants._DEFAULT_LEFTOVER_REF_SHARE, true, balance);
}
function _notifyStakeChanged(address account, uint256 newBalance) internal override {
uint256 balance = _set(account, newBalance);
if (newBalance == balance) {
return;
}
Vote.Data memory govShareVote = _leftoverGovernanceShare.votes[account];
uint256 refShare = ExchangeConstants._LEFTOVER_TOTAL_SHARE.sub(govShareVote.get(ExchangeConstants._DEFAULT_LEFTOVER_GOV_SHARE));
uint256 supply = totalSupply();
_leftoverGovernanceShare.updateBalance(
account,
govShareVote,
balance,
newBalance,
supply,
ExchangeConstants._DEFAULT_LEFTOVER_GOV_SHARE,
_emitLeftoverGovernanceShareVoteUpdate
);
_emitLeftoverReferralShareVoteUpdate(
account,
refShare,
govShareVote.isDefault(),
newBalance
);
}
function _emitLeftoverGovernanceShareVoteUpdate(address user, uint256 newDefaultShare, bool isDefault, uint256 balance) private {
emit LeftoverGovernanceShareUpdate(user, newDefaultShare, isDefault, balance);
}
function _emitLeftoverReferralShareVoteUpdate(address user, uint256 newDefaultShare, bool isDefault, uint256 balance) private {
emit LeftoverReferralShareUpdate(user, newDefaultShare, isDefault, balance);
}
}// SPDX-License-Identifier: MIT
pragma solidity ^0.6.0;
library ExchangeConstants {
uint256 internal constant _LEFTOVER_TOTAL_SHARE = 1e18; // 100%
uint256 internal constant _DEFAULT_LEFTOVER_GOV_SHARE = 0.8e18; // 80%
uint256 internal constant _DEFAULT_LEFTOVER_REF_SHARE = 0.2e18; // 20%
}// SPDX-License-Identifier: MIT
pragma solidity ^0.6.12;
import "@openzeppelin/contracts/math/SafeMath.sol";
import "./SafeCast.sol";
import "./VirtualVote.sol";
import "./Vote.sol";
library LiquidVoting {
using SafeMath for uint256;
using SafeCast for uint256;
using Vote for Vote.Data;
using VirtualVote for VirtualVote.Data;
struct Data {
VirtualVote.Data data;
uint256 _weightedSum;
uint256 _defaultVotes;
mapping(address => Vote.Data) votes;
}
function updateVote(
LiquidVoting.Data storage self,
address user,
Vote.Data memory oldVote,
Vote.Data memory newVote,
uint256 balance,
uint256 totalSupply,
uint256 defaultVote,
function(address, uint256, bool, uint256) emitEvent
) internal {
return _update(self, user, oldVote, newVote, balance, balance, totalSupply, defaultVote, emitEvent);
}
function updateBalance(
LiquidVoting.Data storage self,
address user,
Vote.Data memory oldVote,
uint256 oldBalance,
uint256 newBalance,
uint256 newTotalSupply,
uint256 defaultVote,
function(address, uint256, bool, uint256) emitEvent
) internal {
return _update(self, user, oldVote, newBalance == 0 ? Vote.init() : oldVote, oldBalance, newBalance, newTotalSupply, defaultVote, emitEvent);
}
function _update(
LiquidVoting.Data storage self,
address user,
Vote.Data memory oldVote,
Vote.Data memory newVote,
uint256 oldBalance,
uint256 newBalance,
uint256 newTotalSupply,
uint256 defaultVote,
function(address, uint256, bool, uint256) emitEvent
) private {
uint256 oldWeightedSum = self._weightedSum;
uint256 newWeightedSum = oldWeightedSum;
uint256 oldDefaultVotes = self._defaultVotes;
uint256 newDefaultVotes = oldDefaultVotes;
if (oldVote.isDefault()) {
newDefaultVotes = newDefaultVotes.sub(oldBalance);
} else {
newWeightedSum = newWeightedSum.sub(oldBalance.mul(oldVote.get(defaultVote)));
}
if (newVote.isDefault()) {
newDefaultVotes = newDefaultVotes.add(newBalance);
} else {
newWeightedSum = newWeightedSum.add(newBalance.mul(newVote.get(defaultVote)));
}
if (newWeightedSum != oldWeightedSum) {
self._weightedSum = newWeightedSum;
}
if (newDefaultVotes != oldDefaultVotes) {
self._defaultVotes = newDefaultVotes;
}
{
uint256 newResult = newTotalSupply == 0 ? defaultVote : newWeightedSum.add(newDefaultVotes.mul(defaultVote)).div(newTotalSupply);
VirtualVote.Data memory data = self.data;
if (newResult != data.result) {
VirtualVote.Data storage sdata = self.data;
(sdata.oldResult, sdata.result, sdata.time) = (
data.current().toUint104(),
newResult.toUint104(),
block.timestamp.toUint48()
);
}
}
if (!newVote.eq(oldVote)) {
self.votes[user] = newVote;
}
emitEvent(user, newVote.get(defaultVote), newVote.isDefault(), newBalance);
}
}// SPDX-License-Identifier: MIT
pragma solidity ^0.6.0;
library SafeCast {
function toUint216(uint256 value) internal pure returns (uint216) {
require(value < 2**216, "value does not fit in 216 bits");
return uint216(value);
}
function toUint104(uint256 value) internal pure returns (uint104) {
require(value < 2**104, "value does not fit in 104 bits");
return uint104(value);
}
function toUint48(uint256 value) internal pure returns (uint48) {
require(value < 2**48, "value does not fit in 48 bits");
return uint48(value);
}
function toUint40(uint256 value) internal pure returns (uint40) {
require(value < 2**40, "value does not fit in 40 bits");
return uint40(value);
}
}// SPDX-License-Identifier: MIT
pragma solidity ^0.6.0;
import "@openzeppelin/contracts/math/SafeMath.sol";
contract BalanceAccounting {
using SafeMath for uint256;
uint256 private _totalSupply;
mapping(address => uint256) private _balances;
function totalSupply() public view returns (uint256) {
return _totalSupply;
}
function balanceOf(address account) public view returns (uint256) {
return _balances[account];
}
function _mint(address account, uint256 amount) internal virtual {
_totalSupply = _totalSupply.add(amount);
_balances[account] = _balances[account].add(amount);
}
function _burn(address account, uint256 amount) internal virtual {
_balances[account] = _balances[account].sub(amount, "Burn amount exceeds balance");
_totalSupply = _totalSupply.sub(amount);
}
function _set(address account, uint256 amount) internal virtual returns(uint256 oldAmount) {
oldAmount = _balances[account];
if (oldAmount != amount) {
_balances[account] = amount;
_totalSupply = _totalSupply.add(amount).sub(oldAmount);
}
}
}// SPDX-License-Identifier: MIT
pragma solidity ^0.6.0;
import "../interfaces/IGovernanceModule.sol";
abstract contract BaseGovernanceModule is IGovernanceModule {
address public immutable mothership;
modifier onlyMothership {
require(msg.sender == mothership, "Access restricted to mothership");
_;
}
constructor(address _mothership) public {
mothership = _mothership;
}
function notifyStakesChanged(address[] calldata accounts, uint256[] calldata newBalances) external override onlyMothership {
require(accounts.length == newBalances.length, "Arrays length should be equal");
for(uint256 i = 0; i < accounts.length; ++i) {
_notifyStakeChanged(accounts[i], newBalances[i]);
}
}
function notifyStakeChanged(address account, uint256 newBalance) external override onlyMothership {
_notifyStakeChanged(account, newBalance);
}
function _notifyStakeChanged(address account, uint256 newBalance) internal virtual;
}// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0 <0.8.0;
/**
* @dev Wrappers over Solidity's arithmetic operations with added overflow
* checks.
*
* Arithmetic operations in Solidity wrap on overflow. This can easily result
* in bugs, because programmers usually assume that an overflow raises an
* error, which is the standard behavior in high level programming languages.
* `SafeMath` restores this intuition by reverting the transaction when an
* operation overflows.
*
* Using this library instead of the unchecked operations eliminates an entire
* class of bugs, so it's recommended to use it always.
*/
library SafeMath {
/**
* @dev Returns the addition of two unsigned integers, with an overflow flag.
*
* _Available since v3.4._
*/
function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
uint256 c = a + b;
if (c < a) return (false, 0);
return (true, c);
}
/**
* @dev Returns the substraction of two unsigned integers, with an overflow flag.
*
* _Available since v3.4._
*/
function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
if (b > a) return (false, 0);
return (true, a - b);
}
/**
* @dev Returns the multiplication of two unsigned integers, with an overflow flag.
*
* _Available since v3.4._
*/
function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
// Gas optimization: this is cheaper than requiring 'a' not being zero, but the
// benefit is lost if 'b' is also tested.
// See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
if (a == 0) return (true, 0);
uint256 c = a * b;
if (c / a != b) return (false, 0);
return (true, c);
}
/**
* @dev Returns the division of two unsigned integers, with a division by zero flag.
*
* _Available since v3.4._
*/
function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
if (b == 0) return (false, 0);
return (true, a / b);
}
/**
* @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
*
* _Available since v3.4._
*/
function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
if (b == 0) return (false, 0);
return (true, a % b);
}
/**
* @dev Returns the addition of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `+` operator.
*
* Requirements:
*
* - Addition cannot overflow.
*/
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting on
* overflow (when the result is negative).
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
*
* - Subtraction cannot overflow.
*/
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
require(b <= a, "SafeMath: subtraction overflow");
return a - b;
}
/**
* @dev Returns the multiplication of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `*` operator.
*
* Requirements:
*
* - Multiplication cannot overflow.
*/
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
if (a == 0) return 0;
uint256 c = a * b;
require(c / a == b, "SafeMath: multiplication overflow");
return c;
}
/**
* @dev Returns the integer division of two unsigned integers, reverting on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator. Note: this function uses a
* `revert` opcode (which leaves remaining gas untouched) while Solidity
* uses an invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function div(uint256 a, uint256 b) internal pure returns (uint256) {
require(b > 0, "SafeMath: division by zero");
return a / b;
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* reverting when dividing by zero.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
require(b > 0, "SafeMath: modulo by zero");
return a % b;
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting with custom message on
* overflow (when the result is negative).
*
* CAUTION: This function is deprecated because it requires allocating memory for the error
* message unnecessarily. For custom revert reasons use {trySub}.
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
*
* - Subtraction cannot overflow.
*/
function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b <= a, errorMessage);
return a - b;
}
/**
* @dev Returns the integer division of two unsigned integers, reverting with custom message on
* division by zero. The result is rounded towards zero.
*
* CAUTION: This function is deprecated because it requires allocating memory for the error
* message unnecessarily. For custom revert reasons use {tryDiv}.
*
* Counterpart to Solidity's `/` operator. Note: this function uses a
* `revert` opcode (which leaves remaining gas untouched) while Solidity
* uses an invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b > 0, errorMessage);
return a / b;
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* reverting with custom message when dividing by zero.
*
* CAUTION: This function is deprecated because it requires allocating memory for the error
* message unnecessarily. For custom revert reasons use {tryMod}.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b > 0, errorMessage);
return a % b;
}
}// SPDX-License-Identifier: MIT
pragma solidity ^0.6.12;
import "@openzeppelin/contracts/math/Math.sol";
import "@openzeppelin/contracts/math/SafeMath.sol";
library VirtualVote {
using SafeMath for uint256;
uint256 private constant _VOTE_DECAY_PERIOD = 1 days;
struct Data {
uint104 oldResult;
uint104 result;
uint48 time;
}
function current(VirtualVote.Data memory self) internal view returns(uint256) {
uint256 timePassed = Math.min(_VOTE_DECAY_PERIOD, block.timestamp.sub(self.time));
uint256 timeRemain = _VOTE_DECAY_PERIOD.sub(timePassed);
return uint256(self.oldResult).mul(timeRemain).add(
uint256(self.result).mul(timePassed)
).div(_VOTE_DECAY_PERIOD);
}
}// SPDX-License-Identifier: MIT
pragma solidity ^0.6.12;
library Vote {
struct Data {
uint256 value;
}
function eq(Vote.Data memory self, Vote.Data memory vote) internal pure returns(bool) {
return self.value == vote.value;
}
function init() internal pure returns(Vote.Data memory data) {
return Vote.Data({
value: 0
});
}
function init(uint256 vote) internal pure returns(Vote.Data memory data) {
return Vote.Data({
value: vote + 1
});
}
function isDefault(Data memory self) internal pure returns(bool) {
return self.value == 0;
}
function get(Data memory self, uint256 defaultVote) internal pure returns(uint256) {
if (self.value > 0) {
return self.value - 1;
}
return defaultVote;
}
function get(Data memory self, function() external view returns(uint256) defaultVoteFn) internal view returns(uint256) {
if (self.value > 0) {
return self.value - 1;
}
return defaultVoteFn();
}
}// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0 <0.8.0;
/**
* @dev Standard math utilities missing in the Solidity language.
*/
library Math {
/**
* @dev Returns the largest of two numbers.
*/
function max(uint256 a, uint256 b) internal pure returns (uint256) {
return a >= b ? a : b;
}
/**
* @dev Returns the smallest of two numbers.
*/
function min(uint256 a, uint256 b) internal pure returns (uint256) {
return a < b ? a : b;
}
/**
* @dev Returns the average of two numbers. The result is rounded towards
* zero.
*/
function average(uint256 a, uint256 b) internal pure returns (uint256) {
// (a + b) / 2 can overflow, so we distribute
return (a / 2) + (b / 2) + ((a % 2 + b % 2) / 2);
}
}// SPDX-License-Identifier: MIT
pragma solidity ^0.6.0;
interface IGovernanceModule {
function notifyStakeChanged(address account, uint256 newBalance) external;
function notifyStakesChanged(address[] calldata accounts, uint256[] calldata newBalances) external;
}{
"optimizer": {
"enabled": true,
"runs": 1000000
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"abi"
]
}
},
"libraries": {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_mothership","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"vote","type":"uint256"},{"indexed":false,"internalType":"bool","name":"isDefault","type":"bool"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"LeftoverGovernanceShareUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"vote","type":"uint256"},{"indexed":false,"internalType":"bool","name":"isDefault","type":"bool"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"LeftoverReferralShareUpdate","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"discardLeftoverShareVote","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"leftoverGovernanceShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"leftoverGovernanceShareVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"leftoverReferralShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"leftoverReferralShareVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"govShare","type":"uint256"}],"name":"leftoverShareVote","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"mothership","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"newBalance","type":"uint256"}],"name":"notifyStakeChanged","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"newBalances","type":"uint256[]"}],"name":"notifyStakesChanged","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"parameters","outputs":[{"internalType":"uint256","name":"govShare","type":"uint256"},{"internalType":"uint256","name":"refShare","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"virtualLeftoverGovernanceShare","outputs":[{"internalType":"uint104","name":"","type":"uint104"},{"internalType":"uint104","name":"","type":"uint104"},{"internalType":"uint48","name":"","type":"uint48"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"virtualLeftoverReferralShare","outputs":[{"internalType":"uint104","name":"","type":"uint104"},{"internalType":"uint104","name":"","type":"uint104"},{"internalType":"uint48","name":"","type":"uint48"}],"stateMutability":"view","type":"function"}]Contract Creation Code
60a060405234801561001057600080fd5b506040516115293803806115298339818101604052602081101561003357600080fd5b5051606081901b6001600160601b031916608052610063670b1a2bc2ec500000610094602090811b610a1217901c565b600280546001600160681b0392909216600160681b02600160681b600160d01b0319909216919091179055506100f2565b6000600160681b82106100ee576040805162461bcd60e51b815260206004820152601e60248201527f76616c756520646f6573206e6f742066697420696e2031303420626974730000604482015290519081900360640190fd5b5090565b60805160601c61141061011960003980610430528061057d528061081b52506114106000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806370a082311161008c57806394f4b1621161006657806394f4b16214610269578063ad33334814610271578063e44f53d314610333578063fa3f88ae14610366576100ea565b806370a08231146101f85780637bcf84c01461022b5780638903573014610248576100ea565b80632fce8dea116100c85780632fce8dea1461018457806331f866af1461018c5780634187b7d6146101bf5780634aded6ce146101f0576100ea565b806310d97a18146100ef57806318160ddd1461012f57806327a2743314610149575b600080fd5b6100f761036e565b604080516cffffffffffffffffffffffffff948516815292909316602083015265ffffffffffff168183015290519081900360600190f35b610137610412565b60408051918252519081900360200190f35b6101826004803603604081101561015f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610418565b005b6100f76104ca565b610137600480360360208110156101a257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661051d565b6101c761057b565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61013761059f565b6101376004803603602081101561020e57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610618565b6101826004803603602081101561024157600080fd5b5035610640565b610250610707565b6040805192835260208301919091528051918290030190f35b610137610793565b6101826004803603604081101561028757600080fd5b8101906020810181356401000000008111156102a257600080fd5b8201836020820111156102b457600080fd5b803590602001918460208302840111640100000000831117156102d657600080fd5b9193909290916020810190356401000000008111156102f457600080fd5b82018360208201111561030657600080fd5b8035906020019184602083028401116401000000008311171561032857600080fd5b509092509050610803565b6101376004803603602081101561034957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610973565b6101826109b8565b600254600090819081906103a39061039e90670de0b6b3a7640000906cffffffffffffffffffffffffff16610a94565b610a12565b6002546103dd9061039e90670de0b6b3a7640000906d010000000000000000000000000090046cffffffffffffffffffffffffff16610a94565b60025491959094507a01000000000000000000000000000000000000000000000000000090910465ffffffffffff1692509050565b60005490565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146104bc57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f416363657373207265737472696374656420746f206d6f746865727368697000604482015290519081900360640190fd5b6104c68282610b0b565b5050565b6002546cffffffffffffffffffffffffff808216926d01000000000000000000000000008304909116917a010000000000000000000000000000000000000000000000000000900465ffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260056020908152604080832081519283019091525481526105759061056690670b1a2bc2ec500000610bbe565b670de0b6b3a764000090610a94565b92915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b604080516060810182526002546cffffffffffffffffffffffffff80821683526d010000000000000000000000000082041660208301527a010000000000000000000000000000000000000000000000000000900465ffffffffffff16918101919091526000906106139061056690610bf8565b905090565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205490565b6000610694826040518060400160405280601c81526020017f476f7665726e616e636520736861726520697320746f6f206869676800000000815250670de0b6b3a7640000610c989092919063ffffffff16565b905060006106a133610618565b905060006106ad610412565b336000818152600560209081526040918290208251918201909252905481529192506106f4916106dc87610d49565b60029291908686670b1a2bc2ec500000610d68610dc8565b6107013384600085610de3565b50505050565b604080516060810182526002546cffffffffffffffffffffffffff80821683526d010000000000000000000000000082041660208301527a010000000000000000000000000000000000000000000000000000900465ffffffffffff1691810191909152600090819061077990610bf8565b915061078d670de0b6b3a764000083610a94565b90509091565b604080516060810182526002546cffffffffffffffffffffffffff80821683526d010000000000000000000000000082041660208301527a010000000000000000000000000000000000000000000000000000900465ffffffffffff169181019190915260009061061390610bf8565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146108a757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f416363657373207265737472696374656420746f206d6f746865727368697000604482015290519081900360640190fd5b82811461091557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f417272617973206c656e6774682073686f756c6420626520657175616c000000604482015290519081900360640190fd5b60005b8381101561096c5761096485858381811061092f57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1684848481811061095857fe5b90506020020135610b0b565b600101610918565b5050505050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600560209081526040808320815192830190915254815261057590670b1a2bc2ec500000610bbe565b60006109c333610618565b905060006109cf610412565b336000818152600560209081526040918290208251918201909252905481529192506109fd916106dc610e43565b6104c6336702c68af0bb140000600185610de3565b60006d01000000000000000000000000008210610a9057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f76616c756520646f6573206e6f742066697420696e2031303420626974730000604482015290519081900360640190fd5b5090565b600082821115610b0557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000610b178383610e5e565b905080821415610b2757506104c6565b610b2f611386565b5073ffffffffffffffffffffffffffffffffffffffff83166000908152600560209081526040808320815192830190915254815290610b7961056683670b1a2bc2ec500000610bbe565b90506000610b85610412565b9050610ba260028785878986670b1a2bc2ec500000610d68610ed3565b610bb68683610bb086610ef7565b88610de3565b505050505050565b815160009015610bf2575081517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01610575565b50919050565b600080610c2662015180610c21856040015165ffffffffffff1642610a9490919063ffffffff16565b610efc565b90506000610c376201518083610a94565b9050610c9062015180610c8a610c698588602001516cffffffffffffffffffffffffff16610f1490919063ffffffff16565b8751610c84906cffffffffffffffffffffffffff1686610f14565b90610f87565b90610ffb565b949350505050565b60008184841115610d41576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610d06578181015183820152602001610cee565b50505050905090810190601f168015610d335780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b610d51611386565b506040805160208101909152600182018152919050565b604080518481528315156020820152808201839052905173ffffffffffffffffffffffffffffffffffffffff8616917f2f2c318dd3a1bee02ade0f8f05d9c8f392f7988aa993cc619153bf068801d259919081900360600190a250505050565b610dd988888888888989898961107c565b5050505050505050565b604080518481528315156020820152808201839052905173ffffffffffffffffffffffffffffffffffffffff8616917fc81c61c2c3ce128e7b0962cbb5ffd5d975dcefcca05b54345474f37943743b7a919081900360600190a250505050565b610e4b611386565b5060408051602081019091526000815290565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600160205260409020548181146105755773ffffffffffffffffffffffffffffffffffffffff8316600090815260016020526040812083905554610eca908290610ec49085610f87565b90610a94565b60005592915050565b610dd98888888715610ee55789610eed565b610eed610e43565b898989898961107c565b511590565b6000818310610f0b5781610f0d565b825b9392505050565b600082610f2357506000610575565b82820282848281610f3057fe5b0414610f0d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806113ba6021913960400191505060405180910390fd5b600082820183811015610f0d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600080821161106b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b81838161107457fe5b049392505050565b600189015460028a01548190806110928b610ef7565b156110a8576110a1818a610a94565b90506110c9565b6110c66110bf6110b88d89610bbe565b8b90610f14565b8490610a94565b92505b6110d28a610ef7565b156110e8576110e18189610f87565b9050611109565b6111066110ff6110f88c89610bbe565b8a90610f14565b8490610f87565b92505b8383146111185760018d018390555b8181146111275760028d018190555b6000871561114c5761114788610c8a611140858b610f14565b8790610f87565b61114e565b865b9050611158611399565b50604080516060810182528f546cffffffffffffffffffffffffff80821683526d0100000000000000000000000000820416602083018190527a01000000000000000000000000000000000000000000000000000090910465ffffffffffff169282019290925290821461129b578e6111d361039e83610bf8565b6111dc84610a12565b6111e542611308565b835479ffffffffffffffffffffffffffffffffffffffffffffffffffff167a01000000000000000000000000000000000000000000000000000065ffffffffffff9290921691909102177fffffffffffff00000000000000000000000000ffffffffffffffffffffffffff166d01000000000000000000000000006cffffffffffffffffffffffffff92831602177fffffffffffffffffffffffffffffffffffffff000000000000000000000000001691161790555b506112a890508a8c61137f565b6112d85773ffffffffffffffffffffffffffffffffffffffff8c16600090815260038e01602052604090208a5190555b6112f98c6112e68c89610bbe565b6112ef8d610ef7565b8b8963ffffffff16565b50505050505050505050505050565b600066010000000000008210610a9057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f76616c756520646f6573206e6f742066697420696e2034382062697473000000604482015290519081900360640190fd5b5190511490565b6040518060200160405280600081525090565b60408051606081018252600080825260208201819052918101919091529056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212206161f442c3a95796cfd0294dae5874ccbe10de5941ed80840630bd3fd04b4bae64736f6c634300060c0033000000000000000000000000a0446d8804611944f1b527ecd37d7dcbe442caba
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c806370a082311161008c57806394f4b1621161006657806394f4b16214610269578063ad33334814610271578063e44f53d314610333578063fa3f88ae14610366576100ea565b806370a08231146101f85780637bcf84c01461022b5780638903573014610248576100ea565b80632fce8dea116100c85780632fce8dea1461018457806331f866af1461018c5780634187b7d6146101bf5780634aded6ce146101f0576100ea565b806310d97a18146100ef57806318160ddd1461012f57806327a2743314610149575b600080fd5b6100f761036e565b604080516cffffffffffffffffffffffffff948516815292909316602083015265ffffffffffff168183015290519081900360600190f35b610137610412565b60408051918252519081900360200190f35b6101826004803603604081101561015f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610418565b005b6100f76104ca565b610137600480360360208110156101a257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661051d565b6101c761057b565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61013761059f565b6101376004803603602081101561020e57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610618565b6101826004803603602081101561024157600080fd5b5035610640565b610250610707565b6040805192835260208301919091528051918290030190f35b610137610793565b6101826004803603604081101561028757600080fd5b8101906020810181356401000000008111156102a257600080fd5b8201836020820111156102b457600080fd5b803590602001918460208302840111640100000000831117156102d657600080fd5b9193909290916020810190356401000000008111156102f457600080fd5b82018360208201111561030657600080fd5b8035906020019184602083028401116401000000008311171561032857600080fd5b509092509050610803565b6101376004803603602081101561034957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610973565b6101826109b8565b600254600090819081906103a39061039e90670de0b6b3a7640000906cffffffffffffffffffffffffff16610a94565b610a12565b6002546103dd9061039e90670de0b6b3a7640000906d010000000000000000000000000090046cffffffffffffffffffffffffff16610a94565b60025491959094507a01000000000000000000000000000000000000000000000000000090910465ffffffffffff1692509050565b60005490565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000a0446d8804611944f1b527ecd37d7dcbe442caba16146104bc57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f416363657373207265737472696374656420746f206d6f746865727368697000604482015290519081900360640190fd5b6104c68282610b0b565b5050565b6002546cffffffffffffffffffffffffff808216926d01000000000000000000000000008304909116917a010000000000000000000000000000000000000000000000000000900465ffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260056020908152604080832081519283019091525481526105759061056690670b1a2bc2ec500000610bbe565b670de0b6b3a764000090610a94565b92915050565b7f000000000000000000000000a0446d8804611944f1b527ecd37d7dcbe442caba81565b604080516060810182526002546cffffffffffffffffffffffffff80821683526d010000000000000000000000000082041660208301527a010000000000000000000000000000000000000000000000000000900465ffffffffffff16918101919091526000906106139061056690610bf8565b905090565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205490565b6000610694826040518060400160405280601c81526020017f476f7665726e616e636520736861726520697320746f6f206869676800000000815250670de0b6b3a7640000610c989092919063ffffffff16565b905060006106a133610618565b905060006106ad610412565b336000818152600560209081526040918290208251918201909252905481529192506106f4916106dc87610d49565b60029291908686670b1a2bc2ec500000610d68610dc8565b6107013384600085610de3565b50505050565b604080516060810182526002546cffffffffffffffffffffffffff80821683526d010000000000000000000000000082041660208301527a010000000000000000000000000000000000000000000000000000900465ffffffffffff1691810191909152600090819061077990610bf8565b915061078d670de0b6b3a764000083610a94565b90509091565b604080516060810182526002546cffffffffffffffffffffffffff80821683526d010000000000000000000000000082041660208301527a010000000000000000000000000000000000000000000000000000900465ffffffffffff169181019190915260009061061390610bf8565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000a0446d8804611944f1b527ecd37d7dcbe442caba16146108a757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f416363657373207265737472696374656420746f206d6f746865727368697000604482015290519081900360640190fd5b82811461091557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f417272617973206c656e6774682073686f756c6420626520657175616c000000604482015290519081900360640190fd5b60005b8381101561096c5761096485858381811061092f57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1684848481811061095857fe5b90506020020135610b0b565b600101610918565b5050505050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600560209081526040808320815192830190915254815261057590670b1a2bc2ec500000610bbe565b60006109c333610618565b905060006109cf610412565b336000818152600560209081526040918290208251918201909252905481529192506109fd916106dc610e43565b6104c6336702c68af0bb140000600185610de3565b60006d01000000000000000000000000008210610a9057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f76616c756520646f6573206e6f742066697420696e2031303420626974730000604482015290519081900360640190fd5b5090565b600082821115610b0557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000610b178383610e5e565b905080821415610b2757506104c6565b610b2f611386565b5073ffffffffffffffffffffffffffffffffffffffff83166000908152600560209081526040808320815192830190915254815290610b7961056683670b1a2bc2ec500000610bbe565b90506000610b85610412565b9050610ba260028785878986670b1a2bc2ec500000610d68610ed3565b610bb68683610bb086610ef7565b88610de3565b505050505050565b815160009015610bf2575081517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01610575565b50919050565b600080610c2662015180610c21856040015165ffffffffffff1642610a9490919063ffffffff16565b610efc565b90506000610c376201518083610a94565b9050610c9062015180610c8a610c698588602001516cffffffffffffffffffffffffff16610f1490919063ffffffff16565b8751610c84906cffffffffffffffffffffffffff1686610f14565b90610f87565b90610ffb565b949350505050565b60008184841115610d41576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610d06578181015183820152602001610cee565b50505050905090810190601f168015610d335780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b610d51611386565b506040805160208101909152600182018152919050565b604080518481528315156020820152808201839052905173ffffffffffffffffffffffffffffffffffffffff8616917f2f2c318dd3a1bee02ade0f8f05d9c8f392f7988aa993cc619153bf068801d259919081900360600190a250505050565b610dd988888888888989898961107c565b5050505050505050565b604080518481528315156020820152808201839052905173ffffffffffffffffffffffffffffffffffffffff8616917fc81c61c2c3ce128e7b0962cbb5ffd5d975dcefcca05b54345474f37943743b7a919081900360600190a250505050565b610e4b611386565b5060408051602081019091526000815290565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600160205260409020548181146105755773ffffffffffffffffffffffffffffffffffffffff8316600090815260016020526040812083905554610eca908290610ec49085610f87565b90610a94565b60005592915050565b610dd98888888715610ee55789610eed565b610eed610e43565b898989898961107c565b511590565b6000818310610f0b5781610f0d565b825b9392505050565b600082610f2357506000610575565b82820282848281610f3057fe5b0414610f0d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806113ba6021913960400191505060405180910390fd5b600082820183811015610f0d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600080821161106b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b81838161107457fe5b049392505050565b600189015460028a01548190806110928b610ef7565b156110a8576110a1818a610a94565b90506110c9565b6110c66110bf6110b88d89610bbe565b8b90610f14565b8490610a94565b92505b6110d28a610ef7565b156110e8576110e18189610f87565b9050611109565b6111066110ff6110f88c89610bbe565b8a90610f14565b8490610f87565b92505b8383146111185760018d018390555b8181146111275760028d018190555b6000871561114c5761114788610c8a611140858b610f14565b8790610f87565b61114e565b865b9050611158611399565b50604080516060810182528f546cffffffffffffffffffffffffff80821683526d0100000000000000000000000000820416602083018190527a01000000000000000000000000000000000000000000000000000090910465ffffffffffff169282019290925290821461129b578e6111d361039e83610bf8565b6111dc84610a12565b6111e542611308565b835479ffffffffffffffffffffffffffffffffffffffffffffffffffff167a01000000000000000000000000000000000000000000000000000065ffffffffffff9290921691909102177fffffffffffff00000000000000000000000000ffffffffffffffffffffffffff166d01000000000000000000000000006cffffffffffffffffffffffffff92831602177fffffffffffffffffffffffffffffffffffffff000000000000000000000000001691161790555b506112a890508a8c61137f565b6112d85773ffffffffffffffffffffffffffffffffffffffff8c16600090815260038e01602052604090208a5190555b6112f98c6112e68c89610bbe565b6112ef8d610ef7565b8b8963ffffffff16565b50505050505050505050505050565b600066010000000000008210610a9057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f76616c756520646f6573206e6f742066697420696e2034382062697473000000604482015290519081900360640190fd5b5190511490565b6040518060200160405280600081525090565b60408051606081018252600080825260208201819052918101919091529056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212206161f442c3a95796cfd0294dae5874ccbe10de5941ed80840630bd3fd04b4bae64736f6c634300060c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000a0446d8804611944f1b527ecd37d7dcbe442caba
-----Decoded View---------------
Arg [0] : _mothership (address): 0xA0446D8804611944F1B527eCD37d7dcbE442caba
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000a0446d8804611944f1b527ecd37d7dcbe442caba
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.