Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Monero 14 merge #350

Merged
merged 1,647 commits into from
Feb 19, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1647 commits
Select commit Hold shift + click to select a range
4609b36
Merge pull request #5455
fluffypony Apr 17, 2019
e9464eb
Merge pull request #5413
fluffypony Apr 17, 2019
7973fb6
Merge pull request #5415
fluffypony Apr 17, 2019
58eade6
simplewallet: add the change amount to the prompt when locking
moneromooo-monero Apr 17, 2019
84047cb
wallet_rpc_server: add unlocked field to incoming_transfers output
moneromooo-monero Apr 17, 2019
5d0dcc1
add translations for it, fr, ja, sv from Pootle and refresh template …
Monero-Weblate Apr 18, 2019
b414b69
Windows: fix a build error in MSYS2 with boost 1.70.0
iDunk5400 Apr 18, 2019
b672d4d
epee: use boost/timer/timer.hpp, boost/timer.hpp is deprecated
moneromooo-monero Apr 18, 2019
35e0a96
wallet2: "output lineup" fake out selection
moneromooo-monero Apr 2, 2019
588e670
simplewallet: fix output representation offset
moneromooo-monero Apr 2, 2019
fbbe75d
device/trezor: button request callback fix
ph4r05 Apr 18, 2019
0f52fe4
Windows: work around a boost 1.70 and cmake SNAFU
iDunk5400 Apr 18, 2019
3e50a9e
functional_tests: detect requests python module
moneromooo-monero Apr 18, 2019
5580714
Merge pull request #5453
fluffypony Apr 18, 2019
b8f1709
Merge pull request #5456
fluffypony Apr 18, 2019
2e342d8
Merge pull request #5458
fluffypony Apr 18, 2019
950f79d
Merge pull request #5389
fluffypony Apr 18, 2019
9b10072
Merge pull request #5462
fluffypony Apr 18, 2019
108544d
Merge pull request #5461
fluffypony Apr 18, 2019
2267f11
Merge pull request #5463
fluffypony Apr 18, 2019
71c6b24
Merge pull request #5464
fluffypony Apr 18, 2019
ef1f1c5
Merge pull request #5465
fluffypony Apr 18, 2019
55aae6a
Fix socks tests in windows and handle errors better
vtnerd Apr 19, 2019
4754819
Merge pull request #5466
fluffypony Apr 19, 2019
375fde9
hardfork: fix off by one updating fork index after popping
moneromooo-monero Apr 19, 2019
31a9aa8
wallet_rpc_server: add block_height and frozen to incoming_transfers
moneromooo-monero Apr 20, 2019
aba2b2e
functional_tests: reset blockchain on test start
moneromooo-monero Apr 19, 2019
7a9316e
serialization: set default log category
moneromooo-monero Apr 21, 2019
97e1c92
wallet: fix key image computation signaling to the device
ph4r05 Apr 22, 2019
edbae2d
levin_protocol_handler_async: tune down preallocation a fair bit
moneromooo-monero Apr 22, 2019
7af49ef
daemonizer: add --non-interactive for windows
moneromooo-monero Apr 23, 2019
9956500
net_helper: clear recv buffer on eof
moneromooo-monero Apr 23, 2019
c073664
unit_tests: don't delete log file on windows, it will fail
moneromooo-monero Apr 23, 2019
36ced06
functional_tests: flush stdout before popening new process
moneromooo-monero Apr 23, 2019
c519d1d
wallet2: fix wrong change being recorded in sweep_all
moneromooo-monero Apr 23, 2019
b386ae5
wallet2: add missing "sanity check failed" reason message
moneromooo-monero Apr 23, 2019
4be18df
tx_sanity_check: relax uniqueness check a bit
moneromooo-monero Apr 23, 2019
64983fc
wallet2: default to trying to keep 5 outputs of 2+ monero
moneromooo-monero Apr 24, 2019
28a7d31
p2p: do not send last_seen timestamp to peers
moneromooo-monero Apr 23, 2019
eb1da46
Merge pull request #5467
fluffypony Apr 24, 2019
fd7ed93
Merge pull request #5470
fluffypony Apr 24, 2019
343da95
Merge pull request #5474
fluffypony Apr 24, 2019
edcb0cf
Merge pull request #5477
fluffypony Apr 24, 2019
d86dd5f
Merge pull request #5479
fluffypony Apr 24, 2019
2aa7fbd
Merge pull request #5480
fluffypony Apr 24, 2019
5d09e39
Merge pull request #5482
fluffypony Apr 24, 2019
9734050
Merge pull request #5483
fluffypony Apr 24, 2019
2e2ee3d
Merge pull request #5485
fluffypony Apr 24, 2019
581994b
Merge pull request #5486
fluffypony Apr 24, 2019
0aaf5e2
device/trezor: device sorting and filtering improved
ph4r05 Apr 22, 2019
0eb0d6b
rpc: improve get_output_distribution
moneromooo-monero Apr 25, 2019
a59c274
unit_tests: fix crash in debug in output_distribution test
moneromooo-monero Apr 25, 2019
968848a
wallet_rpc_server: fix crash in validate_address if no wallet is loaded
moneromooo-monero Apr 24, 2019
9074c0d
wallet_rpc_server: return false on error in set_log_categories
moneromooo-monero Apr 24, 2019
98fb98f
wallet_rpc_server: adding missing return on error in set_daemon
moneromooo-monero Apr 24, 2019
5e0da6f
change SSL certificate fingerprint whitelisting from SHA1 to SHA-256
moneromooo-monero Apr 25, 2019
b4ca72d
wallet2: fix infinite loop picking outputs in corner case
moneromooo-monero Apr 29, 2019
ccc1e31
wallet_rpc_server: reject standalone short payment id in address book
moneromooo-monero Apr 30, 2019
7e5158a
mnemonics: fix 4 byte UTF-8 rewriting
moneromooo-monero Apr 29, 2019
7d5cc03
cmake: fix some case of "backtrace lib not found" breaking
moneromooo-monero May 1, 2019
1c44e65
wallet2: reject standalone short payment IDs in monero: URI API
moneromooo-monero May 1, 2019
e980938
fix wide difficulty conversion with some versions of boost
moneromooo-monero May 1, 2019
08ab0cb
Merge pull request #5476
fluffypony May 2, 2019
17f31c3
Merge pull request #5484
fluffypony May 2, 2019
efd2412
Merge pull request #5489
fluffypony May 2, 2019
52eb454
Merge pull request #5491
fluffypony May 2, 2019
77f9bfa
Merge pull request #5493
fluffypony May 2, 2019
2bf855e
Merge pull request #5497
fluffypony May 2, 2019
a4c4a2d
blockchain: keep a rolling long term block weight median
moneromooo-monero Apr 15, 2019
d47292e
error: fix compile error on windows with depends
moneromooo-monero May 2, 2019
b8b957d
cmake: fix incorrect hint for OPENSSL_ROOT_DIR
moneromooo-monero May 4, 2019
367bb80
mlog: default to not showing SSL errors
moneromooo-monero May 4, 2019
a62e072
net_ssl: SSL config tweaks for compatibility and security
moneromooo-monero May 1, 2019
123df0e
Merge pull request #5419
fluffypony May 7, 2019
cf83196
Merge pull request #5481
fluffypony May 7, 2019
9d91301
Merge pull request #5496
fluffypony May 7, 2019
2d04b0e
Merge pull request #5499
fluffypony May 7, 2019
ebb1c03
Merge pull request #5501
fluffypony May 7, 2019
c20221f
Merge pull request #5503
fluffypony May 7, 2019
a22a8b0
Merge pull request #5505
fluffypony May 7, 2019
97cb1c9
Merge pull request #5508
fluffypony May 7, 2019
f64f596
Merge pull request #5510
fluffypony May 7, 2019
9573a2b
Merge pull request #5506
fluffypony May 7, 2019
c0bc6d9
Merge pull request #5509
fluffypony May 7, 2019
1e8f3f6
rpc: fail update RPC when running offline
moneromooo-monero May 9, 2019
9a7a453
net_ssl: free certs after setting them up
moneromooo-monero May 10, 2019
46244dd
wallet_rpc_server: use original addresses in destinations in get_tran…
moneromooo-monero May 2, 2019
e1016bc
password: do not use line input on windows
moneromooo-monero May 8, 2019
615f287
wallet: fix certificate fingerprint length check
moneromooo-monero May 11, 2019
39bd157
Added Table of Contents to main README.md
May 12, 2019
6810307
Updated Copyright notice
May 12, 2019
1873af3
Made code block usage consistent across all .md files
May 12, 2019
af9bc4e
Used subeaders to avoid slightly wonky looking formatting
May 12, 2019
3f612cd
Changed odd bullet point to low level header
May 13, 2019
266f68b
Merge pull request #5512
luigi1111 May 14, 2019
1fc1c73
Merge pull request #5519
luigi1111 May 14, 2019
5a67ff2
Merge pull request #5526
luigi1111 May 14, 2019
14723fc
Merge pull request #5527
luigi1111 May 14, 2019
eedf510
Merge pull request #5532
luigi1111 May 14, 2019
1607419
Merge pull request #5538
luigi1111 May 14, 2019
5e80b3c
Merge pull request #5535
fluffypony May 15, 2019
e8487fa
Merge pull request #5539
fluffypony May 15, 2019
915f59e
wallet: add unlock_time details to show_transfers
moneromooo-monero May 16, 2019
5fbfa8a
Merge pull request #5548
fluffypony May 17, 2019
de6cfac
refresh and update translations for new release
erciccione May 17, 2019
c27d961
[depends] update openssl to 1.0.2r
who-biz May 18, 2019
b6830db
Fix #5553
hyc May 19, 2019
ce73cc3
Fix configuration bug; wallet2 --daemon-ssl-allow-any-cert now works.
vtnerd May 21, 2019
fafc5c3
Add ssl_options support to monerod's rpc mode.
vtnerd May 22, 2019
4456a4b
Fix allow any cert mode in wallet rpc when configured over rpc
vtnerd May 22, 2019
205a0ba
unit_tests: make the density test a bit less stringent
moneromooo-monero May 20, 2019
1386470
functional_tests: fix rare get_output_distribution failure
moneromooo-monero May 20, 2019
8f2a99d
core: do not commit half constructed batch db txn
moneromooo-monero May 24, 2019
a663ccb
blockchain: do not try to pop blocks down to the genesis block
moneromooo-monero May 26, 2019
b7a96a0
core: update pruning if using --prune-blockchain on a pruned blockchain
moneromooo-monero May 28, 2019
eeebad6
functional_tests: fix python3 compatibility
moneromooo-monero May 29, 2019
ff5b308
Merge pull request #5564
fluffypony Jun 1, 2019
0565fe2
Merge pull request #5563
fluffypony Jun 1, 2019
2f5efc7
Merge pull request #5562
fluffypony Jun 1, 2019
1622292
Merge pull request #5565
fluffypony Jun 1, 2019
8b9920f
Merge pull request #5551
fluffypony Jun 1, 2019
3f2c823
Merge pull request #5572
fluffypony Jun 1, 2019
9a28832
Merge pull request #5578
fluffypony Jun 1, 2019
256f8d8
Merge pull request #5584
fluffypony Jun 1, 2019
4cff925
p2p: fix GCC 9.1 crash
moneromooo-monero Jun 8, 2019
6375111
miniupnpc: update to build on BSD
moneromooo-monero Jun 8, 2019
f47488c
Fix GCC 9.1 build warnings
moneromooo-monero Jun 8, 2019
ce13a98
cmake: do not use -mmitigate-rop on GCC >= 9.1
moneromooo-monero Jun 8, 2019
117f950
miner: fix double free of thread attributes
ston1th Jun 9, 2019
b0a04f7
epee: fix SSL autodetect on reconnection
xiphon Jun 10, 2019
0a1731a
Merge pull request #5617
luigi1111 Jun 11, 2019
24806b5
Merge pull request #5620
luigi1111 Jun 11, 2019
0c62e7b
Merge pull request #5622
luigi1111 Jun 11, 2019
538fae4
Merge pull request #5614
luigi1111 Jun 11, 2019
cfa88ac
Don't use -march=native
hyc Jun 11, 2019
e85bf46
Allow parallel make
hyc Jun 11, 2019
0ef8391
Delete redundant cppzmq dependency
hyc Jun 12, 2019
86591eb
Use 9 digit build IDs
hyc Jun 12, 2019
9f2882d
Merge pull request #5631
luigi1111 Jun 12, 2019
3395de2
Merge pull request #5633
luigi1111 Jun 12, 2019
6ed1679
prep for 0.14.1 release
fluffypony Jun 13, 2019
b873b69
epee: basic sanity check on allocation size from untrusted source
moneromooo-monero Mar 8, 2019
3c953d5
cryptonote_protocol_handler: prevent potential DoS
anonimal Mar 9, 2019
fa4aa47
cryptonote_protocol: expand basic DoS protection
moneromooo-monero Mar 8, 2019
19490e4
cryptonote_protocol: fix another potential P2P DoS
moneromooo-monero Mar 9, 2019
d6bb9ec
serialization: fail on read_varint error
moneromooo-monero Mar 11, 2019
67baa3a
cryptonote: throw on tx hash calculation error
moneromooo-monero Mar 19, 2019
e3f714a
tree-hash: allocate variable memory on heap, not stack
moneromooo-monero Apr 4, 2019
756773e
serialization: check stream good flag at the end
moneromooo-monero Apr 16, 2019
279f1f2
abstract_tcp_server2: improve DoS resistance
moneromooo-monero Apr 20, 2019
434e617
ensure no NULL is passed to memcpy
moneromooo-monero Apr 29, 2019
542cab0
rpc: restrict the recent cutoff size in restricted RPC mode
moneromooo-monero May 12, 2019
c58255e
Merge pull request #5640
fluffypony Jun 14, 2019
29a505d
Merge pull request #5638
fluffypony Jun 14, 2019
c382677
blockchain: silence an error getting blocks for pruned nodes
moneromooo-monero Jun 16, 2019
c1eba2b
core: fix --prune-blockchain not pruning if no blockchain exists
moneromooo-monero Jun 17, 2019
ba035bf
db_lmdb: commit pruning txn at checkpoints
moneromooo-monero Jun 15, 2019
bb7b059
tx_sanity_check: relax the median check a lot
moneromooo-monero Jun 19, 2019
93eb4d7
rpc: set sanity_check_failed to false when successful
stoffu Jun 20, 2019
5157060
Add debug targets to depends Makefile
TheCharlatan Jun 17, 2019
8475cbb
Remove clutter in depends installed packages
TheCharlatan Jun 17, 2019
48c2659
Add ncurses package for linux and darwin readline
TheCharlatan Jun 17, 2019
761a39a
p2p: don't forget pruning seed or public RPC port when updating peers
moneromooo-monero Jun 18, 2019
6461815
Depends: Update HIDAPI version
TheCharlatan Jun 26, 2019
c78f7c5
Remove Xiala.net from the list of dns resolvers
tobtoht Jun 28, 2019
ae77f09
Merge pull request #5669
luigi1111 Jul 1, 2019
124ea41
Merge pull request #5676
luigi1111 Jul 1, 2019
6e3d6f6
Merge pull request #5684
luigi1111 Jul 1, 2019
2af1ea5
Merge pull request #5708
luigi1111 Jul 1, 2019
ef4429e
Merge pull request #5666
luigi1111 Jul 4, 2019
0825409
Merge pull request #5651
luigi1111 Jul 4, 2019
bb3c9ec
Merge pull request #5664
luigi1111 Jul 4, 2019
ff42af8
p2p: add a few missing connection close calls
moneromooo-monero Jul 4, 2019
1542d5d
cryptonote_protocol: drop peers we can't download from when syncing
moneromooo-monero Jul 4, 2019
200e53c
keccak: guard against misaligned memory accesses on ARM
moneromooo-monero Jul 2, 2019
8072e23
p2p: don't connect to more than one IP per class B if we can
moneromooo-monero Jul 5, 2019
f3febaf
wallet_rpc_server: fix get_bulk_payments with short payment ids
moneromooo-monero Jul 9, 2019
fffd616
Merge pull request #5694
luigi1111 Jul 13, 2019
b08cacb
Merge pull request #5703
luigi1111 Jul 13, 2019
d89b622
Merge pull request #5726
luigi1111 Jul 13, 2019
2532f5a
Merge pull request #5737
luigi1111 Jul 13, 2019
5e81214
Merge pull request #5747
luigi1111 Jul 13, 2019
3aa87ad
Merge pull request #5733
fluffypony Jul 17, 2019
65e2222
prep for 0.14.1.1
fluffypony Jul 17, 2019
da8ffdf
Merge pull request #5760
fluffypony Jul 17, 2019
f4f00ac
update checkpoints.dat hash
fluffypony Jul 18, 2019
0a9bda8
bump version to 0.14.1.2
fluffypony Jul 18, 2019
8f0aedf
Merge pull request #5762
fluffypony Jul 18, 2019
ca8d4a3
Fix check for disconnecting peers when syncing
jagerman Aug 17, 2019
adc2e3f
Merge pull request #5816
luigi1111 Sep 4, 2019
73f2ead
seed nodes IPs changed
mbg033 Sep 24, 2019
f226c8a
Merge pull request #343 from graft-project/move-seednodes
mbg033 Sep 24, 2019
460b473
community supported mainnet seed-node
mbg033 Sep 26, 2019
b91add3
Merge pull request #344 from graft-project/move-seednodes
mbg033 Sep 26, 2019
ef33ad5
Merge remote-tracking branch 'monero/release-v0.14' into monero-14-merge
mbg033 Dec 2, 2019
796a04c
net_helper.h post-merge fix
mbg033 Dec 2, 2019
d3f4f8c
abstract_tcp_server2: post-merge fixes, removed unused Graft code,
mbg033 Dec 3, 2019
ab646f4
removed unused Graft's async_state_machine
mbg033 Dec 3, 2019
350757c
int-util: post-merge fix
mbg033 Dec 4, 2019
57881c9
http_client: post-merge fix in favour of monero implementation
mbg033 Dec 4, 2019
51b860a
slow-hash: removed CryptonigntR and Variant_4 stuff
mbg033 Dec 4, 2019
90dade1
cryptonote_format_utils: fix missing function declarations
mbg033 Dec 4, 2019
31808fd
Revert "Make difficulty 128 bit instead of 64 bit"
mbg033 Dec 5, 2019
40a332b
cryptonote_core + utils interface change related fixes
mbg033 Dec 5, 2019
554db5d
post-merge fix: rpc and p2p request/response definitions added
mbg033 Dec 5, 2019
e49a41a
fix: MONERO_VERSION/GRAFT_VERSION
mbg033 Dec 6, 2019
8007888
Fix: extra parameter for RTA RPC handlers
mbg033 Dec 6, 2019
a859953
[WIP]: net_node: adopting Graft's RTA/P2P functionality
mbg033 Dec 6, 2019
083c7a1
net_node: compilation errors fixed
mbg033 Dec 9, 2019
2e1187c
wallet_rpc_server compilation errors fixed
mbg033 Dec 9, 2019
dba6554
libwallet compilation errors fixed
mbg033 Dec 9, 2019
c51abf6
Removed CryptonightV4 files and tests
mbg033 Dec 9, 2019
9bfc40e
blockchain_utilities: fixed complilation errors
mbg033 Dec 9, 2019
d428e37
simplewallet: fixed compilation errors
mbg033 Dec 9, 2019
7d6e540
debug_utilities: fixed compilation errors
mbg033 Dec 9, 2019
4ab69fb
daemon: fixed compilation error
mbg033 Dec 9, 2019
6ac0bec
unit_tests: fixed compilation error
mbg033 Dec 9, 2019
7bf0002
performance_tests: fixed compilation errors
mbg033 Dec 9, 2019
149528a
fix: ringdb - close() might be called outside of dtore like in
mbg033 Dec 11, 2019
c9e73ad
block_weight test fixed
mbg033 Dec 12, 2019
9bf20bd
fixed long_term_block_weight from unit_tests
mbg033 Dec 12, 2019
b8cf6b1
fixed Serialization.*rta* tests from unit_tests
mbg033 Dec 12, 2019
8fad672
core_tests: bp tests fixed with correct HF version
mbg033 Dec 16, 2019
5933d00
[DELME] testing HF17 in devnet
mbg033 Dec 17, 2019
5394b13
monero -> graft renamings
mbg033 Dec 20, 2019
6baab1a
v3 tx: calculate 'type' and 'extra2' fields size
mbg033 Dec 25, 2019
4d6c008
v3 tx: exclude 'type' and 'extra2' fields from hash calculation
mbg033 Dec 25, 2019
4fc89a4
cryptonote_format_utils: fixed 'sort_tx_extra' for graft structures
mbg033 Dec 27, 2019
a004247
blockchain_utilities: monero->graft renamings
mbg033 Dec 27, 2019
03838fd
Merge branch 'develop' into merge-monero-14-develop
mbg033 Dec 31, 2019
c61930c
moved 'post_request_to_supernode..' methods to .inl file, renamed
mbg033 Jan 9, 2020
719b1cd
Merge branch 'develop' into merge-monero-14-develop
mbg033 Jan 30, 2020
d10cdf8
version bump
mbg033 Feb 3, 2020
ed508e0
p2p: removed unused methods
mbg033 Feb 3, 2020
3969aca
p2p: do not append hardcoded seednodes if set in config. testnet only
mbg033 Feb 3, 2020
140324b
p2p: reverted max_connections = 1
mbg033 Feb 3, 2020
922b609
p2p: re-enabled "support_flags"
mbg033 Feb 3, 2020
0be18f0
p2p: apply "no more than one IP per class B" restriction for class B
mbg033 Feb 5, 2020
49e8cc2
fix: "host" field in 'peer' structure is human-readable
mbg033 Feb 5, 2020
03d5da6
RTA: broadcast message cached only when received over P2P
mbg033 Feb 6, 2020
fcee1f5
graft tx: adjust fake outputs count to be 10
mbg033 Feb 7, 2020
46e7c8b
updating udht msg counters
mbg033 Feb 7, 2020
19a25f6
[WIP] UDHT debugging..
mbg033 Feb 7, 2020
fbc5b01
dump_connections, dump_routes
mbg033 Feb 13, 2020
d800768
fix: forwarding p2p broadcasts via local supernode
mbg033 Feb 13, 2020
0502e86
[temporary] disabled UDHT
mbg033 Feb 18, 2020
f9585d6
validating RTA broadcast messages
mbg033 Feb 18, 2020
0b0cd48
tx_pool: removed "validate_supernode" as it has been added to
mbg033 Feb 18, 2020
9a71fb4
debug logging for supernode stake
mbg033 Feb 19, 2020
bb0d062
debug logging: print supernode id for "INVALID" broadcast
mbg033 Feb 19, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,6 @@
[submodule "external/rapidjson"]
path = external/rapidjson
url = https://github.com/Tencent/rapidjson
[submodule "external/trezor-common"]
path = external/trezor-common
url = https://github.com/trezor/trezor-common.git
19 changes: 8 additions & 11 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,37 +10,33 @@ cache:
env:
global:
- MAKEJOBS=-j3
- RUN_TESTS=false
- BOOST_TEST_RANDOM=1$TRAVIS_BUILD_ID
- CCACHE_SIZE=100M
- CCACHE_TEMPDIR=/tmp/.ccache-temp
- CCACHE_COMPRESS=1
- CCACHE_DIR=$HOME/.ccache
- BASE_OUTDIR=$TRAVIS_BUILD_DIR/out
- SDK_URL=https://bitcoincore.org/depends-sources/sdks
- PYTHON_DEBUG=1
- WINEDEBUG=fixme-all
- DOCKER_PACKAGES="build-essential libtool cmake autotools-dev automake pkg-config bsdmainutils curl git ca-certificates ccache"
matrix:
# ARM v7
- HOST=arm-linux-gnueabihf PACKAGES="gperf g++-arm-linux-gnueabihf"
- HOST=arm-linux-gnueabihf PACKAGES="python3 gperf g++-arm-linux-gnueabihf"
# ARM v8
- HOST=aarch64-linux-gnu PACKAGES="gperf g++-aarch64-linux-gnu"
- HOST=aarch64-linux-gnu PACKAGES="python3 gperf g++-aarch64-linux-gnu"
# i686 Win
- HOST=i686-w64-mingw32 PACKAGES="python3 nsis g++-mingw-w64-i686"
- HOST=i686-w64-mingw32 DEP_OPTS="NO_QT=1" PACKAGES="python3 g++-mingw-w64-i686 qttools5-dev-tools"
# i686 Linux
- HOST=i686-pc-linux-gnu PACKAGES="gperf cmake g++-multilib bc python3-zmq" RUN_TESTS=true
- HOST=i686-pc-linux-gnu PACKAGES="gperf cmake g++-multilib python3-zmq"
# Win64
- HOST=x86_64-w64-mingw32 PACKAGES="cmake python3 nsis g++-mingw-w64-x86-64 wine-binfmt wine64 bc" RUN_TESTS=true
- HOST=x86_64-w64-mingw32 DEP_OPTS="NO_QT=1" PACKAGES="cmake python3 g++-mingw-w64-x86-64 qttools5-dev-tools"
# x86_64 Linux
- HOST=x86_64-unknown-linux-gnu PACKAGES="gperf cmake python3-zmq protobuf-compiler libdbus-1-dev libharfbuzz-dev libprotobuf-dev" RUN_TESTS=true
- HOST=x86_64-unknown-linux-gnu PACKAGES="gperf cmake python3-zmq libdbus-1-dev libharfbuzz-dev"
# Cross-Mac
- HOST=x86_64-apple-darwin11 PACKAGES="cmake imagemagick libcap-dev librsvg2-bin libz-dev libbz2-dev libtiff-tools python-dev python3-setuptools-git" OSX_SDK=10.11

