ETH Price: $1,929.68 (-4.76%)
 

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer242808002026-01-21 4:34:1137 days ago1768970051IN
Smart Account by Safe Fee Recipient: 0xF1...358F
0.000001 ETH0.000001370.05046453
Exec Transaction239907522025-12-11 16:52:3578 days ago1765471955IN
Smart Account by Safe Fee Recipient: 0xF1...358F
0 ETH0.000008670.11912501
Exec Transaction239907042025-12-11 16:42:5978 days ago1765471379IN
Smart Account by Safe Fee Recipient: 0xF1...358F
0 ETH0.000012160.16717006
Transfer238564542025-11-22 19:06:1197 days ago1763838371IN
Smart Account by Safe Fee Recipient: 0xF1...358F
0.00858624 ETH0.000002020.07408536
Transfer238534662025-11-22 9:01:2397 days ago1763802083IN
Smart Account by Safe Fee Recipient: 0xF1...358F
0.00649383 ETH0.000002380.08724344
Transfer238532992025-11-22 8:27:3597 days ago1763800055IN
Smart Account by Safe Fee Recipient: 0xF1...358F
0.00680039 ETH0.00000210.07705956
Transfer238484532025-11-21 16:05:4798 days ago1763741147IN
Smart Account by Safe Fee Recipient: 0xF1...358F
0.01892859 ETH0.000054181.98271201
Transfer238479562025-11-21 14:24:3598 days ago1763735075IN
Smart Account by Safe Fee Recipient: 0xF1...358F
0.01498849 ETH0.000027391.00248114
Transfer238436312025-11-20 23:51:3599 days ago1763682695IN
Smart Account by Safe Fee Recipient: 0xF1...358F
0.01339921 ETH0.000003450.12649001
Transfer238307742025-11-19 4:33:35100 days ago1763526815IN
Smart Account by Safe Fee Recipient: 0xF1...358F
0.00803254 ETH0.000002880.10559258
Transfer238305552025-11-19 3:49:23100 days ago1763524163IN
Smart Account by Safe Fee Recipient: 0xF1...358F
0.0141098 ETH0.000003460.12694819
Transfer238304052025-11-19 3:19:23100 days ago1763522363IN
Smart Account by Safe Fee Recipient: 0xF1...358F
0.02239263 ETH0.00000280.10257786
Transfer238211392025-11-17 20:03:11102 days ago1763409791IN
Smart Account by Safe Fee Recipient: 0xF1...358F
0.06154359 ETH0.000082193.00755438
Transfer238176962025-11-17 8:26:59102 days ago1763368019IN
Smart Account by Safe Fee Recipient: 0xF1...358F
0.0070334 ETH0.000002550.09335422
Transfer238126772025-11-16 15:35:23103 days ago1763307323IN
Smart Account by Safe Fee Recipient: 0xF1...358F
0.03731863 ETH0.000001870.06858779
Transfer238087872025-11-16 2:33:23103 days ago1763260403IN
Smart Account by Safe Fee Recipient: 0xF1...358F
0.02003473 ETH0.000001580.0578829
Transfer238080942025-11-16 0:14:11104 days ago1763252051IN
Smart Account by Safe Fee Recipient: 0xF1...358F
0.02011315 ETH0.000001960.07193178
Transfer238067392025-11-15 19:41:35104 days ago1763235695IN
Smart Account by Safe Fee Recipient: 0xF1...358F
0.00559763 ETH0.000001690.06206717
Transfer237993422025-11-14 18:52:59105 days ago1763146379IN
Smart Account by Safe Fee Recipient: 0xF1...358F
0.02109506 ETH0.000010050.36795357
Transfer237963522025-11-14 8:51:47105 days ago1763110307IN
Smart Account by Safe Fee Recipient: 0xF1...358F
0.03364743 ETH0.000008780.32161163
Transfer237939862025-11-14 0:55:11106 days ago1763081711IN
Smart Account by Safe Fee Recipient: 0xF1...358F
0.01298034 ETH0.00000360.13186423
Transfer237938372025-11-14 0:25:11106 days ago1763079911IN
Smart Account by Safe Fee Recipient: 0xF1...358F
0.24616671 ETH0.000004150.15204592
Transfer237920552025-11-13 18:25:23106 days ago1763058323IN
Smart Account by Safe Fee Recipient: 0xF1...358F
0.07130847 ETH0.000051051.86830246
Transfer237894642025-11-13 9:43:35106 days ago1763027015IN
Smart Account by Safe Fee Recipient: 0xF1...358F
0.00776666 ETH0.000002130.07801097
Transfer237874522025-11-13 2:56:59106 days ago1763002619IN
Smart Account by Safe Fee Recipient: 0xF1...358F
0.00837863 ETH0.00000180.06592326
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Method Block
From
To
Transfer239907522025-12-11 16:52:3578 days ago1765471955
Smart Account by Safe Fee Recipient: 0xF1...358F
8,046.06170933 ETH
Transfer239907042025-12-11 16:42:5978 days ago1765471379
Smart Account by Safe Fee Recipient: 0xF1...358F
1 ETH
Transfer230187352025-07-28 16:08:35214 days ago1753718915
Smart Account by Safe Fee Recipient: 0xF1...358F
3,281.55946728 ETH
Transfer229751722025-07-22 13:59:59220 days ago1753192799
Smart Account by Safe Fee Recipient: 0xF1...358F
3,500 ETH
Transfer228748852025-07-08 13:52:11234 days ago1751982731
Smart Account by Safe Fee Recipient: 0xF1...358F
3,500 ETH
Transfer228182522025-06-30 15:52:35242 days ago1751298755
Smart Account by Safe Fee Recipient: 0xF1...358F
3,500 ETH
Transfer227818692025-06-25 13:52:47247 days ago1750859567
Smart Account by Safe Fee Recipient: 0xF1...358F
3,000 ETH
Transfer227466832025-06-20 15:48:59252 days ago1750434539
Smart Account by Safe Fee Recipient: 0xF1...358F
3,000 ETH
Transfer226703252025-06-09 23:34:11263 days ago1749512051
Smart Account by Safe Fee Recipient: 0xF1...358F
3,755 ETH
Transfer226702402025-06-09 23:17:11263 days ago1749511031
Smart Account by Safe Fee Recipient: 0xF1...358F
0.5 ETH
Transfer222113712025-04-06 17:30:35327 days ago1743960635
Smart Account by Safe Fee Recipient: 0xF1...358F
0.42798832 ETH
Transfer221176802025-03-24 15:32:11340 days ago1742830331
Smart Account by Safe Fee Recipient: 0xF1...358F
0.00037901 ETH
Transfer220594832025-03-16 12:36:23348 days ago1742128583
Smart Account by Safe Fee Recipient: 0xF1...358F
0.001 ETH
Transfer220350252025-03-13 2:40:47351 days ago1741833647
Smart Account by Safe Fee Recipient: 0xF1...358F
0.00007516 ETH
Transfer217838092025-02-06 0:13:59387 days ago1738800839
Smart Account by Safe Fee Recipient: 0xF1...358F
0.00002528 ETH
Transfer216859582025-01-23 8:20:47400 days ago1737620447
Smart Account by Safe Fee Recipient: 0xF1...358F
0.02045853 ETH
Transfer216801122025-01-22 12:44:59401 days ago1737549899
Smart Account by Safe Fee Recipient: 0xF1...358F
0.00719373 ETH
Transfer214659222024-12-23 14:56:47431 days ago1734965807
Smart Account by Safe Fee Recipient: 0xF1...358F
1,000 ETH
Transfer214319772024-12-18 21:04:11436 days ago1734555851
Smart Account by Safe Fee Recipient: 0xF1...358F
1,000 ETH
Transfer213686002024-12-10 0:42:23445 days ago1733791343
Smart Account by Safe Fee Recipient: 0xF1...358F
0.00991656 ETH
Transfer213317962024-12-04 21:22:59450 days ago1733347379
Smart Account by Safe Fee Recipient: 0xF1...358F
1,316.1001841 ETH
Transfer213229302024-12-03 15:39:59451 days ago1733240399
Smart Account by Safe Fee Recipient: 0xF1...358F
2,000 ETH
Transfer213154012024-12-02 14:24:35452 days ago1733149475
Smart Account by Safe Fee Recipient: 0xF1...358F
2,000 ETH
Transfer213137402024-12-02 8:49:59452 days ago1733129399
Smart Account by Safe Fee Recipient: 0xF1...358F
0.00138528 ETH
Transfer213137402024-12-02 8:49:59452 days ago1733129399
Smart Account by Safe Fee Recipient: 0xF1...358F
0.01598795 ETH
View All Internal Transactions
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

 Latest 25 blocks (From a total of 1,352 blocks with 84.82 Ether produced)

