aboutsummaryrefslogtreecommitdiff
path: root/src/cryptonote_config.h (unfollow)
AgeCommit message (Collapse)AuthorFilesLines
2023-10-22cryptonote_config: include cstdintjeffro2561-0/+1
Header was using `uint64_t` without including `<cstdint>` which caused some issues downstream for windows builds
2023-03-17verRctNonSemanticsSimpleCached: fix fragilityJeffrey Ryan1-0/+1
2023-02-26Add a size limit for tx_extra in tx pooltevador1-0/+5
2023-01-16Copyright: Update to 2023mj-xmr1-1/+1
Co-authored-by: plowsof <plowsof@protonmail.com> extra files
2022-07-13derive multisig tx secret keys from an entropy source plus the tx inputs' ↵koe1-0/+2
key images
2022-06-30multisig: fix critical vulnerabilities in signinganon1-0/+1
2022-04-21add a sanity check to RPC input data sizemoneromooo-monero1-0/+1
reported by m31007
2022-04-18Bump ring size to 16 for v15 & remove set default in wallet clij-berman1-0/+1
2022-04-18Add view tags to outputs to reduce wallet scanning timej-berman1-0/+1
Implements view tags as proposed by @UkoeHB in MRL issue https://github.com/monero-project/research-lab/issues/73 At tx construction, the sender adds a 1-byte view tag to each output. The view tag is derived from the sender-receiver shared secret. When scanning for outputs, the receiver can check the view tag for a match, in order to reduce scanning time. When the view tag does not match, the wallet avoids the more expensive EC operations when deriving the output public key using the shared secret.
2022-04-10Fee changes from ArticMinemoneromooo-monero1-0/+2
https://github.com/ArticMine/Monero-Documents/blob/master/MoneroScaling2021-02.pdf with a change to use 1.7 instead of 2.0 for the max long term increase rate
2022-04-05plug bulletproofs plus into consensusmoneromooo-monero1-0/+2
2022-04-04Bulletproofs+Sarang Noether1-0/+2
2022-03-04Copyright: Update to 2022mj-xmr1-1/+1
2022-02-22multisig key exchange update and refactorkoe1-0/+4
2021-02-09New add_aux_pow RPC to support merge miningmoneromooo-monero1-0/+1
2021-01-08remove obsolete pruning debug codemoneromooo-monero1-1/+0
2020-12-29rpc: limit the number of txes for get_blocks.binmoneromooo-monero1-1/+2
2020-12-20Optional DNS based blocklistmoneromooo-monero1-0/+2
If enabled, pulls IPs to block on blocklist.moneropulse.*, and blocks then for 8 days (so IPs dropping from the list will eventually get unblocked, and DNS failures don't result in instant clearing of the blocklist). Enable with --enable-dns-blocklist
2020-12-10protocol: add a sanity check to the number of block hashes sentmoneromooo-monero1-0/+1
2020-12-05p2p: drop peers that spam peer listsmoneromooo-monero1-0/+1
There's always some people who just want to abuse things
2020-11-17Change Dandelion++ fluff probability to 20%, and embargo timeout to 39sLee Clagett1-2/+2
A 20% fluff probability increases the precision of a spy connected to every node by 10% on average, compared to a network using 0% fluff probability. The current value (10% fluff) should increase precision by ~5% compared to baseline. This decreases the expected stem length from 10 to 5. The embargo timeout was therefore lowered to 39s; the fifth node in a stem is expected to have a 90% chance of being the first to timeout, which is the same probability we currently have with an expected stem length of 10 nodes.
2020-10-18bump default number of connections from 8 to 12moneromooo-monero1-1/+1
2020-09-15blockchain: deterministic UNIX time unlock checksmoneromooo-monero1-0/+1
Based on a patch by TheCharlatan <seb.kung@gmail.com>
2020-09-14Remove unused macros from cryptonote_config.hTheCharlatan1-2/+0
2020-08-28Bind signature to full address and signing modeSarang Noether1-1/+1
2020-08-28wallet: allow signing a message with spend or view keymoneromooo-monero1-0/+1
2020-08-27Integrate CLSAGs into moneromoneromooo-monero1-0/+1
They are allowed from v12, and MLSAGs are rejected from v13.
2020-08-27CLSAG signaturesSarang Noether1-0/+3
2020-08-21enforce claiming maximum coinbase amountmoneromooo-monero1-0/+1
Claiming a slightly lesser amount does not yield the size gains that were seen pre rct, so this closes a fingerprinting vector
2020-08-09Updates InProofV1, OutProofV1, and ReserveProofV1 to new V2 variants that ↵Sarang Noether1-0/+1
include all public proof parameters in Schnorr challenges, along with hash function domain separators. Includes new randomized unit tests.
2020-05-15Add randomized delay when forwarding txes from i2p/tor -> ipv4/6Lee Clagett1-0/+5
2020-05-06Update copyright year to 2020SomaticFanatic1-1/+1
Update copyright year to 2020
2020-04-01Hash domain separationSarang Noether1-0/+11
2020-03-26Adding Dandelion++ support to public networks:Lee Clagett1-1/+6
- New flag in NOTIFY_NEW_TRANSACTION to indicate stem mode - Stem loops detected in tx_pool.cpp - Embargo timeout for a blackhole attack during stem phase
2020-03-20p2p: remove old debug commandsAaron Hook1-3/+0
2019-11-04Change to Tx diffusion (Dandelion++ fluff) instead of floodingLee Clagett1-0/+3
2019-10-25daemon, wallet: new pay for RPC use systemmoneromooo-monero1-0/+3
Daemons intended for public use can be set up to require payment in the form of hashes in exchange for RPC service. This enables public daemons to receive payment for their work over a large number of calls. This system behaves similarly to a pool, so payment takes the form of valid blocks every so often, yielding a large one off payment, rather than constant micropayments. This system can also be used by third parties as a "paywall" layer, where users of a service can pay for use by mining Monero to the service provider's address. An example of this for web site access is Primo, a Monero mining based website "paywall": https://github.com/selene-kovri/primo This has some advantages: - incentive to run a node providing RPC services, thereby promoting the availability of third party nodes for those who can't run their own - incentive to run your own node instead of using a third party's, thereby promoting decentralization - decentralized: payment is done between a client and server, with no third party needed - private: since the system is "pay as you go", you don't need to identify yourself to claim a long lived balance - no payment occurs on the blockchain, so there is no extra transactional load - one may mine with a beefy server, and use those credits from a phone, by reusing the client ID (at the cost of some privacy) - no barrier to entry: anyone may run a RPC node, and your expected revenue depends on how much work you do - Sybil resistant: if you run 1000 idle RPC nodes, you don't magically get more revenue - no large credit balance maintained on servers, so they have no incentive to exit scam - you can use any/many node(s), since there's little cost in switching servers - market based prices: competition between servers to lower costs - incentive for a distributed third party node system: if some public nodes are overused/slow, traffic can move to others - increases network security - helps counteract mining pools' share of the network hash rate - zero incentive for a payer to "double spend" since a reorg does not give any money back to the miner And some disadvantages: - low power clients will have difficulty mining (but one can optionally mine in advance and/or with a faster machine) - payment is "random", so a server might go a long time without a block before getting one - a public node's overall expected payment may be small Public nodes are expected to compete to find a suitable level for cost of service. The daemon can be set up this way to require payment for RPC services: monerod --rpc-payment-address 4xxxxxx \ --rpc-payment-credits 250 --rpc-payment-difficulty 1000 These values are an example only. The --rpc-payment-difficulty switch selects how hard each "share" should be, similar to a mining pool. The higher the difficulty, the fewer shares a client will find. The --rpc-payment-credits switch selects how many credits are awarded for each share a client finds. Considering both options, clients will be awarded credits/difficulty credits for every hash they calculate. For example, in the command line above, 0.25 credits per hash. A client mining at 100 H/s will therefore get an average of 25 credits per second. For reference, in the current implementation, a credit is enough to sync 20 blocks, so a 100 H/s client that's just starting to use Monero and uses this daemon will be able to sync 500 blocks per second. The wallet can be set to automatically mine if connected to a daemon which requires payment for RPC usage. It will try to keep a balance of 50000 credits, stopping mining when it's at this level, and starting again as credits are spent. With the example above, a new client will mine this much credits in about half an hour, and this target is enough to sync 500000 blocks (currently about a third of the monero blockchain). There are three new settings in the wallet: - credits-target: this is the amount of credits a wallet will try to reach before stopping mining. The default of 0 means 50000 credits. - auto-mine-for-rpc-payment-threshold: this controls the minimum credit rate which the wallet considers worth mining for. If the daemon credits less than this ratio, the wallet will consider mining to be not worth it. In the example above, the rate is 0.25 - persistent-rpc-client-id: if set, this allows the wallet to reuse a client id across runs. This means a public node can tell a wallet that's connecting is the same as one that connected previously, but allows a wallet to keep their credit balance from one run to the other. Since the wallet only mines to keep a small credit balance, this is not normally worth doing. However, someone may want to mine on a fast server, and use that credit balance on a low power device such as a phone. If left unset, a new client ID is generated at each wallet start, for privacy reasons. To mine and use a credit balance on two different devices, you can use the --rpc-client-secret-key switch. A wallet's client secret key can be found using the new rpc_payments command in the wallet. Note: anyone knowing your RPC client secret key is able to use your credit balance. The wallet has a few new commands too: - start_mining_for_rpc: start mining to acquire more credits, regardless of the auto mining settings - stop_mining_for_rpc: stop mining to acquire more credits - rpc_payments: display information about current credits with the currently selected daemon The node has an extra command: - rpc_payments: display information about clients and their balances The node will forget about any balance for clients which have been inactive for 6 months. Balances carry over on node restart.
2019-10-11blockchain: use effective median block weight for penalty from v12moneromooo-monero1-0/+1
It was using the raw block weight median, which was not what was intended in ArticMine's design
2019-09-27monerod can now sync from pruned blocksmoneromooo-monero1-1/+1
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-09-25RandomX integrationHoward Chu1-0/+1
Support RandomX PoW algorithm
2019-09-17blockchain: enforce 10 block age for spending outputsmoneromooo-monero1-0/+1
Some custom wallet code apparently ignores this, which causes users of that code to be fingerprinted
2019-08-19blockchain: reject rct signatures in coinbase txes from v12moneromooo-monero1-0/+1
2019-08-19core: from v12, require consistent ring size for mixable txesmoneromooo-monero1-0/+1
We're supposed to have a fixed ring size now Already checked by MLSAG verification, but here seems more intuitive
2019-08-19blockchain: forbid v1 coinbase from v12moneromooo-monero1-0/+1
2019-07-17Added support for "noise" over I1P/Tor to mask Tx transmission.Lee Clagett1-0/+10
2019-06-16Bans for RPC connectionsHoward Chu1-0/+2
Make bans control RPC sessions too. And auto-ban some bad requests. Drops HTTP connections whenever response code is 500.
2019-04-23consensus: from v12, enforce >= 2 outputsmoneromooo-monero1-0/+1
2019-04-05cryptonote: rework block blob size sanity checkmoneromooo-monero1-2/+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-04ArticMine's new block weight algorithmmoneromooo-monero1-0/+3
This curbs runaway growth while still allowing substantial spikes in block weight Original specification from ArticMine: here is the scaling proposal Define: LongTermBlockWeight Before fork: LongTermBlockWeight = BlockWeight At or after fork: LongTermBlockWeight = min(BlockWeight, 1.4*LongTermEffectiveMedianBlockWeight) Note: To avoid possible consensus issues over rounding the LongTermBlockWeight for a given block should be calculated to the nearest byte, and stored as a integer in the block itself. The stored LongTermBlockWeight is then used for future calculations of the LongTermEffectiveMedianBlockWeight and not recalculated each time. Define: LongTermEffectiveMedianBlockWeight LongTermEffectiveMedianBlockWeight = max(300000, MedianOverPrevious100000Blocks(LongTermBlockWeight)) Change Definition of EffectiveMedianBlockWeight From (current definition) EffectiveMedianBlockWeight = max(300000, MedianOverPrevious100Blocks(BlockWeight)) To (proposed definition) EffectiveMedianBlockWeight = min(max(300000, MedianOverPrevious100Blocks(BlockWeight)), 50*LongTermEffectiveMedianBlockWeight) Notes: 1) There are no other changes to the existing penalty formula, median calculation, fees etc. 2) There is the requirement to store the LongTermBlockWeight of a block unencrypted in the block itself. This is to avoid possible consensus issues over rounding and also to prevent the calculations from becoming unwieldy as we move away from the fork. 3) When the EffectiveMedianBlockWeight cap is reached it is still possible to mine blocks up to 2x the EffectiveMedianBlockWeight by paying the corresponding penalty. Note: the long term block weight is stored in the database, but not in the actual block itself, since it requires recalculating anyway for verification.
2019-02-26cryptonote_protocol_handler: search for syncing peers in "cruise mode"moneromooo-monero1-0/+1
When all our outgoing peer slots are filled, we cycle one peer at a time looking for syncing peers until we have at least two such peers. This brings two advantages: - Peers without incoming connections will find more syncing peers that before, thereby strengthening network decentralization - Peers will have more resistance to isolation attacks, as they are more likely to find a "good" peer than they were before
2019-01-30i2p: initial supportJethro Grassie1-1/+1
2019-01-28Adding initial support for broadcasting transactions over TorLee Clagett1-0/+1
- Support for ".onion" in --add-exclusive-node and --add-peer - Add --anonymizing-proxy for outbound Tor connections - Add --anonymous-inbounds for inbound Tor connections - Support for sharing ".onion" addresses over Tor connections - Support for broadcasting transactions received over RPC exclusively over Tor (else broadcast over public IP when Tor not enabled).
2019-01-22add a bulletproof version, new bulletproof type, and rct configmoneromooo-monero1-0/+1
This makes it easier to modify the bulletproof format
2019-01-22Pruningmoneromooo-monero1-0/+5
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-10-31Expose limit-rate defaults from command line helpRaskaRuby1-0/+2
2018-10-22blocks: use auto-generated .c files instead of 'LD -r -b binary'xiphon1-0/+1
2018-10-08Revert "Merge pull request #4472"Riccardo Spagni1-1/+0
This reverts commit 79d46c4d551a9b1261801960095bf4d24967211a, reversing changes made to c9fc61dbb56cca442c775faa2554a7460879b637.
2018-10-04blocks: use auto-generated .c files instead of 'LD -r -b binary'xiphon1-0/+1
2018-09-11v8: per byte fee, pad bulletproofs, fixed 11 ring sizemoneromooo-monero1-1/+5
2018-09-11Add a define for the max number of bulletproof multi-outputsmoneromooo-monero1-0/+2
2018-06-11cryptonote_config: add get_config to refactor x = testnet ? ↵stoffu1-0/+56
config::testnet::X : stagenet ? config::stagenet::X : config::X
2018-03-18core: fix use of uninitialised datamoneromooo-monero1-1/+2
2018-03-07Bump min ring size from 5 to 7 from v7moneromooo-monero1-0/+1
2018-03-05Stagenetstoffu1-0/+26
2018-03-05Use `genesis_tx` parameter in `generate_genesis_block`. #3261Jean Pierre Dudey1-1/+1
* src/cryptnote_config.h: The constant `config::testnet::GENESIS_TX` was changed to be the same as `config::GENESIS_TX` (the mainnet's transaction) because the mainnet's transaction was being used for both networks. * src/cryptonote_core/cryptonote_tx_utils.cpp: The `generate_genesis_block` function was ignoring the `genesis_tx` parameter, and instead it was using the `config::GENESIS_TX` constant. That's why the testnet genesis transaction was changed. Also five lines of unused code were removed. Signed-off-by: Jean Pierre Dudey <jeandudey@hotmail.com>
2018-02-14Use `genesis_tx` parameter in `generate_genesis_block`.Jean Pierre Dudey1-1/+1
* src/cryptnote_config.h: The constant `config::testnet::GENESIS_TX` was changed to be the same as `config::GENESIS_TX` (the mainnet's transaction) because the mainnet's transaction was being used for both networks. * src/cryptonote_core/cryptonote_tx_utils.cpp: The `generate_genesis_block` function was ignoring the `genesis_tx` parameter, and instead it was using the `config::GENESIS_TX` constant. That's why the testnet genesis transaction was changed. Also five lines of unused code were removed. Signed-off-by: Jean Pierre Dudey <jeandudey@hotmail.com>
2018-02-07tx_pool: add a max pool size, settable with --max-txpool-sizemoneromooo-monero1-0/+1
2018-02-01txpool: increase unmined tx expiry to three daysmoneromooo-monero1-1/+1
2018-01-26Update 2018 copyrightxmr-eric1-1/+1
2017-10-16subaddress: change prefix so that it starts with 8kenshi841-1/+1
2017-10-07Subaddresseskenshi841-0/+2
2017-09-18precomputed block hashes are now in blocks of N (currently 256)moneromooo-monero1-0/+3
This shaves a lot of space off binaries
2017-09-17protocol: remove hop count on block propagationmoneromooo-monero1-1/+0
It is unused, as it was apparently a future optimization, and it leaks some information (though since pools publish thei blocks they find, that amount seems small).
2017-09-05json serialization for rpc-relevant monero typesThomas Winget1-0/+2
Structured {de-,}serialization methods for (many new) types which are used for requests or responses in the RPC. New types include RPC requests and responses, and structs which compose types within those. # Conflicts: # src/cryptonote_core/blockchain.cpp
2017-08-17cryptonote_protocol: large block sync size before v4moneromooo-monero1-0/+1
2017-08-08Change default block sync size from 200 to 20moneromooo-monero1-1/+1
With the new sync algorithm, the network overhead will be masked as the thread adding blocks isn't interrupted by network calls anymore. This should reduce memory usage a lot during sync.
2017-03-15Add intervening v5 fork for increased min block sizemoneromooo-monero1-0/+5
Minimum mixin 4 and enforced ringct is moved from v5 to v6. v5 is now used for an increased minimum block size (from 60000 to 300000) to cater for larger typical/minimum transaction size. The fee algorithm is also changed to decrease the base per kB fee, and add a cheap tier for those transactions which we do not care if they get delayed (or even included in a block).
2017-03-03core: quantize per kB fee to 8 decimalsmoneromooo-monero1-0/+1
2017-02-21update copyright year, fix occasional lack of newline at line endRiccardo Spagni1-1/+1
2017-02-10Add anchor connectionsMiguel Herranz1-0/+1
Based on https://eprint.iacr.org/2015/263.pdf 4. Anchor connections. Peer list serialisation version bumped to 5.
2017-01-28Update and use blockchain data files definesMiguel Herranz1-2/+2
2016-11-09add lightweight block propagation ("fluffy blocks")Dion Ahmetaj1-0/+3
Added a new command to the P2P protocol definitions to allow querying for support flags. Implemented handling of new support flags command in net_node. Changed for_each callback template to include support flags. Updated print_connections command to show peer support flags. Added p2p constant for signaling fluffy block support. Added get_pool_transaction function to cryptnote_core. Added new commands to cryptonote protocol for relaying fluffy blocks. Implemented handling of fluffy block command in cryptonote protocol. Enabled fluffy block support in node initial configuration. Implemented get_testnet function in cryptonote_core. Made it so that fluffy blocks only run on testnet.
2016-10-31core: dynamic fee algorithm from ArticMinemoneromooo-monero1-0/+4
The fee will vary based on the base reward and the current block size limit: fee = (R/R0) * (M0/M) * F0 R: base reward R0: reference base reward (10 monero) M: block size limit M0: minimum block size limit (60000) F0: 0.002 monero Starts applying at v4
2016-10-12Change default dust threshold to equal fee per kbAwfulCrawler1-1/+1
2016-09-15Decrease minimum fee from 0.01/kB to 0.002/kBmoneromooo-monero1-1/+2
The wallet will start using that fee about two weeks after hard fork 3, when most people will likely have updated their daemons.
2016-08-28add rct to the protocolmoneromooo-monero1-1/+1
It is not yet constrained to a fork, so don't use on the real network or you'll be orphaned or rejected.
2016-01-29Fix V1/V2 use of hard fork related parametersmoneromooo-monero1-3/+3
Some of it uses hardcoded height, which will need some thinking for next (voted upon) fork.
2015-12-31updated copyright yearRiccardo Spagni1-1/+1
2015-12-14Revert connection limit to more customary 8Javier Smooth1-1/+1
2015-11-23Add IP blocking for misbehaving nodes (adapted from Boolberry)Javier Smooth1-0/+5
With minor cleanup and fixes (spelling, indent) by moneromooo
2015-11-13More changes for 2-min blocksJavier Smooth1-1/+2
Use the correct block time for realtime fuzz on locktime Use the correct block time to calculate next_difficulty on alt chains (will not work as-is with voting) Lock unit tests to original block time for now
2015-11-13Adjust difficulty target (2 min) and full reward zone (60 kbytes) for block ↵Javier Smooth1-3/+5
version 2
2015-10-25Fix leak on real output when using a very recent outputmoneromooo-monero1-0/+1
The wallet and the daemon applied different height considerations when selecting outputs to use. This can leak information on which input in a ring signature is the real one. Found and originally fixed by smooth on Aeon.
2015-10-10from hard fork 2, claim a quantized reward in coinbasemoneromooo-monero1-0/+1
The small leftover is carried forward
2015-06-12Integrated addresses (standard address plus payment id)moneromooo-monero1-0/+2
2015-03-04minimum subsidy for mining incentives, remove unused LEGACY_FEE definesmooth1-3/+1
2015-01-02year updated in licenseRiccardo Spagni1-1/+1
2014-12-15DNS seed timeout and fallbackThomas Winget1-0/+2
2014-11-11Disable legacy fees for nowiamsmooth1-1/+1
2014-11-09Remove DEFAULT_FEE, add temporary acceptance of too-small per-kb fee >= 0.1, ↵iamsmooth1-2/+4
denominations based on DEFAULT_DUST_THRESHOLD, document fee arg to create_transactions as unused, se DEFAULT_DUST_THRESHOLD for wallet dust collection instead of calcualted tx fee
2014-11-06per kb feesThomas Winget1-0/+1
2014-09-15Change testnet prefixZachary Michaels1-2/+2
2014-09-15Separate testnet address prefixZachary Michaels1-1/+1
2014-09-15Add testnet genesis tx as output by CN referenceZachary Michaels1-1/+1
2014-09-15Reorganize testnet constantsZachary Michaels1-20/+32
2014-09-15Add testnet constantsZachary Michaels1-0/+16
2014-08-23quick additional patchfluffypony1-2/+1
2014-08-23quick fee ramp to prevent spam attackfluffypony1-3/+4
2014-07-23License updated to BSD 3-clausefluffypony1-3/+29
2014-06-26set max block size for gbtmydesktop1-0/+1
2014-06-15proper tx_pool handling from CryptoZoidberg / BBRfluffypony1-0/+2
2014-05-26raise min fee and correct COIN valuemonero-project1-2/+2
2014-05-250.8.8updatemydesktop1-3/+3
2014-04-30mac osx building fixesmydesktop1-1/+1
2014-04-30voting stoppedthankful_for_today1-1/+1
2014-04-25Changed block minor versionHenry Hartshorne1-1/+1
2014-04-18Bitmonero releasethankful_for_today1-9/+10
2014-04-07Improvements in JSON RPCAntonio Juarez1-1/+1
2014-04-02json rpc for wallet and bugfixAntonio Juarez1-16/+16
2014-03-03moved all stuff to githubAntonio Juarez1-0/+82