before_install:
- export PATH=$(echo $PATH | tr ':' "\n" | sed '/\/opt\/python/d' | tr "\n" ":" | sed "s|::|:|g")
install:
- env | grep -E '^(CCACHE_|WINEDEBUG|DISPLAY|BOOST_TEST_RANDOM|CONFIG_SHELL)' | tee /tmp/env
- env | grep -E '^(CCACHE_|DISPLAY|CONFIG_SHELL)' | tee /tmp/env
- if [[ $HOST = *-mingw32 ]]; then DOCKER_ADMIN="--cap-add SYS_ADMIN"; fi
- DOCKER_ID=$(docker run $DOCKER_ADMIN -idt --mount type=bind,src=$TRAVIS_BUILD_DIR,dst=$TRAVIS_BUILD_DIR --mount type=bind,src=$CCACHE_DIR,dst=$CCACHE_DIR -w $TRAVIS_BUILD_DIR --env-file /tmp/env ubuntu:18.04)
- DOCKER_EXEC="docker exec $DOCKER_ID"
Expand All @@ -52,6 +48,7 @@ before_script:
- if [ -n "$OSX_SDK" -a ! -f contrib/depends/sdk-sources/MacOSX${OSX_SDK}.sdk.tar.gz ]; then curl --location --fail $SDK_URL/MacOSX${OSX_SDK}.sdk.tar.gz -o contrib/depends/sdk-sources/MacOSX${OSX_SDK}.sdk.tar.gz; fi
- if [ -n "$OSX_SDK" -a -f contrib/depends/sdk-sources/MacOSX${OSX_SDK}.sdk.tar.gz ]; then tar -C contrib/depends/SDKs -xf contrib/depends/sdk-sources/MacOSX${OSX_SDK}.sdk.tar.gz; fi
- if [[ $HOST = *-mingw32 ]]; then $DOCKER_EXEC bash -c "update-alternatives --set $HOST-g++ \$(which $HOST-g++-posix)"; fi
- if [[ $HOST = *-mingw32 ]]; then $DOCKER_EXEC bash -c "update-alternatives --set $HOST-gcc \$(which $HOST-gcc-posix)"; fi
- if [ -z "$NO_DEPENDS" ]; then $DOCKER_EXEC bash -c "CONFIG_SHELL= make $MAKEJOBS -C contrib/depends HOST=$HOST $DEP_OPTS"; fi
script:
- git submodule init && git submodule update
Expand Down
210 changes: 210 additions & 0 deletions ANONYMITY_NETWORKS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,210 @@
# Anonymity Networks with Monero

