moneromooo-monero
b38452bd55
ringct: pass structure by const ref, not value
2016-08-28 21:30:51 +01:00
moneromooo-monero
fd11271eea
ringct: use memcpy/memset instead of handwritten loop where appropriate
2016-08-28 21:30:49 +01:00
moneromooo-monero
5d38206fcc
ringct: remove spurious copies
2016-08-28 21:30:47 +01:00
moneromooo-monero
16732a85d7
rct: faster Cryptonote/rct conversions
2016-08-28 21:30:45 +01:00
moneromooo-monero
fbd7c359ee
wallet: fix some "may be used uninitialized" warnings
...
The compiler can't always work out the _found booleans are
set iff the value is initialized.
2016-08-28 21:30:44 +01:00
moneromooo-monero
4a41dd4068
wallet: do not generate 0 change
2016-08-28 21:30:42 +01:00
moneromooo-monero
a0925e628e
core: use full rct signatures if just one input
...
It is slightly smaller, but requires all rings to have the real
input on the same index, so can only be used for single input txes.
2016-08-28 21:30:40 +01:00
moneromooo-monero
94fd881f74
rct: early out on failure on verRange
2016-08-28 21:30:38 +01:00
moneromooo-monero
45349b6f7c
wallet: do not ask for duplicate histograms
2016-08-28 21:30:36 +01:00
moneromooo-monero
b951bc8780
wallet: transfer_selected_rct now also selects fake outs
2016-08-28 21:30:34 +01:00
moneromooo-monero
4f887dea6e
increase minimum mixin to 4 on hard fork 5
2016-08-28 21:30:33 +01:00
moneromooo-monero
0815c72df7
core: allow v1 txes after HF 5 when sweeping unmixable outputs
2016-08-28 21:30:31 +01:00
moneromooo-monero
f782d45827
tests: hard fork list must end with a 0
2016-08-28 21:30:29 +01:00
moneromooo-monero
074e602609
ringct: use Cryptonote serialization to hash non prunable data
2016-08-28 21:30:28 +01:00
moneromooo-monero
c3b3260ae5
New "Halfway RingCT" outputs for coinbase transactions
...
When RingCT is enabled, outputs from coinbase transactions
are created as a single output, and stored as RingCT output,
with a fake mask. Their amount is not hidden on the blockchain
itself, but they are then able to be used as fake inputs in
a RingCT ring. Since the output amounts are hidden, their
"dustiness" is not an obstacle anymore to mixing, and this
makes the coinbase transactions a lot smaller, as well as
helping the TXO set to grow more slowly.
Also add a new "Null" type of rct signature, which decreases
the size required when no signatures are to be stored, as
in a coinbase tx.
2016-08-28 21:30:26 +01:00
moneromooo-monero
6f526cdff8
rct: log why verification fails
...
and remove some unnecessary variables in the checking code
2016-08-28 21:30:23 +01:00
moneromooo-monero
d4b8991e44
rct: serialize txnFee as varint
2016-08-28 21:30:21 +01:00
moneromooo-monero
d4b62a1e29
rct amount key modified as per luigi1111's recommendations
...
This allows the key to be not the same for two outputs sent to
the same address (eg, if you pay yourself, and also get change
back). Also remove the key amounts lists and return parameters
since we don't actually generate random ones, so we don't need
to save them as we can recalculate them when needed if we have
the correct keys.
2016-08-28 21:30:19 +01:00
moneromooo-monero
93f5c625f0
rct: rework v2 txes into prunable and non prunable data
...
Nothing is pruned, but this allows easier changes later.
2016-08-28 21:30:18 +01:00
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
e5a9a4755b
core_tests: fix a couple pre-rct tests using rct
2016-08-28 21:29:58 +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
ce5de8b430
tests: add tests for wallet output selection
2016-08-28 21:29:34 +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
e06faefde4
tests: add basic tests for simple rct api
2016-08-28 21:29:22 +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