Back to Home

Partnership

Wallet
0x12b0621d90c6...64c46ec4291d
HomesteadContract #20KExact Bytecode MatchEdit this contract
Deployed June 27, 2016 (9 years ago)Block 1,781,342

Equal-share partnership pool by Jamie Hale, deployed three weeks before the Ethereum hard fork to co-invest in The DAO. Still holds 12 ETH.

Homestead EraVerified Source

Historical Significance

An early example of a fully-templated, open-source DAO/multisig pattern on Ethereum, designed and used during the very heat of the DAO crisis. Predates Gnosis Multisig (Dec 2016), Aragon (2017), and most of the DAO tooling ecosystem. The same template was used by multiple groups during 2016 to pool ETH for The DAO and other early ICOs. Jamie Hale's repo (and the related celeduc fork) is one of the cleanest period-accurate references for how on-chain partnership/multisig logic was written in pure Solidity v0.3.x before any of the standard libraries existed.

Context

Deployed 27 June 2016, in the brief window between the DAO hack (17 June 2016) and the Ethereum hard fork (20 July 2016). Solidity was at v0.3.2, optimizer was on by default in truffle, and modifiers used the single-underscore syntax (_) rather than the modern _;. The throw keyword was still the standard error mechanism; revert would not exist until Solidity v0.4.10. The contract pre-dates Gnosis MultiSigWallet, OpenZeppelin's roles, and the Consensys MultiSig template.

Key Facts
Deployment Block
1,781,342
Deployment Date
Jun 27, 2016, 06:19 PM
Code Size
4.3 KB
Gas at Deploy
1,404,870

Description

Partnership is an equal-share investment pool from Jamie Hale's open-source dao_partnership project. Each partner buys in by paying sharePrice wei into the contract; once every pre-registered partner has paid, funded flips true and the partnership goes live. From that point, partners propose transactions with proposeTransaction(to, value, data, description) and every other partner must call confirmTransaction(id) before executeTransaction(id) will dispatch the call. The contract supports proportional dividends via distribute(addr, amount) and distributeEvenly(amount), partner loans repayable via repayLoan(addr, value), and a pull-based withdraw pattern through withdrawableAmounts(addr) and withdraw(uint). dissolve(addr) lets the last living partner shut the contract down and forward the remainder.

Deployed 27 June 2016 at block 1,781,342, four days after the DAO recursive-call exploit drained 3.6M ETH and three weeks before the Ethereum community executed the hard fork at block 1,920,000 that restored those funds. The deployer 0xd69104404a21cf359985c21988b959ace3880c83 subsequently sent transactions to The DAO at 0xbb9bc244d798123fde783fcc1c72d3bb8c189413, confirming this Partnership was used to pool ETH from multiple investors for a co-investment in The DAO.

The 12 ETH balance has been stuck in the contract since the hard fork: dissolution requires unanimous partner consent, and at least one of the participating keys is presumably lost or unreachable.

Source matches commit 8d6b374ec5 of jamiehale/dao_partnership (the last commit before deployment). Compiled with Solidity v0.3.2+commit.81ae2a78 (optimizer ON), which produces a byte-for-byte runtime match.

Source Verified

SolidityExact bytecode match(4,417 bytes)
Compiler: v0.3.2+

Source from jamiehale/dao_partnership at commit 8d6b374ec5 (the last commit before the 27 June 2016 deployment). soljson-v0.3.2 reproduces a byte-for-byte runtime match (SHA-256 8a2bdb0db955f942eb60d75d0dd36f5a3180431c55dbdde895bb968f27f9f5cb). v0.3.0/v0.3.1 also match; v0.3.3 onward diverged.

Heuristic Analysis

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

Detected Type: Wallet
Contains SELFDESTRUCT opcode

Bytecode Overview

Opcodes4,417
Unique Opcodes221
Jump Instructions254
Storage Operations163

External Links