Currently only Tor and I2P have been integrated into Monero. The usage of
these networks is still considered experimental - there are a few pessimistic
cases where privacy is leaked. The design is intended to maximize privacy of
the source of a transaction by broadcasting it over an anonymity network, while
relying on IPv4 for the remainder of messages to make surrounding node attacks
(via sybil) more difficult.


## Behavior

If _any_ anonymity network is enabled, transactions being broadcast that lack
a valid "context" (i.e. the transaction did not come from a p2p connection),
will only be sent to peers on anonymity networks. If an anonymity network is
enabled but no peers over an anonymity network are available, an error is
logged and the transaction is kept for future broadcasting over an anonymity
network. The transaction will not be broadcast unless an anonymity connection
is made or until `monerod` is shutdown and restarted with only public
connections enabled.

Anonymity networks can also be used with `monero-wallet-cli` and
`monero-wallet-rpc` - the wallets will connect to a daemon through a proxy. The
daemon must provide a hidden service for the RPC itself, which is separate from
the hidden service for P2P connections.


## P2P Commands

Only handshakes, peer timed syncs and transaction broadcast messages are
supported over anonymity networks. If one `--add-exclusive-node` p2p address
is specified, then no syncing will take place and only transaction broadcasting
can occur. It is therefore recommended that `--add-exclusive-node` be combined
with additional exclusive IPv4 address(es).


