qubenix / qubes-whonix-bitcoin Goto Github PK
View Code? Open in Web Editor NEWLicense: GNU General Public License v3.0
License: GNU General Public License v3.0
I've installed bitcoind, Electrum Personal Server (EPS), and Electrum on QubesOS using the information in these guides. When I run all of these, Electrum shows that it is 'Not connected' at the bottom left corner of the window. When I check the debug.log for EPS, it shows the following text:
user@host:~$ sudo tail -f /home/electrum-personal-server/.eps/debug.log
DEBUG:2020-09-22 23:13:36,775: <= {"jsonrpc": "2.0", "result": {"hex": "040000009a93abd98a0fa11edb7316b84109dcf5241b353354b652000000000000000000e6f742a66814fb94e58ca43f9af8bf4cab51809e793866fd1841e8328dba1c2e6691c55614a10718dc6f25b7", "height": 398984}, "id": 1}
DEBUG:2020-09-22 23:13:36,777: => {"jsonrpc": "2.0", "method": "blockchain.estimatefee", "id": 2, "params": [25]}
DEBUG:2020-09-22 23:13:36,786: <= {"jsonrpc": "2.0", "result": 0.0001, "id": 2}
DEBUG:2020-09-22 23:13:36,788: => {"jsonrpc": "2.0", "method": "blockchain.estimatefee", "id": 3, "params": [10]}
DEBUG:2020-09-22 23:13:36,833: <= {"jsonrpc": "2.0", "result": 0.0001, "id": 3}
DEBUG:2020-09-22 23:13:36,834: => {"jsonrpc": "2.0", "method": "blockchain.estimatefee", "id": 4, "params": [5]}
DEBUG:2020-09-22 23:13:36,881: <= {"jsonrpc": "2.0", "result": 0.0001, "id": 4}
DEBUG:2020-09-22 23:13:36,882: => {"jsonrpc": "2.0", "method": "blockchain.estimatefee", "id": 5, "params": [2]}
DEBUG:2020-09-22 23:13:36,887: <= {"jsonrpc": "2.0", "result": 0.0001, "id": 5}
DEBUG:2020-09-22 23:13:36,890: Electrum wallet disconnected
DEBUG:2020-09-22 23:13:47,383: Electrum connected from 127.0.0.1
DEBUG:2020-09-22 23:13:47,404: => {"jsonrpc": "2.0", "method": "server.version", "id": 0, "params": ["electrum/4.0.3", "1.4"]}
DEBUG:2020-09-22 23:13:47,406: <= {"jsonrpc": "2.0", "result": ["ElectrumPersonalServer 0.2.1.1", "1.4"], "id": 0}
DEBUG:2020-09-22 23:13:47,411: => {"jsonrpc": "2.0", "method": "blockchain.headers.subscribe", "id": 1}
DEBUG:2020-09-22 23:13:47,411: are_headers_raw = True
DEBUG:2020-09-22 23:13:47,502: <= {"jsonrpc": "2.0", "result": {"hex": "04000000e675a895401ea94bfd325bb6dd4f91208dadbc7b26745e0000000000000000009cd5f8267ea4315b543c23b9c878e450cce64678684358fe3c88bb5a007c1c9ae3bcc55614a10718a675c773", "height": 399007}, "id": 1}
DEBUG:2020-09-22 23:13:47,503: => {"jsonrpc": "2.0", "method": "blockchain.estimatefee", "id": 2, "params": [25]}
DEBUG:2020-09-22 23:13:47,543: <= {"jsonrpc": "2.0", "result": 0.0001, "id": 2}
DEBUG:2020-09-22 23:13:47,543: => {"jsonrpc": "2.0", "method": "blockchain.estimatefee", "id": 3, "params": [10]}
DEBUG:2020-09-22 23:13:47,546: <= {"jsonrpc": "2.0", "result": 0.0001, "id": 3}
DEBUG:2020-09-22 23:13:47,547: => {"jsonrpc": "2.0", "method": "blockchain.estimatefee", "id": 4, "params": [5]}
DEBUG:2020-09-22 23:13:47,549: <= {"jsonrpc": "2.0", "result": 0.0001, "id": 4}
DEBUG:2020-09-22 23:13:47,550: => {"jsonrpc": "2.0", "method": "blockchain.estimatefee", "id": 5, "params": [2]}
DEBUG:2020-09-22 23:13:47,591: <= {"jsonrpc": "2.0", "result": 0.0001, "id": 5}
DEBUG:2020-09-22 23:13:47,593: Electrum wallet disconnected
DEBUG:2020-09-22 23:13:57,601: Electrum connected from 127.0.0.1
DEBUG:2020-09-22 23:13:57,602: => {"jsonrpc": "2.0", "method": "server.version", "id": 0, "params": ["electrum/4.0.3", "1.4"]}
DEBUG:2020-09-22 23:13:57,603: <= {"jsonrpc": "2.0", "result": ["ElectrumPersonalServer 0.2.1.1", "1.4"], "id": 0}
DEBUG:2020-09-22 23:13:57,605: => {"jsonrpc": "2.0", "method": "blockchain.headers.subscribe", "id": 1}
DEBUG:2020-09-22 23:13:57,606: are_headers_raw = True
DEBUG:2020-09-22 23:13:57,652: <= {"jsonrpc": "2.0", "result": {"hex": "040000004c373db84ed0d8a0a953c397fb0ca810142272780b9b9500000000000000000088a9d1dfb611a427c1998bc9273e2cfd519db472a53dd9c3c13624c61bfc344eca05c65614a10718aacf26c4", "height": 399054}, "id": 1}
DEBUG:2020-09-22 23:13:57,654: => {"jsonrpc": "2.0", "method": "blockchain.estimatefee", "id": 2, "params": [25]}
DEBUG:2020-09-22 23:13:57,666: <= {"jsonrpc": "2.0", "result": 0.0001, "id": 2}
DEBUG:2020-09-22 23:13:57,667: => {"jsonrpc": "2.0", "method": "blockchain.estimatefee", "id": 3, "params": [10]}
DEBUG:2020-09-22 23:13:57,714: <= {"jsonrpc": "2.0", "result": 0.0001, "id": 3}
DEBUG:2020-09-22 23:13:57,714: => {"jsonrpc": "2.0", "method": "blockchain.estimatefee", "id": 4, "params": [5]}
DEBUG:2020-09-22 23:13:57,757: <= {"jsonrpc": "2.0", "result": 0.0001, "id": 4}
DEBUG:2020-09-22 23:13:57,757: => {"jsonrpc": "2.0", "method": "blockchain.estimatefee", "id": 5, "params": [2]}
DEBUG:2020-09-22 23:13:57,800: <= {"jsonrpc": "2.0", "result": 0.0001, "id": 5}
DEBUG:2020-09-22 23:13:57,801: Electrum wallet disconnected
DEBUG:2020-09-22 23:14:07,802: Electrum connected from 127.0.0.1
DEBUG:2020-09-22 23:14:07,804: => {"jsonrpc": "2.0", "method": "server.version", "id": 0, "params": ["electrum/4.0.3", "1.4"]}
DEBUG:2020-09-22 23:14:07,805: <= {"jsonrpc": "2.0", "result": ["ElectrumPersonalServer 0.2.1.1", "1.4"], "id": 0}
DEBUG:2020-09-22 23:14:07,807: => {"jsonrpc": "2.0", "method": "blockchain.headers.subscribe", "id": 1}
DEBUG:2020-09-22 23:14:07,808: are_headers_raw = True
DEBUG:2020-09-22 23:14:08,003: <= {"jsonrpc": "2.0", "result": {"hex": "04000000804fb47ac09719c8b375a04a9e34b547990b998e6de3f40000000000000000000db127a4ed9324eaca318df941a88dc21caf46dc6cd6994dc46f5034c79fd5882d5cc65614a10718b8fbd1c9", "height": 399088}, "id": 1}
DEBUG:2020-09-22 23:14:08,004: => {"jsonrpc": "2.0", "method": "blockchain.estimatefee", "id": 2, "params": [25]}
DEBUG:2020-09-22 23:14:08,008: <= {"jsonrpc": "2.0", "result": 0.0001, "id": 2}
DEBUG:2020-09-22 23:14:08,009: => {"jsonrpc": "2.0", "method": "blockchain.estimatefee", "id": 3, "params": [10]}
DEBUG:2020-09-22 23:14:08,012: <= {"jsonrpc": "2.0", "result": 0.0001, "id": 3}
DEBUG:2020-09-22 23:14:08,013: => {"jsonrpc": "2.0", "method": "blockchain.estimatefee", "id": 4, "params": [5]}
DEBUG:2020-09-22 23:14:08,018: <= {"jsonrpc": "2.0", "result": 0.0001, "id": 4}
DEBUG:2020-09-22 23:14:08,019: => {"jsonrpc": "2.0", "method": "blockchain.estimatefee", "id": 5, "params": [2]}
DEBUG:2020-09-22 23:14:08,022: <= {"jsonrpc": "2.0", "result": 0.0001, "id": 5}
DEBUG:2020-09-22 23:14:08,023: Electrum wallet disconnected
It looks as if Electrum cannot connect persistently to EPS (but I may be mistaken?)
For context, here's the '[bitcoin-rpc]' part of my EPS config.cfg:
[bitcoin-rpc]
host = 127.0.0.1
port = 8332
rpc_user = REDACTED
rpc_password = REDACTED
wallet_filename =
poll_interval_listening = 30
poll_interval_connected = 1
initial_import_count = 1000
gap_limit = 25
And here's my bitcoin.conf:
listen=1
onion=10.137.0.13:9111
onlynet=onion
proxy=10.137.0.13:9111
txindex=1
server=1
# Electrum Personal Server Auth
rpcauth=REDACTED
# Electrum Personal Server Wallet
wallet=electrum-personal-server
And here's my Electrum config:
{
"auto_connect": false,
"blockchain_preferred_block": {
"hash": "000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f",
"height": 0
},
"check_updates": false,
"config_version": 3,
"decimal_point": 8,
"gui_last_wallet": REDACTED,
"is_maximized": false,
"oneserver": true,
"qt_gui_color_theme": "dark",
"recently_open": REDACTED,
"rpcpassword": REDACTED,
"rpcuser": "user",
"server": "127.0.0.1:50002:s"
}
Can anyone help me with this? Thanks in advance!
@aakselrod Do you mind sharing a copy of the onion-grater
profile you mentioned here: lightningnetwork/lnd#2490 (comment)?
I don't expect replies because the repo has been inactive for 2 years, just a warning to people that read this.
This is an amazing guide, however there are some problems.
Currently it is:
Theoretically...
If the first clone was MITMed, the keys that you are importing could also been modified by the attacker and they could have already uploaded malicious keys to the keyserver, plus adding a signed commit to HEAD. The verify-commit would not fail, instead report a good signature, because the key you imported was fabricated by the attacker.
If you already have the repo, great, you can import the keys from the keyservers, if on the first clone, you did however import the keys from elsewhere. In fact, receiving keys from the fingerprints provided in contrib
only should be done for updates.
If it is your first clone, then keys should be imported from elsewhere. Really, another source.
Another problem that has been happening constanttly is keyservers blocking tor requests, even after using different circuits, it is rare the case it works these days.
Also importing from keyservers does not bring more trust then by means.
Unfortunately, this is the case.
Here is an example of receiving keys from keyservers but crossing them according to a level of trust you can set.
https://github.com/Kicksecure/gpg-bash-lib/tree/master/usr/share/doc/gpg-bash-lib/examples/get-bitcoin-keys
In the end, I've been thinking:
So maybe it is better for the keys to be verified (received, cross signatures, trusted) even from keyservers, then adding the public keys to this repo. You sign the commit that they are added. Therefore, the person has to first verify your commit. The public keys don't need to be received from the keyserver for every user, they just need to import form a local file.
If people are trusting you to put correct information, keys are inside that also.
This is already happening on Whonix.
gpg --import /usr/share/gpg-bash-lib/misc/bitcoind-pub-keys.d/*
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.