ETH Price: $3,317.18 (-1.27%)
Gas: 12.8 Gwei

Token

minereum (MNE)
 

Overview

Max Total Supply

24,215,004.01408 MNE

Holders

5,536 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 8 Decimals)

Filtered by Token Holder
Minereum: MNE Token
Balance
5 MNE

Value
$0.00
0x426CA1eA2406c07d75Db9585F22781c096e3d0E0
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
minereum

Compiler Version
v0.4.10+commit.f0d539ae

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
/**
 *Submitted for verification at Etherscan.io on 2017-04-21
*/

contract minereum { 

string public name; 
string public symbol; 
uint8 public decimals; 
uint256 public initialSupplyPerAddress;
uint256 public initialBlockCount;
uint256 public rewardPerBlockPerAddress;
uint256 public totalGenesisAddresses;
address public genesisCallerAddress;
uint256 private availableAmount;
uint256 private availableBalance;
uint256 private minedBlocks;
uint256 private totalMaxAvailableAmount;
uint256 private balanceOfAddress;

mapping (address => uint256) public balanceOf; 
mapping (address => bool) public genesisAddress; 

event Transfer(address indexed from, address indexed to, uint256 value); 

function minereum() { 

name = "minereum"; 
symbol = "MNE"; 
decimals = 8; 
initialSupplyPerAddress = 3200000000000;
initialBlockCount = 3516521;
rewardPerBlockPerAddress = 32000;
totalGenesisAddresses = 4268;

genesisCallerAddress = 0x0000000000000000000000000000000000000000;
}

function currentEthBlock() constant returns (uint256 blockNumber)
{
	return block.number;
}

function currentBlock() constant returns (uint256 blockNumber)
{
	return block.number - initialBlockCount;
}

function setGenesisAddressArray(address[] _address) public returns (bool success)
{
	if (block.number <= 3597381)
	{
		if (msg.sender == genesisCallerAddress)
		{
			for (uint i = 0; i < _address.length; i++)
			{
				balanceOf[_address[i]] = initialSupplyPerAddress;
				genesisAddress[_address[i]] = true;
			}
			return true;
		}
	}
	return false;
}


function availableBalanceOf(address _address) constant returns (uint256 Balance)
{
	if (genesisAddress[_address])
	{
		minedBlocks = block.number - initialBlockCount;
		
		if (minedBlocks >= 100000000) return balanceOf[_address];
		
		availableAmount = rewardPerBlockPerAddress*minedBlocks;
		
		totalMaxAvailableAmount = initialSupplyPerAddress - availableAmount;
		
		availableBalance = balanceOf[_address] - totalMaxAvailableAmount;
		
		return availableBalance;
	}
	else
		return balanceOf[_address];
}

function totalSupply() constant returns (uint256 totalSupply)
{	
	minedBlocks = block.number - initialBlockCount;
	availableAmount = rewardPerBlockPerAddress*minedBlocks;
	return availableAmount*totalGenesisAddresses;
}

function maxTotalSupply() constant returns (uint256 maxSupply)
{	
	return initialSupplyPerAddress*totalGenesisAddresses;
}

function transfer(address _to, uint256 _value) { 

if (genesisAddress[_to]) throw;

if (balanceOf[msg.sender] < _value) throw; 

if (balanceOf[_to] + _value < balanceOf[_to]) throw; 

if (genesisAddress[msg.sender])
{
	minedBlocks = block.number - initialBlockCount;
	if (minedBlocks < 100000000)
	{
		availableAmount = rewardPerBlockPerAddress*minedBlocks;
			
		totalMaxAvailableAmount = initialSupplyPerAddress - availableAmount;
		
		availableBalance = balanceOf[msg.sender] - totalMaxAvailableAmount;
			
		if (_value > availableBalance) throw;
	}
}

balanceOf[msg.sender] -= _value; 
balanceOf[_to] += _value; 
Transfer(msg.sender, _to, _value); 
} 

function setGenesisCallerAddress(address _caller) public returns (bool success)
{
	if (genesisCallerAddress != 0x0000000000000000000000000000000000000000) return false;
	
	genesisCallerAddress = _caller;
	
	return true;
}
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"currentEthBlock","outputs":[{"name":"blockNumber","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"initialSupplyPerAddress","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"totalSupply","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalGenesisAddresses","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"availableBalanceOf","outputs":[{"name":"Balance","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_caller","type":"address"}],"name":"setGenesisCallerAddress","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"maxTotalSupply","outputs":[{"name":"maxSupply","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address[]"}],"name":"setGenesisAddressArray","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"genesisAddress","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"rewardPerBlockPerAddress","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"currentBlock","outputs":[{"name":"blockNumber","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"initialBlockCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"genesisCallerAddress","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"inputs":[],"payable":false,"type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"}]

6060604052341561000c57fe5b5b604060405190810160405280600881526020017f6d696e657265756d00000000000000000000000000000000000000000000000081525060009080519060200190610059929190610134565b50604060405190810160405280600381526020017f4d4e450000000000000000000000000000000000000000000000000000000000815250600190805190602001906100a6929190610134565b506008600260006101000a81548160ff021916908360ff1602179055506502e90edd00006003819055506235a869600481905550617d006005819055506110ac6006819055506000600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b6101d9565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061017557805160ff19168380011785556101a3565b828001600101855582156101a3579182015b828111156101a2578251825591602001919060010190610187565b5b5090506101b091906101b4565b5090565b6101d691905b808211156101d25760008160009055506001016101ba565b5090565b90565b610e9080620001e96000396000f300606060405236156100fa576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146100fc57806309f6c607146101955780630ccde0b1146101bb57806318160ddd146101e15780631cc542041461020757806325d998bb1461022d5780632704355c146102775780632ab4d052146102c5578063313ce567146102eb57806370a08231146103175780637e5713d91461036157806395d89b41146103d0578063a9059cbb14610469578063d95efb98146104a8578063e00686e4146104f6578063e12ed13c1461051c578063e5f65c7114610542578063fb65606714610568575bfe5b341561010457fe5b61010c6105ba565b604051808060200182810382528381815181526020019150805190602001908083836000831461015b575b80518252602083111561015b57602082019150602081019050602083039250610137565b505050905090810190601f1680156101875780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561019d57fe5b6101a5610658565b6040518082815260200191505060405180910390f35b34156101c357fe5b6101cb610661565b6040518082815260200191505060405180910390f35b34156101e957fe5b6101f1610667565b6040518082815260200191505060405180910390f35b341561020f57fe5b61021761068e565b6040518082815260200191505060405180910390f35b341561023557fe5b610261600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610694565b6040518082815260200191505060405180910390f35b341561027f57fe5b6102ab600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610804565b604051808215151515815260200191505060405180910390f35b34156102cd57fe5b6102d56108b2565b6040518082815260200191505060405180910390f35b34156102f357fe5b6102fb6108c1565b604051808260ff1660ff16815260200191505060405180910390f35b341561031f57fe5b61034b600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506108d4565b6040518082815260200191505060405180910390f35b341561036957fe5b6103b66004808035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919050506108ec565b604051808215151515815260200191505060405180910390f35b34156103d857fe5b6103e0610a4f565b604051808060200182810382528381815181526020019150805190602001908083836000831461042f575b80518252602083111561042f5760208201915060208101905060208303925061040b565b505050905090810190601f16801561045b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561047157fe5b6104a6600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610aed565b005b34156104b057fe5b6104dc600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610e05565b604051808215151515815260200191505060405180910390f35b34156104fe57fe5b610506610e25565b6040518082815260200191505060405180910390f35b341561052457fe5b61052c610e2b565b6040518082815260200191505060405180910390f35b341561054a57fe5b610552610e38565b6040518082815260200191505060405180910390f35b341561057057fe5b610578610e3e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106505780601f1061062557610100808354040283529160200191610650565b820191906000526020600020905b81548152906001019060200180831161063357829003601f168201915b505050505081565b60004390505b90565b60035481565b60006004544303600a81905550600a54600554026008819055506006546008540290505b90565b60065481565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156107b7576004544303600a819055506305f5e100600a5410151561074957600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506107ff565b600a546005540260088190555060085460035403600b81905550600b54600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540360098190555060095490506107ff565b600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506107ff565b5b919050565b6000600073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561086757600090506108ad565b81600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600190505b919050565b60006006546003540290505b90565b600260009054906101000a900460ff1681565b600d6020528060005260406000206000915090505481565b600060006236e44543111515610a4457600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610a4357600090505b8251811015610a3a57600354600d6000858481518110151561097557fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600e600085848151811015156109d157fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b8080600101915050610957565b60019150610a49565b5b600091505b50919050565b60018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610ae55780601f10610aba57610100808354040283529160200191610ae5565b820191906000526020600020905b815481529060010190602001808311610ac857829003601f168201915b505050505081565b600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610b455760006000fd5b80600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610b925760006000fd5b600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054011015610c205760006000fd5b600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610d01576004544303600a819055506305f5e100600a541015610d0057600a546005540260088190555060085460035403600b81905550600b54600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403600981905550600954811115610cff5760006000fd5b5b5b80600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555080600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35b5050565b600e6020528060005260406000206000915054906101000a900460ff1681565b60055481565b6000600454430390505b90565b60045481565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16815600a165627a7a72305820ecc422cbefd49f5b3567a8df8aa064348f9841fe15f3674e1b67d0e67af3e6680029

Deployed Bytecode

0x606060405236156100fa576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146100fc57806309f6c607146101955780630ccde0b1146101bb57806318160ddd146101e15780631cc542041461020757806325d998bb1461022d5780632704355c146102775780632ab4d052146102c5578063313ce567146102eb57806370a08231146103175780637e5713d91461036157806395d89b41146103d0578063a9059cbb14610469578063d95efb98146104a8578063e00686e4146104f6578063e12ed13c1461051c578063e5f65c7114610542578063fb65606714610568575bfe5b341561010457fe5b61010c6105ba565b604051808060200182810382528381815181526020019150805190602001908083836000831461015b575b80518252602083111561015b57602082019150602081019050602083039250610137565b505050905090810190601f1680156101875780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561019d57fe5b6101a5610658565b6040518082815260200191505060405180910390f35b34156101c357fe5b6101cb610661565b6040518082815260200191505060405180910390f35b34156101e957fe5b6101f1610667565b6040518082815260200191505060405180910390f35b341561020f57fe5b61021761068e565b6040518082815260200191505060405180910390f35b341561023557fe5b610261600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610694565b6040518082815260200191505060405180910390f35b341561027f57fe5b6102ab600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610804565b604051808215151515815260200191505060405180910390f35b34156102cd57fe5b6102d56108b2565b6040518082815260200191505060405180910390f35b34156102f357fe5b6102fb6108c1565b604051808260ff1660ff16815260200191505060405180910390f35b341561031f57fe5b61034b600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506108d4565b6040518082815260200191505060405180910390f35b341561036957fe5b6103b66004808035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919050506108ec565b604051808215151515815260200191505060405180910390f35b34156103d857fe5b6103e0610a4f565b604051808060200182810382528381815181526020019150805190602001908083836000831461042f575b80518252602083111561042f5760208201915060208101905060208303925061040b565b505050905090810190601f16801561045b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561047157fe5b6104a6600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610aed565b005b34156104b057fe5b6104dc600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610e05565b604051808215151515815260200191505060405180910390f35b34156104fe57fe5b610506610e25565b6040518082815260200191505060405180910390f35b341561052457fe5b61052c610e2b565b6040518082815260200191505060405180910390f35b341561054a57fe5b610552610e38565b6040518082815260200191505060405180910390f35b341561057057fe5b610578610e3e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106505780601f1061062557610100808354040283529160200191610650565b820191906000526020600020905b81548152906001019060200180831161063357829003601f168201915b505050505081565b60004390505b90565b60035481565b60006004544303600a81905550600a54600554026008819055506006546008540290505b90565b60065481565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156107b7576004544303600a819055506305f5e100600a5410151561074957600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506107ff565b600a546005540260088190555060085460035403600b81905550600b54600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540360098190555060095490506107ff565b600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506107ff565b5b919050565b6000600073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561086757600090506108ad565b81600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600190505b919050565b60006006546003540290505b90565b600260009054906101000a900460ff1681565b600d6020528060005260406000206000915090505481565b600060006236e44543111515610a4457600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610a4357600090505b8251811015610a3a57600354600d6000858481518110151561097557fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600e600085848151811015156109d157fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b8080600101915050610957565b60019150610a49565b5b600091505b50919050565b60018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610ae55780601f10610aba57610100808354040283529160200191610ae5565b820191906000526020600020905b815481529060010190602001808311610ac857829003601f168201915b505050505081565b600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610b455760006000fd5b80600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610b925760006000fd5b600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054011015610c205760006000fd5b600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610d01576004544303600a819055506305f5e100600a541015610d0057600a546005540260088190555060085460035403600b81905550600b54600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403600981905550600954811115610cff5760006000fd5b5b5b80600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555080600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35b5050565b600e6020528060005260406000206000915054906101000a900460ff1681565b60055481565b6000600454430390505b90565b60045481565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16815600a165627a7a72305820ecc422cbefd49f5b3567a8df8aa064348f9841fe15f3674e1b67d0e67af3e6680029

Swarm Source

bzzr://ecc422cbefd49f5b3567a8df8aa064348f9841fe15f3674e1b67d0e67af3e668
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.