Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
OKX
Exchange
Overview
Max Total Supply
299,999,999.999999994184858317 OKB
Holders
17,511 ( 0.017%)
Market
Price
$38.07 @ 0.015190 ETH (-0.06%)
Onchain Market Cap
$11,421,000,000.00
Circulating Supply Market Cap
$2,282,495,452.00
Other Info
Token Contract (WITH 18 Decimals)
Balance
0.01449155 OKBValue
$0.55 ( ~0.000219449624025497 Eth) [0.0000%]Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|---|---|---|---|---|
1 | OKX | OKB-USDT | $38.04 0.0151825 Eth | $1,257,745.00 32,913.575 OKB | 41.0190% |
2 | LBank | OKB-USDT | $38.19 0.0152174 Eth | $638,159.00 16,710.330 OKB | 20.8255% |
3 | Hotcoin | OKB-USDT | $38.05 0.0151762 Eth | $248,084.00 6,520.028 OKB | 8.1257% |
4 | Azbit | OKB-USDT | $38.05 0.0151839 Eth | $239,165.00 6,248.320 OKB | 7.7871% |
5 | CoinW | OKB-USDT | $38.02 0.0151574 Eth | $115,680.00 3,042.419 OKB | 3.7917% |
6 | Websea | OKB-USDT | $38.14 0.0152008 Eth | $112,411.00 0.000 OKB | 0.0000% |
7 | Bitrue | OKB-USDT | $38.06 0.0151879 Eth | $105,620.00 2,775.286 OKB | 3.4587% |
8 | QMall | OKB-USDT | $38.10 0.0152038 Eth | $104,822.00 2,732.521 OKB | 3.4054% |
9 | Pionex | OKB-USDT | $38.06 0.0151773 Eth | $89,092.00 2,331.427 OKB | 2.9056% |
10 | Bitunix | OKB-USDT | $38.05 0.0151795 Eth | $87,816.00 2,307.738 OKB | 2.8761% |
11 | BitMart | OKB-USDT | $38.03 0.0151681 Eth | $50,681.00 1,332.680 OKB | 1.6609% |
12 | BingX | OKB-USDT | $38.04 0.0151823 Eth | $33,591.00 878.592 OKB | 1.0950% |
13 | Tapbit | OKB-USDT | $38.05 0.0151691 Eth | $17,089.02 447.035 OKB | 0.5571% |
14 | OKX | OKB-BTC | $38.03 0.0151819 Eth | $15,995.76 418.871 OKB | 0.5220% |
15 | Uniswap V3 (Ethereum) | 0X75231F58B43240C9718DD58B4967C5114342A86C-0XC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2 | $38.13 0.0152192 Eth | $14,558.31 391.712 0X75231F58B43240C9718DD58B4967C5114342A86C | 0.4882% |
16 | LATOKEN | OKB-USDT | $38.05 0.0151796 Eth | $14,115.29 370.926 OKB | 0.4623% |
17 | MEXC | OKB-USDT | $38.06 0.0151921 Eth | $11,885.58 312.290 OKB | 0.3892% |
18 | BYDFi | OKB-USDT | $38.06 0.0151788 Eth | $9,259.19 243.290 OKB | 0.3032% |
19 | CoinEx | OKB-USDT | $37.93 0.0151360 Eth | $3,824.98 100.136 OKB | 0.1248% |
20 | Gate.io | OKB-USDT | $38.09 0.0152047 Eth | $3,762.19 98.115 OKB | 0.1223% |
21 | CoinEx | OKB-BTC | $38.22 0.0152344 Eth | $3,400.58 89.000 OKB | 0.1109% |
22 | OKX | OKB-USDC | $38.08 0.0152005 Eth | $2,456.04 64.439 OKB | 0.0803% |
23 | HitBTC | OKB-BTC | $37.67 0.0149592 Eth | $1,378.31 36.590 OKB | 0.0456% |
24 | Uniswap V2 (Ethereum) | 0X75231F58B43240C9718DD58B4967C5114342A86C-0XC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2 | $38.44 0.0153435 Eth | $48.19 1.248 0X75231F58B43240C9718DD58B4967C5114342A86C | 0.0016% |
25 | OKCoin Japan | OKB-JPY | $38.21 0.0152317 Eth | $44.68 1.170 OKB | 0.0015% |
26 | Poloniex | OKB-USDT | $34.16 0.0136342 Eth | $4.02 0.119 OKB | 0.0001% |
27 | Indodax | OKB-IDR | $38.47 0.0153354 Eth | $2.67 0.069 OKB | 0.0001% |
28 | Foxbit | OKB-BRL | $38.06 0.0151926 Eth | $1.52 0.040 OKB | 0.0001% |
Contract Name:
OwnedUpgradeabilityProxy
Compiler Version
v0.4.24+commit.e67f0147
Contract Source Code (Solidity Multiple files format)
pragma solidity ^0.4.24; import './UpgradeabilityProxy.sol'; /** * @title OwnedUpgradeabilityProxy * @dev This contract combines an upgradeability proxy with basic authorization control functionalities */ contract OwnedUpgradeabilityProxy is UpgradeabilityProxy { /** * @dev Event to show ownership has been transferred * @param previousOwner representing the address of the previous owner * @param newOwner representing the address of the new owner */ event ProxyOwnershipTransferred(address previousOwner, address newOwner); // Storage position of the owner of the contract bytes32 private constant proxyOwnerPosition = keccak256("org.zeppelinos.proxy.owner"); /** * @dev the constructor sets the original owner of the contract to the sender account. */ constructor() public { setUpgradeabilityOwner(msg.sender); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyProxyOwner() { require(msg.sender == proxyOwner()); _; } /** * @dev Tells the address of the owner * @return the address of the owner */ function proxyOwner() public view returns (address owner) { bytes32 position = proxyOwnerPosition; assembly { owner := sload(position) } } /** * @dev Sets the address of the owner */ function setUpgradeabilityOwner(address newProxyOwner) internal { bytes32 position = proxyOwnerPosition; assembly { sstore(position, newProxyOwner) } } /** * @dev Allows the current owner to transfer control of the contract to a newOwner. * @param newOwner The address to transfer ownership to. */ function transferProxyOwnership(address newOwner) public onlyProxyOwner { require(newOwner != address(0)); emit ProxyOwnershipTransferred(proxyOwner(), newOwner); setUpgradeabilityOwner(newOwner); } /** * @dev Allows the proxy owner to upgrade the current version of the proxy. * @param implementation representing the address of the new implementation to be set. */ function upgradeTo(address implementation) public onlyProxyOwner { _upgradeTo(implementation); } /** * @dev Allows the proxy owner to upgrade the current version of the proxy and call the new implementation * to initialize whatever is needed through a low level call. * @param implementation representing the address of the new implementation to be set. * @param data represents the msg.data to bet sent in the low level call. This parameter may include the function * signature of the implementation to be called with the needed payload */ function upgradeToAndCall(address implementation, bytes data) payable public onlyProxyOwner { upgradeTo(implementation); require(implementation.delegatecall(data)); } }
pragma solidity ^0.4.24; library Address { /** * Returns whether the target address is a contract * @dev This function will return false if invoked during the constructor of a contract, * as the code is not actually created until after the constructor finishes. * @param account address of the account to check * @return whether the target address is a contract */ function isContract(address account) internal view returns (bool) { uint256 size; // XXX Currently there is no better way to check if there is a contract in an address // than to check the size of the code at that address. // See https://ethereum.stackexchange.com/a/14016/36603 // for more details about how this works. // TODO Check this again before the Serenity release, because all addresses will be // contracts then. // solhint-disable-next-line no-inline-assembly assembly { size := extcodesize(account) } return size > 0; } }
pragma solidity ^0.4.24; /** * @title Proxy * @dev Gives the possibility to delegate any call to a foreign implementation. */ contract Proxy { /** * @dev Tells the address of the implementation where every call will be delegated. * @return address of the implementation to which it will be delegated */ function implementation() public view returns (address); /** * @dev Fallback function allowing to perform a delegatecall to the given implementation. * This function will return whatever the implementation call returns */ function () payable public { address _impl = implementation(); require(_impl != address(0)); assembly { let ptr := mload(0x40) calldatacopy(ptr, 0, calldatasize) let result := delegatecall(gas, _impl, ptr, calldatasize, 0, 0) let size := returndatasize returndatacopy(ptr, 0, size) switch result case 0 { revert(ptr, size) } default { return(ptr, size) } } } }
pragma solidity ^0.4.24; import './Proxy.sol'; import './Address.sol'; /** * @title UpgradeabilityProxy * @dev This contract represents a proxy where the implementation address to which it will delegate can be upgraded */ contract UpgradeabilityProxy is Proxy { /** * @dev This event will be emitted every time the implementation gets upgraded * @param implementation representing the address of the upgraded implementation */ event Upgraded(address indexed implementation); // Storage position of the address of the current implementation bytes32 private constant implementationPosition = keccak256("org.zeppelinos.proxy.implementation"); /** * @dev Constructor function */ constructor() public {} /** * @dev Tells the address of the current implementation * @return address of the current implementation */ function implementation() public view returns (address impl) { bytes32 position = implementationPosition; assembly { impl := sload(position) } } /** * @dev Sets the address of the current implementation * @param newImplementation address representing the new implementation to be set */ function setImplementation(address newImplementation) internal { require(Address.isContract(newImplementation),"newImplementation is not a contractAddress"); bytes32 position = implementationPosition; assembly { sstore(position, newImplementation) } } /** * @dev Upgrades the implementation address * @param newImplementation representing the address of the new implementation to be set */ function _upgradeTo(address newImplementation) internal { address currentImplementation = implementation(); require(currentImplementation != newImplementation); setImplementation(newImplementation); emit Upgraded(newImplementation); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"proxyOwner","outputs":[{"name":"owner","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"implementation","type":"address"}],"name":"upgradeTo","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"implementation","type":"address"},{"name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"implementation","outputs":[{"name":"impl","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferProxyOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"previousOwner","type":"address"},{"indexed":false,"name":"newOwner","type":"address"}],"name":"ProxyOwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"implementation","type":"address"}],"name":"Upgraded","type":"event"}]
Contract Creation Code
608060405234801561001057600080fd5b506100293361002e640100000000026401000000009004565b61006f565b600060405180807f6f72672e7a657070656c696e6f732e70726f78792e6f776e6572000000000000815250601a019050604051809103902090508181555050565b6107ab8061007e6000396000f30060806040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063025313a2146100dc5780633659cfe6146101335780634f1ef286146101765780635c60da1b146101f2578063f1739cae14610249575b600061007761028c565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156100b557600080fd5b60405136600082376000803683855af43d806000843e81600081146100d8578184f35b8184fd5b3480156100e857600080fd5b506100f16102f5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561013f57600080fd5b50610174600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610338565b005b6101f0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610385565b005b3480156101fe57600080fd5b5061020761028c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561025557600080fd5b5061028a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610463565b005b60008060405180807f6f72672e7a657070656c696e6f732e70726f78792e696d706c656d656e74617481526020017f696f6e0000000000000000000000000000000000000000000000000000000000815250602301905060405180910390209050805491505090565b60008060405180807f6f72672e7a657070656c696e6f732e70726f78792e6f776e6572000000000000815250601a01905060405180910390209050805491505090565b6103406102f5565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561037957600080fd5b6103828161058a565b50565b61038d6102f5565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156103c657600080fd5b6103cf82610338565b8173ffffffffffffffffffffffffffffffffffffffff168160405180828051906020019080838360005b838110156104145780820151818401526020810190506103f9565b50505050905090810190601f1680156104415780820380516001836020036101000a031916815260200191505b50915050600060405180830381855af4915050151561045f57600080fd5b5050565b61046b6102f5565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156104a457600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156104e057600080fd5b7f5a3e66efaa1e445ebd894728a69d6959842ea1e97bd79b892797106e270efcd96105096102f5565b82604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a161058781610621565b50565b600061059461028c565b90508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156105d157600080fd5b6105da82610662565b8173ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a25050565b600060405180807f6f72672e7a657070656c696e6f732e70726f78792e6f776e6572000000000000815250601a019050604051809103902090508181555050565b600061066d8261076c565b1515610707576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001807f6e6577496d706c656d656e746174696f6e206973206e6f74206120636f6e747281526020017f616374416464726573730000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60405180807f6f72672e7a657070656c696e6f732e70726f78792e696d706c656d656e74617481526020017f696f6e00000000000000000000000000000000000000000000000000000000008152506023019050604051809103902090508181555050565b600080823b9050600081119150509190505600a165627a7a72305820b21827233f9d2bef4fe7ba531d23ab64a9325b87e4f66551d34e9fa11786d84b0029
Deployed Bytecode
0x60806040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063025313a2146100dc5780633659cfe6146101335780634f1ef286146101765780635c60da1b146101f2578063f1739cae14610249575b600061007761028c565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156100b557600080fd5b60405136600082376000803683855af43d806000843e81600081146100d8578184f35b8184fd5b3480156100e857600080fd5b506100f16102f5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561013f57600080fd5b50610174600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610338565b005b6101f0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610385565b005b3480156101fe57600080fd5b5061020761028c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561025557600080fd5b5061028a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610463565b005b60008060405180807f6f72672e7a657070656c696e6f732e70726f78792e696d706c656d656e74617481526020017f696f6e0000000000000000000000000000000000000000000000000000000000815250602301905060405180910390209050805491505090565b60008060405180807f6f72672e7a657070656c696e6f732e70726f78792e6f776e6572000000000000815250601a01905060405180910390209050805491505090565b6103406102f5565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561037957600080fd5b6103828161058a565b50565b61038d6102f5565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156103c657600080fd5b6103cf82610338565b8173ffffffffffffffffffffffffffffffffffffffff168160405180828051906020019080838360005b838110156104145780820151818401526020810190506103f9565b50505050905090810190601f1680156104415780820380516001836020036101000a031916815260200191505b50915050600060405180830381855af4915050151561045f57600080fd5b5050565b61046b6102f5565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156104a457600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156104e057600080fd5b7f5a3e66efaa1e445ebd894728a69d6959842ea1e97bd79b892797106e270efcd96105096102f5565b82604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a161058781610621565b50565b600061059461028c565b90508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156105d157600080fd5b6105da82610662565b8173ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a25050565b600060405180807f6f72672e7a657070656c696e6f732e70726f78792e6f776e6572000000000000815250601a019050604051809103902090508181555050565b600061066d8261076c565b1515610707576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001807f6e6577496d706c656d656e746174696f6e206973206e6f74206120636f6e747281526020017f616374416464726573730000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60405180807f6f72672e7a657070656c696e6f732e70726f78792e696d706c656d656e74617481526020017f696f6e00000000000000000000000000000000000000000000000000000000008152506023019050604051809103902090508181555050565b600080823b9050600081119150509190505600a165627a7a72305820b21827233f9d2bef4fe7ba531d23ab64a9325b87e4f66551d34e9fa11786d84b0029
Deployed Bytecode Sourcemap
211:2582:1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;583:13:2;599:16;:14;:16::i;:::-;583:32;;646:1;629:19;;:5;:19;;;;621:28;;;;;;;;690:4;684:11;723:12;720:1;715:3;702:34;804:1;801;787:12;782:3;775:5;770:3;757:49;825:14;869:4;866:1;861:3;846:28;889:6;907:1;902:28;;;;959:4;954:3;947:17;902:28;923:4;918:3;911:17;1106:158:1;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1106:158:1;;;;;;;;;;;;;;;;;;;;;;;;;;;2047:102;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2047:102:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;2617:174;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;858:164:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;858:164:3;;;;;;;;;;;;;;;;;;;;;;;;;;;1652:212:1;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1652:212:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;858:164:3;905:12;925:16;614:48;;;;;;;;;;;;;;;;;;;;;;;;925:41;;1003:8;997:15;989:23;;981:37;;:::o;1106:158:1:-;1149:13;1170:16;645:39;;;;;;;;;;;;;;;;;;;1170:37;;1245:8;1239:15;1230:24;;1222:38;;:::o;2047:102::-;986:12;:10;:12::i;:::-;972:26;;:10;:26;;;964:35;;;;;;;;2118:26;2129:14;2118:10;:26::i;:::-;2047:102;:::o;2617:174::-;986:12;:10;:12::i;:::-;972:26;;:10;:26;;;964:35;;;;;;;;2715:25;2725:14;2715:9;:25::i;:::-;2754:14;:27;;2782:4;2754:33;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2754:33:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2746:42;;;;;;;;2617:174;;:::o;1652:212::-;986:12;:10;:12::i;:::-;972:26;;:10;:26;;;964:35;;;;;;;;1758:1;1738:22;;:8;:22;;;;1730:31;;;;;;;;1772:49;1798:12;:10;:12::i;:::-;1812:8;1772:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1827:32;1850:8;1827:22;:32::i;:::-;1652:212;:::o;1607:252:3:-;1669:29;1701:16;:14;:16::i;:::-;1669:48;;1756:17;1731:42;;:21;:42;;;;1723:51;;;;;;;;1780:36;1798:17;1780;:36::i;:::-;1836:17;1827:27;;;;;;;;;;;;1607:252;;:::o;1320:171:1:-;1390:16;645:39;;;;;;;;;;;;;;;;;;;1390:37;;1467:13;1457:8;1450:31;1442:45;;:::o;1179:275:3:-;1345:16;1256:37;1275:17;1256:18;:37::i;:::-;1248:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;614:48;;;;;;;;;;;;;;;;;;;;;;;;1345:41;;1426:17;1416:8;1409:35;1401:49;;:::o;404:616:0:-;464:4;480:12;979:7;967:20;959:28;;1012:1;1005:4;:8;998:15;;404:616;;;;:::o
Swarm Source
bzzr://b21827233f9d2bef4fe7ba531d23ab64a9325b87e4f66551d34e9fa11786d84b
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.