Address Contract Partially Verified
Address
0x5A6eBeB61A80B2a2a5e0B4D893D731358d888583
Balance
0 ETH
Nonce
1
Code Size
7108 bytes
Creator
0x2Cb037BD...8172 at tx 0x6a3b4b47...68f61b
Indexed Transactions
0
Contract Bytecode
7108 bytes
0x6080604052600436106100e85760003560e01c806370a082311161008a578063bc3f931f11610059578063bc3f931f146105e9578063c9d27afe1461065a578063d11d0d58146106a1578063da35c664146106cc576100e8565b806370a082311461041257806393ba3f1514610477578063b03401231461057d578063b58131b0146105be576100e8565b80633ccfd60b116100c65780633ccfd60b146101d45780633e4f49e6146101eb57806344c028fe146102455780634e27e916146103ad576100e8565b8063013cf08b146100ed57806302a251a31461017e57806324bc1a64146101a9575b600080fd5b3480156100f957600080fd5b506101266004803603602081101561011057600080fd5b81019080803590602001909291905050506106f7565b604051808881526020018773ffffffffffffffffffffffffffffffffffffffff168152602001868152602001858152602001848152602001838152602001821515815260200197505050505050505060405180910390f35b34801561018a57600080fd5b50610193610766565b6040518082815260200191505060405180910390f35b3480156101b557600080fd5b506101be61076d565b6040518082815260200191505060405180910390f35b3480156101e057600080fd5b506101e961077b565b005b3480156101f757600080fd5b506102246004803603602081101561020e57600080fd5b8101908080359060200190929190505050610969565b6040518082600481111561023457fe5b815260200191505060405180910390f35b6103326004803603608081101561025b57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156102ac57600080fd5b8201836020820111156102be57600080fd5b803590602001918460018302840111640100000000831117156102e057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610aa4565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610372578082015181840152602081019050610357565b50505050905090810190601f16801561039f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103b957600080fd5b506103fc600480360360208110156103d057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d84565b6040518082815260200191505060405180910390f35b34801561041e57600080fd5b506104616004803603602081101561043557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d9c565b6040518082815260200191505060405180910390f35b34801561048357600080fd5b506105676004803603606081101561049a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156104e157600080fd5b8201836020820111156104f357600080fd5b8035906020019184600183028401116401000000008311171561051557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610db4565b6040518082815260200191505060405180910390f35b34801561058957600080fd5b50610592611249565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156105ca57600080fd5b506105d361126d565b6040518082815260200191505060405180910390f35b3480156105f557600080fd5b506106426004803603604081101561060c57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061127a565b60405180821515815260200191505060405180910390f35b34801561066657600080fd5b5061069f6004803603604081101561067d57600080fd5b81019080803590602001909291908035151590602001909291905050506112e8565b005b3480156106ad57600080fd5b506106b6611716565b6040518082815260200191505060405180910390f35b3480156106d857600080fd5b506106e161171d565b6040518082815260200191505060405180910390f35b60026020528060005260406000206000915090508060000154908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020154908060030154908060040154908060050154908060060160009054906101000a900460ff16905087565b62014ff081565b69010f0cf064dd5920000081565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020544211610812576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526034815260200180611aba6034913960400191505060405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156108e257600080fd5b505af11580156108f6573d6000803e3d6000fd5b505050506040513d602081101561090c57600080fd5b81019080805190602001909291905050505061096733600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611723565b565b6000816001541015801561097d5750600082115b6109d2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180611b696026913960400191505060405180910390fd5b6000600260008481526020019081526020016000209050610a0362014ff082600201546117d690919063ffffffff16565b4211610a13576000915050610a9f565b600115158160060160009054906101000a900460ff1615151415610a3b576004915050610a9f565b80600401548160030154111580610a5f575069010f0cf064dd592000008160030154105b15610a6e576001915050610a9f565b610a8862029fe082600201546117d690919063ffffffff16565b421015610a99576002915050610a9f565b60039150505b919050565b60606000848484604051602001808473ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610b10578082015181840152602081019050610af5565b50505050905090810190601f168015610b3d5780820380516001836020036101000a031916815260200191505b50945050505050604051602081830303815290604052805190602001209050600060026000888152602001908152602001600020905081816005015414610bcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180611aee6025913960400191505060405180910390fd5b60036004811115610bdc57fe5b610be588610969565b6004811115610bf057fe5b14610c46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180611a106027913960400191505060405180910390fd5b600060608773ffffffffffffffffffffffffffffffffffffffff1687876040518082805190602001908083835b60208310610c965780518252602082019150602081019050602083039250610c73565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114610cf8576040519150601f19603f3d011682016040523d82523d6000602084013e610cfd565b606091505b509150915081610d58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526034815260200180611b136034913960400191505060405180910390fd5b60018360060160006101000a81548160ff02191690831515021790555080945050505050949350505050565b60036020528060005260406000206000915090505481565b60046020528060005260406000206000915090505481565b60008060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610e3e57600080fd5b505afa158015610e52573d6000803e3d6000fd5b505050506040513d6020811015610e6857600080fd5b8101908080519060200190929190505050905060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015610f2a57600080fd5b505af1158015610f3e573d6000803e3d6000fd5b505050506040513d6020811015610f5457600080fd5b810190808051906020019092919050505050610f70338261185e565b610f8662014ff0426117d690919063ffffffff16565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555068056bc75e2d63100000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411611069576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603c815260200180611a59603c913960400191505060405180910390fd5b6000858585604051602001808473ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156110d35780820151818401526020810190506110b8565b50505050905090810190601f1680156111005780820380516001836020036101000a031916815260200191505b509450505050506040516020818303038152906040528051906020012090506001600081548092919060010191905055506111396119b7565b6040518060e0016040528060015481526020013373ffffffffffffffffffffffffffffffffffffffff16815260200142815260200160008152602001600081526020018381526020016000151581525090508060026000836000015181526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160020155606082015181600301556080820151816004015560a0820151816005015560c08201518160060160006101000a81548160ff0219169083151502179055509050505050509392505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b68056bc75e2d6310000081565b60006002600084815260200190815260200160002060070160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160019054906101000a900460ff16905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561137257600080fd5b505afa158015611386573d6000803e3d6000fd5b505050506040513d602081101561139c57600080fd5b8101908080519060200190929190505050905060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561145e57600080fd5b505af1158015611472573d6000803e3d6000fd5b505050506040513d602081101561148857600080fd5b8101908080519060200190929190505050506114a4338261185e565b6114ba62014ff0426117d690919063ffffffff16565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600481111561150a57fe5b61151384610969565b600481111561151e57fe5b14611574576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180611b476022913960400191505060405180910390fd5b600060026000858152602001908152602001600020905060008160070160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600015158160000160009054906101000a900460ff1615151461163e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180611a956025913960400191505060405180910390fd5b6000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905084156116ac5761169f8184600301546117d690919063ffffffff16565b83600301819055506116cc565b6116c38184600401546117d690919063ffffffff16565b83600401819055505b60018260000160006101000a81548160ff021916908315150217905550848260000160016101000a81548160ff021916908315150217905550808260010181905550505050505050565b62029fe081565b60015481565b61178f81604051806060016040528060228152602001611a3760229139600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118f79092919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b600080828401905083811015611854576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6118b081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117d690919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b60008383111582906119a4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561196957808201518184015260208101905061194e565b50505050905090810190601f1680156119965780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6040518060e0016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081526020016000815260200160008019168152602001600015158152509056fe476f7665726e616e63653a3a657865637574653a2043616e6e6f7420626520657865637574656445524332303a206275726e20616d6f756e7420657863656564732062616c616e6365476f7665726e616e63653a3a70726f706f73653a2070726f706f73657220766f7465732062656c6f772070726f706f73616c207468726573686f6c64476f7665726e616e63653a3a766f74653a20766f74657220616c726561647920766f746564476f7665726e616e63653a3a77697468647261773a207761697420756e74696c20766f74654c6f636b2065787069726174696f6e476f7665726e616e63653a3a657865637574653a20496e76616c69642070726f706f73616c476f7665726e616e63653a3a657865637574653a205472616e73616374696f6e20657865637574696f6e2072657665727465642e476f7665726e616e63653a3a766f74653a20766f74696e6720697320636c6f736564476f7665726e616e63653a3a73746174653a20696e76616c69642070726f706f73616c206964a26469706673582212200ecedf6240d8de64929f8a6f908b830b83543435dd39b6adce7b149f33f3b87664736f6c634300060c0033
Verified Source Code Partial Match
Compiler: v0.6.12+commit.27d51765
EVM: istanbul
Optimization: No
Governance.sol 329 lines
pragma solidity ^0.6.12;
interface IERC20 {
function totalSupply() external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
function transfer(address recipient, uint256 amount) external returns (bool);
function allowance(address owner, address spender) external view returns (uint256);
function approve(address spender, uint256 amount) external returns (bool);
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
}
library SafeMath {
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return sub(a, b, "SafeMath: subtraction overflow");
}
function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b <= a, errorMessage);
uint256 c = a - b;
return c;
}
function mul(uint256 a, uint256 b) internal pure returns (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 0;
}
uint256 c = a * b;
require(c / a == b, "SafeMath: multiplication overflow");
return c;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return div(a, b, "SafeMath: division by zero");
}
function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b > 0, errorMessage);
uint256 c = a / b;
// assert(a == b * c + a % b); // There is no case in which this doesn't hold
return c;
}
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
return mod(a, b, "SafeMath: modulo by zero");
}
function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b != 0, errorMessage);
return a % b;
}
}
library Address {
function isContract(address account) internal view returns (bool) {
// This method relies in extcodesize, which returns 0 for contracts in
// construction, since the code is only stored at the end of the
// constructor execution.
uint256 size;
// solhint-disable-next-line no-inline-assembly
assembly { size := extcodesize(account) }
return size > 0;
}
function sendValue(address payable recipient, uint256 amount) internal {
require(address(this).balance >= amount, "Address: insufficient balance");
// solhint-disable-next-line avoid-low-level-calls, avoid-call-value
(bool success, ) = recipient.call{ value: amount }("");
require(success, "Address: unable to send value, recipient may have reverted");
}
function functionCall(address target, bytes memory data) internal returns (bytes memory) {
return functionCall(target, data, "Address: low-level call failed");
}
function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
return _functionCallWithValue(target, data, 0, errorMessage);
}
function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
}
function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
require(address(this).balance >= value, "Address: insufficient balance for call");
return _functionCallWithValue(target, data, value, errorMessage);
}
function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
require(isContract(target), "Address: call to non-contract");
// solhint-disable-next-line avoid-low-level-calls
(bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
if (success) {
return returndata;
} else {
// Look for revert reason and bubble it up if present
if (returndata.length > 0) {
// The easiest way to bubble the revert reason is using memory via assembly
// solhint-disable-next-line no-inline-assembly
assembly {
let returndata_size := mload(returndata)
revert(add(32, returndata), returndata_size)
}
} else {
revert(errorMessage);
}
}
}
}
contract Governance {
using SafeMath for uint;
/// @notice The duration of voting on a proposal
uint public constant votingPeriod = 86000;
/// @notice Time since submission before the proposal can be executed
uint public constant executionPeriod = 86000 * 2;
/// @notice The required minimum number of votes in support of a proposal for it to succeed
uint public constant quorumVotes = 5000e18;
/// @notice The minimum number of votes required for an account to create a proposal
uint public constant proposalThreshold = 100e18;
IERC20 public votingToken;
/// @notice The total number of proposals
uint public proposalCount;
/// @notice The record of all proposals ever proposed
mapping (uint256 => Proposal) public proposals;
/// @notice The time until which tokens used for voting will be locked
mapping (address => uint) public voteLock;
/// @notice Keeps track of locked tokens per address
mapping(address => uint) public balanceOf;
struct Proposal {
/// @notice Unique id for looking up a proposal
uint id;
/// @notice Creator of the proposal
address proposer;
/// @notice The time at which voting starts
uint startTime;
/// @notice Current number of votes in favor of this proposal
uint forVotes;
/// @notice Current number of votes in opposition to this proposal
uint againstVotes;
// @notice Queued transaction hash
bytes32 txHash;
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
bool support;
/// @notice The number of votes the voter had, which were cast
uint votes;
}
/// @notice Possible states that a proposal may be in
enum ProposalState {
Active,
Defeated,
PendingExecution,
ReadyForExecution,
Executed
}
/// @notice If the votingPeriod is changed and the user votes again, the lock period will be reset.
modifier lockVotes() {
uint tokenBalance = votingToken.balanceOf(msg.sender);
votingToken.transferFrom(msg.sender, address(this), tokenBalance);
_mint(msg.sender, tokenBalance);
voteLock[msg.sender] = block.timestamp.add(votingPeriod);
_;
}
constructor(IERC20 _votingToken) public {
votingToken = _votingToken;
}
function state(uint proposalId)
public
view
returns (ProposalState)
{
require(proposalCount >= proposalId && proposalId > 0, "Governance::state: invalid proposal id");
Proposal storage proposal = proposals[proposalId];
if (block.timestamp <= proposal.startTime.add(votingPeriod)) {
return ProposalState.Active;
} else if (proposal.executed == true) {
return ProposalState.Executed;
} else if (proposal.forVotes <= proposal.againstVotes || proposal.forVotes < quorumVotes) {
return ProposalState.Defeated;
} else if (block.timestamp < proposal.startTime.add(executionPeriod)) {
return ProposalState.PendingExecution;
} else {
return ProposalState.ReadyForExecution;
}
}
function getVote(uint _proposalId, address _voter)
public
view
returns (bool)
{
return proposals[_proposalId].receipts[_voter].support;
}
function execute(uint _proposalId, address _target, uint _value, bytes memory _data)
public
payable
returns (bytes memory)
{
bytes32 txHash = keccak256(abi.encode(_target, _value, _data));
Proposal storage proposal = proposals[_proposalId];
require(proposal.txHash == txHash, "Governance::execute: Invalid proposal");
require(state(_proposalId) == ProposalState.ReadyForExecution, "Governance::execute: Cannot be executed");
(bool success, bytes memory returnData) = _target.call.value(_value)(_data);
require(success, "Governance::execute: Transaction execution reverted.");
proposal.executed = true;
return returnData;
}
function propose(address _target, uint _value, bytes memory _data)
public
lockVotes
returns (uint)
{
require(balanceOf[msg.sender] > proposalThreshold, "Governance::propose: proposer votes below proposal threshold");
bytes32 txHash = keccak256(abi.encode(_target, _value, _data));
proposalCount++;
Proposal memory newProposal = Proposal({
id: proposalCount,
proposer: msg.sender,
startTime: block.timestamp,
forVotes: 0,
againstVotes: 0,
txHash: txHash,
executed: false
});
proposals[newProposal.id] = newProposal;
}
function vote(uint _proposalId, bool _support) public lockVotes {
require(state(_proposalId) == ProposalState.Active, "Governance::vote: voting is closed");
Proposal storage proposal = proposals[_proposalId];
Receipt storage receipt = proposal.receipts[msg.sender];
require(receipt.hasVoted == false, "Governance::vote: voter already voted");
uint votes = balanceOf[msg.sender];
if (_support) {
proposal.forVotes = proposal.forVotes.add(votes);
} else {
proposal.againstVotes = proposal.againstVotes.add(votes);
}
receipt.hasVoted = true;
receipt.support = _support;
receipt.votes = votes;
}
function withdraw() public {
require(block.timestamp > voteLock[msg.sender], "Governance::withdraw: wait until voteLock expiration");
votingToken.transfer(msg.sender, balanceOf[msg.sender]);
_burn(msg.sender, balanceOf[msg.sender]);
}
function _mint(address _account, uint _amount) internal {
balanceOf[_account] = balanceOf[_account].add(_amount);
}
function _burn(address _account, uint _amount) internal {
balanceOf[_account] = balanceOf[_account].sub(_amount, "ERC20: burn amount exceeds balance");
}
}
Read Contract
balanceOf 0x70a08231 → uint256
executionPeriod 0xd11d0d58 → uint256
getVote 0xbc3f931f → bool
proposalCount 0xda35c664 → uint256
proposalThreshold 0xb58131b0 → uint256
proposals 0x013cf08b → uint256, address, uint256, uint256, uint256, bytes32, bool
quorumVotes 0x24bc1a64 → uint256
state 0x3e4f49e6 → uint8
voteLock 0x4e27e916 → uint256
votingPeriod 0x02a251a3 → uint256
votingToken 0xb0340123 → address
Write Contract 4 functions
These functions modify contract state and require a wallet transaction to execute.
execute 0x44c028fe
uint256 _proposalId
address _target
uint256 _value
bytes _data
returns: bytes
propose 0x93ba3f15
address _target
uint256 _value
bytes _data
returns: uint256
vote 0xc9d27afe
uint256 _proposalId
bool _support
withdraw 0x3ccfd60b
No parameters
Recent Transactions
No transactions found for this address