aboutsummaryrefslogtreecommitdiff
path: root/src/cryptonote_core (follow)
AgeCommit message (Collapse)AuthorFilesLines
2018-06-20Merge pull request #3903luigi11112-12/+35
2b0c632 tx_pool: hold off parsing a tx blob till we actually need it (moneromooo-monero)
2018-06-19Merge pull request #3828luigi11111-0/+1
16e209e core: lock incoming tx lock when checking the txpool and chain (moneromooo-monero)
2018-06-17Merge pull request #3691luigi11112-6/+3
db55263 threadpool: allow constructing an object, and misc tweaks (moneromooo-monero) ce173cb core: remove threadpool dependency from header (moneromooo-monero) 3147468 unit_tests: add threadpool unit test (moneromooo-monero)
2018-06-16Merge pull request #3732luigi11111-1/+1
fa0839f Ensure m_timestamps has the correct number for computing difficulty. (thaerkh)
2018-06-16Merge pull request #3726luigi11111-8/+11
b5cb1bc blockchain: avoid exception if asked for a block we do not have (moneromooo-monero)
2018-06-12Merge pull request #3687luigi11111-3/+3
6b13976 blockchain: log in DEBUG when a block is found, and where (moneromooo-monero)
2018-06-08Merge pull request #3908luigi11111-1/+1
827ca3f bump version for 0.12.2 point release (fluffypony) 95ccf50 update checkpoints.dat for point release (fluffypony)
2018-06-08Merge pull request #3450luigi11113-0/+19
3b941be core: add get_earliest_ideal_height_for_version() (stoffu)
2018-06-07Merge pull request #3940luigi11111-8/+12
f24cbc5 blockchain: fix deadlock with the difficulty cache (moneromooo-monero)
2018-06-06blockchain: fix deadlock with the difficulty cachemoneromooo-monero1-8/+12
2018-06-02blockchain: demote a hash-of-hashes validation warning to debugmoneromooo-monero1-1/+1
This data comes from untrusted peers, and validation failures are therefore normal.
2018-06-02update checkpoints.dat for point releaseRiccardo Spagni1-1/+1
2018-06-02tx_pool: hold off parsing a tx blob till we actually need itmoneromooo-monero2-12/+35
2018-05-30Merge pull request #3525luigi11111-0/+1
66a659b blockchain: add scope guard to waiter for threaded txv1 verification (stoffu)
2018-05-30Merge pull request #3876luigi11111-5/+6
740da1b core: fix automatic safe db sync mode switching (moneromooo-monero) e942d34 protocol: do not switch to unsafe sync mode for just a few blocks (moneromooo-monero)
2018-05-30Merge pull request #3731luigi11112-6/+15
a66f152 Use median timestamp if current time renders a block invalid. (thaerkh)
2018-05-29Merge pull request #3251luigi11114-12/+18
b9389e5 db_lmdb: save pruned and prunable tx data separately (moneromooo-monero)
2018-05-29Merge pull request #3446luigi11111-4/+0
a6b8d3f tx_pool: remove old comment from fill_block_template() (stoffu)
2018-05-29Merge pull request #3420luigi11112-3/+22
a6a54fa blockchain: cache difficulty for next block (moneromooo-monero)
2018-05-28core: fix automatic safe db sync mode switchingmoneromooo-monero1-5/+6
2018-05-28tx_pool: remove old comment from fill_block_template()stoffu1-4/+0
2018-05-23db_lmdb: save pruned and prunable tx data separatelymoneromooo-monero4-12/+18
This bumps DB version to 2, migration code will run for v1 DBs
2018-05-23update checkpointsRiccardo Spagni1-1/+1
2018-05-21Merge pull request #3787Riccardo Spagni1-0/+6
ce63ab09 blockchain: invalidate misc caches when popping blocks (moneromooo-monero)
2018-05-21Merge pull request #3832Riccardo Spagni2-9/+11
cb9c7972 Fix output shuffling for multisig (stoffu)
2018-05-21speed up get_output_distribution (and precalc common case)moneromooo-monero4-22/+8
2018-05-21Merge pull request #3749Riccardo Spagni1-0/+47
872cb4ef blockchain: pop top if block version disagrees with the ideal fork version (stoffu)
2018-05-20core: remove threadpool dependency from headermoneromooo-monero2-6/+3
2018-05-20Fix output shuffling for multisigstoffu2-9/+11
2018-05-18core: lock incoming tx lock when checking the txpool and chainmoneromooo-monero1-0/+1
This gets rid of an innocuous race trying to add the same tx twice to the txpool
2018-05-13Use median timestamp if current time renders a block invalid.Thaer Khawaja2-6/+15
2018-05-09blockchain: avoid exception if asked for a block we do not havemoneromooo-monero1-8/+11
This can happen if a peer tries to obtain the next span from other peers if that span is needed for not downloaded yet. Also if the peer maliciously requests a non existent block hash.
2018-05-09blockchain: invalidate misc caches when popping blocksmoneromooo-monero1-0/+6
Might be a bit heavy handed, but conservative.
2018-05-07cryptonote: make sure outPk setup always happensmoneromooo-monero1-33/+0
2018-05-06blockchain: pop top if block version disagrees with the ideal fork versionstoffu1-0/+47
2018-04-29Ensure m_timestamps has the correct number for computing difficulty.Thaer Khawaja1-1/+1
2018-04-28Merge pull request #3683Riccardo Spagni2-0/+12
dad10775 Only log an error if fork version is higher AND is not known. (Thaer Khawaja)
2018-04-23blockchain: log in DEBUG when a block is found, and wheremoneromooo-monero1-3/+3
Eases up debugging
2018-04-23speedup get_output_histogram for all amounts when min_count > 0moneromooo-monero2-3/+4
This skips the vast majority of "dust" output amounts with just one instance on the chain. Clocks in at 0.15% of the original time on testnet.
2018-04-22Only log an error if fork version is higher AND is not known.Thaer Khawaja2-0/+12
2018-04-12Merge pull request #3609Riccardo Spagni1-17/+26
08343aba tx_pool: fix loading with colliding key images (moneromooo-monero)
2018-04-12Merge pull request #3530Riccardo Spagni1-2/+3
eb59f7c5 cryptonote_tx_util: make destinations properly shuffled (stoffu)
2018-04-12Merge pull request #3502Riccardo Spagni1-1/+1
11c933e1 fix lambda compile error on openbsd (moneromooo-monero)
2018-04-11tx_pool: fix loading with colliding key imagesmoneromooo-monero1-17/+26
A key image may be present more than once if all but one of the txes spending that key image are coming from blocks. When loading a txpool from storage, we must load the one that's not from a block first to avoid rejection
2018-03-31cryptonote_tx_util: make destinations properly shuffledstoffu1-2/+3
2018-03-30blockchain: add scope guard to waiter for threaded txv1 verificationstoffu1-0/+1
2018-03-27fix lambda compile error on openbsdmoneromooo-monero1-1/+1
2018-03-24update block hashes for checkpoints.datRiccardo Spagni1-1/+1
2018-03-21core: add get_earliest_ideal_height_for_version()stoffu3-0/+19
2018-03-19blockchain: cache difficulty for next blockmoneromooo-monero2-3/+22
Takes about 10 ms, which takes pretty much all of the get_info RPC, which is called pretty often from wallets. Also add a new lock so we don't need to lock the blockchain lock, which will avoid blocking for a long time when calling the getinfo RPC while syncing. Users of get_difficulty_for_next_block who need the lock will have locked it already.
2018-03-18core: fix use of uninitialised datamoneromooo-monero1-1/+2
2018-03-18Move v7 fork to 1546000 to give more update timemoneromooo-monero1-2/+2
2018-03-17Merge pull request #3418Riccardo Spagni1-1/+2
20a00266 blockchain: forbid bulletproof types before v8 (moneromooo-monero)
2018-03-16blockchain: forbid bulletproof types before v8moneromooo-monero1-1/+2
They were already forbidden implicitely, but let's make that explicit for robustness
2018-03-16Merge pull request #3414Riccardo Spagni1-1/+1
524cbdc1 blockchain: fix log message about per-kB fee (stoffu)
2018-03-16Merge pull request #3336Riccardo Spagni3-6/+6
57c0b1ed Fix typos in various files (Dimitris Apostolou)
2018-03-16add RPC to get a histogram of outputs of a given amountmoneromooo-monero4-2/+78
2018-03-16blockchain: fix log message about per-kB feestoffu1-1/+1
2018-03-15Fix typos in various filesDimitris Apostolou3-6/+6
2018-03-14Remove the `Blockchain::get_all_known_block_ids` function.Jean Pierre Dudey2-28/+0
This function isn't used in the codebase. Signed-off-by: Jean Pierre Dudey <jeandudey@hotmail.com>
2018-03-14keypair::generate: always require hw::device to avoid possible mistakestoffu1-1/+1
2018-03-14device: untangle cyclic depenencystoffu1-10/+9
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-14Merge pull request #3371Riccardo Spagni1-0/+3
84decbea core: add v7 for 1539500 on mainnet (moneromooo-monero)
2018-03-14Merge pull request #3358Riccardo Spagni1-0/+8
978663d4 Stagenet: successive forks up to v7 (stoffu)
2018-03-12Ledger HW Bug fixesCédric1-1/+1
Fix the way the REAL mode is handle: Let create_transactions_2 and create_transactions_from construct the vector of transactions. Then iterate on it and resign. We just need to add 'outs' list in the TX struct for that. Fix default secret keys value when DEBUG_HWDEVICE mode is off The magic value (00...00 for view key and FF..FF for spend key) was not correctly set when DEBUG_HWDEVICE was off. Both was set to 00...00. Add sub-address info in ABP map in order to correctly display destination sub-address on device Fix DEBUG_HWDEVICE mode: - Fix compilation errors. - Fix control device init in ledger device. - Add more log. Fix sub addr control Fix debug Info
2018-03-09Stagenet: successive forks up to v7stoffu1-0/+8
2018-03-07core: add v7 for 1539500 on mainnetmoneromooo-monero1-0/+3
2018-03-07Bump min ring size from 5 to 7 from v7moneromooo-monero1-1/+1
2018-03-05Merge pull request #3338Riccardo Spagni1-0/+2
51219457 core: fix sending to the source address with a short payment id (moneromooo-monero)
2018-03-05Merge pull request #3308Riccardo Spagni1-1/+4
6f8779d2 blockchain: fix random sync failures (moneromooo-monero)
2018-03-05Merge pull request #3277Riccardo Spagni5-56/+80
0e7ad2e2 Wallet API: generalize 'bool testnet' to 'NetworkType nettype' (stoffu) af773211 Stagenet (stoffu) cc9a0bee command_line: allow args to depend on more than one args (stoffu) 55f8d917 command_line::get_arg: remove 'required' for dependent args as they're always optional (stoffu) 450306a0 command line: allow has_arg to handle arg_descriptor<bool,false,true> #3318 (stoffu) 9f9e095a Use `genesis_tx` parameter in `generate_genesis_block`. #3261 (Jean Pierre Dudey)
2018-03-05Correct spelling mistakes.Edward Betts1-2/+2
2018-03-05Stagenetstoffu4-46/+79
2018-03-05Use `genesis_tx` parameter in `generate_genesis_block`. #3261Jean Pierre Dudey1-10/+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-03-04Code modifications to integrate Ledger HW device into monero-wallet-cli.cslashm2-16/+24
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-03-02core: fix sending to the source address with a short payment idmoneromooo-monero1-0/+2
It would fail to send, thinking it needs a destination address, since the destination matches the change address in this case.
2018-02-23blockchain: fix random sync failuresmoneromooo-monero1-1/+4
When a block is added as part of a chunk (when syncing historical blocks), a block may end up already in the blockchain if it was added to the queue before being added to the chain (though it's not clear how that could happen, but it's an implementation detail) and thus may not be added to the chain when add_block is called. This would cause m_blocks_txs_check to not be cleared, causing it to get out of sync at next call, and thus wrongfully reject the next block.
2018-02-18cryptonote_core: change wording of fork warning messagemoneromooo-monero1-1/+1
An udpate may or may not be available now, but should be soon if not. This will prevent too many people freaking out.
2018-02-17Merge pull request #3170Riccardo Spagni2-14/+14
b3b2d4d2 options: add testnet option dependencies (whythat) c5f55bb4 common: implement dynamic option dependencies mechanism (whythat) 05a12ccc options: remove testnet-* options (whythat) c33cb60e common: implement dependent option descriptor (whythat)
2018-02-17Merge pull request #3191Riccardo Spagni1-2/+10
3607d467 core: add --no-fluffy-blocks, and enable fluffy blocks by default (moneromooo-monero)
2018-02-16options: add testnet option dependencieswhythat1-2/+6
2018-02-16options: remove testnet-* optionswhythat2-14/+10
2018-02-16txpool: Don't bail out when blob_size == tx_size_limitLeon Klingele1-2/+2
Previously, when blob_size == tx_size_limit, the "m_too_big" property was set and the transaction was rejected. This should not have been the case.
2018-02-16core: add --no-fluffy-blocks, and enable fluffy blocks by defaultmoneromooo-monero1-2/+10
2018-02-16Merge pull request #3226Riccardo Spagni1-1/+6
e4646379 keccak: fix mdlen bounds sanity checking (moneromooo-monero) 2e3e90ac pass large parameters by const ref, not value (moneromooo-monero) 61defd89 blockchain: sanity check number of precomputed hash of hash blocks (moneromooo-monero) 9af6b2d1 ringct: fix infinite loop in unused h2b function (moneromooo-monero) 8cea8d0c simplewallet: double check a new multisig wallet is multisig (moneromooo-monero) 9b98a6ac threadpool: catch exceptions in dtor, to avoid terminate (moneromooo-monero) 24803ed9 blockchain_export: fix buffer overflow in exporter (moneromooo-monero) f3f7da62 perf_timer: rewrite to make it clear there is no division by zero (moneromooo-monero) c6ea3df0 performance_tests: remove add_arg call stray extra param (moneromooo-monero) fa6b4566 fuzz_tests: fix an uninitialized var in setup (moneromooo-monero) 03887f11 keccak: fix sanity check bounds test (moneromooo-monero) ad11db91 blockchain_db: initialize m_open in base class ctor (moneromooo-monero) bece67f9 miner: restore std::cout precision after modification (moneromooo-monero) 1aabd14c db_lmdb: check hard fork info drop succeeded (moneromooo-monero)
2018-02-16Merge pull request #3248Riccardo Spagni1-0/+4
d6a0ae96 blockchain: don't try to use hash check array after it's freed (moneromooo-monero)
2018-02-16Merge pull request #3210Riccardo Spagni1-1/+8
39992134 txpool: Properly bail out when outputs_amount == inputs_amount (Leon Klingele)
2018-02-16Merge pull request #3205Riccardo Spagni3-5/+113
bc61ae69 tx_pool: add a max pool size, settable with --max-txpool-size (moneromooo-monero) 3b4e6b35 txpool: increase unmined tx expiry to three days (moneromooo-monero)
2018-02-16Merge pull request #3171Riccardo Spagni2-10/+14
402c9eef cryptonote_tx_utils: fixed logic bug in get_destination_view_key_pub (stoffu)
2018-02-10blockchain: don't try to use hash check array after it's freedmoneromooo-monero1-0/+4
It's freed when we've synced past its end, but we might still find an old chain somewhere
2018-02-07tx_pool: add a max pool size, settable with --max-txpool-sizemoneromooo-monero3-5/+113
2018-02-02blockchain: sanity check number of precomputed hash of hash blocksmoneromooo-monero1-1/+6
Coverity 142951
2018-02-01txpool: Properly bail out when outputs_amount == inputs_amountLeon Klingele1-1/+8
Previously, when outputs_amount == inputs_amount, the "m_overspend" property was set, whereas "m_fee_too_low" would have been the correct property to set. This is unlikely to ever occur and just something I've noticed while reading through the code.
2018-01-31blockchain: move bulletproofs to v8moneromooo-monero1-4/+5
and set v7 height to 1057027 on testnet (one block earlier) This is to easily dump current nodes since we're going to change the v7 rules with this.
2018-01-29cryptonote_tx_utils: fixed logic bug in get_destination_view_key_pubstoffu2-10/+14
2018-01-27Merge pull request #3144Riccardo Spagni2-1/+16
42f86624 rpc: expose recent median block size in getinfo (moneromooo-monero)
2018-01-27Merge pull request #3143Riccardo Spagni1-0/+6
ba6d2975 cryptonote_core: add --disable-dns-checkpoints flag (moneromooo-monero)
2018-01-26Update 2018 copyrightxmr-eric10-10/+10
2018-01-25Merge pull request #3014Riccardo Spagni1-1/+1
deeffaeb blockchain: remove minor floating point usage (moneromooo-monero)
2018-01-17rpc: expose recent median block size in getinfomoneromooo-monero2-1/+16
2018-01-17cryptonote_core: add --disable-dns-checkpoints flagmoneromooo-monero1-0/+6
2018-01-10blockchain: remove minor floating point usagemoneromooo-monero1-1/+1
2018-01-10Merge pull request #2971Riccardo Spagni3-11/+34
ae860230 Fix exceptions not finding txpool txes when relaying (moneromooo-monero)
2017-12-25Merge pull request #2929Riccardo Spagni1-5/+35
ae55bacd resumption support for updates using range requests (moneromooo-monero) fe0fae50 epee: add a get_file_size function (moneromooo-monero)
2017-12-20Fix exceptions not finding txpool txes when relayingmoneromooo-monero3-11/+34
2017-12-18cryptonote_core: remove unused functions with off by one bugsmoneromooo-monero4-105/+0
2017-12-18blockchain: don't leave dangling pointers in thismoneromooo-monero1-0/+2
2017-12-18cryptonote_core: fix db leak on errormoneromooo-monero2-2/+3
2017-12-18check accessing an element past the end of a containermoneromooo-monero2-4/+12
2017-12-18fix a few leaks by throwing objects, not newed pointers to objectsmoneromooo-monero1-1/+1
2017-12-17Merge pull request #2134Riccardo Spagni3-45/+90
ceabc4f9 change the N-1/N multisig second message signer for auth (moneromooo-monero) 55c2845d core_tests: multisig test now tests multiple inputs (moneromooo-monero) 98db7ee4 wallet: factor multisig info parsing (moneromooo-monero) 31a97e76 wallet: use raw encrypted data in multisig import/export RPC (moneromooo-monero) 2fa707d1 wallet: add multisig sign/submit RPC (moneromooo-monero) e36f5b60 Match surae's recommendation to derive multisig keys (moneromooo-monero) a36c261d wallet2: fix slow multisig unit tests with subaddress patch (moneromooo-monero) fa569712 make multisig work with subaddresses (moneromooo-monero) dffa0dce simplewallet: add export_raw_multisig command (moneromooo-monero) 7f4c220b simplewallet: add multisig to wallet type in wallet_info output (moneromooo-monero) 26529038 wallet: guard against partly initialized multisig wallet (moneromooo-monero) 66e34e85 add multisig core test and factor multisig building blocks (moneromooo-monero) f4eda44c N-1/N multisig (moneromooo-monero) cd64c799 multisig address generation RPC (moneromooo-monero) fff871a4 gen_multisig: generates multisig wallets if participants trust each other (moneromooo-monero) 95a21a79 wallet2: allow empty wallet filename to avoid saving data (moneromooo-monero) b84b3565 tests: add multisig unit tests (moneromooo-monero) 4c313324 Add N/N multisig tx generation and signing (moneromooo-monero) 6d219a92 wallet: add multisig key generation (moneromooo-monero)
2017-12-17cryptonote_core: fix blockchain init call after prototype changemoneromooo-monero1-1/+1
2017-12-17make multisig work with subaddressesmoneromooo-monero2-14/+9
Thanks to kenshi84 for help getting this work
2017-12-17add multisig core test and factor multisig building blocksmoneromooo-monero2-15/+2
2017-12-17Add N/N multisig tx generation and signingmoneromooo-monero2-44/+107
Scheme by luigi1111: Multisig for RingCT on Monero 2 of 2 User A (coordinator): Spendkey b,B Viewkey a,A (shared) User B: Spendkey c,C Viewkey a,A (shared) Public Address: C+B, A Both have their own watch only wallet via C+B, a A will coordinate spending process (though B could easily as well, coordinator is more needed for more participants) A and B watch for incoming outputs B creates "half" key images for discovered output D: I2_D = (Hs(aR)+c) * Hp(D) B also creates 1.5 random keypairs (one scalar and 2 pubkeys; one on base G and one on base Hp(D)) for each output, storing the scalar(k) (linked to D), and sending the pubkeys with I2_D. A also creates "half" key images: I1_D = (Hs(aR)+b) * Hp(D) Then I_D = I1_D + I2_D Having I_D allows A to check spent status of course, but more importantly allows A to actually build a transaction prefix (and thus transaction). A builds the transaction until most of the way through MLSAG_Gen, adding the 2 pubkeys (per input) provided with I2_D to his own generated ones where they are needed (secret row L, R). At this point, A has a mostly completed transaction (but with an invalid/incomplete signature). A sends over the tx and includes r, which allows B (with the recipient's address) to verify the destination and amount (by reconstructing the stealth address and decoding ecdhInfo). B then finishes the signature by computing ss[secret_index][0] = ss[secret_index][0] + k - cc[secret_index]*c (secret indices need to be passed as well). B can then broadcast the tx, or send it back to A for broadcasting. Once B has completed the signing (and verified the tx to be valid), he can add the full I_D to his cache, allowing him to verify spent status as well. NOTE: A and B *must* present key A and B to each other with a valid signature proving they know a and b respectively. Otherwise, trickery like the following becomes possible: A creates viewkey a,A, spendkey b,B, and sends a,A,B to B. B creates a fake key C = zG - B. B sends C back to A. The combined spendkey C+B then equals zG, allowing B to spend funds at any time! The signature fixes this, because B does not know a c corresponding to C (and thus can't produce a signature). 2 of 3 User A (coordinator) Shared viewkey a,A "spendkey" j,J User B "spendkey" k,K User C "spendkey" m,M A collects K and M from B and C B collects J and M from A and C C collects J and K from A and B A computes N = nG, n = Hs(jK) A computes O = oG, o = Hs(jM) B anc C compute P = pG, p = Hs(kM) || Hs(mK) B and C can also compute N and O respectively if they wish to be able to coordinate Address: N+O+P, A The rest follows as above. The coordinator possesses 2 of 3 needed keys; he can get the other needed part of the signature/key images from either of the other two. Alternatively, if secure communication exists between parties: A gives j to B B gives k to C C gives m to A Address: J+K+M, A 3 of 3 Identical to 2 of 2, except the coordinator must collect the key images from both of the others. The transaction must also be passed an additional hop: A -> B -> C (or A -> C -> B), who can then broadcast it or send it back to A. N-1 of N Generally the same as 2 of 3, except participants need to be arranged in a ring to pass their keys around (using either the secure or insecure method). For example (ignoring viewkey so letters line up): [4 of 5] User: spendkey A: a B: b C: c D: d E: e a -> B, b -> C, c -> D, d -> E, e -> A Order of signing does not matter, it just must reach n-1 users. A "remaining keys" list must be passed around with the transaction so the signers know if they should use 1 or both keys. Collecting key image parts becomes a little messy, but basically every wallet sends over both of their parts with a tag for each. Thia way the coordinating wallet can keep track of which images have been added and which wallet they come from. Reasoning: 1. The key images must be added only once (coordinator will get key images for key a from both A and B, he must add only one to get the proper key actual key image) 2. The coordinator must keep track of which helper pubkeys came from which wallet (discussed in 2 of 2 section). The coordinator must choose only one set to use, then include his choice in the "remaining keys" list so the other wallets know which of their keys to use. You can generalize it further to N-2 of N or even M of N, but I'm not sure there's legitimate demand to justify the complexity. It might also be straightforward enough to support with minimal changes from N-1 format. You basically just give each user additional keys for each additional "-1" you desire. N-2 would be 3 keys per user, N-3 4 keys, etc. The process is somewhat cumbersome: To create a N/N multisig wallet: - each participant creates a normal wallet - each participant runs "prepare_multisig", and sends the resulting string to every other participant - each participant runs "make_multisig N A B C D...", with N being the threshold and A B C D... being the strings received from other participants (the threshold must currently equal N) As txes are received, participants' wallets will need to synchronize so that those new outputs may be spent: - each participant runs "export_multisig FILENAME", and sends the FILENAME file to every other participant - each participant runs "import_multisig A B C D...", with A B C D... being the filenames received from other participants Then, a transaction may be initiated: - one of the participants runs "transfer ADDRESS AMOUNT" - this partly signed transaction will be written to the "multisig_monero_tx" file - the initiator sends this file to another participant - that other participant runs "sign_multisig multisig_monero_tx" - the resulting transaction is written to the "multisig_monero_tx" file again - if the threshold was not reached, the file must be sent to another participant, until enough have signed - the last participant to sign runs "submit_multisig multisig_monero_tx" to relay the transaction to the Monero network
2017-12-17Merge pull request #2877Riccardo Spagni2-13/+6
43f5269f Wallets now do not depend on the daemon rpc lib (moneromooo-monero) bb89ae8b move connection_basic and network_throttle from src/p2p to epee (moneromooo-monero) 4abf25f3 cryptonote_core does not depend on p2p anymore (moneromooo-monero)
2017-12-16cryptonote_core does not depend on p2p anymoremoneromooo-monero2-13/+6
As a followon side effect, this makes a lot of inline code included only in particular cpp files (and instanciated when necessary.
2017-12-16move includes around to lessen overall loadmoneromooo-monero3-1/+4
2017-12-16Merge pull request #2878Riccardo Spagni4-8/+35
abebe392 rpc: add offline state in info rpc (moneromooo-monero) 7696e849 core: make --offline also disable DNS lookups (moneromooo-monero)
2017-12-16Merge pull request #2871Riccardo Spagni1-2/+2
2b0a32f8 Small cleanup of daemon synchronization output (xmr-eric)
2017-12-15resumption support for updates using range requestsmoneromooo-monero1-5/+35
2017-12-09core: fix input ordering from v7moneromooo-monero1-1/+1
2017-12-08add bulletproofs from v7 on testnetmoneromooo-monero2-9/+44
2017-12-08integrate bulletproofs into moneromoneromooo-monero2-4/+4
2017-11-30core: make --offline also disable DNS lookupsmoneromooo-monero4-8/+35
2017-11-27Small cleanup of daemon synchronization outputxmr-eric1-2/+2
Add period to second sentence
2017-11-26Added command descriptionsCifrado1-0/+1
2017-11-25Merge pull request #2794Riccardo Spagni2-0/+34
43f27c7d core: warn when free disk space is low (moneromooo-monero)
2017-11-24wallet: transfer RPC can now return tx metadata (pending_tx)moneromooo-monero1-0/+14
2017-11-14Merge pull request #2692Riccardo Spagni1-10/+0
0f2c2d4c rpc: remove obsolete busy core checks (moneromooo-monero)
2017-11-14Merge pull request #2736Riccardo Spagni2-24/+96
0d9c0db9 Do not build against epee_readline if it was not built (Howard Chu) 178014c9 split off readline code into epee_readline (moneromooo-monero) a9e14a19 link against readline only for monerod and wallet-wallet-{rpc,cli} (moneromooo-monero) 437421ce wallet: move some scoped_message_writer calls from the libs (moneromooo-monero) e89994e9 wallet: rejig to avoid prompting in wallet2 (moneromooo-monero) ec5135e5 move input_line from command_line to simplewallet (moneromooo-monero) 082db75f move cryptonote command line options to cryptonote_core (moneromooo-monero)
2017-11-14rpc: remove obsolete busy core checksmoneromooo-monero1-10/+0
2017-11-14move cryptonote command line options to cryptonote_coremoneromooo-monero2-24/+96
Those have no reason to be in a generic module
2017-11-14remove "using namespace std" from headersmoneromooo-monero4-2/+8
It's nasty, and actually breaks on Solaris, where if.h fails to build due to: struct map *if_memmap;
2017-11-14Merge pull request #2681Riccardo Spagni1-7/+1
ec48e8d8 core: do not forbid txes without destination (moneromooo-monero) 523084bc core: don't add empty additional pub keys field to extra (moneromooo-monero)
2017-11-14Merge pull request #2675Riccardo Spagni1-6/+11
00cc1fdd subaddress: remove unneeded scalarmultBase (kenshi84)
2017-11-14Merge pull request #2615Riccardo Spagni6-46/+80
10013e94 Protect node privacy by proper filtering in restricted-mode RPC answers (binaryFate)
2017-11-14core: warn when free disk space is lowmoneromooo-monero2-0/+34
2017-11-08Protect node privacy by proper filtering in restricted-mode RPC answersbinaryFate6-46/+80
This patch allows to filter out sensitive information for queries that rely on the pool state, when running in restricted mode. This filtering is only applied to data sent back to RPC queries. Results of inline commands typed locally in the daemon are not affected. In practice, when running with `--restricted-rpc`: * get_transaction_pool will list relayed transactions with the fields "last relayed time" and "received time" set to zero. * get_transaction_pool will not list transaction that have do_not_relay set to true, and will not list key images that are used only for such transactions * get_transaction_pool_hashes.bin will not list such transaction * get_transaction_pool_stats will not count such transactions in any of the aggregated values that are computed The implementation does not make filtering the default, so developers should be mindful of this if they add new RPC functionality. Fixes #2590.
2017-11-06track double spending in the txpoolmoneromooo-monero3-8/+62
Transactions in the txpool are marked when another transaction is seen double spending one or more of its inputs. This is then exposed wherever appropriate. Note that being marked with this "double spend seen" flag does NOT mean this transaction IS a double spend and will never be mined: it just means that the network has seen at least another transaction spending at least one of the same inputs, so care should be taken to wait for a few confirmations before acting upon that transaction (ie, mostly of use for merchants wanting to accept unconfirmed transactions).
2017-11-03Merge pull request #2662Riccardo Spagni2-7/+7
88ebfd64 core_tests: fix for subaddress patch (kenshi84) e373a203 performance_tests: add master spend pubkey to subaddress hashtable (kenshi84)
2017-10-30blockchain: do not lock the blockchain lock for simple DB gettersmoneromooo-monero1-7/+28
It is safe in those cases, though might return slightly out of date information if another thread is busy modifying the blockchain, but it avoids potentially lengthy delays just to get things like the current blockchain height.
2017-10-19core: do not forbid txes without destinationmoneromooo-monero1-6/+0
This was spuriously forbidden in the recent subaddress patch, which isn't inherently incompatible with these.
2017-10-19core: don't add empty additional pub keys field to extramoneromooo-monero1-1/+1
Saves a couple bytes per tx
2017-10-18subaddress: remove unneeded scalarmultBasekenshi841-6/+11
2017-10-17core_tests: fix for subaddress patchkenshi842-7/+7
2017-10-15Merge pull request #2656Riccardo Spagni1-3/+3
3492de01 fix lightwallet and subaddresses conflict (Jaquee) 329f149e remove reference to cryptonote::null_hash (Jaquee)
2017-10-15remove reference to cryptonote::null_hashJaquee1-3/+3
2017-10-15Merge pull request #2640Riccardo Spagni1-2/+12
22b51e06 db_lmdb: include chain height when failing to find an output key (moneromooo-monero) 5db433b3 blockchain: avoid exceptions in output verification (moneromooo-monero)
2017-10-15Merge pull request #2638Riccardo Spagni1-1/+9
529a6a4a core: guard against a mined block not finding all txes in the pool (moneromooo-monero)
2017-10-15Merge pull request #2552Riccardo Spagni3-9/+28
69ce33f2 core: fix failure to sync when a tx is already in the pool (moneromooo-monero)
2017-10-15Merge pull request #2469Riccardo Spagni4-9/+133
7adceee6 precomputed block hashes are now in blocks of N (currently 256) (moneromooo-monero)
2017-10-12blockchain: avoid exceptions in output verificationmoneromooo-monero1-2/+12
This can happen if we get a bad tx, so let's not spam the log.
2017-10-11core: guard against a mined block not finding all txes in the poolmoneromooo-monero1-1/+9
This can happen for several reasons, but mainly if another block was received, which took that tx off the pool.
2017-10-07Subaddresseskenshi842-8/+115
2017-10-06Merge pull request #2540Riccardo Spagni1-1/+1
71c7f8d0 core: fix logging the one time public key on error (moneromooo-monero)
2017-10-06Merge pull request #2537Riccardo Spagni1-2/+2
269a2a01 blockchain: fix off by one getting blocks (moneromooo-monero)
2017-10-06Merge pull request #2534Riccardo Spagni2-37/+4
4e115a3a core: remove out sorting from v7 rules (moneromooo-monero)
2017-10-03construct_tx_and_get_tx_key: return sorted sources for print_ring_memebrs to ↵stoffu2-4/+4
work properly
2017-10-02Merge pull request #2513Riccardo Spagni1-1/+2
309290d1 Source updates are in a source subdirectory (moneromooo-monero)
2017-09-29core: fix failure to sync when a tx is already in the poolmoneromooo-monero3-9/+28
2017-09-27core: remove out sorting from v7 rulesmoneromooo-monero2-37/+4
and restore random shuffle of outputs This turned out to have a flaw (sort order depends on output index), and this doesn't really bring much anyway
2017-09-27core: fix logging the one time public key on errormoneromooo-monero1-1/+1
2017-09-27blockchain: fix off by one getting blocksmoneromooo-monero1-2/+2
2017-09-26Merge pull request #2533Riccardo Spagni1-0/+2
97cdd4c9 core: undo output sorting (moneromooo-monero)
2017-09-26core: undo output sortingmoneromooo-monero1-0/+2
It looks like it may be buggy
2017-09-25Merge pull request #2527Riccardo Spagni1-1/+2
ba6907f6 core: fix creation of v1 txes (moneromooo-monero)
2017-09-25core: fix creation of v1 txesmoneromooo-monero1-1/+2
2017-09-25checkpoints: add a token checkpoint on testnet (the genesis block)moneromooo-monero1-1/+1
2017-09-25fix typo in basic and core CMakeLists.txtmoneromooo-monero1-1/+1
2017-09-25move checkpoints in a separate librarymoneromooo-monero3-3/+2
2017-09-25Merge pull request #2458Riccardo Spagni1-1/+0
7f2f6ee1 protocol: remove hop count on block propagation (moneromooo-monero)
2017-09-25Merge pull request #2457Riccardo Spagni1-1/+10
d2d8a41c Use actual batch size for resize estimates (Howard Chu)
2017-09-25Merge pull request #2452Riccardo Spagni1-0/+1
0aaaca29 tx_pool: set the "invalid input" bit when check_tx_inputs fails (moneromooo-monero) 9236823b simplewallet: print tx rejection reason where it was missing (moneromooo-monero) 3dee3301 core_rpc_server: print tx rejection reason at L0 too (moneromooo-monero)
2017-09-25Merge pull request #2424Riccardo Spagni4-11/+10
28b72b6e tx_pool: pre-init tvc.m_verifivation_failed before processing (moneromooo-monero) 50a629b2 core_tests: catch (impossible in practice) tx extra api failure (moneromooo-monero) fee15ef1 wallet2: catch failure to parse address (moneromooo-monero) 1399e26d net_peerlist: remove dead code (moneromooo-monero) 50e09698 tx_pool: guard against failure getting tx hash (moneromooo-monero) 54cc209a wallet_rpc_server: catch failure to create directory (moneromooo-monero) 3e55099c wallet_rpc_server: init m_vm to NULL in ctor (moneromooo-monero) 7d0dde5e wallet_args: remove redundant default value for --log-file (moneromooo-monero) ed4a3350 wallet2: catch failure to save keys file (moneromooo-monero) 44434c8a wallet2_api: check whether dynamic_cast returns NULL (moneromooo-monero) 92f2f687 core: check return value from parse_hexstr_to_binbuff (moneromooo-monero) 5475692e wallet2_api: remove an unused, uninitialized, field (moneromooo-monero) a7ba3de1 libwallet_api_tests: initialize newblock_triggered on reset (moneromooo-monero) b2763ace wallet2_api: init error code to "no error" in the ctor (moneromooo-monero) b5faac53 get_blockchain_top now returns void (moneromooo-monero) 2e44d8f2 wallet_rpc_server: guard against exceptions (moneromooo-monero) 4230876b simplewallet: guard against I/O exceptions (moneromooo-monero) 06c1e057 daemon: initialize decode_as_json in RPC request (moneromooo-monero) 11f71af5 http_base: init size_t in http_request_info ctor (moneromooo-monero)
2017-09-25Merge pull request #2442Riccardo Spagni1-0/+1
e29282d2 build: auto update version info without manually deleting version.h (stoffu)
2017-09-25Merge pull request #2440Riccardo Spagni3-6/+71
6137a0b9 blockchain: reject unsorted ins and outs from v7 (moneromooo-monero) 16afab90 core: sort ins and outs key key image and public key, respectively (moneromooo-monero) 0c36b9f9 common: add apply_permutation file and function (moneromooo-monero)
2017-09-25tx_pool: pre-init tvc.m_verifivation_failed before processingmoneromooo-monero1-3/+3
CID 175316
2017-09-25tx_pool: guard against failure getting tx hashmoneromooo-monero1-1/+2
Should be impossible in practice, but easy change CID 175282
2017-09-25core: check return value from parse_hexstr_to_binbuffmoneromooo-monero1-2/+3
2017-09-25get_blockchain_top now returns voidmoneromooo-monero2-5/+2
It was always returning true, and could not be foreseen to usefully return errors in the future. This silences CID 162652 as well as saves some checking code in a few places.
2017-09-22Source updates are in a source subdirectorymoneromooo-monero1-1/+2
rather than in the same directory as the prebuilt versions
2017-09-21Merge pull request #2496Riccardo Spagni1-3/+23
3b8b4be5 tx_pool: drop invalid txes from the pool on startup (moneromooo-monero)
2017-09-21build: auto update version info without manually deleting version.hstoffu1-0/+1
2017-09-20tx_pool: drop invalid txes from the pool on startupmoneromooo-monero1-3/+23
instead of just failing This is a workaround for bad tx blobs being inserted in the pool for unknown reasons
2017-09-20blockchain: fix crash checking pre-validated txidsmoneromooo-monero1-2/+2
2017-09-18precomputed block hashes are now in blocks of N (currently 256)moneromooo-monero4-9/+133
This shaves a lot of space off binaries
2017-09-18Merge pull request #2446Riccardo Spagni3-97/+56
6d0ca7d1 Tweak concurrency limits (Howard Chu) 510d0d47 Use a threadpool (Howard Chu)
2017-09-18Merge pull request #2023Riccardo Spagni1-1/+1
f761dbae Remove 1.25x multiplier from tx_pool (Nano Akron)
2017-09-18Merge pull request #2044Riccardo Spagni6-74/+303
0299cb77 Fix various oversights/bugs in ZMQ RPC server code (Thomas Winget) 77986023 json serialization for rpc-relevant monero types (Thomas Winget) 5c1e08fe Refactor some things into more composable (smaller) functions (Thomas Winget) 9ac2ad07 DRY refactoring (Thomas Winget)
2017-09-18blockchain: reject unsorted ins and outs from v7moneromooo-monero1-0/+39
This ensures no information is leaked by the ordering
2017-09-17Use actual batch size for resize estimatesHoward Chu1-1/+10
And optimize import startup: Remember start_height position during initial count_blocks pass to avoid having to reread entire file again to arrive at start_height
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-16tx_pool: set the "invalid input" bit when check_tx_inputs failsmoneromooo-monero1-0/+1
2017-09-14Use a threadpoolHoward Chu3-97/+56
Instead of constantly creating and destroying threads
2017-09-14Remove 1.25x multiplier from tx_poolNano Akron1-1/+1
2017-09-14Merge pull request #2438Riccardo Spagni1-2/+18
9443eec1 core: guard against exceptions in tx verification worker threads (moneromooo-monero)
2017-09-14Merge pull request #2404Riccardo Spagni1-1/+1
e5238adf update checkpoint hashes (Riccardo Spagni) d4f56bdf update hardcoded checkpoints (Riccardo Spagni) ed730511 update checkpoints.dat (Riccardo Spagni)
2017-09-14Merge pull request #2396Riccardo Spagni1-1/+1
dbfef643 tx_pool: catch exceptions in LockedTXN dtor (moneromooo-monero)
2017-09-13core: sort ins and outs key key image and public key, respectivelymoneromooo-monero2-6/+32
This avoids leaking some small amount of information