changeset 890:d0a0398999ec draft

Merge pull request #463 from TheBlueMatt/encreadme Encryption readme update and minor rpc.cpp fixes
author Jeff Garzik <jgarzik@exmulti.com>
date Wed, 31 Aug 2011 09:32:42 -0700
parents 67323e0730b6 (diff) db0d97b7680b (current diff)
children a3f0b2791d42 99e183b6e89e
files src/rpc.cpp
diffstat 27 files changed, 1824 insertions(+), 1299 deletions(-) [+]
line wrap: on
line diff
new file mode 100644
--- /dev/null
+++ b/contrib/boost-win32.yml
@@ -0,0 +1,38 @@
+---
+name: "boost"
+suites:
+- "lucid"
+architectures:
+- "i386"
+packages: 
+- "mingw32"
+- "faketime"
+- "zip"
+reference_datetime: "2011-01-30 00:00:00"
+remotes: []
+files:
+- "boost_1_47_0.tar.bz2"
+script: |
+  TMPDIR="$HOME/tmpdir"
+  mkdir -p $TMPDIR/bin/$GBUILD_BITS $TMPDIR/include
+  tar xjf boost_1_47_0.tar.bz2
+  cd boost_1_47_0
+  echo "using gcc : 4.4 : i586-mingw32msvc-g++
+        :
+        <rc>i586-mingw32msvc-windres
+        <archiver>i586-mingw32msvc-ar
+        <cxxflags>-frandom-seed=boost1
+  ;" > user-config.jam
+  ./bootstrap.sh --without-icu
+  ./bjam toolset=gcc target-os=windows threadapi=win32 threading=multi variant=release link=static --user-config=user-config.jam --without-mpi --without-python -sNO_BZIP2=1 -sNO_ZLIB=1 --layout=tagged --build-type=complete $MAKEOPTS stage
+  for lib in chrono date_time exception filesystem graph iostreams math_c99f math_c99l math_c99 math_tr1f math_tr1l math_tr1 prg_exec_monitor program_options random regex serialization signals system test_exec_monitor thread_win32 unit_test_framework wave wserialization; do
+      mkdir $lib
+      (cd $lib ; ar xf ../stage/lib/libboost_${lib}-mt-s.a)
+      mv $lib $TMPDIR/bin/$GBUILD_BITS
+  done
+  cp -a boost $TMPDIR/include
+  cd $TMPDIR
+  export LD_PRELOAD=/usr/lib/faketime/libfaketime.so.1
+  export FAKETIME=$REFERENCE_DATETIME
+  zip -r boost-win32-1.47.0-gitian.zip *
+  cp boost-win32-1.47.0-gitian.zip $OUTDIR
--- a/contrib/gitian-win32.yml
+++ b/contrib/gitian-win32.yml
@@ -9,25 +9,44 @@
 - "git-core"
 - "unzip"
 - "nsis"
+- "faketime"
 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"
-- "boost_1_43_0.tar.bz2"
+- "wxwidgets-win32-2.9.2-gitian.zip"
+- "boost-win32-1.47.0-gitian.zip"
 - "openssl-1.0.0d.tar.gz"
-- "db-4.7.25.NC.tar.gz"
-- "upnpc-exe-win32-20110215.zip"
-- "miniupnpc-1.5.20110215.tar.gz"
-- "WSPiApi.h"
+- "db-4.8.30.NC.tar.gz"
+- "miniupnpc-1.6.tar.gz"
 script: |
   #