Block Transaction Difficulty Gas Used Reward
237609622025-11-09 9:58:59110 days ago1762682339820.00 TH4,774,001 (10.61%)
0.002637070426348929 ETH
235701862025-10-13 17:09:23137 days ago1760375363940.00 TH5,769,200 (12.81%)
0.005595565769390777 ETH
235478642025-10-10 14:14:59140 days ago1760105699910.00 TH5,785,358 (12.86%)
0.002438197124460222 ETH
234293822025-09-24 0:42:11157 days ago1758674531740.00 TH4,124,612 (9.17%)
0.003543175960186848 ETH
233773382025-09-16 18:11:35164 days ago17580462951510.00 TH9,964,501 (22.14%)
0.006597574627473762 ETH
232793862025-09-03 1:46:11178 days ago17568639712920.00 TH17,870,792 (39.71%)
0.008577599439145859 ETH
232528282025-08-30 8:42:11181 days ago1756543331790.00 TH4,731,978 (10.52%)
0.003335009841855757 ETH
231184822025-08-11 14:44:11200 days ago17549234511420.00 TH8,749,024 (19.42%)
0.010379443945334311 ETH
231125202025-08-10 18:43:47201 days ago1754851427890.00 TH5,102,180 (11.34%)
0.002785168339811199 ETH
230196022025-07-28 19:02:47214 days ago1753729367650.00 TH4,473,064 (9.94%)
0.002291117642742103 ETH
229573572025-07-20 2:14:59223 days ago1752977699810.00 TH4,296,352 (11.38%)
0.002628955244252559 ETH
228344882025-07-02 22:21:23240 days ago17514948831210.00 TH8,161,328 (22.67%)
0.005931318548707361 ETH
228051172025-06-28 19:47:35244 days ago17511400551330.00 TH5,525,094 (15.33%)
0.003614190620888538 ETH
227750722025-06-24 15:05:47248 days ago1750777547970.00 TH5,965,805 (16.57%)
0.006729597819347165 ETH
227492622025-06-21 0:29:23252 days ago1750465763630.00 TH5,941,119 (16.50%)
0.002459303247258922 ETH
226963762025-06-13 14:56:47259 days ago17498266071180.00 TH7,371,584 (20.48%)
0.008338455874640714 ETH
225830312025-05-28 18:25:47275 days ago17484567471080.00 TH5,398,997 (15.00%)
0.003712072554835672 ETH
225375412025-05-22 9:32:35281 days ago1747906355940.00 TH4,792,225 (13.31%)
0.004921695307643406 ETH
224118472025-05-04 17:21:35299 days ago17463792951130.00 TH4,222,410 (11.73%)
0.003538605337894021 ETH
223836522025-04-30 18:29:35303 days ago17460377751160.00 TH7,396,704 (20.55%)
0.004267490763197882 ETH
223547622025-04-26 17:39:47307 days ago1745689187720.00 TH4,013,259 (11.15%)
0.002830441769874887 ETH
223376832025-04-24 8:29:11309 days ago17454833511180.00 TH10,826,894 (30.07%)
0.006070721263954202 ETH
223257142025-04-22 16:22:59311 days ago17453389792290.00 TH10,303,964 (28.62%)
0.013975130425196032 ETH
223151652025-04-21 5:04:35312 days ago1745211875880.00 TH33,397,913 (92.95%)
0.002011718889754352 ETH
223099482025-04-20 11:34:59313 days ago1745148899340.00 TH1,297,677 (3.60%)
0.001860058612320853 ETH
View All Blocks Produced

