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, 2015CallerPool
Same deployerThe bonded caller pool of the Ethereum Alarm Clock: callers post a bond, take turns being the designated executor, and forfeit it if they miss.
0x329219...fc3e8bSeptember 22, 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, 2015