COOK COOK N/A
Last Block- HealthChecking Head-
BT--:--
ConsensusQBFT Chain ID20261001 Nodes0/0
Gas price- Gwei
Cookchain Cookchain

Cookchain Explorer

Contract Details

Overview

COOK BALANCE

Loading…

TOKEN NAME

EVM Contract

TOTAL SUPPLY

Not available

More Info

CONTRACT ADDRESS

0x06a3476f96546542ad45327766c20a9bda1bdd53

CONTRACT CREATOR

0xdf6e7e94ed8c6fe335c28a8ec50381e9172f7d30
Creation transaction

TOKEN TRACKER

Checking ERC-20 metadata…

Contract Info

SOURCE CODE

✓ Verified

TOKEN DECIMALS

Not available

Market and multichain values require verified data feeds.

Latest Contract Transactions

Loading indexed transactions…

Transaction HashActionBlockAgeFromToAmountTxn Fee
Raw Contract Data · JSON
{
  "id": "0x06a3476f96546542ad45327766c20a9bda1bdd53",
  "contract": "0x06a3476f96546542ad45327766c20a9bda1bdd53",
  "name": "EVM Contract",
  "type": "contract",
  "bytecode": "0x608080604052600436101561001357600080fd5b600090813560e01c9081632640c54614610147575080634178bb3b1461010c5780638da5cb5b146100c7578063aa1fce69146100955763c30aaad21461005857600080fd5b3461009257806003193601126100925760206040517fa958f9628dcbf52a103e4399714805811ed312515684ec4b1031599dd31071098152f35b80fd5b5034610092576020366003190112610092576020906004358152808252604060018060a01b0391205416604051908152f35b50346100925780600319360112610092576040517f000000000000000000000000df6e7e94ed8c6fe335c28a8ec50381e9172f7d306001600160a01b03168152602090f35b503461009257806003193601126100925760206040517f80caa35bee32d9ad74dd17a5aa09bda24847b145200798eba26219e4133234288152f35b9050346107c9576101203660031901126107c9576004359063ffffffff82168092036107c157602435916001600160a01b038316918284036107bd576044359060ff821680920361042f5760643567ffffffffffffffff81116107b9576101b29036906004016107cd565b919060843567ffffffffffffffff81116107c5576101d49036906004016107cd565b909760a4356001600160a01b038116939290918b918584036107c15760c4356001600160a01b0381169c9095908d87036107bd5760e4356001600160a01b03811697908881036107b9576101043567ffffffffffffffff81116106435761023f9036906004016107cd565b7f000000000000000000000000df6e7e94ed8c6fe335c28a8ec50381e9172f7d306001600160a01b03169c9099919850338d900361078a57508f156107585760128e1161071c573b15159182610711575b5081610706575b50156106d2578e998c8e60405190602082019283526040820152604081526102c0606082610800565b519020808c5260208c90526040909b20546001600160a01b031661069e57468d036104f457505050506103256102f7368585610838565b602081519101207f80caa35bee32d9ad74dd17a5aa09bda24847b145200798eba26219e4133234281461087f565b3b151580610475575b15610442578a936103739261036e92604051928c6020850152600160408501526001606085015260808401526080835261036960a084610800565b6108bd565b610939565b976001600160a01b03891690813b1561043e5783606492604051968795869463c0c53b8b60e01b86526004860152602485015260448401525af180156104335761041a575b507f8bc7ccba34f9800ed74fc2b07a15952b8f4c513834ce9166e2e01bee6b030a7c91604060209781935b81528089522080546001600160a01b0319166001600160a01b039097169687179055815186815280880191909152a3604051908152f35b610425878092610800565b61042f57386103b8565b8580fd5b6040513d89823e3d90fd5b8380fd5b60405162461bcd60e51b815260206004820152600b60248201526a3bb937b733903a37b5b2b760a91b6044820152606490fd5b5060405163313ce56760e01b81526020816004818d5afa80156104e95788918d916104a5575b5060ff161461032e565b9150506020813d6020116104e1575b816104c160209383610800565b810103126104dd575160ff811681036104dd57879060ff61049b565b8b80fd5b3d91506104b4565b6040513d8e823e3d90fd5b929895919490935061053861050a368484610838565b602081519101207fa958f9628dcbf52a103e4399714805811ed312515684ec4b1031599dd31071091461087f565b82151580610693575b8061068a575b8061067f575b15610647578a8f989261036e9261058994604051936020850152600160408501526001606085015260808401526080835261036960a084610800565b9b6001600160a01b038d1694853b15610643576105d0966105e289956040519b8c9a8b998a9863e80a7c7960e01b8a528a60048b015260c060248b015260c48a0191610918565b87810360031901604489015291610918565b926064850152608484015260a483015203925af18015610433576040926020987f8bc7ccba34f9800ed74fc2b07a15952b8f4c513834ce9166e2e01bee6b030a7c95938593610633575b50906103e3565b8161063d91610800565b3861062c565b8780fd5b60405162461bcd60e51b815260206004820152601060248201526f696e76616c6964206d6574616461746160801b6044820152606490fd5b50601889111561054d565b50881515610547565b506060831115610541565b60405162461bcd60e51b815260206004820152600c60248201526b726f7574652065786973747360a01b6044820152606490fd5b60405162461bcd60e51b815260206004820152600c60248201526b6d697373696e6720636f726560a01b6044820152606490fd5b90503b151538610297565b3b1515915038610290565b60405162461bcd60e51b8152602060048201526014602482015273756e737570706f7274656420646563696d616c7360601b6044820152606490fd5b60405162461bcd60e51b815260206004820152600a6024820152691e995c9bc8185cdcd95d60b21b6044820152606490fd5b62461bcd60e51b815260206004820152600a6024820152696f776e6572206f6e6c7960b01b6044820152606490fd5b8680fd5b8480fd5b8280fd5b8880fd5b5080fd5b9181601f840112156107fb5782359167ffffffffffffffff83116107fb57602083818601950101116107fb57565b600080fd5b90601f8019910116810190811067ffffffffffffffff82111761082257604052565b634e487b7160e01b600052604160045260246000fd5b92919267ffffffffffffffff82116108225760405191610862601f8201601f191660200184610800565b8294818452818301116107fb578281602093846000960137010152565b1561088657565b60405162461bcd60e51b815260206004820152600f60248201526e756e657870656374656420636f646560881b6044820152606490fd5b60405193929184918190602084013781016000602082015282519260005b8481106109015750506108ff9260209101016000815203601f198101845283610800565b565b6020828201810151848301820152879450016108db565b908060209392818452848401376000828201840152601f01601f1916010190565b6020815191016000f0906001600160a01b0382161561095457565b60405162461bcd60e51b815260206004820152600f60248201526e18dc99585d1a5bdb8819985a5b1959608a1b6044820152606490fdfea264697066735822122071dde2035fbd7194a0c4be267b1aac08f09f08d880a7bf8f556247f49b8869de64736f6c634300081e0033",
  "is_contract": true,
  "verified": true,
  "verification": {
    "address": "0x06a3476f96546542ad45327766c20a9bda1bdd53",
    "compiler": "0.8.30+commit.73712a01.Emscripten.clang",
    "contract": "contracts/TokenRouteDeployment.sol:TokenRouteDeployment",
    "verified": true,
    "match": "runtime-with-metadata",
    "creation_verified": true,
    "factory_deployment": null,
    "constructor_arguments": "000000000000000000000000df6e7e94ed8c6fe335c28a8ec50381e9172f7d3080caa35bee32d9ad74dd17a5aa09bda24847b145200798eba26219e413323428a958f9628dcbf52a103e4399714805811ed312515684ec4b1031599dd3107109",
    "verified_at": "2026-10-03T15:12:26.708Z",
    "chain_id": 20261001,
    "abi": [
      {
        "inputs": [
          {
            "internalType": "address",
            "name": "admin",
            "type": "address"
          },
          {
            "internalType": "bytes32",
            "name": "collateral",
            "type": "bytes32"
          },
          {
            "internalType": "bytes32",
            "name": "synthetic",
            "type": "bytes32"
          }
        ],
        "stateMutability": "nonpayable",
        "type": "constructor"
      },
      {
        "anonymous": false,
        "inputs": [
          {
            "indexed": true,
            "internalType": "uint32",
            "name": "origin",
            "type": "uint32"
          },
          {
            "indexed": true,
            "internalType": "address",
            "name": "asset",
            "type": "address"
          },
          {
            "indexed": false,
            "internalType": "address",
            "name": "router",
            "type": "address"
          },
          {
            "indexed": false,
            "internalType": "uint8",
            "name": "decimals",
            "type": "uint8"
          }
        ],
        "name": "RouteCreated",
        "type": "event"
      },
      {
        "inputs": [],
        "name": "collateralHash",
        "outputs": [
          {
            "internalType": "bytes32",
            "name": "",
            "type": "bytes32"
          }
        ],
        "stateMutability": "view",
        "type": "function"
      },
      {
        "inputs": [
          {
            "internalType": "uint32",
            "name": "origin",
            "type": "uint32"
          },
          {
            "internalType": "address",
            "name": "asset",
            "type": "address"
          },
          {
            "internalType": "uint8",
            "name": "decimals",
            "type": "uint8"
          },
          {
            "internalType": "string",
            "name": "name",
            "type": "string"
          },
          {
            "internalType": "string",
            "name": "symbol",
            "type": "string"
          },
          {
            "internalType": "address",
            "name": "mailbox",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "hook",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "ism",
            "type": "address"
          },
          {
            "internalType": "bytes",
            "name": "code",
            "type": "bytes"
          }
        ],
        "name": "deploy",
        "outputs": [
          {
            "internalType": "address",
            "name": "router",
            "type": "address"
          }
        ],
        "stateMutability": "nonpayable",
        "type": "function"
      },
      {
        "inputs": [],
        "name": "owner",
        "outputs": [
          {
            "internalType": "address",
            "name": "",
            "type": "address"
          }
        ],
        "stateMutability": "view",
        "type": "function"
      },
      {
        "inputs": [
          {
            "internalType": "bytes32",
            "name": "",
            "type": "bytes32"
          }
        ],
        "name": "routers",
        "outputs": [
          {
            "internalType": "address",
            "name": "",
            "type": "address"
          }
        ],
        "stateMutability": "view",
        "type": "function"
      },
      {
        "inputs": [],
        "name": "syntheticHash",
        "outputs": [
          {
            "internalType": "bytes32",
            "name": "",
            "type": "bytes32"
          }
        ],
        "stateMutability": "view",
        "type": "function"
      }
    ],
    "input": {
      "language": "Solidity",
      "sources": {
        "contracts/AutomaticTokenRoutesV2Fresh.sol": {
          "content": "// SPDX-License-Identifier: MIT\r\npragma solidity 0.8.30;\r\ninterface IAutoToken { function decimals() external view returns(uint8); function name() external view returns(string memory); function symbol() external view returns(string memory); }\r\ninterface IAutoCollateral {function initialize(address,address,address) external; function enrollRemoteRouter(uint32,bytes32) external;}\r\ninterface IAutoSynthetic {function initialize(uint256,string calldata,string calldata,address,address,address) external;}\r\ninterface ILegacyRoutes { function routers(bytes32) external view returns(address); function administrator() external view returns(address); }\ncontract AutomaticTokenRoutesV2Fresh {\r\n    struct Plan {uint32 origin; address asset; uint8 decimals; string name; string symbol; address localRouter; address remoteRouter;}\r\n    address public immutable administrator;\n    ILegacyRoutes public immutable legacyFactory;\r\n    uint32 public immutable remoteDomain;\r\n    address public immutable mailbox;\r\n    address public immutable hook;\r\n    address public immutable ism;\r\n    bytes32 public immutable collateralHash;\r\n    bytes32 public immutable syntheticHash;\r\n    address[4] public signers;\r\n    address public peer;\r\n    mapping(bytes32=>address) public routers;\r\n    mapping(bytes32=>bytes32) public approvedPlans;\r\n    event FactoryCreated(address indexed administrator);\r\n    event RouteRequested(uint32 indexed origin,address indexed asset,address requester);\r\n    event PeerConfigured(address peer);\r\n    event AutomaticRouteCreated(uint32 indexed origin,address indexed asset,address router,address remoteRouter,uint8 decimals,bytes32 digest);\r\n    constructor(address admin,uint32 remote,address m,address h,address i,bytes32 collateral,bytes32 synthetic,address[4] memory validators,address legacy) {\r\n        require(block.chainid<=type(uint32).max&&remote!=block.chainid&&remote!=0,\"domain\");\r\n        require(admin!=address(0)&&m.code.length>0&&h.code.length>0&&i.code.length>0,\"core\");\r\n        for(uint256 j;j<4;j++){require(validators[j]!=address(0),\"signer\");for(uint256 k;k<j;k++)require(validators[j]!=validators[k],\"duplicate signer\");}\r\n        require(legacy==address(0)||(legacy.code.length>0 && ILegacyRoutes(legacy).administrator()==admin),\"legacy factory\");legacyFactory=ILegacyRoutes(legacy);administrator=admin;remoteDomain=remote;mailbox=m;hook=h;ism=i;collateralHash=collateral;syntheticHash=synthetic;signers=validators;emit FactoryCreated(admin);\r\n    }\r\n    function configurePeer(address remoteFactory) external {require(msg.sender==administrator&&peer==address(0)&&remoteFactory!=address(0),\"peer locked\");peer=remoteFactory;emit PeerConfigured(remoteFactory);}\r\n    function requestRoute(address asset) external {require(peer!=address(0)&&asset.code.length>0,\"not ready\");require(routers[key(uint32(block.chainid),asset)]==address(0)&&legacyRouter(key(uint32(block.chainid),asset))==address(0),\"route exists\");IAutoToken t=IAutoToken(asset);require(t.decimals()<=18&&bytes(t.name()).length>0&&bytes(t.name()).length<=60&&bytes(t.symbol()).length>0&&bytes(t.symbol()).length<=24,\"metadata\");emit RouteRequested(uint32(block.chainid),asset,msg.sender);}\r\n    function legacyRouter(bytes32 k) private view returns(address){return address(legacyFactory)==address(0)?address(0):legacyFactory.routers(k);}\n    function bridgedName(string memory original,uint32 origin) public pure returns(string memory) {\n        string memory label;\n        if(origin==137)label=\"Polygon\";else if(origin==143)label=\"Monad\";else if(origin==43114)label=\"Avalanche\";else if(origin==59144)label=\"Linea\";else if(origin==146)label=\"Sonic\";else if(origin==250)label=\"Fantom\";else if(origin==42161)label=\"Arbitrum\";else if(origin==56)label=\"BSC\";else if(origin==8453)label=\"Base\";else if(origin==4663)label=\"Robinhood\";else if(origin==5042)label=\"Arc\";else if(origin==20261001)label=\"Cookchain\";\n        else {uint32 value=origin;bytes memory digits=new bytes(10);uint256 count;do{digits[count++]=bytes1(uint8(48+value%10));value/=10;}while(value>0);bytes memory result=new bytes(count);for(uint256 i;i<count;i++)result[i]=digits[count-1-i];label=string(result);}\n        return string.concat(original,\" (Bridged from \",label,\")\");\n    }\n    function key(uint32 origin,address asset) public pure returns(bytes32){return keccak256(abi.encode(origin,asset));}\r\n    function predict(uint32 origin,address asset,uint8 decimals,bytes calldata code) public view returns(address){bool original=origin==block.chainid;require(keccak256(code)==(original?collateralHash:syntheticHash),\"code\");bytes memory init=original?bytes.concat(code,abi.encode(asset,uint256(1),uint256(1),mailbox)):bytes.concat(code,abi.encode(decimals,uint256(1),uint256(1),mailbox));return address(uint160(uint256(keccak256(abi.encodePacked(bytes1(0xff),address(this),key(origin,asset),keccak256(init))))));}\r\n    function digest(Plan calldata p) public view returns(bytes32){require(peer!=address(0),\"peer missing\");bool first=block.chainid<remoteDomain;return keccak256(abi.encode(\"COOKCHAIN_AUTOROUTE_V2\",first?uint32(block.chainid):remoteDomain,first?remoteDomain:uint32(block.chainid),first?address(this):peer,first?peer:address(this),p.origin,p.asset,p.decimals,p.name,p.symbol,first?p.localRouter:p.remoteRouter,first?p.remoteRouter:p.localRouter));}\r\n    function authorize(bytes32 hash,bytes[] calldata signatures) private view {require(signatures.length==3,\"three signatures\");bytes32 signed=keccak256(abi.encodePacked(\"\\x19Ethereum Signed Message:\\n32\",hash));address previous;\r\n        for(uint256 j;j<3;j++){bytes calldata sig=signatures[j];require(sig.length==65,\"signature length\");bytes32 r;bytes32 s;uint8 v;assembly(\"memory-safe\"){r:=calldataload(sig.offset) s:=calldataload(add(sig.offset,32)) v:=byte(0,calldataload(add(sig.offset,64)))}require(uint256(s)<=0x7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0&&(v==27||v==28),\"signature encoding\");address signer=ecrecover(signed,v,r,s);require(signer>previous,\"signature order\");bool enrolled;for(uint256 k;k<4;k++)if(signers[k]==signer)enrolled=true;require(enrolled,\"unknown signer\");previous=signer;}\r\n    }\r\n    function deployRoute(Plan calldata p,bytes[] calldata signatures,bytes calldata code) external returns(address router){require(p.origin==block.chainid||p.origin==remoteDomain,\"origin\");require(p.asset!=address(0)&&p.decimals<=18&&p.remoteRouter!=address(0),\"plan\");require(bytes(p.name).length>0&&bytes(p.name).length<=60&&bytes(p.symbol).length>0&&bytes(p.symbol).length<=24,\"metadata\");bytes32 hash=digest(p);authorize(hash,signatures);bytes32 salt=key(p.origin,p.asset);require(routers[salt]==address(0)&&legacyRouter(salt)==address(0),\"route exists\");require(p.localRouter==predict(p.origin,p.asset,p.decimals,code),\"prediction\");bool original=p.origin==block.chainid;if(original){require(p.asset.code.length>0,\"asset\");IAutoToken t=IAutoToken(p.asset);require(t.decimals()==p.decimals&&keccak256(bytes(t.name()))==keccak256(bytes(p.name))&&keccak256(bytes(t.symbol()))==keccak256(bytes(p.symbol)),\"original metadata\");}\r\n        bytes memory init=original?bytes.concat(code,abi.encode(p.asset,uint256(1),uint256(1),mailbox)):bytes.concat(code,abi.encode(p.decimals,uint256(1),uint256(1),mailbox));assembly(\"memory-safe\"){router:=create2(0,add(init,32),mload(init),salt)}require(router==p.localRouter,\"creation\");routers[salt]=router;approvedPlans[salt]=hash;\r\n        if(original)IAutoCollateral(router).initialize(hook,ism,address(this));else IAutoSynthetic(router).initialize(0,bridgedName(p.name,p.origin),p.symbol,hook,ism,address(this));\r\n        IAutoCollateral(router).enrollRemoteRouter(remoteDomain,bytes32(uint256(uint160(p.remoteRouter))));emit AutomaticRouteCreated(p.origin,p.asset,router,p.remoteRouter,p.decimals,hash);\r\n    }\r\n}\r\n"
        },
        "contracts/AtomicBridgeCoreDeploymentV2.sol": {
          "content": "// SPDX-License-Identifier: MIT\npragma solidity 0.8.30;\ninterface ICoreMailbox {function initialize(address,address,address,address) external;}\ninterface ICoreSetFactory {function deploy(address[] calldata,uint8) external returns(address);}\n/// Hash-pinned, atomic infrastructure deployment without issuing a token.\ncontract AtomicBridgeCoreDeploymentV2 {\n    address public immutable administrator;\n    uint32 public immutable remoteDomain;\n    bytes32[6] public codeHashes;\n    bytes32 public immutable factoryHash;\n    bytes32 public immutable collateralHash;\n    bytes32 public immutable syntheticHash;\n    address public factory;\n    bool private deployed;\n    event CoreCreated(uint32 indexed domain,address mailbox,address merkleTreeHook,address pause,address ism,address factory);\n    constructor(address admin,uint32 remote,bytes32[6] memory hashes,bytes32 autoHash,bytes32 collateral,bytes32 synthetic){\n        require(admin!=address(0)&&remote!=0&&remote!=block.chainid&&block.chainid<=type(uint32).max,\"configuration\");\n        administrator=admin;remoteDomain=remote;codeHashes=hashes;factoryHash=autoHash;collateralHash=collateral;syntheticHash=synthetic;\n    }\n    function create(bytes memory code) private returns(address result){assembly(\"memory-safe\"){result:=create(0,add(code,32),mload(code))}require(result!=address(0),\"creation failed\");}\n    function deploy(bytes[6] calldata codes,bytes calldata automaticCode,address[4] calldata validators) external {\n        require(msg.sender==administrator&&!deployed,\"administrator or already deployed\");\n        for(uint256 j;j<6;j++)require(keccak256(codes[j])==codeHashes[j],\"core code\");\n        require(keccak256(automaticCode)==factoryHash,\"factory code\");\n        address[] memory members=new address[](4);\n        for(uint256 j;j<4;j++){require(validators[j]!=address(0)&&(j==0||validators[j]>validators[j-1]),\"sorted distinct signers\");members[j]=validators[j];}\n        deployed=true;\n        uint32 domain=uint32(block.chainid);\n        address mailbox=create(bytes.concat(codes[0],abi.encode(domain)));\n        address hook=create(bytes.concat(codes[1],abi.encode(mailbox)));\n        address fee=create(bytes.concat(codes[2],abi.encode(uint256(0),uint256(0),administrator,administrator)));\n        address pause=create(bytes.concat(codes[3],abi.encode(administrator)));\n        address multisigFactory=create(codes[4]);address aggregationFactory=create(codes[5]);\n        address multisig=ICoreSetFactory(multisigFactory).deploy(members,3);\n        address[] memory modules=new address[](2);modules[0]=multisig;modules[1]=pause;\n        address ism=ICoreSetFactory(aggregationFactory).deploy(modules,2);\n        ICoreMailbox(mailbox).initialize(administrator,ism,hook,fee);\n        factory=create(bytes.concat(automaticCode,abi.encode(administrator,remoteDomain,mailbox,hook,ism,collateralHash,syntheticHash,validators,address(0))));\n        emit CoreCreated(domain,mailbox,hook,pause,ism,factory);\n    }\n}\n"
        },
        "contracts/TokenRouteDeployment.sol": {
          "content": "// SPDX-License-Identifier: MIT\npragma solidity 0.8.30;\ninterface IRouteMetadata {function decimals() external view returns(uint8);}\ninterface IRouteCollateral {function initialize(address,address,address) external;}\ninterface IRouteSynthetic {function initialize(uint256,string calldata,string calldata,address,address,address) external;}\ncontract TokenRouteDeployment {\n    address public immutable owner;\n    bytes32 public immutable collateralHash;\n    bytes32 public immutable syntheticHash;\n    mapping(bytes32=>address) public routers;\n    event RouteCreated(uint32 indexed origin,address indexed asset,address router,uint8 decimals);\n    constructor(address admin,bytes32 collateral,bytes32 synthetic){require(admin!=address(0),\"zero owner\");owner=admin;collateralHash=collateral;syntheticHash=synthetic;}\n    function create(bytes memory code) private returns(address a){assembly(\"memory-safe\"){a:=create(0,add(code,32),mload(code))}require(a!=address(0),\"creation failed\");}\n    function deploy(uint32 origin,address asset,uint8 decimals,string calldata name,string calldata symbol,address mailbox,address hook,address ism,bytes calldata code) external returns(address router){\n        require(msg.sender==owner,\"owner only\");require(asset!=address(0),\"zero asset\");require(decimals<=18,\"unsupported decimals\");require(mailbox.code.length>0&&hook.code.length>0&&ism.code.length>0,\"missing core\");bytes32 key=keccak256(abi.encode(origin,asset));require(routers[key]==address(0),\"route exists\");\n        if(block.chainid==origin){require(keccak256(code)==collateralHash,\"unexpected code\");require(asset.code.length>0&&IRouteMetadata(asset).decimals()==decimals,\"wrong token\");router=create(bytes.concat(code,abi.encode(asset,uint256(1),uint256(1),mailbox)));IRouteCollateral(router).initialize(hook,ism,owner);}\n        else{require(keccak256(code)==syntheticHash,\"unexpected code\");require(bytes(name).length>0&&bytes(name).length<=96&&bytes(symbol).length>0&&bytes(symbol).length<=24,\"invalid metadata\");router=create(bytes.concat(code,abi.encode(decimals,uint256(1),uint256(1),mailbox)));IRouteSynthetic(router).initialize(0,name,symbol,hook,ism,owner);}\n        routers[key]=router;emit RouteCreated(origin,asset,router,decimals);\n    }\n}\r\n"
        }
      },
      "settings": {
        "optimizer": {
          "enabled": true,
          "runs": 200
        },
        "viaIR": true,
        "evmVersion": "paris",
        "outputSelection": {
          "contracts/TokenRouteDeployment.sol": {
            "TokenRouteDeployment": [
              "abi",
              "metadata",
              "evm.bytecode",
              "evm.deployedBytecode"
            ],
            "": [
              "ast"
            ]
          }
        }
      }
    },
    "metadata": {
      "compiler": {
        "version": "0.8.30+commit.73712a01"
      },
      "language": "Solidity",
      "output": {
        "abi": [
          {
            "inputs": [
              {
                "internalType": "address",
                "name": "admin",
                "type": "address"
              },
              {
                "internalType": "bytes32",
                "name": "collateral",
                "type": "bytes32"
              },
              {
                "internalType": "bytes32",
                "name": "synthetic",
                "type": "bytes32"
              }
            ],
            "stateMutability": "nonpayable",
            "type": "constructor"
          },
          {
            "anonymous": false,
            "inputs": [
              {
                "indexed": true,
                "internalType": "uint32",
                "name": "origin",
                "type": "uint32"
              },
              {
                "indexed": true,
                "internalType": "address",
                "name": "asset",
                "type": "address"
              },
              {
                "indexed": false,
                "internalType": "address",
                "name": "router",
                "type": "address"
              },
              {
                "indexed": false,
                "internalType": "uint8",
                "name": "decimals",
                "type": "uint8"
              }
            ],
            "name": "RouteCreated",
            "type": "event"
          },
          {
            "inputs": [],
            "name": "collateralHash",
            "outputs": [
              {
                "internalType": "bytes32",
                "name": "",
                "type": "bytes32"
              }
            ],
            "stateMutability": "view",
            "type": "function"
          },
          {
            "inputs": [
              {
                "internalType": "uint32",
                "name": "origin",
                "type": "uint32"
              },
              {
                "internalType": "address",
                "name": "asset",
                "type": "address"
              },
              {
                "internalType": "uint8",
                "name": "decimals",
                "type": "uint8"
              },
              {
                "internalType": "string",
                "name": "name",
                "type": "string"
              },
              {
                "internalType": "string",
                "name": "symbol",
                "type": "string"
              },
              {
                "internalType": "address",
                "name": "mailbox",
                "type": "address"
              },
              {
                "internalType": "address",
                "name": "hook",
                "type": "address"
              },
              {
                "internalType": "address",
                "name": "ism",
                "type": "address"
              },
              {
                "internalType": "bytes",
                "name": "code",
                "type": "bytes"
              }
            ],
            "name": "deploy",
            "outputs": [
              {
                "internalType": "address",
                "name": "router",
                "type": "address"
              }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
          },
          {
            "inputs": [],
            "name": "owner",
            "outputs": [
              {
                "internalType": "address",
                "name": "",
                "type": "address"
              }
            ],
            "stateMutability": "view",
            "type": "function"
          },
          {
            "inputs": [
              {
                "internalType": "bytes32",
                "name": "",
                "type": "bytes32"
              }
            ],
            "name": "routers",
            "outputs": [
              {
                "internalType": "address",
                "name": "",
                "type": "address"
              }
            ],
            "stateMutability": "view",
            "type": "function"
          },
          {
            "inputs": [],
            "name": "syntheticHash",
            "outputs": [
              {
                "internalType": "bytes32",
                "name": "",
                "type": "bytes32"
              }
            ],
            "stateMutability": "view",
            "type": "function"
          }
        ],
        "devdoc": {
          "kind": "dev",
          "methods": {},
          "version": 1
        },
        "userdoc": {
          "kind": "user",
          "methods": {},
          "version": 1
        }
      },
      "settings": {
        "compilationTarget": {
          "contracts/TokenRouteDeployment.sol": "TokenRouteDeployment"
        },
        "evmVersion": "paris",
        "libraries": {},
        "metadata": {
          "bytecodeHash": "ipfs"
        },
        "optimizer": {
          "enabled": true,
          "runs": 200
        },
        "remappings": [],
        "viaIR": true
      },
      "sources": {
        "contracts/TokenRouteDeployment.sol": {
          "keccak256": "0x7d4400592a624c2db0350aa4a9e2299bcb5f60ce72d571073dae0e7b64f9f707",
          "license": "MIT",
          "urls": [
            "bzz-raw://2146cf92957f39375cf8744d711d23ee10af5082489bed35b60d5646be3b139b",
            "dweb:/ipfs/QmaD2aJY3C5bufXfKGnQ792oEKpTvXByu3CMZ6Ek9v147Y"
          ]
        }
      },
      "version": 1
    }
  },
  "deployment": {
    "txid": "0xf1edfe153c0dd5f89a215c0129b5bac674fa7c8cc424f1b60e3df0b2271f53d5",
    "hash": "0xf1edfe153c0dd5f89a215c0129b5bac674fa7c8cc424f1b60e3df0b2271f53d5",
    "sender": "0xdf6e7e94ed8c6fe335c28a8ec50381e9172f7d30",
    "recipient": "0x06a3476f96546542ad45327766c20a9bda1bdd53",
    "amount_dec": "0",
    "value_raw": "0",
    "fee_dec": "0.000000005963861783",
    "fee_raw": "5963861783",
    "asset": "COOK",
    "timestamp_ms": 1791038488000,
    "block": 67249,
    "status": "Success",
    "kind": "Contract creation",
    "source": "EVM",
    "nonce": 122,
    "transaction_type": 2,
    "gas_limit": "722239",
    "gas_used": "595969",
    "gas_price_wei": "10007",
    "gas_price_gwei": "0.000010007",
    "data_hex": "0x60e0346100db57601f610ab838819003918201601f19168301916001600160401b038311848410176100e0578084926060946040528339810103126100db5780516001600160a01b03811691908281036100db576040602083015192015192156100a95760805260a05260c0526040516109c190816100f7823960805181818160dd0152610241015260a0518181816101240152610300015260c051818181606f01526105130152f35b60405162461bcd60e51b815260206004820152600a6024820152693d32b9379037bbb732b960b11b6044820152606490fd5b600080fd5b634e487b7160e01b600052604160045260246000fdfe608080604052600436101561001357600080fd5b600090813560e01c9081632640c54614610147575080634178bb3b1461010c5780638da5cb5b146100c7578063aa1fce69146100955763c30aaad21461005857600080fd5b3461009257806003193601126100925760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b80fd5b5034610092576020366003190112610092576020906004358152808252604060018060a01b0391205416604051908152f35b50346100925780600319360112610092576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b503461009257806003193601126100925760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b9050346107c9576101203660031901126107c9576004359063ffffffff82168092036107c157602435916001600160a01b038316918284036107bd576044359060ff821680920361042f5760643567ffffffffffffffff81116107b9576101b29036906004016107cd565b919060843567ffffffffffffffff81116107c5576101d49036906004016107cd565b909760a4356001600160a01b038116939290918b918584036107c15760c4356001600160a01b0381169c9095908d87036107bd5760e4356001600160a01b03811697908881036107b9576101043567ffffffffffffffff81116106435761023f9036906004016107cd565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169c9099919850338d900361078a57508f156107585760128e1161071c573b15159182610711575b5081610706575b50156106d2578e998c8e60405190602082019283526040820152604081526102c0606082610800565b519020808c5260208c90526040909b20546001600160a01b031661069e57468d036104f457505050506103256102f7368585610838565b602081519101207f00000000000000000000000000000000000000000000000000000000000000001461087f565b3b151580610475575b15610442578a936103739261036e92604051928c6020850152600160408501526001606085015260808401526080835261036960a084610800565b6108bd565b610939565b976001600160a01b03891690813b1561043e5783606492604051968795869463c0c53b8b60e01b86526004860152602485015260448401525af180156104335761041a575b507f8bc7ccba34f9800ed74fc2b07a15952b8f4c513834ce9166e2e01bee6b030a7c91604060209781935b81528089522080546001600160a01b0319166001600160a01b039097169687179055815186815280880191909152a3604051908152f35b610425878092610800565b61042f57386103b8565b8580fd5b6040513d89823e3d90fd5b8380fd5b60405162461bcd60e51b815260206004820152600b60248201526a3bb937b733903a37b5b2b760a91b6044820152606490fd5b5060405163313ce56760e01b81526020816004818d5afa80156104e95788918d916104a5575b5060ff161461032e565b9150506020813d6020116104e1575b816104c160209383610800565b810103126104dd575160ff811681036104dd57879060ff61049b565b8b80fd5b3d91506104b4565b6040513d8e823e3d90fd5b929895919490935061053861050a368484610838565b602081519101207f00000000000000000000000000000000000000000000000000000000000000001461087f565b82151580610693575b8061068a575b8061067f575b15610647578a8f989261036e9261058994604051936020850152600160408501526001606085015260808401526080835261036960a084610800565b9b6001600160a01b038d1694853b15610643576105d0966105e289956040519b8c9a8b998a9863e80a7c7960e01b8a528a60048b015260c060248b015260c48a0191610918565b87810360031901604489015291610918565b926064850152608484015260a483015203925af18015610433576040926020987f8bc7ccba34f9800ed74fc2b07a15952b8f4c513834ce9166e2e01bee6b030a7c95938593610633575b50906103e3565b8161063d91610800565b3861062c565b8780fd5b60405162461bcd60e51b815260206004820152601060248201526f696e76616c6964206d6574616461746160801b6044820152606490fd5b50601889111561054d565b50881515610547565b506060831115610541565b60405162461bcd60e51b815260206004820152600c60248201526b726f7574652065786973747360a01b6044820152606490fd5b60405162461bcd60e51b815260206004820152600c60248201526b6d697373696e6720636f726560a01b6044820152606490fd5b90503b151538610297565b3b1515915038610290565b60405162461bcd60e51b8152602060048201526014602482015273756e737570706f7274656420646563696d616c7360601b6044820152606490fd5b60405162461bcd60e51b815260206004820152600a6024820152691e995c9bc8185cdcd95d60b21b6044820152606490fd5b62461bcd60e51b815260206004820152600a6024820152696f776e6572206f6e6c7960b01b6044820152606490fd5b8680fd5b8480fd5b8280fd5b8880fd5b5080fd5b9181601f840112156107fb5782359167ffffffffffffffff83116107fb57602083818601950101116107fb57565b600080fd5b90601f8019910116810190811067ffffffffffffffff82111761082257604052565b634e487b7160e01b600052604160045260246000fd5b92919267ffffffffffffffff82116108225760405191610862601f8201601f191660200184610800565b8294818452818301116107fb578281602093846000960137010152565b1561088657565b60405162461bcd60e51b815260206004820152600f60248201526e756e657870656374656420636f646560881b6044820152606490fd5b60405193929184918190602084013781016000602082015282519260005b8481106109015750506108ff9260209101016000815203601f198101845283610800565b565b6020828201810151848301820152879450016108db565b908060209392818452848401376000828201840152601f01601f1916010190565b6020815191016000f0906001600160a01b0382161561095457565b60405162461bcd60e51b815260206004820152600f60248201526e18dc99585d1a5bdb8819985a5b1959608a1b6044820152606490fdfea264697066735822122071dde2035fbd7194a0c4be267b1aac08f09f08d880a7bf8f556247f49b8869de64736f6c634300081e0033000000000000000000000000df6e7e94ed8c6fe335c28a8ec50381e9172f7d3080caa35bee32d9ad74dd17a5aa09bda24847b145200798eba26219e413323428a958f9628dcbf52a103e4399714805811ed312515684ec4b1031599dd3107109",
    "receipt": {
      "blockHash": "0xb18679b7ef646ad483013ff13005d5b91ead08297485fe14da6c498b8c5cd32e",
      "blockNumber": "0x106b1",
      "contractAddress": "0x06a3476f96546542ad45327766c20a9bda1bdd53",
      "cumulativeGasUsed": "0x91801",
      "from": "0xdf6e7e94ed8c6fe335c28a8ec50381e9172f7d30",
      "gasUsed": "0x91801",
      "effectiveGasPrice": "0x2717",
      "logs": [],
      "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
      "status": "0x1",
      "to": null,
      "transactionHash": "0xf1edfe153c0dd5f89a215c0129b5bac674fa7c8cc424f1b60e3df0b2271f53d5",
      "transactionIndex": "0x0",
      "type": "0x2"
    },
    "logs": [],
    "raw_transaction": {
      "accessList": [],
      "blockHash": "0xb18679b7ef646ad483013ff13005d5b91ead08297485fe14da6c498b8c5cd32e",
      "blockNumber": "0x106b1",
      "blockTimestamp": "0x6ac11418",
      "chainId": "0x1352889",
      "from": "0xdf6e7e94ed8c6fe335c28a8ec50381e9172f7d30",
      "gas": "0xb053f",
      "gasPrice": "0x2717",
      "maxPriorityFeePerGas": "0x2717",
      "maxFeePerGas": "0x2717",
      "hash": "0xf1edfe153c0dd5f89a215c0129b5bac674fa7c8cc424f1b60e3df0b2271f53d5",
      "input": "0x60e0346100db57601f610ab838819003918201601f19168301916001600160401b038311848410176100e0578084926060946040528339810103126100db5780516001600160a01b03811691908281036100db576040602083015192015192156100a95760805260a05260c0526040516109c190816100f7823960805181818160dd0152610241015260a0518181816101240152610300015260c051818181606f01526105130152f35b60405162461bcd60e51b815260206004820152600a6024820152693d32b9379037bbb732b960b11b6044820152606490fd5b600080fd5b634e487b7160e01b600052604160045260246000fdfe608080604052600436101561001357600080fd5b600090813560e01c9081632640c54614610147575080634178bb3b1461010c5780638da5cb5b146100c7578063aa1fce69146100955763c30aaad21461005857600080fd5b3461009257806003193601126100925760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b80fd5b5034610092576020366003190112610092576020906004358152808252604060018060a01b0391205416604051908152f35b50346100925780600319360112610092576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b503461009257806003193601126100925760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b9050346107c9576101203660031901126107c9576004359063ffffffff82168092036107c157602435916001600160a01b038316918284036107bd576044359060ff821680920361042f5760643567ffffffffffffffff81116107b9576101b29036906004016107cd565b919060843567ffffffffffffffff81116107c5576101d49036906004016107cd565b909760a4356001600160a01b038116939290918b918584036107c15760c4356001600160a01b0381169c9095908d87036107bd5760e4356001600160a01b03811697908881036107b9576101043567ffffffffffffffff81116106435761023f9036906004016107cd565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169c9099919850338d900361078a57508f156107585760128e1161071c573b15159182610711575b5081610706575b50156106d2578e998c8e60405190602082019283526040820152604081526102c0606082610800565b519020808c5260208c90526040909b20546001600160a01b031661069e57468d036104f457505050506103256102f7368585610838565b602081519101207f00000000000000000000000000000000000000000000000000000000000000001461087f565b3b151580610475575b15610442578a936103739261036e92604051928c6020850152600160408501526001606085015260808401526080835261036960a084610800565b6108bd565b610939565b976001600160a01b03891690813b1561043e5783606492604051968795869463c0c53b8b60e01b86526004860152602485015260448401525af180156104335761041a575b507f8bc7ccba34f9800ed74fc2b07a15952b8f4c513834ce9166e2e01bee6b030a7c91604060209781935b81528089522080546001600160a01b0319166001600160a01b039097169687179055815186815280880191909152a3604051908152f35b610425878092610800565b61042f57386103b8565b8580fd5b6040513d89823e3d90fd5b8380fd5b60405162461bcd60e51b815260206004820152600b60248201526a3bb937b733903a37b5b2b760a91b6044820152606490fd5b5060405163313ce56760e01b81526020816004818d5afa80156104e95788918d916104a5575b5060ff161461032e565b9150506020813d6020116104e1575b816104c160209383610800565b810103126104dd575160ff811681036104dd57879060ff61049b565b8b80fd5b3d91506104b4565b6040513d8e823e3d90fd5b929895919490935061053861050a368484610838565b602081519101207f00000000000000000000000000000000000000000000000000000000000000001461087f565b82151580610693575b8061068a575b8061067f575b15610647578a8f989261036e9261058994604051936020850152600160408501526001606085015260808401526080835261036960a084610800565b9b6001600160a01b038d1694853b15610643576105d0966105e289956040519b8c9a8b998a9863e80a7c7960e01b8a528a60048b015260c060248b015260c48a0191610918565b87810360031901604489015291610918565b926064850152608484015260a483015203925af18015610433576040926020987f8bc7ccba34f9800ed74fc2b07a15952b8f4c513834ce9166e2e01bee6b030a7c95938593610633575b50906103e3565b8161063d91610800565b3861062c565b8780fd5b60405162461bcd60e51b815260206004820152601060248201526f696e76616c6964206d6574616461746160801b6044820152606490fd5b50601889111561054d565b50881515610547565b506060831115610541565b60405162461bcd60e51b815260206004820152600c60248201526b726f7574652065786973747360a01b6044820152606490fd5b60405162461bcd60e51b815260206004820152600c60248201526b6d697373696e6720636f726560a01b6044820152606490fd5b90503b151538610297565b3b1515915038610290565b60405162461bcd60e51b8152602060048201526014602482015273756e737570706f7274656420646563696d616c7360601b6044820152606490fd5b60405162461bcd60e51b815260206004820152600a6024820152691e995c9bc8185cdcd95d60b21b6044820152606490fd5b62461bcd60e51b815260206004820152600a6024820152696f776e6572206f6e6c7960b01b6044820152606490fd5b8680fd5b8480fd5b8280fd5b8880fd5b5080fd5b9181601f840112156107fb5782359167ffffffffffffffff83116107fb57602083818601950101116107fb57565b600080fd5b90601f8019910116810190811067ffffffffffffffff82111761082257604052565b634e487b7160e01b600052604160045260246000fd5b92919267ffffffffffffffff82116108225760405191610862601f8201601f191660200184610800565b8294818452818301116107fb578281602093846000960137010152565b1561088657565b60405162461bcd60e51b815260206004820152600f60248201526e756e657870656374656420636f646560881b6044820152606490fd5b60405193929184918190602084013781016000602082015282519260005b8481106109015750506108ff9260209101016000815203601f198101845283610800565b565b6020828201810151848301820152879450016108db565b908060209392818452848401376000828201840152601f01601f1916010190565b6020815191016000f0906001600160a01b0382161561095457565b60405162461bcd60e51b815260206004820152600f60248201526e18dc99585d1a5bdb8819985a5b1959608a1b6044820152606490fdfea264697066735822122071dde2035fbd7194a0c4be267b1aac08f09f08d880a7bf8f556247f49b8869de64736f6c634300081e0033000000000000000000000000df6e7e94ed8c6fe335c28a8ec50381e9172f7d3080caa35bee32d9ad74dd17a5aa09bda24847b145200798eba26219e413323428a958f9628dcbf52a103e4399714805811ed312515684ec4b1031599dd3107109",
      "nonce": "0x7a",
      "to": null,
      "transactionIndex": "0x0",
      "type": "0x2",
      "value": "0x0",
      "yParity": "0x0",
      "v": "0x0",
      "r": "0x6fcc607d4fee89f68f39398def35163ee8b09dbdeb2cf2b2d8513be8061b15bc",
      "s": "0x409260c5e96c6973e84e2e6ef3db1b794db19f8cac7fce18fc6669795d62600b"
    }
  }
}