Contract 0x64ea8fc80f18...3b6eb63fa819
utilityA tutorial contract holding a 3 by 3 grid of tile structs, deployed 30 September 2015.
Context
Deployed two months after the Frontier launch, while the limits of the ABI on nested types were still being mapped out.
Key Facts
Description
The contract declares a three by three fixed array of Tile structs, each tile carrying an owner address, an elevation and a pointer to another contract meant to describe how the tile looks. It exists to test whether structs nested inside a fixed two-dimensional array could be written, read back and returned across the ABI, which was not settled at the time. It inherits the mortal base contract that solc shipped as a built in, so the creator could destroy it, and that was done: no code remains at the address and the source is matched against the bytecode as archived at deployment. Deployed by Cyrus Adkisson from 0xcf684dfb8304729355b58315e8019b1aa2ad1bac.
Source Verified
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
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 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 0x46dce1...3086aa
Same deployerA contract built to probe what the msg globals return, endowed with 3 ETH on 1 September 2015.
0x46dce1...3086aaSeptember 1, 2015Contract 0x4959e0...f0d5bd
Same deployerA coin flip wager contract endowed with 6 ETH, deployed 2 September 2015.
0x4959e0...f0d5bdSeptember 2, 2015Contract 0x00bca6...2eb75c
Same deployerThe first deployed version of a coin flip wager contract, endowed with 1 ETH on 2 September 2015.
0x00bca6...2eb75cSeptember 2, 2015Contract 0x26029e...b27493
Same deployerA coin flip wager contract that refuses bets the bankroll cannot cover, endowed with 1 ETH on 2 September 2015.
0x26029e...b27493September 2, 2015