A shares contract that reports every balance as zero until three rounds of delegation have run, then answers with the delegated weight.
Historical Significance
Governance contracts of this period ask a token what an address is worth, and this is what happens when the thing answering is not a token: voting power that cannot be bought or transferred, only delegated, and that reads as zero everywhere until the delegation process has finished. It is liquid democracy implemented behind the ERC-20 question, and it shows how loose the coupling between a governance contract and its shares actually was.
Context
Homestead arrived in March 2016 and the ethereum.org tutorials were rewritten around the transfer and balanceOf names that ERC-20 was standardising. Deploying a token or an organisation had become a matter of filling in constructor arguments, and most of what went on chain in this period is exactly that.
Key Facts
Description
A tiny contract that exists to be asked how much voting weight an address holds. It keeps a public voteWeight mapping and a count of delegation rounds, and its balanceOf(address) returns zero while fewer than three rounds have completed and the stored weight after that.
It carries the balanceOf name because that is what an association contract calls when it weighs a vote, so this stands in for a token without being one: there is no transfer, no supply and no way to move a balance. Weight arrives through delegation rather than through purchase.
The same account deployed an Association on the same day, and an association bound to a shares contract like this one cannot count any vote until the delegation rounds have run.
Heuristic Analysis
The following characteristics were detected through bytecode analysis and may not be accurate.
Homestead Era
The first planned hard fork. Removed the canary contract, adjusted gas costs.
Bytecode Overview
Verified Source Available
This contract has verified source code on Etherscan.
Show source code (Solidity)
// Submitted by EthereumHistory (ethereumhistory.com)
contract token {
mapping (address => uint256) public voteWeight;
uint public numberOfDelegationRounds;
function balanceOf(address member) constant returns (uint256 balance) {
if (numberOfDelegationRounds < 3) return 0;
else return this.voteWeight(member);
}
}
External Links
Related contracts
Contract 0x6960a6...8464a1
Same deployerThe ethereum.org democracy tutorial: token holders propose a transaction, vote on it for a fixed period, and the contract sends it if it passes.
0x6960a6...8464a1March 26, 2016Association
Same eraThe ethereum.org democracy tutorial: token holders propose a transaction, vote on it for a fixed period, and the contract sends it if it passes.
0x8bfd7f...2aea40March 16, 2016Crowdsale
Same eraThe ethereum.org crowdsale tutorial: contributions run to a deadline against a goal, pay out a separate reward token, and are refunded if the goal is missed.
0x9af2b1...3a4858March 17, 2016Crowdsale
Same eraThe ethereum.org crowdsale tutorial: contributions run to a deadline against a goal, pay out a separate reward token, and are refunded if the goal is missed.
0xb83820...872c31March 24, 2016Contract 0xdbbf29...30cace
Same eraBlock-height timelock (Homestead, Apr 2016) that releases its full ETH balance to a fixed beneficiary at releaseBlock, self-scheduling a wake-up via Piper Merri
0xdbbf29...30caceApril 4, 2016Contract 0x118a31...f45f0a
Same eraBlock-height timelock (Homestead, Apr 2016) that releases its full ETH balance to a fixed beneficiary at releaseBlock, self-scheduling a wake-up via Piper Merri
0x118a31...f45f0aApril 4, 2016