Latest 25 from a total of 174823 withdrawals (86,909.372294908 ETH withdrawn)

Validator Index Block Amount
54852245118102026-02-22 10:28:115 days ago17717560910.016662182 ETH
54851245118102026-02-22 10:28:115 days ago17717560910.016654647 ETH
28071245115302026-02-22 9:31:595 days ago17717527190.016712151 ETH
54852244519672026-02-14 2:13:5914 days ago17710352390.016809098 ETH
54851244519672026-02-14 2:13:5914 days ago17710352390.016792678 ETH
28071244516872026-02-14 1:17:3514 days ago17710318550.016844174 ETH
54852243917962026-02-05 16:23:2322 days ago17703086030.016891782 ETH
54851243917962026-02-05 16:23:2322 days ago17703086030.016895808 ETH
28071243915152026-02-05 15:26:5922 days ago17703052190.016879288 ETH
54852243315052026-01-28 6:19:3530 days ago17695811750.016926366 ETH
54851243315052026-01-28 6:19:3530 days ago17695811750.016937175 ETH
28071243312262026-01-28 5:23:3530 days ago17695778150.016978253 ETH
54852242712392026-01-19 20:34:2339 days ago17688548630.017028219 ETH
54851242712392026-01-19 20:34:2339 days ago17688548630.017122132 ETH
28071242709572026-01-19 19:37:1139 days ago17688514310.017044848 ETH
54852242107362026-01-11 10:01:4747 days ago17681257070.017308641 ETH
54851242107362026-01-11 10:01:4747 days ago17681257070.017275464 ETH
28071242104522026-01-11 9:04:5947 days ago17681222990.203320164 ETH
54852241498002026-01-02 21:59:5956 days ago17673911990.017485933 ETH
54851241498002026-01-02 21:59:5956 days ago17673911990.017519754 ETH
28071241495172026-01-02 21:03:2356 days ago17673878030.017498247 ETH
54852240882492025-12-25 7:48:3564 days ago17666489150.017659265 ETH
54851240882492025-12-25 7:48:3564 days ago17666489150.0176932 ETH
28071240879642025-12-25 6:51:1164 days ago17666454710.017659318 ETH
54852240260822025-12-16 15:31:5973 days ago17658991190.017540222 ETH
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0xDaB5dc22...0ba42d2a6
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
GnosisSafeProxy

