An Ethereum Public Trust roster contract for adding, removing, and checking members.
Key Facts
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
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.
Frontier Era
The initial release of Ethereum. A bare-bones implementation for technical users.
Bytecode Overview
Verified Source Available
Source verified through compiler archaeology and exact bytecode matching.
View Verification ProofShow 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
Related contracts
MemberRegistry
Same deployerOwner-controlled dynamic-array member registry.
0x1f3b19...7c161aAugust 13, 2015Members
Same deployerOwner-controlled member registry with array + mapping tracking.
0xaeb2ac...a5fd37August 14, 2015KillMul
Same deployerTest/utility contract with `suicide(address)` kill switch and a `multiply2` helper.
0x3e5e1f...7c78cdAugust 14, 2015Members
Same deployerOwner-controlled member registry using sequential id + mapping storage.
0xc6810e...db4e6fAugust 14, 2015EthereumAlarmClock
Same deployerThe first deployment of Piper Merriam's Ethereum Alarm Clock, a smart contract protocol for scheduling transactions at future block numbers, launched on Septemb
0xb0059e...cc0cc1September 22, 2015EthereumAlarmClock
Same deployerThe second contract deployed by Piper Merriam on September 22, 2015, within hours of the Ethereum Alarm Clock v1, representing the first same-day iteration of t
0x223294...6036c2September 22, 2015