Token deposit address for the Faa.st instant exchange, October 2017: its owner calls sweep(token, to) to send the whole balance of any ERC20 onward.
Historical Significance
Faa.st was part of the wave of instant, account-free swap services in 2017, where a customer sent coins to a one-time address and received a different coin back. Contracts like this one are the token side of that model. The design keeps the destination out of the contract entirely: the owner names it with every sweep, so the address can serve any flow without being redeployed. The unused return value is a small reminder that this was production code written quickly in the busiest months of the ICO boom.
Key Facts
Description
The first copy of this contract was deployed on 20 October 2017 by the account Etherscan labels Faa.st, the instant cryptocurrency exchange run by Bitaccess, and that account is recorded as its owner. Each copy acts as a token deposit address: a customer sends tokens in, and the service sweeps them out.
The contract is small and unoptimised. Its constructor records the deployer as owner. sweep(address token, address to) is restricted to the owner by a modifier; it asks the token for the contract's own balance, transfers all of it to the given address and emits Transfer(to, amount). The function is declared to return a uint256 but never assigns it, so it always returns zero. The token interface declares transfer with no return value. The fallback function is empty and non-payable, so ether sent to the address is rejected.
The source was compiled with solc 0.4.13 with the optimizer off; 0.4.12 produces the same code. The runtime code matches the deployed bytecode; only the trailing swarm metadata hash differs, because the EthereumHistory attribution comment changes the source text. Sourcify records this as a partial match and Etherscan shows it as verified.
Source Verified
Byzantium Era
First Metropolis hard fork. Added zk-SNARK precompiles, REVERT opcode, and staticcall.
Bytecode Overview
Verified Source Available
This contract has verified source code.
View Verification ProofShow source code (Solidity)
// Submitted by EthereumHistory (ethereumhistory.com)
pragma solidity ^0.4.11;
contract Token {
function balanceOf(address _owner) constant returns (uint256 balance);
function transfer(address _to, uint256 _value);
}
contract FaastSweeper {
address owner;
event Transfer(address indexed _to, uint256 _value);
modifier onlyOwner() {
require(msg.sender == owner);
_;
}
function FaastSweeper() {
owner = msg.sender;
}
function () {
}
function sweep(address _token, address _to) onlyOwner returns (uint256) {
Token token = Token(_token);
uint256 balance = token.balanceOf(this);
token.transfer(_to, balance);
Transfer(_to, balance);
}
}