Compiler Version
v0.7.6+commit.7338295f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, GNU LGPLv3 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-07-09
*/

// SPDX-License-Identifier: LGPL-3.0-only
pragma solidity >=0.7.0 <0.9.0;

/// @title IProxy - Helper interface to access masterCopy of the Proxy on-chain
/// @author Richard Meissner - <[email protected]>
interface IProxy {
    function masterCopy() external view returns (address);
}

/// @title GnosisSafeProxy - Generic proxy contract allows to execute all transactions applying the code of a master contract.
/// @author Stefan George - <[email protected]>
/// @author Richard Meissner - <[email protected]>
contract GnosisSafeProxy {
    // singleton always needs to be first declared variable, to ensure that it is at the same location in the contracts to which calls are delegated.
    // To reduce deployment costs this variable is internal and needs to be retrieved via `getStorageAt`
    address internal singleton;

    /// @dev Constructor function sets address of singleton contract.
    /// @param _singleton Singleton address.
    constructor(address _singleton) {
        require(_singleton != address(0), "Invalid singleton address provided");
        singleton = _singleton;
    }

    /// @dev Fallback function forwards all transactions and returns all received return data.
    fallback() external payable {
        // solhint-disable-next-line no-inline-assembly
        assembly {
            let _singleton := and(sload(0), 0xffffffffffffffffffffffffffffffffffffffff)
            // 0xa619486e == keccak("masterCopy()"). The value is right padded to 32-bytes with 0s
            if eq(calldataload(0), 0xa619486e00000000000000000000000000000000000000000000000000000000) {
                mstore(0, _singleton)
                return(0, 0x20)
            }
            calldatacopy(0, 0, calldatasize())
            let success := delegatecall(gas(), _singleton, 0, calldatasize(), 0, 0)
            returndatacopy(0, 0, returndatasize())
            if eq(success, 0) {
                revert(0, returndatasize())
            }
            return(0, returndatasize())
        }
    }
}

