Back to Home

MembershipRoster

Unknown
0xf1d3271d6d10...9d7238aa0455
FrontierFailed DeployExact Bytecode MatchEdit this contract
Deployed August 14, 2015 (10 years ago)Block 85,716

An Ethereum Public Trust roster contract for adding, removing, and checking members.

Key Facts

Deployer
Piper Merriam(0xd3CdA9...293601)
Deployment Block
85,716
Deployment Date
Aug 14, 2015, 03:54 PM
Code Size
Unknown
Gas at Deploy
3,141,592

Description

A Piper Merriam contract for the Ethereum Public Trust that maintains a mutable member list under owner control. It combines early ownership, mortal, and membership-management patterns in a single August 2015 deployment.

Source Verified

SolidityExact bytecode match0
Compiler: soljson

Merged into awesome-ethereum-proofs and backfilled from proof repo.

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 {
        function owned() { owner = msg.sender; }
        address owner;

        modifier onlyowner { if (msg.sender == owner) _ }
}

contract mortal is owned {
        function kill() onlyowner {
                suicide(owner);
        }
}


contract MembershipRoster is mortal {
        address[] members;
        uint currentIndex = 0;
        uint memberCount = 0;

        mapping (address => bool) isMember;
        mapping (address => uint) memberIndex;

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

        function MembershipRoster() {
                isMember[msg.sender] = true;
                members[currentIndex] = msg.sender;
                memberIndex[msg.sender] = currentIndex;
                memberCount++;
                currentIndex++;
        }

        function addMember(address _address) onlymember public returns (bool successful) {
                if ( isMember[_address] ) {
                        return false;
                }

                isMember[_address] = true;
                members[currentIndex] = _address;
                memberIndex[_address] = currentIndex;
                memberCount++;
                currentIndex++;

                return true;
        }

        function removeMember(address _address) onlymember public returns (bool successful) {
                if ( !isMember[_address] ) {
                        return false;
                }
                isMember[_address] = false;
                members[memberIndex[_address]] = 0x0;

                memberCount--;

                return true;
        }

        function checkMembership(address _address) public returns (bool addressIsMember) {
                return isMember[_address];
        }
}


contract EthereumPublicTrust is mortal{
        address membershipRoster;

        function setMembershipRoster(address _address) onlyowner public {
                membershipRoster = _address;
        }
}

External Links