ETH Price: $2,537.21 (+0.70%)

Transaction Decoder

Block:
12371605 at May-05-2021 02:49:35 AM +UTC
Transaction Fee:
0.001068488 ETH $2.71
Gas Used:
23,228 Gas / 46 Gwei

Emitted Events:

198 Proxy.Received( value=197930000000000000, sender=[Sender] 0x340d693ed55d7ba167d184ea76ea2fd092a35bdc, data=0x )

Account State Difference:

  Address   Before After State Difference Code
0x340d693E...092a35BDc
(Uphold.com)
1,703.114418877061293257 Eth
Nonce: 574576
1,702.915420389061293257 Eth
Nonce: 574577
0.198998488
0xd21C8853...5ddb84E18 0.165362087893668785 Eth0.363292087893668785 Eth0.19793
(Ethermine)
859.88819143154297515 Eth859.88925991954297515 Eth0.001068488

Execution Trace

ETH 0.19793 Proxy.CALL( )
pragma solidity ^0.6.12;

// Copyright (C) 2018  Argent Labs Ltd. <https://argent.xyz>

// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.

// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.

// You should have received a copy of the GNU General Public License
// along with this program.  If not, see <http://www.gnu.org/licenses/>.

// SPDX-License-Identifier: GPL-3.0-only

/**
 * @title Proxy
 * @notice Basic proxy that delegates all calls to a fixed implementing contract.
 * The implementing contract cannot be upgraded.
 * @author Julien Niset - <[email protected]>
 */
contract Proxy {

    address implementation;

    event Received(uint indexed value, address indexed sender, bytes data);

    constructor(address _implementation) public {
        implementation = _implementation;
    }

    fallback() external payable {
        // solhint-disable-next-line no-inline-assembly
        assembly {
            let target := sload(0)
            calldatacopy(0, 0, calldatasize())
            let result := delegatecall(gas(), target, 0, calldatasize(), 0, 0)
            returndatacopy(0, 0, returndatasize())
            switch result
            case 0 {revert(0, returndatasize())}
            default {return (0, returndatasize())}
        }
    }

    receive() external payable {
        emit Received(msg.value, msg.sender, msg.data);
    }
}