A 132-byte contract with one function, sendBack(), which immediately returns any ether sent with the call.
Historical Significance
An echo test for value transfer, and one of the smallest useful things a 2015 contract could do. Sending ether and receiving it back within one transaction exercises the whole round trip of call value, the send opcode and the caller's balance accounting, which was the quickest way to confirm a client and toolchain were wired up correctly before any real logic was written.
Context
Deployed 2015-09-02 by 0xee291517c6290faf94dee71647c27b9737b2a2d2. One instance of this runtime is known. A near-identical 135-byte variant by the same pattern exists in the archive and is still unmatched. Source recovered by exact runtime bytecode match, verified on Sourcify and Etherscan.
Key Facts
Description
sendBack() at selector 0xd1e15045 checks whether the call carried any ether and returns straight away if it did not. Otherwise it calls msg.sender.send(msg.value), refunding the exact amount in the same transaction. There is no state, no owner and no fallback, so ether that arrives by any other route is stranded, and the send return value is not checked.
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)
contract Bounce {
function sendBack() {
if (msg.value == 0) { return; }
msg.sender.send(msg.value);
}
}External Links
Related contracts
Contract 0x578713...7d7060
Same deployerThe Solidity tutorial subcurrency, compiled without the optimiser
0x578713...7d7060September 3, 2015Coin
Same deployerThe Solidity tutorial subcurrency, with the balance reader restricted to the minter
0x4d0cd1...4e6577September 3, 2015Coin
Same deployerThe subcurrency example from the Solidity documentation with a payable deposit bolted on.
0x8d9bba...d771b5September 4, 2015Bank
Same deployerA 534-byte deposit ledger: deposit() records the caller's ether, a timestamp and an id, and only the owner can read a balance back. No withdrawal function exists.
0x2e7145...3f0bf6September 4, 2015Bank
Same deployerA 541-byte deposit ledger: deposit() records the caller's ether and a timestamp, and only the owner can read a balance back. No withdrawal function exists.
0x8c953f...984534September 5, 2015Bank
Same deployerA 532-byte deposit ledger: deposit() records the caller's ether and a timestamp, and only the owner can read a balance back. No withdrawal function exists.
0x76000f...0bae2eSeptember 5, 2015