/// @title Proxy Factory - Allows to create new proxy contact and execute a message call to the new proxy within one transaction.
/// @author Stefan George - <[email protected]>
contract GnosisSafeProxyFactory {
    event ProxyCreation(GnosisSafeProxy proxy, address singleton);

    /// @dev Allows to create new proxy contact and execute a message call to the new proxy within one transaction.
    /// @param singleton Address of singleton contract.
    /// @param data Payload for message call sent to new proxy contract.
    function createProxy(address singleton, bytes memory data) public returns (GnosisSafeProxy proxy) {
        proxy = new GnosisSafeProxy(singleton);
        if (data.length > 0)
            // solhint-disable-next-line no-inline-assembly
            assembly {
                if eq(call(gas(), proxy, 0, add(data, 0x20), mload(data), 0, 0), 0) {
                    revert(0, 0)
                }
            }
        emit ProxyCreation(proxy, singleton);
    }

    /// @dev Allows to retrieve the runtime code of a deployed Proxy. This can be used to check that the expected Proxy was deployed.
    function proxyRuntimeCode() public pure returns (bytes memory) {
        return type(GnosisSafeProxy).runtimeCode;
    }

    /// @dev Allows to retrieve the creation code used for the Proxy deployment. With this it is easily possible to calculate predicted address.
    function proxyCreationCode() public pure returns (bytes memory) {
        return type(GnosisSafeProxy).creationCode;
    }

    /// @dev Allows to create new proxy contact using CREATE2 but it doesn't run the initializer.
    ///      This method is only meant as an utility to be called from other methods
    /// @param _singleton Address of singleton contract.
    /// @param initializer Payload for message call sent to new proxy contract.
    /// @param saltNonce Nonce that will be used to generate the salt to calculate the address of the new proxy contract.
    function deployProxyWithNonce(
        address _singleton,
        bytes memory initializer,
        uint256 saltNonce
    ) internal returns (GnosisSafeProxy proxy) {
        // If the initializer changes the proxy address should change too. Hashing the initializer data is cheaper than just concatinating it
        bytes32 salt = keccak256(abi.encodePacked(keccak256(initializer), saltNonce));
        bytes memory deploymentData = abi.encodePacked(type(GnosisSafeProxy).creationCode, uint256(uint160(_singleton)));
        // solhint-disable-next-line no-inline-assembly
        assembly {
            proxy := create2(0x0, add(0x20, deploymentData), mload(deploymentData), salt)
        }
        require(address(proxy) != address(0), "Create2 call failed");
    }

    /// @dev Allows to create new proxy contact and execute a message call to the new proxy within one transaction.
    /// @param _singleton Address of singleton contract.
    /// @param initializer Payload for message call sent to new proxy contract.
    /// @param saltNonce Nonce that will be used to generate the salt to calculate the address of the new proxy contract.
    function createProxyWithNonce(
        address _singleton,
        bytes memory initializer,
        uint256 saltNonce
    ) public returns (GnosisSafeProxy proxy) {
        proxy = deployProxyWithNonce(_singleton, initializer, saltNonce);
        if (initializer.length > 0)
            // solhint-disable-next-line no-inline-assembly
            assembly {
                if eq(call(gas(), proxy, 0, add(initializer, 0x20), mload(initializer), 0, 0), 0) {
                    revert(0, 0)
                }
            }
        emit ProxyCreation(proxy, _singleton);
    }

    /// @dev Allows to create new proxy contact, execute a message call to the new proxy and call a specified callback within one transaction
    /// @param _singleton Address of singleton contract.
    /// @param initializer Payload for message call sent to new proxy contract.
    /// @param saltNonce Nonce that will be used to generate the salt to calculate the address of the new proxy contract.
    /// @param callback Callback that will be invoced after the new proxy contract has been successfully deployed and initialized.
    function createProxyWithCallback(
        address _singleton,
        bytes memory initializer,
        uint256 saltNonce,
        IProxyCreationCallback callback
    ) public returns (GnosisSafeProxy proxy) {
        uint256 saltNonceWithCallback = uint256(keccak256(abi.encodePacked(saltNonce, callback)));
        proxy = createProxyWithNonce(_singleton, initializer, saltNonceWithCallback);
        if (address(callback) != address(0)) callback.proxyCreated(proxy, _singleton, initializer, saltNonce);
    }

    /// @dev Allows to get the address for a new proxy contact created via `createProxyWithNonce`
    ///      This method is only meant for address calculation purpose when you use an initializer that would revert,
    ///      therefore the response is returned with a revert. When calling this method set `from` to the address of the proxy factory.
    /// @param _singleton Address of singleton contract.
    /// @param initializer Payload for message call sent to new proxy contract.
    /// @param saltNonce Nonce that will be used to generate the salt to calculate the address of the new proxy contract.
    function calculateCreateProxyWithNonceAddress(
        address _singleton,
        bytes calldata initializer,
        uint256 saltNonce
    ) external returns (GnosisSafeProxy proxy) {
        proxy = deployProxyWithNonce(_singleton, initializer, saltNonce);
        revert(string(abi.encodePacked(proxy)));
    }
}

