Back to Home

Forwarder

0x46ca6066a6e5...ac7e00a3241f
ByzantiumSource VerifiedEdit this contract
Deployed January 29, 2018 (8 years ago)Block 4,991,636

Deposit forwarder that asks a controller contract for its destination, forwards every incoming payment there, and logs the sender, the amount and the calldata.

Byzantium EraVerified Source

Historical Significance

Exchange deposit systems of this period had to choose between burning a payout address into every deployed contract or paying for a storage write per contract. This family does neither: the destination is read from a shared controller at the moment funds arrive. The event carries the full calldata alongside the value, so an operator could attribute a deposit even when the sender attached data the forwarder itself never interpreted.

Key Facts
Deployment Block
4,991,636
Deployment Date
Jan 29, 2018, 03:26 AM
Code Size
1.2 KB

Description

A per-user deposit address. The payable fallback calls acceptFrom on its controller to register the incoming value, reads the current payout address from destination(), transfers the full msg.value to it, and emits Forwarded with the sender, this contract, the destination, the value and the raw calldata. Two sweep helpers cover tokens sent to the address by mistake: flushTokens pulls an ERC20 balance to the same destination, and flush moves any stranded ether. hasController reports whether a given address is the controller this forwarder trusts.

The design keeps the payout address out of the deployed bytecode. Each forwarder holds only a controller reference, so an exchange can redirect every deposit address it has ever handed out by updating one contract, without redeploying or asking users for a new address.

Source Verified

Solidityeh_crack_source_verified
Compiler: v0.4.18

Bytecode Overview

Opcodes1,202
Unique Opcodes135
Jump Instructions55
Storage Operations10

External Links