Compare commits
37 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f53c5ede73 | ||
|
|
b2d3b2d65d | ||
|
|
1c15f88653 | ||
|
|
37971fcc76 | ||
|
|
1b93ea0e31 | ||
|
|
c4de918478 | ||
|
|
8d0923109d | ||
|
|
709c1b267f | ||
|
|
b6d11a3018 | ||
|
|
4585f7e2c1 | ||
|
|
d764d9161e | ||
|
|
9e9869d0fe | ||
|
|
e6a729d2d8 | ||
|
|
88a1b89452 | ||
|
|
405ce5a876 | ||
|
|
19197d5e29 | ||
|
|
0fe19a3a2c | ||
|
|
d2e21a9d74 | ||
|
|
6be6be2ed9 | ||
|
|
81dd7aa4c1 | ||
|
|
5a7321562d | ||
|
|
ba1fce94b5 | ||
|
|
5efee7da86 | ||
|
|
145b2d078e | ||
|
|
3c0baa68fa | ||
|
|
90b5aadf56 | ||
|
|
dead0ff8cd | ||
|
|
0fb0a38339 | ||
|
|
9bc9593df5 | ||
|
|
38f33ce4a3 | ||
|
|
2b814d6eb0 | ||
|
|
560078a768 | ||
|
|
e1739cbf38 | ||
|
|
09d7be3e63 | ||
|
|
7e91dd27da | ||
|
|
d825e6a31b | ||
|
|
1615c14756 |
@@ -256,7 +256,7 @@ windows:RC_FILE = src/qt/res/bitcoin-qt.rc
|
||||
macx:HEADERS += src/qt/macdockiconhandler.h
|
||||
macx:OBJECTIVE_SOURCES += src/qt/macdockiconhandler.mm
|
||||
macx:LIBS += -framework Foundation -framework ApplicationServices -framework AppKit
|
||||
macx:DEFINES += MAC_OSX MSG_NOSIGNAL=0 BOOST_FILESYSTEM_VERSION=3
|
||||
macx:DEFINES += MAC_OSX MSG_NOSIGNAL=0
|
||||
macx:ICON = src/qt/res/icons/bitcoin.icns
|
||||
macx:TARGET = "Bitcoin-Qt"
|
||||
|
||||
|
||||
16
contrib/debian/bin/bitcoin-qt
Executable file
@@ -0,0 +1,16 @@
|
||||
#!/bin/sh
|
||||
|
||||
set -e
|
||||
|
||||
umask 077
|
||||
|
||||
basedir=~/.bitcoin
|
||||
dbfile="$basedir/DB_CONFIG"
|
||||
cfgfile="$basedir/bitcoin.conf"
|
||||
|
||||
[ -e "$basedir" ] || mkdir "$basedir"
|
||||
|
||||
# Bitcoin does not clean up DB log files by default
|
||||
[ -e "$dbfile" ] || echo 'set_flags DB_LOG_AUTOREMOVE' > "$dbfile"
|
||||
|
||||
exec /usr/lib/bitcoin/bitcoin-qt "$@"
|
||||
18
contrib/debian/bin/bitcoind
Executable file
@@ -0,0 +1,18 @@
|
||||
#!/bin/sh
|
||||
|
||||
set -e
|
||||
|
||||
umask 077
|
||||
|
||||
basedir=~/.bitcoin
|
||||
dbfile="$basedir/DB_CONFIG"
|
||||
cfgfile="$basedir/bitcoin.conf"
|
||||
|
||||
[ -e "$basedir" ] || mkdir "$basedir"
|
||||
|
||||
[ -e "$cfgfile" ] || perl -le 'print"rpcpassword=",map{(a..z,A..Z,0..9)[rand 62]}0..9' > "$cfgfile"
|
||||
|
||||
# Bitcoin does not clean up DB log files by default
|
||||
[ -e "$dbfile" ] || echo 'set_flags DB_LOG_AUTOREMOVE' > "$dbfile"
|
||||
|
||||
exec /usr/lib/bitcoin/bitcoind "$@"
|
||||
11
contrib/debian/bitcoin-qt.desktop
Normal file
@@ -0,0 +1,11 @@
|
||||
[Desktop Entry]
|
||||
Encoding=UTF-8
|
||||
Name=Bitcoin
|
||||
Comment=Bitcoin P2P Cryptocurrency
|
||||
Exec=/usr/bin/bitcoin-qt
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Icon=/usr/share/pixmaps/bitcoin80.xpm
|
||||
#For when bitcoin (finally) properly handles bitcoin: URLs
|
||||
#MimeType=x-scheme-handler/bitcoin;
|
||||
Categories=Office;
|
||||
5
contrib/debian/bitcoin-qt.install
Normal file
@@ -0,0 +1,5 @@
|
||||
debian/bin/bitcoin-qt usr/bin
|
||||
bitcoin-qt usr/lib/bitcoin
|
||||
share/pixmaps/bitcoin32.xpm usr/share/pixmaps
|
||||
share/pixmaps/bitcoin80.xpm usr/share/pixmaps
|
||||
debian/bitcoin-qt.desktop usr/share/applications
|
||||
2
contrib/debian/bitcoin-qt.lintian-overrides
Normal file
@@ -0,0 +1,2 @@
|
||||
# Linked code is Expat - only Debian packaging is GPL-2+
|
||||
bitcoin-qt: possible-gpl-code-linked-with-openssl
|
||||
1
contrib/debian/bitcoind.examples
Normal file
@@ -0,0 +1 @@
|
||||
debian/examples/bitcoin.conf
|
||||
2
contrib/debian/bitcoind.install
Normal file
@@ -0,0 +1,2 @@
|
||||
debian/bin/bitcoind usr/bin
|
||||
src/bitcoind usr/lib/bitcoin
|
||||
2
contrib/debian/bitcoind.lintian-overrides
Normal file
@@ -0,0 +1,2 @@
|
||||
# Linked code is Expat - only Debian packaging is GPL-2+
|
||||
bitcoind: possible-gpl-code-linked-with-openssl
|
||||
2
contrib/debian/bitcoind.manpages
Normal file
@@ -0,0 +1,2 @@
|
||||
debian/manpages/bitcoind.1
|
||||
debian/manpages/bitcoin.conf.5
|
||||
248
contrib/debian/changelog
Normal file
@@ -0,0 +1,248 @@
|
||||
bitcoin (0.5.0~rc3-natty0) natty; urgency=low
|
||||
|
||||
* New upstream release candidate.
|
||||
* Don't set rpcpassword for bitcoin-qt.
|
||||
|
||||
-- Matt Corallo <matt@bluematt.me> Tue, 8 Nov 2011 11:56:00 -0400
|
||||
|
||||
bitcoin (0.5.0~rc1-natty1) natty; urgency=low
|
||||
|
||||
* Add test_bitcoin to build test
|
||||
* Fix clean
|
||||
* Remove uneccessary build-dependancies
|
||||
|
||||
-- Matt Corallo <matt@bluematt.me> Wed, 26 Oct 2011 14:37:18 -0400
|
||||
|
||||
bitcoin (0.5.0~rc1-natty0) natty; urgency=low
|
||||
|
||||
* Mark for natty
|
||||
* Fix broken build
|
||||
* Fix copyright listing
|
||||
* Remove bitcoin: URL handler until bitcoin actually has support for it (Oops)
|
||||
|
||||
-- Matt Corallo <matt@bluematt.me> Wed, 26 Oct 2011 14:37:18 -0400
|
||||
|
||||
bitcoin (0.5.0~rc1-2) experimental; urgency=low
|
||||
|
||||
* Add bitcoin-qt
|
||||
|
||||
-- Matt Corallo <matt@bluematt.me> Tue, 25 Oct 2011 15:24:18 -0400
|
||||
|
||||
bitcoin (0.5.0~rc1-1) experimental; urgency=low
|
||||
|
||||
* New upstream prerelease.
|
||||
* Add Github as alternate upstream source in watch file.
|
||||
* Stop build-depending on libcrypto++-dev, and drop patch 1000:
|
||||
Upstream no longer use crypto++.
|
||||
* Drop patch 1003: Upstream builds dynamic by default now.
|
||||
* Update copyright file: Drop notes on longer included sources.
|
||||
|
||||
-- Jonas Smedegaard <dr@jones.dk> Fri, 14 Oct 2011 00:16:18 +0200
|
||||
|
||||
bitcoin (0.4.0-1) unstable; urgency=low
|
||||
|
||||
* New upstream release.
|
||||
* Stop repackaging source tarballs: No DFSG-violating stripping left.
|
||||
* Update copyright file:
|
||||
+ Add Github URL to Source.
|
||||
* Drop dpkg-source local-options hint: Declared options are default
|
||||
since dpkg-source 1.16.1.
|
||||
+ Add irc URL to Upstream-Contact.
|
||||
+ Add comment on Bitcoin Developers to catch-all Files section.
|
||||
+ Add Files sections for newly readded src/cryptopp/* (new custom
|
||||
BSD-like license), and newly added doc/build-osx.txt and
|
||||
src/makefile.osx (Expat).
|
||||
* Bump debhelper compatibility level to 7.
|
||||
* Suppress binary icns and gpg files.
|
||||
* Enable regression tests:
|
||||
+ Build-depend on libboost-test-dev.
|
||||
+ Extend patch 1003 to also dynamically link test binary.
|
||||
+ Build and invoke test binary unless tests are disabled.
|
||||
* Tighten build-dependency on cdbs: Recent version needed to support
|
||||
debhelper 7.
|
||||
* Relax build-depend unversioned on debhelper: needed version
|
||||
satisfied even in oldstable.
|
||||
* Stop suppress optional build-dependencies: Satisfied in stable.
|
||||
Build-depend on devscripts (enabling copyright-check).
|
||||
|
||||
-- Jonas Smedegaard <dr@jones.dk> Wed, 05 Oct 2011 01:48:53 +0200
|
||||
|
||||
bitcoin (0.3.24~dfsg-1) unstable; urgency=low
|
||||
|
||||
* New upstream release.
|
||||
|
||||
[ Jonas Smedegaard ]
|
||||
* Improve various usage hints:
|
||||
+ Explicitly mention in long description that bitcoind contains
|
||||
daemon and command-line interface.
|
||||
+ Extend README.Debian with section on lack of GUI, and add primary
|
||||
headline.
|
||||
+ Avoid installing upstream README: contains no parts relevant for
|
||||
Debian usage.
|
||||
Thanks to richard for suggestions (see bug#629443).
|
||||
* Favor final releases over prereleases in rules and watch file.
|
||||
Thanks to Jan Dittberner.
|
||||
* Track -src (not -linux) tarballs in rules and watch file.
|
||||
Thanks to Jan Dittberner.
|
||||
* Drop patches 1004 and 1005 (integrated upstream) and simplify
|
||||
CXXFLAGS in rules file.
|
||||
* Stop stripping no longer included source-less binaries from upstream
|
||||
tarballs.
|
||||
|
||||
[ Jan Dittberner ]
|
||||
* refresh debian/patches/1000_use_system_crypto++.patch
|
||||
|
||||
-- Jonas Smedegaard <dr@jones.dk> Tue, 19 Jul 2011 15:08:54 +0200
|
||||
|
||||
bitcoin (0.3.21~dfsg-2) unstable; urgency=low
|
||||
|
||||
* Enable UPNP support:
|
||||
+ Drop patch 1006.
|
||||
+ Build-depend on libminiupnpc-dev.
|
||||
Thanks to Matt Corallo.
|
||||
|
||||
-- Jonas Smedegaard <dr@jones.dk> Sat, 28 May 2011 15:52:44 +0200
|
||||
|
||||
bitcoin (0.3.21~dfsg-1) unstable; urgency=low
|
||||
|
||||
* New upstream release.
|
||||
* Refresh patches.
|
||||
* Drop patch 1002: no longer needed, as upstream use pkgconfig now.
|
||||
* Add patch 1006 to really unset USE_UPNP as aparently intended.
|
||||
* Adjust cleanup rule to preserve .gitignore files.
|
||||
* Update copyright file:
|
||||
+ Bump format to draft 174 of DEP-5.
|
||||
+ Shorten comments.
|
||||
* Bump policy compliance to standards-version 3.9.2.
|
||||
* Shorten Vcs-Browser paragraph in control file.
|
||||
* Fix mention daemon (not CLI tools) in short description.
|
||||
* Stop conflicting with or replace bitcoin-cli: Only transitional, no
|
||||
longer needed.
|
||||
* Link against unversioned berkeleydb. Update NEWS and README.Debian
|
||||
accordingly (and improve wording while at it).
|
||||
Closes: Bug#621425. Thanks to Ondřej Surý.
|
||||
* This release also implicitly updates linkage against libcrypto++,
|
||||
which closes: bug#626953, #627024.
|
||||
* Disable linkage against not yet Debian packaged MiniUPnP.
|
||||
* Silence seemingly harmless noise about unused variables.
|
||||
|
||||
-- Jonas Smedegaard <dr@jones.dk> Tue, 17 May 2011 15:31:24 +0200
|
||||
|
||||
bitcoin (0.3.20.2~dfsg-2) unstable; urgency=medium
|
||||
|
||||
* Fix have wrapper script execute real binary (not loop executing
|
||||
itself).
|
||||
Closes: bug#617290. Thanks to Philippe Gauthier and Etienne Laurin.
|
||||
* Set urgency=medium as the only (user-exposed) binary is useless
|
||||
without this fix and has been for some time.
|
||||
|
||||
-- Jonas Smedegaard <dr@jones.dk> Wed, 16 Mar 2011 09:11:06 +0100
|
||||
|
||||
bitcoin (0.3.20.2~dfsg-1) unstable; urgency=low
|
||||
|
||||
* New upstream release.
|
||||
* Fix provide and replace former package name bitcoin-cli.
|
||||
Closes: bug#618439. Thanks to Shane Wegner.
|
||||
|
||||
-- Jonas Smedegaard <dr@jones.dk> Tue, 15 Mar 2011 11:41:43 +0100
|
||||
|
||||
bitcoin (0.3.20.01~dfsg-1) unstable; urgency=low
|
||||
|
||||
* New upstream release.
|
||||
|
||||
[ Micah Anderson ]
|
||||
* Add myself as uploader.
|
||||
|
||||
[ Jonas Smedegaard ]
|
||||
* Add wrapper for bitcoind to ease initial startup.
|
||||
* Update patches:
|
||||
+ Drop patch 2002: Applied upstream.
|
||||
+ Add patch 1005 to add phtread linker option.
|
||||
Closes: bug#615619. Thanks to Shane Wegner.
|
||||
+ Refresh patches.
|
||||
* Extend copyright years in rules file header.
|
||||
* Rewrite copyright file using draft svn166 of DEP5 format.
|
||||
* Rename binary package to bitcoind (from bincoin-cli).
|
||||
Closes: bug#614025. Thanks to Luke-Jr.
|
||||
|
||||
-- Jonas Smedegaard <dr@jones.dk> Tue, 01 Mar 2011 15:55:04 +0100
|
||||
|
||||
bitcoin (0.3.19~dfsg-6) unstable; urgency=low
|
||||
|
||||
* Fix override agressive optimizations.
|
||||
* Fix tighten build-dependencies to really fit backporting to Lenny:
|
||||
+ Add fallback build-dependency on libdb4.6++-dev.
|
||||
+ Tighten unversioned Boost build-dependencies to recent versions,
|
||||
To force use of versioned Boost when backporting to Lenny.
|
||||
...needs more love, though: actual build fails.
|
||||
|
||||
-- Jonas Smedegaard <dr@jones.dk> Mon, 17 Jan 2011 19:48:35 +0100
|
||||
|
||||
bitcoin (0.3.19~dfsg-5) unstable; urgency=low
|
||||
|
||||
* Fix lower Boost fallback-build-dependencies to 1.35, really
|
||||
available in Lenny.
|
||||
* Correct comment in rules file regarding reason for versioned Boost
|
||||
fallback-build-dependency.
|
||||
* Add patch 2002 adding -mt decoration to Boost flags, to ease
|
||||
backporting to Lenny.
|
||||
* Respect DEB_BUILD_OPTIONS, and suppress arch-specific optimizations:
|
||||
+ Add patch 1004 to allow overriding optimization flags.
|
||||
+ Set optimization flags conditionally at build time.
|
||||
+ Drop patch 2002 unconditionally suppressing arch-optimizations.
|
||||
|
||||
-- Jonas Smedegaard <dr@jones.dk> Mon, 17 Jan 2011 16:04:48 +0100
|
||||
|
||||
bitcoin (0.3.19~dfsg-4) unstable; urgency=low
|
||||
|
||||
[ Micah Anderson ]
|
||||
* Provide example bitcoin.conf.
|
||||
* Add bitcoind(1) and bitcoin.conf(5) man pages.
|
||||
|
||||
[ Jonas Smedegaard ]
|
||||
* Ease backporting:
|
||||
+ Suppress optional build-dependencies.
|
||||
+ Add fallback build-dependencies on the most recent Boost libs
|
||||
available in Lenny (where unversioned Boost libs are missing).
|
||||
* Add Micah as copyright holder for manpages, licensed as GPL-3+.
|
||||
* Bump copyright format to Subversion candidate draft 162 of DEP5.
|
||||
|
||||
-- Jonas Smedegaard <dr@jones.dk> Mon, 17 Jan 2011 14:00:48 +0100
|
||||
|
||||
bitcoin (0.3.19~dfsg-3) unstable; urgency=low
|
||||
|
||||
* Document in copyright file files excluded from repackaged source.
|
||||
* Update copyright file:
|
||||
+ Bump DEP5 format hint to Subversion draft rev. 153.
|
||||
+ Consistently wrap at 72 chars.
|
||||
+ Refer to GPL-2 file (not GPL symlink).
|
||||
* Link against Berkeley DB 4.8 (not 4.7):
|
||||
+ Build-depend on libdb4.8++-dev (and on on libdb4.7++-dev).
|
||||
+ Suggest libdb4.8-util and db4.7-util.
|
||||
+ Add README.Debian note on (untested) upgrade routine.
|
||||
+ Add NEWS entry on changed db version, referring to README.Debian.
|
||||
|
||||
-- Jonas Smedegaard <dr@jones.dk> Fri, 07 Jan 2011 22:50:57 +0100
|
||||
|
||||
bitcoin (0.3.19~dfsg-2) unstable; urgency=low
|
||||
|
||||
* Adjust build options to use optimized miner only for amd64. Fixes
|
||||
FTBFS on i386 (and other archs, if compiling anywhere else at all).
|
||||
* Avoid static linking.
|
||||
* Adjust patch 2001 to avoid only arch-specific optimizations (keep
|
||||
-O3).
|
||||
* Extend long description to mention disk consumption and initial use
|
||||
of IRC.
|
||||
All of above changes thanks to Helmuth Grohne.
|
||||
* Add lintian override regarding OpenSSL and GPL: Linked code is Expat
|
||||
- only Debian packaging is GPL-2+.
|
||||
|
||||
-- Jonas Smedegaard <dr@jones.dk> Wed, 29 Dec 2010 00:27:54 +0100
|
||||
|
||||
bitcoin (0.3.19~dfsg-1) unstable; urgency=low
|
||||
|
||||
[ Jonas Smedegaard ]
|
||||
* Initial release.
|
||||
Closes: bug#578157.
|
||||
|
||||
-- Jonas Smedegaard <dr@jones.dk> Tue, 28 Dec 2010 15:49:22 +0100
|
||||
1
contrib/debian/compat
Normal file
@@ -0,0 +1 @@
|
||||
7
|
||||
57
contrib/debian/control
Normal file
@@ -0,0 +1,57 @@
|
||||
Source: bitcoin
|
||||
Section: utils
|
||||
Priority: optional
|
||||
Maintainer: Jonas Smedegaard <dr@jones.dk>
|
||||
Uploaders: Micah Anderson <micah@debian.org>
|
||||
Build-Depends: debhelper,
|
||||
devscripts,
|
||||
libboost-system-dev (>> 1.35) | libboost-system1.35-dev,
|
||||
libdb4.8++-dev,
|
||||
libssl-dev,
|
||||
pkg-config,
|
||||
libminiupnpc8-dev,
|
||||
libboost-filesystem-dev (>> 1.35) | libboost-filesystem1.35-dev,
|
||||
libboost-program-options-dev (>> 1.35) | libboost-program-options1.35-dev,
|
||||
libboost-thread-dev (>> 1.35) | libboost-thread1.35-dev,
|
||||
libboost-test-dev (>> 1.35) | libboost-test1.35-dev,
|
||||
qt4-qmake,
|
||||
libqt4-dev
|
||||
Standards-Version: 3.9.2
|
||||
Homepage: http://www.bitcoin.org/
|
||||
Vcs-Git: git://github.com/bitcoin/bitcoin.git
|
||||
Vcs-Browser: http://github.com/bitcoin/bitcoin
|
||||
|
||||
Package: bitcoind
|
||||
Architecture: any
|
||||
Depends: ${shlibs:Depends}, ${misc:Depends}
|
||||
Description: peer-to-peer network based anonymous digital currency - daemon
|
||||
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.
|
||||
.
|
||||
By default connects to an IRC network to discover other peers.
|
||||
.
|
||||
Full transaction history is stored locally at each client. This
|
||||
requires 150+ MB of space, slowly growing.
|
||||
.
|
||||
This package provides bitcoind, a combined daemon and CLI tool to
|
||||
interact with the daemon.
|
||||
|
||||
Package: bitcoin-qt
|
||||
Architecture: any
|
||||
Depends: ${shlibs:Depends}, ${misc:Depends}
|
||||
Description: peer-to-peer network based anonymous digital currency - QT GUI
|
||||
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.
|
||||
.
|
||||
By default connects to an IRC network to discover other peers.
|
||||
.
|
||||
Full transaction history is stored locally at each client. This
|
||||
requires 150+ MB of space, slowly growing.
|
||||
.
|
||||
This package provides bitcoin-qt, a GUI for Bitcoin based on QT.
|
||||
174
contrib/debian/copyright
Normal file
@@ -0,0 +1,174 @@
|
||||
Format: http://svn.debian.org/wsvn/dep/web/deps/dep5.mdwn?rev=174
|
||||
Upstream-Name: Bitcoin
|
||||
Upstream-Contact: Satoshi Nakamoto <satoshin@gmx.com>
|
||||
irc://#bitcoin@freenode.net
|
||||
Source: http://sourceforge.net/projects/bitcoin/files/
|
||||
https://github.com/bitcoin/bitcoin
|
||||
|
||||
Files: *
|
||||
Copyright: 2009-2011, Bitcoin Developers
|
||||
License: Expat
|
||||
Comment: The Bitcoin Developers encompasses the current developers listed on bitcoin.org,
|
||||
as well as the numerous contributors to the project.
|
||||
|
||||
Files: src/json/*
|
||||
Copyright: 2007-2009, John W. Wilkinson
|
||||
License: Expat
|
||||
|
||||
Files: src/strlcpy.h
|
||||
Copyright: 1998, Todd C. Miller <Todd.Miller@courtesan.com>
|
||||
License: ISC
|
||||
|
||||
Files: debian/*
|
||||
Copyright: 2010-2011, Jonas Smedegaard <dr@jones.dk>
|
||||
2011, Matt Corallo <matt@bluematt.me>
|
||||
License: GPL-2+
|
||||
|
||||
Files: debian/manpages/*
|
||||
Copyright: Micah Anderson <micah@debian.org>
|
||||
License: GPL-3+
|
||||
|
||||
Files: src/qt/res/icons/clock*.png, src/qt/res/icons/tx*.png,
|
||||
src/qt/res/src/*.svg
|
||||
Copyright: Wladimir van der Laan
|
||||
License: CC-BY-3
|
||||
|
||||
Files: 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
|
||||
Copyright: David Vignoni (david@icon-king.com)
|
||||
ICON KING - www.icon-king.com
|
||||
License: LGPL
|
||||
Comment: NUVOLA ICON THEME for KDE 3.x
|
||||
Original icons: kaddressbook, klipper_dock, view-list-text,
|
||||
key-password, encrypted/decrypted, go-home, go-down,
|
||||
go-next, dialog-ok
|
||||
Site: http://www.icon-king.com/projects/nuvola/
|
||||
|
||||
Files: src/qt/res/icons/connect*.png
|
||||
Copyright: schollidesign
|
||||
License: GPL-3+
|
||||
Comment: Icon Pack: Human-O2
|
||||
Site: http://findicons.com/icon/93743/blocks_gnome_netstatus_0
|
||||
|
||||
Files: src/qt/res/icons/transaction*.png
|
||||
Copyright: md2k7
|
||||
License: You are free to do with these icons as you wish, including selling,
|
||||
copying, modifying etc.
|
||||
Comment: Site: https://forum.bitcoin.org/index.php?topic=15276.0
|
||||
|
||||
Files: 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
|
||||
Copyright: http://www.everaldo.com
|
||||
License: LGPL
|
||||
Comment: Icon Pack: Crystal SVG
|
||||
|
||||
Files: src/qt/res/icons/bitcoin.png, src/qt/res/icons/toolbar.png
|
||||
Copyright: Bitboy (optimized for 16x16 by Wladimir van der Laan)
|
||||
License: PUB-DOM
|
||||
Comment: Site: http://forum.bitcoin.org/?topic=1756.0
|
||||
|
||||
Files: scripts/img/reload.xcf, src/qt/res/movies/update_spinner.mng
|
||||
Copyright: Everaldo (Everaldo Coelho)
|
||||
License: GPL-3+
|
||||
Comment: Icon Pack: Kids
|
||||
Site: http://findicons.com/icon/17102/reload?id=17102
|
||||
|
||||
Files: src/qt/res/images/splash2.jpg
|
||||
License: PUB-DOM
|
||||
Copyright: Crobbo (forum)
|
||||
Comment: Site: https://bitcointalk.org/index.php?topic=32273.0
|
||||
|
||||
|
||||
License: Expat
|
||||
Permission is hereby granted, free of charge, to any person obtaining a
|
||||
copy of this software and associated documentation files (the
|
||||
"Software"), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell copies of the Software, and to
|
||||
permit persons to whom the Software is furnished to do so, subject to
|
||||
the following conditions:
|
||||
.
|
||||
The above copyright notice and this permission notice shall be included
|
||||
in all copies or substantial portions of the Software.
|
||||
.
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
License: ISC
|
||||
Permission to use, copy, modify, and distribute this software for any
|
||||
purpose with or without fee is hereby granted, provided that the above
|
||||
copyright notice and this permission notice appear in all copies.
|
||||
.
|
||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
|
||||
WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR
|
||||
BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES
|
||||
OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
|
||||
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
|
||||
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
|
||||
SOFTWARE.
|
||||
|
||||
License: GPL-2+
|
||||
This program is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
.
|
||||
This program is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
Comment:
|
||||
On Debian systems the GNU General Public License (GPL) version 2 is
|
||||
located in '/usr/share/common-licenses/GPL-2'.
|
||||
.
|
||||
You should have received a copy of the GNU General Public License along
|
||||
with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
License: GPL-3+
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU General Public License, Version 3 or any
|
||||
later version published by the Free Software Foundation.
|
||||
Comment:
|
||||
On Debian systems the GNU General Public License (GPL) version 3 is
|
||||
located in '/usr/share/common-licenses/GPL-3'.
|
||||
.
|
||||
You should have received a copy of the GNU General Public License along
|
||||
with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
License: CC-BY-3
|
||||
This work is licensed under a Creative Commons Attribution 3.0 Unported
|
||||
License.
|
||||
Comment:
|
||||
You can get a full copy of the license at
|
||||
<http://creativecommons.org/licenses/by/3.0/>.
|
||||
|
||||
License: LGPL
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
.
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
Comment:
|
||||
On Debian systems the GNU Lesser General Public License (LGPL) is
|
||||
located in '/usr/share/common-licenses/LGPL'.
|
||||
.
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
License: PUB-DOM
|
||||
This work is in the public domain.
|
||||
88
contrib/debian/examples/bitcoin.conf
Normal file
@@ -0,0 +1,88 @@
|
||||
# bitcoin.conf configuration file. Lines beginning with # are comments.
|
||||
|
||||
|
||||
# Network-related settings:
|
||||
|
||||
# Run on the test network instead of the real bitcoin network.
|
||||
#testnet=1
|
||||
|
||||
# Connect via a socks4 proxy
|
||||
#proxy=127.0.0.1:9050
|
||||
|
||||
# Use as many addnode= settings as you like to connect to specific peers
|
||||
#addnode=69.164.218.197
|
||||
#addnode=10.0.0.2:8333
|
||||
|
||||
# ... or use as many connect= settings as you like to connect ONLY
|
||||
# to specific peers:
|
||||
#connect=69.164.218.197
|
||||
#connect=10.0.0.1:8333
|
||||
|
||||
# Do not use Internet Relay Chat (irc.lfnet.org #bitcoin channel) to
|
||||
# find other peers.
|
||||
#noirc=1
|
||||
|
||||
# Maximum number of inbound+outbound connections.
|
||||
#maxconnections=
|
||||
|
||||
|
||||
# JSON-RPC options (for controlling a running Bitcoin/bitcoind process)
|
||||
|
||||
# server=1 tells Bitcoin to accept JSON-RPC commands.
|
||||
#server=1
|
||||
|
||||
# You must set rpcuser and rpcpassword to secure the JSON-RPC api
|
||||
#rpcuser=Ulysseys
|
||||
#rpcpassword=YourSuperGreatPasswordNumber_385593
|
||||
|
||||
# By default, only RPC connections from localhost are allowed. Specify
|
||||
# as many rpcallowip= settings as you like to allow connections from
|
||||
# other hosts (and you may use * as a wildcard character):
|
||||
#rpcallowip=10.1.1.34
|
||||
#rpcallowip=192.168.1.*
|
||||
|
||||
# Listen for RPC connections on this TCP port:
|
||||
rpcport=8332
|
||||
|
||||
# You can use Bitcoin or bitcoind to send commands to Bitcoin/bitcoind
|
||||
# running on another host using this option:
|
||||
rpcconnect=127.0.0.1
|
||||
|
||||
# Use Secure Sockets Layer (also known as TLS or HTTPS) to communicate
|
||||
# with Bitcoin -server or bitcoind
|
||||
#rpcssl=1
|
||||
|
||||
# OpenSSL settings used when rpcssl=1
|
||||
rpcsslciphers=TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH
|
||||
rpcsslcertificatechainfile=server.cert
|
||||
rpcsslprivatekeyfile=server.pem
|
||||
|
||||
|
||||
# Miscellaneous options
|
||||
|
||||
# Set gen=1 to attempt to generate bitcoins
|
||||
gen=0
|
||||
|
||||
# Use SSE instructions to try to generate bitcoins faster.
|
||||
#4way=1
|
||||
|
||||
# Pre-generate this many public/private key pairs, so wallet backups will be valid for
|
||||
# both prior transactions and several dozen future transactions.
|
||||
keypool=100
|
||||
|
||||
# Pay an optional transaction fee every time you send bitcoins. Transactions with fees
|
||||
# are more likely than free transactions to be included in generated blocks, so may
|
||||
# be validated sooner.
|
||||
paytxfee=0.00
|
||||
|
||||
# Allow direct connections for the 'pay via IP address' feature.
|
||||
#allowreceivebyip=1
|
||||
|
||||
|
||||
# User interface options
|
||||
|
||||
# Start Bitcoin minimized
|
||||
#min=1
|
||||
|
||||
# Minimize to the system tray
|
||||
#minimizetotray=1
|
||||
5
contrib/debian/gbp.conf
Normal file
@@ -0,0 +1,5 @@
|
||||
# Configuration file for git-buildpackage and friends
|
||||
|
||||
[DEFAULT]
|
||||
pristine-tar = True
|
||||
sign-tags = True
|
||||
94
contrib/debian/manpages/bitcoin.conf.5
Normal file
@@ -0,0 +1,94 @@
|
||||
.TH BITCOIN.CONF "5" "January 2011" "bitcoin.conf 3.19"
|
||||
.SH NAME
|
||||
bitcoin.conf \- bitcoin configuration file
|
||||
.SH SYNOPSIS
|
||||
All command-line options (except for '-datadir' and '-conf') may be specified in a configuration file, and all configuration file options may also be specified on the command line. Command-line options override values set in the configuration file.
|
||||
.TP
|
||||
The configuration file is a list of 'setting=value' pairs, one per line, with optional comments starting with the '#' character.
|
||||
.TP
|
||||
The configuration file is not automatically created; you can create it using your favorite plain-text editor. By default, bitcoind(1) will look for a file named bitcoin.conf(5) in the bitcoin data directory, but both the data directory and the configuration file path may be changed using the '-datadir' and '-conf' command-line arguments.
|
||||
.SH LOCATION
|
||||
bitcoin.conf should be located in $HOME/.bitcoin
|
||||
.SH NETWORK-RELATED SETTINGS
|
||||
.TP
|
||||
.TP
|
||||
\fBtestnet=\fR[\fI'1'\fR|\fI'0'\fR]
|
||||
Enable or disable run on the test network instead of the real *bitcoin* network.
|
||||
.TP
|
||||
\fBproxy=\fR\fI'127.0.0.1:9050'\fR
|
||||
Connect via a socks4 proxy.
|
||||
.TP
|
||||
\fBaddnode=\fR\fI'10.0.0.2:8333'\fR
|
||||
Use as many *addnode=* settings as you like to connect to specific peers.
|
||||
.TP
|
||||
\fBconnect=\fR\fI'10.0.0.1:8333'\fR
|
||||
Use as many *connect=* settings as you like to connect ONLY to specific peers.
|
||||
.TP
|
||||
\fBnoirc=\fR[\fI'1'\fR|\fI'0'\fR]
|
||||
Use or Do not use Internet Relay Chat (irc.lfnet.org #bitcoin channel) to find other peers.
|
||||
.TP
|
||||
\fRmaxconnections=\fR\fI'value'\fR
|
||||
Maximum number of inbound+outbound connections.
|
||||
.SH JSON-RPC OPTIONS
|
||||
.TP
|
||||
\fBserver=\fR[\fI'1'\fR|\fI'0'\fR]
|
||||
Tells *bitcoin* to accept or not accept JSON-RPC commands.
|
||||
.TP
|
||||
\fBrpcuser=\fR\fI'username'\fR
|
||||
You must set *rpcuser* to secure the JSON-RPC api.
|
||||
.TP
|
||||
\fBrpcpassword=\fR\fI'password'\fR
|
||||
You must set *rpcpassword* to secure the JSON-RPC api.
|
||||
.TP
|
||||
\fBrpctimeout=\fR\fI'30'\fR
|
||||
How many seconds *bitcoin* will wait for a complete RPC HTTP request, after the HTTP connection is established.
|
||||
.TP
|
||||
\fBrpcallowip=\fR\fI'192.168.1.*'\fR
|
||||
By default, only RPC connections from localhost are allowed. Specify as many *rpcallowip=* settings as you like to allow connections from other hosts (and you may use * as a wildcard character).
|
||||
.TP
|
||||
\fBrpcport=\fR\fI'8332'\fR
|
||||
Listen for RPC connections on this TCP port.
|
||||
.TP
|
||||
\fBrpcconnect=\fR\fI'127.0.0.1'\fR
|
||||
You can use *bitcoin* or *bitcoind(1)* to send commands to *bitcoin*/*bitcoind(1)* running on another host using this option.
|
||||
.TP
|
||||
\fBrpcssl=\fR\fI'1'\fR
|
||||
Use Secure Sockets Layer (also known as TLS or HTTPS) to communicate with *bitcoin* '-server' or *bitcoind(1)*. Example of OpenSSL settings used when *rpcssl*='1':
|
||||
.TP
|
||||
\fBrpcsslciphers=\fR\fI'TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH'\fR
|
||||
.TP
|
||||
\fBrpcsslcertificatechainfile=\fR\fI'server.cert'\fR
|
||||
.TP
|
||||
\fBrpcsslprivatekeyfile=\fR\fI'server.pem'\fR
|
||||
.TP
|
||||
.SH MISCELLANEOUS OPTIONS
|
||||
.TP
|
||||
\fBgen=\fR[\fI'0'\fR|\fI'1'\fR]
|
||||
Enable or disable attempt to generate bitcoins.
|
||||
.TP
|
||||
\fB4way=\fR[\fI'0'\fR|\fI'1'\fR]
|
||||
Enable or disable use SSE instructions to try to generate bitcoins faster.
|
||||
.TP
|
||||
\fBkeypool=\fR\fI'100'\fR
|
||||
Pre-generate this many public/private key pairs, so wallet backups will be valid for both prior transactions and several dozen future transactions.
|
||||
.TP
|
||||
\fBpaytxfee=\fR\fI'0.00'\fR
|
||||
Pay an optional transaction fee every time you send bitcoins. Transactions with fees are more likely than free transactions to be included in generated blocks, so may be validated sooner.
|
||||
.TP
|
||||
\fBallowreceivebyip=\fR\fI'1'\fR
|
||||
Allow direct connections for the 'pay via IP address' feature.
|
||||
.TP
|
||||
.SH USER INTERFACE OPTIONS
|
||||
.TP
|
||||
\fBmin=\fR[\fI'0'\fR|\fI'1'\fR]
|
||||
Enable or disable start bitcoind minimized.
|
||||
.TP
|
||||
\fBminimizetotray=\fR[\fI'0'\fR|\fI'1'\fR]
|
||||
Enable or disable minimize to the system tray.
|
||||
.SH "SEE ALSO"
|
||||
bitcoind(1)
|
||||
.SH AUTHOR
|
||||
This manual page was written by Micah Anderson <micah@debian.org> for the Debian system (but may be used by others). Permission is granted to copy, distribute and/or modify this document under the terms of the GNU General Public License, Version 3 or any later version published by the Free Software Foundation.
|
||||
|
||||
On Debian systems, the complete text of the GNU General Public License can be found in /usr/share/common-licenses/GPL.
|
||||
|
||||
209
contrib/debian/manpages/bitcoind.1
Normal file
@@ -0,0 +1,209 @@
|
||||
.TH BITCOIND "1" "January 2011" "bitcoind 3.19"
|
||||
.SH NAME
|
||||
bitcoind \- peer-to-peer network based anonymous digital currency
|
||||
.SH SYNOPSIS
|
||||
bitcoin [options] <command> [params]
|
||||
.TP
|
||||
bitcoin [options] help <command> - Get help for a command
|
||||
.SH DESCRIPTION
|
||||
This manual page documents the bitcoind program. Bitcoin is a peer-to-peer digital currency. Peer-to-peer (P2P) means that there is no central authority to issue new money or keep track of transactions. Instead, these tasks are managed collectively by the nodes of the network. Advantages:
|
||||
|
||||
Bitcoins can be sent easily through the Internet, without having to trust middlemen. Transactions are designed to be irreversible. Be safe from instability caused by fractional reserve banking and central banks. The limited inflation of the Bitcoin system’s money supply is distributed evenly (by CPU power) throughout the network, not monopolized by banks.
|
||||
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
\fB\-conf=\fR<file>
|
||||
Specify configuration file (default: bitcoin.conf)
|
||||
.TP
|
||||
\fB\-gen\fR
|
||||
Generate coins
|
||||
.TP
|
||||
\fB\-gen\fR=\fI0\fR
|
||||
Don't generate coins
|
||||
.TP
|
||||
\fB\-min\fR
|
||||
Start minimized
|
||||
.TP
|
||||
\fB\-datadir=\fR<dir>
|
||||
Specify data directory
|
||||
.TP
|
||||
\fB\-proxy=\fR<ip:port>
|
||||
Connect through socks4 proxy
|
||||
.TP
|
||||
\fB\-addnode=\fR<ip>
|
||||
Add a node to connect to
|
||||
.TP
|
||||
\fB\-connect=\fR<ip>
|
||||
Connect only to the specified node
|
||||
.TP
|
||||
\fB\-paytxfee=\fR<amt>
|
||||
Fee per KB to add to transactions you send
|
||||
.TP
|
||||
\fB\-server\fR
|
||||
Accept command line and JSON\-RPC commands
|
||||
.TP
|
||||
\fB\-daemon\fR
|
||||
Run in the background as a daemon and accept commands
|
||||
.TP
|
||||
\fB\-testnet\fR
|
||||
Use the test network
|
||||
.TP
|
||||
\fB\-rpcuser=\fR<user>
|
||||
Username for JSON\-RPC connections
|
||||
.TP
|
||||
\fB\-rpcpassword=\fR<pw>
|
||||
Password for JSON\-RPC connections
|
||||
.TP
|
||||
\fB\-rpcport=\fR<port>
|
||||
Listen for JSON\-RPC connections on <port>
|
||||
.TP
|
||||
\fB\-rpcallowip=\fR<ip>
|
||||
Allow JSON\-RPC connections from specified IP address
|
||||
.TP
|
||||
\fB\-rpcconnect=\fR<ip>
|
||||
Send commands to node running on <ip>
|
||||
.PP
|
||||
SSL options: (see the Bitcoin Wiki for SSL setup instructions)
|
||||
.TP
|
||||
\fB\-rpcssl\fR=\fI1\fR
|
||||
Use OpenSSL (https) for JSON\-RPC connections
|
||||
.TP
|
||||
\fB\-rpcsslcertificatchainfile=\fR<file.cert>
|
||||
Server certificate file (default: server.cert)
|
||||
.TP
|
||||
\fB\-rpcsslprivatekeyfile=\fR<file.pem>
|
||||
Server private key (default: server.pem)
|
||||
.TP
|
||||
\fB\-rpcsslciphers=\fR<ciphers>
|
||||
Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH)
|
||||
.TP
|
||||
\-?
|
||||
This help message
|
||||
.SH COMMANDS
|
||||
.TP
|
||||
\fBbackupwallet 'destination'\fR
|
||||
Safely copies *wallet.dat* to 'destination', which can be a directory or a path with filename.
|
||||
.TP
|
||||
\fBgetaccount 'bitcoinaddress'\fR
|
||||
Returns the account associated with the given address.
|
||||
.TP
|
||||
\fBsetaccount 'bitcoinaddress' ['account']\fR
|
||||
Sets the ['account'] associated with the given address. ['account'] may be omitted to remove an address from ['account'].
|
||||
.TP
|
||||
\fBgetaccountaddress 'account'\fR
|
||||
Returns a new bitcoin address for 'account'.
|
||||
.TP
|
||||
\fBgetaddressesbyaccount 'account'\fR
|
||||
Returns the list of addresses associated with the given 'account'.
|
||||
.TP
|
||||
\fBgetbalance 'account'\fR
|
||||
Returns the server's available balance, or the balance for 'account'.
|
||||
.TP
|
||||
\fBgetblockcount\fR
|
||||
Returns the number of blocks in the longest block chain.
|
||||
.TP
|
||||
\fBgetblocknumber\fR
|
||||
Returns the block number of the latest block in the longest block chain.
|
||||
.TP
|
||||
\fBgetconnectioncount\fR
|
||||
Returns the number of connections to other nodes.
|
||||
.TP
|
||||
\fBgetdifficulty\fR
|
||||
Returns the proof-of-work difficulty as a multiple of the minimum difficulty.
|
||||
.TP
|
||||
\fBgetgenerate\fR
|
||||
Returns boolean true if server is trying to generate bitcoins, false otherwise.
|
||||
.TP
|
||||
\fBsetgenerate 'generate' ['genproclimit']\fR
|
||||
Generation is limited to ['genproclimit'] processors, -1 is unlimited.
|
||||
.TP
|
||||
\fBgethashespersec\fR
|
||||
Returns a recent hashes per second performance measurement while generating.
|
||||
.TP
|
||||
\fBgetinfo\fR
|
||||
Returns an object containing server information.
|
||||
.TP
|
||||
\fBgetnewaddress 'account'\fR
|
||||
Returns a new bitcoin address for receiving payments. If 'account' is specified (recommended), it is added to the address book so payments received with the address will be credited to 'account'.
|
||||
.TP
|
||||
\fBgetreceivedbyaccount 'account' ['minconf=1']\fR
|
||||
Returns the total amount received by addresses associated with 'account' in transactions with at least ['minconf'] confirmations.
|
||||
.TP
|
||||
\fBgetreceivedbyaddress 'bitcoinaddress' ['minconf=1']\fR
|
||||
Returns the total amount received by 'bitcoinaddress' in transactions with at least ['minconf'] confirmations.
|
||||
.TP
|
||||
\fBgettransaction 'txid'\fR
|
||||
Returns information about a specific transaction, given hexadecimal transaction ID.
|
||||
.TP
|
||||
\fBgetwork 'data'\fR
|
||||
If 'data' is specified, tries to solve the block and returns true if it was successful. If 'data' is not specified, returns formatted hash 'data' to work on:
|
||||
|
||||
"midstate" : precomputed hash state after hashing the first half of the data.
|
||||
"data" : block data.
|
||||
"hash1" : formatted hash buffer for second hash.
|
||||
"target" : little endian hash target.
|
||||
.TP
|
||||
\fBhelp 'command'\fR
|
||||
List commands, or get help for a command.
|
||||
.TP
|
||||
\fBlistaccounts ['minconf=1']\fR
|
||||
List accounts and their current balances.
|
||||
*note: requires bitcoin 0.3.20 or later.
|
||||
.TP
|
||||
\fBlistreceivedbyaccount ['minconf=1'] ['includeempty=false']\fR
|
||||
['minconf'] is the minimum number of confirmations before payments are included. ['includeempty'] whether to include addresses that haven't received any payments. Returns an array of objects containing:
|
||||
|
||||
"account" : the account of the receiving address.
|
||||
"amount" : total amount received by the address.
|
||||
"confirmations" : number of confirmations of the most recent transaction included.
|
||||
.TP
|
||||
\fBlistreceivedbyaddress ['minconf=1'] ['includeempty=false']\fR
|
||||
['minconf'] is the minimum number of confirmations before payments are included. ['includeempty'] whether to include addresses that haven't received any payments. Returns an array of objects containing:
|
||||
|
||||
"address" : receiving address.
|
||||
"account" : the account of the receiving address.
|
||||
"amount" : total amount received by the address.
|
||||
"confirmations" : number of confirmations of the most recent transaction included.
|
||||
.TP
|
||||
\fBlisttransactions 'account' ['count=10']\fR
|
||||
Returns a list of the last ['count'] transactions for 'account' - for all accounts if 'account' is not specified or is "*". Each entry in the list may contain:
|
||||
|
||||
"category" : will be generate, send, receive, or move.
|
||||
"amount" : amount of transaction.
|
||||
"fee" : Fee (if any) paid (only for send transactions).
|
||||
"confirmations" : number of confirmations (only for generate/send/receive).
|
||||
"txid" : transaction ID (only for generate/send/receive).
|
||||
"otheraccount" : account funds were moved to or from (only for move).
|
||||
"message" : message associated with transaction (only for send).
|
||||
"to" : message-to associated with transaction (only for send).
|
||||
|
||||
*note: requires bitcoin 0.3.20 or later.
|
||||
.TP
|
||||
\fBmove <'fromaccount'> <'toaccount'> <'amount'> ['minconf=1'] ['comment']\fR
|
||||
Moves funds between accounts.
|
||||
.TP
|
||||
\fBsendfrom* <'account'> <'bitcoinaddress'> <'amount'> ['minconf=1'] ['comment'] ['comment-to']\fR
|
||||
Sends amount from account's balance to 'bitcoinaddress'. This method will fail if there is less than amount bitcoins with ['minconf'] confirmations in the account's balance (unless account is the empty-string-named default account; it behaves like the *sendtoaddress* method). Returns transaction ID on success.
|
||||
.TP
|
||||
\fBsendtoaddress 'bitcoinaddress' 'amount' ['comment'] ['comment-to']\fR
|
||||
Sends amount from the server's available balance to 'bitcoinaddress'. amount is a real and is rounded to the nearest 0.01. Returns transaction id on success.
|
||||
.TP
|
||||
\fBstop\fR
|
||||
Stops the bitcoin server.
|
||||
.TP
|
||||
\fBvalidateaddress 'bitcoinaddress'\fR
|
||||
Checks that 'bitcoinaddress' looks like a proper bitcoin address. Returns an object containing:
|
||||
|
||||
"isvalid" : true or false.
|
||||
"ismine" : true if the address is in the server's wallet.
|
||||
"address" : bitcoinaddress.
|
||||
|
||||
*note: ismine and address are only returned if the address is valid.
|
||||
|
||||
.SH "SEE ALSO"
|
||||
bitcoin.conf(5)
|
||||
.SH AUTHOR
|
||||
This manual page was written by Micah Anderson <micah@debian.org> for the Debian system (but may be used by others). Permission is granted to copy, distribute and/or modify this document under the terms of the GNU General Public License, Version 3 or any later version published by the Free Software Foundation.
|
||||
|
||||
On Debian systems, the complete text of the GNU General Public License can be found in /usr/share/common-licenses/GPL.
|
||||
|
||||
26
contrib/debian/patches/1001_use_system_json-spirit.patch
Normal file
@@ -0,0 +1,26 @@
|
||||
Description: Use system JSON Spirit library
|
||||
Author: Jonas Smedegaard <dr@jones.dk>
|
||||
Last-Update: 2011-05-17
|
||||
--- a/src/rpc.cpp
|
||||
+++ b/src/rpc.cpp
|
||||
@@ -12,9 +12,7 @@
|
||||
#include <boost/asio/ssl.hpp>
|
||||
typedef boost::asio::ssl::stream<boost::asio::ip::tcp::socket> SSLStream;
|
||||
#endif
|
||||
-#include "json/json_spirit_reader_template.h"
|
||||
-#include "json/json_spirit_writer_template.h"
|
||||
-#include "json/json_spirit_utils.h"
|
||||
+#include <json_spirit.h>
|
||||
#define printf OutputDebugStringF
|
||||
// MinGW 3.4.5 gets "fatal error: had to relocate PCH" if the json headers are
|
||||
// precompiled in headers.h. The problem might be when the pch file goes over
|
||||
--- a/src/makefile.unix
|
||||
+++ b/src/makefile.unix
|
||||
@@ -23,6 +23,7 @@
|
||||
-l boost_thread \
|
||||
-l db_cxx \
|
||||
-l ssl \
|
||||
+ -l json_spirit \
|
||||
-l crypto
|
||||
|
||||
ifdef USE_UPNP
|
||||
3
contrib/debian/patches/README
Normal file
@@ -0,0 +1,3 @@
|
||||
0xxx: Grabbed from upstream development.
|
||||
1xxx: Possibly relevant for upstream adoption.
|
||||
2xxx: Only relevant for official Debian release.
|
||||
1
contrib/debian/patches/series
Normal file
@@ -0,0 +1 @@
|
||||
#1001_use_system_json-spirit.patch
|
||||
33
contrib/debian/rules
Executable file
@@ -0,0 +1,33 @@
|
||||
#!/usr/bin/make -f
|
||||
# -*- mode: makefile; coding: utf-8 -*-
|
||||
|
||||
#DEB_MAKE_CHECK_TARGET = test_bitcoin
|
||||
#build/bitcoind::
|
||||
# $(if $(filter nocheck,$(DEB_BUILD_OPTIONS)),,src/test_bitcoin)
|
||||
|
||||
DEB_INSTALL_EXAMPLES_bitcoind += debian/examples/*
|
||||
DEB_INSTALL_MANPAGES_bitcoind += debian/manpages/*
|
||||
|
||||
%:
|
||||
dh $@
|
||||
|
||||
override_dh_auto_build:
|
||||
cd src; $(MAKE) -f makefile.unix bitcoind
|
||||
$(MAKE)
|
||||
|
||||
override_dh_auto_clean:
|
||||
if [ -f Makefile ]; then $(MAKE) clean; else rm -rf build/; rm -f bitcoin-qt; fi
|
||||
cd src; $(MAKE) -f makefile.unix clean
|
||||
|
||||
override_dh_auto_configure:
|
||||
qmake bitcoin-qt.pro
|
||||
|
||||
override_dh_auto_test:
|
||||
cd src; $(MAKE) -f makefile.unix test_bitcoin
|
||||
src/test_bitcoin
|
||||
|
||||
# Ensure wrapper is set executable
|
||||
binary-post-install/bitcoind:
|
||||
chmod +x $(cdbs_curdestdir)usr/bin/bitcoind
|
||||
binary-post-install/bitcoin-qt:
|
||||
chmod +x $(cdbs_curdestdir)usr/bin/bitcoin-qt
|
||||
1
contrib/debian/source/format
Normal file
@@ -0,0 +1 @@
|
||||
3.0 (quilt)
|
||||
7
contrib/debian/watch
Normal file
@@ -0,0 +1,7 @@
|
||||
# Run the "uscan" command to check for upstream updates and more.
|
||||
version=3
|
||||
# use qa.debian.org redirector; see man uscan
|
||||
opts=uversionmangle=s/(\d)(alpha|beta|rc)/$1~$2/;s/\-src//,dversionmangle=s/~dfsg\d*// \
|
||||
http://sf.net/bitcoin/bitcoin-(\d.*)-linux\.tar\.gz debian
|
||||
opts=uversionmangle=s/(\d)(alpha|beta|rc)/$1~$2/,dversionmangle=s/~dfsg\d*// \
|
||||
http://githubredir.debian.net/github/bitcoin/bitcoin v(.*).tar.gz
|
||||
22
contrib/qt_translations.py
Executable file
@@ -0,0 +1,22 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
# Helpful little script that spits out a comma-separated list of
|
||||
# language codes for Qt icons that should be included
|
||||
# in binary bitcoin distributions
|
||||
|
||||
import glob
|
||||
import os
|
||||
import re
|
||||
import sys
|
||||
|
||||
if len(sys.argv) != 3:
|
||||
sys.exit("Usage: %s $QTDIR/translations $BITCOINDIR/src/qt/locale"%sys.argv[0])
|
||||
|
||||
d1 = sys.argv[1]
|
||||
d2 = sys.argv[2]
|
||||
|
||||
l1 = set([ re.search(r'qt_(.*).qm', f).group(1) for f in glob.glob(os.path.join(d1, 'qt_*.qm')) ])
|
||||
l2 = set([ re.search(r'bitcoin_(.*).qm', f).group(1) for f in glob.glob(os.path.join(d2, 'bitcoin_*.qm')) ])
|
||||
|
||||
print ",".join(sorted(l1.intersection(l2)))
|
||||
|
||||
@@ -3,19 +3,18 @@ Icon: src/qt/res/icons/clock*.png, src/qt/res/icons/tx*.png,
|
||||
Designer: Wladimir van der Laan
|
||||
License: Creative Commons Attribution
|
||||
|
||||
Icon: src/qt/res/icons/send.png
|
||||
Icon Pack: Vista Style Arrow
|
||||
Designer: Icons Land
|
||||
License: Freeware Non-commercial
|
||||
Site: http://findicons.com/icon/231371/right3green
|
||||
Icon: 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
|
||||
Icon Pack: NUVOLA ICON THEME for KDE 3.x
|
||||
Designer: David Vignoni (david@icon-king.com)
|
||||
ICON KING - www.icon-king.com
|
||||
License: LGPL
|
||||
Site: http://www.icon-king.com/projects/nuvola/
|
||||
|
||||
Icon: src/qt/res/icons/address-book.png
|
||||
Icon Pack: Farm-Fresh Web
|
||||
Designer: FatCow Web Hosting
|
||||
License: Creative Commons Attribution (by)
|
||||
Site: http://findicons.com/icon/163938/book_open
|
||||
|
||||
Icon: src/qt/res/icons/connect*.png, src/qt/res/icons/synced.png, src/qt/res/icons/lock_*.png
|
||||
Icon: src/qt/res/icons/connect*.png
|
||||
Icon Pack: Human-O2
|
||||
Designer: schollidesign
|
||||
License: GNU/GPL
|
||||
@@ -35,24 +34,11 @@ Designer: http://www.everaldo.com
|
||||
Icon Pack: Crystal SVG
|
||||
License: LGPL
|
||||
|
||||
Icon: src/qt/res/icons/receive.png, src/qt/res/icons/history.png,
|
||||
src/qt/res/icons/export.png
|
||||
Designer: Oxygen team
|
||||
Icon Pack: Oxygen
|
||||
License: Creative Common Attribution-ShareAlike 3.0 License or LGPL
|
||||
Site: http://www.oxygen-icons.org/
|
||||
|
||||
Icon: src/qt/res/icons/bitcoin.png, src/qt/res/icons/toolbar.png
|
||||
Designer: Bitboy (optimized for 16x16 by Wladimir van der Laan)
|
||||
License: Public Domain
|
||||
Site: http://forum.bitcoin.org/?topic=1756.0
|
||||
|
||||
Icon: src/qt/res/icons/overview.png
|
||||
Icon Pack: Primo
|
||||
Designer: Jack Cai
|
||||
License: Creative Commons Attribution No Derivatives (by-nd)
|
||||
Site: http://findicons.com/icon/175944/home?id=176221#
|
||||
|
||||
Icon: scripts/img/reload.xcf (modified),src/qt/res/movies/update_spinner.mng
|
||||
Icon Pack: Kids
|
||||
Designer: Everaldo (Everaldo Coelho)
|
||||
@@ -64,10 +50,3 @@ Designer: Crobbo (forum)
|
||||
Site: https://bitcointalk.org/index.php?topic=32273.0
|
||||
License: Public domain
|
||||
|
||||
Icon: src/qt/res/icons/key.png
|
||||
Designer: VisualPharm (Ivan Boyko)
|
||||
Icon Pack: Must Have
|
||||
Site: http://findicons.com/icon/51009/key?id=51009
|
||||
License: Creative Commons Attribution (by)
|
||||
|
||||
|
||||
|
||||
@@ -44,14 +44,16 @@
|
||||
* 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
|
||||
cd build/out
|
||||
zip bitcoin-$VERSION-linux-gitian.zip *
|
||||
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
|
||||
cd build/out
|
||||
zip bitcoin-$VERSION-win32-gitian.zip *
|
||||
pushd build/out
|
||||
zip -r bitcoin-$VERSION-win32-gitian.zip *
|
||||
mv bitcoin-$VERSION-win32-gitian.zip ../../
|
||||
popd
|
||||
|
||||
Build output expected:
|
||||
1. linux 32-bit and 64-bit binaries + source (bitcoin-$VERSION-linux-gitian.zip)
|
||||
@@ -61,18 +63,15 @@
|
||||
* repackage gitian builds for release as stand-alone zip/tar/installer exe
|
||||
|
||||
* Linux .tar.gz:
|
||||
mkdir bitcoin-$VERSION-linux
|
||||
cd bitcoin-$VERSION-linux
|
||||
unzip bitcoin-$VERSION-linux-gitian.zip
|
||||
cd ..; tar czvf bitcoin-$VERSION-linux.tar.gz bitcoin-$VERSION-linux
|
||||
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:
|
||||
mkdir bitcoin-$VERSION-win32
|
||||
cd bitcoin-$VERSION-win32
|
||||
unzip bitcoin-$VERSION-win32-gitian.zip
|
||||
mv bitcoin-$VERSION-win32-setup.exe ..
|
||||
cd ..; zip bitcoin-$VERSION-win32.zip bitcoin-$VERSION-win32
|
||||
|
||||
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
|
||||
See this blog post for how Gavin set up his build environment and
|
||||
@@ -81,7 +80,8 @@
|
||||
qmake USE_SSL=1 USE_UPNP=1 bitcoin-qt.pro
|
||||
make
|
||||
export QTDIR=/opt/local/share/qt4 # needed to find translations/qt_*.qm files
|
||||
contrib/macdeploy/macdeployqtplus Bitcoin-Qt.app -add-qt-tr de,es,ru -dmg -fancy contrib/macdeploy/fancy.plist
|
||||
T=$(contrib/qt_translations.py $QTDIR/translations src/qt/locale)
|
||||
contrib/macdeploy/macdeployqtplus Bitcoin-Qt.app -add-qt-tr $T -dmg -fancy contrib/macdeploy/fancy.plist
|
||||
|
||||
Build output expected:
|
||||
Bitcoin-Qt.dmg
|
||||
@@ -112,7 +112,7 @@
|
||||
cp ../gitian.sigs/$VERSION/$file/bitcoin-build.assert ./gitian/$file-build.assert
|
||||
cp ../gitian.sigs/$VERSION/$file/bitcoin-build.assert.sig ./gitian/$file-build.assert.sig
|
||||
done
|
||||
zip bitcoin-$VERSION-linux-gitian.zip *
|
||||
zip -r bitcoin-$VERSION-linux-gitian.zip *
|
||||
cp bitcoin-$VERSION-linux-gitian.zip ../
|
||||
cd ..
|
||||
mkdir bitcoin-$VERSION-linux-gitian; cd bitcoin-$VERSION-linux-gitian
|
||||
@@ -123,9 +123,7 @@
|
||||
cp ../gitian.sigs/$VERSION/$file/bitcoin-build.assert ./gitian/$file-build.assert
|
||||
cp ../gitian.sigs/$VERSION/$file/bitcoin-build.assert.sig ./gitian/$file-build.assert.sig
|
||||
done
|
||||
zip bitcoin-$VERSION-linux-gitian.zip *
|
||||
zip -r bitcoin-$VERSION-linux-gitian.zip *
|
||||
cp bitcoin-$VERSION-linux-gitian.zip ../
|
||||
|
||||
* Upload gitian zips to SourceForge
|
||||
|
||||
|
||||
|
||||
63
doc/translation_process.md
Normal file
@@ -0,0 +1,63 @@
|
||||
Translations
|
||||
============
|
||||
|
||||
The QT GUI can be easily be 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
|
||||
|
||||
#### Source file
|
||||
|
||||
`src/qt/locale/bitcoin_en.ts` is a treated in a special way. It is used as the
|
||||
source for all other translations. Whenever a string in the code is change
|
||||
this file must be updated to reflect those changes. Usually, this can be
|
||||
accomplished by running `lupdate`
|
||||
|
||||
Syncing with transifex
|
||||
----------------------
|
||||
|
||||
We are using http://transifex.net as a frontend for translating the client.
|
||||
|
||||
https://www.transifex.net/projects/p/bitcoin/resource/tx/
|
||||
|
||||
The "transifex client":http://help.transifex.net/features/client/index.html
|
||||
will help with fetching new translations from transifex.
|
||||
|
||||
|
||||
### .tx/config
|
||||
|
||||
[main]
|
||||
host = https://www.transifex.net
|
||||
|
||||
[bitcoin.tx]
|
||||
file_filter = src/qt/locale/bitcoin_<lang>.ts
|
||||
source_file = src/qt/locale/bitcoin_en.ts
|
||||
source_lang = en
|
||||
|
||||
### Fetching new translations
|
||||
|
||||
1. `tx pull -a`
|
||||
2. update `src/qt/bitcoin.qrc`
|
||||
3. `git add` new translations from `src/qt/locale/`
|
||||
232
share/pixmaps/bitcoin32.xpm
Normal file
@@ -0,0 +1,232 @@
|
||||
/* XPM */
|
||||
static const char * bitcoin32_xpm[] = {
|
||||
/* columns rows colors chars-per-pixel */
|
||||
"32 32 194 2",
|
||||
" c #745305",
|
||||
". c #785704",
|
||||
"X c #7C5903",
|
||||
"o c #75560B",
|
||||
"O c #77590F",
|
||||
"+ c #7C5C0B",
|
||||
"@ c #795B12",
|
||||
"# c #7F631D",
|
||||
"$ c #825E07",
|
||||
"% c #825F0B",
|
||||
"& c #85610A",
|
||||
"* c #8C660C",
|
||||
"= c #8E680E",
|
||||
"- c #916B0F",
|
||||
"; c #856515",
|
||||
": c #8B6714",
|
||||
"> c #8F6A16",
|
||||
", c #816218",
|
||||
"< c #88691C",
|
||||
"1 c #926D12",
|
||||
"2 c #936F1C",
|
||||
"3 c #997417",
|
||||
"4 c #94721E",
|
||||
"5 c #9B761C",
|
||||
"6 c #9F781C",
|
||||
"7 c #A17B1E",
|
||||
"8 c #826622",
|
||||
"9 c #916E20",
|
||||
"0 c #967425",
|
||||
"q c #9D7420",
|
||||
"w c #9C7923",
|
||||
"e c #997728",
|
||||
"r c #99792C",
|
||||
"t c #A37D23",
|
||||
"y c #A37F2C",
|
||||
"u c #A68125",
|
||||
"i c #AB8225",
|
||||
"p c #A5832B",
|
||||
"a c #AA852C",
|
||||
"s c #B28A2C",
|
||||
"d c #A58233",
|
||||
"f c #AC8734",
|
||||
"g c #AE8C33",
|
||||
"h c #AC8C3C",
|
||||
"j c #B28C33",
|
||||
"k c #B98E34",
|
||||
"l c #B28D3D",
|
||||
"z c #B59136",
|
||||
"x c #BC9335",
|
||||
"c c #B3913E",
|
||||
"v c #BC933A",
|
||||
"b c #BF9A3D",
|
||||
"n c #C19235",
|
||||
"m c #C2953C",
|
||||
"M c #C39B3C",
|
||||
"N c #CA9C3D",
|
||||
"B c #B59343",
|
||||
"V c #BE9642",
|
||||
"C c #B69A44",
|
||||
"Z c #BD9A45",
|
||||
"A c #B49649",
|
||||
"S c #BB9A49",
|
||||
"D c #BB9F52",
|
||||
"F c #BFA256",
|
||||
"G c #C49C43",
|
||||
"H c #CA9D41",
|
||||
"J c #C59D4A",
|
||||
"K c #C99E4D",
|
||||
"L c #C3A144",
|
||||
"P c #CDA244",
|
||||
"I c #CFAA47",
|
||||
"U c #C3A14D",
|
||||
"Y c #CDA24A",
|
||||
"T c #CCAB49",
|
||||
"R c #D2A644",
|
||||
"E c #D2A54B",
|
||||
"W c #D6AA4C",
|
||||
"Q c #DAAE4E",
|
||||
"! c #DAB04F",
|
||||
"~ c #C7A656",
|
||||
"^ c #CDA452",
|
||||
"/ c #CFAC52",
|
||||
"( c #C0A65E",
|
||||
") c #CEA75A",
|
||||
"_ c #CCAC59",
|
||||
"` c #D2AB53",
|
||||
"' c #DCAF52",
|
||||
"] c #D6AD5A",
|
||||
"[ c #D9AE5B",
|
||||
"{ c #DCB556",
|
||||
"} c #DFB855",
|
||||
"| c #D6B25F",
|
||||
" . c #DCB35C",
|
||||
".. c #DEBE5E",
|
||||
"X. c #E2B656",
|
||||
"o. c #E1B55A",
|
||||
"O. c #E6BC5D",
|
||||
"+. c #E9BD5E",
|
||||
"@. c #C3AA63",
|
||||
"#. c #CCAD62",
|
||||
"$. c #D4AF62",
|
||||
"%. c #CDB565",
|
||||
"&. c #CEB46D",
|
||||
"*. c #D7B164",
|
||||
"=. c #DBB362",
|
||||
"-. c #D6BD64",
|
||||
";. c #DDBA64",
|
||||
":. c #D3B66C",
|
||||
">. c #DFB86B",
|
||||
",. c #CEB772",
|
||||
"<. c #D0B771",
|
||||
"1. c #D4BA73",
|
||||
"2. c #D9BE77",
|
||||
"3. c #D6BE79",
|
||||
"4. c #D8BF7A",
|
||||
"5. c #E4BB62",
|
||||
"6. c #E9BF64",
|
||||
"7. c #E4BC69",
|
||||
"8. c #E9BF69",
|
||||
"9. c #E0BB71",
|
||||
"0. c #E9C05E",
|
||||
"q. c #D2C279",
|
||||
"w. c #DBC27C",
|
||||
"e. c #E2C667",
|
||||
"r. c #EDC364",
|
||||
"t. c #E3C16E",
|
||||
"y. c #ECC46C",
|
||||
"u. c #EDCC6C",
|
||||
"i. c #F1C764",
|
||||
"p. c #F5CA66",
|
||||
"a. c #F9CD67",
|
||||
"s. c #F5CC6A",
|
||||
"d. c #F9CD6B",
|
||||
"f. c #FBD36F",
|
||||
"g. c #EDC572",
|
||||
"h. c #E5CF77",
|
||||
"j. c #ECCA74",
|
||||
"k. c #E0C67E",
|
||||
"l. c #EFCE78",
|
||||
"z. c #F6CE72",
|
||||
"x. c #FBCF71",
|
||||
"c. c #F4CE79",
|
||||
"v. c #F4D273",
|
||||
"b. c #FCD473",
|
||||
"n. c #F4DC75",
|
||||
"m. c #FEDA74",
|
||||
"M. c #F6D77C",
|
||||
"N. c #FBD47A",
|
||||
"B. c #F1DA7B",
|
||||
"V. c #FDDA7C",
|
||||
"C. c #FEE27D",
|
||||
"Z. c #DDC683",
|
||||
"A. c #DFC884",
|
||||
"S. c #E4CA84",
|
||||
"D. c #E3CC89",
|
||||
"F. c #E7D183",
|
||||
"G. c #EFD280",
|
||||
"H. c #EFDC82",
|
||||
"J. c #ECD48D",
|
||||
"K. c #EFDA8C",
|
||||
"L. c #F9D783",
|
||||
"P. c #F2DF83",
|
||||
"I. c #FCDB83",
|
||||
"U. c #F5DC8F",
|
||||
"Y. c #FADD8B",
|
||||
"T. c #EBD593",
|
||||
"R. c #EFDA99",
|
||||
"E. c #F3DD93",
|
||||
"W. c #F3DF9F",
|
||||
"Q. c #FFE385",
|
||||
"!. c #FEE986",
|
||||
"~. c #FDE48C",
|
||||
"^. c #FEEC8E",
|
||||
"/. c #ECE199",
|
||||
"(. c #F6E591",
|
||||
"). c #FEE494",
|
||||
"_. c #FEEB93",
|
||||
"`. c #FEE69A",
|
||||
"'. c #FFEB9B",
|
||||
"]. c #FFF197",
|
||||
"[. c #FFF39B",
|
||||
"{. c #FEF99B",
|
||||
"}. c #F6E2A2",
|
||||
"|. c #F9E5A5",
|
||||
" X c #F7E9A5",
|
||||
".X c #FEECA4",
|
||||
"XX c #FBE7A8",
|
||||
"oX c #FDEAAB",
|
||||
"OX c #F7F2AA",
|
||||
"+X c #FEF2AC",
|
||||
"@X c #FDF4B4",
|
||||
"#X c #FFFABA",
|
||||
"$X c #FFFEC2",
|
||||
"%X c None",
|
||||
/* pixels */
|
||||
"%X%X%X%X%X%X%X%X%X%X%X%Xp t 6 5 w t w %X%X%X%X%X%X%X%X%X%X%X%X%X",
|
||||
"%X%X%X%X%X%X%X%X%Xu u x I X.0.s.u.0.W x 7 4 %X%X%X%X%X%X%X%X%X%X",
|
||||
"%X%X%X%X%X%X%Xy i I i.a.f.m.m.b.f.s.a.s.i.W 7 > %X%X%X%X%X%X%X%X",
|
||||
"%X%X%X%X%X%Xt M 0.a.m.m.m.m.f.d.p.p.p.f.d.f.i.b 1 < %X%X%X%X%X%X",
|
||||
"%X%X%X%X%X7 ! d.f.f.m.f.+.W P R I Q 5.v.V.V.z.f.{ 5 + %X%X%X%X%X",
|
||||
"%X%X%X%Xu X.f.m.m.f.' H s ~ V y _ Z J o.g.L.L.Q.!.e.5 X %X%X%X%X",
|
||||
"%X%X%Xu X.b.C.m.+.N m n t }.3.> }.w.V 5.y.y.Y.[.^.^.-.1 + %X%X%X",
|
||||
"%X%Xt P m.N.m.X.v v v k 6 }.1.: /.4.c 7.N.N.v.!.{.{.^.L & %X%X%X",
|
||||
"%X%Xg Y.Y.V.+.m k a t t : }.1.% }.1.r | l.B.M.b.!.{.^.n.7 X %X%X",
|
||||
"%Xp -._.'.Y.' Y n D.}.}.|.oXXX|.oX XT.w.F _ j.v.v._.^.C.T & @ %X",
|
||||
"%Xa (.'.'.9.[ [ K S.}.oXoXoXoXXXoXoXoXoX XD / s.d.v.!.C.v.3 o %X",
|
||||
"%XU '.'.Y.[ [ [ [ J f <.oXoX( 2 f S J.oXoXT.j r.s.i.C.C.C.z X %X",
|
||||
"p e.'.'.F. .=.=.=.=.) 1.oXoX@.f . .F oXoX}.a +.i.i.b.C.m.I X O ",
|
||||
"u w.'.[.j.5.8.7.7.7.] 2.oXoX@.y W c &.oXoXZ.k r.s.i.s.V.m.} = o ",
|
||||
"u H.[.{.y.8.y.g.8.g.7.2.oXoXA.@.&.D.oXoXT.e G +.O.O.5.V.m.0.- o ",
|
||||
"u !.].[.r.8.y.g.g.g.7.4.oXoXoXoXoXoXoXoXoX<.y W X.o.o.m.m.0.- o ",
|
||||
"u B._._.5.5.8.y.g.c.g.w.oXoX,.h A F <..XoXoX1.k ' ' ' V.N.r.- ",
|
||||
"u u.Q.~.r.6.z.N.V.I.v.k.oXoX@.B | _ c 1.oXoX}.a ' ' O.I.b.O.= o ",
|
||||
"u ..Q.Q.v.i.s.c.N.L.l.Z.oXoX@.B t.=.S &.oXoXXXy Y R +.N.b.Q % o ",
|
||||
"t T C.I.I.6.u.z.z.5.S 1.oXoX@.e B h D |.oXoXS.f Y Y 6.d.d.n X O ",
|
||||
"%Xs m.V.Q.r.r.z.5.<.}.oXoXoXXXW.}.oXoXoXoXW.h G H R a.p.s.7 %X",
|
||||
"%X7 O.V.V.v.+.r.` 4.oXoXoXoXoXoXoXoXXXR.<.h v N N o.a.p.Q = %X",
|
||||
"%Xw x v.v.v.r.+. .Z l d e }.Z.r }.3.d l V G n n R a.s.a.s X O %X",
|
||||
"%X%X6 { v.l.v.+.O.5.=.^ d }.4.9 }.1.f J G m m G d.d.x.Q = %X%X",
|
||||
"%X%X%Xs u.v.v.v.r.6.o. .l }.4.9 W.4.l ^ ^ J ) c.N.N.y.7 X O %X%X",
|
||||
"%X%X%X5 z v.v.M.I.g.;. .J 1.#.B 1.#.) 7.$.S..X'.W.Y.j $ %X%X%X",
|
||||
"%X%X%X%X5 b N.Y.~.).Y.j.5.$.=.=.$.*.2.J.@X$X#X#XoXC $ %X%X%X%X",
|
||||
"%X%X%X%X%X3 z U.@X+X`.`.`.(.E.E.E.|.@X@X#X#X#X/.j % %X%X%X%X%X",
|
||||
"%X%X%X%X%X%Xw a q.OX|.).`._.'.'.XX.X.X+X+X X%.w X o %X%X%X%X%X%X",
|
||||
"%X%X%X%X%X%X%X%Xw a _ j.~.~.).).`.`.`.F._ t & . # %X%X%X%X%X%X%X",
|
||||
"%X%X%X%X%X%X%X%X%X%X4 3 t z L U Z z t 1 $ . 8 %X%X%X%X%X%X%X%X%X",
|
||||
"%X%X%X%X%X%X%X%X%X%X%X%X%X< ; & + + , 8 %X%X%X%X%X%X%X%X%X%X%X%X"
|
||||
};
|
||||
292
share/pixmaps/bitcoin80.xpm
Normal file
@@ -0,0 +1,292 @@
|
||||
/* XPM */
|
||||
static const char * bitcoin80_xpm[] = {
|
||||
/* columns rows colors chars-per-pixel */
|
||||
"80 80 206 2",
|
||||
" c #725203",
|
||||
". c #785706",
|
||||
"X c #7B5907",
|
||||
"o c #7C5A09",
|
||||
"O c #7F5F10",
|
||||
"+ c #815E0B",
|
||||
"@ c #85620C",
|
||||
"# c #89650F",
|
||||
"$ c #856313",
|
||||
"% c #896614",
|
||||
"& c #8D6913",
|
||||
"* c #886718",
|
||||
"= c #8D6B1B",
|
||||
"- c #926D14",
|
||||
"; c #926E1B",
|
||||
": c #967116",
|
||||
"> c #997317",
|
||||
", c #95711E",
|
||||
"< c #9B7419",
|
||||
"1 c #9F781B",
|
||||
"2 c #A27B1D",
|
||||
"3 c #8F6F22",
|
||||
"4 c #926F21",
|
||||
"5 c #947323",
|
||||
"6 c #9A7623",
|
||||
"7 c #9D7925",
|
||||
"8 c #957628",
|
||||
"9 c #9A7729",
|
||||
"0 c #9D7B2B",
|
||||
"q c #9D7F33",
|
||||
"w c #A47D23",
|
||||
"e c #A97F27",
|
||||
"r c #A37E2B",
|
||||
"t c #9F8030",
|
||||
"y c #A78021",
|
||||
"u c #AC8425",
|
||||
"i c #A5802D",
|
||||
"p c #AC842B",
|
||||
"a c #AF8829",
|
||||
"s c #B2872C",
|
||||
"d c #B28B2D",
|
||||
"f c #A68333",
|
||||
"g c #AA8633",
|
||||
"h c #AD8A36",
|
||||
"j c #A4863A",
|
||||
"k c #A88638",
|
||||
"l c #A7893B",
|
||||
"z c #AC8B3B",
|
||||
"x c #B28732",
|
||||
"c c #B48C32",
|
||||
"v c #B98E34",
|
||||
"b c #B28D3B",
|
||||
"n c #B88F3C",
|
||||
"m c #B69033",
|
||||
"M c #BD9235",
|
||||
"N c #B4913D",
|
||||
"B c #BC943A",
|
||||
"V c #BE993C",
|
||||
"C c #C19336",
|
||||
"Z c #C1953B",
|
||||
"A c #C49A3C",
|
||||
"S c #C99C3D",
|
||||
"D c #CDA13F",
|
||||
"F c #D0A33F",
|
||||
"G c #A88B40",
|
||||
"H c #B08F40",
|
||||
"J c #AE9142",
|
||||
"K c #AE944C",
|
||||
"L c #B49443",
|
||||
"P c #BB9542",
|
||||
"I c #B49946",
|
||||
"U c #BD9846",
|
||||
"Y c #B3964C",
|
||||
"T c #BB974A",
|
||||
"R c #B6994A",
|
||||
"E c #BF9C4A",
|
||||
"W c #B69B53",
|
||||
"Q c #B99D53",
|
||||
"! c #BCA055",
|
||||
"~ c #BDA25A",
|
||||
"^ c #C49742",
|
||||
"/ c #C49C43",
|
||||
"( c #CB9E42",
|
||||
") c #C49D4B",
|
||||
"_ c #C99E4C",
|
||||
"` c #C29F52",
|
||||
"' c #C5A244",
|
||||
"] c #CDA245",
|
||||
"[ c #C5A34C",
|
||||
"{ c #CCA34B",
|
||||
"} c #CCA94D",
|
||||
"| c #D2A445",
|
||||
" . c #D1A54B",
|
||||
".. c #D5AA4E",
|
||||
"X. c #DBAF4F",
|
||||
"o. c #C6A352",
|
||||
"O. c #CBA554",
|
||||
"+. c #C5AA57",
|
||||
"@. c #CEAC54",
|
||||
"#. c #C4A65A",
|
||||
"$. c #CDA458",
|
||||
"%. c #C2A85F",
|
||||
"&. c #CEAA5B",
|
||||
"*. c #D0A550",
|
||||
"=. c #D4AB53",
|
||||
"-. c #DBAE53",
|
||||
";. c #D0A75B",
|
||||
":. c #D4AC5A",
|
||||
">. c #D9AE5C",
|
||||
",. c #CEB25E",
|
||||
"<. c #D4B156",
|
||||
"1. c #DDB156",
|
||||
"2. c #D4B25C",
|
||||
"3. c #DCB35D",
|
||||
"4. c #D7B85C",
|
||||
"5. c #DCBA5E",
|
||||
"6. c #E2B355",
|
||||
"7. c #E2B65B",
|
||||
"8. c #E4BA5D",
|
||||
"9. c #EABD5E",
|
||||
"0. c #C5AA62",
|
||||
"q. c #CCAE63",
|
||||
"w. c #C6AE69",
|
||||
"e. c #D5AF62",
|
||||
"r. c #CEB167",
|
||||
"t. c #CCB36C",
|
||||
"y. c #D5B162",
|
||||
"u. c #DCB462",
|
||||
"i. c #D7B964",
|
||||
"p. c #DCBC64",
|
||||
"a. c #D2B66B",
|
||||
"s. c #DCB669",
|
||||
"d. c #D7BE69",
|
||||
"f. c #DFB86A",
|
||||
"g. c #D0B771",
|
||||
"h. c #D2BA74",
|
||||
"j. c #D5BE78",
|
||||
"k. c #E1B766",
|
||||
"l. c #E4BB63",
|
||||
"z. c #E9BE63",
|
||||
"x. c #E3BB6A",
|
||||
"c. c #E9BF6A",
|
||||
"v. c #E1BE72",
|
||||
"b. c #DDC16B",
|
||||
"n. c #DAC27E",
|
||||
"m. c #E4C164",
|
||||
"M. c #ECC264",
|
||||
"N. c #E4C36B",
|
||||
"B. c #EBC36C",
|
||||
"V. c #E7C96F",
|
||||
"C. c #EECA6E",
|
||||
"Z. c #F1C564",
|
||||
"A. c #F1C76A",
|
||||
"S. c #F5CB6C",
|
||||
"D. c #FACE6D",
|
||||
"F. c #F4D06F",
|
||||
"G. c #FCD06E",
|
||||
"H. c #E5C371",
|
||||
"J. c #EDC573",
|
||||
"K. c #E4CA73",
|
||||
"L. c #ECCC74",
|
||||
"P. c #E7CF7A",
|
||||
"I. c #EBCD7A",
|
||||
"U. c #F3CD73",
|
||||
"Y. c #F8CE71",
|
||||
"T. c #F3CD7A",
|
||||
"R. c #EDD076",
|
||||
"E. c #EDD17B",
|
||||
"W. c #F4D274",
|
||||
"Q. c #FBD274",
|
||||
"!. c #FED977",
|
||||
"~. c #F3D47B",
|
||||
"^. c #FDD47A",
|
||||
"/. c #F5DA7C",
|
||||
"(. c #FDDA7C",
|
||||
"). c #FFE07F",
|
||||
"_. c #DBC481",
|
||||
"`. c #DFC885",
|
||||
"'. c #E1CA86",
|
||||
"]. c #EACC80",
|
||||
"[. c #E4CD8A",
|
||||
"{. c #EED383",
|
||||
"}. c #E7D18F",
|
||||
"|. c #EAD38C",
|
||||
" X c #F4D680",
|
||||
".X c #FDD780",
|
||||
"XX c #F5DA83",
|
||||
"oX c #FCDC84",
|
||||
"OX c #F5DB8A",
|
||||
"+X c #FADE89",
|
||||
"@X c #EAD492",
|
||||
"#X c #EED896",
|
||||
"$X c #EFDA9A",
|
||||
"%X c #F1DD9D",
|
||||
"&X c #FDE283",
|
||||
"*X c #F6E18D",
|
||||
"=X c #FEE48D",
|
||||
"-X c #FFE692",
|
||||
";X c #FFE894",
|
||||
":X c #FBE799",
|
||||
">X c #FFEA98",
|
||||
",X c #F6E2A3",
|
||||
"<X c #FAE6A6",
|
||||
"1X c #FAE7A8",
|
||||
"2X c #FDEAAB",
|
||||
"3X c None",
|
||||
/* pixels */
|
||||
"3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X",
|
||||
"3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X",
|
||||
"3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X",
|
||||
"3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X",
|
||||
"3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X",
|
||||
"3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3Xu u u u u u u y y u y 3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X",
|
||||
"3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3Xu u u u u u u u u a u u u u u u a u u 2 3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X",
|
||||
"3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3Xu u u u u u u u s m V D ' { ' D M d u u a u u u u 2 3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X",
|
||||
"3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3Xu u u u u u M } m.~.oX=X=X=X=X=X-X-X=X&X/.m.=.V u u a u u w 3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X",
|
||||
"3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3Xu u u u u M 4.~.=X=X=X=X=X=X=X=X=X=X=X=X=X=X=X=X=X=X/.5.Z u u u u u 3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X",
|
||||
"3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3Xu u u u ] V.&X=X=X&X=X=X=X=X=X=X=X=X=X&X=X=X=X=X=X=X=X=X=X=XW.} a u u u 2 3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X",
|
||||
"3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3Xu a u u ' W.=X=X=X=X=X=X=X=X=X=X=X=X=X=X=X=X=X=X=X=X+X=X=X=X&X=X=X=X~.} a u u u < 3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X",
|
||||
"3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3Xu u u M N.=X&X=X=X=X=X=X=X=X-X=X=X=X=X&X=X=X=XoX=X=X=X=X&X+X=X=X=X=X=X=X=XL.M u u u < 3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X",
|
||||
"3X3X3X3X3X3X3X3X3X3X3X3X3X3X3Xu u u u } XX=X=X=X&X=X=X=X=X=X=X=X=X=X=X=X=X=X=X=X*X=X=X=X=X=X=X=X=X=X=X=X=X=X=XoX<.a u u 2 3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X",
|
||||
"3X3X3X3X3X3X3X3X3X3X3X3X3X3Xu u u s m.&X=X=X=X=X=X=X=X=X=X=X=X=X=X/.L.M.m.9.m.9.m.C.~.&X*X=X=X=X=X=X=X=X=X=X=X=X=XV.m u u 2 o 3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X",
|
||||
"3X3X3X3X3X3X3X3X3X3X3X3X3Xu u u c R.=X=X=X=X=X=X=X=X=X=X=XoXC.1.| S S A S D D D D ] ] ..<.N./.=X-X=X-X=X=X=X=X=X=X=XXXZ u a 2 o 3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X",
|
||||
"3X3X3X3X3X3X3X3X3X3X3X3Xu u u m XX=X=X=X=X=X=X=X=X=X=XW.3.| ^ A C M M M C S S A A A / ( { =.<.l.I.=X-X-X=X=X=X=X=X=X=X=XV a u 2 . 3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X",
|
||||
"3X3X3X3X3X3X3X3X3X3X3X3Xu u m /.=X=X=X-X=X=X=X=X=X~.1.D ] S Z v x p s u s d d v c c v V { =.7.8.7.l.T.=X-X=X-X-X-X-X-X=X=XV u a 1 3X3X3X3X3X3X3X3X3X3X3X3X3X3X",
|
||||
"3X3X3X3X3X3X3X3X3X3X3Xu u d /.=X=X=X=X=X=X=X=X&X8.^ A ( S M v e $.r.e.r.u w i a.a.a.&.b ^ =.l.l.l.c.z.z.XX-X-X-X-X=X-X-X;X&XV u u : 3X3X3X3X3X3X3X3X3X3X3X3X3X",
|
||||
"3X3X3X3X3X3X3X3X3X3Xu u s R.=X=X=X=X=X=X=X=XU.{ ^ Z C ( A M u w [.2X2X2X0 - 7 2X2X1X@Xi P *.l.x.B.U.C.z.z.W.-X-X-X-X-X-X=X-X*Xd a u # . 3X3X3X3X3X3X3X3X3X3X3X3X",
|
||||
"3X3X3X3X3X3X3X3X3Xu u u l.=X=X=X=X-X=X=X=Xm.Z Z Z Z n Z Z v e , '.2X2X2X5 & ; 2X2X2X}.7 b { 3.x.^.^.^.Y.A.z.R.-X;X;X;X;X-X;X-XP.a u y . 3X3X3X3X3X3X3X3X3X3X3X3X",
|
||||
"3X3X3X3X3X3X3X3X3Xu u } -X-X=X-X=X=X=X=Xl.M M Z C C C C C x e ; '.2X2X2X, $ = 2X2X2X}.6 h ) >.J..X.X.X.X(.W.Z.C.&X;X;X;X;X-X-X-X<.u u < 3X3X3X3X3X3X3X3X3X3X3X",
|
||||
"3X3X3X3X3X3X3X3Xu u c oX=X=X=X=X=X=X=Xl.Z C M M C C v v v s w = '.2X2X2X5 $ = 2X2X2X}.5 g ) u./.+X+X=X=X=X&XW.Z.F.=X;X;X;X;X-X-X*XV u y @ X 3X3X3X3X3X3X3X3X3X3X",
|
||||
"3X3X3X3X3X3X3Xu u u N.-X-X-X-X=X=X=XB.Z M C v v s e e e e w > % `.2X2X2X= + % 2X2X2X}.= r L 4.E.OX+X-X=X=X&X).W.M.R.;X;X;X-X-X-X;XR.u u y 3X3X3X3X3X3X3X3X3X3X",
|
||||
"3X3X3X3X3X3X3Xu u U -X-X-X-X-X-X=XW.^ C C C x e e r 6 5 4 ; = $ `.2X2X2X= O = 2X2X2X}.O = t Q ,.b.P./.*X=X&X&X).F.M.W.;X;X;X;X&X-X&X} u u O 3X3X3X3X3X3X3X3X3X",
|
||||
"3X3X3X3X3X3Xu u u R.-X-X-X-X-X-X=X=.{ ^ Z C x n 2X2X<X<X1X2X<X<X2X2X2X2X1X1X<X2X2X2X<X$X[.b.~ J I ~ b.P.&X&X&X).!.F.m.).;X;X;X;X;X&X).u y y 3X3X3X3X3X3X3X3X3X",
|
||||
"3X3X3X3X3X3Xu u U -X-X-X-X-X-X-Xc.=.=. ._ ^ x z 2X2X1X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X<Xn.l I ,.K./.).).).F.Z.Z.&X;X;X=X-X-X&X} u u O 3X3X3X3X3X3X3X3X",
|
||||
"3X3X3X3X3X3Xu u V.-X;X-X-X-X-XOX>.>.>.=.=._ n b 2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X:XI N +.V./.).).F.F.9.W.;X=X;X-X-X-XR.u u > 3X3X3X3X3X3X3X3X",
|
||||
"3X3X3X3X3Xu u d =X;X-X-X-X-X-Xx.>.>.>.>.>...^ P 2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X,Xl N 4.R.!.!.!.G.Z.M.&X;X=X=X-X-X-XB a u 3X3X3X3X3X3X3X",
|
||||
"3X3X3X3X3Xu u @.;X;X-X;X;X;XXX>.:.>.>.>.>.>._ P ` Y Y W _.2X2X2X2X2X2X@XW W ~ 0.t.'.<X2X2X2X2X2X2X2X2X'.0 ' m./.!.!.Q.S.9.F.=X;X-X=X-X&X4.u u @ 3X3X3X3X3X3X3X",
|
||||
"3X3X3X3X3Xu u P.;X;X;X;X-X:XN.>.>.>.>.>.>.>.=._ P z r 4 8 2X2X2X2X2X2X_.. $ , 6 1 3 t ~ 1X2X2X2X2X2X2X2Xt B 5.G.!.!.G.G.M.9.&X;X=X-X-X=X/.u u > 3X3X3X3X3X3X3X",
|
||||
"3X3X3X3Xu u d =X;X;X=X;X;X=X3.>.>.>.e.>.3.3.>.:.*._ P r 9 2X2X2X2X2X1Xn.@ , c B N m h 8 ~ 2X2X2X2X2X2X2XI h <.F.!.G.G.F.M.9.W.;X=X-X-X=X=Xm u y . 3X3X3X3X3X3X",
|
||||
"3X3X3X3Xu u ' -X-X>X-X-X-X X>.>.>.>.>.>.>.u.u.u.u.3.$.P f 2X2X2X2X2X2X_.$ i / -.<.8.} h 8 1X2X2X2X2X2X2X! i <.S.G.G.G.G.Z.9.Z.=X-X=X-X&X-X} u u X 3X3X3X3X3X3X",
|
||||
"3X3X3X3Xu u 4.-X-X-X-X-X-XJ.3.>.>.k.k.k.k.k.u.k.u.u.:.U k 2X2X2X2X2X1X_.% f } 8.Z.F.8.U 8 ,X2X2X2X2X2X2XI g } Z.D.G.D.G.D.Z.9.&X-X=X=X=X-Xm.u u @ 3X3X3X3X3X3X",
|
||||
"3X3X3X3Xu u K.;X-X;X-X>X-Xk.3.k.k.k.k.k.k.k.k.k.k.u.e.U k 2X2X2X2X2X2X_.% f [ 8.F.M.<.b i 2X2X2X2X2X2X2Xt a X.Z.D.D.D.G.G.Z.9./.=X-X=X=X=XR.u u & 3X3X3X3X3X3X",
|
||||
"3X3X3X3Xu u E.;X-X;X-X-X=Xl.l.x.c.k.x.k.k.x.x.v.x.x.u.) z 2X2X2X2X2X2X_.$ 7 L <.<.} N 6 h.2X2X2X2X2X2X_.: V 1.S.D.D.G.D.S.M.6.W.-X=X-X=X=X&Xu u > X 3X3X3X3X3X",
|
||||
"3X3X3Xu a u =X;X;X;X;X;XoX7.z.c.c.c.c.c.c.c.c.c.x.k.u.) z 2X2X2X2X2X2Xn.o = i N h i l n.2X2X2X2X2X2X<Xt t D 7.M.Z.z.z.9.9.9.6.M.-X=X=X=X;X=Xm u 1 3X3X3X3X3X",
|
||||
"3X3X3Xy u a =X;X;X;X;X;XXXl.z.c.c.c.c.T.J.J.T.v.J.J.s.` z 2X2X2X2X2X2X#XW ~ ~ t.n.$X2X2X2X2X2X2X2X,Xt % t V X.8.9.8.9.9.9.6.6.M.-X=X=X=X=X&XM u 2 3X3X3X3X3X",
|
||||
"3X3X3Xu u m -X-X-X;X;X;X~.z.z.c.c.c.c..XJ.J.J.J.J.J.x.O.b 2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2Xw.$ * y V X.7.8.8.9.7.8.7.6.8.=X=X-X-X=X-XV a y 3X3X3X3X3X",
|
||||
"3X3X3Xu a m -X-X-X;X;X;X~.7.z.c.c.c.c.c.c.J.T.J.T.J.B.O.b 2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X,X~ , c ' X.6.6.7.6.6.6.6.8.=X=X=X-X&X-XV u y 3X3X3X3X3X",
|
||||
"3X3X3Xu u m -X-X-X-X-X-X/.8.l.z.c.T.c.J.c.J.T.v.J.J.x.O.G 2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2Xn.r v { 6.6.6.6.6.6.-.7.&X-X=X=X=X-XD u y 3X3X3X3X3X",
|
||||
"3X3X3Xu u d =X-X-X-X-X-X~.7.z.z.c.c.c.c.c.J.c.T.T.^.T.y.R 2X2X2X2X2X2X@XK K W W W ~ h.#X1X2X2X2X2X2X2X2X2Xa.i Z ..X.6.6.-.-.6.7.-X-X-X-X-X-XD u 2 3X3X3X3X3X",
|
||||
"3X3X3Xw u a =X-X-X-X-X-X~.7.7.8.c.c.c.c.T..X.X+X+X+XXXi.R 2X2X2X2X2X2Xn.. * 5 8 5 3 = * q `.2X2X2X2X2X2X2X<Xk c | X.6.-.-.-.-.z.&X;X=X;X-X;XV u w 3X3X3X3X3X",
|
||||
"3X3X3Xu u u =X-X=X-X-X-X/.8.M.B.Y.T.^.^.^..X.XoXoX+XXXi.R 2X2X2X2X2X2X_.$ 0 b U U N l t 5 $ `.2X2X2X2X2X2X2X0.e Z .....-.-.6.c.;X=X;X=X;X-Xd u 1 3X3X3X3X3X",
|
||||
"3X3X3X3Xu a E.-X-X-X-X-X=Xz.S.D.Y.^.Q.^.^.^..XoX+X+XXXi.R 2X2X2X2X2X2X_.= l +.u.i.,.O.E h 5 G 2X2X2X2X2X2X2X_.0 n | . .*. .*.T.-X;X;X;X-X=Xa u : 3X3X3X3X3X",
|
||||
"3X3X3X3Xu u N.-X-X-X=X-X-XA.Z.S.Y.Q.Q.^.^..X.XoXoX&X.Xi.R 2X2X2X2X2X2X_.= N y.H.H.m.i.y.E f 8 2X2X2X2X2X2X2X'.6 n | . . . . ..X;X;X;X;X-X~.u u & 3X3X3X3X3X",
|
||||
"3X3X3X3Xu u <.-X-X=X=X-X-XW.Z.S.Y.Y.Q.^.^.^.(..XoX=XXXi.R 2X2X2X2X2X2X_.= L 4.H.J.H.x.i.o.k j 2X2X2X2X2X2X2X_.6 B . . . .{ =.-X;X-X;X-X-Xb.a u @ 3X3X3X3X3X",
|
||||
"3X3X3X3Xy a V =X=X-X-X=X-XXXZ.S.Y.Y.Y.Q.!.^..X.XoXoXE.y.I 2X2X2X2X2X2X_.= J y.b.H.N.p.&.P 0 g.2X2X2X2X2X2X2Xr.r B _ { .| ] l.-X;X;X-X-X;X..u u . . 3X3X3X3X3X",
|
||||
"3X3X3X3Xy u a =X=X=X=X-X=X-XM.Z.S.Y.Y.Q.Q.^.^.^.U.J.u.E l 2X2X2X2X2X2X_.* k o.e.e.$.` P q W 1X2X2X2X2X2X2X2XG i B ] | ] ] ( ~.=X;X;X;X;X;XM u y 3X3X3X3X3X3X",
|
||||
"3X3X3X3X3Xu u V.-X=X-X=X-X-XF.M.A.D.Y.Q.Y.Q.Y.B.2.[ N 0 j 2X2X2X2X2X2X_.O 5 l G z H H Q _.2X2X2X2X2X2X2X2X#X, g ^ ] ] | ] ..-X-X-X-X&X;X).u u : 3X3X3X3X3X3X",
|
||||
"3X3X3X3X3Xu u } =X=X=X=X-X=X&XM.Z.S.D.W.Q.Y.B.*.a.#X@X|.,X2X2X2X2X2X2X,X[.[.}.}.%X<X2X2X2X2X2X2X2X2X2X2X<Xj 6 b / ] ] ] ] M.-X-X-X-X-X-X4.u u O 3X3X3X3X3X3X",
|
||||
"3X3X3X3X3Xy u d =X=X=X=X=X=X-XS.M.A.S.S.U.A.u.) n.2X2X2X2X2X2X2X2X2X2X2X2X1X2X2X2X2X2X2X2X2X2X2X2X2X2X2XW ; i M ( S S S ] &X-X-X-X-X=X-Xm u y . X 3X3X3X3X3X3X",
|
||||
"3X3X3X3X3X3Xu u p.=X=X=X=X=X-X&X9.Z.C.S.S.M.:.b [.2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X%XG = r x v C D D D m.-X-X-X-X-X-XR.u u : 3X3X3X3X3X3X3X",
|
||||
"3X3X3X3X3X3Xy u B =X=X=X=X=X=X=XF.9.M.A.C.M.=.h %X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X1X#X~ 4 ; r p v v M C A | &X-X-X-X-X-X-X] u u X 3X3X3X3X3X3X3X",
|
||||
"3X3X3X3X3X3Xy u u N.=X=X-X=X-X=X=XM.z.M.M.M.1.V #X%X%X%X%X$X%X%X<X2X2X2X%X$X%X2X2X2X<X[.n.t.W q = , r i x v C C C M C W.-X-X-X-X-X-X/.u u 1 X 3X3X3X3X3X3X3X",
|
||||
"3X3X3X3X3X3X3Xu u V *X=X=X*X=X=X=XoX8.M.M.M.5.{ m r , ; $ $ o o `.2X2X2X3 o $ 2X2X2X[.o $ 4 9 0 r g x v m C M C C C 8.&X-X-X-X-X-X-X[ u u @ 3X3X3X3X3X3X3X3X",
|
||||
"3X3X3X3X3X3X3X2 u u 5.=X=X=X=X=X=X=XI.8.M.M.z.3.O.) P b r 0 4 % `.2X2X2X3 $ * 2X2X2X[.$ 4 r e ^ n n Z Z Z C C C M | =X=X-X-X-X-X-XR.u u < 3X3X3X3X3X3X3X3X",
|
||||
"3X3X3X3X3X3X3X3Xy u d XX=X=X=X=X-X=X=XS.8.8.M.M.z.z.7.{ _ U g 5 `.2X2X2X8 = 3 2X2X2X}.3 0 x ^ _ ^ ^ ^ Z ^ B ^ C .&X-X-X-X-X-X-X=XB u u o 3X3X3X3X3X3X3X3X3X",
|
||||
"3X3X3X3X3X3X3X3X1 u u ' =X=X*X=X=X*X=X=XW.8.M.M.A.S.l.u.>.o.L r [.2X2X2X9 = 8 2X2X2X}.4 r ^ _ *.*._ ) ) ^ ^ ^ O.oX=X-X-X-X-X-X-X<.u u : . 3X3X3X3X3X3X3X3X3X",
|
||||
"3X3X3X3X3X3X3X3X3Xy u u i.=X=X=X=X=X-X*X=XW.9.M.A.B.3.5.5.;.U f [.2X2X2Xq 4 8 2X2X2X}.r q _ _ ;.;.*._ _ ` _ e.+X-X-X-X-X-X-X-XR.a u 2 3X3X3X3X3X3X3X3X3X3X",
|
||||
"3X3X3X3X3X3X3X3X3X3Xu u u K.=X=X=X-X=X=X=X=XXXz.M.8.5.8.u.:.) h }.2X2X2Xj r f 2X2X2X@Xq T _ e.e.u.e.;.$.$.b.-X-X-X=X;X=X;X-X&Xa a u + 3X3X3X3X3X3X3X3X3X3X3X",
|
||||
"3X3X3X3X3X3X3X3X3X3X3Xu u d ~.=X=X=X=X=X-X=X-X+XC.3.5.7.7.2.@.) q.r.q.q.H H L g.r.w.q.T ` e.k.v.k.k.s.s.{.-X-X;X-X;X;X;X;X*XV u u & . 3X3X3X3X3X3X3X3X3X3X3X",
|
||||
"3X3X3X3X3X3X3X3X3X3X3X2 u u c XX-X=X=X=X=X-X=X-X-X Xl.7.7.u.2.$.o.[ [ o.O.$.&.&.` ` ` q.s.k.v.k.k.x.{.%X>X>X>X;X>X;X>X>X*XV u u > 3X3X3X3X3X3X3X3X3X3X3X3X",
|
||||
"3X3X3X3X3X3X3X3X3X3X3X3X2 u u m ~.=X-X-X-X=X-X-X-X-X-X Xc.7.5.u.3.e.y.u.s.f.k.s.e.e.s.s.k.k.k.v. X:X>X>X>X>X>X>X;X>X>X*XV u u < 3X3X3X3X3X3X3X3X3X3X3X3X3X",
|
||||
"3X3X3X3X3X3X3X3X3X3X3X3X3X2 u u d R.-X=X-X=X-X-X-X-X-X-X-X+XI.v.u.s.l.k.k.x.x.x.s.s.s.s.j.].+X>X>X>X>X>X:X>X>X>X>X>XOXV u u 1 3X3X3X3X3X3X3X3X3X3X3X3X3X3X",
|
||||
"3X3X3X3X3X3X3X3X3X3X3X3X3X3X2 u u a p.-X-X-X;X;X;X-X-X-X:X-X-X-X-XOX XL.J.J.J.L.I.].OX:X>X-X>X>X-X>X>X>X>X>X>X>X>XK.a a u < 3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X",
|
||||
"3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X2 u u u @.=X;X;X>X;X-X-X>X-X-X-X-X;X-X-X-X-X-X>X>X-X>X-X>X>X>X>X;X>X>X>X-X>X-X-X:X<.u u u > 3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X",
|
||||
"3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X1 u u u m n.>X;X>X>X-X-X-X-X>X-X-X-X;X;X;X-X-X-X-X-X>X-X-X>X-X>X>X-X>X>X>X>XK.B u u u & 3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X",
|
||||
"3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3Xw u u u / {.>X>X-X-X-X-X-X-X-X-X-X-X;X-X-X;X:X-X-X>X-X:X>X;X;X>X;X;X{.[ u u u w + 3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X",
|
||||
"3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X2 u u u u ) K.-X-X-X-X:X-X-X-X-X-X-X-X-X-X-X-X-X>X-X-X-X-X-X-XE.[ u u u u - . 3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X",
|
||||
"3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X1 u u u u m 2.E.-X+X:X-X-X-X-X-X-X-X-X-X:X-X-X-X;X-XOXi.B u u u u 1 o 3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X",
|
||||
"3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X> u u u u u v [ l.I.OX-X-X-X-X-X-X-X-X+XI.f.@.m u u u u u 1 + o 3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X",
|
||||
"3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X& 2 u u u u u u u d B V V V V B d u u u u u u u y - . o 3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X",
|
||||
"3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X+ - 1 u u u u u u u a u u u u u u u u 2 - o o 3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X",
|
||||
"3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3Xo . X # - > 1 2 2 2 1 2 > - # o . o 3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X",
|
||||
"3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3Xo o . o 3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X",
|
||||
"3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X",
|
||||
"3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X",
|
||||
"3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X",
|
||||
"3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X"
|
||||
};
|
||||
23
src/base58.h
@@ -21,7 +21,7 @@
|
||||
|
||||
static const char* pszBase58 = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";
|
||||
|
||||
|
||||
// Encode a byte sequence as a base58-encoded string
|
||||
inline std::string EncodeBase58(const unsigned char* pbegin, const unsigned char* pend)
|
||||
{
|
||||
CAutoBN_CTX pctx;
|
||||
@@ -62,11 +62,14 @@ inline std::string EncodeBase58(const unsigned char* pbegin, const unsigned char
|
||||
return str;
|
||||
}
|
||||
|
||||
// Encode a byte vector as a base58-encoded string
|
||||
inline std::string EncodeBase58(const std::vector<unsigned char>& vch)
|
||||
{
|
||||
return EncodeBase58(&vch[0], &vch[0] + vch.size());
|
||||
}
|
||||
|
||||
// Decode a base58-encoded string psz into byte vector vchRet
|
||||
// returns true if decoding is succesful
|
||||
inline bool DecodeBase58(const char* psz, std::vector<unsigned char>& vchRet)
|
||||
{
|
||||
CAutoBN_CTX pctx;
|
||||
@@ -113,6 +116,8 @@ inline bool DecodeBase58(const char* psz, std::vector<unsigned char>& vchRet)
|
||||
return true;
|
||||
}
|
||||
|
||||
// Decode a base58-encoded string str into byte vector vchRet
|
||||
// returns true if decoding is succesful
|
||||
inline bool DecodeBase58(const std::string& str, std::vector<unsigned char>& vchRet)
|
||||
{
|
||||
return DecodeBase58(str.c_str(), vchRet);
|
||||
@@ -121,7 +126,7 @@ inline bool DecodeBase58(const std::string& str, std::vector<unsigned char>& vch
|
||||
|
||||
|
||||
|
||||
|
||||
// Encode a byte vector to a base58-encoded string, including checksum
|
||||
inline std::string EncodeBase58Check(const std::vector<unsigned char>& vchIn)
|
||||
{
|
||||
// add 4-byte hash check to the end
|
||||
@@ -131,6 +136,8 @@ inline std::string EncodeBase58Check(const std::vector<unsigned char>& vchIn)
|
||||
return EncodeBase58(vch);
|
||||
}
|
||||
|
||||
// Decode a base58-encoded string psz that includes a checksum, into byte vector vchRet
|
||||
// returns true if decoding is succesful
|
||||
inline bool DecodeBase58Check(const char* psz, std::vector<unsigned char>& vchRet)
|
||||
{
|
||||
if (!DecodeBase58(psz, vchRet))
|
||||
@@ -150,6 +157,8 @@ inline bool DecodeBase58Check(const char* psz, std::vector<unsigned char>& vchRe
|
||||
return true;
|
||||
}
|
||||
|
||||
// Decode a base58-encoded string str that includes a checksum, into byte vector vchRet
|
||||
// returns true if decoding is succesful
|
||||
inline bool DecodeBase58Check(const std::string& str, std::vector<unsigned char>& vchRet)
|
||||
{
|
||||
return DecodeBase58Check(str.c_str(), vchRet);
|
||||
@@ -159,11 +168,14 @@ inline bool DecodeBase58Check(const std::string& str, std::vector<unsigned char>
|
||||
|
||||
|
||||
|
||||
|
||||
// Base class for all base58-encoded data
|
||||
class CBase58Data
|
||||
{
|
||||
protected:
|
||||
// the version byte
|
||||
unsigned char nVersion;
|
||||
|
||||
// the actually encoded data
|
||||
std::vector<unsigned char> vchData;
|
||||
|
||||
CBase58Data()
|
||||
@@ -174,6 +186,7 @@ protected:
|
||||
|
||||
~CBase58Data()
|
||||
{
|
||||
// zero the memory, as it may contain sensitive data
|
||||
if (!vchData.empty())
|
||||
memset(&vchData[0], 0, vchData.size());
|
||||
}
|
||||
@@ -238,7 +251,9 @@ public:
|
||||
bool operator> (const CBase58Data& b58) const { return CompareTo(b58) > 0; }
|
||||
};
|
||||
|
||||
|
||||
// base58-encoded bitcoin addresses
|
||||
// Addresses have version 0 or 111 (testnet)
|
||||
// The data vector contains RIPEMD160(SHA256(pubkey)), where pubkey is the serialized public key
|
||||
class CBitcoinAddress : public CBase58Data
|
||||
{
|
||||
public:
|
||||
|
||||
@@ -160,10 +160,13 @@ Value stop(const Array& params, bool fHelp)
|
||||
throw runtime_error(
|
||||
"stop\n"
|
||||
"Stop bitcoin server.");
|
||||
|
||||
#ifndef QT_GUI
|
||||
// Shutdown will take long enough that the response should get back
|
||||
CreateThread(Shutdown, NULL);
|
||||
return "bitcoin server stopping";
|
||||
#else
|
||||
throw runtime_error("NYI: cannot shut down GUI with RPC command");
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@@ -1554,6 +1557,11 @@ Value encryptwallet(const Array& params, bool fHelp)
|
||||
if (pwalletMain->IsCrypted())
|
||||
throw JSONRPCError(-15, "Error: running with an encrypted wallet, but encryptwallet was called.");
|
||||
|
||||
#ifdef QT_GUI
|
||||
// shutting down via RPC while the GUI is running does not work (yet):
|
||||
throw runtime_error("Not Yet Implemented: use GUI to encrypt wallet, not RPC command");
|
||||
#endif
|
||||
|
||||
string strWalletPass;
|
||||
strWalletPass.reserve(100);
|
||||
mlock(&strWalletPass[0], strWalletPass.capacity());
|
||||
@@ -1573,7 +1581,11 @@ Value encryptwallet(const Array& params, bool fHelp)
|
||||
fill(strWalletPass.begin(), strWalletPass.end(), '\0');
|
||||
munlock(&strWalletPass[0], strWalletPass.capacity());
|
||||
|
||||
return Value::null;
|
||||
// BDB seems to have a bad habit of writing old data into
|
||||
// slack space in .dat files; that is bad if the old data is
|
||||
// unencrypted private keys. So:
|
||||
CreateThread(Shutdown, NULL);
|
||||
return "wallet encrypted; bitcoin server stopping, restart to run with encrypted wallet";
|
||||
}
|
||||
|
||||
|
||||
@@ -2175,11 +2187,13 @@ void ThreadRPCServer2(void* parg)
|
||||
else if (mapArgs.count("-daemon"))
|
||||
strWhatAmI = strprintf(_("To use the %s option"), "\"-daemon\"");
|
||||
PrintConsole(
|
||||
_("Warning: %s, you must set rpcpassword=<password>\nin the configuration file: %s\n"
|
||||
_("Error: %s, you must set rpcpassword=<password>\nin the configuration file: %s\n"
|
||||
"If the file does not exist, create it with owner-readable-only file permissions.\n"),
|
||||
strWhatAmI.c_str(),
|
||||
GetConfigFile().c_str());
|
||||
#ifndef QT_GUI
|
||||
CreateThread(Shutdown, NULL);
|
||||
#endif
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -13,15 +13,15 @@ const unsigned int WALLET_CRYPTO_SALT_SIZE = 8;
|
||||
Private key encryption is done based on a CMasterKey,
|
||||
which holds a salt and random encryption key.
|
||||
|
||||
CMasterKeys is encrypted using AES-256-CBC using a key
|
||||
CMasterKeys are encrypted using AES-256-CBC using a key
|
||||
derived using derivation method nDerivationMethod
|
||||
(0 == EVP_sha512()) and derivation iterations nDeriveIterations.
|
||||
vchOtherDerivationParameters is provided for alternative algorithms
|
||||
which may require more parameters (such as scrypt).
|
||||
|
||||
Wallet Private Keys are then encrypted using AES-256-CBC
|
||||
with the double-sha256 of the private key as the IV, and the
|
||||
master key's key as the encryption key.
|
||||
with the double-sha256 of the public key as the IV, and the
|
||||
master key's key as the encryption key (see keystore.[ch]).
|
||||
*/
|
||||
|
||||
class CMasterKey
|
||||
|
||||
133
src/db.cpp
@@ -28,6 +28,23 @@ DbEnv dbenv(0);
|
||||
static map<string, int> mapFileUseCount;
|
||||
static map<string, Db*> mapDb;
|
||||
|
||||
static void EnvShutdown()
|
||||
{
|
||||
if (!fDbEnvInit)
|
||||
return;
|
||||
|
||||
fDbEnvInit = false;
|
||||
try
|
||||
{
|
||||
dbenv.close(0);
|
||||
}
|
||||
catch (const DbException& e)
|
||||
{
|
||||
printf("EnvShutdown exception: %s (%d)\n", e.what(), e.get_errno());
|
||||
}
|
||||
DbEnv(0).remove(GetDataDir().c_str(), 0);
|
||||
}
|
||||
|
||||
class CDBInit
|
||||
{
|
||||
public:
|
||||
@@ -36,11 +53,7 @@ public:
|
||||
}
|
||||
~CDBInit()
|
||||
{
|
||||
if (fDbEnvInit)
|
||||
{
|
||||
dbenv.close(0);
|
||||
fDbEnvInit = false;
|
||||
}
|
||||
EnvShutdown();
|
||||
}
|
||||
}
|
||||
instance_of_cdbinit;
|
||||
@@ -165,6 +178,101 @@ void static CloseDb(const string& strFile)
|
||||
}
|
||||
}
|
||||
|
||||
bool CDB::Rewrite(const string& strFile, const char* pszSkip)
|
||||
{
|
||||
while (!fShutdown)
|
||||
{
|
||||
CRITICAL_BLOCK(cs_db)
|
||||
{
|
||||
if (!mapFileUseCount.count(strFile) || mapFileUseCount[strFile] == 0)
|
||||
{
|
||||
// Flush log data to the dat file
|
||||
CloseDb(strFile);
|
||||
dbenv.txn_checkpoint(0, 0, 0);
|
||||
dbenv.lsn_reset(strFile.c_str(), 0);
|
||||
mapFileUseCount.erase(strFile);
|
||||
|
||||
bool fSuccess = true;
|
||||
printf("Rewriting %s...\n", strFile.c_str());
|
||||
string strFileRes = strFile + ".rewrite";
|
||||
{ // surround usage of db with extra {}
|
||||
CDB db(strFile.c_str(), "r");
|
||||
Db* pdbCopy = new Db(&dbenv, 0);
|
||||
|
||||
int ret = pdbCopy->open(NULL, // Txn pointer
|
||||
strFileRes.c_str(), // Filename
|
||||
"main", // Logical db name
|
||||
DB_BTREE, // Database type
|
||||
DB_CREATE, // Flags
|
||||
0);
|
||||
if (ret > 0)
|
||||
{
|
||||
printf("Cannot create database file %s\n", strFileRes.c_str());
|
||||
fSuccess = false;
|
||||
}
|
||||
|
||||
Dbc* pcursor = db.GetCursor();
|
||||
if (pcursor)
|
||||
while (fSuccess)
|
||||
{
|
||||
CDataStream ssKey;
|
||||
CDataStream ssValue;
|
||||
int ret = db.ReadAtCursor(pcursor, ssKey, ssValue, DB_NEXT);
|
||||
if (ret == DB_NOTFOUND)
|
||||
{
|
||||
pcursor->close();
|
||||
break;
|
||||
}
|
||||
else if (ret != 0)
|
||||
{
|
||||
pcursor->close();
|
||||
fSuccess = false;
|
||||
break;
|
||||
}
|
||||
if (pszSkip &&
|
||||
strncmp(&ssKey[0], pszSkip, std::min(ssKey.size(), strlen(pszSkip))) == 0)
|
||||
continue;
|
||||
if (strncmp(&ssKey[0], "\x07version", 8) == 0)
|
||||
{
|
||||
// Update version:
|
||||
ssValue.clear();
|
||||
ssValue << VERSION;
|
||||
}
|
||||
Dbt datKey(&ssKey[0], ssKey.size());
|
||||
Dbt datValue(&ssValue[0], ssValue.size());
|
||||
int ret2 = pdbCopy->put(NULL, &datKey, &datValue, DB_NOOVERWRITE);
|
||||
if (ret2 > 0)
|
||||
fSuccess = false;
|
||||
}
|
||||
if (fSuccess)
|
||||
{
|
||||
db.Close();
|
||||
CloseDb(strFile);
|
||||
if (pdbCopy->close(0))
|
||||
fSuccess = false;
|
||||
delete pdbCopy;
|
||||
}
|
||||
}
|
||||
if (fSuccess)
|
||||
{
|
||||
Db dbA(&dbenv, 0);
|
||||
if (dbA.remove(strFile.c_str(), NULL, 0))
|
||||
fSuccess = false;
|
||||
Db dbB(&dbenv, 0);
|
||||
if (dbB.rename(strFileRes.c_str(), NULL, strFile.c_str(), 0))
|
||||
fSuccess = false;
|
||||
}
|
||||
if (!fSuccess)
|
||||
printf("Rewriting of %s FAILED!\n", strFileRes.c_str());
|
||||
return fSuccess;
|
||||
}
|
||||
}
|
||||
Sleep(100);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
void DBFlush(bool fShutdown)
|
||||
{
|
||||
// Flush log data to the actual data file
|
||||
@@ -196,9 +304,10 @@ void DBFlush(bool fShutdown)
|
||||
{
|
||||
char** listp;
|
||||
if (mapFileUseCount.empty())
|
||||
{
|
||||
dbenv.log_archive(&listp, DB_ARCH_REMOVE);
|
||||
dbenv.close(0);
|
||||
fDbEnvInit = false;
|
||||
EnvShutdown();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -656,6 +765,7 @@ int CWalletDB::LoadWallet(CWallet* pwallet)
|
||||
pwallet->vchDefaultKey.clear();
|
||||
int nFileVersion = 0;
|
||||
vector<uint256> vWalletUpgrade;
|
||||
bool fIsEncrypted = false;
|
||||
|
||||
// Modify defaults
|
||||
#ifndef WIN32
|
||||
@@ -781,6 +891,7 @@ int CWalletDB::LoadWallet(CWallet* pwallet)
|
||||
ssValue >> vchPrivKey;
|
||||
if (!pwallet->LoadCryptedKey(vchPubKey, vchPrivKey))
|
||||
return DB_CORRUPT;
|
||||
fIsEncrypted = true;
|
||||
}
|
||||
else if (strType == "defaultkey")
|
||||
{
|
||||
@@ -841,8 +952,11 @@ int CWalletDB::LoadWallet(CWallet* pwallet)
|
||||
printf("fUseUPnP = %d\n", fUseUPnP);
|
||||
|
||||
|
||||
// Upgrade
|
||||
if (nFileVersion < VERSION)
|
||||
// Rewrite encrypted wallets of versions 0.4.0 and 0.5.0rc:
|
||||
if (fIsEncrypted && (nFileVersion == 40000 || nFileVersion == 50000))
|
||||
return DB_NEED_REWRITE;
|
||||
|
||||
if (nFileVersion < VERSION) // Update
|
||||
{
|
||||
// Get rid of old debug.log file in current directory
|
||||
if (nFileVersion <= 105 && !pszSetDataDir[0])
|
||||
@@ -851,7 +965,6 @@ int CWalletDB::LoadWallet(CWallet* pwallet)
|
||||
WriteVersion(VERSION);
|
||||
}
|
||||
|
||||
|
||||
return DB_LOAD_OK;
|
||||
}
|
||||
|
||||
|
||||
5
src/db.h
@@ -28,14 +28,12 @@ class CBlockLocator;
|
||||
extern unsigned int nWalletDBUpdated;
|
||||
extern DbEnv dbenv;
|
||||
|
||||
|
||||
extern void DBFlush(bool fShutdown);
|
||||
void ThreadFlushWalletDB(void* parg);
|
||||
bool BackupWallet(const CWallet& wallet, const std::string& strDest);
|
||||
|
||||
|
||||
|
||||
|
||||
class CDB
|
||||
{
|
||||
protected:
|
||||
@@ -257,6 +255,8 @@ public:
|
||||
{
|
||||
return Write(std::string("version"), nVersion);
|
||||
}
|
||||
|
||||
bool static Rewrite(const std::string& strFile, const char* pszSkip = NULL);
|
||||
};
|
||||
|
||||
|
||||
@@ -349,6 +349,7 @@ enum DBErrors
|
||||
DB_CORRUPT,
|
||||
DB_TOO_NEW,
|
||||
DB_LOAD_FAIL,
|
||||
DB_NEED_REWRITE
|
||||
};
|
||||
|
||||
class CWalletDB : public CDB
|
||||
|
||||
10
src/init.cpp
@@ -44,8 +44,8 @@ void Shutdown(void* parg)
|
||||
{
|
||||
static CCriticalSection cs_Shutdown;
|
||||
static bool fTaken;
|
||||
bool fFirstThread;
|
||||
CRITICAL_BLOCK(cs_Shutdown)
|
||||
bool fFirstThread = false;
|
||||
TRY_CRITICAL_BLOCK(cs_Shutdown)
|
||||
{
|
||||
fFirstThread = !fTaken;
|
||||
fTaken = true;
|
||||
@@ -362,6 +362,12 @@ bool AppInit2(int argc, char* argv[])
|
||||
strErrors += _("Error loading wallet.dat: Wallet corrupted \n");
|
||||
else if (nLoadWalletRet == DB_TOO_NEW)
|
||||
strErrors += _("Error loading wallet.dat: Wallet requires newer version of Bitcoin \n");
|
||||
else if (nLoadWalletRet == DB_NEED_REWRITE)
|
||||
{
|
||||
strErrors += _("Wallet needed to be rewritten: restart Bitcoin to complete \n");
|
||||
wxMessageBox(strErrors, "Bitcoin", wxOK | wxICON_ERROR);
|
||||
return false;
|
||||
}
|
||||
else
|
||||
strErrors += _("Error loading wallet.dat \n");
|
||||
}
|
||||
|
||||
16
src/key.h
@@ -39,6 +39,7 @@
|
||||
// see www.keylength.com
|
||||
// script supports up to 75 for single byte push
|
||||
|
||||
// Generate a private key from just the secret parameter
|
||||
int static inline EC_KEY_regenerate_key(EC_KEY *eckey, BIGNUM *priv_key)
|
||||
{
|
||||
int ok = 0;
|
||||
@@ -75,6 +76,9 @@ err:
|
||||
return(ok);
|
||||
}
|
||||
|
||||
// Perform ECDSA key recovery (see SEC1 4.1.6) for curves over (mod p)-fields
|
||||
// recid selects which key is recovered
|
||||
// if check is nonzero, additional checks are performed
|
||||
int static inline ECDSA_SIG_recover_key_GFp(EC_KEY *eckey, ECDSA_SIG *ecsig, const unsigned char *msg, int msglen, int recid, int check)
|
||||
{
|
||||
if (!eckey) return 0;
|
||||
@@ -154,7 +158,9 @@ public:
|
||||
|
||||
|
||||
// secure_allocator is defined in serialize.h
|
||||
// CPrivKey is a serialized private key, with all parameters included (279 bytes)
|
||||
typedef std::vector<unsigned char, secure_allocator<unsigned char> > CPrivKey;
|
||||
// CSecret is a serialization of just the secret parameter (32 bytes)
|
||||
typedef std::vector<unsigned char, secure_allocator<unsigned char> > CSecret;
|
||||
|
||||
class CKey
|
||||
@@ -292,6 +298,9 @@ public:
|
||||
}
|
||||
|
||||
// create a compact signature (65 bytes), which allows reconstructing the used public key
|
||||
// The format is one header byte, followed by two times 32 bytes for the serialized r and s values.
|
||||
// The header byte: 0x1B = first key with even y, 0x1C = first key with odd y,
|
||||
// 0x1D = second key with even y, 0x1E = second key with odd y
|
||||
bool SignCompact(uint256 hash, std::vector<unsigned char>& vchSig)
|
||||
{
|
||||
bool fOk = false;
|
||||
@@ -318,7 +327,7 @@ public:
|
||||
}
|
||||
|
||||
if (nRecId == -1)
|
||||
throw key_error("CKEy::SignCompact() : unable to construct recoverable key");
|
||||
throw key_error("CKey::SignCompact() : unable to construct recoverable key");
|
||||
|
||||
vchSig[0] = nRecId+27;
|
||||
BN_bn2bin(sig->r,&vchSig[33-(nBitsR+7)/8]);
|
||||
@@ -330,6 +339,9 @@ public:
|
||||
}
|
||||
|
||||
// reconstruct public key from a compact signature
|
||||
// This is only slightly more CPU intensive than just verifying it.
|
||||
// If this function succeeds, the recovered public key is guaranteed to be valid
|
||||
// (the signature is a valid signature of the given data for that key)
|
||||
bool SetCompactSignature(uint256 hash, const std::vector<unsigned char>& vchSig)
|
||||
{
|
||||
if (vchSig.size() != 65)
|
||||
@@ -359,6 +371,7 @@ public:
|
||||
return true;
|
||||
}
|
||||
|
||||
// Verify a compact signature
|
||||
bool VerifyCompact(uint256 hash, const std::vector<unsigned char>& vchSig)
|
||||
{
|
||||
CKey key;
|
||||
@@ -369,6 +382,7 @@ public:
|
||||
return true;
|
||||
}
|
||||
|
||||
// Get the address corresponding to this key
|
||||
CBitcoinAddress GetAddress() const
|
||||
{
|
||||
return CBitcoinAddress(GetPubKey());
|
||||
|
||||
@@ -7,21 +7,34 @@
|
||||
|
||||
#include "crypter.h"
|
||||
|
||||
// A virtual base class for key stores
|
||||
class CKeyStore
|
||||
{
|
||||
protected:
|
||||
mutable CCriticalSection cs_KeyStore;
|
||||
|
||||
public:
|
||||
// Add a key to the store.
|
||||
virtual bool AddKey(const CKey& key) =0;
|
||||
|
||||
// Check whether a key corresponding to a given address is present in the store.
|
||||
virtual bool HaveKey(const CBitcoinAddress &address) const =0;
|
||||
|
||||
// Retrieve a key corresponding to a given address from the store.
|
||||
// Return true if succesful.
|
||||
virtual bool GetKey(const CBitcoinAddress &address, CKey& keyOut) const =0;
|
||||
|
||||
// Retrieve only the public key corresponding to a given address.
|
||||
// This may succeed even if GetKey fails (e.g., encrypted wallets)
|
||||
virtual bool GetPubKey(const CBitcoinAddress &address, std::vector<unsigned char>& vchPubKeyOut) const;
|
||||
|
||||
// Generate a new key, and add it to the store
|
||||
virtual std::vector<unsigned char> GenerateNewKey();
|
||||
};
|
||||
|
||||
typedef std::map<CBitcoinAddress, CSecret> KeyMap;
|
||||
|
||||
// Basic key store, that keeps keys in an address->secret map
|
||||
class CBasicKeyStore : public CKeyStore
|
||||
{
|
||||
protected:
|
||||
@@ -53,6 +66,8 @@ public:
|
||||
|
||||
typedef std::map<CBitcoinAddress, std::pair<std::vector<unsigned char>, std::vector<unsigned char> > > CryptedKeyMap;
|
||||
|
||||
// Keystore which keeps the private keys encrypted
|
||||
// It derives from the basic key store, which is used if no encryption is active.
|
||||
class CCryptoKeyStore : public CBasicKeyStore
|
||||
{
|
||||
private:
|
||||
|
||||
12
src/main.cpp
@@ -70,6 +70,9 @@ int fUseUPnP = false;
|
||||
// dispatching functions
|
||||
//
|
||||
|
||||
// These functions dispatch to one or all registered wallets
|
||||
|
||||
|
||||
void RegisterWallet(CWallet* pwalletIn)
|
||||
{
|
||||
CRITICAL_BLOCK(cs_setpwalletRegistered)
|
||||
@@ -86,6 +89,7 @@ void UnregisterWallet(CWallet* pwalletIn)
|
||||
}
|
||||
}
|
||||
|
||||
// check whether the passed transaction is from us
|
||||
bool static IsFromMe(CTransaction& tx)
|
||||
{
|
||||
BOOST_FOREACH(CWallet* pwallet, setpwalletRegistered)
|
||||
@@ -94,6 +98,7 @@ bool static IsFromMe(CTransaction& tx)
|
||||
return false;
|
||||
}
|
||||
|
||||
// get the wallet transaction with the given hash (if it exists)
|
||||
bool static GetTransaction(const uint256& hashTx, CWalletTx& wtx)
|
||||
{
|
||||
BOOST_FOREACH(CWallet* pwallet, setpwalletRegistered)
|
||||
@@ -102,42 +107,49 @@ bool static GetTransaction(const uint256& hashTx, CWalletTx& wtx)
|
||||
return false;
|
||||
}
|
||||
|
||||
// erases transaction with the given hash from all wallets
|
||||
void static EraseFromWallets(uint256 hash)
|
||||
{
|
||||
BOOST_FOREACH(CWallet* pwallet, setpwalletRegistered)
|
||||
pwallet->EraseFromWallet(hash);
|
||||
}
|
||||
|
||||
// make sure all wallets know about the given transaction, in the given block
|
||||
void static SyncWithWallets(const CTransaction& tx, const CBlock* pblock = NULL, bool fUpdate = false)
|
||||
{
|
||||
BOOST_FOREACH(CWallet* pwallet, setpwalletRegistered)
|
||||
pwallet->AddToWalletIfInvolvingMe(tx, pblock, fUpdate);
|
||||
}
|
||||
|
||||
// notify wallets about a new best chain
|
||||
void static SetBestChain(const CBlockLocator& loc)
|
||||
{
|
||||
BOOST_FOREACH(CWallet* pwallet, setpwalletRegistered)
|
||||
pwallet->SetBestChain(loc);
|
||||
}
|
||||
|
||||
// notify wallets about an updated transaction
|
||||
void static UpdatedTransaction(const uint256& hashTx)
|
||||
{
|
||||
BOOST_FOREACH(CWallet* pwallet, setpwalletRegistered)
|
||||
pwallet->UpdatedTransaction(hashTx);
|
||||
}
|
||||
|
||||
// dump all wallets
|
||||
void static PrintWallets(const CBlock& block)
|
||||
{
|
||||
BOOST_FOREACH(CWallet* pwallet, setpwalletRegistered)
|
||||
pwallet->PrintWallet(block);
|
||||
}
|
||||
|
||||
// notify wallets about an incoming inventory (for request counts)
|
||||
void static Inventory(const uint256& hash)
|
||||
{
|
||||
BOOST_FOREACH(CWallet* pwallet, setpwalletRegistered)
|
||||
pwallet->Inventory(hash);
|
||||
}
|
||||
|
||||
// ask wallets to resend their transactions
|
||||
void static ResendWalletTransactions()
|
||||
{
|
||||
BOOST_FOREACH(CWallet* pwallet, setpwalletRegistered)
|
||||
|
||||
@@ -12,7 +12,10 @@ AboutDialog::AboutDialog(QWidget *parent) :
|
||||
|
||||
void AboutDialog::setModel(ClientModel *model)
|
||||
{
|
||||
ui->versionLabel->setText(model->formatFullVersion());
|
||||
if(model)
|
||||
{
|
||||
ui->versionLabel->setText(model->formatFullVersion());
|
||||
}
|
||||
}
|
||||
|
||||
AboutDialog::~AboutDialog()
|
||||
|
||||
@@ -57,6 +57,8 @@ AddressBookPage::~AddressBookPage()
|
||||
void AddressBookPage::setModel(AddressTableModel *model)
|
||||
{
|
||||
this->model = model;
|
||||
if(!model)
|
||||
return;
|
||||
// Refresh list from core
|
||||
model->updateList();
|
||||
|
||||
@@ -96,16 +98,13 @@ void AddressBookPage::setModel(AddressTableModel *model)
|
||||
selectionChanged();
|
||||
}
|
||||
|
||||
QTableView *AddressBookPage::getCurrentTable()
|
||||
{
|
||||
return ui->tableView;
|
||||
}
|
||||
|
||||
void AddressBookPage::on_copyToClipboard_clicked()
|
||||
{
|
||||
// Copy currently selected address to clipboard
|
||||
// (or nothing, if nothing selected)
|
||||
QTableView *table = getCurrentTable();
|
||||
QTableView *table = ui->tableView;
|
||||
if(!table->selectionModel())
|
||||
return;
|
||||
QModelIndexList indexes = table->selectionModel()->selectedRows(AddressTableModel::Address);
|
||||
|
||||
foreach (QModelIndex index, indexes)
|
||||
@@ -117,6 +116,8 @@ void AddressBookPage::on_copyToClipboard_clicked()
|
||||
|
||||
void AddressBookPage::on_newAddressButton_clicked()
|
||||
{
|
||||
if(!model)
|
||||
return;
|
||||
EditAddressDialog dlg(
|
||||
tab == SendingTab ?
|
||||
EditAddressDialog::NewSendingAddress :
|
||||
@@ -139,7 +140,9 @@ void AddressBookPage::on_newAddressButton_clicked()
|
||||
|
||||
void AddressBookPage::on_deleteButton_clicked()
|
||||
{
|
||||
QTableView *table = getCurrentTable();
|
||||
QTableView *table = ui->tableView;
|
||||
if(!table->selectionModel())
|
||||
return;
|
||||
QModelIndexList indexes = table->selectionModel()->selectedRows();
|
||||
if(!indexes.isEmpty())
|
||||
{
|
||||
@@ -150,7 +153,9 @@ void AddressBookPage::on_deleteButton_clicked()
|
||||
void AddressBookPage::selectionChanged()
|
||||
{
|
||||
// Set button states based on selected tab and selection
|
||||
QTableView *table = getCurrentTable();
|
||||
QTableView *table = ui->tableView;
|
||||
if(!table->selectionModel())
|
||||
return;
|
||||
|
||||
if(table->selectionModel()->hasSelection())
|
||||
{
|
||||
@@ -174,12 +179,14 @@ void AddressBookPage::selectionChanged()
|
||||
|
||||
void AddressBookPage::done(int retval)
|
||||
{
|
||||
QTableView *table = ui->tableView;
|
||||
if(!table->selectionModel() || !table->model())
|
||||
return;
|
||||
// When this is a tab/widget and not a model dialog, ignore "done"
|
||||
if(mode == ForEditing)
|
||||
return;
|
||||
|
||||
// Figure out which address was selected, and return it
|
||||
QTableView *table = getCurrentTable();
|
||||
QModelIndexList indexes = table->selectionModel()->selectedRows(AddressTableModel::Address);
|
||||
|
||||
foreach (QModelIndex index, indexes)
|
||||
|
||||
@@ -47,8 +47,6 @@ private:
|
||||
QString returnValue;
|
||||
QSortFilterProxyModel *proxyModel;
|
||||
|
||||
QTableView *getCurrentTable();
|
||||
|
||||
private slots:
|
||||
void on_deleteButton_clicked();
|
||||
void on_newAddressButton_clicked();
|
||||
|
||||
@@ -72,6 +72,8 @@ void AskPassphraseDialog::setModel(WalletModel *model)
|
||||
void AskPassphraseDialog::accept()
|
||||
{
|
||||
std::string oldpass, newpass1, newpass2;
|
||||
if(!model)
|
||||
return;
|
||||
// TODO: mlock memory / munlock on return so they will not be swapped out, really need "mlockedstring" wrapper class to do this safely
|
||||
oldpass.reserve(MAX_PASSPHRASE_SIZE);
|
||||
newpass1.reserve(MAX_PASSPHRASE_SIZE);
|
||||
@@ -99,7 +101,8 @@ void AskPassphraseDialog::accept()
|
||||
if(model->setWalletEncrypted(true, newpass1))
|
||||
{
|
||||
QMessageBox::warning(this, tr("Wallet encrypted"),
|
||||
tr("Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer."));
|
||||
tr("Bitcoin will close now to finish the encryption process. Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer."));
|
||||
QApplication::quit();
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -46,6 +46,7 @@
|
||||
<file alias="update_spinner">res/movies/update_spinner.mng</file>
|
||||
</qresource>
|
||||
<qresource prefix="/translations">
|
||||
<file alias="da">locale/bitcoin_da.qm</file>
|
||||
<file alias="de">locale/bitcoin_de.qm</file>
|
||||
<file alias="en">locale/bitcoin_en.qm</file>
|
||||
<file alias="es">locale/bitcoin_es.qm</file>
|
||||
@@ -53,5 +54,6 @@
|
||||
<file alias="nb">locale/bitcoin_nb.qm</file>
|
||||
<file alias="nl">locale/bitcoin_nl.qm</file>
|
||||
<file alias="ru">locale/bitcoin_ru.qm</file>
|
||||
<file alias="zh_TW">locale/bitcoin_zh_TW.qm</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
|
||||
@@ -267,58 +267,62 @@ void BitcoinGUI::createToolBars()
|
||||
void BitcoinGUI::setClientModel(ClientModel *clientModel)
|
||||
{
|
||||
this->clientModel = clientModel;
|
||||
|
||||
if(clientModel->isTestNet())
|
||||
if(clientModel)
|
||||
{
|
||||
QString title_testnet = windowTitle() + QString(" ") + tr("[testnet]");
|
||||
setWindowTitle(title_testnet);
|
||||
#ifndef Q_WS_MAC
|
||||
setWindowIcon(QIcon(":icons/bitcoin_testnet"));
|
||||
#else
|
||||
MacDockIconHandler::instance()->setIcon(QIcon(":icons/bitcoin_testnet"));
|
||||
#endif
|
||||
if(trayIcon)
|
||||
if(clientModel->isTestNet())
|
||||
{
|
||||
trayIcon->setToolTip(title_testnet);
|
||||
trayIcon->setIcon(QIcon(":/icons/toolbar_testnet"));
|
||||
QString title_testnet = windowTitle() + QString(" ") + tr("[testnet]");
|
||||
setWindowTitle(title_testnet);
|
||||
#ifndef Q_WS_MAC
|
||||
setWindowIcon(QIcon(":icons/bitcoin_testnet"));
|
||||
#else
|
||||
MacDockIconHandler::instance()->setIcon(QIcon(":icons/bitcoin_testnet"));
|
||||
#endif
|
||||
if(trayIcon)
|
||||
{
|
||||
trayIcon->setToolTip(title_testnet);
|
||||
trayIcon->setIcon(QIcon(":/icons/toolbar_testnet"));
|
||||
}
|
||||
}
|
||||
|
||||
// Keep up to date with client
|
||||
setNumConnections(clientModel->getNumConnections());
|
||||
connect(clientModel, SIGNAL(numConnectionsChanged(int)), this, SLOT(setNumConnections(int)));
|
||||
|
||||
setNumBlocks(clientModel->getNumBlocks());
|
||||
connect(clientModel, SIGNAL(numBlocksChanged(int)), this, SLOT(setNumBlocks(int)));
|
||||
|
||||
// Report errors from network/worker thread
|
||||
connect(clientModel, SIGNAL(error(QString,QString)), this, SLOT(error(QString,QString)));
|
||||
}
|
||||
|
||||
// Keep up to date with client
|
||||
setNumConnections(clientModel->getNumConnections());
|
||||
connect(clientModel, SIGNAL(numConnectionsChanged(int)), this, SLOT(setNumConnections(int)));
|
||||
|
||||
setNumBlocks(clientModel->getNumBlocks());
|
||||
connect(clientModel, SIGNAL(numBlocksChanged(int)), this, SLOT(setNumBlocks(int)));
|
||||
|
||||
// Report errors from network/worker thread
|
||||
connect(clientModel, SIGNAL(error(QString,QString)), this, SLOT(error(QString,QString)));
|
||||
}
|
||||
|
||||
void BitcoinGUI::setWalletModel(WalletModel *walletModel)
|
||||
{
|
||||
this->walletModel = walletModel;
|
||||
if(walletModel)
|
||||
{
|
||||
// Report errors from wallet thread
|
||||
connect(walletModel, SIGNAL(error(QString,QString)), this, SLOT(error(QString,QString)));
|
||||
|
||||
// Report errors from wallet thread
|
||||
connect(walletModel, SIGNAL(error(QString,QString)), this, SLOT(error(QString,QString)));
|
||||
// Put transaction list in tabs
|
||||
transactionView->setModel(walletModel);
|
||||
|
||||
// Put transaction list in tabs
|
||||
transactionView->setModel(walletModel);
|
||||
overviewPage->setModel(walletModel);
|
||||
addressBookPage->setModel(walletModel->getAddressTableModel());
|
||||
receiveCoinsPage->setModel(walletModel->getAddressTableModel());
|
||||
sendCoinsPage->setModel(walletModel);
|
||||
|
||||
overviewPage->setModel(walletModel);
|
||||
addressBookPage->setModel(walletModel->getAddressTableModel());
|
||||
receiveCoinsPage->setModel(walletModel->getAddressTableModel());
|
||||
sendCoinsPage->setModel(walletModel);
|
||||
setEncryptionStatus(walletModel->getEncryptionStatus());
|
||||
connect(walletModel, SIGNAL(encryptionStatusChanged(int)), this, SLOT(setEncryptionStatus(int)));
|
||||
|
||||
setEncryptionStatus(walletModel->getEncryptionStatus());
|
||||
connect(walletModel, SIGNAL(encryptionStatusChanged(int)), this, SLOT(setEncryptionStatus(int)));
|
||||
// Balloon popup for new transaction
|
||||
connect(walletModel->getTransactionTableModel(), SIGNAL(rowsInserted(QModelIndex,int,int)),
|
||||
this, SLOT(incomingTransaction(QModelIndex,int,int)));
|
||||
|
||||
// Balloon popup for new transaction
|
||||
connect(walletModel->getTransactionTableModel(), SIGNAL(rowsInserted(QModelIndex,int,int)),
|
||||
this, SLOT(incomingTransaction(QModelIndex,int,int)));
|
||||
|
||||
// Ask for passphrase if needed
|
||||
connect(walletModel, SIGNAL(requireUnlock()), this, SLOT(unlockWallet()));
|
||||
// Ask for passphrase if needed
|
||||
connect(walletModel, SIGNAL(requireUnlock()), this, SLOT(unlockWallet()));
|
||||
}
|
||||
}
|
||||
|
||||
void BitcoinGUI::createTrayIcon()
|
||||
@@ -369,6 +373,8 @@ void BitcoinGUI::trayIconActivated(QSystemTrayIcon::ActivationReason reason)
|
||||
|
||||
void BitcoinGUI::optionsClicked()
|
||||
{
|
||||
if(!clientModel || !clientModel->getOptionsModel())
|
||||
return;
|
||||
OptionsDialog dlg;
|
||||
dlg.setModel(clientModel->getOptionsModel());
|
||||
dlg.exec();
|
||||
@@ -398,6 +404,8 @@ void BitcoinGUI::setNumConnections(int count)
|
||||
|
||||
void BitcoinGUI::setNumBlocks(int count)
|
||||
{
|
||||
if(!clientModel)
|
||||
return;
|
||||
int initTotal = clientModel->getNumBlocksAtStartup();
|
||||
int total = clientModel->getNumBlocksOfPeers();
|
||||
QString tooltip;
|
||||
@@ -470,11 +478,11 @@ void BitcoinGUI::error(const QString &title, const QString &message)
|
||||
void BitcoinGUI::changeEvent(QEvent *e)
|
||||
{
|
||||
#ifndef Q_WS_MAC // Ignored on Mac
|
||||
if (e->type() == QEvent::WindowStateChange)
|
||||
if(e->type() == QEvent::WindowStateChange)
|
||||
{
|
||||
if (clientModel->getOptionsModel()->getMinimizeToTray())
|
||||
if(clientModel && clientModel->getOptionsModel()->getMinimizeToTray())
|
||||
{
|
||||
if (isMinimized())
|
||||
if(isMinimized())
|
||||
{
|
||||
hide();
|
||||
e->ignore();
|
||||
@@ -492,13 +500,16 @@ void BitcoinGUI::changeEvent(QEvent *e)
|
||||
|
||||
void BitcoinGUI::closeEvent(QCloseEvent *event)
|
||||
{
|
||||
#ifndef Q_WS_MAC // Ignored on Mac
|
||||
if(!clientModel->getOptionsModel()->getMinimizeToTray() &&
|
||||
!clientModel->getOptionsModel()->getMinimizeOnClose())
|
||||
if(clientModel)
|
||||
{
|
||||
qApp->quit();
|
||||
}
|
||||
#ifndef Q_WS_MAC // Ignored on Mac
|
||||
if(!clientModel->getOptionsModel()->getMinimizeToTray() &&
|
||||
!clientModel->getOptionsModel()->getMinimizeOnClose())
|
||||
{
|
||||
qApp->quit();
|
||||
}
|
||||
#endif
|
||||
}
|
||||
QMainWindow::closeEvent(event);
|
||||
}
|
||||
|
||||
@@ -517,6 +528,8 @@ void BitcoinGUI::askFee(qint64 nFeeRequired, bool *payFee)
|
||||
|
||||
void BitcoinGUI::incomingTransaction(const QModelIndex & parent, int start, int end)
|
||||
{
|
||||
if(!walletModel || !clientModel)
|
||||
return;
|
||||
TransactionTableModel *ttm = walletModel->getTransactionTableModel();
|
||||
qint64 amount = ttm->index(start, TransactionTableModel::Amount, parent)
|
||||
.data(Qt::EditRole).toULongLong();
|
||||
@@ -654,6 +667,8 @@ void BitcoinGUI::setEncryptionStatus(int status)
|
||||
|
||||
void BitcoinGUI::encryptWallet(bool status)
|
||||
{
|
||||
if(!walletModel)
|
||||
return;
|
||||
AskPassphraseDialog dlg(status ? AskPassphraseDialog::Encrypt:
|
||||
AskPassphraseDialog::Decrypt, this);
|
||||
dlg.setModel(walletModel);
|
||||
@@ -671,6 +686,8 @@ void BitcoinGUI::changePassphrase()
|
||||
|
||||
void BitcoinGUI::unlockWallet()
|
||||
{
|
||||
if(!walletModel)
|
||||
return;
|
||||
// Unlock wallet when requested by wallet model
|
||||
if(walletModel->getEncryptionStatus() == WalletModel::Locked)
|
||||
{
|
||||
|
||||
@@ -48,7 +48,11 @@ bool CSVModelWriter::write()
|
||||
return false;
|
||||
QTextStream out(&file);
|
||||
|
||||
int numRows = model->rowCount();
|
||||
int numRows = 0;
|
||||
if(model)
|
||||
{
|
||||
numRows = model->rowCount();
|
||||
}
|
||||
|
||||
// Header row
|
||||
for(int i=0; i<columns.size(); ++i)
|
||||
|
||||
@@ -56,6 +56,8 @@ void EditAddressDialog::loadRow(int row)
|
||||
|
||||
bool EditAddressDialog::saveCurrentRow()
|
||||
{
|
||||
if(!model)
|
||||
return false;
|
||||
switch(mode)
|
||||
{
|
||||
case NewReceivingAddress:
|
||||
@@ -78,6 +80,8 @@ bool EditAddressDialog::saveCurrentRow()
|
||||
|
||||
void EditAddressDialog::accept()
|
||||
{
|
||||
if(!model)
|
||||
return;
|
||||
if(!saveCurrentRow())
|
||||
{
|
||||
switch(model->getEditStatus())
|
||||
@@ -113,3 +117,9 @@ QString EditAddressDialog::getAddress() const
|
||||
{
|
||||
return address;
|
||||
}
|
||||
|
||||
void EditAddressDialog::setAddress(const QString &address)
|
||||
{
|
||||
this->address = address;
|
||||
ui->addressEdit->setText(address);
|
||||
}
|
||||
|
||||
@@ -33,6 +33,7 @@ public:
|
||||
void accept();
|
||||
|
||||
QString getAddress() const;
|
||||
void setAddress(const QString &address);
|
||||
private:
|
||||
bool saveCurrentRow();
|
||||
|
||||
|
||||
2333
src/qt/locale/bitcoin_da.ts
Normal file
@@ -1,4 +1,5 @@
|
||||
<?xml version="1.0" ?><!DOCTYPE TS><TS language="es_CL" version="2.0">
|
||||
<defaultcodec>UTF-8</defaultcodec>
|
||||
<context>
|
||||
<name>AboutDialog</name>
|
||||
<message>
|
||||
@@ -11,7 +12,7 @@
|
||||
<source><b>Bitcoin</b> version</source>
|
||||
<translation><b>Bitcoin</b> - versión </translation>
|
||||
</message>
|
||||
<message utf8="true">
|
||||
<message>
|
||||
<location filename="../forms/aboutdialog.ui" line="85"/>
|
||||
<source>Copyright © 2009-2011 Bitcoin Developers
|
||||
|
||||
@@ -80,22 +81,22 @@ Eric Young (eay@cryptsoft.com) y UPnP software escrito por Thomas Bernard.</tran
|
||||
<translation>&Borrar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../addressbookpage.cpp" line="197"/>
|
||||
<location filename="../addressbookpage.cpp" line="204"/>
|
||||
<source>Export Address Book Data</source>
|
||||
<translation>Exporta datos de la guia de direcciones</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../addressbookpage.cpp" line="199"/>
|
||||
<location filename="../addressbookpage.cpp" line="206"/>
|
||||
<source>Comma separated file (*.csv)</source>
|
||||
<translation>Archivos separados por coma (*.csv)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../addressbookpage.cpp" line="212"/>
|
||||
<location filename="../addressbookpage.cpp" line="219"/>
|
||||
<source>Error exporting</source>
|
||||
<translation>Exportar errores</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../addressbookpage.cpp" line="212"/>
|
||||
<location filename="../addressbookpage.cpp" line="219"/>
|
||||
<source>Could not write to file %1.</source>
|
||||
<translation>No se pudo escribir al archivo %1.</translation>
|
||||
</message>
|
||||
@@ -253,99 +254,74 @@ Are you sure you wish to encrypt your wallet?</source>
|
||||
<context>
|
||||
<name>BitcoinGUI</name>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="59"/>
|
||||
<location filename="../bitcoingui.cpp" line="63"/>
|
||||
<source>Bitcoin Wallet</source>
|
||||
<translation>Billetera Bitcoin</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="67"/>
|
||||
<source>&File</source>
|
||||
<translation>&Archivo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="73"/>
|
||||
<source>&Settings</source>
|
||||
<translation>&Configuración</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="79"/>
|
||||
<source>&Help</source>
|
||||
<translation>&Ayuda</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="83"/>
|
||||
<source>Tabs toolbar</source>
|
||||
<translation>Barra de pestañas</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="91"/>
|
||||
<source>Actions toolbar</source>
|
||||
<translation>Barra de acciónes</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="142"/>
|
||||
<location filename="../bitcoingui.cpp" line="132"/>
|
||||
<source>Synchronizing with network...</source>
|
||||
<translation>Sincronizando con la red...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="145"/>
|
||||
<location filename="../bitcoingui.cpp" line="135"/>
|
||||
<source>Block chain synchronization in progress</source>
|
||||
<translation>Sincronización de la cadena de bloques en progreso</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="169"/>
|
||||
<location filename="../bitcoingui.cpp" line="164"/>
|
||||
<source>&Overview</source>
|
||||
<translation>&Vista general</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="170"/>
|
||||
<location filename="../bitcoingui.cpp" line="165"/>
|
||||
<source>Show general overview of wallet</source>
|
||||
<translation>Muestra una vista general de la billetera</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="174"/>
|
||||
<location filename="../bitcoingui.cpp" line="170"/>
|
||||
<source>&Transactions</source>
|
||||
<translation>&Transacciónes</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="175"/>
|
||||
<location filename="../bitcoingui.cpp" line="171"/>
|
||||
<source>Browse transaction history</source>
|
||||
<translation>Explora el historial de transacciónes</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="179"/>
|
||||
<location filename="../bitcoingui.cpp" line="176"/>
|
||||
<source>&Address Book</source>
|
||||
<translation>&Guia de direcciónes</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="180"/>
|
||||
<location filename="../bitcoingui.cpp" line="177"/>
|
||||
<source>Edit the list of stored addresses and labels</source>
|
||||
<translation>Edita la lista de direcciones y etiquetas almacenadas</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="184"/>
|
||||
<location filename="../bitcoingui.cpp" line="182"/>
|
||||
<source>&Receive coins</source>
|
||||
<translation>&Recibir monedas</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="185"/>
|
||||
<location filename="../bitcoingui.cpp" line="183"/>
|
||||
<source>Show the list of addresses for receiving payments</source>
|
||||
<translation>Muestra la lista de direcciónes utilizadas para recibir pagos</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="189"/>
|
||||
<location filename="../bitcoingui.cpp" line="188"/>
|
||||
<source>&Send coins</source>
|
||||
<translation>&Envíar monedas</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="190"/>
|
||||
<location filename="../bitcoingui.cpp" line="189"/>
|
||||
<source>Send coins to a bitcoin address</source>
|
||||
<translation>Enviar monedas a una dirección bitcoin</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="200"/>
|
||||
<source>&Exit</source>
|
||||
<translation>&Salir</translation>
|
||||
<source>E&xit</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="201"/>
|
||||
@@ -353,147 +329,172 @@ Are you sure you wish to encrypt your wallet?</source>
|
||||
<translation>Salir del programa</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="202"/>
|
||||
<source>&About</source>
|
||||
<translation>&Acerca de</translation>
|
||||
<location filename="../bitcoingui.cpp" line="204"/>
|
||||
<source>&About %1</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="203"/>
|
||||
<location filename="../bitcoingui.cpp" line="205"/>
|
||||
<source>Show information about Bitcoin</source>
|
||||
<translation>Muestra información acerca de Bitcoin</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="204"/>
|
||||
<location filename="../bitcoingui.cpp" line="207"/>
|
||||
<source>&Options...</source>
|
||||
<translation>&Opciones</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="205"/>
|
||||
<location filename="../bitcoingui.cpp" line="208"/>
|
||||
<source>Modify configuration options for bitcoin</source>
|
||||
<translation>Modifica las opciones de configuración de bitcoin</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="206"/>
|
||||
<location filename="../bitcoingui.cpp" line="210"/>
|
||||
<source>Open &Bitcoin</source>
|
||||
<translation>Abre &Bitcoin</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="207"/>
|
||||
<location filename="../bitcoingui.cpp" line="211"/>
|
||||
<source>Show the Bitcoin window</source>
|
||||
<translation>Muestra la ventana de Bitcoin</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="208"/>
|
||||
<location filename="../bitcoingui.cpp" line="212"/>
|
||||
<source>&Export...</source>
|
||||
<translation>&Exportar...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="209"/>
|
||||
<location filename="../bitcoingui.cpp" line="213"/>
|
||||
<source>Export the current view to a file</source>
|
||||
<translation>Exportar la vista actual a un archivo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="210"/>
|
||||
<location filename="../bitcoingui.cpp" line="214"/>
|
||||
<source>&Encrypt Wallet</source>
|
||||
<translation>&Codificar la billetera</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="211"/>
|
||||
<location filename="../bitcoingui.cpp" line="215"/>
|
||||
<source>Encrypt or decrypt wallet</source>
|
||||
<translation>Codificar o decodificar la billetera</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="213"/>
|
||||
<location filename="../bitcoingui.cpp" line="217"/>
|
||||
<source>&Change Passphrase</source>
|
||||
<translation>&Cambiar la contraseña</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="214"/>
|
||||
<location filename="../bitcoingui.cpp" line="218"/>
|
||||
<source>Change the passphrase used for wallet encryption</source>
|
||||
<translation>Cambiar la contraseña utilizada para la codificación de la billetera</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="230"/>
|
||||
<location filename="../bitcoingui.cpp" line="239"/>
|
||||
<source>&File</source>
|
||||
<translation>&Archivo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="242"/>
|
||||
<source>&Settings</source>
|
||||
<translation>&Configuración</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="248"/>
|
||||
<source>&Help</source>
|
||||
<translation>&Ayuda</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="254"/>
|
||||
<source>Tabs toolbar</source>
|
||||
<translation>Barra de pestañas</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="262"/>
|
||||
<source>Actions toolbar</source>
|
||||
<translation>Barra de acciónes</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="273"/>
|
||||
<source>[testnet]</source>
|
||||
<translation>[red-de-pruebas]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="293"/>
|
||||
<location filename="../bitcoingui.cpp" line="355"/>
|
||||
<source>bitcoin-qt</source>
|
||||
<translation>bitcoin-qt</translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<location filename="../bitcoingui.cpp" line="332"/>
|
||||
<location filename="../bitcoingui.cpp" line="396"/>
|
||||
<source>%n active connection(s) to Bitcoin network</source>
|
||||
<translation><numerusform>%n conexión activa hacia la red Bitcoin</numerusform><numerusform>%n conexiones activas hacia la red Bitcoin</numerusform></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="347"/>
|
||||
<location filename="../bitcoingui.cpp" line="411"/>
|
||||
<source>Downloaded %1 of %2 blocks of transaction history.</source>
|
||||
<translation>Descargados %1 de %2 bloques del historial de transacciones.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="353"/>
|
||||
<location filename="../bitcoingui.cpp" line="417"/>
|
||||
<source>Downloaded %1 blocks of transaction history.</source>
|
||||
<translation>Descargado %1 bloques del historial de transacciones.</translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<location filename="../bitcoingui.cpp" line="364"/>
|
||||
<location filename="../bitcoingui.cpp" line="428"/>
|
||||
<source>%n second(s) ago</source>
|
||||
<translation><numerusform>Hace %n segundo</numerusform><numerusform>Hace %n segundos</numerusform></translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<location filename="../bitcoingui.cpp" line="368"/>
|
||||
<location filename="../bitcoingui.cpp" line="432"/>
|
||||
<source>%n minute(s) ago</source>
|
||||
<translation><numerusform>Hace %n minuto</numerusform><numerusform>Hace %n minutos</numerusform></translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<location filename="../bitcoingui.cpp" line="372"/>
|
||||
<location filename="../bitcoingui.cpp" line="436"/>
|
||||
<source>%n hour(s) ago</source>
|
||||
<translation><numerusform>Hace %n hora</numerusform><numerusform>Hace %n horas</numerusform></translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<location filename="../bitcoingui.cpp" line="376"/>
|
||||
<location filename="../bitcoingui.cpp" line="440"/>
|
||||
<source>%n day(s) ago</source>
|
||||
<translation><numerusform>Hace %n día</numerusform><numerusform>Hace %n días</numerusform></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="382"/>
|
||||
<location filename="../bitcoingui.cpp" line="446"/>
|
||||
<source>Up to date</source>
|
||||
<translation>Actualizado</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="387"/>
|
||||
<location filename="../bitcoingui.cpp" line="451"/>
|
||||
<source>Catching up...</source>
|
||||
<translation>Recuperando...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="393"/>
|
||||
<location filename="../bitcoingui.cpp" line="457"/>
|
||||
<source>Last received block was generated %1.</source>
|
||||
<translation>El ultimo bloque recibido fue generado %1.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="440"/>
|
||||
<location filename="../bitcoingui.cpp" line="508"/>
|
||||
<source>This transaction is over the size limit. You can still send it for a fee of %1, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee?</source>
|
||||
<translation>Esta transacción supera el límite. Puedes seguir enviandola incluyendo una comisión de %s que se va a repartir entre los nodos que procesan su transacción y ayudan a mantener la red. ¿Quieres seguir con la transacción?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="445"/>
|
||||
<location filename="../bitcoingui.cpp" line="513"/>
|
||||
<source>Sending...</source>
|
||||
<translation>Enviando...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="470"/>
|
||||
<location filename="../bitcoingui.cpp" line="538"/>
|
||||
<source>Sent transaction</source>
|
||||
<translation>Transacción enviada</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="471"/>
|
||||
<location filename="../bitcoingui.cpp" line="539"/>
|
||||
<source>Incoming transaction</source>
|
||||
<translation>Transacción entrante</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="472"/>
|
||||
<location filename="../bitcoingui.cpp" line="540"/>
|
||||
<source>Date: %1
|
||||
Amount: %2
|
||||
Type: %3
|
||||
@@ -505,12 +506,12 @@ Tipo: %3
|
||||
Dirección: %4</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="566"/>
|
||||
<location filename="../bitcoingui.cpp" line="639"/>
|
||||
<source>Wallet is <b>encrypted</b> and currently <b>unlocked</b></source>
|
||||
<translation>La billetera esta <b>codificada</b> y actualmente <b>desbloqueda</b></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="574"/>
|
||||
<location filename="../bitcoingui.cpp" line="647"/>
|
||||
<source>Wallet is <b>encrypted</b> and currently <b>locked</b></source>
|
||||
<translation>La billetera esta <b>codificada</b> y actualmente <b>bloqueda</b></translation>
|
||||
</message>
|
||||
@@ -518,17 +519,17 @@ Dirección: %4</translation>
|
||||
<context>
|
||||
<name>DisplayOptionsPage</name>
|
||||
<message>
|
||||
<location filename="../optionsdialog.cpp" line="258"/>
|
||||
<location filename="../optionsdialog.cpp" line="270"/>
|
||||
<source>&Unit to show amounts in: </source>
|
||||
<translation>&Unidad en la que mostrar cantitades: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../optionsdialog.cpp" line="262"/>
|
||||
<location filename="../optionsdialog.cpp" line="274"/>
|
||||
<source>Choose the default subdivision unit to show in the interface, and when sending coins</source>
|
||||
<translation>Elige la subdivisión por defecto para mostrar cantidaded en la interfaz cuando se envien monedas</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../optionsdialog.cpp" line="269"/>
|
||||
<location filename="../optionsdialog.cpp" line="281"/>
|
||||
<source>Display addresses in transaction list</source>
|
||||
<translation>Muestra direcciones en el listado de transaccioines</translation>
|
||||
</message>
|
||||
@@ -604,87 +605,87 @@ Dirección: %4</translation>
|
||||
<context>
|
||||
<name>MainOptionsPage</name>
|
||||
<message>
|
||||
<location filename="../optionsdialog.cpp" line="166"/>
|
||||
<location filename="../optionsdialog.cpp" line="170"/>
|
||||
<source>&Start Bitcoin on window system startup</source>
|
||||
<translation>&Inicia Bitcoin al iniciar el sistema</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../optionsdialog.cpp" line="167"/>
|
||||
<location filename="../optionsdialog.cpp" line="171"/>
|
||||
<source>Automatically start Bitcoin after the computer is turned on</source>
|
||||
<translation>Inicia Bitcoin automáticamente despues de encender el computador</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../optionsdialog.cpp" line="170"/>
|
||||
<location filename="../optionsdialog.cpp" line="175"/>
|
||||
<source>&Minimize to the tray instead of the taskbar</source>
|
||||
<translation>&Minimiza a la bandeja en vez de la barra de tareas</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../optionsdialog.cpp" line="171"/>
|
||||
<location filename="../optionsdialog.cpp" line="176"/>
|
||||
<source>Show only a tray icon after minimizing the window</source>
|
||||
<translation>Muestra solo un ícono en la bandeja después de minimizar la ventana</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../optionsdialog.cpp" line="174"/>
|
||||
<location filename="../optionsdialog.cpp" line="180"/>
|
||||
<source>Map port using &UPnP</source>
|
||||
<translation>Direcciona el puerto usando &UPnP</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../optionsdialog.cpp" line="175"/>
|
||||
<location filename="../optionsdialog.cpp" line="181"/>
|
||||
<source>Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled.</source>
|
||||
<translation>Abre automáticamente el puerto del cliente Bitcoin en el router. Esto funciona solo cuando tu router es compatible con UPnP y está habilitado.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../optionsdialog.cpp" line="178"/>
|
||||
<location filename="../optionsdialog.cpp" line="185"/>
|
||||
<source>M&inimize on close</source>
|
||||
<translation>M&inimiza a la bandeja al cerrar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../optionsdialog.cpp" line="179"/>
|
||||
<location filename="../optionsdialog.cpp" line="186"/>
|
||||
<source>Minimize instead of exit the application when the window is closed. When this option is enabled, the application will be closed only after selecting Quit in the menu.</source>
|
||||
<translation>Minimiza la ventana en lugar de salir del programa cuando la ventana se cierra. Cuando esta opción esta activa el programa solo se puede cerrar seleccionando Salir desde el menu.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../optionsdialog.cpp" line="182"/>
|
||||
<location filename="../optionsdialog.cpp" line="190"/>
|
||||
<source>&Connect through SOCKS4 proxy:</source>
|
||||
<translation>&Conecta a traves de un proxy SOCKS4:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../optionsdialog.cpp" line="183"/>
|
||||
<location filename="../optionsdialog.cpp" line="191"/>
|
||||
<source>Connect to the Bitcon network through a SOCKS4 proxy (e.g. when connecting through Tor)</source>
|
||||
<translation>Conecta a la red Bitcoin a través de un proxy SOCKS4 (ej. cuando te conectas por la red Tor)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../optionsdialog.cpp" line="188"/>
|
||||
<location filename="../optionsdialog.cpp" line="196"/>
|
||||
<source>Proxy &IP: </source>
|
||||
<translation>&IP Proxy:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../optionsdialog.cpp" line="194"/>
|
||||
<location filename="../optionsdialog.cpp" line="202"/>
|
||||
<source>IP address of the proxy (e.g. 127.0.0.1)</source>
|
||||
<translation>Dirección IP del servidor proxy (ej. 127.0.0.1)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../optionsdialog.cpp" line="197"/>
|
||||
<location filename="../optionsdialog.cpp" line="205"/>
|
||||
<source>&Port: </source>
|
||||
<translation>&Puerto:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../optionsdialog.cpp" line="203"/>
|
||||
<location filename="../optionsdialog.cpp" line="211"/>
|
||||
<source>Port of the proxy (e.g. 1234)</source>
|
||||
<translation>Puerto del servidor proxy (ej. 1234)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../optionsdialog.cpp" line="209"/>
|
||||
<location filename="../optionsdialog.cpp" line="217"/>
|
||||
<source>Optional transaction fee per KB that helps make sure your transactions are processed quickly. Most transactions are 1KB. Fee 0.01 recommended.</source>
|
||||
<translation>Comisión de operación opcional por KB que ayuda a asegurar que tus transacciones sean procesadas rápidamente. La mayoría de las transacciones son de 1KB. Se recomienda una comisión de 0.01.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../optionsdialog.cpp" line="215"/>
|
||||
<location filename="../optionsdialog.cpp" line="223"/>
|
||||
<source>Pay transaction &fee</source>
|
||||
<translation>Comision de &transacciónes</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../optionsdialog.cpp" line="218"/>
|
||||
<location filename="../optionsdialog.cpp" line="226"/>
|
||||
<source>Optional transaction fee per KB that helps make sure your transactions are processed quickly. Most transactions are 1KB. Fee 0.01 recommended.</source>
|
||||
<translation>Comisión de operación opcional por KB que ayuda a asegurar que tus transacciones sean procesadas rápidamente. La mayoría de las transacciones son de 1KB. Se recomienda una comisión de 0.01.</translation>
|
||||
</message>
|
||||
@@ -692,17 +693,17 @@ Dirección: %4</translation>
|
||||
<context>
|
||||
<name>OptionsDialog</name>
|
||||
<message>
|
||||
<location filename="../optionsdialog.cpp" line="75"/>
|
||||
<location filename="../optionsdialog.cpp" line="79"/>
|
||||
<source>Main</source>
|
||||
<translation>Principal</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../optionsdialog.cpp" line="80"/>
|
||||
<location filename="../optionsdialog.cpp" line="84"/>
|
||||
<source>Display</source>
|
||||
<translation>Mostrado</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../optionsdialog.cpp" line="100"/>
|
||||
<location filename="../optionsdialog.cpp" line="104"/>
|
||||
<source>Options</source>
|
||||
<translation>Opciones</translation>
|
||||
</message>
|
||||
@@ -782,103 +783,103 @@ p, li { white-space: pre-wrap; }
|
||||
<name>SendCoinsDialog</name>
|
||||
<message>
|
||||
<location filename="../forms/sendcoinsdialog.ui" line="14"/>
|
||||
<location filename="../sendcoinsdialog.cpp" line="103"/>
|
||||
<location filename="../sendcoinsdialog.cpp" line="108"/>
|
||||
<location filename="../sendcoinsdialog.cpp" line="113"/>
|
||||
<location filename="../sendcoinsdialog.cpp" line="118"/>
|
||||
<location filename="../sendcoinsdialog.cpp" line="109"/>
|
||||
<location filename="../sendcoinsdialog.cpp" line="114"/>
|
||||
<location filename="../sendcoinsdialog.cpp" line="119"/>
|
||||
<location filename="../sendcoinsdialog.cpp" line="124"/>
|
||||
<location filename="../sendcoinsdialog.cpp" line="129"/>
|
||||
<location filename="../sendcoinsdialog.cpp" line="134"/>
|
||||
<location filename="../sendcoinsdialog.cpp" line="130"/>
|
||||
<location filename="../sendcoinsdialog.cpp" line="135"/>
|
||||
<location filename="../sendcoinsdialog.cpp" line="140"/>
|
||||
<source>Send Coins</source>
|
||||
<translation>Enviar monedas</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../forms/sendcoinsdialog.ui" line="67"/>
|
||||
<location filename="../forms/sendcoinsdialog.ui" line="64"/>
|
||||
<source>Send to multiple recipients at once</source>
|
||||
<translation>Enviar a múltiples destinatarios</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../forms/sendcoinsdialog.ui" line="70"/>
|
||||
<location filename="../forms/sendcoinsdialog.ui" line="67"/>
|
||||
<source>&Add recipient...</source>
|
||||
<translation>&Agrega destinatario...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../forms/sendcoinsdialog.ui" line="87"/>
|
||||
<location filename="../forms/sendcoinsdialog.ui" line="84"/>
|
||||
<source>Clear all</source>
|
||||
<translation>&Borra todos</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../forms/sendcoinsdialog.ui" line="106"/>
|
||||
<location filename="../forms/sendcoinsdialog.ui" line="103"/>
|
||||
<source>Balance:</source>
|
||||
<translation>Balance:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../forms/sendcoinsdialog.ui" line="113"/>
|
||||
<location filename="../forms/sendcoinsdialog.ui" line="110"/>
|
||||
<source>123.456 BTC</source>
|
||||
<translation>123.456 BTC</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../forms/sendcoinsdialog.ui" line="144"/>
|
||||
<location filename="../forms/sendcoinsdialog.ui" line="141"/>
|
||||
<source>Confirm the send action</source>
|
||||
<translation>Confirma el envio</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../forms/sendcoinsdialog.ui" line="147"/>
|
||||
<location filename="../forms/sendcoinsdialog.ui" line="144"/>
|
||||
<source>&Send</source>
|
||||
<translation>&Envía</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../sendcoinsdialog.cpp" line="79"/>
|
||||
<location filename="../sendcoinsdialog.cpp" line="85"/>
|
||||
<source><b>%1</b> to %2 (%3)</source>
|
||||
<translation><b>%1</b> to %2 (%3)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../sendcoinsdialog.cpp" line="82"/>
|
||||
<location filename="../sendcoinsdialog.cpp" line="88"/>
|
||||
<source>Confirm send coins</source>
|
||||
<translation>Confirmar el envio de monedas</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../sendcoinsdialog.cpp" line="83"/>
|
||||
<location filename="../sendcoinsdialog.cpp" line="89"/>
|
||||
<source>Are you sure you want to send %1?</source>
|
||||
<translation>Estas seguro que quieres enviar %1?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../sendcoinsdialog.cpp" line="83"/>
|
||||
<location filename="../sendcoinsdialog.cpp" line="89"/>
|
||||
<source> and </source>
|
||||
<translation>y</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../sendcoinsdialog.cpp" line="104"/>
|
||||
<location filename="../sendcoinsdialog.cpp" line="110"/>
|
||||
<source>The recepient address is not valid, please recheck.</source>
|
||||
<translation>La dirección de destinatarion no es valida, comprueba otra vez.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../sendcoinsdialog.cpp" line="109"/>
|
||||
<location filename="../sendcoinsdialog.cpp" line="115"/>
|
||||
<source>The amount to pay must be larger than 0.</source>
|
||||
<translation>La cantidad por pagar tiene que ser mayor 0.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../sendcoinsdialog.cpp" line="114"/>
|
||||
<location filename="../sendcoinsdialog.cpp" line="120"/>
|
||||
<source>Amount exceeds your balance</source>
|
||||
<translation>La cantidad sobrepasa tu saldo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../sendcoinsdialog.cpp" line="119"/>
|
||||
<location filename="../sendcoinsdialog.cpp" line="125"/>
|
||||
<source>Total exceeds your balance when the %1 transaction fee is included</source>
|
||||
<translation>El total sobrepasa tu saldo cuando se incluyen %1 como tasa de envio</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../sendcoinsdialog.cpp" line="125"/>
|
||||
<location filename="../sendcoinsdialog.cpp" line="131"/>
|
||||
<source>Duplicate address found, can only send to each address once in one send operation</source>
|
||||
<translation>Tienes una dirección duplicada, solo puedes enviar a direcciónes individuales de una sola vez</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../sendcoinsdialog.cpp" line="130"/>
|
||||
<location filename="../sendcoinsdialog.cpp" line="136"/>
|
||||
<source>Error: Transaction creation failed </source>
|
||||
<translation>Error: La transacción no se pudo crear </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../sendcoinsdialog.cpp" line="135"/>
|
||||
<location filename="../sendcoinsdialog.cpp" line="141"/>
|
||||
<source>Error: The transaction was rejected. This might happen if some of the coins in your wallet were already spent, such as if you used a copy of wallet.dat and coins were spent in the copy but not marked as spent here.</source>
|
||||
<translation>Error: La transacción fue rechazada. Esto puede haber ocurrido si alguna de las monedas ya estaba gastada o si ha usado una copia de wallet.dat y las monedas se gastaron en la copia pero no se han marcado como gastadas aqui.</translation>
|
||||
</message>
|
||||
@@ -902,7 +903,7 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../forms/sendcoinsentry.ui" line="66"/>
|
||||
<location filename="../sendcoinsentry.cpp" line="22"/>
|
||||
<location filename="../sendcoinsentry.cpp" line="26"/>
|
||||
<source>Enter a label for this address to add it to your address book</source>
|
||||
<translation>Introduce una etiqueta a esta dirección para añadirla a tu guia</translation>
|
||||
</message>
|
||||
@@ -927,22 +928,22 @@ p, li { white-space: pre-wrap; }
|
||||
<translation>Alt+A</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../forms/sendcoinsentry.ui" line="126"/>
|
||||
<location filename="../forms/sendcoinsentry.ui" line="120"/>
|
||||
<source>Paste address from clipboard</source>
|
||||
<translation>Pega dirección desde portapapeles</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../forms/sendcoinsentry.ui" line="136"/>
|
||||
<location filename="../forms/sendcoinsentry.ui" line="130"/>
|
||||
<source>Alt+P</source>
|
||||
<translation>Alt+P</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../forms/sendcoinsentry.ui" line="146"/>
|
||||
<location filename="../forms/sendcoinsentry.ui" line="137"/>
|
||||
<source>Remove this recipient</source>
|
||||
<translation>Elimina destinatario</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../sendcoinsentry.cpp" line="21"/>
|
||||
<location filename="../sendcoinsentry.cpp" line="25"/>
|
||||
<source>Enter a Bitcoin address (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L)</source>
|
||||
<translation>Introduce una dirección Bitcoin (ej. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L)</translation>
|
||||
</message>
|
||||
@@ -1222,158 +1223,158 @@ p, li { white-space: pre-wrap; }
|
||||
<context>
|
||||
<name>TransactionView</name>
|
||||
<message>
|
||||
<location filename="../transactionview.cpp" line="48"/>
|
||||
<location filename="../transactionview.cpp" line="61"/>
|
||||
<location filename="../transactionview.cpp" line="55"/>
|
||||
<location filename="../transactionview.cpp" line="71"/>
|
||||
<source>All</source>
|
||||
<translation>Todo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../transactionview.cpp" line="49"/>
|
||||
<location filename="../transactionview.cpp" line="56"/>
|
||||
<source>Today</source>
|
||||
<translation>Hoy</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../transactionview.cpp" line="50"/>
|
||||
<location filename="../transactionview.cpp" line="57"/>
|
||||
<source>This week</source>
|
||||
<translation>Esta semana</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../transactionview.cpp" line="51"/>
|
||||
<location filename="../transactionview.cpp" line="58"/>
|
||||
<source>This month</source>
|
||||
<translation>Esta mes</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../transactionview.cpp" line="52"/>
|
||||
<location filename="../transactionview.cpp" line="59"/>
|
||||
<source>Last month</source>
|
||||
<translation>Mes pasado</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../transactionview.cpp" line="53"/>
|
||||
<location filename="../transactionview.cpp" line="60"/>
|
||||
<source>This year</source>
|
||||
<translation>Este año</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../transactionview.cpp" line="54"/>
|
||||
<location filename="../transactionview.cpp" line="61"/>
|
||||
<source>Range...</source>
|
||||
<translation>Rango...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../transactionview.cpp" line="62"/>
|
||||
<location filename="../transactionview.cpp" line="72"/>
|
||||
<source>Received with</source>
|
||||
<translation>Recibido con</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../transactionview.cpp" line="64"/>
|
||||
<location filename="../transactionview.cpp" line="74"/>
|
||||
<source>Sent to</source>
|
||||
<translation>Enviado a</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../transactionview.cpp" line="66"/>
|
||||
<location filename="../transactionview.cpp" line="76"/>
|
||||
<source>To yourself</source>
|
||||
<translation>A ti mismo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../transactionview.cpp" line="67"/>
|
||||
<location filename="../transactionview.cpp" line="77"/>
|
||||
<source>Mined</source>
|
||||
<translation>Minado</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../transactionview.cpp" line="68"/>
|
||||
<location filename="../transactionview.cpp" line="78"/>
|
||||
<source>Other</source>
|
||||
<translation>Otra</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../transactionview.cpp" line="74"/>
|
||||
<location filename="../transactionview.cpp" line="84"/>
|
||||
<source>Enter address or label to search</source>
|
||||
<translation>Introduce una dirección o etiqueta para buscar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../transactionview.cpp" line="80"/>
|
||||
<location filename="../transactionview.cpp" line="90"/>
|
||||
<source>Min amount</source>
|
||||
<translation>Cantidad minima</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../transactionview.cpp" line="108"/>
|
||||
<location filename="../transactionview.cpp" line="125"/>
|
||||
<source>Copy address</source>
|
||||
<translation>Copia dirección</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../transactionview.cpp" line="109"/>
|
||||
<location filename="../transactionview.cpp" line="126"/>
|
||||
<source>Copy label</source>
|
||||
<translation>Copia etiqueta</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../transactionview.cpp" line="110"/>
|
||||
<location filename="../transactionview.cpp" line="127"/>
|
||||
<source>Edit label</source>
|
||||
<translation>Edita etiqueta</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../transactionview.cpp" line="111"/>
|
||||
<location filename="../transactionview.cpp" line="128"/>
|
||||
<source>Show details...</source>
|
||||
<translation>Muestra detalles...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../transactionview.cpp" line="244"/>
|
||||
<location filename="../transactionview.cpp" line="261"/>
|
||||
<source>Export Transaction Data</source>
|
||||
<translation>Exportar datos de transacción</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../transactionview.cpp" line="246"/>
|
||||
<location filename="../transactionview.cpp" line="263"/>
|
||||
<source>Comma separated file (*.csv)</source>
|
||||
<translation>Archivos separados por coma (*.csv)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../transactionview.cpp" line="254"/>
|
||||
<location filename="../transactionview.cpp" line="271"/>
|
||||
<source>Confirmed</source>
|
||||
<translation>Confirmado</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../transactionview.cpp" line="255"/>
|
||||
<location filename="../transactionview.cpp" line="272"/>
|
||||
<source>Date</source>
|
||||
<translation>Fecha</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../transactionview.cpp" line="256"/>
|
||||
<location filename="../transactionview.cpp" line="273"/>
|
||||
<source>Type</source>
|
||||
<translation>Tipo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../transactionview.cpp" line="257"/>
|
||||
<location filename="../transactionview.cpp" line="274"/>
|
||||
<source>Label</source>
|
||||
<translation>Etiqueta</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../transactionview.cpp" line="258"/>
|
||||
<location filename="../transactionview.cpp" line="275"/>
|
||||
<source>Address</source>
|
||||
<translation>Dirección</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../transactionview.cpp" line="259"/>
|
||||
<location filename="../transactionview.cpp" line="276"/>
|
||||
<source>Amount</source>
|
||||
<translation>Cantidad</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../transactionview.cpp" line="260"/>
|
||||
<location filename="../transactionview.cpp" line="277"/>
|
||||
<source>ID</source>
|
||||
<translation>ID</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../transactionview.cpp" line="264"/>
|
||||
<location filename="../transactionview.cpp" line="281"/>
|
||||
<source>Error exporting</source>
|
||||
<translation>Error exportando</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../transactionview.cpp" line="264"/>
|
||||
<location filename="../transactionview.cpp" line="281"/>
|
||||
<source>Could not write to file %1.</source>
|
||||
<translation>No se pudo escribir en el archivo %1.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../transactionview.cpp" line="352"/>
|
||||
<location filename="../transactionview.cpp" line="369"/>
|
||||
<source>Range:</source>
|
||||
<translation>Rango:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../transactionview.cpp" line="360"/>
|
||||
<location filename="../transactionview.cpp" line="377"/>
|
||||
<source>to</source>
|
||||
<translation>para</translation>
|
||||
</message>
|
||||
@@ -2330,4 +2331,12 @@ pero la información de los comentarios quedará en blanco.</translation>
|
||||
<translation>beta</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>main</name>
|
||||
<message>
|
||||
<location filename="../bitcoin.cpp" line="145"/>
|
||||
<source>Bitcoin Qt</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
@@ -1,4 +1,5 @@
|
||||
<?xml version="1.0" ?><!DOCTYPE TS><TS language="nb" version="2.0">
|
||||
<defaultcodec>UTF-8</defaultcodec>
|
||||
<context>
|
||||
<name>AboutDialog</name>
|
||||
<message>
|
||||
@@ -11,7 +12,7 @@
|
||||
<source><b>Bitcoin</b> version</source>
|
||||
<translation><b>Bitcoin</b> versjon</translation>
|
||||
</message>
|
||||
<message utf8="true">
|
||||
<message>
|
||||
<location filename="../forms/aboutdialog.ui" line="85"/>
|
||||
<source>Copyright © 2009-2011 Bitcoin Developers
|
||||
|
||||
@@ -77,22 +78,22 @@ Dette produktet inneholder programvare utviklet av OpenSSL Prosjektet for bruk i
|
||||
<translation>&Slett</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../addressbookpage.cpp" line="197"/>
|
||||
<location filename="../addressbookpage.cpp" line="204"/>
|
||||
<source>Export Address Book Data</source>
|
||||
<translation>Eksporter adressebok</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../addressbookpage.cpp" line="199"/>
|
||||
<location filename="../addressbookpage.cpp" line="206"/>
|
||||
<source>Comma separated file (*.csv)</source>
|
||||
<translation>Kommaseparert fil (*.csv)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../addressbookpage.cpp" line="212"/>
|
||||
<location filename="../addressbookpage.cpp" line="219"/>
|
||||
<source>Error exporting</source>
|
||||
<translation>Feil ved eksportering</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../addressbookpage.cpp" line="212"/>
|
||||
<location filename="../addressbookpage.cpp" line="219"/>
|
||||
<source>Could not write to file %1.</source>
|
||||
<translation>Kunne ikke skrive til filen %1.</translation>
|
||||
</message>
|
||||
@@ -250,99 +251,74 @@ Er du sikker på at du vil kryptere lommeboken?</translation>
|
||||
<context>
|
||||
<name>BitcoinGUI</name>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="59"/>
|
||||
<location filename="../bitcoingui.cpp" line="63"/>
|
||||
<source>Bitcoin Wallet</source>
|
||||
<translation>Bitcoin Lommebok</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="67"/>
|
||||
<source>&File</source>
|
||||
<translation>&Fil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="73"/>
|
||||
<source>&Settings</source>
|
||||
<translation>&Innstillinger</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="79"/>
|
||||
<source>&Help</source>
|
||||
<translation>&Hjelp</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="83"/>
|
||||
<source>Tabs toolbar</source>
|
||||
<translation>Verktøylinje for faner</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="91"/>
|
||||
<source>Actions toolbar</source>
|
||||
<translation>Verktøylinje for handlinger</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="142"/>
|
||||
<location filename="../bitcoingui.cpp" line="132"/>
|
||||
<source>Synchronizing with network...</source>
|
||||
<translation>Synkroniserer med nettverk...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="145"/>
|
||||
<location filename="../bitcoingui.cpp" line="135"/>
|
||||
<source>Block chain synchronization in progress</source>
|
||||
<translation>Synkronisering av blokk-kjede igang</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="169"/>
|
||||
<location filename="../bitcoingui.cpp" line="164"/>
|
||||
<source>&Overview</source>
|
||||
<translation>&Oversikt</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="170"/>
|
||||
<location filename="../bitcoingui.cpp" line="165"/>
|
||||
<source>Show general overview of wallet</source>
|
||||
<translation>Vis generell oversikt over lommeboken</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="174"/>
|
||||
<location filename="../bitcoingui.cpp" line="170"/>
|
||||
<source>&Transactions</source>
|
||||
<translation>&Transaksjoner</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="175"/>
|
||||
<location filename="../bitcoingui.cpp" line="171"/>
|
||||
<source>Browse transaction history</source>
|
||||
<translation>Vis transaksjonshistorikk</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="179"/>
|
||||
<location filename="../bitcoingui.cpp" line="176"/>
|
||||
<source>&Address Book</source>
|
||||
<translation>&Adressebok</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="180"/>
|
||||
<location filename="../bitcoingui.cpp" line="177"/>
|
||||
<source>Edit the list of stored addresses and labels</source>
|
||||
<translation>Rediger listen over adresser og deres merkelapper</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="184"/>
|
||||
<location filename="../bitcoingui.cpp" line="182"/>
|
||||
<source>&Receive coins</source>
|
||||
<translation>&Motta bitcoins</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="185"/>
|
||||
<location filename="../bitcoingui.cpp" line="183"/>
|
||||
<source>Show the list of addresses for receiving payments</source>
|
||||
<translation>Vis listen over adresser for mottak av betalinger</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="189"/>
|
||||
<location filename="../bitcoingui.cpp" line="188"/>
|
||||
<source>&Send coins</source>
|
||||
<translation>&Send bitcoins</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="190"/>
|
||||
<location filename="../bitcoingui.cpp" line="189"/>
|
||||
<source>Send coins to a bitcoin address</source>
|
||||
<translation>Send bitcoins til en adresse</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="200"/>
|
||||
<source>&Exit</source>
|
||||
<translation>&Avslutt</translation>
|
||||
<source>E&xit</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="201"/>
|
||||
@@ -350,147 +326,172 @@ Er du sikker på at du vil kryptere lommeboken?</translation>
|
||||
<translation>Avslutt applikasjonen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="202"/>
|
||||
<source>&About</source>
|
||||
<translation>&Om</translation>
|
||||
<location filename="../bitcoingui.cpp" line="204"/>
|
||||
<source>&About %1</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="203"/>
|
||||
<location filename="../bitcoingui.cpp" line="205"/>
|
||||
<source>Show information about Bitcoin</source>
|
||||
<translation>Vis informasjon om Bitcoin</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="204"/>
|
||||
<location filename="../bitcoingui.cpp" line="207"/>
|
||||
<source>&Options...</source>
|
||||
<translation>&Innstillinger...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="205"/>
|
||||
<location filename="../bitcoingui.cpp" line="208"/>
|
||||
<source>Modify configuration options for bitcoin</source>
|
||||
<translation>Endre innstillinger for bitcoin</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="206"/>
|
||||
<location filename="../bitcoingui.cpp" line="210"/>
|
||||
<source>Open &Bitcoin</source>
|
||||
<translation>Åpne &Bitcoin</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="207"/>
|
||||
<location filename="../bitcoingui.cpp" line="211"/>
|
||||
<source>Show the Bitcoin window</source>
|
||||
<translation>Vis Bitcoin-vinduet</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="208"/>
|
||||
<location filename="../bitcoingui.cpp" line="212"/>
|
||||
<source>&Export...</source>
|
||||
<translation>&Eksporter...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="209"/>
|
||||
<location filename="../bitcoingui.cpp" line="213"/>
|
||||
<source>Export the current view to a file</source>
|
||||
<translation>Eksporter visningen til en fil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="210"/>
|
||||
<location filename="../bitcoingui.cpp" line="214"/>
|
||||
<source>&Encrypt Wallet</source>
|
||||
<translation>&Krypter Lommebok</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="211"/>
|
||||
<location filename="../bitcoingui.cpp" line="215"/>
|
||||
<source>Encrypt or decrypt wallet</source>
|
||||
<translation>Krypter eller dekrypter lommebok</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="213"/>
|
||||
<location filename="../bitcoingui.cpp" line="217"/>
|
||||
<source>&Change Passphrase</source>
|
||||
<translation>&Endre Adgangsfrase</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="214"/>
|
||||
<location filename="../bitcoingui.cpp" line="218"/>
|
||||
<source>Change the passphrase used for wallet encryption</source>
|
||||
<translation>Endre adgangsfrasen brukt for kryptering av lommebok</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="230"/>
|
||||
<location filename="../bitcoingui.cpp" line="239"/>
|
||||
<source>&File</source>
|
||||
<translation>&Fil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="242"/>
|
||||
<source>&Settings</source>
|
||||
<translation>&Innstillinger</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="248"/>
|
||||
<source>&Help</source>
|
||||
<translation>&Hjelp</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="254"/>
|
||||
<source>Tabs toolbar</source>
|
||||
<translation>Verktøylinje for faner</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="262"/>
|
||||
<source>Actions toolbar</source>
|
||||
<translation>Verktøylinje for handlinger</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="273"/>
|
||||
<source>[testnet]</source>
|
||||
<translation>[testnett]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="293"/>
|
||||
<location filename="../bitcoingui.cpp" line="355"/>
|
||||
<source>bitcoin-qt</source>
|
||||
<translation>bitcoin-qt</translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<location filename="../bitcoingui.cpp" line="332"/>
|
||||
<location filename="../bitcoingui.cpp" line="396"/>
|
||||
<source>%n active connection(s) to Bitcoin network</source>
|
||||
<translation><numerusform>%n aktiv forbindelse til Bitcoin nettverket</numerusform><numerusform>%n aktive forbindelser to Bitcoin nettverket</numerusform></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="347"/>
|
||||
<location filename="../bitcoingui.cpp" line="411"/>
|
||||
<source>Downloaded %1 of %2 blocks of transaction history.</source>
|
||||
<translation>Lastet ned %1 av %2 blokker med transaksjonshistorikk.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="353"/>
|
||||
<location filename="../bitcoingui.cpp" line="417"/>
|
||||
<source>Downloaded %1 blocks of transaction history.</source>
|
||||
<translation>Lastet ned %1 blokker med transaksjonshistorikk.</translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<location filename="../bitcoingui.cpp" line="364"/>
|
||||
<location filename="../bitcoingui.cpp" line="428"/>
|
||||
<source>%n second(s) ago</source>
|
||||
<translation><numerusform>%n sekund igjen</numerusform><numerusform>%n sekunder igjen</numerusform></translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<location filename="../bitcoingui.cpp" line="368"/>
|
||||
<location filename="../bitcoingui.cpp" line="432"/>
|
||||
<source>%n minute(s) ago</source>
|
||||
<translation><numerusform>%n minutt siden</numerusform><numerusform>%n minutter siden</numerusform></translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<location filename="../bitcoingui.cpp" line="372"/>
|
||||
<location filename="../bitcoingui.cpp" line="436"/>
|
||||
<source>%n hour(s) ago</source>
|
||||
<translation><numerusform>%n time siden</numerusform><numerusform>%n timer siden</numerusform></translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<location filename="../bitcoingui.cpp" line="376"/>
|
||||
<location filename="../bitcoingui.cpp" line="440"/>
|
||||
<source>%n day(s) ago</source>
|
||||
<translation><numerusform>%n dag siden</numerusform><numerusform>%n dager siden</numerusform></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="382"/>
|
||||
<location filename="../bitcoingui.cpp" line="446"/>
|
||||
<source>Up to date</source>
|
||||
<translation>Ajour</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="387"/>
|
||||
<location filename="../bitcoingui.cpp" line="451"/>
|
||||
<source>Catching up...</source>
|
||||
<translation>Kommer ajour...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="393"/>
|
||||
<location filename="../bitcoingui.cpp" line="457"/>
|
||||
<source>Last received block was generated %1.</source>
|
||||
<translation>Siste mottatte blokk ble generert %1.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="440"/>
|
||||
<location filename="../bitcoingui.cpp" line="508"/>
|
||||
<source>This transaction is over the size limit. You can still send it for a fee of %1, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee?</source>
|
||||
<translation>Denne transaksjonen overstiger størrelsesbegrensningen. Du kan likevel sende den med et gebyr på %1, som går til nodene som prosesserer transaksjonen din og støtter nettverket. Vil du betale gebyret?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="445"/>
|
||||
<location filename="../bitcoingui.cpp" line="513"/>
|
||||
<source>Sending...</source>
|
||||
<translation>Sender...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="470"/>
|
||||
<location filename="../bitcoingui.cpp" line="538"/>
|
||||
<source>Sent transaction</source>
|
||||
<translation>Sendt transaksjon</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="471"/>
|
||||
<location filename="../bitcoingui.cpp" line="539"/>
|
||||
<source>Incoming transaction</source>
|
||||
<translation>Innkommende transaksjon</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="472"/>
|
||||
<location filename="../bitcoingui.cpp" line="540"/>
|
||||
<source>Date: %1
|
||||
Amount: %2
|
||||
Type: %3
|
||||
@@ -503,12 +504,12 @@ Adresse: %4
|
||||
</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="566"/>
|
||||
<location filename="../bitcoingui.cpp" line="639"/>
|
||||
<source>Wallet is <b>encrypted</b> and currently <b>unlocked</b></source>
|
||||
<translation>Lommeboken er <b>kryptert</b> og for tiden <b>ulåst</b></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../bitcoingui.cpp" line="574"/>
|
||||
<location filename="../bitcoingui.cpp" line="647"/>
|
||||
<source>Wallet is <b>encrypted</b> and currently <b>locked</b></source>
|
||||
<translation>Lommeboken er <b>kryptert</b> og for tiden <b>låst</b></translation>
|
||||
</message>
|
||||
@@ -516,17 +517,17 @@ Adresse: %4
|
||||
<context>
|
||||
<name>DisplayOptionsPage</name>
|
||||
<message>
|
||||
<location filename="../optionsdialog.cpp" line="258"/>
|
||||
<location filename="../optionsdialog.cpp" line="270"/>
|
||||
<source>&Unit to show amounts in: </source>
|
||||
<translation>&Enhet for å vise beløp i: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../optionsdialog.cpp" line="262"/>
|
||||
<location filename="../optionsdialog.cpp" line="274"/>
|
||||
<source>Choose the default subdivision unit to show in the interface, and when sending coins</source>
|
||||
<translation>Velg standard underenhet som skal vises i grensesnittet og ved sending av mynter</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../optionsdialog.cpp" line="269"/>
|
||||
<location filename="../optionsdialog.cpp" line="281"/>
|
||||
<source>Display addresses in transaction list</source>
|
||||
<translation>Vis adresser i transaksjonslisten</translation>
|
||||
</message>
|
||||
@@ -602,87 +603,87 @@ Adresse: %4
|
||||
<context>
|
||||
<name>MainOptionsPage</name>
|
||||
<message>
|
||||
<location filename="../optionsdialog.cpp" line="166"/>
|
||||
<location filename="../optionsdialog.cpp" line="170"/>
|
||||
<source>&Start Bitcoin on window system startup</source>
|
||||
<translation>&Start Bitcoin ved oppstart</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../optionsdialog.cpp" line="167"/>
|
||||
<location filename="../optionsdialog.cpp" line="171"/>
|
||||
<source>Automatically start Bitcoin after the computer is turned on</source>
|
||||
<translation>Start Bitcoin automatisk når datamaskinen blir slått på</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../optionsdialog.cpp" line="170"/>
|
||||
<location filename="../optionsdialog.cpp" line="175"/>
|
||||
<source>&Minimize to the tray instead of the taskbar</source>
|
||||
<translation>&Minimer til systemkurv istedenfor oppgavelinjen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../optionsdialog.cpp" line="171"/>
|
||||
<location filename="../optionsdialog.cpp" line="176"/>
|
||||
<source>Show only a tray icon after minimizing the window</source>
|
||||
<translation>Vis kun ikon i systemkurv etter minimering av vinduet</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../optionsdialog.cpp" line="174"/>
|
||||
<location filename="../optionsdialog.cpp" line="180"/>
|
||||
<source>Map port using &UPnP</source>
|
||||
<translation>Sett opp port vha. &UPnP</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../optionsdialog.cpp" line="175"/>
|
||||
<location filename="../optionsdialog.cpp" line="181"/>
|
||||
<source>Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled.</source>
|
||||
<translation>Åpne automatisk Bitcoin klientporten på ruteren. Dette virker kun om din ruter støtter UPnP og dette er påslått.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../optionsdialog.cpp" line="178"/>
|
||||
<location filename="../optionsdialog.cpp" line="185"/>
|
||||
<source>M&inimize on close</source>
|
||||
<translation>M&inimér ved lukking</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../optionsdialog.cpp" line="179"/>
|
||||
<location filename="../optionsdialog.cpp" line="186"/>
|
||||
<source>Minimize instead of exit the application when the window is closed. When this option is enabled, the application will be closed only after selecting Quit in the menu.</source>
|
||||
<translation>Minimerer vinduet istedenfor å avslutte applikasjonen når vinduet lukkes. Når dette er slått på avsluttes applikasjonen kun ved å velge avslutt i menyen.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../optionsdialog.cpp" line="182"/>
|
||||
<location filename="../optionsdialog.cpp" line="190"/>
|
||||
<source>&Connect through SOCKS4 proxy:</source>
|
||||
<translation>&Koble til gjennom SOCKS4 proxy:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../optionsdialog.cpp" line="183"/>
|
||||
<location filename="../optionsdialog.cpp" line="191"/>
|
||||
<source>Connect to the Bitcon network through a SOCKS4 proxy (e.g. when connecting through Tor)</source>
|
||||
<translation>Koble til Bitcoin nettverket gjennom en SOCKS4 mellomtjener (f.eks. for tilkobling gjennom Tor)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../optionsdialog.cpp" line="188"/>
|
||||
<location filename="../optionsdialog.cpp" line="196"/>
|
||||
<source>Proxy &IP: </source>
|
||||
<translation>Mellomtjeners &IP: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../optionsdialog.cpp" line="194"/>
|
||||
<location filename="../optionsdialog.cpp" line="202"/>
|
||||
<source>IP address of the proxy (e.g. 127.0.0.1)</source>
|
||||
<translation>IP-adresse for mellomtjener (f.eks. 127.0.0.1)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../optionsdialog.cpp" line="197"/>
|
||||
<location filename="../optionsdialog.cpp" line="205"/>
|
||||
<source>&Port: </source>
|
||||
<translation>&Port: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../optionsdialog.cpp" line="203"/>
|
||||
<location filename="../optionsdialog.cpp" line="211"/>
|
||||
<source>Port of the proxy (e.g. 1234)</source>
|
||||
<translation>Port for mellomtjener (f.eks. 1234)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../optionsdialog.cpp" line="209"/>
|
||||
<location filename="../optionsdialog.cpp" line="217"/>
|
||||
<source>Optional transaction fee per KB that helps make sure your transactions are processed quickly. Most transactions are 1KB. Fee 0.01 recommended.</source>
|
||||
<translation>Valgfritt transaksjonsgebyr per KB som hjelper for å sikre at transaksjonene dine blir raskt prosessert. De fleste transaksjoner er 1KB. Et gebyr på 0.01 anbefales.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../optionsdialog.cpp" line="215"/>
|
||||
<location filename="../optionsdialog.cpp" line="223"/>
|
||||
<source>Pay transaction &fee</source>
|
||||
<translation>Betal transaksjons&gebyr</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../optionsdialog.cpp" line="218"/>
|
||||
<location filename="../optionsdialog.cpp" line="226"/>
|
||||
<source>Optional transaction fee per KB that helps make sure your transactions are processed quickly. Most transactions are 1KB. Fee 0.01 recommended.</source>
|
||||
<translation>Valgfritt transaksjonsgebyr per KB som hjelper for å sikre at transaksjonene dine blir raskt prosessert. De fleste transaksjoner er 1KB. Et gebyr på 0.01 anbefales.</translation>
|
||||
</message>
|
||||
@@ -690,17 +691,17 @@ Adresse: %4
|
||||
<context>
|
||||
<name>OptionsDialog</name>
|
||||
<message>
|
||||
<location filename="../optionsdialog.cpp" line="75"/>
|
||||
<location filename="../optionsdialog.cpp" line="79"/>
|
||||
<source>Main</source>
|
||||
<translation>Hoved</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../optionsdialog.cpp" line="80"/>
|
||||
<location filename="../optionsdialog.cpp" line="84"/>
|
||||
<source>Display</source>
|
||||
<translation>Visning</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../optionsdialog.cpp" line="100"/>
|
||||
<location filename="../optionsdialog.cpp" line="104"/>
|
||||
<source>Options</source>
|
||||
<translation>Innstillinger</translation>
|
||||
</message>
|
||||
@@ -780,103 +781,103 @@ p, li { white-space: pre-wrap; }
|
||||
<name>SendCoinsDialog</name>
|
||||
<message>
|
||||
<location filename="../forms/sendcoinsdialog.ui" line="14"/>
|
||||
<location filename="../sendcoinsdialog.cpp" line="103"/>
|
||||
<location filename="../sendcoinsdialog.cpp" line="108"/>
|
||||
<location filename="../sendcoinsdialog.cpp" line="113"/>
|
||||
<location filename="../sendcoinsdialog.cpp" line="118"/>
|
||||
<location filename="../sendcoinsdialog.cpp" line="109"/>
|
||||
<location filename="../sendcoinsdialog.cpp" line="114"/>
|
||||
<location filename="../sendcoinsdialog.cpp" line="119"/>
|
||||
<location filename="../sendcoinsdialog.cpp" line="124"/>
|
||||
<location filename="../sendcoinsdialog.cpp" line="129"/>
|
||||
<location filename="../sendcoinsdialog.cpp" line="134"/>
|
||||
<location filename="../sendcoinsdialog.cpp" line="130"/>
|
||||
<location filename="../sendcoinsdialog.cpp" line="135"/>
|
||||
<location filename="../sendcoinsdialog.cpp" line="140"/>
|
||||
<source>Send Coins</source>
|
||||
<translation>Send Bitcoins</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../forms/sendcoinsdialog.ui" line="67"/>
|
||||
<location filename="../forms/sendcoinsdialog.ui" line="64"/>
|
||||
<source>Send to multiple recipients at once</source>
|
||||
<translation>Send til flere enn én mottaker</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../forms/sendcoinsdialog.ui" line="70"/>
|
||||
<location filename="../forms/sendcoinsdialog.ui" line="67"/>
|
||||
<source>&Add recipient...</source>
|
||||
<translation>&Legg til mottaker...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../forms/sendcoinsdialog.ui" line="87"/>
|
||||
<location filename="../forms/sendcoinsdialog.ui" line="84"/>
|
||||
<source>Clear all</source>
|
||||
<translation>Fjern alle</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../forms/sendcoinsdialog.ui" line="106"/>
|
||||
<location filename="../forms/sendcoinsdialog.ui" line="103"/>
|
||||
<source>Balance:</source>
|
||||
<translation>Saldo:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../forms/sendcoinsdialog.ui" line="113"/>
|
||||
<location filename="../forms/sendcoinsdialog.ui" line="110"/>
|
||||
<source>123.456 BTC</source>
|
||||
<translation>123.456 BTC</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../forms/sendcoinsdialog.ui" line="144"/>
|
||||
<location filename="../forms/sendcoinsdialog.ui" line="141"/>
|
||||
<source>Confirm the send action</source>
|
||||
<translation>Bekreft sending</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../forms/sendcoinsdialog.ui" line="147"/>
|
||||
<location filename="../forms/sendcoinsdialog.ui" line="144"/>
|
||||
<source>&Send</source>
|
||||
<translation>&Send</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../sendcoinsdialog.cpp" line="79"/>
|
||||
<location filename="../sendcoinsdialog.cpp" line="85"/>
|
||||
<source><b>%1</b> to %2 (%3)</source>
|
||||
<translation><b>%1</b> til %2 (%3)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../sendcoinsdialog.cpp" line="82"/>
|
||||
<location filename="../sendcoinsdialog.cpp" line="88"/>
|
||||
<source>Confirm send coins</source>
|
||||
<translation>Bekreft sending av bitcoins</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../sendcoinsdialog.cpp" line="83"/>
|
||||
<location filename="../sendcoinsdialog.cpp" line="89"/>
|
||||
<source>Are you sure you want to send %1?</source>
|
||||
<translation>Er du sikker på at du vil sende %1?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../sendcoinsdialog.cpp" line="83"/>
|
||||
<location filename="../sendcoinsdialog.cpp" line="89"/>
|
||||
<source> and </source>
|
||||
<translation> og </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../sendcoinsdialog.cpp" line="104"/>
|
||||
<location filename="../sendcoinsdialog.cpp" line="110"/>
|
||||
<source>The recepient address is not valid, please recheck.</source>
|
||||
<translation>Mottaksadressen er ugyldig, prøv igjen.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../sendcoinsdialog.cpp" line="109"/>
|
||||
<location filename="../sendcoinsdialog.cpp" line="115"/>
|
||||
<source>The amount to pay must be larger than 0.</source>
|
||||
<translation>Beløpen som skal betales må være over 0.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../sendcoinsdialog.cpp" line="114"/>
|
||||
<location filename="../sendcoinsdialog.cpp" line="120"/>
|
||||
<source>Amount exceeds your balance</source>
|
||||
<translation>Beløpet overstiger saldoen din</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../sendcoinsdialog.cpp" line="119"/>
|
||||
<location filename="../sendcoinsdialog.cpp" line="125"/>
|
||||
<source>Total exceeds your balance when the %1 transaction fee is included</source>
|
||||
<translation>Totalen overgår din saldo når transaksjonsgebyret på %1 tas med</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../sendcoinsdialog.cpp" line="125"/>
|
||||
<location filename="../sendcoinsdialog.cpp" line="131"/>
|
||||
<source>Duplicate address found, can only send to each address once in one send operation</source>
|
||||
<translation>Duplikate adresser funnet, kan kun sende til hver adresse en gang i hver sendeoperasjon</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../sendcoinsdialog.cpp" line="130"/>
|
||||
<location filename="../sendcoinsdialog.cpp" line="136"/>
|
||||
<source>Error: Transaction creation failed </source>
|
||||
<translation>Feil: Opprettelse av transaksjon feilet </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../sendcoinsdialog.cpp" line="135"/>
|
||||
<location filename="../sendcoinsdialog.cpp" line="141"/>
|
||||
<source>Error: The transaction was rejected. This might happen if some of the coins in your wallet were already spent, such as if you used a copy of wallet.dat and coins were spent in the copy but not marked as spent here.</source>
|
||||
<translation>Feil: Transaksjonen ble avvist. Dette kan skje hvis noen av myntene i lommeboken allerede var brukt, f.eks. hvis du kopierte wallet.dat og mynter ble brukt i kopien uten å bli markert brukt her.</translation>
|
||||
</message>
|
||||
@@ -900,7 +901,7 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../forms/sendcoinsentry.ui" line="66"/>
|
||||
<location filename="../sendcoinsentry.cpp" line="22"/>
|
||||
<location filename="../sendcoinsentry.cpp" line="26"/>
|
||||
<source>Enter a label for this address to add it to your address book</source>
|
||||
<translation>Skriv inn en merkelapp for denne adressen for å legge den til i din adressebok</translation>
|
||||
</message>
|
||||
@@ -925,22 +926,22 @@ p, li { white-space: pre-wrap; }
|
||||
<translation>Alt+A</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../forms/sendcoinsentry.ui" line="126"/>
|
||||
<location filename="../forms/sendcoinsentry.ui" line="120"/>
|
||||
<source>Paste address from clipboard</source>
|
||||
<translation>Lim inn adresse fra utklippstavlen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../forms/sendcoinsentry.ui" line="136"/>
|
||||
<location filename="../forms/sendcoinsentry.ui" line="130"/>
|
||||
<source>Alt+P</source>
|
||||
<translation>Alt+P</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../forms/sendcoinsentry.ui" line="146"/>
|
||||
<location filename="../forms/sendcoinsentry.ui" line="137"/>
|
||||
<source>Remove this recipient</source>
|
||||
<translation>Fjern denne mottakeren</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../sendcoinsentry.cpp" line="21"/>
|
||||
<location filename="../sendcoinsentry.cpp" line="25"/>
|
||||
<source>Enter a Bitcoin address (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L)</source>
|
||||
<translation>Skriv inn en Bitcoin adresse (f.eks. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L)</translation>
|
||||
</message>
|
||||
@@ -1220,158 +1221,158 @@ p, li { white-space: pre-wrap; }
|
||||
<context>
|
||||
<name>TransactionView</name>
|
||||
<message>
|
||||
<location filename="../transactionview.cpp" line="48"/>
|
||||
<location filename="../transactionview.cpp" line="61"/>
|
||||
<location filename="../transactionview.cpp" line="55"/>
|
||||
<location filename="../transactionview.cpp" line="71"/>
|
||||
<source>All</source>
|
||||
<translation>Alle</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../transactionview.cpp" line="49"/>
|
||||
<location filename="../transactionview.cpp" line="56"/>
|
||||
<source>Today</source>
|
||||
<translation>I dag</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../transactionview.cpp" line="50"/>
|
||||
<location filename="../transactionview.cpp" line="57"/>
|
||||
<source>This week</source>
|
||||
<translation>Denne uken</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../transactionview.cpp" line="51"/>
|
||||
<location filename="../transactionview.cpp" line="58"/>
|
||||
<source>This month</source>
|
||||
<translation>Denne måneden</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../transactionview.cpp" line="52"/>
|
||||
<location filename="../transactionview.cpp" line="59"/>
|
||||
<source>Last month</source>
|
||||
<translation>Forrige måned</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../transactionview.cpp" line="53"/>
|
||||
<location filename="../transactionview.cpp" line="60"/>
|
||||
<source>This year</source>
|
||||
<translation>Dette året</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../transactionview.cpp" line="54"/>
|
||||
<location filename="../transactionview.cpp" line="61"/>
|
||||
<source>Range...</source>
|
||||
<translation>Intervall...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../transactionview.cpp" line="62"/>
|
||||
<location filename="../transactionview.cpp" line="72"/>
|
||||
<source>Received with</source>
|
||||
<translation>Mottatt med</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../transactionview.cpp" line="64"/>
|
||||
<location filename="../transactionview.cpp" line="74"/>
|
||||
<source>Sent to</source>
|
||||
<translation>Sendt til</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../transactionview.cpp" line="66"/>
|
||||
<location filename="../transactionview.cpp" line="76"/>
|
||||
<source>To yourself</source>
|
||||
<translation>Til deg selv</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../transactionview.cpp" line="67"/>
|
||||
<location filename="../transactionview.cpp" line="77"/>
|
||||
<source>Mined</source>
|
||||
<translation>Utvunnet</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../transactionview.cpp" line="68"/>
|
||||
<location filename="../transactionview.cpp" line="78"/>
|
||||
<source>Other</source>
|
||||
<translation>Andre</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../transactionview.cpp" line="74"/>
|
||||
<location filename="../transactionview.cpp" line="84"/>
|
||||
<source>Enter address or label to search</source>
|
||||
<translation>Skriv inn adresse eller merkelapp for søk</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../transactionview.cpp" line="80"/>
|
||||
<location filename="../transactionview.cpp" line="90"/>
|
||||
<source>Min amount</source>
|
||||
<translation>Minimumsbeløp</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../transactionview.cpp" line="108"/>
|
||||
<location filename="../transactionview.cpp" line="125"/>
|
||||
<source>Copy address</source>
|
||||
<translation>Kopier adresse</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../transactionview.cpp" line="109"/>
|
||||
<location filename="../transactionview.cpp" line="126"/>
|
||||
<source>Copy label</source>
|
||||
<translation>Kopier merkelapp</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../transactionview.cpp" line="110"/>
|
||||
<location filename="../transactionview.cpp" line="127"/>
|
||||
<source>Edit label</source>
|
||||
<translation>Rediger merkelapp</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../transactionview.cpp" line="111"/>
|
||||
<location filename="../transactionview.cpp" line="128"/>
|
||||
<source>Show details...</source>
|
||||
<translation>Vis detaljer...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../transactionview.cpp" line="244"/>
|
||||
<location filename="../transactionview.cpp" line="261"/>
|
||||
<source>Export Transaction Data</source>
|
||||
<translation>Eksporter transaksjonsdata</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../transactionview.cpp" line="246"/>
|
||||
<location filename="../transactionview.cpp" line="263"/>
|
||||
<source>Comma separated file (*.csv)</source>
|
||||
<translation>Kommaseparert fil (*.csv)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../transactionview.cpp" line="254"/>
|
||||
<location filename="../transactionview.cpp" line="271"/>
|
||||
<source>Confirmed</source>
|
||||
<translation>Bekreftet</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../transactionview.cpp" line="255"/>
|
||||
<location filename="../transactionview.cpp" line="272"/>
|
||||
<source>Date</source>
|
||||
<translation>Dato</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../transactionview.cpp" line="256"/>
|
||||
<location filename="../transactionview.cpp" line="273"/>
|
||||
<source>Type</source>
|
||||
<translation>Type</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../transactionview.cpp" line="257"/>
|
||||
<location filename="../transactionview.cpp" line="274"/>
|
||||
<source>Label</source>
|
||||
<translation>Merkelapp</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../transactionview.cpp" line="258"/>
|
||||
<location filename="../transactionview.cpp" line="275"/>
|
||||
<source>Address</source>
|
||||
<translation>Adresse</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../transactionview.cpp" line="259"/>
|
||||
<location filename="../transactionview.cpp" line="276"/>
|
||||
<source>Amount</source>
|
||||
<translation>Beløp</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../transactionview.cpp" line="260"/>
|
||||
<location filename="../transactionview.cpp" line="277"/>
|
||||
<source>ID</source>
|
||||
<translation>ID</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../transactionview.cpp" line="264"/>
|
||||
<location filename="../transactionview.cpp" line="281"/>
|
||||
<source>Error exporting</source>
|
||||
<translation>Feil ved eksport</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../transactionview.cpp" line="264"/>
|
||||
<location filename="../transactionview.cpp" line="281"/>
|
||||
<source>Could not write to file %1.</source>
|
||||
<translation>Kunne ikke skrive til filen %1.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../transactionview.cpp" line="352"/>
|
||||
<location filename="../transactionview.cpp" line="369"/>
|
||||
<source>Range:</source>
|
||||
<translation>Intervall:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../transactionview.cpp" line="360"/>
|
||||
<location filename="../transactionview.cpp" line="377"/>
|
||||
<source>to</source>
|
||||
<translation>til</translation>
|
||||
</message>
|
||||
@@ -2326,4 +2327,12 @@ men kommentaren vil bli blank.</translation>
|
||||
<translation>beta</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>main</name>
|
||||
<message>
|
||||
<location filename="../bitcoin.cpp" line="145"/>
|
||||
<source>Bitcoin Qt</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
2333
src/qt/locale/bitcoin_zh_TW.ts
Normal file
@@ -143,30 +143,34 @@ void OverviewPage::setNumTransactions(int count)
|
||||
void OverviewPage::setModel(WalletModel *model)
|
||||
{
|
||||
this->model = model;
|
||||
if(model)
|
||||
{
|
||||
// Set up transaction list
|
||||
TransactionFilterProxy *filter = new TransactionFilterProxy();
|
||||
filter->setSourceModel(model->getTransactionTableModel());
|
||||
filter->setLimit(NUM_ITEMS);
|
||||
filter->setDynamicSortFilter(true);
|
||||
filter->setSortRole(Qt::EditRole);
|
||||
filter->sort(TransactionTableModel::Status, Qt::DescendingOrder);
|
||||
|
||||
// Set up transaction list
|
||||
TransactionFilterProxy *filter = new TransactionFilterProxy();
|
||||
filter->setSourceModel(model->getTransactionTableModel());
|
||||
filter->setLimit(NUM_ITEMS);
|
||||
filter->setDynamicSortFilter(true);
|
||||
filter->setSortRole(Qt::EditRole);
|
||||
filter->sort(TransactionTableModel::Status, Qt::DescendingOrder);
|
||||
ui->listTransactions->setModel(filter);
|
||||
ui->listTransactions->setModelColumn(TransactionTableModel::ToAddress);
|
||||
|
||||
ui->listTransactions->setModel(filter);
|
||||
ui->listTransactions->setModelColumn(TransactionTableModel::ToAddress);
|
||||
// Keep up to date with wallet
|
||||
setBalance(model->getBalance(), model->getUnconfirmedBalance());
|
||||
connect(model, SIGNAL(balanceChanged(qint64, qint64)), this, SLOT(setBalance(qint64, qint64)));
|
||||
|
||||
// Keep up to date with wallet
|
||||
setBalance(model->getBalance(), model->getUnconfirmedBalance());
|
||||
connect(model, SIGNAL(balanceChanged(qint64, qint64)), this, SLOT(setBalance(qint64, qint64)));
|
||||
setNumTransactions(model->getNumTransactions());
|
||||
connect(model, SIGNAL(numTransactionsChanged(int)), this, SLOT(setNumTransactions(int)));
|
||||
|
||||
setNumTransactions(model->getNumTransactions());
|
||||
connect(model, SIGNAL(numTransactionsChanged(int)), this, SLOT(setNumTransactions(int)));
|
||||
|
||||
connect(model->getOptionsModel(), SIGNAL(displayUnitChanged(int)), this, SLOT(displayUnitChanged()));
|
||||
connect(model->getOptionsModel(), SIGNAL(displayUnitChanged(int)), this, SLOT(displayUnitChanged()));
|
||||
}
|
||||
}
|
||||
|
||||
void OverviewPage::displayUnitChanged()
|
||||
{
|
||||
if(!model || !model->getOptionsModel())
|
||||
return;
|
||||
if(currentBalance != -1)
|
||||
setBalance(currentBalance, currentUnconfirmedBalance);
|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 746 B After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 6.9 KiB After Width: | Height: | Size: 7.8 KiB |
|
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 698 B After Width: | Height: | Size: 781 B |
@@ -43,9 +43,11 @@ void SendCoinsDialog::setModel(WalletModel *model)
|
||||
entry->setModel(model);
|
||||
}
|
||||
}
|
||||
|
||||
setBalance(model->getBalance(), model->getUnconfirmedBalance());
|
||||
connect(model, SIGNAL(balanceChanged(qint64, qint64)), this, SLOT(setBalance(qint64, qint64)));
|
||||
if(model)
|
||||
{
|
||||
setBalance(model->getBalance(), model->getUnconfirmedBalance());
|
||||
connect(model, SIGNAL(balanceChanged(qint64, qint64)), this, SLOT(setBalance(qint64, qint64)));
|
||||
}
|
||||
}
|
||||
|
||||
SendCoinsDialog::~SendCoinsDialog()
|
||||
@@ -57,6 +59,10 @@ void SendCoinsDialog::on_sendButton_clicked()
|
||||
{
|
||||
QList<SendCoinsRecipient> recipients;
|
||||
bool valid = true;
|
||||
|
||||
if(!model)
|
||||
return;
|
||||
|
||||
for(int i = 0; i < ui->entries->count(); ++i)
|
||||
{
|
||||
SendCoinsEntry *entry = qobject_cast<SendCoinsEntry*>(ui->entries->itemAt(i)->widget());
|
||||
@@ -255,6 +261,9 @@ void SendCoinsDialog::handleURL(const QUrl *url)
|
||||
void SendCoinsDialog::setBalance(qint64 balance, qint64 unconfirmedBalance)
|
||||
{
|
||||
Q_UNUSED(unconfirmedBalance);
|
||||
if(!model || !model->getOptionsModel())
|
||||
return;
|
||||
|
||||
int unit = model->getOptionsModel()->getDisplayUnit();
|
||||
ui->labelBalance->setText(BitcoinUnits::formatWithUnit(unit, balance));
|
||||
}
|
||||
|
||||
@@ -44,6 +44,8 @@ void SendCoinsEntry::on_pasteButton_clicked()
|
||||
|
||||
void SendCoinsEntry::on_addressBookButton_clicked()
|
||||
{
|
||||
if(!model)
|
||||
return;
|
||||
AddressBookPage dlg(AddressBookPage::ForSending, AddressBookPage::SendingTab, this);
|
||||
dlg.setModel(model->getAddressTableModel());
|
||||
if(dlg.exec())
|
||||
@@ -55,6 +57,8 @@ void SendCoinsEntry::on_addressBookButton_clicked()
|
||||
|
||||
void SendCoinsEntry::on_payTo_textChanged(const QString &address)
|
||||
{
|
||||
if(!model)
|
||||
return;
|
||||
ui->addAsLabel->setText(model->getAddressTableModel()->labelForAddress(address));
|
||||
}
|
||||
|
||||
@@ -74,7 +78,7 @@ void SendCoinsEntry::clear()
|
||||
ui->addAsLabel->clear();
|
||||
ui->payAmount->clear();
|
||||
ui->payTo->setFocus();
|
||||
if(model)
|
||||
if(model && model->getOptionsModel())
|
||||
{
|
||||
ui->payAmount->setDisplayUnit(model->getOptionsModel()->getDisplayUnit());
|
||||
}
|
||||
|
||||
@@ -155,36 +155,39 @@ TransactionView::TransactionView(QWidget *parent) :
|
||||
void TransactionView::setModel(WalletModel *model)
|
||||
{
|
||||
this->model = model;
|
||||
if(model)
|
||||
{
|
||||
transactionProxyModel = new TransactionFilterProxy(this);
|
||||
transactionProxyModel->setSourceModel(model->getTransactionTableModel());
|
||||
transactionProxyModel->setDynamicSortFilter(true);
|
||||
|
||||
transactionProxyModel = new TransactionFilterProxy(this);
|
||||
transactionProxyModel->setSourceModel(model->getTransactionTableModel());
|
||||
transactionProxyModel->setDynamicSortFilter(true);
|
||||
transactionProxyModel->setSortRole(Qt::EditRole);
|
||||
|
||||
transactionProxyModel->setSortRole(Qt::EditRole);
|
||||
|
||||
transactionView->setModel(transactionProxyModel);
|
||||
transactionView->setAlternatingRowColors(true);
|
||||
transactionView->setSelectionBehavior(QAbstractItemView::SelectRows);
|
||||
transactionView->setSelectionMode(QAbstractItemView::ExtendedSelection);
|
||||
transactionView->setSortingEnabled(true);
|
||||
transactionView->sortByColumn(TransactionTableModel::Status, Qt::DescendingOrder);
|
||||
transactionView->verticalHeader()->hide();
|
||||
|
||||
transactionView->horizontalHeader()->resizeSection(
|
||||
TransactionTableModel::Status, 23);
|
||||
transactionView->horizontalHeader()->resizeSection(
|
||||
TransactionTableModel::Date, 120);
|
||||
transactionView->horizontalHeader()->resizeSection(
|
||||
TransactionTableModel::Type, 120);
|
||||
transactionView->horizontalHeader()->setResizeMode(
|
||||
TransactionTableModel::ToAddress, QHeaderView::Stretch);
|
||||
transactionView->horizontalHeader()->resizeSection(
|
||||
TransactionTableModel::Amount, 100);
|
||||
transactionView->setModel(transactionProxyModel);
|
||||
transactionView->setAlternatingRowColors(true);
|
||||
transactionView->setSelectionBehavior(QAbstractItemView::SelectRows);
|
||||
transactionView->setSelectionMode(QAbstractItemView::ExtendedSelection);
|
||||
transactionView->setSortingEnabled(true);
|
||||
transactionView->sortByColumn(TransactionTableModel::Status, Qt::DescendingOrder);
|
||||
transactionView->verticalHeader()->hide();
|
||||
|
||||
transactionView->horizontalHeader()->resizeSection(
|
||||
TransactionTableModel::Status, 23);
|
||||
transactionView->horizontalHeader()->resizeSection(
|
||||
TransactionTableModel::Date, 120);
|
||||
transactionView->horizontalHeader()->resizeSection(
|
||||
TransactionTableModel::Type, 120);
|
||||
transactionView->horizontalHeader()->setResizeMode(
|
||||
TransactionTableModel::ToAddress, QHeaderView::Stretch);
|
||||
transactionView->horizontalHeader()->resizeSection(
|
||||
TransactionTableModel::Amount, 100);
|
||||
}
|
||||
}
|
||||
|
||||
void TransactionView::chooseDate(int idx)
|
||||
{
|
||||
if(!transactionProxyModel)
|
||||
return;
|
||||
QDate current = QDate::currentDate();
|
||||
dateRangeWidget->setVisible(false);
|
||||
switch(dateWidget->itemData(idx).toInt())
|
||||
@@ -231,17 +234,23 @@ void TransactionView::chooseDate(int idx)
|
||||
|
||||
void TransactionView::chooseType(int idx)
|
||||
{
|
||||
if(!transactionProxyModel)
|
||||
return;
|
||||
transactionProxyModel->setTypeFilter(
|
||||
typeWidget->itemData(idx).toInt());
|
||||
}
|
||||
|
||||
void TransactionView::changedPrefix(const QString &prefix)
|
||||
{
|
||||
if(!transactionProxyModel)
|
||||
return;
|
||||
transactionProxyModel->setAddressPrefix(prefix);
|
||||
}
|
||||
|
||||
void TransactionView::changedAmount(const QString &amount)
|
||||
{
|
||||
if(!transactionProxyModel)
|
||||
return;
|
||||
qint64 amount_parsed = 0;
|
||||
if(BitcoinUnits::parse(model->getOptionsModel()->getDisplayUnit(), amount, &amount_parsed))
|
||||
{
|
||||
@@ -294,6 +303,8 @@ void TransactionView::contextualMenu(const QPoint &point)
|
||||
|
||||
void TransactionView::copyAddress()
|
||||
{
|
||||
if(!transactionView->selectionModel())
|
||||
return;
|
||||
QModelIndexList selection = transactionView->selectionModel()->selectedRows();
|
||||
if(!selection.isEmpty())
|
||||
{
|
||||
@@ -303,6 +314,8 @@ void TransactionView::copyAddress()
|
||||
|
||||
void TransactionView::copyLabel()
|
||||
{
|
||||
if(!transactionView->selectionModel())
|
||||
return;
|
||||
QModelIndexList selection = transactionView->selectionModel()->selectedRows();
|
||||
if(!selection.isEmpty())
|
||||
{
|
||||
@@ -312,16 +325,22 @@ void TransactionView::copyLabel()
|
||||
|
||||
void TransactionView::editLabel()
|
||||
{
|
||||
if(!transactionView->selectionModel() ||!model)
|
||||
return;
|
||||
QModelIndexList selection = transactionView->selectionModel()->selectedRows();
|
||||
if(!selection.isEmpty())
|
||||
{
|
||||
AddressTableModel *addressBook = model->getAddressTableModel();
|
||||
if(!addressBook)
|
||||
return;
|
||||
QString address = selection.at(0).data(TransactionTableModel::AddressRole).toString();
|
||||
if(address.isEmpty())
|
||||
{
|
||||
// If this transaction has no associated address, exit
|
||||
return;
|
||||
}
|
||||
// Is address in address book? Address book can miss address when a transaction is
|
||||
// sent from outside the UI.
|
||||
int idx = addressBook->lookupAddress(address);
|
||||
if(idx != -1)
|
||||
{
|
||||
@@ -343,6 +362,8 @@ void TransactionView::editLabel()
|
||||
// Add sending address
|
||||
EditAddressDialog dlg(EditAddressDialog::NewSendingAddress,
|
||||
this);
|
||||
dlg.setModel(addressBook);
|
||||
dlg.setAddress(address);
|
||||
dlg.exec();
|
||||
}
|
||||
}
|
||||
@@ -350,6 +371,8 @@ void TransactionView::editLabel()
|
||||
|
||||
void TransactionView::showDetails()
|
||||
{
|
||||
if(!transactionView->selectionModel())
|
||||
return;
|
||||
QModelIndexList selection = transactionView->selectionModel()->selectedRows();
|
||||
if(!selection.isEmpty())
|
||||
{
|
||||
@@ -396,6 +419,8 @@ QWidget *TransactionView::createDateRangeWidget()
|
||||
|
||||
void TransactionView::dateRangeChanged()
|
||||
{
|
||||
if(!transactionProxyModel)
|
||||
return;
|
||||
transactionProxyModel->setDateRange(
|
||||
QDateTime(dateFrom->date()),
|
||||
QDateTime(dateTo->date()).addDays(1));
|
||||
|
||||
@@ -60,7 +60,7 @@ class CDataStream;
|
||||
class CAutoFile;
|
||||
static const unsigned int MAX_SIZE = 0x02000000;
|
||||
|
||||
static const int VERSION = 50000;
|
||||
static const int VERSION = 50001;
|
||||
static const char* pszSubVer = "";
|
||||
static const bool VERSION_IS_BETA = true;
|
||||
|
||||
|
||||
@@ -187,6 +187,13 @@ bool CWallet::EncryptWallet(const string& strWalletPassphrase)
|
||||
}
|
||||
|
||||
Lock();
|
||||
Unlock(strWalletPassphrase);
|
||||
NewKeyPool();
|
||||
Lock();
|
||||
|
||||
// Need to completely rewrite the wallet file; if we don't, bdb might keep
|
||||
// bits of the unencrypted private key in slack space in the database file.
|
||||
CDB::Rewrite(strWalletFile);
|
||||
}
|
||||
|
||||
return true;
|
||||
@@ -289,6 +296,9 @@ bool CWallet::AddToWallet(const CWalletTx& wtxIn)
|
||||
return true;
|
||||
}
|
||||
|
||||
// Add a transaction to the wallet, or update it.
|
||||
// pblock is optional, but should be provided if the transaction is known to be in a block.
|
||||
// If fUpdate is true, existing transactions will be updated.
|
||||
bool CWallet::AddToWalletIfInvolvingMe(const CTransaction& tx, const CBlock* pblock, bool fUpdate)
|
||||
{
|
||||
uint256 hash = tx.GetHash();
|
||||
@@ -551,6 +561,9 @@ bool CWalletTx::WriteToDisk()
|
||||
return CWalletDB(pwallet->strWalletFile).WriteTx(GetHash(), *this);
|
||||
}
|
||||
|
||||
// Scan the block chain (starting in pindexStart) for transactions
|
||||
// from or to us. If fUpdate is true, found transactions that already
|
||||
// exist in the wallet will be updated.
|
||||
int CWallet::ScanForWalletTransactions(CBlockIndex* pindexStart, bool fUpdate)
|
||||
{
|
||||
int ret = 0;
|
||||
@@ -1136,6 +1149,18 @@ int CWallet::LoadWallet(bool& fFirstRunRet)
|
||||
return false;
|
||||
fFirstRunRet = false;
|
||||
int nLoadWalletRet = CWalletDB(strWalletFile,"cr+").LoadWallet(this);
|
||||
if (nLoadWalletRet == DB_NEED_REWRITE)
|
||||
{
|
||||
if (CDB::Rewrite(strWalletFile, "\x04pool"))
|
||||
{
|
||||
setKeyPool.clear();
|
||||
// Note: can't top-up keypool here, because wallet is locked.
|
||||
// User will be prompted to unlock wallet the next operation
|
||||
// the requires a new key.
|
||||
}
|
||||
nLoadWalletRet = DB_NEED_REWRITE;
|
||||
}
|
||||
|
||||
if (nLoadWalletRet != DB_LOAD_OK)
|
||||
return nLoadWalletRet;
|
||||
fFirstRunRet = vchDefaultKey.empty();
|
||||
@@ -1221,6 +1246,34 @@ bool GetWalletFile(CWallet* pwallet, string &strWalletFileOut)
|
||||
return true;
|
||||
}
|
||||
|
||||
//
|
||||
// Mark old keypool keys as used,
|
||||
// and generate all new keys
|
||||
//
|
||||
bool CWallet::NewKeyPool()
|
||||
{
|
||||
CRITICAL_BLOCK(cs_wallet)
|
||||
{
|
||||
CWalletDB walletdb(strWalletFile);
|
||||
BOOST_FOREACH(int64 nIndex, setKeyPool)
|
||||
walletdb.ErasePool(nIndex);
|
||||
setKeyPool.clear();
|
||||
|
||||
if (IsLocked())
|
||||
return false;
|
||||
|
||||
int64 nKeys = max(GetArg("-keypool", 100), (int64)0);
|
||||
for (int i = 0; i < nKeys; i++)
|
||||
{
|
||||
int64 nIndex = i+1;
|
||||
walletdb.WritePool(nIndex, CKeyPool(GenerateNewKey()));
|
||||
setKeyPool.insert(nIndex);
|
||||
}
|
||||
printf("CWallet::NewKeyPool wrote %"PRI64d" new keys\n", nKeys);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool CWallet::TopUpKeyPool()
|
||||
{
|
||||
CRITICAL_BLOCK(cs_wallet)
|
||||
|
||||
12
src/wallet.h
@@ -13,6 +13,9 @@ class CWalletTx;
|
||||
class CReserveKey;
|
||||
class CWalletDB;
|
||||
|
||||
// A CWallet is an extension of a keystore, which also maintains a set of
|
||||
// transactions and balances, and provides the ability to create new
|
||||
// transactions
|
||||
class CWallet : public CCryptoKeyStore
|
||||
{
|
||||
private:
|
||||
@@ -57,9 +60,14 @@ public:
|
||||
std::vector<unsigned char> vchDefaultKey;
|
||||
|
||||
// keystore implementation
|
||||
// Adds a key to the store, and saves it to disk.
|
||||
bool AddKey(const CKey& key);
|
||||
// Adds a key to the store, without saving it to disk (used by LoadWallet)
|
||||
bool LoadKey(const CKey& key) { return CCryptoKeyStore::AddKey(key); }
|
||||
|
||||
// Adds an encrypted key to the store, and saves it to disk.
|
||||
bool AddCryptedKey(const std::vector<unsigned char> &vchPubKey, const std::vector<unsigned char> &vchCryptedSecret);
|
||||
// Adds an encrypted key to the store, without saving it to disk (used by LoadWallet)
|
||||
bool LoadCryptedKey(const std::vector<unsigned char> &vchPubKey, const std::vector<unsigned char> &vchCryptedSecret) { return CCryptoKeyStore::AddCryptedKey(vchPubKey, vchCryptedSecret); }
|
||||
|
||||
bool Unlock(const std::string& strWalletPassphrase);
|
||||
@@ -82,6 +90,7 @@ public:
|
||||
std::string SendMoney(CScript scriptPubKey, int64 nValue, CWalletTx& wtxNew, bool fAskFee=false);
|
||||
std::string SendMoneyToBitcoinAddress(const CBitcoinAddress& address, int64 nValue, CWalletTx& wtxNew, bool fAskFee=false);
|
||||
|
||||
bool NewKeyPool();
|
||||
bool TopUpKeyPool();
|
||||
void ReserveKeyFromKeyPool(int64& nIndex, CKeyPool& keypool);
|
||||
void KeepKey(int64 nIndex);
|
||||
@@ -244,7 +253,7 @@ public:
|
||||
unsigned int nTimeReceived; // time received by this node
|
||||
char fFromMe;
|
||||
std::string strFromAccount;
|
||||
std::vector<char> vfSpent;
|
||||
std::vector<char> vfSpent; // which outputs are already spent
|
||||
|
||||
// memory only
|
||||
mutable char fDebitCached;
|
||||
@@ -371,6 +380,7 @@ public:
|
||||
return fReturn;
|
||||
}
|
||||
|
||||
// make sure balances are recalculated
|
||||
void MarkDirty()
|
||||
{
|
||||
fCreditCached = false;
|
||||
|
||||