interface IProxyCreationCallback {
    function proxyCreated(
        GnosisSafeProxy proxy,
        address _singleton,
        bytes calldata initializer,
        uint256 saltNonce
    ) external;
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"_singleton","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"stateMutability":"payable","type":"fallback"}]

0x608060405234801561001057600080fd5b506040516101e63803806101e68339818101604052602081101561003357600080fd5b8101908080519060200190929190505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156100ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806101c46022913960400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505060ab806101196000396000f3fe608060405273ffffffffffffffffffffffffffffffffffffffff600054167fa619486e0000000000000000000000000000000000000000000000000000000060003514156050578060005260206000f35b3660008037600080366000845af43d6000803e60008114156070573d6000fd5b3d6000f3fea2646970667358221220d1429297349653a4918076d650332de1a1068c5f3e07c5c82360c277770b955264736f6c63430007060033496e76616c69642073696e676c65746f6e20616464726573732070726f7669646564000000000000000000000000d9db270c1b5e3bd161e8c8503c55ceabee709552

Deployed Bytecode

0x608060405273ffffffffffffffffffffffffffffffffffffffff600054167fa619486e0000000000000000000000000000000000000000000000000000000060003514156050578060005260206000f35b3660008037600080366000845af43d6000803e60008114156070573d6000fd5b3d6000f3fea2646970667358221220d1429297349653a4918076d650332de1a1068c5f3e07c5c82360c277770b955264736f6c63430007060033

Deployed Bytecode Sourcemap

524:1528:0:-:0;;;1376:42;1372:1;1366:8;1362:57;1556:66;1552:1;1539:15;1536:87;1533:2;;;1653:10;1650:1;1643:21;1692:4;1689:1;1682:15;1533:2;1745:14;1742:1;1739;1726:34;1843:1;1840;1824:14;1821:1;1809:10;1802:5;1789:56;1880:16;1877:1;1874;1859:38;1926:1;1917:7;1914:14;1911:2;;;1958:16;1955:1;1948:27;1911:2;2014:16;2011:1;2004:27

Swarm Source

ipfs://d1429297349653a4918076d650332de1a1068c5f3e07c5c82360c277770b9552

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
0xF17d119eFFA0dCbe24D3fA346860be851150358F
Loading...
Loading
[ Download: CSV Export  ]
[ 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.