ETH Price: $3,332.86 (+4.07%)
Gas: 2 Gwei

Contract

0x29A5f08a38c79a2dD1DF055792822eB1E163d574
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
0x60806040165835192023-02-08 10:39:11522 days ago1675852751IN
 Create: HordCongressMembersRegistry
0 ETH0.0217543725

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
HordCongressMembersRegistry

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2023-02-08
*/

// Sources flattened with hardhat v2.5.0 https://hardhat.org

// File contracts/libraries/SafeMath.sol

pragma solidity 0.6.12;


/**
 * @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;
    }
}


// File contracts/governance/HordCongressMembersRegistry.sol

pragma solidity ^0.6.12;

/**
 * HordCongressMembersRegistry contract.
 * @author Nikola Madjarevic
 * Date created: 21.3.21.
 * Github: madjarevicn
 */
contract HordCongressMembersRegistry {

    using SafeMath for *;

    /// @notice The name of this contract
    string public constant name = "HordCongressMembersRegistry";

    /// @notice Event to fire every time someone is added or removed from members
    event MembershipChanged(address member, bool isMember);

    /// @notice Hord congress pointer
    address public hordCongress;

    //The minimum number of voting members that must be in attendance
    uint256 minimalQuorum;

    // Mapping to check if the member is belonging to congress
    mapping (address => bool) isMemberInCongress;

    // Mapping address to member info
    mapping(address => Member) public address2Member;

    // Mapping to store all members addresses
    address[] public allMembers;


    struct Member {
        bytes32 name;
        uint memberSince;
    }

    modifier onlyHordCongress {
        require(msg.sender == hordCongress);
        _;
    }

    /**
     * @param initialCongressMembers is the array containing addresses of initial members
     */
    constructor(
        address[] memory initialCongressMembers,
        bytes32[] memory initialCongressMemberNames,
        address _hordCongress
    )
    public
    {
        uint length = initialCongressMembers.length;

        for(uint i=0; i<length; i++) {
            addMemberInternal(
                initialCongressMembers[i],
                initialCongressMemberNames[i]
            );
        }

        hordCongress = _hordCongress;
    }


    function changeMinimumQuorum(
        uint newMinimumQuorum
    )
    external
    onlyHordCongress
    {
        require(newMinimumQuorum > 0);
        minimalQuorum = newMinimumQuorum;
    }

    /**
     * Add member
     *
     * Make `targetMember` a member named `memberName`
     *
     * @param targetMember ethereum address to be added
     * @param memberName public name for that member
     */
    function addMember(
        address targetMember,
        bytes32 memberName
    )
    external
    onlyHordCongress
    {
        addMemberInternal(targetMember, memberName);
    }


    function addMemberInternal(
        address targetMember,
        bytes32 memberName
    )
    internal
    {
        //Require that this member is not already a member of congress
        require(isMemberInCongress[targetMember] == false);
        // Update basic member information
        address2Member[targetMember] = Member({
            memberSince: block.timestamp,
            name: memberName
        });
        // Add member to list of all members
        allMembers.push(targetMember);
        // Update minimum quorum
        minimalQuorum = allMembers.length.sub(1);
        // Mark that user is member in congress
        isMemberInCongress[targetMember] = true;
        // Fire an event
        emit MembershipChanged(targetMember, true);
    }

    /**
     * Remove member
     *
     * @notice Remove membership from `targetMember`
     *
     * @param targetMember ethereum address to be removed
     */
    function removeMember(
        address targetMember
    )
    external
    onlyHordCongress
    {
        require(isMemberInCongress[targetMember] == true);

        uint length = allMembers.length;

        uint i=0;

        // Find selected member
        while(allMembers[i] != targetMember) {
            if(i == length) {
                revert();
            }
            i++;
        }

        // Move the last member to this place
        allMembers[i] = allMembers[length-1];

        // Remove the last member
        allMembers.pop();

        //Remove him from state mapping
        isMemberInCongress[targetMember] = false;

        //Remove his state to empty member
        address2Member[targetMember] = Member({
            memberSince: block.timestamp,
            name: "0x0"
        });

        //Reduce 1 member from quorum
        minimalQuorum = minimalQuorum.sub(1);

        // Emit event that member is removed.
        emit MembershipChanged(targetMember, false);
    }

    /**
     * @notice Function which will be exposed and congress will use it as "modifier"
     * @param _address is the address we're willing to check if it belongs to congress
     * @return true/false depending if it is either a member or not
     */
    function isMember(
        address _address
    )
    external
    view
    returns (bool)
    {
        return isMemberInCongress[_address];
    }

    /// @notice Getter for length for how many members are currently
    /// @return length of members
    function getNumberOfMembers()
    external
    view
    returns (uint)
    {
        return allMembers.length;
    }

    /// @notice Function to get addresses of all members in congress
    /// @return array of addresses
    function getAllMemberAddresses()
    external
    view
    returns (address[] memory)
    {
        return allMembers;
    }

    /// Get member information
    function getMemberInfo(
        address _member
    )
    external
    view
    returns (address, bytes32, uint)
    {
        Member memory member = address2Member[_member];
        return (
            _member,
            member.name,
            member.memberSince
        );
    }

    function getMinimalQuorum()
    external
    view
    returns (uint256)
    {
        return minimalQuorum;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address[]","name":"initialCongressMembers","type":"address[]"},{"internalType":"bytes32[]","name":"initialCongressMemberNames","type":"bytes32[]"},{"internalType":"address","name":"_hordCongress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"member","type":"address"},{"indexed":false,"internalType":"bool","name":"isMember","type":"bool"}],"name":"MembershipChanged","type":"event"},{"inputs":[{"internalType":"address","name":"targetMember","type":"address"},{"internalType":"bytes32","name":"memberName","type":"bytes32"}],"name":"addMember","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"address2Member","outputs":[{"internalType":"bytes32","name":"name","type":"bytes32"},{"internalType":"uint256","name":"memberSince","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"allMembers","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMinimumQuorum","type":"uint256"}],"name":"changeMinimumQuorum","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getAllMemberAddresses","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_member","type":"address"}],"name":"getMemberInfo","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMinimalQuorum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNumberOfMembers","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hordCongress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"isMember","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"targetMember","type":"address"}],"name":"removeMember","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b50604051610ba5380380610ba58339818101604052606081101561003357600080fd5b810190808051604051939291908464010000000082111561005357600080fd5b90830190602082018581111561006857600080fd5b825186602082028301116401000000008211171561008557600080fd5b82525081516020918201928201910280838360005b838110156100b257818101518382015260200161009a565b50505050905001604052602001805160405193929190846401000000008211156100db57600080fd5b9083019060208201858111156100f057600080fd5b825186602082028301116401000000008211171561010d57600080fd5b82525081516020918201928201910280838360005b8381101561013a578181015183820152602001610122565b505050509190910160405250602001518451909250905060005b8181101561019a5761019285828151811061016b57fe5b602002602001015185838151811061017f57fe5b60200260200101516101c460201b60201c565b600101610154565b5050600080546001600160a01b0319166001600160a01b03929092169190911790555061033e9050565b6001600160a01b03821660009081526002602052604090205460ff16156101ea57600080fd5b6040805180820182528281524260208083019182526001600160a01b038616600081815260038352948520935184559151600193840155600480548085018255948190527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b90940180546001600160a01b031916909217909155915461027a9290919061069b6102e1821b17901c565b60019081556001600160a01b038316600081815260026020908152604091829020805460ff191685179055815192835282019290925281517f27b022af4a8347100c7a041ce5ccf8e14d644ff05de696315196faae8cd50c9b929181900390910190a15050565b600082821115610338576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6108588061034d6000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c80638b73a46b116100715780638b73a46b146102545780638eca4a161461026e578063a230c524146102ad578063ab0d8a3f146102e7578063f7887e21146102ef578063fd0717bd1461030c576100b4565b806306fdde03146100b95780630b1ca49a146101365780632fd1949d1461015e57806349df7208146101b65780635f1231ea146101e25780636a8f414f14610230575b600080fd5b6100c1610329565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100fb5781810151838201526020016100e3565b50505050905090810190601f1680156101285780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61015c6004803603602081101561014c57600080fd5b50356001600160a01b0316610362565b005b610166610527565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156101a257818101518382015260200161018a565b505050509050019250505060405180910390f35b61015c600480360360408110156101cc57600080fd5b506001600160a01b038135169060200135610589565b610208600480360360208110156101f857600080fd5b50356001600160a01b03166105ae565b604080516001600160a01b039094168452602084019290925282820152519081900360600190f35b6102386105f9565b604080516001600160a01b039092168252519081900360200190f35b61025c610608565b60408051918252519081900360200190f35b6102946004803603602081101561028457600080fd5b50356001600160a01b031661060e565b6040805192835260208301919091528051918290030190f35b6102d3600480360360208110156102c357600080fd5b50356001600160a01b0316610627565b604080519115158252519081900360200190f35b61025c610645565b61015c6004803603602081101561030557600080fd5b503561064b565b6102386004803603602081101561032257600080fd5b5035610674565b6040518060400160405280601b81526020017f486f7264436f6e67726573734d656d626572735265676973747279000000000081525081565b6000546001600160a01b0316331461037957600080fd5b6001600160a01b03811660009081526002602052604090205460ff1615156001146103a357600080fd5b60045460005b826001600160a01b0316600482815481106103c057fe5b6000918252602090912001546001600160a01b0316146103ef57818114156103e757600080fd5b6001016103a9565b600460018303815481106103ff57fe5b600091825260209091200154600480546001600160a01b03909216918390811061042557fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600480548061045e57fe5b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b038516808352600282526040808420805460ff19169055805180820182526203078360ec1b815242818501908152928552600390935290922090518155905160019182015580546104db9161069b565b600155604080516001600160a01b03851681526000602082015281517f27b022af4a8347100c7a041ce5ccf8e14d644ff05de696315196faae8cd50c9b929181900390910190a1505050565b6060600480548060200260200160405190810160405280929190818152602001828054801561057f57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610561575b5050505050905090565b6000546001600160a01b031633146105a057600080fd5b6105aa82826106f8565b5050565b60008060006105bb61080b565b505050506001600160a01b03811660009081526003602090815260409182902082518084019093528054808452600190910154929091018290529192565b6000546001600160a01b031681565b60045490565b6003602052600090815260409020805460019091015482565b6001600160a01b031660009081526002602052604090205460ff1690565b60015490565b6000546001600160a01b0316331461066257600080fd5b6000811161066f57600080fd5b600155565b6004818154811061068157fe5b6000918252602090912001546001600160a01b0316905081565b6000828211156106f2576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b03821660009081526002602052604090205460ff161561071e57600080fd5b6040805180820182528281524260208083019182526001600160a01b03861660008181526003909252938120925183559051600192830155600480548084018255918190527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b90910180546001600160a01b03191690931790925590546107a49161069b565b60019081556001600160a01b038316600081815260026020908152604091829020805460ff191685179055815192835282019290925281517f27b022af4a8347100c7a041ce5ccf8e14d644ff05de696315196faae8cd50c9b929181900390910190a15050565b60408051808201909152600080825260208201529056fea26469706673582212200f2bfbb49a52d19094fdb6f6f5b16736cad5235a8be54b70d66b07b52db3409764736f6c634300060c0033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000086a6d9fd61758096cf4f394ae7c1f9b6b4eec140000000000000000000000000000000000000000000000000000000000000003000000000000000000000000de1c1f83154ef64a8b3ae42b20ac2da716d18aba0000000000000000000000007027db53bc5299e0ee13ca6f594e4215d248c5a80000000000000000000000009b9a58ee7443e27871057c2d9c7272599b2957ef000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000466f756e646174696f6e2064656c6567617465000000000000000000000000000000000000005465616d2064656c656761746500000000000000000000000000000000000000486f72642064656c6567617465

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100b45760003560e01c80638b73a46b116100715780638b73a46b146102545780638eca4a161461026e578063a230c524146102ad578063ab0d8a3f146102e7578063f7887e21146102ef578063fd0717bd1461030c576100b4565b806306fdde03146100b95780630b1ca49a146101365780632fd1949d1461015e57806349df7208146101b65780635f1231ea146101e25780636a8f414f14610230575b600080fd5b6100c1610329565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100fb5781810151838201526020016100e3565b50505050905090810190601f1680156101285780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61015c6004803603602081101561014c57600080fd5b50356001600160a01b0316610362565b005b610166610527565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156101a257818101518382015260200161018a565b505050509050019250505060405180910390f35b61015c600480360360408110156101cc57600080fd5b506001600160a01b038135169060200135610589565b610208600480360360208110156101f857600080fd5b50356001600160a01b03166105ae565b604080516001600160a01b039094168452602084019290925282820152519081900360600190f35b6102386105f9565b604080516001600160a01b039092168252519081900360200190f35b61025c610608565b60408051918252519081900360200190f35b6102946004803603602081101561028457600080fd5b50356001600160a01b031661060e565b6040805192835260208301919091528051918290030190f35b6102d3600480360360208110156102c357600080fd5b50356001600160a01b0316610627565b604080519115158252519081900360200190f35b61025c610645565b61015c6004803603602081101561030557600080fd5b503561064b565b6102386004803603602081101561032257600080fd5b5035610674565b6040518060400160405280601b81526020017f486f7264436f6e67726573734d656d626572735265676973747279000000000081525081565b6000546001600160a01b0316331461037957600080fd5b6001600160a01b03811660009081526002602052604090205460ff1615156001146103a357600080fd5b60045460005b826001600160a01b0316600482815481106103c057fe5b6000918252602090912001546001600160a01b0316146103ef57818114156103e757600080fd5b6001016103a9565b600460018303815481106103ff57fe5b600091825260209091200154600480546001600160a01b03909216918390811061042557fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600480548061045e57fe5b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b038516808352600282526040808420805460ff19169055805180820182526203078360ec1b815242818501908152928552600390935290922090518155905160019182015580546104db9161069b565b600155604080516001600160a01b03851681526000602082015281517f27b022af4a8347100c7a041ce5ccf8e14d644ff05de696315196faae8cd50c9b929181900390910190a1505050565b6060600480548060200260200160405190810160405280929190818152602001828054801561057f57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610561575b5050505050905090565b6000546001600160a01b031633146105a057600080fd5b6105aa82826106f8565b5050565b60008060006105bb61080b565b505050506001600160a01b03811660009081526003602090815260409182902082518084019093528054808452600190910154929091018290529192565b6000546001600160a01b031681565b60045490565b6003602052600090815260409020805460019091015482565b6001600160a01b031660009081526002602052604090205460ff1690565b60015490565b6000546001600160a01b0316331461066257600080fd5b6000811161066f57600080fd5b600155565b6004818154811061068157fe5b6000918252602090912001546001600160a01b0316905081565b6000828211156106f2576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b03821660009081526002602052604090205460ff161561071e57600080fd5b6040805180820182528281524260208083019182526001600160a01b03861660008181526003909252938120925183559051600192830155600480548084018255918190527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b90910180546001600160a01b03191690931790925590546107a49161069b565b60019081556001600160a01b038316600081815260026020908152604091829020805460ff191685179055815192835282019290925281517f27b022af4a8347100c7a041ce5ccf8e14d644ff05de696315196faae8cd50c9b929181900390910190a15050565b60408051808201909152600080825260208201529056fea26469706673582212200f2bfbb49a52d19094fdb6f6f5b16736cad5235a8be54b70d66b07b52db3409764736f6c634300060c0033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000086a6d9fd61758096cf4f394ae7c1f9b6b4eec140000000000000000000000000000000000000000000000000000000000000003000000000000000000000000de1c1f83154ef64a8b3ae42b20ac2da716d18aba0000000000000000000000007027db53bc5299e0ee13ca6f594e4215d248c5a80000000000000000000000009b9a58ee7443e27871057c2d9c7272599b2957ef000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000466f756e646174696f6e2064656c6567617465000000000000000000000000000000000000005465616d2064656c656761746500000000000000000000000000000000000000486f72642064656c6567617465

