Back to Home

Descriptor

Utility
Part of The Cyrus Adkisson Collection
0x2ed055ab9d46...0cdb93bbc124
FrontierContract #1,682Exact Bytecode MatchEdit this contract
Deployed September 30, 2015 (10 years ago)Block 312,814

The five element Descriptor from Cyrus Adkisson's Solidity walkthrough

Frontier EraVerified Source

Historical Significance

A tutorial contract whose behaviour depends on a compiler quirk rather than on what it says: an uninitialised local array of a value type was given a storage reference, so writing to what looks like a temporary variable writes to slot zero instead. It is the ancestor of the uninitialised storage pointer bug that later cost real money, preserved here in a teaching example where it cost nothing.

Context

Frontier era deployment by Cyrus Adkisson, from his Solidity teaching repository.

Key Facts
Deployer
Cyrus Adkisson(0xcf684d...ad1bac)
Deployment Block
312,814
Deployment Date
Sep 30, 2015, 03:12 PM
Code Size
277.0 B
Gas at Deploy
88,261

Description

A Descriptor from the array passer chapter of cyrusadkisson/solidity-baby-steps, returning uint16[5] filled with 34, 876, 4, 67 and 66. Because solc 0.1.x gave an uninitialised local array of value type a storage reference at slot zero, getDescription writes those five numbers into the contract's own storage before returning them, so this constant function costs gas and is not callable statically. Deployed fifteen minutes before the two three element Descriptors at 0xadccb16c0cc9cc2c419a30f7d58466b7139f91c2 and 0x9fb0b5c0cbbd30a9e8ce9c81c686a797121d69b8.

Source Verified

Exact bytecode match(277 bytes)
Compiler: v0.1.3-
Heuristic Analysis

The following characteristics were detected through bytecode analysis and may not be accurate.

Detected Type: Utility

Bytecode Overview

Opcodes277
Unique Opcodes62
Jump Instructions5
Storage Operations5

External Links

Related contracts