A minimal Pong contract with an int8 getter/setter and owner-only selfdestruct. Simpler predecessor to the tutorial Pong at 0x3a0cc907.
Historical Significance
One of the earliest Pong contract deployments on Ethereum mainnet, from a developer who published one of the first public Solidity tutorial series (solidity-baby-steps on GitHub).
Context
Deployed on September 4, 2015 during the Frontier era, roughly five weeks after Ethereum mainnet launch. Cyrus Adkisson was systematically working through Solidity concepts, deploying 357 contracts between August and October 2015.
Key Facts
Description
A minimal version of the Pong contract deployed by Cyrus Adkisson as part of his Solidity learning progression. This is a simpler predecessor to the full tutorial Pong contract (0x3a0cc907), containing only three functions: setPongval(int8) to set a value, getPongval() to read it, and kill() for owner-only selfdestruct.
Unlike the later tutorial Pong (46_pong_via_send.sol, deployed Sep 22 at block 274,266), this version has no constructor parameters, no getPongvalTransactional(), no getAddress(), and no pongval_tx_retrieval_attempted tracking. It represents the earliest iteration of the Pong concept before Cyrus expanded it for the inter-contract communication tutorial.
The contract was selfdestructed after testing. Source code was reconstructed from bytecode disassembly and confirmed via exact creation bytecode match with soljson v0.1.1 (optimizer OFF).
Source Verified
Exact creation bytecode match (452 bytes = 64 init + 388 runtime). soljson v0.1.1 optimizer OFF. Init terminator f3 00 confirms v0.1.1. Contract is selfdestructed. This is a simpler contract than the tutorial Pong at 0x3a0cc907 (46_pong_via_send.sol).
Historian Categories
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 Pong {
address owner;
int8 pongval;
function Pong() {
owner = msg.sender;
}
function setPongval(int8 val) {
pongval = val;
}
function getPongval() returns (int8) {
return pongval;
}
function kill() {
if (msg.sender == owner) suicide(owner);
}
}External Links
Related contracts
GetBalance
Same deployerCyrus Adkisson experimental getter (Sep 2015) exposing the ether balance of a hardcoded address via getMyBalance(). Verified byte-for-byte with soljson v0.1.1.
0x759ad4...239a87August 26, 2015Contract 0xddcd64...a08e7b
Same deployerThe greeter tutorial contract: it stores a greeting set at deployment and can be shut down by its owner.
0xddcd64...a08e7bAugust 26, 2015basicInfoGetter
Same deployerA tour of the EVM globals, carrying the constructor of the file it was copied from
0xad826c...d33547August 31, 2015Contract 0x3ea0db...b922e0
Same deployerThe basic info getter from the solidity-baby-steps tutorials, a read only window onto the block and message globals.
0x3ea0db...b922e0August 31, 2015Contract 0xba575c...78733f
Same deployerA contract built to probe what the msg globals actually return, endowed with 5 ETH, deployed 1 September 2015.
0xba575c...78733fSeptember 1, 2015Contract 0x8b180c...c084df
Same deployerA third deployment of the msgExaminer that records its own creation message
0x8b180c...c084dfSeptember 1, 2015