moneromooo-monero
d93746b6d3
rct: rework the verification preparation process
...
The whole rct data apart from the MLSAGs is now included in
the signed message, to avoid malleability issues.
Instead of passing the data that's not serialized as extra
parameters to the verification API, the transaction is modified
to fill all that information. This means the transaction can
not be const anymore, but it cleaner in other ways.
2016-08-28 21:30:16 +01:00
moneromooo-monero
3ab2ab3e76
rct: change the simple flag to a type
...
for future expansion
2016-08-28 21:30:14 +01:00
Shen Noether
c5be4b0bea
rct: avoid the need for the last II element
...
This element is used in the generation of the MLSAG, but isn't
needed in verification.
Also misc changes in the cryptonote code to match, by mooo.
2016-08-28 21:30:12 +01:00
moneromooo-monero
a47ceee83b
wallet: do not store signatures in the wallet cache
...
Saves some substantial space.
Also avoid calculating tx hashes we don't need.
2016-08-28 21:30:10 +01:00
moneromooo-monero
0263dd2d23
core: add some locking around pool use
2016-08-28 21:30:08 +01:00
moneromooo-monero
2c9d9519f1
wallet2: factor m_spent changes
...
Makes it easier to track what is going on.
2016-08-28 21:30:04 +01:00
moneromooo-monero
1303cda646
wallet: always use new algorithm for RPC transfers
...
This ensures we get rct transactions when appropriate
2016-08-28 21:30:03 +01:00
moneromooo-monero
b337aea6cc
rct: do not serialize senderPk - it is not used anymore
2016-08-28 21:30:01 +01:00
moneromooo-monero
230fca2d56
wallet: use the prefered rct case only when enough rct outs exist
2016-08-28 21:29:55 +01:00
moneromooo-monero
c27194a444
wallet: do not try to use rct txes a few blocks before the fork
2016-08-28 21:29:53 +01:00
moneromooo-monero
1bf069825b
tx_pool: log why a transaction was rejected for version checks
2016-08-28 21:29:51 +01:00
moneromooo-monero
37bdf6ebe3
change fork settings to allow pre-rct txes for one more fork cycle
2016-08-28 21:29:50 +01:00
moneromooo-monero
cc85cc6a3f
simplewallet: better check_tx_key feedback
...
Print number of confirmations if the tx is in the blockchain,
or a warning if it's in the pool.
2016-08-28 21:29:48 +01:00
moneromooo-monero
9b70856ccb
rct: make the amount key derivable by a third party with the tx key
...
Scheme design from luigi1114.
2016-08-28 21:29:46 +01:00
moneromooo-monero
cf33e1a52a
rct: do not serialize public keys in outPk
...
They can be reconstructed from vout
2016-08-28 21:29:43 +01:00
moneromooo-monero
83ab3151e8
wallet2_api: zero amounts are now allowed with rct
2016-08-28 21:29:41 +01:00
moneromooo-monero
096ac06521
wallet2_api: update on_money_{received,spent} prototypes for rct changes
2016-08-28 21:29:40 +01:00
moneromooo-monero
3cb2edec66
rpc: send global indices along with blocks/transacions on refresh
...
This plugs a privacy leak, where the wallet tells the daemon
which transactions contain outputs for the wallet by asking
for additional information for that particular transaction.
As a nice bonus, this actually makes refresh slightly faster.
2016-08-28 21:29:38 +01:00
moneromooo-monero
414b424d32
core: always use the new simple rct variant
2016-08-28 21:29:36 +01:00
moneromooo-monero
84c82cd775
wallet: better tx input selection
...
We try to avoid related inputs, when possible
2016-08-28 21:29:32 +01:00
moneromooo-monero
1e21651f24
rct: use the already defined H where possible
...
Found by luigi1111w
2016-08-28 21:29:29 +01:00
moneromooo-monero
07d353dfc6
wallet: handle 0 change properly
...
With RCT, we allow 0 size outputs, to try and encourage txes
with two inputs and two outputs. Consolidation would then
have two non zero inputs, one zero output, and one larger
output.
2016-08-28 21:29:27 +01:00
moneromooo-monero
e81a2b2cfa
port get_tx_key/check_tx_key to rct
2016-08-28 21:29:24 +01:00
moneromooo-monero
a4d4d6194b
integrate simple rct api
2016-08-28 21:29:20 +01:00
moneromooo-monero
1e8d37e7d8
serialization: add override for serializing bool
2016-08-28 21:29:19 +01:00
Shen Noether
dbb5f2d6a3
ringct: optimization/cleanup of hash functions
2016-08-28 21:29:16 +01:00
Shen Noether
4fd01f2bee
ringct: "simple" ringct variant
...
Allows the fake outs to be in different positions for each ring.
For rct inputs only.
2016-08-28 21:29:14 +01:00
moneromooo-monero
37c895e5e3
wallet: rct specific output selection
...
Before the normal selection, we attempt to find either one or two
suitable outputs to use as inputs to the rct tx. The intent is that
most rct txes will have one or two inputs, and we want all to look
the same if possible.
When two outputs are needed, we try to find a pair which are not
related (ie, by being from the same or similar block height).
2016-08-28 21:29:11 +01:00
moneromooo-monero
1181c57967
wallet: make sweep_all work with rct txes too
2016-08-28 21:29:09 +01:00
moneromooo-monero
c2ec6d35b9
mixable transactions must be rct for v3
2016-08-28 21:29:07 +01:00
moneromooo-monero
1017a75460
wallet: factor transfer_rct code with transfer code
...
The "transfer" simplewallet command is renamed to "transfer_original".
"transfer_new" is renamed "transfer", "transfer_rct" is removed,
and the new "transfer" now selects rct or non rct transactions
based on the current block height.
2016-08-28 21:29:05 +01:00
moneromooo-monero
f5465d8246
Condition v2 txes on v3 hard fork
2016-08-28 21:29:04 +01:00
moneromooo-monero
59a66e209a
move the rct commitments to the output_amounts database
...
Since these are needed at the same time as the output pubkeys,
this is a whole lot faster, and takes less space. Only outputs
of 0 amount store the commitment. When reading other outputs,
a fake commitment is regenerated on the fly. This avoids having
to rewrite the database to add space for fake commitments for
existing outputs.
This code relies on two things:
- LMDB must support fixed size records per key, rather than
per database (ie, all records on key 0 are the same size, all
records for non 0 keys are same size, but records from key 0
and non 0 keys do have different sizes).
- the commitment must be directly after the rest of the data
in outkey and output_data_t.
2016-08-28 21:29:02 +01:00
moneromooo-monero
6d0e47148b
rct: add the tx prefix hash into the MLSAG
...
to protect the non-signatures parts of the tx from tampering.
2016-08-28 21:28:58 +01:00
moneromooo-monero
35dce5c70c
ringct: fix size unit mismatch calling keccak
2016-08-28 21:28:57 +01:00
moneromooo-monero
20e50ec7f7
ringct: do not serialize what can be reconstructed
...
The mixRing (output keys and commitments) and II fields (key images)
can be reconstructed from vin data.
This saves some modest amount of space in the tx.
2016-08-28 21:28:55 +01:00
moneromooo-monero
ada527558f
Use the supplied hard fork version in validate_miner_transaction
...
rather than using the current one. No functional changes, but may
save some bugs in the future.
2016-08-28 21:28:51 +01:00
moneromooo-monero
acbe06d8e9
wallet: update spent status when an accepted tx disappears
2016-08-28 21:28:49 +01:00
moneromooo-monero
089df4af83
wallet: reset output spent status on blockchain reorg
...
If the blockchain gets reorganized, all outputs spent in the part
of the blockchain that's blown away need to be reset to unspent
(they may end up spent again on the blocks that replace the blocks
that are removed, however).
2016-08-28 21:28:47 +01:00
moneromooo-monero
73d59f17e1
ringct: catch errors from ge_frombytes_vartime
2016-08-28 21:28:45 +01:00
moneromooo-monero
359f46901e
ringct: add missing size check for ecdhInfo
2016-08-28 21:28:41 +01:00
moneromooo-monero
229968eafc
ringct: change asserts to return false for boolean functions
2016-08-28 21:28:39 +01:00
moneromooo-monero
dc4aad7eb5
add rct to the protocol
...
It is not yet constrained to a fork, so don't use on the real network
or you'll be orphaned or rejected.
2016-08-28 21:28:37 +01:00
moneromooo-monero
211d1db762
db_lmdb: update reset for recent db changes
...
- we need to drop the new m_tx_indices database
- we reset the version to current version
This fixes the core tests failing to initialize.
2016-08-28 21:28:35 +01:00
moneromooo-monero
dee42d6dac
ringct: add functions to commit to an amount
...
One to commit to an amount with zero key (for use with fake
commitments for pre-rct outputs), and one with an arbitrary
key (for rct outputs).
2016-08-28 21:28:33 +01:00
moneromooo-monero
cc7f449d57
make rct tx serialization work
...
It may be suboptimal, but it's a pain to have to rebuild everything
when some of this changes.
Also, no clue why there seems to be two different code paths for
serializing a tx...
2016-08-28 21:28:31 +01:00
moneromooo-monero
e70e8a69f4
crypto: error out where appropriate
2016-08-28 21:28:29 +01:00
moneromooo-monero
54f7429cf6
ringct: allow no outputs, and add tests for this and fees
2016-08-28 21:28:27 +01:00
moneromooo-monero
e99904ac31
ringct: make fee optional
2016-08-28 21:28:25 +01:00
Shen Noether
f8c04ad94f
ringct: txn fee stuff
2016-08-28 21:28:23 +01:00
moneromooo-monero
66f96260b2
ringct: new {gen,decode}Rct APIs for convenience
...
A new version of genRct takes the mixRing as parameter, instead
of the inPk. inPk are part of the mixRing, and it is cleaner to
pass the mixRing data than to fetch it from the RingCT code.
A new version of decodeRct also returns the mask.
Also, failure to decode throws, so errors are properly detected.
2016-08-28 21:28:21 +01:00
moneromooo-monero
789b2e21f6
ringct: add more convenience functions
2016-08-28 21:28:20 +01:00
moneromooo-monero
98564439f8
core: link against libringct
2016-08-28 21:28:18 +01:00
moneromooo-monero
4258dab4d6
core: new /getrandom_rctouts.bin binary RPC call
...
to get random ringct outputs to mix with
2016-08-28 21:28:16 +01:00
moneromooo-monero
c3a2e1450a
ringct: add convenience functions to bridge ringct and cryptonote
2016-08-28 21:28:14 +01:00
moneromooo-monero
eb56d0f994
blockchain_db: add functions for adding/removing/getting rct commitments
2016-08-28 21:28:11 +01:00
moneromooo-monero
82072e701a
ringct: restore verRange check in debug mode
2016-08-28 21:28:08 +01:00
moneromooo-monero
63856cad29
ringct: add check for destinations/amount size being equal
2016-08-28 21:28:07 +01:00
moneromooo-monero
e816a09292
ringct: fix off by 1 in mixin usage
2016-08-28 21:28:04 +01:00
moneromooo-monero
09c5ea43a2
ringct: simplify random key generation
2016-08-28 21:28:03 +01:00
Shen Noether
56f6549962
ringct: cosmetic fixes
...
Ported from Shen's RingCT repo
2016-08-28 21:27:59 +01:00
Shen Noether
55ff136e12
ringct: changes to hashToPointSimple to calcualte H2 values
...
Ported from Shen's RingCT repo
2016-08-28 21:27:57 +01:00
Shen Noether
63733b1785
ringct: compare keys with bitwise equality, not crypto ops
...
Ported from Shen's RingCT repo
2016-08-28 21:27:56 +01:00
Shen Noether
98f4c6f7eb
ringct: fix size argument to cn_fast_hash
...
Ported from Shen's RingCT repo
2016-08-28 21:27:54 +01:00
Shen Noether
09fb9f4b75
Fix sc_0 to skGen in ProveRange
2016-08-28 21:27:48 +01:00
moneromooo-monero
d37c1db032
ringct: add a few consts where appropriate
2016-08-28 21:27:45 +01:00
moneromooo-monero
700248f59e
tests: more ringct range proof tests
2016-08-28 21:27:43 +01:00
moneromooo-monero
d02f9995a8
rct: add serialization machinery to rct types
2016-08-28 21:27:41 +01:00
moneromooo-monero
0ff8305426
serialization: declare do_serialize specializations before use
...
This lets my gcc picks those instead of the generic template
where appropriate (and then fail since std::vector<something>
does not have a serialize method.
2016-08-28 21:27:38 +01:00
Shen Noether
8b135e7aa3
Added note on generating H2
2016-08-28 21:27:36 +01:00
Shen Noether
4d639d90ca
Fixed missing last index H2
2016-08-28 21:27:34 +01:00
moneromooo-monero
9e82b694da
remove original Cryptonote blockchain_storage blockchain format
2016-08-28 21:27:32 +01:00
moneromooo-monero
86b4426191
ringct: lock access to the PRNG
2016-08-28 21:27:30 +01:00
moneromooo-monero
4d7f073491
ringct: add simple input validation
...
Throw when inputs aren't the expected size.
2016-08-28 21:27:28 +01:00
moneromooo-monero
b656001030
ringct: add convenience operators to key
2016-08-28 21:27:24 +01:00
moneromooo-monero
9b1afe5f2d
ringct: import of Shen Noether's ring confidential transactions
2016-08-28 21:26:54 +01:00
Howard Chu
dc411ea3b7
Change default db-sync-mode to fast, not fastest
2016-08-28 16:20:22 +01:00
Riccardo Spagni
a569b264bc
Merge pull request #991
...
f88029e
db_lmdb: do not try to modify the database in read only mode (moneromooo-monero)
2016-08-26 20:39:21 +02:00
moneromooo-monero
f88029e72a
db_lmdb: do not try to modify the database in read only mode
2016-08-26 19:33:25 +01:00
Riccardo Spagni
2702e4999a
Merge pull request #984
...
78035d2
Fix fake 'network synchronized, begin using' messages (Thomas Winget)
2016-08-26 10:33:10 +02:00
Riccardo Spagni
7000ed45ec
Merge pull request #982
...
65238d2
fix #691 removed help about leaving wallet name empty on --generate-new-wallet (guzzi_jones)
2016-08-26 10:32:30 +02:00
Riccardo Spagni
9308b4e8b9
Merge pull request #978
...
99dd572
libwallet_api: tests: checking for result while opening wallet (Ilya Kitaev)
bcf7b67
libwallet_api: Wallet::amountFromString fixed (Ilya Kitaev)
32bc7b4
libwallet_api: helper method to return maximumAllowedAmount (Ilya Kitaev)
cbe534d
libwallet_api: tests: removed logged passwords (Ilya Kitaev)
b1a5a93
libwallet_api: do not store wallet on close if status is not ok (Ilya Kitaev)
2016-08-26 10:32:00 +02:00
Riccardo Spagni
391c567f37
Merge pull request #976
...
c2f4e16
simplewallet: default to max-concurrency 1 on MacOS X (moneromooo-monero)
2016-08-26 10:31:24 +02:00
Thomas Winget
78035d2b6c
Fix fake 'network synchronized, begin using' messages
2016-08-23 22:52:25 -04:00
guzzi_jones
65238d281c
fix #691 removed help about leaving wallet name empty on --generate-new-wallet
2016-08-24 00:03:36 +00:00
Ilya Kitaev
bcf7b67cd6
libwallet_api: Wallet::amountFromString fixed
2016-08-23 13:47:21 +03:00
Ilya Kitaev
32bc7b41c0
libwallet_api: helper method to return maximumAllowedAmount
2016-08-23 12:35:45 +03:00
Riccardo Spagni
17157f8a22
Merge pull request #972
...
2c5e68f
cmake: fix typo in handling of STACK_TRACE (redfish)
2016-08-22 22:55:53 +02:00
Riccardo Spagni
79cdedb90c
Merge pull request #970
...
25f529a
wallet: store key images after importing them (moneromooo-monero)
2016-08-22 22:55:24 +02:00
Riccardo Spagni
13222f9ff5
Merge pull request #968
...
9cca53a
wallet: fix build on Mac and Windows (missing include) (moneromooo-monero)
2016-08-22 22:55:00 +02:00
Ilya Kitaev
b1a5a937ff
libwallet_api: do not store wallet on close if status is not ok
2016-08-22 22:47:59 +03:00
moneromooo-monero
c2f4e16c59
simplewallet: default to max-concurrency 1 on MacOS X
...
A suspected bug in pthread/kernel, though might be that
I messed something up too...
This might rope in more platforms though.
2016-08-21 12:26:29 +01:00
redfish
2c5e68fb73
cmake: fix typo in handling of STACK_TRACE
...
This fixes the log output not getting redirected to log file.
2016-08-19 23:38:44 -04:00
moneromooo-monero
25f529aa67
wallet: store key images after importing them
...
It avoids rescan_spent resetting spent status, for example.
2016-08-17 08:37:56 +01:00
moneromooo-monero
9cca53ac29
wallet: fix build on Mac and Windows (missing include)
...
Reported by RaskaRuby, tested by iDunk5400.
2016-08-17 08:08:49 +01:00
moneromooo-monero
e596e25367
simplewallet: do not suggest removing cache if the password was wrong
2016-08-16 23:15:35 +01:00
moneromooo-monero
7e4e0021f4
daemon: print time to next fork
2016-08-12 20:32:23 +01:00
Riccardo Spagni
0faf572db8
Merge pull request #948
...
11dc091
Fake outs set is now decided by the wallet (moneromooo-monero)
1593553
new unlocked parameter to output_histogram (moneromooo-monero)
2016-08-11 22:43:14 +02:00
moneromooo-monero
11dc091464
Fake outs set is now decided by the wallet
...
This plugs a privacy leak from the wallet to the daemon,
as the daemon could previously see what input is included
as a transaction input, which the daemon hadn't previously
supplied. Now, the wallet requests a particular set of
outputs, including the real one.
This can result in transactions that can't be accepted if
the wallet happens to select too many outputs with non standard
unlock times. The daemon could know this and select another
output, but the wallet is blind to it. It's currently very
unlikely since I don't think anything uses non default
unlock times. The wallet requests more outputs than necessary
so it can use spares if any of the returns outputs are still
locked. If there are not enough spares to reach the desired
mixin, the transaction will fail.
2016-08-11 14:35:27 +01:00
Riccardo Spagni
cb17c4da4f
Merge pull request #953
...
240864f
db_lmdb: errors dropping hf starting height db on reset are not fatal (moneromooo-monero)
2016-08-11 14:58:04 +02:00