ETH Price: $3,146.91 (+0.88%)
Gas: 3 Gwei

Contract

0x57Ac566497ec1A54BEf0a10Ac8a7f3E10d1d34A9
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Set Trait On Mul...178919862023-08-11 13:37:11337 days ago1691761031IN
0x57Ac5664...10d1d34A9
0 ETH0.1094862622.27585879
Set Trait On Mul...178919822023-08-11 13:36:23337 days ago1691760983IN
0x57Ac5664...10d1d34A9
0 ETH0.1695104423.01650982
Set Trait On Mul...178919772023-08-11 13:35:23337 days ago1691760923IN
0x57Ac5664...10d1d34A9
0 ETH0.1533420520.5674651
Set Trait On Mul...178771162023-08-09 11:41:59339 days ago1691581319IN
0x57Ac5664...10d1d34A9
0 ETH0.0016017320.81171526
Add Trait178770632023-08-09 11:31:23339 days ago1691580683IN
0x57Ac5664...10d1d34A9
0 ETH0.0035442822.18711272

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Block From To
178707492023-08-08 14:17:59339 days ago1691504279  Contract Creation0 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
TheProxy

Compiler Version
v0.8.13+commit.abaa5c0e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2023-08-10
*/

// SPDX-License-Identifier: UNLICENSED
pragma solidity 0.8.13;


interface IRegistry {
    function setRegistryAddress(string memory fn, address value) external ;
    function setRegistryBool(string memory fn, bool value) external ;
    function setRegistryUINT(string memory key) external view returns (uint256) ;
    function setRegistryString(string memory fn, string memory value) external ;
    function setAdmin(address user,bool status ) external;
    function setAppAdmin(address app, address user, bool state) external;

    function getRegistryAddress(string memory key) external view returns (address) ;
    function getRegistryBool(string memory key) external view returns (bool);
    function getRegistryUINT(string memory key) external view returns (uint256) ;
    function getRegistryString(string memory key) external view returns (string memory) ;
    function isAdmin(address user) external view returns (bool) ;
    function isAppAdmin(address app, address user) external view returns (bool);
}


contract LookupContract {

    IRegistry           reg = IRegistry(0x1e8150050A7a4715aad42b905C08df76883f396F);

    mapping(address => address) lookups;

    error ContractNameNotInitialised(string contract_name);
    error ContractInfoNotInitialised();

    function find_contract(string memory contract_name) external returns (address) {
        // console.log("find_contract called for:", contract_name);
        address adr = reg.getRegistryAddress(contract_name);
        if (adr == address(0)) revert ContractNameNotInitialised(contract_name);
        lookups[msg.sender] = adr;
        return adr;
    }

    function lookup() external view returns (address) {
        address adr = lookups[msg.sender];
        // console.log("lookup called sender/adr", msg.sender, adr);
        if (adr == address(0)) revert ContractInfoNotInitialised();
        return adr;
    }
}

// import "hardhat/console.sol";