-  tar xjf wxWidgets-2.9.1.tar.bz2
-  cd wxWidgets-2.9.1
-  ./configure --host=i586-mingw32msvc --build=i686-linux --disable-shared --enable-monolithic --without-libpng --disable-svg
-  perl -i -p -e "s/__TIME__/\"$REFERENCE_TIME\"/;s/__DATE__/\"$REFERENCE_DATE\"/" include/wx/chartype.h
-  make $MAKEOPTS
+  mkdir wxWidgets-2.9.2
+  cd wxWidgets-2.9.2
+  mkdir lib
+  unzip ../wxwidgets-win32-2.9.2-gitian.zip
+  cd bin/$GBUILD_BITS
+  for lib in wx_mswu; do
+    i586-mingw32msvc-ar rc ../../lib/lib${lib}-2.9-i586-mingw32msvc.a $lib/*.o
+    i586-mingw32msvc-ranlib ../../lib/lib${lib}-2.9-i586-mingw32msvc.a
+  done
+  cp -a wx ../../lib
+  cd ../..
+  mv include/wx-2.9/wx include
+  cd ..
+  #
+  mkdir boost_1_47_0
+  cd boost_1_47_0
+  mkdir -p stage/lib
+  unzip ../boost-win32-1.47.0-gitian.zip
+  cd bin/$GBUILD_BITS
+  for lib in *; do
+    i586-mingw32msvc-ar rc ../../stage/lib/libboost_${lib}-mt-s.a $lib/*.o
+    i586-mingw32msvc-ranlib ../../stage/lib/libboost_${lib}-mt-s.a
+  done
+  cd ../..
+  mv include/boost .
   cd ..
   #
   tar xzf openssl-1.0.0d.tar.gz
@@ -36,33 +55,19 @@
   make
   cd ..
   #
-  tar xzf db-4.7.25.NC.tar.gz
-  cd db-4.7.25.NC/build_unix
+  tar xzf db-4.8.30.NC.tar.gz
+  cd db-4.8.30.NC/build_unix
   ../dist/configure --enable-mingw --enable-cxx --host=i586-mingw32msvc CFLAGS="-I/usr/i586-mingw32msvc/include"
   make $MAKEOPTS
   cd ../..
   #
-  tar xjf boost_1_43_0.tar.bz2
-  cd boost_1_43_0
-  echo "using gcc : 4.4 : i586-mingw32msvc-g++
-        :
-        <rc>i586-mingw32msvc-windres
-        <archiver>i586-mingw32msvc-ar
-  ;" > user-config.jam
-  ./bootstrap.sh --without-icu
-  ./bjam toolset=gcc target-os=windows threadapi=win32 threading=multi --user-config=user-config.jam --without-mpi --without-python -sNO_BZIP2=1 -sNO_ZLIB=1 --layout=tagged --build-type=complete $MAKEOPTS stage
+  tar xzf miniupnpc-1.6.tar.gz
+  cd miniupnpc-1.6
+  sed 's/dllwrap -k --driver-name gcc/$(DLLWRAP) -k --driver-name $(CC)/' -i Makefile.mingw
+  sed 's|wingenminiupnpcstrings $< $@|./wingenminiupnpcstrings $< $@|' -i Makefile.mingw
+  make -f Makefile.mingw DLLWRAP=i586-mingw32msvc-dllwrap CC=i586-mingw32msvc-gcc AR=i586-mingw32msvc-ar
   cd ..
-  #
-  mkdir upnpc-exe-win32-20110215
-  cd upnpc-exe-win32-20110215
-  unzip ../upnpc-exe-win32-20110215.zip
-  mkdir miniupnpc
-  cd miniupnpc
-  tar xzf ../../miniupnpc-1.5.20110215.tar.gz
-  mv ./miniupnpc-1.5.20110215/* ./
-  cd ../..
-  #
-  cp WSPiApi.h $HOME/build
+  mv miniupnpc-1.6 miniupnpc
   #
   cd bitcoin
   mkdir -p $OUTDIR/src
@@ -72,8 +77,10 @@
   cp $OUTDIR/src/doc/README_windows.txt $OUTDIR/readme.txt
   cp $OUTDIR/src/COPYING $OUTDIR/license.txt
   cd src
-  sed 's/$(DEBUGFLAGS)//' < makefile.linux-mingw > makefile.linux-mingw.2 && mv makefile.linux-mingw.2 makefile.linux-mingw
-  sed 's|//#include <WSPiApi.h>|#include <WSPiApi.h>|' < net.cpp > net.cpp.2 && mv net.cpp.2 net.cpp
+  sed 's/$(DEBUGFLAGS)/-frandom-seed=bitcoin/' -i makefile.linux-mingw
+  export LD_PRELOAD=/usr/lib/faketime/libfaketime.so.1
+  export FAKETIME=$REFERENCE_DATETIME
+  export TZ=UTC
   make -f makefile.linux-mingw $MAKEOPTS DEPSDIR=$HOME/build bitcoin.exe USE_UPNP=1
   make -f makefile.linux-mingw $MAKEOPTS DEPSDIR=$HOME/build bitcoind.exe USE_UPNP=0
   i586-mingw32msvc-strip bitcoin.exe
--- a/contrib/gitian.yml
+++ b/contrib/gitian.yml
@@ -6,40 +6,40 @@
 - "i386"
 - "amd64"
 packages: 
-- "libdb4.7++-dev"
+- "libdb4.8++-dev"
 - "libxxf86vm-dev"
 - "libgtk2.0-dev"
 - "libboost-all-dev"
 - "libssl-dev"
 - "git-core"
+- "unzip"
 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"
-- "toplevel.h.diff"
-- "toplevel.cpp.diff"
+- "wxWidgets-2.9.2-gitian.zip"
+- "miniupnpc-1.6.tar.gz"
 script: |
   INSTDIR="$HOME/install"
   export LIBRARY_PATH="$INSTDIR/lib"
   #
-  tar xzf miniupnpc-1.5.tar.gz
-  cd miniupnpc-1.5
+  tar xzf miniupnpc-1.6.tar.gz
+  cd miniupnpc-1.6
   INSTALLPREFIX=$INSTDIR make $MAKEOPTS install
   cd ..
   #
-  tar xjf wxWidgets-2.9.1.tar.bz2
-  cd wxWidgets-2.9.1
-  cd include/wx/gtk
-  patch < ../../../../toplevel.h.diff
-  cd ../../../src/gtk
-  patch < ../../../toplevel.cpp.diff
-  cd ../..
-  ./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
+  mkdir -p $INSTDIR/bin $INSTDIR/lib/wx $INSTDIR/include
+  mkdir wxWidgets-2.9.2
+  cd wxWidgets-2.9.2
+  unzip ../wxWidgets-2.9.2-gitian.zip
+  cp -a bin/$GBUILD_BITS/wx/config/gtk2-unicode-static-2.9 $INSTDIR/bin/wx-config
+  for lib in wx_gtk2u wxregexu wxtiff; do
+    ar rc $INSTDIR/lib/lib${lib}-2.9.a bin/$GBUILD_BITS/$lib/*.o
+    ranlib $INSTDIR/lib/lib${lib}-2.9.a
+  done
+  cp -a include/wx-2.9/* $INSTDIR/include
+  cp -a bin/$GBUILD_BITS/wx/include $INSTDIR/lib/wx
   cd ..
   #
   cd bitcoin
@@ -50,7 +50,7 @@
   cp $OUTDIR/src/doc/README $OUTDIR
   cp $OUTDIR/src/COPYING $OUTDIR
   cd src
-  sed 's/$(DEBUGFLAGS)//' < makefile.unix > makefile.unix.2 && mv makefile.unix.2 makefile.unix
+  sed 's/$(DEBUGFLAGS)//' -i makefile.unix
   PATH=$INSTDIR/bin:$PATH make -f makefile.unix CXX="g++ -I$INSTDIR/include -L$INSTDIR/lib" $MAKEOPTS bitcoin USE_UPNP=1
   PATH=$INSTDIR/bin:$PATH make -f makefile.unix CXX="g++ -I$INSTDIR/include -L$INSTDIR/lib" $MAKEOPTS bitcoind USE_UPNP=0
   mkdir -p $OUTDIR/bin/$GBUILD_BITS
new file mode 100644
--- /dev/null
+++ b/contrib/pyminer/README
@@ -0,0 +1,6 @@
+
+This is a 'getwork' CPU mining client for bitcoin.
+
+It is pure-python, and therefore very, very slow.  The purpose is to
+provide a reference implementation of a miner, for study.
+
new file mode 100644
--- /dev/null
+++ b/contrib/pyminer/example-config.cfg
@@ -0,0 +1,32 @@
+
+#
+# RPC login details
+#
+host=127.0.0.1
+port=8332
+
+rpcuser=myusername
+rpcpass=mypass
+
+
+#
+# mining details
+#
+
+threads=4
+
+# periodic rate for requesting new work, if solution not found
+scantime=60
+
+
+#
+# misc.
+#
+
+# not really used right now
+logdir=/tmp/pyminer
+
+# set to 1, to enable hashmeter output
+hashmeter=0
+
+
new file mode 100755
--- /dev/null
+++ b/contrib/pyminer/pyminer.py
@@ -0,0 +1,252 @@
+#!/usr/bin/python
+#
+# Copyright (c) 2011 The Bitcoin developers
+# Distributed under the MIT/X11 software license, see the accompanying
+# file license.txt or http://www.opensource.org/licenses/mit-license.php.
+#
+
+import time
+import json
+import pprint
+import hashlib
+import struct
+import re
+import base64
+import httplib
+import sys
+from multiprocessing import Process
+
+ERR_SLEEP = 15
+MAX_NONCE = 1000000L
+
+settings = {}
+pp = pprint.PrettyPrinter(indent=4)
+
+class BitcoinRPC:
+	OBJID = 1
+
+	def __init__(self, host, port, username, password):
+		authpair = "%s:%s" % (username, password)
+		self.authhdr = "Basic %s" % (base64.b64encode(authpair))
+		self.conn = httplib.HTTPConnection(host, port, False, 30)
+	def rpc(self, method, params=None):
+		self.OBJID += 1
+		obj = { 'version' : '1.1',
+			'method' : method,
+			'id' : self.OBJID }
+		if params is None:
+			obj['params'] = []
+		else:
+			obj['params'] = params
+		self.conn.request('POST', '/', json.dumps(obj),
+			{ 'Authorization' : self.authhdr,
+			  'Content-type' : 'application/json' })
+
+		resp = self.conn.getresponse()
+		if resp is None:
+			print "JSON-RPC: no response"
+			return None
+
+		body = resp.read()
+		resp_obj = json.loads(body)
+		if resp_obj is None:
+			print "JSON-RPC: cannot JSON-decode body"
+			return None
+		if 'error' in resp_obj and resp_obj['error'] != None:
+			return resp_obj['error']
+		if 'result' not in resp_obj:
+			print "JSON-RPC: no result in object"
+			return None
+
+		return resp_obj['result']
+	def getblockcount(self):
+		return self.rpc('getblockcount')
+	def getwork(self, data=None):
+		return self.rpc('getwork', data)
+
+def uint32(x):
+	return x & 0xffffffffL
+
+def bytereverse(x):
+	return uint32(( ((x) << 24) | (((x) << 8) & 0x00ff0000) |
+			(((x) >> 8) & 0x0000ff00) | ((x) >> 24) ))
+
+def bufreverse(in_buf):
+	out_words = []
+	for i in range(0, len(in_buf), 4):
+		word = struct.unpack('@I', in_buf[i:i+4])[0]
+		out_words.append(struct.pack('@I', bytereverse(word)))
+	return ''.join(out_words)
+
+def wordreverse(in_buf):
+	out_words = []
+	for i in range(0, len(in_buf), 4):
+		out_words.append(in_buf[i:i+4])
+	out_words.reverse()
+	return ''.join(out_words)
+
+class Miner:
+	def __init__(self, id):
+		self.id = id
+		self.max_nonce = MAX_NONCE
+
+	def work(self, datastr, targetstr):
+		# decode work data hex string to binary
+		static_data = datastr.decode('hex')
+		static_data = bufreverse(static_data)
+
+		# the first 76b of 80b do not change
+		blk_hdr = static_data[:76]
+
+		# decode 256-bit target value
+		targetbin = targetstr.decode('hex')
+		targetbin = targetbin[::-1]	# byte-swap and dword-swap
+		targetbin_str = targetbin.encode('hex')
+		target = long(targetbin_str, 16)
+
+		# pre-hash first 76b of block header
+		static_hash = hashlib.sha256()
+		static_hash.update(blk_hdr)
+
+		for nonce in xrange(self.max_nonce):
+
+			# encode 32-bit nonce value
+			nonce_bin = struct.pack("<I", nonce)
+
+			# hash final 4b, the nonce value
+			hash1_o = static_hash.copy()
+			hash1_o.update(nonce_bin)
+			hash1 = hash1_o.digest()
+
+			# sha256 hash of sha256 hash
+			hash_o = hashlib.sha256()
+			hash_o.update(hash1)
+			hash = hash_o.digest()
+
+			# quick test for winning solution: high 32 bits zero?
+			if hash[-4:] != '\0\0\0\0':
+				continue
+
+			# convert binary hash to 256-bit Python long
+			hash = bufreverse(hash)
+			hash = wordreverse(hash)
+
+			hash_str = hash.encode('hex')
+			l = long(hash_str, 16)
+
+			# proof-of-work test:  hash < target
+			if l < target:
+				print time.asctime(), "PROOF-OF-WORK found: %064x" % (l,)
+				return (nonce + 1, nonce_bin)
+			else:
+				print time.asctime(), "PROOF-OF-WORK false positive %064x" % (l,)
+#				return (nonce + 1, nonce_bin)
+
+		return (nonce + 1, None)
+
+	def submit_work(self, rpc, original_data, nonce_bin):
+		nonce_bin = bufreverse(nonce_bin)
+		nonce = nonce_bin.encode('hex')
+		solution = original_data[:152] + nonce + original_data[160:256]
+		param_arr = [ solution ]
+		result = rpc.getwork(param_arr)
+		print time.asctime(), "--> Upstream RPC result:", result
+
+	def iterate(self, rpc):
+		work = rpc.getwork()
+		if work is None:
+			time.sleep(ERR_SLEEP)
+			return
+		if 'data' not in work or 'target' not in work:
+			time.sleep(ERR_SLEEP)
+			return
+
+		time_start = time.time()
+
+		(hashes_done, nonce_bin) = self.work(work['data'],
+						     work['target'])
+
+		time_end = time.time()
+		time_diff = time_end - time_start
+
+		self.max_nonce = long(
+			(hashes_done * settings['scantime']) / time_diff)
+		if self.max_nonce > 0xfffffffaL:
+			self.max_nonce = 0xfffffffaL
+
+		if settings['hashmeter']:
+			print "HashMeter(%d): %d hashes, %.2f Khash/sec" % (
+			      self.id, hashes_done,
+			      (hashes_done / 1000.0) / time_diff)
+
+		if nonce_bin is not None:
+			self.submit_work(rpc, work['data'], nonce_bin)
+
+	def loop(self):
+		rpc = BitcoinRPC(settings['host'], settings['port'],
+				 settings['rpcuser'], settings['rpcpass'])
+		if rpc is None:
+			return
+
+		while True:
+			self.iterate(rpc)
+
+def miner_thread(id):
+	miner = Miner(id)
+	miner.loop()
+
+if __name__ == '__main__':
+	if len(sys.argv) != 2:
+		print "Usage: pyminer.py CONFIG-FILE"
+		sys.exit(1)
+
+	f = open(sys.argv[1])
+	for line in f:
+		# skip comment lines
+		m = re.search('^\s*#', line)
+		if m:
+			continue
+
+		# parse key=value lines
+		m = re.search('^(\w+)\s*=\s*(\S.*)$', line)
+		if m is None:
+			continue
+		settings[m.group(1)] = m.group(2)
+	f.close()
+
+	if 'host' not in settings:
+		settings['host'] = '127.0.0.1'
+	if 'port' not in settings:
+		settings['port'] = 8332
+	if 'threads' not in settings:
+		settings['threads'] = 1
+	if 'hashmeter' not in settings:
+		settings['hashmeter'] = 0
+	if 'scantime' not in settings:
+		settings['scantime'] = 30L
+	if 'rpcuser' not in settings or 'rpcpass' not in settings:
+		print "Missing username and/or password in cfg file"
+		sys.exit(1)
+
+	settings['port'] = int(settings['port'])
+	settings['threads'] = int(settings['threads'])
+	settings['hashmeter'] = int(settings['hashmeter'])
+	settings['scantime'] = long(settings['scantime'])
+
+	thr_list = []
+	for thr_id in range(settings['threads']):
+		p = Process(target=miner_thread, args=(thr_id,))
+		p.start()
+		thr_list.append(p)
+		time.sleep(1)			# stagger threads
+
+	print settings['threads'], "mining threads started"
+
+	print time.asctime(), "Miner Starts - %s:%s" % (settings['host'], settings['port'])
+	try:
+		for thr_proc in thr_list:
+			thr_proc.join()
+	except KeyboardInterrupt:
+		pass
+	print time.asctime(), "Miner Stops - %s:%s" % (settings['host'], settings['port'])
+
deleted file mode 100644
--- a/contrib/wx-patches/README
+++ /dev/null
@@ -1,4 +0,0 @@
-This folder contains two patches which are applied to wxWidgets
-2.9.1 before building the wxWidgets which is used for release
-versions of bitcoin.  They make the GUI show up on newer OSs
-with new libgtks, such as Ubuntu 11.04.
deleted file mode 100644
--- a/contrib/wx-patches/toplevel.cpp.diff
+++ /dev/null
@@ -1,86 +0,0 @@
---- /wxWidgets/trunk/src/gtk/toplevel.cpp (revision 67326)
-+++ /wxWidgets/trunk/src/gtk/toplevel.cpp (revision 67496)
-@@ -72,4 +72,8 @@
- // send any activate events at all
- static int g_sendActivateEvent = -1;
-+
-+// Whether _NET_REQUEST_FRAME_EXTENTS support is working
-+//   0 == not tested yet, 1 == working, 2 == broken
-+static int gs_requestFrameExtentsStatus;
- 
- //-----------------------------------------------------------------------------
-@@ -432,4 +436,12 @@
-     if (event->state == GDK_PROPERTY_NEW_VALUE && event->atom == property)
-     {
-+        if (win->m_netFrameExtentsTimerId)
-+        {
-+            // WM support for _NET_REQUEST_FRAME_EXTENTS is working
-+            gs_requestFrameExtentsStatus = 1;
-+            g_source_remove(win->m_netFrameExtentsTimerId);
-+            win->m_netFrameExtentsTimerId = 0;
-+        }
-+
-         wxSize decorSize = win->m_decorSize;
-         int left, right, top, bottom;
-@@ -439,4 +451,22 @@
-         win->GTKUpdateDecorSize(decorSize);
-     }
-+    return false;
-+}
-+}
-+
-+extern "C" {
-+static gboolean request_frame_extents_timeout(void* data)
-+{
-+    // WM support for _NET_REQUEST_FRAME_EXTENTS is broken
-+    gs_requestFrameExtentsStatus = 2;
-+    gdk_threads_enter();
-+    wxTopLevelWindowGTK* win = static_cast<wxTopLevelWindowGTK*>(data);
-+    win->m_netFrameExtentsTimerId = 0;
-+    wxSize decorSize = win->m_decorSize;
-+    int left, right, top, bottom;
-+    if (wxGetFrameExtents(gtk_widget_get_window(win->m_widget), &left, &right, &top, &bottom))
-+        decorSize.Set(left + right, top + bottom);
-+    win->GTKUpdateDecorSize(decorSize);
-+    gdk_threads_leave();
-     return false;
- }
-@@ -459,4 +489,5 @@
-     m_deferShowAllowed = true;
-     m_updateDecorSize = true;
-+    m_netFrameExtentsTimerId = 0;
- 
-     m_urgency_hint = -2;
-@@ -811,5 +842,6 @@
-     if (deferShow)
-     {
--        deferShow = m_deferShowAllowed && !GTK_WIDGET_REALIZED(m_widget);
-+        deferShow = gs_requestFrameExtentsStatus != 2 &&
-+            m_deferShowAllowed && !gtk_widget_get_realized(m_widget);
-         if (deferShow)
-         {
-@@ -829,11 +861,4 @@
-             // GetSize()/SetSize() because it makes window bigger between each
-             // restore and save.
--            m_updateDecorSize = deferShow;
--        }
--        if (deferShow)
--        {
--            // Fluxbox support for _NET_REQUEST_FRAME_EXTENTS is broken
--            const char* name = gdk_x11_screen_get_window_manager_name(screen);
--            deferShow = strcmp(name, "Fluxbox") != 0;
-             m_updateDecorSize = deferShow;
-         }
-@@ -875,4 +900,12 @@
-             (XEvent*)&xevent);
- 
-+        if (gs_requestFrameExtentsStatus == 0)
-+        {
-+            // if WM does not respond to request within 1 second,
-+            // we assume support for _NET_REQUEST_FRAME_EXTENTS is not working
-+            m_netFrameExtentsTimerId =
-+                g_timeout_add(1000, request_frame_extents_timeout, this);
-+        }
-+
-         // defer calling gtk_widget_show()
-         m_isShown = true;
deleted file mode 100644
--- a/contrib/wx-patches/toplevel.h.diff
+++ /dev/null
@@ -1,9 +0,0 @@
---- /wxWidgets/trunk/include/wx/gtk/toplevel.h (revision 65373)
-+++ /wxWidgets/trunk/include/wx/gtk/toplevel.h (revision 67496)
-@@ -114,4 +114,6 @@
-     // wxUSER_ATTENTION_ERROR difference, -2 for no hint, -1 for ERROR hint, rest for GtkTimeout handle.
-     int m_urgency_hint;
-+    // timer for detecting WM with broken _NET_REQUEST_FRAME_EXTENTS handling
-+    unsigned m_netFrameExtentsTimerId;
- 
-     // return the size of the window without WM decorations
new file mode 100644
--- /dev/null
+++ b/contrib/wxwidgets-win32.yml
@@ -0,0 +1,40 @@
+---
+name: "wxwidgets"
+suites:
+- "lucid"
+architectures:
+- "i386"
+packages: 
+- "mingw32"
+- "faketime"
+- "zip"
+reference_datetime: "2011-01-30 00:00:00"
+remotes: []
+files:
+- "wxWidgets-2.9.2.tar.bz2"
+script: |
+  INSTDIR="$HOME/install"
+  TMPDIR="$HOME/tmpdir"
+  export LIBRARY_PATH="$INSTDIR/lib"
+  #
+  tar xjf wxWidgets-2.9.2.tar.bz2
+  cd wxWidgets-2.9.2
+  CXXFLAGS=-frandom-seed=wx1 ./configure --host=i586-mingw32msvc --build=i686-linux --prefix=$INSTDIR --disable-shared --enable-monolithic --without-libpng --disable-svg
+  perl -i -p -e "s/__TIME__/\"$REFERENCE_TIME\"/;s/__DATE__/\"$REFERENCE_DATE\"/" include/wx/chartype.h
+  make $MAKEOPTS install
+  mkdir $TMPDIR
+  cd $TMPDIR
+  cp -af $INSTDIR/include .
+  mkdir -p $TMPDIR/bin/$GBUILD_BITS
+  cd $TMPDIR/bin/$GBUILD_BITS
+  cp -af $INSTDIR/lib/wx .
+  for lib in wx_mswu; do
+      mkdir $lib
+      (cd $lib ; ar xf $INSTDIR/lib/lib${lib}-2.9-i586-mingw32msvc.a)
+  done
+  chmod -R +w $TMPDIR
+  cd $TMPDIR
+  export LD_PRELOAD=/usr/lib/faketime/libfaketime.so.1
+  export FAKETIME=$REFERENCE_DATETIME
+  zip -r wxwidgets-win32-2.9.2-gitian.zip *
+  cp wxwidgets-win32-2.9.2-gitian.zip $OUTDIR
new file mode 100644
--- /dev/null
+++ b/contrib/wxwidgets.yml
@@ -0,0 +1,42 @@
+---
+name: "wxwidgets"
+suites:
+- "lucid"
+architectures:
+- "i386"
+- "amd64"
+packages: 
+- "libxxf86vm-dev"
+- "libgtk2.0-dev"
+- "faketime"
+- "zip"
+reference_datetime: "2011-01-30 00:00:00"
+remotes: []
+files:
+- "wxWidgets-2.9.2.tar.bz2"
+script: |
+  INSTDIR="$HOME/install"
+  TMPDIR="$HOME/tmpdir"
+  export LIBRARY_PATH="$INSTDIR/lib"
+  #
+  tar xjf wxWidgets-2.9.2.tar.bz2
+  cd wxWidgets-2.9.2
+  ./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
+  mkdir $TMPDIR
+  cd $TMPDIR
+  cp -af $INSTDIR/include .
+  mkdir -p $TMPDIR/bin/$GBUILD_BITS
+  cd $TMPDIR/bin/$GBUILD_BITS
+  cp -af $INSTDIR/lib/wx .
+  for lib in wxtiff wxregexu wx_gtk2u; do
+      mkdir $lib
+      (cd $lib ; ar xf $INSTDIR/lib/lib${lib}-2.9.a)
+  done
+  chmod -R +w $TMPDIR
+  cd $TMPDIR
+  export LD_PRELOAD=/usr/lib/faketime/libfaketime.so.1
+  export FAKETIME=$REFERENCE_DATETIME
+  zip -r wxWidgets-2.9.2-gitian.zip *
+  cp wxWidgets-2.9.2-gitian.zip $OUTDIR
--- a/doc/build-msw.txt
+++ b/doc/build-msw.txt
@@ -27,11 +27,11 @@
 Libraries you need to download separately and build:
 
                 default path               download
-wxWidgets       \wxwidgets-2.9.1-mgw       http://www.wxwidgets.org/downloads/
+wxWidgets       \wxwidgets-2.9.2-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/
+Berkeley DB     \db-4.8.30.NC-mgw          http://www.oracle.com/technology/software/products/berkeley-db/index.html
+Boost           \boost-1.47.0-mgw          http://www.boost.org/users/download/
+miniupnpc       \miniupnpc-1.6-mgw         http://miniupnp.tuxfamily.org/files/
 
 Their licenses:
 wxWidgets      LGPL 2.1 with very liberal exceptions
@@ -41,11 +41,11 @@
 miniupnpc      New (3-clause) BSD license
 
 Versions used in this release:
-wxWidgets    2.9.1
+wxWidgets    2.9.2
 OpenSSL      1.0.0d
-Berkeley DB  4.7.25.NC
-Boost        1.43.0
-miniupnpc    1.5-20110215
+Berkeley DB  4.8.30.NC
+Boost        1.47.0
+miniupnpc    1.6
 
 
 Notes
@@ -57,7 +57,7 @@
 wxWidgets
 ---------
 DOS shell:
-cd \wxWidgets-2.9.1-mgw\build\msw
+cd \wxWidgets-2.9.2-mgw\build\msw
 mingw32-make -f makefile.gcc
 
 OpenSSL
@@ -73,30 +73,26 @@
 Berkeley DB
 -----------
 MSYS shell:
-cd /c/db-4.7.25.NC-mgw/build_unix
+cd /c/db-4.8.30.NC-mgw/build_unix
 sh ../dist/configure --enable-mingw --enable-cxx
 make
 
-
 Boost
 -----
 DOS prompt:
 downloaded boost jam 3.1.18
-cd \boost-1.43.0-mgw
+cd \boost-1.47.0-mgw
 bjam toolset=gcc --build-type=complete stage
 
-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
+MSYS shell:
+cd /c/miniupnpc-1.6-mgw
+make -f Makefile.mingw
+mkdir miniupnpc
+cp *.h miniupnpc/
 
 Bitcoin
 -------
--- a/doc/build-osx.txt
+++ b/doc/build-osx.txt
@@ -135,18 +135,18 @@
 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
+tar xvf ~/Downloads/miniupnpc-1.6.tar
+mv miniupnpc-1.6 miniupnpc-1.6-x86_64
+tar xvf ~/Downloads/miniupnpc-1.6.tar
+mv miniupnpc-1.6 miniupnpc-1.6-i386
 # build x86_64 (64 bit intel) binary
-cd miniupnpc-1.5-x86_64
+cd miniupnpc-1.6-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
+cd miniupnpc-1.6-i386
 export CFLAGS="-arch i386"
 export LDFLAGS="-arch i386"
 export PREFIX="/Users/macuser/bitcoin/deps"
@@ -154,7 +154,7 @@
 
 # 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
+lipo -arch i386 miniupnpc-1.6-i386/libminiupnpc.a -arch x86_64 miniupnpc-1.6-x86_64/libminiupnpc.a -o lib/libminiupnpc.a -create
 
 Verify your binaries
 
@@ -175,8 +175,8 @@
 Download from http://freshmeat.net/projects/berkeleydb/
 
 cd ~/bitcoin/deps
-tar xvf ~/Downloads/db-4.8.26.tar
-cd db-4.8.26/build_unix
+tar xvf ~/Downloads/db-4.8.30.tar
+cd db-4.8.30/build_unix
 ../dist/configure --prefix=/Users/macosuser/bitcoin/deps --enable-cxx && make && make install
 
 
--- a/doc/build-unix.txt
+++ b/doc/build-unix.txt
@@ -25,8 +25,8 @@
 sudo apt-get install build-essential
 sudo apt-get install libgtk2.0-dev
 sudo apt-get install libssl-dev
-sudo apt-get install libdb4.7-dev
-sudo apt-get install libdb4.7++-dev
+sudo apt-get install libdb4.8-dev
+sudo apt-get install libdb4.8++-dev
 Boost 1.40+: sudo apt-get install libboost-all-dev
 or Boost 1.37: sudo apt-get install libboost1.37-dev
 
@@ -55,10 +55,10 @@
 Versions used in this release:
 GCC          4.3.3
 OpenSSL      0.9.8g
-wxWidgets    2.9.0
-Berkeley DB  4.7.25.NC
+wxWidgets    2.9.2
+Berkeley DB  4.8.30.NC
 Boost        1.37
-miniupnpc    1.5
+miniupnpc    1.6
 
 
 Notes
@@ -74,8 +74,8 @@
 wxWidgets
 ---------
 cd /usr/local
-tar -xzvf wxWidgets-2.9.0.tar.gz
-cd wxWidgets-2.9.0
+tar -xzvf wxWidgets-2.9.2.tar.gz
+cd wxWidgets-2.9.2
 mkdir buildgtk
 cd buildgtk
 ../configure --with-gtk --enable-debug --disable-shared --enable-monolithic --without-libpng --disable-svg
@@ -87,8 +87,8 @@
 
 miniupnpc
 ---------
-tar -xzvf miniupnpc-1.5.tar.gz
-cd miniupnpc-1.5
+tar -xzvf miniupnpc-1.6.tar.gz
+cd miniupnpc-1.6
 make
 sudo su
 make install
@@ -96,8 +96,7 @@
 
 Berkeley DB
 -----------
-You need Berkeley DB 4.7.  Don't use 4.8, the database/log0000* files
-are incompatible.  If you have to build Berkeley DB yourself:
+You need Berkeley DB 4.8.  If you have to build Berkeley DB yourself:
 ../dist/configure --enable-cxx
 make
 
--- a/locale/cs/LC_MESSAGES/bitcoin.po
+++ b/locale/cs/LC_MESSAGES/bitcoin.po
@@ -5,8 +5,8 @@
 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"
+"POT-Creation-Date: 2011-08-16 15:51+0100\n"
+"PO-Revision-Date: 2011-08-16 16:03+0100\n"
 "Last-Translator: xHire <xhire@mujmalysvet.cz>\n"
 "Language-Team: \n"
 "Language: cs\n"
@@ -17,516 +17,11 @@
 "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
+#: ../../../src/ui.cpp:2985
 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"
@@ -535,152 +30,168 @@
 msgid "&Your Receiving Addresses..."
 msgstr "Tvá Bitcoinová &adresa..."
 
-#: ../../../src/uibase.cpp:36
+#: ../../../src/uibase.cpp:35
+msgid "&Encrypt Wallet..."
+msgstr "&Zašifruj peněženku..."
+
+#: ../../../src/uibase.cpp:38
+msgid "&Change Wallet Encryption Passphrase..."
+msgstr "Změň &heslo pro šifrování peněženky..."
+
+#: ../../../src/uibase.cpp:42
 msgid "&Options..."
 msgstr "M&ožnosti"
 
-#: ../../../src/uibase.cpp:39
+#: ../../../src/uibase.cpp:45
 msgid "&Settings"
 msgstr "Nas&tavení"
 
-#: ../../../src/uibase.cpp:43
+#: ../../../src/uibase.cpp:49
 msgid "&About..."
 msgstr "&O programu"
 
-#: ../../../src/uibase.cpp:46
+#: ../../../src/uibase.cpp:52
 msgid "&Help"
 msgstr "&Nápověda"
 
-#: ../../../src/uibase.cpp:56
+#: ../../../src/uibase.cpp:61
+#: ../../../src/ui.cpp:2143
+#: ../../../src/ui.cpp:2148
+#: ../../../src/ui.cpp:2153
+#: ../../../src/ui.cpp:2202
+msgid "Send Coins"
+msgstr "Pošli mince"
+
+#: ../../../src/uibase.cpp:62
 msgid "Address Book"
 msgstr "Adresář"
 
-#: ../../../src/uibase.cpp:69
+#: ../../../src/uibase.cpp:75
 msgid "Your Bitcoin Address:"
 msgstr "Tvá Bitcoinová adresa:"
 
-#: ../../../src/uibase.cpp:76
+#: ../../../src/uibase.cpp:82
 msgid " &New... "
 msgstr " &Nová..."
 
-#: ../../../src/uibase.cpp:79
-#: ../../../src/uibase.cpp:780
-#: ../../../src/uibase.cpp:883
+#: ../../../src/uibase.cpp:85
+#: ../../../src/uibase.cpp:790
+#: ../../../src/uibase.cpp:893
 msgid " &Copy to Clipboard "
 msgstr " &Kopírovat do schránky"
 
-#: ../../../src/uibase.cpp:93
+#: ../../../src/uibase.cpp:99
 msgid "Balance:"
 msgstr "Stav účtu:"
 
-#: ../../../src/uibase.cpp:109
+#: ../../../src/uibase.cpp:115
 msgid " All"
 msgstr " Vše"
 
-#: ../../../src/uibase.cpp:109
+#: ../../../src/uibase.cpp:115
 msgid " Sent"
 msgstr " Odeslané"
 
-#: ../../../src/uibase.cpp:109
+#: ../../../src/uibase.cpp:115
 msgid " Received"
 msgstr " Přijaté"
 
-#: ../../../src/uibase.cpp:109
+#: ../../../src/uibase.cpp:115
 msgid " In Progress"
 msgstr " Pracuje se na tom"
 
-#: ../../../src/uibase.cpp:130
+#: ../../../src/uibase.cpp:136
 msgid "All Transactions"
 msgstr "Všechny transakce"
 
-#: ../../../src/uibase.cpp:141
+#: ../../../src/uibase.cpp:147
 msgid "Sent/Received"
 msgstr "Odeslané/Přijaté"
 
-#: ../../../src/uibase.cpp:152
+#: ../../../src/uibase.cpp:158
 msgid "Sent"
 msgstr "Odeslané"
 
-#: ../../../src/uibase.cpp:163
+#: ../../../src/uibase.cpp:169
 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
+#: ../../../src/uibase.cpp:312
+#: ../../../src/uibase.cpp:453
+#: ../../../src/uibase.cpp:552
+#: ../../../src/uibase.cpp:732
+#: ../../../src/uibase.cpp:793
+#: ../../../src/uibase.cpp:902
+#: ../../../src/uibase.cpp:991
 msgid "OK"
 msgstr "&Budiž"
 
-#: ../../../src/uibase.cpp:345
+#: ../../../src/uibase.cpp:355
 msgid "&Start Bitcoin on system startup"
 msgstr "&Spustit Bitcoin při startu systému"
 
-#: ../../../src/uibase.cpp:348
+#: ../../../src/uibase.cpp:358
 msgid "&Minimize to the tray instead of the taskbar"
 msgstr "&Minimalizovávat do ikony v panelu"
 
-#: ../../../src/uibase.cpp:351
+#: ../../../src/uibase.cpp:361
 msgid "Map port using &UPnP"
 msgstr "Namapovat port přes &UPnP"
 
-#: ../../../src/uibase.cpp:354
+#: ../../../src/uibase.cpp:364
 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:370
+msgid "&Connect through socks4 proxy (requires restart to apply): "
+msgstr "&Připojit přes socks4 proxy (vyžaduje restart aplikace):"
 
-#: ../../../src/uibase.cpp:371
+#: ../../../src/uibase.cpp:381
 msgid "Proxy &IP:"
 msgstr "&IP adresa proxy:"
 
-#: ../../../src/uibase.cpp:379
+#: ../../../src/uibase.cpp:389
 msgid " &Port:"
 msgstr " &Port:"
 
-#: ../../../src/uibase.cpp:392
+#: ../../../src/uibase.cpp:402
 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
+#: ../../../src/uibase.cpp:409
 msgid "Pay transaction fee:"
 msgstr "Výše transakčního poplatku:"
 
-#: ../../../src/uibase.cpp:420
+#: ../../../src/uibase.cpp:430
 msgid "// [don't translate] Test panel 2 for future expansion"
 msgstr ""
 
-#: ../../../src/uibase.cpp:424
+#: ../../../src/uibase.cpp:434
 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
+#: ../../../src/uibase.cpp:456
+#: ../../../src/uibase.cpp:678
+#: ../../../src/uibase.cpp:737
+#: ../../../src/uibase.cpp:796
+#: ../../../src/uibase.cpp:905
+#: ../../../src/uibase.cpp:994
 msgid "Cancel"
 msgstr "&Zrušit"
 
-#: ../../../src/uibase.cpp:449
+#: ../../../src/uibase.cpp:459
 msgid "&Apply"
 msgstr "&Použít"
 
-#: ../../../src/uibase.cpp:508
+#: ../../../src/uibase.cpp:518
 msgid "Bitcoin "
 msgstr "Bitcoin"
 
-#: ../../../src/uibase.cpp:514
+#: ../../../src/uibase.cpp:524
 msgid "version"
 msgstr "verze"
 
-#: ../../../src/uibase.cpp:525
+#: ../../../src/uibase.cpp:535
 msgid ""
 "Copyright (c) 2009-2011 Bitcoin Developers\n"
 "\n"
@@ -704,39 +215,39 @@
 "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
+#: ../../../src/uibase.cpp:591
 msgid "Enter a Bitcoin address (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L)"
 msgstr "Vlož Bitcoinovou adresu (např. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L)"
 
-#: ../../../src/uibase.cpp:595
+#: ../../../src/uibase.cpp:605
 msgid "Pay &To:"
 msgstr "&Komu:"
 
-#: ../../../src/uibase.cpp:610
+#: ../../../src/uibase.cpp:620
 msgid "&Paste"
 msgstr "&Vložit"
 
-#: ../../../src/uibase.cpp:613
+#: ../../../src/uibase.cpp:623
 msgid " Address &Book..."
 msgstr " &Adresář..."
 
-#: ../../../src/uibase.cpp:620
+#: ../../../src/uibase.cpp:630
 msgid "&Amount:"
 msgstr "&Částka"
 
-#: ../../../src/uibase.cpp:630
+#: ../../../src/uibase.cpp:640
 msgid "T&ransfer:"
 msgstr "&Převod:"
 
-#: ../../../src/uibase.cpp:636
+#: ../../../src/uibase.cpp:646
 msgid " Standard"
 msgstr " Standard"
 
-#: ../../../src/uibase.cpp:663
+#: ../../../src/uibase.cpp:673
 msgid "&Send"
 msgstr "&Poslat"
 
-#: ../../../src/uibase.cpp:711
+#: ../../../src/uibase.cpp:721
 msgid ""
 "\n"
 "\n"
@@ -746,157 +257,735 @@
 "\n"
 "Připojuji..."
 
-#: ../../../src/uibase.cpp:761
+#: ../../../src/uibase.cpp:771
 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
+#: ../../../src/uibase.cpp:784
+#: ../../../src/uibase.cpp:896
 msgid "&Edit..."
 msgstr "&Upravit..."
 
-#: ../../../src/uibase.cpp:777
-#: ../../../src/uibase.cpp:889
+#: ../../../src/uibase.cpp:787
+#: ../../../src/uibase.cpp:899
 msgid " &New Address... "
 msgstr " &Nová adresa..."
 
-#: ../../../src/uibase.cpp:849
+#: ../../../src/uibase.cpp:847
+#: ../../../src/ui.cpp:2620
+msgid "Bitcoin Address"
+msgstr "Bitcoinová adresa"
+
+#: ../../../src/uibase.cpp:859
 msgid "Sending"
 msgstr "Cizí adresy (pro odesílání)"
 
-#: ../../../src/uibase.cpp:857
+#: ../../../src/uibase.cpp:867
 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
+#: ../../../src/uibase.cpp:880
 msgid "Receiving"
 msgstr "Tvoje adresy (pro příjem)"
 
-#: ../../../src/uibase.cpp:880
+#: ../../../src/uibase.cpp:890
 msgid "&Delete"
 msgstr "&Smazat"
 
-#: ../../../src/init.cpp:142
+#: ../../../src/rpc.cpp:2088
+#: ../../../src/rpc.cpp:2090
+#, c-format
+msgid "To use the %s option"
+msgstr "Pro použití volby %s"
+
+#: ../../../src/rpc.cpp:2092
+#, 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:2265
+#, 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:870
+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:904
+msgid "beta"
+msgstr "beta"
+
+#: ../../../src/wallet.cpp:1084
+msgid "Error: Wallet locked, unable to create transaction  "
+msgstr "Chyba: Peněženka je zamčená, takže není možné vytvořit transakci"
+
+#: ../../../src/wallet.cpp:1092
+#, 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/wallet.cpp:1094
+msgid "Error: Transaction creation failed  "
+msgstr "Chyba: Vytvoření transakce selhalo"
+
+#: ../../../src/wallet.cpp:1100
+#: ../../../src/ui.cpp:2176
+#: ../../../src/ui.cpp:2185
+#: ../../../src/ui.cpp:2336
+#: ../../../src/ui.cpp:2500
+msgid "Sending..."
+msgstr "Posílám..."
+
+#: ../../../src/wallet.cpp:1104
+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/wallet.cpp:1117
+msgid "Invalid amount"
+msgstr "Neplatná částka"
+
+#: ../../../src/wallet.cpp:1119
+#: ../../../src/ui.cpp:2403
+#: ../../../src/ui.cpp:2474
+msgid "Insufficient funds"
+msgstr "Nedostatek peněz"
+
+#: ../../../src/ui.cpp:217
+#, 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:261
+#: ../../../src/ui.cpp:1247
+msgid "Enter the current passphrase to the wallet."
+msgstr "Zadej platné heslo pro peněženku."
+
+#: ../../../src/ui.cpp:262
+#: ../../../src/ui.cpp:1183
+#: ../../../src/ui.cpp:1200
+#: ../../../src/ui.cpp:1248
+#: ../../../src/ui.cpp:1274
+#: ../../../src/ui.cpp:1294
+msgid "Passphrase"
+msgstr "Heslo"
+
+#: ../../../src/ui.cpp:268
+msgid "Please supply the current wallet decryption passphrase."
+msgstr "Zadej platné heslo pro dešifrování peněženky."
+
+#: ../../../src/ui.cpp:276
+#: ../../../src/ui.cpp:1259
+#: ../../../src/ui.cpp:1316
+msgid "The passphrase entered for the wallet decryption was incorrect."
+msgstr "Nezadal jsi správné heslo pro dešifrování peněženky."
+
+#: ../../../src/ui.cpp:353
+msgid "Status"
+msgstr "Stav"
+
+#: ../../../src/ui.cpp:354
+msgid "Date"
+msgstr "Datum"
+
+#: ../../../src/ui.cpp:355
+msgid "Description"
+msgstr "Popis"
+
+#: ../../../src/ui.cpp:356
+msgid "Debit"
+msgstr "Výdaje"
+
+#: ../../../src/ui.cpp:357
+msgid "Credit"
+msgstr "Příjmy"
+
+#: ../../../src/ui.cpp:568
+#, c-format
+msgid "Open for %d blocks"
+msgstr "Otevřeno pro %d bloků"
+
+#: ../../../src/ui.cpp:570
+#, c-format
+msgid "Open until %s"
+msgstr "Otřevřeno dokud %s"
+
+#: ../../../src/ui.cpp:576
+#, c-format
+msgid "%d/offline?"
+msgstr "%d/offline?"
+
+#: ../../../src/ui.cpp:578
+#, c-format
+msgid "%d/unconfirmed"
+msgstr "%d/nepotvrzeno"
+
+#: ../../../src/ui.cpp:580
+#, c-format
+msgid "%d confirmations"
+msgstr "%d potvrzení"
+
+#: ../../../src/ui.cpp:665
+msgid "Generated"
+msgstr "Vygenerováno"
+
+#: ../../../src/ui.cpp:673
+#, c-format
+msgid "Generated (%s matures in %d more blocks)"
+msgstr "Vygenerováno (%s dozraje po %d blocích)"
+
+#: ../../../src/ui.cpp:677
+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:681
+msgid "Generated (not accepted)"
+msgstr "Vygenerováno (neakceptováno)"
+
+#: ../../../src/ui.cpp:691
+msgid "From: "
+msgstr "Od: "
+
+#: ../../../src/ui.cpp:715
+msgid "Received with: "
+msgstr "Přijato adresou: "
+
+#: ../../../src/ui.cpp:760
+msgid "Payment to yourself"
+msgstr "Platba pro sebe sama"
+
+#: ../../../src/ui.cpp:794
+msgid "To: "
+msgstr "Pro: "
+
+#: ../../../src/ui.cpp:1109
+msgid "    Generating"
+msgstr "    Generuji"
+
+#: ../../../src/ui.cpp:1111
+msgid "(not connected)"
+msgstr "(nepřipojen)"
+
+#: ../../../src/ui.cpp:1114
+#, c-format
+msgid "     %d connections     %d blocks     %d transactions"
+msgstr "     %d spojení     %d bloků     %d transakcí"
+
+#: ../../../src/ui.cpp:1171
+msgid "Wallet already encrypted."
+msgstr "Peněženka je už zašifrovaná."
+
+#: ../../../src/ui.cpp:1182
+msgid ""
+"Enter the new passphrase to the wallet.\n"
+"Please use a passphrase of 10 or more random characters, or eight or more words."
+msgstr ""
+"Zadej nové heslo pro peněženku.\n"
+"Použij alespoň 10 náhodných znaků nebo alespoň 8 slov."
+
+#: ../../../src/ui.cpp:1189
+#: ../../../src/ui.cpp:1282
+msgid "Error: The supplied passphrase was too short."
+msgstr "Chyba: Zadané heslo je příliš krátké."
+
+#: ../../../src/ui.cpp:1193
+msgid ""
+"WARNING: If you encrypt your wallet and lose your passphrase, you will LOSE ALL OF YOUR BITCOINS!\n"
+"Are you sure you wish to encrypt your wallet?"
+msgstr ""
+"VAROVÁNÍ: Pokud zašifruješ peněženku a ztratíš či zapomeneš heslo, PŘIJDEŠ O VŠECHNY BITCOINY!\n"
+"Jsi si jistý, že chceš peněženku zašifrovat?"
+
+#: ../../../src/ui.cpp:1199
+msgid "Please re-enter your new wallet passphrase."
+msgstr "Zadej ještě jednou nové heslo pro peněženku."
+
+#: ../../../src/ui.cpp:1208
+#: ../../../src/ui.cpp:1304
+msgid "Error: the supplied passphrases didn't match."
+msgstr "Chyba: zadaná hesla nejsou shodná."
+
+#: ../../../src/ui.cpp:1218
+msgid "Wallet encryption failed."
+msgstr "Zašifrování peněženky selhalo."
+
+#: ../../../src/ui.cpp:1225
+msgid ""
+"Wallet Encrypted.\n"
+"Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer."
+msgstr ""
+"Peněženka je zašifrována.\n"
+"Pamatuj, že pouhé šifrování peněženky nemůže plně ochránit tvé bitcoiny před krádeží malwarem, kterým se může počítač nakazit."
+
+#: ../../../src/ui.cpp:1236
+msgid "Wallet is unencrypted, please encrypt it first."
+msgstr "Peněženka není zašifrovaná, musíš ji prvně zašifrovat."
+
+#: ../../../src/ui.cpp:1273
+msgid "Enter the new passphrase for the wallet."
+msgstr "Zadej nové heslo pro peněženku."
+
+#: ../../../src/ui.cpp:1293
+msgid "Re-enter the new passphrase for the wallet."
+msgstr "Zadej ještě jednou nové heslo pro peněženku."
+
+#: ../../../src/ui.cpp:1325
+msgid "Wallet Passphrase Changed."
+msgstr "Heslo peněženky bylo změněno."
+
+#: ../../../src/ui.cpp:1382
+#: ../../../src/ui.cpp:2815
+msgid "New Receiving Address"
+msgstr "Nová Bitcoinová adresa"
+
+#: ../../../src/ui.cpp:1383
+#: ../../../src/ui.cpp:2816
+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:1467
+msgid "<b>Status:</b> "
+msgstr "<b>Stav:</b> "
+
+#: ../../../src/ui.cpp:1472
+msgid ", has not been successfully broadcast yet"
+msgstr ", ještě nebylo rozesláno"
+
+#: ../../../src/ui.cpp:1474
+#, c-format
+msgid ", broadcast through %d node"
+msgstr ", rozesláno přes %d uzel"
+
+#: ../../../src/ui.cpp:1476
+#, c-format
+msgid ", broadcast through %d nodes"
+msgstr ", rozesláno přes %d uzlů"
+
+#: ../../../src/ui.cpp:1480
+msgid "<b>Date:</b> "
+msgstr "<b>Datum:</b> "
+
+#: ../../../src/ui.cpp:1488
+msgid "<b>Source:</b> Generated<br>"
+msgstr "<b>Zdroj:</b> Vygenerováno<br>"
+
+#: ../../../src/ui.cpp:1494
+#: ../../../src/ui.cpp:1511
+msgid "<b>From:</b> "
+msgstr "<b>Od:</b> "
+
+#: ../../../src/ui.cpp:1511
+msgid "unknown"
+msgstr "neznámo"
+
+#: ../../../src/ui.cpp:1512
+#: ../../../src/ui.cpp:1536
+#: ../../../src/ui.cpp:1595
+msgid "<b>To:</b> "
+msgstr "<b>Pro:</b> "
+
+#: ../../../src/ui.cpp:1515
+msgid " (yours, label: "
+msgstr " (tvoje, označení: "
+
+#: ../../../src/ui.cpp:1517
+msgid " (yours)"
+msgstr " (tvoje)"
+
+#: ../../../src/ui.cpp:1554
+#: ../../../src/ui.cpp:1566
+#: ../../../src/ui.cpp:1612
+#: ../../../src/ui.cpp:1629
+msgid "<b>Credit:</b> "
+msgstr "<b>Příjem:</b> "
+
+#: ../../../src/ui.cpp:1556
+#, c-format
+msgid "(%s matures in %d more blocks)"
+msgstr "(%s dozraje po %d blocích)"
+
+#: ../../../src/ui.cpp:1558
+msgid "(not accepted)"
+msgstr "(neakceptováno)"
+
+#: ../../../src/ui.cpp:1603
+#: ../../../src/ui.cpp:1611
+#: ../../../src/ui.cpp:1626
+msgid "<b>Debit:</b> "
+msgstr "<b>Výdaj:</b> "
+
+#: ../../../src/ui.cpp:1617
+msgid "<b>Transaction fee:</b> "
+msgstr "<b>Transakční poplatek:</b> "
+
+#: ../../../src/ui.cpp:1633
+msgid "<b>Net amount:</b> "
+msgstr "<b>Čistá částka:</b> "
+
+#: ../../../src/ui.cpp:1640
+msgid "Message:"
+msgstr "Zpráva:"
+
+#: ../../../src/ui.cpp:1642
+msgid "Comment:"
+msgstr "Komentář:"
+
+#: ../../../src/ui.cpp:1645
+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:1825
+msgid "Cannot write autostart/bitcoin.desktop file"
+msgstr "Nemohu zapisovat do souboru autostart/bitcoin.desktop"
+
+#: ../../../src/ui.cpp:1861
+msgid "Main"
+msgstr "Hlavní"
+
+#: ../../../src/ui.cpp:1871
+msgid "&Start Bitcoin on window system startup"
+msgstr "&Spustit Bitcoin při startu okenního systému"
+
+#: ../../../src/ui.cpp:1878
+msgid "&Minimize on close"
+msgstr "&Zavřením pouze skrýt"
+
+#: ../../../src/ui.cpp:2020
+#, c-format
+msgid "version %s"
+msgstr "verze %s"
+
+#: ../../../src/ui.cpp:2143
+msgid "Error in amount  "
+msgstr "Chyba v částce"
+
+#: ../../../src/ui.cpp:2148
+msgid "Amount exceeds your balance  "
+msgstr "Částka překračuje stav účtu"
+
+#: ../../../src/ui.cpp:2153
+msgid "Total exceeds your balance when the "
+msgstr "Celková částka přesahuje stav tvého účtu, když "
+
+#: ../../../src/ui.cpp:2153
+msgid " transaction fee is included  "
+msgstr " transakční poplatek je zahrnut"
+
+#: ../../../src/ui.cpp:2176
+msgid "Payment sent  "
+msgstr "Platba odeslána"
+
+#: ../../../src/ui.cpp:2202
+msgid "Invalid address  "
+msgstr "Neplatná adresa"
+
+#: ../../../src/ui.cpp:2257
+#, c-format
+msgid "Sending %s to %s"
+msgstr "Posílám %s %s"
+
+#: ../../../src/ui.cpp:2330
+#: ../../../src/ui.cpp:2363
+msgid "CANCELLED"
+msgstr "ZRUŠENO"
+
+#: ../../../src/ui.cpp:2334
+msgid "Cancelled"
+msgstr "Zrušeno"
+
+#: ../../../src/ui.cpp:2336
+msgid "Transfer cancelled  "
+msgstr "Převod zrušen"
+
+#: ../../../src/ui.cpp:2389
+msgid "Error: "
+msgstr "Chyba: "
+
+#: ../../../src/ui.cpp:2408
+msgid "Connecting..."
+msgstr "Připojuji..."
+
+#: ../../../src/ui.cpp:2413
+msgid "Unable to connect"
+msgstr "Nemohu se připojit"
+
+#: ../../../src/ui.cpp:2418
+msgid "Requesting public key..."
+msgstr "Požaduji veřejný klíč..."
+
+#: ../../../src/ui.cpp:2430
+msgid "Received public key..."
+msgstr "Přijat veřejný klíč..."
+
+#: ../../../src/ui.cpp:2444
+msgid "Recipient is not accepting transactions sent by IP address"
+msgstr "Příjemce neakceptuje transakce poslané IP adresou"
+
+#: ../../../src/ui.cpp:2446
+msgid "Transfer was not accepted"
+msgstr "Převod nebyl akceptován"
+
+#: ../../../src/ui.cpp:2455
+msgid "Invalid response received"
+msgstr "Přišla neplatná odpověď"
+
+#: ../../../src/ui.cpp:2470
+msgid "Creating transaction..."
+msgstr "Vytvářím transakci..."
+
+#: ../../../src/ui.cpp:2489
+#, 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:2491
+msgid "Transaction creation failed"
+msgstr "Vytvoření transakce selhalo"
+
+#: ../../../src/ui.cpp:2502
+msgid "Transaction aborted"
+msgstr "Transakce zrušena"
+
+#: ../../../src/ui.cpp:2510
+msgid "Lost connection, transaction cancelled"
+msgstr "Spojení se ztratilo, takže transakce byla zrušena"
+
+#: ../../../src/ui.cpp:2526
+msgid "Sending payment..."
+msgstr "Posílám platbu..."
+
+#: ../../../src/ui.cpp:2532
+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:2541
+msgid "Waiting for confirmation..."
+msgstr "Čekám na potvrzení..."
+
+#: ../../../src/ui.cpp:2559
+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:2568
+msgid "Payment was sent, but an invalid response was received"
+msgstr "Platba byla odeslána, ale přišla neplatná odpověď"
+
+#: ../../../src/ui.cpp:2574
+msgid "Payment completed"
+msgstr "Platba je kompletní"
+
+#: ../../../src/ui.cpp:2616
+#: ../../../src/ui.cpp:2763
+#: ../../../src/ui.cpp:2803
+msgid "Name"
+msgstr "Jméno"
+
+#: ../../../src/ui.cpp:2617
+#: ../../../src/ui.cpp:2763
+#: ../../../src/ui.cpp:2803
+msgid "Address"
+msgstr "Adresa"
+
+#: ../../../src/ui.cpp:2619
+#: ../../../src/ui.cpp:2775
+msgid "Label"
+msgstr "Označení"
+
+#: ../../../src/ui.cpp:2745
+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:2763
+#: ../../../src/ui.cpp:2769
+msgid "Edit Address"
+msgstr "Upravit adresu"
+
+#: ../../../src/ui.cpp:2775
+msgid "Edit Address Label"
+msgstr "Upravit označení adresy"
+
+#: ../../../src/ui.cpp:2803
+#: ../../../src/ui.cpp:2809
+msgid "Add Address"
+msgstr "Přidat adresu"
+
+#: ../../../src/ui.cpp:2897
+msgid "Bitcoin"
+msgstr "Bitcoin"
+
+#: ../../../src/ui.cpp:2899
+msgid "Bitcoin - Generating"
+msgstr "Bitcoin - Generování"
+
+#: ../../../src/ui.cpp:2901
+msgid "Bitcoin - (not connected)"
+msgstr "Bitcoin - (nepřipojen)"
+
+#: ../../../src/ui.cpp:2980
+msgid "&Open Bitcoin"
+msgstr "&Otevřít Bitcoin"
+
+#: ../../../src/ui.cpp:2981
+msgid "&Send Bitcoins"
+msgstr "&Poslat Bitcoiny"
+
+#: ../../../src/ui.cpp:2982
+msgid "O&ptions..."
+msgstr "&Možnosti..."
+
+#: ../../../src/ui.cpp:3211
+msgid "Program has crashed and will terminate.  "
+msgstr "Program havaroval a bude ukončen."
+
+#: ../../../src/init.cpp:163
 msgid "Bitcoin version"
 msgstr "Bitcoin verze"
 
-#: ../../../src/init.cpp:143
+#: ../../../src/init.cpp:164
 msgid "Usage:"
 msgstr "Užití:"
 
-#: ../../../src/init.cpp:145
+#: ../../../src/init.cpp:166
 msgid "Send command to -server or bitcoind\n"
 msgstr "Poslat příkaz pro -server nebo bitcoind\n"
 
-#: ../../../src/init.cpp:146
+#: ../../../src/init.cpp:167
 msgid "List commands\n"
 msgstr "Výpis příkazů\n"
 
-#: ../../../src/init.cpp:147
+#: ../../../src/init.cpp:168
 msgid "Get help for a command\n"
 msgstr "Získat nápovědu pro příkaz\n"
 
-#: ../../../src/init.cpp:148
+#: ../../../src/init.cpp:169
 msgid "Options:\n"
 msgstr "Možnosti:\n"
 
-#: ../../../src/init.cpp:149
+#: ../../../src/init.cpp:170
 msgid "Specify configuration file (default: bitcoin.conf)\n"
 msgstr "Konfigurační soubor (výchozí: bitcoin.conf)\n"
 
-#: ../../../src/init.cpp:150
+#: ../../../src/init.cpp:171
 msgid "Specify pid file (default: bitcoind.pid)\n"
 msgstr "PID soubor (výchozí: bitcoind.pid)\n"
 
-#: ../../../src/init.cpp:151
+#: ../../../src/init.cpp:172
 msgid "Generate coins\n"
 msgstr "Generovat mince\n"
 
-#: ../../../src/init.cpp:152
+#: ../../../src/init.cpp:173
 msgid "Don't generate coins\n"
 msgstr "Negenerovat mince\n"
 
-#: ../../../src/init.cpp:153
+#: ../../../src/init.cpp:174
 msgid "Start minimized\n"
 msgstr "Startovat minimalizovaně\n"
 
-#: ../../../src/init.cpp:154
+#: ../../../src/init.cpp:175
 msgid "Specify data directory\n"
 msgstr "Adresář pro data\n"
 
-#: ../../../src/init.cpp:155
+#: ../../../src/init.cpp:176
+msgid "Specify connection timeout (in milliseconds)\n"
+msgstr "Zadej časový limit spojení (v milisekundách)\n"
+
+#: ../../../src/init.cpp:177
 msgid "Connect through socks4 proxy\n"
 msgstr "Připojovat se skrz socks4 proxy\n"
 
-#: ../../../src/init.cpp:156
+#: ../../../src/init.cpp:178
 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
+#: ../../../src/init.cpp:179
 msgid "Add a node to connect to\n"
 msgstr "Přidat uzel, ke kterému se připojit\n"
 
-#: ../../../src/init.cpp:158
+#: ../../../src/init.cpp:180
 msgid "Connect only to the specified node\n"
 msgstr "Připojovat se pouze k udanému uzlu\n"
 
-#: ../../../src/init.cpp:159
+#: ../../../src/init.cpp:181
 msgid "Don't accept connections from outside\n"
 msgstr "Nepřijímat připojení zvenčí\n"
 
-#: ../../../src/init.cpp:162
+#: ../../../src/init.cpp:184
 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
+#: ../../../src/init.cpp:186
 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
+#: ../../../src/init.cpp:189
 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
+#: ../../../src/init.cpp:191
 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
+#: ../../../src/init.cpp:194
 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
+#: ../../../src/init.cpp:196
 msgid "Use the test network\n"
 msgstr "Použít testovací síť\n"
 
-#: ../../../src/init.cpp:175
+#: ../../../src/init.cpp:197
 msgid "Username for JSON-RPC connections\n"
 msgstr "Uživatelské jméno pro JSON-RPC spojení\n"
 
-#: ../../../src/init.cpp:176
+#: ../../../src/init.cpp:198
 msgid "Password for JSON-RPC connections\n"
 msgstr "Heslo pro JSON-RPC spojení\n"
 
-#: ../../../src/init.cpp:177
+#: ../../../src/init.cpp:199
 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
+#: ../../../src/init.cpp:200
 msgid "Allow JSON-RPC connections from specified IP address\n"
 msgstr "Povolit JSON-RPC spojení ze specifikované IP adresy\n"
 
-#: ../../../src/init.cpp:179
+#: ../../../src/init.cpp:201
 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
+#: ../../../src/init.cpp:202
 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
+#: ../../../src/init.cpp:203
 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
+#: ../../../src/init.cpp:207
 msgid ""
 "\n"
 "SSL options: (see the Bitcoin Wiki for SSL setup instructions)\n"
@@ -904,68 +993,87 @@
 "\n"
 "Možnosti SSL: (viz instrukce nastavení SSL v Bitcoin Wiki)\n"
 
-#: ../../../src/init.cpp:186
+#: ../../../src/init.cpp:208
 msgid "Use OpenSSL (https) for JSON-RPC connections\n"
 msgstr "Použít OpenSSL (https) pro JSON-RPC spojení\n"
 
-#: ../../../src/init.cpp:187
+#: ../../../src/init.cpp:209
 msgid "Server certificate file (default: server.cert)\n"
 msgstr "Soubor se serverovým certifikátem (výchozí: server.cert)\n"
 
-#: ../../../src/init.cpp:188
+#: ../../../src/init.cpp:210
 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
+#: ../../../src/init.cpp:211
 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
+#: ../../../src/init.cpp:215
 msgid "This help message\n"
 msgstr "Tato nápověda\n"
 
-#: ../../../src/init.cpp:330
+#: ../../../src/init.cpp:353
 #, 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
+#: ../../../src/init.cpp:379
 msgid "Error loading addr.dat      \n"
 msgstr "Chyba při načítání addr.dat      \n"
 
-#: ../../../src/init.cpp:362
+#: ../../../src/init.cpp:385
 msgid "Error loading blkindex.dat      \n"
 msgstr "Chyba při načítání blkindex.dat      \n"
 
-#: ../../../src/init.cpp:369
+#: ../../../src/init.cpp:396
+msgid "Error loading wallet.dat: Wallet corrupted      \n"
+msgstr "Chyba při načítání wallet.dat: peněženka je poškozená      \n"
+
+#: ../../../src/init.cpp:398
+msgid "Error loading wallet.dat: Wallet requires newer version of Bitcoin      \n"
+msgstr "Chyba při načítání wallet.dat: peněženka vyžaduje novější verzi Bitcoinu      \n"
+
+#: ../../../src/init.cpp:400
 msgid "Error loading wallet.dat      \n"
 msgstr "Chyba při načítání wallet.dat      \n"
 
-#: ../../../src/init.cpp:449
+#: ../../../src/init.cpp:489
 msgid "Invalid -proxy address"
 msgstr "Neplatná -proxy adresa"
 
-#: ../../../src/init.cpp:472
+#: ../../../src/init.cpp:514
 msgid "Invalid amount for -paytxfee=<amount>"
 msgstr "Neplatná částka pro -paytxfee=<částka>"
 
-#: ../../../src/init.cpp:476
+#: ../../../src/init.cpp:518
 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
+#: ../../../src/net.cpp:1622
+#, 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/main.cpp:1437
+msgid "Warning: Disk space is low  "
+msgstr "Upozornění: Na disku je málo místa"
+
+#: ../../../src/uibase.h:151
 msgid "Transaction Details"
 msgstr "Detaily transakce"
 
-#: ../../../src/uibase.h:199
+#: ../../../src/uibase.h:203
 msgid "Options"
 msgstr "Možnosti"
 
-#: ../../../src/uibase.h:228
+#: ../../../src/uibase.h:232
 msgid "About Bitcoin"
 msgstr "O Bitcoinu"
 
-#: ../../../src/uibase.h:337
+#: ../../../src/uibase.h:341
 msgid "Your Bitcoin Addresses"
 msgstr "Tvá Bitcoinová adresa"
 
+#~ msgid "Invalid bitcoin address"
+#~ msgstr "Neplatná Bitcoinová adresa"
--- a/locale/pl/LC_MESSAGES/bitcoin.po
+++ b/locale/pl/LC_MESSAGES/bitcoin.po
@@ -2,10 +2,10 @@
 msgstr ""
 "Project-Id-Version: Bitcoin\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-07-14 18:55+0100\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"
+"Last-Translator: Krystian Maksymowicz <krystian.maksymowicz@gmail.com>\n"
+"Language-Team: Spiechu <spiechu@gmail.com>, Krystian Maksymowicz <krystian.maksymowicz@gmail.com>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -18,10 +18,10 @@
 "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:1615
+#: ../../../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."
+msgstr "Powiązanie z portem %d nie powiodło się. Prawdopodobnie Bitcoin jest już uruchomiony."
 
 #: ../../../src/init.cpp:162
 msgid "Bitcoin version"
@@ -29,7 +29,7 @@
 
 #: ../../../src/init.cpp:163
 msgid "Usage:"
-msgstr "Użycie:"
+msgstr "Zastosowanie:"
 
 #: ../../../src/init.cpp:165
 msgid "Send command to -server or bitcoind\n"
@@ -37,7 +37,7 @@
 
 #: ../../../src/init.cpp:166
 msgid "List commands\n"
-msgstr "Wyświetl komendy\n"
+msgstr "Lista komend\n"
 
 #: ../../../src/init.cpp:167
 msgid "Get help for a command\n"
@@ -53,7 +53,7 @@
 
 #: ../../../src/init.cpp:170
 msgid "Specify pid file (default: bitcoind.pid)\n"
-msgstr "Wybierz plik pid (domyślnie: bitcoind.pid)\n"
+msgstr "Określ plik pid (domyślnie: bitcoind.pid)\n"
 
 #: ../../../src/init.cpp:171
 msgid "Generate coins\n"
@@ -69,20 +69,22 @@
 
 #: ../../../src/init.cpp:174
 msgid "Specify data directory\n"
-msgstr "Wybierz katalog z danymi\n"
+msgstr "Określ katalog danych\n"
 
 #: ../../../src/init.cpp:175
 msgid "Specify connection timeout (in milliseconds)\n"
-msgstr "Ustaw czas upływu połączenia (w milisekundach)\n"
+msgstr "Ustaw limit czasu połączenia (w milisekundach)\n"
 
 #: ../../../src/init.cpp:176
 msgid "Connect through socks4 proxy\n"
-msgstr "Połącz przez socks4 proxy\n"
+msgstr "Połącz przez proxy socks4\n"
 
+# 2do
 #: ../../../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"
+msgstr "Umożliwiaj wyszukiwanie DNS przy dodawaniu węzła i połączenia\n"
 
+# 2do
 #: ../../../src/init.cpp:178
 msgid "Add a node to connect to\n"
 msgstr "Dodaj węzeł do którego połączyć\n"
@@ -188,37 +190,29 @@
 msgid "Error loading blkindex.dat      \n"
 msgstr "Błąd ładowania blkindex.dat      \n"
 
-#: ../../../src/init.cpp:394
-msgid "Error loading wallet.dat: Wallet corrupted      \n"
-msgstr "Błąd ładowania wallet.dat: Portfel uszkodzony      \n"
-
-#: ../../../src/init.cpp:396
-msgid "Error loading wallet.dat: Wallet requires newer version of Bitcoin      \n"
-msgstr "Błąd ładowania wallet.dat: Portfel wymaga nowszej wersji Bitcoin      \n"
-
-#: ../../../src/init.cpp:398
+#: ../../../src/init.cpp:391
 msgid "Error loading wallet.dat      \n"
 msgstr "Błąd ładowania wallet.dat      \n"
 
-#: ../../../src/init.cpp:488
+#: ../../../src/init.cpp:481
 msgid "Invalid -proxy address"
 msgstr "Niewłaściwy adres -proxy"
 
-#: ../../../src/init.cpp:513
+#: ../../../src/init.cpp:504
 msgid "Invalid amount for -paytxfee=<amount>"
 msgstr "Nieprawidłowa kwota w -paytxfee=<amount>"
 
-#: ../../../src/init.cpp:517
+#: ../../../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:2100
-#: ../../../src/rpc.cpp:2102
+#: ../../../src/rpc.cpp:1822
+#: ../../../src/rpc.cpp:1824
 #, c-format
 msgid "To use the %s option"
 msgstr "Użycie opcji %s"
 
-#: ../../../src/rpc.cpp:2104
+#: ../../../src/rpc.cpp:1826
 #, c-format
 msgid ""
 "Warning: %s, you must set rpcpassword=<password>\n"
@@ -229,7 +223,7 @@
 "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:2277
+#: ../../../src/rpc.cpp:1994
 #, c-format
 msgid ""
 "You must set rpcpassword=<password> in the configuration file:\n"
@@ -240,454 +234,368 @@
 "%s\n"
 "Jeżeli plik nie istnieje, utwórz go z uprawnieniami tylko do odczytu dla właściciela."
 
-#: ../../../src/util.cpp:869
+#: ../../../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ł."
+msgstr "Ostrzeżenie: Sprawdź czy ustawienia daty i czasu komputera są prawidłowe. Jeżeli zegar jest źle ustawiony, Bitcoin nie będzie działał poprawnie."
 
-#: ../../../src/util.cpp:903
+#: ../../../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:259
-#: ../../../src/ui.cpp:1246
-msgid "Enter the current passphrase to the wallet."
-msgstr "Wpisz obecne hasło do portfela."
-
-#: ../../../src/ui.cpp:260
-#: ../../../src/ui.cpp:1182
-#: ../../../src/ui.cpp:1199
-#: ../../../src/ui.cpp:1247
-#: ../../../src/ui.cpp:1273
-#: ../../../src/ui.cpp:1293
-msgid "Passphrase"
-msgstr "Hasło"
+msgstr "Ta transakcja przekracza limit wielkości. W dalszym ciągu możesz ją wysłać z prowizją %s, która dotrze do węzłów przetwarzających twoją transakcję i pomoże utrzymać całą sieć. Chcesz zapłacić prowizję?"
 
-#: ../../../src/ui.cpp:266
-msgid "Please supply the current wallet decryption passphrase."
-msgstr "Proszę dostarczyć hasło do odszyfrowania portfela."
+#: ../../../src/ui.cpp:316
+msgid "Status"
+msgstr "Stan"
 
-#: ../../../src/ui.cpp:274
-#: ../../../src/ui.cpp:1258
-#: ../../../src/ui.cpp:1315
-msgid "The passphrase entered for the wallet decryption was incorrect."
-msgstr "Wpisane hasło do odszyfrowania portfela jest nieprawidłowe."
-
-#: ../../../src/ui.cpp:351
-msgid "Status"
-msgstr "Status"
-
-#: ../../../src/ui.cpp:352
+#: ../../../src/ui.cpp:317
 msgid "Date"
 msgstr "Data"
 
-#: ../../../src/ui.cpp:353
+#: ../../../src/ui.cpp:318
 msgid "Description"
 msgstr "Opis"
 
-#: ../../../src/ui.cpp:354
+#: ../../../src/ui.cpp:319
 msgid "Debit"
-msgstr "Obciążenie"
+msgstr "Debet"
 
-#: ../../../src/ui.cpp:355
+#: ../../../src/ui.cpp:320
 msgid "Credit"
-msgstr "Suma"
+msgstr "Kredyt"
 
-#: ../../../src/ui.cpp:566
+#: ../../../src/ui.cpp:526
 #, c-format
 msgid "Open for %d blocks"
 msgstr "Otwórz na %d bloków"
 
-#: ../../../src/ui.cpp:568
+#: ../../../src/ui.cpp:528
 #, c-format
 msgid "Open until %s"
 msgstr "Otwarte dopóki %s"
 
-#: ../../../src/ui.cpp:574
+#: ../../../src/ui.cpp:534
 #, c-format
 msgid "%d/offline?"
 msgstr "%d/offline?"
 
-#: ../../../src/ui.cpp:576
+#: ../../../src/ui.cpp:536
 #, c-format
 msgid "%d/unconfirmed"
-msgstr "%d/niepotwierdzono"
+msgstr "%d/niepotwierdzona"
 
-#: ../../../src/ui.cpp:578
+#: ../../../src/ui.cpp:538
 #, c-format
 msgid "%d confirmations"
 msgstr "%d potwierdzeń"
 
-#: ../../../src/ui.cpp:663
+#: ../../../src/ui.cpp:623
 msgid "Generated"
 msgstr "Wygenerowano"
 
-#: ../../../src/ui.cpp:671
+#: ../../../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:675
+#: ../../../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:679
+#: ../../../src/ui.cpp:639
 msgid "Generated (not accepted)"
 msgstr "Wygenerowano (nie zaakceptowano)"
 
-#: ../../../src/ui.cpp:689
+#: ../../../src/ui.cpp:649
 msgid "From: "
 msgstr "Od:"
 
-#: ../../../src/ui.cpp:713
+#: ../../../src/ui.cpp:673
 msgid "Received with: "
 msgstr "Otrzymano z:"
 
-#: ../../../src/ui.cpp:759
+#: ../../../src/ui.cpp:719
 msgid "Payment to yourself"
 msgstr "Płatność dla siebie samego"
 
-#: ../../../src/ui.cpp:793
+#: ../../../src/ui.cpp:753
 msgid "To: "
 msgstr "Do:"
 
-#: ../../../src/ui.cpp:1108
+#: ../../../src/ui.cpp:1068
 msgid "    Generating"
 msgstr "    Generowanie"
 
-#: ../../../src/ui.cpp:1110
+#: ../../../src/ui.cpp:1070
 msgid "(not connected)"
 msgstr "(nie połączony)"
 
-#: ../../../src/ui.cpp:1113
+#: ../../../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:1170
-msgid "Wallet already encrypted."
-msgstr "Portfel już zaszyfrowany."
-
-#: ../../../src/ui.cpp:1181
-msgid ""
-"Enter the new passphrase to the wallet.\n"
-"Please use a passphrase of 10 or more random characters, or eight or more words."
-msgstr ""
-"Wpisz nowe hasło dla portfela.\n"
-"Proszę użyć hasła składającego się z 10 lub więcej losowych znaków albo ośmiu lub więcej słów."
-
-#: ../../../src/ui.cpp:1188
-#: ../../../src/ui.cpp:1281
-msgid "Error: The supplied passphrase was too short."
-msgstr "Błąd: Dostarczone hasło jest za krótkie."
-
-#: ../../../src/ui.cpp:1192
-msgid ""
-"WARNING: If you encrypt your wallet and lose your passphrase, you will LOSE ALL OF YOUR BITCOINS!\n"
-"Are you sure you wish to encrypt your wallet?"
-msgstr ""
-"OSTRZEŻENIE: Jeżeli zaszyfrujesz swój portfel i zgubisz hasło, STRACISZ WSZYSTKIE SWOJE BITCOINY!\n"
-"Czy jesteś pewny, że chcesz zaszyfrować swój portfel?"
-
-#: ../../../src/ui.cpp:1198
-msgid "Please re-enter your new wallet passphrase."
-msgstr "Proszę powtórzyć nowe hasło do portfela."
-
-#: ../../../src/ui.cpp:1207
-#: ../../../src/ui.cpp:1303
-msgid "Error: the supplied passphrases didn't match."
-msgstr "Błąd: dostarczone hasła się nie zgadzają."
+#: ../../../src/ui.cpp:1178
+#: ../../../src/ui.cpp:2571
+msgid "New Receiving Address"
+msgstr "Nowy adres odbiorczy"
 
-#: ../../../src/ui.cpp:1217
-msgid "Wallet encryption failed."
-msgstr "Szyfrowanie portfela nie powiodło się."
-
-#: ../../../src/ui.cpp:1224
-msgid ""
-"Wallet Encrypted.\n"
-"Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer."
-msgstr ""
-"Portfel zaszyfrowany.\n"
-"Pamiętaj, że zaszyfrowanie portfela nie chroni w pełni twoich bitcoinów przed kradzieżą przeprowadzoną przez złośliwe oprogramowanie infekujące twój komputer."
-
-#: ../../../src/ui.cpp:1235
-msgid "Wallet is unencrypted, please encrypt it first."
-msgstr "Portfel jest niezaszyfrowany, proszę najpierw zaszyfrować."
-
-#: ../../../src/ui.cpp:1272
-msgid "Enter the new passphrase for the wallet."
-msgstr "Wprowadź nowe hasło dla portfela."
-
-#: ../../../src/ui.cpp:1292
-msgid "Re-enter the new passphrase for the wallet."
-msgstr "Powtórnie wprowadź nowe hasło dla portfela."
-
-#: ../../../src/ui.cpp:1324
-msgid "Wallet Passphrase Changed."
-msgstr "Hasło dla portfela zostało zmienione."
-
-#: ../../../src/ui.cpp:1381
-#: ../../../src/ui.cpp:2816
-msgid "New Receiving Address"
-msgstr "Nowy Adres Odbiorczy"
-
-#: ../../../src/ui.cpp:1382
-#: ../../../src/ui.cpp:2817
+#: ../../../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"
+"Powinieneś używać nowych adresów dla każdej otrzymywanej płatności.\n"
 "\n"
 "Etykieta"
 
-#: ../../../src/ui.cpp:1466
+#: ../../../src/ui.cpp:1251
 msgid "<b>Status:</b> "
 msgstr "<b>Status:</b>"
 
-#: ../../../src/ui.cpp:1471
+#: ../../../src/ui.cpp:1256
 msgid ", has not been successfully broadcast yet"
 msgstr ", nie został jeszcze prawidłowo rozgłoszony"
 
-#: ../../../src/ui.cpp:1473
+#: ../../../src/ui.cpp:1258
 #, c-format
 msgid ", broadcast through %d node"
 msgstr ", rozgłasza przez %d węzeł"
 
-#: ../../../src/ui.cpp:1475
+#: ../../../src/ui.cpp:1260
 #, c-format
 msgid ", broadcast through %d nodes"
 msgstr ", rozgłasza przez %d węzłów"
 
-#: ../../../src/ui.cpp:1479
+#: ../../../src/ui.cpp:1264
 msgid "<b>Date:</b> "
 msgstr "<b>Data:</b>"
 
-#: ../../../src/ui.cpp:1487
+#: ../../../src/ui.cpp:1272
 msgid "<b>Source:</b> Generated<br>"
 msgstr "<b>Źródło:</b> Wygenerowano<br>"
 
-#: ../../../src/ui.cpp:1493
-#: ../../../src/ui.cpp:1511
+#: ../../../src/ui.cpp:1278
+#: ../../../src/ui.cpp:1296
 msgid "<b>From:</b> "
 msgstr "<b>Od:</b>"
 
-#: ../../../src/ui.cpp:1511
+#: ../../../src/ui.cpp:1296
 msgid "unknown"
 msgstr "nieznany"
 
-#: ../../../src/ui.cpp:1512
-#: ../../../src/ui.cpp:1536
-#: ../../../src/ui.cpp:1595
+#: ../../../src/ui.cpp:1297
+#: ../../../src/ui.cpp:1321
+#: ../../../src/ui.cpp:1380
 msgid "<b>To:</b> "
 msgstr "<b>Do:</b>"
 
-#: ../../../src/ui.cpp:1515
+#: ../../../src/ui.cpp:1300
 msgid " (yours, label: "
 msgstr " (twoja, etykieta: "
 
-#: ../../../src/ui.cpp:1517
+#: ../../../src/ui.cpp:1302
 msgid " (yours)"
 msgstr " (twoja)"
 
-#: ../../../src/ui.cpp:1554
-#: ../../../src/ui.cpp:1566
-#: ../../../src/ui.cpp:1612
-#: ../../../src/ui.cpp:1629
+#: ../../../src/ui.cpp:1339
+#: ../../../src/ui.cpp:1351
+#: ../../../src/ui.cpp:1397
+#: ../../../src/ui.cpp:1414
 msgid "<b>Credit:</b> "
-msgstr "<b>Suma:</b>"
+msgstr "<b>Kredyt:</b>"
 
-#: ../../../src/ui.cpp:1556
+#: ../../../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:1558
+#: ../../../src/ui.cpp:1343
 msgid "(not accepted)"
 msgstr "(nie zaakceptowano)"
 
-#: ../../../src/ui.cpp:1603
-#: ../../../src/ui.cpp:1611
-#: ../../../src/ui.cpp:1626
+#: ../../../src/ui.cpp:1388
+#: ../../../src/ui.cpp:1396
+#: ../../../src/ui.cpp:1411
 msgid "<b>Debit:</b> "
-msgstr "<b>Obciążenie:</b>"
+msgstr "<b>Debet:</b>"
 
-#: ../../../src/ui.cpp:1617
+#: ../../../src/ui.cpp:1402
 msgid "<b>Transaction fee:</b> "
 msgstr "<b>Prowizja transakcji:</b>"
 
-#: ../../../src/ui.cpp:1633
+#: ../../../src/ui.cpp:1418
 msgid "<b>Net amount:</b> "
 msgstr "<b>Kwota netto:</b>"
 
-#: ../../../src/ui.cpp:1640
+#: ../../../src/ui.cpp:1425
 msgid "Message:"
 msgstr "Wiadomość:"
 
-#: ../../../src/ui.cpp:1642
+#: ../../../src/ui.cpp:1427
 msgid "Comment:"
 msgstr "Komentarz:"
 
-#: ../../../src/ui.cpp:1645
+#: ../../../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."
+msgstr "Wygenerowane monety muszą poczekać 120 bloków zanim będą mogły być wydane. Wygenerowany blok został został rozgłoszony w sieci z przeznaczeniem dodawania nowych bloków do łańcucha. Jeżeli nie uda się go dodać do łańcucha, zostanie oznaczony jako \"nie zaakceptowany\" i nie będzie mógł być wydany. Sporadycznie dzieje się tak jeżeli inny węzeł wygeneruje blok nie dalej niż kilka sekund od ciebie."
 
-#: ../../../src/ui.cpp:1825
+#: ../../../src/ui.cpp:1610
 msgid "Cannot write autostart/bitcoin.desktop file"
 msgstr "Nie mogę zapisać pliku autostart/bitcoin.desktop"
 
-#: ../../../src/ui.cpp:1861
+#: ../../../src/ui.cpp:1646
 msgid "Main"
 msgstr "Główne"
 
-#: ../../../src/ui.cpp:1871
+#: ../../../src/ui.cpp:1656
 msgid "&Start Bitcoin on window system startup"
 msgstr "&Uruchom Bitcoin przy starcie systemu"
 
-#: ../../../src/ui.cpp:1878
+#: ../../../src/ui.cpp:1663
 msgid "&Minimize on close"
 msgstr "&Minimalizuj przy zamknięciu"
 
-#: ../../../src/ui.cpp:2020
+#: ../../../src/ui.cpp:1805
 #, c-format
 msgid "version %s"
 msgstr "wersja %s"
 
-#: ../../../src/ui.cpp:2143
+#: ../../../src/ui.cpp:1928
 msgid "Error in amount  "
 msgstr "Nieprawidłowa kwota"
 
-#: ../../../src/ui.cpp:2143
-#: ../../../src/ui.cpp:2148
-#: ../../../src/ui.cpp:2153
-#: ../../../src/ui.cpp:2202
-#: ../../../src/uibase.cpp:61
+#: ../../../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:2148
+#: ../../../src/ui.cpp:1933
 msgid "Amount exceeds your balance  "
 msgstr "Kwota przekracza twój stan konta"
 
-#: ../../../src/ui.cpp:2153
+#: ../../../src/ui.cpp:1938
 msgid "Total exceeds your balance when the "
 msgstr "Przekroczenie twojego stanu konta gdy"
 
-#: ../../../src/ui.cpp:2153
+#: ../../../src/ui.cpp:1938
 msgid " transaction fee is included  "
 msgstr " prowizja jest wliczona"
 
-#: ../../../src/ui.cpp:2176
+#: ../../../src/ui.cpp:1956
 msgid "Payment sent  "
 msgstr "Wysłano płatność"
 
-#: ../../../src/ui.cpp:2176
-#: ../../../src/ui.cpp:2185
-#: ../../../src/ui.cpp:2336
-#: ../../../src/ui.cpp:2500
-#: ../../../src/wallet.cpp:1097
+#: ../../../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:2202
+#: ../../../src/ui.cpp:1973
 msgid "Invalid address  "
 msgstr "Nieprawidłowy adres"
 
-#: ../../../src/ui.cpp:2257
+#: ../../../src/ui.cpp:2028
 #, c-format
 msgid "Sending %s to %s"
 msgstr "Wysyłanie %s do %s"
 
-#: ../../../src/ui.cpp:2330
-#: ../../../src/ui.cpp:2363
+#: ../../../src/ui.cpp:2101
+#: ../../../src/ui.cpp:2134
 msgid "CANCELLED"
 msgstr "ANULOWANO"
 
-#: ../../../src/ui.cpp:2334
+#: ../../../src/ui.cpp:2105
 msgid "Cancelled"
 msgstr "Anulowano"
 
-#: ../../../src/ui.cpp:2336
+#: ../../../src/ui.cpp:2107
 msgid "Transfer cancelled  "
-msgstr "Transfer anulowano"
+msgstr "Transfer anulowany"
 
-#: ../../../src/ui.cpp:2389
+#: ../../../src/ui.cpp:2160
 msgid "Error: "
 msgstr "Błąd:"
 
-#: ../../../src/ui.cpp:2403
-#: ../../../src/ui.cpp:2474
-#: ../../../src/wallet.cpp:1116
+#: ../../../src/ui.cpp:2174
+#: ../../../src/ui.cpp:2245
+#: ../../../src/wallet.cpp:943
 msgid "Insufficient funds"
 msgstr "Niewystarczające fundusze"
 
-#: ../../../src/ui.cpp:2408
+#: ../../../src/ui.cpp:2179
 msgid "Connecting..."
 msgstr "Łączenie..."
 
-#: ../../../src/ui.cpp:2413
+#: ../../../src/ui.cpp:2184
 msgid "Unable to connect"
 msgstr "Nie można połączyć"
 
-#: ../../../src/ui.cpp:2418
+#: ../../../src/ui.cpp:2189
 msgid "Requesting public key..."
 msgstr "Żądanie klucza publicznego..."
 
-#: ../../../src/ui.cpp:2430
+#: ../../../src/ui.cpp:2201
 msgid "Received public key..."
 msgstr "Otrzymano klucz publiczny..."
 
-#: ../../../src/ui.cpp:2444
+#: ../../../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:2446
+#: ../../../src/ui.cpp:2217
 msgid "Transfer was not accepted"
 msgstr "Transfer nie został zaakceptowany"
 
-#: ../../../src/ui.cpp:2455
+#: ../../../src/ui.cpp:2226
 msgid "Invalid response received"
 msgstr "Otrzymano niepoprawną odpowiedź"
 
-#: ../../../src/ui.cpp:2470
+#: ../../../src/ui.cpp:2241
 msgid "Creating transaction..."
 msgstr "Tworzenie transakcji..."
 
-#: ../../../src/ui.cpp:2489
+#: ../../../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"
+msgstr "Ta transakcja wymaga prowizji co najmniej %s z uwagi na jej kwotę, złożoność lub wykorzystanie niedawno otrzymanych funduszy"
 
-#: ../../../src/ui.cpp:2491
+#: ../../../src/ui.cpp:2255
 msgid "Transaction creation failed"
 msgstr "Błąd tworzenia transakcji "
 
-#: ../../../src/ui.cpp:2502
+#: ../../../src/ui.cpp:2262
 msgid "Transaction aborted"
-msgstr "Transakcję przerwano"
+msgstr "Przerwano transakcję"
 
-#: ../../../src/ui.cpp:2510
+#: ../../../src/ui.cpp:2270
 msgid "Lost connection, transaction cancelled"
 msgstr "Utracono połączenie, transakcja anulowana"
 
-#: ../../../src/ui.cpp:2526
+#: ../../../src/ui.cpp:2286
 msgid "Sending payment..."
 msgstr "Wysyłanie płatności..."
 
-#: ../../../src/ui.cpp:2532
+#: ../../../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:2541
+#: ../../../src/ui.cpp:2301
 msgid "Waiting for confirmation..."
 msgstr "Oczekiwanie na potwierdzenie..."
 
-#: ../../../src/ui.cpp:2559
+#: ../../../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"
@@ -697,86 +605,86 @@
 "Transakcja została zarejestrowana i zostanie przypisana do odbiorcy,\n"
 "ale informacja w komentarzu będzie pusta."
 
-#: ../../../src/ui.cpp:2568
+#: ../../../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:2574
+#: ../../../src/ui.cpp:2334
 msgid "Payment completed"
 msgstr "Płatność zakończona"
 
-#: ../../../src/ui.cpp:2616
-#: ../../../src/ui.cpp:2764
-#: ../../../src/ui.cpp:2804
+#: ../../../src/ui.cpp:2376
+#: ../../../src/ui.cpp:2522
+#: ../../../src/ui.cpp:2559
 msgid "Name"
 msgstr "Nazwa"
 
-#: ../../../src/ui.cpp:2617
-#: ../../../src/ui.cpp:2764
-#: ../../../src/ui.cpp:2804
+#: ../../../src/ui.cpp:2377
+#: ../../../src/ui.cpp:2522
+#: ../../../src/ui.cpp:2559
 msgid "Address"
 msgstr "Adres"
 
-#: ../../../src/ui.cpp:2619
-#: ../../../src/ui.cpp:2776
+#: ../../../src/ui.cpp:2379
+#: ../../../src/ui.cpp:2534
 msgid "Label"
 msgstr "Etykieta"
 
-#: ../../../src/ui.cpp:2620
-#: ../../../src/uibase.cpp:847
+#: ../../../src/ui.cpp:2380
+#: ../../../src/uibase.cpp:837
 msgid "Bitcoin Address"
 msgstr "Adres Bitcoin"
 
-#: ../../../src/ui.cpp:2746
+#: ../../../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."
+msgstr "To jest jeden z twoich adresów na otrzymywane płatności i nie może zostać wpisany do książki adresowej."
 
-#: ../../../src/ui.cpp:2764
-#: ../../../src/ui.cpp:2770
+#: ../../../src/ui.cpp:2522
+#: ../../../src/ui.cpp:2528
 msgid "Edit Address"
-msgstr "Edytuj Adres"
+msgstr "Edytuj adres"
 
-#: ../../../src/ui.cpp:2776
+#: ../../../src/ui.cpp:2534
 msgid "Edit Address Label"
-msgstr "Edytuj Etykietę Adresu"
+msgstr "Edytuj etykietę adresu"
 
-#: ../../../src/ui.cpp:2804
-#: ../../../src/ui.cpp:2810
+#: ../../../src/ui.cpp:2559
+#: ../../../src/ui.cpp:2565
 msgid "Add Address"
-msgstr "Dodaj Adres"
+msgstr "Dodaj adres"
 
-#: ../../../src/ui.cpp:2898
+#: ../../../src/ui.cpp:2642
 msgid "Bitcoin"
 msgstr "Bitcoin"
 
-#: ../../../src/ui.cpp:2900
+#: ../../../src/ui.cpp:2644
 msgid "Bitcoin - Generating"
 msgstr "Bitcoin - Generowanie"
 
-#: ../../../src/ui.cpp:2902
+#: ../../../src/ui.cpp:2646
 msgid "Bitcoin - (not connected)"
 msgstr "Bitcoin - (nie połączony)"
 
-#: ../../../src/ui.cpp:2981
+#: ../../../src/ui.cpp:2725
 msgid "&Open Bitcoin"
 msgstr "&Otwórz Bitcoin"
 
-#: ../../../src/ui.cpp:2982
+#: ../../../src/ui.cpp:2726
 msgid "&Send Bitcoins"
 msgstr "&Wyślij Bitcoiny"
 
-#: ../../../src/ui.cpp:2983
+#: ../../../src/ui.cpp:2727
 msgid "O&ptions..."
 msgstr "O&pcje..."
 
-#: ../../../src/ui.cpp:2986
+#: ../../../src/ui.cpp:2730
 #: ../../../src/uibase.cpp:25
 msgid "E&xit"
 msgstr "W&yjście"
 
-#: ../../../src/ui.cpp:3212
+#: ../../../src/ui.cpp:2956
 msgid "Program has crashed and will terminate.  "
-msgstr "Program uległ awarii i zostanie przerwany."
+msgstr "Program uległ awarii i zostanie zamknięty."
 
 #: ../../../src/main.cpp:1430
 msgid "Warning: Disk space is low  "
@@ -788,162 +696,154 @@
 
 #: ../../../src/uibase.cpp:32
 msgid "&Your Receiving Addresses..."
-msgstr "&Twój Adres Odbiorczy..."
-
-#: ../../../src/uibase.cpp:35
-msgid "&Encrypt Wallet..."
-msgstr "&Zaszyfruj portfel..."
+msgstr "&Twój adres odbiorczy..."
 
-#: ../../../src/uibase.cpp:38
-msgid "&Change Wallet Encryption Passphrase..."
-msgstr "&Zmień hasło szyfrowania portfela..."
-
-#: ../../../src/uibase.cpp:42
+#: ../../../src/uibase.cpp:36
 msgid "&Options..."
 msgstr "&Opcje..."
 
-#: ../../../src/uibase.cpp:45
+#: ../../../src/uibase.cpp:39
 msgid "&Settings"
 msgstr "&Ustawienia"
 
-#: ../../../src/uibase.cpp:49
+#: ../../../src/uibase.cpp:43
 msgid "&About..."
 msgstr "&O programie..."
 
-#: ../../../src/uibase.cpp:52
+#: ../../../src/uibase.cpp:46
 msgid "&Help"
 msgstr "&Pomoc"
 
-#: ../../../src/uibase.cpp:62
+#: ../../../src/uibase.cpp:56
 msgid "Address Book"
-msgstr "Księga Adresowa"
+msgstr "Książka adresowa"
 
-#: ../../../src/uibase.cpp:75
+#: ../../../src/uibase.cpp:69
 msgid "Your Bitcoin Address:"
-msgstr "Twój Adres Bitcoin:"
+msgstr "Twój adres Bitcoin:"
 
-#: ../../../src/uibase.cpp:82
+#: ../../../src/uibase.cpp:76
 msgid " &New... "
 msgstr " &Nowy..."
 
-#: ../../../src/uibase.cpp:85
-#: ../../../src/uibase.cpp:790
-#: ../../../src/uibase.cpp:893
+#: ../../../src/uibase.cpp:79
+#: ../../../src/uibase.cpp:780
+#: ../../../src/uibase.cpp:883
 msgid " &Copy to Clipboard "
 msgstr " &Kopiuj do schowka "
 
-#: ../../../src/uibase.cpp:99
+#: ../../../src/uibase.cpp:93
 msgid "Balance:"
 msgstr "Saldo:"
 
-#: ../../../src/uibase.cpp:115
+#: ../../../src/uibase.cpp:109
 msgid " All"
 msgstr " Wszystko"
 
-#: ../../../src/uibase.cpp:115
+#: ../../../src/uibase.cpp:109
 msgid " Sent"
-msgstr "Wysłano"
+msgstr " Wysłano"
 
-#: ../../../src/uibase.cpp:115
+#: ../../../src/uibase.cpp:109
 msgid " Received"
-msgstr "Otrzymano"
+msgstr " Otrzymano"
 
-#: ../../../src/uibase.cpp:115
+#: ../../../src/uibase.cpp:109
 msgid " In Progress"
-msgstr "W Trakcie"
+msgstr "W realizacji"
 
-#: ../../../src/uibase.cpp:136
+#: ../../../src/uibase.cpp:130
 msgid "All Transactions"
-msgstr "Wszystkie Transakcje"
+msgstr "Wszystkie transakcje"
 
-#: ../../../src/uibase.cpp:147
+#: ../../../src/uibase.cpp:141
 msgid "Sent/Received"
-msgstr "Wysłano/Otrzymano"
+msgstr "Wysłane/Otrzymane"
 
-#: ../../../src/uibase.cpp:158
+#: ../../../src/uibase.cpp:152
 msgid "Sent"
-msgstr "Wysłano"
+msgstr "Wysłane"
 
-#: ../../../src/uibase.cpp:169
+#: ../../../src/uibase.cpp:163
 msgid "Received"
-msgstr "Otrzymano"
+msgstr "Otrzymane"
 
-#: ../../../src/uibase.cpp:312
-#: ../../../src/uibase.cpp:453
-#: ../../../src/uibase.cpp:552
-#: ../../../src/uibase.cpp:732
-#: ../../../src/uibase.cpp:793
-#: ../../../src/uibase.cpp:902
-#: ../../../src/uibase.cpp:991
+#: ../../../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:355
+#: ../../../src/uibase.cpp:345
 msgid "&Start Bitcoin on system startup"
 msgstr "&Uruchom Bitcoin wraz ze startem systemu"
 
-#: ../../../src/uibase.cpp:358
+#: ../../../src/uibase.cpp:348
 msgid "&Minimize to the tray instead of the taskbar"
-msgstr "&Zminimalizuj do traya zamiast do paska zadań"
+msgstr "&Minimalizuj do obszaru powiadomień zamiast paska zadań"
 
-#: ../../../src/uibase.cpp:361
+#: ../../../src/uibase.cpp:351
 msgid "Map port using &UPnP"
 msgstr "Mapuj port używając &UPnP"
 
-#: ../../../src/uibase.cpp:364
+#: ../../../src/uibase.cpp:354
 msgid "M&inimize to the tray on close"
-msgstr "Zm&inimalizuj do traya przy zamknięciu"
+msgstr "M&inimalizuj do obszaru powiadomień przy zamknięciu"
 
-#: ../../../src/uibase.cpp:370
+#: ../../../src/uibase.cpp:360
 msgid "&Connect through socks4 proxy: "
-msgstr "&Połącz przez socks4 proxy:"
+msgstr "&Połącz przez proxy socks4:"
 
-#: ../../../src/uibase.cpp:381
+#: ../../../src/uibase.cpp:371
 msgid "Proxy &IP:"
 msgstr "Proxy &IP:"
 
-#: ../../../src/uibase.cpp:389
+#: ../../../src/uibase.cpp:379
 msgid " &Port:"
 msgstr " &Port:"
 
-#: ../../../src/uibase.cpp:402
+#: ../../../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."
+msgstr "Opcjonalna prowizja określona na każdy KB transakcji, zapewniająca szybkie przetworzenie. Większość transakcji to 1KB. Rekomendowana prowizja to 0.01."
 
-#: ../../../src/uibase.cpp:409
+#: ../../../src/uibase.cpp:399
 msgid "Pay transaction fee:"
-msgstr "Płać prowizję transakcji:"
+msgstr "Płać prowizję od transakcji:"
 
-#: ../../../src/uibase.cpp:430
+#: ../../../src/uibase.cpp:420
 msgid "// [don't translate] Test panel 2 for future expansion"
 msgstr ""
 
-#: ../../../src/uibase.cpp:434
+#: ../../../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:456
-#: ../../../src/uibase.cpp:678
-#: ../../../src/uibase.cpp:737
-#: ../../../src/uibase.cpp:796
-#: ../../../src/uibase.cpp:905
-#: ../../../src/uibase.cpp:994
+#: ../../../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:459
+#: ../../../src/uibase.cpp:449
 msgid "&Apply"
 msgstr "&Zastosuj"
 
-#: ../../../src/uibase.cpp:518
+#: ../../../src/uibase.cpp:508
 msgid "Bitcoin "
-msgstr "Bitcoin"
+msgstr "Bitcoin "
 
-#: ../../../src/uibase.cpp:524
+#: ../../../src/uibase.cpp:514
 msgid "version"
 msgstr "wersja"
 
-#: ../../../src/uibase.cpp:535
+#: ../../../src/uibase.cpp:525
 msgid ""
 "Copyright (c) 2009-2011 Bitcoin Developers\n"
 "\n"
@@ -967,39 +867,39 @@
 "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:591
+#: ../../../src/uibase.cpp:581
 msgid "Enter a Bitcoin address (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L)"
 msgstr "Wprowadź adres Bitcoin (np. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L)"
 
-#: ../../../src/uibase.cpp:605
+#: ../../../src/uibase.cpp:595
 msgid "Pay &To:"
-msgstr "Wpłać &Dla:"
+msgstr "Wpłać &dla:"
 
-#: ../../../src/uibase.cpp:620
+#: ../../../src/uibase.cpp:610
 msgid "&Paste"
 msgstr "&Wklej"
 
-#: ../../../src/uibase.cpp:623
+#: ../../../src/uibase.cpp:613
 msgid " Address &Book..."
-msgstr " Księga &Adresowa..."
+msgstr " Książka &adresowa..."
+
+#: ../../../src/uibase.cpp:620
+msgid "&Amount:"
+msgstr "&Saldo:"
 
 #: ../../../src/uibase.cpp:630
-msgid "&Amount:"
-msgstr "&Kwota:"
-
-#: ../../../src/uibase.cpp:640
 msgid "T&ransfer:"
 msgstr "T&ransfer:"
 
-#: ../../../src/uibase.cpp:646
+#: ../../../src/uibase.cpp:636
 msgid " Standard"
 msgstr " Standard"
 
-#: ../../../src/uibase.cpp:673
+#: ../../../src/uibase.cpp:663
 msgid "&Send"
 msgstr "&Wyślij"
 
-#: ../../../src/uibase.cpp:721
+#: ../../../src/uibase.cpp:711
 msgid ""
 "\n"
 "\n"
@@ -1009,74 +909,70 @@
 "\n"
 "Łączenie..."
 
-#: ../../../src/uibase.cpp:771
+#: ../../../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."
+msgstr "To są twoje adresy Bitcoin dla otrzymywania płatności. Możesz chcieć podawać inny 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:784
-#: ../../../src/uibase.cpp:896
+#: ../../../src/uibase.cpp:774
+#: ../../../src/uibase.cpp:886
 msgid "&Edit..."
 msgstr "&Edytuj..."
 
-#: ../../../src/uibase.cpp:787
-#: ../../../src/uibase.cpp:899
+#: ../../../src/uibase.cpp:777
+#: ../../../src/uibase.cpp:889
 msgid " &New Address... "
-msgstr " &Nowy Adres..."
+msgstr " &Nowy adres..."
 
-#: ../../../src/uibase.cpp:859
+#: ../../../src/uibase.cpp:849
 msgid "Sending"
 msgstr "Wysyłanie"
 
-#: ../../../src/uibase.cpp:867
+#: ../../../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:880
+#: ../../../src/uibase.cpp:870
 msgid "Receiving"
 msgstr "Otrzymywanie"
 
-#: ../../../src/uibase.cpp:890
+#: ../../../src/uibase.cpp:880
 msgid "&Delete"
 msgstr "&Usuń"
 
-#: ../../../src/wallet.cpp:1081
-msgid "Error: Wallet locked, unable to create transaction  "
-msgstr "Błąd: Portfel zablokowany, nie można utworzyć transakcji"
-
-#: ../../../src/wallet.cpp:1089
+#: ../../../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:1091
+#: ../../../src/wallet.cpp:919
 msgid "Error: Transaction creation failed  "
 msgstr "Błąd: Nie udało się utworzyć transakcji"
 
-#: ../../../src/wallet.cpp:1101
+#: ../../../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:1114
+#: ../../../src/wallet.cpp:941
 msgid "Invalid amount"
 msgstr "Niewłaściwa kwota"
 
-#: ../../../src/wallet.cpp:1121
+#: ../../../src/wallet.cpp:948
 msgid "Invalid bitcoin address"
 msgstr "Niewłaściwy adres bitcoin"
 
-#: ../../../src/uibase.h:151
+#: ../../../src/uibase.h:147
 msgid "Transaction Details"
-msgstr "Szczegóły Transakcji"
+msgstr "Szczegóły transakcji"
 
-#: ../../../src/uibase.h:203
+#: ../../../src/uibase.h:199
 msgid "Options"
 msgstr "Opcje"
 
-#: ../../../src/uibase.h:232
+#: ../../../src/uibase.h:228
 msgid "About Bitcoin"
 msgstr "O Bitcoin"
 
-#: ../../../src/uibase.h:341
+#: ../../../src/uibase.h:337
 msgid "Your Bitcoin Addresses"
-msgstr "Twoje Adresy Bitcoin"
+msgstr "Twoje adresy bitcoin"
 
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -1385,47 +1385,6 @@
 
 
 
-template<typename Stream>
-bool static ScanMessageStart(Stream& s)
-{
-    // Scan ahead to the next pchMessageStart, which should normally be immediately
-    // at the file pointer.  Leaves file pointer at end of pchMessageStart.
-    s.clear(0);
-    short prevmask = s.exceptions(0);
-    const char* p = BEGIN(pchMessageStart);
-    try
-    {
-        loop
-        {
-            char c;
-            s.read(&c, 1);
-            if (s.fail())
-            {
-                s.clear(0);
-                s.exceptions(prevmask);
-                return false;
-            }
-            if (*p != c)
-                p = BEGIN(pchMessageStart);
-            if (*p == c)
-            {
-                if (++p == END(pchMessageStart))
-                {
-                    s.clear(0);
-                    s.exceptions(prevmask);
-                    return true;
-                }
-            }
-        }
-    }
-    catch (...)
-    {
-        s.clear(0);
-        s.exceptions(prevmask);
-        return false;
-    }
-}
-
 bool CheckDiskSpace(uint64 nAdditionalBytes)
 {
     uint64 nFreeBytesAvailable = filesystem::space(GetDataDir()).available;
--- a/src/makefile.linux-mingw
+++ b/src/makefile.linux-mingw
@@ -7,19 +7,19 @@
 USE_UPNP:=0
 
 INCLUDEPATHS= \
- -I"$(DEPSDIR)/boost_1_43_0" \
- -I"$(DEPSDIR)/db-4.7.25.NC/build_unix" \
+ -I"$(DEPSDIR)/boost_1_47_0" \
+ -I"$(DEPSDIR)/db-4.8.30.NC/build_unix" \
  -I"$(DEPSDIR)/openssl-1.0.0d/include" \
- -I"$(DEPSDIR)/wxWidgets-2.9.1/lib/gcc_lib/mswud" \
- -I"$(DEPSDIR)/wxWidgets-2.9.1/include" \
- -I"$(DEPSDIR)/wxWidgets-2.9.1/lib/wx/include/i586-mingw32msvc-msw-unicode-static-2.9/" \
+ -I"$(DEPSDIR)/wxWidgets-2.9.2/lib/gcc_lib/mswud" \
+ -I"$(DEPSDIR)/wxWidgets-2.9.2/include" \
+ -I"$(DEPSDIR)/wxWidgets-2.9.2/lib/wx/include/i586-mingw32msvc-msw-unicode-static-2.9/" \
  -I"$(DEPSDIR)"
 
 LIBPATHS= \
- -L"$(DEPSDIR)/boost_1_43_0/stage/lib" \
- -L"$(DEPSDIR)/db-4.7.25.NC/build_unix" \
+ -L"$(DEPSDIR)/boost_1_47_0/stage/lib" \
+ -L"$(DEPSDIR)/db-4.8.30.NC/build_unix" \
  -L"$(DEPSDIR)/openssl-1.0.0d" \
- -L"$(DEPSDIR)/wxWidgets-2.9.1/lib"
+ -L"$(DEPSDIR)/wxWidgets-2.9.2/lib"
 
 WXLIBS= -l wx_mswu-2.9-i586-mingw32msvc
 
@@ -32,7 +32,7 @@
  -l ssl \
  -l crypto
 
-DEFS=-D_MT -DWIN32 -D__WXMSW__ -D_WINDOWS -DNOPCH -DUSE_SSL
+DEFS=-D_MT -DWIN32 -D__WXMSW__ -D_WINDOWS -DNOPCH -DUSE_SSL -DBOOST_THREAD_USE_LIB
 DEBUGFLAGS=-g -D__WXDEBUG__
 CFLAGS=-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 \
@@ -40,8 +40,7 @@
     crypter.h init.h
 
 ifdef USE_UPNP
-	INCLUDEPATHS += -I"$(DEPSDIR)/upnpc-exe-win32-20110215"
-	LIBPATHS += -L"$(DEPSDIR)/upnpc-exe-win32-20110215"
+	LIBPATHS += -L"$(DEPSDIR)/miniupnpc"
 	LIBS += -l miniupnpc -l iphlpapi
 	DEFS += -DSTATICLIB -DUSE_UPNP=$(USE_UPNP)
 endif
--- a/src/makefile.mingw
+++ b/src/makefile.mingw
@@ -5,31 +5,31 @@
 USE_UPNP:=0
 
 INCLUDEPATHS= \
- -I"C:\boost-1.43.0-mgw" \
- -I"C:\db-4.7.25.NC-mgw\build_unix" \
+ -I"C:\boost-1.47.0-mgw" \
+ -I"C:\db-4.8.30.NC-mgw\build_unix" \
  -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"
+ -I"C:\wxWidgets-2.9.2-mgw\lib\gcc_lib\mswud" \
+ -I"C:\wxWidgets-2.9.2-mgw\include"
 
 LIBPATHS= \
- -L"C:\boost-1.43.0-mgw\stage\lib" \
- -L"C:\db-4.7.25.NC-mgw\build_unix" \
+ -L"C:\boost-1.47.0-mgw\stage\lib" \
+ -L"C:\db-4.8.30.NC-mgw\build_unix" \
  -L"C:\openssl-1.0.0d-mgw" \
- -L"C:\wxWidgets-2.9.1-mgw\lib\gcc_lib"
+ -L"C:\wxWidgets-2.9.2-mgw\lib\gcc_lib"
 
 WXLIBS= \
  -l wxmsw29ud_html -l wxmsw29ud_core -l wxmsw29ud_adv -l wxbase29ud -l wxtiffd -l wxjpegd -l wxpngd -l wxzlibd
 
 LIBS= \
- -l boost_system-mgw45-mt-s-1_43 \
- -l boost_filesystem-mgw45-mt-s-1_43 \
- -l boost_program_options-mgw45-mt-s-1_43 \
- -l boost_thread-mgw45-mt-s-1_43 \
+ -l boost_system-mgw45-mt-s-1_47 \
+ -l boost_filesystem-mgw45-mt-s-1_47 \
+ -l boost_program_options-mgw45-mt-s-1_47 \
+ -l boost_thread-mgw45-mt-s-1_47 \
  -l db_cxx \
  -l ssl \
  -l crypto
 
-DEFS=-DWIN32 -D__WXMSW__ -D_WINDOWS -DNOPCH -DUSE_SSL
+DEFS=-DWIN32 -D__WXMSW__ -D_WINDOWS -DNOPCH -DUSE_SSL -DBOOST_THREAD_USE_LIB
 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 \
@@ -37,8 +37,8 @@
     init.h crypter.h
 
 ifdef USE_UPNP
- INCLUDEPATHS += -I"C:\upnpc-exe-win32-20110215"
- LIBPATHS += -L"C:\upnpc-exe-win32-20110215"
+ INCLUDEPATHS += -I"C:\miniupnpc-1.6-mgw"
+ LIBPATHS += -L"C:\miniupnpc-1.6-mgw"
  LIBS += -l miniupnpc -l iphlpapi
  DEFS += -DSTATICLIB -DUSE_UPNP=$(USE_UPNP)
 endif
@@ -83,8 +83,8 @@
 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 $@ $<
+obj/test/test_bitcoin.o: $(wildcard test/*.cpp) $(HEADERS)
+	g++ -c $(CFLAGS) -o $@ test/test_bitcoin.cpp
 
 test_bitcoin.exe: obj/test/test_bitcoin.o $(filter-out obj/nogui/init.o,$(OBJS:obj/%=obj/nogui/%))
 	g++ $(CFLAGS) -o $@ $(LIBPATHS) $^ $(LIBS)
--- a/src/makefile.osx
+++ b/src/makefile.osx
@@ -76,8 +76,8 @@
 bitcoind: $(OBJS:obj/%=obj/nogui/%)
 	$(CXX) $(CFLAGS) -o $@ $(LIBPATHS) $^ $(LIBS)
 
-obj/test/%.o: test/%.cpp $(HEADERS)
-	$(CXX) -c $(CFLAGS) -o $@ $<
+obj/test/test_bitcoin.o: $(wildcard test/*.cpp) $(HEADERS)
+	$(CXX) -c $(CFLAGS) -o $@ test/test_bitcoin.cpp
 
 test_bitcoin: obj/test/test_bitcoin.o $(filter-out obj/nogui/init.o,$(OBJS:obj/%=obj/nogui/%))
 	$(CXX) $(CFLAGS) -o $@ $(LIBPATHS) $^ $(LIBS) -lboost_unit_test_framework
--- a/src/makefile.unix
+++ b/src/makefile.unix
@@ -10,7 +10,7 @@
 
 USE_UPNP:=0
 
-DEFS=-DNOPCH -DFOURWAYSSE2 -DUSE_SSL
+DEFS=-DNOPCH -DUSE_SSL
 
 # for boost 1.37, add -mt to the boost libraries
 LIBS= \
@@ -77,8 +77,8 @@
 bitcoind: $(OBJS:obj/%=obj/nogui/%)
 	$(CXX) $(CXXFLAGS) -o $@ $^ $(LIBS)
 
-obj/test/%.o: test/%.cpp $(HEADERS)
-	$(CXX) -c $(CXXFLAGS) -o $@ $<
+obj/test/test_bitcoin.o: $(wildcard test/*.cpp) $(HEADERS)
+	$(CXX) -c $(CFLAGS) -o $@ test/test_bitcoin.cpp
 
 test_bitcoin: obj/test/test_bitcoin.o $(filter-out obj/nogui/init.o,$(OBJS:obj/%=obj/nogui/%))
 	$(CXX) $(CXXFLAGS) -o $@ $(LIBPATHS) $^ -Wl,-Bstatic -lboost_unit_test_framework $(LIBS)
--- a/src/net.cpp
+++ b/src/net.cpp
@@ -12,11 +12,6 @@
 
 #ifdef __WXMSW__
 #include <string.h>
-// This file can be downloaded as a part of the Windows Platform SDK
-// and is required for Bitcoin binaries to work properly on versions
-// of Windows before XP.  If you are doing builds of Bitcoin for
-// public release, you should uncomment this line.
-//#include <WSPiApi.h>
 #endif
 
 #ifdef USE_UPNP
@@ -1079,10 +1074,11 @@
     const char * rootdescurl = 0;
     const char * multicastif = 0;
     const char * minissdpdpath = 0;
+    int error = 0;
     struct UPNPDev * devlist = 0;
     char lanaddr[64];
 
-    devlist = upnpDiscover(2000, multicastif, minissdpdpath, 0);
+    devlist = upnpDiscover(2000, multicastif, minissdpdpath, 0, 0, &error);
 
     struct UPNPUrls urls;
     struct IGDdatas data;
@@ -1094,14 +1090,9 @@
         char intClient[16];
         char intPort[6];
         string strDesc = "Bitcoin " + FormatFullVersion();
-
-#ifndef __WXMSW__
-        r = UPNP_AddPortMapping(urls.controlURL, data.first.servicetype,
-	                        port, port, lanaddr, strDesc.c_str(), "TCP", 0);
-#else
         r = UPNP_AddPortMapping(urls.controlURL, data.first.servicetype,
 	                        port, port, lanaddr, strDesc.c_str(), "TCP", 0, "0");
-#endif
+
         if(r!=UPNPCOMMAND_SUCCESS)
             printf("AddPortMapping(%s, %s, %s) failed with code %d (%s)\n",
                 port, port, lanaddr, r, strupnperror(r));
--- a/src/net.h
+++ b/src/net.h
@@ -677,7 +677,7 @@
 
     void BeginMessage(const char* pszCommand)
     {
-        cs_vSend.Enter();
+        cs_vSend.Enter("cs_vSend", __FILE__, __LINE__);
         if (nHeaderStart != -1)
             AbortMessage();
         nHeaderStart = vSend.size();
--- a/src/rpc.cpp
+++ b/src/rpc.cpp
@@ -1188,7 +1188,8 @@
 
         // Now: iterate backwards until we have nCount items to return:
         TxItems::reverse_iterator it = txByTime.rbegin();
-        for (std::advance(it, nFrom); it != txByTime.rend(); ++it)
+        if (txByTime.size() > nFrom) std::advance(it, nFrom);
+        for (; it != txByTime.rend(); ++it)
         {
             CWalletTx *const pwtx = (*it).second.first;
             if (pwtx != 0)
--- a/src/test/script_tests.cpp
+++ b/src/test/script_tests.cpp
@@ -6,6 +6,9 @@
 #include "../wallet.h"
 
 using namespace std;
+extern uint256 SignatureHash(CScript scriptCode, const CTransaction& txTo, unsigned int nIn, int nHashType);
+extern bool VerifyScript(const CScript& scriptSig, const CScript& scriptPubKey, const CTransaction& txTo, unsigned int nIn, int nHashType);
+extern bool VerifySignature(const CTransaction& txFrom, const CTransaction& txTo, unsigned int nIn, int nHashType);
 
 BOOST_AUTO_TEST_SUITE(script_tests)
 
@@ -34,4 +37,137 @@
     BOOST_CHECK(pushdata4Stack == directStack);
 }
 
+CScript
+sign_multisig(CScript scriptPubKey, std::vector<CKey> keys, CTransaction transaction)
+{
+    uint256 hash = SignatureHash(scriptPubKey, transaction, 0, SIGHASH_ALL);
+
+    CScript result;
+    //
+    // NOTE: CHECKMULTISIG has an unfortunate bug; it requires
+    // one extra item on the stack, before the signatures.
+    // Putting OP_0 on the stack is the workaround;
+    // fixing the bug would mean splitting the blockchain (old
+    // clients would not accept new CHECKMULTISIG transactions,
+    // and vice-versa)
+    //
+    result << OP_0;
+    BOOST_FOREACH(CKey key, keys)
+    {
+        vector<unsigned char> vchSig;
+        BOOST_CHECK(key.Sign(hash, vchSig));
+        vchSig.push_back((unsigned char)SIGHASH_ALL);
+        result << vchSig;
+    }
+    return result;
+}
+CScript
+sign_multisig(CScript scriptPubKey, CKey key, CTransaction transaction)
+{
+    std::vector<CKey> keys;
+    keys.push_back(key);
+    return sign_multisig(scriptPubKey, keys, transaction);
+}
+
+BOOST_AUTO_TEST_CASE(script_CHECKMULTISIG12)
+{
+    CKey key1, key2, key3;
+    key1.MakeNewKey();
+    key2.MakeNewKey();
+    key3.MakeNewKey();
+
+    CScript scriptPubKey12;
+    scriptPubKey12 << OP_1 << key1.GetPubKey() << key2.GetPubKey() << OP_2 << OP_CHECKMULTISIG;
+
+    CTransaction txFrom12;
+    txFrom12.vout.resize(1);
+    txFrom12.vout[0].scriptPubKey = scriptPubKey12;
+
+    CTransaction txTo12;
+    txTo12.vin.resize(1);
+    txTo12.vout.resize(1);
+    txTo12.vin[0].prevout.n = 0;
+    txTo12.vin[0].prevout.hash = txFrom12.GetHash();
+    txTo12.vout[0].nValue = 1;
+
+    CScript goodsig1 = sign_multisig(scriptPubKey12, key1, txTo12);
+    BOOST_CHECK(VerifyScript(goodsig1, scriptPubKey12, txTo12, 0, 0));
+    txTo12.vout[0].nValue = 2;
+    BOOST_CHECK(!VerifyScript(goodsig1, scriptPubKey12, txTo12, 0, 0));
+
+    CScript goodsig2 = sign_multisig(scriptPubKey12, key2, txTo12);
+    BOOST_CHECK(VerifyScript(goodsig2, scriptPubKey12, txTo12, 0, 0));
+
+    CScript badsig1 = sign_multisig(scriptPubKey12, key3, txTo12);
+    BOOST_CHECK(!VerifyScript(badsig1, scriptPubKey12, txTo12, 0, 0));
+}
+
+BOOST_AUTO_TEST_CASE(script_CHECKMULTISIG23)
+{
+    CKey key1, key2, key3, key4;
+    key1.MakeNewKey();
+    key2.MakeNewKey();
+    key3.MakeNewKey();
+    key4.MakeNewKey();
+
+    CScript scriptPubKey23;
+    scriptPubKey23 << OP_2 << key1.GetPubKey() << key2.GetPubKey() << key3.GetPubKey() << OP_3 << OP_CHECKMULTISIG;
+
+    CTransaction txFrom23;
+    txFrom23.vout.resize(1);
+    txFrom23.vout[0].scriptPubKey = scriptPubKey23;
+
+    CTransaction txTo23;
+    txTo23.vin.resize(1);
+    txTo23.vout.resize(1);
+    txTo23.vin[0].prevout.n = 0;
+    txTo23.vin[0].prevout.hash = txFrom23.GetHash();
+    txTo23.vout[0].nValue = 1;
+
+    std::vector<CKey> keys;
+    keys.push_back(key1); keys.push_back(key2);
+    CScript goodsig1 = sign_multisig(scriptPubKey23, keys, txTo23);
+    BOOST_CHECK(VerifyScript(goodsig1, scriptPubKey23, txTo23, 0, 0));
+
+    keys.clear();
+    keys.push_back(key1); keys.push_back(key3);
+    CScript goodsig2 = sign_multisig(scriptPubKey23, keys, txTo23);
+    BOOST_CHECK(VerifyScript(goodsig2, scriptPubKey23, txTo23, 0, 0));
+
+    keys.clear();
+    keys.push_back(key2); keys.push_back(key3);
+    CScript goodsig3 = sign_multisig(scriptPubKey23, keys, txTo23);
+    BOOST_CHECK(VerifyScript(goodsig3, scriptPubKey23, txTo23, 0, 0));
+
+    keys.clear();
+    keys.push_back(key2); keys.push_back(key2); // Can't re-use sig
+    CScript badsig1 = sign_multisig(scriptPubKey23, keys, txTo23);
+    BOOST_CHECK(!VerifyScript(badsig1, scriptPubKey23, txTo23, 0, 0));
+
+    keys.clear();
+    keys.push_back(key2); keys.push_back(key1); // sigs must be in correct order
+    CScript badsig2 = sign_multisig(scriptPubKey23, keys, txTo23);
+    BOOST_CHECK(!VerifyScript(badsig2, scriptPubKey23, txTo23, 0, 0));
+
+    keys.clear();
+    keys.push_back(key3); keys.push_back(key2); // sigs must be in correct order
+    CScript badsig3 = sign_multisig(scriptPubKey23, keys, txTo23);
+    BOOST_CHECK(!VerifyScript(badsig3, scriptPubKey23, txTo23, 0, 0));
+
+    keys.clear();
+    keys.push_back(key4); keys.push_back(key2); // sigs must match pubkeys
+    CScript badsig4 = sign_multisig(scriptPubKey23, keys, txTo23);
+    BOOST_CHECK(!VerifyScript(badsig4, scriptPubKey23, txTo23, 0, 0));
+
+    keys.clear();
+    keys.push_back(key1); keys.push_back(key4); // sigs must match pubkeys
+    CScript badsig5 = sign_multisig(scriptPubKey23, keys, txTo23);
+    BOOST_CHECK(!VerifyScript(badsig5, scriptPubKey23, txTo23, 0, 0));
+
+    keys.clear(); // Must have signatures
+    CScript badsig6 = sign_multisig(scriptPubKey23, keys, txTo23);
+    BOOST_CHECK(!VerifyScript(badsig6, scriptPubKey23, txTo23, 0, 0));
+}    
+
+
 BOOST_AUTO_TEST_SUITE_END()
--- a/src/util.cpp
+++ b/src/util.cpp
@@ -909,4 +909,122 @@
 
 
 
+#ifdef DEBUG_LOCKORDER
+//
+// Early deadlock detection.
+// Problem being solved:
+//    Thread 1 locks  A, then B, then C
+//    Thread 2 locks  D, then C, then A
+//     --> may result in deadlock between the two threads, depending on when they run.
+// Solution implemented here:
+// Keep track of pairs of locks: (A before B), (A before C), etc.
+// Complain if any thread trys to lock in a different order.
+//
 
+struct CLockLocation
+{
+    std::string mutexName;
+    std::string sourceFile;
+    int sourceLine;
+
+    CLockLocation(const char* pszName, const char* pszFile, int nLine)
+    {
+        mutexName = pszName;
+        sourceFile = pszFile;
+        sourceLine = nLine;
+    }
+};
+
+typedef std::vector< std::pair<CCriticalSection*, CLockLocation> > LockStack;
+
+static boost::interprocess::interprocess_mutex dd_mutex;
+static std::map<std::pair<CCriticalSection*, CCriticalSection*>, LockStack> lockorders;
+static boost::thread_specific_ptr<LockStack> lockstack;
+
+
+static void potential_deadlock_detected(const LockStack& s1, const LockStack& s2)
+{
+    printf("POTENTIAL DEADLOCK DETECTED\n");
+    printf("Previous lock order was:\n");
+    BOOST_FOREACH(const PAIRTYPE(CCriticalSection*, CLockLocation)& i, s2)
+    {
+        printf(" %s  %s:%d\n", i.second.mutexName.c_str(), i.second.sourceFile.c_str(), i.second.sourceLine);
+    }
+    printf("Current lock order is:\n");
+    BOOST_FOREACH(const PAIRTYPE(CCriticalSection*, CLockLocation)& i, s1)
+    {
+        printf(" %s  %s:%d\n", i.second.mutexName.c_str(), i.second.sourceFile.c_str(), i.second.sourceLine);
+    }
+}
+
+static void push_lock(CCriticalSection* c, const CLockLocation& locklocation)
+{
+    bool fOrderOK = true;
+    if (lockstack.get() == NULL)
+        lockstack.reset(new LockStack);
+
+    dd_mutex.lock();
+
+    (*lockstack).push_back(std::make_pair(c, locklocation));
+
+    BOOST_FOREACH(const PAIRTYPE(CCriticalSection*, CLockLocation)& i, (*lockstack))
+    {
+        if (i.first == c) break;
+
+        std::pair<CCriticalSection*, CCriticalSection*> p1 = std::make_pair(i.first, c);
+        if (lockorders.count(p1))
+            continue;
+        lockorders[p1] = (*lockstack);
+
+        std::pair<CCriticalSection*, CCriticalSection*> p2 = std::make_pair(c, i.first);
+        if (lockorders.count(p2))
+        {
+            potential_deadlock_detected(lockorders[p2], lockorders[p1]);
+            break;
+        }
+    }
+    dd_mutex.unlock();
+}
+
+static void pop_lock()
+{
+    (*lockstack).pop_back();
+}
+
+void CCriticalSection::Enter(const char* pszName, const char* pszFile, int nLine)
+{
+    push_lock(this, CLockLocation(pszName, pszFile, nLine));
+    mutex.lock();
+}
+void CCriticalSection::Leave()
+{
+    mutex.unlock();
+    pop_lock();
+}
+bool CCriticalSection::TryEnter(const char* pszName, const char* pszFile, int nLine)
+{
+    push_lock(this, CLockLocation(pszName, pszFile, nLine));
+    bool result = mutex.try_lock();
+    if (!result) pop_lock();
+    return result;
+}
+
+#else
+
+void CCriticalSection::Enter(const char*, const char*, int)
+{
+    mutex.lock();
+}
+
+void CCriticalSection::Leave()
+{
+    mutex.unlock();
+}
+
+bool CCriticalSection::TryEnter(const char*, const char*, int)
+{
+    bool result = mutex.try_lock();
+    return result;
+}
+
+#endif /* DEBUG_LOCKORDER */
--- a/src/util.h
+++ b/src/util.h
@@ -223,31 +223,17 @@
 
 
 
