Transaction Hash:
Block:
24144679 at Jan-02-2026 04:52:35 AM +UTC
Transaction Fee:
0.000003450994163825 ETH
$0.007101
Gas Used:
111,275 Gas / 0.031013203 Gwei
Emitted Events:
| 4380 |
Proxy.0xefdd379e3e15772fcc7d2a67fa5bbb0790b932724153aded4648307094733b2f( 0xefdd379e3e15772fcc7d2a67fa5bbb0790b932724153aded4648307094733b2f, 0000000000000000000000004c42657ef17fedee046a856c342176646918742e, 0000000000000000000000000000000000000000000000000000000000192f2e, 000000000000000000000000000000000000000000000000000000000000002e, 00000000000000000000000000000000000000000000000000000000000000a0, 000000000000000000000000000000000000000000000000000000006969c413, 0000000000000000000000000000000000000000000000000000000000000018, 2e00000004f8ff00000004f8ff0003000000000007809fb00000000000000000 )
|
| 4381 |
Proxy.0x5c42054bf8b68ffd7f6b6cebc76dd5b2785aebcd6f025bca81076bff72bcd31f( 0x5c42054bf8b68ffd7f6b6cebc76dd5b2785aebcd6f025bca81076bff72bcd31f, 000000000000000000000000000000000000000000000000000000000004f8ff, 0000000000000000000000000000000000000000000000000000000000000003, 0000000000000000000000000000000000000000000000000000000000000000, 0000000000000000000000000000000000000000000000000000000007809fb0 )
|
Account State Difference:
| Address | Before | After | State Difference | ||
|---|---|---|---|---|---|
| 0x3B4D794a...0dfCf5ca7 | (Lighter: ZkLighter) | ||||
|
0x4838B106...B0BAD5f97
Miner
| (Titan Builder) | 18.426809962522025698 Eth | 18.426809962522248248 Eth | 0.00000000000022255 | |
| 0x4c42657e...46918742e |
0.0001 Eth
Nonce: 0
|
0.000096549005836175 Eth
Nonce: 1
| 0.000003450994163825 |
Execution Trace
Proxy.d20191bd( )
0xe5fb592ef1b620909000af0d5fb55a3593026142.d20191bd( )-
0x9307350af47b0c0e7f8ca5ed2d57993af3a6df1d.d20191bd( )
-
// SPDX-License-Identifier: MIT OR Apache-2.0
pragma solidity 0.8.25;
/// @title Interface of the upgradeable contract
/// @author Matter Labs (https://github.com/matter-labs/zksync/blob/master/contracts/contracts/Upgradeable.sol)
interface IUpgradeable {
/// @notice Upgrades target of upgradeable contract
/// @param newTarget New target
/// @param newTargetInitializationParameters New target initialization parameters
function upgradeTarget(address newTarget, bytes calldata newTargetInitializationParameters) external;
}
// SPDX-License-Identifier: MIT OR Apache-2.0
pragma solidity 0.8.25;
/// @title Ownable Contract
/// @author Matter Labs (https://github.com/matter-labs/zksync/blob/master/contracts/contracts/Ownable.sol)
contract Ownable {
/// @dev Storage position of the masters address (keccak256('eip1967.proxy.admin') - 1)
bytes32 private constant MASTER_POSITION = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;
/// @notice Contract constructor
/// @dev Sets msg sender address as masters address
/// @param masterAddress Master address
constructor(address masterAddress) {
require(masterAddress != address(0), "1b"); // oro11 - master address can't be zero address
setMaster(masterAddress);
}
/// @notice Check if specified address is master
/// @param _address Address to check
function requireMaster(address _address) internal view {
require(_address == getMaster(), "1c"); // oro11 - only by master
}
/// @notice Returns contract masters address
/// @return master Master's address
function getMaster() public view returns (address master) {
bytes32 position = MASTER_POSITION;
assembly {
master := sload(position)
}
}
/// @dev Sets new masters address
/// @param _newMaster New master's address
function setMaster(address _newMaster) internal {
bytes32 position = MASTER_POSITION;
assembly {
sstore(position, _newMaster)
}
}
/// @notice Transfer mastership of the contract to new master
/// @param _newMaster New masters address
function transferMastership(address _newMaster) external {
requireMaster(msg.sender);
require(_newMaster != address(0), "1d"); // otp11 - new masters address can't be zero address
setMaster(_newMaster);
}
}
// SPDX-License-Identifier: MIT OR Apache-2.0
pragma solidity 0.8.25;
import "./Ownable.sol";
import "./IUpgradeable.sol";
/// @title Proxy Contract
/// @author Matter Labs (https://github.com/matter-labs/zksync/blob/master/contracts/contracts/Proxy.sol)
/// @notice Modified to not implement UpgradeableMaster, UpgradeGatekeeper implements the UpgradeableMaster interface
contract Proxy is IUpgradeable, Ownable {
/// @dev Storage position of "target" (actual implementation address: keccak256('eip1967.proxy.implementation') - 1)
bytes32 private constant TARGET_POSITION = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;
/// @notice Contract constructor
/// @dev Calls Ownable contract constructor and initialize target
/// @param target Initial implementation address
/// @param targetInitializationParameters Target initialization parameters
constructor(address target, bytes memory targetInitializationParameters) Ownable(msg.sender) {
setTarget(target);
(bool initializationSuccess, ) = getTarget().delegatecall(abi.encodeWithSignature("initialize(bytes)", targetInitializationParameters));
require(initializationSuccess, "uin11"); // uin11 - target initialization failed
}
/// @notice Intercepts initialization calls
function initialize(bytes calldata) external pure {
revert("ini11"); // ini11 - interception of initialization call
}
/// @notice Intercepts upgrade calls
function upgrade(bytes calldata) external pure {
revert("upg11"); // upg11 - interception of upgrade call
}
/// @notice Returns target of contract
/// @return target Actual implementation address
function getTarget() public view returns (address target) {
bytes32 position = TARGET_POSITION;
assembly {
target := sload(position)
}
}
/// @notice Sets new target of contract
/// @param _newTarget New actual implementation address
function setTarget(address _newTarget) internal {
bytes32 position = TARGET_POSITION;
assembly {
sstore(position, _newTarget)
}
}
/// @notice Upgrades target
/// @param newTarget New target
/// @param newTargetUpgradeParameters New target upgrade parameters
function upgradeTarget(address newTarget, bytes calldata newTargetUpgradeParameters) external override {
requireMaster(msg.sender);
setTarget(newTarget);
(bool upgradeSuccess, ) = getTarget().delegatecall(abi.encodeWithSignature("upgrade(bytes)", newTargetUpgradeParameters));
require(upgradeSuccess, "ufu11"); // ufu11 - target upgrade failed
}
/// @notice Performs a delegatecall to the contract implementation
/// @dev Fallback function allowing to perform a delegatecall to the given implementation
/// This function will return whatever the implementation call returns
function _fallback() internal {
address _target = getTarget();
assembly {
// The pointer to the free memory slot
let ptr := mload(0x40)
// Copy function signature and arguments from calldata at zero position into memory at pointer position
calldatacopy(ptr, 0x0, calldatasize())
// Delegatecall method of the implementation contract, returns 0 on error
let result := delegatecall(gas(), _target, ptr, calldatasize(), 0x0, 0)
// Get the size of the last return data
let size := returndatasize()
// Copy the size length of bytes from return data at zero position to pointer position
returndatacopy(ptr, 0x0, size)
// Depending on result value
switch result
case 0 {
// End execution and revert state changes
revert(ptr, size)
}
default {
// Return data with length of size at pointers position
return(ptr, size)
}
}
}
/// @notice Will run when no functions matches call data
fallback() external payable {
_fallback();
}
/// @notice Same as fallback but called when calldata is empty
receive() external payable {
_fallback();
}
}