Address
0xbf2fbb57c6a5459b58bdfeb9f034fb461c77d7deCurrent Holdings
$0.00
TXs sent
not counted
First Active
2026-05-27
block 26,638,950
Last Active
104 days ago
block 26,696,099
Funded By
not identified
Net worth historyi
31 snapshots · to block 27,024,399
partial matchPrivacyPoolComplexsolc 0.8.28+commit.7893614aruntime partial · creation partial
// SPDX-License-Identifier: Apache-2.0
pragma solidity 0.8.28;
/*
Made with ♥ for 0xBow by
░██╗░░░░░░░██╗░█████╗░███╗░░██╗██████╗░███████╗██████╗░██╗░░░░░░█████╗░███╗░░██╗██████╗░
░██║░░██╗░░██║██╔══██╗████╗░██║██╔══██╗██╔════╝██╔══██╗██║░░░░░██╔══██╗████╗░██║██╔══██╗
░╚██╗████╗██╔╝██║░░██║██╔██╗██║██║░░██║█████╗░░██████╔╝██║░░░░░███████║██╔██╗██║██║░░██║
░░████╔═████║░██║░░██║██║╚████║██║░░██║██╔══╝░░██╔══██╗██║░░░░░██╔══██║██║╚████║██║░░██║
░░╚██╔╝░╚██╔╝░╚█████╔╝██║░╚███║██████╔╝███████╗██║░░██║███████╗██║░░██║██║░╚███║██████╔╝
░░░╚═╝░░░╚═╝░░░╚════╝░╚═╝░░╚══╝╚═════╝░╚══════╝╚═╝░░╚═╝╚══════╝╚═╝░░╚═╝╚═╝░░╚══╝╚═════╝░
https://defi.sucks/
*/
import {IERC20, SafeERC20} from '@oz/token/ERC20/utils/SafeERC20.sol';
import {Constants} from 'contracts/lib/Constants.sol';
import {IPrivacyPoolComplex} from 'interfaces/IPrivacyPool.sol';
import {PrivacyPool} from 'contracts/PrivacyPool.sol';
/**
* @title PrivacyPoolComplex
* @notice ERC20 implementation of Privacy Pool.
*/
contract PrivacyPoolComplex is PrivacyPool, IPrivacyPoolComplex {
using SafeERC20 for IERC20;
// @notice Initializes the state addresses
constructor(
address _entrypoint,
address _withdrawalVerifier,
address _ragequitVerifier,
address _asset
) PrivacyPool(_entrypoint, _withdrawalVerifier, _ragequitVerifier, _asset) {
if (_asset == Constants.NATIVE_ASSET) revert NativeAssetNotSupported();
}
/**
* @notice Handle pulling an ERC20 asset
* @param _sender The address of the user transferring the asset from
* @param _amount The amount of asset being pulled
* @inheritdoc PrivacyPool
*/
function _pull(address _sender, uint256 _amount) internal override(PrivacyPool) {
// This contract does not accept native asset
if (msg.value != 0) revert NativeAssetNotAccepted();
// Pull asset from sender to this contract
IERC20(ASSET).safeTransferFrom(_sender, address(this), _amount);
}
/**
* @notice Handle sending an ERC20 asset
* @param _recipient The address of the user receiving the asset
* @param _amount The amount of asset being sent
* @inheritdoc PrivacyPool
*/
function _push(address _recipient, uint256 _amount) internal override(PrivacyPool) {
// Send asset from this contract to recipient
IERC20(ASSET).safeTransfer(_recipient, _amount);
}
}