An on-chain messaging contract with per-address tracking and delete functionality, by the same Frontier developer who iterated on messaging across four deployme
Historical Significance
Part of a messaging contract iteration sequence by a prolific Frontier week 1 developer who deployed 31 contracts.
Context
One of several messaging experiments by deployer 0x8674c218 during Ethereum Frontier's first days.
Key Facts
Description
A messaging contract deployed at block 54,254 (August 2015) on Ethereum Frontier. Part of a series of messaging contract iterations by deployer 0x8674c218, who also deployed the simpler MessagingContract at rank 36, the v2 at rank 37, and the MessageStore at rank 27. This version shares the same function interface as rank 37 (sendMessage, getMessageContents, getMessageTime, deleteMessage, per-address hashes and messages tracking) with a smaller bytecode footprint.
Source Verified
near_exact_match: same function interface as rank 37 MessagingContract v2. Compiled 1557b vs target 1473b with soljson v0.3.1 no-opt. All 6 selectors confirmed via openchain.xyz.
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 (near-exact bytecode match).
Show source code (Solidity)
contract Messaging {
mapping(bytes32 => string) messageContents;
mapping(bytes32 => uint) messageTime;
mapping(address => bytes32[]) public hashes;
mapping(address => mapping(bytes32 => bool)) public messages;
function sendMessage(address to, string content) {
bytes32 h = sha3(msg.sender, to, content);
messageContents[h] = content;
messageTime[h] = block.timestamp;
hashes[to].push(h);
}
function getMessageContents(bytes32 hash) constant returns (string) {
return messageContents[hash];
}
function getMessageTime(bytes32 hash) constant returns (uint) {
return messageTime[hash];
}
function deleteMessage(bytes32 hash) {
delete messageContents[hash];
delete messageTime[hash];
}
}