Back to Home

MemberRegistry

Unknown
0x1f3b190cdedd...8eecbe7c161a
FrontierFailed DeployExact Bytecode MatchEdit this contract
Deployed August 13, 2015 (10 years ago)Block 81,603

Owner-controlled dynamic-array member registry.

Key Facts

Deployer
Piper Merriam(0xd3CdA9...293601)
Deployment Block
81,603
Deployment Date
Aug 13, 2015, 10:22 PM
Code Size
Unknown
Gas at Deploy
1,000,000

Description

Owner-controlled dynamic-array member registry. Functions include MemberRegistry(), add/remove/lookup members, kill(). Verified with soljson-v0.1.1+commit.6ff4cd6 and optimizer OFF.

Source Verified

SolidityExact bytecode match0
Compiler: soljson

Backfilled from awesome-ethereum-proofs PR #43.

Heuristic Analysis

The following characteristics were detected through bytecode analysis and may not be accurate.

Detected Type: Unknown

Frontier Era

The initial release of Ethereum. A bare-bones implementation for technical users.

Block span: 01,149,999
July 30, 2015March 14, 2016

Bytecode Overview

Opcodes0
Unique Opcodes0
Jump Instructions0
Storage Operations0

Verified Source Available

Source verified through compiler archaeology and exact bytecode matching.

View Verification Proof
Show source code (Solidity)
contract owned {
    address owner;
    function owned() {
        owner = msg.sender;
    }
    modifier onlyOwner { if (msg.sender == owner) _ }
}

contract MemberRegistry is owned {

    address[] members;
    uint numMembers = 0;
    uint activeMemberCount = 0;
    mapping(address => bool) isMember;
    mapping(address => uint) memberIndex;

    modifier onlyMember() {
        if (isMember[msg.sender] == true) _
    }

    function MemberRegistry() {
        isMember[msg.sender] = true;
        members[numMembers] = msg.sender;
        memberIndex[msg.sender] = numMembers;
        activeMemberCount++;
        numMembers++;
    }

    function kill() {
        if (msg.sender == owner) {
            suicide(owner);
        }
    }

    function addMember(address member) onlyMember returns (bool) {
        if (isMember[member]) {
            return false;
        }
        isMember[member] = true;
        members[numMembers] = member;
        memberIndex[member] = numMembers;
        activeMemberCount++;
        numMembers++;
        return true;
    }

    function removeMember(address member) onlyMember returns (bool) {
        if (!isMember[member]) {
            return false;
        }
        isMember[member] = false;
        members[memberIndex[member]] = address(0);
        activeMemberCount--;
        return true;
    }

    function checkMembership(address member) returns (bool) {
        return isMember[member];
    }

}

External Links