EDIT: correction on line starting with "PATH"
EDIT: CORRECTION: Gateway is where --> Worskstation is where
Hi tonych,
Is there a way to run byteball client throw TOR (ex: a proxy settings, as bitcoin core has, to point network traffic locally to TOR)?
I understand that byteball encrypts communications with its network (does this include communications to your servers during link bitcoin process?) but any byteball node could save user's ip (see how bitcoin explorers, ex: blockchain.info, shows originating ip for each transaction even knowing bitcoin doesn't save ip on its blockchain) and also byteball could save it during the link bitcoin process (not saying that you will, or even that if you would that you'd share it, but we all know that restricting access to malicious parties is very, very hard).
Privacy and even anonymity is very important specially when money is involved because evil parties can do incredible harmful things with information like ip, amounts, address and etc. Byteball may become very valuable in the future and every cautionary measure is advisable from now on.
In order to test byteball with TOR I tried to run byteball inside whonix (it comes as two virtualbox debian linux guests with a scheme where all network communication goes only throw TOR without any special configuration) but unfortunately whonix is only available for debian 32 bits and byteball binaries for linux are only available on 64 bits (could you please think in offering it in 32 bits for linux too?).
I also tried to run byteball inside whonix by not using your 64 bit binaries and but instead getting sources from github and installing as per yours instructions there, but after fixing some problem and have it finally installed, it didn't run ok. But I think the problem were unrelated to TOR (I will try again the whole process and come back later with more details if needed. For now could you please tell which specific version of NW is advisable to this intent as I found instructions somewhat cryptic?).
Unfortunately I have little experience with TOR and can't help much here,
Ok. Unfortunately I'm too, apart from cursory knowledge as a user.
but it will be interesting if you update about your efforts to run Byteball through TOR.
See bellow.
All communications are end-to-end encrypted but the IPs are visible of course.
Note that during linking process you do not communicate with the Transition Bot directly, you communicate through a hub, so the bot doesn't see your IP while the hub sees the IP but doesn't see the communication as it is encrypted. Since I run both the bot and the only hub in the network, I can still match their data to determine your IP (which I'm not going to do). Asking you to run your own hub would be too much I'm afraid.
Maybe. Let's talk about that afterwords, with some documentation I could try.
I certainly don't have a dedicated box with proper throughput to contribute the network right now.
Yes, you can build for linux32 yourself with very little tweaking, I recommend NW.js version 0.14.7.
I tried again to run byteball on whonix installing from sources and it seams it worked. Kinda, it needs more tests.
I installed it. It started ok. I choose full node. It synchronized with the network until 100%.
What is left is to test to send and receive byteballs and blackbytes (see bellow).
I don't know if by perfectly synchronizing it has exercised all network protocols and corners to determine success.
@tonych, see bellow some problems and temporary fixes I've done.
Description for whoever is interested in how to run byteball throw TOR:
I know 3 ways to run software throw TOR
1) Installing TOR, starting TOR service and using application proxy configuration to point to a sock port where TOR is listening and letting it route traffic to its network.
It seams currently there isn't a way to do that.
2) Using an utility to create a wrapper around your binary which captures all network traffic forcing it throw TOR, in a process know as torrification. I've never done that and don't know if it could work.
3) By using whonix, which comes as two virtualbox guest debian 32bit + KDE (gateway and workstation) ready to run. Gateway which can only connect to the internet via TOR. Workstation which cannot connect to internet in any way and can only connect to the gateway. Workstation is where you run your unmodified software which can only go throw TOR.
I'm only describing the third option here.
- virtualbox host is linux
- virtualbox guest is whonix (32 bit debian + KDE)
- download and import both whonix appliances on virtualbox
- start gateway and workstation virtual machines
- on both gateway and workstation:
> sudo apt-get update && sudo apt-get dist-upgrade
- restart both gateway and workstation
- on workstation (those are build and runtime dependencies I've determined are needed):
> sudo apt-get install git build-essential libnss3 libexif12
- go to a base directory (/home/user/byteball/test-whonix in my case)
> cd /home/user/byteball/test-whonix
- get byteball source (we can't use byteball binaries which are 64 bits)
> git clone
https://github.com/byteball/byteball.git- download and uncompress node.js binaries for linux 32 bits (node-v5.11.1-linux-x86.tar.gz - this version is the corresponding version for NW.js used this time)
- directory /home/user/byteball/test-whonix/software/node-v5.11.1-linux-x86 (in my case) will be created
- download and uncompress NW.js binaries for linux 32 bits (nwjs-v0.14.7-linux-ia32.tar.gz)
- directory /home/user/byteball/test-whonix/software/nwjs-v0.14.7-linux-ia32 (in my case) will be created
- place this in your .bashrc or equivalent and reopen your terminal (this is to let you run previously installed node.js and NW.js everywhere)
PATH="/home/user/byteball/test-whonix/software/node-v5.11.1-linux-x86/bin:/home/user/byteball/test-whonix/software/nwjs-v0.14.7-linux-ia32:$PATH"
- go to byteball sources
> cd /home/user/byteball/test-whonix/byteball
> npm install -g bower
> npm install -g grunt-cli
> bower install
> npm install
> grunt
- to start byteball client do this: (but wait, because we have to fix 2 problems before running client; read bellow)
> nw .
At his point if you start the client and after agreeing with user terms, it will close with this message on console:
module.js:365
throw err;
^
Error: Cannot find module '/home/user/byteball/test-whonix/byteball/node_modules/sqlite3/lib/binding/node-webkit-v0.14.inux-ia32/node_sqlite3.node'
at Function.Module._resolveFilename (module.js:363:15)
at Function.Module._load (module.js:309:25)
at Module.require (module.js:391:17)
at require (internal/module.js:20:19)
at Object.
(/home/user/byteball/test-whonix/byteball/node_modules/sqlite3/lib/sqlite3.js:4:15)
at Module._compile (module.js:437:34)
at Object.Module._extensions..js (module.js:452:10)
at Module.load (module.js:381:32)
at Function.Module._load (module.js:338:12)
at Module.require (module.js:391:17)- now, this will start byteball client
I could see that there isn't any /home/user/byteball/test-whonix/byteball/node_modules/sqlite3/lib/binding/node-webkit-v0.14.7-linux-ia32
The directory there is named /home/user/byteball/test-whonix/byteball/node_modules/sqlite3/lib/binding/node-v47-linux-ia32
So, I renamed the directory there from node-v47-linux-ia32 to node-webkit-v0.14.7-linux-ia32
Maybe a bug here? a hardcoded name in the client?
Maybe a relevant information loged on terminal during "npm install" fase. It couldn't download sqlite3 and have to build.
...
make: Leaving directory '/mnt/mymnt/byteball/test-whonix/byteball/node_modules/secp256k1/build'
> [email protected] install /mnt/mymnt/byteball/test-whonix/byteball/node_modules/sqlite3
> node-pre-gyp install --fallback-to-build
node-pre-gyp ERR! Tried to download(403): https://mapbox-node-binary.s3.amazonaws.com/sqlite3/v3.1.8/node-v47-linux-ia32.tar.gz
node-pre-gyp ERR! Pre-built binaries not found for [email protected] and [email protected] (node-v47 ABI) (falling back to source compile with node-gyp)
make: Entering directory '/mnt/mymnt/byteball/test-whonix/byteball/node_modules/sqlite3/build'
...
Anyway, after that it stops crashing.
Now, after choosing light or full node the following message appears on client
Uncaught exception: Error: failed to write desktop file: Error: ENOENT: no such file or directory, open '/home/user/.local/share/applications/byteball-test.desktop'
and an OK button that when pressed close the client
I could determined that the '/home/user/.local/share/applications' directory were missing.
Then I created it manually and next time I start (nw .) the client it works and start synchronizing.
It took me 2 hours yesterday to sync to completion which seemed very good if as it seems we are going throw TOR, afaik.
Last week it took about 8 hours to fully synchronizing running your 64 bit binary on a 64 bit ubuntu virtualbox guest on the same host (so, clear internet).
I also noticed that % of syncing indicator would be struck for some time and only advance when I give focus to another window and click back on client window.
Today I start the client again and it caught up syncing as expected.
Now, I couldn't test sending and receiving test byteballs because I couldn't obtain any.
Using Tor Browser (firefox) I get the following messagem when I click on "After installing, click this link to receive free bytes to play with" link.
"The address wasn't understood"
The information on address bar was: byteball-test:@byteball.org/bb#0000
Then I installed chromium (sudo apt-get install chromium) to try that again and when I click the link nothing happens.
Note: the same happened last week using byteball binary.
I tried to create a bash script named byteball-test in byteball directory (which I inclueded in the PATH) that call the client but it didn't help.
I don't know if its relevant but the content of byteball-test.desktop created by the client is:
[Desktop Entry]
Type=Application
Version=1.0
Name=byteball-test
Comment=A wallet for decentralized value
Exec=/home/user/byteball/test-whonix/software/nwjs-v0.14.7-linux-ia32/nw %u
Icon=/home/user/byteball/test-whonix/software/nwjs-v0.14.7-linux-ia32/public/img/icons/icon-white-outline.iconset/icon_256x256.png
Terminal=false
Categories=Office;Finance;
MimeType=x-scheme-handler/byteball-test;
X-Ubuntu-Touch=true
X-Ubuntu-StageHint=SideStage
Thank you very much.
EDIT: correction on line starting with "PATH"
EDIT: CORRECTION: Gateway is where --> Worskstation is where