ETH Price: $1,972.72 (+0.21%)
 

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer244505012026-02-13 21:19:358 days ago1771017575IN
Smart Account by Safe Fee Recipient: 0x2ef3...bab
0.0403706 ETH0.000001430.05263088
Transfer243921432026-02-05 17:33:1116 days ago1770312791IN
Smart Account by Safe Fee Recipient: 0x2ef3...bab
0.14173417 ETH0.000079582.91228589
Transfer241979912026-01-09 15:22:3543 days ago1767972155IN
Smart Account by Safe Fee Recipient: 0x2ef3...bab
0.07777349 ETH0.00000350.12821969
Exec Transaction241881872026-01-08 6:31:4745 days ago1767853907IN
Smart Account by Safe Fee Recipient: 0x2ef3...bab
0 ETH0.000003770.03603402
Transfer241464532026-01-02 10:48:4750 days ago1767350927IN
Smart Account by Safe Fee Recipient: 0x2ef3...bab
0.17483142 ETH0.00000330.12088826
Transfer241308352025-12-31 6:31:4753 days ago1767162707IN
Smart Account by Safe Fee Recipient: 0x2ef3...bab
0.16967485 ETH0.000000740.0271758
Transfer240975802025-12-26 15:04:3557 days ago1766761475IN
Smart Account by Safe Fee Recipient: 0x2ef3...bab
0.04816411 ETH0.000018430.67463565
Transfer240474872025-12-19 15:18:1164 days ago1766157491IN
Smart Account by Safe Fee Recipient: 0x2ef3...bab
0.06020457 ETH0.000023460.85870738
Transfer239689472025-12-08 15:22:2375 days ago1765207343IN
Smart Account by Safe Fee Recipient: 0x2ef3...bab
0.0656114 ETH0.000009090.33268969
Transfer239201572025-12-01 17:35:4782 days ago1764610547IN
Smart Account by Safe Fee Recipient: 0x2ef3...bab
0.08867883 ETH0.000007660.2803527
Transfer239193442025-12-01 14:52:1182 days ago1764600731IN
Smart Account by Safe Fee Recipient: 0x2ef3...bab
0.13538219 ETH0.000031091.1376323
Transfer238710392025-11-24 20:19:5989 days ago1764015599IN
Smart Account by Safe Fee Recipient: 0x2ef3...bab
0.06503259 ETH0.000008610.31538717
Transfer238456602025-11-21 6:39:4793 days ago1763707187IN
Smart Account by Safe Fee Recipient: 0x2ef3...bab
0.05343221 ETH0.000004610.16875689
Exec Transaction238322242025-11-19 9:25:3594 days ago1763544335IN
Smart Account by Safe Fee Recipient: 0x2ef3...bab
0 ETH0.000008220.1189555
Exec Transaction238322132025-11-19 9:23:2394 days ago1763544203IN
Smart Account by Safe Fee Recipient: 0x2ef3...bab
0 ETH0.000016570.13177419
Exec Transaction238322112025-11-19 9:22:5994 days ago1763544179IN
Smart Account by Safe Fee Recipient: 0x2ef3...bab
0 ETH0.000016580.1318675
Exec Transaction238322092025-11-19 9:22:3594 days ago1763544155IN
Smart Account by Safe Fee Recipient: 0x2ef3...bab
0 ETH0.000016970.13494703
Exec Transaction238322062025-11-19 9:21:5994 days ago1763544119IN
Smart Account by Safe Fee Recipient: 0x2ef3...bab
0 ETH0.000015970.12696483
Exec Transaction238322042025-11-19 9:21:3594 days ago1763544095IN
Smart Account by Safe Fee Recipient: 0x2ef3...bab
0 ETH0.000017010.1352921
Exec Transaction238322022025-11-19 9:21:1194 days ago1763544071IN
Smart Account by Safe Fee Recipient: 0x2ef3...bab
0 ETH0.000016880.13419929
Exec Transaction238322002025-11-19 9:20:4794 days ago1763544047IN
Smart Account by Safe Fee Recipient: 0x2ef3...bab
0 ETH0.000017520.13630174
Exec Transaction238321952025-11-19 9:19:4794 days ago1763543987IN
Smart Account by Safe Fee Recipient: 0x2ef3...bab
0 ETH0.000017550.1395277
Exec Transaction238321932025-11-19 9:19:2394 days ago1763543963IN
Smart Account by Safe Fee Recipient: 0x2ef3...bab
0 ETH0.000017940.14266817
Exec Transaction238321902025-11-19 9:18:4794 days ago1763543927IN
Smart Account by Safe Fee Recipient: 0x2ef3...bab
0 ETH0.000019050.1514482
Exec Transaction238321882025-11-19 9:18:2394 days ago1763543903IN
Smart Account by Safe Fee Recipient: 0x2ef3...bab
0 ETH0.000017710.1408293
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Method Block
From
To
Transfer242654492026-01-19 1:11:4734 days ago1768785107
Smart Account by Safe Fee Recipient: 0x2ef3...bab
0.00002842 ETH
Transfer241881872026-01-08 6:31:4745 days ago1767853907
Smart Account by Safe Fee Recipient: 0x2ef3...bab
89.29301922 ETH
Transfer*238322132025-11-19 9:23:2394 days ago1763544203
Smart Account by Safe Fee Recipient: 0x2ef3...bab
1 wei
Transfer*238322112025-11-19 9:22:5994 days ago1763544179
Smart Account by Safe Fee Recipient: 0x2ef3...bab
1 wei
Transfer*238322092025-11-19 9:22:3594 days ago1763544155
Smart Account by Safe Fee Recipient: 0x2ef3...bab
1 wei
Transfer*238322062025-11-19 9:21:5994 days ago1763544119
Smart Account by Safe Fee Recipient: 0x2ef3...bab
1 wei
Transfer*238322042025-11-19 9:21:3594 days ago1763544095
Smart Account by Safe Fee Recipient: 0x2ef3...bab
1 wei
Transfer*238322022025-11-19 9:21:1194 days ago1763544071
Smart Account by Safe Fee Recipient: 0x2ef3...bab
1 wei
Transfer*238322002025-11-19 9:20:4794 days ago1763544047
Smart Account by Safe Fee Recipient: 0x2ef3...bab
1 wei
Transfer*238321952025-11-19 9:19:4794 days ago1763543987
Smart Account by Safe Fee Recipient: 0x2ef3...bab
1 wei
Transfer*238321932025-11-19 9:19:2394 days ago1763543963
Smart Account by Safe Fee Recipient: 0x2ef3...bab
1 wei
Transfer*238321902025-11-19 9:18:4794 days ago1763543927
Smart Account by Safe Fee Recipient: 0x2ef3...bab
1 wei
Transfer*238321882025-11-19 9:18:2394 days ago1763543903
Smart Account by Safe Fee Recipient: 0x2ef3...bab
1 wei
Transfer*238321852025-11-19 9:17:4794 days ago1763543867
Smart Account by Safe Fee Recipient: 0x2ef3...bab
1 wei
Transfer*238321822025-11-19 9:17:1194 days ago1763543831
Smart Account by Safe Fee Recipient: 0x2ef3...bab
1 wei
Transfer*238321802025-11-19 9:16:4794 days ago1763543807
Smart Account by Safe Fee Recipient: 0x2ef3...bab
1 wei
Transfer*238321772025-11-19 9:16:1194 days ago1763543771
Smart Account by Safe Fee Recipient: 0x2ef3...bab
1 wei
Transfer*238321742025-11-19 9:15:3594 days ago1763543735
Smart Account by Safe Fee Recipient: 0x2ef3...bab
1 wei
Transfer*238321692025-11-19 9:14:3594 days ago1763543675
Smart Account by Safe Fee Recipient: 0x2ef3...bab
1 wei
Transfer*238321662025-11-19 9:13:5994 days ago1763543639
Smart Account by Safe Fee Recipient: 0x2ef3...bab
1 wei
Transfer*238321632025-11-19 9:13:2394 days ago1763543603
Smart Account by Safe Fee Recipient: 0x2ef3...bab
1 wei
Transfer*238321612025-11-19 9:12:5994 days ago1763543579
Smart Account by Safe Fee Recipient: 0x2ef3...bab
1 wei
Transfer*238321582025-11-19 9:12:2394 days ago1763543543
Smart Account by Safe Fee Recipient: 0x2ef3...bab
1 wei
Transfer*238321552025-11-19 9:11:4794 days ago1763543507
Smart Account by Safe Fee Recipient: 0x2ef3...bab
1 wei
Transfer*238321532025-11-19 9:11:2394 days ago1763543483
Smart Account by Safe Fee Recipient: 0x2ef3...bab
1 wei
View All Internal Transactions
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

 Latest 25 blocks (From a total of 1,068 blocks with 10.69 Ether produced)

