miguelfreitas
11 years ago
15 changed files with 42 additions and 915 deletions
@ -1,70 +0,0 @@ |
|||||||
Bitcoin 0.8.2 BETA |
|
||||||
==================== |
|
||||||
|
|
||||||
Copyright (c) 2009-2013 Bitcoin Developers |
|
||||||
|
|
||||||
Distributed under the [MIT/X11 software license](http://www.opensource.org/licenses/mit-license.php). |
|
||||||
This product includes software developed by the OpenSSL Project for use in the [OpenSSL Toolkit](http://www.openssl.org/). This product includes |
|
||||||
cryptographic software written by Eric Young ([eay@cryptsoft.com](mailto:eay@cryptsoft.com)), and UPnP software written by Thomas Bernard. |
|
||||||
|
|
||||||
|
|
||||||
Intro |
|
||||||
--------------------- |
|
||||||
Bitcoin is a free open source peer-to-peer electronic cash system that is |
|
||||||
completely decentralized, without the need for a central server or trusted |
|
||||||
parties. Users hold the crypto keys to their own money and transact directly |
|
||||||
with each other, with the help of a P2P network to check for double-spending. |
|
||||||
|
|
||||||
|
|
||||||
Setup |
|
||||||
--------------------- |
|
||||||
[Bitcoin-Qt](http://bitcoin.org/en/download) is the original Bitcoin client and it builds the backbone of the network. However, it downloads and stores the entire history of Bitcoin transactions; depending on the speed of your computer and network connection, the synchronization process can take anywhere from a few hours to a day or more. |
|
||||||
|
|
||||||
### Unix |
|
||||||
|
|
||||||
You need the Qt4 run-time libraries to run Bitcoin-Qt. On Debian or Ubuntu: |
|
||||||
|
|
||||||
sudo apt-get install libqtgui4 |
|
||||||
|
|
||||||
Unpack the files into a directory and run: |
|
||||||
|
|
||||||
- bin/32/bitcoin-qt (GUI, 32-bit) |
|
||||||
- bin/32/bitcoind (headless, 32-bit) |
|
||||||
- bin/64/bitcoin-qt (GUI, 64-bit) |
|
||||||
- bin/64/bitcoind (headless, 64-bit) |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Windows |
|
||||||
|
|
||||||
Unpack the files into a directory and run bitcoin-qt.exe. |
|
||||||
|
|
||||||
### Need Help? |
|
||||||
|
|
||||||
* See the documentation at the [Bitcoin Wiki](https://en.bitcoin.it/wiki/Main_Page) |
|
||||||
for help and more information. |
|
||||||
* Ask for help on [#bitcoin](http://webchat.freenode.net?channels=bitcoin) on Freenode. If you don't have an IRC client use [webchat here](http://webchat.freenode.net?channels=bitcoin). |
|
||||||
* Ask for help on the [BitcoinTalk](https://bitcointalk.org/) forums. |
|
||||||
|
|
||||||
Building |
|
||||||
--------------------- |
|
||||||
- [Bitcoin-Qt Readme](readme-qt.md) |
|
||||||
- [OSX Build Notes](build-osx.md) |
|
||||||
- [Unix Build Notes](build-unix.md) |
|
||||||
- [Windows Build Notes](build-msw.md) |
|
||||||
|
|
||||||
Development |
|
||||||
--------------------- |
|
||||||
- [Coding Guidelines](coding.md) |
|
||||||
- [Multiwallet Qt Development](multiwallet-qt.md) |
|
||||||
- [Release Notes](release-notes.md) |
|
||||||
- [Release Process](release-process.md) |
|
||||||
- [Source Code Documentation (External Link)](https://dev.visucore.com/bitcoin/doxygen/) |
|
||||||
- [Translation Process](translation_process.md) |
|
||||||
- [Unit Tests](unit-tests.md) |
|
||||||
|
|
||||||
Other Pages |
|
||||||
--------------------- |
|
||||||
- [Assets Attribution](assets-attribution.md) |
|
||||||
- [Files](files.md) |
|
||||||
- [Tor Support](tor.md) |
|
@ -1,30 +0,0 @@ |
|||||||
Bitcoin 0.8.2 BETA |
|
||||||
|
|
||||||
Copyright (c) 2009-2013 Bitcoin Developers |
|
||||||
Distributed under the MIT/X11 software license, see the accompanying |
|
||||||
file COPYING or http://www.opensource.org/licenses/mit-license.php. |
|
||||||
This product includes software developed by the OpenSSL Project for use in |
|
||||||
the OpenSSL Toolkit (http://www.openssl.org/). This product includes |
|
||||||
cryptographic software written by Eric Young (eay@cryptsoft.com). |
|
||||||
|
|
||||||
|
|
||||||
Intro |
|
||||||
----- |
|
||||||
Bitcoin is a free open source peer-to-peer electronic cash system that is |
|
||||||
completely decentralized, without the need for a central server or trusted |
|
||||||
parties. Users hold the crypto keys to their own money and transact directly |
|
||||||
with each other, with the help of a P2P network to check for double-spending. |
|
||||||
|
|
||||||
|
|
||||||
Setup |
|
||||||
----- |
|
||||||
Unpack the files into a directory and run bitcoin-qt.exe. |
|
||||||
|
|
||||||
Bitcoin-Qt is the original Bitcoin client and it builds the backbone of the network. |
|
||||||
However, it downloads and stores the entire history of Bitcoin transactions; |
|
||||||
depending on the speed of your computer and network connection, the synchronization |
|
||||||
process can take anywhere from a few hours to a day or more. |
|
||||||
|
|
||||||
See the bitcoin wiki at: |
|
||||||
https://en.bitcoin.it/wiki/Main_Page |
|
||||||
for more help and information. |
|
@ -1,92 +0,0 @@ |
|||||||
TOR SUPPORT IN BITCOIN |
|
||||||
====================== |
|
||||||
|
|
||||||
It is possible to run Bitcoin as a Tor hidden service, and connect to such services. |
|
||||||
|
|
||||||
The following directions assume you have a Tor proxy running on port 9050. Many distributions |
|
||||||
default to having a SOCKS proxy listening on port 9050, but others may not. |
|
||||||
In particular, the Tor Browser Bundle defaults to listening on a random port. See |
|
||||||
https://www.torproject.org/docs/faq.html.en#TBBSocksPort for how to properly |
|
||||||
configure Tor. |
|
||||||
|
|
||||||
|
|
||||||
1. Run bitcoin behind a Tor proxy |
|
||||||
--------------------------------- |
|
||||||
|
|
||||||
The first step is running Bitcoin behind a Tor proxy. This will already make all |
|
||||||
outgoing connections be anonimized, but more is possible. |
|
||||||
|
|
||||||
-socks=5 SOCKS5 supports connecting-to-hostname, which can be used instead |
|
||||||
of doing a (leaking) local DNS lookup. SOCKS5 is the default, |
|
||||||
but SOCKS4 does not support this. (SOCKS4a does, but isn't |
|
||||||
implemented). |
|
||||||
|
|
||||||
-proxy=ip:port Set the proxy server. If SOCKS5 is selected (default), this proxy |
|
||||||
server will be used to try to reach .onion addresses as well. |
|
||||||
|
|
||||||
-tor=ip:port Set the proxy server to use for tor hidden services. You do not |
|
||||||
need to set this if it's the same as -proxy. You can use -notor |
|
||||||
to explicitly disable access to hidden service. |
|
||||||
|
|
||||||
-listen When using -proxy, listening is disabled by default. If you want |
|
||||||
to run a hidden service (see next section), you'll need to enable |
|
||||||
it explicitly. |
|
||||||
|
|
||||||
-connect=X When behind a Tor proxy, you can specify .onion addresses instead |
|
||||||
-addnode=X of IP addresses or hostnames in these parameters. It requires |
|
||||||
-seednode=X SOCKS5. In Tor mode, such addresses can also be exchanged with |
|
||||||
other P2P nodes. |
|
||||||
|
|
||||||
In a typical situation, this suffices to run behind a Tor proxy: |
|
||||||
|
|
||||||
./bitcoin -proxy=127.0.0.1:9050 |
|
||||||
|
|
||||||
|
|
||||||
2. Run a bitcoin hidden server |
|
||||||
------------------------------ |
|
||||||
|
|
||||||
If you configure your Tor system accordingly, it is possible to make your node also |
|
||||||
reachable from the Tor network. Add these lines to your /etc/tor/torrc (or equivalent |
|
||||||
config file): |
|
||||||
|
|
||||||
HiddenServiceDir /var/lib/tor/bitcoin-service/ |
|
||||||
HiddenServicePort 8333 127.0.0.1:8333 |
|
||||||
|
|
||||||
The directory can be different of course, but (both) port numbers should be equal to |
|
||||||
your bitcoind's P2P listen port (8333 by default). |
|
||||||
|
|
||||||
-externalip=X You can tell bitcoin about its publicly reachable address using |
|
||||||
this option, and this can be a .onion address. Given the above |
|
||||||
configuration, you can find your onion address in |
|
||||||
/var/lib/tor/bitcoin-service/hostname. Onion addresses are given |
|
||||||
preference for your node to advertize itself with, for connections |
|
||||||
coming from unroutable addresses (such as 127.0.0.1, where the |
|
||||||
Tor proxy typically runs). |
|
||||||
|
|
||||||
-listen You'll need to enable listening for incoming connections, as this |
|
||||||
is off by default behind a proxy. |
|
||||||
|
|
||||||
-discover When -externalip is specified, no attempt is made to discover local |
|
||||||
IPv4 or IPv6 addresses. If you want to run a dual stack, reachable |
|
||||||
from both Tor and IPv4 (or IPv6), you'll need to either pass your |
|
||||||
other addresses using -externalip, or explicitly enable -discover. |
|
||||||
Note that both addresses of a dual-stack system may be easily |
|
||||||
linkable using traffic analysis. |
|
||||||
|
|
||||||
In a typical situation, where you're only reachable via Tor, this should suffice: |
|
||||||
|
|
||||||
./bitcoind -proxy=127.0.0.1:9050 -externalip=57qr3yd1nyntf5k.onion -listen |
|
||||||
|
|
||||||
(obviously, replace the Onion address with your own). If you don't care too much |
|
||||||
about hiding your node, and want to be reachable on IPv4 as well, additionally |
|
||||||
specify: |
|
||||||
|
|
||||||
./bitcoind ... -discover |
|
||||||
|
|
||||||
and open port 8333 on your firewall (or use -upnp). |
|
||||||
|
|
||||||
If you only want to use Tor to reach onion addresses, but not use it as a proxy |
|
||||||
for normal IPv4/IPv6 communication, use: |
|
||||||
|
|
||||||
./bitcoin -tor=127.0.0.1:9050 -externalip=57qr3yd1nyntf5k.onion -discover |
|
||||||
|
|
@ -1,104 +0,0 @@ |
|||||||
The following is a list of assets used in the bitcoin source and their proper attribution. |
|
||||||
|
|
||||||
[Wladimir van der Laan](https://github.com/laanwj) |
|
||||||
----------------------- |
|
||||||
#### Info |
|
||||||
* License: MIT |
|
||||||
### Assets Used |
|
||||||
|
|
||||||
src/qt/res/icons/clock*.png, src/qt/res/icons/tx*.png, |
|
||||||
src/qt/res/src/clock_green.svg, src/qt/res/src/clock1.svg, |
|
||||||
src/qt/res/src/clock2.svg, src/qt/res/src/clock3.svg, |
|
||||||
src/qt/res/src/clock4.svg, src/qt/res/src/clock5.svg, |
|
||||||
src/qt/res/src/inout.svg, src/qt/res/src/questionmark.svg |
|
||||||
|
|
||||||
[David Vignoni](www.icon-king.com) |
|
||||||
----------------------- |
|
||||||
|
|
||||||
### Info |
|
||||||
* Icon Pack: NUVOLA ICON THEME for KDE 3.x |
|
||||||
* Designer: David Vignoni (david@icon-king.com) |
|
||||||
* License: LGPL |
|
||||||
* Site: [http://www.icon-king.com/projects/nuvola/](http://www.icon-king.com/projects/nuvola/) |
|
||||||
|
|
||||||
### Assets Used |
|
||||||
src/qt/res/icons/address-book.png, src/qt/res/icons/export.png, |
|
||||||
src/qt/res/icons/history.png, src/qt/res/icons/key.png, |
|
||||||
src/qt/res/icons/lock_*.png, src/qt/res/icons/overview.png, |
|
||||||
src/qt/res/icons/receive.png, src/qt/res/icons/send.png, |
|
||||||
src/qt/res/icons/synced.png, src/qt/res/icons/filesave.png |
|
||||||
|
|
||||||
schollidesign |
|
||||||
----------------------- |
|
||||||
|
|
||||||
### Info |
|
||||||
* Icon Pack: Human-O2 |
|
||||||
* Designer: schollidesign |
|
||||||
* License: GNU/GPL |
|
||||||
* Site: [http://findicons.com/icon/93743/blocks_gnome_netstatus_0](http://findicons.com/icon/93743/blocks_gnome_netstatus_0) |
|
||||||
|
|
||||||
### Assets Used |
|
||||||
src/qt/res/icons/connect*.png |
|
||||||
|
|
||||||
md2k7 |
|
||||||
----------------------- |
|
||||||
|
|
||||||
### Info |
|
||||||
* Designer: md2k7 |
|
||||||
* Site: https://bitcointalk.org/index.php?topic=15276.0 |
|
||||||
* License: You are free to do with these icons as you wish, including selling, |
|
||||||
copying, modifying etc. |
|
||||||
* License: MIT |
|
||||||
|
|
||||||
### Assets Used |
|
||||||
src/qt/res/icons/transaction*.png |
|
||||||
|
|
||||||
[Everaldo.com](http://www.everaldo.com) |
|
||||||
----------------------- |
|
||||||
|
|
||||||
### Info |
|
||||||
* Designer: [http://www.everaldo.com](http://www.everaldo.com) |
|
||||||
* Icon Pack: Crystal SVG |
|
||||||
* License: LGPL |
|
||||||
|
|
||||||
### Assets Used |
|
||||||
src/qt/res/icons/configure.png, src/qt/res/icons/quit.png, |
|
||||||
src/qt/res/icons/editcopy.png, src/qt/res/icons/editpaste.png, |
|
||||||
src/qt/res/icons/add.png, src/qt/res/icons/edit.png, |
|
||||||
src/qt/res/icons/remove.png (edited) |
|
||||||
|
|
||||||
Everaldo (Everaldo Coelho) |
|
||||||
----------------------- |
|
||||||
|
|
||||||
### Info |
|
||||||
* Icon Pack: Kids |
|
||||||
* Designer: Everaldo (Everaldo Coelho) |
|
||||||
* License: GNU/GPL |
|
||||||
* Site: [http://findicons.com/icon/17102/reload?id=17102](http://findicons.com/icon/17102/reload?id=17102) |
|
||||||
### Assets Used |
|
||||||
scripts/img/reload.xcf (modified), src/qt/res/movies/update_spinner.mng |
|
||||||
|
|
||||||
[Vignoni David](http://www.oxygen-icons.org/) |
|
||||||
----------------------- |
|
||||||
|
|
||||||
### Info |
|
||||||
* Designer: Vignoni David |
|
||||||
* Site: http://www.oxygen-icons.org/ |
|
||||||
* License: Oxygen icon theme is dual licensed. You may copy it under the Creative Common Attribution-ShareAlike 3.0 License or the GNU Library General Public License. |
|
||||||
|
|
||||||
### Assets Used |
|
||||||
src/qt/res/icons/debugwindow.png |
|
||||||
|
|
||||||
Jonas Schnelli |
|
||||||
----------------------- |
|
||||||
|
|
||||||
### Info |
|
||||||
* Designer: Jonas Schnelli (based on the original bitcoin logo from Bitboy) |
|
||||||
* License: MIT |
|
||||||
|
|
||||||
### Assets Used |
|
||||||
src/qt/res/icons/bitcoin.icns, src/qt/res/src/bitcoin.svg, |
|
||||||
src/qt/res/src/bitcoin.ico, src/qt/res/src/bitcoin.png, |
|
||||||
src/qt/res/src/bitcoin_testnet.png, docs/bitcoin_logo_doxygen.png, |
|
||||||
src/qt/res/icons/toolbar.png, src/qt/res/icons/toolbar_testnet.png, |
|
||||||
src/qt/res/images/splash.png, src/qt/res/images/splash_testnet.png |
|
Before Width: | Height: | Size: 4.6 KiB |
@ -0,0 +1,42 @@ |
|||||||
|
Ubuntu / Debian building instructions |
||||||
|
==================================== |
||||||
|
|
||||||
|
### Install: |
||||||
|
|
||||||
|
1) sudo apt-get update |
||||||
|
|
||||||
|
2) sudo apt-get install build-essential libssl-dev libboost-all-dev libdb4.8-dev libdb++-dev libminiupnpc-dev git openssl |
||||||
|
|
||||||
|
3) git clone https://github.com/miguelfreitas/twister-core.git |
||||||
|
|
||||||
|
4) cd twister-core |
||||||
|
|
||||||
|
5) cd libtorrent |
||||||
|
|
||||||
|
6) ./bootstrap.sh |
||||||
|
|
||||||
|
7) ./configure --enable-logging --enable-debug --enable-dht |
||||||
|
|
||||||
|
8) make if you have multi-core CPU use -j N where n = cpu cores |
||||||
|
|
||||||
|
9) cd ../ |
||||||
|
|
||||||
|
10) cd src |
||||||
|
|
||||||
|
11) make -f makefile.unix |
||||||
|
|
||||||
|
### Configure & web gui: |
||||||
|
1) echo -e "rpcuser=user\nrpcpassword=pwd" > "/home/${USER}/.twister/twister.conf" |
||||||
|
|
||||||
|
2) chmod 600 "/home/${USER}/.twister/twister.conf" |
||||||
|
|
||||||
|
3) cd /home/${USER}/.twister/ |
||||||
|
|
||||||
|
4) git clone git@github.com:miguelfreitas/twister-html.git ./html |
||||||
|
|
||||||
|
### Start |
||||||
|
1) Go to src folder (on 10 step) |
||||||
|
|
||||||
|
2) ./twisterd -rpcuser=user -rpcpassword=pwd -rpcallowip=127.0.0.1 |
||||||
|
|
||||||
|
3) Open http://127.0.0.1:28332/home.html |
@ -1,23 +0,0 @@ |
|||||||
Used in 0.8.0 |
|
||||||
--------------------- |
|
||||||
* wallet.dat: personal wallet (BDB) with keys and transactions |
|
||||||
* peers.dat: peer IP address database (custom format); since 0.7.0 |
|
||||||
* blocks/blk000??.dat: block data (custom, 128 MiB per file); since 0.8.0 |
|
||||||
* blocks/rev000??.dat; block undo data (custom); since 0.8.0 (format changed since pre-0.8) |
|
||||||
* blocks/index/*; block index (LevelDB); since 0.8.0 |
|
||||||
* chainstate/*; block chain state database (LevelDB); since 0.8.0 |
|
||||||
* database/*: BDB database environment; only used for wallet since 0.8.0 |
|
||||||
|
|
||||||
Only used in pre-0.8.0 |
|
||||||
--------------------- |
|
||||||
* blktree/*; block chain index (LevelDB); since pre-0.8, replaced by blocks/index/* in 0.8.0 |
|
||||||
* coins/*; unspent transaction output database (LevelDB); since pre-0.8, replaced by chainstate/* in 0.8.0 |
|
||||||
|
|
||||||
Only used before 0.8.0 |
|
||||||
--------------------- |
|
||||||
* blkindex.dat: block chain index database (BDB); replaced by {chainstate/*,blocks/index/*,blocks/rev000??.dat} in 0.8.0 |
|
||||||
* blk000?.dat: block data (custom, 2 GiB per file); replaced by blocks/blk000??.dat in 0.8.0 |
|
||||||
|
|
||||||
Only used before 0.7.0 |
|
||||||
--------------------- |
|
||||||
* addr.dat: peer IP address database (BDB); replaced by peers.dat in 0.7.0 |
|
@ -1,19 +0,0 @@ |
|||||||
Used in 0.8.0: |
|
||||||
* wallet.dat: personal wallet (BDB) with keys and transactions |
|
||||||
* peers.dat: peer IP address database (custom format); since 0.7.0 |
|
||||||
* blocks/blk000??.dat: block data (custom, 128 MiB per file); since 0.8.0 |
|
||||||
* blocks/rev000??.dat; block undo data (custom); since 0.8.0 (format changed since pre-0.8) |
|
||||||
* blocks/index/*; block index (LevelDB); since 0.8.0 |
|
||||||
* chainstate/*; block chain state database (LevelDB); since 0.8.0 |
|
||||||
* database/*: BDB database environment; only used for wallet since 0.8.0 |
|
||||||
|
|
||||||
Only used in pre-0.8.0: |
|
||||||
* blktree/*; block chain index (LevelDB); since pre-0.8, replaced by blocks/index/* in 0.8.0 |
|
||||||
* coins/*; unspent transaction output database (LevelDB); since pre-0.8, replaced by chainstate/* in 0.8.0 |
|
||||||
|
|
||||||
Only used before 0.8.0: |
|
||||||
* blkindex.dat: block chain index database (BDB); replaced by {chainstate/*,blocks/index/*,blocks/rev000??.dat} in 0.8.0 |
|
||||||
* blk000?.dat: block data (custom, 2 GiB per file); replaced by blocks/blk000??.dat in 0.8.0 |
|
||||||
|
|
||||||
Only used before 0.7.0: |
|
||||||
* addr.dat: peer IP address database (BDB); replaced by peers.dat in 0.7.0 |
|
@ -1,52 +0,0 @@ |
|||||||
Multiwallet Qt Development and Integration Strategy |
|
||||||
=================================================== |
|
||||||
|
|
||||||
In order to support loading of multiple wallets in bitcoin-qt, a few changes in the UI architecture will be needed. |
|
||||||
Fortunately, only four of the files in the existing project are affected by this change. |
|
||||||
|
|
||||||
Three new classes have been implemented in three new .h/.cpp file pairs, with much of the functionality that was previously |
|
||||||
implemented in the BitcoinGUI class moved over to these new classes. |
|
||||||
|
|
||||||
The two existing files most affected, by far, are bitcoingui.h and bitcoingui.cpp, as the BitcoinGUI class will require |
|
||||||
some major retrofitting. |
|
||||||
|
|
||||||
Only requiring some minor changes is bitcoin.cpp. |
|
||||||
|
|
||||||
Finally, three new headers and source files will have to be added to bitcoin-qt.pro. |
|
||||||
|
|
||||||
Changes to class BitcoinGUI |
|
||||||
--------------------------- |
|
||||||
The principal change to the BitcoinGUI class concerns the QStackedWidget instance called centralWidget. |
|
||||||
This widget owns five page views: overviewPage, transactionsPage, addressBookPage, receiveCoinsPage, and sendCoinsPage. |
|
||||||
|
|
||||||
A new class called *WalletView* inheriting from QStackedWidget has been written to handle all renderings and updates of |
|
||||||
these page views. In addition to owning these five page views, a WalletView also has a pointer to a WalletModel instance. |
|
||||||
This allows the construction of multiple WalletView objects, each rendering a distinct wallet. |
|
||||||
|
|
||||||
A second class called *WalletStack*, also inheriting from QStackedWidget, has been written to handle switching focus between |
|
||||||
different loaded wallets. In its current implementation, as a QStackedWidget, only one wallet can be viewed at a time - |
|
||||||
but this can be changed later. |
|
||||||
|
|
||||||
A third class called *WalletFrame* inheriting from QFrame has been written as a container for embedding all wallet-related |
|
||||||
controls into BitcoinGUI. At present it just contains a WalletStack instance and does little more than passing on messages |
|
||||||
from BitcoinGUI to the WalletStack, which in turn passes them to the individual WalletViews. It is a WalletFrame instance |
|
||||||
that takes the place of what used to be centralWidget in BitcoinGUI. The purpose of this class is to allow future |
|
||||||
refinements of the wallet controls with minimal need for further modifications to BitcoinGUI, thus greatly simplifying |
|
||||||
merges while reducing the risk of breaking top-level stuff. |
|
||||||
|
|
||||||
Changes to bitcoin.cpp |
|
||||||
---------------------- |
|
||||||
bitcoin.cpp is the entry point into bitcoin-qt, and as such, will require some minor modifications to provide hooks for |
|
||||||
multiple wallet support. Most importantly will be the way it instantiates WalletModels and passes them to the |
|
||||||
singleton BitcoinGUI instance called window. Formerly, BitcoinGUI kept a pointer to a single instance of a WalletModel. |
|
||||||
The initial change required is very simple: rather than calling `window.setWalletModel(&walletModel);` we perform the |
|
||||||
following two steps: |
|
||||||
|
|
||||||
window.addWallet("~Default", &walletModel); |
|
||||||
window.setCurrentWallet("~Default"); |
|
||||||
|
|
||||||
The string parameter is just an arbitrary name given to the default wallet. It's been prepended with a tilde to avoid name collisions in the future with additional wallets. |
|
||||||
|
|
||||||
The shutdown call `window.setWalletModel(0)` has also been removed. In its place is now: |
|
||||||
|
|
||||||
window.removeAllWallets(); |
|
@ -1,128 +0,0 @@ |
|||||||
Bitcoin-Qt Readme |
|
||||||
=============================== |
|
||||||
Contains build and configuration instructions for Bitcoin-Qt (Qt4 GUI for Bitcoin). |
|
||||||
|
|
||||||
Build Instructions |
|
||||||
--------------------- |
|
||||||
|
|
||||||
### Debian |
|
||||||
|
|
||||||
|
|
||||||
First, make sure that the required packages for Qt4 development of your |
|
||||||
distribution are installed, these are |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
for Debian and Ubuntu <= 11.10 : |
|
||||||
|
|
||||||
|
|
||||||
apt-get install qt4-qmake libqt4-dev build-essential libboost-dev libboost-system-dev \ |
|
||||||
libboost-filesystem-dev libboost-program-options-dev libboost-thread-dev \ |
|
||||||
libssl-dev libdb4.8++-dev |
|
||||||
|
|
||||||
for Ubuntu >= 12.04 (please read the 'Berkely DB version warning' below): |
|
||||||
|
|
||||||
apt-get install qt4-qmake libqt4-dev build-essential libboost-dev libboost-system-dev \ |
|
||||||
libboost-filesystem-dev libboost-program-options-dev libboost-thread-dev \ |
|
||||||
libssl-dev libdb++-dev libminiupnpc-dev |
|
||||||
|
|
||||||
For Qt 5 you need the following, otherwise you get an error with lrelease when running qmake: |
|
||||||
|
|
||||||
|
|
||||||
apt-get install qt5-qmake libqt5gui5 libqt5core5 libqt5dbus5 qttools5-dev-tools |
|
||||||
|
|
||||||
then execute the following: |
|
||||||
|
|
||||||
qmake |
|
||||||
make |
|
||||||
|
|
||||||
Alternatively, install [Qt Creator](http://qt-project.org/downloads/) and open the `bitcoin-qt.pro` file. |
|
||||||
An executable named `bitcoin-qt` will be built. |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Mac OS X |
|
||||||
|
|
||||||
* Download and install the [Qt Mac OS X SDK](https://qt-project.org/downloads). It is recommended to also install Apple's Xcode with UNIX tools. |
|
||||||
* Download and install either [MacPorts](https://www.macports.org/) or [HomeBrew](http://mxcl.github.io/homebrew/). |
|
||||||
* Execute the following commands in a terminal to get the dependencies using MacPorts |
|
||||||
|
|
||||||
sudo port selfupdate |
|
||||||
sudo port install boost db48 miniupnpc |
|
||||||
|
|
||||||
* Execute the following commands in a terminal to get the dependencies using HomeBrew: |
|
||||||
|
|
||||||
brew update |
|
||||||
brew install boost miniupnpc openssl berkeley-db4 |
|
||||||
|
|
||||||
- If using HomeBrew, edit `bitcoin-qt.pro` to account for library location differences. There's a diff in `contrib/homebrew/bitcoin-qt-pro.patch` that shows what you need to change, or you can just patch by doing |
|
||||||
|
|
||||||
patch -p1 < contrib/homebrew/bitcoin.qt.pro.patch |
|
||||||
|
|
||||||
- Open the bitcoin-qt.pro file in Qt Creator and build as normal (cmd+B) |
|
||||||
|
|
||||||
|
|
||||||
Build Configuration Options |
|
||||||
--------------------- |
|
||||||
|
|
||||||
### UPnP port forwarding |
|
||||||
|
|
||||||
To use UPnP for port forwarding behind a NAT router (recommended, as more connections overall allow for a faster and more stable bitcoin experience), pass the following argument to qmake: |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
qmake "USE_UPNP=1" |
|
||||||
|
|
||||||
(in **Qt Creator**, you can find the setting for additional qmake arguments under "Projects" -> "Build Settings" -> "Build Steps", then click "Details" next to **qmake**) |
|
||||||
|
|
||||||
This requires miniupnpc for UPnP port mapping. It can be downloaded from [here]( |
|
||||||
http://miniupnp.tuxfamily.org/files/). UPnP support is not compiled in by default. |
|
||||||
|
|
||||||
Set USE_UPNP to a different value to control this: |
|
||||||
|
|
||||||
|
|
||||||
USE_UPNP=- no UPnP support, miniupnpc not required; |
|
||||||
USE_UPNP=0 (the default) built with UPnP, support turned off by default at runtime; |
|
||||||
USE_UPNP=1 build with UPnP support turned on by default at runtime. |
|
||||||
|
|
||||||
### Notification support for recent (k)ubuntu versions |
|
||||||
|
|
||||||
To see desktop notifications on (k)ubuntu versions starting from 10.04, enable usage of the |
|
||||||
FreeDesktop notification interface through DBUS using the following qmake option: |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
qmake "USE_DBUS=1" |
|
||||||
|
|
||||||
### Generation of QR codes |
|
||||||
|
|
||||||
[libqrencode](http://fukuchi.org/works/qrencode/) may be used to generate QRCode images for payment requests. Pass the USE_QRCODE flag to qmake to control this: |
|
||||||
|
|
||||||
|
|
||||||
USE_QRCODE=0 (the default) No QRCode support - libarcode not required |
|
||||||
USE_QRCODE=1 QRCode support enabled |
|
||||||
|
|
||||||
Warnings |
|
||||||
--------------------- |
|
||||||
|
|
||||||
### Berkely DB Version Warning |
|
||||||
|
|
||||||
|
|
||||||
A warning for people using the *static binary* version of Bitcoin on a Linux/UNIX-ish system (tl;dr: **Berkely DB databases are not forward compatible**). |
|
||||||
|
|
||||||
The static binary version of Bitcoin is linked against libdb4.8 (see also [this Debian issue](http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=621425)). |
|
||||||
|
|
||||||
Now the nasty thing is that databases from 5.X are not compatible with 4.X. |
|
||||||
|
|
||||||
If the globally installed development package of Berkely DB installed on your system is 5.X, any source you build yourself will be linked against that. The first time you run with a 5.X version the database will be upgraded, and 4.X cannot open the new format. This means that you cannot go back to the old statically linked version without significant hassle! |
|
||||||
|
|
||||||
### Ubuntu 11.10 Warning |
|
||||||
|
|
||||||
|
|
||||||
Ubuntu 11.10 has a package called 'qt-at-spi' installed by default. At the time of writing, having that package installed causes bitcoin-qt to crash intermittently. The issue has been reported as [launchpad bug 857790](https://bugs.launchpad.net/ubuntu/+source/qt-at-spi/+bug/857790), but |
|
||||||
isn't yet fixed. |
|
||||||
|
|
||||||
Until the bug is fixed, you can remove the qt-at-spi package to work around the problem, though this will presumably disable screen reader functionality for Qt apps: |
|
||||||
|
|
||||||
sudo apt-get remove qt-at-spi |
|
||||||
|
|
@ -1,3 +0,0 @@ |
|||||||
(note: this is a temporary file, to be added-to by anybody, and deleted at |
|
||||||
release time) |
|
||||||
|
|
@ -1,165 +0,0 @@ |
|||||||
Release Process |
|
||||||
==================== |
|
||||||
|
|
||||||
* update translations (ping wumpus, Diapolo or tcatm on IRC) |
|
||||||
* see https://github.com/bitcoin/bitcoin/blob/master/doc/translation_process.md#syncing-with-transifex |
|
||||||
|
|
||||||
* * * |
|
||||||
|
|
||||||
###update (commit) version in sources |
|
||||||
|
|
||||||
|
|
||||||
bitcoin-qt.pro |
|
||||||
contrib/verifysfbinaries/verify.sh |
|
||||||
doc/README* |
|
||||||
share/setup.nsi |
|
||||||
src/clientversion.h (change CLIENT_VERSION_IS_RELEASE to true) |
|
||||||
|
|
||||||
###tag version in git |
|
||||||
|
|
||||||
git tag -a v(new version, e.g. 0.8.0) |
|
||||||
|
|
||||||
###write release notes. git shortlog helps a lot, for example: |
|
||||||
|
|
||||||
git shortlog --no-merges v(current version, e.g. 0.7.2)..v(new version, e.g. 0.8.0) |
|
||||||
|
|
||||||
* * * |
|
||||||
|
|
||||||
##perform gitian builds |
|
||||||
|
|
||||||
From a directory containing the bitcoin source, gitian-builder and gitian.sigs |
|
||||||
|
|
||||||
export SIGNER=(your gitian key, ie bluematt, sipa, etc) |
|
||||||
export VERSION=(new version, e.g. 0.8.0) |
|
||||||
pushd ./gitian-builder |
|
||||||
|
|
||||||
Fetch and build inputs: (first time, or when dependency versions change) |
|
||||||
|
|
||||||
mkdir -p inputs; cd inputs/ |
|
||||||
wget 'http://miniupnp.free.fr/files/download.php?file=miniupnpc-1.6.tar.gz' -O miniupnpc-1.6.tar.gz |
|
||||||
wget 'http://www.openssl.org/source/openssl-1.0.1c.tar.gz' |
|
||||||
wget 'http://download.oracle.com/berkeley-db/db-4.8.30.NC.tar.gz' |
|
||||||
wget 'http://zlib.net/zlib-1.2.6.tar.gz' |
|
||||||
wget 'ftp://ftp.simplesystems.org/pub/libpng/png/src/libpng-1.5.9.tar.gz' |
|
||||||
wget 'http://fukuchi.org/works/qrencode/qrencode-3.2.0.tar.bz2' |
|
||||||
wget 'http://downloads.sourceforge.net/project/boost/boost/1.50.0/boost_1_50_0.tar.bz2' |
|
||||||
wget 'http://releases.qt-project.org/qt4/source/qt-everywhere-opensource-src-4.8.3.tar.gz' |
|
||||||
cd .. |
|
||||||
./bin/gbuild ../bitcoin/contrib/gitian-descriptors/boost-win32.yml |
|
||||||
mv build/out/boost-win32-1.50.0-gitian2.zip inputs/ |
|
||||||
./bin/gbuild ../bitcoin/contrib/gitian-descriptors/qt-win32.yml |
|
||||||
mv build/out/qt-win32-4.8.3-gitian-r1.zip inputs/ |
|
||||||
./bin/gbuild ../bitcoin/contrib/gitian-descriptors/deps-win32.yml |
|
||||||
mv build/out/bitcoin-deps-0.0.5.zip inputs/ |
|
||||||
|
|
||||||
Build bitcoind and bitcoin-qt on Linux32, Linux64, and Win32: |
|
||||||
|
|
||||||
./bin/gbuild --commit bitcoin=v${VERSION} ../bitcoin/contrib/gitian-descriptors/gitian.yml |
|
||||||
./bin/gsign --signer $SIGNER --release ${VERSION} --destination ../gitian.sigs/ ../bitcoin/contrib/gitian-descriptors/gitian.yml |
|
||||||
pushd build/out |
|
||||||
zip -r bitcoin-${VERSION}-linux-gitian.zip * |
|
||||||
mv bitcoin-${VERSION}-linux-gitian.zip ../../../ |
|
||||||
popd |
|
||||||
./bin/gbuild --commit bitcoin=v${VERSION} ../bitcoin/contrib/gitian-descriptors/gitian-win32.yml |
|
||||||
./bin/gsign --signer $SIGNER --release ${VERSION}-win32 --destination ../gitian.sigs/ ../bitcoin/contrib/gitian-descriptors/gitian-win32.yml |
|
||||||
pushd build/out |
|
||||||
zip -r bitcoin-${VERSION}-win32-gitian.zip * |
|
||||||
mv bitcoin-${VERSION}-win32-gitian.zip ../../../ |
|
||||||
popd |
|
||||||
popd |
|
||||||
|
|
||||||
Build output expected: |
|
||||||
|
|
||||||
1. linux 32-bit and 64-bit binaries + source (bitcoin-${VERSION}-linux-gitian.zip) |
|
||||||
2. windows 32-bit binary, installer + source (bitcoin-${VERSION}-win32-gitian.zip) |
|
||||||
3. Gitian signatures (in gitian.sigs/${VERSION}[-win32]/(your gitian key)/ |
|
||||||
|
|
||||||
repackage gitian builds for release as stand-alone zip/tar/installer exe |
|
||||||
|
|
||||||
**Linux .tar.gz:** |
|
||||||
|
|
||||||
unzip bitcoin-${VERSION}-linux-gitian.zip -d bitcoin-${VERSION}-linux |
|
||||||
tar czvf bitcoin-${VERSION}-linux.tar.gz bitcoin-${VERSION}-linux |
|
||||||
rm -rf bitcoin-${VERSION}-linux |
|
||||||
|
|
||||||
**Windows .zip and setup.exe:** |
|
||||||
|
|
||||||
unzip bitcoin-${VERSION}-win32-gitian.zip -d bitcoin-${VERSION}-win32 |
|
||||||
mv bitcoin-${VERSION}-win32/bitcoin-*-setup.exe . |
|
||||||
zip -r bitcoin-${VERSION}-win32.zip bitcoin-${VERSION}-win32 |
|
||||||
rm -rf bitcoin-${VERSION}-win32 |
|
||||||
|
|
||||||
**Perform Mac build:** |
|
||||||
|
|
||||||
OSX binaries are created by Gavin Andresen on a 32-bit, OSX 10.6 machine. |
|
||||||
|
|
||||||
qmake RELEASE=1 USE_UPNP=1 USE_QRCODE=1 bitcoin-qt.pro |
|
||||||
make |
|
||||||
export QTDIR=/opt/local/share/qt4 # needed to find translations/qt_*.qm files |
|
||||||
T=$(contrib/qt_translations.py $QTDIR/translations src/qt/locale) |
|
||||||
python2.7 share/qt/clean_mac_info_plist.py |
|
||||||
python2.7 contrib/macdeploy/macdeployqtplus Bitcoin-Qt.app -add-qt-tr $T -dmg -fancy contrib/macdeploy/fancy.plist |
|
||||||
|
|
||||||
Build output expected: Bitcoin-Qt.dmg |
|
||||||
|
|
||||||
###Next steps: |
|
||||||
|
|
||||||
* Code-sign Windows -setup.exe (in a Windows virtual machine) and |
|
||||||
OSX Bitcoin-Qt.app (Note: only Gavin has the code-signing keys currently) |
|
||||||
|
|
||||||
* upload builds to SourceForge |
|
||||||
|
|
||||||
* create SHA256SUMS for builds, and PGP-sign it |
|
||||||
|
|
||||||
* update bitcoin.org version |
|
||||||
make sure all OS download links go to the right versions |
|
||||||
|
|
||||||
* update forum version |
|
||||||
|
|
||||||
* update wiki download links |
|
||||||
|
|
||||||
* update wiki changelog: [https://en.bitcoin.it/wiki/Changelog](https://en.bitcoin.it/wiki/Changelog) |
|
||||||
|
|
||||||
Commit your signature to gitian.sigs: |
|
||||||
|
|
||||||
pushd gitian.sigs |
|
||||||
git add ${VERSION}/${SIGNER} |
|
||||||
git add ${VERSION}-win32/${SIGNER} |
|
||||||
git commit -a |
|
||||||
git push # Assuming you can push to the gitian.sigs tree |
|
||||||
popd |
|
||||||
|
|
||||||
------------------------------------------------------------------------- |
|
||||||
|
|
||||||
### After 3 or more people have gitian-built, repackage gitian-signed zips: |
|
||||||
|
|
||||||
From a directory containing bitcoin source, gitian.sigs and gitian zips |
|
||||||
|
|
||||||
export VERSION=(new version, e.g. 0.8.0) |
|
||||||
mkdir bitcoin-${VERSION}-linux-gitian |
|
||||||
pushd bitcoin-${VERSION}-linux-gitian |
|
||||||
unzip ../bitcoin-${VERSION}-linux-gitian.zip |
|
||||||
mkdir gitian |
|
||||||
cp ../bitcoin/contrib/gitian-downloader/*.pgp ./gitian/ |
|
||||||
for signer in $(ls ../gitian.sigs/${VERSION}/); do |
|
||||||
cp ../gitian.sigs/${VERSION}/${signer}/bitcoin-build.assert ./gitian/${signer}-build.assert |
|
||||||
cp ../gitian.sigs/${VERSION}/${signer}/bitcoin-build.assert.sig ./gitian/${signer}-build.assert.sig |
|
||||||
done |
|
||||||
zip -r bitcoin-${VERSION}-linux-gitian.zip * |
|
||||||
cp bitcoin-${VERSION}-linux-gitian.zip ../ |
|
||||||
popd |
|
||||||
mkdir bitcoin-${VERSION}-win32-gitian |
|
||||||
pushd bitcoin-${VERSION}-win32-gitian |
|
||||||
unzip ../bitcoin-${VERSION}-win32-gitian.zip |
|
||||||
mkdir gitian |
|
||||||
cp ../bitcoin/contrib/gitian-downloader/*.pgp ./gitian/ |
|
||||||
for signer in $(ls ../gitian.sigs/${VERSION}-win32/); do |
|
||||||
cp ../gitian.sigs/${VERSION}-win32/${signer}/bitcoin-build.assert ./gitian/${signer}-build.assert |
|
||||||
cp ../gitian.sigs/${VERSION}-win32/${signer}/bitcoin-build.assert.sig ./gitian/${signer}-build.assert.sig |
|
||||||
done |
|
||||||
zip -r bitcoin-${VERSION}-win32-gitian.zip * |
|
||||||
cp bitcoin-${VERSION}-win32-gitian.zip ../ |
|
||||||
popd |
|
||||||
|
|
||||||
- Upload gitian zips to SourceForge |
|
||||||
- Celebrate |
|
@ -1,89 +0,0 @@ |
|||||||
TOR SUPPORT IN BITCOIN |
|
||||||
====================== |
|
||||||
|
|
||||||
It is possible to run Bitcoin as a Tor hidden service, and connect to such services. |
|
||||||
|
|
||||||
The following directions assume you have a Tor proxy running on port 9050. Many distributions default to having a SOCKS proxy listening on port 9050, but others may not. In particular, the Tor Browser Bundle defaults to listening on a random port. See [Tor Project FAQ:TBBSocksPort](https://www.torproject.org/docs/faq.html.en#TBBSocksPort) for how to properly |
|
||||||
configure Tor. |
|
||||||
|
|
||||||
|
|
||||||
1. Run bitcoin behind a Tor proxy |
|
||||||
--------------------------------- |
|
||||||
|
|
||||||
The first step is running Bitcoin behind a Tor proxy. This will already make all |
|
||||||
outgoing connections be anonimized, but more is possible. |
|
||||||
|
|
||||||
-socks=5 SOCKS5 supports connecting-to-hostname, which can be used instead |
|
||||||
of doing a (leaking) local DNS lookup. SOCKS5 is the default, |
|
||||||
but SOCKS4 does not support this. (SOCKS4a does, but isn't |
|
||||||
implemented). |
|
||||||
|
|
||||||
-proxy=ip:port Set the proxy server. If SOCKS5 is selected (default), this proxy |
|
||||||
server will be used to try to reach .onion addresses as well. |
|
||||||
|
|
||||||
-tor=ip:port Set the proxy server to use for tor hidden services. You do not |
|
||||||
need to set this if it's the same as -proxy. You can use -notor |
|
||||||
to explicitly disable access to hidden service. |
|
||||||
|
|
||||||
-listen When using -proxy, listening is disabled by default. If you want |
|
||||||
to run a hidden service (see next section), you'll need to enable |
|
||||||
it explicitly. |
|
||||||
|
|
||||||
-connect=X When behind a Tor proxy, you can specify .onion addresses instead |
|
||||||
-addnode=X of IP addresses or hostnames in these parameters. It requires |
|
||||||
-seednode=X SOCKS5. In Tor mode, such addresses can also be exchanged with |
|
||||||
other P2P nodes. |
|
||||||
|
|
||||||
In a typical situation, this suffices to run behind a Tor proxy: |
|
||||||
|
|
||||||
./bitcoin -proxy=127.0.0.1:9050 |
|
||||||
|
|
||||||
|
|
||||||
2. Run a bitcoin hidden server |
|
||||||
------------------------------ |
|
||||||
|
|
||||||
If you configure your Tor system accordingly, it is possible to make your node also |
|
||||||
reachable from the Tor network. Add these lines to your /etc/tor/torrc (or equivalent |
|
||||||
config file): |
|
||||||
|
|
||||||
HiddenServiceDir /var/lib/tor/bitcoin-service/ |
|
||||||
HiddenServicePort 8333 127.0.0.1:8333 |
|
||||||
|
|
||||||
The directory can be different of course, but (both) port numbers should be equal to |
|
||||||
your bitcoind's P2P listen port (8333 by default). |
|
||||||
|
|
||||||
-externalip=X You can tell bitcoin about its publicly reachable address using |
|
||||||
this option, and this can be a .onion address. Given the above |
|
||||||
configuration, you can find your onion address in |
|
||||||
/var/lib/tor/bitcoin-service/hostname. Onion addresses are given |
|
||||||
preference for your node to advertize itself with, for connections |
|
||||||
coming from unroutable addresses (such as 127.0.0.1, where the |
|
||||||
Tor proxy typically runs). |
|
||||||
|
|
||||||
-listen You'll need to enable listening for incoming connections, as this |
|
||||||
is off by default behind a proxy. |
|
||||||
|
|
||||||
-discover When -externalip is specified, no attempt is made to discover local |
|
||||||
IPv4 or IPv6 addresses. If you want to run a dual stack, reachable |
|
||||||
from both Tor and IPv4 (or IPv6), you'll need to either pass your |
|
||||||
other addresses using -externalip, or explicitly enable -discover. |
|
||||||
Note that both addresses of a dual-stack system may be easily |
|
||||||
linkable using traffic analysis. |
|
||||||
|
|
||||||
In a typical situation, where you're only reachable via Tor, this should suffice: |
|
||||||
|
|
||||||
./bitcoind -proxy=127.0.0.1:9050 -externalip=57qr3yd1nyntf5k.onion -listen |
|
||||||
|
|
||||||
(obviously, replace the Onion address with your own). If you don't care too much |
|
||||||
about hiding your node, and want to be reachable on IPv4 as well, additionally |
|
||||||
specify: |
|
||||||
|
|
||||||
./bitcoind ... -discover |
|
||||||
|
|
||||||
and open port 8333 on your firewall (or use -upnp). |
|
||||||
|
|
||||||
If you only want to use Tor to reach onion addresses, but not use it as a proxy |
|
||||||
for normal IPv4/IPv6 communication, use: |
|
||||||
|
|
||||||
./bitcoin -tor=127.0.0.1:9050 -externalip=57qr3yd1nyntf5k.onion -discover |
|
||||||
|
|
@ -1,105 +0,0 @@ |
|||||||
Translations |
|
||||||
============ |
|
||||||
|
|
||||||
The Qt GUI can be easily translated into other languages. Here's how we |
|
||||||
handle those translations. |
|
||||||
|
|
||||||
Files and Folders |
|
||||||
----------------- |
|
||||||
|
|
||||||
### bitcoin-qt.pro |
|
||||||
|
|
||||||
This file takes care of generating `.qm` files from `.ts` files. It is mostly |
|
||||||
automated. |
|
||||||
|
|
||||||
### src/qt/bitcoin.qrc |
|
||||||
|
|
||||||
This file must be updated whenever a new translation is added. Please note that |
|
||||||
files must end with `.qm`, not `.ts`. |
|
||||||
|
|
||||||
<qresource prefix="/translations"> |
|
||||||
<file alias="en">locale/bitcoin_en.qm</file> |
|
||||||
... |
|
||||||
</qresource> |
|
||||||
|
|
||||||
### src/qt/locale/ |
|
||||||
|
|
||||||
This directory contains all translations. Filenames must adhere to this format: |
|
||||||
|
|
||||||
bitcoin_xx_YY.ts or bitcoin_xx.ts |
|
||||||
|
|
||||||
#### bitcoin_en.ts (Source file) |
|
||||||
|
|
||||||
`src/qt/locale/bitcoin_en.ts` is treated in a special way. It is used as the |
|
||||||
source for all other translations. Whenever a string in the code is changed |
|
||||||
this file must be updated to reflect those changes. This can be accomplished |
|
||||||
by running `lupdate` (included in the Qt SDK). Also, a custom script is used |
|
||||||
to extract strings from the non-Qt parts. This script makes use of `gettext`, |
|
||||||
so make sure that utility is installed (ie, `apt-get install gettext` on |
|
||||||
Ubuntu/Debian): |
|
||||||
|
|
||||||
python share/qt/extract_strings_qt.py |
|
||||||
lupdate bitcoin-qt.pro -no-obsolete -locations relative -ts src/qt/locale/bitcoin_en.ts |
|
||||||
|
|
||||||
##### Handling of plurals in the source file |
|
||||||
|
|
||||||
When new plurals are added to the source file, it's important to do the following steps: |
|
||||||
|
|
||||||
1. Open bitcoin_en.ts in Qt Linguist (also included in the Qt SDK) |
|
||||||
2. Search for `%n`, which will take you to the parts in the translation that use plurals |
|
||||||
3. Look for empty `English Translation (Singular)` and `English Translation (Plural)` fields |
|
||||||
4. Add the appropriate strings for the singular and plural form of the base string |
|
||||||
5. Mark the item as done (via the green arrow symbol in the toolbar) |
|
||||||
6. Repeat from step 2. until all singular and plural forms are in the source file |
|
||||||
7. Save the source file |
|
||||||
|
|
||||||
##### Creating the pull-request |
|
||||||
|
|
||||||
An updated source file should be merged to github and Transifex will pick it |
|
||||||
up from there (can take some hours). Afterwards the new strings show up as "Remaining" |
|
||||||
in Transifex and can be translated. |
|
||||||
|
|
||||||
To create the pull-request you have to do: |
|
||||||
|
|
||||||
git add src/qt/bitcoinstrings.cpp src/qt/locale/bitcoin_en.ts |
|
||||||
git commit |
|
||||||
|
|
||||||
Syncing with Transifex |
|
||||||
---------------------- |
|
||||||
|
|
||||||
We are using https://transifex.com as a frontend for translating the client. |
|
||||||
|
|
||||||
https://www.transifex.com/projects/p/bitcoin/resource/tx/ |
|
||||||
|
|
||||||
The "Transifex client" (see: http://help.transifex.com/features/client/) |
|
||||||
will help with fetching new translations from Transifex. Use the following |
|
||||||
config to be able to connect with the client: |
|
||||||
|
|
||||||
### .tx/config |
|
||||||
|
|
||||||
[main] |
|
||||||
host = https://www.transifex.com |
|
||||||
|
|
||||||
[bitcoin.tx] |
|
||||||
file_filter = src/qt/locale/bitcoin_<lang>.ts |
|
||||||
source_file = src/qt/locale/bitcoin_en.ts |
|
||||||
source_lang = en |
|
||||||
|
|
||||||
### .tx/config (for Windows) |
|
||||||
|
|
||||||
[main] |
|
||||||
host = https://www.transifex.com |
|
||||||
|
|
||||||
[bitcoin.tx] |
|
||||||
file_filter = src\qt\locale\bitcoin_<lang>.ts |
|
||||||
source_file = src\qt\locale\bitcoin_en.ts |
|
||||||
source_lang = en |
|
||||||
|
|
||||||
It is also possible to directly download new translations one by one from the Transifex website. |
|
||||||
|
|
||||||
### Fetching new translations |
|
||||||
|
|
||||||
1. `tx pull -a` |
|
||||||
2. update `src/qt/bitcoin.qrc` manually or via |
|
||||||
`ls src/qt/locale/*ts|xargs -n1 basename|sed 's/\(bitcoin_\(.*\)\).ts/<file alias="\2">locale/\1.qm<\/file>/'` |
|
||||||
3. `git add` new translations from `src/qt/locale/` |
|
@ -1,35 +0,0 @@ |
|||||||
Compiling/running bitcoind unit tests |
|
||||||
------------------------------------ |
|
||||||
|
|
||||||
bitcoind unit tests are in the `src/test/` directory; they |
|
||||||
use the Boost::Test unit-testing framework. |
|
||||||
|
|
||||||
To compile and run the tests: |
|
||||||
|
|
||||||
cd src |
|
||||||
make -f makefile.unix test_bitcoin # Replace makefile.unix if you're not on unix |
|
||||||
./test_bitcoin # Runs the unit tests |
|
||||||
|
|
||||||
If all tests succeed the last line of output will be: |
|
||||||
`*** No errors detected` |
|
||||||
|
|
||||||
To add more tests, add `BOOST_AUTO_TEST_CASE` functions to the existing |
|
||||||
.cpp files in the test/ directory or add new .cpp files that |
|
||||||
implement new BOOST_AUTO_TEST_SUITE sections (the makefiles are |
|
||||||
set up to add test/*.cpp to test_bitcoin automatically). |
|
||||||
|
|
||||||
|
|
||||||
Compiling/running Bitcoin-Qt unit tests |
|
||||||
--------------------------------------- |
|
||||||
|
|
||||||
Bitcoin-Qt unit tests are in the src/qt/test/ directory; they |
|
||||||
use the Qt unit-testing framework. |
|
||||||
|
|
||||||
To compile and run the tests: |
|
||||||
|
|
||||||
qmake bitcoin-qt.pro BITCOIN_QT_TEST=1 |
|
||||||
make |
|
||||||
./bitcoin-qt_test |
|
||||||
|
|
||||||
To add more tests, add them to the `src/qt/test/` directory, |
|
||||||
the `src/qt/test/test_main.cpp` file, and bitcoin-qt.pro. |
|
Loading…
Reference in new issue