## Usage

Anonymity networks have no seed nodes (the feature is still considered
experimental), so a user must specify an address. If configured properly,
additional peers can be found through typical p2p peerlist sharing.

### Outbound Connections

Connecting to an anonymous address requires the command line option
`--proxy` which tells `monerod` the ip/port of a socks proxy provided by a
separate process. On most systems the configuration will look like:

> `--proxy tor,127.0.0.1:9050,10`
> `--proxy i2p,127.0.0.1:9000`

which tells `monerod` that ".onion" p2p addresses can be forwarded to a socks
proxy at IP 127.0.0.1 port 9050 with a max of 10 outgoing connections and
".b32.i2p" p2p addresses can be forwarded to a socks proxy at IP 127.0.0.1 port
9000 with the default max outgoing connections. Since there are no seed nodes
for anonymity connections, peers must be manually specified:

> `--add-exclusive-node rveahdfho7wo4b2m.onion:28083`
> `--add-peer rveahdfho7wo4b2m.onion:28083`

Either option can be listed multiple times, and can specify any mix of Tor,
I2P, and IPv4 addresses. Using `--add-exclusive-node` will prevent the usage of
seed nodes on ALL networks, which will typically be undesireable.

### Inbound Connections

Receiving anonymity connections is done through the option
`--anonymous-inbound`. This option tells `monerod` the inbound address, network
type, and max connections:

