mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-01-22 00:00:55 +01:00
Compare commits
182 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8d598c26e3 | ||
|
|
842c48dba3 | ||
|
|
91ef4d93d4 | ||
|
|
f2778e0ce6 | ||
|
|
cf5bf5542a | ||
|
|
44d6bc8528 | ||
|
|
1bf6ac62ab | ||
|
|
093d7b5895 | ||
|
|
1cea6b0dee | ||
|
|
9bd0b4a633 | ||
|
|
743cc9e08b | ||
|
|
f696ea12e1 | ||
|
|
5e6d893650 | ||
|
|
ceba0f8c7e | ||
|
|
2ede6b7142 | ||
|
|
0dfcdd41eb | ||
|
|
c9ad65e5fa | ||
|
|
0194bddde4 | ||
|
|
bdf2542787 | ||
|
|
65426acb4d | ||
|
|
28d76d2aea | ||
|
|
843469ee15 | ||
|
|
4e5ea71bd5 | ||
|
|
3861f0fa21 | ||
|
|
04507de3b7 | ||
|
|
8b59079b8d | ||
|
|
ae52a7ffd1 | ||
|
|
0739e6e57a | ||
|
|
255eced936 | ||
|
|
7e66e9c97b | ||
|
|
3f5563877a | ||
|
|
be6420407b | ||
|
|
0fd8464458 | ||
|
|
09334e04a9 | ||
|
|
181771b712 | ||
|
|
ecc96f5ba9 | ||
|
|
ebd7d8d78c | ||
|
|
ae3d8f371a | ||
|
|
e4a7d51537 | ||
|
|
16f45600c8 | ||
|
|
ff32503267 | ||
|
|
da656068ec | ||
|
|
49e4d14f75 | ||
|
|
d7e7727658 | ||
|
|
424ae6629b | ||
|
|
9a5b88cc0c | ||
|
|
824c011d16 | ||
|
|
ebc0e41ede | ||
|
|
d8ac901842 | ||
|
|
bf8ad0dc6b | ||
|
|
139cd8177b | ||
|
|
bac6fca3c9 | ||
|
|
3a70613398 | ||
|
|
323de27f4b | ||
|
|
7494e0915b | ||
|
|
df45564cf0 | ||
|
|
57d1f46952 | ||
|
|
eae305f4c4 | ||
|
|
34127c77cb | ||
|
|
1c62e84099 | ||
|
|
149c1d890d | ||
|
|
24e48991d3 | ||
|
|
bf1cc80372 | ||
|
|
9e1cc16296 | ||
|
|
fe3122580e | ||
|
|
2b7636c3d6 | ||
|
|
ae1479a114 | ||
|
|
aa587d4cae | ||
|
|
0c6f334c32 | ||
|
|
214154e6fc | ||
|
|
2218d4bbe0 | ||
|
|
cf0218f8b2 | ||
|
|
b788994256 | ||
|
|
90bef6638f | ||
|
|
a1f425b48b | ||
|
|
4635a4c4e7 | ||
|
|
0eccf0ae30 | ||
|
|
78f64ef0b2 | ||
|
|
a316622fd0 | ||
|
|
1d2cdd2ef9 | ||
|
|
c9e022b7ee | ||
|
|
10c09f98b2 | ||
|
|
8752b5c882 | ||
|
|
601327be8c | ||
|
|
ca301bf98c | ||
|
|
2c0840631d | ||
|
|
81145a6ccd | ||
|
|
11173786ce | ||
|
|
c91c660e49 | ||
|
|
002c8a2411 | ||
|
|
200f29363b | ||
|
|
d5d8998028 | ||
|
|
786cf72c7f | ||
|
|
aeb9279228 | ||
|
|
23126a0a09 | ||
|
|
d148f62e00 | ||
|
|
7f502be259 | ||
|
|
047a898317 | ||
|
|
327d3e8824 | ||
|
|
7b6c847f67 | ||
|
|
e43f25c5b1 | ||
|
|
275400bfcc | ||
|
|
63efb36672 | ||
|
|
1eb14af28f | ||
|
|
336f9fbd30 | ||
|
|
b6347bf813 | ||
|
|
2448d34298 | ||
|
|
1bbad80bf4 | ||
|
|
b788c5561a | ||
|
|
fd7350d22e | ||
|
|
3916a81a27 | ||
|
|
6da2028b55 | ||
|
|
773c30d756 | ||
|
|
18695f08ef | ||
|
|
abfbeafe84 | ||
|
|
6a02ef8bdb | ||
|
|
b61940b3a1 | ||
|
|
c5044bc169 | ||
|
|
b24ff47c64 | ||
|
|
ed4206acb1 | ||
|
|
58259ad1ed | ||
|
|
186a517692 | ||
|
|
aaf55d25c6 | ||
|
|
249bf0e049 | ||
|
|
c3200bcd1e | ||
|
|
af35bdc6b0 | ||
|
|
4e7c219122 | ||
|
|
a3a73170a9 | ||
|
|
12b7c444f0 | ||
|
|
76ce5c8de3 | ||
|
|
2d375fe97b | ||
|
|
ace39db764 | ||
|
|
263b65ebf0 | ||
|
|
e2677d7ae8 | ||
|
|
7fdbedcaf8 | ||
|
|
867c600c29 | ||
|
|
008138c04a | ||
|
|
3022e7df2a | ||
|
|
06fdf326d3 | ||
|
|
58fda4d689 | ||
|
|
68c0580dfb | ||
|
|
4a3d3e20c0 | ||
|
|
94b362dbd6 | ||
|
|
221a38024a | ||
|
|
c2029018cc | ||
|
|
50891ad080 | ||
|
|
9241f7a7c1 | ||
|
|
4f57a3b20c | ||
|
|
8061d67aeb | ||
|
|
d1bcef4391 | ||
|
|
1eadfd9753 | ||
|
|
18021d08f7 | ||
|
|
b790d139c9 | ||
|
|
8543b0dfd9 | ||
|
|
968f13cae3 | ||
|
|
87d43a3c8e | ||
|
|
ed934bdb4d | ||
|
|
591c5692f8 | ||
|
|
52e57055cc | ||
|
|
b3d67e1c34 | ||
|
|
06ca0651b6 | ||
|
|
4e0bfa5814 | ||
|
|
2bb0ca9b55 | ||
|
|
a2300499b7 | ||
|
|
343492795a | ||
|
|
13e129ed9a | ||
|
|
3aa3c710ac | ||
|
|
f4dcc1e009 | ||
|
|
63b5a1dc80 | ||
|
|
c888111a3f | ||
|
|
3a88ba0794 | ||
|
|
d10a9015ad | ||
|
|
15ad0b54fa | ||
|
|
11855c1f99 | ||
|
|
8446262597 | ||
|
|
ad3d208fb9 | ||
|
|
0cb8763cbb | ||
|
|
b03632a671 | ||
|
|
c3c635b316 | ||
|
|
a572ff7139 | ||
|
|
44b4c0d8a9 | ||
|
|
0133e4fb48 |
@@ -6,6 +6,7 @@
|
||||
|
||||
os: linux
|
||||
language: cpp
|
||||
compiler: gcc
|
||||
env:
|
||||
global:
|
||||
- MAKEJOBS=-j3
|
||||
@@ -38,6 +39,8 @@ matrix:
|
||||
env: HOST=x86_64-w64-mingw32 PACKAGES="nsis gcc-mingw-w64-x86-64 g++-mingw-w64-x86-64 binutils-mingw-w64-x86-64 mingw-w64-dev wine bc" RUN_TESTS=true GOAL="deploy" BITCOIN_CONFIG="--enable-gui" MAKEJOBS="-j2"
|
||||
- compiler: ": Win32"
|
||||
env: HOST=i686-w64-mingw32 PACKAGES="nsis gcc-mingw-w64-i686 g++-mingw-w64-i686 binutils-mingw-w64-i686 mingw-w64-dev wine bc" RUN_TESTS=true GOAL="deploy" BITCOIN_CONFIG="--enable-gui" MAKEJOBS="-j2"
|
||||
exclude:
|
||||
- compiler: gcc
|
||||
install:
|
||||
- if [ -n "$PACKAGES" ]; then travis_retry sudo apt-get update; fi
|
||||
- if [ -n "$PACKAGES" ]; then travis_retry sudo apt-get install --no-install-recommends --no-upgrade -qq $PACKAGES; fi
|
||||
|
||||
2
COPYING
2
COPYING
@@ -1,4 +1,4 @@
|
||||
Copyright (c) 2009-2014 Bitcoin Developers
|
||||
Copyright (c) 2009-2015 Bitcoin Developers
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
||||
@@ -190,6 +190,8 @@ check-local:
|
||||
@qa/pull-tester/run-bitcoind-for-test.sh $(JAVA) -jar $(JAVA_COMPARISON_TOOL) qa/tmp/compTool $(COMPARISON_TOOL_REORG_TESTS) 2>&1
|
||||
endif
|
||||
|
||||
dist_noinst_SCRIPTS = autogen.sh
|
||||
|
||||
EXTRA_DIST = $(top_srcdir)/share/genbuild.sh qa/pull-tester/rpc-tests.sh qa/pull-tester/run-bitcoin-cli qa/rpc-tests $(DIST_DOCS) $(WINDOWS_PACKAGING) $(OSX_PACKAGING)
|
||||
|
||||
CLEANFILES = $(OSX_DMG) $(BITCOIN_WIN_INSTALLER)
|
||||
|
||||
@@ -5,8 +5,6 @@ Bitcoin Core integration/staging tree
|
||||
|
||||
https://www.bitcoin.org
|
||||
|
||||
Copyright (c) 2009-2014 Bitcoin Core Developers
|
||||
|
||||
What is Bitcoin?
|
||||
----------------
|
||||
|
||||
@@ -36,7 +34,7 @@ development team members simply pulls it.
|
||||
|
||||
If it is a *more complicated or potentially controversial* change, then the patch
|
||||
submitter will be asked to start a discussion (if they haven't already) on the
|
||||
[mailing list](http://sourceforge.net/mailarchive/forum.php?forum_name=bitcoin-development).
|
||||
[mailing list](https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev)
|
||||
|
||||
The patch will be accepted if there is broad consensus that it is a good thing.
|
||||
Developers should expect to rework and resubmit patches if the code doesn't
|
||||
|
||||
31
configure.ac
31
configure.ac
@@ -1,11 +1,11 @@
|
||||
dnl require autoconf 2.60 (AS_ECHO/AS_ECHO_N)
|
||||
AC_PREREQ([2.60])
|
||||
define(_CLIENT_VERSION_MAJOR, 0)
|
||||
define(_CLIENT_VERSION_MINOR, 9)
|
||||
define(_CLIENT_VERSION_REVISION, 99)
|
||||
define(_CLIENT_VERSION_MINOR, 10)
|
||||
define(_CLIENT_VERSION_REVISION, 3)
|
||||
define(_CLIENT_VERSION_BUILD, 0)
|
||||
define(_CLIENT_VERSION_IS_RELEASE, false)
|
||||
define(_COPYRIGHT_YEAR, 2014)
|
||||
define(_CLIENT_VERSION_IS_RELEASE, true)
|
||||
define(_COPYRIGHT_YEAR, 2015)
|
||||
AC_INIT([Bitcoin Core],[_CLIENT_VERSION_MAJOR._CLIENT_VERSION_MINOR._CLIENT_VERSION_REVISION],[info@bitcoin.org],[bitcoin])
|
||||
AC_CONFIG_SRCDIR([src/main.cpp])
|
||||
AC_CONFIG_HEADERS([src/config/bitcoin-config.h])
|
||||
@@ -701,11 +701,34 @@ else
|
||||
fi
|
||||
fi
|
||||
|
||||
AC_CHECK_LIB([crypto],[RAND_egd],[],[
|
||||
AC_ARG_WITH([libressl],
|
||||
[AS_HELP_STRING([--with-libressl],[Build with system LibreSSL (default is no; DANGEROUS; NOT SUPPORTED)])],
|
||||
[AC_MSG_WARN([Detected LibreSSL: This is NOT supported, and may break consensus compatibility!])],
|
||||
[AC_MSG_ERROR([Detected LibreSSL: This is NOT supported, and may break consensus compatibility!])]
|
||||
)
|
||||
])
|
||||
|
||||
CFLAGS_TEMP="$CFLAGS"
|
||||
LIBS_TEMP="$LIBS"
|
||||
CFLAGS="$CFLAGS $SSL_CFLAGS $CRYPTO_CFLAGS"
|
||||
LIBS="$LIBS $SSL_LIBS $CRYPTO_LIBS"
|
||||
AC_CHECK_HEADER([openssl/ec.h],, AC_MSG_ERROR(OpenSSL ec header missing),)
|
||||
|
||||
AC_MSG_CHECKING(for a supported OpenSSL version)
|
||||
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
|
||||
#include <openssl/rand.h>
|
||||
]],
|
||||
[[RAND_egd(NULL);]])],
|
||||
[AC_MSG_RESULT(yes)],
|
||||
[
|
||||
AC_ARG_WITH([libressl],
|
||||
[AS_HELP_STRING([--with-libressl],[Build with system LibreSSL (default is no; DANGEROUS; NOT SUPPORTED)])],
|
||||
[AC_MSG_WARN([Detected LibreSSL: This is NOT supported, and may break consensus compatibility!])],
|
||||
[AC_MSG_ERROR([Detected LibreSSL: This is NOT supported, and may break consensus compatibility!])]
|
||||
)]
|
||||
)
|
||||
|
||||
CFLAGS="$CFLAGS_TEMP"
|
||||
LIBS="$LIBS_TEMP"
|
||||
|
||||
|
||||
@@ -137,7 +137,7 @@ bitcoin (0.5.3-natty0) natty; urgency=low
|
||||
bitcoin (0.5.2-natty1) natty; urgency=low
|
||||
|
||||
* Remove mentions on anonymity in package descriptions and manpage.
|
||||
These should never have been there, bitcoin isnt anonymous without
|
||||
These should never have been there, bitcoin isn't anonymous without
|
||||
a ton of work that virtually no users will ever be willing and
|
||||
capable of doing
|
||||
|
||||
@@ -178,7 +178,7 @@ bitcoin (0.5.0~rc1-natty1) natty; urgency=low
|
||||
|
||||
* Add test_bitcoin to build test
|
||||
* Fix clean
|
||||
* Remove uneccessary build-dependancies
|
||||
* Remove unnecessary build-dependancies
|
||||
|
||||
-- Matt Corallo <matt@bluematt.me> Wed, 26 Oct 2011 14:37:18 -0400
|
||||
|
||||
@@ -338,7 +338,7 @@ bitcoin (0.3.20.01~dfsg-1) unstable; urgency=low
|
||||
|
||||
bitcoin (0.3.19~dfsg-6) unstable; urgency=low
|
||||
|
||||
* Fix override agressive optimizations.
|
||||
* Fix override aggressive optimizations.
|
||||
* Fix tighten build-dependencies to really fit backporting to Lenny:
|
||||
+ Add fallback build-dependency on libdb4.6++-dev.
|
||||
+ Tighten unversioned Boost build-dependencies to recent versions,
|
||||
|
||||
@@ -2,8 +2,7 @@ Format: http://svn.debian.org/wsvn/dep/web/deps/dep5.mdwn?rev=174
|
||||
Upstream-Name: Bitcoin
|
||||
Upstream-Contact: Satoshi Nakamoto <satoshin@gmx.com>
|
||||
irc://#bitcoin@freenode.net
|
||||
Source: http://sourceforge.net/projects/bitcoin/files/
|
||||
https://github.com/bitcoin/bitcoin
|
||||
Source: https://github.com/bitcoin/bitcoin
|
||||
|
||||
Files: *
|
||||
Copyright: 2009-2012, Bitcoin Core Developers
|
||||
|
||||
@@ -23,7 +23,7 @@ files: []
|
||||
script: |
|
||||
WRAP_DIR=$HOME/wrapped
|
||||
HOSTS="i686-pc-linux-gnu x86_64-unknown-linux-gnu"
|
||||
CONFIGFLAGS="--enable-upnp-default --enable-glibc-back-compat"
|
||||
CONFIGFLAGS="--enable-glibc-back-compat"
|
||||
FAKETIME_HOST_PROGS=""
|
||||
FAKETIME_PROGS="date ar ranlib nm strip"
|
||||
|
||||
@@ -79,7 +79,7 @@ script: |
|
||||
mkdir -p temp
|
||||
pushd temp
|
||||
tar xf ../$SOURCEDIST
|
||||
find bitcoin-* | sort | tar --no-recursion -c -T - | gzip -9n > ../$SOURCEDIST
|
||||
find bitcoin-* | sort | tar --no-recursion --mode='u+rw,go+r-w,a+X' --owner=0 --group=0 -c -T - | gzip -9n > ../$SOURCEDIST
|
||||
popd
|
||||
|
||||
ORIGPATH="$PATH"
|
||||
@@ -99,7 +99,7 @@ script: |
|
||||
find . -name "lib*.la" -delete
|
||||
find . -name "lib*.a" -delete
|
||||
rm -rf ${DISTNAME}/lib/pkgconfig
|
||||
find . | sort | tar --no-recursion -c -T - | gzip -9n > ${OUTDIR}/${DISTNAME}-${i}.tar.gz
|
||||
find ${DISTNAME} | sort | tar --no-recursion --mode='u+rw,go+r-w,a+X' --owner=0 --group=0 -c -T - | gzip -9n > ${OUTDIR}/${DISTNAME}-${i}.tar.gz
|
||||
cd ../../
|
||||
done
|
||||
mkdir -p $OUTDIR/src
|
||||
|
||||
@@ -10,7 +10,7 @@ packages:
|
||||
reference_datetime: "2013-06-01 00:00:00"
|
||||
remotes: []
|
||||
files:
|
||||
- "bitcoin-0.9.99-osx-unsigned.tar.gz"
|
||||
- "bitcoin-osx-unsigned.tar.gz"
|
||||
- "signature.tar.gz"
|
||||
script: |
|
||||
WRAP_DIR=$HOME/wrapped
|
||||
@@ -28,8 +28,8 @@ script: |
|
||||
chmod +x ${WRAP_DIR}/${prog}
|
||||
done
|
||||
|
||||
UNSIGNED=`echo bitcoin-*.tar.gz`
|
||||
SIGNED=`echo ${UNSIGNED} | sed 's/.tar.*//' | sed 's/-unsigned//'`.dmg
|
||||
UNSIGNED=bitcoin-osx-unsigned.tar.gz
|
||||
SIGNED=bitcoin-osx-signed.dmg
|
||||
|
||||
tar -xf ${UNSIGNED}
|
||||
./detached-sig-apply.sh ${UNSIGNED} signature.tar.gz
|
||||
|
||||
@@ -27,7 +27,7 @@ files:
|
||||
script: |
|
||||
WRAP_DIR=$HOME/wrapped
|
||||
HOSTS="x86_64-apple-darwin11"
|
||||
CONFIGFLAGS="--enable-upnp-default GENISOIMAGE=$WRAP_DIR/genisoimage"
|
||||
CONFIGFLAGS="GENISOIMAGE=$WRAP_DIR/genisoimage"
|
||||
FAKETIME_HOST_PROGS=""
|
||||
FAKETIME_PROGS="ar ranlib date dmg genisoimage"
|
||||
|
||||
@@ -90,7 +90,7 @@ script: |
|
||||
mkdir -p temp
|
||||
pushd temp
|
||||
tar xf ../$SOURCEDIST
|
||||
find bitcoin-* | sort | tar --no-recursion -c -T - | gzip -9n > ../$SOURCEDIST
|
||||
find bitcoin-* | sort | tar --no-recursion --mode='u+rw,go+r-w,a+X' --owner=0 --group=0 -c -T - | gzip -9n > ../$SOURCEDIST
|
||||
popd
|
||||
|
||||
ORIGPATH="$PATH"
|
||||
@@ -116,7 +116,7 @@ script: |
|
||||
cp ${BASEPREFIX}/${i}/native/bin/${i}-pagestuff unsigned-app-${i}/pagestuff
|
||||
mv dist unsigned-app-${i}
|
||||
pushd unsigned-app-${i}
|
||||
find . | sort | tar --no-recursion -czf ${OUTDIR}/${DISTNAME}-osx-unsigned.tar.gz -T -
|
||||
find . | sort | tar --no-recursion --mode='u+rw,go+r-w,a+X' --owner=0 --group=0 -c -T - | gzip -9n > ${OUTDIR}/${DISTNAME}-osx-unsigned.tar.gz
|
||||
popd
|
||||
|
||||
make deploy
|
||||
@@ -126,7 +126,7 @@ script: |
|
||||
find . -name "lib*.la" -delete
|
||||
find . -name "lib*.a" -delete
|
||||
rm -rf ${DISTNAME}/lib/pkgconfig
|
||||
find . | sort | tar --no-recursion -c -T - | gzip -9n > ${OUTDIR}/${DISTNAME}-${i}.tar.gz
|
||||
find ${DISTNAME} | sort | tar --no-recursion --mode='u+rw,go+r-w,a+X' --owner=0 --group=0 -c -T - | gzip -9n > ${OUTDIR}/${DISTNAME}-${i}.tar.gz
|
||||
cd ../../
|
||||
done
|
||||
mkdir -p $OUTDIR/src
|
||||
|
||||
@@ -26,7 +26,7 @@ files: []
|
||||
script: |
|
||||
WRAP_DIR=$HOME/wrapped
|
||||
HOSTS="x86_64-w64-mingw32 i686-w64-mingw32"
|
||||
CONFIGFLAGS="--enable-upnp-default"
|
||||
CONFIGFLAGS=""
|
||||
FAKETIME_HOST_PROGS="g++ ar ranlib nm windres strip"
|
||||
FAKETIME_PROGS="date makensis zip"
|
||||
|
||||
@@ -83,7 +83,7 @@ script: |
|
||||
mkdir -p temp
|
||||
pushd temp
|
||||
tar xf ../$SOURCEDIST
|
||||
find bitcoin-* | sort | tar --no-recursion -c -T - | gzip -9n > ../$SOURCEDIST
|
||||
find bitcoin-* | sort | tar --no-recursion --mode='u+rw,go+r-w,a+X' --owner=0 --group=0 -c -T - | gzip -9n > ../$SOURCEDIST
|
||||
popd
|
||||
|
||||
ORIGPATH="$PATH"
|
||||
@@ -106,7 +106,7 @@ script: |
|
||||
find . -name "lib*.la" -delete
|
||||
find . -name "lib*.a" -delete
|
||||
rm -rf ${DISTNAME}/lib/pkgconfig
|
||||
find . -type f | sort | zip -X@ ${OUTDIR}/${DISTNAME}-${i}.zip
|
||||
find ${DISTNAME} -type f | sort | zip -X@ ${OUTDIR}/${DISTNAME}-${i}.zip
|
||||
cd ../..
|
||||
done
|
||||
mkdir -p $OUTDIR/src
|
||||
|
||||
@@ -3,7 +3,7 @@ name: bitcoin
|
||||
urls:
|
||||
- http://bitcoin.org/bitcoin-latest-linux-gitian.zip
|
||||
rss:
|
||||
- url: http://sourceforge.net/api/file/index/project-id/244765/mtime/desc/limit/100/rss
|
||||
- url:
|
||||
xpath: //item/link/text()
|
||||
pattern: bitcoin-\d+.\d+.\d+-linux-gitian.zip
|
||||
signers:
|
||||
|
||||
@@ -3,7 +3,7 @@ name: bitcoin
|
||||
urls:
|
||||
- http://bitcoin.org/bitcoin-latest-win32-gitian.zip
|
||||
rss:
|
||||
- url: http://sourceforge.net/api/file/index/project-id/244765/mtime/desc/limit/100/rss
|
||||
- url:
|
||||
xpath: //item/link/text()
|
||||
pattern: bitcoin-\d+.\d+.\d+-win32-gitian.zip
|
||||
signers:
|
||||
|
||||
@@ -1,11 +1,8 @@
|
||||
### Seeds ###
|
||||
|
||||
Utility to generate the pnSeed[] array that is compiled into the client
|
||||
(see [src/net.cpp](/src/net.cpp)).
|
||||
Utility to generate the seeds.txt list that is compiled into the client
|
||||
(see [src/chainparamsseeds.h](/src/chainparamsseeds.h) and [share/seeds](/share/seeds)).
|
||||
|
||||
The 600 seeds compiled into the 0.8 release were created from sipa's DNS seed data, like this:
|
||||
The 512 seeds compiled into the 0.10 release were created from sipa's DNS seed data, like this:
|
||||
|
||||
curl -s http://bitcoin.sipa.be/seeds.txt | head -1000 | makeseeds.py
|
||||
|
||||
The input to makeseeds.py is assumed to be approximately sorted from most-reliable to least-reliable,
|
||||
with IP:port first on each line (lines that don't match IPv4:port are ignored).
|
||||
curl -s http://bitcoin.sipa.be/seeds.txt | makeseeds.py
|
||||
|
||||
@@ -1,32 +1,118 @@
|
||||
#!/usr/bin/env python
|
||||
#
|
||||
# Generate pnSeed[] from Pieter's DNS seeder
|
||||
# Generate seeds.txt from Pieter's DNS seeder
|
||||
#
|
||||
|
||||
NSEEDS=600
|
||||
NSEEDS=512
|
||||
|
||||
MAX_SEEDS_PER_ASN=2
|
||||
|
||||
MIN_BLOCKS = 337600
|
||||
|
||||
# These are hosts that have been observed to be behaving strangely (e.g.
|
||||
# aggressively connecting to every node).
|
||||
SUSPICIOUS_HOSTS = set([
|
||||
"130.211.129.106", "178.63.107.226",
|
||||
"83.81.130.26", "88.198.17.7", "148.251.238.178", "176.9.46.6",
|
||||
"54.173.72.127", "54.174.10.182", "54.183.64.54", "54.194.231.211",
|
||||
"54.66.214.167", "54.66.220.137", "54.67.33.14", "54.77.251.214",
|
||||
"54.94.195.96", "54.94.200.247"
|
||||
])
|
||||
|
||||
import re
|
||||
import sys
|
||||
from subprocess import check_output
|
||||
import dns.resolver
|
||||
|
||||
PATTERN_IPV4 = re.compile(r"^((\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})):8333$")
|
||||
PATTERN_AGENT = re.compile(r"^(\/Satoshi:0.8.6\/|\/Satoshi:0.9.(2|3)\/|\/Satoshi:0.10.\d{1,2}\/)$")
|
||||
|
||||
def parseline(line):
|
||||
sline = line.split()
|
||||
if len(sline) < 11:
|
||||
return None
|
||||
# Match only IPv4
|
||||
m = PATTERN_IPV4.match(sline[0])
|
||||
if m is None:
|
||||
return None
|
||||
# Do IPv4 sanity check
|
||||
ip = 0
|
||||
for i in range(0,4):
|
||||
if int(m.group(i+2)) < 0 or int(m.group(i+2)) > 255:
|
||||
return None
|
||||
ip = ip + (int(m.group(i+2)) << (8*(3-i)))
|
||||
if ip == 0:
|
||||
return None
|
||||
# Skip bad results.
|
||||
if sline[1] == 0:
|
||||
return None
|
||||
# Extract uptime %.
|
||||
uptime30 = float(sline[7][:-1])
|
||||
# Extract Unix timestamp of last success.
|
||||
lastsuccess = int(sline[2])
|
||||
# Extract protocol version.
|
||||
version = int(sline[10])
|
||||
# Extract user agent.
|
||||
agent = sline[11][1:-1]
|
||||
# Extract service flags.
|
||||
service = int(sline[9], 16)
|
||||
# Extract blocks.
|
||||
blocks = int(sline[8])
|
||||
# Construct result.
|
||||
return {
|
||||
'ip': m.group(1),
|
||||
'ipnum': ip,
|
||||
'uptime': uptime30,
|
||||
'lastsuccess': lastsuccess,
|
||||
'version': version,
|
||||
'agent': agent,
|
||||
'service': service,
|
||||
'blocks': blocks,
|
||||
}
|
||||
|
||||
# Based on Greg Maxwell's seed_filter.py
|
||||
def filterbyasn(ips, max_per_asn, max_total):
|
||||
result = []
|
||||
asn_count = {}
|
||||
for ip in ips:
|
||||
if len(result) == max_total:
|
||||
break
|
||||
try:
|
||||
asn = int([x.to_text() for x in dns.resolver.query('.'.join(reversed(ip['ip'].split('.'))) + '.origin.asn.cymru.com', 'TXT').response.answer][0].split('\"')[1].split(' ')[0])
|
||||
if asn not in asn_count:
|
||||
asn_count[asn] = 0
|
||||
if asn_count[asn] == max_per_asn:
|
||||
continue
|
||||
asn_count[asn] += 1
|
||||
result.append(ip)
|
||||
except:
|
||||
sys.stderr.write('ERR: Could not resolve ASN for "' + ip['ip'] + '"\n')
|
||||
return result
|
||||
|
||||
def main():
|
||||
lines = sys.stdin.readlines()
|
||||
ips = [parseline(line) for line in lines]
|
||||
|
||||
ips = []
|
||||
pattern = re.compile(r"^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3}):8333")
|
||||
for line in lines:
|
||||
m = pattern.match(line)
|
||||
if m is None:
|
||||
continue
|
||||
ip = 0
|
||||
for i in range(0,4):
|
||||
ip = ip + (int(m.group(i+1)) << (8*(i)))
|
||||
if ip == 0:
|
||||
continue
|
||||
ips.append(ip)
|
||||
# Skip entries with valid IPv4 address.
|
||||
ips = [ip for ip in ips if ip is not None]
|
||||
# Skip entries from suspicious hosts.
|
||||
ips = [ip for ip in ips if ip['ip'] not in SUSPICIOUS_HOSTS]
|
||||
# Enforce minimal number of blocks.
|
||||
ips = [ip for ip in ips if ip['blocks'] >= MIN_BLOCKS]
|
||||
# Require service bit 1.
|
||||
ips = [ip for ip in ips if (ip['service'] & 1) == 1]
|
||||
# Require at least 50% 30-day uptime.
|
||||
ips = [ip for ip in ips if ip['uptime'] > 50]
|
||||
# Require a known and recent user agent.
|
||||
ips = [ip for ip in ips if PATTERN_AGENT.match(ip['agent'])]
|
||||
# Sort by availability (and use last success as tie breaker)
|
||||
ips.sort(key=lambda x: (x['uptime'], x['lastsuccess'], x['ip']), reverse=True)
|
||||
# Look up ASNs and limit results, both per ASN and globally.
|
||||
ips = filterbyasn(ips, MAX_SEEDS_PER_ASN, NSEEDS)
|
||||
# Sort the results by IP address (for deterministic output).
|
||||
ips.sort(key=lambda x: (x['ipnum']))
|
||||
|
||||
for row in range(0, min(NSEEDS,len(ips)), 8):
|
||||
print " " + ", ".join([ "0x%08x"%i for i in ips[row:row+8] ]) + ","
|
||||
for ip in ips:
|
||||
print ip['ip']
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
||||
@@ -31,6 +31,7 @@ endif
|
||||
|
||||
base_build_dir=$(BASEDIR)/work/build
|
||||
base_staging_dir=$(BASEDIR)/work/staging
|
||||
base_download_dir=$(BASEDIR)/work/download
|
||||
canonical_host:=$(shell ./config.sub $(HOST))
|
||||
build:=$(shell ./config.sub $(BUILD))
|
||||
|
||||
@@ -122,5 +123,12 @@ $(host_prefix)/share/config.site : config.site.in $(host_prefix)/.stamp_$(final_
|
||||
$(AT)touch $@
|
||||
|
||||
install: $(host_prefix)/share/config.site
|
||||
download: $(all_sources)
|
||||
.PHONY: install cached
|
||||
download-one: $(all_sources)
|
||||
download-osx:
|
||||
@$(MAKE) -s HOST=x86_64-apple-darwin11 download-one
|
||||
download-linux:
|
||||
@$(MAKE) -s HOST=x86_64-unknown-linux-gnu download-one
|
||||
download-win:
|
||||
@$(MAKE) -s HOST=x86_64-w64-mingw32 download-one
|
||||
download: download-osx download-linux download-win
|
||||
.PHONY: install cached download-one download-osx download-linux download-win download
|
||||
|
||||
@@ -29,4 +29,7 @@ If some packages are not built, for example 'make NO_WALLET=1', the appropriate
|
||||
options will be passed to bitcoin's configure. In this case, --disable-wallet.
|
||||
|
||||
Additional targets:
|
||||
download: run 'make download' to fetch sources without building them
|
||||
download: run 'make download' to fetch all sources without building them
|
||||
download-osx: run 'make download-osx' to fetch all sources needed for osx builds
|
||||
download-win: run 'make download-win' to fetch all sources needed for win builds
|
||||
download-linux: run 'make download-linux' to fetch all sources needed for linux builds
|
||||
|
||||
2
depends/config.guess
vendored
2
depends/config.guess
vendored
@@ -1099,7 +1099,7 @@ EOF
|
||||
# uname -m prints for DJGPP always 'pc', but it prints nothing about
|
||||
# the processor, so we play safe by assuming i586.
|
||||
# Note: whatever this is, it MUST be the same as what config.sub
|
||||
# prints for the "djgpp" host, or else GDB configury will decide that
|
||||
# prints for the "djgpp" host, or else GDB configure will decide that
|
||||
# this is a cross-build.
|
||||
echo i586-pc-msdosdjgpp
|
||||
exit ;;
|
||||
|
||||
@@ -20,18 +20,19 @@ $(sort $(foreach dep,$(2),$(2) $(call int_get_all_dependencies,$(1),$($(dep)_dep
|
||||
endef
|
||||
|
||||
define fetch_file
|
||||
(test -f $(SOURCES_PATH)/$(4) || \
|
||||
( mkdir -p $$($(1)_extract_dir) && \
|
||||
( $(build_DOWNLOAD) "$$($(1)_extract_dir)/$(4).temp" "$(2)/$(3)" || \
|
||||
$(build_DOWNLOAD) "$$($(1)_extract_dir)/$(4).temp" "$(FALLBACK_DOWNLOAD_PATH)/$(3)" ) && \
|
||||
echo "$(5) $$($(1)_extract_dir)/$(4).temp" > $$($(1)_extract_dir)/.$(4).hash && \
|
||||
$(build_SHA256SUM) -c $$($(1)_extract_dir)/.$(4).hash && \
|
||||
mv $$($(1)_extract_dir)/$(4).temp $(SOURCES_PATH)/$(4) ))
|
||||
(test -f $$($(1)_source_dir)/$(4) || \
|
||||
( mkdir -p $$($(1)_download_dir) && echo Fetching $(1)... && \
|
||||
( $(build_DOWNLOAD) "$$($(1)_download_dir)/$(4).temp" "$(2)/$(3)" || \
|
||||
$(build_DOWNLOAD) "$$($(1)_download_dir)/$(4).temp" "$(FALLBACK_DOWNLOAD_PATH)/$(3)" ) && \
|
||||
echo "$(5) $$($(1)_download_dir)/$(4).temp" > $$($(1)_download_dir)/.$(4).hash && \
|
||||
$(build_SHA256SUM) -c $$($(1)_download_dir)/.$(4).hash && \
|
||||
mv $$($(1)_download_dir)/$(4).temp $$($(1)_source_dir)/$(4) && \
|
||||
rm -rf $$($(1)_download_dir) ))
|
||||
endef
|
||||
|
||||
define int_get_build_recipe_hash
|
||||
$(eval $(1)_all_file_checksums:=$(shell $(build_SHA256SUM) $(meta_depends) packages/$(1).mk $(addprefix $(PATCHES_PATH)/$(1)/,$($(1)_patches))))
|
||||
$(eval $(1)_recipe_hash:=$(shell echo -n "$($(1)_all_file_checksums)" | $(build_SHA256SUM)))
|
||||
$(eval $(1)_all_file_checksums:=$(shell $(build_SHA256SUM) $(meta_depends) packages/$(1).mk $(addprefix $(PATCHES_PATH)/$(1)/,$($(1)_patches)) | cut -d" " -f1))
|
||||
$(eval $(1)_recipe_hash:=$(shell echo -n "$($(1)_all_file_checksums)" | $(build_SHA256SUM) | cut -d" " -f1))
|
||||
endef
|
||||
|
||||
define int_get_build_id
|
||||
@@ -45,17 +46,19 @@ final_build_id_long+=$($(package)_build_id_long)
|
||||
#compute package-specific paths
|
||||
$(1)_build_subdir?=.
|
||||
$(1)_download_file?=$($(1)_file_name)
|
||||
$(1)_source:=$(SOURCES_PATH)/$($(1)_file_name)
|
||||
$(1)_source_dir:=$(SOURCES_PATH)
|
||||
$(1)_source:=$$($(1)_source_dir)/$($(1)_file_name)
|
||||
$(1)_staging_dir=$(base_staging_dir)/$(host)/$(1)/$($(1)_version)-$($(1)_build_id)
|
||||
$(1)_staging_prefix_dir:=$$($(1)_staging_dir)$($($(1)_type)_prefix)
|
||||
$(1)_extract_dir:=$(base_build_dir)/$(host)/$(1)/$($(1)_version)-$($(1)_build_id)
|
||||
$(1)_download_dir:=$(base_download_dir)/$(1)-$($(1)_version)
|
||||
$(1)_build_dir:=$$($(1)_extract_dir)/$$($(1)_build_subdir)
|
||||
$(1)_patch_dir:=$(base_build_dir)/$(host)/$(1)/$($(1)_version)-$($(1)_build_id)/.patches-$($(1)_build_id)
|
||||
$(1)_prefixbin:=$($($(1)_type)_prefix)/bin/
|
||||
$(1)_cached:=$(BASE_CACHE)/$(host)/$(1)/$(1)-$($(1)_version)-$($(1)_build_id).tar.gz
|
||||
|
||||
#stamps
|
||||
$(1)_fetched=$$($(1)_extract_dir)/.stamp_fetched
|
||||
$(1)_fetched=$$($(1)_source_dir)/download-stamps/.stamp_fetched-$(1)-$($(1)_file_name)
|
||||
$(1)_extracted=$$($(1)_extract_dir)/.stamp_extracted
|
||||
$(1)_preprocessed=$$($(1)_extract_dir)/.stamp_preprocessed
|
||||
$(1)_cleaned=$$($(1)_extract_dir)/.stamp_cleaned
|
||||
@@ -150,7 +153,6 @@ endef
|
||||
|
||||
define int_add_cmds
|
||||
$($(1)_fetched):
|
||||
$(AT)echo Fetching $(1)...
|
||||
$(AT)mkdir -p $$(@D) $(SOURCES_PATH)
|
||||
$(AT)cd $$(@D); $(call $(1)_fetch_cmds,$(1))
|
||||
$(AT)touch $$@
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package=miniupnpc
|
||||
$(package)_version=1.9.20140701
|
||||
$(package)_version=1.9.20151008
|
||||
$(package)_download_path=http://miniupnp.free.fr/files
|
||||
$(package)_file_name=$(package)-$($(package)_version).tar.gz
|
||||
$(package)_sha256_hash=26f3985bad7768b8483b793448ae49414cdc4451d0ec83e7c1944367e15f9f07
|
||||
$(package)_sha256_hash=e444ac3b587ce82709c4d0cfca1fe71f44f9fc433e9f946b12b9e1bfe667a633
|
||||
|
||||
define $(package)_set_vars
|
||||
$(package)_build_opts=CC="$($(package)_cc)"
|
||||
|
||||
@@ -39,11 +39,11 @@ $(package)_ldflags+=-m32 -Wl,-rpath=\\$$$$$$$$\$$$$$$$$ORIGIN/../lib
|
||||
$(package)_ldflags+=-L$$(native_cctools_extract_dir)/clang+llvm-3.2-x86-linux-ubuntu-12.04/lib
|
||||
endef
|
||||
define $(package)_extract_cmds
|
||||
tar --strip-components=1 -xf $(SOURCES_PATH)/$($(package)_toolchain4_file_name) && \
|
||||
tar --strip-components=1 -xf $($(package)_source_dir)/$($(package)_toolchain4_file_name) && \
|
||||
ln -sf $($(package)_source) cctools2odcctools/$($(package)_file_name) && \
|
||||
ln -sf $(SOURCES_PATH)/$($(package)_ld64_file_name) cctools2odcctools/$($(package)_ld64_file_name) && \
|
||||
ln -sf $(SOURCES_PATH)/$($(package)_dyld_file_name) cctools2odcctools/$($(package)_dyld_file_name) && \
|
||||
tar xf $(SOURCES_PATH)/$($(package)_clang_file_name) && \
|
||||
ln -sf $($(package)_source_dir)/$($(package)_ld64_file_name) cctools2odcctools/$($(package)_ld64_file_name) && \
|
||||
ln -sf $($(package)_source_dir)/$($(package)_dyld_file_name) cctools2odcctools/$($(package)_dyld_file_name) && \
|
||||
tar xf $($(package)_source_dir)/$($(package)_clang_file_name) && \
|
||||
mkdir -p $(SDK_PATH) sdks &&\
|
||||
cd sdks; ln -sf $(OSX_SDK) MacOSX$(OSX_SDK_VERSION).sdk
|
||||
endef
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package=native_cdrkit
|
||||
$(package)_version=1.1.11
|
||||
$(package)_download_path=http://distro.ibiblio.org/fatdog/source/c
|
||||
$(package)_download_path=http://distro.ibiblio.org/fatdog/source/600/c
|
||||
$(package)_file_name=cdrkit-$($(package)_version).tar.bz2
|
||||
$(package)_sha256_hash=b50d64c214a65b1a79afe3a964c691931a4233e2ba605d793eb85d0ac3652564
|
||||
$(package)_patches=cdrkit-deterministic.patch
|
||||
|
||||
@@ -17,5 +17,5 @@ endef
|
||||
|
||||
define $(package)_stage_cmds
|
||||
mkdir -p $($(package)_staging_prefix_dir)/share/$($(package)_install_dirname) && \
|
||||
mv $(SOURCES_PATH)/$($(package)_file_name) $($(package)_staging_prefix_dir)/share/$($(package)_install_dirname)/$($(package)_install_filename)
|
||||
cp $($(package)_source) $($(package)_staging_prefix_dir)/share/$($(package)_install_dirname)/$($(package)_install_filename)
|
||||
endef
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package=openssl
|
||||
$(package)_version=1.0.1j
|
||||
$(package)_version=1.0.1k
|
||||
$(package)_download_path=https://www.openssl.org/source
|
||||
$(package)_file_name=$(package)-$($(package)_version).tar.gz
|
||||
$(package)_sha256_hash=1b60ca8789ba6f03e8ef20da2293b8dc131c39d83814e775069f02d26354edf3
|
||||
$(package)_sha256_hash=8f9faeaebad088e772f4ef5e38252d472be4d878c6b3a2718c10a4fcebe7a41c
|
||||
|
||||
define $(package)_set_vars
|
||||
$(package)_config_env=AR="$($(package)_ar)" RANLIB="$($(package)_ranlib)" CC="$($(package)_cc)"
|
||||
@@ -20,7 +20,7 @@ $(package)_config_opts_i686_mingw32=mingw
|
||||
endef
|
||||
|
||||
define $(package)_preprocess_cmds
|
||||
sed -i.old "/define DATE/d" crypto/Makefile && \
|
||||
sed -i.old "/define DATE/d" util/mkbuildinf.pl && \
|
||||
sed -i.old "s|engines apps test|engines|" Makefile.org
|
||||
endef
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@ PROJECT_NAME = Bitcoin
|
||||
# This could be handy for archiving the generated documentation or
|
||||
# if some version control system is used.
|
||||
|
||||
PROJECT_NUMBER = 0.9.99
|
||||
PROJECT_NUMBER = 0.10.3
|
||||
|
||||
# Using the PROJECT_BRIEF tag one can provide an optional one line description
|
||||
# for a project that appears at the top of each page and should give viewer
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
Bitcoin 0.9.99 BETA
|
||||
Bitcoin Core 0.10.3
|
||||
=====================
|
||||
|
||||
Copyright (c) 2009-2014 Bitcoin Developers
|
||||
|
||||
|
||||
Setup
|
||||
---------------------
|
||||
[Bitcoin Core](http://bitcoin.org/en/download) is the original Bitcoin client and it builds the backbone of the network. However, it downloads and stores the entire history of Bitcoin transactions (which is currently several GBs); depending on the speed of your computer and network connection, the synchronization process can take anywhere from a few hours to a day or more. Thankfully you only have to do this once. If you would like the process to go faster you can [download the blockchain directly](bootstrap.md).
|
||||
|
||||
@@ -1,13 +1,5 @@
|
||||
Bitcoin 0.9.99 BETA
|
||||
|
||||
Copyright (c) 2009-2014 Bitcoin Core Developers
|
||||
|
||||
Distributed under the MIT/X11 software license, see the accompanying
|
||||
file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
This product includes software developed by the OpenSSL Project for use in
|
||||
the OpenSSL Toolkit (https://www.openssl.org/). This product includes
|
||||
cryptographic software written by Eric Young (eay@cryptsoft.com).
|
||||
|
||||
Bitcoin Core 0.10.2
|
||||
=====================
|
||||
|
||||
Intro
|
||||
-----
|
||||
|
||||
@@ -45,7 +45,8 @@ related to the DNS seed operation.
|
||||
|
||||
If these expectations cannot be satisfied the operator should
|
||||
discontinue providing services and contact the active Bitcoin
|
||||
Core development team as well as posting on bitcoin-development.
|
||||
Core development team as well as posting on
|
||||
[bitcoin-dev](https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev).
|
||||
|
||||
Behavior outside of these expectations may be reasonable in some
|
||||
situations but should be discussed in public in advance.
|
||||
|
||||
12
doc/files.md
12
doc/files.md
@@ -1,12 +1,16 @@
|
||||
Used in 0.8.0
|
||||
---------------------
|
||||
* wallet.dat: personal wallet (BDB) with keys and transactions
|
||||
* peers.dat: peer IP address database (custom format); since 0.7.0
|
||||
|
||||
* bitcoin.conf: contains configuration settings for bitcoind or bitcoin-qt
|
||||
* bitcoind.pid: stores the process id of bitcoind while running
|
||||
* blocks/blk000??.dat: block data (custom, 128 MiB per file); since 0.8.0
|
||||
* blocks/rev000??.dat; block undo data (custom); since 0.8.0 (format changed since pre-0.8)
|
||||
* blocks/index/*; block index (LevelDB); since 0.8.0
|
||||
* chainstate/*; block chain state database (LevelDB); since 0.8.0
|
||||
* database/*: BDB database environment; only used for wallet since 0.8.0
|
||||
* db.log: wallet database log file
|
||||
* debug.log: contains debug information and general logging generated by bitcoind or bitcoin-qt
|
||||
* fee_estimates.dat: stores statistics used to estimate minimum transaction fees and priorities required for confirmation; since 0.10.0
|
||||
* peers.dat: peer IP address database (custom format); since 0.7.0
|
||||
* wallet.dat: personal wallet (BDB) with keys and transactions
|
||||
|
||||
Only used in pre-0.8.0
|
||||
---------------------
|
||||
|
||||
@@ -74,7 +74,7 @@ In the VirtualBox GUI click "Create" and choose the following parameters in the
|
||||
- Disk size: at least 40GB; as low as 20GB *may* be possible, but better to err on the safe side
|
||||
- Push the `Create` button
|
||||
|
||||
Get the [Debian 7.4 net installer](http://ftp.at.debian.org/debian-jigdo/current/amd64/iso-cd/debian-7.4.0-amd64-netinst.iso) (a more recent minor version should also work, see also [Debian Network installation](https://www.debian.org/CD/netinst/)).
|
||||
Get the [Debian 7.8 net installer](http://cdimage.debian.org/cdimage/archive/7.8.0/amd64/iso-cd/debian-7.8.0-amd64-netinst.iso) (a more recent minor version should also work, see also [Debian Network installation](https://www.debian.org/CD/netinst/)).
|
||||
This DVD image can be validated using a SHA256 hashing tool, for example on
|
||||
Unixy OSes by entering the following in a terminal:
|
||||
|
||||
@@ -291,7 +291,7 @@ Setting up gitian images
|
||||
-------------------------
|
||||
|
||||
Gitian needs virtual images of the operating system to build in.
|
||||
Currently this is Ubuntu Precise for both x86 architectures.
|
||||
Currently this is Ubuntu Precise for x86_64.
|
||||
These images will be copied and used every time that a build is started to
|
||||
make sure that the build is deterministic.
|
||||
Creating the images will take a while, but only has to be done once.
|
||||
@@ -300,7 +300,6 @@ Execute the following as user `debian`:
|
||||
|
||||
```bash
|
||||
cd gitian-builder
|
||||
bin/make-base-vm --lxc --arch i386 --suite precise
|
||||
bin/make-base-vm --lxc --arch amd64 --suite precise
|
||||
```
|
||||
|
||||
@@ -311,27 +310,10 @@ There will be a lot of warnings printed during build of the images. These can be
|
||||
Getting and building the inputs
|
||||
--------------------------------
|
||||
|
||||
In [doc/release-process.md](release-process.md) in the bitcoin repository under 'Fetch and build inputs'.
|
||||
you will find a list of `wget` commands that can be executed to get the dependencies.
|
||||
|
||||
I needed to add `--no-check-certificate` to the OpenSSL wget line to make it work.
|
||||
Likely this is because the ca-certificates in Debian 7.4 is fairly old. This does not create a
|
||||
security issue as the gitian descriptors check the integrity of the input archives and refuse to work
|
||||
if any one is corrupted.
|
||||
|
||||
After downloading the archives, execute the `gbuild` commands to build the dependencies.
|
||||
This can take a long time, but only has to be done when the dependencies change, for example
|
||||
to upgrade the used version.
|
||||
|
||||
**Note**: Do not forget to copy the result from `build/out` to `inputs` after every gbuild command! This will save
|
||||
you a lot of time.
|
||||
|
||||
At any time you can check the package installation and build progress with
|
||||
|
||||
```bash
|
||||
tail -f var/install.log
|
||||
tail -f var/build.log
|
||||
```
|
||||
Follow the instructions in [doc/release-process.md](release-process.md) in the bitcoin repository
|
||||
under 'Fetch and build inputs' to install sources which require manual intervention. Also follow
|
||||
the next step: 'Seed the Gitian sources cache', which will fetch all necessary source files allowing
|
||||
for gitian to work offline.
|
||||
|
||||
Building Bitcoin
|
||||
----------------
|
||||
@@ -339,6 +321,15 @@ Building Bitcoin
|
||||
To build Bitcoin (for Linux, OSX and Windows) just follow the steps under 'perform
|
||||
gitian builds' in [doc/release-process.md](release-process.md) in the bitcoin repository.
|
||||
|
||||
This may take a long time as it also builds the dependencies needed for each descriptor.
|
||||
These dependencies will be cached after a successful build to avoid rebuilding them when possible.
|
||||
|
||||
At any time you can check the package installation and build progress with
|
||||
|
||||
```bash
|
||||
tail -f var/install.log
|
||||
tail -f var/build.log
|
||||
|
||||
Output from `gbuild` will look something like
|
||||
|
||||
Initialized empty Git repository in /home/debian/gitian-builder/inputs/bitcoin/.git/
|
||||
@@ -348,7 +339,7 @@ Output from `gbuild` will look something like
|
||||
Resolving deltas: 100% (25724/25724), done.
|
||||
From https://github.com/bitcoin/bitcoin
|
||||
... (new tags, new branch etc)
|
||||
--- Building for precise i386 ---
|
||||
--- Building for precise x86_64 ---
|
||||
Stopping target if it is up
|
||||
Making a new image copy
|
||||
stdin: is not a tty
|
||||
@@ -363,9 +354,6 @@ Output from `gbuild` will look something like
|
||||
lxc-start: Connection refused - inotify event with no name (mask 32768)
|
||||
Running build script (log in var/build.log)
|
||||
|
||||
As when building the dependencies, the progress of package installation and building
|
||||
can be inspected in `var/install.log` and `var/build.log`.
|
||||
|
||||
Building an alternative repository
|
||||
-----------------------------------
|
||||
|
||||
|
||||
@@ -1,12 +1,31 @@
|
||||
(note: this is a temporary file, to be added-to by anybody, and moved to
|
||||
release-notes at release time)
|
||||
Bitcoin Core version 0.10.3 is now available from:
|
||||
|
||||
Block file backwards-compatibility warning
|
||||
===========================================
|
||||
<https://bitcoin.org/bin/bitcoin-core-0.10.3/>
|
||||
|
||||
Because release 0.10.0 makes use of headers-first synchronization and parallel
|
||||
block download, the block files and databases are not backwards-compatible
|
||||
with older versions of Bitcoin Core:
|
||||
This is a new minor version release, bringing security fixes and translation
|
||||
updates. It is recommended to upgrade to this version as soon as possible.
|
||||
|
||||
Please report bugs using the issue tracker at github:
|
||||
|
||||
<https://github.com/bitcoin/bitcoin/issues>
|
||||
|
||||
Upgrading and downgrading
|
||||
=========================
|
||||
|
||||
How to Upgrade
|
||||
--------------
|
||||
|
||||
If you are running an older version, shut it down. Wait until it has completely
|
||||
shut down (which might take a few minutes for older versions), then run the
|
||||
installer (on Windows) or just copy over /Applications/Bitcoin-Qt (on Mac) or
|
||||
bitcoind/bitcoin-qt (on Linux).
|
||||
|
||||
Downgrade warning
|
||||
------------------
|
||||
|
||||
Because release 0.10.0 and later makes use of headers-first synchronization and
|
||||
parallel block download (see further), the block files and databases are not
|
||||
backwards-compatible with pre-0.10 versions of Bitcoin Core or other software:
|
||||
|
||||
* Blocks will be stored on disk out of order (in the order they are
|
||||
received, really), which makes it incompatible with some tools or
|
||||
@@ -18,109 +37,129 @@ stored on disk, which earlier versions won't support.
|
||||
|
||||
If you want to be able to downgrade smoothly, make a backup of your entire data
|
||||
directory. Without this your node will need start syncing (or importing from
|
||||
bootstrap.dat) anew afterwards.
|
||||
bootstrap.dat) anew afterwards. It is possible that the data from a completely
|
||||
synchronised 0.10 node may be usable in older versions as-is, but this is not
|
||||
supported and may break as soon as the older version attempts to reindex.
|
||||
|
||||
This does not affect wallet forward or backward compatibility.
|
||||
|
||||
Transaction fee changes
|
||||
=======================
|
||||
Notable changes
|
||||
===============
|
||||
|
||||
This release automatically estimates how high a transaction fee (or how
|
||||
high a priority) transactions require to be confirmed quickly. The default
|
||||
settings will create transactions that confirm quickly; see the new
|
||||
'txconfirmtarget' setting to control the tradeoff between fees and
|
||||
confirmation times.
|
||||
Fix buffer overflow in bundled upnp
|
||||
------------------------------------
|
||||
|
||||
Prior releases used hard-coded fees (and priorities), and would
|
||||
sometimes create transactions that took a very long time to confirm.
|
||||
Bundled miniupnpc was updated to 1.9.20151008. This fixes a buffer overflow in
|
||||
the XML parser during initial network discovery.
|
||||
|
||||
Statistics used to estimate fees and priorities are saved in the
|
||||
data directory in the `fee_estimates.dat` file just before
|
||||
program shutdown, and are read in at startup.
|
||||
Details can be found here: http://talosintel.com/reports/TALOS-2015-0035/
|
||||
|
||||
New Command Line Options
|
||||
---------------------------
|
||||
This applies to the distributed executables only, not when building from source or
|
||||
using distribution provided packages.
|
||||
|
||||
- `-txconfirmtarget=n` : create transactions that have enough fees (or priority)
|
||||
so they are likely to confirm within n blocks (default: 1). This setting
|
||||
is over-ridden by the -paytxfee option.
|
||||
Additionally, upnp has been disabled by default. This may result in a lower
|
||||
number of reachable nodes on IPv4, however this prevents future libupnpc
|
||||
vulnerabilities from being a structural risk to the network
|
||||
(see https://github.com/bitcoin/bitcoin/pull/6795).
|
||||
|
||||
New RPC methods
|
||||
----------------
|
||||
Test for LowS signatures before relaying
|
||||
-----------------------------------------
|
||||
|
||||
- `estimatefee nblocks` : Returns approximate fee-per-1,000-bytes needed for
|
||||
a transaction to be confirmed within nblocks. Returns -1 if not enough
|
||||
transactions have been observed to compute a good estimate.
|
||||
Make the node require the canonical 'low-s' encoding for ECDSA signatures when
|
||||
relaying or mining. This removes a nuisance malleability vector.
|
||||
|
||||
- `estimatepriority nblocks` : Returns approximate priority needed for
|
||||
a zero-fee transaction to confirm within nblocks. Returns -1 if not
|
||||
enough free transactions have been observed to compute a good
|
||||
estimate.
|
||||
Consensus behavior is unchanged.
|
||||
|
||||
RPC access control changes
|
||||
==========================================
|
||||
If widely deployed this change would eliminate the last remaining known vector
|
||||
for nuisance malleability on SIGHASH_ALL P2PKH transactions. On the down-side
|
||||
it will block most transactions made by sufficiently out of date software.
|
||||
|
||||
Subnet matching for the purpose of access control is now done
|
||||
by matching the binary network address, instead of with string wildcard matching.
|
||||
For the user this means that `-rpcallowip` takes a subnet specification, which can be
|
||||
Unlike the other avenues to change txids on transactions this
|
||||
one was randomly violated by all deployed bitcoin software prior to
|
||||
its discovery. So, while other malleability vectors where made
|
||||
non-standard as soon as they were discovered, this one has remained
|
||||
permitted. Even BIP62 did not propose applying this rule to
|
||||
old version transactions, but conforming implementations have become
|
||||
much more common since BIP62 was initially written.
|
||||
|
||||
- a single IP address (e.g. `1.2.3.4` or `fe80::0012:3456:789a:bcde`)
|
||||
- a network/CIDR (e.g. `1.2.3.0/24` or `fe80::0000/64`)
|
||||
- a network/netmask (e.g. `1.2.3.4/255.255.255.0` or `fe80::0012:3456:789a:bcde/ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff`)
|
||||
Bitcoin Core has produced compatible signatures since a28fb70e in
|
||||
September 2013, but this didn't make it into a release until 0.9
|
||||
in March 2014; Bitcoinj has done so for a similar span of time.
|
||||
Bitcoinjs and electrum have been more recently updated.
|
||||
|
||||
An arbitrary number of `-rpcallow` arguments can be given. An incoming connection will be accepted if its origin address
|
||||
matches one of them.
|
||||
This does not replace the need for BIP62 or similar, as miners can
|
||||
still cooperate to break transactions. Nor does it replace the
|
||||
need for wallet software to handle malleability sanely[1]. This
|
||||
only eliminates the cheap and irritating DOS attack.
|
||||
|
||||
For example:
|
||||
[1] On the Malleability of Bitcoin Transactions
|
||||
Marcin Andrychowicz, Stefan Dziembowski, Daniel Malinowski, Łukasz Mazurek
|
||||
http://fc15.ifca.ai/preproceedings/bitcoin/paper_9.pdf
|
||||
|
||||
| 0.9.x and before | 0.10.x |
|
||||
|--------------------------------------------|---------------------------------------|
|
||||
| `-rpcallowip=192.168.1.1` | `-rpcallowip=192.168.1.1` (unchanged) |
|
||||
| `-rpcallowip=192.168.1.*` | `-rpcallowip=192.168.1.0/24` |
|
||||
| `-rpcallowip=192.168.*` | `-rpcallowip=192.168.0.0/16` |
|
||||
| `-rpcallowip=*` (dangerous!) | `-rpcallowip=::/0` |
|
||||
Minimum relay fee default increase
|
||||
-----------------------------------
|
||||
|
||||
Using wildcards will result in the rule being rejected with the following error in debug.log:
|
||||
The default for the `-minrelaytxfee` setting has been increased from `0.00001`
|
||||
to `0.00005`.
|
||||
|
||||
Error: Invalid -rpcallowip subnet specification: *. Valid are a single IP (e.g. 1.2.3.4), a network/netmask (e.g. 1.2.3.4/255.255.255.0) or a network/CIDR (e.g. 1.2.3.4/24).
|
||||
This is necessitated by the current transaction flooding, causing
|
||||
outrageous memory usage on nodes due to the mempool ballooning. This is a
|
||||
temporary measure, bridging the time until a dynamic method for determining
|
||||
this fee is merged (which will be in 0.12).
|
||||
|
||||
RPC Server "Warm-Up" Mode
|
||||
=========================
|
||||
(see https://github.com/bitcoin/bitcoin/pull/6793, as well as the 0.11.0
|
||||
release notes, in which this value was suggested)
|
||||
|
||||
The RPC server is started earlier now, before most of the expensive
|
||||
intialisations like loading the block index. It is available now almost
|
||||
immediately after starting the process. However, until all initialisations
|
||||
are done, it always returns an immediate error with code -28 to all calls.
|
||||
0.10.3 Change log
|
||||
=================
|
||||
|
||||
This new behaviour can be useful for clients to know that a server is already
|
||||
started and will be available soon (for instance, so that they do not
|
||||
have to start it themselves).
|
||||
Detailed release notes follow. This overview includes changes that affect external
|
||||
behavior, not code moves, refactors or string updates.
|
||||
|
||||
Improved signing security
|
||||
=========================
|
||||
- #6186 `e4a7d51` Fix two problems in CSubnet parsing
|
||||
- #6153 `ebd7d8d` Parameter interaction: disable upnp if -proxy set
|
||||
- #6203 `ecc96f5` Remove P2SH coinbase flag, no longer interesting
|
||||
- #6226 `181771b` json: fail read_string if string contains trailing garbage
|
||||
- #6244 `09334e0` configure: Detect (and reject) LibreSSL
|
||||
- #6276 `0fd8464` Fix getbalance * 0
|
||||
- #6274 `be64204` Add option `-alerts` to opt out of alert system
|
||||
- #6319 `3f55638` doc: update mailing list address
|
||||
- #6438 `7e66e9c` openssl: avoid config file load/race
|
||||
- #6439 `255eced` Updated URL location of netinstall for Debian
|
||||
- #6412 `0739e6e` Test whether created sockets are select()able
|
||||
- #6694 `f696ea1` [QT] fix thin space word wrap line brake issue
|
||||
- #6704 `743cc9e` Backport bugfixes to 0.10
|
||||
- #6769 `1cea6b0` Test LowS in standardness, removes nuisance malleability vector.
|
||||
- #6789 `093d7b5` Update miniupnpc to 1.9.20151008
|
||||
- #6795 `f2778e0` net: Disable upnp by default
|
||||
- #6797 `91ef4d9` Do not store more than 200 timedata samples
|
||||
- #6793 `842c48d` Bump minrelaytxfee default
|
||||
|
||||
For 0.10 the security of signing against unusual attacks has been
|
||||
improved by making the signatures constant time and deterministic.
|
||||
Credits
|
||||
=======
|
||||
|
||||
This change is a result of switching signing to use libsecp256k1
|
||||
instead of OpenSSL. Libsecp256k1 is a cryptographic library
|
||||
optimized for the curve Bitcoin uses which was created by Bitcoin
|
||||
Core developer Pieter Wuille.
|
||||
Thanks to everyone who directly contributed to this release:
|
||||
|
||||
There exist attacks[1] against most ECC implementations where an
|
||||
attacker on shared virtual machine hardware could extract a private
|
||||
key if they could cause a target to sign using the same key hundreds
|
||||
of times. While using shared hosts and reusing keys are inadvisable
|
||||
for other reasons, it's a better practice to avoid the exposure.
|
||||
- Adam Weiss
|
||||
- Alex Morcos
|
||||
- Casey Rodarmor
|
||||
- Cory Fields
|
||||
- fanquake
|
||||
- Gregory Maxwell
|
||||
- Jonas Schnelli
|
||||
- J Ross Nicoll
|
||||
- Luke Dashjr
|
||||
- Pavel Vasin
|
||||
- Pieter Wuille
|
||||
- randy-waterhouse
|
||||
- ฿tcDrak
|
||||
- Tom Harding
|
||||
- Veres Lajos
|
||||
- Wladimir J. van der Laan
|
||||
|
||||
OpenSSL has code in their source repository for derandomization
|
||||
and reduction in timing leaks, and we've eagerly wanted to use
|
||||
it for a long time but this functionality has still not made its
|
||||
way into a released version of OpenSSL. Libsecp256k1 achieves
|
||||
significantly stronger protection: As far as we're aware this is
|
||||
the only deployed implementation of constant time signing for
|
||||
the curve Bitcoin uses and we have reason to believe that
|
||||
libsecp256k1 is better tested and more thoroughly reviewed
|
||||
than the implementation in OpenSSL.
|
||||
And all those who contributed additional code review and/or security research:
|
||||
|
||||
[1] https://eprint.iacr.org/2014/161.pdf
|
||||
- timothy on IRC for reporting the issue
|
||||
- Vulnerability in miniupnp discovered by Aleksandar Nikolic of Cisco Talos
|
||||
|
||||
As well as everyone that helped translating on [Transifex](https://www.transifex.com/projects/p/bitcoin/).
|
||||
|
||||
762
doc/release-notes/release-notes-0.10.0.md
Normal file
762
doc/release-notes/release-notes-0.10.0.md
Normal file
@@ -0,0 +1,762 @@
|
||||
Bitcoin Core version 0.10.0 is now available from:
|
||||
|
||||
https://bitcoin.org/bin/0.10.0/
|
||||
|
||||
This is a new major version release, bringing both new features and
|
||||
bug fixes.
|
||||
|
||||
Please report bugs using the issue tracker at github:
|
||||
|
||||
https://github.com/bitcoin/bitcoin/issues
|
||||
|
||||
Upgrading and downgrading
|
||||
=========================
|
||||
|
||||
How to Upgrade
|
||||
--------------
|
||||
|
||||
If you are running an older version, shut it down. Wait until it has completely
|
||||
shut down (which might take a few minutes for older versions), then run the
|
||||
installer (on Windows) or just copy over /Applications/Bitcoin-Qt (on Mac) or
|
||||
bitcoind/bitcoin-qt (on Linux).
|
||||
|
||||
Downgrading warning
|
||||
---------------------
|
||||
|
||||
Because release 0.10.0 makes use of headers-first synchronization and parallel
|
||||
block download (see further), the block files and databases are not
|
||||
backwards-compatible with older versions of Bitcoin Core or other software:
|
||||
|
||||
* Blocks will be stored on disk out of order (in the order they are
|
||||
received, really), which makes it incompatible with some tools or
|
||||
other programs. Reindexing using earlier versions will also not work
|
||||
anymore as a result of this.
|
||||
|
||||
* The block index database will now hold headers for which no block is
|
||||
stored on disk, which earlier versions won't support.
|
||||
|
||||
If you want to be able to downgrade smoothly, make a backup of your entire data
|
||||
directory. Without this your node will need start syncing (or importing from
|
||||
bootstrap.dat) anew afterwards. It is possible that the data from a completely
|
||||
synchronised 0.10 node may be usable in older versions as-is, but this is not
|
||||
supported and may break as soon as the older version attempts to reindex.
|
||||
|
||||
This does not affect wallet forward or backward compatibility.
|
||||
|
||||
|
||||
Notable changes
|
||||
===============
|
||||
|
||||
Faster synchronization
|
||||
----------------------
|
||||
|
||||
Bitcoin Core now uses 'headers-first synchronization'. This means that we first
|
||||
ask peers for block headers (a total of 27 megabytes, as of December 2014) and
|
||||
validate those. In a second stage, when the headers have been discovered, we
|
||||
download the blocks. However, as we already know about the whole chain in
|
||||
advance, the blocks can be downloaded in parallel from all available peers.
|
||||
|
||||
In practice, this means a much faster and more robust synchronization. On
|
||||
recent hardware with a decent network link, it can be as little as 3 hours
|
||||
for an initial full synchronization. You may notice a slower progress in the
|
||||
very first few minutes, when headers are still being fetched and verified, but
|
||||
it should gain speed afterwards.
|
||||
|
||||
A few RPCs were added/updated as a result of this:
|
||||
- `getblockchaininfo` now returns the number of validated headers in addition to
|
||||
the number of validated blocks.
|
||||
- `getpeerinfo` lists both the number of blocks and headers we know we have in
|
||||
common with each peer. While synchronizing, the heights of the blocks that we
|
||||
have requested from peers (but haven't received yet) are also listed as
|
||||
'inflight'.
|
||||
- A new RPC `getchaintips` lists all known branches of the block chain,
|
||||
including those we only have headers for.
|
||||
|
||||
Transaction fee changes
|
||||
-----------------------
|
||||
|
||||
This release automatically estimates how high a transaction fee (or how
|
||||
high a priority) transactions require to be confirmed quickly. The default
|
||||
settings will create transactions that confirm quickly; see the new
|
||||
'txconfirmtarget' setting to control the tradeoff between fees and
|
||||
confirmation times. Fees are added by default unless the 'sendfreetransactions'
|
||||
setting is enabled.
|
||||
|
||||
Prior releases used hard-coded fees (and priorities), and would
|
||||
sometimes create transactions that took a very long time to confirm.
|
||||
|
||||
Statistics used to estimate fees and priorities are saved in the
|
||||
data directory in the `fee_estimates.dat` file just before
|
||||
program shutdown, and are read in at startup.
|
||||
|
||||
New command line options for transaction fee changes:
|
||||
- `-txconfirmtarget=n` : create transactions that have enough fees (or priority)
|
||||
so they are likely to begin confirmation within n blocks (default: 1). This setting
|
||||
is over-ridden by the -paytxfee option.
|
||||
- `-sendfreetransactions` : Send transactions as zero-fee transactions if possible
|
||||
(default: 0)
|
||||
|
||||
New RPC commands for fee estimation:
|
||||
- `estimatefee nblocks` : Returns approximate fee-per-1,000-bytes needed for
|
||||
a transaction to begin confirmation within nblocks. Returns -1 if not enough
|
||||
transactions have been observed to compute a good estimate.
|
||||
- `estimatepriority nblocks` : Returns approximate priority needed for
|
||||
a zero-fee transaction to begin confirmation within nblocks. Returns -1 if not
|
||||
enough free transactions have been observed to compute a good
|
||||
estimate.
|
||||
|
||||
RPC access control changes
|
||||
--------------------------
|
||||
|
||||
Subnet matching for the purpose of access control is now done
|
||||
by matching the binary network address, instead of with string wildcard matching.
|
||||
For the user this means that `-rpcallowip` takes a subnet specification, which can be
|
||||
|
||||
- a single IP address (e.g. `1.2.3.4` or `fe80::0012:3456:789a:bcde`)
|
||||
- a network/CIDR (e.g. `1.2.3.0/24` or `fe80::0000/64`)
|
||||
- a network/netmask (e.g. `1.2.3.4/255.255.255.0` or `fe80::0012:3456:789a:bcde/ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff`)
|
||||
|
||||
An arbitrary number of `-rpcallow` arguments can be given. An incoming connection will be accepted if its origin address
|
||||
matches one of them.
|
||||
|
||||
For example:
|
||||
|
||||
| 0.9.x and before | 0.10.x |
|
||||
|--------------------------------------------|---------------------------------------|
|
||||
| `-rpcallowip=192.168.1.1` | `-rpcallowip=192.168.1.1` (unchanged) |
|
||||
| `-rpcallowip=192.168.1.*` | `-rpcallowip=192.168.1.0/24` |
|
||||
| `-rpcallowip=192.168.*` | `-rpcallowip=192.168.0.0/16` |
|
||||
| `-rpcallowip=*` (dangerous!) | `-rpcallowip=::/0` (still dangerous!) |
|
||||
|
||||
Using wildcards will result in the rule being rejected with the following error in debug.log:
|
||||
|
||||
Error: Invalid -rpcallowip subnet specification: *. Valid are a single IP (e.g. 1.2.3.4), a network/netmask (e.g. 1.2.3.4/255.255.255.0) or a network/CIDR (e.g. 1.2.3.4/24).
|
||||
|
||||
|
||||
REST interface
|
||||
--------------
|
||||
|
||||
A new HTTP API is exposed when running with the `-rest` flag, which allows
|
||||
unauthenticated access to public node data.
|
||||
|
||||
It is served on the same port as RPC, but does not need a password, and uses
|
||||
plain HTTP instead of JSON-RPC.
|
||||
|
||||
Assuming a local RPC server running on port 8332, it is possible to request:
|
||||
- Blocks: http://localhost:8332/rest/block/*HASH*.*EXT*
|
||||
- Blocks without transactions: http://localhost:8332/rest/block/notxdetails/*HASH*.*EXT*
|
||||
- Transactions (requires `-txindex`): http://localhost:8332/rest/tx/*HASH*.*EXT*
|
||||
|
||||
In every case, *EXT* can be `bin` (for raw binary data), `hex` (for hex-encoded
|
||||
binary) or `json`.
|
||||
|
||||
For more details, see the `doc/REST-interface.md` document in the repository.
|
||||
|
||||
RPC Server "Warm-Up" Mode
|
||||
-------------------------
|
||||
|
||||
The RPC server is started earlier now, before most of the expensive
|
||||
intialisations like loading the block index. It is available now almost
|
||||
immediately after starting the process. However, until all initialisations
|
||||
are done, it always returns an immediate error with code -28 to all calls.
|
||||
|
||||
This new behaviour can be useful for clients to know that a server is already
|
||||
started and will be available soon (for instance, so that they do not
|
||||
have to start it themselves).
|
||||
|
||||
Improved signing security
|
||||
-------------------------
|
||||
|
||||
For 0.10 the security of signing against unusual attacks has been
|
||||
improved by making the signatures constant time and deterministic.
|
||||
|
||||
This change is a result of switching signing to use libsecp256k1
|
||||
instead of OpenSSL. Libsecp256k1 is a cryptographic library
|
||||
optimized for the curve Bitcoin uses which was created by Bitcoin
|
||||
Core developer Pieter Wuille.
|
||||
|
||||
There exist attacks[1] against most ECC implementations where an
|
||||
attacker on shared virtual machine hardware could extract a private
|
||||
key if they could cause a target to sign using the same key hundreds
|
||||
of times. While using shared hosts and reusing keys are inadvisable
|
||||
for other reasons, it's a better practice to avoid the exposure.
|
||||
|
||||
OpenSSL has code in their source repository for derandomization
|
||||
and reduction in timing leaks that we've eagerly wanted to use for a
|
||||
long time, but this functionality has still not made its
|
||||
way into a released version of OpenSSL. Libsecp256k1 achieves
|
||||
significantly stronger protection: As far as we're aware this is
|
||||
the only deployed implementation of constant time signing for
|
||||
the curve Bitcoin uses and we have reason to believe that
|
||||
libsecp256k1 is better tested and more thoroughly reviewed
|
||||
than the implementation in OpenSSL.
|
||||
|
||||
[1] https://eprint.iacr.org/2014/161.pdf
|
||||
|
||||
Watch-only wallet support
|
||||
-------------------------
|
||||
|
||||
The wallet can now track transactions to and from wallets for which you know
|
||||
all addresses (or scripts), even without the private keys.
|
||||
|
||||
This can be used to track payments without needing the private keys online on a
|
||||
possibly vulnerable system. In addition, it can help for (manual) construction
|
||||
of multisig transactions where you are only one of the signers.
|
||||
|
||||
One new RPC, `importaddress`, is added which functions similarly to
|
||||
`importprivkey`, but instead takes an address or script (in hexadecimal) as
|
||||
argument. After using it, outputs credited to this address or script are
|
||||
considered to be received, and transactions consuming these outputs will be
|
||||
considered to be sent.
|
||||
|
||||
The following RPCs have optional support for watch-only:
|
||||
`getbalance`, `listreceivedbyaddress`, `listreceivedbyaccount`,
|
||||
`listtransactions`, `listaccounts`, `listsinceblock`, `gettransaction`. See the
|
||||
RPC documentation for those methods for more information.
|
||||
|
||||
Compared to using `getrawtransaction`, this mechanism does not require
|
||||
`-txindex`, scales better, integrates better with the wallet, and is compatible
|
||||
with future block chain pruning functionality. It does mean that all relevant
|
||||
addresses need to added to the wallet before the payment, though.
|
||||
|
||||
Consensus library
|
||||
-----------------
|
||||
|
||||
Starting from 0.10.0, the Bitcoin Core distribution includes a consensus library.
|
||||
|
||||
The purpose of this library is to make the verification functionality that is
|
||||
critical to Bitcoin's consensus available to other applications, e.g. to language
|
||||
bindings such as [python-bitcoinlib](https://pypi.python.org/pypi/python-bitcoinlib) or
|
||||
alternative node implementations.
|
||||
|
||||
This library is called `libbitcoinconsensus.so` (or, `.dll` for Windows).
|
||||
Its interface is defined in the C header [bitcoinconsensus.h](https://github.com/bitcoin/bitcoin/blob/0.10/src/script/bitcoinconsensus.h).
|
||||
|
||||
In its initial version the API includes two functions:
|
||||
|
||||
- `bitcoinconsensus_verify_script` verifies a script. It returns whether the indicated input of the provided serialized transaction
|
||||
correctly spends the passed scriptPubKey under additional constraints indicated by flags
|
||||
- `bitcoinconsensus_version` returns the API version, currently at an experimental `0`
|
||||
|
||||
The functionality is planned to be extended to e.g. UTXO management in upcoming releases, but the interface
|
||||
for existing methods should remain stable.
|
||||
|
||||
Standard script rules relaxed for P2SH addresses
|
||||
------------------------------------------------
|
||||
|
||||
The IsStandard() rules have been almost completely removed for P2SH
|
||||
redemption scripts, allowing applications to make use of any valid
|
||||
script type, such as "n-of-m OR y", hash-locked oracle addresses, etc.
|
||||
While the Bitcoin protocol has always supported these types of script,
|
||||
actually using them on mainnet has been previously inconvenient as
|
||||
standard Bitcoin Core nodes wouldn't relay them to miners, nor would
|
||||
most miners include them in blocks they mined.
|
||||
|
||||
bitcoin-tx
|
||||
----------
|
||||
|
||||
It has been observed that many of the RPC functions offered by bitcoind are
|
||||
"pure functions", and operate independently of the bitcoind wallet. This
|
||||
included many of the RPC "raw transaction" API functions, such as
|
||||
createrawtransaction.
|
||||
|
||||
bitcoin-tx is a newly introduced command line utility designed to enable easy
|
||||
manipulation of bitcoin transactions. A summary of its operation may be
|
||||
obtained via "bitcoin-tx --help" Transactions may be created or signed in a
|
||||
manner similar to the RPC raw tx API. Transactions may be updated, deleting
|
||||
inputs or outputs, or appending new inputs and outputs. Custom scripts may be
|
||||
easily composed using a simple text notation, borrowed from the bitcoin test
|
||||
suite.
|
||||
|
||||
This tool may be used for experimenting with new transaction types, signing
|
||||
multi-party transactions, and many other uses. Long term, the goal is to
|
||||
deprecate and remove "pure function" RPC API calls, as those do not require a
|
||||
server round-trip to execute.
|
||||
|
||||
Other utilities "bitcoin-key" and "bitcoin-script" have been proposed, making
|
||||
key and script operations easily accessible via command line.
|
||||
|
||||
Mining and relay policy enhancements
|
||||
------------------------------------
|
||||
|
||||
Bitcoin Core's block templates are now for version 3 blocks only, and any mining
|
||||
software relying on its `getblocktemplate` must be updated in parallel to use
|
||||
libblkmaker either version 0.4.2 or any version from 0.5.1 onward.
|
||||
If you are solo mining, this will affect you the moment you upgrade Bitcoin
|
||||
Core, which must be done prior to BIP66 achieving its 951/1001 status.
|
||||
If you are mining with the stratum mining protocol: this does not affect you.
|
||||
If you are mining with the getblocktemplate protocol to a pool: this will affect
|
||||
you at the pool operator's discretion, which must be no later than BIP66
|
||||
achieving its 951/1001 status.
|
||||
|
||||
The `prioritisetransaction` RPC method has been added to enable miners to
|
||||
manipulate the priority of transactions on an individual basis.
|
||||
|
||||
Bitcoin Core now supports BIP 22 long polling, so mining software can be
|
||||
notified immediately of new templates rather than having to poll periodically.
|
||||
|
||||
Support for BIP 23 block proposals is now available in Bitcoin Core's
|
||||
`getblocktemplate` method. This enables miners to check the basic validity of
|
||||
their next block before expending work on it, reducing risks of accidental
|
||||
hardforks or mining invalid blocks.
|
||||
|
||||
Two new options to control mining policy:
|
||||
- `-datacarrier=0/1` : Relay and mine "data carrier" (OP_RETURN) transactions
|
||||
if this is 1.
|
||||
- `-datacarriersize=n` : Maximum size, in bytes, we consider acceptable for
|
||||
"data carrier" outputs.
|
||||
|
||||
The relay policy has changed to more properly implement the desired behavior of not
|
||||
relaying free (or very low fee) transactions unless they have a priority above the
|
||||
AllowFreeThreshold(), in which case they are relayed subject to the rate limiter.
|
||||
|
||||
BIP 66: strict DER encoding for signatures
|
||||
------------------------------------------
|
||||
|
||||
Bitcoin Core 0.10 implements BIP 66, which introduces block version 3, and a new
|
||||
consensus rule, which prohibits non-DER signatures. Such transactions have been
|
||||
non-standard since Bitcoin v0.8.0 (released in February 2013), but were
|
||||
technically still permitted inside blocks.
|
||||
|
||||
This change breaks the dependency on OpenSSL's signature parsing, and is
|
||||
required if implementations would want to remove all of OpenSSL from the
|
||||
consensus code.
|
||||
|
||||
The same miner-voting mechanism as in BIP 34 is used: when 751 out of a
|
||||
sequence of 1001 blocks have version number 3 or higher, the new consensus
|
||||
rule becomes active for those blocks. When 951 out of a sequence of 1001
|
||||
blocks have version number 3 or higher, it becomes mandatory for all blocks.
|
||||
|
||||
Backward compatibility with current mining software is NOT provided, thus miners
|
||||
should read the first paragraph of "Mining and relay policy enhancements" above.
|
||||
|
||||
0.10.0 Change log
|
||||
=================
|
||||
|
||||
Detailed release notes follow. This overview includes changes that affect external
|
||||
behavior, not code moves, refactors or string updates.
|
||||
|
||||
RPC:
|
||||
- `f923c07` Support IPv6 lookup in bitcoin-cli even when IPv6 only bound on localhost
|
||||
- `b641c9c` Fix addnode "onetry": Connect with OpenNetworkConnection
|
||||
- `171ca77` estimatefee / estimatepriority RPC methods
|
||||
- `b750cf1` Remove cli functionality from bitcoind
|
||||
- `f6984e8` Add "chain" to getmininginfo, improve help in getblockchaininfo
|
||||
- `99ddc6c` Add nLocalServices info to RPC getinfo
|
||||
- `cf0c47b` Remove getwork() RPC call
|
||||
- `2a72d45` prioritisetransaction <txid> <priority delta> <priority tx fee>
|
||||
- `e44fea5` Add an option `-datacarrier` to allow users to disable relaying/mining data carrier transactions
|
||||
- `2ec5a3d` Prevent easy RPC memory exhaustion attack
|
||||
- `d4640d7` Added argument to getbalance to include watchonly addresses and fixed errors in balance calculation
|
||||
- `83f3543` Added argument to listaccounts to include watchonly addresses
|
||||
- `952877e` Showing 'involvesWatchonly' property for transactions returned by 'listtransactions' and 'listsinceblock'. It is only appended when the transaction involves a watchonly address
|
||||
- `d7d5d23` Added argument to listtransactions and listsinceblock to include watchonly addresses
|
||||
- `f87ba3d` added includeWatchonly argument to 'gettransaction' because it affects balance calculation
|
||||
- `0fa2f88` added includedWatchonly argument to listreceivedbyaddress/...account
|
||||
- `6c37f7f` `getrawchangeaddress`: fail when keypool exhausted and wallet locked
|
||||
- `ff6a7af` getblocktemplate: longpolling support
|
||||
- `c4a321f` Add peerid to getpeerinfo to allow correlation with the logs
|
||||
- `1b4568c` Add vout to ListTransactions output
|
||||
- `b33bd7a` Implement "getchaintips" RPC command to monitor blockchain forks
|
||||
- `733177e` Remove size limit in RPC client, keep it in server
|
||||
- `6b5b7cb` Categorize rpc help overview
|
||||
- `6f2c26a` Closely track mempool byte total. Add "getmempoolinfo" RPC
|
||||
- `aa82795` Add detailed network info to getnetworkinfo RPC
|
||||
- `01094bd` Don't reveal whether password is <20 or >20 characters in RPC
|
||||
- `57153d4` rpc: Compute number of confirmations of a block from block height
|
||||
- `ff36cbe` getnetworkinfo: export local node's client sub-version string
|
||||
- `d14d7de` SanitizeString: allow '(' and ')'
|
||||
- `31d6390` Fixed setaccount accepting foreign address
|
||||
- `b5ec5fe` update getnetworkinfo help with subversion
|
||||
- `ad6e601` RPC additions after headers-first
|
||||
- `33dfbf5` rpc: Fix leveldb iterator leak, and flush before `gettxoutsetinfo`
|
||||
- `2aa6329` Enable customising node policy for datacarrier data size with a -datacarriersize option
|
||||
- `f877aaa` submitblock: Use a temporary CValidationState to determine accurately the outcome of ProcessBlock
|
||||
- `e69a587` submitblock: Support for returning specific rejection reasons
|
||||
- `af82884` Add "warmup mode" for RPC server
|
||||
- `e2655e0` Add unauthenticated HTTP REST interface to public blockchain data
|
||||
- `683dc40` Disable SSLv3 (in favor of TLS) for the RPC client and server
|
||||
- `44b4c0d` signrawtransaction: validate private key
|
||||
- `9765a50` Implement BIP 23 Block Proposal
|
||||
- `f9de17e` Add warning comment to getinfo
|
||||
|
||||
Command-line options:
|
||||
- `ee21912` Use netmasks instead of wildcards for IP address matching
|
||||
- `deb3572` Add `-rpcbind` option to allow binding RPC port on a specific interface
|
||||
- `96b733e` Add `-version` option to get just the version
|
||||
- `1569353` Add `-stopafterblockimport` option
|
||||
- `77cbd46` Let -zapwallettxes recover transaction meta data
|
||||
- `1c750db` remove -tor compatibility code (only allow -onion)
|
||||
- `4aaa017` rework help messages for fee-related options
|
||||
- `4278b1d` Clarify error message when invalid -rpcallowip
|
||||
- `6b407e4` -datadir is now allowed in config files
|
||||
- `bdd5b58` Add option `-sysperms` to disable 077 umask (create new files with system default umask)
|
||||
- `cbe39a3` Add "bitcoin-tx" command line utility and supporting modules
|
||||
- `dbca89b` Trigger -alertnotify if network is upgrading without you
|
||||
- `ad96e7c` Make -reindex cope with out-of-order blocks
|
||||
- `16d5194` Skip reindexed blocks individually
|
||||
- `ec01243` --tracerpc option for regression tests
|
||||
- `f654f00` Change -genproclimit default to 1
|
||||
- `3c77714` Make -proxy set all network types, avoiding a connect leak
|
||||
- `57be955` Remove -printblock, -printblocktree, and -printblockindex
|
||||
- `ad3d208` remove -maxorphanblocks config parameter since it is no longer functional
|
||||
|
||||
Block and transaction handling:
|
||||
- `7a0e84d` ProcessGetData(): abort if a block file is missing from disk
|
||||
- `8c93bf4` LoadBlockIndexDB(): Require block db reindex if any `blk*.dat` files are missing
|
||||
- `77339e5` Get rid of the static chainMostWork (optimization)
|
||||
- `4e0eed8` Allow ActivateBestChain to release its lock on cs_main
|
||||
- `18e7216` Push cs_mains down in ProcessBlock
|
||||
- `fa126ef` Avoid undefined behavior using CFlatData in CScript serialization
|
||||
- `7f3b4e9` Relax IsStandard rules for pay-to-script-hash transactions
|
||||
- `c9a0918` Add a skiplist to the CBlockIndex structure
|
||||
- `bc42503` Use unordered_map for CCoinsViewCache with salted hash (optimization)
|
||||
- `d4d3fbd` Do not flush the cache after every block outside of IBD (optimization)
|
||||
- `ad08d0b` Bugfix: make CCoinsViewMemPool support pruned entries in underlying cache
|
||||
- `5734d4d` Only remove actualy failed blocks from setBlockIndexValid
|
||||
- `d70bc52` Rework block processing benchmark code
|
||||
- `714a3e6` Only keep setBlockIndexValid entries that are possible improvements
|
||||
- `ea100c7` Reduce maximum coinscache size during verification (reduce memory usage)
|
||||
- `4fad8e6` Reject transactions with excessive numbers of sigops
|
||||
- `b0875eb` Allow BatchWrite to destroy its input, reducing copying (optimization)
|
||||
- `92bb6f2` Bypass reloading blocks from disk (optimization)
|
||||
- `2e28031` Perform CVerifyDB on pcoinsdbview instead of pcoinsTip (reduce memory usage)
|
||||
- `ab15b2e` Avoid copying undo data (optimization)
|
||||
- `341735e` Headers-first synchronization
|
||||
- `afc32c5` Fix rebuild-chainstate feature and improve its performance
|
||||
- `e11b2ce` Fix large reorgs
|
||||
- `ed6d1a2` Keep information about all block files in memory
|
||||
- `a48f2d6` Abstract context-dependent block checking from acceptance
|
||||
- `7e615f5` Fixed mempool sync after sending a transaction
|
||||
- `51ce901` Improve chainstate/blockindex disk writing policy
|
||||
- `a206950` Introduce separate flushing modes
|
||||
- `9ec75c5` Add a locking mechanism to IsInitialBlockDownload to ensure it never goes from false to true
|
||||
- `868d041` Remove coinbase-dependant transactions during reorg
|
||||
- `723d12c` Remove txn which are invalidated by coinbase maturity during reorg
|
||||
- `0cb8763` Check against MANDATORY flags prior to accepting to mempool
|
||||
- `8446262` Reject headers that build on an invalid parent
|
||||
- `008138c` Bugfix: only track UTXO modification after lookup
|
||||
|
||||
P2P protocol and network code:
|
||||
- `f80cffa` Do not trigger a DoS ban if SCRIPT_VERIFY_NULLDUMMY fails
|
||||
- `c30329a` Add testnet DNS seed of Alex Kotenko
|
||||
- `45a4baf` Add testnet DNS seed of Andreas Schildbach
|
||||
- `f1920e8` Ping automatically every 2 minutes (unconditionally)
|
||||
- `806fd19` Allocate receive buffers in on the fly
|
||||
- `6ecf3ed` Display unknown commands received
|
||||
- `aa81564` Track peers' available blocks
|
||||
- `caf6150` Use async name resolving to improve net thread responsiveness
|
||||
- `9f4da19` Use pong receive time rather than processing time
|
||||
- `0127a9b` remove SOCKS4 support from core and GUI, use SOCKS5
|
||||
- `40f5cb8` Send rejects and apply DoS scoring for errors in direct block validation
|
||||
- `dc942e6` Introduce whitelisted peers
|
||||
- `c994d2e` prevent SOCKET leak in BindListenPort()
|
||||
- `a60120e` Add built-in seeds for .onion
|
||||
- `60dc8e4` Allow -onlynet=onion to be used
|
||||
- `3a56de7` addrman: Do not propagate obviously poor addresses onto the network
|
||||
- `6050ab6` netbase: Make SOCKS5 negotiation interruptible
|
||||
- `604ee2a` Remove tx from AlreadyAskedFor list once we receive it, not when we process it
|
||||
- `efad808` Avoid reject message feedback loops
|
||||
- `71697f9` Separate protocol versioning from clientversion
|
||||
- `20a5f61` Don't relay alerts to peers before version negotiation
|
||||
- `b4ee0bd` Introduce preferred download peers
|
||||
- `845c86d` Do not use third party services for IP detection
|
||||
- `12a49ca` Limit the number of new addressses to accumulate
|
||||
- `35e408f` Regard connection failures as attempt for addrman
|
||||
- `a3a7317` Introduce 10 minute block download timeout
|
||||
- `3022e7d` Require sufficent priority for relay of free transactions
|
||||
- `58fda4d` Update seed IPs, based on bitcoin.sipa.be crawler data
|
||||
- `18021d0` Remove bitnodes.io from dnsseeds.
|
||||
|
||||
Validation:
|
||||
- `6fd7ef2` Also switch the (unused) verification code to low-s instead of even-s
|
||||
- `584a358` Do merkle root and txid duplicates check simultaneously
|
||||
- `217a5c9` When transaction outputs exceed inputs, show the offending amounts so as to aid debugging
|
||||
- `f74fc9b` Print input index when signature validation fails, to aid debugging
|
||||
- `6fd59ee` script.h: set_vch() should shift a >32 bit value
|
||||
- `d752ba8` Add SCRIPT_VERIFY_SIGPUSHONLY (BIP62 rule 2) (test only)
|
||||
- `698c6ab` Add SCRIPT_VERIFY_MINIMALDATA (BIP62 rules 3 and 4) (test only)
|
||||
- `ab9edbd` script: create sane error return codes for script validation and remove logging
|
||||
- `219a147` script: check ScriptError values in script tests
|
||||
- `0391423` Discourage NOPs reserved for soft-fork upgrades
|
||||
- `98b135f` Make STRICTENC invalid pubkeys fail the script rather than the opcode
|
||||
- `307f7d4` Report script evaluation failures in log and reject messages
|
||||
- `ace39db` consensus: guard against openssl's new strict DER checks
|
||||
- `12b7c44` Improve robustness of DER recoding code
|
||||
- `76ce5c8` fail immediately on an empty signature
|
||||
|
||||
Build system:
|
||||
- `f25e3ad` Fix build in OS X 10.9
|
||||
- `65e8ba4` build: Switch to non-recursive make
|
||||
- `460b32d` build: fix broken boost chrono check on some platforms
|
||||
- `9ce0774` build: Fix windows configure when using --with-qt-libdir
|
||||
- `ea96475` build: Add mention of --disable-wallet to bdb48 error messages
|
||||
- `1dec09b` depends: add shared dependency builder
|
||||
- `c101c76` build: Add --with-utils (bitcoin-cli and bitcoin-tx, default=yes). Help string consistency tweaks. Target sanity check fix
|
||||
- `e432a5f` build: add option for reducing exports (v2)
|
||||
- `6134b43` Fixing condition 'sabotaging' MSVC build
|
||||
- `af0bd5e` osx: fix signing to make Gatekeeper happy (again)
|
||||
- `a7d1f03` build: fix dynamic boost check when --with-boost= is used
|
||||
- `d5fd094` build: fix qt test build when libprotobuf is in a non-standard path
|
||||
- `2cf5f16` Add libbitcoinconsensus library
|
||||
- `914868a` build: add a deterministic dmg signer
|
||||
- `2d375fe` depends: bump openssl to 1.0.1k
|
||||
- `b7a4ecc` Build: Only check for boost when building code that requires it
|
||||
|
||||
Wallet:
|
||||
- `b33d1f5` Use fee/priority estimates in wallet CreateTransaction
|
||||
- `4b7b1bb` Sanity checks for estimates
|
||||
- `c898846` Add support for watch-only addresses
|
||||
- `d5087d1` Use script matching rather than destination matching for watch-only
|
||||
- `d88af56` Fee fixes
|
||||
- `a35b55b` Dont run full check every time we decrypt wallet
|
||||
- `3a7c348` Fix make_change to not create half-satoshis
|
||||
- `f606bb9` fix a possible memory leak in CWalletDB::Recover
|
||||
- `870da77` fix possible memory leaks in CWallet::EncryptWallet
|
||||
- `ccca27a` Watch-only fixes
|
||||
- `9b1627d` [Wallet] Reduce minTxFee for transaction creation to 1000 satoshis
|
||||
- `a53fd41` Deterministic signing
|
||||
- `15ad0b5` Apply AreSane() checks to the fees from the network
|
||||
- `11855c1` Enforce minRelayTxFee on wallet created tx and add a maxtxfee option
|
||||
|
||||
GUI:
|
||||
- `c21c74b` osx: Fix missing dock menu with qt5
|
||||
- `b90711c` Fix Transaction details shows wrong To:
|
||||
- `516053c` Make links in 'About Bitcoin Core' clickable
|
||||
- `bdc83e8` Ensure payment request network matches client network
|
||||
- `65f78a1` Add GUI view of peer information
|
||||
- `06a91d9` VerifyDB progress reporting
|
||||
- `fe6bff2` Add BerkeleyDB version info to RPCConsole
|
||||
- `b917555` PeerTableModel: Fix potential deadlock. #4296
|
||||
- `dff0e3b` Improve rpc console history behavior
|
||||
- `95a9383` Remove CENT-fee-rule from coin control completely
|
||||
- `56b07d2` Allow setting listen via GUI
|
||||
- `d95ba75` Log messages with type>QtDebugMsg as non-debug
|
||||
- `8969828` New status bar Unit Display Control and related changes
|
||||
- `674c070` seed OpenSSL PNRG with Windows event data
|
||||
- `509f926` Payment request parsing on startup now only changes network if a valid network name is specified
|
||||
- `acd432b` Prevent balloon-spam after rescan
|
||||
- `7007402` Implement SI-style (thin space) thoudands separator
|
||||
- `91cce17` Use fixed-point arithmetic in amount spinbox
|
||||
- `bdba2dd` Remove an obscure option no-one cares about
|
||||
- `bd0aa10` Replace the temporary file hack currently used to change Bitcoin-Qt's dock icon (OS X) with a buffer-based solution
|
||||
- `94e1b9e` Re-work overviewpage UI
|
||||
- `8bfdc9a` Better looking trayicon
|
||||
- `b197bf3` disable tray interactions when client model set to 0
|
||||
- `1c5f0af` Add column Watch-only to transactions list
|
||||
- `21f139b` Fix tablet crash. closes #4854
|
||||
- `e84843c` Broken addresses on command line no longer trigger testnet
|
||||
- `a49f11d` Change splash screen to normal window
|
||||
- `1f9be98` Disable App Nap on OSX 10.9+
|
||||
- `27c3e91` Add proxy to options overridden if necessary
|
||||
- `4bd1185` Allow "emergency" shutdown during startup
|
||||
- `d52f072` Don't show wallet options in the preferences menu when running with -disablewallet
|
||||
- `6093aa1` Qt: QProgressBar CPU-Issue workaround
|
||||
- `0ed9675` [Wallet] Add global boolean whether to send free transactions (default=true)
|
||||
- `ed3e5e4` [Wallet] Add global boolean whether to pay at least the custom fee (default=true)
|
||||
- `e7876b2` [Wallet] Prevent user from paying a non-sense fee
|
||||
- `c1c9d5b` Add Smartfee to GUI
|
||||
- `e0a25c5` Make askpassphrase dialog behave more sanely
|
||||
- `94b362d` On close of splashscreen interrupt verifyDB
|
||||
- `b790d13` English translation update
|
||||
- `8543b0d` Correct tooltip on address book page
|
||||
|
||||
Tests:
|
||||
- `b41e594` Fix script test handling of empty scripts
|
||||
- `d3a33fc` Test CHECKMULTISIG with m == 0 and n == 0
|
||||
- `29c1749` Let tx (in)valid tests use any SCRIPT_VERIFY flag
|
||||
- `6380180` Add rejection of non-null CHECKMULTISIG dummy values
|
||||
- `21bf3d2` Add tests for BoostAsioToCNetAddr
|
||||
- `b5ad5e7` Add Python test for -rpcbind and -rpcallowip
|
||||
- `9ec0306` Add CODESEPARATOR/FindAndDelete() tests
|
||||
- `75ebced` Added many rpc wallet tests
|
||||
- `0193fb8` Allow multiple regression tests to run at once
|
||||
- `92a6220` Hook up sanity checks
|
||||
- `3820e01` Extend and move all crypto tests to crypto_tests.cpp
|
||||
- `3f9a019` added list/get received by address/ account tests
|
||||
- `a90689f` Remove timing-based signature cache unit test
|
||||
- `236982c` Add skiplist unit tests
|
||||
- `f4b00be` Add CChain::GetLocator() unit test
|
||||
- `b45a6e8` Add test for getblocktemplate longpolling
|
||||
- `cdf305e` Set -discover=0 in regtest framework
|
||||
- `ed02282` additional test for OP_SIZE in script_valid.json
|
||||
- `0072d98` script tests: BOOLAND, BOOLOR decode to integer
|
||||
- `833ff16` script tests: values that overflow to 0 are true
|
||||
- `4cac5db` script tests: value with trailing 0x00 is true
|
||||
- `89101c6` script test: test case for 5-byte bools
|
||||
- `d2d9dc0` script tests: add tests for CHECKMULTISIG limits
|
||||
- `d789386` Add "it works" test for bitcoin-tx
|
||||
- `df4d61e` Add bitcoin-tx tests
|
||||
- `aa41ac2` Test IsPushOnly() with invalid push
|
||||
- `6022b5d` Make `script_{valid,invalid}.json` validation flags configurable
|
||||
- `8138cbe` Add automatic script test generation, and actual checksig tests
|
||||
- `ed27e53` Add coins_tests with a large randomized CCoinViewCache test
|
||||
- `9df9cf5` Make SCRIPT_VERIFY_STRICTENC compatible with BIP62
|
||||
- `dcb9846` Extend getchaintips RPC test
|
||||
- `554147a` Ensure MINIMALDATA invalid tests can only fail one way
|
||||
- `dfeec18` Test every numeric-accepting opcode for correct handling of the numeric minimal encoding rule
|
||||
- `2b62e17` Clearly separate PUSHDATA and numeric argument MINIMALDATA tests
|
||||
- `16d78bd` Add valid invert of invalid every numeric opcode tests
|
||||
- `f635269` tests: enable alertnotify test for Windows
|
||||
- `7a41614` tests: allow rpc-tests to get filenames for bitcoind and bitcoin-cli from the environment
|
||||
- `5122ea7` tests: fix forknotify.py on windows
|
||||
- `fa7f8cd` tests: remove old pull-tester scripts
|
||||
- `7667850` tests: replace the old (unused since Travis) tests with new rpc test scripts
|
||||
- `f4e0aef` Do signature-s negation inside the tests
|
||||
- `1837987` Optimize -regtest setgenerate block generation
|
||||
- `2db4c8a` Fix node ranges in the test framework
|
||||
- `a8b2ce5` regression test only setmocktime RPC call
|
||||
- `daf03e7` RPC tests: create initial chain with specific timestamps
|
||||
- `8656dbb` Port/fix txnmall.sh regression test
|
||||
- `ca81587` Test the exact order of CHECKMULTISIG sig/pubkey evaluation
|
||||
- `7357893` Prioritize and display -testsafemode status in UI
|
||||
- `f321d6b` Add key generation/verification to ECC sanity check
|
||||
- `132ea9b` miner_tests: Disable checkpoints so they don't fail the subsidy-change test
|
||||
- `bc6cb41` QA RPC tests: Add tests block block proposals
|
||||
- `f67a9ce` Use deterministically generated script tests
|
||||
- `11d7a7d` [RPC] add rpc-test for http keep-alive (persistent connections)
|
||||
- `34318d7` RPC-test based on invalidateblock for mempool coinbase spends
|
||||
- `76ec867` Use actually valid transactions for script tests
|
||||
- `c8589bf` Add actual signature tests
|
||||
- `e2677d7` Fix smartfees test for change to relay policy
|
||||
- `263b65e` tests: run sanity checks in tests too
|
||||
|
||||
Miscellaneous:
|
||||
- `122549f` Fix incorrect checkpoint data for testnet3
|
||||
- `5bd02cf` Log used config file to debug.log on startup
|
||||
- `68ba85f` Updated Debian example bitcoin.conf with config from wiki + removed some cruft and updated comments
|
||||
- `e5ee8f0` Remove -beta suffix
|
||||
- `38405ac` Add comment regarding experimental-use service bits
|
||||
- `be873f6` Issue warning if collecting RandSeed data failed
|
||||
- `8ae973c` Allocate more space if necessary in RandSeedAddPerfMon
|
||||
- `675bcd5` Correct comment for 15-of-15 p2sh script size
|
||||
- `fda3fed` libsecp256k1 integration
|
||||
- `2e36866` Show nodeid instead of addresses in log (for anonymity) unless otherwise requested
|
||||
- `cd01a5e` Enable paranoid corruption checks in LevelDB >= 1.16
|
||||
- `9365937` Add comment about never updating nTimeOffset past 199 samples
|
||||
- `403c1bf` contrib: remove getwork-based pyminer (as getwork API call has been removed)
|
||||
- `0c3e101` contrib: Added systemd .service file in order to help distributions integrate bitcoind
|
||||
- `0a0878d` doc: Add new DNSseed policy
|
||||
- `2887bff` Update coding style and add .clang-format
|
||||
- `5cbda4f` Changed LevelDB cursors to use scoped pointers to ensure destruction when going out of scope
|
||||
- `b4a72a7` contrib/linearize: split output files based on new-timestamp-year or max-file-size
|
||||
- `e982b57` Use explicit fflush() instead of setvbuf()
|
||||
- `234bfbf` contrib: Add init scripts and docs for Upstart and OpenRC
|
||||
- `01c2807` Add warning about the merkle-tree algorithm duplicate txid flaw
|
||||
- `d6712db` Also create pid file in non-daemon mode
|
||||
- `772ab0e` contrib: use batched JSON-RPC in linarize-hashes (optimization)
|
||||
- `7ab4358` Update bash-completion for v0.10
|
||||
- `6e6a36c` contrib: show pull # in prompt for github-merge script
|
||||
- `5b9f842` Upgrade leveldb to 1.18, make chainstate databases compatible between ARM and x86 (issue #2293)
|
||||
- `4e7c219` Catch UTXO set read errors and shutdown
|
||||
- `867c600` Catch LevelDB errors during flush
|
||||
- `06ca065` Fix CScriptID(const CScript& in) in empty script case
|
||||
|
||||
Credits
|
||||
=======
|
||||
|
||||
Thanks to everyone who contributed to this release:
|
||||
|
||||
- 21E14
|
||||
- Adam Weiss
|
||||
- Aitor Pazos
|
||||
- Alexander Jeng
|
||||
- Alex Morcos
|
||||
- Alon Muroch
|
||||
- Andreas Schildbach
|
||||
- Andrew Poelstra
|
||||
- Andy Alness
|
||||
- Ashley Holman
|
||||
- Benedict Chan
|
||||
- Ben Holden-Crowther
|
||||
- Bryan Bishop
|
||||
- BtcDrak
|
||||
- Christian von Roques
|
||||
- Clinton Christian
|
||||
- Cory Fields
|
||||
- Cozz Lovan
|
||||
- daniel
|
||||
- Daniel Kraft
|
||||
- David Hill
|
||||
- Derek701
|
||||
- dexX7
|
||||
- dllud
|
||||
- Dominyk Tiller
|
||||
- Doug
|
||||
- elichai
|
||||
- elkingtowa
|
||||
- ENikS
|
||||
- Eric Shaw
|
||||
- Federico Bond
|
||||
- Francis GASCHET
|
||||
- Gavin Andresen
|
||||
- Giuseppe Mazzotta
|
||||
- Glenn Willen
|
||||
- Gregory Maxwell
|
||||
- gubatron
|
||||
- HarryWu
|
||||
- himynameismartin
|
||||
- Huang Le
|
||||
- Ian Carroll
|
||||
- imharrywu
|
||||
- Jameson Lopp
|
||||
- Janusz Lenar
|
||||
- JaSK
|
||||
- Jeff Garzik
|
||||
- JL2035
|
||||
- Johnathan Corgan
|
||||
- Jonas Schnelli
|
||||
- jtimon
|
||||
- Julian Haight
|
||||
- Kamil Domanski
|
||||
- kazcw
|
||||
- kevin
|
||||
- kiwigb
|
||||
- Kosta Zertsekel
|
||||
- LongShao007
|
||||
- Luke Dashjr
|
||||
- Mark Friedenbach
|
||||
- Mathy Vanvoorden
|
||||
- Matt Corallo
|
||||
- Matthew Bogosian
|
||||
- Micha
|
||||
- Michael Ford
|
||||
- Mike Hearn
|
||||
- mrbandrews
|
||||
- mruddy
|
||||
- ntrgn
|
||||
- Otto Allmendinger
|
||||
- paveljanik
|
||||
- Pavel Vasin
|
||||
- Peter Todd
|
||||
- phantomcircuit
|
||||
- Philip Kaufmann
|
||||
- Pieter Wuille
|
||||
- pryds
|
||||
- randy-waterhouse
|
||||
- R E Broadley
|
||||
- Rose Toomey
|
||||
- Ross Nicoll
|
||||
- Roy Badami
|
||||
- Ruben Dario Ponticelli
|
||||
- Rune K. Svendsen
|
||||
- Ryan X. Charles
|
||||
- Saivann
|
||||
- sandakersmann
|
||||
- SergioDemianLerner
|
||||
- shshshsh
|
||||
- sinetek
|
||||
- Stuart Cardall
|
||||
- Suhas Daftuar
|
||||
- Tawanda Kembo
|
||||
- Teran McKinney
|
||||
- tm314159
|
||||
- Tom Harding
|
||||
- Trevin Hofmann
|
||||
- Whit J
|
||||
- Wladimir J. van der Laan
|
||||
- Yoichi Hirai
|
||||
- Zak Wilcox
|
||||
|
||||
As well as everyone that helped translating on [Transifex](https://www.transifex.com/projects/p/bitcoin/).
|
||||
|
||||
95
doc/release-notes/release-notes-0.9.4.md
Normal file
95
doc/release-notes/release-notes-0.9.4.md
Normal file
@@ -0,0 +1,95 @@
|
||||
Bitcoin Core version 0.9.4 is now available from:
|
||||
|
||||
https://bitcoin.org/bin/0.9.4/
|
||||
|
||||
This is a new minor version release, bringing only bug fixes and updated
|
||||
translations. Upgrading to this release is recommended.
|
||||
|
||||
Please report bugs using the issue tracker at github:
|
||||
|
||||
https://github.com/bitcoin/bitcoin/issues
|
||||
|
||||
How to Upgrade
|
||||
===============
|
||||
|
||||
If you are running an older version, shut it down. Wait until it has completely
|
||||
shut down (which might take a few minutes for older versions), then run the
|
||||
installer (on Windows) or just copy over /Applications/Bitcoin-Qt (on Mac) or
|
||||
bitcoind/bitcoin-qt (on Linux).
|
||||
|
||||
OpenSSL Warning
|
||||
================
|
||||
|
||||
OpenSSL 1.0.0p / 1.0.1k was recently released and is being pushed out by
|
||||
various operating system maintainers. Review by Gregory Maxwell determined that
|
||||
this update is incompatible with the Bitcoin system and could lead to consensus
|
||||
forks.
|
||||
|
||||
Bitcoin Core released binaries from https://bitcoin.org are unaffected,
|
||||
as are any built with the gitian deterministic build system.
|
||||
|
||||
However, if you are running either
|
||||
|
||||
- The Ubuntu PPA from https://launchpad.net/~bitcoin/+archive/ubuntu/bitcoin
|
||||
- A third-party or self-compiled Bitcoin Core
|
||||
|
||||
upgrade to Bitcoin Core 0.9.4, which includes a workaround, **before** updating
|
||||
OpenSSL.
|
||||
|
||||
The incompatibility is due to the OpenSSL update changing the
|
||||
behavior of ECDSA validation to reject any signature which is
|
||||
not encoded in a very rigid manner. This was a result of
|
||||
OpenSSL's change for CVE-2014-8275 "Certificate fingerprints
|
||||
can be modified".
|
||||
|
||||
We are specifically aware of potential hard-forks due to signature
|
||||
encoding handling and had been hoping to close them via BIP62 in 0.10.
|
||||
BIP62's purpose is to improve transaction malleability handling and
|
||||
as a side effect rigidly defines the encoding for signatures, but the
|
||||
overall scope of BIP62 has made it take longer than we'd like to
|
||||
deploy.
|
||||
|
||||
0.9.4 changelog
|
||||
================
|
||||
|
||||
Validation:
|
||||
- `b8e81b7` consensus: guard against openssl's new strict DER checks
|
||||
- `60c51f1` fail immediately on an empty signature
|
||||
- `037bfef` Improve robustness of DER recoding code
|
||||
|
||||
Command-line options:
|
||||
- `cd5164a` Make -proxy set all network types, avoiding a connect leak.
|
||||
|
||||
P2P:
|
||||
- `bb424e4` Limit the number of new addressses to accumulate
|
||||
|
||||
RPC:
|
||||
- `0a94661` Disable SSLv3 (in favor of TLS) for the RPC client and server.
|
||||
|
||||
Build system:
|
||||
- `f047dfa` gitian: openssl-1.0.1i.tar.gz -> openssl-1.0.1k.tar.gz
|
||||
- `5b9f78d` build: Fix OSX build when using Homebrew and qt5
|
||||
- `ffab1dd` Keep symlinks when copying into .app bundle
|
||||
- `613247f` osx: fix signing to make Gatekeeper happy (again)
|
||||
|
||||
Miscellaneous:
|
||||
- `25b49b5` Refactor -alertnotify code
|
||||
- `2743529` doc: Add instructions for consistent Mac OS X build names
|
||||
|
||||
Credits
|
||||
--------
|
||||
|
||||
Thanks to who contributed to this release, at least:
|
||||
|
||||
- Cory Fields
|
||||
- Gavin Andresen
|
||||
- Gregory Maxwell
|
||||
- Jeff Garzik
|
||||
- Luke Dashjr
|
||||
- Matt Corallo
|
||||
- Pieter Wuille
|
||||
- Saivann
|
||||
- Sergio Demian Lerner
|
||||
- Wladimir J. van der Laan
|
||||
|
||||
As well as everyone that helped translating on [Transifex](https://www.transifex.com/projects/p/bitcoin/).
|
||||
@@ -40,7 +40,7 @@ Release Process
|
||||
|
||||
###fetch and build inputs: (first time, or when dependency versions change)
|
||||
|
||||
mkdir -p inputs; cd inputs/
|
||||
mkdir -p inputs
|
||||
|
||||
Register and download the Apple SDK: (see OSX Readme for details)
|
||||
|
||||
@@ -50,7 +50,15 @@ Release Process
|
||||
|
||||
tar -C /Volumes/Xcode/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/ -czf MacOSX10.7.sdk.tar.gz MacOSX10.7.sdk
|
||||
|
||||
Build Bitcoin Core for Linux, Windows, and OS X:
|
||||
###Optional: Seed the Gitian sources cache
|
||||
|
||||
By default, gitian will fetch source files as needed. For offline builds, they can be fetched ahead of time:
|
||||
|
||||
make -C ../bitcoin/depends download SOURCES_PATH=`pwd`/cache/common
|
||||
|
||||
Only missing files will be fetched, so this is safe to re-run for each build.
|
||||
|
||||
###Build Bitcoin Core for Linux, Windows, and OS X:
|
||||
|
||||
./bin/gbuild --commit bitcoin=v${VERSION} ../bitcoin/contrib/gitian-descriptors/gitian-linux.yml
|
||||
./bin/gsign --signer $SIGNER --release ${VERSION}-linux --destination ../gitian.sigs/ ../bitcoin/contrib/gitian-descriptors/gitian-linux.yml
|
||||
@@ -60,10 +68,9 @@ Release Process
|
||||
mv build/out/bitcoin-*.zip build/out/bitcoin-*.exe ../
|
||||
./bin/gbuild --commit bitcoin=v${VERSION} ../bitcoin/contrib/gitian-descriptors/gitian-osx.yml
|
||||
./bin/gsign --signer $SIGNER --release ${VERSION}-osx-unsigned --destination ../gitian.sigs/ ../bitcoin/contrib/gitian-descriptors/gitian-osx.yml
|
||||
mv build/out/bitcoin-*-unsigned.tar.gz inputs
|
||||
mv build/out/bitcoin-*-unsigned.tar.gz inputs/bitcoin-osx-unsigned.tar.gz
|
||||
mv build/out/bitcoin-*.tar.gz build/out/bitcoin-*.dmg ../
|
||||
popd
|
||||
bitcoin-0.9.99-osx-unsigned.tar.gz
|
||||
Build output expected:
|
||||
|
||||
1. source tarball (bitcoin-${VERSION}.tar.gz)
|
||||
@@ -84,17 +91,18 @@ Commit your signature to gitian.sigs:
|
||||
git push # Assuming you can push to the gitian.sigs tree
|
||||
popd
|
||||
|
||||
Wait for OSX detached signature:
|
||||
Wait for OSX detached signature:
|
||||
Once the OSX build has 3 matching signatures, Gavin will sign it with the apple App-Store key.
|
||||
He will then upload a detached signature to be combined with the unsigned app to create a signed binary.
|
||||
|
||||
Create the signed OSX binary:
|
||||
Create the signed OSX binary:
|
||||
|
||||
pushd ./gitian-builder
|
||||
# Fetch the signature as instructed by Gavin
|
||||
cp signature.tar.gz inputs/
|
||||
./bin/gbuild -i ../bitcoin/contrib/gitian-descriptors/gitian-osx-signer.yml
|
||||
./bin/gsign --signer $SIGNER --release ${VERSION}-osx-signed --destination ../gitian.sigs/ ../bitcoin/contrib/gitian-descriptors/gitian-osx-signer.yml
|
||||
mv build/out/bitcoin-${VERSION}-osx.dmg ../
|
||||
mv build/out/bitcoin-osx-signed.dmg ../bitcoin-${VERSION}-osx.dmg
|
||||
popd
|
||||
|
||||
Commit your signature for the signed OSX binary:
|
||||
@@ -124,15 +132,22 @@ rm SHA256SUMS
|
||||
(the digest algorithm is forced to sha256 to avoid confusion of the `Hash:` header that GPG adds with the SHA256 used for the files)
|
||||
|
||||
- Upload zips and installers, as well as `SHA256SUMS.asc` from last step, to the bitcoin.org server
|
||||
into `/var/www/bin/bitcoin-core-${VERSION}`
|
||||
|
||||
- Update bitcoin.org version
|
||||
|
||||
- Make a pull request to add a file named `YYYY-MM-DD-vX.Y.Z.md` with the release notes
|
||||
to https://github.com/bitcoin/bitcoin.org/tree/master/_releases
|
||||
([Example for 0.9.2.1](https://raw.githubusercontent.com/bitcoin/bitcoin.org/master/_releases/2014-06-19-v0.9.2.1.md)).
|
||||
- First, check to see if the Bitcoin.org maintainers have prepared a
|
||||
release: https://github.com/bitcoin/bitcoin.org/labels/Releases
|
||||
|
||||
- After the pull request is merged, the website will automatically show the newest version, as well
|
||||
as update the OS download links. Ping Saivann in case anything goes wrong
|
||||
- If they have, it will have previously failed their Travis CI
|
||||
checks because the final release files weren't uploaded.
|
||||
Trigger a Travis CI rebuild---if it passes, merge.
|
||||
|
||||
- If they have not prepared a release, follow the Bitcoin.org release
|
||||
instructions: https://github.com/bitcoin/bitcoin.org#release-notes
|
||||
|
||||
- After the pull request is merged, the website will automatically show the newest version within 15 minutes, as well
|
||||
as update the OS download links. Ping @saivann/@harding (saivann/harding on Freenode) in case anything goes wrong
|
||||
|
||||
- Announce the release:
|
||||
|
||||
|
||||
@@ -8,11 +8,6 @@ CURDIR=$(cd $(dirname "$0"); pwd)
|
||||
export BITCOINCLI=${BUILDDIR}/qa/pull-tester/run-bitcoin-cli
|
||||
export BITCOIND=${REAL_BITCOIND}
|
||||
|
||||
if [ "x${EXEEXT}" = "x.exe" ]; then
|
||||
echo "Win tests currently disabled"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
#Run the tests
|
||||
|
||||
if [ "x${ENABLE_BITCOIND}${ENABLE_UTILS}${ENABLE_WALLET}" = "x111" ]; then
|
||||
|
||||
@@ -10,7 +10,7 @@ touch "$DATADIR/regtest/debug.log"
|
||||
tail -q -n 1 -F "$DATADIR/regtest/debug.log" | grep -m 1 -q "Done loading" &
|
||||
WAITER=$!
|
||||
PORT=`expr 10000 + $$ % 55536`
|
||||
"@abs_top_builddir@/src/bitcoind@EXEEXT@" -connect=0.0.0.0 -datadir="$DATADIR" -rpcuser=user -rpcpassword=pass -listen -keypool=3 -debug -debug=net -logtimestamps -checkmempool=0 -port=$PORT -whitelist=127.0.0.1 -regtest -rpcport=`expr $PORT + 1` &
|
||||
"@abs_top_builddir@/src/bitcoind@EXEEXT@" -connect=0.0.0.0 -datadir="$DATADIR" -rpcuser=user -rpcpassword=pass -listen -keypool=3 -debug -debug=net -logtimestamps -checkmempool=0 -relaypriority=0 -port=$PORT -whitelist=127.0.0.1 -regtest -rpcport=`expr $PORT + 1` &
|
||||
BITCOIND=$!
|
||||
|
||||
#Install a watchdog.
|
||||
|
||||
90
qa/rpc-tests/bipdersig.py
Executable file
90
qa/rpc-tests/bipdersig.py
Executable file
@@ -0,0 +1,90 @@
|
||||
#!/usr/bin/env python2
|
||||
# Copyright (c) 2014 The Bitcoin Core developers
|
||||
# Distributed under the MIT software license, see the accompanying
|
||||
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
#
|
||||
# Test the BIP66 changeover logic
|
||||
#
|
||||
|
||||
from test_framework import BitcoinTestFramework
|
||||
from bitcoinrpc.authproxy import AuthServiceProxy, JSONRPCException
|
||||
from util import *
|
||||
import os
|
||||
import shutil
|
||||
|
||||
class BIP66Test(BitcoinTestFramework):
|
||||
|
||||
def setup_network(self):
|
||||
self.nodes = []
|
||||
self.nodes.append(start_node(0, self.options.tmpdir, []))
|
||||
self.nodes.append(start_node(1, self.options.tmpdir, ["-blockversion=2"]))
|
||||
self.nodes.append(start_node(2, self.options.tmpdir, ["-blockversion=3"]))
|
||||
connect_nodes(self.nodes[1], 0)
|
||||
connect_nodes(self.nodes[2], 0)
|
||||
self.is_network_split = False
|
||||
self.sync_all()
|
||||
|
||||
def run_test(self):
|
||||
cnt = self.nodes[0].getblockcount()
|
||||
|
||||
# Mine some old-version blocks
|
||||
self.nodes[1].setgenerate(True, 100)
|
||||
self.sync_all()
|
||||
if (self.nodes[0].getblockcount() != cnt + 100):
|
||||
raise AssertionError("Failed to mine 100 version=2 blocks")
|
||||
|
||||
# Mine 750 new-version blocks
|
||||
for i in xrange(15):
|
||||
self.nodes[2].setgenerate(True, 50)
|
||||
self.sync_all()
|
||||
if (self.nodes[0].getblockcount() != cnt + 850):
|
||||
raise AssertionError("Failed to mine 750 version=3 blocks")
|
||||
|
||||
# TODO: check that new DERSIG rules are not enforced
|
||||
|
||||
# Mine 1 new-version block
|
||||
self.nodes[2].setgenerate(True, 1)
|
||||
self.sync_all()
|
||||
if (self.nodes[0].getblockcount() != cnt + 851):
|
||||
raise AssertionFailure("Failed to mine a version=3 blocks")
|
||||
|
||||
# TODO: check that new DERSIG rules are enforced
|
||||
|
||||
# Mine 198 new-version blocks
|
||||
for i in xrange(2):
|
||||
self.nodes[2].setgenerate(True, 99)
|
||||
self.sync_all()
|
||||
if (self.nodes[0].getblockcount() != cnt + 1049):
|
||||
raise AssertionError("Failed to mine 198 version=3 blocks")
|
||||
|
||||
# Mine 1 old-version block
|
||||
self.nodes[1].setgenerate(True, 1)
|
||||
self.sync_all()
|
||||
if (self.nodes[0].getblockcount() != cnt + 1050):
|
||||
raise AssertionError("Failed to mine a version=2 block after 949 version=3 blocks")
|
||||
|
||||
# Mine 1 new-version blocks
|
||||
self.nodes[2].setgenerate(True, 1)
|
||||
self.sync_all()
|
||||
if (self.nodes[0].getblockcount() != cnt + 1051):
|
||||
raise AssertionError("Failed to mine a version=3 block")
|
||||
|
||||
# Mine 1 old-version blocks
|
||||
try:
|
||||
self.nodes[1].setgenerate(True, 1)
|
||||
raise AssertionError("Succeeded to mine a version=2 block after 950 version=3 blocks")
|
||||
except JSONRPCException:
|
||||
pass
|
||||
self.sync_all()
|
||||
if (self.nodes[0].getblockcount() != cnt + 1051):
|
||||
raise AssertionError("Accepted a version=2 block after 950 version=3 blocks")
|
||||
|
||||
# Mine 1 new-version blocks
|
||||
self.nodes[2].setgenerate(True, 1)
|
||||
self.sync_all()
|
||||
if (self.nodes[0].getblockcount() != cnt + 1052):
|
||||
raise AssertionError("Failed to mine a version=3 block")
|
||||
|
||||
if __name__ == '__main__':
|
||||
BIP66Test().main()
|
||||
@@ -20,7 +20,10 @@ try:
|
||||
except ImportError:
|
||||
import urlparse
|
||||
|
||||
class RESTTest (BitcoinTestFramework):
|
||||
class HTTPBasicsTest (BitcoinTestFramework):
|
||||
def setup_nodes(self):
|
||||
return start_nodes(4, self.options.tmpdir, extra_args=[['-rpckeepalive=1'], ['-rpckeepalive=0'], [], []])
|
||||
|
||||
def run_test(self):
|
||||
|
||||
#################################################
|
||||
@@ -32,13 +35,13 @@ class RESTTest (BitcoinTestFramework):
|
||||
|
||||
conn = httplib.HTTPConnection(url.hostname, url.port)
|
||||
conn.connect()
|
||||
conn.request('GET', '/', '{"method": "getbestblockhash"}', headers)
|
||||
conn.request('POST', '/', '{"method": "getbestblockhash"}', headers)
|
||||
out1 = conn.getresponse().read();
|
||||
assert_equal('"error":null' in out1, True)
|
||||
assert_equal(conn.sock!=None, True) #according to http/1.1 connection must still be open!
|
||||
|
||||
#send 2nd request without closing connection
|
||||
conn.request('GET', '/', '{"method": "getchaintips"}', headers)
|
||||
conn.request('POST', '/', '{"method": "getchaintips"}', headers)
|
||||
out2 = conn.getresponse().read();
|
||||
assert_equal('"error":null' in out1, True) #must also response with a correct json-rpc message
|
||||
assert_equal(conn.sock!=None, True) #according to http/1.1 connection must still be open!
|
||||
@@ -49,13 +52,13 @@ class RESTTest (BitcoinTestFramework):
|
||||
|
||||
conn = httplib.HTTPConnection(url.hostname, url.port)
|
||||
conn.connect()
|
||||
conn.request('GET', '/', '{"method": "getbestblockhash"}', headers)
|
||||
conn.request('POST', '/', '{"method": "getbestblockhash"}', headers)
|
||||
out1 = conn.getresponse().read();
|
||||
assert_equal('"error":null' in out1, True)
|
||||
assert_equal(conn.sock!=None, True) #according to http/1.1 connection must still be open!
|
||||
|
||||
#send 2nd request without closing connection
|
||||
conn.request('GET', '/', '{"method": "getchaintips"}', headers)
|
||||
conn.request('POST', '/', '{"method": "getchaintips"}', headers)
|
||||
out2 = conn.getresponse().read();
|
||||
assert_equal('"error":null' in out1, True) #must also response with a correct json-rpc message
|
||||
assert_equal(conn.sock!=None, True) #according to http/1.1 connection must still be open!
|
||||
@@ -66,11 +69,34 @@ class RESTTest (BitcoinTestFramework):
|
||||
|
||||
conn = httplib.HTTPConnection(url.hostname, url.port)
|
||||
conn.connect()
|
||||
conn.request('GET', '/', '{"method": "getbestblockhash"}', headers)
|
||||
conn.request('POST', '/', '{"method": "getbestblockhash"}', headers)
|
||||
out1 = conn.getresponse().read();
|
||||
assert_equal('"error":null' in out1, True)
|
||||
assert_equal(conn.sock!=None, False) #now the connection must be closed after the response
|
||||
|
||||
#node1 (2nd node) is running with disabled keep-alive option
|
||||
urlNode1 = urlparse.urlparse(self.nodes[1].url)
|
||||
authpair = urlNode1.username + ':' + urlNode1.password
|
||||
headers = {"Authorization": "Basic " + base64.b64encode(authpair)}
|
||||
|
||||
conn = httplib.HTTPConnection(urlNode1.hostname, urlNode1.port)
|
||||
conn.connect()
|
||||
conn.request('POST', '/', '{"method": "getbestblockhash"}', headers)
|
||||
out1 = conn.getresponse().read();
|
||||
assert_equal('"error":null' in out1, True)
|
||||
assert_equal(conn.sock!=None, False) #connection must be closed because keep-alive was set to false
|
||||
|
||||
#node2 (third node) is running with standard keep-alive parameters which means keep-alive is off
|
||||
urlNode2 = urlparse.urlparse(self.nodes[2].url)
|
||||
authpair = urlNode2.username + ':' + urlNode2.password
|
||||
headers = {"Authorization": "Basic " + base64.b64encode(authpair)}
|
||||
|
||||
conn = httplib.HTTPConnection(urlNode2.hostname, urlNode2.port)
|
||||
conn.connect()
|
||||
conn.request('POST', '/', '{"method": "getbestblockhash"}', headers)
|
||||
out1 = conn.getresponse().read();
|
||||
assert_equal('"error":null' in out1, True)
|
||||
assert_equal(conn.sock!=None, True) #connection must be closed because bitcoind should use keep-alive by default
|
||||
|
||||
if __name__ == '__main__':
|
||||
RESTTest ().main ()
|
||||
HTTPBasicsTest ().main ()
|
||||
|
||||
76
qa/rpc-tests/invalidateblock.py
Executable file
76
qa/rpc-tests/invalidateblock.py
Executable file
@@ -0,0 +1,76 @@
|
||||
#!/usr/bin/env python2
|
||||
# Copyright (c) 2014 The Bitcoin Core developers
|
||||
# Distributed under the MIT software license, see the accompanying
|
||||
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
#
|
||||
# Test InvalidateBlock code
|
||||
#
|
||||
|
||||
from test_framework import BitcoinTestFramework
|
||||
from bitcoinrpc.authproxy import AuthServiceProxy, JSONRPCException
|
||||
from util import *
|
||||
|
||||
class InvalidateTest(BitcoinTestFramework):
|
||||
|
||||
|
||||
def setup_chain(self):
|
||||
print("Initializing test directory "+self.options.tmpdir)
|
||||
initialize_chain_clean(self.options.tmpdir, 3)
|
||||
|
||||
def setup_network(self):
|
||||
self.nodes = []
|
||||
self.is_network_split = False
|
||||
self.nodes.append(start_node(0, self.options.tmpdir, ["-debug"]))
|
||||
self.nodes.append(start_node(1, self.options.tmpdir, ["-debug"]))
|
||||
self.nodes.append(start_node(2, self.options.tmpdir, ["-debug"]))
|
||||
|
||||
def run_test(self):
|
||||
print "Make sure we repopulate setBlockIndexCandidates after InvalidateBlock:"
|
||||
print "Mine 4 blocks on Node 0"
|
||||
self.nodes[0].setgenerate(True, 4)
|
||||
assert(self.nodes[0].getblockcount() == 4)
|
||||
besthash = self.nodes[0].getbestblockhash()
|
||||
|
||||
print "Mine competing 6 blocks on Node 1"
|
||||
self.nodes[1].setgenerate(True, 6)
|
||||
assert(self.nodes[1].getblockcount() == 6)
|
||||
|
||||
print "Connect nodes to force a reorg"
|
||||
connect_nodes_bi(self.nodes,0,1)
|
||||
sync_blocks(self.nodes[0:2])
|
||||
assert(self.nodes[0].getblockcount() == 6)
|
||||
badhash = self.nodes[1].getblockhash(2)
|
||||
|
||||
print "Invalidate block 2 on node 0 and verify we reorg to node 0's original chain"
|
||||
self.nodes[0].invalidateblock(badhash)
|
||||
newheight = self.nodes[0].getblockcount()
|
||||
newhash = self.nodes[0].getbestblockhash()
|
||||
if (newheight != 4 or newhash != besthash):
|
||||
raise AssertionError("Wrong tip for node0, hash %s, height %d"%(newhash,newheight))
|
||||
|
||||
print "\nMake sure we won't reorg to a lower work chain:"
|
||||
connect_nodes_bi(self.nodes,1,2)
|
||||
print "Sync node 2 to node 1 so both have 6 blocks"
|
||||
sync_blocks(self.nodes[1:3])
|
||||
assert(self.nodes[2].getblockcount() == 6)
|
||||
print "Invalidate block 5 on node 1 so its tip is now at 4"
|
||||
self.nodes[1].invalidateblock(self.nodes[1].getblockhash(5))
|
||||
assert(self.nodes[1].getblockcount() == 4)
|
||||
print "Invalidate block 3 on node 2, so its tip is now 2"
|
||||
self.nodes[2].invalidateblock(self.nodes[2].getblockhash(3))
|
||||
assert(self.nodes[2].getblockcount() == 2)
|
||||
print "..and then mine a block"
|
||||
self.nodes[2].setgenerate(True, 1)
|
||||
print "Verify all nodes are at the right height"
|
||||
time.sleep(5)
|
||||
for i in xrange(3):
|
||||
print i,self.nodes[i].getblockcount()
|
||||
assert(self.nodes[2].getblockcount() == 3)
|
||||
assert(self.nodes[0].getblockcount() == 4)
|
||||
node1height = self.nodes[1].getblockcount()
|
||||
if node1height < 4:
|
||||
raise AssertionError("Node 1 reorged to a lower height: %d"%node1height)
|
||||
|
||||
if __name__ == '__main__':
|
||||
InvalidateTest().main()
|
||||
34
qa/rpc-tests/reindex.py
Executable file
34
qa/rpc-tests/reindex.py
Executable file
@@ -0,0 +1,34 @@
|
||||
#!/usr/bin/env python2
|
||||
# Copyright (c) 2014 The Bitcoin Core developers
|
||||
# Distributed under the MIT software license, see the accompanying
|
||||
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
#
|
||||
# Test -reindex with CheckBlockIndex
|
||||
#
|
||||
from test_framework import BitcoinTestFramework
|
||||
from bitcoinrpc.authproxy import AuthServiceProxy, JSONRPCException
|
||||
from util import *
|
||||
import os.path
|
||||
|
||||
class ReindexTest(BitcoinTestFramework):
|
||||
|
||||
def setup_chain(self):
|
||||
print("Initializing test directory "+self.options.tmpdir)
|
||||
initialize_chain_clean(self.options.tmpdir, 1)
|
||||
|
||||
def setup_network(self):
|
||||
self.nodes = []
|
||||
self.is_network_split = False
|
||||
self.nodes.append(start_node(0, self.options.tmpdir))
|
||||
|
||||
def run_test(self):
|
||||
self.nodes[0].generate(3)
|
||||
stop_node(self.nodes[0], 0)
|
||||
wait_bitcoinds()
|
||||
self.nodes[0]=start_node(0, self.options.tmpdir, ["-debug", "-reindex", "-checkblockindex=1"])
|
||||
assert_equal(self.nodes[0].getblockcount(), 3)
|
||||
print "Success"
|
||||
|
||||
if __name__ == '__main__':
|
||||
ReindexTest().main()
|
||||
@@ -16,20 +16,20 @@ class EstimateFeeTest(BitcoinTestFramework):
|
||||
def setup_network(self):
|
||||
self.nodes = []
|
||||
self.nodes.append(start_node(0, self.options.tmpdir,
|
||||
["-debug=mempool", "-debug=estimatefee"]))
|
||||
["-debug=mempool", "-debug=estimatefee", "-relaypriority=0"]))
|
||||
# Node1 mines small-but-not-tiny blocks, and allows free transactions.
|
||||
# NOTE: the CreateNewBlock code starts counting block size at 1,000 bytes,
|
||||
# so blockmaxsize of 2,000 is really just 1,000 bytes (room enough for
|
||||
# 6 or 7 transactions)
|
||||
self.nodes.append(start_node(1, self.options.tmpdir,
|
||||
["-blockprioritysize=1500", "-blockmaxsize=2000",
|
||||
"-debug=mempool", "-debug=estimatefee"]))
|
||||
"-debug=mempool", "-debug=estimatefee", "-relaypriority=0"]))
|
||||
connect_nodes(self.nodes[1], 0)
|
||||
|
||||
# Node2 is a stingy miner, that
|
||||
# produces very small blocks (room for only 3 or so transactions)
|
||||
node2args = [ "-blockprioritysize=0", "-blockmaxsize=1500",
|
||||
"-debug=mempool", "-debug=estimatefee"]
|
||||
"-debug=mempool", "-debug=estimatefee", "-relaypriority=0"]
|
||||
self.nodes.append(start_node(2, self.options.tmpdir, node2args))
|
||||
connect_nodes(self.nodes[2], 0)
|
||||
|
||||
|
||||
@@ -33,8 +33,11 @@ class BitcoinTestFramework(object):
|
||||
print("Initializing test directory "+self.options.tmpdir)
|
||||
initialize_chain(self.options.tmpdir)
|
||||
|
||||
def setup_nodes(self):
|
||||
return start_nodes(4, self.options.tmpdir)
|
||||
|
||||
def setup_network(self, split = False):
|
||||
self.nodes = start_nodes(4, self.options.tmpdir)
|
||||
self.nodes = self.setup_nodes()
|
||||
|
||||
# Connect the nodes as a "chain". This allows us
|
||||
# to split the network between nodes 1 and 2 to get
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -14,7 +14,8 @@ EXTRA_DIST += \
|
||||
test/data/tt-locktime317000-out.hex \
|
||||
test/data/tx394b54bb.hex \
|
||||
test/data/txcreate1.hex \
|
||||
test/data/txcreate2.hex
|
||||
test/data/txcreate2.hex \
|
||||
test/data/txcreatesign.hex
|
||||
|
||||
JSON_TEST_FILES = \
|
||||
test/data/script_valid.json \
|
||||
@@ -50,12 +51,14 @@ BITCOIN_TESTS =\
|
||||
test/hash_tests.cpp \
|
||||
test/key_tests.cpp \
|
||||
test/main_tests.cpp \
|
||||
test/mempool_tests.cpp \
|
||||
test/miner_tests.cpp \
|
||||
test/mruset_tests.cpp \
|
||||
test/multisig_tests.cpp \
|
||||
test/netbase_tests.cpp \
|
||||
test/pmt_tests.cpp \
|
||||
test/rpc_tests.cpp \
|
||||
test/sanity_tests.cpp \
|
||||
test/script_P2SH_tests.cpp \
|
||||
test/script_tests.cpp \
|
||||
test/scriptnum_tests.cpp \
|
||||
|
||||
301
src/addrman.cpp
301
src/addrman.cpp
@@ -10,34 +10,27 @@
|
||||
|
||||
using namespace std;
|
||||
|
||||
int CAddrInfo::GetTriedBucket(const std::vector<unsigned char>& nKey) const
|
||||
int CAddrInfo::GetTriedBucket(const uint256& nKey) const
|
||||
{
|
||||
CDataStream ss1(SER_GETHASH, 0);
|
||||
std::vector<unsigned char> vchKey = GetKey();
|
||||
ss1 << nKey << vchKey;
|
||||
uint64_t hash1 = Hash(ss1.begin(), ss1.end()).GetLow64();
|
||||
|
||||
CDataStream ss2(SER_GETHASH, 0);
|
||||
std::vector<unsigned char> vchGroupKey = GetGroup();
|
||||
ss2 << nKey << vchGroupKey << (hash1 % ADDRMAN_TRIED_BUCKETS_PER_GROUP);
|
||||
uint64_t hash2 = Hash(ss2.begin(), ss2.end()).GetLow64();
|
||||
uint64_t hash1 = (CHashWriter(SER_GETHASH, 0) << nKey << GetKey()).GetHash().GetLow64();
|
||||
uint64_t hash2 = (CHashWriter(SER_GETHASH, 0) << nKey << GetGroup() << (hash1 % ADDRMAN_TRIED_BUCKETS_PER_GROUP)).GetHash().GetLow64();
|
||||
return hash2 % ADDRMAN_TRIED_BUCKET_COUNT;
|
||||
}
|
||||
|
||||
int CAddrInfo::GetNewBucket(const std::vector<unsigned char>& nKey, const CNetAddr& src) const
|
||||
int CAddrInfo::GetNewBucket(const uint256& nKey, const CNetAddr& src) const
|
||||
{
|
||||
CDataStream ss1(SER_GETHASH, 0);
|
||||
std::vector<unsigned char> vchGroupKey = GetGroup();
|
||||
std::vector<unsigned char> vchSourceGroupKey = src.GetGroup();
|
||||
ss1 << nKey << vchGroupKey << vchSourceGroupKey;
|
||||
uint64_t hash1 = Hash(ss1.begin(), ss1.end()).GetLow64();
|
||||
|
||||
CDataStream ss2(SER_GETHASH, 0);
|
||||
ss2 << nKey << vchSourceGroupKey << (hash1 % ADDRMAN_NEW_BUCKETS_PER_SOURCE_GROUP);
|
||||
uint64_t hash2 = Hash(ss2.begin(), ss2.end()).GetLow64();
|
||||
uint64_t hash1 = (CHashWriter(SER_GETHASH, 0) << nKey << GetGroup() << vchSourceGroupKey).GetHash().GetLow64();
|
||||
uint64_t hash2 = (CHashWriter(SER_GETHASH, 0) << nKey << vchSourceGroupKey << (hash1 % ADDRMAN_NEW_BUCKETS_PER_SOURCE_GROUP)).GetHash().GetLow64();
|
||||
return hash2 % ADDRMAN_NEW_BUCKET_COUNT;
|
||||
}
|
||||
|
||||
int CAddrInfo::GetBucketPosition(const uint256 &nKey, bool fNew, int nBucket) const
|
||||
{
|
||||
uint64_t hash1 = (CHashWriter(SER_GETHASH, 0) << nKey << (fNew ? 'N' : 'K') << nBucket << GetKey()).GetHash().GetLow64();
|
||||
return hash1 % ADDRMAN_BUCKET_SIZE;
|
||||
}
|
||||
|
||||
bool CAddrInfo::IsTerrible(int64_t nNow) const
|
||||
{
|
||||
if (nLastTry && nLastTry >= nNow - 60) // never remove things tried in the last minute
|
||||
@@ -70,15 +63,12 @@ double CAddrInfo::GetChance(int64_t nNow) const
|
||||
if (nSinceLastTry < 0)
|
||||
nSinceLastTry = 0;
|
||||
|
||||
fChance *= 600.0 / (600.0 + nSinceLastSeen);
|
||||
|
||||
// deprioritize very recent attempts away
|
||||
if (nSinceLastTry < 60 * 10)
|
||||
fChance *= 0.01;
|
||||
|
||||
// deprioritize 50% after each failed attempt
|
||||
for (int n = 0; n < nAttempts; n++)
|
||||
fChance /= 1.5;
|
||||
// deprioritize 66% after each failed attempt, but at most 1/28th to avoid the search taking forever or overly penalizing outages.
|
||||
fChance *= pow(0.66, min(nAttempts, 8));
|
||||
|
||||
return fChance;
|
||||
}
|
||||
@@ -128,85 +118,44 @@ void CAddrMan::SwapRandom(unsigned int nRndPos1, unsigned int nRndPos2)
|
||||
vRandom[nRndPos2] = nId1;
|
||||
}
|
||||
|
||||
int CAddrMan::SelectTried(int nKBucket)
|
||||
void CAddrMan::Delete(int nId)
|
||||
{
|
||||
std::vector<int>& vTried = vvTried[nKBucket];
|
||||
assert(mapInfo.count(nId) != 0);
|
||||
CAddrInfo& info = mapInfo[nId];
|
||||
assert(!info.fInTried);
|
||||
assert(info.nRefCount == 0);
|
||||
|
||||
// randomly shuffle the first few elements (using the entire list)
|
||||
// find the least recently tried among them
|
||||
int64_t nOldest = -1;
|
||||
int nOldestPos = -1;
|
||||
for (unsigned int i = 0; i < ADDRMAN_TRIED_ENTRIES_INSPECT_ON_EVICT && i < vTried.size(); i++) {
|
||||
int nPos = GetRandInt(vTried.size() - i) + i;
|
||||
int nTemp = vTried[nPos];
|
||||
vTried[nPos] = vTried[i];
|
||||
vTried[i] = nTemp;
|
||||
assert(nOldest == -1 || mapInfo.count(nTemp) == 1);
|
||||
if (nOldest == -1 || mapInfo[nTemp].nLastSuccess < mapInfo[nOldest].nLastSuccess) {
|
||||
nOldest = nTemp;
|
||||
nOldestPos = nPos;
|
||||
}
|
||||
}
|
||||
|
||||
return nOldestPos;
|
||||
SwapRandom(info.nRandomPos, vRandom.size() - 1);
|
||||
vRandom.pop_back();
|
||||
mapAddr.erase(info);
|
||||
mapInfo.erase(nId);
|
||||
nNew--;
|
||||
}
|
||||
|
||||
int CAddrMan::ShrinkNew(int nUBucket)
|
||||
void CAddrMan::ClearNew(int nUBucket, int nUBucketPos)
|
||||
{
|
||||
assert(nUBucket >= 0 && (unsigned int)nUBucket < vvNew.size());
|
||||
std::set<int>& vNew = vvNew[nUBucket];
|
||||
|
||||
// first look for deletable items
|
||||
for (std::set<int>::iterator it = vNew.begin(); it != vNew.end(); it++) {
|
||||
assert(mapInfo.count(*it));
|
||||
CAddrInfo& info = mapInfo[*it];
|
||||
if (info.IsTerrible()) {
|
||||
if (--info.nRefCount == 0) {
|
||||
SwapRandom(info.nRandomPos, vRandom.size() - 1);
|
||||
vRandom.pop_back();
|
||||
mapAddr.erase(info);
|
||||
mapInfo.erase(*it);
|
||||
nNew--;
|
||||
}
|
||||
vNew.erase(it);
|
||||
return 0;
|
||||
// if there is an entry in the specified bucket, delete it.
|
||||
if (vvNew[nUBucket][nUBucketPos] != -1) {
|
||||
int nIdDelete = vvNew[nUBucket][nUBucketPos];
|
||||
CAddrInfo& infoDelete = mapInfo[nIdDelete];
|
||||
assert(infoDelete.nRefCount > 0);
|
||||
infoDelete.nRefCount--;
|
||||
vvNew[nUBucket][nUBucketPos] = -1;
|
||||
if (infoDelete.nRefCount == 0) {
|
||||
Delete(nIdDelete);
|
||||
}
|
||||
}
|
||||
|
||||
// otherwise, select four randomly, and pick the oldest of those to replace
|
||||
int n[4] = {GetRandInt(vNew.size()), GetRandInt(vNew.size()), GetRandInt(vNew.size()), GetRandInt(vNew.size())};
|
||||
int nI = 0;
|
||||
int nOldest = -1;
|
||||
for (std::set<int>::iterator it = vNew.begin(); it != vNew.end(); it++) {
|
||||
if (nI == n[0] || nI == n[1] || nI == n[2] || nI == n[3]) {
|
||||
assert(nOldest == -1 || mapInfo.count(*it) == 1);
|
||||
if (nOldest == -1 || mapInfo[*it].nTime < mapInfo[nOldest].nTime)
|
||||
nOldest = *it;
|
||||
}
|
||||
nI++;
|
||||
}
|
||||
assert(mapInfo.count(nOldest) == 1);
|
||||
CAddrInfo& info = mapInfo[nOldest];
|
||||
if (--info.nRefCount == 0) {
|
||||
SwapRandom(info.nRandomPos, vRandom.size() - 1);
|
||||
vRandom.pop_back();
|
||||
mapAddr.erase(info);
|
||||
mapInfo.erase(nOldest);
|
||||
nNew--;
|
||||
}
|
||||
vNew.erase(nOldest);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
void CAddrMan::MakeTried(CAddrInfo& info, int nId, int nOrigin)
|
||||
void CAddrMan::MakeTried(CAddrInfo& info, int nId)
|
||||
{
|
||||
assert(vvNew[nOrigin].count(nId) == 1);
|
||||
|
||||
// remove the entry from all new buckets
|
||||
for (std::vector<std::set<int> >::iterator it = vvNew.begin(); it != vvNew.end(); it++) {
|
||||
if ((*it).erase(nId))
|
||||
for (int bucket = 0; bucket < ADDRMAN_NEW_BUCKET_COUNT; bucket++) {
|
||||
int pos = info.GetBucketPosition(nKey, true, bucket);
|
||||
if (vvNew[bucket][pos] == nId) {
|
||||
vvNew[bucket][pos] = -1;
|
||||
info.nRefCount--;
|
||||
}
|
||||
}
|
||||
nNew--;
|
||||
|
||||
@@ -214,44 +163,36 @@ void CAddrMan::MakeTried(CAddrInfo& info, int nId, int nOrigin)
|
||||
|
||||
// which tried bucket to move the entry to
|
||||
int nKBucket = info.GetTriedBucket(nKey);
|
||||
std::vector<int>& vTried = vvTried[nKBucket];
|
||||
int nKBucketPos = info.GetBucketPosition(nKey, false, nKBucket);
|
||||
|
||||
// first check whether there is place to just add it
|
||||
if (vTried.size() < ADDRMAN_TRIED_BUCKET_SIZE) {
|
||||
vTried.push_back(nId);
|
||||
nTried++;
|
||||
info.fInTried = true;
|
||||
return;
|
||||
// first make space to add it (the existing tried entry there is moved to new, deleting whatever is there).
|
||||
if (vvTried[nKBucket][nKBucketPos] != -1) {
|
||||
// find an item to evict
|
||||
int nIdEvict = vvTried[nKBucket][nKBucketPos];
|
||||
assert(mapInfo.count(nIdEvict) == 1);
|
||||
CAddrInfo& infoOld = mapInfo[nIdEvict];
|
||||
|
||||
// Remove the to-be-evicted item from the tried set.
|
||||
infoOld.fInTried = false;
|
||||
vvTried[nKBucket][nKBucketPos] = -1;
|
||||
nTried--;
|
||||
|
||||
// find which new bucket it belongs to
|
||||
int nUBucket = infoOld.GetNewBucket(nKey);
|
||||
int nUBucketPos = infoOld.GetBucketPosition(nKey, true, nUBucket);
|
||||
ClearNew(nUBucket, nUBucketPos);
|
||||
assert(vvNew[nUBucket][nUBucketPos] == -1);
|
||||
|
||||
// Enter it into the new set again.
|
||||
infoOld.nRefCount = 1;
|
||||
vvNew[nUBucket][nUBucketPos] = nIdEvict;
|
||||
nNew++;
|
||||
}
|
||||
assert(vvTried[nKBucket][nKBucketPos] == -1);
|
||||
|
||||
// otherwise, find an item to evict
|
||||
int nPos = SelectTried(nKBucket);
|
||||
|
||||
// find which new bucket it belongs to
|
||||
assert(mapInfo.count(vTried[nPos]) == 1);
|
||||
int nUBucket = mapInfo[vTried[nPos]].GetNewBucket(nKey);
|
||||
std::set<int>& vNew = vvNew[nUBucket];
|
||||
|
||||
// remove the to-be-replaced tried entry from the tried set
|
||||
CAddrInfo& infoOld = mapInfo[vTried[nPos]];
|
||||
infoOld.fInTried = false;
|
||||
infoOld.nRefCount = 1;
|
||||
// do not update nTried, as we are going to move something else there immediately
|
||||
|
||||
// check whether there is place in that one,
|
||||
if (vNew.size() < ADDRMAN_NEW_BUCKET_SIZE) {
|
||||
// if so, move it back there
|
||||
vNew.insert(vTried[nPos]);
|
||||
} else {
|
||||
// otherwise, move it to the new bucket nId came from (there is certainly place there)
|
||||
vvNew[nOrigin].insert(vTried[nPos]);
|
||||
}
|
||||
nNew++;
|
||||
|
||||
vTried[nPos] = nId;
|
||||
// we just overwrote an entry in vTried; no need to update nTried
|
||||
vvTried[nKBucket][nKBucketPos] = nId;
|
||||
nTried++;
|
||||
info.fInTried = true;
|
||||
return;
|
||||
}
|
||||
|
||||
void CAddrMan::Good_(const CService& addr, int64_t nTime)
|
||||
@@ -272,20 +213,21 @@ void CAddrMan::Good_(const CService& addr, int64_t nTime)
|
||||
// update info
|
||||
info.nLastSuccess = nTime;
|
||||
info.nLastTry = nTime;
|
||||
info.nTime = nTime;
|
||||
info.nAttempts = 0;
|
||||
// nTime is not updated here, to avoid leaking information about
|
||||
// currently-connected peers.
|
||||
|
||||
// if it is already in the tried set, don't do anything else
|
||||
if (info.fInTried)
|
||||
return;
|
||||
|
||||
// find a bucket it is in now
|
||||
int nRnd = GetRandInt(vvNew.size());
|
||||
int nRnd = GetRandInt(ADDRMAN_NEW_BUCKET_COUNT);
|
||||
int nUBucket = -1;
|
||||
for (unsigned int n = 0; n < vvNew.size(); n++) {
|
||||
int nB = (n + nRnd) % vvNew.size();
|
||||
std::set<int>& vNew = vvNew[nB];
|
||||
if (vNew.count(nId)) {
|
||||
for (unsigned int n = 0; n < ADDRMAN_NEW_BUCKET_COUNT; n++) {
|
||||
int nB = (n + nRnd) % ADDRMAN_NEW_BUCKET_COUNT;
|
||||
int nBpos = info.GetBucketPosition(nKey, true, nB);
|
||||
if (vvNew[nB][nBpos] == nId) {
|
||||
nUBucket = nB;
|
||||
break;
|
||||
}
|
||||
@@ -299,7 +241,7 @@ void CAddrMan::Good_(const CService& addr, int64_t nTime)
|
||||
LogPrint("addrman", "Moving %s to tried\n", addr.ToString());
|
||||
|
||||
// move nId to the tried tables
|
||||
MakeTried(info, nId, nUBucket);
|
||||
MakeTried(info, nId);
|
||||
}
|
||||
|
||||
bool CAddrMan::Add_(const CAddress& addr, const CNetAddr& source, int64_t nTimePenalty)
|
||||
@@ -347,12 +289,25 @@ bool CAddrMan::Add_(const CAddress& addr, const CNetAddr& source, int64_t nTimeP
|
||||
}
|
||||
|
||||
int nUBucket = pinfo->GetNewBucket(nKey, source);
|
||||
std::set<int>& vNew = vvNew[nUBucket];
|
||||
if (!vNew.count(nId)) {
|
||||
pinfo->nRefCount++;
|
||||
if (vNew.size() == ADDRMAN_NEW_BUCKET_SIZE)
|
||||
ShrinkNew(nUBucket);
|
||||
vvNew[nUBucket].insert(nId);
|
||||
int nUBucketPos = pinfo->GetBucketPosition(nKey, true, nUBucket);
|
||||
if (vvNew[nUBucket][nUBucketPos] != nId) {
|
||||
bool fInsert = vvNew[nUBucket][nUBucketPos] == -1;
|
||||
if (!fInsert) {
|
||||
CAddrInfo& infoExisting = mapInfo[vvNew[nUBucket][nUBucketPos]];
|
||||
if (infoExisting.IsTerrible() || (infoExisting.nRefCount > 1 && pinfo->nRefCount == 0)) {
|
||||
// Overwrite the existing new table entry.
|
||||
fInsert = true;
|
||||
}
|
||||
}
|
||||
if (fInsert) {
|
||||
ClearNew(nUBucket, nUBucketPos);
|
||||
pinfo->nRefCount++;
|
||||
vvNew[nUBucket][nUBucketPos] = nId;
|
||||
} else {
|
||||
if (pinfo->nRefCount == 0) {
|
||||
Delete(nId);
|
||||
}
|
||||
}
|
||||
}
|
||||
return fNew;
|
||||
}
|
||||
@@ -376,24 +331,23 @@ void CAddrMan::Attempt_(const CService& addr, int64_t nTime)
|
||||
info.nAttempts++;
|
||||
}
|
||||
|
||||
CAddress CAddrMan::Select_(int nUnkBias)
|
||||
CAddress CAddrMan::Select_()
|
||||
{
|
||||
if (size() == 0)
|
||||
return CAddress();
|
||||
|
||||
double nCorTried = sqrt(nTried) * (100.0 - nUnkBias);
|
||||
double nCorNew = sqrt(nNew) * nUnkBias;
|
||||
if ((nCorTried + nCorNew) * GetRandInt(1 << 30) / (1 << 30) < nCorTried) {
|
||||
// Use a 50% chance for choosing between tried and new table entries.
|
||||
if (nTried > 0 && (nNew == 0 || GetRandInt(2) == 0)) {
|
||||
// use a tried node
|
||||
double fChanceFactor = 1.0;
|
||||
while (1) {
|
||||
int nKBucket = GetRandInt(vvTried.size());
|
||||
std::vector<int>& vTried = vvTried[nKBucket];
|
||||
if (vTried.size() == 0)
|
||||
int nKBucket = GetRandInt(ADDRMAN_TRIED_BUCKET_COUNT);
|
||||
int nKBucketPos = GetRandInt(ADDRMAN_BUCKET_SIZE);
|
||||
if (vvTried[nKBucket][nKBucketPos] == -1)
|
||||
continue;
|
||||
int nPos = GetRandInt(vTried.size());
|
||||
assert(mapInfo.count(vTried[nPos]) == 1);
|
||||
CAddrInfo& info = mapInfo[vTried[nPos]];
|
||||
int nId = vvTried[nKBucket][nKBucketPos];
|
||||
assert(mapInfo.count(nId) == 1);
|
||||
CAddrInfo& info = mapInfo[nId];
|
||||
if (GetRandInt(1 << 30) < fChanceFactor * info.GetChance() * (1 << 30))
|
||||
return info;
|
||||
fChanceFactor *= 1.2;
|
||||
@@ -402,16 +356,13 @@ CAddress CAddrMan::Select_(int nUnkBias)
|
||||
// use a new node
|
||||
double fChanceFactor = 1.0;
|
||||
while (1) {
|
||||
int nUBucket = GetRandInt(vvNew.size());
|
||||
std::set<int>& vNew = vvNew[nUBucket];
|
||||
if (vNew.size() == 0)
|
||||
int nUBucket = GetRandInt(ADDRMAN_NEW_BUCKET_COUNT);
|
||||
int nUBucketPos = GetRandInt(ADDRMAN_BUCKET_SIZE);
|
||||
if (vvNew[nUBucket][nUBucketPos] == -1)
|
||||
continue;
|
||||
int nPos = GetRandInt(vNew.size());
|
||||
std::set<int>::iterator it = vNew.begin();
|
||||
while (nPos--)
|
||||
it++;
|
||||
assert(mapInfo.count(*it) == 1);
|
||||
CAddrInfo& info = mapInfo[*it];
|
||||
int nId = vvNew[nUBucket][nUBucketPos];
|
||||
assert(mapInfo.count(nId) == 1);
|
||||
CAddrInfo& info = mapInfo[nId];
|
||||
if (GetRandInt(1 << 30) < fChanceFactor * info.GetChance() * (1 << 30))
|
||||
return info;
|
||||
fChanceFactor *= 1.2;
|
||||
@@ -459,22 +410,30 @@ int CAddrMan::Check_()
|
||||
if (mapNew.size() != nNew)
|
||||
return -10;
|
||||
|
||||
for (int n = 0; n < vvTried.size(); n++) {
|
||||
std::vector<int>& vTried = vvTried[n];
|
||||
for (std::vector<int>::iterator it = vTried.begin(); it != vTried.end(); it++) {
|
||||
if (!setTried.count(*it))
|
||||
return -11;
|
||||
setTried.erase(*it);
|
||||
for (int n = 0; n < ADDRMAN_TRIED_BUCKET_COUNT; n++) {
|
||||
for (int i = 0; i < ADDRMAN_BUCKET_SIZE; i++) {
|
||||
if (vvTried[n][i] != -1) {
|
||||
if (!setTried.count(vvTried[n][i]))
|
||||
return -11;
|
||||
if (mapInfo[vvTried[n][i]].GetTriedBucket(nKey) != n)
|
||||
return -17;
|
||||
if (mapInfo[vvTried[n][i]].GetBucketPosition(nKey, false, n) != i)
|
||||
return -18;
|
||||
setTried.erase(vvTried[n][i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (int n = 0; n < vvNew.size(); n++) {
|
||||
std::set<int>& vNew = vvNew[n];
|
||||
for (std::set<int>::iterator it = vNew.begin(); it != vNew.end(); it++) {
|
||||
if (!mapNew.count(*it))
|
||||
return -12;
|
||||
if (--mapNew[*it] == 0)
|
||||
mapNew.erase(*it);
|
||||
for (int n = 0; n < ADDRMAN_NEW_BUCKET_COUNT; n++) {
|
||||
for (int i = 0; i < ADDRMAN_BUCKET_SIZE; i++) {
|
||||
if (vvNew[n][i] != -1) {
|
||||
if (!mapNew.count(vvNew[n][i]))
|
||||
return -12;
|
||||
if (mapInfo[vvNew[n][i]].GetBucketPosition(nKey, true, n) != i)
|
||||
return -19;
|
||||
if (--mapNew[vvNew[n][i]] == 0)
|
||||
mapNew.erase(vvNew[n][i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -482,6 +441,8 @@ int CAddrMan::Check_()
|
||||
return -13;
|
||||
if (mapNew.size())
|
||||
return -15;
|
||||
if (nKey.IsNull())
|
||||
return -16;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
210
src/addrman.h
210
src/addrman.h
@@ -79,17 +79,20 @@ public:
|
||||
}
|
||||
|
||||
//! Calculate in which "tried" bucket this entry belongs
|
||||
int GetTriedBucket(const std::vector<unsigned char> &nKey) const;
|
||||
int GetTriedBucket(const uint256 &nKey) const;
|
||||
|
||||
//! Calculate in which "new" bucket this entry belongs, given a certain source
|
||||
int GetNewBucket(const std::vector<unsigned char> &nKey, const CNetAddr& src) const;
|
||||
int GetNewBucket(const uint256 &nKey, const CNetAddr& src) const;
|
||||
|
||||
//! Calculate in which "new" bucket this entry belongs, using its default source
|
||||
int GetNewBucket(const std::vector<unsigned char> &nKey) const
|
||||
int GetNewBucket(const uint256 &nKey) const
|
||||
{
|
||||
return GetNewBucket(nKey, source);
|
||||
}
|
||||
|
||||
//! Calculate in which position of a bucket to store this entry.
|
||||
int GetBucketPosition(const uint256 &nKey, bool fNew, int nBucket) const;
|
||||
|
||||
//! Determine whether the statistics about this entry are bad enough so that it can just be deleted
|
||||
bool IsTerrible(int64_t nNow = GetAdjustedTime()) const;
|
||||
|
||||
@@ -106,15 +109,15 @@ public:
|
||||
*
|
||||
* To that end:
|
||||
* * Addresses are organized into buckets.
|
||||
* * Address that have not yet been tried go into 256 "new" buckets.
|
||||
* * Based on the address range (/16 for IPv4) of source of the information, 32 buckets are selected at random
|
||||
* * Address that have not yet been tried go into 1024 "new" buckets.
|
||||
* * Based on the address range (/16 for IPv4) of source of the information, 64 buckets are selected at random
|
||||
* * The actual bucket is chosen from one of these, based on the range the address itself is located.
|
||||
* * One single address can occur in up to 4 different buckets, to increase selection chances for addresses that
|
||||
* * One single address can occur in up to 8 different buckets, to increase selection chances for addresses that
|
||||
* are seen frequently. The chance for increasing this multiplicity decreases exponentially.
|
||||
* * When adding a new address to a full bucket, a randomly chosen entry (with a bias favoring less recently seen
|
||||
* ones) is removed from it first.
|
||||
* * Addresses of nodes that are known to be accessible go into 64 "tried" buckets.
|
||||
* * Each address range selects at random 4 of these buckets.
|
||||
* * Addresses of nodes that are known to be accessible go into 256 "tried" buckets.
|
||||
* * Each address range selects at random 8 of these buckets.
|
||||
* * The actual bucket is chosen from one of these, based on the full address.
|
||||
* * When adding a new good address to a full bucket, a randomly chosen entry (with a bias favoring less recently
|
||||
* tried ones) is evicted from it, back to the "new" buckets.
|
||||
@@ -125,28 +128,22 @@ public:
|
||||
*/
|
||||
|
||||
//! total number of buckets for tried addresses
|
||||
#define ADDRMAN_TRIED_BUCKET_COUNT 64
|
||||
|
||||
//! maximum allowed number of entries in buckets for tried addresses
|
||||
#define ADDRMAN_TRIED_BUCKET_SIZE 64
|
||||
#define ADDRMAN_TRIED_BUCKET_COUNT 256
|
||||
|
||||
//! total number of buckets for new addresses
|
||||
#define ADDRMAN_NEW_BUCKET_COUNT 256
|
||||
#define ADDRMAN_NEW_BUCKET_COUNT 1024
|
||||
|
||||
//! maximum allowed number of entries in buckets for new addresses
|
||||
#define ADDRMAN_NEW_BUCKET_SIZE 64
|
||||
//! maximum allowed number of entries in buckets for new and tried addresses
|
||||
#define ADDRMAN_BUCKET_SIZE 64
|
||||
|
||||
//! over how many buckets entries with tried addresses from a single group (/16 for IPv4) are spread
|
||||
#define ADDRMAN_TRIED_BUCKETS_PER_GROUP 4
|
||||
#define ADDRMAN_TRIED_BUCKETS_PER_GROUP 8
|
||||
|
||||
//! over how many buckets entries with new addresses originating from a single group are spread
|
||||
#define ADDRMAN_NEW_BUCKETS_PER_SOURCE_GROUP 32
|
||||
#define ADDRMAN_NEW_BUCKETS_PER_SOURCE_GROUP 64
|
||||
|
||||
//! in how many buckets for entries with new addresses a single address may occur
|
||||
#define ADDRMAN_NEW_BUCKETS_PER_ADDRESS 4
|
||||
|
||||
//! how many entries in a bucket with tried addresses are inspected, when selecting one to replace
|
||||
#define ADDRMAN_TRIED_ENTRIES_INSPECT_ON_EVICT 4
|
||||
#define ADDRMAN_NEW_BUCKETS_PER_ADDRESS 8
|
||||
|
||||
//! how old addresses can maximally be
|
||||
#define ADDRMAN_HORIZON_DAYS 30
|
||||
@@ -176,7 +173,7 @@ private:
|
||||
mutable CCriticalSection cs;
|
||||
|
||||
//! secret key to randomize bucket select with
|
||||
std::vector<unsigned char> nKey;
|
||||
uint256 nKey;
|
||||
|
||||
//! last used nId
|
||||
int nIdCount;
|
||||
@@ -194,13 +191,13 @@ private:
|
||||
int nTried;
|
||||
|
||||
//! list of "tried" buckets
|
||||
std::vector<std::vector<int> > vvTried;
|
||||
int vvTried[ADDRMAN_TRIED_BUCKET_COUNT][ADDRMAN_BUCKET_SIZE];
|
||||
|
||||
//! number of (unique) "new" entries
|
||||
int nNew;
|
||||
|
||||
//! list of "new" buckets
|
||||
std::vector<std::set<int> > vvNew;
|
||||
int vvNew[ADDRMAN_NEW_BUCKET_COUNT][ADDRMAN_BUCKET_SIZE];
|
||||
|
||||
protected:
|
||||
|
||||
@@ -214,17 +211,14 @@ protected:
|
||||
//! Swap two elements in vRandom.
|
||||
void SwapRandom(unsigned int nRandomPos1, unsigned int nRandomPos2);
|
||||
|
||||
//! Return position in given bucket to replace.
|
||||
int SelectTried(int nKBucket);
|
||||
|
||||
//! Remove an element from a "new" bucket.
|
||||
//! This is the only place where actual deletions occur.
|
||||
//! Elements are never deleted while in the "tried" table, only possibly evicted back to the "new" table.
|
||||
int ShrinkNew(int nUBucket);
|
||||
|
||||
//! Move an entry from the "new" table(s) to the "tried" table
|
||||
//! @pre vvUnkown[nOrigin].count(nId) != 0
|
||||
void MakeTried(CAddrInfo& info, int nId, int nOrigin);
|
||||
void MakeTried(CAddrInfo& info, int nId);
|
||||
|
||||
//! Delete an entry. It must not be in tried, and have refcount 0.
|
||||
void Delete(int nId);
|
||||
|
||||
//! Clear a position in a "new" table. This is the only place where entries are actually deleted.
|
||||
void ClearNew(int nUBucket, int nUBucketPos);
|
||||
|
||||
//! Mark an entry "good", possibly moving it from "new" to "tried".
|
||||
void Good_(const CService &addr, int64_t nTime);
|
||||
@@ -237,7 +231,7 @@ protected:
|
||||
|
||||
//! Select an address to connect to.
|
||||
//! nUnkBias determines how much to favor new addresses over tried ones (min=0, max=100)
|
||||
CAddress Select_(int nUnkBias);
|
||||
CAddress Select_();
|
||||
|
||||
#ifdef DEBUG_ADDRMAN
|
||||
//! Perform consistency check. Returns an error code or zero.
|
||||
@@ -253,21 +247,25 @@ protected:
|
||||
public:
|
||||
/**
|
||||
* serialized format:
|
||||
* * version byte (currently 0)
|
||||
* * nKey
|
||||
* * version byte (currently 1)
|
||||
* * 0x20 + nKey (serialized as if it were a vector, for backward compatibility)
|
||||
* * nNew
|
||||
* * nTried
|
||||
* * number of "new" buckets
|
||||
* * number of "new" buckets XOR 2**30
|
||||
* * all nNew addrinfos in vvNew
|
||||
* * all nTried addrinfos in vvTried
|
||||
* * for each bucket:
|
||||
* * number of elements
|
||||
* * for each element: index
|
||||
*
|
||||
* 2**30 is xorred with the number of buckets to make addrman deserializer v0 detect it
|
||||
* as incompatible. This is necessary because it did not check the version number on
|
||||
* deserialization.
|
||||
*
|
||||
* Notice that vvTried, mapAddr and vVector are never encoded explicitly;
|
||||
* they are instead reconstructed from the other information.
|
||||
*
|
||||
* vvNew is serialized, but only used if ADDRMAN_UNKOWN_BUCKET_COUNT didn't change,
|
||||
* vvNew is serialized, but only used if ADDRMAN_UNKNOWN_BUCKET_COUNT didn't change,
|
||||
* otherwise it is reconstructed as well.
|
||||
*
|
||||
* This format is more complex, but significantly smaller (at most 1.5 MiB), and supports
|
||||
@@ -275,48 +273,53 @@ public:
|
||||
*
|
||||
* We don't use ADD_SERIALIZE_METHODS since the serialization and deserialization code has
|
||||
* very little in common.
|
||||
*
|
||||
*/
|
||||
template<typename Stream>
|
||||
void Serialize(Stream &s, int nType, int nVersionDummy) const
|
||||
{
|
||||
LOCK(cs);
|
||||
|
||||
unsigned char nVersion = 0;
|
||||
unsigned char nVersion = 1;
|
||||
s << nVersion;
|
||||
s << ((unsigned char)32);
|
||||
s << nKey;
|
||||
s << nNew;
|
||||
s << nTried;
|
||||
|
||||
int nUBuckets = ADDRMAN_NEW_BUCKET_COUNT;
|
||||
int nUBuckets = ADDRMAN_NEW_BUCKET_COUNT ^ (1 << 30);
|
||||
s << nUBuckets;
|
||||
std::map<int, int> mapUnkIds;
|
||||
int nIds = 0;
|
||||
for (std::map<int, CAddrInfo>::const_iterator it = mapInfo.begin(); it != mapInfo.end(); it++) {
|
||||
if (nIds == nNew) break; // this means nNew was wrong, oh ow
|
||||
mapUnkIds[(*it).first] = nIds;
|
||||
const CAddrInfo &info = (*it).second;
|
||||
if (info.nRefCount) {
|
||||
assert(nIds != nNew); // this means nNew was wrong, oh ow
|
||||
s << info;
|
||||
nIds++;
|
||||
}
|
||||
}
|
||||
nIds = 0;
|
||||
for (std::map<int, CAddrInfo>::const_iterator it = mapInfo.begin(); it != mapInfo.end(); it++) {
|
||||
if (nIds == nTried) break; // this means nTried was wrong, oh ow
|
||||
const CAddrInfo &info = (*it).second;
|
||||
if (info.fInTried) {
|
||||
assert(nIds != nTried); // this means nTried was wrong, oh ow
|
||||
s << info;
|
||||
nIds++;
|
||||
}
|
||||
}
|
||||
for (std::vector<std::set<int> >::const_iterator it = vvNew.begin(); it != vvNew.end(); it++) {
|
||||
const std::set<int> &vNew = (*it);
|
||||
int nSize = vNew.size();
|
||||
for (int bucket = 0; bucket < ADDRMAN_NEW_BUCKET_COUNT; bucket++) {
|
||||
int nSize = 0;
|
||||
for (int i = 0; i < ADDRMAN_BUCKET_SIZE; i++) {
|
||||
if (vvNew[bucket][i] != -1)
|
||||
nSize++;
|
||||
}
|
||||
s << nSize;
|
||||
for (std::set<int>::const_iterator it2 = vNew.begin(); it2 != vNew.end(); it2++) {
|
||||
int nIndex = mapUnkIds[*it2];
|
||||
s << nIndex;
|
||||
for (int i = 0; i < ADDRMAN_BUCKET_SIZE; i++) {
|
||||
if (vvNew[bucket][i] != -1) {
|
||||
int nIndex = mapUnkIds[vvNew[bucket][i]];
|
||||
s << nIndex;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -326,64 +329,97 @@ public:
|
||||
{
|
||||
LOCK(cs);
|
||||
|
||||
Clear();
|
||||
|
||||
unsigned char nVersion;
|
||||
s >> nVersion;
|
||||
unsigned char nKeySize;
|
||||
s >> nKeySize;
|
||||
if (nKeySize != 32) throw std::ios_base::failure("Incorrect keysize in addrman deserialization");
|
||||
s >> nKey;
|
||||
s >> nNew;
|
||||
s >> nTried;
|
||||
|
||||
int nUBuckets = 0;
|
||||
s >> nUBuckets;
|
||||
nIdCount = 0;
|
||||
mapInfo.clear();
|
||||
mapAddr.clear();
|
||||
vRandom.clear();
|
||||
vvTried = std::vector<std::vector<int> >(ADDRMAN_TRIED_BUCKET_COUNT, std::vector<int>(0));
|
||||
vvNew = std::vector<std::set<int> >(ADDRMAN_NEW_BUCKET_COUNT, std::set<int>());
|
||||
if (nVersion != 0) {
|
||||
nUBuckets ^= (1 << 30);
|
||||
}
|
||||
|
||||
// Deserialize entries from the new table.
|
||||
for (int n = 0; n < nNew; n++) {
|
||||
CAddrInfo &info = mapInfo[n];
|
||||
s >> info;
|
||||
mapAddr[info] = n;
|
||||
info.nRandomPos = vRandom.size();
|
||||
vRandom.push_back(n);
|
||||
if (nUBuckets != ADDRMAN_NEW_BUCKET_COUNT) {
|
||||
vvNew[info.GetNewBucket(nKey)].insert(n);
|
||||
info.nRefCount++;
|
||||
if (nVersion != 1 || nUBuckets != ADDRMAN_NEW_BUCKET_COUNT) {
|
||||
// In case the new table data cannot be used (nVersion unknown, or bucket count wrong),
|
||||
// immediately try to give them a reference based on their primary source address.
|
||||
int nUBucket = info.GetNewBucket(nKey);
|
||||
int nUBucketPos = info.GetBucketPosition(nKey, true, nUBucket);
|
||||
if (vvNew[nUBucket][nUBucketPos] == -1) {
|
||||
vvNew[nUBucket][nUBucketPos] = n;
|
||||
info.nRefCount++;
|
||||
}
|
||||
}
|
||||
}
|
||||
nIdCount = nNew;
|
||||
|
||||
// Deserialize entries from the tried table.
|
||||
int nLost = 0;
|
||||
for (int n = 0; n < nTried; n++) {
|
||||
CAddrInfo info;
|
||||
s >> info;
|
||||
std::vector<int> &vTried = vvTried[info.GetTriedBucket(nKey)];
|
||||
if (vTried.size() < ADDRMAN_TRIED_BUCKET_SIZE) {
|
||||
int nKBucket = info.GetTriedBucket(nKey);
|
||||
int nKBucketPos = info.GetBucketPosition(nKey, false, nKBucket);
|
||||
if (vvTried[nKBucket][nKBucketPos] == -1) {
|
||||
info.nRandomPos = vRandom.size();
|
||||
info.fInTried = true;
|
||||
vRandom.push_back(nIdCount);
|
||||
mapInfo[nIdCount] = info;
|
||||
mapAddr[info] = nIdCount;
|
||||
vTried.push_back(nIdCount);
|
||||
vvTried[nKBucket][nKBucketPos] = nIdCount;
|
||||
nIdCount++;
|
||||
} else {
|
||||
nLost++;
|
||||
}
|
||||
}
|
||||
nTried -= nLost;
|
||||
for (int b = 0; b < nUBuckets; b++) {
|
||||
std::set<int> &vNew = vvNew[b];
|
||||
|
||||
// Deserialize positions in the new table (if possible).
|
||||
for (int bucket = 0; bucket < nUBuckets; bucket++) {
|
||||
int nSize = 0;
|
||||
s >> nSize;
|
||||
for (int n = 0; n < nSize; n++) {
|
||||
int nIndex = 0;
|
||||
s >> nIndex;
|
||||
CAddrInfo &info = mapInfo[nIndex];
|
||||
if (nUBuckets == ADDRMAN_NEW_BUCKET_COUNT && info.nRefCount < ADDRMAN_NEW_BUCKETS_PER_ADDRESS) {
|
||||
info.nRefCount++;
|
||||
vNew.insert(nIndex);
|
||||
if (nIndex >= 0 && nIndex < nNew) {
|
||||
CAddrInfo &info = mapInfo[nIndex];
|
||||
int nUBucketPos = info.GetBucketPosition(nKey, true, bucket);
|
||||
if (nVersion == 1 && nUBuckets == ADDRMAN_NEW_BUCKET_COUNT && vvNew[bucket][nUBucketPos] == -1 && info.nRefCount < ADDRMAN_NEW_BUCKETS_PER_ADDRESS) {
|
||||
info.nRefCount++;
|
||||
vvNew[bucket][nUBucketPos] = nIndex;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Prune new entries with refcount 0 (as a result of collisions).
|
||||
int nLostUnk = 0;
|
||||
for (std::map<int, CAddrInfo>::const_iterator it = mapInfo.begin(); it != mapInfo.end(); ) {
|
||||
if (it->second.fInTried == false && it->second.nRefCount == 0) {
|
||||
std::map<int, CAddrInfo>::const_iterator itCopy = it++;
|
||||
Delete(itCopy->first);
|
||||
nLostUnk++;
|
||||
} else {
|
||||
it++;
|
||||
}
|
||||
}
|
||||
if (nLost + nLostUnk > 0) {
|
||||
LogPrint("addrman", "addrman lost %i new and %i tried addresses due to collisions\n", nLostUnk, nLost);
|
||||
}
|
||||
|
||||
Check();
|
||||
}
|
||||
|
||||
unsigned int GetSerializeSize(int nType, int nVersion) const
|
||||
@@ -391,14 +427,34 @@ public:
|
||||
return (CSizeComputer(nType, nVersion) << *this).size();
|
||||
}
|
||||
|
||||
CAddrMan() : vRandom(0), vvTried(ADDRMAN_TRIED_BUCKET_COUNT, std::vector<int>(0)), vvNew(ADDRMAN_NEW_BUCKET_COUNT, std::set<int>())
|
||||
void Clear()
|
||||
{
|
||||
nKey.resize(32);
|
||||
GetRandBytes(&nKey[0], 32);
|
||||
std::vector<int>().swap(vRandom);
|
||||
nKey = GetRandHash();
|
||||
for (size_t bucket = 0; bucket < ADDRMAN_NEW_BUCKET_COUNT; bucket++) {
|
||||
for (size_t entry = 0; entry < ADDRMAN_BUCKET_SIZE; entry++) {
|
||||
vvNew[bucket][entry] = -1;
|
||||
}
|
||||
}
|
||||
for (size_t bucket = 0; bucket < ADDRMAN_TRIED_BUCKET_COUNT; bucket++) {
|
||||
for (size_t entry = 0; entry < ADDRMAN_BUCKET_SIZE; entry++) {
|
||||
vvTried[bucket][entry] = -1;
|
||||
}
|
||||
}
|
||||
|
||||
nIdCount = 0;
|
||||
nTried = 0;
|
||||
nNew = 0;
|
||||
nIdCount = 0;
|
||||
nTried = 0;
|
||||
nNew = 0;
|
||||
}
|
||||
|
||||
CAddrMan()
|
||||
{
|
||||
Clear();
|
||||
}
|
||||
|
||||
~CAddrMan()
|
||||
{
|
||||
nKey = uint256(0);
|
||||
}
|
||||
|
||||
//! Return the number of (unique) addresses in all tables.
|
||||
@@ -477,13 +533,13 @@ public:
|
||||
* Choose an address to connect to.
|
||||
* nUnkBias determines how much "new" entries are favored over "tried" ones (0-100).
|
||||
*/
|
||||
CAddress Select(int nUnkBias = 50)
|
||||
CAddress Select()
|
||||
{
|
||||
CAddress addrRet;
|
||||
{
|
||||
LOCK(cs);
|
||||
Check();
|
||||
addrRet = Select_(nUnkBias);
|
||||
addrRet = Select_();
|
||||
Check();
|
||||
}
|
||||
return addrRet;
|
||||
|
||||
@@ -149,13 +149,14 @@ static void RegisterLoad(const string& strInput)
|
||||
valStr.insert(valStr.size(), buf, bread);
|
||||
}
|
||||
|
||||
if (ferror(f)) {
|
||||
int error = ferror(f);
|
||||
fclose(f);
|
||||
|
||||
if (error) {
|
||||
string strErr = "Error reading file " + filename;
|
||||
throw runtime_error(strErr);
|
||||
}
|
||||
|
||||
fclose(f);
|
||||
|
||||
// evaluate as JSON buffer register
|
||||
RegisterSetJson(key, valStr);
|
||||
}
|
||||
@@ -368,7 +369,7 @@ static void MutateTxSign(CMutableTransaction& tx, const string& flagStr)
|
||||
// Add previous txouts given in the RPC call:
|
||||
if (!registers.count("prevtxs"))
|
||||
throw runtime_error("prevtxs register variable must be set.");
|
||||
UniValue prevtxsObj = registers["privatekeys"];
|
||||
UniValue prevtxsObj = registers["prevtxs"];
|
||||
{
|
||||
for (unsigned int previdx = 0; previdx < prevtxsObj.count(); previdx++) {
|
||||
UniValue prevOut = prevtxsObj[previdx];
|
||||
@@ -379,13 +380,13 @@ static void MutateTxSign(CMutableTransaction& tx, const string& flagStr)
|
||||
if (!prevOut.checkObject(types))
|
||||
throw runtime_error("prevtxs internal object typecheck fail");
|
||||
|
||||
uint256 txid = ParseHashUV(prevOut, "txid");
|
||||
uint256 txid = ParseHashUV(prevOut["txid"], "txid");
|
||||
|
||||
int nOut = atoi(prevOut["vout"].getValStr());
|
||||
if (nOut < 0)
|
||||
throw runtime_error("vout must be positive");
|
||||
|
||||
vector<unsigned char> pkData(ParseHexUV(prevOut, "scriptPubKey"));
|
||||
vector<unsigned char> pkData(ParseHexUV(prevOut["scriptPubKey"], "scriptPubKey"));
|
||||
CScript scriptPubKey(pkData.begin(), pkData.end());
|
||||
|
||||
{
|
||||
@@ -437,7 +438,7 @@ static void MutateTxSign(CMutableTransaction& tx, const string& flagStr)
|
||||
BOOST_FOREACH(const CTransaction& txv, txVariants) {
|
||||
txin.scriptSig = CombineSignatures(prevPubKey, mergedTx, i, txin.scriptSig, txv.vin[i].scriptSig);
|
||||
}
|
||||
if (!VerifyScript(txin.scriptSig, prevPubKey, STANDARD_SCRIPT_VERIFY_FLAGS, SignatureChecker(mergedTx, i)))
|
||||
if (!VerifyScript(txin.scriptSig, prevPubKey, STANDARD_SCRIPT_VERIFY_FLAGS, MutableTransactionSignatureChecker(&mergedTx, i)))
|
||||
fComplete = false;
|
||||
}
|
||||
|
||||
|
||||
@@ -156,7 +156,6 @@ public:
|
||||
vSeeds.push_back(CDNSSeedData("bluematt.me", "dnsseed.bluematt.me"));
|
||||
vSeeds.push_back(CDNSSeedData("dashjr.org", "dnsseed.bitcoin.dashjr.org"));
|
||||
vSeeds.push_back(CDNSSeedData("bitcoinstats.com", "seed.bitcoinstats.com"));
|
||||
vSeeds.push_back(CDNSSeedData("bitnodes.io", "seed.bitnodes.io"));
|
||||
vSeeds.push_back(CDNSSeedData("xf2.org", "bitseed.xf2.org"));
|
||||
|
||||
base58Prefixes[PUBKEY_ADDRESS] = list_of(0);
|
||||
@@ -169,8 +168,8 @@ public:
|
||||
|
||||
fRequireRPCPassword = true;
|
||||
fMiningRequiresPeers = true;
|
||||
fDefaultCheckMemPool = false;
|
||||
fAllowMinDifficultyBlocks = false;
|
||||
fDefaultConsistencyChecks = false;
|
||||
fRequireStandard = true;
|
||||
fMineBlocksOnDemand = false;
|
||||
fSkipProofOfWorkCheck = false;
|
||||
@@ -228,8 +227,8 @@ public:
|
||||
|
||||
fRequireRPCPassword = true;
|
||||
fMiningRequiresPeers = true;
|
||||
fDefaultCheckMemPool = false;
|
||||
fAllowMinDifficultyBlocks = true;
|
||||
fDefaultConsistencyChecks = false;
|
||||
fRequireStandard = false;
|
||||
fMineBlocksOnDemand = false;
|
||||
fTestnetToBeDeprecatedFieldRPC = true;
|
||||
@@ -273,8 +272,8 @@ public:
|
||||
|
||||
fRequireRPCPassword = false;
|
||||
fMiningRequiresPeers = false;
|
||||
fDefaultCheckMemPool = true;
|
||||
fAllowMinDifficultyBlocks = true;
|
||||
fDefaultConsistencyChecks = true;
|
||||
fRequireStandard = false;
|
||||
fMineBlocksOnDemand = true;
|
||||
fTestnetToBeDeprecatedFieldRPC = false;
|
||||
@@ -300,7 +299,7 @@ public:
|
||||
|
||||
fRequireRPCPassword = false;
|
||||
fMiningRequiresPeers = false;
|
||||
fDefaultCheckMemPool = true;
|
||||
fDefaultConsistencyChecks = true;
|
||||
fAllowMinDifficultyBlocks = false;
|
||||
fMineBlocksOnDemand = true;
|
||||
}
|
||||
@@ -316,7 +315,7 @@ public:
|
||||
virtual void setEnforceBlockUpgradeMajority(int anEnforceBlockUpgradeMajority) { nEnforceBlockUpgradeMajority=anEnforceBlockUpgradeMajority; }
|
||||
virtual void setRejectBlockOutdatedMajority(int anRejectBlockOutdatedMajority) { nRejectBlockOutdatedMajority=anRejectBlockOutdatedMajority; }
|
||||
virtual void setToCheckBlockUpgradeMajority(int anToCheckBlockUpgradeMajority) { nToCheckBlockUpgradeMajority=anToCheckBlockUpgradeMajority; }
|
||||
virtual void setDefaultCheckMemPool(bool afDefaultCheckMemPool) { fDefaultCheckMemPool=afDefaultCheckMemPool; }
|
||||
virtual void setDefaultConsistencyChecks(bool afDefaultConsistencyChecks) { fDefaultConsistencyChecks=afDefaultConsistencyChecks; }
|
||||
virtual void setAllowMinDifficultyBlocks(bool afAllowMinDifficultyBlocks) { fAllowMinDifficultyBlocks=afAllowMinDifficultyBlocks; }
|
||||
virtual void setSkipProofOfWorkCheck(bool afSkipProofOfWorkCheck) { fSkipProofOfWorkCheck = afSkipProofOfWorkCheck; }
|
||||
};
|
||||
|
||||
@@ -58,8 +58,8 @@ public:
|
||||
bool RequireRPCPassword() const { return fRequireRPCPassword; }
|
||||
/** Make miner wait to have peers to avoid wasting work */
|
||||
bool MiningRequiresPeers() const { return fMiningRequiresPeers; }
|
||||
/** Default value for -checkmempool argument */
|
||||
bool DefaultCheckMemPool() const { return fDefaultCheckMemPool; }
|
||||
/** Default value for -checkmempool and -checkblockindex argument */
|
||||
bool DefaultConsistencyChecks() const { return fDefaultConsistencyChecks; }
|
||||
/** Allow mining of a min-difficulty block */
|
||||
bool AllowMinDifficultyBlocks() const { return fAllowMinDifficultyBlocks; }
|
||||
/** Skip proof-of-work check: allow mining of any difficulty block */
|
||||
@@ -103,8 +103,8 @@ protected:
|
||||
std::vector<CAddress> vFixedSeeds;
|
||||
bool fRequireRPCPassword;
|
||||
bool fMiningRequiresPeers;
|
||||
bool fDefaultCheckMemPool;
|
||||
bool fAllowMinDifficultyBlocks;
|
||||
bool fDefaultConsistencyChecks;
|
||||
bool fRequireStandard;
|
||||
bool fMineBlocksOnDemand;
|
||||
bool fSkipProofOfWorkCheck;
|
||||
@@ -124,7 +124,7 @@ public:
|
||||
virtual void setEnforceBlockUpgradeMajority(int anEnforceBlockUpgradeMajority)=0;
|
||||
virtual void setRejectBlockOutdatedMajority(int anRejectBlockOutdatedMajority)=0;
|
||||
virtual void setToCheckBlockUpgradeMajority(int anToCheckBlockUpgradeMajority)=0;
|
||||
virtual void setDefaultCheckMemPool(bool aDefaultCheckMemPool)=0;
|
||||
virtual void setDefaultConsistencyChecks(bool aDefaultConsistencyChecks)=0;
|
||||
virtual void setAllowMinDifficultyBlocks(bool aAllowMinDifficultyBlocks)=0;
|
||||
virtual void setSkipProofOfWorkCheck(bool aSkipProofOfWorkCheck)=0;
|
||||
};
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -161,7 +161,12 @@ public:
|
||||
{
|
||||
}
|
||||
|
||||
friend class CCheckQueueControl<T>;
|
||||
bool IsIdle()
|
||||
{
|
||||
boost::unique_lock<boost::mutex> lock(mutex);
|
||||
return (nTotal == nIdle && nTodo == 0 && fAllOk == true);
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -180,9 +185,8 @@ public:
|
||||
{
|
||||
// passed queue is supposed to be unused, or NULL
|
||||
if (pqueue != NULL) {
|
||||
assert(pqueue->nTotal == pqueue->nIdle);
|
||||
assert(pqueue->nTodo == 0);
|
||||
assert(pqueue->fAllOk == true);
|
||||
bool isIdle = pqueue->IsIdle();
|
||||
assert(isIdle);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -15,18 +15,18 @@
|
||||
|
||||
//! These need to be macros, as clientversion.cpp's and bitcoin*-res.rc's voodoo requires it
|
||||
#define CLIENT_VERSION_MAJOR 0
|
||||
#define CLIENT_VERSION_MINOR 9
|
||||
#define CLIENT_VERSION_REVISION 99
|
||||
#define CLIENT_VERSION_MINOR 10
|
||||
#define CLIENT_VERSION_REVISION 3
|
||||
#define CLIENT_VERSION_BUILD 0
|
||||
|
||||
//! Set to true for release, false for prerelease or test build
|
||||
#define CLIENT_VERSION_IS_RELEASE false
|
||||
#define CLIENT_VERSION_IS_RELEASE true
|
||||
|
||||
/**
|
||||
* Copyright year (2009-this)
|
||||
* Todo: update this when changing our copyright comments in the source
|
||||
*/
|
||||
#define COPYRIGHT_YEAR 2014
|
||||
#define COPYRIGHT_YEAR 2015
|
||||
|
||||
#endif //HAVE_CONFIG_H
|
||||
|
||||
|
||||
@@ -106,7 +106,6 @@ bool CCoinsViewCache::GetCoins(const uint256 &txid, CCoins &coins) const {
|
||||
|
||||
CCoinsModifier CCoinsViewCache::ModifyCoins(const uint256 &txid) {
|
||||
assert(!hasModifier);
|
||||
hasModifier = true;
|
||||
std::pair<CCoinsMap::iterator, bool> ret = cacheCoins.insert(std::make_pair(txid, CCoinsCacheEntry()));
|
||||
if (ret.second) {
|
||||
if (!base->GetCoins(txid, ret.first->second.coins)) {
|
||||
@@ -247,7 +246,10 @@ double CCoinsViewCache::GetPriority(const CTransaction &tx, int nHeight) const
|
||||
return tx.ComputePriority(dResult);
|
||||
}
|
||||
|
||||
CCoinsModifier::CCoinsModifier(CCoinsViewCache& cache_, CCoinsMap::iterator it_) : cache(cache_), it(it_) {}
|
||||
CCoinsModifier::CCoinsModifier(CCoinsViewCache& cache_, CCoinsMap::iterator it_) : cache(cache_), it(it_) {
|
||||
assert(!cache.hasModifier);
|
||||
cache.hasModifier = true;
|
||||
}
|
||||
|
||||
CCoinsModifier::~CCoinsModifier()
|
||||
{
|
||||
|
||||
12
src/compat.h
12
src/compat.h
@@ -88,8 +88,14 @@ typedef u_int SOCKET;
|
||||
#define THREAD_PRIORITY_ABOVE_NORMAL (-2)
|
||||
#endif
|
||||
|
||||
#if HAVE_DECL_STRNLEN == 0
|
||||
size_t strnlen( const char *start, size_t max_len);
|
||||
#endif // HAVE_DECL_STRNLEN
|
||||
size_t strnlen_int( const char *start, size_t max_len);
|
||||
|
||||
bool static inline IsSelectableSocket(SOCKET s) {
|
||||
#ifdef WIN32
|
||||
return true;
|
||||
#else
|
||||
return (s < FD_SETSIZE);
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif // BITCOIN_COMPAT_H
|
||||
|
||||
@@ -7,12 +7,11 @@
|
||||
#endif
|
||||
|
||||
#include <cstring>
|
||||
|
||||
#if HAVE_DECL_STRNLEN == 0
|
||||
size_t strnlen( const char *start, size_t max_len)
|
||||
// OSX 10.6 is missing strnlen at runtime, but builds targetting it will still
|
||||
// succeed. Define our own version here to avoid a crash.
|
||||
size_t strnlen_int( const char *start, size_t max_len)
|
||||
{
|
||||
const char *end = (const char *)memchr(start, '\0', max_len);
|
||||
|
||||
return end ? (size_t)(end - start) : max_len;
|
||||
}
|
||||
#endif // HAVE_DECL_STRNLEN
|
||||
|
||||
@@ -19,6 +19,7 @@ extern CScript ParseScript(std::string s);
|
||||
extern bool DecodeHexTx(CTransaction& tx, const std::string& strHexTx);
|
||||
extern bool DecodeHexBlk(CBlock&, const std::string& strHexBlk);
|
||||
extern uint256 ParseHashUV(const UniValue& v, const std::string& strName);
|
||||
extern uint256 ParseHashStr(const std::string&, const std::string& strName);
|
||||
extern std::vector<unsigned char> ParseHexUV(const UniValue& v, const std::string& strName);
|
||||
|
||||
// core_write.cpp
|
||||
|
||||
@@ -131,6 +131,11 @@ uint256 ParseHashUV(const UniValue& v, const string& strName)
|
||||
string strHex;
|
||||
if (v.isStr())
|
||||
strHex = v.getValStr();
|
||||
return ParseHashStr(strHex, strName); // Note: ParseHashStr("") throws a runtime_error
|
||||
}
|
||||
|
||||
uint256 ParseHashStr(const std::string& strHex, const std::string& strName)
|
||||
{
|
||||
if (!IsHex(strHex)) // Note: IsHex("") is false
|
||||
throw runtime_error(strName+" must be hexadecimal string (not '"+strHex+"')");
|
||||
|
||||
|
||||
@@ -117,10 +117,34 @@ bool CECKey::SetPubKey(const unsigned char* pubkey, size_t size) {
|
||||
}
|
||||
|
||||
bool CECKey::Verify(const uint256 &hash, const std::vector<unsigned char>& vchSig) {
|
||||
// -1 = error, 0 = bad sig, 1 = good
|
||||
if (ECDSA_verify(0, (unsigned char*)&hash, sizeof(hash), &vchSig[0], vchSig.size(), pkey) != 1)
|
||||
if (vchSig.empty())
|
||||
return false;
|
||||
return true;
|
||||
|
||||
// New versions of OpenSSL will reject non-canonical DER signatures. de/re-serialize first.
|
||||
unsigned char *norm_der = NULL;
|
||||
ECDSA_SIG *norm_sig = ECDSA_SIG_new();
|
||||
const unsigned char* sigptr = &vchSig[0];
|
||||
assert(norm_sig);
|
||||
if (d2i_ECDSA_SIG(&norm_sig, &sigptr, vchSig.size()) == NULL)
|
||||
{
|
||||
/* As of OpenSSL 1.0.0p d2i_ECDSA_SIG frees and nulls the pointer on
|
||||
* error. But OpenSSL's own use of this function redundantly frees the
|
||||
* result. As ECDSA_SIG_free(NULL) is a no-op, and in the absence of a
|
||||
* clear contract for the function behaving the same way is more
|
||||
* conservative.
|
||||
*/
|
||||
ECDSA_SIG_free(norm_sig);
|
||||
return false;
|
||||
}
|
||||
int derlen = i2d_ECDSA_SIG(norm_sig, &norm_der);
|
||||
ECDSA_SIG_free(norm_sig);
|
||||
if (derlen <= 0)
|
||||
return false;
|
||||
|
||||
// -1 = error, 0 = bad sig, 1 = good
|
||||
bool ret = ECDSA_verify(0, (unsigned char*)&hash, sizeof(hash), norm_der, derlen, pkey) == 1;
|
||||
OPENSSL_free(norm_der);
|
||||
return ret;
|
||||
}
|
||||
|
||||
bool CECKey::Recover(const uint256 &hash, const unsigned char *p64, int rec)
|
||||
|
||||
72
src/init.cpp
72
src/init.cpp
@@ -112,7 +112,28 @@ bool ShutdownRequested()
|
||||
return fRequestShutdown;
|
||||
}
|
||||
|
||||
class CCoinsViewErrorCatcher : public CCoinsViewBacked
|
||||
{
|
||||
public:
|
||||
CCoinsViewErrorCatcher(CCoinsView* view) : CCoinsViewBacked(view) {}
|
||||
bool GetCoins(const uint256 &txid, CCoins &coins) const {
|
||||
try {
|
||||
return CCoinsViewBacked::GetCoins(txid, coins);
|
||||
} catch(const std::runtime_error& e) {
|
||||
uiInterface.ThreadSafeMessageBox(_("Error reading from database, shutting down."), "", CClientUIInterface::MSG_ERROR);
|
||||
LogPrintf("Error reading from database: %s\n", e.what());
|
||||
// Starting the shutdown sequence and returning false to the caller would be
|
||||
// interpreted as 'entry not found' (as opposed to unable to read data), and
|
||||
// could lead to invalid interpration. Just exit immediately, as we can't
|
||||
// continue anyway, and all writes should be atomic.
|
||||
abort();
|
||||
}
|
||||
}
|
||||
// Writes do not need similar protection, as failure to write is handled by the caller.
|
||||
};
|
||||
|
||||
static CCoinsViewDB *pcoinsdbview = NULL;
|
||||
static CCoinsViewErrorCatcher *pcoinscatcher = NULL;
|
||||
|
||||
void Shutdown()
|
||||
{
|
||||
@@ -155,6 +176,8 @@ void Shutdown()
|
||||
}
|
||||
delete pcoinsTip;
|
||||
pcoinsTip = NULL;
|
||||
delete pcoinscatcher;
|
||||
pcoinscatcher = NULL;
|
||||
delete pcoinsdbview;
|
||||
pcoinsdbview = NULL;
|
||||
delete pblocktree;
|
||||
@@ -218,6 +241,7 @@ std::string HelpMessage(HelpMessageMode mode)
|
||||
string strUsage = _("Options:") + "\n";
|
||||
strUsage += " -? " + _("This help message") + "\n";
|
||||
strUsage += " -alertnotify=<cmd> " + _("Execute command when a relevant alert is received or we see a really long fork (%s in cmd is replaced by message)") + "\n";
|
||||
strUsage += " -alerts " + strprintf(_("Receive and display P2P network alerts (default: %u)"), DEFAULT_ALERTS);
|
||||
strUsage += " -blocknotify=<cmd> " + _("Execute command when the best block changes (%s in cmd is replaced by block hash)") + "\n";
|
||||
strUsage += " -checkblocks=<n> " + strprintf(_("How many blocks to check at startup (default: %u, 0 = all)"), 288) + "\n";
|
||||
strUsage += " -checklevel=<n> " + strprintf(_("How thorough the block verification of -checkblocks is (0-4, default: %u)"), 3) + "\n";
|
||||
@@ -231,7 +255,6 @@ std::string HelpMessage(HelpMessageMode mode)
|
||||
strUsage += " -datadir=<dir> " + _("Specify data directory") + "\n";
|
||||
strUsage += " -dbcache=<n> " + strprintf(_("Set database cache size in megabytes (%d to %d, default: %d)"), nMinDbCache, nMaxDbCache, nDefaultDbCache) + "\n";
|
||||
strUsage += " -loadblock=<file> " + _("Imports blocks from external blk000??.dat file") + " " + _("on startup") + "\n";
|
||||
strUsage += " -maxorphanblocks=<n> " + strprintf(_("Keep at most <n> unconnectable blocks in memory (default: %u)"), DEFAULT_MAX_ORPHAN_BLOCKS) + "\n";
|
||||
strUsage += " -maxorphantx=<n> " + strprintf(_("Keep at most <n> unconnectable transactions in memory (default: %u)"), DEFAULT_MAX_ORPHAN_TRANSACTIONS) + "\n";
|
||||
strUsage += " -par=<n> " + strprintf(_("Set the number of script verification threads (%u to %d, 0 = auto, <0 = leave that many cores free, default: %d)"), -(int)boost::thread::hardware_concurrency(), MAX_SCRIPTCHECK_THREADS, DEFAULT_SCRIPTCHECK_THREADS) + "\n";
|
||||
#ifndef WIN32
|
||||
@@ -287,7 +310,8 @@ std::string HelpMessage(HelpMessageMode mode)
|
||||
strUsage += " -salvagewallet " + _("Attempt to recover private keys from a corrupt wallet.dat") + " " + _("on startup") + "\n";
|
||||
strUsage += " -sendfreetransactions " + strprintf(_("Send transactions as zero-fee transactions if possible (default: %u)"), 0) + "\n";
|
||||
strUsage += " -spendzeroconfchange " + strprintf(_("Spend unconfirmed change when sending transactions (default: %u)"), 1) + "\n";
|
||||
strUsage += " -txconfirmtarget=<n> " + strprintf(_("If paytxfee is not set, include enough fee so transactions are confirmed on average within n blocks (default: %u)"), 1) + "\n";
|
||||
strUsage += " -txconfirmtarget=<n> " + strprintf(_("If paytxfee is not set, include enough fee so transactions begin confirmation on average within n blocks (default: %u)"), 1) + "\n";
|
||||
strUsage += " -maxtxfee=<amt> " + strprintf(_("Maximum total fees to use in a single wallet transaction, setting too low may abort large transactions (default: %s)"), FormatMoney(maxTxFee)) + "\n";
|
||||
strUsage += " -upgradewallet " + _("Upgrade wallet to latest format") + " " + _("on startup") + "\n";
|
||||
strUsage += " -wallet=<file> " + _("Specify wallet file (within data directory)") + " " + strprintf(_("(default: %s)"), "wallet.dat") + "\n";
|
||||
strUsage += " -walletnotify=<cmd> " + _("Execute command when a wallet transaction changes (%s in cmd is replaced by TxID)") + "\n";
|
||||
@@ -324,6 +348,7 @@ std::string HelpMessage(HelpMessageMode mode)
|
||||
if (GetBoolArg("-help-debug", false))
|
||||
{
|
||||
strUsage += " -limitfreerelay=<n> " + strprintf(_("Continuously rate-limit free transactions to <n>*1000 bytes per minute (default:%u)"), 15) + "\n";
|
||||
strUsage += " -relaypriority " + strprintf(_("Require high priority for relaying free or low-fee transactions (default:%u)"), 1) + "\n";
|
||||
strUsage += " -maxsigcachesize=<n> " + strprintf(_("Limit size of signature cache to <n> entries (default: %u)"), 50000) + "\n";
|
||||
}
|
||||
strUsage += " -minrelaytxfee=<amt> " + strprintf(_("Fees (in BTC/Kb) smaller than this are considered zero fee for relaying (default: %s)"), FormatMoney(::minRelayTxFee.GetFeePerK())) + "\n";
|
||||
@@ -357,6 +382,7 @@ std::string HelpMessage(HelpMessageMode mode)
|
||||
strUsage += " -rpcport=<port> " + strprintf(_("Listen for JSON-RPC connections on <port> (default: %u or testnet: %u)"), 8332, 18332) + "\n";
|
||||
strUsage += " -rpcallowip=<ip> " + _("Allow JSON-RPC connections from specified source. Valid for <ip> are a single IP (e.g. 1.2.3.4), a network/netmask (e.g. 1.2.3.4/255.255.255.0) or a network/CIDR (e.g. 1.2.3.4/24). This option can be specified multiple times") + "\n";
|
||||
strUsage += " -rpcthreads=<n> " + strprintf(_("Set the number of threads to service RPC calls (default: %d)"), 4) + "\n";
|
||||
strUsage += " -rpckeepalive " + strprintf(_("RPC support for HTTP persistent connections (default: %d)"), 1) + "\n";
|
||||
|
||||
strUsage += "\n" + _("RPC SSL options: (see the Bitcoin Wiki for SSL setup instructions)") + "\n";
|
||||
strUsage += " -rpcssl " + _("Use OpenSSL (https) for JSON-RPC connections") + "\n";
|
||||
@@ -568,7 +594,11 @@ bool AppInit2(boost::thread_group& threadGroup)
|
||||
if (mapArgs.count("-proxy")) {
|
||||
// to protect privacy, do not listen by default if a default proxy server is specified
|
||||
if (SoftSetBoolArg("-listen", false))
|
||||
LogPrintf("AppInit2 : parameter interaction: -proxy set -> setting -listen=0\n");
|
||||
LogPrintf("%s: parameter interaction: -proxy set -> setting -listen=0\n", __func__);
|
||||
// to protect privacy, do not use UPNP when a proxy is set. The user may still specify -listen=1
|
||||
// to listen locally, so don't rely on this happening through -listen below.
|
||||
if (SoftSetBoolArg("-upnp", false))
|
||||
LogPrintf("%s: parameter interaction: -proxy set -> setting -upnp=0\n", __func__);
|
||||
// to protect privacy, do not discover addresses by default
|
||||
if (SoftSetBoolArg("-discover", false))
|
||||
LogPrintf("AppInit2 : parameter interaction: -proxy set -> setting -discover=0\n");
|
||||
@@ -631,8 +661,9 @@ bool AppInit2(boost::thread_group& threadGroup)
|
||||
if (GetBoolArg("-benchmark", false))
|
||||
InitWarning(_("Warning: Unsupported argument -benchmark ignored, use -debug=bench."));
|
||||
|
||||
// Checkmempool defaults to true in regtest mode
|
||||
mempool.setSanityCheck(GetBoolArg("-checkmempool", Params().DefaultCheckMemPool()));
|
||||
// Checkmempool and checkblockindex default to true in regtest mode
|
||||
mempool.setSanityCheck(GetBoolArg("-checkmempool", Params().DefaultConsistencyChecks()));
|
||||
fCheckBlockIndex = GetBoolArg("-checkblockindex", Params().DefaultConsistencyChecks());
|
||||
Checkpoints::fEnabled = GetBoolArg("-checkpoints", true);
|
||||
|
||||
// -par=0 means autodetect, but nScriptCheckThreads==0 means no concurrency
|
||||
@@ -653,12 +684,6 @@ bool AppInit2(boost::thread_group& threadGroup)
|
||||
if (nConnectTimeout <= 0)
|
||||
nConnectTimeout = DEFAULT_CONNECT_TIMEOUT;
|
||||
|
||||
// Continue to put "/P2SH/" in the coinbase to monitor
|
||||
// BIP16 support.
|
||||
// This can be removed eventually...
|
||||
const char* pszP2SH = "/P2SH/";
|
||||
COINBASE_FLAGS << std::vector<unsigned char>(pszP2SH, pszP2SH+strlen(pszP2SH));
|
||||
|
||||
// Fee-per-kilobyte amount considered the same as "free"
|
||||
// If you are mining, be careful setting this:
|
||||
// if you set it to zero then
|
||||
@@ -697,6 +722,20 @@ bool AppInit2(boost::thread_group& threadGroup)
|
||||
mapArgs["-paytxfee"], ::minRelayTxFee.ToString()));
|
||||
}
|
||||
}
|
||||
if (mapArgs.count("-maxtxfee"))
|
||||
{
|
||||
CAmount nMaxFee = 0;
|
||||
if (!ParseMoney(mapArgs["-maxtxfee"], nMaxFee))
|
||||
return InitError(strprintf(_("Invalid amount for -maxtxfee=<amount>: '%s'"), mapArgs["-maptxfee"]));
|
||||
if (nMaxFee > nHighTransactionMaxFeeWarning)
|
||||
InitWarning(_("Warning: -maxtxfee is set very high! Fees this large could be paid on a single transaction."));
|
||||
maxTxFee = nMaxFee;
|
||||
if (CFeeRate(maxTxFee, 1000) < ::minRelayTxFee)
|
||||
{
|
||||
return InitError(strprintf(_("Invalid amount for -maxtxfee=<amount>: '%s' (must be at least the minrelay fee of %s to prevent stuck transactions)"),
|
||||
mapArgs["-maxtxfee"], ::minRelayTxFee.ToString()));
|
||||
}
|
||||
}
|
||||
nTxConfirmTarget = GetArg("-txconfirmtarget", 1);
|
||||
bSpendZeroConfChange = GetArg("-spendzeroconfchange", true);
|
||||
fSendFreeTransactions = GetArg("-sendfreetransactions", false);
|
||||
@@ -707,6 +746,8 @@ bool AppInit2(boost::thread_group& threadGroup)
|
||||
fIsBareMultisigStd = GetArg("-permitbaremultisig", true) != 0;
|
||||
nMaxDatacarrierBytes = GetArg("-datacarriersize", nMaxDatacarrierBytes);
|
||||
|
||||
fAlerts = GetBoolArg("-alerts", DEFAULT_ALERTS);
|
||||
|
||||
// ********************************************************* Step 4: application initialization: dir lock, daemonize, pidfile, debug log
|
||||
|
||||
// Sanity check
|
||||
@@ -971,11 +1012,13 @@ bool AppInit2(boost::thread_group& threadGroup)
|
||||
UnloadBlockIndex();
|
||||
delete pcoinsTip;
|
||||
delete pcoinsdbview;
|
||||
delete pcoinscatcher;
|
||||
delete pblocktree;
|
||||
|
||||
pblocktree = new CBlockTreeDB(nBlockTreeDBCache, false, fReindex);
|
||||
pcoinsdbview = new CCoinsViewDB(nCoinDBCache, false, fReindex);
|
||||
pcoinsTip = new CCoinsViewCache(pcoinsdbview);
|
||||
pcoinscatcher = new CCoinsViewErrorCatcher(pcoinsdbview);
|
||||
pcoinsTip = new CCoinsViewCache(pcoinscatcher);
|
||||
|
||||
if (fReindex)
|
||||
pblocktree->WriteReindexing(true);
|
||||
@@ -1207,6 +1250,11 @@ bool AppInit2(boost::thread_group& threadGroup)
|
||||
vImportFiles.push_back(strFile);
|
||||
}
|
||||
threadGroup.create_thread(boost::bind(&ThreadImport, vImportFiles));
|
||||
if (chainActive.Tip() == NULL) {
|
||||
LogPrintf("Waiting for genesis block to be imported...\n");
|
||||
while (!fRequestShutdown && chainActive.Tip() == NULL)
|
||||
MilliSleep(10);
|
||||
}
|
||||
|
||||
// ********************************************************* Step 10: start node
|
||||
|
||||
|
||||
@@ -521,12 +521,11 @@ namespace json_spirit
|
||||
|
||||
const spirit_namespace::parse_info< Iter_type > info =
|
||||
spirit_namespace::parse( begin, end,
|
||||
Json_grammer< Value_type, Iter_type >( semantic_actions ),
|
||||
Json_grammer< Value_type, Iter_type >( semantic_actions ) >> spirit_namespace::end_p,
|
||||
spirit_namespace::space_p );
|
||||
|
||||
if( !info.hit )
|
||||
{
|
||||
assert( false ); // in theory exception should already have been thrown
|
||||
throw_error( info.stop, "error" );
|
||||
}
|
||||
|
||||
@@ -570,7 +569,8 @@ namespace json_spirit
|
||||
{
|
||||
typename String_type::const_iterator begin = s.begin();
|
||||
|
||||
return read_range( begin, s.end(), value );
|
||||
bool success = read_range( begin, s.end(), value );
|
||||
return success && begin == s.end();
|
||||
}
|
||||
|
||||
template< class Istream_type >
|
||||
|
||||
@@ -58,7 +58,8 @@ CLevelDBWrapper::CLevelDBWrapper(const boost::filesystem::path& path, size_t nCa
|
||||
} else {
|
||||
if (fWipe) {
|
||||
LogPrintf("Wiping LevelDB in %s\n", path.string());
|
||||
leveldb::DestroyDB(path.string(), options);
|
||||
leveldb::Status result = leveldb::DestroyDB(path.string(), options);
|
||||
HandleError(result);
|
||||
}
|
||||
TryCreateDirectory(path);
|
||||
LogPrintf("Opening LevelDB in %s\n", path.string());
|
||||
|
||||
327
src/main.cpp
327
src/main.cpp
@@ -51,11 +51,12 @@ bool fImporting = false;
|
||||
bool fReindex = false;
|
||||
bool fTxIndex = false;
|
||||
bool fIsBareMultisigStd = true;
|
||||
bool fCheckBlockIndex = false;
|
||||
unsigned int nCoinCacheSize = 5000;
|
||||
|
||||
bool fAlerts = DEFAULT_ALERTS;
|
||||
|
||||
/** Fees smaller than this (in satoshi) are considered zero fee (for relaying and mining) */
|
||||
CFeeRate minRelayTxFee = CFeeRate(1000);
|
||||
CFeeRate minRelayTxFee = CFeeRate(5000);
|
||||
|
||||
CTxMemPool mempool(::minRelayTxFee);
|
||||
|
||||
@@ -67,6 +68,8 @@ map<uint256, COrphanTx> mapOrphanTransactions;
|
||||
map<uint256, set<uint256> > mapOrphanTransactionsByPrev;
|
||||
void EraseOrphansFor(NodeId peer);
|
||||
|
||||
static void CheckBlockIndex();
|
||||
|
||||
/** Constant stuff for coinbase transactions we create: */
|
||||
CScript COINBASE_FLAGS;
|
||||
|
||||
@@ -77,7 +80,7 @@ namespace {
|
||||
|
||||
struct CBlockIndexWorkComparator
|
||||
{
|
||||
bool operator()(CBlockIndex *pa, CBlockIndex *pb) {
|
||||
bool operator()(CBlockIndex *pa, CBlockIndex *pb) const {
|
||||
// First sort by most total work, ...
|
||||
if (pa->nChainWork > pb->nChainWork) return false;
|
||||
if (pa->nChainWork < pb->nChainWork) return true;
|
||||
@@ -99,8 +102,8 @@ namespace {
|
||||
CBlockIndex *pindexBestInvalid;
|
||||
|
||||
/**
|
||||
* The set of all CBlockIndex entries with BLOCK_VALID_TRANSACTIONS or better that are at least
|
||||
* as good as our current tip. Entries may be failed, though.
|
||||
* The set of all CBlockIndex entries with BLOCK_VALID_TRANSACTIONS (for itself and all ancestors) and
|
||||
* as good as our current tip or better. Entries may be failed, though.
|
||||
*/
|
||||
set<CBlockIndex*, CBlockIndexWorkComparator> setBlockIndexCandidates;
|
||||
/** Number of nodes with fSyncStarted. */
|
||||
@@ -131,9 +134,14 @@ namespace {
|
||||
uint256 hash;
|
||||
CBlockIndex *pindex; //! Optional.
|
||||
int64_t nTime; //! Time of "getdata" request in microseconds.
|
||||
int nValidatedQueuedBefore; //! Number of blocks queued with validated headers (globally) at the time this one is requested.
|
||||
bool fValidatedHeaders; //! Whether this block has validated headers at the time of request.
|
||||
};
|
||||
map<uint256, pair<NodeId, list<QueuedBlock>::iterator> > mapBlocksInFlight;
|
||||
|
||||
/** Number of blocks in flight with validated headers. */
|
||||
int nQueuedValidatedHeaders = 0;
|
||||
|
||||
/** Number of preferable block download peers. */
|
||||
int nPreferredDownload = 0;
|
||||
|
||||
@@ -226,6 +234,10 @@ struct CBlockReject {
|
||||
* and we're no longer holding the node's locks.
|
||||
*/
|
||||
struct CNodeState {
|
||||
//! The peer's address
|
||||
CService address;
|
||||
//! Whether we have a fully established connection.
|
||||
bool fCurrentlyConnected;
|
||||
//! Accumulated misbehaviour score for this peer.
|
||||
int nMisbehavior;
|
||||
//! Whether this peer should be disconnected and banned (unless whitelisted).
|
||||
@@ -250,6 +262,7 @@ struct CNodeState {
|
||||
bool fPreferredDownload;
|
||||
|
||||
CNodeState() {
|
||||
fCurrentlyConnected = false;
|
||||
nMisbehavior = 0;
|
||||
fShouldBan = false;
|
||||
pindexBestKnownBlock = NULL;
|
||||
@@ -293,6 +306,7 @@ void InitializeNode(NodeId nodeid, const CNode *pnode) {
|
||||
LOCK(cs_main);
|
||||
CNodeState &state = mapNodeState.insert(std::make_pair(nodeid, CNodeState())).first->second;
|
||||
state.name = pnode->addrName;
|
||||
state.address = pnode->addr;
|
||||
}
|
||||
|
||||
void FinalizeNode(NodeId nodeid) {
|
||||
@@ -302,6 +316,10 @@ void FinalizeNode(NodeId nodeid) {
|
||||
if (state->fSyncStarted)
|
||||
nSyncStarted--;
|
||||
|
||||
if (state->nMisbehavior == 0 && state->fCurrentlyConnected) {
|
||||
AddressCurrentlyConnected(state->address);
|
||||
}
|
||||
|
||||
BOOST_FOREACH(const QueuedBlock& entry, state->vBlocksInFlight)
|
||||
mapBlocksInFlight.erase(entry.hash);
|
||||
EraseOrphansFor(nodeid);
|
||||
@@ -315,6 +333,7 @@ void MarkBlockAsReceived(const uint256& hash) {
|
||||
map<uint256, pair<NodeId, list<QueuedBlock>::iterator> >::iterator itInFlight = mapBlocksInFlight.find(hash);
|
||||
if (itInFlight != mapBlocksInFlight.end()) {
|
||||
CNodeState *state = State(itInFlight->second.first);
|
||||
nQueuedValidatedHeaders -= itInFlight->second.second->fValidatedHeaders;
|
||||
state->vBlocksInFlight.erase(itInFlight->second.second);
|
||||
state->nBlocksInFlight--;
|
||||
state->nStallingSince = 0;
|
||||
@@ -330,7 +349,8 @@ void MarkBlockAsInFlight(NodeId nodeid, const uint256& hash, CBlockIndex *pindex
|
||||
// Make sure it's not listed somewhere already.
|
||||
MarkBlockAsReceived(hash);
|
||||
|
||||
QueuedBlock newentry = {hash, pindex, GetTimeMicros()};
|
||||
QueuedBlock newentry = {hash, pindex, GetTimeMicros(), nQueuedValidatedHeaders, pindex != NULL};
|
||||
nQueuedValidatedHeaders += newentry.fValidatedHeaders;
|
||||
list<QueuedBlock>::iterator it = state->vBlocksInFlight.insert(state->vBlocksInFlight.end(), newentry);
|
||||
state->nBlocksInFlight++;
|
||||
mapBlocksInFlight[hash] = std::make_pair(nodeid, it);
|
||||
@@ -442,6 +462,10 @@ void FindNextBlocksToDownload(NodeId nodeid, unsigned int count, std::vector<CBl
|
||||
// are not yet downloaded and not in flight to vBlocks. In the mean time, update
|
||||
// pindexLastCommonBlock as long as all ancestors are already downloaded.
|
||||
BOOST_FOREACH(CBlockIndex* pindex, vToFetch) {
|
||||
if (!pindex->IsValid(BLOCK_VALID_TREE)) {
|
||||
// We consider the chain that this peer is on invalid.
|
||||
return;
|
||||
}
|
||||
if (pindex->nStatus & BLOCK_HAVE_DATA) {
|
||||
if (pindex->nChainTx)
|
||||
state->pindexLastCommonBlock = pindex;
|
||||
@@ -1018,7 +1042,12 @@ bool AcceptToMemoryPool(CTxMemPool& pool, CValidationState &state, const CTransa
|
||||
hash.ToString(), nFees, txMinFee),
|
||||
REJECT_INSUFFICIENTFEE, "insufficient fee");
|
||||
|
||||
// Continuously rate-limit free (really, very-low-fee)transactions
|
||||
// Require that free transactions have sufficient priority to be mined in the next block.
|
||||
if (GetBoolArg("-relaypriority", true) && nFees < ::minRelayTxFee.GetFee(nSize) && !AllowFree(view.GetPriority(tx, chainActive.Height() + 1))) {
|
||||
return state.DoS(0, false, REJECT_INSUFFICIENTFEE, "insufficient priority");
|
||||
}
|
||||
|
||||
// Continuously rate-limit free (really, very-low-fee) transactions
|
||||
// This mitigates 'penny-flooding' -- sending thousands of free transactions just to
|
||||
// be annoying or make others' transactions take longer to confirm.
|
||||
if (fLimitFree && nFees < ::minRelayTxFee.GetFee(nSize))
|
||||
@@ -1037,7 +1066,7 @@ bool AcceptToMemoryPool(CTxMemPool& pool, CValidationState &state, const CTransa
|
||||
// At default rate it would take over a month to fill 1GB
|
||||
if (dFreeCount >= GetArg("-limitfreerelay", 15)*10*1000)
|
||||
return state.DoS(0, error("AcceptToMemoryPool : free transaction rejected by rate limiter"),
|
||||
REJECT_INSUFFICIENTFEE, "insufficient priority");
|
||||
REJECT_INSUFFICIENTFEE, "rate limited free transaction");
|
||||
LogPrint("mempool", "Rate limit dFreeCount: %g => %g\n", dFreeCount, dFreeCount+nSize);
|
||||
dFreeCount += nSize;
|
||||
}
|
||||
@@ -1053,6 +1082,21 @@ bool AcceptToMemoryPool(CTxMemPool& pool, CValidationState &state, const CTransa
|
||||
{
|
||||
return error("AcceptToMemoryPool: : ConnectInputs failed %s", hash.ToString());
|
||||
}
|
||||
|
||||
// Check again against just the consensus-critical mandatory script
|
||||
// verification flags, in case of bugs in the standard flags that cause
|
||||
// transactions to pass as valid when they're actually invalid. For
|
||||
// instance the STRICTENC flag was incorrectly allowing certain
|
||||
// CHECKSIG NOT scripts to pass, even though they were invalid.
|
||||
//
|
||||
// There is a similar check in CreateNewBlock() to prevent creating
|
||||
// invalid blocks, however allowing such transactions into the mempool
|
||||
// can be exploited as a DoS attack.
|
||||
if (!CheckInputs(tx, state, view, true, MANDATORY_SCRIPT_VERIFY_FLAGS, true))
|
||||
{
|
||||
return error("AcceptToMemoryPool: : BUG! PLEASE REPORT THIS! ConnectInputs failed against MANDATORY but not STANDARD flags %s", hash.ToString());
|
||||
}
|
||||
|
||||
// Store transaction in memory
|
||||
pool.addUnchecked(hash, entry);
|
||||
}
|
||||
@@ -1079,6 +1123,8 @@ bool GetTransaction(const uint256 &hash, CTransaction &txOut, uint256 &hashBlock
|
||||
CDiskTxPos postx;
|
||||
if (pblocktree->ReadTxIndex(hash, postx)) {
|
||||
CAutoFile file(OpenBlockFile(postx, true), SER_DISK, CLIENT_VERSION);
|
||||
if (file.IsNull())
|
||||
return error("%s: OpenBlockFile failed", __func__);
|
||||
CBlockHeader header;
|
||||
try {
|
||||
file >> header;
|
||||
@@ -1367,8 +1413,8 @@ void UpdateCoins(const CTransaction& tx, CValidationState &state, CCoinsViewCach
|
||||
|
||||
bool CScriptCheck::operator()() {
|
||||
const CScript &scriptSig = ptxTo->vin[nIn].scriptSig;
|
||||
if (!VerifyScript(scriptSig, scriptPubKey, nFlags, CachingSignatureChecker(*ptxTo, nIn, cacheStore), &error)) {
|
||||
return ::error("CScriptCheck() : %s:%d VerifySignature failed: %s", ptxTo->GetHash().ToString(), nIn, ScriptErrorString(error));
|
||||
if (!VerifyScript(scriptSig, scriptPubKey, nFlags, CachingTransactionSignatureChecker(ptxTo, nIn, cacheStore), &error)) {
|
||||
return ::error("CScriptCheck(): %s:%d VerifySignature failed: %s", ptxTo->GetHash().ToString(), nIn, ScriptErrorString(error));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@@ -1652,6 +1698,11 @@ bool ConnectBlock(const CBlock& block, CValidationState& state, CBlockIndex* pin
|
||||
|
||||
unsigned int flags = fStrictPayToScriptHash ? SCRIPT_VERIFY_P2SH : SCRIPT_VERIFY_NONE;
|
||||
|
||||
// Start enforcing the DERSIG (BIP66) rules, for block.nVersion=3 blocks, when 75% of the network has upgraded:
|
||||
if (block.nVersion >= 3 && CBlockIndex::IsSuperMajority(3, pindex->pprev, Params().EnforceBlockUpgradeMajority())) {
|
||||
flags |= SCRIPT_VERIFY_DERSIG;
|
||||
}
|
||||
|
||||
CBlockUndo blockundo;
|
||||
|
||||
CCheckQueueControl<CScriptCheck> control(fScriptChecks && nScriptCheckThreads ? &scriptcheckqueue : NULL);
|
||||
@@ -1779,6 +1830,7 @@ enum FlushStateMode {
|
||||
bool static FlushStateToDisk(CValidationState &state, FlushStateMode mode) {
|
||||
LOCK(cs_main);
|
||||
static int64_t nLastWrite = 0;
|
||||
try {
|
||||
if ((mode == FLUSH_STATE_ALWAYS) ||
|
||||
((mode == FLUSH_STATE_PERIODIC || mode == FLUSH_STATE_IF_NEEDED) && pcoinsTip->GetCacheSize() > nCoinCacheSize) ||
|
||||
(mode == FLUSH_STATE_PERIODIC && GetTimeMicros() > nLastWrite + DATABASE_WRITE_INTERVAL * 1000000)) {
|
||||
@@ -1819,6 +1871,9 @@ bool static FlushStateToDisk(CValidationState &state, FlushStateMode mode) {
|
||||
}
|
||||
nLastWrite = GetTimeMicros();
|
||||
}
|
||||
} catch (const std::runtime_error& e) {
|
||||
return state.Abort(std::string("System error while flushing: ") + e.what());
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -2143,6 +2198,7 @@ bool ActivateBestChain(CValidationState &state, CBlock *pblock) {
|
||||
uiInterface.NotifyBlockTip(hashNewTip);
|
||||
}
|
||||
} while(pindexMostWork != chainActive.Tip());
|
||||
CheckBlockIndex();
|
||||
|
||||
// Write changes periodically to disk, after relay.
|
||||
if (!FlushStateToDisk(state, FLUSH_STATE_PERIODIC)) {
|
||||
@@ -2176,8 +2232,8 @@ bool InvalidateBlock(CValidationState& state, CBlockIndex *pindex) {
|
||||
// add them again.
|
||||
BlockMap::iterator it = mapBlockIndex.begin();
|
||||
while (it != mapBlockIndex.end()) {
|
||||
if (it->second->IsValid(BLOCK_VALID_TRANSACTIONS) && it->second->nChainTx && setBlockIndexCandidates.value_comp()(chainActive.Tip(), it->second)) {
|
||||
setBlockIndexCandidates.insert(pindex);
|
||||
if (it->second->IsValid(BLOCK_VALID_TRANSACTIONS) && it->second->nChainTx && !setBlockIndexCandidates.value_comp()(it->second, chainActive.Tip())) {
|
||||
setBlockIndexCandidates.insert(it->second);
|
||||
}
|
||||
it++;
|
||||
}
|
||||
@@ -2263,10 +2319,6 @@ bool ReceivedBlockTransactions(const CBlock &block, CValidationState& state, CBl
|
||||
pindexNew->nUndoPos = 0;
|
||||
pindexNew->nStatus |= BLOCK_HAVE_DATA;
|
||||
pindexNew->RaiseValidity(BLOCK_VALID_TRANSACTIONS);
|
||||
{
|
||||
LOCK(cs_nBlockSequenceId);
|
||||
pindexNew->nSequenceId = nBlockSequenceId++;
|
||||
}
|
||||
setDirtyBlockIndex.insert(pindexNew);
|
||||
|
||||
if (pindexNew->pprev == NULL || pindexNew->pprev->nChainTx) {
|
||||
@@ -2279,7 +2331,13 @@ bool ReceivedBlockTransactions(const CBlock &block, CValidationState& state, CBl
|
||||
CBlockIndex *pindex = queue.front();
|
||||
queue.pop_front();
|
||||
pindex->nChainTx = (pindex->pprev ? pindex->pprev->nChainTx : 0) + pindex->nTx;
|
||||
setBlockIndexCandidates.insert(pindex);
|
||||
{
|
||||
LOCK(cs_nBlockSequenceId);
|
||||
pindex->nSequenceId = nBlockSequenceId++;
|
||||
}
|
||||
if (chainActive.Tip() == NULL || !setBlockIndexCandidates.value_comp()(pindex, chainActive.Tip())) {
|
||||
setBlockIndexCandidates.insert(pindex);
|
||||
}
|
||||
std::pair<std::multimap<CBlockIndex*, CBlockIndex*>::iterator, std::multimap<CBlockIndex*, CBlockIndex*>::iterator> range = mapBlocksUnlinked.equal_range(pindex);
|
||||
while (range.first != range.second) {
|
||||
std::multimap<CBlockIndex*, CBlockIndex*>::iterator it = range.first;
|
||||
@@ -2320,8 +2378,11 @@ bool FindBlockPos(CValidationState &state, CDiskBlockPos &pos, unsigned int nAdd
|
||||
}
|
||||
|
||||
nLastBlockFile = nFile;
|
||||
vinfoBlockFile[nFile].nSize += nAddSize;
|
||||
vinfoBlockFile[nFile].AddBlock(nHeight, nTime);
|
||||
if (fKnown)
|
||||
vinfoBlockFile[nFile].nSize = std::max(pos.nPos + nAddSize, vinfoBlockFile[nFile].nSize);
|
||||
else
|
||||
vinfoBlockFile[nFile].nSize += nAddSize;
|
||||
|
||||
if (!fKnown) {
|
||||
unsigned int nOldChunks = (pos.nPos + BLOCKFILE_CHUNK_SIZE - 1) / BLOCKFILE_CHUNK_SIZE;
|
||||
@@ -2487,6 +2548,13 @@ bool ContextualCheckBlockHeader(const CBlockHeader& block, CValidationState& sta
|
||||
REJECT_OBSOLETE, "bad-version");
|
||||
}
|
||||
|
||||
// Reject block.nVersion=2 blocks when 95% (75% on testnet) of the network has upgraded:
|
||||
if (block.nVersion < 3 && CBlockIndex::IsSuperMajority(3, pindexPrev, Params().RejectBlockOutdatedMajority()))
|
||||
{
|
||||
return state.Invalid(error("%s : rejected nVersion=2 block", __func__),
|
||||
REJECT_OBSOLETE, "bad-version");
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -2542,6 +2610,8 @@ bool AcceptBlockHeader(const CBlockHeader& block, CValidationState& state, CBloc
|
||||
if (mi == mapBlockIndex.end())
|
||||
return state.DoS(10, error("%s : prev block not found", __func__), 0, "bad-prevblk");
|
||||
pindexPrev = (*mi).second;
|
||||
if (pindexPrev->nStatus & BLOCK_FAILED_MASK)
|
||||
return state.DoS(100, error("%s : prev block invalid", __func__), REJECT_INVALID, "bad-prevblk");
|
||||
}
|
||||
|
||||
if (!ContextualCheckBlockHeader(block, state, pindexPrev))
|
||||
@@ -2681,6 +2751,7 @@ bool ProcessNewBlock(CValidationState &state, CNode* pfrom, CBlock* pblock, CDis
|
||||
if (pindex && pfrom) {
|
||||
mapBlockSource[pindex->GetBlockHash()] = pfrom->GetId();
|
||||
}
|
||||
CheckBlockIndex();
|
||||
if (!ret)
|
||||
return error("%s : AcceptBlock FAILED", __func__);
|
||||
}
|
||||
@@ -2726,7 +2797,7 @@ bool AbortNode(const std::string &strMessage, const std::string &userMessage) {
|
||||
strMiscWarning = strMessage;
|
||||
LogPrintf("*** %s\n", strMessage);
|
||||
uiInterface.ThreadSafeMessageBox(
|
||||
userMessage.empty() ? _("Error: A fatal internal error occured, see debug.log for details") : userMessage,
|
||||
userMessage.empty() ? _("Error: A fatal internal error occurred, see debug.log for details") : userMessage,
|
||||
"", CClientUIInterface::MSG_ERROR);
|
||||
StartShutdown();
|
||||
return false;
|
||||
@@ -2963,6 +3034,8 @@ bool CVerifyDB::VerifyDB(CCoinsView *coinsview, int nCheckLevel, int nCheckDepth
|
||||
} else
|
||||
nGoodTransactions += block.vtx.size();
|
||||
}
|
||||
if (ShutdownRequested())
|
||||
return true;
|
||||
}
|
||||
if (pindexFailure)
|
||||
return error("VerifyDB() : *** coin database inconsistencies found (last %i blocks, %i good transactions before that)\n", chainActive.Height() - pindexFailure->nHeight + 1, nGoodTransactions);
|
||||
@@ -3146,6 +3219,149 @@ bool LoadExternalBlockFile(FILE* fileIn, CDiskBlockPos *dbp)
|
||||
return nLoaded > 0;
|
||||
}
|
||||
|
||||
void static CheckBlockIndex()
|
||||
{
|
||||
if (!fCheckBlockIndex) {
|
||||
return;
|
||||
}
|
||||
|
||||
LOCK(cs_main);
|
||||
|
||||
// During a reindex, we read the genesis block and call CheckBlockIndex before ActivateBestChain,
|
||||
// so we have the genesis block in mapBlockIndex but no active chain. (A few of the tests when
|
||||
// iterating the block tree require that chainActive has been initialized.)
|
||||
if (chainActive.Height() < 0) {
|
||||
assert(mapBlockIndex.size() <= 1);
|
||||
return;
|
||||
}
|
||||
|
||||
// Build forward-pointing map of the entire block tree.
|
||||
std::multimap<CBlockIndex*,CBlockIndex*> forward;
|
||||
for (BlockMap::iterator it = mapBlockIndex.begin(); it != mapBlockIndex.end(); it++) {
|
||||
forward.insert(std::make_pair(it->second->pprev, it->second));
|
||||
}
|
||||
|
||||
assert(forward.size() == mapBlockIndex.size());
|
||||
|
||||
std::pair<std::multimap<CBlockIndex*,CBlockIndex*>::iterator,std::multimap<CBlockIndex*,CBlockIndex*>::iterator> rangeGenesis = forward.equal_range(NULL);
|
||||
CBlockIndex *pindex = rangeGenesis.first->second;
|
||||
rangeGenesis.first++;
|
||||
assert(rangeGenesis.first == rangeGenesis.second); // There is only one index entry with parent NULL.
|
||||
|
||||
// Iterate over the entire block tree, using depth-first search.
|
||||
// Along the way, remember whether there are blocks on the path from genesis
|
||||
// block being explored which are the first to have certain properties.
|
||||
size_t nNodes = 0;
|
||||
int nHeight = 0;
|
||||
CBlockIndex* pindexFirstInvalid = NULL; // Oldest ancestor of pindex which is invalid.
|
||||
CBlockIndex* pindexFirstMissing = NULL; // Oldest ancestor of pindex which does not have BLOCK_HAVE_DATA.
|
||||
CBlockIndex* pindexFirstNotTreeValid = NULL; // Oldest ancestor of pindex which does not have BLOCK_VALID_TREE (regardless of being valid or not).
|
||||
CBlockIndex* pindexFirstNotChainValid = NULL; // Oldest ancestor of pindex which does not have BLOCK_VALID_CHAIN (regardless of being valid or not).
|
||||
CBlockIndex* pindexFirstNotScriptsValid = NULL; // Oldest ancestor of pindex which does not have BLOCK_VALID_SCRIPTS (regardless of being valid or not).
|
||||
while (pindex != NULL) {
|
||||
nNodes++;
|
||||
if (pindexFirstInvalid == NULL && pindex->nStatus & BLOCK_FAILED_VALID) pindexFirstInvalid = pindex;
|
||||
if (pindexFirstMissing == NULL && !(pindex->nStatus & BLOCK_HAVE_DATA)) pindexFirstMissing = pindex;
|
||||
if (pindex->pprev != NULL && pindexFirstNotTreeValid == NULL && (pindex->nStatus & BLOCK_VALID_MASK) < BLOCK_VALID_TREE) pindexFirstNotTreeValid = pindex;
|
||||
if (pindex->pprev != NULL && pindexFirstNotChainValid == NULL && (pindex->nStatus & BLOCK_VALID_MASK) < BLOCK_VALID_CHAIN) pindexFirstNotChainValid = pindex;
|
||||
if (pindex->pprev != NULL && pindexFirstNotScriptsValid == NULL && (pindex->nStatus & BLOCK_VALID_MASK) < BLOCK_VALID_SCRIPTS) pindexFirstNotScriptsValid = pindex;
|
||||
|
||||
// Begin: actual consistency checks.
|
||||
if (pindex->pprev == NULL) {
|
||||
// Genesis block checks.
|
||||
assert(pindex->GetBlockHash() == Params().HashGenesisBlock()); // Genesis block's hash must match.
|
||||
assert(pindex == chainActive.Genesis()); // The current active chain's genesis block must be this block.
|
||||
}
|
||||
// HAVE_DATA is equivalent to VALID_TRANSACTIONS and equivalent to nTx > 0 (we stored the number of transactions in the block)
|
||||
assert(!(pindex->nStatus & BLOCK_HAVE_DATA) == (pindex->nTx == 0));
|
||||
assert(((pindex->nStatus & BLOCK_VALID_MASK) >= BLOCK_VALID_TRANSACTIONS) == (pindex->nTx > 0));
|
||||
if (pindex->nChainTx == 0) assert(pindex->nSequenceId == 0); // nSequenceId can't be set for blocks that aren't linked
|
||||
// All parents having data is equivalent to all parents being VALID_TRANSACTIONS, which is equivalent to nChainTx being set.
|
||||
assert((pindexFirstMissing != NULL) == (pindex->nChainTx == 0)); // nChainTx == 0 is used to signal that all parent block's transaction data is available.
|
||||
assert(pindex->nHeight == nHeight); // nHeight must be consistent.
|
||||
assert(pindex->pprev == NULL || pindex->nChainWork >= pindex->pprev->nChainWork); // For every block except the genesis block, the chainwork must be larger than the parent's.
|
||||
assert(nHeight < 2 || (pindex->pskip && (pindex->pskip->nHeight < nHeight))); // The pskip pointer must point back for all but the first 2 blocks.
|
||||
assert(pindexFirstNotTreeValid == NULL); // All mapBlockIndex entries must at least be TREE valid
|
||||
if ((pindex->nStatus & BLOCK_VALID_MASK) >= BLOCK_VALID_TREE) assert(pindexFirstNotTreeValid == NULL); // TREE valid implies all parents are TREE valid
|
||||
if ((pindex->nStatus & BLOCK_VALID_MASK) >= BLOCK_VALID_CHAIN) assert(pindexFirstNotChainValid == NULL); // CHAIN valid implies all parents are CHAIN valid
|
||||
if ((pindex->nStatus & BLOCK_VALID_MASK) >= BLOCK_VALID_SCRIPTS) assert(pindexFirstNotScriptsValid == NULL); // SCRIPTS valid implies all parents are SCRIPTS valid
|
||||
if (pindexFirstInvalid == NULL) {
|
||||
// Checks for not-invalid blocks.
|
||||
assert((pindex->nStatus & BLOCK_FAILED_MASK) == 0); // The failed mask cannot be set for blocks without invalid parents.
|
||||
}
|
||||
if (!CBlockIndexWorkComparator()(pindex, chainActive.Tip()) && pindexFirstMissing == NULL) {
|
||||
if (pindexFirstInvalid == NULL) { // If this block sorts at least as good as the current tip and is valid, it must be in setBlockIndexCandidates.
|
||||
assert(setBlockIndexCandidates.count(pindex));
|
||||
}
|
||||
} else { // If this block sorts worse than the current tip, it cannot be in setBlockIndexCandidates.
|
||||
assert(setBlockIndexCandidates.count(pindex) == 0);
|
||||
}
|
||||
// Check whether this block is in mapBlocksUnlinked.
|
||||
std::pair<std::multimap<CBlockIndex*,CBlockIndex*>::iterator,std::multimap<CBlockIndex*,CBlockIndex*>::iterator> rangeUnlinked = mapBlocksUnlinked.equal_range(pindex->pprev);
|
||||
bool foundInUnlinked = false;
|
||||
while (rangeUnlinked.first != rangeUnlinked.second) {
|
||||
assert(rangeUnlinked.first->first == pindex->pprev);
|
||||
if (rangeUnlinked.first->second == pindex) {
|
||||
foundInUnlinked = true;
|
||||
break;
|
||||
}
|
||||
rangeUnlinked.first++;
|
||||
}
|
||||
if (pindex->pprev && pindex->nStatus & BLOCK_HAVE_DATA && pindexFirstMissing != NULL) {
|
||||
if (pindexFirstInvalid == NULL) { // If this block has block data available, some parent doesn't, and has no invalid parents, it must be in mapBlocksUnlinked.
|
||||
assert(foundInUnlinked);
|
||||
}
|
||||
} else { // If this block does not have block data available, or all parents do, it cannot be in mapBlocksUnlinked.
|
||||
assert(!foundInUnlinked);
|
||||
}
|
||||
// assert(pindex->GetBlockHash() == pindex->GetBlockHeader().GetHash()); // Perhaps too slow
|
||||
// End: actual consistency checks.
|
||||
|
||||
// Try descending into the first subnode.
|
||||
std::pair<std::multimap<CBlockIndex*,CBlockIndex*>::iterator,std::multimap<CBlockIndex*,CBlockIndex*>::iterator> range = forward.equal_range(pindex);
|
||||
if (range.first != range.second) {
|
||||
// A subnode was found.
|
||||
pindex = range.first->second;
|
||||
nHeight++;
|
||||
continue;
|
||||
}
|
||||
// This is a leaf node.
|
||||
// Move upwards until we reach a node of which we have not yet visited the last child.
|
||||
while (pindex) {
|
||||
// We are going to either move to a parent or a sibling of pindex.
|
||||
// If pindex was the first with a certain property, unset the corresponding variable.
|
||||
if (pindex == pindexFirstInvalid) pindexFirstInvalid = NULL;
|
||||
if (pindex == pindexFirstMissing) pindexFirstMissing = NULL;
|
||||
if (pindex == pindexFirstNotTreeValid) pindexFirstNotTreeValid = NULL;
|
||||
if (pindex == pindexFirstNotChainValid) pindexFirstNotChainValid = NULL;
|
||||
if (pindex == pindexFirstNotScriptsValid) pindexFirstNotScriptsValid = NULL;
|
||||
// Find our parent.
|
||||
CBlockIndex* pindexPar = pindex->pprev;
|
||||
// Find which child we just visited.
|
||||
std::pair<std::multimap<CBlockIndex*,CBlockIndex*>::iterator,std::multimap<CBlockIndex*,CBlockIndex*>::iterator> rangePar = forward.equal_range(pindexPar);
|
||||
while (rangePar.first->second != pindex) {
|
||||
assert(rangePar.first != rangePar.second); // Our parent must have at least the node we're coming from as child.
|
||||
rangePar.first++;
|
||||
}
|
||||
// Proceed to the next one.
|
||||
rangePar.first++;
|
||||
if (rangePar.first != rangePar.second) {
|
||||
// Move to the sibling.
|
||||
pindex = rangePar.first->second;
|
||||
break;
|
||||
} else {
|
||||
// Move up further.
|
||||
pindex = pindexPar;
|
||||
nHeight--;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Check that we actually traversed the entire map.
|
||||
assert(nNodes == forward.size());
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// CAlert
|
||||
@@ -3259,19 +3475,17 @@ void static ProcessGetData(CNode* pfrom)
|
||||
BlockMap::iterator mi = mapBlockIndex.find(inv.hash);
|
||||
if (mi != mapBlockIndex.end())
|
||||
{
|
||||
// If the requested block is at a height below our last
|
||||
// checkpoint, only serve it if it's in the checkpointed chain
|
||||
int nHeight = mi->second->nHeight;
|
||||
CBlockIndex* pcheckpoint = Checkpoints::GetLastCheckpoint();
|
||||
if (pcheckpoint && nHeight < pcheckpoint->nHeight) {
|
||||
if (!chainActive.Contains(mi->second))
|
||||
{
|
||||
LogPrintf("ProcessGetData(): ignoring request for old block that isn't in the main chain\n");
|
||||
} else {
|
||||
send = true;
|
||||
}
|
||||
} else {
|
||||
if (chainActive.Contains(mi->second)) {
|
||||
send = true;
|
||||
} else {
|
||||
// To prevent fingerprinting attacks, only send blocks outside of the active
|
||||
// chain if they are valid, and no more than a month older than the best header
|
||||
// chain we know about.
|
||||
send = mi->second->IsValid(BLOCK_VALID_SCRIPTS) && (pindexBestHeader != NULL) &&
|
||||
(mi->second->GetBlockTime() > pindexBestHeader->GetBlockTime() - 30 * 24 * 60 * 60);
|
||||
if (!send) {
|
||||
LogPrintf("ProcessGetData(): ignoring request from peer=%i for old block that isn't in the main chain\n", pfrom->GetId());
|
||||
}
|
||||
}
|
||||
}
|
||||
if (send)
|
||||
@@ -3369,7 +3583,7 @@ void static ProcessGetData(CNode* pfrom)
|
||||
bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv, int64_t nTimeReceived)
|
||||
{
|
||||
RandAddSeedPerfmon();
|
||||
LogPrint("net", "received: %s (%u bytes) peer=%d\n", strCommand, vRecv.size(), pfrom->id);
|
||||
LogPrint("net", "received: %s (%u bytes) peer=%d\n", SanitizeString(strCommand), vRecv.size(), pfrom->id);
|
||||
if (mapArgs.count("-dropmessagestest") && GetRand(atoi(mapArgs["-dropmessagestest"])) == 0)
|
||||
{
|
||||
LogPrintf("dropmessagestest DROPPING RECV MESSAGE\n");
|
||||
@@ -3509,6 +3723,12 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
|
||||
else if (strCommand == "verack")
|
||||
{
|
||||
pfrom->SetRecvVersion(min(pfrom->nVersion, PROTOCOL_VERSION));
|
||||
|
||||
// Mark this node as currently connected, so we update its timestamp later.
|
||||
if (pfrom->fNetworkNode) {
|
||||
LOCK(cs_main);
|
||||
State(pfrom->GetId())->fCurrentlyConnected = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -3618,7 +3838,9 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
|
||||
// doing this will result in the received block being rejected as an orphan in case it is
|
||||
// not a direct successor.
|
||||
pfrom->PushMessage("getheaders", chainActive.GetLocator(pindexBestHeader), inv.hash);
|
||||
if (chainActive.Tip()->GetBlockTime() > GetAdjustedTime() - Params().TargetSpacing() * 20) {
|
||||
CNodeState *nodestate = State(pfrom->GetId());
|
||||
if (chainActive.Tip()->GetBlockTime() > GetAdjustedTime() - Params().TargetSpacing() * 20 &&
|
||||
nodestate->nBlocksInFlight < MAX_BLOCKS_IN_TRANSIT_PER_PEER) {
|
||||
vToFetch.push_back(inv);
|
||||
// Mark block as in flight already, even though the actual "getdata" message only goes out
|
||||
// later (within the same cs_main lock, though).
|
||||
@@ -3896,6 +4118,8 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
|
||||
LogPrint("net", "more getheaders (%d) to end to peer=%d (startheight:%d)\n", pindexLast->nHeight, pfrom->id, pfrom->nStartingHeight);
|
||||
pfrom->PushMessage("getheaders", chainActive.GetLocator(pindexLast), uint256(0));
|
||||
}
|
||||
|
||||
CheckBlockIndex();
|
||||
}
|
||||
|
||||
else if (strCommand == "block" && !fImporting && !fReindex) // Ignore blocks received while importing
|
||||
@@ -3923,7 +4147,12 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
|
||||
}
|
||||
|
||||
|
||||
else if (strCommand == "getaddr")
|
||||
// This asymmetric behavior for inbound and outbound connections was introduced
|
||||
// to prevent a fingerprinting attack: an attacker can send specific fake addresses
|
||||
// to users' AddrMan and later request them by sending getaddr messages.
|
||||
// Making users (which are behind NAT and can only make outgoing connections) ignore
|
||||
// getaddr message mitigates the attack.
|
||||
else if ((strCommand == "getaddr") && (pfrom->fInbound))
|
||||
{
|
||||
pfrom->vAddrToSend.clear();
|
||||
vector<CAddress> vAddr = addrman.GetAddr();
|
||||
@@ -4036,7 +4265,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
|
||||
}
|
||||
|
||||
|
||||
else if (strCommand == "alert")
|
||||
else if (fAlerts && strCommand == "alert")
|
||||
{
|
||||
CAlert alert;
|
||||
vRecv >> alert;
|
||||
@@ -4146,11 +4375,6 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
|
||||
}
|
||||
|
||||
|
||||
// Update the last seen time for this node's address
|
||||
if (pfrom->fNetworkNode)
|
||||
if (strCommand == "version" || strCommand == "addr" || strCommand == "inv" || strCommand == "getdata" || strCommand == "ping")
|
||||
AddressCurrentlyConnected(pfrom->addr);
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -4200,7 +4424,7 @@ bool ProcessMessages(CNode* pfrom)
|
||||
|
||||
// Scan for message start
|
||||
if (memcmp(msg.hdr.pchMessageStart, Params().MessageStart(), MESSAGE_START_SIZE) != 0) {
|
||||
LogPrintf("PROCESSMESSAGE: INVALID MESSAGESTART %s peer=%d\n", msg.hdr.GetCommand(), pfrom->id);
|
||||
LogPrintf("PROCESSMESSAGE: INVALID MESSAGESTART %s peer=%d\n", SanitizeString(msg.hdr.GetCommand()), pfrom->id);
|
||||
fOk = false;
|
||||
break;
|
||||
}
|
||||
@@ -4209,7 +4433,7 @@ bool ProcessMessages(CNode* pfrom)
|
||||
CMessageHeader& hdr = msg.hdr;
|
||||
if (!hdr.IsValid())
|
||||
{
|
||||
LogPrintf("PROCESSMESSAGE: ERRORS IN HEADER %s peer=%d\n", hdr.GetCommand(), pfrom->id);
|
||||
LogPrintf("PROCESSMESSAGE: ERRORS IN HEADER %s peer=%d\n", SanitizeString(hdr.GetCommand()), pfrom->id);
|
||||
continue;
|
||||
}
|
||||
string strCommand = hdr.GetCommand();
|
||||
@@ -4224,8 +4448,8 @@ bool ProcessMessages(CNode* pfrom)
|
||||
memcpy(&nChecksum, &hash, sizeof(nChecksum));
|
||||
if (nChecksum != hdr.nChecksum)
|
||||
{
|
||||
LogPrintf("ProcessMessages(%s, %u bytes) : CHECKSUM ERROR nChecksum=%08x hdr.nChecksum=%08x\n",
|
||||
strCommand, nMessageSize, nChecksum, hdr.nChecksum);
|
||||
LogPrintf("ProcessMessages(%s, %u bytes): CHECKSUM ERROR nChecksum=%08x hdr.nChecksum=%08x\n",
|
||||
SanitizeString(strCommand), nMessageSize, nChecksum, hdr.nChecksum);
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -4242,12 +4466,12 @@ bool ProcessMessages(CNode* pfrom)
|
||||
if (strstr(e.what(), "end of data"))
|
||||
{
|
||||
// Allow exceptions from under-length message on vRecv
|
||||
LogPrintf("ProcessMessages(%s, %u bytes) : Exception '%s' caught, normally caused by a message being shorter than its stated length\n", strCommand, nMessageSize, e.what());
|
||||
LogPrintf("ProcessMessages(%s, %u bytes): Exception '%s' caught, normally caused by a message being shorter than its stated length\n", SanitizeString(strCommand), nMessageSize, e.what());
|
||||
}
|
||||
else if (strstr(e.what(), "size too large"))
|
||||
{
|
||||
// Allow exceptions from over-long size
|
||||
LogPrintf("ProcessMessages(%s, %u bytes) : Exception '%s' caught\n", strCommand, nMessageSize, e.what());
|
||||
LogPrintf("ProcessMessages(%s, %u bytes): Exception '%s' caught\n", SanitizeString(strCommand), nMessageSize, e.what());
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -4264,7 +4488,7 @@ bool ProcessMessages(CNode* pfrom)
|
||||
}
|
||||
|
||||
if (!fRet)
|
||||
LogPrintf("ProcessMessage(%s, %u bytes) FAILED peer=%d\n", strCommand, nMessageSize, pfrom->id);
|
||||
LogPrintf("ProcessMessage(%s, %u bytes) FAILED peer=%d\n", SanitizeString(strCommand), nMessageSize, pfrom->id);
|
||||
|
||||
break;
|
||||
}
|
||||
@@ -4461,6 +4685,15 @@ bool SendMessages(CNode* pto, bool fSendTrickle)
|
||||
LogPrintf("Peer=%d is stalling block download, disconnecting\n", pto->id);
|
||||
pto->fDisconnect = true;
|
||||
}
|
||||
// In case there is a block that has been in flight from this peer for (2 + 0.5 * N) times the block interval
|
||||
// (with N the number of validated blocks that were in flight at the time it was requested), disconnect due to
|
||||
// timeout. We compensate for in-flight blocks to prevent killing off peers due to our own downstream link
|
||||
// being saturated. We only count validated in-flight blocks so peers can't advertize nonexisting block hashes
|
||||
// to unreasonably increase our timeout.
|
||||
if (!pto->fDisconnect && state.vBlocksInFlight.size() > 0 && state.vBlocksInFlight.front().nTime < nNow - 500000 * Params().TargetSpacing() * (4 + state.vBlocksInFlight.front().nValidatedQueuedBefore)) {
|
||||
LogPrintf("Timeout downloading block %s from peer=%d, disconnecting\n", state.vBlocksInFlight.front().hash.ToString(), pto->id);
|
||||
pto->fDisconnect = true;
|
||||
}
|
||||
|
||||
//
|
||||
// Message: getdata (blocks)
|
||||
|
||||
13
src/main.h
13
src/main.h
@@ -54,6 +54,8 @@ static const unsigned int DEFAULT_BLOCK_MAX_SIZE = 750000;
|
||||
static const unsigned int DEFAULT_BLOCK_MIN_SIZE = 0;
|
||||
/** Default for -blockprioritysize, maximum space for zero/low-fee transactions **/
|
||||
static const unsigned int DEFAULT_BLOCK_PRIORITY_SIZE = 50000;
|
||||
/** Default for accepting alerts from the P2P network. */
|
||||
static const bool DEFAULT_ALERTS = true;
|
||||
/** The maximum size for transactions we're willing to relay/mine */
|
||||
static const unsigned int MAX_STANDARD_TX_SIZE = 100000;
|
||||
/** The maximum allowed number of signature check operations in a block (network rule) */
|
||||
@@ -64,8 +66,6 @@ static const unsigned int MAX_P2SH_SIGOPS = 15;
|
||||
static const unsigned int MAX_TX_SIGOPS = MAX_BLOCK_SIGOPS/5;
|
||||
/** Default for -maxorphantx, maximum number of orphan transactions kept in memory */
|
||||
static const unsigned int DEFAULT_MAX_ORPHAN_TRANSACTIONS = 100;
|
||||
/** Default for -maxorphanblocks, maximum number of orphan blocks kept in memory */
|
||||
static const unsigned int DEFAULT_MAX_ORPHAN_BLOCKS = 750;
|
||||
/** The maximum size of a blk?????.dat file (since 0.8) */
|
||||
static const unsigned int MAX_BLOCKFILE_SIZE = 0x8000000; // 128 MiB
|
||||
/** The pre-allocation chunk size for blk?????.dat files (since 0.8) */
|
||||
@@ -128,8 +128,10 @@ extern bool fReindex;
|
||||
extern int nScriptCheckThreads;
|
||||
extern bool fTxIndex;
|
||||
extern bool fIsBareMultisigStd;
|
||||
extern bool fCheckBlockIndex;
|
||||
extern unsigned int nCoinCacheSize;
|
||||
extern CFeeRate minRelayTxFee;
|
||||
extern bool fAlerts;
|
||||
|
||||
/** Best header we've seen so far (used for getheaders queries' starting points). */
|
||||
extern CBlockIndex *pindexBestHeader;
|
||||
@@ -181,7 +183,12 @@ bool LoadBlockIndex();
|
||||
void UnloadBlockIndex();
|
||||
/** Process protocol messages received from a given node */
|
||||
bool ProcessMessages(CNode* pfrom);
|
||||
/** Send queued protocol messages to be sent to a give node */
|
||||
/**
|
||||
* Send queued protocol messages to be sent to a give node.
|
||||
*
|
||||
* @param[in] pto The node which we are sending messages to.
|
||||
* @param[in] fSendTrickle When true send the trickled data, otherwise trickle the data until true.
|
||||
*/
|
||||
bool SendMessages(CNode* pto, bool fSendTrickle);
|
||||
/** Run an instance of the script checking thread */
|
||||
void ThreadScriptCheck();
|
||||
|
||||
@@ -139,7 +139,7 @@ uint256 CPartialMerkleTree::ExtractMatches(std::vector<uint256> &vMatch) {
|
||||
// traverse the partial tree
|
||||
unsigned int nBitsUsed = 0, nHashUsed = 0;
|
||||
uint256 hashMerkleRoot = TraverseAndExtract(nHeight, 0, nBitsUsed, nHashUsed, vMatch);
|
||||
// verify that no problems occured during the tree traversal
|
||||
// verify that no problems occurred during the tree traversal
|
||||
if (fBad)
|
||||
return 0;
|
||||
// verify that all bits were consumed (except for the padding caused by serializing it as a byte sequence)
|
||||
|
||||
@@ -456,8 +456,16 @@ void static BitcoinMiner(CWallet *pwallet)
|
||||
if (Params().MiningRequiresPeers()) {
|
||||
// Busy-wait for the network to come online so we don't waste time mining
|
||||
// on an obsolete chain. In regtest mode we expect to fly solo.
|
||||
while (vNodes.empty())
|
||||
do {
|
||||
bool fvNodesEmpty;
|
||||
{
|
||||
LOCK(cs_vNodes);
|
||||
fvNodesEmpty = vNodes.empty();
|
||||
}
|
||||
if (!fvNodesEmpty && !IsInitialBlockDownload())
|
||||
break;
|
||||
MilliSleep(1000);
|
||||
} while (true);
|
||||
}
|
||||
|
||||
//
|
||||
@@ -570,6 +578,11 @@ void static BitcoinMiner(CWallet *pwallet)
|
||||
LogPrintf("BitcoinMiner terminated\n");
|
||||
throw;
|
||||
}
|
||||
catch (const std::runtime_error &e)
|
||||
{
|
||||
LogPrintf("BitcoinMiner runtime error: %s\n", e.what());
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
void GenerateBitcoins(bool fGenerate, CWallet* pwallet, int nThreads)
|
||||
|
||||
41
src/net.cpp
41
src/net.cpp
@@ -403,6 +403,12 @@ CNode* ConnectNode(CAddress addrConnect, const char *pszDest)
|
||||
if (pszDest ? ConnectSocketByName(addrConnect, hSocket, pszDest, Params().GetDefaultPort(), nConnectTimeout, &proxyConnectionFailed) :
|
||||
ConnectSocket(addrConnect, hSocket, nConnectTimeout, &proxyConnectionFailed))
|
||||
{
|
||||
if (!IsSelectableSocket(hSocket)) {
|
||||
LogPrintf("Cannot create connection: non-selectable socket created (fd >= FD_SETSIZE ?)\n");
|
||||
CloseSocket(hSocket);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
addrman.Attempt(addrConnect);
|
||||
|
||||
// Add node
|
||||
@@ -574,6 +580,11 @@ bool CNode::ReceiveMsgBytes(const char *pch, unsigned int nBytes)
|
||||
if (handled < 0)
|
||||
return false;
|
||||
|
||||
if (msg.in_data && msg.hdr.nMessageSize > MAX_PROTOCOL_MESSAGE_LENGTH) {
|
||||
LogPrint("net", "Oversized message from peer=%i, disconnecting\n", GetId());
|
||||
return false;
|
||||
}
|
||||
|
||||
pch += handled;
|
||||
nBytes -= handled;
|
||||
|
||||
@@ -866,8 +877,14 @@ void ThreadSocketHandler()
|
||||
if (nErr != WSAEWOULDBLOCK)
|
||||
LogPrintf("socket error accept failed: %s\n", NetworkErrorString(nErr));
|
||||
}
|
||||
else if (!IsSelectableSocket(hSocket))
|
||||
{
|
||||
LogPrintf("connection from %s dropped: non-selectable socket\n", addr.ToString());
|
||||
CloseSocket(hSocket);
|
||||
}
|
||||
else if (nInbound >= nMaxConnections - MAX_OUTBOUND_CONNECTIONS)
|
||||
{
|
||||
LogPrint("net", "connection from %s dropped (full)\n", addr.ToString());
|
||||
CloseSocket(hSocket);
|
||||
}
|
||||
else if (CNode::IsBanned(addr) && !whitelisted)
|
||||
@@ -1015,10 +1032,14 @@ void ThreadMapPort()
|
||||
#ifndef UPNPDISCOVER_SUCCESS
|
||||
/* miniupnpc 1.5 */
|
||||
devlist = upnpDiscover(2000, multicastif, minissdpdpath, 0);
|
||||
#else
|
||||
#elif MINIUPNPC_API_VERSION < 14
|
||||
/* miniupnpc 1.6 */
|
||||
int error = 0;
|
||||
devlist = upnpDiscover(2000, multicastif, minissdpdpath, 0, 0, &error);
|
||||
#else
|
||||
/* miniupnpc 1.9.20150730 */
|
||||
int error = 0;
|
||||
devlist = upnpDiscover(2000, multicastif, minissdpdpath, 0, 0, 2, &error);
|
||||
#endif
|
||||
|
||||
struct UPNPUrls urls;
|
||||
@@ -1266,8 +1287,7 @@ void ThreadOpenConnections()
|
||||
int nTries = 0;
|
||||
while (true)
|
||||
{
|
||||
// use an nUnkBias between 10 (no outgoing connections) and 90 (8 outgoing connections)
|
||||
CAddress addr = addrman.Select(10 + min(nOutbound,8)*10);
|
||||
CAddress addr = addrman.Select();
|
||||
|
||||
// if we selected an invalid address, restart
|
||||
if (!addr.IsValid() || setConnected.count(addr.GetGroup()) || IsLocal(addr))
|
||||
@@ -1451,7 +1471,7 @@ void ThreadMessageHandler()
|
||||
{
|
||||
TRY_LOCK(pnode->cs_vSend, lockSend);
|
||||
if (lockSend)
|
||||
g_signals.SendMessages(pnode, pnode == pnodeTrickle);
|
||||
g_signals.SendMessages(pnode, pnode == pnodeTrickle || pnode->fWhitelisted);
|
||||
}
|
||||
boost::this_thread::interruption_point();
|
||||
}
|
||||
@@ -1494,6 +1514,13 @@ bool BindListenPort(const CService &addrBind, string& strError, bool fWhiteliste
|
||||
LogPrintf("%s\n", strError);
|
||||
return false;
|
||||
}
|
||||
if (!IsSelectableSocket(hListenSocket))
|
||||
{
|
||||
strError = "Error: Couldn't create a listenable socket for incoming connections";
|
||||
LogPrintf("%s\n", strError);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
#ifndef WIN32
|
||||
#ifdef SO_NOSIGPIPE
|
||||
@@ -1501,8 +1528,10 @@ bool BindListenPort(const CService &addrBind, string& strError, bool fWhiteliste
|
||||
setsockopt(hListenSocket, SOL_SOCKET, SO_NOSIGPIPE, (void*)&nOne, sizeof(int));
|
||||
#endif
|
||||
// Allow binding if the port is still in TIME_WAIT state after
|
||||
// the program was closed and restarted. Not an issue on windows!
|
||||
// the program was closed and restarted.
|
||||
setsockopt(hListenSocket, SOL_SOCKET, SO_REUSEADDR, (void*)&nOne, sizeof(int));
|
||||
#else
|
||||
setsockopt(hListenSocket, SOL_SOCKET, SO_REUSEADDR, (const char*)&nOne, sizeof(int));
|
||||
#endif
|
||||
|
||||
// Set to non-blocking, incoming connections will also inherit this
|
||||
@@ -2021,7 +2050,7 @@ void CNode::BeginMessage(const char* pszCommand) EXCLUSIVE_LOCK_FUNCTION(cs_vSen
|
||||
ENTER_CRITICAL_SECTION(cs_vSend);
|
||||
assert(ssSend.size() == 0);
|
||||
ssSend << CMessageHeader(pszCommand, 0);
|
||||
LogPrint("net", "sending: %s ", pszCommand);
|
||||
LogPrint("net", "sending: %s ", SanitizeString(pszCommand));
|
||||
}
|
||||
|
||||
void CNode::AbortMessage() UNLOCK_FUNCTION(cs_vSend)
|
||||
|
||||
@@ -46,6 +46,8 @@ static const int TIMEOUT_INTERVAL = 20 * 60;
|
||||
static const unsigned int MAX_INV_SZ = 50000;
|
||||
/** The maximum number of new addresses to accumulate before announcing. */
|
||||
static const unsigned int MAX_ADDR_TO_SEND = 1000;
|
||||
/** Maximum length of incoming protocol messages (no message over 2 MiB is currently acceptable). */
|
||||
static const unsigned int MAX_PROTOCOL_MESSAGE_LENGTH = 2 * 1024 * 1024;
|
||||
/** -listen default */
|
||||
static const bool DEFAULT_LISTEN = true;
|
||||
/** -upnp default */
|
||||
|
||||
@@ -267,6 +267,9 @@ bool static InterruptibleRecv(char* data, size_t len, int timeout, SOCKET& hSock
|
||||
} else { // Other error or blocking
|
||||
int nErr = WSAGetLastError();
|
||||
if (nErr == WSAEINPROGRESS || nErr == WSAEWOULDBLOCK || nErr == WSAEINVAL) {
|
||||
if (!IsSelectableSocket(hSocket)) {
|
||||
return false;
|
||||
}
|
||||
struct timeval tval = MillisToTimeval(std::min(endTime - curTime, maxWait));
|
||||
fd_set fdset;
|
||||
FD_ZERO(&fdset);
|
||||
@@ -944,7 +947,7 @@ std::vector<unsigned char> CNetAddr::GetGroup() const
|
||||
nBits -= 8;
|
||||
}
|
||||
if (nBits > 0)
|
||||
vchRet.push_back(GetByte(15 - nStartByte) | ((1 << nBits) - 1));
|
||||
vchRet.push_back(GetByte(15 - nStartByte) | ((1 << (8 - nBits)) - 1));
|
||||
|
||||
return vchRet;
|
||||
}
|
||||
@@ -1214,15 +1217,15 @@ CSubNet::CSubNet(const std::string &strSubnet, bool fAllowLookup)
|
||||
std::string strNetmask = strSubnet.substr(slash + 1);
|
||||
int32_t n;
|
||||
// IPv4 addresses start at offset 12, and first 12 bytes must match, so just offset n
|
||||
int noffset = network.IsIPv4() ? (12 * 8) : 0;
|
||||
const int astartofs = network.IsIPv4() ? 12 : 0;
|
||||
if (ParseInt32(strNetmask, &n)) // If valid number, assume /24 symtex
|
||||
{
|
||||
if(n >= 0 && n <= (128 - noffset)) // Only valid if in range of bits of address
|
||||
if(n >= 0 && n <= (128 - astartofs*8)) // Only valid if in range of bits of address
|
||||
{
|
||||
n += noffset;
|
||||
n += astartofs*8;
|
||||
// Clear bits [n..127]
|
||||
for (; n < 128; ++n)
|
||||
netmask[n>>3] &= ~(1<<(n&7));
|
||||
netmask[n>>3] &= ~(1<<(7-(n&7)));
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1233,12 +1236,10 @@ CSubNet::CSubNet(const std::string &strSubnet, bool fAllowLookup)
|
||||
{
|
||||
if (LookupHost(strNetmask.c_str(), vIP, 1, false)) // Never allow lookup for netmask
|
||||
{
|
||||
// Remember: GetByte returns bytes in reversed order
|
||||
// Copy only the *last* four bytes in case of IPv4, the rest of the mask should stay 1's as
|
||||
// we don't want pchIPv4 to be part of the mask.
|
||||
int asize = network.IsIPv4() ? 4 : 16;
|
||||
for(int x=0; x<asize; ++x)
|
||||
netmask[15-x] = vIP[0].GetByte(x);
|
||||
for(int x=astartofs; x<16; ++x)
|
||||
netmask[x] = vIP[0].ip[x];
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1251,6 +1252,10 @@ CSubNet::CSubNet(const std::string &strSubnet, bool fAllowLookup)
|
||||
{
|
||||
valid = false;
|
||||
}
|
||||
|
||||
// Normalize network according to netmask
|
||||
for(int x=0; x<16; ++x)
|
||||
network.ip[x] &= netmask[x];
|
||||
}
|
||||
|
||||
bool CSubNet::Match(const CNetAddr &addr) const
|
||||
@@ -1258,7 +1263,7 @@ bool CSubNet::Match(const CNetAddr &addr) const
|
||||
if (!valid || !addr.IsValid())
|
||||
return false;
|
||||
for(int x=0; x<16; ++x)
|
||||
if ((addr.GetByte(x) & netmask[15-x]) != network.GetByte(x))
|
||||
if ((addr.ip[x] & netmask[x]) != network.ip[x])
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -100,6 +100,8 @@ class CNetAddr
|
||||
inline void SerializationOp(Stream& s, Operation ser_action, int nType, int nVersion) {
|
||||
READWRITE(FLATDATA(ip));
|
||||
}
|
||||
|
||||
friend class CSubNet;
|
||||
};
|
||||
|
||||
class CSubNet
|
||||
|
||||
@@ -24,7 +24,7 @@ class CBlockHeader
|
||||
{
|
||||
public:
|
||||
// header
|
||||
static const int32_t CURRENT_VERSION=2;
|
||||
static const int32_t CURRENT_VERSION=3;
|
||||
int32_t nVersion;
|
||||
uint256 hashPrevBlock;
|
||||
uint256 hashMerkleRoot;
|
||||
|
||||
@@ -40,7 +40,7 @@ CMessageHeader::CMessageHeader(const char* pszCommand, unsigned int nMessageSize
|
||||
|
||||
std::string CMessageHeader::GetCommand() const
|
||||
{
|
||||
return std::string(pchCommand, pchCommand + strnlen(pchCommand, COMMAND_SIZE));
|
||||
return std::string(pchCommand, pchCommand + strnlen_int(pchCommand, COMMAND_SIZE));
|
||||
}
|
||||
|
||||
bool CMessageHeader::IsValid() const
|
||||
|
||||
@@ -89,17 +89,9 @@ static std::string Translate(const char* psz)
|
||||
return QCoreApplication::translate("bitcoin-core", psz).toStdString();
|
||||
}
|
||||
|
||||
/** Set up translations */
|
||||
static void initTranslations(QTranslator &qtTranslatorBase, QTranslator &qtTranslator, QTranslator &translatorBase, QTranslator &translator)
|
||||
static QString GetLangTerritory()
|
||||
{
|
||||
QSettings settings;
|
||||
|
||||
// Remove old translators
|
||||
QApplication::removeTranslator(&qtTranslatorBase);
|
||||
QApplication::removeTranslator(&qtTranslator);
|
||||
QApplication::removeTranslator(&translatorBase);
|
||||
QApplication::removeTranslator(&translator);
|
||||
|
||||
// Get desired locale (e.g. "de_DE")
|
||||
// 1) System default language
|
||||
QString lang_territory = QLocale::system().name();
|
||||
@@ -109,6 +101,22 @@ static void initTranslations(QTranslator &qtTranslatorBase, QTranslator &qtTrans
|
||||
lang_territory = lang_territory_qsettings;
|
||||
// 3) -lang command line argument
|
||||
lang_territory = QString::fromStdString(GetArg("-lang", lang_territory.toStdString()));
|
||||
return lang_territory;
|
||||
}
|
||||
|
||||
/** Set up translations */
|
||||
static void initTranslations(QTranslator &qtTranslatorBase, QTranslator &qtTranslator, QTranslator &translatorBase, QTranslator &translator)
|
||||
{
|
||||
|
||||
// Remove old translators
|
||||
QApplication::removeTranslator(&qtTranslatorBase);
|
||||
QApplication::removeTranslator(&qtTranslator);
|
||||
QApplication::removeTranslator(&translatorBase);
|
||||
QApplication::removeTranslator(&translator);
|
||||
|
||||
// Get desired locale (e.g. "de_DE")
|
||||
// 1) System default language
|
||||
QString lang_territory = GetLangTerritory();
|
||||
|
||||
// Convert to "de" only by truncating "_DE"
|
||||
QString lang = lang_territory;
|
||||
@@ -498,8 +506,6 @@ int main(int argc, char *argv[])
|
||||
Q_INIT_RESOURCE(bitcoin);
|
||||
Q_INIT_RESOURCE(bitcoin_locale);
|
||||
|
||||
GUIUtil::SubstituteFonts();
|
||||
|
||||
BitcoinApplication app(argc, argv);
|
||||
#if QT_VERSION > 0x050100
|
||||
// Generate high-dpi pixmaps
|
||||
@@ -521,6 +527,7 @@ int main(int argc, char *argv[])
|
||||
QApplication::setOrganizationName(QAPP_ORG_NAME);
|
||||
QApplication::setOrganizationDomain(QAPP_ORG_DOMAIN);
|
||||
QApplication::setApplicationName(QAPP_APP_NAME_DEFAULT);
|
||||
GUIUtil::SubstituteFonts(GetLangTerritory());
|
||||
|
||||
/// 4. Initialization of translations, so that intro dialog is in user's language
|
||||
// Now that QSettings are accessible, initialize translations
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
class AmountSpinBox: public QAbstractSpinBox
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit AmountSpinBox(QWidget *parent):
|
||||
QAbstractSpinBox(parent),
|
||||
@@ -72,23 +73,6 @@ public:
|
||||
setValue(val);
|
||||
}
|
||||
|
||||
StepEnabled stepEnabled() const
|
||||
{
|
||||
StepEnabled rv = 0;
|
||||
if(text().isEmpty()) // Allow step-up with empty field
|
||||
return StepUpEnabled;
|
||||
bool valid = false;
|
||||
CAmount val = value(&valid);
|
||||
if(valid)
|
||||
{
|
||||
if(val > 0)
|
||||
rv |= StepDownEnabled;
|
||||
if(val < BitcoinUnits::maxMoney())
|
||||
rv |= StepUpEnabled;
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
|
||||
void setDisplayUnit(int unit)
|
||||
{
|
||||
bool valid = false;
|
||||
@@ -139,6 +123,7 @@ public:
|
||||
}
|
||||
return cachedMinimumSizeHint;
|
||||
}
|
||||
|
||||
private:
|
||||
int currentUnit;
|
||||
CAmount singleStep;
|
||||
@@ -179,6 +164,25 @@ protected:
|
||||
return QAbstractSpinBox::event(event);
|
||||
}
|
||||
|
||||
StepEnabled stepEnabled() const
|
||||
{
|
||||
StepEnabled rv = 0;
|
||||
if (isReadOnly()) // Disable steps when AmountSpinBox is read-only
|
||||
return StepNone;
|
||||
if(text().isEmpty()) // Allow step-up with empty field
|
||||
return StepUpEnabled;
|
||||
bool valid = false;
|
||||
CAmount val = value(&valid);
|
||||
if(valid)
|
||||
{
|
||||
if(val > 0)
|
||||
rv |= StepDownEnabled;
|
||||
if(val < BitcoinUnits::maxMoney())
|
||||
rv |= StepUpEnabled;
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
|
||||
signals:
|
||||
void valueChanged();
|
||||
};
|
||||
|
||||
@@ -232,7 +232,7 @@ BitcoinGUI::~BitcoinGUI()
|
||||
trayIcon->hide();
|
||||
#ifdef Q_OS_MAC
|
||||
delete appMenuBar;
|
||||
MacDockIconHandler::instance()->setMainWindow(NULL);
|
||||
MacDockIconHandler::cleanup();
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -325,6 +325,7 @@ void BitcoinGUI::createActions(const NetworkStyle *networkStyle)
|
||||
openAction->setStatusTip(tr("Open a bitcoin: URI or payment request"));
|
||||
|
||||
showHelpMessageAction = new QAction(QApplication::style()->standardIcon(QStyle::SP_MessageBoxInformation), tr("&Command-line options"), this);
|
||||
showHelpMessageAction->setMenuRole(QAction::NoRole);
|
||||
showHelpMessageAction->setStatusTip(tr("Show the Bitcoin Core help message to get a list with possible Bitcoin command-line options"));
|
||||
|
||||
connect(quitAction, SIGNAL(triggered()), qApp, SLOT(quit()));
|
||||
|
||||
@@ -10,18 +10,6 @@
|
||||
#endif
|
||||
static const char UNUSED *bitcoin_strings[] = {
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", ""
|
||||
"%s, you must set a rpcpassword in the configuration file:\n"
|
||||
"%s\n"
|
||||
"It is recommended you use the following random password:\n"
|
||||
"rpcuser=bitcoinrpc\n"
|
||||
"rpcpassword=%s\n"
|
||||
"(you do not need to remember this password)\n"
|
||||
"The username and password MUST NOT be the same.\n"
|
||||
"If the file does not exist, create it with owner-readable-only file "
|
||||
"permissions.\n"
|
||||
"It is also recommended to set alertnotify so you are notified of problems;\n"
|
||||
"for example: alertnotify=echo %%s | mail -s \"Bitcoin Alert\" admin@foo.com\n"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", ""
|
||||
"(1 = keep tx meta data e.g. account owner and payment request information, 2 "
|
||||
"= drop tx meta data)"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", ""
|
||||
@@ -62,13 +50,6 @@ QT_TRANSLATE_NOOP("bitcoin-core", ""
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", ""
|
||||
"Error: Listening for incoming connections failed (listen returned error %s)"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", ""
|
||||
"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."),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", ""
|
||||
"Error: This transaction requires a transaction fee of at least %s because of "
|
||||
"its amount, complexity, or use of recently received funds!"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", ""
|
||||
"Error: Unsupported argument -socks found. Setting SOCKS version isn't "
|
||||
"possible anymore, only SOCKS5 proxies are supported."),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", ""
|
||||
@@ -92,12 +73,15 @@ QT_TRANSLATE_NOOP("bitcoin-core", ""
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", ""
|
||||
"How thorough the block verification of -checkblocks is (0-4, default: %u)"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", ""
|
||||
"If paytxfee is not set, include enough fee so transactions are confirmed on "
|
||||
"average within n blocks (default: %u)"),
|
||||
"If paytxfee is not set, include enough fee so transactions begin "
|
||||
"confirmation on average within n blocks (default: %u)"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", ""
|
||||
"In this mode -genproclimit controls how many blocks are generated "
|
||||
"immediately."),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", ""
|
||||
"Invalid amount for -maxtxfee=<amount>: '%s' (must be at least the minrelay "
|
||||
"fee of %s to prevent stuck transactions)"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", ""
|
||||
"Log transaction priority and fee per kB when mining blocks (default: %u)"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", ""
|
||||
"Maintain a full transaction index, used by the getrawtransaction rpc call "
|
||||
@@ -106,6 +90,9 @@ QT_TRANSLATE_NOOP("bitcoin-core", ""
|
||||
"Maximum size of data in data carrier transactions we relay and mine "
|
||||
"(default: %u)"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", ""
|
||||
"Maximum total fees to use in a single wallet transaction, setting too low "
|
||||
"may abort large transactions (default: %s)"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", ""
|
||||
"Number of seconds to keep misbehaving peers from reconnecting (default: %u)"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", ""
|
||||
"Output debugging information (default: %u, supplying <category> is optional)"),
|
||||
@@ -113,6 +100,8 @@ QT_TRANSLATE_NOOP("bitcoin-core", ""
|
||||
"Query for peer addresses via DNS lookup, if low on addresses (default: 1 "
|
||||
"unless -connect)"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", ""
|
||||
"Require high priority for relaying free or low-fee transactions (default:%u)"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", ""
|
||||
"Set maximum size of high-priority/low-fee transactions in bytes (default: %d)"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", ""
|
||||
"Set the number of script verification threads (%u to %d, 0 = auto, <0 = "
|
||||
@@ -128,12 +117,28 @@ QT_TRANSLATE_NOOP("bitcoin-core", ""
|
||||
"the OpenSSL Toolkit <https://www.openssl.org/> and cryptographic software "
|
||||
"written by Eric Young and UPnP software written by Thomas Bernard."),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", ""
|
||||
"To use bitcoind, or the -server option to bitcoin-qt, you must set an "
|
||||
"rpcpassword in the configuration file:\n"
|
||||
"%s\n"
|
||||
"It is recommended you use the following random password:\n"
|
||||
"rpcuser=bitcoinrpc\n"
|
||||
"rpcpassword=%s\n"
|
||||
"(you do not need to remember this password)\n"
|
||||
"The username and password MUST NOT be the same.\n"
|
||||
"If the file does not exist, create it with owner-readable-only file "
|
||||
"permissions.\n"
|
||||
"It is also recommended to set alertnotify so you are notified of problems;\n"
|
||||
"for example: alertnotify=echo %%s | mail -s \"Bitcoin Alert\" admin@foo.com\n"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", ""
|
||||
"Unable to bind to %s on this computer. Bitcoin Core is probably already "
|
||||
"running."),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", ""
|
||||
"Use separate SOCKS5 proxy to reach peers via Tor hidden services (default: "
|
||||
"%s)"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", ""
|
||||
"Warning: -maxtxfee is set very high! Fees this large could be paid on a "
|
||||
"single transaction."),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", ""
|
||||
"Warning: -paytxfee is set very high! This is the transaction fee you will "
|
||||
"pay if you send a transaction."),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", ""
|
||||
@@ -163,6 +168,7 @@ QT_TRANSLATE_NOOP("bitcoin-core", "(default: 1)"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "<category> can be:"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Accept command line and JSON-RPC commands"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Accept connections from outside (default: 1 if no -proxy or -connect)"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Accept public REST requests (default: %u)"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Acceptable ciphers (default: %s)"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Add a node to connect to and attempt to keep the connection open"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Allow DNS lookups for -addnode, -seednode and -connect"),
|
||||
@@ -194,11 +200,11 @@ QT_TRANSLATE_NOOP("bitcoin-core", "Error loading wallet.dat"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Error loading wallet.dat: Wallet corrupted"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Error loading wallet.dat: Wallet requires newer version of Bitcoin Core"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Error opening block database"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Error reading from database, shutting down."),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Error"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Error: A fatal internal error occured, see debug.log for details"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Error: A fatal internal error occurred, see debug.log for details"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Error: Disk space is low!"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Error: Unsupported argument -tor found, use -onion."),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Error: Wallet locked, unable to create transaction!"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Failed to listen on any port. Use -listen=0 if you want this."),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Fee (in BTC/kB) to add to transactions you send (default: %s)"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Force safe mode (default: %u)"),
|
||||
@@ -214,13 +220,12 @@ QT_TRANSLATE_NOOP("bitcoin-core", "Initialization sanity check failed. Bitcoin C
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Insufficient funds"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Invalid -onion address: '%s'"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Invalid -proxy address: '%s'"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Invalid amount for -maxtxfee=<amount>: '%s'"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Invalid amount for -minrelaytxfee=<amount>: '%s'"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Invalid amount for -mintxfee=<amount>: '%s'"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Invalid amount for -paytxfee=<amount>: '%s' (must be at least %s)"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Invalid amount for -paytxfee=<amount>: '%s'"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Invalid amount"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Invalid netmask specified in -whitelist: '%s'"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Keep at most <n> unconnectable blocks in memory (default: %u)"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Keep at most <n> unconnectable transactions in memory (default: %u)"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Limit size of signature cache to <n> entries (default: %u)"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Listen for JSON-RPC connections on <port> (default: %u or testnet: %u)"),
|
||||
@@ -239,13 +244,13 @@ QT_TRANSLATE_NOOP("bitcoin-core", "Only connect to nodes in network <net> (ipv4,
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Options:"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Password for JSON-RPC connections"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Prepend debug output with timestamp (default: %u)"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Print block on startup, if found in block index"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Print block tree on startup (default: %u)"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "RPC SSL options: (see the Bitcoin Wiki for SSL setup instructions)"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "RPC server options:"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "RPC support for HTTP persistent connections (default: %d)"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Randomly drop 1 of every <n> network messages"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Randomly fuzz 1 of every <n> network messages"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Rebuild block chain index from current blk000??.dat files"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Receive and display P2P network alerts (default: %u)"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Relay and mine data carrier transactions (default: %u)"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Relay non-P2SH multisig (default: %u)"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Rescan the block chain for missing wallet transactions"),
|
||||
@@ -277,9 +282,9 @@ QT_TRANSLATE_NOOP("bitcoin-core", "This help message"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "This is experimental software."),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "This is intended for regression testing tools and app development."),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Threshold for disconnecting misbehaving peers (default: %u)"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "To use the %s option"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Transaction amount too small"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Transaction amounts must be positive"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Transaction too large for fee policy"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Transaction too large"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Unable to bind to %s on this computer (bind returned error %s)"),
|
||||
QT_TRANSLATE_NOOP("bitcoin-core", "Unknown network specified in -onlynet: '%s'"),
|
||||
|
||||
@@ -116,6 +116,10 @@ CoinControlDialog::CoinControlDialog(QWidget *parent) :
|
||||
// (un)select all
|
||||
connect(ui->pushButtonSelectAll, SIGNAL(clicked()), this, SLOT(buttonSelectAllClicked()));
|
||||
|
||||
// change coin control first column label due Qt4 bug.
|
||||
// see https://github.com/bitcoin/bitcoin/issues/5716
|
||||
ui->treeWidget->headerItem()->setText(COLUMN_CHECKBOX, QString());
|
||||
|
||||
ui->treeWidget->setColumnWidth(COLUMN_CHECKBOX, 84);
|
||||
ui->treeWidget->setColumnWidth(COLUMN_AMOUNT, 100);
|
||||
ui->treeWidget->setColumnWidth(COLUMN_LABEL, 170);
|
||||
|
||||
@@ -17,7 +17,8 @@ void CoinControlTreeWidget::keyPressEvent(QKeyEvent *event)
|
||||
{
|
||||
event->ignore();
|
||||
int COLUMN_CHECKBOX = 0;
|
||||
this->currentItem()->setCheckState(COLUMN_CHECKBOX, ((this->currentItem()->checkState(COLUMN_CHECKBOX) == Qt::Checked) ? Qt::Unchecked : Qt::Checked));
|
||||
if(this->currentItem())
|
||||
this->currentItem()->setCheckState(COLUMN_CHECKBOX, ((this->currentItem()->checkState(COLUMN_CHECKBOX) == Qt::Checked) ? Qt::Unchecked : Qt::Checked));
|
||||
}
|
||||
else if (event->key() == Qt::Key_Escape) // press esc -> close dialog
|
||||
{
|
||||
@@ -29,4 +30,4 @@ void CoinControlTreeWidget::keyPressEvent(QKeyEvent *event)
|
||||
{
|
||||
this->QTreeWidget::keyPressEvent(event);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
<enum>Qt::CustomContextMenu</enum>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Double-click to edit address or label</string>
|
||||
<string>Right-click to edit address or label</string>
|
||||
</property>
|
||||
<property name="tabKeyNavigation">
|
||||
<bool>false</bool>
|
||||
|
||||
@@ -67,6 +67,9 @@ static boost::filesystem::detail::utf8_codecvt_facet utf8;
|
||||
|
||||
#if defined(Q_OS_MAC)
|
||||
extern double NSAppKitVersionNumber;
|
||||
#if !defined(NSAppKitVersionNumber10_8)
|
||||
#define NSAppKitVersionNumber10_8 1187
|
||||
#endif
|
||||
#if !defined(NSAppKitVersionNumber10_9)
|
||||
#define NSAppKitVersionNumber10_9 1265
|
||||
#endif
|
||||
@@ -383,7 +386,7 @@ void openDebugLogfile()
|
||||
QDesktopServices::openUrl(QUrl::fromLocalFile(boostPathToQString(pathDebug)));
|
||||
}
|
||||
|
||||
void SubstituteFonts()
|
||||
void SubstituteFonts(const QString& language)
|
||||
{
|
||||
#if defined(Q_OS_MAC)
|
||||
// Background:
|
||||
@@ -393,12 +396,28 @@ void SubstituteFonts()
|
||||
// If this fallback is not properly loaded, some characters may fail to
|
||||
// render correctly.
|
||||
//
|
||||
// The same thing happened with 10.10. .Helvetica Neue DeskInterface is now default.
|
||||
//
|
||||
// Solution: If building with the 10.7 SDK or lower and the user's platform
|
||||
// is 10.9 or higher at runtime, substitute the correct font. This needs to
|
||||
// happen before the QApplication is created.
|
||||
#if defined(MAC_OS_X_VERSION_MAX_ALLOWED) && MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_8
|
||||
if (floor(NSAppKitVersionNumber) >= NSAppKitVersionNumber10_9)
|
||||
QFont::insertSubstitution(".Lucida Grande UI", "Lucida Grande");
|
||||
if (floor(NSAppKitVersionNumber) > NSAppKitVersionNumber10_8)
|
||||
{
|
||||
if (floor(NSAppKitVersionNumber) <= NSAppKitVersionNumber10_9)
|
||||
/* On a 10.9 - 10.9.x system */
|
||||
QFont::insertSubstitution(".Lucida Grande UI", "Lucida Grande");
|
||||
else
|
||||
{
|
||||
/* 10.10 or later system */
|
||||
if (language == "zh_CN" || language == "zh_TW" || language == "zh_HK") // traditional or simplified Chinese
|
||||
QFont::insertSubstitution(".Helvetica Neue DeskInterface", "Heiti SC");
|
||||
else if (language == "ja") // Japanesee
|
||||
QFont::insertSubstitution(".Helvetica Neue DeskInterface", "Songti SC");
|
||||
else
|
||||
QFont::insertSubstitution(".Helvetica Neue DeskInterface", "Lucida Grande");
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -107,7 +107,7 @@ namespace GUIUtil
|
||||
void openDebugLogfile();
|
||||
|
||||
// Replace invalid default fonts with known good ones
|
||||
void SubstituteFonts();
|
||||
void SubstituteFonts(const QString& language);
|
||||
|
||||
/** Qt event filter that intercepts ToolTipChange events, and replaces the tooltip with a rich text
|
||||
representation if needed. This assures that Qt can word-wrap long tooltip messages.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<TS language="ach" version="2.0">
|
||||
<TS language="ach" version="2.1">
|
||||
<context>
|
||||
<name>AddressBookPage</name>
|
||||
</context>
|
||||
|
||||
@@ -1,10 +1,6 @@
|
||||
<TS language="af_ZA" version="2.0">
|
||||
<TS language="af_ZA" version="2.1">
|
||||
<context>
|
||||
<name>AddressBookPage</name>
|
||||
<message>
|
||||
<source>Double-click to edit address or label</source>
|
||||
<translation>Dubbel-klik om die adres of etiket te wysig</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Create a new address</source>
|
||||
<translation>Skep 'n nuwe adres</translation>
|
||||
@@ -658,10 +654,6 @@
|
||||
<source>Loading addresses...</source>
|
||||
<translation>Laai adresse...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Invalid amount</source>
|
||||
<translation>Ongeldige bedrag</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Insufficient funds</source>
|
||||
<translation>Onvoldoende fondse</translation>
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<TS language="ar" version="2.0">
|
||||
<TS language="ar" version="2.1">
|
||||
<context>
|
||||
<name>AddressBookPage</name>
|
||||
<message>
|
||||
<source>Double-click to edit address or label</source>
|
||||
<translation>أنقر بالماوس مرتين لتعديل العنوان او الوصف</translation>
|
||||
<source>Right-click to edit address or label</source>
|
||||
<translation>انقر بالزر الايمن لتعديل العنوان</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Create a new address</source>
|
||||
@@ -294,6 +294,14 @@
|
||||
<source>Bitcoin Core client</source>
|
||||
<translation>عميل bitcion core</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Importing blocks from disk...</source>
|
||||
<translation>استيراد كتل من القرص ...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Reindexing blocks on disk...</source>
|
||||
<translation>إعادة فهرسة الكتل على القرص</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Send coins to a Bitcoin address</source>
|
||||
<translation>ارسل عملات الى عنوان بيتكوين</translation>
|
||||
@@ -1144,10 +1152,6 @@
|
||||
<source>Copy change</source>
|
||||
<translation>نسخ التعديل</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Total Amount %1 (= %2)</source>
|
||||
<translation>مجموع المبلغ %1 (= %2)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>or</source>
|
||||
<translation>أو</translation>
|
||||
@@ -1674,10 +1678,6 @@
|
||||
<source>Error: Disk space is low!</source>
|
||||
<translation>تحذير: مساحة القرص منخفضة</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error: Wallet locked, unable to create transaction!</source>
|
||||
<translation>تحذير: المحفظة مغلقة , لا تستطيع تنفيذ المعاملة</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Failed to listen on any port. Use -listen=0 if you want this.</source>
|
||||
<translation>فشل في الاستماع على أي منفذ. استخدام الاستماع = 0 إذا كنت تريد هذا.</translation>
|
||||
@@ -1746,10 +1746,6 @@
|
||||
<source>Invalid -proxy address: '%s'</source>
|
||||
<translation>عنوان البروكسي غير صحيح : '%s'</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Invalid amount</source>
|
||||
<translation>قيمة غير صحيحة</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Insufficient funds</source>
|
||||
<translation>اموال غير كافية</translation>
|
||||
@@ -1770,10 +1766,6 @@
|
||||
<source>Done loading</source>
|
||||
<translation>انتهاء التحميل</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>To use the %s option</source>
|
||||
<translation>لاستخدام %s الخيار</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>خطأ</translation>
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<TS language="be_BY" version="2.0">
|
||||
<TS language="be_BY" version="2.1">
|
||||
<context>
|
||||
<name>AddressBookPage</name>
|
||||
<message>
|
||||
<source>Double-click to edit address or label</source>
|
||||
<translation>Двайны клік для рэдагавання адрасу ці пазнакі</translation>
|
||||
<source>Right-click to edit address or label</source>
|
||||
<translation>Правы клік, каб рэдагаваць адрас ці метку</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Create a new address</source>
|
||||
@@ -65,10 +65,26 @@
|
||||
<source>Receiving addresses</source>
|
||||
<translation>адрасы Прымання</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins.</source>
|
||||
<translation>Тут знаходзяцца Біткойн-адрасы для высылання плацяжоў. Заўсёды спраўджвайце колькасць і адрас прызначэння перад здзяйсненнем транзакцыі.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>These are your Bitcoin addresses for receiving payments. It is recommended to use a new receiving address for each transaction.</source>
|
||||
<translation>Тут знаходзяцца Біткойн-адрасы для прымання плацяжоў. Пажадана выкарыстоўваць новы адрас для кожнай транзакцыі.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy &Label</source>
|
||||
<translation>Капіяваць Метку</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Edit</source>
|
||||
<translation>Рэдагаваць</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Export Address List</source>
|
||||
<translation>Экспартаваць Спіс Адрасоў</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Comma separated file (*.csv)</source>
|
||||
<translation>Коскамі падзелены файл (*.csv)</translation>
|
||||
@@ -77,12 +93,16 @@
|
||||
<source>Exporting Failed</source>
|
||||
<translation>Экспартаванне няўдалае</translation>
|
||||
</message>
|
||||
</context>
|
||||
<message>
|
||||
<source>There was an error trying to save the address list to %1. Please try again.</source>
|
||||
<translation>Адбылася памылка падчас спробы захаваць адрас у %1. Паспрабуйце зноў.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>AddressTableModel</name>
|
||||
<message>
|
||||
<source>Label</source>
|
||||
<translation>Пазнака</translation>
|
||||
<translation>Метка</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Address</source>
|
||||
@@ -95,6 +115,10 @@
|
||||
</context>
|
||||
<context>
|
||||
<name>AskPassphraseDialog</name>
|
||||
<message>
|
||||
<source>Passphrase Dialog</source>
|
||||
<translation>Дыялог сакрэтнай фразы</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Enter passphrase</source>
|
||||
<translation>Увядзіце кодавую фразу</translation>
|
||||
@@ -147,6 +171,10 @@
|
||||
<source>Are you sure you wish to encrypt your wallet?</source>
|
||||
<translation>Ці ўпэўненыя вы, што жадаеце зашыфраваць свой гаманец?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>IMPORTANT: Any previous backups you have made of your wallet file should be replaced with the newly generated, encrypted wallet file. For security reasons, previous backups of the unencrypted wallet file will become useless as soon as you start using the new, encrypted wallet.</source>
|
||||
<translation>ВАЖНА: Усе папярэднія копіі гаманца варта замяніць новым зашыфраваным файлам. У мэтах бяспекі папярэднія копіі незашыфраванага файла-гаманца стануць неўжывальнымі, калі вы станеце карыстацца новым зашыфраваным гаманцом.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Warning: The Caps Lock key is on!</source>
|
||||
<translation>Увага: Caps Lock уключаны!</translation>
|
||||
@@ -155,6 +183,10 @@
|
||||
<source>Wallet encrypted</source>
|
||||
<translation>Гаманец зашыфраваны</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Enter the new passphrase to the wallet.<br/>Please use a passphrase of <b>ten or more random characters</b>, or <b>eight or more words</b>.</source>
|
||||
<translation>Увядзіце новы пароль для гаманца.<br/>Парольная фраза павинна складацца<b> не меньш чым з дзесяці сімвалаў</b>, ці <b>больш чым з васьмі слоў</b>.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Bitcoin will close now to finish the encryption process. Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer.</source>
|
||||
<translation>Bitcoin зачыняецца дзеля завяршэння працэсса шыфравання. Памятайце, што шыфраванне гаманца цалкам абараняе вашыя сродкі ад скрадання шкоднымі праграмамі якія могуць пранікнуць у ваш камп'ютар.</translation>
|
||||
@@ -242,10 +274,42 @@
|
||||
<source>&Encrypt Wallet...</source>
|
||||
<translation>Зашыфраваць Гаманец...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Backup Wallet...</source>
|
||||
<translation>Стварыць копію гаманца...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Change Passphrase...</source>
|
||||
<translation>&Change Passphrase...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Sending addresses...</source>
|
||||
<translation>Адрасы дасылання...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Receiving addresses...</source>
|
||||
<translation>Адрасы прымання...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Open &URI...</source>
|
||||
<translation>Адчыниць &URI...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Bitcoin Core client</source>
|
||||
<translation>Bitcoin Core кліент</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Importing blocks from disk...</source>
|
||||
<translation>Імпартуюцца блокі з дыску...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Reindexing blocks on disk...</source>
|
||||
<translation>Пераіндэксацыя блокаў на дыску...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Send coins to a Bitcoin address</source>
|
||||
<translation>Даслаць манеты на Біткойн-адрас</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Backup wallet to another location</source>
|
||||
<translation>Зрабіце копію гаманца ў іншае месца</translation>
|
||||
@@ -258,6 +322,18 @@
|
||||
<source>&Debug window</source>
|
||||
<translation>Вакно адладкі</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Open debugging and diagnostic console</source>
|
||||
<translation>Адкрыць кансоль дыягностыкі і адладкі</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Verify message...</source>
|
||||
<translation>Праверыць паведамленне...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Bitcoin</source>
|
||||
<translation>Біткойн</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Wallet</source>
|
||||
<translation>Гаманец</translation>
|
||||
@@ -270,6 +346,10 @@
|
||||
<source>&Receive</source>
|
||||
<translation>Атрымаць</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show information about Bitcoin Core</source>
|
||||
<translation>Паказаць інфармацыю аб Bitcoin Core</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Show / Hide</source>
|
||||
<translation>&Паказаць / Схаваць</translation>
|
||||
@@ -282,6 +362,14 @@
|
||||
<source>Encrypt the private keys that belong to your wallet</source>
|
||||
<translation>Зашыфраваць прыватныя ключы, якия належаць вашаму гаманцу</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Sign messages with your Bitcoin addresses to prove you own them</source>
|
||||
<translation>Падпісаць паведамленне з дапамогай Біткойн-адраса каб даказаць, што яно належыць вам</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Verify messages to ensure they were signed with specified Bitcoin addresses</source>
|
||||
<translation>Спраўдзіць паведамленне з дапамогай Біткойн-адраса каб даказаць, што яно належыць вам</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&File</source>
|
||||
<translation>Ф&айл</translation>
|
||||
@@ -294,14 +382,74 @@
|
||||
<source>&Help</source>
|
||||
<translation>Дапамога</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Bitcoin Core</source>
|
||||
<translation>Bitcoin Core</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Request payments (generates QR codes and bitcoin: URIs)</source>
|
||||
<translation>Запатрабаваць плацёж (генеруецца QR-код для біткойн URI)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&About Bitcoin Core</source>
|
||||
<translation>Аб Bitcoin Core</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show the list of used sending addresses and labels</source>
|
||||
<translation>Паказаць спіс адрасоў і метак для дасылання</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show the list of used receiving addresses and labels</source>
|
||||
<translation>Паказаць спіс адрасоў і метак для прымання</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Open a bitcoin: URI or payment request</source>
|
||||
<translation>Адкрыць біткойн: URI ці запыт плацяжу</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Command-line options</source>
|
||||
<translation>Опцыі каманднага радка</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show the Bitcoin Core help message to get a list with possible Bitcoin command-line options</source>
|
||||
<translation>Паказваць даведку Bitcoin Core каб атрымаць спіс магчымых опцый каманднага радка</translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<source>%n active connection(s) to Bitcoin network</source>
|
||||
<translation><numerusform>%n актыўнае злучэнне з Bitcoin-сецівам</numerusform><numerusform>%n актыўных злучэнняў з Bitcoin-сецівам</numerusform></translation>
|
||||
<translation><numerusform>%n актыўнае злучэнне з Bitcoin-сецівам</numerusform><numerusform>%n актыўных злучэнняў з Bitcoin-сецівам</numerusform><numerusform>%n актыўных злучэнняў з Bitcoin-сецівам</numerusform><numerusform>%n актыўных злучэнняў з Bitcoin-сецівам</numerusform></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>No block source available...</source>
|
||||
<translation>Крыніца блокаў недасяжная...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>%1 and %2</source>
|
||||
<translation>%1 і %2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>%1 behind</source>
|
||||
<translation>%1 таму</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Last received block was generated %1 ago.</source>
|
||||
<translation>Апошні прыняты блок генераваны %1 таму.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Transactions after this will not yet be visible.</source>
|
||||
<translation>Транзакцыи пасля гэтай не будуць бачныя.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>Памылка</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Warning</source>
|
||||
<translation>Увага</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Information</source>
|
||||
<translation>Інфармацыя</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Up to date</source>
|
||||
<translation>Сінхранізавана</translation>
|
||||
@@ -341,25 +489,81 @@ Address: %4
|
||||
</context>
|
||||
<context>
|
||||
<name>ClientModel</name>
|
||||
</context>
|
||||
<message>
|
||||
<source>Network Alert</source>
|
||||
<translation>Трывога Сеціва</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>CoinControlDialog</name>
|
||||
<message>
|
||||
<source>Quantity:</source>
|
||||
<translation>Колькасць:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Bytes:</source>
|
||||
<translation>Байтаў:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Amount:</source>
|
||||
<translation>Колькасць:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Priority:</source>
|
||||
<translation>Прыярытэт:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Fee:</source>
|
||||
<translation>Камісія:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Dust:</source>
|
||||
<translation>Пыл:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>After Fee:</source>
|
||||
<translation>Пасля камісіі:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>(un)select all</source>
|
||||
<translation>(не)выбраць ўсё</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Tree mode</source>
|
||||
<translation>Рэжым дрэва</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>List mode</source>
|
||||
<translation>Рэжым спіса</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Amount</source>
|
||||
<translation>Колькасць</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Received with label</source>
|
||||
<translation>Прыняць праз метку</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Received with address</source>
|
||||
<translation>Прыняць праз адрас</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Date</source>
|
||||
<translation>Дата</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Confirmations</source>
|
||||
<translation>Пацверджанняў</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Confirmed</source>
|
||||
<translation>Пацверджана</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Priority</source>
|
||||
<translation>Прыярытэт</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy address</source>
|
||||
<translation>Капіяваць адрас</translation>
|
||||
@@ -376,6 +580,102 @@ Address: %4
|
||||
<source>Copy transaction ID</source>
|
||||
<translation>Капіяваць ID транзакцыі</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Lock unspent</source>
|
||||
<translation>Замкнуць непатрачанае</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unlock unspent</source>
|
||||
<translation>Адамкнуць непатрачанае</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy quantity</source>
|
||||
<translation>Капіяваць колькасць</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy fee</source>
|
||||
<translation>Капіяваць камісію</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy after fee</source>
|
||||
<translation>Капіяваць з выняткам камісіі</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy bytes</source>
|
||||
<translation>Капіяваць байты</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy priority</source>
|
||||
<translation>Капіяваць прыярытэт</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy dust</source>
|
||||
<translation>Капіяваць пыл</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>highest</source>
|
||||
<translation>найвышэйшы</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>higher</source>
|
||||
<translation>вышэйшы</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>high</source>
|
||||
<translation>высокі</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>medium-high</source>
|
||||
<translation>вышэй сярэдняга</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>medium</source>
|
||||
<translation>сярэдні</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>low-medium</source>
|
||||
<translation>ніжэй сярэдняга</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>low</source>
|
||||
<translation>нізкі</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>lower</source>
|
||||
<translation>ніжэйшы</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>lowest</source>
|
||||
<translation>найніжэйшы</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>yes</source>
|
||||
<translation>так</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>no</source>
|
||||
<translation>не</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This label turns red, if the transaction size is greater than 1000 bytes.</source>
|
||||
<translation>Гэта метка стане чырвонай, калі транзакцыя перавысіць 1000 байт.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This means a fee of at least %1 per kB is required.</source>
|
||||
<translation>Гэта значыць патрэбную камісію мінімум %1 на Кб.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Transactions with higher priority are more likely to get included into a block.</source>
|
||||
<translation>Транзакцыя большага прыярытэту больш прываблівая для ўключэння ў блок.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This label turns red, if the priority is smaller than "medium".</source>
|
||||
<translation>Гэта метка стане чырвонай, калі прыярытэт меньш чым "сярэдні".</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This label turns red, if any recipient receives an amount smaller than %1.</source>
|
||||
<translation>Гэта метка стане чырвонай, калі любы з адрасатаў атрымае меньш чым %1.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>(no label)</source>
|
||||
<translation>непазначаны</translation>
|
||||
@@ -389,7 +689,7 @@ Address: %4
|
||||
</message>
|
||||
<message>
|
||||
<source>&Label</source>
|
||||
<translation>Пазнака</translation>
|
||||
<translation>Метка</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Address</source>
|
||||
@@ -426,9 +726,25 @@ Address: %4
|
||||
</context>
|
||||
<context>
|
||||
<name>FreespaceChecker</name>
|
||||
<message>
|
||||
<source>A new data directory will be created.</source>
|
||||
<translation>Будзе створаны новы каталог з данымі.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>name</source>
|
||||
<translation>імя</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Directory already exists. Add %1 if you intend to create a new directory here.</source>
|
||||
<translation>Каталог ужо існуе. Дадайце %1 калі вы збіраецеся стварыць тут новы каталог.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>HelpMessageDialog</name>
|
||||
<message>
|
||||
<source>Bitcoin Core</source>
|
||||
<translation>Bitcoin Core</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>(%1-bit)</source>
|
||||
<translation>(%1-біт)</translation>
|
||||
@@ -437,13 +753,37 @@ Address: %4
|
||||
<source>About Bitcoin Core</source>
|
||||
<translation>Аб Bitcoin Core</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Command-line options</source>
|
||||
<translation>Опцыі каманднага радка</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Usage:</source>
|
||||
<translation>Ужыванне:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>command-line options</source>
|
||||
<translation>опцыі каманднага радка</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Start minimized</source>
|
||||
<translation>Стартаваць ммінімізаванай</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Intro</name>
|
||||
<message>
|
||||
<source>Welcome</source>
|
||||
<translation>Вітаем</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Welcome to Bitcoin Core.</source>
|
||||
<translation>Вітаем у Bitcoin Core.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Bitcoin Core</source>
|
||||
<translation>Bitcoin Core</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>Памылка</translation>
|
||||
@@ -451,6 +791,10 @@ Address: %4
|
||||
</context>
|
||||
<context>
|
||||
<name>OpenURIDialog</name>
|
||||
<message>
|
||||
<source>Open URI</source>
|
||||
<translation>Адкрыць URI</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>OptionsDialog</name>
|
||||
@@ -458,6 +802,10 @@ Address: %4
|
||||
<source>Options</source>
|
||||
<translation>Опцыі</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>MB</source>
|
||||
<translation>Мб</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>OverviewPage</name>
|
||||
@@ -489,7 +837,7 @@ Address: %4
|
||||
<name>ReceiveCoinsDialog</name>
|
||||
<message>
|
||||
<source>&Label:</source>
|
||||
<translation>Пазнака:</translation>
|
||||
<translation>Метка:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy label</source>
|
||||
@@ -512,7 +860,11 @@ Address: %4
|
||||
</message>
|
||||
<message>
|
||||
<source>Label</source>
|
||||
<translation>Пазнака</translation>
|
||||
<translation>Метка</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Message</source>
|
||||
<translation>Паведамленне</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -523,7 +875,11 @@ Address: %4
|
||||
</message>
|
||||
<message>
|
||||
<source>Label</source>
|
||||
<translation>Пазнака</translation>
|
||||
<translation>Метка</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Message</source>
|
||||
<translation>Паведамленне</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Amount</source>
|
||||
@@ -540,14 +896,38 @@ Address: %4
|
||||
<source>Send Coins</source>
|
||||
<translation>Даслаць Манеты</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Quantity:</source>
|
||||
<translation>Колькасць:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Bytes:</source>
|
||||
<translation>Байтаў:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Amount:</source>
|
||||
<translation>Колькасць:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Priority:</source>
|
||||
<translation>Прыярытэт:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Fee:</source>
|
||||
<translation>Камісія:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>After Fee:</source>
|
||||
<translation>Пасля камісіі:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Send to multiple recipients at once</source>
|
||||
<translation>Даслаць адразу некалькім атрымальнікам</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Dust:</source>
|
||||
<translation>Пыл:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Balance:</source>
|
||||
<translation>Баланс:</translation>
|
||||
@@ -560,10 +940,30 @@ Address: %4
|
||||
<source>Confirm send coins</source>
|
||||
<translation>Пацвердзіць дасыланне манет</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy quantity</source>
|
||||
<translation>Капіяваць колькасць</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy amount</source>
|
||||
<translation>Капіяваць колькасць</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy fee</source>
|
||||
<translation>Капіяваць камісію</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy after fee</source>
|
||||
<translation>Капіяваць з выняткам камісіі</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy bytes</source>
|
||||
<translation>Капіяваць байты</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy priority</source>
|
||||
<translation>Капіяваць прыярытэт</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The amount to pay must be larger than 0.</source>
|
||||
<translation>Велічыня плацяжу мае быць больш за 0.</translation>
|
||||
@@ -572,6 +972,10 @@ Address: %4
|
||||
<source>(no label)</source>
|
||||
<translation>непазначаны</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy dust</source>
|
||||
<translation>Капіяваць пыл</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SendCoinsEntry</name>
|
||||
@@ -589,7 +993,7 @@ Address: %4
|
||||
</message>
|
||||
<message>
|
||||
<source>&Label:</source>
|
||||
<translation>Пазнака:</translation>
|
||||
<translation>Метка:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Alt+A</source>
|
||||
@@ -603,7 +1007,11 @@ Address: %4
|
||||
<source>Alt+P</source>
|
||||
<translation>Alt+P</translation>
|
||||
</message>
|
||||
</context>
|
||||
<message>
|
||||
<source>Memo:</source>
|
||||
<translation>Памятка:</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ShutdownWindow</name>
|
||||
</context>
|
||||
@@ -624,6 +1032,10 @@ Address: %4
|
||||
</context>
|
||||
<context>
|
||||
<name>SplashScreen</name>
|
||||
<message>
|
||||
<source>Bitcoin Core</source>
|
||||
<translation>Bitcoin Core</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The Bitcoin Core developers</source>
|
||||
<translation>Распрацоўнікі Bitcoin Core</translation>
|
||||
@@ -635,9 +1047,17 @@ Address: %4
|
||||
</context>
|
||||
<context>
|
||||
<name>TrafficGraphWidget</name>
|
||||
</context>
|
||||
<message>
|
||||
<source>KB/s</source>
|
||||
<translation>Кб/с</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>TransactionDesc</name>
|
||||
<message>
|
||||
<source>%1/offline</source>
|
||||
<translation>%1/offline</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>%1/unconfirmed</source>
|
||||
<translation>%1/непацверджана</translation>
|
||||
@@ -646,10 +1066,22 @@ Address: %4
|
||||
<source>%1 confirmations</source>
|
||||
<translation>%1 пацверджанняў</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Status</source>
|
||||
<translation>Статус</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Date</source>
|
||||
<translation>Дата</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Message</source>
|
||||
<translation>Паведамленне</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Comment</source>
|
||||
<translation>Каментар</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Transaction ID</source>
|
||||
<translation>ID</translation>
|
||||
@@ -849,7 +1281,7 @@ Address: %4
|
||||
</message>
|
||||
<message>
|
||||
<source>Label</source>
|
||||
<translation>Пазнака</translation>
|
||||
<translation>Метка</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Address</source>
|
||||
@@ -914,14 +1346,94 @@ Address: %4
|
||||
<source>Use the test network</source>
|
||||
<translation>Ужываць тэставае сеціва</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Do you want to rebuild the block database now?</source>
|
||||
<translation>Ці жадаеце вы перабудаваць зараз базу звестак блокаў?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error initializing block database</source>
|
||||
<translation>Памылка ініцыялізацыі базвы звестак блокаў</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error initializing wallet database environment %s!</source>
|
||||
<translation>Памалка ініцыялізацыі асяроддзя базы звестак гаманца %s!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error loading block database</source>
|
||||
<translation>Памылка загрузкі базвы звестак блокаў</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error opening block database</source>
|
||||
<translation>Памылка адчынення базы звестак блокаў</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error: Disk space is low!</source>
|
||||
<translation>Памылка: Замала вольнага месца на дыску!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Importing...</source>
|
||||
<translation>Імпартаванне...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Not enough file descriptors available.</source>
|
||||
<translation>Не хапае файлавых дэскрыптараў.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Use UPnP to map the listening port (default: %u)</source>
|
||||
<translation>Use UPnP to map the listening port (default: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Verifying blocks...</source>
|
||||
<translation>Праверка блокаў...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Verifying wallet...</source>
|
||||
<translation>Праверка гаманца...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Wallet options:</source>
|
||||
<translation>Опцыі гаманца:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Imports blocks from external blk000??.dat file</source>
|
||||
<translation>Імпартаванне блокаў з вонкавага blk000??.dat файла</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Information</source>
|
||||
<translation>Інфармацыя</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>RPC server options:</source>
|
||||
<translation>Опцыі RPC сервера:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Send trace/debug info to console instead of debug.log file</source>
|
||||
<translation>Слаць trace/debug звесткі ў кансоль замест файла debug.log</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Signing transaction failed</source>
|
||||
<translation>Памылка подпісу транзакцыі</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This is experimental software.</source>
|
||||
<translation>Гэта эксперыментальная праграма.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Transaction amount too small</source>
|
||||
<translation>Транзакцыя занадта малая</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Transaction too large</source>
|
||||
<translation>Транзакцыя занадта вялікая</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Username for JSON-RPC connections</source>
|
||||
<translation>Імя карыстальника для JSON-RPC злучэнняў</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Warning</source>
|
||||
<translation>Увага</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Password for JSON-RPC connections</source>
|
||||
<translation>Пароль для JSON-RPC злучэнняў</translation>
|
||||
@@ -954,10 +1466,6 @@ Address: %4
|
||||
<source>Error loading wallet.dat</source>
|
||||
<translation>Памылка загрузкі wallet.dat</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Invalid amount</source>
|
||||
<translation>Памылковая колькасць</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Insufficient funds</source>
|
||||
<translation>Недастаткова сродкаў</translation>
|
||||
@@ -970,6 +1478,10 @@ Address: %4
|
||||
<source>Loading wallet...</source>
|
||||
<translation>Загружаем гаманец...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Cannot downgrade wallet</source>
|
||||
<translation>Немагчыма рэгрэсаваць гаманец</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Rescanning...</source>
|
||||
<translation>Перасканаванне...</translation>
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,4 +1,4 @@
|
||||
<TS language="bs" version="2.0">
|
||||
<TS language="bs" version="2.1">
|
||||
<context>
|
||||
<name>AddressBookPage</name>
|
||||
</context>
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<TS language="ca" version="2.0">
|
||||
<TS language="ca" version="2.1">
|
||||
<context>
|
||||
<name>AddressBookPage</name>
|
||||
<message>
|
||||
<source>Double-click to edit address or label</source>
|
||||
<translation>Feu doble clic per editar l'adreça o l'etiqueta</translation>
|
||||
<source>Right-click to edit address or label</source>
|
||||
<translation>Feu clic dret per a editar l'adreça o l'etiqueta</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Create a new address</source>
|
||||
@@ -478,6 +478,10 @@
|
||||
<source>Up to date</source>
|
||||
<translation>Al dia</translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<source>Processed %n blocks of transaction history.</source>
|
||||
<translation><numerusform>S'ha processat %n bloc de l'historial de transacció.</numerusform><numerusform>S'han processat %n blocs de l'historial de transacció.</numerusform></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Catching up...</source>
|
||||
<translation>S'està posant al dia ...</translation>
|
||||
@@ -516,6 +520,10 @@ Address: %4
|
||||
</context>
|
||||
<context>
|
||||
<name>CoinControlDialog</name>
|
||||
<message>
|
||||
<source>Coin Selection</source>
|
||||
<translation>Selecció de moneda</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Quantity:</source>
|
||||
<translation>Quantitat:</translation>
|
||||
@@ -534,7 +542,7 @@ Address: %4
|
||||
</message>
|
||||
<message>
|
||||
<source>Fee:</source>
|
||||
<translation>Quota:</translation>
|
||||
<translation>Comissió</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Dust:</source>
|
||||
@@ -542,7 +550,7 @@ Address: %4
|
||||
</message>
|
||||
<message>
|
||||
<source>After Fee:</source>
|
||||
<translation>Quota posterior:</translation>
|
||||
<translation>Comissió posterior:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Change:</source>
|
||||
@@ -562,7 +570,15 @@ Address: %4
|
||||
</message>
|
||||
<message>
|
||||
<source>Amount</source>
|
||||
<translation>Quantitat</translation>
|
||||
<translation>Import</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Received with label</source>
|
||||
<translation>Rebut amb l'etiqueta</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Received with address</source>
|
||||
<translation>Rebut amb l'adreça</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Date</source>
|
||||
@@ -694,7 +710,7 @@ Address: %4
|
||||
</message>
|
||||
<message>
|
||||
<source>This means a fee of at least %1 per kB is required.</source>
|
||||
<translation>Això comporta una comissi d'almenys %1 per kB.</translation>
|
||||
<translation>Això comporta una comissió d'almenys %1 per kB.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Can vary +/- 1 byte per input.</source>
|
||||
@@ -729,7 +745,7 @@ Address: %4
|
||||
<name>EditAddressDialog</name>
|
||||
<message>
|
||||
<source>Edit Address</source>
|
||||
<translation>Editar Adreça</translation>
|
||||
<translation>Edita l'adreça</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Label</source>
|
||||
@@ -839,7 +855,7 @@ Address: %4
|
||||
</message>
|
||||
<message>
|
||||
<source>Set language, for example "de_DE" (default: system locale)</source>
|
||||
<translation>Defineix un idioma, per exemple "de_DE" (per defecte: preferències locals de sistema)</translation>
|
||||
<translation>Defineix un idioma, per exemple «de_DE» (per defecte: preferències locals de sistema)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Start minimized</source>
|
||||
@@ -896,7 +912,15 @@ Address: %4
|
||||
<source>Error</source>
|
||||
<translation>Error</translation>
|
||||
</message>
|
||||
</context>
|
||||
<message numerus="yes">
|
||||
<source>%n GB of free space available</source>
|
||||
<translation><numerusform>%n GB d'espai lliure disponible</numerusform><numerusform>%n GB d'espai lliure disponible</numerusform></translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<source>(of %n GB needed)</source>
|
||||
<translation><numerusform>(de %n GB necessari)</numerusform><numerusform>(de %n GB necessaris)</numerusform></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>OpenURIDialog</name>
|
||||
<message>
|
||||
@@ -1018,6 +1042,14 @@ Address: %4
|
||||
<source>Map port using &UPnP</source>
|
||||
<translation>Port obert amb &UPnP</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Connect to the Bitcoin network through a SOCKS5 proxy.</source>
|
||||
<translation>Connecta a la xarxa Bitcoin a través d'un proxy SOCKS5.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Connect through SOCKS5 proxy (default proxy):</source>
|
||||
<translation>&Connecta a través d'un proxy SOCKS5 (proxy per defecte):</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Proxy &IP:</source>
|
||||
<translation>&IP del proxy:</translation>
|
||||
@@ -1149,6 +1181,10 @@ Address: %4
|
||||
<source>Mined balance that has not yet matured</source>
|
||||
<translation>Balanç minat que encara no ha madurat</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Balances</source>
|
||||
<translation>Balances</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Total:</source>
|
||||
<translation>Total:</translation>
|
||||
@@ -1161,6 +1197,14 @@ Address: %4
|
||||
<source>Your current balance in watch-only addresses</source>
|
||||
<translation>El vostre balanç actual en adreces de només lectura</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Spendable:</source>
|
||||
<translation>Que es pot gastar:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Recent transactions</source>
|
||||
<translation>Transaccions recents</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unconfirmed transactions to watch-only addresses</source>
|
||||
<translation>Transaccions sense confirmar a adreces de només lectura</translation>
|
||||
@@ -1240,6 +1284,14 @@ Address: %4
|
||||
<source>Refund from %1</source>
|
||||
<translation>Reemborsament de %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Payment request %1 is too large (%2 bytes, allowed %3 bytes).</source>
|
||||
<translation>La sol·licitud de pagament %1 és massa gran (%2 bytes, permès %3 bytes).</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Payment request DoS protection</source>
|
||||
<translation>Protecció de DoS per a la sol·licitud de pagament</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error communicating with %1: %2</source>
|
||||
<translation>Error en comunicar amb %1: %2</translation>
|
||||
@@ -1280,7 +1332,7 @@ Address: %4
|
||||
<name>QObject</name>
|
||||
<message>
|
||||
<source>Amount</source>
|
||||
<translation>Quantitat</translation>
|
||||
<translation>Import</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Enter a Bitcoin address (e.g. %1)</source>
|
||||
@@ -1782,7 +1834,7 @@ Address: %4
|
||||
</message>
|
||||
<message>
|
||||
<source>After Fee:</source>
|
||||
<translation>Quota posterior:</translation>
|
||||
<translation>Comissió posterior:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Change:</source>
|
||||
@@ -1796,6 +1848,78 @@ Address: %4
|
||||
<source>Custom change address</source>
|
||||
<translation>Personalitza l'adreça de canvi</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Transaction Fee:</source>
|
||||
<translation>Comissió de transacció</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Choose...</source>
|
||||
<translation>Tria...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>collapse fee-settings</source>
|
||||
<translation>redueix els paràmetres de comissió</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Minimize</source>
|
||||
<translation>Minimitza</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>If the custom fee is set to 1000 satoshis and the transaction is only 250 bytes, then "per kilobyte" only pays 250 satoshis in fee, while "at least" pays 1000 satoshis. For transactions bigger than a kilobyte both pay by kilobyte.</source>
|
||||
<translation>Si la comissió personalitzada es defineix a 1000 satoshis i la transacció és de només 250 bytes, llavors «per kilobyte» només es paguen 250 satoshis en una comissió, mentre que amb la de «com a mínim» es pagarien 1000 satoshis. Per a transaccions superiors al kilobyte, en tots dos casos es paga per kilobyte.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>per kilobyte</source>
|
||||
<translation>per kilobyte</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>If the custom fee is set to 1000 satoshis and the transaction is only 250 bytes, then "per kilobyte" only pays 250 satoshis in fee, while "total at least" pays 1000 satoshis. For transactions bigger than a kilobyte both pay by kilobyte.</source>
|
||||
<translation>Si la comissió personalitzada es defineix a 1000 satoshis i la transacció és de només 250 bytes, llavors «per kilobyte» només es paguen 250 satoshis en una comissió, mentre que amb la de «total com a mínim» es pagarien 1000 satoshis. Per a transaccions superiors al kilobyte, en tots dos casos es paga per kilobyte.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>total at least</source>
|
||||
<translation>total com a mínim</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Paying only the minimum fee is just fine as long as there is less transaction volume than space in the blocks. But be aware that this can end up in a never confirming transaction once there is more demand for bitcoin transactions than the network can process.</source>
|
||||
<translation>No hi ha cap problema en pagar només la comissió mínima sempre que hi hagi menys volum de transacció que espai en els blocs. Però tingueu present que això pot acabar en una transacció que mai es confirmi una vegada hi hagi més demanda de transaccions de bitcoins que la xarxa pugui processar.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>(read the tooltip)</source>
|
||||
<translation>(llegiu l'indicador de funció)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Recommended:</source>
|
||||
<translation>Recomanada:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Custom:</source>
|
||||
<translation>Personalitzada:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>(Smart fee not initialized yet. This usually takes a few blocks...)</source>
|
||||
<translation>(No s'ha inicialitzat encara la comissió intel·ligent. Normalment pren uns pocs blocs...)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Confirmation time:</source>
|
||||
<translation>Temps de confirmació:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>normal</source>
|
||||
<translation>normal</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>fast</source>
|
||||
<translation>ràpid</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Send as zero-fee transaction if possible</source>
|
||||
<translation>Envia com a transacció de comissió zero si és possible</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>(confirmation may take longer)</source>
|
||||
<translation>(la confirmació pot trigar més temps)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Send to multiple recipients at once</source>
|
||||
<translation>Envia a múltiples destinataris al mateix temps</translation>
|
||||
@@ -1846,7 +1970,7 @@ Address: %4
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy fee</source>
|
||||
<translation>Copia la comissi</translation>
|
||||
<translation>Copia la comissió</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy after fee</source>
|
||||
@@ -1864,10 +1988,6 @@ Address: %4
|
||||
<source>Copy change</source>
|
||||
<translation>Copia el canvi</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Total Amount %1 (= %2)</source>
|
||||
<translation>Import total %1 (= %2)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>or</source>
|
||||
<translation>o</translation>
|
||||
@@ -1886,7 +2006,7 @@ Address: %4
|
||||
</message>
|
||||
<message>
|
||||
<source>The total exceeds your balance when the %1 transaction fee is included.</source>
|
||||
<translation>El total excedeix el teu balanç quan s'afegeix la comisió a la transacció %1.</translation>
|
||||
<translation>El total excedeix el teu balanç quan s'afegeix la comissió a la transacció %1.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Duplicate address found, can only send to each address once per send operation.</source>
|
||||
@@ -1900,6 +2020,18 @@ Address: %4
|
||||
<source>The transaction was rejected! This might happen if some of the coins in your wallet were already spent, such as if you used a copy of wallet.dat and coins were spent in the copy but not marked as spent here.</source>
|
||||
<translation>S'ha rebutjat la transacció! Això pot passar si alguna de les monedes del vostre moneder ja s'han gastat; per exemple, si heu fet servir una còpia de seguretat del fitxer wallet.dat i s'haguessin gastat monedes de la còpia però sense marcar-les-hi com a gastades.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>A fee higher than %1 is considered an insanely high fee.</source>
|
||||
<translation>Una comissió superior a %1 es considera una comissió excessiva.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Pay only the minimum fee of %1</source>
|
||||
<translation>Paga només la comissió mínima de %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Estimated to begin confirmation within %1 block(s).</source>
|
||||
<translation>Estimat per a començar la confirmació en %1 bloc(s).</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Warning: Invalid Bitcoin address</source>
|
||||
<translation>Avís: adreça Bitcoin no vàlida</translation>
|
||||
@@ -2300,7 +2432,7 @@ Address: %4
|
||||
</message>
|
||||
<message>
|
||||
<source>Amount</source>
|
||||
<translation>Quantitat</translation>
|
||||
<translation>Import</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>true</source>
|
||||
@@ -2428,6 +2560,10 @@ Address: %4
|
||||
<source>Type of transaction.</source>
|
||||
<translation>Tipus de transacció.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Whether or not a watch-only address is involved in this transaction.</source>
|
||||
<translation>Si està implicada o no una adreça només de lectura en la transacció.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Destination address of transaction.</source>
|
||||
<translation>Adreça del destinatari de la transacció.</translation>
|
||||
@@ -2523,6 +2659,10 @@ Address: %4
|
||||
<source>Export Transaction History</source>
|
||||
<translation>Exporta l'historial de transacció</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Watch-only</source>
|
||||
<translation>Només de lectura</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Exporting Failed</source>
|
||||
<translation>L'exportació ha fallat</translation>
|
||||
@@ -2666,29 +2806,6 @@ Address: %4
|
||||
<source>Accept connections from outside (default: 1 if no -proxy or -connect)</source>
|
||||
<translation>Accepta connexions de fora (per defecte: 1 si no -proxy o -connect)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>%s, you must set a rpcpassword in the configuration file:
|
||||
%s
|
||||
It is recommended you use the following random password:
|
||||
rpcuser=bitcoinrpc
|
||||
rpcpassword=%s
|
||||
(you do not need to remember this password)
|
||||
The username and password MUST NOT be the same.
|
||||
If the file does not exist, create it with owner-readable-only file permissions.
|
||||
It is also recommended to set alertnotify so you are notified of problems;
|
||||
for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
</source>
|
||||
<translation>%s, heu de establir una contrasenya RPC al fitxer de configuració: %s
|
||||
Es recomana que useu la següent contrasenya aleatòria:
|
||||
rpcuser=bitcoinrpc
|
||||
rpcpassword=%s
|
||||
(no necesiteu recordar aquesta contrasenya)
|
||||
El nom d'usuari i la contrasenya NO HAN de ser els mateixos.
|
||||
Si el fitxer no existeix, crea'l amb els permisos de fitxer de només lectura per al propietari.
|
||||
També es recomana establir la notificació d'alertes i així sereu notificat de les incidències;
|
||||
per exemple: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Bind to given address and always listen on it. Use [host]:port notation for IPv6</source>
|
||||
<translation>Vincula a una adreça específica i sempre escolta-hi. Utilitza la notació [host]:port per IPv6</translation>
|
||||
@@ -2697,18 +2814,14 @@ per exemple: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Delete all wallet transactions and only recover those parts of the blockchain through -rescan on startup</source>
|
||||
<translation>Elimina totes les transaccions del moneder i només recupera aquelles de la cadena de blocs a través de -rescan a l'inici</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Distributed under the MIT software license, see the accompanying file COPYING or <http://www.opensource.org/licenses/mit-license.php>.</source>
|
||||
<translation>Distribuït sota llicència de programari MIT. Vegeu el fitxer acompanyant COPYING o <http://www.opensource.org/licenses/mit-license.php>.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Enter regression test mode, which uses a special chain in which blocks can be solved instantly.</source>
|
||||
<translation>Entra en el mode de proves de regressió, que utilitza una cadena especial en què els blocs poden resoldre's al moment.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error: The transaction was rejected! This might happen if some of the coins in your wallet were already spent, such as if you used a copy of wallet.dat and coins were spent in the copy but not marked as spent here.</source>
|
||||
<translation>Error: La transacció ha estat rebutjada. Això pot passar si alguna de les monedes del teu moneder ja s'han gastat, com si haguesis usat una copia de l'arxiu wallet.dat i s'haguessin gastat monedes de la copia però sense marcar com gastades en aquest.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds!</source>
|
||||
<translation>Error: Aquesta transacció requereix una comissió d'almenys %s degut al seu import, complexitat o per l'ús de fons recentment rebuts!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Execute command when a wallet transaction changes (%s in cmd is replaced by TxID)</source>
|
||||
<translation>Executa una ordre quan una transacció del moneder canviï (%s en cmd es canvia per TxID)</translation>
|
||||
@@ -2749,6 +2862,10 @@ per exemple: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Warning: wallet.dat corrupt, data salvaged! Original wallet.dat saved as wallet.{timestamp}.bak in %s; if your balance or transactions are incorrect you should restore from a backup.</source>
|
||||
<translation>Avís: el fitxer wallet.dat és corrupte, dades rescatades! L'arxiu wallet.dat original ha estat desat com wallet.{estampa_temporal}.bak al directori %s; si el teu balanç o transaccions son incorrectes hauries de restaurar-lo de un backup.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Whitelist peers connecting from the given netmask or IP address. Can be specified multiple times.</source>
|
||||
<translation>Afegeix a la llista blanca els iguals que es connecten de la màscara de xarxa o adreça IP donada. Es pot especificar moltes vegades.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>(default: 1)</source>
|
||||
<translation>(per defecte: 1)</translation>
|
||||
@@ -2813,10 +2930,6 @@ per exemple: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Error: Disk space is low!</source>
|
||||
<translation>Error: Espai al disc baix!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error: Wallet locked, unable to create transaction!</source>
|
||||
<translation>Error: El moneder està bloquejat, no és possible crear la transacció!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Failed to listen on any port. Use -listen=0 if you want this.</source>
|
||||
<translation>Ha fallat escoltar a qualsevol port. Feu servir -listen=0 si voleu fer això.</translation>
|
||||
@@ -2841,6 +2954,10 @@ per exemple: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Not enough file descriptors available.</source>
|
||||
<translation>No hi ha suficient descriptors de fitxers disponibles.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Only connect to nodes in network <net> (ipv4, ipv6 or onion)</source>
|
||||
<translation>Només connecta als nodes de la xarxa <net> (ipv4, ipv6 o onion)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Rebuild block chain index from current blk000??.dat files</source>
|
||||
<translation>Reconstrueix l'índex de la cadena de blocs dels fitxers actuals blk000??.dat</translation>
|
||||
@@ -2861,6 +2978,10 @@ per exemple: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>This is intended for regression testing tools and app development.</source>
|
||||
<translation>Això es així per a eines de proves de regressió per al desenvolupament d'aplicacions.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Use UPnP to map the listening port (default: %u)</source>
|
||||
<translation>Utilitza UPnP per a mapejar el port d'escolta (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Verifying blocks...</source>
|
||||
<translation>S'estan verificant els blocs...</translation>
|
||||
@@ -2901,6 +3022,10 @@ per exemple: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Cannot obtain a lock on data directory %s. Bitcoin Core is probably already running.</source>
|
||||
<translation>No es pot obtenir un bloqueig del directori de dades %s. El Bitcoin Core probablement ja s'estigui executant.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Continuously rate-limit free transactions to <n>*1000 bytes per minute (default:%u)</source>
|
||||
<translation>Limita contínuament la freqüència de les transaccions gratuïtes a <n>*1000 bytes per minut (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Create new files with system default permissions, instead of umask 077 (only effective with disabled wallet functionality)</source>
|
||||
<translation>Crea fitxers nous amb els permisos per defecte del sistema, en comptes de l'umask 077 (només efectiu amb la funcionalitat de moneder inhabilitada)</translation>
|
||||
@@ -2925,18 +3050,69 @@ per exemple: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Fees (in BTC/Kb) smaller than this are considered zero fee for transaction creation (default: %s)</source>
|
||||
<translation>Comissions (en BTC/Kb) inferiors a això es consideren de comissió zero per a la creació de la transacció (per defecte: %s)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>If paytxfee is not set, include enough fee so transactions begin confirmation on average within n blocks (default: %u)</source>
|
||||
<translation>Si no s'especifica una paytxfee (comissió de transacció de pagament), inclogueu suficient comissió per tal que les transaccions comencin a confirmar-se en una mitja de n blocs (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Invalid amount for -maxtxfee=<amount>: '%s' (must be at least the minrelay fee of %s to prevent stuck transactions)</source>
|
||||
<translation>Import no vàlid per a -maxtxfee=<amount>: '%s' (cal que sigui com a mínim la comissió de minrelay de %s per evitar que les comissions s'encallin)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Maximum size of data in data carrier transactions we relay and mine (default: %u)</source>
|
||||
<translation>Mida màxima de les dades en les transaccions de l'operador en què confiem i en les meves (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Maximum total fees to use in a single wallet transaction, setting too low may abort large transactions (default: %s)</source>
|
||||
<translation>Comissions totals màximes que s'utilitzaran en una transacció d'un únic moneder. Si es defineix un valor massa baix les transaccions més grans poden interrompre's (per defecte: %s)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Query for peer addresses via DNS lookup, if low on addresses (default: 1 unless -connect)</source>
|
||||
<translation>Consulta a adreces d'iguals a través de DNS, si es troba baix en adreces (per defecte: 1 a menys que -connect)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Require high priority for relaying free or low-fee transactions (default:%u)</source>
|
||||
<translation>Es requereix una prioritat alta per retransmetre transaccions gratuïtes o de baixa comissió (per defecte:%u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Set maximum size of high-priority/low-fee transactions in bytes (default: %d)</source>
|
||||
<translation>Defineix la mida màxima de transaccions d'alta prioritat / baixa comissió en bytes (per defecte: %d)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Set the number of threads for coin generation if enabled (-1 = all cores, default: %d)</source>
|
||||
<translation>Defineix el nombre de fils per a la generació de moneda si està habilitat (-1 = tots els nuclis, per defecte: %d)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit <https://www.openssl.org/> and cryptographic software written by Eric Young and UPnP software written by Thomas Bernard.</source>
|
||||
<translation>Aquest producte inclou programari desenvolupat pel projecte OpenSSL per a ús a l'OpenSSL Toolkit <https://www.openssl.org/> i programari criptogràfic escrit per Eric Young i programari UPnP escrit per Thomas Bernard.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>To use bitcoind, or the -server option to bitcoin-qt, you must set an rpcpassword in the configuration file:
|
||||
%s
|
||||
It is recommended you use the following random password:
|
||||
rpcuser=bitcoinrpc
|
||||
rpcpassword=%s
|
||||
(you do not need to remember this password)
|
||||
The username and password MUST NOT be the same.
|
||||
If the file does not exist, create it with owner-readable-only file permissions.
|
||||
It is also recommended to set alertnotify so you are notified of problems;
|
||||
for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
</source>
|
||||
<translation>Per utilitzar bitcoind, o l'opció de serviddor de bitcoin-qt, heu de definir una rpcpassword en el fitxer de configuració:
|
||||
%s
|
||||
Es recomana que utilitzeu la contrasenya aleatòria següent:
|
||||
rpcuser=bitcoinrpc
|
||||
rpcpassword=%s
|
||||
(no cal que recordeu la contrasenya)
|
||||
El nom d'usuari i la contrasenya NO han de ser els mateixos.
|
||||
Si el fitxer no existeix, creeu-ne un amb permisos de lectura només per al seu propietari.
|
||||
Es recomana definir alertnotify per tal de ser notificat de qualsevol problema;
|
||||
per exemple: alertnotify=echo %%s | mail -s "Avís de Bitcoin" admin@foo.com</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Warning: -maxtxfee is set very high! Fees this large could be paid on a single transaction.</source>
|
||||
<translation>Avís: s'ha especificat un -maxtxfee molt alt! Comissions tan grans podrien pagar-se en una única transacció.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Warning: Please check that your computer's date and time are correct! If your clock is wrong Bitcoin Core will not work properly.</source>
|
||||
<translation>Avís: comproveu que la data i hora del vostre ordinador siguin correctes! Si el vostre rellotge no és correcte, el Bitcoin Core no funcionarà correctament.</translation>
|
||||
@@ -2945,6 +3121,10 @@ per exemple: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Whitelisted peers cannot be DoS banned and their transactions are always relayed, even if they are already in the mempool, useful e.g. for a gateway</source>
|
||||
<translation>Els iguals en la llista blanca no poden ser bandejats per DoS i es transmetran sempre llurs transaccions, fins i tot si ja són a la mempool. Això és útil, p. ex., per a una passarel·la</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Accept public REST requests (default: %u)</source>
|
||||
<translation>Accepta sol·licituds REST públiques (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Cannot resolve -whitebind address: '%s'</source>
|
||||
<translation>No es pot resoldre l'adreça -whitebind: «%s»</translation>
|
||||
@@ -2965,6 +3145,10 @@ per exemple: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Error loading wallet.dat: Wallet requires newer version of Bitcoin Core</source>
|
||||
<translation>Error en carregar wallet.dat: el moneder requereix una versió més nova del Bitcoin core</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error reading from database, shutting down.</source>
|
||||
<translation>Error en llegir la base de dades, tancant.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error: Unsupported argument -tor found, use -onion.</source>
|
||||
<translation>Error: s'ha trobat un argument -tor no acceptat. Feu servir -onion.</translation>
|
||||
@@ -2981,6 +3165,10 @@ per exemple: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Initialization sanity check failed. Bitcoin Core is shutting down.</source>
|
||||
<translation>Ha fallat la inicialització de la comprovació de validesa. El Bitcoin Core s'està aturant.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Invalid amount for -maxtxfee=<amount>: '%s'</source>
|
||||
<translation>Import no vàlid per a -maxtxfee=<amount>: '%s'</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Invalid amount for -minrelaytxfee=<amount>: '%s'</source>
|
||||
<translation>Import no vàlid per a -minrelaytxfee=<amount>: «%s»</translation>
|
||||
@@ -2998,8 +3186,8 @@ per exemple: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<translation>S'ha especificat una màscara de xarxa no vàlida a -whitelist: «%s»</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Keep at most <n> unconnectable blocks in memory (default: %u)</source>
|
||||
<translation>Manté com a màxim <n> blocs no connectables en memòria (per defecte: %u)</translation>
|
||||
<source>Keep at most <n> unconnectable transactions in memory (default: %u)</source>
|
||||
<translation>Manté com a màxim <n> transaccions no connectables en memòria (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Need to specify a port with -whitebind: '%s'</source>
|
||||
@@ -3009,10 +3197,6 @@ per exemple: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Node relay options:</source>
|
||||
<translation>Opcions de transmissió del node:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Print block on startup, if found in block index</source>
|
||||
<translation>Imprimeix el block a l'inici, si es troba l'índex de blocs</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>RPC SSL options: (see the Bitcoin Wiki for SSL setup instructions)</source>
|
||||
<translation>Opcions RPC SSL: (veieu el wiki del Bitcoin per a instruccions de configuració de l'SSL)</translation>
|
||||
@@ -3021,6 +3205,10 @@ per exemple: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>RPC server options:</source>
|
||||
<translation>Opcions del servidor RPC:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>RPC support for HTTP persistent connections (default: %d)</source>
|
||||
<translation>Suport RPC per a connexions HTTP persistents (per defecte: %d)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Randomly drop 1 of every <n> network messages</source>
|
||||
<translation>Descarta a l'atzar 1 de cada <n> missatges de la xarxa</translation>
|
||||
@@ -3033,6 +3221,10 @@ per exemple: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Send trace/debug info to console instead of debug.log file</source>
|
||||
<translation>Envia informació de traça/depuració a la consola en comptes del fitxer debug.log</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Send transactions as zero-fee transactions if possible (default: %u)</source>
|
||||
<translation>Envia les transaccions com a transaccions de comissió zero sempre que sigui possible (per defecte: %u) </translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show all debugging options (usage: --help -help-debug)</source>
|
||||
<translation>Mostra totes les opcions de depuració (ús: --help --help-debug)</translation>
|
||||
@@ -3057,6 +3249,10 @@ per exemple: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Transaction amounts must be positive</source>
|
||||
<translation>Els imports de les transaccions han de ser positius</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Transaction too large for fee policy</source>
|
||||
<translation>Transacció massa gran per a la política de comissions</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Transaction too large</source>
|
||||
<translation>La transacció és massa gran</translation>
|
||||
@@ -3141,14 +3337,170 @@ per exemple: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Error loading wallet.dat: Wallet corrupted</source>
|
||||
<translation>Error en carregar wallet.dat: Moneder corrupte</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>(1 = keep tx meta data e.g. account owner and payment request information, 2 = drop tx meta data)</source>
|
||||
<translation>(1 = manté les metadades de les tx, p. ex., propietari del compte i informació de sol·licitud del pagament, 2 = prescindeix de les metadades de les tx)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Flush database activity from memory pool to disk log every <n> megabytes (default: %u)</source>
|
||||
<translation>Buida l'activitat de la base de dades de la memòria disponible al registre del disc cada <n> megabytes (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>How thorough the block verification of -checkblocks is (0-4, default: %u)</source>
|
||||
<translation>Com d'exhaustiva és la verificació de blocs del -checkblocks (0-4, per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Log transaction priority and fee per kB when mining blocks (default: %u)</source>
|
||||
<translation>Enregistreu la prioritat de la transacció i la comissió per kB en minar blocs (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Maintain a full transaction index, used by the getrawtransaction rpc call (default: %u)</source>
|
||||
<translation>Manté un índex complet de transaccions, utilitzat per la crida rpc getrawtransaction (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Number of seconds to keep misbehaving peers from reconnecting (default: %u)</source>
|
||||
<translation>Nombre de segons necessaris perquè els iguals de comportament qüestionable puguin tornar a connectar-se (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Output debugging information (default: %u, supplying <category> is optional)</source>
|
||||
<translation>Informació de sortida de la depuració (per defecte: %u, proporcionar <category> és opcional)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Use separate SOCKS5 proxy to reach peers via Tor hidden services (default: %s)</source>
|
||||
<translation>Utilitza un proxy SOCKS4 apart per a arribar als iguals a través de serveis ocults de Tor (per defecte: %s)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>(default: %s)</source>
|
||||
<translation>(per defecte: %s)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Acceptable ciphers (default: %s)</source>
|
||||
<translation>Xifrats acceptables (per defecte: %s)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Always query for peer addresses via DNS lookup (default: %u)</source>
|
||||
<translation>Demana sempre les adreces dels iguals a través de consultes DNS (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Disable safemode, override a real safe mode event (default: %u)</source>
|
||||
<translation>Inhabilita el mode segur, sobreescriu un esdeveniment de mode segur real (per defecte: %u) </translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error loading wallet.dat</source>
|
||||
<translation>Error en carregar wallet.dat</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Force safe mode (default: %u)</source>
|
||||
<translation>Força el mode segur (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Generate coins (default: %u)</source>
|
||||
<translation>Genera monedes (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>How many blocks to check at startup (default: %u, 0 = all)</source>
|
||||
<translation>Quants blocs per comprovar a l'inici (per defecte: %u, 0 = tots)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Include IP addresses in debug output (default: %u)</source>
|
||||
<translation>Inclou l'adreça IP a la sortida de depuració (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Invalid -proxy address: '%s'</source>
|
||||
<translation>Adreça -proxy invalida: '%s'</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Limit size of signature cache to <n> entries (default: %u)</source>
|
||||
<translation>Limita la mida de la cau de signatura a <n> entrades (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Listen for JSON-RPC connections on <port> (default: %u or testnet: %u)</source>
|
||||
<translation>Escolta les connexions JSON-RPC en <port> (per defecte: %u o testnet: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Listen for connections on <port> (default: %u or testnet: %u)</source>
|
||||
<translation>Escolta les connexions en <port> (per defecte: %u o testnet: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Maintain at most <n> connections to peers (default: %u)</source>
|
||||
<translation>Manté com a màxim <n> connexions a iguals (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Maximum per-connection receive buffer, <n>*1000 bytes (default: %u)</source>
|
||||
<translation>Memòria intermèdia màxima de recepció per connexió, <n>*1000 bytes (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Maximum per-connection send buffer, <n>*1000 bytes (default: %u)</source>
|
||||
<translation>Memòria intermèdia màxima d'enviament per connexió, <n>*1000 bytes (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Only accept block chain matching built-in checkpoints (default: %u)</source>
|
||||
<translation>Només accepta els punts de control integrats que coincideixen amb la cadena de blocs (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Prepend debug output with timestamp (default: %u)</source>
|
||||
<translation>Posa davant de la sortida de depuració una marca horària (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Relay and mine data carrier transactions (default: %u)</source>
|
||||
<translation>Retransmet i mina les transaccions de l'operador (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Relay non-P2SH multisig (default: %u)</source>
|
||||
<translation>Retransmet multisig no P2SH (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Run a thread to flush wallet periodically (default: %u)</source>
|
||||
<translation>Executa un fil per buidar el moneder periòdicament (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Server certificate file (default: %s)</source>
|
||||
<translation>Fitxer de certificat del servidor (per defecte: %s)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Server private key (default: %s)</source>
|
||||
<translation>Clau privada del servidor (per defecte: %s)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Set key pool size to <n> (default: %u)</source>
|
||||
<translation>Defineix la mida clau disponible a <n> (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Set minimum block size in bytes (default: %u)</source>
|
||||
<translation>Defineix la mida de bloc mínima en bytes (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Set the number of threads to service RPC calls (default: %d)</source>
|
||||
<translation>Defineix el nombre de fils a crides de servei RPC (per defecte: %d)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Sets the DB_PRIVATE flag in the wallet db environment (default: %u)</source>
|
||||
<translation>Defineix el senyalador DB_PRIVATE en l'entorn db del moneder (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Specify configuration file (default: %s)</source>
|
||||
<translation>Especifica el fitxer de configuració (per defecte: %s)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Specify connection timeout in milliseconds (minimum: 1, default: %d)</source>
|
||||
<translation>Especifica el temps d'espera de la connexió en milisegons (mínim: 1, per defecte: %d)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Specify pid file (default: %s)</source>
|
||||
<translation>Especifica el fitxer pid (per defecte: %s)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Spend unconfirmed change when sending transactions (default: %u)</source>
|
||||
<translation>Gasta el canvi no confirmat en enviar les transaccions (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Stop running after importing blocks from disk (default: %u)</source>
|
||||
<translation>Atura l'execució després d'importar blocs del disc (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Threshold for disconnecting misbehaving peers (default: %u)</source>
|
||||
<translation>Llindar per a desconnectar els iguals de comportament qüestionable (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unknown network specified in -onlynet: '%s'</source>
|
||||
<translation>Xarxa desconeguda especificada a -onlynet: '%s'</translation>
|
||||
@@ -3165,10 +3517,6 @@ per exemple: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Invalid amount for -paytxfee=<amount>: '%s'</source>
|
||||
<translation>Import no vàlid per a -paytxfee=<amount>: «%s»</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Invalid amount</source>
|
||||
<translation>Import no vàlid</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Insufficient funds</source>
|
||||
<translation>Balanç insuficient</translation>
|
||||
@@ -3201,10 +3549,6 @@ per exemple: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Done loading</source>
|
||||
<translation>Ha acabat la càrrega</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>To use the %s option</source>
|
||||
<translation>Utilitza l'opció %s</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>Error</translation>
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<TS language="ca@valencia" version="2.0">
|
||||
<TS language="ca@valencia" version="2.1">
|
||||
<context>
|
||||
<name>AddressBookPage</name>
|
||||
<message>
|
||||
<source>Double-click to edit address or label</source>
|
||||
<translation>Feu doble clic per editar l'adreça o l'etiqueta</translation>
|
||||
<source>Right-click to edit address or label</source>
|
||||
<translation>Feu clic dret per a editar l'adreça o l'etiqueta</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Create a new address</source>
|
||||
@@ -496,6 +496,10 @@ Address: %4
|
||||
</context>
|
||||
<context>
|
||||
<name>CoinControlDialog</name>
|
||||
<message>
|
||||
<source>Coin Selection</source>
|
||||
<translation>Selecció de moneda</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Quantity:</source>
|
||||
<translation>Quantitat:</translation>
|
||||
@@ -544,6 +548,14 @@ Address: %4
|
||||
<source>Amount</source>
|
||||
<translation>Quantitat</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Received with label</source>
|
||||
<translation>Rebut amb l'etiqueta</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Received with address</source>
|
||||
<translation>Rebut amb l'adreça</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Date</source>
|
||||
<translation>Data</translation>
|
||||
@@ -998,6 +1010,14 @@ Address: %4
|
||||
<source>Map port using &UPnP</source>
|
||||
<translation>Port obert amb &UPnP</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Connect to the Bitcoin network through a SOCKS5 proxy.</source>
|
||||
<translation>Connecta a la xarxa Bitcoin a través d'un proxy SOCKS5.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Connect through SOCKS5 proxy (default proxy):</source>
|
||||
<translation>&Connecta a través d'un proxy SOCKS5 (proxy per defecte):</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Proxy &IP:</source>
|
||||
<translation>&IP del proxy:</translation>
|
||||
@@ -1129,6 +1149,10 @@ Address: %4
|
||||
<source>Mined balance that has not yet matured</source>
|
||||
<translation>Balanç minat que encara no ha madurat</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Balances</source>
|
||||
<translation>Balances</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Total:</source>
|
||||
<translation>Total:</translation>
|
||||
@@ -1141,6 +1165,14 @@ Address: %4
|
||||
<source>Your current balance in watch-only addresses</source>
|
||||
<translation>El vostre balanç actual en adreces de només lectura</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Spendable:</source>
|
||||
<translation>Que es pot gastar:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Recent transactions</source>
|
||||
<translation>Transaccions recents</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unconfirmed transactions to watch-only addresses</source>
|
||||
<translation>Transaccions sense confirmar a adreces de només lectura</translation>
|
||||
@@ -1220,6 +1252,14 @@ Address: %4
|
||||
<source>Refund from %1</source>
|
||||
<translation>Reemborsament de %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Payment request %1 is too large (%2 bytes, allowed %3 bytes).</source>
|
||||
<translation>La sol·licitud de pagament %1 és massa gran (%2 bytes, permés %3 bytes).</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Payment request DoS protection</source>
|
||||
<translation>Protecció de DoS per a la sol·licitud de pagament</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error communicating with %1: %2</source>
|
||||
<translation>Error en comunicar amb %1: %2</translation>
|
||||
@@ -1776,6 +1816,70 @@ Address: %4
|
||||
<source>Custom change address</source>
|
||||
<translation>Personalitza l'adreça de canvi</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Transaction Fee:</source>
|
||||
<translation>Comissió de transacció</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Choose...</source>
|
||||
<translation>Tria...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>collapse fee-settings</source>
|
||||
<translation>redueix els paràmetres de comissió</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>per kilobyte</source>
|
||||
<translation>per kilobyte</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>If the custom fee is set to 1000 satoshis and the transaction is only 250 bytes, then "per kilobyte" only pays 250 satoshis in fee, while "total at least" pays 1000 satoshis. For transactions bigger than a kilobyte both pay by kilobyte.</source>
|
||||
<translation>Si la comissió personalitzada es defineix a 1000 satoshis i la transacció és de només 250 bytes, llavors «per kilobyte» només es paguen 250 satoshis en una comissió, mentre que amb la de «total com a mínim» es pagarien 1000 satoshis. Per a transaccions superiors al kilobyte, en tots dos casos es paga per kilobyte.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>total at least</source>
|
||||
<translation>total com a mínim</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Paying only the minimum fee is just fine as long as there is less transaction volume than space in the blocks. But be aware that this can end up in a never confirming transaction once there is more demand for bitcoin transactions than the network can process.</source>
|
||||
<translation>No hi ha cap problema en pagar només la comissió mínima sempre que hi haja menys volum de transacció que espai en els blocs. Però tingueu present que això pot acabar en una transacció que mai es confirme una vegada hi haja més demanda de transaccions de bitcoins que la xarxa puga processar.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>(read the tooltip)</source>
|
||||
<translation>(llegiu l'indicador de funció)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Recommended:</source>
|
||||
<translation>Recomanada:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Custom:</source>
|
||||
<translation>Personalitzada:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>(Smart fee not initialized yet. This usually takes a few blocks...)</source>
|
||||
<translation>(No s'ha inicialitzat encara la comissió intel·ligent. Normalment pren uns pocs blocs...)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Confirmation time:</source>
|
||||
<translation>Temps de confirmació:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>normal</source>
|
||||
<translation>normal</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>fast</source>
|
||||
<translation>ràpid</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Send as zero-fee transaction if possible</source>
|
||||
<translation>Envia com a transacció de comissió zero si és possible</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>(confirmation may take longer)</source>
|
||||
<translation>(la confirmació pot trigar més temps)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Send to multiple recipients at once</source>
|
||||
<translation>Envia a múltiples destinataris al mateix temps</translation>
|
||||
@@ -1844,10 +1948,6 @@ Address: %4
|
||||
<source>Copy change</source>
|
||||
<translation>Copia el canvi</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Total Amount %1 (= %2)</source>
|
||||
<translation>Import total %1 (= %2)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>or</source>
|
||||
<translation>o</translation>
|
||||
@@ -1880,6 +1980,10 @@ Address: %4
|
||||
<source>The transaction was rejected! This might happen if some of the coins in your wallet were already spent, such as if you used a copy of wallet.dat and coins were spent in the copy but not marked as spent here.</source>
|
||||
<translation>S'ha rebutjat la transacció! Això pot passar si alguna de les monedes del vostre moneder ja s'han gastat; per exemple, si heu fet servir una còpia de seguretat del fitxer wallet.dat i s'hagueren gastat monedes de la còpia però sense marcar-les-hi com a gastades.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Pay only the minimum fee of %1</source>
|
||||
<translation>Paga només la comissió mínima de %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Warning: Invalid Bitcoin address</source>
|
||||
<translation>Avís: adreça Bitcoin no vàlida</translation>
|
||||
@@ -2392,6 +2496,10 @@ Address: %4
|
||||
<source>Type of transaction.</source>
|
||||
<translation>Tipus de transacció.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Whether or not a watch-only address is involved in this transaction.</source>
|
||||
<translation>Si està implicada o no una adreça només de lectura en la transacció.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Destination address of transaction.</source>
|
||||
<translation>Adreça del destinatari de la transacció.</translation>
|
||||
@@ -2487,6 +2595,10 @@ Address: %4
|
||||
<source>Export Transaction History</source>
|
||||
<translation>Exporta l'historial de transacció</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Watch-only</source>
|
||||
<translation>Només de lectura</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Exporting Failed</source>
|
||||
<translation>L'exportació ha fallat</translation>
|
||||
@@ -2630,29 +2742,6 @@ Address: %4
|
||||
<source>Accept connections from outside (default: 1 if no -proxy or -connect)</source>
|
||||
<translation>Accepta connexions de fora (per defecte: 1 si no -proxy o -connect)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>%s, you must set a rpcpassword in the configuration file:
|
||||
%s
|
||||
It is recommended you use the following random password:
|
||||
rpcuser=bitcoinrpc
|
||||
rpcpassword=%s
|
||||
(you do not need to remember this password)
|
||||
The username and password MUST NOT be the same.
|
||||
If the file does not exist, create it with owner-readable-only file permissions.
|
||||
It is also recommended to set alertnotify so you are notified of problems;
|
||||
for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
</source>
|
||||
<translation>%s, heu d'establir una contrasenya RPC al fitxer de configuració: %s
|
||||
Es recomana que useu la següent contrasenya aleatòria:
|
||||
rpcuser=bitcoinrpc
|
||||
rpcpassword=%s
|
||||
(no necesiteu recordar esta contrasenya)
|
||||
El nom d'usuari i la contrasenya NO HAN de ser els mateixos.
|
||||
Si el fitxer no existeix, crea'l amb els permisos de fitxer de només lectura per al propietari.
|
||||
També es recomana establir la notificació d'alertes i així sereu notificat de les incidències;
|
||||
per exemple: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Bind to given address and always listen on it. Use [host]:port notation for IPv6</source>
|
||||
<translation>Vincula a una adreça específica i sempre escolta-hi. Utilitza la notació [host]:port per IPv6</translation>
|
||||
@@ -2661,18 +2750,14 @@ per exemple: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Delete all wallet transactions and only recover those parts of the blockchain through -rescan on startup</source>
|
||||
<translation>Elimina totes les transaccions del moneder i només recupera aquelles de la cadena de blocs a través de -rescan a l'inici</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Distributed under the MIT software license, see the accompanying file COPYING or <http://www.opensource.org/licenses/mit-license.php>.</source>
|
||||
<translation>Distribuït sota llicència de programari MIT. Vegeu el fitxer acompanyant COPYING o <http://www.opensource.org/licenses/mit-license.php>.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Enter regression test mode, which uses a special chain in which blocks can be solved instantly.</source>
|
||||
<translation>Entra en el mode de proves de regressió, que utilitza una cadena especial en què els blocs poden resoldre's al moment.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error: The transaction was rejected! This might happen if some of the coins in your wallet were already spent, such as if you used a copy of wallet.dat and coins were spent in the copy but not marked as spent here.</source>
|
||||
<translation>Error: La transacció ha estat rebutjada. Això pot passar si alguna de les monedes del teu moneder ja s'han gastat, com si haguesis usat una copia de l'arxiu wallet.dat i s'hagueren gastat monedes de la copia però sense marcar com gastades en este.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds!</source>
|
||||
<translation>Error: Esta transacció requereix una comissió d'almenys %s degut al seu import, complexitat o per l'ús de fons recentment rebuts!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Execute command when a wallet transaction changes (%s in cmd is replaced by TxID)</source>
|
||||
<translation>Executa una orde quan una transacció del moneder canvie (%s en cmd es canvia per TxID)</translation>
|
||||
@@ -2713,6 +2798,10 @@ per exemple: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Warning: wallet.dat corrupt, data salvaged! Original wallet.dat saved as wallet.{timestamp}.bak in %s; if your balance or transactions are incorrect you should restore from a backup.</source>
|
||||
<translation>Avís: el fitxer wallet.dat és corrupte, dades rescatades! L'arxiu wallet.dat original ha estat guardat com wallet.{estampa_temporal}.bak al directori %s; si el teu balanç o transaccions son incorrectes hauries de restaurar-lo de un backup.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Whitelist peers connecting from the given netmask or IP address. Can be specified multiple times.</source>
|
||||
<translation>Afig a la llista blanca els iguals que es connecten de la màscara de xarxa o adreça IP donada. Es pot especificar moltes vegades.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>(default: 1)</source>
|
||||
<translation>(per defecte: 1)</translation>
|
||||
@@ -2777,10 +2866,6 @@ per exemple: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Error: Disk space is low!</source>
|
||||
<translation>Error: Espai al disc baix!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error: Wallet locked, unable to create transaction!</source>
|
||||
<translation>Error: El moneder està bloquejat, no és possible crear la transacció!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Failed to listen on any port. Use -listen=0 if you want this.</source>
|
||||
<translation>Ha fallat escoltar a qualsevol port. Feu servir -listen=0 si voleu fer això.</translation>
|
||||
@@ -2805,6 +2890,10 @@ per exemple: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Not enough file descriptors available.</source>
|
||||
<translation>No hi ha suficient descriptors de fitxers disponibles.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Only connect to nodes in network <net> (ipv4, ipv6 or onion)</source>
|
||||
<translation>Només connecta als nodes de la xarxa <net> (ipv4, ipv6 o onion)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Rebuild block chain index from current blk000??.dat files</source>
|
||||
<translation>Reconstrueix l'índex de la cadena de blocs dels fitxers actuals blk000??.dat</translation>
|
||||
@@ -2825,6 +2914,10 @@ per exemple: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>This is intended for regression testing tools and app development.</source>
|
||||
<translation>Això s'així per a eines de proves de regressió per al desenvolupament d'aplicacions.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Use UPnP to map the listening port (default: %u)</source>
|
||||
<translation>Utilitza UPnP per a mapejar el port d'escolta (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Verifying blocks...</source>
|
||||
<translation>S'estan verificant els blocs...</translation>
|
||||
@@ -2889,6 +2982,18 @@ per exemple: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Fees (in BTC/Kb) smaller than this are considered zero fee for transaction creation (default: %s)</source>
|
||||
<translation>Comissions (en BTC/Kb) inferiors a això es consideren de comissió zero per a la creació de la transacció (per defecte: %s)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>If paytxfee is not set, include enough fee so transactions begin confirmation on average within n blocks (default: %u)</source>
|
||||
<translation>Si no s'especifica una paytxfee (comissió de transacció de pagament), inclogueu suficient comissió per tal que les transaccions comencen a confirmar-se en una mitja de n blocs (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Invalid amount for -maxtxfee=<amount>: '%s' (must be at least the minrelay fee of %s to prevent stuck transactions)</source>
|
||||
<translation>Import no vàlid per a -maxtxfee=<amount>: '%s' (cal que siga com a mínim la comissió de minrelay de %s per evitar que les comissions s'encallin)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Maximum size of data in data carrier transactions we relay and mine (default: %u)</source>
|
||||
<translation>Mida màxima de les dades en les transaccions de l'operador en què confiem i en les meues (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Query for peer addresses via DNS lookup, if low on addresses (default: 1 unless -connect)</source>
|
||||
<translation>Consulta a adreces d'iguals a través de DNS, si es troba baix en adreces (per defecte: 1 a menys que -connect)</translation>
|
||||
@@ -2897,10 +3002,41 @@ per exemple: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Set maximum size of high-priority/low-fee transactions in bytes (default: %d)</source>
|
||||
<translation>Defineix la mida màxima de transaccions d'alta prioritat / baixa comissió en bytes (per defecte: %d)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Set the number of threads for coin generation if enabled (-1 = all cores, default: %d)</source>
|
||||
<translation>Defineix el nombre de fils per a la generació de moneda si està habilitat (-1 = tots els nuclis, per defecte: %d)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit <https://www.openssl.org/> and cryptographic software written by Eric Young and UPnP software written by Thomas Bernard.</source>
|
||||
<translation>Este producte inclou programari desenvolupat pel projecte OpenSSL per a ús a l'OpenSSL Toolkit <https://www.openssl.org/> i programari criptogràfic escrit per Eric Young i programari UPnP escrit per Thomas Bernard.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>To use bitcoind, or the -server option to bitcoin-qt, you must set an rpcpassword in the configuration file:
|
||||
%s
|
||||
It is recommended you use the following random password:
|
||||
rpcuser=bitcoinrpc
|
||||
rpcpassword=%s
|
||||
(you do not need to remember this password)
|
||||
The username and password MUST NOT be the same.
|
||||
If the file does not exist, create it with owner-readable-only file permissions.
|
||||
It is also recommended to set alertnotify so you are notified of problems;
|
||||
for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
</source>
|
||||
<translation>Per utilitzar bitcoind, o l'opció de serviddor de bitcoin-qt, heu de definir una rpcpassword en el fitxer de configuració:
|
||||
%s
|
||||
Es recomana que utilitzeu la contrasenya aleatòria següent:
|
||||
rpcuser=bitcoinrpc
|
||||
rpcpassword=%s
|
||||
(no cal que recordeu la contrasenya)
|
||||
El nom d'usuari i la contrasenya NO han de ser els mateixos.
|
||||
Si el fitxer no existeix, creeu-ne un amb permisos de lectura només per al seu propietari.
|
||||
Es recomana definir alertnotify per tal de ser notificat de qualsevol problema;
|
||||
per exemple: alertnotify=echo %%s | mail -s "Avís de Bitcoin" admin@foo.com</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Warning: -maxtxfee is set very high! Fees this large could be paid on a single transaction.</source>
|
||||
<translation>Avís: s'ha especificat un -maxtxfee molt alt! Comissions tan grans podrien pagar-se en una única transacció.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Warning: Please check that your computer's date and time are correct! If your clock is wrong Bitcoin Core will not work properly.</source>
|
||||
<translation>Avís: comproveu que la data i hora del vostre ordinador siguen correctes! Si el vostre rellotge no és correcte, el Bitcoin Core no funcionarà correctament.</translation>
|
||||
@@ -2909,6 +3045,10 @@ per exemple: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Whitelisted peers cannot be DoS banned and their transactions are always relayed, even if they are already in the mempool, useful e.g. for a gateway</source>
|
||||
<translation>Els iguals en la llista blanca no poden ser bandejats per DoS i es transmetran sempre llurs transaccions, fins i tot si ja són a la mempool. Això és útil, p. ex., per a una passarel·la</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Accept public REST requests (default: %u)</source>
|
||||
<translation>Accepta sol·licituds REST públiques (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Cannot resolve -whitebind address: '%s'</source>
|
||||
<translation>No es pot resoldre l'adreça -whitebind: «%s»</translation>
|
||||
@@ -2929,6 +3069,10 @@ per exemple: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Error loading wallet.dat: Wallet requires newer version of Bitcoin Core</source>
|
||||
<translation>Error en carregar wallet.dat: el moneder requereix una versió més nova del Bitcoin core</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error reading from database, shutting down.</source>
|
||||
<translation>Error en llegir la base de dades, tancant.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error: Unsupported argument -tor found, use -onion.</source>
|
||||
<translation>Error: s'ha trobat un argument -tor no acceptat. Feu servir -onion.</translation>
|
||||
@@ -2945,6 +3089,10 @@ per exemple: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Initialization sanity check failed. Bitcoin Core is shutting down.</source>
|
||||
<translation>Ha fallat la inicialització de la comprovació de validesa. El Bitcoin Core s'està parant.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Invalid amount for -maxtxfee=<amount>: '%s'</source>
|
||||
<translation>Import no vàlid per a -maxtxfee=<amount>: '%s'</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Invalid amount for -minrelaytxfee=<amount>: '%s'</source>
|
||||
<translation>Import no vàlid per a -minrelaytxfee=<amount>: «%s»</translation>
|
||||
@@ -2962,8 +3110,8 @@ per exemple: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<translation>S'ha especificat una màscara de xarxa no vàlida a -whitelist: «%s»</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Keep at most <n> unconnectable blocks in memory (default: %u)</source>
|
||||
<translation>Manté com a màxim <n> blocs no connectables en memòria (per defecte: %u)</translation>
|
||||
<source>Keep at most <n> unconnectable transactions in memory (default: %u)</source>
|
||||
<translation>Manté com a màxim <n> transaccions no connectables en memòria (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Need to specify a port with -whitebind: '%s'</source>
|
||||
@@ -2973,10 +3121,6 @@ per exemple: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Node relay options:</source>
|
||||
<translation>Opcions de transmissió del node:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Print block on startup, if found in block index</source>
|
||||
<translation>Imprimeix el block a l'inici, si es troba l'índex de blocs</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>RPC SSL options: (see the Bitcoin Wiki for SSL setup instructions)</source>
|
||||
<translation>Opcions RPC SSL: (veieu el wiki del Bitcoin per a instruccions de configuració de l'SSL)</translation>
|
||||
@@ -2985,6 +3129,10 @@ per exemple: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>RPC server options:</source>
|
||||
<translation>Opcions del servidor RPC:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>RPC support for HTTP persistent connections (default: %d)</source>
|
||||
<translation>Suport RPC per a connexions HTTP persistents (per defecte: %d)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Randomly drop 1 of every <n> network messages</source>
|
||||
<translation>Descarta a l'atzar 1 de cada <n> missatges de la xarxa</translation>
|
||||
@@ -2997,6 +3145,10 @@ per exemple: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Send trace/debug info to console instead of debug.log file</source>
|
||||
<translation>Envia informació de traça/depuració a la consola en comptes del fitxer debug.log</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Send transactions as zero-fee transactions if possible (default: %u)</source>
|
||||
<translation>Envia les transaccions com a transaccions de comissió zero sempre que siga possible (per defecte: %u) </translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show all debugging options (usage: --help -help-debug)</source>
|
||||
<translation>Mostra totes les opcions de depuració (ús: --help --help-debug)</translation>
|
||||
@@ -3021,6 +3173,10 @@ per exemple: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Transaction amounts must be positive</source>
|
||||
<translation>Els imports de les transaccions han de ser positius</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Transaction too large for fee policy</source>
|
||||
<translation>Transacció massa gran per a la política de comissions</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Transaction too large</source>
|
||||
<translation>La transacció és massa gran</translation>
|
||||
@@ -3105,14 +3261,134 @@ per exemple: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Error loading wallet.dat: Wallet corrupted</source>
|
||||
<translation>Error en carregar wallet.dat: Moneder corrupte</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>(1 = keep tx meta data e.g. account owner and payment request information, 2 = drop tx meta data)</source>
|
||||
<translation>(1 = manté les metadades de les tx, p. ex., propietari del compte i informació de sol·licitud del pagament, 2 = prescindeix de les metadades de les tx)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>How thorough the block verification of -checkblocks is (0-4, default: %u)</source>
|
||||
<translation>Com d'exhaustiva és la verificació de blocs del -checkblocks (0-4, per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Maintain a full transaction index, used by the getrawtransaction rpc call (default: %u)</source>
|
||||
<translation>Manté un índex complet de transaccions, utilitzat per la crida rpc getrawtransaction (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Number of seconds to keep misbehaving peers from reconnecting (default: %u)</source>
|
||||
<translation>Nombre de segons necessaris perquè els iguals de comportament qüestionable puguen tornar a connectar-se (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Output debugging information (default: %u, supplying <category> is optional)</source>
|
||||
<translation>Informació d'eixida de la depuració (per defecte: %u, proporcionar <category> és opcional)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Use separate SOCKS5 proxy to reach peers via Tor hidden services (default: %s)</source>
|
||||
<translation>Utilitza un proxy SOCKS4 apart per a arribar als iguals a través de serveis ocults de Tor (per defecte: %s)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>(default: %s)</source>
|
||||
<translation>(per defecte: %s)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Acceptable ciphers (default: %s)</source>
|
||||
<translation>Xifrats acceptables (per defecte: %s)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Always query for peer addresses via DNS lookup (default: %u)</source>
|
||||
<translation>Demana sempre les adreces dels iguals a través de consultes DNS (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error loading wallet.dat</source>
|
||||
<translation>Error en carregar wallet.dat</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Generate coins (default: %u)</source>
|
||||
<translation>Genera monedes (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>How many blocks to check at startup (default: %u, 0 = all)</source>
|
||||
<translation>Quants blocs per comprovar a l'inici (per defecte: %u, 0 = tots)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Include IP addresses in debug output (default: %u)</source>
|
||||
<translation>Inclou l'adreça IP a l'eixida de depuració (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Invalid -proxy address: '%s'</source>
|
||||
<translation>Adreça -proxy invalida: '%s'</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Listen for JSON-RPC connections on <port> (default: %u or testnet: %u)</source>
|
||||
<translation>Escolta les connexions JSON-RPC en <port> (per defecte: %u o testnet: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Listen for connections on <port> (default: %u or testnet: %u)</source>
|
||||
<translation>Escolta les connexions en <port> (per defecte: %u o testnet: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Maintain at most <n> connections to peers (default: %u)</source>
|
||||
<translation>Manté com a màxim <n> connexions a iguals (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Maximum per-connection receive buffer, <n>*1000 bytes (default: %u)</source>
|
||||
<translation>Memòria intermèdia màxima de recepció per connexió, <n>*1000 bytes (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Maximum per-connection send buffer, <n>*1000 bytes (default: %u)</source>
|
||||
<translation>Memòria intermèdia màxima d'enviament per connexió, <n>*1000 bytes (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Prepend debug output with timestamp (default: %u)</source>
|
||||
<translation>Posa davant de l'eixida de depuració una marca horària (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Relay and mine data carrier transactions (default: %u)</source>
|
||||
<translation>Retransmet i mina les transaccions de l'operador (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Relay non-P2SH multisig (default: %u)</source>
|
||||
<translation>Retransmet multisig no P2SH (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Server certificate file (default: %s)</source>
|
||||
<translation>Fitxer de certificat del servidor (per defecte: %s)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Server private key (default: %s)</source>
|
||||
<translation>Clau privada del servidor (per defecte: %s)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Set key pool size to <n> (default: %u)</source>
|
||||
<translation>Defineix la mida clau disponible a <n> (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Set minimum block size in bytes (default: %u)</source>
|
||||
<translation>Defineix la mida de bloc mínima en bytes (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Set the number of threads to service RPC calls (default: %d)</source>
|
||||
<translation>Defineix el nombre de fils a crides de servei RPC (per defecte: %d)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Specify configuration file (default: %s)</source>
|
||||
<translation>Especifica el fitxer de configuració (per defecte: %s)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Specify connection timeout in milliseconds (minimum: 1, default: %d)</source>
|
||||
<translation>Especifica el temps d'espera de la connexió en milisegons (mínim: 1, per defecte: %d)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Specify pid file (default: %s)</source>
|
||||
<translation>Especifica el fitxer pid (per defecte: %s)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Spend unconfirmed change when sending transactions (default: %u)</source>
|
||||
<translation>Gasta el canvi no confirmat en enviar les transaccions (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Threshold for disconnecting misbehaving peers (default: %u)</source>
|
||||
<translation>Llindar per a desconnectar els iguals de comportament qüestionable (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unknown network specified in -onlynet: '%s'</source>
|
||||
<translation>Xarxa desconeguda especificada a -onlynet: '%s'</translation>
|
||||
@@ -3129,10 +3405,6 @@ per exemple: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Invalid amount for -paytxfee=<amount>: '%s'</source>
|
||||
<translation>Import no vàlid per a -paytxfee=<amount>: «%s»</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Invalid amount</source>
|
||||
<translation>Import no vàlid</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Insufficient funds</source>
|
||||
<translation>Balanç insuficient</translation>
|
||||
@@ -3165,10 +3437,6 @@ per exemple: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Done loading</source>
|
||||
<translation>Ha acabat la càrrega</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>To use the %s option</source>
|
||||
<translation>Utilitza l'opció %s</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>Error</translation>
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<TS language="ca_ES" version="2.0">
|
||||
<TS language="ca_ES" version="2.1">
|
||||
<context>
|
||||
<name>AddressBookPage</name>
|
||||
<message>
|
||||
<source>Double-click to edit address or label</source>
|
||||
<translation>Feu doble clic per editar l'adreça o l'etiqueta</translation>
|
||||
<source>Right-click to edit address or label</source>
|
||||
<translation>Feu clic dret per a editar l'adreça o l'etiqueta</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Create a new address</source>
|
||||
@@ -478,6 +478,10 @@
|
||||
<source>Up to date</source>
|
||||
<translation>Al dia</translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<source>Processed %n blocks of transaction history.</source>
|
||||
<translation><numerusform>S'ha processat %n bloc de l'historial de transacció.</numerusform><numerusform>S'han processat %n blocs de l'historial de transacció.</numerusform></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Catching up...</source>
|
||||
<translation>S'està posant al dia ...</translation>
|
||||
@@ -516,6 +520,10 @@ Address: %4
|
||||
</context>
|
||||
<context>
|
||||
<name>CoinControlDialog</name>
|
||||
<message>
|
||||
<source>Coin Selection</source>
|
||||
<translation>Selecció de moneda</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Quantity:</source>
|
||||
<translation>Quantitat:</translation>
|
||||
@@ -534,7 +542,7 @@ Address: %4
|
||||
</message>
|
||||
<message>
|
||||
<source>Fee:</source>
|
||||
<translation>Quota:</translation>
|
||||
<translation>Comissió</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Dust:</source>
|
||||
@@ -542,7 +550,7 @@ Address: %4
|
||||
</message>
|
||||
<message>
|
||||
<source>After Fee:</source>
|
||||
<translation>Quota posterior:</translation>
|
||||
<translation>Comissió posterior:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Change:</source>
|
||||
@@ -562,7 +570,15 @@ Address: %4
|
||||
</message>
|
||||
<message>
|
||||
<source>Amount</source>
|
||||
<translation>Quantitat</translation>
|
||||
<translation>Import</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Received with label</source>
|
||||
<translation>Rebut amb l'etiqueta</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Received with address</source>
|
||||
<translation>Rebut amb l'adreça</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Date</source>
|
||||
@@ -694,7 +710,7 @@ Address: %4
|
||||
</message>
|
||||
<message>
|
||||
<source>This means a fee of at least %1 per kB is required.</source>
|
||||
<translation>Això comporta una comissi d'almenys %1 per kB.</translation>
|
||||
<translation>Això comporta una comissió d'almenys %1 per kB.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Can vary +/- 1 byte per input.</source>
|
||||
@@ -729,7 +745,7 @@ Address: %4
|
||||
<name>EditAddressDialog</name>
|
||||
<message>
|
||||
<source>Edit Address</source>
|
||||
<translation>Editar Adreça</translation>
|
||||
<translation>Edita l'adreça</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Label</source>
|
||||
@@ -839,7 +855,7 @@ Address: %4
|
||||
</message>
|
||||
<message>
|
||||
<source>Set language, for example "de_DE" (default: system locale)</source>
|
||||
<translation>Defineix un idioma, per exemple "de_DE" (per defecte: preferències locals de sistema)</translation>
|
||||
<translation>Defineix un idioma, per exemple «de_DE» (per defecte: preferències locals de sistema)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Start minimized</source>
|
||||
@@ -896,7 +912,15 @@ Address: %4
|
||||
<source>Error</source>
|
||||
<translation>Error</translation>
|
||||
</message>
|
||||
</context>
|
||||
<message numerus="yes">
|
||||
<source>%n GB of free space available</source>
|
||||
<translation><numerusform>%n GB d'espai lliure disponible</numerusform><numerusform>%n GB d'espai lliure disponible</numerusform></translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<source>(of %n GB needed)</source>
|
||||
<translation><numerusform>(de %n GB necessari)</numerusform><numerusform>(de %n GB necessaris)</numerusform></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>OpenURIDialog</name>
|
||||
<message>
|
||||
@@ -1018,6 +1042,14 @@ Address: %4
|
||||
<source>Map port using &UPnP</source>
|
||||
<translation>Port obert amb &UPnP</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Connect to the Bitcoin network through a SOCKS5 proxy.</source>
|
||||
<translation>Connecta a la xarxa Bitcoin a través d'un proxy SOCKS5.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Connect through SOCKS5 proxy (default proxy):</source>
|
||||
<translation>&Connecta a través d'un proxy SOCKS5 (proxy per defecte):</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Proxy &IP:</source>
|
||||
<translation>&IP del proxy:</translation>
|
||||
@@ -1149,6 +1181,10 @@ Address: %4
|
||||
<source>Mined balance that has not yet matured</source>
|
||||
<translation>Balanç minat que encara no ha madurat</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Balances</source>
|
||||
<translation>Balances</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Total:</source>
|
||||
<translation>Total:</translation>
|
||||
@@ -1161,6 +1197,14 @@ Address: %4
|
||||
<source>Your current balance in watch-only addresses</source>
|
||||
<translation>El vostre balanç actual en adreces de només lectura</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Spendable:</source>
|
||||
<translation>Que es pot gastar:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Recent transactions</source>
|
||||
<translation>Transaccions recents</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unconfirmed transactions to watch-only addresses</source>
|
||||
<translation>Transaccions sense confirmar a adreces de només lectura</translation>
|
||||
@@ -1240,6 +1284,14 @@ Address: %4
|
||||
<source>Refund from %1</source>
|
||||
<translation>Reemborsament de %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Payment request %1 is too large (%2 bytes, allowed %3 bytes).</source>
|
||||
<translation>La sol·licitud de pagament %1 és massa gran (%2 bytes, permès %3 bytes).</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Payment request DoS protection</source>
|
||||
<translation>Protecció de DoS per a la sol·licitud de pagament</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error communicating with %1: %2</source>
|
||||
<translation>Error en comunicar amb %1: %2</translation>
|
||||
@@ -1280,7 +1332,7 @@ Address: %4
|
||||
<name>QObject</name>
|
||||
<message>
|
||||
<source>Amount</source>
|
||||
<translation>Quantitat</translation>
|
||||
<translation>Import</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Enter a Bitcoin address (e.g. %1)</source>
|
||||
@@ -1782,7 +1834,7 @@ Address: %4
|
||||
</message>
|
||||
<message>
|
||||
<source>After Fee:</source>
|
||||
<translation>Quota posterior:</translation>
|
||||
<translation>Comissió posterior:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Change:</source>
|
||||
@@ -1796,6 +1848,78 @@ Address: %4
|
||||
<source>Custom change address</source>
|
||||
<translation>Personalitza l'adreça de canvi</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Transaction Fee:</source>
|
||||
<translation>Comissió de transacció</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Choose...</source>
|
||||
<translation>Tria...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>collapse fee-settings</source>
|
||||
<translation>redueix els paràmetres de comissió</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Minimize</source>
|
||||
<translation>Minimitza</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>If the custom fee is set to 1000 satoshis and the transaction is only 250 bytes, then "per kilobyte" only pays 250 satoshis in fee, while "at least" pays 1000 satoshis. For transactions bigger than a kilobyte both pay by kilobyte.</source>
|
||||
<translation>Si la comissió personalitzada es defineix a 1000 satoshis i la transacció és de només 250 bytes, llavors «per kilobyte» només es paguen 250 satoshis en una comissió, mentre que amb la de «com a mínim» es pagarien 1000 satoshis. Per a transaccions superiors al kilobyte, en tots dos casos es paga per kilobyte.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>per kilobyte</source>
|
||||
<translation>per kilobyte</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>If the custom fee is set to 1000 satoshis and the transaction is only 250 bytes, then "per kilobyte" only pays 250 satoshis in fee, while "total at least" pays 1000 satoshis. For transactions bigger than a kilobyte both pay by kilobyte.</source>
|
||||
<translation>Si la comissió personalitzada es defineix a 1000 satoshis i la transacció és de només 250 bytes, llavors «per kilobyte» només es paguen 250 satoshis en una comissió, mentre que amb la de «total com a mínim» es pagarien 1000 satoshis. Per a transaccions superiors al kilobyte, en tots dos casos es paga per kilobyte.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>total at least</source>
|
||||
<translation>total com a mínim</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Paying only the minimum fee is just fine as long as there is less transaction volume than space in the blocks. But be aware that this can end up in a never confirming transaction once there is more demand for bitcoin transactions than the network can process.</source>
|
||||
<translation>No hi ha cap problema en pagar només la comissió mínima sempre que hi hagi menys volum de transacció que espai en els blocs. Però tingueu present que això pot acabar en una transacció que mai es confirmi una vegada hi hagi més demanda de transaccions de bitcoins que la xarxa pugui processar.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>(read the tooltip)</source>
|
||||
<translation>(llegiu l'indicador de funció)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Recommended:</source>
|
||||
<translation>Recomanada:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Custom:</source>
|
||||
<translation>Personalitzada:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>(Smart fee not initialized yet. This usually takes a few blocks...)</source>
|
||||
<translation>(No s'ha inicialitzat encara la comissió intel·ligent. Normalment pren uns pocs blocs...)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Confirmation time:</source>
|
||||
<translation>Temps de confirmació:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>normal</source>
|
||||
<translation>normal</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>fast</source>
|
||||
<translation>ràpid</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Send as zero-fee transaction if possible</source>
|
||||
<translation>Envia com a transacció de comissió zero si és possible</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>(confirmation may take longer)</source>
|
||||
<translation>(la confirmació pot trigar més temps)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Send to multiple recipients at once</source>
|
||||
<translation>Envia a múltiples destinataris al mateix temps</translation>
|
||||
@@ -1846,7 +1970,7 @@ Address: %4
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy fee</source>
|
||||
<translation>Copia la comissi</translation>
|
||||
<translation>Copia la comissió</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy after fee</source>
|
||||
@@ -1864,10 +1988,6 @@ Address: %4
|
||||
<source>Copy change</source>
|
||||
<translation>Copia el canvi</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Total Amount %1 (= %2)</source>
|
||||
<translation>Import total %1 (= %2)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>or</source>
|
||||
<translation>o</translation>
|
||||
@@ -1886,7 +2006,7 @@ Address: %4
|
||||
</message>
|
||||
<message>
|
||||
<source>The total exceeds your balance when the %1 transaction fee is included.</source>
|
||||
<translation>El total excedeix el teu balanç quan s'afegeix la comisió a la transacció %1.</translation>
|
||||
<translation>El total excedeix el teu balanç quan s'afegeix la comissió a la transacció %1.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Duplicate address found, can only send to each address once per send operation.</source>
|
||||
@@ -1900,6 +2020,18 @@ Address: %4
|
||||
<source>The transaction was rejected! This might happen if some of the coins in your wallet were already spent, such as if you used a copy of wallet.dat and coins were spent in the copy but not marked as spent here.</source>
|
||||
<translation>S'ha rebutjat la transacció! Això pot passar si alguna de les monedes del vostre moneder ja s'han gastat; per exemple, si heu fet servir una còpia de seguretat del fitxer wallet.dat i s'haguessin gastat monedes de la còpia però sense marcar-les-hi com a gastades.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>A fee higher than %1 is considered an insanely high fee.</source>
|
||||
<translation>Una comissió superior a %1 es considera una comissió excessiva.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Pay only the minimum fee of %1</source>
|
||||
<translation>Paga només la comissió mínima de %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Estimated to begin confirmation within %1 block(s).</source>
|
||||
<translation>Estimat per a començar la confirmació en %1 bloc(s).</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Warning: Invalid Bitcoin address</source>
|
||||
<translation>Avís: adreça Bitcoin no vàlida</translation>
|
||||
@@ -2300,7 +2432,7 @@ Address: %4
|
||||
</message>
|
||||
<message>
|
||||
<source>Amount</source>
|
||||
<translation>Quantitat</translation>
|
||||
<translation>Import</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>true</source>
|
||||
@@ -2428,6 +2560,10 @@ Address: %4
|
||||
<source>Type of transaction.</source>
|
||||
<translation>Tipus de transacció.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Whether or not a watch-only address is involved in this transaction.</source>
|
||||
<translation>Si està implicada o no una adreça només de lectura en la transacció.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Destination address of transaction.</source>
|
||||
<translation>Adreça del destinatari de la transacció.</translation>
|
||||
@@ -2523,6 +2659,10 @@ Address: %4
|
||||
<source>Export Transaction History</source>
|
||||
<translation>Exporta l'historial de transacció</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Watch-only</source>
|
||||
<translation>Només de lectura</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Exporting Failed</source>
|
||||
<translation>L'exportació ha fallat</translation>
|
||||
@@ -2666,29 +2806,6 @@ Address: %4
|
||||
<source>Accept connections from outside (default: 1 if no -proxy or -connect)</source>
|
||||
<translation>Accepta connexions de fora (per defecte: 1 si no -proxy o -connect)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>%s, you must set a rpcpassword in the configuration file:
|
||||
%s
|
||||
It is recommended you use the following random password:
|
||||
rpcuser=bitcoinrpc
|
||||
rpcpassword=%s
|
||||
(you do not need to remember this password)
|
||||
The username and password MUST NOT be the same.
|
||||
If the file does not exist, create it with owner-readable-only file permissions.
|
||||
It is also recommended to set alertnotify so you are notified of problems;
|
||||
for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
</source>
|
||||
<translation>%s, heu de establir una contrasenya RPC al fitxer de configuració: %s
|
||||
Es recomana que useu la següent contrasenya aleatòria:
|
||||
rpcuser=bitcoinrpc
|
||||
rpcpassword=%s
|
||||
(no necesiteu recordar aquesta contrasenya)
|
||||
El nom d'usuari i la contrasenya NO HAN de ser els mateixos.
|
||||
Si el fitxer no existeix, crea'l amb els permisos de fitxer de només lectura per al propietari.
|
||||
També es recomana establir la notificació d'alertes i així sereu notificat de les incidències;
|
||||
per exemple: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Bind to given address and always listen on it. Use [host]:port notation for IPv6</source>
|
||||
<translation>Vincula a una adreça específica i sempre escolta-hi. Utilitza la notació [host]:port per IPv6</translation>
|
||||
@@ -2697,18 +2814,14 @@ per exemple: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Delete all wallet transactions and only recover those parts of the blockchain through -rescan on startup</source>
|
||||
<translation>Elimina totes les transaccions del moneder i només recupera aquelles de la cadena de blocs a través de -rescan a l'inici</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Distributed under the MIT software license, see the accompanying file COPYING or <http://www.opensource.org/licenses/mit-license.php>.</source>
|
||||
<translation>Distribuït sota llicència de programari MIT. Vegeu el fitxer acompanyant COPYING o <http://www.opensource.org/licenses/mit-license.php>.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Enter regression test mode, which uses a special chain in which blocks can be solved instantly.</source>
|
||||
<translation>Entra en el mode de proves de regressió, que utilitza una cadena especial en què els blocs poden resoldre's al moment.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error: The transaction was rejected! This might happen if some of the coins in your wallet were already spent, such as if you used a copy of wallet.dat and coins were spent in the copy but not marked as spent here.</source>
|
||||
<translation>Error: La transacció ha estat rebutjada. Això pot passar si alguna de les monedes del teu moneder ja s'han gastat, com si haguesis usat una copia de l'arxiu wallet.dat i s'haguessin gastat monedes de la copia però sense marcar com gastades en aquest.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds!</source>
|
||||
<translation>Error: Aquesta transacció requereix una comissió d'almenys %s degut al seu import, complexitat o per l'ús de fons recentment rebuts!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Execute command when a wallet transaction changes (%s in cmd is replaced by TxID)</source>
|
||||
<translation>Executa una ordre quan una transacció del moneder canviï (%s en cmd es canvia per TxID)</translation>
|
||||
@@ -2749,6 +2862,10 @@ per exemple: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Warning: wallet.dat corrupt, data salvaged! Original wallet.dat saved as wallet.{timestamp}.bak in %s; if your balance or transactions are incorrect you should restore from a backup.</source>
|
||||
<translation>Avís: el fitxer wallet.dat és corrupte, dades rescatades! L'arxiu wallet.dat original ha estat desat com wallet.{estampa_temporal}.bak al directori %s; si el teu balanç o transaccions son incorrectes hauries de restaurar-lo de un backup.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Whitelist peers connecting from the given netmask or IP address. Can be specified multiple times.</source>
|
||||
<translation>Afegeix a la llista blanca els iguals que es connecten de la màscara de xarxa o adreça IP donada. Es pot especificar moltes vegades.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>(default: 1)</source>
|
||||
<translation>(per defecte: 1)</translation>
|
||||
@@ -2813,10 +2930,6 @@ per exemple: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Error: Disk space is low!</source>
|
||||
<translation>Error: Espai al disc baix!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error: Wallet locked, unable to create transaction!</source>
|
||||
<translation>Error: El moneder està bloquejat, no és possible crear la transacció!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Failed to listen on any port. Use -listen=0 if you want this.</source>
|
||||
<translation>Ha fallat escoltar a qualsevol port. Feu servir -listen=0 si voleu fer això.</translation>
|
||||
@@ -2841,6 +2954,10 @@ per exemple: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Not enough file descriptors available.</source>
|
||||
<translation>No hi ha suficient descriptors de fitxers disponibles.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Only connect to nodes in network <net> (ipv4, ipv6 or onion)</source>
|
||||
<translation>Només connecta als nodes de la xarxa <net> (ipv4, ipv6 o onion)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Rebuild block chain index from current blk000??.dat files</source>
|
||||
<translation>Reconstrueix l'índex de la cadena de blocs dels fitxers actuals blk000??.dat</translation>
|
||||
@@ -2861,6 +2978,10 @@ per exemple: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>This is intended for regression testing tools and app development.</source>
|
||||
<translation>Això es així per a eines de proves de regressió per al desenvolupament d'aplicacions.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Use UPnP to map the listening port (default: %u)</source>
|
||||
<translation>Utilitza UPnP per a mapejar el port d'escolta (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Verifying blocks...</source>
|
||||
<translation>S'estan verificant els blocs...</translation>
|
||||
@@ -2901,6 +3022,10 @@ per exemple: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Cannot obtain a lock on data directory %s. Bitcoin Core is probably already running.</source>
|
||||
<translation>No es pot obtenir un bloqueig del directori de dades %s. El Bitcoin Core probablement ja s'estigui executant.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Continuously rate-limit free transactions to <n>*1000 bytes per minute (default:%u)</source>
|
||||
<translation>Limita contínuament la freqüència de les transaccions gratuïtes a <n>*1000 bytes per minut (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Create new files with system default permissions, instead of umask 077 (only effective with disabled wallet functionality)</source>
|
||||
<translation>Crea fitxers nous amb els permisos per defecte del sistema, en comptes de l'umask 077 (només efectiu amb la funcionalitat de moneder inhabilitada)</translation>
|
||||
@@ -2925,18 +3050,69 @@ per exemple: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Fees (in BTC/Kb) smaller than this are considered zero fee for transaction creation (default: %s)</source>
|
||||
<translation>Comissions (en BTC/Kb) inferiors a això es consideren de comissió zero per a la creació de la transacció (per defecte: %s)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>If paytxfee is not set, include enough fee so transactions begin confirmation on average within n blocks (default: %u)</source>
|
||||
<translation>Si no s'especifica una paytxfee (comissió de transacció de pagament), inclogueu suficient comissió per tal que les transaccions comencin a confirmar-se en una mitja de n blocs (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Invalid amount for -maxtxfee=<amount>: '%s' (must be at least the minrelay fee of %s to prevent stuck transactions)</source>
|
||||
<translation>Import no vàlid per a -maxtxfee=<amount>: '%s' (cal que sigui com a mínim la comissió de minrelay de %s per evitar que les comissions s'encallin)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Maximum size of data in data carrier transactions we relay and mine (default: %u)</source>
|
||||
<translation>Mida màxima de les dades en les transaccions de l'operador en què confiem i en les meves (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Maximum total fees to use in a single wallet transaction, setting too low may abort large transactions (default: %s)</source>
|
||||
<translation>Comissions totals màximes que s'utilitzaran en una transacció d'un únic moneder. Si es defineix un valor massa baix les transaccions més grans poden interrompre's (per defecte: %s)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Query for peer addresses via DNS lookup, if low on addresses (default: 1 unless -connect)</source>
|
||||
<translation>Consulta a adreces d'iguals a través de DNS, si es troba baix en adreces (per defecte: 1 a menys que -connect)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Require high priority for relaying free or low-fee transactions (default:%u)</source>
|
||||
<translation>Es requereix una prioritat alta per retransmetre transaccions gratuïtes o de baixa comissió (per defecte:%u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Set maximum size of high-priority/low-fee transactions in bytes (default: %d)</source>
|
||||
<translation>Defineix la mida màxima de transaccions d'alta prioritat / baixa comissió en bytes (per defecte: %d)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Set the number of threads for coin generation if enabled (-1 = all cores, default: %d)</source>
|
||||
<translation>Defineix el nombre de fils per a la generació de moneda si està habilitat (-1 = tots els nuclis, per defecte: %d)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit <https://www.openssl.org/> and cryptographic software written by Eric Young and UPnP software written by Thomas Bernard.</source>
|
||||
<translation>Aquest producte inclou programari desenvolupat pel projecte OpenSSL per a ús a l'OpenSSL Toolkit <https://www.openssl.org/> i programari criptogràfic escrit per Eric Young i programari UPnP escrit per Thomas Bernard.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>To use bitcoind, or the -server option to bitcoin-qt, you must set an rpcpassword in the configuration file:
|
||||
%s
|
||||
It is recommended you use the following random password:
|
||||
rpcuser=bitcoinrpc
|
||||
rpcpassword=%s
|
||||
(you do not need to remember this password)
|
||||
The username and password MUST NOT be the same.
|
||||
If the file does not exist, create it with owner-readable-only file permissions.
|
||||
It is also recommended to set alertnotify so you are notified of problems;
|
||||
for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
</source>
|
||||
<translation>Per utilitzar bitcoind, o l'opció de serviddor de bitcoin-qt, heu de definir una rpcpassword en el fitxer de configuració:
|
||||
%s
|
||||
Es recomana que utilitzeu la contrasenya aleatòria següent:
|
||||
rpcuser=bitcoinrpc
|
||||
rpcpassword=%s
|
||||
(no cal que recordeu la contrasenya)
|
||||
El nom d'usuari i la contrasenya NO han de ser els mateixos.
|
||||
Si el fitxer no existeix, creeu-ne un amb permisos de lectura només per al seu propietari.
|
||||
Es recomana definir alertnotify per tal de ser notificat de qualsevol problema;
|
||||
per exemple: alertnotify=echo %%s | mail -s "Avís de Bitcoin" admin@foo.com</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Warning: -maxtxfee is set very high! Fees this large could be paid on a single transaction.</source>
|
||||
<translation>Avís: s'ha especificat un -maxtxfee molt alt! Comissions tan grans podrien pagar-se en una única transacció.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Warning: Please check that your computer's date and time are correct! If your clock is wrong Bitcoin Core will not work properly.</source>
|
||||
<translation>Avís: comproveu que la data i hora del vostre ordinador siguin correctes! Si el vostre rellotge no és correcte, el Bitcoin Core no funcionarà correctament.</translation>
|
||||
@@ -2945,6 +3121,10 @@ per exemple: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Whitelisted peers cannot be DoS banned and their transactions are always relayed, even if they are already in the mempool, useful e.g. for a gateway</source>
|
||||
<translation>Els iguals en la llista blanca no poden ser bandejats per DoS i es transmetran sempre llurs transaccions, fins i tot si ja són a la mempool. Això és útil, p. ex., per a una passarel·la</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Accept public REST requests (default: %u)</source>
|
||||
<translation>Accepta sol·licituds REST públiques (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Cannot resolve -whitebind address: '%s'</source>
|
||||
<translation>No es pot resoldre l'adreça -whitebind: «%s»</translation>
|
||||
@@ -2965,6 +3145,10 @@ per exemple: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Error loading wallet.dat: Wallet requires newer version of Bitcoin Core</source>
|
||||
<translation>Error en carregar wallet.dat: el moneder requereix una versió més nova del Bitcoin core</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error reading from database, shutting down.</source>
|
||||
<translation>Error en llegir la base de dades, tancant.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error: Unsupported argument -tor found, use -onion.</source>
|
||||
<translation>Error: s'ha trobat un argument -tor no acceptat. Feu servir -onion.</translation>
|
||||
@@ -2981,6 +3165,10 @@ per exemple: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Initialization sanity check failed. Bitcoin Core is shutting down.</source>
|
||||
<translation>Ha fallat la inicialització de la comprovació de validesa. El Bitcoin Core s'està aturant.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Invalid amount for -maxtxfee=<amount>: '%s'</source>
|
||||
<translation>Import no vàlid per a -maxtxfee=<amount>: '%s'</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Invalid amount for -minrelaytxfee=<amount>: '%s'</source>
|
||||
<translation>Import no vàlid per a -minrelaytxfee=<amount>: «%s»</translation>
|
||||
@@ -2998,8 +3186,8 @@ per exemple: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<translation>S'ha especificat una màscara de xarxa no vàlida a -whitelist: «%s»</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Keep at most <n> unconnectable blocks in memory (default: %u)</source>
|
||||
<translation>Manté com a màxim <n> blocs no connectables en memòria (per defecte: %u)</translation>
|
||||
<source>Keep at most <n> unconnectable transactions in memory (default: %u)</source>
|
||||
<translation>Manté com a màxim <n> transaccions no connectables en memòria (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Need to specify a port with -whitebind: '%s'</source>
|
||||
@@ -3009,10 +3197,6 @@ per exemple: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Node relay options:</source>
|
||||
<translation>Opcions de transmissió del node:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Print block on startup, if found in block index</source>
|
||||
<translation>Imprimeix el block a l'inici, si es troba l'índex de blocs</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>RPC SSL options: (see the Bitcoin Wiki for SSL setup instructions)</source>
|
||||
<translation>Opcions RPC SSL: (veieu el wiki del Bitcoin per a instruccions de configuració de l'SSL)</translation>
|
||||
@@ -3021,6 +3205,10 @@ per exemple: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>RPC server options:</source>
|
||||
<translation>Opcions del servidor RPC:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>RPC support for HTTP persistent connections (default: %d)</source>
|
||||
<translation>Suport RPC per a connexions HTTP persistents (per defecte: %d)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Randomly drop 1 of every <n> network messages</source>
|
||||
<translation>Descarta a l'atzar 1 de cada <n> missatges de la xarxa</translation>
|
||||
@@ -3033,6 +3221,10 @@ per exemple: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Send trace/debug info to console instead of debug.log file</source>
|
||||
<translation>Envia informació de traça/depuració a la consola en comptes del fitxer debug.log</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Send transactions as zero-fee transactions if possible (default: %u)</source>
|
||||
<translation>Envia les transaccions com a transaccions de comissió zero sempre que sigui possible (per defecte: %u) </translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show all debugging options (usage: --help -help-debug)</source>
|
||||
<translation>Mostra totes les opcions de depuració (ús: --help --help-debug)</translation>
|
||||
@@ -3057,6 +3249,10 @@ per exemple: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Transaction amounts must be positive</source>
|
||||
<translation>Els imports de les transaccions han de ser positius</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Transaction too large for fee policy</source>
|
||||
<translation>Transacció massa gran per a la política de comissions</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Transaction too large</source>
|
||||
<translation>La transacció és massa gran</translation>
|
||||
@@ -3141,14 +3337,170 @@ per exemple: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Error loading wallet.dat: Wallet corrupted</source>
|
||||
<translation>Error en carregar wallet.dat: Moneder corrupte</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>(1 = keep tx meta data e.g. account owner and payment request information, 2 = drop tx meta data)</source>
|
||||
<translation>(1 = manté les metadades de les tx, p. ex., propietari del compte i informació de sol·licitud del pagament, 2 = prescindeix de les metadades de les tx)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Flush database activity from memory pool to disk log every <n> megabytes (default: %u)</source>
|
||||
<translation>Buida l'activitat de la base de dades de la memòria disponible al registre del disc cada <n> megabytes (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>How thorough the block verification of -checkblocks is (0-4, default: %u)</source>
|
||||
<translation>Com d'exhaustiva és la verificació de blocs del -checkblocks (0-4, per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Log transaction priority and fee per kB when mining blocks (default: %u)</source>
|
||||
<translation>Enregistreu la prioritat de la transacció i la comissió per kB en minar blocs (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Maintain a full transaction index, used by the getrawtransaction rpc call (default: %u)</source>
|
||||
<translation>Manté un índex complet de transaccions, utilitzat per la crida rpc getrawtransaction (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Number of seconds to keep misbehaving peers from reconnecting (default: %u)</source>
|
||||
<translation>Nombre de segons necessaris perquè els iguals de comportament qüestionable puguin tornar a connectar-se (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Output debugging information (default: %u, supplying <category> is optional)</source>
|
||||
<translation>Informació de sortida de la depuració (per defecte: %u, proporcionar <category> és opcional)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Use separate SOCKS5 proxy to reach peers via Tor hidden services (default: %s)</source>
|
||||
<translation>Utilitza un proxy SOCKS4 apart per a arribar als iguals a través de serveis ocults de Tor (per defecte: %s)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>(default: %s)</source>
|
||||
<translation>(per defecte: %s)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Acceptable ciphers (default: %s)</source>
|
||||
<translation>Xifrats acceptables (per defecte: %s)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Always query for peer addresses via DNS lookup (default: %u)</source>
|
||||
<translation>Demana sempre les adreces dels iguals a través de consultes DNS (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Disable safemode, override a real safe mode event (default: %u)</source>
|
||||
<translation>Inhabilita el mode segur, sobreescriu un esdeveniment de mode segur real (per defecte: %u) </translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error loading wallet.dat</source>
|
||||
<translation>Error en carregar wallet.dat</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Force safe mode (default: %u)</source>
|
||||
<translation>Força el mode segur (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Generate coins (default: %u)</source>
|
||||
<translation>Genera monedes (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>How many blocks to check at startup (default: %u, 0 = all)</source>
|
||||
<translation>Quants blocs per comprovar a l'inici (per defecte: %u, 0 = tots)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Include IP addresses in debug output (default: %u)</source>
|
||||
<translation>Inclou l'adreça IP a la sortida de depuració (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Invalid -proxy address: '%s'</source>
|
||||
<translation>Adreça -proxy invalida: '%s'</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Limit size of signature cache to <n> entries (default: %u)</source>
|
||||
<translation>Limita la mida de la cau de signatura a <n> entrades (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Listen for JSON-RPC connections on <port> (default: %u or testnet: %u)</source>
|
||||
<translation>Escolta les connexions JSON-RPC en <port> (per defecte: %u o testnet: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Listen for connections on <port> (default: %u or testnet: %u)</source>
|
||||
<translation>Escolta les connexions en <port> (per defecte: %u o testnet: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Maintain at most <n> connections to peers (default: %u)</source>
|
||||
<translation>Manté com a màxim <n> connexions a iguals (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Maximum per-connection receive buffer, <n>*1000 bytes (default: %u)</source>
|
||||
<translation>Memòria intermèdia màxima de recepció per connexió, <n>*1000 bytes (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Maximum per-connection send buffer, <n>*1000 bytes (default: %u)</source>
|
||||
<translation>Memòria intermèdia màxima d'enviament per connexió, <n>*1000 bytes (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Only accept block chain matching built-in checkpoints (default: %u)</source>
|
||||
<translation>Només accepta els punts de control integrats que coincideixen amb la cadena de blocs (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Prepend debug output with timestamp (default: %u)</source>
|
||||
<translation>Posa davant de la sortida de depuració una marca horària (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Relay and mine data carrier transactions (default: %u)</source>
|
||||
<translation>Retransmet i mina les transaccions de l'operador (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Relay non-P2SH multisig (default: %u)</source>
|
||||
<translation>Retransmet multisig no P2SH (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Run a thread to flush wallet periodically (default: %u)</source>
|
||||
<translation>Executa un fil per buidar el moneder periòdicament (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Server certificate file (default: %s)</source>
|
||||
<translation>Fitxer de certificat del servidor (per defecte: %s)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Server private key (default: %s)</source>
|
||||
<translation>Clau privada del servidor (per defecte: %s)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Set key pool size to <n> (default: %u)</source>
|
||||
<translation>Defineix la mida clau disponible a <n> (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Set minimum block size in bytes (default: %u)</source>
|
||||
<translation>Defineix la mida de bloc mínima en bytes (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Set the number of threads to service RPC calls (default: %d)</source>
|
||||
<translation>Defineix el nombre de fils a crides de servei RPC (per defecte: %d)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Sets the DB_PRIVATE flag in the wallet db environment (default: %u)</source>
|
||||
<translation>Defineix el senyalador DB_PRIVATE en l'entorn db del moneder (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Specify configuration file (default: %s)</source>
|
||||
<translation>Especifica el fitxer de configuració (per defecte: %s)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Specify connection timeout in milliseconds (minimum: 1, default: %d)</source>
|
||||
<translation>Especifica el temps d'espera de la connexió en milisegons (mínim: 1, per defecte: %d)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Specify pid file (default: %s)</source>
|
||||
<translation>Especifica el fitxer pid (per defecte: %s)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Spend unconfirmed change when sending transactions (default: %u)</source>
|
||||
<translation>Gasta el canvi no confirmat en enviar les transaccions (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Stop running after importing blocks from disk (default: %u)</source>
|
||||
<translation>Atura l'execució després d'importar blocs del disc (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Threshold for disconnecting misbehaving peers (default: %u)</source>
|
||||
<translation>Llindar per a desconnectar els iguals de comportament qüestionable (per defecte: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unknown network specified in -onlynet: '%s'</source>
|
||||
<translation>Xarxa desconeguda especificada a -onlynet: '%s'</translation>
|
||||
@@ -3165,10 +3517,6 @@ per exemple: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Invalid amount for -paytxfee=<amount>: '%s'</source>
|
||||
<translation>Import no vàlid per a -paytxfee=<amount>: «%s»</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Invalid amount</source>
|
||||
<translation>Import no vàlid</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Insufficient funds</source>
|
||||
<translation>Balanç insuficient</translation>
|
||||
@@ -3201,10 +3549,6 @@ per exemple: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Done loading</source>
|
||||
<translation>Ha acabat la càrrega</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>To use the %s option</source>
|
||||
<translation>Utilitza l'opció %s</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>Error</translation>
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
<TS language="cmn" version="2.0">
|
||||
<TS language="cmn" version="2.1">
|
||||
<context>
|
||||
<name>AddressBookPage</name>
|
||||
<message>
|
||||
<source>Create a new address</source>
|
||||
<translation>创建新地址</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>AddressTableModel</name>
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<TS language="cs" version="2.0">
|
||||
<TS language="cs" version="2.1">
|
||||
<context>
|
||||
<name>AddressBookPage</name>
|
||||
<message>
|
||||
<source>Double-click to edit address or label</source>
|
||||
<translation>Dvojklikem myši začneš upravovat označení adresy</translation>
|
||||
<source>Right-click to edit address or label</source>
|
||||
<translation>Pravým tlačítkem myši začneš upravovat označení adresy</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Create a new address</source>
|
||||
@@ -430,10 +430,26 @@
|
||||
<source>No block source available...</source>
|
||||
<translation>Není dostupný žádný zdroj bloků...</translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<source>%n hour(s)</source>
|
||||
<translation><numerusform>%n hodinu</numerusform><numerusform>%n hodiny</numerusform><numerusform>%n hodin</numerusform></translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<source>%n day(s)</source>
|
||||
<translation><numerusform>%n den</numerusform><numerusform>%n dny</numerusform><numerusform>%n dnů</numerusform></translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<source>%n week(s)</source>
|
||||
<translation><numerusform>%n týden</numerusform><numerusform>%n týdny</numerusform><numerusform>%n týdnů</numerusform></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>%1 and %2</source>
|
||||
<translation>%1 a %2</translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<source>%n year(s)</source>
|
||||
<translation><numerusform>%n rok</numerusform><numerusform>%n roky</numerusform><numerusform>%n roků</numerusform></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>%1 behind</source>
|
||||
<translation>Stahuji ještě bloky transakcí za poslední %1</translation>
|
||||
@@ -462,6 +478,10 @@
|
||||
<source>Up to date</source>
|
||||
<translation>Aktuální</translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<source>Processed %n blocks of transaction history.</source>
|
||||
<translation><numerusform>Zpracován %n blok transakční historie.</numerusform><numerusform>Zpracovány %n bloky transakční historie.</numerusform><numerusform>Zpracováno %n bloků transakční historie.</numerusform></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Catching up...</source>
|
||||
<translation>Stahuji...</translation>
|
||||
@@ -504,6 +524,10 @@ Adresa: %4
|
||||
</context>
|
||||
<context>
|
||||
<name>CoinControlDialog</name>
|
||||
<message>
|
||||
<source>Coin Selection</source>
|
||||
<translation>Výběr mincí</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Quantity:</source>
|
||||
<translation>Počet:</translation>
|
||||
@@ -552,6 +576,14 @@ Adresa: %4
|
||||
<source>Amount</source>
|
||||
<translation>Částka</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Received with label</source>
|
||||
<translation>Příjem na označení</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Received with address</source>
|
||||
<translation>Příjem na adrese</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Date</source>
|
||||
<translation>Datum</translation>
|
||||
@@ -884,7 +916,15 @@ Adresa: %4
|
||||
<source>Error</source>
|
||||
<translation>Chyba</translation>
|
||||
</message>
|
||||
</context>
|
||||
<message numerus="yes">
|
||||
<source>%n GB of free space available</source>
|
||||
<translation><numerusform>%n GB volného místa</numerusform><numerusform>%n GB volného místa</numerusform><numerusform>%n GB volného místa</numerusform></translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<source>(of %n GB needed)</source>
|
||||
<translation><numerusform>(z potřebného %n GB)</numerusform><numerusform>(z potřebných %n GB)</numerusform><numerusform>(z potřebných %n GB)</numerusform></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>OpenURIDialog</name>
|
||||
<message>
|
||||
@@ -1006,6 +1046,14 @@ Adresa: %4
|
||||
<source>Map port using &UPnP</source>
|
||||
<translation>Namapovat port přes &UPnP</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Connect to the Bitcoin network through a SOCKS5 proxy.</source>
|
||||
<translation>Připojí se do Bitcoinové sítě přes SOCKS5 proxy.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Connect through SOCKS5 proxy (default proxy):</source>
|
||||
<translation>&Připojit přes SOCKS5 proxy (výchozí proxy):</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Proxy &IP:</source>
|
||||
<translation>&IP adresa proxy:</translation>
|
||||
@@ -1137,6 +1185,10 @@ Adresa: %4
|
||||
<source>Mined balance that has not yet matured</source>
|
||||
<translation>Vytěžené mince, které ještě nejsou zralé</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Balances</source>
|
||||
<translation>Stavy účtů</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Total:</source>
|
||||
<translation>Celkem:</translation>
|
||||
@@ -1149,6 +1201,14 @@ Adresa: %4
|
||||
<source>Your current balance in watch-only addresses</source>
|
||||
<translation>Aktuální stav účtu sledovaných adres</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Spendable:</source>
|
||||
<translation>Běžné:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Recent transactions</source>
|
||||
<translation>Poslední transakce</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unconfirmed transactions to watch-only addresses</source>
|
||||
<translation>Nepotvrzené transakce sledovaných adres</translation>
|
||||
@@ -1228,6 +1288,14 @@ Adresa: %4
|
||||
<source>Refund from %1</source>
|
||||
<translation>Vrácení peněz od %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Payment request %1 is too large (%2 bytes, allowed %3 bytes).</source>
|
||||
<translation>Platební požadavek %1 je moc velký (%2 bajtů, povoleno %3 bajtů).</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Payment request DoS protection</source>
|
||||
<translation>DoS ochrana platebního požadavku</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error communicating with %1: %2</source>
|
||||
<translation>Chyba při komunikaci s %1: %2</translation>
|
||||
@@ -1784,6 +1852,78 @@ Adresa: %4
|
||||
<source>Custom change address</source>
|
||||
<translation>Vlastní adresa pro drobné</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Transaction Fee:</source>
|
||||
<translation>Transakční poplatek:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Choose...</source>
|
||||
<translation>Zvol...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>collapse fee-settings</source>
|
||||
<translation>sbal nastavení poplatků</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Minimize</source>
|
||||
<translation>Skryj</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>If the custom fee is set to 1000 satoshis and the transaction is only 250 bytes, then "per kilobyte" only pays 250 satoshis in fee, while "at least" pays 1000 satoshis. For transactions bigger than a kilobyte both pay by kilobyte.</source>
|
||||
<translation>Pokud je vlastní poplatek nastavený na 1000 satoshi a transakce má pouze 250 bajtů, tak „za kilobajt“ zaplatí poplatek jen 250 satoshi, zatímco „přinejmenším“ zaplatí 1000 satoshi. Pro transakce větší než kilobajt obě možnosti platí za kilobajt.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>per kilobyte</source>
|
||||
<translation>za kilobajt</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>If the custom fee is set to 1000 satoshis and the transaction is only 250 bytes, then "per kilobyte" only pays 250 satoshis in fee, while "total at least" pays 1000 satoshis. For transactions bigger than a kilobyte both pay by kilobyte.</source>
|
||||
<translation>Pokud je vlastní poplatek nastavený na 1000 satoshi a transakce má pouze 250 bajtů, tak „za kilobajt“ zaplatí poplatek jen 250 satoshi, zatímco „přinejmenším“ zaplatí 1000 satoshi. Pro transakce větší než kilobajt obě možnosti platí za kilobajt.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>total at least</source>
|
||||
<translation>přinejmenším</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Paying only the minimum fee is just fine as long as there is less transaction volume than space in the blocks. But be aware that this can end up in a never confirming transaction once there is more demand for bitcoin transactions than the network can process.</source>
|
||||
<translation>Platit jen minimální poplatek je v pořádku, pokud je zrovna méně transakcí než místa v blocích. Ale počítej s tím, že to také může skončit transakcí, která nikdy nebude potvrzena, pokud je větší poptávka po bitcoinových transakcích, než síť zvládne zpracovat.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>(read the tooltip)</source>
|
||||
<translation>(viz bublina)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Recommended:</source>
|
||||
<translation>Doporučený:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Custom:</source>
|
||||
<translation>Vlastní:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>(Smart fee not initialized yet. This usually takes a few blocks...)</source>
|
||||
<translation>(Inteligentní poplatek ještě není inicializovaný. Obvykle mu to tak pár bloků trvá...)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Confirmation time:</source>
|
||||
<translation>Rychlost potvrzení:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>normal</source>
|
||||
<translation>normální</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>fast</source>
|
||||
<translation>rychlá</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Send as zero-fee transaction if possible</source>
|
||||
<translation>Pošli transakci pokud možno bez poplatku</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>(confirmation may take longer)</source>
|
||||
<translation>(potvrzení může trvat déle)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Send to multiple recipients at once</source>
|
||||
<translation>Pošli více příjemcům naráz</translation>
|
||||
@@ -1852,10 +1992,6 @@ Adresa: %4
|
||||
<source>Copy change</source>
|
||||
<translation>Kopíruj drobné</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Total Amount %1 (= %2)</source>
|
||||
<translation>Celková částka %1 (= %2)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>or</source>
|
||||
<translation>nebo</translation>
|
||||
@@ -1888,6 +2024,18 @@ Adresa: %4
|
||||
<source>The transaction was rejected! This might happen if some of the coins in your wallet were already spent, such as if you used a copy of wallet.dat and coins were spent in the copy but not marked as spent here.</source>
|
||||
<translation>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.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>A fee higher than %1 is considered an insanely high fee.</source>
|
||||
<translation>Poplatek vyšší než %1 je považován za absurdně vysoký.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Pay only the minimum fee of %1</source>
|
||||
<translation>Zaplatit pouze minimální poplatek %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Estimated to begin confirmation within %1 block(s).</source>
|
||||
<translation>Potvrzování by podle odhadu mělo začít během %1 bloků.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Warning: Invalid Bitcoin address</source>
|
||||
<translation>Upozornění: Neplatná Bitcoinová adresa</translation>
|
||||
@@ -2216,7 +2364,7 @@ Adresa: %4
|
||||
</message>
|
||||
<message>
|
||||
<source>watch-only</source>
|
||||
<translation>sledovací</translation>
|
||||
<translation>sledovaná</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>label</source>
|
||||
@@ -2226,6 +2374,10 @@ Adresa: %4
|
||||
<source>Credit</source>
|
||||
<translation>Příjem</translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<source>matures in %n more block(s)</source>
|
||||
<translation><numerusform>dozraje po %n bloku</numerusform><numerusform>dozraje po %n blocích</numerusform><numerusform>dozraje po %n blocích</numerusform></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>not accepted</source>
|
||||
<translation>neakceptováno</translation>
|
||||
@@ -2412,6 +2564,10 @@ Adresa: %4
|
||||
<source>Type of transaction.</source>
|
||||
<translation>Druh transakce.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Whether or not a watch-only address is involved in this transaction.</source>
|
||||
<translation>Zda tato transakce zahrnuje i některou sledovanou adresu.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Destination address of transaction.</source>
|
||||
<translation>Cílová adresa transakce.</translation>
|
||||
@@ -2507,6 +2663,10 @@ Adresa: %4
|
||||
<source>Export Transaction History</source>
|
||||
<translation>Exportuj transakční historii</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Watch-only</source>
|
||||
<translation>Sledovaná</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Exporting Failed</source>
|
||||
<translation>Exportování selhalo</translation>
|
||||
@@ -2650,30 +2810,6 @@ Adresa: %4
|
||||
<source>Accept connections from outside (default: 1 if no -proxy or -connect)</source>
|
||||
<translation>Přijímat spojení zvenčí (výchozí: 1, pokud není zadáno -proxy nebo -connect)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>%s, you must set a rpcpassword in the configuration file:
|
||||
%s
|
||||
It is recommended you use the following random password:
|
||||
rpcuser=bitcoinrpc
|
||||
rpcpassword=%s
|
||||
(you do not need to remember this password)
|
||||
The username and password MUST NOT be the same.
|
||||
If the file does not exist, create it with owner-readable-only file permissions.
|
||||
It is also recommended to set alertnotify so you are notified of problems;
|
||||
for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
</source>
|
||||
<translation>%s, musíš nastavit rpcpassword v konfiguračním souboru:
|
||||
%s
|
||||
Je vhodné použít následující náhodné heslo:
|
||||
rpcuser=bitcoinrpc
|
||||
rpcpassword=%s
|
||||
(není potřeba si ho pamatovat)
|
||||
rpcuser a rpcpassword NESMÍ být stejné.
|
||||
Pokud konfigurační soubor ještě neexistuje, vytvoř ho tak, aby ho mohl číst pouze vlastník.
|
||||
Je také doporučeno si nastavit alertnotify, abys byl upozorněn na případné problémy;
|
||||
například: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Bind to given address and always listen on it. Use [host]:port notation for IPv6</source>
|
||||
<translation>Poslouchat na zadané adrese. Pro zápis IPv6 adresy použij notaci [adresa]:port</translation>
|
||||
@@ -2682,18 +2818,14 @@ například: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Delete all wallet transactions and only recover those parts of the blockchain through -rescan on startup</source>
|
||||
<translation>Smazat všechny transakce peněženky a při startu obnovit pouze relevantní části řetězce bloků pomocí -rescan</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Distributed under the MIT software license, see the accompanying file COPYING or <http://www.opensource.org/licenses/mit-license.php>.</source>
|
||||
<translation>Šířen pod softwarovou licencí MIT, viz přiložený soubor COPYING nebo <http://www.opensource.org/licenses/mit-license.php>.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Enter regression test mode, which uses a special chain in which blocks can be solved instantly.</source>
|
||||
<translation>Přepnout do módu testování regresí, který používá speciální řetězec, ve kterém mohou být bloky okamžitě vyřešeny.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error: The transaction was rejected! This might happen if some of the coins in your wallet were already spent, such as if you used a copy of wallet.dat and coins were spent in the copy but not marked as spent here.</source>
|
||||
<translation>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.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds!</source>
|
||||
<translation>Chyba: Tahle transakce vyžaduje transakční poplatek nejméně %s kvůli velikosti zasílané částky, komplexnosti nebo použití nedávno přijatých mincí!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Execute command when a wallet transaction changes (%s in cmd is replaced by TxID)</source>
|
||||
<translation>Spustit příkaz, když se objeví transakce týkající se peněženky (%s se v příkazu nahradí za TxID)</translation>
|
||||
@@ -2734,6 +2866,10 @@ například: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Warning: wallet.dat corrupt, data salvaged! Original wallet.dat saved as wallet.{timestamp}.bak in %s; if your balance or transactions are incorrect you should restore from a backup.</source>
|
||||
<translation>Upozornění: soubor wallet.dat je poškozený, data jsou však zachráněna! Původní soubor wallet.dat je uložený jako wallet.{timestamp}.bak v %s. Pokud je stav tvého účtu nebo transakce nesprávné, zřejmě bys měl obnovit zálohu.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Whitelist peers connecting from the given netmask or IP address. Can be specified multiple times.</source>
|
||||
<translation>Umístit na bílou listinu protějšky připojující se z dané podsítě či IP adresy. Lze zadat i vícekrát.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>(default: 1)</source>
|
||||
<translation>(výchozí: 1)</translation>
|
||||
@@ -2798,10 +2934,6 @@ například: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Error: Disk space is low!</source>
|
||||
<translation>Problém: Na disku je málo místa!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error: Wallet locked, unable to create transaction!</source>
|
||||
<translation>Chyba: Peněženka je zamčená, nemohu vytvořit transakci!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Failed to listen on any port. Use -listen=0 if you want this.</source>
|
||||
<translation>Nepodařilo se naslouchat na žádném portu. Použij -listen=0, pokud to byl tvůj záměr.</translation>
|
||||
@@ -2826,6 +2958,10 @@ například: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Not enough file descriptors available.</source>
|
||||
<translation>Je nedostatek deskriptorů souborů.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Only connect to nodes in network <net> (ipv4, ipv6 or onion)</source>
|
||||
<translation>Připojovat se pouze k uzlům v <net> síti (ipv4, ipv6 nebo onion)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Rebuild block chain index from current blk000??.dat files</source>
|
||||
<translation>Znovu vytvořit index řetězce bloků z aktuálních blk000??.dat souborů</translation>
|
||||
@@ -2846,6 +2982,10 @@ například: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>This is intended for regression testing tools and app development.</source>
|
||||
<translation>Tohle je určeno pro nástroje na regresní testování a vyvíjení aplikací.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Use UPnP to map the listening port (default: %u)</source>
|
||||
<translation>Použít UPnP k namapování naslouchacího portu (výchozí: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Verifying blocks...</source>
|
||||
<translation>Ověřuji bloky... </translation>
|
||||
@@ -2890,6 +3030,10 @@ například: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Cannot obtain a lock on data directory %s. Bitcoin Core is probably already running.</source>
|
||||
<translation>Nedaří se mi získat zámek na datový adresář %s. Bitcoin Core pravděpodobně už jednou běží.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Continuously rate-limit free transactions to <n>*1000 bytes per minute (default:%u)</source>
|
||||
<translation>Kontinuálně omezovat bezpoplatkové transakce na <n>*1000 bajtů za minutu (výchozí: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Create new files with system default permissions, instead of umask 077 (only effective with disabled wallet functionality)</source>
|
||||
<translation>Vytvářet nové soubory s výchozími systémovými právy namísto umask 077 (uplatní se, pouze pokud je vypnutá funkce peněženky)</translation>
|
||||
@@ -2914,18 +3058,70 @@ například: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Fees (in BTC/Kb) smaller than this are considered zero fee for transaction creation (default: %s)</source>
|
||||
<translation>Poplatky (v BTC/Kb) menší než tato hodnota jsou považovány za nulové pro účely vytváření transakcí (výchozí: %s)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>If paytxfee is not set, include enough fee so transactions begin confirmation on average within n blocks (default: %u)</source>
|
||||
<translation>Pokud paytxfee není nastaveno, platit dostatečný poplatek na to, aby začaly být transakce potvrzovány v průměru během n bloků (výchozí: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Invalid amount for -maxtxfee=<amount>: '%s' (must be at least the minrelay fee of %s to prevent stuck transactions)</source>
|
||||
<translation>Neplatná částka pro -maxtxfee=<amount>: '%s' (musí být alespoň jako poplatek minrelay %s, aby transakce nezůstávaly trčet)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Maximum size of data in data carrier transactions we relay and mine (default: %u)</source>
|
||||
<translation>Maximální velikost dat v transakcích nesoucích data, se kterou jsme ochotni je ještě přeposílat a těžit (výchozí: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Maximum total fees to use in a single wallet transaction, setting too low may abort large transactions (default: %s)</source>
|
||||
<translation>Horní hranice pro celkový poplatek za jednu transakci z peněženky; příliš nízká hodnota může zmařit velké transakce (výchozí: %s)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Query for peer addresses via DNS lookup, if low on addresses (default: 1 unless -connect)</source>
|
||||
<translation>Při nedostatku adres získat další protějšky z DNS (výchozí: 1, pokud není použito -connect)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Require high priority for relaying free or low-fee transactions (default:%u)</source>
|
||||
<translation>Vyžadovat vysokou prioritu pro přeposílání bezplatných nebo nízkopoplatkových transakcí (výchozí: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Set maximum size of high-priority/low-fee transactions in bytes (default: %d)</source>
|
||||
<translation>Nastavit maximální velikost prioritních/nízkopoplatkových transakcí v bajtech (výchozí: %d)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Set the number of threads for coin generation if enabled (-1 = all cores, default: %d)</source>
|
||||
<translation>Nastavení počtu vláken pro těžení, je-li zapnuté (-1 = všechna jádra, výchozí: %d)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit <https://www.openssl.org/> and cryptographic software written by Eric Young and UPnP software written by Thomas Bernard.</source>
|
||||
<translation>Tento produkt zahrnuje programy vyvinuté OpenSSL Projektem pro použití v OpenSSL Toolkitu <https://www.openssl.org/> a kryptografický program od Erika Younga a program UPnP od Thomase Bernarda.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>To use bitcoind, or the -server option to bitcoin-qt, you must set an rpcpassword in the configuration file:
|
||||
%s
|
||||
It is recommended you use the following random password:
|
||||
rpcuser=bitcoinrpc
|
||||
rpcpassword=%s
|
||||
(you do not need to remember this password)
|
||||
The username and password MUST NOT be the same.
|
||||
If the file does not exist, create it with owner-readable-only file permissions.
|
||||
It is also recommended to set alertnotify so you are notified of problems;
|
||||
for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
</source>
|
||||
<translation>K používání bitcoind nebo volby -server u bitcoin-qt musíš nastavit rpcpassword v konfiguračním souboru:
|
||||
%s
|
||||
Je vhodné použít následující náhodné heslo:
|
||||
rpcuser=bitcoinrpc
|
||||
rpcpassword=%s
|
||||
(není potřeba si ho pamatovat)
|
||||
rpcuser a rpcpassword NESMÍ být stejné.
|
||||
Pokud konfigurační soubor ještě neexistuje, vytvoř ho tak, aby ho mohl číst pouze vlastník.
|
||||
Je také doporučeno si nastavit alertnotify, abys byl upozorněn na případné problémy;
|
||||
například: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Warning: -maxtxfee is set very high! Fees this large could be paid on a single transaction.</source>
|
||||
<translation>Upozornění: -maxtxfee je nastaveno velmi vysoko! Takto vysoký poplatek může být zaplacen v jednotlivé transakci.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Warning: Please check that your computer's date and time are correct! If your clock is wrong Bitcoin Core will not work properly.</source>
|
||||
<translation>Upozornění: Zkontroluj, že máš v počítači správně nastavený datum a čas! Pokud jsou nastaveny špatně, Bitcoin Core nebude fungovat správně.</translation>
|
||||
@@ -2934,6 +3130,10 @@ například: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Whitelisted peers cannot be DoS banned and their transactions are always relayed, even if they are already in the mempool, useful e.g. for a gateway</source>
|
||||
<translation>Na protějšky na bílé listině se nevztahuje DoS klatba a jejich transakce jsou vždy přeposílány, i když už třeba jsou v mempoolu, což je užitečné např. pro bránu</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Accept public REST requests (default: %u)</source>
|
||||
<translation>Přijímat veřejné REST požadavky (výchozí: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Cannot resolve -whitebind address: '%s'</source>
|
||||
<translation>Nemohu přeložit -whitebind adresu: '%s'</translation>
|
||||
@@ -2954,6 +3154,10 @@ například: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Error loading wallet.dat: Wallet requires newer version of Bitcoin Core</source>
|
||||
<translation>Chyba při načítání wallet.dat: peněženka vyžaduje novější verzi Bitcoin Core</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error reading from database, shutting down.</source>
|
||||
<translation>Chyba při čtení z databáze, ukončuji se.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error: Unsupported argument -tor found, use -onion.</source>
|
||||
<translation>Chyba: Argument -tor již není podporovaný, použij -onion.</translation>
|
||||
@@ -2970,6 +3174,10 @@ například: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Initialization sanity check failed. Bitcoin Core is shutting down.</source>
|
||||
<translation>Selhala úvodní zevrubná prověrka. Bitcoin Core se ukončuje.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Invalid amount for -maxtxfee=<amount>: '%s'</source>
|
||||
<translation>Neplatná částka pro -maxtxfee=<amount>: '%s'</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Invalid amount for -minrelaytxfee=<amount>: '%s'</source>
|
||||
<translation>Neplatná částka pro -minrelaytxfee=<částka>: '%s'</translation>
|
||||
@@ -2987,8 +3195,8 @@ například: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<translation>Ve -whitelist byla zadána neplatná podsíť: '%s'</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Keep at most <n> unconnectable blocks in memory (default: %u)</source>
|
||||
<translation>Držet v paměti nejvýše <n> nespojitelných bloků (výchozí: %u)</translation>
|
||||
<source>Keep at most <n> unconnectable transactions in memory (default: %u)</source>
|
||||
<translation>Držet v paměti nejvýše <n> nespojitelných transakcí (výchozí: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Need to specify a port with -whitebind: '%s'</source>
|
||||
@@ -2998,10 +3206,6 @@ například: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Node relay options:</source>
|
||||
<translation>Možnosti přeposílání:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Print block on startup, if found in block index</source>
|
||||
<translation>Vypsat při startu blok,pokud se nachází v indexu bloků</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>RPC SSL options: (see the Bitcoin Wiki for SSL setup instructions)</source>
|
||||
<translation>Možnosti SSL pro RPC: (viz instrukce nastavení SSL na Bitcoin Wiki)</translation>
|
||||
@@ -3010,6 +3214,10 @@ například: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>RPC server options:</source>
|
||||
<translation>Možnosti RPC serveru:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>RPC support for HTTP persistent connections (default: %d)</source>
|
||||
<translation>Podpora RPC pro perzistentní HTTP spojení (výchozí: %d)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Randomly drop 1 of every <n> network messages</source>
|
||||
<translation>Náhodně zahazovat jednu z každých <n> síťových zpráv</translation>
|
||||
@@ -3022,6 +3230,10 @@ například: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Send trace/debug info to console instead of debug.log file</source>
|
||||
<translation>Posílat stopovací/ladicí informace do konzole místo do souboru debug.log</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Send transactions as zero-fee transactions if possible (default: %u)</source>
|
||||
<translation>Posílat transakce pokud možno bez poplatků (výchozí: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show all debugging options (usage: --help -help-debug)</source>
|
||||
<translation>Zobrazit všechny možnosti ladění (užití: --help -help-debug)</translation>
|
||||
@@ -3046,9 +3258,13 @@ například: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Transaction amounts must be positive</source>
|
||||
<translation>Částky v transakci musí být kladné</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Transaction too large for fee policy</source>
|
||||
<translation>Transakce je na poplatkovou politiku příliš velká</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Transaction too large</source>
|
||||
<translation>Transace je příliš velká</translation>
|
||||
<translation>Transakce je příliš velká</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to bind to %s on this computer (bind returned error %s)</source>
|
||||
@@ -3130,14 +3346,166 @@ například: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Error loading wallet.dat: Wallet corrupted</source>
|
||||
<translation>Chyba při načítání wallet.dat: peněženka je poškozená</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>(1 = keep tx meta data e.g. account owner and payment request information, 2 = drop tx meta data)</source>
|
||||
<translation>(1 = ukládat transakční metadata, např. majitele účtu a informace o platebním požadavku, 2 = mazat transakční metadata)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Flush database activity from memory pool to disk log every <n> megabytes (default: %u)</source>
|
||||
<translation>Promítnout databázovou aktivitu z paměťového prostoru do záznamu na disku každých <n> megabajtů (výchozí: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>How thorough the block verification of -checkblocks is (0-4, default: %u)</source>
|
||||
<translation>Jak moc důkladná má být verifikace bloků -checkblocks (0-4, výchozí: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Log transaction priority and fee per kB when mining blocks (default: %u)</source>
|
||||
<translation>Zaznamenávat během těžení bloků prioritu transakce a poplatek za kB (výchozí: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Maintain a full transaction index, used by the getrawtransaction rpc call (default: %u)</source>
|
||||
<translation>Spravovat úplný index transakcí, který je využíván rpc voláním getrawtransaction (výchozí: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Number of seconds to keep misbehaving peers from reconnecting (default: %u)</source>
|
||||
<translation>Doba ve vteřinách, po kterou se nebudou moci zlobivé protějšky znovu připojit (výchozí: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Output debugging information (default: %u, supplying <category> is optional)</source>
|
||||
<translation>Tisknout ladicí informace (výchozí: %u, zadání <category> je volitelné)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Use separate SOCKS5 proxy to reach peers via Tor hidden services (default: %s)</source>
|
||||
<translation>Použít samostatnou SOCKS5 proxy ke spojení s protějšky přes skryté služby v Toru (výchozí: %s)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>(default: %s)</source>
|
||||
<translation>(výchozí: %s)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Acceptable ciphers (default: %s)</source>
|
||||
<translation>Akceptovatelné šifry (výchozí: %s)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Always query for peer addresses via DNS lookup (default: %u)</source>
|
||||
<translation>Vždy získávat adresy dalších protějšků přes DNS (výchozí: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Disable safemode, override a real safe mode event (default: %u)</source>
|
||||
<translation>Vypnout bezpečný režim (safemode), překrýt skutečnou událost bezpečného režimu (výchozí: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error loading wallet.dat</source>
|
||||
<translation>Chyba při načítání wallet.dat</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Force safe mode (default: %u)</source>
|
||||
<translation>Vynutit bezpečný mód (výchozí: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Generate coins (default: %u)</source>
|
||||
<translation>Těžit (výchozí: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>How many blocks to check at startup (default: %u, 0 = all)</source>
|
||||
<translation>Kolik bloků při startu zkontrolovat (výchozí: %u, 0 = všechny)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Include IP addresses in debug output (default: %u)</source>
|
||||
<translation>Zaznamenávat do ladicích výstupů i IP adresy (výchozí: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Invalid -proxy address: '%s'</source>
|
||||
<translation>Neplatná -proxy adresa: '%s'</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Limit size of signature cache to <n> entries (default: %u)</source>
|
||||
<translation>Omezit velikost vyrovnávací paměti pro podpisy na <n> položek (výchozí: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Listen for JSON-RPC connections on <port> (default: %u or testnet: %u)</source>
|
||||
<translation>Čekat na JSON-RPC spojení na <portu> (výchozí: %u nebo testnet: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Listen for connections on <port> (default: %u or testnet: %u)</source>
|
||||
<translation>Čekat na spojení na <portu> (výchozí: %u nebo testnet: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Maintain at most <n> connections to peers (default: %u)</source>
|
||||
<translation>Povolit nejvýše <n> protějšků (výchozí: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Maximum per-connection receive buffer, <n>*1000 bytes (default: %u)</source>
|
||||
<translation>Maximální velikost přijímacího bufferu pro každé spojení, <n>*1000 bajtů (výchozí: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Maximum per-connection send buffer, <n>*1000 bytes (default: %u)</source>
|
||||
<translation>Maximální velikost odesílacího bufferu pro každé spojení, <n>*1000 bajtů (výchozí: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Only accept block chain matching built-in checkpoints (default: %u)</source>
|
||||
<translation>Uznávat pouze řetězec bloků, který odpovídá vnitřním kontrolním bodům (výchozí: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Prepend debug output with timestamp (default: %u)</source>
|
||||
<translation>Připojit před ladicí výstup časové razítko (výchozí: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Relay and mine data carrier transactions (default: %u)</source>
|
||||
<translation>Přeposílat a těžit transakce nesoucí data (výchozí: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Relay non-P2SH multisig (default: %u)</source>
|
||||
<translation>Přeposílat ne-P2SH multisig (výchozí: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Run a thread to flush wallet periodically (default: %u)</source>
|
||||
<translation>Spustit vlákno pročišťující periodicky peněženku (výchozí: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Server certificate file (default: %s)</source>
|
||||
<translation>Soubor se serverovým certifikátem (výchozí: %s)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Server private key (default: %s)</source>
|
||||
<translation>Soubor se serverovým soukromým klíčem (výchozí: %s)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Set key pool size to <n> (default: %u)</source>
|
||||
<translation>Nastavit zásobník klíčů na velikost <n> (výchozí: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Set minimum block size in bytes (default: %u)</source>
|
||||
<translation>Nastavit minimální velikost bloku v bajtech (výchozí: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Set the number of threads to service RPC calls (default: %d)</source>
|
||||
<translation>Nastavení počtu vláken pro servisní RPC volání (výchozí: %d)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Sets the DB_PRIVATE flag in the wallet db environment (default: %u)</source>
|
||||
<translation>Nastavit příznak DB_PRIVATE v databázovém prostředí peněženky (výchozí: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Specify configuration file (default: %s)</source>
|
||||
<translation>Konfigurační soubor (výchozí: %s)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Specify connection timeout in milliseconds (minimum: 1, default: %d)</source>
|
||||
<translation>Zadej časový limit spojení v milivteřinách (minimum: 1, výchozí: %d)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Spend unconfirmed change when sending transactions (default: %u)</source>
|
||||
<translation>Utrácet i ještě nepotvrzené drobné při posílání transakcí (výchozí: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Stop running after importing blocks from disk (default: %u)</source>
|
||||
<translation>Ukončit se po importu bloků z disku (výchozí: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Threshold for disconnecting misbehaving peers (default: %u)</source>
|
||||
<translation>Práh pro odpojování zlobivých protějšků (výchozí: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unknown network specified in -onlynet: '%s'</source>
|
||||
<translation>V -onlynet byla uvedena neznámá síť: '%s'</translation>
|
||||
@@ -3154,10 +3522,6 @@ například: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Invalid amount for -paytxfee=<amount>: '%s'</source>
|
||||
<translation>Neplatná částka pro -paytxfee=<částka>: '%s'</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Invalid amount</source>
|
||||
<translation>Neplatná částka</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Insufficient funds</source>
|
||||
<translation>Nedostatek prostředků</translation>
|
||||
@@ -3190,10 +3554,6 @@ například: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Done loading</source>
|
||||
<translation>Načítání dokončeno</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>To use the %s option</source>
|
||||
<translation>K použití volby %s</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>Chyba</translation>
|
||||
|
||||
@@ -1,10 +1,6 @@
|
||||
<TS language="cy" version="2.0">
|
||||
<TS language="cy" version="2.1">
|
||||
<context>
|
||||
<name>AddressBookPage</name>
|
||||
<message>
|
||||
<source>Double-click to edit address or label</source>
|
||||
<translation>Clicio dwywaith i olygu cyfeiriad neu label</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Create a new address</source>
|
||||
<translation>Creu cyfeiriad newydd</translation>
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<TS language="da" version="2.0">
|
||||
<TS language="da" version="2.1">
|
||||
<context>
|
||||
<name>AddressBookPage</name>
|
||||
<message>
|
||||
<source>Double-click to edit address or label</source>
|
||||
<translation>Dobbeltklik for at redigere adresse eller mærkat</translation>
|
||||
<source>Right-click to edit address or label</source>
|
||||
<translation>Højreklik for at redigere adresse eller mærke</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Create a new address</source>
|
||||
@@ -1284,6 +1284,14 @@ Adresse: %4
|
||||
<source>Refund from %1</source>
|
||||
<translation>Tilbagebetaling fra %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Payment request %1 is too large (%2 bytes, allowed %3 bytes).</source>
|
||||
<translation>Betalingsanmodning %1 er for stor (%2 byte, %3 byte tilladt).</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Payment request DoS protection</source>
|
||||
<translation>Beskyttelse mod DoS-angreb via betalingsanmodninger</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error communicating with %1: %2</source>
|
||||
<translation>Fejl under kommunikation med %1: %2</translation>
|
||||
@@ -1981,8 +1989,8 @@ Adresse: %4
|
||||
<translation>Kopiér byttepenge</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Total Amount %1 (= %2)</source>
|
||||
<translation>Totalbeløb %1 (= %2)</translation>
|
||||
<source>Total Amount %1<span style='font-size:10pt;font-weight:normal;'><br />(=%2)</span></source>
|
||||
<translation>Totalbeløb %1<span style='font-size:10pt;font-weight:normal;'><br />(=%2)</span></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>or</source>
|
||||
@@ -2802,30 +2810,6 @@ Adresse: %4
|
||||
<source>Accept connections from outside (default: 1 if no -proxy or -connect)</source>
|
||||
<translation>Acceptér forbindelser udefra (standard: 1 hvis hverken -proxy eller -connect)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>%s, you must set a rpcpassword in the configuration file:
|
||||
%s
|
||||
It is recommended you use the following random password:
|
||||
rpcuser=bitcoinrpc
|
||||
rpcpassword=%s
|
||||
(you do not need to remember this password)
|
||||
The username and password MUST NOT be the same.
|
||||
If the file does not exist, create it with owner-readable-only file permissions.
|
||||
It is also recommended to set alertnotify so you are notified of problems;
|
||||
for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
</source>
|
||||
<translation>%s, du skal angive en RPC-adgangskode i konfigurationsfilen:
|
||||
%s
|
||||
Det anbefales, at du bruger nedenstående, tilfældige adgangskode:
|
||||
rpcuser=bitcoinrpc
|
||||
rpcpassword=%s
|
||||
(du behøver ikke huske denne adgangskode)
|
||||
Brugernavnet og adgangskode MÅ IKKE være det samme.
|
||||
Hvis filen ikke eksisterer, opret den og giv ingen andre end ejeren læserettighed.
|
||||
Det anbefales også at angive alertnotify, så du påmindes om problemer;
|
||||
fx: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Bind to given address and always listen on it. Use [host]:port notation for IPv6</source>
|
||||
<translation>Tildel til den givne adresse og lyt altid på den. Brug [vært]:port-notation for IPv6</translation>
|
||||
@@ -2842,14 +2826,6 @@ fx: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Enter regression test mode, which uses a special chain in which blocks can be solved instantly.</source>
|
||||
<translation>Start regressionstesttilstand, som bruger en speciel kæde, hvor blokke kan løses med det samme.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error: The transaction was rejected! This might happen if some of the coins in your wallet were already spent, such as if you used a copy of wallet.dat and coins were spent in the copy but not marked as spent here.</source>
|
||||
<translation>Fejl: Transaktionen blev afvist. Dette kan ske, hvis nogle af dine bitcoins i din tegnebog allerede er brugt, som hvis du brugte en kopi af wallet.dat og dine bitcoins er blevet brugt i kopien, men ikke er markeret som brugt her.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds!</source>
|
||||
<translation>Fejl: Denne transaktion kræver et transaktionsgebyr på minimum %s pga. dens beløb, kompleksitet eller anvendelse af nyligt modtagne bitcoins!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Execute command when a wallet transaction changes (%s in cmd is replaced by TxID)</source>
|
||||
<translation>Udfør kommando, når en transaktion i tegnebogen ændres (%s i kommandoen erstattes med TxID)</translation>
|
||||
@@ -2954,18 +2930,10 @@ fx: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Error opening block database</source>
|
||||
<translation>Åbning af blokdatabase mislykkedes</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error: A fatal internal error occured, see debug.log for details</source>
|
||||
<translation>Fejl: En fatal intern fejl opstod; se debug.log for detaljer</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error: Disk space is low!</source>
|
||||
<translation>Fejl: Mangel på ledig diskplads!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error: Wallet locked, unable to create transaction!</source>
|
||||
<translation>Fejl: Tegnebog låst, kan ikke oprette transaktion!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Failed to listen on any port. Use -listen=0 if you want this.</source>
|
||||
<translation>Lytning på enhver port mislykkedes. Brug -listen=0, hvis du ønsker dette.</translation>
|
||||
@@ -3090,14 +3058,30 @@ fx: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Fees (in BTC/Kb) smaller than this are considered zero fee for transaction creation (default: %s)</source>
|
||||
<translation>Gebyrer (i BTC/Kb) mindre end dette opfattes som nulgebyr for oprettelse af transaktion (standard: %s)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>If paytxfee is not set, include enough fee so transactions begin confirmation on average within n blocks (default: %u)</source>
|
||||
<translation>Hvis paytxfee ikke er sat, inkluderes nok gebyr til at transaktioner begynder at blive bekræftet ingen for gennemsnitligt n blokke (standard: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Invalid amount for -maxtxfee=<amount>: '%s' (must be at least the minrelay fee of %s to prevent stuck transactions)</source>
|
||||
<translation>Ugyldigt beløb for -maxtxfee=<beløb>: "%s" (skal være på mindst minrelay-gebyret på %s for at undgå hængende transaktioner)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Maximum size of data in data carrier transactions we relay and mine (default: %u)</source>
|
||||
<translation>Maksimal størrelse på data i transaktioner til dataoverførsel, som vi videresender og miner (standard: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Maximum total fees to use in a single wallet transaction, setting too low may abort large transactions (default: %s)</source>
|
||||
<translation>Maksimalt totalgebyr der bruges på en enkelt tegnebogstransaktion. Sættes det for lavt kan store transaktioner afbrydes (standard: %s)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Query for peer addresses via DNS lookup, if low on addresses (default: 1 unless -connect)</source>
|
||||
<translation>Forespørgsel</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Require high priority for relaying free or low-fee transactions (default:%u)</source>
|
||||
<translation>Kræv høj prioritet for at videresende transaktioner med intet eller lavt gebyr (standard: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Set maximum size of high-priority/low-fee transactions in bytes (default: %d)</source>
|
||||
<translation>Sæt maksimumstørrelse for højprioritet/lavgebyr-transaktioner i byte (standard: %d)</translation>
|
||||
@@ -3110,6 +3094,34 @@ fx: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit <https://www.openssl.org/> and cryptographic software written by Eric Young and UPnP software written by Thomas Bernard.</source>
|
||||
<translation>Dette produkt indeholder software, der er udviklet af OpenSSL-projektet for brug i OpenSSL-værktøjskassen <https://www.openssl.org/>, samt kryptografisk software, der er skrevet af Eric Young, samt UPnP-software, der er skrevet af Thomas Bernard.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>To use bitcoind, or the -server option to bitcoin-qt, you must set an rpcpassword in the configuration file:
|
||||
%s
|
||||
It is recommended you use the following random password:
|
||||
rpcuser=bitcoinrpc
|
||||
rpcpassword=%s
|
||||
(you do not need to remember this password)
|
||||
The username and password MUST NOT be the same.
|
||||
If the file does not exist, create it with owner-readable-only file permissions.
|
||||
It is also recommended to set alertnotify so you are notified of problems;
|
||||
for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
</source>
|
||||
<translation>For at bruge bitcoind eller valgmuligheden -server i bitcoin-qt skal du oprette et rpcpassword i konfigurationsfilen:
|
||||
%s
|
||||
Det anbefales, at du bruger følgende tilfældige adgangskode:
|
||||
rpcuser=bitcoinrpc
|
||||
rpcpassword=%s
|
||||
(du behøver ikke at huske adgangskoden)
|
||||
Brugernavnet og adgangskoden MÅ IKKE være det samme.
|
||||
Hvis filen ikke eksisterer, opret den da så kun ejeren har læserettigheder.
|
||||
Det anbefales også at sætte alertnotify, så du får besked omkring problemer;
|
||||
for eksempel: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Warning: -maxtxfee is set very high! Fees this large could be paid on a single transaction.</source>
|
||||
<translation>Advarsel: -maxtxfee er sat meget højt! Så store gebyrer kan betales på en enkelt transaktion.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Warning: Please check that your computer's date and time are correct! If your clock is wrong Bitcoin Core will not work properly.</source>
|
||||
<translation>Advarsel: Undersøg venligst at din computers dato og klokkeslet er korrekt indstillet! Hvis der er fejl i disse vil Bitcoin Core ikke fungere korrekt.</translation>
|
||||
@@ -3118,6 +3130,10 @@ fx: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Whitelisted peers cannot be DoS banned and their transactions are always relayed, even if they are already in the mempool, useful e.g. for a gateway</source>
|
||||
<translation>Andre knuder på hvidliste kan ikke DoS-bandlyses, og deres transaktioner videresendes altid, selv hvis de allerede er i mempool'en. Brugbart til fx et adgangspunkt</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Accept public REST requests (default: %u)</source>
|
||||
<translation>Acceptér offentlige REST-anmodninger (standard: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Cannot resolve -whitebind address: '%s'</source>
|
||||
<translation>Kan ikke løse -whitebind adresse: "%s"</translation>
|
||||
@@ -3138,6 +3154,14 @@ fx: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Error loading wallet.dat: Wallet requires newer version of Bitcoin Core</source>
|
||||
<translation>Fejl ved indlæsning af wallet.dat: Tegnebog kræver en nyere version af Bitcoin Core</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error reading from database, shutting down.</source>
|
||||
<translation>Fejl under læsning fra database; lukker ned.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error: A fatal internal error occurred, see debug.log for details</source>
|
||||
<translation>Fejl: En alvorlig intern fejl er opstået. Se debug.log for detaljer</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error: Unsupported argument -tor found, use -onion.</source>
|
||||
<translation>Fejl: Ikke understøttet argument -tor fundet, brug -onion.</translation>
|
||||
@@ -3154,6 +3178,10 @@ fx: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Initialization sanity check failed. Bitcoin Core is shutting down.</source>
|
||||
<translation>Sundhedstjek under klargøring mislykkedes. Bitcoin Core lukker ned.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Invalid amount for -maxtxfee=<amount>: '%s'</source>
|
||||
<translation>Ugyldigt beløb for -maxtxfee=<beløb>: "%s"</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Invalid amount for -minrelaytxfee=<amount>: '%s'</source>
|
||||
<translation>Ugyldigt beløb til -minrelaytxfee=<beløb>: "%s"</translation>
|
||||
@@ -3170,10 +3198,6 @@ fx: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Invalid netmask specified in -whitelist: '%s'</source>
|
||||
<translation>Ugyldig netmaske angivet i -whitelist: "%s"</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Keep at most <n> unconnectable blocks in memory (default: %u)</source>
|
||||
<translation>Behold højest <n> uforbindelige blokke i hukommelsen (standard: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Keep at most <n> unconnectable transactions in memory (default: %u)</source>
|
||||
<translation>Behold højest <n> uforbindelige transaktioner i hukommelsen (standard: %u)</translation>
|
||||
@@ -3186,10 +3210,6 @@ fx: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Node relay options:</source>
|
||||
<translation>Videresendelsesvalgmuligheder for knude:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Print block on startup, if found in block index</source>
|
||||
<translation>Udskriv blok under opstart, hvis den findes i blokindeks</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>RPC SSL options: (see the Bitcoin Wiki for SSL setup instructions)</source>
|
||||
<translation>Tilvalg for RPC SSL: (se Bitcoin Wiki for instruktioner i SSL-opstart)</translation>
|
||||
@@ -3198,6 +3218,10 @@ fx: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>RPC server options:</source>
|
||||
<translation>Tilvalg for RPC-server:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>RPC support for HTTP persistent connections (default: %d)</source>
|
||||
<translation>RPC-understøttelse for HTTP-persistente forbindelser (standard: %d)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Randomly drop 1 of every <n> network messages</source>
|
||||
<translation>Drop tilfældigt 1 ud af hver <n> netværksbeskeder</translation>
|
||||
@@ -3206,6 +3230,10 @@ fx: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Randomly fuzz 1 of every <n> network messages</source>
|
||||
<translation>Slør tilfældigt 1 ud af hver <n> netværksbeskeder</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Receive and display P2P network alerts (default: %u)</source>
|
||||
<translation>Modtag og vis P2P-netværksadvarsler (standard: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Send trace/debug info to console instead of debug.log file</source>
|
||||
<translation>Send sporings-/fejlsøgningsinformation til konsollen i stedet for debug.log filen</translation>
|
||||
@@ -3238,6 +3266,10 @@ fx: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Transaction amounts must be positive</source>
|
||||
<translation>Transaktionsbeløb skal være positive</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Transaction too large for fee policy</source>
|
||||
<translation>Transaktion for stor til gebyrretningslinjer</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Transaction too large</source>
|
||||
<translation>Transaktionen er for stor</translation>
|
||||
@@ -3334,10 +3366,6 @@ fx: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>How thorough the block verification of -checkblocks is (0-4, default: %u)</source>
|
||||
<translation>Hvor gennemarbejdet blokverificeringen for -checkblocks er (0-4; standard: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>If paytxfee is not set, include enough fee so transactions are confirmed on average within n blocks (default: %u)</source>
|
||||
<translation>Hvis paytxfee ikke er angivet, inkludér da nok gebyr til at transaktioner gennemsnitligt bekræftes inden for n blokke (standard: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Log transaction priority and fee per kB when mining blocks (default: %u)</source>
|
||||
<translation>Prioritet for transaktionslog og gebyr pr. kB under udvinding af blokke (standard: %u)</translation>
|
||||
@@ -3430,10 +3458,6 @@ fx: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Prepend debug output with timestamp (default: %u)</source>
|
||||
<translation>Føj tidsstempel foran fejlsøgningsoutput (standard: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Print block tree on startup (default: %u)</source>
|
||||
<translation>Udskriv bloktræ under opstart (standard: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Relay and mine data carrier transactions (default: %u)</source>
|
||||
<translation>Videresend og udvind databærer-transaktioner (standard: %u)</translation>
|
||||
@@ -3512,10 +3536,6 @@ fx: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Invalid amount for -paytxfee=<amount>: '%s'</source>
|
||||
<translation>Ugyldigt beløb for -paytxfee=<beløb>: "%s"</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Invalid amount</source>
|
||||
<translation>Ugyldigt beløb</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Insufficient funds</source>
|
||||
<translation>Manglende dækning</translation>
|
||||
@@ -3548,10 +3568,6 @@ fx: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Done loading</source>
|
||||
<translation>Indlæsning gennemført</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>To use the %s option</source>
|
||||
<translation>For at bruge %s mulighed</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>Fejl</translation>
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<TS language="de" version="2.0">
|
||||
<TS language="de" version="2.1">
|
||||
<context>
|
||||
<name>AddressBookPage</name>
|
||||
<message>
|
||||
<source>Double-click to edit address or label</source>
|
||||
<translation>Doppelklick zum Bearbeiten der Adresse oder der Bezeichnung</translation>
|
||||
<source>Right-click to edit address or label</source>
|
||||
<translation>Rechtsklick zum Bearbeiten der Adresse oder der Bezeichnung</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Create a new address</source>
|
||||
@@ -478,6 +478,10 @@
|
||||
<source>Up to date</source>
|
||||
<translation>Auf aktuellem Stand</translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<source>Processed %n blocks of transaction history.</source>
|
||||
<translation><numerusform>%n Block des Transaktionsverlaufs verarbeitet.</numerusform><numerusform>%n Blöcke des Transaktionsverlaufs verarbeitet.</numerusform></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Catching up...</source>
|
||||
<translation>Hole auf...</translation>
|
||||
@@ -862,7 +866,7 @@ Adresse: %4</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Set SSL root certificates for payment request (default: -system-)</source>
|
||||
<translation>SSL-Wurzelzertifikate für Zahlungsanforderungen festlegen (Standard: Systemstandard)</translation>
|
||||
<translation>SSL-Wurzelzertifikate für Zahlungsanforderungen festlegen (Standard: -system-)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show splash screen on startup (default: 1)</source>
|
||||
@@ -1283,6 +1287,14 @@ Adresse: %4</translation>
|
||||
<source>Refund from %1</source>
|
||||
<translation>Rücküberweisung von %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Payment request %1 is too large (%2 bytes, allowed %3 bytes).</source>
|
||||
<translation>Zahlungsanforderung %1 ist zu groß (%2 Byte, erlaubt sind %3 Byte).</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Payment request DoS protection</source>
|
||||
<translation>Zahlungsanforderungs-DoS-Schutz</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error communicating with %1: %2</source>
|
||||
<translation>Kommunikationsfehler mit %1: %2</translation>
|
||||
@@ -1980,8 +1992,8 @@ Adresse: %4</translation>
|
||||
<translation>Wechselgeld kopieren</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Total Amount %1 (= %2)</source>
|
||||
<translation>Gesamtbetrag %1 (= %2)</translation>
|
||||
<source>Total Amount %1<span style='font-size:10pt;font-weight:normal;'><br />(=%2)</span></source>
|
||||
<translation>Gesamtbetrag %1<span style='font-size:10pt;font-weight:normal;'><br />(=%2)</span></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>or</source>
|
||||
@@ -2801,30 +2813,6 @@ Adresse: %4</translation>
|
||||
<source>Accept connections from outside (default: 1 if no -proxy or -connect)</source>
|
||||
<translation>Eingehende Verbindungen annehmen (Standard: 1, wenn nicht -proxy oder -connect)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>%s, you must set a rpcpassword in the configuration file:
|
||||
%s
|
||||
It is recommended you use the following random password:
|
||||
rpcuser=bitcoinrpc
|
||||
rpcpassword=%s
|
||||
(you do not need to remember this password)
|
||||
The username and password MUST NOT be the same.
|
||||
If the file does not exist, create it with owner-readable-only file permissions.
|
||||
It is also recommended to set alertnotify so you are notified of problems;
|
||||
for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
</source>
|
||||
<translation>%s, Sie müssen den Wert rpcpasswort in dieser Konfigurationsdatei angeben:
|
||||
%s
|
||||
Es wird empfohlen das folgende Zufallspasswort zu verwenden:
|
||||
rpcuser=bitcoinrpc
|
||||
rpcpassword=%s
|
||||
(Sie müssen sich dieses Passwort nicht merken!)
|
||||
Der Benutzername und das Passwort dürfen NICHT identisch sein.
|
||||
Falls die Konfigurationsdatei nicht existiert, erzeugen Sie diese bitte mit Leserechten nur für den Dateibesitzer.
|
||||
Es wird ebenfalls empfohlen alertnotify anzugeben, um im Problemfall benachrichtig zu werden;
|
||||
zum Beispiel: alertnotify=echo %%s | mail -s \"Bitcoin Alert\" admin@foo.com
|
||||
</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Bind to given address and always listen on it. Use [host]:port notation for IPv6</source>
|
||||
<translation>An die angegebene Adresse binden und immer abhören. Für IPv6 "[Host]:Port"-Notation verwenden</translation>
|
||||
@@ -2841,14 +2829,6 @@ zum Beispiel: alertnotify=echo %%s | mail -s \"Bitcoin Alert\" admin@foo.com
|
||||
<source>Enter regression test mode, which uses a special chain in which blocks can be solved instantly.</source>
|
||||
<translation>Regressionstest-Modus aktivieren, der eine spezielle Blockkette nutzt, in der Blöcke sofort gelöst werden können.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error: The transaction was rejected! This might happen if some of the coins in your wallet were already spent, such as if you used a copy of wallet.dat and coins were spent in the copy but not marked as spent here.</source>
|
||||
<translation>Fehler: Die Transaktion wurde abgelehnt! Dies kann passieren, wenn einige Bitcoins aus Ihrer Wallet bereits ausgegeben wurden. Beispielsweise weil Sie eine Kopie Ihrer wallet.dat genutzt, die Bitcoins dort ausgegeben haben und dies daher in der derzeit aktiven Wallet nicht vermerkt ist.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds!</source>
|
||||
<translation>Fehler: Diese Transaktion benötigt aufgrund Ihres Betrags, Ihrer Komplexität oder der Nutzung erst kürzlich erhaltener Zahlungen eine Transaktionsgebühr in Höhe von mindestens %s!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Execute command when a wallet transaction changes (%s in cmd is replaced by TxID)</source>
|
||||
<translation>Befehl ausführen wenn sich eine Wallet-Transaktion verändert (%s im Befehl wird durch die Transaktions-ID ersetzt)</translation>
|
||||
@@ -2953,18 +2933,10 @@ zum Beispiel: alertnotify=echo %%s | mail -s \"Bitcoin Alert\" admin@foo.com
|
||||
<source>Error opening block database</source>
|
||||
<translation>Fehler beim Öffnen der Blockdatenbank</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error: A fatal internal error occured, see debug.log for details</source>
|
||||
<translation>Fehler: Ein schwerer Fehler ist aufgetreten, für Details debug.log ansehen.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error: Disk space is low!</source>
|
||||
<translation>Fehler: Zu wenig freier Speicherplatz auf dem Datenträger!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error: Wallet locked, unable to create transaction!</source>
|
||||
<translation>Fehler: Wallet gesperrt, Transaktion kann nicht erstellt werden!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Failed to listen on any port. Use -listen=0 if you want this.</source>
|
||||
<translation>Fehler, es konnte kein Port abgehört werden. Wenn dies so gewünscht wird -listen=0 verwenden.</translation>
|
||||
@@ -3089,14 +3061,30 @@ zum Beispiel: alertnotify=echo %%s | mail -s \"Bitcoin Alert\" admin@foo.com
|
||||
<source>Fees (in BTC/Kb) smaller than this are considered zero fee for transaction creation (default: %s)</source>
|
||||
<translation>Niedrigere Gebühren (in BTC/Kb) als diese werden bei der Transaktionserstellung als gebührenfrei angesehen (Standard: %s)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>If paytxfee is not set, include enough fee so transactions begin confirmation on average within n blocks (default: %u)</source>
|
||||
<translation>Wenn -paytxfee nicht festgelegt wurde Gebühren einschließen, so dass mit der Bestätigung von Transaktionen im Schnitt innerhalb von n Blöcken begonnen wird (Standard: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Invalid amount for -maxtxfee=<amount>: '%s' (must be at least the minrelay fee of %s to prevent stuck transactions)</source>
|
||||
<translation>Ungültiger Betrag für -maxtxfee=<amount>: '%s' (muss mindestens die minimale Weiterleitungsgebühr in Höhe von %s sein, um zu verhindern dass Transaktionen nicht bearbeitet werden)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Maximum size of data in data carrier transactions we relay and mine (default: %u)</source>
|
||||
<translation>Maximale Datengröße in "Data Carrier"-Transaktionen die weitergeleitet und erarbeitet werden (Standard: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Maximum total fees to use in a single wallet transaction, setting too low may abort large transactions (default: %s)</source>
|
||||
<translation>Maximale Gesamtgebühren je Wallet-Transaktion, ein zu niedriger Wert kann große Transaktionen abbrechen (Standard: %s)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Query for peer addresses via DNS lookup, if low on addresses (default: 1 unless -connect)</source>
|
||||
<translation>Adressen von Gegenstellen via DNS-Namensauflösung finden, falls zu wenige Adressen verfügbar sind (Standard: 1, außer bei -connect)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Require high priority for relaying free or low-fee transactions (default:%u)</source>
|
||||
<translation>Zum Weiterleiten von freien Transaktionen oder Transaktionen mit niedrigen Gebühren eine hohe Priorität voraussetzen (Standard: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Set maximum size of high-priority/low-fee transactions in bytes (default: %d)</source>
|
||||
<translation>Maximale Größe in Byte von "high-priority/low-fee"-Transaktionen festlegen (Standard: %d)</translation>
|
||||
@@ -3109,6 +3097,34 @@ zum Beispiel: alertnotify=echo %%s | mail -s \"Bitcoin Alert\" admin@foo.com
|
||||
<source>This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit <https://www.openssl.org/> and cryptographic software written by Eric Young and UPnP software written by Thomas Bernard.</source>
|
||||
<translation>Dieses Produkt enthält Software, die vom OpenSSL-Projekt zur Verwendung im OpenSSL-Toolkit <https://www.openssl.org/> entwickelt wird, sowie von Eric Young geschriebene kryptographische Software und von Thomas Bernard geschriebene UPnP-Software.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>To use bitcoind, or the -server option to bitcoin-qt, you must set an rpcpassword in the configuration file:
|
||||
%s
|
||||
It is recommended you use the following random password:
|
||||
rpcuser=bitcoinrpc
|
||||
rpcpassword=%s
|
||||
(you do not need to remember this password)
|
||||
The username and password MUST NOT be the same.
|
||||
If the file does not exist, create it with owner-readable-only file permissions.
|
||||
It is also recommended to set alertnotify so you are notified of problems;
|
||||
for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
</source>
|
||||
<translation>Um bitcoind oder die Option -server mit bitcoin-qt verwenden zu können, müssen Sie rpcpassword in der Konfigurationsdatei angeben:
|
||||
%s
|
||||
Es wird empfohlen das folgende Zufallspasswort zu verwenden.
|
||||
rpcuser=bitcoinrpc
|
||||
rpcpassword=%s
|
||||
(Sie müssen sich dieses Passwort nicht merken!)
|
||||
Der Benutzername und das Passwort dürfen NICHT identisch sein.
|
||||
Falls die Konfigurationsdatei nicht existiert, erzeugen Sie diese bitte mit Leserechten nur für den Dateibesitzer.
|
||||
Es wird ebenfalls empfohlen alertnotify anzugeben, um im Problemfall benachrichtigt zu werden.
|
||||
Beispiel: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Warning: -maxtxfee is set very high! Fees this large could be paid on a single transaction.</source>
|
||||
<translation>Warnung: -maxtxfee ist auf einen sehr hohen Wert festgelegt! Gebühren dieser Höhe könnten für eine einzelne Transaktion bezahlt werden.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Warning: Please check that your computer's date and time are correct! If your clock is wrong Bitcoin Core will not work properly.</source>
|
||||
<translation>Warnung: Bitte korrigieren Sie die Datums- und Uhrzeiteinstellungen Ihres Computers, da Bitcoin Core ansonsten nicht ordnungsgemäß funktionieren wird.</translation>
|
||||
@@ -3117,6 +3133,10 @@ zum Beispiel: alertnotify=echo %%s | mail -s \"Bitcoin Alert\" admin@foo.com
|
||||
<source>Whitelisted peers cannot be DoS banned and their transactions are always relayed, even if they are already in the mempool, useful e.g. for a gateway</source>
|
||||
<translation>Erlaubte Gegenstellen werden nicht für DoS-Attacken gesperrt und ihre Transkationen werden immer weitergeleitet, auch wenn sie sich bereits im Speicherpool befinden, was z.B. für Gateways sinnvoll ist.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Accept public REST requests (default: %u)</source>
|
||||
<translation>Öffentliche REST-Anfragen annehmen (Standard: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Cannot resolve -whitebind address: '%s'</source>
|
||||
<translation>Kann Adresse in -whitebind nicht auflösen: '%s'</translation>
|
||||
@@ -3137,6 +3157,14 @@ zum Beispiel: alertnotify=echo %%s | mail -s \"Bitcoin Alert\" admin@foo.com
|
||||
<source>Error loading wallet.dat: Wallet requires newer version of Bitcoin Core</source>
|
||||
<translation>Fehler beim Laden von wallet.dat: Wallet benötigt neuere Version von Bitcoin Core</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error reading from database, shutting down.</source>
|
||||
<translation>Fehler beim lesen der Datenbank, Ausführung wird beendet.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error: A fatal internal error occurred, see debug.log for details</source>
|
||||
<translation>Fehler: Ein schwerer interner Fehler ist aufgetreten, siehe debug.log für Details.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error: Unsupported argument -tor found, use -onion.</source>
|
||||
<translation>Fehler: Nicht unterstütztes Argument -tor gefunden, bitte -onion verwenden.</translation>
|
||||
@@ -3153,6 +3181,10 @@ zum Beispiel: alertnotify=echo %%s | mail -s \"Bitcoin Alert\" admin@foo.com
|
||||
<source>Initialization sanity check failed. Bitcoin Core is shutting down.</source>
|
||||
<translation>Initialisierungsplausibilitätsprüfung fehlgeschlagen. Bitcoin Core wird beendet.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Invalid amount for -maxtxfee=<amount>: '%s'</source>
|
||||
<translation>Ungültiger Betrag für -maxtxfee=<amount>: '%s'</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Invalid amount for -minrelaytxfee=<amount>: '%s'</source>
|
||||
<translation>Ungültiger Betrag für -minrelaytxfee=<amount>: '%s'</translation>
|
||||
@@ -3169,10 +3201,6 @@ zum Beispiel: alertnotify=echo %%s | mail -s \"Bitcoin Alert\" admin@foo.com
|
||||
<source>Invalid netmask specified in -whitelist: '%s'</source>
|
||||
<translation>Ungültige Netzmaske angegeben in -whitelist: '%s'</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Keep at most <n> unconnectable blocks in memory (default: %u)</source>
|
||||
<translation>Maximal <n> nicht-verbindbare Blöcke im Speicher halten (Standard: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Keep at most <n> unconnectable transactions in memory (default: %u)</source>
|
||||
<translation>Maximal <n> nicht-verbindbare Transaktionen im Speicher halten (Standard: %u)</translation>
|
||||
@@ -3185,10 +3213,6 @@ zum Beispiel: alertnotify=echo %%s | mail -s \"Bitcoin Alert\" admin@foo.com
|
||||
<source>Node relay options:</source>
|
||||
<translation>Knoten-Weiterleitungsoptionen:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Print block on startup, if found in block index</source>
|
||||
<translation>Block beim Starten ausgeben, wenn dieser im Blockindex gefunden wurde.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>RPC SSL options: (see the Bitcoin Wiki for SSL setup instructions)</source>
|
||||
<translation>RPC-SSL-Optionen (siehe Bitcoin-Wiki für SSL-Einrichtung):</translation>
|
||||
@@ -3197,6 +3221,10 @@ zum Beispiel: alertnotify=echo %%s | mail -s \"Bitcoin Alert\" admin@foo.com
|
||||
<source>RPC server options:</source>
|
||||
<translation>RPC-Serveroptionen:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>RPC support for HTTP persistent connections (default: %d)</source>
|
||||
<translation>Unterstützung für persistente HTTP-Verbindungen bei RPC (Standard: %d)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Randomly drop 1 of every <n> network messages</source>
|
||||
<translation>Zufällig eine von <n> Netzwerknachrichten verwerfen</translation>
|
||||
@@ -3237,6 +3265,10 @@ zum Beispiel: alertnotify=echo %%s | mail -s \"Bitcoin Alert\" admin@foo.com
|
||||
<source>Transaction amounts must be positive</source>
|
||||
<translation>Transaktionsbeträge müssen positiv sein</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Transaction too large for fee policy</source>
|
||||
<translation>Transaktion ist für die Gebührenrichtlinie zu groß</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Transaction too large</source>
|
||||
<translation>Transaktion zu groß</translation>
|
||||
@@ -3333,10 +3365,6 @@ zum Beispiel: alertnotify=echo %%s | mail -s \"Bitcoin Alert\" admin@foo.com
|
||||
<source>How thorough the block verification of -checkblocks is (0-4, default: %u)</source>
|
||||
<translation>Legt fest, wie gründlich die Blockverifikation von -checkblocks ist (0-4, Standard: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>If paytxfee is not set, include enough fee so transactions are confirmed on average within n blocks (default: %u)</source>
|
||||
<translation>Wenn keine Transaktionsgebühr festgelegt wurde eine Gebühr einbeziehen, sodass Transaktionen im Schnitt innerhalb von <n> Blöcken bestätigt werden (Standard: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Log transaction priority and fee per kB when mining blocks (default: %u)</source>
|
||||
<translation>Transaktionspriorität und Gebühr pro kB beim Erzeugen von Blöcken protokollieren (Standard: %u)</translation>
|
||||
@@ -3425,10 +3453,6 @@ zum Beispiel: alertnotify=echo %%s | mail -s \"Bitcoin Alert\" admin@foo.com
|
||||
<source>Prepend debug output with timestamp (default: %u)</source>
|
||||
<translation>Debugausgaben einen Zeitstempel voranstellen (Standard: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Print block tree on startup (default: %u)</source>
|
||||
<translation>Blockbaum beim Starten ausgeben (Standard: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Relay and mine data carrier transactions (default: %u)</source>
|
||||
<translation>"Data Carrier"-Transaktionen weiterleiten und erarbeiten (Standard: %u)</translation>
|
||||
@@ -3505,10 +3529,6 @@ zum Beispiel: alertnotify=echo %%s | mail -s \"Bitcoin Alert\" admin@foo.com
|
||||
<source>Invalid amount for -paytxfee=<amount>: '%s'</source>
|
||||
<translation>Ungültiger Betrag für -paytxfee=<amount>: '%s'</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Invalid amount</source>
|
||||
<translation>Ungültiger Betrag</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Insufficient funds</source>
|
||||
<translation>Unzureichender Kontostand</translation>
|
||||
@@ -3541,10 +3561,6 @@ zum Beispiel: alertnotify=echo %%s | mail -s \"Bitcoin Alert\" admin@foo.com
|
||||
<source>Done loading</source>
|
||||
<translation>Laden abgeschlossen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>To use the %s option</source>
|
||||
<translation>Zur Nutzung der %s-Option</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>Fehler</translation>
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<TS language="el_GR" version="2.0">
|
||||
<TS language="el_GR" version="2.1">
|
||||
<context>
|
||||
<name>AddressBookPage</name>
|
||||
<message>
|
||||
<source>Double-click to edit address or label</source>
|
||||
<translation>Διπλό-κλικ για επεξεργασία της διεύθυνσης ή της ετικέτας</translation>
|
||||
<source>Right-click to edit address or label</source>
|
||||
<translation>Δεξί-κλικ για επεξεργασία της διεύθυνσης ή της ετικέτας</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Create a new address</source>
|
||||
@@ -972,10 +972,18 @@ Address: %4
|
||||
<source>IP address of the proxy (e.g. IPv4: 127.0.0.1 / IPv6: ::1)</source>
|
||||
<translation>Διεύθυνση IP του διαμεσολαβητή (π.χ. 127.0.0.1 / IPv6: ::1)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Third party URLs (e.g. a block explorer) that appear in the transactions tab as context menu items. %s in the URL is replaced by transaction hash. Multiple URLs are separated by vertical bar |.</source>
|
||||
<translation>URLs από τρίτους (π.χ. ένας εξερευνητής μπλοκ) τα οποία εμφανίζονται στην καρτέλα συναλλαγών ως στοιχεία μενού. Το %s στα URL αντικαθιστάται από την τιμή της κατατεμαχισμένης συναλλαγής.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Third party transaction URLs</source>
|
||||
<translation>Διευθύνσεις τρίτων συναλλαγών.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Active command-line options that override above options:</source>
|
||||
<translation>Ενεργές επιλογές γραμμής-εντολών που παρακάμπτουν τις παραπάνω επιλογές:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Reset all client options to default.</source>
|
||||
<translation>Επαναφορα όλων των επιλογων του πελάτη σε default.</translation>
|
||||
@@ -988,6 +996,10 @@ Address: %4
|
||||
<source>&Network</source>
|
||||
<translation>&Δίκτυο</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>(0 = auto, <0 = leave that many cores free)</source>
|
||||
<translation>(0 = αυτόματο, <0 = ελεύθεροι πυρήνες)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>W&allet</source>
|
||||
<translation>Π&ορτοφόλι</translation>
|
||||
@@ -1000,6 +1012,14 @@ Address: %4
|
||||
<source>Enable coin &control features</source>
|
||||
<translation>Επιλογή κατα πόσο να αναδείχνονται οι δυνατότητες ελέγχου κερμάτων.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>If you disable the spending of unconfirmed change, the change from a transaction cannot be used until that transaction has at least one confirmation. This also affects how your balance is computed.</source>
|
||||
<translation>Εάν απενεργοποιήσετε το ξόδεμα μη επικυρωμένων ρέστων, τα ρέστα από μια συναλλαγή δεν μπορούν να χρησιμοποιηθούν έως ότου αυτή η συναλλαγή έχει έστω μια επικύρωση. Αυτό επίσης επηρεάζει το πως υπολογίζεται το υπόλοιπό σας.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Spend unconfirmed change</source>
|
||||
<translation>&Ξόδεμα μη επικυρωμένων ρέστων</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled.</source>
|
||||
<translation>Αυτόματο άνοιγμα των θυρών Bitcoin στον δρομολογητή. Λειτουργεί μόνο αν ο δρομολογητής σας υποστηρίζει τη λειτουργία UPnP.</translation>
|
||||
@@ -1159,6 +1179,10 @@ Address: %4
|
||||
<source>Your current total balance</source>
|
||||
<translation>Το τρέχον συνολικό υπόλοιπο</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Your current balance in watch-only addresses</source>
|
||||
<translation>Το τρέχον υπόλοιπο σας σε διευθύνσεις παρακολούθησης μόνο</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Spendable:</source>
|
||||
<translation>Ξοδεμένα:</translation>
|
||||
@@ -1167,6 +1191,18 @@ Address: %4
|
||||
<source>Recent transactions</source>
|
||||
<translation>Πρόσφατες συναλλαγές</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unconfirmed transactions to watch-only addresses</source>
|
||||
<translation>Μη επικυρωμένες συναλλαγές σε διευθύνσεις παρακολούθησης μόνο</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Mined balance in watch-only addresses that has not yet matured</source>
|
||||
<translation>Εξορυγμένο υπόλοιπο σε διευθύνσεις παρακολούθησης μόνο που δεν έχει ωριμάσει ακόμα</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Current total balance in watch-only addresses</source>
|
||||
<translation>Το τρέχον συνολικό υπόλοιπο σε διευθύνσεις παρακολούθησης μόνο</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>out of sync</source>
|
||||
<translation>εκτός συγχρονισμού</translation>
|
||||
@@ -1194,6 +1230,10 @@ Address: %4
|
||||
<source>Payment request is not initialized.</source>
|
||||
<translation>Η αίτηση πληρωμής δεν έχει αρχίζει ακόμα.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Requested payment amount of %1 is too small (considered dust).</source>
|
||||
<translation>Το ζητούμενο ποσό πληρωμής του %1 είναι πολύ μικρό (θεωρείται σκόνη)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Payment request error</source>
|
||||
<translation>Σφάλμα αιτήματος πληρωμής</translation>
|
||||
@@ -1214,6 +1254,18 @@ Address: %4
|
||||
<source>Refund from %1</source>
|
||||
<translation>Επιστροφή ποσού από %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error communicating with %1: %2</source>
|
||||
<translation>Σφάλμα επικοινωνίας με %1: %2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Payment request cannot be parsed!</source>
|
||||
<translation>Η αίτηση πληρωμής δεν μπορεί να αναλυθεί!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Bad response from server %1</source>
|
||||
<translation>Κακή απάντηση από διακομιστή %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Payment acknowledged</source>
|
||||
<translation>Πληρωμή αναγνωρίστηκε</translation>
|
||||
@@ -1330,6 +1382,10 @@ Address: %4
|
||||
<source>Using OpenSSL version</source>
|
||||
<translation>Χρησιμοποιηση της OpenSSL εκδοσης</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Using BerkeleyDB version</source>
|
||||
<translation>Χρήση BerkeleyDB έκδοσης</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Startup time</source>
|
||||
<translation>Χρόνος εκκίνησης</translation>
|
||||
@@ -1358,6 +1414,18 @@ Address: %4
|
||||
<source>Received</source>
|
||||
<translation>Παραλήφθησαν</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Sent</source>
|
||||
<translation>Αποστολή</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Peers</source>
|
||||
<translation>&Χρήστες</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select a peer to view detailed information.</source>
|
||||
<translation>Επιλέξτε ένα χρήστη για να δείτε αναλυτικές πληροφορίες.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Version</source>
|
||||
<translation>Έκδοση</translation>
|
||||
@@ -1366,6 +1434,38 @@ Address: %4
|
||||
<source>Services</source>
|
||||
<translation>Υπηρεσίες</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Starting Height</source>
|
||||
<translation>Αρχικό ύψος</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Sync Height</source>
|
||||
<translation>Ύψος συγχονισμού</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ban Score</source>
|
||||
<translation>Σκορ αποκλησμού</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Connection Time</source>
|
||||
<translation>Χρόνος σύνδεσης</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Last Send</source>
|
||||
<translation>Τελευταία αποστολή</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Last Receive</source>
|
||||
<translation>Τελευταία λήψη</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Bytes Sent</source>
|
||||
<translation>Σταλθέντα bytes</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Bytes Received</source>
|
||||
<translation>Ληφθέντα bytes</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ping Time</source>
|
||||
<translation>Χρόνος καθυστέρησης</translation>
|
||||
@@ -1466,7 +1566,11 @@ Address: %4
|
||||
<source>Unknown</source>
|
||||
<translation>Άγνωστο(α)</translation>
|
||||
</message>
|
||||
</context>
|
||||
<message>
|
||||
<source>Fetching...</source>
|
||||
<translation>Ανάκτηση...</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ReceiveCoinsDialog</name>
|
||||
<message>
|
||||
@@ -1481,6 +1585,10 @@ Address: %4
|
||||
<source>&Message:</source>
|
||||
<translation>&Μήνυμα:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>R&euse an existing receiving address (not recommended)</source>
|
||||
<translation>Ε&παναχρησιμοποίηση υπάρχουσας διεύθυνσης λήψης (δεν συνιστάται)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Clear all fields of the form.</source>
|
||||
<translation>Καθαρισμός όλων των πεδίων της φόρμας.</translation>
|
||||
@@ -1497,6 +1605,10 @@ Address: %4
|
||||
<source>Show</source>
|
||||
<translation>Εμφάνιση</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Remove the selected entries from the list</source>
|
||||
<translation>Αφαίρεση επιλεγμένων καταχωρίσεων από τη λίστα</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Remove</source>
|
||||
<translation>Αφαίρεση</translation>
|
||||
@@ -1524,10 +1636,18 @@ Address: %4
|
||||
<source>Copy &URI</source>
|
||||
<translation>Αντιγραφη της επιλεγμενης διεύθυνσης στο πρόχειρο του συστηματος</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy &Address</source>
|
||||
<translation>Αντιγραφή &Διεύθυνσης</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Save Image...</source>
|
||||
<translation>&Αποθήκευση εικόνας...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Request payment to %1</source>
|
||||
<translation>Αίτηση πληρωμής για %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Payment information</source>
|
||||
<translation>Πληροφορίες πληρωμής</translation>
|
||||
@@ -1602,6 +1722,10 @@ Address: %4
|
||||
<source>Coin Control Features</source>
|
||||
<translation>Χαρακτηρηστικά επιλογής κερμάτων</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Inputs...</source>
|
||||
<translation>Εισροές...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>automatically selected</source>
|
||||
<translation>επιλεγμένο αυτόματα</translation>
|
||||
@@ -1638,6 +1762,14 @@ Address: %4
|
||||
<source>Change:</source>
|
||||
<translation>Ρέστα:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>If this is activated, but the change address is empty or invalid, change will be sent to a newly generated address.</source>
|
||||
<translation>Όταν ενεργό, αλλά η διεύθυνση ρέστων είναι κενή ή άκυρη, τα ρέστα θα σταλούν σε μία πρόσφατα δημιουργημένη διεύθυνση.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Custom change address</source>
|
||||
<translation>Προσαρμοσμένη διεύθυνση ρέστων</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Transaction Fee:</source>
|
||||
<translation>Τέλος συναλλαγής:</translation>
|
||||
@@ -1650,9 +1782,37 @@ Address: %4
|
||||
<source>Minimize</source>
|
||||
<translation>Ελαχιστοποίηση</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>per kilobyte</source>
|
||||
<translation>ανά kilobyte</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>total at least</source>
|
||||
<translation>συνολικά τουλάχιστον</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Recommended:</source>
|
||||
<translation>Προτεινόμενο: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Custom:</source>
|
||||
<translation>Προσαρμογή:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Confirmation time:</source>
|
||||
<translation>Χρόνος επικύρωσης:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>normal</source>
|
||||
<translation>κανονικό</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>fast</source>
|
||||
<translation>Γρήγορο</translation>
|
||||
<translation>γρήγορο</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>(confirmation may take longer)</source>
|
||||
<translation>(η επικύρωση ίσως χρειαστεί περισσότερο χρόνο)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Send to multiple recipients at once</source>
|
||||
@@ -1722,10 +1882,6 @@ Address: %4
|
||||
<source>Copy change</source>
|
||||
<translation>Αντιγραφή των ρέστων</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Total Amount %1 (= %2)</source>
|
||||
<translation>Ολικό Ποσό %1 (= %2)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>or</source>
|
||||
<translation>ή</translation>
|
||||
@@ -1797,6 +1953,14 @@ Address: %4
|
||||
<source>Choose previously used address</source>
|
||||
<translation>Επιλογή διεύθυνσης που έχει ήδη χρησιμοποιηθεί</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This is a normal payment.</source>
|
||||
<translation>Αυτή είναι μια απλή πληρωμή.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The Bitcoin address to send the payment to</source>
|
||||
<translation>Η διεύθυνση Bitcoin που θα σταλεί η πληρωμή</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Alt+A</source>
|
||||
<translation>Alt+A</translation>
|
||||
@@ -1817,6 +1981,14 @@ Address: %4
|
||||
<source>Message:</source>
|
||||
<translation>Μήνυμα:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Enter a label for this address to add it to the list of used addresses</source>
|
||||
<translation>Εισάγεται μία ετικέτα για αυτή την διεύθυνση για να προστεθεί στη λίστα με τις χρησιμοποιημένες διευθύνσεις</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This is an unverified payment request.</source>
|
||||
<translation>Αυτή είναι μία ανεπιβεβαίωτη αίτηση πληρωμής.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Pay To:</source>
|
||||
<translation>Πληρωμή σε:</translation>
|
||||
@@ -2357,6 +2529,10 @@ Address: %4
|
||||
<source>Exporting Successful</source>
|
||||
<translation>Επιτυχής εξαγωγή</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The transaction history was successfully saved to %1.</source>
|
||||
<translation>Το ιστορικό συναλλαγών αποθηκεύτηκε επιτυχώς στο %1.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Comma separated file (*.csv)</source>
|
||||
<translation>Αρχείο οριοθετημένο με κόμματα (*.csv)</translation>
|
||||
@@ -2396,7 +2572,11 @@ Address: %4
|
||||
</context>
|
||||
<context>
|
||||
<name>UnitDisplayStatusBarControl</name>
|
||||
</context>
|
||||
<message>
|
||||
<source>Unit to show amounts in. Click to select another unit.</source>
|
||||
<translation>Μονάδα μέτρησης προβολής ποσών. Κάντε κλικ για επιλογή άλλης μονάδας.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>WalletFrame</name>
|
||||
<message>
|
||||
@@ -2433,6 +2613,10 @@ Address: %4
|
||||
<source>Backup Failed</source>
|
||||
<translation>Αποτυχία κατά τη δημιουργία αντιγράφου</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>There was an error trying to save the wallet data to %1.</source>
|
||||
<translation>Παρουσιάστηκε σφάλμα κατά την αποθήκευση των δεδομένων πορτοφολιού στο %1.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The wallet data was successfully saved to %1.</source>
|
||||
<translation>Τα δεδομένα πορτοφολιού αποθηκεύτηκαν με επιτυχία στο %1.</translation>
|
||||
@@ -2476,42 +2660,13 @@ Address: %4
|
||||
<source>Accept connections from outside (default: 1 if no -proxy or -connect)</source>
|
||||
<translation>Να δέχεσαι συνδέσεις από έξω(προεπιλογή:1)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>%s, you must set a rpcpassword in the configuration file:
|
||||
%s
|
||||
It is recommended you use the following random password:
|
||||
rpcuser=bitcoinrpc
|
||||
rpcpassword=%s
|
||||
(you do not need to remember this password)
|
||||
The username and password MUST NOT be the same.
|
||||
If the file does not exist, create it with owner-readable-only file permissions.
|
||||
It is also recommended to set alertnotify so you are notified of problems;
|
||||
for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
</source>
|
||||
<translation>%s, you must set a rpcpassword in the configuration file:
|
||||
%s
|
||||
It is recommended you use the following random password:
|
||||
rpcuser=bitcoinrpc
|
||||
rpcpassword=%s
|
||||
(you do not need to remember this password)
|
||||
The username and password MUST NOT be the same.
|
||||
If the file does not exist, create it with owner-readable-only file permissions.
|
||||
It is also recommended to set alertnotify so you are notified of problems;
|
||||
for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Bind to given address and always listen on it. Use [host]:port notation for IPv6</source>
|
||||
<translation>Αποθηκευση σε συγκεκριμένη διεύθυνση. Χρησιμοποιήστε τα πλήκτρα [Host] : συμβολισμός θύρα για IPv6</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error: The transaction was rejected! This might happen if some of the coins in your wallet were already spent, such as if you used a copy of wallet.dat and coins were spent in the copy but not marked as spent here.</source>
|
||||
<translation>Σφάλμα: Η συναλλαγή απορρίφθηκε.
|
||||
Αυτό ίσως οφείλεται στο ότι τα νομίσματά σας έχουν ήδη ξοδευτεί, π.χ. με την αντιγραφή του wallet.dat σε άλλο σύστημα και την χρήση τους εκεί, χωρίς η συναλλαγή να έχει καταγραφεί στο παρόν σύστημα.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds!</source>
|
||||
<translation>Σφάλμα: Αυτή η συναλλαγή απαιτεί αμοιβή συναλλαγής τουλάχιστον %s λόγω του μεγέθους, πολυπλοκότητας ή της χρήσης πρόσφατης παραλαβής κεφαλαίου</translation>
|
||||
<source>Enter regression test mode, which uses a special chain in which blocks can be solved instantly.</source>
|
||||
<translation>Εισαγωγή δοκιμαστικής λειτουργίας παλινδρόμησης, που χρησιμοποιεί μια ειδική αλυσίδα στην οποία τα μπλοκ επιλύονται στιγμιαία.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Execute command when a wallet transaction changes (%s in cmd is replaced by TxID)</source>
|
||||
@@ -2581,18 +2736,10 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Error opening block database</source>
|
||||
<translation>Σφάλμα φορτωσης της βασης δεδομενων των μπλοκ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error: A fatal internal error occured, see debug.log for details</source>
|
||||
<translation>Σφάλμα: Παρουσιάστηκε ανεπανόρθωτο εσωτερικό σφάλμα, δείτε debug.log για λεπτομέρειες</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error: Disk space is low!</source>
|
||||
<translation>Προειδοποίηση: Χαμηλός χώρος στο δίσκο </translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error: Wallet locked, unable to create transaction!</source>
|
||||
<translation>Σφάλμα: το πορτοφόλι είναι κλειδωμένο, δεν μπορεί να δημιουργηθεί συναλλαγή</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Failed to listen on any port. Use -listen=0 if you want this.</source>
|
||||
<translation>ταλαιπωρηθειτε για να ακούσετε σε οποιαδήποτε θύρα. Χρήση - ακούστε = 0 , αν θέλετε αυτό.</translation>
|
||||
@@ -2609,6 +2756,10 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Not enough file descriptors available.</source>
|
||||
<translation>Δεν ειναι αρκετες περιγραφες αρχείων διαθέσιμες.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Only connect to nodes in network <net> (ipv4, ipv6 or onion)</source>
|
||||
<translation>Μόνο σύνδεση σε κόμβους του δικτύου <net> (ipv4, ipv6 ή onion)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Rebuild block chain index from current blk000??.dat files</source>
|
||||
<translation>Εισαγωγή μπλοκ από εξωτερικό αρχείο blk000?.dat</translation>
|
||||
@@ -2617,6 +2768,10 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Specify wallet file (within data directory)</source>
|
||||
<translation>Επιλέξτε αρχείο πορτοφολιού (μέσα απο κατάλογο δεδομένων)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This is intended for regression testing tools and app development.</source>
|
||||
<translation>Αυτό προορίζεται για εργαλεία δοκιμών παλινδρόμησης και την ανάπτυξη εφαρμογών.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Verifying blocks...</source>
|
||||
<translation>Επαλήθευση των μπλοκ... </translation>
|
||||
@@ -2625,6 +2780,10 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Verifying wallet...</source>
|
||||
<translation>Επαλήθευση πορτοφολιου... </translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Wallet %s resides outside data directory %s</source>
|
||||
<translation>Το πορτοφόλι %s βρίσκεται έξω από το φάκελο δεδομένων %s</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Wallet options:</source>
|
||||
<translation>Επιλογές πορτοφολιού:</translation>
|
||||
@@ -2637,6 +2796,10 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Cannot obtain a lock on data directory %s. Bitcoin Core is probably already running.</source>
|
||||
<translation>Αδυναμία κλειδώματος του φακέλου δεδομένων %s. Πιθανώς το Bitcoin να είναι ήδη ενεργό.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Warning: Please check that your computer's date and time are correct! If your clock is wrong Bitcoin Core will not work properly.</source>
|
||||
<translation>Προειδοποίηση: Παρακαλώ ελέγξτε ότι η ημερομηνία και ώρα του υπολογιστή σας είναι σωστά ρυθμισμένες! Εάν το ρολόι σας είναι λάθος το Bitcoin Core δεν θα λειτουργήσει σωστά. </translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Connect through SOCKS5 proxy</source>
|
||||
<translation>Σύνδεση μέσω διαμεσολαβητή SOCKS5</translation>
|
||||
@@ -2649,6 +2812,10 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Error loading wallet.dat: Wallet requires newer version of Bitcoin Core</source>
|
||||
<translation>Σφάλμα φόρτωσης wallet.dat: Το Πορτοφόλι απαιτεί μια νεότερη έκδοση του Bitcoin</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error reading from database, shutting down.</source>
|
||||
<translation>Σφάλμα ανάγνωσης από τη βάση δεδομένων, γίνεται τερματισμός.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error: Unsupported argument -tor found, use -onion.</source>
|
||||
<translation>Σφάλμα: Μη συμβατή παράμετρος -tor. Χρησιμοποιήσε την παράμετρο -onion</translation>
|
||||
@@ -2657,6 +2824,10 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Information</source>
|
||||
<translation>Πληροφορία</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Initialization sanity check failed. Bitcoin Core is shutting down.</source>
|
||||
<translation>Η εκκίνηση ελέγχου ορθότητας απέτυχε. Γίνεται τερματισμός του Bitcoin Core.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Invalid amount for -minrelaytxfee=<amount>: '%s'</source>
|
||||
<translation>Μη έγκυρο ποσό για την παράμετρο -paytxfee=<amount>: '%s'</translation>
|
||||
@@ -2665,14 +2836,26 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Invalid amount for -mintxfee=<amount>: '%s'</source>
|
||||
<translation>Μη έγκυρο ποσό για την παράμετρο -paytxfee=<amount>: '%s'</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Node relay options:</source>
|
||||
<translation>Επιλογές αναμετάδοσης κόμβου: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>RPC SSL options: (see the Bitcoin Wiki for SSL setup instructions)</source>
|
||||
<translation>Ρυθμίσεις SSL: (ανατρέξτε στο Bitcoin Wiki για οδηγίες ρυθμίσεων SSL)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>RPC server options:</source>
|
||||
<translation>Επιλογές διακομιστή RPC:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Send trace/debug info to console instead of debug.log file</source>
|
||||
<translation>Αποστολή πληροφοριών εντοπισμού σφαλμάτων στην κονσόλα αντί του αρχείου debug.log</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show all debugging options (usage: --help -help-debug)</source>
|
||||
<translation>Προβολή όλων των επιλογών εντοπισμού σφαλμάτων (χρήση: --help -help-debug)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Shrink debug.log file on client startup (default: 1 when no -debug)</source>
|
||||
<translation>Συρρίκνωση του αρχείο debug.log κατα την εκκίνηση του πελάτη (προεπιλογή: 1 όταν δεν-debug)</translation>
|
||||
@@ -2797,10 +2980,6 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Invalid -proxy address: '%s'</source>
|
||||
<translation>Δεν είναι έγκυρη η διεύθυνση διαμεσολαβητή: '%s'</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Print block tree on startup (default: %u)</source>
|
||||
<translation>Εκτύπωση μπλοκ δέντρου κατά την εκκίνηση (προεπιλογή: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Server certificate file (default: %s)</source>
|
||||
<translation>Αρχείο πιστοποιητικού του διακομιστή (προεπιλογή: %s)</translation>
|
||||
@@ -2833,10 +3012,6 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Invalid amount for -paytxfee=<amount>: '%s'</source>
|
||||
<translation>Μη έγκυρο ποσό για την παράμετρο -paytxfee=<amount>: '%s'</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Invalid amount</source>
|
||||
<translation>Λάθος ποσότητα</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Insufficient funds</source>
|
||||
<translation>Ανεπαρκές κεφάλαιο</translation>
|
||||
@@ -2869,10 +3044,6 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Done loading</source>
|
||||
<translation>Η φόρτωση ολοκληρώθηκε</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>To use the %s option</source>
|
||||
<translation>Χρήση της %s επιλογής</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>Σφάλμα</translation>
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS>
|
||||
<TS version="2.0" language="en">
|
||||
<TS version="2.1" language="en">
|
||||
<context>
|
||||
<name>AddressBookPage</name>
|
||||
<message>
|
||||
<location filename="../forms/addressbookpage.ui" line="+30"/>
|
||||
<source>Double-click to edit address or label</source>
|
||||
<translation>Double-click to edit address or label</translation>
|
||||
<source>Right-click to edit address or label</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+27"/>
|
||||
@@ -291,12 +291,12 @@
|
||||
<translation>Sign &message...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+339"/>
|
||||
<location line="+340"/>
|
||||
<source>Synchronizing with network...</source>
|
||||
<translation>Synchronizing with network...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="-407"/>
|
||||
<location line="-408"/>
|
||||
<source>&Overview</source>
|
||||
<translation>&Overview</translation>
|
||||
</message>
|
||||
@@ -377,7 +377,7 @@
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+172"/>
|
||||
<location line="+173"/>
|
||||
<source>Bitcoin Core client</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
@@ -392,7 +392,7 @@
|
||||
<translation>Reindexing blocks on disk...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="-405"/>
|
||||
<location line="-406"/>
|
||||
<source>Send coins to a Bitcoin address</source>
|
||||
<translation>Send coins to a Bitcoin address</translation>
|
||||
</message>
|
||||
@@ -427,12 +427,12 @@
|
||||
<translation>&Verify message...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+437"/>
|
||||
<location line="+438"/>
|
||||
<source>Bitcoin</source>
|
||||
<translation>Bitcoin</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="-638"/>
|
||||
<location line="-639"/>
|
||||
<source>Wallet</source>
|
||||
<translation>Wallet</translation>
|
||||
</message>
|
||||
@@ -477,7 +477,7 @@
|
||||
<translation>Verify messages to ensure they were signed with specified Bitcoin addresses</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+48"/>
|
||||
<location line="+49"/>
|
||||
<source>&File</source>
|
||||
<translation>&File</translation>
|
||||
</message>
|
||||
@@ -497,7 +497,7 @@
|
||||
<translation>Tabs toolbar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="-297"/>
|
||||
<location line="-298"/>
|
||||
<source>Bitcoin Core</source>
|
||||
<translation type="unfinished">Bitcoin Core</translation>
|
||||
</message>
|
||||
@@ -532,7 +532,7 @@
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+1"/>
|
||||
<location line="+2"/>
|
||||
<source>Show the Bitcoin Core help message to get a list with possible Bitcoin command-line options</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
@@ -841,7 +841,7 @@ Address: %4
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+347"/>
|
||||
<location line="+351"/>
|
||||
<source>highest</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
@@ -1568,7 +1568,7 @@ Address: %4
|
||||
<context>
|
||||
<name>PaymentServer</name>
|
||||
<message>
|
||||
<location filename="../paymentserver.cpp" line="+410"/>
|
||||
<location filename="../paymentserver.cpp" line="+422"/>
|
||||
<location line="+14"/>
|
||||
<location line="+7"/>
|
||||
<source>URI handling</source>
|
||||
@@ -1580,7 +1580,7 @@ Address: %4
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+84"/>
|
||||
<location line="+91"/>
|
||||
<location line="+9"/>
|
||||
<location line="+32"/>
|
||||
<source>Payment request rejected</source>
|
||||
@@ -1607,17 +1607,17 @@ Address: %4
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="-253"/>
|
||||
<location line="+219"/>
|
||||
<location line="-260"/>
|
||||
<location line="+226"/>
|
||||
<location line="+34"/>
|
||||
<location line="+98"/>
|
||||
<location line="+109"/>
|
||||
<location line="+14"/>
|
||||
<location line="+18"/>
|
||||
<source>Payment request error</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="-382"/>
|
||||
<location line="-400"/>
|
||||
<source>Cannot start bitcoin: click-to-pay handler</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
@@ -1642,7 +1642,7 @@ Address: %4
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+104"/>
|
||||
<location line="+111"/>
|
||||
<source>Unverified payment requests to custom payment scripts are unsupported.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
@@ -1653,6 +1653,16 @@ Address: %4
|
||||
</message>
|
||||
<message>
|
||||
<location line="+43"/>
|
||||
<source>Payment request %1 is too large (%2 bytes, allowed %3 bytes).</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+6"/>
|
||||
<source>Payment request DoS protection</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+5"/>
|
||||
<source>Error communicating with %1: %2</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
@@ -1698,17 +1708,17 @@ Address: %4
|
||||
<context>
|
||||
<name>QObject</name>
|
||||
<message>
|
||||
<location filename="../bitcoinunits.cpp" line="+196"/>
|
||||
<location filename="../bitcoinunits.cpp" line="+194"/>
|
||||
<source>Amount</source>
|
||||
<translation type="unfinished">Amount</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../guiutil.cpp" line="+106"/>
|
||||
<location filename="../guiutil.cpp" line="+109"/>
|
||||
<source>Enter a Bitcoin address (e.g. %1)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+698"/>
|
||||
<location line="+714"/>
|
||||
<source>%1 d</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
@@ -2301,7 +2311,7 @@ Address: %4
|
||||
<name>SendCoinsDialog</name>
|
||||
<message>
|
||||
<location filename="../forms/sendcoinsdialog.ui" line="+14"/>
|
||||
<location filename="../sendcoinsdialog.cpp" line="+529"/>
|
||||
<location filename="../sendcoinsdialog.cpp" line="+533"/>
|
||||
<source>Send Coins</source>
|
||||
<translation>Send Coins</translation>
|
||||
</message>
|
||||
@@ -2515,7 +2525,7 @@ Address: %4
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="-192"/>
|
||||
<location line="-193"/>
|
||||
<source>Copy quantity</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
@@ -2550,8 +2560,8 @@ Address: %4
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+244"/>
|
||||
<source>Total Amount %1 (= %2)</source>
|
||||
<location line="+245"/>
|
||||
<source>Total Amount %1<span style='font-size:10pt;font-weight:normal;'><br />(=%2)</span></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
@@ -2625,12 +2635,12 @@ Address: %4
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="-687"/>
|
||||
<location line="-688"/>
|
||||
<source>Copy dust</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+221"/>
|
||||
<location line="+222"/>
|
||||
<source>Are you sure you want to send?</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
@@ -3569,7 +3579,7 @@ Address: %4
|
||||
<context>
|
||||
<name>bitcoin-core</name>
|
||||
<message>
|
||||
<location filename="../bitcoinstrings.cpp" line="+239"/>
|
||||
<location filename="../bitcoinstrings.cpp" line="+244"/>
|
||||
<source>Options:</source>
|
||||
<translation>Options:</translation>
|
||||
</message>
|
||||
@@ -3579,12 +3589,12 @@ Address: %4
|
||||
<translation>Specify data directory</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="-91"/>
|
||||
<location line="-90"/>
|
||||
<source>Connect to a node to retrieve peer addresses, and disconnect</source>
|
||||
<translation>Connect to a node to retrieve peer addresses, and disconnect</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+94"/>
|
||||
<location line="+93"/>
|
||||
<source>Specify your own public address</source>
|
||||
<translation>Specify your own public address</translation>
|
||||
</message>
|
||||
@@ -3609,32 +3619,7 @@ Address: %4
|
||||
<translation>Accept connections from outside (default: 1 if no -proxy or -connect)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="-153"/>
|
||||
<source>%s, you must set a rpcpassword in the configuration file:
|
||||
%s
|
||||
It is recommended you use the following random password:
|
||||
rpcuser=bitcoinrpc
|
||||
rpcpassword=%s
|
||||
(you do not need to remember this password)
|
||||
The username and password MUST NOT be the same.
|
||||
If the file does not exist, create it with owner-readable-only file permissions.
|
||||
It is also recommended to set alertnotify so you are notified of problems;
|
||||
for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
</source>
|
||||
<translation>%s, you must set a rpcpassword in the configuration file:
|
||||
%s
|
||||
It is recommended you use the following random password:
|
||||
rpcuser=bitcoinrpc
|
||||
rpcpassword=%s
|
||||
(you do not need to remember this password)
|
||||
The username and password MUST NOT be the same.
|
||||
If the file does not exist, create it with owner-readable-only file permissions.
|
||||
It is also recommended to set alertnotify so you are notified of problems;
|
||||
for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+22"/>
|
||||
<location line="-148"/>
|
||||
<source>Bind to given address and always listen on it. Use [host]:port notation for IPv6</source>
|
||||
<translation>Bind to given address and always listen on it. Use [host]:port notation for IPv6</translation>
|
||||
</message>
|
||||
@@ -3654,17 +3639,7 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+5"/>
|
||||
<source>Error: The transaction was rejected! This might happen if some of the coins in your wallet were already spent, such as if you used a copy of wallet.dat and coins were spent in the copy but not marked as spent here.</source>
|
||||
<translation>Error: 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.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+4"/>
|
||||
<source>Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds!</source>
|
||||
<translation>Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+9"/>
|
||||
<location line="+11"/>
|
||||
<source>Execute command when a wallet transaction changes (%s in cmd is replaced by TxID)</source>
|
||||
<translation>Execute command when a wallet transaction changes (%s in cmd is replaced by TxID)</translation>
|
||||
</message>
|
||||
@@ -3674,7 +3649,7 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+20"/>
|
||||
<location line="+28"/>
|
||||
<source>Set the number of script verification threads (%u to %d, 0 = auto, <0 = leave that many cores free, default: %d)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
@@ -3684,12 +3659,12 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.
|
||||
<translation>This is a pre-release test build - use at your own risk - do not use for mining or merchant applications</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+7"/>
|
||||
<location line="+20"/>
|
||||
<source>Unable to bind to %s on this computer. Bitcoin Core is probably already running.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+6"/>
|
||||
<location line="+9"/>
|
||||
<source>Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction.</source>
|
||||
<translation>Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction.</translation>
|
||||
</message>
|
||||
@@ -3729,7 +3704,7 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+7"/>
|
||||
<location line="+8"/>
|
||||
<source>Attempt to recover private keys from a corrupt wallet.dat</source>
|
||||
<translation>Attempt to recover private keys from a corrupt wallet.dat</translation>
|
||||
</message>
|
||||
@@ -3794,22 +3769,12 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.
|
||||
<translation>Error opening block database</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+2"/>
|
||||
<source>Error: A fatal internal error occured, see debug.log for details</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+1"/>
|
||||
<location line="+4"/>
|
||||
<source>Error: Disk space is low!</source>
|
||||
<translation>Error: Disk space is low!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+2"/>
|
||||
<source>Error: Wallet locked, unable to create transaction!</source>
|
||||
<translation>Error: Wallet locked, unable to create transaction!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+1"/>
|
||||
<source>Failed to listen on any port. Use -listen=0 if you want this.</source>
|
||||
<translation>Failed to listen on any port. Use -listen=0 if you want this.</translation>
|
||||
</message>
|
||||
@@ -3834,7 +3799,7 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+21"/>
|
||||
<location line="+20"/>
|
||||
<source>Not enough file descriptors available.</source>
|
||||
<translation>Not enough file descriptors available.</translation>
|
||||
</message>
|
||||
@@ -3844,12 +3809,12 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+10"/>
|
||||
<location line="+9"/>
|
||||
<source>Rebuild block chain index from current blk000??.dat files</source>
|
||||
<translation>Rebuild block chain index from current blk000??.dat files</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+11"/>
|
||||
<location line="+12"/>
|
||||
<source>Set database cache size in megabytes (%d to %d, default: %d)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
@@ -3899,12 +3864,12 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.
|
||||
<translation>You need to rebuild the database using -reindex to change -txindex</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="-92"/>
|
||||
<location line="-91"/>
|
||||
<source>Imports blocks from external blk000??.dat file</source>
|
||||
<translation>Imports blocks from external blk000??.dat file</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="-182"/>
|
||||
<location line="-200"/>
|
||||
<source>Allow JSON-RPC connections from specified source. Valid for <ip> are a single IP (e.g. 1.2.3.4), a network/netmask (e.g. 1.2.3.4/255.255.255.0) or a network/CIDR (e.g. 1.2.3.4/24). This option can be specified multiple times</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
@@ -3944,7 +3909,7 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+9"/>
|
||||
<location line="+2"/>
|
||||
<source>Error: Unsupported argument -socks found. Setting SOCKS version isn't possible anymore, only SOCKS5 proxies are supported.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
@@ -3964,10 +3929,25 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+19"/>
|
||||
<location line="+8"/>
|
||||
<source>If paytxfee is not set, include enough fee so transactions begin confirmation on average within n blocks (default: %u)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+6"/>
|
||||
<source>Invalid amount for -maxtxfee=<amount>: '%s' (must be at least the minrelay fee of %s to prevent stuck transactions)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+8"/>
|
||||
<source>Maximum size of data in data carrier transactions we relay and mine (default: %u)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+3"/>
|
||||
<source>Maximum total fees to use in a single wallet transaction, setting too low may abort large transactions (default: %s)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+7"/>
|
||||
<source>Query for peer addresses via DNS lookup, if low on addresses (default: 1 unless -connect)</source>
|
||||
@@ -3975,6 +3955,11 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.
|
||||
</message>
|
||||
<message>
|
||||
<location line="+3"/>
|
||||
<source>Require high priority for relaying free or low-fee transactions (default:%u)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+2"/>
|
||||
<source>Set maximum size of high-priority/low-fee transactions in bytes (default: %d)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
@@ -3989,7 +3974,27 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+13"/>
|
||||
<location line="+4"/>
|
||||
<source>To use bitcoind, or the -server option to bitcoin-qt, you must set an rpcpassword in the configuration file:
|
||||
%s
|
||||
It is recommended you use the following random password:
|
||||
rpcuser=bitcoinrpc
|
||||
rpcpassword=%s
|
||||
(you do not need to remember this password)
|
||||
The username and password MUST NOT be the same.
|
||||
If the file does not exist, create it with owner-readable-only file permissions.
|
||||
It is also recommended to set alertnotify so you are notified of problems;
|
||||
for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+19"/>
|
||||
<source>Warning: -maxtxfee is set very high! Fees this large could be paid on a single transaction.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+6"/>
|
||||
<source>Warning: Please check that your computer's date and time are correct! If your clock is wrong Bitcoin Core will not work properly.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
@@ -3999,7 +4004,12 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+17"/>
|
||||
<location line="+8"/>
|
||||
<source>Accept public REST requests (default: %u)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+10"/>
|
||||
<source>Cannot resolve -whitebind address: '%s'</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
@@ -4024,12 +4034,22 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+5"/>
|
||||
<location line="+2"/>
|
||||
<source>Error reading from database, shutting down.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+2"/>
|
||||
<source>Error: A fatal internal error occurred, see debug.log for details</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+2"/>
|
||||
<source>Error: Unsupported argument -tor found, use -onion.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+3"/>
|
||||
<location line="+2"/>
|
||||
<source>Fee (in BTC/kB) to add to transactions you send (default: %s)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
@@ -4045,6 +4065,11 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.
|
||||
</message>
|
||||
<message>
|
||||
<location line="+4"/>
|
||||
<source>Invalid amount for -maxtxfee=<amount>: '%s'</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+1"/>
|
||||
<source>Invalid amount for -minrelaytxfee=<amount>: '%s'</source>
|
||||
<translation>Invalid amount for -minrelaytxfee=<amount>: '%s'</translation>
|
||||
</message>
|
||||
@@ -4059,15 +4084,10 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+3"/>
|
||||
<location line="+2"/>
|
||||
<source>Invalid netmask specified in -whitelist: '%s'</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+1"/>
|
||||
<source>Keep at most <n> unconnectable blocks in memory (default: %u)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+1"/>
|
||||
<source>Keep at most <n> unconnectable transactions in memory (default: %u)</source>
|
||||
@@ -4085,11 +4105,6 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.
|
||||
</message>
|
||||
<message>
|
||||
<location line="+7"/>
|
||||
<source>Print block on startup, if found in block index</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+2"/>
|
||||
<source>RPC SSL options: (see the Bitcoin Wiki for SSL setup instructions)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
@@ -4098,6 +4113,11 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.
|
||||
<source>RPC server options:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+1"/>
|
||||
<source>RPC support for HTTP persistent connections (default: %d)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+1"/>
|
||||
<source>Randomly drop 1 of every <n> network messages</source>
|
||||
@@ -4109,7 +4129,12 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+8"/>
|
||||
<location line="+2"/>
|
||||
<source>Receive and display P2P network alerts (default: %u)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+7"/>
|
||||
<source>Send trace/debug info to console instead of debug.log file</source>
|
||||
<translation>Send trace/debug info to console instead of debug.log file</translation>
|
||||
</message>
|
||||
@@ -4139,7 +4164,7 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+4"/>
|
||||
<location line="+3"/>
|
||||
<source>Transaction amount too small</source>
|
||||
<translation>Transaction amount too small</translation>
|
||||
</message>
|
||||
@@ -4148,6 +4173,11 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.
|
||||
<source>Transaction amounts must be positive</source>
|
||||
<translation>Transaction amounts must be positive</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+1"/>
|
||||
<source>Transaction too large for fee policy</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+1"/>
|
||||
<source>Transaction too large</source>
|
||||
@@ -4214,12 +4244,12 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.
|
||||
<translation>Password for JSON-RPC connections</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="-160"/>
|
||||
<location line="-184"/>
|
||||
<source>Execute command when the best block changes (%s in cmd is replaced by block hash)</source>
|
||||
<translation>Execute command when the best block changes (%s in cmd is replaced by block hash)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+206"/>
|
||||
<location line="+230"/>
|
||||
<source>Upgrade wallet to latest format</source>
|
||||
<translation>Upgrade wallet to latest format</translation>
|
||||
</message>
|
||||
@@ -4239,27 +4269,27 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.
|
||||
<translation>This help message</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="-108"/>
|
||||
<location line="-107"/>
|
||||
<source>Allow DNS lookups for -addnode, -seednode and -connect</source>
|
||||
<translation>Allow DNS lookups for -addnode, -seednode and -connect</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+60"/>
|
||||
<location line="+59"/>
|
||||
<source>Loading addresses...</source>
|
||||
<translation>Loading addresses...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="-34"/>
|
||||
<location line="-33"/>
|
||||
<source>Error loading wallet.dat: Wallet corrupted</source>
|
||||
<translation>Error loading wallet.dat: Wallet corrupted</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="-170"/>
|
||||
<location line="-188"/>
|
||||
<source>(1 = keep tx meta data e.g. account owner and payment request information, 2 = drop tx meta data)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+65"/>
|
||||
<location line="+58"/>
|
||||
<source>Flush database activity from memory pool to disk log every <n> megabytes (default: %u)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
@@ -4269,12 +4299,7 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+2"/>
|
||||
<source>If paytxfee is not set, include enough fee so transactions are confirmed on average within n blocks (default: %u)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+6"/>
|
||||
<location line="+11"/>
|
||||
<source>Log transaction priority and fee per kB when mining blocks (default: %u)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
@@ -4284,7 +4309,7 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+6"/>
|
||||
<location line="+9"/>
|
||||
<source>Number of seconds to keep misbehaving peers from reconnecting (default: %u)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
@@ -4294,17 +4319,17 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+23"/>
|
||||
<location line="+38"/>
|
||||
<source>Use separate SOCKS5 proxy to reach peers via Tor hidden services (default: %s)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+28"/>
|
||||
<location line="+31"/>
|
||||
<source>(default: %s)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+5"/>
|
||||
<location line="+6"/>
|
||||
<source>Acceptable ciphers (default: %s)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
@@ -4349,7 +4374,7 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.
|
||||
<translation>Invalid -proxy address: '%s'</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+9"/>
|
||||
<location line="+8"/>
|
||||
<source>Limit size of signature cache to <n> entries (default: %u)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
@@ -4389,12 +4414,7 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+2"/>
|
||||
<source>Print block tree on startup (default: %u)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+6"/>
|
||||
<location line="+8"/>
|
||||
<source>Relay and mine data carrier transactions (default: %u)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
@@ -4474,7 +4494,7 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.
|
||||
<translation>Unknown network specified in -onlynet: '%s'</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="-112"/>
|
||||
<location line="-111"/>
|
||||
<source>Cannot resolve -bind address: '%s'</source>
|
||||
<translation>Cannot resolve -bind address: '%s'</translation>
|
||||
</message>
|
||||
@@ -4484,37 +4504,32 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.
|
||||
<translation>Cannot resolve -externalip address: '%s'</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+46"/>
|
||||
<location line="+47"/>
|
||||
<source>Invalid amount for -paytxfee=<amount>: '%s'</source>
|
||||
<translation>Invalid amount for -paytxfee=<amount>: '%s'</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+1"/>
|
||||
<source>Invalid amount</source>
|
||||
<translation>Invalid amount</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="-7"/>
|
||||
<source>Insufficient funds</source>
|
||||
<translation>Insufficient funds</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+15"/>
|
||||
<location line="+14"/>
|
||||
<source>Loading block index...</source>
|
||||
<translation>Loading block index...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="-62"/>
|
||||
<location line="-61"/>
|
||||
<source>Add a node to connect to and attempt to keep the connection open</source>
|
||||
<translation>Add a node to connect to and attempt to keep the connection open</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+63"/>
|
||||
<location line="+62"/>
|
||||
<source>Loading wallet...</source>
|
||||
<translation>Loading wallet...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="-58"/>
|
||||
<location line="-57"/>
|
||||
<source>Cannot downgrade wallet</source>
|
||||
<translation>Cannot downgrade wallet</translation>
|
||||
</message>
|
||||
@@ -4524,22 +4539,17 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.
|
||||
<translation>Cannot write default address</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+76"/>
|
||||
<location line="+75"/>
|
||||
<source>Rescanning...</source>
|
||||
<translation>Rescanning...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="-63"/>
|
||||
<location line="-62"/>
|
||||
<source>Done loading</source>
|
||||
<translation>Done loading</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+91"/>
|
||||
<source>To use the %s option</source>
|
||||
<translation>To use the %s option</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="-83"/>
|
||||
<location line="+9"/>
|
||||
<source>Error</source>
|
||||
<translation>Error</translation>
|
||||
</message>
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<TS language="eo" version="2.0">
|
||||
<TS language="eo" version="2.1">
|
||||
<context>
|
||||
<name>AddressBookPage</name>
|
||||
<message>
|
||||
<source>Double-click to edit address or label</source>
|
||||
<translation>Duoble-klaku por redakti adreson aŭ etikedon</translation>
|
||||
<source>Right-click to edit address or label</source>
|
||||
<translation>Dekstre-klaku por redakti adreson aŭ etikedon</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Create a new address</source>
|
||||
@@ -89,7 +89,15 @@
|
||||
<source>Comma separated file (*.csv)</source>
|
||||
<translation>Perkome disigita dosiero (*.csv)</translation>
|
||||
</message>
|
||||
</context>
|
||||
<message>
|
||||
<source>Exporting Failed</source>
|
||||
<translation>ekspotado malsukcesinta</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>There was an error trying to save the address list to %1. Please try again.</source>
|
||||
<translation>Okazis eraron dum konservo de adreslisto al %1. Bonvolu provi denove.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>AddressTableModel</name>
|
||||
<message>
|
||||
@@ -282,6 +290,10 @@
|
||||
<source>Open &URI...</source>
|
||||
<translation>Malfermi &URI-on...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Bitcoin Core client</source>
|
||||
<translation>kliento de bitmon-kerno</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Importing blocks from disk...</source>
|
||||
<translation>Importado de blokoj el disko...</translation>
|
||||
@@ -334,6 +346,10 @@
|
||||
<source>&Receive</source>
|
||||
<translation>&Ricevi</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show information about Bitcoin Core</source>
|
||||
<translation>Vidigi informon pri Bitmona Kerno</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Show / Hide</source>
|
||||
<translation>&Montri / Kaŝi</translation>
|
||||
@@ -422,6 +438,10 @@
|
||||
<source>%1 and %2</source>
|
||||
<translation>%1 kaj %2</translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<source>%n year(s)</source>
|
||||
<translation><numerusform>%n jaro</numerusform><numerusform>%n jaroj</numerusform></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>%1 behind</source>
|
||||
<translation>mankas %1</translation>
|
||||
@@ -512,6 +532,10 @@ Adreso: %4
|
||||
<source>Fee:</source>
|
||||
<translation>Krompago:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Dust:</source>
|
||||
<translation>Polvo:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>After Fee:</source>
|
||||
<translation>Post krompago:</translation>
|
||||
@@ -536,6 +560,14 @@ Adreso: %4
|
||||
<source>Amount</source>
|
||||
<translation>Sumo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Received with label</source>
|
||||
<translation>Ricevita kun etikedo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Received with address</source>
|
||||
<translation>Ricevita kun adreso</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Date</source>
|
||||
<translation>Dato</translation>
|
||||
@@ -596,6 +628,10 @@ Adreso: %4
|
||||
<source>Copy priority</source>
|
||||
<translation>Kopii prioritaton</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy dust</source>
|
||||
<translation>Kopii polvon</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy change</source>
|
||||
<translation>Kopii restmonon</translation>
|
||||
@@ -906,6 +942,10 @@ Adreso: %4
|
||||
<source>&Network</source>
|
||||
<translation>&Reto</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Expert</source>
|
||||
<translation>Fakulo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled.</source>
|
||||
<translation>Aŭtomate malfermi la kursilan pordon por Bitmono. Tio funkcias nur se via kursilo havas la UPnP-funkcion, kaj se tiu ĉi estas ŝaltita.</translation>
|
||||
@@ -1172,6 +1212,10 @@ Adreso: %4
|
||||
<source>Current number of blocks</source>
|
||||
<translation>Aktuala nombro de blokoj</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Bytes Sent</source>
|
||||
<translation>Bajtoj Senditaj:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Last block time</source>
|
||||
<translation>Horo de la lasta bloko</translation>
|
||||
@@ -1444,6 +1488,10 @@ Adreso: %4
|
||||
<source>Clear all fields of the form.</source>
|
||||
<translation>Malplenigi ĉiujn kampojn de la formularo.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Dust:</source>
|
||||
<translation>Polvo:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Clear &All</source>
|
||||
<translation>&Forigi ĉion</translation>
|
||||
@@ -1496,10 +1544,6 @@ Adreso: %4
|
||||
<source>Copy change</source>
|
||||
<translation>Kopii restmonon</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Total Amount %1 (= %2)</source>
|
||||
<translation>Totala Sumo %1 (= %2)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>or</source>
|
||||
<translation>aŭ</translation>
|
||||
@@ -1536,6 +1580,10 @@ Adreso: %4
|
||||
<source>(no label)</source>
|
||||
<translation>(neniu etikedo)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy dust</source>
|
||||
<translation>Kopii polvon</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Are you sure you want to send?</source>
|
||||
<translation>Ĉu vi certas, ke vi volas sendi?</translation>
|
||||
@@ -2079,6 +2127,10 @@ Adreso: %4
|
||||
<source>Show transaction details</source>
|
||||
<translation>Montri detalojn de transakcio</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Exporting Failed</source>
|
||||
<translation>ekspotado malsukcesinta</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Comma separated file (*.csv)</source>
|
||||
<translation>Perkome disigita dosiero (*.csv)</translation>
|
||||
@@ -2190,42 +2242,10 @@ Adreso: %4
|
||||
<source>Accept connections from outside (default: 1 if no -proxy or -connect)</source>
|
||||
<translation>Akcepti konektojn el ekstere (defaŭlte: 1 se ne estas -proxy nek -connect)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>%s, you must set a rpcpassword in the configuration file:
|
||||
%s
|
||||
It is recommended you use the following random password:
|
||||
rpcuser=bitcoinrpc
|
||||
rpcpassword=%s
|
||||
(you do not need to remember this password)
|
||||
The username and password MUST NOT be the same.
|
||||
If the file does not exist, create it with owner-readable-only file permissions.
|
||||
It is also recommended to set alertnotify so you are notified of problems;
|
||||
for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
</source>
|
||||
<translation>%s, vi devas specifi rpcpassword en la konfigura dosiero:
|
||||
%s
|
||||
Estas konsilinde uzi tiun ĉi aleatore kreitan pasvorton:
|
||||
rpcuser=bitcoinrpc
|
||||
rpcpassword=%s
|
||||
(ne utilas al vi memorigi tiun ĉi pasvorton)
|
||||
La salutnomo kaj la pasvorto estu nepre MALSAMAJ.
|
||||
Se la dosiero ne ekzistas, kreu ĝin kun permeso "nur posedanto rajtas legi".
|
||||
Estas konsilinde ankaŭ agordi alertnotify por ke vi ricevu avertojn pri eventualaj problemoj;
|
||||
ekzemple: alertnotify=echo %%s | mail -s "Averto de Bitmono" admin@foo.com
|
||||
</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Bind to given address and always listen on it. Use [host]:port notation for IPv6</source>
|
||||
<translation>Bindi al donita adreso kaj ĉiam aŭskulti per ĝi. Uzu la formaton [gastigo]:pordo por IPv6</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error: The transaction was rejected! This might happen if some of the coins in your wallet were already spent, such as if you used a copy of wallet.dat and coins were spent in the copy but not marked as spent here.</source>
|
||||
<translation>Eraro: la transakcio estas rifuzita. Tio povas okazi se iom da Bitmono en via monujo jam elspeziĝis (ekz. se vi uzis kopion de wallet.dat kies Bitmono jam elspeziĝis, sed ne estis markita kiel elspezita ĉi tie).</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds!</source>
|
||||
<translation>Eraro: tiu ĉi transakcio bezonas krompagon de almenaŭ %s pro la sumo, la komplekseco, aŭ la uzo de ĵus ricevita mono!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Execute command when a wallet transaction changes (%s in cmd is replaced by TxID)</source>
|
||||
<translation>Plenumi komandon kiam monuja transakcio ŝanĝiĝas (%s en cmd anstataŭiĝas per TxID)</translation>
|
||||
@@ -2302,10 +2322,6 @@ ekzemple: alertnotify=echo %%s | mail -s "Averto de Bitmono" admin@foo.com
|
||||
<source>Error: Disk space is low!</source>
|
||||
<translation>Eraro: restas malmulte da diskospaco!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error: Wallet locked, unable to create transaction!</source>
|
||||
<translation>Eraro: monujo ŝlosita, ne eblas krei transakcion!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Failed to listen on any port. Use -listen=0 if you want this.</source>
|
||||
<translation>Ne sukcesis aŭskulti ajnan pordon. Uzu -listen=0 se tion vi volas.</translation>
|
||||
@@ -2382,6 +2398,10 @@ ekzemple: alertnotify=echo %%s | mail -s "Averto de Bitmono" admin@foo.com
|
||||
<source>Signing transaction failed</source>
|
||||
<translation>Subskriba transakcio fiaskis</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This is experimental software.</source>
|
||||
<translation>ĝi estas eksperimenta programo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Transaction amount too small</source>
|
||||
<translation>Transakcia sumo tro malgranda</translation>
|
||||
@@ -2474,10 +2494,6 @@ ekzemple: alertnotify=echo %%s | mail -s "Averto de Bitmono" admin@foo.com
|
||||
<source>Invalid amount for -paytxfee=<amount>: '%s'</source>
|
||||
<translation>Nevalida sumo por -paytxfee=<amount>: '%s'</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Invalid amount</source>
|
||||
<translation>Nevalida sumo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Insufficient funds</source>
|
||||
<translation>Nesufiĉa mono</translation>
|
||||
@@ -2510,10 +2526,6 @@ ekzemple: alertnotify=echo %%s | mail -s "Averto de Bitmono" admin@foo.com
|
||||
<source>Done loading</source>
|
||||
<translation>Ŝargado finiĝis</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>To use the %s option</source>
|
||||
<translation>Por uzi la agordon %s</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>Eraro</translation>
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<TS language="es" version="2.0">
|
||||
<TS language="es" version="2.1">
|
||||
<context>
|
||||
<name>AddressBookPage</name>
|
||||
<message>
|
||||
<source>Double-click to edit address or label</source>
|
||||
<translation>Haga doble clic para editar la etiqueta o dirección </translation>
|
||||
<source>Right-click to edit address or label</source>
|
||||
<translation>Haz-clic para editar la dirección o etiqueta</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Create a new address</source>
|
||||
@@ -35,7 +35,7 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>Export the data in the current tab to a file</source>
|
||||
<translation>Exportar a un archivo los datos de esta pestaña</translation>
|
||||
<translation>Exportar los datos en la ficha actual a un archivo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Export</source>
|
||||
@@ -47,11 +47,11 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>Choose the address to send coins to</source>
|
||||
<translation>Escoja la dirección a la que enviar bitcoins</translation>
|
||||
<translation>Elije la dirección para enviar monedas a</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Choose the address to receive coins with</source>
|
||||
<translation>Escoja la dirección de la que recibir bitcoins</translation>
|
||||
<translation>Elije la dirección para recibir monedas con</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>C&hoose</source>
|
||||
@@ -67,11 +67,11 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins.</source>
|
||||
<translation>Estas son sus direcciones Bitcoin para enviar pagos. Compruebe siempre la cantidad y la dirección receptora antes de enviar bitcoins.</translation>
|
||||
<translation>Estas son tus direcciones Bitcoin para enviar los pagos. Comprueba siempre la cantidad y la dirección receptora antes de enviar las monedas.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>These are your Bitcoin addresses for receiving payments. It is recommended to use a new receiving address for each transaction.</source>
|
||||
<translation>Estas son sus direcciones de Bitcoin para recibir pagos. Se recomienda utilizar una nueva dirección de recepción para cada transacción.</translation>
|
||||
<translation>Estas son tus direcciones de Bitcoin para recibir los pagos. Se recomienda utilizar una nueva dirección de recepción para cada transacción.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy &Label</source>
|
||||
@@ -87,17 +87,13 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>Comma separated file (*.csv)</source>
|
||||
<translation>Archivos de columnas separadas por coma (*.csv)</translation>
|
||||
<translation>Archivos separados por coma (*.csv)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Exporting Failed</source>
|
||||
<translation>Error exportando</translation>
|
||||
<translation>Fallo al exportar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>There was an error trying to save the address list to %1. Please try again.</source>
|
||||
<translation>Se ha producido un error al intentar guardar la lista de direcciones en %1. Por favor vuelva a intentarlo.</translation>
|
||||
</message>
|
||||
</context>
|
||||
</context>
|
||||
<context>
|
||||
<name>AddressTableModel</name>
|
||||
<message>
|
||||
@@ -157,7 +153,7 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>Enter the old and new passphrase to the wallet.</source>
|
||||
<translation>Introduzca la contraseña anterior del monedero y la nueva. </translation>
|
||||
<translation>Introduce la antigua y la nueva contraseña a el monedero.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Confirm wallet encryption</source>
|
||||
@@ -169,7 +165,7 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>Are you sure you wish to encrypt your wallet?</source>
|
||||
<translation>¿Seguro que desea cifrar su monedero?</translation>
|
||||
<translation>¿Estás seguro que deseas cifrar tu monedero ?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>IMPORTANT: Any previous backups you have made of your wallet file should be replaced with the newly generated, encrypted wallet file. For security reasons, previous backups of the unencrypted wallet file will become useless as soon as you start using the new, encrypted wallet.</source>
|
||||
@@ -177,7 +173,7 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>Warning: The Caps Lock key is on!</source>
|
||||
<translation>Aviso: ¡La tecla de bloqueo de mayúsculas está activada!</translation>
|
||||
<translation>Aviso: ¡La tecla de Mayúsculas está activada!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Wallet encrypted</source>
|
||||
@@ -1288,6 +1284,14 @@ Dirección: %4
|
||||
<source>Refund from %1</source>
|
||||
<translation>Devolución desde %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Payment request %1 is too large (%2 bytes, allowed %3 bytes).</source>
|
||||
<translation>La petición de pago %1 es demasiado grande (%2 bytes, permitidos %3 bytes).</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Payment request DoS protection</source>
|
||||
<translation> Solicitud pago de protección DoS</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error communicating with %1: %2</source>
|
||||
<translation>Error en la comunicación con %1: %2</translation>
|
||||
@@ -1848,18 +1852,42 @@ Dirección: %4
|
||||
<source>Transaction Fee:</source>
|
||||
<translation>Comisión de Transacción:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Choose...</source>
|
||||
<translation>Elija...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>collapse fee-settings</source>
|
||||
<translation>Colapsar ajustes de cuota</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Minimize</source>
|
||||
<translation>Minimizar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>If the custom fee is set to 1000 satoshis and the transaction is only 250 bytes, then "per kilobyte" only pays 250 satoshis in fee, while "at least" pays 1000 satoshis. For transactions bigger than a kilobyte both pay by kilobyte.</source>
|
||||
<translation>Si la tarifa de aduana se establece en 1000 satoshis y la transacción está a disponible a solo 250 bytes, entonces "por kilobyte" sólo paga 250 satoshis de cuota, mientras que "por lo menos" paga 1.000 satoshis. Para las transacciones más grandes que un kilobyte ambos pagan por kilobyte.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>per kilobyte</source>
|
||||
<translation>por kilobyte</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>If the custom fee is set to 1000 satoshis and the transaction is only 250 bytes, then "per kilobyte" only pays 250 satoshis in fee, while "total at least" pays 1000 satoshis. For transactions bigger than a kilobyte both pay by kilobyte.</source>
|
||||
<translation>Si la tarifa de aduana se establece en 1000 satoshis y la transacción está a sólo 250 bytes, entonces "por kilobyte" sólo paga 250 satoshis de cuota, mientras que "el mínimo total" pagaría 1.000 satoshis. Para las transacciones más grandes que un kilobyte ambos pagan por kilobyte</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>total at least</source>
|
||||
<translation>total por lo menos</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Paying only the minimum fee is just fine as long as there is less transaction volume than space in the blocks. But be aware that this can end up in a never confirming transaction once there is more demand for bitcoin transactions than the network can process.</source>
|
||||
<translation>Pagando solamente la cuota mínima es correcto, siempre y cuando haya menos volumen de transacciones que el espacio en los bloques. Pero tenga en cuenta que esto puede terminar en una transacción nunca confirmada, una vez que haya más demanda para transacciones Bitcoin que la red pueda procesar.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>(read the tooltip)</source>
|
||||
<translation>(leer la sugerencia)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Recommended:</source>
|
||||
<translation>Recomendado:</translation>
|
||||
@@ -1884,6 +1912,10 @@ Dirección: %4
|
||||
<source>fast</source>
|
||||
<translation>rápido</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Send as zero-fee transaction if possible</source>
|
||||
<translation>Enviar transacción, si es posible, sin comisión</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>(confirmation may take longer)</source>
|
||||
<translation>(confirmación puede tardar más tiempo)</translation>
|
||||
@@ -1956,10 +1988,6 @@ Dirección: %4
|
||||
<source>Copy change</source>
|
||||
<translation>Copiar Cambio</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Total Amount %1 (= %2)</source>
|
||||
<translation>Cuantía Total %1 (=%2)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>or</source>
|
||||
<translation>o</translation>
|
||||
@@ -2778,30 +2806,6 @@ Dirección: %4
|
||||
<source>Accept connections from outside (default: 1 if no -proxy or -connect)</source>
|
||||
<translation>Aceptar conexiones desde el exterior (predeterminado: 1 si no -proxy o -connect)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>%s, you must set a rpcpassword in the configuration file:
|
||||
%s
|
||||
It is recommended you use the following random password:
|
||||
rpcuser=bitcoinrpc
|
||||
rpcpassword=%s
|
||||
(you do not need to remember this password)
|
||||
The username and password MUST NOT be the same.
|
||||
If the file does not exist, create it with owner-readable-only file permissions.
|
||||
It is also recommended to set alertnotify so you are notified of problems;
|
||||
for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
</source>
|
||||
<translation>%s, debe establecer un valor rpcpassword en el archivo de configuración:
|
||||
%s
|
||||
Se recomienda utilizar la siguiente contraseña aleatoria:
|
||||
rpcuser=bitcoinrpc
|
||||
rpcpassword=%s
|
||||
(no es necesario recordar esta contraseña)
|
||||
El nombre de usuario y la contraseña DEBEN NO ser iguales.
|
||||
Si el archivo no existe, créelo con permisos de archivo de solo lectura.
|
||||
Se recomienda también establecer alertnotify para recibir notificaciones de problemas.
|
||||
Por ejemplo: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Bind to given address and always listen on it. Use [host]:port notation for IPv6</source>
|
||||
<translation>Vincular a la dirección dada y escuchar siempre en ella. Utilice la notación [host]:port para IPv6</translation>
|
||||
@@ -2818,14 +2822,6 @@ Por ejemplo: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Enter regression test mode, which uses a special chain in which blocks can be solved instantly.</source>
|
||||
<translation>Ingresar en el modo de prueba de regresión, que utiliza una cadena especial en la que los bloques se pueden resolver instantáneamente.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error: The transaction was rejected! This might happen if some of the coins in your wallet were already spent, such as if you used a copy of wallet.dat and coins were spent in the copy but not marked as spent here.</source>
|
||||
<translation>¡Error: se ha rechazado la transacción! Esto puede ocurrir si ya se han gastado algunos de los bitcoins del monedero, como ocurriría si hubiera hecho una copia de wallet.dat y se hubieran gastado bitcoins a partir de la copia, con lo que no se habrían marcado aquí como gastados.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds!</source>
|
||||
<translation>¡Error: Esta transacción requiere una comisión de al menos %s debido a su cantidad, complejidad, o al uso de fondos recién recibidos!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Execute command when a wallet transaction changes (%s in cmd is replaced by TxID)</source>
|
||||
<translation>Ejecutar comando cuando una transacción del monedero cambia (%s en cmd se remplazará por TxID)</translation>
|
||||
@@ -2930,18 +2926,10 @@ Por ejemplo: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Error opening block database</source>
|
||||
<translation>Error al abrir base de datos de bloques.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error: A fatal internal error occured, see debug.log for details</source>
|
||||
<translation>Error: un error grave interno ocurrió, sea debug.log para más detalles.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error: Disk space is low!</source>
|
||||
<translation>Error: ¡Espacio en disco bajo!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error: Wallet locked, unable to create transaction!</source>
|
||||
<translation>Error: ¡El monedero está bloqueado; no se puede crear la transacción!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Failed to listen on any port. Use -listen=0 if you want this.</source>
|
||||
<translation>Ha fallado la escucha en todos los puertos. Use -listen=0 si desea esto.</translation>
|
||||
@@ -3066,18 +3054,62 @@ Por ejemplo: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Fees (in BTC/Kb) smaller than this are considered zero fee for transaction creation (default: %s)</source>
|
||||
<translation>Tarifas (en BTC/Kb) más pequeños que esto se consideran cero cuota para la creación de la transacción (por defecto: %s)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>If paytxfee is not set, include enough fee so transactions begin confirmation on average within n blocks (default: %u)</source>
|
||||
<translation>Si el pago de comisión no está establecido, incluir la cuota suficiente para que las transacciones comiencen la confirmación en una media de n bloques ( por defecto :%u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Maximum size of data in data carrier transactions we relay and mine (default: %u)</source>
|
||||
<translation>El tamaño máximo de los datos en las operaciones de transporte de datos que transmitimos y el mio (default: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Query for peer addresses via DNS lookup, if low on addresses (default: 1 unless -connect)</source>
|
||||
<translation>Consulta de direcciones pares mediante búsqueda de DNS, si bajo en direcciones (por defecto: 1 a menos que - conectar)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Require high priority for relaying free or low-fee transactions (default:%u)</source>
|
||||
<translation>Se requiere alta prioridad para retransmitir transacciones gratis o de baja comisión (por defecto:%u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Set maximum size of high-priority/low-fee transactions in bytes (default: %d)</source>
|
||||
<translation>Establecer tamaño máximo de las transacciones de alta prioridad/baja comisión en bytes (predeterminado: %d)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Set the number of threads for coin generation if enabled (-1 = all cores, default: %d)</source>
|
||||
<translation>Ajuste el número de hilos para la generación de moneda si está habilitado (-1 = all cores, default: %d)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit <https://www.openssl.org/> and cryptographic software written by Eric Young and UPnP software written by Thomas Bernard.</source>
|
||||
<translation>Este producto incluye software desarrollado por el OpenSSL Project para su uso en OpenSSL Toolkit <https://www.openssl.org/>, software de cifrado escrito por Eric Young y software UPnP escrito por Thomas Bernard.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>To use bitcoind, or the -server option to bitcoin-qt, you must set an rpcpassword in the configuration file:
|
||||
%s
|
||||
It is recommended you use the following random password:
|
||||
rpcuser=bitcoinrpc
|
||||
rpcpassword=%s
|
||||
(you do not need to remember this password)
|
||||
The username and password MUST NOT be the same.
|
||||
If the file does not exist, create it with owner-readable-only file permissions.
|
||||
It is also recommended to set alertnotify so you are notified of problems;
|
||||
for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
</source>
|
||||
<translation>Para utilizar bitcoind, o la -opción servidor a bitcoin-qt, debes establecer una rpcpassword en el fichero de configuración:
|
||||
%s
|
||||
Se recomienda utilizar la siguiente contraseña aleatoria:
|
||||
rpcuser=bitcoinrpc
|
||||
rpcpassword=%s
|
||||
(no es necesario que recuerdes esta contraseña)
|
||||
El nombre de usuario y contraseña NO DEBEN ser la misma.
|
||||
Si no existe el archivo, crearlo con los permisos de archivos de propietarios de -sólo lectura-.
|
||||
También se recomienda establecer una notificación de alerta para ser notificado de problemas;
|
||||
por ejemplo: alertnotify=echo %% s | correo -s "Alerta Bitcoin" admin@foo.com
|
||||
</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Warning: -maxtxfee is set very high! Fees this large could be paid on a single transaction.</source>
|
||||
<translation>Advertencia: ¡-maxtxfee se establece muy alta! Esta gran tarifa podría ser pagada en una sola transacción .</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Warning: Please check that your computer's date and time are correct! If your clock is wrong Bitcoin Core will not work properly.</source>
|
||||
<translation>Aviso: ¡Comprueba la fecha y hora de tu ordenador y verifica si es correcta! Si no es correcta Bitcoin Core no funcionará adecuadamente.</translation>
|
||||
@@ -3086,6 +3118,14 @@ Por ejemplo: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Whitelisted peers cannot be DoS banned and their transactions are always relayed, even if they are already in the mempool, useful e.g. for a gateway</source>
|
||||
<translation>A los equipos en lista blanca no se les pueden prohibir los ataques DoS y sus transacciones siempre son retransmitidas, incluso si ya están en el mempool, es útil por ejemplo para un gateway.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Accept public REST requests (default: %u)</source>
|
||||
<translation>Aceptar solicitudes públicas en FERIADOS (por defecto: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Cannot resolve -whitebind address: '%s'</source>
|
||||
<translation>No se puede resolver -whitebind address: '%s'</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Connect through SOCKS5 proxy</source>
|
||||
<translation>Conectar usando SOCKS5 proxy</translation>
|
||||
@@ -3094,10 +3134,26 @@ Por ejemplo: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Copyright (C) 2009-%i The Bitcoin Core Developers</source>
|
||||
<translation>Copyright (C) 2009-%i The Bitcoin Core Developers</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Could not parse -rpcbind value %s as network address</source>
|
||||
<translation>No se pudo analizar -rpcbind valor%s como dirección de red</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error loading wallet.dat: Wallet requires newer version of Bitcoin Core</source>
|
||||
<translation>Error al cargar wallet.dat: El monedero requiere una versión más reciente de Bitcoin Core</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error reading from database, shutting down.</source>
|
||||
<translation>Error al leer la base de datos, cerrando.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error: A fatal internal error occurred, see debug.log for details</source>
|
||||
<translation>Un error interno fatal ocurrió, ver debug.log para detalles</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error: Unsupported argument -tor found, use -onion.</source>
|
||||
<translation>Error: Argumento encontrado -tor no soportado, utilice -onion</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Fee (in BTC/kB) to add to transactions you send (default: %s)</source>
|
||||
<translation>Cuota (in BTC/kB) para añadir a las transacciones que envíes (por defecto: %s)</translation>
|
||||
@@ -3110,6 +3166,10 @@ Por ejemplo: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Initialization sanity check failed. Bitcoin Core is shutting down.</source>
|
||||
<translation>La inicialización de la verificación de validez falló. Se está apagando Bitcoin Core.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Invalid amount for -maxtxfee=<amount>: '%s'</source>
|
||||
<translation>Monto inválido para -maxtxfee=<amount>: '%s'</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Invalid amount for -minrelaytxfee=<amount>: '%s'</source>
|
||||
<translation>Cantidad inválida para -minrelaytxfee=<amount>: '%s'</translation>
|
||||
@@ -3126,10 +3186,6 @@ Por ejemplo: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Invalid netmask specified in -whitelist: '%s'</source>
|
||||
<translation>Máscara de red inválida especificada en -whitelist: '%s'</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Keep at most <n> unconnectable blocks in memory (default: %u)</source>
|
||||
<translation>Mantener como máximo <n> bloques no conectables en memoria (por defecto: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Keep at most <n> unconnectable transactions in memory (default: %u)</source>
|
||||
<translation>Mantener como máximo <n> transacciones no conectables en memoria (por defecto: %u)</translation>
|
||||
@@ -3142,10 +3198,6 @@ Por ejemplo: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Node relay options:</source>
|
||||
<translation>Opciones de nodos de retransmisión:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Print block on startup, if found in block index</source>
|
||||
<translation>Imprimir bloque al iniciar, si se encuentra en el índice de bloques</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>RPC SSL options: (see the Bitcoin Wiki for SSL setup instructions)</source>
|
||||
<translation>Opciones SSL de RPC: (véase la wiki de Bitcoin para las instrucciones de instalación de SSL)</translation>
|
||||
@@ -3154,6 +3206,10 @@ Por ejemplo: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>RPC server options:</source>
|
||||
<translation>Opciones de servidor RPC:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>RPC support for HTTP persistent connections (default: %d)</source>
|
||||
<translation>Soporte RPC para conexiones HTTP persistentes (por defecto: %d)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Randomly drop 1 of every <n> network messages</source>
|
||||
<translation>Ignorar 1 de cada <n> mensajes de red al azar</translation>
|
||||
@@ -3162,10 +3218,18 @@ Por ejemplo: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Randomly fuzz 1 of every <n> network messages</source>
|
||||
<translation>Introducir datos fuzz en 1 de cada <n> mensajes de red al azar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Receive and display P2P network alerts (default: %u)</source>
|
||||
<translation>Recibir y mostrar alertas de la red P2P (default: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Send trace/debug info to console instead of debug.log file</source>
|
||||
<translation>Enviar información de trazas/depuración a la consola en lugar de al archivo debug.log</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Send transactions as zero-fee transactions if possible (default: %u)</source>
|
||||
<translation>Mandar transacciones como comisión-cero si es posible (por defecto: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show all debugging options (usage: --help -help-debug)</source>
|
||||
<translation>Muestra todas las opciones de depuración (uso: --help -help-debug)</translation>
|
||||
@@ -3190,6 +3254,10 @@ Por ejemplo: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Transaction amounts must be positive</source>
|
||||
<translation>Las cantidades en las transacciones deben ser positivas</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Transaction too large for fee policy</source>
|
||||
<translation>Operación demasiado grande para la política de tasas</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Transaction too large</source>
|
||||
<translation>Transacción demasiado grande</translation>
|
||||
@@ -3219,6 +3287,10 @@ Por ejemplo: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Warning: This version is obsolete, upgrade required!</source>
|
||||
<translation>Aviso: Esta versión es obsoleta, actualización necesaria!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Warning: Unsupported argument -benchmark ignored, use -debug=bench.</source>
|
||||
<translation>Advertencia: Argumento no soportado -benchmark ignored, use -debug=bench.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Warning: Unsupported argument -debugnet ignored, use -debug=net.</source>
|
||||
<translation>Aviso: Argumento no sportado -debugnet anticuado, utilice -debug=net.</translation>
|
||||
@@ -3274,6 +3346,10 @@ Por ejemplo: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Error loading wallet.dat: Wallet corrupted</source>
|
||||
<translation>Error al cargar wallet.dat: el monedero está dañado</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>(1 = keep tx meta data e.g. account owner and payment request information, 2 = drop tx meta data)</source>
|
||||
<translation>(1 = keep tx meta data e.g. account owner and payment request information, 2 = drop tx meta data)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Flush database activity from memory pool to disk log every <n> megabytes (default: %u)</source>
|
||||
<translation>Volcar la actividad de la base de datos de memoria al registro en disco cada <n> megabytes (predeterminado: %u)</translation>
|
||||
@@ -3374,14 +3450,14 @@ Por ejemplo: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Prepend debug output with timestamp (default: %u)</source>
|
||||
<translation>Anteponer marca temporal a la información de depuración (por defecto: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Print block tree on startup (default: %u)</source>
|
||||
<translation>Imprimir árbol de bloques al iniciar (predeterminado: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Relay and mine data carrier transactions (default: %u)</source>
|
||||
<translation>Retransmitir y minar transacciones de transporte de datos (por defecto: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Relay non-P2SH multisig (default: %u)</source>
|
||||
<translation>Relay non-P2SH multisig (default: %u)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Run a thread to flush wallet periodically (default: %u)</source>
|
||||
<translation>Ejecutar un hilo para limpiar de la memoria el monedero periódicamente (predeterminado: %u)</translation>
|
||||
@@ -3450,10 +3526,6 @@ Por ejemplo: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Invalid amount for -paytxfee=<amount>: '%s'</source>
|
||||
<translation>Cantidad inválida para -paytxfee=<amount>: '%s'</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Invalid amount</source>
|
||||
<translation>Cuantía no válida</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Insufficient funds</source>
|
||||
<translation>Fondos insuficientes</translation>
|
||||
@@ -3486,10 +3558,6 @@ Por ejemplo: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Done loading</source>
|
||||
<translation>Se terminó de cargar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>To use the %s option</source>
|
||||
<translation>Para utilizar la opción %s</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>Error</translation>
|
||||
|
||||
@@ -1,26 +1,46 @@
|
||||
<TS language="es_CL" version="2.0">
|
||||
<TS language="es_CL" version="2.1">
|
||||
<context>
|
||||
<name>AddressBookPage</name>
|
||||
<message>
|
||||
<source>Double-click to edit address or label</source>
|
||||
<translation>Haz doble clic para editar una dirección o etiqueta</translation>
|
||||
<source>Right-click to edit address or label</source>
|
||||
<translation>Haga clic para editar la dirección o etiqueta</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Create a new address</source>
|
||||
<translation>Crea una nueva dirección</translation>
|
||||
<translation>Crea una nueva direCrea una nueva direccióncción</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&New</source>
|
||||
<translation>y nueva</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy the currently selected address to the system clipboard</source>
|
||||
<translation>Copia la dirección seleccionada al portapapeles</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Copy</source>
|
||||
<translation>y copiar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>C&lose</source>
|
||||
<translation>C y perder</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Copy Address</source>
|
||||
<translation>&Copia dirección</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Delete the currently selected address from the list</source>
|
||||
<translation>Eliminar la dirección seleccionada de la lista</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Export the data in the current tab to a file</source>
|
||||
<translation>Exportar los datos de la pestaña actual a un archivo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Export</source>
|
||||
<translation>y exportar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Delete</source>
|
||||
<translation>&Borrar</translation>
|
||||
@@ -192,7 +212,7 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>Show information about Qt</source>
|
||||
<translation>Mostrar Información sobre QT</translation>
|
||||
<translation>Mostrar Información sobre Qt</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Options...</source>
|
||||
@@ -210,6 +230,14 @@
|
||||
<source>&Change Passphrase...</source>
|
||||
<translation>&Cambiar la contraseña...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Open &URI...</source>
|
||||
<translation>Abrir y url...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Bitcoin Core client</source>
|
||||
<translation>cliente bitcoin core</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Reindexing blocks on disk...</source>
|
||||
<translation>Cargando el index de bloques...</translation>
|
||||
@@ -250,6 +278,10 @@
|
||||
<source>&Send</source>
|
||||
<translation>&Envía</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Receive</source>
|
||||
<translation>y recibir</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Show / Hide</source>
|
||||
<translation>&Mostrar/Ocultar</translation>
|
||||
@@ -274,6 +306,10 @@
|
||||
<source>Tabs toolbar</source>
|
||||
<translation>Barra de pestañas</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Bitcoin Core</source>
|
||||
<translation>bitcoin core</translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<source>%n active connection(s) to Bitcoin network</source>
|
||||
<translation><numerusform>%n conexión activa hacia la red Bitcoin</numerusform><numerusform>%n conexiones activas hacia la red Bitcoin</numerusform></translation>
|
||||
@@ -363,6 +399,10 @@ Dirección: %4</translation>
|
||||
<source>Confirmed</source>
|
||||
<translation>Confirmado</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Priority</source>
|
||||
<translation>prioridad</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy address</source>
|
||||
<translation>Copia dirección</translation>
|
||||
@@ -375,6 +415,18 @@ Dirección: %4</translation>
|
||||
<source>Copy amount</source>
|
||||
<translation>Copiar Cantidad</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>medium</source>
|
||||
<translation>medio</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>yes</source>
|
||||
<translation>si</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>no</source>
|
||||
<translation>no</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>(no label)</source>
|
||||
<translation>(sin etiqueta)</translation>
|
||||
@@ -436,6 +488,10 @@ Dirección: %4</translation>
|
||||
</context>
|
||||
<context>
|
||||
<name>HelpMessageDialog</name>
|
||||
<message>
|
||||
<source>Bitcoin Core</source>
|
||||
<translation>bitcoin core</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>version</source>
|
||||
<translation>versión</translation>
|
||||
@@ -456,6 +512,14 @@ Dirección: %4</translation>
|
||||
</context>
|
||||
<context>
|
||||
<name>Intro</name>
|
||||
<message>
|
||||
<source>Welcome</source>
|
||||
<translation>bienvenido</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Bitcoin Core</source>
|
||||
<translation>bitcoin core</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>Error</translation>
|
||||
@@ -463,6 +527,10 @@ Dirección: %4</translation>
|
||||
</context>
|
||||
<context>
|
||||
<name>OpenURIDialog</name>
|
||||
<message>
|
||||
<source>URI:</source>
|
||||
<translation>url:</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>OptionsDialog</name>
|
||||
@@ -490,6 +558,10 @@ Dirección: %4</translation>
|
||||
<source>&Network</source>
|
||||
<translation>&Red</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Expert</source>
|
||||
<translation>experto</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled.</source>
|
||||
<translation>Abre automáticamente el puerto del cliente Bitcoin en el router. Esto funciona solo cuando tu router es compatible con UPnP y está habilitado.</translation>
|
||||
@@ -510,6 +582,11 @@ Dirección: %4</translation>
|
||||
<source>Port of the proxy (e.g. 9050)</source>
|
||||
<translation>Puerto del servidor proxy (ej. 9050)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Window</source>
|
||||
<translation>y windows
|
||||
</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show only a tray icon after minimizing the window.</source>
|
||||
<translation>Muestra solo un ícono en la bandeja después de minimizar la ventana</translation>
|
||||
@@ -586,6 +663,10 @@ Dirección: %4</translation>
|
||||
<source>Amount</source>
|
||||
<translation>Cantidad</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>UNKNOWN</source>
|
||||
<translation>DESCONOCIDO</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>N/A</source>
|
||||
<translation>N/A</translation>
|
||||
@@ -620,6 +701,10 @@ Dirección: %4</translation>
|
||||
<source>&Information</source>
|
||||
<translation>&Información</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>General</source>
|
||||
<translation>General</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Startup time</source>
|
||||
<translation>Tiempo de inicio</translation>
|
||||
@@ -640,6 +725,11 @@ Dirección: %4</translation>
|
||||
<source>Block chain</source>
|
||||
<translation>Bloquea cadena</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Version</source>
|
||||
<translation>version
|
||||
</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Open</source>
|
||||
<translation>&Abrir</translation>
|
||||
@@ -908,6 +998,10 @@ Dirección: %4</translation>
|
||||
</context>
|
||||
<context>
|
||||
<name>SplashScreen</name>
|
||||
<message>
|
||||
<source>Bitcoin Core</source>
|
||||
<translation>bitcoin core</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>[testnet]</source>
|
||||
<translation>[red-de-pruebas]</translation>
|
||||
@@ -1235,6 +1329,10 @@ Dirección: %4</translation>
|
||||
</context>
|
||||
<context>
|
||||
<name>WalletView</name>
|
||||
<message>
|
||||
<source>&Export</source>
|
||||
<translation>y exportar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Export the data in the current tab to a file</source>
|
||||
<translation>Exportar los datos de la pestaña actual a un archivo</translation>
|
||||
@@ -1378,10 +1476,6 @@ Dirección: %4</translation>
|
||||
<source>Invalid amount for -paytxfee=<amount>: '%s'</source>
|
||||
<translation>Cantidad inválida para -paytxfee=<amount>: '%s'</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Invalid amount</source>
|
||||
<translation>Cantidad inválida</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Insufficient funds</source>
|
||||
<translation>Fondos insuficientes</translation>
|
||||
@@ -1406,10 +1500,6 @@ Dirección: %4</translation>
|
||||
<source>Done loading</source>
|
||||
<translation>Carga completa</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>To use the %s option</source>
|
||||
<translation>Para utilizar la opción %s</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>Error</translation>
|
||||
|
||||
@@ -1,10 +1,6 @@
|
||||
<TS language="es_DO" version="2.0">
|
||||
<TS language="es_DO" version="2.1">
|
||||
<context>
|
||||
<name>AddressBookPage</name>
|
||||
<message>
|
||||
<source>Double-click to edit address or label</source>
|
||||
<translation>Haga doble clic para editar una dirección o etiqueta</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Create a new address</source>
|
||||
<translation>Crear una nueva dirección</translation>
|
||||
@@ -1516,10 +1512,6 @@ Dirección: %4
|
||||
<source>Copy change</source>
|
||||
<translation>Copiar Cambio</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Total Amount %1 (= %2)</source>
|
||||
<translation>Cuantía Total %1 (=%2)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>or</source>
|
||||
<translation>o</translation>
|
||||
@@ -2230,42 +2222,10 @@ Dirección: %4
|
||||
<source>Accept connections from outside (default: 1 if no -proxy or -connect)</source>
|
||||
<translation>Aceptar conexiones desde el exterior (predeterminado: 1 si no -proxy o -connect)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>%s, you must set a rpcpassword in the configuration file:
|
||||
%s
|
||||
It is recommended you use the following random password:
|
||||
rpcuser=bitcoinrpc
|
||||
rpcpassword=%s
|
||||
(you do not need to remember this password)
|
||||
The username and password MUST NOT be the same.
|
||||
If the file does not exist, create it with owner-readable-only file permissions.
|
||||
It is also recommended to set alertnotify so you are notified of problems;
|
||||
for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
</source>
|
||||
<translation>%s, debe establecer un valor rpcpassword en el archivo de configuración:
|
||||
%s
|
||||
Se recomienda utilizar la siguiente contraseña aleatoria:
|
||||
rpcuser=bitcoinrpc
|
||||
rpcpassword=%s
|
||||
(no es necesario recordar esta contraseña)
|
||||
El nombre de usuario y la contraseña DEBEN NO ser iguales.
|
||||
Si el archivo no existe, créelo con permisos de archivo de solo lectura.
|
||||
Se recomienda también establecer alertnotify para recibir notificaciones de problemas.
|
||||
Por ejemplo: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Bind to given address and always listen on it. Use [host]:port notation for IPv6</source>
|
||||
<translation>Vincular a la dirección dada y escuchar siempre en ella. Utilice la notación [host]:port para IPv6</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error: The transaction was rejected! This might happen if some of the coins in your wallet were already spent, such as if you used a copy of wallet.dat and coins were spent in the copy but not marked as spent here.</source>
|
||||
<translation>¡Error: se ha rechazado la transacción! Esto puede ocurrir si ya se han gastado algunas de las monedas del monedero, como ocurriría si hubiera hecho una copia de wallet.dat y se hubieran gastado monedas a partir de la copia, con lo que no se habrían marcado aquí como gastadas.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds!</source>
|
||||
<translation>¡Error: Esta transacción requiere una comisión de al menos %s debido a su monto, complejidad, o al uso de fondos recién recibidos!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Execute command when a wallet transaction changes (%s in cmd is replaced by TxID)</source>
|
||||
<translation>Ejecutar comando cuando una transacción del monedero cambia (%s en cmd se remplazará por TxID)</translation>
|
||||
@@ -2342,10 +2302,6 @@ Por ejemplo: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Error: Disk space is low!</source>
|
||||
<translation>Error: ¡Espacio en disco bajo!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error: Wallet locked, unable to create transaction!</source>
|
||||
<translation>Error: ¡El monedero está bloqueado; no se puede crear la transacción!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Failed to listen on any port. Use -listen=0 if you want this.</source>
|
||||
<translation>Ha fallado la escucha en todos los puertos. Use -listen=0 si desea esto.</translation>
|
||||
@@ -2418,10 +2374,26 @@ Por ejemplo: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Invalid amount for -mintxfee=<amount>: '%s'</source>
|
||||
<translation>Inválido por el monto -mintxfee=<amount>: '%s'</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>RPC SSL options: (see the Bitcoin Wiki for SSL setup instructions)</source>
|
||||
<translation>Opciones RPC SSL: (Vea la Wiki de Bitcoin para las instrucciones de la configuración de SSL)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>RPC server options:</source>
|
||||
<translation>Opciones del sservidor RPC:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Randomly drop 1 of every <n> network messages</source>
|
||||
<translation>Descartar aleatoriamente 1 de cada <n> mensajes de red</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Send trace/debug info to console instead of debug.log file</source>
|
||||
<translation>Enviar información de trazas/depuración a la consola en lugar de al archivo debug.log</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show all debugging options (usage: --help -help-debug)</source>
|
||||
<translation>Mostrar todas las opciones de depuración (uso: --help -help-debug)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Shrink debug.log file on client startup (default: 1 when no -debug)</source>
|
||||
<translation>Reducir el archivo debug.log al iniciar el cliente (predeterminado: 1 sin -debug)</translation>
|
||||
@@ -2459,6 +2431,10 @@ Por ejemplo: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Warning: This version is obsolete, upgrade required!</source>
|
||||
<translation>Aviso: Esta versión es obsoleta, actualización necesaria!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>on startup</source>
|
||||
<translation>al iniciar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>wallet.dat corrupt, salvage failed</source>
|
||||
<translation>wallet.dat corrupto. Ha fallado la recuperación.</translation>
|
||||
@@ -2526,10 +2502,6 @@ Por ejemplo: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Invalid amount for -paytxfee=<amount>: '%s'</source>
|
||||
<translation>Cantidad inválida para -paytxfee=<amount>: '%s'</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Invalid amount</source>
|
||||
<translation>Cuantía no válida</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Insufficient funds</source>
|
||||
<translation>Fondos insuficientes</translation>
|
||||
@@ -2562,10 +2534,6 @@ Por ejemplo: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com
|
||||
<source>Done loading</source>
|
||||
<translation>Generado pero no aceptado</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>To use the %s option</source>
|
||||
<translation>Para utilizar la opción %s</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>Error</translation>
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user