Compare commits

...

300 Commits

Author SHA1 Message Date
Jeff Garzik
fc27eb188f Bump OSX version to 0.3.24 (missed in previous commit) 2011-07-02 16:57:45 -04:00
Jeff Garzik
b4b536d782 Bump version to 0.3.24. 2011-07-02 16:55:11 -04:00
Jeff Garzik
a76899624a Merge branch 'tmp2' into tmp3 2011-07-02 16:46:07 -04:00
Jeff Garzik
1a19fc17b2 Merge pull request #374 from TheBlueMatt/neterror
Give more detailed error messages for connection failure.
2011-07-02 12:04:09 -07:00
Matt Corallo
013df1cc3b Give more detailed error messages for connection failure. 2011-07-02 13:25:18 +02:00
Jeff Garzik
9cd1dfe898 Merge pull request #372 from TheBlueMatt/upnp
Make UPnP default on Bitcoin but not on Bitcoind.
2011-07-01 19:39:05 -07:00
Jeff Garzik
cfbcb1de66 Merge pull request #373 from EricJ2190/master
Another Visual C++ Makefile Update
2011-07-01 17:38:24 -07:00
Eric Hosmer
58d9badfe2 Add keystore.h to makefile.vs's header list. 2011-07-01 20:17:10 -04:00
Eric Hosmer
12a4af47c2 Further updated Visual C++ makefile. 2011-07-01 20:14:02 -04:00
Matt Corallo
ee1f884229 Make UPnP default on Bitcoin but not on Bitcoind.
This is a bit of an ugly hack, but its the only way to do it.
2011-07-02 01:46:22 +02:00
Jeff Garzik
c4286dc6ee Merge pull request #343 from muggenhor/proper-http-server-rejection
rpc server: send '403 Forbidden' to rejected clients
2011-07-01 16:34:49 -07:00
Jeff Garzik
b73ab2d885 Merge pull request #368 from TheBlueMatt/dnsseed
Only use dnsseeds when not on testnet.
2011-07-01 16:33:28 -07:00
Jeff Garzik
056d2ad312 Merge pull request #371 from EricJ2190/master
Updated Visual C++ Makefile
2011-07-01 16:31:33 -07:00
Jeff Garzik
362efb24c1 Enable DNS seeding by default. 2011-07-01 17:58:03 -04:00
Jeff Garzik
7fbeca05c9 Merge pull request #369 from sipa/limitblocksend
Limit size of response to getblocks
2011-07-01 14:51:48 -07:00
Eric Hosmer
f8b5028cd1 Updated Visual C++ makefile. 2011-07-01 12:58:48 -04:00
Matt Corallo
ce8f78a7bb Only use dnsseeds and static seeds when not on testnet. 2011-07-01 17:33:19 +02:00
Pieter Wuille
4973174534 Limit response to getblocks to half of output buffer size
Introduce SendBufferSize() and ReceiveBufferSize(), and limit
the blocks sent as response to the "getblocks" message to
half of the active send buffer size.
2011-07-01 09:39:44 +02:00
Jeff Garzik
44d16327c1 Merge pull request #367 from TheBlueMatt/dnsseed
Add new DNSSeed dnsseed.bluematt.me.
2011-06-30 14:51:55 -07:00
Matt Corallo
f03c31db82 Add new DNSSeed dnsseed.bluematt.me.
This seed will pull a random set of 20 nodes from the network which
are tested to be online instead of a static list.
2011-06-30 23:42:59 +02:00
Gavin Andresen
20f3f4ac16 Merge pull request #357 from jrmithdobbs/osx-appbundle
Add OSX App bundle and correct build instructions to reflect reality.
2011-06-29 07:52:14 -07:00
Gavin Andresen
786bfc3bb7 Merge pull request #361 from spiechu/polish-translation
added polish translation
2011-06-29 07:13:04 -07:00
Pieter Wuille
3a3eabb57a Merge pull request #362 from ius/issue340
Fix connection failure debug output
2011-06-28 13:47:08 -07:00
Joerie de Gram
ecd3e728b7 Fix connection failure debug output 2011-06-28 22:34:52 +02:00
Dawid Spiechowicz
3e76df7481 added polish translation 2011-06-28 20:37:51 +02:00
Stéphane Gimenez
4d410cfce9 Fix AddressBook syncrhonization between a CWallet and CWalletDB
This problem was reported independently by laanwj in Issue #350.
2011-06-27 23:22:30 +02:00
Gavin Andresen
8111e27905 Merge pull request #356 from gavinandresen/unitTest
Boost unit-testing framework. Thanks to Steve (gasteve in irc) for original code.
2011-06-27 13:30:44 -07:00
Doug Huff
d8dda9de84 Add OSX App bundle and correct build instructions to reflect reality. 2011-06-27 15:11:35 -05:00
Gavin Andresen
8baf865c94 Boost unit-testing framework.
make -f makefile.{unix,osx,mingw} test_bitcoin
to compile dumb, do-almost-nothing placeholder unit tests.
2011-06-27 14:12:48 -04:00
Giel van Schijndel
e913574e02 rpc: don't send 403 when using SSL to prevent DoS
Signed-off-by: Giel van Schijndel <me@mortis.eu>
2011-06-26 21:07:59 +02:00
Giel van Schijndel
c9e70d4c0a rpc server: send '403 Forbidden' to rejected clients
In order to be a proper HTTP implementation clients that aren't allowed
to connect to the RPC server (using -rpcallowip), should receive a
proper HTTP response.  So instead of closing the connection on them send
a '403 Forbidden' status.

Signed-off-by: Giel van Schijndel <me@mortis.eu>
2011-06-26 21:07:59 +02:00
Pieter Wuille
d0d80170a2 Merge pull request #347 from sipa/delkeyuser
Fix segfault when creating new wallet
2011-06-26 03:04:39 -07:00
Pieter Wuille
d3800d59d5 Fix segfault when creating new wallet
The initialization of the default key used keyUser instead
of vchDefaultKey. keyUser is now complete removed.
2011-06-26 02:37:52 +02:00
Gavin Andresen
c774b16976 Merge branch 'totalblocksestimate1' of https://github.com/laanwj/bitcoin 2011-06-24 11:17:22 -04:00
Jeff Garzik
77ba3ab99c Merge pull request #342 from jburkle/datadir_check
Edited init.cpp to include a check that -datadir exists
2011-06-23 21:43:30 -07:00
James Burkle
ed2c01405f Edited init.cpp to include a check that -datadir exists 2011-06-23 23:43:26 -04:00
Pieter Wuille
1179257bfd Merge pull request #334 from sipa/walletclass
Bugfixes walletclass
2011-06-20 11:10:58 -07:00
Pieter Wuille
98705aa51c Bugfixes walletclass
Some problems found by ius:
* compiler complains with no return after critical section block
* CKeyStore::GetPrivKey(key) was undefined for unknown key
* missing return statement in GetChange()
2011-06-20 20:07:28 +02:00
Jeff Garzik
04e442070d Merge pull request #332 from shanew/master
Include missing Boost header
2011-06-19 20:04:24 -07:00
Jeff Garzik
2207f5e201 Merge pull request #331 from TheBlueMatt/translatefix
Update translations and remove obsolete translations.
2011-06-19 20:03:08 -07:00
Shane Wegner
926e14b362 Fix missing includes needed for Boost 1.46. 2011-06-19 15:12:31 -07:00
Jeff Garzik
aa0c5e87e8 CWalletTx::GetAmounts(): pass NULL for CKeyStore*, rather than false
to fix warning.
2011-06-18 21:50:05 -04:00
Pieter Wuille
a6b2115963 Merge pull request #288 from sipa/walletclass
CWallet class
2011-06-18 17:36:25 -07:00
Wladimir J. van der Laan
eade213197 add GetTotalBlocksEstimate() function, move magic number to constant 2011-06-19 00:12:02 +02:00
Matt Corallo
4acfe655d5 Update translations and remove obsolete translations. 2011-06-18 15:56:12 +01:00
Jeff Garzik
eeac8727bc doc/release-process.txt: minor updates 2011-06-16 17:52:38 -04:00
Pieter Wuille
64c7ee7e6b CWallet class
* A new class CKeyStore manages private keys, and script.cpp depends on access to CKeyStore.
* A new class CWallet extends CKeyStore, and contains all former wallet-specific globals; CWallet depends on script.cpp, not the other way around.
* Wallet-specific functions in CTransaction/CTxIn/CTxOut (GetDebit, GetCredit, GetChange, IsMine, IsFromMe), are moved to CWallet, taking their former 'this' argument as an explicit parameter
* CWalletTx objects know which CWallet they belong to, for convenience, so they have their own direct (and caching) GetDebit/... functions.
* Some code was moved from CWalletDB to CWallet, such as handling of reserve keys.
* Main.cpp keeps a set of all 'registered' wallets, which should be informed about updates to the block chain, and does not have any notion about any 'main' wallet. Function in main.cpp that require a wallet (such as GenerateCoins), take an explicit CWallet* argument.
* The actual CWallet instance used by the application is defined in init.cpp as "CWallet* pwalletMain". rpc.cpp and ui.cpp use this variable.
* Functions in main.cpp and db.cpp that are not used by other modules are marked static.
* The code for handling the 'submitorder' message is removed, as it not really compatible with the idea that a node is independent from the wallet(s) connected to it, and obsolete anyway.
2011-06-15 11:05:55 +02:00
Pieter Wuille
e89b9f6a2a move wallet code to separate file
This introduces two new source files, keystore.cpp and wallet.cpp with
corresponding headers. Code is moved from main and db, in a preparation
for a follow-up commit which introduces the classes CWallet and CKeyStore.
2011-06-15 11:05:55 +02:00
Jeff Garzik
19ea44208f Merge pull request #226 from jordanlewis/betterheaders
Optimize header dependencies; improve Makefile dependency graph
2011-06-14 02:05:57 -07:00
Jeff Garzik
c02ec54269 FormatFullVersion: build fix related to recent translation improvement 2011-06-14 04:50:51 -04:00
Jeff Garzik
6f460bace6 Merge pull request #314 from codler/translate
Update swedish translation
2011-06-14 01:33:04 -07:00
Jeff Garzik
40dc7e6e1d Merge pull request #315 from codler/consistent-address
Consistent Bitcoin example address
2011-06-14 01:32:40 -07:00
Han Lin Yap
c60da7355e Consistent Bitcoin example address 2011-06-14 10:17:07 +02:00
Han Lin Yap
9399225b81 Update swedish translation 2011-06-14 09:07:30 +02:00
Jeff Garzik
ce148944c7 Merge pull request #300 from sipa/connecttimeout
non-blocking connect (by phantomcircuit)
2011-06-11 16:17:13 -07:00
Pieter Wuille
76d660ebd3 Faster timeout when connecting
Use non-blocking connects, and a select() call to wait a predefined
time (5s by default, but configurable with -timeout) for either
success or failure. This allows much more connections to be tried
per time unit.

Based on a patch by phantomcircuit.
2011-06-12 00:29:05 +02:00
Han Lin Yap
ca93cc563e Double check translation and improved a translation string 2011-06-12 00:18:34 +02:00
Jeff Garzik
e051f1b510 Merge pull request #312 from codler/patch-1
Remove unused variable
2011-06-11 09:58:02 -07:00
Han Lin Yap
a299e551fe Remove unused variable 2011-06-11 03:21:32 -07:00
Jeff Garzik
18e39300e6 Merge pull request #311 from codler/master
Added Swedish translation
2011-06-11 00:27:16 -07:00
Han Lin Yap
b734954a63 Added Swedish translation 2011-06-11 08:52:07 +02:00
Jeff Garzik
6854a2ade6 Add minimal release process docs. 2011-06-10 02:14:56 -04:00
Jeff Garzik
6de1326ba4 Lower minimum relay TX fee to 0.0001 (from 0.0005) BTC. 2011-06-10 02:07:13 -04:00
Jeff Garzik
65ee333ae0 Merge pull request #304 from TheBlueMatt/cpufix
Fix CPU Usage bug when using -nolisten and have no connections.
2011-06-09 22:42:25 -07:00
Jeff Garzik
2661f2f7c4 Merge pull request #310 from xslidian/master
Updated Chinese Simp translation
2011-06-09 12:11:07 -07:00
Dean Lee
3a8182c105 Updated Chinese Simp translation 2011-06-09 16:47:17 +08:00
Gavin Andresen
60152827e3 Merge pull request #293 from tcatm/keypool-fix
create keypool in LoadWallet()
2011-06-07 11:38:35 -07:00
Matt Corallo
c6710c7a70 Fix CPU Usage bug when using -nolisten and have no connections. 2011-06-07 00:54:41 +02:00
Jeff Garzik
04bc3f0a63 Merge pull request #303 from jrmithdobbs/demystify-magic-numbers
Demystify a few magic numbers.
2011-06-06 11:17:39 -07:00
Doug Huff
a9d3af8821 Demystify a few magic numbers. 2011-06-06 12:49:11 -05:00
Jeff Garzik
352b4ea5b9 Reduce minimum TX fee for new transactions, to 0.0005. 2011-06-05 14:28:14 -04:00
Jeff Garzik
6f07e22210 Bump version to 0.3.23. 2011-06-05 10:39:01 -04:00
Jeff Garzik
09d1484b22 Merge pull request #264 from sipa/mintxfeefix
Fix for small change outputs
2011-06-05 07:32:58 -07:00
Jeff Garzik
e3d884479a Merge pull request #291 from jrmithdobbs/ignore-vim-swp-files
Add common temp files to .gitignore.
2011-06-05 07:31:09 -07:00
Jeff Garzik
7a234cdae5 Merge pull request #255 from sipa/rescanupdate
Update transactions already in the wallet when rescanning.
2011-06-05 07:30:47 -07:00
Jeff Garzik
39105dac1b Merge pull request #290 from jrmithdobbs/ip-filter-rfc1918-rfc3927
Fix rfc1918 and rfc3927 compliance for ignoring non-internet-routable hosts
2011-06-05 07:30:05 -07:00
Nils Schneider
ca81b168d9 create keypool in LoadWallet() 2011-06-03 18:04:41 +02:00
Doug Huff
4e6303d397 Add common temp files to .gitignore. 2011-06-02 20:27:27 -05:00
Doug Huff
482cb65690 Fix rfc1918 and rfc3927 compliance for ignoring non-internet-routable hosts. 2011-06-02 14:46:41 -05:00
Pieter Wuille
e104c79374 Bugfix for dnsseed introduced by dnslookup 2011-06-02 16:22:49 +02:00
Pieter Wuille
7c05877df2 Merge remote branch 'upstream/master' 2011-06-02 16:17:37 +02:00
Pieter Wuille
5fecb27c1e Merge pull request #278 from TheBlueMatt/win32ssl
Update to openssl-1.0.0d and enable RPC-SSL on Win32
2011-05-28 13:00:33 -07:00
Pieter Wuille
12a1256c1d bugfix: accept free transactions 2011-05-28 16:43:49 +02:00
Pieter Wuille
a452d9ee2d Merge remote branch 'bluematt/dpifix' 2011-05-27 12:44:56 +02:00
Matt Corallo
af531f0449 Fix GUI build on UNIX. 2011-05-27 12:38:10 +02:00
Matt Corallo
0649b6af90 Update to openssl-1.0.0d and enable RPC-SSL on Win32 2011-05-27 02:53:13 +02:00
Jeff Garzik
1d418728b0 Merge pull request #277 from TheBlueMatt/dpifix
Handle high DPI a bit more gracefully on Win32.
2011-05-26 17:24:56 -07:00
Matt Corallo
bd39b48f19 Handle high DPI a bit more gracefully on Win32. #243
Not ideal, icons for send and address book don't show, just the
standard bitcoin icon, and balance is still cut off, but the
number is readable.
2011-05-27 02:20:11 +02:00
Pieter Wuille
5e1e458ecb loss of significance in difficulty (by lfm)
For instance any nBits compressed value from 0x1a44b800 thru
0x1a44b9ff will show as difficulty 244139.4816. This patch will
more accurately convert the nBits compressed values to the double
difficulty.

This will display any of the recent difficulty levels slightly
differently though. Early difficulties and testnet difficulties are
not large enough to trigger this bug.

None of the actual targets or compressed targets are changed, only
the conversion to the floating point difficulty is changed and afaik
it is only ever displayed, never converted back so the patch does not
effect the target calculations, binary files, databases nor the binary
protocol.
2011-05-26 23:35:00 +02:00
Matt Corallo
db69432dcd Reset Last-Translator on de po to the proper value.
Sorry, Jakob, it was changed on accident by poedit.
2011-05-26 23:09:37 +02:00
xHire
7709ee622c Czech translation 2011-05-26 23:09:37 +02:00
Pieter Wuille
a757ed886a Merge remote branch 'bluematt/itfix2' 2011-05-26 22:44:41 +02:00
Pieter Wuille
6740ad3706 Merge remote branch 'bluematt/defix2' 2011-05-26 22:44:35 +02:00
Jakob Kramer
7609e35f10 Fixed some mistakes in the German translation. 2011-05-26 22:40:44 +02:00
Pieter Wuille
3d962315f2 Merge pull request #267 from sipa/mintxrelay
Separate required fee for relaying and creation
2011-05-26 13:33:51 -07:00
HostFat
db3b14c960 Fixed 2 things on the italian translation 2011-05-26 22:31:08 +02:00
Jeff Garzik
20d28e6031 Merge pull request #268 from TheBlueMatt/deletefix
Fixes #240 and #244 - delete delete[] mismatch.
2011-05-26 13:25:58 -07:00
Matt Corallo
77172463a3 Fixes #240 and #244 - delete delete[] mismatch. 2011-05-26 02:24:01 +02:00
Pieter Wuille
2bfda1be11 Separate required fee for relaying and creation
Transactions created with the new minimal fee policy would not be
relayed by the network. Therefore, we separate the minimal fee that
is necessary to relay and to create, leaving the creation one at
the old amount, for now.
2011-05-26 00:54:58 +02:00
Pieter Wuille
e426776598 Merge pull request #265 from TheBlueMatt/esfix2
Updated spanish translation
2011-05-25 12:31:16 -07:00
Pieter Wuille
ca253d5911 Fix for small change outputs
With the separation of CENT and MIN_TX_FEE, it is now reasonable
to create change outputs between 0.01 and 0.0005, as these are
spendable according to the policy, even though they require a fee
to be paid.

Also, when enough fee was already present, everything can go into
a change output, without further increasing the fee.
2011-05-25 21:30:14 +02:00
ariel
00af90ab3c Updated spanish translation 2011-05-25 19:47:31 +02:00
Pieter Wuille
a9ea3cd76d Updated dutch translation 2011-05-25 02:11:18 +02:00
Jeff Garzik
d21876cdb8 Merge branch 'chfix' of https://github.com/TheBlueMatt/bitcoin into tmp 2011-05-24 19:41:01 -04:00
Jeff Garzik
54c465f25d Merge pull request #250 from TheBlueMatt/macbuildfix
Revert "OSX build tweaks (laszlo)"
2011-05-24 16:31:15 -07:00
dabaopku
e295947d04 Chinese Translation 2011-05-25 01:28:25 +02:00
Jeff Garzik
32a1753e61 Merge pull request #249 from TheBlueMatt/nsisfix
Update NSIS Installer file to support the new directory structure.
2011-05-24 16:21:45 -07:00
Jeff Garzik
1fcf6f038e Merge pull request #251 from TheBlueMatt/itfix
Update Italian translation to latest git.
2011-05-24 16:21:23 -07:00
Jeff Garzik
ec39b59a03 Merge pull request #259 from TheBlueMatt/rufix
Update russian translation to latest git.
2011-05-24 16:20:38 -07:00
Jeff Garzik
95f748c54e Merge pull request #260 from TheBlueMatt/eotranslation
Add esperanto translation.
2011-05-24 16:20:08 -07:00
Danube
08cf0629f5 Add esperanto translation. 2011-05-25 01:13:58 +02:00
m0ray
11adda400f Update russian translation to latest git. 2011-05-24 17:15:17 +02:00
Pieter Wuille
1c528eeee9 Update transactions already in the wallet when rescanning.
When rescanning, if the scanned transaction is already in the wallet, it
is skipped. However, if someone sends a transaction, does not wait for
confirmation, switches wallets, waits for a block that contains his original
transaction, and switches wallets again, a rescan will leave his wallet
transaction (which has no merkle branch, so no confirmations) untouched.
2011-05-22 17:12:20 +02:00
Federico Faggiano
e4c3232f42 Update Italian translation to latest git. 2011-05-21 16:16:33 +02:00
Matt Corallo
7ee8e5bf86 Revert "OSX build tweaks (laszlo)"
This reverts commit 69ae372b51 which
removes support for building the Mac version of Bitcoin with UPnP
support and UPnP disabled by default (which should be the default,
according to the community vote and as its the default on all
other platforms).
2011-05-21 14:14:34 +02:00
Matt Corallo
cbb2b59a90 Update NSIS Installer file to support the new directory structure. 2011-05-21 13:46:51 +02:00
Jeff Garzik
69a27a4ec6 irc: #bitcoin is overflowing. split up into 100 randomly-joined channels.
From laszlo
2011-05-20 20:54:51 -04:00
Jeff Garzik
69ae372b51 OSX build tweaks (laszlo) 2011-05-20 20:48:44 -04:00
Jeff Garzik
813a3b438f Merge pull request #229 from TheBlueMatt/esfix
Update spanish translation to newest git.
2011-05-18 10:37:11 -07:00
Jeff Garzik
fbe6d5defa Merge pull request #230 from TheBlueMatt/defix
Update German translation to latest git.
2011-05-18 10:36:43 -07:00
Jeff Garzik
98199faa0b Merge pull request #234 from TheBlueMatt/ltfix
Update Lithuanian Translation to latest git.
2011-05-18 10:36:22 -07:00
Jeff Garzik
010ca705df Merge pull request #235 from TheBlueMatt/gitianfix
Update Gitian Build Descriptor to match new directory layout.
2011-05-18 10:35:52 -07:00
Matt Corallo
6c5064b5c3 Update Gitian Build Descriptor to match new directory layout. 2011-05-18 16:04:38 +02:00
Anonymous
97c9d444ae Update Lithuanian Translation to latest git. 2011-05-18 15:52:35 +02:00
Jordan Lewis
31f2931281 Only include certain boost headers if necessary. 2011-05-17 18:58:47 -05:00
Jordan Lewis
6b783965c4 Remove some globally unused headers from headers.h 2011-05-17 18:58:47 -05:00
Pieter Wuille
b201c1f600 Bugfix for dnslookup: irc.cpp still used old CAddress constructor 2011-05-17 17:54:06 +02:00
Blitzboom
769e457d94 Update German translation to latest git. 2011-05-17 14:02:10 +02:00
Carlos Pizarro
b3ff4878f8 Update spanish translation to newest git. 2011-05-17 12:27:53 +02:00
Jeff Garzik
0c97aa9e14 Merge branch 'master' of git://github.com/bitcoin/bitcoin 2011-05-17 01:38:15 -04:00
Jeff Garzik
270e944e30 doc/README: bump version to 0.3.22 2011-05-17 01:36:31 -04:00
Jeff Garzik
112262cb24 Merge pull request #221 from gavinandresen/portoption
-port option to listen on arbitrary port
2011-05-16 22:29:28 -07:00
Jeff Garzik
6d62d2fb56 Merge pull request #222 from TheBlueMatt/lt
Add Lithuanian translation.
2011-05-16 22:24:59 -07:00
Jordan Lewis
fdd7d04744 Only include strlcpy.h when we have to 2011-05-15 22:23:42 -05:00
Jordan Lewis
edd309e537 Only include init.h when we have to 2011-05-15 22:23:37 -05:00
Jordan Lewis
40c2614ef4 Only include net.h when we have to 2011-05-15 22:19:17 -05:00
Jordan Lewis
ed0c143242 Only included rpc.h when necessary 2011-05-15 22:19:16 -05:00
Jordan Lewis
1512d5ce64 Only include db.h when we have to. 2011-05-15 22:19:16 -05:00
Jordan Lewis
f23f9a03c8 Only include irc.h when needed 2011-05-15 22:19:16 -05:00
Gavin Andresen
f441949515 Build error mingw, missing std:: 2011-05-15 13:13:50 -04:00
Gavin Andresen
00bcfe0b7e -port option to listen on arbitrary port 2011-05-15 12:36:21 -04:00
Wladimir J. van der Laan
223b6f1ba4 make bitcoin include files more modular 2011-05-15 12:04:20 +02:00
Pieter Wuille
c22feee634 Merge pull request #224 from TheBlueMatt/mingwbuildfix
Fix MinGW build due to bad pointers to ui.rc pixmaps stuff.
2011-05-14 10:09:05 -07:00
Matt Corallo
bcb971f930 Fix MinGW build due to bad pointers to ui.rc pixmaps stuff. 2011-05-14 18:51:52 +02:00
Pieter Wuille
f53faffb91 Merge pull request #223 from sipa/dnslookup
bugfix in dnslookup code: didn't compile in mingw
2011-05-14 09:48:42 -07:00
Pieter Wuille
545a679aed bugfix in dnslookup code: didn't compile in mingw 2011-05-14 18:13:58 +02:00
mewantsbitcoins
95f5b36772 Add Lithuanian translation. 2011-05-14 01:07:22 +02:00
Jeff Garzik
efe06e1efd Merge pull request #215 from gavinandresen/negativemove
Allow move RPC to take account balances negative
2011-05-12 14:46:13 -07:00
Jeff Garzik
73eb306cfd Merge branch 'fUseUPnPfix' of https://github.com/TheBlueMatt/bitcoin into tmp 2011-05-12 17:36:42 -04:00
Jeff Garzik
9398bf946c Merge pull request #192 from sipa/dnslookup
Support for name lookups in -connect and -addnode
2011-05-12 14:31:25 -07:00
Daniel Holbert
5d1d69453a Add #ifdef USE_UPNP around usage of fUseUPnP to fix build failure. 2011-05-12 23:30:27 +02:00
Jeff Garzik
4b2e21e7ee Merge pull request #218 from jgarzik/fee-update
Update TX fee to 0.0005 BTC
2011-05-11 18:16:36 -07:00
Jeff Garzik
2a2487514a Decrease minimum TX fee to 0.0005 BTC. 2011-05-11 16:50:09 -04:00
Jeff Garzik
a630da6400 Replace CENT with new constant MIN_TX_FEE, where appropriate.
MIN_TX_FEE==CENT remains true (until next commit).
2011-05-11 16:48:51 -04:00
Pieter Wuille
a6a5bb7c20 Support for name lookups in -connect and -addnode
* A new option -dns is introduced that enables name lookups in
  -connect and -addnode, which is not enabled by default,
  as it may be considered a security issue.
* A Lookup function is added that supports retrieving one or
  more addresses based on a host name
* CAddress constructors (optionally) support name lookups.
* The different places in the source code that did name lookups
  are refactored to use NameLookup or CAddress instead (dns seeding,
  irc server lookup, getexternalip, ...).
* Removed ToStringLog() from CAddress, and switched to ToString(),
  since it was empty.
2011-05-10 23:49:30 +02:00
Jeff Garzik
04a667b076 Merge pull request #150 from jgarzik/settxfee
Add 'settxfee' RPC, to change TX fee setting at runtime
2011-05-09 11:54:16 -07:00
Gavin Andresen
832fb114a7 Allow move RPC to take account balances negative
Use case:  Customer owes you bitcoins, so you create a payment address
associated with an account with a negative balance (the amount they owe).
When customer pays, that account balance will go to zero.
2011-05-09 14:45:52 -04:00
Jeff Garzik
d9068ad5a1 Add settxfee RPC, to permit setting default TX fee at runtime. 2011-05-09 14:35:30 -04:00
Gavin Andresen
e8adcf88cd Help for sendtoaddress/sendfrom was wrong: amounts are rounded to 0.00000001 2011-05-09 14:26:41 -04:00
Gavin Andresen
91b8932eb1 Merge branch 'master' of github.com:bitcoin/bitcoin 2011-05-09 14:04:24 -04:00
Gavin Andresen
59d18adc4c listtransactions number-of-params check was wrong. 2011-05-09 14:03:54 -04:00
Jeff Garzik
b17be7e14b Manual merge of jaromil's source tree reorg commit.
Conflicts:
	src/sha256.cpp
2011-05-09 14:00:14 -04:00
Gavin Andresen
c0430f42b8 Fix broken build (invalid use of qualified name std::advance) 2011-05-09 13:31:10 -04:00
Gavin Andresen
6244e44999 Merge pull request #160 from CAFxX/listtransactions-from
add parameter "from" to listtransactions (range queries)
2011-05-09 09:42:29 -07:00
Gavin Andresen
752e598a16 Merge pull request #205 from forrestv/caseinsensitive_rpc_headers
Case-Insensitive JSON-RPC HTTP Headers
2011-05-09 09:37:31 -07:00
Forrest Voight
e6ad2c8792 Initial commit of changes to make JSON-RPC HTTP headers case-insensitive, as per RFC 2616 2011-05-08 20:33:46 -04:00
Carlo Alberto Ferraris
ec86134a0d Allow using the [from] parameter also from command-line 2011-05-07 18:34:32 +02:00
Jeff Garzik
2fb1124b0f Merge branch 'remove-4way' of github.com:jgarzik/bitcoin into tmp
Conflicts:
	makefile.unix
2011-05-06 08:04:50 -04:00
Jeff Garzik
4408034bcd Merge pull request #197 from TheBlueMatt/errorfix
Fix GUI crash
2011-05-06 04:33:44 -07:00
Matt Corallo
2f62b1299f When an error is returned, the client crashes as EndModal is called twice.
This fixes that and simply returns instead.  At least GTK won't complain.
2011-05-06 13:32:20 +02:00
Jeff Garzik
62b427ec55 Merge pull request #196 from amiryal/master
Improve UPNP build instructions
2011-05-06 04:24:32 -07:00
Amir Yalon
894031bbd9 Clarify the meaning of USE_UPNP in build-unix.txt 2011-05-06 10:55:38 +03:00
Gavin Andresen
5c4aeb779f Merge pull request #194 from johnmaguire2013/tray
Removed tooltip balance until it's fixed.
2011-05-05 08:17:14 -07:00
Gavin Andresen
5f56b28629 Merge pull request #193 from TheBlueMatt/nogenoption
Remove the option to generate coins from the Options Dialog.
2011-05-05 07:50:57 -07:00
John Maguire
d299c28ecc removed tooltip balance until it can be made to change without opening the UI 2011-05-05 10:49:20 -04:00
Matt Corallo
3451c5a9b3 Remove the option to generate coins from the Options Dialog. 2011-05-05 15:00:49 +02:00
Gavin Andresen
e5577d5541 Fix broken build (remove declarations of GUI generate methods) 2011-05-03 15:02:41 -04:00
Gavin Andresen
b99c23af40 Merge pull request #142 from jgarzik/remove-gui-gen.
Remove GUI 'generate coins' option.
2011-05-03 08:27:45 -07:00
Gavin Andresen
519365cfa5 Merge pull request #173 from gavinandresen/testnet_isstandard.
Accept non-standard transactions on testnet.
2011-05-03 08:24:57 -07:00
Gavin Andresen
8737e1ee20 Merge pull request #190 from johnmaguire2013/tray.
Added balance to tooltip and send coin option to tray menu
2011-05-03 08:16:13 -07:00
Pieter Wuille
fbfbf94deb Merge pull request #178 from wizeman/link-pthread.
Link with libpthread on Linux, required by libboost_thread.
2011-05-01 09:33:40 -07:00
John Maguire
d67cfd146a fixed some translations which was... weird 2011-05-01 10:20:30 -04:00
John Maguire
bd3bd83dda added balance to tooltips 2011-05-01 10:20:29 -04:00
John Maguire
3b7925eb7d added "Send Bitcoins" option in the tray menu 2011-05-01 10:20:28 -04:00
Gavin Andresen
76160f784a Merge pull request #179 from wizeman/segfault-lockfile.
Fix segfault when we're unable to create the lock file.
2011-05-01 06:41:49 -07:00
Gavin Andresen
2296647e01 Merge pull request #181 from sipa/fixcheckconf.
Bugfix in recursive check in IsConfirmed()
2011-05-01 06:41:20 -07:00
Gavin Andresen
249aff45c2 Merge pull request #186 from TheBlueMatt/nopng.
Remove unnecessary line which creates a dependency on wx's png library.
2011-05-01 06:39:31 -07:00
Gavin Andresen
06d9156b8d Merge pull request #187 from devrandom/master.
New gitian descriptor for 0.3.21
2011-05-01 06:38:56 -07:00
Gavin Andresen
ddbc4647fa Bump version number to 0.3.22
Doing this now because I always forget to do it later.
(I'm hoping the next release will actually be 0.4.0)
2011-04-28 14:01:57 -04:00
devrandom
dec289e821 gitian: strip binaries 2011-04-28 11:01:28 -07:00
devrandom
26e0de41c3 gitian descriptor with miniupnpc 2011-04-27 16:26:14 -07:00
Matt Corallo
2d9b9fecd5 Remove unnecessary line which creates a dependency on wx's png library.
This should allow the bitcoin binaries to run on ever so slightly more installs,
specifically those who use a different libpng library (many distros use 1.4 which is imcompatible with 1.2.
2011-04-25 17:00:12 +02:00
Pieter Wuille
be2fa90b94 Bugfix in recursive check in IsConfirmed()
When one single dependency of an unconfirmed transaction is already verified, this does not mean the parent is confirmed. We can skip checking its own dependencies though.
2011-04-23 15:33:52 +02:00
Jaromil
84c3fb07b0 directory re-organization (keeps the old build system)
there is no internal modification of any file in this commit

files are moved into directories according to established standards in
sourcecode distribution; these directories contain:

 src - Files that are used in constructing the executable binaries,
       but are not installed.

 doc - Files in HTML and text format that document usage, quirks of
       the implementation, and contributor checklists.

 locale - Files that contain human language translation of strings
          used in the program

 contrib - Files contributed from distributions or other third party
 	   implementing scripts and auxiliary programs
2011-04-23 12:10:25 +02:00
Ricardo M. Correia
a925c32cca Fix segfault when we're unable to create the lock file. 2011-04-23 01:40:23 +02:00
Ricardo M. Correia
1a5364bd19 Link with libpthread on Linux, required by libboost_thread.
Fixes link failure when using the 'gold' linker.
2011-04-23 01:39:20 +02:00
Gavin Andresen
64ad448adc Better wording for transaction fee notification messages 2011-04-20 18:08:01 -04:00
Gavin Andresen
ca5884873e More 0.3.21 release prep
Bump version number in Windows installer file
Update READMEs.
2011-04-20 14:45:43 -04:00
Gavin Andresen
344888addd Update date in license.txt 2011-04-20 12:03:31 -04:00
Pieter Wuille
8857aeb223 Monitor incoming transactions for spends by (a copy of) your own wallet 2011-04-20 11:39:15 -04:00
Gavin Andresen
5ec05f0a28 Accept non-standard transactions on testnet. 2011-04-20 11:20:33 -04:00
Gavin Andresen
72e962cf55 getbalance '*' was ignoring minconf param. 2011-04-18 20:57:13 -04:00
Pieter Wuille
6a76c60e6c Automatically rescan after restoring wallet.dat
Information about the best known chain is added to wallet.dat. If this
information does not match the data in blkindex.dat, a rescan is automatically
performed, starting from the the last known block. When upgrading from a wallet
which does not have this information, no rescan is done automatically.
2011-04-18 17:37:47 -04:00
Jeff Garzik
e93e5349cb Remove GUI's "Generate Coins" option from the menu.
CPU mining remains available via command line option [until/unless
the community decides to remove that completely].
2011-04-18 15:10:27 -04:00
Gavin Andresen
657cfe721b Merge branch 'upnpfix' of https://github.com/TheBlueMatt/bitcoin 2011-04-18 14:53:13 -04:00
Dan Helfman
f285d4f4f3 Fix for #156: UPnP segfault when no valid UPnP IGDs are found. 2011-04-16 21:58:42 +02:00
Gavin Andresen
bf3a0902ef Merge branch 'master' of https://github.com/gjs278/bitcoin 2011-04-15 12:09:50 -04:00
Gavin Andresen
9a189be740 Merge branch 'localefix' 2011-04-15 12:03:50 -04:00
Gavin Andresen
9ff411f7f7 Set time locale to POSIX in rfc1123Time so weekday/months in http responses are correct. 2011-04-15 12:01:34 -04:00
Gavin Andresen
a381eb8ddb Merge branch 'http-version' of https://github.com/jgarzik/bitcoin 2011-04-15 11:41:39 -04:00
Jeff Garzik
17616eac17 Send/return full bitcoin version string in Server and User-Agent HTTP headers 2011-04-15 03:58:42 -04:00
Jeff Garzik
a584320357 Ensure version number->string conversion is consistent 2011-04-15 03:58:28 -04:00
Carlo Alberto Ferraris
5aef2c0d55 add parameter from to listtransactions this allows querying for ranges, i.e. transactions [from, from+count) 2011-04-15 08:56:54 +02:00
Matt Corallo
973800b52f Exit when no UPnP router found and fUseUPnP gets set to 0. 2011-04-15 00:37:50 +02:00
Dan Loewenherz
d7f0287235 build: add note for Snow Leopard users and fix typos in linking instructions 2011-04-13 13:38:24 -07:00
Gavin Andresen
b37f09aa2e New checkpoint at block 118,000 2011-04-13 14:30:22 -04:00
gjs278
66fb32d267 pidfile support for daemon 2011-04-12 19:15:19 -05:00
Gavin Andresen
485dda9774 Merge branch 'listimmature' of /Users/gavin/src/gavin_btc 2011-04-12 17:31:31 -04:00
Gavin Andresen
d89d456655 Merge branch 'spentpertxout' of https://github.com/sipa/bitcoin 2011-04-12 17:27:15 -04:00
Pieter Wuille
c59b6f704c Bugfix for spentpertxout: slow startup
When starting the client, ReacceptWalletTransaction didn't skip spent transactions in its loop, and processed all old spent transactions again.
2011-04-12 21:01:11 +02:00
Gavin Andresen
79706a8e48 Merge branch 'upnp' of https://github.com/TheBlueMatt/bitcoin 2011-04-12 14:22:12 -04:00
Gavin Andresen
2e8b33824f Merge branch 'spentpertxout' of https://github.com/sipa/bitcoin 2011-04-12 13:31:44 -04:00
Pieter Wuille
aca3f961db select transaction outputs separately
Update to SelectCoins and CreateTransaction to select source transaction outputs separately instead of per whole transaction.
2011-04-12 19:29:36 +02:00
Pieter Wuille
335e878be8 Spent per txout
Change some internal data structures to keep track of spentness of each wallet transaction output separately, to support partially-spent transactions:
* an update to the data structures (vfSpent in CWalletTx instead of fSpent)
* a backward-compatible update to the wallet disk format. Old clients reading back an updated wallet will ignore partially spent transactions when creating new ones, and may report a wrong balance, though.
* some helper functions (CWalletTx: IsSpent, MarkSpent, MarkDirty to reset cached values, GetAvailableCredit which only counts unredeemed outputs)
2011-04-12 19:29:36 +02:00
tcatm
d12ea887bc disable -daemon on windows; bitcoind forks only with -daemon set
[added setsid() call to ui.cpp, to regain consistency with init.cpp -jgarzik]
2011-04-08 23:59:32 -04:00
Jeff Garzik
d98beea894 rfc1123Time: increase buffer size for time string
Make sure we can accomodate all possibilities.
2011-04-08 22:50:14 -04:00
Gavin Andresen
198fd7b0bd Report immature coinbase transactions in listtransactions
Report coin generation transactions as 'category':'immature' until they have 120 confirmations (when they are reported as 'category':'generate', as before).
If the block they are in is not part of the main chain (you lost a 'block race'), then they are reported as 'category':'orphan' (with 0 confirmations).
2011-04-05 21:18:26 -04:00
Eric Swanson
0a4cb86976 Fixed issue 76 -- RPC error where addresses from addressbook's sending tab appear in listaccounts 2011-04-05 20:00:01 -04:00
Gavin Andresen
57b7fe4e6f Merge branch 'deadlock-fixes' of https://github.com/jgarzik/bitcoin 2011-04-05 19:34:06 -04:00
Jeff Garzik
6f074b71bb RPC sendmany must acquire cs_main lock 2011-04-05 15:15:20 -04:00
Jeff Garzik
f5f1878ba1 Fix deadlocks in setaccount, sendfrom RPC calls
SendMoney*() now requires caller to acquire cs_main.
GetAccountAddress() now requires caller to acquire cs_main, cs_mapWallet.

Ordering is intended to match these two callchains[1]:

1. CRITICAL_BLOCK(cs_main)
    ProcessMessage(pfrom, strCommand, vMsg)
        AddToWalletIfMine()
              AddToWallet(wtx)
                  CRITICAL_BLOCK(cs_mapWallet)

2. CRITICAL_BLOCK(cs_main)
    ProcessMessage(pfrom, strCommand, vMsg)
        AddToWalletIfMine()
              AddToWallet(wtx)
                  CRITICAL_BLOCK(cs_mapWallet)
                      walletdb.WriteName(PubKeyToAddress(vchDefaultKey), "")
                          CRITICAL_BLOCK(cs_mapAddressBook)

Spotted by ArtForz.  Additional deadlock fixes by Gavin.

[1] http://www.bitcoin.org/smf/index.php?topic=4904.msg71897#msg71897
2011-04-04 22:24:35 -04:00
Jeff Garzik
b26141e2c5 Remove 4way SSE2 scanhash implementation. 2011-04-03 14:21:52 -04:00
Jeff Garzik
a2b6c1930d Update DNS seed list 2011-04-01 11:33:35 -04:00
Matt Corallo
8bb5edc1c9 Allow UPnP mapping when USE_UPNP is defined and miniupnpc is installed at build time(statically linked).
Thanks joepie91 for the translation of the new copyright notices into Dutch.
Thanks sipa for the translation of the new copyright notices into French.
Thanks megu for the translation of the new copyright notices into Spanish.
Thanks justmoon/Blitzboom for the translation of the new copyright notices into German.
Thanks Joozero for the translation of the new copyright notices into Italian.
Remaining translations were provided by Google Translate.
2011-03-30 20:45:56 +02:00
tcatm
454bc86479 allow coredumps by not catching SIGSEGV 2011-03-25 13:23:43 +01:00
Jeff Garzik
3a47bf7265 Merge branch 'master' of git://github.com/bitcoin/bitcoin 2011-03-23 18:28:50 -04:00
Jeff Garzik
8203ec4b11 [locale] Regenerate es, nl binary message catalogs 2011-03-23 18:27:09 -04:00
Jeff Garzik
0b8e4738f9 Merge branch 'master' of https://github.com/smola/bitcoin into tmp 2011-03-23 18:21:22 -04:00
Jeff Garzik
d38e683a6f Merge branch 'dutchloc' of https://github.com/sipa/bitcoin into tmp 2011-03-23 18:21:10 -04:00
tcatm
c3f140033c catch SIGINT, SIGHUP and SIGSEGV and shutdown cleanly 2011-03-23 18:27:30 +01:00
tcatm
1c09a4adb2 daemon-mode: add sleep() loop to prevent defunct child process, call setsid() in child 2011-03-21 12:11:05 +01:00
Sven Slootweg
a07dca7cd2 Updated dutch translation 2011-03-19 00:58:16 +01:00
Gavin Andresen
b7ebc662eb Update copyright in About box from 2010 to 2011 2011-03-17 15:09:41 +01:00
Santiago M. Mola
f30dabb2ac Update Spanish translation. 2011-03-16 20:56:03 +01:00
Jeff Garzik
e2e5f5cd9d Fix -logtimestamps to only print time prefix once per output line
Incorporate BlueMatt's fix to only timestamp upon new line, and
move -logtimestamp checking outside OutputDebugPrintF() to better
future-proof it.
2011-03-16 15:42:04 -04:00
Gavin Andresen
27b7f3b43a Merge branch 'shy' 2011-03-14 09:15:06 -04:00
Gavin Andresen
4b88647966 Merge branch 'dns-seed' of https://github.com/jgarzik/bitcoin 2011-03-13 17:15:59 -04:00
Gavin Andresen
d43fd8a038 Merge branch 'log-timestamp' of https://github.com/TheBlueMatt/bitcoin 2011-03-13 17:15:57 -04:00
Gavin Andresen
2abd56f428 Merge branch 'limitfree' of /Users/gavin/src/integration_btc 2011-03-13 17:15:44 -04:00
Gavin Andresen
1bf9b3b06f Merge branch 'daemon-mode' of https://github.com/tcatm/bitcoin 2011-03-13 17:15:34 -04:00
Gavin Andresen
dfd059173d Merge branch 'subcent-change' of https://github.com/tcatm/bitcoin 2011-03-13 17:15:28 -04:00
Gavin Andresen
b931ed8563 sendmany RPC command, to send to multiple recipients in one transaction. 2011-03-13 17:11:49 -04:00
Gavin Andresen
88abf70386 Make sure rate-limiting code is thread-safe 2011-03-13 14:38:07 -04:00
Gavin Andresen
5de8b54c51 Continuously rate-limit free transactions.
Changed algorithm to use continuous exponential function instead of discrete 10-minute window.
Changed -limitfreerelay to be kilobytes-per-minute instead of boolean.
2011-03-13 13:38:09 -04:00
tcatm
f4f2987273 remove from/message field from uiproject 2011-03-13 18:35:39 +01:00
Jeff Garzik
8f58d0dbc8 Merge branch 'smalltxfix' of https://github.com/gavinandresen/bitcoin-git into tmp 2011-03-10 14:32:19 -05:00
Jeff Garzik
12e091842f Merge branch 'master' of https://github.com/devrandom/bitcoin into tmp 2011-03-10 12:58:49 -05:00
Gavin Andresen
81d3b1c825 Update copyright in About box from 2010 to 2011 2011-03-10 10:50:46 -05:00
Gavin Andresen
32fb5dfef7 Bump version number to 0.3.21 (lest we forget) 2011-03-10 10:50:46 -05:00
Matt Corallo
ca221e6c21 Only log timestamps if -logtimestamps is set. 2011-03-09 21:48:11 +01:00
Matt Corallo
fe460d47b0 Add timestamp prefix to each line in the debug log (this time with human-readable times) 2011-03-09 19:53:40 +01:00
Jeff Garzik
448b4516ff dnsseed: fix printf 2011-03-08 22:55:29 -05:00
Jeff Garzik
f684aec4f3 DNS seeding 2011-03-08 22:40:50 -05:00
Gavin Andresen
cbc920d474 shy patch from Hal 2011-03-05 17:13:07 -05:00
tcatm
b104df742d Merge branch 'TheBlueMatt-setaccountfix' into integration 2011-03-05 17:26:14 +01:00
tcatm
8e5aaada2e Merge branch 'setaccountfix' of https://github.com/TheBlueMatt/bitcoin into TheBlueMatt-setaccountfix 2011-03-05 17:24:34 +01:00
Matt Corallo
c1f74f152b throw JSONRPCError(-5, "Invalid bitcoin address") instead. 2011-03-05 16:45:56 +01:00
Matt Corallo
279ab5e62f setaccount should return if an invalid address is provided.
This prevents setaccount from creating new accounts which do not have any addresses.
2011-03-05 15:32:32 +01:00
tcatm
e1205e4d15 -help: do not show -server and -daemon in bitcoind 2011-03-03 22:34:13 +01:00
tcatm
ea7cd31751 force fDaemon in bitcoind 2011-03-03 22:31:44 +01:00
tcatm
a79409afa9 fix whitespace 2011-03-03 22:27:20 +01:00
tcatm
dda48ccd0f fix -daemon switch 2011-03-03 22:26:00 +01:00
Gavin Andresen
f36b494aeb Make send/receive limits bigger (10MB each) 2011-03-03 16:25:05 -05:00
Gavin Andresen
395c1f44bd Fix minimum transaction fee calculation mismatch between CreateTransaction and CreateBlock 2011-03-02 16:27:24 -05:00
Gavin Andresen
411493b1f7 Merge branch 'rounding' 2011-03-02 15:03:49 -05:00
Luke Dashjr
a14bf1946d Bugfix: avoid sub-cent change (lost in fees) whenever possible 2011-03-01 02:10:07 +01:00
Gavin Andresen
8a9cad44a5 Avoid sprintf decimal-point localization 2011-02-28 21:34:36 +00:00
tcatm
6665aca024 fix missing newline in help 2011-02-28 04:53:22 +01:00
tcatm
c993ac6932 Merge branch 'rounding' of https://github.com/gavinandresen/bitcoin-git into gavinandresen-rounding 2011-02-26 04:37:13 +01:00
Matt Giuca
a357424a25 Added .gitignore, which prevents 'bitcoin' and 'bitcoind' from showing up in git. 2011-02-26 11:50:23 +11:00
tcatm
5078a54b52 Merge branch 'mgiuca-wx-config' into integration 2011-02-26 00:59:55 +01:00
Matt Giuca
84711b18bc build-unix.txt: Updated (now OK to use wxWidgets > 2.9.0). 2011-02-26 09:17:49 +11:00
Matt Giuca
84778a5b46 makefile.unix: Fixed errors building bitcoind without wxWidgets installed.
WXINCLUDEPATHS and WXLIBS now assigned with '=' instead of ':='.
    This means they are only evaluated on-demand, and they will never be
    requested by 'make bitcoind', so it won't try to call wx-config.
2011-02-26 09:12:42 +11:00
Matt Giuca
3415b15a56 makefile.unix: WXINCLUDEPATHS now only used for building GUI object files.
Moved it out of CXXFLAGS and into the command-line for the GUI objects.
    It will no longer be invoked for non-GUI and crypto object files.
2011-02-26 09:10:10 +11:00
Matt Giuca
8314b7f5e6 makefile.unix: Removed redundant use of wx-config in DEFS (it was being included twice).
Also changed wx-config --cppflags to --cxxflags. I am not sure what the
    difference is supposed to be, but --cppflags does not include -pthread.
2011-02-26 08:58:15 +11:00
Matt Giuca
32e94947dc Merge https://github.com/ojab/bitcoin into wx-config 2011-02-26 08:45:38 +11:00
Gavin Andresen
b0ad55a08a ParseMoney: allow full precision 2011-02-23 16:26:15 -05:00
Gavin Andresen
87504abb07 FormatMoney: show full-precision values 2011-02-23 16:01:17 -05:00
Gavin Andresen
789259d2e7 Do not round input amounts; allow RPC full precision. 2011-02-23 14:41:19 -05:00
Gavin Andresen
83b9f42796 Use ValueFromAmount consistently 2011-02-23 14:24:16 -05:00
Gavin Andresen
ccd7fe8de5 Bump version to 0.3.20.02 2011-02-23 14:12:20 -05:00
tcatm
2175c9dae1 Set SO_REUSEADDR on JSON port 2011-02-23 01:08:27 +01:00
tcatm
10e135af70 Merge branch 'master' of https://github.com/sandos/bitcoin into sandos-master 2011-02-23 01:07:43 +01:00
tcatm
4d9b223ac2 remove From/Message fields from SendDialog 2011-02-23 00:48:30 +01:00
tcatm
6696beed45 Merge branch 'master' of https://github.com/tcatm/bitcoin into tcatm-master 2011-02-22 03:00:09 +01:00
devrandom
0d0bd331ae move gitian descriptor file 2011-02-17 01:53:52 -08:00
sandos
8fd402bfcf Set SO_REUSEADDR for JSON-RPC port 2011-02-10 09:25:42 +01:00
devrandom
768b41017c add gitian build descriptor 2011-02-01 09:27:14 -08:00
tcatm
b1ca5eb58a do not create 'Your Address' account 2011-01-31 17:13:02 +01:00
ojab
f0b7952caa 1. Change hardcoded g++ to $(CXX)
2. Change CFLAGS to CXXFLAGS
3. Add binaries to clean target
4. Generate wxWidgets includes/ldflags/etc from wx-config
2011-01-31 15:07:55 +03:00
141 changed files with 14468 additions and 6814 deletions

5
.gitignore vendored Normal file
View File

@@ -0,0 +1,5 @@
src/*.exe
src/bitcoin
src/bitcoind
.*.swp
*.*~*

View File

@@ -1,4 +1,4 @@
Copyright (c) 2009-2010 Bitcoin Developers
Copyright (c) 2009-2011 Bitcoin Developers
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

1
README Symbolic link
View File

@@ -0,0 +1 @@
README.md

View File

@@ -0,0 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDisplayName</key>
<string>Bitcoin</string>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleExecutable</key>
<string>bitcoin</string>
<key>CFBundleIdentifier</key>
<string>org.bitcoin.bitcoin</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>Bitcoin</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>0.3.24</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>324</string>
<key>LSMinimumSystemVersion</key>
<string>10.5</string>
<key>CFBundleIconFile</key>
<string>BitcoinAppIcon.icns</string>
<key>LSMultipleInstancesProhibited</key>
<true/>
</dict>
</plist>

48
contrib/gitian.yml Normal file
View File

@@ -0,0 +1,48 @@
---
name: "bitcoin"
suites:
- "lucid"
architectures:
- "i386"
- "amd64"
packages:
- "libdb4.8++-dev"
- "libxxf86vm-dev"
- "libgtk2.0-dev"
- "libboost-all-dev"
- "libssl-dev"
- "git-core"
reference_datetime: "2011-01-30 00:00:00"
remotes:
- "url": "https://github.com/bitcoin/bitcoin.git"
"dir": "bitcoin"
files:
- "wxWidgets-2.9.1.tar.bz2"
- "miniupnpc-1.5.tar.gz"
script: |
INSTDIR="$HOME/install"
export LIBRARY_PATH="$INSTDIR/lib"
#
tar xzf miniupnpc-1.5.tar.gz
cd miniupnpc-1.5
INSTALLPREFIX=$INSTDIR make $MAKEOPTS install
cd ..
#
tar xjf wxWidgets-2.9.1.tar.bz2
cd wxWidgets-2.9.1
./configure --prefix=$INSTDIR --enable-monolithic --disable-shared
perl -i -p -e "s/__TIME__/\"$REFERENCE_TIME\"/;s/__DATE__/\"$REFERENCE_DATE\"/" include/wx/chartype.h
make $MAKEOPTS install
cd ..
#
cd bitcoin
mkdir -p $OUTDIR/src
cp -a . $OUTDIR/src
rm -rf $OUTDIR/src/.git
mv $OUTDIR/src/locale $OUTDIR
cp $OUTDIR/src/doc/README $OUTDIR
cp $OUTDIR/src/COPYING $OUTDIR
cd src
PATH=$INSTDIR/bin:$PATH make -f makefile.unix CXX="g++ -I$INSTDIR/include -L$INSTDIR/lib" $MAKEOPTS bitcoin bitcoind
mkdir -p $OUTDIR/bin/$GBUILD_BITS
install -s bitcoin bitcoind $OUTDIR/bin/$GBUILD_BITS

30
doc/README Normal file
View File

@@ -0,0 +1,30 @@
Bitcoin 0.3.24 BETA
Copyright (c) 2009-2011 Bitcoin Developers
Distributed under the MIT/X11 software license, see the accompanying
file license.txt or http://www.opensource.org/licenses/mit-license.php.
This product includes software developed by the OpenSSL Project for use in
the OpenSSL Toolkit (http://www.openssl.org/). This product includes
cryptographic software written by Eric Young (eay@cryptsoft.com).
Intro
-----
Bitcoin is a free open source peer-to-peer electronic cash system that is
completely decentralized, without the need for a central server or trusted
parties. Users hold the crypto keys to their own money and transact directly
with each other, with the help of a P2P network to check for double-spending.
Setup
-----
Unpack the files into a directory and run:
bin/32/bitcoin (GUI, 32-bit)
bin/32/bitcoind (headless, 32-bit)
bin/64/bitcoin (GUI, 64-bit)
bin/64/bitcoind (headless, 64-bit)
See the documentation at the bitcoin wiki:
https://en.bitcoin.it/wiki/Main_Page
... for help and more information.

34
doc/README_windows.txt Normal file
View File

@@ -0,0 +1,34 @@
Bitcoin 0.3.24 BETA
Copyright (c) 2009-2011 Bitcoin Developers
Distributed under the MIT/X11 software license, see the accompanying
file license.txt or http://www.opensource.org/licenses/mit-license.php.
This product includes software developed by the OpenSSL Project for use in
the OpenSSL Toolkit (http://www.openssl.org/). This product includes
cryptographic software written by Eric Young (eay@cryptsoft.com).
Intro
-----
Bitcoin is a free open source peer-to-peer electronic cash system that is
completely decentralized, without the need for a central server or trusted
parties. Users hold the crypto keys to their own money and transact directly
with each other, with the help of a P2P network to check for double-spending.
Setup
-----
Unpack the files into a directory and run bitcoin.exe.
If you have Microsoft Security Essentials, you need to add bitcoin.exe to its
"Excluded processes" list. Microsoft Security Essentials->Settings tab,
select Excluded processes, press Add, select bitcoin.exe, OK, Save changes.
The software automatically finds other nodes to connect to. You can
enable Universal Plug and Play using a menu entry or set your firewall
to forward port 8333 (TCP) to your computer so you can receive
incoming connections. Bitcoin work without incoming connections,
but allowing incoming connections helps the Bitcoin network.
See the bitcoin wiki at: https://en.bitcoin.it/wiki/Main_Page
for more help and information.

View File

@@ -3,7 +3,8 @@ Distributed under the MIT/X11 software license, see the accompanying
file license.txt or http://www.opensource.org/licenses/mit-license.php.
This product includes software developed by the OpenSSL Project for use in
the OpenSSL Toolkit (http://www.openssl.org/). This product includes
cryptographic software written by Eric Young (eay@cryptsoft.com).
cryptographic software written by Eric Young (eay@cryptsoft.com) and UPnP
software written by Thomas Bernard.
WINDOWS BUILD NOTES
@@ -25,23 +26,26 @@ Dependencies
------------
Libraries you need to download separately and build:
default path download
wxWidgets \wxwidgets-2.9.1-mgw http://www.wxwidgets.org/downloads/
OpenSSL \openssl-1.0.0c-mgw http://www.openssl.org/source/
Berkeley DB \db-4.7.25.NC-mgw http://www.oracle.com/technology/software/products/berkeley-db/index.html
Boost \boost-1.43.0-mgw http://www.boost.org/users/download/
default path download
wxWidgets \wxwidgets-2.9.1-mgw http://www.wxwidgets.org/downloads/
OpenSSL \openssl-1.0.0d-mgw http://www.openssl.org/source/
Berkeley DB \db-4.7.25.NC-mgw http://www.oracle.com/technology/software/products/berkeley-db/index.html
Boost \boost-1.43.0-mgw http://www.boost.org/users/download/
miniupnpc \upnpc-exe-win32-20110215 http://miniupnp.tuxfamily.org/files/
Their licenses:
wxWidgets LGPL 2.1 with very liberal exceptions
OpenSSL Old BSD license with the problematic advertising requirement
Berkeley DB New BSD license with additional requirement that linked software must be free open source
Boost MIT-like license
miniupnpc New (3-clause) BSD license
Versions used in this release:
wxWidgets 2.9.1
OpenSSL 1.0.0c
OpenSSL 1.0.0d
Berkeley DB 4.7.25.NC
Boost 1.43.0
miniupnpc 1.5-20110215
Notes
@@ -62,15 +66,10 @@ MSYS shell:
un-tar sources with MSYS 'tar xfz' to avoid issue with symlinks (OpenSSL ticket 2377)
change 'MAKE' env. variable from 'C:\MinGW32\bin\mingw32-make.exe' to '/c/MinGW32/bin/mingw32-make.exe'
cd /c/openssl-1.0.0c-mgw
cd /c/openssl-1.0.0d-mgw
./config
make
perl util/mkdef.pl 32 libeay enable-static-engine > libeay32.def
dllwrap --dllname libeay32.dll --output-lib libeay32.a --def libeay32.def libcrypto.a -lws2_32 -lgdi32
after that openssl libeay is in main source dir (openssl-1.0.0c-mgw)
Berkeley DB
-----------
MSYS shell:
@@ -90,10 +89,19 @@ Note:
building with boost 1.45.0 failed because of boost ticket 4614, 4258
builds fine with boost 1.43.0
MiniUPnPc
---------
Building miniupnpc failed on Windows Server 2003, thus it is expected that a binary copy will be used.
See http://miniupnp.tuxfamily.org/forum/viewtopic.php?t=642
UPnP support is optional, make with USE_UPNP= to disable it.
Get upnpc-exe-win32-20110215.zip and unzip it to \upnpc-exe-win32-20110215
Get miniupnpc-1.5.20110215.tar.gz and copy *.h to \upnpc-exe-win32-20110215\miniupnpc
Bitcoin
-------
DOS prompt:
cd \bitcoin
cd \bitcoin\src
mingw32-make bitcoin.exe bitcoind.exe -f makefile.mingw
strip bitcoin.exe
strip bitcoind.exe

View File

@@ -1,13 +1,16 @@
Copyright (c) 2010 Laszlo Hanyecz
Distributed under the MIT/X11 software license, see the accompanying
file license.txt or http://www.opensource.org/licenses/mit-license.php.
This product includes software developed by the OpenSSL Project for use in
the OpenSSL Toolkit (http://www.openssl.org/). This product includes
cryptographic software written by Eric Young (eay@cryptsoft.com).
Portions Copyright (c) 2011 Douglas Huff
Distributed under the MIT/X11 software license, see the accompanying file
license.txt or http://www.opensource.org/licenses/mit-license.php. This
product includes software developed by the OpenSSL Project for use in the
OpenSSL Toolkit (http://www.openssl.org/). This product includes cryptographic
software written by Eric Young (eay@cryptsoft.com) and UPnP software written by
Thomas Bernard.
Mac OS X build instructions
Laszlo Hanyecz (solar@heliacal.net)
Laszlo Hanyecz <solar@heliacal.net>
Douglas Huff <dhuff@jrbobdobbs.org>
Tested on 10.5 and 10.6 intel. PPC is not supported because it's big-endian.
@@ -15,18 +18,19 @@ Tested on 10.5 and 10.6 intel. PPC is not supported because it's big-endian.
All of the commands should be executed in Terminal.app.. it's in
/Applications/Utilities
You need to install XCode with all the options checked so that the compiler
and everything is available in /usr not just /Developer
I think it comes on the DVD but you can get the current version from
http://developer.apple.com
You need to install XCode with all the options checked so that the compiler and
everything is available in /usr not just /Developer I think it comes on the DVD
but you can get the current version from http://developer.apple.com
1. Pick a directory to work inside.. something like ~/bitcoin works. The
structure I use looks like this:
(~ is your home directory)
~/bitcoin
~/bitcoin/trunk # source code
~/bitcoin/bitcoin # Upstream source tree
~/bitcoin/src # source code (symlink to ~/bitcoin/bitcoin/src)
~/bitcoin/deps # dependencies.. like libraries and headers needed to compile
~/bitcoin/Bitcoin.app # the application bundle where you can run the app
@@ -37,12 +41,15 @@ WARNING: do not use the ~ notation with the configure scripts.. use the full
name of the directory, for example /Users/james/bitcoin/deps for a user named
'james'. In my examples I am using 'macosuser' so make sure you change that.
2. Check out the trunk version of the bitcoin code from subversion:
2. Check out the bitcoin code from github:
cd ~/bitcoin
svn checkout https://bitcoin.svn.sourceforge.net/svnroot/bitcoin/trunk
git clone https://github.com/bitcoin/bitcoin.git
ln -s bitcoin/src src
This will make ~/bitcoin/trunk for you with all the files from subversion.
This will make ~/bitcoin/bitcoin for you with all the files from git. This puts
the actual sources in ~/bitcoin/bitcoin/src and create a symlink src in
~/bitcoin to this location.
3. Get and build the dependencies
@@ -58,7 +65,10 @@ cd ~/bitcoin/deps
tar xvjf ~/Downloads/boost_1_42_0.tar.bz2
cd boost_1_42_0
./bootstrap.sh
./bjam architecture=combined address-model=32_64 macosx-version=10.6 macosx-version-min=10.5 link=static runtime-link=static --toolset=darwin --prefix=/Users/macosuser/bitcoin/deps install
./bjam architecture=combined address-model=32_64 macosx-version=10.5 macosx-version-min=10.5 link=static runtime-link=static --toolset=darwin --prefix=/Users/macosuser/bitcoin/deps install
If you're using Snow Leopard, you will need to specify 10.6 as your Mac OS X
version instead of 10.5.
This part takes a while.. use your judgement and fix it if something doesn't
build for some reason.
@@ -76,6 +86,8 @@ This is what my output looked like at the end:
OpenSSL
-------
(System or MacPorts openssl will work fine. Optional.)
Download from http://www.openssl.org/source/
We would like to build this as a 32 bit/64 bit library so we actually build it
@@ -89,12 +101,12 @@ tar xvf ~/Downloads/openssl-1.0.0.tar
mv openssl-1.0.0 openssl-1.0.0-x86_64
# build i386 (32 bit intel) binary
cd openssl-1.0.0-i386
./Configure --prefix=/Users/macosuser/bitcoin/deps --openssldir=/Users/macosuser/deps/openssl darwin-i386-cc && make
./Configure --prefix=/Users/macosuser/bitcoin/deps --openssldir=/Users/macosuser/bitcoin/deps/openssl darwin-i386-cc && make
make install # only do this on one of the architectures, to install the headers
cd ..
# build x86_64 (64 bit intel) binary
cd openssl-1.0.0-x86_64
./Configure --prefix=/Users/macosuser/bitcoin/deps --openssldir=/Users/macosuser/deps/openssl darwin64-x86_64-cc && make
./Configure --prefix=/Users/macosuser/bitcoin/deps --openssldir=/Users/macosuser/bitcoin/deps/openssl darwin64-x86_64-cc && make
cd ..
# combine the libs
@@ -108,14 +120,58 @@ file lib/libcrypto.a
output should look like this:
ib/libcrypto.a: Mach-O universal binary with 2 architectures
lib/libcrypto.a (for architecture i386): current ar archive random library
lib/libcrypto.a (for architecture x86_64): current ar archive random library
lib/libcrypto.a: Mach-O universal binary with 2 architectures
lib/libcrypto.a (for architecture i386): current ar archive random library
lib/libcrypto.a (for architecture x86_64): current ar archive random library
miniupnpc
---------
(MacPorts miniupnpc package works fine. You will need to modify makefile.)
The process for miniupnpc (optional) is similar to that of OpenSSL.
Download from http://miniupnp.tuxfamily.org/files/.
cd ~/bitcoin/deps
tar xvf ~/Downloads/miniupnpc-1.5.tar
mv miniupnpc-1.5 miniupnpc-1.5-x86_64
tar xvf ~/Downloads/miniupnpc-1.5.tar
mv miniupnpc-1.5 miniupnpc-1.5-i386
# build x86_64 (64 bit intel) binary
cd miniupnpc-1.5-x86_64
export CFLAGS="-arch x86_64"
export LDFLAGS="-arch x86_64"
export PREFIX="/Users/macuser/bitcoin/deps"
make && make install
# build i386 (32 bit intel) binary
cd miniupnpc-1.5-i386
export CFLAGS="-arch i386"
export LDFLAGS="-arch i386"
export PREFIX="/Users/macuser/bitcoin/deps"
make
# combine the libs
cd ~/bitcoin/deps
lipo -arch i386 miniupnpc-1.5-i386/libminiupnpc.a -arch x86_64 miniupnpc-1.5-x86_64/libminiupnpc.a -o lib/libminiupnpc.a -create
Verify your binaries
file lib/libminiupnpc.a
output should look like this:
lib/libminiupnpc.a: Mach-O universal binary with 2 architectures
lib/libminiupnpc.a (for architecture i386): current ar archive random library
lib/libminiupnpc.a (for architecture x86_64): current ar archive random library
Berkeley DB
-----------
(System or MacPorts version work fine.)
Download from http://freshmeat.net/projects/berkeleydb/
cd ~/bitcoin/deps
@@ -127,6 +183,8 @@ cd db-4.8.26/build_unix
wxWidgets
---------
(The wxWidgets-devel MacPorts package will work but will throw annoying assertion dialogs.)
This is the big one..
Check it out from svn
@@ -192,26 +250,29 @@ make install
Now you should be able to build bitcoin
cd ~/bitcoin/trunk
cd ~/bitcoin/src
make -f makefile.osx bitcoin
Before you can run it, you need to create an application bundle for Mac OS.
Create the directories in terminal using mkdir and copy the files into place.
They are available at http://heliacal.net/~solar/bitcoin/mac-build/
You need the Info.plist and the .ins file. The Contents/MacOS/bitcoin file is
the output of the build.
Your directory structure should look like this:
Bitcoin.app
Bitcoin.app/Contents
Bitcoin.app/Contents/Info.plist
Bitcoin.app/Contents/MacOS
Bitcoin.app/Contents/MacOS/bitcoin
Bitcoin.app/Contents/Resources
Bitcoin.app/Contents/Resources/BitcoinAppIcon.icns
A bundle is provided in contrib/Bitcoin.app.
Copy the bitcoin binary in to it like this:
cp -pR ~/bitcoin/bitcoin/contrib/Bitcoin.app ~/bitcoin/
cp ~/bitcoin/src/bitcoin ~/bitcoin/Bitcoin.app/Contents/MacOS/
To run it you can just click the Bitcoin.app in Finder, or just do:
open ~/bitcoin/Bitcoin.app
To run it you can just click the Bitcoin.app in Finder, or just do open
~/bitcoin/Bitcoin.app
If you want to run it with arguments you can just run it without backgrounding
by specifying the full name in terminal:
~/bitcoin/Bitcoin.app/Contents/MacOS/bitcoin -addnode=192.75.207.66
You can also run it with arguments in the background with output going to the
normal places for apps (Console) like this:
open ~/bitcoin/Bitcoin.app --args -connect=192.75.207.66
It is advisable to relocate Bitcoin.app to /Applications or $HOME/Applications.

View File

@@ -3,7 +3,8 @@ Distributed under the MIT/X11 software license, see the accompanying
file license.txt or http://www.opensource.org/licenses/mit-license.php.
This product includes software developed by the OpenSSL Project for use in
the OpenSSL Toolkit (http://www.openssl.org/). This product includes
cryptographic software written by Eric Young (eay@cryptsoft.com).
cryptographic software written by Eric Young (eay@cryptsoft.com) and UPnP
software written by Thomas Bernard.
UNIX BUILD NOTES
@@ -12,6 +13,8 @@ UNIX BUILD NOTES
To Build
--------
cd src/
make -f makefile.unix # Bitcoin with wxWidgets GUI
or
make -f makefile.unix bitcoind # Headless bitcoin
@@ -29,17 +32,25 @@ or Boost 1.37: sudo apt-get install libboost1.37-dev
If using Boost 1.37, append -mt to the boost libraries in the makefile.
We're using wxWidgets 2.9.0, which uses UTF-8. Don't try 2.8, it won't work.
The build hasn't been updated to work with wxWidgets 2.9.1 yet.
Requires wxWidgets 2.9.0 or greater, which uses UTF-8. Don't try 2.8, it
won't work.
You need to download wxWidgets from http://www.wxwidgets.org/downloads/
and build it yourself. See the build instructions and configure parameters
below.
Requires miniupnpc for UPnP port mapping. It can be downloaded from
http://miniupnp.tuxfamily.org/files/. UPnP support is compiled in and
turned off by default. Set USE_UPNP to a different value to control this:
USE_UPNP= no UPnP support, miniupnp not required;
USE_UPNP=0 (the default) UPnP support turned off by default at runtime;
USE_UPNP=1 UPnP support turned on by default at runtime.
Licenses of statically linked libraries:
wxWidgets LGPL 2.1 with very liberal exceptions
Berkeley DB New BSD license with additional requirement that linked software must be free open source
Boost MIT-like license
miniupnpc New (3-clause) BSD license
Versions used in this release:
GCC 4.3.3
@@ -47,6 +58,7 @@ OpenSSL 0.9.8g
wxWidgets 2.9.0
Berkeley DB 4.7.25.NC
Boost 1.37
miniupnpc 1.5
Notes
@@ -66,13 +78,22 @@ tar -xzvf wxWidgets-2.9.0.tar.gz
cd wxWidgets-2.9.0
mkdir buildgtk
cd buildgtk
../configure --with-gtk --enable-debug --disable-shared --enable-monolithic
../configure --with-gtk --enable-debug --disable-shared --enable-monolithic --without-libpng --disable-svg
make
sudo su
make install
ldconfig
miniupnpc
---------
tar -xzvf miniupnpc-1.5.tar.gz
cd miniupnpc-1.5
make
sudo su
make install
Berkeley DB
-----------
You need Berkeley DB 4.7. Don't use 4.8, the database/log0000* files

42
doc/release-process.txt Normal file
View File

@@ -0,0 +1,42 @@
* update (commit) version in sources
* update (commit) version in OSX app bundle
* CFBundleShortVersionString should have value like 0.3.23
* CFBundleVersion should have value like 323
* tag version in git
$ git tag -a v0.3.23
* write release notes. git shortlog helps a lot:
$ git shortlog --no-merges v0.3.22..
* create source-only archive
$ git archive --format=tar --prefix=bitcoin-0.3.23/ HEAD | \
gzip -9c > ~/tmp/bitcoin-0.3.23-src.tar.gz
* perform gitian builds
{ insert useful info here }
Build output expected:
1. linux 32-bit and 64-bit binaries + source
2. windows 32-bit binary + source
3. windows installer
* upload source and builds to SF
* create SHA1SUMS for builds, and PGP-sign it
* update bitcoin.org version
* update forum version
* update wiki
* update wiki download links

Binary file not shown.

View File

@@ -0,0 +1,971 @@
# This file is distributed under the same license as the Bitcoin package.
# xHire <xhire@mujmalysvet.cz>, 2011.
#
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-05-26 21:44+0200\n"
"PO-Revision-Date: 2011-05-26 22:31+0100\n"
"Last-Translator: xHire <xhire@mujmalysvet.cz>\n"
"Language-Team: \n"
"Language: cs\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Poedit-KeywordsList: _;gettext;gettext_noop\n"
"X-Poedit-Basepath: .\n"
"X-Poedit-SearchPath-0: ../../..\n"
#: ../../../src/net.cpp:1503
#, c-format
msgid "Unable to bind to port %d on this computer. Bitcoin is probably already running."
msgstr "Nedaří se mi připojit na port %d na tomhle počítači. Bitcoin už pravděpodobně jednou běží."
#: ../../../src/ui.cpp:204
#, c-format
msgid "This transaction is over the size limit. You can still send it for a fee of %s, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee?"
msgstr "Tahle transakce přesahuje velikostní limit. Pořád ji ale můžeš poslat, pokud za ni zaplatíš poplatek %s, který půjde uzlům, které tvou transakci zpracují, a navíc tak podpoříš síť. Chceš zaplatit poplatek?"
#: ../../../src/ui.cpp:303
msgid "Status"
msgstr "Stav"
#: ../../../src/ui.cpp:304
msgid "Date"
msgstr "Datum"
#: ../../../src/ui.cpp:305
msgid "Description"
msgstr "Popis"
#: ../../../src/ui.cpp:306
msgid "Debit"
msgstr "Výdaje"
#: ../../../src/ui.cpp:307
msgid "Credit"
msgstr "Příjmy"
#: ../../../src/ui.cpp:513
#, c-format
msgid "Open for %d blocks"
msgstr "Otevřeno pro %d bloků"
#: ../../../src/ui.cpp:515
#, c-format
msgid "Open until %s"
msgstr "Otřevřeno dokud %s"
#: ../../../src/ui.cpp:521
#, c-format
msgid "%d/offline?"
msgstr "%d/offline?"
#: ../../../src/ui.cpp:523
#, c-format
msgid "%d/unconfirmed"
msgstr "%d/nepotvrzeno"
#: ../../../src/ui.cpp:525
#, c-format
msgid "%d confirmations"
msgstr "%d potvrzení"
#: ../../../src/ui.cpp:610
msgid "Generated"
msgstr "Vygenerováno"
#: ../../../src/ui.cpp:618
#, c-format
msgid "Generated (%s matures in %d more blocks)"
msgstr "Vygenerováno (%s dozraje po %d blocích)"
#: ../../../src/ui.cpp:622
msgid "Generated - Warning: This block was not received by any other nodes and will probably not be accepted!"
msgstr "Vygenerovaný - Varování: Tehnle blok nebyl obdržen žádným jiným uzlem a pravděpodobně nebude akceptován!"
#: ../../../src/ui.cpp:626
msgid "Generated (not accepted)"
msgstr "Vygenerováno (neakceptováno)"
#: ../../../src/ui.cpp:636
msgid "From: "
msgstr "Od: "
#: ../../../src/ui.cpp:660
msgid "Received with: "
msgstr "Přijato adresou: "
#: ../../../src/ui.cpp:706
msgid "Payment to yourself"
msgstr "Platba pro sebe sama"
#: ../../../src/ui.cpp:740
msgid "To: "
msgstr "Pro: "
#: ../../../src/ui.cpp:1055
msgid " Generating"
msgstr " Generuji"
#: ../../../src/ui.cpp:1057
msgid "(not connected)"
msgstr "(nepřipojen)"
#: ../../../src/ui.cpp:1060
#, c-format
msgid " %d connections %d blocks %d transactions"
msgstr " %d spojení %d bloků %d transakcí"
#: ../../../src/ui.cpp:1165
#: ../../../src/ui.cpp:2529
msgid "New Receiving Address"
msgstr "Nová Bitcoinová adresa"
#: ../../../src/ui.cpp:1166
#: ../../../src/ui.cpp:2530
msgid ""
"You should use a new address for each payment you receive.\n"
"\n"
"Label"
msgstr ""
"Měl bys vždy použít novou adresu pro každou platbu, kterou přijímáš.\n"
"\n"
"Označení"
#: ../../../src/ui.cpp:1235
msgid "<b>Status:</b> "
msgstr "<b>Stav:</b> "
#: ../../../src/ui.cpp:1240
msgid ", has not been successfully broadcast yet"
msgstr ", ještě nebylo rozesláno"
#: ../../../src/ui.cpp:1242
#, c-format
msgid ", broadcast through %d node"
msgstr ", rozesláno přes %d uzel"
#: ../../../src/ui.cpp:1244
#, c-format
msgid ", broadcast through %d nodes"
msgstr ", rozesláno přes %d uzlů"
#: ../../../src/ui.cpp:1248
msgid "<b>Date:</b> "
msgstr "<b>Datum:</b> "
#: ../../../src/ui.cpp:1256
msgid "<b>Source:</b> Generated<br>"
msgstr "<b>Zdroj:</b> Vygenerováno<br>"
#: ../../../src/ui.cpp:1262
#: ../../../src/ui.cpp:1280
msgid "<b>From:</b> "
msgstr "<b>Od:</b> "
#: ../../../src/ui.cpp:1280
msgid "unknown"
msgstr "neznámo"
#: ../../../src/ui.cpp:1281
#: ../../../src/ui.cpp:1305
#: ../../../src/ui.cpp:1364
msgid "<b>To:</b> "
msgstr "<b>Pro:</b> "
#: ../../../src/ui.cpp:1284
msgid " (yours, label: "
msgstr " (tvoje, označení: "
#: ../../../src/ui.cpp:1286
msgid " (yours)"
msgstr " (tvoje)"
#: ../../../src/ui.cpp:1323
#: ../../../src/ui.cpp:1335
#: ../../../src/ui.cpp:1381
#: ../../../src/ui.cpp:1398
msgid "<b>Credit:</b> "
msgstr "<b>Příjem:</b> "
#: ../../../src/ui.cpp:1325
#, c-format
msgid "(%s matures in %d more blocks)"
msgstr "(%s dozraje po %d blocích)"
#: ../../../src/ui.cpp:1327
msgid "(not accepted)"
msgstr "(neakceptováno)"
#: ../../../src/ui.cpp:1372
#: ../../../src/ui.cpp:1380
#: ../../../src/ui.cpp:1395
msgid "<b>Debit:</b> "
msgstr "<b>Výdaj:</b> "
#: ../../../src/ui.cpp:1386
msgid "<b>Transaction fee:</b> "
msgstr "<b>Transakční poplatek:</b> "
#: ../../../src/ui.cpp:1402
msgid "<b>Net amount:</b> "
msgstr "<b>Čistá částka:</b> "
#: ../../../src/ui.cpp:1409
msgid "Message:"
msgstr "Zpráva:"
#: ../../../src/ui.cpp:1411
msgid "Comment:"
msgstr "Komentář:"
#: ../../../src/ui.cpp:1414
msgid "Generated coins must wait 120 blocks before they can be spent. When you generated this block, it was broadcast to the network to be added to the block chain. If it fails to get into the chain, it will change to \"not accepted\" and not be spendable. This may occasionally happen if another node generates a block within a few seconds of yours."
msgstr "Vygenerované mince musí čekat 120 bloků, než mohou být utraceny. Když jsi vygeneroval tenhle blok, tak byl rozposlán do sítě, aby byl přidán do řetězce bloků. Pokud se mu nepodaří dostat se do řetězce, změní se na \"neakceptovaný\" a nebude utratitelný. To se občas může přihodit, pokud jiný uzel vygeneruje blok zhruba ve stejném okamžiku jako ty."
#: ../../../src/ui.cpp:1594
msgid "Cannot write autostart/bitcoin.desktop file"
msgstr "Nemohu zapisovat do souboru autostart/bitcoin.desktop"
#: ../../../src/ui.cpp:1630
msgid "Main"
msgstr "Hlavní"
#: ../../../src/ui.cpp:1638
msgid "&Start Bitcoin on window system startup"
msgstr "&Spustit Bitcoin při startu okenního systému"
#: ../../../src/ui.cpp:1645
msgid "&Minimize on close"
msgstr "&Zavřením pouze skrýt"
#: ../../../src/ui.cpp:1787
#, c-format
msgid "version %s"
msgstr "verze %s"
#: ../../../src/ui.cpp:1899
msgid "Error in amount "
msgstr "Chyba v částce"
#: ../../../src/ui.cpp:1899
#: ../../../src/ui.cpp:1904
#: ../../../src/ui.cpp:1909
#: ../../../src/ui.cpp:1944
#: ../../../src/uibase.cpp:55
msgid "Send Coins"
msgstr "Pošli mince"
#: ../../../src/ui.cpp:1904
msgid "Amount exceeds your balance "
msgstr "Částka překračuje stav účtu"
#: ../../../src/ui.cpp:1909
msgid "Total exceeds your balance when the "
msgstr "Celková částka přesahuje stav tvého účtu, když "
#: ../../../src/ui.cpp:1909
msgid " transaction fee is included "
msgstr " transakční poplatek je zahrnut"
#: ../../../src/ui.cpp:1927
msgid "Payment sent "
msgstr "Platba odeslána"
#: ../../../src/ui.cpp:1927
#: ../../../src/ui.cpp:1932
#: ../../../src/ui.cpp:2076
#: ../../../src/ui.cpp:2229
#: ../../../src/main.cpp:3997
msgid "Sending..."
msgstr "Posílám..."
#: ../../../src/ui.cpp:1944
msgid "Invalid address "
msgstr "Neplatná adresa"
#: ../../../src/ui.cpp:1997
#, c-format
msgid "Sending %s to %s"
msgstr "Posílám %s %s"
#: ../../../src/ui.cpp:2070
#: ../../../src/ui.cpp:2103
msgid "CANCELLED"
msgstr "ZRUŠENO"
#: ../../../src/ui.cpp:2074
msgid "Cancelled"
msgstr "Zrušeno"
#: ../../../src/ui.cpp:2076
msgid "Transfer cancelled "
msgstr "Převod zrušen"
#: ../../../src/ui.cpp:2129
msgid "Error: "
msgstr "Chyba: "
#: ../../../src/ui.cpp:2143
#: ../../../src/ui.cpp:2214
#: ../../../src/main.cpp:4016
msgid "Insufficient funds"
msgstr "Nedostatek peněz"
#: ../../../src/ui.cpp:2148
msgid "Connecting..."
msgstr "Připojuji..."
#: ../../../src/ui.cpp:2153
msgid "Unable to connect"
msgstr "Nemohu se připojit"
#: ../../../src/ui.cpp:2158
msgid "Requesting public key..."
msgstr "Požaduji veřejný klíč..."
#: ../../../src/ui.cpp:2170
msgid "Received public key..."
msgstr "Přijat veřejný klíč..."
#: ../../../src/ui.cpp:2184
msgid "Recipient is not accepting transactions sent by IP address"
msgstr "Příjemce neakceptuje transakce poslané IP adresou"
#: ../../../src/ui.cpp:2186
msgid "Transfer was not accepted"
msgstr "Převod nebyl akceptován"
#: ../../../src/ui.cpp:2195
msgid "Invalid response received"
msgstr "Přišla neplatná odpověď"
#: ../../../src/ui.cpp:2210
msgid "Creating transaction..."
msgstr "Vytvářím transakci..."
#: ../../../src/ui.cpp:2222
#, c-format
msgid "This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds"
msgstr "Tato transakce vyžaduje transakční poplatek nejméně %s kvůli svému objemu, komplexnosti nebo utrácení nedávno přijaté hotovosti"
#: ../../../src/ui.cpp:2224
msgid "Transaction creation failed"
msgstr "Vytvoření transakce selhalo"
#: ../../../src/ui.cpp:2231
msgid "Transaction aborted"
msgstr "Transakce zrušena"
#: ../../../src/ui.cpp:2239
msgid "Lost connection, transaction cancelled"
msgstr "Spojení se ztratilo, takže transakce byla zrušena"
#: ../../../src/ui.cpp:2255
msgid "Sending payment..."
msgstr "Posílám platbu..."
#: ../../../src/ui.cpp:2261
msgid "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."
msgstr "Transakce byla odmítnuta. Tohle může nastat, pokud nějaké mince z tvé peněženky už jednou byly utraceny, například pokud používáš kopii souboru wallet.dat a mince byly utraceny v druhé kopii, ale nebyly označeny jako utracené v této."
#: ../../../src/ui.cpp:2270
msgid "Waiting for confirmation..."
msgstr "Čekám na potvrzení..."
#: ../../../src/ui.cpp:2288
msgid ""
"The payment was sent, but the recipient was unable to verify it.\n"
"The transaction is recorded and will credit to the recipient,\n"
"but the comment information will be blank."
msgstr ""
"Platba byla poslána, ale příjemce není schopen ji ověřit.\n"
"Transakce je zaznamenána a bude připsána příjemci,\n"
"ale poznámka u platby bude prázdná."
#: ../../../src/ui.cpp:2297
msgid "Payment was sent, but an invalid response was received"
msgstr "Platba byla odeslána, ale přišla neplatná odpověď"
#: ../../../src/ui.cpp:2303
msgid "Payment completed"
msgstr "Platba je kompletní"
#: ../../../src/ui.cpp:2334
#: ../../../src/ui.cpp:2480
#: ../../../src/ui.cpp:2517
msgid "Name"
msgstr "Jméno"
#: ../../../src/ui.cpp:2335
#: ../../../src/ui.cpp:2480
#: ../../../src/ui.cpp:2517
msgid "Address"
msgstr "Adresa"
#: ../../../src/ui.cpp:2337
#: ../../../src/ui.cpp:2492
msgid "Label"
msgstr "Označení"
#: ../../../src/ui.cpp:2338
#: ../../../src/uibase.cpp:837
msgid "Bitcoin Address"
msgstr "Bitcoinová adresa"
#: ../../../src/ui.cpp:2462
msgid "This is one of your own addresses for receiving payments and cannot be entered in the address book. "
msgstr "Tohle je jedna z tvých vlastních adres pro příjem plateb a nemůže být zadána do adresáře."
#: ../../../src/ui.cpp:2480
#: ../../../src/ui.cpp:2486
msgid "Edit Address"
msgstr "Upravit adresu"
#: ../../../src/ui.cpp:2492
msgid "Edit Address Label"
msgstr "Upravit označení adresy"
#: ../../../src/ui.cpp:2517
#: ../../../src/ui.cpp:2523
msgid "Add Address"
msgstr "Přidat adresu"
#: ../../../src/ui.cpp:2600
msgid "Bitcoin"
msgstr "Bitcoin"
#: ../../../src/ui.cpp:2602
msgid "Bitcoin - Generating"
msgstr "Bitcoin - Generování"
#: ../../../src/ui.cpp:2604
msgid "Bitcoin - (not connected)"
msgstr "Bitcoin - (nepřipojen)"
#: ../../../src/ui.cpp:2683
msgid "&Open Bitcoin"
msgstr "&Otevřít Bitcoin"
#: ../../../src/ui.cpp:2684
msgid "&Send Bitcoins"
msgstr "&Poslat Bitcoiny"
#: ../../../src/ui.cpp:2685
msgid "O&ptions..."
msgstr "&Možnosti..."
#: ../../../src/ui.cpp:2688
#: ../../../src/uibase.cpp:25
msgid "E&xit"
msgstr "&Konec"
#: ../../../src/ui.cpp:2904
msgid "Program has crashed and will terminate. "
msgstr "Program havaroval a bude ukončen."
#: ../../../src/main.cpp:1866
msgid "Warning: Disk space is low "
msgstr "Upozornění: Na disku je málo místa"
#: ../../../src/main.cpp:3990
#, c-format
msgid "Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds "
msgstr "Chyba: Tato transakce vyžaduje transakční poplatek nejméně %s kvůli svému objemu, komplexnosti nebo utrácení nedávno přijaté hotovosti"
#: ../../../src/main.cpp:3992
msgid "Error: Transaction creation failed "
msgstr "Chyba: Vytvoření transakce selhalo"
#: ../../../src/main.cpp:4001
msgid "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."
msgstr "Chyba: Transakce byla odmítnuta. Tohle může nastat, pokud nějaké mince z tvé peněženky už jednou byly utraceny, například pokud používáš kopii souboru wallet.dat a mince byly utraceny v druhé kopii, ale nebyly označeny jako utracené v této."
#: ../../../src/main.cpp:4014
msgid "Invalid amount"
msgstr "Neplatná částka"
#: ../../../src/main.cpp:4021
msgid "Invalid bitcoin address"
msgstr "Neplatná Bitcoinová adresa"
#: ../../../src/rpc.cpp:1802
#: ../../../src/rpc.cpp:1804
#, c-format
msgid "To use the %s option"
msgstr "Pro použití volby %s"
#: ../../../src/rpc.cpp:1806
#, c-format
msgid ""
"Warning: %s, you must set rpcpassword=<password>\n"
"in the configuration file: %s\n"
"If the file does not exist, create it with owner-readable-only file permissions.\n"
msgstr ""
"Varování: %s, musíš nastavit rpcpassword=<heslo>\n"
"v konfiguračním souboru: %s\n"
"Pokud tenhle soubor neexistuje, vytvoř ho s oprávněním pro čtení pouze pro vlastníka.\n"
#: ../../../src/rpc.cpp:1974
#, c-format
msgid ""
"You must set rpcpassword=<password> in the configuration file:\n"
"%s\n"
"If the file does not exist, create it with owner-readable-only file permissions."
msgstr ""
"Musíš nastavit rpcpassword=<heslo> v konfiguračním souboru:\n"
"%s\n"
"Pokud tenhle soubor neexistuje, vytvoř ho s oprávněním pro čtení pouze pro vlastníka."
#: ../../../src/util.cpp:866
msgid "Warning: Please check that your computer's date and time are correct. If your clock is wrong Bitcoin will not work properly."
msgstr "Varování: Prosím zkontroluj, že datum a čas jsou na tvém počítači správně nastaveny. Pokud jsou nastaveny špatně, Bitcoin nebude fungovat správně."
#: ../../../src/util.cpp:899
msgid "beta"
msgstr "beta"
#: ../../../src/uibase.cpp:28
msgid "&File"
msgstr "&Soubor"
#: ../../../src/uibase.cpp:32
msgid "&Your Receiving Addresses..."
msgstr "Tvá Bitcoinová &adresa..."
#: ../../../src/uibase.cpp:36
msgid "&Options..."
msgstr "M&ožnosti"
#: ../../../src/uibase.cpp:39
msgid "&Settings"
msgstr "Nas&tavení"
#: ../../../src/uibase.cpp:43
msgid "&About..."
msgstr "&O programu"
#: ../../../src/uibase.cpp:46
msgid "&Help"
msgstr "&Nápověda"
#: ../../../src/uibase.cpp:56
msgid "Address Book"
msgstr "Adresář"
#: ../../../src/uibase.cpp:69
msgid "Your Bitcoin Address:"
msgstr "Tvá Bitcoinová adresa:"
#: ../../../src/uibase.cpp:76
msgid " &New... "
msgstr " &Nová..."
#: ../../../src/uibase.cpp:79
#: ../../../src/uibase.cpp:780
#: ../../../src/uibase.cpp:883
msgid " &Copy to Clipboard "
msgstr " &Kopírovat do schránky"
#: ../../../src/uibase.cpp:93
msgid "Balance:"
msgstr "Stav účtu:"
#: ../../../src/uibase.cpp:109
msgid " All"
msgstr " Vše"
#: ../../../src/uibase.cpp:109
msgid " Sent"
msgstr " Odeslané"
#: ../../../src/uibase.cpp:109
msgid " Received"
msgstr " Přijaté"
#: ../../../src/uibase.cpp:109
msgid " In Progress"
msgstr " Pracuje se na tom"
#: ../../../src/uibase.cpp:130
msgid "All Transactions"
msgstr "Všechny transakce"
#: ../../../src/uibase.cpp:141
msgid "Sent/Received"
msgstr "Odeslané/Přijaté"
#: ../../../src/uibase.cpp:152
msgid "Sent"
msgstr "Odeslané"
#: ../../../src/uibase.cpp:163
msgid "Received"
msgstr "Přijaté"
#: ../../../src/uibase.cpp:302
#: ../../../src/uibase.cpp:443
#: ../../../src/uibase.cpp:542
#: ../../../src/uibase.cpp:722
#: ../../../src/uibase.cpp:783
#: ../../../src/uibase.cpp:892
#: ../../../src/uibase.cpp:981
msgid "OK"
msgstr "&Budiž"
#: ../../../src/uibase.cpp:345
msgid "&Start Bitcoin on system startup"
msgstr "&Spustit Bitcoin při startu systému"
#: ../../../src/uibase.cpp:348
msgid "&Minimize to the tray instead of the taskbar"
msgstr "&Minimalizovávat do ikony v panelu"
#: ../../../src/uibase.cpp:351
msgid "Map port using &UPnP"
msgstr "Namapovat port přes &UPnP"
#: ../../../src/uibase.cpp:354
msgid "M&inimize to the tray on close"
msgstr "Zavřením &minimalizovat do ikony"
#: ../../../src/uibase.cpp:360
msgid "&Connect through socks4 proxy: "
msgstr "&Připojit přes socks4 proxy:"
#: ../../../src/uibase.cpp:371
msgid "Proxy &IP:"
msgstr "&IP adresa proxy:"
#: ../../../src/uibase.cpp:379
msgid " &Port:"
msgstr " &Port:"
#: ../../../src/uibase.cpp:392
msgid "Optional transaction fee per KB that helps make sure your transactions are processed quickly. Most transactions are 1KB. Fee 0.01 recommended."
msgstr "Dobrovolný transakční poplatek za každý započatý KB napomáhá tomu, aby tvé transakce byly rychle zpracovány. Většina transakcí má do 1 KB. Doporučená výše poplatku je 0.01."
#: ../../../src/uibase.cpp:399
msgid "Pay transaction fee:"
msgstr "Výše transakčního poplatku:"
#: ../../../src/uibase.cpp:420
msgid "// [don't translate] Test panel 2 for future expansion"
msgstr ""
#: ../../../src/uibase.cpp:424
msgid "// [don't translate] Let's not start multiple pages until the first page is filled up"
msgstr ""
#: ../../../src/uibase.cpp:446
#: ../../../src/uibase.cpp:668
#: ../../../src/uibase.cpp:727
#: ../../../src/uibase.cpp:786
#: ../../../src/uibase.cpp:895
#: ../../../src/uibase.cpp:984
msgid "Cancel"
msgstr "&Zrušit"
#: ../../../src/uibase.cpp:449
msgid "&Apply"
msgstr "&Použít"
#: ../../../src/uibase.cpp:508
msgid "Bitcoin "
msgstr "Bitcoin"
#: ../../../src/uibase.cpp:514
msgid "version"
msgstr "verze"
#: ../../../src/uibase.cpp:525
msgid ""
"Copyright (c) 2009-2011 Bitcoin Developers\n"
"\n"
"This is experimental software.\n"
"\n"
"Distributed under the MIT/X11 software license, see the accompanying file \n"
"license.txt or http://www.opensource.org/licenses/mit-license.php.\n"
"\n"
"This product includes software developed by the OpenSSL Project for use in the \n"
"OpenSSL Toolkit (http://www.openssl.org/) and cryptographic software written by \n"
"Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard."
msgstr ""
"Copyright (c) 2009-2011 Vývojáři Bitcoinu\n"
"\n"
"Tohle je experimentální program.\n"
"\n"
"Šířen pod licencí MIT/X11, viz přiložený soubor license.txt nebo \n"
"http://www.opensource.org/licenses/mit-license.php.\n"
"\n"
"Tento produkt zahrnuje programy vyvinuté OpenSSL Projektem pro použití \n"
"v OpenSSL Toolkitu (http://www.openssl.org/) a kryptografický program od \n"
"Erika Younga (eay@cryptsoft.com) a program UPnP od Thomase Bernarda."
#: ../../../src/uibase.cpp:581
msgid "Enter a Bitcoin address (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L)"
msgstr "Vlož Bitcoinovou adresu (např. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L)"
#: ../../../src/uibase.cpp:595
msgid "Pay &To:"
msgstr "&Komu:"
#: ../../../src/uibase.cpp:610
msgid "&Paste"
msgstr "&Vložit"
#: ../../../src/uibase.cpp:613
msgid " Address &Book..."
msgstr " &Adresář..."
#: ../../../src/uibase.cpp:620
msgid "&Amount:"
msgstr "&Částka"
#: ../../../src/uibase.cpp:630
msgid "T&ransfer:"
msgstr "&Převod:"
#: ../../../src/uibase.cpp:636
msgid " Standard"
msgstr " Standard"
#: ../../../src/uibase.cpp:663
msgid "&Send"
msgstr "&Poslat"
#: ../../../src/uibase.cpp:711
msgid ""
"\n"
"\n"
"Connecting..."
msgstr ""
"\n"
"\n"
"Připojuji..."
#: ../../../src/uibase.cpp:761
msgid "These are your Bitcoin addresses for receiving payments. You may want to give a different one to each sender so you can keep track of who is paying you. The highlighted address is displayed in the main window."
msgstr "Tohle jsou tvé Bitcoinové adresy na příjem plateb. Asi budeš chtít dát jinou adresu každému odesílateli, abys věděl, kdo ti kolik platil. Označená adresa bude zobrazena v hlavním okně."
#: ../../../src/uibase.cpp:774
#: ../../../src/uibase.cpp:886
msgid "&Edit..."
msgstr "&Upravit..."
#: ../../../src/uibase.cpp:777
#: ../../../src/uibase.cpp:889
msgid " &New Address... "
msgstr " &Nová adresa..."
#: ../../../src/uibase.cpp:849
msgid "Sending"
msgstr "Cizí adresy (pro odesílání)"
#: ../../../src/uibase.cpp:857
msgid "These are your Bitcoin addresses for receiving payments. You can give a different one to each sender to keep track of who is paying you. The highlighted address will be displayed in the main window."
msgstr "Tohle jsou tvé Bitcoinové adresy na příjem plateb. Můžeš dát jinou adresu každému odesílateli, abys věděl, kdo ti kolik platil. Označená adresa bude zobrazena v hlavním okně."
#: ../../../src/uibase.cpp:870
msgid "Receiving"
msgstr "Tvoje adresy (pro příjem)"
#: ../../../src/uibase.cpp:880
msgid "&Delete"
msgstr "&Smazat"
#: ../../../src/init.cpp:142
msgid "Bitcoin version"
msgstr "Bitcoin verze"
#: ../../../src/init.cpp:143
msgid "Usage:"
msgstr "Užití:"
#: ../../../src/init.cpp:145
msgid "Send command to -server or bitcoind\n"
msgstr "Poslat příkaz pro -server nebo bitcoind\n"
#: ../../../src/init.cpp:146
msgid "List commands\n"
msgstr "Výpis příkazů\n"
#: ../../../src/init.cpp:147
msgid "Get help for a command\n"
msgstr "Získat nápovědu pro příkaz\n"
#: ../../../src/init.cpp:148
msgid "Options:\n"
msgstr "Možnosti:\n"
#: ../../../src/init.cpp:149
msgid "Specify configuration file (default: bitcoin.conf)\n"
msgstr "Konfigurační soubor (výchozí: bitcoin.conf)\n"
#: ../../../src/init.cpp:150
msgid "Specify pid file (default: bitcoind.pid)\n"
msgstr "PID soubor (výchozí: bitcoind.pid)\n"
#: ../../../src/init.cpp:151
msgid "Generate coins\n"
msgstr "Generovat mince\n"
#: ../../../src/init.cpp:152
msgid "Don't generate coins\n"
msgstr "Negenerovat mince\n"
#: ../../../src/init.cpp:153
msgid "Start minimized\n"
msgstr "Startovat minimalizovaně\n"
#: ../../../src/init.cpp:154
msgid "Specify data directory\n"
msgstr "Adresář pro data\n"
#: ../../../src/init.cpp:155
msgid "Connect through socks4 proxy\n"
msgstr "Připojovat se skrz socks4 proxy\n"
#: ../../../src/init.cpp:156
msgid "Allow DNS lookups for addnode and connect\n"
msgstr "Povolit DNS dotazy pro addnode (přidání uzlu) a connect (připojení)\n"
#: ../../../src/init.cpp:157
msgid "Add a node to connect to\n"
msgstr "Přidat uzel, ke kterému se připojit\n"
#: ../../../src/init.cpp:158
msgid "Connect only to the specified node\n"
msgstr "Připojovat se pouze k udanému uzlu\n"
#: ../../../src/init.cpp:159
msgid "Don't accept connections from outside\n"
msgstr "Nepřijímat připojení zvenčí\n"
#: ../../../src/init.cpp:162
msgid "Don't attempt to use UPnP to map the listening port\n"
msgstr "Nesnažit se použít UPnP k namapování naslouchacího portu\n"
#: ../../../src/init.cpp:164
msgid "Attempt to use UPnP to map the listening port\n"
msgstr "Snažit se použít UPnP k namapování naslouchacího portu\n"
#: ../../../src/init.cpp:167
msgid "Fee per KB to add to transactions you send\n"
msgstr "Poplatek za KB, který se přidá ke každé odeslané transakci\n"
#: ../../../src/init.cpp:169
msgid "Accept command line and JSON-RPC commands\n"
msgstr "Akceptovat příkazy z příkazové řádky a přes JSON-RPC\n"
#: ../../../src/init.cpp:172
msgid "Run in the background as a daemon and accept commands\n"
msgstr "Běžet na pozadí jako démon a akceptovat příkazy\n"
#: ../../../src/init.cpp:174
msgid "Use the test network\n"
msgstr "Použít testovací síť\n"
#: ../../../src/init.cpp:175
msgid "Username for JSON-RPC connections\n"
msgstr "Uživatelské jméno pro JSON-RPC spojení\n"
#: ../../../src/init.cpp:176
msgid "Password for JSON-RPC connections\n"
msgstr "Heslo pro JSON-RPC spojení\n"
#: ../../../src/init.cpp:177
msgid "Listen for JSON-RPC connections on <port> (default: 8332)\n"
msgstr "Čekat na JSON-RPC spojení na <portu> (výchozí: 8332)\n"
#: ../../../src/init.cpp:178
msgid "Allow JSON-RPC connections from specified IP address\n"
msgstr "Povolit JSON-RPC spojení ze specifikované IP adresy\n"
#: ../../../src/init.cpp:179
msgid "Send commands to node running on <ip> (default: 127.0.0.1)\n"
msgstr "Posílat příkazy uzlu běžícím na <ip> (výchozí: 127.0.0.1)\n"
#: ../../../src/init.cpp:180
msgid "Set key pool size to <n> (default: 100)\n"
msgstr "Nastavit zásobník klíčů na velikost <n> (výchozí: 100)\n"
#: ../../../src/init.cpp:181
msgid "Rescan the block chain for missing wallet transactions\n"
msgstr "Přeskenovat řetězec bloků na chybějící transakce peněženky\n"
#: ../../../src/init.cpp:185
msgid ""
"\n"
"SSL options: (see the Bitcoin Wiki for SSL setup instructions)\n"
msgstr ""
"\n"
"Možnosti SSL: (viz instrukce nastavení SSL v Bitcoin Wiki)\n"
#: ../../../src/init.cpp:186
msgid "Use OpenSSL (https) for JSON-RPC connections\n"
msgstr "Použít OpenSSL (https) pro JSON-RPC spojení\n"
#: ../../../src/init.cpp:187
msgid "Server certificate file (default: server.cert)\n"
msgstr "Soubor se serverovým certifikátem (výchozí: server.cert)\n"
#: ../../../src/init.cpp:188
msgid "Server private key (default: server.pem)\n"
msgstr "Soubor se serverovým soukromým klíčem (výchozí: server.pem)\n"
#: ../../../src/init.cpp:189
msgid "Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH)\n"
msgstr "Akceptovatelné šifry (výchozí: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH)\n"
#: ../../../src/init.cpp:193
msgid "This help message\n"
msgstr "Tato nápověda\n"
#: ../../../src/init.cpp:330
#, c-format
msgid "Cannot obtain a lock on data directory %s. Bitcoin is probably already running."
msgstr "Nedaří se mi získat zámek na datový adresář %s. Bitcoin pravděpodobně už jednou běží."
#: ../../../src/init.cpp:356
msgid "Error loading addr.dat \n"
msgstr "Chyba při načítání addr.dat \n"
#: ../../../src/init.cpp:362
msgid "Error loading blkindex.dat \n"
msgstr "Chyba při načítání blkindex.dat \n"
#: ../../../src/init.cpp:369
msgid "Error loading wallet.dat \n"
msgstr "Chyba při načítání wallet.dat \n"
#: ../../../src/init.cpp:449
msgid "Invalid -proxy address"
msgstr "Neplatná -proxy adresa"
#: ../../../src/init.cpp:472
msgid "Invalid amount for -paytxfee=<amount>"
msgstr "Neplatná částka pro -paytxfee=<částka>"
#: ../../../src/init.cpp:476
msgid "Warning: -paytxfee is set very high. This is the transaction fee you will pay if you send a transaction."
msgstr "Varování: -paytxfee je nastaveno velmi vysoko. Toto je transakční poplatek, který zaplatíš za každou poslanou transakci."
#: ../../../src/uibase.h:147
msgid "Transaction Details"
msgstr "Detaily transakce"
#: ../../../src/uibase.h:199
msgid "Options"
msgstr "Možnosti"
#: ../../../src/uibase.h:228
msgid "About Bitcoin"
msgstr "O Bitcoinu"
#: ../../../src/uibase.h:337
msgid "Your Bitcoin Addresses"
msgstr "Tvá Bitcoinová adresa"

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@@ -559,11 +559,6 @@ msgstr "&Ouvrir Bitcoin"
msgid "O&ptions..."
msgstr "O&ptions..."
#: ../../../ui.cpp:2521
#: ../../../uibase.cpp:32
msgid "&Generate Coins"
msgstr "&Générer des pièces"
#: ../../../ui.cpp:2524
#: ../../../uibase.cpp:25
msgid "E&xit"
@@ -739,7 +734,7 @@ msgid ""
"\n"
"This product includes software developed by the OpenSSL Project for use in the \n"
"OpenSSL Toolkit (http://www.openssl.org/) and cryptographic software written by \n"
"Eric Young (eay@cryptsoft.com)."
"Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard."
msgstr ""
"Copyright (c) 2009-2010 Bitcoin Developers\n"
"\n"
@@ -750,7 +745,7 @@ msgstr ""
"\n"
"Ce produit comprend des composants logiciels développés pour le Projet OpenSSL \n"
"OpenSSL Toolkit (http://www.openssl.org/) ainsi que des composants cryptographiques \n"
"écrits par Eric Young (eay@cryptsoft.com)."
"écrits par Eric Young (eay@cryptsoft.com) et des logiciels UPnP écrits par Thomas Bernard.."
#: ../../../uibase.cpp:613
msgid "Enter a Bitcoin address (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJED9L) or IP address (e.g. 123.45.6.7)"

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@@ -0,0 +1,971 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-05-17 14:07+0100\n"
"PO-Revision-Date: 2011-05-17 14:09+0100\n"
"Last-Translator: Anonymous <anon@none>\n"
"Language-Team: \n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Poedit-KeywordsList: _;gettext;gettext_noop\n"
"X-Poedit-Basepath: .\n"
"X-Poedit-SearchPath-0: ../../..\n"
#: ../../../src/net.cpp:1503
#, c-format
msgid "Unable to bind to port %d on this computer. Bitcoin is probably already running."
msgstr "Neįmanoma prisijungti prie šio kompiuterio porto %d. Bitcoin programa tikriausiai jau yra paleista"
#: ../../../src/ui.cpp:204
#, c-format
msgid "This transaction is over the size limit. You can still send it for a fee of %s, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee?"
msgstr "Šis pervedimas viršija dydžio limitą. Jūs galite siūsti šią suma sumokėję %s mokestį, kuris bus skirtas nodams už persiuntimą ir padėti tinklui. Ar sutinkate pridėti ši mokestį?"
#: ../../../src/ui.cpp:303
msgid "Status"
msgstr "Būklė"
#: ../../../src/ui.cpp:304
msgid "Date"
msgstr "Data"
#: ../../../src/ui.cpp:305
msgid "Description"
msgstr "Apibūdinimas"
#: ../../../src/ui.cpp:306
msgid "Debit"
msgstr "Debetas"
#: ../../../src/ui.cpp:307
msgid "Credit"
msgstr "Kreditas"
#: ../../../src/ui.cpp:513
#, c-format
msgid "Open for %d blocks"
msgstr "Atidaryta %d blokams"
#: ../../../src/ui.cpp:515
#, c-format
msgid "Open until %s"
msgstr "Atidaryta iki %s"
#: ../../../src/ui.cpp:521
#, c-format
msgid "%d/offline?"
msgstr "%d/neprisijunges?"
#: ../../../src/ui.cpp:523
#, c-format
msgid "%d/unconfirmed"
msgstr "%d/ nepatvirtinta"
#: ../../../src/ui.cpp:525
#, c-format
msgid "%d confirmations"
msgstr "%d patvirtinta"
#: ../../../src/ui.cpp:610
msgid "Generated"
msgstr "Sugeneruota"
#: ../../../src/ui.cpp:618
#, c-format
msgid "Generated (%s matures in %d more blocks)"
msgstr "Sugeneruota (%s bus galima naudoti už %d blokų)"
#: ../../../src/ui.cpp:622
msgid "Generated - Warning: This block was not received by any other nodes and will probably not be accepted!"
msgstr "Sugeneruota - Perspėjimas: Šio bloko negavo kiti nodai ir jis tikriausiai nebus priimtas!"
#: ../../../src/ui.cpp:626
msgid "Generated (not accepted)"
msgstr "Sugeneruota (nepriimta)"
#: ../../../src/ui.cpp:636
msgid "From: "
msgstr "Nuo: "
#: ../../../src/ui.cpp:660
msgid "Received with: "
msgstr "Priimta su: "
#: ../../../src/ui.cpp:706
msgid "Payment to yourself"
msgstr "Pervedimas sau"
#: ../../../src/ui.cpp:740
msgid "To: "
msgstr "Kam: "
#: ../../../src/ui.cpp:1055
msgid " Generating"
msgstr " Generuojama"
#: ../../../src/ui.cpp:1057
msgid "(not connected)"
msgstr "(neprijungta)"
#: ../../../src/ui.cpp:1060
#, c-format
msgid " %d connections %d blocks %d transactions"
msgstr " %d Jungtys %d Blokai %d pervedimai"
#: ../../../src/ui.cpp:1165
#: ../../../src/ui.cpp:2529
msgid "New Receiving Address"
msgstr "Naujas priėmimo adresas"
#: ../../../src/ui.cpp:1166
#: ../../../src/ui.cpp:2530
msgid ""
"You should use a new address for each payment you receive.\n"
"\n"
"Label"
msgstr ""
"Naudokite naują adresas kiekvienam pervedimui.\n"
"\n"
"Pavadinimas"
#: ../../../src/ui.cpp:1235
msgid "<b>Status:</b> "
msgstr "<b>Būklė:</b> "
#: ../../../src/ui.cpp:1240
msgid ", has not been successfully broadcast yet"
msgstr ", dar nėra paskelbta"
#: ../../../src/ui.cpp:1242
#, c-format
msgid ", broadcast through %d node"
msgstr ", paskelbta per %d nodą"
#: ../../../src/ui.cpp:1244
#, c-format
msgid ", broadcast through %d nodes"
msgstr ", paskelbta per %d nodus"
#: ../../../src/ui.cpp:1248
msgid "<b>Date:</b> "
msgstr "<b>Data:</b> "
#: ../../../src/ui.cpp:1256
msgid "<b>Source:</b> Generated<br>"
msgstr "<b>Iš:</b> Sugeneruota<br>"
#: ../../../src/ui.cpp:1262
#: ../../../src/ui.cpp:1280
msgid "<b>From:</b> "
msgstr "<b>Nuo:</b> "
#: ../../../src/ui.cpp:1280
msgid "unknown"
msgstr "nežinomas"
#: ../../../src/ui.cpp:1281
#: ../../../src/ui.cpp:1305
#: ../../../src/ui.cpp:1364
msgid "<b>To:</b> "
msgstr "<b>Kam:</b> "
#: ../../../src/ui.cpp:1284
msgid " (yours, label: "
msgstr " (jūsų, pavadinimas: "
#: ../../../src/ui.cpp:1286
msgid " (yours)"
msgstr " (jūsų)"
#: ../../../src/ui.cpp:1323
#: ../../../src/ui.cpp:1335
#: ../../../src/ui.cpp:1381
#: ../../../src/ui.cpp:1398
msgid "<b>Credit:</b> "
msgstr "<b>Kreditas:</b> "
#: ../../../src/ui.cpp:1325
#, c-format
msgid "(%s matures in %d more blocks)"
msgstr "(%s bus galima naudoti už %d blokų)"
#: ../../../src/ui.cpp:1327
msgid "(not accepted)"
msgstr "(nepriimta)"
#: ../../../src/ui.cpp:1372
#: ../../../src/ui.cpp:1380
#: ../../../src/ui.cpp:1395
msgid "<b>Debit:</b> "
msgstr "<b>Debetas:</b> "
#: ../../../src/ui.cpp:1386
msgid "<b>Transaction fee:</b> "
msgstr "<b>Pervedimo mokestis:</b> "
#: ../../../src/ui.cpp:1402
msgid "<b>Net amount:</b> "
msgstr "<b>Neto suma:</b> "
#: ../../../src/ui.cpp:1409
msgid "Message:"
msgstr "Žinutė:"
#: ../../../src/ui.cpp:1411
msgid "Comment:"
msgstr "Komentaras:"
#: ../../../src/ui.cpp:1414
msgid "Generated coins must wait 120 blocks before they can be spent. When you generated this block, it was broadcast to the network to be added to the block chain. If it fails to get into the chain, it will change to \"not accepted\" and not be spendable. This may occasionally happen if another node generates a block within a few seconds of yours."
msgstr "Turite palaukti 120 blokų, kol galėsite išleisti sugeneruotas monetas. Kai sugeneravotė šį blokai, jis buvo paskelbtas tinklui ir bus pridėtas į blokų grandinę. Jei šio bloko tinklas nepriims i grandinė, jis pasikeis į \"nepriimtas\" ir negali būti išleidžiamas. Tai gali kartais nutikti jei kitas nodas sugeneravo bloką keliom sekundėm anksčiau."
#: ../../../src/ui.cpp:1594
msgid "Cannot write autostart/bitcoin.desktop file"
msgstr "Nepavyksta įrašyti į autostart/bitcoin.desktop failą"
#: ../../../src/ui.cpp:1630
msgid "Main"
msgstr "Pagrindinis"
#: ../../../src/ui.cpp:1638
msgid "&Start Bitcoin on window system startup"
msgstr "&Paleisti Bitcoin kai pasileižia operacinė sistema"
#: ../../../src/ui.cpp:1645
msgid "&Minimize on close"
msgstr "&Sumažinti kai uždaroma"
#: ../../../src/ui.cpp:1787
#, c-format
msgid "version %s"
msgstr "versija %s"
#: ../../../src/ui.cpp:1899
msgid "Error in amount "
msgstr "Klaidinga suma"
#: ../../../src/ui.cpp:1899
#: ../../../src/ui.cpp:1904
#: ../../../src/ui.cpp:1909
#: ../../../src/ui.cpp:1944
#: ../../../src/uibase.cpp:55
msgid "Send Coins"
msgstr "Siūsti monetas"
#: ../../../src/ui.cpp:1904
msgid "Amount exceeds your balance "
msgstr "Suma viršija jūsų balasą"
#: ../../../src/ui.cpp:1909
msgid "Total exceeds your balance when the "
msgstr "Bendra suma viršija jūsu balansą kai"
#: ../../../src/ui.cpp:1909
msgid " transaction fee is included "
msgstr "pervedimo suma įskaičiuota"
#: ../../../src/ui.cpp:1927
msgid "Payment sent "
msgstr "Mokestis išsiųstas"
#: ../../../src/ui.cpp:1927
#: ../../../src/ui.cpp:1932
#: ../../../src/ui.cpp:2076
#: ../../../src/ui.cpp:2229
#: ../../../src/main.cpp:3997
msgid "Sending..."
msgstr "Siunčia..."
#: ../../../src/ui.cpp:1944
msgid "Invalid address "
msgstr "Klaidingas adresas"
#: ../../../src/ui.cpp:1997
#, c-format
msgid "Sending %s to %s"
msgstr "Siunčia %s į %s"
#: ../../../src/ui.cpp:2070
#: ../../../src/ui.cpp:2103
msgid "CANCELLED"
msgstr "NUTRAUKTA"
#: ../../../src/ui.cpp:2074
msgid "Cancelled"
msgstr "Nutraukta"
#: ../../../src/ui.cpp:2076
msgid "Transfer cancelled "
msgstr "Siuntimas nutrauktas"
#: ../../../src/ui.cpp:2129
msgid "Error: "
msgstr "Klaida:"
#: ../../../src/ui.cpp:2143
#: ../../../src/ui.cpp:2214
#: ../../../src/main.cpp:4016
msgid "Insufficient funds"
msgstr "Nepakankamai monetų"
#: ../../../src/ui.cpp:2148
msgid "Connecting..."
msgstr "Jungiasi..."
#: ../../../src/ui.cpp:2153
msgid "Unable to connect"
msgstr "Negali prisijungti"
#: ../../../src/ui.cpp:2158
msgid "Requesting public key..."
msgstr "Prašo \"viešojo rakto\"(public key)..."
#: ../../../src/ui.cpp:2170
msgid "Received public key..."
msgstr "Gautas \"viešasis raktas\"(public key)..."
#: ../../../src/ui.cpp:2184
msgid "Recipient is not accepting transactions sent by IP address"
msgstr "Gavėjas nepriima pervedimų siunčiamų iš IP adresų"
#: ../../../src/ui.cpp:2186
msgid "Transfer was not accepted"
msgstr "Persiuntimas nepriimtas"
#: ../../../src/ui.cpp:2195
msgid "Invalid response received"
msgstr "Gautas klaidingas atsakymas"
#: ../../../src/ui.cpp:2210
msgid "Creating transaction..."
msgstr "Kuriamas pervedimas..."
#: ../../../src/ui.cpp:2222
#, c-format
msgid "This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds"
msgstr "Šis pervedimas reikalauja %s mokesčio dėl jo sumos, sudėtingumo arba dėl to, kad šie pinigai buvo neseniai gauti"
#: ../../../src/ui.cpp:2224
msgid "Transaction creation failed"
msgstr "Pervedimo sukurti nepavyko"
#: ../../../src/ui.cpp:2231
msgid "Transaction aborted"
msgstr "Pervedimas nutrauktas"
#: ../../../src/ui.cpp:2239
msgid "Lost connection, transaction cancelled"
msgstr "Prarastas ryšys, pervedimas nutrauktas"
#: ../../../src/ui.cpp:2255
msgid "Sending payment..."
msgstr "Monetos siunčiamos..."
#: ../../../src/ui.cpp:2261
msgid "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."
msgstr "Pervedimas buvo atmestas. Tai galėjo atsitikti jei dalis jūsų monetų jau buvo išleista. Pvz.: Jei nodojote kopija wallet.dat kitame kliente ir monetos buvo išleistos ten, bet nepažymėtos kaip išleistos čia."
#: ../../../src/ui.cpp:2270
msgid "Waiting for confirmation..."
msgstr "Laukia patvirtinimo..."
#: ../../../src/ui.cpp:2288
msgid ""
"The payment was sent, but the recipient was unable to verify it.\n"
"The transaction is recorded and will credit to the recipient,\n"
"but the comment information will be blank."
msgstr ""
"Pervedimas išsiūstas, bet gavėjas negalėjo jo patvirtinti.\n"
"Pervedimas įrašytas ir suma bus kredituojama gavėjui,\n"
"bet komentaro informacija nebus rodoma."
#: ../../../src/ui.cpp:2297
msgid "Payment was sent, but an invalid response was received"
msgstr "Pervedimas išsiūstas, bet klaidingas atsakymas gautas"
#: ../../../src/ui.cpp:2303
msgid "Payment completed"
msgstr "Pervedimas pavyko"
#: ../../../src/ui.cpp:2334
#: ../../../src/ui.cpp:2480
#: ../../../src/ui.cpp:2517
msgid "Name"
msgstr "Vardas"
#: ../../../src/ui.cpp:2335
#: ../../../src/ui.cpp:2480
#: ../../../src/ui.cpp:2517
msgid "Address"
msgstr "Adresas"
#: ../../../src/ui.cpp:2337
#: ../../../src/ui.cpp:2492
msgid "Label"
msgstr "Pavadinimas"
#: ../../../src/ui.cpp:2338
#: ../../../src/uibase.cpp:837
msgid "Bitcoin Address"
msgstr "Bitcoin Adresas"
#: ../../../src/ui.cpp:2462
msgid "This is one of your own addresses for receiving payments and cannot be entered in the address book. "
msgstr "Tai vienas iš jūsų adresų priimti pervedimams ir negali būti įvestas i adresų knygą"
#: ../../../src/ui.cpp:2480
#: ../../../src/ui.cpp:2486
msgid "Edit Address"
msgstr "Pakeisti Adresą"
#: ../../../src/ui.cpp:2492
msgid "Edit Address Label"
msgstr "Pakeisti adreso pavadinimą"
#: ../../../src/ui.cpp:2517
#: ../../../src/ui.cpp:2523
msgid "Add Address"
msgstr "Pridėti adresą"
#: ../../../src/ui.cpp:2600
msgid "Bitcoin"
msgstr "Bitcoin"
#: ../../../src/ui.cpp:2602
msgid "Bitcoin - Generating"
msgstr "Bitcoin - Generuoja"
#: ../../../src/ui.cpp:2604
msgid "Bitcoin - (not connected)"
msgstr "Bitcoin - (neprijungta)"
#: ../../../src/ui.cpp:2683
msgid "&Open Bitcoin"
msgstr "&Atidaryti Bitcoin"
#: ../../../src/ui.cpp:2684
#, fuzzy
msgid "&Send Bitcoins"
msgstr "&Atidaryti Bitcoin"
#: ../../../src/ui.cpp:2685
msgid "O&ptions..."
msgstr "P&arametrai..."
#: ../../../src/ui.cpp:2688
#: ../../../src/uibase.cpp:25
msgid "E&xit"
msgstr "&Išeiti"
#: ../../../src/ui.cpp:2904
msgid "Program has crashed and will terminate. "
msgstr "Programa neveikia ir bus uždaryta"
#: ../../../src/main.cpp:1866
msgid "Warning: Disk space is low "
msgstr "Perspėjimas: Diske trūksta vietos"
#: ../../../src/main.cpp:3990
#, c-format
msgid "Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds "
msgstr "Klaida: Šis pervedimas reikalauja %s mokesčio dėl jo sumos, sudėtingumo arba dėl to, kad šie pinigai buvo neseniai gauti "
#: ../../../src/main.cpp:3992
msgid "Error: Transaction creation failed "
msgstr "Klaida: Pervedimo sukurti nepavyko "
#: ../../../src/main.cpp:4001
msgid "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."
msgstr "Klaida: Pervedimas nepavyko. Tai galėjo atsitikti jei dalis jūsų monetų jau buvo išleista. Pvz.: Jei nodojote kopija wallet.dat kitame kliente ir monetos buvo išleistos ten, bet nepažymėtos kaip išleistos čia."
#: ../../../src/main.cpp:4014
msgid "Invalid amount"
msgstr "Neteisinga suma"
#: ../../../src/main.cpp:4021
msgid "Invalid bitcoin address"
msgstr "Klaidingas bitcoin adresas"
#: ../../../src/rpc.cpp:1802
#: ../../../src/rpc.cpp:1804
#, c-format
msgid "To use the %s option"
msgstr "Kad naudoti %s parametrą"
#: ../../../src/rpc.cpp:1806
#, c-format
msgid ""
"Warning: %s, you must set rpcpassword=<password>\n"
"in the configuration file: %s\n"
"If the file does not exist, create it with owner-readable-only file permissions.\n"
msgstr ""
"Perspėjimas: %s, jūs privalote nustatyti rpcpassword=<slaptažodis>\n"
"Konfiguracijos faile: %s\n"
"Jei failas neegzistuoja, sukurkite jį su owner-readable-only failo teisėmis.\n"
#: ../../../src/rpc.cpp:1974
#, c-format
msgid ""
"You must set rpcpassword=<password> in the configuration file:\n"
"%s\n"
"If the file does not exist, create it with owner-readable-only file permissions."
msgstr ""
"Jūs privalote nustatyti rpcpassword=<slaptažodis> Konfiguracijos faile:\n"
"%s\n"
"Jei failas neegzistuoja, sukurkite jį su owner-readable-only failo teisėm."
#: ../../../src/util.cpp:866
msgid "Warning: Please check that your computer's date and time are correct. If your clock is wrong Bitcoin will not work properly."
msgstr "Perspėjimas: Prašome patikrinti kompiuterio laiką ir datą. Jei laikas neteisingai nustatytas, Bitcoin neveiks."
#: ../../../src/util.cpp:899
msgid "beta"
msgstr "beta"
#: ../../../src/uibase.cpp:28
msgid "&File"
msgstr "&Byla"
#: ../../../src/uibase.cpp:32
msgid "&Your Receiving Addresses..."
msgstr "&Jūsų priimantys adresai..."
#: ../../../src/uibase.cpp:36
msgid "&Options..."
msgstr "&Parametrai"
#: ../../../src/uibase.cpp:39
msgid "&Settings"
msgstr "N&ustatymai"
#: ../../../src/uibase.cpp:43
msgid "&About..."
msgstr "&О Apie..."
#: ../../../src/uibase.cpp:46
msgid "&Help"
msgstr "&Pagalba"
#: ../../../src/uibase.cpp:56
msgid "Address Book"
msgstr "Adresų knyga"
#: ../../../src/uibase.cpp:69
msgid "Your Bitcoin Address:"
msgstr "Jūsų Bitcoin Adresas:"
#: ../../../src/uibase.cpp:76
msgid " &New... "
msgstr " &Naujas... "
#: ../../../src/uibase.cpp:79
#: ../../../src/uibase.cpp:780
#: ../../../src/uibase.cpp:883
msgid " &Copy to Clipboard "
msgstr "&Kopijuoti"
#: ../../../src/uibase.cpp:93
msgid "Balance:"
msgstr "Balansas:"
#: ../../../src/uibase.cpp:109
msgid " All"
msgstr "Visi"
#: ../../../src/uibase.cpp:109
msgid " Sent"
msgstr "Išsiūsta"
#: ../../../src/uibase.cpp:109
msgid " Received"
msgstr "Priimta"
#: ../../../src/uibase.cpp:109
msgid " In Progress"
msgstr "Progrese"
#: ../../../src/uibase.cpp:130
msgid "All Transactions"
msgstr "Visi pervedimai"
#: ../../../src/uibase.cpp:141
msgid "Sent/Received"
msgstr "Išsiųsti/Priimti"
#: ../../../src/uibase.cpp:152
msgid "Sent"
msgstr "Išsiūsti"
#: ../../../src/uibase.cpp:163
msgid "Received"
msgstr "Priimti"
#: ../../../src/uibase.cpp:302
#: ../../../src/uibase.cpp:443
#: ../../../src/uibase.cpp:542
#: ../../../src/uibase.cpp:722
#: ../../../src/uibase.cpp:783
#: ../../../src/uibase.cpp:892
#: ../../../src/uibase.cpp:981
msgid "OK"
msgstr "Gerai"
#: ../../../src/uibase.cpp:345
msgid "&Start Bitcoin on system startup"
msgstr "&Paleisti Bitcoin kai pasileidžia operacinė sistema"
#: ../../../src/uibase.cpp:348
msgid "&Minimize to the tray instead of the taskbar"
msgstr "&Sumažinti į \"tray\" vietoj \"taskbar\""
#: ../../../src/uibase.cpp:351
msgid "Map port using &UPnP"
msgstr "Peradresuoti porta naudojant &UPnP"
#: ../../../src/uibase.cpp:354
msgid "M&inimize to the tray on close"
msgstr "Su&mažinti į \"tray\" kai uždaroma"
#: ../../../src/uibase.cpp:360
msgid "&Connect through socks4 proxy: "
msgstr "&Prisijungti per socks4 proksį: "
#: ../../../src/uibase.cpp:371
msgid "Proxy &IP:"
msgstr "P&roksio IP:"
#: ../../../src/uibase.cpp:379
msgid " &Port:"
msgstr " &Portas"
#: ../../../src/uibase.cpp:392
msgid "Optional transaction fee per KB that helps make sure your transactions are processed quickly. Most transactions are 1KB. Fee 0.01 recommended."
msgstr "Pasirintinis pervedimo mokestis per KB, kuris padeda jį ivykdyti greičiau. Dauguma pervedimų yra 1KB. Rekomencuojamas mokestis 0.01."
#: ../../../src/uibase.cpp:399
#, fuzzy
msgid "Pay transaction fee:"
msgstr "Pervedimo mokestis:"
#: ../../../src/uibase.cpp:420
msgid "// [don't translate] Test panel 2 for future expansion"
msgstr ""
#: ../../../src/uibase.cpp:424
msgid "// [don't translate] Let's not start multiple pages until the first page is filled up"
msgstr ""
#: ../../../src/uibase.cpp:446
#: ../../../src/uibase.cpp:668
#: ../../../src/uibase.cpp:727
#: ../../../src/uibase.cpp:786
#: ../../../src/uibase.cpp:895
#: ../../../src/uibase.cpp:984
msgid "Cancel"
msgstr "Nutraukti"
#: ../../../src/uibase.cpp:449
msgid "&Apply"
msgstr "&Nustatyti"
#: ../../../src/uibase.cpp:508
msgid "Bitcoin "
msgstr "Bitcoin "
#: ../../../src/uibase.cpp:514
msgid "version"
msgstr "versija"
#: ../../../src/uibase.cpp:525
#, fuzzy
msgid ""
"Copyright (c) 2009-2011 Bitcoin Developers\n"
"\n"
"This is experimental software.\n"
"\n"
"Distributed under the MIT/X11 software license, see the accompanying file \n"
"license.txt or http://www.opensource.org/licenses/mit-license.php.\n"
"\n"
"This product includes software developed by the OpenSSL Project for use in the \n"
"OpenSSL Toolkit (http://www.openssl.org/) and cryptographic software written by \n"
"Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard."
msgstr ""
"Autorinė teisė (c) 2009-2010 Bitcoin Developers\n"
"\n"
"Ši programa yra eksperimentinė.\n"
"\n"
"Išleista ir teisės saugomos pagal MIT/X11 programų licenziją, kuri detaliau aprašyra faile \n"
"license.txt ir http://www.opensource.org/licenses/mit-license.php.\n"
"\n"
"Šis produktas turi programą iš OpenSSL projekto, kuri naudojamas \n"
"OpenSSL Toolkit (http://www.openssl.org/), kriptografinę programą parašyta \n"
"Eric Young (eay@cryptsoft.com) ir UPnP programą parašyta Thomas Bernard."
#: ../../../src/uibase.cpp:581
msgid "Enter a Bitcoin address (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L)"
msgstr "Įveskite Bitcoin adresą (pvz.: 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L)"
#: ../../../src/uibase.cpp:595
msgid "Pay &To:"
msgstr "&Kam:"
#: ../../../src/uibase.cpp:610
msgid "&Paste"
msgstr "&Įrašyti"
#: ../../../src/uibase.cpp:613
msgid " Address &Book..."
msgstr " &Adresų knyga..."
#: ../../../src/uibase.cpp:620
msgid "&Amount:"
msgstr "S&uma:"
#: ../../../src/uibase.cpp:630
msgid "T&ransfer:"
msgstr "&Pervedimas:"
#: ../../../src/uibase.cpp:636
msgid " Standard"
msgstr "Standartinis"
#: ../../../src/uibase.cpp:663
msgid "&Send"
msgstr "&Siūsti"
#: ../../../src/uibase.cpp:711
msgid ""
"\n"
"\n"
"Connecting..."
msgstr ""
"\n"
"\n"
"Jungiasi..."
#: ../../../src/uibase.cpp:761
msgid "These are your Bitcoin addresses for receiving payments. You may want to give a different one to each sender so you can keep track of who is paying you. The highlighted address is displayed in the main window."
msgstr "Tai yra jūsų Bitcoin adresai priimti pervedimus. Galite duoti skirtinga adresa kiekvienam siuntėjui, kad žinotumėte kas jums moka. Pažymėtas adresas bus rodomas pagrindiniame lange."
#: ../../../src/uibase.cpp:774
#: ../../../src/uibase.cpp:886
msgid "&Edit..."
msgstr "&Pakeisti..."
#: ../../../src/uibase.cpp:777
#: ../../../src/uibase.cpp:889
msgid " &New Address... "
msgstr " &Naujas Adresas... "
#: ../../../src/uibase.cpp:849
msgid "Sending"
msgstr "Siunčiama"
#: ../../../src/uibase.cpp:857
msgid "These are your Bitcoin addresses for receiving payments. You can give a different one to each sender to keep track of who is paying you. The highlighted address will be displayed in the main window."
msgstr "Tai yra jūsų Bitcoin adresai priimti pervedimus. Galite duoti skirtinga adresa kiekvienam siuntėjui, kad žinotumėte kas jums moka. Pažymėtas adresas bus rodomas pagrindiniame lange."
#: ../../../src/uibase.cpp:870
msgid "Receiving"
msgstr "Priėmimo"
#: ../../../src/uibase.cpp:880
msgid "&Delete"
msgstr "&Ištrinti"
#: ../../../src/init.cpp:142
msgid "Bitcoin version"
msgstr "Bitcoin version"
#: ../../../src/init.cpp:143
msgid "Usage:"
msgstr "Komandų vartojimas:"
#: ../../../src/init.cpp:145
msgid "Send command to -server or bitcoind\n"
msgstr "Siūsti komandą i -server arba bitcoind\n"
#: ../../../src/init.cpp:146
msgid "List commands\n"
msgstr "Parodyti visas komandas\n"
#: ../../../src/init.cpp:147
msgid "Get help for a command\n"
msgstr "Komandos paaiškinimas\n"
#: ../../../src/init.cpp:148
msgid "Options:\n"
msgstr "Parametrai\n"
#: ../../../src/init.cpp:149
msgid "Specify configuration file (default: bitcoin.conf)\n"
msgstr "Nurodyti konfiguracijos failą (pagal nutylėjimą: bitcoin.conf)\n"
#: ../../../src/init.cpp:150
#, fuzzy
msgid "Specify pid file (default: bitcoind.pid)\n"
msgstr "Nurodyti konfiguracijos failą (pagal nutylėjimą: bitcoin.conf)\n"
#: ../../../src/init.cpp:151
msgid "Generate coins\n"
msgstr "Generuoti monetas\n"
#: ../../../src/init.cpp:152
msgid "Don't generate coins\n"
msgstr "Negeneruoti monetų\n"
#: ../../../src/init.cpp:153
msgid "Start minimized\n"
msgstr "Paleisti minimizuotą klientą\n"
#: ../../../src/init.cpp:154
msgid "Specify data directory\n"
msgstr "Nurodyti duomenų direktoriją\n"
#: ../../../src/init.cpp:155
msgid "Connect through socks4 proxy\n"
msgstr "Prisijungti per socks4 proksį\n"
#: ../../../src/init.cpp:156
msgid "Allow DNS lookups for addnode and connect\n"
msgstr "Leisti DNS lookups addnode ir connect komandoms\n"
#: ../../../src/init.cpp:157
msgid "Add a node to connect to\n"
msgstr "Pridėti nodą prie kurio bus jungiamasi\n"
#: ../../../src/init.cpp:158
msgid "Connect only to the specified node\n"
msgstr "Prisijungti tik prie šio nodo\n"
#: ../../../src/init.cpp:159
msgid "Don't accept connections from outside\n"
msgstr "Neleisti prisijungti iš išorės\n"
#: ../../../src/init.cpp:162
msgid "Don't attempt to use UPnP to map the listening port\n"
msgstr "Nenaudoti UPnP klausančio porto peradresavimui\n"
#: ../../../src/init.cpp:164
msgid "Attempt to use UPnP to map the listening port\n"
msgstr "Pamėginti naudoti UPnP klausančio porto peradresavimui\n"
#: ../../../src/init.cpp:167
msgid "Fee per KB to add to transactions you send\n"
msgstr "Mokestis per KB pridedamas prie siunčiamo pervedimo\n"
#: ../../../src/init.cpp:169
msgid "Accept command line and JSON-RPC commands\n"
msgstr "Priimti komandas iš terminalo ir JSON-RPC\n"
#: ../../../src/init.cpp:172
msgid "Run in the background as a daemon and accept commands\n"
msgstr "Paleisti daemon\n"
#: ../../../src/init.cpp:174
msgid "Use the test network\n"
msgstr "Naudoti bandomajį tinklą\n"
#: ../../../src/init.cpp:175
msgid "Username for JSON-RPC connections\n"
msgstr "Naudotojo vardas JSON-RPC prisijungimui\n"
#: ../../../src/init.cpp:176
msgid "Password for JSON-RPC connections\n"
msgstr "Slaptažodis JSON-RPC prisijungimui\n"
#: ../../../src/init.cpp:177
msgid "Listen for JSON-RPC connections on <port> (default: 8332)\n"
msgstr "Klausyti JSON-RPC prisijungimų ant <port> (pagal nutylėjimą: 8332)\n"
#: ../../../src/init.cpp:178
msgid "Allow JSON-RPC connections from specified IP address\n"
msgstr "Leisti JSON-RPC prisijungimą iš tam tikrų IP adresų\n"
#: ../../../src/init.cpp:179
msgid "Send commands to node running on <ip> (default: 127.0.0.1)\n"
msgstr "Siūsti komandas į nodą kuris yra <ip> (pagal nutylėjimą: 127.0.0.1)\n"
#: ../../../src/init.cpp:180
msgid "Set key pool size to <n> (default: 100)\n"
msgstr "Nustatyti kiek raktų skaičių <n> (pagal nutylėjimą: 100)\n"
#: ../../../src/init.cpp:181
msgid "Rescan the block chain for missing wallet transactions\n"
msgstr "Perskanuoti blokų grandinę dėl trūkstamų pervedimų\n"
#: ../../../src/init.cpp:185
msgid ""
"\n"
"SSL options: (see the Bitcoin Wiki for SSL setup instructions)\n"
msgstr ""
"\n"
"SSL parametrai: (aplankykite Bitcoin Wiki dėl SSL nustatymų)\n"
#: ../../../src/init.cpp:186
msgid "Use OpenSSL (https) for JSON-RPC connections\n"
msgstr "Naudoti OpenSSL (https) JSON-RPC prisijungimui\n"
#: ../../../src/init.cpp:187
msgid "Server certificate file (default: server.cert)\n"
msgstr "Serverio sertifikato failas (pagal nutylėjimą: server.cert)\n"
#: ../../../src/init.cpp:188
msgid "Server private key (default: server.pem)\n"
msgstr "Serverio privatus raktas (pagal nutylėjimą: server.pem)\n"
#: ../../../src/init.cpp:189
msgid "Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH)\n"
msgstr "Priimtinas šifras (pagal nutylėjimą: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH)\n"
#: ../../../src/init.cpp:193
msgid "This help message\n"
msgstr "Ši pagalbos žinutė\n"
#: ../../../src/init.cpp:330
#, c-format
msgid "Cannot obtain a lock on data directory %s. Bitcoin is probably already running."
msgstr "Neranda duomenų directorijos %s. Bitcoin programa tikriausiai jau paleista."
#: ../../../src/init.cpp:356
msgid "Error loading addr.dat \n"
msgstr "Klaida nuskaitant addr.dat \n"
#: ../../../src/init.cpp:362
msgid "Error loading blkindex.dat \n"
msgstr "Klaida nuskaitant blkindex.dat \n"
#: ../../../src/init.cpp:369
msgid "Error loading wallet.dat \n"
msgstr "Klaida nuskaitant wallet.dat \n"
#: ../../../src/init.cpp:449
msgid "Invalid -proxy address"
msgstr "Klaidingas -proxy adresas"
#: ../../../src/init.cpp:472
msgid "Invalid amount for -paytxfee=<amount>"
msgstr "Klaidinga suma -paytxfee=<amount>"
#: ../../../src/init.cpp:476
msgid "Warning: -paytxfee is set very high. This is the transaction fee you will pay if you send a transaction."
msgstr "Perspėjimas: -paytxfee yra nustatyta labai aukšta suma. Ši suma bus nuskaičiuota kaip mokestis darant pervedimą"
#: ../../../src/uibase.h:147
msgid "Transaction Details"
msgstr "Pervedimų detalės"
#: ../../../src/uibase.h:199
msgid "Options"
msgstr "Parametrai"
#: ../../../src/uibase.h:228
msgid "About Bitcoin"
msgstr "Apie Bitcoin"
#: ../../../src/uibase.h:337
msgid "Your Bitcoin Addresses"
msgstr "Jūsų Bitcoin Adresas"

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,976 @@
msgid ""
msgstr ""
"Project-Id-Version: Bitcoin\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-06-28 20:11+0100\n"
"PO-Revision-Date: \n"
"Last-Translator: Dawid Spiechowicz <spiechu@gmail.com>\n"
"Language-Team: Spiechu <spiechu@gmail.com>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: \n"
"X-Poedit-Language: Polish\n"
"X-Poedit-Country: POLAND\n"
"X-Poedit-SourceCharset: utf-8\n"
"X-Poedit-KeywordsList: _;gettext;gettext_noop\n"
"X-Poedit-Basepath: .\n"
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n"
"X-Poedit-SearchPath-0: ../../..\n"
#: ../../../src/net.cpp:1590
#, c-format
msgid "Unable to bind to port %d on this computer. Bitcoin is probably already running."
msgstr "Nie można powiązać z portem %d tego komputera. Prawdopodobnie program Bitcoin jest już uruchomiony."
#: ../../../src/init.cpp:162
msgid "Bitcoin version"
msgstr "Wersja Bitcoin"
#: ../../../src/init.cpp:163
msgid "Usage:"
msgstr "Użycie:"
#: ../../../src/init.cpp:165
msgid "Send command to -server or bitcoind\n"
msgstr "Wyślij polecenie do -server lub bitcoind\n"
#: ../../../src/init.cpp:166
msgid "List commands\n"
msgstr "Wyświetl komendy\n"
#: ../../../src/init.cpp:167
msgid "Get help for a command\n"
msgstr "Wyświetl pomoc dla komendy\n"
#: ../../../src/init.cpp:168
msgid "Options:\n"
msgstr "Opcje:\n"
#: ../../../src/init.cpp:169
msgid "Specify configuration file (default: bitcoin.conf)\n"
msgstr "Określ plik konfiguracyjny (domyślnie: bitcoin.conf)\n"
#: ../../../src/init.cpp:170
msgid "Specify pid file (default: bitcoind.pid)\n"
msgstr "Wybierz plik pid (domyślnie: bitcoind.pid)\n"
#: ../../../src/init.cpp:171
msgid "Generate coins\n"
msgstr "Generuj monety\n"
#: ../../../src/init.cpp:172
msgid "Don't generate coins\n"
msgstr "Nie generuj monet\n"
#: ../../../src/init.cpp:173
msgid "Start minimized\n"
msgstr "Uruchom zminimalizowany\n"
#: ../../../src/init.cpp:174
msgid "Specify data directory\n"
msgstr "Wybierz katalog z danymi\n"
#: ../../../src/init.cpp:175
msgid "Specify connection timeout (in milliseconds)\n"
msgstr "Ustaw czas upływu połączenia (w milisekundach)\n"
#: ../../../src/init.cpp:176
msgid "Connect through socks4 proxy\n"
msgstr "Połącz przez socks4 proxy\n"
#: ../../../src/init.cpp:177
msgid "Allow DNS lookups for addnode and connect\n"
msgstr "Umożliwiaj wyszukiwanie DNS dla dodania węzła i połączenia\n"
#: ../../../src/init.cpp:178
msgid "Add a node to connect to\n"
msgstr "Dodaj węzeł do którego połączyć\n"
#: ../../../src/init.cpp:179
msgid "Connect only to the specified node\n"
msgstr "Łącz tylko z wybranym węzłem\n"
#: ../../../src/init.cpp:180
msgid "Don't accept connections from outside\n"
msgstr "Nie akceptuj połączeń z zewnątrz\n"
#: ../../../src/init.cpp:183
msgid "Don't attempt to use UPnP to map the listening port\n"
msgstr "Nie próbuj użyć UPnP dla mapowania portu nasłuchu\n"
#: ../../../src/init.cpp:185
msgid "Attempt to use UPnP to map the listening port\n"
msgstr "Próbuj użyć UPnP dla mapowania portu nasłuchu\n"
#: ../../../src/init.cpp:188
msgid "Fee per KB to add to transactions you send\n"
msgstr "Prowizja na KB dodawana do transakcji, które wysyłasz\n"
#: ../../../src/init.cpp:190
msgid "Accept command line and JSON-RPC commands\n"
msgstr "Akceptuj polecenia linii poleceń i JSON-RPC\n"
#: ../../../src/init.cpp:193
msgid "Run in the background as a daemon and accept commands\n"
msgstr "Uruchom w tle (daemon) i akceptuj komendy\n"
#: ../../../src/init.cpp:195
msgid "Use the test network\n"
msgstr "Użyj sieci testowej\n"
#: ../../../src/init.cpp:196
msgid "Username for JSON-RPC connections\n"
msgstr "Nazwa użytkownika dla połączeń JSON-RPC\n"
#: ../../../src/init.cpp:197
msgid "Password for JSON-RPC connections\n"
msgstr "Hasło dla połączeń JSON-RPC\n"
#: ../../../src/init.cpp:198
msgid "Listen for JSON-RPC connections on <port> (default: 8332)\n"
msgstr "Nasłuch dla połączeń JSON-RPC na porcie <port> (domyślnie: 8332)\n"
#: ../../../src/init.cpp:199
msgid "Allow JSON-RPC connections from specified IP address\n"
msgstr "Zezwól na połączenia JSON-RPC z adresu IP\n"
#: ../../../src/init.cpp:200
msgid "Send commands to node running on <ip> (default: 127.0.0.1)\n"
msgstr "Wysyłaj polecenia do węzła działającego na <ip> (domyślnie: 127.0.0.1)\n"
#: ../../../src/init.cpp:201
msgid "Set key pool size to <n> (default: 100)\n"
msgstr "Ustaw pulę kluczy na <n> (domyślnie: 100)\n"
#: ../../../src/init.cpp:202
msgid "Rescan the block chain for missing wallet transactions\n"
msgstr "Przeszukaj łańcuch bloków w poszukiwaniu zaginionych transakcji\n"
#: ../../../src/init.cpp:206
msgid ""
"\n"
"SSL options: (see the Bitcoin Wiki for SSL setup instructions)\n"
msgstr ""
"\n"
"Opcje SSL: (zobacz instrukcje na Bitcoin Wiki dla ustawień SSL)\n"
#: ../../../src/init.cpp:207
msgid "Use OpenSSL (https) for JSON-RPC connections\n"
msgstr "Użyj OpenSSL (https) dla połączeń JSON-RPC\n"
#: ../../../src/init.cpp:208
msgid "Server certificate file (default: server.cert)\n"
msgstr "Plik certyfikacji serwera (domyślnie: server.cert)\n"
#: ../../../src/init.cpp:209
msgid "Server private key (default: server.pem)\n"
msgstr "Klucz prywatny serwera (domyślnie: server.pem)\n"
#: ../../../src/init.cpp:210
msgid "Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH)\n"
msgstr "Akceptowalne szyfry (domyślnie: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH)\n"
#: ../../../src/init.cpp:214
msgid "This help message\n"
msgstr "Ta wiadomość pomocy\n"
#: ../../../src/init.cpp:351
#, c-format
msgid "Cannot obtain a lock on data directory %s. Bitcoin is probably already running."
msgstr "Nie można korzystać z katalogu %s z danymi. Bitcoin prawdopodobnie już jest uruchomiony."
#: ../../../src/init.cpp:377
msgid "Error loading addr.dat \n"
msgstr "Błąd ładowania addr.dat \n"
#: ../../../src/init.cpp:383
msgid "Error loading blkindex.dat \n"
msgstr "Błąd ładowania blkindex.dat \n"
#: ../../../src/init.cpp:391
msgid "Error loading wallet.dat \n"
msgstr "Błąd ładowania wallet.dat \n"
#: ../../../src/init.cpp:481
msgid "Invalid -proxy address"
msgstr "Niewłaściwy adres -proxy"
#: ../../../src/init.cpp:504
msgid "Invalid amount for -paytxfee=<amount>"
msgstr "Nieprawidłowa kwota w -paytxfee=<amount>"
#: ../../../src/init.cpp:508
msgid "Warning: -paytxfee is set very high. This is the transaction fee you will pay if you send a transaction."
msgstr "Ostrzeżenie: ustawienie -paytxfee jest bardzo wysokie. To jest prowizja transakcji, którą zapłacisz jeżeli wyślesz transakcję."
#: ../../../src/rpc.cpp:1822
#: ../../../src/rpc.cpp:1824
#, c-format
msgid "To use the %s option"
msgstr "Użycie opcji %s"
#: ../../../src/rpc.cpp:1826
#, c-format
msgid ""
"Warning: %s, you must set rpcpassword=<password>\n"
"in the configuration file: %s\n"
"If the file does not exist, create it with owner-readable-only file permissions.\n"
msgstr ""
"Ostrzeżenie: %s, musisz ustawić rpcpassword=<password>\n"
"w pliku konfiguracyjnym: %s\n"
"Jeżeli plik nie istnieje, utwórz go z uprawnieniami tylko do odczytu dla właściciela.\n"
#: ../../../src/rpc.cpp:1994
#, c-format
msgid ""
"You must set rpcpassword=<password> in the configuration file:\n"
"%s\n"
"If the file does not exist, create it with owner-readable-only file permissions."
msgstr ""
"Musisz ustawić rpcpassword=<password> w pliku konfiguracyjnym:\n"
"%s\n"
"Jeżeli plik nie istnieje, utwórz go z uprawnieniami tylko do odczytu dla właściciela."
#: ../../../src/util.cpp:874
msgid "Warning: Please check that your computer's date and time are correct. If your clock is wrong Bitcoin will not work properly."
msgstr "Ostrzeżenie: Sprawdź czy ustawienia daty i czasu komputera są prawidłowe. Jeżeli zegar jest źle ustawiony, Bitcoin nie będzie poprawnie działał."
#: ../../../src/util.cpp:908
msgid "beta"
msgstr "beta"
#: ../../../src/ui.cpp:216
#, c-format
msgid "This transaction is over the size limit. You can still send it for a fee of %s, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee?"
msgstr "Ta transakcja jest poza limitem wielkości. W dalszym ciągu możesz wysłać ją z prowizją %s, która dotrze do węzłów przetwarzających twoją transakcję i pomoże utrzymać sieć. Chcesz zapłacić prowizję?"
#: ../../../src/ui.cpp:316
msgid "Status"
msgstr "Status"
#: ../../../src/ui.cpp:317
msgid "Date"
msgstr "Data"
#: ../../../src/ui.cpp:318
msgid "Description"
msgstr "Opis"
#: ../../../src/ui.cpp:319
msgid "Debit"
msgstr "Obciążenie"
#: ../../../src/ui.cpp:320
msgid "Credit"
msgstr "Suma"
#: ../../../src/ui.cpp:526
#, c-format
msgid "Open for %d blocks"
msgstr "Otwórz na %d bloków"
#: ../../../src/ui.cpp:528
#, c-format
msgid "Open until %s"
msgstr "Otwarte dopóki %s"
#: ../../../src/ui.cpp:534
#, c-format
msgid "%d/offline?"
msgstr "%d/offline?"
#: ../../../src/ui.cpp:536
#, c-format
msgid "%d/unconfirmed"
msgstr "%d/niepotwierdzono"
#: ../../../src/ui.cpp:538
#, c-format
msgid "%d confirmations"
msgstr "%d potwierdzeń"
#: ../../../src/ui.cpp:623
msgid "Generated"
msgstr "Wygenerowano"
#: ../../../src/ui.cpp:631
#, c-format
msgid "Generated (%s matures in %d more blocks)"
msgstr "Wygenerowano (%s dojrzałych w %d więcej bloków)"
#: ../../../src/ui.cpp:635
msgid "Generated - Warning: This block was not received by any other nodes and will probably not be accepted!"
msgstr "Wygenerowano - Ostrzeżenie: Ten blok nie został otrzymany przez żaden inny węzeł i prawdopodobnie nie zostanie zaakceptowany!"
#: ../../../src/ui.cpp:639
msgid "Generated (not accepted)"
msgstr "Wygenerowano (nie zaakceptowano)"
#: ../../../src/ui.cpp:649
msgid "From: "
msgstr "Od:"
#: ../../../src/ui.cpp:673
msgid "Received with: "
msgstr "Otrzymano z:"
#: ../../../src/ui.cpp:719
msgid "Payment to yourself"
msgstr "Płatność dla siebie samego"
#: ../../../src/ui.cpp:753
msgid "To: "
msgstr "Do:"
#: ../../../src/ui.cpp:1068
msgid " Generating"
msgstr " Generowanie"
#: ../../../src/ui.cpp:1070
msgid "(not connected)"
msgstr "(nie połączony)"
#: ../../../src/ui.cpp:1073
#, c-format
msgid " %d connections %d blocks %d transactions"
msgstr " %d połączeń %d bloków %d transakcji"
#: ../../../src/ui.cpp:1178
#: ../../../src/ui.cpp:2571
msgid "New Receiving Address"
msgstr "Nowy Adres Odbiorczy"
#: ../../../src/ui.cpp:1179
#: ../../../src/ui.cpp:2572
msgid ""
"You should use a new address for each payment you receive.\n"
"\n"
"Label"
msgstr ""
"Powinieneś użyć nowego adresu dla każdej płatności, którą otrzymasz.\n"
"\n"
"Etykieta"
#: ../../../src/ui.cpp:1251
msgid "<b>Status:</b> "
msgstr "<b>Status:</b>"
#: ../../../src/ui.cpp:1256
msgid ", has not been successfully broadcast yet"
msgstr ", nie został jeszcze prawidłowo rozgłoszony"
#: ../../../src/ui.cpp:1258
#, c-format
msgid ", broadcast through %d node"
msgstr ", rozgłasza przez %d węzeł"
#: ../../../src/ui.cpp:1260
#, c-format
msgid ", broadcast through %d nodes"
msgstr ", rozgłasza przez %d węzłów"
#: ../../../src/ui.cpp:1264
msgid "<b>Date:</b> "
msgstr "<b>Data:</b>"
#: ../../../src/ui.cpp:1272
msgid "<b>Source:</b> Generated<br>"
msgstr "<b>Źródło:</b> Wygenerowano<br>"
#: ../../../src/ui.cpp:1278
#: ../../../src/ui.cpp:1296
msgid "<b>From:</b> "
msgstr "<b>Od:</b>"
#: ../../../src/ui.cpp:1296
msgid "unknown"
msgstr "nieznany"
#: ../../../src/ui.cpp:1297
#: ../../../src/ui.cpp:1321
#: ../../../src/ui.cpp:1380
msgid "<b>To:</b> "
msgstr "<b>Do:</b>"
#: ../../../src/ui.cpp:1300
msgid " (yours, label: "
msgstr " (twoja, etykieta: "
#: ../../../src/ui.cpp:1302
msgid " (yours)"
msgstr " (twoja)"
#: ../../../src/ui.cpp:1339
#: ../../../src/ui.cpp:1351
#: ../../../src/ui.cpp:1397
#: ../../../src/ui.cpp:1414
msgid "<b>Credit:</b> "
msgstr "<b>Suma:</b>"
#: ../../../src/ui.cpp:1341
#, c-format
msgid "(%s matures in %d more blocks)"
msgstr "(%s dojrzałych w %d więcej bloków)"
#: ../../../src/ui.cpp:1343
msgid "(not accepted)"
msgstr "(nie zaakceptowano)"
#: ../../../src/ui.cpp:1388
#: ../../../src/ui.cpp:1396
#: ../../../src/ui.cpp:1411
msgid "<b>Debit:</b> "
msgstr "<b>Obciążenie:</b>"
#: ../../../src/ui.cpp:1402
msgid "<b>Transaction fee:</b> "
msgstr "<b>Prowizja transakcji:</b>"
#: ../../../src/ui.cpp:1418
msgid "<b>Net amount:</b> "
msgstr "<b>Kwota netto:</b>"
#: ../../../src/ui.cpp:1425
msgid "Message:"
msgstr "Wiadomość:"
#: ../../../src/ui.cpp:1427
msgid "Comment:"
msgstr "Komentarz:"
#: ../../../src/ui.cpp:1430
msgid "Generated coins must wait 120 blocks before they can be spent. When you generated this block, it was broadcast to the network to be added to the block chain. If it fails to get into the chain, it will change to \"not accepted\" and not be spendable. This may occasionally happen if another node generates a block within a few seconds of yours."
msgstr "Wygenerowane monety muszą poczekać 120 bloków zanim mogą zostać wydane. Gdy wygenerowałeś ten blok, został rozgłoszony do sieci z przeznaczeniem do dodania do łańcucha bloków. Jeżeli nie uda się dodać bloku do łańcucha, zostanie oznaczony jako \"nie zaakceptowany\" i nie będzie mógł zostać wydany. Sporadycznie dzieje się tak jeżeli inny węzeł wygeneruje blok nie dalej niż kilka sekund od ciebie."
#: ../../../src/ui.cpp:1610
msgid "Cannot write autostart/bitcoin.desktop file"
msgstr "Nie mogę zapisać pliku autostart/bitcoin.desktop"
#: ../../../src/ui.cpp:1646
msgid "Main"
msgstr "Główne"
#: ../../../src/ui.cpp:1656
msgid "&Start Bitcoin on window system startup"
msgstr "&Uruchom Bitcoin przy starcie systemu"
#: ../../../src/ui.cpp:1663
msgid "&Minimize on close"
msgstr "&Minimalizuj przy zamknięciu"
#: ../../../src/ui.cpp:1805
#, c-format
msgid "version %s"
msgstr "wersja %s"
#: ../../../src/ui.cpp:1928
msgid "Error in amount "
msgstr "Nieprawidłowa kwota"
#: ../../../src/ui.cpp:1928
#: ../../../src/ui.cpp:1933
#: ../../../src/ui.cpp:1938
#: ../../../src/ui.cpp:1973
#: ../../../src/uibase.cpp:55
msgid "Send Coins"
msgstr "Wyślij Monety"
#: ../../../src/ui.cpp:1933
msgid "Amount exceeds your balance "
msgstr "Kwota przekracza twój stan konta"
#: ../../../src/ui.cpp:1938
msgid "Total exceeds your balance when the "
msgstr "Przekroczenie twojego stanu konta gdy"
#: ../../../src/ui.cpp:1938
msgid " transaction fee is included "
msgstr " prowizja jest wliczona"
#: ../../../src/ui.cpp:1956
msgid "Payment sent "
msgstr "Wysłano płatność"
#: ../../../src/ui.cpp:1956
#: ../../../src/ui.cpp:1961
#: ../../../src/ui.cpp:2107
#: ../../../src/ui.cpp:2260
#: ../../../src/wallet.cpp:924
msgid "Sending..."
msgstr "Wysyłanie..."
#: ../../../src/ui.cpp:1973
msgid "Invalid address "
msgstr "Nieprawidłowy adres"
#: ../../../src/ui.cpp:2028
#, c-format
msgid "Sending %s to %s"
msgstr "Wysyłanie %s do %s"
#: ../../../src/ui.cpp:2101
#: ../../../src/ui.cpp:2134
msgid "CANCELLED"
msgstr "ANULOWANO"
#: ../../../src/ui.cpp:2105
msgid "Cancelled"
msgstr "Anulowano"
#: ../../../src/ui.cpp:2107
msgid "Transfer cancelled "
msgstr "Transfer anulowano"
#: ../../../src/ui.cpp:2160
msgid "Error: "
msgstr "Błąd:"
#: ../../../src/ui.cpp:2174
#: ../../../src/ui.cpp:2245
#: ../../../src/wallet.cpp:943
msgid "Insufficient funds"
msgstr "Niewystarczające fundusze"
#: ../../../src/ui.cpp:2179
msgid "Connecting..."
msgstr "Łączenie..."
#: ../../../src/ui.cpp:2184
msgid "Unable to connect"
msgstr "Nie można połączyć"
#: ../../../src/ui.cpp:2189
msgid "Requesting public key..."
msgstr "Żądanie klucza publicznego..."
#: ../../../src/ui.cpp:2201
msgid "Received public key..."
msgstr "Otrzymano klucz publiczny..."
#: ../../../src/ui.cpp:2215
msgid "Recipient is not accepting transactions sent by IP address"
msgstr "Adresat nie akceptuje transakcji wysyłanych przez adres IP"
#: ../../../src/ui.cpp:2217
msgid "Transfer was not accepted"
msgstr "Transfer nie został zaakceptowany"
#: ../../../src/ui.cpp:2226
msgid "Invalid response received"
msgstr "Otrzymano niepoprawną odpowiedź"
#: ../../../src/ui.cpp:2241
msgid "Creating transaction..."
msgstr "Tworzenie transakcji..."
#: ../../../src/ui.cpp:2253
#, c-format
msgid "This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds"
msgstr "Ta transakcja wymaga prowizji co najmniej %s z uwagi na kwotę, złożoność lub użycie niedawno otrzymanych funduszy"
#: ../../../src/ui.cpp:2255
msgid "Transaction creation failed"
msgstr "Błąd tworzenia transakcji "
#: ../../../src/ui.cpp:2262
msgid "Transaction aborted"
msgstr "Transakcję przerwano"
#: ../../../src/ui.cpp:2270
msgid "Lost connection, transaction cancelled"
msgstr "Utracono połączenie, transakcja anulowana"
#: ../../../src/ui.cpp:2286
msgid "Sending payment..."
msgstr "Wysyłanie płatności..."
#: ../../../src/ui.cpp:2292
msgid "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."
msgstr "Transakcja została odrzucona. Może się tak zdarzyć jeżeli część monet w twoim portfelu zostało wydanych, np. gdy użyto kopii pliku wallet.dat i monety zostały wydane w kopii, a tutaj nie zostały oznaczone jako wydane."
#: ../../../src/ui.cpp:2301
msgid "Waiting for confirmation..."
msgstr "Oczekiwanie na potwierdzenie..."
#: ../../../src/ui.cpp:2319
msgid ""
"The payment was sent, but the recipient was unable to verify it.\n"
"The transaction is recorded and will credit to the recipient,\n"
"but the comment information will be blank."
msgstr ""
"Płatność została wysłana, ale odbiorca nie mógł jej zweryfikować.\n"
"Transakcja została zarejestrowana i zostanie przypisana do odbiorcy,\n"
"ale informacja w komentarzu będzie pusta."
#: ../../../src/ui.cpp:2328
msgid "Payment was sent, but an invalid response was received"
msgstr "Płatność została wysłana, ale otrzymano nieprawidłową odpowiedź"
#: ../../../src/ui.cpp:2334
msgid "Payment completed"
msgstr "Płatność zakończona"
#: ../../../src/ui.cpp:2376
#: ../../../src/ui.cpp:2522
#: ../../../src/ui.cpp:2559
msgid "Name"
msgstr "Nazwa"
#: ../../../src/ui.cpp:2377
#: ../../../src/ui.cpp:2522
#: ../../../src/ui.cpp:2559
msgid "Address"
msgstr "Adres"
#: ../../../src/ui.cpp:2379
#: ../../../src/ui.cpp:2534
msgid "Label"
msgstr "Etykieta"
#: ../../../src/ui.cpp:2380
#: ../../../src/uibase.cpp:837
msgid "Bitcoin Address"
msgstr "Adres Bitcoin"
#: ../../../src/ui.cpp:2504
msgid "This is one of your own addresses for receiving payments and cannot be entered in the address book. "
msgstr "To jest jeden z twoich adresów na otrzymywane płatności i nie może zostać wpisany do księgi adresowej."
#: ../../../src/ui.cpp:2522
#: ../../../src/ui.cpp:2528
msgid "Edit Address"
msgstr "Edytuj Adres"
#: ../../../src/ui.cpp:2534
msgid "Edit Address Label"
msgstr "Edytuj Etykietę Adresu"
#: ../../../src/ui.cpp:2559
#: ../../../src/ui.cpp:2565
msgid "Add Address"
msgstr "Dodaj Adres"
#: ../../../src/ui.cpp:2642
msgid "Bitcoin"
msgstr "Bitcoin"
#: ../../../src/ui.cpp:2644
msgid "Bitcoin - Generating"
msgstr "Bitcoin - Generowanie"
#: ../../../src/ui.cpp:2646
msgid "Bitcoin - (not connected)"
msgstr "Bitcoin - (nie połączony)"
#: ../../../src/ui.cpp:2725
msgid "&Open Bitcoin"
msgstr "&Otwórz Bitcoin"
#: ../../../src/ui.cpp:2726
msgid "&Send Bitcoins"
msgstr "&Wyślij Bitcoiny"
#: ../../../src/ui.cpp:2727
msgid "O&ptions..."
msgstr "O&pcje..."
#: ../../../src/ui.cpp:2730
#: ../../../src/uibase.cpp:25
msgid "E&xit"
msgstr "W&yjście"
#: ../../../src/ui.cpp:2956
msgid "Program has crashed and will terminate. "
msgstr "Program uległ awarii i zostanie przerwany."
#: ../../../src/main.cpp:1430
msgid "Warning: Disk space is low "
msgstr "Ostrzeżenie: Mało miejsca na dysku"
#: ../../../src/uibase.cpp:28
msgid "&File"
msgstr "&Plik"
#: ../../../src/uibase.cpp:32
msgid "&Your Receiving Addresses..."
msgstr "&Twój Adres Odbiorczy..."
#: ../../../src/uibase.cpp:36
msgid "&Options..."
msgstr "&Opcje..."
#: ../../../src/uibase.cpp:39
msgid "&Settings"
msgstr "&Ustawienia"
#: ../../../src/uibase.cpp:43
msgid "&About..."
msgstr "&O programie..."
#: ../../../src/uibase.cpp:46
msgid "&Help"
msgstr "&Pomoc"
#: ../../../src/uibase.cpp:56
msgid "Address Book"
msgstr "Księga Adresowa"
#: ../../../src/uibase.cpp:69
msgid "Your Bitcoin Address:"
msgstr "Twój Adres Bitcoin:"
#: ../../../src/uibase.cpp:76
msgid " &New... "
msgstr " &Nowy..."
#: ../../../src/uibase.cpp:79
#: ../../../src/uibase.cpp:780
#: ../../../src/uibase.cpp:883
msgid " &Copy to Clipboard "
msgstr " &Kopiuj do schowka "
#: ../../../src/uibase.cpp:93
msgid "Balance:"
msgstr "Saldo:"
#: ../../../src/uibase.cpp:109
msgid " All"
msgstr " Wszystko"
#: ../../../src/uibase.cpp:109
msgid " Sent"
msgstr "Wysłano"
#: ../../../src/uibase.cpp:109
msgid " Received"
msgstr "Otrzymano"
#: ../../../src/uibase.cpp:109
msgid " In Progress"
msgstr "W Trakcie"
#: ../../../src/uibase.cpp:130
msgid "All Transactions"
msgstr "Wszystkie Transakcje"
#: ../../../src/uibase.cpp:141
msgid "Sent/Received"
msgstr "Wysłano/Otrzymano"
#: ../../../src/uibase.cpp:152
msgid "Sent"
msgstr "Wysłano"
#: ../../../src/uibase.cpp:163
msgid "Received"
msgstr "Otrzymano"
#: ../../../src/uibase.cpp:302
#: ../../../src/uibase.cpp:443
#: ../../../src/uibase.cpp:542
#: ../../../src/uibase.cpp:722
#: ../../../src/uibase.cpp:783
#: ../../../src/uibase.cpp:892
#: ../../../src/uibase.cpp:981
msgid "OK"
msgstr "OK"
#: ../../../src/uibase.cpp:345
msgid "&Start Bitcoin on system startup"
msgstr "&Uruchom Bitcoin wraz ze startem systemu"
#: ../../../src/uibase.cpp:348
msgid "&Minimize to the tray instead of the taskbar"
msgstr "&Zminimalizuj do traya zamiast do paska zadań"
#: ../../../src/uibase.cpp:351
msgid "Map port using &UPnP"
msgstr "Mapuj port używając &UPnP"
#: ../../../src/uibase.cpp:354
msgid "M&inimize to the tray on close"
msgstr "Zm&inimalizuj do traya przy zamknięciu"
#: ../../../src/uibase.cpp:360
msgid "&Connect through socks4 proxy: "
msgstr "&Połącz przez socks4 proxy:"
#: ../../../src/uibase.cpp:371
msgid "Proxy &IP:"
msgstr "Proxy &IP:"
#: ../../../src/uibase.cpp:379
msgid " &Port:"
msgstr " &Port:"
#: ../../../src/uibase.cpp:392
msgid "Optional transaction fee per KB that helps make sure your transactions are processed quickly. Most transactions are 1KB. Fee 0.01 recommended."
msgstr "Opcjonalna prowizja określona dla KB transakcji, która zapewni, że twoje transakcje będą szybko przetworzone. Większość transakcji to 1KB. Rekomendowana prowizja to 0.01."
#: ../../../src/uibase.cpp:399
msgid "Pay transaction fee:"
msgstr "Płać prowizję transakcji:"
#: ../../../src/uibase.cpp:420
msgid "// [don't translate] Test panel 2 for future expansion"
msgstr ""
#: ../../../src/uibase.cpp:424
msgid "// [don't translate] Let's not start multiple pages until the first page is filled up"
msgstr ""
#: ../../../src/uibase.cpp:446
#: ../../../src/uibase.cpp:668
#: ../../../src/uibase.cpp:727
#: ../../../src/uibase.cpp:786
#: ../../../src/uibase.cpp:895
#: ../../../src/uibase.cpp:984
msgid "Cancel"
msgstr "Anuluj"
#: ../../../src/uibase.cpp:449
msgid "&Apply"
msgstr "&Zastosuj"
#: ../../../src/uibase.cpp:508
msgid "Bitcoin "
msgstr "Bitcoin"
#: ../../../src/uibase.cpp:514
msgid "version"
msgstr "wersja"
#: ../../../src/uibase.cpp:525
msgid ""
"Copyright (c) 2009-2011 Bitcoin Developers\n"
"\n"
"This is experimental software.\n"
"\n"
"Distributed under the MIT/X11 software license, see the accompanying file \n"
"license.txt or http://www.opensource.org/licenses/mit-license.php.\n"
"\n"
"This product includes software developed by the OpenSSL Project for use in the \n"
"OpenSSL Toolkit (http://www.openssl.org/) and cryptographic software written by \n"
"Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard."
msgstr ""
"Copyright (c) 2009-2011 Bitcoin Developers\n"
"\n"
"To oprogramowanie jest eksperymentalne.\n"
"\n"
"Dystrybuowane na licencji MIT/X11, zobacz towarzyszący plik \n"
"license.txt lub http://www.opensource.org/licenses/mit-license.php.\n"
"\n"
"Ten produkt zawiera oprogramowanie rozwijane przez OpenSSL Project w \n"
"OpenSSL Toolkit (http://www.openssl.org/) i oprogramowanie kryptograficzne napisane przez \n"
"Erica Younga (eay@cryptsoft.com) oraz oprogramowanie UPnP napisane przez Thomasa Bernarda."
#: ../../../src/uibase.cpp:581
msgid "Enter a Bitcoin address (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L)"
msgstr "Wprowadź adres Bitcoin (np. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L)"
#: ../../../src/uibase.cpp:595
msgid "Pay &To:"
msgstr "Wpłać &Dla:"
#: ../../../src/uibase.cpp:610
msgid "&Paste"
msgstr "&Wklej"
#: ../../../src/uibase.cpp:613
msgid " Address &Book..."
msgstr " Księga &Adresowa..."
#: ../../../src/uibase.cpp:620
msgid "&Amount:"
msgstr "&Kwota:"
#: ../../../src/uibase.cpp:630
msgid "T&ransfer:"
msgstr "T&ransfer:"
#: ../../../src/uibase.cpp:636
msgid " Standard"
msgstr " Standard"
#: ../../../src/uibase.cpp:663
msgid "&Send"
msgstr "&Wyślij"
#: ../../../src/uibase.cpp:711
msgid ""
"\n"
"\n"
"Connecting..."
msgstr ""
"\n"
"\n"
"Łączenie..."
#: ../../../src/uibase.cpp:761
msgid "These are your Bitcoin addresses for receiving payments. You may want to give a different one to each sender so you can keep track of who is paying you. The highlighted address is displayed in the main window."
msgstr "To są twoje adresy Bitcoin dla otrzymywania płatności. Możesz chcieć podać różne dla każdego płacącego aby kontrolować kto ci płaci. Wyróżniony adres będzie wyświetlany w oknie głównym."
#: ../../../src/uibase.cpp:774
#: ../../../src/uibase.cpp:886
msgid "&Edit..."
msgstr "&Edytuj..."
#: ../../../src/uibase.cpp:777
#: ../../../src/uibase.cpp:889
msgid " &New Address... "
msgstr " &Nowy Adres..."
#: ../../../src/uibase.cpp:849
msgid "Sending"
msgstr "Wysyłanie"
#: ../../../src/uibase.cpp:857
msgid "These are your Bitcoin addresses for receiving payments. You can give a different one to each sender to keep track of who is paying you. The highlighted address will be displayed in the main window."
msgstr "To są twoje adresy Bitcoin dla otrzymywania płatności. Możesz podać różne dla każdego płacącego aby kontrolować kto ci płaci. Wyróżniony adres będzie wyświetlany w oknie głównym."
#: ../../../src/uibase.cpp:870
msgid "Receiving"
msgstr "Otrzymywanie"
#: ../../../src/uibase.cpp:880
msgid "&Delete"
msgstr "&Usuń"
#: ../../../src/wallet.cpp:917
#, c-format
msgid "Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds "
msgstr "Błąd: Ta transakcja wymaga prowizji co najmniej %s z uwagi na kwotę, złożoność lub użycie niedawno otrzymanych funduszy"
#: ../../../src/wallet.cpp:919
msgid "Error: Transaction creation failed "
msgstr "Błąd: Nie udało się utworzyć transakcji"
#: ../../../src/wallet.cpp:928
msgid "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."
msgstr "Błąd: Transakcja została odrzucona. Może się tak zdarzyć jeżeli część monet w twoim portfelu zostało wydanych, np. gdy użyto kopii pliku wallet.dat i monety zostały wydane w kopii, a tutaj nie zostały oznaczone jako wydane."
#: ../../../src/wallet.cpp:941
msgid "Invalid amount"
msgstr "Niewłaściwa kwota"
#: ../../../src/wallet.cpp:948
msgid "Invalid bitcoin address"
msgstr "Niewłaściwy adres bitcoin"
#: ../../../src/uibase.h:147
msgid "Transaction Details"
msgstr "Szczegóły Transakcji"
#: ../../../src/uibase.h:199
msgid "Options"
msgstr "Opcje"
#: ../../../src/uibase.h:228
msgid "About Bitcoin"
msgstr "O Bitcoin"
#: ../../../src/uibase.h:337
msgid "Your Bitcoin Addresses"
msgstr "Twoje Adresy Bitcoin"

Binary file not shown.

View File

@@ -527,11 +527,6 @@ msgstr "&Abrir Bitcoin"
msgid "O&ptions..."
msgstr "O&pções"
#: ../../../ui.cpp:2502
#: ../../../uibase.cpp:34
msgid "&Generate Coins"
msgstr "&Gerar Moedas"
#: ../../../ui.cpp:2505
#: ../../../uibase.cpp:27
msgid "E&xit"
@@ -705,7 +700,7 @@ msgid ""
"\n"
"This product includes software developed by the OpenSSL Project for use in the \n"
"OpenSSL Toolkit (http://www.openssl.org/) and cryptographic software written by \n"
"Eric Young (eay@cryptsoft.com)."
"Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard."
msgstr ""
"Copyright (c) 2009-2010 Bitcoin Developers\n"
"\n"
@@ -716,7 +711,8 @@ msgstr ""
"http://www.opensource.org/licenses/mit-license.php.\n"
"Este producto inclui software desenvolvido pelo projecto OpenSSL, para \n"
"ser utilizado no OpenSSL Toolkit (http://www.openssl.org) e software de \n"
"criptografia desenvolvido por Eric Young (eay@cryptsoft.com)."
"criptografia desenvolvido por Eric Young (eay@cryptsoft.com)\n"
"e UPnP software escrito por Thomas Bernard."
#: ../../../uibase.cpp:619
msgid "Enter a Bitcoin address (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJED9L) or IP address (e.g. 123.45.6.7)"

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,978 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-06-11 21:58+0100\n"
"PO-Revision-Date: 2011-06-14 09:01+0100\n"
"Last-Translator: Codler <github>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Poedit-KeywordsList: _;gettext;gettext_noop\n"
"X-Poedit-Basepath: .\n"
"X-Poedit-Bookmarks: 35,145,-1,-1,-1,-1,-1,-1,-1,-1\n"
"X-Poedit-SearchPath-0: ../../..\n"
#: ../../../init.cpp:141
msgid "Bitcoin version"
msgstr "Bitcoin version"
#: ../../../init.cpp:142
msgid "Usage:"
msgstr "Användning:"
#: ../../../init.cpp:144
msgid "Send command to -server or bitcoind\n"
msgstr "Skicka kommando till -server eller bitcoind\n"
#: ../../../init.cpp:145
msgid "List commands\n"
msgstr "Lista kommandon\n"
#: ../../../init.cpp:146
msgid "Get help for a command\n"
msgstr "Få hjälp om kommandon\n"
#: ../../../init.cpp:147
msgid "Options:\n"
msgstr "Val:\n"
#: ../../../init.cpp:148
msgid "Specify configuration file (default: bitcoin.conf)\n"
msgstr "Ange konfigurationsfil (standard: bitcoin.conf)\n"
#: ../../../init.cpp:149
msgid "Specify pid file (default: bitcoind.pid)\n"
msgstr "Ange pid-fil (standard: bitcoind.pid)\n"
#: ../../../init.cpp:150
msgid "Generate coins\n"
msgstr "Generera mynt\n"
#: ../../../init.cpp:151
msgid "Don't generate coins\n"
msgstr "Generera inte mynt\n"
#: ../../../init.cpp:152
msgid "Start minimized\n"
msgstr "Starta minimerad\n"
#: ../../../init.cpp:153
msgid "Specify data directory\n"
msgstr "Ange data mappen\n"
#: ../../../init.cpp:154
msgid "Connect through socks4 proxy\n"
msgstr "Anslut via socks4 proxy\n"
#: ../../../init.cpp:155
msgid "Allow DNS lookups for addnode and connect\n"
msgstr "Tillåt DNS uppslagningar för addnode och connect\n"
#: ../../../init.cpp:156
msgid "Add a node to connect to\n"
msgstr "Lägg till en nod att ansluta till\n"
#: ../../../init.cpp:157
msgid "Connect only to the specified node\n"
msgstr "Anslut endast till specifik nod\n"
#: ../../../init.cpp:158
msgid "Don't accept connections from outside\n"
msgstr "Acceptera ej anslutningar från utsidan\n"
#: ../../../init.cpp:161
msgid "Don't attempt to use UPnP to map the listening port\n"
msgstr "Försöker inte använda UPnP till avslyssningsport\n"
#: ../../../init.cpp:163
msgid "Attempt to use UPnP to map the listening port\n"
msgstr "Försöker använda UPnP till avlyssningsport\n"
#: ../../../init.cpp:166
msgid "Fee per KB to add to transactions you send\n"
msgstr "Avgift per KB som läggs på transaktionen när du sänder\n"
#: ../../../init.cpp:168
msgid "Accept command line and JSON-RPC commands\n"
msgstr "Accepterar kommandorad och JSON-RPC kommando\n"
#: ../../../init.cpp:171
msgid "Run in the background as a daemon and accept commands\n"
msgstr "Kör i bakgrund som daemon och accepterar kommando\n"
#: ../../../init.cpp:173
msgid "Use the test network\n"
msgstr "Använd test nätverk\n"
#: ../../../init.cpp:174
msgid "Username for JSON-RPC connections\n"
msgstr "Användarnamn till JSON-RPC anslutning\n"
#: ../../../init.cpp:175
msgid "Password for JSON-RPC connections\n"
msgstr "Lösenord till JSON-RPC anslutning\n"
#: ../../../init.cpp:176
msgid "Listen for JSON-RPC connections on <port> (default: 8332)\n"
msgstr "Lyssnar på JSON-RPC anslutningar på <port> (standard: 8332)\n"
#: ../../../init.cpp:177
msgid "Allow JSON-RPC connections from specified IP address\n"
msgstr "Tillåt JSON-RPC anslutningar från specifik IP-adress\n"
#: ../../../init.cpp:178
msgid "Send commands to node running on <ip> (default: 127.0.0.1)\n"
msgstr "Skicka kommando till noden som körs på <ip> (standard: 127.0.0.1)\n"
#: ../../../init.cpp:179
msgid "Set key pool size to <n> (default: 100)\n"
msgstr "Sätt nyckel pool storlek till <n> (standard: 100)\n"
#: ../../../init.cpp:180
msgid "Rescan the block chain for missing wallet transactions\n"
msgstr "Scanna om block kedja efter saknade plånbokstransaktioner\n"
#: ../../../init.cpp:184
msgid ""
"\n"
"SSL options: (see the Bitcoin Wiki for SSL setup instructions)\n"
msgstr ""
"\n"
"SSL val: (Se på Bitcoin Wiki för SSL installation instruktioner)\n"
#: ../../../init.cpp:185
msgid "Use OpenSSL (https) for JSON-RPC connections\n"
msgstr "Använd OpenSSL (https) till JSON-RPC anslutningar\n"
#: ../../../init.cpp:186
msgid "Server certificate file (default: server.cert)\n"
msgstr "Server certifikatfil (standard: server.cert)\n"
#: ../../../init.cpp:187
msgid "Server private key (default: server.pem)\n"
msgstr "Server privat nyckel (standard: server.pem)\n"
#: ../../../init.cpp:188
msgid "Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH)\n"
msgstr "Acceptabla krypteringar (standard: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH)\n"
#: ../../../init.cpp:192
msgid "This help message\n"
msgstr "Detta hjälpmeddelande\n"
#: ../../../init.cpp:329
#, c-format
msgid "Cannot obtain a lock on data directory %s. Bitcoin is probably already running."
msgstr "Kan inte sätta lås på data mappen %s. Bitcoin körs troligen redan."
#: ../../../init.cpp:355
msgid "Error loading addr.dat \n"
msgstr "Fel vid laddning av addr.dat \n"
#: ../../../init.cpp:361
msgid "Error loading blkindex.dat \n"
msgstr "Fel vid laddning av blkindex.dat \n"
#: ../../../init.cpp:368
msgid "Error loading wallet.dat \n"
msgstr "Fel vid laddning av wallet.dat \n"
#: ../../../init.cpp:448
msgid "Invalid -proxy address"
msgstr "Ogiltig -proxy adress"
#: ../../../init.cpp:471
msgid "Invalid amount for -paytxfee=<amount>"
msgstr "Ogiltig belopp på -paytxfee=<belopp>"
#: ../../../init.cpp:475
msgid "Warning: -paytxfee is set very high. This is the transaction fee you will pay if you send a transaction."
msgstr "Varning: -paytxfee är satt väldigt högt. Denna är transaktionsavgiften som du kommer att betala om du skickar en transaktion."
#: ../../../main.cpp:1866
msgid "Warning: Disk space is low "
msgstr "Varning: Diskutrymme är låg "
#: ../../../main.cpp:3999
#, c-format
msgid "Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds "
msgstr "Fel: Denna transaktion kräver en transaktionsavgift minst %s för dess belopp, komplexitet, eller användning av nyligen mottagna pengar "
#: ../../../main.cpp:4001
msgid "Error: Transaction creation failed "
msgstr "Fel: Misslyckades att skapa transaktion "
#: ../../../main.cpp:4006
#: ../../../ui.cpp:1951
#: ../../../ui.cpp:1956
#: ../../../ui.cpp:2102
#: ../../../ui.cpp:2255
msgid "Sending..."
msgstr "Skickar..."
#: ../../../main.cpp:4010
msgid "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."
msgstr "Fel: Transaktionen blev nekad. Detta kan hända om några av dina mynt i din plånbok var redan spenderad. Till exempel om du använde en kopia av wallet.dat och mynten var redan spenderad i kopian, men som inte var markerad som spenderad här."
#: ../../../main.cpp:4023
msgid "Invalid amount"
msgstr "Ogiltig belopp"
#: ../../../main.cpp:4025
#: ../../../ui.cpp:2169
#: ../../../ui.cpp:2240
msgid "Insufficient funds"
msgstr "Otillräckligt med pengar"
#: ../../../main.cpp:4030
msgid "Invalid bitcoin address"
msgstr "Ogiltig bitcoin adress"
#: ../../../net.cpp:1505
#, c-format
msgid "Unable to bind to port %d on this computer. Bitcoin is probably already running."
msgstr "Det gick inte att binda till port %d på denna dator. Bitcoin körs troligen redan."
#: ../../../rpc.cpp:1816
#: ../../../rpc.cpp:1818
#, c-format
msgid "To use the %s option"
msgstr "För att använda %s val"
#: ../../../rpc.cpp:1820
#, c-format
msgid ""
"Warning: %s, you must set rpcpassword=<password>\n"
"in the configuration file: %s\n"
"If the file does not exist, create it with owner-readable-only file permissions.\n"
msgstr ""
"Varning: %s, du måste sätta rpcpassword=<lösenord>\n"
"i konfigurationsfilen: %s\n"
"Om filen inte existerar, skapa med ägare med filbehörigheten -readable-only.\n"
#: ../../../rpc.cpp:1988
#, c-format
msgid ""
"You must set rpcpassword=<password> in the configuration file:\n"
"%s\n"
"If the file does not exist, create it with owner-readable-only file permissions."
msgstr ""
"Du måste sätta rpcpassword=<lösenord> i konfigurationsfilen:\n"
"%s\n"
"Om filen inte existerar, skapa med ägare med filbehörighete -readable-only."
#: ../../../ui.cpp:211
#, c-format
msgid "This transaction is over the size limit. You can still send it for a fee of %s, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee?"
msgstr "Denna transaktion är över storleksbegränsningen. Du kan fortfarande skicka mot en avgift på %s, som går till noderna som bearbetar din transaktion och hjälper att stödja nätverket. Vill du fortfarande betala avgiften?"
#: ../../../ui.cpp:311
msgid "Status"
msgstr "Status"
#: ../../../ui.cpp:312
msgid "Date"
msgstr "Datum"
#: ../../../ui.cpp:313
msgid "Description"
msgstr "Beskrivning"
#: ../../../ui.cpp:314
msgid "Debit"
msgstr "Debitera"
#: ../../../ui.cpp:315
msgid "Credit"
msgstr "Kreditera"
#: ../../../ui.cpp:521
#, c-format
msgid "Open for %d blocks"
msgstr "Öppna för %d blocks"
#: ../../../ui.cpp:523
#, c-format
msgid "Open until %s"
msgstr "Öppen tills %s"
#: ../../../ui.cpp:529
#, c-format
msgid "%d/offline?"
msgstr "%d/offline?"
#: ../../../ui.cpp:531
#, c-format
msgid "%d/unconfirmed"
msgstr "%d/obekräftade"
#: ../../../ui.cpp:533
#, c-format
msgid "%d confirmations"
msgstr "%d bekräftelser"
#: ../../../ui.cpp:618
msgid "Generated"
msgstr "Genererad"
#: ../../../ui.cpp:626
#, fuzzy, c-format
msgid "Generated (%s matures in %d more blocks)"
msgstr "Genererad (%s mogna i %d fler block)"
#: ../../../ui.cpp:630
msgid "Generated - Warning: This block was not received by any other nodes and will probably not be accepted!"
msgstr "Genererad - Varning: Denna block har inte blivit mottagen av någon annan nod och kommer troligtvis inte bli accepterad"
#: ../../../ui.cpp:634
msgid "Generated (not accepted)"
msgstr "Genererad (ej accepterad)"
#: ../../../ui.cpp:644
msgid "From: "
msgstr "Från: "
#: ../../../ui.cpp:668
msgid "Received with: "
msgstr "Mottagen med: "
#: ../../../ui.cpp:714
msgid "Payment to yourself"
msgstr "Betalning till dig själv"
#: ../../../ui.cpp:748
msgid "To: "
msgstr "Till: "
#: ../../../ui.cpp:1063
msgid " Generating"
msgstr " Generering"
#: ../../../ui.cpp:1065
msgid "(not connected)"
msgstr "(inte ansluten)"
#: ../../../ui.cpp:1068
#, c-format
msgid " %d connections %d blocks %d transactions"
msgstr " %d anslutningar %d block %d transaktioner"
#: ../../../ui.cpp:1173
#: ../../../ui.cpp:2566
msgid "New Receiving Address"
msgstr "Ny Mottagningsadress"
#: ../../../ui.cpp:1174
#: ../../../ui.cpp:2567
msgid ""
"You should use a new address for each payment you receive.\n"
"\n"
"Label"
msgstr ""
"Du borde använda en ny adress för varje betalning som du mottar.\n"
"\n"
"Etikett"
#: ../../../ui.cpp:1246
msgid "<b>Status:</b> "
msgstr "<b>Status:</b> "
#: ../../../ui.cpp:1251
msgid ", has not been successfully broadcast yet"
msgstr ", has not been successfully broadcast yet"
#: ../../../ui.cpp:1253
#, c-format
msgid ", broadcast through %d node"
msgstr ", broadcast genom %d nod"
#: ../../../ui.cpp:1255
#, c-format
msgid ", broadcast through %d nodes"
msgstr ", broadcast genom %d noder"
#: ../../../ui.cpp:1259
msgid "<b>Date:</b> "
msgstr "<b>Datum:</b> "
#: ../../../ui.cpp:1267
msgid "<b>Source:</b> Generated<br>"
msgstr "<b>Källa:</b> Genererad<br>"
#: ../../../ui.cpp:1273
#: ../../../ui.cpp:1291
msgid "<b>From:</b> "
msgstr "<b>Från:</b> "
#: ../../../ui.cpp:1291
msgid "unknown"
msgstr "okänd"
#: ../../../ui.cpp:1292
#: ../../../ui.cpp:1316
#: ../../../ui.cpp:1375
msgid "<b>To:</b> "
msgstr "<b>Till:</b> "
#: ../../../ui.cpp:1295
msgid " (yours, label: "
msgstr " (din, etikett: "
#: ../../../ui.cpp:1297
msgid " (yours)"
msgstr " (ditt)"
#: ../../../ui.cpp:1334
#: ../../../ui.cpp:1346
#: ../../../ui.cpp:1392
#: ../../../ui.cpp:1409
msgid "<b>Credit:</b> "
msgstr "<b>Kredit:</b> "
#: ../../../ui.cpp:1336
#, fuzzy, c-format
msgid "(%s matures in %d more blocks)"
msgstr "(%s matures in %d more blocks)"
#: ../../../ui.cpp:1338
msgid "(not accepted)"
msgstr "(ej accepterad)"
#: ../../../ui.cpp:1383
#: ../../../ui.cpp:1391
#: ../../../ui.cpp:1406
msgid "<b>Debit:</b> "
msgstr "<b>Debit:</b> "
#: ../../../ui.cpp:1397
msgid "<b>Transaction fee:</b> "
msgstr "<b>Transaktionsavgift:</b> "
#: ../../../ui.cpp:1413
#, fuzzy
msgid "<b>Net amount:</b> "
msgstr "<b>Nät belopp:</b> "
#: ../../../ui.cpp:1420
msgid "Message:"
msgstr "Meddelande:"
#: ../../../ui.cpp:1422
msgid "Comment:"
msgstr "Kommentar:"
#: ../../../ui.cpp:1425
msgid "Generated coins must wait 120 blocks before they can be spent. When you generated this block, it was broadcast to the network to be added to the block chain. If it fails to get into the chain, it will change to \"not accepted\" and not be spendable. This may occasionally happen if another node generates a block within a few seconds of yours."
msgstr "Genererad mynt måste vänta 120 block innan dem kan användas.När du genererat denna block, skickades en broadcast till nätet och lades till block kedjan. Om den misslyckas att lägga till kedjan så kommer det ändras till \"not accepted\" och är icke brukbar. Detta kan hända om en annan nod genererat en block några sekunder efter din."
#: ../../../ui.cpp:1605
msgid "Cannot write autostart/bitcoin.desktop file"
msgstr "Kan inte skriva autostart/bitcoin.desktop fil"
#: ../../../ui.cpp:1641
msgid "Main"
msgstr "Huvud"
#: ../../../ui.cpp:1651
msgid "&Start Bitcoin on window system startup"
msgstr "&Starta Bitcoin vid uppstart i windows"
#: ../../../ui.cpp:1658
msgid "&Minimize on close"
msgstr "&Minimera vid stängning"
#: ../../../ui.cpp:1800
#, c-format
msgid "version %s"
msgstr "version %s"
#: ../../../ui.cpp:1923
msgid "Error in amount "
msgstr "Fel i belopp "
#: ../../../ui.cpp:1923
#: ../../../ui.cpp:1928
#: ../../../ui.cpp:1933
#: ../../../ui.cpp:1968
#: ../../../uibase.cpp:55
msgid "Send Coins"
msgstr "Skicka mynt"
#: ../../../ui.cpp:1928
msgid "Amount exceeds your balance "
msgstr "Belopp överskrider din balans "
#: ../../../ui.cpp:1933
msgid "Total exceeds your balance when the "
msgstr "Totals överskrider din balans när "
#: ../../../ui.cpp:1933
msgid " transaction fee is included "
msgstr " transaktionsavgift är inkluderad "
#: ../../../ui.cpp:1951
msgid "Payment sent "
msgstr "Betalning skickad "
#: ../../../ui.cpp:1968
msgid "Invalid address "
msgstr "Ogiltig adress "
#: ../../../ui.cpp:2023
#, c-format
msgid "Sending %s to %s"
msgstr "Skickar %s till %s"
#: ../../../ui.cpp:2096
#: ../../../ui.cpp:2129
msgid "CANCELLED"
msgstr "AVBRUTEN"
#: ../../../ui.cpp:2100
msgid "Cancelled"
msgstr "Avbruten"
#: ../../../ui.cpp:2102
msgid "Transfer cancelled "
msgstr "Överföring avbruten "
#: ../../../ui.cpp:2155
msgid "Error: "
msgstr "Fel: "
#: ../../../ui.cpp:2174
msgid "Connecting..."
msgstr "Ansluter..."
#: ../../../ui.cpp:2179
msgid "Unable to connect"
msgstr "Det gick inte att ansluta"
#: ../../../ui.cpp:2184
msgid "Requesting public key..."
msgstr "Efterfrågar publik nyckel..."
#: ../../../ui.cpp:2196
msgid "Received public key..."
msgstr "Mottagen publik nyckel..."
#: ../../../ui.cpp:2210
msgid "Recipient is not accepting transactions sent by IP address"
msgstr "Mottagaren accepterar inte transaktioner skickat från IP adress"
#: ../../../ui.cpp:2212
msgid "Transfer was not accepted"
msgstr "Överföringen var inte accepterad"
#: ../../../ui.cpp:2221
msgid "Invalid response received"
msgstr "Ogiltig respons mottagen"
#: ../../../ui.cpp:2236
msgid "Creating transaction..."
msgstr "Skapar transation..."
#: ../../../ui.cpp:2248
#, c-format
msgid "This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds"
msgstr "Denna transaktion kräver en transaktionsavgift minst %s för dess belopp, komplexitet, eller användning av nyligen mottagna pengar"
#: ../../../ui.cpp:2250
msgid "Transaction creation failed"
msgstr "Misslyckades skapa transaktion"
#: ../../../ui.cpp:2257
msgid "Transaction aborted"
msgstr "Transaktion avbruten"
#: ../../../ui.cpp:2265
msgid "Lost connection, transaction cancelled"
msgstr "Förlorad anslutning, transaktionen avbruten"
#: ../../../ui.cpp:2281
msgid "Sending payment..."
msgstr "Skickar betalning..."
#: ../../../ui.cpp:2287
msgid "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."
msgstr "Transaktionen blev nekad. Detta kan hända om några av dina mynt i din plånbok var redan spenderad. Till exempel om du använde en kopia av wallet.dat och mynten var redan spenderad i kopian, men som inte var markerad som spenderad här."
#: ../../../ui.cpp:2296
msgid "Waiting for confirmation..."
msgstr "Väntar på bekräftelse..."
#: ../../../ui.cpp:2314
msgid ""
"The payment was sent, but the recipient was unable to verify it.\n"
"The transaction is recorded and will credit to the recipient,\n"
"but the comment information will be blank."
msgstr ""
"Betalning var skickat, men mottagaren kunde inte verifiera det.\n"
"Transaktionen är registrerad och kommer att kreditera mottagaren,\n"
"men kommentar informationen kommer att vara tom."
#: ../../../ui.cpp:2323
msgid "Payment was sent, but an invalid response was received"
msgstr "Betalning var skickad, men en ogiltig respons var mottagen"
#: ../../../ui.cpp:2329
msgid "Payment completed"
msgstr "Betalning slutförd"
#: ../../../ui.cpp:2371
#: ../../../ui.cpp:2517
#: ../../../ui.cpp:2554
msgid "Name"
msgstr "Namn"
#: ../../../ui.cpp:2372
#: ../../../ui.cpp:2517
#: ../../../ui.cpp:2554
msgid "Address"
msgstr "Adress"
#: ../../../ui.cpp:2374
#: ../../../ui.cpp:2529
msgid "Label"
msgstr "Etikett"
#: ../../../ui.cpp:2375
#: ../../../uibase.cpp:837
msgid "Bitcoin Address"
msgstr "Bitcoin Adress"
#: ../../../ui.cpp:2499
msgid "This is one of your own addresses for receiving payments and cannot be entered in the address book. "
msgstr "Denna är en av dina egna adresser för mottagning av betalningar och kan inte slås in i adressboken. "
#: ../../../ui.cpp:2517
#: ../../../ui.cpp:2523
msgid "Edit Address"
msgstr "Ändra Adress"
#: ../../../ui.cpp:2529
msgid "Edit Address Label"
msgstr "Ändra Address Etikett"
#: ../../../ui.cpp:2554
#: ../../../ui.cpp:2560
msgid "Add Address"
msgstr "Lägg till Adress"
#: ../../../ui.cpp:2637
msgid "Bitcoin"
msgstr "Bitcoin"
#: ../../../ui.cpp:2639
msgid "Bitcoin - Generating"
msgstr "Bitcoin - Genererar"
#: ../../../ui.cpp:2641
msgid "Bitcoin - (not connected)"
msgstr "Bitcoin - (ej ansluten)"
#: ../../../ui.cpp:2720
msgid "&Open Bitcoin"
msgstr "&Öppna Bitcoin"
#: ../../../ui.cpp:2721
msgid "&Send Bitcoins"
msgstr "&Skicka Bitcoins"
#: ../../../ui.cpp:2722
msgid "O&ptions..."
msgstr "&Inställningar..."
#: ../../../ui.cpp:2725
#: ../../../uibase.cpp:25
msgid "E&xit"
msgstr "&Avsluta"
#: ../../../ui.cpp:2951
msgid "Program has crashed and will terminate. "
msgstr "Programmet har krachat och kommer att avslutas. "
#: ../../../uibase.cpp:28
msgid "&File"
msgstr "&Fil"
#: ../../../uibase.cpp:32
msgid "&Your Receiving Addresses..."
msgstr "&Dina Mottagningsadresser..."
#: ../../../uibase.cpp:36
msgid "&Options..."
msgstr "&Inställningar..."
#: ../../../uibase.cpp:39
msgid "&Settings"
msgstr "&Inställningar"
#: ../../../uibase.cpp:43
msgid "&About..."
msgstr "&Om..."
#: ../../../uibase.cpp:46
msgid "&Help"
msgstr "&Hjälp"
#: ../../../uibase.cpp:56
msgid "Address Book"
msgstr "Adressbok"
#: ../../../uibase.cpp:69
msgid "Your Bitcoin Address:"
msgstr "Din Bitcoin Adress:"
#: ../../../uibase.cpp:76
msgid " &New... "
msgstr " &Nytt... "
#: ../../../uibase.cpp:79
#: ../../../uibase.cpp:780
#: ../../../uibase.cpp:883
msgid " &Copy to Clipboard "
msgstr " &Kopiera till Urklipp "
#: ../../../uibase.cpp:93
msgid "Balance:"
msgstr "Balans:"
#: ../../../uibase.cpp:109
msgid " All"
msgstr " Alla"
#: ../../../uibase.cpp:109
msgid " Sent"
msgstr " Skickat"
#: ../../../uibase.cpp:109
msgid " Received"
msgstr " Mottagen"
#: ../../../uibase.cpp:109
msgid " In Progress"
msgstr " Pågående"
#: ../../../uibase.cpp:130
msgid "All Transactions"
msgstr "Alla Transaktioner"
#: ../../../uibase.cpp:141
msgid "Sent/Received"
msgstr "Skickat/Mottagen"
#: ../../../uibase.cpp:152
msgid "Sent"
msgstr "Skickat"
#: ../../../uibase.cpp:163
msgid "Received"
msgstr "Mottagen"
#: ../../../uibase.cpp:302
#: ../../../uibase.cpp:443
#: ../../../uibase.cpp:542
#: ../../../uibase.cpp:722
#: ../../../uibase.cpp:783
#: ../../../uibase.cpp:892
#: ../../../uibase.cpp:981
msgid "OK"
msgstr "OK"
#: ../../../uibase.cpp:345
msgid "&Start Bitcoin on system startup"
msgstr "&Starta Bitcoin vid system uppstart"
#: ../../../uibase.cpp:348
msgid "&Minimize to the tray instead of the taskbar"
msgstr "&Minimerar till systemfältet istället för aktivitetsfält"
#: ../../../uibase.cpp:351
#, fuzzy
msgid "Map port using &UPnP"
msgstr "Mapp port använder &UPnP"
#: ../../../uibase.cpp:354
msgid "M&inimize to the tray on close"
msgstr "M&inimera till systemfältet vid stängning"
#: ../../../uibase.cpp:360
msgid "&Connect through socks4 proxy: "
msgstr "&Anslut via socks4 proxy: "
#: ../../../uibase.cpp:371
msgid "Proxy &IP:"
msgstr "Proxy &IP:"
#: ../../../uibase.cpp:379
msgid " &Port:"
msgstr " &Port:"
#: ../../../uibase.cpp:392
#, fuzzy
msgid "Optional transaction fee per KB that helps make sure your transactions are processed quickly. Most transactions are 1KB. Fee 0.01 recommended."
msgstr "Frivillig transaktionsavgift per KB som garanterar att din transaktion bearbetas snabbt. Flesta transaktioner är 1KB. Most transactions are 1KB. Avgift 0.01 rekommenderas."
#: ../../../uibase.cpp:399
msgid "Pay transaction fee:"
msgstr "Betala transaktionsavgift:"
#: ../../../uibase.cpp:420
msgid "// [don't translate] Test panel 2 for future expansion"
msgstr ""
#: ../../../uibase.cpp:424
msgid "// [don't translate] Let's not start multiple pages until the first page is filled up"
msgstr ""
#: ../../../uibase.cpp:446
#: ../../../uibase.cpp:668
#: ../../../uibase.cpp:727
#: ../../../uibase.cpp:786
#: ../../../uibase.cpp:895
#: ../../../uibase.cpp:984
msgid "Cancel"
msgstr "Avbryt"
#: ../../../uibase.cpp:449
msgid "&Apply"
msgstr "&Använd"
#: ../../../uibase.cpp:508
msgid "Bitcoin "
msgstr "Bitcoin "
#: ../../../uibase.cpp:514
msgid "version"
msgstr "version"
#: ../../../uibase.cpp:525
#, fuzzy
msgid ""
"Copyright (c) 2009-2011 Bitcoin Developers\n"
"\n"
"This is experimental software.\n"
"\n"
"Distributed under the MIT/X11 software license, see the accompanying file \n"
"license.txt or http://www.opensource.org/licenses/mit-license.php.\n"
"\n"
"This product includes software developed by the OpenSSL Project for use in the \n"
"OpenSSL Toolkit (http://www.openssl.org/) and cryptographic software written by \n"
"Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard."
msgstr ""
"Copyright (c) 2009-2011 Bitcoin Developers\n"
"\n"
"This is experimental software.\n"
"\n"
"Distributed under the MIT/X11 software license, see the accompanying file \n"
"license.txt or http://www.opensource.org/licenses/mit-license.php.\n"
"\n"
"This product includes software developed by the OpenSSL Project for use in the \n"
"OpenSSL Toolkit (http://www.openssl.org/) and cryptographic software written by \n"
"Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard."
#: ../../../uibase.cpp:581
msgid "Enter a Bitcoin address (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L)"
msgstr "Ange en Bitcoin adress (t.ex. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L)"
#: ../../../uibase.cpp:595
msgid "Pay &To:"
msgstr "Betala &Till:"
#: ../../../uibase.cpp:610
msgid "&Paste"
msgstr "&Klistra in"
#: ../../../uibase.cpp:613
msgid " Address &Book..."
msgstr " Adress&bok..."
#: ../../../uibase.cpp:620
msgid "&Amount:"
msgstr "&Belopp:"
#: ../../../uibase.cpp:630
#, fuzzy
msgid "T&ransfer:"
msgstr "T&ransfer:"
#: ../../../uibase.cpp:636
msgid " Standard"
msgstr " Standard"
#: ../../../uibase.cpp:663
msgid "&Send"
msgstr "&Skicka"
#: ../../../uibase.cpp:711
msgid ""
"\n"
"\n"
"Connecting..."
msgstr ""
"\n"
"\n"
"Ansluter..."
#: ../../../uibase.cpp:761
#, fuzzy
msgid "These are your Bitcoin addresses for receiving payments. You may want to give a different one to each sender so you can keep track of who is paying you. The highlighted address is displayed in the main window."
msgstr "Dessa är dina Bitcoin adresser för mottagning av betalningar. Du rekommenderas att ge olika till varje avsändare så du kan ha koll på vem som betalar dig. Den markerade adressen är visar i huvudfönstret."
#: ../../../uibase.cpp:774
#: ../../../uibase.cpp:886
msgid "&Edit..."
msgstr "&Redigera..."
#: ../../../uibase.cpp:777
#: ../../../uibase.cpp:889
msgid " &New Address... "
msgstr " &Ny Adress... "
#: ../../../uibase.cpp:849
msgid "Sending"
msgstr "Skickar"
#: ../../../uibase.cpp:857
#, fuzzy
msgid "These are your Bitcoin addresses for receiving payments. You can give a different one to each sender to keep track of who is paying you. The highlighted address will be displayed in the main window."
msgstr "Dessa är dina Bitcoin adresser för mottagning av betalningar. Du kan ge olika till varje avsändare så du kan ha koll på vem som betalar dig. Den markerade adressen är visar i huvudfönstret."
#: ../../../uibase.cpp:870
msgid "Receiving"
msgstr "Mottagning"
#: ../../../uibase.cpp:880
msgid "&Delete"
msgstr "&Ta bort"
#: ../../../util.cpp:866
#, fuzzy
msgid "Warning: Please check that your computer's date and time are correct. If your clock is wrong Bitcoin will not work properly."
msgstr "Varning: Var god och kolla att din dator har rätt datum och klockslag. Om din klocka är fel så kommer Bitcoin inte att fungera."
#: ../../../util.cpp:899
msgid "beta"
msgstr "beta"
#: ../../../uibase.h:147
msgid "Transaction Details"
msgstr "Transaktion detaljer"
#: ../../../uibase.h:199
msgid "Options"
msgstr "Inställningar"
#: ../../../uibase.h:228
msgid "About Bitcoin"
msgstr "Om Bitcoin"
#: ../../../uibase.h:337
msgid "Your Bitcoin Addresses"
msgstr "Dina Bitcoin Adresser"
#~ msgid " beta"
#~ msgstr " beta"

Binary file not shown.

View File

@@ -0,0 +1,967 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-05-21 14:19+0800\n"
"PO-Revision-Date: 2011-05-28 17:08+0800\n"
"Last-Translator: Dean Lee <xslidian@gmail.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Poedit-KeywordsList: _;gettext;gettext_noop\n"
"X-Poedit-Basepath: .\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Language: zh_CN\n"
"X-Source-Language: C\n"
"X-Poedit-Bookmarks: 77,-1,-1,-1,-1,-1,-1,-1,-1,-1\n"
"X-Poedit-SearchPath-0: ../../..\n"
#: ../../../src/init.cpp:142
msgid "Bitcoin version"
msgstr "Bitcoin 版本"
#: ../../../src/init.cpp:143
msgid "Usage:"
msgstr "用法:"
#: ../../../src/init.cpp:145
msgid "Send command to -server or bitcoind\n"
msgstr "发送命令给 -server 或 bitcoin\n"
#: ../../../src/init.cpp:146
msgid "List commands\n"
msgstr "列出命令\n"
#: ../../../src/init.cpp:147
msgid "Get help for a command\n"
msgstr "获取命令的帮助\n"
#: ../../../src/init.cpp:148
msgid "Options:\n"
msgstr "选项:\n"
#: ../../../src/init.cpp:149
msgid "Specify configuration file (default: bitcoin.conf)\n"
msgstr "指定配置文件 (默认: bitcoin.conf)\n"
#: ../../../src/init.cpp:150
msgid "Specify pid file (default: bitcoind.pid)\n"
msgstr "指定 pid 文件 (默认: bitcoin.pid)\n"
#: ../../../src/init.cpp:151
msgid "Generate coins\n"
msgstr "生成货币\n"
#: ../../../src/init.cpp:152
msgid "Don't generate coins\n"
msgstr "不要生成货币\n"
#: ../../../src/init.cpp:153
msgid "Start minimized\n"
msgstr "启动时最小化\n"
#: ../../../src/init.cpp:154
msgid "Specify data directory\n"
msgstr "指定数据目录\n"
#: ../../../src/init.cpp:155
msgid "Connect through socks4 proxy\n"
msgstr "通过 socks4 代理连接\n"
#: ../../../src/init.cpp:156
msgid "Allow DNS lookups for addnode and connect\n"
msgstr "允许 DNS 查找新增结点和连接\n"
#: ../../../src/init.cpp:157
msgid "Add a node to connect to\n"
msgstr "添加一个连接结点\n"
#: ../../../src/init.cpp:158
msgid "Connect only to the specified node\n"
msgstr "只连接特定结点\n"
#: ../../../src/init.cpp:159
msgid "Don't accept connections from outside\n"
msgstr "不要接受外部传来的连接\n"
#: ../../../src/init.cpp:162
msgid "Don't attempt to use UPnP to map the listening port\n"
msgstr "不要尝试使用 UPnP 映射监听端口\n"
#: ../../../src/init.cpp:164
msgid "Attempt to use UPnP to map the listening port\n"
msgstr "尝试使用 UPnP 映射监听端口\n"
#: ../../../src/init.cpp:167
msgid "Fee per KB to add to transactions you send\n"
msgstr "您为每 KB 支付所增加的交易佣金\n"
#: ../../../src/init.cpp:169
msgid "Accept command line and JSON-RPC commands\n"
msgstr "允许命令行和 JSON-RPC 控制\n"
#: ../../../src/init.cpp:172
msgid "Run in the background as a daemon and accept commands\n"
msgstr "在后台运行并接收命令\n"
#: ../../../src/init.cpp:174
msgid "Use the test network\n"
msgstr "使用测试网络\n"
#: ../../../src/init.cpp:175
msgid "Username for JSON-RPC connections\n"
msgstr "JSON-RPC 连接的用户名\n"
#: ../../../src/init.cpp:176
msgid "Password for JSON-RPC connections\n"
msgstr "JSON-RPC 连接的密码\n"
#: ../../../src/init.cpp:177
msgid "Listen for JSON-RPC connections on <port> (default: 8332)\n"
msgstr "在端口 <port> 监听 JSON-RPC 连接 (默认: 8332)\n"
#: ../../../src/init.cpp:178
msgid "Allow JSON-RPC connections from specified IP address\n"
msgstr "允许来自特定 IP 地址的 JSON-RPC 连接\n"
#: ../../../src/init.cpp:179
msgid "Send commands to node running on <ip> (default: 127.0.0.1)\n"
msgstr "发送命令给运行的结点IP 地址 <ip> (默认: 127.0.0.1)\n"
#: ../../../src/init.cpp:180
msgid "Set key pool size to <n> (default: 100)\n"
msgstr "设置密钥池大小为 <n> (默认: 100)\n"
#: ../../../src/init.cpp:181
msgid "Rescan the block chain for missing wallet transactions\n"
msgstr "重新扫描货币包链来检测丢失的货币交易\n"
#: ../../../src/init.cpp:185
msgid ""
"\n"
"SSL options: (see the Bitcoin Wiki for SSL setup instructions)\n"
msgstr ""
"\n"
"SSL 选项: (SSL 设置步骤请参见 Bitcoin Wiki)\n"
#: ../../../src/init.cpp:186
msgid "Use OpenSSL (https) for JSON-RPC connections\n"
msgstr "使用 OpenSSL (https) 进行 JSON-RPC 连接\n"
#: ../../../src/init.cpp:187
msgid "Server certificate file (default: server.cert)\n"
msgstr "服务器证书 (默认: server.cert)\n"
#: ../../../src/init.cpp:188
msgid "Server private key (default: server.pem)\n"
msgstr "服务器私有密钥 (默认: server.pem)\n"
#: ../../../src/init.cpp:189
msgid "Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH)\n"
msgstr "许可密码 (默认: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH)\n"
#: ../../../src/init.cpp:193
msgid "This help message\n"
msgstr "本帮助信息\n"
#: ../../../src/init.cpp:330
#, c-format
msgid "Cannot obtain a lock on data directory %s. Bitcoin is probably already running."
msgstr "无法获取数据目录 %s 的锁。 Bitcoin 可能已经启动。"
#: ../../../src/init.cpp:356
msgid "Error loading addr.dat \n"
msgstr "加载 addr.dat 出错 \n"
#: ../../../src/init.cpp:362
msgid "Error loading blkindex.dat \n"
msgstr "加载 blkindex.dat 出错 \n"
#: ../../../src/init.cpp:369
msgid "Error loading wallet.dat \n"
msgstr "加载 wallet.dat 出错 \n"
#: ../../../src/init.cpp:449
msgid "Invalid -proxy address"
msgstr "无效 -proxy 地址"
#: ../../../src/init.cpp:472
msgid "Invalid amount for -paytxfee=<amount>"
msgstr "无效的金额 -paytxfee=<amount>"
#: ../../../src/init.cpp:476
msgid "Warning: -paytxfee is set very high. This is the transaction fee you will pay if you send a transaction."
msgstr "警告: -paytxfee 设置得过高。 这个参数是您发送一笔交易要支付的佣金。"
#: ../../../src/main.cpp:1866
msgid "Warning: Disk space is low "
msgstr "警告: 磁盘空间不足"
#: ../../../src/main.cpp:3990
#, c-format
msgid "Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds "
msgstr "错误: 这个交易因为近期收到支付的数量,难度或者使用而需要支付至少 %s 交易佣金 "
#: ../../../src/main.cpp:3992
msgid "Error: Transaction creation failed "
msgstr "错误: 交易创建失败"
#: ../../../src/main.cpp:3997
#: ../../../src/ui.cpp:1927
#: ../../../src/ui.cpp:1932
#: ../../../src/ui.cpp:2076
#: ../../../src/ui.cpp:2229
msgid "Sending..."
msgstr "正在发送..."
#: ../../../src/main.cpp:4001
msgid "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."
msgstr "错误: 交易被拒绝。 这可能是因为您账户里的一些货币应经被使用,比如您使用了一个复制的 wallet.dat 文件,一些货币在另一个复件里支付了但是没有在这里更新。"
#: ../../../src/main.cpp:4014
msgid "Invalid amount"
msgstr "无效金额"
#: ../../../src/main.cpp:4016
#: ../../../src/ui.cpp:2143
#: ../../../src/ui.cpp:2214
msgid "Insufficient funds"
msgstr "余额不足"
#: ../../../src/main.cpp:4021
msgid "Invalid bitcoin address"
msgstr "无效 bitcoin 地址"
#: ../../../src/net.cpp:1503
#, c-format
msgid "Unable to bind to port %d on this computer. Bitcoin is probably already running."
msgstr "无法在这台电脑上绑定 %d 端口。 Bitcoin 可能已经在运行。"
#: ../../../src/rpc.cpp:1802
#: ../../../src/rpc.cpp:1804
#, c-format
msgid "To use the %s option"
msgstr "使用 %s 选项"
#: ../../../src/rpc.cpp:1806
#, c-format
msgid ""
"Warning: %s, you must set rpcpassword=<password>\n"
"in the configuration file: %s\n"
"If the file does not exist, create it with owner-readable-only file permissions.\n"
msgstr ""
"警告: %s您必须在配置文件中设置 rpcpassword=<password>\n"
"配置文件为: %s\n"
"如果文件不存在,请创建文件并只给创建者提供只读访问权限。\n"
#: ../../../src/rpc.cpp:1974
#, c-format
msgid ""
"You must set rpcpassword=<password> in the configuration file:\n"
"%s\n"
"If the file does not exist, create it with owner-readable-only file permissions."
msgstr ""
"您必须在配置文件中设置 rpcpassword=<password> :\n"
"%s\n"
"如果文件不存在,请创建文件并只给创建者提供只读访问权限。"
#: ../../../src/ui.cpp:204
#, c-format
msgid "This transaction is over the size limit. You can still send it for a fee of %s, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee?"
msgstr "这笔交易超过了大小限制。 您依然可以通过支付 %s 的佣金来进行,佣金用来支付为您的交易计算的结点来帮助支撑网络。 您是否要支付佣金?"
#: ../../../src/ui.cpp:303
msgid "Status"
msgstr "状态"
#: ../../../src/ui.cpp:304
msgid "Date"
msgstr "日期"
#: ../../../src/ui.cpp:305
msgid "Description"
msgstr "描述"
#: ../../../src/ui.cpp:306
msgid "Debit"
msgstr "付款人"
#: ../../../src/ui.cpp:307
msgid "Credit"
msgstr "信用"
#: ../../../src/ui.cpp:513
#, c-format
msgid "Open for %d blocks"
msgstr "%d 个货币包开放"
#: ../../../src/ui.cpp:515
#, c-format
msgid "Open until %s"
msgstr "开放直到 %s"
#: ../../../src/ui.cpp:521
#, c-format
msgid "%d/offline?"
msgstr "%d/离线?"
#: ../../../src/ui.cpp:523
#, c-format
msgid "%d/unconfirmed"
msgstr "%d/未确认"
#: ../../../src/ui.cpp:525
#, c-format
msgid "%d confirmations"
msgstr "%d 确认"
#: ../../../src/ui.cpp:610
msgid "Generated"
msgstr "已生成"
#: ../../../src/ui.cpp:618
#, c-format
msgid "Generated (%s matures in %d more blocks)"
msgstr "已生成 (%s 成熟 %d 新增货币包)"
#: ../../../src/ui.cpp:622
msgid "Generated - Warning: This block was not received by any other nodes and will probably not be accepted!"
msgstr "已生成 - 警告: 这个货币包没有被任何其他结点收到,因此很可能不会被接受!"
#: ../../../src/ui.cpp:626
msgid "Generated (not accepted)"
msgstr "已生成 (未被接受)"
#: ../../../src/ui.cpp:636
msgid "From: "
msgstr "来自: "
#: ../../../src/ui.cpp:660
msgid "Received with: "
msgstr "伴随接收: "
#: ../../../src/ui.cpp:706
msgid "Payment to yourself"
msgstr "支付给您自己"
#: ../../../src/ui.cpp:740
msgid "To: "
msgstr "到: "
#: ../../../src/ui.cpp:1055
msgid " Generating"
msgstr " 生成中"
#: ../../../src/ui.cpp:1057
msgid "(not connected)"
msgstr "(未连接)"
#: ../../../src/ui.cpp:1060
#, c-format
msgid " %d connections %d blocks %d transactions"
msgstr " %d 个连接 %d 个货币包 %d 个交易 "
#: ../../../src/ui.cpp:1165
#: ../../../src/ui.cpp:2529
msgid "New Receiving Address"
msgstr "新建接收地址"
#: ../../../src/ui.cpp:1166
#: ../../../src/ui.cpp:2530
msgid ""
"You should use a new address for each payment you receive.\n"
"\n"
"Label"
msgstr ""
"您应该为您收到的每次付款使用不同的地址。\n"
"\n"
"标签"
#: ../../../src/ui.cpp:1235
msgid "<b>Status:</b> "
msgstr "<b>状态:</b> "
#: ../../../src/ui.cpp:1240
msgid ", has not been successfully broadcast yet"
msgstr ",尚未被成功广播"
#: ../../../src/ui.cpp:1242
#, c-format
msgid ", broadcast through %d node"
msgstr ",通过 %d 个结点广播"
#: ../../../src/ui.cpp:1244
#, c-format
msgid ", broadcast through %d nodes"
msgstr ",通过 %d 个结点广播"
#: ../../../src/ui.cpp:1248
msgid "<b>Date:</b> "
msgstr "<b>日期:</b>"
#: ../../../src/ui.cpp:1256
msgid "<b>Source:</b> Generated<br>"
msgstr "<b>来源:</b> 生成<br>"
#: ../../../src/ui.cpp:1262
#: ../../../src/ui.cpp:1280
msgid "<b>From:</b> "
msgstr "<b>从:</b> "
#: ../../../src/ui.cpp:1280
msgid "unknown"
msgstr "未知"
#: ../../../src/ui.cpp:1281
#: ../../../src/ui.cpp:1305
#: ../../../src/ui.cpp:1364
msgid "<b>To:</b> "
msgstr "<b>到:</b> "
#: ../../../src/ui.cpp:1284
msgid " (yours, label: "
msgstr " (您的标签: "
#: ../../../src/ui.cpp:1286
msgid " (yours)"
msgstr " (您的)"
#: ../../../src/ui.cpp:1323
#: ../../../src/ui.cpp:1335
#: ../../../src/ui.cpp:1381
#: ../../../src/ui.cpp:1398
msgid "<b>Credit:</b> "
msgstr "<b>信用:</b> "
#: ../../../src/ui.cpp:1325
#, c-format
msgid "(%s matures in %d more blocks)"
msgstr "(%s 收获在 %d 更多的货币包)"
#: ../../../src/ui.cpp:1327
msgid "(not accepted)"
msgstr "(未被接受)"
#: ../../../src/ui.cpp:1372
#: ../../../src/ui.cpp:1380
#: ../../../src/ui.cpp:1395
msgid "<b>Debit:</b> "
msgstr "<b>付款人:</b> "
#: ../../../src/ui.cpp:1386
msgid "<b>Transaction fee:</b> "
msgstr "<b>交易佣金:</b> "
#: ../../../src/ui.cpp:1402
msgid "<b>Net amount:</b> "
msgstr "<b>网络金额:</b> "
#: ../../../src/ui.cpp:1409
msgid "Message:"
msgstr "消息:"
#: ../../../src/ui.cpp:1411
msgid "Comment:"
msgstr "评论"
#: ../../../src/ui.cpp:1414
msgid "Generated coins must wait 120 blocks before they can be spent. When you generated this block, it was broadcast to the network to be added to the block chain. If it fails to get into the chain, it will change to \"not accepted\" and not be spendable. This may occasionally happen if another node generates a block within a few seconds of yours."
msgstr "生成的货币必须等待 120 个货币包之后才能够使用。 当您生成了一个货币包后,它被广播给网络来加入货币包链中。 如果它无法加入货币包链中,他将会标记为\"不被接受\"且不能被支付。 这种情况可能因为在您生成这个货币包之后的几秒钟内有别人也生成了货币包而发生。"
#: ../../../src/ui.cpp:1594
msgid "Cannot write autostart/bitcoin.desktop file"
msgstr "无法写入 autostart/bitcoin.desktop 文件"
#: ../../../src/ui.cpp:1630
msgid "Main"
msgstr "主要"
#: ../../../src/ui.cpp:1638
msgid "&Start Bitcoin on window system startup"
msgstr "开机自动启动 Bitcoin(&S)"
#: ../../../src/ui.cpp:1645
msgid "&Minimize on close"
msgstr "关闭时最小化(&M)"
#: ../../../src/ui.cpp:1787
#, c-format
msgid "version %s"
msgstr "版本 %s"
#: ../../../src/ui.cpp:1899
msgid "Error in amount "
msgstr "金额有误 "
#: ../../../src/ui.cpp:1899
#: ../../../src/ui.cpp:1904
#: ../../../src/ui.cpp:1909
#: ../../../src/ui.cpp:1944
#: ../../../src/uibase.cpp:55
msgid "Send Coins"
msgstr "发送货币"
#: ../../../src/ui.cpp:1904
msgid "Amount exceeds your balance "
msgstr "金额超出您的账户余额"
#: ../../../src/ui.cpp:1909
msgid "Total exceeds your balance when the "
msgstr "总费用超出您的账户余额当 "
#: ../../../src/ui.cpp:1909
msgid " transaction fee is included "
msgstr " 交易佣金已包括"
#: ../../../src/ui.cpp:1927
msgid "Payment sent "
msgstr "付款已发送"
#: ../../../src/ui.cpp:1944
msgid "Invalid address "
msgstr "无效地址 "
#: ../../../src/ui.cpp:1997
#, c-format
msgid "Sending %s to %s"
msgstr "发送 %s 给 %s"
#: ../../../src/ui.cpp:2070
#: ../../../src/ui.cpp:2103
msgid "CANCELLED"
msgstr "已取消"
#: ../../../src/ui.cpp:2074
msgid "Cancelled"
msgstr "已取消"
#: ../../../src/ui.cpp:2076
msgid "Transfer cancelled "
msgstr "传输已取消 "
#: ../../../src/ui.cpp:2129
msgid "Error: "
msgstr "错误: "
#: ../../../src/ui.cpp:2148
msgid "Connecting..."
msgstr "正在连接..."
#: ../../../src/ui.cpp:2153
msgid "Unable to connect"
msgstr "无法连接"
#: ../../../src/ui.cpp:2158
msgid "Requesting public key..."
msgstr "正在请求公共密钥..."
#: ../../../src/ui.cpp:2170
msgid "Received public key..."
msgstr "收到公共密钥..."
#: ../../../src/ui.cpp:2184
msgid "Recipient is not accepting transactions sent by IP address"
msgstr "收款人不接受来自 IP 地址的交易"
#: ../../../src/ui.cpp:2186
msgid "Transfer was not accepted"
msgstr "传输没有被接受"
#: ../../../src/ui.cpp:2195
msgid "Invalid response received"
msgstr "接收到无效回复"
#: ../../../src/ui.cpp:2210
msgid "Creating transaction..."
msgstr "正在创建交易..."
#: ../../../src/ui.cpp:2222
#, c-format
msgid "This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds"
msgstr "这笔交易因为它最近收到的付款的数量,交易难度或者使用情况,需要至少 %s 交易佣金"
#: ../../../src/ui.cpp:2224
msgid "Transaction creation failed"
msgstr "交易创建失败"
#: ../../../src/ui.cpp:2231
msgid "Transaction aborted"
msgstr "交易中止"
#: ../../../src/ui.cpp:2239
msgid "Lost connection, transaction cancelled"
msgstr "失去连接,交易已取消"
#: ../../../src/ui.cpp:2255
msgid "Sending payment..."
msgstr "正在发送付款..."
#: ../../../src/ui.cpp:2261
msgid "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."
msgstr "交易被拒绝。 这可能是因为您账户中的一部分货币已经被使用,比如您使用了一个复制的 wallet.dat 文件,而且货币在另一个副本里使用但没有在这里标记。"
#: ../../../src/ui.cpp:2270
msgid "Waiting for confirmation..."
msgstr "正在等待确认..."
#: ../../../src/ui.cpp:2288
msgid ""
"The payment was sent, but the recipient was unable to verify it.\n"
"The transaction is recorded and will credit to the recipient,\n"
"but the comment information will be blank."
msgstr ""
"付款已发送,但是收款人无法进行确认。\n"
"交易已经被记录,并且支付给收款人,\n"
"但是评论信息可能是空的。"
#: ../../../src/ui.cpp:2297
msgid "Payment was sent, but an invalid response was received"
msgstr "支付已发送,但是收到无效回复"
#: ../../../src/ui.cpp:2303
msgid "Payment completed"
msgstr "付款完成"
#: ../../../src/ui.cpp:2334
#: ../../../src/ui.cpp:2480
#: ../../../src/ui.cpp:2517
msgid "Name"
msgstr "姓名"
#: ../../../src/ui.cpp:2335
#: ../../../src/ui.cpp:2480
#: ../../../src/ui.cpp:2517
msgid "Address"
msgstr "地址"
#: ../../../src/ui.cpp:2337
#: ../../../src/ui.cpp:2492
msgid "Label"
msgstr "标签"
#: ../../../src/ui.cpp:2338
#: ../../../src/uibase.cpp:837
msgid "Bitcoin Address"
msgstr "Bitcoin 地址"
#: ../../../src/ui.cpp:2462
msgid "This is one of your own addresses for receiving payments and cannot be entered in the address book. "
msgstr "这是您拥有的接收付款的地址之一,它不能够进入这个地址簿。 "
#: ../../../src/ui.cpp:2480
#: ../../../src/ui.cpp:2486
msgid "Edit Address"
msgstr "编辑地址"
#: ../../../src/ui.cpp:2492
msgid "Edit Address Label"
msgstr "编辑地址标签"
#: ../../../src/ui.cpp:2517
#: ../../../src/ui.cpp:2523
msgid "Add Address"
msgstr "添加地址"
#: ../../../src/ui.cpp:2600
msgid "Bitcoin"
msgstr "Bitcoin"
#: ../../../src/ui.cpp:2602
msgid "Bitcoin - Generating"
msgstr "Bitcoin - 生成中"
#: ../../../src/ui.cpp:2604
msgid "Bitcoin - (not connected)"
msgstr "Bitcoin - (未连接)"
#: ../../../src/ui.cpp:2683
msgid "&Open Bitcoin"
msgstr "打开 Bitcoin(&O)"
#: ../../../src/ui.cpp:2684
msgid "&Send Bitcoins"
msgstr "发送 Bitcoins(&S)"
#: ../../../src/ui.cpp:2685
msgid "O&ptions..."
msgstr "选项(&P)..."
#: ../../../src/ui.cpp:2688
#: ../../../src/uibase.cpp:25
msgid "E&xit"
msgstr "退出(&X)"
#: ../../../src/ui.cpp:2904
msgid "Program has crashed and will terminate. "
msgstr "程序崩溃,即将关闭。 "
#: ../../../src/uibase.cpp:28
msgid "&File"
msgstr "文件(&F)"
#: ../../../src/uibase.cpp:32
msgid "&Your Receiving Addresses..."
msgstr "您的接收地址(&Y)..."
#: ../../../src/uibase.cpp:36
msgid "&Options..."
msgstr "选项(&O)..."
#: ../../../src/uibase.cpp:39
msgid "&Settings"
msgstr "设置(&S)"
#: ../../../src/uibase.cpp:43
msgid "&About..."
msgstr "关于(&A)..."
#: ../../../src/uibase.cpp:46
msgid "&Help"
msgstr "帮助(&H)"
#: ../../../src/uibase.cpp:56
msgid "Address Book"
msgstr "地址簿"
#: ../../../src/uibase.cpp:69
msgid "Your Bitcoin Address:"
msgstr "您的 Bitcoin 地址:"
#: ../../../src/uibase.cpp:76
msgid " &New... "
msgstr " 新建(&N)... "
#: ../../../src/uibase.cpp:79
#: ../../../src/uibase.cpp:780
#: ../../../src/uibase.cpp:883
msgid " &Copy to Clipboard "
msgstr " 复制到剪贴板(&C)"
#: ../../../src/uibase.cpp:93
msgid "Balance:"
msgstr "账户余额:"
#: ../../../src/uibase.cpp:109
msgid " All"
msgstr "全部"
#: ../../../src/uibase.cpp:109
msgid " Sent"
msgstr " 已发送"
#: ../../../src/uibase.cpp:109
msgid " Received"
msgstr " 已接收"
#: ../../../src/uibase.cpp:109
msgid " In Progress"
msgstr "处理中"
#: ../../../src/uibase.cpp:130
msgid "All Transactions"
msgstr "所有交易"
#: ../../../src/uibase.cpp:141
msgid "Sent/Received"
msgstr "已发送/已接收"
#: ../../../src/uibase.cpp:152
msgid "Sent"
msgstr "已发送"
#: ../../../src/uibase.cpp:163
msgid "Received"
msgstr "已接收"
#: ../../../src/uibase.cpp:302
#: ../../../src/uibase.cpp:443
#: ../../../src/uibase.cpp:542
#: ../../../src/uibase.cpp:722
#: ../../../src/uibase.cpp:783
#: ../../../src/uibase.cpp:892
#: ../../../src/uibase.cpp:981
msgid "OK"
msgstr "确定"
#: ../../../src/uibase.cpp:345
msgid "&Start Bitcoin on system startup"
msgstr "开机自动启动(&S)"
#: ../../../src/uibase.cpp:348
msgid "&Minimize to the tray instead of the taskbar"
msgstr "最小化到系统托盘(&M)"
#: ../../../src/uibase.cpp:351
msgid "Map port using &UPnP"
msgstr "使用 &UPnP 映射端口"
#: ../../../src/uibase.cpp:354
msgid "M&inimize to the tray on close"
msgstr "关闭时最小化到托盘(&I)"
#: ../../../src/uibase.cpp:360
msgid "&Connect through socks4 proxy: "
msgstr "通过 socks4 代理连接(&C): "
#: ../../../src/uibase.cpp:371
msgid "Proxy &IP:"
msgstr "代理服务器(&I):"
#: ../../../src/uibase.cpp:379
msgid " &Port:"
msgstr " 端口(&P):"
#: ../../../src/uibase.cpp:392
msgid "Optional transaction fee per KB that helps make sure your transactions are processed quickly. Most transactions are 1KB. Fee 0.01 recommended."
msgstr "可以选择按照KB支付交易佣金来确保您的交易得到迅速处理。 大多数交易需要 1KB。 建议支付 0.01。"
#: ../../../src/uibase.cpp:399
msgid "Pay transaction fee:"
msgstr "支付交易佣金:"
#: ../../../src/uibase.cpp:420
msgid "// [don't translate] Test panel 2 for future expansion"
msgstr ""
#: ../../../src/uibase.cpp:424
msgid "// [don't translate] Let's not start multiple pages until the first page is filled up"
msgstr ""
#: ../../../src/uibase.cpp:446
#: ../../../src/uibase.cpp:668
#: ../../../src/uibase.cpp:727
#: ../../../src/uibase.cpp:786
#: ../../../src/uibase.cpp:895
#: ../../../src/uibase.cpp:984
msgid "Cancel"
msgstr "取消"
#: ../../../src/uibase.cpp:449
msgid "&Apply"
msgstr "应用(&A)"
#: ../../../src/uibase.cpp:508
msgid "Bitcoin "
msgstr "Bitcoin "
#: ../../../src/uibase.cpp:514
msgid "version"
msgstr "版本"
#: ../../../src/uibase.cpp:525
msgid ""
"Copyright (c) 2009-2011 Bitcoin Developers\n"
"\n"
"This is experimental software.\n"
"\n"
"Distributed under the MIT/X11 software license, see the accompanying file \n"
"license.txt or http://www.opensource.org/licenses/mit-license.php.\n"
"\n"
"This product includes software developed by the OpenSSL Project for use in the \n"
"OpenSSL Toolkit (http://www.openssl.org/) and cryptographic software written by \n"
"Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard."
msgstr ""
"版权所有 (c) 2009-2010 Bitcoin 开发人员\n"
"这是一个实验软件。\n"
"分发遵循 MIT/X11 软件许可协议,请参见附带的 license.txt 文件或访问\n"
"http://www.opensource.org/licenses/mit-license.php。\n"
"本产品使用了 OpenSSL Project 开发的 OpenSSL Toolkit\n"
"(http://www.openssl.org/),以及 Eric Young(eay@cryptsoft.com)\n"
"编写的加密软件和 Thomas Bernard 编写的 UPnP 软件。"
#: ../../../src/uibase.cpp:581
msgid "Enter a Bitcoin address (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L)"
msgstr "输入 Bitcoin 地址 (比如 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L)"
#: ../../../src/uibase.cpp:595
msgid "Pay &To:"
msgstr "付款给(&T):"
#: ../../../src/uibase.cpp:610
msgid "&Paste"
msgstr "粘贴(&P)"
#: ../../../src/uibase.cpp:613
msgid " Address &Book..."
msgstr " 地址簿(&B)..."
#: ../../../src/uibase.cpp:620
msgid "&Amount:"
msgstr "数量(&A):"
#: ../../../src/uibase.cpp:630
msgid "T&ransfer:"
msgstr "传输(&R):"
#: ../../../src/uibase.cpp:636
msgid " Standard"
msgstr "标准"
#: ../../../src/uibase.cpp:663
msgid "&Send"
msgstr "发送(&S)"
#: ../../../src/uibase.cpp:711
msgid ""
"\n"
"\n"
"Connecting..."
msgstr ""
"\n"
"\n"
"正在连接..."
#: ../../../src/uibase.cpp:761
msgid "These are your Bitcoin addresses for receiving payments. You may want to give a different one to each sender so you can keep track of who is paying you. The highlighted address is displayed in the main window."
msgstr "这些是您用来接收付款的 Bitcoin 地址。 您可能需要给每一个付款人一个不同的地址从而可以最终每一笔交易是谁支付的。 下面高亮的地址是您的主窗口正在使用的地址。"
#: ../../../src/uibase.cpp:774
#: ../../../src/uibase.cpp:886
msgid "&Edit..."
msgstr "编辑(&E)..."
#: ../../../src/uibase.cpp:777
#: ../../../src/uibase.cpp:889
msgid " &New Address... "
msgstr " 新建地址(&N)..."
#: ../../../src/uibase.cpp:849
msgid "Sending"
msgstr "发送人地址"
#: ../../../src/uibase.cpp:857
msgid "These are your Bitcoin addresses for receiving payments. You can give a different one to each sender to keep track of who is paying you. The highlighted address will be displayed in the main window."
msgstr "这些是您用来接收付款的 Bitcoin 地址。 您可以给每一个付款人一个不同的地址从而可以最终每一笔交易是谁支付的。 下面高亮的地址是您的主窗口正在使用的地址。"
#: ../../../src/uibase.cpp:870
msgid "Receiving"
msgstr "我的接收地址"
#: ../../../src/uibase.cpp:880
msgid "&Delete"
msgstr "删除(&D)"
#: ../../../src/util.cpp:866
msgid "Warning: Please check that your computer's date and time are correct. If your clock is wrong Bitcoin will not work properly."
msgstr "警告: 请检查您的电脑日期和时间是否正确。 如果您的时钟不正确 Bitcoin 将无法正常工作。"
#: ../../../src/util.cpp:899
msgid "beta"
msgstr "测试版"
#: ../../../src/uibase.h:147
msgid "Transaction Details"
msgstr "交易详情"
#: ../../../src/uibase.h:199
msgid "Options"
msgstr "选项"
#: ../../../src/uibase.h:228
msgid "About Bitcoin"
msgstr "关于 Bitcoin"
#: ../../../src/uibase.h:337
msgid "Your Bitcoin Addresses"
msgstr "您的 Bitcoin 地址"

View File

@@ -1,79 +0,0 @@
# Copyright (c) 2009-2010 Satoshi Nakamoto
# Distributed under the MIT/X11 software license, see the accompanying
# file license.txt or http://www.opensource.org/licenses/mit-license.php.
INCLUDEPATHS= \
-I"/usr/local/include/wx-2.9" \
-I"/usr/local/lib/wx/include/gtk2-unicode-debug-static-2.9"
# for wxWidgets 2.9.1, add -l Xxf86vm
WXLIBS= \
-Wl,-Bstatic \
-l wx_gtk2ud-2.9 \
-Wl,-Bdynamic \
-l gtk-x11-2.0 \
-l SM
# for boost 1.37, add -mt to the boost libraries
LIBS= \
-Wl,-Bstatic \
-l boost_system \
-l boost_filesystem \
-l boost_program_options \
-l boost_thread \
-l db_cxx \
-l ssl \
-l crypto \
-Wl,-Bdynamic \
-l gthread-2.0 \
-l z \
-l dl
DEFS=-D__WXGTK__ -DNOPCH -DFOURWAYSSE2 -DUSE_SSL
DEBUGFLAGS=-g -D__WXDEBUG__
CFLAGS=-O2 -Wno-invalid-offsetof -Wformat $(DEBUGFLAGS) $(DEFS) $(INCLUDEPATHS)
HEADERS=headers.h strlcpy.h serialize.h uint256.h util.h key.h bignum.h base58.h \
script.h db.h net.h irc.h main.h rpc.h uibase.h ui.h noui.h init.h
OBJS= \
obj/util.o \
obj/script.o \
obj/db.o \
obj/net.o \
obj/irc.o \
obj/main.o \
obj/rpc.o \
obj/init.o \
cryptopp/obj/sha.o \
cryptopp/obj/cpu.o
all: bitcoin
obj/%.o: %.cpp $(HEADERS)
g++ -c $(CFLAGS) -DGUI -o $@ $<
cryptopp/obj/%.o: cryptopp/%.cpp
g++ -c $(CFLAGS) -O3 -o $@ $<
obj/sha256.o: sha256.cpp
g++ -c $(CFLAGS) -msse2 -O3 -march=amdfam10 -o $@ $<
bitcoin: $(OBJS) obj/ui.o obj/uibase.o obj/sha256.o
g++ $(CFLAGS) -o $@ $^ $(WXLIBS) $(LIBS)
obj/nogui/%.o: %.cpp $(HEADERS)
g++ -c $(CFLAGS) -o $@ $<
bitcoind: $(OBJS:obj/%=obj/nogui/%) obj/sha256.o
g++ $(CFLAGS) -o $@ $^ $(LIBS)
clean:
-rm -f obj/*.o
-rm -f obj/nogui/*.o
-rm -f cryptopp/obj/*.o
-rm -f headers.h.gch

View File

@@ -1,475 +0,0 @@
// Copyright (c) 2010 Nils Schneider
// Distributed under the MIT/X11 software license, see the accompanying
// file license.txt or http://www.opensource.org/licenses/mit-license.php.
// 4-way 128-bit SSE2 SHA-256
#ifdef FOURWAYSSE2
#include <string.h>
#include <assert.h>
#include <xmmintrin.h>
#include <stdint.h>
#include <stdio.h>
#define NPAR 32
extern void DoubleBlockSHA256(const void* pin, void* pout, const void* pinit, unsigned int hash[8][NPAR], const void* init2);
static const unsigned int sha256_consts[] = {
0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, /* 0 */
0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, /* 8 */
0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, /* 16 */
0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, /* 24 */
0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, /* 32 */
0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, /* 40 */
0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, /* 48 */
0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, /* 56 */
0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2
};
static inline __m128i Ch(const __m128i b, const __m128i c, const __m128i d) {
return (b & c) ^ (~b & d);
}
static inline __m128i Maj(const __m128i b, const __m128i c, const __m128i d) {
return (b & c) ^ (b & d) ^ (c & d);
}
static inline __m128i ROTR(__m128i x, const int n) {
return _mm_srli_epi32(x, n) | _mm_slli_epi32(x, 32 - n);
}
static inline __m128i SHR(__m128i x, const int n) {
return _mm_srli_epi32(x, n);
}
/* SHA256 Functions */
#define BIGSIGMA0_256(x) (ROTR((x), 2) ^ ROTR((x), 13) ^ ROTR((x), 22))
#define BIGSIGMA1_256(x) (ROTR((x), 6) ^ ROTR((x), 11) ^ ROTR((x), 25))
#define SIGMA0_256(x) (ROTR((x), 7) ^ ROTR((x), 18) ^ SHR((x), 3))
#define SIGMA1_256(x) (ROTR((x), 17) ^ ROTR((x), 19) ^ SHR((x), 10))
static inline unsigned int store32(const __m128i x, int i) {
union { unsigned int ret[4]; __m128i x; } box;
box.x = x;
return box.ret[i];
}
static inline void store_epi32(const __m128i x, unsigned int *x0, unsigned int *x1, unsigned int *x2, unsigned int *x3) {
union { unsigned int ret[4]; __m128i x; } box;
box.x = x;
*x0 = box.ret[3]; *x1 = box.ret[2]; *x2 = box.ret[1]; *x3 = box.ret[0];
}
#define add4(x0, x1, x2, x3) _mm_add_epi32(_mm_add_epi32(_mm_add_epi32(x0, x1), x2), x3)
#define add5(x0, x1, x2, x3, x4) _mm_add_epi32(add4(x0, x1, x2, x3), x4)
#define SHA256ROUND(a, b, c, d, e, f, g, h, i, w) \
T1 = add5(h, BIGSIGMA1_256(e), Ch(e, f, g), _mm_set1_epi32(sha256_consts[i]), w); \
d = _mm_add_epi32(d, T1); \
h = _mm_add_epi32(T1, _mm_add_epi32(BIGSIGMA0_256(a), Maj(a, b, c)));
static inline void dumpreg(__m128i x, char *msg) {
union { unsigned int ret[4]; __m128i x; } box;
box.x = x ;
printf("%s %08x %08x %08x %08x\n", msg, box.ret[0], box.ret[1], box.ret[2], box.ret[3]);
}
#if 1
#define dumpstate(i) printf("%s: %08x %08x %08x %08x %08x %08x %08x %08x %08x\n", \
__func__, store32(w0, i), store32(a, i), store32(b, i), store32(c, i), store32(d, i), store32(e, i), store32(f, i), store32(g, i), store32(h, i));
#else
#define dumpstate()
#endif
// Align by increasing pointer, must have extra space at end of buffer
template <size_t nBytes, typename T>
T* alignup(T* p)
{
union
{
T* ptr;
size_t n;
} u;
u.ptr = p;
u.n = (u.n + (nBytes-1)) & ~(nBytes-1);
return u.ptr;
}
static const unsigned int pSHA256InitState[8] =
{0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19};
unsigned int ScanHash_4WaySSE2(char* pmidstate, char* pdata, char* phash1, char* phash, unsigned int& nHashesDone)
{
unsigned int& nNonce = *(unsigned int*)(pdata + 12);
for (;;)
{
nNonce += NPAR;
unsigned int thashbuf[9][NPAR];
unsigned int (&thash)[9][NPAR] = *alignup<16>(&thashbuf);
DoubleBlockSHA256(pdata, phash1, pmidstate, thash, pSHA256InitState);
for (int j = 0; j < NPAR; j++)
{
if (thash[7][j] == 0)
{
for (int i = 0; i < 32/4; i++)
((unsigned int*)phash)[i] = thash[i][j];
return nNonce + j;
}
}
if ((nNonce & 0xffff) == 0)
{
nHashesDone = 0xffff+1;
return -1;
}
}
}
void DoubleBlockSHA256(const void* pin, void* pad, const void *pre, unsigned int thash[9][NPAR], const void *init)
{
unsigned int* In = (unsigned int*)pin;
unsigned int* Pad = (unsigned int*)pad;
unsigned int* hPre = (unsigned int*)pre;
unsigned int* hInit = (unsigned int*)init;
unsigned int i, j, k;
/* vectors used in calculation */
__m128i w0, w1, w2, w3, w4, w5, w6, w7;
__m128i w8, w9, w10, w11, w12, w13, w14, w15;
__m128i T1;
__m128i a, b, c, d, e, f, g, h;
__m128i nonce;
/* nonce offset for vector */
__m128i offset = _mm_set_epi32(0x00000003, 0x00000002, 0x00000001, 0x00000000);
for(k = 0; k<NPAR; k+=4) {
w0 = _mm_set1_epi32(In[0]);
w1 = _mm_set1_epi32(In[1]);
w2 = _mm_set1_epi32(In[2]);
//w3 = _mm_set1_epi32(In[3]); nonce will be later hacked into the hash
w4 = _mm_set1_epi32(In[4]);
w5 = _mm_set1_epi32(In[5]);
w6 = _mm_set1_epi32(In[6]);
w7 = _mm_set1_epi32(In[7]);
w8 = _mm_set1_epi32(In[8]);
w9 = _mm_set1_epi32(In[9]);
w10 = _mm_set1_epi32(In[10]);
w11 = _mm_set1_epi32(In[11]);
w12 = _mm_set1_epi32(In[12]);
w13 = _mm_set1_epi32(In[13]);
w14 = _mm_set1_epi32(In[14]);
w15 = _mm_set1_epi32(In[15]);
/* hack nonce into lowest byte of w3 */
nonce = _mm_set1_epi32(In[3]);
nonce = _mm_add_epi32(nonce, offset);
nonce = _mm_add_epi32(nonce, _mm_set1_epi32(k));
w3 = nonce;
a = _mm_set1_epi32(hPre[0]);
b = _mm_set1_epi32(hPre[1]);
c = _mm_set1_epi32(hPre[2]);
d = _mm_set1_epi32(hPre[3]);
e = _mm_set1_epi32(hPre[4]);
f = _mm_set1_epi32(hPre[5]);
g = _mm_set1_epi32(hPre[6]);
h = _mm_set1_epi32(hPre[7]);
SHA256ROUND(a, b, c, d, e, f, g, h, 0, w0);
SHA256ROUND(h, a, b, c, d, e, f, g, 1, w1);
SHA256ROUND(g, h, a, b, c, d, e, f, 2, w2);
SHA256ROUND(f, g, h, a, b, c, d, e, 3, w3);
SHA256ROUND(e, f, g, h, a, b, c, d, 4, w4);
SHA256ROUND(d, e, f, g, h, a, b, c, 5, w5);
SHA256ROUND(c, d, e, f, g, h, a, b, 6, w6);
SHA256ROUND(b, c, d, e, f, g, h, a, 7, w7);
SHA256ROUND(a, b, c, d, e, f, g, h, 8, w8);
SHA256ROUND(h, a, b, c, d, e, f, g, 9, w9);
SHA256ROUND(g, h, a, b, c, d, e, f, 10, w10);
SHA256ROUND(f, g, h, a, b, c, d, e, 11, w11);
SHA256ROUND(e, f, g, h, a, b, c, d, 12, w12);
SHA256ROUND(d, e, f, g, h, a, b, c, 13, w13);
SHA256ROUND(c, d, e, f, g, h, a, b, 14, w14);
SHA256ROUND(b, c, d, e, f, g, h, a, 15, w15);
w0 = add4(SIGMA1_256(w14), w9, SIGMA0_256(w1), w0);
SHA256ROUND(a, b, c, d, e, f, g, h, 16, w0);
w1 = add4(SIGMA1_256(w15), w10, SIGMA0_256(w2), w1);
SHA256ROUND(h, a, b, c, d, e, f, g, 17, w1);
w2 = add4(SIGMA1_256(w0), w11, SIGMA0_256(w3), w2);
SHA256ROUND(g, h, a, b, c, d, e, f, 18, w2);
w3 = add4(SIGMA1_256(w1), w12, SIGMA0_256(w4), w3);
SHA256ROUND(f, g, h, a, b, c, d, e, 19, w3);
w4 = add4(SIGMA1_256(w2), w13, SIGMA0_256(w5), w4);
SHA256ROUND(e, f, g, h, a, b, c, d, 20, w4);
w5 = add4(SIGMA1_256(w3), w14, SIGMA0_256(w6), w5);
SHA256ROUND(d, e, f, g, h, a, b, c, 21, w5);
w6 = add4(SIGMA1_256(w4), w15, SIGMA0_256(w7), w6);
SHA256ROUND(c, d, e, f, g, h, a, b, 22, w6);
w7 = add4(SIGMA1_256(w5), w0, SIGMA0_256(w8), w7);
SHA256ROUND(b, c, d, e, f, g, h, a, 23, w7);
w8 = add4(SIGMA1_256(w6), w1, SIGMA0_256(w9), w8);
SHA256ROUND(a, b, c, d, e, f, g, h, 24, w8);
w9 = add4(SIGMA1_256(w7), w2, SIGMA0_256(w10), w9);
SHA256ROUND(h, a, b, c, d, e, f, g, 25, w9);
w10 = add4(SIGMA1_256(w8), w3, SIGMA0_256(w11), w10);
SHA256ROUND(g, h, a, b, c, d, e, f, 26, w10);
w11 = add4(SIGMA1_256(w9), w4, SIGMA0_256(w12), w11);
SHA256ROUND(f, g, h, a, b, c, d, e, 27, w11);
w12 = add4(SIGMA1_256(w10), w5, SIGMA0_256(w13), w12);
SHA256ROUND(e, f, g, h, a, b, c, d, 28, w12);
w13 = add4(SIGMA1_256(w11), w6, SIGMA0_256(w14), w13);
SHA256ROUND(d, e, f, g, h, a, b, c, 29, w13);
w14 = add4(SIGMA1_256(w12), w7, SIGMA0_256(w15), w14);
SHA256ROUND(c, d, e, f, g, h, a, b, 30, w14);
w15 = add4(SIGMA1_256(w13), w8, SIGMA0_256(w0), w15);
SHA256ROUND(b, c, d, e, f, g, h, a, 31, w15);
w0 = add4(SIGMA1_256(w14), w9, SIGMA0_256(w1), w0);
SHA256ROUND(a, b, c, d, e, f, g, h, 32, w0);
w1 = add4(SIGMA1_256(w15), w10, SIGMA0_256(w2), w1);
SHA256ROUND(h, a, b, c, d, e, f, g, 33, w1);
w2 = add4(SIGMA1_256(w0), w11, SIGMA0_256(w3), w2);
SHA256ROUND(g, h, a, b, c, d, e, f, 34, w2);
w3 = add4(SIGMA1_256(w1), w12, SIGMA0_256(w4), w3);
SHA256ROUND(f, g, h, a, b, c, d, e, 35, w3);
w4 = add4(SIGMA1_256(w2), w13, SIGMA0_256(w5), w4);
SHA256ROUND(e, f, g, h, a, b, c, d, 36, w4);
w5 = add4(SIGMA1_256(w3), w14, SIGMA0_256(w6), w5);
SHA256ROUND(d, e, f, g, h, a, b, c, 37, w5);
w6 = add4(SIGMA1_256(w4), w15, SIGMA0_256(w7), w6);
SHA256ROUND(c, d, e, f, g, h, a, b, 38, w6);
w7 = add4(SIGMA1_256(w5), w0, SIGMA0_256(w8), w7);
SHA256ROUND(b, c, d, e, f, g, h, a, 39, w7);
w8 = add4(SIGMA1_256(w6), w1, SIGMA0_256(w9), w8);
SHA256ROUND(a, b, c, d, e, f, g, h, 40, w8);
w9 = add4(SIGMA1_256(w7), w2, SIGMA0_256(w10), w9);
SHA256ROUND(h, a, b, c, d, e, f, g, 41, w9);
w10 = add4(SIGMA1_256(w8), w3, SIGMA0_256(w11), w10);
SHA256ROUND(g, h, a, b, c, d, e, f, 42, w10);
w11 = add4(SIGMA1_256(w9), w4, SIGMA0_256(w12), w11);
SHA256ROUND(f, g, h, a, b, c, d, e, 43, w11);
w12 = add4(SIGMA1_256(w10), w5, SIGMA0_256(w13), w12);
SHA256ROUND(e, f, g, h, a, b, c, d, 44, w12);
w13 = add4(SIGMA1_256(w11), w6, SIGMA0_256(w14), w13);
SHA256ROUND(d, e, f, g, h, a, b, c, 45, w13);
w14 = add4(SIGMA1_256(w12), w7, SIGMA0_256(w15), w14);
SHA256ROUND(c, d, e, f, g, h, a, b, 46, w14);
w15 = add4(SIGMA1_256(w13), w8, SIGMA0_256(w0), w15);
SHA256ROUND(b, c, d, e, f, g, h, a, 47, w15);
w0 = add4(SIGMA1_256(w14), w9, SIGMA0_256(w1), w0);
SHA256ROUND(a, b, c, d, e, f, g, h, 48, w0);
w1 = add4(SIGMA1_256(w15), w10, SIGMA0_256(w2), w1);
SHA256ROUND(h, a, b, c, d, e, f, g, 49, w1);
w2 = add4(SIGMA1_256(w0), w11, SIGMA0_256(w3), w2);
SHA256ROUND(g, h, a, b, c, d, e, f, 50, w2);
w3 = add4(SIGMA1_256(w1), w12, SIGMA0_256(w4), w3);
SHA256ROUND(f, g, h, a, b, c, d, e, 51, w3);
w4 = add4(SIGMA1_256(w2), w13, SIGMA0_256(w5), w4);
SHA256ROUND(e, f, g, h, a, b, c, d, 52, w4);
w5 = add4(SIGMA1_256(w3), w14, SIGMA0_256(w6), w5);
SHA256ROUND(d, e, f, g, h, a, b, c, 53, w5);
w6 = add4(SIGMA1_256(w4), w15, SIGMA0_256(w7), w6);
SHA256ROUND(c, d, e, f, g, h, a, b, 54, w6);
w7 = add4(SIGMA1_256(w5), w0, SIGMA0_256(w8), w7);
SHA256ROUND(b, c, d, e, f, g, h, a, 55, w7);
w8 = add4(SIGMA1_256(w6), w1, SIGMA0_256(w9), w8);
SHA256ROUND(a, b, c, d, e, f, g, h, 56, w8);
w9 = add4(SIGMA1_256(w7), w2, SIGMA0_256(w10), w9);
SHA256ROUND(h, a, b, c, d, e, f, g, 57, w9);
w10 = add4(SIGMA1_256(w8), w3, SIGMA0_256(w11), w10);
SHA256ROUND(g, h, a, b, c, d, e, f, 58, w10);
w11 = add4(SIGMA1_256(w9), w4, SIGMA0_256(w12), w11);
SHA256ROUND(f, g, h, a, b, c, d, e, 59, w11);
w12 = add4(SIGMA1_256(w10), w5, SIGMA0_256(w13), w12);
SHA256ROUND(e, f, g, h, a, b, c, d, 60, w12);
w13 = add4(SIGMA1_256(w11), w6, SIGMA0_256(w14), w13);
SHA256ROUND(d, e, f, g, h, a, b, c, 61, w13);
w14 = add4(SIGMA1_256(w12), w7, SIGMA0_256(w15), w14);
SHA256ROUND(c, d, e, f, g, h, a, b, 62, w14);
w15 = add4(SIGMA1_256(w13), w8, SIGMA0_256(w0), w15);
SHA256ROUND(b, c, d, e, f, g, h, a, 63, w15);
#define store_load(x, i, dest) \
T1 = _mm_set1_epi32((hPre)[i]); \
dest = _mm_add_epi32(T1, x);
store_load(a, 0, w0);
store_load(b, 1, w1);
store_load(c, 2, w2);
store_load(d, 3, w3);
store_load(e, 4, w4);
store_load(f, 5, w5);
store_load(g, 6, w6);
store_load(h, 7, w7);
w8 = _mm_set1_epi32(Pad[8]);
w9 = _mm_set1_epi32(Pad[9]);
w10 = _mm_set1_epi32(Pad[10]);
w11 = _mm_set1_epi32(Pad[11]);
w12 = _mm_set1_epi32(Pad[12]);
w13 = _mm_set1_epi32(Pad[13]);
w14 = _mm_set1_epi32(Pad[14]);
w15 = _mm_set1_epi32(Pad[15]);
a = _mm_set1_epi32(hInit[0]);
b = _mm_set1_epi32(hInit[1]);
c = _mm_set1_epi32(hInit[2]);
d = _mm_set1_epi32(hInit[3]);
e = _mm_set1_epi32(hInit[4]);
f = _mm_set1_epi32(hInit[5]);
g = _mm_set1_epi32(hInit[6]);
h = _mm_set1_epi32(hInit[7]);
SHA256ROUND(a, b, c, d, e, f, g, h, 0, w0);
SHA256ROUND(h, a, b, c, d, e, f, g, 1, w1);
SHA256ROUND(g, h, a, b, c, d, e, f, 2, w2);
SHA256ROUND(f, g, h, a, b, c, d, e, 3, w3);
SHA256ROUND(e, f, g, h, a, b, c, d, 4, w4);
SHA256ROUND(d, e, f, g, h, a, b, c, 5, w5);
SHA256ROUND(c, d, e, f, g, h, a, b, 6, w6);
SHA256ROUND(b, c, d, e, f, g, h, a, 7, w7);
SHA256ROUND(a, b, c, d, e, f, g, h, 8, w8);
SHA256ROUND(h, a, b, c, d, e, f, g, 9, w9);
SHA256ROUND(g, h, a, b, c, d, e, f, 10, w10);
SHA256ROUND(f, g, h, a, b, c, d, e, 11, w11);
SHA256ROUND(e, f, g, h, a, b, c, d, 12, w12);
SHA256ROUND(d, e, f, g, h, a, b, c, 13, w13);
SHA256ROUND(c, d, e, f, g, h, a, b, 14, w14);
SHA256ROUND(b, c, d, e, f, g, h, a, 15, w15);
w0 = add4(SIGMA1_256(w14), w9, SIGMA0_256(w1), w0);
SHA256ROUND(a, b, c, d, e, f, g, h, 16, w0);
w1 = add4(SIGMA1_256(w15), w10, SIGMA0_256(w2), w1);
SHA256ROUND(h, a, b, c, d, e, f, g, 17, w1);
w2 = add4(SIGMA1_256(w0), w11, SIGMA0_256(w3), w2);
SHA256ROUND(g, h, a, b, c, d, e, f, 18, w2);
w3 = add4(SIGMA1_256(w1), w12, SIGMA0_256(w4), w3);
SHA256ROUND(f, g, h, a, b, c, d, e, 19, w3);
w4 = add4(SIGMA1_256(w2), w13, SIGMA0_256(w5), w4);
SHA256ROUND(e, f, g, h, a, b, c, d, 20, w4);
w5 = add4(SIGMA1_256(w3), w14, SIGMA0_256(w6), w5);
SHA256ROUND(d, e, f, g, h, a, b, c, 21, w5);
w6 = add4(SIGMA1_256(w4), w15, SIGMA0_256(w7), w6);
SHA256ROUND(c, d, e, f, g, h, a, b, 22, w6);
w7 = add4(SIGMA1_256(w5), w0, SIGMA0_256(w8), w7);
SHA256ROUND(b, c, d, e, f, g, h, a, 23, w7);
w8 = add4(SIGMA1_256(w6), w1, SIGMA0_256(w9), w8);
SHA256ROUND(a, b, c, d, e, f, g, h, 24, w8);
w9 = add4(SIGMA1_256(w7), w2, SIGMA0_256(w10), w9);
SHA256ROUND(h, a, b, c, d, e, f, g, 25, w9);
w10 = add4(SIGMA1_256(w8), w3, SIGMA0_256(w11), w10);
SHA256ROUND(g, h, a, b, c, d, e, f, 26, w10);
w11 = add4(SIGMA1_256(w9), w4, SIGMA0_256(w12), w11);
SHA256ROUND(f, g, h, a, b, c, d, e, 27, w11);
w12 = add4(SIGMA1_256(w10), w5, SIGMA0_256(w13), w12);
SHA256ROUND(e, f, g, h, a, b, c, d, 28, w12);
w13 = add4(SIGMA1_256(w11), w6, SIGMA0_256(w14), w13);
SHA256ROUND(d, e, f, g, h, a, b, c, 29, w13);
w14 = add4(SIGMA1_256(w12), w7, SIGMA0_256(w15), w14);
SHA256ROUND(c, d, e, f, g, h, a, b, 30, w14);
w15 = add4(SIGMA1_256(w13), w8, SIGMA0_256(w0), w15);
SHA256ROUND(b, c, d, e, f, g, h, a, 31, w15);
w0 = add4(SIGMA1_256(w14), w9, SIGMA0_256(w1), w0);
SHA256ROUND(a, b, c, d, e, f, g, h, 32, w0);
w1 = add4(SIGMA1_256(w15), w10, SIGMA0_256(w2), w1);
SHA256ROUND(h, a, b, c, d, e, f, g, 33, w1);
w2 = add4(SIGMA1_256(w0), w11, SIGMA0_256(w3), w2);
SHA256ROUND(g, h, a, b, c, d, e, f, 34, w2);
w3 = add4(SIGMA1_256(w1), w12, SIGMA0_256(w4), w3);
SHA256ROUND(f, g, h, a, b, c, d, e, 35, w3);
w4 = add4(SIGMA1_256(w2), w13, SIGMA0_256(w5), w4);
SHA256ROUND(e, f, g, h, a, b, c, d, 36, w4);
w5 = add4(SIGMA1_256(w3), w14, SIGMA0_256(w6), w5);
SHA256ROUND(d, e, f, g, h, a, b, c, 37, w5);
w6 = add4(SIGMA1_256(w4), w15, SIGMA0_256(w7), w6);
SHA256ROUND(c, d, e, f, g, h, a, b, 38, w6);
w7 = add4(SIGMA1_256(w5), w0, SIGMA0_256(w8), w7);
SHA256ROUND(b, c, d, e, f, g, h, a, 39, w7);
w8 = add4(SIGMA1_256(w6), w1, SIGMA0_256(w9), w8);
SHA256ROUND(a, b, c, d, e, f, g, h, 40, w8);
w9 = add4(SIGMA1_256(w7), w2, SIGMA0_256(w10), w9);
SHA256ROUND(h, a, b, c, d, e, f, g, 41, w9);
w10 = add4(SIGMA1_256(w8), w3, SIGMA0_256(w11), w10);
SHA256ROUND(g, h, a, b, c, d, e, f, 42, w10);
w11 = add4(SIGMA1_256(w9), w4, SIGMA0_256(w12), w11);
SHA256ROUND(f, g, h, a, b, c, d, e, 43, w11);
w12 = add4(SIGMA1_256(w10), w5, SIGMA0_256(w13), w12);
SHA256ROUND(e, f, g, h, a, b, c, d, 44, w12);
w13 = add4(SIGMA1_256(w11), w6, SIGMA0_256(w14), w13);
SHA256ROUND(d, e, f, g, h, a, b, c, 45, w13);
w14 = add4(SIGMA1_256(w12), w7, SIGMA0_256(w15), w14);
SHA256ROUND(c, d, e, f, g, h, a, b, 46, w14);
w15 = add4(SIGMA1_256(w13), w8, SIGMA0_256(w0), w15);
SHA256ROUND(b, c, d, e, f, g, h, a, 47, w15);
w0 = add4(SIGMA1_256(w14), w9, SIGMA0_256(w1), w0);
SHA256ROUND(a, b, c, d, e, f, g, h, 48, w0);
w1 = add4(SIGMA1_256(w15), w10, SIGMA0_256(w2), w1);
SHA256ROUND(h, a, b, c, d, e, f, g, 49, w1);
w2 = add4(SIGMA1_256(w0), w11, SIGMA0_256(w3), w2);
SHA256ROUND(g, h, a, b, c, d, e, f, 50, w2);
w3 = add4(SIGMA1_256(w1), w12, SIGMA0_256(w4), w3);
SHA256ROUND(f, g, h, a, b, c, d, e, 51, w3);
w4 = add4(SIGMA1_256(w2), w13, SIGMA0_256(w5), w4);
SHA256ROUND(e, f, g, h, a, b, c, d, 52, w4);
w5 = add4(SIGMA1_256(w3), w14, SIGMA0_256(w6), w5);
SHA256ROUND(d, e, f, g, h, a, b, c, 53, w5);
w6 = add4(SIGMA1_256(w4), w15, SIGMA0_256(w7), w6);
SHA256ROUND(c, d, e, f, g, h, a, b, 54, w6);
w7 = add4(SIGMA1_256(w5), w0, SIGMA0_256(w8), w7);
SHA256ROUND(b, c, d, e, f, g, h, a, 55, w7);
w8 = add4(SIGMA1_256(w6), w1, SIGMA0_256(w9), w8);
SHA256ROUND(a, b, c, d, e, f, g, h, 56, w8);
w9 = add4(SIGMA1_256(w7), w2, SIGMA0_256(w10), w9);
SHA256ROUND(h, a, b, c, d, e, f, g, 57, w9);
w10 = add4(SIGMA1_256(w8), w3, SIGMA0_256(w11), w10);
SHA256ROUND(g, h, a, b, c, d, e, f, 58, w10);
w11 = add4(SIGMA1_256(w9), w4, SIGMA0_256(w12), w11);
SHA256ROUND(f, g, h, a, b, c, d, e, 59, w11);
w12 = add4(SIGMA1_256(w10), w5, SIGMA0_256(w13), w12);
SHA256ROUND(e, f, g, h, a, b, c, d, 60, w12);
w13 = add4(SIGMA1_256(w11), w6, SIGMA0_256(w14), w13);
SHA256ROUND(d, e, f, g, h, a, b, c, 61, w13);
w14 = add4(SIGMA1_256(w12), w7, SIGMA0_256(w15), w14);
SHA256ROUND(c, d, e, f, g, h, a, b, 62, w14);
w15 = add4(SIGMA1_256(w13), w8, SIGMA0_256(w0), w15);
SHA256ROUND(b, c, d, e, f, g, h, a, 63, w15);
/* store resulsts directly in thash */
#define store_2(x,i) \
w0 = _mm_set1_epi32(hInit[i]); \
*(__m128i *)&(thash)[i][0+k] = _mm_add_epi32(w0, x);
store_2(a, 0);
store_2(b, 1);
store_2(c, 2);
store_2(d, 3);
store_2(e, 4);
store_2(f, 5);
store_2(g, 6);
store_2(h, 7);
*(__m128i *)&(thash)[8][0+k] = nonce;
}
}
#endif // FOURWAYSSE2

View File

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

Before

Width:  |  Height:  |  Size: 126 B

After

Width:  |  Height:  |  Size: 126 B

View File

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

Before

Width:  |  Height:  |  Size: 142 B

After

Width:  |  Height:  |  Size: 142 B

View File

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

View File

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 25 KiB

View File

Before

Width:  |  Height:  |  Size: 766 B

After

Width:  |  Height:  |  Size: 766 B

View File

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

Before

Width:  |  Height:  |  Size: 126 B

After

Width:  |  Height:  |  Size: 126 B

View File

Before

Width:  |  Height:  |  Size: 126 B

After

Width:  |  Height:  |  Size: 126 B

View File

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

Before

Width:  |  Height:  |  Size: 142 B

After

Width:  |  Height:  |  Size: 142 B

View File

@@ -4,12 +4,12 @@ RequestExecutionLevel highest
# General Symbol Definitions
!define REGKEY "SOFTWARE\$(^Name)"
!define VERSION 0.3.20
!define VERSION 0.3.24
!define COMPANY "Bitcoin project"
!define URL http://www.bitcoin.org/
# MUI Symbol Definitions
!define MUI_ICON "src\rc\bitcoin.ico"
!define MUI_ICON "../share/pixmaps/bitcoin.ico"
!define MUI_FINISHPAGE_NOAUTOCLOSE
!define MUI_STARTMENUPAGE_REGISTRY_ROOT HKLM
!define MUI_STARTMENUPAGE_REGISTRY_KEY ${REGKEY}
@@ -39,12 +39,12 @@ Var StartMenuGroup
!insertmacro MUI_LANGUAGE English
# Installer attributes
OutFile bitcoin-0.3.20-win32-setup.exe
OutFile bitcoin-0.3.24-win32-setup.exe
InstallDir $PROGRAMFILES\Bitcoin
CRCCheck on
XPStyle on
ShowInstDetails show
VIProductVersion 0.3.20.0
VIProductVersion 0.3.24.0
VIAddVersionKey ProductName Bitcoin
VIAddVersionKey ProductVersion "${VERSION}"
VIAddVersionKey CompanyName "${COMPANY}"
@@ -59,16 +59,15 @@ ShowUninstDetails show
Section -Main SEC0000
SetOutPath $INSTDIR
SetOverwrite on
File bitcoin.exe
File libeay32.dll
File license.txt
File readme.txt
File ../src/bitcoin.exe
File /oname=license.txt ../COPYING
File /oname=readme.txt ../doc/README_windows.txt
SetOutPath $INSTDIR\daemon
File /r daemon\*.*
File ../src/bitcoind.exe
SetOutPath $INSTDIR\locale
File /r locale\*.*
File /r ../locale/*.*
SetOutPath $INSTDIR\src
File /r src\*.*
File /r /x *.exe /x *.o ../src\*.*
SetOutPath $INSTDIR
WriteRegStr HKCU "${REGKEY}\Components" Main 1
SectionEnd
@@ -108,7 +107,6 @@ done${UNSECTION_ID}:
# Uninstaller sections
Section /o -un.Main UNSEC0000
Delete /REBOOTOK $INSTDIR\bitcoin.exe
Delete /REBOOTOK $INSTDIR\libeay32.dll
Delete /REBOOTOK $INSTDIR\license.txt
Delete /REBOOTOK $INSTDIR\readme.txt
RMDir /r /REBOOTOK $INSTDIR\daemon

15
share/ui.rc Normal file
View File

@@ -0,0 +1,15 @@
bitcoin ICON "pixmaps/bitcoin.ico"
#include "wx/msw/wx.rc"
check ICON "pixmaps/check.ico"
send16 BITMAP "pixmaps/send16.bmp"
send16mask BITMAP "pixmaps/send16mask.bmp"
send16masknoshadow BITMAP "pixmaps/send16masknoshadow.bmp"
send20 BITMAP "pixmaps/send20.bmp"
send20mask BITMAP "pixmaps/send20mask.bmp"
addressbook16 BITMAP "pixmaps/addressbook16.bmp"
addressbook16mask BITMAP "pixmaps/addressbook16mask.bmp"
addressbook20 BITMAP "pixmaps/addressbook20.bmp"
addressbook20mask BITMAP "pixmaps/addressbook20mask.bmp"
favicon ICON "pixmaps/favicon.ico"

File diff suppressed because it is too large Load Diff

View File

@@ -11,12 +11,17 @@
// - E-mail usually won't line-break if there's no punctuation to break at.
// - Doubleclicking selects the whole number as one word if it's all alphanumeric.
//
#ifndef BITCOIN_BASE58_H
#define BITCOIN_BASE58_H
#include <string>
#include <vector>
#include "bignum.h"
static const char* pszBase58 = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";
inline string EncodeBase58(const unsigned char* pbegin, const unsigned char* pend)
inline std::string EncodeBase58(const unsigned char* pbegin, const unsigned char* pend)
{
CAutoBN_CTX pctx;
CBigNum bn58 = 58;
@@ -24,15 +29,17 @@ inline string EncodeBase58(const unsigned char* pbegin, const unsigned char* pen
// Convert big endian data to little endian
// Extra zero at the end make sure bignum will interpret as a positive number
vector<unsigned char> vchTmp(pend-pbegin+1, 0);
std::vector<unsigned char> vchTmp(pend-pbegin+1, 0);
reverse_copy(pbegin, pend, vchTmp.begin());
// Convert little endian data to bignum
CBigNum bn;
bn.setvch(vchTmp);
// Convert bignum to string
string str;
// Convert bignum to std::string
std::string str;
// Expected size increase from base58 conversion is approximately 137%
// use 138% to be safe
str.reserve((pend - pbegin) * 138 / 100 + 1);
CBigNum dv;
CBigNum rem;
@@ -49,17 +56,17 @@ inline string EncodeBase58(const unsigned char* pbegin, const unsigned char* pen
for (const unsigned char* p = pbegin; p < pend && *p == 0; p++)
str += pszBase58[0];
// Convert little endian string to big endian
// Convert little endian std::string to big endian
reverse(str.begin(), str.end());
return str;
}
inline string EncodeBase58(const vector<unsigned char>& vch)
inline std::string EncodeBase58(const std::vector<unsigned char>& vch)
{
return EncodeBase58(&vch[0], &vch[0] + vch.size());
}
inline bool DecodeBase58(const char* psz, vector<unsigned char>& vchRet)
inline bool DecodeBase58(const char* psz, std::vector<unsigned char>& vchRet)
{
CAutoBN_CTX pctx;
vchRet.clear();
@@ -88,7 +95,7 @@ inline bool DecodeBase58(const char* psz, vector<unsigned char>& vchRet)
}
// Get bignum as little endian data
vector<unsigned char> vchTmp = bn.getvch();
std::vector<unsigned char> vchTmp = bn.getvch();
// Trim off sign byte if present
if (vchTmp.size() >= 2 && vchTmp.end()[-1] == 0 && vchTmp.end()[-2] >= 0x80)
@@ -105,7 +112,7 @@ inline bool DecodeBase58(const char* psz, vector<unsigned char>& vchRet)
return true;
}
inline bool DecodeBase58(const string& str, vector<unsigned char>& vchRet)
inline bool DecodeBase58(const std::string& str, std::vector<unsigned char>& vchRet)
{
return DecodeBase58(str.c_str(), vchRet);
}
@@ -114,16 +121,16 @@ inline bool DecodeBase58(const string& str, vector<unsigned char>& vchRet)
inline string EncodeBase58Check(const vector<unsigned char>& vchIn)
inline std::string EncodeBase58Check(const std::vector<unsigned char>& vchIn)
{
// add 4-byte hash check to the end
vector<unsigned char> vch(vchIn);
std::vector<unsigned char> vch(vchIn);
uint256 hash = Hash(vch.begin(), vch.end());
vch.insert(vch.end(), (unsigned char*)&hash, (unsigned char*)&hash + 4);
return EncodeBase58(vch);
}
inline bool DecodeBase58Check(const char* psz, vector<unsigned char>& vchRet)
inline bool DecodeBase58Check(const char* psz, std::vector<unsigned char>& vchRet)
{
if (!DecodeBase58(psz, vchRet))
return false;
@@ -142,7 +149,7 @@ inline bool DecodeBase58Check(const char* psz, vector<unsigned char>& vchRet)
return true;
}
inline bool DecodeBase58Check(const string& str, vector<unsigned char>& vchRet)
inline bool DecodeBase58Check(const std::string& str, std::vector<unsigned char>& vchRet)
{
return DecodeBase58Check(str.c_str(), vchRet);
}
@@ -154,17 +161,17 @@ inline bool DecodeBase58Check(const string& str, vector<unsigned char>& vchRet)
#define ADDRESSVERSION ((unsigned char)(fTestNet ? 111 : 0))
inline string Hash160ToAddress(uint160 hash160)
inline std::string Hash160ToAddress(uint160 hash160)
{
// add 1-byte version number to the front
vector<unsigned char> vch(1, ADDRESSVERSION);
std::vector<unsigned char> vch(1, ADDRESSVERSION);
vch.insert(vch.end(), UBEGIN(hash160), UEND(hash160));
return EncodeBase58Check(vch);
}
inline bool AddressToHash160(const char* psz, uint160& hash160Ret)
{
vector<unsigned char> vch;
std::vector<unsigned char> vch;
if (!DecodeBase58Check(psz, vch))
return false;
if (vch.empty())
@@ -176,7 +183,7 @@ inline bool AddressToHash160(const char* psz, uint160& hash160Ret)
return (nVersion <= ADDRESSVERSION);
}
inline bool AddressToHash160(const string& str, uint160& hash160Ret)
inline bool AddressToHash160(const std::string& str, uint160& hash160Ret)
{
return AddressToHash160(str.c_str(), hash160Ret);
}
@@ -187,7 +194,7 @@ inline bool IsValidBitcoinAddress(const char* psz)
return AddressToHash160(psz, hash160);
}
inline bool IsValidBitcoinAddress(const string& str)
inline bool IsValidBitcoinAddress(const std::string& str)
{
return IsValidBitcoinAddress(str.c_str());
}
@@ -195,7 +202,9 @@ inline bool IsValidBitcoinAddress(const string& str)
inline string PubKeyToAddress(const vector<unsigned char>& vchPubKey)
inline std::string PubKeyToAddress(const std::vector<unsigned char>& vchPubKey)
{
return Hash160ToAddress(Hash160(vchPubKey));
}
#endif

View File

@@ -1,14 +1,14 @@
// Copyright (c) 2009-2010 Satoshi Nakamoto
// Distributed under the MIT/X11 software license, see the accompanying
// file license.txt or http://www.opensource.org/licenses/mit-license.php.
#ifndef BITCOIN_BIGNUM_H
#define BITCOIN_BIGNUM_H
#include <stdexcept>
#include <vector>
#include <openssl/bn.h>
#include "util.h"
class bignum_error : public std::runtime_error
{
@@ -228,10 +228,13 @@ public:
{
std::vector<unsigned char> vch2(vch.size() + 4);
unsigned int nSize = vch.size();
// BIGNUM's byte stream format expects 4 bytes of
// big endian size data info at the front
vch2[0] = (nSize >> 24) & 0xff;
vch2[1] = (nSize >> 16) & 0xff;
vch2[2] = (nSize >> 8) & 0xff;
vch2[3] = (nSize >> 0) & 0xff;
// swap data to big endian
reverse_copy(vch.begin(), vch.end(), vch2.begin() + 4);
BN_mpi2bn(&vch2[0], vch2.size(), this);
}
@@ -308,7 +311,7 @@ public:
CAutoBN_CTX pctx;
CBigNum bnBase = nBase;
CBigNum bn0 = 0;
string str;
std::string str;
CBigNum bn = *this;
BN_set_negative(&bn, false);
CBigNum dv;
@@ -348,7 +351,7 @@ public:
template<typename Stream>
void Unserialize(Stream& s, int nType=0, int nVersion=VERSION)
{
vector<unsigned char> vch;
std::vector<unsigned char> vch;
::Unserialize(s, vch, nType, nVersion);
setvch(vch);
}
@@ -530,3 +533,5 @@ inline bool operator<=(const CBigNum& a, const CBigNum& b) { return (BN_cmp(&a,
inline bool operator>=(const CBigNum& a, const CBigNum& b) { return (BN_cmp(&a, &b) >= 0); }
inline bool operator<(const CBigNum& a, const CBigNum& b) { return (BN_cmp(&a, &b) < 0); }
inline bool operator>(const CBigNum& a, const CBigNum& b) { return (BN_cmp(&a, &b) > 0); }
#endif

View File

@@ -3,8 +3,13 @@
// file license.txt or http://www.opensource.org/licenses/mit-license.php.
#include "headers.h"
#include "db.h"
#include "net.h"
#include <boost/filesystem.hpp>
#include <boost/filesystem/fstream.hpp>
void ThreadFlushWalletDB(void* parg);
using namespace std;
using namespace boost;
unsigned int nWalletDBUpdated;
@@ -144,7 +149,7 @@ void CDB::Close()
--mapFileUseCount[strFile];
}
void CloseDb(const string& strFile)
void static CloseDb(const string& strFile)
{
CRITICAL_BLOCK(cs_db)
{
@@ -353,7 +358,7 @@ bool CTxDB::WriteBestInvalidWork(CBigNum bnBestInvalidWork)
return Write(string("bnBestInvalidWork"), bnBestInvalidWork);
}
CBlockIndex* InsertBlockIndex(uint256 hash)
CBlockIndex static * InsertBlockIndex(uint256 hash)
{
if (hash == 0)
return NULL;
@@ -434,13 +439,13 @@ bool CTxDB::LoadBlockIndex()
// Calculate bnChainWork
vector<pair<int, CBlockIndex*> > vSortedByHeight;
vSortedByHeight.reserve(mapBlockIndex.size());
foreach(const PAIRTYPE(uint256, CBlockIndex*)& item, mapBlockIndex)
BOOST_FOREACH(const PAIRTYPE(uint256, CBlockIndex*)& item, mapBlockIndex)
{
CBlockIndex* pindex = item.second;
vSortedByHeight.push_back(make_pair(pindex->nHeight, pindex));
}
sort(vSortedByHeight.begin(), vSortedByHeight.end());
foreach(const PAIRTYPE(int, CBlockIndex*)& item, vSortedByHeight)
BOOST_FOREACH(const PAIRTYPE(int, CBlockIndex*)& item, vSortedByHeight)
{
CBlockIndex* pindex = item.second;
pindex->bnChainWork = (pindex->pprev ? pindex->pprev->bnChainWork : 0) + pindex->GetBlockWork();
@@ -578,8 +583,19 @@ bool LoadAddresses()
// CWalletDB
//
static set<int64> setKeyPool;
static CCriticalSection cs_setKeyPool;
bool CWalletDB::WriteName(const string& strAddress, const string& strName)
{
nWalletDBUpdated++;
return Write(make_pair(string("name"), strAddress), strName);
}
bool CWalletDB::EraseName(const string& strAddress)
{
// This should only be used for sending addresses, never for receiving addresses,
// receiving addresses must always have an address book entry if they're not change return.
nWalletDBUpdated++;
return Erase(make_pair(string("name"), strAddress));
}
bool CWalletDB::ReadAccount(const string& strAccount, CAccount& account)
{
@@ -603,7 +619,7 @@ int64 CWalletDB::GetAccountCreditDebit(const string& strAccount)
ListAccountCreditDebit(strAccount, entries);
int64 nCreditDebit = 0;
foreach (const CAccountingEntry& entry, entries)
BOOST_FOREACH (const CAccountingEntry& entry, entries)
nCreditDebit += entry.nCreditDebit;
return nCreditDebit;
@@ -654,9 +670,9 @@ void CWalletDB::ListAccountCreditDebit(const string& strAccount, list<CAccountin
}
bool CWalletDB::LoadWallet()
bool CWalletDB::LoadWallet(CWallet* pwallet)
{
vchDefaultKey.clear();
pwallet->vchDefaultKey.clear();
int nFileVersion = 0;
vector<uint256> vWalletUpgrade;
@@ -668,8 +684,8 @@ bool CWalletDB::LoadWallet()
#endif
//// todo: shouldn't we catch exceptions and try to recover and continue?
CRITICAL_BLOCK(cs_mapKeys)
CRITICAL_BLOCK(cs_mapWallet)
CRITICAL_BLOCK(pwallet->cs_mapWallet)
CRITICAL_BLOCK(pwallet->cs_mapKeys)
{
// Get cursor
Dbc* pcursor = GetCursor();
@@ -696,14 +712,15 @@ bool CWalletDB::LoadWallet()
{
string strAddress;
ssKey >> strAddress;
ssValue >> mapAddressBook[strAddress];
ssValue >> pwallet->mapAddressBook[strAddress];
}
else if (strType == "tx")
{
uint256 hash;
ssKey >> hash;
CWalletTx& wtx = mapWallet[hash];
CWalletTx& wtx = pwallet->mapWallet[hash];
ssValue >> wtx;
wtx.pwallet = pwallet;
if (wtx.GetHash() != hash)
printf("Error in wallet.dat, hash mismatch\n");
@@ -754,18 +771,18 @@ bool CWalletDB::LoadWallet()
else
ssValue >> wkey;
mapKeys[vchPubKey] = wkey.vchPrivKey;
pwallet->mapKeys[vchPubKey] = wkey.vchPrivKey;
mapPubKeys[Hash160(vchPubKey)] = vchPubKey;
}
else if (strType == "defaultkey")
{
ssValue >> vchDefaultKey;
ssValue >> pwallet->vchDefaultKey;
}
else if (strType == "pool")
{
int64 nIndex;
ssKey >> nIndex;
setKeyPool.insert(nIndex);
pwallet->setKeyPool.insert(nIndex);
}
else if (strType == "version")
{
@@ -778,10 +795,10 @@ bool CWalletDB::LoadWallet()
string strKey;
ssKey >> strKey;
// Menu state
if (strKey == "fGenerateBitcoins") ssValue >> fGenerateBitcoins;
// Options
#ifndef GUI
if (strKey == "fGenerateBitcoins") ssValue >> fGenerateBitcoins;
#endif
if (strKey == "nTransactionFee") ssValue >> nTransactionFee;
if (strKey == "addrIncoming") ssValue >> addrIncoming;
if (strKey == "fLimitProcessors") ssValue >> fLimitProcessors;
@@ -790,14 +807,14 @@ bool CWalletDB::LoadWallet()
if (strKey == "fMinimizeOnClose") ssValue >> fMinimizeOnClose;
if (strKey == "fUseProxy") ssValue >> fUseProxy;
if (strKey == "addrProxy") ssValue >> addrProxy;
if (fHaveUPnP && strKey == "fUseUPnP") ssValue >> fUseUPnP;
}
}
pcursor->close();
}
foreach(uint256 hash, vWalletUpgrade)
WriteTx(hash, mapWallet[hash]);
BOOST_FOREACH(uint256 hash, vWalletUpgrade)
WriteTx(hash, pwallet->mapWallet[hash]);
printf("nFileVersion = %d\n", nFileVersion);
printf("fGenerateBitcoins = %d\n", fGenerateBitcoins);
@@ -807,6 +824,8 @@ bool CWalletDB::LoadWallet()
printf("fMinimizeOnClose = %d\n", fMinimizeOnClose);
printf("fUseProxy = %d\n", fUseProxy);
printf("addrProxy = %s\n", addrProxy.ToString().c_str());
if (fHaveUPnP)
printf("fUseUPnP = %d\n", fUseUPnP);
// Upgrade
@@ -823,37 +842,9 @@ bool CWalletDB::LoadWallet()
return true;
}
bool LoadWallet(bool& fFirstRunRet)
{
fFirstRunRet = false;
if (!CWalletDB("cr+").LoadWallet())
return false;
fFirstRunRet = vchDefaultKey.empty();
if (mapKeys.count(vchDefaultKey))
{
// Set keyUser
keyUser.SetPubKey(vchDefaultKey);
keyUser.SetPrivKey(mapKeys[vchDefaultKey]);
}
else
{
// Create new keyUser and set as default key
RandAddSeedPerfmon();
keyUser.MakeNewKey();
if (!AddKey(keyUser))
return false;
if (!SetAddressBookName(PubKeyToAddress(keyUser.GetPubKey()), "Your Address"))
return false;
CWalletDB().WriteDefaultKey(keyUser.GetPubKey());
}
CreateThread(ThreadFlushWalletDB, NULL);
return true;
}
void ThreadFlushWalletDB(void* parg)
{
const string& strFile = ((const string*)parg)[0];
static bool fOneThread;
if (fOneThread)
return;
@@ -889,7 +880,6 @@ void ThreadFlushWalletDB(void* parg)
if (nRefCount == 0 && !fShutdown)
{
string strFile = "wallet.dat";
map<string, int>::iterator mi = mapFileUseCount.find(strFile);
if (mi != mapFileUseCount.end())
{
@@ -912,26 +902,27 @@ void ThreadFlushWalletDB(void* parg)
}
}
void BackupWallet(const string& strDest)
bool BackupWallet(const CWallet& wallet, const string& strDest)
{
if (!wallet.fFileBacked)
return false;
while (!fShutdown)
{
CRITICAL_BLOCK(cs_db)
{
const string strFile = "wallet.dat";
if (!mapFileUseCount.count(strFile) || mapFileUseCount[strFile] == 0)
if (!mapFileUseCount.count(wallet.strWalletFile) || mapFileUseCount[wallet.strWalletFile] == 0)
{
// Flush log data to the dat file
CloseDb(strFile);
CloseDb(wallet.strWalletFile);
dbenv.txn_checkpoint(0, 0, 0);
dbenv.lsn_reset(strFile.c_str(), 0);
mapFileUseCount.erase(strFile);
dbenv.lsn_reset(wallet.strWalletFile.c_str(), 0);
mapFileUseCount.erase(wallet.strWalletFile);
// Copy wallet.dat
filesystem::path pathSrc(GetDataDir() + "/" + strFile);
filesystem::path pathSrc(GetDataDir() + "/" + wallet.strWalletFile);
filesystem::path pathDest(strDest);
if (filesystem::is_directory(pathDest))
pathDest = pathDest / strFile;
pathDest = pathDest / wallet.strWalletFile;
#if BOOST_VERSION >= 104000
filesystem::copy_file(pathSrc, pathDest, filesystem::copy_option::overwrite_if_exists);
#else
@@ -939,83 +930,10 @@ void BackupWallet(const string& strDest)
#endif
printf("copied wallet.dat to %s\n", pathDest.string().c_str());
return;
return true;
}
}
Sleep(100);
}
}
void CWalletDB::ReserveKeyFromKeyPool(int64& nIndex, CKeyPool& keypool)
{
nIndex = -1;
keypool.vchPubKey.clear();
CRITICAL_BLOCK(cs_main)
CRITICAL_BLOCK(cs_mapWallet)
CRITICAL_BLOCK(cs_setKeyPool)
{
// Top up key pool
int64 nTargetSize = max(GetArg("-keypool", 100), (int64)0);
while (setKeyPool.size() < nTargetSize+1)
{
int64 nEnd = 1;
if (!setKeyPool.empty())
nEnd = *(--setKeyPool.end()) + 1;
if (!Write(make_pair(string("pool"), nEnd), CKeyPool(GenerateNewKey())))
throw runtime_error("ReserveKeyFromKeyPool() : writing generated key failed");
setKeyPool.insert(nEnd);
printf("keypool added key %"PRI64d", size=%d\n", nEnd, setKeyPool.size());
}
// Get the oldest key
assert(!setKeyPool.empty());
nIndex = *(setKeyPool.begin());
setKeyPool.erase(setKeyPool.begin());
if (!Read(make_pair(string("pool"), nIndex), keypool))
throw runtime_error("ReserveKeyFromKeyPool() : read failed");
if (!mapKeys.count(keypool.vchPubKey))
throw runtime_error("ReserveKeyFromKeyPool() : unknown key in key pool");
assert(!keypool.vchPubKey.empty());
printf("keypool reserve %"PRI64d"\n", nIndex);
}
}
void CWalletDB::KeepKey(int64 nIndex)
{
// Remove from key pool
CRITICAL_BLOCK(cs_main)
CRITICAL_BLOCK(cs_mapWallet)
{
Erase(make_pair(string("pool"), nIndex));
}
printf("keypool keep %"PRI64d"\n", nIndex);
}
void CWalletDB::ReturnKey(int64 nIndex)
{
// Return to key pool
CRITICAL_BLOCK(cs_setKeyPool)
setKeyPool.insert(nIndex);
printf("keypool return %"PRI64d"\n", nIndex);
}
vector<unsigned char> GetKeyFromKeyPool()
{
CWalletDB walletdb;
int64 nIndex = 0;
CKeyPool keypool;
walletdb.ReserveKeyFromKeyPool(nIndex, keypool);
walletdb.KeepKey(nIndex);
return keypool.vchPubKey;
}
int64 GetOldestKeyPoolTime()
{
CWalletDB walletdb;
int64 nIndex = 0;
CKeyPool keypool;
walletdb.ReserveKeyFromKeyPool(nIndex, keypool);
walletdb.ReturnKey(nIndex);
return keypool.nTime;
return false;
}

View File

@@ -1,24 +1,27 @@
// Copyright (c) 2009-2010 Satoshi Nakamoto
// Distributed under the MIT/X11 software license, see the accompanying
// file license.txt or http://www.opensource.org/licenses/mit-license.php.
#ifndef BITCOIN_DB_H
#define BITCOIN_DB_H
#include "key.h"
#include <map>
#include <string>
#include <vector>
#include <db_cxx.h>
class CTransaction;
class CTxIndex;
class CDiskBlockIndex;
class CDiskTxPos;
class COutPoint;
class CUser;
class CReview;
class CAddress;
class CWalletTx;
class CWallet;
class CAccount;
class CAccountingEntry;
extern map<string, string> mapAddressBook;
extern CCriticalSection cs_mapAddressBook;
extern vector<unsigned char> vchDefaultKey;
extern bool fClient;
extern int nBestHeight;
class CBlockLocator;
extern unsigned int nWalletDBUpdated;
@@ -26,8 +29,8 @@ extern DbEnv dbenv;
extern void DBFlush(bool fShutdown);
extern vector<unsigned char> GetKeyFromKeyPool();
extern int64 GetOldestKeyPoolTime();
void ThreadFlushWalletDB(void* parg);
bool BackupWallet(const CWallet& wallet, const std::string& strDest);
@@ -36,8 +39,8 @@ class CDB
{
protected:
Db* pdb;
string strFile;
vector<DbTxn*> vTxn;
std::string strFile;
std::vector<DbTxn*> vTxn;
bool fReadOnly;
explicit CDB(const char* pszFile, const char* pszMode="r+");
@@ -246,12 +249,12 @@ public:
bool ReadVersion(int& nVersion)
{
nVersion = 0;
return Read(string("version"), nVersion);
return Read(std::string("version"), nVersion);
}
bool WriteVersion(int nVersion)
{
return Write(string("version"), nVersion);
return Write(std::string("version"), nVersion);
}
};
@@ -275,7 +278,7 @@ public:
bool AddTxIndex(const CTransaction& tx, const CDiskTxPos& pos, int nHeight);
bool EraseTxIndex(const CTransaction& tx);
bool ContainsTx(uint256 hash);
bool ReadOwnerTxes(uint160 hash160, int nHeight, vector<CTransaction>& vtx);
bool ReadOwnerTxes(uint160 hash160, int nHeight, std::vector<CTransaction>& vtx);
bool ReadDiskTx(uint256 hash, CTransaction& tx, CTxIndex& txindex);
bool ReadDiskTx(uint256 hash, CTransaction& tx);
bool ReadDiskTx(COutPoint outpoint, CTransaction& tx, CTxIndex& txindex);
@@ -310,21 +313,18 @@ bool LoadAddresses();
class CKeyPool
{
public:
int64 nTime;
vector<unsigned char> vchPubKey;
std::vector<unsigned char> vchPubKey;
CKeyPool()
{
nTime = GetTime();
}
CKeyPool(const vector<unsigned char>& vchPubKeyIn)
CKeyPool(const std::vector<unsigned char>& vchPubKeyIn)
{
nTime = GetTime();
vchPubKey = vchPubKeyIn;
@@ -345,158 +345,112 @@ public:
class CWalletDB : public CDB
{
public:
CWalletDB(const char* pszMode="r+") : CDB("wallet.dat", pszMode)
CWalletDB(std::string strFilename, const char* pszMode="r+") : CDB(strFilename.c_str(), pszMode)
{
}
private:
CWalletDB(const CWalletDB&);
void operator=(const CWalletDB&);
public:
bool ReadName(const string& strAddress, string& strName)
bool ReadName(const std::string& strAddress, std::string& strName)
{
strName = "";
return Read(make_pair(string("name"), strAddress), strName);
return Read(std::make_pair(std::string("name"), strAddress), strName);
}
bool WriteName(const string& strAddress, const string& strName)
{
CRITICAL_BLOCK(cs_mapAddressBook)
mapAddressBook[strAddress] = strName;
nWalletDBUpdated++;
return Write(make_pair(string("name"), strAddress), strName);
}
bool WriteName(const std::string& strAddress, const std::string& strName);
bool EraseName(const string& strAddress)
{
// This should only be used for sending addresses, never for receiving addresses,
// receiving addresses must always have an address book entry if they're not change return.
CRITICAL_BLOCK(cs_mapAddressBook)
mapAddressBook.erase(strAddress);
nWalletDBUpdated++;
return Erase(make_pair(string("name"), strAddress));
}
bool EraseName(const std::string& strAddress);
bool ReadTx(uint256 hash, CWalletTx& wtx)
{
return Read(make_pair(string("tx"), hash), wtx);
return Read(std::make_pair(std::string("tx"), hash), wtx);
}
bool WriteTx(uint256 hash, const CWalletTx& wtx)
{
nWalletDBUpdated++;
return Write(make_pair(string("tx"), hash), wtx);
return Write(std::make_pair(std::string("tx"), hash), wtx);
}
bool EraseTx(uint256 hash)
{
nWalletDBUpdated++;
return Erase(make_pair(string("tx"), hash));
return Erase(std::make_pair(std::string("tx"), hash));
}
bool ReadKey(const vector<unsigned char>& vchPubKey, CPrivKey& vchPrivKey)
bool ReadKey(const std::vector<unsigned char>& vchPubKey, CPrivKey& vchPrivKey)
{
vchPrivKey.clear();
return Read(make_pair(string("key"), vchPubKey), vchPrivKey);
return Read(std::make_pair(std::string("key"), vchPubKey), vchPrivKey);
}
bool WriteKey(const vector<unsigned char>& vchPubKey, const CPrivKey& vchPrivKey)
bool WriteKey(const std::vector<unsigned char>& vchPubKey, const CPrivKey& vchPrivKey)
{
nWalletDBUpdated++;
return Write(make_pair(string("key"), vchPubKey), vchPrivKey, false);
return Write(std::make_pair(std::string("key"), vchPubKey), vchPrivKey, false);
}
bool ReadDefaultKey(vector<unsigned char>& vchPubKey)
bool WriteBestBlock(const CBlockLocator& locator)
{
nWalletDBUpdated++;
return Write(std::string("bestblock"), locator);
}
bool ReadBestBlock(CBlockLocator& locator)
{
return Read(std::string("bestblock"), locator);
}
bool ReadDefaultKey(std::vector<unsigned char>& vchPubKey)
{
vchPubKey.clear();
return Read(string("defaultkey"), vchPubKey);
return Read(std::string("defaultkey"), vchPubKey);
}
bool WriteDefaultKey(const vector<unsigned char>& vchPubKey)
bool WriteDefaultKey(const std::vector<unsigned char>& vchPubKey)
{
vchDefaultKey = vchPubKey;
nWalletDBUpdated++;
return Write(string("defaultkey"), vchPubKey);
return Write(std::string("defaultkey"), vchPubKey);
}
bool ReadPool(int64 nPool, CKeyPool& keypool)
{
return Read(std::make_pair(std::string("pool"), nPool), keypool);
}
bool WritePool(int64 nPool, const CKeyPool& keypool)
{
nWalletDBUpdated++;
return Write(std::make_pair(std::string("pool"), nPool), keypool);
}
bool ErasePool(int64 nPool)
{
nWalletDBUpdated++;
return Erase(std::make_pair(std::string("pool"), nPool));
}
template<typename T>
bool ReadSetting(const string& strKey, T& value)
bool ReadSetting(const std::string& strKey, T& value)
{
return Read(make_pair(string("setting"), strKey), value);
return Read(std::make_pair(std::string("setting"), strKey), value);
}
template<typename T>
bool WriteSetting(const string& strKey, const T& value)
bool WriteSetting(const std::string& strKey, const T& value)
{
nWalletDBUpdated++;
return Write(make_pair(string("setting"), strKey), value);
return Write(std::make_pair(std::string("setting"), strKey), value);
}
bool ReadAccount(const string& strAccount, CAccount& account);
bool WriteAccount(const string& strAccount, const CAccount& account);
bool ReadAccount(const std::string& strAccount, CAccount& account);
bool WriteAccount(const std::string& strAccount, const CAccount& account);
bool WriteAccountingEntry(const CAccountingEntry& acentry);
int64 GetAccountCreditDebit(const string& strAccount);
void ListAccountCreditDebit(const string& strAccount, list<CAccountingEntry>& acentries);
int64 GetAccountCreditDebit(const std::string& strAccount);
void ListAccountCreditDebit(const std::string& strAccount, std::list<CAccountingEntry>& acentries);
bool LoadWallet();
protected:
void ReserveKeyFromKeyPool(int64& nIndex, CKeyPool& keypool);
void KeepKey(int64 nIndex);
static void ReturnKey(int64 nIndex);
friend class CReserveKey;
friend vector<unsigned char> GetKeyFromKeyPool();
friend int64 GetOldestKeyPoolTime();
bool LoadWallet(CWallet* pwallet);
};
bool LoadWallet(bool& fFirstRunRet);
void BackupWallet(const string& strDest);
inline bool SetAddressBookName(const string& strAddress, const string& strName)
{
return CWalletDB().WriteName(strAddress, strName);
}
class CReserveKey
{
protected:
int64 nIndex;
vector<unsigned char> vchPubKey;
public:
CReserveKey()
{
nIndex = -1;
}
~CReserveKey()
{
if (!fShutdown)
ReturnKey();
}
vector<unsigned char> GetReservedKey()
{
if (nIndex == -1)
{
CKeyPool keypool;
CWalletDB().ReserveKeyFromKeyPool(nIndex, keypool);
vchPubKey = keypool.vchPubKey;
}
assert(!vchPubKey.empty());
return vchPubKey;
}
void KeepKey()
{
if (nIndex != -1)
CWalletDB().KeepKey(nIndex);
nIndex = -1;
vchPubKey.clear();
}
void ReturnKey()
{
if (nIndex != -1)
CWalletDB::ReturnKey(nIndex);
nIndex = -1;
vchPubKey.clear();
}
};
#endif

View File

@@ -48,7 +48,6 @@
#include <limits.h>
#include <float.h>
#include <assert.h>
#include <memory>
#include <iostream>
#include <sstream>
#include <string>
@@ -56,29 +55,8 @@
#include <list>
#include <deque>
#include <map>
#include <set>
#include <algorithm>
#include <numeric>
#include <boost/foreach.hpp>
#include <boost/lexical_cast.hpp>
#include <boost/tuple/tuple.hpp>
#include <boost/tuple/tuple_comparison.hpp>
#include <boost/tuple/tuple_io.hpp>
#include <boost/array.hpp>
#include <boost/bind.hpp>
#include <boost/function.hpp>
#include <boost/filesystem.hpp>
#include <boost/filesystem/fstream.hpp>
#include <boost/algorithm/string.hpp>
#include <boost/thread.hpp>
#include <boost/interprocess/sync/file_lock.hpp>
#include <boost/interprocess/sync/interprocess_mutex.hpp>
#include <boost/interprocess/sync/interprocess_recursive_mutex.hpp>
#include <boost/date_time/gregorian/gregorian_types.hpp>
#include <boost/date_time/posix_time/posix_time_types.hpp>
#include <boost/config.hpp>
#include <boost/program_options/detail/config_file.hpp>
#include <boost/program_options/parsers.hpp>
#ifdef __WXMSW__
#include <windows.h>
@@ -109,30 +87,21 @@
#pragma hdrstop
using namespace std;
using namespace boost;
#include "strlcpy.h"
#include "serialize.h"
#include "uint256.h"
#include "util.h"
#include "key.h"
#include "bignum.h"
#include "base58.h"
#include "script.h"
#include "db.h"
#include "net.h"
#include "irc.h"
#include "main.h"
#include "rpc.h"
#ifdef GUI
#include "uibase.h"
#include "ui.h"
#else
#include "noui.h"
#endif
#include "init.h"
#ifdef GUI
#include "xpm/addressbook16.xpm"
#include "xpm/addressbook20.xpm"
#include "xpm/bitcoin16.xpm"
@@ -145,3 +114,4 @@ using namespace boost;
#include "xpm/send16noshadow.xpm"
#include "xpm/send20.xpm"
#include "xpm/about.xpm"
#endif

View File

@@ -1,14 +1,20 @@
// Copyright (c) 2009-2010 Satoshi Nakamoto
// Distributed under the MIT/X11 software license, see the accompanying
// file license.txt or http://www.opensource.org/licenses/mit-license.php.
#include "headers.h"
#include "db.h"
#include "rpc.h"
#include "net.h"
#include "init.h"
#include "strlcpy.h"
#include <boost/filesystem.hpp>
#include <boost/filesystem/fstream.hpp>
#include <boost/interprocess/sync/file_lock.hpp>
using namespace std;
using namespace boost;
CWallet* pwalletMain;
//////////////////////////////////////////////////////////////////////////////
//
@@ -41,6 +47,9 @@ void Shutdown(void* parg)
DBFlush(false);
StopNode();
DBFlush(true);
boost::filesystem::remove(GetPidFile());
UnregisterWallet(pwalletMain);
delete pwalletMain;
CreateThread(ExitTimeout, NULL);
Sleep(50);
printf("Bitcoin exiting\n\n");
@@ -70,36 +79,16 @@ void HandleSIGTERM(int)
//
// Start
//
#ifndef GUI
int main(int argc, char* argv[])
{
for (int i = 1; i < argc; i++)
if (!IsSwitchChar(argv[i][0]))
fCommandLine = true;
fDaemon = !fCommandLine;
bool fRet = false;
fRet = AppInit(argc, argv);
#ifdef __WXGTK__
if (!fCommandLine)
{
// Daemonize
pid_t pid = fork();
if (pid < 0)
{
fprintf(stderr, "Error: fork() returned %d errno %d\n", pid, errno);
return 1;
}
if (pid > 0)
pthread_exit((void*)0);
}
#endif
if (fRet && fDaemon)
return 0;
if (!AppInit(argc, argv))
return 1;
while (!fShutdown)
Sleep(1000000);
return 0;
return 1;
}
#endif
@@ -141,6 +130,8 @@ bool AppInit2(int argc, char* argv[])
sigemptyset(&sa.sa_mask);
sa.sa_flags = 0;
sigaction(SIGTERM, &sa, NULL);
sigaction(SIGINT, &sa, NULL);
sigaction(SIGHUP, &sa, NULL);
#endif
//
@@ -150,17 +141,25 @@ bool AppInit2(int argc, char* argv[])
if (mapArgs.count("-datadir"))
{
filesystem::path pathDataDir = filesystem::system_complete(mapArgs["-datadir"]);
strlcpy(pszSetDataDir, pathDataDir.string().c_str(), sizeof(pszSetDataDir));
if (filesystem::is_directory(filesystem::system_complete(mapArgs["-datadir"])))
{
filesystem::path pathDataDir = filesystem::system_complete(mapArgs["-datadir"]);
strlcpy(pszSetDataDir, pathDataDir.string().c_str(), sizeof(pszSetDataDir));
}
else
{
fprintf(stderr, "Error: Specified directory does not exist\n");
Shutdown(NULL);
}
}
ReadConfigFile(mapArgs, mapMultiArgs); // Must be done after processing datadir
if (mapArgs.count("-?") || mapArgs.count("--help"))
{
string beta = VERSION_IS_BETA ? _(" beta") : "";
string strUsage = string() +
_("Bitcoin version") + " " + FormatVersion(VERSION) + pszSubVer + beta + "\n\n" +
_("Bitcoin version") + " " + FormatFullVersion() + "\n\n" +
_("Usage:") + "\t\t\t\t\t\t\t\t\t\t\n" +
" bitcoin [options] \t " + "\n" +
" bitcoin [options] <command> [params]\t " + _("Send command to -server or bitcoind\n") +
@@ -168,17 +167,31 @@ bool AppInit2(int argc, char* argv[])
" bitcoin [options] help <command> \t\t " + _("Get help for a command\n") +
_("Options:\n") +
" -conf=<file> \t\t " + _("Specify configuration file (default: bitcoin.conf)\n") +
" -pid=<file> \t\t " + _("Specify pid file (default: bitcoind.pid)\n") +
" -gen \t\t " + _("Generate coins\n") +
" -gen=0 \t\t " + _("Don't generate coins\n") +
" -min \t\t " + _("Start minimized\n") +
" -datadir=<dir> \t\t " + _("Specify data directory\n") +
" -timeout=<n> \t " + _("Specify connection timeout (in milliseconds)\n") +
" -proxy=<ip:port> \t " + _("Connect through socks4 proxy\n") +
" -dns \t " + _("Allow DNS lookups for addnode and connect\n") +
" -addnode=<ip> \t " + _("Add a node to connect to\n") +
" -connect=<ip> \t\t " + _("Connect only to the specified node\n") +
" -nolisten \t " + _("Don't accept connections from outside") +
" -nolisten \t " + _("Don't accept connections from outside\n") +
#ifdef USE_UPNP
#if USE_UPNP
" -noupnp \t " + _("Don't attempt to use UPnP to map the listening port\n") +
#else
" -upnp \t " + _("Attempt to use UPnP to map the listening port\n") +
#endif
#endif
" -paytxfee=<amt> \t " + _("Fee per KB to add to transactions you send\n") +
#ifdef GUI
" -server \t\t " + _("Accept command line and JSON-RPC commands\n") +
#endif
#ifndef __WXMSW__
" -daemon \t\t " + _("Run in the background as a daemon and accept commands\n") +
#endif
" -testnet \t\t " + _("Use the test network\n") +
" -rpcuser=<user> \t " + _("Username for JSON-RPC connections\n") +
" -rpcpassword=<pw>\t " + _("Password for JSON-RPC connections\n") +
@@ -212,13 +225,34 @@ bool AppInit2(int argc, char* argv[])
}
fDebug = GetBoolArg("-debug");
fAllowDNS = GetBoolArg("-dns");
#ifndef __WXMSW__
fDaemon = GetBoolArg("-daemon");
#else
fDaemon = false;
#endif
if (fDaemon)
fServer = true;
else
fServer = GetBoolArg("-server");
/* force fServer when running without GUI */
#ifndef GUI
fServer = true;
#endif
fPrintToConsole = GetBoolArg("-printtoconsole");
fPrintToDebugger = GetBoolArg("-printtodebugger");
fTestNet = GetBoolArg("-testnet");
fNoListen = GetBoolArg("-nolisten");
fLogTimestamps = GetBoolArg("-logtimestamps");
for (int i = 1; i < argc; i++)
if (!IsSwitchChar(argv[i][0]))
fCommandLine = true;
if (fCommandLine)
{
@@ -226,10 +260,32 @@ bool AppInit2(int argc, char* argv[])
exit(ret);
}
#ifndef __WXMSW__
if (fDaemon)
{
// Daemonize
pid_t pid = fork();
if (pid < 0)
{
fprintf(stderr, "Error: fork() returned %d errno %d\n", pid, errno);
return false;
}
if (pid > 0)
{
CreatePidFile(GetPidFile(), pid);
return true;
}
pid_t sid = setsid();
if (sid < 0)
fprintf(stderr, "Error: setsid() returned %d errno %d\n", sid, errno);
}
#endif
if (!fDebug && !pszSetDataDir[0])
ShrinkDebugFile();
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
printf("Bitcoin version %s%s%s\n", FormatVersion(VERSION).c_str(), pszSubVer, VERSION_IS_BETA ? _(" beta") : "");
printf("Bitcoin version %s\n", FormatFullVersion().c_str());
#ifdef GUI
printf("OS version %s\n", ((string)wxGetOsDescription()).c_str());
printf("System default language is %d %s\n", g_locale.GetSystemLanguage(), ((string)g_locale.GetSysName()).c_str());
@@ -288,7 +344,7 @@ bool AppInit2(int argc, char* argv[])
// Make sure only a single bitcoin process is using the data directory.
string strLockFile = GetDataDir() + "/.lock";
FILE* file = fopen(strLockFile.c_str(), "a"); // empty lock file; created if it doesn't exist.
fclose(file);
if (file) fclose(file);
static boost::interprocess::file_lock lock(strLockFile.c_str());
if (!lock.try_lock())
{
@@ -330,14 +386,28 @@ bool AppInit2(int argc, char* argv[])
printf("Loading wallet...\n");
nStart = GetTimeMillis();
bool fFirstRun;
if (!LoadWallet(fFirstRun))
pwalletMain = new CWallet("wallet.dat");
if (!pwalletMain->LoadWallet(fFirstRun))
strErrors += _("Error loading wallet.dat \n");
printf(" wallet %15"PRI64d"ms\n", GetTimeMillis() - nStart);
RegisterWallet(pwalletMain);
CBlockIndex *pindexRescan = pindexBest;
if (GetBoolArg("-rescan"))
pindexRescan = pindexGenesisBlock;
else
{
CWalletDB walletdb("wallet.dat");
CBlockLocator locator;
if (walletdb.ReadBestBlock(locator))
pindexRescan = locator.GetBlockIndex();
}
if (pindexBest != pindexRescan)
{
printf("Rescanning last %i blocks (from block %i)...\n", pindexBest->nHeight - pindexRescan->nHeight, pindexRescan->nHeight);
nStart = GetTimeMillis();
ScanForWalletTransactions(pindexGenesisBlock);
pwalletMain->ScanForWalletTransactions(pindexRescan, true);
printf(" rescan %15"PRI64d"ms\n", GetTimeMillis() - nStart);
}
@@ -346,10 +416,11 @@ bool AppInit2(int argc, char* argv[])
//// debug print
printf("mapBlockIndex.size() = %d\n", mapBlockIndex.size());
printf("nBestHeight = %d\n", nBestHeight);
printf("mapKeys.size() = %d\n", mapKeys.size());
printf("mapKeys.size() = %d\n", pwalletMain->mapKeys.size());
printf("setKeyPool.size() = %d\n", pwalletMain->setKeyPool.size());
printf("mapPubKeys.size() = %d\n", mapPubKeys.size());
printf("mapWallet.size() = %d\n", mapWallet.size());
printf("mapAddressBook.size() = %d\n", mapAddressBook.size());
printf("mapWallet.size() = %d\n", pwalletMain->mapWallet.size());
printf("mapAddressBook.size() = %d\n", pwalletMain->mapAddressBook.size());
if (!strErrors.empty())
{
@@ -358,7 +429,7 @@ bool AppInit2(int argc, char* argv[])
}
// Add wallet transactions that aren't already in a block to mapTransactions
ReacceptWalletTransactions();
pwalletMain->ReacceptWalletTransactions();
//
// Parameters
@@ -369,6 +440,13 @@ bool AppInit2(int argc, char* argv[])
return false;
}
if (mapArgs.count("-timeout"))
{
int nNewTimeout = GetArg("-timeout", 5000);
if (nNewTimeout > 0 && nNewTimeout < 600000)
nConnectTimeout = nNewTimeout;
}
if (mapArgs.count("-printblock"))
{
string strMatch = mapArgs["-printblock"];
@@ -407,15 +485,20 @@ bool AppInit2(int argc, char* argv[])
if (mapArgs.count("-addnode"))
{
foreach(string strAddr, mapMultiArgs["-addnode"])
BOOST_FOREACH(string strAddr, mapMultiArgs["-addnode"])
{
CAddress addr(strAddr, NODE_NETWORK);
CAddress addr(strAddr, fAllowDNS);
addr.nTime = 0; // so it won't relay unless successfully connected
if (addr.IsValid())
AddAddress(addr);
}
}
if (GetBoolArg("-nodnsseed"))
printf("DNS seeding disabled\n");
else
DNSAddressSeed();
if (mapArgs.count("-paytxfee"))
{
if (!ParseMoney(mapArgs["-paytxfee"], nTransactionFee))
@@ -427,6 +510,17 @@ bool AppInit2(int argc, char* argv[])
wxMessageBox(_("Warning: -paytxfee is set very high. This is the transaction fee you will pay if you send a transaction."), "Bitcoin", wxOK | wxICON_EXCLAMATION);
}
if (fHaveUPnP)
{
#if USE_UPNP
if (GetBoolArg("-noupnp"))
fUseUPnP = false;
#else
if (GetBoolArg("-upnp"))
fUseUPnP = true;
#endif
}
//
// Create the main window and start the node
//
@@ -443,7 +537,7 @@ bool AppInit2(int argc, char* argv[])
if (!CreateThread(StartNode, NULL))
wxMessageBox("Error: CreateThread(StartNode) failed", "Bitcoin");
if (GetBoolArg("-server") || fDaemon)
if (fServer)
CreateThread(ThreadRPCServer, NULL);
#if defined(__WXMSW__) && defined(GUI)
@@ -451,5 +545,10 @@ bool AppInit2(int argc, char* argv[])
SetStartOnSystemStartup(true);
#endif
#ifndef GUI
while (1)
Sleep(5000);
#endif
return true;
}

View File

@@ -1,7 +1,13 @@
// Copyright (c) 2009-2010 Satoshi Nakamoto
// Distributed under the MIT/X11 software license, see the accompanying
// file license.txt or http://www.opensource.org/licenses/mit-license.php.
#ifndef BITCOIN_INIT_H
#define BITCOIN_INIT_H
extern CWallet* pwalletMain;
void Shutdown(void* parg);
bool AppInit(int argc, char* argv[]);
bool AppInit2(int argc, char* argv[]);
#endif

View File

@@ -3,6 +3,12 @@
// file license.txt or http://www.opensource.org/licenses/mit-license.php.
#include "headers.h"
#include "irc.h"
#include "net.h"
#include "strlcpy.h"
using namespace std;
using namespace boost;
int nGotIRCAddresses = 0;
bool fGotExternalIP = false;
@@ -41,7 +47,7 @@ bool DecodeAddress(string str, CAddress& addr)
return false;
memcpy(&tmp, &vch[0], sizeof(tmp));
addr = CAddress(tmp.ip, tmp.port, NODE_NETWORK);
addr = CAddress(tmp.ip, ntohs(tmp.port), NODE_NETWORK);
return true;
}
@@ -215,25 +221,15 @@ bool GetIPFromIRC(SOCKET hSocket, string strMyName, unsigned int& ipRet)
return false;
string strHost = str.substr(str.rfind("@")+1);
unsigned int a=0, b=0, c=0, d=0;
if (sscanf(strHost.c_str(), "%u.%u.%u.%u", &a, &b, &c, &d) == 4 &&
inet_addr(strHost.c_str()) != INADDR_NONE)
{
printf("GetIPFromIRC() userhost is IP %s\n", strHost.c_str());
ipRet = CAddress(strHost).ip;
}
else
{
// Hybrid IRC used by lfnet always returns IP when you userhost yourself,
// but in case another IRC is ever used this should work.
printf("GetIPFromIRC() got userhost %s\n", strHost.c_str());
if (fUseProxy)
return false;
struct hostent* phostent = gethostbyname(strHost.c_str());
if (!phostent || !phostent->h_addr_list || !phostent->h_addr_list[0])
return false;
ipRet = *(u_long*)phostent->h_addr_list[0];
}
// Hybrid IRC used by lfnet always returns IP when you userhost yourself,
// but in case another IRC is ever used this should work.
printf("GetIPFromIRC() got userhost %s\n", strHost.c_str());
if (fUseProxy)
return false;
CAddress addr(strHost, 0, true);
if (!addr.IsValid())
return false;
ipRet = addr.ip;
return true;
}
@@ -272,13 +268,13 @@ void ThreadIRCSeed2(void* parg)
while (!fShutdown)
{
//CAddress addrConnect("216.155.130.130:6667"); // chat.freenode.net
CAddress addrConnect("92.243.23.21:6667"); // irc.lfnet.org
CAddress addrConnect("92.243.23.21", 6667); // irc.lfnet.org
if (!fTOR)
{
//struct hostent* phostent = gethostbyname("chat.freenode.net");
struct hostent* phostent = gethostbyname("irc.lfnet.org");
if (phostent && phostent->h_addr_list && phostent->h_addr_list[0])
addrConnect = CAddress(*(u_long*)phostent->h_addr_list[0], htons(6667));
CAddress addrIRC("irc.lfnet.org", 6667, true);
if (addrIRC.IsValid())
addrConnect = addrIRC;
}
SOCKET hSocket;
@@ -346,9 +342,16 @@ void ThreadIRCSeed2(void* parg)
Send(hSocket, strprintf("NICK %s\r", strMyName.c_str()).c_str());
}
}
Send(hSocket, fTestNet ? "JOIN #bitcoinTEST\r" : "JOIN #bitcoin\r");
Send(hSocket, fTestNet ? "WHO #bitcoinTEST\r" : "WHO #bitcoin\r");
if (fTestNet) {
Send(hSocket, "JOIN #bitcoinTEST\r");
Send(hSocket, "WHO #bitcoinTEST\r");
} else {
// randomly join #bitcoin00-#bitcoin99
int channel_number = GetRandInt(100);
Send(hSocket, strprintf("JOIN #bitcoin%02d\r", channel_number).c_str());
Send(hSocket, strprintf("WHO #bitcoin%02d\r", channel_number).c_str());
}
int64 nStart = GetTime();
string strLine;
@@ -390,7 +393,7 @@ void ThreadIRCSeed2(void* parg)
{
addr.nTime = GetAdjustedTime();
if (AddAddress(addr, 51 * 60))
printf("IRC got new address\n");
printf("IRC got new address: %s\n", addr.ToString().c_str());
nGotIRCAddresses++;
}
else

View File

@@ -1,9 +1,13 @@
// Copyright (c) 2009-2010 Satoshi Nakamoto
// Distributed under the MIT/X11 software license, see the accompanying
// file license.txt or http://www.opensource.org/licenses/mit-license.php.
#ifndef BITCOIN_IRC_H
#define BITCOIN_IRC_H
bool RecvLine(SOCKET hSocket, string& strLine);
bool RecvLine(SOCKET hSocket, std::string& strLine);
void ThreadIRCSeed(void* parg);
extern int nGotIRCAddresses;
extern bool fGotExternalIP;
#endif

View File

@@ -1,7 +1,12 @@
// Copyright (c) 2009-2010 Satoshi Nakamoto
// Distributed under the MIT/X11 software license, see the accompanying
// file license.txt or http://www.opensource.org/licenses/mit-license.php.
#ifndef BITCOIN_KEY_H
#define BITCOIN_KEY_H
#include <openssl/ec.h>
#include <openssl/ecdsa.h>
#include <openssl/obj_mac.h>
// secp160k1
// const unsigned int PRIVATE_KEY_SIZE = 192;
@@ -36,7 +41,7 @@ public:
// secure_allocator is defined in serialize.h
typedef vector<unsigned char, secure_allocator<unsigned char> > CPrivKey;
typedef std::vector<unsigned char, secure_allocator<unsigned char> > CPrivKey;
@@ -109,7 +114,7 @@ public:
return vchPrivKey;
}
bool SetPubKey(const vector<unsigned char>& vchPubKey)
bool SetPubKey(const std::vector<unsigned char>& vchPubKey)
{
const unsigned char* pbegin = &vchPubKey[0];
if (!o2i_ECPublicKey(&pkey, &pbegin, vchPubKey.size()))
@@ -118,19 +123,19 @@ public:
return true;
}
vector<unsigned char> GetPubKey() const
std::vector<unsigned char> GetPubKey() const
{
unsigned int nSize = i2o_ECPublicKey(pkey, NULL);
if (!nSize)
throw key_error("CKey::GetPubKey() : i2o_ECPublicKey failed");
vector<unsigned char> vchPubKey(nSize, 0);
std::vector<unsigned char> vchPubKey(nSize, 0);
unsigned char* pbegin = &vchPubKey[0];
if (i2o_ECPublicKey(pkey, &pbegin) != nSize)
throw key_error("CKey::GetPubKey() : i2o_ECPublicKey returned unexpected size");
return vchPubKey;
}
bool Sign(uint256 hash, vector<unsigned char>& vchSig)
bool Sign(uint256 hash, std::vector<unsigned char>& vchSig)
{
vchSig.clear();
unsigned char pchSig[10000];
@@ -142,7 +147,7 @@ public:
return true;
}
bool Verify(uint256 hash, const vector<unsigned char>& vchSig)
bool Verify(uint256 hash, const std::vector<unsigned char>& vchSig)
{
// -1 = error, 0 = bad sig, 1 = good
if (ECDSA_verify(0, (unsigned char*)&hash, sizeof(hash), &vchSig[0], vchSig.size(), pkey) != 1)
@@ -150,7 +155,7 @@ public:
return true;
}
static bool Sign(const CPrivKey& vchPrivKey, uint256 hash, vector<unsigned char>& vchSig)
static bool Sign(const CPrivKey& vchPrivKey, uint256 hash, std::vector<unsigned char>& vchSig)
{
CKey key;
if (!key.SetPrivKey(vchPrivKey))
@@ -158,7 +163,7 @@ public:
return key.Sign(hash, vchSig);
}
static bool Verify(const vector<unsigned char>& vchPubKey, uint256 hash, const vector<unsigned char>& vchSig)
static bool Verify(const std::vector<unsigned char>& vchPubKey, uint256 hash, const std::vector<unsigned char>& vchSig)
{
CKey key;
if (!key.SetPubKey(vchPubKey))
@@ -166,3 +171,5 @@ public:
return key.Verify(hash, vchSig);
}
};
#endif

33
src/keystore.cpp Normal file
View File

@@ -0,0 +1,33 @@
// Copyright (c) 2009-2011 Satoshi Nakamoto & Bitcoin developers
// Distributed under the MIT/X11 software license, see the accompanying
// file license.txt or http://www.opensource.org/licenses/mit-license.php.
#include "headers.h"
#include "db.h"
//////////////////////////////////////////////////////////////////////////////
//
// mapKeys
//
std::vector<unsigned char> CKeyStore::GenerateNewKey()
{
RandAddSeedPerfmon();
CKey key;
key.MakeNewKey();
if (!AddKey(key))
throw std::runtime_error("GenerateNewKey() : AddKey failed");
return key.GetPubKey();
}
bool CKeyStore::AddKey(const CKey& key)
{
CRITICAL_BLOCK(cs_mapKeys)
{
mapKeys[key.GetPubKey()] = key.GetPrivKey();
mapPubKeys[Hash160(key.GetPubKey())] = key.GetPubKey();
}
}

30
src/keystore.h Normal file
View File

@@ -0,0 +1,30 @@
// Copyright (c) 2009-2011 Satoshi Nakamoto & Bitcoin developers
// Distributed under the MIT/X11 software license, see the accompanying
// file license.txt or http://www.opensource.org/licenses/mit-license.php.
#ifndef BITCOIN_KEYSTORE_H
#define BITCOIN_KEYSTORE_H
class CKeyStore
{
public:
std::map<std::vector<unsigned char>, CPrivKey> mapKeys;
mutable CCriticalSection cs_mapKeys;
virtual bool AddKey(const CKey& key);
bool HaveKey(const std::vector<unsigned char> &vchPubKey) const
{
return (mapKeys.count(vchPubKey) > 0);
}
bool GetPrivKey(const std::vector<unsigned char> &vchPubKey, CPrivKey& keyOut) const
{
std::map<std::vector<unsigned char>, CPrivKey>::const_iterator mi = mapKeys.find(vchPubKey);
if (mi != mapKeys.end())
{
keyOut = (*mi).second;
return true;
}
return false;
}
std::vector<unsigned char> GenerateNewKey();
};
#endif

File diff suppressed because it is too large Load Diff

View File

@@ -1,27 +1,47 @@
// Copyright (c) 2009-2010 Satoshi Nakamoto
// Distributed under the MIT/X11 software license, see the accompanying
// file license.txt or http://www.opensource.org/licenses/mit-license.php.
#ifndef BITCOIN_MAIN_H
#define BITCOIN_MAIN_H
#include "bignum.h"
#include "net.h"
#include "key.h"
#include "script.h"
#include "db.h"
#include <list>
class COutPoint;
class CInPoint;
class CDiskTxPos;
class CCoinBase;
class CTxIn;
class CTxOut;
class CTransaction;
class CBlock;
class CBlockIndex;
class CWalletTx;
class CWallet;
class CKeyItem;
class CReserveKey;
class CWalletDB;
class CMessageHeader;
class CAddress;
class CInv;
class CRequestTracker;
class CNode;
class CBlockIndex;
static const unsigned int MAX_BLOCK_SIZE = 1000000;
static const unsigned int MAX_BLOCK_SIZE_GEN = MAX_BLOCK_SIZE/2;
static const int MAX_BLOCK_SIGOPS = MAX_BLOCK_SIZE/50;
static const int64 COIN = 100000000;
static const int64 CENT = 1000000;
static const int64 MIN_TX_FEE = 50000;
static const int64 MIN_RELAY_TX_FEE = 10000;
static const int64 MAX_MONEY = 21000000 * COIN;
inline bool MoneyRange(int64 nValue) { return (nValue >= 0 && nValue <= MAX_MONEY); }
static const int COINBASE_MATURITY = 100;
#ifdef USE_UPNP
static const int fHaveUPnP = true;
#else
static const int fHaveUPnP = false;
#endif
@@ -29,7 +49,7 @@ static const int COINBASE_MATURITY = 100;
extern CCriticalSection cs_main;
extern map<uint256, CBlockIndex*> mapBlockIndex;
extern std::map<uint256, CBlockIndex*> mapBlockIndex;
extern uint256 hashGenesisBlock;
extern CBigNum bnProofOfWorkLimit;
extern CBlockIndex* pindexGenesisBlock;
@@ -39,13 +59,11 @@ extern CBigNum bnBestInvalidWork;
extern uint256 hashBestChain;
extern CBlockIndex* pindexBest;
extern unsigned int nTransactionsUpdated;
extern map<uint256, int> mapRequestCount;
extern CCriticalSection cs_mapRequestCount;
extern map<string, string> mapAddressBook;
extern CCriticalSection cs_mapAddressBook;
extern vector<unsigned char> vchDefaultKey;
extern double dHashesPerSec;
extern int64 nHPSTimerStart;
extern int64 nTimeBestReceived;
extern CCriticalSection cs_setpwalletRegistered;
extern std::set<CWallet*> setpwalletRegistered;
// Settings
extern int fGenerateBitcoins;
@@ -55,43 +73,34 @@ extern int fLimitProcessors;
extern int nLimitProcessors;
extern int fMinimizeToTray;
extern int fMinimizeOnClose;
extern int fUseUPnP;
class CReserveKey;
class CTxDB;
class CTxIndex;
void RegisterWallet(CWallet* pwalletIn);
void UnregisterWallet(CWallet* pwalletIn);
bool CheckDiskSpace(uint64 nAdditionalBytes=0);
FILE* OpenBlockFile(unsigned int nFile, unsigned int nBlockPos, const char* pszMode="rb");
FILE* AppendBlockFile(unsigned int& nFileRet);
bool AddKey(const CKey& key);
vector<unsigned char> GenerateNewKey();
bool AddToWallet(const CWalletTx& wtxIn);
void WalletUpdateSpent(const COutPoint& prevout);
int ScanForWalletTransactions(CBlockIndex* pindexStart);
void ReacceptWalletTransactions();
bool LoadBlockIndex(bool fAllowNew=true);
void PrintBlockTree();
bool ProcessMessages(CNode* pfrom);
bool ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv);
bool SendMessages(CNode* pto, bool fSendTrickle);
int64 GetBalance();
bool CreateTransaction(CScript scriptPubKey, int64 nValue, CWalletTx& wtxNew, CReserveKey& reservekey, int64& nFeeRet);
bool CommitTransaction(CWalletTx& wtxNew, CReserveKey& reservekey);
bool BroadcastTransaction(CWalletTx& wtxNew);
string SendMoney(CScript scriptPubKey, int64 nValue, CWalletTx& wtxNew, bool fAskFee=false);
string SendMoneyToBitcoinAddress(string strAddress, int64 nValue, CWalletTx& wtxNew, bool fAskFee=false);
void GenerateBitcoins(bool fGenerate);
void ThreadBitcoinMiner(void* parg);
void GenerateBitcoins(bool fGenerate, CWallet* pwallet);
CBlock* CreateNewBlock(CReserveKey& reservekey);
void IncrementExtraNonce(CBlock* pblock, CBlockIndex* pindexPrev, unsigned int& nExtraNonce, int64& nPrevTime);
void FormatHashBuffers(CBlock* pblock, char* pmidstate, char* pdata, char* phash1);
bool CheckWork(CBlock* pblock, CReserveKey& reservekey);
void BitcoinMiner();
bool CheckWork(CBlock* pblock, CWallet& wallet, CReserveKey& reservekey);
bool CheckProofOfWork(uint256 hash, unsigned int nBits);
int GetTotalBlocksEstimate();
bool IsInitialBlockDownload();
string GetWarnings(string strFor);
std::string GetWarnings(std::string strFor);
@@ -104,6 +113,23 @@ string GetWarnings(string strFor);
bool GetWalletFile(CWallet* pwallet, std::string &strWalletFileOut);
template<typename T>
bool WriteSetting(const std::string& strKey, const T& value)
{
bool fOk = false;
BOOST_FOREACH(CWallet* pwallet, setpwalletRegistered)
{
std::string strWalletFile;
if (!GetWalletFile(pwallet, strWalletFile))
continue;
fOk |= CWalletDB(strWalletFile).WriteSetting(strKey, value);
}
return fOk;
}
class CDiskTxPos
{
public:
@@ -139,7 +165,7 @@ public:
return !(a == b);
}
string ToString() const
std::string ToString() const
{
if (IsNull())
return strprintf("null");
@@ -198,7 +224,7 @@ public:
return !(a == b);
}
string ToString() const
std::string ToString() const
{
return strprintf("COutPoint(%s, %d)", hash.ToString().substr(0,10).c_str(), n);
}
@@ -267,9 +293,9 @@ public:
return !(a == b);
}
string ToString() const
std::string ToString() const
{
string str;
std::string str;
str += strprintf("CTxIn(");
str += prevout.ToString();
if (prevout.IsNull())
@@ -286,9 +312,6 @@ public:
{
printf("%s\n", ToString().c_str());
}
bool IsMine() const;
int64 GetDebit() const;
};
@@ -337,36 +360,6 @@ public:
return SerializeHash(*this);
}
bool IsMine() const
{
return ::IsMine(scriptPubKey);
}
int64 GetCredit() const
{
if (!MoneyRange(nValue))
throw runtime_error("CTxOut::GetCredit() : value out of range");
return (IsMine() ? nValue : 0);
}
bool IsChange() const
{
// On a debit transaction, a txout that's mine but isn't in the address book is change
vector<unsigned char> vchPubKey;
if (ExtractPubKey(scriptPubKey, true, vchPubKey))
CRITICAL_BLOCK(cs_mapAddressBook)
if (!mapAddressBook.count(PubKeyToAddress(vchPubKey)))
return true;
return false;
}
int64 GetChange() const
{
if (!MoneyRange(nValue))
throw runtime_error("CTxOut::GetChange() : value out of range");
return (IsChange() ? nValue : 0);
}
friend bool operator==(const CTxOut& a, const CTxOut& b)
{
return (a.nValue == b.nValue &&
@@ -378,7 +371,7 @@ public:
return !(a == b);
}
string ToString() const
std::string ToString() const
{
if (scriptPubKey.size() < 6)
return "CTxOut(error)";
@@ -402,8 +395,8 @@ class CTransaction
{
public:
int nVersion;
vector<CTxIn> vin;
vector<CTxOut> vout;
std::vector<CTxIn> vin;
std::vector<CTxOut> vout;
unsigned int nLockTime;
@@ -450,7 +443,7 @@ public:
nBlockTime = GetAdjustedTime();
if ((int64)nLockTime < (nLockTime < 500000000 ? (int64)nBlockHeight : nBlockTime))
return true;
foreach(const CTxIn& txin, vin)
BOOST_FOREACH(const CTxIn& txin, vin)
if (!txin.IsFinal())
return false;
return true;
@@ -493,93 +486,51 @@ public:
int GetSigOpCount() const
{
int n = 0;
foreach(const CTxIn& txin, vin)
BOOST_FOREACH(const CTxIn& txin, vin)
n += txin.scriptSig.GetSigOpCount();
foreach(const CTxOut& txout, vout)
BOOST_FOREACH(const CTxOut& txout, vout)
n += txout.scriptPubKey.GetSigOpCount();
return n;
}
bool IsStandard() const
{
foreach(const CTxIn& txin, vin)
BOOST_FOREACH(const CTxIn& txin, vin)
if (!txin.scriptSig.IsPushOnly())
return error("nonstandard txin: %s", txin.scriptSig.ToString().c_str());
foreach(const CTxOut& txout, vout)
BOOST_FOREACH(const CTxOut& txout, vout)
if (!::IsStandard(txout.scriptPubKey))
return error("nonstandard txout: %s", txout.scriptPubKey.ToString().c_str());
return true;
}
bool IsMine() const
{
foreach(const CTxOut& txout, vout)
if (txout.IsMine())
return true;
return false;
}
bool IsFromMe() const
{
return (GetDebit() > 0);
}
int64 GetDebit() const
{
int64 nDebit = 0;
foreach(const CTxIn& txin, vin)
{
nDebit += txin.GetDebit();
if (!MoneyRange(nDebit))
throw runtime_error("CTransaction::GetDebit() : value out of range");
}
return nDebit;
}
int64 GetCredit() const
{
int64 nCredit = 0;
foreach(const CTxOut& txout, vout)
{
nCredit += txout.GetCredit();
if (!MoneyRange(nCredit))
throw runtime_error("CTransaction::GetCredit() : value out of range");
}
return nCredit;
}
int64 GetChange() const
{
if (IsCoinBase())
return 0;
int64 nChange = 0;
foreach(const CTxOut& txout, vout)
{
nChange += txout.GetChange();
if (!MoneyRange(nChange))
throw runtime_error("CTransaction::GetChange() : value out of range");
}
return nChange;
}
int64 GetValueOut() const
{
int64 nValueOut = 0;
foreach(const CTxOut& txout, vout)
BOOST_FOREACH(const CTxOut& txout, vout)
{
nValueOut += txout.nValue;
if (!MoneyRange(txout.nValue) || !MoneyRange(nValueOut))
throw runtime_error("CTransaction::GetValueOut() : value out of range");
throw std::runtime_error("CTransaction::GetValueOut() : value out of range");
}
return nValueOut;
}
int64 GetMinFee(unsigned int nBlockSize=1, bool fAllowFree=true) const
static bool AllowFree(double dPriority)
{
// Base fee is 1 cent per kilobyte
// Large (in bytes) low-priority (new, small-coin) transactions
// need a fee.
return dPriority > COIN * 144 / 250;
}
int64 GetMinFee(unsigned int nBlockSize=1, bool fAllowFree=true, bool fForRelay=false) const
{
// Base fee is either MIN_TX_FEE or MIN_RELAY_TX_FEE
int64 nBaseFee = fForRelay ? MIN_RELAY_TX_FEE : MIN_TX_FEE;
unsigned int nBytes = ::GetSerializeSize(*this, SER_NETWORK);
unsigned int nNewBlockSize = nBlockSize + nBytes;
int64 nMinFee = (1 + (int64)nBytes / 1000) * CENT;
int64 nMinFee = (1 + (int64)nBytes / 1000) * nBaseFee;
if (fAllowFree)
{
@@ -598,11 +549,11 @@ public:
}
}
// To limit dust spam, require a 0.01 fee if any output is less than 0.01
if (nMinFee < CENT)
foreach(const CTxOut& txout, vout)
// To limit dust spam, require MIN_TX_FEE/MIN_RELAY_TX_FEE if any output is less than 0.01
if (nMinFee < nBaseFee)
BOOST_FOREACH(const CTxOut& txout, vout)
if (txout.nValue < CENT)
nMinFee = CENT;
nMinFee = nBaseFee;
// Raise the price as the block approaches full
if (nBlockSize != 1 && nNewBlockSize >= MAX_BLOCK_SIZE_GEN/2)
@@ -653,9 +604,9 @@ public:
}
string ToString() const
std::string ToString() const
{
string str;
std::string str;
str += strprintf("CTransaction(hash=%s, ver=%d, vin.size=%d, vout.size=%d, nLockTime=%d)\n",
GetHash().ToString().substr(0,10).c_str(),
nVersion,
@@ -679,16 +630,12 @@ public:
bool ReadFromDisk(CTxDB& txdb, COutPoint prevout);
bool ReadFromDisk(COutPoint prevout);
bool DisconnectInputs(CTxDB& txdb);
bool ConnectInputs(CTxDB& txdb, map<uint256, CTxIndex>& mapTestPool, CDiskTxPos posThisTx,
bool ConnectInputs(CTxDB& txdb, std::map<uint256, CTxIndex>& mapTestPool, CDiskTxPos posThisTx,
CBlockIndex* pindexBlock, int64& nFees, bool fBlock, bool fMiner, int64 nMinFee=0);
bool ClientConnectInputs();
bool CheckTransaction() const;
bool AcceptToMemoryPool(CTxDB& txdb, bool fCheckInputs=true, bool* pfMissingInputs=NULL);
bool AcceptToMemoryPool(bool fCheckInputs=true, bool* pfMissingInputs=NULL)
{
CTxDB txdb("r");
return AcceptToMemoryPool(txdb, fCheckInputs, pfMissingInputs);
}
bool AcceptToMemoryPool(bool fCheckInputs=true, bool* pfMissingInputs=NULL);
protected:
bool AddToMemoryPoolUnchecked();
public:
@@ -706,7 +653,7 @@ class CMerkleTx : public CTransaction
{
public:
uint256 hashBlock;
vector<uint256> vMerkleBranch;
std::vector<uint256> vMerkleBranch;
int nIndex;
// memory only
@@ -730,6 +677,7 @@ public:
fMerkleVerified = false;
}
IMPLEMENT_SERIALIZE
(
nSerSize += SerReadWrite(s, *(CTransaction*)this, nType, nVersion, ser_action);
@@ -746,202 +694,7 @@ public:
bool IsInMainChain() const { return GetDepthInMainChain() > 0; }
int GetBlocksToMaturity() const;
bool AcceptToMemoryPool(CTxDB& txdb, bool fCheckInputs=true);
bool AcceptToMemoryPool() { CTxDB txdb("r"); return AcceptToMemoryPool(txdb); }
};
//
// A transaction with a bunch of additional info that only the owner cares
// about. It includes any unrecorded transactions needed to link it back
// to the block chain.
//
class CWalletTx : public CMerkleTx
{
public:
vector<CMerkleTx> vtxPrev;
map<string, string> mapValue;
vector<pair<string, string> > vOrderForm;
unsigned int fTimeReceivedIsTxTime;
unsigned int nTimeReceived; // time received by this node
char fFromMe;
char fSpent;
string strFromAccount;
// memory only
mutable char fDebitCached;
mutable char fCreditCached;
mutable char fChangeCached;
mutable int64 nDebitCached;
mutable int64 nCreditCached;
mutable int64 nChangeCached;
// memory only UI hints
mutable unsigned int nTimeDisplayed;
mutable int nLinesDisplayed;
mutable char fConfirmedDisplayed;
CWalletTx()
{
Init();
}
CWalletTx(const CMerkleTx& txIn) : CMerkleTx(txIn)
{
Init();
}
CWalletTx(const CTransaction& txIn) : CMerkleTx(txIn)
{
Init();
}
void Init()
{
vtxPrev.clear();
mapValue.clear();
vOrderForm.clear();
fTimeReceivedIsTxTime = false;
nTimeReceived = 0;
fFromMe = false;
fSpent = false;
strFromAccount.clear();
fDebitCached = false;
fCreditCached = false;
fChangeCached = false;
nDebitCached = 0;
nCreditCached = 0;
nChangeCached = 0;
nTimeDisplayed = 0;
nLinesDisplayed = 0;
fConfirmedDisplayed = false;
}
IMPLEMENT_SERIALIZE
(
CWalletTx* pthis = const_cast<CWalletTx*>(this);
if (fRead)
pthis->Init();
nSerSize += SerReadWrite(s, *(CMerkleTx*)this, nType, nVersion, ser_action);
READWRITE(vtxPrev);
pthis->mapValue["fromaccount"] = pthis->strFromAccount;
READWRITE(mapValue);
pthis->strFromAccount = pthis->mapValue["fromaccount"];
pthis->mapValue.erase("fromaccount");
pthis->mapValue.erase("version");
READWRITE(vOrderForm);
READWRITE(fTimeReceivedIsTxTime);
READWRITE(nTimeReceived);
READWRITE(fFromMe);
READWRITE(fSpent);
)
int64 GetDebit() const
{
if (vin.empty())
return 0;
if (fDebitCached)
return nDebitCached;
nDebitCached = CTransaction::GetDebit();
fDebitCached = true;
return nDebitCached;
}
int64 GetCredit(bool fUseCache=true) const
{
// Must wait until coinbase is safely deep enough in the chain before valuing it
if (IsCoinBase() && GetBlocksToMaturity() > 0)
return 0;
// GetBalance can assume transactions in mapWallet won't change
if (fUseCache && fCreditCached)
return nCreditCached;
nCreditCached = CTransaction::GetCredit();
fCreditCached = true;
return nCreditCached;
}
int64 GetChange() const
{
if (fChangeCached)
return nChangeCached;
nChangeCached = CTransaction::GetChange();
fChangeCached = true;
return nChangeCached;
}
void GetAmounts(int64& nGenerated, list<pair<string /* address */, int64> >& listReceived,
list<pair<string /* address */, int64> >& listSent, int64& nFee, string& strSentAccount) const;
void GetAccountAmounts(const string& strAccount, int64& nGenerated, int64& nReceived,
int64& nSent, int64& nFee) const;
bool IsFromMe() const
{
return (GetDebit() > 0);
}
bool IsConfirmed() const
{
// Quick answer in most cases
if (!IsFinal())
return false;
if (GetDepthInMainChain() >= 1)
return true;
if (!IsFromMe()) // using wtx's cached debit
return false;
// If no confirmations but it's from us, we can still
// consider it confirmed if all dependencies are confirmed
map<uint256, const CMerkleTx*> mapPrev;
vector<const CMerkleTx*> vWorkQueue;
vWorkQueue.reserve(vtxPrev.size()+1);
vWorkQueue.push_back(this);
for (int i = 0; i < vWorkQueue.size(); i++)
{
const CMerkleTx* ptx = vWorkQueue[i];
if (!ptx->IsFinal())
return false;
if (ptx->GetDepthInMainChain() >= 1)
return true;
if (!ptx->IsFromMe())
return false;
if (mapPrev.empty())
foreach(const CMerkleTx& tx, vtxPrev)
mapPrev[tx.GetHash()] = &tx;
foreach(const CTxIn& txin, ptx->vin)
{
if (!mapPrev.count(txin.prevout.hash))
return false;
vWorkQueue.push_back(mapPrev[txin.prevout.hash]);
}
}
return true;
}
bool WriteToDisk()
{
return CWalletDB().WriteTx(GetHash(), *this);
}
int64 GetTxTime() const;
int GetRequestCount() const;
void AddSupportingTransactions(CTxDB& txdb);
bool AcceptWalletTransaction(CTxDB& txdb, bool fCheckInputs=true);
bool AcceptWalletTransaction() { CTxDB txdb("r"); return AcceptWalletTransaction(txdb); }
void RelayWalletTransaction(CTxDB& txdb);
void RelayWalletTransaction() { CTxDB txdb("r"); RelayWalletTransaction(txdb); }
bool AcceptToMemoryPool();
};
@@ -956,7 +709,7 @@ class CTxIndex
{
public:
CDiskTxPos pos;
vector<CDiskTxPos> vSpent;
std::vector<CDiskTxPos> vSpent;
CTxIndex()
{
@@ -998,6 +751,7 @@ public:
{
return !(a == b);
}
int GetDepthInMainChain() const;
};
@@ -1027,10 +781,10 @@ public:
unsigned int nNonce;
// network and disk
vector<CTransaction> vtx;
std::vector<CTransaction> vtx;
// memory only
mutable vector<uint256> vMerkleTree;
mutable std::vector<uint256> vMerkleTree;
CBlock()
@@ -1085,7 +839,7 @@ public:
int GetSigOpCount() const
{
int n = 0;
foreach(const CTransaction& tx, vtx)
BOOST_FOREACH(const CTransaction& tx, vtx)
n += tx.GetSigOpCount();
return n;
}
@@ -1094,14 +848,14 @@ public:
uint256 BuildMerkleTree() const
{
vMerkleTree.clear();
foreach(const CTransaction& tx, vtx)
BOOST_FOREACH(const CTransaction& tx, vtx)
vMerkleTree.push_back(tx.GetHash());
int j = 0;
for (int nSize = vtx.size(); nSize > 1; nSize = (nSize + 1) / 2)
{
for (int i = 0; i < nSize; i += 2)
{
int i2 = min(i+1, nSize-1);
int i2 = std::min(i+1, nSize-1);
vMerkleTree.push_back(Hash(BEGIN(vMerkleTree[j+i]), END(vMerkleTree[j+i]),
BEGIN(vMerkleTree[j+i2]), END(vMerkleTree[j+i2])));
}
@@ -1110,15 +864,15 @@ public:
return (vMerkleTree.empty() ? 0 : vMerkleTree.back());
}
vector<uint256> GetMerkleBranch(int nIndex) const
std::vector<uint256> GetMerkleBranch(int nIndex) const
{
if (vMerkleTree.empty())
BuildMerkleTree();
vector<uint256> vMerkleBranch;
std::vector<uint256> vMerkleBranch;
int j = 0;
for (int nSize = vtx.size(); nSize > 1; nSize = (nSize + 1) / 2)
{
int i = min(nIndex^1, nSize-1);
int i = std::min(nIndex^1, nSize-1);
vMerkleBranch.push_back(vMerkleTree[j+i]);
nIndex >>= 1;
j += nSize;
@@ -1126,11 +880,11 @@ public:
return vMerkleBranch;
}
static uint256 CheckMerkleBranch(uint256 hash, const vector<uint256>& vMerkleBranch, int nIndex)
static uint256 CheckMerkleBranch(uint256 hash, const std::vector<uint256>& vMerkleBranch, int nIndex)
{
if (nIndex == -1)
return 0;
foreach(const uint256& otherside, vMerkleBranch)
BOOST_FOREACH(const uint256& otherside, vMerkleBranch)
{
if (nIndex & 1)
hash = Hash(BEGIN(otherside), END(otherside), BEGIN(hash), END(hash));
@@ -1361,7 +1115,7 @@ public:
for (int i = 0; i < nMedianTimeSpan && pindex; i++, pindex = pindex->pprev)
*(--pbegin) = pindex->GetBlockTime();
sort(pbegin, pend);
std::sort(pbegin, pend);
return pbegin[(pend - pbegin)/2];
}
@@ -1379,7 +1133,7 @@ public:
string ToString() const
std::string ToString() const
{
return strprintf("CBlockIndex(nprev=%08x, pnext=%08x, nFile=%d, nBlockPos=%-6d nHeight=%d, merkle=%s, hashBlock=%s)",
pprev, pnext, nFile, nBlockPos, nHeight,
@@ -1448,9 +1202,9 @@ public:
}
string ToString() const
std::string ToString() const
{
string str = "CDiskBlockIndex(";
std::string str = "CDiskBlockIndex(";
str += CBlockIndex::ToString();
str += strprintf("\n hashBlock=%s, hashPrev=%s, hashNext=%s)",
GetBlockHash().ToString().c_str(),
@@ -1480,7 +1234,7 @@ public:
class CBlockLocator
{
protected:
vector<uint256> vHave;
std::vector<uint256> vHave;
public:
CBlockLocator()
@@ -1494,7 +1248,7 @@ public:
explicit CBlockLocator(uint256 hashBlock)
{
map<uint256, CBlockIndex*>::iterator mi = mapBlockIndex.find(hashBlock);
std::map<uint256, CBlockIndex*>::iterator mi = mapBlockIndex.find(hashBlock);
if (mi != mapBlockIndex.end())
Set((*mi).second);
}
@@ -1538,9 +1292,9 @@ public:
// Retrace how far back it was in the sender's branch
int nDistance = 0;
int nStep = 1;
foreach(const uint256& hash, vHave)
BOOST_FOREACH(const uint256& hash, vHave)
{
map<uint256, CBlockIndex*>::iterator mi = mapBlockIndex.find(hash);
std::map<uint256, CBlockIndex*>::iterator mi = mapBlockIndex.find(hash);
if (mi != mapBlockIndex.end())
{
CBlockIndex* pindex = (*mi).second;
@@ -1557,9 +1311,9 @@ public:
CBlockIndex* GetBlockIndex()
{
// Find the first block the caller has in the main chain
foreach(const uint256& hash, vHave)
BOOST_FOREACH(const uint256& hash, vHave)
{
map<uint256, CBlockIndex*>::iterator mi = mapBlockIndex.find(hash);
std::map<uint256, CBlockIndex*>::iterator mi = mapBlockIndex.find(hash);
if (mi != mapBlockIndex.end())
{
CBlockIndex* pindex = (*mi).second;
@@ -1573,9 +1327,9 @@ public:
uint256 GetBlockHash()
{
// Find the first block the caller has in the main chain
foreach(const uint256& hash, vHave)
BOOST_FOREACH(const uint256& hash, vHave)
{
map<uint256, CBlockIndex*>::iterator mi = mapBlockIndex.find(hash);
std::map<uint256, CBlockIndex*>::iterator mi = mapBlockIndex.find(hash);
if (mi != mapBlockIndex.end())
{
CBlockIndex* pindex = (*mi).second;
@@ -1600,114 +1354,6 @@ public:
//
// Private key that includes an expiration date in case it never gets used.
//
class CWalletKey
{
public:
CPrivKey vchPrivKey;
int64 nTimeCreated;
int64 nTimeExpires;
string strComment;
//// todo: add something to note what created it (user, getnewaddress, change)
//// maybe should have a map<string, string> property map
CWalletKey(int64 nExpires=0)
{
nTimeCreated = (nExpires ? GetTime() : 0);
nTimeExpires = nExpires;
}
IMPLEMENT_SERIALIZE
(
if (!(nType & SER_GETHASH))
READWRITE(nVersion);
READWRITE(vchPrivKey);
READWRITE(nTimeCreated);
READWRITE(nTimeExpires);
READWRITE(strComment);
)
};
//
// Account information.
// Stored in wallet with key "acc"+string account name
//
class CAccount
{
public:
vector<unsigned char> vchPubKey;
CAccount()
{
SetNull();
}
void SetNull()
{
vchPubKey.clear();
}
IMPLEMENT_SERIALIZE
(
if (!(nType & SER_GETHASH))
READWRITE(nVersion);
READWRITE(vchPubKey);
)
};
//
// Internal transfers.
// Database key is acentry<account><counter>
//
class CAccountingEntry
{
public:
string strAccount;
int64 nCreditDebit;
int64 nTime;
string strOtherAccount;
string strComment;
CAccountingEntry()
{
SetNull();
}
void SetNull()
{
nCreditDebit = 0;
nTime = 0;
strAccount.clear();
strOtherAccount.clear();
strComment.clear();
}
IMPLEMENT_SERIALIZE
(
if (!(nType & SER_GETHASH))
READWRITE(nVersion);
// Note: strAccount is serialized as part of the key, not here.
READWRITE(nCreditDebit);
READWRITE(nTime);
READWRITE(strOtherAccount);
READWRITE(strComment);
)
};
@@ -1726,16 +1372,16 @@ public:
int64 nExpiration;
int nID;
int nCancel;
set<int> setCancel;
std::set<int> setCancel;
int nMinVer; // lowest version inclusive
int nMaxVer; // highest version inclusive
set<string> setSubVer; // empty matches all
std::set<std::string> setSubVer; // empty matches all
int nPriority;
// Actions
string strComment;
string strStatusBar;
string strReserved;
std::string strComment;
std::string strStatusBar;
std::string strReserved;
IMPLEMENT_SERIALIZE
(
@@ -1774,13 +1420,13 @@ public:
strReserved.clear();
}
string ToString() const
std::string ToString() const
{
string strSetCancel;
foreach(int n, setCancel)
std::string strSetCancel;
BOOST_FOREACH(int n, setCancel)
strSetCancel += strprintf("%d ", n);
string strSetSubVer;
foreach(string str, setSubVer)
std::string strSetSubVer;
BOOST_FOREACH(std::string str, setSubVer)
strSetSubVer += "\"" + str + "\" ";
return strprintf(
"CAlert(\n"
@@ -1820,8 +1466,8 @@ public:
class CAlert : public CUnsignedAlert
{
public:
vector<unsigned char> vchMsg;
vector<unsigned char> vchSig;
std::vector<unsigned char> vchMsg;
std::vector<unsigned char> vchSig;
CAlert()
{
@@ -1863,7 +1509,7 @@ public:
return (alert.nID <= nCancel || setCancel.count(alert.nID));
}
bool AppliesTo(int nVersion, string strSubVerIn) const
bool AppliesTo(int nVersion, std::string strSubVerIn) const
{
return (IsInEffect() &&
nMinVer <= nVersion && nVersion <= nMaxVer &&
@@ -1919,11 +1565,9 @@ public:
extern map<uint256, CTransaction> mapTransactions;
extern map<uint256, CWalletTx> mapWallet;
extern vector<uint256> vWalletUpdated;
extern CCriticalSection cs_mapWallet;
extern map<vector<unsigned char>, CPrivKey> mapKeys;
extern map<uint160, vector<unsigned char> > mapPubKeys;
extern CCriticalSection cs_mapKeys;
extern CKey keyUser;
extern std::map<uint256, CTransaction> mapTransactions;
extern std::map<uint160, std::vector<unsigned char> > mapPubKeys;
extern CCriticalSection cs_mapPubKeys;
#endif

View File

@@ -2,18 +2,17 @@
# Distributed under the MIT/X11 software license, see the accompanying
# file license.txt or http://www.opensource.org/licenses/mit-license.php.
INCLUDEPATHS= \
-I"C:\boost-1.43.0-mgw" \
-I"C:\db-4.7.25.NC-mgw\build_unix" \
-I"C:\openssl-1.0.0c-mgw\include" \
-I"C:\openssl-1.0.0d-mgw\include" \
-I"C:\wxWidgets-2.9.1-mgw\lib\gcc_lib\mswud" \
-I"C:\wxWidgets-2.9.1-mgw\include"
LIBPATHS= \
-L"C:\boost-1.43.0-mgw\stage\lib" \
-L"C:\db-4.7.25.NC-mgw\build_unix" \
-L"C:\openssl-1.0.0c-mgw" \
-L"C:\openssl-1.0.0d-mgw" \
-L"C:\wxWidgets-2.9.1-mgw\lib\gcc_lib"
WXLIBS= \
@@ -25,14 +24,33 @@ LIBS= \
-l boost_program_options-mgw45-mt-s-1_43 \
-l boost_thread-mgw45-mt-s-1_43 \
-l db_cxx \
-l eay32 \
-l kernel32 -l user32 -l gdi32 -l comdlg32 -l winspool -l winmm -l shell32 -l comctl32 -l ole32 -l oleaut32 -l uuid -l rpcrt4 -l advapi32 -l ws2_32 -l shlwapi
-l ssl \
-l crypto
DEFS=-DWIN32 -D__WXMSW__ -D_WINDOWS -DNOPCH
DEFS=-DWIN32 -D__WXMSW__ -D_WINDOWS -DNOPCH -DUSE_SSL
DEBUGFLAGS=-g -D__WXDEBUG__
CFLAGS=-mthreads -O2 -w -Wno-invalid-offsetof -Wformat $(DEBUGFLAGS) $(DEFS) $(INCLUDEPATHS)
HEADERS=headers.h strlcpy.h serialize.h uint256.h util.h key.h bignum.h base58.h \
script.h db.h net.h irc.h main.h rpc.h uibase.h ui.h noui.h init.h
script.h db.h net.h irc.h keystore.h main.h wallet.h rpc.h uibase.h ui.h noui.h init.h
bitcoin.exe: USE_UPNP:=1
ifdef USE_UPNP
INCLUDEPATHS += -I"C:\upnpc-exe-win32-20110215"
LIBPATHS += -L"C:\upnpc-exe-win32-20110215"
LIBS += -l miniupnpc -l iphlpapi
DEFS += -DSTATICLIB -DUSE_UPNP=$(USE_UPNP)
endif
bitcoind.exe: USE_UPNP:=0
ifdef USE_UPNP
INCLUDEPATHS += -I"C:\upnpc-exe-win32-20110215"
LIBPATHS += -L"C:\upnpc-exe-win32-20110215"
LIBS += -l miniupnpc -l iphlpapi
DEFS += -DSTATICLIB -DUSE_UPNP=$(USE_UPNP)
endif
LIBS += -l kernel32 -l user32 -l gdi32 -l comdlg32 -l winspool -l winmm -l shell32 -l comctl32 -l ole32 -l oleaut32 -l uuid -l rpcrt4 -l advapi32 -l ws2_32 -l shlwapi
OBJS= \
obj/util.o \
@@ -40,7 +58,9 @@ OBJS= \
obj/db.o \
obj/net.o \
obj/irc.o \
obj/keystore.o \
obj/main.o \
obj/wallet.o \
obj/rpc.o \
obj/init.o \
cryptopp/obj/sha.o \
@@ -56,7 +76,7 @@ obj/%.o: %.cpp $(HEADERS)
cryptopp/obj/%.o: cryptopp/%.cpp
g++ -c $(CFLAGS) -O3 -DCRYPTOPP_X86_ASM_AVAILABLE -o $@ $<
obj/ui_res.o: ui.rc rc/bitcoin.ico rc/check.ico rc/send16.bmp rc/send16mask.bmp rc/send16masknoshadow.bmp rc/send20.bmp rc/send20mask.bmp rc/addressbook16.bmp rc/addressbook16mask.bmp rc/addressbook20.bmp rc/addressbook20mask.bmp
obj/ui_res.o: ../share/ui.rc ../share/pixmaps/bitcoin.ico ../share/pixmaps/check.ico ../share/pixmaps/send16.bmp ../share/pixmaps/send16mask.bmp ../share/pixmaps/send16masknoshadow.bmp ../share/pixmaps/send20.bmp ../share/pixmaps/send20mask.bmp ../share/pixmaps/addressbook16.bmp ../share/pixmaps/addressbook16mask.bmp ../share/pixmaps/addressbook20.bmp ../share/pixmaps/addressbook20mask.bmp
windres $(DEFS) $(INCLUDEPATHS) -o $@ -i $<
bitcoin.exe: $(OBJS) obj/ui.o obj/uibase.o obj/ui_res.o
@@ -69,9 +89,17 @@ obj/nogui/%.o: %.cpp $(HEADERS)
bitcoind.exe: $(OBJS:obj/%=obj/nogui/%) obj/ui_res.o
g++ $(CFLAGS) -o $@ $(LIBPATHS) $^ $(LIBS)
obj/test/%.o: obj/test/%.cpp $(HEADERS)
g++ -c $(CFLAGS) -o $@ $<
test_bitcoin: obj/test/test_bitcoin.o
g++ $(CFLAGS) -o $@ $(LIBPATHS) $^ $(LIBS)
clean:
-del /Q bitcoin bitcoind test_bitcoin
-del /Q obj\*
-del /Q obj\nogui\*
-del /Q obj\test\*
-del /Q cryptopp\obj\*
-del /Q test\*.o
-del /Q headers.h.gch

Some files were not shown because too many files have changed in this diff Show More