GithubHelp home page GithubHelp logo

qubes-whonix-bitcoin's People

Contributors

qubenix avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

qubes-whonix-bitcoin's Issues

Electrum not connecting to Electrum Personal Server

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!

incorrect bitcoind verification process

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.

https://github.com/qubenix/qubes-whonix-bitcoin/blob/master/0_bitcoind.md#b-download-and-verify-the-bitcoin-source-code

Current steps

Currently it is:

  • cloning bitcoin/bitcoin
  • getting the keys to receive from the fingerprints of the cloned repo
  • verify the HEAD commit is signed

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.

Proposed steps

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:

  • meeting in person is not happening at all
  • keyservers a blocking tor, difficult to automate without it, but does not guarantee trust

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.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.