Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 1,366 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Execute | 21742974 | 28 days ago | IN | 0 ETH | 0.00025164 | ||||
Queue | 21725972 | 30 days ago | IN | 0 ETH | 0.00130696 | ||||
Cast Refundable ... | 21723104 | 31 days ago | IN | 0 ETH | 0.00035241 | ||||
Cast Refundable ... | 21721372 | 31 days ago | IN | 0 ETH | 0.00025576 | ||||
Cast Refundable ... | 21720764 | 31 days ago | IN | 0 ETH | 0.00036823 | ||||
Cast Refundable ... | 21720474 | 31 days ago | IN | 0 ETH | 0.0003262 | ||||
Cast Refundable ... | 21718402 | 31 days ago | IN | 0 ETH | 0.00080234 | ||||
Cast Refundable ... | 21714373 | 32 days ago | IN | 0 ETH | 0.00113335 | ||||
Cast Refundable ... | 21713119 | 32 days ago | IN | 0 ETH | 0.00060621 | ||||
Cast Refundable ... | 21712845 | 32 days ago | IN | 0 ETH | 0.00054752 | ||||
Cast Refundable ... | 21712391 | 32 days ago | IN | 0 ETH | 0.00071355 | ||||
Cast Refundable ... | 21709208 | 33 days ago | IN | 0 ETH | 0.00044852 | ||||
Cast Refundable ... | 21708771 | 33 days ago | IN | 0 ETH | 0.0002856 | ||||
Cast Refundable ... | 21708590 | 33 days ago | IN | 0 ETH | 0.00035814 | ||||
Cast Refundable ... | 21707849 | 33 days ago | IN | 0 ETH | 0.0003022 | ||||
Cast Refundable ... | 21706643 | 33 days ago | IN | 0 ETH | 0.00024496 | ||||
Cast Refundable ... | 21706596 | 33 days ago | IN | 0 ETH | 0.00026251 | ||||
Cast Refundable ... | 21706357 | 33 days ago | IN | 0 ETH | 0.00030315 | ||||
Cast Refundable ... | 21704128 | 33 days ago | IN | 0 ETH | 0.00046196 | ||||
Cast Refundable ... | 21702052 | 34 days ago | IN | 0 ETH | 0.00064912 | ||||
Cast Refundable ... | 21701922 | 34 days ago | IN | 0 ETH | 0.00055007 | ||||
Cast Refundable ... | 21700914 | 34 days ago | IN | 0 ETH | 0.00044291 | ||||
Cast Refundable ... | 21699687 | 34 days ago | IN | 0 ETH | 0.00039791 | ||||
Cast Refundable ... | 21698643 | 34 days ago | IN | 0 ETH | 0.000388 | ||||
Cast Refundable ... | 21698168 | 34 days ago | IN | 0 ETH | 0.00045152 |
Advanced mode: Intended for advanced users or developers and will display all Internal Transactions including zero value transfers. Name tag integration is not available in advanced view.
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
||||
---|---|---|---|---|---|---|---|
21742974 | 28 days ago | 0 ETH | |||||
21742974 | 28 days ago | 0 ETH | |||||
21742974 | 28 days ago | 0 ETH | |||||
21725972 | 30 days ago | 0 ETH | |||||
21725972 | 30 days ago | 0 ETH | |||||
21725972 | 30 days ago | 0 ETH | |||||
21725972 | 30 days ago | 0 ETH | |||||
21723104 | 31 days ago | 0 ETH | |||||
21723104 | 31 days ago | 0 ETH | |||||
21721372 | 31 days ago | 0 ETH | |||||
21721372 | 31 days ago | 0 ETH | |||||
21720764 | 31 days ago | 0 ETH | |||||
21720764 | 31 days ago | 0 ETH | |||||
21720474 | 31 days ago | 0 ETH | |||||
21720474 | 31 days ago | 0 ETH | |||||
21718402 | 31 days ago | 0 ETH | |||||
21718402 | 31 days ago | 0 ETH | |||||
21714373 | 32 days ago | 0 ETH | |||||
21714373 | 32 days ago | 0 ETH | |||||
21713119 | 32 days ago | 0 ETH | |||||
21713119 | 32 days ago | 0 ETH | |||||
21712845 | 32 days ago | 0 ETH | |||||
21712845 | 32 days ago | 0 ETH | |||||
21712391 | 32 days ago | 0 ETH | |||||
21712391 | 32 days ago | 0 ETH |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
NounsDAOProxyV2
Compiler Version
v0.8.17+commit.8df45f5f
Optimization Enabled:
Yes with 10000 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: BSD-3-Clause /// @title The CNNouns DAO proxy contract for V2 /********************************* * ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ * * ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ * * ░░░░░░█████████░░█████████░░░ * * ░░░░░░██░░░████░░██░░░████░░░ * * ░░██████░░░████████░░░████░░░ * * ░░██░░██░░░████░░██░░░████░░░ * * ░░██░░██░░░████░░██░░░████░░░ * * ░░░░░░█████████░░█████████░░░ * * ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ * * ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ * *********************************/ // NounsDAOProxyV2.sol is a modified version of NounsDAOProxy.sol, tailored for the DAO's V2. // Its main purpose is to support people wishing to deploy V2 directly, without having to deploy V1 first and then upgrade. // LICENSE // NounsDAOProxy.sol is a modified version of Compound Lab's GovernorBravoDelegator.sol: // https://github.com/compound-finance/compound-protocol/blob/b9b14038612d846b83f8a009a82c38974ff2dcfe/contracts/Governance/GovernorBravoDelegator.sol // // GovernorBravoDelegator.sol source code Copyright 2020 Compound Labs, Inc. licensed under the BSD-3-Clause license. // With modifications by Nounders DAO. // With modifications by CNNouns DAO. // // Additional conditions of BSD-3-Clause can be found here: https://opensource.org/licenses/BSD-3-Clause // // // NounsDAOProxy.sol uses parts of Open Zeppelin's Proxy.sol: // https://github.com/OpenZeppelin/openzeppelin-contracts/blob/5c8746f56b4bed8cc9e0e044f5f69ab2f9428ce1/contracts/proxy/Proxy.sol // // Proxy.sol source code licensed under MIT License. // // MODIFICATIONS // The fallback() and receive() functions of Proxy.sol have been used to allow Solidity > 0.6.0 compatibility pragma solidity ^0.8.6; import './NounsDAOInterfaces.sol'; contract NounsDAOProxyV2 is NounsDAOStorageV2, NounsDAOEvents { constructor( address timelock_, address nouns_, address vetoer_, address admin_, address implementation_, uint256 votingPeriod_, uint256 votingDelay_, uint256 proposalThreshold_, DynamicQuorumParams memory dynamicQuorumParams_ ) { // Admin set to msg.sender for initialization admin = msg.sender; delegateTo( implementation_, abi.encodeWithSignature( 'initialize(address,address,address,uint256,uint256,uint256,(uint16,uint16,uint32))', timelock_, nouns_, vetoer_, votingPeriod_, votingDelay_, proposalThreshold_, dynamicQuorumParams_ ) ); _setImplementation(implementation_); admin = admin_; } /** * @notice Called by the admin to update the implementation of the delegator * @param implementation_ The address of the new implementation for delegation */ function _setImplementation(address implementation_) public { require(msg.sender == admin, 'NounsDAOProxy::_setImplementation: admin only'); require(implementation_ != address(0), 'NounsDAOProxy::_setImplementation: invalid implementation address'); address oldImplementation = implementation; implementation = implementation_; emit NewImplementation(oldImplementation, implementation); } /** * @notice Internal method to delegate execution to another contract * @dev It returns to the external caller whatever the implementation returns or forwards reverts * @param callee The contract to delegatecall * @param data The raw data to delegatecall */ function delegateTo(address callee, bytes memory data) internal { (bool success, bytes memory returnData) = callee.delegatecall(data); assembly { if eq(success, 0) { revert(add(returnData, 0x20), returndatasize()) } } } /** * @dev Delegates execution to an implementation contract. * It returns to the external caller whatever the implementation returns * or forwards reverts. */ function _fallback() internal { // delegate all other functions to current implementation (bool success, ) = implementation.delegatecall(msg.data); assembly { let free_mem_ptr := mload(0x40) returndatacopy(free_mem_ptr, 0, returndatasize()) switch success case 0 { revert(free_mem_ptr, returndatasize()) } default { return(free_mem_ptr, returndatasize()) } } } /** * @dev Fallback function that delegates calls to the `implementation`. Will run if no other * function in the contract matches the call data. */ fallback() external payable { _fallback(); } /** * @dev Fallback function that delegates calls to `implementation`. Will run if call data * is empty. */ receive() external payable { _fallback(); } }
// SPDX-License-Identifier: BSD-3-Clause /// @title CNNouns DAO Logic interfaces and events /********************************* * ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ * * ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ * * ░░░░░░█████████░░█████████░░░ * * ░░░░░░██░░░████░░██░░░████░░░ * * ░░██████░░░████████░░░████░░░ * * ░░██░░██░░░████░░██░░░████░░░ * * ░░██░░██░░░████░░██░░░████░░░ * * ░░░░░░█████████░░█████████░░░ * * ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ * * ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ * *********************************/ // LICENSE // NounsDAOInterfaces.sol is a modified version of Compound Lab's GovernorBravoInterfaces.sol: // https://github.com/compound-finance/compound-protocol/blob/b9b14038612d846b83f8a009a82c38974ff2dcfe/contracts/Governance/GovernorBravoInterfaces.sol // // GovernorBravoInterfaces.sol source code Copyright 2020 Compound Labs, Inc. licensed under the BSD-3-Clause license. // With modifications by Nounders DAO. // With modifications by CNNouns DAO. // // Additional conditions of BSD-3-Clause can be found here: https://opensource.org/licenses/BSD-3-Clause // // MODIFICATIONS // NounsDAOEvents, NounsDAOProxyStorage, NounsDAOStorageV1 add support for changes made by Nouns DAO to GovernorBravo.sol // See NounsDAOLogicV1.sol for more details. // NounsDAOStorageV1Adjusted and NounsDAOStorageV2 add support for a dynamic vote quorum. // See NounsDAOLogicV2.sol for more details. // NounsDAOEvents and NounsDAOStorageV1Adjusted add support for fixed proposal threshold. // See NounsDAOLogicV2.sol for more details. pragma solidity ^0.8.6; contract NounsDAOEvents { /// @notice An event emitted when a new proposal is created event ProposalCreated( uint256 id, address proposer, address[] targets, uint256[] values, string[] signatures, bytes[] calldatas, uint256 startBlock, uint256 endBlock, string description ); /// @notice An event emitted when a new proposal is created, which includes additional information event ProposalCreatedWithRequirements( uint256 id, address proposer, address[] targets, uint256[] values, string[] signatures, bytes[] calldatas, uint256 startBlock, uint256 endBlock, uint256 proposalThreshold, uint256 quorumVotes, string description ); /// @notice An event emitted when a vote has been cast on a proposal /// @param voter The address which casted a vote /// @param proposalId The proposal id which was voted on /// @param support Support value for the vote. 0=against, 1=for, 2=abstain /// @param votes Number of votes which were cast by the voter /// @param reason The reason given for the vote by the voter event VoteCast(address indexed voter, uint256 proposalId, uint8 support, uint256 votes, string reason); /// @notice An event emitted when a proposal has been canceled event ProposalCanceled(uint256 id); /// @notice An event emitted when a proposal has been queued in the NounsDAOExecutor event ProposalQueued(uint256 id, uint256 eta); /// @notice An event emitted when a proposal has been executed in the NounsDAOExecutor event ProposalExecuted(uint256 id); /// @notice An event emitted when a proposal has been vetoed by vetoAddress event ProposalVetoed(uint256 id); /// @notice An event emitted when the voting delay is set event VotingDelaySet(uint256 oldVotingDelay, uint256 newVotingDelay); /// @notice An event emitted when the voting period is set event VotingPeriodSet(uint256 oldVotingPeriod, uint256 newVotingPeriod); /// @notice Emitted when implementation is changed event NewImplementation(address oldImplementation, address newImplementation); /// @notice Emitted when proposal threshold is set event ProposalThresholdSet(uint256 oldProposalThreshold, uint256 newProposalThreshold); /// @notice Emitted when quorum votes basis points is set event QuorumVotesBPSSet(uint256 oldQuorumVotesBPS, uint256 newQuorumVotesBPS); /// @notice Emitted when pendingAdmin is changed event NewPendingAdmin(address oldPendingAdmin, address newPendingAdmin); /// @notice Emitted when pendingAdmin is accepted, which means admin is updated event NewAdmin(address oldAdmin, address newAdmin); /// @notice Emitted when vetoer is changed event NewVetoer(address oldVetoer, address newVetoer); } contract NounsDAOEventsV2 is NounsDAOEvents { /// @notice Emitted when minQuorumVotesBPS is set event MinQuorumVotesBPSSet(uint16 oldMinQuorumVotesBPS, uint16 newMinQuorumVotesBPS); /// @notice Emitted when maxQuorumVotesBPS is set event MaxQuorumVotesBPSSet(uint16 oldMaxQuorumVotesBPS, uint16 newMaxQuorumVotesBPS); /// @notice Emitted when quorumCoefficient is set event QuorumCoefficientSet(uint32 oldQuorumCoefficient, uint32 newQuorumCoefficient); /// @notice Emitted when a voter cast a vote requesting a gas refund. event RefundableVote(address indexed voter, uint256 refundAmount, bool refundSent); /// @notice Emitted when admin withdraws the DAO's balance. event Withdraw(uint256 amount, bool sent); /// @notice Emitted when pendingVetoer is changed event NewPendingVetoer(address oldPendingVetoer, address newPendingVetoer); } contract NounsDAOProxyStorage { /// @notice Administrator for this contract address public admin; /// @notice Pending administrator for this contract address public pendingAdmin; /// @notice Active brains of Governor address public implementation; } /** * @title Storage for Governor Bravo Delegate * @notice For future upgrades, do not change NounsDAOStorageV1. Create a new * contract which implements NounsDAOStorageV1 and following the naming convention * NounsDAOStorageVX. */ contract NounsDAOStorageV1 is NounsDAOProxyStorage { /// @notice Vetoer who has the ability to veto any proposal address public vetoer; /// @notice The delay before voting on a proposal may take place, once proposed, in blocks uint256 public votingDelay; /// @notice The duration of voting on a proposal, in blocks uint256 public votingPeriod; /// @notice The number of votes required in order for a voter to become a proposer *DIFFERS from GovernerBravo and NounsDAO: When calling propose(), getPriorVotes() must be **greater equal** than proposalThreshold in the current implementation, but in the original implementation, getPriorVotes() must be **greater than** proposalThreshold uint256 public proposalThreshold; /// @notice The basis point number of votes in support of a proposal required in order for a quorum to be reached and for a vote to succeed. *DIFFERS from GovernerBravo uint256 public quorumVotesBPS; /// @notice The total number of proposals uint256 public proposalCount; /// @notice The address of the Nouns DAO Executor NounsDAOExecutor INounsDAOExecutor public timelock; /// @notice The address of the Nouns tokens NounsTokenLike public nouns; /// @notice The official record of all proposals ever proposed mapping(uint256 => Proposal) public proposals; /// @notice The latest proposal for each proposer mapping(address => uint256) public latestProposalIds; struct Proposal { /// @notice Unique id for looking up a proposal uint256 id; /// @notice Creator of the proposal address proposer; /// @notice The number of votes needed to create a proposal at the time of proposal creation. *DIFFERS from GovernerBravo uint256 proposalThreshold; /// @notice The number of votes in support of a proposal required in order for a quorum to be reached and for a vote to succeed at the time of proposal creation. *DIFFERS from GovernerBravo uint256 quorumVotes; /// @notice The timestamp that the proposal will be available for execution, set once the vote succeeds uint256 eta; /// @notice the ordered list of target addresses for calls to be made address[] targets; /// @notice The ordered list of values (i.e. msg.value) to be passed to the calls to be made uint256[] values; /// @notice The ordered list of function signatures to be called string[] signatures; /// @notice The ordered list of calldata to be passed to each call bytes[] calldatas; /// @notice The block at which voting begins: holders must delegate their votes prior to this block uint256 startBlock; /// @notice The block at which voting ends: votes must be cast prior to this block uint256 endBlock; /// @notice Current number of votes in favor of this proposal uint256 forVotes; /// @notice Current number of votes in opposition to this proposal uint256 againstVotes; /// @notice Current number of votes for abstaining for this proposal uint256 abstainVotes; /// @notice Flag marking whether the proposal has been canceled bool canceled; /// @notice Flag marking whether the proposal has been vetoed bool vetoed; /// @notice Flag marking whether the proposal has been executed bool executed; /// @notice Receipts of ballots for the entire set of voters mapping(address => Receipt) receipts; } /// @notice Ballot receipt record for a voter struct Receipt { /// @notice Whether or not a vote has been cast bool hasVoted; /// @notice Whether or not the voter supports the proposal or abstains uint8 support; /// @notice The number of votes the voter had, which were cast uint96 votes; } /// @notice Possible states that a proposal may be in enum ProposalState { Pending, Active, Canceled, Defeated, Succeeded, Queued, Expired, Executed, Vetoed } } /** * @title Extra fields added to the `Proposal` struct from NounsDAOStorageV1 * @notice The following fields were added to the `Proposal` struct: * - `Proposal.totalSupply` * - `Proposal.creationBlock` */ contract NounsDAOStorageV1Adjusted is NounsDAOProxyStorage { /// @notice Vetoer who has the ability to veto any proposal address public vetoer; /// @notice The delay before voting on a proposal may take place, once proposed, in blocks uint256 public votingDelay; /// @notice The duration of voting on a proposal, in blocks uint256 public votingPeriod; /// @notice The basis point number of votes required in order for a voter to become a proposer. *DIFFERS from GovernerBravo uint256 public proposalThreshold; /// @notice The basis point number of votes in support of a proposal required in order for a quorum to be reached and for a vote to succeed. *DIFFERS from GovernerBravo uint256 public quorumVotesBPS; /// @notice The total number of proposals uint256 public proposalCount; /// @notice The address of the Nouns DAO Executor NounsDAOExecutor INounsDAOExecutor public timelock; /// @notice The address of the Nouns tokens NounsTokenLike public nouns; /// @notice The official record of all proposals ever proposed mapping(uint256 => Proposal) internal _proposals; /// @notice The latest proposal for each proposer mapping(address => uint256) public latestProposalIds; struct Proposal { /// @notice Unique id for looking up a proposal uint256 id; /// @notice Creator of the proposal address proposer; /// @notice The number of votes needed to create a proposal at the time of proposal creation. *DIFFERS from GovernerBravo uint256 proposalThreshold; /// @notice The number of votes in support of a proposal required in order for a quorum to be reached and for a vote to succeed at the time of proposal creation. *DIFFERS from GovernerBravo uint256 quorumVotes; /// @notice The timestamp that the proposal will be available for execution, set once the vote succeeds uint256 eta; /// @notice the ordered list of target addresses for calls to be made address[] targets; /// @notice The ordered list of values (i.e. msg.value) to be passed to the calls to be made uint256[] values; /// @notice The ordered list of function signatures to be called string[] signatures; /// @notice The ordered list of calldata to be passed to each call bytes[] calldatas; /// @notice The block at which voting begins: holders must delegate their votes prior to this block uint256 startBlock; /// @notice The block at which voting ends: votes must be cast prior to this block uint256 endBlock; /// @notice Current number of votes in favor of this proposal uint256 forVotes; /// @notice Current number of votes in opposition to this proposal uint256 againstVotes; /// @notice Current number of votes for abstaining for this proposal uint256 abstainVotes; /// @notice Flag marking whether the proposal has been canceled bool canceled; /// @notice Flag marking whether the proposal has been vetoed bool vetoed; /// @notice Flag marking whether the proposal has been executed bool executed; /// @notice Receipts of ballots for the entire set of voters mapping(address => Receipt) receipts; /// @notice The total supply at the time of proposal creation uint256 totalSupply; /// @notice The block at which this proposal was created uint256 creationBlock; } /// @notice Ballot receipt record for a voter struct Receipt { /// @notice Whether or not a vote has been cast bool hasVoted; /// @notice Whether or not the voter supports the proposal or abstains uint8 support; /// @notice The number of votes the voter had, which were cast uint96 votes; } /// @notice Possible states that a proposal may be in enum ProposalState { Pending, Active, Canceled, Defeated, Succeeded, Queued, Expired, Executed, Vetoed } } /** * @title Storage for Governor Bravo Delegate * @notice For future upgrades, do not change NounsDAOStorageV2. Create a new * contract which implements NounsDAOStorageV2 and following the naming convention * NounsDAOStorageVX. */ contract NounsDAOStorageV2 is NounsDAOStorageV1Adjusted { DynamicQuorumParamsCheckpoint[] public quorumParamsCheckpoints; /// @notice Pending new vetoer address public pendingVetoer; struct DynamicQuorumParams { /// @notice The minimum basis point number of votes in support of a proposal required in order for a quorum to be reached and for a vote to succeed. uint16 minQuorumVotesBPS; /// @notice The maximum basis point number of votes in support of a proposal required in order for a quorum to be reached and for a vote to succeed. uint16 maxQuorumVotesBPS; /// @notice The dynamic quorum coefficient /// @dev Assumed to be fixed point integer with 6 decimals, i.e 0.2 is represented as 0.2 * 1e6 = 200000 uint32 quorumCoefficient; } /// @notice A checkpoint for storing dynamic quorum params from a given block struct DynamicQuorumParamsCheckpoint { /// @notice The block at which the new values were set uint32 fromBlock; /// @notice The parameter values of this checkpoint DynamicQuorumParams params; } struct ProposalCondensed { /// @notice Unique id for looking up a proposal uint256 id; /// @notice Creator of the proposal address proposer; /// @notice The number of votes needed to create a proposal at the time of proposal creation. *DIFFERS from GovernerBravo uint256 proposalThreshold; /// @notice The minimum number of votes in support of a proposal required in order for a quorum to be reached and for a vote to succeed at the time of proposal creation. *DIFFERS from GovernerBravo uint256 quorumVotes; /// @notice The timestamp that the proposal will be available for execution, set once the vote succeeds uint256 eta; /// @notice The block at which voting begins: holders must delegate their votes prior to this block uint256 startBlock; /// @notice The block at which voting ends: votes must be cast prior to this block uint256 endBlock; /// @notice Current number of votes in favor of this proposal uint256 forVotes; /// @notice Current number of votes in opposition to this proposal uint256 againstVotes; /// @notice Current number of votes for abstaining for this proposal uint256 abstainVotes; /// @notice Flag marking whether the proposal has been canceled bool canceled; /// @notice Flag marking whether the proposal has been vetoed bool vetoed; /// @notice Flag marking whether the proposal has been executed bool executed; /// @notice The total supply at the time of proposal creation uint256 totalSupply; /// @notice The block at which this proposal was created uint256 creationBlock; } } interface INounsDAOExecutor { function delay() external view returns (uint256); function GRACE_PERIOD() external view returns (uint256); function acceptAdmin() external; function queuedTransactions(bytes32 hash) external view returns (bool); function queueTransaction( address target, uint256 value, string calldata signature, bytes calldata data, uint256 eta ) external returns (bytes32); function cancelTransaction( address target, uint256 value, string calldata signature, bytes calldata data, uint256 eta ) external; function executeTransaction( address target, uint256 value, string calldata signature, bytes calldata data, uint256 eta ) external payable returns (bytes memory); } interface NounsTokenLike { function getPriorVotes(address account, uint256 blockNumber) external view returns (uint96); function totalSupply() external view returns (uint256); }
{ "optimizer": { "enabled": true, "runs": 10000 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"timelock_","type":"address"},{"internalType":"address","name":"nouns_","type":"address"},{"internalType":"address","name":"vetoer_","type":"address"},{"internalType":"address","name":"admin_","type":"address"},{"internalType":"address","name":"implementation_","type":"address"},{"internalType":"uint256","name":"votingPeriod_","type":"uint256"},{"internalType":"uint256","name":"votingDelay_","type":"uint256"},{"internalType":"uint256","name":"proposalThreshold_","type":"uint256"},{"components":[{"internalType":"uint16","name":"minQuorumVotesBPS","type":"uint16"},{"internalType":"uint16","name":"maxQuorumVotesBPS","type":"uint16"},{"internalType":"uint32","name":"quorumCoefficient","type":"uint32"}],"internalType":"struct NounsDAOStorageV2.DynamicQuorumParams","name":"dynamicQuorumParams_","type":"tuple"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"NewAdmin","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldImplementation","type":"address"},{"indexed":false,"internalType":"address","name":"newImplementation","type":"address"}],"name":"NewImplementation","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldPendingAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newPendingAdmin","type":"address"}],"name":"NewPendingAdmin","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldVetoer","type":"address"},{"indexed":false,"internalType":"address","name":"newVetoer","type":"address"}],"name":"NewVetoer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"}],"name":"ProposalCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"address[]","name":"targets","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"},{"indexed":false,"internalType":"string[]","name":"signatures","type":"string[]"},{"indexed":false,"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"indexed":false,"internalType":"uint256","name":"startBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endBlock","type":"uint256"},{"indexed":false,"internalType":"string","name":"description","type":"string"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"address[]","name":"targets","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"},{"indexed":false,"internalType":"string[]","name":"signatures","type":"string[]"},{"indexed":false,"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"indexed":false,"internalType":"uint256","name":"startBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"proposalThreshold","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"quorumVotes","type":"uint256"},{"indexed":false,"internalType":"string","name":"description","type":"string"}],"name":"ProposalCreatedWithRequirements","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"eta","type":"uint256"}],"name":"ProposalQueued","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldProposalThreshold","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newProposalThreshold","type":"uint256"}],"name":"ProposalThresholdSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"}],"name":"ProposalVetoed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldQuorumVotesBPS","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newQuorumVotesBPS","type":"uint256"}],"name":"QuorumVotesBPSSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"votes","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"VoteCast","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldVotingDelay","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newVotingDelay","type":"uint256"}],"name":"VotingDelaySet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldVotingPeriod","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newVotingPeriod","type":"uint256"}],"name":"VotingPeriodSet","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"address","name":"implementation_","type":"address"}],"name":"_setImplementation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"latestProposalIds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nouns","outputs":[{"internalType":"contract NounsTokenLike","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingVetoer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposalCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposalThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"quorumParamsCheckpoints","outputs":[{"internalType":"uint32","name":"fromBlock","type":"uint32"},{"components":[{"internalType":"uint16","name":"minQuorumVotesBPS","type":"uint16"},{"internalType":"uint16","name":"maxQuorumVotesBPS","type":"uint16"},{"internalType":"uint32","name":"quorumCoefficient","type":"uint32"}],"internalType":"struct NounsDAOStorageV2.DynamicQuorumParams","name":"params","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"quorumVotesBPS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"timelock","outputs":[{"internalType":"contract INounsDAOExecutor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vetoer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040523480156200001157600080fd5b5060405162000b9938038062000b99833981016040819052620000349162000306565b600080546001600160a01b03191633179055604080516001600160a01b038b811660248301528a81166044830152891660648201526084810186905260a4810185905260c48101849052825161ffff90811660e48301526020840151166101048201529082015163ffffffff16610124820152620000e69086906101440160408051601f198184030181529190526020810180516001600160e01b0390811663068c1fb360e11b179091526200012116565b620000f18562000199565b5050600080546001600160a01b0319166001600160a01b0395909516949094179093555062000458945050505050565b600080836001600160a01b0316836040516200013e919062000427565b600060405180830381855af49150503d80600081146200017b576040519150601f19603f3d011682016040523d82523d6000602084013e62000180565b606091505b5090925090508162000193573d60208201fd5b50505050565b6000546001600160a01b03163314620001fe5760405162461bcd60e51b815260206004820152602d602482015260008051602062000b7983398151915260448201526c6e3a2061646d696e206f6e6c7960981b60648201526084015b60405180910390fd5b6001600160a01b038116620002755760405162461bcd60e51b8152602060048201526041602482015260008051602062000b7983398151915260448201527f6e3a20696e76616c696420696d706c656d656e746174696f6e206164647265736064820152607360f81b608482015260a401620001f5565b600280546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527fd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a910160405180910390a15050565b80516001600160a01b0381168114620002ee57600080fd5b919050565b805161ffff81168114620002ee57600080fd5b6000806000806000806000806000898b036101608112156200032757600080fd5b620003328b620002d6565b99506200034260208c01620002d6565b98506200035260408c01620002d6565b97506200036260608c01620002d6565b96506200037260808c01620002d6565b955060a08b0151945060c08b0151935060e08b01519250606060ff19820112156200039c57600080fd5b50604051606081016001600160401b0381118282101715620003ce57634e487b7160e01b600052604160045260246000fd5b604052620003e06101008c01620002f3565b8152620003f16101208c01620002f3565b60208201526101408b015163ffffffff811681146200040f57600080fd5b80604083015250809150509295985092959850929598565b6000825160005b818110156200044a57602081860181015185830152016200042e565b506000920191825250919050565b61071180620004686000396000f3fe6080604052600436106100ec5760003560e01c8063a67d06351161008a578063d33219b411610059578063d33219b4146102ee578063d8bff4401461031b578063da35c66414610348578063f851a4401461035e576100fb565b8063a67d063514610231578063abb308b21461025e578063b58131b0146102b8578063bb913f41146102ce576100fb565b80632de45f18116100c65780632de45f18146101ab5780633932abb1146101d85780635c60da1b146101ee57806383cce0e11461021b576100fb565b806302a251a31461010357806317977c611461012c5780632678224714610159576100fb565b366100fb576100f961038b565b005b6100f961038b565b34801561010f57600080fd5b5061011960055481565b6040519081526020015b60405180910390f35b34801561013857600080fd5b50610119610147366004610675565b600c6020526000908152604090205481565b34801561016557600080fd5b506001546101869073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610123565b3480156101b757600080fd5b50600a546101869073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101e457600080fd5b5061011960045481565b3480156101fa57600080fd5b506002546101869073ffffffffffffffffffffffffffffffffffffffff1681565b34801561022757600080fd5b5061011960075481565b34801561023d57600080fd5b50600e546101869073ffffffffffffffffffffffffffffffffffffffff1681565b34801561026a57600080fd5b5061027e6102793660046106b2565b610413565b6040805163ffffffff9384168152825161ffff90811660208084019190915284015116818301529101519091166060820152608001610123565b3480156102c457600080fd5b5061011960065481565b3480156102da57600080fd5b506100f96102e9366004610675565b61047a565b3480156102fa57600080fd5b506009546101869073ffffffffffffffffffffffffffffffffffffffff1681565b34801561032757600080fd5b506003546101869073ffffffffffffffffffffffffffffffffffffffff1681565b34801561035457600080fd5b5061011960085481565b34801561036a57600080fd5b506000546101869073ffffffffffffffffffffffffffffffffffffffff1681565b60025460405160009173ffffffffffffffffffffffffffffffffffffffff16906103b890839036906106cb565b600060405180830381855af49150503d80600081146103f3576040519150601f19603f3d011682016040523d82523d6000602084013e6103f8565b606091505b505090506040513d6000823e81801561040f573d82f35b3d82fd5b600d818154811061042357600080fd5b60009182526020918290206002919091020180546040805160608101825260019093015461ffff8082168552620100008204169484019490945263ffffffff64010000000090940484169083015291909116915082565b60005473ffffffffffffffffffffffffffffffffffffffff163314610526576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f4e6f756e7344414f50726f78793a3a5f736574496d706c656d656e746174696f60448201527f6e3a2061646d696e206f6e6c790000000000000000000000000000000000000060648201526084015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604160248201527f4e6f756e7344414f50726f78793a3a5f736574496d706c656d656e746174696f60448201527f6e3a20696e76616c696420696d706c656d656e746174696f6e2061646472657360648201527f7300000000000000000000000000000000000000000000000000000000000000608482015260a40161051d565b6002805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a910160405180910390a15050565b60006020828403121561068757600080fd5b813573ffffffffffffffffffffffffffffffffffffffff811681146106ab57600080fd5b9392505050565b6000602082840312156106c457600080fd5b5035919050565b818382376000910190815291905056fea2646970667358221220e59af95e9f672ebe32a132d7b0d95ce03fc976622bfca73ab24d6fe8708328c864736f6c634300081100334e6f756e7344414f50726f78793a3a5f736574496d706c656d656e746174696f00000000000000000000000052c5dcf49f10c827e070cee4adf1d006942eaab6000000000000000000000000ac3aaff5576cd40343651f1a32dd160df3b3653700000000000000000000000078ef2858bf84bbb005d62e7266853c3c82c3a1ab00000000000000000000000052c5dcf49f10c827e070cee4adf1d006942eaab6000000000000000000000000fad73997b009302638b33bde9629560ef010435e00000000000000000000000000000000000000000000000000000000000067d90000000000000000000000000000000000000000000000000000000000004de2000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000003e800000000000000000000000000000000000000000000000000000000000005dc00000000000000000000000000000000000000000000000000000000000f4240
Deployed Bytecode
0x6080604052600436106100ec5760003560e01c8063a67d06351161008a578063d33219b411610059578063d33219b4146102ee578063d8bff4401461031b578063da35c66414610348578063f851a4401461035e576100fb565b8063a67d063514610231578063abb308b21461025e578063b58131b0146102b8578063bb913f41146102ce576100fb565b80632de45f18116100c65780632de45f18146101ab5780633932abb1146101d85780635c60da1b146101ee57806383cce0e11461021b576100fb565b806302a251a31461010357806317977c611461012c5780632678224714610159576100fb565b366100fb576100f961038b565b005b6100f961038b565b34801561010f57600080fd5b5061011960055481565b6040519081526020015b60405180910390f35b34801561013857600080fd5b50610119610147366004610675565b600c6020526000908152604090205481565b34801561016557600080fd5b506001546101869073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610123565b3480156101b757600080fd5b50600a546101869073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101e457600080fd5b5061011960045481565b3480156101fa57600080fd5b506002546101869073ffffffffffffffffffffffffffffffffffffffff1681565b34801561022757600080fd5b5061011960075481565b34801561023d57600080fd5b50600e546101869073ffffffffffffffffffffffffffffffffffffffff1681565b34801561026a57600080fd5b5061027e6102793660046106b2565b610413565b6040805163ffffffff9384168152825161ffff90811660208084019190915284015116818301529101519091166060820152608001610123565b3480156102c457600080fd5b5061011960065481565b3480156102da57600080fd5b506100f96102e9366004610675565b61047a565b3480156102fa57600080fd5b506009546101869073ffffffffffffffffffffffffffffffffffffffff1681565b34801561032757600080fd5b506003546101869073ffffffffffffffffffffffffffffffffffffffff1681565b34801561035457600080fd5b5061011960085481565b34801561036a57600080fd5b506000546101869073ffffffffffffffffffffffffffffffffffffffff1681565b60025460405160009173ffffffffffffffffffffffffffffffffffffffff16906103b890839036906106cb565b600060405180830381855af49150503d80600081146103f3576040519150601f19603f3d011682016040523d82523d6000602084013e6103f8565b606091505b505090506040513d6000823e81801561040f573d82f35b3d82fd5b600d818154811061042357600080fd5b60009182526020918290206002919091020180546040805160608101825260019093015461ffff8082168552620100008204169484019490945263ffffffff64010000000090940484169083015291909116915082565b60005473ffffffffffffffffffffffffffffffffffffffff163314610526576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f4e6f756e7344414f50726f78793a3a5f736574496d706c656d656e746174696f60448201527f6e3a2061646d696e206f6e6c790000000000000000000000000000000000000060648201526084015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604160248201527f4e6f756e7344414f50726f78793a3a5f736574496d706c656d656e746174696f60448201527f6e3a20696e76616c696420696d706c656d656e746174696f6e2061646472657360648201527f7300000000000000000000000000000000000000000000000000000000000000608482015260a40161051d565b6002805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a910160405180910390a15050565b60006020828403121561068757600080fd5b813573ffffffffffffffffffffffffffffffffffffffff811681146106ab57600080fd5b9392505050565b6000602082840312156106c457600080fd5b5035919050565b818382376000910190815291905056fea2646970667358221220e59af95e9f672ebe32a132d7b0d95ce03fc976622bfca73ab24d6fe8708328c864736f6c63430008110033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000052c5dcf49f10c827e070cee4adf1d006942eaab6000000000000000000000000ac3aaff5576cd40343651f1a32dd160df3b3653700000000000000000000000078ef2858bf84bbb005d62e7266853c3c82c3a1ab00000000000000000000000052c5dcf49f10c827e070cee4adf1d006942eaab6000000000000000000000000fad73997b009302638b33bde9629560ef010435e00000000000000000000000000000000000000000000000000000000000067d90000000000000000000000000000000000000000000000000000000000004de2000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000003e800000000000000000000000000000000000000000000000000000000000005dc00000000000000000000000000000000000000000000000000000000000f4240
-----Decoded View---------------
Arg [0] : timelock_ (address): 0x52C5DcF49f10C827E070cee4aDf1D006942eAaB6
Arg [1] : nouns_ (address): 0xAc3aaFF5576CD40343651f1a32DD160Df3b36537
Arg [2] : vetoer_ (address): 0x78EF2858bF84bBb005D62e7266853C3C82c3A1ab
Arg [3] : admin_ (address): 0x52C5DcF49f10C827E070cee4aDf1D006942eAaB6
Arg [4] : implementation_ (address): 0xfAD73997B009302638b33BDE9629560Ef010435E
Arg [5] : votingPeriod_ (uint256): 26585
Arg [6] : votingDelay_ (uint256): 19938
Arg [7] : proposalThreshold_ (uint256): 1
Arg [8] : dynamicQuorumParams_ (tuple): System.Collections.Generic.List`1[Nethereum.ABI.FunctionEncoding.ParameterOutput]
-----Encoded View---------------
11 Constructor Arguments found :
Arg [0] : 00000000000000000000000052c5dcf49f10c827e070cee4adf1d006942eaab6
Arg [1] : 000000000000000000000000ac3aaff5576cd40343651f1a32dd160df3b36537
Arg [2] : 00000000000000000000000078ef2858bf84bbb005d62e7266853c3c82c3a1ab
Arg [3] : 00000000000000000000000052c5dcf49f10c827e070cee4adf1d006942eaab6
Arg [4] : 000000000000000000000000fad73997b009302638b33bde9629560ef010435e
Arg [5] : 00000000000000000000000000000000000000000000000000000000000067d9
Arg [6] : 0000000000000000000000000000000000000000000000000000000000004de2
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [8] : 00000000000000000000000000000000000000000000000000000000000003e8
Arg [9] : 00000000000000000000000000000000000000000000000000000000000005dc
Arg [10] : 00000000000000000000000000000000000000000000000000000000000f4240
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 31 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.