Never Ending Security

It starts all here

Bitcoin-qt I2P

Bitcoin-qt I2P

This project describes modifications of the standard bitcoin client ( to allow it to work through I2P-network without any third-party tools.

Installation on Linux (Ubuntu 12.04)

add ppa for i2p and bitcoin

sudo apt-add-repository ppa:i2p-maintainers/i2p
sudo apt-add-repository ppa:bitcoin/bitcoin


sudo apt-get update
sudo apt-get upgrade

install packages (java will be installed by dependencies)

sudo apt-get install i2p bitcoin-qt

edit  /etc/default/i2p with root privileges

 RUN_DAEMON="true"  <- set to true
  MEMORYLIMIT="xxx"  <- specify a value subject to your operative memory (256 or 512 shoud be enough)

Run i2p

sudo service i2p start

Installation on Windows

  • Download an i2p distribution kit from the official site:
  • You should also download Java from official site too
  • First install Java, then install I2P
  • go to Control Panel – Administrative tools – Services, find “I2P” and check it is running (if it isn’t running you should run it)

Running bitcoin :: i2p (both Windows and Linux)

  • after I2P is started you should wait a few minutes while i2p integrate in the network
  • in your browser open the page If the page is unavailable I2P is not running. If the page opens you should press “Start” button near “SAM application bridge” item and enable a checkbox in column “Run at Startup?” After that press “Save Client Configuration” button.
  • delete (or rename) file peers.dat, it’s located in C:\Documents and Settings\<YourUserName>\Application data\Bitcoin (for Win XP)  | C:\Users\<YourUserName>\Appdata\Roaming\Bitcoin (for Vista and 7) | ~/.bitcoin (for linux).
  • You must to do this because serialization format of network addresses is incompatible between the vanilla client and the patch. You need to do this procedure only once before the first start of the patched client. The patched client will make his own peers.dat with required format. Warning! If you leave this file at his place it cause a deadlock of the patched client.
  • Download the patched executable files or compile the executable files by yourself and run it  bitcoin-qt -onlynet=native_i2p

If you want to deal with i2p-net only you should specify option -onlynet=native_i2p as shown above. If you want to deal with both i2p and ip don’t specify this option at all, in this case your client will be a gate between i2p-segment of bitcoin-net and the rest net.

Changes in command line arguments

New command line options are added:

-i2psessionname=<session name> - name of an I2P session. If it is not specified, value will be "Bitcoin-client"
-samhost=<ip or host name> - address of the SAM bridge host. If it is not specified, value will be ""
-samport=<port> - port number of the SAM bridge host. If it is not specified, value will be "7656".
-mydestination=<pub+priv i2p-keys> - your full destination (public+private keys). If it is not specified, the client will geneterate a random destination for you. See below (Starting wallet with a permanent i2p-address) more details about this option.
-generatei2pdestination - if this option is specified, your client will start for generation i2p-destination only and will close after that.

2) New possible value for “-onlynet” option is added:


In all options required IP-addresses you can specify destination hash: <512 symbols>AAAA or b32-address: <52 symbols>.b32.i2p


  • The rest of the options (except of those described above) are not changed and they are working as they did before
  • Database-file peers.dat is not compatible in both way, neither from vanilla client to the patch, nor from the patch to vanilla client. This file must be deleted (or renamed) before using the patch and before going back to vanilla client. This file doesn’t contain any important data, so you don’t need to back up it.
  • The othe databases are compatible with vanilla client.
  • Full backward compatibility with the bitcoin-protocol! Patched client works fine with unpatched vanilla clients. Changes in the protocol appeared only if both clients are patched.

Starting wallet with a permanent I2P-address

By default if you don’t specify -mydestination parameter the patched wallet generates random i2p-destination. It can anonymize your work with bitcoin even more – especially if you use a new bitcoin-address for each transaction. But if you want to help the network [or you just like some i2p-address[ you will have to run wallet with permanent i2p-address. For that, you will have to specify a full destination in the “mydestination” optiont. Full destionation consists of base64 destionation (b32-address is not allowed here!) and your private tunnel key.


Or you may use your config-file (bitcoin.conf):

$ cat ~/.bitcoin/bitcoin.conf

The first 516 symbols (SVAxp……~vaZfIQP6AAAA) are the public key. This key is a base64 i2p-address (aka dest-hash). The rest of the symbols are private key. If you want to use some i2p-address you need to know its private key. If you publish you private i2p-key anyone can use your i2p-address. So keep secret your private key. This program does not send your private key, it uses your key only to open i2p-tunnel. A simplest way to generate your own I2P-address is by running the patched client with the option -generatei2pdestination. A generated address with a private key will be shown and you will can copy it to your config-file and publish it.

Building from the sources on Linux

Install all necessary libraries for bitcoin. No additional dependencies are needed. Go to a root directory of the project and run


Crosscompillation for Windows on Linux

Install mingw32

apt-get install mingw32

Download and unpack dependencies using script


Build dependencies by script


Build bitcoin with i2p-patch using


All builded binaries will be located at <directory with project>/release. I don’t have native windows build scripts, because I used crosscompilation as shown above.

This program is provided “as is” without any warranties. Get it here

Leave a Reply

Please log in using one of these methods to post your comment: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s