Historical Significance
The ownership plus kill() pair this contract implements became the standard shape for early Solidity contracts, inherited by most of the tutorial code of the period. Deployed alone it shows a reader working through the tutorial one contract at a time. The source was recovered by compiling the tutorial text with period compilers until the output matched the deployed bytecode exactly.
Context
Frontier and Homestead era deployment.
Key Facts
Description
A base contract that records its deployer and lets only that address destroy it. Deployed on its own rather than inherited, so the only thing it can do is remember who made it and accept a kill from them.
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)
// Submitted by EthereumHistory (ethereumhistory.com)
import "mortal";
// contract Descriptor {
// function getDescription() constant returns (uint16[3]){
// uint16[3] somevar;
// return somevar;
// }
// }
contract ArrayPasser is mortal {
address creator;
/***
* 1. Declare a 3x3 map of Tiles
***/
uint8 mapsize = 3;
Tile[3][3] tiles;
struct Tile
{
/***
* 2. A tile is comprised of the owner, elevation and a pointer to a
* contract that explains what the tile looks like
****/
uint8 elevation;
//Descriptor descriptor;
}
/***
* 3. Upon construction, initialize the internal map elevations.
* The Descriptors start uninitialized.
***/
function ArrayPasser(uint8[9] incmap)
{
creator = msg.sender;
uint8 counter = 0;
for(uint8 y = 0; y < mapsize; y++)
{
for(uint8 x = 0; x < mapsize; x++)
{
tiles[x][y].elevation = incmap[counter];
counter = counter + 1;
}
}
}
/***
* 4. After contract mined, check the map elevations
***/
function getElevations() constant returns (uint8[3][3])
{
uint8[3][3] memory elevations;
for(uint8 y = 0; y < mapsize; y++)
{
for(uint8 x = 0; x < mapsize; x++)
{
elevations[x][y] = tiles[x][y].elevation;
}
}
return elevations;
}
}External Links
Related contracts
Mortal
Same deployerAn early standalone self-destruct contract that lets its deployer permanently kill the contract.
0x4c5a2d...63b56eAugust 10, 2015Greeter
Same eraA HelloWorld greeter deployed at block 51,909 on 8 August 2015, one of a run of contracts from the same account that week.
0x412fda...7267edAugust 8, 2015Greeter
Same eraA Greeter with the message 'Ethereum will change the world smarter' - deployed Aug 8, 2015 by a developer connected to the Tokyo Smart Contract meetup.
0xda0c1c...7a68ebAugust 8, 2015MessageStore
Same eraA 6-line contract storing a single public string, deployed Day 9 of Ethereum by a prolific early experimenter who shipped 18 contracts in one week.
0xd2eccd...ff3d6bAugust 8, 2015Greeter
Same eraThe go-ethereum Contract Tutorial greeter, deployed with the greeting: Hello World!
0x506f4b...466983August 8, 2015Contract 0xd4eae4...a2c77a
Same eraThe ethereum.org crowdsale tutorial, deployed on the ninth day of the public chain, with the funding goal, deadline and price fixed at construction.
0xd4eae4...a2c77aAugust 8, 2015