Back to Home

NexoDepositWallet

Unclassified
0x4f38ef98a35d...ae277fcb2516
ByzantiumSource VerifiedEdit this contract
Deployed July 9, 2018 (8 years ago)Block 5,933,215

Nexo customer deposit wallet from July 2018: a hardcoded owner appoints a spender, and only the spender can move the ether or tokens it holds.

Byzantium EraVerified Source

Historical Significance

Nexo launched in 2018 as a lender taking crypto as collateral, and these wallets are where customers' collateral first landed. The design separates a cold, permanent authority from a hot, replaceable one: the owner key is baked into every wallet and can only name a spender, while the spender key that handles daily sweeps can be rotated without redeploying anything. That split is a common pattern in exchange and custodian deposit systems, shown here in about as few lines as it can be written.

Key Facts
Deployment Block
5,933,215
Deployment Date
Jul 9, 2018, 12:50 PM
Code Size
711.0 B
Gas at Deploy
260,966
Transactions by Year
20211
20221

Description

Each copy of this contract is a deposit address deployed by the account Etherscan labels Nexo 3, for the crypto lending platform Nexo. The wallet accepts ether through an empty payable fallback and holds whatever tokens are sent to it until an authorised key moves them.

Authority is split in two. The owner is a constant compiled into the bytecode, an address Etherscan labels Nexo: WBTC Merchant Deposit Address, so it can never change. The owner's only power is setSpender, which records a spender in the contract's single storage slot. The spender, in turn, is the only address that can call send(to, amount) to move ether or sendTokens(token, to, amount) to call transfer on any ERC20. Both take the destination as an argument. The token interface declares transfer with no return value, so the wallet works with tokens that return nothing as well as standard ones.

The first copy dates from 9 July 2018. The source was compiled with solc 0.4.24 with the optimizer on at 200 runs. 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

Solidityeh_crack_source_verified
Compiler: v0.4.24
Heuristic Analysis

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

Detected Type: Unclassified

Bytecode Overview

Opcodes711
Unique Opcodes127
Jump Instructions41
Storage Operations5

External Links