-----Decoded View---------------
Arg [0] : initialCongressMembers (address[]): 0xDE1C1F83154eF64A8b3AE42b20Ac2DA716d18ABA,0x7027DB53bC5299e0Ee13ca6F594e4215D248c5A8,0x9b9A58EE7443E27871057C2d9C7272599b2957Ef
Arg [1] : initialCongressMemberNames (bytes32[]): System.Byte[],System.Byte[],System.Byte[]
Arg [2] : _hordCongress (address): 0x086A6d9FD61758096CF4F394AE7C1F9B6b4EEC14

-----Encoded View---------------
11 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [2] : 000000000000000000000000086a6d9fd61758096cf4f394ae7c1f9b6b4eec14
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [4] : 000000000000000000000000de1c1f83154ef64a8b3ae42b20ac2da716d18aba
Arg [5] : 0000000000000000000000007027db53bc5299e0ee13ca6f594e4215d248c5a8
Arg [6] : 0000000000000000000000009b9a58ee7443e27871057c2d9c7272599b2957ef
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [8] : 00000000000000000000000000466f756e646174696f6e2064656c6567617465
Arg [9] : 000000000000000000000000000000000000005465616d2064656c6567617465
Arg [10] : 00000000000000000000000000000000000000486f72642064656c6567617465