contract TheProxy {

    event ContractInitialised(string contract_name,address dest);

    address immutable public lookup;

    constructor(string memory contract_name, address _lookup) {
        // console.log("TheProxy constructor");
        lookup = _lookup;
        address dest   = LookupContract(lookup).find_contract(contract_name);
        // console.log("proxy installed: dest/ctr_name/lookup", dest, contract_name, lookup);
        emit ContractInitialised(contract_name,dest);
    }

    // fallback(bytes calldata b) external  returns (bytes memory)  {           // For debugging when we want to access "lookup"
    fallback(bytes calldata b) external payable returns (bytes memory)  {
        // console.log("proxy start sender/lookup:", msg.sender, lookup);
        address dest   = LookupContract(lookup).lookup();
        // console.log("proxy delegate:", dest);
        (bool success, bytes memory returnedData) = dest.delegatecall(b);
        require(success, string(returnedData));
        return returnedData; 
    }
  
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"contract_name","type":"string"},{"internalType":"address","name":"_lookup","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"contract_name","type":"string"},{"indexed":false,"internalType":"address","name":"dest","type":"address"}],"name":"ContractInitialised","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"lookup","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

60a060405234801561001057600080fd5b5060405161051438038061051483398101604081905261002f9161014b565b6001600160a01b0381166080819052604051630ef7010760e01b815260009190630ef7010790610063908690600401610236565b6020604051808303816000875af1158015610082573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100a69190610250565b90507fdae89e8aaf1ec707f86c8c99b3c12703e620373ced72c93fa00fa4ffe9534c0f83826040516100d992919061026b565b60405180910390a1505050610295565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561011a578181015183820152602001610102565b83811115610129576000848401525b50505050565b80516001600160a01b038116811461014657600080fd5b919050565b6000806040838503121561015e57600080fd5b82516001600160401b038082111561017557600080fd5b818501915085601f83011261018957600080fd5b81518181111561019b5761019b6100e9565b604051601f8201601f19908116603f011681019083821181831017156101c3576101c36100e9565b816040528281528860208487010111156101dc57600080fd5b6101ed8360208301602088016100ff565b80965050505050506102016020840161012f565b90509250929050565b600081518084526102228160208601602086016100ff565b601f01601f19169290920160200192915050565b602081526000610249602083018461020a565b9392505050565b60006020828403121561026257600080fd5b6102498261012f565b60408152600061027e604083018561020a565b905060018060a01b03831660208301529392505050565b60805161025e6102b66000396000818160270152610155015261025e6000f3fe60806040526004361061001e5760003560e01c8063f5e3542b14610143575b600036606060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f5e3542b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610083573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100a79190610193565b9050600080826001600160a01b031686866040516100c69291906101c3565b600060405180830381855af49150503d8060008114610101576040519150601f19603f3d011682016040523d82523d6000602084013e610106565b606091505b50915091508181906101345760405162461bcd60e51b815260040161012b91906101d3565b60405180910390fd5b50805195506020019350505050f35b34801561014f57600080fd5b506101777f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200160405180910390f35b6000602082840312156101a557600080fd5b81516001600160a01b03811681146101bc57600080fd5b9392505050565b8183823760009101908152919050565b600060208083528351808285015260005b81811015610200578581018301518582016040015282016101e4565b81811115610212576000604083870101525b50601f01601f191692909201604001939250505056fea26469706673582212205b6645ac4c3c8cedfd2dd76cb63c03b67e0e65034b22b320b24da4ae06705e4464736f6c634300080d00330000000000000000000000000000000000000000000000000000000000000040000000000000000000000000b238de0619c7e9aa155d9a69b9e5b0d9b5b412710000000000000000000000000000000000000000000000000000000000000015474f4c44454e5f54524149545f52454749535452590000000000000000000000

Deployed Bytecode

0x60806040526004361061001e5760003560e01c8063f5e3542b14610143575b600036606060007f000000000000000000000000b238de0619c7e9aa155d9a69b9e5b0d9b5b412716001600160a01b031663f5e3542b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610083573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100a79190610193565b9050600080826001600160a01b031686866040516100c69291906101c3565b600060405180830381855af49150503d8060008114610101576040519150601f19603f3d011682016040523d82523d6000602084013e610106565b606091505b50915091508181906101345760405162461bcd60e51b815260040161012b91906101d3565b60405180910390fd5b50805195506020019350505050f35b34801561014f57600080fd5b506101777f000000000000000000000000b238de0619c7e9aa155d9a69b9e5b0d9b5b4127181565b6040516001600160a01b03909116815260200160405180910390f35b6000602082840312156101a557600080fd5b81516001600160a01b03811681146101bc57600080fd5b9392505050565b8183823760009101908152919050565b600060208083528351808285015260005b81811015610200578581018301518582016040015282016101e4565b81811115610212576000604083870101525b50601f01601f191692909201604001939250505056fea26469706673582212205b6645ac4c3c8cedfd2dd76cb63c03b67e0e65034b22b320b24da4ae06705e4464736f6c634300080d0033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000b238de0619c7e9aa155d9a69b9e5b0d9b5b412710000000000000000000000000000000000000000000000000000000000000015474f4c44454e5f54524149545f52454749535452590000000000000000000000

-----Decoded View---------------
Arg [0] : contract_name (string): GOLDEN_TRAIT_REGISTRY
Arg [1] : _lookup (address): 0xb238DE0619C7e9AA155D9a69b9E5b0d9b5b41271

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [1] : 000000000000000000000000b238de0619c7e9aa155d9a69b9e5b0d9b5b41271
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000015
Arg [3] : 474f4c44454e5f54524149545f52454749535452590000000000000000000000


Deployed Bytecode Sourcemap

1976:1067:0:-:0;;;;;;;;;;;;;;;;;;;;2674:12;2775;2807:6;-1:-1:-1;;;;;2792:29:0;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2775:48;;2885:12;2899:25;2928:4;-1:-1:-1;;;;;2928:17:0;2946:1;;2928:20;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2884:64;;;;2967:7;2983:12;2959:38;;;;;-1:-1:-1;;;2959:38:0;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;1976:1067:0;;;-1:-1:-1;1976:1067:0;;;-1:-1:-1;;;;1976:1067:0;2072:31;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1351:32:1;;;1333:51;;1321:2;1306:18;2072:31:0;;;;;;;14:290:1;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:1;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:1:o;309:271::-;492:6;484;479:3;466:33;448:3;518:16;;543:13;;;518:16;309:271;-1:-1:-1;309:271:1:o;585:597::-;697:4;726:2;755;744:9;737:21;787:6;781:13;830:6;825:2;814:9;810:18;803:34;855:1;865:140;879:6;876:1;873:13;865:140;;;974:14;;;970:23;;964:30;940:17;;;959:2;936:26;929:66;894:10;;865:140;;;1023:6;1020:1;1017:13;1014:91;;;1093:1;1088:2;1079:6;1068:9;1064:22;1060:31;1053:42;1014:91;-1:-1:-1;1166:2:1;1145:15;-1:-1:-1;;1141:29:1;1126:45;;;;1173:2;1122:54;;585:597;-1:-1:-1;;;585:597:1:o

Swarm Source

ipfs://5b6645ac4c3c8cedfd2dd76cb63c03b67e0e65034b22b320b24da4ae06705e44

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.