More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 2,378 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Append To Distri... | 4607773 | 2543 days ago | IN | 0 ETH | 0.0048175 | ||||
Append To Distri... | 4607772 | 2543 days ago | IN | 0 ETH | 0.00481622 | ||||
Append To Distri... | 4607772 | 2543 days ago | IN | 0 ETH | 0.0048175 | ||||
Append To Distri... | 4607772 | 2543 days ago | IN | 0 ETH | 0.00482006 | ||||
Append To Distri... | 4607772 | 2543 days ago | IN | 0 ETH | 0.00481878 | ||||
Append To Distri... | 4607772 | 2543 days ago | IN | 0 ETH | 0.0048175 | ||||
Append To Distri... | 4607772 | 2543 days ago | IN | 0 ETH | 0.0048175 | ||||
Append To Distri... | 4607772 | 2543 days ago | IN | 0 ETH | 0.0048175 | ||||
Append To Distri... | 4607772 | 2543 days ago | IN | 0 ETH | 0.00481878 | ||||
Append To Distri... | 4607772 | 2543 days ago | IN | 0 ETH | 0.00482006 | ||||
Append To Distri... | 4607772 | 2543 days ago | IN | 0 ETH | 0.0048175 | ||||
Append To Distri... | 4607772 | 2543 days ago | IN | 0 ETH | 0.0048175 | ||||
Append To Distri... | 4607772 | 2543 days ago | IN | 0 ETH | 0.00481878 | ||||
Append To Distri... | 4607771 | 2543 days ago | IN | 0 ETH | 0.0048175 | ||||
Append To Distri... | 4607771 | 2543 days ago | IN | 0 ETH | 0.0048175 | ||||
Append To Distri... | 4607771 | 2543 days ago | IN | 0 ETH | 0.00481878 | ||||
Append To Distri... | 4607771 | 2543 days ago | IN | 0 ETH | 0.00481878 | ||||
Append To Distri... | 4607771 | 2543 days ago | IN | 0 ETH | 0.0048175 | ||||
Append To Distri... | 4607771 | 2543 days ago | IN | 0 ETH | 0.00481878 | ||||
Append To Distri... | 4607771 | 2543 days ago | IN | 0 ETH | 0.00481878 | ||||
Append To Distri... | 4607771 | 2543 days ago | IN | 0 ETH | 0.00482006 | ||||
Append To Distri... | 4607771 | 2543 days ago | IN | 0 ETH | 0.00481878 | ||||
Append To Distri... | 4607771 | 2543 days ago | IN | 0 ETH | 0.00481622 | ||||
Append To Distri... | 4607771 | 2543 days ago | IN | 0 ETH | 0.00481878 | ||||
Append To Distri... | 4607770 | 2543 days ago | IN | 0 ETH | 0.00482134 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
BlockvPublicLedger
Compiler Version
v0.4.11+commit.68ef5810
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2017-11-23 */ pragma solidity ^0.4.11; /** * @title Ownable * @dev The Ownable contract has an owner address, and provides basic authorization control * functions, this simplifies the implementation of "user permissions". */ contract Ownable { address public owner; /** * @dev The Ownable constructor sets the original `owner` of the contract to the sender * account. */ function Ownable() { owner = msg.sender; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(msg.sender == owner); _; } /** * @dev Allows the current owner to transfer control of the contract to a newOwner. * @param newOwner The address to transfer ownership to. */ function transferOwnership(address newOwner) onlyOwner { if (newOwner != address(0)) { owner = newOwner; } } } contract BlockvPublicLedger is Ownable { struct logEntry{ string txType; string txId; address to; uint256 amountContributed; uint8 discount; uint256 blockTimestamp; } struct distributionEntry{ string txId; address to; uint256 amountContributed; uint8 discount; uint256 tokenAmount; } struct index { uint256 index; bool set; } uint256 public txCount = 0; uint256 public distributionEntryCount = 0; mapping (string => index) distributionIndex; logEntry[] public transactionLog; distributionEntry[] public distributionList; bool public distributionFixed = false; /** * @dev BlockvPublicLedger Constructor * Runs only on initial contract creation. */ function BlockvPublicLedger() { } /** * @dev update/create a record in the Distribution List * @param _tx_id A unique id for the transaction, could be the BTC or ETH tx_id * @param _to The address to transfer to. * @param _amount The amount contributed in ETH grains. * @param _discount The discount value in percent; 100 meaning no discount, 80 meaning 20% discount. */ function appendToDistributionList(string _tx_id, address _to, uint256 _amount, uint8 _discount) onlyOwner returns (bool) { index memory idx = distributionIndex[_tx_id]; bool ret; logEntry memory le; distributionEntry memory de; if(distributionFixed) { revert(); } if ( _discount > 100 ) { revert(); } /* build the log record and add it to the transaction log first */ if ( !idx.set ) { ret = false; le.txType = "INSERT"; } else { ret = true; le.txType = "UPDATE"; } le.to = _to; le.amountContributed = _amount; le.blockTimestamp = block.timestamp; le.txId = _tx_id; le.discount = _discount; transactionLog.push(le); txCount++; /* now append or update the distributionList */ de.txId = _tx_id; de.to = _to; de.amountContributed = _amount; de.discount = _discount; de.tokenAmount = 0; if (!idx.set) { idx.index = distributionEntryCount; idx.set = true; distributionIndex[_tx_id] = idx; distributionList.push(de); distributionEntryCount++; } else { distributionList[idx.index] = de; } return ret; } /** * @dev finalize the distributionList after token price is set and ETH conversion is known * @param _tokenPrice the price of a VEE in USD-cents * @param _usdToEthConversionRate in grains */ function fixDistribution(uint8 _tokenPrice, uint256 _usdToEthConversionRate) onlyOwner { distributionEntry memory de; logEntry memory le; uint256 i = 0; if(distributionFixed) { revert(); } for(i = 0; i < distributionEntryCount; i++) { de = distributionList[i]; de.tokenAmount = (de.amountContributed * _usdToEthConversionRate * 100) / (_tokenPrice * de.discount / 100); distributionList[i] = de; } distributionFixed = true; le.txType = "FIXED"; le.blockTimestamp = block.timestamp; le.txId = "__FIXED__DISTRIBUTION__"; transactionLog.push(le); txCount++; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"distributionFixed","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"txCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"transactionLog","outputs":[{"name":"txType","type":"string"},{"name":"txId","type":"string"},{"name":"to","type":"address"},{"name":"amountContributed","type":"uint256"},{"name":"discount","type":"uint8"},{"name":"blockTimestamp","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_tx_id","type":"string"},{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"},{"name":"_discount","type":"uint8"}],"name":"appendToDistributionList","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"distributionList","outputs":[{"name":"txId","type":"string"},{"name":"to","type":"address"},{"name":"amountContributed","type":"uint256"},{"name":"discount","type":"uint8"},{"name":"tokenAmount","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"distributionEntryCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_tokenPrice","type":"uint8"},{"name":"_usdToEthConversionRate","type":"uint256"}],"name":"fixDistribution","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"type":"function"},{"inputs":[],"payable":false,"type":"constructor"}]
Contract Creation Code
6060604052600060018190556002556006805460ff19169055341561002057fe5b5b5b60008054600160a060020a03191633600160a060020a03161790555b5b5b610f638061004f6000396000f300606060405236156100965763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166317dec7af81146100985780633c540687146100bc57806369594cfa146100de57806375257013146102215780638da5cb5b146102a4578063ba5c3a9d146102d0578063d6ea5a0e14610395578063d8faefc9146103b7578063f2fde38b146103d2575bfe5b34156100a057fe5b6100a86103f0565b604080519115158252519081900360200190f35b34156100c457fe5b6100cc6103f9565b60408051918252519081900360200190f35b34156100e657fe5b6100f16004356103ff565b60408051600160a060020a038616918101919091526060810184905260ff8316608082015260a0810182905260c08082528754600260001961010060018416150201909116049082018190528190602082019060e08301908a9080156101985780601f1061016d57610100808354040283529160200191610198565b820191906000526020600020905b81548152906001019060200180831161017b57829003601f168201915b505083810382528854600260001961010060018416150201909116048082526020909101908990801561020c5780601f106101e15761010080835404028352916020019161020c565b820191906000526020600020905b8154815290600101906020018083116101ef57829003601f168201915b50509850505050505050505060405180910390f35b341561022957fe5b6100a8600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284375094965050508335600160a060020a031693602081013593506040013560ff1691506104509050565b604080519115158252519081900360200190f35b34156102ac57fe5b6102b4610898565b60408051600160a060020a039092168252519081900360200190f35b34156102d857fe5b6102e36004356108a7565b60408051600160a060020a038616602082015290810184905260ff831660608201526080810182905260a0808252865460026000196101006001841615020190911604908201819052819060c0820190889080156103825780601f1061035757610100808354040283529160200191610382565b820191906000526020600020905b81548152906001019060200180831161036557829003601f168201915b5050965050505050505060405180910390f35b341561039d57fe5b6100cc6108f3565b60408051918252519081900360200190f35b34156103bf57fe5b6103d060ff600435166024356108f9565b005b34156103da57fe5b6103d0600160a060020a0360043516610c43565b005b60065460ff1681565b60015481565b600480548290811061040d57fe5b906000526020600020906006020160005b5060028101546003820154600483015460058401549394506001850193600160a060020a039093169260ff9091169086565b600061045a610c8f565b6000610464610ca6565b61046c610ce9565b60005433600160a060020a039081169116146104885760006000fd5b6003896040518082805190602001908083835b602083106104ba5780518252601f19909201916020918201910161049b565b51815160209384036101000a6000190180199092169116179052920194855250604080519485900382018520858201909152805485526001015460ff9081161515918501919091526006549397509290921615915061051b90505760006000fd5b60648660ff16111561052d5760006000fd5b836020015115156105775760408051808201909152600681527f494e53455254000000000000000000000000000000000000000000000000000060208201528252600092506105b2565b60408051808201909152600681527f555044415445000000000000000000000000000000000000000000000000000060208201528252600192505b600160a060020a0388166040830152606082018790524260a08301526020820189905260ff8616608083015260048054600181016105f08382610d1f565b916000526020600020906006020160005b508351805185929161061891839160200190610d51565b5060208281015180516106319260018501920190610d51565b50604082810151600283018054600160a060020a031916600160a060020a03928316179055606080850151600385015560808086015160048601805460ff191660ff92831617905560a09096015160059095019490945560018054810190558e8752908d166020808801919091529186018c9052928a1692850192909252600090840152850151151590506107f757600254845260016020808601919091526040518a5186926003928d9290918291908401908083835b602083106107075780518252601f1990920191602091820191016106e8565b51815160209384036101000a60001901801990921691161790529201948552506040519384900381019093208451815593909201516001938401805460ff1916911515919091179055505060058054909181016107648382610dd0565b916000526020600020906005020160005b508251805184929161078c91839160200190610d51565b50602082015160018281018054600160a060020a031916600160a060020a03909316929092179091556040830151600280840191909155606084015160038401805460ff191660ff909216919091179055608090930151600490920191909155815401905550610887565b835160058054839290811061080857fe5b906000526020600020906005020160005b508151805161082f918391602090910190610d51565b506020820151600182018054600160a060020a031916600160a060020a0390921691909117905560408201516002820155606082015160038201805460ff191660ff9092169190911790556080909101516004909101555b8294505b5b50505050949350505050565b600054600160a060020a031681565b60058054829081106108b557fe5b906000526020600020906005020160005b506001810154600282015460038301546004840154939450600160a060020a0390921692909160ff169085565b60025481565b610901610ce9565b610909610ca6565b6000805433600160a060020a039081169116146109265760006000fd5b5060065460009060ff161561093b5760006000fd5b5060005b600254811015610b0357600580548290811061095757fe5b906000526020600020906005020160005b5060408051825460c06020601f60026000196101006001871615020190941693909304928301819004028301810190935260a0820181815291939284929184918401828280156109f95780601f106109ce576101008083540402835291602001916109f9565b820191906000526020600020905b8154815290600101906020018083116109dc57829003601f168201915b50505091835250506001820154600160a060020a0316602082015260028201546040820152600382015460ff908116606080840191909152600490930154608090920191909152908201519194506064918702165b0460ff1684846040015102606402811515610a6557fe5b0460808401526005805484919083908110610a7c57fe5b906000526020600020906005020160005b5081518051610aa3918391602090910190610d51565b506020820151600182018054600160a060020a031916600160a060020a0390921691909117905560408201516002820155606082015160038201805460ff191660ff9092169190911790556080909101516004909101555b60010161093f565b6006805460ff19166001908117909155604080518082018252600581527f46495845440000000000000000000000000000000000000000000000000000006020808301919091529085524260a08601528151808301909252601782527f5f5f46495845445f5f444953545249425554494f4e5f5f000000000000000000828201528401526004805490918101610b998382610d1f565b916000526020600020906006020160005b5083518051859291610bc191839160200190610d51565b506020828101518051610bda9260018501920190610d51565b506040820151600282018054600160a060020a031916600160a060020a0390921691909117905560608201516003820155608082015160048201805460ff191660ff90921691909117905560a0909101516005909101555060018054810190555b5b5050505050565b60005433600160a060020a03908116911614610c5f5760006000fd5b600160a060020a03811615610c8a5760008054600160a060020a031916600160a060020a0383161790555b5b5b50565b604080518082019091526000808252602082015290565b60c060405190810160405280610cba610e02565b8152602001610cc7610e02565b8152600060208201819052604082018190526060820181905260809091015290565b60a060405190810160405280610cc7610e02565b8152600060208201819052604082018190526060820181905260809091015290565b815481835581811511610d4b57600602816006028360005260206000209182019101610d4b9190610e14565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610d9257805160ff1916838001178555610dbf565b82800160010185558215610dbf579182015b82811115610dbf578251825591602001919060010190610da4565b5b50610dcc929150610e78565b5090565b815481835581811511610d4b57600502816005028360005260206000209182019101610d4b9190610e99565b5b505050565b60408051602081019091526000815290565b610e7591905b80821115610dcc576000610e2e8282610eef565b610e3c600183016000610eef565b50600281018054600160a060020a031916905560006003820181905560048201805460ff191690556005820155600601610e1a565b5090565b90565b610e7591905b80821115610dcc5760008155600101610e7e565b5090565b90565b610e7591905b80821115610dcc576000610eb38282610eef565b50600181018054600160a060020a031916905560006002820181905560038201805460ff191690556004820155600501610e9f565b5090565b90565b50805460018160011615610100020316600290046000825580601f10610f155750610c8a565b601f016020900490600052602060002090810190610c8a9190610e78565b5b505600a165627a7a72305820a7ef199d4b6674fe979f8f16cc57e9537846c195d8c0c1c0ca785819f7f9232d0029
Deployed Bytecode
0x606060405236156100965763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166317dec7af81146100985780633c540687146100bc57806369594cfa146100de57806375257013146102215780638da5cb5b146102a4578063ba5c3a9d146102d0578063d6ea5a0e14610395578063d8faefc9146103b7578063f2fde38b146103d2575bfe5b34156100a057fe5b6100a86103f0565b604080519115158252519081900360200190f35b34156100c457fe5b6100cc6103f9565b60408051918252519081900360200190f35b34156100e657fe5b6100f16004356103ff565b60408051600160a060020a038616918101919091526060810184905260ff8316608082015260a0810182905260c08082528754600260001961010060018416150201909116049082018190528190602082019060e08301908a9080156101985780601f1061016d57610100808354040283529160200191610198565b820191906000526020600020905b81548152906001019060200180831161017b57829003601f168201915b505083810382528854600260001961010060018416150201909116048082526020909101908990801561020c5780601f106101e15761010080835404028352916020019161020c565b820191906000526020600020905b8154815290600101906020018083116101ef57829003601f168201915b50509850505050505050505060405180910390f35b341561022957fe5b6100a8600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284375094965050508335600160a060020a031693602081013593506040013560ff1691506104509050565b604080519115158252519081900360200190f35b34156102ac57fe5b6102b4610898565b60408051600160a060020a039092168252519081900360200190f35b34156102d857fe5b6102e36004356108a7565b60408051600160a060020a038616602082015290810184905260ff831660608201526080810182905260a0808252865460026000196101006001841615020190911604908201819052819060c0820190889080156103825780601f1061035757610100808354040283529160200191610382565b820191906000526020600020905b81548152906001019060200180831161036557829003601f168201915b5050965050505050505060405180910390f35b341561039d57fe5b6100cc6108f3565b60408051918252519081900360200190f35b34156103bf57fe5b6103d060ff600435166024356108f9565b005b34156103da57fe5b6103d0600160a060020a0360043516610c43565b005b60065460ff1681565b60015481565b600480548290811061040d57fe5b906000526020600020906006020160005b5060028101546003820154600483015460058401549394506001850193600160a060020a039093169260ff9091169086565b600061045a610c8f565b6000610464610ca6565b61046c610ce9565b60005433600160a060020a039081169116146104885760006000fd5b6003896040518082805190602001908083835b602083106104ba5780518252601f19909201916020918201910161049b565b51815160209384036101000a6000190180199092169116179052920194855250604080519485900382018520858201909152805485526001015460ff9081161515918501919091526006549397509290921615915061051b90505760006000fd5b60648660ff16111561052d5760006000fd5b836020015115156105775760408051808201909152600681527f494e53455254000000000000000000000000000000000000000000000000000060208201528252600092506105b2565b60408051808201909152600681527f555044415445000000000000000000000000000000000000000000000000000060208201528252600192505b600160a060020a0388166040830152606082018790524260a08301526020820189905260ff8616608083015260048054600181016105f08382610d1f565b916000526020600020906006020160005b508351805185929161061891839160200190610d51565b5060208281015180516106319260018501920190610d51565b50604082810151600283018054600160a060020a031916600160a060020a03928316179055606080850151600385015560808086015160048601805460ff191660ff92831617905560a09096015160059095019490945560018054810190558e8752908d166020808801919091529186018c9052928a1692850192909252600090840152850151151590506107f757600254845260016020808601919091526040518a5186926003928d9290918291908401908083835b602083106107075780518252601f1990920191602091820191016106e8565b51815160209384036101000a60001901801990921691161790529201948552506040519384900381019093208451815593909201516001938401805460ff1916911515919091179055505060058054909181016107648382610dd0565b916000526020600020906005020160005b508251805184929161078c91839160200190610d51565b50602082015160018281018054600160a060020a031916600160a060020a03909316929092179091556040830151600280840191909155606084015160038401805460ff191660ff909216919091179055608090930151600490920191909155815401905550610887565b835160058054839290811061080857fe5b906000526020600020906005020160005b508151805161082f918391602090910190610d51565b506020820151600182018054600160a060020a031916600160a060020a0390921691909117905560408201516002820155606082015160038201805460ff191660ff9092169190911790556080909101516004909101555b8294505b5b50505050949350505050565b600054600160a060020a031681565b60058054829081106108b557fe5b906000526020600020906005020160005b506001810154600282015460038301546004840154939450600160a060020a0390921692909160ff169085565b60025481565b610901610ce9565b610909610ca6565b6000805433600160a060020a039081169116146109265760006000fd5b5060065460009060ff161561093b5760006000fd5b5060005b600254811015610b0357600580548290811061095757fe5b906000526020600020906005020160005b5060408051825460c06020601f60026000196101006001871615020190941693909304928301819004028301810190935260a0820181815291939284929184918401828280156109f95780601f106109ce576101008083540402835291602001916109f9565b820191906000526020600020905b8154815290600101906020018083116109dc57829003601f168201915b50505091835250506001820154600160a060020a0316602082015260028201546040820152600382015460ff908116606080840191909152600490930154608090920191909152908201519194506064918702165b0460ff1684846040015102606402811515610a6557fe5b0460808401526005805484919083908110610a7c57fe5b906000526020600020906005020160005b5081518051610aa3918391602090910190610d51565b506020820151600182018054600160a060020a031916600160a060020a0390921691909117905560408201516002820155606082015160038201805460ff191660ff9092169190911790556080909101516004909101555b60010161093f565b6006805460ff19166001908117909155604080518082018252600581527f46495845440000000000000000000000000000000000000000000000000000006020808301919091529085524260a08601528151808301909252601782527f5f5f46495845445f5f444953545249425554494f4e5f5f000000000000000000828201528401526004805490918101610b998382610d1f565b916000526020600020906006020160005b5083518051859291610bc191839160200190610d51565b506020828101518051610bda9260018501920190610d51565b506040820151600282018054600160a060020a031916600160a060020a0390921691909117905560608201516003820155608082015160048201805460ff191660ff90921691909117905560a0909101516005909101555060018054810190555b5b5050505050565b60005433600160a060020a03908116911614610c5f5760006000fd5b600160a060020a03811615610c8a5760008054600160a060020a031916600160a060020a0383161790555b5b5b50565b604080518082019091526000808252602082015290565b60c060405190810160405280610cba610e02565b8152602001610cc7610e02565b8152600060208201819052604082018190526060820181905260809091015290565b60a060405190810160405280610cc7610e02565b8152600060208201819052604082018190526060820181905260809091015290565b815481835581811511610d4b57600602816006028360005260206000209182019101610d4b9190610e14565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610d9257805160ff1916838001178555610dbf565b82800160010185558215610dbf579182015b82811115610dbf578251825591602001919060010190610da4565b5b50610dcc929150610e78565b5090565b815481835581811511610d4b57600502816005028360005260206000209182019101610d4b9190610e99565b5b505050565b60408051602081019091526000815290565b610e7591905b80821115610dcc576000610e2e8282610eef565b610e3c600183016000610eef565b50600281018054600160a060020a031916905560006003820181905560048201805460ff191690556005820155600601610e1a565b5090565b90565b610e7591905b80821115610dcc5760008155600101610e7e565b5090565b90565b610e7591905b80821115610dcc576000610eb38282610eef565b50600181018054600160a060020a031916905560006002820181905560038201805460ff191690556004820155600501610e9f565b5090565b90565b50805460018160011615610100020316600290046000825580601f10610f155750610c8a565b601f016020900490600052602060002090810190610c8a9190610e78565b5b505600a165627a7a72305820a7ef199d4b6674fe979f8f16cc57e9537846c195d8c0c1c0ca785819f7f9232d0029
Swarm Source
bzzr://a7ef199d4b6674fe979f8f16cc57e9537846c195d8c0c1c0ca785819f7f9232d
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ 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.