Deployed Bytecode Sourcemap

7735:5569:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7853:59;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10893:1040;;;;;;;;;;;;;;;;-1:-1:-1;10893:1040:0;-1:-1:-1;;;;;10893:1040:0;;:::i;:::-;;12706:130;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9735:189;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;9735:189:0;;;;;;;;:::i;12876:298::-;;;;;;;;;;;;;;;;-1:-1:-1;12876:298:0;-1:-1:-1;;;;;12876:298:0;;:::i;:::-;;;;-1:-1:-1;;;;;12876:298:0;;;;;;;;;;;;;;;;;;;;;;;;;8106:27;;;:::i;:::-;;;;-1:-1:-1;;;;;8106:27:0;;;;;;;;;;;;;;12470:122;;;:::i;:::-;;;;;;;;;;;;;;;;8399:48;;;;;;;;;;;;;;;;-1:-1:-1;8399:48:0;-1:-1:-1;;;;;8399:48:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;12202:155;;;;;;;;;;;;;;;;-1:-1:-1;12202:155:0;-1:-1:-1;;;;;12202:155:0;;:::i;:::-;;;;;;;;;;;;;;;;;;13182:119;;;:::i;9307:200::-;;;;;;;;;;;;;;;;-1:-1:-1;9307:200:0;;:::i;8503:27::-;;;;;;;;;;;;;;;;-1:-1:-1;8503:27:0;;:::i;7853:59::-;;;;;;;;;;;;;;;;;;;:::o;10893:1040::-;8680:12;;-1:-1:-1;;;;;8680:12:0;8666:10;:26;8658:35;;;;;;-1:-1:-1;;;;;11013:32:0;::::1;;::::0;;;:18:::1;:32;::::0;;;;;::::1;;:40;;:32:::0;:40:::1;11005:49;;;::::0;::::1;;11081:10;:17:::0;11067:11:::1;11165:140;11188:12;-1:-1:-1::0;;;;;11171:29:0::1;:10;11182:1;11171:13;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;11171:13:0::1;:29;11165:140;;11225:6;11220:1;:11;11217:59;;;11252:8;::::0;::::1;11217:59;11290:3;;11165:140;;;11380:10;11398:1;11391:6;:8;11380:20;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;11364:10:::1;:13:::0;;-1:-1:-1;;;;;11380:20:0;;::::1;::::0;11375:1;;11364:13;::::1;;;;;;;;;;;;;:36;;;;;-1:-1:-1::0;;;;;11364:36:0::1;;;;;-1:-1:-1::0;;;;;11364:36:0::1;;;;;;11448:10;:16;;;;;;;;::::0;;;::::1;::::0;;;;;-1:-1:-1;;11448:16:0;;;;;-1:-1:-1;;;;;;11448:16:0::1;::::0;;;;;;;;-1:-1:-1;;;;;11518:32:0;::::1;::::0;;;:18:::1;:32:::0;;;;;;:40;;-1:-1:-1;;11518:40:0::1;::::0;;11646:88;;;;::::1;::::0;;-1:-1:-1;;;11646:88:0;;11681:15:::1;11646:88:::0;;::::1;::::0;;;11615:28;;;:14:::1;:28:::0;;;;;;:119;;;;;;11448:16:::1;11615:119:::0;;::::1;::::0;11802:13;;:20:::1;::::0;:17:::1;:20::i;:::-;11786:13;:36:::0;11887:38:::1;::::0;;-1:-1:-1;;;;;11887:38:0;::::1;::::0;;11919:5:::1;11887:38;::::0;::::1;::::0;;;::::1;::::0;;;;;;;;;::::1;8704:1;;10893:1040:::0;:::o;12706:130::-;12777:16;12818:10;12811:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12811:17:0;;;;;;;;;;;;;;;;;;;;;;;12706:130;:::o;9735:189::-;8680:12;;-1:-1:-1;;;;;8680:12:0;8666:10;:26;8658:35;;;;;;9873:43:::1;9891:12;9905:10;9873:17;:43::i;:::-;9735:189:::0;;:::o;12876:298::-;12970:7;12979;12988:4;13010:20;;:::i;:::-;-1:-1:-1;;;;;;;;;13033:23:0;;;;;;:14;:23;;;;;;;;;13010:46;;;;;;;;;;;;;;;;;;;;;;;;;13033:23;;12876:298::o;8106:27::-;;;-1:-1:-1;;;;;8106:27:0;;:::o;12470:122::-;12567:10;:17;12470:122;:::o;8399:48::-;;;;;;;;;;;;;;;;;;;:::o;12202:155::-;-1:-1:-1;;;;;12321:28:0;12292:4;12321:28;;;:18;:28;;;;;;;;;12202:155::o;13182:119::-;13280:13;;13182:119;:::o;9307:200::-;8680:12;;-1:-1:-1;;;;;8680:12:0;8666:10;:26;8658:35;;;;;;9454:1:::1;9435:16;:20;9427:29;;;::::0;::::1;;9467:13;:32:::0;9307:200::o;8503:27::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8503:27:0;;-1:-1:-1;8503:27:0;:::o;3303:158::-;3361:7;3394:1;3389;:6;;3381:49;;;;;-1:-1:-1;;;3381:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3448:5:0;;;3303:158::o;9934:782::-;-1:-1:-1;;;;;10138:32:0;;;;;;:18;:32;;;;;;;;:41;10130:50;;;;;;10266:93;;;;;;;;;;;10301:15;10266:93;;;;;;;-1:-1:-1;;;;;10235:28:0;;-1:-1:-1;10235:28:0;;;:14;:28;;;;;;:124;;;;;;;;;;;10416:10;:29;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;10416:29:0;;;;;;;10506:17;;:24;;:21;:24::i;:::-;10490:13;:40;;;-1:-1:-1;;;;;10590:32:0;;;;;;:18;:32;;;;;;;;;:39;;-1:-1:-1;;10590:39:0;;;;;10671:37;;;;;;;;;;;;;;;;;;;;;;;;9934:782;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;:::o

Swarm Source

ipfs://0f2bfbb49a52d19094fdb6f6f5b16736cad5235a8be54b70d66b07b52db34097

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
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.