Address Contract Verified
Address
0xc1DCb196BA862B337Aa23eDA1Cb9503C0801b955
Balance
0 ETH
Nonce
7952
Code Size
1607 bytes
Creator
0x98B2920D...919e at tx 0xa30da055...803cc2
Proxy
EIP-1967 Proxy Implementation: 0xd883C8bA...3d79
Indexed Transactions
0
Contract Bytecode
1607 bytes
0x6080604052600436106100385760003560e01c8063378dfd8e1461008f5780635c60da1b146100b15780639ded06df146100fc5761003f565b3661003f57005b60006100697f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b90503660008037600080366000845af43d6000803e80801561008a573d6000f35b3d6000fd5b34801561009b57600080fd5b506100af6100aa366004610435565b61011b565b005b3480156100bd57600080fd5b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546040516001600160a01b03909116815260200160405180910390f35b34801561010857600080fd5b506100af610117366004610507565b5050565b7f02016836a56b71f0d02689e69e326f4f4c1b9057164ef592671cf0d37c8040c054336001600160a01b0382161461017f576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006101a97f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6001600160a01b0316146101e9576040517f0dc149f000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fb8e1544725348a2fe538aa3da850e3b074cd75bac06629b2beb717eaee8dd707846001600160a01b0316638291286c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561024357600080fd5b505afa158015610257573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061027b9190610579565b146102b2576040517f68155f9a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b837f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55827f02016836a56b71f0d02689e69e326f4f4c1b9057164ef592671cf0d37c8040c0556000846001600160a01b0316639ded06df8460405160240161031a91906105c2565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161036891906105f5565b600060405180830381855af49150503d80600081146103a3576040519150601f19603f3d011682016040523d82523d6000602084013e6103a8565b606091505b50509050806103e3576040517f97905dfb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505050565b80356001600160a01b038116811461040157600080fd5b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060006060848603121561044a57600080fd5b610453846103ea565b9250610461602085016103ea565b9150604084013567ffffffffffffffff8082111561047e57600080fd5b818601915086601f83011261049257600080fd5b8135818111156104a4576104a4610406565b604051601f8201601f19908116603f011681019083821181831017156104cc576104cc610406565b816040528281528960208487010111156104e557600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000806020838503121561051a57600080fd5b823567ffffffffffffffff8082111561053257600080fd5b818501915085601f83011261054657600080fd5b81358181111561055557600080fd5b86602082850101111561056757600080fd5b60209290920196919550909350505050565b60006020828403121561058b57600080fd5b5051919050565b60005b838110156105ad578181015183820152602001610595565b838111156105bc576000848401525b50505050565b60208152600082518060208401526105e1816040850160208701610592565b601f01601f19169190910160400192915050565b60008251610607818460208701610592565b919091019291505056fea264697066735822122084cc8a7ccd85a7b44c7440c5a3f186e664ca625d292613d5b76ebc314035fd8c64736f6c63430008090033
Verified Source Code Full Match
Compiler: v0.8.9+commit.e5eed63a
EVM: london
Optimization: Yes (1000 runs)
Proxy.sol 89 lines
// SPDX-License-Identifier: MIT
pragma solidity 0.8.9;
import { IUpgradable } from '../interfaces/IUpgradable.sol';
contract Proxy {
error InvalidImplementation();
error SetupFailed();
error EtherNotAccepted();
error NotOwner();
error AlreadyInitialized();
// bytes32(uint256(keccak256('eip1967.proxy.implementation')) - 1)
bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;
// keccak256('owner')
bytes32 internal constant _OWNER_SLOT = 0x02016836a56b71f0d02689e69e326f4f4c1b9057164ef592671cf0d37c8040c0;
constructor() {
// solhint-disable-next-line no-inline-assembly
assembly {
sstore(_OWNER_SLOT, caller())
}
}
function init(
address implementationAddress,
address newOwner,
bytes memory params
) external {
address owner;
// solhint-disable-next-line no-inline-assembly
assembly {
owner := sload(_OWNER_SLOT)
}
if (msg.sender != owner) revert NotOwner();
if (implementation() != address(0)) revert AlreadyInitialized();
if (IUpgradable(implementationAddress).contractId() != contractId()) revert InvalidImplementation();
// solhint-disable-next-line no-inline-assembly
assembly {
sstore(_IMPLEMENTATION_SLOT, implementationAddress)
sstore(_OWNER_SLOT, newOwner)
}
// solhint-disable-next-line avoid-low-level-calls
(bool success, ) = implementationAddress.delegatecall(
//0x9ded06df is the setup selector.
abi.encodeWithSelector(0x9ded06df, params)
);
if (!success) revert SetupFailed();
}
// solhint-disable-next-line no-empty-blocks
function contractId() internal pure virtual returns (bytes32) {}
function implementation() public view returns (address implementation_) {
// solhint-disable-next-line no-inline-assembly
assembly {
implementation_ := sload(_IMPLEMENTATION_SLOT)
}
}
// solhint-disable-next-line no-empty-blocks
function setup(bytes calldata data) public {}
// solhint-disable-next-line no-complex-fallback
fallback() external payable {
address implementaion_ = implementation();
// solhint-disable-next-line no-inline-assembly
assembly {
calldatacopy(0, 0, calldatasize())
let result := delegatecall(gas(), implementaion_, 0, calldatasize(), 0, 0)
returndatacopy(0, 0, returndatasize())
switch result
case 0 {
revert(0, returndatasize())
}
default {
return(0, returndatasize())
}
}
}
receive() external payable virtual {
revert EtherNotAccepted();
}
}
IUpgradable.sol 31 lines
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.9;
// General interface for upgradable contracts
interface IUpgradable {
error NotOwner();
error InvalidOwner();
error InvalidCodeHash();
error InvalidImplementation();
error SetupFailed();
error NotProxy();
event Upgraded(address indexed newImplementation);
event OwnershipTransferred(address indexed newOwner);
// Get current owner
function owner() external view returns (address);
function contractId() external pure returns (bytes32);
function implementation() external view returns (address);
function upgrade(
address newImplementation,
bytes32 newImplementationCodeHash,
bytes calldata params
) external;
function setup(bytes calldata data) external;
}
AxelarDepositServiceProxy.sol 15 lines
// SPDX-License-Identifier: MIT
pragma solidity 0.8.9;
import { Proxy } from '../util/Proxy.sol';
contract AxelarDepositServiceProxy is Proxy {
function contractId() internal pure override returns (bytes32) {
return keccak256('axelar-deposit-service');
}
// @dev This function is for receiving refunds when refundAddress was 0x0
// solhint-disable-next-line no-empty-blocks
receive() external payable override {}
}
Read Contract
implementation 0x5c60da1b → address
Write Contract 2 functions
These functions modify contract state and require a wallet transaction to execute.
init 0x378dfd8e
address implementationAddress
address newOwner
bytes params
setup 0x9ded06df
bytes data
Recent Transactions
No transactions found for this address