> `--anonymous-inbound rveahdfho7wo4b2m.onion:28083,127.0.0.1:28083,25`
> `--anonymous-inbound cmeua5767mz2q5jsaelk2rxhf67agrwuetaso5dzbenyzwlbkg2q.b32.i2p:5000,127.0.0.1:30000`

which tells `monerod` that a max of 25 inbound Tor connections are being
received at address "rveahdfho7wo4b2m.onion:28083" and forwarded to `monerod`
localhost port 28083, and a default max I2P connections are being received at
address "cmeua5767mz2q5jsaelk2rxhf67agrwuetaso5dzbenyzwlbkg2q.b32.i2p:5000" and
forwarded to `monerod` localhost port 30000.
These addresses will be shared with outgoing peers, over the same network type,
otherwise the peer will not be notified of the peer address by the proxy.

### Wallet RPC

An anonymity network can be configured to forward incoming connections to a
`monerod` RPC port - which is independent from the configuration for incoming
P2P anonymity connections. The anonymity network (Tor/i2p) is
[configured in the same manner](#configuration), except the localhost port
must be the RPC port (typically 18081 for mainnet) instead of the p2p port:

> HiddenServiceDir /var/lib/tor/data/monero
> HiddenServicePort 18081 127.0.0.1:18081

Then the wallet will be configured to use a Tor/i2p address:
> `--proxy 127.0.0.1:9050`
> `--daemon-address rveahdfho7wo4b2m.onion`

The proxy must match the address type - a Tor proxy will not work properly with
i2p addresses, etc.

i2p and onion addresses provide the information necessary to authenticate and
encrypt the connection from end-to-end. If desired, SSL can also be applied to
the connection with `--daemon-address https://rveahdfho7wo4b2m.onion` which
requires a server certificate that is signed by a "root" certificate on the
machine running the wallet. Alternatively, `--daemon-cert-file` can be used to
specify a certificate to authenticate the server.

Proxies can also be used to connect to "clearnet" (ipv4 addresses or ICANN
domains), but `--daemon-cert-file` _must_ be used for authentication and
encryption.

### Network Types

#### Tor & I2P

Options `--add-exclusive-node` and `--add-peer` recognize ".onion" and
".b32.i2p" addresses, and will properly forward those addresses to the proxy
provided with `--proxy tor,...` or `--proxy i2p,...`.

Option `--anonymous-inbound` also recognizes ".onion" and ".b32.i2p" addresses,
and will automatically be sent out to outgoing Tor/I2P connections so the peer
can distribute the address to its other peers.

##### Configuration

Tor must be configured for hidden services. An example configuration ("torrc")
might look like:

> HiddenServiceDir /var/lib/tor/data/monero
> HiddenServicePort 28083 127.0.0.1:28083

This will store key information in `/var/lib/tor/data/monero` and will forward
"Tor port" 28083 to port 28083 of ip 127.0.0.1. The file
`/usr/lib/tor/data/monero/hostname` will contain the ".onion" address for use
with `--anonymous-inbound`.

I2P must be configured with a standard server tunnel. Configuration differs by
I2P implementation.

## Privacy Limitations

There are currently some techniques that could be used to _possibly_ identify
the machine that broadcast a transaction over an anonymity network.

### Timestamps

The peer timed sync command sends the current time in the message. This value
can be used to link an onion address to an IPv4/IPv6 address. If a peer first
sees a transaction over Tor, it could _assume_ (possibly incorrectly) that the
transaction originated from the peer. If both the Tor connection and an
IPv4/IPv6 connection have timestamps that are approximately close in value they
could be used to link the two connections. This is less likely to happen if the
system clock is fairly accurate - many peers on the Monero network should have
similar timestamps.

#### Mitigation

Keep the system clock accurate so that fingerprinting is more difficult. In
the future a random offset might be applied to anonymity networks so that if
the system clock is noticeably off (and therefore more fingerprintable),
linking the public IPv4/IPv6 connections with the anonymity networks will be
more difficult.

### Bandwidth Usage

An ISP can passively monitor `monerod` connections from a node and observe when
a transaction is sent over a Tor/I2P connection via timing analysis + size of
data sent during that timeframe. I2P should provide better protection against
this attack - its connections are not circuit based. However, if a node is
only using I2P for broadcasting Monero transactions, the total aggregate of
I2P data would also leak information.

#### Mitigation

There is no current mitigation for the user right now. This attack is fairly
sophisticated, and likely requires support from the internet host of a Monero
user.

In the near future, "whitening" the amount of data sent over anonymity network
connections will be performed. An attempt will be made to make a transaction
broadcast indistinguishable from a peer timed sync command.

### Intermittent Monero Syncing

If a user only runs `monerod` to send a transaction then quit, this can also
be used by an ISP to link a user to a transaction.

#### Mitigation

Run `monerod` as often as possible to conceal when transactions are being sent.
Future versions will also have peers that first receive a transaction over an
anonymity network delay the broadcast to public peers by a randomized amount.
This will not completetely mitigate a user who syncs up sends then quits, in
part because this rule is not enforceable, so this mitigation strategy is
simply a best effort attempt.

### Active Bandwidth Shaping

An attacker could attempt to bandwidth shape traffic in an attempt to determine
the source of a Tor/I2P connection. There isn't great mitigation against
this, but I2P should provide better protection against this attack since
the connections are not circuit based.

#### Mitigation

The best mitigiation is to use I2P instead of Tor. However, I2P
has a smaller set of users (less cover traffic) and academic reviews, so there
is a tradeoff in potential isses. Also, anyone attempting this strategy really
wants to uncover a user, it seems unlikely that this would be performed against
every Tor/I2P user.

Loading