-// Wrapper to automatically initialize critical sections
+// Wrapper to automatically initialize mutex
 class CCriticalSection
 {
-#ifdef __WXMSW__
-protected:
-    CRITICAL_SECTION cs;
-public:
-    explicit CCriticalSection() { InitializeCriticalSection(&cs); }
-    ~CCriticalSection() { DeleteCriticalSection(&cs); }
-    void Enter() { EnterCriticalSection(&cs); }
-    void Leave() { LeaveCriticalSection(&cs); }
-    bool TryEnter() { return TryEnterCriticalSection(&cs); }
-#else
 protected:
     boost::interprocess::interprocess_recursive_mutex mutex;
 public:
     explicit CCriticalSection() { }
     ~CCriticalSection() { }
-    void Enter() { mutex.lock(); }
-    void Leave() { mutex.unlock(); }
-    bool TryEnter() { return mutex.try_lock(); }
-#endif
-public:
-    const char* pszFile;
-    int nLine;
+    void Enter(const char* pszName, const char* pszFile, int nLine);
+    void Leave();
+    bool TryEnter(const char* pszName, const char* pszFile, int nLine);
 };
 
 // Automatically leave critical section when leaving block, needed for exception safety
@@ -255,9 +241,17 @@
 {
 protected:
     CCriticalSection* pcs;
+
 public:
-    CCriticalBlock(CCriticalSection& csIn) { pcs = &csIn; pcs->Enter(); }
-    ~CCriticalBlock() { pcs->Leave(); }
+    CCriticalBlock(CCriticalSection& csIn, const char* pszName, const char* pszFile, int nLine)
+    {
+        pcs = &csIn;
+        pcs->Enter(pszName, pszFile, nLine);
+    }
+    ~CCriticalBlock()
+    {
+        pcs->Leave();
+    }
 };
 
 // WARNING: This will catch continue and break!