Block Transaction Difficulty Gas Used Reward
244966682026-02-20 7:47:472 days ago1771573667540.00 TH6,819,063 (11.37%)
0.001480835574546742 ETH
244940022026-02-19 22:53:112 days ago17715415911530.00 TH8,986,258 (14.98%)
0.002622260754848822 ETH
244923392026-02-19 17:18:472 days ago17715215274440.00 TH34,444,657 (57.41%)
0.004423563863112729 ETH
244898642026-02-19 9:01:592 days ago17714917191170.00 TH12,068,375 (20.11%)
0.004158852348413053 ETH
244753472026-02-17 8:26:355 days ago1771316795570.00 TH2,701,940 (4.50%)
0.001023093333853339 ETH
244648482026-02-15 21:18:596 days ago1771190339500.00 TH3,513,889 (5.86%)
0.001622054865651062 ETH
244482882026-02-13 13:54:238 days ago1770990863600.00 TH3,404,542 (5.67%)
0.003108036392191735 ETH
244440222026-02-12 23:36:479 days ago17709394071770.00 TH47,123,882 (78.54%)
0.002816561773589801 ETH
244366262026-02-11 22:50:4710 days ago17708502471830.00 TH10,423,462 (17.37%)
0.002618827171731429 ETH
244347582026-02-11 16:35:1110 days ago17708277111550.00 TH10,473,588 (17.46%)
0.007702919308776372 ETH
244237172026-02-10 3:34:2312 days ago1770694463790.00 TH3,721,793 (6.20%)
0.002251982908432197 ETH
244089432026-02-08 1:54:3514 days ago17705156751190.00 TH4,983,807 (8.31%)
0.001198879476325011 ETH
243968372026-02-06 9:18:1115 days ago17703694914280.00 TH30,515,835 (50.86%)
0.00249005283993274 ETH
243875042026-02-05 1:58:3517 days ago17702567153390.00 TH17,997,077 (30.00%)
0.003152052845297323 ETH
243823362026-02-04 8:37:2318 days ago1770194243700.00 TH4,086,211 (6.81%)
0.002231009771209679 ETH
243716832026-02-02 20:52:5919 days ago17700655791190.00 TH4,886,111 (8.14%)
0.003415362435396484 ETH
243716692026-02-02 20:50:1119 days ago17700654111220.00 TH9,775,799 (16.29%)
0.005746385402962237 ETH
243659632026-02-02 1:42:3520 days ago1769996555620.00 TH4,352,811 (7.25%)
0.001189912440619607 ETH
243513232026-01-31 0:39:2322 days ago1769819963490.00 TH3,561,170 (5.94%)
0.001340956513236967 ETH
243459362026-01-30 6:37:3523 days ago17697550557590.00 TH20,147,970 (33.58%)
0.004797358895213481 ETH
243322532026-01-28 8:49:3525 days ago17695901751620.00 TH9,369,075 (15.62%)
0.00589847702540843 ETH
243317262026-01-28 7:03:5925 days ago1769583839830.00 TH7,529,422 (12.55%)
0.002057832322313793 ETH
243226252026-01-27 0:36:4726 days ago17694742073760.00 TH16,697,260 (27.83%)
0.00351698181539091 ETH
243208182026-01-26 18:33:1126 days ago1769452391950.00 TH7,698,285 (12.83%)
0.005021110321204035 ETH
243191312026-01-26 12:53:4726 days ago1769432027580.00 TH3,961,185 (6.60%)
0.002697183615632203 ETH
View All Blocks Produced

