aboutsummaryrefslogtreecommitdiff
path: root/src/cryptonote_basic/cryptonote_basic.h (follow)
AgeCommit message (Collapse)AuthorFilesLines
2022-03-04Copyright: Update to 2022mj-xmr1-1/+1
2021-09-11RPC and ZeroMQ APIs to support p2poolSChernykh1-0/+1
Adds the following: - "get_miner_data" to RPC API - "json-miner-data" to ZeroMQ subscriber contexts Both provide the necessary data to create a custom block template. They are used by p2pool. Data provided: - major fork version - current height - previous block id - RandomX seed hash - network difficulty - median block weight - coins mined by the network so far - mineable mempool transactions
2021-01-23Improve cryptonote (block and tx) binary read performanceLee Clagett1-12/+8
2020-08-17replace most boost serialization with existing monero serializationmoneromooo-monero1-1/+1
This reduces the attack surface for data that can come from malicious sources (exported output and key images, multisig transactions...) since the monero serialization is already exposed to the outside, and the boost lib we were using had a few known crashers. For interoperability, a new load-deprecated-formats wallet setting is added (off by default). This allows loading boost format data if there is no alternative. It will likely go at some point, along with the ability to load those. Notably, the peer lists file still uses the boost serialization code, as the data it stores is define in epee, while the new serialization code is in monero, and migrating it was fairly hairy. Since this file is local and not obtained from anyone else, the marginal risk is minimal, but it could be migrated later if needed. Some tests and tools also do, this will stay as is for now.
2020-05-06Update copyright year to 2020SomaticFanatic1-1/+1
Update copyright year to 2020
2019-09-27monerod can now sync from pruned blocksmoneromooo-monero1-4/+70
If the peer (whether pruned or not itself) supports sending pruned blocks to syncing nodes, the pruned version will be sent along with the hash of the pruned data and the block weight. The original tx hashes can be reconstructed from the pruned txes and theur prunable data hash. Those hashes and the block weights are hashes and checked against the set of precompiled hashes, ensuring the data we received is the original data. It is currently not possible to use this system when not using the set of precompiled hashes, since block weights can not otherwise be checked for validity. This is off by default for now, and is enabled by --sync-pruned-blocks
2019-06-14serialization: check stream good flag at the endmoneromooo-monero1-1/+1
just in case
2019-04-05cryptonote: rework block blob size sanity checkmoneromooo-monero1-0/+2
Use the actual block weight limit, assuming that weight is always greater or equal to size
2019-03-05Update 2019 copyrightbinaryFate1-1/+1
2019-03-05db: speedup block additionmoneromooo-monero1-2/+23
by avoiding repeated (de)serialization
2019-01-22Pruningmoneromooo-monero1-4/+11
The blockchain prunes seven eighths of prunable tx data. This saves about two thirds of the blockchain size, while keeping the node useful as a sync source for an eighth of the blockchain. No other data is currently pruned. There are three ways to prune a blockchain: - run monerod with --prune-blockchain - run "prune_blockchain" in the monerod console - run the monero-blockchain-prune utility The first two will prune in place. Due to how LMDB works, this will not reduce the blockchain size on disk. Instead, it will mark parts of the file as free, so that future data will use that free space, causing the file to not grow until free space grows scarce. The third way will create a second database, a pruned copy of the original one. Since this is a new file, this one will be smaller than the original one. Once the database is pruned, it will stay pruned as it syncs. That is, there is no need to use --prune-blockchain again, etc.
2018-12-31Merge pull request #4946luigi11111-0/+2
6644b9b blockchain_db: remove a couple unused functions (moneromooo-monero) ce594f5 blockchain_db: allocate known size vector only once (moneromooo-monero) 8332698 db_lmdb: inline check_open, it's trivial and called everywhere (moneromooo-monero) 5511563 db_lmdb: avoid pointless division (moneromooo-monero) d1efe3d cryptonote: set tx hash on newly parsed txes when known (moneromooo-monero) 9cc68a2 tx_pool: add a few std::move where it can make a difference (moneromooo-monero)
2018-12-05cryptonote: set tx hash on newly parsed txes when knownmoneromooo-monero1-0/+2
2018-11-30cryptonote: add a set_null for transaction_prefixmoneromooo-monero1-7/+10
Since it's all inline, I suspect the compiler will merge the duplicate stores anyway.
2018-10-07cryptonote: sort tx_extra fieldsmoneromooo-monero1-1/+0
This removes some small amount of fingerprinting entropy. There is no consensus rule to require this since this field is technically free form, and a transaction is free to have custom data in it.
2018-03-14keypair::generate: always require hw::device to avoid possible mistakestoffu1-6/+0
2018-03-14device: untangle cyclic depenencystoffu1-1/+2
When #3303 was merged, a cyclic dependency chain was generated: libdevice <- libcncrypto <- libringct <- libdevice This was because libdevice needs access to a set of basic crypto operations implemented in libringct such as scalarmultBase(), while libringct also needs access to abstracted crypto operations implemented in libdevice such as ecdhEncode(). To untangle this cyclic dependency chain, this patch splits libringct into libringct_basic and libringct, where the basic crypto ops previously in libringct are moved into libringct_basic. The cyclic dependency is now resolved thanks to this separation: libcncrypto <- libringct_basic <- libdevice <- libcryptonote_basic <- libringct This eliminates the need for crypto_device.cpp and rctOps_device.cpp. Also, many abstracted interfaces of hw::device such as encrypt_payment_id() and get_subaddress_secret_key() were previously implemented in libcryptonote_basic (cryptonote_format_utils.cpp) and were then called from hw::core::device_default, which is odd because libdevice is supposed to be independent of libcryptonote_basic. Therefore, those functions were moved to device_default.cpp.
2018-03-04Code modifications to integrate Ledger HW device into monero-wallet-cli.cslashm1-0/+6
The basic approach it to delegate all sensitive data (master key, secret ephemeral key, key derivation, ....) and related operations to the device. As device has low memory, it does not keep itself the values (except for view/spend keys) but once computed there are encrypted (with AES are equivalent) and return back to monero-wallet-cli. When they need to be manipulated by the device, they are decrypted on receive. Moreover, using the client for storing the value in encrypted form limits the modification in the client code. Those values are transfered from one C-structure to another one as previously. The code modification has been done with the wishes to be open to any other hardware wallet. To achieve that a C++ class hw::Device has been introduced. Two initial implementations are provided: the "default", which remaps all calls to initial Monero code, and the "Ledger", which delegates all calls to Ledger device.
2018-01-26Update 2018 copyrightxmr-eric1-1/+1
2018-01-10Merge pull request #2990Riccardo Spagni1-1/+0
2d17feb0 factor STL container serialization (moneromooo-monero)
2017-12-22factor STL container serializationmoneromooo-monero1-1/+0
2017-12-18check accessing an element past the end of a containermoneromooo-monero1-1/+1
2017-10-07Subaddresseskenshi841-0/+26
2017-09-25move checkpoints in a separate librarymoneromooo-monero1-5/+0
2017-04-11Improvements for epee binary to hex functions:Lee Clagett1-1/+0
- Performance improvements - Added `span` for zero-copy pointer+length arguments - Added `std::ostream` overload for direct writing to output buffers - Removal of unused `string_tools::buff_to_hex`
2017-04-03core: fix blob size cache, and reenable hash and blob size cachesmoneromooo-monero1-1/+1
2017-03-25core: avoid possible reordering bugs wth tx/bloch hash cachemoneromooo-monero1-11/+29
2017-03-23core: cache tx and block hashes in the respective classesmoneromooo-monero1-0/+32
An idea from smooth
2017-02-27core: add functions to serialize base tx infomoneromooo-monero1-0/+22
That is, information without signatures (for v1) nor range proofs and MGs (for v2)
2017-02-21update copyright year, fix occasional lack of newline at line endRiccardo Spagni1-1/+1
2017-02-08extract some basic code from libcryptonote_core into libcryptonote_basickenshi841-0/+397