@@ -265,22 +259,32 @@
 // I'd rather be careful than suffer the other more error prone syntax.
 // The compiler will optimise away all this loop junk.
 #define CRITICAL_BLOCK(cs)     \
-    for (bool fcriticalblockonce=true; fcriticalblockonce; assert("break caught by CRITICAL_BLOCK!" && !fcriticalblockonce), fcriticalblockonce=false)  \
-    for (CCriticalBlock criticalblock(cs); fcriticalblockonce && (cs.pszFile=__FILE__, cs.nLine=__LINE__, true); fcriticalblockonce=false, cs.pszFile=NULL, cs.nLine=0)
+    for (bool fcriticalblockonce=true; fcriticalblockonce; assert(("break caught by CRITICAL_BLOCK!" && !fcriticalblockonce)), fcriticalblockonce=false) \
+        for (CCriticalBlock criticalblock(cs, #cs, __FILE__, __LINE__); fcriticalblockonce; fcriticalblockonce=false)
 
 class CTryCriticalBlock
 {
 protected:
     CCriticalSection* pcs;
+
 public:
-    CTryCriticalBlock(CCriticalSection& csIn) { pcs = (csIn.TryEnter() ? &csIn : NULL); }
-    ~CTryCriticalBlock() { if (pcs) pcs->Leave(); }
+    CTryCriticalBlock(CCriticalSection& csIn, const char* pszName, const char* pszFile, int nLine)
+    {
+        pcs = (csIn.TryEnter(pszName, pszFile, nLine) ? &csIn : NULL);
+    }
+    ~CTryCriticalBlock()
+    {
+        if (pcs)
+        {
+            pcs->Leave();
+        }
+    }
     bool Entered() { return pcs != NULL; }
 };
 
 #define TRY_CRITICAL_BLOCK(cs)     \
-    for (bool fcriticalblockonce=true; fcriticalblockonce; assert("break caught by TRY_CRITICAL_BLOCK!" && !fcriticalblockonce), fcriticalblockonce=false)  \
-    for (CTryCriticalBlock criticalblock(cs); fcriticalblockonce && (fcriticalblockonce = criticalblock.Entered()) && (cs.pszFile=__FILE__, cs.nLine=__LINE__, true); fcriticalblockonce=false, cs.pszFile=NULL, cs.nLine=0)
+    for (bool fcriticalblockonce=true; fcriticalblockonce; assert(("break caught by TRY_CRITICAL_BLOCK!" && !fcriticalblockonce)), fcriticalblockonce=false) \
+        for (CTryCriticalBlock criticalblock(cs, #cs, __FILE__, __LINE__); fcriticalblockonce && (fcriticalblockonce = criticalblock.Entered()); fcriticalblockonce=false)