Latest 25 from a total of 18311 withdrawals (710.624205561 ETH withdrawn)

Validator Index Block Amount
1393245110012026-02-22 7:45:351 hr ago17717463351.16244943 ETH
1392245110012026-02-22 7:45:351 hr ago17717463351.067709173 ETH
1391245110012026-02-22 7:45:351 hr ago17717463351.214405145 ETH
1393244511562026-02-13 23:30:478 days ago17710254471.169059936 ETH
1392244511562026-02-13 23:30:478 days ago17710254471.352269124 ETH
1391244511562026-02-13 23:30:478 days ago17710254471.309665471 ETH
1393243909822026-02-05 13:39:5916 days ago17702987991.285501621 ETH
1392243909822026-02-05 13:39:5916 days ago17702987991.298499573 ETH
1391243909822026-02-05 13:39:5916 days ago17702987991.15927215 ETH
1393243306992026-01-28 3:37:4725 days ago17695714671.365749621 ETH
1392243306992026-01-28 3:37:4725 days ago17695714671.320007843 ETH
1391243306992026-01-28 3:37:4725 days ago17695714671.178279918 ETH
1393242704302026-01-19 17:51:3533 days ago17688450951.140929124 ETH
1392242704302026-01-19 17:51:3533 days ago17688450951.374909159 ETH
1391242704302026-01-19 17:51:3533 days ago17688450951.232385074 ETH
1393242099272026-01-11 7:19:2342 days ago17681159631.375426622 ETH
1392242099272026-01-11 7:19:2342 days ago17681159631.246457181 ETH
1391242099272026-01-11 7:19:2342 days ago17681159631.340428492 ETH
1393241489922026-01-02 19:18:2350 days ago17673815031.626725522 ETH
1392241489912026-01-02 19:18:1150 days ago17673814911.256072021 ETH
1391241489912026-01-02 19:18:1150 days ago17673814911.258184902 ETH
1393240874342025-12-25 5:04:5959 days ago17666390991.270220498 ETH
1392240874342025-12-25 5:04:5959 days ago17666390991.408141109 ETH
1391240874342025-12-25 5:04:5959 days ago17666390991.546809461 ETH
1393240252622025-12-16 12:47:2367 days ago17658892431.168279118 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 - <richard@gnosis.io>
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 - <stefan@gnosis.io>
/// @author Richard Meissner - <richard@gnosis.io>
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 - <stefan@gnosis.pm>
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
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.