diff --git a/.gitignore b/.gitignore index 17daf38fb..3e934cb9f 100644 --- a/.gitignore +++ b/.gitignore @@ -7,7 +7,6 @@ src/zcash-cli src/zcash-gtest src/zcash-tx src/test/test_bitcoin -src/qt/test/test_bitcoin-qt # Zcash utilities src/zcash/GenerateParams @@ -41,16 +40,11 @@ src/config/bitcoin-config.h src/config/bitcoin-config.h.in src/config/stamp-h1 share/setup.nsi -share/qt/Info.plist +cache/ +venv-mnf/ src/univalue/gen -src/qt/*.moc -src/qt/moc_*.cpp -src/qt/forms/ui_*.h - -src/qt/test/moc*.cpp - .deps .dirstamp .libs @@ -79,23 +73,16 @@ src/qt/test/moc*.cpp *.lo *.la -# Compilation and Qt preprocessor part -*.qm +# Compilation Makefile -bitcoin-qt -Bitcoin-Qt.app # Unit-tests Makefile.test -bitcoin-qt_test src/test/buildenv.py # Resources cpp qrc_*.cpp -# Qt creator -*.pro.user - # Mac specific .DS_Store build diff --git a/.travis.yml b/.travis.yml index 0537d69a4..662ac5681 100644 --- a/.travis.yml +++ b/.travis.yml @@ -31,13 +31,13 @@ matrix: - compiler: ": ARM" env: HOST=arm-linux-gnueabihf PACKAGES="g++-arm-linux-gnueabihf" DEP_OPTS="NO_QT=1" GOAL="install" BITCOIN_CONFIG="--enable-glibc-back-compat --enable-reduce-exports" - 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 --enable-reduce-exports" MAKEJOBS="-j2" + 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-reduce-exports" MAKEJOBS="-j2" - compiler: ": 32-bit + dash" - env: HOST=i686-pc-linux-gnu PACKAGES="g++-multilib bc" RUN_TESTS=true GOAL="install" BITCOIN_CONFIG="--enable-glibc-back-compat --enable-reduce-exports LDFLAGS=-static-libstdc++" USE_SHELL="/bin/dash" + env: HOST=i686-pc-linux-gnu PACKAGES="g++-multilib bc python-zmq" PPA="ppa:chris-lea/zeromq" RUN_TESTS=true GOAL="install" BITCOIN_CONFIG="--enable-zmq --enable-glibc-back-compat --enable-reduce-exports LDFLAGS=-static-libstdc++" USE_SHELL="/bin/dash" - compiler: ": Win64" - 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 --enable-reduce-exports" MAKEJOBS="-j2" + 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-reduce-exports" MAKEJOBS="-j2" - compiler: ": bitcoind" - env: HOST=x86_64-unknown-linux-gnu PACKAGES="bc" DEP_OPTS="NO_QT=1 NO_UPNP=1 DEBUG=1" RUN_TESTS=true GOAL="install" BITCOIN_CONFIG="--enable-glibc-back-compat --enable-reduce-exports CPPFLAGS=-DDEBUG_LOCKORDER" + env: HOST=x86_64-unknown-linux-gnu PACKAGES="bc python-zmq" PPA="ppa:chris-lea/zeromq" DEP_OPTS="NO_QT=1 NO_UPNP=1 DEBUG=1" RUN_TESTS=true GOAL="install" BITCOIN_CONFIG="--enable-zmq --enable-glibc-back-compat --enable-reduce-exports CPPFLAGS=-DDEBUG_LOCKORDER" - compiler: ": No wallet" env: HOST=x86_64-unknown-linux-gnu DEP_OPTS="NO_WALLET=1" RUN_TESTS=true GOAL="install" BITCOIN_CONFIG="--enable-glibc-back-compat --enable-reduce-exports" - compiler: ": Cross-Mac" @@ -45,6 +45,7 @@ matrix: exclude: - compiler: gcc install: + - if [ -n "$PACKAGES" ]; then sudo rm -f /etc/apt/sources.list.d/travis_ci_zeromq3-source.list; fi - 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 before_script: diff --git a/.tx/config b/.tx/config deleted file mode 100644 index 6c534f06e..000000000 --- a/.tx/config +++ /dev/null @@ -1,7 +0,0 @@ -[main] -host = https://www.transifex.com - -[bitcoin.qt-translation-011x] -file_filter = src/qt/locale/bitcoin_.ts -source_file = src/qt/locale/bitcoin_en.ts -source_lang = en diff --git a/COPYING b/COPYING index 62038b6ba..67a092a04 100644 --- a/COPYING +++ b/COPYING @@ -1,5 +1,5 @@ -Copyright (c) 2016 The Zcash developers -Copyright (c) 2009-2015 The Bitcoin Core developers +Copyright (c) 2016-2017 The Zcash developers +Copyright (c) 2009-2017 The Bitcoin Core 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 @@ -21,16 +21,14 @@ THE SOFTWARE. The MIT software license (http://www.opensource.org/licenses/mit-license.php) -above applies to the code directly included in this source distribution, with -the exception of certain files under the 'src/qt/' and 'scripts/img/' directories -which are distributed under the LGPL or GPL licenses. Dependencies downloaded -as part of the build process may be covered by other open source licenses. -For further details see 'contrib/DEBIAN/copyright'. +above applies to the code directly included in this source distribution. +Dependencies downloaded as part of the build process may be covered by other +open-source licenses. For further details see 'contrib/debian/copyright'. 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](mailto:eay@cryptsoft.com)), +OpenSSL Toolkit (https://www.openssl.org/). This product includes cryptographic +software written by Eric Young (eay@cryptsoft.com), and UPnP software written by Thomas Bernard. diff --git a/Makefile.am b/Makefile.am index 2eeb92ee8..f580ccfc2 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,5 +1,8 @@ ACLOCAL_AMFLAGS = -I build-aux/m4 SUBDIRS = src +if ENABLE_MAN +SUBDIRS += doc/man +endif .PHONY: deploy FORCE GZIP_ENV="-9n" @@ -10,19 +13,18 @@ pkgconfig_DATA = libzcashconsensus.pc endif BITCOIND_BIN=$(top_builddir)/src/zcashd$(EXEEXT) -BITCOIN_QT_BIN=$(top_builddir)/src/qt/bitcoin-qt$(EXEEXT) BITCOIN_CLI_BIN=$(top_builddir)/src/zcash-cli$(EXEEXT) BITCOIN_WIN_INSTALLER=$(PACKAGE)-$(PACKAGE_VERSION)-win$(WINDOWS_BITS)-setup$(EXEEXT) -OSX_APP=Bitcoin-Qt.app -OSX_DMG=Bitcoin-Core.dmg -OSX_BACKGROUND_IMAGE=background.tiff -OSX_DEPLOY_SCRIPT=$(top_srcdir)/contrib/macdeploy/macdeployqtplus -OSX_FANCY_PLIST=$(top_srcdir)/contrib/macdeploy/fancy.plist -OSX_BASE_LPROJ_DIR=$(top_srcdir)/contrib/macdeploy/Base.lproj/InfoPlist.strings -OSX_INSTALLER_ICONS=$(top_srcdir)/src/qt/res/icons/bitcoin.icns -OSX_PLIST=$(top_srcdir)/share/qt/Info.plist #not installed -OSX_QT_TRANSLATIONS = da,de,es,hu,ru,uk,zh_CN,zh_TW +##OSX_APP=Bitcoin-Qt.app +##OSX_DMG=Bitcoin-Core.dmg +##OSX_BACKGROUND_IMAGE=background.tiff +##OSX_DEPLOY_SCRIPT=$(top_srcdir)/contrib/macdeploy/macdeployqtplus +##OSX_FANCY_PLIST=$(top_srcdir)/contrib/macdeploy/fancy.plist +##OSX_BASE_LPROJ_DIR=$(top_srcdir)/contrib/macdeploy/Base.lproj/InfoPlist.strings +##OSX_INSTALLER_ICONS=$(top_srcdir)/src/qt/res/icons/bitcoin.icns +##OSX_PLIST=$(top_srcdir)/share/qt/Info.plist #not installed +##OSX_QT_TRANSLATIONS = da,de,es,hu,ru,uk,zh_CN,zh_TW DIST_DOCS = $(wildcard doc/*.md) $(wildcard doc/release-notes/*.md) @@ -33,11 +35,11 @@ WINDOWS_PACKAGING = $(top_srcdir)/share/pixmaps/bitcoin.ico \ $(top_srcdir)/share/pixmaps/nsis-header.bmp \ $(top_srcdir)/share/pixmaps/nsis-wizard.bmp -OSX_PACKAGING = $(OSX_DEPLOY_SCRIPT) $(OSX_FANCY_PLIST) $(OSX_INSTALLER_ICONS) $(OSX_BASE_LPROJ_DIR) \ - $(top_srcdir)/contrib/macdeploy/$(OSX_BACKGROUND_IMAGE) \ - $(top_srcdir)/contrib/macdeploy/DS_Store \ - $(top_srcdir)/contrib/macdeploy/detached-sig-apply.sh \ - $(top_srcdir)/contrib/macdeploy/detached-sig-create.sh +##OSX_PACKAGING = $(OSX_DEPLOY_SCRIPT) $(OSX_FANCY_PLIST) $(OSX_INSTALLER_ICONS) $(OSX_BASE_LPROJ_DIR) \ +## $(top_srcdir)/contrib/macdeploy/$(OSX_BACKGROUND_IMAGE) \ +## $(top_srcdir)/contrib/macdeploy/DS_Store \ +## $(top_srcdir)/contrib/macdeploy/detached-sig-apply.sh \ +## $(top_srcdir)/contrib/macdeploy/detached-sig-create.sh if BUILD_DARWIN @@ -70,7 +72,6 @@ distcleancheck: $(BITCOIN_WIN_INSTALLER): all-recursive $(MKDIR_P) $(top_builddir)/release STRIPPROG="$(STRIP)" $(INSTALL_STRIP_PROGRAM) $(BITCOIND_BIN) $(top_builddir)/release - STRIPPROG="$(STRIP)" $(INSTALL_STRIP_PROGRAM) $(BITCOIN_QT_BIN) $(top_builddir)/release STRIPPROG="$(STRIP)" $(INSTALL_STRIP_PROGRAM) $(BITCOIN_CLI_BIN) $(top_builddir)/release @test -f $(MAKENSIS) && $(MAKENSIS) -V2 $(top_builddir)/share/setup.nsi || \ echo error: could not build $@ @@ -79,75 +80,73 @@ $(BITCOIN_WIN_INSTALLER): all-recursive $(if $(findstring src/,$(MAKECMDGOALS)),$(MAKECMDGOALS), none): FORCE $(MAKE) -C src $(patsubst src/%,%,$@) -$(OSX_APP)/Contents/PkgInfo: - $(MKDIR_P) $(@D) - @echo "APPL????" > $@ +##$(OSX_APP)/Contents/PkgInfo: +## $(MKDIR_P) $(@D) +## @echo "APPL????" > $@ +## +##$(OSX_APP)/Contents/Resources/empty.lproj: +## $(MKDIR_P) $(@D) +## @touch $@ +## +##$(OSX_APP)/Contents/Info.plist: $(OSX_PLIST) +## $(MKDIR_P) $(@D) +## $(INSTALL_DATA) $< $@ +## +##$(OSX_APP)/Contents/Resources/bitcoin.icns: $(OSX_INSTALLER_ICONS) +## $(MKDIR_P) $(@D) +## $(INSTALL_DATA) $< $@ +## +##$(OSX_APP)/Contents/MacOS/Bitcoin-Qt: $(BITCOIN_QT_BIN) +## $(MKDIR_P) $(@D) +## STRIPPROG="$(STRIP)" $(INSTALL_STRIP_PROGRAM) $< $@ +## +##$(OSX_APP)/Contents/Resources/Base.lproj/InfoPlist.strings: $(OSX_BASE_LPROJ_DIR) +## $(MKDIR_P) $(@D) +## $(INSTALL_DATA) $< $@ +## +##OSX_APP_BUILT=$(OSX_APP)/Contents/PkgInfo $(OSX_APP)/Contents/Resources/empty.lproj \ +## $(OSX_APP)/Contents/Resources/bitcoin.icns $(OSX_APP)/Contents/Info.plist \ +## $(OSX_APP)/Contents/MacOS/Bitcoin-Qt $(OSX_APP)/Contents/Resources/Base.lproj/InfoPlist.strings +## +##if BUILD_DARWIN +##$(OSX_DMG): $(OSX_APP_BUILT) $(OSX_PACKAGING) +## $(OSX_DEPLOY_SCRIPT) $(OSX_APP) -add-qt-tr $(OSX_QT_TRANSLATIONS) -translations-dir=$(QT_TRANSLATION_DIR) -dmg -fancy $(OSX_FANCY_PLIST) -verbose 2 +## +##deploydir: $(OSX_DMG) +##else +##APP_DIST_DIR=$(top_builddir)/dist +##APP_DIST_EXTRAS=$(APP_DIST_DIR)/.background/$(OSX_BACKGROUND_IMAGE) $(APP_DIST_DIR)/.DS_Store $(APP_DIST_DIR)/Applications +## +##$(APP_DIST_DIR)/Applications: +## @rm -f $@ +## @cd $(@D); $(LN_S) /Applications $(@F) +## +##$(APP_DIST_EXTRAS): $(APP_DIST_DIR)/$(OSX_APP)/Contents/MacOS/Bitcoin-Qt +## +##$(OSX_DMG): $(APP_DIST_EXTRAS) +## $(GENISOIMAGE) -no-cache-inodes -D -l -probe -V "Bitcoin-Core" -no-pad -r -apple -o $@ dist +## +##$(APP_DIST_DIR)/.background/$(OSX_BACKGROUND_IMAGE): contrib/macdeploy/$(OSX_BACKGROUND_IMAGE) +## $(MKDIR_P) $(@D) +## $(INSTALL) $< $@ +##$(APP_DIST_DIR)/.DS_Store: contrib/macdeploy/DS_Store +## $(INSTALL) $< $@ +## +##$(APP_DIST_DIR)/$(OSX_APP)/Contents/MacOS/Bitcoin-Qt: $(OSX_APP_BUILT) $(OSX_PACKAGING) +## INSTALLNAMETOOL=$(INSTALLNAMETOOL) OTOOL=$(OTOOL) STRIP=$(STRIP) $(OSX_DEPLOY_SCRIPT) $(OSX_APP) -translations-dir=$(QT_TRANSLATION_DIR) -add-qt-tr $(OSX_QT_TRANSLATIONS) -verbose 2 +## +##deploydir: $(APP_DIST_EXTRAS) +##endif +## +##if TARGET_DARWIN +##appbundle: $(OSX_APP_BUILT) +##deploy: $(OSX_DMG) +##endif -$(OSX_APP)/Contents/Resources/empty.lproj: - $(MKDIR_P) $(@D) - @touch $@ - -$(OSX_APP)/Contents/Info.plist: $(OSX_PLIST) - $(MKDIR_P) $(@D) - $(INSTALL_DATA) $< $@ - -$(OSX_APP)/Contents/Resources/bitcoin.icns: $(OSX_INSTALLER_ICONS) - $(MKDIR_P) $(@D) - $(INSTALL_DATA) $< $@ - -$(OSX_APP)/Contents/MacOS/Bitcoin-Qt: $(BITCOIN_QT_BIN) - $(MKDIR_P) $(@D) - STRIPPROG="$(STRIP)" $(INSTALL_STRIP_PROGRAM) $< $@ - -$(OSX_APP)/Contents/Resources/Base.lproj/InfoPlist.strings: $(OSX_BASE_LPROJ_DIR) - $(MKDIR_P) $(@D) - $(INSTALL_DATA) $< $@ - -OSX_APP_BUILT=$(OSX_APP)/Contents/PkgInfo $(OSX_APP)/Contents/Resources/empty.lproj \ - $(OSX_APP)/Contents/Resources/bitcoin.icns $(OSX_APP)/Contents/Info.plist \ - $(OSX_APP)/Contents/MacOS/Bitcoin-Qt $(OSX_APP)/Contents/Resources/Base.lproj/InfoPlist.strings - -if BUILD_DARWIN -$(OSX_DMG): $(OSX_APP_BUILT) $(OSX_PACKAGING) - $(OSX_DEPLOY_SCRIPT) $(OSX_APP) -add-qt-tr $(OSX_QT_TRANSLATIONS) -translations-dir=$(QT_TRANSLATION_DIR) -dmg -fancy $(OSX_FANCY_PLIST) -verbose 2 - -deploydir: $(OSX_DMG) -else -APP_DIST_DIR=$(top_builddir)/dist -APP_DIST_EXTRAS=$(APP_DIST_DIR)/.background/$(OSX_BACKGROUND_IMAGE) $(APP_DIST_DIR)/.DS_Store $(APP_DIST_DIR)/Applications - -$(APP_DIST_DIR)/Applications: - @rm -f $@ - @cd $(@D); $(LN_S) /Applications $(@F) - -$(APP_DIST_EXTRAS): $(APP_DIST_DIR)/$(OSX_APP)/Contents/MacOS/Bitcoin-Qt - -$(OSX_DMG): $(APP_DIST_EXTRAS) - $(GENISOIMAGE) -no-cache-inodes -D -l -probe -V "Bitcoin-Core" -no-pad -r -apple -o $@ dist - -$(APP_DIST_DIR)/.background/$(OSX_BACKGROUND_IMAGE): contrib/macdeploy/$(OSX_BACKGROUND_IMAGE) - $(MKDIR_P) $(@D) - $(INSTALL) $< $@ -$(APP_DIST_DIR)/.DS_Store: contrib/macdeploy/DS_Store - $(INSTALL) $< $@ - -$(APP_DIST_DIR)/$(OSX_APP)/Contents/MacOS/Bitcoin-Qt: $(OSX_APP_BUILT) $(OSX_PACKAGING) - INSTALLNAMETOOL=$(INSTALLNAMETOOL) OTOOL=$(OTOOL) STRIP=$(STRIP) $(OSX_DEPLOY_SCRIPT) $(OSX_APP) -translations-dir=$(QT_TRANSLATION_DIR) -add-qt-tr $(OSX_QT_TRANSLATIONS) -verbose 2 - -deploydir: $(APP_DIST_EXTRAS) -endif - -if TARGET_DARWIN -appbundle: $(OSX_APP_BUILT) -deploy: $(OSX_DMG) -endif if TARGET_WINDOWS deploy: $(BITCOIN_WIN_INSTALLER) endif -$(BITCOIN_QT_BIN): FORCE - $(MAKE) -C src qt/$(@F) - $(BITCOIND_BIN): FORCE $(MAKE) -C src $(@F) @@ -319,5 +318,7 @@ CLEANFILES = $(OSX_DMG) $(BITCOIN_WIN_INSTALLER) .INTERMEDIATE: $(COVERAGE_INFO) +DISTCHECK_CONFIGURE_FLAGS = --enable-man + clean-local: rm -rf test_bitcoin.coverage/ zcash-gtest.coverage/ total.coverage/ $(OSX_APP) diff --git a/README.md b/README.md index ff9545fe9..b413b1f16 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,4 @@ - -======= -Zcash 1.0.5 +Zcash 1.0.8 =========== What is Zcash? diff --git a/build-aux/m4/bitcoin_qt.m4 b/build-aux/m4/bitcoin_qt.m4 deleted file mode 100644 index 100b8653a..000000000 --- a/build-aux/m4/bitcoin_qt.m4 +++ /dev/null @@ -1,433 +0,0 @@ -dnl Helper for cases where a qt dependency is not met. -dnl Output: If qt version is auto, set bitcoin_enable_qt to false. Else, exit. -AC_DEFUN([BITCOIN_QT_FAIL],[ - if test "x$bitcoin_qt_want_version" = "xauto" && test x$bitcoin_qt_force != xyes; then - if test x$bitcoin_enable_qt != xno; then - AC_MSG_WARN([$1; bitcoin-qt frontend will not be built]) - fi - bitcoin_enable_qt=no - bitcoin_enable_qt_test=no - else - AC_MSG_ERROR([$1]) - fi -]) - -AC_DEFUN([BITCOIN_QT_CHECK],[ - if test "x$bitcoin_enable_qt" != "xno" && test x$bitcoin_qt_want_version != xno; then - true - $1 - else - true - $2 - fi -]) - -dnl BITCOIN_QT_PATH_PROGS([FOO], [foo foo2], [/path/to/search/first], [continue if missing]) -dnl Helper for finding the path of programs needed for Qt. -dnl Inputs: $1: Variable to be set -dnl Inputs: $2: List of programs to search for -dnl Inputs: $3: Look for $2 here before $PATH -dnl Inputs: $4: If "yes", don't fail if $2 is not found. -dnl Output: $1 is set to the path of $2 if found. $2 are searched in order. -AC_DEFUN([BITCOIN_QT_PATH_PROGS],[ - BITCOIN_QT_CHECK([ - if test "x$3" != "x"; then - AC_PATH_PROGS($1,$2,,$3) - else - AC_PATH_PROGS($1,$2) - fi - if test "x$$1" = "x" && test "x$4" != "xyes"; then - BITCOIN_QT_FAIL([$1 not found]) - fi - ]) -]) - -dnl Initialize qt input. -dnl This must be called before any other BITCOIN_QT* macros to ensure that -dnl input variables are set correctly. -dnl CAUTION: Do not use this inside of a conditional. -AC_DEFUN([BITCOIN_QT_INIT],[ - dnl enable qt support - AC_ARG_WITH([gui], - [AS_HELP_STRING([--with-gui@<:@=no|qt4|qt5|auto@:>@], - [build bitcoin-qt GUI (default=auto, qt4 tried first)])], - [ - bitcoin_qt_want_version=$withval - if test x$bitcoin_qt_want_version = xyes; then - bitcoin_qt_force=yes - bitcoin_qt_want_version=auto - fi - ], - [bitcoin_qt_want_version=auto]) - - AC_ARG_WITH([qt-incdir],[AS_HELP_STRING([--with-qt-incdir=INC_DIR],[specify qt include path (overridden by pkgconfig)])], [qt_include_path=$withval], []) - AC_ARG_WITH([qt-libdir],[AS_HELP_STRING([--with-qt-libdir=LIB_DIR],[specify qt lib path (overridden by pkgconfig)])], [qt_lib_path=$withval], []) - AC_ARG_WITH([qt-plugindir],[AS_HELP_STRING([--with-qt-plugindir=PLUGIN_DIR],[specify qt plugin path (overridden by pkgconfig)])], [qt_plugin_path=$withval], []) - AC_ARG_WITH([qt-translationdir],[AS_HELP_STRING([--with-qt-translationdir=PLUGIN_DIR],[specify qt translation path (overridden by pkgconfig)])], [qt_translation_path=$withval], []) - AC_ARG_WITH([qt-bindir],[AS_HELP_STRING([--with-qt-bindir=BIN_DIR],[specify qt bin path])], [qt_bin_path=$withval], []) - - AC_ARG_WITH([qtdbus], - [AS_HELP_STRING([--with-qtdbus], - [enable DBus support (default is yes if qt is enabled and QtDBus is found)])], - [use_dbus=$withval], - [use_dbus=auto]) - - AC_SUBST(QT_TRANSLATION_DIR,$qt_translation_path) -]) - -dnl Find the appropriate version of Qt libraries and includes. -dnl Inputs: $1: Whether or not pkg-config should be used. yes|no. Default: yes. -dnl Inputs: $2: If $1 is "yes" and --with-gui=auto, which qt version should be -dnl tried first. -dnl Outputs: See _BITCOIN_QT_FIND_LIBS_* -dnl Outputs: Sets variables for all qt-related tools. -dnl Outputs: bitcoin_enable_qt, bitcoin_enable_qt_dbus, bitcoin_enable_qt_test -AC_DEFUN([BITCOIN_QT_CONFIGURE],[ - use_pkgconfig=$1 - - if test x$use_pkgconfig = x; then - use_pkgconfig=yes - fi - - if test x$use_pkgconfig = xyes; then - BITCOIN_QT_CHECK([_BITCOIN_QT_FIND_LIBS_WITH_PKGCONFIG([$2])]) - else - BITCOIN_QT_CHECK([_BITCOIN_QT_FIND_LIBS_WITHOUT_PKGCONFIG]) - fi - - dnl This is ugly and complicated. Yuck. Works as follows: - dnl We can't discern whether Qt4 builds are static or not. For Qt5, we can - dnl check a header to find out. When Qt is built statically, some plugins must - dnl be linked into the final binary as well. These plugins have changed between - dnl Qt4 and Qt5. With Qt5, languages moved into core and the WindowsIntegration - dnl plugin was added. Since we can't tell if Qt4 is static or not, it is - dnl assumed for windows builds. - dnl _BITCOIN_QT_CHECK_STATIC_PLUGINS does a quick link-check and appends the - dnl results to QT_LIBS. - BITCOIN_QT_CHECK([ - TEMP_CPPFLAGS=$CPPFLAGS - CPPFLAGS="$QT_INCLUDES $CPPFLAGS" - if test x$bitcoin_qt_got_major_vers = x5; then - _BITCOIN_QT_IS_STATIC - if test x$bitcoin_cv_static_qt = xyes; then - AC_DEFINE(QT_STATICPLUGIN, 1, [Define this symbol if qt plugins are static]) - if test x$qt_plugin_path != x; then - QT_LIBS="$QT_LIBS -L$qt_plugin_path/platforms" - fi - if test x$use_pkgconfig = xyes; then - PKG_CHECK_MODULES([QTPLATFORM], [Qt5PlatformSupport], [QT_LIBS="$QTPLATFORM_LIBS $QT_LIBS"]) - fi - AC_CACHE_CHECK(for Qt < 5.4, bitcoin_cv_need_acc_widget,[AC_COMPILE_IFELSE([AC_LANG_PROGRAM( - [[#include ]],[[ - #if QT_VERSION >= 0x050400 - choke; - #endif - ]])], - [bitcoin_cv_need_acc_widget=yes], - [bitcoin_cv_need_acc_widget=no]) - ]) - if test "x$bitcoin_cv_need_acc_widget" = "xyes"; then - if test x$qt_plugin_path != x; then - QT_LIBS="$QT_LIBS -L$qt_plugin_path/accessible" - fi - _BITCOIN_QT_CHECK_STATIC_PLUGINS([Q_IMPORT_PLUGIN(AccessibleFactory)], [-lqtaccessiblewidgets]) - fi - if test x$TARGET_OS = xwindows; then - _BITCOIN_QT_CHECK_STATIC_PLUGINS([Q_IMPORT_PLUGIN(QWindowsIntegrationPlugin)],[-lqwindows]) - AC_DEFINE(QT_QPA_PLATFORM_WINDOWS, 1, [Define this symbol if the qt platform is windows]) - elif test x$TARGET_OS = xlinux; then - PKG_CHECK_MODULES([X11XCB], [x11-xcb], [QT_LIBS="$X11XCB_LIBS $QT_LIBS"]) - if ${PKG_CONFIG} --exists "Qt5Core >= 5.5" 2>/dev/null; then - PKG_CHECK_MODULES([QTXCBQPA], [Qt5XcbQpa], [QT_LIBS="$QTXCBQPA_LIBS $QT_LIBS"]) - fi - _BITCOIN_QT_CHECK_STATIC_PLUGINS([Q_IMPORT_PLUGIN(QXcbIntegrationPlugin)],[-lqxcb -lxcb-static]) - AC_DEFINE(QT_QPA_PLATFORM_XCB, 1, [Define this symbol if the qt platform is xcb]) - elif test x$TARGET_OS = xdarwin; then - if test x$use_pkgconfig = xyes; then - PKG_CHECK_MODULES([QTPRINT], [Qt5PrintSupport], [QT_LIBS="$QTPRINT_LIBS $QT_LIBS"]) - fi - AX_CHECK_LINK_FLAG([[-framework IOKit]],[QT_LIBS="$QT_LIBS -framework IOKit"],[AC_MSG_ERROR(could not iokit framework)]) - _BITCOIN_QT_CHECK_STATIC_PLUGINS([Q_IMPORT_PLUGIN(QCocoaIntegrationPlugin)],[-lqcocoa]) - AC_DEFINE(QT_QPA_PLATFORM_COCOA, 1, [Define this symbol if the qt platform is cocoa]) - fi - fi - else - if test x$TARGET_OS = xwindows; then - AC_DEFINE(QT_STATICPLUGIN, 1, [Define this symbol if qt plugins are static]) - if test x$qt_plugin_path != x; then - QT_LIBS="$QT_LIBS -L$qt_plugin_path/accessible" - QT_LIBS="$QT_LIBS -L$qt_plugin_path/codecs" - fi - _BITCOIN_QT_CHECK_STATIC_PLUGINS([ - Q_IMPORT_PLUGIN(qcncodecs) - Q_IMPORT_PLUGIN(qjpcodecs) - Q_IMPORT_PLUGIN(qtwcodecs) - Q_IMPORT_PLUGIN(qkrcodecs) - Q_IMPORT_PLUGIN(AccessibleFactory)], - [-lqcncodecs -lqjpcodecs -lqtwcodecs -lqkrcodecs -lqtaccessiblewidgets]) - fi - fi - CPPFLAGS=$TEMP_CPPFLAGS - ]) - - if test x$use_pkgconfig$qt_bin_path = xyes; then - if test x$bitcoin_qt_got_major_vers = x5; then - qt_bin_path="`$PKG_CONFIG --variable=host_bins Qt5Core 2>/dev/null`" - fi - fi - - BITCOIN_QT_PATH_PROGS([MOC], [moc-qt${bitcoin_qt_got_major_vers} moc${bitcoin_qt_got_major_vers} moc], $qt_bin_path) - BITCOIN_QT_PATH_PROGS([UIC], [uic-qt${bitcoin_qt_got_major_vers} uic${bitcoin_qt_got_major_vers} uic], $qt_bin_path) - BITCOIN_QT_PATH_PROGS([RCC], [rcc-qt${bitcoin_qt_got_major_vers} rcc${bitcoin_qt_got_major_vers} rcc], $qt_bin_path) - BITCOIN_QT_PATH_PROGS([LRELEASE], [lrelease-qt${bitcoin_qt_got_major_vers} lrelease${bitcoin_qt_got_major_vers} lrelease], $qt_bin_path) - BITCOIN_QT_PATH_PROGS([LUPDATE], [lupdate-qt${bitcoin_qt_got_major_vers} lupdate${bitcoin_qt_got_major_vers} lupdate],$qt_bin_path, yes) - - MOC_DEFS='-DHAVE_CONFIG_H -I$(srcdir)' - case $host in - *darwin*) - BITCOIN_QT_CHECK([ - MOC_DEFS="${MOC_DEFS} -DQ_OS_MAC" - base_frameworks="-framework Foundation -framework ApplicationServices -framework AppKit" - AX_CHECK_LINK_FLAG([[$base_frameworks]],[QT_LIBS="$QT_LIBS $base_frameworks"],[AC_MSG_ERROR(could not find base frameworks)]) - ]) - ;; - *mingw*) - BITCOIN_QT_CHECK([ - AX_CHECK_LINK_FLAG([[-mwindows]],[QT_LDFLAGS="$QT_LDFLAGS -mwindows"],[AC_MSG_WARN(-mwindows linker support not detected)]) - ]) - esac - - - dnl enable qt support - AC_MSG_CHECKING(whether to build Bitcoin Core GUI) - BITCOIN_QT_CHECK([ - bitcoin_enable_qt=yes - bitcoin_enable_qt_test=yes - if test x$have_qt_test = xno; then - bitcoin_enable_qt_test=no - fi - bitcoin_enable_qt_dbus=no - if test x$use_dbus != xno && test x$have_qt_dbus = xyes; then - bitcoin_enable_qt_dbus=yes - fi - if test x$use_dbus = xyes && test x$have_qt_dbus = xno; then - AC_MSG_ERROR("libQtDBus not found. Install libQtDBus or remove --with-qtdbus.") - fi - if test x$LUPDATE = x; then - AC_MSG_WARN("lupdate is required to update qt translations") - fi - ],[ - bitcoin_enable_qt=no - ]) - AC_MSG_RESULT([$bitcoin_enable_qt (Qt${bitcoin_qt_got_major_vers})]) - - AC_SUBST(QT_INCLUDES) - AC_SUBST(QT_LIBS) - AC_SUBST(QT_LDFLAGS) - AC_SUBST(QT_DBUS_INCLUDES) - AC_SUBST(QT_DBUS_LIBS) - AC_SUBST(QT_TEST_INCLUDES) - AC_SUBST(QT_TEST_LIBS) - AC_SUBST(QT_SELECT, qt${bitcoin_qt_got_major_vers}) - AC_SUBST(MOC_DEFS) -]) - -dnl All macros below are internal and should _not_ be used from the main -dnl configure.ac. -dnl ---- - -dnl Internal. Check if the included version of Qt is Qt5. -dnl Requires: INCLUDES must be populated as necessary. -dnl Output: bitcoin_cv_qt5=yes|no -AC_DEFUN([_BITCOIN_QT_CHECK_QT5],[ - AC_CACHE_CHECK(for Qt 5, bitcoin_cv_qt5,[ - AC_COMPILE_IFELSE([AC_LANG_PROGRAM( - [[#include ]], - [[ - #if QT_VERSION < 0x050000 - choke me - #else - return 0; - #endif - ]])], - [bitcoin_cv_qt5=yes], - [bitcoin_cv_qt5=no]) -])]) - -dnl Internal. Check if the linked version of Qt was built as static libs. -dnl Requires: Qt5. This check cannot determine if Qt4 is static. -dnl Requires: INCLUDES and LIBS must be populated as necessary. -dnl Output: bitcoin_cv_static_qt=yes|no -dnl Output: Defines QT_STATICPLUGIN if plugins are static. -AC_DEFUN([_BITCOIN_QT_IS_STATIC],[ - AC_CACHE_CHECK(for static Qt, bitcoin_cv_static_qt,[ - AC_COMPILE_IFELSE([AC_LANG_PROGRAM( - [[#include ]], - [[ - #if defined(QT_STATIC) - return 0; - #else - choke me - #endif - ]])], - [bitcoin_cv_static_qt=yes], - [bitcoin_cv_static_qt=no]) - ]) - if test xbitcoin_cv_static_qt = xyes; then - AC_DEFINE(QT_STATICPLUGIN, 1, [Define this symbol for static Qt plugins]) - fi -]) - -dnl Internal. Check if the link-requirements for static plugins are met. -dnl Requires: INCLUDES and LIBS must be populated as necessary. -dnl Inputs: $1: A series of Q_IMPORT_PLUGIN(). -dnl Inputs: $2: The libraries that resolve $1. -dnl Output: QT_LIBS is prepended or configure exits. -AC_DEFUN([_BITCOIN_QT_CHECK_STATIC_PLUGINS],[ - AC_MSG_CHECKING(for static Qt plugins: $2) - CHECK_STATIC_PLUGINS_TEMP_LIBS="$LIBS" - LIBS="$2 $QT_LIBS $LIBS" - AC_LINK_IFELSE([AC_LANG_PROGRAM([[ - #define QT_STATICPLUGIN - #include - $1]], - [[return 0;]])], - [AC_MSG_RESULT(yes); QT_LIBS="$2 $QT_LIBS"], - [AC_MSG_RESULT(no); BITCOIN_QT_FAIL(Could not resolve: $2)]) - LIBS="$CHECK_STATIC_PLUGINS_TEMP_LIBS" -]) - -dnl Internal. Find Qt libraries using pkg-config. -dnl Inputs: bitcoin_qt_want_version (from --with-gui=). The version to check -dnl first. -dnl Inputs: $1: If bitcoin_qt_want_version is "auto", check for this version -dnl first. -dnl Outputs: All necessary QT_* variables are set. -dnl Outputs: bitcoin_qt_got_major_vers is set to "4" or "5". -dnl Outputs: have_qt_test and have_qt_dbus are set (if applicable) to yes|no. -AC_DEFUN([_BITCOIN_QT_FIND_LIBS_WITH_PKGCONFIG],[ - m4_ifdef([PKG_CHECK_MODULES],[ - auto_priority_version=$1 - if test x$auto_priority_version = x; then - auto_priority_version=qt5 - fi - if test x$bitcoin_qt_want_version = xqt5 || ( test x$bitcoin_qt_want_version = xauto && test x$auto_priority_version = xqt5 ); then - QT_LIB_PREFIX=Qt5 - bitcoin_qt_got_major_vers=5 - else - QT_LIB_PREFIX=Qt - bitcoin_qt_got_major_vers=4 - fi - qt5_modules="Qt5Core Qt5Gui Qt5Network Qt5Widgets" - qt4_modules="QtCore QtGui QtNetwork" - BITCOIN_QT_CHECK([ - if test x$bitcoin_qt_want_version = xqt5 || ( test x$bitcoin_qt_want_version = xauto && test x$auto_priority_version = xqt5 ); then - PKG_CHECK_MODULES([QT], [$qt5_modules], [QT_INCLUDES="$QT_CFLAGS"; have_qt=yes],[have_qt=no]) - elif test x$bitcoin_qt_want_version = xqt4 || ( test x$bitcoin_qt_want_version = xauto && test x$auto_priority_version = xqt4 ); then - PKG_CHECK_MODULES([QT], [$qt4_modules], [QT_INCLUDES="$QT_CFLAGS"; have_qt=yes], [have_qt=no]) - fi - - dnl qt version is set to 'auto' and the preferred version wasn't found. Now try the other. - if test x$have_qt = xno && test x$bitcoin_qt_want_version = xauto; then - if test x$auto_priority_version = x$qt5; then - PKG_CHECK_MODULES([QT], [$qt4_modules], [QT_INCLUDES="$QT_CFLAGS"; have_qt=yes; QT_LIB_PREFIX=Qt; bitcoin_qt_got_major_vers=4], [have_qt=no]) - else - PKG_CHECK_MODULES([QT], [$qt5_modules], [QT_INCLUDES="$QT_CFLAGS"; have_qt=yes; QT_LIB_PREFIX=Qt5; bitcoin_qt_got_major_vers=5], [have_qt=no]) - fi - fi - if test x$have_qt != xyes; then - have_qt=no - BITCOIN_QT_FAIL([Qt dependencies not found]) - fi - ]) - BITCOIN_QT_CHECK([ - PKG_CHECK_MODULES([QT_TEST], [${QT_LIB_PREFIX}Test], [QT_TEST_INCLUDES="$QT_TEST_CFLAGS"; have_qt_test=yes], [have_qt_test=no]) - if test x$use_dbus != xno; then - PKG_CHECK_MODULES([QT_DBUS], [${QT_LIB_PREFIX}DBus], [QT_DBUS_INCLUDES="$QT_DBUS_CFLAGS"; have_qt_dbus=yes], [have_qt_dbus=no]) - fi - ]) - ]) - true; dnl -]) - -dnl Internal. Find Qt libraries without using pkg-config. Version is deduced -dnl from the discovered headers. -dnl Inputs: bitcoin_qt_want_version (from --with-gui=). The version to use. -dnl If "auto", the version will be discovered by _BITCOIN_QT_CHECK_QT5. -dnl Outputs: All necessary QT_* variables are set. -dnl Outputs: bitcoin_qt_got_major_vers is set to "4" or "5". -dnl Outputs: have_qt_test and have_qt_dbus are set (if applicable) to yes|no. -AC_DEFUN([_BITCOIN_QT_FIND_LIBS_WITHOUT_PKGCONFIG],[ - TEMP_CPPFLAGS="$CPPFLAGS" - TEMP_LIBS="$LIBS" - BITCOIN_QT_CHECK([ - if test x$qt_include_path != x; then - QT_INCLUDES="-I$qt_include_path -I$qt_include_path/QtCore -I$qt_include_path/QtGui -I$qt_include_path/QtWidgets -I$qt_include_path/QtNetwork -I$qt_include_path/QtTest -I$qt_include_path/QtDBus" - CPPFLAGS="$QT_INCLUDES $CPPFLAGS" - fi - ]) - - BITCOIN_QT_CHECK([AC_CHECK_HEADER([QtPlugin],,BITCOIN_QT_FAIL(QtCore headers missing))]) - BITCOIN_QT_CHECK([AC_CHECK_HEADER([QApplication],, BITCOIN_QT_FAIL(QtGui headers missing))]) - BITCOIN_QT_CHECK([AC_CHECK_HEADER([QLocalSocket],, BITCOIN_QT_FAIL(QtNetwork headers missing))]) - - BITCOIN_QT_CHECK([ - if test x$bitcoin_qt_want_version = xauto; then - _BITCOIN_QT_CHECK_QT5 - fi - if test x$bitcoin_cv_qt5 = xyes || test x$bitcoin_qt_want_version = xqt5; then - QT_LIB_PREFIX=Qt5 - bitcoin_qt_got_major_vers=5 - else - QT_LIB_PREFIX=Qt - bitcoin_qt_got_major_vers=4 - fi - ]) - - BITCOIN_QT_CHECK([ - LIBS= - if test x$qt_lib_path != x; then - LIBS="$LIBS -L$qt_lib_path" - fi - - if test x$TARGET_OS = xwindows; then - AC_CHECK_LIB([imm32], [main],, BITCOIN_QT_FAIL(libimm32 not found)) - fi - ]) - - BITCOIN_QT_CHECK(AC_CHECK_LIB([z] ,[main],,AC_MSG_WARN([zlib not found. Assuming qt has it built-in]))) - BITCOIN_QT_CHECK(AC_CHECK_LIB([png] ,[main],,AC_MSG_WARN([libpng not found. Assuming qt has it built-in]))) - BITCOIN_QT_CHECK(AC_CHECK_LIB([jpeg] ,[main],,AC_MSG_WARN([libjpeg not found. Assuming qt has it built-in]))) - BITCOIN_QT_CHECK(AC_SEARCH_LIBS([pcre16_exec], [qtpcre pcre16],,AC_MSG_WARN([libpcre16 not found. Assuming qt has it built-in]))) - BITCOIN_QT_CHECK(AC_SEARCH_LIBS([hb_ot_tags_from_script] ,[qtharfbuzzng harfbuzz],,AC_MSG_WARN([libharfbuzz not found. Assuming qt has it built-in or support is disabled]))) - BITCOIN_QT_CHECK(AC_CHECK_LIB([${QT_LIB_PREFIX}Core] ,[main],,BITCOIN_QT_FAIL(lib$QT_LIB_PREFIXCore not found))) - BITCOIN_QT_CHECK(AC_CHECK_LIB([${QT_LIB_PREFIX}Gui] ,[main],,BITCOIN_QT_FAIL(lib$QT_LIB_PREFIXGui not found))) - BITCOIN_QT_CHECK(AC_CHECK_LIB([${QT_LIB_PREFIX}Network],[main],,BITCOIN_QT_FAIL(lib$QT_LIB_PREFIXNetwork not found))) - if test x$bitcoin_qt_got_major_vers = x5; then - BITCOIN_QT_CHECK(AC_CHECK_LIB([${QT_LIB_PREFIX}Widgets],[main],,BITCOIN_QT_FAIL(lib$QT_LIB_PREFIXWidgets not found))) - fi - QT_LIBS="$LIBS" - LIBS="$TEMP_LIBS" - - BITCOIN_QT_CHECK([ - LIBS= - if test x$qt_lib_path != x; then - LIBS="-L$qt_lib_path" - fi - AC_CHECK_LIB([${QT_LIB_PREFIX}Test], [main],, have_qt_test=no) - AC_CHECK_HEADER([QTest],, have_qt_test=no) - QT_TEST_LIBS="$LIBS" - if test x$use_dbus != xno; then - LIBS= - if test x$qt_lib_path != x; then - LIBS="-L$qt_lib_path" - fi - AC_CHECK_LIB([${QT_LIB_PREFIX}DBus], [main],, have_qt_dbus=no) - AC_CHECK_HEADER([QtDBus],, have_qt_dbus=no) - QT_DBUS_LIBS="$LIBS" - fi - ]) - CPPFLAGS="$TEMP_CPPFLAGS" - LIBS="$TEMP_LIBS" -]) - diff --git a/configure.ac b/configure.ac index 4f022fcc8..2098dc683 100644 --- a/configure.ac +++ b/configure.ac @@ -2,7 +2,7 @@ dnl require autoconf 2.60 (AS_ECHO/AS_ECHO_N) AC_PREREQ([2.60]) define(_CLIENT_VERSION_MAJOR, 1) define(_CLIENT_VERSION_MINOR, 0) -define(_CLIENT_VERSION_REVISION, 5) +define(_CLIENT_VERSION_REVISION, 8) define(_CLIENT_VERSION_BUILD, 50) define(_ZC_BUILD_VAL, m4_if(m4_eval(_CLIENT_VERSION_BUILD < 25), 1, m4_incr(_CLIENT_VERSION_BUILD), m4_eval(_CLIENT_VERSION_BUILD < 50), 1, m4_eval(_CLIENT_VERSION_BUILD - 24), m4_eval(_CLIENT_VERSION_BUILD == 50), 1, , m4_eval(_CLIENT_VERSION_BUILD - 50))) define(_CLIENT_VERSION_SUFFIX, m4_if(m4_eval(_CLIENT_VERSION_BUILD < 25), 1, _CLIENT_VERSION_REVISION-beta$1, m4_eval(_CLIENT_VERSION_BUILD < 50), 1, _CLIENT_VERSION_REVISION-rc$1, m4_eval(_CLIENT_VERSION_BUILD == 50), 1, _CLIENT_VERSION_REVISION, _CLIENT_VERSION_REVISION-$1))) @@ -82,6 +82,18 @@ AC_ARG_ENABLE([wallet], [enable_wallet=$enableval], [enable_wallet=yes]) +AC_ARG_ENABLE([mining], + [AS_HELP_STRING([--enable-mining], + [enable mining (default is yes)])], + [enable_mining=$enableval], + [enable_mining=yes]) + +AC_ARG_ENABLE([rust], + [AS_HELP_STRING([--enable-rust], + [enable rust (default is yes)])], + [enable_rust=$enableval], + [enable_rust=yes]) + AC_ARG_WITH([miniupnpc], [AS_HELP_STRING([--with-miniupnpc], [enable UPNP (default is yes if libminiupnpc is found)])], @@ -99,11 +111,6 @@ AC_ARG_ENABLE(tests, [use_tests=$enableval], [use_tests=yes]) -AC_ARG_ENABLE(gui-tests, - AS_HELP_STRING([--disable-gui-tests],[do not compile GUI tests (default is to compile if GUI and tests enabled)]), - [use_gui_tests=$enableval], - [use_gui_tests=$use_tests]) - AC_ARG_WITH([comparison-tool], AS_HELP_STRING([--with-comparison-tool],[path to java comparison tool (requires --enable-tests)]), [use_comparison_tool=$withval], @@ -114,12 +121,6 @@ AC_ARG_ENABLE([comparison-tool-reorg-tests], [use_comparison_tool_reorg_tests=$enableval], [use_comparison_tool_reorg_tests=no]) -AC_ARG_WITH([qrencode], - [AS_HELP_STRING([--with-qrencode], - [enable QR code support (default is yes if qt is enabled and libqrencode is found)])], - [use_qr=$withval], - [use_qr=auto]) - AC_ARG_ENABLE([hardening], [AS_HELP_STRING([--enable-hardening], [attempt to harden the resulting executables (default is yes)])], @@ -150,9 +151,21 @@ AC_ARG_ENABLE([glibc-back-compat], [use_glibc_compat=$enableval], [use_glibc_compat=no]) +AC_ARG_ENABLE([zmq], + [AS_HELP_STRING([--disable-zmq], + [disable ZMQ notifications])], + [use_zmq=$enableval], + [use_zmq=yes]) + AC_ARG_WITH([protoc-bindir],[AS_HELP_STRING([--with-protoc-bindir=BIN_DIR],[specify protoc bin path])], [protoc_bin_path=$withval], []) -# Enable debug +AC_ARG_ENABLE(man, + [AS_HELP_STRING([--disable-man], + [do not install man pages (default is to install)])],, + enable_man=yes) +AM_CONDITIONAL(ENABLE_MAN, test "$enable_man" != no) + +# Enable debug AC_ARG_ENABLE([debug], [AS_HELP_STRING([--enable-debug], [use debug compiler flags and macros (default is no)])], @@ -160,14 +173,15 @@ AC_ARG_ENABLE([debug], [enable_debug=no]) if test "x$enable_debug" = xyes; then + CPPFLAGS="$CPPFLAGS -DDEBUG -DDEBUG_LOCKORDER" if test "x$GCC" = xyes; then - CFLAGS="-g3 -O0 -DDEBUG" + CFLAGS="$CFLAGS -g3 -O0" fi - + if test "x$GXX" = xyes; then - CXXFLAGS="-g3 -O0 -DDEBUG" + CXXFLAGS="$CXXFLAGS -g3 -O0" fi -fi +fi ## TODO: Remove these hard-coded paths and flags. They are here for the sake of ## compatibility with the legacy buildsystem. @@ -175,7 +189,7 @@ fi if test "x$CXXFLAGS_overridden" = "xno"; then CXXFLAGS="$CXXFLAGS -Wall -Wextra -Wformat -Wformat-security -Wno-unused-parameter -Wno-self-assign" fi -CPPFLAGS="$CPPFLAGS -DBOOST_SPIRIT_THREADSAFE -DHAVE_BUILD_INFO -D__STDC_FORMAT_MACROS" +CPPFLAGS="$CPPFLAGS -DHAVE_BUILD_INFO -D__STDC_FORMAT_MACROS" AC_ARG_WITH([utils], [AS_HELP_STRING([--with-utils], @@ -282,7 +296,7 @@ dnl if test x$BREW = xbrew; then dnl in expected paths because they may conflict with system files. Ask dnl Homebrew where each one is located, then adjust paths accordingly. dnl It's safe to add these paths even if the functionality is disabled by - dnl the user (--without-wallet or --without-gui for example). + dnl the user (--without-wallet for example). dnl openssl_prefix=`$BREW --prefix openssl 2>/dev/null` dnl bdb_prefix=`$BREW --prefix berkeley-db4 2>/dev/null` @@ -534,12 +548,7 @@ if test x$use_upnp != xno; then ) fi -BITCOIN_QT_INIT - -dnl sets $bitcoin_enable_qt, $bitcoin_enable_qt_test, $bitcoin_enable_qt_dbus -BITCOIN_QT_CONFIGURE([$use_pkgconfig], [qt4]) - -if test x$build_bitcoin_utils$build_bitcoind$bitcoin_enable_qt$use_tests = xnononono; then +if test x$build_bitcoin_utils$build_bitcoind$use_tests = xnonono; then use_boost=no else use_boost=yes @@ -683,9 +692,21 @@ if test x$use_pkgconfig = xyes; then [ PKG_CHECK_MODULES([SSL], [libssl],, [AC_MSG_ERROR(openssl not found.)]) PKG_CHECK_MODULES([CRYPTO], [libcrypto],,[AC_MSG_ERROR(libcrypto not found.)]) - BITCOIN_QT_CHECK([PKG_CHECK_MODULES([PROTOBUF], [protobuf], [have_protobuf=yes], [BITCOIN_QT_FAIL(libprotobuf not found)])]) - if test x$use_qr != xno; then - BITCOIN_QT_CHECK([PKG_CHECK_MODULES([QR], [libqrencode], [have_qrencode=yes], [have_qrencode=no])]) + if test x$build_bitcoin_utils$build_bitcoind$bitcoin_enable_qt$use_tests != xnononono; then + PKG_CHECK_MODULES([EVENT], [libevent],, [AC_MSG_ERROR(libevent not found.)]) + if test x$TARGET_OS != xwindows; then + PKG_CHECK_MODULES([EVENT_PTHREADS], [libevent_pthreads],, [AC_MSG_ERROR(libevent_pthreads not found.)]) + fi + fi + + if test "x$use_zmq" = "xyes"; then + PKG_CHECK_MODULES([ZMQ],[libzmq >= 4], + [AC_DEFINE([ENABLE_ZMQ],[1],[Define to 1 to enable ZMQ functions])], + [AC_DEFINE([ENABLE_ZMQ],[0],[Define to 1 to enable ZMQ functions]) + AC_MSG_WARN([libzmq version 4.x or greater not found, disabling]) + use_zmq=no]) + else + AC_DEFINE_UNQUOTED([ENABLE_ZMQ],[0],[Define to 1 to enable ZMQ functions]) fi ] ) @@ -699,10 +720,35 @@ else AC_CHECK_HEADER([openssl/ssl.h],, AC_MSG_ERROR(libssl headers missing),) AC_CHECK_LIB([ssl], [main],SSL_LIBS=-lssl, AC_MSG_ERROR(libssl missing)) - BITCOIN_QT_CHECK(AC_CHECK_LIB([protobuf] ,[main],[PROTOBUF_LIBS=-lprotobuf], BITCOIN_QT_FAIL(libprotobuf not found))) - if test x$use_qr != xno; then - BITCOIN_QT_CHECK([AC_CHECK_LIB([qrencode], [main],[QR_LIBS=-lqrencode], [have_qrencode=no])]) - BITCOIN_QT_CHECK([AC_CHECK_HEADER([qrencode.h],, have_qrencode=no)]) + if test x$build_bitcoin_utils$build_bitcoind$bitcoin_enable_qt$use_tests != xnononono; then + AC_CHECK_HEADER([event2/event.h],, AC_MSG_ERROR(libevent headers missing),) + AC_CHECK_LIB([event],[main],EVENT_LIBS=-levent,AC_MSG_ERROR(libevent missing)) + if test x$TARGET_OS != xwindows; then + AC_CHECK_LIB([event_pthreads],[main],EVENT_PTHREADS_LIBS=-levent_pthreads,AC_MSG_ERROR(libevent_pthreads missing)) + fi + fi + + if test "x$use_zmq" = "xyes"; then + AC_CHECK_HEADER([zmq.h], + [AC_DEFINE([ENABLE_ZMQ],[1],[Define to 1 to enable ZMQ functions])], + [AC_MSG_WARN([zmq.h not found, disabling zmq support]) + use_zmq=no + AC_DEFINE([ENABLE_ZMQ],[0],[Define to 1 to enable ZMQ functions])]) + AC_CHECK_LIB([zmq],[zmq_ctx_shutdown],ZMQ_LIBS=-lzmq, + [AC_MSG_WARN([libzmq >= 4.0 not found, disabling zmq support]) + use_zmq=no + AC_DEFINE([ENABLE_ZMQ],[0],[Define to 1 to enable ZMQ functions])]) + else + AC_DEFINE_UNQUOTED([ENABLE_ZMQ],[0],[Define to 1 to enable ZMQ functions]) + fi + + if test "x$use_zmq" = "xyes"; then + dnl Assume libzmq was built for static linking + case $host in + *mingw*) + ZMQ_CFLAGS="$ZMQ_CFLAGS -DZMQ_STATIC" + ;; + esac fi fi @@ -730,7 +776,12 @@ CPPFLAGS="-I$LIBSNARK_INCDIR $CPPFLAGS" AC_CHECK_HEADER([libsnark/gadgetlib1/gadget.hpp],,AC_MSG_ERROR(libsnark headers missing)) AC_CHECK_LIB([snark],[main],LIBSNARK_LIBS=-lsnark, [AC_MSG_ERROR(libsnark missing)], [-lgmpxx]) -LIBZCASH_LIBS="-lsnark -lgmp -lgmpxx -lboost_system-mt -lcrypto -lsodium" +RUST_LIBS="" +if test x$enable_rust != xno; then + RUST_LIBS="-lrustzcash" +fi + +LIBZCASH_LIBS="-lsnark -lgmp -lgmpxx -lboost_system-mt -lcrypto -lsodium -fopenmp $RUST_LIBS" CXXFLAGS_TEMP="$CXXFLAGS" LIBS_TEMP="$LIBS" @@ -740,8 +791,6 @@ AC_CHECK_HEADER([openssl/ec.h],, AC_MSG_ERROR(OpenSSL ec header missing),) CXXFLAGS="$CXXFLAGS_TEMP" LIBS="$LIBS_TEMP" -BITCOIN_QT_PATH_PROGS([PROTOC], [protoc],$protoc_bin_path) - AC_MSG_CHECKING([whether to build bitcoind]) AM_CONDITIONAL([BUILD_BITCOIND], [test x$build_bitcoind = xyes]) AC_MSG_RESULT($build_bitcoind) @@ -790,6 +839,26 @@ else AC_MSG_RESULT(no) fi +dnl enable mining +AC_MSG_CHECKING([if mining should be enabled]) +if test x$enable_mining != xno; then + AC_MSG_RESULT(yes) + AC_DEFINE(ENABLE_MINING, 1, [Define to 1 to enable mining functions]) + +else + AC_MSG_RESULT(no) +fi + +dnl enable rust +AC_MSG_CHECKING([if rust should be enabled]) +if test x$enable_rust != xno; then + AC_MSG_RESULT(yes) + AC_DEFINE(ENABLE_RUST, 1, [Define to 1 to enable Rust language dependent functions]) + +else + AC_MSG_RESULT(no) +fi + dnl enable upnp support AC_MSG_CHECKING([whether to build with support for UPnP]) if test x$have_miniupnpc = xno; then @@ -817,45 +886,7 @@ else fi fi -dnl these are only used when qt is enabled -BUILD_TEST_QT="" -if test x$bitcoin_enable_qt != xno; then - dnl enable dbus support - AC_MSG_CHECKING([whether to build GUI with support for D-Bus]) - if test x$bitcoin_enable_qt_dbus != xno; then - AC_DEFINE([USE_DBUS],[1],[Define if dbus support should be compiled in]) - fi - AC_MSG_RESULT($bitcoin_enable_qt_dbus) - - dnl enable qr support - AC_MSG_CHECKING([whether to build GUI with support for QR codes]) - if test x$have_qrencode = xno; then - if test x$use_qr = xyes; then - AC_MSG_ERROR("QR support requested but cannot be built. use --without-qrencode") - fi - AC_MSG_RESULT(no) - else - if test x$use_qr != xno; then - AC_MSG_RESULT(yes) - AC_DEFINE([USE_QRCODE],[1],[Define if QR support should be compiled in]) - use_qr=yes - else - AC_MSG_RESULT(no) - fi - fi - - if test x$XGETTEXT = x; then - AC_MSG_WARN("xgettext is required to update qt translations") - fi - - AC_MSG_CHECKING([whether to build test_bitcoin-qt]) - if test x$use_gui_tests$bitcoin_enable_qt_test = xyesyes; then - AC_MSG_RESULT([yes]) - BUILD_TEST_QT="yes" - else - AC_MSG_RESULT([no]) - fi -fi +AM_CONDITIONAL([ENABLE_ZMQ], [test "x$use_zmq" = "xyes"]) AC_MSG_CHECKING([whether to build test_bitcoin]) if test x$use_tests = xyes; then @@ -873,18 +904,17 @@ else AC_MSG_RESULT([no]) fi -if test x$build_bitcoin_utils$build_bitcoin_libs$build_bitcoind$bitcoin_enable_qt$use_tests = xnonononono; then - AC_MSG_ERROR([No targets! Please specify at least one of: --with-utils --with-libs --with-daemon --with-gui or --enable-tests]) +if test x$build_bitcoin_utils$build_bitcoin_libs$build_bitcoind$use_tests = xnononono; then + AC_MSG_ERROR([No targets! Please specify at least one of: --with-utils --with-libs --with-daemon or --enable-tests]) fi AM_CONDITIONAL([TARGET_DARWIN], [test x$TARGET_OS = xdarwin]) AM_CONDITIONAL([BUILD_DARWIN], [test x$BUILD_OS = xdarwin]) AM_CONDITIONAL([TARGET_WINDOWS], [test x$TARGET_OS = xwindows]) AM_CONDITIONAL([ENABLE_WALLET],[test x$enable_wallet = xyes]) +AM_CONDITIONAL([ENABLE_MINING],[test x$enable_mining = xyes]) +AM_CONDITIONAL([ENABLE_RUST],[test x$enable_rust = xyes]) AM_CONDITIONAL([ENABLE_TESTS],[test x$BUILD_TEST = xyes]) -AM_CONDITIONAL([ENABLE_QT],[test x$bitcoin_enable_qt = xyes]) -AM_CONDITIONAL([ENABLE_QT_TESTS],[test x$BUILD_TEST_QT = xyes]) -AM_CONDITIONAL([USE_QRCODE], [test x$use_qr = xyes]) AM_CONDITIONAL([USE_LCOV],[test x$use_lcov = xyes]) AM_CONDITIONAL([USE_COMPARISON_TOOL],[test x$use_comparison_tool != xno]) AM_CONDITIONAL([USE_COMPARISON_TOOL_REORG_TESTS],[test x$use_comparison_tool_reorg_test != xno]) @@ -907,7 +937,6 @@ AC_SUBST(COPYRIGHT_YEAR, _COPYRIGHT_YEAR) AC_SUBST(RELDFLAGS) AC_SUBST(LIBTOOL_APP_LDFLAGS) AC_SUBST(USE_UPNP) -AC_SUBST(USE_QRCODE) AC_SUBST(BOOST_LIBS) AC_SUBST(TESTDEFS) AC_SUBST(LEVELDB_TARGET_FLAGS) @@ -917,7 +946,7 @@ AC_SUBST(GMP_LIBS) AC_SUBST(GMPXX_LIBS) AC_SUBST(LIBSNARK_LIBS) AC_SUBST(LIBZCASH_LIBS) -AC_CONFIG_FILES([Makefile src/Makefile share/setup.nsi share/qt/Info.plist src/test/buildenv.py]) +AC_CONFIG_FILES([Makefile src/Makefile doc/man/Makefile share/setup.nsi src/test/buildenv.py]) AC_CONFIG_FILES([qa/pull-tester/run-bitcoind-for-test.sh],[chmod +x qa/pull-tester/run-bitcoind-for-test.sh]) AC_CONFIG_FILES([qa/pull-tester/tests-config.sh],[chmod +x qa/pull-tester/tests-config.sh]) @@ -945,7 +974,7 @@ unset PKG_CONFIG_LIBDIR PKG_CONFIG_LIBDIR="$PKGCONFIG_LIBDIR_TEMP" ac_configure_args="${ac_configure_args} --disable-shared --with-pic --with-bignum=no" -AC_CONFIG_SUBDIRS([src/secp256k1]) +AC_CONFIG_SUBDIRS([src/secp256k1 src/univalue]) AC_OUTPUT diff --git a/contrib/README.md b/contrib/README.md index 7d4b91e88..70378d100 100644 --- a/contrib/README.md +++ b/contrib/README.md @@ -1,3 +1,5 @@ +*** Warning: This document has not been updated for Zcash and may be inaccurate. *** + Wallet Tools --------------------- diff --git a/contrib/bitcoin-qt.pro b/contrib/bitcoin-qt.pro deleted file mode 100644 index 3a72d10f4..000000000 --- a/contrib/bitcoin-qt.pro +++ /dev/null @@ -1,21 +0,0 @@ -FORMS += \ - ../src/qt/forms/aboutdialog.ui \ - ../src/qt/forms/addressbookpage.ui \ - ../src/qt/forms/askpassphrasedialog.ui \ - ../src/qt/forms/coincontroldialog.ui \ - ../src/qt/forms/editaddressdialog.ui \ - ../src/qt/forms/helpmessagedialog.ui \ - ../src/qt/forms/intro.ui \ - ../src/qt/forms/openuridialog.ui \ - ../src/qt/forms/optionsdialog.ui \ - ../src/qt/forms/overviewpage.ui \ - ../src/qt/forms/receivecoinsdialog.ui \ - ../src/qt/forms/receiverequestdialog.ui \ - ../src/qt/forms/rpcconsole.ui \ - ../src/qt/forms/sendcoinsdialog.ui \ - ../src/qt/forms/sendcoinsentry.ui \ - ../src/qt/forms/signverifymessagedialog.ui \ - ../src/qt/forms/transactiondescdialog.ui \ - -RESOURCES += \ - ../src/qt/bitcoin.qrc diff --git a/contrib/bitcoind.bash-completion b/contrib/bitcoind.bash-completion index 378738877..104365024 100644 --- a/contrib/bitcoind.bash-completion +++ b/contrib/bitcoind.bash-completion @@ -1,5 +1,6 @@ -# bash programmable completion for bitcoind(1) and bitcoin-qt(1) -# Copyright (c) 2012-2016 The Bitcoin Core developers +# bash programmable completion for zcashd(1) +# Copyright (c) 2012-2017 The Bitcoin Core developers +# Copyright (c) 2016-2017 The Zcash developers # Distributed under the MIT software license, see the accompanying # file COPYING or http://www.opensource.org/licenses/mit-license.php. @@ -7,7 +8,7 @@ _zcashd() { local cur prev words=() cword local bitcoind - # save and use original argument to invoke bitcoind for -help + # save and use original argument to invoke zcashd for -help # it might not be in $PATH bitcoind="$1" @@ -15,7 +16,7 @@ _zcashd() { _get_comp_words_by_ref -n = cur prev words cword case "$cur" in - -conf=*|-pid=*|-loadblock=*|-rootcertificates=*|-rpccookiefile=*|-wallet=*|-rpcsslcertificatechainfile=*|-rpcsslprivatekeyfile=*) + -conf=*|-pid=*|-loadblock=*|-rpccookiefile=*|-wallet=*) cur="${cur#*=}" _filedir return 0 diff --git a/contrib/debian/changelog b/contrib/debian/changelog index ef0701804..c400dca73 100644 --- a/contrib/debian/changelog +++ b/contrib/debian/changelog @@ -1,8 +1,32 @@ +zcash (1.0.8) jessie; urgency=medium + + * 1.0.8 release. + + -- Zcash Company Mon, 27 Mar 2017 21:30:07 +0100 + +zcash (1.0.7+1) jessie; urgency=medium + + * 1.0.7-1 release. + + -- Zcash Company Wed, 08 Mar 2017 13:51:11 -0800 + +zcash (1.0.7) jessie; urgency=medium + + * 1.0.7 release. + + -- Zcash Company Fri, 03 Mar 2017 20:55:04 -0800 + +zcash (1.0.6) jessie; urgency=medium + + * 1.0.6 release. + + -- Zcash Company Fri, 10 Feb 2017 10:23:00 -0800 + zcash (1.0.5) jessie; urgency=medium * 1.0.5 release. - -- Zcash Company Thu, 19 Jan 2016 19:23:40 -0700 + -- Zcash Company Thu, 19 Jan 2017 19:23:40 -0700 zcash (1.0.4) jessie; urgency=medium diff --git a/contrib/debian/copyright b/contrib/debian/copyright index 04daeb024..aea954e07 100644 --- a/contrib/debian/copyright +++ b/contrib/debian/copyright @@ -4,71 +4,13 @@ Upstream-Contact: Zcash Company Source: https://github.com/zcash/zcash Files: * -Copyright: 2016, The Zcash developers - 2009-2015, Bitcoin Core developers +Copyright: 2016-2017, The Zcash developers + 2009-2017, Bitcoin Core developers License: Expat Comment: The Bitcoin Core developers encompasses the current developers listed on bitcoin.org, as well as the numerous contributors to the project. The Zcash developers are listed at https://z.cash/team.html. -Files: src/json/* -Copyright: 2007-2009, John W. Wilkinson -License: Expat - -Files: src/qt/res/icons/clock*.png, src/qt/res/icons/tx*.png, - src/qt/res/src/*.svg -Copyright: Wladimir van der Laan -License: Expat - -Files: src/qt/res/icons/address-book.png, src/qt/res/icons/export.png, - src/qt/res/icons/history.png, src/qt/res/icons/key.png, - src/qt/res/icons/lock_*.png, src/qt/res/icons/overview.png, - src/qt/res/icons/receive.png, src/qt/res/icons/send.png, - src/qt/res/icons/synced.png, src/qt/res/icons/filesave.png -Copyright: David Vignoni (david@icon-king.com) - ICON KING - www.icon-king.com -License: LGPL -Comment: NUVOLA ICON THEME for KDE 3.x - Original icons: kaddressbook, klipper_dock, view-list-text, - key-password, encrypted/decrypted, go-home, go-down, - go-next, dialog-ok - Site: http://www.icon-king.com/projects/nuvola/ - -Files: src/qt/res/icons/connect*.png -Copyright: schollidesign -License: GPL-3+ -Comment: Icon Pack: Human-O2 - Site: http://findicons.com/icon/93743/blocks_gnome_netstatus_0 - -Files: src/qt/res/icons/transaction*.png -Copyright: md2k7 -License: Expat -Comment: Site: https://bitcointalk.org/index.php?topic=15276.0 - -Files: src/qt/res/icons/configure.png, src/qt/res/icons/quit.png, - src/qt/res/icons/editcopy.png, src/qt/res/icons/editpaste.png, - src/qt/res/icons/add.png, src/qt/res/icons/edit.png, - src/qt/res/icons/remove.png -Copyright: http://www.everaldo.com -License: LGPL -Comment: Icon Pack: Crystal SVG - -Files: src/qt/res/icons/bitcoin.png, src/qt/res/icons/toolbar.png -Copyright: Bitboy (optimized for 16x16 by Wladimir van der Laan) -License: PUB-DOM -Comment: Site: https://bitcointalk.org/?topic=1756.0 - -Files: scripts/img/reload.xcf, src/qt/res/movies/*.png -Copyright: Everaldo (Everaldo Coelho) -License: GPL-3+ -Comment: Icon Pack: Kids - Site: http://findicons.com/icon/17102/reload?id=17102 - -Files: src/qt/res/images/splash2.jpg -License: PUB-DOM -Copyright: Crobbo (forum) -Comment: Site: https://bitcointalk.org/index.php?topic=32273.0 - Files: depends/sources/libsodium-*.tar.gz Copyright: 2013-2016 Frank Denis License: ISC @@ -100,6 +42,19 @@ Files: depends/sources/miniupnpc-*.tar.gz Copyright: 2005-2016 Thomas BERNARD License: BSD-3clause +Files: depends/sources/zeromq-*.tar.gz +Copyright: + 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. + 2007-2014 iMatix Corporation + 2009-2011 250bpm s.r.o. + 2010-2011 Miru Limited + 2011 VMware, Inc. + 2012 Spotify AB + 2013 Ericsson AB + 2014 AppDynamics Inc. + 2015-2016 Brocade Communications Systems Inc. +License: LGPL-with-ZeroMQ-exception + Files: depends/sources/google*.tar.gz Copyright: 2008 Google Inc. License: BSD-3clause-Google @@ -1093,50 +1048,46 @@ License: ISC ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -License: GPL-2+ - This program is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the - Free Software Foundation; either version 2, or (at your option) any - later version. - . - This program is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. -Comment: - On Debian systems the GNU General Public License (GPL) version 2 is - located in '/usr/share/common-licenses/GPL-2'. - . - You should have received a copy of the GNU General Public License along - with this program. If not, see . - -License: GPL-3+ - Permission is granted to copy, distribute and/or modify this document - under the terms of the GNU General Public License, Version 3 or any - later version published by the Free Software Foundation. -Comment: - On Debian systems the GNU General Public License (GPL) version 3 is - located in '/usr/share/common-licenses/GPL-3'. - . - You should have received a copy of the GNU General Public License along - with this program. If not, see . - License: LGPL - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + . + On Debian systems the GNU Lesser General Public License (LGPL) is + located in '/usr/share/common-licenses/LGPL'. . This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. Comment: - On Debian systems the GNU Lesser General Public License (LGPL) is - located in '/usr/share/common-licenses/LGPL'. - . You should have received a copy of the GNU General Public License along with this program. If not, see . -License: PUB-DOM - This work is in the public domain. +License: LGPL-with-ZeroMQ-exception + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + . + On Debian systems the GNU Lesser General Public License (LGPL) is + located in '/usr/share/common-licenses/LGPL'. + . + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + -------------------------------------------------------------------------------- + SPECIAL EXCEPTION GRANTED BY COPYRIGHT HOLDERS + . + As a special exception, copyright holders give you permission to link this + library with independent modules to produce an executable, regardless of + the license terms of these independent modules, and to copy and distribute + the resulting executable under terms of your choice, provided that you also + meet, for each linked independent module, the terms and conditions of + the license of that module. An independent module is a module which is not + derived from or based on this library. If you modify this library, you must + extend this exception to your version of the library. + + Note: this exception relieves you of any obligations under sections 4 and 5 + of this license, and section 6 of the GNU General Public License. +Comment: + You should have received a copy of the GNU General Public License + along with this program. If not, see . diff --git a/contrib/debian/examples/zcash.conf b/contrib/debian/examples/zcash.conf index cbfdf4ee7..0293500d0 100644 --- a/contrib/debian/examples/zcash.conf +++ b/contrib/debian/examples/zcash.conf @@ -73,7 +73,7 @@ # How many seconds zcash will wait for a complete RPC HTTP request. # after the HTTP connection is established. -#rpctimeout=30 +#rpcclienttimeout=30 # By default, only RPC connections from localhost are allowed. # Specify as many rpcallowip= settings as you like to allow connections from other hosts, @@ -95,15 +95,6 @@ # running on another host using this option: #rpcconnect=127.0.0.1 -# Use Secure Sockets Layer (also known as TLS or HTTPS) to communicate -# with Zcash -server or zcashd -#rpcssl=1 - -# OpenSSL settings used when rpcssl=1 -#rpcsslciphers=TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH -#rpcsslcertificatechainfile=server.cert -#rpcsslprivatekeyfile=server.pem - # Transaction Fee # Send transactions as zero-fee transactions if possible (default: 0) diff --git a/contrib/devtools/README.md b/contrib/devtools/README.md index f90afa7f2..e16e6b5b0 100644 --- a/contrib/devtools/README.md +++ b/contrib/devtools/README.md @@ -81,6 +81,12 @@ It will do the following automatically: See doc/translation-process.md for more information. +gen-manpages.sh +=============== + +A small script to automatically create manpages in ../../doc/man by running the release binaries with the -help option. +This requires help2man which can be found at: https://www.gnu.org/software/help2man/ + git-subtree-check.sh ==================== diff --git a/contrib/devtools/gen-manpages.sh b/contrib/devtools/gen-manpages.sh new file mode 100755 index 000000000..245714814 --- /dev/null +++ b/contrib/devtools/gen-manpages.sh @@ -0,0 +1,28 @@ +#!/bin/sh + +TOPDIR=${TOPDIR:-$(git rev-parse --show-toplevel)} +SRCDIR=${SRCDIR:-$TOPDIR/src} +MANDIR=${MANDIR:-$TOPDIR/doc/man} + +ZCASHD=${ZCASHD:-$SRCDIR/zcashd} +ZCASHCLI=${ZCASHCLI:-$SRCDIR/zcash-cli} +ZCASHTX=${ZCASHTX:-$SRCDIR/zcash-tx} + +[ ! -x $ZCASHD ] && echo "$ZCASHD not found or not executable." && exit 1 + +# The autodetected version git tag can screw up manpage output a little bit +ZECVER=($($ZCASHCLI --version | head -n1 | awk -F'[ -]' '{ print $5, $6 }')) + +# Create a footer file with copyright content. +# This gets autodetected fine for zcashd if --version-string is not set, +# but has different outcomes for zcash-cli. +echo "[COPYRIGHT]" > footer.h2m +$ZCASHD --version | sed -n '1!p' >> footer.h2m + +for cmd in $ZCASHD $ZCASHCLI $ZCASHTX; do + cmdname="${cmd##*/}" + help2man -N --version-string=${ZECVER[0]} --include=footer.h2m -o ${MANDIR}/${cmdname}.1 ${cmd} + sed -i "s/\\\-${ZECVER[1]}//g" ${MANDIR}/${cmdname}.1 +done + +rm -f footer.h2m diff --git a/contrib/devtools/symbol-check.py b/contrib/devtools/symbol-check.py index 4ad5136f7..900a80dcf 100755 --- a/contrib/devtools/symbol-check.py +++ b/contrib/devtools/symbol-check.py @@ -53,21 +53,17 @@ READELF_CMD = os.getenv('READELF', '/usr/bin/readelf') CPPFILT_CMD = os.getenv('CPPFILT', '/usr/bin/c++filt') # Allowed NEEDED libraries ALLOWED_LIBRARIES = { -# bitcoind and bitcoin-qt +# zcashd 'libgcc_s.so.1', # GCC base support 'libc.so.6', # C library +'libstdc++.so.6', # C++ standard library 'libpthread.so.0', # threading 'libanl.so.1', # DNS resolve 'libm.so.6', # math library 'librt.so.1', # real-time (clock) +'libgomp.so.1', # OpenMP support library 'ld-linux-x86-64.so.2', # 64-bit dynamic linker 'ld-linux.so.2', # 32-bit dynamic linker -# bitcoin-qt only -'libX11-xcb.so.1', # part of X11 -'libX11.so.6', # part of X11 -'libxcb.so.1', # part of X11 -'libfontconfig.so.1', # font support -'libfreetype.so.6', # font parsing 'libdl.so.2' # programming interface to dynamic linker } diff --git a/contrib/devtools/update-translations.py b/contrib/devtools/update-translations.py deleted file mode 100755 index f955e4a1f..000000000 --- a/contrib/devtools/update-translations.py +++ /dev/null @@ -1,186 +0,0 @@ -#!/usr/bin/python -# Copyright (c) 2014 Wladimir J. van der Laan -# Distributed under the MIT software license, see the accompanying -# file COPYING or http://www.opensource.org/licenses/mit-license.php. -''' -Run this script from the root of the repository to update all translations from -transifex. -It will do the following automatically: - -- fetch all translations using the tx tool -- post-process them into valid and committable format - - remove invalid control characters - - remove location tags (makes diffs less noisy) - -TODO: -- auto-add new translations to the build system according to the translation process -''' -from __future__ import division, print_function -import subprocess -import re -import sys -import os -import io -import xml.etree.ElementTree as ET - -# Name of transifex tool -TX = 'tx' -# Name of source language file -SOURCE_LANG = 'bitcoin_en.ts' -# Directory with locale files -LOCALE_DIR = 'src/qt/locale' - -def check_at_repository_root(): - if not os.path.exists('.git'): - print('No .git directory found') - print('Execute this script at the root of the repository', file=sys.stderr) - exit(1) - -def fetch_all_translations(): - if subprocess.call([TX, 'pull', '-f']): - print('Error while fetching translations', file=sys.stderr) - exit(1) - -def find_format_specifiers(s): - '''Find all format specifiers in a string.''' - pos = 0 - specifiers = [] - while True: - percent = s.find('%', pos) - if percent < 0: - break - specifiers.append(s[percent+1]) - pos = percent+2 - return specifiers - -def split_format_specifiers(specifiers): - '''Split format specifiers between numeric (Qt) and others (strprintf)''' - numeric = [] - other = [] - for s in specifiers: - if s in {'1','2','3','4','5','6','7','8','9'}: - numeric.append(s) - else: - other.append(s) - - # numeric (Qt) can be present in any order, others (strprintf) must be in specified order - return set(numeric),other - -def sanitize_string(s): - '''Sanitize string for printing''' - return s.replace('\n',' ') - -def check_format_specifiers(source, translation, errors): - source_f = split_format_specifiers(find_format_specifiers(source)) - # assert that no source messages contain both Qt and strprintf format specifiers - # if this fails, go change the source as this is hacky and confusing! - assert(not(source_f[0] and source_f[1])) - try: - translation_f = split_format_specifiers(find_format_specifiers(translation)) - except IndexError: - errors.append("Parse error in translation '%s'" % sanitize_string(translation)) - return False - else: - if source_f != translation_f: - errors.append("Mismatch between '%s' and '%s'" % (sanitize_string(source), sanitize_string(translation))) - return False - return True - -def all_ts_files(suffix=''): - for filename in os.listdir(LOCALE_DIR): - # process only language files, and do not process source language - if not filename.endswith('.ts'+suffix) or filename == SOURCE_LANG+suffix: - continue - if suffix: # remove provided suffix - filename = filename[0:-len(suffix)] - filepath = os.path.join(LOCALE_DIR, filename) - yield(filename, filepath) - -FIX_RE = re.compile(b'[\x00-\x09\x0b\x0c\x0e-\x1f]') -def remove_invalid_characters(s): - '''Remove invalid characters from translation string''' - return FIX_RE.sub(b'', s) - -# Override cdata escape function to make our output match Qt's (optional, just for cleaner diffs for -# comparison, disable by default) -_orig_escape_cdata = None -def escape_cdata(text): - text = _orig_escape_cdata(text) - text = text.replace("'", ''') - text = text.replace('"', '"') - return text - -def postprocess_translations(reduce_diff_hacks=False): - print('Checking and postprocessing...') - - if reduce_diff_hacks: - global _orig_escape_cdata - _orig_escape_cdata = ET._escape_cdata - ET._escape_cdata = escape_cdata - - for (filename,filepath) in all_ts_files(): - os.rename(filepath, filepath+'.orig') - - have_errors = False - for (filename,filepath) in all_ts_files('.orig'): - # pre-fixups to cope with transifex output - parser = ET.XMLParser(encoding='utf-8') # need to override encoding because 'utf8' is not understood only 'utf-8' - with open(filepath + '.orig', 'rb') as f: - data = f.read() - # remove control characters; this must be done over the entire file otherwise the XML parser will fail - data = remove_invalid_characters(data) - tree = ET.parse(io.BytesIO(data), parser=parser) - - # iterate over all messages in file - root = tree.getroot() - for context in root.findall('context'): - for message in context.findall('message'): - numerus = message.get('numerus') == 'yes' - source = message.find('source').text - translation_node = message.find('translation') - # pick all numerusforms - if numerus: - translations = [i.text for i in translation_node.findall('numerusform')] - else: - translations = [translation_node.text] - - for translation in translations: - if translation is None: - continue - errors = [] - valid = check_format_specifiers(source, translation, errors) - - for error in errors: - print('%s: %s' % (filename, error)) - - if not valid: # set type to unfinished and clear string if invalid - translation_node.clear() - translation_node.set('type', 'unfinished') - have_errors = True - - # Remove location tags - for location in message.findall('location'): - message.remove(location) - - # Remove entire message if it is an unfinished translation - if translation_node.get('type') == 'unfinished': - context.remove(message) - - # write fixed-up tree - # if diff reduction requested, replace some XML to 'sanitize' to qt formatting - if reduce_diff_hacks: - out = io.BytesIO() - tree.write(out, encoding='utf-8') - out = out.getvalue() - out = out.replace(b' />', b'/>') - with open(filepath, 'wb') as f: - f.write(out) - else: - tree.write(filepath, encoding='utf-8') - return have_errors - -if __name__ == '__main__': - check_at_repository_root() - fetch_all_translations() - postprocess_translations() - diff --git a/contrib/gitian-descriptors/gitian-linux.yml b/contrib/gitian-descriptors/gitian-linux.yml index b5a7c2cb7..90c21be45 100644 --- a/contrib/gitian-descriptors/gitian-linux.yml +++ b/contrib/gitian-descriptors/gitian-linux.yml @@ -1,5 +1,5 @@ --- -name: "zcash-1.0.5" +name: "zcash-1.0.8" enable_cache: true distro: "debian" suites: @@ -31,8 +31,8 @@ files: [] script: | WRAP_DIR=$HOME/wrapped HOSTS="x86_64-unknown-linux-gnu" - CONFIGFLAGS="--enable-glibc-back-compat --enable-reduce-exports --disable-bench --disable-gui-tests --with-gui=no --enable-hardening" - MAKEOPTS="V=1 NO_QT=1" + CONFIGFLAGS="--enable-glibc-back-compat --enable-reduce-exports --disable-bench --enable-hardening" + MAKEOPTS="V=1" FAKETIME_HOST_PROGS="" FAKETIME_PROGS="date ar ranlib nm strip objcopy" HOST_CFLAGS="-fwrapv -fno-strict-aliasing -Werror -g" @@ -134,4 +134,3 @@ script: | mv $SOURCEDIST $OUTDIR/src mv ${OUTDIR}/${DISTNAME}-x86_64-*-debug.tar.gz ${OUTDIR}/${DISTNAME}-linux64-debug.tar.gz mv ${OUTDIR}/${DISTNAME}-x86_64-*.tar.gz ${OUTDIR}/${DISTNAME}-linux64.tar.gz - diff --git a/contrib/gitian-descriptors/gitian-osx.yml b/contrib/gitian-descriptors/gitian-osx.yml index bc8527039..794a82af8 100644 --- a/contrib/gitian-descriptors/gitian-osx.yml +++ b/contrib/gitian-descriptors/gitian-osx.yml @@ -28,7 +28,7 @@ files: script: | WRAP_DIR=$HOME/wrapped HOSTS="x86_64-apple-darwin11" - CONFIGFLAGS="--enable-reduce-exports --disable-bench --disable-gui-tests GENISOIMAGE=$WRAP_DIR/genisoimage" + CONFIGFLAGS="--enable-reduce-exports --disable-bench GENISOIMAGE=$WRAP_DIR/genisoimage" FAKETIME_HOST_PROGS="" FAKETIME_PROGS="ar ranlib date dmg genisoimage" diff --git a/contrib/gitian-descriptors/gitian-win.yml b/contrib/gitian-descriptors/gitian-win.yml index 1e954f58f..b08bd9c3b 100644 --- a/contrib/gitian-descriptors/gitian-win.yml +++ b/contrib/gitian-descriptors/gitian-win.yml @@ -27,7 +27,7 @@ files: [] script: | WRAP_DIR=$HOME/wrapped HOSTS="x86_64-w64-mingw32 i686-w64-mingw32" - CONFIGFLAGS="--enable-reduce-exports --disable-bench --disable-gui-tests" + CONFIGFLAGS="--enable-reduce-exports --disable-bench" FAKETIME_HOST_PROGS="g++ ar ranlib nm windres strip objcopy" FAKETIME_PROGS="date makensis zip" HOST_CFLAGS="-O2 -g" diff --git a/contrib/init/bitcoind.openrc b/contrib/init/bitcoind.openrc index a94f03680..eda1a96fb 100644 --- a/contrib/init/bitcoind.openrc +++ b/contrib/init/bitcoind.openrc @@ -32,7 +32,11 @@ required_files="${BITCOIND_CONFIGFILE}" start_stop_daemon_args="-u ${BITCOIND_USER} \ -N ${BITCOIND_NICE} -w 2000" pidfile="${BITCOIND_PIDFILE}" -retry=60 + +# The retry schedule to use when stopping the daemon. Could be either +# a timeout in seconds or multiple signal/timeout pairs (like +# "SIGKILL/180 SIGTERM/300") +retry="${BITCOIND_SIGTERM_TIMEOUT}" depend() { need localmount net diff --git a/contrib/init/bitcoind.openrcconf b/contrib/init/bitcoind.openrcconf index d8d7f5833..0cbff6d30 100644 --- a/contrib/init/bitcoind.openrcconf +++ b/contrib/init/bitcoind.openrcconf @@ -25,3 +25,9 @@ # Additional options (avoid -conf and -datadir, use flags above) BITCOIND_OPTS="-disablewallet" +# The timeout in seconds OpenRC will wait for bitcoind to terminate +# after a SIGTERM has been raised. +# Note that this will be mapped as argument to start-stop-daemon's +# '--retry' option, which means you can specify a retry schedule +# here. For more information see man 8 start-stop-daemon. +BITCOIND_SIGTERM_TIMEOUT=60 diff --git a/contrib/linearize/README.md b/contrib/linearize/README.md index 157586e4d..06f278f3b 100644 --- a/contrib/linearize/README.md +++ b/contrib/linearize/README.md @@ -3,7 +3,7 @@ Construct a linear, no-fork, best version of the blockchain. ## Step 1: Download hash list - $ ./linearize-hashes.py linearize.cfg > hashlist.txt + $ ./linearize-hashes.py linearize.cfg > hashlist.txt Required configuration file settings for linearize-hashes: * RPC: rpcuser, rpcpassword @@ -14,7 +14,7 @@ Optional config file setting for linearize-hashes: ## Step 2: Copy local block data - $ ./linearize-data.py linearize.cfg + $ ./linearize-data.py linearize.cfg Required configuration file settings: * "input": bitcoind blocks/ directory containing blkNNNNN.dat @@ -26,7 +26,7 @@ output. Optional config file setting for linearize-data: * "netmagic": network magic number -* "max_out_sz": maximum output file size (default 1000*1000*1000) +* "max_out_sz": maximum output file size (default `1000*1000*1000`) * "split_timestamp": Split files when a new month is first seen, in addition to reaching a maximum file size. * "file_timestamp": Set each file's last-modified time to that of the diff --git a/contrib/linearize/linearize-data.py b/contrib/linearize/linearize-data.py index 7947c6bf7..0f6fde2a6 100755 --- a/contrib/linearize/linearize-data.py +++ b/contrib/linearize/linearize-data.py @@ -12,6 +12,7 @@ import json import struct import re import os +import os.path import base64 import httplib import sys @@ -115,19 +116,20 @@ class BlockDataCopier: self.setFileTime = True if settings['split_timestamp'] != 0: self.timestampSplit = True - # Extents and cache for out-of-order blocks + # Extents and cache for out-of-order blocks self.blockExtents = {} self.outOfOrderData = {} self.outOfOrderSize = 0 # running total size for items in outOfOrderData def writeBlock(self, inhdr, blk_hdr, rawblock): - if not self.fileOutput and ((self.outsz + self.inLen) > self.maxOutSz): + blockSizeOnDisk = len(inhdr) + len(blk_hdr) + len(rawblock) + if not self.fileOutput and ((self.outsz + blockSizeOnDisk) > self.maxOutSz): self.outF.close() if self.setFileTime: os.utime(outFname, (int(time.time()), highTS)) self.outF = None self.outFname = None - self.outFn = outFn + 1 + self.outFn = self.outFn + 1 self.outsz = 0 (blkDate, blkTS) = get_blk_dt(blk_hdr) @@ -147,7 +149,7 @@ class BlockDataCopier: if self.fileOutput: outFname = self.settings['output_file'] else: - outFname = "%s/blk%05d.dat" % (self.settings['output'], outFn) + outFname = os.path.join(self.settings['output'], "blk%05d.dat" % self.outFn) print("Output file " + outFname) self.outF = open(outFname, "wb") @@ -165,7 +167,7 @@ class BlockDataCopier: (self.blkCountIn, self.blkCountOut, len(self.blkindex), 100.0 * self.blkCountOut / len(self.blkindex))) def inFileName(self, fn): - return "%s/blk%05d.dat" % (self.settings['input'], fn) + return os.path.join(self.settings['input'], "blk%05d.dat" % fn) def fetchBlock(self, extent): '''Fetch block contents from disk given extents''' diff --git a/contrib/macdeploy/macdeployqtplus b/contrib/macdeploy/macdeployqtplus deleted file mode 100755 index 2253c40af..000000000 --- a/contrib/macdeploy/macdeployqtplus +++ /dev/null @@ -1,883 +0,0 @@ -#!/usr/bin/env python - -# -# Copyright (C) 2011 Patrick "p2k" Schneider -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# - -import subprocess, sys, re, os, shutil, stat, os.path, time -from string import Template -from argparse import ArgumentParser - -# This is ported from the original macdeployqt with modifications - -class FrameworkInfo(object): - def __init__(self): - self.frameworkDirectory = "" - self.frameworkName = "" - self.frameworkPath = "" - self.binaryDirectory = "" - self.binaryName = "" - self.binaryPath = "" - self.version = "" - self.installName = "" - self.deployedInstallName = "" - self.sourceFilePath = "" - self.destinationDirectory = "" - self.sourceResourcesDirectory = "" - self.sourceVersionContentsDirectory = "" - self.sourceContentsDirectory = "" - self.destinationResourcesDirectory = "" - self.destinationVersionContentsDirectory = "" - - def __eq__(self, other): - if self.__class__ == other.__class__: - return self.__dict__ == other.__dict__ - else: - return False - - def __str__(self): - return """ Framework name: %s - Framework directory: %s - Framework path: %s - Binary name: %s - Binary directory: %s - Binary path: %s - Version: %s - Install name: %s - Deployed install name: %s - Source file Path: %s - Deployed Directory (relative to bundle): %s -""" % (self.frameworkName, - self.frameworkDirectory, - self.frameworkPath, - self.binaryName, - self.binaryDirectory, - self.binaryPath, - self.version, - self.installName, - self.deployedInstallName, - self.sourceFilePath, - self.destinationDirectory) - - def isDylib(self): - return self.frameworkName.endswith(".dylib") - - def isQtFramework(self): - if self.isDylib(): - return self.frameworkName.startswith("libQt") - else: - return self.frameworkName.startswith("Qt") - - reOLine = re.compile(r'^(.+) \(compatibility version [0-9.]+, current version [0-9.]+\)$') - bundleFrameworkDirectory = "Contents/Frameworks" - bundleBinaryDirectory = "Contents/MacOS" - - @classmethod - def fromOtoolLibraryLine(cls, line): - # Note: line must be trimmed - if line == "": - return None - - # Don't deploy system libraries (exception for libQtuitools and libQtlucene). - if line.startswith("/System/Library/") or line.startswith("@executable_path") or (line.startswith("/usr/lib/") and "libQt" not in line): - return None - - m = cls.reOLine.match(line) - if m is None: - raise RuntimeError("otool line could not be parsed: " + line) - - path = m.group(1) - - info = cls() - info.sourceFilePath = path - info.installName = path - - if path.endswith(".dylib"): - dirname, filename = os.path.split(path) - info.frameworkName = filename - info.frameworkDirectory = dirname - info.frameworkPath = path - - info.binaryDirectory = dirname - info.binaryName = filename - info.binaryPath = path - info.version = "-" - - info.installName = path - info.deployedInstallName = "@executable_path/../Frameworks/" + info.binaryName - info.sourceFilePath = path - info.destinationDirectory = cls.bundleFrameworkDirectory - else: - parts = path.split("/") - i = 0 - # Search for the .framework directory - for part in parts: - if part.endswith(".framework"): - break - i += 1 - if i == len(parts): - raise RuntimeError("Could not find .framework or .dylib in otool line: " + line) - - info.frameworkName = parts[i] - info.frameworkDirectory = "/".join(parts[:i]) - info.frameworkPath = os.path.join(info.frameworkDirectory, info.frameworkName) - - info.binaryName = parts[i+3] - info.binaryDirectory = "/".join(parts[i+1:i+3]) - info.binaryPath = os.path.join(info.binaryDirectory, info.binaryName) - info.version = parts[i+2] - - info.deployedInstallName = "@executable_path/../Frameworks/" + os.path.join(info.frameworkName, info.binaryPath) - info.destinationDirectory = os.path.join(cls.bundleFrameworkDirectory, info.frameworkName, info.binaryDirectory) - - info.sourceResourcesDirectory = os.path.join(info.frameworkPath, "Resources") - info.sourceContentsDirectory = os.path.join(info.frameworkPath, "Contents") - info.sourceVersionContentsDirectory = os.path.join(info.frameworkPath, "Versions", info.version, "Contents") - info.destinationResourcesDirectory = os.path.join(cls.bundleFrameworkDirectory, info.frameworkName, "Resources") - info.destinationContentsDirectory = os.path.join(cls.bundleFrameworkDirectory, info.frameworkName, "Contents") - info.destinationVersionContentsDirectory = os.path.join(cls.bundleFrameworkDirectory, info.frameworkName, "Versions", info.version, "Contents") - - return info - -class ApplicationBundleInfo(object): - def __init__(self, path): - self.path = path - appName = "Bitcoin-Qt" - self.binaryPath = os.path.join(path, "Contents", "MacOS", appName) - if not os.path.exists(self.binaryPath): - raise RuntimeError("Could not find bundle binary for " + path) - self.resourcesPath = os.path.join(path, "Contents", "Resources") - self.pluginPath = os.path.join(path, "Contents", "PlugIns") - -class DeploymentInfo(object): - def __init__(self): - self.qtPath = None - self.pluginPath = None - self.deployedFrameworks = [] - - def detectQtPath(self, frameworkDirectory): - parentDir = os.path.dirname(frameworkDirectory) - if os.path.exists(os.path.join(parentDir, "translations")): - # Classic layout, e.g. "/usr/local/Trolltech/Qt-4.x.x" - self.qtPath = parentDir - elif os.path.exists(os.path.join(parentDir, "share", "qt4", "translations")): - # MacPorts layout, e.g. "/opt/local/share/qt4" - self.qtPath = os.path.join(parentDir, "share", "qt4") - elif os.path.exists(os.path.join(os.path.dirname(parentDir), "share", "qt4", "translations")): - # Newer Macports layout - self.qtPath = os.path.join(os.path.dirname(parentDir), "share", "qt4") - else: - self.qtPath = os.getenv("QTDIR", None) - - if self.qtPath is not None: - pluginPath = os.path.join(self.qtPath, "plugins") - if os.path.exists(pluginPath): - self.pluginPath = pluginPath - - def usesFramework(self, name): - nameDot = "%s." % name - libNameDot = "lib%s." % name - for framework in self.deployedFrameworks: - if framework.endswith(".framework"): - if framework.startswith(nameDot): - return True - elif framework.endswith(".dylib"): - if framework.startswith(libNameDot): - return True - return False - -def getFrameworks(binaryPath, verbose): - if verbose >= 3: - print "Inspecting with otool: " + binaryPath - otoolbin=os.getenv("OTOOL", "otool") - otool = subprocess.Popen([otoolbin, "-L", binaryPath], stdout=subprocess.PIPE, stderr=subprocess.PIPE) - o_stdout, o_stderr = otool.communicate() - if otool.returncode != 0: - if verbose >= 1: - sys.stderr.write(o_stderr) - sys.stderr.flush() - raise RuntimeError("otool failed with return code %d" % otool.returncode) - - otoolLines = o_stdout.split("\n") - otoolLines.pop(0) # First line is the inspected binary - if ".framework" in binaryPath or binaryPath.endswith(".dylib"): - otoolLines.pop(0) # Frameworks and dylibs list themselves as a dependency. - - libraries = [] - for line in otoolLines: - line = line.replace("@loader_path", os.path.dirname(binaryPath)) - info = FrameworkInfo.fromOtoolLibraryLine(line.strip()) - if info is not None: - if verbose >= 3: - print "Found framework:" - print info - libraries.append(info) - - return libraries - -def runInstallNameTool(action, *args): - installnametoolbin=os.getenv("INSTALLNAMETOOL", "install_name_tool") - subprocess.check_call([installnametoolbin, "-"+action] + list(args)) - -def changeInstallName(oldName, newName, binaryPath, verbose): - if verbose >= 3: - print "Using install_name_tool:" - print " in", binaryPath - print " change reference", oldName - print " to", newName - runInstallNameTool("change", oldName, newName, binaryPath) - -def changeIdentification(id, binaryPath, verbose): - if verbose >= 3: - print "Using install_name_tool:" - print " change identification in", binaryPath - print " to", id - runInstallNameTool("id", id, binaryPath) - -def runStrip(binaryPath, verbose): - stripbin=os.getenv("STRIP", "strip") - if verbose >= 3: - print "Using strip:" - print " stripped", binaryPath - subprocess.check_call([stripbin, "-x", binaryPath]) - -def copyFramework(framework, path, verbose): - if framework.sourceFilePath.startswith("Qt"): - #standard place for Nokia Qt installer's frameworks - fromPath = "/Library/Frameworks/" + framework.sourceFilePath - else: - fromPath = framework.sourceFilePath - toDir = os.path.join(path, framework.destinationDirectory) - toPath = os.path.join(toDir, framework.binaryName) - - if not os.path.exists(fromPath): - raise RuntimeError("No file at " + fromPath) - - if os.path.exists(toPath): - return None # Already there - - if not os.path.exists(toDir): - os.makedirs(toDir) - - shutil.copy2(fromPath, toPath) - if verbose >= 3: - print "Copied:", fromPath - print " to:", toPath - - permissions = os.stat(toPath) - if not permissions.st_mode & stat.S_IWRITE: - os.chmod(toPath, permissions.st_mode | stat.S_IWRITE) - - if not framework.isDylib(): # Copy resources for real frameworks - - linkfrom = os.path.join(path, "Contents","Frameworks", framework.frameworkName, "Versions", "Current") - linkto = framework.version - if not os.path.exists(linkfrom): - os.symlink(linkto, linkfrom) - if verbose >= 2: - print "Linked:", linkfrom, "->", linkto - fromResourcesDir = framework.sourceResourcesDirectory - if os.path.exists(fromResourcesDir): - toResourcesDir = os.path.join(path, framework.destinationResourcesDirectory) - shutil.copytree(fromResourcesDir, toResourcesDir, symlinks=True) - if verbose >= 3: - print "Copied resources:", fromResourcesDir - print " to:", toResourcesDir - fromContentsDir = framework.sourceVersionContentsDirectory - if not os.path.exists(fromContentsDir): - fromContentsDir = framework.sourceContentsDirectory - if os.path.exists(fromContentsDir): - toContentsDir = os.path.join(path, framework.destinationVersionContentsDirectory) - shutil.copytree(fromContentsDir, toContentsDir, symlinks=True) - contentslinkfrom = os.path.join(path, framework.destinationContentsDirectory) - if verbose >= 3: - print "Copied Contents:", fromContentsDir - print " to:", toContentsDir - elif framework.frameworkName.startswith("libQtGui"): # Copy qt_menu.nib (applies to non-framework layout) - qtMenuNibSourcePath = os.path.join(framework.frameworkDirectory, "Resources", "qt_menu.nib") - qtMenuNibDestinationPath = os.path.join(path, "Contents", "Resources", "qt_menu.nib") - if os.path.exists(qtMenuNibSourcePath) and not os.path.exists(qtMenuNibDestinationPath): - shutil.copytree(qtMenuNibSourcePath, qtMenuNibDestinationPath, symlinks=True) - if verbose >= 3: - print "Copied for libQtGui:", qtMenuNibSourcePath - print " to:", qtMenuNibDestinationPath - - return toPath - -def deployFrameworks(frameworks, bundlePath, binaryPath, strip, verbose, deploymentInfo=None): - if deploymentInfo is None: - deploymentInfo = DeploymentInfo() - - while len(frameworks) > 0: - framework = frameworks.pop(0) - deploymentInfo.deployedFrameworks.append(framework.frameworkName) - - if verbose >= 2: - print "Processing", framework.frameworkName, "..." - - # Get the Qt path from one of the Qt frameworks - if deploymentInfo.qtPath is None and framework.isQtFramework(): - deploymentInfo.detectQtPath(framework.frameworkDirectory) - - if framework.installName.startswith("@executable_path") or framework.installName.startswith(bundlePath): - if verbose >= 2: - print framework.frameworkName, "already deployed, skipping." - continue - - # install_name_tool the new id into the binary - changeInstallName(framework.installName, framework.deployedInstallName, binaryPath, verbose) - - # Copy farmework to app bundle. - deployedBinaryPath = copyFramework(framework, bundlePath, verbose) - # Skip the rest if already was deployed. - if deployedBinaryPath is None: - continue - - if strip: - runStrip(deployedBinaryPath, verbose) - - # install_name_tool it a new id. - changeIdentification(framework.deployedInstallName, deployedBinaryPath, verbose) - # Check for framework dependencies - dependencies = getFrameworks(deployedBinaryPath, verbose) - - for dependency in dependencies: - changeInstallName(dependency.installName, dependency.deployedInstallName, deployedBinaryPath, verbose) - - # Deploy framework if necessary. - if dependency.frameworkName not in deploymentInfo.deployedFrameworks and dependency not in frameworks: - frameworks.append(dependency) - - return deploymentInfo - -def deployFrameworksForAppBundle(applicationBundle, strip, verbose): - frameworks = getFrameworks(applicationBundle.binaryPath, verbose) - if len(frameworks) == 0 and verbose >= 1: - print "Warning: Could not find any external frameworks to deploy in %s." % (applicationBundle.path) - return DeploymentInfo() - else: - return deployFrameworks(frameworks, applicationBundle.path, applicationBundle.binaryPath, strip, verbose) - -def deployPlugins(appBundleInfo, deploymentInfo, strip, verbose): - # Lookup available plugins, exclude unneeded - plugins = [] - if deploymentInfo.pluginPath is None: - return - for dirpath, dirnames, filenames in os.walk(deploymentInfo.pluginPath): - pluginDirectory = os.path.relpath(dirpath, deploymentInfo.pluginPath) - if pluginDirectory == "designer": - # Skip designer plugins - continue - elif pluginDirectory == "phonon" or pluginDirectory == "phonon_backend": - # Deploy the phonon plugins only if phonon is in use - if not deploymentInfo.usesFramework("phonon"): - continue - elif pluginDirectory == "sqldrivers": - # Deploy the sql plugins only if QtSql is in use - if not deploymentInfo.usesFramework("QtSql"): - continue - elif pluginDirectory == "script": - # Deploy the script plugins only if QtScript is in use - if not deploymentInfo.usesFramework("QtScript"): - continue - elif pluginDirectory == "qmltooling" or pluginDirectory == "qml1tooling": - # Deploy the qml plugins only if QtDeclarative is in use - if not deploymentInfo.usesFramework("QtDeclarative"): - continue - elif pluginDirectory == "bearer": - # Deploy the bearer plugins only if QtNetwork is in use - if not deploymentInfo.usesFramework("QtNetwork"): - continue - elif pluginDirectory == "position": - # Deploy the position plugins only if QtPositioning is in use - if not deploymentInfo.usesFramework("QtPositioning"): - continue - elif pluginDirectory == "sensors" or pluginDirectory == "sensorgestures": - # Deploy the sensor plugins only if QtSensors is in use - if not deploymentInfo.usesFramework("QtSensors"): - continue - elif pluginDirectory == "audio" or pluginDirectory == "playlistformats": - # Deploy the audio plugins only if QtMultimedia is in use - if not deploymentInfo.usesFramework("QtMultimedia"): - continue - elif pluginDirectory == "mediaservice": - # Deploy the mediaservice plugins only if QtMultimediaWidgets is in use - if not deploymentInfo.usesFramework("QtMultimediaWidgets"): - continue - - for pluginName in filenames: - pluginPath = os.path.join(pluginDirectory, pluginName) - if pluginName.endswith("_debug.dylib"): - # Skip debug plugins - continue - elif pluginPath == "imageformats/libqsvg.dylib" or pluginPath == "iconengines/libqsvgicon.dylib": - # Deploy the svg plugins only if QtSvg is in use - if not deploymentInfo.usesFramework("QtSvg"): - continue - elif pluginPath == "accessible/libqtaccessiblecompatwidgets.dylib": - # Deploy accessibility for Qt3Support only if the Qt3Support is in use - if not deploymentInfo.usesFramework("Qt3Support"): - continue - elif pluginPath == "graphicssystems/libqglgraphicssystem.dylib": - # Deploy the opengl graphicssystem plugin only if QtOpenGL is in use - if not deploymentInfo.usesFramework("QtOpenGL"): - continue - elif pluginPath == "accessible/libqtaccessiblequick.dylib": - # Deploy the accessible qtquick plugin only if QtQuick is in use - if not deploymentInfo.usesFramework("QtQuick"): - continue - - plugins.append((pluginDirectory, pluginName)) - - for pluginDirectory, pluginName in plugins: - if verbose >= 2: - print "Processing plugin", os.path.join(pluginDirectory, pluginName), "..." - - sourcePath = os.path.join(deploymentInfo.pluginPath, pluginDirectory, pluginName) - destinationDirectory = os.path.join(appBundleInfo.pluginPath, pluginDirectory) - if not os.path.exists(destinationDirectory): - os.makedirs(destinationDirectory) - - destinationPath = os.path.join(destinationDirectory, pluginName) - shutil.copy2(sourcePath, destinationPath) - if verbose >= 3: - print "Copied:", sourcePath - print " to:", destinationPath - - if strip: - runStrip(destinationPath, verbose) - - dependencies = getFrameworks(destinationPath, verbose) - - for dependency in dependencies: - changeInstallName(dependency.installName, dependency.deployedInstallName, destinationPath, verbose) - - # Deploy framework if necessary. - if dependency.frameworkName not in deploymentInfo.deployedFrameworks: - deployFrameworks([dependency], appBundleInfo.path, destinationPath, strip, verbose, deploymentInfo) - -qt_conf="""[Paths] -Translations=Resources -Plugins=PlugIns -""" - -ap = ArgumentParser(description="""Improved version of macdeployqt. - -Outputs a ready-to-deploy app in a folder "dist" and optionally wraps it in a .dmg file. -Note, that the "dist" folder will be deleted before deploying on each run. - -Optionally, Qt translation files (.qm) and additional resources can be added to the bundle. - -Also optionally signs the .app bundle; set the CODESIGNARGS environment variable to pass arguments -to the codesign tool. -E.g. CODESIGNARGS='--sign "Developer ID Application: ..." --keychain /encrypted/foo.keychain'""") - -ap.add_argument("app_bundle", nargs=1, metavar="app-bundle", help="application bundle to be deployed") -ap.add_argument("-verbose", type=int, nargs=1, default=[1], metavar="<0-3>", help="0 = no output, 1 = error/warning (default), 2 = normal, 3 = debug") -ap.add_argument("-no-plugins", dest="plugins", action="store_false", default=True, help="skip plugin deployment") -ap.add_argument("-no-strip", dest="strip", action="store_false", default=True, help="don't run 'strip' on the binaries") -ap.add_argument("-sign", dest="sign", action="store_true", default=False, help="sign .app bundle with codesign tool") -ap.add_argument("-dmg", nargs="?", const="", metavar="basename", help="create a .dmg disk image; if basename is not specified, a camel-cased version of the app name is used") -ap.add_argument("-fancy", nargs=1, metavar="plist", default=[], help="make a fancy looking disk image using the given plist file with instructions; requires -dmg to work") -ap.add_argument("-add-qt-tr", nargs=1, metavar="languages", default=[], help="add Qt translation files to the bundle's ressources; the language list must be separated with commas, not with whitespace") -ap.add_argument("-translations-dir", nargs=1, metavar="path", default=None, help="Path to Qt's translation files") -ap.add_argument("-add-resources", nargs="+", metavar="path", default=[], help="list of additional files or folders to be copied into the bundle's resources; must be the last argument") - -config = ap.parse_args() - -verbose = config.verbose[0] - -# ------------------------------------------------ - -app_bundle = config.app_bundle[0] - -if not os.path.exists(app_bundle): - if verbose >= 1: - sys.stderr.write("Error: Could not find app bundle \"%s\"\n" % (app_bundle)) - sys.exit(1) - -app_bundle_name = os.path.splitext(os.path.basename(app_bundle))[0] - -# ------------------------------------------------ -translations_dir = None -if config.translations_dir and config.translations_dir[0]: - if os.path.exists(config.translations_dir[0]): - translations_dir = config.translations_dir[0] - else: - if verbose >= 1: - sys.stderr.write("Error: Could not find translation dir \"%s\"\n" % (translations_dir)) - sys.exit(1) -# ------------------------------------------------ - -for p in config.add_resources: - if verbose >= 3: - print "Checking for \"%s\"..." % p - if not os.path.exists(p): - if verbose >= 1: - sys.stderr.write("Error: Could not find additional resource file \"%s\"\n" % (p)) - sys.exit(1) - -# ------------------------------------------------ - -if len(config.fancy) == 1: - if verbose >= 3: - print "Fancy: Importing plistlib..." - try: - import plistlib - except ImportError: - if verbose >= 1: - sys.stderr.write("Error: Could not import plistlib which is required for fancy disk images.\n") - sys.exit(1) - - p = config.fancy[0] - if verbose >= 3: - print "Fancy: Loading \"%s\"..." % p - if not os.path.exists(p): - if verbose >= 1: - sys.stderr.write("Error: Could not find fancy disk image plist at \"%s\"\n" % (p)) - sys.exit(1) - - try: - fancy = plistlib.readPlist(p) - except: - if verbose >= 1: - sys.stderr.write("Error: Could not parse fancy disk image plist at \"%s\"\n" % (p)) - sys.exit(1) - - try: - assert not fancy.has_key("window_bounds") or (isinstance(fancy["window_bounds"], list) and len(fancy["window_bounds"]) == 4) - assert not fancy.has_key("background_picture") or isinstance(fancy["background_picture"], str) - assert not fancy.has_key("icon_size") or isinstance(fancy["icon_size"], int) - assert not fancy.has_key("applications_symlink") or isinstance(fancy["applications_symlink"], bool) - if fancy.has_key("items_position"): - assert isinstance(fancy["items_position"], dict) - for key, value in fancy["items_position"].iteritems(): - assert isinstance(value, list) and len(value) == 2 and isinstance(value[0], int) and isinstance(value[1], int) - except: - if verbose >= 1: - sys.stderr.write("Error: Bad format of fancy disk image plist at \"%s\"\n" % (p)) - sys.exit(1) - - if fancy.has_key("background_picture"): - bp = fancy["background_picture"] - if verbose >= 3: - print "Fancy: Resolving background picture \"%s\"..." % bp - if not os.path.exists(bp): - bp = os.path.join(os.path.dirname(p), bp) - if not os.path.exists(bp): - if verbose >= 1: - sys.stderr.write("Error: Could not find background picture at \"%s\" or \"%s\"\n" % (fancy["background_picture"], bp)) - sys.exit(1) - else: - fancy["background_picture"] = bp -else: - fancy = None - -# ------------------------------------------------ - -if os.path.exists("dist"): - if verbose >= 2: - print "+ Removing old dist folder +" - - shutil.rmtree("dist") - -# ------------------------------------------------ - -target = os.path.join("dist", "Bitcoin-Qt.app") - -if verbose >= 2: - print "+ Copying source bundle +" -if verbose >= 3: - print app_bundle, "->", target - -os.mkdir("dist") -shutil.copytree(app_bundle, target, symlinks=True) - -applicationBundle = ApplicationBundleInfo(target) - -# ------------------------------------------------ - -if verbose >= 2: - print "+ Deploying frameworks +" - -try: - deploymentInfo = deployFrameworksForAppBundle(applicationBundle, config.strip, verbose) - if deploymentInfo.qtPath is None: - deploymentInfo.qtPath = os.getenv("QTDIR", None) - if deploymentInfo.qtPath is None: - if verbose >= 1: - sys.stderr.write("Warning: Could not detect Qt's path, skipping plugin deployment!\n") - config.plugins = False -except RuntimeError as e: - if verbose >= 1: - sys.stderr.write("Error: %s\n" % str(e)) - sys.exit(1) - -# ------------------------------------------------ - -if config.plugins: - if verbose >= 2: - print "+ Deploying plugins +" - - try: - deployPlugins(applicationBundle, deploymentInfo, config.strip, verbose) - except RuntimeError as e: - if verbose >= 1: - sys.stderr.write("Error: %s\n" % str(e)) - sys.exit(1) - -# ------------------------------------------------ - -if len(config.add_qt_tr) == 0: - add_qt_tr = [] -else: - if translations_dir is not None: - qt_tr_dir = translations_dir - else: - if deploymentInfo.qtPath is not None: - qt_tr_dir = os.path.join(deploymentInfo.qtPath, "translations") - else: - sys.stderr.write("Error: Could not find Qt translation path\n") - sys.exit(1) - add_qt_tr = ["qt_%s.qm" % lng for lng in config.add_qt_tr[0].split(",")] - for lng_file in add_qt_tr: - p = os.path.join(qt_tr_dir, lng_file) - if verbose >= 3: - print "Checking for \"%s\"..." % p - if not os.path.exists(p): - if verbose >= 1: - sys.stderr.write("Error: Could not find Qt translation file \"%s\"\n" % (lng_file)) - sys.exit(1) - -# ------------------------------------------------ - -if verbose >= 2: - print "+ Installing qt.conf +" - -f = open(os.path.join(applicationBundle.resourcesPath, "qt.conf"), "wb") -f.write(qt_conf) -f.close() - -# ------------------------------------------------ - -if len(add_qt_tr) > 0 and verbose >= 2: - print "+ Adding Qt translations +" - -for lng_file in add_qt_tr: - if verbose >= 3: - print os.path.join(qt_tr_dir, lng_file), "->", os.path.join(applicationBundle.resourcesPath, lng_file) - shutil.copy2(os.path.join(qt_tr_dir, lng_file), os.path.join(applicationBundle.resourcesPath, lng_file)) - -# ------------------------------------------------ - -if len(config.add_resources) > 0 and verbose >= 2: - print "+ Adding additional resources +" - -for p in config.add_resources: - t = os.path.join(applicationBundle.resourcesPath, os.path.basename(p)) - if verbose >= 3: - print p, "->", t - if os.path.isdir(p): - shutil.copytree(p, t, symlinks=True) - else: - shutil.copy2(p, t) - -# ------------------------------------------------ - -if config.sign and 'CODESIGNARGS' not in os.environ: - print "You must set the CODESIGNARGS environment variable. Skipping signing." -elif config.sign: - if verbose >= 1: - print "Code-signing app bundle %s"%(target,) - subprocess.check_call("codesign --force %s %s"%(os.environ['CODESIGNARGS'], target), shell=True) - -# ------------------------------------------------ - -if config.dmg is not None: - - #Patch in check_output for Python 2.6 - if "check_output" not in dir( subprocess ): - def f(*popenargs, **kwargs): - if 'stdout' in kwargs: - raise ValueError('stdout argument not allowed, it will be overridden.') - process = subprocess.Popen(stdout=subprocess.PIPE, *popenargs, **kwargs) - output, unused_err = process.communicate() - retcode = process.poll() - if retcode: - cmd = kwargs.get("args") - if cmd is None: - cmd = popenargs[0] - raise CalledProcessError(retcode, cmd) - return output - subprocess.check_output = f - - def runHDIUtil(verb, image_basename, **kwargs): - hdiutil_args = ["hdiutil", verb, image_basename + ".dmg"] - if kwargs.has_key("capture_stdout"): - del kwargs["capture_stdout"] - run = subprocess.check_output - else: - if verbose < 2: - hdiutil_args.append("-quiet") - elif verbose >= 3: - hdiutil_args.append("-verbose") - run = subprocess.check_call - - for key, value in kwargs.iteritems(): - hdiutil_args.append("-" + key) - if not value is True: - hdiutil_args.append(str(value)) - - return run(hdiutil_args) - - if verbose >= 2: - if fancy is None: - print "+ Creating .dmg disk image +" - else: - print "+ Preparing .dmg disk image +" - - if config.dmg != "": - dmg_name = config.dmg - else: - spl = app_bundle_name.split(" ") - dmg_name = spl[0] + "".join(p.capitalize() for p in spl[1:]) - - if fancy is None: - try: - runHDIUtil("create", dmg_name, srcfolder="dist", format="UDBZ", volname="Bitcoin-Core", ov=True) - except subprocess.CalledProcessError as e: - sys.exit(e.returncode) - else: - if verbose >= 3: - print "Determining size of \"dist\"..." - size = 0 - for path, dirs, files in os.walk("dist"): - for file in files: - size += os.path.getsize(os.path.join(path, file)) - size += int(size * 0.15) - - if verbose >= 3: - print "Creating temp image for modification..." - try: - runHDIUtil("create", dmg_name + ".temp", srcfolder="dist", format="UDRW", size=size, volname="Bitcoin-Core", ov=True) - except subprocess.CalledProcessError as e: - sys.exit(e.returncode) - - if verbose >= 3: - print "Attaching temp image..." - try: - output = runHDIUtil("attach", dmg_name + ".temp", readwrite=True, noverify=True, noautoopen=True, capture_stdout=True) - except subprocess.CalledProcessError as e: - sys.exit(e.returncode) - - m = re.search("/Volumes/(.+$)", output) - disk_root = m.group(0) - disk_name = m.group(1) - - if verbose >= 2: - print "+ Applying fancy settings +" - - if fancy.has_key("background_picture"): - bg_path = os.path.join(disk_root, ".background", os.path.basename(fancy["background_picture"])) - os.mkdir(os.path.dirname(bg_path)) - if verbose >= 3: - print fancy["background_picture"], "->", bg_path - shutil.copy2(fancy["background_picture"], bg_path) - else: - bg_path = None - - if fancy.get("applications_symlink", False): - os.symlink("/Applications", os.path.join(disk_root, "Applications")) - - # The Python appscript package broke with OSX 10.8 and isn't being fixed. - # So we now build up an AppleScript string and use the osascript command - # to make the .dmg file pretty: - appscript = Template( """ - on run argv - tell application "Finder" - tell disk "$disk" - open - set current view of container window to icon view - set toolbar visible of container window to false - set statusbar visible of container window to false - set the bounds of container window to {$window_bounds} - set theViewOptions to the icon view options of container window - set arrangement of theViewOptions to not arranged - set icon size of theViewOptions to $icon_size - $background_commands - $items_positions - close -- close/reopen works around a bug... - open - update without registering applications - delay 5 - eject - end tell - end tell - end run - """) - - itemscript = Template('set position of item "${item}" of container window to {${position}}') - items_positions = [] - if fancy.has_key("items_position"): - for name, position in fancy["items_position"].iteritems(): - params = { "item" : name, "position" : ",".join([str(p) for p in position]) } - items_positions.append(itemscript.substitute(params)) - - params = { - "disk" : "Bitcoin-Core", - "window_bounds" : "300,300,800,620", - "icon_size" : "96", - "background_commands" : "", - "items_positions" : "\n ".join(items_positions) - } - if fancy.has_key("window_bounds"): - params["window.bounds"] = ",".join([str(p) for p in fancy["window_bounds"]]) - if fancy.has_key("icon_size"): - params["icon_size"] = str(fancy["icon_size"]) - if bg_path is not None: - # Set background file, then call SetFile to make it invisible. - # (note: making it invisible first makes set background picture fail) - bgscript = Template("""set background picture of theViewOptions to file ".background:$bgpic" - do shell script "SetFile -a V /Volumes/$disk/.background/$bgpic" """) - params["background_commands"] = bgscript.substitute({"bgpic" : os.path.basename(bg_path), "disk" : params["disk"]}) - - s = appscript.substitute(params) - if verbose >= 2: - print("Running AppleScript:") - print(s) - - p = subprocess.Popen(['osascript', '-'], stdin=subprocess.PIPE) - p.communicate(input=s) - if p.returncode: - print("Error running osascript.") - - if verbose >= 2: - print "+ Finalizing .dmg disk image +" - time.sleep(5) - - try: - runHDIUtil("convert", dmg_name + ".temp", format="UDBZ", o=dmg_name + ".dmg", ov=True) - except subprocess.CalledProcessError as e: - sys.exit(e.returncode) - - os.unlink(dmg_name + ".temp.dmg") - -# ------------------------------------------------ - -if verbose >= 2: - print "+ Done +" - -sys.exit(0) diff --git a/contrib/qt_translations.py b/contrib/qt_translations.py deleted file mode 100755 index fd8a8b712..000000000 --- a/contrib/qt_translations.py +++ /dev/null @@ -1,22 +0,0 @@ -#!/usr/bin/env python - -# Helpful little script that spits out a comma-separated list of -# language codes for Qt icons that should be included -# in binary bitcoin distributions - -import glob -import os -import re -import sys - -if len(sys.argv) != 3: - sys.exit("Usage: %s $QTDIR/translations $BITCOINDIR/src/qt/locale"%sys.argv[0]) - -d1 = sys.argv[1] -d2 = sys.argv[2] - -l1 = set([ re.search(r'qt_(.*).qm', f).group(1) for f in glob.glob(os.path.join(d1, 'qt_*.qm')) ]) -l2 = set([ re.search(r'bitcoin_(.*).qm', f).group(1) for f in glob.glob(os.path.join(d2, 'bitcoin_*.qm')) ]) - -print ",".join(sorted(l1.intersection(l2))) - diff --git a/contrib/zmq/zmq_sub.py b/contrib/zmq/zmq_sub.py new file mode 100755 index 000000000..3dea5e3c1 --- /dev/null +++ b/contrib/zmq/zmq_sub.py @@ -0,0 +1,44 @@ +#!/usr/bin/env python2 +# Copyright (c) 2014-2016 The Bitcoin Core developers +# Distributed under the MIT software license, see the accompanying +# file COPYING or http://www.opensource.org/licenses/mit-license.php. + +import array +import binascii +import zmq +import struct + +port = 28332 + +zmqContext = zmq.Context() +zmqSubSocket = zmqContext.socket(zmq.SUB) +zmqSubSocket.setsockopt(zmq.SUBSCRIBE, "hashblock") +zmqSubSocket.setsockopt(zmq.SUBSCRIBE, "hashtx") +zmqSubSocket.setsockopt(zmq.SUBSCRIBE, "rawblock") +zmqSubSocket.setsockopt(zmq.SUBSCRIBE, "rawtx") +zmqSubSocket.connect("tcp://127.0.0.1:%i" % port) + +try: + while True: + msg = zmqSubSocket.recv_multipart() + topic = str(msg[0]) + body = msg[1] + sequence = "Unknown"; + if len(msg[-1]) == 4: + msgSequence = struct.unpack('dir_flags |= DIR_WAS_SCANNED; - - errno = 0; /* Paranoia */ -- current_dir = opendir(path); -+ //current_dir = opendir(path); -+ current_file = scandir(path, &d_list, NULL, alphasort); - d_entry = NULL; - - /* -@@ -1173,12 +1175,12 @@ - */ - old_path = path; - -- if (current_dir) { -+ if (current_file >= 0) { - errno = 0; -- d_entry = readdir(current_dir); -+ d_entry = d_list[0]; - } - -- if (!current_dir || !d_entry) { -+ if (current_file < 0 || !d_entry) { - int ret = 1; - - #ifdef USE_LIBSCHILY -@@ -1191,8 +1193,8 @@ - de->isorec.flags[0] &= ~ISO_DIRECTORY; - ret = 0; - } -- if (current_dir) -- closedir(current_dir); -+ if(d_list) -+ free(d_list); - return (ret); - } - #ifdef ABORT_DEEP_ISO_ONLY -@@ -1208,7 +1210,7 @@ - errmsgno(EX_BAD, "use Rock Ridge extensions via -R or -r,\n"); - errmsgno(EX_BAD, "or allow deep ISO9660 directory nesting via -D.\n"); - } -- closedir(current_dir); -+ free(d_list); - return (1); - } - #endif -@@ -1250,13 +1252,13 @@ - * The first time through, skip this, since we already asked - * for the first entry when we opened the directory. - */ -- if (dflag) -- d_entry = readdir(current_dir); -+ if (dflag && current_file >= 0) -+ d_entry = d_list[current_file]; - dflag++; - -- if (!d_entry) -+ if (current_file < 0) - break; -- -+ current_file--; - /* OK, got a valid entry */ - - /* If we do not want all files, then pitch the backups. */ -@@ -1348,7 +1350,7 @@ - insert_file_entry(this_dir, whole_path, d_entry->d_name); - #endif /* APPLE_HYB */ - } -- closedir(current_dir); -+ free(d_list); - - #ifdef APPLE_HYB - /* diff --git a/depends/patches/qt/fix-xcb-include-order.patch b/depends/patches/qt/fix-xcb-include-order.patch deleted file mode 100644 index ae469ea94..000000000 --- a/depends/patches/qt/fix-xcb-include-order.patch +++ /dev/null @@ -1,45 +0,0 @@ ---- old/qtbase/src/plugins/platforms/xcb/xcb_qpa_lib.pro 2015-03-17 02:06:42.705930685 +0000 -+++ new/qtbase/src/plugins/platforms/xcb/xcb_qpa_lib.pro 2015-03-17 02:08:41.281926351 +0000 -@@ -94,8 +94,6 @@ - - DEFINES += $$QMAKE_DEFINES_XCB - LIBS += $$QMAKE_LIBS_XCB --QMAKE_CXXFLAGS += $$QMAKE_CFLAGS_XCB --QMAKE_CFLAGS += $$QMAKE_CFLAGS_XCB - - CONFIG += qpa/genericunixfontdatabase - -@@ -104,7 +102,8 @@ - contains(QT_CONFIG, xcb-qt) { - DEFINES += XCB_USE_RENDER - XCB_DIR = ../../../3rdparty/xcb -- INCLUDEPATH += $$XCB_DIR/include $$XCB_DIR/sysinclude -+ QMAKE_CFLAGS += -I$$XCB_DIR/include -I$$XCB_DIR/sysinclude $$QMAKE_CFLAGS_XCB -+ QMAKE_CXXFLAGS += -I$$XCB_DIR/include -I$$XCB_DIR/sysinclude $$QMAKE_CFLAGS_XCB - LIBS += -lxcb -L$$OUT_PWD/xcb-static -lxcb-static - } else { - LIBS += -lxcb -lxcb-image -lxcb-icccm -lxcb-sync -lxcb-xfixes -lxcb-shm -lxcb-randr -lxcb-shape -lxcb-keysyms ---- old/qtbase/src/plugins/platforms/xcb/xcb-static/xcb-static.pro 2015-03-17 02:07:04.641929383 +0000 -+++ new/qtbase/src/plugins/platforms/xcb/xcb-static/xcb-static.pro 2015-03-17 02:10:15.485922059 +0000 -@@ -8,7 +8,8 @@ - - XCB_DIR = ../../../../3rdparty/xcb - --INCLUDEPATH += $$XCB_DIR/include $$XCB_DIR/include/xcb $$XCB_DIR/sysinclude -+QMAKE_CFLAGS += -I$$XCB_DIR/include -I$$XCB_DIR/include/xcb -I$$XCB_DIR/sysinclude -+QMAKE_CXXFLAGS += -I$$XCB_DIR/include -I$$XCB_DIR/include/xcb -I$$XCB_DIR/sysinclude - - QMAKE_CXXFLAGS += $$QMAKE_CFLAGS_XCB - QMAKE_CFLAGS += $$QMAKE_CFLAGS_XCB ---- old/qtbase/src/plugins/platforms/xcb/xcb-plugin.pro 2015-07-24 16:02:59.530038830 -0400 -+++ new/qtbase/src/plugins/platforms/xcb/xcb-plugin.pro 2015-07-24 16:01:22.106037459 -0400 -@@ -11,3 +11,9 @@ - qxcbmain.cpp - OTHER_FILES += xcb.json README - -+contains(QT_CONFIG, xcb-qt) { -+ DEFINES += XCB_USE_RENDER -+ XCB_DIR = ../../../3rdparty/xcb -+ QMAKE_CFLAGS += -I$$XCB_DIR/include -I$$XCB_DIR/sysinclude $$QMAKE_CFLAGS_XCB -+ QMAKE_CXXFLAGS += -I$$XCB_DIR/include -I$$XCB_DIR/sysinclude $$QMAKE_CFLAGS_XCB -+} diff --git a/depends/patches/qt/mac-qmake.conf b/depends/patches/qt/mac-qmake.conf deleted file mode 100644 index a6d0070cc..000000000 --- a/depends/patches/qt/mac-qmake.conf +++ /dev/null @@ -1,26 +0,0 @@ -MAKEFILE_GENERATOR = UNIX -CONFIG += app_bundle incremental global_init_link_order lib_version_first plugin_no_soname absolute_library_soname -DEFINES += QT_NO_PRINTER QT_NO_PRINTDIALOG -QMAKE_INCREMENTAL_STYLE = sublib -include(../common/macx.conf) -include(../common/gcc-base-mac.conf) -include(../common/clang.conf) -include(../common/clang-mac.conf) -QMAKE_MAC_SDK_PATH=$${MAC_SDK_PATH} -QMAKE_XCODE_VERSION=4.3 -QMAKE_XCODE_DEVELOPER_PATH=/Developer -QMAKE_MACOSX_DEPLOYMENT_TARGET = $${MAC_MIN_VERSION} -QMAKE_MAC_SDK=macosx -QMAKE_MAC_SDK.macosx.path = $${MAC_SDK_PATH} -QMAKE_MAC_SDK.macosx.platform_name = macosx -QMAKE_MAC_SDK.macosx.version = $${MAC_SDK_VERSION} -QMAKE_MAC_SDK.macosx.platform_path = /phony -QMAKE_CFLAGS += -target $${MAC_TARGET} -QMAKE_OBJECTIVE_CFLAGS += $$QMAKE_CFLAGS -QMAKE_CXXFLAGS += $$QMAKE_CFLAGS -QMAKE_LFLAGS += -target $${MAC_TARGET} -mlinker-version=$${MAC_LD64_VERSION} -QMAKE_AR = $${CROSS_COMPILE}ar cq -QMAKE_RANLIB=$${CROSS_COMPILE}ranlib -QMAKE_LIBTOOL=$${CROSS_COMPILE}libtool -QMAKE_INSTALL_NAME_TOOL=$${CROSS_COMPILE}install_name_tool -load(qt_config) diff --git a/depends/patches/qt/mingw-uuidof.patch b/depends/patches/qt/mingw-uuidof.patch deleted file mode 100644 index 975366e61..000000000 --- a/depends/patches/qt/mingw-uuidof.patch +++ /dev/null @@ -1,44 +0,0 @@ ---- old/qtbase/src/plugins/platforms/windows/qwindowscontext.cpp 2015-06-20 17:40:20.956781548 -0400 -+++ new/qtbase/src/plugins/platforms/windows/qwindowscontext.cpp 2015-06-20 17:29:32.052772416 -0400 -@@ -69,7 +69,7 @@ - #include - #include - #include --#ifndef Q_OS_WINCE -+#if !defined(Q_OS_WINCE) && (!defined(USE___UUIDOF) || (defined(USE___UUIDOF) && USE___UUIDOF == 1)) - # include - #endif - -@@ -762,7 +762,7 @@ - HWND_MESSAGE, NULL, (HINSTANCE)GetModuleHandle(0), NULL); - } - --#ifndef Q_OS_WINCE -+#if !defined(Q_OS_WINCE) && (!defined(USE___UUIDOF) || (defined(USE___UUIDOF) && USE___UUIDOF == 1)) - // Re-engineered from the inline function _com_error::ErrorMessage(). - // We cannot use it directly since it uses swprintf_s(), which is not - // present in the MSVCRT.DLL found on Windows XP (QTBUG-35617). -@@ -781,7 +781,7 @@ - return QStringLiteral("IDispatch error #") + QString::number(wCode); - return QStringLiteral("Unknown error 0x0") + QString::number(comError.Error(), 16); - } --#endif // !Q_OS_WINCE -+#endif // !defined(Q_OS_WINCE) && (!defined(USE___UUIDOF) || (defined(USE___UUIDOF) && USE___UUIDOF == 1)) - - /*! - \brief Common COM error strings. -@@ -846,12 +846,12 @@ - default: - break; - } --#ifndef Q_OS_WINCE -+#if !defined(Q_OS_WINCE) && (!defined(USE___UUIDOF) || (defined(USE___UUIDOF) && USE___UUIDOF == 1)) - _com_error error(hr); - result += QByteArrayLiteral(" ("); - result += errorMessageFromComError(error); - result += ')'; --#endif // !Q_OS_WINCE -+#endif // !defined(Q_OS_WINCE) && (!defined(USE___UUIDOF) || (defined(USE___UUIDOF) && USE___UUIDOF == 1)) - return result; - } - diff --git a/depends/patches/qt46/stlfix.patch b/depends/patches/qt46/stlfix.patch deleted file mode 100644 index f8f6fb04b..000000000 --- a/depends/patches/qt46/stlfix.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- old/config.tests/unix/stl/stltest.cpp 2011-06-23 03:45:23.000000000 -0400 -+++ new/config.tests/unix/stl/stltest.cpp 2014-08-28 00:54:04.154837604 -0400 -@@ -49,6 +49,7 @@ - #include - #include - #include -+#include - - // something mean to see if the compiler and C++ standard lib are good enough - template diff --git a/doc/assets-attribution.md b/doc/assets-attribution.md deleted file mode 100644 index c6da1a458..000000000 --- a/doc/assets-attribution.md +++ /dev/null @@ -1,46 +0,0 @@ -The following is a list of assets used in the bitcoin source and their proper attribution. - -[Typicons/Stephen Hutchings](http://typicons.com) ------------------------ - -### Info -* Icon Pack: Typicons (http://typicons.com) -* Designer: Stephen Hutchings (and more) -* License: MIT -* Site: [https://github.com/stephenhutchings/typicons.font](https://github.com/stephenhutchings/typicons.font) - -### Assets Used - src/qt/res/icons/add.png, src/qt/res/icons/address-book.png, - src/qt/res/icons/configure.png, src/qt/res/icons/connect4.png, - src/qt/res/icons/debugwindow.png, src/qt/res/icons/edit.png, - src/qt/res/icons/exitcopy.png, src/qt/res/icons/editpaste.png, - src/qt/res/icons/export.png, src/qt/res/icons/eye.png, - src/qt/res/icons/filesave.png, src/qt/res/icons/history.png, - src/qt/res/icons/info.png, src/qt/res/icons/key.png, - src/qt/res/icons/lock_*.png, src/qt/res/icons/open.png, - src/qt/res/icons/overview.png, src/qt/res/icons/quit.png, - src/qt/res/icons/receive.png, src/qt/res/icons/remove.png, - src/qt/res/icons/send.png, src/qt/res/icons/synced.png, - src/qt/res/icons/transaction*.png, src/qt/res/icons/tx_output.png, - src/qt/res/icons/warning.png - -Jonas Schnelli ------------------------ - -### Info -* Designer: Jonas Schnelli -* Bitcoin Icon: (based on the original bitcoin logo from Bitboy) -* Some icons are based on Stephan Hutchings Typicons -* License: MIT - -### Assets Used - src/qt/res/icons/about.png, src/qt/res/icons/about_qt.png, - src/qt/res/icons/bitcoin.icns, src/qt/res/icons/bitcoin.ico, - src/qt/res/icons/bitcoin.png, src/qt/res/icons/clock*.png, - src/qt/res/icons/connect[0-3].png, src/qt/res/icons/eye_minus.png, - src/qt/res/icons/eye_plus.png, src/qt/res/icons/verify.png, - src/qt/res/icons/tx_inout.png, src/qt/res/icons/tx_input.png, - src/qt/res/src/verify.svg, src/qt/res/src/bitcoin.svg, - src/qt/res/src/clock*.svg, src/qt/res/src/connect*.svg, - src/qt/res/src/mine.svg, src/qt/res/src/qt.svg, src/qt/res/src/tx*.svg, - src/qt/res/src/verify.svg, diff --git a/doc/authors.md b/doc/authors.md index c57a4631a..f9fc63367 100644 --- a/doc/authors.md +++ b/doc/authors.md @@ -1,45 +1,86 @@ Zcash Contributors ================== -Jack Grigg (323) -Simon Liu (220) -Sean Bowe (180) +Jack Grigg (392) +Simon Liu (254) +Sean Bowe (185) +Daira Hopwood (80) Taylor Hornby (65) -Daira Hopwood (62) +Wladimir J. van der Laan (58) +Jonas Schnelli (48) +Jay Graber (47) Kevin Gallagher (38) -Jay Graber (35) -Wladimir J. van der Laan (10) +Cory Fields (15) +Pieter Wuille (14) Nathan Wilcox (10) -Pieter Wuille (8) -Cory Fields (7) +nomnombtc (9) +fanquake (5) Paige Peterson (5) -ITH4Coinomia (4) +MarcoFalke (5) +Johnathan Corgan (5) +Gregory Maxwell (5) +Philip Kaufmann (4) +Peter Todd (4) +Patrick Strateman (4) +Matt Corallo (4) +Karl-Johan Alm (4) +Jeff Garzik (4) David Mercer (4) -4ZEC (4) +Daniel Cousens (4) lpescher (3) -Patrick Strateman (3) -MarcoFalke (3) +Pavel Janík (3) Alfie John (3) +paveljanik (2) aniemerg (2) +Scott (2) Robert C. Seacord (2) +Luke Dashjr (2) +João Barbosa (2) Joe Turgeon (2) -Gregory Maxwell (2) +Jack Gavigan (2) +ITH4Coinomia (2) +Gavin Andresen (2) +zathras-crypto (1) +unsystemizer (1) +mruddy (1) +mrbandrews (1) kazcw (1) -fanquake (1) +isle2983 (1) +instagibbs (1) +dexX7 (1) +calebogden (1) ayleph (1) Tom Ritter (1) -Scott (1) +Stephen (1) S. Matthew English (1) -Philip Kaufmann (1) +Pavel Vasin (1) +Paul Georgiou (1) +Paragon Initiative Enterprises, LLC (1) +Nathaniel Mahieu (1) +Murilo Santana (1) +Matt Quinn (1) Louis Nyffenegger (1) +Leo Arias (1) Lars-Magnus Skog (1) +Jorge Timón (1) Jeffrey Walton (1) +Ian Kelling (1) Gaurav Rana (1) +Forrest Voight (1) +Florian Schmaus (1) Ethan Heilman (1) Eran Tromer (1) +Daniel Kraft (1) Christian von Roques (1) Chirag Davé (1) +Casey Rodarmor (1) Cameron Boehmer (1) Bryan Stitt (1) +Bob McElrath (1) Bitcoin Error Log (1) +Allan Niemerg (1) +Alex van der Peet (1) Alex (1) +Adam Weiss (1) +Adam Brown (1) +4ZEC (1) diff --git a/doc/developer-notes.md b/doc/developer-notes.md index cf836dfbd..2fe0ec73f 100644 --- a/doc/developer-notes.md +++ b/doc/developer-notes.md @@ -105,9 +105,6 @@ error and debugging messages are written there. The -debug=... command-line option controls debugging; running with just -debug or -debug=1 will turn on all categories (and give you a very large debug.log file). -The Qt code routes qDebug() output to debug.log under category "qt": run with -debug=qt -to see it. - **testnet and regtest modes** Run with the -testnet option to run with "play zcash" on the test network, if you diff --git a/doc/files.md b/doc/files.md index 260d36ef3..2d3787912 100644 --- a/doc/files.md +++ b/doc/files.md @@ -10,3 +10,5 @@ * fee_estimates.dat: stores statistics used to estimate minimum transaction fees and priorities required for confirmation * peers.dat: peer IP address database (custom format) * wallet.dat: personal wallet (BDB) with keys and transactions +* .cookie: session RPC authentication cookie (written at start when cookie authentication is used, deleted on shutdown): since 0.12.0 +* onion_private_key: cached Tor hidden service private key for `-listenonion`: since 0.12.0 diff --git a/doc/man/Makefile.am b/doc/man/Makefile.am new file mode 100644 index 000000000..27917a208 --- /dev/null +++ b/doc/man/Makefile.am @@ -0,0 +1 @@ +dist_man1_MANS=zcashd.1 zcash-cli.1 zcash-fetch-params.1 zcash-tx.1 diff --git a/contrib/debian/manpages/zcash-cli.1 b/doc/man/zcash-cli.1 similarity index 54% rename from contrib/debian/manpages/zcash-cli.1 rename to doc/man/zcash-cli.1 index bb0611eb7..9dbefb9e8 100644 --- a/contrib/debian/manpages/zcash-cli.1 +++ b/doc/man/zcash-cli.1 @@ -1,9 +1,12 @@ -.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.3. -.TH ZCASH-CLI "1" "January 2017" "Zcash RPC client version v1.0.5" "User Commands" +.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.4. +.TH ZCASH-CLI "1" "March 2017" "zcash-cli v1.0.8" "User Commands" .SH NAME -zcash-cli \- RPC client for the Zcash daemon +zcash-cli \- manual page for zcash-cli v1.0.8 .SH DESCRIPTION -Zcash RPC client version v1.0.5 +Zcash RPC client version v1.0.8 +.PP +In order to ensure you are adequately protecting your privacy when using Zcash, +please see . .SS "Usage:" .TP zcash\-cli [options] [params] @@ -57,21 +60,20 @@ Username for JSON\-RPC connections \fB\-rpcpassword=\fR .IP Password for JSON\-RPC connections -.PP -SSL options: (see the Bitcoin Wiki for SSL setup instructions) .HP -\fB\-rpcssl\fR +\fB\-rpcclienttimeout=\fR .IP -Use OpenSSL (https) for JSON\-RPC connections -.SH "SEE ALSO" -The full documentation for -.B Zcash -is maintained as a Texinfo manual. If the -.B info -and -.B Zcash -programs are properly installed at your site, the command -.IP -.B info Zcash -.PP -should give you access to the complete manual. +Timeout in seconds during HTTP requests, or 0 for no timeout. (default: +900) +.SH COPYRIGHT +Copyright (C) 2009-2017 The Bitcoin Core Developers +Copyright (C) 2015-2017 The Zcash Developers + +This is experimental software. + +Distributed under the MIT software license, see the accompanying file COPYING +or . + +This product includes software developed by the OpenSSL Project for use in the +OpenSSL Toolkit and cryptographic software written +by Eric Young and UPnP software written by Thomas Bernard. diff --git a/contrib/debian/manpages/zcash-fetch-params.1 b/doc/man/zcash-fetch-params.1 similarity index 100% rename from contrib/debian/manpages/zcash-fetch-params.1 rename to doc/man/zcash-fetch-params.1 diff --git a/doc/man/zcash-tx.1 b/doc/man/zcash-tx.1 new file mode 100644 index 000000000..4bd1b6b1d --- /dev/null +++ b/doc/man/zcash-tx.1 @@ -0,0 +1,97 @@ +.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.4. +.TH ZCASH-TX "1" "March 2017" "zcash-tx v1.0.8" "User Commands" +.SH NAME +zcash-tx \- manual page for zcash-tx v1.0.8 +.SH DESCRIPTION +Zcash zcash\-tx utility version v1.0.8 +.SS "Usage:" +.TP +zcash\-tx [options] [commands] +Update hex\-encoded zcash transaction +.TP +zcash\-tx [options] \fB\-create\fR [commands] +Create hex\-encoded zcash transaction +.SH OPTIONS +.HP +\-? +.IP +This help message +.HP +\fB\-create\fR +.IP +Create new, empty TX. +.HP +\fB\-json\fR +.IP +Select JSON output +.HP +\fB\-txid\fR +.IP +Output only the hex\-encoded transaction id of the resultant transaction. +.HP +\fB\-regtest\fR +.IP +Enter regression test mode, which uses a special chain in which blocks +can be solved instantly. +.HP +\fB\-testnet\fR +.IP +Use the test network +.PP +Commands: +.IP +delin=N +.IP +Delete input N from TX +.IP +delout=N +.IP +Delete output N from TX +.IP +in=TXID:VOUT +.IP +Add input to TX +.IP +locktime=N +.IP +Set TX lock time to N +.IP +nversion=N +.IP +Set TX version to N +.IP +outaddr=VALUE:ADDRESS +.IP +Add address\-based output to TX +.IP +outscript=VALUE:SCRIPT +.IP +Add raw script output to TX +.IP +sign=SIGHASH\-FLAGS +.IP +Add zero or more signatures to transaction. This command requires JSON +registers:prevtxs=JSON object, privatekeys=JSON object. See +signrawtransaction docs for format of sighash flags, JSON objects. +.PP +Register Commands: +.IP +load=NAME:FILENAME +.IP +Load JSON file FILENAME into register NAME +.IP +set=NAME:JSON\-STRING +.IP +Set register NAME to given JSON\-STRING +.SH COPYRIGHT +Copyright (C) 2009-2017 The Bitcoin Core Developers +Copyright (C) 2015-2017 The Zcash Developers + +This is experimental software. + +Distributed under the MIT software license, see the accompanying file COPYING +or . + +This product includes software developed by the OpenSSL Project for use in the +OpenSSL Toolkit and cryptographic software written +by Eric Young and UPnP software written by Thomas Bernard. diff --git a/contrib/debian/manpages/zcashd.1 b/doc/man/zcashd.1 similarity index 85% rename from contrib/debian/manpages/zcashd.1 rename to doc/man/zcashd.1 index eece9c6e5..3fbfe32e6 100644 --- a/contrib/debian/manpages/zcashd.1 +++ b/doc/man/zcashd.1 @@ -1,9 +1,12 @@ -.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.3. -.TH ZCASHD "1" "January 2017" "Zcash Daemon version v1.0.5" "User Commands" +.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.4. +.TH ZCASHD "1" "March 2017" "zcashd v1.0.8" "User Commands" .SH NAME -zcashd \- Network daemon for interacting with the Zcash blockchain +zcashd \- manual page for zcashd v1.0.8 .SH DESCRIPTION -Zcash Daemon version v1.0.5 +Zcash Daemon version v1.0.8 +.PP +In order to ensure you are adequately protecting your privacy when using Zcash, +please see . .SS "Usage:" .TP zcashd [options] @@ -48,6 +51,10 @@ Run in the background as a daemon and accept commands .IP Specify data directory .HP +\fB\-exportdir=\fR +.IP +Specify directory to be used when exporting data +.HP \fB\-dbcache=\fR .IP Set database cache size in megabytes (4 to 16384, default: 100) @@ -141,6 +148,10 @@ Always query for peer addresses via DNS lookup (default: 0) .IP Accept connections from outside (default: 1 if no \fB\-proxy\fR or \fB\-connect\fR) .HP +\fB\-listenonion\fR +.IP +Automatically create Tor hidden service (default: 1) +.HP \fB\-maxconnections=\fR .IP Maintain at most connections to peers (default: 125) @@ -187,6 +198,15 @@ Connect to a node to retrieve peer addresses, and disconnect .IP Specify connection timeout in milliseconds (minimum: 1, default: 5000) .HP +\fB\-torcontrol=\fR: +.IP +Tor control port to use if onion listening enabled (default: +127.0.0.1:9051) +.HP +\fB\-torpassword=\fR +.IP +Tor control port password (default: empty) +.HP \fB\-upnp\fR .IP Use UPnP to map the listening port (default: 0) @@ -266,27 +286,38 @@ Delete all wallet transactions and only recover those parts of the blockchain through \fB\-rescan\fR on startup (1 = keep tx meta data e.g. account owner and payment request information, 2 = drop tx meta data) .PP +ZeroMQ notification options: +.HP +\fB\-zmqpubhashblock=\fR
+.IP +Enable publish hash block in
+.HP +\fB\-zmqpubhashtx=\fR
+.IP +Enable publish hash transaction in
+.HP +\fB\-zmqpubrawblock=\fR
+.IP +Enable publish raw block in
+.HP +\fB\-zmqpubrawtx=\fR
+.IP +Enable publish raw transaction in
+.PP Debugging/Testing options: .HP \fB\-debug=\fR .IP Output debugging information (default: 0, supplying is optional). If is not supplied or if = 1, output -all debugging information. can be: addrman, alert, bench, -coindb, db, lock, rand, rpc, selectcoins, mempool, net, proxy, prune. +all debugging information. can be: addrman, alert, bench, +coindb, db, estimatefee, http, libevent, lock, mempool, net, +partitioncheck, pow, proxy, prune, rand, reindex, rpc, selectcoins, tor, +zmq, zrpc, zrpcunsafe (implies zrpc). .HP -\fB\-gen\fR +\fB\-experimentalfeatures\fR .IP -Generate coins (default: 0) -.HP -\fB\-genproclimit=\fR -.IP -Set the number of threads for coin generation if enabled (\fB\-1\fR = all -cores, default: 1) -.HP -\fB\-equihashsolver=\fR -.IP -Specify the Equihash solver to be used if enabled (default: "default") +Enable use of experimental features .HP \fB\-help\-debug\fR .IP @@ -303,7 +334,7 @@ Prepend debug output with timestamp (default: 1) \fB\-minrelaytxfee=\fR .IP Fees (in BTC/Kb) smaller than this are considered zero fee for relaying -(default: 0.00001) +(default: 0.000001) .HP \fB\-printtoconsole\fR .IP @@ -343,6 +374,30 @@ Set maximum block size in bytes (default: 2000000) Set maximum size of high\-priority/low\-fee transactions in bytes (default: 1000000) .PP +Mining options: +.HP +\fB\-gen\fR +.IP +Generate coins (default: 0) +.HP +\fB\-genproclimit=\fR +.IP +Set the number of threads for coin generation if enabled (\fB\-1\fR = all +cores, default: 1) +.HP +\fB\-equihashsolver=\fR +.IP +Specify the Equihash solver to be used if enabled (default: "default") +.HP +\fB\-mineraddress=\fR +.IP +Send mined coins to a specific single address +.HP +\fB\-minetolocalwallet\fR +.IP +Require that mined blocks use a coinbase address in the local wallet +(default: 1) +.PP RPC server options: .HP \fB\-server\fR @@ -383,25 +438,6 @@ multiple times .IP Set the number of threads to service RPC calls (default: 4) .PP -RPC SSL options: (see the Bitcoin Wiki for SSL setup instructions) -.HP -\fB\-rpcssl\fR -.IP -Use OpenSSL (https) for JSON\-RPC connections -.HP -\fB\-rpcsslcertificatechainfile=\fR -.IP -Server certificate file (default: server.cert) -.HP -\fB\-rpcsslprivatekeyfile=\fR -.IP -Server private key (default: server.pem) -.HP -\fB\-rpcsslciphers=\fR -.IP -Acceptable ciphers (default: -TLSv1.2+HIGH:TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!3DES:@STRENGTH) -.PP Metrics Options (only if \fB\-daemon\fR and \fB\-printtoconsole\fR are not set): .HP \fB\-showmetrics\fR @@ -418,27 +454,14 @@ output (default: 1 if running in a console, 0 otherwise) Number of seconds between metrics refreshes (default: 1 if running in a console, 600 otherwise) .SH COPYRIGHT -Copyright \(co 2009\-2016 The Bitcoin Core Developers -.br -Copyright \(co 2015\-2016 The Zcash Developers -.PP +Copyright (C) 2009-2017 The Bitcoin Core Developers +Copyright (C) 2015-2017 The Zcash Developers + This is experimental software. -.PP + Distributed under the MIT software license, see the accompanying file COPYING -or . -.PP +or . + This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit and cryptographic software written by Eric Young and UPnP software written by Thomas Bernard. -.SH "SEE ALSO" -The full documentation for -.B Zcash -is maintained as a Texinfo manual. If the -.B info -and -.B Zcash -programs are properly installed at your site, the command -.IP -.B info Zcash -.PP -should give you access to the complete manual. diff --git a/doc/multiwallet-qt.md b/doc/multiwallet-qt.md deleted file mode 100644 index 019dbfd49..000000000 --- a/doc/multiwallet-qt.md +++ /dev/null @@ -1,50 +0,0 @@ -*** Warning: This document has not been updated for Zcash and may be inaccurate. *** - -Multiwallet Qt Development and Integration Strategy -=================================================== - -In order to support loading of multiple wallets in bitcoin-qt, a few changes in the UI architecture will be needed. -Fortunately, only four of the files in the existing project are affected by this change. - -Two new classes have been implemented in two new .h/.cpp file pairs, with much of the functionality that was previously -implemented in the BitcoinGUI class moved over to these new classes. - -The two existing files most affected, by far, are bitcoingui.h and bitcoingui.cpp, as the BitcoinGUI class will require -some major retrofitting. - -Only requiring some minor changes is bitcoin.cpp. - -Finally, two new headers and source files will have to be added to bitcoin-qt.pro. - -Changes to class BitcoinGUI ---------------------------- -The principal change to the BitcoinGUI class concerns the QStackedWidget instance called centralWidget. -This widget owns five page views: overviewPage, transactionsPage, addressBookPage, receiveCoinsPage, and sendCoinsPage. - -A new class called *WalletView* inheriting from QStackedWidget has been written to handle all renderings and updates of -these page views. In addition to owning these five page views, a WalletView also has a pointer to a WalletModel instance. -This allows the construction of multiple WalletView objects, each rendering a distinct wallet. - -A second class called *WalletFrame* inheriting from QFrame has been written as a container for embedding all wallet-related -controls into BitcoinGUI. At present it contains the WalletView instances for the wallets and does little more than passing on messages -from BitcoinGUI to the currently selected WalletView. It is a WalletFrame instance -that takes the place of what used to be centralWidget in BitcoinGUI. The purpose of this class is to allow future -refinements of the wallet controls with minimal need for further modifications to BitcoinGUI, thus greatly simplifying -merges while reducing the risk of breaking top-level stuff. - -Changes to bitcoin.cpp ----------------------- -bitcoin.cpp is the entry point into bitcoin-qt, and as such, will require some minor modifications to provide hooks for -multiple wallet support. Most importantly will be the way it instantiates WalletModels and passes them to the -singleton BitcoinGUI instance called window. Formerly, BitcoinGUI kept a pointer to a single instance of a WalletModel. -The initial change required is very simple: rather than calling `window.setWalletModel(&walletModel);` we perform the -following two steps: - - window.addWallet("~Default", &walletModel); - window.setCurrentWallet("~Default"); - -The string parameter is just an arbitrary name given to the default wallet. It's been prepended with a tilde to avoid name collisions in the future with additional wallets. - -The shutdown call `window.setWalletModel(0)` has also been removed. In its place is now: - -window.removeAllWallets(); diff --git a/doc/payment-api.md b/doc/payment-api.md index 69877e5db..c4127b223 100644 --- a/doc/payment-api.md +++ b/doc/payment-api.md @@ -91,6 +91,7 @@ Asynchronous calls return an OperationStatus object which is a JSON object with Depending on the type of asynchronous call, there may be other key-value pairs. For example, a z_sendmany operation will also include the following in an OperationStatus object: +* method : name of operation e.g. z_sendmany * params : an object containing the parameters to z_sendmany Currently, as soon as you retrieve the operation status for an operation which has finished, that is it has either succeeded, failed, or been cancelled, the operation and any associated information is removed. diff --git a/doc/release-notes/release-notes-1.0.6.md b/doc/release-notes/release-notes-1.0.6.md new file mode 100644 index 000000000..c1ae03605 --- /dev/null +++ b/doc/release-notes/release-notes-1.0.6.md @@ -0,0 +1,148 @@ +Cory Fields (4): + Depends: Add ZeroMQ package + travis: install a recent libzmq and pyzmq for tests + build: Make use of ZMQ_CFLAGS + build: match upstream build change + +Daira Hopwood (2): + Better error reporting for the !ENABLE_WALLET && ENABLE_MINING case. + Address @str4d's comment about the case where -gen is not set. Also avoid shadowing mineToLocalWallet variable. + +Daniel Cousens (3): + init: amend ZMQ flag names + init: add zmq to debug categories + zmq: prepend zmq to debug messages + +Jack Grigg (33): + Update comment + Remove OpenSSL PRNG reseeding + Address review comments + Fix linking error in CreateJoinSplit + Add compile flag to disable compilation of mining code + Upgrade OpenSSL to 1.1.0d + Show all JoinSplit components in getrawtransaction and decoderawtransaction + Use a more specific exception class for note decryption failure + Switch miner to P2PKH, add -mineraddress option + Update help text for mining options + Correct #ifdef nesting of miner headers and helper functions + Add ZMQ libs to zcash-gtest + Fix python syntax in ZMQ RPC test + [qa] py2: Unfiddle strings into bytes explicitly in ZMQ RPC test + Bitcoin -> Zcash in ZMQ docs + Add ZeroMQ license to contrib/debian/copyright + [depends] ZeroMQ 4.2.1 + Clarify that user only needs libzmq if not using depends system + Bump suggested ZMQ Debian package to 4.1 series + Add -minetolocalwallet flag, enforced on -mineraddress + Add test to check for presence of vpub_old & vpub_new in getrawtransaction + Add a flag for enabling experimental features + Require -experimentalmode for wallet encryption + Migrate Zcash-specific code to UniValue + Manually iterate over UniValue arrays in tests + Remove JSON Spirit from contrib/debian/copyright + unsigned int -> size_t for comparing with UniValue.size() + [cleanup] Remove unused import + [cleanup] Simplify test code + Squashed 'src/univalue/' content from commit 9ef5b78 + Update UniValue includes in Zcash-specific code + UniValue::getValues const reference + Get rid of fPlus argument to FormatMoney in Zcash-specific code + +Jeff Garzik (4): + Add ZeroMQ support. Notify blocks and transactions via ZeroMQ + UniValue: prefer .size() to .count(), to harmonize w/ existing tree + UniValue: export NullUniValue global constant + Convert tree to using univalue. Eliminate all json_spirit uses. + +Johnathan Corgan (5): + zmq: require version 4.x or newer of libzmq + zmq: update and cleanup build-unix, release-notes, and zmq docs + autotools: move checking for zmq library to common area in configure.ac + zmq: update docs to reflect feature is compiled in automatically if possible + zmq: point API link to 4.0 as that is what we are conforming to [Trivial] + +Jonas Schnelli (24): + QA: Add ZeroMQ RPC test + depends: fix platform specific packages variable + [travis] add zmq python module + use CBlockIndex* insted of uint256 for UpdatedBlockTip signal + [ZMQ] refactor message string + [ZMQ] append a message sequence number to every ZMQ notification + fix rpc-tests.sh + extend conversion to UniValue + expicit set UniValue type to avoid empty values + special threatment for null,true,false because they are non valid json + univalue: add support for real, fix percision and make it json_spirit compatible + univalue: correct bool support + fix rpc unit test, plain numbers are not JSON compatible object + remove JSON Spirit UniValue wrapper + Remove JSON Spirit wrapper, remove JSON Spirit leftovers + fix rpc batching univalue issue + fix missing univalue types during constructing + fix univalue json parse tests + univalue: add type check unit tests + fix util_tests.cpp clang warnings + fix rpcmining/getblocktemplate univalue transition logic error + remove univalue, prepare for subtree + [Univalue] add univalue over subtree + remove $(@F) and subdirs from univalue make + +João Barbosa (2): + Add UpdatedBlockTip signal to CMainSignals and CValidationInterface + Fix ZMQ Notification initialization and shutdown + +Paragon Initiative Enterprises, LLC (1): + Use libsodium's CSPRNG instead of OpenSSL's + +Scott (1): + Update random.h + +Sean Bowe (3): + Bump protocol version in release process if necessary. + Fix use after free in transaction_tests. + Update libsnark. + +Simon Liu (16): + Closes #2057 by adding extra zrpcunsafe logging + Update z_sendmany logging + Add test to verify z_sendmany logging + Update test to verify order of zrpcunsafe log messages + Closes #2045 by allowing z_sendmany with 0 fee + Closes #2024 by documenting and testing method field in z_getoperationstatus + Add parameter interaction, where zrpcunsafe implies zrpc + Update zrpc vs zrpcunsafe logging in z_sendmany operation + Add test for z_sendmany with fee of 0 + Update test to check for more joinsplit related fields in getrawtransaction + Add comment about fix for #2026. + Update test to check for updated error messages in AmountFromValue(). + Bump version to 1.0.6 as part of release process + Debian man pages updated as part of release process + Update release notes as part of release process + Update debian changelog as part of release process + +Wladimir J. van der Laan (10): + Simplify RPCclient, adapt json_parse_error test + util: Add ParseInt64 and ParseDouble functions + univalue: add strict type checking + Don't go through double in AmountFromValue and ValueFromAmount + Get rid of fPlus argument to FormatMoney + Changes necessary now that zero values accepted in AmountFromValue + rpc: Accept scientific notation for monetary amounts in JSON + rpc: Make ValueFromAmount always return 8 decimals + univalue: Avoid unnecessary roundtrip through double for numbers + util: use locale-independent parsing in ParseDouble + +fanquake (3): + [depends] zeromq 4.0.7 + [depends] ZeroMQ 4.1.4 + [depends] ZeroMQ 4.1.5 + +isle2983 (1): + [copyright] add MIT License copyright header to zmq_sub.py + +mrbandrews (1): + Fixes ZMQ startup with bad arguments. + +paveljanik (1): + [Trivial] start the help texts with lowercase + diff --git a/doc/release-notes/release-notes-1.0.7-1.md b/doc/release-notes/release-notes-1.0.7-1.md new file mode 100644 index 000000000..6474eb628 --- /dev/null +++ b/doc/release-notes/release-notes-1.0.7-1.md @@ -0,0 +1,4 @@ +Jay Graber (3): + Add -t to git fetch for release-notes.py + Update version to 1.0.7-1 + Update auto-generated manpages to 1.0.7-1 diff --git a/doc/release-notes/release-notes-1.0.7.md b/doc/release-notes/release-notes-1.0.7.md new file mode 100644 index 000000000..94681f0d8 --- /dev/null +++ b/doc/release-notes/release-notes-1.0.7.md @@ -0,0 +1,165 @@ +Adam Weiss (1): + Buffer log messages and explicitly open logs + +Alex van der Peet (1): + New RPC command disconnectnode + +Allan Niemerg (1): + Pause mining during joinsplit creation + +Casey Rodarmor (1): + Don't share objects between TestInstances + +Cory Fields (2): + locking: teach Clang's -Wthread-safety to cope with our scoped lock macros + locking: add a quick example of GUARDED_BY + +Daira Hopwood (1): + Don't assume sizes of unsigned short and unsigned int in GetSizeOfCompactSize and WriteCompactSize. Fixes #2137 + +Daniel Kraft (1): + Fix univalue handling of \u0000 characters. + +Florian Schmaus (1): + Add BITCOIND_SIGTERM_TIMEOUT to OpenRC init scripts + +Forrest Voight (1): + When processing RPC commands during warmup phase, parse the request object before returning an error so that id value can be used in the response. + +Gavin Andresen (2): + configure --enable-debug changes + Testing infrastructure: mocktime fixes + +Jack Grigg (11): + Remove reference to -reindex-chainstate + Treat metrics screen as non-interactive for now + Adjust gen-manpages.sh for Zcash, use in Debian builds + Regenerate and collate Zcash manpages, delete Bitcoin ones + Update release process with gen-manpages.sh + Adjust blockheaderToJSON() for Zcash block header + Adjust fundrawtransaction RPC test for Zcash + Re-encode t-addrs in disablewallet.py with Zcash prefixes + BTC -> ZEC in paytxfee RPC docs + Update default RPC port in help strings + Fix typo in listbanned RPC keys + +Jay Graber (4): + Add rpc test for prioritisetransaction + Inc num of txs in test mempool + Update release to 1.0.7, generate manpages + Add 1.0.7 release notes and update authors.md + +Jonas Schnelli (23): + [net] extend core functionallity for ban/unban/listban + [RPC] add setban/listbanned/clearbanned RPC commands + [QA] add setban/listbanned/clearbanned tests + [net] remove unused return type bool from CNode::Ban() + [RPC] extend setban to allow subnets + rename json field "bannedtill" to "banned_until" + setban: rewrite to UniValue, allow absolute bantime + fix CSubNet comparison operator + setban: add RPCErrorCode + add RPC tests for setban & disconnectnode + fix missing lock in CNode::ClearBanned() + setban: add IPv6 tests + fix lock issue for QT node diconnect and RPC disconnectnode + fundrawtransaction tests + UniValue: don't escape solidus, keep espacing of reverse solidus + [REST] add JSON support for /rest/headers/ + [QA] fix possible reorg issue in rawtransaction.py/fundrawtransaction.py RPC test + [QA] remove rawtransactions.py from the extended test list + [QA] add testcases for parsing strings as values + [bitcoin-cli] improve error output + fix and extend CBitcoinExtKeyBase template + extend bip32 tests to cover Base58c/CExtKey decode + don't try to decode invalid encoded ext keys + +Jorge Timón (1): + Consensus: Refactor: Separate Consensus::CheckTxInputs and GetSpendHeight in CheckInputs + +Leo Arias (1): + Fix the path to the example configuration + +Luke Dashjr (1): + Fix various warnings + +Matt Corallo (4): + Small tweaks to CCoinControl for fundrawtransaction + Add FundTransaction method to wallet + Add fundrawtransaction RPC method + Assert on probable deadlocks if the second lock isnt try_lock + +Murilo Santana (1): + Fix sha256sum on busybox by using -c instead of --check + +Paul Georgiou (1): + Update Linearize tool to support Windows paths + +Pavel Vasin (1): + remove unused inv from ConnectTip() + +Peter Todd (2): + Add getblockheader RPC call + Improve comment explaining purpose of MAX_MONEY constant + +Philip Kaufmann (3): + use const references where appropriate + [init] add -blockversion help and extend -upnp help + make CAddrMan::size() return the correct type of size_t + +Pieter Wuille (3): + Do not ask a UI question from bitcoind + Add DummySignatureCreator which just creates zeroed sigs + Reduce checkpoints' effect on consensus. + +Simon Liu (14): + Alert 1000 + Alert 1001 + Add assert to check alert message length is valid + Fix bug where test was generating but not saving keys to wallet on disk. + Update founders reward addresses for testnet + Keep first three original testnet fr addresses so existing coinbase transactions on testnet remain valid during upgrade. New addresses will be used starting from block 53127. + Closes #2083 and #2088. Update release process documentation + Closes #2084. Fix incorrect year in timestamp. + Closes #2112 where z_getoperationresult could return stale status. + Add mainnet checkpoint at block 67500 + Add testnet checkpoint at block 38000 + Closes #1969. Default fee now sufficient for large shielded tx. + Part of #1969. Changing min fee calculation also changes the dust threshold. + Part of #1969. Update tests to avoid error 'absurdly high fee' from change in min fee calc. + +Stephen (1): + Add paytxfee to getwalletinfo, warnings to getnetworkinfo + +Wladimir J. van der Laan (10): + rpc: make `gettxoutsettinfo` run lock-free + test: Move reindex test to standard tests + rpc: Remove chain-specific RequireRPCPassword + univalue: Avoid unnecessary roundtrip through double for numbers + rpc: Accept strings in AmountFromValue + Fix crash in validateaddress with -disablewallet + Improve proxy initialization + tests: Extend RPC proxy tests + build: Remove -DBOOST_SPIRIT_THREADSAFE + tests: Fix bitcoin-tx signing testcase + +dexX7 (1): + Return all available information via validateaddress + +mruddy (1): + add tests for the decodescript rpc. add mention of the rpc regression tests to the testing seciton of the main readme. + +nomnombtc (9): + add script to generate manpages with help2man + add gen-manpages.sh description to README.md + add autogenerated manpages by help2man + add doc/man/Makefile.am to include manpages + add doc/man to subdir if configure flag --enable-man is set + add conditional for --enable-man, default is yes + change help string --enable-man to --disable-man + regenerated all manpages with commit tag stripped, also add bitcoin-tx + improved gen-manpages.sh, includes bitcoin-tx and strips commit tag, now also runs binaries from build dir by default, added variables for more control + +zathras-crypto (1): + Exempt unspendable transaction outputs from dust checks + diff --git a/doc/release-notes/release-notes-1.0.8.md b/doc/release-notes/release-notes-1.0.8.md new file mode 100644 index 000000000..7d6460c88 --- /dev/null +++ b/doc/release-notes/release-notes-1.0.8.md @@ -0,0 +1,170 @@ +Adam Brown (1): + [doc] Update port in tor.md + +Bob McElrath (1): + Add explicit shared_ptr constructor due to C++11 error + +Cory Fields (2): + libevent: add depends + libevent: Windows reuseaddr workaround in depends + +Daira Hopwood (15): + Remove src/qt. + License updates for removal of src/qt. + Correct license text for LGPL. + Remove QT gunk from Makefiles. + Remove some more QT-related stragglers. + Update documentation for QT removal. + Update which libraries are allowed to be linked to zcashd by symbol-check.py. + Remove NO_QT make option. + .gitignore cache/ and venv-mnf/ + Remove unused packages and patches. + Delete -rootcertificates from bash completion script. + Line-wrap privacy notice. Use <> around URL and end sentence with '.'. Include privacy notice in help text for zcashd -help. + Update version numbers. + Improvement to release process doc. + Generate man pages. + +Daniel Cousens (1): + torcontrol: only output disconnect if -debug=tor + +Gregory Maxwell (3): + Avoid a compile error on hosts with libevent too old for EVENT_LOG_WARN. + Do not absolutely protect local peers from eviction. + Decide eviction group ties based on time. + +Ian Kelling (1): + Docs: add details to -rpcclienttimeout doc + +Jack Gavigan (2): + Removed markdown from COPYING + Updated the Bitcoin Core copyright statement + +Jack Grigg (25): + Add anchor to output of getblock + Migrate IncrementalMerkleTree memory usage calls + Add tests for getmempoolinfo + Usability improvements for z_importkey + Implement an AtomicTimer + Use AtomicTimer for more accurate local solution rate + Metrics: Move local solution rate into stats + Metrics: Improve mining status + Expand on reasons for mining being paused + Simplify z_importkey by making rescan a string + Revert "Closes #1680, temporary fix for rpc deadlock inherited from upstream." + Add libevent to zcash-gtest + [depends] libevent 2.1.8 + Test boolean fallback in z_importkey + Require that z_importkey height parameter be in valid range + Update LocalSolPS test + Add AtomicTimer tests + Revert "Revert "rpc-tests: re-enable rpc-tests for Windows"" + Wrap error string + Fix typo + torcontrol: Improve comments + torcontrol: Add unit tests for Tor reply parsers + torcontrol: Fix ParseTorReplyMapping + torcontrol: Check for reading errors in ReadBinaryFile + torcontrol: Log invalid parameters in Tor reply strings where meaningful + +Jay Graber (5): + Document returned results of submitblock + Edit release-process.md for clarity + Add security warning to zcash-cli --help and --version message output + Add security warning to zcashd metrics display + Add security message to license text, rm url from translation string + +Jonas Schnelli (1): + Fix torcontrol.cpp unused private field warning + +Karl-Johan Alm (4): + Added std::unique_ptr<> wrappers with deleters for libevent modules. + Switched bitcoin-cli.cpp to use RAII unique pointers with deleters. + Added some simple tests for the RAII-style events. + Added EVENT_CFLAGS to test makefile to explicitly include libevent headers. + +Luke Dashjr (1): + Skip RAII event tests if libevent is built without event_set_mem_functions + +MarcoFalke (2): + [doc] [tor] Clarify when to use bind + torcontrol debug: Change to a blanket message that covers both cases + +Matt Quinn (1): + Consolidate individual references to the current maximum peer connection value of 125 into a single constant declaration. + +Nathaniel Mahieu (1): + Clarify documentation for running a tor node + +Patrick Strateman (1): + Remove vfReachable and modify IsReachable to only use vfLimited. + +Pavel Janík (3): + Implement REST mempool API, add test and documentation. + Prevent -Wshadow warnings with gcc versions 4.8.5, 5.3.1 and 6.2.1. + Make some global variables less-global (static) + +Peter Todd (2): + Better error message if Tor version too old + Connect to Tor hidden services by default + +Pieter Wuille (3): + Implement accurate memory accounting for mempool + Separate core memory usage computation in core_memusage.h + Fix interrupted HTTP RPC connection workaround for Python 3.5+ + +Sean Bowe (2): + Introduce librustzcash and Rust to depends system. + Allow Rust-language related assets to be disabled with `--disable-rust`. + +Simon Liu (4): + Remove stale Qt comments and dead code + Remove QT translation support files + Remove redundant gui options from build scripts + Closes #2186. RPC getblock now accepts height or hash. + +Wladimir J. van der Laan (28): + doc: remove documentation for rpcssl + qa: Remove -rpckeepalive tests from httpbasics + Remove rpc_boostasiotocnetaddr test + build: build-system changes for libevent + tests: GET requests cannot have request body, use POST in rest.py + evhttpd implementation + Implement RPCTimerHandler for Qt RPC console + Document options for new HTTP/RPC server in --help + Fix race condition between starting HTTP server thread and setting EventBase() + Move windows socket init to utility function + Revert "rpc-tests: re-enable rpc-tests for Windows" + init: Ignore SIGPIPE + http: Disable libevent debug logging, if not explicitly enabled + rpc: Split option -rpctimeout into -rpcservertimeout and -rpcclienttimeout + Make RPC tests cope with server-side timeout between requests + chain: define enum used as bit field as uint32_t + auto_ptr → unique_ptr + bitcoin-cli: More detailed error reporting + depends: Add libevent compatibility patch for windows + bitcoin-cli: Make error message less confusing + test: Avoid ConnectionResetErrors during RPC tests + net: Automatically create hidden service, listen on Tor + torcontrol improvements and fixes + doc: update docs for Tor listening + tests: Disable Tor interaction + Fix memleak in TorController [rework] + tor: Change auth order to only use HASHEDPASSWORD if -torpassword + torcontrol: Explicitly request RSA1024 private key + +calebogden (1): + Fixing typos on security-check.py and torcontrol.cpp + +fanquake (1): + [depends] libevent 2.1.7rc + +instagibbs (1): + Add common failure cases for rpc server connection failure + +paveljanik (1): + [TRIVIAL] Fix typo: exactmath -> exactmatch + +unsystemizer (1): + Clarify `listenonion` + diff --git a/doc/release-process.md b/doc/release-process.md index c4b22f3fc..b4e2a3565 100644 --- a/doc/release-process.md +++ b/doc/release-process.md @@ -4,7 +4,7 @@ Meta: There should always be a single release engineer to disambiguate responsib ## Pre-release -Check all of the following: +The following should have been checked well in advance of the release: - All dependencies have been updated as appropriate: - BDB @@ -16,6 +16,9 @@ Check all of the following: - miniupnpc - OpenSSL + +## Release process + ## A. Define the release version as: $ ZCASH_RELEASE=MAJOR.MINOR.REVISION(-BUILD_STRING) @@ -30,19 +33,16 @@ previous release: $ ZCASH_RELEASE_PREV=1.0.0-beta1 ## B. Create a new release branch / github PR -### B1. Update (commit) version in sources + +### B1. Check that you are up-to-date with current master, then create a release branch. + +### B2. Update (commit) version in sources. README.md src/clientversion.h configure.ac contrib/gitian-descriptors/gitian-linux.yml - Build and commit to update versions, and then perform the following commands: - - help2man -n "RPC client for the Zcash daemon" src/zcash-cli > contrib/DEBIAN/manpages/zcash-cli.1 - help2man -n "Network daemon for interacting with the Zcash blockchain" src/zcashd > contrib/DEBIAN/manpages/zcashd.1 - - In `configure.ac` and `clientversion.h`: - Increment `CLIENT_VERSION_BUILD` according to the following schema: @@ -56,29 +56,46 @@ In `configure.ac` and `clientversion.h`: - Change `CLIENT_VERSION_IS_RELEASE` to false while Zcash is in beta-test phase. -### B2. Write release notes +If this release changes the behavior of the protocol or fixes a serious bug, we may +also wish to change the `PROTOCOL_VERSION` in `version.h`. + +Commit these changes. (Be sure to do this before building, or else the built binary will include the flag `-dirty`) + +Build by running `./zcutil/build.sh`. + +Then perform the following command: + + $ bash contrib/devtools/gen-manpages.sh + +Commit the changes. + +### B3. Generate release notes Run the release-notes.py script to generate release notes and update authors.md file. For example: $ python zcutil/release-notes.py --version $ZCASH_RELEASE +Add the newly created release notes to the Git repository: + + $ git add doc/release-notes/release-notes-$ZCASH_RELEASE.md + Update the Debian package changelog: export DEBVERSION="${ZCASH_RELEASE}" export DEBEMAIL="${DEBEMAIL:-team@z.cash}" export DEBFULLNAME="${DEBFULLNAME:-Zcash Company}" - dch -v $DEBVERSION -D jessie -c contrib/DEBIAN/changelog + dch -v $DEBVERSION -D jessie -c contrib/debian/changelog (`dch` comes from the devscripts package.) -### B3. Change the network magics +### B4. Change the network magics If this release breaks backwards compatibility, change the network magic numbers. Set the four `pchMessageStart` in `CTestNetParams` in `chainparams.cpp` to random values. -### B4. Merge the previous changes +### B5. Merge the previous changes Do the normal pull-request, review, testing process for this release PR. @@ -94,8 +111,11 @@ Run `./fetch-params.sh`. ## D. Make tag for the newly merged result -In this example, we ensure master is up to date with the -previous merged PR, then: +Checkout master and pull the latest version to ensure master is up to date with the release PR which was merged in before. + +Check the last commit on the local and remote versions of master to make sure they are the same. + +Then create the git tag: $ git tag -s v${ZCASH_RELEASE} $ git push origin v${ZCASH_RELEASE} diff --git a/doc/tor.md b/doc/tor.md index 61549b631..ce717515a 100644 --- a/doc/tor.md +++ b/doc/tor.md @@ -5,7 +5,7 @@ TOR SUPPORT IN ZCASH It is possible to run Zcash as a Tor hidden service, and connect to such services. -The following directions assume you have a Tor proxy running on port 9050. Many distributions default to having a SOCKS proxy listening on port 9050, but others may not. In particular, the Tor Browser Bundle defaults to listening on a random port. See [Tor Project FAQ:TBBSocksPort](https://www.torproject.org/docs/faq.html.en#TBBSocksPort) for how to properly +The following directions assume you have a Tor proxy running on port 9050. Many distributions default to having a SOCKS proxy listening on port 9050, but others may not. In particular, the Tor Browser Bundle defaults to listening on port 9150. See [Tor Project FAQ:TBBSocksPort](https://www.torproject.org/docs/faq.html.en#TBBSocksPort) for how to properly configure Tor. @@ -72,9 +72,14 @@ In a typical situation, where you're only reachable via Tor, this should suffice ./zcashd -proxy=127.0.0.1:9050 -externalip=zctestseie6wxgio.onion -listen -(obviously, replace the Onion address with your own). If you don't care too much -about hiding your node, and want to be reachable on IPv4 as well, additionally -specify: +(obviously, replace the Onion address with your own). It should be noted that you still +listen on all devices and another node could establish a clearnet connection, when knowing +your address. To mitigate this, additionally bind the address of your Tor proxy: + + ./bitcoind ... -bind=127.0.0.1 + +If you don't care too much about hiding your node, and want to be reachable on IPv4 +as well, use `discover` instead: ./zcashd ... -discover @@ -86,7 +91,37 @@ for normal IPv4/IPv6 communication, use: ./zcashd -onion=127.0.0.1:9050 -externalip=zctestseie6wxgio.onion -discover -3. Connect to a Zcash hidden server +3. Automatically listen on Tor +-------------------------------- + +Starting with Tor version 0.2.7.1 it is possible, through Tor's control socket +API, to create and destroy 'ephemeral' hidden services programmatically. +Zcash has been updated to make use of this. + +This means that if Tor is running (and proper authentication has been configured), +Zcash automatically creates a hidden service to listen on. Zcash will also use Tor +automatically to connect to other .onion nodes if the control socket can be +successfully opened. This will positively affect the number of available .onion +nodes and their usage. + +This new feature is enabled by default if Zcash is listening (`-listen`), and +requires a Tor connection to work. It can be explicitly disabled with `-listenonion=0` +and, if not disabled, configured using the `-torcontrol` and `-torpassword` settings. +To show verbose debugging information, pass `-debug=tor`. + +Connecting to Tor's control socket API requires one of two authentication methods to be +configured. For cookie authentication the user running zcashd must have write access +to the `CookieAuthFile` specified in Tor configuration. In some cases this is +preconfigured and the creation of a hidden service is automatic. If permission problems +are seen with `-debug=tor` they can be resolved by adding both the user running tor and +the user running zcashd to the same group and setting permissions appropriately. On +Debian-based systems the user running zcashd can be added to the debian-tor group, +which has the appropriate permissions. An alternative authentication method is the use +of the `-torpassword` flag and a `hash-password` which can be enabled and specified in +Tor configuration. + + +4. Connect to a Zcash hidden server ----------------------------------- To test your set-up, you might want to try connecting via Tor on a different computer to just a diff --git a/doc/translation_process.md b/doc/translation_process.md deleted file mode 100644 index 6f443ef0e..000000000 --- a/doc/translation_process.md +++ /dev/null @@ -1,114 +0,0 @@ -*** Warning: This document has not been updated for Zcash and may be inaccurate. *** - - -Translations -============ - -The Bitcoin-Core project has been designed to support multiple localisations. This makes adding new phrases, and completely new languages easily achievable. For managing all application translations, Bitcoin-Core makes use of the Transifex online translation management tool. - -### Helping to translate (using Transifex) -Transifex is setup to monitor the Github repo for updates, and when code containing new translations is found, Transifex will process any changes. It may take several hours after a pull-request has been merged, to appear in the Transifex web interface. - -Multiple language support is critical in assisting Bitcoin’s global adoption, and growth. One of Bitcoin’s greatest strengths is cross-boarder money transfers, any help making that easier is greatly appreciated. - -See the [Transifex Bitcoin project](https://www.transifex.com/projects/p/bitcoin/) to assist in translations. You should also join the translation mailing list for announcements - see details below. - -### Writing code with translations -We use automated scripts to help extract translations in both Qt, and non-Qt source files. It is rarely necessary to manually edit the files in `src/qt/locale/`. The translation source files must adhere to the following format: -`bitcoin_xx_YY.ts or bitcoin_xx.ts` - -`src/qt/locale/bitcoin_en.ts` is treated in a special way. It is used as the source for all other translations. Whenever a string in the source code is changed, this file must be updated to reflect those changes. A custom script is used to extract strings from the non-Qt parts. This script makes use of `gettext`, so make sure that utility is installed (ie, `apt-get install gettext` on Ubuntu/Debian). Once this has been updated, `lupdate` (included in the Qt SDK) is used to update `bitcoin_en.ts`. - -To automatically regenerate the `bitcoin_en.ts` file, run the following commands: -```sh -cd src/ -make translate -``` - -`contrib/bitcoin-qt.pro` takes care of generating `.qm` (binary compiled) files from `.ts` (source files) files. It’s mostly automated, and you shouldn’t need to worry about it. - -**Example Qt translation** -```cpp -QToolBar *toolbar = addToolBar(tr("Tabs toolbar")); -``` - -### Creating a pull-request -For general PRs, you shouldn’t include any updates to the translation source files. They will be updated periodically, primarily around pre-releases, allowing time for any new phrases to be translated before public releases. This is also important in avoiding translation related merge conflicts. - -When an updated source file is merged into the Github repo, Transifex will automatically detect it (although it can take several hours). Once processed, the new strings will show up as "Remaining" in the Transifex web interface and are ready for translators. - -To create the pull-request, use the following commands: -``` -git add src/qt/bitcoinstrings.cpp src/qt/locale/bitcoin_en.ts -git commit -``` - -### Creating a Transifex account -Visit the [Transifex Signup](https://www.transifex.com/signup/) page to create an account. Take note of your username and password, as they will be required to configure the command-line tool. - -You can find the Bitcoin translation project at [https://www.transifex.com/projects/p/bitcoin/](https://www.transifex.com/projects/p/bitcoin/). - -### Installing the Transifex client command-line tool -The client it used to fetch updated translations. If you are having problems, or need more details, see [http://docs.transifex.com/developer/client/setup](http://docs.transifex.com/developer/client/setup) - -**For Linux and Mac** - -`pip install transifex-client` - -Setup your transifex client config as follows. Please *ignore the token field*. - -```ini -nano ~/.transifexrc - -[https://www.transifex.com] -hostname = https://www.transifex.com -password = PASSWORD -token = -username = USERNAME -``` - -**For Windows** - -Please see [http://docs.transifex.com/developer/client/setup#windows](http://docs.transifex.com/developer/client/setup#windows) for details on installation. - -The Transifex Bitcoin project config file is included as part of the repo. It can be found at `.tx/config`, however you shouldn’t need change anything. - -### Synchronising translations -To assist in updating translations, we have created a script to help. - -1. `python contrib/devtools/update-translations.py` -2. Update `src/qt/bitcoin.qrc` manually or via - `ls src/qt/locale/*ts|xargs -n1 basename|sed 's/\(bitcoin_\(.*\)\).ts/locale\/\1.qm<\/file>/'` -3. Update `src/qt/Makefile.am` manually or via - `ls src/qt/locale/*ts|xargs -n1 basename|sed 's/\(bitcoin_\(.*\)\).ts/ locale\/\1.ts \\/'` -4. `git add` new translations from `src/qt/locale/` - -**Do not directly download translations** one by one from the Transifex website, as we do a few post-processing steps before committing the translations. - -### Handling Plurals (in source files) -When new plurals are added to the source file, it's important to do the following steps: - -1. Open `bitcoin_en.ts` in Qt Linguist (included in the Qt SDK) -2. Search for `%n`, which will take you to the parts in the translation that use plurals -3. Look for empty `English Translation (Singular)` and `English Translation (Plural)` fields -4. Add the appropriate strings for the singular and plural form of the base string -5. Mark the item as done (via the green arrow symbol in the toolbar) -6. Repeat from step 2, until all singular and plural forms are in the source file -7. Save the source file - -### Translating a new language -To create a new language template, you will need to edit the languages manifest file `src/qt/bitcoin.qrc` and add a new entry. Below is an example of the english language entry. - -```xml - - locale/bitcoin_en.qm - ... - -``` - -**Note:** that the language translation file **must end in `.qm`** (the compiled extension), and not `.ts`. - -### Questions and general assistance -The Bitcoin-Core translation maintainers include *tcatm, seone, Diapolo, wumpus and luke-jr*.You can find them, and others, in the Freenode IRC chatroom - `irc.freenode.net #bitcoin-dev`. - -If you are a translator, you should also subscribe to the mailing list, https://groups.google.com/forum/#!forum/bitcoin-translators. Announcements will be posted during application pre-releases to notify translators to check for updates. diff --git a/doc/translation_strings_policy.md b/doc/translation_strings_policy.md index 1c555b1fc..c370dba24 100644 --- a/doc/translation_strings_policy.md +++ b/doc/translation_strings_policy.md @@ -10,8 +10,6 @@ How to translate? To mark a message as translatable -- In GUI source code (under `src/qt`): use `tr("...")` - - In non-GUI source code (under `src`): use `_("...")` No internationalization is used for e.g. developer scripts outside `src`. diff --git a/doc/zmq.md b/doc/zmq.md new file mode 100644 index 000000000..e23c0937c --- /dev/null +++ b/doc/zmq.md @@ -0,0 +1,107 @@ +# Block and Transaction Broadcasting With ZeroMQ + +[ZeroMQ](http://zeromq.org/) is a lightweight wrapper around TCP +connections, inter-process communication, and shared-memory, +providing various message-oriented semantics such as publish/subcribe, +request/reply, and push/pull. + +The Zcash daemon can be configured to act as a trusted "border +router", implementing the zcash wire protocol and relay, making +consensus decisions, maintaining the local blockchain database, +broadcasting locally generated transactions into the network, and +providing a queryable RPC interface to interact on a polled basis for +requesting blockchain related data. However, there exists only a +limited service to notify external software of events like the arrival +of new blocks or transactions. + +The ZeroMQ facility implements a notification interface through a set +of specific notifiers. Currently there are notifiers that publish +blocks and transactions. This read-only facility requires only the +connection of a corresponding ZeroMQ subscriber port in receiving +software; it is not authenticated nor is there any two-way protocol +involvement. Therefore, subscribers should validate the received data +since it may be out of date, incomplete or even invalid. + +ZeroMQ sockets are self-connecting and self-healing; that is, +connections made between two endpoints will be automatically restored +after an outage, and either end may be freely started or stopped in +any order. + +Because ZeroMQ is message oriented, subscribers receive transactions +and blocks all-at-once and do not need to implement any sort of +buffering or reassembly. + +## Prerequisites + +The ZeroMQ feature in Zcash requires ZeroMQ API version 4.x or +newer, which you will need to install if you are not using the depends +system. Typically, it is packaged by distributions as something like +*libzmq5-dev*. The C++ wrapper for ZeroMQ is *not* needed. + +In order to run the example Python client scripts in contrib/ one must +also install *python-zmq*, though this is not necessary for daemon +operation. + +## Enabling + +By default, the ZeroMQ feature is automatically compiled in if the +necessary prerequisites are found. To disable, use --disable-zmq +during the *configure* step of building zcashd: + + $ ./configure --disable-zmq (other options) + +To actually enable operation, one must set the appropriate options on +the commandline or in the configuration file. + +## Usage + +Currently, the following notifications are supported: + + -zmqpubhashtx=address + -zmqpubhashblock=address + -zmqpubrawblock=address + -zmqpubrawtx=address + +The socket type is PUB and the address must be a valid ZeroMQ socket +address. The same address can be used in more than one notification. + +For instance: + + $ zcashd -zmqpubhashtx=tcp://127.0.0.1:28332 \ + -zmqpubrawtx=ipc:///tmp/zcashd.tx.raw + +Each PUB notification has a topic and body, where the header +corresponds to the notification type. For instance, for the +notification `-zmqpubhashtx` the topic is `hashtx` (no null +terminator) and the body is the hexadecimal transaction hash (32 +bytes). + +These options can also be provided in zcash.conf. + +ZeroMQ endpoint specifiers for TCP (and others) are documented in the +[ZeroMQ API](http://api.zeromq.org/4-0:_start). + +Client side, then, the ZeroMQ subscriber socket must have the +ZMQ_SUBSCRIBE option set to one or either of these prefixes (for +instance, just `hash`); without doing so will result in no messages +arriving. Please see `contrib/zmq/zmq_sub.py` for a working example. + +## Remarks + +From the perspective of zcashd, the ZeroMQ socket is write-only; PUB +sockets don't even have a read function. Thus, there is no state +introduced into zcashd directly. Furthermore, no information is +broadcast that wasn't already received from the public P2P network. + +No authentication or authorization is done on connecting clients; it +is assumed that the ZeroMQ port is exposed only to trusted entities, +using other means such as firewalling. + +Note that when the block chain tip changes, a reorganisation may occur +and just the tip will be notified. It is up to the subscriber to +retrieve the chain from the last known block to the new tip. + +There are several possibilities that ZMQ notification can get lost +during transmission depending on the communication type your are +using. Zcashd appends an up-counting sequence number to each +notification which allows listeners to detect lost notifications. diff --git a/qa/pull-tester/rpc-tests.sh b/qa/pull-tester/rpc-tests.sh index 28e59d554..08ff3fe7a 100755 --- a/qa/pull-tester/rpc-tests.sh +++ b/qa/pull-tester/rpc-tests.sh @@ -11,6 +11,7 @@ export BITCOIND=${REAL_BITCOIND} #Run the tests testScripts=( + 'prioritisetransaction.py' 'wallet_treestate.py' 'wallet_protectcoinbase.py' 'wallet.py' @@ -29,8 +30,13 @@ testScripts=( 'zapwallettxes.py' 'proxy_test.py' 'merkle_blocks.py' + 'fundrawtransaction.py' 'signrawtransactions.py' 'walletbackup.py' + 'nodehandling.py' + 'reindex.py' + 'decodescript.py' + 'disablewallet.py' 'zcjoinsplit.py' 'zcjoinsplitdoublespend.py' 'getblocktemplate.py' @@ -46,17 +52,19 @@ testScriptsExt=( 'invalidateblock.py' 'keypool.py' 'receivedby.py' - 'reindex.py' 'rpcbind_test.py' # 'script_test.py' 'smartfees.py' 'maxblocksinflight.py' 'invalidblockrequest.py' - 'rawtransactions.py' # 'forknotify.py' 'p2p-acceptblock.py' ); +if [ "x$ENABLE_ZMQ" = "x1" ]; then + testScripts+=('zmq_test.py') +fi + extArg="-extended" passOn=${@#$extArg} diff --git a/qa/pull-tester/tests-config.sh.in b/qa/pull-tester/tests-config.sh.in index 1c27b15e4..1cb9ee06b 100755 --- a/qa/pull-tester/tests-config.sh.in +++ b/qa/pull-tester/tests-config.sh.in @@ -10,6 +10,7 @@ EXEEXT="@EXEEXT@" @ENABLE_WALLET_TRUE@ENABLE_WALLET=1 @BUILD_BITCOIN_UTILS_TRUE@ENABLE_UTILS=1 @BUILD_BITCOIND_TRUE@ENABLE_BITCOIND=1 +@ENABLE_ZMQ_TRUE@ENABLE_ZMQ=1 REAL_BITCOIND="$BUILDDIR/src/zcashd${EXEEXT}" REAL_BITCOINCLI="$BUILDDIR/src/zcash-cli${EXEEXT}" diff --git a/qa/rpc-tests/README.md b/qa/rpc-tests/README.md index 08c67c4ef..cfda8fe91 100644 --- a/qa/rpc-tests/README.md +++ b/qa/rpc-tests/README.md @@ -21,7 +21,7 @@ Run all possible tests with `qa/pull-tester/rpc-tests.sh -extended`. Possible options: -```` +``` -h, --help show this help message and exit --nocleanup Leave bitcoinds and test.* datadir on exit or error --noshutdown Don't stop bitcoinds after the test execution diff --git a/qa/rpc-tests/decodescript.py b/qa/rpc-tests/decodescript.py new file mode 100755 index 000000000..ce3bc94ef --- /dev/null +++ b/qa/rpc-tests/decodescript.py @@ -0,0 +1,116 @@ +#!/usr/bin/env python2 +# Copyright (c) 2015 The Bitcoin Core developers +# Distributed under the MIT software license, see the accompanying +# file COPYING or http://www.opensource.org/licenses/mit-license.php. + +from test_framework.test_framework import BitcoinTestFramework +from test_framework.util import * + +class DecodeScriptTest(BitcoinTestFramework): + """Tests decoding scripts via RPC command "decodescript".""" + + def setup_chain(self): + print('Initializing test directory ' + self.options.tmpdir) + initialize_chain_clean(self.options.tmpdir, 1) + + def setup_network(self, split=False): + self.nodes = start_nodes(1, self.options.tmpdir) + self.is_network_split = False + + def decodescript_script_sig(self): + signature = '304502207fa7a6d1e0ee81132a269ad84e68d695483745cde8b541e3bf630749894e342a022100c1f7ab20e13e22fb95281a870f3dcf38d782e53023ee313d741ad0cfbc0c509001' + push_signature = '48' + signature + public_key = '03b0da749730dc9b4b1f4a14d6902877a92541f5368778853d9c4a0cb7802dcfb2' + push_public_key = '21' + public_key + + # below are test cases for all of the standard transaction types + + # 1) P2PK scriptSig + # the scriptSig of a public key scriptPubKey simply pushes a signature onto the stack + rpc_result = self.nodes[0].decodescript(push_signature) + assert_equal(signature, rpc_result['asm']) + + # 2) P2PKH scriptSig + rpc_result = self.nodes[0].decodescript(push_signature + push_public_key) + assert_equal(signature + ' ' + public_key, rpc_result['asm']) + + # 3) multisig scriptSig + # this also tests the leading portion of a P2SH multisig scriptSig + # OP_0 + rpc_result = self.nodes[0].decodescript('00' + push_signature + push_signature) + assert_equal('0 ' + signature + ' ' + signature, rpc_result['asm']) + + # 4) P2SH scriptSig + # an empty P2SH redeemScript is valid and makes for a very simple test case. + # thus, such a spending scriptSig would just need to pass the outer redeemScript + # hash test and leave true on the top of the stack. + rpc_result = self.nodes[0].decodescript('5100') + assert_equal('1 0', rpc_result['asm']) + + # 5) null data scriptSig - no such thing because null data scripts can not be spent. + # thus, no test case for that standard transaction type is here. + + def decodescript_script_pub_key(self): + public_key = '03b0da749730dc9b4b1f4a14d6902877a92541f5368778853d9c4a0cb7802dcfb2' + push_public_key = '21' + public_key + public_key_hash = '11695b6cd891484c2d49ec5aa738ec2b2f897777' + push_public_key_hash = '14' + public_key_hash + + # below are test cases for all of the standard transaction types + + # 1) P2PK scriptPubKey + # OP_CHECKSIG + rpc_result = self.nodes[0].decodescript(push_public_key + 'ac') + assert_equal(public_key + ' OP_CHECKSIG', rpc_result['asm']) + + # 2) P2PKH scriptPubKey + # OP_DUP OP_HASH160 OP_EQUALVERIFY OP_CHECKSIG + rpc_result = self.nodes[0].decodescript('76a9' + push_public_key_hash + '88ac') + assert_equal('OP_DUP OP_HASH160 ' + public_key_hash + ' OP_EQUALVERIFY OP_CHECKSIG', rpc_result['asm']) + + # 3) multisig scriptPubKey + # OP_CHECKMULTISIG + # just imagine that the pub keys used below are different. + # for our purposes here it does not matter that they are the same even though it is unrealistic. + rpc_result = self.nodes[0].decodescript('52' + push_public_key + push_public_key + push_public_key + '53ae') + assert_equal('2 ' + public_key + ' ' + public_key + ' ' + public_key + ' 3 OP_CHECKMULTISIG', rpc_result['asm']) + + # 4) P2SH scriptPubKey + # OP_HASH160 OP_EQUAL. + # push_public_key_hash here should actually be the hash of a redeem script. + # but this works the same for purposes of this test. + rpc_result = self.nodes[0].decodescript('a9' + push_public_key_hash + '87') + assert_equal('OP_HASH160 ' + public_key_hash + ' OP_EQUAL', rpc_result['asm']) + + # 5) null data scriptPubKey + # use a signature look-alike here to make sure that we do not decode random data as a signature. + # this matters if/when signature sighash decoding comes along. + # would want to make sure that no such decoding takes place in this case. + signature_imposter = '48304502207fa7a6d1e0ee81132a269ad84e68d695483745cde8b541e3bf630749894e342a022100c1f7ab20e13e22fb95281a870f3dcf38d782e53023ee313d741ad0cfbc0c509001' + # OP_RETURN + rpc_result = self.nodes[0].decodescript('6a' + signature_imposter) + assert_equal('OP_RETURN ' + signature_imposter[2:], rpc_result['asm']) + + # 6) a CLTV redeem script. redeem scripts are in-effect scriptPubKey scripts, so adding a test here. + # OP_NOP2 is also known as OP_CHECKLOCKTIMEVERIFY. + # just imagine that the pub keys used below are different. + # for our purposes here it does not matter that they are the same even though it is unrealistic. + # + # OP_IF + # OP_CHECKSIGVERIFY + # OP_ELSE + # OP_NOP2 OP_DROP + # OP_ENDIF + # OP_CHECKSIG + # + # lock until block 500,000 + rpc_result = self.nodes[0].decodescript('63' + push_public_key + 'ad670320a107b17568' + push_public_key + 'ac') + assert_equal('OP_IF ' + public_key + ' OP_CHECKSIGVERIFY OP_ELSE 500000 OP_NOP2 OP_DROP OP_ENDIF ' + public_key + ' OP_CHECKSIG', rpc_result['asm']) + + def run_test(self): + self.decodescript_script_sig() + self.decodescript_script_pub_key() + +if __name__ == '__main__': + DecodeScriptTest().main() + diff --git a/qa/rpc-tests/disablewallet.py b/qa/rpc-tests/disablewallet.py new file mode 100755 index 000000000..67acdcea1 --- /dev/null +++ b/qa/rpc-tests/disablewallet.py @@ -0,0 +1,32 @@ +#!/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. + +# +# Exercise API with -disablewallet. +# + +from test_framework.test_framework import BitcoinTestFramework +from test_framework.util import * + +class DisableWalletTest (BitcoinTestFramework): + + def setup_chain(self): + print("Initializing test directory "+self.options.tmpdir) + initialize_chain_clean(self.options.tmpdir, 1) + + def setup_network(self, split=False): + self.nodes = start_nodes(1, self.options.tmpdir, [['-disablewallet']]) + self.is_network_split = False + self.sync_all() + + def run_test (self): + # Check regression: https://github.com/bitcoin/bitcoin/issues/6963#issuecomment-154548880 + x = self.nodes[0].validateaddress('t3b1jtLvxCstdo1pJs9Tjzc5dmWyvGQSZj8') + assert(x['isvalid'] == False) + x = self.nodes[0].validateaddress('tmGqwWtL7RsbxikDSN26gsbicxVr2xJNe86') + assert(x['isvalid'] == True) + +if __name__ == '__main__': + DisableWalletTest ().main () diff --git a/qa/rpc-tests/fundrawtransaction.py b/qa/rpc-tests/fundrawtransaction.py new file mode 100755 index 000000000..1d15fd132 --- /dev/null +++ b/qa/rpc-tests/fundrawtransaction.py @@ -0,0 +1,546 @@ +#!/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. + +from test_framework.test_framework import BitcoinTestFramework +from test_framework.util import * +from pprint import pprint +from time import sleep + +# Create one-input, one-output, no-fee transaction: +class RawTransactionsTest(BitcoinTestFramework): + + def setup_chain(self): + print("Initializing test directory "+self.options.tmpdir) + initialize_chain_clean(self.options.tmpdir, 3) + + def setup_network(self, split=False): + self.nodes = start_nodes(3, self.options.tmpdir, + extra_args=[['-experimentalfeatures', '-developerencryptwallet']] * 4) + + connect_nodes_bi(self.nodes,0,1) + connect_nodes_bi(self.nodes,1,2) + connect_nodes_bi(self.nodes,0,2) + + self.is_network_split=False + self.sync_all() + + def run_test(self): + print "Mining blocks..." + feeTolerance = Decimal(0.00000002) #if the fee's positive delta is higher than this value tests will fail, neg. delta always fail the tests + + self.nodes[2].generate(1) + self.sync_all() + self.nodes[0].generate(101) + self.sync_all() + self.nodes[0].sendtoaddress(self.nodes[2].getnewaddress(),1.5); + self.nodes[0].sendtoaddress(self.nodes[2].getnewaddress(),1.0); + self.nodes[0].sendtoaddress(self.nodes[2].getnewaddress(),5.0); + self.sync_all() + self.nodes[0].generate(1) + self.sync_all() + + ############### + # simple test # + ############### + inputs = [ ] + outputs = { self.nodes[0].getnewaddress() : 1.0 } + rawtx = self.nodes[2].createrawtransaction(inputs, outputs) + dec_tx = self.nodes[2].decoderawtransaction(rawtx) + rawtxfund = self.nodes[2].fundrawtransaction(rawtx) + fee = rawtxfund['fee'] + dec_tx = self.nodes[2].decoderawtransaction(rawtxfund['hex']) + assert_equal(len(dec_tx['vin']) > 0, True) #test if we have enought inputs + + ############################## + # simple test with two coins # + ############################## + inputs = [ ] + outputs = { self.nodes[0].getnewaddress() : 2.2 } + rawtx = self.nodes[2].createrawtransaction(inputs, outputs) + dec_tx = self.nodes[2].decoderawtransaction(rawtx) + + rawtxfund = self.nodes[2].fundrawtransaction(rawtx) + fee = rawtxfund['fee'] + dec_tx = self.nodes[2].decoderawtransaction(rawtxfund['hex']) + assert_equal(len(dec_tx['vin']) > 0, True) #test if we have enough inputs + + ############################## + # simple test with two coins # + ############################## + inputs = [ ] + outputs = { self.nodes[0].getnewaddress() : 2.6 } + rawtx = self.nodes[2].createrawtransaction(inputs, outputs) + dec_tx = self.nodes[2].decoderawtransaction(rawtx) + + rawtxfund = self.nodes[2].fundrawtransaction(rawtx) + fee = rawtxfund['fee'] + dec_tx = self.nodes[2].decoderawtransaction(rawtxfund['hex']) + assert_equal(len(dec_tx['vin']) > 0, True) + assert_equal(dec_tx['vin'][0]['scriptSig']['hex'], '') + + + ################################ + # simple test with two outputs # + ################################ + inputs = [ ] + outputs = { self.nodes[0].getnewaddress() : 2.6, self.nodes[1].getnewaddress() : 2.5 } + rawtx = self.nodes[2].createrawtransaction(inputs, outputs) + dec_tx = self.nodes[2].decoderawtransaction(rawtx) + + rawtxfund = self.nodes[2].fundrawtransaction(rawtx) + fee = rawtxfund['fee'] + dec_tx = self.nodes[2].decoderawtransaction(rawtxfund['hex']) + totalOut = 0 + for out in dec_tx['vout']: + totalOut += out['value'] + + assert_equal(len(dec_tx['vin']) > 0, True) + assert_equal(dec_tx['vin'][0]['scriptSig']['hex'], '') + + + ######################################################################### + # test a fundrawtransaction with a VIN greater than the required amount # + ######################################################################### + utx = False + listunspent = self.nodes[2].listunspent() + for aUtx in listunspent: + if aUtx['amount'] == 5.0: + utx = aUtx + break; + + assert_equal(utx!=False, True) + + inputs = [ {'txid' : utx['txid'], 'vout' : utx['vout']}] + outputs = { self.nodes[0].getnewaddress() : 1.0 } + rawtx = self.nodes[2].createrawtransaction(inputs, outputs) + dec_tx = self.nodes[2].decoderawtransaction(rawtx) + assert_equal(utx['txid'], dec_tx['vin'][0]['txid']) + + rawtxfund = self.nodes[2].fundrawtransaction(rawtx) + fee = rawtxfund['fee'] + dec_tx = self.nodes[2].decoderawtransaction(rawtxfund['hex']) + totalOut = 0 + for out in dec_tx['vout']: + totalOut += out['value'] + + assert_equal(fee + totalOut, utx['amount']) #compare vin total and totalout+fee + + + + ##################################################################### + # test a fundrawtransaction with which will not get a change output # + ##################################################################### + utx = False + listunspent = self.nodes[2].listunspent() + for aUtx in listunspent: + if aUtx['amount'] == 5.0: + utx = aUtx + break; + + assert_equal(utx!=False, True) + + inputs = [ {'txid' : utx['txid'], 'vout' : utx['vout']}] + outputs = { self.nodes[0].getnewaddress() : Decimal(5.0) - fee - feeTolerance } + rawtx = self.nodes[2].createrawtransaction(inputs, outputs) + dec_tx = self.nodes[2].decoderawtransaction(rawtx) + assert_equal(utx['txid'], dec_tx['vin'][0]['txid']) + + rawtxfund = self.nodes[2].fundrawtransaction(rawtx) + fee = rawtxfund['fee'] + dec_tx = self.nodes[2].decoderawtransaction(rawtxfund['hex']) + totalOut = 0 + for out in dec_tx['vout']: + totalOut += out['value'] + + assert_equal(rawtxfund['changepos'], -1) + assert_equal(fee + totalOut, utx['amount']) #compare vin total and totalout+fee + + + + ######################################################################### + # test a fundrawtransaction with a VIN smaller than the required amount # + ######################################################################### + utx = False + listunspent = self.nodes[2].listunspent() + for aUtx in listunspent: + if aUtx['amount'] == 1.0: + utx = aUtx + break; + + assert_equal(utx!=False, True) + + inputs = [ {'txid' : utx['txid'], 'vout' : utx['vout']}] + outputs = { self.nodes[0].getnewaddress() : 1.0 } + rawtx = self.nodes[2].createrawtransaction(inputs, outputs) + + # 4-byte version + 1-byte vin count + 36-byte prevout then script_len + rawtx = rawtx[:82] + "0100" + rawtx[84:] + + dec_tx = self.nodes[2].decoderawtransaction(rawtx) + assert_equal(utx['txid'], dec_tx['vin'][0]['txid']) + assert_equal("00", dec_tx['vin'][0]['scriptSig']['hex']) + + rawtxfund = self.nodes[2].fundrawtransaction(rawtx) + fee = rawtxfund['fee'] + dec_tx = self.nodes[2].decoderawtransaction(rawtxfund['hex']) + totalOut = 0 + matchingOuts = 0 + for i, out in enumerate(dec_tx['vout']): + totalOut += out['value'] + if outputs.has_key(out['scriptPubKey']['addresses'][0]): + matchingOuts+=1 + else: + assert_equal(i, rawtxfund['changepos']) + + assert_equal(utx['txid'], dec_tx['vin'][0]['txid']) + assert_equal("00", dec_tx['vin'][0]['scriptSig']['hex']) + + assert_equal(matchingOuts, 1) + assert_equal(len(dec_tx['vout']), 2) + + + ########################################### + # test a fundrawtransaction with two VINs # + ########################################### + utx = False + utx2 = False + listunspent = self.nodes[2].listunspent() + for aUtx in listunspent: + if aUtx['amount'] == 1.0: + utx = aUtx + if aUtx['amount'] == 5.0: + utx2 = aUtx + + + assert_equal(utx!=False, True) + + inputs = [ {'txid' : utx['txid'], 'vout' : utx['vout']},{'txid' : utx2['txid'], 'vout' : utx2['vout']} ] + outputs = { self.nodes[0].getnewaddress() : 6.0 } + rawtx = self.nodes[2].createrawtransaction(inputs, outputs) + dec_tx = self.nodes[2].decoderawtransaction(rawtx) + assert_equal(utx['txid'], dec_tx['vin'][0]['txid']) + + rawtxfund = self.nodes[2].fundrawtransaction(rawtx) + fee = rawtxfund['fee'] + dec_tx = self.nodes[2].decoderawtransaction(rawtxfund['hex']) + totalOut = 0 + matchingOuts = 0 + for out in dec_tx['vout']: + totalOut += out['value'] + if outputs.has_key(out['scriptPubKey']['addresses'][0]): + matchingOuts+=1 + + assert_equal(matchingOuts, 1) + assert_equal(len(dec_tx['vout']), 2) + + matchingIns = 0 + for vinOut in dec_tx['vin']: + for vinIn in inputs: + if vinIn['txid'] == vinOut['txid']: + matchingIns+=1 + + assert_equal(matchingIns, 2) #we now must see two vins identical to vins given as params + + ######################################################### + # test a fundrawtransaction with two VINs and two vOUTs # + ######################################################### + utx = False + utx2 = False + listunspent = self.nodes[2].listunspent() + for aUtx in listunspent: + if aUtx['amount'] == 1.0: + utx = aUtx + if aUtx['amount'] == 5.0: + utx2 = aUtx + + + assert_equal(utx!=False, True) + + inputs = [ {'txid' : utx['txid'], 'vout' : utx['vout']},{'txid' : utx2['txid'], 'vout' : utx2['vout']} ] + outputs = { self.nodes[0].getnewaddress() : 6.0, self.nodes[0].getnewaddress() : 1.0 } + rawtx = self.nodes[2].createrawtransaction(inputs, outputs) + dec_tx = self.nodes[2].decoderawtransaction(rawtx) + assert_equal(utx['txid'], dec_tx['vin'][0]['txid']) + + rawtxfund = self.nodes[2].fundrawtransaction(rawtx) + fee = rawtxfund['fee'] + dec_tx = self.nodes[2].decoderawtransaction(rawtxfund['hex']) + totalOut = 0 + matchingOuts = 0 + for out in dec_tx['vout']: + totalOut += out['value'] + if outputs.has_key(out['scriptPubKey']['addresses'][0]): + matchingOuts+=1 + + assert_equal(matchingOuts, 2) + assert_equal(len(dec_tx['vout']), 3) + + ############################################## + # test a fundrawtransaction with invalid vin # + ############################################## + listunspent = self.nodes[2].listunspent() + inputs = [ {'txid' : "1c7f966dab21119bac53213a2bc7532bff1fa844c124fd750a7d0b1332440bd1", 'vout' : 0} ] #invalid vin! + outputs = { self.nodes[0].getnewaddress() : 1.0} + rawtx = self.nodes[2].createrawtransaction(inputs, outputs) + dec_tx = self.nodes[2].decoderawtransaction(rawtx) + + errorString = "" + try: + rawtxfund = self.nodes[2].fundrawtransaction(rawtx) + except JSONRPCException,e: + errorString = e.error['message'] + + assert_equal("Insufficient" in errorString, True); + + + + ############################################################ + #compare fee of a standard pubkeyhash transaction + inputs = [] + outputs = {self.nodes[1].getnewaddress():1.1} + rawTx = self.nodes[0].createrawtransaction(inputs, outputs) + fundedTx = self.nodes[0].fundrawtransaction(rawTx) + + #create same transaction over sendtoaddress + txId = self.nodes[0].sendtoaddress(self.nodes[1].getnewaddress(), 1.1); + signedFee = self.nodes[0].getrawmempool(True)[txId]['fee'] + + #compare fee + feeDelta = Decimal(fundedTx['fee']) - Decimal(signedFee); + assert(feeDelta >= 0 and feeDelta <= feeTolerance) + ############################################################ + + ############################################################ + #compare fee of a standard pubkeyhash transaction with multiple outputs + inputs = [] + outputs = {self.nodes[1].getnewaddress():1.1,self.nodes[1].getnewaddress():1.2,self.nodes[1].getnewaddress():0.1,self.nodes[1].getnewaddress():1.3,self.nodes[1].getnewaddress():0.2,self.nodes[1].getnewaddress():0.3} + rawTx = self.nodes[0].createrawtransaction(inputs, outputs) + fundedTx = self.nodes[0].fundrawtransaction(rawTx) + #create same transaction over sendtoaddress + txId = self.nodes[0].sendmany("", outputs); + signedFee = self.nodes[0].getrawmempool(True)[txId]['fee'] + + #compare fee + feeDelta = Decimal(fundedTx['fee']) - Decimal(signedFee); + assert(feeDelta >= 0 and feeDelta <= feeTolerance) + ############################################################ + + + ############################################################ + #compare fee of a 2of2 multisig p2sh transaction + + # create 2of2 addr + addr1 = self.nodes[1].getnewaddress() + addr2 = self.nodes[1].getnewaddress() + + addr1Obj = self.nodes[1].validateaddress(addr1) + addr2Obj = self.nodes[1].validateaddress(addr2) + + mSigObj = self.nodes[1].addmultisigaddress(2, [addr1Obj['pubkey'], addr2Obj['pubkey']]) + + inputs = [] + outputs = {mSigObj:1.1} + rawTx = self.nodes[0].createrawtransaction(inputs, outputs) + fundedTx = self.nodes[0].fundrawtransaction(rawTx) + + #create same transaction over sendtoaddress + txId = self.nodes[0].sendtoaddress(mSigObj, 1.1); + signedFee = self.nodes[0].getrawmempool(True)[txId]['fee'] + + #compare fee + feeDelta = Decimal(fundedTx['fee']) - Decimal(signedFee); + assert(feeDelta >= 0 and feeDelta <= feeTolerance) + ############################################################ + + + ############################################################ + #compare fee of a standard pubkeyhash transaction + + # create 4of5 addr + addr1 = self.nodes[1].getnewaddress() + addr2 = self.nodes[1].getnewaddress() + addr3 = self.nodes[1].getnewaddress() + addr4 = self.nodes[1].getnewaddress() + addr5 = self.nodes[1].getnewaddress() + + addr1Obj = self.nodes[1].validateaddress(addr1) + addr2Obj = self.nodes[1].validateaddress(addr2) + addr3Obj = self.nodes[1].validateaddress(addr3) + addr4Obj = self.nodes[1].validateaddress(addr4) + addr5Obj = self.nodes[1].validateaddress(addr5) + + mSigObj = self.nodes[1].addmultisigaddress(4, [addr1Obj['pubkey'], addr2Obj['pubkey'], addr3Obj['pubkey'], addr4Obj['pubkey'], addr5Obj['pubkey']]) + + inputs = [] + outputs = {mSigObj:1.1} + rawTx = self.nodes[0].createrawtransaction(inputs, outputs) + fundedTx = self.nodes[0].fundrawtransaction(rawTx) + + #create same transaction over sendtoaddress + txId = self.nodes[0].sendtoaddress(mSigObj, 1.1); + signedFee = self.nodes[0].getrawmempool(True)[txId]['fee'] + + #compare fee + feeDelta = Decimal(fundedTx['fee']) - Decimal(signedFee); + assert(feeDelta >= 0 and feeDelta <= feeTolerance) + ############################################################ + + + ############################################################ + # spend a 2of2 multisig transaction over fundraw + + # create 2of2 addr + addr1 = self.nodes[2].getnewaddress() + addr2 = self.nodes[2].getnewaddress() + + addr1Obj = self.nodes[2].validateaddress(addr1) + addr2Obj = self.nodes[2].validateaddress(addr2) + + mSigObj = self.nodes[2].addmultisigaddress(2, [addr1Obj['pubkey'], addr2Obj['pubkey']]) + + + # send 1.2 BTC to msig addr + txId = self.nodes[0].sendtoaddress(mSigObj, 1.2); + self.sync_all() + self.nodes[1].generate(1) + self.sync_all() + + oldBalance = self.nodes[1].getbalance() + inputs = [] + outputs = {self.nodes[1].getnewaddress():1.1} + rawTx = self.nodes[2].createrawtransaction(inputs, outputs) + fundedTx = self.nodes[2].fundrawtransaction(rawTx) + + signedTx = self.nodes[2].signrawtransaction(fundedTx['hex']) + txId = self.nodes[2].sendrawtransaction(signedTx['hex']) + self.sync_all() + self.nodes[1].generate(1) + self.sync_all() + + # make sure funds are received at node1 + assert_equal(oldBalance+Decimal('1.10000000'), self.nodes[1].getbalance()) + + ############################################################ + # locked wallet test + self.nodes[1].encryptwallet("test") + self.nodes.pop(1) + stop_nodes(self.nodes) + wait_bitcoinds() + + self.nodes = start_nodes(3, self.options.tmpdir) + + connect_nodes_bi(self.nodes,0,1) + connect_nodes_bi(self.nodes,1,2) + connect_nodes_bi(self.nodes,0,2) + self.is_network_split=False + self.sync_all() + + error = False + try: + self.nodes[1].sendtoaddress(self.nodes[0].getnewaddress(), 1.2); + except: + error = True + assert(error) + + oldBalance = self.nodes[0].getbalance() + + inputs = [] + outputs = {self.nodes[0].getnewaddress():1.1} + rawTx = self.nodes[1].createrawtransaction(inputs, outputs) + fundedTx = self.nodes[1].fundrawtransaction(rawTx) + + #now we need to unlock + self.nodes[1].walletpassphrase("test", 100) + signedTx = self.nodes[1].signrawtransaction(fundedTx['hex']) + txId = self.nodes[1].sendrawtransaction(signedTx['hex']) + self.sync_all() + self.nodes[1].generate(1) + self.sync_all() + + # make sure funds are received at node1 + assert_equal(oldBalance+Decimal('11.10000000'), self.nodes[0].getbalance()) + + + + ############################################### + # multiple (~19) inputs tx test | Compare fee # + ############################################### + + #empty node1, send some small coins from node0 to node1 + self.nodes[1].sendtoaddress(self.nodes[0].getnewaddress(), self.nodes[1].getbalance(), "", "", True); + self.sync_all() + self.nodes[0].generate(1) + self.sync_all() + + for i in range(0,20): + self.nodes[0].sendtoaddress(self.nodes[1].getnewaddress(), 0.01); + self.sync_all() + self.nodes[0].generate(1) + self.sync_all() + + #fund a tx with ~20 small inputs + inputs = [] + outputs = {self.nodes[0].getnewaddress():0.15,self.nodes[0].getnewaddress():0.04} + rawTx = self.nodes[1].createrawtransaction(inputs, outputs) + fundedTx = self.nodes[1].fundrawtransaction(rawTx) + + #create same transaction over sendtoaddress + txId = self.nodes[1].sendmany("", outputs); + signedFee = self.nodes[1].getrawmempool(True)[txId]['fee'] + + #compare fee + feeDelta = Decimal(fundedTx['fee']) - Decimal(signedFee); + assert(feeDelta >= 0 and feeDelta <= feeTolerance*19) #~19 inputs + + + ############################################# + # multiple (~19) inputs tx test | sign/send # + ############################################# + + #again, empty node1, send some small coins from node0 to node1 + self.nodes[1].sendtoaddress(self.nodes[0].getnewaddress(), self.nodes[1].getbalance(), "", "", True); + self.sync_all() + self.nodes[0].generate(1) + self.sync_all() + + for i in range(0,20): + self.nodes[0].sendtoaddress(self.nodes[1].getnewaddress(), 0.01); + self.sync_all() + self.nodes[0].generate(1) + self.sync_all() + + #fund a tx with ~20 small inputs + oldBalance = self.nodes[0].getbalance() + + inputs = [] + outputs = {self.nodes[0].getnewaddress():0.15,self.nodes[0].getnewaddress():0.04} + rawTx = self.nodes[1].createrawtransaction(inputs, outputs) + fundedTx = self.nodes[1].fundrawtransaction(rawTx) + fundedAndSignedTx = self.nodes[1].signrawtransaction(fundedTx['hex']) + txId = self.nodes[1].sendrawtransaction(fundedAndSignedTx['hex']) + self.sync_all() + self.nodes[0].generate(1) + self.sync_all() + assert_equal(oldBalance+Decimal('10.19000000'), self.nodes[0].getbalance()) #0.19+block reward + + ##################################################### + # test fundrawtransaction with OP_RETURN and no vin # + ##################################################### + + rawtx = "0100000000010000000000000000066a047465737400000000" + dec_tx = self.nodes[2].decoderawtransaction(rawtx) + + assert_equal(len(dec_tx['vin']), 0) + assert_equal(len(dec_tx['vout']), 1) + + rawtxfund = self.nodes[2].fundrawtransaction(rawtx) + dec_tx = self.nodes[2].decoderawtransaction(rawtxfund['hex']) + + assert_greater_than(len(dec_tx['vin']), 0) # at least one vin + assert_equal(len(dec_tx['vout']), 2) # one change output added + + +if __name__ == '__main__': + RawTransactionsTest().main() diff --git a/qa/rpc-tests/httpbasics.py b/qa/rpc-tests/httpbasics.py index 21c7b1f8b..b66533543 100755 --- a/qa/rpc-tests/httpbasics.py +++ b/qa/rpc-tests/httpbasics.py @@ -4,7 +4,7 @@ # file COPYING or http://www.opensource.org/licenses/mit-license.php. # -# Test REST interface +# Test rpc http basics # from test_framework.test_framework import BitcoinTestFramework @@ -20,78 +20,82 @@ try: except ImportError: import urlparse -class HTTPBasicsTest (BitcoinTestFramework): +class HTTPBasicsTest (BitcoinTestFramework): def setup_nodes(self): - return start_nodes(4, self.options.tmpdir, extra_args=[['-rpckeepalive=1'], ['-rpckeepalive=0'], [], []]) + return start_nodes(4, self.options.tmpdir) + + def run_test(self): - def run_test(self): - ################################################# # lowlevel check for http persistent connection # ################################################# url = urlparse.urlparse(self.nodes[0].url) authpair = url.username + ':' + url.password headers = {"Authorization": "Basic " + base64.b64encode(authpair)} - + conn = httplib.HTTPConnection(url.hostname, url.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) #according to http/1.1 connection must still be open! - # TODO #1856: Re-enable support for persistent connections. - assert_equal(conn.sock!=None, False) + #send 2nd request without closing connection + 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! conn.close() - + #same should be if we add keep-alive because this should be the std. behaviour headers = {"Authorization": "Basic " + base64.b64encode(authpair), "Connection": "keep-alive"} - + conn = httplib.HTTPConnection(url.hostname, url.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) #according to http/1.1 connection must still be open! - # TODO #1856: Re-enable support for persistent connections. - assert_equal(conn.sock!=None, False) + #send 2nd request without closing connection + 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! conn.close() - + #now do the same with "Connection: close" headers = {"Authorization": "Basic " + base64.b64encode(authpair), "Connection":"close"} - + conn = httplib.HTTPConnection(url.hostname, url.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) #now the connection must be closed after the response - + 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 + + #node2 (third node) is running with standard keep-alive parameters which means keep-alive is on 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 - # TODO #1856: Re-enable support for persistent connections. - assert_equal(conn.sock!=None, False) - conn.close() - if __name__ == '__main__': HTTPBasicsTest ().main () diff --git a/qa/rpc-tests/keypool.py b/qa/rpc-tests/keypool.py index 1f8979692..38d6874dc 100755 --- a/qa/rpc-tests/keypool.py +++ b/qa/rpc-tests/keypool.py @@ -98,7 +98,7 @@ def main(): os.makedirs(options.tmpdir) initialize_chain(options.tmpdir) - nodes = start_nodes(1, options.tmpdir, extra_args=[['-developerencryptwallet']]) + nodes = start_nodes(1, options.tmpdir, extra_args=[['-experimentalfeatures', '-developerencryptwallet']]) run_test(nodes, options.tmpdir) diff --git a/qa/rpc-tests/mempool_resurrect_test.py b/qa/rpc-tests/mempool_resurrect_test.py index b5465a103..dd3f0486f 100755 --- a/qa/rpc-tests/mempool_resurrect_test.py +++ b/qa/rpc-tests/mempool_resurrect_test.py @@ -51,7 +51,7 @@ class MempoolCoinbaseTest(BitcoinTestFramework): blocks = [] blocks.extend(self.nodes[0].generate(1)) - spends2_raw = [ self.create_tx(txid, node0_address, 9.99) for txid in spends1_id ] + spends2_raw = [ self.create_tx(txid, node0_address, 9.999) for txid in spends1_id ] spends2_id = [ self.nodes[0].sendrawtransaction(tx) for tx in spends2_raw ] blocks.extend(self.nodes[0].generate(1)) diff --git a/qa/rpc-tests/mempool_spendcoinbase.py b/qa/rpc-tests/mempool_spendcoinbase.py index 7eab6f37c..b2ec6937b 100755 --- a/qa/rpc-tests/mempool_spendcoinbase.py +++ b/qa/rpc-tests/mempool_spendcoinbase.py @@ -54,15 +54,31 @@ class MempoolSpendCoinbaseTest(BitcoinTestFramework): assert_raises(JSONRPCException, self.nodes[0].sendrawtransaction, spends_raw[1]) # mempool should have just spend_101: + mempoolinfo = self.nodes[0].getmempoolinfo() + assert_equal(mempoolinfo['size'], 1) assert_equal(self.nodes[0].getrawmempool(), [ spend_101_id ]) + # the size of the memory pool should be greater than 1x ~100 bytes + assert_greater_than(mempoolinfo['bytes'], 100) + # the actual memory usage should be strictly greater than the size + # of the memory pool + assert_greater_than(mempoolinfo['usage'], mempoolinfo['bytes']) + # mine a block, spend_101 should get confirmed self.nodes[0].generate(1) + mempoolinfo = self.nodes[0].getmempoolinfo() + assert_equal(mempoolinfo['size'], 0) + assert_equal(mempoolinfo['bytes'], 0) + assert_equal(mempoolinfo['usage'], 0) assert_equal(set(self.nodes[0].getrawmempool()), set()) # ... and now height 102 can be spent: spend_102_id = self.nodes[0].sendrawtransaction(spends_raw[1]) + mempoolinfo = self.nodes[0].getmempoolinfo() + assert_equal(mempoolinfo['size'], 1) assert_equal(self.nodes[0].getrawmempool(), [ spend_102_id ]) + assert_greater_than(mempoolinfo['bytes'], 100) + assert_greater_than(mempoolinfo['usage'], mempoolinfo['bytes']) if __name__ == '__main__': MempoolSpendCoinbaseTest().main() diff --git a/qa/rpc-tests/nodehandling.py b/qa/rpc-tests/nodehandling.py new file mode 100755 index 000000000..9a77bd97e --- /dev/null +++ b/qa/rpc-tests/nodehandling.py @@ -0,0 +1,69 @@ +#!/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 node handling +# + +from test_framework.test_framework import BitcoinTestFramework +from test_framework.util import * +import base64 + +try: + import http.client as httplib +except ImportError: + import httplib +try: + import urllib.parse as urlparse +except ImportError: + import urlparse + +class NodeHandlingTest (BitcoinTestFramework): + def run_test(self): + ########################### + # setban/listbanned tests # + ########################### + assert_equal(len(self.nodes[2].getpeerinfo()), 4) #we should have 4 nodes at this point + self.nodes[2].setban("127.0.0.1", "add") + time.sleep(3) #wait till the nodes are disconected + assert_equal(len(self.nodes[2].getpeerinfo()), 0) #all nodes must be disconnected at this point + assert_equal(len(self.nodes[2].listbanned()), 1) + self.nodes[2].clearbanned() + assert_equal(len(self.nodes[2].listbanned()), 0) + self.nodes[2].setban("127.0.0.0/24", "add") + assert_equal(len(self.nodes[2].listbanned()), 1) + try: + self.nodes[2].setban("127.0.0.1", "add") #throws exception because 127.0.0.1 is within range 127.0.0.0/24 + except: + pass + assert_equal(len(self.nodes[2].listbanned()), 1) #still only one banned ip because 127.0.0.1 is within the range of 127.0.0.0/24 + try: + self.nodes[2].setban("127.0.0.1", "remove") + except: + pass + assert_equal(len(self.nodes[2].listbanned()), 1) + self.nodes[2].setban("127.0.0.0/24", "remove") + assert_equal(len(self.nodes[2].listbanned()), 0) + self.nodes[2].clearbanned() + assert_equal(len(self.nodes[2].listbanned()), 0) + + ########################### + # RPC disconnectnode test # + ########################### + url = urlparse.urlparse(self.nodes[1].url) + self.nodes[0].disconnectnode(url.hostname+":"+str(p2p_port(1))) + time.sleep(2) #disconnecting a node needs a little bit of time + for node in self.nodes[0].getpeerinfo(): + assert(node['addr'] != url.hostname+":"+str(p2p_port(1))) + + connect_nodes_bi(self.nodes,0,1) #reconnect the node + found = False + for node in self.nodes[0].getpeerinfo(): + if node['addr'] == url.hostname+":"+str(p2p_port(1)): + found = True + assert(found) + +if __name__ == '__main__': + NodeHandlingTest ().main () diff --git a/qa/rpc-tests/prioritisetransaction.py b/qa/rpc-tests/prioritisetransaction.py new file mode 100755 index 000000000..2e8f11656 --- /dev/null +++ b/qa/rpc-tests/prioritisetransaction.py @@ -0,0 +1,124 @@ +#!/usr/bin/env python2 +# Copyright (c) 2017 The Zcash developers +# Distributed under the MIT software license, see the accompanying +# file COPYING or http://www.opensource.org/licenses/mit-license.php. + +from test_framework.test_framework import BitcoinTestFramework +from test_framework.util import * +from time import * +from test_framework.mininode import COIN + +class PrioritiseTransactionTest (BitcoinTestFramework): + + def setup_chain(self): + print("Initializing test directory "+self.options.tmpdir) + initialize_chain_clean(self.options.tmpdir, 4) + + def setup_network(self, split=False): + self.nodes = [] + # Start nodes with tiny block size of 11kb + self.nodes.append(start_node(0, self.options.tmpdir, ["-blockprioritysize=7000", "-blockmaxsize=11000", "-maxorphantx=1000", "-relaypriority=true", "-printpriority=1"])) + self.nodes.append(start_node(1, self.options.tmpdir, ["-blockprioritysize=7000", "-blockmaxsize=11000", "-maxorphantx=1000", "-relaypriority=true", "-printpriority=1"])) + connect_nodes(self.nodes[1], 0) + self.is_network_split=False + self.sync_all() + + # Returns txid if operation was a success or None + def wait_and_assert_operationid_status(self, myopid, in_status='success', in_errormsg=None): + print('waiting for async operation {}'.format(myopid)) + opids = [] + opids.append(myopid) + timeout = 300 + status = None + errormsg = None + txid = None + for x in xrange(1, timeout): + results = self.nodes[0].z_getoperationresult(opids) + if len(results)==0: + sleep(1) + else: + status = results[0]["status"] + if status == "failed": + errormsg = results[0]['error']['message'] + elif status == "success": + txid = results[0]['result']['txid'] + break + print('...returned status: {}'.format(status)) + assert_equal(in_status, status) + if errormsg is not None: + assert(in_errormsg is not None) + assert_equal(in_errormsg in errormsg, True) + print('...returned error: {}'.format(errormsg)) + return txid + + def run_test (self): + # tx priority is calculated: priority = sum(input_value_in_base_units * input_age)/size_in_bytes + + print "Mining 11kb blocks..." + self.nodes[0].generate(501) + + base_fee = self.nodes[0].getnetworkinfo()['relayfee'] + + # 11 kb blocks will only hold about 50 txs, so this will fill mempool with older txs + taddr = self.nodes[1].getnewaddress() + for _ in range(900): + self.nodes[0].sendtoaddress(taddr, 0.1) + self.nodes[0].generate(1) + self.sync_all() + + # Create tx of lower value to be prioritized on node 0 + # Older transactions get mined first, so this lower value, newer tx is unlikely to be mined without prioritization + priority_tx_0 = self.nodes[0].sendtoaddress(self.nodes[1].getnewaddress(), 0.1) + + # Check that priority_tx_0 is not in block_template() prior to prioritisation + block_template = self.nodes[0].getblocktemplate() + in_block_template = False + for tx in block_template['transactions']: + if tx['hash'] == priority_tx_0: + in_block_template = True + break + assert_equal(in_block_template, False) + + priority_result = self.nodes[0].prioritisetransaction(priority_tx_0, 1000, int(3 * base_fee * COIN)) + + # Check that prioritized transaction is in getblocktemplate() + in_block_template = False + block_template = self.nodes[0].getblocktemplate() + for tx in block_template['transactions']: + if tx['hash'] == priority_tx_0: + in_block_template = True + break + # NOTE: getblocktemplate() should return prioritized transaction, but is not + # Noted by user in issue #1884 + assert_equal(in_block_template, False) + + # Node 1 doesn't get the next block, so this *shouldn't* be mined despite being prioritized on node 1 + priority_tx_1 = self.nodes[1].sendtoaddress(self.nodes[0].getnewaddress(), 0.1) + self.nodes[1].prioritisetransaction(priority_tx_1, 1000, int(3 * base_fee * COIN)) + + # Mine block on node 0 + blk_hash = self.nodes[0].generate(1) + block = self.nodes[0].getblock(blk_hash[0]) + self.sync_all() + + # Check that priority_tx_0 was mined + mempool = self.nodes[0].getrawmempool() + assert_equal(priority_tx_0 in block['tx'], True) + assert_equal(priority_tx_0 in mempool, False) + + # Check that priority_tx_1 was not mined + assert_equal(priority_tx_1 in mempool, True) + assert_equal(priority_tx_1 in block['tx'], False) + + # Mine a block on node 1 and sync + blk_hash_1 = self.nodes[1].generate(1) + block_1 = self.nodes[1].getblock(blk_hash_1[0]) + self.sync_all() + + # Check to see if priority_tx_1 is now mined + mempool_1 = self.nodes[1].getrawmempool() + assert_equal(priority_tx_1 in mempool_1, False) + assert_equal(priority_tx_1 in block_1['tx'], True) + +if __name__ == '__main__': + PrioritiseTransactionTest().main() diff --git a/qa/rpc-tests/proxy_test.py b/qa/rpc-tests/proxy_test.py index 9a9b2f530..3623c1616 100755 --- a/qa/rpc-tests/proxy_test.py +++ b/qa/rpc-tests/proxy_test.py @@ -68,10 +68,10 @@ class ProxyTest(BitcoinTestFramework): ['-listen', '-debug=net', '-debug=proxy', '-proxy=%s:%i' % (self.conf1.addr),'-proxyrandomize=1'], ['-listen', '-debug=net', '-debug=proxy', '-proxy=%s:%i' % (self.conf1.addr),'-onion=%s:%i' % (self.conf2.addr),'-proxyrandomize=0'], ['-listen', '-debug=net', '-debug=proxy', '-proxy=%s:%i' % (self.conf2.addr),'-proxyrandomize=1'], - ['-listen', '-debug=net', '-debug=proxy', '-proxy=[%s]:%i' % (self.conf3.addr),'-proxyrandomize=0'] + ['-listen', '-debug=net', '-debug=proxy', '-proxy=[%s]:%i' % (self.conf3.addr),'-proxyrandomize=0', '-noonion'] ]) - def node_test(self, node, proxies, auth): + def node_test(self, node, proxies, auth, test_onion=True): rv = [] # Test: outgoing IPv4 connection through node node.addnode("15.61.23.23:1234", "onetry") @@ -99,17 +99,18 @@ class ProxyTest(BitcoinTestFramework): assert_equal(cmd.password, None) rv.append(cmd) - # Test: outgoing onion connection through node - node.addnode("bitcoinostk4e4re.onion:8333", "onetry") - cmd = proxies[2].queue.get() - assert(isinstance(cmd, Socks5Command)) - assert_equal(cmd.atyp, AddressType.DOMAINNAME) - assert_equal(cmd.addr, "bitcoinostk4e4re.onion") - assert_equal(cmd.port, 8333) - if not auth: - assert_equal(cmd.username, None) - assert_equal(cmd.password, None) - rv.append(cmd) + if test_onion: + # Test: outgoing onion connection through node + node.addnode("bitcoinostk4e4re.onion:8333", "onetry") + cmd = proxies[2].queue.get() + assert(isinstance(cmd, Socks5Command)) + assert_equal(cmd.atyp, AddressType.DOMAINNAME) + assert_equal(cmd.addr, "bitcoinostk4e4re.onion") + assert_equal(cmd.port, 8333) + if not auth: + assert_equal(cmd.username, None) + assert_equal(cmd.password, None) + rv.append(cmd) # Test: outgoing DNS name connection through node node.addnode("node.noumenon:8333", "onetry") @@ -139,8 +140,41 @@ class ProxyTest(BitcoinTestFramework): assert_equal(len(credentials), 4) # proxy on IPv6 localhost - self.node_test(self.nodes[3], [self.serv3, self.serv3, self.serv3, self.serv3], False) + self.node_test(self.nodes[3], [self.serv3, self.serv3, self.serv3, self.serv3], False, False) + + def networks_dict(d): + r = {} + for x in d['networks']: + r[x['name']] = x + return r + + # test RPC getnetworkinfo + n0 = networks_dict(self.nodes[0].getnetworkinfo()) + for net in ['ipv4','ipv6','onion']: + assert_equal(n0[net]['proxy'], '%s:%i' % (self.conf1.addr)) + assert_equal(n0[net]['proxy_randomize_credentials'], True) + assert_equal(n0['onion']['reachable'], True) + + n1 = networks_dict(self.nodes[1].getnetworkinfo()) + for net in ['ipv4','ipv6']: + assert_equal(n1[net]['proxy'], '%s:%i' % (self.conf1.addr)) + assert_equal(n1[net]['proxy_randomize_credentials'], False) + assert_equal(n1['onion']['proxy'], '%s:%i' % (self.conf2.addr)) + assert_equal(n1['onion']['proxy_randomize_credentials'], False) + assert_equal(n1['onion']['reachable'], True) + n2 = networks_dict(self.nodes[2].getnetworkinfo()) + for net in ['ipv4','ipv6','onion']: + assert_equal(n2[net]['proxy'], '%s:%i' % (self.conf2.addr)) + assert_equal(n2[net]['proxy_randomize_credentials'], True) + assert_equal(n2['onion']['reachable'], True) + + n3 = networks_dict(self.nodes[3].getnetworkinfo()) + for net in ['ipv4','ipv6']: + assert_equal(n3[net]['proxy'], '[%s]:%i' % (self.conf3.addr)) + assert_equal(n3[net]['proxy_randomize_credentials'], False) + assert_equal(n3['onion']['reachable'], False) + if __name__ == '__main__': ProxyTest().main() diff --git a/qa/rpc-tests/rawtransactions.py b/qa/rpc-tests/rawtransactions.py index 251365ab3..45517d3fd 100755 --- a/qa/rpc-tests/rawtransactions.py +++ b/qa/rpc-tests/rawtransactions.py @@ -127,7 +127,7 @@ class RawTransactionsTest(BitcoinTestFramework): bal = self.nodes[0].getbalance() inputs = [{ "txid" : txId, "vout" : vout['n'], "scriptPubKey" : vout['scriptPubKey']['hex']}] - outputs = { self.nodes[0].getnewaddress() : 2.19 } + outputs = { self.nodes[0].getnewaddress() : 2.199 } rawTx = self.nodes[2].createrawtransaction(inputs, outputs) rawTxPartialSigned = self.nodes[1].signrawtransaction(rawTx, inputs) assert_equal(rawTxPartialSigned['complete'], False) #node1 only has one key, can't comp. sign the tx @@ -139,7 +139,7 @@ class RawTransactionsTest(BitcoinTestFramework): self.sync_all() self.nodes[0].generate(1) self.sync_all() - assert_equal(self.nodes[0].getbalance(), bal+Decimal('10.00000000')+Decimal('2.19000000')) #block reward + tx + assert_equal(self.nodes[0].getbalance(), bal+Decimal('10.00000000')+Decimal('2.19900000')) #block reward + tx if __name__ == '__main__': RawTransactionsTest().main() diff --git a/qa/rpc-tests/rest.py b/qa/rpc-tests/rest.py index 42da14ee2..d315c66d3 100755 --- a/qa/rpc-tests/rest.py +++ b/qa/rpc-tests/rest.py @@ -14,6 +14,7 @@ from struct import * import binascii import json import StringIO +import decimal try: import http.client as httplib @@ -31,10 +32,20 @@ def deser_uint256(f): r += t << (i * 32) return r -#allows simple http get calls with a request body -def http_get_call(host, port, path, requestdata = '', response_object = 0): +#allows simple http get calls +def http_get_call(host, port, path, response_object = 0): conn = httplib.HTTPConnection(host, port) - conn.request('GET', path, requestdata) + conn.request('GET', path) + + if response_object: + return conn.getresponse() + + return conn.getresponse().read() + +#allows simple http post calls with a request body +def http_post_call(host, port, path, requestdata = '', response_object = 0): + conn = httplib.HTTPConnection(host, port) + conn.request('POST', path, requestdata) if response_object: return conn.getresponse() @@ -136,7 +147,7 @@ class RESTTest (BitcoinTestFramework): binaryRequest += binascii.unhexlify(vintx); binaryRequest += pack("i", 0); - bin_response = http_get_call(url.hostname, url.port, '/rest/getutxos'+self.FORMAT_SEPARATOR+'bin', binaryRequest) + bin_response = http_post_call(url.hostname, url.port, '/rest/getutxos'+self.FORMAT_SEPARATOR+'bin', binaryRequest) output = StringIO.StringIO() output.write(bin_response) output.seek(0) @@ -174,14 +185,14 @@ class RESTTest (BitcoinTestFramework): #do some invalid requests json_request = '{"checkmempool' - response = http_get_call(url.hostname, url.port, '/rest/getutxos'+self.FORMAT_SEPARATOR+'json', json_request, True) + response = http_post_call(url.hostname, url.port, '/rest/getutxos'+self.FORMAT_SEPARATOR+'json', json_request, True) assert_equal(response.status, 500) #must be a 500 because we send a invalid json request json_request = '{"checkmempool' - response = http_get_call(url.hostname, url.port, '/rest/getutxos'+self.FORMAT_SEPARATOR+'bin', json_request, True) + response = http_post_call(url.hostname, url.port, '/rest/getutxos'+self.FORMAT_SEPARATOR+'bin', json_request, True) assert_equal(response.status, 500) #must be a 500 because we send a invalid bin request - response = http_get_call(url.hostname, url.port, '/rest/getutxos/checkmempool'+self.FORMAT_SEPARATOR+'bin', '', True) + response = http_post_call(url.hostname, url.port, '/rest/getutxos/checkmempool'+self.FORMAT_SEPARATOR+'bin', '', True) assert_equal(response.status, 500) #must be a 500 because we send a invalid bin request #test limits @@ -189,14 +200,14 @@ class RESTTest (BitcoinTestFramework): for x in range(0, 20): json_request += txid+'-'+str(n)+'/' json_request = json_request.rstrip("/") - response = http_get_call(url.hostname, url.port, '/rest/getutxos'+json_request+self.FORMAT_SEPARATOR+'json', '', True) + response = http_post_call(url.hostname, url.port, '/rest/getutxos'+json_request+self.FORMAT_SEPARATOR+'json', '', True) assert_equal(response.status, 500) #must be a 500 because we exceeding the limits json_request = '/checkmempool/' for x in range(0, 15): json_request += txid+'-'+str(n)+'/' json_request = json_request.rstrip("/"); - response = http_get_call(url.hostname, url.port, '/rest/getutxos'+json_request+self.FORMAT_SEPARATOR+'json', '', True) + response = http_post_call(url.hostname, url.port, '/rest/getutxos'+json_request+self.FORMAT_SEPARATOR+'json', '', True) assert_equal(response.status, 200) #must be a 500 because we exceeding the limits self.nodes[0].generate(1) #generate block to not affect upcoming tests @@ -216,27 +227,27 @@ class RESTTest (BitcoinTestFramework): # this is 32 9-bit indices # check binary format - response = http_get_call(url.hostname, url.port, '/rest/block/'+bb_hash+self.FORMAT_SEPARATOR+"bin", "", True) + response = http_get_call(url.hostname, url.port, '/rest/block/'+bb_hash+self.FORMAT_SEPARATOR+"bin", True) assert_equal(response.status, 200) assert_greater_than(int(response.getheader('content-length')), 177) response_str = response.read() # compare with block header - response_header = http_get_call(url.hostname, url.port, '/rest/headers/1/'+bb_hash+self.FORMAT_SEPARATOR+"bin", "", True) + response_header = http_get_call(url.hostname, url.port, '/rest/headers/1/'+bb_hash+self.FORMAT_SEPARATOR+"bin", True) assert_equal(response_header.status, 200) assert_equal(int(response_header.getheader('content-length')), 177) response_header_str = response_header.read() assert_equal(response_str[0:177], response_header_str) # check block hex format - response_hex = http_get_call(url.hostname, url.port, '/rest/block/'+bb_hash+self.FORMAT_SEPARATOR+"hex", "", True) + response_hex = http_get_call(url.hostname, url.port, '/rest/block/'+bb_hash+self.FORMAT_SEPARATOR+"hex", True) assert_equal(response_hex.status, 200) assert_greater_than(int(response_hex.getheader('content-length')), 354) response_hex_str = response_hex.read() assert_equal(response_str.encode("hex")[0:354], response_hex_str[0:354]) # compare with hex block header - response_header_hex = http_get_call(url.hostname, url.port, '/rest/headers/1/'+bb_hash+self.FORMAT_SEPARATOR+"hex", "", True) + response_header_hex = http_get_call(url.hostname, url.port, '/rest/headers/1/'+bb_hash+self.FORMAT_SEPARATOR+"hex", True) assert_equal(response_header_hex.status, 200) assert_greater_than(int(response_header_hex.getheader('content-length')), 354) response_header_hex_str = response_header_hex.read() @@ -244,18 +255,49 @@ class RESTTest (BitcoinTestFramework): assert_equal(response_header_str.encode("hex")[0:354], response_header_hex_str[0:354]) # check json format - json_string = http_get_call(url.hostname, url.port, '/rest/block/'+bb_hash+self.FORMAT_SEPARATOR+'json') - json_obj = json.loads(json_string) - assert_equal(json_obj['hash'], bb_hash) + block_json_string = http_get_call(url.hostname, url.port, '/rest/block/'+bb_hash+self.FORMAT_SEPARATOR+'json') + block_json_obj = json.loads(block_json_string) + assert_equal(block_json_obj['hash'], bb_hash) + + # compare with json block header + response_header_json = http_get_call(url.hostname, url.port, '/rest/headers/1/'+bb_hash+self.FORMAT_SEPARATOR+"json", True) + assert_equal(response_header_json.status, 200) + response_header_json_str = response_header_json.read() + json_obj = json.loads(response_header_json_str, parse_float=decimal.Decimal) + assert_equal(len(json_obj), 1) #ensure that there is one header in the json response + assert_equal(json_obj[0]['hash'], bb_hash) #request/response hash should be the same + + #compare with normal RPC block response + rpc_block_json = self.nodes[0].getblock(bb_hash) + assert_equal(json_obj[0]['hash'], rpc_block_json['hash']) + assert_equal(json_obj[0]['confirmations'], rpc_block_json['confirmations']) + assert_equal(json_obj[0]['height'], rpc_block_json['height']) + assert_equal(json_obj[0]['version'], rpc_block_json['version']) + assert_equal(json_obj[0]['merkleroot'], rpc_block_json['merkleroot']) + assert_equal(json_obj[0]['time'], rpc_block_json['time']) + assert_equal(json_obj[0]['nonce'], rpc_block_json['nonce']) + assert_equal(json_obj[0]['bits'], rpc_block_json['bits']) + assert_equal(json_obj[0]['difficulty'], rpc_block_json['difficulty']) + assert_equal(json_obj[0]['chainwork'], rpc_block_json['chainwork']) + assert_equal(json_obj[0]['previousblockhash'], rpc_block_json['previousblockhash']) + + #see if we can get 5 headers in one response + self.nodes[1].generate(5) + self.sync_all() + response_header_json = http_get_call(url.hostname, url.port, '/rest/headers/5/'+bb_hash+self.FORMAT_SEPARATOR+"json", True) + assert_equal(response_header_json.status, 200) + response_header_json_str = response_header_json.read() + json_obj = json.loads(response_header_json_str) + assert_equal(len(json_obj), 5) #now we should have 5 header objects # do tx test - tx_hash = json_obj['tx'][0]['txid']; + tx_hash = block_json_obj['tx'][0]['txid']; json_string = http_get_call(url.hostname, url.port, '/rest/tx/'+tx_hash+self.FORMAT_SEPARATOR+"json") json_obj = json.loads(json_string) assert_equal(json_obj['txid'], tx_hash) # check hex format response - hex_string = http_get_call(url.hostname, url.port, '/rest/tx/'+tx_hash+self.FORMAT_SEPARATOR+"hex", "", True) + hex_string = http_get_call(url.hostname, url.port, '/rest/tx/'+tx_hash+self.FORMAT_SEPARATOR+"hex", True) assert_equal(hex_string.status, 200) assert_greater_than(int(response.getheader('content-length')), 10) @@ -269,6 +311,19 @@ class RESTTest (BitcoinTestFramework): txs.append(self.nodes[0].sendtoaddress(self.nodes[2].getnewaddress(), 1)) self.sync_all() + # check that there are exactly 3 transactions in the TX memory pool before generating the block + json_string = http_get_call(url.hostname, url.port, '/rest/mempool/info'+self.FORMAT_SEPARATOR+'json') + json_obj = json.loads(json_string) + assert_equal(json_obj['size'], 3) + # the size of the memory pool should be greater than 3x ~100 bytes + assert_greater_than(json_obj['bytes'], 300) + + # check that there are our submitted transactions in the TX memory pool + json_string = http_get_call(url.hostname, url.port, '/rest/mempool/contents'+self.FORMAT_SEPARATOR+'json') + json_obj = json.loads(json_string) + for tx in txs: + assert_equal(tx in json_obj, True) + # now mine the transactions newblockhash = self.nodes[1].generate(1) self.sync_all() diff --git a/qa/rpc-tests/test_framework/authproxy.py b/qa/rpc-tests/test_framework/authproxy.py index 1188f099e..ad0a31798 100644 --- a/qa/rpc-tests/test_framework/authproxy.py +++ b/qa/rpc-tests/test_framework/authproxy.py @@ -106,6 +106,32 @@ class AuthServiceProxy(object): name = "%s.%s" % (self.__service_name, name) return AuthServiceProxy(self.__service_url, name, connection=self.__conn) + def _request(self, method, path, postdata): + ''' + Do a HTTP request, with retry if we get disconnected (e.g. due to a timeout). + This is a workaround for https://bugs.python.org/issue3566 which is fixed in Python 3.5. + ''' + headers = {'Host': self.__url.hostname, + 'User-Agent': USER_AGENT, + 'Authorization': self.__auth_header, + 'Content-type': 'application/json'} + try: + self.__conn.request(method, path, postdata, headers) + return self._get_response() + except httplib.BadStatusLine as e: + if e.line == "''": # if connection was closed, try again + self.__conn.close() + self.__conn.request(method, path, postdata, headers) + return self._get_response() + else: + raise + except (BrokenPipeError,ConnectionResetError): + # Python 3.5+ raises BrokenPipeError instead of BadStatusLine when the connection was reset + # ConnectionResetError happens on FreeBSD with Python 3.4 + self.__conn.close() + self.__conn.request(method, path, postdata, headers) + return self._get_response() + def __call__(self, *args): AuthServiceProxy.__id_count += 1 @@ -115,13 +141,7 @@ class AuthServiceProxy(object): 'method': self.__service_name, 'params': args, 'id': AuthServiceProxy.__id_count}, default=EncodeDecimal) - self.__conn.request('POST', self.__url.path, postdata, - {'Host': self.__url.hostname, - 'User-Agent': USER_AGENT, - 'Authorization': self.__auth_header, - 'Content-type': 'application/json'}) - - response = self._get_response() + response = self._request('POST', self.__url.path, postdata) if response['error'] is not None: raise JSONRPCException(response['error']) elif 'result' not in response: @@ -133,13 +153,7 @@ class AuthServiceProxy(object): def _batch(self, rpc_call_list): postdata = json.dumps(list(rpc_call_list), default=EncodeDecimal) log.debug("--> "+postdata) - self.__conn.request('POST', self.__url.path, postdata, - {'Host': self.__url.hostname, - 'User-Agent': USER_AGENT, - 'Authorization': self.__auth_header, - 'Content-type': 'application/json'}) - - return self._get_response() + return self._request('POST', self.__url.path, postdata) def _get_response(self): http_response = self.__conn.getresponse() diff --git a/qa/rpc-tests/test_framework/comptool.py b/qa/rpc-tests/test_framework/comptool.py index 24ae05807..b945f1bf2 100755 --- a/qa/rpc-tests/test_framework/comptool.py +++ b/qa/rpc-tests/test_framework/comptool.py @@ -140,8 +140,8 @@ class TestNode(NodeConnCB): # or false, then only the last tx is tested against outcome.) class TestInstance(object): - def __init__(self, objects=[], sync_every_block=True, sync_every_tx=False): - self.blocks_and_transactions = objects + def __init__(self, objects=None, sync_every_block=True, sync_every_tx=False): + self.blocks_and_transactions = objects if objects else [] self.sync_every_block = sync_every_block self.sync_every_tx = sync_every_tx diff --git a/qa/rpc-tests/test_framework/mininode.py b/qa/rpc-tests/test_framework/mininode.py index b7d78e74f..c39637073 100755 --- a/qa/rpc-tests/test_framework/mininode.py +++ b/qa/rpc-tests/test_framework/mininode.py @@ -37,8 +37,11 @@ MY_SUBVERSION = "/python-mininode-tester:0.0.1/" MAX_INV_SZ = 50000 + +COIN = 100000000 # 1 zec in zatoshis + # Keep our own socket map for asyncore, so that we can track disconnects -# ourselves (to workaround an issue with closing an asyncore socket when +# ourselves (to workaround an issue with closing an asyncore socket when # using select) mininode_socket_map = dict() diff --git a/qa/rpc-tests/test_framework/util.py b/qa/rpc-tests/test_framework/util.py index bfb9bddf1..f5ef9dec6 100644 --- a/qa/rpc-tests/test_framework/util.py +++ b/qa/rpc-tests/test_framework/util.py @@ -1,6 +1,8 @@ # 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. + + # # Helpful routines for regression testing # @@ -9,6 +11,8 @@ import os import sys +from binascii import hexlify, unhexlify +from base64 import b64encode from decimal import Decimal, ROUND_DOWN import json import random @@ -32,6 +36,15 @@ def check_json_precision(): if satoshis != 2000000000000003: raise RuntimeError("JSON encode/decode loses precision") +def bytes_to_hex_str(byte_str): + return hexlify(byte_str).decode('ascii') + +def hex_str_to_bytes(hex_str): + return unhexlify(hex_str.encode('ascii')) + +def str_to_b64str(string): + return b64encode(string.encode('utf-8')).decode('ascii') + def sync_blocks(rpc_connections, wait=1): """ Wait until everybody has the same block count @@ -70,6 +83,7 @@ def initialize_datadir(dirname, n): f.write("rpcpassword=rt\n"); f.write("port="+str(p2p_port(n))+"\n"); f.write("rpcport="+str(rpc_port(n))+"\n"); + f.write("listenonion=0\n"); return datadir def initialize_chain(test_dir): diff --git a/qa/rpc-tests/wallet.py b/qa/rpc-tests/wallet.py index e32561881..ff827892a 100755 --- a/qa/rpc-tests/wallet.py +++ b/qa/rpc-tests/wallet.py @@ -67,14 +67,14 @@ class WalletTest (BitcoinTestFramework): assert_equal(self.nodes[2].getbalance("*"), 21) # Node0 should have three unspent outputs. - # Create a couple of transactions to send them to node2, submit them through - # node1, and make sure both node0 and node2 pick them up properly: + # Create a couple of transactions to send them to node2, submit them through + # node1, and make sure both node0 and node2 pick them up properly: node0utxos = self.nodes[0].listunspent(1) assert_equal(len(node0utxos), 3) # create both transactions txns_to_send = [] - for utxo in node0utxos: + for utxo in node0utxos: inputs = [] outputs = {} inputs.append({ "txid" : utxo["txid"], "vout" : utxo["vout"]}) @@ -159,7 +159,7 @@ class WalletTest (BitcoinTestFramework): #check if we can list zero value tx as available coins #1. create rawtx - #2. hex-changed one output to 0.0 + #2. hex-changed one output to 0.0 #3. sign and send #4. check if recipient (node0) can list the zero value tx usp = self.nodes[1].listunspent() @@ -339,6 +339,15 @@ class WalletTest (BitcoinTestFramework): myvjoinsplits = mytxdetails["vjoinsplit"] assert_greater_than(len(myvjoinsplits), 0) + # the first (probably only) joinsplit should take in all the public value + myjoinsplit = self.nodes[2].getrawtransaction(mytxid, 1)["vjoinsplit"][0] + assert_equal(myjoinsplit["vpub_old"], zsendmanynotevalue) + assert_equal(myjoinsplit["vpub_new"], 0) + assert("onetimePubKey" in myjoinsplit.keys()) + assert("randomSeed" in myjoinsplit.keys()) + assert("ciphertexts" in myjoinsplit.keys()) + + # send from private note to node 0 and node 2 node0balance = self.nodes[0].getbalance() # 25.99794745 node2balance = self.nodes[2].getbalance() # 16.99790000 @@ -371,5 +380,37 @@ class WalletTest (BitcoinTestFramework): assert_equal(Decimal(self.nodes[2].getbalance()), node2balance) assert_equal(Decimal(self.nodes[2].getbalance("*")), node2balance) + #send a tx with value in a string (PR#6380 +) + txId = self.nodes[0].sendtoaddress(self.nodes[2].getnewaddress(), "2") + txObj = self.nodes[0].gettransaction(txId) + assert_equal(txObj['amount'], Decimal('-2.00000000')) + + txId = self.nodes[0].sendtoaddress(self.nodes[2].getnewaddress(), "0.0001") + txObj = self.nodes[0].gettransaction(txId) + assert_equal(txObj['amount'], Decimal('-0.00010000')) + + #check if JSON parser can handle scientific notation in strings + txId = self.nodes[0].sendtoaddress(self.nodes[2].getnewaddress(), "1e-4") + txObj = self.nodes[0].gettransaction(txId) + assert_equal(txObj['amount'], Decimal('-0.00010000')) + + #this should fail + errorString = "" + try: + txId = self.nodes[0].sendtoaddress(self.nodes[2].getnewaddress(), "1f-4") + except JSONRPCException,e: + errorString = e.error['message'] + + assert_equal("Invalid amount" in errorString, True); + + errorString = "" + try: + self.nodes[0].generate("2") #use a string to as block amount parameter must fail because it's not interpreted as amount + except JSONRPCException,e: + errorString = e.error['message'] + + assert_equal("not an integer" in errorString, True); + + if __name__ == '__main__': WalletTest ().main () diff --git a/qa/rpc-tests/wallet_1941.py b/qa/rpc-tests/wallet_1941.py index 4958768f9..5f2fe3f72 100755 --- a/qa/rpc-tests/wallet_1941.py +++ b/qa/rpc-tests/wallet_1941.py @@ -31,6 +31,14 @@ class Wallet1941RegressionTest (BitcoinTestFramework): connect_nodes_bi(self.nodes,0,1) self.sync_all() + def restart_second_node(self, extra_args=[]): + self.nodes[1].stop() + bitcoind_processes[1].wait() + self.nodes[1] = start_node(1, self.options.tmpdir, extra_args=['-regtestprotectcoinbase','-debug=zrpc'] + extra_args) + self.nodes[1].setmocktime(starttime + 9000) + connect_nodes_bi(self.nodes, 0, 1) + self.sync_all() + def wait_and_assert_operationid_status(self, myopid, in_status='success', in_errormsg=None): print('waiting for async operation {}'.format(myopid)) opids = [] @@ -93,8 +101,17 @@ class Wallet1941RegressionTest (BitcoinTestFramework): self.nodes[1].generate(101) self.sync_all() - # Import the key on node 1. - self.nodes[1].z_importkey(key) + # Import the key on node 1, only scanning the last few blocks. + # (uses 'true' to test boolean fallback) + self.nodes[1].z_importkey(key, 'true', self.nodes[1].getblockchaininfo()['blocks'] - 100) + + # Confirm that the balance on node 1 is zero, as we have not + # rescanned over the older transactions + resp = self.nodes[1].z_getbalance(myzaddr) + assert_equal(Decimal(resp), 0) + + # Re-import the key on node 1, scanning from before the transaction. + self.nodes[1].z_importkey(key, 'yes', self.nodes[1].getblockchaininfo()['blocks'] - 110) # Confirm that the balance on node 1 is valid now (node 1 must # have rescanned) diff --git a/qa/rpc-tests/wallet_nullifiers.py b/qa/rpc-tests/wallet_nullifiers.py index ce18f8d51..93f5a499d 100755 --- a/qa/rpc-tests/wallet_nullifiers.py +++ b/qa/rpc-tests/wallet_nullifiers.py @@ -12,7 +12,7 @@ class WalletNullifiersTest (BitcoinTestFramework): def setup_nodes(self): return start_nodes(4, self.options.tmpdir, - extra_args=[['-developerencryptwallet']] * 4) + extra_args=[['-experimentalfeatures', '-developerencryptwallet']] * 4) def run_test (self): # add zaddr to node 0 diff --git a/qa/rpc-tests/wallet_protectcoinbase.py b/qa/rpc-tests/wallet_protectcoinbase.py index ddef5fdaf..1ed0d5b1f 100755 --- a/qa/rpc-tests/wallet_protectcoinbase.py +++ b/qa/rpc-tests/wallet_protectcoinbase.py @@ -16,7 +16,7 @@ class WalletProtectCoinbaseTest (BitcoinTestFramework): # Start nodes with -regtestprotectcoinbase to set fCoinbaseMustBeProtected to true. def setup_network(self, split=False): - self.nodes = start_nodes(3, self.options.tmpdir, extra_args=[['-regtestprotectcoinbase']] * 3 ) + self.nodes = start_nodes(3, self.options.tmpdir, extra_args=[['-regtestprotectcoinbase', '-debug=zrpcunsafe']] * 3 ) connect_nodes_bi(self.nodes,0,1) connect_nodes_bi(self.nodes,1,2) connect_nodes_bi(self.nodes,0,2) @@ -100,6 +100,7 @@ class WalletProtectCoinbaseTest (BitcoinTestFramework): errorString = results[0]["error"]["message"] # Test that the returned status object contains a params field with the operation's input parameters + assert_equal(results[0]["method"], "z_sendmany") params =results[0]["params"] assert_equal(params["fee"], Decimal('0.0001')) # default assert_equal(params["minconf"], Decimal('1')) # default @@ -114,17 +115,44 @@ class WalletProtectCoinbaseTest (BitcoinTestFramework): recipients = [] recipients.append({"address":myzaddr, "amount": Decimal('20.0') - Decimal('0.0001')}) myopid = self.nodes[0].z_sendmany(mytaddr, recipients) - self.wait_and_assert_operationid_status(myopid) + mytxid = self.wait_and_assert_operationid_status(myopid) self.sync_all() self.nodes[1].generate(1) self.sync_all() + # Verify that debug=zrpcunsafe logs params, and that full txid is associated with opid + logpath = self.options.tmpdir+"/node0/regtest/debug.log" + logcounter = 0 + with open(logpath, "r") as myfile: + logdata = myfile.readlines() + for logline in logdata: + if myopid + ": z_sendmany initialized" in logline and mytaddr in logline and myzaddr in logline: + assert_equal(logcounter, 0) # verify order of log messages + logcounter = logcounter + 1 + if myopid + ": z_sendmany finished" in logline and mytxid in logline: + assert_equal(logcounter, 1) + logcounter = logcounter + 1 + assert_equal(logcounter, 2) + # check balances (the z_sendmany consumes 3 coinbase utxos) resp = self.nodes[0].z_gettotalbalance() assert_equal(Decimal(resp["transparent"]), Decimal('20.0')) assert_equal(Decimal(resp["private"]), Decimal('19.9999')) assert_equal(Decimal(resp["total"]), Decimal('39.9999')) + # A custom fee of 0 is okay. Here the node will send the note value back to itself. + recipients = [] + recipients.append({"address":myzaddr, "amount": Decimal('19.9999')}) + myopid = self.nodes[0].z_sendmany(myzaddr, recipients, 1, Decimal('0.0')) + mytxid = self.wait_and_assert_operationid_status(myopid) + self.sync_all() + self.nodes[1].generate(1) + self.sync_all() + resp = self.nodes[0].z_gettotalbalance() + assert_equal(Decimal(resp["transparent"]), Decimal('20.0')) + assert_equal(Decimal(resp["private"]), Decimal('19.9999')) + assert_equal(Decimal(resp["total"]), Decimal('39.9999')) + # convert note to transparent funds recipients = [] recipients.append({"address":mytaddr, "amount":Decimal('10.0')}) @@ -153,7 +181,7 @@ class WalletProtectCoinbaseTest (BitcoinTestFramework): amount = Decimal('10.0') - Decimal('0.00010000') - Decimal('0.00000001') # this leaves change at 1 zatoshi less than dust threshold recipients.append({"address":self.nodes[0].getnewaddress(), "amount":amount }) myopid = self.nodes[0].z_sendmany(mytaddr, recipients) - self.wait_and_assert_operationid_status(myopid, "failed", "Insufficient transparent funds, have 10.00, need 0.00000545 more to avoid creating invalid change output 0.00000001 (dust threshold is 0.00000546)") + self.wait_and_assert_operationid_status(myopid, "failed", "Insufficient transparent funds, have 10.00, need 0.00000053 more to avoid creating invalid change output 0.00000001 (dust threshold is 0.00000054)") # Send will fail because send amount is too big, even when including coinbase utxos errorString = "" @@ -214,14 +242,14 @@ class WalletProtectCoinbaseTest (BitcoinTestFramework): self.nodes[0].z_sendmany(myzaddr, recipients, 1, -1) except JSONRPCException,e: errorString = e.error['message'] - assert_equal("Invalid amount" in errorString, True) + assert_equal("Amount out of range" in errorString, True) # Send will fail because fee is larger than MAX_MONEY try: self.nodes[0].z_sendmany(myzaddr, recipients, 1, Decimal('21000000.00000001')) except JSONRPCException,e: errorString = e.error['message'] - assert_equal("Invalid amount" in errorString, True) + assert_equal("Amount out of range" in errorString, True) # Send will fail because fee is larger than sum of outputs try: diff --git a/qa/rpc-tests/zcjoinsplit.py b/qa/rpc-tests/zcjoinsplit.py index 961f3a0a8..2b439e831 100755 --- a/qa/rpc-tests/zcjoinsplit.py +++ b/qa/rpc-tests/zcjoinsplit.py @@ -24,7 +24,7 @@ class JoinSplitTest(BitcoinTestFramework): (total_in, inputs) = gather_inputs(self.nodes[0], 40) protect_tx = self.nodes[0].createrawtransaction(inputs, {}) - joinsplit_result = self.nodes[0].zcrawjoinsplit(protect_tx, {}, {zcaddress:39.9}, 39.9, 0) + joinsplit_result = self.nodes[0].zcrawjoinsplit(protect_tx, {}, {zcaddress:39.99}, 39.99, 0) receive_result = self.nodes[0].zcrawreceive(zcsecretkey, joinsplit_result["encryptednote1"]) assert_equal(receive_result["exists"], False) @@ -45,7 +45,7 @@ class JoinSplitTest(BitcoinTestFramework): self.nodes[0].sendtoaddress(addrtest, 0.01); joinsplit_tx = self.nodes[0].createrawtransaction([], {}) - joinsplit_result = self.nodes[0].zcrawjoinsplit(joinsplit_tx, {receive_result["note"] : zcsecretkey}, {zcaddress: 39.8}, 0, 0.1) + joinsplit_result = self.nodes[0].zcrawjoinsplit(joinsplit_tx, {receive_result["note"] : zcsecretkey}, {zcaddress: 39.98}, 0, 0.01) self.nodes[0].sendrawtransaction(joinsplit_result["rawtxn"]) self.nodes[0].generate(1) diff --git a/qa/rpc-tests/zcjoinsplitdoublespend.py b/qa/rpc-tests/zcjoinsplitdoublespend.py index 21c305d43..cb89a9182 100755 --- a/qa/rpc-tests/zcjoinsplitdoublespend.py +++ b/qa/rpc-tests/zcjoinsplitdoublespend.py @@ -56,7 +56,7 @@ class JoinSplitTest(BitcoinTestFramework): for i in range(4): (total_in, inputs) = gather_inputs(self.nodes[i], 40) pool[i] = self.nodes[i].createrawtransaction(inputs, {}) - pool[i] = self.nodes[i].zcrawjoinsplit(pool[i], {}, {zcaddress:39.9}, 39.9, 0) + pool[i] = self.nodes[i].zcrawjoinsplit(pool[i], {}, {zcaddress:39.99}, 39.99, 0) signed = self.nodes[i].signrawtransaction(pool[i]["rawtxn"]) # send the tx to both halves of the network @@ -90,26 +90,26 @@ class JoinSplitTest(BitcoinTestFramework): # Create joinsplit {A, B}->{*} joinsplit_AB = self.nodes[0].zcrawjoinsplit(blank_tx, {pool[0] : zcsecretkey, pool[1] : zcsecretkey}, - {zcaddress:(39.9*2)-0.1}, - 0, 0.1) + {zcaddress:(39.99*2)-0.01}, + 0, 0.01) # Create joinsplit {B, C}->{*} joinsplit_BC = self.nodes[0].zcrawjoinsplit(blank_tx, {pool[1] : zcsecretkey, pool[2] : zcsecretkey}, - {zcaddress:(39.9*2)-0.1}, - 0, 0.1) + {zcaddress:(39.99*2)-0.01}, + 0, 0.01) # Create joinsplit {C, D}->{*} joinsplit_CD = self.nodes[0].zcrawjoinsplit(blank_tx, {pool[2] : zcsecretkey, pool[3] : zcsecretkey}, - {zcaddress:(39.9*2)-0.1}, - 0, 0.1) + {zcaddress:(39.99*2)-0.01}, + 0, 0.01) # Create joinsplit {A, D}->{*} joinsplit_AD = self.nodes[0].zcrawjoinsplit(blank_tx, {pool[0] : zcsecretkey, pool[3] : zcsecretkey}, - {zcaddress:(39.9*2)-0.1}, - 0, 0.1) + {zcaddress:(39.99*2)-0.01}, + 0, 0.01) # (a) Node 0 will spend joinsplit AB, then attempt to # double-spend it with BC. It should fail before and diff --git a/qa/rpc-tests/zmq_test.py b/qa/rpc-tests/zmq_test.py new file mode 100755 index 000000000..97850bea3 --- /dev/null +++ b/qa/rpc-tests/zmq_test.py @@ -0,0 +1,103 @@ +#!/usr/bin/env python2 +# Copyright (c) 2015 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 ZMQ interface +# + +from test_framework.test_framework import BitcoinTestFramework +from test_framework.util import * +import zmq +import binascii +import struct + +try: + import http.client as httplib +except ImportError: + import httplib +try: + import urllib.parse as urlparse +except ImportError: + import urlparse + +class ZMQTest (BitcoinTestFramework): + + port = 28332 + + def setup_nodes(self): + self.zmqContext = zmq.Context() + self.zmqSubSocket = self.zmqContext.socket(zmq.SUB) + self.zmqSubSocket.setsockopt(zmq.SUBSCRIBE, b"hashblock") + self.zmqSubSocket.setsockopt(zmq.SUBSCRIBE, b"hashtx") + self.zmqSubSocket.connect("tcp://127.0.0.1:%i" % self.port) + return start_nodes(4, self.options.tmpdir, extra_args=[ + ['-zmqpubhashtx=tcp://127.0.0.1:'+str(self.port), '-zmqpubhashblock=tcp://127.0.0.1:'+str(self.port)], + [], + [], + [] + ]) + + def run_test(self): + self.sync_all() + + genhashes = self.nodes[0].generate(1) + self.sync_all() + + print "listen..." + msg = self.zmqSubSocket.recv_multipart() + topic = msg[0] + assert_equal(topic, b"hashtx") + body = msg[1] + nseq = msg[2] + msgSequence = struct.unpack(' - - - - LSMinimumSystemVersion - 10.7.0 - - LSArchitecturePriority - - x86_64 - - - CFBundleIconFile - bitcoin.icns - - CFBundlePackageType - APPL - - CFBundleGetInfoString - @CLIENT_VERSION_MAJOR@.@CLIENT_VERSION_MINOR@.@CLIENT_VERSION_REVISION@, Copyright © 2009-@COPYRIGHT_YEAR@ The Bitcoin Core developers - - CFBundleShortVersionString - @CLIENT_VERSION_MAJOR@.@CLIENT_VERSION_MINOR@.@CLIENT_VERSION_REVISION@ - - CFBundleVersion - @CLIENT_VERSION_MAJOR@.@CLIENT_VERSION_MINOR@.@CLIENT_VERSION_REVISION@ - - CFBundleSignature - ???? - - CFBundleExecutable - Bitcoin-Qt - - CFBundleName - Bitcoin-Qt - - LSHasLocalizedDisplayName - - - CFBundleIdentifier - org.bitcoinfoundation.Bitcoin-Qt - - CFBundleURLTypes - - - CFBundleTypeRole - Editor - CFBundleURLName - org.bitcoin.BitcoinPayment - CFBundleURLSchemes - - bitcoin - - - - - UTExportedTypeDeclarations - - - UTTypeIdentifier - org.bitcoin.paymentrequest - UTTypeDescription - Bitcoin payment request - UTTypeConformsTo - - public.data - - UTTypeTagSpecification - - public.mime-type - application/x-bitcoin-payment-request - public.filename-extension - - bitcoinpaymentrequest - - - - - - CFBundleDocumentTypes - - - CFBundleTypeRole - Editor - LSItemContentTypes - - org.bitcoin.paymentrequest - - LSHandlerRank - Owner - - - - NSPrincipalClass - NSApplication - - NSHighResolutionCapable - True - - LSAppNapIsDisabled - True - - LSApplicationCategoryType - public.app-category.finance - - diff --git a/share/qt/extract_strings_qt.py b/share/qt/extract_strings_qt.py deleted file mode 100755 index d4bd58513..000000000 --- a/share/qt/extract_strings_qt.py +++ /dev/null @@ -1,78 +0,0 @@ -#!/usr/bin/python -''' -Extract _("...") strings for translation and convert to Qt4 stringdefs so that -they can be picked up by Qt linguist. -''' -from subprocess import Popen, PIPE -import glob -import operator -import os -import sys - -OUT_CPP="qt/bitcoinstrings.cpp" -EMPTY=['""'] - -def parse_po(text): - """ - Parse 'po' format produced by xgettext. - Return a list of (msgid,msgstr) tuples. - """ - messages = [] - msgid = [] - msgstr = [] - in_msgid = False - in_msgstr = False - - for line in text.split('\n'): - line = line.rstrip('\r') - if line.startswith('msgid '): - if in_msgstr: - messages.append((msgid, msgstr)) - in_msgstr = False - # message start - in_msgid = True - - msgid = [line[6:]] - elif line.startswith('msgstr '): - in_msgid = False - in_msgstr = True - msgstr = [line[7:]] - elif line.startswith('"'): - if in_msgid: - msgid.append(line) - if in_msgstr: - msgstr.append(line) - - if in_msgstr: - messages.append((msgid, msgstr)) - - return messages - -files = sys.argv[1:] - -# xgettext -n --keyword=_ $FILES -XGETTEXT=os.getenv('XGETTEXT', 'xgettext') -child = Popen([XGETTEXT,'--output=-','-n','--keyword=_'] + files, stdout=PIPE) -(out, err) = child.communicate() - -messages = parse_po(out) - -f = open(OUT_CPP, 'w') -f.write(""" - -#include - -// Automatically generated by extract_strings.py -#ifdef __GNUC__ -#define UNUSED __attribute__((unused)) -#else -#define UNUSED -#endif -""") -f.write('static const char UNUSED *bitcoin_strings[] = {\n') -messages.sort(key=operator.itemgetter(0)) -for (msgid, msgstr) in messages: - if msgid != EMPTY: - f.write('QT_TRANSLATE_NOOP("bitcoin-core", %s),\n' % ('\n'.join(msgid))) -f.write('};\n') -f.close() diff --git a/share/qt/img/reload.png b/share/qt/img/reload.png deleted file mode 100644 index 9068db9a6..000000000 Binary files a/share/qt/img/reload.png and /dev/null differ diff --git a/share/qt/img/reload.xcf b/share/qt/img/reload.xcf deleted file mode 100644 index dc8be6283..000000000 Binary files a/share/qt/img/reload.xcf and /dev/null differ diff --git a/share/qt/make_spinner.py b/share/qt/make_spinner.py deleted file mode 100755 index bb19e9150..000000000 --- a/share/qt/make_spinner.py +++ /dev/null @@ -1,38 +0,0 @@ -#!/usr/bin/env python -# W.J. van der Laan, 2011 -# Make spinning animation from a .png -# Requires imagemagick 6.7+ -from __future__ import division -from os import path -from PIL import Image -from subprocess import Popen - -SRC='img/reload.png' -TMPDIR='../../src/qt/res/movies/' -TMPNAME='spinner-%03i.png' -NUMFRAMES=35 -FRAMERATE=10.0 -CONVERT='convert' -CLOCKWISE=True -DSIZE=(16,16) - -im_src = Image.open(SRC) - -if CLOCKWISE: - im_src = im_src.transpose(Image.FLIP_LEFT_RIGHT) - -def frame_to_filename(frame): - return path.join(TMPDIR, TMPNAME % frame) - -frame_files = [] -for frame in xrange(NUMFRAMES): - rotation = (frame + 0.5) / NUMFRAMES * 360.0 - if CLOCKWISE: - rotation = -rotation - im_new = im_src.rotate(rotation, Image.BICUBIC) - im_new.thumbnail(DSIZE, Image.ANTIALIAS) - outfile = frame_to_filename(frame) - im_new.save(outfile, 'png') - frame_files.append(outfile) - - diff --git a/share/qt/make_windows_icon.sh b/share/qt/make_windows_icon.sh deleted file mode 100755 index bf607b1c6..000000000 --- a/share/qt/make_windows_icon.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash -# create multiresolution windows icon -ICON_SRC=../../src/qt/res/icons/bitcoin.png -ICON_DST=../../src/qt/res/icons/bitcoin.ico -convert ${ICON_SRC} -resize 16x16 bitcoin-16.png -convert ${ICON_SRC} -resize 32x32 bitcoin-32.png -convert ${ICON_SRC} -resize 48x48 bitcoin-48.png -convert bitcoin-16.png bitcoin-32.png bitcoin-48.png ${ICON_DST} - diff --git a/share/qt/protobuf.pri b/share/qt/protobuf.pri deleted file mode 100644 index 865fe8655..000000000 --- a/share/qt/protobuf.pri +++ /dev/null @@ -1,35 +0,0 @@ -# Based on: http://code.google.com/p/ostinato/source/browse/protobuf.pri -# -# Qt qmake integration with Google Protocol Buffers compiler protoc -# -# To compile protocol buffers with qt qmake, specify PROTOS variable and -# include this file -# -# Example: -# PROTOS = a.proto b.proto -# include(protobuf.pri) -# -# Set PROTO_PATH if you need to set the protoc --proto_path search path -# Set PROTOC to the path to the protoc compiler if it is not in your $PATH -# - -isEmpty(PROTO_DIR):PROTO_DIR = . -isEmpty(PROTOC):PROTOC = protoc - -PROTOPATHS = -for(p, PROTO_PATH):PROTOPATHS += --proto_path=$${p} - -protobuf_decl.name = protobuf header -protobuf_decl.input = PROTOS -protobuf_decl.output = $${PROTO_DIR}/${QMAKE_FILE_BASE}.pb.h -protobuf_decl.commands = $${PROTOC} --cpp_out="$${PROTO_DIR}" $${PROTOPATHS} --proto_path=${QMAKE_FILE_IN_PATH} ${QMAKE_FILE_NAME} -protobuf_decl.variable_out = GENERATED_FILES -QMAKE_EXTRA_COMPILERS += protobuf_decl - -protobuf_impl.name = protobuf implementation -protobuf_impl.input = PROTOS -protobuf_impl.output = $${PROTO_DIR}/${QMAKE_FILE_BASE}.pb.cc -protobuf_impl.depends = $${PROTO_DIR}/${QMAKE_FILE_BASE}.pb.h -protobuf_impl.commands = $$escape_expand(\\n) -protobuf_impl.variable_out = GENERATED_SOURCES -QMAKE_EXTRA_COMPILERS += protobuf_impl diff --git a/src/Makefile.am b/src/Makefile.am index 715f33fc7..7bb34f740 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1,4 +1,4 @@ -DIST_SUBDIRS = secp256k1 +DIST_SUBDIRS = secp256k1 univalue AM_LDFLAGS = $(PTHREAD_CFLAGS) $(LIBTOOL_LDFLAGS) @@ -21,6 +21,7 @@ BITCOIN_CONFIG_INCLUDES=-I$(builddir)/config BITCOIN_INCLUDES=-I$(builddir) -I$(builddir)/obj $(BOOST_CPPFLAGS) $(LEVELDB_CPPFLAGS) $(CRYPTO_CFLAGS) $(SSL_CFLAGS) BITCOIN_INCLUDES += -I$(srcdir)/secp256k1/include +BITCOIN_INCLUDES += -I$(srcdir)/univalue/include LIBBITCOIN_SERVER=libbitcoin_server.a LIBBITCOIN_WALLET=libbitcoin_wallet.a @@ -28,21 +29,22 @@ LIBBITCOIN_COMMON=libbitcoin_common.a LIBBITCOIN_CLI=libbitcoin_cli.a LIBBITCOIN_UTIL=libbitcoin_util.a LIBBITCOIN_CRYPTO=crypto/libbitcoin_crypto.a -LIBBITCOIN_UNIVALUE=univalue/libbitcoin_univalue.a -LIBBITCOINQT=qt/libbitcoinqt.a LIBSECP256K1=secp256k1/libsecp256k1.la +LIBUNIVALUE=univalue/libunivalue.la LIBZCASH=libzcash.a -lcurl $(LIBSECP256K1): $(wildcard secp256k1/src/*) $(wildcard secp256k1/include/*) $(AM_V_at)$(MAKE) $(AM_MAKEFLAGS) -C $(@D) $(@F) +$(LIBUNIVALUE): $(wildcard univalue/lib/*) + $(AM_V_at)$(MAKE) $(AM_MAKEFLAGS) -C univalue/ + # Make is not made aware of per-object dependencies to avoid limiting building parallelization # But to build the less dependent modules first, we manually select their order here: EXTRA_LIBRARIES = \ crypto/libbitcoin_crypto.a \ libbitcoin_util.a \ libbitcoin_common.a \ - univalue/libbitcoin_univalue.a \ libbitcoin_server.a \ libbitcoin_cli.a \ libzcash.a @@ -50,6 +52,9 @@ if ENABLE_WALLET BITCOIN_INCLUDES += $(BDB_CPPFLAGS) EXTRA_LIBRARIES += libbitcoin_wallet.a endif +if ENABLE_ZMQ +EXTRA_LIBRARIES += libbitcoin_zmq.a +endif if BUILD_BITCOIN_LIBS lib_LTLIBRARIES = libzcashconsensus.la @@ -110,9 +115,12 @@ BITCOIN_CORE_H = \ consensus/params.h \ consensus/validation.h \ core_io.h \ + core_memusage.h \ eccryptoverify.h \ ecwrapper.h \ hash.h \ + httprpc.h \ + httpserver.h \ init.h \ key.h \ keystore.h \ @@ -150,11 +158,13 @@ BITCOIN_CORE_H = \ support/allocators/secure.h \ support/allocators/zeroafterfree.h \ support/cleanse.h \ + support/events.h \ support/pagelocker.h \ sync.h \ threadsafety.h \ timedata.h \ tinyformat.h \ + torcontrol.h \ txdb.h \ txmempool.h \ ui_interface.h \ @@ -172,18 +182,12 @@ BITCOIN_CORE_H = \ wallet/db.h \ wallet/wallet.h \ wallet/wallet_ismine.h \ - wallet/walletdb.h + wallet/walletdb.h \ + zmq/zmqabstractnotifier.h \ + zmq/zmqconfig.h\ + zmq/zmqnotificationinterface.h \ + zmq/zmqpublishnotifier.h -JSON_H = \ - json/json_spirit.h \ - json/json_spirit_error_position.h \ - json/json_spirit_reader.h \ - json/json_spirit_reader_template.h \ - json/json_spirit_stream_reader.h \ - json/json_spirit_utils.h \ - json/json_spirit_value.h \ - json/json_spirit_writer.h \ - json/json_spirit_writer_template.h obj/build.h: FORCE @$(MKDIR_P) $(builddir)/obj @@ -191,8 +195,8 @@ obj/build.h: FORCE $(abs_top_srcdir) libbitcoin_util_a-clientversion.$(OBJEXT): obj/build.h -# server: shared between bitcoind and bitcoin-qt -libbitcoin_server_a_CPPFLAGS = $(BITCOIN_INCLUDES) $(MINIUPNPC_CPPFLAGS) +# server: zcashd +libbitcoin_server_a_CPPFLAGS = $(BITCOIN_INCLUDES) $(MINIUPNPC_CPPFLAGS) $(EVENT_CFLAGS) $(EVENT_PTHREADS_CFLAGS) libbitcoin_server_a_SOURCES = \ sendalert.cpp \ addrman.cpp \ @@ -203,6 +207,8 @@ libbitcoin_server_a_SOURCES = \ bloom.cpp \ chain.cpp \ checkpoints.cpp \ + httprpc.cpp \ + httpserver.cpp \ init.cpp \ leveldbwrapper.cpp \ main.cpp \ @@ -222,15 +228,25 @@ libbitcoin_server_a_SOURCES = \ rpcserver.cpp \ script/sigcache.cpp \ timedata.cpp \ + torcontrol.cpp \ txdb.cpp \ txmempool.cpp \ validationinterface.cpp \ - $(JSON_H) \ $(BITCOIN_CORE_H) \ $(LIBZCASH_H) -# wallet: shared between bitcoind and bitcoin-qt, but only linked -# when wallet enabled +if ENABLE_ZMQ +LIBBITCOIN_ZMQ=libbitcoin_zmq.a + +libbitcoin_zmq_a_CPPFLAGS = $(BITCOIN_INCLUDES) $(ZMQ_CFLAGS) +libbitcoin_zmq_a_SOURCES = \ + zmq/zmqabstractnotifier.cpp \ + zmq/zmqnotificationinterface.cpp \ + zmq/zmqpublishnotifier.cpp +endif + + +# wallet: zcashd, but only linked when wallet enabled libbitcoin_wallet_a_CPPFLAGS = $(BITCOIN_INCLUDES) libbitcoin_wallet_a_SOURCES = \ utiltest.cpp \ @@ -248,13 +264,8 @@ libbitcoin_wallet_a_SOURCES = \ $(BITCOIN_CORE_H) \ $(LIBZCASH_H) -EQUIHASH_TROMP_SOURCES = \ - pow/tromp/equi_miner.h \ - pow/tromp/equi.h \ - pow/tromp/osx_barrier.h - # crypto primitives library -crypto_libbitcoin_crypto_a_CPPFLAGS = $(BITCOIN_CONFIG_INCLUDES) -DEQUIHASH_TROMP_ATOMIC +crypto_libbitcoin_crypto_a_CPPFLAGS = $(BITCOIN_CONFIG_INCLUDES) crypto_libbitcoin_crypto_a_SOURCES = \ crypto/common.h \ crypto/equihash.cpp \ @@ -271,18 +282,21 @@ crypto_libbitcoin_crypto_a_SOURCES = \ crypto/sha256.cpp \ crypto/sha256.h \ crypto/sha512.cpp \ - crypto/sha512.h \ + crypto/sha512.h + +if ENABLE_MINING +EQUIHASH_TROMP_SOURCES = \ + pow/tromp/equi_miner.h \ + pow/tromp/equi.h \ + pow/tromp/osx_barrier.h + +crypto_libbitcoin_crypto_a_CPPFLAGS += \ + -DEQUIHASH_TROMP_ATOMIC +crypto_libbitcoin_crypto_a_SOURCES += \ ${EQUIHASH_TROMP_SOURCES} +endif -# univalue JSON library -univalue_libbitcoin_univalue_a_SOURCES = \ - univalue/univalue.cpp \ - univalue/univalue.h \ - univalue/univalue_escapes.h \ - univalue/univalue_read.cpp \ - univalue/univalue_write.cpp - -# common: shared between bitcoind, and bitcoin-qt and non-server tools +# common: shared between zcashd and non-server tools libbitcoin_common_a_CPPFLAGS = $(BITCOIN_INCLUDES) libbitcoin_common_a_SOURCES = \ amount.cpp \ @@ -339,7 +353,7 @@ if GLIBC_BACK_COMPAT libbitcoin_util_a_SOURCES += compat/glibc_compat.cpp endif -# cli: shared between bitcoin-cli and bitcoin-qt +# cli: zcash-cli libbitcoin_cli_a_CPPFLAGS = $(BITCOIN_INCLUDES) libbitcoin_cli_a_SOURCES = \ rpcclient.cpp \ @@ -361,7 +375,7 @@ endif komodod_LDADD = \ $(LIBBITCOIN_SERVER) \ $(LIBBITCOIN_COMMON) \ - $(LIBBITCOIN_UNIVALUE) \ + $(LIBUNIVALUE) \ $(LIBBITCOIN_UTIL) \ $(LIBBITCOIN_CRYPTO) \ $(LIBZCASH) \ @@ -369,6 +383,10 @@ komodod_LDADD = \ $(LIBMEMENV) \ $(LIBSECP256K1) +if ENABLE_ZMQ +zcashd_LDADD += $(LIBBITCOIN_ZMQ) $(ZMQ_LIBS) +endif + if ENABLE_WALLET komodod_LDADD += libbitcoin_wallet.a endif @@ -379,14 +397,15 @@ komodod_LDADD += \ $(SSL_LIBS) \ $(CRYPTO_LIBS) \ $(MINIUPNPC_LIBS) \ + $(EVENT_PTHREADS_LIBS) \ + $(EVENT_LIBS) \ $(LIBZCASH) \ $(LIBBITCOIN_CRYPTO) \ $(LIBZCASH_LIBS) -# # bitcoin-cli binary # komodo_cli_SOURCES = bitcoin-cli.cpp -komodo_cli_CPPFLAGS = $(BITCOIN_INCLUDES) +komodo_cli_CPPFLAGS = $(BITCOIN_INCLUDES) $(EVENT_CFLAGS) komodo_cli_LDFLAGS = $(RELDFLAGS) $(AM_LDFLAGS) $(LIBTOOL_APP_LDFLAGS) if TARGET_WINDOWS @@ -395,10 +414,12 @@ endif komodo_cli_LDADD = \ $(LIBBITCOIN_CLI) \ + $(LIBUNIVALUE) \ $(LIBBITCOIN_UTIL) \ $(BOOST_LIBS) \ $(SSL_LIBS) \ $(CRYPTO_LIBS) \ + $(EVENT_LIBS) \ $(LIBZCASH) \ $(LIBBITCOIN_CRYPTO) \ $(LIBZCASH_LIBS) @@ -415,7 +436,8 @@ endif # FIXME: Is libzcash needed for zcash_tx? komodo_tx_LDADD = \ - $(LIBBITCOIN_UNIVALUE) \ +#$(LIBBITCOIN_UNIVALUE) \ + $(LIBUNIVALUE) \ $(LIBBITCOIN_COMMON) \ $(LIBBITCOIN_UTIL) \ $(LIBSECP256K1) \ @@ -501,7 +523,7 @@ clean-local: .mm.o: $(AM_V_CXX) $(OBJCXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CXXFLAGS) $(QT_INCLUDES) $(CXXFLAGS) -c -o $@ $< + $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o $@ $< check-symbols: $(bin_PROGRAMS) if GLIBC_BACK_COMPAT @@ -524,12 +546,4 @@ endif #include Makefile.gtest.include #endif -if ENABLE_QT -include Makefile.qt.include -endif - -if ENABLE_QT_TESTS -include Makefile.qttest.include -endif - include Makefile.zcash.include diff --git a/src/Makefile.gtest.include b/src/Makefile.gtest.include index 5a46b1f0f..ea71f19c3 100644 --- a/src/Makefile.gtest.include +++ b/src/Makefile.gtest.include @@ -18,7 +18,6 @@ zcash_gtest_SOURCES += \ wallet/gtest/test_wallet_zkeys.cpp endif zcash_gtest_SOURCES += \ - gtest/test_jsonspirit.cpp \ gtest/test_tautology.cpp \ gtest/test_equihash.cpp \ gtest/test_joinsplit.cpp \ @@ -26,6 +25,7 @@ zcash_gtest_SOURCES += \ gtest/test_noteencryption.cpp \ gtest/test_merkletree.cpp \ gtest/test_metrics.cpp \ + gtest/test_miner.cpp \ gtest/test_pow.cpp \ gtest/test_random.cpp \ gtest/test_rpc.cpp \ @@ -44,11 +44,14 @@ komodo_gtest_CPPFLAGS = -DMULTICORE -fopenmp -DBINARY_OUTPUT -DCURVE_ALT_BN128 - komodo_gtest_LDADD = -lgtest -lgmock $(LIBBITCOIN_SERVER) $(LIBBITCOIN_CLI) $(LIBBITCOIN_COMMON) $(LIBBITCOIN_UTIL) $(LIBBITCOIN_CRYPTO) $(LIBBITCOIN_UNIVALUE) $(LIBLEVELDB) $(LIBMEMENV) \ $(BOOST_LIBS) $(BOOST_UNIT_TEST_FRAMEWORK_LIB) $(LIBSECP256K1) +if ENABLE_ZMQ +zcash_gtest_LDADD += $(LIBBITCOIN_ZMQ) $(ZMQ_LIBS) +endif if ENABLE_WALLET komodo_gtest_LDADD += $(LIBBITCOIN_WALLET) endif -komodo_gtest_LDADD += $(LIBBITCOIN_CONSENSUS) $(BDB_LIBS) $(SSL_LIBS) $(CRYPTO_LIBS) $(MINIUPNPC_LIBS) $(LIBZCASH) $(LIBZCASH_LIBS) +komodo_gtest_LDADD += $(LIBZCASH_CONSENSUS) $(BDB_LIBS) $(SSL_LIBS) $(CRYPTO_LIBS) $(MINIUPNPC_LIBS) $(EVENT_PTHREADS_LIBS) $(EVENT_LIBS) $(LIBZCASH) $(LIBZCASH_LIBS) komodo_gtest_LDFLAGS = $(RELDFLAGS) $(AM_LDFLAGS) $(LIBTOOL_APP_LDFLAGS) -static diff --git a/src/Makefile.test.include b/src/Makefile.test.include index 09d34043a..c97ea692d 100644 --- a/src/Makefile.test.include +++ b/src/Makefile.test.include @@ -69,6 +69,7 @@ BITCOIN_TESTS =\ test/pmt_tests.cpp \ test/policyestimator_tests.cpp \ test/pow_tests.cpp \ + test/raii_event_tests.cpp \ test/reverselock_tests.cpp \ test/rpc_tests.cpp \ test/sanity_tests.cpp \ @@ -83,6 +84,7 @@ BITCOIN_TESTS =\ test/test_bitcoin.cpp \ test/test_bitcoin.h \ test/timedata_tests.cpp \ + test/torcontrol_tests.cpp \ test/transaction_tests.cpp \ test/uint256_tests.cpp \ test/univalue_tests.cpp \ @@ -97,9 +99,9 @@ BITCOIN_TESTS += \ endif test_test_bitcoin_SOURCES = $(BITCOIN_TESTS) $(JSON_TEST_FILES) $(RAW_TEST_FILES) -test_test_bitcoin_CPPFLAGS = -fopenmp $(BITCOIN_INCLUDES) -I$(builddir)/test/ $(TESTDEFS) -test_test_bitcoin_LDADD = $(LIBBITCOIN_SERVER) $(LIBBITCOIN_CLI) $(LIBBITCOIN_COMMON) $(LIBBITCOIN_UTIL) $(LIBBITCOIN_CRYPTO) $(LIBBITCOIN_UNIVALUE) $(LIBLEVELDB) $(LIBMEMENV) \ - $(BOOST_LIBS) $(BOOST_UNIT_TEST_FRAMEWORK_LIB) $(LIBSECP256K1) +test_test_bitcoin_CPPFLAGS = -fopenmp $(BITCOIN_INCLUDES) -I$(builddir)/test/ $(TESTDEFS) $(EVENT_CFLAGS) +test_test_bitcoin_LDADD = $(LIBBITCOIN_SERVER) $(LIBBITCOIN_CLI) $(LIBBITCOIN_COMMON) $(LIBBITCOIN_UTIL) $(LIBBITCOIN_CRYPTO) $(LIBUNIVALUE) $(LIBLEVELDB) $(LIBMEMENV) \ + $(BOOST_LIBS) $(BOOST_UNIT_TEST_FRAMEWORK_LIB) $(LIBSECP256K1) $(EVENT_PTHREADS_LIBS) $(EVENT_LIBS) if ENABLE_WALLET test_test_bitcoin_LDADD += $(LIBBITCOIN_WALLET) endif @@ -107,6 +109,10 @@ endif test_test_bitcoin_LDADD += $(LIBZCASH_CONSENSUS) $(BDB_LIBS) $(SSL_LIBS) $(CRYPTO_LIBS) $(MINIUPNPC_LIBS) $(LIBZCASH) $(LIBZCASH_LIBS) test_test_bitcoin_LDFLAGS = $(RELDFLAGS) $(AM_LDFLAGS) $(LIBTOOL_APP_LDFLAGS) -static +if ENABLE_ZMQ +test_test_bitcoin_LDADD += $(ZMQ_LIBS) +endif + nodist_test_test_bitcoin_SOURCES = $(GENERATED_TEST_FILES) $(BITCOIN_TESTS): $(GENERATED_TEST_FILES) @@ -127,6 +133,7 @@ check-local: @echo "Running test/bitcoin-util-test.py..." $(AM_V_at)srcdir=$(srcdir) PYTHONPATH=$(builddir)/test $(srcdir)/test/bitcoin-util-test.py $(AM_V_at)$(MAKE) $(AM_MAKEFLAGS) -C secp256k1 check + $(AM_V_at)$(MAKE) $(AM_MAKEFLAGS) -C univalue check %.json.h: %.json @$(MKDIR_P) $(@D) diff --git a/src/Makefile.zcash.include b/src/Makefile.zcash.include index 562512dfe..7325fdcff 100644 --- a/src/Makefile.zcash.include +++ b/src/Makefile.zcash.include @@ -15,8 +15,8 @@ zcash_GenerateParams_LDADD = \ zcash_CreateJoinSplit_SOURCES = zcash/CreateJoinSplit.cpp zcash_CreateJoinSplit_LDADD = \ $(LIBBITCOIN_COMMON) \ + $(LIBZCASH) \ $(LIBBITCOIN_UTIL) \ $(LIBBITCOIN_CRYPTO) \ - $(LIBZCASH) \ $(BOOST_LIBS) \ $(LIBZCASH_LIBS) diff --git a/src/addrman.h b/src/addrman.h index cde9430ae..2a08076b7 100644 --- a/src/addrman.h +++ b/src/addrman.h @@ -470,7 +470,7 @@ public: } //! Return the number of (unique) addresses in all tables. - int size() + size_t size() const { return vRandom.size(); } diff --git a/src/alert.cpp b/src/alert.cpp index 6e41b11a2..ea9cbad21 100644 --- a/src/alert.cpp +++ b/src/alert.cpp @@ -50,7 +50,7 @@ std::string CUnsignedAlert::ToString() const BOOST_FOREACH(int n, setCancel) strSetCancel += strprintf("%d ", n); std::string strSetSubVer; - BOOST_FOREACH(std::string str, setSubVer) + BOOST_FOREACH(const std::string& str, setSubVer) strSetSubVer += "\"" + str + "\" "; return strprintf( "CAlert(\n" @@ -112,7 +112,7 @@ bool CAlert::Cancels(const CAlert& alert) const return (alert.nID <= nCancel || setCancel.count(alert.nID)); } -bool CAlert::AppliesTo(int nVersion, std::string strSubVerIn) const +bool CAlert::AppliesTo(int nVersion, const std::string& strSubVerIn) const { // TODO: rework for client-version-embedded-in-strSubVer ? return (IsInEffect() && diff --git a/src/alert.h b/src/alert.h index b5e1cd110..76d8d916e 100644 --- a/src/alert.h +++ b/src/alert.h @@ -97,7 +97,7 @@ public: uint256 GetHash() const; bool IsInEffect() const; bool Cancels(const CAlert& alert) const; - bool AppliesTo(int nVersion, std::string strSubVerIn) const; + bool AppliesTo(int nVersion, const std::string& strSubVerIn) const; bool AppliesToMe() const; bool RelayTo(CNode* pnode) const; bool CheckSignature(const std::vector& alertKey) const; diff --git a/src/amount.h b/src/amount.h index 6ccc453dc..7dc62edac 100644 --- a/src/amount.h +++ b/src/amount.h @@ -16,8 +16,16 @@ typedef int64_t CAmount; static const CAmount COIN = 100000000; static const CAmount CENT = 1000000; -/** No amount larger than this (in satoshi) is valid */ -extern CAmount MAX_MONEY; +/** No amount larger than this (in satoshi) is valid. + * + * Note that this constant is *not* the total money supply, which in Bitcoin + * currently happens to be less than 21,000,000 BTC for various reasons, but + * rather a sanity check. As this sanity check is used by consensus-critical + * validation code, the exact value of the MAX_MONEY constant is consensus + * critical; in unusual circumstances like a(nother) overflow bug that allowed + * for the creation of coins out of thin air modification could lead to a fork. + * */ +static const CAmount MAX_MONEY = 21000000 * COIN; inline bool MoneyRange(const CAmount& nValue) { return (nValue >= 0 && nValue <= MAX_MONEY); } /** Type-safe wrapper class to for fee rates diff --git a/src/asyncrpcoperation.cpp b/src/asyncrpcoperation.cpp index 508cd0a51..f32e8d716 100644 --- a/src/asyncrpcoperation.cpp +++ b/src/asyncrpcoperation.cpp @@ -13,7 +13,6 @@ #include using namespace std; -using namespace json_spirit; static boost::uuids::random_generator uuidgen; @@ -109,34 +108,34 @@ void AsyncRPCOperation::main() { */ // Otherwise, if the operation was a success: - Value v("We have a result!"); + UniValue v(UniValue::VSTR, "We have a result!"); set_result(v); set_state(OperationStatus::SUCCESS); } /** - * Return the error of the completed operation as a Value object. - * If there is no error, return null Value. + * Return the error of the completed operation as a UniValue object. + * If there is no error, return null UniValue. */ -Value AsyncRPCOperation::getError() const { +UniValue AsyncRPCOperation::getError() const { if (!isFailed()) { - return Value::null; + return NullUniValue; } std::lock_guard guard(lock_); - Object error; + UniValue error(UniValue::VOBJ); error.push_back(Pair("code", this->error_code_)); error.push_back(Pair("message", this->error_message_)); - return Value(error); + return error; } /** - * Return the result of the completed operation as a Value object. - * If the operation did not succeed, return null Value. + * Return the result of the completed operation as a UniValue object. + * If the operation did not succeed, return null UniValue. */ -Value AsyncRPCOperation::getResult() const { +UniValue AsyncRPCOperation::getResult() const { if (!isSuccess()) { - return Value::null; + return NullUniValue; } std::lock_guard guard(lock_); @@ -145,24 +144,24 @@ Value AsyncRPCOperation::getResult() const { /** - * Returns a status Value object. + * Returns a status UniValue object. * If the operation has failed, it will include an error object. * If the operation has succeeded, it will include the result value. * If the operation was cancelled, there will be no error object or result value. */ -Value AsyncRPCOperation::getStatus() const { +UniValue AsyncRPCOperation::getStatus() const { OperationStatus status = this->getState(); - Object obj; + UniValue obj(UniValue::VOBJ); obj.push_back(Pair("id", this->id_)); obj.push_back(Pair("status", OperationStatusMap[status])); obj.push_back(Pair("creation_time", this->creation_time_)); // TODO: Issue #1354: There may be other useful metadata to return to the user. - Value err = this->getError(); - if (!err.is_null()) { + UniValue err = this->getError(); + if (!err.isNull()) { obj.push_back(Pair("error", err.get_obj())); } - Value result = this->getResult(); - if (!result.is_null()) { + UniValue result = this->getResult(); + if (!result.isNull()) { obj.push_back(Pair("result", result)); // Include execution time for successful operation @@ -170,7 +169,7 @@ Value AsyncRPCOperation::getStatus() const { obj.push_back(Pair("execution_secs", elapsed_seconds.count())); } - return Value(obj); + return obj; } /** diff --git a/src/asyncrpcoperation.h b/src/asyncrpcoperation.h index 526a62ad0..5475102a5 100644 --- a/src/asyncrpcoperation.h +++ b/src/asyncrpcoperation.h @@ -15,13 +15,9 @@ #include #include -#include "json/json_spirit_value.h" -#include "json/json_spirit_utils.h" -#include "json/json_spirit_reader_template.h" -#include "json/json_spirit_writer_template.h" +#include using namespace std; -using namespace json_spirit; /** * AsyncRPCOperation objects are submitted to the AsyncRPCQueue for processing. @@ -67,11 +63,11 @@ public: } // Override this method to add data to the default status object. - virtual Value getStatus() const; + virtual UniValue getStatus() const; - Value getError() const; + UniValue getError() const; - Value getResult() const; + UniValue getResult() const; std::string getStateAsString() const; @@ -114,7 +110,7 @@ protected: // internal state. Currently, all operations are executed in a single-thread // by a single worker. mutable std::mutex lock_; // lock on this when read/writing non-atomics - Value result_; + UniValue result_; int error_code_; std::string error_message_; std::atomic state_; @@ -137,7 +133,7 @@ protected: this->error_message_ = errorMessage; } - void set_result(Value v) { + void set_result(UniValue v) { std::lock_guard guard(lock_); this->result_ = v; } diff --git a/src/base58.h b/src/base58.h index d3967ec4e..88efadbd6 100644 --- a/src/base58.h +++ b/src/base58.h @@ -171,7 +171,10 @@ public: K GetKey() { K ret; - ret.Decode(&vchData[0], &vchData[Size]); + if (vchData.size() == Size) { + //if base58 encouded data not holds a ext key, return a !IsValid() key + ret.Decode(&vchData[0]); + } return ret; } @@ -179,6 +182,10 @@ public: SetKey(key); } + CBitcoinExtKeyBase(const std::string& strBase58c) { + SetString(strBase58c.c_str(), Params().Base58Prefix(Type).size()); + } + CBitcoinExtKeyBase() {} }; diff --git a/src/bitcoin-cli.cpp b/src/bitcoin-cli.cpp index e000776e6..17878aa17 100644 --- a/src/bitcoin-cli.cpp +++ b/src/bitcoin-cli.cpp @@ -11,12 +11,21 @@ #include "utilstrencodings.h" #include +#include + +#include +#include +#include "support/events.h" + +#include using namespace std; using namespace json_spirit; int64_t MAX_MONEY = 200000000 * 100000000LL; uint64_t komodo_maxallowed(int32_t baseid) { return(100000000LL * 1000000); } // stub +static const int DEFAULT_HTTP_CLIENT_TIMEOUT=900; + std::string HelpMessageCli() { string strUsage; @@ -32,9 +41,7 @@ std::string HelpMessageCli() strUsage += HelpMessageOpt("-rpcwait", _("Wait for RPC server to start")); strUsage += HelpMessageOpt("-rpcuser=", _("Username for JSON-RPC connections")); strUsage += HelpMessageOpt("-rpcpassword=", _("Password for JSON-RPC connections")); - - strUsage += HelpMessageGroup(_("SSL options: (see the Bitcoin Wiki for SSL setup instructions)")); - strUsage += HelpMessageOpt("-rpcssl", _("Use OpenSSL (https) for JSON-RPC connections")); + strUsage += HelpMessageOpt("-rpcclienttimeout=", strprintf(_("Timeout in seconds during HTTP requests, or 0 for no timeout. (default: %d)"), DEFAULT_HTTP_CLIENT_TIMEOUT)); return strUsage; } @@ -81,7 +88,7 @@ static bool AppInitRPC(int argc, char* argv[]) ParseParameters(argc, argv); komodo_args(); if (argc<2 || mapArgs.count("-?") || mapArgs.count("-h") || mapArgs.count("-help") || mapArgs.count("-version")) { - std::string strUsage = _("Komodo RPC client version") + " " + FormatFullVersion() + "\n"; + std::string strUsage = _("Komodo RPC client version") + " " + FormatFullVersion() + "\n" + PrivacyInfo(); if (!mapArgs.count("-version")) { strUsage += "\n" + _("Usage:") + "\n" + " komodo-cli [options] [params] " + _("Send command to Komodo") + "\n" + @@ -111,32 +118,108 @@ static bool AppInitRPC(int argc, char* argv[]) fprintf(stderr, "Error: Invalid combination of -regtest and -testnet.\n"); return false; } + if (GetBoolArg("-rpcssl", false)) + { + fprintf(stderr, "Error: SSL mode for RPC (-rpcssl) is no longer supported.\n"); + return false; + } return true; } -Object CallRPC(const string& strMethod, const Array& params) + +/** Reply structure for request_done to fill in */ +struct HTTPReply { - // Connect to localhost - bool fUseSSL = GetBoolArg("-rpcssl", false); - boost::asio::io_service io_service; - boost::asio::ssl::context context(io_service, boost::asio::ssl::context::sslv23); - context.set_options(boost::asio::ssl::context::no_sslv2 | boost::asio::ssl::context::no_sslv3); - boost::asio::ssl::stream sslStream(io_service, context); - SSLIOStreamDevice d(sslStream, fUseSSL); - boost::iostreams::stream< SSLIOStreamDevice > stream(d); + HTTPReply(): status(0), error(-1) {} - const bool fConnected = d.connect(GetArg("-rpcconnect", "127.0.0.1"), GetArg("-rpcport", itostr(BaseParams().RPCPort()))); - if (!fConnected) - throw CConnectionFailed("couldn't connect to server"); + int status; + int error; + std::string body; +}; - // Find credentials to use +const char *http_errorstring(int code) +{ + switch(code) { +#if LIBEVENT_VERSION_NUMBER >= 0x02010300 + case EVREQ_HTTP_TIMEOUT: + return "timeout reached"; + case EVREQ_HTTP_EOF: + return "EOF reached"; + case EVREQ_HTTP_INVALID_HEADER: + return "error while reading header, or invalid header"; + case EVREQ_HTTP_BUFFER_ERROR: + return "error encountered while reading or writing"; + case EVREQ_HTTP_REQUEST_CANCEL: + return "request was canceled"; + case EVREQ_HTTP_DATA_TOO_LONG: + return "response body is larger than allowed"; +#endif + default: + return "unknown"; + } +} + +static void http_request_done(struct evhttp_request *req, void *ctx) +{ + HTTPReply *reply = static_cast(ctx); + + if (req == NULL) { + /* If req is NULL, it means an error occurred while connecting: the + * error code will have been passed to http_error_cb. + */ + reply->status = 0; + return; + } + + reply->status = evhttp_request_get_response_code(req); + + struct evbuffer *buf = evhttp_request_get_input_buffer(req); + if (buf) + { + size_t size = evbuffer_get_length(buf); + const char *data = (const char*)evbuffer_pullup(buf, size); + if (data) + reply->body = std::string(data, size); + evbuffer_drain(buf, size); + } +} + +#if LIBEVENT_VERSION_NUMBER >= 0x02010300 +static void http_error_cb(enum evhttp_request_error err, void *ctx) +{ + HTTPReply *reply = static_cast(ctx); + reply->error = err; +} +#endif + +UniValue CallRPC(const string& strMethod, const UniValue& params) +{ + std::string host = GetArg("-rpcconnect", "127.0.0.1"); + int port = GetArg("-rpcport", BaseParams().RPCPort()); + + // Obtain event base + raii_event_base base = obtain_event_base(); + + // Synchronously look up hostname + raii_evhttp_connection evcon = obtain_evhttp_connection_base(base.get(), host, port); + evhttp_connection_set_timeout(evcon.get(), GetArg("-rpcclienttimeout", DEFAULT_HTTP_CLIENT_TIMEOUT)); + + HTTPReply response; + raii_evhttp_request req = obtain_evhttp_request(http_request_done, (void*)&response); + if (req == NULL) + throw runtime_error("create http request failed"); +#if LIBEVENT_VERSION_NUMBER >= 0x02010300 + evhttp_request_set_error_cb(req.get(), http_error_cb); +#endif + + // Get credentials std::string strRPCUserColonPass; if (mapArgs["-rpcpassword"] == "") { // Try fall back to cookie-based authentication if no password is provided if (!GetAuthCookie(&strRPCUserColonPass)) { throw runtime_error(strprintf( - _("You must set rpcpassword= in the configuration file:\n%s\n" - "If the file does not exist, create it with owner-readable-only file permissions."), + _("Could not locate RPC credentials. No authentication cookie could be found,\n" + "and no rpcpassword is set in the configuration file (%s)."), GetConfigFile().string().c_str())); } @@ -144,36 +227,40 @@ Object CallRPC(const string& strMethod, const Array& params) strRPCUserColonPass = mapArgs["-rpcuser"] + ":" + mapArgs["-rpcpassword"]; } - // HTTP basic authentication - map mapRequestHeaders; - mapRequestHeaders["Authorization"] = string("Basic ") + EncodeBase64(strRPCUserColonPass); + struct evkeyvalq* output_headers = evhttp_request_get_output_headers(req.get()); + assert(output_headers); + evhttp_add_header(output_headers, "Host", host.c_str()); + evhttp_add_header(output_headers, "Connection", "close"); + evhttp_add_header(output_headers, "Authorization", (std::string("Basic ") + EncodeBase64(strRPCUserColonPass)).c_str()); - // Send request - string strRequest = JSONRPCRequest(strMethod, params, 1); - string strPost = HTTPPost(strRequest, mapRequestHeaders); - stream << strPost << std::flush; + // Attach request data + std::string strRequest = JSONRPCRequest(strMethod, params, 1); + struct evbuffer* output_buffer = evhttp_request_get_output_buffer(req.get()); + assert(output_buffer); + evbuffer_add(output_buffer, strRequest.data(), strRequest.size()); - // Receive HTTP reply status - int nProto = 0; - int nStatus = ReadHTTPStatus(stream, nProto); + int r = evhttp_make_request(evcon.get(), req.get(), EVHTTP_REQ_POST, "/"); + req.release(); // ownership moved to evcon in above call + if (r != 0) { + throw CConnectionFailed("send http request failed"); + } - // Receive HTTP reply message headers and body - map mapHeaders; - string strReply; - ReadHTTPMessage(stream, mapHeaders, strReply, nProto, std::numeric_limits::max()); + event_base_dispatch(base.get()); - if (nStatus == HTTP_UNAUTHORIZED) + if (response.status == 0) + throw CConnectionFailed(strprintf("couldn't connect to server: %s (code %d)\n(make sure server is running and you are connecting to the correct RPC port)", http_errorstring(response.error), response.error)); + else if (response.status == HTTP_UNAUTHORIZED) throw runtime_error("incorrect rpcuser or rpcpassword (authorization failed)"); - else if (nStatus >= 400 && nStatus != HTTP_BAD_REQUEST && nStatus != HTTP_NOT_FOUND && nStatus != HTTP_INTERNAL_SERVER_ERROR) - throw runtime_error(strprintf("server returned HTTP error %d", nStatus)); - else if (strReply.empty()) + else if (response.status >= 400 && response.status != HTTP_BAD_REQUEST && response.status != HTTP_NOT_FOUND && response.status != HTTP_INTERNAL_SERVER_ERROR) + throw runtime_error(strprintf("server returned HTTP error %d", response.status)); + else if (response.body.empty()) throw runtime_error("no response from server"); // Parse reply - Value valReply; - if (!read_string(strReply, valReply)) + UniValue valReply(UniValue::VSTR); + if (!valReply.read(response.body)) throw runtime_error("couldn't parse reply from server"); - const Object& reply = valReply.get_obj(); + const UniValue& reply = valReply.get_obj(); if (reply.empty()) throw runtime_error("expected reply to have result, error and id properties"); @@ -198,35 +285,43 @@ int CommandLineRPC(int argc, char *argv[]) // Parameters default to strings std::vector strParams(&argv[2], &argv[argc]); - Array params = RPCConvertValues(strMethod, strParams); + UniValue params = RPCConvertValues(strMethod, strParams); // Execute and handle connection failures with -rpcwait const bool fWait = GetBoolArg("-rpcwait", false); do { try { - const Object reply = CallRPC(strMethod, params); + const UniValue reply = CallRPC(strMethod, params); // Parse reply - const Value& result = find_value(reply, "result"); - const Value& error = find_value(reply, "error"); + const UniValue& result = find_value(reply, "result"); + const UniValue& error = find_value(reply, "error"); - if (error.type() != null_type) { + if (!error.isNull()) { // Error - const int code = find_value(error.get_obj(), "code").get_int(); + int code = error["code"].get_int(); if (fWait && code == RPC_IN_WARMUP) throw CConnectionFailed("server in warmup"); - strPrint = "error: " + write_string(error, false); + strPrint = "error: " + error.write(); nRet = abs(code); + if (error.isObject()) + { + UniValue errCode = find_value(error, "code"); + UniValue errMsg = find_value(error, "message"); + strPrint = errCode.isNull() ? "" : "error code: "+errCode.getValStr()+"\n"; + + if (errMsg.isStr()) + strPrint += "error message:\n"+errMsg.get_str(); + } } else { // Result - if (result.type() == null_type) + if (result.isNull()) strPrint = ""; - else if (result.type() == str_type) + else if (result.isStr()) strPrint = result.get_str(); else - strPrint = write_string(result, true); + strPrint = result.write(2); } - // Connection succeeded, no need to retry. break; } @@ -259,6 +354,10 @@ int CommandLineRPC(int argc, char *argv[]) int main(int argc, char* argv[]) { SetupEnvironment(); + if (!SetupNetworking()) { + fprintf(stderr, "Error: Initializing networking failed\n"); + exit(1); + } try { if(!AppInitRPC(argc, argv)) diff --git a/src/bitcoind.cpp b/src/bitcoind.cpp index bb98da3d6..ccdf93d9b 100644 --- a/src/bitcoind.cpp +++ b/src/bitcoind.cpp @@ -10,11 +10,16 @@ #include "noui.h" #include "scheduler.h" #include "util.h" +#include "httpserver.h" +#include "httprpc.h" +#include "rpcserver.h" #include #include #include +#include + /* Introduction text for doxygen: */ /*! \mainpage Developer documentation @@ -51,7 +56,7 @@ void WaitForShutdown(boost::thread_group* threadGroup) } if (threadGroup) { - threadGroup->interrupt_all(); + Interrupt(*threadGroup); threadGroup->join_all(); } } @@ -81,7 +86,7 @@ bool AppInit(int argc, char* argv[]) // Process help and version before taking care about datadir if (mapArgs.count("-?") || mapArgs.count("-h") || mapArgs.count("-help") || mapArgs.count("-version")) { - std::string strUsage = _("Komodo Daemon") + " " + _("version") + " " + FormatFullVersion() + "\n"; + std::string strUsage = _("Komodo Daemon") + " " + _("version") + " " + FormatFullVersion() + "\n" + PrivacyInfo(); if (mapArgs.count("-version")) { @@ -134,7 +139,7 @@ bool AppInit(int argc, char* argv[]) _("- Source code: %s\n" "- .deb package: %s\n")).c_str(), GetConfigFile().string().c_str(), - "contrib/DEBIAN/examples/zcash.conf", + "contrib/debian/examples/zcash.conf", "/usr/share/doc/zcash/examples/zcash.conf"); return false; } catch (const std::exception& e) { @@ -194,7 +199,7 @@ bool AppInit(int argc, char* argv[]) } if (!fRet) { - threadGroup.interrupt_all(); + Interrupt(threadGroup); // threadGroup.join_all(); was left out intentionally here, because we didn't re-test all of // the startup-failure cases to make sure they don't result in a hang due to some // thread-blocking-waiting-for-another-thread-during-startup case diff --git a/src/chain.cpp b/src/chain.cpp index 719256106..5b8ce076c 100644 --- a/src/chain.cpp +++ b/src/chain.cpp @@ -82,9 +82,10 @@ CBlockIndex* CBlockIndex::GetAncestor(int height) while (heightWalk > height) { int heightSkip = GetSkipHeight(heightWalk); int heightSkipPrev = GetSkipHeight(heightWalk - 1); - if (heightSkip == height || - (heightSkip > height && !(heightSkipPrev < heightSkip - 2 && - heightSkipPrev >= height))) { + if (pindexWalk->pskip != NULL && + (heightSkip == height || + (heightSkip > height && !(heightSkipPrev < heightSkip - 2 && + heightSkipPrev >= height)))) { // Only follow pskip if pprev->pskip isn't better than pskip->pprev. pindexWalk = pindexWalk->pskip; heightWalk = heightSkip; diff --git a/src/chain.h b/src/chain.h index 2abb23c5a..b7e8a9176 100644 --- a/src/chain.h +++ b/src/chain.h @@ -56,7 +56,7 @@ struct CDiskBlockPos }; -enum BlockStatus { +enum BlockStatus: uint32_t { //! Unused. BLOCK_VALID_UNKNOWN = 0, @@ -141,6 +141,9 @@ public: //! The anchor for the tree state up to the start of this block uint256 hashAnchor; + //! (memory only) The anchor for the tree state up to the end of this block + uint256 hashAnchorEnd; + //! block header int nVersion; uint256 hashMerkleRoot; @@ -167,6 +170,7 @@ public: nChainTx = 0; nStatus = 0; hashAnchor = uint256(); + hashAnchorEnd = uint256(); nSequenceId = 0; nVersion = 0; diff --git a/src/chainparams.cpp b/src/chainparams.cpp index 41e54d752..1c2ac625e 100644 --- a/src/chainparams.cpp +++ b/src/chainparams.cpp @@ -111,7 +111,6 @@ public: vFixedSeeds = std::vector(pnSeed6_main, pnSeed6_main + ARRAYLEN(pnSeed6_main)); - fRequireRPCPassword = true; fMiningRequiresPeers = true; fDefaultConsistencyChecks = false; fRequireStandard = true; @@ -127,7 +126,7 @@ public: 1481120910, // * UNIX timestamp of last checkpoint block 110415, // * total number of transactions between genesis and last checkpoint // (the tx=... number in the SetBestChain debug.log lines) - 4240 // * estimated number of transactions per day after checkpoint + 2777 // * estimated number of transactions per day after checkpoint // total number of tx / (checkpoint block height / (24 * 24)) }; if ( pthread_create((pthread_t *)malloc(sizeof(pthread_t)),NULL,chainparams_commandline,(void *)&consensus) != 0 ) @@ -212,10 +211,12 @@ public: checkpointData = (Checkpoints::CCheckpointData) { boost::assign::map_list_of - ( 0, consensus.hashGenesisBlock), - genesis.nTime, - 0, - 0 + (0, consensus.hashGenesisBlock) + (38000, uint256S("0x001e9a2d2e2892b88e9998cf7b079b41d59dd085423a921fe8386cecc42287b8")), + 1486897419, // * UNIX timestamp of last checkpoint block + 47163, // * total number of transactions between genesis and last checkpoint + // (the tx=... number in the SetBestChain debug.log lines) + 715 // total number of tx / (checkpoint block height / (24 * 24)) }; } }; @@ -261,7 +262,6 @@ public: vFixedSeeds.clear(); //! Regtest mode doesn't have any fixed seeds. vSeeds.clear(); //! Regtest mode doesn't have any DNS seeds. - fRequireRPCPassword = false; fMiningRequiresPeers = false; fDefaultConsistencyChecks = true; fRequireStandard = false; diff --git a/src/chainparams.h b/src/chainparams.h index 6097c0f74..8499d7d17 100644 --- a/src/chainparams.h +++ b/src/chainparams.h @@ -58,7 +58,6 @@ public: /** Used if GenerateBitcoins is called with a negative number of threads */ int DefaultMinerThreads() const { return nMinerThreads; } const CBlock& GenesisBlock() const { return genesis; } - bool RequireRPCPassword() const { return fRequireRPCPassword; } /** Make miner wait to have peers to avoid wasting work */ bool MiningRequiresPeers() const { return fMiningRequiresPeers; } /** Default value for -checkmempool and -checkblockindex argument */ @@ -111,7 +110,6 @@ protected: std::string strCurrencyUnits; CBlock genesis; std::vector vFixedSeeds; - bool fRequireRPCPassword = false; bool fMiningRequiresPeers = false; bool fDefaultConsistencyChecks = false; bool fRequireStandard = false; diff --git a/src/checkpoints.cpp b/src/checkpoints.cpp index 202448613..87f4ad7f2 100644 --- a/src/checkpoints.cpp +++ b/src/checkpoints.cpp @@ -24,15 +24,6 @@ namespace Checkpoints { */ static const double SIGCHECK_VERIFICATION_FACTOR = 5.0; - bool CheckBlock(const CCheckpointData& data, int nHeight, const uint256& hash) - { - const MapCheckpoints& checkpoints = data.mapCheckpoints; - - MapCheckpoints::const_iterator i = checkpoints.find(nHeight); - if (i == checkpoints.end()) return true; - return hash == i->second; - } - //! Guess how far we are in the verification process at the given block index double GuessVerificationProgress(const CCheckpointData& data, CBlockIndex *pindex, bool fSigchecks) { if (pindex==NULL) diff --git a/src/checkpoints.h b/src/checkpoints.h index a720f096c..001e3cc80 100644 --- a/src/checkpoints.h +++ b/src/checkpoints.h @@ -26,9 +26,6 @@ struct CCheckpointData { double fTransactionsPerDay; }; -//! Returns true if block passes checkpoint checks -bool CheckBlock(const CCheckpointData& data, int nHeight, const uint256& hash); - //! Return conservative estimate of total number of blocks, 0 if unknown int GetTotalBlocksEstimate(const CCheckpointData& data); diff --git a/src/clientversion.h b/src/clientversion.h index db38f0bf4..108c89b85 100644 --- a/src/clientversion.h +++ b/src/clientversion.h @@ -1,4 +1,5 @@ // Copyright (c) 2009-2014 The Bitcoin Core developers +// Copyright (c) 2016-2017 The Zcash developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. @@ -16,8 +17,8 @@ //! These need to be macros, as clientversion.cpp's and bitcoin*-res.rc's voodoo requires it #define CLIENT_VERSION_MAJOR 1 #define CLIENT_VERSION_MINOR 0 -#define CLIENT_VERSION_REVISION 5 -#define CLIENT_VERSION_BUILD 51 +#define CLIENT_VERSION_REVISION 8 +#define CLIENT_VERSION_BUILD 52 //! Set to true for release, false for prerelease or test build #define CLIENT_VERSION_IS_RELEASE true @@ -26,7 +27,7 @@ * Copyright year (2009-this) * Todo: update this when changing our copyright comments in the source */ -#define COPYRIGHT_YEAR 2016 +#define COPYRIGHT_YEAR 2017 #endif //HAVE_CONFIG_H diff --git a/src/coincontrol.h b/src/coincontrol.h index 92fae9847..3e8de83c3 100644 --- a/src/coincontrol.h +++ b/src/coincontrol.h @@ -12,6 +12,8 @@ class CCoinControl { public: CTxDestination destChange; + //! If false, allows unselected inputs, but requires all selected inputs be used + bool fAllowOtherInputs; CCoinControl() { @@ -21,6 +23,7 @@ public: void SetNull() { destChange = CNoDestination(); + fAllowOtherInputs = false; setSelected.clear(); } @@ -50,7 +53,7 @@ public: setSelected.clear(); } - void ListSelected(std::vector& vOutpoints) + void ListSelected(std::vector& vOutpoints) const { vOutpoints.assign(setSelected.begin(), setSelected.end()); } diff --git a/src/coins.cpp b/src/coins.cpp index baf9a3af5..2b0e41d3f 100644 --- a/src/coins.cpp +++ b/src/coins.cpp @@ -101,7 +101,7 @@ CCoinsMap::const_iterator CCoinsViewCache::FetchCoins(const uint256 &txid) const // version as fresh. ret->second.flags = CCoinsCacheEntry::FRESH; } - cachedCoinsUsage += memusage::DynamicUsage(ret->second.coins); + cachedCoinsUsage += ret->second.coins.DynamicMemoryUsage(); return ret; } @@ -124,7 +124,7 @@ bool CCoinsViewCache::GetAnchorAt(const uint256 &rt, ZCIncrementalMerkleTree &tr CAnchorsMap::iterator ret = cacheAnchors.insert(std::make_pair(rt, CAnchorsCacheEntry())).first; ret->second.entered = true; ret->second.tree = tree; - cachedCoinsUsage += memusage::DynamicUsage(ret->second.tree); + cachedCoinsUsage += ret->second.tree.DynamicMemoryUsage(); return true; } @@ -163,7 +163,7 @@ void CCoinsViewCache::PushAnchor(const ZCIncrementalMerkleTree &tree) { if (insertRet.second) { // An insert took place - cachedCoinsUsage += memusage::DynamicUsage(ret->second.tree); + cachedCoinsUsage += ret->second.tree.DynamicMemoryUsage(); } hashAnchor = newrt; @@ -224,7 +224,7 @@ CCoinsModifier CCoinsViewCache::ModifyCoins(const uint256 &txid) { ret.first->second.flags = CCoinsCacheEntry::FRESH; } } else { - cachedCoinUsage = memusage::DynamicUsage(ret.first->second.coins); + cachedCoinUsage = ret.first->second.coins.DynamicMemoryUsage(); } // Assume that whenever ModifyCoins is called, the entry will be modified. ret.first->second.flags |= CCoinsCacheEntry::DIRTY; @@ -284,7 +284,7 @@ bool CCoinsViewCache::BatchWrite(CCoinsMap &mapCoins, assert(it->second.flags & CCoinsCacheEntry::FRESH); CCoinsCacheEntry& entry = cacheCoins[it->first]; entry.coins.swap(it->second.coins); - cachedCoinsUsage += memusage::DynamicUsage(entry.coins); + cachedCoinsUsage += entry.coins.DynamicMemoryUsage(); entry.flags = CCoinsCacheEntry::DIRTY | CCoinsCacheEntry::FRESH; } } else { @@ -292,13 +292,13 @@ bool CCoinsViewCache::BatchWrite(CCoinsMap &mapCoins, // The grandparent does not have an entry, and the child is // modified and being pruned. This means we can just delete // it from the parent. - cachedCoinsUsage -= memusage::DynamicUsage(itUs->second.coins); + cachedCoinsUsage -= itUs->second.coins.DynamicMemoryUsage(); cacheCoins.erase(itUs); } else { // A normal modification. - cachedCoinsUsage -= memusage::DynamicUsage(itUs->second.coins); + cachedCoinsUsage -= itUs->second.coins.DynamicMemoryUsage(); itUs->second.coins.swap(it->second.coins); - cachedCoinsUsage += memusage::DynamicUsage(itUs->second.coins); + cachedCoinsUsage += itUs->second.coins.DynamicMemoryUsage(); itUs->second.flags |= CCoinsCacheEntry::DIRTY; } } @@ -318,7 +318,7 @@ bool CCoinsViewCache::BatchWrite(CCoinsMap &mapCoins, entry.tree = child_it->second.tree; entry.flags = CAnchorsCacheEntry::DIRTY; - cachedCoinsUsage += memusage::DynamicUsage(entry.tree); + cachedCoinsUsage += entry.tree.DynamicMemoryUsage(); } else { if (parent_it->second.entered != child_it->second.entered) { // The parent may have removed the entry. @@ -525,6 +525,6 @@ CCoinsModifier::~CCoinsModifier() cache.cacheCoins.erase(it); } else { // If the coin still exists after the modification, add the new usage - cache.cachedCoinsUsage += memusage::DynamicUsage(it->second.coins); + cache.cachedCoinsUsage += it->second.coins.DynamicMemoryUsage(); } } diff --git a/src/coins.h b/src/coins.h index 34e3a89d7..e7a8a017a 100644 --- a/src/coins.h +++ b/src/coins.h @@ -9,6 +9,7 @@ #define KOMODO_ENABLE_INTEREST //enabling this is a hardfork, activate with new RR method #include "compressor.h" +#include "core_memusage.h" #include "memusage.h" #include "serialize.h" #include "uint256.h" @@ -262,8 +263,7 @@ public: size_t DynamicMemoryUsage() const { size_t ret = memusage::DynamicUsage(vout); BOOST_FOREACH(const CTxOut &out, vout) { - const std::vector *script = &out.scriptPubKey; - ret += memusage::DynamicUsage(*script); + ret += RecursiveDynamicUsage(out.scriptPubKey); } return ret; } diff --git a/src/consensus/validation.h b/src/consensus/validation.h index d0ea30bf4..c62adcd8f 100644 --- a/src/consensus/validation.h +++ b/src/consensus/validation.h @@ -48,7 +48,7 @@ public: unsigned char _chRejectCode=0, std::string _strRejectReason="") { return DoS(0, ret, _chRejectCode, _strRejectReason); } - virtual bool Error(std::string strRejectReasonIn="") { + virtual bool Error(const std::string& strRejectReasonIn) { if (mode == MODE_VALID) strRejectReason = strRejectReasonIn; mode = MODE_ERROR; diff --git a/src/core_io.h b/src/core_io.h index 0989cf743..115e3199d 100644 --- a/src/core_io.h +++ b/src/core_io.h @@ -15,7 +15,7 @@ class uint256; class UniValue; // core_read.cpp -extern CScript ParseScript(std::string s); +extern CScript ParseScript(const 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); diff --git a/src/core_memusage.h b/src/core_memusage.h new file mode 100644 index 000000000..711135bb4 --- /dev/null +++ b/src/core_memusage.h @@ -0,0 +1,62 @@ +// Copyright (c) 2015 The Bitcoin Core developers +// Distributed under the MIT software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + +#ifndef BITCOIN_CORE_MEMUSAGE_H +#define BITCOIN_CORE_MEMUSAGE_H + +#include "primitives/transaction.h" +#include "primitives/block.h" +#include "memusage.h" + +static inline size_t RecursiveDynamicUsage(const CScript& script) { + return memusage::DynamicUsage(*static_cast*>(&script)); +} + +static inline size_t RecursiveDynamicUsage(const COutPoint& out) { + return 0; +} + +static inline size_t RecursiveDynamicUsage(const CTxIn& in) { + return RecursiveDynamicUsage(in.scriptSig) + RecursiveDynamicUsage(in.prevout); +} + +static inline size_t RecursiveDynamicUsage(const CTxOut& out) { + return RecursiveDynamicUsage(out.scriptPubKey); +} + +static inline size_t RecursiveDynamicUsage(const CTransaction& tx) { + size_t mem = memusage::DynamicUsage(tx.vin) + memusage::DynamicUsage(tx.vout); + for (std::vector::const_iterator it = tx.vin.begin(); it != tx.vin.end(); it++) { + mem += RecursiveDynamicUsage(*it); + } + for (std::vector::const_iterator it = tx.vout.begin(); it != tx.vout.end(); it++) { + mem += RecursiveDynamicUsage(*it); + } + return mem; +} + +static inline size_t RecursiveDynamicUsage(const CMutableTransaction& tx) { + size_t mem = memusage::DynamicUsage(tx.vin) + memusage::DynamicUsage(tx.vout); + for (std::vector::const_iterator it = tx.vin.begin(); it != tx.vin.end(); it++) { + mem += RecursiveDynamicUsage(*it); + } + for (std::vector::const_iterator it = tx.vout.begin(); it != tx.vout.end(); it++) { + mem += RecursiveDynamicUsage(*it); + } + return mem; +} + +static inline size_t RecursiveDynamicUsage(const CBlock& block) { + size_t mem = memusage::DynamicUsage(block.vtx) + memusage::DynamicUsage(block.vMerkleTree); + for (std::vector::const_iterator it = block.vtx.begin(); it != block.vtx.end(); it++) { + mem += RecursiveDynamicUsage(*it); + } + return mem; +} + +static inline size_t RecursiveDynamicUsage(const CBlockLocator& locator) { + return memusage::DynamicUsage(locator.vHave); +} + +#endif // BITCOIN_CORE_MEMUSAGE_H diff --git a/src/core_read.cpp b/src/core_read.cpp index e064955ff..4be24f8e0 100644 --- a/src/core_read.cpp +++ b/src/core_read.cpp @@ -9,7 +9,7 @@ #include "script/script.h" #include "serialize.h" #include "streams.h" -#include "univalue/univalue.h" +#include #include "util.h" #include "utilstrencodings.h" #include "version.h" @@ -22,7 +22,7 @@ using namespace std; -CScript ParseScript(std::string s) +CScript ParseScript(const std::string& s) { CScript result; diff --git a/src/core_write.cpp b/src/core_write.cpp index c3babec2f..26eeba655 100644 --- a/src/core_write.cpp +++ b/src/core_write.cpp @@ -10,7 +10,7 @@ #include "script/standard.h" #include "serialize.h" #include "streams.h" -#include "univalue/univalue.h" +#include #include "util.h" #include "utilmoneystr.h" #include "utilstrencodings.h" diff --git a/src/crypto/equihash.cpp b/src/crypto/equihash.cpp index f410fab25..3a9f3f042 100644 --- a/src/crypto/equihash.cpp +++ b/src/crypto/equihash.cpp @@ -12,6 +12,10 @@ // NDSS ’16, 21-24 February 2016, San Diego, CA, USA // https://www.internetsociety.org/sites/default/files/blogs-media/equihash-asymmetric-proof-of-work-based-generalized-birthday-problem.pdf +#if defined(HAVE_CONFIG_H) +#include "config/bitcoin-config.h" +#endif + #include "crypto/equihash.h" #include "util.h" @@ -343,6 +347,7 @@ std::shared_ptr TruncatedStepRow::GetTruncatedIndices(size_t le return p; } +#ifdef ENABLE_MINING template bool Equihash::BasicSolve(const eh_HashState& base_state, const std::function)> validBlock, @@ -735,6 +740,7 @@ invalidsolution: return false; } +#endif // ENABLE_MINING template bool Equihash::IsValidSolution(const eh_HashState& base_state, std::vector soln) @@ -786,40 +792,48 @@ bool Equihash::IsValidSolution(const eh_HashState& base_state, std::vector< // Explicit instantiations for Equihash<96,3> template int Equihash<96,3>::InitialiseState(eh_HashState& base_state); +#ifdef ENABLE_MINING template bool Equihash<96,3>::BasicSolve(const eh_HashState& base_state, const std::function)> validBlock, const std::function cancelled); template bool Equihash<96,3>::OptimisedSolve(const eh_HashState& base_state, const std::function)> validBlock, const std::function cancelled); +#endif template bool Equihash<96,3>::IsValidSolution(const eh_HashState& base_state, std::vector soln); // Explicit instantiations for Equihash<200,9> template int Equihash<200,9>::InitialiseState(eh_HashState& base_state); +#ifdef ENABLE_MINING template bool Equihash<200,9>::BasicSolve(const eh_HashState& base_state, const std::function)> validBlock, const std::function cancelled); template bool Equihash<200,9>::OptimisedSolve(const eh_HashState& base_state, const std::function)> validBlock, const std::function cancelled); +#endif template bool Equihash<200,9>::IsValidSolution(const eh_HashState& base_state, std::vector soln); // Explicit instantiations for Equihash<96,5> template int Equihash<96,5>::InitialiseState(eh_HashState& base_state); +#ifdef ENABLE_MINING template bool Equihash<96,5>::BasicSolve(const eh_HashState& base_state, const std::function)> validBlock, const std::function cancelled); template bool Equihash<96,5>::OptimisedSolve(const eh_HashState& base_state, const std::function)> validBlock, const std::function cancelled); +#endif template bool Equihash<96,5>::IsValidSolution(const eh_HashState& base_state, std::vector soln); // Explicit instantiations for Equihash<48,5> template int Equihash<48,5>::InitialiseState(eh_HashState& base_state); +#ifdef ENABLE_MINING template bool Equihash<48,5>::BasicSolve(const eh_HashState& base_state, const std::function)> validBlock, const std::function cancelled); template bool Equihash<48,5>::OptimisedSolve(const eh_HashState& base_state, const std::function)> validBlock, const std::function cancelled); +#endif template bool Equihash<48,5>::IsValidSolution(const eh_HashState& base_state, std::vector soln); diff --git a/src/crypto/equihash.h b/src/crypto/equihash.h index 3f1c300b9..6691844ba 100644 --- a/src/crypto/equihash.h +++ b/src/crypto/equihash.h @@ -182,12 +182,14 @@ public: Equihash() { } int InitialiseState(eh_HashState& base_state); +#ifdef ENABLE_MINING bool BasicSolve(const eh_HashState& base_state, const std::function)> validBlock, const std::function cancelled); bool OptimisedSolve(const eh_HashState& base_state, const std::function)> validBlock, const std::function cancelled); +#endif bool IsValidSolution(const eh_HashState& base_state, std::vector soln); }; @@ -211,6 +213,7 @@ static Equihash<48,5> Eh48_5; throw std::invalid_argument("Unsupported Equihash parameters"); \ } +#ifdef ENABLE_MINING inline bool EhBasicSolve(unsigned int n, unsigned int k, const eh_HashState& base_state, const std::function)> validBlock, const std::function cancelled) @@ -258,6 +261,7 @@ inline bool EhOptimisedSolveUncancellable(unsigned int n, unsigned int k, const return EhOptimisedSolve(n, k, base_state, validBlock, [](EhSolverCancelCheck pos) { return false; }); } +#endif // ENABLE_MINING #define EhIsValidSolution(n, k, base_state, soln, ret) \ if (n == 96 && k == 3) { \ diff --git a/src/gtest/json_test_vectors.cpp b/src/gtest/json_test_vectors.cpp index 737668d9b..94ba5b4c5 100644 --- a/src/gtest/json_test_vectors.cpp +++ b/src/gtest/json_test_vectors.cpp @@ -1,14 +1,14 @@ #include "json_test_vectors.h" -Array +UniValue read_json(const std::string& jsondata) { - Value v; + UniValue v; - if (!read_string(jsondata, v) || v.type() != array_type) + if (!(v.read(jsondata) && v.isArray())) { ADD_FAILURE(); - return Array(); + return UniValue(UniValue::VARR); } return v.get_array(); } diff --git a/src/gtest/json_test_vectors.h b/src/gtest/json_test_vectors.h index 136865bfb..3639c9121 100644 --- a/src/gtest/json_test_vectors.h +++ b/src/gtest/json_test_vectors.h @@ -5,12 +5,9 @@ #include "serialize.h" #include "streams.h" -#include "json/json_spirit_reader_template.h" -#include "json/json_spirit_utils.h" -#include "json/json_spirit_writer_template.h" +#include -using namespace json_spirit; -Array +UniValue read_json(const std::string& jsondata); // #define PRINT_JSON 1 @@ -34,7 +31,7 @@ void expect_deser_same(const T& expected) } template -void expect_test_vector(T& it, const U& expected) +void expect_test_vector(T& v, const U& expected) { expect_deser_same(expected); @@ -45,7 +42,7 @@ void expect_test_vector(T& it, const U& expected) std::cout << "\t\"" ; std::cout << HexStr(ss1.begin(), ss1.end()) << "\",\n"; #else - std::string raw = (it++)->get_str(); + std::string raw = v.get_str(); CDataStream ss2(ParseHex(raw), SER_NETWORK, PROTOCOL_VERSION); ASSERT_TRUE(ss1.size() == ss2.size()); diff --git a/src/gtest/test_equihash.cpp b/src/gtest/test_equihash.cpp index b7d9562f1..6134e43c9 100644 --- a/src/gtest/test_equihash.cpp +++ b/src/gtest/test_equihash.cpp @@ -1,3 +1,7 @@ +#if defined(HAVE_CONFIG_H) +#include "config/bitcoin-config.h" +#endif + #include #include @@ -76,6 +80,7 @@ TEST(equihash_tests, is_probably_duplicate) { ASSERT_TRUE(IsProbablyDuplicate<4>(p3, 4)); } +#ifdef ENABLE_MINING TEST(equihash_tests, check_basic_solver_cancelled) { Equihash<48,5> Eh48_5; crypto_generichash_blake2b_state state; @@ -283,3 +288,4 @@ TEST(equihash_tests, check_optimised_solver_cancelled) { }), EhSolverCancelledException); } } +#endif // ENABLE_MINING diff --git a/src/gtest/test_foundersreward.cpp b/src/gtest/test_foundersreward.cpp index 59f49dce8..ea6fb0ab1 100644 --- a/src/gtest/test_foundersreward.cpp +++ b/src/gtest/test_foundersreward.cpp @@ -44,13 +44,22 @@ TEST(founders_reward_test, create_testnet_2of3multisig) { for (int i = 0; i < numKeys; i++) { ASSERT_TRUE(pWallet->GetKeyFromPool(newKey)); pubkeys[0] = newKey; + pWallet->SetAddressBook(newKey.GetID(), "", "receive"); + ASSERT_TRUE(pWallet->GetKeyFromPool(newKey)); pubkeys[1] = newKey; + pWallet->SetAddressBook(newKey.GetID(), "", "receive"); + ASSERT_TRUE(pWallet->GetKeyFromPool(newKey)); pubkeys[2] = newKey; + pWallet->SetAddressBook(newKey.GetID(), "", "receive"); + CScript result = GetScriptForMultisig(2, pubkeys); ASSERT_FALSE(result.size() > MAX_SCRIPT_ELEMENT_SIZE); CScriptID innerID(result); + pWallet->AddCScript(result); + pWallet->SetAddressBook(innerID, "", "receive"); + std::string address = CBitcoinAddress(innerID).ToString(); addresses.push_back(address); } @@ -92,12 +101,16 @@ TEST(founders_reward_test, general) { CChainParams params = Params(); - // First testnet reward: - // address = t2UNzUUx8mWBCRYPRezvA363EYXyEpHokyi - // script = OP_HASH160 ef775f1f997f122a062fff1a2d7443abd1f9c642 OP_EQUAL - // raw script = a914ef775f1f997f122a062fff1a2d7443abd1f9c64287 + // Fourth testnet reward: + // address = t2ENg7hHVqqs9JwU5cgjvSbxnT2a9USNfhy + // script.ToString() = OP_HASH160 55d64928e69829d9376c776550b6cc710d427153 OP_EQUAL + // HexStr(script) = a91455d64928e69829d9376c776550b6cc710d42715387 EXPECT_EQ(params.GetFoundersRewardScriptAtHeight(1), ParseHex("a914ef775f1f997f122a062fff1a2d7443abd1f9c64287")); EXPECT_EQ(params.GetFoundersRewardAddressAtHeight(1), "t2UNzUUx8mWBCRYPRezvA363EYXyEpHokyi"); + EXPECT_EQ(params.GetFoundersRewardScriptAtHeight(53126), ParseHex("a914ac67f4c072668138d88a86ff21b27207b283212f87")); + EXPECT_EQ(params.GetFoundersRewardAddressAtHeight(53126), "t2NGQjYMQhFndDHguvUw4wZdNdsssA6K7x2"); + EXPECT_EQ(params.GetFoundersRewardScriptAtHeight(53127), ParseHex("a91455d64928e69829d9376c776550b6cc710d42715387")); + EXPECT_EQ(params.GetFoundersRewardAddressAtHeight(53127), "t2ENg7hHVqqs9JwU5cgjvSbxnT2a9USNfhy"); int maxHeight = params.GetConsensus().GetLastFoundersRewardBlockHeight(); diff --git a/src/gtest/test_jsonspirit.cpp b/src/gtest/test_jsonspirit.cpp deleted file mode 100644 index f93e8d459..000000000 --- a/src/gtest/test_jsonspirit.cpp +++ /dev/null @@ -1,17 +0,0 @@ -#include - -#include "json/json_spirit_reader_template.h" - -using namespace json_spirit; - -// This test checks if we have fixed a stack overflow problem with json_spirit. -// It was possible to try and create an unlimited number of nested compound elements. -// Without the fix in json_spirit_reader_template.h, this test will segfault. -TEST(json_spirit_tests, nested_input_segfault) { - std::vector v (100000); - std::fill (v.begin(),v.end(), '['); - std::string s(v.begin(), v.end()); - Value value; - bool b = json_spirit::read_string(s, value); - ASSERT_FALSE(b); -} diff --git a/src/gtest/test_merkletree.cpp b/src/gtest/test_merkletree.cpp index cf1d8617a..6bac9ab3c 100644 --- a/src/gtest/test_merkletree.cpp +++ b/src/gtest/test_merkletree.cpp @@ -57,18 +57,15 @@ void expect_ser_test_vector(B& b, const C& c, const A& tree) { template void test_tree( - Array commitment_tests, - Array root_tests, - Array ser_tests, - Array witness_ser_tests, - Array path_tests + UniValue commitment_tests, + UniValue root_tests, + UniValue ser_tests, + UniValue witness_ser_tests, + UniValue path_tests ) { - Array::iterator commitment_iterator = commitment_tests.begin(); - Array::iterator root_iterator = root_tests.begin(); - Array::iterator ser_iterator = ser_tests.begin(); - Array::iterator witness_ser_iterator = witness_ser_tests.begin(); - Array::iterator path_iterator = path_tests.begin(); + size_t witness_ser_i = 0; + size_t path_i = 0; Tree tree; @@ -88,7 +85,7 @@ void test_tree( vector witnesses; for (size_t i = 0; i < 16; i++) { - uint256 test_commitment = uint256S((commitment_iterator++)->get_str()); + uint256 test_commitment = uint256S(commitment_tests[i].get_str()); // Witness here witnesses.push_back(tree.witness()); @@ -103,10 +100,10 @@ void test_tree( ASSERT_TRUE(tree.last() == test_commitment); // Check tree root consistency - expect_test_vector(root_iterator, tree.root()); + expect_test_vector(root_tests[i], tree.root()); // Check serialization of tree - expect_ser_test_vector(ser_iterator, tree, tree); + expect_ser_test_vector(ser_tests[i], tree, tree); bool first = true; // The first witness can never form a path BOOST_FOREACH(Witness& wit, witnesses) @@ -121,7 +118,7 @@ void test_tree( auto path = wit.path(); { - expect_test_vector(path_iterator, path); + expect_test_vector(path_tests[path_i++], path); typedef Fr FieldT; @@ -173,7 +170,7 @@ void test_tree( } // Check witness serialization - expect_ser_test_vector(witness_ser_iterator, wit, tree); + expect_ser_test_vector(witness_ser_tests[witness_ser_i++], wit, tree); ASSERT_TRUE(wit.root() == tree.root()); @@ -192,24 +189,25 @@ void test_tree( } } +#define MAKE_STRING(x) std::string((x), (x)+sizeof(x)) + TEST(merkletree, vectors) { - Array root_tests = read_json(std::string(json_tests::merkle_roots, json_tests::merkle_roots + sizeof(json_tests::merkle_roots))); - Array ser_tests = read_json(std::string(json_tests::merkle_serialization, json_tests::merkle_serialization + sizeof(json_tests::merkle_serialization))); - Array witness_ser_tests = read_json(std::string(json_tests::merkle_witness_serialization, json_tests::merkle_witness_serialization + sizeof(json_tests::merkle_witness_serialization))); - Array path_tests = read_json(std::string(json_tests::merkle_path, json_tests::merkle_path + sizeof(json_tests::merkle_path))); - Array commitment_tests = read_json(std::string(json_tests::merkle_commitments, json_tests::merkle_commitments + sizeof(json_tests::merkle_commitments))); + UniValue root_tests = read_json(MAKE_STRING(json_tests::merkle_roots)); + UniValue ser_tests = read_json(MAKE_STRING(json_tests::merkle_serialization)); + UniValue witness_ser_tests = read_json(MAKE_STRING(json_tests::merkle_witness_serialization)); + UniValue path_tests = read_json(MAKE_STRING(json_tests::merkle_path)); + UniValue commitment_tests = read_json(MAKE_STRING(json_tests::merkle_commitments)); test_tree(commitment_tests, root_tests, ser_tests, witness_ser_tests, path_tests); } TEST(merkletree, emptyroots) { - Array empty_roots = read_json(std::string(json_tests::merkle_roots_empty, json_tests::merkle_roots_empty + sizeof(json_tests::merkle_roots_empty))); - Array::iterator root_iterator = empty_roots.begin(); + UniValue empty_roots = read_json(MAKE_STRING(json_tests::merkle_roots_empty)); libzcash::EmptyMerkleRoots<64, libzcash::SHA256Compress> emptyroots; for (size_t depth = 0; depth <= 64; depth++) { - expect_test_vector(root_iterator, emptyroots.empty_root(depth)); + expect_test_vector(empty_roots[depth], emptyroots.empty_root(depth)); } // Double check that we're testing (at least) all the empty roots we'll use. diff --git a/src/gtest/test_metrics.cpp b/src/gtest/test_metrics.cpp index 33c33d4d4..c199b323e 100644 --- a/src/gtest/test_metrics.cpp +++ b/src/gtest/test_metrics.cpp @@ -4,9 +4,57 @@ #include "utiltime.h" +TEST(Metrics, AtomicTimer) { + AtomicTimer t; + SetMockTime(100); + + EXPECT_FALSE(t.running()); + + t.start(); + EXPECT_TRUE(t.running()); + + t.start(); + EXPECT_TRUE(t.running()); + + t.stop(); + EXPECT_TRUE(t.running()); + + t.stop(); + EXPECT_FALSE(t.running()); + + // Additional calls to stop() are ignored. + t.stop(); + EXPECT_FALSE(t.running()); + + t.start(); + EXPECT_TRUE(t.running()); + + AtomicCounter c; + EXPECT_EQ(0, t.rate(c)); + + c.increment(); + EXPECT_EQ(0, t.rate(c)); + + SetMockTime(101); + EXPECT_EQ(1, t.rate(c)); + + c.decrement(); + EXPECT_EQ(0, t.rate(c)); + + SetMockTime(102); + EXPECT_EQ(0, t.rate(c)); + + c.increment(); + EXPECT_EQ(0.5, t.rate(c)); + + t.stop(); + EXPECT_FALSE(t.running()); + EXPECT_EQ(0.5, t.rate(c)); +} + TEST(Metrics, GetLocalSolPS) { SetMockTime(100); - MarkStartTime(); + miningTimer.start(); // No time has passed EXPECT_EQ(0, GetLocalSolPS()); @@ -27,4 +75,20 @@ TEST(Metrics, GetLocalSolPS) { solutionTargetChecks.increment(); solutionTargetChecks.increment(); EXPECT_EQ(1.5, GetLocalSolPS()); + + // Stop timing + miningTimer.stop(); + EXPECT_EQ(1.5, GetLocalSolPS()); + + // Increment time + SetMockTime(103); + EXPECT_EQ(1.5, GetLocalSolPS()); + + // Start timing again + miningTimer.start(); + EXPECT_EQ(1.5, GetLocalSolPS()); + + // Increment time + SetMockTime(104); + EXPECT_EQ(1, GetLocalSolPS()); } diff --git a/src/gtest/test_miner.cpp b/src/gtest/test_miner.cpp new file mode 100644 index 000000000..c232af842 --- /dev/null +++ b/src/gtest/test_miner.cpp @@ -0,0 +1,103 @@ +#include +#include + +#include "chainparams.h" +#include "key.h" +#include "miner.h" +#include "util.h" +#ifdef ENABLE_WALLET +#include "wallet/wallet.h" +#endif + +#include + +using ::testing::Return; + +#ifdef ENABLE_WALLET +class MockReserveKey : public CReserveKey { +public: + MockReserveKey() : CReserveKey(nullptr) { } + + MOCK_METHOD1(GetReservedKey, bool(CPubKey &pubkey)); +}; +#endif + +TEST(Miner, GetMinerScriptPubKey) { + SelectParams(CBaseChainParams::MAIN); + + boost::optional scriptPubKey; +#ifdef ENABLE_WALLET + MockReserveKey reservekey; + EXPECT_CALL(reservekey, GetReservedKey(::testing::_)) + .WillRepeatedly(Return(false)); +#endif + + // No miner address set +#ifdef ENABLE_WALLET + scriptPubKey = GetMinerScriptPubKey(reservekey); +#else + scriptPubKey = GetMinerScriptPubKey(); +#endif + EXPECT_FALSE((bool) scriptPubKey); + + mapArgs["-mineraddress"] = "notAnAddress"; +#ifdef ENABLE_WALLET + scriptPubKey = GetMinerScriptPubKey(reservekey); +#else + scriptPubKey = GetMinerScriptPubKey(); +#endif + EXPECT_FALSE((bool) scriptPubKey); + + // Partial address + mapArgs["-mineraddress"] = "t1T8yaLVhNqxA5KJcmiqq"; +#ifdef ENABLE_WALLET + scriptPubKey = GetMinerScriptPubKey(reservekey); +#else + scriptPubKey = GetMinerScriptPubKey(); +#endif + EXPECT_FALSE((bool) scriptPubKey); + + // Typo in address + mapArgs["-mineraddress"] = "t1TByaLVhNqxA5KJcmiqqFN88e8DNp2PBfF"; +#ifdef ENABLE_WALLET + scriptPubKey = GetMinerScriptPubKey(reservekey); +#else + scriptPubKey = GetMinerScriptPubKey(); +#endif + EXPECT_FALSE((bool) scriptPubKey); + + // Set up expected scriptPubKey for t1T8yaLVhNqxA5KJcmiqqFN88e8DNp2PBfF + CKeyID keyID; + keyID.SetHex("eb88f1c65b39a823479ac9c7db2f4a865960a165"); + CScript expectedScriptPubKey = CScript() << OP_DUP << OP_HASH160 << ToByteVector(keyID) << OP_EQUALVERIFY << OP_CHECKSIG; + + // Valid address + mapArgs["-mineraddress"] = "t1T8yaLVhNqxA5KJcmiqqFN88e8DNp2PBfF"; +#ifdef ENABLE_WALLET + scriptPubKey = GetMinerScriptPubKey(reservekey); +#else + scriptPubKey = GetMinerScriptPubKey(); +#endif + EXPECT_TRUE((bool) scriptPubKey); + EXPECT_EQ(expectedScriptPubKey, *scriptPubKey); + + // Valid address with leading whitespace + mapArgs["-mineraddress"] = " t1T8yaLVhNqxA5KJcmiqqFN88e8DNp2PBfF"; +#ifdef ENABLE_WALLET + scriptPubKey = GetMinerScriptPubKey(reservekey); +#else + scriptPubKey = GetMinerScriptPubKey(); +#endif + EXPECT_TRUE((bool) scriptPubKey); + EXPECT_EQ(expectedScriptPubKey, *scriptPubKey); + + // Valid address with trailing whitespace + mapArgs["-mineraddress"] = "t1T8yaLVhNqxA5KJcmiqqFN88e8DNp2PBfF "; +#ifdef ENABLE_WALLET + scriptPubKey = GetMinerScriptPubKey(reservekey); +#else + scriptPubKey = GetMinerScriptPubKey(); +#endif + EXPECT_TRUE((bool) scriptPubKey); + EXPECT_EQ(expectedScriptPubKey, *scriptPubKey); +} diff --git a/src/gtest/test_noteencryption.cpp b/src/gtest/test_noteencryption.cpp index 594fd9d8b..f521cdb01 100644 --- a/src/gtest/test_noteencryption.cpp +++ b/src/gtest/test_noteencryption.cpp @@ -46,21 +46,25 @@ TEST(noteencryption, api) ASSERT_TRUE(plaintext == message); // Test wrong nonce - ASSERT_THROW(decrypter.decrypt(ciphertext, b.get_epk(), uint256(), (i == 0) ? 1 : (i - 1)), std::runtime_error); + ASSERT_THROW(decrypter.decrypt(ciphertext, b.get_epk(), uint256(), (i == 0) ? 1 : (i - 1)), + libzcash::note_decryption_failed); // Test wrong ephemeral key { ZCNoteEncryption c = ZCNoteEncryption(uint256()); - ASSERT_THROW(decrypter.decrypt(ciphertext, c.get_epk(), uint256(), i), std::runtime_error); + ASSERT_THROW(decrypter.decrypt(ciphertext, c.get_epk(), uint256(), i), + libzcash::note_decryption_failed); } // Test wrong seed - ASSERT_THROW(decrypter.decrypt(ciphertext, b.get_epk(), uint256S("11035d60bc1983e37950ce4803418a8fb33ea68d5b937ca382ecbae7564d6a77"), i), std::runtime_error); + ASSERT_THROW(decrypter.decrypt(ciphertext, b.get_epk(), uint256S("11035d60bc1983e37950ce4803418a8fb33ea68d5b937ca382ecbae7564d6a77"), i), + libzcash::note_decryption_failed); // Test corrupted ciphertext ciphertext[10] ^= 0xff; - ASSERT_THROW(decrypter.decrypt(ciphertext, b.get_epk(), uint256(), i), std::runtime_error); + ASSERT_THROW(decrypter.decrypt(ciphertext, b.get_epk(), uint256(), i), + libzcash::note_decryption_failed); ciphertext[10] ^= 0xff; } @@ -69,7 +73,8 @@ TEST(noteencryption, api) uint256 sk_enc_2 = ZCNoteEncryption::generate_privkey(uint252()); ZCNoteDecryption decrypter(sk_enc_2); - ASSERT_THROW(decrypter.decrypt(ciphertext, b.get_epk(), uint256(), i), std::runtime_error); + ASSERT_THROW(decrypter.decrypt(ciphertext, b.get_epk(), uint256(), i), + libzcash::note_decryption_failed); } { @@ -81,7 +86,8 @@ TEST(noteencryption, api) // Test wrong public key (test of KDF) decrypter.change_pk_enc(uint256()); - ASSERT_THROW(decrypter.decrypt(ciphertext, b.get_epk(), uint256(), i), std::runtime_error); + ASSERT_THROW(decrypter.decrypt(ciphertext, b.get_epk(), uint256(), i), + libzcash::note_decryption_failed); } } diff --git a/src/gtest/test_proofs.cpp b/src/gtest/test_proofs.cpp index 1e8d30bd7..49202f1f6 100644 --- a/src/gtest/test_proofs.cpp +++ b/src/gtest/test_proofs.cpp @@ -629,15 +629,14 @@ TEST(proofs, g2_deserialization) TEST(proofs, g1_test_vectors) { - Array v = read_json(std::string(json_tests::g1_compressed, json_tests::g1_compressed + sizeof(json_tests::g1_compressed))); - Array::iterator v_iterator = v.begin(); + UniValue v = read_json(std::string(json_tests::g1_compressed, json_tests::g1_compressed + sizeof(json_tests::g1_compressed))); curve_G1 e = curve_Fr("34958239045823") * curve_G1::one(); for (size_t i = 0; i < 10000; i++) { e = (curve_Fr("34958239045823") ^ i) * e; auto expected = CompressedG1(e); - expect_test_vector(v_iterator, expected); + expect_test_vector(v[i], expected); ASSERT_TRUE(expected.to_libsnark_g1() == e); } } @@ -646,15 +645,14 @@ TEST(proofs, g1_test_vectors) TEST(proofs, g2_test_vectors) { - Array v = read_json(std::string(json_tests::g2_compressed, json_tests::g2_compressed + sizeof(json_tests::g2_compressed))); - Array::iterator v_iterator = v.begin(); + UniValue v = read_json(std::string(json_tests::g2_compressed, json_tests::g2_compressed + sizeof(json_tests::g2_compressed))); curve_G2 e = curve_Fr("34958239045823") * curve_G2::one(); for (size_t i = 0; i < 10000; i++) { e = (curve_Fr("34958239045823") ^ i) * e; auto expected = CompressedG2(e); - expect_test_vector(v_iterator, expected); + expect_test_vector(v[i], expected); ASSERT_TRUE(expected.to_libsnark_g2() == e); } } diff --git a/src/gtest/test_rpc.cpp b/src/gtest/test_rpc.cpp index dc7a07e0d..a3fc201cd 100644 --- a/src/gtest/test_rpc.cpp +++ b/src/gtest/test_rpc.cpp @@ -1,6 +1,5 @@ #include -#include "json/json_spirit_value.h" -#include "json/json_spirit_utils.h" +#include #include "chain.h" #include "chainparams.h" @@ -10,7 +9,7 @@ #include "streams.h" #include "utilstrencodings.h" -extern json_spirit::Object blockToJSON(const CBlock& block, const CBlockIndex* blockindex, bool txDetails = false); +extern UniValue blockToJSON(const CBlock& block, const CBlockIndex* blockindex, bool txDetails = false); TEST(rpc, check_blockToJSON_returns_minified_solution) { SelectParams(CBaseChainParams::TESTNET); @@ -24,6 +23,6 @@ TEST(rpc, check_blockToJSON_returns_minified_solution) { CBlockIndex index {block}; index.nHeight = 1391; - json_spirit::Object obj = blockToJSON(block, &index); - EXPECT_EQ("009f44ff7505d789b964d6817734b8ce1377d456255994370d06e59ac99bd5791b6ad174a66fd71c70e60cfc7fd88243ffe06f80b1ad181625f210779c745524629448e25348a5fce4f346a1735e60fdf53e144c0157dbc47c700a21a236f1efb7ee75f65b8d9d9e29026cfd09048233175202b211b9a49de4ab46f1cac71b6ea57a686377bd612378746e70c61a659c9cd683269e9c2a5cbc1d19f1149345302bbd0a1e62bf4bab01e9caeea789a1519441a61b146de35a4cc75dbdf01029127e311ad5073e7e96397f47226a7df9df66b2086b70756db013bbaeb068260157014b2602fc7dc71336e1439c887d2742d9730b4e79b08ec7839c3e2a037ae1565d04e05e351bb3531e5ef42cf7b71ca1482a9205245dd41f4db0f71644f8bdb88e845558537c03834c06ac83f336651e54e2edfc12e15ea9b7ea2c074e6155654d44c4d3bd90d9511050e9ad87d170db01448e5be6f45419cd86008978db5e3ceab79890234f992648d69bf1053855387db646ccdee5575c65f81dd0f670b016d9f9a84707d91f77b862f697b8bb08365ba71fbe6bfa47af39155a75ebdcb1e5d69f59c40c9e3a64988c1ec26f7f5159eef5c244d504a9e46125948ecc389c2ec3028ac4ff39ffd66e7743970819272b21e0c2df75b308bc62896873952147e57ed79446db4cdb5a563e76ec4c25899d41128afb9a5f8fc8063621efb7a58b9dd666d30c73e318cdcf3393bfec200e160f500e645f7baac263db99fa4a7c1cb4fea219fc512193102034d379f244c21a81821301b8d47c90247713a3e902c762d7bafa6cdb744eeb6d3b50dd175599d02b6e9f5bbda59366e04862aa765135968426e7ac0116de7351940dc57c0ae451d63f667e39891bc81e09e6c76f6f8a7582f7447c6f5945f717b0e52a7e3dd0c6db4061362123cc53fd8ede4abed4865201dc4d8eb4e5d48baa565183b69a5304a44c0600bb24dcaeee9d95ceebd27c1b0a33e0b46f23797d7d7907300b2bb7d62ef2fc5aa139250c73930c621bb5f41fc235534ee8014dfaddd5245aeb01198420ba7b5c076545329c94d54fa725a8e807579f5f0cc9d98170598023268f5930893620190275e6b3c6f5181e36310a9a475208316911d78f917d724c5946c553b7ec042c563c540114b6b78bd4c6e808ee391a4a9d93e127032983c5b3708037b14aa604cfb034e7c8b0ffdd6936446fe80216178506a87402653a373926eeff66e704daf992a0a9a5c3ad80566c0339be9e5b8e35b3b3226b2f7767e20d992ea6c3d6e322eca37b0c7f7e60060802f5abcc1975841365cadbdc3867063addfc803766ae525375ecddee61f9df9ffcd20343c83ab82b0e91de039c59cb435c8d3159cc338b4901f40c9b5c27043bcf2bd5fa9b685b65c9ba5a1e11a51dd3f773051560341f9ec81d05bf259e2d4b7161f896fbb6812cfc924a32120b7367d5e40439e267adda6a1315bb0d6200ce6a503174c8d2a638ea6fd6b1f486d68db11bdca63c4f4a725d1ab6231ea875484e70b27d293c05803386924f283d4c12bb953474d92b7dd43d2d97193bd96281ebb63fa075d2f9ecd310c70ee1d97b5330bd8fb5791c5943ecf084e5f2c83915acac57519c46b166136068d6f9ec0dd598616e32c591128ce13705a283ca39d5b211409600e07b3713113374d9700207a45394eac5b3b7afc9b1b2bad7d89fd3f35f6b2413ce615ee7869b3569009403b96fdacdb32ef0a7e5229e2b666d51e95bdfb009b892e88bde70621a9b6509f068781392df4bdbc5723bb15071993f0d9a11575af5ff6ef85eaea39bc86805b35d8beee91b779354147f2d85304b8b49d053e7444fdd3deb9d16de331f2552af5b3be7766bb8f3f6a78c62148efb231f2268", json_spirit::find_value(obj, "solution").get_str()); + UniValue obj = blockToJSON(block, &index); + EXPECT_EQ("009f44ff7505d789b964d6817734b8ce1377d456255994370d06e59ac99bd5791b6ad174a66fd71c70e60cfc7fd88243ffe06f80b1ad181625f210779c745524629448e25348a5fce4f346a1735e60fdf53e144c0157dbc47c700a21a236f1efb7ee75f65b8d9d9e29026cfd09048233175202b211b9a49de4ab46f1cac71b6ea57a686377bd612378746e70c61a659c9cd683269e9c2a5cbc1d19f1149345302bbd0a1e62bf4bab01e9caeea789a1519441a61b146de35a4cc75dbdf01029127e311ad5073e7e96397f47226a7df9df66b2086b70756db013bbaeb068260157014b2602fc7dc71336e1439c887d2742d9730b4e79b08ec7839c3e2a037ae1565d04e05e351bb3531e5ef42cf7b71ca1482a9205245dd41f4db0f71644f8bdb88e845558537c03834c06ac83f336651e54e2edfc12e15ea9b7ea2c074e6155654d44c4d3bd90d9511050e9ad87d170db01448e5be6f45419cd86008978db5e3ceab79890234f992648d69bf1053855387db646ccdee5575c65f81dd0f670b016d9f9a84707d91f77b862f697b8bb08365ba71fbe6bfa47af39155a75ebdcb1e5d69f59c40c9e3a64988c1ec26f7f5159eef5c244d504a9e46125948ecc389c2ec3028ac4ff39ffd66e7743970819272b21e0c2df75b308bc62896873952147e57ed79446db4cdb5a563e76ec4c25899d41128afb9a5f8fc8063621efb7a58b9dd666d30c73e318cdcf3393bfec200e160f500e645f7baac263db99fa4a7c1cb4fea219fc512193102034d379f244c21a81821301b8d47c90247713a3e902c762d7bafa6cdb744eeb6d3b50dd175599d02b6e9f5bbda59366e04862aa765135968426e7ac0116de7351940dc57c0ae451d63f667e39891bc81e09e6c76f6f8a7582f7447c6f5945f717b0e52a7e3dd0c6db4061362123cc53fd8ede4abed4865201dc4d8eb4e5d48baa565183b69a5304a44c0600bb24dcaeee9d95ceebd27c1b0a33e0b46f23797d7d7907300b2bb7d62ef2fc5aa139250c73930c621bb5f41fc235534ee8014dfaddd5245aeb01198420ba7b5c076545329c94d54fa725a8e807579f5f0cc9d98170598023268f5930893620190275e6b3c6f5181e36310a9a475208316911d78f917d724c5946c553b7ec042c563c540114b6b78bd4c6e808ee391a4a9d93e127032983c5b3708037b14aa604cfb034e7c8b0ffdd6936446fe80216178506a87402653a373926eeff66e704daf992a0a9a5c3ad80566c0339be9e5b8e35b3b3226b2f7767e20d992ea6c3d6e322eca37b0c7f7e60060802f5abcc1975841365cadbdc3867063addfc803766ae525375ecddee61f9df9ffcd20343c83ab82b0e91de039c59cb435c8d3159cc338b4901f40c9b5c27043bcf2bd5fa9b685b65c9ba5a1e11a51dd3f773051560341f9ec81d05bf259e2d4b7161f896fbb6812cfc924a32120b7367d5e40439e267adda6a1315bb0d6200ce6a503174c8d2a638ea6fd6b1f486d68db11bdca63c4f4a725d1ab6231ea875484e70b27d293c05803386924f283d4c12bb953474d92b7dd43d2d97193bd96281ebb63fa075d2f9ecd310c70ee1d97b5330bd8fb5791c5943ecf084e5f2c83915acac57519c46b166136068d6f9ec0dd598616e32c591128ce13705a283ca39d5b211409600e07b3713113374d9700207a45394eac5b3b7afc9b1b2bad7d89fd3f35f6b2413ce615ee7869b3569009403b96fdacdb32ef0a7e5229e2b666d51e95bdfb009b892e88bde70621a9b6509f068781392df4bdbc5723bb15071993f0d9a11575af5ff6ef85eaea39bc86805b35d8beee91b779354147f2d85304b8b49d053e7444fdd3deb9d16de331f2552af5b3be7766bb8f3f6a78c62148efb231f2268", find_value(obj, "solution").get_str()); } diff --git a/src/httprpc.cpp b/src/httprpc.cpp new file mode 100644 index 000000000..98ac750bb --- /dev/null +++ b/src/httprpc.cpp @@ -0,0 +1,193 @@ +#include "httprpc.h" + +#include "base58.h" +#include "chainparams.h" +#include "httpserver.h" +#include "rpcprotocol.h" +#include "rpcserver.h" +#include "random.h" +#include "sync.h" +#include "util.h" +#include "utilstrencodings.h" +#include "ui_interface.h" + +#include // boost::trim + +/** Simple one-shot callback timer to be used by the RPC mechanism to e.g. + * re-lock the wellet. + */ +class HTTPRPCTimer : public RPCTimerBase +{ +public: + HTTPRPCTimer(struct event_base* eventBase, boost::function& func, int64_t millis) : + ev(eventBase, false, func) + { + struct timeval tv; + tv.tv_sec = millis/1000; + tv.tv_usec = (millis%1000)*1000; + ev.trigger(&tv); + } +private: + HTTPEvent ev; +}; + +class HTTPRPCTimerInterface : public RPCTimerInterface +{ +public: + HTTPRPCTimerInterface(struct event_base* base) : base(base) + { + } + const char* Name() + { + return "HTTP"; + } + RPCTimerBase* NewTimer(boost::function& func, int64_t millis) + { + return new HTTPRPCTimer(base, func, millis); + } +private: + struct event_base* base; +}; + + +/* Pre-base64-encoded authentication token */ +static std::string strRPCUserColonPass; +/* Stored RPC timer interface (for unregistration) */ +static HTTPRPCTimerInterface* httpRPCTimerInterface = 0; + +static void JSONErrorReply(HTTPRequest* req, const UniValue& objError, const UniValue& id) +{ + // Send error reply from json-rpc error object + int nStatus = HTTP_INTERNAL_SERVER_ERROR; + int code = find_value(objError, "code").get_int(); + + if (code == RPC_INVALID_REQUEST) + nStatus = HTTP_BAD_REQUEST; + else if (code == RPC_METHOD_NOT_FOUND) + nStatus = HTTP_NOT_FOUND; + + std::string strReply = JSONRPCReply(NullUniValue, objError, id); + + req->WriteHeader("Content-Type", "application/json"); + req->WriteReply(nStatus, strReply); +} + +static bool RPCAuthorized(const std::string& strAuth) +{ + if (strRPCUserColonPass.empty()) // Belt-and-suspenders measure if InitRPCAuthentication was not called + return false; + if (strAuth.substr(0, 6) != "Basic ") + return false; + std::string strUserPass64 = strAuth.substr(6); + boost::trim(strUserPass64); + std::string strUserPass = DecodeBase64(strUserPass64); + return TimingResistantEqual(strUserPass, strRPCUserColonPass); +} + +static bool HTTPReq_JSONRPC(HTTPRequest* req, const std::string &) +{ + // JSONRPC handles only POST + if (req->GetRequestMethod() != HTTPRequest::POST) { + req->WriteReply(HTTP_BAD_METHOD, "JSONRPC server handles only POST requests"); + return false; + } + // Check authorization + std::pair authHeader = req->GetHeader("authorization"); + if (!authHeader.first) { + req->WriteReply(HTTP_UNAUTHORIZED); + return false; + } + + if (!RPCAuthorized(authHeader.second)) { + LogPrintf("ThreadRPCServer incorrect password attempt from %s\n", req->GetPeer().ToString()); + + /* Deter brute-forcing + If this results in a DoS the user really + shouldn't have their RPC port exposed. */ + MilliSleep(250); + + req->WriteReply(HTTP_UNAUTHORIZED); + return false; + } + + JSONRequest jreq; + try { + // Parse request + UniValue valRequest; + if (!valRequest.read(req->ReadBody())) + throw JSONRPCError(RPC_PARSE_ERROR, "Parse error"); + + std::string strReply; + // singleton request + if (valRequest.isObject()) { + jreq.parse(valRequest); + + UniValue result = tableRPC.execute(jreq.strMethod, jreq.params); + + // Send reply + strReply = JSONRPCReply(result, NullUniValue, jreq.id); + + // array of requests + } else if (valRequest.isArray()) + strReply = JSONRPCExecBatch(valRequest.get_array()); + else + throw JSONRPCError(RPC_PARSE_ERROR, "Top-level object parse error"); + + req->WriteHeader("Content-Type", "application/json"); + req->WriteReply(HTTP_OK, strReply); + } catch (const UniValue& objError) { + JSONErrorReply(req, objError, jreq.id); + return false; + } catch (const std::exception& e) { + JSONErrorReply(req, JSONRPCError(RPC_PARSE_ERROR, e.what()), jreq.id); + return false; + } + return true; +} + +static bool InitRPCAuthentication() +{ + if (mapArgs["-rpcpassword"] == "") + { + LogPrintf("No rpcpassword set - using random cookie authentication\n"); + if (!GenerateAuthCookie(&strRPCUserColonPass)) { + uiInterface.ThreadSafeMessageBox( + _("Error: A fatal internal error occurred, see debug.log for details"), // Same message as AbortNode + "", CClientUIInterface::MSG_ERROR); + return false; + } + } else { + strRPCUserColonPass = mapArgs["-rpcuser"] + ":" + mapArgs["-rpcpassword"]; + } + return true; +} + +bool StartHTTPRPC() +{ + LogPrint("rpc", "Starting HTTP RPC server\n"); + if (!InitRPCAuthentication()) + return false; + + RegisterHTTPHandler("/", true, HTTPReq_JSONRPC); + + assert(EventBase()); + httpRPCTimerInterface = new HTTPRPCTimerInterface(EventBase()); + RPCRegisterTimerInterface(httpRPCTimerInterface); + return true; +} + +void InterruptHTTPRPC() +{ + LogPrint("rpc", "Interrupting HTTP RPC server\n"); +} + +void StopHTTPRPC() +{ + LogPrint("rpc", "Stopping HTTP RPC server\n"); + UnregisterHTTPHandler("/", true); + if (httpRPCTimerInterface) { + RPCUnregisterTimerInterface(httpRPCTimerInterface); + delete httpRPCTimerInterface; + httpRPCTimerInterface = 0; + } +} diff --git a/src/httprpc.h b/src/httprpc.h new file mode 100644 index 000000000..d35445718 --- /dev/null +++ b/src/httprpc.h @@ -0,0 +1,37 @@ +// Copyright (c) 2015 The Bitcoin Core developers +// Distributed under the MIT software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + +#ifndef BITCOIN_HTTPRPC_H +#define BITCOIN_HTTPRPC_H + +#include +#include + +class HTTPRequest; + +/** Start HTTP RPC subsystem. + * Precondition; HTTP and RPC has been started. + */ +bool StartHTTPRPC(); +/** Interrupt HTTP RPC subsystem. + */ +void InterruptHTTPRPC(); +/** Stop HTTP RPC subsystem. + * Precondition; HTTP and RPC has been stopped. + */ +void StopHTTPRPC(); + +/** Start HTTP REST subsystem. + * Precondition; HTTP and RPC has been started. + */ +bool StartREST(); +/** Interrupt RPC REST subsystem. + */ +void InterruptREST(); +/** Stop HTTP REST subsystem. + * Precondition; HTTP and RPC has been stopped. + */ +void StopREST(); + +#endif diff --git a/src/httpserver.cpp b/src/httpserver.cpp new file mode 100644 index 000000000..4215a0f26 --- /dev/null +++ b/src/httpserver.cpp @@ -0,0 +1,598 @@ +// Copyright (c) 2015 The Bitcoin Core developers +// Distributed under the MIT software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + +#include "httpserver.h" + +#include "chainparamsbase.h" +#include "compat.h" +#include "util.h" +#include "netbase.h" +#include "rpcprotocol.h" // For HTTP status codes +#include "sync.h" +#include "ui_interface.h" + +#include +#include +#include + +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#ifdef EVENT__HAVE_NETINET_IN_H +#include +#ifdef _XOPEN_SOURCE_EXTENDED +#include +#endif +#endif + +#include // for to_lower() +#include +#include + +/** HTTP request work item */ +class HTTPWorkItem : public HTTPClosure +{ +public: + HTTPWorkItem(HTTPRequest* req, const std::string &path, const HTTPRequestHandler& func): + req(req), path(path), func(func) + { + } + void operator()() + { + func(req.get(), path); + } + + boost::scoped_ptr req; + +private: + std::string path; + HTTPRequestHandler func; +}; + +/** Simple work queue for distributing work over multiple threads. + * Work items are simply callable objects. + */ +template +class WorkQueue +{ +private: + /** Mutex protects entire object */ + CWaitableCriticalSection cs; + CConditionVariable cond; + /* XXX in C++11 we can use std::unique_ptr here and avoid manual cleanup */ + std::deque queue; + bool running; + size_t maxDepth; + +public: + WorkQueue(size_t maxDepth) : running(true), + maxDepth(maxDepth) + { + } + /* Precondition: worker threads have all stopped */ + ~WorkQueue() + { + while (!queue.empty()) { + delete queue.front(); + queue.pop_front(); + } + } + /** Enqueue a work item */ + bool Enqueue(WorkItem* item) + { + boost::unique_lock lock(cs); + if (queue.size() >= maxDepth) { + return false; + } + queue.push_back(item); + cond.notify_one(); + return true; + } + /** Thread function */ + void Run() + { + while (running) { + WorkItem* i = 0; + { + boost::unique_lock lock(cs); + while (running && queue.empty()) + cond.wait(lock); + if (!running) + break; + i = queue.front(); + queue.pop_front(); + } + (*i)(); + delete i; + } + } + /** Interrupt and exit loops */ + void Interrupt() + { + boost::unique_lock lock(cs); + running = false; + cond.notify_all(); + } + + /** Return current depth of queue */ + size_t Depth() + { + boost::unique_lock lock(cs); + return queue.size(); + } +}; + +struct HTTPPathHandler +{ + HTTPPathHandler() {} + HTTPPathHandler(std::string prefix, bool exactMatch, HTTPRequestHandler handler): + prefix(prefix), exactMatch(exactMatch), handler(handler) + { + } + std::string prefix; + bool exactMatch; + HTTPRequestHandler handler; +}; + +/** HTTP module state */ + +//! libevent event loop +static struct event_base* eventBase = 0; +//! HTTP server +struct evhttp* eventHTTP = 0; +//! List of subnets to allow RPC connections from +static std::vector rpc_allow_subnets; +//! Work queue for handling longer requests off the event loop thread +static WorkQueue* workQueue = 0; +//! Handlers for (sub)paths +std::vector pathHandlers; + +/** Check if a network address is allowed to access the HTTP server */ +static bool ClientAllowed(const CNetAddr& netaddr) +{ + if (!netaddr.IsValid()) + return false; + BOOST_FOREACH (const CSubNet& subnet, rpc_allow_subnets) + if (subnet.Match(netaddr)) + return true; + return false; +} + +/** Initialize ACL list for HTTP server */ +static bool InitHTTPAllowList() +{ + rpc_allow_subnets.clear(); + rpc_allow_subnets.push_back(CSubNet("127.0.0.0/8")); // always allow IPv4 local subnet + rpc_allow_subnets.push_back(CSubNet("::1")); // always allow IPv6 localhost + if (mapMultiArgs.count("-rpcallowip")) { + const std::vector& vAllow = mapMultiArgs["-rpcallowip"]; + BOOST_FOREACH (std::string strAllow, vAllow) { + CSubNet subnet(strAllow); + if (!subnet.IsValid()) { + uiInterface.ThreadSafeMessageBox( + strprintf("Invalid -rpcallowip subnet specification: %s. 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).", strAllow), + "", CClientUIInterface::MSG_ERROR); + return false; + } + rpc_allow_subnets.push_back(subnet); + } + } + std::string strAllowed; + BOOST_FOREACH (const CSubNet& subnet, rpc_allow_subnets) + strAllowed += subnet.ToString() + " "; + LogPrint("http", "Allowing HTTP connections from: %s\n", strAllowed); + return true; +} + +/** HTTP request method as string - use for logging only */ +static std::string RequestMethodString(HTTPRequest::RequestMethod m) +{ + switch (m) { + case HTTPRequest::GET: + return "GET"; + break; + case HTTPRequest::POST: + return "POST"; + break; + case HTTPRequest::HEAD: + return "HEAD"; + break; + case HTTPRequest::PUT: + return "PUT"; + break; + default: + return "unknown"; + } +} + +/** HTTP request callback */ +static void http_request_cb(struct evhttp_request* req, void* arg) +{ + std::unique_ptr hreq(new HTTPRequest(req)); + + LogPrint("http", "Received a %s request for %s from %s\n", + RequestMethodString(hreq->GetRequestMethod()), hreq->GetURI(), hreq->GetPeer().ToString()); + + // Early address-based allow check + if (!ClientAllowed(hreq->GetPeer())) { + hreq->WriteReply(HTTP_FORBIDDEN); + return; + } + + // Early reject unknown HTTP methods + if (hreq->GetRequestMethod() == HTTPRequest::UNKNOWN) { + hreq->WriteReply(HTTP_BADMETHOD); + return; + } + + // Find registered handler for prefix + std::string strURI = hreq->GetURI(); + std::string path; + std::vector::const_iterator i = pathHandlers.begin(); + std::vector::const_iterator iend = pathHandlers.end(); + for (; i != iend; ++i) { + bool match = false; + if (i->exactMatch) + match = (strURI == i->prefix); + else + match = (strURI.substr(0, i->prefix.size()) == i->prefix); + if (match) { + path = strURI.substr(i->prefix.size()); + break; + } + } + + // Dispatch to worker thread + if (i != iend) { + std::unique_ptr item(new HTTPWorkItem(hreq.release(), path, i->handler)); + assert(workQueue); + if (workQueue->Enqueue(item.get())) + item.release(); /* if true, queue took ownership */ + else + item->req->WriteReply(HTTP_INTERNAL, "Work queue depth exceeded"); + } else { + hreq->WriteReply(HTTP_NOTFOUND); + } +} + +/** Event dispatcher thread */ +static void ThreadHTTP(struct event_base* base, struct evhttp* http) +{ + RenameThread("bitcoin-http"); + LogPrint("http", "Entering http event loop\n"); + event_base_dispatch(base); + // Event loop will be interrupted by InterruptHTTPServer() + LogPrint("http", "Exited http event loop\n"); +} + +/** Bind HTTP server to specified addresses */ +static bool HTTPBindAddresses(struct evhttp* http) +{ + int defaultPort = GetArg("-rpcport", BaseParams().RPCPort()); + int nBound = 0; + std::vector > endpoints; + + // Determine what addresses to bind to + if (!mapArgs.count("-rpcallowip")) { // Default to loopback if not allowing external IPs + endpoints.push_back(std::make_pair("::1", defaultPort)); + endpoints.push_back(std::make_pair("127.0.0.1", defaultPort)); + if (mapArgs.count("-rpcbind")) { + LogPrintf("WARNING: option -rpcbind was ignored because -rpcallowip was not specified, refusing to allow everyone to connect\n"); + } + } else if (mapArgs.count("-rpcbind")) { // Specific bind address + const std::vector& vbind = mapMultiArgs["-rpcbind"]; + for (std::vector::const_iterator i = vbind.begin(); i != vbind.end(); ++i) { + int port = defaultPort; + std::string host; + SplitHostPort(*i, port, host); + endpoints.push_back(std::make_pair(host, port)); + } + } else { // No specific bind address specified, bind to any + endpoints.push_back(std::make_pair("::", defaultPort)); + endpoints.push_back(std::make_pair("0.0.0.0", defaultPort)); + } + + // Bind addresses + for (std::vector >::iterator i = endpoints.begin(); i != endpoints.end(); ++i) { + LogPrint("http", "Binding RPC on address %s port %i\n", i->first, i->second); + if (evhttp_bind_socket(http, i->first.empty() ? NULL : i->first.c_str(), i->second) == 0) { + nBound += 1; + } else { + LogPrintf("Binding RPC on address %s port %i failed.\n", i->first, i->second); + } + } + return nBound > 0; +} + +/** Simple wrapper to set thread name and run work queue */ +static void HTTPWorkQueueRun(WorkQueue* queue) +{ + RenameThread("bitcoin-httpworker"); + queue->Run(); +} + +/** libevent event log callback */ +static void libevent_log_cb(int severity, const char *msg) +{ +#ifndef EVENT_LOG_WARN +// EVENT_LOG_WARN was added in 2.0.19; but before then _EVENT_LOG_WARN existed. +# define EVENT_LOG_WARN _EVENT_LOG_WARN +#endif + if (severity >= EVENT_LOG_WARN) // Log warn messages and higher without debug category + LogPrintf("libevent: %s\n", msg); + else + LogPrint("libevent", "libevent: %s\n", msg); +} + +bool InitHTTPServer() +{ + struct evhttp* http = 0; + struct event_base* base = 0; + + if (!InitHTTPAllowList()) + return false; + + if (GetBoolArg("-rpcssl", false)) { + uiInterface.ThreadSafeMessageBox( + "SSL mode for RPC (-rpcssl) is no longer supported.", + "", CClientUIInterface::MSG_ERROR); + return false; + } + + // Redirect libevent's logging to our own log + event_set_log_callback(&libevent_log_cb); +#if LIBEVENT_VERSION_NUMBER >= 0x02010100 + // If -debug=libevent, set full libevent debugging. + // Otherwise, disable all libevent debugging. + if (LogAcceptCategory("libevent")) + event_enable_debug_logging(EVENT_DBG_ALL); + else + event_enable_debug_logging(EVENT_DBG_NONE); +#endif +#ifdef WIN32 + evthread_use_windows_threads(); +#else + evthread_use_pthreads(); +#endif + + base = event_base_new(); // XXX RAII + if (!base) { + LogPrintf("Couldn't create an event_base: exiting\n"); + return false; + } + + /* Create a new evhttp object to handle requests. */ + http = evhttp_new(base); // XXX RAII + if (!http) { + LogPrintf("couldn't create evhttp. Exiting.\n"); + event_base_free(base); + return false; + } + + evhttp_set_timeout(http, GetArg("-rpcservertimeout", DEFAULT_HTTP_SERVER_TIMEOUT)); + evhttp_set_max_body_size(http, MAX_SIZE); + evhttp_set_gencb(http, http_request_cb, NULL); + + if (!HTTPBindAddresses(http)) { + LogPrintf("Unable to bind any endpoint for RPC server\n"); + evhttp_free(http); + event_base_free(base); + return false; + } + + LogPrint("http", "Initialized HTTP server\n"); + int workQueueDepth = std::max((long)GetArg("-rpcworkqueue", DEFAULT_HTTP_WORKQUEUE), 1L); + LogPrintf("HTTP: creating work queue of depth %d\n", workQueueDepth); + + workQueue = new WorkQueue(workQueueDepth); + eventBase = base; + eventHTTP = http; + return true; +} + +bool StartHTTPServer(boost::thread_group& threadGroup) +{ + LogPrint("http", "Starting HTTP server\n"); + int rpcThreads = std::max((long)GetArg("-rpcthreads", DEFAULT_HTTP_THREADS), 1L); + LogPrintf("HTTP: starting %d worker threads\n", rpcThreads); + threadGroup.create_thread(boost::bind(&ThreadHTTP, eventBase, eventHTTP)); + + for (int i = 0; i < rpcThreads; i++) + threadGroup.create_thread(boost::bind(&HTTPWorkQueueRun, workQueue)); + return true; +} + +void InterruptHTTPServer() +{ + LogPrint("http", "Interrupting HTTP server\n"); + if (eventBase) + event_base_loopbreak(eventBase); + if (workQueue) + workQueue->Interrupt(); +} + +void StopHTTPServer() +{ + LogPrint("http", "Stopping HTTP server\n"); + delete workQueue; + if (eventHTTP) { + evhttp_free(eventHTTP); + eventHTTP = 0; + } + if (eventBase) { + event_base_free(eventBase); + eventBase = 0; + } +} + +struct event_base* EventBase() +{ + return eventBase; +} + +static void httpevent_callback_fn(evutil_socket_t, short, void* data) +{ + // Static handler: simply call inner handler + HTTPEvent *self = ((HTTPEvent*)data); + self->handler(); + if (self->deleteWhenTriggered) + delete self; +} + +HTTPEvent::HTTPEvent(struct event_base* base, bool deleteWhenTriggered, const boost::function& handler): + deleteWhenTriggered(deleteWhenTriggered), handler(handler) +{ + ev = event_new(base, -1, 0, httpevent_callback_fn, this); + assert(ev); +} +HTTPEvent::~HTTPEvent() +{ + event_free(ev); +} +void HTTPEvent::trigger(struct timeval* tv) +{ + if (tv == NULL) + event_active(ev, 0, 0); // immediately trigger event in main thread + else + evtimer_add(ev, tv); // trigger after timeval passed +} +HTTPRequest::HTTPRequest(struct evhttp_request* req) : req(req), + replySent(false) +{ +} +HTTPRequest::~HTTPRequest() +{ + if (!replySent) { + // Keep track of whether reply was sent to avoid request leaks + LogPrintf("%s: Unhandled request\n", __func__); + WriteReply(HTTP_INTERNAL, "Unhandled request"); + } + // evhttpd cleans up the request, as long as a reply was sent. +} + +std::pair HTTPRequest::GetHeader(const std::string& hdr) +{ + const struct evkeyvalq* headers = evhttp_request_get_input_headers(req); + assert(headers); + const char* val = evhttp_find_header(headers, hdr.c_str()); + if (val) + return std::make_pair(true, val); + else + return std::make_pair(false, ""); +} + +std::string HTTPRequest::ReadBody() +{ + struct evbuffer* buf = evhttp_request_get_input_buffer(req); + if (!buf) + return ""; + size_t size = evbuffer_get_length(buf); + /** Trivial implementation: if this is ever a performance bottleneck, + * internal copying can be avoided in multi-segment buffers by using + * evbuffer_peek and an awkward loop. Though in that case, it'd be even + * better to not copy into an intermediate string but use a stream + * abstraction to consume the evbuffer on the fly in the parsing algorithm. + */ + const char* data = (const char*)evbuffer_pullup(buf, size); + if (!data) // returns NULL in case of empty buffer + return ""; + std::string rv(data, size); + evbuffer_drain(buf, size); + return rv; +} + +void HTTPRequest::WriteHeader(const std::string& hdr, const std::string& value) +{ + struct evkeyvalq* headers = evhttp_request_get_output_headers(req); + assert(headers); + evhttp_add_header(headers, hdr.c_str(), value.c_str()); +} + +/** Closure sent to main thread to request a reply to be sent to + * a HTTP request. + * Replies must be sent in the main loop in the main http thread, + * this cannot be done from worker threads. + */ +void HTTPRequest::WriteReply(int nStatus, const std::string& strReply) +{ + assert(!replySent && req); + // Send event to main http thread to send reply message + struct evbuffer* evb = evhttp_request_get_output_buffer(req); + assert(evb); + evbuffer_add(evb, strReply.data(), strReply.size()); + HTTPEvent* ev = new HTTPEvent(eventBase, true, + boost::bind(evhttp_send_reply, req, nStatus, (const char*)NULL, (struct evbuffer *)NULL)); + ev->trigger(0); + replySent = true; + req = 0; // transferred back to main thread +} + +CService HTTPRequest::GetPeer() +{ + evhttp_connection* con = evhttp_request_get_connection(req); + CService peer; + if (con) { + // evhttp retains ownership over returned address string + const char* address = ""; + uint16_t port = 0; + evhttp_connection_get_peer(con, (char**)&address, &port); + peer = CService(address, port); + } + return peer; +} + +std::string HTTPRequest::GetURI() +{ + return evhttp_request_get_uri(req); +} + +HTTPRequest::RequestMethod HTTPRequest::GetRequestMethod() +{ + switch (evhttp_request_get_command(req)) { + case EVHTTP_REQ_GET: + return GET; + break; + case EVHTTP_REQ_POST: + return POST; + break; + case EVHTTP_REQ_HEAD: + return HEAD; + break; + case EVHTTP_REQ_PUT: + return PUT; + break; + default: + return UNKNOWN; + break; + } +} + +void RegisterHTTPHandler(const std::string &prefix, bool exactMatch, const HTTPRequestHandler &handler) +{ + LogPrint("http", "Registering HTTP handler for %s (exactmatch %d)\n", prefix, exactMatch); + pathHandlers.push_back(HTTPPathHandler(prefix, exactMatch, handler)); +} + +void UnregisterHTTPHandler(const std::string &prefix, bool exactMatch) +{ + std::vector::iterator i = pathHandlers.begin(); + std::vector::iterator iend = pathHandlers.end(); + for (; i != iend; ++i) + if (i->prefix == prefix && i->exactMatch == exactMatch) + break; + if (i != iend) + { + LogPrint("http", "Unregistering HTTP handler for %s (exactmatch %d)\n", prefix, exactMatch); + pathHandlers.erase(i); + } +} + diff --git a/src/httpserver.h b/src/httpserver.h new file mode 100644 index 000000000..b377dc19f --- /dev/null +++ b/src/httpserver.h @@ -0,0 +1,149 @@ +// Copyright (c) 2015 The Bitcoin Core developers +// Distributed under the MIT software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + +#ifndef BITCOIN_HTTPSERVER_H +#define BITCOIN_HTTPSERVER_H + +#include +#include +#include +#include +#include + +static const int DEFAULT_HTTP_THREADS=4; +static const int DEFAULT_HTTP_WORKQUEUE=16; +static const int DEFAULT_HTTP_SERVER_TIMEOUT=30; + +struct evhttp_request; +struct event_base; +class CService; +class HTTPRequest; + +/** Initialize HTTP server. + * Call this before RegisterHTTPHandler or EventBase(). + */ +bool InitHTTPServer(); +/** Start HTTP server. + * This is separate from InitHTTPServer to give users race-condition-free time + * to register their handlers between InitHTTPServer and StartHTTPServer. + */ +bool StartHTTPServer(boost::thread_group& threadGroup); +/** Interrupt HTTP server threads */ +void InterruptHTTPServer(); +/** Stop HTTP server */ +void StopHTTPServer(); + +/** Handler for requests to a certain HTTP path */ +typedef boost::function HTTPRequestHandler; +/** Register handler for prefix. + * If multiple handlers match a prefix, the first-registered one will + * be invoked. + */ +void RegisterHTTPHandler(const std::string &prefix, bool exactMatch, const HTTPRequestHandler &handler); +/** Unregister handler for prefix */ +void UnregisterHTTPHandler(const std::string &prefix, bool exactMatch); + +/** Return evhttp event base. This can be used by submodules to + * queue timers or custom events. + */ +struct event_base* EventBase(); + +/** In-flight HTTP request. + * Thin C++ wrapper around evhttp_request. + */ +class HTTPRequest +{ +private: + struct evhttp_request* req; + bool replySent; + +public: + HTTPRequest(struct evhttp_request* req); + ~HTTPRequest(); + + enum RequestMethod { + UNKNOWN, + GET, + POST, + HEAD, + PUT + }; + + /** Get requested URI. + */ + std::string GetURI(); + + /** Get CService (address:ip) for the origin of the http request. + */ + CService GetPeer(); + + /** Get request method. + */ + RequestMethod GetRequestMethod(); + + /** + * Get the request header specified by hdr, or an empty string. + * Return an pair (isPresent,string). + */ + std::pair GetHeader(const std::string& hdr); + + /** + * Read request body. + * + * @note As this consumes the underlying buffer, call this only once. + * Repeated calls will return an empty string. + */ + std::string ReadBody(); + + /** + * Write output header. + * + * @note call this before calling WriteErrorReply or Reply. + */ + void WriteHeader(const std::string& hdr, const std::string& value); + + /** + * Write HTTP reply. + * nStatus is the HTTP status code to send. + * strReply is the body of the reply. Keep it empty to send a standard message. + * + * @note Can be called only once. As this will give the request back to the + * main thread, do not call any other HTTPRequest methods after calling this. + */ + void WriteReply(int nStatus, const std::string& strReply = ""); +}; + +/** Event handler closure. + */ +class HTTPClosure +{ +public: + virtual void operator()() = 0; + virtual ~HTTPClosure() {} +}; + +/** Event class. This can be used either as an cross-thread trigger or as a timer. + */ +class HTTPEvent +{ +public: + /** Create a new event. + * deleteWhenTriggered deletes this event object after the event is triggered (and the handler called) + * handler is the handler to call when the event is triggered. + */ + HTTPEvent(struct event_base* base, bool deleteWhenTriggered, const boost::function& handler); + ~HTTPEvent(); + + /** Trigger the event. If tv is 0, trigger it immediately. Otherwise trigger it after + * the given time has elapsed. + */ + void trigger(struct timeval* tv); + + bool deleteWhenTriggered; + boost::function handler; +private: + struct event* ev; +}; + +#endif // BITCOIN_HTTPSERVER_H diff --git a/src/init.cpp b/src/init.cpp index f7a58fa50..d17f0a16e 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -11,9 +11,14 @@ #include "crypto/common.h" #include "addrman.h" #include "amount.h" +#ifdef ENABLE_MINING +#include "base58.h" +#endif #include "checkpoints.h" #include "compat/sanity.h" #include "consensus/validation.h" +#include "httpserver.h" +#include "httprpc.h" #include "key.h" #include "main.h" #include "metrics.h" @@ -23,6 +28,7 @@ #include "script/standard.h" #include "scheduler.h" #include "txdb.h" +#include "torcontrol.h" #include "ui_interface.h" #include "util.h" #include "utilmoneystr.h" @@ -31,7 +37,6 @@ #include "wallet/wallet.h" #include "wallet/walletdb.h" #endif - #include #include @@ -50,6 +55,10 @@ #include "libsnark/common/profiling.hpp" +#if ENABLE_ZMQ +#include "zmq/zmqnotificationinterface.h" +#endif + using namespace std; extern void ThreadSendAlert(); @@ -61,6 +70,10 @@ CWallet* pwalletMain = NULL; #endif bool fFeeEstimatesInitialized = false; +#if ENABLE_ZMQ +static CZMQNotificationInterface* pzmqNotificationInterface = NULL; +#endif + #ifdef WIN32 // Win32 LevelDB doesn't use file descriptors, and the ones used for // accessing block files don't count towards the fd_set size limit @@ -90,7 +103,7 @@ CClientUIInterface uiInterface; // Declared but not defined in ui_interface.h // Thread management and startup/shutdown: // // The network-processing threads are all part of a thread group -// created by AppInit() or the Qt main() function. +// created by AppInit(). // // A clean exit happens when StartShutdown() or the SIGTERM // signal handler sets fRequestShutdown, which triggers @@ -106,10 +119,6 @@ CClientUIInterface uiInterface; // Declared but not defined in ui_interface.h // before adding any threads to the threadGroup, so .join_all() returns // immediately and the parent exits from main(). // -// Shutdown for Qt is very similar, only it uses a QTimer to detect -// fRequestShutdown getting set, and then does the normal Qt -// shutdown thing. -// std::atomic fRequestShutdown(false); @@ -145,6 +154,16 @@ public: static CCoinsViewDB *pcoinsdbview = NULL; static CCoinsViewErrorCatcher *pcoinscatcher = NULL; +void Interrupt(boost::thread_group& threadGroup) +{ + InterruptHTTPServer(); + InterruptHTTPRPC(); + InterruptRPC(); + InterruptREST(); + InterruptTorControl(); + threadGroup.interrupt_all(); +} + void Shutdown() { LogPrintf("%s: In progress...\n", __func__); @@ -159,13 +178,24 @@ void Shutdown() /// module was initialized. RenameThread("zcash-shutoff"); mempool.AddTransactionsUpdated(1); - StopRPCThreads(); + + StopHTTPRPC(); + StopREST(); + StopRPC(); + StopHTTPServer(); #ifdef ENABLE_WALLET if (pwalletMain) pwalletMain->Flush(false); +#endif +#ifdef ENABLE_MINING + #ifdef ENABLE_WALLET GenerateBitcoins(false, NULL, 0); + #else + GenerateBitcoins(false, 0); + #endif #endif StopNode(); + StopTorControl(); UnregisterNodeSignals(GetNodeSignals()); if (fFeeEstimatesInitialized) @@ -197,6 +227,15 @@ void Shutdown() if (pwalletMain) pwalletMain->Flush(true); #endif + +#if ENABLE_ZMQ + if (pzmqNotificationInterface) { + UnregisterValidationInterface(pzmqNotificationInterface); + delete pzmqNotificationInterface; + pzmqNotificationInterface = NULL; + } +#endif + #ifndef WIN32 try { boost::filesystem::remove(GetPidFile()); @@ -319,7 +358,8 @@ std::string HelpMessage(HelpMessageMode mode) strUsage += HelpMessageOpt("-externalip=", _("Specify your own public address")); strUsage += HelpMessageOpt("-forcednsseed", strprintf(_("Always query for peer addresses via DNS lookup (default: %u)"), 0)); strUsage += HelpMessageOpt("-listen", _("Accept connections from outside (default: 1 if no -proxy or -connect)")); - strUsage += HelpMessageOpt("-maxconnections=", strprintf(_("Maintain at most connections to peers (default: %u)"), 125)); + strUsage += HelpMessageOpt("-listenonion", strprintf(_("Automatically create Tor hidden service (default: %d)"), DEFAULT_LISTEN_ONION)); + strUsage += HelpMessageOpt("-maxconnections=", strprintf(_("Maintain at most connections to peers (default: %u)"), DEFAULT_MAX_PEER_CONNECTIONS)); strUsage += HelpMessageOpt("-maxreceivebuffer=", strprintf(_("Maximum per-connection receive buffer, *1000 bytes (default: %u)"), 5000)); strUsage += HelpMessageOpt("-maxsendbuffer=", strprintf(_("Maximum per-connection send buffer, *1000 bytes (default: %u)"), 1000)); strUsage += HelpMessageOpt("-onion=", strprintf(_("Use separate SOCKS5 proxy to reach peers via Tor hidden services (default: %s)"), "-proxy")); @@ -330,9 +370,11 @@ std::string HelpMessage(HelpMessageMode mode) strUsage += HelpMessageOpt("-proxyrandomize", strprintf(_("Randomize credentials for every proxy connection. This enables Tor stream isolation (default: %u)"), 1)); strUsage += HelpMessageOpt("-seednode=", _("Connect to a node to retrieve peer addresses, and disconnect")); strUsage += HelpMessageOpt("-timeout=", strprintf(_("Specify connection timeout in milliseconds (minimum: 1, default: %d)"), DEFAULT_CONNECT_TIMEOUT)); + strUsage += HelpMessageOpt("-torcontrol=:", strprintf(_("Tor control port to use if onion listening enabled (default: %s)"), DEFAULT_TOR_CONTROL)); + strUsage += HelpMessageOpt("-torpassword=", _("Tor control port password (default: empty)")); #ifdef USE_UPNP #if USE_UPNP - strUsage += HelpMessageOpt("-upnp", _("Use UPnP to map the listening port (default: 1 when listening)")); + strUsage += HelpMessageOpt("-upnp", _("Use UPnP to map the listening port (default: 1 when listening and no -proxy)")); #else strUsage += HelpMessageOpt("-upnp", strprintf(_("Use UPnP to map the listening port (default: %u)"), 0)); #endif @@ -362,13 +404,20 @@ std::string HelpMessage(HelpMessageMode mode) strUsage += HelpMessageOpt("-walletnotify=", _("Execute command when a wallet transaction changes (%s in cmd is replaced by TxID)")); strUsage += HelpMessageOpt("-zapwallettxes=", _("Delete all wallet transactions and only recover those parts of the blockchain through -rescan on startup") + " " + _("(1 = keep tx meta data e.g. account owner and payment request information, 2 = drop tx meta data)")); - +#endif + +#if ENABLE_ZMQ + strUsage += HelpMessageGroup(_("ZeroMQ notification options:")); + strUsage += HelpMessageOpt("-zmqpubhashblock=
", _("Enable publish hash block in
")); + strUsage += HelpMessageOpt("-zmqpubhashtx=
", _("Enable publish hash transaction in
")); + strUsage += HelpMessageOpt("-zmqpubrawblock=
", _("Enable publish raw block in
")); + strUsage += HelpMessageOpt("-zmqpubrawtx=
", _("Enable publish raw transaction in
")); #endif strUsage += HelpMessageGroup(_("Debugging/Testing options:")); if (showDebug) { - strUsage += HelpMessageOpt("-checkpoints", strprintf("Only accept block chain matching built-in checkpoints (default: %u)", 1)); + strUsage += HelpMessageOpt("-checkpoints", strprintf("Disable expensive verification for known chain history (default: %u)", 1)); strUsage += HelpMessageOpt("-dblogsize=", strprintf("Flush database activity from memory pool to disk log every megabytes (default: %u)", 100)); strUsage += HelpMessageOpt("-disablesafemode", strprintf("Disable safemode, override a real safe mode event (default: %u)", 0)); strUsage += HelpMessageOpt("-testsafemode", strprintf("Force safe mode (default: %u)", 0)); @@ -377,17 +426,11 @@ std::string HelpMessage(HelpMessageMode mode) strUsage += HelpMessageOpt("-flushwallet", strprintf("Run a thread to flush wallet periodically (default: %u)", 1)); strUsage += HelpMessageOpt("-stopafterblockimport", strprintf("Stop running after importing blocks from disk (default: %u)", 0)); } - string debugCategories = "addrman, alert, bench, coindb, db, estimatefee, lock, mempool, net, partitioncheck, pow, proxy, prune, " - "rand, reindex, rpc, selectcoins, zrpc, zrpcunsafe"; // Don't translate these and qt below - if (mode == HMM_BITCOIN_QT) - debugCategories += ", qt"; + string debugCategories = "addrman, alert, bench, coindb, db, estimatefee, http, libevent, lock, mempool, net, partitioncheck, pow, proxy, prune, " + "rand, reindex, rpc, selectcoins, tor, zmq, zrpc, zrpcunsafe (implies zrpc)"; // Don't translate these strUsage += HelpMessageOpt("-debug=", strprintf(_("Output debugging information (default: %u, supplying is optional)"), 0) + ". " + _("If is not supplied or if = 1, output all debugging information.") + " " + _(" can be:") + " " + debugCategories + "."); -#ifdef ENABLE_WALLET - strUsage += HelpMessageOpt("-gen", strprintf(_("Generate coins (default: %u)"), 0)); - strUsage += HelpMessageOpt("-genproclimit=", strprintf(_("Set the number of threads for coin generation if enabled (-1 = all cores, default: %d)"), 1)); - strUsage += HelpMessageOpt("-equihashsolver=", _("Specify the Equihash solver to be used if enabled (default: \"default\")")); -#endif + strUsage += HelpMessageOpt("-experimentalfeatures", _("Enable use of experimental features")); strUsage += HelpMessageOpt("-help-debug", _("Show all debugging options (usage: --help -help-debug)")); strUsage += HelpMessageOpt("-logips", strprintf(_("Include IP addresses in debug output (default: %u)"), 0)); strUsage += HelpMessageOpt("-logtimestamps", strprintf(_("Prepend debug output with timestamp (default: %u)"), 1)); @@ -417,6 +460,24 @@ std::string HelpMessage(HelpMessageMode mode) strUsage += HelpMessageOpt("-blockminsize=", strprintf(_("Set minimum block size in bytes (default: %u)"), 0)); strUsage += HelpMessageOpt("-blockmaxsize=", strprintf(_("Set maximum block size in bytes (default: %d)"), DEFAULT_BLOCK_MAX_SIZE)); strUsage += HelpMessageOpt("-blockprioritysize=", strprintf(_("Set maximum size of high-priority/low-fee transactions in bytes (default: %d)"), DEFAULT_BLOCK_PRIORITY_SIZE)); + if (GetBoolArg("-help-debug", false)) + strUsage += HelpMessageOpt("-blockversion=", strprintf("Override block version to test forking scenarios (default: %d)", (int)CBlock::CURRENT_VERSION)); + +#ifdef ENABLE_MINING + strUsage += HelpMessageGroup(_("Mining options:")); + strUsage += HelpMessageOpt("-gen", strprintf(_("Generate coins (default: %u)"), 0)); + strUsage += HelpMessageOpt("-genproclimit=", strprintf(_("Set the number of threads for coin generation if enabled (-1 = all cores, default: %d)"), 1)); + strUsage += HelpMessageOpt("-equihashsolver=", _("Specify the Equihash solver to be used if enabled (default: \"default\")")); + strUsage += HelpMessageOpt("-mineraddress=", _("Send mined coins to a specific single address")); + strUsage += HelpMessageOpt("-minetolocalwallet", strprintf( + _("Require that mined blocks use a coinbase address in the local wallet (default: %u)"), + #ifdef ENABLE_WALLET + 1 + #else + 0 + #endif + )); +#endif strUsage += HelpMessageGroup(_("RPC server options:")); strUsage += HelpMessageOpt("-server", _("Accept command line and JSON-RPC commands")); @@ -426,33 +487,16 @@ std::string HelpMessage(HelpMessageMode mode) strUsage += HelpMessageOpt("-rpcpassword=", _("Password for JSON-RPC connections")); strUsage += HelpMessageOpt("-rpcport=", strprintf(_("Listen for JSON-RPC connections on (default: %u or testnet: %u)"), 8232, 18232)); strUsage += HelpMessageOpt("-rpcallowip=", _("Allow JSON-RPC connections from specified source. Valid for 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")); - strUsage += HelpMessageOpt("-rpcthreads=", strprintf(_("Set the number of threads to service RPC calls (default: %d)"), 4)); - - // TODO #1856: Re-enable support for persistent connections. - // Disabled to avoid rpc deadlock #1680, until we backport upstream changes which replace boost::asio with libevent, or another solution is implemented. - //strUsage += HelpMessageOpt("-rpckeepalive", strprintf(_("RPC support for HTTP persistent connections (default: %d)"), 1)); + strUsage += HelpMessageOpt("-rpcthreads=", strprintf(_("Set the number of threads to service RPC calls (default: %d)"), DEFAULT_HTTP_THREADS)); + if (showDebug) { + strUsage += HelpMessageOpt("-rpcworkqueue=", strprintf("Set the depth of the work queue to service RPC calls (default: %d)", DEFAULT_HTTP_WORKQUEUE)); + strUsage += HelpMessageOpt("-rpcservertimeout=", strprintf("Timeout during HTTP requests (default: %d)", DEFAULT_HTTP_SERVER_TIMEOUT)); + } // Disabled until we can lock notes and also tune performance of libsnark which by default uses multiple threads //strUsage += HelpMessageOpt("-rpcasyncthreads=", strprintf(_("Set the number of threads to service Async RPC calls (default: %d)"), 1)); - strUsage += HelpMessageGroup(_("RPC SSL options: (see the Bitcoin Wiki for SSL setup instructions)")); - strUsage += HelpMessageOpt("-rpcssl", _("Use OpenSSL (https) for JSON-RPC connections")); - strUsage += HelpMessageOpt("-rpcsslcertificatechainfile=", strprintf(_("Server certificate file (default: %s)"), "server.cert")); - strUsage += HelpMessageOpt("-rpcsslprivatekeyfile=", strprintf(_("Server private key (default: %s)"), "server.pem")); - strUsage += HelpMessageOpt("-rpcsslciphers=", strprintf(_("Acceptable ciphers (default: %s)"), "TLSv1.2+HIGH:TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!3DES:@STRENGTH")); - - if (mode == HMM_BITCOIN_QT) - { - strUsage += HelpMessageGroup(_("UI Options:")); - if (showDebug) { - strUsage += HelpMessageOpt("-allowselfsignedrootcertificates", "Allow self signed root certificates (default: 0)"); - } - strUsage += HelpMessageOpt("-choosedatadir", _("Choose data directory on startup (default: 0)")); - strUsage += HelpMessageOpt("-lang=", _("Set language, for example \"de_DE\" (default: system locale)")); - strUsage += HelpMessageOpt("-min", _("Start minimized")); - strUsage += HelpMessageOpt("-rootcertificates=", _("Set SSL root certificates for payment request (default: -system-)")); - strUsage += HelpMessageOpt("-splash", _("Show splash screen on startup (default: 1)")); - } else if (mode == HMM_BITCOIND) { + if (mode == HMM_BITCOIND) { strUsage += HelpMessageGroup(_("Metrics Options (only if -daemon and -printtoconsole are not set):")); strUsage += HelpMessageOpt("-showmetrics", _("Show metrics on stdout (default: 1 if running in a console, 0 otherwise)")); strUsage += HelpMessageOpt("-metricsui", _("Set to 1 for a persistent metrics screen, 0 for sequential metrics output (default: 1 if running in a console, 0 otherwise)")); @@ -570,7 +614,7 @@ void ThreadImport(std::vector vImportFiles) } // -loadblock= - BOOST_FOREACH(boost::filesystem::path &path, vImportFiles) { + BOOST_FOREACH(const boost::filesystem::path& path, vImportFiles) { FILE *file = fopen(path.string().c_str(), "rb"); if (file) { CImportingNow imp; @@ -638,6 +682,23 @@ static void ZC_LoadParams() pzcashParams->setProvingKeyPath(pk_path.string()); } +bool AppInitServers(boost::thread_group& threadGroup) +{ + RPCServer::OnStopped(&OnRPCStopped); + RPCServer::OnPreCommand(&OnRPCPreCommand); + if (!InitHTTPServer()) + return false; + if (!StartRPC()) + return false; + if (!StartHTTPRPC()) + return false; + if (GetBoolArg("-rest", false) && !StartREST()) + return false; + if (!StartHTTPServer(threadGroup)) + return false; + return true; +} + /** Initialize bitcoin. * @pre Parameters should be parsed and config file should be read. */ @@ -667,17 +728,12 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) typedef BOOL (WINAPI *PSETPROCDEPPOL)(DWORD); PSETPROCDEPPOL setProcDEPPol = (PSETPROCDEPPOL)GetProcAddress(GetModuleHandleA("Kernel32.dll"), "SetProcessDEPPolicy"); if (setProcDEPPol != NULL) setProcDEPPol(PROCESS_DEP_ENABLE); - - // Initialize Windows Sockets - WSADATA wsadata; - int ret = WSAStartup(MAKEWORD(2,2), &wsadata); - if (ret != NO_ERROR || LOBYTE(wsadata.wVersion ) != 2 || HIBYTE(wsadata.wVersion) != 2) - { - return InitError(strprintf("Error: Winsock library failed to start (WSAStartup returned error %d)", ret)); - } #endif -#ifndef WIN32 + if (!SetupNetworking()) + return InitError("Error: Initializing networking failed"); + +#ifndef WIN32 if (GetBoolArg("-sysperms", false)) { #ifdef ENABLE_WALLET if (!GetBoolArg("-disablewallet", false)) @@ -702,20 +758,31 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) sa_hup.sa_flags = 0; sigaction(SIGHUP, &sa_hup, NULL); -#if defined (__SVR4) && defined (__sun) - // ignore SIGPIPE on Solaris + // Ignore SIGPIPE, otherwise it will bring the daemon down if the client closes unexpectedly signal(SIGPIPE, SIG_IGN); -#endif #endif // ********************************************************* Step 2: parameter interactions const CChainParams& chainparams = Params(); + // Set this early so that experimental features are correctly enabled/disabled + fExperimentalMode = GetBoolArg("-experimentalfeatures", false); + + // Fail early if user has set experimental options without the global flag + if (!fExperimentalMode) { + if (mapArgs.count("-developerencryptwallet")) { + return InitError(_("Wallet encryption requires -experimentalfeatures.")); + } + } + // Set this early so that parameter interactions go to console fPrintToConsole = GetBoolArg("-printtoconsole", false); fLogTimestamps = GetBoolArg("-logtimestamps", true); fLogIPs = GetBoolArg("-logips", false); + LogPrintf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); + LogPrintf("Zcash version %s (%s)\n", FormatFullVersion(), CLIENT_DATE); + // when specifying an explicit binding address, you want to listen on it // even when -connect or -proxy is specified if (mapArgs.count("-bind")) { @@ -754,6 +821,8 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) LogPrintf("%s: parameter interaction: -listen=0 -> setting -upnp=0\n", __func__); if (SoftSetBoolArg("-discover", false)) LogPrintf("%s: parameter interaction: -listen=0 -> setting -discover=0\n", __func__); + if (SoftSetBoolArg("-listenonion", false)) + LogPrintf("%s: parameter interaction: -listen=0 -> setting -listenonion=0\n", __func__); } if (mapArgs.count("-externalip")) { @@ -776,7 +845,7 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) // Make sure enough file descriptors are available int nBind = std::max((int)mapArgs.count("-bind") + (int)mapArgs.count("-whitebind"), 1); - nMaxConnections = GetArg("-maxconnections", 125); + nMaxConnections = GetArg("-maxconnections", DEFAULT_MAX_PEER_CONNECTIONS); nMaxConnections = std::max(std::min(nMaxConnections, (int)(FD_SETSIZE - nBind - MIN_CORE_FILEDESCRIPTORS)), 0); int nFD = RaiseFileDescriptorLimit(nMaxConnections + MIN_CORE_FILEDESCRIPTORS); if (nFD < MIN_CORE_FILEDESCRIPTORS) @@ -807,6 +876,15 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) if (GetBoolArg("-nodebug", false) || find(categories.begin(), categories.end(), string("0")) != categories.end()) fDebug = false; + // Special case: if debug=zrpcunsafe, implies debug=zrpc, so add it to debug categories + if (find(categories.begin(), categories.end(), string("zrpcunsafe")) != categories.end()) { + if (find(categories.begin(), categories.end(), string("zrpc")) == categories.end()) { + LogPrintf("%s: parameter interaction: setting -debug=zrpcunsafe -> -debug=zrpc\n", __func__); + vector& v = mapMultiArgs["-debug"]; + v.push_back("zrpc"); + } + } + // Check for -debugnet if (GetBoolArg("-debugnet", false)) InitWarning(_("Warning: Unsupported argument -debugnet ignored, use -debug=net.")); @@ -922,6 +1000,20 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) fAlerts = GetBoolArg("-alerts", DEFAULT_ALERTS); + // Option to startup with mocktime set (used for regression testing): + SetMockTime(GetArg("-mocktime", 0)); // SetMockTime(0) is a no-op + +#ifdef ENABLE_MINING + if (mapArgs.count("-mineraddress")) { + CBitcoinAddress addr; + if (!addr.SetString(mapArgs["-mineraddress"])) { + return InitError(strprintf( + _("Invalid address for -mineraddress=: '%s' (must be a transparent address)"), + mapArgs["-mineraddress"])); + } + } +#endif + // ********************************************************* Step 4: application initialization: dir lock, daemonize, pidfile, debug log // Initialize libsodium @@ -962,6 +1054,9 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) ShrinkDebugFile(); LogPrintf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); LogPrintf("Komodo version %s (%s)\n", FormatFullVersion(), CLIENT_DATE); + + if (fPrintToDebugLog) + OpenDebugLog(); LogPrintf("Using OpenSSL version %s\n", SSLeay_version(SSLEAY_VERSION)); #ifdef ENABLE_WALLET LogPrintf("Using BerkeleyDB version %s\n", DbEnv::version(0, 0, 0)); @@ -1011,9 +1106,8 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) if (fServer) { uiInterface.InitMessage.connect(SetRPCWarmupStatus); - RPCServer::OnStopped(&OnRPCStopped); - RPCServer::OnPreCommand(&OnRPCPreCommand); - StartRPCThreads(); + if (!AppInitServers(threadGroup)) + return InitError(_("Unable to start HTTP server. See debug log for details.")); } int64_t nStart; @@ -1026,15 +1120,15 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) std::string warningString; std::string errorString; - + if (!CWallet::Verify(strWalletFile, warningString, errorString)) return false; - + if (!warningString.empty()) InitWarning(warningString); if (!errorString.empty()) return InitError(warningString); - + } // (!fDisableWallet) #endif // ENABLE_WALLET // ********************************************************* Step 6: network initialization @@ -1043,7 +1137,7 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) if (mapArgs.count("-onlynet")) { std::set nets; - BOOST_FOREACH(std::string snet, mapMultiArgs["-onlynet"]) { + BOOST_FOREACH(const std::string& snet, mapMultiArgs["-onlynet"]) { enum Network net = ParseNetwork(snet); if (net == NET_UNROUTABLE) return InitError(strprintf(_("Unknown network specified in -onlynet: '%s'"), snet)); @@ -1065,31 +1159,37 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) } } - proxyType addrProxy; - bool fProxy = false; - if (mapArgs.count("-proxy")) { - addrProxy = proxyType(CService(mapArgs["-proxy"], 9050), GetBoolArg("-proxyrandomize", true)); + bool proxyRandomize = GetBoolArg("-proxyrandomize", true); + // -proxy sets a proxy for all outgoing network traffic + // -noproxy (or -proxy=0) as well as the empty string can be used to not set a proxy, this is the default + std::string proxyArg = GetArg("-proxy", ""); + SetLimited(NET_TOR); + if (proxyArg != "" && proxyArg != "0") { + proxyType addrProxy = proxyType(CService(proxyArg, 9050), proxyRandomize); if (!addrProxy.IsValid()) - return InitError(strprintf(_("Invalid -proxy address: '%s'"), mapArgs["-proxy"])); + return InitError(strprintf(_("Invalid -proxy address: '%s'"), proxyArg)); SetProxy(NET_IPV4, addrProxy); SetProxy(NET_IPV6, addrProxy); + SetProxy(NET_TOR, addrProxy); SetNameProxy(addrProxy); - fProxy = true; + SetLimited(NET_TOR, false); // by default, -proxy sets onion as reachable, unless -noonion later } - // -onion can override normal proxy, -noonion disables connecting to .onion entirely - if (!(mapArgs.count("-onion") && mapArgs["-onion"] == "0") && - (fProxy || mapArgs.count("-onion"))) { - proxyType addrOnion; - if (!mapArgs.count("-onion")) - addrOnion = addrProxy; - else - addrOnion = proxyType(CService(mapArgs["-onion"], 9050), GetBoolArg("-proxyrandomize", true)); - if (!addrOnion.IsValid()) - return InitError(strprintf(_("Invalid -onion address: '%s'"), mapArgs["-onion"])); - SetProxy(NET_TOR, addrOnion); - SetReachable(NET_TOR); + // -onion can be used to set only a proxy for .onion, or override normal proxy for .onion addresses + // -noonion (or -onion=0) disables connecting to .onion entirely + // An empty string is used to not override the onion proxy (in which case it defaults to -proxy set above, or none) + std::string onionArg = GetArg("-onion", ""); + if (onionArg != "") { + if (onionArg == "0") { // Handle -noonion/-onion=0 + SetLimited(NET_TOR); // set onions as unreachable + } else { + proxyType addrOnion = proxyType(CService(onionArg, 9050), proxyRandomize); + if (!addrOnion.IsValid()) + return InitError(strprintf(_("Invalid -onion address: '%s'"), onionArg)); + SetProxy(NET_TOR, addrOnion); + SetLimited(NET_TOR, false); + } } // see Step 2: parameter interactions for more information about these @@ -1100,13 +1200,13 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) bool fBound = false; if (fListen) { if (mapArgs.count("-bind") || mapArgs.count("-whitebind")) { - BOOST_FOREACH(std::string strBind, mapMultiArgs["-bind"]) { + BOOST_FOREACH(const std::string& strBind, mapMultiArgs["-bind"]) { CService addrBind; if (!Lookup(strBind.c_str(), addrBind, GetListenPort(), false)) return InitError(strprintf(_("Cannot resolve -bind address: '%s'"), strBind)); fBound |= Bind(addrBind, (BF_EXPLICIT | BF_REPORT_ERROR)); } - BOOST_FOREACH(std::string strBind, mapMultiArgs["-whitebind"]) { + BOOST_FOREACH(const std::string& strBind, mapMultiArgs["-whitebind"]) { CService addrBind; if (!Lookup(strBind.c_str(), addrBind, 0, false)) return InitError(strprintf(_("Cannot resolve -whitebind address: '%s'"), strBind)); @@ -1126,7 +1226,7 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) } if (mapArgs.count("-externalip")) { - BOOST_FOREACH(string strAddr, mapMultiArgs["-externalip"]) { + BOOST_FOREACH(const std::string& strAddr, mapMultiArgs["-externalip"]) { CService addrLocal(strAddr, GetListenPort(), fNameLookup); if (!addrLocal.IsValid()) return InitError(strprintf(_("Cannot resolve -externalip address: '%s'"), strAddr)); @@ -1134,9 +1234,17 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) } } - BOOST_FOREACH(string strDest, mapMultiArgs["-seednode"]) + BOOST_FOREACH(const std::string& strDest, mapMultiArgs["-seednode"]) AddOneShot(strDest); +#if ENABLE_ZMQ + pzmqNotificationInterface = CZMQNotificationInterface::CreateWithArguments(mapArgs); + + if (pzmqNotificationInterface) { + RegisterValidationInterface(pzmqNotificationInterface); + } +#endif + // ********************************************************* Step 7: load block chain fReindex = GetBoolArg("-reindex", false); @@ -1371,8 +1479,6 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) if (fFirstRun) { // Create new keyUser and set as default key - RandAddSeedPerfmon(); - CPubKey newDefaultKey; if (pwalletMain->GetKeyFromPool(newDefaultKey)) { pwalletMain->SetDefaultKey(newDefaultKey); @@ -1444,6 +1550,33 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) LogPrintf("No wallet support compiled in!\n"); #endif // !ENABLE_WALLET +#ifdef ENABLE_MINING + #ifndef ENABLE_WALLET + if (GetBoolArg("-minetolocalwallet", false)) { + return InitError(_("Zcash was not built with wallet support. Set -minetolocalwallet=0 to use -mineraddress, or rebuild Zcash with wallet support.")); + } + if (GetArg("-mineraddress", "").empty() && GetBoolArg("-gen", false)) { + return InitError(_("Zcash was not built with wallet support. Set -mineraddress, or rebuild Zcash with wallet support.")); + } + #endif // !ENABLE_WALLET + + if (mapArgs.count("-mineraddress")) { + #ifdef ENABLE_WALLET + bool minerAddressInLocalWallet = false; + if (pwalletMain) { + // Address has alreday been validated + CBitcoinAddress addr(mapArgs["-mineraddress"]); + CKeyID keyID; + addr.GetKeyID(keyID); + minerAddressInLocalWallet = pwalletMain->HaveKey(keyID); + } + if (GetBoolArg("-minetolocalwallet", true) && !minerAddressInLocalWallet) { + return InitError(_("-mineraddress is not in the local wallet. Either use a local address, or set -minetolocalwallet=0")); + } + #endif // ENABLE_WALLET + } +#endif // ENABLE_MINING + // ********************************************************* Step 9: data directory maintenance // if pruning, unset the service bit and perform the initial blockstore prune @@ -1472,7 +1605,7 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) std::vector vImportFiles; if (mapArgs.count("-loadblock")) { - BOOST_FOREACH(string strFile, mapMultiArgs["-loadblock"]) + BOOST_FOREACH(const std::string& strFile, mapMultiArgs["-loadblock"]) vImportFiles.push_back(strFile); } threadGroup.create_thread(boost::bind(&ThreadImport, vImportFiles)); @@ -1490,8 +1623,6 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) if (!strErrors.str().empty()) return InitError(strErrors.str()); - RandAddSeedPerfmon(); - //// debug print LogPrintf("mapBlockIndex.size() = %u\n", mapBlockIndex.size()); LogPrintf("nBestHeight = %d\n", chainActive.Height()); @@ -1501,6 +1632,9 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) LogPrintf("mapAddressBook.size() = %u\n", pwalletMain ? pwalletMain->mapAddressBook.size() : 0); #endif + if (GetBoolArg("-listenonion", DEFAULT_LISTEN_ONION)) + StartTorControl(threadGroup, scheduler); + StartNode(threadGroup, scheduler); // Monitor the chain, and alert if we get blocks much quicker or slower than expected @@ -1509,10 +1643,14 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) boost::ref(cs_main), boost::cref(pindexBestHeader), nPowTargetSpacing); scheduler.scheduleEvery(f, nPowTargetSpacing); -#ifdef ENABLE_WALLET +#ifdef ENABLE_MINING // Generate coins in the background - if (pwalletMain) + #ifdef ENABLE_WALLET + if (pwalletMain || !GetArg("-mineraddress", "").empty()) GenerateBitcoins(GetBoolArg("-gen", false), pwalletMain, GetArg("-genproclimit", 1)); + #else + GenerateBitcoins(GetBoolArg("-gen", false), GetArg("-genproclimit", 1)); + #endif #endif // ********************************************************* Step 11: finished diff --git a/src/init.h b/src/init.h index 34290b276..710e43c69 100644 --- a/src/init.h +++ b/src/init.h @@ -23,13 +23,14 @@ extern ZCJoinSplit* pzcashParams; void StartShutdown(); bool ShutdownRequested(); +/** Interrupt threads */ +void Interrupt(boost::thread_group& threadGroup); void Shutdown(); bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler); /** The help message mode determines what help message to show */ enum HelpMessageMode { - HMM_BITCOIND, - HMM_BITCOIN_QT + HMM_BITCOIND }; /** Help for options shared between UI and daemon (for -help) */ diff --git a/src/json/LICENSE.txt b/src/json/LICENSE.txt deleted file mode 100644 index 797d5363b..000000000 --- a/src/json/LICENSE.txt +++ /dev/null @@ -1,24 +0,0 @@ -The MIT License - -Copyright (c) 2007 - 2009 John W. Wilkinson - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. diff --git a/src/json/json_spirit.h b/src/json/json_spirit.h deleted file mode 100644 index ac1879d5b..000000000 --- a/src/json/json_spirit.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef JSON_SPIRIT -#define JSON_SPIRIT - -// Copyright John W. Wilkinson 2007 - 2009. -// Distributed under the MIT License, see accompanying file LICENSE.txt - -// json spirit version 4.03 - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#include "json_spirit_value.h" -#include "json_spirit_reader.h" -#include "json_spirit_writer.h" -#include "json_spirit_utils.h" - -#endif diff --git a/src/json/json_spirit_error_position.h b/src/json/json_spirit_error_position.h deleted file mode 100644 index 17208507d..000000000 --- a/src/json/json_spirit_error_position.h +++ /dev/null @@ -1,54 +0,0 @@ -#ifndef JSON_SPIRIT_ERROR_POSITION -#define JSON_SPIRIT_ERROR_POSITION - -// Copyright John W. Wilkinson 2007 - 2009. -// Distributed under the MIT License, see accompanying file LICENSE.txt - -// json spirit version 4.03 - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#include - -namespace json_spirit -{ - // An Error_position exception is thrown by the "read_or_throw" functions below on finding an error. - // Note the "read_or_throw" functions are around 3 times slower than the standard functions "read" - // functions that return a bool. - // - struct Error_position - { - Error_position(); - Error_position( unsigned int line, unsigned int column, const std::string& reason ); - bool operator==( const Error_position& lhs ) const; - unsigned int line_; - unsigned int column_; - std::string reason_; - }; - - inline Error_position::Error_position() - : line_( 0 ) - , column_( 0 ) - { - } - - inline Error_position::Error_position( unsigned int line, unsigned int column, const std::string& reason ) - : line_( line ) - , column_( column ) - , reason_( reason ) - { - } - - inline bool Error_position::operator==( const Error_position& lhs ) const - { - if( this == &lhs ) return true; - - return ( reason_ == lhs.reason_ ) && - ( line_ == lhs.line_ ) && - ( column_ == lhs.column_ ); -} -} - -#endif diff --git a/src/json/json_spirit_reader.cpp b/src/json/json_spirit_reader.cpp deleted file mode 100644 index aa4f63722..000000000 --- a/src/json/json_spirit_reader.cpp +++ /dev/null @@ -1,137 +0,0 @@ -// Copyright John W. Wilkinson 2007 - 2009. -// Distributed under the MIT License, see accompanying file LICENSE.txt - -// json spirit version 4.03 - -#include "json_spirit_reader.h" -#include "json_spirit_reader_template.h" - -using namespace json_spirit; - -bool json_spirit::read( const std::string& s, Value& value ) -{ - return read_string( s, value ); -} - -void json_spirit::read_or_throw( const std::string& s, Value& value ) -{ - read_string_or_throw( s, value ); -} - -bool json_spirit::read( std::istream& is, Value& value ) -{ - return read_stream( is, value ); -} - -void json_spirit::read_or_throw( std::istream& is, Value& value ) -{ - read_stream_or_throw( is, value ); -} - -bool json_spirit::read( std::string::const_iterator& begin, std::string::const_iterator end, Value& value ) -{ - return read_range( begin, end, value ); -} - -void json_spirit::read_or_throw( std::string::const_iterator& begin, std::string::const_iterator end, Value& value ) -{ - begin = read_range_or_throw( begin, end, value ); -} - -#ifndef BOOST_NO_STD_WSTRING - -bool json_spirit::read( const std::wstring& s, wValue& value ) -{ - return read_string( s, value ); -} - -void json_spirit::read_or_throw( const std::wstring& s, wValue& value ) -{ - read_string_or_throw( s, value ); -} - -bool json_spirit::read( std::wistream& is, wValue& value ) -{ - return read_stream( is, value ); -} - -void json_spirit::read_or_throw( std::wistream& is, wValue& value ) -{ - read_stream_or_throw( is, value ); -} - -bool json_spirit::read( std::wstring::const_iterator& begin, std::wstring::const_iterator end, wValue& value ) -{ - return read_range( begin, end, value ); -} - -void json_spirit::read_or_throw( std::wstring::const_iterator& begin, std::wstring::const_iterator end, wValue& value ) -{ - begin = read_range_or_throw( begin, end, value ); -} - -#endif - -bool json_spirit::read( const std::string& s, mValue& value ) -{ - return read_string( s, value ); -} - -void json_spirit::read_or_throw( const std::string& s, mValue& value ) -{ - read_string_or_throw( s, value ); -} - -bool json_spirit::read( std::istream& is, mValue& value ) -{ - return read_stream( is, value ); -} - -void json_spirit::read_or_throw( std::istream& is, mValue& value ) -{ - read_stream_or_throw( is, value ); -} - -bool json_spirit::read( std::string::const_iterator& begin, std::string::const_iterator end, mValue& value ) -{ - return read_range( begin, end, value ); -} - -void json_spirit::read_or_throw( std::string::const_iterator& begin, std::string::const_iterator end, mValue& value ) -{ - begin = read_range_or_throw( begin, end, value ); -} - -#ifndef BOOST_NO_STD_WSTRING - -bool json_spirit::read( const std::wstring& s, wmValue& value ) -{ - return read_string( s, value ); -} - -void json_spirit::read_or_throw( const std::wstring& s, wmValue& value ) -{ - read_string_or_throw( s, value ); -} - -bool json_spirit::read( std::wistream& is, wmValue& value ) -{ - return read_stream( is, value ); -} - -void json_spirit::read_or_throw( std::wistream& is, wmValue& value ) -{ - read_stream_or_throw( is, value ); -} - -bool json_spirit::read( std::wstring::const_iterator& begin, std::wstring::const_iterator end, wmValue& value ) -{ - return read_range( begin, end, value ); -} - -void json_spirit::read_or_throw( std::wstring::const_iterator& begin, std::wstring::const_iterator end, wmValue& value ) -{ - begin = read_range_or_throw( begin, end, value ); -} - -#endif diff --git a/src/json/json_spirit_reader.h b/src/json/json_spirit_reader.h deleted file mode 100644 index 96494a978..000000000 --- a/src/json/json_spirit_reader.h +++ /dev/null @@ -1,62 +0,0 @@ -#ifndef JSON_SPIRIT_READER -#define JSON_SPIRIT_READER - -// Copyright John W. Wilkinson 2007 - 2009. -// Distributed under the MIT License, see accompanying file LICENSE.txt - -// json spirit version 4.03 - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#include "json_spirit_value.h" -#include "json_spirit_error_position.h" -#include - -namespace json_spirit -{ - // functions to reads a JSON values - - bool read( const std::string& s, Value& value ); - bool read( std::istream& is, Value& value ); - bool read( std::string::const_iterator& begin, std::string::const_iterator end, Value& value ); - - void read_or_throw( const std::string& s, Value& value ); - void read_or_throw( std::istream& is, Value& value ); - void read_or_throw( std::string::const_iterator& begin, std::string::const_iterator end, Value& value ); - -#ifndef BOOST_NO_STD_WSTRING - - bool read( const std::wstring& s, wValue& value ); - bool read( std::wistream& is, wValue& value ); - bool read( std::wstring::const_iterator& begin, std::wstring::const_iterator end, wValue& value ); - - void read_or_throw( const std::wstring& s, wValue& value ); - void read_or_throw( std::wistream& is, wValue& value ); - void read_or_throw( std::wstring::const_iterator& begin, std::wstring::const_iterator end, wValue& value ); - -#endif - - bool read( const std::string& s, mValue& value ); - bool read( std::istream& is, mValue& value ); - bool read( std::string::const_iterator& begin, std::string::const_iterator end, mValue& value ); - - void read_or_throw( const std::string& s, mValue& value ); - void read_or_throw( std::istream& is, mValue& value ); - void read_or_throw( std::string::const_iterator& begin, std::string::const_iterator end, mValue& value ); - -#ifndef BOOST_NO_STD_WSTRING - - bool read( const std::wstring& s, wmValue& value ); - bool read( std::wistream& is, wmValue& value ); - bool read( std::wstring::const_iterator& begin, std::wstring::const_iterator end, wmValue& value ); - - void read_or_throw( const std::wstring& s, wmValue& value ); - void read_or_throw( std::wistream& is, wmValue& value ); - void read_or_throw( std::wstring::const_iterator& begin, std::wstring::const_iterator end, wmValue& value ); - -#endif -} - -#endif diff --git a/src/json/json_spirit_reader_template.h b/src/json/json_spirit_reader_template.h deleted file mode 100644 index 33aa0958e..000000000 --- a/src/json/json_spirit_reader_template.h +++ /dev/null @@ -1,618 +0,0 @@ -#ifndef JSON_SPIRIT_READER_TEMPLATE -#define JSON_SPIRIT_READER_TEMPLATE - -// Copyright John W. Wilkinson 2007 - 2009. -// Distributed under the MIT License, see accompanying file LICENSE.txt - -// json spirit version 4.03 - -#include "json_spirit_value.h" -#include "json_spirit_error_position.h" - -//#define BOOST_SPIRIT_THREADSAFE // uncomment for multithreaded use, requires linking to boost.thread - -#include -#include -#include - -#if BOOST_VERSION >= 103800 - #include - #include - #include - #include - #include - #define spirit_namespace boost::spirit::classic -#else - #include - #include - #include - #include - #include - #define spirit_namespace boost::spirit -#endif - -namespace json_spirit -{ - const spirit_namespace::int_parser < int64_t > int64_p = spirit_namespace::int_parser < int64_t >(); - const spirit_namespace::uint_parser< uint64_t > uint64_p = spirit_namespace::uint_parser< uint64_t >(); - - template< class Iter_type > - bool is_eq( Iter_type first, Iter_type last, const char* c_str ) - { - for( Iter_type i = first; i != last; ++i, ++c_str ) - { - if( *c_str == 0 ) return false; - - if( *i != *c_str ) return false; - } - - return true; - } - - template< class Char_type > - Char_type hex_to_num( const Char_type c ) - { - if( ( c >= '0' ) && ( c <= '9' ) ) return c - '0'; - if( ( c >= 'a' ) && ( c <= 'f' ) ) return c - 'a' + 10; - if( ( c >= 'A' ) && ( c <= 'F' ) ) return c - 'A' + 10; - return 0; - } - - template< class Char_type, class Iter_type > - Char_type hex_str_to_char( Iter_type& begin ) - { - const Char_type c1( *( ++begin ) ); - const Char_type c2( *( ++begin ) ); - - return ( hex_to_num( c1 ) << 4 ) + hex_to_num( c2 ); - } - - template< class Char_type, class Iter_type > - Char_type unicode_str_to_char( Iter_type& begin ) - { - const Char_type c1( *( ++begin ) ); - const Char_type c2( *( ++begin ) ); - const Char_type c3( *( ++begin ) ); - const Char_type c4( *( ++begin ) ); - - return ( hex_to_num( c1 ) << 12 ) + - ( hex_to_num( c2 ) << 8 ) + - ( hex_to_num( c3 ) << 4 ) + - hex_to_num( c4 ); - } - - template< class String_type > - void append_esc_char_and_incr_iter( String_type& s, - typename String_type::const_iterator& begin, - typename String_type::const_iterator end ) - { - typedef typename String_type::value_type Char_type; - - const Char_type c2( *begin ); - - switch( c2 ) - { - case 't': s += '\t'; break; - case 'b': s += '\b'; break; - case 'f': s += '\f'; break; - case 'n': s += '\n'; break; - case 'r': s += '\r'; break; - case '\\': s += '\\'; break; - case '/': s += '/'; break; - case '"': s += '"'; break; - case 'x': - { - if( end - begin >= 3 ) // expecting "xHH..." - { - s += hex_str_to_char< Char_type >( begin ); - } - break; - } - case 'u': - { - if( end - begin >= 5 ) // expecting "uHHHH..." - { - s += unicode_str_to_char< Char_type >( begin ); - } - break; - } - } - } - - template< class String_type > - String_type substitute_esc_chars( typename String_type::const_iterator begin, - typename String_type::const_iterator end ) - { - typedef typename String_type::const_iterator Iter_type; - - if( end - begin < 2 ) return String_type( begin, end ); - - String_type result; - - result.reserve( end - begin ); - - const Iter_type end_minus_1( end - 1 ); - - Iter_type substr_start = begin; - Iter_type i = begin; - - for( ; i < end_minus_1; ++i ) - { - if( *i == '\\' ) - { - result.append( substr_start, i ); - - ++i; // skip the '\' - - append_esc_char_and_incr_iter( result, i, end ); - - substr_start = i + 1; - } - } - - result.append( substr_start, end ); - - return result; - } - - template< class String_type > - String_type get_str_( typename String_type::const_iterator begin, - typename String_type::const_iterator end ) - { - assert( end - begin >= 2 ); - - typedef typename String_type::const_iterator Iter_type; - - Iter_type str_without_quotes( ++begin ); - Iter_type end_without_quotes( --end ); - - return substitute_esc_chars< String_type >( str_without_quotes, end_without_quotes ); - } - - inline std::string get_str( std::string::const_iterator begin, std::string::const_iterator end ) - { - return get_str_< std::string >( begin, end ); - } - - inline std::wstring get_str( std::wstring::const_iterator begin, std::wstring::const_iterator end ) - { - return get_str_< std::wstring >( begin, end ); - } - - template< class String_type, class Iter_type > - String_type get_str( Iter_type begin, Iter_type end ) - { - const String_type tmp( begin, end ); // convert multipass iterators to string iterators - - return get_str( tmp.begin(), tmp.end() ); - } - - // this class's methods get called by the spirit parse resulting - // in the creation of a JSON object or array - // - // NB Iter_type could be a std::string iterator, wstring iterator, a position iterator or a multipass iterator - // - template< class Value_type, class Iter_type > - class Semantic_actions - { - public: - - typedef typename Value_type::Config_type Config_type; - typedef typename Config_type::String_type String_type; - typedef typename Config_type::Object_type Object_type; - typedef typename Config_type::Array_type Array_type; - typedef typename String_type::value_type Char_type; - - Semantic_actions( Value_type& value ) - : value_( value ) - , current_p_( 0 ) - { - } - - void begin_obj( Char_type c ) - { - assert( c == '{' ); - - begin_compound< Object_type >(); - } - - void end_obj( Char_type c ) - { - assert( c == '}' ); - - end_compound(); - } - - void begin_array( Char_type c ) - { - assert( c == '[' ); - - begin_compound< Array_type >(); - } - - void end_array( Char_type c ) - { - assert( c == ']' ); - - end_compound(); - } - - void new_name( Iter_type begin, Iter_type end ) - { - assert( current_p_->type() == obj_type ); - - name_ = get_str< String_type >( begin, end ); - } - - void new_str( Iter_type begin, Iter_type end ) - { - add_to_current( get_str< String_type >( begin, end ) ); - } - - void new_true( Iter_type begin, Iter_type end ) - { - assert( is_eq( begin, end, "true" ) ); - - add_to_current( true ); - } - - void new_false( Iter_type begin, Iter_type end ) - { - assert( is_eq( begin, end, "false" ) ); - - add_to_current( false ); - } - - void new_null( Iter_type begin, Iter_type end ) - { - assert( is_eq( begin, end, "null" ) ); - - add_to_current( Value_type() ); - } - - void new_int( int64_t i ) - { - add_to_current( i ); - } - - void new_uint64( uint64_t ui ) - { - add_to_current( ui ); - } - - void new_real( double d ) - { - add_to_current( d ); - } - - private: - - Semantic_actions& operator=( const Semantic_actions& ); - // to prevent "assignment operator could not be generated" warning - - Value_type* add_first( const Value_type& value ) - { - assert( current_p_ == 0 ); - - value_ = value; - current_p_ = &value_; - return current_p_; - } - - template< class Array_or_obj > - void begin_compound() - { - if( current_p_ == 0 ) - { - add_first( Array_or_obj() ); - } - else - { - // ZCASH: Prevent potential stack overflow by setting a limit on the number of nested compound elements - if (stack_.size() > 128) { - throw std::domain_error("too many nested elements"); - } - // ENDZCASH - - stack_.push_back( current_p_ ); - - Array_or_obj new_array_or_obj; // avoid copy by building new array or object in place - - current_p_ = add_to_current( new_array_or_obj ); - } - } - - void end_compound() - { - if( current_p_ != &value_ ) - { - current_p_ = stack_.back(); - - stack_.pop_back(); - } - } - - Value_type* add_to_current( const Value_type& value ) - { - if( current_p_ == 0 ) - { - return add_first( value ); - } - else if( current_p_->type() == array_type ) - { - current_p_->get_array().push_back( value ); - - return ¤t_p_->get_array().back(); - } - - assert( current_p_->type() == obj_type ); - - return &Config_type::add( current_p_->get_obj(), name_, value ); - } - - Value_type& value_; // this is the object or array that is being created - Value_type* current_p_; // the child object or array that is currently being constructed - - std::vector< Value_type* > stack_; // previous child objects and arrays - - String_type name_; // of current name/value pair - }; - - template< typename Iter_type > - void throw_error( spirit_namespace::position_iterator< Iter_type > i, const std::string& reason ) - { - throw Error_position( i.get_position().line, i.get_position().column, reason ); - } - - template< typename Iter_type > - void throw_error( Iter_type i, const std::string& reason ) - { - throw reason; - } - - // the spirit grammer - // - template< class Value_type, class Iter_type > - class Json_grammer : public spirit_namespace::grammar< Json_grammer< Value_type, Iter_type > > - { - public: - - typedef Semantic_actions< Value_type, Iter_type > Semantic_actions_t; - - Json_grammer( Semantic_actions_t& semantic_actions ) - : actions_( semantic_actions ) - { - } - - static void throw_not_value( Iter_type begin, Iter_type end ) - { - throw_error( begin, "not a value" ); - } - - static void throw_not_array( Iter_type begin, Iter_type end ) - { - throw_error( begin, "not an array" ); - } - - static void throw_not_object( Iter_type begin, Iter_type end ) - { - throw_error( begin, "not an object" ); - } - - static void throw_not_pair( Iter_type begin, Iter_type end ) - { - throw_error( begin, "not a pair" ); - } - - static void throw_not_colon( Iter_type begin, Iter_type end ) - { - throw_error( begin, "no colon in pair" ); - } - - static void throw_not_string( Iter_type begin, Iter_type end ) - { - throw_error( begin, "not a string" ); - } - - template< typename ScannerT > - class definition - { - public: - - definition( const Json_grammer& self ) - { - using namespace spirit_namespace; - - typedef typename Value_type::String_type::value_type Char_type; - - // first we convert the semantic action class methods to functors with the - // parameter signature expected by spirit - - typedef boost::function< void( Char_type ) > Char_action; - typedef boost::function< void( Iter_type, Iter_type ) > Str_action; - typedef boost::function< void( double ) > Real_action; - typedef boost::function< void( int64_t ) > Int_action; - typedef boost::function< void( uint64_t ) > Uint64_action; - - Char_action begin_obj ( boost::bind( &Semantic_actions_t::begin_obj, &self.actions_, _1 ) ); - Char_action end_obj ( boost::bind( &Semantic_actions_t::end_obj, &self.actions_, _1 ) ); - Char_action begin_array( boost::bind( &Semantic_actions_t::begin_array, &self.actions_, _1 ) ); - Char_action end_array ( boost::bind( &Semantic_actions_t::end_array, &self.actions_, _1 ) ); - Str_action new_name ( boost::bind( &Semantic_actions_t::new_name, &self.actions_, _1, _2 ) ); - Str_action new_str ( boost::bind( &Semantic_actions_t::new_str, &self.actions_, _1, _2 ) ); - Str_action new_true ( boost::bind( &Semantic_actions_t::new_true, &self.actions_, _1, _2 ) ); - Str_action new_false ( boost::bind( &Semantic_actions_t::new_false, &self.actions_, _1, _2 ) ); - Str_action new_null ( boost::bind( &Semantic_actions_t::new_null, &self.actions_, _1, _2 ) ); - Real_action new_real ( boost::bind( &Semantic_actions_t::new_real, &self.actions_, _1 ) ); - Int_action new_int ( boost::bind( &Semantic_actions_t::new_int, &self.actions_, _1 ) ); - Uint64_action new_uint64 ( boost::bind( &Semantic_actions_t::new_uint64, &self.actions_, _1 ) ); - - // actual grammer - - json_ - = value_ | eps_p[ &throw_not_value ] - ; - - value_ - = string_[ new_str ] - | number_ - | object_ - | array_ - | str_p( "true" ) [ new_true ] - | str_p( "false" )[ new_false ] - | str_p( "null" ) [ new_null ] - ; - - object_ - = ch_p('{')[ begin_obj ] - >> !members_ - >> ( ch_p('}')[ end_obj ] | eps_p[ &throw_not_object ] ) - ; - - members_ - = pair_ >> *( ',' >> pair_ ) - ; - - pair_ - = string_[ new_name ] - >> ( ':' | eps_p[ &throw_not_colon ] ) - >> ( value_ | eps_p[ &throw_not_value ] ) - ; - - array_ - = ch_p('[')[ begin_array ] - >> !elements_ - >> ( ch_p(']')[ end_array ] | eps_p[ &throw_not_array ] ) - ; - - elements_ - = value_ >> *( ',' >> value_ ) - ; - - string_ - = lexeme_d // this causes white space inside a string to be retained - [ - confix_p - ( - '"', - *lex_escape_ch_p, - '"' - ) - ] - ; - - number_ - = strict_real_p[ new_real ] - | int64_p [ new_int ] - | uint64_p [ new_uint64 ] - ; - } - - spirit_namespace::rule< ScannerT > json_, object_, members_, pair_, array_, elements_, value_, string_, number_; - - const spirit_namespace::rule< ScannerT >& start() const { return json_; } - }; - - private: - - Json_grammer& operator=( const Json_grammer& ); // to prevent "assignment operator could not be generated" warning - - Semantic_actions_t& actions_; - }; - - template< class Iter_type, class Value_type > - Iter_type read_range_or_throw( Iter_type begin, Iter_type end, Value_type& value ) - { - Semantic_actions< Value_type, Iter_type > semantic_actions( value ); - - const spirit_namespace::parse_info< Iter_type > info = - spirit_namespace::parse( begin, end, - Json_grammer< Value_type, Iter_type >( semantic_actions ) >> spirit_namespace::end_p, - spirit_namespace::space_p ); - - if( !info.hit ) - { - throw_error( info.stop, "error" ); - } - - return info.stop; - } - - template< class Iter_type, class Value_type > - void add_posn_iter_and_read_range_or_throw( Iter_type begin, Iter_type end, Value_type& value ) - { - typedef spirit_namespace::position_iterator< Iter_type > Posn_iter_t; - - const Posn_iter_t posn_begin( begin, end ); - const Posn_iter_t posn_end( end, end ); - - read_range_or_throw( posn_begin, posn_end, value ); - } - - template< class Iter_type, class Value_type > - bool read_range( Iter_type& begin, Iter_type end, Value_type& value ) - { - try - { - begin = read_range_or_throw( begin, end, value ); - - return true; - } - catch( ... ) - { - return false; - } - } - - template< class String_type, class Value_type > - void read_string_or_throw( const String_type& s, Value_type& value ) - { - add_posn_iter_and_read_range_or_throw( s.begin(), s.end(), value ); - } - - template< class String_type, class Value_type > - bool read_string( const String_type& s, Value_type& value ) - { - typename String_type::const_iterator begin = s.begin(); - - bool success = read_range( begin, s.end(), value ); - return success && begin == s.end(); - } - - template< class Istream_type > - struct Multi_pass_iters - { - typedef typename Istream_type::char_type Char_type; - typedef std::istream_iterator< Char_type, Char_type > istream_iter; - typedef spirit_namespace::multi_pass< istream_iter > Mp_iter; - - Multi_pass_iters( Istream_type& is ) - { - is.unsetf( std::ios::skipws ); - - begin_ = spirit_namespace::make_multi_pass( istream_iter( is ) ); - end_ = spirit_namespace::make_multi_pass( istream_iter() ); - } - - Mp_iter begin_; - Mp_iter end_; - }; - - template< class Istream_type, class Value_type > - bool read_stream( Istream_type& is, Value_type& value ) - { - Multi_pass_iters< Istream_type > mp_iters( is ); - - return read_range( mp_iters.begin_, mp_iters.end_, value ); - } - - template< class Istream_type, class Value_type > - void read_stream_or_throw( Istream_type& is, Value_type& value ) - { - const Multi_pass_iters< Istream_type > mp_iters( is ); - - add_posn_iter_and_read_range_or_throw( mp_iters.begin_, mp_iters.end_, value ); - } -} - -#endif diff --git a/src/json/json_spirit_stream_reader.h b/src/json/json_spirit_stream_reader.h deleted file mode 100644 index 7e59c9adc..000000000 --- a/src/json/json_spirit_stream_reader.h +++ /dev/null @@ -1,70 +0,0 @@ -#ifndef JSON_SPIRIT_READ_STREAM -#define JSON_SPIRIT_READ_STREAM - -// Copyright John W. Wilkinson 2007 - 2009. -// Distributed under the MIT License, see accompanying file LICENSE.txt - -// json spirit version 4.03 - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#include "json_spirit_reader_template.h" - -namespace json_spirit -{ - // these classes allows you to read multiple top level contiguous values from a stream, - // the normal stream read functions have a bug that prevent multiple top level values - // from being read unless they are separated by spaces - - template< class Istream_type, class Value_type > - class Stream_reader - { - public: - - Stream_reader( Istream_type& is ) - : iters_( is ) - { - } - - bool read_next( Value_type& value ) - { - return read_range( iters_.begin_, iters_.end_, value ); - } - - private: - - typedef Multi_pass_iters< Istream_type > Mp_iters; - - Mp_iters iters_; - }; - - template< class Istream_type, class Value_type > - class Stream_reader_thrower - { - public: - - Stream_reader_thrower( Istream_type& is ) - : iters_( is ) - , posn_begin_( iters_.begin_, iters_.end_ ) - , posn_end_( iters_.end_, iters_.end_ ) - { - } - - void read_next( Value_type& value ) - { - posn_begin_ = read_range_or_throw( posn_begin_, posn_end_, value ); - } - - private: - - typedef Multi_pass_iters< Istream_type > Mp_iters; - typedef spirit_namespace::position_iterator< typename Mp_iters::Mp_iter > Posn_iter_t; - - Mp_iters iters_; - Posn_iter_t posn_begin_, posn_end_; - }; -} - -#endif diff --git a/src/json/json_spirit_utils.h b/src/json/json_spirit_utils.h deleted file mode 100644 index 553e3b96a..000000000 --- a/src/json/json_spirit_utils.h +++ /dev/null @@ -1,61 +0,0 @@ -#ifndef JSON_SPIRIT_UTILS -#define JSON_SPIRIT_UTILS - -// Copyright John W. Wilkinson 2007 - 2009. -// Distributed under the MIT License, see accompanying file LICENSE.txt - -// json spirit version 4.03 - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#include "json_spirit_value.h" -#include - -namespace json_spirit -{ - template< class Obj_t, class Map_t > - void obj_to_map( const Obj_t& obj, Map_t& mp_obj ) - { - mp_obj.clear(); - - for( typename Obj_t::const_iterator i = obj.begin(); i != obj.end(); ++i ) - { - mp_obj[ i->name_ ] = i->value_; - } - } - - template< class Obj_t, class Map_t > - void map_to_obj( const Map_t& mp_obj, Obj_t& obj ) - { - obj.clear(); - - for( typename Map_t::const_iterator i = mp_obj.begin(); i != mp_obj.end(); ++i ) - { - obj.push_back( typename Obj_t::value_type( i->first, i->second ) ); - } - } - - typedef std::map< std::string, Value > Mapped_obj; - -#ifndef BOOST_NO_STD_WSTRING - typedef std::map< std::wstring, wValue > wMapped_obj; -#endif - - template< class Object_type, class String_type > - const typename Object_type::value_type::Value_type& find_value( const Object_type& obj, const String_type& name ) - { - for( typename Object_type::const_iterator i = obj.begin(); i != obj.end(); ++i ) - { - if( i->name_ == name ) - { - return i->value_; - } - } - - return Object_type::value_type::Value_type::null; - } -} - -#endif diff --git a/src/json/json_spirit_value.cpp b/src/json/json_spirit_value.cpp deleted file mode 100644 index 44d2f06a0..000000000 --- a/src/json/json_spirit_value.cpp +++ /dev/null @@ -1,8 +0,0 @@ -/* Copyright (c) 2007 John W Wilkinson - - This source code can be used for any purpose as long as - this comment is retained. */ - -// json spirit version 2.00 - -#include "json_spirit_value.h" diff --git a/src/json/json_spirit_value.h b/src/json/json_spirit_value.h deleted file mode 100644 index 13cc89210..000000000 --- a/src/json/json_spirit_value.h +++ /dev/null @@ -1,534 +0,0 @@ -#ifndef JSON_SPIRIT_VALUE -#define JSON_SPIRIT_VALUE - -// Copyright John W. Wilkinson 2007 - 2009. -// Distributed under the MIT License, see accompanying file LICENSE.txt - -// json spirit version 4.03 - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace json_spirit -{ - enum Value_type{ obj_type, array_type, str_type, bool_type, int_type, real_type, null_type }; - static const char* Value_type_name[]={"obj", "array", "str", "bool", "int", "real", "null"}; - - template< class Config > // Config determines whether the value uses std::string or std::wstring and - // whether JSON Objects are represented as vectors or maps - class Value_impl - { - public: - - typedef Config Config_type; - typedef typename Config::String_type String_type; - typedef typename Config::Object_type Object; - typedef typename Config::Array_type Array; - typedef typename String_type::const_pointer Const_str_ptr; // eg const char* - - Value_impl(); // creates null value - Value_impl( Const_str_ptr value ); - Value_impl( const String_type& value ); - Value_impl( const Object& value ); - Value_impl( const Array& value ); - Value_impl( bool value ); - Value_impl( int value ); - Value_impl( int64_t value ); - Value_impl( uint64_t value ); - Value_impl( double value ); - - Value_impl( const Value_impl& other ); - - bool operator==( const Value_impl& lhs ) const; - - Value_impl& operator=( const Value_impl& lhs ); - - Value_type type() const; - - bool is_uint64() const; - bool is_null() const; - - const String_type& get_str() const; - const Object& get_obj() const; - const Array& get_array() const; - bool get_bool() const; - int get_int() const; - int64_t get_int64() const; - uint64_t get_uint64() const; - double get_real() const; - - Object& get_obj(); - Array& get_array(); - - template< typename T > T get_value() const; // example usage: int i = value.get_value< int >(); - // or double d = value.get_value< double >(); - - static const Value_impl null; - - private: - - void check_type( const Value_type vtype ) const; - - typedef boost::variant< String_type, - boost::recursive_wrapper< Object >, boost::recursive_wrapper< Array >, - bool, int64_t, double > Variant; - - Value_type type_; - Variant v_; - bool is_uint64_; - }; - - // vector objects - - template< class Config > - struct Pair_impl - { - typedef typename Config::String_type String_type; - typedef typename Config::Value_type Value_type; - - Pair_impl( const String_type& name, const Value_type& value ); - - bool operator==( const Pair_impl& lhs ) const; - - String_type name_; - Value_type value_; - }; - - template< class String > - struct Config_vector - { - typedef String String_type; - typedef Value_impl< Config_vector > Value_type; - typedef Pair_impl < Config_vector > Pair_type; - typedef std::vector< Value_type > Array_type; - typedef std::vector< Pair_type > Object_type; - - static Value_type& add( Object_type& obj, const String_type& name, const Value_type& value ) - { - obj.push_back( Pair_type( name , value ) ); - - return obj.back().value_; - } - - static String_type get_name( const Pair_type& pair ) - { - return pair.name_; - } - - static Value_type get_value( const Pair_type& pair ) - { - return pair.value_; - } - }; - - // typedefs for ASCII - - typedef Config_vector< std::string > Config; - - typedef Config::Value_type Value; - typedef Config::Pair_type Pair; - typedef Config::Object_type Object; - typedef Config::Array_type Array; - - // typedefs for Unicode - -#ifndef BOOST_NO_STD_WSTRING - - typedef Config_vector< std::wstring > wConfig; - - typedef wConfig::Value_type wValue; - typedef wConfig::Pair_type wPair; - typedef wConfig::Object_type wObject; - typedef wConfig::Array_type wArray; -#endif - - // map objects - - template< class String > - struct Config_map - { - typedef String String_type; - typedef Value_impl< Config_map > Value_type; - typedef std::vector< Value_type > Array_type; - typedef std::map< String_type, Value_type > Object_type; - typedef typename Object_type::value_type Pair_type; - - static Value_type& add( Object_type& obj, const String_type& name, const Value_type& value ) - { - return obj[ name ] = value; - } - - static String_type get_name( const Pair_type& pair ) - { - return pair.first; - } - - static Value_type get_value( const Pair_type& pair ) - { - return pair.second; - } - }; - - // typedefs for ASCII - - typedef Config_map< std::string > mConfig; - - typedef mConfig::Value_type mValue; - typedef mConfig::Object_type mObject; - typedef mConfig::Array_type mArray; - - // typedefs for Unicode - -#ifndef BOOST_NO_STD_WSTRING - - typedef Config_map< std::wstring > wmConfig; - - typedef wmConfig::Value_type wmValue; - typedef wmConfig::Object_type wmObject; - typedef wmConfig::Array_type wmArray; - -#endif - - /////////////////////////////////////////////////////////////////////////////////////////////// - // - // implementation - - template< class Config > - const Value_impl< Config > Value_impl< Config >::null; - - template< class Config > - Value_impl< Config >::Value_impl() - : type_( null_type ) - , is_uint64_( false ) - { - } - - template< class Config > - Value_impl< Config >::Value_impl( const Const_str_ptr value ) - : type_( str_type ) - , v_( String_type( value ) ) - , is_uint64_( false ) - { - } - - template< class Config > - Value_impl< Config >::Value_impl( const String_type& value ) - : type_( str_type ) - , v_( value ) - , is_uint64_( false ) - { - } - - template< class Config > - Value_impl< Config >::Value_impl( const Object& value ) - : type_( obj_type ) - , v_( value ) - , is_uint64_( false ) - { - } - - template< class Config > - Value_impl< Config >::Value_impl( const Array& value ) - : type_( array_type ) - , v_( value ) - , is_uint64_( false ) - { - } - - template< class Config > - Value_impl< Config >::Value_impl( bool value ) - : type_( bool_type ) - , v_( value ) - , is_uint64_( false ) - { - } - - template< class Config > - Value_impl< Config >::Value_impl( int value ) - : type_( int_type ) - , v_( static_cast< int64_t >( value ) ) - , is_uint64_( false ) - { - } - - template< class Config > - Value_impl< Config >::Value_impl( int64_t value ) - : type_( int_type ) - , v_( value ) - , is_uint64_( false ) - { - } - - template< class Config > - Value_impl< Config >::Value_impl( uint64_t value ) - : type_( int_type ) - , v_( static_cast< int64_t >( value ) ) - , is_uint64_( true ) - { - } - - template< class Config > - Value_impl< Config >::Value_impl( double value ) - : type_( real_type ) - , v_( value ) - , is_uint64_( false ) - { - } - - template< class Config > - Value_impl< Config >::Value_impl( const Value_impl< Config >& other ) - : type_( other.type() ) - , v_( other.v_ ) - , is_uint64_( other.is_uint64_ ) - { - } - - template< class Config > - Value_impl< Config >& Value_impl< Config >::operator=( const Value_impl& lhs ) - { - Value_impl tmp( lhs ); - - std::swap( type_, tmp.type_ ); - std::swap( v_, tmp.v_ ); - std::swap( is_uint64_, tmp.is_uint64_ ); - - return *this; - } - - template< class Config > - bool Value_impl< Config >::operator==( const Value_impl& lhs ) const - { - if( this == &lhs ) return true; - - if( type() != lhs.type() ) return false; - - return v_ == lhs.v_; - } - - template< class Config > - Value_type Value_impl< Config >::type() const - { - return type_; - } - - template< class Config > - bool Value_impl< Config >::is_uint64() const - { - return is_uint64_; - } - - template< class Config > - bool Value_impl< Config >::is_null() const - { - return type() == null_type; - } - - template< class Config > - void Value_impl< Config >::check_type( const Value_type vtype ) const - { - if( type() != vtype ) - { - std::ostringstream os; - - ///// Bitcoin: Tell the types by name instead of by number - os << "value is type " << Value_type_name[type()] << ", expected " << Value_type_name[vtype]; - - throw std::runtime_error( os.str() ); - } - } - - template< class Config > - const typename Config::String_type& Value_impl< Config >::get_str() const - { - check_type( str_type ); - - return *boost::get< String_type >( &v_ ); - } - - template< class Config > - const typename Value_impl< Config >::Object& Value_impl< Config >::get_obj() const - { - check_type( obj_type ); - - return *boost::get< Object >( &v_ ); - } - - template< class Config > - const typename Value_impl< Config >::Array& Value_impl< Config >::get_array() const - { - check_type( array_type ); - - return *boost::get< Array >( &v_ ); - } - - template< class Config > - bool Value_impl< Config >::get_bool() const - { - check_type( bool_type ); - - return boost::get< bool >( v_ ); - } - - template< class Config > - int Value_impl< Config >::get_int() const - { - check_type( int_type ); - - return static_cast< int >( get_int64() ); - } - - template< class Config > - int64_t Value_impl< Config >::get_int64() const - { - check_type( int_type ); - - return boost::get< int64_t >( v_ ); - } - - template< class Config > - uint64_t Value_impl< Config >::get_uint64() const - { - check_type( int_type ); - - return static_cast< uint64_t >( get_int64() ); - } - - template< class Config > - double Value_impl< Config >::get_real() const - { - if( type() == int_type ) - { - return is_uint64() ? static_cast< double >( get_uint64() ) - : static_cast< double >( get_int64() ); - } - - check_type( real_type ); - - return boost::get< double >( v_ ); - } - - template< class Config > - typename Value_impl< Config >::Object& Value_impl< Config >::get_obj() - { - check_type( obj_type ); - - return *boost::get< Object >( &v_ ); - } - - template< class Config > - typename Value_impl< Config >::Array& Value_impl< Config >::get_array() - { - check_type( array_type ); - - return *boost::get< Array >( &v_ ); - } - - template< class Config > - Pair_impl< Config >::Pair_impl( const String_type& name, const Value_type& value ) - : name_( name ) - , value_( value ) - { - } - - template< class Config > - bool Pair_impl< Config >::operator==( const Pair_impl< Config >& lhs ) const - { - if( this == &lhs ) return true; - - return ( name_ == lhs.name_ ) && ( value_ == lhs.value_ ); - } - - // converts a C string, ie. 8 bit char array, to a string object - // - template < class String_type > - String_type to_str( const char* c_str ) - { - String_type result; - - for( const char* p = c_str; *p != 0; ++p ) - { - result += *p; - } - - return result; - } - - // - - namespace internal_ - { - template< typename T > - struct Type_to_type - { - }; - - template< class Value > - int get_value( const Value& value, Type_to_type< int > ) - { - return value.get_int(); - } - - template< class Value > - int64_t get_value( const Value& value, Type_to_type< int64_t > ) - { - return value.get_int64(); - } - - template< class Value > - uint64_t get_value( const Value& value, Type_to_type< uint64_t > ) - { - return value.get_uint64(); - } - - template< class Value > - double get_value( const Value& value, Type_to_type< double > ) - { - return value.get_real(); - } - - template< class Value > - typename Value::String_type get_value( const Value& value, Type_to_type< typename Value::String_type > ) - { - return value.get_str(); - } - - template< class Value > - typename Value::Array get_value( const Value& value, Type_to_type< typename Value::Array > ) - { - return value.get_array(); - } - - template< class Value > - typename Value::Object get_value( const Value& value, Type_to_type< typename Value::Object > ) - { - return value.get_obj(); - } - - template< class Value > - bool get_value( const Value& value, Type_to_type< bool > ) - { - return value.get_bool(); - } - } - - template< class Config > - template< typename T > - T Value_impl< Config >::get_value() const - { - return internal_::get_value( *this, internal_::Type_to_type< T >() ); - } -} - -#endif diff --git a/src/json/json_spirit_writer.cpp b/src/json/json_spirit_writer.cpp deleted file mode 100644 index d24a632cf..000000000 --- a/src/json/json_spirit_writer.cpp +++ /dev/null @@ -1,95 +0,0 @@ -// Copyright John W. Wilkinson 2007 - 2009. -// Distributed under the MIT License, see accompanying file LICENSE.txt - -// json spirit version 4.03 - -#include "json_spirit_writer.h" -#include "json_spirit_writer_template.h" - -void json_spirit::write( const Value& value, std::ostream& os ) -{ - write_stream( value, os, false ); -} - -void json_spirit::write_formatted( const Value& value, std::ostream& os ) -{ - write_stream( value, os, true ); -} - -std::string json_spirit::write( const Value& value ) -{ - return write_string( value, false ); -} - -std::string json_spirit::write_formatted( const Value& value ) -{ - return write_string( value, true ); -} - -#ifndef BOOST_NO_STD_WSTRING - -void json_spirit::write( const wValue& value, std::wostream& os ) -{ - write_stream( value, os, false ); -} - -void json_spirit::write_formatted( const wValue& value, std::wostream& os ) -{ - write_stream( value, os, true ); -} - -std::wstring json_spirit::write( const wValue& value ) -{ - return write_string( value, false ); -} - -std::wstring json_spirit::write_formatted( const wValue& value ) -{ - return write_string( value, true ); -} - -#endif - -void json_spirit::write( const mValue& value, std::ostream& os ) -{ - write_stream( value, os, false ); -} - -void json_spirit::write_formatted( const mValue& value, std::ostream& os ) -{ - write_stream( value, os, true ); -} - -std::string json_spirit::write( const mValue& value ) -{ - return write_string( value, false ); -} - -std::string json_spirit::write_formatted( const mValue& value ) -{ - return write_string( value, true ); -} - -#ifndef BOOST_NO_STD_WSTRING - -void json_spirit::write( const wmValue& value, std::wostream& os ) -{ - write_stream( value, os, false ); -} - -void json_spirit::write_formatted( const wmValue& value, std::wostream& os ) -{ - write_stream( value, os, true ); -} - -std::wstring json_spirit::write( const wmValue& value ) -{ - return write_string( value, false ); -} - -std::wstring json_spirit::write_formatted( const wmValue& value ) -{ - return write_string( value, true ); -} - -#endif diff --git a/src/json/json_spirit_writer.h b/src/json/json_spirit_writer.h deleted file mode 100644 index 52e14068e..000000000 --- a/src/json/json_spirit_writer.h +++ /dev/null @@ -1,50 +0,0 @@ -#ifndef JSON_SPIRIT_WRITER -#define JSON_SPIRIT_WRITER - -// Copyright John W. Wilkinson 2007 - 2009. -// Distributed under the MIT License, see accompanying file LICENSE.txt - -// json spirit version 4.03 - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#include "json_spirit_value.h" -#include - -namespace json_spirit -{ - // functions to convert JSON Values to text, - // the "formatted" versions add whitespace to format the output nicely - - void write ( const Value& value, std::ostream& os ); - void write_formatted( const Value& value, std::ostream& os ); - std::string write ( const Value& value ); - std::string write_formatted( const Value& value ); - -#ifndef BOOST_NO_STD_WSTRING - - void write ( const wValue& value, std::wostream& os ); - void write_formatted( const wValue& value, std::wostream& os ); - std::wstring write ( const wValue& value ); - std::wstring write_formatted( const wValue& value ); - -#endif - - void write ( const mValue& value, std::ostream& os ); - void write_formatted( const mValue& value, std::ostream& os ); - std::string write ( const mValue& value ); - std::string write_formatted( const mValue& value ); - -#ifndef BOOST_NO_STD_WSTRING - - void write ( const wmValue& value, std::wostream& os ); - void write_formatted( const wmValue& value, std::wostream& os ); - std::wstring write ( const wmValue& value ); - std::wstring write_formatted( const wmValue& value ); - -#endif -} - -#endif diff --git a/src/json/json_spirit_writer_template.h b/src/json/json_spirit_writer_template.h deleted file mode 100644 index 6b4978a1f..000000000 --- a/src/json/json_spirit_writer_template.h +++ /dev/null @@ -1,249 +0,0 @@ -#ifndef JSON_SPIRIT_WRITER_TEMPLATE -#define JSON_SPIRIT_WRITER_TEMPLATE - -// Copyright John W. Wilkinson 2007 - 2009. -// Distributed under the MIT License, see accompanying file LICENSE.txt - -// json spirit version 4.03 - -#include "json_spirit_value.h" - -#include -#include -#include - -namespace json_spirit -{ - inline char to_hex_char( unsigned int c ) - { - assert( c <= 0xF ); - - const char ch = static_cast< char >( c ); - - if( ch < 10 ) return '0' + ch; - - return 'A' - 10 + ch; - } - - template< class String_type > - String_type non_printable_to_string( unsigned int c ) - { - // Silence the warning: typedef ‘Char_type’ locally defined but not used [-Wunused-local-typedefs] - // typedef typename String_type::value_type Char_type; - - String_type result( 6, '\\' ); - - result[1] = 'u'; - - result[ 5 ] = to_hex_char( c & 0x000F ); c >>= 4; - result[ 4 ] = to_hex_char( c & 0x000F ); c >>= 4; - result[ 3 ] = to_hex_char( c & 0x000F ); c >>= 4; - result[ 2 ] = to_hex_char( c & 0x000F ); - - return result; - } - - template< typename Char_type, class String_type > - bool add_esc_char( Char_type c, String_type& s ) - { - switch( c ) - { - case '"': s += to_str< String_type >( "\\\"" ); return true; - case '\\': s += to_str< String_type >( "\\\\" ); return true; - case '\b': s += to_str< String_type >( "\\b" ); return true; - case '\f': s += to_str< String_type >( "\\f" ); return true; - case '\n': s += to_str< String_type >( "\\n" ); return true; - case '\r': s += to_str< String_type >( "\\r" ); return true; - case '\t': s += to_str< String_type >( "\\t" ); return true; - } - - return false; - } - - template< class String_type > - String_type add_esc_chars( const String_type& s ) - { - typedef typename String_type::const_iterator Iter_type; - typedef typename String_type::value_type Char_type; - - String_type result; - - const Iter_type end( s.end() ); - - for( Iter_type i = s.begin(); i != end; ++i ) - { - const Char_type c( *i ); - - if( add_esc_char( c, result ) ) continue; - - const wint_t unsigned_c( ( c >= 0 ) ? c : 256 + c ); - - if( iswprint( unsigned_c ) ) - { - result += c; - } - else - { - result += non_printable_to_string< String_type >( unsigned_c ); - } - } - - return result; - } - - // this class generates the JSON text, - // it keeps track of the indentation level etc. - // - template< class Value_type, class Ostream_type > - class Generator - { - typedef typename Value_type::Config_type Config_type; - typedef typename Config_type::String_type String_type; - typedef typename Config_type::Object_type Object_type; - typedef typename Config_type::Array_type Array_type; - typedef typename String_type::value_type Char_type; - typedef typename Object_type::value_type Obj_member_type; - - public: - - Generator( const Value_type& value, Ostream_type& os, bool pretty ) - : os_( os ) - , indentation_level_( 0 ) - , pretty_( pretty ) - { - output( value ); - } - - private: - - void output( const Value_type& value ) - { - switch( value.type() ) - { - case obj_type: output( value.get_obj() ); break; - case array_type: output( value.get_array() ); break; - case str_type: output( value.get_str() ); break; - case bool_type: output( value.get_bool() ); break; - case int_type: output_int( value ); break; - - /// Bitcoin: Added std::fixed and changed precision from 16 to 8 - case real_type: os_ << std::showpoint << std::fixed << std::setprecision(8) - << value.get_real(); break; - - case null_type: os_ << "null"; break; - default: assert( false ); - } - } - - void output( const Object_type& obj ) - { - output_array_or_obj( obj, '{', '}' ); - } - - void output( const Array_type& arr ) - { - output_array_or_obj( arr, '[', ']' ); - } - - void output( const Obj_member_type& member ) - { - output( Config_type::get_name( member ) ); space(); - os_ << ':'; space(); - output( Config_type::get_value( member ) ); - } - - void output_int( const Value_type& value ) - { - if( value.is_uint64() ) - { - os_ << value.get_uint64(); - } - else - { - os_ << value.get_int64(); - } - } - - void output( const String_type& s ) - { - os_ << '"' << add_esc_chars( s ) << '"'; - } - - void output( bool b ) - { - os_ << to_str< String_type >( b ? "true" : "false" ); - } - - template< class T > - void output_array_or_obj( const T& t, Char_type start_char, Char_type end_char ) - { - os_ << start_char; new_line(); - - ++indentation_level_; - - for( typename T::const_iterator i = t.begin(); i != t.end(); ++i ) - { - indent(); output( *i ); - - typename T::const_iterator next = i; - - if( ++next != t.end()) - { - os_ << ','; - } - - new_line(); - } - - --indentation_level_; - - indent(); os_ << end_char; - } - - void indent() - { - if( !pretty_ ) return; - - for( int i = 0; i < indentation_level_; ++i ) - { - os_ << " "; - } - } - - void space() - { - if( pretty_ ) os_ << ' '; - } - - void new_line() - { - if( pretty_ ) os_ << '\n'; - } - - Generator& operator=( const Generator& ); // to prevent "assignment operator could not be generated" warning - - Ostream_type& os_; - int indentation_level_; - bool pretty_; - }; - - template< class Value_type, class Ostream_type > - void write_stream( const Value_type& value, Ostream_type& os, bool pretty ) - { - Generator< Value_type, Ostream_type >( value, os, pretty ); - } - - template< class Value_type > - typename Value_type::String_type write_string( const Value_type& value, bool pretty ) - { - typedef typename Value_type::String_type::value_type Char_type; - - std::basic_ostringstream< Char_type > os; - - write_stream( value, os, pretty ); - - return os.str(); - } -} - -#endif diff --git a/src/key.cpp b/src/key.cpp index b772dff33..4a6a1d25c 100644 --- a/src/key.cpp +++ b/src/key.cpp @@ -21,7 +21,6 @@ bool CKey::Check(const unsigned char *vch) { } void CKey::MakeNewKey(bool fCompressedIn) { - RandAddSeedPerfmon(); do { GetRandBytes(vch, sizeof(vch)); } while (!Check(vch)); diff --git a/src/komodo-tx.cpp b/src/komodo-tx.cpp index 46004a92e..19d0440dd 100644 --- a/src/komodo-tx.cpp +++ b/src/komodo-tx.cpp @@ -11,7 +11,7 @@ #include "primitives/transaction.h" #include "script/script.h" #include "script/sign.h" -#include "univalue/univalue.h" +#include #include "util.h" #include "utilmoneystr.h" #include "utilstrencodings.h" @@ -360,7 +360,7 @@ static void MutateTxSign(CMutableTransaction& tx, const string& flagStr) UniValue keysObj = registers["privatekeys"]; fGivenKeys = true; - for (unsigned int kidx = 0; kidx < keysObj.count(); kidx++) { + for (size_t kidx = 0; kidx < keysObj.size(); kidx++) { if (!keysObj[kidx].isStr()) throw runtime_error("privatekey not a string"); CBitcoinSecret vchSecret; @@ -377,7 +377,7 @@ static void MutateTxSign(CMutableTransaction& tx, const string& flagStr) throw runtime_error("prevtxs register variable must be set."); UniValue prevtxsObj = registers["prevtxs"]; { - for (unsigned int previdx = 0; previdx < prevtxsObj.count(); previdx++) { + for (size_t previdx = 0; previdx < prevtxsObj.size(); previdx++) { UniValue prevOut = prevtxsObj[previdx]; if (!prevOut.isObject()) throw runtime_error("expected prevtxs internal object"); diff --git a/src/main.cpp b/src/main.cpp index 43794cb94..4ae36759c 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -57,6 +57,7 @@ int64_t nTimeBestReceived = 0; CWaitableCriticalSection csBestBlock; CConditionVariable cvBlockChange; int nScriptCheckThreads = 0; +bool fExperimentalMode = false; bool fImporting = false; bool fReindex = false; bool fTxIndex = false; @@ -79,9 +80,9 @@ struct COrphanTx { CTransaction tx; NodeId fromPeer; }; -map mapOrphanTransactions; -map > mapOrphanTransactionsByPrev; -void EraseOrphansFor(NodeId peer); +map mapOrphanTransactions GUARDED_BY(cs_main);; +map > mapOrphanTransactionsByPrev GUARDED_BY(cs_main);; +void EraseOrphansFor(NodeId peer) EXCLUSIVE_LOCKS_REQUIRED(cs_main); /** * Returns true if there are nRequired or more blocks of minVersion or above @@ -573,7 +574,7 @@ CBlockTreeDB *pblocktree = NULL; // mapOrphanTransactions // -bool AddOrphanTx(const CTransaction& tx, NodeId peer) +bool AddOrphanTx(const CTransaction& tx, NodeId peer) EXCLUSIVE_LOCKS_REQUIRED(cs_main) { uint256 hash = tx.GetHash(); if (mapOrphanTransactions.count(hash)) @@ -603,7 +604,7 @@ bool AddOrphanTx(const CTransaction& tx, NodeId peer) return true; } -void static EraseOrphanTx(uint256 hash) +void static EraseOrphanTx(uint256 hash) EXCLUSIVE_LOCKS_REQUIRED(cs_main) { map::iterator it = mapOrphanTransactions.find(hash); if (it == mapOrphanTransactions.end()) @@ -637,7 +638,7 @@ void EraseOrphansFor(NodeId peer) } -unsigned int LimitOrphanTxSize(unsigned int nMaxOrphans) +unsigned int LimitOrphanTxSize(unsigned int nMaxOrphans) EXCLUSIVE_LOCKS_REQUIRED(cs_main) { unsigned int nEvicted = 0; while (mapOrphanTransactions.size() > nMaxOrphans) @@ -776,7 +777,7 @@ bool CheckFinalTx(const CTransaction &tx, int flags) /** * Check transaction inputs to mitigate two * potential denial-of-service attacks: - * + * * 1. scriptSigs with extra data stuffed into them, * not consumed by scriptPubKey (or P2SH script) * 2. P2SH scripts with a crazy number of expensive @@ -1753,13 +1754,16 @@ bool CScriptCheck::operator()() { return true; } -bool NonContextualCheckInputs(const CTransaction& tx, CValidationState &state, const CCoinsViewCache &inputs, bool fScriptChecks, unsigned int flags, bool cacheStore, const Consensus::Params& consensusParams, std::vector *pvChecks) +int GetSpendHeight(const CCoinsViewCache& inputs) { - if (!tx.IsCoinBase()) - { - if (pvChecks) - pvChecks->reserve(tx.vin.size()); + LOCK(cs_main); + CBlockIndex* pindexPrev = mapBlockIndex.find(inputs.GetBestBlock())->second; + return pindexPrev->nHeight + 1; +} +namespace Consensus { +bool CheckTxInputs(const CTransaction& tx, CValidationState& state, const CCoinsViewCache& inputs, int nSpendHeight, const Consensus::Params& consensusParams) +{ // This doesn't trigger the DoS code on purpose; if it did, it would make it easier // for an attacker to attempt to split the network. if (!inputs.HaveInputs(tx)) @@ -1778,6 +1782,13 @@ bool NonContextualCheckInputs(const CTransaction& tx, CValidationState &state, c assert(coins); if (coins->IsCoinBase()) { + // Ensure that coinbases are matured + if (nSpendHeight - coins->nHeight < COINBASE_MATURITY) { + return state.Invalid( + error("CheckInputs(): tried to spend coinbase at depth %d", nSpendHeight - coins->nHeight), + REJECT_INVALID, "bad-txns-premature-spend-of-coinbase"); + } + // Ensure that coinbases cannot be spent to transparent outputs // Disabled on regtest if (fCoinbaseEnforcedProtectionEnabled && @@ -1830,7 +1841,20 @@ bool NonContextualCheckInputs(const CTransaction& tx, CValidationState &state, c if (!MoneyRange(nFees)) return state.DoS(100, error("CheckInputs(): nFees out of range"), REJECT_INVALID, "bad-txns-fee-outofrange"); -//fprintf(stderr,"nFees %.8f\n",(double)nFees/COIN); + return true; +} +}// namespace Consensus + +bool ContextualCheckInputs(const CTransaction& tx, CValidationState &state, const CCoinsViewCache &inputs, bool fScriptChecks, unsigned int flags, bool cacheStore, const Consensus::Params& consensusParams, std::vector *pvChecks) +{ + if (!Consensus::CheckTxInputs(tx, state, inputs, GetSpendHeight(inputs), consensusParams)) + return false; + + if (!tx.IsCoinBase()) + { + if (pvChecks) + pvChecks->reserve(tx.vin.size()); + // The first loop above does all the inexpensive checks. // Only if ALL inputs pass do we perform expensive ECDSA signature checks. // Helps prevent CPU exhaustion attacks. @@ -1879,6 +1903,8 @@ bool NonContextualCheckInputs(const CTransaction& tx, CValidationState &state, c } bool ContextualCheckInputs(const CTransaction& tx, CValidationState &state, const CCoinsViewCache &inputs, bool fScriptChecks, unsigned int flags, bool cacheStore, const Consensus::Params& consensusParams, std::vector *pvChecks) + +/*bool ContextualCheckInputs(const CTransaction& tx, CValidationState &state, const CCoinsViewCache &inputs, bool fScriptChecks, unsigned int flags, bool cacheStore, const Consensus::Params& consensusParams, std::vector *pvChecks) { if (!NonContextualCheckInputs(tx, state, inputs, fScriptChecks, flags, cacheStore, consensusParams, pvChecks)) { fprintf(stderr,"ContextualCheckInputs failure.0\n"); @@ -1914,7 +1940,7 @@ bool ContextualCheckInputs(const CTransaction& tx, CValidationState &state, cons } return true; -} +}*/ namespace { @@ -2207,8 +2233,20 @@ bool ConnectBlock(const CBlock& block, CValidationState& state, CBlockIndex* pin { const CChainParams& chainparams = Params(); AssertLockHeld(cs_main); +/*<<<<<<< HEA // Check it again in case a previous version let a bad block in bool fExpensiveChecks = (!fCheckpointsEnabled || pindex->nHeight >= Checkpoints::GetTotalBlocksEstimate(chainparams.Checkpoints())); +======= +*/ + bool fExpensiveChecks = true; + if (fCheckpointsEnabled) { + CBlockIndex *pindexLastCheckpoint = Checkpoints::GetLastCheckpoint(chainparams.Checkpoints()); + if (pindexLastCheckpoint && pindexLastCheckpoint->GetAncestor(pindex->nHeight) == pindex) { + // This block is an ancestor of a checkpoint: disable script checks + fExpensiveChecks = false; + } + } +//>>>>>>> zcash/master auto verifier = libzcash::ProofVerifier::Strict(); auto disabledVerifier = libzcash::ProofVerifier::Disabled(); @@ -2228,6 +2266,8 @@ bool ConnectBlock(const CBlock& block, CValidationState& state, CBlockIndex* pin // Before the genesis block, there was an empty tree ZCIncrementalMerkleTree tree; pindex->hashAnchor = tree.root(); + // The genesis block contained no JoinSplits + pindex->hashAnchorEnd = pindex->hashAnchor; } return true; } @@ -2345,6 +2385,9 @@ bool ConnectBlock(const CBlock& block, CValidationState& state, CBlockIndex* pin } view.PushAnchor(tree); + if (!fJustCheck) { + pindex->hashAnchorEnd = tree.root(); + } blockundo.old_tree_root = old_tree_root; int64_t nTime1 = GetTimeMicros(); nTimeConnect += nTime1 - nTimeStart; @@ -2560,7 +2603,7 @@ void static UpdateTip(CBlockIndex *pindexNew) { LogPrintf("%s: %d of last 100 blocks above version %d\n", __func__, nUpgraded, (int)CBlock::CURRENT_VERSION); if (nUpgraded > 100/2) { - // strMiscWarning is read by GetWarnings(), called by Qt and the JSON-RPC code to warn the user: + // strMiscWarning is read by GetWarnings(), called by the JSON-RPC code to warn the user: strMiscWarning = _("Warning: This version is obsolete; upgrade required!"); CAlert::Notify(strMiscWarning, true); fWarned = true; @@ -2627,7 +2670,7 @@ static int64_t nTimeFlush = 0; static int64_t nTimeChainState = 0; static int64_t nTimePostConnect = 0; -/** +/** * Connect a new block to chainActive. pblock is either NULL or a pointer to a CBlock * corresponding to pindexNew, to bypass loading it again from disk. */ @@ -2652,7 +2695,6 @@ bool static ConnectTip(CValidationState &state, CBlockIndex *pindexNew, CBlock * LogPrint("bench", " - Load block from disk: %.2fms [%.2fs]\n", (nTime2 - nTime1) * 0.001, nTimeReadFromDisk * 0.000001); { CCoinsViewCache view(pcoinsTip); - CInv inv(MSG_BLOCK, pindexNew->GetBlockHash()); bool rv = ConnectBlock(*pblock, state, pindexNew, view); GetMainSignals().BlockChecked(*pblock, state); if (!rv) { @@ -2660,7 +2702,7 @@ bool static ConnectTip(CValidationState &state, CBlockIndex *pindexNew, CBlock * InvalidBlockFound(pindexNew, state); return error("ConnectTip(): ConnectBlock %s failed", pindexNew->GetBlockHash().ToString()); } - mapBlockSource.erase(inv.hash); + mapBlockSource.erase(pindexNew->GetBlockHash()); nTime3 = GetTimeMicros(); nTimeConnectTotal += nTime3 - nTime2; LogPrint("bench", " - Connect total: %.2fms [%.2fs]\n", (nTime3 - nTime2) * 0.001, nTimeConnectTotal * 0.000001); assert(view.Flush()); @@ -2893,6 +2935,7 @@ bool ActivateBestChain(CValidationState &state, CBlock *pblock) { pnode->PushInventory(CInv(MSG_BLOCK, hashNewTip)); } // Notify external listeners about the new tip. + GetMainSignals().UpdatedBlockTip(pindexNewTip); uiInterface.NotifyBlockTip(hashNewTip); } //else fprintf(stderr,"initial download skips propagation\n"); } while(pindexMostWork != chainActive.Tip()); @@ -3275,7 +3318,7 @@ bool ContextualCheckBlockHeader(const CBlockHeader& block, CValidationState& sta return state.Invalid(error("%s: block's timestamp is too early", __func__), REJECT_INVALID, "time-too-old"); - if(fCheckpointsEnabled) + if (fCheckpointsEnabled) { // Check that the block chain matches the known block chain up to a checkpoint if (!Checkpoints::CheckBlock(chainParams.Checkpoints(), nHeight, hash)) @@ -3794,11 +3837,27 @@ bool static LoadBlockIndexDB() pblocktree->ReadFlag("txindex", fTxIndex); LogPrintf("%s: transaction index %s\n", __func__, fTxIndex ? "enabled" : "disabled"); + // Fill in-memory data + BOOST_FOREACH(const PAIRTYPE(uint256, CBlockIndex*)& item, mapBlockIndex) + { + CBlockIndex* pindex = item.second; + // - This relationship will always be true even if pprev has multiple + // children, because hashAnchor is technically a property of pprev, + // not its children. + // - This will miss chain tips; we handle the best tip below, and other + // tips will be handled by ConnectTip during a re-org. + if (pindex->pprev) { + pindex->pprev->hashAnchorEnd = pindex->hashAnchor; + } + } + // Load pointer to end of best chain BlockMap::iterator it = mapBlockIndex.find(pcoinsTip->GetBestBlock()); if (it == mapBlockIndex.end()) return true; chainActive.SetTip(it->second); + // Set hashAnchorEnd for the end of best chain + it->second->hashAnchorEnd = pcoinsTip->GetBestAnchor(); PruneBlockIndexCandidates(); @@ -4285,7 +4344,7 @@ void static CheckBlockIndex() // CAlert // -string GetWarnings(string strFor) +std::string GetWarnings(const std::string& strFor) { int nPriority = 0; string strStatusBar; @@ -4353,7 +4412,7 @@ string GetWarnings(string strFor) // -bool static AlreadyHave(const CInv& inv) +bool static AlreadyHave(const CInv& inv) EXCLUSIVE_LOCKS_REQUIRED(cs_main) { switch (inv.type) { @@ -4522,7 +4581,6 @@ void static ProcessGetData(CNode* pfrom) bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv, int64_t nTimeReceived) { const CChainParams& chainparams = Params(); - RandAddSeedPerfmon(); LogPrint("net", "received: %s (%u bytes) peer=%d\n", SanitizeString(strCommand), vRecv.size(), pfrom->id); if (mapArgs.count("-dropmessagestest") && GetRand(atoi(mapArgs["-dropmessagestest"])) == 0) { @@ -4608,9 +4666,11 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv, CAddress addr = GetLocalAddress(&pfrom->addr); if (addr.IsRoutable()) { + LogPrintf("ProcessMessages: advertizing address %s\n", addr.ToString()); pfrom->PushAddress(addr); } else if (IsPeerAddrLocalGood(pfrom)) { addr.SetIP(pfrom->addrLocal); + LogPrintf("ProcessMessages: advertizing address %s\n", addr.ToString()); pfrom->PushAddress(addr); } } diff --git a/src/main.h b/src/main.h index 3ba8ce7f2..bcdd04a5e 100644 --- a/src/main.h +++ b/src/main.h @@ -62,7 +62,7 @@ static const unsigned int MAX_P2SH_SIGOPS = 15; /** The maximum number of sigops we're willing to relay/mine in a single tx */ static const unsigned int MAX_STANDARD_TX_SIGOPS = MAX_BLOCK_SIGOPS/5; /** Default for -minrelaytxfee, minimum relay fee for transactions */ -static const unsigned int DEFAULT_MIN_RELAY_TX_FEE = 1000; +static const unsigned int DEFAULT_MIN_RELAY_TX_FEE = 100; /** Default for -maxorphantx, maximum number of orphan transactions kept in memory */ static const unsigned int DEFAULT_MAX_ORPHAN_TRANSACTIONS = 100; /** The maximum size of a blk?????.dat file (since 0.8) */ @@ -117,6 +117,7 @@ extern uint64_t nLastBlockSize; extern const std::string strMessageMagic; extern CWaitableCriticalSection csBestBlock; extern CConditionVariable cvBlockChange; +extern bool fExperimentalMode; extern bool fImporting; extern bool fReindex; extern int nScriptCheckThreads; @@ -145,7 +146,7 @@ extern bool fPruneMode; /** Number of MiB of block files that we're trying to stay below. */ extern uint64_t nPruneTarget; /** Block files containing a block-height within MIN_BLOCKS_TO_KEEP of chainActive.Tip() will not be pruned. */ -static const signed int MIN_BLOCKS_TO_KEEP = 288; +static const unsigned int MIN_BLOCKS_TO_KEEP = 288; // Require that user allocate at least 550MB for block & undo files (blk???.dat and rev???.dat) // At 1MB per block, 288 blocks = 288MB. @@ -155,7 +156,7 @@ static const signed int MIN_BLOCKS_TO_KEEP = 288; // full block file chunks, we need the high water mark which triggers the prune to be // one 128MB block file + added 15% undo data = 147MB greater for a total of 545MB // Setting the target to > than 550MB will make it likely we can respect the target. -static const signed int MIN_DISK_SPACE_FOR_BLOCK_FILES = 550 * 1024 * 1024; +static const uint64_t MIN_DISK_SPACE_FOR_BLOCK_FILES = 550 * 1024 * 1024; /** Register with a network node to receive its signals */ void RegisterNodeSignals(CNodeSignals& nodeSignals); @@ -207,7 +208,7 @@ void PartitionCheck(bool (*initialDownloadCheck)(), CCriticalSection& cs, const /** Check whether we are doing an initial block download (synchronizing from disk or network) */ bool IsInitialBlockDownload(); /** Format a string that describes several potential problems detected by the core */ -std::string GetWarnings(std::string strFor); +std::string GetWarnings(const std::string& strFor); /** Retrieve a transaction (from memory pool, or from disk, if possible) */ bool GetTransaction(const uint256 &hash, CTransaction &tx, uint256 &hashBlock, bool fAllowSlow = false); /** Find the best known block, and make it the tip of the block chain */ @@ -332,10 +333,6 @@ bool ContextualCheckInputs(const CTransaction& tx, CValidationState &state, cons unsigned int flags, bool cacheStore, const Consensus::Params& consensusParams, std::vector *pvChecks = NULL); -bool NonContextualCheckInputs(const CTransaction& tx, CValidationState &state, const CCoinsViewCache &view, bool fScriptChecks, - unsigned int flags, bool cacheStore, const Consensus::Params& consensusParams, - std::vector *pvChecks = NULL); - /** Apply the effects of this transaction on the UTXO set represented by view */ void UpdateCoins(const CTransaction& tx, CValidationState &state, CCoinsViewCache &inputs, int nHeight); @@ -520,4 +517,15 @@ extern CCoinsViewCache *pcoinsTip; /** Global variable that points to the active block tree (protected by cs_main) */ extern CBlockTreeDB *pblocktree; +/** + * Return the spend height, which is one more than the inputs.GetBestBlock(). + * While checking, GetBestBlock() refers to the parent block. (protected by cs_main) + * This is also true for mempool checks. + */ +int GetSpendHeight(const CCoinsViewCache& inputs); + +namespace Consensus { +bool CheckTxInputs(const CTransaction& tx, CValidationState& state, const CCoinsViewCache& inputs, int nSpendHeight, const Consensus::Params& consensusParams); +} + #endif // BITCOIN_MAIN_H diff --git a/src/memusage.h b/src/memusage.h index 9f7de9e2e..be3964df1 100644 --- a/src/memusage.h +++ b/src/memusage.h @@ -11,6 +11,7 @@ #include #include +#include #include #include @@ -20,19 +21,27 @@ namespace memusage /** Compute the total memory used by allocating alloc bytes. */ static size_t MallocUsage(size_t alloc); +/** Dynamic memory usage for built-in types is zero. */ +static inline size_t DynamicUsage(const int8_t& v) { return 0; } +static inline size_t DynamicUsage(const uint8_t& v) { return 0; } +static inline size_t DynamicUsage(const int16_t& v) { return 0; } +static inline size_t DynamicUsage(const uint16_t& v) { return 0; } +static inline size_t DynamicUsage(const int32_t& v) { return 0; } +static inline size_t DynamicUsage(const uint32_t& v) { return 0; } +static inline size_t DynamicUsage(const int64_t& v) { return 0; } +static inline size_t DynamicUsage(const uint64_t& v) { return 0; } +static inline size_t DynamicUsage(const float& v) { return 0; } +static inline size_t DynamicUsage(const double& v) { return 0; } +template static inline size_t DynamicUsage(X * const &v) { return 0; } +template static inline size_t DynamicUsage(const X * const &v) { return 0; } + /** Compute the memory used for dynamically allocated but owned data structures. * For generic data types, this is *not* recursive. DynamicUsage(vector >) * will compute the memory used for the vector's, but not for the ints inside. * This is for efficiency reasons, as these functions are intended to be fast. If * application data structures require more accurate inner accounting, they should - * do the recursion themselves, or use more efficient caching + updating on modification. + * iterate themselves, or use more efficient caching + updating on modification. */ -template static size_t DynamicUsage(const std::vector& v); -template static size_t DynamicUsage(const std::set& s); -template static size_t DynamicUsage(const std::map& m); -template static size_t DynamicUsage(const boost::unordered_set& s); -template static size_t DynamicUsage(const boost::unordered_map& s); -template static size_t DynamicUsage(const X& x); static inline size_t MallocUsage(size_t alloc) { @@ -98,14 +107,6 @@ static inline size_t DynamicUsage(const boost::unordered_map& m) return MallocUsage(sizeof(boost_unordered_node >)) * m.size() + MallocUsage(sizeof(void*) * m.bucket_count()); } -// Dispatch to class method as fallback - -template -static inline size_t DynamicUsage(const X& x) -{ - return x.DynamicMemoryUsage(); -} - } #endif diff --git a/src/metrics.cpp b/src/metrics.cpp index 9f3795e00..fd8000548 100644 --- a/src/metrics.cpp +++ b/src/metrics.cpp @@ -17,6 +17,45 @@ #include #include +void AtomicTimer::start() +{ + std::unique_lock lock(mtx); + if (threads < 1) { + start_time = GetTime(); + } + ++threads; +} + +void AtomicTimer::stop() +{ + std::unique_lock lock(mtx); + // Ignore excess calls to stop() + if (threads > 0) { + --threads; + if (threads < 1) { + int64_t time_span = GetTime() - start_time; + total_time += time_span; + } + } +} + +bool AtomicTimer::running() +{ + std::unique_lock lock(mtx); + return threads > 0; +} + +double AtomicTimer::rate(const AtomicCounter& count) +{ + std::unique_lock lock(mtx); + int64_t duration = total_time; + if (threads > 0) { + // Timer is running, so get the latest count + duration += GetTime() - start_time; + } + return duration > 0 ? (double)count.get() / duration : 0; +} + CCriticalSection cs_metrics; boost::synchronized_value nNodeStartTime; @@ -25,6 +64,7 @@ AtomicCounter transactionsValidated; AtomicCounter ehSolverRuns; AtomicCounter solutionTargetChecks; AtomicCounter minedBlocks; +AtomicTimer miningTimer; boost::synchronized_value> trackedBlocks; @@ -51,14 +91,9 @@ int64_t GetUptime() return GetTime() - *nNodeStartTime; } -double GetLocalSolPS_INTERNAL(int64_t uptime) -{ - return uptime > 0 ? (double)solutionTargetChecks.get() / uptime : 0; -} - double GetLocalSolPS() { - return GetLocalSolPS_INTERNAL(GetUptime()); + return miningTimer.rate(solutionTargetChecks); } void TriggerRefresh() @@ -101,6 +136,11 @@ static bool metrics_ThreadSafeMessageBox(const std::string& message, return false; } +static bool metrics_ThreadSafeQuestion(const std::string& /* ignored interactive message */, const std::string& message, const std::string& caption, unsigned int style) +{ + return metrics_ThreadSafeMessageBox(message, caption, style); +} + static void metrics_InitMessage(const std::string& message) { *initMessage = message; @@ -110,24 +150,43 @@ void ConnectMetricsScreen() { uiInterface.ThreadSafeMessageBox.disconnect_all_slots(); uiInterface.ThreadSafeMessageBox.connect(metrics_ThreadSafeMessageBox); + uiInterface.ThreadSafeQuestion.disconnect_all_slots(); + uiInterface.ThreadSafeQuestion.connect(metrics_ThreadSafeQuestion); uiInterface.InitMessage.disconnect_all_slots(); uiInterface.InitMessage.connect(metrics_InitMessage); } -int printNetworkStats() +int printStats(bool mining) { - LOCK2(cs_main, cs_vNodes); + // Number of lines that are always displayed + int lines = 4; - std::cout << " " << _("Block height") << " | " << chainActive.Height() << std::endl; - std::cout << " " << _("Network solution rate") << " | " << GetNetworkHashPS(120, -1) << " Sol/s" << std::endl; - std::cout << " " << _("Connections") << " | " << vNodes.size() << std::endl; + int height; + size_t connections; + int64_t netsolps; + { + LOCK2(cs_main, cs_vNodes); + height = chainActive.Height(); + connections = vNodes.size(); + netsolps = GetNetworkHashPS(120, -1); + } + auto localsolps = GetLocalSolPS(); + + std::cout << " " << _("Block height") << " | " << height << std::endl; + std::cout << " " << _("Connections") << " | " << connections << std::endl; + std::cout << " " << _("Network solution rate") << " | " << netsolps << " Sol/s" << std::endl; + if (mining && miningTimer.running()) { + std::cout << " " << _("Local solution rate") << " | " << strprintf("%.4f Sol/s", localsolps) << std::endl; + lines++; + } std::cout << std::endl; - return 4; + return lines; } int printMiningStatus(bool mining) { +#ifdef ENABLE_MINING // Number of lines that are always displayed int lines = 1; @@ -140,8 +199,23 @@ int printMiningStatus(bool mining) else nThreads = boost::thread::hardware_concurrency(); } - std::cout << strprintf(_("You are mining with the %s solver on %d threads."), - GetArg("-equihashsolver", "default"), nThreads) << std::endl; + if (miningTimer.running()) { + std::cout << strprintf(_("You are mining with the %s solver on %d threads."), + GetArg("-equihashsolver", "default"), nThreads) << std::endl; + } else { + bool fvNodesEmpty; + { + LOCK(cs_vNodes); + fvNodesEmpty = vNodes.empty(); + } + if (fvNodesEmpty) { + std::cout << _("Mining is paused while waiting for connections.") << std::endl; + } else if (IsInitialBlockDownload()) { + std::cout << _("Mining is paused while downloading blocks.") << std::endl; + } else { + std::cout << _("Mining is paused (a JoinSplit may be in progress).") << std::endl; + } + } lines++; } else { std::cout << _("You are currently not mining.") << std::endl; @@ -151,6 +225,9 @@ int printMiningStatus(bool mining) std::cout << std::endl; return lines; +#else // ENABLE_MINING + return 0; +#endif // !ENABLE_MINING } int printMetrics(size_t cols, bool mining) @@ -190,11 +267,8 @@ int printMetrics(size_t cols, bool mining) } if (mining && loaded) { - double solps = GetLocalSolPS_INTERNAL(uptime); - std::string strSolps = strprintf("%.4f Sol/s", solps); - std::cout << "- " << strprintf(_("You have contributed %s on average to the network solution rate."), strSolps) << std::endl; std::cout << "- " << strprintf(_("You have completed %d Equihash solver runs."), ehSolverRuns.get()) << std::endl; - lines += 2; + lines++; int mined = 0; int orphaned = 0; @@ -319,6 +393,9 @@ void ThreadShowMetricsScreen() // Thank you text std::cout << _("Thank you for running a Zcash node!") << std::endl; std::cout << _("You're helping to strengthen the network and contributing to a social good :)") << std::endl; + + // Privacy notice text + std::cout << PrivacyInfo(); std::cout << std::endl; } @@ -342,12 +419,16 @@ void ThreadShowMetricsScreen() } // Miner status +#ifdef ENABLE_MINING bool mining = GetBoolArg("-gen", false); +#else + bool mining = false; +#endif if (loaded) { - lines += printNetworkStats(); + lines += printStats(mining); + lines += printMiningStatus(mining); } - lines += printMiningStatus(mining); lines += printMetrics(cols, mining); lines += printMessageBox(cols); lines += printInitMessage(); diff --git a/src/metrics.h b/src/metrics.h index 57264a7b5..3e830f823 100644 --- a/src/metrics.h +++ b/src/metrics.h @@ -5,6 +5,7 @@ #include "uint256.h" #include +#include #include struct AtomicCounter { @@ -20,14 +21,41 @@ struct AtomicCounter { --value; } - int get(){ + int get() const { return value.load(); } }; +class AtomicTimer { +private: + std::mutex mtx; + uint64_t threads; + int64_t start_time; + int64_t total_time; + +public: + AtomicTimer() : threads(0), start_time(0), total_time(0) {} + + /** + * Starts timing on first call, and counts the number of calls. + */ + void start(); + + /** + * Counts number of calls, and stops timing after it has been called as + * many times as start(). + */ + void stop(); + + bool running(); + + double rate(const AtomicCounter& count); +}; + extern AtomicCounter transactionsValidated; extern AtomicCounter ehSolverRuns; extern AtomicCounter solutionTargetChecks; +extern AtomicTimer miningTimer; void TrackMinedBlock(uint256 hash); diff --git a/src/miner.cpp b/src/miner.cpp index 7c14b8d4e..78fe63a39 100644 --- a/src/miner.cpp +++ b/src/miner.cpp @@ -4,12 +4,18 @@ // file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "miner.h" +#ifdef ENABLE_MINING #include "pow/tromp/equi_miner.h" +#endif #include "amount.h" +#include "base58.h" #include "chainparams.h" #include "consensus/consensus.h" #include "consensus/validation.h" +#ifdef ENABLE_MINING +#include "crypto/equihash.h" +#endif #include "hash.h" #include "main.h" #include "metrics.h" @@ -18,18 +24,20 @@ #include "primitives/transaction.h" #include "random.h" #include "timedata.h" +#include "ui_interface.h" #include "util.h" #include "utilmoneystr.h" #ifdef ENABLE_WALLET -#include "crypto/equihash.h" #include "wallet/wallet.h" -#include #endif #include "sodium.h" #include #include +#ifdef ENABLE_MINING +#include +#endif #include using namespace std; @@ -120,7 +128,7 @@ CBlockTemplate* CreateNewBlock(const CScript& scriptPubKeyIn) { uint64_t deposits; int32_t isrealtime,kmdheight; const CChainParams& chainparams = Params(); // Create new block - unique_ptr pblocktemplate(new CBlockTemplate()); + std::unique_ptr pblocktemplate(new CBlockTemplate()); if(!pblocktemplate.get()) { fprintf(stderr,"pblocktemplate.get() failure\n"); @@ -443,6 +451,55 @@ CBlockTemplate* CreateNewBlock(const CScript& scriptPubKeyIn) return pblocktemplate.release(); } +#ifdef ENABLE_WALLET +boost::optional GetMinerScriptPubKey(CReserveKey& reservekey) +#else +boost::optional GetMinerScriptPubKey() +#endif +{ + CKeyID keyID; + CBitcoinAddress addr; + if (addr.SetString(GetArg("-mineraddress", ""))) { + addr.GetKeyID(keyID); + } else { +#ifdef ENABLE_WALLET + CPubKey pubkey; + if (!reservekey.GetReservedKey(pubkey)) { + return boost::optional(); + } + keyID = pubkey.GetID(); +#else + return boost::optional(); +#endif + } + + CScript scriptPubKey = CScript() << OP_DUP << OP_HASH160 << ToByteVector(keyID) << OP_EQUALVERIFY << OP_CHECKSIG; + return scriptPubKey; +} + +/*#ifdef ENABLE_WALLET +CBlockTemplate* CreateNewBlockWithKey(CReserveKey& reservekey) +{ + boost::optional scriptPubKey = GetMinerScriptPubKey(reservekey); +#else +CBlockTemplate* CreateNewBlockWithKey() +{ + boost::optional scriptPubKey = GetMinerScriptPubKey(); +#endif + + if (!scriptPubKey) { + return NULL; + } + return CreateNewBlock(*scriptPubKey); +}*/ + +////////////////////////////////////////////////////////////////////////////// +// +// Internal miner +// + +#ifdef ENABLE_MINING + void IncrementExtraNonce(CBlock* pblock, CBlockIndex* pindexPrev, unsigned int& nExtraNonce) { // Update nExtraNonce @@ -501,7 +558,11 @@ CBlockTemplate* CreateNewBlockWithKey(CReserveKey& reservekey) return CreateNewBlock(scriptPubKey); } + static bool ProcessBlockFound(CBlock* pblock, CWallet& wallet, CReserveKey& reservekey) +#else +static bool ProcessBlockFound(CBlock* pblock) +#endif // ENABLE_WALLET { LogPrintf("%s\n", pblock->ToString()); LogPrintf("generated %s height.%d\n", FormatMoney(pblock->vtx[0].vout[0].nValue),chainActive.Tip()->nHeight+1); @@ -525,15 +586,21 @@ static bool ProcessBlockFound(CBlock* pblock, CWallet& wallet, CReserveKey& rese } } +#ifdef ENABLE_WALLET // Remove key from key pool if ( IS_KOMODO_NOTARY == 0 ) - reservekey.KeepKey(); - + { + if (GetArg("-mineraddress", "").empty()) { + // Remove key from key pool + reservekey.KeepKey(); + } + } // Track how many getdata requests this block gets { LOCK(wallet.cs_wallet); wallet.mapRequestCount[pblock->GetHash()] = 0; } +#endif // Process this block the same as if we had received it from another node CValidationState state; @@ -551,15 +618,23 @@ int32_t FOUND_BLOCK,KOMODO_MAYBEMINED; extern int32_t KOMODO_LASTMINED; int32_t roundrobin_delay; +#ifdef ENABLE_WALLET void static BitcoinMiner(CWallet *pwallet) +#else +void static BitcoinMiner() +#endif { LogPrintf("KomodoMiner started\n"); SetThreadPriority(THREAD_PRIORITY_LOWEST); RenameThread("komodo-miner"); const CChainParams& chainparams = Params(); - // Each thread has its own key and counter +#ifdef ENABLE_WALLET + // Each thread has its own key CReserveKey reservekey(pwallet); +#endif + + // Each thread has its own counter unsigned int nExtraNonce = 0; unsigned int n = chainparams.EquihashN(); @@ -589,6 +664,7 @@ void static BitcoinMiner(CWallet *pwallet) cancelSolver = true; } ); + miningTimer.start(); try { if ( ASSETCHAINS_SYMBOL[0] != 0 ) @@ -601,7 +677,7 @@ void static BitcoinMiner(CWallet *pwallet) // break; // 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. - //fprintf(stderr,"Wait for peers...\n"); + miningTimer.stop(); do { bool fvNodesEmpty; { @@ -615,6 +691,7 @@ void static BitcoinMiner(CWallet *pwallet) } while (true); //fprintf(stderr,"%s Found peers\n",ASSETCHAINS_SYMBOL); + miningTimer.start(); } /*while ( ASSETCHAINS_SYMBOL[0] != 0 && chainActive.Tip()->nHeight < ASSETCHAINS_MINHEIGHT ) { @@ -633,7 +710,11 @@ void static BitcoinMiner(CWallet *pwallet) } if ( 0 && ASSETCHAINS_SYMBOL[0] != 0 ) fprintf(stderr,"%s create new block ht.%d\n",ASSETCHAINS_SYMBOL,Mining_height); +#ifdef ENABLE_WALLET CBlockTemplate *ptr = CreateNewBlockWithKey(reservekey); +#else + CBlockTemplate *ptr = CreateNewBlockWithKey(); +#endif if ( ptr == 0 ) { static uint32_t counter; @@ -644,7 +725,12 @@ void static BitcoinMiner(CWallet *pwallet) unique_ptr pblocktemplate(ptr); if (!pblocktemplate.get()) { - LogPrintf("Error in KomodoMiner: Keypool ran out, please call keypoolrefill before restarting the mining thread\n"); + if (GetArg("-mineraddress", "").empty()) { + LogPrintf("Error in KomodoMiner: Keypool ran out, please call keypoolrefill before restarting the mining thread\n"); + } else { + // Should never reach here, because -mineraddress validity is checked in init.cpp + LogPrintf("Error in KomodoMiner: Invalid -mineraddress\n"); + } return; } CBlock *pblock = &pblocktemplate->block; @@ -752,9 +838,12 @@ void static BitcoinMiner(CWallet *pwallet) LogPrint("pow", "Running Equihash solver \"%s\" with nNonce = %s\n",solver, pblock->nNonce.ToString()); //fprintf(stderr,"running solver\n"); std::function)> validBlock = +#ifdef ENABLE_WALLET [&pblock, &hashTarget, &pwallet, &reservekey, &m_cs, &cancelSolver, &chainparams] - (std::vector soln) - { +#else + [&pblock, &hashTarget, &m_cs, &cancelSolver, &chainparams] +#endif + (std::vector soln) { // Write the solution to the hash and compute the result. LogPrint("pow", "- Checking solution against target\n"); pblock->nSolution = soln; @@ -778,7 +867,11 @@ void static BitcoinMiner(CWallet *pwallet) SetThreadPriority(THREAD_PRIORITY_NORMAL); LogPrintf("KomodoMiner:\n"); LogPrintf("proof-of-work found \n hash: %s \ntarget: %s\n", pblock->GetHash().GetHex(), hashTarget.GetHex()); +#ifdef ENABLE_WALLET if (ProcessBlockFound(pblock, *pwallet, reservekey)) { +#else + if (ProcessBlockFound(pblock)) { +#endif // Ignore chain updates caused by us std::lock_guard lock{m_cs}; cancelSolver = false; @@ -909,20 +1002,27 @@ void static BitcoinMiner(CWallet *pwallet) } catch (const boost::thread_interrupted&) { + miningTimer.stop(); c.disconnect(); LogPrintf("KomodoMiner terminated\n"); throw; } catch (const std::runtime_error &e) { + miningTimer.stop(); c.disconnect(); LogPrintf("KomodoMiner runtime error: %s\n", e.what()); return; } + miningTimer.stop(); c.disconnect(); } +#ifdef ENABLE_WALLET void GenerateBitcoins(bool fGenerate, CWallet* pwallet, int nThreads) +#else +void GenerateBitcoins(bool fGenerate, int nThreads) +#endif { static boost::thread_group* minerThreads = NULL; @@ -945,8 +1045,13 @@ void GenerateBitcoins(bool fGenerate, CWallet* pwallet, int nThreads) return; minerThreads = new boost::thread_group(); - for (int i = 0; i < nThreads; i++) + for (int i = 0; i < nThreads; i++) { +#ifdef ENABLE_WALLET minerThreads->create_thread(boost::bind(&BitcoinMiner, pwallet)); +#else + minerThreads->create_thread(&BitcoinMiner); +#endif + } } -#endif // ENABLE_WALLET +#endif // ENABLE_MINING diff --git a/src/miner.h b/src/miner.h index 96a6b70ec..bf1a088f0 100644 --- a/src/miner.h +++ b/src/miner.h @@ -8,12 +8,15 @@ #include "primitives/block.h" +#include #include class CBlockIndex; -class CReserveKey; class CScript; +#ifdef ENABLE_WALLET +class CReserveKey; class CWallet; +#endif namespace Consensus { struct Params; }; struct CBlockTemplate @@ -23,13 +26,27 @@ struct CBlockTemplate std::vector vTxSigOps; }; -/** Run the miner threads */ -void GenerateBitcoins(bool fGenerate, CWallet* pwallet, int nThreads); /** Generate a new block, without valid proof-of-work */ CBlockTemplate* CreateNewBlock(const CScript& scriptPubKeyIn); +#ifdef ENABLE_WALLET +boost::optional GetMinerScriptPubKey(CReserveKey& reservekey); CBlockTemplate* CreateNewBlockWithKey(CReserveKey& reservekey); +#else +boost::optional GetMinerScriptPubKey(); +CBlockTemplate* CreateNewBlockWithKey(); +#endif + +#ifdef ENABLE_MINING /** Modify the extranonce in a block */ void IncrementExtraNonce(CBlock* pblock, CBlockIndex* pindexPrev, unsigned int& nExtraNonce); +/** Run the miner threads */ + #ifdef ENABLE_WALLET +void GenerateBitcoins(bool fGenerate, CWallet* pwallet, int nThreads); + #else +void GenerateBitcoins(bool fGenerate, int nThreads); + #endif +#endif + void UpdateTime(CBlockHeader* pblock, const Consensus::Params& consensusParams, const CBlockIndex* pindexPrev); #endif // BITCOIN_MINER_H diff --git a/src/net.cpp b/src/net.cpp index a65dacdaf..073353be5 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -72,13 +72,12 @@ bool fListen = true; uint64_t nLocalServices = NODE_NETWORK; CCriticalSection cs_mapLocalHost; map mapLocalHost; -static bool vfReachable[NET_MAX] = {}; static bool vfLimited[NET_MAX] = {}; static CNode* pnodeLocalHost = NULL; uint64_t nLocalHostNonce = 0; static std::vector vhListenSocket; CAddrMan addrman; -int nMaxConnections = 125; +int nMaxConnections = DEFAULT_MAX_PEER_CONNECTIONS; bool fAddressesInitialized = false; vector vNodes; @@ -107,7 +106,7 @@ boost::condition_variable messageHandlerCondition; static CNodeSignals g_signals; CNodeSignals& GetNodeSignals() { return g_signals; } -void AddOneShot(string strDest) +void AddOneShot(const std::string& strDest) { LOCK(cs_vOneShots); vOneShots.push_back(strDest); @@ -213,19 +212,12 @@ void AdvertizeLocal(CNode *pnode) } if (addrLocal.IsRoutable()) { + LogPrintf("AdvertizeLocal: advertizing address %s\n", addrLocal.ToString()); pnode->PushAddress(addrLocal); } } } -void SetReachable(enum Network net, bool fFlag) -{ - LOCK(cs_mapLocalHost); - vfReachable[net] = fFlag; - if (net == NET_IPV6 && fFlag) - vfReachable[NET_IPV4] = true; -} - // learn a new local address bool AddLocal(const CService& addr, int nScore) { @@ -248,7 +240,6 @@ bool AddLocal(const CService& addr, int nScore) info.nScore = nScore + (fAlready ? 1 : 0); info.nPort = addr.GetPort(); } - SetReachable(addr.GetNetwork()); } return true; @@ -259,6 +250,14 @@ bool AddLocal(const CNetAddr &addr, int nScore) return AddLocal(CService(addr, GetListenPort()), nScore); } +bool RemoveLocal(const CService& addr) +{ + LOCK(cs_mapLocalHost); + LogPrintf("RemoveLocal(%s)\n", addr.ToString()); + mapLocalHost.erase(addr); + return true; +} + /** Make a particular network entirely off-limits (no automatic connects to it) */ void SetLimited(enum Network net, bool fLimited) { @@ -303,7 +302,7 @@ bool IsLocal(const CService& addr) bool IsReachable(enum Network net) { LOCK(cs_mapLocalHost); - return vfReachable[net] && !vfLimited[net]; + return !vfLimited[net]; } /** check whether a given address is in a network we can probably connect to */ @@ -333,6 +332,15 @@ CNode* FindNode(const CNetAddr& ip) return NULL; } +CNode* FindNode(const CSubNet& subNet) +{ + LOCK(cs_vNodes); + BOOST_FOREACH(CNode* pnode, vNodes) + if (subNet.Match((CNetAddr)pnode->addr)) + return (pnode); + return NULL; +} + CNode* FindNode(const std::string& addrName) { LOCK(cs_vNodes); @@ -441,11 +449,12 @@ void CNode::PushVersion() -std::map CNode::setBanned; +std::map CNode::setBanned; CCriticalSection CNode::cs_setBanned; void CNode::ClearBanned() { + LOCK(cs_setBanned); setBanned.clear(); } @@ -454,7 +463,24 @@ bool CNode::IsBanned(CNetAddr ip) bool fResult = false; { LOCK(cs_setBanned); - std::map::iterator i = setBanned.find(ip); + for (std::map::iterator it = setBanned.begin(); it != setBanned.end(); it++) + { + CSubNet subNet = (*it).first; + int64_t t = (*it).second; + + if(subNet.Match(ip) && GetTime() < t) + fResult = true; + } + } + return fResult; +} + +bool CNode::IsBanned(CSubNet subnet) +{ + bool fResult = false; + { + LOCK(cs_setBanned); + std::map::iterator i = setBanned.find(subnet); if (i != setBanned.end()) { int64_t t = (*i).second; @@ -465,14 +491,37 @@ bool CNode::IsBanned(CNetAddr ip) return fResult; } -bool CNode::Ban(const CNetAddr &addr) { +void CNode::Ban(const CNetAddr& addr, int64_t bantimeoffset, bool sinceUnixEpoch) { + CSubNet subNet(addr.ToString()+(addr.IsIPv4() ? "/32" : "/128")); + Ban(subNet, bantimeoffset, sinceUnixEpoch); +} + +void CNode::Ban(const CSubNet& subNet, int64_t bantimeoffset, bool sinceUnixEpoch) { int64_t banTime = GetTime()+GetArg("-bantime", 60*60*24); // Default 24-hour ban - { - LOCK(cs_setBanned); - if (setBanned[addr] < banTime) - setBanned[addr] = banTime; - } - return true; + if (bantimeoffset > 0) + banTime = (sinceUnixEpoch ? 0 : GetTime() )+bantimeoffset; + + LOCK(cs_setBanned); + if (setBanned[subNet] < banTime) + setBanned[subNet] = banTime; +} + +bool CNode::Unban(const CNetAddr &addr) { + CSubNet subNet(addr.ToString()+(addr.IsIPv4() ? "/32" : "/128")); + return Unban(subNet); +} + +bool CNode::Unban(const CSubNet &subNet) { + LOCK(cs_setBanned); + if (setBanned.erase(subNet)) + return true; + return false; +} + +void CNode::GetBanned(std::map &banMap) +{ + LOCK(cs_setBanned); + banMap = setBanned; //create a thread safe copy } @@ -763,8 +812,6 @@ static bool AttemptToEvictConnection(bool fPreferNewConnection) { continue; if (node->fDisconnect) continue; - if (node->addr.IsLocal()) - continue; vEvictionCandidates.push_back(CNodeRef(node)); } } @@ -795,15 +842,20 @@ static bool AttemptToEvictConnection(bool fPreferNewConnection) { if (vEvictionCandidates.empty()) return false; - // Identify the network group with the most connections + // Identify the network group with the most connections and youngest member. + // (vEvictionCandidates is already sorted by reverse connect time) std::vector naMostConnections; unsigned int nMostConnections = 0; + int64_t nMostConnectionsTime = 0; std::map, std::vector > mapAddrCounts; BOOST_FOREACH(const CNodeRef &node, vEvictionCandidates) { mapAddrCounts[node->addr.GetGroup()].push_back(node); + int64_t grouptime = mapAddrCounts[node->addr.GetGroup()][0]->nTimeConnected; + size_t groupsize = mapAddrCounts[node->addr.GetGroup()].size(); - if (mapAddrCounts[node->addr.GetGroup()].size() > nMostConnections) { - nMostConnections = mapAddrCounts[node->addr.GetGroup()].size(); + if (groupsize > nMostConnections || (groupsize == nMostConnections && grouptime > nMostConnectionsTime)) { + nMostConnections = groupsize; + nMostConnectionsTime = grouptime; naMostConnections = node->addr.GetGroup(); } } @@ -811,14 +863,13 @@ static bool AttemptToEvictConnection(bool fPreferNewConnection) { // Reduce to the network group with the most connections vEvictionCandidates = mapAddrCounts[naMostConnections]; - // Do not disconnect peers if there is only 1 connection from their network group + // Do not disconnect peers if there is only one unprotected connection from their network group. if (vEvictionCandidates.size() <= 1) // unless we prefer the new connection (for whitelisted peers) if (!fPreferNewConnection) return false; - // Disconnect the most recent connection from the network group with the most connections - std::sort(vEvictionCandidates.begin(), vEvictionCandidates.end(), ReverseCompareNodeTimeConnected); + // Disconnect from the network group with the most connections vEvictionCandidates[0]->fDisconnect = true; return true; @@ -1317,7 +1368,7 @@ void ThreadDNSAddressSeed() vector vAdd; if (LookupHost(seed.host.c_str(), vIPs)) { - BOOST_FOREACH(CNetAddr& ip, vIPs) + BOOST_FOREACH(const CNetAddr& ip, vIPs) { int nOneDay = 24*3600; CAddress addr = CAddress(CService(ip, Params().GetDefaultPort())); @@ -1381,7 +1432,7 @@ void ThreadOpenConnections() for (int64_t nLoop = 0;; nLoop++) { ProcessOneShot(); - BOOST_FOREACH(string strAddr, mapMultiArgs["-connect"]) + BOOST_FOREACH(const std::string& strAddr, mapMultiArgs["-connect"]) { CAddress addr; OpenNetworkConnection(addr, NULL, strAddr.c_str()); @@ -1484,10 +1535,10 @@ void ThreadOpenAddedConnections() list lAddresses(0); { LOCK(cs_vAddedNodes); - BOOST_FOREACH(string& strAddNode, vAddedNodes) + BOOST_FOREACH(const std::string& strAddNode, vAddedNodes) lAddresses.push_back(strAddNode); } - BOOST_FOREACH(string& strAddNode, lAddresses) { + BOOST_FOREACH(const std::string& strAddNode, lAddresses) { CAddress addr; CSemaphoreGrant grant(*semOutbound); OpenNetworkConnection(addr, &grant, strAddNode.c_str()); @@ -1502,20 +1553,19 @@ void ThreadOpenAddedConnections() list lAddresses(0); { LOCK(cs_vAddedNodes); - BOOST_FOREACH(string& strAddNode, vAddedNodes) + BOOST_FOREACH(const std::string& strAddNode, vAddedNodes) lAddresses.push_back(strAddNode); } list > lservAddressesToAdd(0); - BOOST_FOREACH(string& strAddNode, lAddresses) - { + BOOST_FOREACH(const std::string& strAddNode, lAddresses) { vector vservNode(0); if(Lookup(strAddNode.c_str(), vservNode, Params().GetDefaultPort(), fNameLookup, 0)) { lservAddressesToAdd.push_back(vservNode); { LOCK(cs_setservAddNodeAddresses); - BOOST_FOREACH(CService& serv, vservNode) + BOOST_FOREACH(const CService& serv, vservNode) setservAddNodeAddresses.insert(serv); } } @@ -1526,7 +1576,7 @@ void ThreadOpenAddedConnections() LOCK(cs_vNodes); BOOST_FOREACH(CNode* pnode, vNodes) for (list >::iterator it = lservAddressesToAdd.begin(); it != lservAddressesToAdd.end(); it++) - BOOST_FOREACH(CService& addrNode, *(it)) + BOOST_FOREACH(const CService& addrNode, *(it)) if (pnode->addr == addrNode) { it = lservAddressesToAdd.erase(it); @@ -2111,7 +2161,7 @@ bool CAddrDB::Read(CAddrMan& addr) unsigned int ReceiveFloodSize() { return 1000*GetArg("-maxreceivebuffer", 5*1000); } unsigned int SendBufferSize() { return 1000*GetArg("-maxsendbuffer", 1*1000); } -CNode::CNode(SOCKET hSocketIn, CAddress addrIn, std::string addrNameIn, bool fInboundIn) : +CNode::CNode(SOCKET hSocketIn, const CAddress& addrIn, const std::string& addrNameIn, bool fInboundIn) : ssSend(SER_NETWORK, INIT_PROTO_VERSION), addrKnown(5000, 0.001), setInventoryKnown(SendBufferSize() / 1000) diff --git a/src/net.h b/src/net.h index 50fb90dca..f7ebf11f6 100644 --- a/src/net.h +++ b/src/net.h @@ -61,13 +61,16 @@ static const bool DEFAULT_UPNP = false; static const size_t MAPASKFOR_MAX_SZ = MAX_INV_SZ; /** The maximum number of entries in setAskFor (larger due to getdata latency)*/ static const size_t SETASKFOR_MAX_SZ = 2 * MAX_INV_SZ; +/** The maximum number of peer connections to maintain. */ +static const unsigned int DEFAULT_MAX_PEER_CONNECTIONS = 125; unsigned int ReceiveFloodSize(); unsigned int SendBufferSize(); -void AddOneShot(std::string strDest); +void AddOneShot(const std::string& strDest); void AddressCurrentlyConnected(const CService& addr); CNode* FindNode(const CNetAddr& ip); +CNode* FindNode(const CSubNet& subNet); CNode* FindNode(const std::string& addrName); CNode* FindNode(const CService& ip); CNode* ConnectNode(CAddress addrConnect, const char *pszDest = NULL); @@ -128,12 +131,12 @@ bool IsLimited(enum Network net); bool IsLimited(const CNetAddr& addr); bool AddLocal(const CService& addr, int nScore = LOCAL_NONE); bool AddLocal(const CNetAddr& addr, int nScore = LOCAL_NONE); +bool RemoveLocal(const CService& addr); bool SeenLocal(const CService& addr); bool IsLocal(const CService& addr); bool GetLocal(CService &addr, const CNetAddr *paddrPeer = NULL); bool IsReachable(enum Network net); bool IsReachable(const CNetAddr &addr); -void SetReachable(enum Network net, bool fFlag = true); CAddress GetLocalAddress(const CNetAddr *paddrPeer = NULL); @@ -288,7 +291,7 @@ protected: // Denial-of-service detection/prevention // Key is IP address, value is banned-until-time - static std::map setBanned; + static std::map setBanned; static CCriticalSection cs_setBanned; // Whitelisted ranges. Any node connecting from these is automatically @@ -328,7 +331,7 @@ public: // Whether a ping is requested. bool fPingQueued; - CNode(SOCKET hSocketIn, CAddress addrIn, std::string addrNameIn = "", bool fInboundIn=false); + CNode(SOCKET hSocketIn, const CAddress &addrIn, const std::string &addrNameIn = "", bool fInboundIn = false); ~CNode(); private: @@ -613,7 +616,13 @@ public: // new code. static void ClearBanned(); // needed for unit testing static bool IsBanned(CNetAddr ip); - static bool Ban(const CNetAddr &ip); + static bool IsBanned(CSubNet subnet); + static void Ban(const CNetAddr &ip, int64_t bantimeoffset = 0, bool sinceUnixEpoch = false); + static void Ban(const CSubNet &subNet, int64_t bantimeoffset = 0, bool sinceUnixEpoch = false); + static bool Unban(const CNetAddr &ip); + static bool Unban(const CSubNet &ip); + static void GetBanned(std::map &banmap); + void copyStats(CNodeStats &stats); static bool IsWhitelistedRange(const CNetAddr &ip); diff --git a/src/netbase.cpp b/src/netbase.cpp index b46fd11e3..c65d66ac1 100644 --- a/src/netbase.cpp +++ b/src/netbase.cpp @@ -233,10 +233,7 @@ bool LookupNumeric(const char *pszName, CService& addr, int portDefault) return Lookup(pszName, addr, portDefault, false); } -/** - * Convert milliseconds to a struct timeval for select. - */ -struct timeval static MillisToTimeval(int64_t nTimeout) +struct timeval MillisToTimeval(int64_t nTimeout) { struct timeval timeout; timeout.tv_sec = nTimeout / 1000; @@ -1346,6 +1343,11 @@ bool operator!=(const CSubNet& a, const CSubNet& b) return !(a==b); } +bool operator<(const CSubNet& a, const CSubNet& b) +{ + return (a.network < b.network || (a.network == b.network && memcmp(a.netmask, b.netmask, 16) < 0)); +} + #ifdef WIN32 std::string NetworkErrorString(int err) { diff --git a/src/netbase.h b/src/netbase.h index 1f2957116..21ac0aa4c 100644 --- a/src/netbase.h +++ b/src/netbase.h @@ -125,6 +125,7 @@ class CSubNet friend bool operator==(const CSubNet& a, const CSubNet& b); friend bool operator!=(const CSubNet& a, const CSubNet& b); + friend bool operator<(const CSubNet& a, const CSubNet& b); }; /** A combination of a network address (CNetAddr) and a (TCP) port */ @@ -202,5 +203,9 @@ std::string NetworkErrorString(int err); bool CloseSocket(SOCKET& hSocket); /** Disable or enable blocking-mode for a socket */ bool SetSocketNonBlocking(SOCKET& hSocket, bool fNonBlocking); +/** + * Convert milliseconds to a struct timeval for e.g. select. + */ +struct timeval MillisToTimeval(int64_t nTimeout); #endif // BITCOIN_NETBASE_H diff --git a/src/noui.cpp b/src/noui.cpp index 3a7736191..0d9207c11 100644 --- a/src/noui.cpp +++ b/src/noui.cpp @@ -39,6 +39,11 @@ static bool noui_ThreadSafeMessageBox(const std::string& message, const std::str return false; } +static bool noui_ThreadSafeQuestion(const std::string& /* ignored interactive message */, const std::string& message, const std::string& caption, unsigned int style) +{ + return noui_ThreadSafeMessageBox(message, caption, style); +} + static void noui_InitMessage(const std::string& message) { LogPrintf("init message: %s\n", message); @@ -48,5 +53,6 @@ void noui_connect() { // Connect bitcoind signal handlers uiInterface.ThreadSafeMessageBox.connect(noui_ThreadSafeMessageBox); + uiInterface.ThreadSafeQuestion.connect(noui_ThreadSafeQuestion); uiInterface.InitMessage.connect(noui_InitMessage); } diff --git a/src/pow.cpp b/src/pow.cpp index 0a62f46ee..cbee3f6a6 100644 --- a/src/pow.cpp +++ b/src/pow.cpp @@ -16,6 +16,10 @@ #include "sodium.h" +#ifdef ENABLE_RUST +#include "librustzcash.h" +#endif // ENABLE_RUST + unsigned int GetNextWorkRequired(const CBlockIndex* pindexLast, const CBlockHeader *pblock, const Consensus::Params& params) { unsigned int nProofOfWorkLimit = UintToArith256(params.powLimit).GetCompact(); @@ -95,6 +99,14 @@ bool CheckEquihashSolution(const CBlockHeader *pblock, const CChainParams& param // H(I||V||... crypto_generichash_blake2b_update(&state, (unsigned char*)&ss[0], ss.size()); + #ifdef ENABLE_RUST + // Ensure that our Rust interactions are working in production builds. This is + // temporary and should be removed. + { + assert(librustzcash_xor(0x0f0f0f0f0f0f0f0f, 0x1111111111111111) == 0x1e1e1e1e1e1e1e1e); + } + #endif // ENABLE_RUST + bool isValid; EhIsValidSolution(n, k, state, pblock->nSolution, isValid); if (!isValid) diff --git a/src/primitives/transaction.h b/src/primitives/transaction.h index 1645285fc..b40f2d031 100644 --- a/src/primitives/transaction.h +++ b/src/primitives/transaction.h @@ -278,10 +278,13 @@ public: // which has units satoshis-per-kilobyte. // If you'd pay more than 1/3 in fees // to spend something, then we consider it dust. - // A typical txout is 34 bytes big, and will + // A typical spendable txout is 34 bytes big, and will // need a CTxIn of at least 148 bytes to spend: - // so dust is a txout less than 546 satoshis + // so dust is a spendable txout less than 54 satoshis // with default minRelayTxFee. + if (scriptPubKey.IsUnspendable()) + return 0; + size_t nSize = GetSerializeSize(SER_DISK,0)+148u; return 3*minRelayTxFee.GetFee(nSize); } diff --git a/src/qt/addressbookpage.cpp b/src/qt/addressbookpage.cpp deleted file mode 100644 index af6801919..000000000 --- a/src/qt/addressbookpage.cpp +++ /dev/null @@ -1,313 +0,0 @@ -// Copyright (c) 2011-2013 The Bitcoin Core developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#if defined(HAVE_CONFIG_H) -#include "config/bitcoin-config.h" -#endif - -#include "addressbookpage.h" -#include "ui_addressbookpage.h" - -#include "addresstablemodel.h" -#include "bitcoingui.h" -#include "csvmodelwriter.h" -#include "editaddressdialog.h" -#include "guiutil.h" -#include "scicon.h" - -#include -#include -#include -#include - -AddressBookPage::AddressBookPage(Mode mode, Tabs tab, QWidget *parent) : - QDialog(parent), - ui(new Ui::AddressBookPage), - model(0), - mode(mode), - tab(tab) -{ - ui->setupUi(this); - -#ifdef Q_OS_MAC // Icons on push buttons are very uncommon on Mac - ui->newAddress->setIcon(QIcon()); - ui->copyAddress->setIcon(QIcon()); - ui->deleteAddress->setIcon(QIcon()); - ui->exportButton->setIcon(QIcon()); -#else - ui->newAddress->setIcon(SingleColorIcon(":/icons/add")); - ui->copyAddress->setIcon(SingleColorIcon(":/icons/editcopy")); - ui->deleteAddress->setIcon(SingleColorIcon(":/icons/remove")); - ui->exportButton->setIcon(SingleColorIcon(":/icons/export")); -#endif - - switch(mode) - { - case ForSelection: - switch(tab) - { - case SendingTab: setWindowTitle(tr("Choose the address to send coins to")); break; - case ReceivingTab: setWindowTitle(tr("Choose the address to receive coins with")); break; - } - connect(ui->tableView, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(accept())); - ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers); - ui->tableView->setFocus(); - ui->closeButton->setText(tr("C&hoose")); - ui->exportButton->hide(); - break; - case ForEditing: - switch(tab) - { - case SendingTab: setWindowTitle(tr("Sending addresses")); break; - case ReceivingTab: setWindowTitle(tr("Receiving addresses")); break; - } - break; - } - switch(tab) - { - case SendingTab: - ui->labelExplanation->setText(tr("These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins.")); - ui->deleteAddress->setVisible(true); - break; - case ReceivingTab: - ui->labelExplanation->setText(tr("These are your Bitcoin addresses for receiving payments. It is recommended to use a new receiving address for each transaction.")); - ui->deleteAddress->setVisible(false); - break; - } - - // Context menu actions - QAction *copyAddressAction = new QAction(tr("&Copy Address"), this); - QAction *copyLabelAction = new QAction(tr("Copy &Label"), this); - QAction *editAction = new QAction(tr("&Edit"), this); - deleteAction = new QAction(ui->deleteAddress->text(), this); - - // Build context menu - contextMenu = new QMenu(); - contextMenu->addAction(copyAddressAction); - contextMenu->addAction(copyLabelAction); - contextMenu->addAction(editAction); - if(tab == SendingTab) - contextMenu->addAction(deleteAction); - contextMenu->addSeparator(); - - // Connect signals for context menu actions - connect(copyAddressAction, SIGNAL(triggered()), this, SLOT(on_copyAddress_clicked())); - connect(copyLabelAction, SIGNAL(triggered()), this, SLOT(onCopyLabelAction())); - connect(editAction, SIGNAL(triggered()), this, SLOT(onEditAction())); - connect(deleteAction, SIGNAL(triggered()), this, SLOT(on_deleteAddress_clicked())); - - connect(ui->tableView, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(contextualMenu(QPoint))); - - connect(ui->closeButton, SIGNAL(clicked()), this, SLOT(accept())); -} - -AddressBookPage::~AddressBookPage() -{ - delete ui; -} - -void AddressBookPage::setModel(AddressTableModel *model) -{ - this->model = model; - if(!model) - return; - - proxyModel = new QSortFilterProxyModel(this); - proxyModel->setSourceModel(model); - proxyModel->setDynamicSortFilter(true); - proxyModel->setSortCaseSensitivity(Qt::CaseInsensitive); - proxyModel->setFilterCaseSensitivity(Qt::CaseInsensitive); - switch(tab) - { - case ReceivingTab: - // Receive filter - proxyModel->setFilterRole(AddressTableModel::TypeRole); - proxyModel->setFilterFixedString(AddressTableModel::Receive); - break; - case SendingTab: - // Send filter - proxyModel->setFilterRole(AddressTableModel::TypeRole); - proxyModel->setFilterFixedString(AddressTableModel::Send); - break; - } - ui->tableView->setModel(proxyModel); - ui->tableView->sortByColumn(0, Qt::AscendingOrder); - - // Set column widths -#if QT_VERSION < 0x050000 - ui->tableView->horizontalHeader()->setResizeMode(AddressTableModel::Label, QHeaderView::Stretch); - ui->tableView->horizontalHeader()->setResizeMode(AddressTableModel::Address, QHeaderView::ResizeToContents); -#else - ui->tableView->horizontalHeader()->setSectionResizeMode(AddressTableModel::Label, QHeaderView::Stretch); - ui->tableView->horizontalHeader()->setSectionResizeMode(AddressTableModel::Address, QHeaderView::ResizeToContents); -#endif - - connect(ui->tableView->selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)), - this, SLOT(selectionChanged())); - - // Select row for newly created address - connect(model, SIGNAL(rowsInserted(QModelIndex,int,int)), this, SLOT(selectNewAddress(QModelIndex,int,int))); - - selectionChanged(); -} - -void AddressBookPage::on_copyAddress_clicked() -{ - GUIUtil::copyEntryData(ui->tableView, AddressTableModel::Address); -} - -void AddressBookPage::onCopyLabelAction() -{ - GUIUtil::copyEntryData(ui->tableView, AddressTableModel::Label); -} - -void AddressBookPage::onEditAction() -{ - if(!model) - return; - - if(!ui->tableView->selectionModel()) - return; - QModelIndexList indexes = ui->tableView->selectionModel()->selectedRows(); - if(indexes.isEmpty()) - return; - - EditAddressDialog dlg( - tab == SendingTab ? - EditAddressDialog::EditSendingAddress : - EditAddressDialog::EditReceivingAddress, this); - dlg.setModel(model); - QModelIndex origIndex = proxyModel->mapToSource(indexes.at(0)); - dlg.loadRow(origIndex.row()); - dlg.exec(); -} - -void AddressBookPage::on_newAddress_clicked() -{ - if(!model) - return; - - EditAddressDialog dlg( - tab == SendingTab ? - EditAddressDialog::NewSendingAddress : - EditAddressDialog::NewReceivingAddress, this); - dlg.setModel(model); - if(dlg.exec()) - { - newAddressToSelect = dlg.getAddress(); - } -} - -void AddressBookPage::on_deleteAddress_clicked() -{ - QTableView *table = ui->tableView; - if(!table->selectionModel()) - return; - - QModelIndexList indexes = table->selectionModel()->selectedRows(); - if(!indexes.isEmpty()) - { - table->model()->removeRow(indexes.at(0).row()); - } -} - -void AddressBookPage::selectionChanged() -{ - // Set button states based on selected tab and selection - QTableView *table = ui->tableView; - if(!table->selectionModel()) - return; - - if(table->selectionModel()->hasSelection()) - { - switch(tab) - { - case SendingTab: - // In sending tab, allow deletion of selection - ui->deleteAddress->setEnabled(true); - ui->deleteAddress->setVisible(true); - deleteAction->setEnabled(true); - break; - case ReceivingTab: - // Deleting receiving addresses, however, is not allowed - ui->deleteAddress->setEnabled(false); - ui->deleteAddress->setVisible(false); - deleteAction->setEnabled(false); - break; - } - ui->copyAddress->setEnabled(true); - } - else - { - ui->deleteAddress->setEnabled(false); - ui->copyAddress->setEnabled(false); - } -} - -void AddressBookPage::done(int retval) -{ - QTableView *table = ui->tableView; - if(!table->selectionModel() || !table->model()) - return; - - // Figure out which address was selected, and return it - QModelIndexList indexes = table->selectionModel()->selectedRows(AddressTableModel::Address); - - Q_FOREACH (const QModelIndex& index, indexes) { - QVariant address = table->model()->data(index); - returnValue = address.toString(); - } - - if(returnValue.isEmpty()) - { - // If no address entry selected, return rejected - retval = Rejected; - } - - QDialog::done(retval); -} - -void AddressBookPage::on_exportButton_clicked() -{ - // CSV is currently the only supported format - QString filename = GUIUtil::getSaveFileName(this, - tr("Export Address List"), QString(), - tr("Comma separated file (*.csv)"), NULL); - - if (filename.isNull()) - return; - - CSVModelWriter writer(filename); - - // name, column, role - writer.setModel(proxyModel); - writer.addColumn("Label", AddressTableModel::Label, Qt::EditRole); - writer.addColumn("Address", AddressTableModel::Address, Qt::EditRole); - - if(!writer.write()) { - QMessageBox::critical(this, tr("Exporting Failed"), - tr("There was an error trying to save the address list to %1. Please try again.").arg(filename)); - } -} - -void AddressBookPage::contextualMenu(const QPoint &point) -{ - QModelIndex index = ui->tableView->indexAt(point); - if(index.isValid()) - { - contextMenu->exec(QCursor::pos()); - } -} - -void AddressBookPage::selectNewAddress(const QModelIndex &parent, int begin, int /*end*/) -{ - QModelIndex idx = proxyModel->mapFromSource(model->index(begin, AddressTableModel::Address, parent)); - if(idx.isValid() && (idx.data(Qt::EditRole).toString() == newAddressToSelect)) - { - // Select row of newly created address, once - ui->tableView->setFocus(); - ui->tableView->selectRow(idx.row()); - newAddressToSelect.clear(); - } -} diff --git a/src/qt/addressbookpage.h b/src/qt/addressbookpage.h deleted file mode 100644 index 09634ce33..000000000 --- a/src/qt/addressbookpage.h +++ /dev/null @@ -1,87 +0,0 @@ -// Copyright (c) 2011-2013 The Bitcoin Core developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#ifndef BITCOIN_QT_ADDRESSBOOKPAGE_H -#define BITCOIN_QT_ADDRESSBOOKPAGE_H - -#include - -class AddressTableModel; -class OptionsModel; - -namespace Ui { - class AddressBookPage; -} - -QT_BEGIN_NAMESPACE -class QItemSelection; -class QMenu; -class QModelIndex; -class QSortFilterProxyModel; -class QTableView; -QT_END_NAMESPACE - -/** Widget that shows a list of sending or receiving addresses. - */ -class AddressBookPage : public QDialog -{ - Q_OBJECT - -public: - enum Tabs { - SendingTab = 0, - ReceivingTab = 1 - }; - - enum Mode { - ForSelection, /**< Open address book to pick address */ - ForEditing /**< Open address book for editing */ - }; - - explicit AddressBookPage(Mode mode, Tabs tab, QWidget *parent); - ~AddressBookPage(); - - void setModel(AddressTableModel *model); - const QString &getReturnValue() const { return returnValue; } - -public Q_SLOTS: - void done(int retval); - -private: - Ui::AddressBookPage *ui; - AddressTableModel *model; - Mode mode; - Tabs tab; - QString returnValue; - QSortFilterProxyModel *proxyModel; - QMenu *contextMenu; - QAction *deleteAction; // to be able to explicitly disable it - QString newAddressToSelect; - -private Q_SLOTS: - /** Delete currently selected address entry */ - void on_deleteAddress_clicked(); - /** Create a new address for receiving coins and / or add a new address book entry */ - void on_newAddress_clicked(); - /** Copy address of currently selected address entry to clipboard */ - void on_copyAddress_clicked(); - /** Copy label of currently selected address entry to clipboard (no button) */ - void onCopyLabelAction(); - /** Edit currently selected address entry (no button) */ - void onEditAction(); - /** Export button clicked */ - void on_exportButton_clicked(); - - /** Set button states based on selected tab and selection */ - void selectionChanged(); - /** Spawn contextual menu (right mouse menu) for address book entry */ - void contextualMenu(const QPoint &point); - /** New entry/entries were added to address table */ - void selectNewAddress(const QModelIndex &parent, int begin, int /*end*/); - -Q_SIGNALS: - void sendCoins(QString addr); -}; - -#endif // BITCOIN_QT_ADDRESSBOOKPAGE_H diff --git a/src/qt/addresstablemodel.cpp b/src/qt/addresstablemodel.cpp deleted file mode 100644 index c5ac07cfc..000000000 --- a/src/qt/addresstablemodel.cpp +++ /dev/null @@ -1,454 +0,0 @@ -// Copyright (c) 2011-2013 The Bitcoin Core developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#include "addresstablemodel.h" - -#include "guiutil.h" -#include "walletmodel.h" - -#include "base58.h" -#include "wallet/wallet.h" - -#include - -#include -#include - -const QString AddressTableModel::Send = "S"; -const QString AddressTableModel::Receive = "R"; - -struct AddressTableEntry -{ - enum Type { - Sending, - Receiving, - Hidden /* QSortFilterProxyModel will filter these out */ - }; - - Type type; - QString label; - QString address; - - AddressTableEntry() {} - AddressTableEntry(Type type, const QString &label, const QString &address): - type(type), label(label), address(address) {} -}; - -struct AddressTableEntryLessThan -{ - bool operator()(const AddressTableEntry &a, const AddressTableEntry &b) const - { - return a.address < b.address; - } - bool operator()(const AddressTableEntry &a, const QString &b) const - { - return a.address < b; - } - bool operator()(const QString &a, const AddressTableEntry &b) const - { - return a < b.address; - } -}; - -/* Determine address type from address purpose */ -static AddressTableEntry::Type translateTransactionType(const QString &strPurpose, bool isMine) -{ - AddressTableEntry::Type addressType = AddressTableEntry::Hidden; - // "refund" addresses aren't shown, and change addresses aren't in mapAddressBook at all. - if (strPurpose == "send") - addressType = AddressTableEntry::Sending; - else if (strPurpose == "receive") - addressType = AddressTableEntry::Receiving; - else if (strPurpose == "unknown" || strPurpose == "") // if purpose not set, guess - addressType = (isMine ? AddressTableEntry::Receiving : AddressTableEntry::Sending); - return addressType; -} - -// Private implementation -class AddressTablePriv -{ -public: - CWallet *wallet; - QList cachedAddressTable; - AddressTableModel *parent; - - AddressTablePriv(CWallet *wallet, AddressTableModel *parent): - wallet(wallet), parent(parent) {} - - void refreshAddressTable() - { - cachedAddressTable.clear(); - { - LOCK(wallet->cs_wallet); - BOOST_FOREACH(const PAIRTYPE(CTxDestination, CAddressBookData)& item, wallet->mapAddressBook) - { - const CBitcoinAddress& address = item.first; - bool fMine = IsMine(*wallet, address.Get()); - AddressTableEntry::Type addressType = translateTransactionType( - QString::fromStdString(item.second.purpose), fMine); - const std::string& strName = item.second.name; - cachedAddressTable.append(AddressTableEntry(addressType, - QString::fromStdString(strName), - QString::fromStdString(address.ToString()))); - } - } - // qLowerBound() and qUpperBound() require our cachedAddressTable list to be sorted in asc order - // Even though the map is already sorted this re-sorting step is needed because the originating map - // is sorted by binary address, not by base58() address. - qSort(cachedAddressTable.begin(), cachedAddressTable.end(), AddressTableEntryLessThan()); - } - - void updateEntry(const QString &address, const QString &label, bool isMine, const QString &purpose, int status) - { - // Find address / label in model - QList::iterator lower = qLowerBound( - cachedAddressTable.begin(), cachedAddressTable.end(), address, AddressTableEntryLessThan()); - QList::iterator upper = qUpperBound( - cachedAddressTable.begin(), cachedAddressTable.end(), address, AddressTableEntryLessThan()); - int lowerIndex = (lower - cachedAddressTable.begin()); - int upperIndex = (upper - cachedAddressTable.begin()); - bool inModel = (lower != upper); - AddressTableEntry::Type newEntryType = translateTransactionType(purpose, isMine); - - switch(status) - { - case CT_NEW: - if(inModel) - { - qWarning() << "AddressTablePriv::updateEntry: Warning: Got CT_NEW, but entry is already in model"; - break; - } - parent->beginInsertRows(QModelIndex(), lowerIndex, lowerIndex); - cachedAddressTable.insert(lowerIndex, AddressTableEntry(newEntryType, label, address)); - parent->endInsertRows(); - break; - case CT_UPDATED: - if(!inModel) - { - qWarning() << "AddressTablePriv::updateEntry: Warning: Got CT_UPDATED, but entry is not in model"; - break; - } - lower->type = newEntryType; - lower->label = label; - parent->emitDataChanged(lowerIndex); - break; - case CT_DELETED: - if(!inModel) - { - qWarning() << "AddressTablePriv::updateEntry: Warning: Got CT_DELETED, but entry is not in model"; - break; - } - parent->beginRemoveRows(QModelIndex(), lowerIndex, upperIndex-1); - cachedAddressTable.erase(lower, upper); - parent->endRemoveRows(); - break; - } - } - - int size() - { - return cachedAddressTable.size(); - } - - AddressTableEntry *index(int idx) - { - if(idx >= 0 && idx < cachedAddressTable.size()) - { - return &cachedAddressTable[idx]; - } - else - { - return 0; - } - } -}; - -AddressTableModel::AddressTableModel(CWallet *wallet, WalletModel *parent) : - QAbstractTableModel(parent),walletModel(parent),wallet(wallet),priv(0) -{ - columns << tr("Label") << tr("Address"); - priv = new AddressTablePriv(wallet, this); - priv->refreshAddressTable(); -} - -AddressTableModel::~AddressTableModel() -{ - delete priv; -} - -int AddressTableModel::rowCount(const QModelIndex &parent) const -{ - Q_UNUSED(parent); - return priv->size(); -} - -int AddressTableModel::columnCount(const QModelIndex &parent) const -{ - Q_UNUSED(parent); - return columns.length(); -} - -QVariant AddressTableModel::data(const QModelIndex &index, int role) const -{ - if(!index.isValid()) - return QVariant(); - - AddressTableEntry *rec = static_cast(index.internalPointer()); - - if(role == Qt::DisplayRole || role == Qt::EditRole) - { - switch(index.column()) - { - case Label: - if(rec->label.isEmpty() && role == Qt::DisplayRole) - { - return tr("(no label)"); - } - else - { - return rec->label; - } - case Address: - return rec->address; - } - } - else if (role == Qt::FontRole) - { - QFont font; - if(index.column() == Address) - { - font = GUIUtil::bitcoinAddressFont(); - } - return font; - } - else if (role == TypeRole) - { - switch(rec->type) - { - case AddressTableEntry::Sending: - return Send; - case AddressTableEntry::Receiving: - return Receive; - default: break; - } - } - return QVariant(); -} - -bool AddressTableModel::setData(const QModelIndex &index, const QVariant &value, int role) -{ - if(!index.isValid()) - return false; - AddressTableEntry *rec = static_cast(index.internalPointer()); - std::string strPurpose = (rec->type == AddressTableEntry::Sending ? "send" : "receive"); - editStatus = OK; - - if(role == Qt::EditRole) - { - LOCK(wallet->cs_wallet); /* For SetAddressBook / DelAddressBook */ - CTxDestination curAddress = CBitcoinAddress(rec->address.toStdString()).Get(); - if(index.column() == Label) - { - // Do nothing, if old label == new label - if(rec->label == value.toString()) - { - editStatus = NO_CHANGES; - return false; - } - wallet->SetAddressBook(curAddress, value.toString().toStdString(), strPurpose); - } else if(index.column() == Address) { - CTxDestination newAddress = CBitcoinAddress(value.toString().toStdString()).Get(); - // Refuse to set invalid address, set error status and return false - if(boost::get(&newAddress)) - { - editStatus = INVALID_ADDRESS; - return false; - } - // Do nothing, if old address == new address - else if(newAddress == curAddress) - { - editStatus = NO_CHANGES; - return false; - } - // Check for duplicate addresses to prevent accidental deletion of addresses, if you try - // to paste an existing address over another address (with a different label) - else if(wallet->mapAddressBook.count(newAddress)) - { - editStatus = DUPLICATE_ADDRESS; - return false; - } - // Double-check that we're not overwriting a receiving address - else if(rec->type == AddressTableEntry::Sending) - { - // Remove old entry - wallet->DelAddressBook(curAddress); - // Add new entry with new address - wallet->SetAddressBook(newAddress, rec->label.toStdString(), strPurpose); - } - } - return true; - } - return false; -} - -QVariant AddressTableModel::headerData(int section, Qt::Orientation orientation, int role) const -{ - if(orientation == Qt::Horizontal) - { - if(role == Qt::DisplayRole && section < columns.size()) - { - return columns[section]; - } - } - return QVariant(); -} - -Qt::ItemFlags AddressTableModel::flags(const QModelIndex &index) const -{ - if(!index.isValid()) - return 0; - AddressTableEntry *rec = static_cast(index.internalPointer()); - - Qt::ItemFlags retval = Qt::ItemIsSelectable | Qt::ItemIsEnabled; - // Can edit address and label for sending addresses, - // and only label for receiving addresses. - if(rec->type == AddressTableEntry::Sending || - (rec->type == AddressTableEntry::Receiving && index.column()==Label)) - { - retval |= Qt::ItemIsEditable; - } - return retval; -} - -QModelIndex AddressTableModel::index(int row, int column, const QModelIndex &parent) const -{ - Q_UNUSED(parent); - AddressTableEntry *data = priv->index(row); - if(data) - { - return createIndex(row, column, priv->index(row)); - } - else - { - return QModelIndex(); - } -} - -void AddressTableModel::updateEntry(const QString &address, - const QString &label, bool isMine, const QString &purpose, int status) -{ - // Update address book model from Bitcoin core - priv->updateEntry(address, label, isMine, purpose, status); -} - -QString AddressTableModel::addRow(const QString &type, const QString &label, const QString &address) -{ - std::string strLabel = label.toStdString(); - std::string strAddress = address.toStdString(); - - editStatus = OK; - - if(type == Send) - { - if(!walletModel->validateAddress(address)) - { - editStatus = INVALID_ADDRESS; - return QString(); - } - // Check for duplicate addresses - { - LOCK(wallet->cs_wallet); - if(wallet->mapAddressBook.count(CBitcoinAddress(strAddress).Get())) - { - editStatus = DUPLICATE_ADDRESS; - return QString(); - } - } - } - else if(type == Receive) - { - // Generate a new address to associate with given label - CPubKey newKey; - if(!wallet->GetKeyFromPool(newKey)) - { - WalletModel::UnlockContext ctx(walletModel->requestUnlock()); - if(!ctx.isValid()) - { - // Unlock wallet failed or was cancelled - editStatus = WALLET_UNLOCK_FAILURE; - return QString(); - } - if(!wallet->GetKeyFromPool(newKey)) - { - editStatus = KEY_GENERATION_FAILURE; - return QString(); - } - } - strAddress = CBitcoinAddress(newKey.GetID()).ToString(); - } - else - { - return QString(); - } - - // Add entry - { - LOCK(wallet->cs_wallet); - wallet->SetAddressBook(CBitcoinAddress(strAddress).Get(), strLabel, - (type == Send ? "send" : "receive")); - } - return QString::fromStdString(strAddress); -} - -bool AddressTableModel::removeRows(int row, int count, const QModelIndex &parent) -{ - Q_UNUSED(parent); - AddressTableEntry *rec = priv->index(row); - if(count != 1 || !rec || rec->type == AddressTableEntry::Receiving) - { - // Can only remove one row at a time, and cannot remove rows not in model. - // Also refuse to remove receiving addresses. - return false; - } - { - LOCK(wallet->cs_wallet); - wallet->DelAddressBook(CBitcoinAddress(rec->address.toStdString()).Get()); - } - return true; -} - -/* Look up label for address in address book, if not found return empty string. - */ -QString AddressTableModel::labelForAddress(const QString &address) const -{ - { - LOCK(wallet->cs_wallet); - CBitcoinAddress address_parsed(address.toStdString()); - std::map::iterator mi = wallet->mapAddressBook.find(address_parsed.Get()); - if (mi != wallet->mapAddressBook.end()) - { - return QString::fromStdString(mi->second.name); - } - } - return QString(); -} - -int AddressTableModel::lookupAddress(const QString &address) const -{ - QModelIndexList lst = match(index(0, Address, QModelIndex()), - Qt::EditRole, address, 1, Qt::MatchExactly); - if(lst.isEmpty()) - { - return -1; - } - else - { - return lst.at(0).row(); - } -} - -void AddressTableModel::emitDataChanged(int idx) -{ - Q_EMIT dataChanged(index(idx, 0, QModelIndex()), index(idx, columns.length()-1, QModelIndex())); -} diff --git a/src/qt/addresstablemodel.h b/src/qt/addresstablemodel.h deleted file mode 100644 index 2b7475c4e..000000000 --- a/src/qt/addresstablemodel.h +++ /dev/null @@ -1,95 +0,0 @@ -// Copyright (c) 2011-2013 The Bitcoin Core developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#ifndef BITCOIN_QT_ADDRESSTABLEMODEL_H -#define BITCOIN_QT_ADDRESSTABLEMODEL_H - -#include -#include - -class AddressTablePriv; -class WalletModel; - -class CWallet; - -/** - Qt model of the address book in the core. This allows views to access and modify the address book. - */ -class AddressTableModel : public QAbstractTableModel -{ - Q_OBJECT - -public: - explicit AddressTableModel(CWallet *wallet, WalletModel *parent = 0); - ~AddressTableModel(); - - enum ColumnIndex { - Label = 0, /**< User specified label */ - Address = 1 /**< Bitcoin address */ - }; - - enum RoleIndex { - TypeRole = Qt::UserRole /**< Type of address (#Send or #Receive) */ - }; - - /** Return status of edit/insert operation */ - enum EditStatus { - OK, /**< Everything ok */ - NO_CHANGES, /**< No changes were made during edit operation */ - INVALID_ADDRESS, /**< Unparseable address */ - DUPLICATE_ADDRESS, /**< Address already in address book */ - WALLET_UNLOCK_FAILURE, /**< Wallet could not be unlocked to create new receiving address */ - KEY_GENERATION_FAILURE /**< Generating a new public key for a receiving address failed */ - }; - - static const QString Send; /**< Specifies send address */ - static const QString Receive; /**< Specifies receive address */ - - /** @name Methods overridden from QAbstractTableModel - @{*/ - int rowCount(const QModelIndex &parent) const; - int columnCount(const QModelIndex &parent) const; - QVariant data(const QModelIndex &index, int role) const; - bool setData(const QModelIndex &index, const QVariant &value, int role); - QVariant headerData(int section, Qt::Orientation orientation, int role) const; - QModelIndex index(int row, int column, const QModelIndex &parent) const; - bool removeRows(int row, int count, const QModelIndex &parent = QModelIndex()); - Qt::ItemFlags flags(const QModelIndex &index) const; - /*@}*/ - - /* Add an address to the model. - Returns the added address on success, and an empty string otherwise. - */ - QString addRow(const QString &type, const QString &label, const QString &address); - - /* Look up label for address in address book, if not found return empty string. - */ - QString labelForAddress(const QString &address) const; - - /* Look up row index of an address in the model. - Return -1 if not found. - */ - int lookupAddress(const QString &address) const; - - EditStatus getEditStatus() const { return editStatus; } - -private: - WalletModel *walletModel; - CWallet *wallet; - AddressTablePriv *priv; - QStringList columns; - EditStatus editStatus; - - /** Notify listeners that data changed. */ - void emitDataChanged(int index); - -public Q_SLOTS: - /* Update address list from core. - */ - void updateEntry(const QString &address, const QString &label, bool isMine, const QString &purpose, int status); - - friend class AddressTablePriv; -}; - -#endif // BITCOIN_QT_ADDRESSTABLEMODEL_H diff --git a/src/qt/askpassphrasedialog.cpp b/src/qt/askpassphrasedialog.cpp deleted file mode 100644 index 441814ff0..000000000 --- a/src/qt/askpassphrasedialog.cpp +++ /dev/null @@ -1,258 +0,0 @@ -// Copyright (c) 2011-2013 The Bitcoin Core developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#include "askpassphrasedialog.h" -#include "ui_askpassphrasedialog.h" - -#include "guiconstants.h" -#include "walletmodel.h" - -#include "support/allocators/secure.h" - -#include -#include -#include - -AskPassphraseDialog::AskPassphraseDialog(Mode mode, QWidget *parent) : - QDialog(parent), - ui(new Ui::AskPassphraseDialog), - mode(mode), - model(0), - fCapsLock(false) -{ - ui->setupUi(this); - - ui->passEdit1->setMinimumSize(ui->passEdit1->sizeHint()); - ui->passEdit2->setMinimumSize(ui->passEdit2->sizeHint()); - ui->passEdit3->setMinimumSize(ui->passEdit3->sizeHint()); - - ui->passEdit1->setMaxLength(MAX_PASSPHRASE_SIZE); - ui->passEdit2->setMaxLength(MAX_PASSPHRASE_SIZE); - ui->passEdit3->setMaxLength(MAX_PASSPHRASE_SIZE); - - // Setup Caps Lock detection. - ui->passEdit1->installEventFilter(this); - ui->passEdit2->installEventFilter(this); - ui->passEdit3->installEventFilter(this); - - switch(mode) - { - case Encrypt: // Ask passphrase x2 - ui->warningLabel->setText(tr("Enter the new passphrase to the wallet.
Please use a passphrase of ten or more random characters, or eight or more words.")); - ui->passLabel1->hide(); - ui->passEdit1->hide(); - setWindowTitle(tr("Encrypt wallet")); - break; - case Unlock: // Ask passphrase - ui->warningLabel->setText(tr("This operation needs your wallet passphrase to unlock the wallet.")); - ui->passLabel2->hide(); - ui->passEdit2->hide(); - ui->passLabel3->hide(); - ui->passEdit3->hide(); - setWindowTitle(tr("Unlock wallet")); - break; - case Decrypt: // Ask passphrase - ui->warningLabel->setText(tr("This operation needs your wallet passphrase to decrypt the wallet.")); - ui->passLabel2->hide(); - ui->passEdit2->hide(); - ui->passLabel3->hide(); - ui->passEdit3->hide(); - setWindowTitle(tr("Decrypt wallet")); - break; - case ChangePass: // Ask old passphrase + new passphrase x2 - setWindowTitle(tr("Change passphrase")); - ui->warningLabel->setText(tr("Enter the old passphrase and new passphrase to the wallet.")); - break; - } - textChanged(); - connect(ui->passEdit1, SIGNAL(textChanged(QString)), this, SLOT(textChanged())); - connect(ui->passEdit2, SIGNAL(textChanged(QString)), this, SLOT(textChanged())); - connect(ui->passEdit3, SIGNAL(textChanged(QString)), this, SLOT(textChanged())); -} - -AskPassphraseDialog::~AskPassphraseDialog() -{ - // Attempt to overwrite text so that they do not linger around in memory - ui->passEdit1->setText(QString(" ").repeated(ui->passEdit1->text().size())); - ui->passEdit2->setText(QString(" ").repeated(ui->passEdit2->text().size())); - ui->passEdit3->setText(QString(" ").repeated(ui->passEdit3->text().size())); - delete ui; -} - -void AskPassphraseDialog::setModel(WalletModel *model) -{ - this->model = model; -} - -void AskPassphraseDialog::accept() -{ - SecureString oldpass, newpass1, newpass2; - if(!model) - return; - oldpass.reserve(MAX_PASSPHRASE_SIZE); - newpass1.reserve(MAX_PASSPHRASE_SIZE); - newpass2.reserve(MAX_PASSPHRASE_SIZE); - // TODO: get rid of this .c_str() by implementing SecureString::operator=(std::string) - // Alternately, find a way to make this input mlock()'d to begin with. - oldpass.assign(ui->passEdit1->text().toStdString().c_str()); - newpass1.assign(ui->passEdit2->text().toStdString().c_str()); - newpass2.assign(ui->passEdit3->text().toStdString().c_str()); - - switch(mode) - { - case Encrypt: { - if(newpass1.empty() || newpass2.empty()) - { - // Cannot encrypt with empty passphrase - break; - } - QMessageBox::StandardButton retval = QMessageBox::question(this, tr("Confirm wallet encryption"), - tr("Warning: If you encrypt your wallet and lose your passphrase, you will LOSE ALL OF YOUR BITCOINS!") + "

" + tr("Are you sure you wish to encrypt your wallet?"), - QMessageBox::Yes|QMessageBox::Cancel, - QMessageBox::Cancel); - if(retval == QMessageBox::Yes) - { - if(newpass1 == newpass2) - { - if(model->setWalletEncrypted(true, newpass1)) - { - QMessageBox::warning(this, tr("Wallet encrypted"), - "" + - tr("Bitcoin Core 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.") + - "

" + - tr("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.") + - "
"); - QApplication::quit(); - } - else - { - QMessageBox::critical(this, tr("Wallet encryption failed"), - tr("Wallet encryption failed due to an internal error. Your wallet was not encrypted.")); - } - QDialog::accept(); // Success - } - else - { - QMessageBox::critical(this, tr("Wallet encryption failed"), - tr("The supplied passphrases do not match.")); - } - } - else - { - QDialog::reject(); // Cancelled - } - } break; - case Unlock: - if(!model->setWalletLocked(false, oldpass)) - { - QMessageBox::critical(this, tr("Wallet unlock failed"), - tr("The passphrase entered for the wallet decryption was incorrect.")); - } - else - { - QDialog::accept(); // Success - } - break; - case Decrypt: - if(!model->setWalletEncrypted(false, oldpass)) - { - QMessageBox::critical(this, tr("Wallet decryption failed"), - tr("The passphrase entered for the wallet decryption was incorrect.")); - } - else - { - QDialog::accept(); // Success - } - break; - case ChangePass: - if(newpass1 == newpass2) - { - if(model->changePassphrase(oldpass, newpass1)) - { - QMessageBox::information(this, tr("Wallet encrypted"), - tr("Wallet passphrase was successfully changed.")); - QDialog::accept(); // Success - } - else - { - QMessageBox::critical(this, tr("Wallet encryption failed"), - tr("The passphrase entered for the wallet decryption was incorrect.")); - } - } - else - { - QMessageBox::critical(this, tr("Wallet encryption failed"), - tr("The supplied passphrases do not match.")); - } - break; - } -} - -void AskPassphraseDialog::textChanged() -{ - // Validate input, set Ok button to enabled when acceptable - bool acceptable = false; - switch(mode) - { - case Encrypt: // New passphrase x2 - acceptable = !ui->passEdit2->text().isEmpty() && !ui->passEdit3->text().isEmpty(); - break; - case Unlock: // Old passphrase x1 - case Decrypt: - acceptable = !ui->passEdit1->text().isEmpty(); - break; - case ChangePass: // Old passphrase x1, new passphrase x2 - acceptable = !ui->passEdit1->text().isEmpty() && !ui->passEdit2->text().isEmpty() && !ui->passEdit3->text().isEmpty(); - break; - } - ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(acceptable); -} - -bool AskPassphraseDialog::event(QEvent *event) -{ - // Detect Caps Lock key press. - if (event->type() == QEvent::KeyPress) { - QKeyEvent *ke = static_cast(event); - if (ke->key() == Qt::Key_CapsLock) { - fCapsLock = !fCapsLock; - } - if (fCapsLock) { - ui->capsLabel->setText(tr("Warning: The Caps Lock key is on!")); - } else { - ui->capsLabel->clear(); - } - } - return QWidget::event(event); -} - -bool AskPassphraseDialog::eventFilter(QObject *object, QEvent *event) -{ - /* Detect Caps Lock. - * There is no good OS-independent way to check a key state in Qt, but we - * can detect Caps Lock by checking for the following condition: - * Shift key is down and the result is a lower case character, or - * Shift key is not down and the result is an upper case character. - */ - if (event->type() == QEvent::KeyPress) { - QKeyEvent *ke = static_cast(event); - QString str = ke->text(); - if (str.length() != 0) { - const QChar *psz = str.unicode(); - bool fShift = (ke->modifiers() & Qt::ShiftModifier) != 0; - if ((fShift && *psz >= 'a' && *psz <= 'z') || (!fShift && *psz >= 'A' && *psz <= 'Z')) { - fCapsLock = true; - ui->capsLabel->setText(tr("Warning: The Caps Lock key is on!")); - } else if (psz->isLetter()) { - fCapsLock = false; - ui->capsLabel->clear(); - } - } - } - return QDialog::eventFilter(object, event); -} diff --git a/src/qt/askpassphrasedialog.h b/src/qt/askpassphrasedialog.h deleted file mode 100644 index d4d832825..000000000 --- a/src/qt/askpassphrasedialog.h +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright (c) 2011-2013 The Bitcoin Core developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#ifndef BITCOIN_QT_ASKPASSPHRASEDIALOG_H -#define BITCOIN_QT_ASKPASSPHRASEDIALOG_H - -#include - -class WalletModel; - -namespace Ui { - class AskPassphraseDialog; -} - -/** Multifunctional dialog to ask for passphrases. Used for encryption, unlocking, and changing the passphrase. - */ -class AskPassphraseDialog : public QDialog -{ - Q_OBJECT - -public: - enum Mode { - Encrypt, /**< Ask passphrase twice and encrypt */ - Unlock, /**< Ask passphrase and unlock */ - ChangePass, /**< Ask old passphrase + new passphrase twice */ - Decrypt /**< Ask passphrase and decrypt wallet */ - }; - - explicit AskPassphraseDialog(Mode mode, QWidget *parent); - ~AskPassphraseDialog(); - - void accept(); - - void setModel(WalletModel *model); - -private: - Ui::AskPassphraseDialog *ui; - Mode mode; - WalletModel *model; - bool fCapsLock; - -private Q_SLOTS: - void textChanged(); - -protected: - bool event(QEvent *event); - bool eventFilter(QObject *object, QEvent *event); -}; - -#endif // BITCOIN_QT_ASKPASSPHRASEDIALOG_H diff --git a/src/qt/bitcoin.qrc b/src/qt/bitcoin.qrc deleted file mode 100644 index c899e9550..000000000 --- a/src/qt/bitcoin.qrc +++ /dev/null @@ -1,88 +0,0 @@ - - - res/icons/bitcoin.png - res/icons/address-book.png - res/icons/quit.png - res/icons/send.png - res/icons/connect0.png - res/icons/connect1.png - res/icons/connect2.png - res/icons/connect3.png - res/icons/connect4.png - res/icons/transaction0.png - res/icons/transaction2.png - res/icons/transaction_conflicted.png - res/icons/clock1.png - res/icons/clock2.png - res/icons/clock3.png - res/icons/clock4.png - res/icons/clock5.png - res/icons/eye.png - res/icons/eye_minus.png - res/icons/eye_plus.png - res/icons/configure.png - res/icons/receive.png - res/icons/editpaste.png - res/icons/editcopy.png - res/icons/add.png - res/icons/edit.png - res/icons/history.png - res/icons/overview.png - res/icons/export.png - res/icons/synced.png - res/icons/remove.png - res/icons/tx_mined.png - res/icons/tx_input.png - res/icons/tx_output.png - res/icons/tx_inout.png - res/icons/lock_closed.png - res/icons/lock_open.png - res/icons/key.png - res/icons/filesave.png - res/icons/debugwindow.png - res/icons/open.png - res/icons/info.png - res/icons/about.png - res/icons/about_qt.png - res/icons/verify.png - res/icons/warning.png - - - res/movies/spinner-000.png - res/movies/spinner-001.png - res/movies/spinner-002.png - res/movies/spinner-003.png - res/movies/spinner-004.png - res/movies/spinner-005.png - res/movies/spinner-006.png - res/movies/spinner-007.png - res/movies/spinner-008.png - res/movies/spinner-009.png - res/movies/spinner-010.png - res/movies/spinner-011.png - res/movies/spinner-012.png - res/movies/spinner-013.png - res/movies/spinner-014.png - res/movies/spinner-015.png - res/movies/spinner-016.png - res/movies/spinner-017.png - res/movies/spinner-018.png - res/movies/spinner-019.png - res/movies/spinner-020.png - res/movies/spinner-021.png - res/movies/spinner-022.png - res/movies/spinner-023.png - res/movies/spinner-024.png - res/movies/spinner-025.png - res/movies/spinner-026.png - res/movies/spinner-027.png - res/movies/spinner-028.png - res/movies/spinner-029.png - res/movies/spinner-030.png - res/movies/spinner-031.png - res/movies/spinner-032.png - res/movies/spinner-033.png - res/movies/spinner-034.png - res/movies/spinner-035.png - - diff --git a/src/qt/bitcoin_locale.qrc b/src/qt/bitcoin_locale.qrc deleted file mode 100644 index b70a10739..000000000 --- a/src/qt/bitcoin_locale.qrc +++ /dev/null @@ -1,75 +0,0 @@ - - - locale/bitcoin_ach.qm - locale/bitcoin_af_ZA.qm - locale/bitcoin_ar.qm - locale/bitcoin_be_BY.qm - locale/bitcoin_bg.qm - locale/bitcoin_bs.qm - locale/bitcoin_ca_ES.qm - locale/bitcoin_ca.qm - locale/bitcoin_ca@valencia.qm - locale/bitcoin_cmn.qm - locale/bitcoin_cs.qm - locale/bitcoin_cy.qm - locale/bitcoin_da.qm - locale/bitcoin_de.qm - locale/bitcoin_el_GR.qm - locale/bitcoin_en.qm - locale/bitcoin_eo.qm - locale/bitcoin_es_CL.qm - locale/bitcoin_es_DO.qm - locale/bitcoin_es_MX.qm - locale/bitcoin_es.qm - locale/bitcoin_es_UY.qm - locale/bitcoin_et.qm - locale/bitcoin_eu_ES.qm - locale/bitcoin_fa_IR.qm - locale/bitcoin_fa.qm - locale/bitcoin_fi.qm - locale/bitcoin_fr_CA.qm - locale/bitcoin_fr.qm - locale/bitcoin_gl.qm - locale/bitcoin_gu_IN.qm - locale/bitcoin_he.qm - locale/bitcoin_hi_IN.qm - locale/bitcoin_hr.qm - locale/bitcoin_hu.qm - locale/bitcoin_id_ID.qm - locale/bitcoin_it.qm - locale/bitcoin_ja.qm - locale/bitcoin_ka.qm - locale/bitcoin_kk_KZ.qm - locale/bitcoin_ko_KR.qm - locale/bitcoin_ky.qm - locale/bitcoin_la.qm - locale/bitcoin_lt.qm - locale/bitcoin_lv_LV.qm - locale/bitcoin_mn.qm - locale/bitcoin_ms_MY.qm - locale/bitcoin_nb.qm - locale/bitcoin_nl.qm - locale/bitcoin_pam.qm - locale/bitcoin_pl.qm - locale/bitcoin_pt_BR.qm - locale/bitcoin_pt_PT.qm - locale/bitcoin_ro_RO.qm - locale/bitcoin_ru.qm - locale/bitcoin_sah.qm - locale/bitcoin_sk.qm - locale/bitcoin_sl_SI.qm - locale/bitcoin_sq.qm - locale/bitcoin_sr.qm - locale/bitcoin_sv.qm - locale/bitcoin_th_TH.qm - locale/bitcoin_tr.qm - locale/bitcoin_uk.qm - locale/bitcoin_ur_PK.qm - locale/bitcoin_uz@Cyrl.qm - locale/bitcoin_vi.qm - locale/bitcoin_vi_VN.qm - locale/bitcoin_zh_CN.qm - locale/bitcoin_zh_HK.qm - locale/bitcoin_zh_TW.qm - - diff --git a/src/qt/bitcoinaddressvalidator.cpp b/src/qt/bitcoinaddressvalidator.cpp deleted file mode 100644 index d712705c4..000000000 --- a/src/qt/bitcoinaddressvalidator.cpp +++ /dev/null @@ -1,97 +0,0 @@ -// Copyright (c) 2011-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. - -#include "bitcoinaddressvalidator.h" - -#include "base58.h" - -/* Base58 characters are: - "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz" - - This is: - - All numbers except for '0' - - All upper-case letters except for 'I' and 'O' - - All lower-case letters except for 'l' -*/ - -BitcoinAddressEntryValidator::BitcoinAddressEntryValidator(QObject *parent) : - QValidator(parent) -{ -} - -QValidator::State BitcoinAddressEntryValidator::validate(QString &input, int &pos) const -{ - Q_UNUSED(pos); - - // Empty address is "intermediate" input - if (input.isEmpty()) - return QValidator::Intermediate; - - // Correction - for (int idx = 0; idx < input.size();) - { - bool removeChar = false; - QChar ch = input.at(idx); - // Corrections made are very conservative on purpose, to avoid - // users unexpectedly getting away with typos that would normally - // be detected, and thus sending to the wrong address. - switch(ch.unicode()) - { - // Qt categorizes these as "Other_Format" not "Separator_Space" - case 0x200B: // ZERO WIDTH SPACE - case 0xFEFF: // ZERO WIDTH NO-BREAK SPACE - removeChar = true; - break; - default: - break; - } - - // Remove whitespace - if (ch.isSpace()) - removeChar = true; - - // To next character - if (removeChar) - input.remove(idx, 1); - else - ++idx; - } - - // Validation - QValidator::State state = QValidator::Acceptable; - for (int idx = 0; idx < input.size(); ++idx) - { - int ch = input.at(idx).unicode(); - - if (((ch >= '0' && ch<='9') || - (ch >= 'a' && ch<='z') || - (ch >= 'A' && ch<='Z')) && - ch != 'l' && ch != 'I' && ch != '0' && ch != 'O') - { - // Alphanumeric and not a 'forbidden' character - } - else - { - state = QValidator::Invalid; - } - } - - return state; -} - -BitcoinAddressCheckValidator::BitcoinAddressCheckValidator(QObject *parent) : - QValidator(parent) -{ -} - -QValidator::State BitcoinAddressCheckValidator::validate(QString &input, int &pos) const -{ - Q_UNUSED(pos); - // Validate the passed Bitcoin address - CBitcoinAddress addr(input.toStdString()); - if (addr.IsValid()) - return QValidator::Acceptable; - - return QValidator::Invalid; -} diff --git a/src/qt/bitcoinaddressvalidator.h b/src/qt/bitcoinaddressvalidator.h deleted file mode 100644 index 30d4a26d0..000000000 --- a/src/qt/bitcoinaddressvalidator.h +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright (c) 2011-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. - -#ifndef BITCOIN_QT_BITCOINADDRESSVALIDATOR_H -#define BITCOIN_QT_BITCOINADDRESSVALIDATOR_H - -#include - -/** Base58 entry widget validator, checks for valid characters and - * removes some whitespace. - */ -class BitcoinAddressEntryValidator : public QValidator -{ - Q_OBJECT - -public: - explicit BitcoinAddressEntryValidator(QObject *parent); - - State validate(QString &input, int &pos) const; -}; - -/** Bitcoin address widget validator, checks for a valid bitcoin address. - */ -class BitcoinAddressCheckValidator : public QValidator -{ - Q_OBJECT - -public: - explicit BitcoinAddressCheckValidator(QObject *parent); - - State validate(QString &input, int &pos) const; -}; - -#endif // BITCOIN_QT_BITCOINADDRESSVALIDATOR_H diff --git a/src/qt/bitcoinamountfield.cpp b/src/qt/bitcoinamountfield.cpp deleted file mode 100644 index d19b9fd4a..000000000 --- a/src/qt/bitcoinamountfield.cpp +++ /dev/null @@ -1,302 +0,0 @@ -// Copyright (c) 2011-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. - -#include "bitcoinamountfield.h" - -#include "bitcoinunits.h" -#include "guiconstants.h" -#include "qvaluecombobox.h" - -#include -#include -#include -#include -#include - -/** QSpinBox that uses fixed-point numbers internally and uses our own - * formatting/parsing functions. - */ -class AmountSpinBox: public QAbstractSpinBox -{ - Q_OBJECT - -public: - explicit AmountSpinBox(QWidget *parent): - QAbstractSpinBox(parent), - currentUnit(BitcoinUnits::BTC), - singleStep(100000) // satoshis - { - setAlignment(Qt::AlignRight); - - connect(lineEdit(), SIGNAL(textEdited(QString)), this, SIGNAL(valueChanged())); - } - - QValidator::State validate(QString &text, int &pos) const - { - if(text.isEmpty()) - return QValidator::Intermediate; - bool valid = false; - parse(text, &valid); - /* Make sure we return Intermediate so that fixup() is called on defocus */ - return valid ? QValidator::Intermediate : QValidator::Invalid; - } - - void fixup(QString &input) const - { - bool valid = false; - CAmount val = parse(input, &valid); - if(valid) - { - input = BitcoinUnits::format(currentUnit, val, false, BitcoinUnits::separatorAlways); - lineEdit()->setText(input); - } - } - - CAmount value(bool *valid_out=0) const - { - return parse(text(), valid_out); - } - - void setValue(const CAmount& value) - { - lineEdit()->setText(BitcoinUnits::format(currentUnit, value, false, BitcoinUnits::separatorAlways)); - Q_EMIT valueChanged(); - } - - void stepBy(int steps) - { - bool valid = false; - CAmount val = value(&valid); - val = val + steps * singleStep; - val = qMin(qMax(val, CAmount(0)), BitcoinUnits::maxMoney()); - setValue(val); - } - - void setDisplayUnit(int unit) - { - bool valid = false; - CAmount val = value(&valid); - - currentUnit = unit; - - if(valid) - setValue(val); - else - clear(); - } - - void setSingleStep(const CAmount& step) - { - singleStep = step; - } - - QSize minimumSizeHint() const - { - if(cachedMinimumSizeHint.isEmpty()) - { - ensurePolished(); - - const QFontMetrics fm(fontMetrics()); - int h = lineEdit()->minimumSizeHint().height(); - int w = fm.width(BitcoinUnits::format(BitcoinUnits::BTC, BitcoinUnits::maxMoney(), false, BitcoinUnits::separatorAlways)); - w += 2; // cursor blinking space - - QStyleOptionSpinBox opt; - initStyleOption(&opt); - QSize hint(w, h); - QSize extra(35, 6); - opt.rect.setSize(hint + extra); - extra += hint - style()->subControlRect(QStyle::CC_SpinBox, &opt, - QStyle::SC_SpinBoxEditField, this).size(); - // get closer to final result by repeating the calculation - opt.rect.setSize(hint + extra); - extra += hint - style()->subControlRect(QStyle::CC_SpinBox, &opt, - QStyle::SC_SpinBoxEditField, this).size(); - hint += extra; - hint.setHeight(h); - - opt.rect = rect(); - - cachedMinimumSizeHint = style()->sizeFromContents(QStyle::CT_SpinBox, &opt, hint, this) - .expandedTo(QApplication::globalStrut()); - } - return cachedMinimumSizeHint; - } - -private: - int currentUnit; - CAmount singleStep; - mutable QSize cachedMinimumSizeHint; - - /** - * Parse a string into a number of base monetary units and - * return validity. - * @note Must return 0 if !valid. - */ - CAmount parse(const QString &text, bool *valid_out=0) const - { - CAmount val = 0; - bool valid = BitcoinUnits::parse(currentUnit, text, &val); - if(valid) - { - if(val < 0 || val > BitcoinUnits::maxMoney()) - valid = false; - } - if(valid_out) - *valid_out = valid; - return valid ? val : 0; - } - -protected: - bool event(QEvent *event) - { - if (event->type() == QEvent::KeyPress || event->type() == QEvent::KeyRelease) - { - QKeyEvent *keyEvent = static_cast(event); - if (keyEvent->key() == Qt::Key_Comma) - { - // Translate a comma into a period - QKeyEvent periodKeyEvent(event->type(), Qt::Key_Period, keyEvent->modifiers(), ".", keyEvent->isAutoRepeat(), keyEvent->count()); - return QAbstractSpinBox::event(&periodKeyEvent); - } - } - return QAbstractSpinBox::event(event); - } - - StepEnabled stepEnabled() const - { - if (isReadOnly()) // Disable steps when AmountSpinBox is read-only - return StepNone; - if (text().isEmpty()) // Allow step-up with empty field - return StepUpEnabled; - - StepEnabled rv = 0; - bool valid = false; - CAmount val = value(&valid); - if(valid) - { - if(val > 0) - rv |= StepDownEnabled; - if(val < BitcoinUnits::maxMoney()) - rv |= StepUpEnabled; - } - return rv; - } - -Q_SIGNALS: - void valueChanged(); -}; - -#include "bitcoinamountfield.moc" - -BitcoinAmountField::BitcoinAmountField(QWidget *parent) : - QWidget(parent), - amount(0) -{ - amount = new AmountSpinBox(this); - amount->setLocale(QLocale::c()); - amount->installEventFilter(this); - amount->setMaximumWidth(170); - - QHBoxLayout *layout = new QHBoxLayout(this); - layout->addWidget(amount); - unit = new QValueComboBox(this); - unit->setModel(new BitcoinUnits(this)); - layout->addWidget(unit); - layout->addStretch(1); - layout->setContentsMargins(0,0,0,0); - - setLayout(layout); - - setFocusPolicy(Qt::TabFocus); - setFocusProxy(amount); - - // If one if the widgets changes, the combined content changes as well - connect(amount, SIGNAL(valueChanged()), this, SIGNAL(valueChanged())); - connect(unit, SIGNAL(currentIndexChanged(int)), this, SLOT(unitChanged(int))); - - // Set default based on configuration - unitChanged(unit->currentIndex()); -} - -void BitcoinAmountField::clear() -{ - amount->clear(); - unit->setCurrentIndex(0); -} - -void BitcoinAmountField::setEnabled(bool fEnabled) -{ - amount->setEnabled(fEnabled); - unit->setEnabled(fEnabled); -} - -bool BitcoinAmountField::validate() -{ - bool valid = false; - value(&valid); - setValid(valid); - return valid; -} - -void BitcoinAmountField::setValid(bool valid) -{ - if (valid) - amount->setStyleSheet(""); - else - amount->setStyleSheet(STYLE_INVALID); -} - -bool BitcoinAmountField::eventFilter(QObject *object, QEvent *event) -{ - if (event->type() == QEvent::FocusIn) - { - // Clear invalid flag on focus - setValid(true); - } - return QWidget::eventFilter(object, event); -} - -QWidget *BitcoinAmountField::setupTabChain(QWidget *prev) -{ - QWidget::setTabOrder(prev, amount); - QWidget::setTabOrder(amount, unit); - return unit; -} - -CAmount BitcoinAmountField::value(bool *valid_out) const -{ - return amount->value(valid_out); -} - -void BitcoinAmountField::setValue(const CAmount& value) -{ - amount->setValue(value); -} - -void BitcoinAmountField::setReadOnly(bool fReadOnly) -{ - amount->setReadOnly(fReadOnly); -} - -void BitcoinAmountField::unitChanged(int idx) -{ - // Use description tooltip for current unit for the combobox - unit->setToolTip(unit->itemData(idx, Qt::ToolTipRole).toString()); - - // Determine new unit ID - int newUnit = unit->itemData(idx, BitcoinUnits::UnitRole).toInt(); - - amount->setDisplayUnit(newUnit); -} - -void BitcoinAmountField::setDisplayUnit(int newUnit) -{ - unit->setValue(newUnit); -} - -void BitcoinAmountField::setSingleStep(const CAmount& step) -{ - amount->setSingleStep(step); -} diff --git a/src/qt/bitcoinamountfield.h b/src/qt/bitcoinamountfield.h deleted file mode 100644 index 3703b1f8d..000000000 --- a/src/qt/bitcoinamountfield.h +++ /dev/null @@ -1,75 +0,0 @@ -// Copyright (c) 2011-2013 The Bitcoin Core developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#ifndef BITCOIN_QT_BITCOINAMOUNTFIELD_H -#define BITCOIN_QT_BITCOINAMOUNTFIELD_H - -#include "amount.h" - -#include - -class AmountSpinBox; - -QT_BEGIN_NAMESPACE -class QValueComboBox; -QT_END_NAMESPACE - -/** Widget for entering bitcoin amounts. - */ -class BitcoinAmountField: public QWidget -{ - Q_OBJECT - - // ugly hack: for some unknown reason CAmount (instead of qint64) does not work here as expected - // discussion: https://github.com/bitcoin/bitcoin/pull/5117 - Q_PROPERTY(qint64 value READ value WRITE setValue NOTIFY valueChanged USER true) - -public: - explicit BitcoinAmountField(QWidget *parent = 0); - - CAmount value(bool *value=0) const; - void setValue(const CAmount& value); - - /** Set single step in satoshis **/ - void setSingleStep(const CAmount& step); - - /** Make read-only **/ - void setReadOnly(bool fReadOnly); - - /** Mark current value as invalid in UI. */ - void setValid(bool valid); - /** Perform input validation, mark field as invalid if entered value is not valid. */ - bool validate(); - - /** Change unit used to display amount. */ - void setDisplayUnit(int unit); - - /** Make field empty and ready for new input. */ - void clear(); - - /** Enable/Disable. */ - void setEnabled(bool fEnabled); - - /** Qt messes up the tab chain by default in some cases (issue https://bugreports.qt-project.org/browse/QTBUG-10907), - in these cases we have to set it up manually. - */ - QWidget *setupTabChain(QWidget *prev); - -Q_SIGNALS: - void valueChanged(); - -protected: - /** Intercept focus-in event and ',' key presses */ - bool eventFilter(QObject *object, QEvent *event); - -private: - AmountSpinBox *amount; - QValueComboBox *unit; - -private Q_SLOTS: - void unitChanged(int idx); - -}; - -#endif // BITCOIN_QT_BITCOINAMOUNTFIELD_H diff --git a/src/qt/bitcoingui.cpp b/src/qt/bitcoingui.cpp deleted file mode 100644 index fa5083e00..000000000 --- a/src/qt/bitcoingui.cpp +++ /dev/null @@ -1,1123 +0,0 @@ -// Copyright (c) 2011-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. - -#include "bitcoingui.h" - -#include "bitcoinunits.h" -#include "clientmodel.h" -#include "guiconstants.h" -#include "guiutil.h" -#include "networkstyle.h" -#include "notificator.h" -#include "openuridialog.h" -#include "optionsdialog.h" -#include "optionsmodel.h" -#include "rpcconsole.h" -#include "scicon.h" -#include "utilitydialog.h" - -#ifdef ENABLE_WALLET -#include "walletframe.h" -#include "walletmodel.h" -#endif // ENABLE_WALLET - -#ifdef Q_OS_MAC -#include "macdockiconhandler.h" -#endif - -#include "init.h" -#include "ui_interface.h" -#include "util.h" - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if QT_VERSION < 0x050000 -#include -#include -#else -#include -#endif - -const QString BitcoinGUI::DEFAULT_WALLET = "~Default"; - -BitcoinGUI::BitcoinGUI(const NetworkStyle *networkStyle, QWidget *parent) : - QMainWindow(parent), - clientModel(0), - walletFrame(0), - unitDisplayControl(0), - labelEncryptionIcon(0), - labelConnectionsIcon(0), - labelBlocksIcon(0), - progressBarLabel(0), - progressBar(0), - progressDialog(0), - appMenuBar(0), - overviewAction(0), - historyAction(0), - quitAction(0), - sendCoinsAction(0), - sendCoinsMenuAction(0), - usedSendingAddressesAction(0), - usedReceivingAddressesAction(0), - signMessageAction(0), - verifyMessageAction(0), - aboutAction(0), - receiveCoinsAction(0), - receiveCoinsMenuAction(0), - optionsAction(0), - toggleHideAction(0), - encryptWalletAction(0), - backupWalletAction(0), - changePassphraseAction(0), - aboutQtAction(0), - openRPCConsoleAction(0), - openAction(0), - showHelpMessageAction(0), - trayIcon(0), - trayIconMenu(0), - notificator(0), - rpcConsole(0), - prevBlocks(0), - spinnerFrame(0) -{ - GUIUtil::restoreWindowGeometry("nWindow", QSize(850, 550), this); - - QString windowTitle = tr("Bitcoin Core") + " - "; -#ifdef ENABLE_WALLET - /* if compiled with wallet support, -disablewallet can still disable the wallet */ - enableWallet = !GetBoolArg("-disablewallet", false); -#else - enableWallet = false; -#endif // ENABLE_WALLET - if(enableWallet) - { - windowTitle += tr("Wallet"); - } else { - windowTitle += tr("Node"); - } - windowTitle += " " + networkStyle->getTitleAddText(); -#ifndef Q_OS_MAC - QApplication::setWindowIcon(networkStyle->getTrayAndWindowIcon()); - setWindowIcon(networkStyle->getTrayAndWindowIcon()); -#else - MacDockIconHandler::instance()->setIcon(networkStyle->getAppIcon()); -#endif - setWindowTitle(windowTitle); - -#if defined(Q_OS_MAC) && QT_VERSION < 0x050000 - // This property is not implemented in Qt 5. Setting it has no effect. - // A replacement API (QtMacUnifiedToolBar) is available in QtMacExtras. - setUnifiedTitleAndToolBarOnMac(true); -#endif - - rpcConsole = new RPCConsole(0); -#ifdef ENABLE_WALLET - if(enableWallet) - { - /** Create wallet frame and make it the central widget */ - walletFrame = new WalletFrame(this); - setCentralWidget(walletFrame); - } else -#endif // ENABLE_WALLET - { - /* When compiled without wallet or -disablewallet is provided, - * the central widget is the rpc console. - */ - setCentralWidget(rpcConsole); - } - - // Accept D&D of URIs - setAcceptDrops(true); - - // Create actions for the toolbar, menu bar and tray/dock icon - // Needs walletFrame to be initialized - createActions(); - - // Create application menu bar - createMenuBar(); - - // Create the toolbars - createToolBars(); - - // Create system tray icon and notification - createTrayIcon(networkStyle); - - // Create status bar - statusBar(); - - // Disable size grip because it looks ugly and nobody needs it - statusBar()->setSizeGripEnabled(false); - - // Status bar notification icons - QFrame *frameBlocks = new QFrame(); - frameBlocks->setContentsMargins(0,0,0,0); - frameBlocks->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Preferred); - QHBoxLayout *frameBlocksLayout = new QHBoxLayout(frameBlocks); - frameBlocksLayout->setContentsMargins(3,0,3,0); - frameBlocksLayout->setSpacing(3); - unitDisplayControl = new UnitDisplayStatusBarControl(); - labelEncryptionIcon = new QLabel(); - labelConnectionsIcon = new QLabel(); - labelBlocksIcon = new QLabel(); - if(enableWallet) - { - frameBlocksLayout->addStretch(); - frameBlocksLayout->addWidget(unitDisplayControl); - frameBlocksLayout->addStretch(); - frameBlocksLayout->addWidget(labelEncryptionIcon); - } - frameBlocksLayout->addStretch(); - frameBlocksLayout->addWidget(labelConnectionsIcon); - frameBlocksLayout->addStretch(); - frameBlocksLayout->addWidget(labelBlocksIcon); - frameBlocksLayout->addStretch(); - - // Progress bar and label for blocks download - progressBarLabel = new QLabel(); - progressBarLabel->setVisible(false); - progressBar = new GUIUtil::ProgressBar(); - progressBar->setAlignment(Qt::AlignCenter); - progressBar->setVisible(false); - - // Override style sheet for progress bar for styles that have a segmented progress bar, - // as they make the text unreadable (workaround for issue #1071) - // See https://qt-project.org/doc/qt-4.8/gallery.html - QString curStyle = QApplication::style()->metaObject()->className(); - if(curStyle == "QWindowsStyle" || curStyle == "QWindowsXPStyle") - { - progressBar->setStyleSheet("QProgressBar { background-color: #e8e8e8; border: 1px solid grey; border-radius: 7px; padding: 1px; text-align: center; } QProgressBar::chunk { background: QLinearGradient(x1: 0, y1: 0, x2: 1, y2: 0, stop: 0 #FF8000, stop: 1 orange); border-radius: 7px; margin: 0px; }"); - } - - statusBar()->addWidget(progressBarLabel); - statusBar()->addWidget(progressBar); - statusBar()->addPermanentWidget(frameBlocks); - - // Install event filter to be able to catch status tip events (QEvent::StatusTip) - this->installEventFilter(this); - - // Initially wallet actions should be disabled - setWalletActionsEnabled(false); - - // Subscribe to notifications from core - subscribeToCoreSignals(); -} - -BitcoinGUI::~BitcoinGUI() -{ - // Unsubscribe from notifications from core - unsubscribeFromCoreSignals(); - - GUIUtil::saveWindowGeometry("nWindow", this); - if(trayIcon) // Hide tray icon, as deleting will let it linger until quit (on Ubuntu) - trayIcon->hide(); -#ifdef Q_OS_MAC - delete appMenuBar; - MacDockIconHandler::cleanup(); -#endif - - delete rpcConsole; -} - -void BitcoinGUI::createActions() -{ - QActionGroup *tabGroup = new QActionGroup(this); - - overviewAction = new QAction(SingleColorIcon(":/icons/overview"), tr("&Overview"), this); - overviewAction->setStatusTip(tr("Show general overview of wallet")); - overviewAction->setToolTip(overviewAction->statusTip()); - overviewAction->setCheckable(true); - overviewAction->setShortcut(QKeySequence(Qt::ALT + Qt::Key_1)); - tabGroup->addAction(overviewAction); - - sendCoinsAction = new QAction(SingleColorIcon(":/icons/send"), tr("&Send"), this); - sendCoinsAction->setStatusTip(tr("Send coins to a Bitcoin address")); - sendCoinsAction->setToolTip(sendCoinsAction->statusTip()); - sendCoinsAction->setCheckable(true); - sendCoinsAction->setShortcut(QKeySequence(Qt::ALT + Qt::Key_2)); - tabGroup->addAction(sendCoinsAction); - - sendCoinsMenuAction = new QAction(TextColorIcon(":/icons/send"), sendCoinsAction->text(), this); - sendCoinsMenuAction->setStatusTip(sendCoinsAction->statusTip()); - sendCoinsMenuAction->setToolTip(sendCoinsMenuAction->statusTip()); - - receiveCoinsAction = new QAction(SingleColorIcon(":/icons/receiving_addresses"), tr("&Receive"), this); - receiveCoinsAction->setStatusTip(tr("Request payments (generates QR codes and bitcoin: URIs)")); - receiveCoinsAction->setToolTip(receiveCoinsAction->statusTip()); - receiveCoinsAction->setCheckable(true); - receiveCoinsAction->setShortcut(QKeySequence(Qt::ALT + Qt::Key_3)); - tabGroup->addAction(receiveCoinsAction); - - receiveCoinsMenuAction = new QAction(TextColorIcon(":/icons/receiving_addresses"), receiveCoinsAction->text(), this); - receiveCoinsMenuAction->setStatusTip(receiveCoinsAction->statusTip()); - receiveCoinsMenuAction->setToolTip(receiveCoinsMenuAction->statusTip()); - - historyAction = new QAction(SingleColorIcon(":/icons/history"), tr("&Transactions"), this); - historyAction->setStatusTip(tr("Browse transaction history")); - historyAction->setToolTip(historyAction->statusTip()); - historyAction->setCheckable(true); - historyAction->setShortcut(QKeySequence(Qt::ALT + Qt::Key_4)); - tabGroup->addAction(historyAction); - -#ifdef ENABLE_WALLET - // These showNormalIfMinimized are needed because Send Coins and Receive Coins - // can be triggered from the tray menu, and need to show the GUI to be useful. - connect(overviewAction, SIGNAL(triggered()), this, SLOT(showNormalIfMinimized())); - connect(overviewAction, SIGNAL(triggered()), this, SLOT(gotoOverviewPage())); - connect(sendCoinsAction, SIGNAL(triggered()), this, SLOT(showNormalIfMinimized())); - connect(sendCoinsAction, SIGNAL(triggered()), this, SLOT(gotoSendCoinsPage())); - connect(sendCoinsMenuAction, SIGNAL(triggered()), this, SLOT(showNormalIfMinimized())); - connect(sendCoinsMenuAction, SIGNAL(triggered()), this, SLOT(gotoSendCoinsPage())); - connect(receiveCoinsAction, SIGNAL(triggered()), this, SLOT(showNormalIfMinimized())); - connect(receiveCoinsAction, SIGNAL(triggered()), this, SLOT(gotoReceiveCoinsPage())); - connect(receiveCoinsMenuAction, SIGNAL(triggered()), this, SLOT(showNormalIfMinimized())); - connect(receiveCoinsMenuAction, SIGNAL(triggered()), this, SLOT(gotoReceiveCoinsPage())); - connect(historyAction, SIGNAL(triggered()), this, SLOT(showNormalIfMinimized())); - connect(historyAction, SIGNAL(triggered()), this, SLOT(gotoHistoryPage())); -#endif // ENABLE_WALLET - - quitAction = new QAction(TextColorIcon(":/icons/quit"), tr("E&xit"), this); - quitAction->setStatusTip(tr("Quit application")); - quitAction->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_Q)); - quitAction->setMenuRole(QAction::QuitRole); - aboutAction = new QAction(TextColorIcon(":/icons/about"), tr("&About Bitcoin Core"), this); - aboutAction->setStatusTip(tr("Show information about Bitcoin Core")); - aboutAction->setMenuRole(QAction::AboutRole); - aboutQtAction = new QAction(TextColorIcon(":/icons/about_qt"), tr("About &Qt"), this); - aboutQtAction->setStatusTip(tr("Show information about Qt")); - aboutQtAction->setMenuRole(QAction::AboutQtRole); - optionsAction = new QAction(TextColorIcon(":/icons/options"), tr("&Options..."), this); - optionsAction->setStatusTip(tr("Modify configuration options for Bitcoin Core")); - optionsAction->setMenuRole(QAction::PreferencesRole); - toggleHideAction = new QAction(TextColorIcon(":/icons/about"), tr("&Show / Hide"), this); - toggleHideAction->setStatusTip(tr("Show or hide the main Window")); - - encryptWalletAction = new QAction(TextColorIcon(":/icons/lock_closed"), tr("&Encrypt Wallet..."), this); - encryptWalletAction->setStatusTip(tr("Encrypt the private keys that belong to your wallet")); - encryptWalletAction->setCheckable(true); - backupWalletAction = new QAction(TextColorIcon(":/icons/filesave"), tr("&Backup Wallet..."), this); - backupWalletAction->setStatusTip(tr("Backup wallet to another location")); - changePassphraseAction = new QAction(TextColorIcon(":/icons/key"), tr("&Change Passphrase..."), this); - changePassphraseAction->setStatusTip(tr("Change the passphrase used for wallet encryption")); - signMessageAction = new QAction(TextColorIcon(":/icons/edit"), tr("Sign &message..."), this); - signMessageAction->setStatusTip(tr("Sign messages with your Bitcoin addresses to prove you own them")); - verifyMessageAction = new QAction(TextColorIcon(":/icons/verify"), tr("&Verify message..."), this); - verifyMessageAction->setStatusTip(tr("Verify messages to ensure they were signed with specified Bitcoin addresses")); - - openRPCConsoleAction = new QAction(TextColorIcon(":/icons/debugwindow"), tr("&Debug window"), this); - openRPCConsoleAction->setStatusTip(tr("Open debugging and diagnostic console")); - - usedSendingAddressesAction = new QAction(TextColorIcon(":/icons/address-book"), tr("&Sending addresses..."), this); - usedSendingAddressesAction->setStatusTip(tr("Show the list of used sending addresses and labels")); - usedReceivingAddressesAction = new QAction(TextColorIcon(":/icons/address-book"), tr("&Receiving addresses..."), this); - usedReceivingAddressesAction->setStatusTip(tr("Show the list of used receiving addresses and labels")); - - openAction = new QAction(TextColorIcon(":/icons/open"), tr("Open &URI..."), this); - openAction->setStatusTip(tr("Open a bitcoin: URI or payment request")); - - showHelpMessageAction = new QAction(TextColorIcon(":/icons/info"), 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())); - connect(aboutAction, SIGNAL(triggered()), this, SLOT(aboutClicked())); - connect(aboutQtAction, SIGNAL(triggered()), qApp, SLOT(aboutQt())); - connect(optionsAction, SIGNAL(triggered()), this, SLOT(optionsClicked())); - connect(toggleHideAction, SIGNAL(triggered()), this, SLOT(toggleHidden())); - connect(showHelpMessageAction, SIGNAL(triggered()), this, SLOT(showHelpMessageClicked())); - connect(openRPCConsoleAction, SIGNAL(triggered()), this, SLOT(showDebugWindow())); - // prevents an open debug window from becoming stuck/unusable on client shutdown - connect(quitAction, SIGNAL(triggered()), rpcConsole, SLOT(hide())); - -#ifdef ENABLE_WALLET - if(walletFrame) - { - connect(encryptWalletAction, SIGNAL(triggered(bool)), walletFrame, SLOT(encryptWallet(bool))); - connect(backupWalletAction, SIGNAL(triggered()), walletFrame, SLOT(backupWallet())); - connect(changePassphraseAction, SIGNAL(triggered()), walletFrame, SLOT(changePassphrase())); - connect(signMessageAction, SIGNAL(triggered()), this, SLOT(gotoSignMessageTab())); - connect(verifyMessageAction, SIGNAL(triggered()), this, SLOT(gotoVerifyMessageTab())); - connect(usedSendingAddressesAction, SIGNAL(triggered()), walletFrame, SLOT(usedSendingAddresses())); - connect(usedReceivingAddressesAction, SIGNAL(triggered()), walletFrame, SLOT(usedReceivingAddresses())); - connect(openAction, SIGNAL(triggered()), this, SLOT(openClicked())); - } -#endif // ENABLE_WALLET -} - -void BitcoinGUI::createMenuBar() -{ -#ifdef Q_OS_MAC - // Create a decoupled menu bar on Mac which stays even if the window is closed - appMenuBar = new QMenuBar(); -#else - // Get the main window's menu bar on other platforms - appMenuBar = menuBar(); -#endif - - // Configure the menus - QMenu *file = appMenuBar->addMenu(tr("&File")); - if(walletFrame) - { - file->addAction(openAction); - file->addAction(backupWalletAction); - file->addAction(signMessageAction); - file->addAction(verifyMessageAction); - file->addSeparator(); - file->addAction(usedSendingAddressesAction); - file->addAction(usedReceivingAddressesAction); - file->addSeparator(); - } - file->addAction(quitAction); - - QMenu *settings = appMenuBar->addMenu(tr("&Settings")); - if(walletFrame) - { - settings->addAction(encryptWalletAction); - settings->addAction(changePassphraseAction); - settings->addSeparator(); - } - settings->addAction(optionsAction); - - QMenu *help = appMenuBar->addMenu(tr("&Help")); - if(walletFrame) - { - help->addAction(openRPCConsoleAction); - } - help->addAction(showHelpMessageAction); - help->addSeparator(); - help->addAction(aboutAction); - help->addAction(aboutQtAction); -} - -void BitcoinGUI::createToolBars() -{ - if(walletFrame) - { - QToolBar *toolbar = addToolBar(tr("Tabs toolbar")); - toolbar->setMovable(false); - toolbar->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); - toolbar->addAction(overviewAction); - toolbar->addAction(sendCoinsAction); - toolbar->addAction(receiveCoinsAction); - toolbar->addAction(historyAction); - overviewAction->setChecked(true); - } -} - -void BitcoinGUI::setClientModel(ClientModel *clientModel) -{ - this->clientModel = clientModel; - if(clientModel) - { - // Create system tray menu (or setup the dock menu) that late to prevent users from calling actions, - // while the client has not yet fully loaded - createTrayIconMenu(); - - // Keep up to date with client - setNumConnections(clientModel->getNumConnections()); - connect(clientModel, SIGNAL(numConnectionsChanged(int)), this, SLOT(setNumConnections(int))); - - setNumBlocks(clientModel->getNumBlocks(), clientModel->getLastBlockDate()); - connect(clientModel, SIGNAL(numBlocksChanged(int,QDateTime)), this, SLOT(setNumBlocks(int,QDateTime))); - - // Receive and report messages from client model - connect(clientModel, SIGNAL(message(QString,QString,unsigned int)), this, SLOT(message(QString,QString,unsigned int))); - - // Show progress dialog - connect(clientModel, SIGNAL(showProgress(QString,int)), this, SLOT(showProgress(QString,int))); - - rpcConsole->setClientModel(clientModel); -#ifdef ENABLE_WALLET - if(walletFrame) - { - walletFrame->setClientModel(clientModel); - } -#endif // ENABLE_WALLET - unitDisplayControl->setOptionsModel(clientModel->getOptionsModel()); - } else { - // Disable possibility to show main window via action - toggleHideAction->setEnabled(false); - if(trayIconMenu) - { - // Disable context menu on tray icon - trayIconMenu->clear(); - } - } -} - -#ifdef ENABLE_WALLET -bool BitcoinGUI::addWallet(const QString& name, WalletModel *walletModel) -{ - if(!walletFrame) - return false; - setWalletActionsEnabled(true); - return walletFrame->addWallet(name, walletModel); -} - -bool BitcoinGUI::setCurrentWallet(const QString& name) -{ - if(!walletFrame) - return false; - return walletFrame->setCurrentWallet(name); -} - -void BitcoinGUI::removeAllWallets() -{ - if(!walletFrame) - return; - setWalletActionsEnabled(false); - walletFrame->removeAllWallets(); -} -#endif // ENABLE_WALLET - -void BitcoinGUI::setWalletActionsEnabled(bool enabled) -{ - overviewAction->setEnabled(enabled); - sendCoinsAction->setEnabled(enabled); - sendCoinsMenuAction->setEnabled(enabled); - receiveCoinsAction->setEnabled(enabled); - receiveCoinsMenuAction->setEnabled(enabled); - historyAction->setEnabled(enabled); - encryptWalletAction->setEnabled(enabled); - backupWalletAction->setEnabled(enabled); - changePassphraseAction->setEnabled(enabled); - signMessageAction->setEnabled(enabled); - verifyMessageAction->setEnabled(enabled); - usedSendingAddressesAction->setEnabled(enabled); - usedReceivingAddressesAction->setEnabled(enabled); - openAction->setEnabled(enabled); -} - -void BitcoinGUI::createTrayIcon(const NetworkStyle *networkStyle) -{ -#ifndef Q_OS_MAC - trayIcon = new QSystemTrayIcon(this); - QString toolTip = tr("Bitcoin Core client") + " " + networkStyle->getTitleAddText(); - trayIcon->setToolTip(toolTip); - trayIcon->setIcon(networkStyle->getTrayAndWindowIcon()); - trayIcon->show(); -#endif - - notificator = new Notificator(QApplication::applicationName(), trayIcon, this); -} - -void BitcoinGUI::createTrayIconMenu() -{ -#ifndef Q_OS_MAC - // return if trayIcon is unset (only on non-Mac OSes) - if (!trayIcon) - return; - - trayIconMenu = new QMenu(this); - trayIcon->setContextMenu(trayIconMenu); - - connect(trayIcon, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), - this, SLOT(trayIconActivated(QSystemTrayIcon::ActivationReason))); -#else - // Note: On Mac, the dock icon is used to provide the tray's functionality. - MacDockIconHandler *dockIconHandler = MacDockIconHandler::instance(); - dockIconHandler->setMainWindow((QMainWindow *)this); - trayIconMenu = dockIconHandler->dockMenu(); -#endif - - // Configuration of the tray icon (or dock icon) icon menu - trayIconMenu->addAction(toggleHideAction); - trayIconMenu->addSeparator(); - trayIconMenu->addAction(sendCoinsMenuAction); - trayIconMenu->addAction(receiveCoinsMenuAction); - trayIconMenu->addSeparator(); - trayIconMenu->addAction(signMessageAction); - trayIconMenu->addAction(verifyMessageAction); - trayIconMenu->addSeparator(); - trayIconMenu->addAction(optionsAction); - trayIconMenu->addAction(openRPCConsoleAction); -#ifndef Q_OS_MAC // This is built-in on Mac - trayIconMenu->addSeparator(); - trayIconMenu->addAction(quitAction); -#endif -} - -#ifndef Q_OS_MAC -void BitcoinGUI::trayIconActivated(QSystemTrayIcon::ActivationReason reason) -{ - if(reason == QSystemTrayIcon::Trigger) - { - // Click on system tray icon triggers show/hide of the main window - toggleHidden(); - } -} -#endif - -void BitcoinGUI::optionsClicked() -{ - if(!clientModel || !clientModel->getOptionsModel()) - return; - - OptionsDialog dlg(this, enableWallet); - dlg.setModel(clientModel->getOptionsModel()); - dlg.exec(); -} - -void BitcoinGUI::aboutClicked() -{ - if(!clientModel) - return; - - HelpMessageDialog dlg(this, true); - dlg.exec(); -} - -void BitcoinGUI::showDebugWindow() -{ - rpcConsole->showNormal(); - rpcConsole->show(); - rpcConsole->raise(); - rpcConsole->activateWindow(); -} - -void BitcoinGUI::showHelpMessageClicked() -{ - HelpMessageDialog *help = new HelpMessageDialog(this, false); - help->setAttribute(Qt::WA_DeleteOnClose); - help->show(); -} - -#ifdef ENABLE_WALLET -void BitcoinGUI::openClicked() -{ - OpenURIDialog dlg(this); - if(dlg.exec()) - { - Q_EMIT receivedURI(dlg.getURI()); - } -} - -void BitcoinGUI::gotoOverviewPage() -{ - overviewAction->setChecked(true); - if (walletFrame) walletFrame->gotoOverviewPage(); -} - -void BitcoinGUI::gotoHistoryPage() -{ - historyAction->setChecked(true); - if (walletFrame) walletFrame->gotoHistoryPage(); -} - -void BitcoinGUI::gotoReceiveCoinsPage() -{ - receiveCoinsAction->setChecked(true); - if (walletFrame) walletFrame->gotoReceiveCoinsPage(); -} - -void BitcoinGUI::gotoSendCoinsPage(QString addr) -{ - sendCoinsAction->setChecked(true); - if (walletFrame) walletFrame->gotoSendCoinsPage(addr); -} - -void BitcoinGUI::gotoSignMessageTab(QString addr) -{ - if (walletFrame) walletFrame->gotoSignMessageTab(addr); -} - -void BitcoinGUI::gotoVerifyMessageTab(QString addr) -{ - if (walletFrame) walletFrame->gotoVerifyMessageTab(addr); -} -#endif // ENABLE_WALLET - -void BitcoinGUI::setNumConnections(int count) -{ - QString icon; - switch(count) - { - case 0: icon = ":/icons/connect_0"; break; - case 1: case 2: case 3: icon = ":/icons/connect_1"; break; - case 4: case 5: case 6: icon = ":/icons/connect_2"; break; - case 7: case 8: case 9: icon = ":/icons/connect_3"; break; - default: icon = ":/icons/connect_4"; break; - } - labelConnectionsIcon->setPixmap(SingleColorIcon(icon).pixmap(STATUSBAR_ICONSIZE,STATUSBAR_ICONSIZE)); - labelConnectionsIcon->setToolTip(tr("%n active connection(s) to Bitcoin network", "", count)); -} - -void BitcoinGUI::setNumBlocks(int count, const QDateTime& blockDate) -{ - if(!clientModel) - return; - - // Prevent orphan statusbar messages (e.g. hover Quit in main menu, wait until chain-sync starts -> garbelled text) - statusBar()->clearMessage(); - - // Acquire current block source - enum BlockSource blockSource = clientModel->getBlockSource(); - switch (blockSource) { - case BLOCK_SOURCE_NETWORK: - progressBarLabel->setText(tr("Synchronizing with network...")); - break; - case BLOCK_SOURCE_DISK: - progressBarLabel->setText(tr("Importing blocks from disk...")); - break; - case BLOCK_SOURCE_REINDEX: - progressBarLabel->setText(tr("Reindexing blocks on disk...")); - break; - case BLOCK_SOURCE_NONE: - // Case: not Importing, not Reindexing and no network connection - progressBarLabel->setText(tr("No block source available...")); - break; - } - - QString tooltip; - - QDateTime currentDate = QDateTime::currentDateTime(); - qint64 secs = blockDate.secsTo(currentDate); - - tooltip = tr("Processed %n block(s) of transaction history.", "", count); - - // Set icon state: spinning if catching up, tick otherwise - if(secs < 90*60) - { - tooltip = tr("Up to date") + QString(".
") + tooltip; - labelBlocksIcon->setPixmap(SingleColorIcon(":/icons/synced").pixmap(STATUSBAR_ICONSIZE, STATUSBAR_ICONSIZE)); - -#ifdef ENABLE_WALLET - if(walletFrame) - walletFrame->showOutOfSyncWarning(false); -#endif // ENABLE_WALLET - - progressBarLabel->setVisible(false); - progressBar->setVisible(false); - } - else - { - // Represent time from last generated block in human readable text - QString timeBehindText; - const int HOUR_IN_SECONDS = 60*60; - const int DAY_IN_SECONDS = 24*60*60; - const int WEEK_IN_SECONDS = 7*24*60*60; - const int YEAR_IN_SECONDS = 31556952; // Average length of year in Gregorian calendar - if(secs < 2*DAY_IN_SECONDS) - { - timeBehindText = tr("%n hour(s)","",secs/HOUR_IN_SECONDS); - } - else if(secs < 2*WEEK_IN_SECONDS) - { - timeBehindText = tr("%n day(s)","",secs/DAY_IN_SECONDS); - } - else if(secs < YEAR_IN_SECONDS) - { - timeBehindText = tr("%n week(s)","",secs/WEEK_IN_SECONDS); - } - else - { - qint64 years = secs / YEAR_IN_SECONDS; - qint64 remainder = secs % YEAR_IN_SECONDS; - timeBehindText = tr("%1 and %2").arg(tr("%n year(s)", "", years)).arg(tr("%n week(s)","", remainder/WEEK_IN_SECONDS)); - } - - progressBarLabel->setVisible(true); - progressBar->setFormat(tr("%1 behind").arg(timeBehindText)); - progressBar->setMaximum(1000000000); - progressBar->setValue(clientModel->getVerificationProgress() * 1000000000.0 + 0.5); - progressBar->setVisible(true); - - tooltip = tr("Catching up...") + QString("
") + tooltip; - if(count != prevBlocks) - { - labelBlocksIcon->setPixmap(SingleColorIcon(QString( - ":/movies/spinner-%1").arg(spinnerFrame, 3, 10, QChar('0'))) - .pixmap(STATUSBAR_ICONSIZE, STATUSBAR_ICONSIZE)); - spinnerFrame = (spinnerFrame + 1) % SPINNER_FRAMES; - } - prevBlocks = count; - -#ifdef ENABLE_WALLET - if(walletFrame) - walletFrame->showOutOfSyncWarning(true); -#endif // ENABLE_WALLET - - tooltip += QString("
"); - tooltip += tr("Last received block was generated %1 ago.").arg(timeBehindText); - tooltip += QString("
"); - tooltip += tr("Transactions after this will not yet be visible."); - } - - // Don't word-wrap this (fixed-width) tooltip - tooltip = QString("") + tooltip + QString(""); - - labelBlocksIcon->setToolTip(tooltip); - progressBarLabel->setToolTip(tooltip); - progressBar->setToolTip(tooltip); -} - -void BitcoinGUI::message(const QString &title, const QString &message, unsigned int style, bool *ret) -{ - QString strTitle = tr("Bitcoin"); // default title - // Default to information icon - int nMBoxIcon = QMessageBox::Information; - int nNotifyIcon = Notificator::Information; - - QString msgType; - - // Prefer supplied title over style based title - if (!title.isEmpty()) { - msgType = title; - } - else { - switch (style) { - case CClientUIInterface::MSG_ERROR: - msgType = tr("Error"); - break; - case CClientUIInterface::MSG_WARNING: - msgType = tr("Warning"); - break; - case CClientUIInterface::MSG_INFORMATION: - msgType = tr("Information"); - break; - default: - break; - } - } - // Append title to "Bitcoin - " - if (!msgType.isEmpty()) - strTitle += " - " + msgType; - - // Check for error/warning icon - if (style & CClientUIInterface::ICON_ERROR) { - nMBoxIcon = QMessageBox::Critical; - nNotifyIcon = Notificator::Critical; - } - else if (style & CClientUIInterface::ICON_WARNING) { - nMBoxIcon = QMessageBox::Warning; - nNotifyIcon = Notificator::Warning; - } - - // Display message - if (style & CClientUIInterface::MODAL) { - // Check for buttons, use OK as default, if none was supplied - QMessageBox::StandardButton buttons; - if (!(buttons = (QMessageBox::StandardButton)(style & CClientUIInterface::BTN_MASK))) - buttons = QMessageBox::Ok; - - showNormalIfMinimized(); - QMessageBox mBox((QMessageBox::Icon)nMBoxIcon, strTitle, message, buttons, this); - int r = mBox.exec(); - if (ret != NULL) - *ret = r == QMessageBox::Ok; - } - else - notificator->notify((Notificator::Class)nNotifyIcon, strTitle, message); -} - -void BitcoinGUI::changeEvent(QEvent *e) -{ - QMainWindow::changeEvent(e); -#ifndef Q_OS_MAC // Ignored on Mac - if(e->type() == QEvent::WindowStateChange) - { - if(clientModel && clientModel->getOptionsModel() && clientModel->getOptionsModel()->getMinimizeToTray()) - { - QWindowStateChangeEvent *wsevt = static_cast(e); - if(!(wsevt->oldState() & Qt::WindowMinimized) && isMinimized()) - { - QTimer::singleShot(0, this, SLOT(hide())); - e->ignore(); - } - } - } -#endif -} - -void BitcoinGUI::closeEvent(QCloseEvent *event) -{ -#ifndef Q_OS_MAC // Ignored on Mac - if(clientModel && clientModel->getOptionsModel()) - { - if(!clientModel->getOptionsModel()->getMinimizeToTray() && - !clientModel->getOptionsModel()->getMinimizeOnClose()) - { - // close rpcConsole in case it was open to make some space for the shutdown window - rpcConsole->close(); - - QApplication::quit(); - } - } -#endif - QMainWindow::closeEvent(event); -} - -#ifdef ENABLE_WALLET -void BitcoinGUI::incomingTransaction(const QString& date, int unit, const CAmount& amount, const QString& type, const QString& address, const QString& label) -{ - // On new transaction, make an info balloon - QString msg = tr("Date: %1\n").arg(date) + - tr("Amount: %1\n").arg(BitcoinUnits::formatWithUnit(unit, amount, true)) + - tr("Type: %1\n").arg(type); - if (!label.isEmpty()) - msg += tr("Label: %1\n").arg(label); - else if (!address.isEmpty()) - msg += tr("Address: %1\n").arg(address); - message((amount)<0 ? tr("Sent transaction") : tr("Incoming transaction"), - msg, CClientUIInterface::MSG_INFORMATION); -} -#endif // ENABLE_WALLET - -void BitcoinGUI::dragEnterEvent(QDragEnterEvent *event) -{ - // Accept only URIs - if(event->mimeData()->hasUrls()) - event->acceptProposedAction(); -} - -void BitcoinGUI::dropEvent(QDropEvent *event) -{ - if(event->mimeData()->hasUrls()) - { - Q_FOREACH(const QUrl &uri, event->mimeData()->urls()) - { - Q_EMIT receivedURI(uri.toString()); - } - } - event->acceptProposedAction(); -} - -bool BitcoinGUI::eventFilter(QObject *object, QEvent *event) -{ - // Catch status tip events - if (event->type() == QEvent::StatusTip) - { - // Prevent adding text from setStatusTip(), if we currently use the status bar for displaying other stuff - if (progressBarLabel->isVisible() || progressBar->isVisible()) - return true; - } - return QMainWindow::eventFilter(object, event); -} - -#ifdef ENABLE_WALLET -bool BitcoinGUI::handlePaymentRequest(const SendCoinsRecipient& recipient) -{ - // URI has to be valid - if (walletFrame && walletFrame->handlePaymentRequest(recipient)) - { - showNormalIfMinimized(); - gotoSendCoinsPage(); - return true; - } - return false; -} - -void BitcoinGUI::setEncryptionStatus(int status) -{ - switch(status) - { - case WalletModel::Unencrypted: - labelEncryptionIcon->hide(); - encryptWalletAction->setChecked(false); - changePassphraseAction->setEnabled(false); - encryptWalletAction->setEnabled(true); - break; - case WalletModel::Unlocked: - labelEncryptionIcon->show(); - labelEncryptionIcon->setPixmap(SingleColorIcon(":/icons/lock_open").pixmap(STATUSBAR_ICONSIZE,STATUSBAR_ICONSIZE)); - labelEncryptionIcon->setToolTip(tr("Wallet is encrypted and currently unlocked")); - encryptWalletAction->setChecked(true); - changePassphraseAction->setEnabled(true); - encryptWalletAction->setEnabled(false); // TODO: decrypt currently not supported - break; - case WalletModel::Locked: - labelEncryptionIcon->show(); - labelEncryptionIcon->setPixmap(SingleColorIcon(":/icons/lock_closed").pixmap(STATUSBAR_ICONSIZE,STATUSBAR_ICONSIZE)); - labelEncryptionIcon->setToolTip(tr("Wallet is encrypted and currently locked")); - encryptWalletAction->setChecked(true); - changePassphraseAction->setEnabled(true); - encryptWalletAction->setEnabled(false); // TODO: decrypt currently not supported - break; - } -} -#endif // ENABLE_WALLET - -void BitcoinGUI::showNormalIfMinimized(bool fToggleHidden) -{ - if(!clientModel) - return; - - // activateWindow() (sometimes) helps with keyboard focus on Windows - if (isHidden()) - { - show(); - activateWindow(); - } - else if (isMinimized()) - { - showNormal(); - activateWindow(); - } - else if (GUIUtil::isObscured(this)) - { - raise(); - activateWindow(); - } - else if(fToggleHidden) - hide(); -} - -void BitcoinGUI::toggleHidden() -{ - showNormalIfMinimized(true); -} - -void BitcoinGUI::detectShutdown() -{ - if (ShutdownRequested()) - { - if(rpcConsole) - rpcConsole->hide(); - qApp->quit(); - } -} - -void BitcoinGUI::showProgress(const QString &title, int nProgress) -{ - if (nProgress == 0) - { - progressDialog = new QProgressDialog(title, "", 0, 100); - progressDialog->setWindowModality(Qt::ApplicationModal); - progressDialog->setMinimumDuration(0); - progressDialog->setCancelButton(0); - progressDialog->setAutoClose(false); - progressDialog->setValue(0); - } - else if (nProgress == 100) - { - if (progressDialog) - { - progressDialog->close(); - progressDialog->deleteLater(); - } - } - else if (progressDialog) - progressDialog->setValue(nProgress); -} - -static bool ThreadSafeMessageBox(BitcoinGUI *gui, const std::string& message, const std::string& caption, unsigned int style) -{ - bool modal = (style & CClientUIInterface::MODAL); - // The SECURE flag has no effect in the Qt GUI. - // bool secure = (style & CClientUIInterface::SECURE); - style &= ~CClientUIInterface::SECURE; - bool ret = false; - // In case of modal message, use blocking connection to wait for user to click a button - QMetaObject::invokeMethod(gui, "message", - modal ? GUIUtil::blockingGUIThreadConnection() : Qt::QueuedConnection, - Q_ARG(QString, QString::fromStdString(caption)), - Q_ARG(QString, QString::fromStdString(message)), - Q_ARG(unsigned int, style), - Q_ARG(bool*, &ret)); - return ret; -} - -void BitcoinGUI::subscribeToCoreSignals() -{ - // Connect signals to client - uiInterface.ThreadSafeMessageBox.connect(boost::bind(ThreadSafeMessageBox, this, _1, _2, _3)); -} - -void BitcoinGUI::unsubscribeFromCoreSignals() -{ - // Disconnect signals from client - uiInterface.ThreadSafeMessageBox.disconnect(boost::bind(ThreadSafeMessageBox, this, _1, _2, _3)); -} - -UnitDisplayStatusBarControl::UnitDisplayStatusBarControl() : - optionsModel(0), - menu(0) -{ - createContextMenu(); - setToolTip(tr("Unit to show amounts in. Click to select another unit.")); - QList units = BitcoinUnits::availableUnits(); - int max_width = 0; - const QFontMetrics fm(font()); - Q_FOREACH (const BitcoinUnits::Unit unit, units) - { - max_width = qMax(max_width, fm.width(BitcoinUnits::name(unit))); - } - setMinimumSize(max_width, 0); - setAlignment(Qt::AlignRight | Qt::AlignVCenter); - setStyleSheet(QString("QLabel { color : %1 }").arg(SingleColor().name())); -} - -/** So that it responds to button clicks */ -void UnitDisplayStatusBarControl::mousePressEvent(QMouseEvent *event) -{ - onDisplayUnitsClicked(event->pos()); -} - -/** Creates context menu, its actions, and wires up all the relevant signals for mouse events. */ -void UnitDisplayStatusBarControl::createContextMenu() -{ - menu = new QMenu(); - Q_FOREACH(BitcoinUnits::Unit u, BitcoinUnits::availableUnits()) - { - QAction *menuAction = new QAction(QString(BitcoinUnits::name(u)), this); - menuAction->setData(QVariant(u)); - menu->addAction(menuAction); - } - connect(menu,SIGNAL(triggered(QAction*)),this,SLOT(onMenuSelection(QAction*))); -} - -/** Lets the control know about the Options Model (and its signals) */ -void UnitDisplayStatusBarControl::setOptionsModel(OptionsModel *optionsModel) -{ - if (optionsModel) - { - this->optionsModel = optionsModel; - - // be aware of a display unit change reported by the OptionsModel object. - connect(optionsModel,SIGNAL(displayUnitChanged(int)),this,SLOT(updateDisplayUnit(int))); - - // initialize the display units label with the current value in the model. - updateDisplayUnit(optionsModel->getDisplayUnit()); - } -} - -/** When Display Units are changed on OptionsModel it will refresh the display text of the control on the status bar */ -void UnitDisplayStatusBarControl::updateDisplayUnit(int newUnits) -{ - setText(BitcoinUnits::name(newUnits)); -} - -/** Shows context menu with Display Unit options by the mouse coordinates */ -void UnitDisplayStatusBarControl::onDisplayUnitsClicked(const QPoint& point) -{ - QPoint globalPos = mapToGlobal(point); - menu->exec(globalPos); -} - -/** Tells underlying optionsModel to update its current display unit. */ -void UnitDisplayStatusBarControl::onMenuSelection(QAction* action) -{ - if (action) - { - optionsModel->setDisplayUnit(action->data()); - } -} diff --git a/src/qt/bitcoingui.h b/src/qt/bitcoingui.h deleted file mode 100644 index b4647ae44..000000000 --- a/src/qt/bitcoingui.h +++ /dev/null @@ -1,244 +0,0 @@ -// Copyright (c) 2011-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. - -#ifndef BITCOIN_QT_BITCOINGUI_H -#define BITCOIN_QT_BITCOINGUI_H - -#if defined(HAVE_CONFIG_H) -#include "config/bitcoin-config.h" -#endif - -#include "amount.h" - -#include -#include -#include -#include -#include -#include - -class ClientModel; -class NetworkStyle; -class Notificator; -class OptionsModel; -class RPCConsole; -class SendCoinsRecipient; -class UnitDisplayStatusBarControl; -class WalletFrame; -class WalletModel; - -class CWallet; - -QT_BEGIN_NAMESPACE -class QAction; -class QProgressBar; -class QProgressDialog; -QT_END_NAMESPACE - -/** - Bitcoin GUI main class. This class represents the main window of the Bitcoin UI. It communicates with both the client and - wallet models to give the user an up-to-date view of the current core state. -*/ -class BitcoinGUI : public QMainWindow -{ - Q_OBJECT - -public: - static const QString DEFAULT_WALLET; - - explicit BitcoinGUI(const NetworkStyle *networkStyle, QWidget *parent = 0); - ~BitcoinGUI(); - - /** Set the client model. - The client model represents the part of the core that communicates with the P2P network, and is wallet-agnostic. - */ - void setClientModel(ClientModel *clientModel); - -#ifdef ENABLE_WALLET - /** Set the wallet model. - The wallet model represents a bitcoin wallet, and offers access to the list of transactions, address book and sending - functionality. - */ - bool addWallet(const QString& name, WalletModel *walletModel); - bool setCurrentWallet(const QString& name); - void removeAllWallets(); -#endif // ENABLE_WALLET - bool enableWallet; - -protected: - void changeEvent(QEvent *e); - void closeEvent(QCloseEvent *event); - void dragEnterEvent(QDragEnterEvent *event); - void dropEvent(QDropEvent *event); - bool eventFilter(QObject *object, QEvent *event); - -private: - ClientModel *clientModel; - WalletFrame *walletFrame; - - UnitDisplayStatusBarControl *unitDisplayControl; - QLabel *labelEncryptionIcon; - QLabel *labelConnectionsIcon; - QLabel *labelBlocksIcon; - QLabel *progressBarLabel; - QProgressBar *progressBar; - QProgressDialog *progressDialog; - - QMenuBar *appMenuBar; - QAction *overviewAction; - QAction *historyAction; - QAction *quitAction; - QAction *sendCoinsAction; - QAction *sendCoinsMenuAction; - QAction *usedSendingAddressesAction; - QAction *usedReceivingAddressesAction; - QAction *signMessageAction; - QAction *verifyMessageAction; - QAction *aboutAction; - QAction *receiveCoinsAction; - QAction *receiveCoinsMenuAction; - QAction *optionsAction; - QAction *toggleHideAction; - QAction *encryptWalletAction; - QAction *backupWalletAction; - QAction *changePassphraseAction; - QAction *aboutQtAction; - QAction *openRPCConsoleAction; - QAction *openAction; - QAction *showHelpMessageAction; - - QSystemTrayIcon *trayIcon; - QMenu *trayIconMenu; - Notificator *notificator; - RPCConsole *rpcConsole; - - /** Keep track of previous number of blocks, to detect progress */ - int prevBlocks; - int spinnerFrame; - - /** Create the main UI actions. */ - void createActions(); - /** Create the menu bar and sub-menus. */ - void createMenuBar(); - /** Create the toolbars */ - void createToolBars(); - /** Create system tray icon and notification */ - void createTrayIcon(const NetworkStyle *networkStyle); - /** Create system tray menu (or setup the dock menu) */ - void createTrayIconMenu(); - - /** Enable or disable all wallet-related actions */ - void setWalletActionsEnabled(bool enabled); - - /** Connect core signals to GUI client */ - void subscribeToCoreSignals(); - /** Disconnect core signals from GUI client */ - void unsubscribeFromCoreSignals(); - -Q_SIGNALS: - /** Signal raised when a URI was entered or dragged to the GUI */ - void receivedURI(const QString &uri); - -public Q_SLOTS: - /** Set number of connections shown in the UI */ - void setNumConnections(int count); - /** Set number of blocks and last block date shown in the UI */ - void setNumBlocks(int count, const QDateTime& blockDate); - - /** Notify the user of an event from the core network or transaction handling code. - @param[in] title the message box / notification title - @param[in] message the displayed text - @param[in] style modality and style definitions (icon and used buttons - buttons only for message boxes) - @see CClientUIInterface::MessageBoxFlags - @param[in] ret pointer to a bool that will be modified to whether Ok was clicked (modal only) - */ - void message(const QString &title, const QString &message, unsigned int style, bool *ret = NULL); - -#ifdef ENABLE_WALLET - /** Set the encryption status as shown in the UI. - @param[in] status current encryption status - @see WalletModel::EncryptionStatus - */ - void setEncryptionStatus(int status); - - bool handlePaymentRequest(const SendCoinsRecipient& recipient); - - /** Show incoming transaction notification for new transactions. */ - void incomingTransaction(const QString& date, int unit, const CAmount& amount, const QString& type, const QString& address, const QString& label); -#endif // ENABLE_WALLET - -private Q_SLOTS: -#ifdef ENABLE_WALLET - /** Switch to overview (home) page */ - void gotoOverviewPage(); - /** Switch to history (transactions) page */ - void gotoHistoryPage(); - /** Switch to receive coins page */ - void gotoReceiveCoinsPage(); - /** Switch to send coins page */ - void gotoSendCoinsPage(QString addr = ""); - - /** Show Sign/Verify Message dialog and switch to sign message tab */ - void gotoSignMessageTab(QString addr = ""); - /** Show Sign/Verify Message dialog and switch to verify message tab */ - void gotoVerifyMessageTab(QString addr = ""); - - /** Show open dialog */ - void openClicked(); -#endif // ENABLE_WALLET - /** Show configuration dialog */ - void optionsClicked(); - /** Show about dialog */ - void aboutClicked(); - /** Show debug window */ - void showDebugWindow(); - /** Show help message dialog */ - void showHelpMessageClicked(); -#ifndef Q_OS_MAC - /** Handle tray icon clicked */ - void trayIconActivated(QSystemTrayIcon::ActivationReason reason); -#endif - - /** Show window if hidden, unminimize when minimized, rise when obscured or show if hidden and fToggleHidden is true */ - void showNormalIfMinimized(bool fToggleHidden = false); - /** Simply calls showNormalIfMinimized(true) for use in SLOT() macro */ - void toggleHidden(); - - /** called by a timer to check if fRequestShutdown has been set **/ - void detectShutdown(); - - /** Show progress dialog e.g. for verifychain */ - void showProgress(const QString &title, int nProgress); -}; - -class UnitDisplayStatusBarControl : public QLabel -{ - Q_OBJECT - -public: - explicit UnitDisplayStatusBarControl(); - /** Lets the control know about the Options Model (and its signals) */ - void setOptionsModel(OptionsModel *optionsModel); - -protected: - /** So that it responds to left-button clicks */ - void mousePressEvent(QMouseEvent *event); - -private: - OptionsModel *optionsModel; - QMenu* menu; - - /** Shows context menu with Display Unit options by the mouse coordinates */ - void onDisplayUnitsClicked(const QPoint& point); - /** Creates context menu, its actions, and wires up all the relevant signals for mouse events. */ - void createContextMenu(); - -private Q_SLOTS: - /** When Display Units are changed on OptionsModel it will refresh the display text of the control on the status bar */ - void updateDisplayUnit(int newUnits); - /** Tells underlying optionsModel to update its current display unit. */ - void onMenuSelection(QAction* action); -}; - -#endif // BITCOIN_QT_BITCOINGUI_H diff --git a/src/qt/bitcoinunits.cpp b/src/qt/bitcoinunits.cpp deleted file mode 100644 index 425b45d91..000000000 --- a/src/qt/bitcoinunits.cpp +++ /dev/null @@ -1,220 +0,0 @@ -// Copyright (c) 2011-2013 The Bitcoin Core developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#include "bitcoinunits.h" - -#include "primitives/transaction.h" - -#include - -BitcoinUnits::BitcoinUnits(QObject *parent): - QAbstractListModel(parent), - unitlist(availableUnits()) -{ -} - -QList BitcoinUnits::availableUnits() -{ - QList unitlist; - unitlist.append(BTC); - unitlist.append(mBTC); - unitlist.append(uBTC); - return unitlist; -} - -bool BitcoinUnits::valid(int unit) -{ - switch(unit) - { - case BTC: - case mBTC: - case uBTC: - return true; - default: - return false; - } -} - -QString BitcoinUnits::name(int unit) -{ - switch(unit) - { - case BTC: return QString("BTC"); - case mBTC: return QString("mBTC"); - case uBTC: return QString::fromUtf8("μBTC"); - default: return QString("???"); - } -} - -QString BitcoinUnits::description(int unit) -{ - switch(unit) - { - case BTC: return QString("Bitcoins"); - case mBTC: return QString("Milli-Bitcoins (1 / 1" THIN_SP_UTF8 "000)"); - case uBTC: return QString("Micro-Bitcoins (1 / 1" THIN_SP_UTF8 "000" THIN_SP_UTF8 "000)"); - default: return QString("???"); - } -} - -qint64 BitcoinUnits::factor(int unit) -{ - switch(unit) - { - case BTC: return 100000000; - case mBTC: return 100000; - case uBTC: return 100; - default: return 100000000; - } -} - -int BitcoinUnits::decimals(int unit) -{ - switch(unit) - { - case BTC: return 8; - case mBTC: return 5; - case uBTC: return 2; - default: return 0; - } -} - -QString BitcoinUnits::format(int unit, const CAmount& nIn, bool fPlus, SeparatorStyle separators) -{ - // Note: not using straight sprintf here because we do NOT want - // localized number formatting. - if(!valid(unit)) - return QString(); // Refuse to format invalid unit - qint64 n = (qint64)nIn; - qint64 coin = factor(unit); - int num_decimals = decimals(unit); - qint64 n_abs = (n > 0 ? n : -n); - qint64 quotient = n_abs / coin; - qint64 remainder = n_abs % coin; - QString quotient_str = QString::number(quotient); - QString remainder_str = QString::number(remainder).rightJustified(num_decimals, '0'); - - // Use SI-style thin space separators as these are locale independent and can't be - // confused with the decimal marker. - QChar thin_sp(THIN_SP_CP); - int q_size = quotient_str.size(); - if (separators == separatorAlways || (separators == separatorStandard && q_size > 4)) - for (int i = 3; i < q_size; i += 3) - quotient_str.insert(q_size - i, thin_sp); - - if (n < 0) - quotient_str.insert(0, '-'); - else if (fPlus && n > 0) - quotient_str.insert(0, '+'); - return quotient_str + QString(".") + remainder_str; -} - - -// TODO: Review all remaining calls to BitcoinUnits::formatWithUnit to -// TODO: determine whether the output is used in a plain text context -// TODO: or an HTML context (and replace with -// TODO: BtcoinUnits::formatHtmlWithUnit in the latter case). Hopefully -// TODO: there aren't instances where the result could be used in -// TODO: either context. - -// NOTE: Using formatWithUnit in an HTML context risks wrapping -// quantities at the thousands separator. More subtly, it also results -// in a standard space rather than a thin space, due to a bug in Qt's -// XML whitespace canonicalisation -// -// Please take care to use formatHtmlWithUnit instead, when -// appropriate. - -QString BitcoinUnits::formatWithUnit(int unit, const CAmount& amount, bool plussign, SeparatorStyle separators) -{ - return format(unit, amount, plussign, separators) + QString(" ") + name(unit); -} - -QString BitcoinUnits::formatHtmlWithUnit(int unit, const CAmount& amount, bool plussign, SeparatorStyle separators) -{ - QString str(formatWithUnit(unit, amount, plussign, separators)); - str.replace(QChar(THIN_SP_CP), QString(THIN_SP_HTML)); - return QString("%1").arg(str); -} - - -bool BitcoinUnits::parse(int unit, const QString &value, CAmount *val_out) -{ - if(!valid(unit) || value.isEmpty()) - return false; // Refuse to parse invalid unit or empty string - int num_decimals = decimals(unit); - - // Ignore spaces and thin spaces when parsing - QStringList parts = removeSpaces(value).split("."); - - if(parts.size() > 2) - { - return false; // More than one dot - } - QString whole = parts[0]; - QString decimals; - - if(parts.size() > 1) - { - decimals = parts[1]; - } - if(decimals.size() > num_decimals) - { - return false; // Exceeds max precision - } - bool ok = false; - QString str = whole + decimals.leftJustified(num_decimals, '0'); - - if(str.size() > 18) - { - return false; // Longer numbers will exceed 63 bits - } - CAmount retvalue(str.toLongLong(&ok)); - if(val_out) - { - *val_out = retvalue; - } - return ok; -} - -QString BitcoinUnits::getAmountColumnTitle(int unit) -{ - QString amountTitle = QObject::tr("Amount"); - if (BitcoinUnits::valid(unit)) - { - amountTitle += " ("+BitcoinUnits::name(unit) + ")"; - } - return amountTitle; -} - -int BitcoinUnits::rowCount(const QModelIndex &parent) const -{ - Q_UNUSED(parent); - return unitlist.size(); -} - -QVariant BitcoinUnits::data(const QModelIndex &index, int role) const -{ - int row = index.row(); - if(row >= 0 && row < unitlist.size()) - { - Unit unit = unitlist.at(row); - switch(role) - { - case Qt::EditRole: - case Qt::DisplayRole: - return QVariant(name(unit)); - case Qt::ToolTipRole: - return QVariant(description(unit)); - case UnitRole: - return QVariant(static_cast(unit)); - } - } - return QVariant(); -} - -CAmount BitcoinUnits::maxMoney() -{ - return MAX_MONEY; -} diff --git a/src/qt/bitcoinunits.h b/src/qt/bitcoinunits.h deleted file mode 100644 index 1871c33a7..000000000 --- a/src/qt/bitcoinunits.h +++ /dev/null @@ -1,127 +0,0 @@ -// Copyright (c) 2011-2013 The Bitcoin Core developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#ifndef BITCOIN_QT_BITCOINUNITS_H -#define BITCOIN_QT_BITCOINUNITS_H - -#include "amount.h" - -#include -#include - -// U+2009 THIN SPACE = UTF-8 E2 80 89 -#define REAL_THIN_SP_CP 0x2009 -#define REAL_THIN_SP_UTF8 "\xE2\x80\x89" -#define REAL_THIN_SP_HTML " " - -// U+200A HAIR SPACE = UTF-8 E2 80 8A -#define HAIR_SP_CP 0x200A -#define HAIR_SP_UTF8 "\xE2\x80\x8A" -#define HAIR_SP_HTML " " - -// U+2006 SIX-PER-EM SPACE = UTF-8 E2 80 86 -#define SIXPEREM_SP_CP 0x2006 -#define SIXPEREM_SP_UTF8 "\xE2\x80\x86" -#define SIXPEREM_SP_HTML " " - -// U+2007 FIGURE SPACE = UTF-8 E2 80 87 -#define FIGURE_SP_CP 0x2007 -#define FIGURE_SP_UTF8 "\xE2\x80\x87" -#define FIGURE_SP_HTML " " - -// QMessageBox seems to have a bug whereby it doesn't display thin/hair spaces -// correctly. Workaround is to display a space in a small font. If you -// change this, please test that it doesn't cause the parent span to start -// wrapping. -#define HTML_HACK_SP " " - -// Define THIN_SP_* variables to be our preferred type of thin space -#define THIN_SP_CP REAL_THIN_SP_CP -#define THIN_SP_UTF8 REAL_THIN_SP_UTF8 -#define THIN_SP_HTML HTML_HACK_SP - -/** Bitcoin unit definitions. Encapsulates parsing and formatting - and serves as list model for drop-down selection boxes. -*/ -class BitcoinUnits: public QAbstractListModel -{ - Q_OBJECT - -public: - explicit BitcoinUnits(QObject *parent); - - /** Bitcoin units. - @note Source: https://en.bitcoin.it/wiki/Units . Please add only sensible ones - */ - enum Unit - { - BTC, - mBTC, - uBTC - }; - - enum SeparatorStyle - { - separatorNever, - separatorStandard, - separatorAlways - }; - - //! @name Static API - //! Unit conversion and formatting - ///@{ - - //! Get list of units, for drop-down box - static QList availableUnits(); - //! Is unit ID valid? - static bool valid(int unit); - //! Short name - static QString name(int unit); - //! Longer description - static QString description(int unit); - //! Number of Satoshis (1e-8) per unit - static qint64 factor(int unit); - //! Number of decimals left - static int decimals(int unit); - //! Format as string - static QString format(int unit, const CAmount& amount, bool plussign=false, SeparatorStyle separators=separatorStandard); - //! Format as string (with unit) - static QString formatWithUnit(int unit, const CAmount& amount, bool plussign=false, SeparatorStyle separators=separatorStandard); - static QString formatHtmlWithUnit(int unit, const CAmount& amount, bool plussign=false, SeparatorStyle separators=separatorStandard); - //! Parse string to coin amount - static bool parse(int unit, const QString &value, CAmount *val_out); - //! Gets title for amount column including current display unit if optionsModel reference available */ - static QString getAmountColumnTitle(int unit); - ///@} - - //! @name AbstractListModel implementation - //! List model for unit drop-down selection box. - ///@{ - enum RoleIndex { - /** Unit identifier */ - UnitRole = Qt::UserRole - }; - int rowCount(const QModelIndex &parent) const; - QVariant data(const QModelIndex &index, int role) const; - ///@} - - static QString removeSpaces(QString text) - { - text.remove(' '); - text.remove(QChar(THIN_SP_CP)); -#if (THIN_SP_CP != REAL_THIN_SP_CP) - text.remove(QChar(REAL_THIN_SP_CP)); -#endif - return text; - } - - //! Return maximum number of base units (Satoshis) - static CAmount maxMoney(); - -private: - QList unitlist; -}; -typedef BitcoinUnits::Unit BitcoinUnit; - -#endif // BITCOIN_QT_BITCOINUNITS_H diff --git a/src/qt/clientmodel.cpp b/src/qt/clientmodel.cpp deleted file mode 100644 index 51fd443dd..000000000 --- a/src/qt/clientmodel.cpp +++ /dev/null @@ -1,243 +0,0 @@ -// Copyright (c) 2011-2013 The Bitcoin Core developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#include "clientmodel.h" - -#include "guiconstants.h" -#include "peertablemodel.h" - -#include "alert.h" -#include "chainparams.h" -#include "checkpoints.h" -#include "clientversion.h" -#include "main.h" -#include "net.h" -#include "ui_interface.h" -#include "util.h" - -#include - -#include -#include - -static const int64_t nClientStartupTime = GetTime(); - -ClientModel::ClientModel(OptionsModel *optionsModel, QObject *parent) : - QObject(parent), - optionsModel(optionsModel), - peerTableModel(0), - cachedNumBlocks(0), - cachedBlockDate(QDateTime()), - cachedReindexing(0), - cachedImporting(0), - pollTimer(0) -{ - peerTableModel = new PeerTableModel(this); - pollTimer = new QTimer(this); - connect(pollTimer, SIGNAL(timeout()), this, SLOT(updateTimer())); - pollTimer->start(MODEL_UPDATE_DELAY); - - subscribeToCoreSignals(); -} - -ClientModel::~ClientModel() -{ - unsubscribeFromCoreSignals(); -} - -int ClientModel::getNumConnections(unsigned int flags) const -{ - LOCK(cs_vNodes); - if (flags == CONNECTIONS_ALL) // Shortcut if we want total - return vNodes.size(); - - int nNum = 0; - BOOST_FOREACH(CNode* pnode, vNodes) - if (flags & (pnode->fInbound ? CONNECTIONS_IN : CONNECTIONS_OUT)) - nNum++; - - return nNum; -} - -int ClientModel::getNumBlocks() const -{ - LOCK(cs_main); - return chainActive.Height(); -} - -quint64 ClientModel::getTotalBytesRecv() const -{ - return CNode::GetTotalBytesRecv(); -} - -quint64 ClientModel::getTotalBytesSent() const -{ - return CNode::GetTotalBytesSent(); -} - -QDateTime ClientModel::getLastBlockDate() const -{ - LOCK(cs_main); - - if (chainActive.Tip()) - return QDateTime::fromTime_t(chainActive.Tip()->GetBlockTime()); - - return QDateTime::fromTime_t(Params().GenesisBlock().GetBlockTime()); // Genesis block's time of current network -} - -double ClientModel::getVerificationProgress() const -{ - LOCK(cs_main); - return Checkpoints::GuessVerificationProgress(Params().Checkpoints(), chainActive.Tip()); -} - -void ClientModel::updateTimer() -{ - // Get required lock upfront. This avoids the GUI from getting stuck on - // periodical polls if the core is holding the locks for a longer time - - // for example, during a wallet rescan. - TRY_LOCK(cs_main, lockMain); - if (!lockMain) - return; - - // Some quantities (such as number of blocks) change so fast that we don't want to be notified for each change. - // Periodically check and update with a timer. - int newNumBlocks = getNumBlocks(); - QDateTime newBlockDate = getLastBlockDate(); - - // check for changed number of blocks we have, number of blocks peers claim to have, reindexing state and importing state - if (cachedNumBlocks != newNumBlocks || - cachedBlockDate != newBlockDate || - cachedReindexing != fReindex || - cachedImporting != fImporting) - { - cachedNumBlocks = newNumBlocks; - cachedBlockDate = newBlockDate; - cachedReindexing = fReindex; - cachedImporting = fImporting; - - Q_EMIT numBlocksChanged(newNumBlocks, newBlockDate); - } - - Q_EMIT bytesChanged(getTotalBytesRecv(), getTotalBytesSent()); -} - -void ClientModel::updateNumConnections(int numConnections) -{ - Q_EMIT numConnectionsChanged(numConnections); -} - -void ClientModel::updateAlert(const QString &hash, int status) -{ - // Show error message notification for new alert - if(status == CT_NEW) - { - uint256 hash_256; - hash_256.SetHex(hash.toStdString()); - CAlert alert = CAlert::getAlertByHash(hash_256); - if(!alert.IsNull()) - { - Q_EMIT message(tr("Network Alert"), QString::fromStdString(alert.strStatusBar), CClientUIInterface::ICON_ERROR); - } - } - - Q_EMIT alertsChanged(getStatusBarWarnings()); -} - -bool ClientModel::inInitialBlockDownload() const -{ - return IsInitialBlockDownload(); -} - -enum BlockSource ClientModel::getBlockSource() const -{ - if (fReindex) - return BLOCK_SOURCE_REINDEX; - else if (fImporting) - return BLOCK_SOURCE_DISK; - else if (getNumConnections() > 0) - return BLOCK_SOURCE_NETWORK; - - return BLOCK_SOURCE_NONE; -} - -QString ClientModel::getStatusBarWarnings() const -{ - return QString::fromStdString(GetWarnings("statusbar")); -} - -OptionsModel *ClientModel::getOptionsModel() -{ - return optionsModel; -} - -PeerTableModel *ClientModel::getPeerTableModel() -{ - return peerTableModel; -} - -QString ClientModel::formatFullVersion() const -{ - return QString::fromStdString(FormatFullVersion()); -} - -QString ClientModel::formatBuildDate() const -{ - return QString::fromStdString(CLIENT_DATE); -} - -bool ClientModel::isReleaseVersion() const -{ - return CLIENT_VERSION_IS_RELEASE; -} - -QString ClientModel::clientName() const -{ - return QString::fromStdString(CLIENT_NAME); -} - -QString ClientModel::formatClientStartupTime() const -{ - return QDateTime::fromTime_t(nClientStartupTime).toString(); -} - -// Handlers for core signals -static void ShowProgress(ClientModel *clientmodel, const std::string &title, int nProgress) -{ - // emits signal "showProgress" - QMetaObject::invokeMethod(clientmodel, "showProgress", Qt::QueuedConnection, - Q_ARG(QString, QString::fromStdString(title)), - Q_ARG(int, nProgress)); -} - -static void NotifyNumConnectionsChanged(ClientModel *clientmodel, int newNumConnections) -{ - // Too noisy: qDebug() << "NotifyNumConnectionsChanged: " + QString::number(newNumConnections); - QMetaObject::invokeMethod(clientmodel, "updateNumConnections", Qt::QueuedConnection, - Q_ARG(int, newNumConnections)); -} - -static void NotifyAlertChanged(ClientModel *clientmodel, const uint256 &hash, ChangeType status) -{ - qDebug() << "NotifyAlertChanged: " + QString::fromStdString(hash.GetHex()) + " status=" + QString::number(status); - QMetaObject::invokeMethod(clientmodel, "updateAlert", Qt::QueuedConnection, - Q_ARG(QString, QString::fromStdString(hash.GetHex())), - Q_ARG(int, status)); -} - -void ClientModel::subscribeToCoreSignals() -{ - // Connect signals to client - uiInterface.ShowProgress.connect(boost::bind(ShowProgress, this, _1, _2)); - uiInterface.NotifyNumConnectionsChanged.connect(boost::bind(NotifyNumConnectionsChanged, this, _1)); - uiInterface.NotifyAlertChanged.connect(boost::bind(NotifyAlertChanged, this, _1, _2)); -} - -void ClientModel::unsubscribeFromCoreSignals() -{ - // Disconnect signals from client - uiInterface.ShowProgress.disconnect(boost::bind(ShowProgress, this, _1, _2)); - uiInterface.NotifyNumConnectionsChanged.disconnect(boost::bind(NotifyNumConnectionsChanged, this, _1)); - uiInterface.NotifyAlertChanged.disconnect(boost::bind(NotifyAlertChanged, this, _1, _2)); -} diff --git a/src/qt/clientmodel.h b/src/qt/clientmodel.h deleted file mode 100644 index 68434f404..000000000 --- a/src/qt/clientmodel.h +++ /dev/null @@ -1,103 +0,0 @@ -// Copyright (c) 2011-2013 The Bitcoin Core developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#ifndef BITCOIN_QT_CLIENTMODEL_H -#define BITCOIN_QT_CLIENTMODEL_H - -#include -#include - -class AddressTableModel; -class OptionsModel; -class PeerTableModel; -class TransactionTableModel; - -class CWallet; - -QT_BEGIN_NAMESPACE -class QTimer; -QT_END_NAMESPACE - -enum BlockSource { - BLOCK_SOURCE_NONE, - BLOCK_SOURCE_REINDEX, - BLOCK_SOURCE_DISK, - BLOCK_SOURCE_NETWORK -}; - -enum NumConnections { - CONNECTIONS_NONE = 0, - CONNECTIONS_IN = (1U << 0), - CONNECTIONS_OUT = (1U << 1), - CONNECTIONS_ALL = (CONNECTIONS_IN | CONNECTIONS_OUT), -}; - -/** Model for Bitcoin network client. */ -class ClientModel : public QObject -{ - Q_OBJECT - -public: - explicit ClientModel(OptionsModel *optionsModel, QObject *parent = 0); - ~ClientModel(); - - OptionsModel *getOptionsModel(); - PeerTableModel *getPeerTableModel(); - - //! Return number of connections, default is in- and outbound (total) - int getNumConnections(unsigned int flags = CONNECTIONS_ALL) const; - int getNumBlocks() const; - - quint64 getTotalBytesRecv() const; - quint64 getTotalBytesSent() const; - - double getVerificationProgress() const; - QDateTime getLastBlockDate() const; - - //! Return true if core is doing initial block download - bool inInitialBlockDownload() const; - //! Return true if core is importing blocks - enum BlockSource getBlockSource() const; - //! Return warnings to be displayed in status bar - QString getStatusBarWarnings() const; - - QString formatFullVersion() const; - QString formatBuildDate() const; - bool isReleaseVersion() const; - QString clientName() const; - QString formatClientStartupTime() const; - -private: - OptionsModel *optionsModel; - PeerTableModel *peerTableModel; - - int cachedNumBlocks; - QDateTime cachedBlockDate; - bool cachedReindexing; - bool cachedImporting; - - QTimer *pollTimer; - - void subscribeToCoreSignals(); - void unsubscribeFromCoreSignals(); - -Q_SIGNALS: - void numConnectionsChanged(int count); - void numBlocksChanged(int count, const QDateTime& blockDate); - void alertsChanged(const QString &warnings); - void bytesChanged(quint64 totalBytesIn, quint64 totalBytesOut); - - //! Fired when a message should be reported to the user - void message(const QString &title, const QString &message, unsigned int style); - - // Show progress dialog e.g. for verifychain - void showProgress(const QString &title, int nProgress); - -public Q_SLOTS: - void updateTimer(); - void updateNumConnections(int numConnections); - void updateAlert(const QString &hash, int status); -}; - -#endif // BITCOIN_QT_CLIENTMODEL_H diff --git a/src/qt/coincontroldialog.cpp b/src/qt/coincontroldialog.cpp deleted file mode 100644 index 6a527429e..000000000 --- a/src/qt/coincontroldialog.cpp +++ /dev/null @@ -1,828 +0,0 @@ -// Copyright (c) 2011-2013 The Bitcoin Core developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#include "coincontroldialog.h" -#include "ui_coincontroldialog.h" - -#include "addresstablemodel.h" -#include "bitcoinunits.h" -#include "guiutil.h" -#include "optionsmodel.h" -#include "scicon.h" -#include "walletmodel.h" - -#include "coincontrol.h" -#include "init.h" -#include "main.h" -#include "wallet/wallet.h" - -#include // for 'map_list_of()' - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -using namespace std; -QList CoinControlDialog::payAmounts; -CCoinControl* CoinControlDialog::coinControl = new CCoinControl(); -bool CoinControlDialog::fSubtractFeeFromAmount = false; - -CoinControlDialog::CoinControlDialog(QWidget *parent) : - QDialog(parent), - ui(new Ui::CoinControlDialog), - model(0) -{ - ui->setupUi(this); - - // context menu actions - QAction *copyAddressAction = new QAction(tr("Copy address"), this); - QAction *copyLabelAction = new QAction(tr("Copy label"), this); - QAction *copyAmountAction = new QAction(tr("Copy amount"), this); - copyTransactionHashAction = new QAction(tr("Copy transaction ID"), this); // we need to enable/disable this - lockAction = new QAction(tr("Lock unspent"), this); // we need to enable/disable this - unlockAction = new QAction(tr("Unlock unspent"), this); // we need to enable/disable this - - // context menu - contextMenu = new QMenu(); - contextMenu->addAction(copyAddressAction); - contextMenu->addAction(copyLabelAction); - contextMenu->addAction(copyAmountAction); - contextMenu->addAction(copyTransactionHashAction); - contextMenu->addSeparator(); - contextMenu->addAction(lockAction); - contextMenu->addAction(unlockAction); - - // context menu signals - connect(ui->treeWidget, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(showMenu(QPoint))); - connect(copyAddressAction, SIGNAL(triggered()), this, SLOT(copyAddress())); - connect(copyLabelAction, SIGNAL(triggered()), this, SLOT(copyLabel())); - connect(copyAmountAction, SIGNAL(triggered()), this, SLOT(copyAmount())); - connect(copyTransactionHashAction, SIGNAL(triggered()), this, SLOT(copyTransactionHash())); - connect(lockAction, SIGNAL(triggered()), this, SLOT(lockCoin())); - connect(unlockAction, SIGNAL(triggered()), this, SLOT(unlockCoin())); - - // clipboard actions - QAction *clipboardQuantityAction = new QAction(tr("Copy quantity"), this); - QAction *clipboardAmountAction = new QAction(tr("Copy amount"), this); - QAction *clipboardFeeAction = new QAction(tr("Copy fee"), this); - QAction *clipboardAfterFeeAction = new QAction(tr("Copy after fee"), this); - QAction *clipboardBytesAction = new QAction(tr("Copy bytes"), this); - QAction *clipboardPriorityAction = new QAction(tr("Copy priority"), this); - QAction *clipboardLowOutputAction = new QAction(tr("Copy dust"), this); - QAction *clipboardChangeAction = new QAction(tr("Copy change"), this); - - connect(clipboardQuantityAction, SIGNAL(triggered()), this, SLOT(clipboardQuantity())); - connect(clipboardAmountAction, SIGNAL(triggered()), this, SLOT(clipboardAmount())); - connect(clipboardFeeAction, SIGNAL(triggered()), this, SLOT(clipboardFee())); - connect(clipboardAfterFeeAction, SIGNAL(triggered()), this, SLOT(clipboardAfterFee())); - connect(clipboardBytesAction, SIGNAL(triggered()), this, SLOT(clipboardBytes())); - connect(clipboardPriorityAction, SIGNAL(triggered()), this, SLOT(clipboardPriority())); - connect(clipboardLowOutputAction, SIGNAL(triggered()), this, SLOT(clipboardLowOutput())); - connect(clipboardChangeAction, SIGNAL(triggered()), this, SLOT(clipboardChange())); - - ui->labelCoinControlQuantity->addAction(clipboardQuantityAction); - ui->labelCoinControlAmount->addAction(clipboardAmountAction); - ui->labelCoinControlFee->addAction(clipboardFeeAction); - ui->labelCoinControlAfterFee->addAction(clipboardAfterFeeAction); - ui->labelCoinControlBytes->addAction(clipboardBytesAction); - ui->labelCoinControlPriority->addAction(clipboardPriorityAction); - ui->labelCoinControlLowOutput->addAction(clipboardLowOutputAction); - ui->labelCoinControlChange->addAction(clipboardChangeAction); - - // toggle tree/list mode - connect(ui->radioTreeMode, SIGNAL(toggled(bool)), this, SLOT(radioTreeMode(bool))); - connect(ui->radioListMode, SIGNAL(toggled(bool)), this, SLOT(radioListMode(bool))); - - // click on checkbox - connect(ui->treeWidget, SIGNAL(itemChanged(QTreeWidgetItem*, int)), this, SLOT(viewItemChanged(QTreeWidgetItem*, int))); - - // click on header -#if QT_VERSION < 0x050000 - ui->treeWidget->header()->setClickable(true); -#else - ui->treeWidget->header()->setSectionsClickable(true); -#endif - connect(ui->treeWidget->header(), SIGNAL(sectionClicked(int)), this, SLOT(headerSectionClicked(int))); - - // ok button - connect(ui->buttonBox, SIGNAL(clicked( QAbstractButton*)), this, SLOT(buttonBoxClicked(QAbstractButton*))); - - // (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); - ui->treeWidget->setColumnWidth(COLUMN_ADDRESS, 290); - ui->treeWidget->setColumnWidth(COLUMN_DATE, 110); - ui->treeWidget->setColumnWidth(COLUMN_CONFIRMATIONS, 100); - ui->treeWidget->setColumnWidth(COLUMN_PRIORITY, 100); - ui->treeWidget->setColumnHidden(COLUMN_TXHASH, true); // store transacton hash in this column, but don't show it - ui->treeWidget->setColumnHidden(COLUMN_VOUT_INDEX, true); // store vout index in this column, but don't show it - ui->treeWidget->setColumnHidden(COLUMN_AMOUNT_INT64, true); // store amount int64 in this column, but don't show it - ui->treeWidget->setColumnHidden(COLUMN_PRIORITY_INT64, true); // store priority int64 in this column, but don't show it - ui->treeWidget->setColumnHidden(COLUMN_DATE_INT64, true); // store date int64 in this column, but don't show it - - // default view is sorted by amount desc - sortView(COLUMN_AMOUNT_INT64, Qt::DescendingOrder); - - // restore list mode and sortorder as a convenience feature - QSettings settings; - if (settings.contains("nCoinControlMode") && !settings.value("nCoinControlMode").toBool()) - ui->radioTreeMode->click(); - if (settings.contains("nCoinControlSortColumn") && settings.contains("nCoinControlSortOrder")) - sortView(settings.value("nCoinControlSortColumn").toInt(), ((Qt::SortOrder)settings.value("nCoinControlSortOrder").toInt())); -} - -CoinControlDialog::~CoinControlDialog() -{ - QSettings settings; - settings.setValue("nCoinControlMode", ui->radioListMode->isChecked()); - settings.setValue("nCoinControlSortColumn", sortColumn); - settings.setValue("nCoinControlSortOrder", (int)sortOrder); - - delete ui; -} - -void CoinControlDialog::setModel(WalletModel *model) -{ - this->model = model; - - if(model && model->getOptionsModel() && model->getAddressTableModel()) - { - updateView(); - updateLabelLocked(); - CoinControlDialog::updateLabels(model, this); - } -} - -// helper function str_pad -QString CoinControlDialog::strPad(QString s, int nPadLength, QString sPadding) -{ - while (s.length() < nPadLength) - s = sPadding + s; - - return s; -} - -// ok button -void CoinControlDialog::buttonBoxClicked(QAbstractButton* button) -{ - if (ui->buttonBox->buttonRole(button) == QDialogButtonBox::AcceptRole) - done(QDialog::Accepted); // closes the dialog -} - -// (un)select all -void CoinControlDialog::buttonSelectAllClicked() -{ - Qt::CheckState state = Qt::Checked; - for (int i = 0; i < ui->treeWidget->topLevelItemCount(); i++) - { - if (ui->treeWidget->topLevelItem(i)->checkState(COLUMN_CHECKBOX) != Qt::Unchecked) - { - state = Qt::Unchecked; - break; - } - } - ui->treeWidget->setEnabled(false); - for (int i = 0; i < ui->treeWidget->topLevelItemCount(); i++) - if (ui->treeWidget->topLevelItem(i)->checkState(COLUMN_CHECKBOX) != state) - ui->treeWidget->topLevelItem(i)->setCheckState(COLUMN_CHECKBOX, state); - ui->treeWidget->setEnabled(true); - if (state == Qt::Unchecked) - coinControl->UnSelectAll(); // just to be sure - CoinControlDialog::updateLabels(model, this); -} - -// context menu -void CoinControlDialog::showMenu(const QPoint &point) -{ - QTreeWidgetItem *item = ui->treeWidget->itemAt(point); - if(item) - { - contextMenuItem = item; - - // disable some items (like Copy Transaction ID, lock, unlock) for tree roots in context menu - if (item->text(COLUMN_TXHASH).length() == 64) // transaction hash is 64 characters (this means its a child node, so its not a parent node in tree mode) - { - copyTransactionHashAction->setEnabled(true); - if (model->isLockedCoin(uint256S(item->text(COLUMN_TXHASH).toStdString()), item->text(COLUMN_VOUT_INDEX).toUInt())) - { - lockAction->setEnabled(false); - unlockAction->setEnabled(true); - } - else - { - lockAction->setEnabled(true); - unlockAction->setEnabled(false); - } - } - else // this means click on parent node in tree mode -> disable all - { - copyTransactionHashAction->setEnabled(false); - lockAction->setEnabled(false); - unlockAction->setEnabled(false); - } - - // show context menu - contextMenu->exec(QCursor::pos()); - } -} - -// context menu action: copy amount -void CoinControlDialog::copyAmount() -{ - GUIUtil::setClipboard(BitcoinUnits::removeSpaces(contextMenuItem->text(COLUMN_AMOUNT))); -} - -// context menu action: copy label -void CoinControlDialog::copyLabel() -{ - if (ui->radioTreeMode->isChecked() && contextMenuItem->text(COLUMN_LABEL).length() == 0 && contextMenuItem->parent()) - GUIUtil::setClipboard(contextMenuItem->parent()->text(COLUMN_LABEL)); - else - GUIUtil::setClipboard(contextMenuItem->text(COLUMN_LABEL)); -} - -// context menu action: copy address -void CoinControlDialog::copyAddress() -{ - if (ui->radioTreeMode->isChecked() && contextMenuItem->text(COLUMN_ADDRESS).length() == 0 && contextMenuItem->parent()) - GUIUtil::setClipboard(contextMenuItem->parent()->text(COLUMN_ADDRESS)); - else - GUIUtil::setClipboard(contextMenuItem->text(COLUMN_ADDRESS)); -} - -// context menu action: copy transaction id -void CoinControlDialog::copyTransactionHash() -{ - GUIUtil::setClipboard(contextMenuItem->text(COLUMN_TXHASH)); -} - -// context menu action: lock coin -void CoinControlDialog::lockCoin() -{ - if (contextMenuItem->checkState(COLUMN_CHECKBOX) == Qt::Checked) - contextMenuItem->setCheckState(COLUMN_CHECKBOX, Qt::Unchecked); - - COutPoint outpt(uint256S(contextMenuItem->text(COLUMN_TXHASH).toStdString()), contextMenuItem->text(COLUMN_VOUT_INDEX).toUInt()); - model->lockCoin(outpt); - contextMenuItem->setDisabled(true); - contextMenuItem->setIcon(COLUMN_CHECKBOX, SingleColorIcon(":/icons/lock_closed")); - updateLabelLocked(); -} - -// context menu action: unlock coin -void CoinControlDialog::unlockCoin() -{ - COutPoint outpt(uint256S(contextMenuItem->text(COLUMN_TXHASH).toStdString()), contextMenuItem->text(COLUMN_VOUT_INDEX).toUInt()); - model->unlockCoin(outpt); - contextMenuItem->setDisabled(false); - contextMenuItem->setIcon(COLUMN_CHECKBOX, QIcon()); - updateLabelLocked(); -} - -// copy label "Quantity" to clipboard -void CoinControlDialog::clipboardQuantity() -{ - GUIUtil::setClipboard(ui->labelCoinControlQuantity->text()); -} - -// copy label "Amount" to clipboard -void CoinControlDialog::clipboardAmount() -{ - GUIUtil::setClipboard(ui->labelCoinControlAmount->text().left(ui->labelCoinControlAmount->text().indexOf(" "))); -} - -// copy label "Fee" to clipboard -void CoinControlDialog::clipboardFee() -{ - GUIUtil::setClipboard(ui->labelCoinControlFee->text().left(ui->labelCoinControlFee->text().indexOf(" ")).replace(ASYMP_UTF8, "")); -} - -// copy label "After fee" to clipboard -void CoinControlDialog::clipboardAfterFee() -{ - GUIUtil::setClipboard(ui->labelCoinControlAfterFee->text().left(ui->labelCoinControlAfterFee->text().indexOf(" ")).replace(ASYMP_UTF8, "")); -} - -// copy label "Bytes" to clipboard -void CoinControlDialog::clipboardBytes() -{ - GUIUtil::setClipboard(ui->labelCoinControlBytes->text().replace(ASYMP_UTF8, "")); -} - -// copy label "Priority" to clipboard -void CoinControlDialog::clipboardPriority() -{ - GUIUtil::setClipboard(ui->labelCoinControlPriority->text()); -} - -// copy label "Dust" to clipboard -void CoinControlDialog::clipboardLowOutput() -{ - GUIUtil::setClipboard(ui->labelCoinControlLowOutput->text()); -} - -// copy label "Change" to clipboard -void CoinControlDialog::clipboardChange() -{ - GUIUtil::setClipboard(ui->labelCoinControlChange->text().left(ui->labelCoinControlChange->text().indexOf(" ")).replace(ASYMP_UTF8, "")); -} - -// treeview: sort -void CoinControlDialog::sortView(int column, Qt::SortOrder order) -{ - sortColumn = column; - sortOrder = order; - ui->treeWidget->sortItems(column, order); - ui->treeWidget->header()->setSortIndicator(getMappedColumn(sortColumn), sortOrder); -} - -// treeview: clicked on header -void CoinControlDialog::headerSectionClicked(int logicalIndex) -{ - if (logicalIndex == COLUMN_CHECKBOX) // click on most left column -> do nothing - { - ui->treeWidget->header()->setSortIndicator(getMappedColumn(sortColumn), sortOrder); - } - else - { - logicalIndex = getMappedColumn(logicalIndex, false); - - if (sortColumn == logicalIndex) - sortOrder = ((sortOrder == Qt::AscendingOrder) ? Qt::DescendingOrder : Qt::AscendingOrder); - else - { - sortColumn = logicalIndex; - sortOrder = ((sortColumn == COLUMN_LABEL || sortColumn == COLUMN_ADDRESS) ? Qt::AscendingOrder : Qt::DescendingOrder); // if label or address then default => asc, else default => desc - } - - sortView(sortColumn, sortOrder); - } -} - -// toggle tree mode -void CoinControlDialog::radioTreeMode(bool checked) -{ - if (checked && model) - updateView(); -} - -// toggle list mode -void CoinControlDialog::radioListMode(bool checked) -{ - if (checked && model) - updateView(); -} - -// checkbox clicked by user -void CoinControlDialog::viewItemChanged(QTreeWidgetItem* item, int column) -{ - if (column == COLUMN_CHECKBOX && item->text(COLUMN_TXHASH).length() == 64) // transaction hash is 64 characters (this means its a child node, so its not a parent node in tree mode) - { - COutPoint outpt(uint256S(item->text(COLUMN_TXHASH).toStdString()), item->text(COLUMN_VOUT_INDEX).toUInt()); - - if (item->checkState(COLUMN_CHECKBOX) == Qt::Unchecked) - coinControl->UnSelect(outpt); - else if (item->isDisabled()) // locked (this happens if "check all" through parent node) - item->setCheckState(COLUMN_CHECKBOX, Qt::Unchecked); - else - coinControl->Select(outpt); - - // selection changed -> update labels - if (ui->treeWidget->isEnabled()) // do not update on every click for (un)select all - CoinControlDialog::updateLabels(model, this); - } - - // todo: this is a temporary qt5 fix: when clicking a parent node in tree mode, the parent node - // including all children are partially selected. But the parent node should be fully selected - // as well as the children. Children should never be partially selected in the first place. - // Please remove this ugly fix, once the bug is solved upstream. -#if QT_VERSION >= 0x050000 - else if (column == COLUMN_CHECKBOX && item->childCount() > 0) - { - if (item->checkState(COLUMN_CHECKBOX) == Qt::PartiallyChecked && item->child(0)->checkState(COLUMN_CHECKBOX) == Qt::PartiallyChecked) - item->setCheckState(COLUMN_CHECKBOX, Qt::Checked); - } -#endif -} - -// return human readable label for priority number -QString CoinControlDialog::getPriorityLabel(double dPriority, double mempoolEstimatePriority) -{ - double dPriorityMedium = mempoolEstimatePriority; - - if (dPriorityMedium <= 0) - dPriorityMedium = AllowFreeThreshold(); // not enough data, back to hard-coded - - if (dPriority / 1000000 > dPriorityMedium) return tr("highest"); - else if (dPriority / 100000 > dPriorityMedium) return tr("higher"); - else if (dPriority / 10000 > dPriorityMedium) return tr("high"); - else if (dPriority / 1000 > dPriorityMedium) return tr("medium-high"); - else if (dPriority > dPriorityMedium) return tr("medium"); - else if (dPriority * 10 > dPriorityMedium) return tr("low-medium"); - else if (dPriority * 100 > dPriorityMedium) return tr("low"); - else if (dPriority * 1000 > dPriorityMedium) return tr("lower"); - else return tr("lowest"); -} - -// shows count of locked unspent outputs -void CoinControlDialog::updateLabelLocked() -{ - vector vOutpts; - model->listLockedCoins(vOutpts); - if (vOutpts.size() > 0) - { - ui->labelLocked->setText(tr("(%1 locked)").arg(vOutpts.size())); - ui->labelLocked->setVisible(true); - } - else ui->labelLocked->setVisible(false); -} - -void CoinControlDialog::updateLabels(WalletModel *model, QDialog* dialog) -{ - if (!model) - return; - - // nPayAmount - CAmount nPayAmount = 0; - bool fDust = false; - CMutableTransaction txDummy; - Q_FOREACH(const CAmount &amount, CoinControlDialog::payAmounts) - { - nPayAmount += amount; - - if (amount > 0) - { - CTxOut txout(amount, (CScript)vector(24, 0)); - txDummy.vout.push_back(txout); - if (txout.IsDust(::minRelayTxFee)) - fDust = true; - } - } - - QString sPriorityLabel = tr("none"); - CAmount nAmount = 0; - CAmount nPayFee = 0; - CAmount nAfterFee = 0; - CAmount nChange = 0; - unsigned int nBytes = 0; - unsigned int nBytesInputs = 0; - double dPriority = 0; - double dPriorityInputs = 0; - unsigned int nQuantity = 0; - int nQuantityUncompressed = 0; - bool fAllowFree = false; - - vector vCoinControl; - vector vOutputs; - coinControl->ListSelected(vCoinControl); - model->getOutputs(vCoinControl, vOutputs); - - BOOST_FOREACH(const COutput& out, vOutputs) - { - // unselect already spent, very unlikely scenario, this could happen - // when selected are spent elsewhere, like rpc or another computer - uint256 txhash = out.tx->GetHash(); - COutPoint outpt(txhash, out.i); - if (model->isSpent(outpt)) - { - coinControl->UnSelect(outpt); - continue; - } - - // Quantity - nQuantity++; - - // Amount - nAmount += out.tx->vout[out.i].nValue; - - // Priority - dPriorityInputs += (double)out.tx->vout[out.i].nValue * (out.nDepth+1); - - // Bytes - CTxDestination address; - if(ExtractDestination(out.tx->vout[out.i].scriptPubKey, address)) - { - CPubKey pubkey; - CKeyID *keyid = boost::get(&address); - if (keyid && model->getPubKey(*keyid, pubkey)) - { - nBytesInputs += (pubkey.IsCompressed() ? 148 : 180); - if (!pubkey.IsCompressed()) - nQuantityUncompressed++; - } - else - nBytesInputs += 148; // in all error cases, simply assume 148 here - } - else nBytesInputs += 148; - } - - // calculation - if (nQuantity > 0) - { - // Bytes - nBytes = nBytesInputs + ((CoinControlDialog::payAmounts.size() > 0 ? CoinControlDialog::payAmounts.size() + 1 : 2) * 34) + 10; // always assume +1 output for change here - - // Priority - double mempoolEstimatePriority = mempool.estimatePriority(nTxConfirmTarget); - dPriority = dPriorityInputs / (nBytes - nBytesInputs + (nQuantityUncompressed * 29)); // 29 = 180 - 151 (uncompressed public keys are over the limit. max 151 bytes of the input are ignored for priority) - sPriorityLabel = CoinControlDialog::getPriorityLabel(dPriority, mempoolEstimatePriority); - - // in the subtract fee from amount case, we can tell if zero change already and subtract the bytes, so that fee calculation afterwards is accurate - if (CoinControlDialog::fSubtractFeeFromAmount) - if (nAmount - nPayAmount == 0) - nBytes -= 34; - - // Fee - nPayFee = CWallet::GetMinimumFee(nBytes, nTxConfirmTarget, mempool); - - // Allow free? - double dPriorityNeeded = mempoolEstimatePriority; - if (dPriorityNeeded <= 0) - dPriorityNeeded = AllowFreeThreshold(); // not enough data, back to hard-coded - fAllowFree = (dPriority >= dPriorityNeeded); - - if (fSendFreeTransactions) - if (fAllowFree && nBytes <= MAX_FREE_TRANSACTION_CREATE_SIZE) - nPayFee = 0; - - if (nPayAmount > 0) - { - nChange = nAmount - nPayAmount; - if (!CoinControlDialog::fSubtractFeeFromAmount) - nChange -= nPayFee; - - // Never create dust outputs; if we would, just add the dust to the fee. - if (nChange > 0 && nChange < CENT) - { - CTxOut txout(nChange, (CScript)vector(24, 0)); - if (txout.IsDust(::minRelayTxFee)) - { - if (CoinControlDialog::fSubtractFeeFromAmount) // dust-change will be raised until no dust - nChange = txout.GetDustThreshold(::minRelayTxFee); - else - { - nPayFee += nChange; - nChange = 0; - } - } - } - - if (nChange == 0 && !CoinControlDialog::fSubtractFeeFromAmount) - nBytes -= 34; - } - - // after fee - nAfterFee = nAmount - nPayFee; - if (nAfterFee < 0) - nAfterFee = 0; - } - - // actually update labels - int nDisplayUnit = BitcoinUnits::BTC; - if (model && model->getOptionsModel()) - nDisplayUnit = model->getOptionsModel()->getDisplayUnit(); - - QLabel *l1 = dialog->findChild("labelCoinControlQuantity"); - QLabel *l2 = dialog->findChild("labelCoinControlAmount"); - QLabel *l3 = dialog->findChild("labelCoinControlFee"); - QLabel *l4 = dialog->findChild("labelCoinControlAfterFee"); - QLabel *l5 = dialog->findChild("labelCoinControlBytes"); - QLabel *l6 = dialog->findChild("labelCoinControlPriority"); - QLabel *l7 = dialog->findChild("labelCoinControlLowOutput"); - QLabel *l8 = dialog->findChild("labelCoinControlChange"); - - // enable/disable "dust" and "change" - dialog->findChild("labelCoinControlLowOutputText")->setEnabled(nPayAmount > 0); - dialog->findChild("labelCoinControlLowOutput") ->setEnabled(nPayAmount > 0); - dialog->findChild("labelCoinControlChangeText") ->setEnabled(nPayAmount > 0); - dialog->findChild("labelCoinControlChange") ->setEnabled(nPayAmount > 0); - - // stats - l1->setText(QString::number(nQuantity)); // Quantity - l2->setText(BitcoinUnits::formatWithUnit(nDisplayUnit, nAmount)); // Amount - l3->setText(BitcoinUnits::formatWithUnit(nDisplayUnit, nPayFee)); // Fee - l4->setText(BitcoinUnits::formatWithUnit(nDisplayUnit, nAfterFee)); // After Fee - l5->setText(((nBytes > 0) ? ASYMP_UTF8 : "") + QString::number(nBytes)); // Bytes - l6->setText(sPriorityLabel); // Priority - l7->setText(fDust ? tr("yes") : tr("no")); // Dust - l8->setText(BitcoinUnits::formatWithUnit(nDisplayUnit, nChange)); // Change - if (nPayFee > 0 && !(payTxFee.GetFeePerK() > 0 && fPayAtLeastCustomFee && nBytes < 1000)) - { - l3->setText(ASYMP_UTF8 + l3->text()); - l4->setText(ASYMP_UTF8 + l4->text()); - if (nChange > 0 && !CoinControlDialog::fSubtractFeeFromAmount) - l8->setText(ASYMP_UTF8 + l8->text()); - } - - // turn labels "red" - l5->setStyleSheet((nBytes >= MAX_FREE_TRANSACTION_CREATE_SIZE) ? "color:red;" : "");// Bytes >= 1000 - l6->setStyleSheet((dPriority > 0 && !fAllowFree) ? "color:red;" : ""); // Priority < "medium" - l7->setStyleSheet((fDust) ? "color:red;" : ""); // Dust = "yes" - - // tool tips - QString toolTip1 = tr("This label turns red if the transaction size is greater than 1000 bytes.") + "

"; - toolTip1 += tr("This means a fee of at least %1 per kB is required.").arg(BitcoinUnits::formatWithUnit(nDisplayUnit, CWallet::minTxFee.GetFeePerK())) + "

"; - toolTip1 += tr("Can vary +/- 1 byte per input."); - - QString toolTip2 = tr("Transactions with higher priority are more likely to get included into a block.") + "

"; - toolTip2 += tr("This label turns red if the priority is smaller than \"medium\".") + "

"; - toolTip2 += tr("This means a fee of at least %1 per kB is required.").arg(BitcoinUnits::formatWithUnit(nDisplayUnit, CWallet::minTxFee.GetFeePerK())); - - QString toolTip3 = tr("This label turns red if any recipient receives an amount smaller than %1.").arg(BitcoinUnits::formatWithUnit(nDisplayUnit, ::minRelayTxFee.GetFee(546))); - - // how many satoshis the estimated fee can vary per byte we guess wrong - double dFeeVary; - if (payTxFee.GetFeePerK() > 0) - dFeeVary = (double)std::max(CWallet::minTxFee.GetFeePerK(), payTxFee.GetFeePerK()) / 1000; - else - dFeeVary = (double)std::max(CWallet::minTxFee.GetFeePerK(), mempool.estimateFee(nTxConfirmTarget).GetFeePerK()) / 1000; - QString toolTip4 = tr("Can vary +/- %1 satoshi(s) per input.").arg(dFeeVary); - - l3->setToolTip(toolTip4); - l4->setToolTip(toolTip4); - l5->setToolTip(toolTip1); - l6->setToolTip(toolTip2); - l7->setToolTip(toolTip3); - l8->setToolTip(toolTip4); - dialog->findChild("labelCoinControlFeeText") ->setToolTip(l3->toolTip()); - dialog->findChild("labelCoinControlAfterFeeText") ->setToolTip(l4->toolTip()); - dialog->findChild("labelCoinControlBytesText") ->setToolTip(l5->toolTip()); - dialog->findChild("labelCoinControlPriorityText") ->setToolTip(l6->toolTip()); - dialog->findChild("labelCoinControlLowOutputText")->setToolTip(l7->toolTip()); - dialog->findChild("labelCoinControlChangeText") ->setToolTip(l8->toolTip()); - - // Insufficient funds - QLabel *label = dialog->findChild("labelCoinControlInsuffFunds"); - if (label) - label->setVisible(nChange < 0); -} - -void CoinControlDialog::updateView() -{ - if (!model || !model->getOptionsModel() || !model->getAddressTableModel()) - return; - - bool treeMode = ui->radioTreeMode->isChecked(); - - ui->treeWidget->clear(); - ui->treeWidget->setEnabled(false); // performance, otherwise updateLabels would be called for every checked checkbox - ui->treeWidget->setAlternatingRowColors(!treeMode); - QFlags flgCheckbox = Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsUserCheckable; - QFlags flgTristate = Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsUserCheckable | Qt::ItemIsTristate; - - int nDisplayUnit = model->getOptionsModel()->getDisplayUnit(); - double mempoolEstimatePriority = mempool.estimatePriority(nTxConfirmTarget); - - map > mapCoins; - model->listCoins(mapCoins); - - BOOST_FOREACH(PAIRTYPE(QString, vector) coins, mapCoins) - { - QTreeWidgetItem *itemWalletAddress = new QTreeWidgetItem(); - itemWalletAddress->setCheckState(COLUMN_CHECKBOX, Qt::Unchecked); - QString sWalletAddress = coins.first; - QString sWalletLabel = model->getAddressTableModel()->labelForAddress(sWalletAddress); - if (sWalletLabel.isEmpty()) - sWalletLabel = tr("(no label)"); - - if (treeMode) - { - // wallet address - ui->treeWidget->addTopLevelItem(itemWalletAddress); - - itemWalletAddress->setFlags(flgTristate); - itemWalletAddress->setCheckState(COLUMN_CHECKBOX, Qt::Unchecked); - - // label - itemWalletAddress->setText(COLUMN_LABEL, sWalletLabel); - - // address - itemWalletAddress->setText(COLUMN_ADDRESS, sWalletAddress); - } - - CAmount nSum = 0; - double dPrioritySum = 0; - int nChildren = 0; - int nInputSum = 0; - BOOST_FOREACH(const COutput& out, coins.second) - { - int nInputSize = 0; - nSum += out.tx->vout[out.i].nValue; - nChildren++; - - QTreeWidgetItem *itemOutput; - if (treeMode) itemOutput = new QTreeWidgetItem(itemWalletAddress); - else itemOutput = new QTreeWidgetItem(ui->treeWidget); - itemOutput->setFlags(flgCheckbox); - itemOutput->setCheckState(COLUMN_CHECKBOX,Qt::Unchecked); - - // address - CTxDestination outputAddress; - QString sAddress = ""; - if(ExtractDestination(out.tx->vout[out.i].scriptPubKey, outputAddress)) - { - sAddress = QString::fromStdString(CBitcoinAddress(outputAddress).ToString()); - - // if listMode or change => show bitcoin address. In tree mode, address is not shown again for direct wallet address outputs - if (!treeMode || (!(sAddress == sWalletAddress))) - itemOutput->setText(COLUMN_ADDRESS, sAddress); - - CPubKey pubkey; - CKeyID *keyid = boost::get(&outputAddress); - if (keyid && model->getPubKey(*keyid, pubkey) && !pubkey.IsCompressed()) - nInputSize = 29; // 29 = 180 - 151 (public key is 180 bytes, priority free area is 151 bytes) - } - - // label - if (!(sAddress == sWalletAddress)) // change - { - // tooltip from where the change comes from - itemOutput->setToolTip(COLUMN_LABEL, tr("change from %1 (%2)").arg(sWalletLabel).arg(sWalletAddress)); - itemOutput->setText(COLUMN_LABEL, tr("(change)")); - } - else if (!treeMode) - { - QString sLabel = model->getAddressTableModel()->labelForAddress(sAddress); - if (sLabel.isEmpty()) - sLabel = tr("(no label)"); - itemOutput->setText(COLUMN_LABEL, sLabel); - } - - // amount - itemOutput->setText(COLUMN_AMOUNT, BitcoinUnits::format(nDisplayUnit, out.tx->vout[out.i].nValue)); - itemOutput->setText(COLUMN_AMOUNT_INT64, strPad(QString::number(out.tx->vout[out.i].nValue), 15, " ")); // padding so that sorting works correctly - - // date - itemOutput->setText(COLUMN_DATE, GUIUtil::dateTimeStr(out.tx->GetTxTime())); - itemOutput->setText(COLUMN_DATE_INT64, strPad(QString::number(out.tx->GetTxTime()), 20, " ")); - - // confirmations - itemOutput->setText(COLUMN_CONFIRMATIONS, strPad(QString::number(out.nDepth), 8, " ")); - - // priority - double dPriority = ((double)out.tx->vout[out.i].nValue / (nInputSize + 78)) * (out.nDepth+1); // 78 = 2 * 34 + 10 - itemOutput->setText(COLUMN_PRIORITY, CoinControlDialog::getPriorityLabel(dPriority, mempoolEstimatePriority)); - itemOutput->setText(COLUMN_PRIORITY_INT64, strPad(QString::number((int64_t)dPriority), 20, " ")); - dPrioritySum += (double)out.tx->vout[out.i].nValue * (out.nDepth+1); - nInputSum += nInputSize; - - // transaction hash - uint256 txhash = out.tx->GetHash(); - itemOutput->setText(COLUMN_TXHASH, QString::fromStdString(txhash.GetHex())); - - // vout index - itemOutput->setText(COLUMN_VOUT_INDEX, QString::number(out.i)); - - // disable locked coins - if (model->isLockedCoin(txhash, out.i)) - { - COutPoint outpt(txhash, out.i); - coinControl->UnSelect(outpt); // just to be sure - itemOutput->setDisabled(true); - itemOutput->setIcon(COLUMN_CHECKBOX, SingleColorIcon(":/icons/lock_closed")); - } - - // set checkbox - if (coinControl->IsSelected(txhash, out.i)) - itemOutput->setCheckState(COLUMN_CHECKBOX, Qt::Checked); - } - - // amount - if (treeMode) - { - dPrioritySum = dPrioritySum / (nInputSum + 78); - itemWalletAddress->setText(COLUMN_CHECKBOX, "(" + QString::number(nChildren) + ")"); - itemWalletAddress->setText(COLUMN_AMOUNT, BitcoinUnits::format(nDisplayUnit, nSum)); - itemWalletAddress->setText(COLUMN_AMOUNT_INT64, strPad(QString::number(nSum), 15, " ")); - itemWalletAddress->setText(COLUMN_PRIORITY, CoinControlDialog::getPriorityLabel(dPrioritySum, mempoolEstimatePriority)); - itemWalletAddress->setText(COLUMN_PRIORITY_INT64, strPad(QString::number((int64_t)dPrioritySum), 20, " ")); - } - } - - // expand all partially selected - if (treeMode) - { - for (int i = 0; i < ui->treeWidget->topLevelItemCount(); i++) - if (ui->treeWidget->topLevelItem(i)->checkState(COLUMN_CHECKBOX) == Qt::PartiallyChecked) - ui->treeWidget->topLevelItem(i)->setExpanded(true); - } - - // sort view - sortView(sortColumn, sortOrder); - ui->treeWidget->setEnabled(true); -} diff --git a/src/qt/coincontroldialog.h b/src/qt/coincontroldialog.h deleted file mode 100644 index 0566b02c9..000000000 --- a/src/qt/coincontroldialog.h +++ /dev/null @@ -1,130 +0,0 @@ -// Copyright (c) 2011-2013 The Bitcoin Core developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#ifndef BITCOIN_QT_COINCONTROLDIALOG_H -#define BITCOIN_QT_COINCONTROLDIALOG_H - -#include "amount.h" - -#include -#include -#include -#include -#include -#include -#include -#include - -class WalletModel; - -class CCoinControl; -class CTxMemPool; - -namespace Ui { - class CoinControlDialog; -} - -#define ASYMP_UTF8 "\xE2\x89\x88" - -class CoinControlDialog : public QDialog -{ - Q_OBJECT - -public: - explicit CoinControlDialog(QWidget *parent = 0); - ~CoinControlDialog(); - - void setModel(WalletModel *model); - - // static because also called from sendcoinsdialog - static void updateLabels(WalletModel*, QDialog*); - static QString getPriorityLabel(double dPriority, double mempoolEstimatePriority); - - static QList payAmounts; - static CCoinControl *coinControl; - static bool fSubtractFeeFromAmount; - -private: - Ui::CoinControlDialog *ui; - WalletModel *model; - int sortColumn; - Qt::SortOrder sortOrder; - - QMenu *contextMenu; - QTreeWidgetItem *contextMenuItem; - QAction *copyTransactionHashAction; - QAction *lockAction; - QAction *unlockAction; - - QString strPad(QString, int, QString); - void sortView(int, Qt::SortOrder); - void updateView(); - - enum - { - COLUMN_CHECKBOX, - COLUMN_AMOUNT, - COLUMN_LABEL, - COLUMN_ADDRESS, - COLUMN_DATE, - COLUMN_CONFIRMATIONS, - COLUMN_PRIORITY, - COLUMN_TXHASH, - COLUMN_VOUT_INDEX, - COLUMN_AMOUNT_INT64, - COLUMN_PRIORITY_INT64, - COLUMN_DATE_INT64 - }; - - // some columns have a hidden column containing the value used for sorting - int getMappedColumn(int column, bool fVisibleColumn = true) - { - if (fVisibleColumn) - { - if (column == COLUMN_AMOUNT_INT64) - return COLUMN_AMOUNT; - else if (column == COLUMN_PRIORITY_INT64) - return COLUMN_PRIORITY; - else if (column == COLUMN_DATE_INT64) - return COLUMN_DATE; - } - else - { - if (column == COLUMN_AMOUNT) - return COLUMN_AMOUNT_INT64; - else if (column == COLUMN_PRIORITY) - return COLUMN_PRIORITY_INT64; - else if (column == COLUMN_DATE) - return COLUMN_DATE_INT64; - } - - return column; - } - -private Q_SLOTS: - void showMenu(const QPoint &); - void copyAmount(); - void copyLabel(); - void copyAddress(); - void copyTransactionHash(); - void lockCoin(); - void unlockCoin(); - void clipboardQuantity(); - void clipboardAmount(); - void clipboardFee(); - void clipboardAfterFee(); - void clipboardBytes(); - void clipboardPriority(); - void clipboardLowOutput(); - void clipboardChange(); - void radioTreeMode(bool); - void radioListMode(bool); - void viewItemChanged(QTreeWidgetItem*, int); - void headerSectionClicked(int); - void buttonBoxClicked(QAbstractButton*); - void buttonSelectAllClicked(); - void updateLabelLocked(); -}; - -#endif // BITCOIN_QT_COINCONTROLDIALOG_H diff --git a/src/qt/coincontroltreewidget.cpp b/src/qt/coincontroltreewidget.cpp deleted file mode 100644 index 5dcbf0c3f..000000000 --- a/src/qt/coincontroltreewidget.cpp +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright (c) 2011-2013 The Bitcoin Core developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#include "coincontroltreewidget.h" -#include "coincontroldialog.h" - -CoinControlTreeWidget::CoinControlTreeWidget(QWidget *parent) : - QTreeWidget(parent) -{ - -} - -void CoinControlTreeWidget::keyPressEvent(QKeyEvent *event) -{ - if (event->key() == Qt::Key_Space) // press spacebar -> select checkbox - { - event->ignore(); - int COLUMN_CHECKBOX = 0; - 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 - { - event->ignore(); - CoinControlDialog *coinControlDialog = (CoinControlDialog*)this->parentWidget(); - coinControlDialog->done(QDialog::Accepted); - } - else - { - this->QTreeWidget::keyPressEvent(event); - } -} diff --git a/src/qt/coincontroltreewidget.h b/src/qt/coincontroltreewidget.h deleted file mode 100644 index 98a7d32f0..000000000 --- a/src/qt/coincontroltreewidget.h +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright (c) 2011-2013 The Bitcoin Core developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#ifndef BITCOIN_QT_COINCONTROLTREEWIDGET_H -#define BITCOIN_QT_COINCONTROLTREEWIDGET_H - -#include -#include - -class CoinControlTreeWidget : public QTreeWidget -{ - Q_OBJECT - -public: - explicit CoinControlTreeWidget(QWidget *parent = 0); - -protected: - virtual void keyPressEvent(QKeyEvent *event); -}; - -#endif // BITCOIN_QT_COINCONTROLTREEWIDGET_H diff --git a/src/qt/csvmodelwriter.cpp b/src/qt/csvmodelwriter.cpp deleted file mode 100644 index 55c595708..000000000 --- a/src/qt/csvmodelwriter.cpp +++ /dev/null @@ -1,91 +0,0 @@ -// Copyright (c) 2011-2013 The Bitcoin Core developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#include "csvmodelwriter.h" - -#include -#include -#include - -CSVModelWriter::CSVModelWriter(const QString &filename, QObject *parent) : - QObject(parent), - filename(filename), model(0) -{ -} - -void CSVModelWriter::setModel(const QAbstractItemModel *model) -{ - this->model = model; -} - -void CSVModelWriter::addColumn(const QString &title, int column, int role) -{ - Column col; - col.title = title; - col.column = column; - col.role = role; - - columns.append(col); -} - -static void writeValue(QTextStream &f, const QString &value) -{ - QString escaped = value; - escaped.replace('"', "\"\""); - f << "\"" << escaped << "\""; -} - -static void writeSep(QTextStream &f) -{ - f << ","; -} - -static void writeNewline(QTextStream &f) -{ - f << "\n"; -} - -bool CSVModelWriter::write() -{ - QFile file(filename); - if(!file.open(QIODevice::WriteOnly | QIODevice::Text)) - return false; - QTextStream out(&file); - - int numRows = 0; - if(model) - { - numRows = model->rowCount(); - } - - // Header row - for(int i=0; iindex(j, columns[i].column).data(columns[i].role); - writeValue(out, data.toString()); - } - writeNewline(out); - } - - file.close(); - - return file.error() == QFile::NoError; -} diff --git a/src/qt/csvmodelwriter.h b/src/qt/csvmodelwriter.h deleted file mode 100644 index a2bf379f4..000000000 --- a/src/qt/csvmodelwriter.h +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright (c) 2011-2013 The Bitcoin Core developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#ifndef BITCOIN_QT_CSVMODELWRITER_H -#define BITCOIN_QT_CSVMODELWRITER_H - -#include -#include - -QT_BEGIN_NAMESPACE -class QAbstractItemModel; -QT_END_NAMESPACE - -/** Export a Qt table model to a CSV file. This is useful for analyzing or post-processing the data in - a spreadsheet. - */ -class CSVModelWriter : public QObject -{ - Q_OBJECT - -public: - explicit CSVModelWriter(const QString &filename, QObject *parent = 0); - - void setModel(const QAbstractItemModel *model); - void addColumn(const QString &title, int column, int role=Qt::EditRole); - - /** Perform export of the model to CSV. - @returns true on success, false otherwise - */ - bool write(); - -private: - QString filename; - const QAbstractItemModel *model; - - struct Column - { - QString title; - int column; - int role; - }; - QList columns; -}; - -#endif // BITCOIN_QT_CSVMODELWRITER_H diff --git a/src/qt/editaddressdialog.cpp b/src/qt/editaddressdialog.cpp deleted file mode 100644 index 1c22594cd..000000000 --- a/src/qt/editaddressdialog.cpp +++ /dev/null @@ -1,144 +0,0 @@ -// Copyright (c) 2011-2013 The Bitcoin Core developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#include "editaddressdialog.h" -#include "ui_editaddressdialog.h" - -#include "addresstablemodel.h" -#include "guiutil.h" - -#include -#include - -EditAddressDialog::EditAddressDialog(Mode mode, QWidget *parent) : - QDialog(parent), - ui(new Ui::EditAddressDialog), - mapper(0), - mode(mode), - model(0) -{ - ui->setupUi(this); - - GUIUtil::setupAddressWidget(ui->addressEdit, this); - - switch(mode) - { - case NewReceivingAddress: - setWindowTitle(tr("New receiving address")); - ui->addressEdit->setEnabled(false); - break; - case NewSendingAddress: - setWindowTitle(tr("New sending address")); - break; - case EditReceivingAddress: - setWindowTitle(tr("Edit receiving address")); - ui->addressEdit->setEnabled(false); - break; - case EditSendingAddress: - setWindowTitle(tr("Edit sending address")); - break; - } - - mapper = new QDataWidgetMapper(this); - mapper->setSubmitPolicy(QDataWidgetMapper::ManualSubmit); -} - -EditAddressDialog::~EditAddressDialog() -{ - delete ui; -} - -void EditAddressDialog::setModel(AddressTableModel *model) -{ - this->model = model; - if(!model) - return; - - mapper->setModel(model); - mapper->addMapping(ui->labelEdit, AddressTableModel::Label); - mapper->addMapping(ui->addressEdit, AddressTableModel::Address); -} - -void EditAddressDialog::loadRow(int row) -{ - mapper->setCurrentIndex(row); -} - -bool EditAddressDialog::saveCurrentRow() -{ - if(!model) - return false; - - switch(mode) - { - case NewReceivingAddress: - case NewSendingAddress: - address = model->addRow( - mode == NewSendingAddress ? AddressTableModel::Send : AddressTableModel::Receive, - ui->labelEdit->text(), - ui->addressEdit->text()); - break; - case EditReceivingAddress: - case EditSendingAddress: - if(mapper->submit()) - { - address = ui->addressEdit->text(); - } - break; - } - return !address.isEmpty(); -} - -void EditAddressDialog::accept() -{ - if(!model) - return; - - if(!saveCurrentRow()) - { - switch(model->getEditStatus()) - { - case AddressTableModel::OK: - // Failed with unknown reason. Just reject. - break; - case AddressTableModel::NO_CHANGES: - // No changes were made during edit operation. Just reject. - break; - case AddressTableModel::INVALID_ADDRESS: - QMessageBox::warning(this, windowTitle(), - tr("The entered address \"%1\" is not a valid Bitcoin address.").arg(ui->addressEdit->text()), - QMessageBox::Ok, QMessageBox::Ok); - break; - case AddressTableModel::DUPLICATE_ADDRESS: - QMessageBox::warning(this, windowTitle(), - tr("The entered address \"%1\" is already in the address book.").arg(ui->addressEdit->text()), - QMessageBox::Ok, QMessageBox::Ok); - break; - case AddressTableModel::WALLET_UNLOCK_FAILURE: - QMessageBox::critical(this, windowTitle(), - tr("Could not unlock wallet."), - QMessageBox::Ok, QMessageBox::Ok); - break; - case AddressTableModel::KEY_GENERATION_FAILURE: - QMessageBox::critical(this, windowTitle(), - tr("New key generation failed."), - QMessageBox::Ok, QMessageBox::Ok); - break; - - } - return; - } - QDialog::accept(); -} - -QString EditAddressDialog::getAddress() const -{ - return address; -} - -void EditAddressDialog::setAddress(const QString &address) -{ - this->address = address; - ui->addressEdit->setText(address); -} diff --git a/src/qt/editaddressdialog.h b/src/qt/editaddressdialog.h deleted file mode 100644 index d59fce2d4..000000000 --- a/src/qt/editaddressdialog.h +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright (c) 2011-2013 The Bitcoin Core developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#ifndef BITCOIN_QT_EDITADDRESSDIALOG_H -#define BITCOIN_QT_EDITADDRESSDIALOG_H - -#include - -class AddressTableModel; - -namespace Ui { - class EditAddressDialog; -} - -QT_BEGIN_NAMESPACE -class QDataWidgetMapper; -QT_END_NAMESPACE - -/** Dialog for editing an address and associated information. - */ -class EditAddressDialog : public QDialog -{ - Q_OBJECT - -public: - enum Mode { - NewReceivingAddress, - NewSendingAddress, - EditReceivingAddress, - EditSendingAddress - }; - - explicit EditAddressDialog(Mode mode, QWidget *parent); - ~EditAddressDialog(); - - void setModel(AddressTableModel *model); - void loadRow(int row); - - QString getAddress() const; - void setAddress(const QString &address); - -public Q_SLOTS: - void accept(); - -private: - bool saveCurrentRow(); - - Ui::EditAddressDialog *ui; - QDataWidgetMapper *mapper; - Mode mode; - AddressTableModel *model; - - QString address; -}; - -#endif // BITCOIN_QT_EDITADDRESSDIALOG_H diff --git a/src/qt/forms/addressbookpage.ui b/src/qt/forms/addressbookpage.ui deleted file mode 100644 index 264edeb72..000000000 --- a/src/qt/forms/addressbookpage.ui +++ /dev/null @@ -1,159 +0,0 @@ - - - AddressBookPage - - - - 0 - 0 - 760 - 380 - - - - - - - Qt::PlainText - - - true - - - - - - - Qt::CustomContextMenu - - - Right-click to edit address or label - - - false - - - true - - - QAbstractItemView::SingleSelection - - - QAbstractItemView::SelectRows - - - true - - - false - - - - - - - - - Create a new address - - - &New - - - - :/icons/add:/icons/add - - - false - - - - - - - Copy the currently selected address to the system clipboard - - - &Copy - - - - :/icons/editcopy:/icons/editcopy - - - false - - - - - - - Delete the currently selected address from the list - - - &Delete - - - - :/icons/remove:/icons/remove - - - false - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Export the data in the current tab to a file - - - &Export - - - - :/icons/export:/icons/export - - - false - - - - - - - - 0 - 0 - - - - C&lose - - - false - - - - - - - - - - - - diff --git a/src/qt/forms/askpassphrasedialog.ui b/src/qt/forms/askpassphrasedialog.ui deleted file mode 100644 index a2105ecd0..000000000 --- a/src/qt/forms/askpassphrasedialog.ui +++ /dev/null @@ -1,160 +0,0 @@ - - - AskPassphraseDialog - - - - 0 - 0 - 598 - 222 - - - - - 0 - 0 - - - - - 550 - 0 - - - - Passphrase Dialog - - - - QLayout::SetMinimumSize - - - - - Placeholder text - - - Qt::RichText - - - true - - - - - - - QLayout::SetMinimumSize - - - QFormLayout::AllNonFixedFieldsGrow - - - - - Enter passphrase - - - - - - - QLineEdit::Password - - - - - - - New passphrase - - - - - - - QLineEdit::Password - - - - - - - Repeat new passphrase - - - - - - - QLineEdit::Password - - - - - - - - 75 - true - - - - - - - Qt::AlignCenter - - - - - - - - - Qt::Horizontal - - - QDialogButtonBox::Cancel|QDialogButtonBox::Ok - - - - - - - - - buttonBox - accepted() - AskPassphraseDialog - accept() - - - 20 - 20 - - - 20 - 20 - - - - - buttonBox - rejected() - AskPassphraseDialog - reject() - - - 20 - 20 - - - 20 - 20 - - - - - diff --git a/src/qt/forms/coincontroldialog.ui b/src/qt/forms/coincontroldialog.ui deleted file mode 100644 index c1fef6b9b..000000000 --- a/src/qt/forms/coincontroldialog.ui +++ /dev/null @@ -1,534 +0,0 @@ - - - CoinControlDialog - - - - 0 - 0 - 1000 - 500 - - - - Coin Selection - - - - - - 0 - - - 10 - - - - - 10 - - - 10 - - - 6 - - - 6 - - - - - - 75 - true - - - - Quantity: - - - - - - - IBeamCursor - - - Qt::ActionsContextMenu - - - 0 - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse - - - - - - - - 75 - true - - - - Bytes: - - - - - - - IBeamCursor - - - Qt::ActionsContextMenu - - - 0 - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse - - - - - - - - - 10 - - - 10 - - - 6 - - - 6 - - - - - - 75 - true - - - - Amount: - - - - - - - IBeamCursor - - - Qt::ActionsContextMenu - - - 0.00 BTC - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse - - - - - - - - 75 - true - - - - Priority: - - - - - - - IBeamCursor - - - Qt::ActionsContextMenu - - - medium - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse - - - - - - - - - 10 - - - 10 - - - 6 - - - 6 - - - - - - 75 - true - - - - Fee: - - - - - - - IBeamCursor - - - Qt::ActionsContextMenu - - - 0.00 BTC - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse - - - - - - - false - - - - 75 - true - - - - Dust: - - - - - - - false - - - IBeamCursor - - - Qt::ActionsContextMenu - - - no - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse - - - - - - - - - 10 - - - 10 - - - 6 - - - 6 - - - - - - 75 - true - - - - After Fee: - - - - - - - IBeamCursor - - - Qt::ActionsContextMenu - - - 0.00 BTC - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse - - - - - - - false - - - - 75 - true - - - - Change: - - - - - - - false - - - IBeamCursor - - - Qt::ActionsContextMenu - - - 0.00 BTC - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse - - - - - - - - - - - - 0 - 40 - - - - QFrame::StyledPanel - - - QFrame::Sunken - - - - - - 14 - - - - - - 0 - 0 - - - - (un)select all - - - false - - - - - - - - 0 - 0 - - - - Tree mode - - - - - - - - 0 - 0 - - - - List mode - - - true - - - - - - - (1 locked) - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - - Qt::CustomContextMenu - - - false - - - 12 - - - true - - - false - - - - - - - - - Amount - - - - - Received with label - - - - - Received with address - - - - - Date - - - - - Confirmations - - - Confirmed - - - - - Priority - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - 0 - - - - Qt::Horizontal - - - QDialogButtonBox::Ok - - - - - - - - CoinControlTreeWidget - QTreeWidget -
coincontroltreewidget.h
-
-
- - -
diff --git a/src/qt/forms/editaddressdialog.ui b/src/qt/forms/editaddressdialog.ui deleted file mode 100644 index c1aea3633..000000000 --- a/src/qt/forms/editaddressdialog.ui +++ /dev/null @@ -1,112 +0,0 @@ - - - EditAddressDialog - - - - 0 - 0 - 457 - 126 - - - - Edit Address - - - - - - QFormLayout::AllNonFixedFieldsGrow - - - - - &Label - - - labelEdit - - - - - - - The label associated with this address list entry - - - - - - - &Address - - - addressEdit - - - - - - - The address associated with this address list entry. This can only be modified for sending addresses. - - - - - - - - - Qt::Horizontal - - - QDialogButtonBox::Cancel|QDialogButtonBox::Ok - - - - - - - - QValidatedLineEdit - QLineEdit -
qvalidatedlineedit.h
-
-
- - - - buttonBox - accepted() - EditAddressDialog - accept() - - - 20 - 20 - - - 20 - 20 - - - - - buttonBox - rejected() - EditAddressDialog - reject() - - - 20 - 20 - - - 20 - 20 - - - - -
diff --git a/src/qt/forms/helpmessagedialog.ui b/src/qt/forms/helpmessagedialog.ui deleted file mode 100644 index dc7df9d6c..000000000 --- a/src/qt/forms/helpmessagedialog.ui +++ /dev/null @@ -1,192 +0,0 @@ - - - HelpMessageDialog - - - - 0 - 0 - 780 - 400 - - - - Bitcoin Core - Command-line options - - - - 0 - - - 12 - - - 12 - - - 12 - - - 12 - - - - - 0 - - - 4 - - - 0 - - - - - - 0 - 0 - - - - - 100 - 100 - - - - :/icons/bitcoin - - - true - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop - - - - - - - QFrame::NoFrame - - - QFrame::Raised - - - - - - - - - - - true - - - - - - - QFrame::NoFrame - - - Qt::ScrollBarAlwaysOn - - - true - - - - - - - IBeamCursor - - - Qt::PlainText - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop - - - true - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse - - - - - - - - - - - Qt::Vertical - - - QSizePolicy::Fixed - - - - 4 - 4 - - - - - - - - Qt::Horizontal - - - QDialogButtonBox::Ok - - - - - - - - - - - - - okButton - accepted() - HelpMessageDialog - accept() - - - 20 - 20 - - - 20 - 20 - - - - - okButton - rejected() - HelpMessageDialog - reject() - - - 20 - 20 - - - 20 - 20 - - - - - diff --git a/src/qt/forms/intro.ui b/src/qt/forms/intro.ui deleted file mode 100644 index 09e7bdb02..000000000 --- a/src/qt/forms/intro.ui +++ /dev/null @@ -1,266 +0,0 @@ - - - Intro - - - - 0 - 0 - 674 - 363 - - - - Welcome - - - - - - QLabel { font-style:italic; } - - - Welcome to Bitcoin Core. - - - true - - - - - - - Qt::Vertical - - - QSizePolicy::Minimum - - - - 20 - 15 - - - - - - - - As this is the first time the program is launched, you can choose where Bitcoin Core will store its data. - - - true - - - - - - - Bitcoin Core will download and store a copy of the Bitcoin block chain. At least %1GB of data will be stored in this directory, and it will grow over time. The wallet will also be stored in this directory. - - - true - - - - - - - Use the default data directory - - - - - - - Use a custom data directory: - - - - - - - 0 - - - QLayout::SetDefaultConstraint - - - - - Qt::Horizontal - - - QSizePolicy::Fixed - - - - 60 - 20 - - - - - - - - QLayout::SetDefaultConstraint - - - - - - - - - - - 0 - 0 - - - - - 30 - 16777215 - - - - … - - - false - - - - - - - - - Qt::Vertical - - - QSizePolicy::Fixed - - - - 20 - 5 - - - - - - - - - 1 - 0 - - - - - - - true - - - - - - - Qt::Vertical - - - QSizePolicy::Fixed - - - - 20 - 5 - - - - - - - - - 0 - 0 - - - - Qt::RichText - - - true - - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - Qt::Horizontal - - - QDialogButtonBox::Cancel|QDialogButtonBox::Ok - - - - - - - - - buttonBox - accepted() - Intro - accept() - - - 20 - 20 - - - 20 - 20 - - - - - buttonBox - rejected() - Intro - reject() - - - 20 - 20 - - - 20 - 20 - - - - - diff --git a/src/qt/forms/openuridialog.ui b/src/qt/forms/openuridialog.ui deleted file mode 100644 index 7fce858bd..000000000 --- a/src/qt/forms/openuridialog.ui +++ /dev/null @@ -1,118 +0,0 @@ - - - OpenURIDialog - - - - 0 - 0 - 564 - 109 - - - - Open URI - - - - - - Open payment request from URI or file - - - - - - - - - URI: - - - - - - - - - - Select payment request file - - - … - - - false - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - Qt::Horizontal - - - QDialogButtonBox::Cancel|QDialogButtonBox::Ok - - - - - - - - QValidatedLineEdit - QLineEdit -
qvalidatedlineedit.h
-
-
- - - - buttonBox - accepted() - OpenURIDialog - accept() - - - 248 - 254 - - - 157 - 274 - - - - - buttonBox - rejected() - OpenURIDialog - reject() - - - 316 - 260 - - - 286 - 274 - - - - -
diff --git a/src/qt/forms/optionsdialog.ui b/src/qt/forms/optionsdialog.ui deleted file mode 100644 index 55c4f5ac5..000000000 --- a/src/qt/forms/optionsdialog.ui +++ /dev/null @@ -1,602 +0,0 @@ - - - OptionsDialog - - - - 0 - 0 - 560 - 400 - - - - Options - - - true - - - - - - 0 - - - - &Main - - - - - - Automatically start Bitcoin Core after logging in to the system. - - - &Start Bitcoin Core on system login - - - - - - - - - Size of &database cache - - - Qt::PlainText - - - databaseCache - - - - - - - - - - MB - - - Qt::PlainText - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - Number of script &verification threads - - - Qt::PlainText - - - threadsScriptVerif - - - - - - - (0 = auto, <0 = leave that many cores free) - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - W&allet - - - - - - Expert - - - - - - Whether to show coin control features or not. - - - Enable coin &control features - - - - - - - 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. - - - &Spend unconfirmed change - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - &Network - - - - - - Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled. - - - Map port using &UPnP - - - - - - - Accept connections from outside - - - Allow incoming connections - - - - - - - Connect to the Bitcoin network through a SOCKS5 proxy. - - - &Connect through SOCKS5 proxy (default proxy): - - - - - - - - - Proxy &IP: - - - Qt::PlainText - - - proxyIp - - - - - - - - 140 - 0 - - - - - 140 - 16777215 - - - - IP address of the proxy (e.g. IPv4: 127.0.0.1 / IPv6: ::1) - - - - - - - &Port: - - - Qt::PlainText - - - proxyPort - - - - - - - - 55 - 0 - - - - - 55 - 16777215 - - - - Port of the proxy (e.g. 9050) - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - &Window - - - - - - Show only a tray icon after minimizing the window. - - - &Minimize to the tray instead of the taskbar - - - - - - - Minimize instead of exit the application when the window is closed. When this option is enabled, the application will be closed only after selecting Exit in the menu. - - - M&inimize on close - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - &Display - - - - - - - - User Interface &language: - - - Qt::PlainText - - - lang - - - - - - - The user interface language can be set here. This setting will take effect after restarting Bitcoin Core. - - - - - - - - - - - &Unit to show amounts in: - - - Qt::PlainText - - - unit - - - - - - - Choose the default subdivision unit to show in the interface and when sending coins. - - - - - - - - - - - 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 |. - - - Third party transaction URLs - - - thirdPartyTxUrls - - - - - - - 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 |. - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - - - - - - Active command-line options that override above options: - - - Qt::PlainText - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - - Qt::PlainText - - - true - - - - - - - - - - - - Reset all client options to default. - - - &Reset Options - - - false - - - - - - - Qt::Horizontal - - - - 40 - 48 - - - - - - - - - 200 - 0 - - - - - 75 - true - - - - - - - Qt::PlainText - - - true - - - - - - - Qt::Horizontal - - - - 40 - 48 - - - - - - - - &OK - - - false - - - true - - - - - - - &Cancel - - - false - - - - - - - - - - QValidatedLineEdit - QLineEdit -
qvalidatedlineedit.h
-
- - QValueComboBox - QComboBox -
qvaluecombobox.h
-
-
- - -
diff --git a/src/qt/forms/overviewpage.ui b/src/qt/forms/overviewpage.ui deleted file mode 100644 index 6d792d147..000000000 --- a/src/qt/forms/overviewpage.ui +++ /dev/null @@ -1,538 +0,0 @@ - - - OverviewPage - - - - 0 - 0 - 596 - 342 - - - - Form - - - - - - false - - - background-color: qlineargradient(x1: 0, y1: 0, x2: 1, y2: 0, stop:0 #F0D0A0, stop:1 #F8D488); color:#000000; - - - true - - - 3 - - - - - - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - - - - - 75 - true - - - - Balances - - - - - - - false - - - - 30 - 16777215 - - - - The displayed information may be out of date. Your wallet automatically synchronizes with the Bitcoin network after a connection is established, but this process has not completed yet. - - - - - - - :/icons/warning - :/icons/warning:/icons/warning - - - - 24 - 24 - - - - true - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - 12 - - - - - - 75 - true - - - - IBeamCursor - - - Unconfirmed transactions to watch-only addresses - - - 0.000 000 00 BTC - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse - - - - - - - - 75 - true - - - - IBeamCursor - - - Total of transactions that have yet to be confirmed, and do not yet count toward the spendable balance - - - 0.000 000 00 BTC - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse - - - - - - - - 75 - true - - - - IBeamCursor - - - Mined balance in watch-only addresses that has not yet matured - - - 0.000 000 00 BTC - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse - - - - - - - Qt::Horizontal - - - - - - - - 0 - 0 - - - - - 140 - 0 - - - - Qt::Horizontal - - - - - - - Total: - - - - - - - - 75 - true - - - - IBeamCursor - - - Mined balance that has not yet matured - - - 0.000 000 00 BTC - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Immature: - - - - - - - - 75 - true - - - - IBeamCursor - - - Your current total balance - - - 0.000 000 00 BTC - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse - - - - - - - - 75 - true - - - - IBeamCursor - - - Current total balance in watch-only addresses - - - 0.000 000 00 BTC - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse - - - - - - - Watch-only: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Available: - - - - - - - - 75 - true - - - - IBeamCursor - - - Your current spendable balance - - - 0.000 000 00 BTC - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse - - - - - - - - 75 - true - - - - IBeamCursor - - - Your current balance in watch-only addresses - - - 0.000 000 00 BTC - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse - - - - - - - Pending: - - - - - - - Spendable: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - - - - - 75 - true - - - - Recent transactions - - - - - - - false - - - - 30 - 16777215 - - - - The displayed information may be out of date. Your wallet automatically synchronizes with the Bitcoin network after a connection is established, but this process has not completed yet. - - - - - - - :/icons/warning - :/icons/warning:/icons/warning - - - - 24 - 24 - - - - true - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - QListView { background: transparent; } - - - QFrame::NoFrame - - - Qt::ScrollBarAlwaysOff - - - Qt::ScrollBarAlwaysOff - - - QAbstractItemView::NoSelection - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - - diff --git a/src/qt/forms/receivecoinsdialog.ui b/src/qt/forms/receivecoinsdialog.ui deleted file mode 100644 index 03fcb2fb5..000000000 --- a/src/qt/forms/receivecoinsdialog.ui +++ /dev/null @@ -1,338 +0,0 @@ - - - ReceiveCoinsDialog - - - - 0 - 0 - 776 - 364 - - - - - - - - 0 - 0 - - - - QFrame::StyledPanel - - - QFrame::Sunken - - - - - - - - Reuse one of the previously used receiving addresses. Reusing addresses has security and privacy issues. Do not use this unless re-generating a payment request made before. - - - R&euse an existing receiving address (not recommended) - - - - - - - - - - - - - - An optional message to attach to the payment request, which will be displayed when the request is opened. Note: The message will not be sent with the payment over the Bitcoin network. - - - &Message: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - reqMessage - - - - - - - An optional label to associate with the new receiving address. - - - - - - - An optional message to attach to the payment request, which will be displayed when the request is opened. Note: The message will not be sent with the payment over the Bitcoin network. - - - - - - - Use this form to request payments. All fields are <b>optional</b>. - - - - - - - An optional label to associate with the new receiving address. - - - &Label: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - reqLabel - - - - - - - An optional amount to request. Leave this empty or zero to not request a specific amount. - - - &Amount: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - reqAmount - - - - - - - - 80 - 0 - - - - An optional amount to request. Leave this empty or zero to not request a specific amount. - - - - - - - - - - 150 - 0 - - - - &Request payment - - - - :/icons/receiving_addresses:/icons/receiving_addresses - - - - - - - - 0 - 0 - - - - Clear all fields of the form. - - - Clear - - - - :/icons/remove:/icons/remove - - - false - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - - - - - - - - - - - Qt::Vertical - - - - 20 - 10 - - - - - - - - - 0 - 0 - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - - - 75 - true - - - - Requested payments history - - - - - - - Qt::CustomContextMenu - - - false - - - true - - - - - - - - - false - - - Show the selected request (does the same as double clicking an entry) - - - Show - - - - :/icons/edit:/icons/edit - - - false - - - - - - - false - - - Remove the selected entries from the list - - - Remove - - - - :/icons/remove:/icons/remove - - - false - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - - - BitcoinAmountField - QLineEdit -
bitcoinamountfield.h
- 1 -
-
- - reqLabel - reqAmount - reqMessage - reuseAddress - receiveButton - clearButton - recentRequestsView - showRequestButton - removeRequestButton - - - - - -
diff --git a/src/qt/forms/receiverequestdialog.ui b/src/qt/forms/receiverequestdialog.ui deleted file mode 100644 index 1e484dd9a..000000000 --- a/src/qt/forms/receiverequestdialog.ui +++ /dev/null @@ -1,168 +0,0 @@ - - - ReceiveRequestDialog - - - - 0 - 0 - 487 - 597 - - - - - - - - 0 - 0 - - - - - 300 - 300 - - - - QR Code - - - Qt::PlainText - - - Qt::AlignCenter - - - true - - - - - - - - 0 - 0 - - - - - 0 - 50 - - - - QFrame::NoFrame - - - QFrame::Plain - - - true - - - Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse - - - - - - - - - Copy &URI - - - false - - - - - - - Copy &Address - - - false - - - - - - - &Save Image... - - - false - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - QDialogButtonBox::Close - - - - - - - - - - QRImageWidget - QLabel -
receiverequestdialog.h
-
-
- - - - buttonBox - rejected() - ReceiveRequestDialog - reject() - - - 452 - 573 - - - 243 - 298 - - - - - buttonBox - accepted() - ReceiveRequestDialog - accept() - - - 452 - 573 - - - 243 - 298 - - - - -
diff --git a/src/qt/forms/rpcconsole.ui b/src/qt/forms/rpcconsole.ui deleted file mode 100644 index c1eb18550..000000000 --- a/src/qt/forms/rpcconsole.ui +++ /dev/null @@ -1,1106 +0,0 @@ - - - RPCConsole - - - - 0 - 0 - 740 - 450 - - - - Debug window - - - - - - 0 - - - - &Information - - - - 12 - - - - - - 75 - true - - - - General - - - - - - - Client name - - - - - - - IBeamCursor - - - N/A - - - Qt::PlainText - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse - - - - - - - Client version - - - - - - - IBeamCursor - - - N/A - - - Qt::PlainText - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse - - - - - - - Using OpenSSL version - - - 10 - - - - - - - IBeamCursor - - - N/A - - - Qt::PlainText - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse - - - - - - - Using BerkeleyDB version - - - 10 - - - - - - - IBeamCursor - - - N/A - - - Qt::PlainText - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse - - - - - - - Build date - - - - - - - IBeamCursor - - - N/A - - - Qt::PlainText - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse - - - - - - - Startup time - - - - - - - IBeamCursor - - - N/A - - - Qt::PlainText - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse - - - - - - - - 75 - true - - - - Network - - - - - - - Name - - - - - - - IBeamCursor - - - N/A - - - Qt::PlainText - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse - - - - - - - Number of connections - - - - - - - IBeamCursor - - - N/A - - - Qt::PlainText - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse - - - - - - - - 75 - true - - - - Block chain - - - - - - - Current number of blocks - - - - - - - IBeamCursor - - - N/A - - - Qt::PlainText - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse - - - - - - - Last block time - - - - - - - IBeamCursor - - - N/A - - - Qt::PlainText - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse - - - - - - - Qt::Vertical - - - - 20 - 20 - - - - - - - - - 75 - true - - - - Debug log file - - - - - - - Open the Bitcoin Core debug log file from the current data directory. This can take a few seconds for large log files. - - - &Open - - - false - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - &Console - - - - 3 - - - - - - 0 - 100 - - - - true - - - false - - - 2 - - - - - - - 3 - - - - - > - - - - - - - - - - - 24 - 24 - - - - Clear console - - - - - - - :/icons/remove:/icons/remove - - - Ctrl+L - - - false - - - - - - - - - - &Network Traffic - - - - - - - - - 0 - 0 - - - - - - - - - - 1 - - - 288 - - - 12 - - - 6 - - - Qt::Horizontal - - - - - - - - 100 - 0 - - - - Qt::AlignCenter - - - - - - - &Clear - - - false - - - - - - - - - - - - - Totals - - - - - - - - - 0 - 0 - - - - - 10 - 0 - - - - - - - - - 0 - 255 - 0 - - - - - - - - - 0 - 255 - 0 - - - - - - - - - 0 - 255 - 0 - - - - - - - - Qt::Horizontal - - - - - - - Received - - - - - - - - 50 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - - - - 0 - 0 - - - - - 10 - 0 - - - - - - - - - 255 - 0 - 0 - - - - - - - - - 255 - 0 - 0 - - - - - - - - - 255 - 0 - 0 - - - - - - - - Qt::Horizontal - - - - - - - Sent - - - - - - - - 50 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - Qt::Vertical - - - - 20 - 407 - - - - - - - - - - - - - - &Peers - - - - - - Qt::ScrollBarAsNeeded - - - true - - - false - - - - - - - - 0 - 0 - - - - - 300 - 32 - - - - - 10 - - - - IBeamCursor - - - Select a peer to view detailed information. - - - Qt::AlignHCenter|Qt::AlignTop - - - true - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse - - - - - - - - 300 - 0 - - - - - - - Direction - - - - - - - IBeamCursor - - - N/A - - - Qt::PlainText - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse - - - - - - - Version - - - - - - - IBeamCursor - - - N/A - - - Qt::PlainText - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse - - - - - - - User Agent - - - - - - - IBeamCursor - - - N/A - - - Qt::PlainText - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse - - - - - - - Services - - - - - - - IBeamCursor - - - N/A - - - Qt::PlainText - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse - - - - - - - Starting Height - - - - - - - IBeamCursor - - - N/A - - - Qt::PlainText - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse - - - - - - - Sync Height - - - - - - - IBeamCursor - - - N/A - - - Qt::PlainText - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse - - - - - - - Ban Score - - - - - - - IBeamCursor - - - N/A - - - Qt::PlainText - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse - - - - - - - Connection Time - - - - - - - IBeamCursor - - - N/A - - - Qt::PlainText - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse - - - - - - - Last Send - - - - - - - IBeamCursor - - - N/A - - - Qt::PlainText - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse - - - - - - - Last Receive - - - - - - - IBeamCursor - - - N/A - - - Qt::PlainText - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse - - - - - - - Bytes Sent - - - - - - - IBeamCursor - - - N/A - - - Qt::PlainText - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse - - - - - - - Bytes Received - - - - - - - IBeamCursor - - - N/A - - - Qt::PlainText - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse - - - - - - - Ping Time - - - - - - - IBeamCursor - - - N/A - - - Qt::PlainText - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse - - - - - - - Time Offset - - - - - - - IBeamCursor - - - N/A - - - Qt::PlainText - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - - - - - TrafficGraphWidget - QWidget -
trafficgraphwidget.h
- 1 - - clear() - -
-
- - - - -
diff --git a/src/qt/forms/sendcoinsdialog.ui b/src/qt/forms/sendcoinsdialog.ui deleted file mode 100644 index 8911b41cb..000000000 --- a/src/qt/forms/sendcoinsdialog.ui +++ /dev/null @@ -1,1389 +0,0 @@ - - - SendCoinsDialog - - - - 0 - 0 - 850 - 526 - - - - Send Coins - - - - 8 - - - - - - 0 - 0 - - - - - 16777215 - 16777215 - - - - QFrame::StyledPanel - - - QFrame::Sunken - - - - 0 - - - 0 - - - 0 - - - 0 - - - 6 - - - - - 0 - - - 10 - - - 10 - - - - - 15 - - - - - - 0 - 0 - - - - - 75 - true - - - - font-weight:bold; - - - Coin Control Features - - - - - - - - - 8 - - - 10 - - - - - - - - Inputs... - - - false - - - - - - - automatically selected - - - 5 - - - - - - - - 75 - true - - - - color:red;font-weight:bold; - - - Insufficient funds! - - - 5 - - - - - - - Qt::Horizontal - - - - 40 - 1 - - - - - - - - - - - 0 - 0 - - - - - 0 - 0 - - - - - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - 20 - - - 0 - - - 10 - - - - - 10 - - - 14 - - - 10 - - - 4 - - - 6 - - - - - - 75 - true - - - - Quantity: - - - 0 - - - - - - - IBeamCursor - - - Qt::ActionsContextMenu - - - 0 - - - 0 - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse - - - - - - - - 75 - true - - - - Bytes: - - - - - - - IBeamCursor - - - Qt::ActionsContextMenu - - - 0 - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse - - - - - - - - - 10 - - - 14 - - - 6 - - - 4 - - - 6 - - - - - - 75 - true - - - - Amount: - - - 0 - - - - - - - IBeamCursor - - - Qt::ActionsContextMenu - - - 0.00 BTC - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse - - - - - - - - 75 - true - - - - Priority: - - - - - - - IBeamCursor - - - Qt::ActionsContextMenu - - - medium - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse - - - - - - - - - 10 - - - 14 - - - 6 - - - 4 - - - 6 - - - - - - 75 - true - - - - Fee: - - - 0 - - - - - - - IBeamCursor - - - Qt::ActionsContextMenu - - - 0.00 BTC - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse - - - - - - - - 75 - true - - - - Dust: - - - - - - - IBeamCursor - - - Qt::ActionsContextMenu - - - no - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse - - - - - - - - - 10 - - - 14 - - - 6 - - - 4 - - - 6 - - - - - - 75 - true - - - - After Fee: - - - 0 - - - - - - - IBeamCursor - - - Qt::ActionsContextMenu - - - 0.00 BTC - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse - - - - - - - - 75 - true - - - - Change: - - - - - - - IBeamCursor - - - Qt::ActionsContextMenu - - - 0.00 BTC - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse - - - - - - - - - - - - - - 12 - - - QLayout::SetDefaultConstraint - - - 5 - - - 5 - - - - - If this is activated, but the change address is empty or invalid, change will be sent to a newly generated address. - - - Custom change address - - - - - - - false - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - 0 - 0 - - - - - - - 3 - - - - - - - - - Qt::Vertical - - - - 800 - 1 - - - - - - - - - - - - - true - - - - - 0 - 0 - 830 - 68 - - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - 6 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - - 0 - 0 - - - - - 16777215 - 16777215 - - - - QFrame::StyledPanel - - - QFrame::Sunken - - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - 0 - - - 10 - - - 0 - - - - - 0 - - - - - 0 - - - - - Qt::Vertical - - - QSizePolicy::Fixed - - - - 1 - 4 - - - - - - - - 10 - - - - - - 0 - 0 - - - - - 75 - true - - - - font-weight:bold; - - - Transaction Fee: - - - - - - - - - - - - - - Choose... - - - - - - - - - Qt::Vertical - - - - 1 - 1 - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - collapse fee-settings - - - Hide - - - - - - - - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - 10 - - - 4 - - - 10 - - - 4 - - - - - 6 - - - - - - - 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. - - - per kilobyte - - - true - - - groupCustomFee - - - - - - - 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. - - - total at least - - - groupCustomFee - - - - - - - - - - Qt::Horizontal - - - - 1 - 1 - - - - - - - - - - - - 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. - - - - - - - - - - true - - - 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. - - - (read the tooltip) - - - 5 - - - - - - - Qt::Horizontal - - - - 1 - 1 - - - - - - - - - - - - - - Recommended: - - - true - - - groupFee - - - - - - - Qt::Vertical - - - - 1 - 1 - - - - - - - - - - - - Custom: - - - groupFee - - - - - - - Qt::Vertical - - - - 1 - 1 - - - - - - - - - - 6 - - - 2 - - - - - - - - - - 2 - - - - - - - - - - - - - - (Smart fee not initialized yet. This usually takes a few blocks...) - - - 2 - - - - - - - Qt::Horizontal - - - - 1 - 1 - - - - - - - - - - - - - - Confirmation time: - - - 2 - - - - - - - Qt::Vertical - - - - 1 - 1 - - - - - - - - - - 30 - - - - - 0 - - - 24 - - - 1 - - - 0 - - - Qt::Horizontal - - - false - - - false - - - QSlider::NoTicks - - - - - - - - - normal - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - fast - - - - - - - - - - - - - Qt::Vertical - - - - 1 - 1 - - - - - - - - - - - - 8 - - - 4 - - - - - Send as zero-fee transaction if possible - - - - - - - (confirmation may take longer) - - - 5 - - - - - - - Qt::Horizontal - - - - 1 - 1 - - - - - - - - - - Qt::Vertical - - - - 1 - 1 - - - - - - - - - - - Qt::Vertical - - - - 800 - 1 - - - - - - - - - - - - - - - - 150 - 0 - - - - Confirm the send action - - - S&end - - - - :/icons/send:/icons/send - - - false - - - true - - - - - - - - 0 - 0 - - - - Clear all fields of the form. - - - Clear &All - - - - :/icons/remove:/icons/remove - - - false - - - - - - - Send to multiple recipients at once - - - Add &Recipient - - - - :/icons/add:/icons/add - - - false - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - 3 - - - - - - 0 - 0 - - - - Balance: - - - - - - - - 0 - 0 - - - - IBeamCursor - - - 123.456 BTC - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse - - - - - - - - - - - - QValidatedLineEdit - QLineEdit -
qvalidatedlineedit.h
-
- - BitcoinAmountField - QLineEdit -
bitcoinamountfield.h
- 1 -
-
- - - - - - - - -
diff --git a/src/qt/forms/sendcoinsentry.ui b/src/qt/forms/sendcoinsentry.ui deleted file mode 100644 index df06f3683..000000000 --- a/src/qt/forms/sendcoinsentry.ui +++ /dev/null @@ -1,1275 +0,0 @@ - - - SendCoinsEntry - - - - 0 - 0 - 729 - 150 - - - - Qt::TabFocus - - - false - - - - This is a normal payment. - - - QFrame::NoFrame - - - - 8 - - - 4 - - - 12 - - - 8 - - - - - Pay &To: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - payTo - - - - - - - 0 - - - - - The Bitcoin address to send the payment to - - - - - - - Choose previously used address - - - - - - - :/icons/address-book:/icons/address-book - - - - 22 - 22 - - - - Alt+A - - - - - - - Paste address from clipboard - - - - - - - :/icons/editpaste:/icons/editpaste - - - - 22 - 22 - - - - Alt+P - - - - - - - Remove this entry - - - - - - - :/icons/remove:/icons/remove - - - - 22 - 22 - - - - - - - - - - &Label: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - addAsLabel - - - - - - - Enter a label for this address to add it to the list of used addresses - - - - - - - A&mount: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - payAmount - - - - - - - - - - - - The fee will be deducted from the amount being sent. The recipient will receive less bitcoins than you enter in the amount field. If multiple recipients are selected, the fee is split equally. - - - S&ubtract fee from amount - - - - - - - - - Message: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - A message that was attached to the bitcoin: URI which will be stored with the transaction for your reference. Note: This message will not be sent over the Bitcoin network. - - - Qt::PlainText - - - - - - - Qt::Horizontal - - - - - - - - - - - - - 0 - 0 - 0 - - - - - - - 255 - 255 - 127 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 191 - - - - - - - 127 - 127 - 63 - - - - - - - 170 - 170 - 84 - - - - - - - 0 - 0 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 0 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 127 - - - - - - - 0 - 0 - 0 - - - - - - - 255 - 255 - 191 - - - - - - - 255 - 255 - 220 - - - - - - - 0 - 0 - 0 - - - - - - - - - 0 - 0 - 0 - - - - - - - 255 - 255 - 127 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 191 - - - - - - - 127 - 127 - 63 - - - - - - - 170 - 170 - 84 - - - - - - - 0 - 0 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 0 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 127 - - - - - - - 0 - 0 - 0 - - - - - - - 255 - 255 - 191 - - - - - - - 255 - 255 - 220 - - - - - - - 0 - 0 - 0 - - - - - - - - - 127 - 127 - 63 - - - - - - - 255 - 255 - 127 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 191 - - - - - - - 127 - 127 - 63 - - - - - - - 170 - 170 - 84 - - - - - - - 127 - 127 - 63 - - - - - - - 255 - 255 - 255 - - - - - - - 127 - 127 - 63 - - - - - - - 255 - 255 - 127 - - - - - - - 255 - 255 - 127 - - - - - - - 0 - 0 - 0 - - - - - - - 255 - 255 - 127 - - - - - - - 255 - 255 - 220 - - - - - - - 0 - 0 - 0 - - - - - - - - This is an unauthenticated payment request. - - - true - - - QFrame::NoFrame - - - - 12 - - - - - Pay To: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - 0 - - - - - - - - Remove this entry - - - - - - - :/icons/remove:/icons/remove - - - - - - - - - Memo: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Qt::PlainText - - - - - - - A&mount: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - payAmount_is - - - - - - - false - - - - - - - - - - - - - 0 - 0 - 0 - - - - - - - 140 - 232 - 119 - - - - - - - 230 - 255 - 224 - - - - - - - 185 - 243 - 171 - - - - - - - 70 - 116 - 59 - - - - - - - 93 - 155 - 79 - - - - - - - 0 - 0 - 0 - - - - - - - 155 - 255 - 147 - - - - - - - 0 - 0 - 0 - - - - - - - 119 - 255 - 233 - - - - - - - 140 - 232 - 119 - - - - - - - 0 - 0 - 0 - - - - - - - 197 - 243 - 187 - - - - - - - 125 - 194 - 122 - - - - - - - 255 - 255 - 220 - - - - - - - 0 - 0 - 0 - - - - - - - - - 0 - 0 - 0 - - - - - - - 140 - 232 - 119 - - - - - - - 230 - 255 - 224 - - - - - - - 185 - 243 - 171 - - - - - - - 70 - 116 - 59 - - - - - - - 93 - 155 - 79 - - - - - - - 0 - 0 - 0 - - - - - - - 155 - 255 - 147 - - - - - - - 0 - 0 - 0 - - - - - - - 119 - 255 - 233 - - - - - - - 140 - 232 - 119 - - - - - - - 0 - 0 - 0 - - - - - - - 197 - 243 - 187 - - - - - - - 125 - 194 - 122 - - - - - - - 255 - 255 - 220 - - - - - - - 0 - 0 - 0 - - - - - - - - - 70 - 116 - 59 - - - - - - - 140 - 232 - 119 - - - - - - - 230 - 255 - 224 - - - - - - - 185 - 243 - 171 - - - - - - - 70 - 116 - 59 - - - - - - - 93 - 155 - 79 - - - - - - - 70 - 116 - 59 - - - - - - - 155 - 255 - 147 - - - - - - - 70 - 116 - 59 - - - - - - - 140 - 232 - 119 - - - - - - - 140 - 232 - 119 - - - - - - - 0 - 0 - 0 - - - - - - - 140 - 232 - 119 - - - - - - - 125 - 194 - 122 - - - - - - - 255 - 255 - 220 - - - - - - - 0 - 0 - 0 - - - - - - - - This is an authenticated payment request. - - - true - - - QFrame::NoFrame - - - - 12 - - - - - Pay To: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - 0 - - - - - Qt::PlainText - - - - - - - Remove this entry - - - - - - - :/icons/remove:/icons/remove - - - - - - - - - Memo: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Qt::PlainText - - - - - - - A&mount: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - payAmount_s - - - - - - - false - - - - - - - - - QValidatedLineEdit - QLineEdit -
qvalidatedlineedit.h
-
- - BitcoinAmountField - QLineEdit -
bitcoinamountfield.h
-
-
- - payTo - addressBookButton - pasteButton - deleteButton - addAsLabel - payAmount - payAmount_is - deleteButton_is - payAmount_s - deleteButton_s - - - - - -
diff --git a/src/qt/forms/signverifymessagedialog.ui b/src/qt/forms/signverifymessagedialog.ui deleted file mode 100644 index 92f6430c5..000000000 --- a/src/qt/forms/signverifymessagedialog.ui +++ /dev/null @@ -1,390 +0,0 @@ - - - SignVerifyMessageDialog - - - - 0 - 0 - 700 - 380 - - - - Signatures - Sign / Verify a Message - - - true - - - - - - 0 - - - - &Sign Message - - - - - - You can sign messages/agreements with your addresses to prove you can receive bitcoins sent to them. Be careful not to sign anything vague or random, as phishing attacks may try to trick you into signing your identity over to them. Only sign fully-detailed statements you agree to. - - - Qt::PlainText - - - true - - - - - - - 0 - - - - - The Bitcoin address to sign the message with - - - - - - - Choose previously used address - - - - - - - :/icons/address-book:/icons/address-book - - - Alt+A - - - false - - - - - - - Paste address from clipboard - - - - - - - :/icons/editpaste:/icons/editpaste - - - Alt+P - - - false - - - - - - - - - Enter the message you want to sign here - - - - - - - Signature - - - Qt::PlainText - - - - - - - 0 - - - - - - true - - - - true - - - - - - - Copy the current signature to the system clipboard - - - - - - - :/icons/editcopy:/icons/editcopy - - - false - - - - - - - - - - - Sign the message to prove you own this Bitcoin address - - - Sign &Message - - - - :/icons/edit:/icons/edit - - - false - - - - - - - Reset all sign message fields - - - Clear &All - - - - :/icons/remove:/icons/remove - - - false - - - - - - - Qt::Horizontal - - - - 40 - 48 - - - - - - - - - 75 - true - - - - - - - true - - - - - - - Qt::Horizontal - - - - 40 - 48 - - - - - - - - - - - &Verify Message - - - - - - Enter the receiver's address, message (ensure you copy line breaks, spaces, tabs, etc. exactly) and signature below to verify the message. Be careful not to read more into the signature than what is in the signed message itself, to avoid being tricked by a man-in-the-middle attack. Note that this only proves the signing party receives with the address, it cannot prove sendership of any transaction! - - - Qt::PlainText - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop - - - true - - - - - - - 0 - - - - - The Bitcoin address the message was signed with - - - - - - - Choose previously used address - - - - - - - :/icons/address-book:/icons/address-book - - - Alt+A - - - false - - - - - - - - - - - - - - - - - Verify the message to ensure it was signed with the specified Bitcoin address - - - Verify &Message - - - - :/icons/transaction_0:/icons/transaction_0 - - - false - - - - - - - Reset all verify message fields - - - Clear &All - - - - :/icons/remove:/icons/remove - - - false - - - - - - - Qt::Horizontal - - - - 40 - 48 - - - - - - - - - 75 - true - - - - - - - true - - - - - - - Qt::Horizontal - - - - 40 - 48 - - - - - - - - - - - - - - - QValidatedLineEdit - QLineEdit -
qvalidatedlineedit.h
-
-
- - - - -
diff --git a/src/qt/forms/transactiondescdialog.ui b/src/qt/forms/transactiondescdialog.ui deleted file mode 100644 index 5ae1e1285..000000000 --- a/src/qt/forms/transactiondescdialog.ui +++ /dev/null @@ -1,74 +0,0 @@ - - - TransactionDescDialog - - - - 0 - 0 - 620 - 250 - - - - Transaction details - - - - - - This pane shows a detailed description of the transaction - - - true - - - - - - - Qt::Horizontal - - - QDialogButtonBox::Close - - - - - - - - - buttonBox - accepted() - TransactionDescDialog - accept() - - - 20 - 20 - - - 20 - 20 - - - - - buttonBox - rejected() - TransactionDescDialog - reject() - - - 20 - 20 - - - 20 - 20 - - - - - diff --git a/src/qt/guiutil.cpp b/src/qt/guiutil.cpp deleted file mode 100644 index 0f30057ef..000000000 --- a/src/qt/guiutil.cpp +++ /dev/null @@ -1,908 +0,0 @@ -// Copyright (c) 2011-2013 The Bitcoin Core developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#include "guiutil.h" - -#include "bitcoinaddressvalidator.h" -#include "bitcoinunits.h" -#include "qvalidatedlineedit.h" -#include "walletmodel.h" - -#include "primitives/transaction.h" -#include "init.h" -#include "main.h" -#include "protocol.h" -#include "script/script.h" -#include "script/standard.h" -#include "util.h" - -#ifdef WIN32 -#ifdef _WIN32_WINNT -#undef _WIN32_WINNT -#endif -#define _WIN32_WINNT 0x0501 -#ifdef _WIN32_IE -#undef _WIN32_IE -#endif -#define _WIN32_IE 0x0501 -#define WIN32_LEAN_AND_MEAN 1 -#ifndef NOMINMAX -#define NOMINMAX -#endif -#include "shellapi.h" -#include "shlobj.h" -#include "shlwapi.h" -#endif - -#include -#include -#if BOOST_FILESYSTEM_VERSION >= 3 -#include -#endif -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include // for Qt::mightBeRichText -#include - -#if QT_VERSION < 0x050000 -#include -#else -#include -#endif - -#if BOOST_FILESYSTEM_VERSION >= 3 -static boost::filesystem::detail::utf8_codecvt_facet utf8; -#endif - -#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 -#endif - -namespace GUIUtil { - -QString dateTimeStr(const QDateTime &date) -{ - return date.date().toString(Qt::SystemLocaleShortDate) + QString(" ") + date.toString("hh:mm"); -} - -QString dateTimeStr(qint64 nTime) -{ - return dateTimeStr(QDateTime::fromTime_t((qint32)nTime)); -} - -QFont bitcoinAddressFont() -{ - QFont font("Monospace"); -#if QT_VERSION >= 0x040800 - font.setStyleHint(QFont::Monospace); -#else - font.setStyleHint(QFont::TypeWriter); -#endif - return font; -} - -void setupAddressWidget(QValidatedLineEdit *widget, QWidget *parent) -{ - parent->setFocusProxy(widget); - - widget->setFont(bitcoinAddressFont()); -#if QT_VERSION >= 0x040700 - // We don't want translators to use own addresses in translations - // and this is the only place, where this address is supplied. - widget->setPlaceholderText(QObject::tr("Enter a Bitcoin address (e.g. %1)").arg("1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L")); -#endif - widget->setValidator(new BitcoinAddressEntryValidator(parent)); - widget->setCheckValidator(new BitcoinAddressCheckValidator(parent)); -} - -void setupAmountWidget(QLineEdit *widget, QWidget *parent) -{ - QDoubleValidator *amountValidator = new QDoubleValidator(parent); - amountValidator->setDecimals(8); - amountValidator->setBottom(0.0); - widget->setValidator(amountValidator); - widget->setAlignment(Qt::AlignRight|Qt::AlignVCenter); -} - -bool parseBitcoinURI(const QUrl &uri, SendCoinsRecipient *out) -{ - // return if URI is not valid or is no bitcoin: URI - if(!uri.isValid() || uri.scheme() != QString("bitcoin")) - return false; - - SendCoinsRecipient rv; - rv.address = uri.path(); - // Trim any following forward slash which may have been added by the OS - if (rv.address.endsWith("/")) { - rv.address.truncate(rv.address.length() - 1); - } - rv.amount = 0; - -#if QT_VERSION < 0x050000 - QList > items = uri.queryItems(); -#else - QUrlQuery uriQuery(uri); - QList > items = uriQuery.queryItems(); -#endif - for (QList >::iterator i = items.begin(); i != items.end(); i++) - { - bool fShouldReturnFalse = false; - if (i->first.startsWith("req-")) - { - i->first.remove(0, 4); - fShouldReturnFalse = true; - } - - if (i->first == "label") - { - rv.label = i->second; - fShouldReturnFalse = false; - } - if (i->first == "message") - { - rv.message = i->second; - fShouldReturnFalse = false; - } - else if (i->first == "amount") - { - if(!i->second.isEmpty()) - { - if(!BitcoinUnits::parse(BitcoinUnits::BTC, i->second, &rv.amount)) - { - return false; - } - } - fShouldReturnFalse = false; - } - - if (fShouldReturnFalse) - return false; - } - if(out) - { - *out = rv; - } - return true; -} - -bool parseBitcoinURI(QString uri, SendCoinsRecipient *out) -{ - // Convert bitcoin:// to bitcoin: - // - // Cannot handle this later, because bitcoin:// will cause Qt to see the part after // as host, - // which will lower-case it (and thus invalidate the address). - if(uri.startsWith("bitcoin://", Qt::CaseInsensitive)) - { - uri.replace(0, 10, "bitcoin:"); - } - QUrl uriInstance(uri); - return parseBitcoinURI(uriInstance, out); -} - -QString formatBitcoinURI(const SendCoinsRecipient &info) -{ - QString ret = QString("bitcoin:%1").arg(info.address); - int paramCount = 0; - - if (info.amount) - { - ret += QString("?amount=%1").arg(BitcoinUnits::format(BitcoinUnits::BTC, info.amount, false, BitcoinUnits::separatorNever)); - paramCount++; - } - - if (!info.label.isEmpty()) - { - QString lbl(QUrl::toPercentEncoding(info.label)); - ret += QString("%1label=%2").arg(paramCount == 0 ? "?" : "&").arg(lbl); - paramCount++; - } - - if (!info.message.isEmpty()) - { - QString msg(QUrl::toPercentEncoding(info.message));; - ret += QString("%1message=%2").arg(paramCount == 0 ? "?" : "&").arg(msg); - paramCount++; - } - - return ret; -} - -bool isDust(const QString& address, const CAmount& amount) -{ - CTxDestination dest = CBitcoinAddress(address.toStdString()).Get(); - CScript script = GetScriptForDestination(dest); - CTxOut txOut(amount, script); - return txOut.IsDust(::minRelayTxFee); -} - -QString HtmlEscape(const QString& str, bool fMultiLine) -{ -#if QT_VERSION < 0x050000 - QString escaped = Qt::escape(str); -#else - QString escaped = str.toHtmlEscaped(); -#endif - if(fMultiLine) - { - escaped = escaped.replace("\n", "
\n"); - } - return escaped; -} - -QString HtmlEscape(const std::string& str, bool fMultiLine) -{ - return HtmlEscape(QString::fromStdString(str), fMultiLine); -} - -void copyEntryData(QAbstractItemView *view, int column, int role) -{ - if(!view || !view->selectionModel()) - return; - QModelIndexList selection = view->selectionModel()->selectedRows(column); - - if(!selection.isEmpty()) - { - // Copy first item - setClipboard(selection.at(0).data(role).toString()); - } -} - -QString getSaveFileName(QWidget *parent, const QString &caption, const QString &dir, - const QString &filter, - QString *selectedSuffixOut) -{ - QString selectedFilter; - QString myDir; - if(dir.isEmpty()) // Default to user documents location - { -#if QT_VERSION < 0x050000 - myDir = QDesktopServices::storageLocation(QDesktopServices::DocumentsLocation); -#else - myDir = QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation); -#endif - } - else - { - myDir = dir; - } - /* Directly convert path to native OS path separators */ - QString result = QDir::toNativeSeparators(QFileDialog::getSaveFileName(parent, caption, myDir, filter, &selectedFilter)); - - /* Extract first suffix from filter pattern "Description (*.foo)" or "Description (*.foo *.bar ...) */ - QRegExp filter_re(".* \\(\\*\\.(.*)[ \\)]"); - QString selectedSuffix; - if(filter_re.exactMatch(selectedFilter)) - { - selectedSuffix = filter_re.cap(1); - } - - /* Add suffix if needed */ - QFileInfo info(result); - if(!result.isEmpty()) - { - if(info.suffix().isEmpty() && !selectedSuffix.isEmpty()) - { - /* No suffix specified, add selected suffix */ - if(!result.endsWith(".")) - result.append("."); - result.append(selectedSuffix); - } - } - - /* Return selected suffix if asked to */ - if(selectedSuffixOut) - { - *selectedSuffixOut = selectedSuffix; - } - return result; -} - -QString getOpenFileName(QWidget *parent, const QString &caption, const QString &dir, - const QString &filter, - QString *selectedSuffixOut) -{ - QString selectedFilter; - QString myDir; - if(dir.isEmpty()) // Default to user documents location - { -#if QT_VERSION < 0x050000 - myDir = QDesktopServices::storageLocation(QDesktopServices::DocumentsLocation); -#else - myDir = QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation); -#endif - } - else - { - myDir = dir; - } - /* Directly convert path to native OS path separators */ - QString result = QDir::toNativeSeparators(QFileDialog::getOpenFileName(parent, caption, myDir, filter, &selectedFilter)); - - if(selectedSuffixOut) - { - /* Extract first suffix from filter pattern "Description (*.foo)" or "Description (*.foo *.bar ...) */ - QRegExp filter_re(".* \\(\\*\\.(.*)[ \\)]"); - QString selectedSuffix; - if(filter_re.exactMatch(selectedFilter)) - { - selectedSuffix = filter_re.cap(1); - } - *selectedSuffixOut = selectedSuffix; - } - return result; -} - -Qt::ConnectionType blockingGUIThreadConnection() -{ - if(QThread::currentThread() != qApp->thread()) - { - return Qt::BlockingQueuedConnection; - } - else - { - return Qt::DirectConnection; - } -} - -bool checkPoint(const QPoint &p, const QWidget *w) -{ - QWidget *atW = QApplication::widgetAt(w->mapToGlobal(p)); - if (!atW) return false; - return atW->topLevelWidget() == w; -} - -bool isObscured(QWidget *w) -{ - return !(checkPoint(QPoint(0, 0), w) - && checkPoint(QPoint(w->width() - 1, 0), w) - && checkPoint(QPoint(0, w->height() - 1), w) - && checkPoint(QPoint(w->width() - 1, w->height() - 1), w) - && checkPoint(QPoint(w->width() / 2, w->height() / 2), w)); -} - -void openDebugLogfile() -{ - boost::filesystem::path pathDebug = GetDataDir() / "debug.log"; - - /* Open debug.log with the associated application */ - if (boost::filesystem::exists(pathDebug)) - QDesktopServices::openUrl(QUrl::fromLocalFile(boostPathToQString(pathDebug))); -} - -void SubstituteFonts(const QString& language) -{ -#if defined(Q_OS_MAC) -// Background: -// OSX's default font changed in 10.9 and Qt is unable to find it with its -// usual fallback methods when building against the 10.7 sdk or lower. -// The 10.8 SDK added a function to let it find the correct fallback font. -// 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_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 -} - -ToolTipToRichTextFilter::ToolTipToRichTextFilter(int size_threshold, QObject *parent) : - QObject(parent), - size_threshold(size_threshold) -{ - -} - -bool ToolTipToRichTextFilter::eventFilter(QObject *obj, QEvent *evt) -{ - if(evt->type() == QEvent::ToolTipChange) - { - QWidget *widget = static_cast(obj); - QString tooltip = widget->toolTip(); - if(tooltip.size() > size_threshold && !tooltip.startsWith(" to make sure Qt detects this as rich text - // Escape the current message as HTML and replace \n by
- tooltip = "" + HtmlEscape(tooltip, true) + ""; - widget->setToolTip(tooltip); - return true; - } - } - return QObject::eventFilter(obj, evt); -} - -void TableViewLastColumnResizingFixer::connectViewHeadersSignals() -{ - connect(tableView->horizontalHeader(), SIGNAL(sectionResized(int,int,int)), this, SLOT(on_sectionResized(int,int,int))); - connect(tableView->horizontalHeader(), SIGNAL(geometriesChanged()), this, SLOT(on_geometriesChanged())); -} - -// We need to disconnect these while handling the resize events, otherwise we can enter infinite loops. -void TableViewLastColumnResizingFixer::disconnectViewHeadersSignals() -{ - disconnect(tableView->horizontalHeader(), SIGNAL(sectionResized(int,int,int)), this, SLOT(on_sectionResized(int,int,int))); - disconnect(tableView->horizontalHeader(), SIGNAL(geometriesChanged()), this, SLOT(on_geometriesChanged())); -} - -// Setup the resize mode, handles compatibility for Qt5 and below as the method signatures changed. -// Refactored here for readability. -void TableViewLastColumnResizingFixer::setViewHeaderResizeMode(int logicalIndex, QHeaderView::ResizeMode resizeMode) -{ -#if QT_VERSION < 0x050000 - tableView->horizontalHeader()->setResizeMode(logicalIndex, resizeMode); -#else - tableView->horizontalHeader()->setSectionResizeMode(logicalIndex, resizeMode); -#endif -} - -void TableViewLastColumnResizingFixer::resizeColumn(int nColumnIndex, int width) -{ - tableView->setColumnWidth(nColumnIndex, width); - tableView->horizontalHeader()->resizeSection(nColumnIndex, width); -} - -int TableViewLastColumnResizingFixer::getColumnsWidth() -{ - int nColumnsWidthSum = 0; - for (int i = 0; i < columnCount; i++) - { - nColumnsWidthSum += tableView->horizontalHeader()->sectionSize(i); - } - return nColumnsWidthSum; -} - -int TableViewLastColumnResizingFixer::getAvailableWidthForColumn(int column) -{ - int nResult = lastColumnMinimumWidth; - int nTableWidth = tableView->horizontalHeader()->width(); - - if (nTableWidth > 0) - { - int nOtherColsWidth = getColumnsWidth() - tableView->horizontalHeader()->sectionSize(column); - nResult = std::max(nResult, nTableWidth - nOtherColsWidth); - } - - return nResult; -} - -// Make sure we don't make the columns wider than the tables viewport width. -void TableViewLastColumnResizingFixer::adjustTableColumnsWidth() -{ - disconnectViewHeadersSignals(); - resizeColumn(lastColumnIndex, getAvailableWidthForColumn(lastColumnIndex)); - connectViewHeadersSignals(); - - int nTableWidth = tableView->horizontalHeader()->width(); - int nColsWidth = getColumnsWidth(); - if (nColsWidth > nTableWidth) - { - resizeColumn(secondToLastColumnIndex,getAvailableWidthForColumn(secondToLastColumnIndex)); - } -} - -// Make column use all the space available, useful during window resizing. -void TableViewLastColumnResizingFixer::stretchColumnWidth(int column) -{ - disconnectViewHeadersSignals(); - resizeColumn(column, getAvailableWidthForColumn(column)); - connectViewHeadersSignals(); -} - -// When a section is resized this is a slot-proxy for ajustAmountColumnWidth(). -void TableViewLastColumnResizingFixer::on_sectionResized(int logicalIndex, int oldSize, int newSize) -{ - adjustTableColumnsWidth(); - int remainingWidth = getAvailableWidthForColumn(logicalIndex); - if (newSize > remainingWidth) - { - resizeColumn(logicalIndex, remainingWidth); - } -} - -// When the tabless geometry is ready, we manually perform the stretch of the "Message" column, -// as the "Stretch" resize mode does not allow for interactive resizing. -void TableViewLastColumnResizingFixer::on_geometriesChanged() -{ - if ((getColumnsWidth() - this->tableView->horizontalHeader()->width()) != 0) - { - disconnectViewHeadersSignals(); - resizeColumn(secondToLastColumnIndex, getAvailableWidthForColumn(secondToLastColumnIndex)); - connectViewHeadersSignals(); - } -} - -/** - * Initializes all internal variables and prepares the - * the resize modes of the last 2 columns of the table and - */ -TableViewLastColumnResizingFixer::TableViewLastColumnResizingFixer(QTableView* table, int lastColMinimumWidth, int allColsMinimumWidth) : - tableView(table), - lastColumnMinimumWidth(lastColMinimumWidth), - allColumnsMinimumWidth(allColsMinimumWidth) -{ - columnCount = tableView->horizontalHeader()->count(); - lastColumnIndex = columnCount - 1; - secondToLastColumnIndex = columnCount - 2; - tableView->horizontalHeader()->setMinimumSectionSize(allColumnsMinimumWidth); - setViewHeaderResizeMode(secondToLastColumnIndex, QHeaderView::Interactive); - setViewHeaderResizeMode(lastColumnIndex, QHeaderView::Interactive); -} - -#ifdef WIN32 -boost::filesystem::path static StartupShortcutPath() -{ - if (GetBoolArg("-testnet", false)) - return GetSpecialFolderPath(CSIDL_STARTUP) / "Bitcoin (testnet).lnk"; - else if (GetBoolArg("-regtest", false)) - return GetSpecialFolderPath(CSIDL_STARTUP) / "Bitcoin (regtest).lnk"; - - return GetSpecialFolderPath(CSIDL_STARTUP) / "Bitcoin.lnk"; -} - -bool GetStartOnSystemStartup() -{ - // check for Bitcoin*.lnk - return boost::filesystem::exists(StartupShortcutPath()); -} - -bool SetStartOnSystemStartup(bool fAutoStart) -{ - // If the shortcut exists already, remove it for updating - boost::filesystem::remove(StartupShortcutPath()); - - if (fAutoStart) - { - CoInitialize(NULL); - - // Get a pointer to the IShellLink interface. - IShellLink* psl = NULL; - HRESULT hres = CoCreateInstance(CLSID_ShellLink, NULL, - CLSCTX_INPROC_SERVER, IID_IShellLink, - reinterpret_cast(&psl)); - - if (SUCCEEDED(hres)) - { - // Get the current executable path - TCHAR pszExePath[MAX_PATH]; - GetModuleFileName(NULL, pszExePath, sizeof(pszExePath)); - - // Start client minimized - QString strArgs = "-min"; - // Set -testnet /-regtest options - strArgs += QString::fromStdString(strprintf(" -testnet=%d -regtest=%d", GetBoolArg("-testnet", false), GetBoolArg("-regtest", false))); - -#ifdef UNICODE - boost::scoped_array args(new TCHAR[strArgs.length() + 1]); - // Convert the QString to TCHAR* - strArgs.toWCharArray(args.get()); - // Add missing '\0'-termination to string - args[strArgs.length()] = '\0'; -#endif - - // Set the path to the shortcut target - psl->SetPath(pszExePath); - PathRemoveFileSpec(pszExePath); - psl->SetWorkingDirectory(pszExePath); - psl->SetShowCmd(SW_SHOWMINNOACTIVE); -#ifndef UNICODE - psl->SetArguments(strArgs.toStdString().c_str()); -#else - psl->SetArguments(args.get()); -#endif - - // Query IShellLink for the IPersistFile interface for - // saving the shortcut in persistent storage. - IPersistFile* ppf = NULL; - hres = psl->QueryInterface(IID_IPersistFile, reinterpret_cast(&ppf)); - if (SUCCEEDED(hres)) - { - WCHAR pwsz[MAX_PATH]; - // Ensure that the string is ANSI. - MultiByteToWideChar(CP_ACP, 0, StartupShortcutPath().string().c_str(), -1, pwsz, MAX_PATH); - // Save the link by calling IPersistFile::Save. - hres = ppf->Save(pwsz, TRUE); - ppf->Release(); - psl->Release(); - CoUninitialize(); - return true; - } - psl->Release(); - } - CoUninitialize(); - return false; - } - return true; -} -#elif defined(Q_OS_LINUX) - -// Follow the Desktop Application Autostart Spec: -// http://standards.freedesktop.org/autostart-spec/autostart-spec-latest.html - -boost::filesystem::path static GetAutostartDir() -{ - namespace fs = boost::filesystem; - - char* pszConfigHome = getenv("XDG_CONFIG_HOME"); - if (pszConfigHome) return fs::path(pszConfigHome) / "autostart"; - char* pszHome = getenv("HOME"); - if (pszHome) return fs::path(pszHome) / ".config" / "autostart"; - return fs::path(); -} - -boost::filesystem::path static GetAutostartFilePath() -{ - return GetAutostartDir() / "bitcoin.desktop"; -} - -bool GetStartOnSystemStartup() -{ - boost::filesystem::ifstream optionFile(GetAutostartFilePath()); - if (!optionFile.good()) - return false; - // Scan through file for "Hidden=true": - std::string line; - while (!optionFile.eof()) - { - getline(optionFile, line); - if (line.find("Hidden") != std::string::npos && - line.find("true") != std::string::npos) - return false; - } - optionFile.close(); - - return true; -} - -bool SetStartOnSystemStartup(bool fAutoStart) -{ - if (!fAutoStart) - boost::filesystem::remove(GetAutostartFilePath()); - else - { - char pszExePath[MAX_PATH+1]; - memset(pszExePath, 0, sizeof(pszExePath)); - if (readlink("/proc/self/exe", pszExePath, sizeof(pszExePath)-1) == -1) - return false; - - boost::filesystem::create_directories(GetAutostartDir()); - - boost::filesystem::ofstream optionFile(GetAutostartFilePath(), std::ios_base::out|std::ios_base::trunc); - if (!optionFile.good()) - return false; - // Write a bitcoin.desktop file to the autostart directory: - optionFile << "[Desktop Entry]\n"; - optionFile << "Type=Application\n"; - if (GetBoolArg("-testnet", false)) - optionFile << "Name=Bitcoin (testnet)\n"; - else if (GetBoolArg("-regtest", false)) - optionFile << "Name=Bitcoin (regtest)\n"; - else - optionFile << "Name=Bitcoin\n"; - optionFile << "Exec=" << pszExePath << strprintf(" -min -testnet=%d -regtest=%d\n", GetBoolArg("-testnet", false), GetBoolArg("-regtest", false)); - optionFile << "Terminal=false\n"; - optionFile << "Hidden=false\n"; - optionFile.close(); - } - return true; -} - - -#elif defined(Q_OS_MAC) -// based on: https://github.com/Mozketo/LaunchAtLoginController/blob/master/LaunchAtLoginController.m - -#include -#include - -LSSharedFileListItemRef findStartupItemInList(LSSharedFileListRef list, CFURLRef findUrl); -LSSharedFileListItemRef findStartupItemInList(LSSharedFileListRef list, CFURLRef findUrl) -{ - // loop through the list of startup items and try to find the bitcoin app - CFArrayRef listSnapshot = LSSharedFileListCopySnapshot(list, NULL); - for(int i = 0; i < CFArrayGetCount(listSnapshot); i++) { - LSSharedFileListItemRef item = (LSSharedFileListItemRef)CFArrayGetValueAtIndex(listSnapshot, i); - UInt32 resolutionFlags = kLSSharedFileListNoUserInteraction | kLSSharedFileListDoNotMountVolumes; - CFURLRef currentItemURL = NULL; - -#if defined(MAC_OS_X_VERSION_MAX_ALLOWED) && MAC_OS_X_VERSION_MAX_ALLOWED >= 10100 - if(&LSSharedFileListItemCopyResolvedURL) - currentItemURL = LSSharedFileListItemCopyResolvedURL(item, resolutionFlags, NULL); -#if defined(MAC_OS_X_VERSION_MIN_REQUIRED) && MAC_OS_X_VERSION_MIN_REQUIRED < 10100 - else - LSSharedFileListItemResolve(item, resolutionFlags, ¤tItemURL, NULL); -#endif -#else - LSSharedFileListItemResolve(item, resolutionFlags, ¤tItemURL, NULL); -#endif - - if(currentItemURL && CFEqual(currentItemURL, findUrl)) { - // found - CFRelease(currentItemURL); - return item; - } - if(currentItemURL) { - CFRelease(currentItemURL); - } - } - return NULL; -} - -bool GetStartOnSystemStartup() -{ - CFURLRef bitcoinAppUrl = CFBundleCopyBundleURL(CFBundleGetMainBundle()); - LSSharedFileListRef loginItems = LSSharedFileListCreate(NULL, kLSSharedFileListSessionLoginItems, NULL); - LSSharedFileListItemRef foundItem = findStartupItemInList(loginItems, bitcoinAppUrl); - return !!foundItem; // return boolified object -} - -bool SetStartOnSystemStartup(bool fAutoStart) -{ - CFURLRef bitcoinAppUrl = CFBundleCopyBundleURL(CFBundleGetMainBundle()); - LSSharedFileListRef loginItems = LSSharedFileListCreate(NULL, kLSSharedFileListSessionLoginItems, NULL); - LSSharedFileListItemRef foundItem = findStartupItemInList(loginItems, bitcoinAppUrl); - - if(fAutoStart && !foundItem) { - // add bitcoin app to startup item list - LSSharedFileListInsertItemURL(loginItems, kLSSharedFileListItemBeforeFirst, NULL, NULL, bitcoinAppUrl, NULL, NULL); - } - else if(!fAutoStart && foundItem) { - // remove item - LSSharedFileListItemRemove(loginItems, foundItem); - } - return true; -} -#else - -bool GetStartOnSystemStartup() { return false; } -bool SetStartOnSystemStartup(bool fAutoStart) { return false; } - -#endif - -void saveWindowGeometry(const QString& strSetting, QWidget *parent) -{ - QSettings settings; - settings.setValue(strSetting + "Pos", parent->pos()); - settings.setValue(strSetting + "Size", parent->size()); -} - -void restoreWindowGeometry(const QString& strSetting, const QSize& defaultSize, QWidget *parent) -{ - QSettings settings; - QPoint pos = settings.value(strSetting + "Pos").toPoint(); - QSize size = settings.value(strSetting + "Size", defaultSize).toSize(); - - if (!pos.x() && !pos.y()) { - QRect screen = QApplication::desktop()->screenGeometry(); - pos.setX((screen.width() - size.width()) / 2); - pos.setY((screen.height() - size.height()) / 2); - } - - parent->resize(size); - parent->move(pos); -} - -void setClipboard(const QString& str) -{ - QApplication::clipboard()->setText(str, QClipboard::Clipboard); - QApplication::clipboard()->setText(str, QClipboard::Selection); -} - -#if BOOST_FILESYSTEM_VERSION >= 3 -boost::filesystem::path qstringToBoostPath(const QString &path) -{ - return boost::filesystem::path(path.toStdString(), utf8); -} - -QString boostPathToQString(const boost::filesystem::path &path) -{ - return QString::fromStdString(path.string(utf8)); -} -#else -#warning Conversion between boost path and QString can use invalid character encoding with boost_filesystem v2 and older -boost::filesystem::path qstringToBoostPath(const QString &path) -{ - return boost::filesystem::path(path.toStdString()); -} - -QString boostPathToQString(const boost::filesystem::path &path) -{ - return QString::fromStdString(path.string()); -} -#endif - -QString formatDurationStr(int secs) -{ - QStringList strList; - int days = secs / 86400; - int hours = (secs % 86400) / 3600; - int mins = (secs % 3600) / 60; - int seconds = secs % 60; - - if (days) - strList.append(QString(QObject::tr("%1 d")).arg(days)); - if (hours) - strList.append(QString(QObject::tr("%1 h")).arg(hours)); - if (mins) - strList.append(QString(QObject::tr("%1 m")).arg(mins)); - if (seconds || (!days && !hours && !mins)) - strList.append(QString(QObject::tr("%1 s")).arg(seconds)); - - return strList.join(" "); -} - -QString formatServicesStr(quint64 mask) -{ - QStringList strList; - - // Just scan the last 8 bits for now. - for (int i = 0; i < 8; i++) { - uint64_t check = 1 << i; - if (mask & check) - { - switch (check) - { - case NODE_NETWORK: - strList.append("NETWORK"); - break; - case NODE_GETUTXO: - strList.append("GETUTXO"); - break; - default: - strList.append(QString("%1[%2]").arg("UNKNOWN").arg(check)); - } - } - } - - if (strList.size()) - return strList.join(" & "); - else - return QObject::tr("None"); -} - -QString formatPingTime(double dPingTime) -{ - return dPingTime == 0 ? QObject::tr("N/A") : QString(QObject::tr("%1 ms")).arg(QString::number((int)(dPingTime * 1000), 10)); -} - -QString formatTimeOffset(int64_t nTimeOffset) -{ - return QString(QObject::tr("%1 s")).arg(QString::number((int)nTimeOffset, 10)); -} - -} // namespace GUIUtil diff --git a/src/qt/guiutil.h b/src/qt/guiutil.h deleted file mode 100644 index 0a47f767d..000000000 --- a/src/qt/guiutil.h +++ /dev/null @@ -1,211 +0,0 @@ -// Copyright (c) 2011-2013 The Bitcoin Core developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#ifndef BITCOIN_QT_GUIUTIL_H -#define BITCOIN_QT_GUIUTIL_H - -#include "amount.h" - -#include -#include -#include -#include -#include -#include -#include - -#include - -class QValidatedLineEdit; -class SendCoinsRecipient; - -QT_BEGIN_NAMESPACE -class QAbstractItemView; -class QDateTime; -class QFont; -class QLineEdit; -class QUrl; -class QWidget; -QT_END_NAMESPACE - -/** Utility functions used by the Bitcoin Qt UI. - */ -namespace GUIUtil -{ - // Create human-readable string from date - QString dateTimeStr(const QDateTime &datetime); - QString dateTimeStr(qint64 nTime); - - // Render Bitcoin addresses in monospace font - QFont bitcoinAddressFont(); - - // Set up widgets for address and amounts - void setupAddressWidget(QValidatedLineEdit *widget, QWidget *parent); - void setupAmountWidget(QLineEdit *widget, QWidget *parent); - - // Parse "bitcoin:" URI into recipient object, return true on successful parsing - bool parseBitcoinURI(const QUrl &uri, SendCoinsRecipient *out); - bool parseBitcoinURI(QString uri, SendCoinsRecipient *out); - QString formatBitcoinURI(const SendCoinsRecipient &info); - - // Returns true if given address+amount meets "dust" definition - bool isDust(const QString& address, const CAmount& amount); - - // HTML escaping for rich text controls - QString HtmlEscape(const QString& str, bool fMultiLine=false); - QString HtmlEscape(const std::string& str, bool fMultiLine=false); - - /** Copy a field of the currently selected entry of a view to the clipboard. Does nothing if nothing - is selected. - @param[in] column Data column to extract from the model - @param[in] role Data role to extract from the model - @see TransactionView::copyLabel, TransactionView::copyAmount, TransactionView::copyAddress - */ - void copyEntryData(QAbstractItemView *view, int column, int role=Qt::EditRole); - - void setClipboard(const QString& str); - - /** Get save filename, mimics QFileDialog::getSaveFileName, except that it appends a default suffix - when no suffix is provided by the user. - - @param[in] parent Parent window (or 0) - @param[in] caption Window caption (or empty, for default) - @param[in] dir Starting directory (or empty, to default to documents directory) - @param[in] filter Filter specification such as "Comma Separated Files (*.csv)" - @param[out] selectedSuffixOut Pointer to return the suffix (file type) that was selected (or 0). - Can be useful when choosing the save file format based on suffix. - */ - QString getSaveFileName(QWidget *parent, const QString &caption, const QString &dir, - const QString &filter, - QString *selectedSuffixOut); - - /** Get open filename, convenience wrapper for QFileDialog::getOpenFileName. - - @param[in] parent Parent window (or 0) - @param[in] caption Window caption (or empty, for default) - @param[in] dir Starting directory (or empty, to default to documents directory) - @param[in] filter Filter specification such as "Comma Separated Files (*.csv)" - @param[out] selectedSuffixOut Pointer to return the suffix (file type) that was selected (or 0). - Can be useful when choosing the save file format based on suffix. - */ - QString getOpenFileName(QWidget *parent, const QString &caption, const QString &dir, - const QString &filter, - QString *selectedSuffixOut); - - /** Get connection type to call object slot in GUI thread with invokeMethod. The call will be blocking. - - @returns If called from the GUI thread, return a Qt::DirectConnection. - If called from another thread, return a Qt::BlockingQueuedConnection. - */ - Qt::ConnectionType blockingGUIThreadConnection(); - - // Determine whether a widget is hidden behind other windows - bool isObscured(QWidget *w); - - // Open debug.log - void openDebugLogfile(); - - // Replace invalid default fonts with known good ones - 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. - Tooltips longer than the provided size threshold (in characters) are wrapped. - */ - class ToolTipToRichTextFilter : public QObject - { - Q_OBJECT - - public: - explicit ToolTipToRichTextFilter(int size_threshold, QObject *parent = 0); - - protected: - bool eventFilter(QObject *obj, QEvent *evt); - - private: - int size_threshold; - }; - - /** - * Makes a QTableView last column feel as if it was being resized from its left border. - * Also makes sure the column widths are never larger than the table's viewport. - * In Qt, all columns are resizable from the right, but it's not intuitive resizing the last column from the right. - * Usually our second to last columns behave as if stretched, and when on strech mode, columns aren't resizable - * interactively or programatically. - * - * This helper object takes care of this issue. - * - */ - class TableViewLastColumnResizingFixer: public QObject - { - Q_OBJECT - - public: - TableViewLastColumnResizingFixer(QTableView* table, int lastColMinimumWidth, int allColsMinimumWidth); - void stretchColumnWidth(int column); - - private: - QTableView* tableView; - int lastColumnMinimumWidth; - int allColumnsMinimumWidth; - int lastColumnIndex; - int columnCount; - int secondToLastColumnIndex; - - void adjustTableColumnsWidth(); - int getAvailableWidthForColumn(int column); - int getColumnsWidth(); - void connectViewHeadersSignals(); - void disconnectViewHeadersSignals(); - void setViewHeaderResizeMode(int logicalIndex, QHeaderView::ResizeMode resizeMode); - void resizeColumn(int nColumnIndex, int width); - - private Q_SLOTS: - void on_sectionResized(int logicalIndex, int oldSize, int newSize); - void on_geometriesChanged(); - }; - - bool GetStartOnSystemStartup(); - bool SetStartOnSystemStartup(bool fAutoStart); - - /** Save window size and position */ - void saveWindowGeometry(const QString& strSetting, QWidget *parent); - /** Restore window size and position */ - void restoreWindowGeometry(const QString& strSetting, const QSize &defaultSizeIn, QWidget *parent); - - /* Convert QString to OS specific boost path through UTF-8 */ - boost::filesystem::path qstringToBoostPath(const QString &path); - - /* Convert OS specific boost path to QString through UTF-8 */ - QString boostPathToQString(const boost::filesystem::path &path); - - /* Convert seconds into a QString with days, hours, mins, secs */ - QString formatDurationStr(int secs); - - /* Format CNodeStats.nServices bitmask into a user-readable string */ - QString formatServicesStr(quint64 mask); - - /* Format a CNodeCombinedStats.dPingTime into a user-readable string or display N/A, if 0*/ - QString formatPingTime(double dPingTime); - - /* Format a CNodeCombinedStats.nTimeOffset into a user-readable string. */ - QString formatTimeOffset(int64_t nTimeOffset); - -#if defined(Q_OS_MAC) && QT_VERSION >= 0x050000 - // workaround for Qt OSX Bug: - // https://bugreports.qt-project.org/browse/QTBUG-15631 - // QProgressBar uses around 10% CPU even when app is in background - class ProgressBar : public QProgressBar - { - bool event(QEvent *e) { - return (e->type() != QEvent::StyleAnimationUpdate) ? QProgressBar::event(e) : false; - } - }; -#else - typedef QProgressBar ProgressBar; -#endif - -} // namespace GUIUtil - -#endif // BITCOIN_QT_GUIUTIL_H diff --git a/src/qt/intro.h b/src/qt/intro.h deleted file mode 100644 index 50783f722..000000000 --- a/src/qt/intro.h +++ /dev/null @@ -1,73 +0,0 @@ -// Copyright (c) 2011-2013 The Bitcoin Core developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#ifndef BITCOIN_QT_INTRO_H -#define BITCOIN_QT_INTRO_H - -#include -#include -#include - -class FreespaceChecker; - -namespace Ui { - class Intro; -} - -/** Introduction screen (pre-GUI startup). - Allows the user to choose a data directory, - in which the wallet and block chain will be stored. - */ -class Intro : public QDialog -{ - Q_OBJECT - -public: - explicit Intro(QWidget *parent = 0); - ~Intro(); - - QString getDataDirectory(); - void setDataDirectory(const QString &dataDir); - - /** - * Determine data directory. Let the user choose if the current one doesn't exist. - * - * @note do NOT call global GetDataDir() before calling this function, this - * will cause the wrong path to be cached. - */ - static void pickDataDirectory(); - - /** - * Determine default data directory for operating system. - */ - static QString getDefaultDataDirectory(); - -Q_SIGNALS: - void requestCheck(); - void stopThread(); - -public Q_SLOTS: - void setStatus(int status, const QString &message, quint64 bytesAvailable); - -private Q_SLOTS: - void on_dataDirectory_textChanged(const QString &arg1); - void on_ellipsisButton_clicked(); - void on_dataDirDefault_clicked(); - void on_dataDirCustom_clicked(); - -private: - Ui::Intro *ui; - QThread *thread; - QMutex mutex; - bool signalled; - QString pathToCheck; - - void startThread(); - void checkPath(const QString &dataDir); - QString getPathToCheck(); - - friend class FreespaceChecker; -}; - -#endif // BITCOIN_QT_INTRO_H diff --git a/src/qt/locale/bitcoin_ach.ts b/src/qt/locale/bitcoin_ach.ts deleted file mode 100644 index ddb9fb85c..000000000 --- a/src/qt/locale/bitcoin_ach.ts +++ /dev/null @@ -1,110 +0,0 @@ - - - AddressBookPage - - - AddressTableModel - - - AskPassphraseDialog - - - BitcoinGUI - - - ClientModel - - - CoinControlDialog - - - EditAddressDialog - - - FreespaceChecker - - - HelpMessageDialog - - - Intro - - - OpenURIDialog - - - OptionsDialog - - - OverviewPage - - - PaymentServer - - - PeerTableModel - - - QObject - - - QRImageWidget - - - RPCConsole - - - ReceiveCoinsDialog - - - ReceiveRequestDialog - - - RecentRequestsTableModel - - - SendCoinsDialog - - - SendCoinsEntry - - - ShutdownWindow - - - SignVerifyMessageDialog - - - SplashScreen - - - TrafficGraphWidget - - - TransactionDesc - - - TransactionDescDialog - - - TransactionTableModel - - - TransactionView - - - UnitDisplayStatusBarControl - - - WalletFrame - - - WalletModel - - - WalletView - - - bitcoin-core - - \ No newline at end of file diff --git a/src/qt/locale/bitcoin_af_ZA.ts b/src/qt/locale/bitcoin_af_ZA.ts deleted file mode 100644 index 3767a4c83..000000000 --- a/src/qt/locale/bitcoin_af_ZA.ts +++ /dev/null @@ -1,674 +0,0 @@ - - - AddressBookPage - - Create a new address - Skep 'n nuwe adres - - - Copy the currently selected address to the system clipboard - Maak 'n kopie van die huidige adres na die stelsel klipbord - - - &Delete - &Verwyder - - - - AddressTableModel - - Label - Etiket - - - Address - Adres - - - (no label) - (geen etiket) - - - - AskPassphraseDialog - - Enter passphrase - Tik Wagwoord in - - - New passphrase - Nuwe wagwoord - - - Repeat new passphrase - Herhaal nuwe wagwoord - - - Encrypt wallet - Enkripteer beursie - - - This operation needs your wallet passphrase to unlock the wallet. - Hierdie operasie benodig 'n wagwoord om die beursie oop te sluit. - - - Unlock wallet - Sluit beursie oop - - - This operation needs your wallet passphrase to decrypt the wallet. - Hierdie operasie benodig 'n wagwoord om die beursie oop te sluit. - - - Decrypt wallet - Sluit beursie oop - - - Change passphrase - Verander wagwoord - - - Confirm wallet encryption - Bevestig beursie enkripsie. - - - Wallet encrypted - Die beursie is nou bewaak - - - Wallet encryption failed - Die beursie kon nie bewaak word nie - - - Wallet encryption failed due to an internal error. Your wallet was not encrypted. - Beursie bewaaking het misluk as gevolg van 'n interne fout. Die beursie is nie bewaak nie! - - - The supplied passphrases do not match. - Die wagwoord stem nie ooreen nie - - - Wallet unlock failed - Beursie oopsluiting het misluk - - - The passphrase entered for the wallet decryption was incorrect. - Die wagwoord wat ingetik was om die beursie oop te sluit, was verkeerd. - - - Wallet decryption failed - Beursie dekripsie het misluk - - - - BitcoinGUI - - Synchronizing with network... - Sinchroniseer met die netwerk ... - - - &Overview - &Oorsig - - - Show general overview of wallet - Wys algemene oorsig van die beursie - - - &Transactions - &Transaksies - - - Browse transaction history - Besoek transaksie geskiedenis - - - E&xit - S&luit af - - - Quit application - Sluit af - - - Show information about Qt - Wys inligting oor Qt - - - &Options... - &Opsies - - - Bitcoin - Bitcoin - - - Wallet - Beursie - - - &File - &Lêer - - - &Settings - &Instellings - - - &Help - &Hulp - - - Tabs toolbar - Blad nutsbalk - - - %1 behind - %1 agter - - - Last received block was generated %1 ago. - Ontvangs van laaste blok is %1 terug. - - - Error - Fout - - - Information - Informasie - - - - ClientModel - - - CoinControlDialog - - Amount: - Bedrag: - - - Amount - Bedrag - - - Date - Datum - - - Copy address - Maak kopie van adres - - - Copy amount - Kopieer bedrag - - - (no label) - (geen etiket) - - - - EditAddressDialog - - New receiving address - Nuwe ontvangende adres - - - New sending address - Nuwe stuurende adres - - - Edit receiving address - Wysig ontvangende adres - - - Edit sending address - Wysig stuurende adres - - - Could not unlock wallet. - Kon nie die beursie oopsluit nie. - - - - FreespaceChecker - - - HelpMessageDialog - - Usage: - Gebruik: - - - - Intro - - Error - Fout - - - - OpenURIDialog - - - OptionsDialog - - Options - Opsies - - - - OverviewPage - - Form - Vorm - - - - PaymentServer - - - PeerTableModel - - - QObject - - Amount - Bedrag - - - - QRImageWidget - - - RPCConsole - - &Information - Informasie - - - - ReceiveCoinsDialog - - Copy amount - Kopieer bedrag - - - - ReceiveRequestDialog - - Address - Adres - - - Amount - Bedrag - - - Label - Etiket - - - Message - Boodskap - - - - RecentRequestsTableModel - - Date - Datum - - - Label - Etiket - - - Message - Boodskap - - - Amount - Bedrag - - - (no label) - (geen etiket) - - - - SendCoinsDialog - - Send Coins - Stuur Munstukke - - - Amount: - Bedrag: - - - Send to multiple recipients at once - Stuur aan vele ontvangers op eens - - - Balance: - Balans: - - - S&end - S&tuur - - - Copy amount - Kopieer bedrag - - - (no label) - (geen etiket) - - - - SendCoinsEntry - - Message: - Boodskap: - - - - ShutdownWindow - - - SignVerifyMessageDialog - - &Sign Message - &Teken boodskap - - - Signature - Handtekening - - - Sign &Message - Teken &Boodskap - - - - SplashScreen - - - TrafficGraphWidget - - - TransactionDesc - - Date - Datum - - - From - Van - - - To - Na - - - own address - eie adres - - - label - etiket - - - Credit - Krediet - - - not accepted - nie aanvaar nie - - - Debit - Debiet - - - Transaction fee - Transaksie fooi - - - Net amount - Netto bedrag - - - Message - Boodskap - - - Transaction ID - Transaksie ID - - - Amount - Bedrag - - - true - waar - - - false - onwaar - - - unknown - onbekend - - - - TransactionDescDialog - - - TransactionTableModel - - Date - Datum - - - Type - Tipe - - - Label - Etiket - - - Received with - Ontvang met - - - Received from - Ontvang van - - - Sent to - Gestuur na - - - Payment to yourself - Betalings Aan/na jouself - - - Mined - Gemyn - - - (n/a) - (n.v.t) - - - Date and time that the transaction was received. - Datum en tyd wat die transaksie ontvang was. - - - Type of transaction. - Tipe transaksie. - - - - TransactionView - - All - Alles - - - Today - Vandag - - - This week - Hierdie week - - - This month - Hierdie maand - - - Last month - Verlede maand - - - This year - Hierdie jaar - - - Range... - Reeks... - - - Received with - Ontvang met - - - Sent to - Gestuur na - - - To yourself - Aan/na jouself - - - Mined - Gemyn - - - Other - Ander - - - Min amount - Min bedrag - - - Copy address - Maak kopie van adres - - - Copy amount - Kopieer bedrag - - - Date - Datum - - - Type - Tipe - - - Label - Etiket - - - Address - Adres - - - ID - ID - - - Range: - Reeks: - - - to - aan - - - - UnitDisplayStatusBarControl - - - WalletFrame - - - WalletModel - - Send Coins - Stuur Munstukke - - - - WalletView - - - bitcoin-core - - Options: - Opsies: - - - Use the test network - Gebruik die toets netwerk - - - Error: Disk space is low! - Fout: Hardeskyf spasie is baie laag! - - - Information - Informasie - - - This help message - Hierdie help boodskap - - - Loading addresses... - Laai adresse... - - - Insufficient funds - Onvoldoende fondse - - - Loading block index... - Laai blok indeks... - - - Loading wallet... - Laai beursie... - - - Done loading - Klaar gelaai - - - Error - Fout - - - \ No newline at end of file diff --git a/src/qt/locale/bitcoin_ar.ts b/src/qt/locale/bitcoin_ar.ts deleted file mode 100644 index fce09d7ca..000000000 --- a/src/qt/locale/bitcoin_ar.ts +++ /dev/null @@ -1,1730 +0,0 @@ - - - AddressBookPage - - Right-click to edit address or label - انقر بالزر الايمن لتعديل العنوان - - - Create a new address - انشأ عنوان جديد - - - &New - &جديد - - - Copy the currently selected address to the system clipboard - قم بنسخ القوانين المختارة Ù„Ø­Ø§ÙØ¸Ø© النظام - - - &Copy - &نسخ - - - C&lose - &اغلاق - - - &Copy Address - انسخ العنوان - - - Delete the currently selected address from the list - حذ٠العنوان المحدد من القائمة - - - Export the data in the current tab to a file - تحميل البيانات ÙÙŠ علامة التبويب الحالية إلى ملÙ. - - - &Export - &تصدير - - - &Delete - &أمسح - - - Choose the address to send coins to - اختر العنوان الذي سترسل له العملات - - - Choose the address to receive coins with - اختر العنوان الذي تستقبل عليه العملات - - - C&hoose - &اختر - - - Sending addresses - ارسال العناوين - - - Receiving addresses - استقبال العناوين - - - These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins. - هذه هي عناوين Bitcion التابعة لك من أجل إرسال Ø§Ù„Ø¯ÙØ¹Ø§Øª. تحقق دائما من المبلغ Ùˆ عنوان المرسل المستقبل قبل إرسال العملات - - - These are your Bitcoin addresses for receiving payments. It is recommended to use a new receiving address for each transaction. - هذه هي عناوين Bitcion التابعة لك من أجل إستقبال Ø§Ù„Ø¯ÙØ¹Ø§Øª. ينصح استخدام عنوان جديد من أجل كل صÙقة - - - Copy &Label - نسخ &الوص٠- - - &Edit - تعديل - - - Export Address List - تصدير قائمة العناوين - - - Comma separated file (*.csv) - Ù…Ù„Ù Ù…ÙØµÙˆÙ„ بÙواصل (*.csv) - - - Exporting Failed - ÙØ´Ù„ التصدير - - - - AddressTableModel - - Label - وص٠- - - Address - عنوان - - - (no label) - (لا وصÙ) - - - - AskPassphraseDialog - - Passphrase Dialog - حوار جملة السر - - - Enter passphrase - ادخل كلمة المرور - - - New passphrase - كلمة مرور جديدة - - - Repeat new passphrase - ادخل كلمة المرور الجديدة مرة أخرى - - - Encrypt wallet - تشÙير Ø§Ù„Ù…Ø­ÙØ¸Ø© - - - This operation needs your wallet passphrase to unlock the wallet. - هذه العملية تحتاج كلمة مرور Ù…Ø­ÙØ¸ØªÙƒ Ù„ÙØªØ­Ù‡Ø§ - - - Unlock wallet - Ø¥ÙØªØ­ Ø§Ù„Ù…Ø­ÙØ¸Ø© - - - This operation needs your wallet passphrase to decrypt the wallet. - هذه العملية تحتاج كلمة مرور Ù…Ø­ÙØ¸ØªÙƒ Ù„ÙÙƒ تشÙيرها - - - Decrypt wallet - ÙÙƒ تشÙير Ø§Ù„Ù…Ø­ÙØ¸Ø© - - - Change passphrase - تغيير كلمة المرور - - - Confirm wallet encryption - تأكيد تشÙير Ø§Ù„Ù…Ø­ÙØ¸Ø© - - - Warning: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR BITCOINS</b>! - تحذير: إذا قمت بتشÙير Ù…Ø­ÙØ¸ØªÙƒ ÙˆÙقدت كلمة المرور الخاص بك, ستÙقد كل عملات BITCOINS الخاصة بك. - - - Are you sure you wish to encrypt your wallet? - هل أنت متأكد من رغبتك ÙÙŠ تشÙير Ù…Ø­ÙØ¸ØªÙƒ ØŸ - - - 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. - هام: أي نسخة إحتياطية سابقة قمت بها Ù„Ù…Ø­ÙØ¸ØªÙƒ يجب استبدالها بأخرى حديثة، Ù…Ø´ÙØ±Ø©. لأسباب أمنية، النسخ الاحتياطية السابقة Ù„Ù…Ù„ÙØ§Øª Ø§Ù„Ù…Ø­ÙØ¸Ø© الغير Ù…Ø´ÙØ±Ø© تصبح عديمة Ø§Ù„ÙØ§Ø¦Ø¯Ø© مع بداية استخدام Ø§Ù„Ù…Ø­ÙØ¸Ø© Ø§Ù„Ù…Ø´ÙØ±Ø© الجديدة. - - - Warning: The Caps Lock key is on! - تحذير: Ù…ÙØªØ§Ø­ الحرو٠الكبيرة Ù…ÙØ¹Ù„ - - - Wallet encrypted - Ù…Ø­ÙØ¸Ø© Ù…Ø´ÙØ±Ø© - - - 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>. - أدخل عبارة مرور جديدة إلى Ø§Ù„Ù…Ø­ÙØ¸Ø©. الرجاء استخدام عبارة مرور تتكون من10 حرو٠عشوائية على الاقل, أو أكثر من 7 كلمات - - - Wallet encryption failed - ÙØ´Ù„ تشÙير Ø§Ù„Ù…Ø­ÙØ¸Ø© - - - Wallet encryption failed due to an internal error. Your wallet was not encrypted. - ÙØ´Ù„ تشÙير Ø§Ù„Ù…Ø­ÙØ¸Ø© بسبب خطأ داخلي. لم يتم تشÙير Ù…Ø­ÙØ¸ØªÙƒ. - - - The supplied passphrases do not match. - كلمتي المرور ليستا متطابقتان - - - Wallet unlock failed - ÙØ´Ù„ ÙØªØ­ Ø§Ù„Ù…Ø­ÙØ¸Ø© - - - The passphrase entered for the wallet decryption was incorrect. - كلمة المرور التي تم إدخالها Ù„ÙÙƒ تشÙير Ø§Ù„Ù…Ø­ÙØ¸Ø© غير صحيحة. - - - Wallet decryption failed - ÙØ´Ù„ ÙÙƒ التشÙير Ø§Ù„Ù…Ø­ÙØ¸Ø© - - - Wallet passphrase was successfully changed. - لقد تم تغير عبارة مرور Ø§Ù„Ù…Ø­ÙØ¸Ø© بنجاح - - - - BitcoinGUI - - Sign &message... - التوقيع Ùˆ الرسائل - - - Synchronizing with network... - مزامنة مع الشبكة ... - - - &Overview - &نظرة عامة - - - Node - جهاز - - - Show general overview of wallet - إظهار نظرة عامة على Ø§Ù„Ù…Ø­ÙØ¸Ø© - - - &Transactions - &المعاملات - - - Browse transaction history - ØªØµÙØ­ سجل المعاملات - - - E&xit - خروج - - - Quit application - الخروج من التطبيق - - - About &Qt - عن - - - Show information about Qt - اظهر المعلومات - - - &Options... - &خيارات ... - - - &Encrypt Wallet... - &تشÙير Ø§Ù„Ù…Ø­ÙØ¸Ø© - - - &Backup Wallet... - &نسخ احتياط Ù„Ù„Ù…Ø­ÙØ¸Ø© - - - &Change Passphrase... - &تغيير كلمة المرور - - - &Sending addresses... - ارسال العناوين. - - - &Receiving addresses... - استقبال العناوين - - - Open &URI... - Ø§ÙØªØ­ &URI... - - - Bitcoin Core client - عميل bitcion core - - - Importing blocks from disk... - استيراد كتل من القرص ... - - - Reindexing blocks on disk... - إعادة الÙهرسة الكتل على القرص ... - - - Send coins to a Bitcoin address - ارسل عملات الى عنوان بيتكوين - - - Backup wallet to another location - Ø§Ø­ÙØ¸ نسخة احتياطية Ù„Ù„Ù…Ø­ÙØ¸Ø© ÙÙŠ مكان آخر - - - Change the passphrase used for wallet encryption - تغيير كلمة المرور المستخدمة لتشÙير Ø§Ù„Ù…Ø­ÙØ¸Ø© - - - &Debug window - &Ù†Ø§ÙØ°Ø© المعالجة - - - &Verify message... - &التحقق من الرسالة... - - - Bitcoin - بت كوين - - - Wallet - Ù…Ø­ÙØ¸Ø© - - - &Receive - &استقبل - - - Show information about Bitcoin Core - اظهار معلومات حول bitcion core - - - &Show / Hide - &عرض / Ø§Ø®ÙØ§Ø¡ - - - Show or hide the main Window - عرض او Ø§Ø®ÙØ§Ø¡ Ø§Ù„Ù†Ø§ÙØ°Ø© الرئيسية - - - Encrypt the private keys that belong to your wallet - تشÙير Ø§Ù„Ù…ÙØªØ§Ø­ الخاص Ø¨Ù…Ø­ÙØ¸ØªÙƒ - - - &File - &مل٠- - - &Settings - &الاعدادات - - - &Help - &مساعدة - - - Tabs toolbar - شريط أدوات علامات التبويب - - - Bitcoin Core - جوهر البيت كوين - - - &About Bitcoin Core - حول bitcoin core - - - Error - خطأ - - - Warning - تحذير - - - Information - معلومات - - - Up to date - محدث - - - Catching up... - اللحاق بالركب ... - - - Sent transaction - المعاملات المرسلة - - - Incoming transaction - المعاملات الواردة - - - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - Ø§Ù„Ù…Ø­ÙØ¸Ø© <b>Ù…Ø´ÙØ±Ø©</b> Ùˆ <b>Ù…ÙØªÙˆØ­Ø©</b> حاليا - - - Wallet is <b>encrypted</b> and currently <b>locked</b> - Ø§Ù„Ù…Ø­ÙØ¸Ø© <b>Ù…Ø´ÙØ±Ø©</b> Ùˆ <b>مقÙلة</b> حاليا - - - - ClientModel - - Network Alert - تنبيه من الشبكة - - - - CoinControlDialog - - Quantity: - الكمية : - - - Amount: - القيمة : - - - Priority: - Ø§ÙØ¶Ù„ية : - - - Fee: - رسوم : - - - After Fee: - بعد الرسوم : - - - Change: - تعديل : - - - Amount - المبلغ - - - Date - التاريخ - - - Confirmations - تأكيد - - - Confirmed - تأكيد - - - Priority - Ø£ÙØ¶Ù„ية - - - Copy address - انسخ عنوان - - - Copy label - انسخ التسمية - - - Copy amount - نسخ الكمية - - - Copy transaction ID - نسخ رقم العملية - - - Copy quantity - نسخ الكمية - - - Copy fee - نسخ الرسوم - - - Copy after fee - نسخ بعد الرسوم - - - Copy priority - نسخ Ø§Ù„Ø§ÙØ¶Ù„ية - - - Copy change - نسخ التعديل - - - highest - الاعلى - - - higher - اعلى - - - high - عالي - - - medium-high - متوسط-Ù…Ø±ØªÙØ¹ - - - low - Ù…Ù†Ø®ÙØ¶ - - - lower - أدنى - - - lowest - الأدنى - - - none - لا شيء - - - yes - نعم - - - no - لا - - - (no label) - (لا وصÙ) - - - (change) - (تغير) - - - - EditAddressDialog - - Edit Address - عدل العنوان - - - &Label - &وص٠- - - &Address - &العنوان - - - New receiving address - عنوان أستلام جديد - - - New sending address - عنوان إرسال جديد - - - Edit receiving address - تعديل عنوان الأستلام - - - Edit sending address - تعديل عنوان الارسال - - - The entered address "%1" is already in the address book. - هدا العنوان "%1" موجود مسبقا ÙÙŠ Ø¯ÙØªØ± العناوين - - - Could not unlock wallet. - يمكن ÙØªØ­ Ø§Ù„Ù…Ø­ÙØ¸Ø©. - - - New key generation failed. - ÙØ´Ù„ توليد Ù…ÙØªØ§Ø­ جديد. - - - - FreespaceChecker - - A new data directory will be created. - سيتم انشاء دليل بيانات جديد - - - name - الاسم - - - Cannot create data directory here. - لا يمكن انشاء دليل بيانات هنا . - - - - HelpMessageDialog - - Bitcoin Core - جوهر البيت كوين - - - version - النسخة - - - About Bitcoin Core - عن جوهر البيت كوين - - - Usage: - المستخدم - - - - Intro - - Welcome - أهلا - - - Use the default data directory - استخدام دليل البانات Ø§Ù„Ø§ÙØªØ±Ø§Ø¶ÙŠ - - - Use a custom data directory: - استخدام دليل بيانات مخصص: - - - Bitcoin Core - جوهر البيت كوين - - - Error - خطأ - - - - OpenURIDialog - - Select payment request file - حدد مل٠طلب Ø§Ù„Ø¯ÙØ¹ - - - Select payment request file to open - حدد مل٠طلب Ø§Ù„Ø¯ÙØ¹ Ù„ÙØªØ­Ù‡ - - - - OptionsDialog - - Options - خيارات ... - - - &Main - &الرئيسي - - - MB - Ù… ب - - - Accept connections from outside - إقبل التواصل من الخارج - - - Third party transaction URLs - عنوان النطاق للطر٠الثالث - - - &Reset Options - &استعادة الخيارات - - - &Network - &الشبكة - - - W&allet - &Ù…Ø­ÙØ¸Ø© - - - Expert - تصدير - - - Proxy &IP: - بروكسي &اي بي: - - - &Port: - &Ø§Ù„Ù…Ù†ÙØ°: - - - Port of the proxy (e.g. 9050) - Ù…Ù†ÙØ° البروكسي (مثلا 9050) - - - &Window - Ù†Ø§ÙØ°Ù‡ - - - &Display - &عرض - - - User Interface &language: - واجهة المستخدم &اللغة: - - - &OK - تم - - - &Cancel - الغاء - - - default - Ø§Ù„Ø§ÙØªØ±Ø§Ø¶ÙŠ - - - none - لا شيء - - - Confirm options reset - تأكيد استعادة الخيارات - - - The supplied proxy address is invalid. - عنوان الوكيل توÙيره غير صالح. - - - - OverviewPage - - Form - نمودج - - - Available: - Ù…ØªÙˆÙØ± - - - Pending: - معلق: - - - Immature: - غير ناضجة - - - Total: - المجموع: - - - Your current total balance - رصيدك الكلي الحالي - - - - PaymentServer - - - PeerTableModel - - - QObject - - Amount - المبلغ - - - N/A - غير معرو٠- - - - QRImageWidget - - &Save Image... - &Ø­ÙØ¸ الصورة - - - &Copy Image - &نسخ الصورة - - - Save QR Code - Ø­ÙØ¸ رمز الاستجابة السريعة QR - - - PNG Image (*.png) - صورة PNG (*.png) - - - - RPCConsole - - Client name - اسم العميل - - - N/A - غير معرو٠- - - Client version - نسخه العميل - - - &Information - المعلومات - - - General - عام - - - Startup time - وقت البدء - - - Network - الشبكه - - - Name - الاسم - - - Number of connections - عدد الاتصالات - - - Received - إستقبل - - - Sent - تم الإرسال - - - Direction - جهة - - - Services - خدمات - - - Last Send - آخر استقبال - - - Last Receive - آخر إرسال - - - &Open - Ø§Ù„ÙØªØ­ - - - &Network Traffic - &حركة مرور الشبكة - - - &Clear - &مسح - - - Totals - المجاميع - - - In: - داخل: - - - Out: - خارج: - - - Build date - وقت البناء - - - Use up and down arrows to navigate history, and <b>Ctrl-L</b> to clear screen. - استخدم اسهم الاعلى Ùˆ الاسÙÙ„ للتنقل بين السجلات Ùˆ <b>Ctrl-L</b> لمسح الشاشة - - - Unknown - غير معر٠- - - Fetching... - جاري الجلب... - - - - ReceiveCoinsDialog - - &Amount: - &القيمة - - - &Label: - &وص٠: - - - &Message: - &رسالة: - - - Clear all fields of the form. - مسح كل حقول النموذج المطلوبة - - - Clear - مسح - - - Requested payments history - سجل طلبات Ø§Ù„Ø¯ÙØ¹ - - - Show - عرض - - - Remove - ازل - - - Copy label - انسخ التسمية - - - Copy message - انسخ الرسالة - - - Copy amount - نسخ الكمية - - - - ReceiveRequestDialog - - QR Code - رمز كيو ار - - - Copy &URI - نسخ &URI - - - Copy &Address - نسخ &العنوان - - - &Save Image... - &Ø­ÙØ¸ الصورة - - - Payment information - معلومات Ø§Ù„Ø¯ÙØ¹ - - - URI - URI - - - Address - عنوان - - - Amount - المبلغ - - - Label - وص٠- - - Message - رسالة - - - - RecentRequestsTableModel - - Date - التاريخ - - - Label - وص٠- - - Message - رسالة - - - Amount - المبلغ - - - (no label) - (لا وصÙ) - - - (no message) - ( لا رسائل ) - - - - SendCoinsDialog - - Send Coins - إرسال Coins - - - automatically selected - اختيار تلقائيا - - - Insufficient funds! - الرصيد غير كاÙÙŠ! - - - Quantity: - الكمية : - - - Amount: - القيمة : - - - Priority: - Ø§ÙØ¶Ù„ية : - - - Fee: - رسوم : - - - After Fee: - بعد الرسوم : - - - Change: - تعديل : - - - Send to multiple recipients at once - إرسال إلى عدة مستلمين ÙÙŠ وقت واحد - - - Add &Recipient - Ø£Ø¶Ø§ÙØ© &مستلم - - - Clear all fields of the form. - مسح كل حقول النموذج المطلوبة - - - Clear &All - مسح الكل - - - Balance: - الرصيد: - - - Confirm the send action - تأكيد الإرسال - - - S&end - &ارسال - - - Confirm send coins - تأكيد الإرسال Coins - - - Copy quantity - نسخ الكمية - - - Copy amount - نسخ الكمية - - - Copy fee - نسخ الرسوم - - - Copy after fee - نسخ بعد الرسوم - - - Copy priority - نسخ Ø§Ù„Ø§ÙØ¶Ù„ية - - - Copy change - نسخ التعديل - - - or - أو - - - The amount to pay must be larger than 0. - المبلغ المدÙوع يجب ان يكون اكبر من 0 - - - The amount exceeds your balance. - القيمة تتجاوز رصيدك - - - (no label) - (لا وصÙ) - - - - SendCoinsEntry - - Pay &To: - Ø§Ø¯ÙØ¹ &الى : - - - Enter a label for this address to add it to your address book - إدخال تسمية لهذا العنوان Ù„Ø¥Ø¶Ø§ÙØªÙ‡ إلى Ø¯ÙØªØ± العناوين الخاص بك - - - &Label: - &وص٠: - - - Alt+A - Alt+A - - - Paste address from clipboard - انسخ العنوان من لوحة Ø§Ù„Ù…ÙØ§ØªÙŠØ­ - - - Alt+P - Alt+P - - - Message: - الرسائل - - - - ShutdownWindow - - Do not shut down the computer until this window disappears. - لا توق٠عمل الكمبيوتر حتى تختÙÙŠ هذه Ø§Ù„Ù†Ø§ÙØ°Ø© - - - - SignVerifyMessageDialog - - &Sign Message - &توقيع الرسالة - - - Alt+A - Alt+A - - - Paste address from clipboard - انسخ العنوان من لوحة Ø§Ù„Ù…ÙØ§ØªÙŠØ­ - - - Alt+P - Alt+P - - - Enter the message you want to sign here - ادخل الرسالة التي تريد توقيعها هنا - - - Signature - التوقيع - - - Sign the message to prove you own this Bitcoin address - وقع الرسالة لتثبت انك تمتلك عنوان البت كوين هذا - - - Sign &Message - توقيع $الرسالة - - - Clear &All - مسح الكل - - - &Verify Message - &تحقق رسالة - - - Verify &Message - تحقق &الرسالة - - - Click "Sign Message" to generate signature - اضغط "توقيع الرسالة" لتوليد التوقيع - - - The entered address is invalid. - العنوان المدخل غير صالح - - - Please check the address and try again. - الرجاء التأكد من العنوان والمحاولة مرة اخرى - - - The entered address does not refer to a key. - العنوان المدخل لا يشير الى Ù…ÙØªØ§Ø­ - - - Wallet unlock was cancelled. - تم الغاء عملية ÙØªØ­ Ø§Ù„Ù…Ø­ÙØ¸Ø© - - - Private key for the entered address is not available. - Ø§Ù„Ù…ÙØªØ§Ø­ الخاص للعنوان المدخل غير موجود. - - - Message signing failed. - ÙØ´Ù„ توقيع الرسالة. - - - Message signed. - الرسالة موقعة. - - - Please check the signature and try again. - ÙØ¶Ù„ا تاكد من التوقيع وحاول مرة اخرى - - - Message verification failed. - ÙØ´Ù„ت عملية التأكد من الرسالة. - - - Message verified. - تم تأكيد الرسالة. - - - - SplashScreen - - Bitcoin Core - جوهر البيت كوين - - - The Bitcoin Core developers - مطوري جوهر البيت كوين - - - [testnet] - [testnet] - - - - TrafficGraphWidget - - - TransactionDesc - - conflicted - يتعارض - - - %1 confirmations - تأكيد %1 - - - Status - الحالة. - - - Date - التاريخ - - - Source - المصدر - - - Generated - تم اصداره. - - - From - من - - - To - الى - - - own address - عنوانه - - - label - علامة - - - not accepted - غير مقبولة - - - Debit - دين - - - Transaction fee - رسوم المعاملة - - - Message - رسالة - - - Comment - تعليق - - - Transaction ID - رقم المعاملة - - - Merchant - تاجر - - - Transaction - معاملة - - - Amount - المبلغ - - - true - صحيح - - - false - خاطئ - - - , has not been successfully broadcast yet - , لم يتم حتى الآن البث بنجاح - - - unknown - غير معرو٠- - - - TransactionDescDialog - - Transaction details - ØªÙØ§ØµÙŠÙ„ المعاملة - - - This pane shows a detailed description of the transaction - يبين هذا الجزء ÙˆØµÙØ§ Ù…ÙØµÙ„ا لهده المعاملة - - - - TransactionTableModel - - Date - التاريخ - - - Type - النوع - - - This block was not received by any other nodes and will probably not be accepted! - لم يتم تلقى هذه الكتلة (Block) من قبل أي العقد الأخرى وربما لن تكون مقبولة! - - - Generated but not accepted - ولدت ولكن لم تقبل - - - Offline - غير متصل - - - Label - وص٠- - - Received with - استقبل مع - - - Received from - استقبل من - - - Sent to - أرسل إلى - - - Payment to yourself - Ø¯ÙØ¹ Ù„Ù†ÙØ³Ùƒ - - - Mined - Mined - - - (n/a) - غير Ù…ØªÙˆÙØ± - - - Transaction status. Hover over this field to show number of confirmations. - حالة المعاملة. تحوم حول هذا الحقل لعرض عدد التأكيدات. - - - Date and time that the transaction was received. - التاريخ والوقت الذي تم Ùيه تلقي المعاملة. - - - Type of transaction. - نوع المعاملات - - - Amount removed from or added to balance. - المبلغ الذي أزيل أو أضي٠الى الرصيد - - - - TransactionView - - All - الكل - - - Today - اليوم - - - This week - هدا الاسبوع - - - This month - هدا الشهر - - - Last month - الشهر الماضي - - - This year - هدا العام - - - Range... - المدى... - - - Received with - استقبل مع - - - Sent to - أرسل إلى - - - To yourself - إليك - - - Mined - Mined - - - Other - اخرى - - - Enter address or label to search - ادخل عنوان أووص٠للبحث - - - Min amount - الحد الأدنى - - - Copy address - انسخ عنوان - - - Copy label - انسخ التسمية - - - Copy amount - نسخ الكمية - - - Copy transaction ID - نسخ رقم العملية - - - Edit label - عدل الوص٠- - - Show transaction details - عرض ØªÙØ§ØµÙŠÙ„ المعاملة - - - Exporting Failed - ÙØ´Ù„ التصدير - - - Exporting Successful - نجح التصدير - - - Comma separated file (*.csv) - Ù…Ù„Ù Ù…ÙØµÙˆÙ„ بÙواصل (*.csv) - - - Confirmed - تأكيد - - - Date - التاريخ - - - Type - النوع - - - Label - وص٠- - - Address - عنوان - - - ID - العنوان - - - Range: - المدى: - - - to - الى - - - - UnitDisplayStatusBarControl - - - WalletFrame - - - WalletModel - - Send Coins - إرسال Coins - - - - WalletView - - &Export - &تصدير - - - Export the data in the current tab to a file - تحميل البيانات ÙÙŠ علامة التبويب الحالية إلى ملÙ. - - - Backup Wallet - نسخ احتياط Ù„Ù„Ù…Ø­ÙØ¸Ø© - - - Backup Failed - ÙØ´Ù„ النسخ الاحتياطي - - - Backup Successful - نجاح النسخ الاحتياطي - - - - bitcoin-core - - Options: - خيارات: - - - Specify data directory - حدد مجلد المعلومات - - - Use the test network - استخدم التحقق من الشبكه - - - Accept connections from outside (default: 1 if no -proxy or -connect) - قبول الاتصالات من خارج - - - Error: Disk space is low! - تحذير: مساحة القرص Ù…Ù†Ø®ÙØ¶Ø© - - - Failed to listen on any port. Use -listen=0 if you want this. - ÙØ´Ù„ ÙÙŠ الاستماع على أي Ù…Ù†ÙØ°. استخدام الاستماع = 0 إذا كنت تريد هذا. - - - Invalid -onion address: '%s' - عنوان اونيون غير صحيح : '%s' - - - Verifying wallet... - التحقق من Ø§Ù„Ù…Ø­ÙØ¸Ø© ... - - - Wallet options: - خيارات Ø§Ù„Ù…Ø­ÙØ¸Ø© : - - - Information - معلومات - - - Signing transaction failed - ÙØ´Ù„ توقيع المعاملة - - - Transaction amount too small - قيمة العملية صغيره جدا - - - Transaction amounts must be positive - يجب ان يكون قيمة العملية بالموجب - - - Transaction too large - المعاملة طويلة جدا - - - Warning - تحذير - - - Upgrade wallet to latest format - تحديث Ø§Ù„Ù…Ø­ÙØ¸Ø© للنسخة الاخيرة - - - This help message - رسالة المساعدة هذه - - - Loading addresses... - تحميل العنوان - - - Error loading wallet.dat: Wallet corrupted - خطأ عند تنزيل wallet.dat: Ø§Ù„Ù…Ø­ÙØ¸Ø© ØªØ§Ù„ÙØ© - - - Error loading wallet.dat - خطأ عند تنزيل wallet.dat - - - Invalid -proxy address: '%s' - عنوان البروكسي غير صحيح : '%s' - - - Insufficient funds - اموال غير كاÙية - - - Loading wallet... - تحميل Ø§Ù„Ù…Ø­ÙØ¸Ù‡ - - - Cannot write default address - لايمكن كتابة العنوان Ø§Ù„Ø§ÙØªØ±Ø§Ø¶ÙŠ - - - Rescanning... - إعادة مسح - - - Done loading - انتهاء التحميل - - - Error - خطأ - - - \ No newline at end of file diff --git a/src/qt/locale/bitcoin_be_BY.ts b/src/qt/locale/bitcoin_be_BY.ts deleted file mode 100644 index bfaff0fdb..000000000 --- a/src/qt/locale/bitcoin_be_BY.ts +++ /dev/null @@ -1,1536 +0,0 @@ - - - AddressBookPage - - Right-click to edit address or label - Правы клік, каб Ñ€Ñдагаваць Ð°Ð´Ñ€Ð°Ñ Ñ†Ñ– метку - - - Create a new address - Стварыць новы Ð°Ð´Ñ€Ð°Ñ - - - &New - Ðовы - - - Copy the currently selected address to the system clipboard - КапіÑваць пазначаны Ð°Ð´Ñ€Ð°Ñ Ñƒ ÑÑ–ÑÑ‚Ñмны буфер абмену - - - &Copy - КапіÑваць - - - C&lose - Зачыніць - - - &Copy Address - КапіÑваць Ð°Ð´Ñ€Ð°Ñ - - - Delete the currently selected address from the list - Выдаліць абраны Ð°Ð´Ñ€Ð°Ñ Ñа ÑпіÑу - - - Export the data in the current tab to a file - ЭкÑпартаваць гÑÑ‚Ñ‹Ñ Ð·Ð²ÐµÑткі у файл - - - &Export - ЭкÑпарт - - - &Delete - Выдаліць - - - Choose the address to send coins to - Выбраць адраÑ, куды выÑлаць Ñродкі - - - Choose the address to receive coins with - Выбраць адраÑ, на Ñкі атрымаць Ñродкі - - - C&hoose - Выбраць - - - Sending addresses - адраÑÑ‹ Ðдпраўкі - - - Receiving addresses - адраÑÑ‹ ÐŸÑ€Ñ‹Ð¼Ð°Ð½Ð½Ñ - - - These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins. - Тут знаходзÑцца Біткойн-адраÑÑ‹ Ð´Ð»Ñ Ð²Ñ‹ÑÑ‹Ð»Ð°Ð½Ð½Ñ Ð¿Ð»Ð°Ñ†Ñжоў. ЗаўÑёды Ñпраўджвайце колькаÑць Ñ– Ð°Ð´Ñ€Ð°Ñ Ð¿Ñ€Ñ‹Ð·Ð½Ð°Ñ‡ÑÐ½Ð½Ñ Ð¿ÐµÑ€Ð°Ð´ здзÑйÑненнем транзакцыі. - - - These are your Bitcoin addresses for receiving payments. It is recommended to use a new receiving address for each transaction. - Тут знаходзÑцца Біткойн-адраÑÑ‹ Ð´Ð»Ñ Ð¿Ñ€Ñ‹Ð¼Ð°Ð½Ð½Ñ Ð¿Ð»Ð°Ñ†Ñжоў. Пажадана выкарыÑтоўваць новы Ð°Ð´Ñ€Ð°Ñ Ð´Ð»Ñ ÐºÐ¾Ð¶Ð½Ð°Ð¹ транзакцыі. - - - Copy &Label - КапіÑваць Метку - - - &Edit - РÑдагаваць - - - Export Address List - ЭкÑпартаваць Ð¡Ð¿Ñ–Ñ ÐдраÑоў - - - Comma separated file (*.csv) - КоÑкамі падзелены файл (*.csv) - - - Exporting Failed - ЭкÑпартаванне нÑўдалае - - - There was an error trying to save the address list to %1. Please try again. - ÐдбылаÑÑ Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ° Ð¿Ð°Ð´Ñ‡Ð°Ñ Ñпробы захаваць Ð°Ð´Ñ€Ð°Ñ Ñƒ %1. ПаÑпрабуйце зноў. - - - - AddressTableModel - - Label - Метка - - - Address - ÐÐ´Ñ€Ð°Ñ - - - (no label) - непазначаны - - - - AskPassphraseDialog - - Passphrase Dialog - ДыÑлог ÑакрÑтнай фразы - - - Enter passphrase - УвÑдзіце кодавую фразу - - - New passphrase - ÐÐ¾Ð²Ð°Ñ ÐºÐ¾Ð´Ð°Ð²Ð°Ñ Ñ„Ñ€Ð°Ð·Ð° - - - Repeat new passphrase - Паўтарыце новую кодавую фразу - - - Encrypt wallet - Зашыфраваць гаманец. - - - This operation needs your wallet passphrase to unlock the wallet. - ГÑÑ‚Ð°Ñ Ð°Ð¿ÐµÑ€Ð°Ñ†Ñ‹Ñ Ð¿Ð°Ñ‚Ñ€Ð°Ð±ÑƒÐµ кодавую фразу, каб рзблакаваць гаманец. - - - Unlock wallet - Разблакаваць гаманец - - - This operation needs your wallet passphrase to decrypt the wallet. - ГÑÑ‚Ð°Ñ Ð°Ð¿ÐµÑ€Ð°Ñ†Ñ‹Ñ Ð¿Ð°Ñ‚Ñ€Ð°Ð±ÑƒÐµ пароль каб раÑшыфраваць гаманец. - - - Decrypt wallet - Рачшыфраваць гаманец - - - Change passphrase - ЗмÑніць пароль - - - Confirm wallet encryption - Пацвердзіце шыфраванне гаманца - - - Warning: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR BITCOINS</b>! - Увага: калі вы зашыфруеце Ñвой гаманец Ñ– Ñтраціце парольную фразу, то <b>СТРÐЦІЦЕ ЎСЕ СВÐЕ БІТКОЙÐЫ</b>! - - - Are you sure you wish to encrypt your wallet? - Ці ўпÑÑžÐ½ÐµÐ½Ñ‹Ñ Ð²Ñ‹, што жадаеце зашыфраваць Ñвой гаманец? - - - Bitcoin Core 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. - Bitcoin Core зараз будзе зачынены, каб фіналізаваць працÑÑ ÑˆÑ‹Ñ„Ñ€Ð°Ð²Ð°Ð½Ð½Ñ. ПамÑтайце, што шыфраванне вашага гаманца не гарантуе абÑалютную абарону ад магчымаÑці крадзÑжу біткойнаў шкоднымі праграмамі, ÑÐºÑ–Ñ Ð¼Ð¾Ð³ÑƒÑ†ÑŒ інфікаваць ваш камп'ютар. - - - 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. - Ð’ÐЖÐÐ: УÑе папÑÑ€ÑÐ´Ð½Ñ–Ñ ÐºÐ¾Ð¿Ñ–Ñ– гаманца варта замÑніць новым зашыфраваным файлам. У мÑтах бÑÑпекі папÑÑ€ÑÐ´Ð½Ñ–Ñ ÐºÐ¾Ð¿Ñ–Ñ– незашыфраванага файла-гаманца Ñтануць неўжывальнымі, калі вы Ñтанеце карыÑтацца новым зашыфраваным гаманцом. - - - Warning: The Caps Lock key is on! - Увага: Caps Lock уключаны! - - - Wallet encrypted - Гаманец зашыфраваны - - - 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>. - УвÑдзіце новы пароль Ð´Ð»Ñ Ð³Ð°Ð¼Ð°Ð½Ñ†Ð°.<br/>ÐŸÐ°Ñ€Ð¾Ð»ÑŒÐ½Ð°Ñ Ñ„Ñ€Ð°Ð·Ð° павинна Ñкладацца<b> не меньш чым з дзеÑÑці Ñімвалаў</b>, ці <b>больш чым з ваÑьмі Ñлоў</b>. - - - Enter the old passphrase and new passphrase to the wallet. - УвÑдзіце Ñтары пароль Ñ– новы пароль Ð´Ð»Ñ Ð³Ð°Ð¼Ð°Ð½Ñ†Ð°. - - - Wallet encryption failed - Шыфраванне гаманца нÑўдалае - - - Wallet encryption failed due to an internal error. Your wallet was not encrypted. - Шыфраванне гаманца не адбылоÑÑ Ð·-за ўнутранай памылкі. Гаманец незашыфраваны. - - - The supplied passphrases do not match. - Ð£Ð²ÐµÐ´Ð´Ð·ÐµÐ½Ñ‹Ñ Ð¿Ð°Ñ€Ð¾Ð»Ñ– не Ñупадаюць - - - Wallet unlock failed - Разблакаванне гаманца нÑўдалае - - - The passphrase entered for the wallet decryption was incorrect. - Уведзены пароль Ð´Ð»Ñ Ñ€Ð°ÑÑˆÑ‹Ñ„Ñ€Ð°Ð²Ð°Ð½Ð½Ñ Ð³Ð°Ð¼Ð°Ð½Ñ†Ð° памылковы - - - Wallet decryption failed - РаÑшыфраванне гаманца нÑўдалае - - - Wallet passphrase was successfully changed. - ÐŸÐ°Ñ€Ð¾Ð»ÑŒÐ½Ð°Ñ Ñ„Ñ€Ð°Ð·Ð° гаманца паÑпÑхова зменена. - - - - BitcoinGUI - - Sign &message... - ПадпіÑаць паведамленне... - - - Synchronizing with network... - Ð¡Ñ–Ð½Ñ…Ñ€Ð°Ð½Ñ–Ð·Ð°Ñ†Ñ‹Ñ Ð· Ñецівам... - - - &Overview - ÐглÑд - - - Node - Вузел - - - Show general overview of wallet - Паказвае Ð°Ð³ÑƒÐ»ÑŒÐ½Ñ‹Ñ Ð·Ð²ÐµÑткі аб гаманцы - - - &Transactions - Транзакцыі - - - Browse transaction history - ПраглÑдзець гіÑторыю транзакцый - - - E&xit - ВыйÑці - - - Quit application - ВыйÑці з праграмы - - - About &Qt - Ðб Qt - - - Show information about Qt - Паказаць інфармацыю аб Qt - - - &Options... - Опцыі... - - - &Encrypt Wallet... - Зашыфраваць Гаманец... - - - &Backup Wallet... - Стварыць копію гаманца... - - - &Change Passphrase... - &Change Passphrase... - - - &Sending addresses... - ÐдраÑÑ‹ даÑыланнÑ... - - - &Receiving addresses... - ÐдраÑÑ‹ прыманнÑ... - - - Open &URI... - Ðдчыниць &URI... - - - Bitcoin Core client - Bitcoin Core кліент - - - Importing blocks from disk... - Імпартуюцца блокі з дыÑку... - - - Reindexing blocks on disk... - ПераіндÑкÑÐ°Ñ†Ñ‹Ñ Ð±Ð»Ð¾ÐºÐ°Ñž на дыÑку... - - - Send coins to a Bitcoin address - ДаÑлаць манеты на Біткойн-Ð°Ð´Ñ€Ð°Ñ - - - Backup wallet to another location - Зрабіце копію гаманца Ñž іншае меÑца - - - Change the passphrase used for wallet encryption - ЗмÑніць пароль ÑˆÑ‹Ñ„Ñ€Ð°Ð²Ð°Ð½Ð½Ñ Ð³Ð°Ð¼Ð°Ð½Ñ†Ð° - - - &Debug window - Вакно адладкі - - - Open debugging and diagnostic console - Ðдкрыць канÑоль дыÑгноÑтыкі Ñ– адладкі - - - &Verify message... - Праверыць паведамленне... - - - Bitcoin - Біткойн - - - Wallet - Гаманец - - - &Send - ДаÑлаць - - - &Receive - Ðтрымаць - - - Show information about Bitcoin Core - Паказаць інфармацыю аб Bitcoin Core - - - &Show / Hide - &Паказаць / Схаваць - - - Show or hide the main Window - Паказаць альбо Ñхаваць галоўнае вакно - - - Encrypt the private keys that belong to your wallet - Зашыфраваць Ð¿Ñ€Ñ‹Ð²Ð°Ñ‚Ð½Ñ‹Ñ ÐºÐ»ÑŽÑ‡Ñ‹, ÑÐºÐ¸Ñ Ð½Ð°Ð»ÐµÐ¶Ð°Ñ†ÑŒ вашаму гаманцу - - - Sign messages with your Bitcoin addresses to prove you own them - ПадпіÑаць паведамленне з дапамогай Біткойн-адраÑа каб даказаць, што Ñно належыць вам - - - Verify messages to ensure they were signed with specified Bitcoin addresses - Спраўдзіць паведамленне з дапамогай Біткойн-адраÑа каб даказаць, што Ñно належыць вам - - - &File - Ф&айл - - - &Settings - Ðаладкі - - - &Help - Дапамога - - - Bitcoin Core - Bitcoin Core - - - Request payments (generates QR codes and bitcoin: URIs) - Запатрабаваць плацёж (генеруецца QR-код Ð´Ð»Ñ Ð±Ñ–Ñ‚ÐºÐ¾Ð¹Ð½ URI) - - - &About Bitcoin Core - Ðб Bitcoin Core - - - Modify configuration options for Bitcoin Core - Мадыфікаваць опцыі канфігурацыі Bitcoin Core - - - Show the list of used sending addresses and labels - Паказаць ÑÐ¿Ñ–Ñ Ð°Ð´Ñ€Ð°Ñоў Ñ– метак Ð´Ð»Ñ Ð´Ð°ÑÑ‹Ð»Ð°Ð½Ð½Ñ - - - Show the list of used receiving addresses and labels - Паказаць ÑÐ¿Ñ–Ñ Ð°Ð´Ñ€Ð°Ñоў Ñ– метак Ð´Ð»Ñ Ð¿Ñ€Ñ‹Ð¼Ð°Ð½Ð½Ñ - - - Open a bitcoin: URI or payment request - Ðдкрыць біткойн: URI ці запыт плацÑжу - - - &Command-line options - Опцыі каманднага радка - - - Show the Bitcoin Core help message to get a list with possible Bitcoin command-line options - Паказваць даведку Bitcoin Core каб атрымаць ÑÐ¿Ñ–Ñ Ð¼Ð°Ð³Ñ‡Ñ‹Ð¼Ñ‹Ñ… опцый каманднага радка - - - %n active connection(s) to Bitcoin network - %n актыўнае злучÑнне з Ñецівам Bitcoin%n актыўных злучÑннÑÑž з Ñецівам Bitcoin%n актыўных злучÑннÑÑž з Ñецівам Bitcoin%n актыўных злучÑннÑÑž з Ñецівам Bitcoin - - - No block source available... - Крыніца блокаў недаÑÑжнаÑ... - - - Processed %n block(s) of transaction history. - Ðпрацаваны %n блок гіÑторыі транзакцый.Ðпрацавана %n блокі гіÑторыі транзакцый.Ðпрацавана %n блокаў гіÑторыі транзакцый.Ðпрацавана %n блокаў гіÑторыі транзакцый. - - - %n hour(s) - %n гадзіна%n гадзіны%n гадзін%n гадзін - - - %n day(s) - %n дзень%n дні%n дзён%n дзён - - - %n week(s) - %n тыдзень%n тыдні%n тыднÑÑž%n тыднÑÑž - - - %1 and %2 - %1 Ñ– %2 - - - %n year(s) - %n год%n гады%n гадоў%n гадоў - - - %1 behind - %1 таму - - - Last received block was generated %1 ago. - Ðпошні прынÑты блок генераваны %1 таму. - - - Transactions after this will not yet be visible. - Транзакцыи паÑÐ»Ñ Ð³Ñтай не будуць бачныÑ. - - - Error - Памылка - - - Warning - Увага - - - Information - Ð†Ð½Ñ„Ð°Ñ€Ð¼Ð°Ñ†Ñ‹Ñ - - - Up to date - Сінхранізавана - - - Catching up... - ÐаганÑем... - - - Date: %1 - - Дата: %1 - - - - Amount: %1 - - КолькаÑць: %1 - - - - Type: %1 - - Тып: %1 - - - - Label: %1 - - Метка: %1 - - - - Address: %1 - - ÐдраÑ: %1 - - - - Sent transaction - ДаÑÐ»Ð°Ð½Ñ‹Ñ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ñ‹Ñ– - - - Incoming transaction - ПрынÑÑ‚Ñ‹Ñ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ñ‹Ñ– - - - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - Гаманец <b>зашыфраваны</b> Ñ– зараз <b>разблакаваны</b> - - - Wallet is <b>encrypted</b> and currently <b>locked</b> - Гаманец <b>зашыфраваны</b> Ñ– зараз <b>заблакаваны</b> - - - - ClientModel - - Network Alert - Трывога Сеціва - - - - CoinControlDialog - - Quantity: - КолькаÑць: - - - Bytes: - Байтаў: - - - Amount: - КолькаÑць: - - - Priority: - ПрыÑрытÑÑ‚: - - - Fee: - КаміÑÑ–Ñ: - - - Dust: - Пыл: - - - After Fee: - ПаÑÐ»Ñ ÐºÐ°Ð¼Ñ–ÑÑ–Ñ–: - - - (un)select all - (не)выбраць ÑžÑÑ‘ - - - Tree mode - РÑжым дрÑва - - - List mode - РÑжым ÑпіÑа - - - Amount - КолькаÑць - - - Received with label - ПрынÑць праз метку - - - Received with address - ПрынÑць праз Ð°Ð´Ñ€Ð°Ñ - - - Date - Дата - - - Confirmations - ПацверджаннÑÑž - - - Confirmed - Пацверджана - - - Priority - ПрыÑрытÑÑ‚ - - - Copy address - КапіÑваць Ð°Ð´Ñ€Ð°Ñ - - - Copy label - КапіÑваць пазнаку - - - Copy amount - КапіÑваць колькаÑць - - - Copy transaction ID - КапіÑваць ID транзакцыі - - - Lock unspent - Замкнуць непатрачанае - - - Unlock unspent - Ðдамкнуць непатрачанае - - - Copy quantity - КапіÑваць колькаÑць - - - Copy fee - КапіÑваць каміÑÑ–ÑŽ - - - Copy after fee - КапіÑваць з вынÑткам каміÑÑ–Ñ– - - - Copy bytes - КапіÑваць байты - - - Copy priority - КапіÑваць прыÑрытÑÑ‚ - - - Copy dust - КапіÑваць пыл - - - highest - найвышÑйшы - - - higher - вышÑйшы - - - high - выÑокі - - - medium-high - вышÑй ÑÑÑ€ÑднÑга - - - medium - ÑÑÑ€Ñдні - - - low-medium - ніжÑй ÑÑÑ€ÑднÑга - - - low - нізкі - - - lower - ніжÑйшы - - - lowest - найніжÑйшы - - - yes - так - - - no - не - - - This means a fee of at least %1 per kB is required. - ГÑта значыць патрÑбную каміÑÑ–ÑŽ мінімум %1 на Кб. - - - Transactions with higher priority are more likely to get included into a block. - Ð¢Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ñ‹Ñ Ð±Ð¾Ð»ÑŒÑˆÐ°Ð³Ð° прыÑрытÑту больш Ð¿Ñ€Ñ‹Ð²Ð°Ð±Ð»Ñ–Ð²Ð°Ñ Ð´Ð»Ñ ÑžÐºÐ»ÑŽÑ‡ÑÐ½Ð½Ñ Ñž блок. - - - (no label) - непазначаны - - - - EditAddressDialog - - Edit Address - РÑдагаваць ÐÐ´Ñ€Ð°Ñ - - - &Label - Метка - - - &Address - ÐÐ´Ñ€Ð°Ñ - - - New receiving address - Ðовы Ð°Ð´Ñ€Ð°Ñ Ð´Ð»Ñ Ð°Ñ‚Ñ€Ñ‹Ð¼Ð°Ð½Ð½Ñ - - - New sending address - Ðовы Ð°Ð´Ñ€Ð°Ñ Ð´Ð»Ñ Ð´Ð°ÑÑ‹Ð»Ð°Ð½Ð½Ñ - - - Edit receiving address - РÑдагаваць Ð°Ð´Ñ€Ð°Ñ Ð¿Ñ€Ñ‹Ð¼Ð°Ð½Ð½Ñ - - - Edit sending address - РÑдагаваць Ð°Ð´Ñ€Ð°Ñ Ð´Ð°ÑÑ‹Ð»Ð°Ð½Ð½Ñ - - - The entered address "%1" is already in the address book. - Уведзены Ð°Ð´Ñ€Ð°Ñ "%1" ужо Ñž кніге адраÑоў - - - Could not unlock wallet. - Ðемагчыма разблакаваць гаманец - - - New key generation failed. - Ð“ÐµÐ½ÐµÑ€Ð°Ñ†Ñ‹Ñ Ð½Ð¾Ð²Ð°Ð³Ð° ключа нÑÑžÐ´Ð°Ð»Ð°Ñ - - - - FreespaceChecker - - A new data directory will be created. - Будзе Ñтвораны новы каталог з данымі. - - - name - Ñ–Ð¼Ñ - - - Directory already exists. Add %1 if you intend to create a new directory here. - Каталог ужо Ñ–Ñнуе. Дадайце %1 калі вы збіраецеÑÑ Ñтварыць тут новы каталог. - - - - HelpMessageDialog - - Bitcoin Core - Bitcoin Core - - - (%1-bit) - (%1-біт) - - - About Bitcoin Core - Ðб Bitcoin Core - - - Command-line options - Опцыі каманднага радка - - - Usage: - Ужыванне: - - - command-line options - опцыі каманднага радка - - - - Intro - - Welcome - Вітаем - - - Welcome to Bitcoin Core. - Вітаем у Bitcoin Core. - - - Bitcoin Core - Bitcoin Core - - - Error - Памылка - - - %n GB of free space available - %n Гб вольнага меÑца даÑтупна%n Гб вольнага меÑца даÑтупна%n Гб вольнага меÑца даÑтупна%n Гб вольнага меÑца даÑтупна - - - (of %n GB needed) - (з %n Гб патрÑбна)(з %n Гб патрÑбна)(з %n Гб патрÑбна)(з %n Гб патрÑбна) - - - - OpenURIDialog - - Open URI - Ðдкрыць URI - - - - OptionsDialog - - Options - Опцыі - - - MB - Мб - - - - OverviewPage - - Form - Форма - - - - PaymentServer - - - PeerTableModel - - - QObject - - Amount - КолькаÑць - - - - QRImageWidget - - - RPCConsole - - - ReceiveCoinsDialog - - &Label: - Метка: - - - Copy label - КапіÑваць пазнаку - - - Copy amount - КапіÑваць колькаÑць - - - - ReceiveRequestDialog - - Address - ÐÐ´Ñ€Ð°Ñ - - - Amount - КолькаÑць - - - Label - Метка - - - Message - Паведамленне - - - - RecentRequestsTableModel - - Date - Дата - - - Label - Метка - - - Message - Паведамленне - - - Amount - КолькаÑць - - - (no label) - непазначаны - - - - SendCoinsDialog - - Send Coins - ДаÑлаць Манеты - - - Quantity: - КолькаÑць: - - - Bytes: - Байтаў: - - - Amount: - КолькаÑць: - - - Priority: - ПрыÑрытÑÑ‚: - - - Fee: - КаміÑÑ–Ñ: - - - After Fee: - ПаÑÐ»Ñ ÐºÐ°Ð¼Ñ–ÑÑ–Ñ–: - - - Send to multiple recipients at once - ДаÑлаць адразу некалькім атрымальнікам - - - Dust: - Пыл: - - - Balance: - БаланÑ: - - - Confirm the send action - Пацвердзіць даÑыланне - - - Confirm send coins - Пацвердзіць даÑыланне манет - - - Copy quantity - КапіÑваць колькаÑць - - - Copy amount - КапіÑваць колькаÑць - - - Copy fee - КапіÑваць каміÑÑ–ÑŽ - - - Copy after fee - КапіÑваць з вынÑткам каміÑÑ–Ñ– - - - Copy bytes - КапіÑваць байты - - - Copy priority - КапіÑваць прыÑрытÑÑ‚ - - - The amount to pay must be larger than 0. - Ð’ÐµÐ»Ñ–Ñ‡Ñ‹Ð½Ñ Ð¿Ð»Ð°Ñ†Ñжу мае быць больш за 0. - - - (no label) - непазначаны - - - Copy dust - КапіÑваць пыл - - - - SendCoinsEntry - - A&mount: - КолькаÑць: - - - Pay &To: - Заплаціць да: - - - Enter a label for this address to add it to your address book - УвÑдзіце пазнаку гÑтаму адраÑу, каб дадаць Ñго Ñž адраÑную кнігу - - - &Label: - Метка: - - - Alt+A - Alt+A - - - Paste address from clipboard - УÑтавіць Ð°Ð´Ñ€Ð°Ñ Ð· буферу абмена - - - Alt+P - Alt+P - - - Memo: - ПамÑтка: - - - - ShutdownWindow - - - SignVerifyMessageDialog - - Alt+A - Alt+A - - - Paste address from clipboard - УÑтавіць Ð°Ð´Ñ€Ð°Ñ Ð· буферу абмена - - - Alt+P - Alt+P - - - - SplashScreen - - Bitcoin Core - Bitcoin Core - - - The Bitcoin Core developers - РаÑпрацоўнікі Bitcoin Core - - - [testnet] - [testnet] - - - - TrafficGraphWidget - - KB/s - Кб/Ñ - - - - TransactionDesc - - %1/offline - %1/offline - - - %1/unconfirmed - %1/непацверджана - - - %1 confirmations - %1 пацверджаннÑÑž - - - Status - Ð¡Ñ‚Ð°Ñ‚ÑƒÑ - - - Date - Дата - - - Message - Паведамленне - - - Comment - Каментар - - - Transaction ID - ID - - - Amount - КолькаÑць - - - , has not been successfully broadcast yet - , пакуль не было паÑпÑхова транÑлÑвана - - - unknown - невÑдома - - - - TransactionDescDialog - - Transaction details - ДÑталі транзакцыі - - - This pane shows a detailed description of the transaction - ГÑÑ‚Ð°Ñ Ð¿Ð°Ð½Ñль паказвае дÑтальнае апіÑанне транзакцыі - - - - TransactionTableModel - - Date - Дата - - - Type - Тып - - - Confirmed (%1 confirmations) - Пацверджана (%1 пацверджаннÑÑž) - - - This block was not received by any other nodes and will probably not be accepted! - ГÑты блок не быў прынÑты іншымі вузламі Ñ– магчыма не будзе ўхвалены! - - - Generated but not accepted - Згенеравана, але не прынÑта - - - Label - Метка - - - Received with - ПрынÑта з - - - Received from - ПрынÑта ад - - - Sent to - ДаÑлана да - - - Payment to yourself - Плацёж Ñамому Ñабе - - - Mined - Здабыта - - - (n/a) - (n/a) - - - Transaction status. Hover over this field to show number of confirmations. - Ð¡Ñ‚Ð°Ñ‚ÑƒÑ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ñ‹Ñ–. ÐавÑдзіце курÑар на гÑтае поле, каб паказаць колькаÑць пацверджаннÑÑž. - - - Date and time that the transaction was received. - Дата Ñ– чаÑ, калі Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ñ‹Ñ Ð±Ñ‹Ð»Ð° прынÑта. - - - Type of transaction. - Тып транзакцыі - - - Amount removed from or added to balance. - КолькаÑць аднÑÑ‚Ð°Ñ Ñ†Ñ– Ð´Ð°Ð´Ð°Ð½Ð°Ñ Ð´Ð° баланÑу. - - - - TransactionView - - All - УÑÑ‘ - - - Today - Ð¡Ñ‘Ð½Ð½Ñ - - - This week - ГÑты тыдзень - - - This month - ГÑты меÑÑц - - - Last month - Мінулы меÑÑц - - - This year - ГÑты год - - - Range... - Прамежак... - - - Received with - ПрынÑта з - - - Sent to - ДаÑлана да - - - To yourself - Да ÑÑбе - - - Mined - Здабыта - - - Other - Ð†Ð½ÑˆÑ‹Ñ - - - Enter address or label to search - УвÑдзіце Ð°Ð´Ñ€Ð°Ñ Ñ†Ñ– пазнаку Ð´Ð»Ñ Ð¿Ð¾ÑˆÑƒÐºÑƒ - - - Min amount - Мін. колькаÑць - - - Copy address - КапіÑваць Ð°Ð´Ñ€Ð°Ñ - - - Copy label - КапіÑваць пазнаку - - - Copy amount - КапіÑваць колькаÑць - - - Copy transaction ID - КапіÑваць ID транзакцыі - - - Edit label - РÑдагаваць пазнаку - - - Exporting Failed - ЭкÑпартаванне нÑўдалае - - - Comma separated file (*.csv) - КоÑкамі падзелены файл (*.csv) - - - Confirmed - Пацверджана - - - Date - Дата - - - Type - Тып - - - Label - Метка - - - Address - ÐÐ´Ñ€Ð°Ñ - - - ID - ID - - - Range: - Прамежак: - - - to - да - - - - UnitDisplayStatusBarControl - - - WalletFrame - - - WalletModel - - Send Coins - ДаÑлаць Манеты - - - - WalletView - - &Export - ЭкÑпарт - - - Export the data in the current tab to a file - ЭкÑпартаваць гÑÑ‚Ñ‹Ñ Ð·Ð²ÐµÑткі у файл - - - - bitcoin-core - - Options: - Опцыі: - - - Specify data directory - Вызначыць каталог даных - - - Accept command line and JSON-RPC commands - Прымаць камандны радок Ñ– JSON-RPC каманды - - - Run in the background as a daemon and accept commands - ЗапуÑціць у фоне Ñк дÑман Ñ– прымаць каманды - - - Use the test network - Ужываць Ñ‚ÑÑтавае Ñеціва - - - Do you want to rebuild the block database now? - Ці жадаеце вы перабудаваць зараз базу звеÑтак блокаў? - - - Error initializing block database - Памылка ініцыÑлізацыі базвы звеÑтак блокаў - - - Error initializing wallet database environment %s! - Памалка ініцыÑлізацыі аÑÑÑ€Ð¾Ð´Ð´Ð·Ñ Ð±Ð°Ð·Ñ‹ звеÑтак гаманца %s! - - - Error loading block database - Памылка загрузкі базвы звеÑтак блокаў - - - Error opening block database - Памылка Ð°Ð´Ñ‡Ñ‹Ð½ÐµÐ½Ð½Ñ Ð±Ð°Ð·Ñ‹ звеÑтак блокаў - - - Error: Disk space is low! - Памылка: Замала вольнага меÑца на дыÑку! - - - Importing... - Імпартаванне... - - - Not enough file descriptors available. - Ðе хапае файлавых дÑÑкрыптараў. - - - Use UPnP to map the listening port (default: %u) - Use UPnP to map the listening port (default: %u) - - - Verifying blocks... - Праверка блокаў... - - - Verifying wallet... - Праверка гаманца... - - - Wallet options: - Опцыі гаманца: - - - Imports blocks from external blk000??.dat file - Імпартаванне блокаў з вонкавага blk000??.dat файла - - - Activating best chain... - ÐÐºÑ‚Ñ‹Ð²Ð°Ñ†Ñ‹Ñ Ð»ÐµÐ¿ÑˆÐ°Ð³Ð° ланцуга... - - - Information - Ð†Ð½Ñ„Ð°Ñ€Ð¼Ð°Ñ†Ñ‹Ñ - - - RPC server options: - Опцыі RPC Ñервера: - - - Send trace/debug info to console instead of debug.log file - Слаць trace/debug звеÑткі Ñž канÑоль замеÑÑ‚ файла debug.log - - - Signing transaction failed - Памылка подпіÑу транзакцыі - - - Start minimized - Стартаваць ммінімізаванай - - - This is experimental software. - ГÑта ÑкÑÐ¿ÐµÑ€Ñ‹Ð¼ÐµÐ½Ñ‚Ð°Ð»ÑŒÐ½Ð°Ñ Ð¿Ñ€Ð°Ð³Ñ€Ð°Ð¼Ð°. - - - Transaction amount too small - Ð¢Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ñ‹Ñ Ð·Ð°Ð½Ð°Ð´Ñ‚Ð° Ð¼Ð°Ð»Ð°Ñ - - - Transaction too large - Ð¢Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ñ‹Ñ Ð·Ð°Ð½Ð°Ð´Ñ‚Ð° вÑÐ»Ñ–ÐºÐ°Ñ - - - Username for JSON-RPC connections - Ð†Ð¼Ñ ÐºÐ°Ñ€Ñ‹Ñтальника Ð´Ð»Ñ JSON-RPC злучÑннÑÑž - - - Warning - Увага - - - Password for JSON-RPC connections - Пароль Ð´Ð»Ñ JSON-RPC злучÑннÑÑž - - - Execute command when the best block changes (%s in cmd is replaced by block hash) - Выканаць каманду калі лепшы блок зменіцца (%s замÑнÑецца на Ñ…Ñш блока) - - - Upgrade wallet to latest format - Ðбнавіць гаманец на новы фармат - - - Rescan the block chain for missing wallet transactions - ПераÑканаваць ланцуг блокаў Ð´Ð·ÐµÐ»Ñ Ð¿Ð¾ÑˆÑƒÐºÑƒ адÑутных транзакцый - - - Use OpenSSL (https) for JSON-RPC connections - Ужываць OpenSSL (https) Ð´Ð»Ñ JSON-RPC злучÑннÑÑž - - - Loading addresses... - Загружаем адраÑÑ‹... - - - Error loading wallet.dat: Wallet corrupted - Памылка загрузкі wallet.dat: гаманец пашкоджаны - - - Error loading wallet.dat - Памылка загрузкі wallet.dat - - - Insufficient funds - ÐедаÑтаткова Ñродкаў - - - Loading block index... - Загружаем індÑÐºÑ Ð±Ð»Ð¾ÐºÐ°Ñž... - - - Loading wallet... - Загружаем гаманец... - - - Cannot downgrade wallet - Ðемагчыма Ñ€ÑгрÑÑаваць гаманец - - - Rescanning... - ПераÑканаванне... - - - Done loading - Загрузка выканана - - - Error - Памылка - - - \ No newline at end of file diff --git a/src/qt/locale/bitcoin_bg.ts b/src/qt/locale/bitcoin_bg.ts deleted file mode 100644 index dd311df76..000000000 --- a/src/qt/locale/bitcoin_bg.ts +++ /dev/null @@ -1,2534 +0,0 @@ - - - AddressBookPage - - Right-click to edit address or label - ДеÑен клик за промÑна на адреÑа или името - - - Create a new address - Създаване на нов Ð°Ð´Ñ€ÐµÑ - - - &New - Ðов - - - Copy the currently selected address to the system clipboard - Копиране на Ð¸Ð·Ð±Ñ€Ð°Ð½Ð¸Ñ Ð°Ð´Ñ€ÐµÑ ÐºÑŠÐ¼ клипборда - - - &Copy - Копирай - - - C&lose - Затвори - - - &Copy Address - &Копирай Ð°Ð´Ñ€ÐµÑ - - - Delete the currently selected address from the list - Изтрий Ð¸Ð·Ð±Ñ€Ð°Ð½Ð¸Ñ Ð°Ð´Ñ€ÐµÑ Ð¾Ñ‚ ÑпиÑъка - - - Export the data in the current tab to a file - Запишете данните от Ñ‚ÐµÐºÑƒÑ‰Ð¸Ñ Ñ€Ð°Ð·Ð´ÐµÐ» във файл - - - &Export - ИзнеÑи - - - &Delete - &Изтриване - - - Choose the address to send coins to - Изберете адреÑ, на който да Ñе изпращат монети - - - Choose the address to receive coins with - Изберете адреÑ, на който ще получавате монети - - - C&hoose - Избери - - - Sending addresses - ÐдреÑи за изпращане - - - Receiving addresses - ÐдреÑи за получаване - - - These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins. - Това Ñа адреÑите на получателите на плащаниÑ. Винаги проверÑвайте размера на Ñумата и адреÑа на получателÑ, преди да изпратите монети. - - - These are your Bitcoin addresses for receiving payments. It is recommended to use a new receiving address for each transaction. - Това Ñа Вашите Биткойн адреÑи,благодарение на които ще получавате плащаниÑ.Препоръчително е да използвате нови адреÑи за получаване на вÑÑка транзакциÑ. - - - Copy &Label - Копирай &име - - - &Edit - &Редактирай - - - Export Address List - ИзнаÑÑне на ÑпиÑъка Ñ Ð°Ð´Ñ€ÐµÑи - - - Comma separated file (*.csv) - CSV файл (*.csv) - - - Exporting Failed - Грешка при изнаÑÑнето - - - There was an error trying to save the address list to %1. Please try again. - Възникна грешка при опита за запазване на ÑпиÑъка Ñ Ð°Ð´Ñ€ÐµÑи в %1.ÐœÐ¾Ð»Ñ Ð¾Ð¿Ð¸Ñ‚Ð°Ð¹Ñ‚Ðµ отново. - - - - AddressTableModel - - Label - Име - - - Address - ÐÐ´Ñ€ÐµÑ - - - (no label) - (без име) - - - - AskPassphraseDialog - - Passphrase Dialog - Диалог за паролите - - - Enter passphrase - Въведете текущата парола - - - New passphrase - Ðова парола - - - Repeat new passphrase - Въведете новата парола повторно - - - Encrypt wallet - Шифриране на портфейла - - - This operation needs your wallet passphrase to unlock the wallet. - Тази Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð¸Ð·Ð¸Ñква Вашата парола за отключване на портфейла. - - - Unlock wallet - Отключване на портфейла - - - This operation needs your wallet passphrase to decrypt the wallet. - Тази Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð¸Ð·Ð¸Ñква Вашата парола за дешифриране на портфейла. - - - Decrypt wallet - Дешифриране на портфейла - - - Change passphrase - СмÑна на паролата - - - Confirm wallet encryption - Потвърдете на шифрирането на портфейла - - - Warning: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR BITCOINS</b>! - Ð’ÐИМÐÐИЕ: Ðко шифрирате вашиÑÑ‚ портфейл и изгубите паролата Ñи, <b>ЩЕ ИЗГУБИТЕ ВСИЧКИТЕ СИ БИТКОИÐИ</b>! - - - Are you sure you wish to encrypt your wallet? - ÐаиÑтина ли желаете да шифрирате портфейла Ñи? - - - 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. - Ð’ÐЖÐО: Ð’Ñички Ñтари запазваниÑ, които Ñте направили на ВашиÑÑ‚ портфейл трÑбва да замените Ñ Ð·Ð°Ð¿Ð°Ð·Ð²Ð°Ð½Ðµ на новополучениÑ, шифриран портфейл. От ÑÑŠÐ¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð·Ð° ÑигурноÑÑ‚, предишните Ð·Ð°Ð¿Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ð½Ð° нешифрирани портфейли ще Ñтанат неизползваеми веднага, щом започнете да използвате новиÑÑ‚, шифриран портфейл. - - - Warning: The Caps Lock key is on! - Внимание: Caps Lock (главни букви) е включен. - - - Wallet encrypted - Портфейлът е шифриран - - - Wallet encryption failed - Шифрирането беше неуÑпешно - - - Wallet encryption failed due to an internal error. Your wallet was not encrypted. - Шифрирането на портфейла беше неуÑпешно, поради Ñофтуерен проблем. Портфейлът не е шифриран. - - - The supplied passphrases do not match. - Паролите не Ñъвпадат - - - Wallet unlock failed - ÐеуÑпешно отключване на портфейла - - - The passphrase entered for the wallet decryption was incorrect. - Паролата въведена за дешифриране на портфейла е грешна. - - - Wallet decryption failed - Дешифрирането на портфейла беше неуÑпешно - - - Wallet passphrase was successfully changed. - Паролата на портфейла беше променена уÑпешно. - - - - BitcoinGUI - - Sign &message... - ПодпиÑване на &Ñъобщение... - - - Synchronizing with network... - Синхронизиране Ñ Ð¼Ñ€ÐµÐ¶Ð°Ñ‚Ð°... - - - &Overview - &Ð‘Ð°Ð»Ð°Ð½Ñ - - - Node - Сървър - - - Show general overview of wallet - Обобщена Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° портфейла - - - &Transactions - &Транзакции - - - Browse transaction history - ИÑÑ‚Ð¾Ñ€Ð¸Ñ Ð½Ð° транзакциите - - - E&xit - Из&ход - - - Quit application - Изход от приложението - - - About &Qt - За &Qt - - - Show information about Qt - Покажи Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° Qt - - - &Options... - &Опции... - - - &Encrypt Wallet... - &Шифриране на портфейла... - - - &Backup Wallet... - &Запазване на портфейла... - - - &Change Passphrase... - &СмÑна на паролата... - - - &Sending addresses... - &Изпращане на адреÑите... - - - &Receiving addresses... - &Получаване на адреÑите... - - - Open &URI... - Отвори &URI... - - - Bitcoin Core client - Bitcoin Core клиент - - - Send coins to a Bitcoin address - Изпращане към Биткоин Ð°Ð´Ñ€ÐµÑ - - - Backup wallet to another location - Запазване на портфейла на друго мÑÑто - - - Change the passphrase used for wallet encryption - ÐŸÑ€Ð¾Ð¼ÐµÐ½Ñ Ð¿Ð°Ñ€Ð¾Ð»Ð°Ñ‚Ð° за портфейла - - - &Debug window - &Прозорец за отÑтранÑване на грешки - - - Open debugging and diagnostic console - Отворете конзолата за диагноÑтика и отÑтранÑване на грешки - - - &Verify message... - &Проверка на Ñъобщение... - - - Bitcoin - Биткоин - - - Wallet - Портфейл - - - &Send - &Изпращане - - - &Receive - &Получаване - - - Show information about Bitcoin Core - Покажете Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° Биткойн Ñдрото - - - &Show / Hide - &Показване / Скриване - - - Show or hide the main Window - Показване и Ñкриване на оÑÐ½Ð¾Ð²Ð½Ð¸Ñ Ð¿Ñ€Ð¾Ð·Ð¾Ñ€ÐµÑ† - - - Encrypt the private keys that belong to your wallet - Шифроване на личните ключове,които принадлежат на портфейла Ви. - - - Sign messages with your Bitcoin addresses to prove you own them - Пишете ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ ÑÑŠÑ ÑÐ²Ð¾Ñ Ð‘Ð¸Ñ‚ÐºÐ¾Ð¹Ð½ Ð°Ð´Ñ€ÐµÑ Ð·Ð° да докажете,че е ваш. - - - Verify messages to ensure they were signed with specified Bitcoin addresses - Потвърждаване на ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð·Ð° да Ñе знае,че Ñа напиÑани Ñ Ð´Ð°Ð´ÐµÐ½Ð¸Ñ‚Ðµ Биткойн адреÑи. - - - &File - &Файл - - - &Settings - &ÐаÑтройки - - - &Help - &Помощ - - - Tabs toolbar - Раздели - - - Bitcoin Core - Биткойн Ñдро - - - Request payments (generates QR codes and bitcoin: URIs) - ИзиÑкване на плащаниÑ(генерира QR кодове и биткойн: URIs) - - - &About Bitcoin Core - &ОтноÑно Bitcoin Core - - - Show the list of used sending addresses and labels - Показване на ÑпиÑъка Ñ Ð¸Ð·Ð¿Ð¾Ð»Ð·Ð²Ð°Ð½Ð¸ адреÑи и имена - - - Show the list of used receiving addresses and labels - Покажи ÑпиÑък Ñ Ð¸Ð·Ð¿Ð¾Ð»Ð·Ð²Ð°Ð½Ð¸Ñ‚Ðµ адреÑи и имена. - - - Open a bitcoin: URI or payment request - Отворете биткойн: URI или заÑвка за плащане - - - &Command-line options - &Ðалични команди - - - Show the Bitcoin Core help message to get a list with possible Bitcoin command-line options - Покажи помощните ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð½Ð° Биткойн за да видиш наличните и валидни команди - - - No block source available... - ЛипÑва източник на блоковете... - - - %1 and %2 - %1 и %2 - - - %1 behind - %1 зад - - - Transactions after this will not yet be visible. - Транзакции Ñлед това нÑма вÑе още да бъдат видими. - - - Error - Грешка - - - Warning - Предупреждение - - - Information - Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ - - - Up to date - Синхронизиран - - - Catching up... - Зарежда блокове... - - - Sent transaction - ИзходÑща Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ñ - - - Incoming transaction - ВходÑща Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ñ - - - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - Портфейлът е <b>криптиран</b> и <b>отключен</b> - - - Wallet is <b>encrypted</b> and currently <b>locked</b> - Портфейлът е <b>криптиран</b> и <b>заключен</b> - - - - ClientModel - - Network Alert - Мрежови проблем - - - - CoinControlDialog - - Coin Selection - Избор на монета - - - Quantity: - КоличеÑтво: - - - Bytes: - Байтове: - - - Amount: - Сума: - - - Priority: - Приоритет: - - - Fee: - ТакÑа: - - - Dust: - Прах: - - - After Fee: - След прилагане на ДДС - - - Change: - РеÑто - - - (un)select all - (Пре)махни вÑички - - - Tree mode - Дървовиден режим - - - List mode - СпиÑъчен режим - - - Amount - Сума - - - Received with label - Получени Ñ Ð¸Ð¼Ðµ - - - Received with address - Получени Ñ Ð°Ð´Ñ€ÐµÑ - - - Date - Дата - - - Confirmations - ÐŸÐ¾Ñ‚Ð²ÑŠÑ€Ð¶Ð´ÐµÐ½Ð¸Ñ - - - Confirmed - Потвърдени - - - Priority - Приоритет - - - Copy address - Копирай Ð°Ð´Ñ€ÐµÑ - - - Copy label - Копирай име - - - Copy amount - Копирай Ñума - - - Copy transaction ID - Копирай Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ñ Ñ ID - - - Lock unspent - Заключване на неизхарченото - - - Unlock unspent - Отключване на неизхарченото - - - Copy quantity - Копиране на количеÑтвото - - - Copy fee - Копиране на данък добавена ÑтойноÑÑ‚ - - - Copy after fee - Копиране Ñлед прилагане на данък добавена ÑтойноÑÑ‚ - - - Copy bytes - Копиране на байтовете - - - Copy priority - Копиране на приоритет - - - Copy dust - Копирай прахта: - - - Copy change - Копирай реÑтото - - - highest - Ðай-виÑок - - - higher - По-виÑок - - - high - ВиÑок - - - medium-high - Средно-виÑок - - - medium - Среден - - - low-medium - ÐиÑко-Ñреден - - - low - ÐиÑък - - - lower - По-ниÑък - - - lowest - Ðай-ниÑък - - - (%1 locked) - (%1 заключен) - - - none - нищо - - - yes - да - - - no - не - - - This means a fee of at least %1 per kB is required. - Това означава че Ñе изиÑква такÑа от поне %1 на килобайт. - - - Can vary +/- 1 byte per input. - Може да варира Ñ +-1 байт - - - (no label) - (без име) - - - change from %1 (%2) - реÑто от %1 (%2) - - - (change) - (промени) - - - - EditAddressDialog - - Edit Address - Редактиране на Ð°Ð´Ñ€ÐµÑ - - - &Label - &Име - - - &Address - &ÐÐ´Ñ€ÐµÑ - - - New receiving address - Ðов Ð°Ð´Ñ€ÐµÑ Ð·Ð° получаване - - - New sending address - Ðов Ð°Ð´Ñ€ÐµÑ Ð·Ð° изпращане - - - Edit receiving address - Редактиране на Ð°Ð´Ñ€ÐµÑ Ð·Ð° получаване - - - Edit sending address - Редактиране на Ð°Ð´Ñ€ÐµÑ Ð·Ð° изпращане - - - The entered address "%1" is already in the address book. - Вече има Ð°Ð´Ñ€ÐµÑ "%1" в ÑпиÑъка Ñ Ð°Ð´Ñ€ÐµÑи. - - - The entered address "%1" is not a valid Bitcoin address. - "%1" не е валиден Биткоин адреÑ. - - - Could not unlock wallet. - Отключването на портфейла беше неуÑпешно. - - - New key generation failed. - Създаването на ключ беше неуÑпешно. - - - - FreespaceChecker - - A new data directory will be created. - Ще Ñе Ñъздаде нова папка за данни. - - - name - име - - - Directory already exists. Add %1 if you intend to create a new directory here. - ДиректориÑта вече ÑъщеÑтвува.Добавете %1 ако желаете да добавите нова Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ñ‚ÑƒÐº. - - - Path already exists, and is not a directory. - ПътÑÑ‚ вече ÑъщеÑтвува и не е папка. - - - Cannot create data directory here. - Ðе може да Ñе Ñъздаде Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ñ‚ÑƒÐº. - - - - HelpMessageDialog - - Bitcoin Core - Биткойн Ñдро - - - version - верÑÐ¸Ñ - - - (%1-bit) - (%1-битов) - - - About Bitcoin Core - ОтноÑно Bitcoin Core - - - Command-line options - СпиÑък Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ - - - Usage: - Използване: - - - command-line options - СпиÑък Ñ Ð½Ð°Ð»Ð¸Ñ‡Ð½Ð¸ команди - - - - Intro - - Welcome - Добре дошли - - - Welcome to Bitcoin Core. - Добре дошли в Биткойн Ñдрото. - - - As this is the first time the program is launched, you can choose where Bitcoin Core will store its data. - Тъй като това е първото Ñтартиране на програмата можете да изберете къде Биткон Ñдрото да запази данните Ñи. - - - Use the default data directory - Използване на Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð¿Ð¾ подразбиране - - - Use a custom data directory: - Използване на Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ñ€ÑŠÑ‡Ð½Ð¾ - - - Bitcoin Core - Биткойн Ñдро - - - Error - Грешка - - - - OpenURIDialog - - Open URI - ОтварÑне на URI - - - - OptionsDialog - - Options - Опции - - - &Main - &ОÑновни - - - Size of &database cache - Размер на кеша в &базата данни - - - MB - Мегабайта - - - Accept connections from outside - Приемай връзки отвън - - - Allow incoming connections - Позволи входÑщите връзки - - - IP address of the proxy (e.g. IPv4: 127.0.0.1 / IPv6: ::1) - IP Ð°Ð´Ñ€ÐµÑ Ð½Ð° прокÑи (напр. за IPv4: 127.0.0.1 / за IPv6: ::1) - - - Third party transaction URLs - URL адреÑи на трети Ñтрани - - - Reset all client options to default. - ВъзÑтановете вÑички наÑтройки по подразбиране. - - - &Reset Options - &Ðулирай наÑтройките - - - &Network - &Мрежа - - - W&allet - По&ртфейл - - - Expert - ЕкÑперт - - - &Spend unconfirmed change - &Похарчете непотвърденото реÑто - - - Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled. - Ðвтоматично отварÑне на входÑÑ‰Ð¸Ñ Bitcoin порт. Работи Ñамо Ñ Ñ€ÑƒÑ‚ÐµÑ€Ð¸ поддържащи UPnP. - - - Map port using &UPnP - ОтварÑне на входÑÑ‰Ð¸Ñ Ð¿Ð¾Ñ€Ñ‚ чрез &UPnP - - - Connect to the Bitcoin network through a SOCKS5 proxy. - Свързване Ñ Ð‘Ð¸Ñ‚ÐºÐ¾Ð¹Ð½ мрежата чрез SOCKS5 прокÑи. - - - &Connect through SOCKS5 proxy (default proxy): - &Свързване чрез SOCKS5 прокÑи (прокÑи по подразбиране): - - - Proxy &IP: - ПрокÑи & ÐйПи: - - - &Port: - &Порт: - - - Port of the proxy (e.g. 9050) - Порт на прокÑи Ñървъра (пр. 9050) - - - &Window - &Прозорец - - - Show only a tray icon after minimizing the window. - След минимизиране ще е видима Ñамо иконата в ÑиÑÑ‚ÐµÐ¼Ð½Ð¸Ñ Ñ‚Ñ€ÐµÐ¹. - - - &Minimize to the tray instead of the taskbar - &Минимизиране в ÑиÑÑ‚ÐµÐ¼Ð½Ð¸Ñ Ñ‚Ñ€ÐµÐ¹ - - - M&inimize on close - М&инимизиране при затварÑне - - - &Display - &Ð˜Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ - - - User Interface &language: - Език: - - - &Unit to show amounts in: - Мерна единица за показваните Ñуми: - - - Choose the default subdivision unit to show in the interface and when sending coins. - Изберете единиците, показвани по подразбиране в интерфейÑа. - - - Whether to show coin control features or not. - Дали да покаже възможноÑтите за контрол на монетите или не. - - - &OK - ОК - - - &Cancel - Отказ - - - default - подразбиране - - - none - нищо - - - Confirm options reset - Потвърдете отмÑната на наÑтройките. - - - Client restart required to activate changes. - ИзиÑква Ñе реÑтартиране на клиента за активиране на извършените промени. - - - This change would require a client restart. - Тази промÑна изиÑква реÑтартиране на клиента Ви. - - - The supplied proxy address is invalid. - ТекущиÑÑ‚ прокÑи Ð°Ð´Ñ€ÐµÑ Ðµ невалиден. - - - - OverviewPage - - Form - ФормулÑÑ€ - - - The displayed information may be out of date. Your wallet automatically synchronizes with the Bitcoin network after a connection is established, but this process has not completed yet. - Текущата Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð½Ð° екрана може да не е актуална. ВашиÑÑ‚ портфейл ще Ñе Ñинхронизира автоматично Ñ Ð¼Ñ€ÐµÐ¶Ð°Ñ‚Ð° на Биткоин, щом поне една връзката Ñ Ð½ÐµÑ Ñе уÑтанови; този Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð²Ñе още не е приключил. - - - Watch-only: - Ð’ наблюдателен режим: - - - Available: - Ðалично: - - - Your current spendable balance - Вашата текуща Ñметка за изразходване - - - Pending: - Изчакващо: - - - Immature: - Ðеразвит: - - - Mined balance that has not yet matured - Миниран баланÑ,който вÑе още не Ñе е развил - - - Balances - Ð‘Ð°Ð»Ð°Ð½Ñ - - - Total: - Общо: - - - Your current total balance - ТекущиÑÑ‚ ви общ Ð±Ð°Ð»Ð°Ð½Ñ - - - Spendable: - За харчене: - - - Recent transactions - Скорошни транзакции - - - - PaymentServer - - URI handling - СправÑне Ñ URI - - - Invalid payment address %1 - Ðевалиден Ð°Ð´Ñ€ÐµÑ Ð½Ð° плащане %1 - - - Payment request rejected - ЗаÑвката за плащане беше отхвърлена - - - Payment request network doesn't match client network. - Мрежата от коÑто Ñе извършва заÑвката за плащане не Ñъвпада Ñ Ð¼Ñ€ÐµÐ¶Ð°Ñ‚Ð° на клиента. - - - Requested payment amount of %1 is too small (considered dust). - ЗаÑвената Ñума за плащане: %1 е твърде малка (Ñчита Ñе за отпадък) - - - Payment request error - Възникна грешка по време назаÑвката за плащане - - - Cannot start bitcoin: click-to-pay handler - Биткойн не можe да Ñе Ñтартира: click-to-pay handler - - - Payment request file handling - Файл за ÑправÑне ÑÑŠÑ Ð·Ð°Ñвки - - - Refund from %1 - ВъзÑтановÑване на Ñума от %1 - - - Payment request DoS protection - Ð”Ð¾Ñ Ð·Ð°Ñ‰Ð¸Ñ‚Ð° на заÑвката за плащане - - - Error communicating with %1: %2 - Грешка при комуникациÑта Ñ %1: %2 - - - Bad response from server %1 - Възникна проблем при Ñвързването ÑÑŠÑ Ñървър %1 - - - Payment acknowledged - Плащането е прието - - - Network request error - Грешка в мрежата по време на заÑвката - - - - PeerTableModel - - User Agent - Клиент на Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð¸Ñ‚ÐµÐ»Ñ - - - Ping Time - Време за отговор - - - - QObject - - Amount - Сума - - - Enter a Bitcoin address (e.g. %1) - Въведете Биткойн Ð°Ð´Ñ€ÐµÑ (например: %1) - - - %1 d - %1 ден - - - %1 h - %1 Ñ‡Ð°Ñ - - - %1 m - %1 минута - - - %1 s - %1 Ñекунда - - - None - Ðеналичен - - - N/A - ÐеÑъщеÑтвуващ - - - %1 ms - %1 милиÑекунда - - - - QRImageWidget - - &Save Image... - &Запиши изображение... - - - &Copy Image - &Копирай изображение - - - Save QR Code - Запази QR Код - - - PNG Image (*.png) - PNG Изображение (*.png) - - - - RPCConsole - - Client name - Име на клиента - - - N/A - ÐеÑъщеÑтвуващ - - - Client version - ВерÑÐ¸Ñ Ð½Ð° клиента - - - &Information - Данни - - - Debug window - Прозорец Ñ Ð³Ñ€ÐµÑˆÐºÐ¸ - - - General - ОÑновни - - - Using OpenSSL version - Използване на OpenSSL верÑÐ¸Ñ - - - Using BerkeleyDB version - Използване на база данни BerkeleyDB - - - Startup time - Време за Ñтартиране - - - Network - Мрежа - - - Name - Име - - - Number of connections - Брой връзки - - - Current number of blocks - Текущ брой блокове - - - Received - Получени - - - Sent - Изпратени - - - &Peers - &Пиъри - - - Select a peer to view detailed information. - Избери пиър за детайлна информациÑ. - - - Direction - ПоÑока - - - Version - ВерÑÐ¸Ñ - - - User Agent - Клиент на Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð¸Ñ‚ÐµÐ»Ñ - - - Services - УÑлуги - - - Starting Height - Стартова виÑочина - - - Connection Time - ПродължителноÑÑ‚ на връзката - - - Last Send - Изпратени за поÑледно - - - Last Receive - Получени за поÑледно - - - Bytes Sent - Изпратени байтове - - - Bytes Received - Получени байтове - - - Ping Time - Време за отговор - - - Last block time - Време на поÑÐ»ÐµÐ´Ð½Ð¸Ñ Ð±Ð»Ð¾Ðº - - - &Open - &Отвори - - - &Console - &Конзола - - - &Network Traffic - &Мрежов Трафик - - - &Clear - &ИзчиÑти - - - Totals - Общо: - - - In: - ВходÑщи: - - - Out: - ИзходÑщи - - - Build date - Дата на Ñъздаване - - - Debug log file - Лог файл,Ñъдържащ грешките - - - Clear console - ИзчиÑти конзолата - - - Use up and down arrows to navigate history, and <b>Ctrl-L</b> to clear screen. - Използвайте Ñтрелки надолу и нагореза разглеждане на иÑториÑтаот команди и <b>Ctrl-L</b> за изчиÑтване на конзолата. - - - Type <b>help</b> for an overview of available commands. - Въведeте </b>помощ</b> за да видите наличните команди. - - - %1 B - %1 Байт - - - %1 KB - %1 Килобайт - - - %1 MB - %1 Мегабайт - - - %1 GB - %1 Гигабайт - - - via %1 - поÑредÑтвом %1 - - - never - Ðикога - - - Inbound - ВходÑщи - - - Outbound - ИзходÑщи - - - Unknown - ÐеизвеÑтен - - - Fetching... - Прихващане... - - - - ReceiveCoinsDialog - - &Amount: - &Сума - - - &Label: - &Име: - - - &Message: - &Съобщение: - - - Use this form to request payments. All fields are <b>optional</b>. - Използвате този формулÑÑ€ за заÑвÑване на плащаниÑ. Ð’Ñички полета Ñа <b>незадължителни</b>. - - - An optional amount to request. Leave this empty or zero to not request a specific amount. - Ðезадължително заÑвÑване на Ñума. ОÑтавете полето празно или нулево, за да не заÑвите конкретна Ñума. - - - Clear all fields of the form. - ИзчиÑти вÑички полета от формулÑра. - - - Clear - ИзчиÑтване - - - Requested payments history - ИзиÑкана иÑÑ‚Ð¾Ñ€Ð¸Ñ Ð½Ð° плащаниÑта - - - &Request payment - &ИзиÑкване на плащане - - - Show - Показване - - - Remove - Премахване - - - Copy label - Копирай име - - - Copy message - Копиране на Ñъобщението - - - Copy amount - Копирай Ñума - - - - ReceiveRequestDialog - - QR Code - QR код - - - Copy &URI - Копиране на &URI - - - Copy &Address - &Копирай Ð°Ð´Ñ€ÐµÑ - - - &Save Image... - &Запиши изображение... - - - Request payment to %1 - ИзиÑкване на плащане от %1 - - - Payment information - Данни за плащането - - - Address - ÐÐ´Ñ€ÐµÑ - - - Amount - Сума - - - Label - Име - - - Message - Съобщение - - - Error encoding URI into QR Code. - Грешка при Ñъздаването на QR Code от URI. - - - - RecentRequestsTableModel - - Date - Дата - - - Label - Име - - - Message - Съобщение - - - Amount - Сума - - - (no label) - (без име) - - - (no message) - (без Ñъобщение) - - - (no amount) - (липÑва Ñума) - - - - SendCoinsDialog - - Send Coins - Изпращане - - - Coin Control Features - ÐаÑтройки за контрол на монетите - - - automatically selected - аÑтоматично избран - - - Insufficient funds! - ÐÑмате доÑтатъчно налични пари! - - - Quantity: - КоличеÑтво: - - - Bytes: - Байтове: - - - Amount: - Сума: - - - Priority: - Приоритет: - - - Fee: - ТакÑа: - - - After Fee: - След прилагане на ДДС - - - Change: - РеÑто - - - If this is activated, but the change address is empty or invalid, change will be sent to a newly generated address. - Ðко тази Ð¾Ð¿Ñ†Ð¸Ñ Ðµ активирана,но адреÑÑŠÑ‚ на промÑна е празен или невалиден,промÑната ще бъде изпратена на новоÑъздаден адреÑ. - - - Transaction Fee: - ТакÑа за транзакциÑта: - - - Choose... - Избери... - - - per kilobyte - за килобайт - - - total at least - Крайна Ñума поне - - - Recommended: - Препоръчителна: - - - Custom: - По избор: - - - Confirmation time: - Време за потвърждение: - - - normal - нормален - - - fast - бърз - - - Send to multiple recipients at once - Изпращане към повече от един получател - - - Add &Recipient - Добави &получател - - - Clear all fields of the form. - ИзчиÑти вÑички полета от формулÑра. - - - Dust: - Прах: - - - Clear &All - &ИзчиÑти - - - Balance: - БаланÑ: - - - Confirm the send action - Потвърдете изпращането - - - S&end - И&зпрати - - - Confirm send coins - Потвърждаване - - - Copy quantity - Копиране на количеÑтвото - - - Copy amount - Копирай Ñума - - - Copy fee - Копиране на данък добавена ÑтойноÑÑ‚ - - - Copy after fee - Копиране Ñлед прилагане на данък добавена ÑтойноÑÑ‚ - - - Copy bytes - Копиране на байтовете - - - Copy priority - Копиране на приоритет - - - Copy change - Копирай реÑтото - - - or - или - - - The amount to pay must be larger than 0. - Сумата трÑбва да е по-голÑма от 0. - - - The amount exceeds your balance. - Сумата надвишава Ñ‚ÐµÐºÑƒÑ‰Ð¸Ñ Ð±Ð°Ð»Ð°Ð½Ñ - - - The total exceeds your balance when the %1 transaction fee is included. - Сумата при добавÑне на данък добавена ÑтойноÑÑ‚ по %1 транзакциÑта надвишава Ñумата по вашата Ñметка. - - - Transaction creation failed! - Грешка при Ñъздаването на транзакциÑ! - - - Pay only the minimum fee of %1 - Платете минималната такÑа от %1 - - - Warning: Invalid Bitcoin address - Внимание: Ðевалиден Биткойн Ð°Ð´Ñ€ÐµÑ - - - (no label) - (без име) - - - Warning: Unknown change address - Внимание:ÐеизвеÑтен Ð°Ð´Ñ€ÐµÑ Ð·Ð° промÑна - - - Copy dust - Копирай прахта: - - - Are you sure you want to send? - ÐаиÑтина ли иÑкате да изпратите? - - - added as transaction fee - добавено като такÑа за Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ñ - - - - SendCoinsEntry - - A&mount: - С&ума: - - - Pay &To: - Плати &Ðа: - - - Enter a label for this address to add it to your address book - Въведете име за този адреÑ, за да го добавите в ÑпиÑъка Ñ Ð°Ð´Ñ€ÐµÑи - - - &Label: - &Име: - - - Choose previously used address - Изберете използван преди Ð°Ð´Ñ€ÐµÑ - - - This is a normal payment. - Това е нормално плащане. - - - Alt+A - Alt+A - - - Paste address from clipboard - Вмъкни от клипборда - - - Alt+P - Alt+P - - - Remove this entry - Премахване на този Ð·Ð°Ð¿Ð¸Ñ - - - Message: - Съобщение: - - - Pay To: - Плащане на: - - - Memo: - Бележка: - - - - ShutdownWindow - - Bitcoin Core is shutting down... - Биткойн Ñдрото Ñе изключва... - - - Do not shut down the computer until this window disappears. - Ðе изключвайте компютъра докато този прозорец не изчезне. - - - - SignVerifyMessageDialog - - Signatures - Sign / Verify a Message - Подпиши / Провери Ñъобщение - - - &Sign Message - &Подпиши - - - Choose previously used address - Изберете използван преди Ð°Ð´Ñ€ÐµÑ - - - Alt+A - Alt+A - - - Paste address from clipboard - Вмъкни от клипборда - - - Alt+P - Alt+P - - - Enter the message you want to sign here - Въведете Ñъобщението тук - - - Signature - ÐŸÐ¾Ð´Ð¿Ð¸Ñ - - - Copy the current signature to the system clipboard - Копиране на Ñ‚ÐµÐºÑƒÑ‰Ð¸Ñ Ð¿Ð¾Ð´Ð¿Ð¸Ñ - - - Sign the message to prove you own this Bitcoin address - Подпишете Ñъобщение като доказателÑтво, че притежавате определен Ð°Ð´Ñ€ÐµÑ - - - Sign &Message - Подпиши &Ñъобщение - - - Clear &All - &ИзчиÑти - - - &Verify Message - &Провери - - - Verify the message to ensure it was signed with the specified Bitcoin address - Проверете Ñъобщение, за да Ñте Ñигурни че е подпиÑано Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½ Биткоин Ð°Ð´Ñ€ÐµÑ - - - Verify &Message - Потвърди &Ñъобщението - - - Click "Sign Message" to generate signature - ÐатиÑнете "ПодпиÑване на Ñъобщение" за да Ñъздадете Ð¿Ð¾Ð´Ð¿Ð¸Ñ - - - The entered address is invalid. - ВъведениÑÑ‚ Ð°Ð´Ñ€ÐµÑ Ðµ невалиден. - - - Please check the address and try again. - ÐœÐ¾Ð»Ñ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐµÑ‚Ðµ адреÑа и опитайте отново. - - - The entered address does not refer to a key. - ВъведениÑÑ‚ Ð°Ð´Ñ€ÐµÑ Ð½Ðµ може да Ñе ÑъпоÑтави Ñ Ð²Ð°Ð»Ð¸Ð´ÐµÐ½ ключ. - - - Wallet unlock was cancelled. - Отключването на портфейла беше отменено. - - - Private key for the entered address is not available. - Ðе е наличен чаÑтен ключ за въведениÑÑ‚ адреÑ. - - - Message signing failed. - ПодпиÑването на Ñъобщение беше неуÑпешно. - - - Message signed. - Съобщението е подпиÑано. - - - The signature could not be decoded. - ПодпиÑÑŠÑ‚ не може да бъде декодиран. - - - Please check the signature and try again. - Проверете подпиÑа и опитайте отново. - - - The signature did not match the message digest. - ПодпиÑÑŠÑ‚ не Ð¾Ñ‚Ð³Ð¾Ð²Ð°Ñ€Ñ Ð½Ð° комбинациÑта от Ñъобщение и адреÑ. - - - Message verification failed. - Проверката на Ñъобщението беше неуÑпешна. - - - Message verified. - Съобщението е потвърдено. - - - - SplashScreen - - Bitcoin Core - Биткойн Ñдро - - - The Bitcoin Core developers - Разработчици на Bitcoin Core - - - [testnet] - [testnet] - - - - TrafficGraphWidget - - KB/s - Килобайта в Ñекунда - - - - TransactionDesc - - Open until %1 - Подлежи на промÑна до %1 - - - conflicted - припокриващ Ñе - - - %1/offline - %1/офлайн - - - %1/unconfirmed - %1/непотвърдени - - - %1 confirmations - включена в %1 блока - - - Status - Ð¡Ñ‚Ð°Ñ‚ÑƒÑ - - - Date - Дата - - - Source - Източник - - - Generated - Издадени - - - From - От - - - To - За - - - own address - ÑобÑтвен Ð°Ð´Ñ€ÐµÑ - - - label - име - - - Credit - Кредит - - - not accepted - не е приет - - - Debit - Дебит - - - Total debit - Общ дълг - - - Total credit - Общ дълг - - - Transaction fee - ТакÑа - - - Net amount - Ðетна Ñума - - - Message - Съобщение - - - Comment - Коментар - - - Transaction ID - ID - - - Merchant - Търговец - - - Generated coins must mature %1 blocks before they can be spent. When you generated this block, it was broadcast to the network to be added to the block chain. If it fails to get into the chain, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - Генерираните монети трÑбва да отлежат %1 блока преди да могат да бъдат похарчени. Когато генерираш блока, той Ñе разпроÑтранÑва в мрежата, за да Ñе добави в блок-веригата. Ðко не уÑпее да Ñе добави във веригата, Ð½ÐµÐ³Ð¾Ð²Ð¸Ñ ÑÑ‚Ð°Ñ‚ÑƒÑ Ñ‰Ðµ Ñе Ñтане "неприет" и нÑма да може да Ñе похарчи. Това е възможно да Ñе Ñлучи Ñлучайно, ако друг възел генерира блок нÑколко Ñекунди Ñлед твоÑ. - - - Debug information - Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° грешките - - - Transaction - Ð¢Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ñ - - - Amount - Сума - - - true - true - - - false - false - - - , has not been successfully broadcast yet - , вÑе още не е изпратено - - - unknown - неизвеÑтен - - - - TransactionDescDialog - - Transaction details - Ð¢Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ñ - - - This pane shows a detailed description of the transaction - ОпиÑание на транзакциÑта - - - - TransactionTableModel - - Date - Дата - - - Type - Тип - - - Immature (%1 confirmations, will be available after %2) - Ðеплатим (%1 потвърждениÑ, ще бъде платим Ñлед %2) - - - Open until %1 - Подлежи на промÑна до %1 - - - Confirmed (%1 confirmations) - Потвърдени (%1 потвърждениÑ) - - - This block was not received by any other nodes and will probably not be accepted! - Блокът не е получен от оÑтаналите учаÑтници и най-вероÑтно нÑма да бъде одобрен. - - - Generated but not accepted - Генерирана, но отхвърлена от мрежата - - - Offline - Извън Ð»Ð¸Ð½Ð¸Ñ - - - Label - Име - - - Unconfirmed - Ðепотвърдено - - - Confirming (%1 of %2 recommended confirmations) - Потвърждаване (%1 от %2 препоръчвани потвърждениÑ) - - - Conflicted - Конфликтно - - - Received with - Получени - - - Received from - Получен от - - - Sent to - Изпратени на - - - Payment to yourself - Плащане към Ñебе Ñи - - - Mined - Емитирани - - - (n/a) - (n/a) - - - Transaction status. Hover over this field to show number of confirmations. - СъÑтоÑние на транзакциÑта. Задръжте върху това поле за брой потвърждениÑ. - - - Date and time that the transaction was received. - Дата и Ñ‡Ð°Ñ Ð½Ð° получаване на транзакциÑта. - - - Type of transaction. - Вид транзакциÑ. - - - Amount removed from or added to balance. - Сума извадена или добавена към баланÑа. - - - - TransactionView - - All - Ð’Ñички - - - Today - Ð”Ð½ÐµÑ - - - This week - Тази Ñедмица - - - This month - Този меÑец - - - Last month - ÐŸÑ€ÐµÐ´Ð½Ð¸Ñ Ð¼ÐµÑец - - - This year - Тази година - - - Range... - От - до... - - - Received with - Получени - - - Sent to - Изпратени на - - - To yourself - СобÑтвени - - - Mined - Емитирани - - - Other - Други - - - Enter address or label to search - ТърÑене по Ð°Ð´Ñ€ÐµÑ Ð¸Ð»Ð¸ име - - - Min amount - Минимална Ñума - - - Copy address - Копирай Ð°Ð´Ñ€ÐµÑ - - - Copy label - Копирай име - - - Copy amount - Копирай Ñума - - - Copy transaction ID - Копирай Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ñ Ñ ID - - - Edit label - Редактирай име - - - Show transaction details - ПодробноÑти за транзакциÑта - - - Export Transaction History - ИзнаÑÑне иÑториÑта на транзакциите - - - Exporting Failed - Грешка при изнаÑÑнето - - - Exporting Successful - ИзнаÑÑнето е уÑпешна - - - The transaction history was successfully saved to %1. - ИÑториÑта Ñ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ð¸Ñ‚Ðµ беше уÑпешно запазена в %1. - - - Comma separated file (*.csv) - CSV файл (*.csv) - - - Confirmed - Потвърдени - - - Date - Дата - - - Type - Тип - - - Label - Име - - - Address - ÐÐ´Ñ€ÐµÑ - - - ID - ИД - - - Range: - От: - - - to - до - - - - UnitDisplayStatusBarControl - - - WalletFrame - - No wallet has been loaded. - ÐÑма зареден портфейл. - - - - WalletModel - - Send Coins - Изпращане - - - - WalletView - - &Export - ИзнеÑи - - - Export the data in the current tab to a file - Запишете данните от Ñ‚ÐµÐºÑƒÑ‰Ð¸Ñ Ñ€Ð°Ð·Ð´ÐµÐ» във файл - - - Backup Wallet - Запазване на портфейла - - - Wallet Data (*.dat) - Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° портфейла (*.dat) - - - Backup Failed - ÐеуÑпешно запазване на портфейла - - - There was an error trying to save the wallet data to %1. - Възникна грешка при запазването на информациÑта за портфейла в %1. - - - The wallet data was successfully saved to %1. - ИнформациÑта за портфейла беше уÑпешно запазена в %1. - - - Backup Successful - УÑпешно запазване на портфейла - - - - bitcoin-core - - Options: - Опции: - - - Specify data directory - Определете Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð·Ð° данните - - - Connect to a node to retrieve peer addresses, and disconnect - Свържете Ñе към Ñървър за да можете да извлечете адреÑите на пиърите Ñлед което Ñе разкачете. - - - Specify your own public address - Въведете Ваш публичен Ð°Ð´Ñ€ÐµÑ - - - Use the test network - Използвайте теÑтовата мрежа - - - Accept connections from outside (default: 1 if no -proxy or -connect) - Приемайте връзки отвън.(по подразбиране:1 в противен Ñлучай -proxy или -connect) - - - Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. - Внимание: -paytxfee е Ñ Ð¼Ð½Ð¾Ñ‚Ð¾ голÑма зададена ÑтойноÑÑ‚! Това е транзакционната такÑа, коÑто ще платите ако направите транзакциÑ. - - - Whitelist peers connecting from the given netmask or IP address. Can be specified multiple times. - Сложете в бÑл ÑпиÑък пиъри,Ñвързващи Ñе от дадената интернет маÑка или айпи адреÑ.Може да бъде заложено неколкократно. - - - (default: 1) - (по подразбиране 1) - - - <category> can be: - <category> може да бъде: - - - Connection options: - ÐаÑтройки на връзката: - - - Do you want to rebuild the block database now? - Желаете ли да преÑъздадете базата данни Ñ Ð±Ð»Ð¾ÐºÐ¾Ð²Ðµ Ñега? - - - Error initializing block database - Грешка в пуÑкането на базата данни Ñ Ð±Ð»Ð¾ÐºÐ¾Ð²Ðµ - - - Error: Disk space is low! - Грешка: мÑÑтото на диÑка е малко! - - - Failed to listen on any port. Use -listen=0 if you want this. - Провалено "Ñлушане" на вÑеки порт. Използвайте -listen=0 ако иÑкате това. - - - Importing... - ВнаÑÑне... - - - Verifying blocks... - Проверка на блоковете... - - - Verifying wallet... - Проверка на портфейла... - - - Wallet options: - ÐаÑтройки на портфейла: - - - Set the number of threads for coin generation if enabled (-1 = all cores, default: %d) - Заложете Ð±Ñ€Ð¾Ñ Ð½Ð° нишки за Ð³ÐµÐ½ÐµÑ€Ð°Ñ†Ð¸Ñ Ð½Ð° монети ако е включено(-1 = вÑички Ñдра, по подразбиране: %d) - - - Warning: -maxtxfee is set very high! Fees this large could be paid on a single transaction. - Внимание: -maxtxfee има много виÑока ÑтойноÑÑ‚! Толкова виÑоки такÑи могат да бъдат заплатени на една транзакциÑ. - - - Choose data directory on startup (default: 0) - Изберете Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð¿Ñ€Ð¸ Ñтартиране на програмата.( наÑтройка по подразбиране:0) - - - Connect through SOCKS5 proxy - Свързване чрез SOCKS5 прокÑи - - - Copyright (C) 2009-%i The Bitcoin Core Developers - Ð’Ñички права запазени (C) 2009-%i ДоÑтавчиците на Биткойн - - - Information - Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ - - - Invalid amount for -minrelaytxfee=<amount>: '%s' - Ðевалидна Ñума за -minrelaytxfee=<amount>: '%s' - - - Invalid amount for -mintxfee=<amount>: '%s' - Ðевалидна Ñума за -mintxfee=<amount>: '%s' - - - Send trace/debug info to console instead of debug.log file - Изпрати локализиращата или дебъг информациÑта към конзолата, вмеÑто файлът debug.log - - - Set language, for example "de_DE" (default: system locale) - Задаване на език,например "de_DE" (по подразбиране: system locale) - - - Start minimized - Стартирай минимизирано - - - This is experimental software. - Това е екÑпериментален Ñофтуер. - - - Transaction amount too small - Сумата на транзакциÑта е твърде малка - - - Transaction amounts must be positive - Сумите на транзакциите трÑбва да Ñа положителни - - - Transaction too large - ТранзакциÑта е твърде голÑма - - - Username for JSON-RPC connections - ПотребителÑко име за JSON-RPC връзките - - - Warning - Предупреждение - - - on startup - по време на Ñтартирането - - - Password for JSON-RPC connections - Парола за JSON-RPC връзките - - - Upgrade wallet to latest format - ОбновÑване на портфейла до най-Ð½Ð¾Ð²Ð¸Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ - - - Rescan the block chain for missing wallet transactions - Повторно Ñканиране на блок-връзка за липÑващи портфейлни транзакции - - - Use OpenSSL (https) for JSON-RPC connections - Използвайте OpenSSL (https) за JSON-RPC връзките - - - This help message - Това помощно Ñъобщение - - - Loading addresses... - Зареждане на адреÑи... - - - Error loading wallet.dat: Wallet corrupted - Грешка при зареждане на wallet.dat: портфейлът е повреден - - - Error loading wallet.dat - Грешка при зареждане на wallet.dat - - - Invalid -proxy address: '%s' - Ðевалиден -proxy address: '%s' - - - Specify configuration file (default: %s) - Ðазовете конфигурационен файл(по подразбиране %s) - - - Specify connection timeout in milliseconds (minimum: 1, default: %d) - Задайте време на изключване при проблеми ÑÑŠÑ Ñвързването в милиÑекунди(минимум:1, по подразбиране %d) - - - Specify pid file (default: %s) - Задайте pid файл(по подразбиране: %s) - - - Invalid amount for -paytxfee=<amount>: '%s' - Ðевалидна Ñума за -paytxfee=<amount>: '%s' - - - Insufficient funds - ÐедоÑтатъчно ÑредÑтва - - - Loading block index... - Зареждане на блок индекÑа... - - - Loading wallet... - Зареждане на портфейла... - - - Rescanning... - Преразглеждане на поÑледовтелноÑтта от блокове... - - - Done loading - Зареждането е завършено - - - Error - Грешка - - - \ No newline at end of file diff --git a/src/qt/locale/bitcoin_bs.ts b/src/qt/locale/bitcoin_bs.ts deleted file mode 100644 index 86526022f..000000000 --- a/src/qt/locale/bitcoin_bs.ts +++ /dev/null @@ -1,166 +0,0 @@ - - - AddressBookPage - - - AddressTableModel - - - AskPassphraseDialog - - - BitcoinGUI - - Bitcoin - Bitcoin - - - Bitcoin Core - Bitcoin Jezrga - - - - ClientModel - - - CoinControlDialog - - - EditAddressDialog - - - FreespaceChecker - - - HelpMessageDialog - - Bitcoin Core - Bitcoin Jezrga - - - - Intro - - Bitcoin Core - Bitcoin Jezrga - - - - OpenURIDialog - - - OptionsDialog - - - OverviewPage - - - PaymentServer - - - PeerTableModel - - - QObject - - - QRImageWidget - - - RPCConsole - - - ReceiveCoinsDialog - - - ReceiveRequestDialog - - - RecentRequestsTableModel - - - SendCoinsDialog - - - SendCoinsEntry - - Alt+A - Alt+A - - - Alt+P - Alt+P - - - - ShutdownWindow - - - SignVerifyMessageDialog - - Alt+A - Alt+A - - - Alt+P - Alt+P - - - - SplashScreen - - Bitcoin Core - Bitcoin Jezrga - - - - TrafficGraphWidget - - - TransactionDesc - - - TransactionDescDialog - - - TransactionTableModel - - - TransactionView - - All - Sve - - - Today - Danas - - - This month - Ovaj mjesec - - - Last month - ProÅ¡li mjesec - - - This year - Ove godine - - - - UnitDisplayStatusBarControl - - - WalletFrame - - - WalletModel - - - WalletView - - - bitcoin-core - - \ No newline at end of file diff --git a/src/qt/locale/bitcoin_ca.ts b/src/qt/locale/bitcoin_ca.ts deleted file mode 100644 index b89faf067..000000000 --- a/src/qt/locale/bitcoin_ca.ts +++ /dev/null @@ -1,3575 +0,0 @@ - - - AddressBookPage - - Right-click to edit address or label - Feu clic dret per a editar l'adreça o l'etiqueta - - - Create a new address - Crea una nova adreça - - - &New - &Nova - - - Copy the currently selected address to the system clipboard - Copia l'adreça seleccionada al porta-retalls del sistema - - - &Copy - &Copia - - - C&lose - &Tanca - - - &Copy Address - &Copia l'adreça - - - Delete the currently selected address from the list - Elimina l'adreça sel·leccionada actualment de la llista - - - Export the data in the current tab to a file - Exporta les dades de la pestanya actual a un fitxer - - - &Export - &Exporta - - - &Delete - &Elimina - - - Choose the address to send coins to - Trieu una adreça on voleu enviar monedes - - - Choose the address to receive coins with - Trieu l'adreça on voleu rebre monedes - - - C&hoose - T&ria - - - Sending addresses - S'estan enviant les adreces - - - Receiving addresses - S'estan rebent les adreces - - - These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins. - Aquestes són les vostres adreces de Bitcoin per enviar els pagaments. Sempre reviseu l'import i l'adreça del destinatari abans de transferir monedes. - - - These are your Bitcoin addresses for receiving payments. It is recommended to use a new receiving address for each transaction. - Aquestes són les vostres adreces Bitcoin per rebre pagaments. Es recomana utilitzar una adreça nova de recepció per a cada transacció. - - - Copy &Label - Copia l'&etiqueta - - - &Edit - &Edita - - - Export Address List - Exporta la llista d'adreces - - - Comma separated file (*.csv) - Fitxer de separació amb comes (*.csv) - - - Exporting Failed - L'exportació ha fallat - - - There was an error trying to save the address list to %1. Please try again. - S'ha produït un error en desar la llista d'adreces a %1. Torneu-ho a provar. - - - - AddressTableModel - - Label - Etiqueta - - - Address - Adreça - - - (no label) - (sense etiqueta) - - - - AskPassphraseDialog - - Passphrase Dialog - Diàleg de contrasenya - - - Enter passphrase - Introduïu una contrasenya - - - New passphrase - Nova contrasenya - - - Repeat new passphrase - Repetiu la nova contrasenya - - - Encrypt wallet - Encripta el moneder - - - This operation needs your wallet passphrase to unlock the wallet. - Aquesta operació requereix la contrasenya del moneder per a desbloquejar-lo. - - - Unlock wallet - Desbloqueja el moneder - - - This operation needs your wallet passphrase to decrypt the wallet. - Aquesta operació requereix la contrasenya del moneder per desencriptar-lo. - - - Decrypt wallet - Desencripta el moneder - - - Change passphrase - Canvia la contrasenya - - - Confirm wallet encryption - Confirma l'encriptació del moneder - - - Warning: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR BITCOINS</b>! - Avís: si encripteu el vostre moneder i perdeu la contrasenya, <b>PERDREU TOTS ELS VOSTRES BITCOINS</b>! - - - Are you sure you wish to encrypt your wallet? - Esteu segur que voleu encriptar el vostre moneder? - - - Bitcoin Core 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. - Ara es tancarà el Bitcoin Core per finalitzar el procés d'encriptació. Tingueu present que encriptar el vostre moneder no garanteix que les vostres bitcoins no puguin ser robades per programari maliciós que infecti l'ordinador. - - - 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. - IMPORTANT: Tota copia de seguretat que hàgiu realitzat hauria de ser reemplaçada pel, recentment generat, fitxer encriptat del moneder. - - - Warning: The Caps Lock key is on! - Avís: Les lletres majúscules estan activades! - - - Wallet encrypted - Moneder encriptat - - - 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>. - Introduïu la contrasenya nova al moneder.<br/>Utilitzeu una contrasenya de <b>deu o més caràcters aleatoris</b>, o <b>vuit o més paraules</b>. - - - Enter the old passphrase and new passphrase to the wallet. - Introduïu la contrasenya antiga i la contrasenya nova al moneder. - - - Wallet encryption failed - L'encriptació del moneder ha fallat - - - Wallet encryption failed due to an internal error. Your wallet was not encrypted. - L'encriptació del moneder ha fallat per un error intern. El moneder no ha estat encriptat. - - - The supplied passphrases do not match. - La contrasenya introduïda no coincideix. - - - Wallet unlock failed - El desbloqueig del moneder ha fallat - - - The passphrase entered for the wallet decryption was incorrect. - La contrasenya introduïda per a desencriptar el moneder és incorrecta. - - - Wallet decryption failed - La desencriptació del moneder ha fallat - - - Wallet passphrase was successfully changed. - La contrasenya del moneder ha estat modificada correctament. - - - - BitcoinGUI - - Sign &message... - Signa el &missatge... - - - Synchronizing with network... - S'està sincronitzant amb la xarxa ... - - - &Overview - &Panorama general - - - Node - Node - - - Show general overview of wallet - Mostra el panorama general del moneder - - - &Transactions - &Transaccions - - - Browse transaction history - Cerca a l'historial de transaccions - - - E&xit - S&urt - - - Quit application - Surt de l'aplicació - - - About &Qt - Quant a &Qt - - - Show information about Qt - Mostra informació sobre Qt - - - &Options... - &Opcions... - - - &Encrypt Wallet... - &Encripta el moneder... - - - &Backup Wallet... - &Realitza una còpia de seguretat del moneder... - - - &Change Passphrase... - &Canvia la contrasenya... - - - &Sending addresses... - Adreces d'e&nviament... - - - &Receiving addresses... - Adreces de &recepció - - - Open &URI... - Obre un &URI... - - - Bitcoin Core client - Client del Bitcoin Core - - - Importing blocks from disk... - S'estan important els blocs del disc... - - - Reindexing blocks on disk... - S'estan reindexant els blocs al disc... - - - Send coins to a Bitcoin address - Envia monedes a una adreça Bitcoin - - - Backup wallet to another location - Realitza una còpia de seguretat del moneder a una altra ubicació - - - Change the passphrase used for wallet encryption - Canvia la contrasenya d'encriptació del moneder - - - &Debug window - &Finestra de depuració - - - Open debugging and diagnostic console - Obre la consola de diagnòstic i depuració - - - &Verify message... - &Verifica el missatge... - - - Bitcoin - Bitcoin - - - Wallet - Moneder - - - &Send - &Envia - - - &Receive - &Rep - - - Show information about Bitcoin Core - Mostra informació del Bitcoin Core - - - &Show / Hide - &Mostra / Amaga - - - Show or hide the main Window - Mostra o amaga la finestra principal - - - Encrypt the private keys that belong to your wallet - Encripta les claus privades pertanyents al moneder - - - Sign messages with your Bitcoin addresses to prove you own them - Signa el missatges amb la seva adreça de Bitcoin per provar que les poseeixes - - - Verify messages to ensure they were signed with specified Bitcoin addresses - Verifiqueu els missatges per assegurar-vos que han estat signats amb una adreça Bitcoin específica. - - - &File - &Fitxer - - - &Settings - &Configuració - - - &Help - &Ajuda - - - Tabs toolbar - Barra d'eines de les pestanyes - - - Bitcoin Core - Nucli de Bitcoin - - - Request payments (generates QR codes and bitcoin: URIs) - Sol·licita pagaments (genera codis QR i bitcoin: URI) - - - &About Bitcoin Core - &Quant al Bitcoin Core - - - Modify configuration options for Bitcoin Core - Modifica les opcions de configuració del Bitcoin Core - - - Show the list of used sending addresses and labels - Mostra la llista d'adreces d'enviament i etiquetes utilitzades - - - Show the list of used receiving addresses and labels - Mostra la llista d'adreces de recepció i etiquetes utilitzades - - - Open a bitcoin: URI or payment request - Obre una bitcoin: sol·licitud d'URI o pagament - - - &Command-line options - Opcions de la &línia d'ordres - - - Show the Bitcoin Core help message to get a list with possible Bitcoin command-line options - Mostra el missatge d'ajuda del Bitcoin Core per obtenir una llista amb les possibles opcions de línia d'ordres de Bitcoin - - - %n active connection(s) to Bitcoin network - %n connexió activa a la xarxa Bitcoin%n connexions actives a la xarxa Bitcoin - - - No block source available... - No hi ha cap font de bloc disponible... - - - Processed %n block(s) of transaction history. - S'han processat %n bloc de l'historial de transacció.S'han processat %n blocs de l'historial de transacció. - - - %n hour(s) - %n hora%n hores - - - %n day(s) - %n dia%n dies - - - %n week(s) - %n setmana%n setmanes - - - %1 and %2 - %1 i %2 - - - %n year(s) - %n any%n anys - - - %1 behind - %1 darrere - - - Last received block was generated %1 ago. - El darrer bloc rebut ha estat generat fa %1. - - - Transactions after this will not yet be visible. - Les transaccions a partir d'això no seran visibles. - - - Error - Error - - - Warning - Avís - - - Information - Informació - - - Up to date - Al dia - - - Catching up... - S'està posant al dia ... - - - Date: %1 - - Data: %1 - - - - Amount: %1 - - Import: %1 - - - - Type: %1 - - Tipus: %1 - - - - Label: %1 - - Etiqueta: %1 - - - - Address: %1 - - Adreça: %1 - - - - Sent transaction - Transacció enviada - - - Incoming transaction - Transacció entrant - - - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - El moneder està <b>encriptat</b> i actualment <b>desbloquejat</b> - - - Wallet is <b>encrypted</b> and currently <b>locked</b> - El moneder està <b>encriptat</b> i actualment <b>bloquejat</b> - - - - ClientModel - - Network Alert - Alerta de xarxa - - - - CoinControlDialog - - Coin Selection - Selecció de moneda - - - Quantity: - Quantitat: - - - Bytes: - Bytes: - - - Amount: - Import: - - - Priority: - Prioritat: - - - Fee: - Comissió - - - Dust: - Polsim: - - - After Fee: - Comissió posterior: - - - Change: - Canvi: - - - (un)select all - (des)selecciona-ho tot - - - Tree mode - Mode arbre - - - List mode - Mode llista - - - Amount - Import - - - Received with label - Rebut amb l'etiqueta - - - Received with address - Rebut amb l'adreça - - - Date - Data - - - Confirmations - Confirmacions - - - Confirmed - Confirmat - - - Priority - Prioritat - - - Copy address - Copiar adreça - - - Copy label - Copiar etiqueta - - - Copy amount - Copia l'import - - - Copy transaction ID - Copiar ID de transacció - - - Lock unspent - Bloqueja sense gastar - - - Unlock unspent - Desbloqueja sense gastar - - - Copy quantity - Copia la quantitat - - - Copy fee - Copia la comissió - - - Copy after fee - Copia la comissió posterior - - - Copy bytes - Copia els bytes - - - Copy priority - Copia la prioritat - - - Copy dust - Copia el polsim - - - Copy change - Copia el canvi - - - highest - El més alt - - - higher - Més alt - - - high - Alt - - - medium-high - mig-alt - - - medium - mig - - - low-medium - baix-mig - - - low - baix - - - lower - més baix - - - lowest - el més baix - - - (%1 locked) - (%1 bloquejada) - - - none - cap - - - This label turns red if the transaction size is greater than 1000 bytes. - Aquesta etiqueta es torna en vermell si la transacció és superior a 1000 bytes. - - - This label turns red if the priority is smaller than "medium". - Aquesta etiqueta es torna en vermell si la propietat és inferior que la «mitjana». - - - This label turns red if any recipient receives an amount smaller than %1. - Aquesta etiqueta es torna vermella si el destinatari rep un import inferior de %1. - - - Can vary +/- %1 satoshi(s) per input. - Pot variar +/- %1 satoshi(s) per entrada. - - - yes - sí - - - no - no - - - This means a fee of at least %1 per kB is required. - Això comporta una comissió d'almenys %1 per kB. - - - Can vary +/- 1 byte per input. - Pot variar +/- 1 byte per entrada. - - - Transactions with higher priority are more likely to get included into a block. - Les transaccions amb una major prioritat són més propenses a ser incloses en un bloc. - - - (no label) - (sense etiqueta) - - - change from %1 (%2) - canvia de %1 (%2) - - - (change) - (canvia) - - - - EditAddressDialog - - Edit Address - Edita l'adreça - - - &Label - &Etiqueta - - - The label associated with this address list entry - L'etiqueta associada amb aquesta entrada de llista d'adreces - - - The address associated with this address list entry. This can only be modified for sending addresses. - L'adreça associada amb aquesta entrada de llista d'adreces. Només es pot modificar per a les adreces d'enviament. - - - &Address - &Adreça - - - New receiving address - Nova adreça de recepció. - - - New sending address - Nova adreça d'enviament - - - Edit receiving address - Edita les adreces de recepció - - - Edit sending address - Edita les adreces d'enviament - - - The entered address "%1" is already in the address book. - L'adreça introduïda «%1» ja és present a la llibreta d'adreces. - - - The entered address "%1" is not a valid Bitcoin address. - L'adreça introduïda «%1» no és una adreça de Bitcoin vàlida. - - - Could not unlock wallet. - No s'ha pogut desbloquejar el moneder. - - - New key generation failed. - Ha fallat la generació d'una nova clau. - - - - FreespaceChecker - - A new data directory will be created. - Es crearà un nou directori de dades. - - - name - nom - - - Directory already exists. Add %1 if you intend to create a new directory here. - El directori ja existeix. Afegeix %1 si vols crear un nou directori en aquesta ubicació. - - - Path already exists, and is not a directory. - El camí ja existeix i no és cap directori. - - - Cannot create data directory here. - No es pot crear el directori de dades aquí. - - - - HelpMessageDialog - - Bitcoin Core - Nucli de Bitcoin - - - version - versió - - - (%1-bit) - (%1-bit) - - - About Bitcoin Core - Quant al Bitcoin Core - - - Command-line options - Opcions de línia d'ordres - - - Usage: - Ús: - - - command-line options - Opcions de la línia d'ordres - - - - Intro - - Welcome - Us donem la benviguda - - - Welcome to Bitcoin Core. - Us donem la benvinguda al Bitcoin Core. - - - As this is the first time the program is launched, you can choose where Bitcoin Core will store its data. - Atès que és la primera vegada que executeu el programa, podeu triar on emmagatzemarà el Bitcoin Core les dades. - - - Bitcoin Core will download and store a copy of the Bitcoin block chain. At least %1GB of data will be stored in this directory, and it will grow over time. The wallet will also be stored in this directory. - El Bitcoin Core descarregarà i emmagatzemarà una còpia de la cadena de blocs de Bitcoin. Com a mínim s'emmagatzemaran %1 GB de dades en aquest directori, que seguiran creixent gradualment. També s'hi emmagatzemarà el moneder. - - - Use the default data directory - Utilitza el directori de dades per defecte - - - Use a custom data directory: - Utilitza un directori de dades personalitzat: - - - Bitcoin Core - Nucli de Bitcoin - - - Error: Specified data directory "%1" cannot be created. - Error: el directori de dades «%1» especificat no pot ser creat. - - - Error - Error - - - %n GB of free space available - %n GB d'espai lliure disponible%n GB d'espai lliure disponible - - - (of %n GB needed) - (de %n GB necessari)(de %n GB necessaris) - - - - OpenURIDialog - - Open URI - Obre un URI - - - Open payment request from URI or file - Obre una sol·licitud de pagament des d'un URI o un fitxer - - - URI: - URI: - - - Select payment request file - Selecciona un fitxer de sol·licitud de pagament - - - Select payment request file to open - Selecciona el fitxer de sol·licitud de pagament per obrir - - - - OptionsDialog - - Options - Opcions - - - &Main - &Principal - - - Size of &database cache - Mida de la memòria cau de la base de &dades - - - MB - MB - - - Number of script &verification threads - Nombre de fils de &verificació d'scripts - - - Accept connections from outside - Accepta connexions de fora - - - Allow incoming connections - Permet connexions entrants - - - IP address of the proxy (e.g. IPv4: 127.0.0.1 / IPv6: ::1) - Adreça IP del proxy (p. ex. IPv4: 127.0.0.1 / IPv6: ::1) - - - Minimize instead of exit the application when the window is closed. When this option is enabled, the application will be closed only after selecting Exit in the menu. - Minimitza en comptes de sortir de l'aplicació quan la finestra es tanca. Quan s'habilita aquesta opció l'aplicació es tancara només quan se selecciona Surt del menú. - - - The user interface language can be set here. This setting will take effect after restarting Bitcoin Core. - La interfície d'usuari pot definir-se des d'aquí. El paràmetre tindrà efecte després de reiniciar el Bitcoin Core. - - - 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 |. - URL de terceres parts (p. ex. explorador de blocs) que apareix en la pestanya de transaccions com elements del menú contextual. %s en l'URL es reemplaçat pel resum de la transacció. Diferents URL estan separades per una barra vertical |. - - - Third party transaction URLs - URL de transaccions de terceres parts - - - Active command-line options that override above options: - Opcions de línies d'ordre active que sobreescriuen les opcions de dalt: - - - Reset all client options to default. - Reestableix totes les opcions del client. - - - &Reset Options - &Reestableix les opcions - - - &Network - &Xarxa - - - Automatically start Bitcoin Core after logging in to the system. - Inicia el Bitcoin Core automàticament després d'iniciar una sessió en el sistema. - - - &Start Bitcoin Core on system login - &Inicia el Bitcoin Core en inciar el sistema - - - (0 = auto, <0 = leave that many cores free) - (0 = auto, <0 = deixa tants nuclis lliures) - - - W&allet - &Moneder - - - Expert - Expert - - - Enable coin &control features - Activa les funcions de &control de les monedes - - - 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. - Si inhabiliteu la despesa d'un canvi sense confirmar, el canvi d'una transacció no pot ser utilitzat fins que la transacció no tingui com a mínim una confirmació. Això també afecta com es calcula el vostre balanç. - - - &Spend unconfirmed change - &Gasta el canvi sense confirmar - - - Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled. - Obre el port del client de Bitcoin al router de forma automàtica. Això només funciona quan el router implementa UPnP i l'opció està activada. - - - Map port using &UPnP - Port obert amb &UPnP - - - Connect to the Bitcoin network through a SOCKS5 proxy. - Connecta a la xarxa Bitcoin a través d'un proxy SOCKS5. - - - &Connect through SOCKS5 proxy (default proxy): - &Connecta a través d'un proxy SOCKS5 (proxy per defecte): - - - Proxy &IP: - &IP del proxy: - - - &Port: - &Port: - - - Port of the proxy (e.g. 9050) - Port del proxy (per exemple 9050) - - - &Window - &Finestra - - - Show only a tray icon after minimizing the window. - Mostra només la icona de la barra en minimitzar la finestra. - - - &Minimize to the tray instead of the taskbar - &Minimitza a la barra d'aplicacions en comptes de la barra de tasques - - - M&inimize on close - M&inimitza en tancar - - - &Display - &Pantalla - - - User Interface &language: - &Llengua de la interfície d'usuari: - - - &Unit to show amounts in: - &Unitats per mostrar els imports en: - - - Choose the default subdivision unit to show in the interface and when sending coins. - Selecciona la unitat de subdivisió per defecte per mostrar en la interfície quan s'envien monedes. - - - Whether to show coin control features or not. - Si voleu mostrar les funcions de control de monedes o no. - - - &OK - &D'acord - - - &Cancel - &Cancel·la - - - default - Per defecte - - - none - cap - - - Confirm options reset - Confirmeu el reestabliment de les opcions - - - Client restart required to activate changes. - Cal reiniciar el client per activar els canvis. - - - Client will be shut down. Do you want to proceed? - S'aturarà el client. Voleu procedir? - - - This change would require a client restart. - Amb aquest canvi cal un reinici del client. - - - The supplied proxy address is invalid. - L'adreça proxy introduïda és invalida. - - - - OverviewPage - - Form - Formulari - - - The displayed information may be out of date. Your wallet automatically synchronizes with the Bitcoin network after a connection is established, but this process has not completed yet. - La informació mostrada pot no estar al día. El teu moneder es sincronitza automàticament amb la xarxa Bitcoin un cop s'ha establert connexió, però aquest proces no s'ha completat encara. - - - Watch-only: - Només lectura: - - - Available: - Disponible: - - - Your current spendable balance - El balanç que podeu gastar actualment - - - Pending: - Pendent: - - - Total of transactions that have yet to be confirmed, and do not yet count toward the spendable balance - Total de transaccions que encara han de confirmar-se i que encara no compten en el balanç que es pot gastar - - - Immature: - Immadur: - - - Mined balance that has not yet matured - Balanç minat que encara no ha madurat - - - Balances - Balances - - - Total: - Total: - - - Your current total balance - El balanç total actual - - - Your current balance in watch-only addresses - El vostre balanç actual en adreces de només lectura - - - Spendable: - Que es pot gastar: - - - Recent transactions - Transaccions recents - - - Unconfirmed transactions to watch-only addresses - Transaccions sense confirmar a adreces de només lectura - - - Mined balance in watch-only addresses that has not yet matured - Balanç minat en adreces de només lectura que encara no ha madurat - - - Current total balance in watch-only addresses - Balanç total actual en adreces de només lectura - - - - PaymentServer - - URI handling - Gestió d'URI - - - Invalid payment address %1 - Adreça de pagament no vàlida %1 - - - Payment request rejected - La sol·licitud de pagament s'ha rebutjat - - - Payment request network doesn't match client network. - La xarxa de la sol·licitud de pagament no coincideix amb la xarxa del client. - - - Payment request is not initialized. - La sol·licitud de pagament no està inicialitzada. - - - Requested payment amount of %1 is too small (considered dust). - L'import de pagament sol·licitat %1 és massa petit (es considera polsim). - - - Payment request error - Error en la sol·licitud de pagament - - - Cannot start bitcoin: click-to-pay handler - No es pot iniciar bitcoin: gestor clica-per-pagar - - - Payment request fetch URL is invalid: %1 - L'URL de recuperació de la sol·licitud de pagament no és vàlida: %1 - - - URI cannot be parsed! This can be caused by an invalid Bitcoin address or malformed URI parameters. - L'URI no pot ser analitzat! Això pot ser a causa d'una adreça de Bitcoin no vàlida o per paràmetres URI amb mal format. - - - Payment request file handling - Gestió de fitxers de les sol·licituds de pagament - - - Payment request file cannot be read! This can be caused by an invalid payment request file. - No es pot llegir el fitxer de la sol·licitud de pagament. Això pot ser causat per un fitxer de sol·licitud de pagament no vàlid. - - - Payment request expired. - La sol·licitud de pagament ha vençut. - - - Unverified payment requests to custom payment scripts are unsupported. - No s'accepten sol·licituds de pagament no verificades a scripts de pagament personalitzats. - - - Invalid payment request. - Sol·licitud de pagament no vàlida. - - - Refund from %1 - Reemborsament de %1 - - - Payment request %1 is too large (%2 bytes, allowed %3 bytes). - La sol·licitud de pagament %1 és massa gran (%2 bytes, permès %3 bytes). - - - Payment request DoS protection - Protecció de DoS per a la sol·licitud de pagament - - - Error communicating with %1: %2 - Error en comunicar amb %1: %2 - - - Payment request cannot be parsed! - No es pot analitzar la sol·licitud de pagament! - - - Bad response from server %1 - Mala resposta del servidor %1 - - - Payment acknowledged - Pagament reconegut - - - Network request error - Error en la sol·licitud de xarxa - - - - PeerTableModel - - User Agent - Agent d'usuari - - - Node/Service - Node/Servei - - - Ping Time - Temps de ping - - - - QObject - - Amount - Import - - - Enter a Bitcoin address (e.g. %1) - Introduïu una adreça de Bitcoin (p. ex. %1) - - - %1 d - %1 d - - - %1 h - %1 h - - - %1 m - %1 m - - - %1 s - %1 s - - - None - Cap - - - N/A - N/A - - - %1 ms - %1 ms - - - - QRImageWidget - - &Save Image... - De&sa la imatge... - - - &Copy Image - &Copia la imatge - - - Save QR Code - Desa el codi QR - - - PNG Image (*.png) - Imatge PNG (*.png) - - - - RPCConsole - - Client name - Nom del client - - - N/A - N/A - - - Client version - Versió del client - - - &Information - &Informació - - - Debug window - Finestra de depuració - - - General - General - - - Using OpenSSL version - Utilitzant OpenSSL versió - - - Using BerkeleyDB version - Utilitzant BerkeleyDB versió - - - Startup time - &Temps d'inici - - - Network - Xarxa - - - Name - Nom - - - Number of connections - Nombre de connexions - - - Block chain - Cadena de blocs - - - Current number of blocks - Nombre de blocs actuals - - - Open the Bitcoin Core debug log file from the current data directory. This can take a few seconds for large log files. - Obre el fitxer de registre de depuració del Bitcoin Core del directori de dades actual. Pot portar uns quants segons per a fitxers de registre grans. - - - Received - Rebut - - - Sent - Enviat - - - &Peers - &Iguals - - - Select a peer to view detailed information. - Seleccioneu un igual per mostrar informació detallada. - - - Direction - Direcció - - - Version - Versió - - - User Agent - Agent d'usuari - - - Services - Serveis - - - Starting Height - Alçada inicial - - - Sync Height - Sincronitza l'alçada - - - Ban Score - Puntuació de bandeig - - - Connection Time - Temps de connexió - - - Last Send - Darrer enviament - - - Last Receive - Darrera recepció - - - Bytes Sent - Bytes enviats - - - Bytes Received - Bytes rebuts - - - Ping Time - Temps de ping - - - Time Offset - Diferència horària - - - Last block time - Últim temps de bloc - - - &Open - &Obre - - - &Console - &Consola - - - &Network Traffic - Trà&nsit de la xarxa - - - &Clear - Nete&ja - - - Totals - Totals - - - In: - Dins: - - - Out: - Fora: - - - Build date - Data de compilació - - - Debug log file - Fitxer de registre de depuració - - - Clear console - Neteja la consola - - - Welcome to the Bitcoin Core RPC console. - Us donem la benviguda a la consola RPC del Bitcoin Core. - - - Use up and down arrows to navigate history, and <b>Ctrl-L</b> to clear screen. - Utilitza les fletxes d'amunt i avall per navegar per l'historial, i <b>Ctrl-L<\b> per netejar la pantalla. - - - Type <b>help</b> for an overview of available commands. - Escriviu <b>help<\b> per a obtenir un llistat de les ordres disponibles. - - - %1 B - %1 B - - - %1 KB - %1 KB - - - %1 MB - %1 MB - - - %1 GB - %1 GB - - - via %1 - a través de %1 - - - never - mai - - - Inbound - Entrant - - - Outbound - Sortint - - - Unknown - Desconegut - - - Fetching... - S'està obtenint... - - - - ReceiveCoinsDialog - - &Amount: - Im&port: - - - &Label: - &Etiqueta: - - - &Message: - &Missatge: - - - Reuse one of the previously used receiving addresses. Reusing addresses has security and privacy issues. Do not use this unless re-generating a payment request made before. - Reutilitza una de les adreces de recepció utilitzades anteriorment. La reutilització d'adreces pot comportar problemes de seguretat i privadesa. No ho utilitzeu llevat que torneu a generar una sol·licitud de pagament feta abans. - - - R&euse an existing receiving address (not recommended) - R&eutilitza una adreça de recepció anterior (no recomanat) - - - An optional message to attach to the payment request, which will be displayed when the request is opened. Note: The message will not be sent with the payment over the Bitcoin network. - Un missatge opcional que s'adjuntarà a la sol·licitud de pagament, que es mostrarà quan s'obri la sol·licitud. Nota: El missatge no s'enviarà amb el pagament per la xarxa Bitcoin. - - - An optional label to associate with the new receiving address. - Una etiqueta opcional que s'associarà amb la nova adreça receptora. - - - Use this form to request payments. All fields are <b>optional</b>. - Utilitzeu aquest formulari per sol·licitar pagaments. Tots els camps són <b>opcionals</b>. - - - An optional amount to request. Leave this empty or zero to not request a specific amount. - Un import opcional per sol·licitar. Deixeu-ho en blanc o zero per no sol·licitar cap import específic. - - - Clear all fields of the form. - Esborra tots els camps del formuari. - - - Clear - Neteja - - - Requested payments history - Historial de pagaments sol·licitats - - - &Request payment - &Sol·licitud de pagament - - - Show the selected request (does the same as double clicking an entry) - Mostra la sol·licitud seleccionada (fa el mateix que el doble clic a una entrada) - - - Show - Mostra - - - Remove the selected entries from the list - Esborra les entrades seleccionades de la llista - - - Remove - Esborra - - - Copy label - Copia l'etiqueta - - - Copy message - Copia el missatge - - - Copy amount - Copia l'import - - - - ReceiveRequestDialog - - QR Code - Codi QR - - - Copy &URI - Copia l'&URI - - - Copy &Address - Copia l'&adreça - - - &Save Image... - De&sa la imatge... - - - Request payment to %1 - Sol·licita un pagament a %1 - - - Payment information - Informació de pagament - - - URI - URI - - - Address - Adreça - - - Amount - Import - - - Label - Etiqueta - - - Message - Missatge - - - Resulting URI too long, try to reduce the text for label / message. - URI resultant massa llarga, intenta reduir el text per a la etiqueta / missatge - - - Error encoding URI into QR Code. - Error en codificar l'URI en un codi QR. - - - - RecentRequestsTableModel - - Date - Data - - - Label - Etiqueta - - - Message - Missatge - - - Amount - Import - - - (no label) - (sense etiqueta) - - - (no message) - (sense missatge) - - - (no amount) - (sense import) - - - - SendCoinsDialog - - Send Coins - Envia monedes - - - Coin Control Features - Característiques de control de les monedes - - - Inputs... - Entrades... - - - automatically selected - seleccionat automàticament - - - Insufficient funds! - Fons insuficients! - - - Quantity: - Quantitat: - - - Bytes: - Bytes: - - - Amount: - Import: - - - Priority: - Prioritat: - - - Fee: - Comissió: - - - After Fee: - Comissió posterior: - - - Change: - Canvi: - - - If this is activated, but the change address is empty or invalid, change will be sent to a newly generated address. - Si s'activa això, però l'adreça de canvi està buida o bé no és vàlida, el canvi s'enviarà a una adreça generada de nou. - - - Custom change address - Personalitza l'adreça de canvi - - - Transaction Fee: - Comissió de transacció - - - Choose... - Tria... - - - collapse fee-settings - redueix els paràmetres de comissió - - - per kilobyte - per kilobyte - - - 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. - 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. - - - Hide - Amaga - - - total at least - total com a mínim - - - 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. - 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. - - - (read the tooltip) - (llegiu l'indicador de funció) - - - Recommended: - Recomanada: - - - Custom: - Personalitzada: - - - (Smart fee not initialized yet. This usually takes a few blocks...) - (No s'ha inicialitzat encara la comissió intel·ligent. Normalment pren uns pocs blocs...) - - - Confirmation time: - Temps de confirmació: - - - normal - normal - - - fast - ràpid - - - Send as zero-fee transaction if possible - Envia com a transacció de comissió zero si és possible - - - (confirmation may take longer) - (la confirmació pot trigar més temps) - - - Send to multiple recipients at once - Envia a múltiples destinataris al mateix temps - - - Add &Recipient - Afegeix &destinatari - - - Clear all fields of the form. - Netejar tots els camps del formulari. - - - Dust: - Polsim: - - - Clear &All - Neteja-ho &tot - - - Balance: - Balanç: - - - Confirm the send action - Confirma l'acció d'enviament - - - S&end - E&nvia - - - Confirm send coins - Confirma l'enviament de monedes - - - %1 to %2 - %1 a %2 - - - Copy quantity - Copia la quantitat - - - Copy amount - Copia l'import - - - Copy fee - Copia la comissió - - - Copy after fee - Copia la comissió posterior - - - Copy bytes - Copia els bytes - - - Copy priority - Copia la prioritat - - - Copy change - Copia el canvi - - - or - o - - - The amount to pay must be larger than 0. - L'import a pagar ha de ser major que 0. - - - The amount exceeds your balance. - L'import supera el vostre balanç. - - - The total exceeds your balance when the %1 transaction fee is included. - El total excedeix el teu balanç quan s'afegeix la comissió a la transacció %1. - - - Transaction creation failed! - Ha fallat la creació de la transacció! - - - 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. - 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. - - - A fee higher than %1 is considered an absurdly high fee. - Una comissió superior a %1 es considera una comissió absurdament alta. - - - Payment request expired. - La sol·licitud de pagament ha vençut. - - - Estimated to begin confirmation within %n block(s). - Estimat per començar la confirmació en %n bloc.Estimat per començar la confirmació en %n blocs. - - - Pay only the minimum fee of %1 - Paga només la comissió mínima de %1 - - - The recipient address is not valid. Please recheck. - L'adreça de destinatari no és vàlida. Torneu-la a comprovar. - - - Duplicate address found: addresses should only be used once each. - S'ha trobat una adreça duplicada: cal utilitzar les adreces només un cop cada vegada. - - - Warning: Invalid Bitcoin address - Avís: adreça Bitcoin no vàlida - - - (no label) - (sense etiqueta) - - - Warning: Unknown change address - Avís: adreça de canvi desconeguda - - - Copy dust - Copia el polsim - - - Are you sure you want to send? - Esteu segur que ho voleu enviar? - - - added as transaction fee - S'ha afegit una taxa de transacció - - - - SendCoinsEntry - - A&mount: - Q&uantitat: - - - Pay &To: - Paga &a: - - - Enter a label for this address to add it to your address book - Introduïu una etiqueta per a aquesta adreça per afegir-la a la llibreta d'adreces - - - &Label: - &Etiqueta: - - - Choose previously used address - Escull una adreça feta servir anteriorment - - - This is a normal payment. - Això és un pagament normal. - - - The Bitcoin address to send the payment to - L'adreça Bitcoin on enviar el pagament - - - Alt+A - Alta+A - - - Paste address from clipboard - Enganxar adreça del porta-retalls - - - Alt+P - Alt+P - - - Remove this entry - Elimina aquesta entrada - - - The fee will be deducted from the amount being sent. The recipient will receive less bitcoins than you enter in the amount field. If multiple recipients are selected, the fee is split equally. - La comissió es deduirà de l'import que s'enviarà. El destinatari rebrà menys bitcoins que les que introduïu al camp d'import. Si se seleccionen múltiples destinataris, la comissió es dividirà per igual. - - - S&ubtract fee from amount - S&ubstreu la comissió de l'import - - - Message: - Missatge: - - - This is an unauthenticated payment request. - Aquesta és una sol·licitud de pagament no autenticada. - - - This is an authenticated payment request. - Aquesta és una sol·licitud de pagament autenticada. - - - Enter a label for this address to add it to the list of used addresses - Introduïu una etiqueta per a aquesta adreça per afegir-la a la llista d'adreces utilitzades - - - A message that was attached to the bitcoin: URI which will be stored with the transaction for your reference. Note: This message will not be sent over the Bitcoin network. - Un missatge que s'ha adjuntat al bitcoin: URI que s'emmagatzemarà amb la transacció per a la vostra referència. Nota: el missatge no s'enviarà a través de la xarxa Bitcoin. - - - Pay To: - Paga a: - - - Memo: - Memo: - - - - ShutdownWindow - - Bitcoin Core is shutting down... - S'està aturant el Bitcoin Core... - - - Do not shut down the computer until this window disappears. - No apagueu l'ordinador fins que no desaparegui aquesta finestra. - - - - SignVerifyMessageDialog - - Signatures - Sign / Verify a Message - Signatures - Signa / verifica un missatge - - - &Sign Message - &Signa el missatge - - - You can sign messages/agreements with your addresses to prove you can receive bitcoins sent to them. Be careful not to sign anything vague or random, as phishing attacks may try to trick you into signing your identity over to them. Only sign fully-detailed statements you agree to. - Podeu signar missatges/acords amb les vostres adreces per provar que rebeu les bitcoins que s'hi envien. Aneu amb compte no signar res que sigui vague o aleatori, perquè en alguns atacs de suplantació es pot provar que hi signeu la vostra identitat. Només signeu aquelles declaracions completament detallades en què hi esteu d'acord. - - - The Bitcoin address to sign the message with - L'adreça Bitcoin amb què signar el missatge - - - Choose previously used address - Tria les adreces fetes servir amb anterioritat - - - Alt+A - Alt+A - - - Paste address from clipboard - Enganxa l'adreça del porta-retalls - - - Alt+P - Alt+P - - - Enter the message you want to sign here - Introduïu aquí el missatge que voleu signar - - - Signature - Signatura - - - Copy the current signature to the system clipboard - Copia la signatura actual al porta-retalls del sistema - - - Sign the message to prove you own this Bitcoin address - Signa el missatge per provar que ets propietari d'aquesta adreça Bitcoin - - - Sign &Message - Signa el &missatge - - - Reset all sign message fields - Neteja tots els camps de clau - - - Clear &All - Neteja-ho &tot - - - &Verify Message - &Verifica el missatge - - - Enter the receiver's address, message (ensure you copy line breaks, spaces, tabs, etc. exactly) and signature below to verify the message. Be careful not to read more into the signature than what is in the signed message itself, to avoid being tricked by a man-in-the-middle attack. Note that this only proves the signing party receives with the address, it cannot prove sendership of any transaction! - Introduïu l'adreça del receptor, el missatge (assegureu-vos de copiar els salts de línia, espais, tabuladors, etc. exactament) i signatura de sota per verificar el missatge. Tingueu cura de no llegir més en la signatura del que està al missatge signat, per evitar ser enganyat per un atac d'home-en-el-mig. Tingueu en compte que això només demostra que la part que signa rep amb l'adreça, i no es pot provar l'enviament de qualsevol transacció! - - - The Bitcoin address the message was signed with - L'adreça Bitcoin amb què va ser signat el missatge - - - Verify the message to ensure it was signed with the specified Bitcoin address - Verificar el missatge per assegurar-se que ha estat signat amb una adreça Bitcoin específica - - - Verify &Message - Verifica el &missatge - - - Reset all verify message fields - Neteja tots els camps de verificació de missatge - - - Click "Sign Message" to generate signature - Feu clic a «Signa el missatge» per a generar una signatura - - - The entered address is invalid. - L'adreça introduïda no és vàlida. - - - Please check the address and try again. - Comproveu l'adreça i torneu-ho a provar. - - - The entered address does not refer to a key. - L'adreça introduïda no referencia a cap clau. - - - Wallet unlock was cancelled. - El desbloqueig del moneder ha estat cancelat. - - - Private key for the entered address is not available. - La clau privada per a la adreça introduïda no està disponible. - - - Message signing failed. - La signatura del missatge ha fallat. - - - Message signed. - Missatge signat. - - - The signature could not be decoded. - La signatura no s'ha pogut descodificar. - - - Please check the signature and try again. - Comproveu la signatura i torneu-ho a provar. - - - The signature did not match the message digest. - La signatura no coincideix amb el resum del missatge. - - - Message verification failed. - Ha fallat la verificació del missatge. - - - Message verified. - Missatge verificat. - - - - SplashScreen - - Bitcoin Core - Bitcoin Core - - - The Bitcoin Core developers - Els desenvolupadors del Bitcoin Core - - - [testnet] - [testnet] - - - - TrafficGraphWidget - - KB/s - KB/s - - - - TransactionDesc - - Open until %1 - Obert fins %1 - - - conflicted - en conflicte - - - %1/offline - %1/fora de línia - - - %1/unconfirmed - %1/sense confirmar - - - %1 confirmations - %1 confirmacions - - - Status - Estat - - - , broadcast through %n node(s) - , difusió a través de %n node, difusió a través de %n nodes - - - Date - Data - - - Source - Font - - - Generated - Generat - - - From - Des de - - - To - A - - - own address - Adreça pròpia - - - watch-only - només lectura - - - label - etiqueta - - - Credit - Crèdit - - - matures in %n more block(s) - disponible en %n bloc mésdisponibles en %n blocs més - - - not accepted - no acceptat - - - Debit - Dèbit - - - Total debit - Dèbit total - - - Total credit - Crèdit total - - - Transaction fee - Comissió de transacció - - - Net amount - Import net - - - Message - Missatge - - - Comment - Comentar - - - Transaction ID - ID de transacció - - - Merchant - Mercader - - - Generated coins must mature %1 blocks before they can be spent. When you generated this block, it was broadcast to the network to be added to the block chain. If it fails to get into the chain, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - Les monedes generades han de madurar %1 blocs abans de poder ser gastades. Quan genereu aquest bloc, es farà saber a la xarxa per tal d'afegir-lo a la cadena de blocs. Si no pot fer-se lloc a la cadena, el seu estat canviarà a «no acceptat» i no es podrà gastar. Això pot passar ocasionalment si un altre node genera un bloc en un marge de segons respecte al vostre. - - - Debug information - Informació de depuració - - - Transaction - Transacció - - - Inputs - Entrades - - - Amount - Import - - - true - cert - - - false - fals - - - , has not been successfully broadcast yet - , encara no ha estat emès correctement - - - Open for %n more block(s) - Obre per %n bloc mésObre per %n blocs més - - - unknown - desconegut - - - - TransactionDescDialog - - Transaction details - Detall de la transacció - - - This pane shows a detailed description of the transaction - Aquest panell mostra una descripció detallada de la transacció - - - - TransactionTableModel - - Date - Data - - - Type - Tipus - - - Immature (%1 confirmations, will be available after %2) - Immadur (%1 confirmacions, serà disponible després de %2) - - - Open for %n more block(s) - Obre per %n bloc mésObre per %n blocs més - - - Open until %1 - Obert fins %1 - - - Confirmed (%1 confirmations) - Confirmat (%1 confirmacions) - - - This block was not received by any other nodes and will probably not be accepted! - Aquest bloc no ha estat rebut per cap altre node i probablement no serà acceptat! - - - Generated but not accepted - Generat però no acceptat - - - Offline - Fora de línia - - - Label - Etiqueta - - - Unconfirmed - Sense confirmar - - - Confirming (%1 of %2 recommended confirmations) - Confirmant (%1 de %2 confirmacions recomanades) - - - Conflicted - En conflicte - - - Received with - Rebut amb - - - Received from - Rebut de - - - Sent to - Enviat a - - - Payment to yourself - Pagament a un mateix - - - Mined - Minat - - - watch-only - només lectura - - - (n/a) - (n/a) - - - Transaction status. Hover over this field to show number of confirmations. - Estat de la transacció. Desplaceu-vos sobre aquest camp per mostrar el nombre de confirmacions. - - - Date and time that the transaction was received. - Data i hora en que la transacció va ser rebuda. - - - Type of transaction. - Tipus de transacció. - - - Whether or not a watch-only address is involved in this transaction. - Si està implicada o no una adreça només de lectura en la transacció. - - - User-defined intent/purpose of the transaction. - Intenció/propòsit de la transacció definida per l'usuari. - - - Amount removed from or added to balance. - Import extret o afegit del balanç. - - - - TransactionView - - All - Tot - - - Today - Avui - - - This week - Aquesta setmana - - - This month - Aquest mes - - - Last month - El mes passat - - - This year - Enguany - - - Range... - Rang... - - - Received with - Rebut amb - - - Sent to - Enviat a - - - To yourself - A un mateix - - - Mined - Minat - - - Other - Altres - - - Enter address or label to search - Introduïu una adreça o una etiqueta per cercar - - - Min amount - Import mínim - - - Copy address - Copia l'adreça - - - Copy label - Copiar etiqueta - - - Copy amount - Copia l'import - - - Copy transaction ID - Copiar ID de transacció - - - Edit label - Editar etiqueta - - - Show transaction details - Mostra detalls de la transacció - - - Export Transaction History - Exporta l'historial de transacció - - - Watch-only - Només de lectura - - - Exporting Failed - L'exportació ha fallat - - - There was an error trying to save the transaction history to %1. - S'ha produït un error en provar de desar l'historial de transacció a %1. - - - Exporting Successful - Exportació amb èxit - - - The transaction history was successfully saved to %1. - L'historial de transaccions s'ha desat correctament a %1. - - - Comma separated file (*.csv) - Fitxer separat per comes (*.csv) - - - Confirmed - Confirmat - - - Date - Data - - - Type - Tipus - - - Label - Etiqueta - - - Address - Adreça - - - ID - ID - - - Range: - Rang: - - - to - a - - - - UnitDisplayStatusBarControl - - Unit to show amounts in. Click to select another unit. - Unitat en què mostrar els imports. Feu clic per seleccionar una altra unitat. - - - - WalletFrame - - No wallet has been loaded. - No s'ha carregat cap moneder. - - - - WalletModel - - Send Coins - Envia monedes - - - - WalletView - - &Export - &Exporta - - - Export the data in the current tab to a file - Exporta les dades de la pestanya actual a un fitxer - - - Backup Wallet - Còpia de seguretat del moneder - - - Wallet Data (*.dat) - Dades del moneder (*.dat) - - - Backup Failed - Ha fallat la còpia de seguretat - - - There was an error trying to save the wallet data to %1. - S'ha produït un error en provar de desar les dades del moneder a %1. - - - The wallet data was successfully saved to %1. - S'han desat les dades del moneder correctament a %1. - - - Backup Successful - La còpia de seguretat s'ha realitzat correctament - - - - bitcoin-core - - Options: - Opcions: - - - Specify data directory - Especifica el directori de dades - - - Connect to a node to retrieve peer addresses, and disconnect - Connecta al node per obtenir les adreces de les connexions, i desconnecta - - - Specify your own public address - Especifiqueu la vostra adreça pública - - - Accept command line and JSON-RPC commands - Accepta la línia d'ordres i ordres JSON-RPC - - - Run in the background as a daemon and accept commands - Executa en segon pla com a programa dimoni i accepta ordres - - - Use the test network - Utilitza la xarxa de prova - - - Accept connections from outside (default: 1 if no -proxy or -connect) - Accepta connexions de fora (per defecte: 1 si no -proxy o -connect) - - - Bind to given address and always listen on it. Use [host]:port notation for IPv6 - Vincula a una adreça específica i sempre escolta-hi. Utilitza la notació [host]:port per IPv6 - - - Delete all wallet transactions and only recover those parts of the blockchain through -rescan on startup - Elimina totes les transaccions del moneder i només recupera aquelles de la cadena de blocs a través de -rescan a l'inici - - - Distributed under the MIT software license, see the accompanying file COPYING or <http://www.opensource.org/licenses/mit-license.php>. - Distribuït sota llicència de programari MIT. Vegeu el fitxer acompanyant COPYING o <http://www.opensource.org/licenses/mit-license.php>. - - - Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) - Executa una ordre quan una transacció del moneder canviï (%s en cmd es canvia per TxID) - - - Maximum total fees to use in a single wallet transaction; setting this too low may abort large transactions (default: %s) - Comissions totals màximes que s'utilitzaran en una única transacció de moneder; si s'estableix un valor massa baix es poden interrompre transaccions grans (per defecte: %s) - - - Reduce storage requirements by pruning (deleting) old blocks. This mode disables wallet support and is incompatible with -txindex. Warning: Reverting this setting requires re-downloading the entire blockchain. (default: 0 = disable pruning blocks, >%u = target size in MiB to use for block files) - Redueix els requeriments d'emmagatzemament podant (suprimint) els blocs antics. Aquest mode inhabilita l'ús de moneders i és incompatible amb -tindex. Avís: Revertir aquesta configuració comporta tornar a baixar la cadena de blocs sencera. (per defecte: 0 = inhabilita la poda de blocs, >%u = mida objectiu en MiB per utilitzar els fitxers de blocs) - - - Set the number of script verification threads (%u to %d, 0 = auto, <0 = leave that many cores free, default: %d) - Defineix el nombre de fils de verificació d'scripts (%u a %d, 0 = auto, <0 = deixa tants nuclis lliures, per defecte: %d) - - - This is a pre-release test build - use at your own risk - do not use for mining or merchant applications - Aquesta és una versió de pre-llançament - utilitza-la sota la teva responsabilitat - No usar per a minería o aplicacions de compra-venda - - - Unable to bind to %s on this computer. Bitcoin Core is probably already running. - No es pot enllaçar %s a aquest ordinador. El Bitcoin Core probablement ja estigui executant-s'hi. - - - WARNING: abnormally high number of blocks generated, %d blocks received in the last %d hours (%d expected) - AVÃS: s'ha generat un nombre anòmalament alt de blocs, %d blocs rebuts en les darreres %d hores (se n'esperaven %d) - - - WARNING: check your network connection, %d blocks received in the last %d hours (%d expected) - AVÃS: comproveu la vostra connexió a la xarxa, %d blocs rebuts en les darreres %d hores (se n'esperaven %d) - - - Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. - Avís: el -paytxfee és molt elevat! Aquesta és la comissió de transacció que pagareu si envieu una transacció. - - - Warning: The network does not appear to fully agree! Some miners appear to be experiencing issues. - Avís: la xarxa no sembla que hi estigui plenament d'acord. Alguns miners sembla que estan experimentant problemes. - - - Warning: We do not appear to fully agree with our peers! You may need to upgrade, or other nodes may need to upgrade. - Avís: sembla que no estem plenament d'acord amb els nostres iguals! Podria caler que actualitzar l'aplicació, o potser que ho facin altres nodes. - - - Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. - Avís: error en llegir el fitxer wallet.dat! Totes les claus es llegeixen correctament, però hi ha dades de transaccions o entrades de la llibreta d'adreces absents o bé son incorrectes. - - - 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. - 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. - - - Whitelist peers connecting from the given netmask or IP address. Can be specified multiple times. - 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. - - - (default: 1) - (per defecte: 1) - - - <category> can be: - <category> pot ser: - - - Attempt to recover private keys from a corrupt wallet.dat - Intenta recuperar les claus privades d'un fitxer wallet.dat corrupte - - - Block creation options: - Opcions de la creació de blocs: - - - Connect only to the specified node(s) - Connecta només al(s) node(s) especificats - - - Connection options: - Opcions de connexió: - - - Corrupted block database detected - S'ha detectat una base de dades de blocs corrupta - - - Debugging/Testing options: - Opcions de depuració/proves: - - - Do not load the wallet and disable wallet RPC calls - No carreguis el moneder i inhabilita les crides RPC del moneder - - - Do you want to rebuild the block database now? - Voleu reconstruir la base de dades de blocs ara? - - - Error initializing block database - Error carregant la base de dades de blocs - - - Error initializing wallet database environment %s! - Error inicialitzant l'entorn de la base de dades del moneder %s! - - - Error loading block database - Error carregant la base de dades del bloc - - - Error opening block database - Error en obrir la base de dades de blocs - - - Error: Disk space is low! - Error: Espai al disc baix! - - - Failed to listen on any port. Use -listen=0 if you want this. - Ha fallat escoltar a qualsevol port. Feu servir -listen=0 si voleu fer això. - - - If <category> is not supplied, output all debugging information. - Si no se subministra <category>, mostra tota la informació de depuració. - - - Importing... - S'està important... - - - Incorrect or no genesis block found. Wrong datadir for network? - No s'ha trobat el bloc de gènesi o és incorrecte. El directori de dades de la xarxa és incorrecte? - - - Invalid -onion address: '%s' - Adreça -onion no vàlida: '%s' - - - Not enough file descriptors available. - No hi ha suficient descriptors de fitxers disponibles. - - - Only connect to nodes in network <net> (ipv4, ipv6 or onion) - Només connecta als nodes de la xarxa <net> (ipv4, ipv6 o onion) - - - Prune cannot be configured with a negative value. - La poda no es pot configurar amb un valor negatiu. - - - Prune mode is incompatible with -txindex. - El mode de poda és incompatible amb -txindex. - - - Set database cache size in megabytes (%d to %d, default: %d) - Defineix la mida de la memòria cau de la base de dades en megabytes (%d a %d, per defecte: %d) - - - Set maximum block size in bytes (default: %d) - Defineix la mida màxim del bloc en bytes (per defecte: %d) - - - Specify wallet file (within data directory) - Especifica un fitxer de moneder (dins del directori de dades) - - - Use UPnP to map the listening port (default: %u) - Utilitza UPnP per a mapejar el port d'escolta (per defecte: %u) - - - Verifying blocks... - S'estan verificant els blocs... - - - Verifying wallet... - S'està verificant el moneder... - - - Wallet %s resides outside data directory %s - El moneder %s resideix fora del directori de dades %s - - - Wallet options: - Opcions de moneder: - - - Warning: This version is obsolete; upgrade required! - Avís: aquesta versió és obsoleta; cal actualitzar-la! - - - You need to rebuild the database using -reindex to change -txindex - Cal que reconstruïu la base de dades fent servir -reindex per canviar -txindex - - - Imports blocks from external blk000??.dat file - Importa blocs de un fitxer blk000??.dat extern - - - 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 - Permet les connexions JSON-RPC d'una font específica. Vàlid per a <ip> són una IP individual (p. ex., 1.2.3.4), una xarxa / màscara de xarxa (p. ex., 1.2.3.4/255.255.255.0) o una xarxa/CIDR (p. ex., 1.2.3.4/24). Es pot especificar aquesta opció moltes vegades - - - Bind to given address and whitelist peers connecting to it. Use [host]:port notation for IPv6 - Vincula l'adreça donada i posa a la llista blanca els iguals que s'hi connectin. Feu servir la notació [host]:port per a IPv6 - - - Bind to given address to listen for JSON-RPC connections. Use [host]:port notation for IPv6. This option can be specified multiple times (default: bind to all interfaces) - Vincula a l'adreça donada per a escoltar les connexions JSON-RPC. Feu servir la notació [host]:port per a IPv6. Aquesta opció pot ser especificada moltes vegades (per defecte: vincula a totes les interfícies) - - - Cannot obtain a lock on data directory %s. Bitcoin Core is probably already running. - No es pot obtenir un bloqueig del directori de dades %s. El Bitcoin Core probablement ja s'estigui executant. - - - Create new files with system default permissions, instead of umask 077 (only effective with disabled wallet functionality) - 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) - - - Discover own IP addresses (default: 1 when listening and no -externalip or -proxy) - Descobreix l'adreça IP pròpia (per defecte: 1 quan s'escolta i no -externalip o -proxy) - - - Error: Listening for incoming connections failed (listen returned error %s) - Error: ha fallat escoltar les connexions entrants (l'escoltament ha retornat l'error %s) - - - Error: Unsupported argument -socks found. Setting SOCKS version isn't possible anymore, only SOCKS5 proxies are supported. - Error: s'ha trobat un argument no permès de -socks. Ja no es pot definir més la versió de SOCKS, només s'accepten els proxies de SOCKS5.ç - - - Execute command when a relevant alert is received or we see a really long fork (%s in cmd is replaced by message) - Executa l'ordre quan es rebi un avís rellevant o veiem una forquilla molt llarga (%s en cmd és reemplaçat per un missatge) - - - Fees (in BTC/Kb) smaller than this are considered zero fee for relaying (default: %s) - Comissions (en BTC/Kb) inferiors a això es consideren de comissió zero per a la transmissió (per defecte: %s) - - - If paytxfee is not set, include enough fee so transactions begin confirmation on average within n blocks (default: %u) - 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) - - - Invalid amount for -maxtxfee=<amount>: '%s' (must be at least the minrelay fee of %s to prevent stuck transactions) - 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) - - - Maximum size of data in data carrier transactions we relay and mine (default: %u) - Mida màxima de les dades en les transaccions de l'operador en què confiem i en les meves (per defecte: %u) - - - Prune configured below the minimum of %d MB. Please use a higher number. - Poda configurada per sota el mínim de %d MB. Feu servir un nombre superior. - - - Query for peer addresses via DNS lookup, if low on addresses (default: 1 unless -connect) - Consulta a adreces d'iguals a través de DNS, si es troba baix en adreces (per defecte: 1 a menys que -connect) - - - Randomize credentials for every proxy connection. This enables Tor stream isolation (default: %u) - Genera a l'atzar credencials per a cada connexió proxy. Això habilita l'aïllament del flux de Tor (per defecte: %u) - - - Set maximum size of high-priority/low-fee transactions in bytes (default: %d) - Defineix la mida màxima de transaccions d'alta prioritat / baixa comissió en bytes (per defecte: %d) - - - Set the number of threads for coin generation if enabled (-1 = all cores, default: %d) - Defineix el nombre de fils per a la generació de moneda si està habilitat (-1 = tots els nuclis, per defecte: %d) - - - The transaction amount is too small to send after the fee has been deducted - L'import de la transacció és massa petit per enviar-la després que se'n dedueixi la comissió - - - 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. - 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. - - - 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 - - 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 - - - Warning: -maxtxfee is set very high! Fees this large could be paid on a single transaction. - Avís: s'ha especificat un -maxtxfee molt alt! Comissions tan grans podrien pagar-se en una única transacció. - - - Warning: Please check that your computer's date and time are correct! If your clock is wrong Bitcoin Core will not work properly. - 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. - - - 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 - 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 - - - You need to rebuild the database using -reindex to go back to unpruned mode. This will redownload the entire blockchain - Cal que torneu a construir la base de dades fent servir -reindex per tornar al mode no podat. Això tornarà a baixar la cadena de blocs sencera - - - (default: %u) - (per defecte: %u) - - - Accept public REST requests (default: %u) - Accepta sol·licituds REST públiques (per defecte: %u) - - - Activating best chain... - S'està activant la millor cadena... - - - Can't run with a wallet in prune mode. - No es pot executar amb un moneder en mode poda. - - - Cannot resolve -whitebind address: '%s' - No es pot resoldre l'adreça -whitebind: «%s» - - - Choose data directory on startup (default: 0) - Tria el directori de dades a l'inici (per defecte: 0) - - - Connect through SOCKS5 proxy - Connecta a través del proxy SOCKS5 - - - Copyright (C) 2009-%i The Bitcoin Core Developers - Copyright (C) 2009-%i Els desenvolupadors del Bitcoin Core - - - Could not parse -rpcbind value %s as network address - No s'ha pogut analitzar el valor -rpcbind %s com una adreça de xarxa - - - Error loading wallet.dat: Wallet requires newer version of Bitcoin Core - Error en carregar wallet.dat: el moneder requereix una versió més nova del Bitcoin core - - - Error reading from database, shutting down. - Error en llegir la base de dades, tancant. - - - Error: Unsupported argument -tor found, use -onion. - Error: s'ha trobat un argument -tor no acceptat. Feu servir -onion. - - - Fee (in BTC/kB) to add to transactions you send (default: %s) - Comissió en (BTC/kB) per afegir a les transaccions que envieu (per defecte: %s) - - - Information - &Informació - - - Initialization sanity check failed. Bitcoin Core is shutting down. - Ha fallat la inicialització de la comprovació de validesa. El Bitcoin Core s'està aturant. - - - Invalid amount for -maxtxfee=<amount>: '%s' - Import no vàlid per a -maxtxfee=<amount>: '%s' - - - Invalid amount for -minrelaytxfee=<amount>: '%s' - Import no vàlid per a -minrelaytxfee=<amount>: «%s» - - - Invalid amount for -mintxfee=<amount>: '%s' - Import no vàlid per a -mintxfee=<amount>: «%s» - - - Invalid amount for -paytxfee=<amount>: '%s' (must be at least %s) - Import no vàlid per a -paytxfee=<amount>: «%s» (ha de ser com a mínim %s) - - - Invalid netmask specified in -whitelist: '%s' - S'ha especificat una màscara de xarxa no vàlida a -whitelist: «%s» - - - Keep at most <n> unconnectable transactions in memory (default: %u) - Manté com a màxim <n> transaccions no connectables en memòria (per defecte: %u) - - - Need to specify a port with -whitebind: '%s' - Cal especificar un port amb -whitebind: «%s» - - - Node relay options: - Opcions de transmissió del node: - - - RPC SSL options: (see the Bitcoin Wiki for SSL setup instructions) - Opcions RPC SSL: (veieu el wiki del Bitcoin per a instruccions de configuració de l'SSL) - - - RPC server options: - Opcions del servidor RPC: - - - RPC support for HTTP persistent connections (default: %d) - Suport RPC per a connexions HTTP persistents (per defecte: %d) - - - Rebuild block chain index from current blk000??.dat files on startup - Reconstrueix l'índex de la cadena de blocs dels fitxers blk000??.dat actuals a l'inici. - - - Receive and display P2P network alerts (default: %u) - Rep i mostra avisos de la xarxa P2P (per defecte: %u) - - - Send trace/debug info to console instead of debug.log file - Envia informació de traça/depuració a la consola en comptes del fitxer debug.log - - - Send transactions as zero-fee transactions if possible (default: %u) - Envia les transaccions com a transaccions de comissió zero sempre que sigui possible (per defecte: %u) - - - Set SSL root certificates for payment request (default: -system-) - Defineix certificats arrel SSL per a la sol·licitud de pagament (per defecte: -sistema-) - - - Set language, for example "de_DE" (default: system locale) - Defineix un idioma, per exemple «de_DE» (per defecte: preferències locals de sistema) - - - Show all debugging options (usage: --help -help-debug) - Mostra totes les opcions de depuració (ús: --help --help-debug) - - - Show splash screen on startup (default: 1) - Mostra la finestra de benvinguda a l'inici (per defecte: 1) - - - Shrink debug.log file on client startup (default: 1 when no -debug) - Redueix el fitxer debug.log durant l'inici del client (per defecte: 1 quan no -debug) - - - Signing transaction failed - Ha fallat la signatura de la transacció - - - Start minimized - Inicia minimitzat - - - The transaction amount is too small to pay the fee - L'import de la transacció és massa petit per pagar-ne una comissió - - - This is experimental software. - Això és programari experimental. - - - Transaction amount too small - Import de la transacció massa petit - - - Transaction amounts must be positive - Els imports de les transaccions han de ser positius - - - Transaction too large for fee policy - Transacció massa gran per a la política de comissions - - - Transaction too large - La transacció és massa gran - - - UI Options: - Opcions d'interfície: - - - Unable to bind to %s on this computer (bind returned error %s) - No s'ha pogut vincular a %s en aquest ordinador (la vinculació ha retornat l'error %s) - - - Use UPnP to map the listening port (default: 1 when listening) - Utilitza UPnP per a mapejar els ports d'escolta (per defecte: 1 quan s'escolta) - - - Username for JSON-RPC connections - Nom d'usuari per a connexions JSON-RPC - - - Wallet needed to be rewritten: restart Bitcoin Core to complete - Cal reescriure el moneder: reiniceu el Bitcoin Core per completar-ho. - - - Warning - Avís - - - Warning: Unsupported argument -benchmark ignored, use -debug=bench. - Avís: s'ha ignorat l'argument no acceptat de -benchmark. Feu servir -debug=bench. - - - Warning: Unsupported argument -debugnet ignored, use -debug=net. - Avís: s'ha ignorat l'argument no acceptat de -debugnet. Feu servir -debug=net. - - - Zapping all transactions from wallet... - Se suprimeixen totes les transaccions del moneder... - - - on startup - a l'inici de l'aplicació - - - wallet.dat corrupt, salvage failed - El fitxer wallet.data és corrupte. El rescat de les dades ha fallat - - - Password for JSON-RPC connections - Contrasenya per a connexions JSON-RPC - - - Execute command when the best block changes (%s in cmd is replaced by block hash) - Executa l'ordre quan el millor bloc canviï (%s en cmd es reemplaça per un resum de bloc) - - - Upgrade wallet to latest format - Actualitza el moneder a l'últim format - - - Rescan the block chain for missing wallet transactions - Reescaneja la cadena de blocs en les transaccions de moneder perdudes - - - Use OpenSSL (https) for JSON-RPC connections - Utilitza OpenSSL (https) per a connexions JSON-RPC - - - This help message - Aquest misatge d'ajuda - - - Allow DNS lookups for -addnode, -seednode and -connect - Permet consultes DNS per a -addnode, -seednode i -connect - - - Loading addresses... - S'estan carregant les adreces... - - - Error loading wallet.dat: Wallet corrupted - Error en carregar wallet.dat: Moneder corrupte - - - (1 = keep tx meta data e.g. account owner and payment request information, 2 = drop tx meta data) - (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) - - - How thorough the block verification of -checkblocks is (0-4, default: %u) - Com d'exhaustiva és la verificació de blocs del -checkblocks (0-4, per defecte: %u) - - - Maintain a full transaction index, used by the getrawtransaction rpc call (default: %u) - Manté un índex complet de transaccions, utilitzat per la crida rpc getrawtransaction (per defecte: %u) - - - Number of seconds to keep misbehaving peers from reconnecting (default: %u) - Nombre de segons necessaris perquè els iguals de comportament qüestionable puguin tornar a connectar-se (per defecte: %u) - - - Output debugging information (default: %u, supplying <category> is optional) - Informació de sortida de la depuració (per defecte: %u, proporcionar <category> és opcional) - - - Use separate SOCKS5 proxy to reach peers via Tor hidden services (default: %s) - Utilitza un proxy SOCKS4 apart per a arribar als iguals a través de serveis ocults de Tor (per defecte: %s) - - - (default: %s) - (per defecte: %s) - - - Acceptable ciphers (default: %s) - Xifrats acceptables (per defecte: %s) - - - Always query for peer addresses via DNS lookup (default: %u) - Demana sempre les adreces dels iguals a través de consultes DNS (per defecte: %u) - - - Error loading wallet.dat - Error en carregar wallet.dat - - - Generate coins (default: %u) - Genera monedes (per defecte: %u) - - - How many blocks to check at startup (default: %u, 0 = all) - Quants blocs per comprovar a l'inici (per defecte: %u, 0 = tots) - - - Include IP addresses in debug output (default: %u) - Inclou l'adreça IP a la sortida de depuració (per defecte: %u) - - - Invalid -proxy address: '%s' - Adreça -proxy invalida: '%s' - - - Listen for JSON-RPC connections on <port> (default: %u or testnet: %u) - Escolta les connexions JSON-RPC en <port> (per defecte: %u o testnet: %u) - - - Listen for connections on <port> (default: %u or testnet: %u) - Escolta les connexions en <port> (per defecte: %u o testnet: %u) - - - Maintain at most <n> connections to peers (default: %u) - Manté com a màxim <n> connexions a iguals (per defecte: %u) - - - Make the wallet broadcast transactions - Fes que el moneder faci difusió de les transaccions - - - Maximum per-connection receive buffer, <n>*1000 bytes (default: %u) - Memòria intermèdia màxima de recepció per connexió, <n>*1000 bytes (per defecte: %u) - - - Maximum per-connection send buffer, <n>*1000 bytes (default: %u) - Memòria intermèdia màxima d'enviament per connexió, <n>*1000 bytes (per defecte: %u) - - - Prepend debug output with timestamp (default: %u) - Posa davant de la sortida de depuració una marca horària (per defecte: %u) - - - Relay and mine data carrier transactions (default: %u) - Retransmet i mina les transaccions de l'operador (per defecte: %u) - - - Relay non-P2SH multisig (default: %u) - Retransmet multisig no P2SH (per defecte: %u) - - - Server certificate file (default: %s) - Fitxer de certificat del servidor (per defecte: %s) - - - Server private key (default: %s) - Clau privada del servidor (per defecte: %s) - - - Set key pool size to <n> (default: %u) - Defineix la mida clau disponible a <n> (per defecte: %u) - - - Set minimum block size in bytes (default: %u) - Defineix la mida de bloc mínima en bytes (per defecte: %u) - - - Set the number of threads to service RPC calls (default: %d) - Defineix el nombre de fils a crides de servei RPC (per defecte: %d) - - - Specify configuration file (default: %s) - Especifica el fitxer de configuració (per defecte: %s) - - - Specify connection timeout in milliseconds (minimum: 1, default: %d) - Especifica el temps d'espera de la connexió en milisegons (mínim: 1, per defecte: %d) - - - Specify pid file (default: %s) - Especifica el fitxer pid (per defecte: %s) - - - Spend unconfirmed change when sending transactions (default: %u) - Gasta el canvi no confirmat en enviar les transaccions (per defecte: %u) - - - Threshold for disconnecting misbehaving peers (default: %u) - Llindar per a desconnectar els iguals de comportament qüestionable (per defecte: %u) - - - Unknown network specified in -onlynet: '%s' - Xarxa desconeguda especificada a -onlynet: '%s' - - - Cannot resolve -bind address: '%s' - No es pot resoldre l'adreça -bind: '%s' - - - Cannot resolve -externalip address: '%s' - No es pot resoldre l'adreça -externalip: '%s' - - - Invalid amount for -paytxfee=<amount>: '%s' - Import no vàlid per a -paytxfee=<amount>: «%s» - - - Insufficient funds - Balanç insuficient - - - Loading block index... - S'està carregant l'índex de blocs... - - - Add a node to connect to and attempt to keep the connection open - Afegeix un node per a connectar-s'hi i intenta mantenir-hi la connexió oberta - - - Loading wallet... - S'està carregant el moneder... - - - Cannot downgrade wallet - No es pot reduir la versió del moneder - - - Cannot write default address - No es pot escriure l'adreça per defecte - - - Rescanning... - S'està reescanejant... - - - Done loading - Ha acabat la càrrega - - - Error - Error - - - \ No newline at end of file diff --git a/src/qt/locale/bitcoin_ca@valencia.ts b/src/qt/locale/bitcoin_ca@valencia.ts deleted file mode 100644 index e007a42e4..000000000 --- a/src/qt/locale/bitcoin_ca@valencia.ts +++ /dev/null @@ -1,3571 +0,0 @@ - - - AddressBookPage - - Right-click to edit address or label - Feu clic dret per a editar l'adreça o l'etiqueta - - - Create a new address - Crea una nova adreça - - - &New - &Nova - - - Copy the currently selected address to the system clipboard - Copia l'adreça seleccionada al porta-retalls del sistema - - - &Copy - &Copia - - - C&lose - &Tanca - - - &Copy Address - &Copia l'adreça - - - Delete the currently selected address from the list - Elimina l'adreça sel·leccionada actualment de la llista - - - Export the data in the current tab to a file - Exporta les dades de la pestanya actual a un fitxer - - - &Export - &Exporta - - - &Delete - &Elimina - - - Choose the address to send coins to - Trieu una adreça on voleu enviar monedes - - - Choose the address to receive coins with - Trieu l'adreça on voleu rebre monedes - - - C&hoose - T&ria - - - Sending addresses - S'estan enviant les adreces - - - Receiving addresses - S'estan rebent les adreces - - - These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins. - Estes són les vostres adreces de Bitcoin per enviar els pagaments. Sempre reviseu l'import i l'adreça del destinatari abans de transferir monedes. - - - These are your Bitcoin addresses for receiving payments. It is recommended to use a new receiving address for each transaction. - Estes són les vostres adreces Bitcoin per rebre pagaments. Es recomana utilitzar una adreça nova de recepció per a cada transacció. - - - Copy &Label - Copia l'&etiqueta - - - &Edit - &Edita - - - Export Address List - Exporta la llista d'adreces - - - Comma separated file (*.csv) - Fitxer de separació amb comes (*.csv) - - - Exporting Failed - L'exportació ha fallat - - - There was an error trying to save the address list to %1. Please try again. - S'ha produït un error en guardar la llista d'adreces a %1. Torneu-ho a provar. - - - - AddressTableModel - - Label - Etiqueta - - - Address - Adreça - - - (no label) - (sense etiqueta) - - - - AskPassphraseDialog - - Passphrase Dialog - Diàleg de contrasenya - - - Enter passphrase - Introduïu una contrasenya - - - New passphrase - Nova contrasenya - - - Repeat new passphrase - Repetiu la nova contrasenya - - - Encrypt wallet - Encripta el moneder - - - This operation needs your wallet passphrase to unlock the wallet. - Esta operació requereix la contrasenya del moneder per a desbloquejar-lo. - - - Unlock wallet - Desbloqueja el moneder - - - This operation needs your wallet passphrase to decrypt the wallet. - Esta operació requereix la contrasenya del moneder per desencriptar-lo. - - - Decrypt wallet - Desencripta el moneder - - - Change passphrase - Canvia la contrasenya - - - Confirm wallet encryption - Confirma l'encriptació del moneder - - - Warning: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR BITCOINS</b>! - Avís: si encripteu el vostre moneder i perdeu la contrasenya, <b>PERDREU TOTS ELS VOSTRES BITCOINS</b>! - - - Are you sure you wish to encrypt your wallet? - Esteu segur que voleu encriptar el vostre moneder? - - - Bitcoin Core 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. - Ara es tancarà el Bitcoin Core per finalitzar el procés d'encriptació. Tingueu present que encriptar el vostre moneder no garanteix que les vostres bitcoins no puguen ser robades per programari maliciós que infecti l'ordinador. - - - 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. - IMPORTANT: Tota copia de seguretat que hàgeu realitzat hauria de ser reemplaçada pel, recentment generat, fitxer encriptat del moneder. - - - Warning: The Caps Lock key is on! - Avís: Les lletres majúscules estan activades! - - - Wallet encrypted - Moneder encriptat - - - 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>. - Introduïu la contrasenya nova al moneder.<br/>Utilitzeu una contrasenya de <b>deu o més caràcters aleatoris</b>, o <b>vuit o més paraules</b>. - - - Enter the old passphrase and new passphrase to the wallet. - Introduïu la contrasenya antiga i la contrasenya nova al moneder. - - - Wallet encryption failed - L'encriptació del moneder ha fallat - - - Wallet encryption failed due to an internal error. Your wallet was not encrypted. - L'encriptació del moneder ha fallat per un error intern. El moneder no ha estat encriptat. - - - The supplied passphrases do not match. - La contrasenya introduïda no coincideix. - - - Wallet unlock failed - El desbloqueig del moneder ha fallat - - - The passphrase entered for the wallet decryption was incorrect. - La contrasenya introduïda per a desencriptar el moneder és incorrecta. - - - Wallet decryption failed - La desencriptació del moneder ha fallat - - - Wallet passphrase was successfully changed. - La contrasenya del moneder ha estat modificada correctament. - - - - BitcoinGUI - - Sign &message... - Signa el &missatge... - - - Synchronizing with network... - S'està sincronitzant amb la xarxa ... - - - &Overview - &Panorama general - - - Node - Node - - - Show general overview of wallet - Mostra el panorama general del moneder - - - &Transactions - &Transaccions - - - Browse transaction history - Cerca a l'historial de transaccions - - - E&xit - I&x - - - Quit application - Ix de l'aplicació - - - About &Qt - Quant a &Qt - - - Show information about Qt - Mostra informació sobre Qt - - - &Options... - &Opcions... - - - &Encrypt Wallet... - &Encripta el moneder... - - - &Backup Wallet... - &Realitza una còpia de seguretat del moneder... - - - &Change Passphrase... - &Canvia la contrasenya... - - - &Sending addresses... - Adreces d'e&nviament... - - - &Receiving addresses... - Adreces de &recepció - - - Open &URI... - Obri un &URI... - - - Bitcoin Core client - Client del Bitcoin Core - - - Importing blocks from disk... - S'estan important els blocs del disc... - - - Reindexing blocks on disk... - S'estan reindexant els blocs al disc... - - - Send coins to a Bitcoin address - Envia monedes a una adreça Bitcoin - - - Backup wallet to another location - Realitza una còpia de seguretat del moneder a una altra ubicació - - - Change the passphrase used for wallet encryption - Canvia la contrasenya d'encriptació del moneder - - - &Debug window - &Finestra de depuració - - - Open debugging and diagnostic console - Obri la consola de diagnòstic i depuració - - - &Verify message... - &Verifica el missatge... - - - Bitcoin - Bitcoin - - - Wallet - Moneder - - - &Send - &Envia - - - &Receive - &Rep - - - Show information about Bitcoin Core - Mostra informació del Bitcoin Core - - - &Show / Hide - &Mostra / Amaga - - - Show or hide the main Window - Mostra o amaga la finestra principal - - - Encrypt the private keys that belong to your wallet - Encripta les claus privades pertanyents al moneder - - - Sign messages with your Bitcoin addresses to prove you own them - Signa el missatges amb la seua adreça de Bitcoin per provar que les poseeixes - - - Verify messages to ensure they were signed with specified Bitcoin addresses - Verifiqueu els missatges per assegurar-vos que han estat signats amb una adreça Bitcoin específica. - - - &File - &Fitxer - - - &Settings - &Configuració - - - &Help - &Ajuda - - - Tabs toolbar - Barra d'eines de les pestanyes - - - Bitcoin Core - Nucli de Bitcoin - - - Request payments (generates QR codes and bitcoin: URIs) - Sol·licita pagaments (genera codis QR i bitcoin: URI) - - - &About Bitcoin Core - &Quant al Bitcoin Core - - - Modify configuration options for Bitcoin Core - Modifica les opcions de configuració del Bitcoin Core - - - Show the list of used sending addresses and labels - Mostra la llista d'adreces d'enviament i etiquetes utilitzades - - - Show the list of used receiving addresses and labels - Mostra la llista d'adreces de recepció i etiquetes utilitzades - - - Open a bitcoin: URI or payment request - Obri una bitcoin: sol·licitud d'URI o pagament - - - &Command-line options - Opcions de la &línia d'ordes - - - Show the Bitcoin Core help message to get a list with possible Bitcoin command-line options - Mostra el missatge d'ajuda del Bitcoin Core per obtindre una llista amb les possibles opcions de línia d'ordes de Bitcoin - - - %n active connection(s) to Bitcoin network - %n connexió activa a la xarxa Bitcoin%n connexions actives a la xarxa Bitcoin - - - No block source available... - No hi ha cap font de bloc disponible... - - - %n hour(s) - %n hora%n hores - - - %n day(s) - %n dia%n dies - - - %n week(s) - %n setmana%n setmanes - - - %1 and %2 - %1 i %2 - - - %n year(s) - %n any%n anys - - - %1 behind - %1 darrere - - - Last received block was generated %1 ago. - El darrer bloc rebut ha estat generat fa %1. - - - Transactions after this will not yet be visible. - Les transaccions a partir d'això no seran visibles. - - - Error - Error - - - Warning - Avís - - - Information - Informació - - - Up to date - Al dia - - - Catching up... - S'està posant al dia ... - - - Date: %1 - - Data: %1 - - - - Amount: %1 - - Import: %1 - - - - Type: %1 - - Tipus: %1 - - - - Label: %1 - - Etiqueta: %1 - - - - Address: %1 - - Adreça: %1 - - - - Sent transaction - Transacció enviada - - - Incoming transaction - Transacció entrant - - - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - El moneder està <b>encriptat</b> i actualment <b>desbloquejat</b> - - - Wallet is <b>encrypted</b> and currently <b>locked</b> - El moneder està <b>encriptat</b> i actualment <b>bloquejat</b> - - - - ClientModel - - Network Alert - Alerta de xarxa - - - - CoinControlDialog - - Coin Selection - Selecció de moneda - - - Quantity: - Quantitat: - - - Bytes: - Bytes: - - - Amount: - Import: - - - Priority: - Prioritat: - - - Fee: - Comissió - - - Dust: - Polsim: - - - After Fee: - Comissió posterior: - - - Change: - Canvi: - - - (un)select all - (des)selecciona-ho tot - - - Tree mode - Mode arbre - - - List mode - Mode llista - - - Amount - Import - - - Received with label - Rebut amb l'etiqueta - - - Received with address - Rebut amb l'adreça - - - Date - Data - - - Confirmations - Confirmacions - - - Confirmed - Confirmat - - - Priority - Prioritat - - - Copy address - Copiar adreça - - - Copy label - Copiar etiqueta - - - Copy amount - Copia l'import - - - Copy transaction ID - Copiar ID de transacció - - - Lock unspent - Bloqueja sense gastar - - - Unlock unspent - Desbloqueja sense gastar - - - Copy quantity - Copia la quantitat - - - Copy fee - Copia la comissió - - - Copy after fee - Copia la comissió posterior - - - Copy bytes - Copia els bytes - - - Copy priority - Copia la prioritat - - - Copy dust - Copia el polsim - - - Copy change - Copia el canvi - - - highest - El més alt - - - higher - Més alt - - - high - Alt - - - medium-high - mig-alt - - - medium - mig - - - low-medium - baix-mig - - - low - baix - - - lower - més baix - - - lowest - el més baix - - - (%1 locked) - (%1 bloquejada) - - - none - cap - - - This label turns red if the transaction size is greater than 1000 bytes. - Esta etiqueta es torna en roig si la transacció és superior a 1000 bytes. - - - This label turns red if the priority is smaller than "medium". - Esta etiqueta es torna en roig si la propietat és inferior que la «mitjana». - - - This label turns red if any recipient receives an amount smaller than %1. - Esta etiqueta es torna roja si el destinatari rep un import inferior de %1. - - - Can vary +/- %1 satoshi(s) per input. - Pot variar +/- %1 satoshi(s) per entrada. - - - yes - sí - - - no - no - - - This means a fee of at least %1 per kB is required. - Això comporta una comissió d'almenys %1 per kB. - - - Can vary +/- 1 byte per input. - Pot variar +/- 1 byte per entrada. - - - Transactions with higher priority are more likely to get included into a block. - Les transaccions amb una major prioritat són més propenses a ser incloses en un bloc. - - - (no label) - (sense etiqueta) - - - change from %1 (%2) - canvia de %1 (%2) - - - (change) - (canvia) - - - - EditAddressDialog - - Edit Address - Edita l'adreça - - - &Label - &Etiqueta - - - The label associated with this address list entry - L'etiqueta associada amb esta entrada de llista d'adreces - - - The address associated with this address list entry. This can only be modified for sending addresses. - L'adreça associada amb esta entrada de llista d'adreces. Només es pot modificar per a les adreces d'enviament. - - - &Address - &Adreça - - - New receiving address - Nova adreça de recepció. - - - New sending address - Nova adreça d'enviament - - - Edit receiving address - Edita les adreces de recepció - - - Edit sending address - Edita les adreces d'enviament - - - The entered address "%1" is already in the address book. - L'adreça introduïda «%1» ja és present a la llibreta d'adreces. - - - The entered address "%1" is not a valid Bitcoin address. - L'adreça introduïda «%1» no és una adreça de Bitcoin vàlida. - - - Could not unlock wallet. - No s'ha pogut desbloquejar el moneder. - - - New key generation failed. - Ha fallat la generació d'una nova clau. - - - - FreespaceChecker - - A new data directory will be created. - Es crearà un nou directori de dades. - - - name - nom - - - Directory already exists. Add %1 if you intend to create a new directory here. - El directori ja existeix. Afig %1 si vols crear un nou directori en esta ubicació. - - - Path already exists, and is not a directory. - El camí ja existeix i no és cap directori. - - - Cannot create data directory here. - No es pot crear el directori de dades ací. - - - - HelpMessageDialog - - Bitcoin Core - Nucli de Bitcoin - - - version - versió - - - (%1-bit) - (%1-bit) - - - About Bitcoin Core - Quant al Bitcoin Core - - - Command-line options - Opcions de línia d'ordes - - - Usage: - Ús: - - - command-line options - Opcions de la línia d'ordes - - - - Intro - - Welcome - Vos donem la benviguda - - - Welcome to Bitcoin Core. - Vos donem la benvinguda al Bitcoin Core. - - - As this is the first time the program is launched, you can choose where Bitcoin Core will store its data. - Atès que és la primera vegada que executeu el programa, podeu triar on emmagatzemarà el Bitcoin Core les dades. - - - Bitcoin Core will download and store a copy of the Bitcoin block chain. At least %1GB of data will be stored in this directory, and it will grow over time. The wallet will also be stored in this directory. - El Bitcoin Core descarregarà i emmagatzemarà una còpia de la cadena de blocs de Bitcoin. Com a mínim s'emmagatzemaran %1 GB de dades en este directori, que seguiran creixent gradualment. També s'hi emmagatzemarà el moneder. - - - Use the default data directory - Utilitza el directori de dades per defecte - - - Use a custom data directory: - Utilitza un directori de dades personalitzat: - - - Bitcoin Core - Nucli de Bitcoin - - - Error: Specified data directory "%1" cannot be created. - Error: el directori de dades «%1» especificat no pot ser creat. - - - Error - Error - - - %n GB of free space available - %n GB d'espai lliure disponible%n GB d'espai lliure disponible - - - (of %n GB needed) - (de %n GB necessari)(de %n GB necessaris) - - - - OpenURIDialog - - Open URI - Obri un URI - - - Open payment request from URI or file - Obri una sol·licitud de pagament des d'un URI o un fitxer - - - URI: - URI: - - - Select payment request file - Selecciona un fitxer de sol·licitud de pagament - - - Select payment request file to open - Selecciona el fitxer de sol·licitud de pagament per obrir - - - - OptionsDialog - - Options - Opcions - - - &Main - &Principal - - - Size of &database cache - Mida de la memòria cau de la base de &dades - - - MB - MB - - - Number of script &verification threads - Nombre de fils de &verificació d'scripts - - - Accept connections from outside - Accepta connexions de fora - - - Allow incoming connections - Permet connexions entrants - - - IP address of the proxy (e.g. IPv4: 127.0.0.1 / IPv6: ::1) - Adreça IP del proxy (p. ex. IPv4: 127.0.0.1 / IPv6: ::1) - - - Minimize instead of exit the application when the window is closed. When this option is enabled, the application will be closed only after selecting Exit in the menu. - Minimitza en comptes d'eixir de l'aplicació quan la finestra es tanca. Quan s'habilita esta opció l'aplicació es tancara només quan se selecciona Ix del menú. - - - The user interface language can be set here. This setting will take effect after restarting Bitcoin Core. - La interfície d'usuari pot definir-se des d'ací. El paràmetre tindrà efecte després de reiniciar el Bitcoin Core. - - - 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 |. - URL de terceres parts (p. ex. explorador de blocs) que apareix en la pestanya de transaccions com elements del menú contextual. %s en l'URL es reemplaçat pel resum de la transacció. Diferents URL estan separades per una barra vertical |. - - - Third party transaction URLs - URL de transaccions de terceres parts - - - Active command-line options that override above options: - Opcions de línies d'orde active que sobreescriuen les opcions de dalt: - - - Reset all client options to default. - Reestableix totes les opcions del client. - - - &Reset Options - &Reestableix les opcions - - - &Network - &Xarxa - - - Automatically start Bitcoin Core after logging in to the system. - Inicia el Bitcoin Core automàticament després d'iniciar una sessió en el sistema. - - - &Start Bitcoin Core on system login - &Inicia el Bitcoin Core en inciar el sistema - - - (0 = auto, <0 = leave that many cores free) - (0 = auto, <0 = deixa tants nuclis lliures) - - - W&allet - &Moneder - - - Expert - Expert - - - Enable coin &control features - Activa les funcions de &control de les monedes - - - 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. - Si inhabiliteu la despesa d'un canvi sense confirmar, el canvi d'una transacció no pot ser utilitzat fins que la transacció no tinga com a mínim una confirmació. Això també afecta com es calcula el vostre balanç. - - - &Spend unconfirmed change - &Gasta el canvi sense confirmar - - - Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled. - Obri el port del client de Bitcoin al router de forma automàtica. Això només funciona quan el router implementa UPnP i l'opció està activada. - - - Map port using &UPnP - Port obert amb &UPnP - - - Connect to the Bitcoin network through a SOCKS5 proxy. - Connecta a la xarxa Bitcoin a través d'un proxy SOCKS5. - - - &Connect through SOCKS5 proxy (default proxy): - &Connecta a través d'un proxy SOCKS5 (proxy per defecte): - - - Proxy &IP: - &IP del proxy: - - - &Port: - &Port: - - - Port of the proxy (e.g. 9050) - Port del proxy (per exemple 9050) - - - &Window - &Finestra - - - Show only a tray icon after minimizing the window. - Mostra només la icona de la barra en minimitzar la finestra. - - - &Minimize to the tray instead of the taskbar - &Minimitza a la barra d'aplicacions en comptes de la barra de tasques - - - M&inimize on close - M&inimitza en tancar - - - &Display - &Pantalla - - - User Interface &language: - &Llengua de la interfície d'usuari: - - - &Unit to show amounts in: - &Unitats per mostrar els imports en: - - - Choose the default subdivision unit to show in the interface and when sending coins. - Selecciona la unitat de subdivisió per defecte per mostrar en la interfície quan s'envien monedes. - - - Whether to show coin control features or not. - Si voleu mostrar les funcions de control de monedes o no. - - - &OK - &D'acord - - - &Cancel - &Cancel·la - - - default - Per defecte - - - none - cap - - - Confirm options reset - Confirmeu el reestabliment de les opcions - - - Client restart required to activate changes. - Cal reiniciar el client per activar els canvis. - - - Client will be shut down. Do you want to proceed? - Es pararà el client. Voleu procedir? - - - This change would require a client restart. - Amb este canvi cal un reinici del client. - - - The supplied proxy address is invalid. - L'adreça proxy introduïda és invalida. - - - - OverviewPage - - Form - Formulari - - - The displayed information may be out of date. Your wallet automatically synchronizes with the Bitcoin network after a connection is established, but this process has not completed yet. - La informació mostrada pot no estar al día. El teu moneder es sincronitza automàticament amb la xarxa Bitcoin un cop s'ha establit connexió, però este proces no s'ha completat encara. - - - Watch-only: - Només lectura: - - - Available: - Disponible: - - - Your current spendable balance - El balanç que podeu gastar actualment - - - Pending: - Pendent: - - - Total of transactions that have yet to be confirmed, and do not yet count toward the spendable balance - Total de transaccions que encara han de confirmar-se i que encara no compten en el balanç que es pot gastar - - - Immature: - Immadur: - - - Mined balance that has not yet matured - Balanç minat que encara no ha madurat - - - Balances - Balances - - - Total: - Total: - - - Your current total balance - El balanç total actual - - - Your current balance in watch-only addresses - El vostre balanç actual en adreces de només lectura - - - Spendable: - Que es pot gastar: - - - Recent transactions - Transaccions recents - - - Unconfirmed transactions to watch-only addresses - Transaccions sense confirmar a adreces de només lectura - - - Mined balance in watch-only addresses that has not yet matured - Balanç minat en adreces de només lectura que encara no ha madurat - - - Current total balance in watch-only addresses - Balanç total actual en adreces de només lectura - - - - PaymentServer - - URI handling - Gestió d'URI - - - Invalid payment address %1 - Adreça de pagament no vàlida %1 - - - Payment request rejected - La sol·licitud de pagament s'ha rebutjat - - - Payment request network doesn't match client network. - La xarxa de la sol·licitud de pagament no coincideix amb la xarxa del client. - - - Payment request is not initialized. - La sol·licitud de pagament no està inicialitzada. - - - Requested payment amount of %1 is too small (considered dust). - L'import de pagament sol·licitat %1 és massa petit (es considera polsim). - - - Payment request error - Error en la sol·licitud de pagament - - - Cannot start bitcoin: click-to-pay handler - No es pot iniciar bitcoin: gestor clica-per-pagar - - - Payment request fetch URL is invalid: %1 - L'URL de recuperació de la sol·licitud de pagament no és vàlida: %1 - - - URI cannot be parsed! This can be caused by an invalid Bitcoin address or malformed URI parameters. - L'URI no pot ser analitzat! Això pot ser a causa d'una adreça de Bitcoin no vàlida o per paràmetres URI amb mal format. - - - Payment request file handling - Gestió de fitxers de les sol·licituds de pagament - - - Payment request file cannot be read! This can be caused by an invalid payment request file. - No es pot llegir el fitxer de la sol·licitud de pagament. Això pot ser causat per un fitxer de sol·licitud de pagament no vàlid. - - - Payment request expired. - La sol·licitud de pagament ha vençut. - - - Unverified payment requests to custom payment scripts are unsupported. - No s'accepten sol·licituds de pagament no verificades a scripts de pagament personalitzats. - - - Invalid payment request. - Sol·licitud de pagament no vàlida. - - - Refund from %1 - Reemborsament de %1 - - - Payment request %1 is too large (%2 bytes, allowed %3 bytes). - La sol·licitud de pagament %1 és massa gran (%2 bytes, permés %3 bytes). - - - Payment request DoS protection - Protecció de DoS per a la sol·licitud de pagament - - - Error communicating with %1: %2 - Error en comunicar amb %1: %2 - - - Payment request cannot be parsed! - No es pot analitzar la sol·licitud de pagament! - - - Bad response from server %1 - Mala resposta del servidor %1 - - - Payment acknowledged - Pagament reconegut - - - Network request error - Error en la sol·licitud de xarxa - - - - PeerTableModel - - User Agent - Agent d'usuari - - - Node/Service - Node/Servei - - - Ping Time - Temps de ping - - - - QObject - - Amount - Import - - - Enter a Bitcoin address (e.g. %1) - Introduïu una adreça de Bitcoin (p. ex. %1) - - - %1 d - %1 d - - - %1 h - %1 h - - - %1 m - %1 m - - - %1 s - %1 s - - - None - Cap - - - N/A - N/A - - - %1 ms - %1 ms - - - - QRImageWidget - - &Save Image... - &Guarda la imatge... - - - &Copy Image - &Copia la imatge - - - Save QR Code - Guarda el codi QR - - - PNG Image (*.png) - Imatge PNG (*.png) - - - - RPCConsole - - Client name - Nom del client - - - N/A - N/A - - - Client version - Versió del client - - - &Information - &Informació - - - Debug window - Finestra de depuració - - - General - General - - - Using OpenSSL version - Utilitzant OpenSSL versió - - - Using BerkeleyDB version - Utilitzant BerkeleyDB versió - - - Startup time - &Temps d'inici - - - Network - Xarxa - - - Name - Nom - - - Number of connections - Nombre de connexions - - - Block chain - Cadena de blocs - - - Current number of blocks - Nombre de blocs actuals - - - Open the Bitcoin Core debug log file from the current data directory. This can take a few seconds for large log files. - Obri el fitxer de registre de depuració del Bitcoin Core del directori de dades actual. Pot portar uns quants segons per a fitxers de registre grans. - - - Received - Rebut - - - Sent - Enviat - - - &Peers - &Iguals - - - Select a peer to view detailed information. - Seleccioneu un igual per mostrar informació detallada. - - - Direction - Direcció - - - Version - Versió - - - User Agent - Agent d'usuari - - - Services - Serveis - - - Starting Height - Alçada inicial - - - Sync Height - Sincronitza l'alçada - - - Ban Score - Puntuació de bandeig - - - Connection Time - Temps de connexió - - - Last Send - Darrer enviament - - - Last Receive - Darrera recepció - - - Bytes Sent - Bytes enviats - - - Bytes Received - Bytes rebuts - - - Ping Time - Temps de ping - - - Time Offset - Diferència horària - - - Last block time - Últim temps de bloc - - - &Open - &Obri - - - &Console - &Consola - - - &Network Traffic - Trà&nsit de la xarxa - - - &Clear - Nete&ja - - - Totals - Totals - - - In: - Dins: - - - Out: - Fora: - - - Build date - Data de compilació - - - Debug log file - Fitxer de registre de depuració - - - Clear console - Neteja la consola - - - Welcome to the Bitcoin Core RPC console. - Vos donem la benviguda a la consola RPC del Bitcoin Core. - - - Use up and down arrows to navigate history, and <b>Ctrl-L</b> to clear screen. - Utilitza les fletxes d'amunt i avall per navegar per l'historial, i <b>Ctrl-L<\b> per netejar la pantalla. - - - Type <b>help</b> for an overview of available commands. - Escriviu <b>help<\b> per a obtindre un llistat de les ordes disponibles. - - - %1 B - %1 B - - - %1 KB - %1 KB - - - %1 MB - %1 MB - - - %1 GB - %1 GB - - - via %1 - a través de %1 - - - never - mai - - - Inbound - Entrant - - - Outbound - Eixint - - - Unknown - Desconegut - - - Fetching... - S'està obtenint... - - - - ReceiveCoinsDialog - - &Amount: - Im&port: - - - &Label: - &Etiqueta: - - - &Message: - &Missatge: - - - Reuse one of the previously used receiving addresses. Reusing addresses has security and privacy issues. Do not use this unless re-generating a payment request made before. - Reutilitza una de les adreces de recepció utilitzades anteriorment. La reutilització d'adreces pot comportar problemes de seguretat i privadesa. No ho utilitzeu llevat que torneu a generar una sol·licitud de pagament feta abans. - - - R&euse an existing receiving address (not recommended) - R&eutilitza una adreça de recepció anterior (no recomanat) - - - An optional message to attach to the payment request, which will be displayed when the request is opened. Note: The message will not be sent with the payment over the Bitcoin network. - Un missatge opcional que s'adjuntarà a la sol·licitud de pagament, que es mostrarà quan s'òbriga la sol·licitud. Nota: El missatge no s'enviarà amb el pagament per la xarxa Bitcoin. - - - An optional label to associate with the new receiving address. - Una etiqueta opcional que s'associarà amb la nova adreça receptora. - - - Use this form to request payments. All fields are <b>optional</b>. - Utilitzeu este formulari per sol·licitar pagaments. Tots els camps són <b>opcionals</b>. - - - An optional amount to request. Leave this empty or zero to not request a specific amount. - Un import opcional per sol·licitar. Deixeu-ho en blanc o zero per no sol·licitar cap import específic. - - - Clear all fields of the form. - Esborra tots els camps del formuari. - - - Clear - Neteja - - - Requested payments history - Historial de pagaments sol·licitats - - - &Request payment - &Sol·licitud de pagament - - - Show the selected request (does the same as double clicking an entry) - Mostra la sol·licitud seleccionada (fa el mateix que el doble clic a una entrada) - - - Show - Mostra - - - Remove the selected entries from the list - Esborra les entrades seleccionades de la llista - - - Remove - Esborra - - - Copy label - Copia l'etiqueta - - - Copy message - Copia el missatge - - - Copy amount - Copia l'import - - - - ReceiveRequestDialog - - QR Code - Codi QR - - - Copy &URI - Copia l'&URI - - - Copy &Address - Copia l'&adreça - - - &Save Image... - &Guarda la imatge... - - - Request payment to %1 - Sol·licita un pagament a %1 - - - Payment information - Informació de pagament - - - URI - URI - - - Address - Adreça - - - Amount - Import - - - Label - Etiqueta - - - Message - Missatge - - - Resulting URI too long, try to reduce the text for label / message. - URI resultant massa llarga, intenta reduir el text per a la etiqueta / missatge - - - Error encoding URI into QR Code. - Error en codificar l'URI en un codi QR. - - - - RecentRequestsTableModel - - Date - Data - - - Label - Etiqueta - - - Message - Missatge - - - Amount - Import - - - (no label) - (sense etiqueta) - - - (no message) - (sense missatge) - - - (no amount) - (sense import) - - - - SendCoinsDialog - - Send Coins - Envia monedes - - - Coin Control Features - Característiques de control de les monedes - - - Inputs... - Entrades... - - - automatically selected - seleccionat automàticament - - - Insufficient funds! - Fons insuficients! - - - Quantity: - Quantitat: - - - Bytes: - Bytes: - - - Amount: - Import: - - - Priority: - Prioritat: - - - Fee: - Comissió: - - - After Fee: - Comissió posterior: - - - Change: - Canvi: - - - If this is activated, but the change address is empty or invalid, change will be sent to a newly generated address. - Si s'activa això, però l'adreça de canvi està buida o bé no és vàlida, el canvi s'enviarà a una adreça generada de nou. - - - Custom change address - Personalitza l'adreça de canvi - - - Transaction Fee: - Comissió de transacció - - - Choose... - Tria... - - - collapse fee-settings - redueix els paràmetres de comissió - - - per kilobyte - per kilobyte - - - 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. - 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. - - - Hide - Amaga - - - total at least - total com a mínim - - - 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. - 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. - - - (read the tooltip) - (llegiu l'indicador de funció) - - - Recommended: - Recomanada: - - - Custom: - Personalitzada: - - - (Smart fee not initialized yet. This usually takes a few blocks...) - (No s'ha inicialitzat encara la comissió intel·ligent. Normalment pren uns pocs blocs...) - - - Confirmation time: - Temps de confirmació: - - - normal - normal - - - fast - ràpid - - - Send as zero-fee transaction if possible - Envia com a transacció de comissió zero si és possible - - - (confirmation may take longer) - (la confirmació pot trigar més temps) - - - Send to multiple recipients at once - Envia a múltiples destinataris al mateix temps - - - Add &Recipient - Afig &destinatari - - - Clear all fields of the form. - Netejar tots els camps del formulari. - - - Dust: - Polsim: - - - Clear &All - Neteja-ho &tot - - - Balance: - Balanç: - - - Confirm the send action - Confirma l'acció d'enviament - - - S&end - E&nvia - - - Confirm send coins - Confirma l'enviament de monedes - - - %1 to %2 - %1 a %2 - - - Copy quantity - Copia la quantitat - - - Copy amount - Copia l'import - - - Copy fee - Copia la comissió - - - Copy after fee - Copia la comissió posterior - - - Copy bytes - Copia els bytes - - - Copy priority - Copia la prioritat - - - Copy change - Copia el canvi - - - or - o - - - The amount to pay must be larger than 0. - L'import a pagar ha de ser major que 0. - - - The amount exceeds your balance. - L'import supera el vostre balanç. - - - The total exceeds your balance when the %1 transaction fee is included. - El total excedeix el teu balanç quan s'afig la comissió a la transacció %1. - - - Transaction creation failed! - Ha fallat la creació de la transacció! - - - 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. - 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. - - - A fee higher than %1 is considered an absurdly high fee. - Una comissió superior a %1 es considera una comissió absurdament alta. - - - Payment request expired. - La sol·licitud de pagament ha vençut. - - - Estimated to begin confirmation within %n block(s). - Estimat per començar la confirmació en %n bloc.Estimat per començar la confirmació en %n blocs. - - - Pay only the minimum fee of %1 - Paga només la comissió mínima de %1 - - - The recipient address is not valid. Please recheck. - L'adreça de destinatari no és vàlida. Torneu-la a comprovar. - - - Duplicate address found: addresses should only be used once each. - S'ha trobat una adreça duplicada: cal utilitzar les adreces només un cop cada vegada. - - - Warning: Invalid Bitcoin address - Avís: adreça Bitcoin no vàlida - - - (no label) - (sense etiqueta) - - - Warning: Unknown change address - Avís: adreça de canvi desconeguda - - - Copy dust - Copia el polsim - - - Are you sure you want to send? - Esteu segur que ho voleu enviar? - - - added as transaction fee - S'ha afegit una taxa de transacció - - - - SendCoinsEntry - - A&mount: - Q&uantitat: - - - Pay &To: - Paga &a: - - - Enter a label for this address to add it to your address book - Introduïu una etiqueta per a esta adreça per afegir-la a la llibreta d'adreces - - - &Label: - &Etiqueta: - - - Choose previously used address - Trieu una adreça feta servir anteriorment - - - This is a normal payment. - Això és un pagament normal. - - - The Bitcoin address to send the payment to - L'adreça Bitcoin on enviar el pagament - - - Alt+A - Alta+A - - - Paste address from clipboard - Apegar adreça del porta-retalls - - - Alt+P - Alt+P - - - Remove this entry - Elimina esta entrada - - - The fee will be deducted from the amount being sent. The recipient will receive less bitcoins than you enter in the amount field. If multiple recipients are selected, the fee is split equally. - La comissió es deduirà de l'import que s'enviarà. El destinatari rebrà menys bitcoins que les que introduïu al camp d'import. Si se seleccionen múltiples destinataris, la comissió es dividirà per igual. - - - S&ubtract fee from amount - S&ubstreu la comissió de l'import - - - Message: - Missatge: - - - This is an unauthenticated payment request. - Esta és una sol·licitud de pagament no autenticada. - - - This is an authenticated payment request. - Esta és una sol·licitud de pagament autenticada. - - - Enter a label for this address to add it to the list of used addresses - Introduïu una etiqueta per a esta adreça per afegir-la a la llista d'adreces utilitzades - - - A message that was attached to the bitcoin: URI which will be stored with the transaction for your reference. Note: This message will not be sent over the Bitcoin network. - Un missatge que s'ha adjuntat al bitcoin: URI que s'emmagatzemarà amb la transacció per a la vostra referència. Nota: el missatge no s'enviarà a través de la xarxa Bitcoin. - - - Pay To: - Paga a: - - - Memo: - Memo: - - - - ShutdownWindow - - Bitcoin Core is shutting down... - S'està parant el Bitcoin Core... - - - Do not shut down the computer until this window disappears. - No apagueu l'ordinador fins que no desaparegui esta finestra. - - - - SignVerifyMessageDialog - - Signatures - Sign / Verify a Message - Signatures - Signa / verifica un missatge - - - &Sign Message - &Signa el missatge - - - You can sign messages/agreements with your addresses to prove you can receive bitcoins sent to them. Be careful not to sign anything vague or random, as phishing attacks may try to trick you into signing your identity over to them. Only sign fully-detailed statements you agree to. - Podeu signar missatges/acords amb les vostres adreces per provar que rebeu les bitcoins que s'hi envien. Aneu amb compte no signar res que siga vague o aleatori, perquè en alguns atacs de suplantació es pot provar que hi signeu la vostra identitat. Només signeu aquelles declaracions completament detallades en què hi esteu d'acord. - - - The Bitcoin address to sign the message with - L'adreça Bitcoin amb què signar el missatge - - - Choose previously used address - Tria les adreces fetes servir amb anterioritat - - - Alt+A - Alt+A - - - Paste address from clipboard - Apega l'adreça del porta-retalls - - - Alt+P - Alt+P - - - Enter the message you want to sign here - Introduïu ací el missatge que voleu signar - - - Signature - Signatura - - - Copy the current signature to the system clipboard - Copia la signatura actual al porta-retalls del sistema - - - Sign the message to prove you own this Bitcoin address - Signa el missatge per provar que ets propietari d'esta adreça Bitcoin - - - Sign &Message - Signa el &missatge - - - Reset all sign message fields - Neteja tots els camps de clau - - - Clear &All - Neteja-ho &tot - - - &Verify Message - &Verifica el missatge - - - Enter the receiver's address, message (ensure you copy line breaks, spaces, tabs, etc. exactly) and signature below to verify the message. Be careful not to read more into the signature than what is in the signed message itself, to avoid being tricked by a man-in-the-middle attack. Note that this only proves the signing party receives with the address, it cannot prove sendership of any transaction! - Introduïu l'adreça del receptor, el missatge (assegureu-vos de copiar els salts de línia, espais, tabuladors, etc. exactament) i signatura de sota per verificar el missatge. Tingueu cura de no llegir més en la signatura del que està al missatge signat, per evitar ser enganyat per un atac d'home-en-el-mig. Tingueu en compte que això només demostra que la part que signa rep amb l'adreça, i no es pot provar l'enviament de qualsevol transacció! - - - The Bitcoin address the message was signed with - L'adreça Bitcoin amb què va ser signat el missatge - - - Verify the message to ensure it was signed with the specified Bitcoin address - Verificar el missatge per assegurar-se que ha estat signat amb una adreça Bitcoin específica - - - Verify &Message - Verifica el &missatge - - - Reset all verify message fields - Neteja tots els camps de verificació de missatge - - - Click "Sign Message" to generate signature - Feu clic a «Signa el missatge» per a generar una signatura - - - The entered address is invalid. - L'adreça introduïda no és vàlida. - - - Please check the address and try again. - Comproveu l'adreça i torneu-ho a provar. - - - The entered address does not refer to a key. - L'adreça introduïda no referencia a cap clau. - - - Wallet unlock was cancelled. - El desbloqueig del moneder ha estat cancelat. - - - Private key for the entered address is not available. - La clau privada per a la adreça introduïda no està disponible. - - - Message signing failed. - La signatura del missatge ha fallat. - - - Message signed. - Missatge signat. - - - The signature could not be decoded. - La signatura no s'ha pogut descodificar. - - - Please check the signature and try again. - Comproveu la signatura i torneu-ho a provar. - - - The signature did not match the message digest. - La signatura no coincideix amb el resum del missatge. - - - Message verification failed. - Ha fallat la verificació del missatge. - - - Message verified. - Missatge verificat. - - - - SplashScreen - - Bitcoin Core - Bitcoin Core - - - The Bitcoin Core developers - Els desenvolupadors del Bitcoin Core - - - [testnet] - [testnet] - - - - TrafficGraphWidget - - KB/s - KB/s - - - - TransactionDesc - - Open until %1 - Obert fins %1 - - - conflicted - en conflicte - - - %1/offline - %1/fora de línia - - - %1/unconfirmed - %1/sense confirmar - - - %1 confirmations - %1 confirmacions - - - Status - Estat - - - , broadcast through %n node(s) - , difusió a través de %n node, difusió a través de %n nodes - - - Date - Data - - - Source - Font - - - Generated - Generat - - - From - Des de - - - To - A - - - own address - Adreça pròpia - - - watch-only - només lectura - - - label - etiqueta - - - Credit - Crèdit - - - matures in %n more block(s) - madura en %n bloc mésmadura en %n blocs més - - - not accepted - no acceptat - - - Debit - Dèbit - - - Total debit - Dèbit total - - - Total credit - Crèdit total - - - Transaction fee - Comissió de transacció - - - Net amount - Import net - - - Message - Missatge - - - Comment - Comentar - - - Transaction ID - ID de transacció - - - Merchant - Mercader - - - Generated coins must mature %1 blocks before they can be spent. When you generated this block, it was broadcast to the network to be added to the block chain. If it fails to get into the chain, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - Les monedes generades han de madurar %1 blocs abans de poder ser gastades. Quan genereu este bloc, es farà saber a la xarxa per tal d'afegir-lo a la cadena de blocs. Si no pot fer-se lloc a la cadena, el seu estat canviarà a «no acceptat» i no es podrà gastar. Això pot passar ocasionalment si un altre node genera un bloc en un marge de segons respecte al vostre. - - - Debug information - Informació de depuració - - - Transaction - Transacció - - - Inputs - Entrades - - - Amount - Import - - - true - cert - - - false - fals - - - , has not been successfully broadcast yet - , encara no ha estat emés correctement - - - Open for %n more block(s) - Obri per %n bloc mésObri per %n blocs més - - - unknown - desconegut - - - - TransactionDescDialog - - Transaction details - Detall de la transacció - - - This pane shows a detailed description of the transaction - Este panell mostra una descripció detallada de la transacció - - - - TransactionTableModel - - Date - Data - - - Type - Tipus - - - Immature (%1 confirmations, will be available after %2) - Immadur (%1 confirmacions, serà disponible després de %2) - - - Open for %n more block(s) - Obri per %n bloc mésObri per %n blocs més - - - Open until %1 - Obert fins %1 - - - Confirmed (%1 confirmations) - Confirmat (%1 confirmacions) - - - This block was not received by any other nodes and will probably not be accepted! - Este bloc no ha estat rebut per cap altre node i probablement no serà acceptat! - - - Generated but not accepted - Generat però no acceptat - - - Offline - Fora de línia - - - Label - Etiqueta - - - Unconfirmed - Sense confirmar - - - Confirming (%1 of %2 recommended confirmations) - Confirmant (%1 de %2 confirmacions recomanades) - - - Conflicted - En conflicte - - - Received with - Rebut amb - - - Received from - Rebut de - - - Sent to - Enviat a - - - Payment to yourself - Pagament a un mateix - - - Mined - Minat - - - watch-only - només lectura - - - (n/a) - (n/a) - - - Transaction status. Hover over this field to show number of confirmations. - Estat de la transacció. Desplaceu-vos sobre este camp per mostrar el nombre de confirmacions. - - - Date and time that the transaction was received. - Data i hora en que la transacció va ser rebuda. - - - Type of transaction. - Tipus de transacció. - - - Whether or not a watch-only address is involved in this transaction. - Si està implicada o no una adreça només de lectura en la transacció. - - - User-defined intent/purpose of the transaction. - Intenció/propòsit de la transacció definida per l'usuari. - - - Amount removed from or added to balance. - Import extret o afegit del balanç. - - - - TransactionView - - All - Tot - - - Today - Hui - - - This week - Esta setmana - - - This month - Este mes - - - Last month - El mes passat - - - This year - Enguany - - - Range... - Rang... - - - Received with - Rebut amb - - - Sent to - Enviat a - - - To yourself - A un mateix - - - Mined - Minat - - - Other - Altres - - - Enter address or label to search - Introduïu una adreça o una etiqueta per cercar - - - Min amount - Import mínim - - - Copy address - Copia l'adreça - - - Copy label - Copiar etiqueta - - - Copy amount - Copia l'import - - - Copy transaction ID - Copiar ID de transacció - - - Edit label - Editar etiqueta - - - Show transaction details - Mostra detalls de la transacció - - - Export Transaction History - Exporta l'historial de transacció - - - Watch-only - Només de lectura - - - Exporting Failed - L'exportació ha fallat - - - There was an error trying to save the transaction history to %1. - S'ha produït un error en provar de guardar l'historial de transacció a %1. - - - Exporting Successful - Exportació amb èxit - - - The transaction history was successfully saved to %1. - L'historial de transaccions s'ha guardat correctament a %1. - - - Comma separated file (*.csv) - Fitxer separat per comes (*.csv) - - - Confirmed - Confirmat - - - Date - Data - - - Type - Tipus - - - Label - Etiqueta - - - Address - Adreça - - - ID - ID - - - Range: - Rang: - - - to - a - - - - UnitDisplayStatusBarControl - - Unit to show amounts in. Click to select another unit. - Unitat en què mostrar els imports. Feu clic per seleccionar una altra unitat. - - - - WalletFrame - - No wallet has been loaded. - No s'ha carregat cap moneder. - - - - WalletModel - - Send Coins - Envia monedes - - - - WalletView - - &Export - &Exporta - - - Export the data in the current tab to a file - Exporta les dades de la pestanya actual a un fitxer - - - Backup Wallet - Còpia de seguretat del moneder - - - Wallet Data (*.dat) - Dades del moneder (*.dat) - - - Backup Failed - Ha fallat la còpia de seguretat - - - There was an error trying to save the wallet data to %1. - S'ha produït un error en provar de guardar les dades del moneder a %1. - - - The wallet data was successfully saved to %1. - S'han guardat les dades del moneder correctament a %1. - - - Backup Successful - La còpia de seguretat s'ha realitzat correctament - - - - bitcoin-core - - Options: - Opcions: - - - Specify data directory - Especifica el directori de dades - - - Connect to a node to retrieve peer addresses, and disconnect - Connecta al node per obtindre les adreces de les connexions, i desconnecta - - - Specify your own public address - Especifiqueu la vostra adreça pública - - - Accept command line and JSON-RPC commands - Accepta la línia d'ordes i ordes JSON-RPC - - - Run in the background as a daemon and accept commands - Executa en segon pla com a programa dimoni i accepta ordes - - - Use the test network - Utilitza la xarxa de prova - - - Accept connections from outside (default: 1 if no -proxy or -connect) - Accepta connexions de fora (per defecte: 1 si no -proxy o -connect) - - - Bind to given address and always listen on it. Use [host]:port notation for IPv6 - Vincula a una adreça específica i sempre escolta-hi. Utilitza la notació [host]:port per IPv6 - - - Delete all wallet transactions and only recover those parts of the blockchain through -rescan on startup - Elimina totes les transaccions del moneder i només recupera aquelles de la cadena de blocs a través de -rescan a l'inici - - - Distributed under the MIT software license, see the accompanying file COPYING or <http://www.opensource.org/licenses/mit-license.php>. - Distribuït sota llicència de programari MIT. Vegeu el fitxer acompanyant COPYING o <http://www.opensource.org/licenses/mit-license.php>. - - - Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) - Executa una orde quan una transacció del moneder canvie (%s en cmd es canvia per TxID) - - - Maximum total fees to use in a single wallet transaction; setting this too low may abort large transactions (default: %s) - Comissions totals màximes que s'utilitzaran en una única transacció de moneder; si s'estableix un valor massa baix es poden interrompre transaccions grans (per defecte: %s) - - - Reduce storage requirements by pruning (deleting) old blocks. This mode disables wallet support and is incompatible with -txindex. Warning: Reverting this setting requires re-downloading the entire blockchain. (default: 0 = disable pruning blocks, >%u = target size in MiB to use for block files) - Redueix els requeriments d'emmagatzemament podant (suprimint) els blocs antics. Este mode inhabilita l'ús de moneders i és incompatible amb -tindex. Avís: Revertir esta configuració comporta tornar a baixar la cadena de blocs sencera. (per defecte: 0 = inhabilita la poda de blocs, >%u = mida objectiu en MiB per utilitzar els fitxers de blocs) - - - Set the number of script verification threads (%u to %d, 0 = auto, <0 = leave that many cores free, default: %d) - Defineix el nombre de fils de verificació d'scripts (%u a %d, 0 = auto, <0 = deixa tants nuclis lliures, per defecte: %d) - - - This is a pre-release test build - use at your own risk - do not use for mining or merchant applications - Esta és una versió de pre-llançament - utilitza-la sota la teva responsabilitat - No usar per a minería o aplicacions de compra-venda - - - Unable to bind to %s on this computer. Bitcoin Core is probably already running. - No es pot enllaçar %s a este ordinador. El Bitcoin Core probablement ja estiga executant-s'hi. - - - WARNING: abnormally high number of blocks generated, %d blocks received in the last %d hours (%d expected) - AVÃS: s'ha generat un nombre anòmalament alt de blocs, %d blocs rebuts en les darreres %d hores (se n'esperaven %d) - - - WARNING: check your network connection, %d blocks received in the last %d hours (%d expected) - AVÃS: comproveu la vostra connexió a la xarxa, %d blocs rebuts en les darreres %d hores (se n'esperaven %d) - - - Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. - Avís: el -paytxfee és molt elevat! Esta és la comissió de transacció que pagareu si envieu una transacció. - - - Warning: The network does not appear to fully agree! Some miners appear to be experiencing issues. - Avís: la xarxa no pareix que hi estiga plenament d'acord. Alguns miners pareix que estan experimentant problemes. - - - Warning: We do not appear to fully agree with our peers! You may need to upgrade, or other nodes may need to upgrade. - Avís: pareix que no estem plenament d'acord amb els nostres iguals! Podria caldre que actualitzar l'aplicació, o potser que ho facen altres nodes. - - - Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. - Avís: error en llegir el fitxer wallet.dat! Totes les claus es lligen correctament, però hi ha dades de transaccions o entrades de la llibreta d'adreces absents o bé son incorrectes. - - - 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. - 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. - - - Whitelist peers connecting from the given netmask or IP address. Can be specified multiple times. - 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. - - - (default: 1) - (per defecte: 1) - - - <category> can be: - <category> pot ser: - - - Attempt to recover private keys from a corrupt wallet.dat - Intenta recuperar les claus privades d'un fitxer wallet.dat corrupte - - - Block creation options: - Opcions de la creació de blocs: - - - Connect only to the specified node(s) - Connecta només al(s) node(s) especificats - - - Connection options: - Opcions de connexió: - - - Corrupted block database detected - S'ha detectat una base de dades de blocs corrupta - - - Debugging/Testing options: - Opcions de depuració/proves: - - - Do not load the wallet and disable wallet RPC calls - No carreguis el moneder i inhabilita les crides RPC del moneder - - - Do you want to rebuild the block database now? - Voleu reconstruir la base de dades de blocs ara? - - - Error initializing block database - Error carregant la base de dades de blocs - - - Error initializing wallet database environment %s! - Error inicialitzant l'entorn de la base de dades del moneder %s! - - - Error loading block database - Error carregant la base de dades del bloc - - - Error opening block database - Error en obrir la base de dades de blocs - - - Error: Disk space is low! - Error: Espai al disc baix! - - - Failed to listen on any port. Use -listen=0 if you want this. - Ha fallat escoltar a qualsevol port. Feu servir -listen=0 si voleu fer això. - - - If <category> is not supplied, output all debugging information. - Si no se subministra <category>, mostra tota la informació de depuració. - - - Importing... - S'està important... - - - Incorrect or no genesis block found. Wrong datadir for network? - No s'ha trobat el bloc de gènesi o és incorrecte. El directori de dades de la xarxa és incorrecte? - - - Invalid -onion address: '%s' - Adreça -onion no vàlida: '%s' - - - Not enough file descriptors available. - No hi ha suficient descriptors de fitxers disponibles. - - - Only connect to nodes in network <net> (ipv4, ipv6 or onion) - Només connecta als nodes de la xarxa <net> (ipv4, ipv6 o onion) - - - Prune cannot be configured with a negative value. - La poda no es pot configurar amb un valor negatiu. - - - Prune mode is incompatible with -txindex. - El mode de poda és incompatible amb -txindex. - - - Set database cache size in megabytes (%d to %d, default: %d) - Defineix la mida de la memòria cau de la base de dades en megabytes (%d a %d, per defecte: %d) - - - Set maximum block size in bytes (default: %d) - Defineix la mida màxim del bloc en bytes (per defecte: %d) - - - Specify wallet file (within data directory) - Especifica un fitxer de moneder (dins del directori de dades) - - - Use UPnP to map the listening port (default: %u) - Utilitza UPnP per a mapejar el port d'escolta (per defecte: %u) - - - Verifying blocks... - S'estan verificant els blocs... - - - Verifying wallet... - S'està verificant el moneder... - - - Wallet %s resides outside data directory %s - El moneder %s resideix fora del directori de dades %s - - - Wallet options: - Opcions de moneder: - - - Warning: This version is obsolete; upgrade required! - Avís: esta versió és obsoleta; cal actualitzar-la! - - - You need to rebuild the database using -reindex to change -txindex - Cal que reconstruïu la base de dades fent servir -reindex per canviar -txindex - - - Imports blocks from external blk000??.dat file - Importa blocs d'un fitxer blk000??.dat extern - - - 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 - Permet les connexions JSON-RPC d'una font específica. Vàlid per a <ip> són una IP individual (p. ex., 1.2.3.4), una xarxa / màscara de xarxa (p. ex., 1.2.3.4/255.255.255.0) o una xarxa/CIDR (p. ex., 1.2.3.4/24). Es pot especificar esta opció moltes vegades - - - Bind to given address and whitelist peers connecting to it. Use [host]:port notation for IPv6 - Vincula l'adreça donada i posa a la llista blanca els iguals que s'hi connecten. Feu servir la notació [host]:port per a IPv6 - - - Bind to given address to listen for JSON-RPC connections. Use [host]:port notation for IPv6. This option can be specified multiple times (default: bind to all interfaces) - Vincula a l'adreça donada per a escoltar les connexions JSON-RPC. Feu servir la notació [host]:port per a IPv6. Esta opció pot ser especificada moltes vegades (per defecte: vincula a totes les interfícies) - - - Cannot obtain a lock on data directory %s. Bitcoin Core is probably already running. - No es pot obtindre un bloqueig del directori de dades %s. El Bitcoin Core probablement ja s'estiga executant. - - - Create new files with system default permissions, instead of umask 077 (only effective with disabled wallet functionality) - 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) - - - Discover own IP addresses (default: 1 when listening and no -externalip or -proxy) - Descobreix l'adreça IP pròpia (per defecte: 1 quan s'escolta i no -externalip o -proxy) - - - Error: Listening for incoming connections failed (listen returned error %s) - Error: ha fallat escoltar les connexions entrants (l'escoltament ha retornat l'error %s) - - - Error: Unsupported argument -socks found. Setting SOCKS version isn't possible anymore, only SOCKS5 proxies are supported. - Error: s'ha trobat un argument no permés de -socks. Ja no es pot definir més la versió de SOCKS, només s'accepten els proxies de SOCKS5.ç - - - Execute command when a relevant alert is received or we see a really long fork (%s in cmd is replaced by message) - Executa l'orde quan es reba un avís rellevant o veiem una forquilla molt llarga (%s en cmd és reemplaçat per un missatge) - - - Fees (in BTC/Kb) smaller than this are considered zero fee for relaying (default: %s) - Comissions (en BTC/Kb) inferiors a això es consideren de comissió zero per a la transmissió (per defecte: %s) - - - If paytxfee is not set, include enough fee so transactions begin confirmation on average within n blocks (default: %u) - 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) - - - Invalid amount for -maxtxfee=<amount>: '%s' (must be at least the minrelay fee of %s to prevent stuck transactions) - 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) - - - Maximum size of data in data carrier transactions we relay and mine (default: %u) - Mida màxima de les dades en les transaccions de l'operador en què confiem i en les meues (per defecte: %u) - - - Prune configured below the minimum of %d MB. Please use a higher number. - Poda configurada per sota el mínim de %d MB. Feu servir un nombre superior. - - - Query for peer addresses via DNS lookup, if low on addresses (default: 1 unless -connect) - Consulta a adreces d'iguals a través de DNS, si es troba baix en adreces (per defecte: 1 a menys que -connect) - - - Randomize credentials for every proxy connection. This enables Tor stream isolation (default: %u) - Genera a l'atzar credencials per a cada connexió proxy. Això habilita l'aïllament del flux de Tor (per defecte: %u) - - - Set maximum size of high-priority/low-fee transactions in bytes (default: %d) - Defineix la mida màxima de transaccions d'alta prioritat / baixa comissió en bytes (per defecte: %d) - - - Set the number of threads for coin generation if enabled (-1 = all cores, default: %d) - Defineix el nombre de fils per a la generació de moneda si està habilitat (-1 = tots els nuclis, per defecte: %d) - - - The transaction amount is too small to send after the fee has been deducted - L'import de la transacció és massa petit per enviar-la després que se'n deduïsca la comissió - - - 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. - 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. - - - 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 - - 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 - - - Warning: -maxtxfee is set very high! Fees this large could be paid on a single transaction. - Avís: s'ha especificat un -maxtxfee molt alt! Comissions tan grans podrien pagar-se en una única transacció. - - - Warning: Please check that your computer's date and time are correct! If your clock is wrong Bitcoin Core will not work properly. - 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. - - - 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 - 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 - - - You need to rebuild the database using -reindex to go back to unpruned mode. This will redownload the entire blockchain - Cal que torneu a construir la base de dades fent servir -reindex per tornar al mode no podat. Això tornarà a baixar la cadena de blocs sencera - - - (default: %u) - (per defecte: %u) - - - Accept public REST requests (default: %u) - Accepta sol·licituds REST públiques (per defecte: %u) - - - Activating best chain... - S'està activant la millor cadena... - - - Can't run with a wallet in prune mode. - No es pot executar amb un moneder en mode poda. - - - Cannot resolve -whitebind address: '%s' - No es pot resoldre l'adreça -whitebind: «%s» - - - Choose data directory on startup (default: 0) - Tria el directori de dades a l'inici (per defecte: 0) - - - Connect through SOCKS5 proxy - Connecta a través del proxy SOCKS5 - - - Copyright (C) 2009-%i The Bitcoin Core Developers - Copyright (C) 2009-%i Els desenvolupadors del Bitcoin Core - - - Could not parse -rpcbind value %s as network address - No s'ha pogut analitzar el valor -rpcbind %s com una adreça de xarxa - - - Error loading wallet.dat: Wallet requires newer version of Bitcoin Core - Error en carregar wallet.dat: el moneder requereix una versió més nova del Bitcoin core - - - Error reading from database, shutting down. - Error en llegir la base de dades, tancant. - - - Error: Unsupported argument -tor found, use -onion. - Error: s'ha trobat un argument -tor no acceptat. Feu servir -onion. - - - Fee (in BTC/kB) to add to transactions you send (default: %s) - Comissió en (BTC/kB) per afegir a les transaccions que envieu (per defecte: %s) - - - Information - &Informació - - - Initialization sanity check failed. Bitcoin Core is shutting down. - Ha fallat la inicialització de la comprovació de validesa. El Bitcoin Core s'està parant. - - - Invalid amount for -maxtxfee=<amount>: '%s' - Import no vàlid per a -maxtxfee=<amount>: '%s' - - - Invalid amount for -minrelaytxfee=<amount>: '%s' - Import no vàlid per a -minrelaytxfee=<amount>: «%s» - - - Invalid amount for -mintxfee=<amount>: '%s' - Import no vàlid per a -mintxfee=<amount>: «%s» - - - Invalid amount for -paytxfee=<amount>: '%s' (must be at least %s) - Import no vàlid per a -paytxfee=<amount>: «%s» (ha de ser com a mínim %s) - - - Invalid netmask specified in -whitelist: '%s' - S'ha especificat una màscara de xarxa no vàlida a -whitelist: «%s» - - - Keep at most <n> unconnectable transactions in memory (default: %u) - Manté com a màxim <n> transaccions no connectables en memòria (per defecte: %u) - - - Need to specify a port with -whitebind: '%s' - Cal especificar un port amb -whitebind: «%s» - - - Node relay options: - Opcions de transmissió del node: - - - RPC SSL options: (see the Bitcoin Wiki for SSL setup instructions) - Opcions RPC SSL: (veieu el wiki del Bitcoin per a instruccions de configuració de l'SSL) - - - RPC server options: - Opcions del servidor RPC: - - - RPC support for HTTP persistent connections (default: %d) - Suport RPC per a connexions HTTP persistents (per defecte: %d) - - - Rebuild block chain index from current blk000??.dat files on startup - Reconstrueix l'índex de la cadena de blocs dels fitxers blk000??.dat actuals a l'inici. - - - Receive and display P2P network alerts (default: %u) - Rep i mostra avisos de la xarxa P2P (per defecte: %u) - - - Send trace/debug info to console instead of debug.log file - Envia informació de traça/depuració a la consola en comptes del fitxer debug.log - - - Send transactions as zero-fee transactions if possible (default: %u) - Envia les transaccions com a transaccions de comissió zero sempre que siga possible (per defecte: %u) - - - Set SSL root certificates for payment request (default: -system-) - Defineix certificats arrel SSL per a la sol·licitud de pagament (per defecte: -sistema-) - - - Set language, for example "de_DE" (default: system locale) - Defineix un idioma, per exemple «de_DE» (per defecte: preferències locals de sistema) - - - Show all debugging options (usage: --help -help-debug) - Mostra totes les opcions de depuració (ús: --help --help-debug) - - - Show splash screen on startup (default: 1) - Mostra la finestra de benvinguda a l'inici (per defecte: 1) - - - Shrink debug.log file on client startup (default: 1 when no -debug) - Redueix el fitxer debug.log durant l'inici del client (per defecte: 1 quan no -debug) - - - Signing transaction failed - Ha fallat la signatura de la transacció - - - Start minimized - Inicia minimitzat - - - The transaction amount is too small to pay the fee - L'import de la transacció és massa petit per pagar-ne una comissió - - - This is experimental software. - Això és programari experimental. - - - Transaction amount too small - Import de la transacció massa petit - - - Transaction amounts must be positive - Els imports de les transaccions han de ser positius - - - Transaction too large for fee policy - Transacció massa gran per a la política de comissions - - - Transaction too large - La transacció és massa gran - - - UI Options: - Opcions d'interfície: - - - Unable to bind to %s on this computer (bind returned error %s) - No s'ha pogut vincular a %s en este ordinador (la vinculació ha retornat l'error %s) - - - Use UPnP to map the listening port (default: 1 when listening) - Utilitza UPnP per a mapejar els ports d'escolta (per defecte: 1 quan s'escolta) - - - Username for JSON-RPC connections - Nom d'usuari per a connexions JSON-RPC - - - Wallet needed to be rewritten: restart Bitcoin Core to complete - Cal reescriure el moneder: reiniceu el Bitcoin Core per completar-ho. - - - Warning - Avís - - - Warning: Unsupported argument -benchmark ignored, use -debug=bench. - Avís: s'ha ignorat l'argument no acceptat de -benchmark. Feu servir -debug=bench. - - - Warning: Unsupported argument -debugnet ignored, use -debug=net. - Avís: s'ha ignorat l'argument no acceptat de -debugnet. Feu servir -debug=net. - - - Zapping all transactions from wallet... - Se suprimeixen totes les transaccions del moneder... - - - on startup - a l'inici de l'aplicació - - - wallet.dat corrupt, salvage failed - El fitxer wallet.data és corrupte. El rescat de les dades ha fallat - - - Password for JSON-RPC connections - Contrasenya per a connexions JSON-RPC - - - Execute command when the best block changes (%s in cmd is replaced by block hash) - Executa l'orde quan el millor bloc canvie (%s en cmd es reemplaça per un resum de bloc) - - - Upgrade wallet to latest format - Actualitza el moneder a l'últim format - - - Rescan the block chain for missing wallet transactions - Reescaneja la cadena de blocs en les transaccions de moneder perdudes - - - Use OpenSSL (https) for JSON-RPC connections - Utilitza OpenSSL (https) per a connexions JSON-RPC - - - This help message - Este misatge d'ajuda - - - Allow DNS lookups for -addnode, -seednode and -connect - Permet consultes DNS per a -addnode, -seednode i -connect - - - Loading addresses... - S'estan carregant les adreces... - - - Error loading wallet.dat: Wallet corrupted - Error en carregar wallet.dat: Moneder corrupte - - - (1 = keep tx meta data e.g. account owner and payment request information, 2 = drop tx meta data) - (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) - - - How thorough the block verification of -checkblocks is (0-4, default: %u) - Com d'exhaustiva és la verificació de blocs del -checkblocks (0-4, per defecte: %u) - - - Maintain a full transaction index, used by the getrawtransaction rpc call (default: %u) - Manté un índex complet de transaccions, utilitzat per la crida rpc getrawtransaction (per defecte: %u) - - - Number of seconds to keep misbehaving peers from reconnecting (default: %u) - Nombre de segons necessaris perquè els iguals de comportament qüestionable puguen tornar a connectar-se (per defecte: %u) - - - Output debugging information (default: %u, supplying <category> is optional) - Informació d'eixida de la depuració (per defecte: %u, proporcionar <category> és opcional) - - - Use separate SOCKS5 proxy to reach peers via Tor hidden services (default: %s) - Utilitza un proxy SOCKS4 apart per a arribar als iguals a través de serveis ocults de Tor (per defecte: %s) - - - (default: %s) - (per defecte: %s) - - - Acceptable ciphers (default: %s) - Xifrats acceptables (per defecte: %s) - - - Always query for peer addresses via DNS lookup (default: %u) - Demana sempre les adreces dels iguals a través de consultes DNS (per defecte: %u) - - - Error loading wallet.dat - Error en carregar wallet.dat - - - Generate coins (default: %u) - Genera monedes (per defecte: %u) - - - How many blocks to check at startup (default: %u, 0 = all) - Quants blocs per comprovar a l'inici (per defecte: %u, 0 = tots) - - - Include IP addresses in debug output (default: %u) - Inclou l'adreça IP a l'eixida de depuració (per defecte: %u) - - - Invalid -proxy address: '%s' - Adreça -proxy invalida: '%s' - - - Listen for JSON-RPC connections on <port> (default: %u or testnet: %u) - Escolta les connexions JSON-RPC en <port> (per defecte: %u o testnet: %u) - - - Listen for connections on <port> (default: %u or testnet: %u) - Escolta les connexions en <port> (per defecte: %u o testnet: %u) - - - Maintain at most <n> connections to peers (default: %u) - Manté com a màxim <n> connexions a iguals (per defecte: %u) - - - Make the wallet broadcast transactions - Fes que el moneder faça difusió de les transaccions - - - Maximum per-connection receive buffer, <n>*1000 bytes (default: %u) - Memòria intermèdia màxima de recepció per connexió, <n>*1000 bytes (per defecte: %u) - - - Maximum per-connection send buffer, <n>*1000 bytes (default: %u) - Memòria intermèdia màxima d'enviament per connexió, <n>*1000 bytes (per defecte: %u) - - - Prepend debug output with timestamp (default: %u) - Posa davant de l'eixida de depuració una marca horària (per defecte: %u) - - - Relay and mine data carrier transactions (default: %u) - Retransmet i mina les transaccions de l'operador (per defecte: %u) - - - Relay non-P2SH multisig (default: %u) - Retransmet multisig no P2SH (per defecte: %u) - - - Server certificate file (default: %s) - Fitxer de certificat del servidor (per defecte: %s) - - - Server private key (default: %s) - Clau privada del servidor (per defecte: %s) - - - Set key pool size to <n> (default: %u) - Defineix la mida clau disponible a <n> (per defecte: %u) - - - Set minimum block size in bytes (default: %u) - Defineix la mida de bloc mínima en bytes (per defecte: %u) - - - Set the number of threads to service RPC calls (default: %d) - Defineix el nombre de fils a crides de servei RPC (per defecte: %d) - - - Specify configuration file (default: %s) - Especifica el fitxer de configuració (per defecte: %s) - - - Specify connection timeout in milliseconds (minimum: 1, default: %d) - Especifica el temps d'espera de la connexió en milisegons (mínim: 1, per defecte: %d) - - - Specify pid file (default: %s) - Especifica el fitxer pid (per defecte: %s) - - - Spend unconfirmed change when sending transactions (default: %u) - Gasta el canvi no confirmat en enviar les transaccions (per defecte: %u) - - - Threshold for disconnecting misbehaving peers (default: %u) - Llindar per a desconnectar els iguals de comportament qüestionable (per defecte: %u) - - - Unknown network specified in -onlynet: '%s' - Xarxa desconeguda especificada a -onlynet: '%s' - - - Cannot resolve -bind address: '%s' - No es pot resoldre l'adreça -bind: '%s' - - - Cannot resolve -externalip address: '%s' - No es pot resoldre l'adreça -externalip: '%s' - - - Invalid amount for -paytxfee=<amount>: '%s' - Import no vàlid per a -paytxfee=<amount>: «%s» - - - Insufficient funds - Balanç insuficient - - - Loading block index... - S'està carregant l'índex de blocs... - - - Add a node to connect to and attempt to keep the connection open - Afig un node per a connectar-s'hi i intenta mantindre-hi la connexió oberta - - - Loading wallet... - S'està carregant el moneder... - - - Cannot downgrade wallet - No es pot reduir la versió del moneder - - - Cannot write default address - No es pot escriure l'adreça per defecte - - - Rescanning... - S'està reescanejant... - - - Done loading - Ha acabat la càrrega - - - Error - Error - - - \ No newline at end of file diff --git a/src/qt/locale/bitcoin_ca_ES.ts b/src/qt/locale/bitcoin_ca_ES.ts deleted file mode 100644 index cb68f9816..000000000 --- a/src/qt/locale/bitcoin_ca_ES.ts +++ /dev/null @@ -1,3575 +0,0 @@ - - - AddressBookPage - - Right-click to edit address or label - Feu clic dret per a editar l'adreça o l'etiqueta - - - Create a new address - Crea una nova adreça - - - &New - &Nova - - - Copy the currently selected address to the system clipboard - Copia l'adreça seleccionada al porta-retalls del sistema - - - &Copy - &Copia - - - C&lose - &Tanca - - - &Copy Address - &Copia l'adreça - - - Delete the currently selected address from the list - Elimina l'adreça sel·leccionada actualment de la llista - - - Export the data in the current tab to a file - Exporta les dades de la pestanya actual a un fitxer - - - &Export - &Exporta - - - &Delete - &Elimina - - - Choose the address to send coins to - Trieu una adreça on voleu enviar monedes - - - Choose the address to receive coins with - Trieu l'adreça on voleu rebre monedes - - - C&hoose - T&ria - - - Sending addresses - S'estan enviant les adreces - - - Receiving addresses - S'estan rebent les adreces - - - These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins. - Aquestes són les vostres adreces de Bitcoin per enviar els pagaments. Sempre reviseu l'import i l'adreça del destinatari abans de transferir monedes. - - - These are your Bitcoin addresses for receiving payments. It is recommended to use a new receiving address for each transaction. - Aquestes són les vostres adreces Bitcoin per rebre pagaments. Es recomana utilitzar una adreça nova de recepció per a cada transacció. - - - Copy &Label - Copia l'&etiqueta - - - &Edit - &Edita - - - Export Address List - Exporta la llista d'adreces - - - Comma separated file (*.csv) - Fitxer de separació amb comes (*.csv) - - - Exporting Failed - L'exportació ha fallat - - - There was an error trying to save the address list to %1. Please try again. - S'ha produït un error en desar la llista d'adreces a %1. Torneu-ho a provar. - - - - AddressTableModel - - Label - Etiqueta - - - Address - Adreça - - - (no label) - (sense etiqueta) - - - - AskPassphraseDialog - - Passphrase Dialog - Diàleg de contrasenya - - - Enter passphrase - Introduïu una contrasenya - - - New passphrase - Nova contrasenya - - - Repeat new passphrase - Repetiu la nova contrasenya - - - Encrypt wallet - Encripta el moneder - - - This operation needs your wallet passphrase to unlock the wallet. - Aquesta operació requereix la contrasenya del moneder per a desbloquejar-lo. - - - Unlock wallet - Desbloqueja el moneder - - - This operation needs your wallet passphrase to decrypt the wallet. - Aquesta operació requereix la contrasenya del moneder per desencriptar-lo. - - - Decrypt wallet - Desencripta el moneder - - - Change passphrase - Canvia la contrasenya - - - Confirm wallet encryption - Confirma l'encriptació del moneder - - - Warning: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR BITCOINS</b>! - Avís: si encripteu el vostre moneder i perdeu la contrasenya, <b>PERDREU TOTS ELS VOSTRES BITCOINS</b>! - - - Are you sure you wish to encrypt your wallet? - Esteu segur que voleu encriptar el vostre moneder? - - - Bitcoin Core 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. - Ara es tancarà el Bitcoin Core per finalitzar el procés d'encriptació. Tingueu present que encriptar el vostre moneder no garanteix que les vostres bitcoins no puguin ser robades per programari maliciós que infecti l'ordinador. - - - 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. - IMPORTANT: Tota copia de seguretat que hàgiu realitzat hauria de ser reemplaçada pel, recentment generat, fitxer encriptat del moneder. - - - Warning: The Caps Lock key is on! - Avís: Les lletres majúscules estan activades! - - - Wallet encrypted - Moneder encriptat - - - 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>. - Introduïu la contrasenya nova al moneder.<br/>Utilitzeu una contrasenya de <b>deu o més caràcters aleatoris</b>, o <b>vuit o més paraules</b>. - - - Enter the old passphrase and new passphrase to the wallet. - Introduïu la contrasenya antiga i la contrasenya nova al moneder. - - - Wallet encryption failed - L'encriptació del moneder ha fallat - - - Wallet encryption failed due to an internal error. Your wallet was not encrypted. - L'encriptació del moneder ha fallat per un error intern. El moneder no ha estat encriptat. - - - The supplied passphrases do not match. - La contrasenya introduïda no coincideix. - - - Wallet unlock failed - El desbloqueig del moneder ha fallat - - - The passphrase entered for the wallet decryption was incorrect. - La contrasenya introduïda per a desencriptar el moneder és incorrecta. - - - Wallet decryption failed - La desencriptació del moneder ha fallat - - - Wallet passphrase was successfully changed. - La contrasenya del moneder ha estat modificada correctament. - - - - BitcoinGUI - - Sign &message... - Signa el &missatge... - - - Synchronizing with network... - S'està sincronitzant amb la xarxa ... - - - &Overview - &Panorama general - - - Node - Node - - - Show general overview of wallet - Mostra el panorama general del moneder - - - &Transactions - &Transaccions - - - Browse transaction history - Cerca a l'historial de transaccions - - - E&xit - S&urt - - - Quit application - Surt de l'aplicació - - - About &Qt - Quant a &Qt - - - Show information about Qt - Mostra informació sobre Qt - - - &Options... - &Opcions... - - - &Encrypt Wallet... - &Encripta el moneder... - - - &Backup Wallet... - &Realitza una còpia de seguretat del moneder... - - - &Change Passphrase... - &Canvia la contrasenya... - - - &Sending addresses... - Adreces d'e&nviament... - - - &Receiving addresses... - Adreces de &recepció - - - Open &URI... - Obre un &URI... - - - Bitcoin Core client - Client del Bitcoin Core - - - Importing blocks from disk... - S'estan important els blocs del disc... - - - Reindexing blocks on disk... - S'estan reindexant els blocs al disc... - - - Send coins to a Bitcoin address - Envia monedes a una adreça Bitcoin - - - Backup wallet to another location - Realitza una còpia de seguretat del moneder a una altra ubicació - - - Change the passphrase used for wallet encryption - Canvia la contrasenya d'encriptació del moneder - - - &Debug window - &Finestra de depuració - - - Open debugging and diagnostic console - Obre la consola de diagnòstic i depuració - - - &Verify message... - &Verifica el missatge... - - - Bitcoin - Bitcoin - - - Wallet - Moneder - - - &Send - &Envia - - - &Receive - &Rep - - - Show information about Bitcoin Core - Mostra informació del Bitcoin Core - - - &Show / Hide - &Mostra / Amaga - - - Show or hide the main Window - Mostra o amaga la finestra principal - - - Encrypt the private keys that belong to your wallet - Encripta les claus privades pertanyents al moneder - - - Sign messages with your Bitcoin addresses to prove you own them - Signa el missatges amb la seva adreça de Bitcoin per provar que les poseeixes - - - Verify messages to ensure they were signed with specified Bitcoin addresses - Verifiqueu els missatges per assegurar-vos que han estat signats amb una adreça Bitcoin específica. - - - &File - &Fitxer - - - &Settings - &Configuració - - - &Help - &Ajuda - - - Tabs toolbar - Barra d'eines de les pestanyes - - - Bitcoin Core - Nucli de Bitcoin - - - Request payments (generates QR codes and bitcoin: URIs) - Sol·licita pagaments (genera codis QR i bitcoin: URI) - - - &About Bitcoin Core - &Quant al Bitcoin Core - - - Modify configuration options for Bitcoin Core - Modifica les opcions de configuració del Bitcoin Core - - - Show the list of used sending addresses and labels - Mostra la llista d'adreces d'enviament i etiquetes utilitzades - - - Show the list of used receiving addresses and labels - Mostra la llista d'adreces de recepció i etiquetes utilitzades - - - Open a bitcoin: URI or payment request - Obre una bitcoin: sol·licitud d'URI o pagament - - - &Command-line options - Opcions de la &línia d'ordres - - - Show the Bitcoin Core help message to get a list with possible Bitcoin command-line options - Mostra el missatge d'ajuda del Bitcoin Core per obtenir una llista amb les possibles opcions de línia d'ordres de Bitcoin - - - %n active connection(s) to Bitcoin network - %n connexió activa a la xarxa Bitcoin%n connexions actives a la xarxa Bitcoin - - - No block source available... - No hi ha cap font de bloc disponible... - - - Processed %n block(s) of transaction history. - S'han processat %n bloc de l'historial de transacció.S'han processat %n blocs de l'historial de transacció. - - - %n hour(s) - %n hora%n hores - - - %n day(s) - %n dia%n dies - - - %n week(s) - %n setmana%n setmanes - - - %1 and %2 - %1 i %2 - - - %n year(s) - %n any%n anys - - - %1 behind - %1 darrere - - - Last received block was generated %1 ago. - El darrer bloc rebut ha estat generat fa %1. - - - Transactions after this will not yet be visible. - Les transaccions a partir d'això no seran visibles. - - - Error - Error - - - Warning - Avís - - - Information - Informació - - - Up to date - Al dia - - - Catching up... - S'està posant al dia ... - - - Date: %1 - - Data: %1 - - - - Amount: %1 - - Import: %1 - - - - Type: %1 - - Tipus: %1 - - - - Label: %1 - - Etiqueta: %1 - - - - Address: %1 - - Adreça: %1 - - - - Sent transaction - Transacció enviada - - - Incoming transaction - Transacció entrant - - - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - El moneder està <b>encriptat</b> i actualment <b>desbloquejat</b> - - - Wallet is <b>encrypted</b> and currently <b>locked</b> - El moneder està <b>encriptat</b> i actualment <b>bloquejat</b> - - - - ClientModel - - Network Alert - Alerta de xarxa - - - - CoinControlDialog - - Coin Selection - Selecció de moneda - - - Quantity: - Quantitat: - - - Bytes: - Bytes: - - - Amount: - Import: - - - Priority: - Prioritat: - - - Fee: - Comissió - - - Dust: - Polsim: - - - After Fee: - Comissió posterior: - - - Change: - Canvi: - - - (un)select all - (des)selecciona-ho tot - - - Tree mode - Mode arbre - - - List mode - Mode llista - - - Amount - Import - - - Received with label - Rebut amb l'etiqueta - - - Received with address - Rebut amb l'adreça - - - Date - Data - - - Confirmations - Confirmacions - - - Confirmed - Confirmat - - - Priority - Prioritat - - - Copy address - Copiar adreça - - - Copy label - Copiar etiqueta - - - Copy amount - Copia l'import - - - Copy transaction ID - Copiar ID de transacció - - - Lock unspent - Bloqueja sense gastar - - - Unlock unspent - Desbloqueja sense gastar - - - Copy quantity - Copia la quantitat - - - Copy fee - Copia la comissió - - - Copy after fee - Copia la comissió posterior - - - Copy bytes - Copia els bytes - - - Copy priority - Copia la prioritat - - - Copy dust - Copia el polsim - - - Copy change - Copia el canvi - - - highest - El més alt - - - higher - Més alt - - - high - Alt - - - medium-high - mig-alt - - - medium - mig - - - low-medium - baix-mig - - - low - baix - - - lower - més baix - - - lowest - el més baix - - - (%1 locked) - (%1 bloquejada) - - - none - cap - - - This label turns red if the transaction size is greater than 1000 bytes. - Aquesta etiqueta es torna en vermell si la transacció és superior a 1000 bytes. - - - This label turns red if the priority is smaller than "medium". - Aquesta etiqueta es torna en vermell si la propietat és inferior que la «mitjana». - - - This label turns red if any recipient receives an amount smaller than %1. - Aquesta etiqueta es torna vermella si el destinatari rep un import inferior de %1. - - - Can vary +/- %1 satoshi(s) per input. - Pot variar +/- %1 satoshi(s) per entrada. - - - yes - sí - - - no - no - - - This means a fee of at least %1 per kB is required. - Això comporta una comissió d'almenys %1 per kB. - - - Can vary +/- 1 byte per input. - Pot variar +/- 1 byte per entrada. - - - Transactions with higher priority are more likely to get included into a block. - Les transaccions amb una major prioritat són més propenses a ser incloses en un bloc. - - - (no label) - (sense etiqueta) - - - change from %1 (%2) - canvia de %1 (%2) - - - (change) - (canvia) - - - - EditAddressDialog - - Edit Address - Edita l'adreça - - - &Label - &Etiqueta - - - The label associated with this address list entry - L'etiqueta associada amb aquesta entrada de llista d'adreces - - - The address associated with this address list entry. This can only be modified for sending addresses. - L'adreça associada amb aquesta entrada de llista d'adreces. Només es pot modificar per a les adreces d'enviament. - - - &Address - &Adreça - - - New receiving address - Nova adreça de recepció. - - - New sending address - Nova adreça d'enviament - - - Edit receiving address - Edita les adreces de recepció - - - Edit sending address - Edita les adreces d'enviament - - - The entered address "%1" is already in the address book. - L'adreça introduïda «%1» ja és present a la llibreta d'adreces. - - - The entered address "%1" is not a valid Bitcoin address. - L'adreça introduïda «%1» no és una adreça de Bitcoin vàlida. - - - Could not unlock wallet. - No s'ha pogut desbloquejar el moneder. - - - New key generation failed. - Ha fallat la generació d'una nova clau. - - - - FreespaceChecker - - A new data directory will be created. - Es crearà un nou directori de dades. - - - name - nom - - - Directory already exists. Add %1 if you intend to create a new directory here. - El directori ja existeix. Afegeix %1 si vols crear un nou directori en aquesta ubicació. - - - Path already exists, and is not a directory. - El camí ja existeix i no és cap directori. - - - Cannot create data directory here. - No es pot crear el directori de dades aquí. - - - - HelpMessageDialog - - Bitcoin Core - Nucli de Bitcoin - - - version - versió - - - (%1-bit) - (%1-bit) - - - About Bitcoin Core - Quant al Bitcoin Core - - - Command-line options - Opcions de línia d'ordres - - - Usage: - Ús: - - - command-line options - Opcions de la línia d'ordres - - - - Intro - - Welcome - Us donem la benviguda - - - Welcome to Bitcoin Core. - Us donem la benvinguda al Bitcoin Core. - - - As this is the first time the program is launched, you can choose where Bitcoin Core will store its data. - Atès que és la primera vegada que executeu el programa, podeu triar on emmagatzemarà el Bitcoin Core les dades. - - - Bitcoin Core will download and store a copy of the Bitcoin block chain. At least %1GB of data will be stored in this directory, and it will grow over time. The wallet will also be stored in this directory. - El Bitcoin Core descarregarà i emmagatzemarà una còpia de la cadena de blocs de Bitcoin. Com a mínim s'emmagatzemaran %1 GB de dades en aquest directori, que seguiran creixent gradualment. També s'hi emmagatzemarà el moneder. - - - Use the default data directory - Utilitza el directori de dades per defecte - - - Use a custom data directory: - Utilitza un directori de dades personalitzat: - - - Bitcoin Core - Nucli de Bitcoin - - - Error: Specified data directory "%1" cannot be created. - Error: el directori de dades «%1» especificat no pot ser creat. - - - Error - Error - - - %n GB of free space available - %n GB d'espai lliure disponible%n GB d'espai lliure disponible - - - (of %n GB needed) - (de %n GB necessari)(de %n GB necessaris) - - - - OpenURIDialog - - Open URI - Obre un URI - - - Open payment request from URI or file - Obre una sol·licitud de pagament des d'un URI o un fitxer - - - URI: - URI: - - - Select payment request file - Selecciona un fitxer de sol·licitud de pagament - - - Select payment request file to open - Selecciona el fitxer de sol·licitud de pagament per obrir - - - - OptionsDialog - - Options - Opcions - - - &Main - &Principal - - - Size of &database cache - Mida de la memòria cau de la base de &dades - - - MB - MB - - - Number of script &verification threads - Nombre de fils de &verificació d'scripts - - - Accept connections from outside - Accepta connexions de fora - - - Allow incoming connections - Permet connexions entrants - - - IP address of the proxy (e.g. IPv4: 127.0.0.1 / IPv6: ::1) - Adreça IP del proxy (p. ex. IPv4: 127.0.0.1 / IPv6: ::1) - - - Minimize instead of exit the application when the window is closed. When this option is enabled, the application will be closed only after selecting Exit in the menu. - Minimitza en comptes de sortir de l'aplicació quan la finestra es tanca. Quan s'habilita aquesta opció l'aplicació es tancara només quan se selecciona Surt del menú. - - - The user interface language can be set here. This setting will take effect after restarting Bitcoin Core. - La interfície d'usuari pot definir-se des d'aquí. El paràmetre tindrà efecte després de reiniciar el Bitcoin Core. - - - 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 |. - URL de terceres parts (p. ex. explorador de blocs) que apareix en la pestanya de transaccions com elements del menú contextual. %s en l'URL es reemplaçat pel resum de la transacció. Diferents URL estan separades per una barra vertical |. - - - Third party transaction URLs - URL de transaccions de terceres parts - - - Active command-line options that override above options: - Opcions de línies d'ordre active que sobreescriuen les opcions de dalt: - - - Reset all client options to default. - Reestableix totes les opcions del client. - - - &Reset Options - &Reestableix les opcions - - - &Network - &Xarxa - - - Automatically start Bitcoin Core after logging in to the system. - Inicia el Bitcoin Core automàticament després d'iniciar una sessió en el sistema. - - - &Start Bitcoin Core on system login - &Inicia el Bitcoin Core en inciar el sistema - - - (0 = auto, <0 = leave that many cores free) - (0 = auto, <0 = deixa tants nuclis lliures) - - - W&allet - &Moneder - - - Expert - Expert - - - Enable coin &control features - Activa les funcions de &control de les monedes - - - 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. - Si inhabiliteu la despesa d'un canvi sense confirmar, el canvi d'una transacció no pot ser utilitzat fins que la transacció no tingui com a mínim una confirmació. Això també afecta com es calcula el vostre balanç. - - - &Spend unconfirmed change - &Gasta el canvi sense confirmar - - - Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled. - Obre el port del client de Bitcoin al router de forma automàtica. Això només funciona quan el router implementa UPnP i l'opció està activada. - - - Map port using &UPnP - Port obert amb &UPnP - - - Connect to the Bitcoin network through a SOCKS5 proxy. - Connecta a la xarxa Bitcoin a través d'un proxy SOCKS5. - - - &Connect through SOCKS5 proxy (default proxy): - &Connecta a través d'un proxy SOCKS5 (proxy per defecte): - - - Proxy &IP: - &IP del proxy: - - - &Port: - &Port: - - - Port of the proxy (e.g. 9050) - Port del proxy (per exemple 9050) - - - &Window - &Finestra - - - Show only a tray icon after minimizing the window. - Mostra només la icona de la barra en minimitzar la finestra. - - - &Minimize to the tray instead of the taskbar - &Minimitza a la barra d'aplicacions en comptes de la barra de tasques - - - M&inimize on close - M&inimitza en tancar - - - &Display - &Pantalla - - - User Interface &language: - &Llengua de la interfície d'usuari: - - - &Unit to show amounts in: - &Unitats per mostrar els imports en: - - - Choose the default subdivision unit to show in the interface and when sending coins. - Selecciona la unitat de subdivisió per defecte per mostrar en la interfície quan s'envien monedes. - - - Whether to show coin control features or not. - Si voleu mostrar les funcions de control de monedes o no. - - - &OK - &D'acord - - - &Cancel - &Cancel·la - - - default - Per defecte - - - none - cap - - - Confirm options reset - Confirmeu el reestabliment de les opcions - - - Client restart required to activate changes. - Cal reiniciar el client per activar els canvis. - - - Client will be shut down. Do you want to proceed? - S'aturarà el client. Voleu procedir? - - - This change would require a client restart. - Amb aquest canvi cal un reinici del client. - - - The supplied proxy address is invalid. - L'adreça proxy introduïda és invalida. - - - - OverviewPage - - Form - Formulari - - - The displayed information may be out of date. Your wallet automatically synchronizes with the Bitcoin network after a connection is established, but this process has not completed yet. - La informació mostrada pot no estar al día. El teu moneder es sincronitza automàticament amb la xarxa Bitcoin un cop s'ha establert connexió, però aquest proces no s'ha completat encara. - - - Watch-only: - Només lectura: - - - Available: - Disponible: - - - Your current spendable balance - El balanç que podeu gastar actualment - - - Pending: - Pendent: - - - Total of transactions that have yet to be confirmed, and do not yet count toward the spendable balance - Total de transaccions que encara han de confirmar-se i que encara no compten en el balanç que es pot gastar - - - Immature: - Immadur: - - - Mined balance that has not yet matured - Balanç minat que encara no ha madurat - - - Balances - Balances - - - Total: - Total: - - - Your current total balance - El balanç total actual - - - Your current balance in watch-only addresses - El vostre balanç actual en adreces de només lectura - - - Spendable: - Que es pot gastar: - - - Recent transactions - Transaccions recents - - - Unconfirmed transactions to watch-only addresses - Transaccions sense confirmar a adreces de només lectura - - - Mined balance in watch-only addresses that has not yet matured - Balanç minat en adreces de només lectura que encara no ha madurat - - - Current total balance in watch-only addresses - Balanç total actual en adreces de només lectura - - - - PaymentServer - - URI handling - Gestió d'URI - - - Invalid payment address %1 - Adreça de pagament no vàlida %1 - - - Payment request rejected - La sol·licitud de pagament s'ha rebutjat - - - Payment request network doesn't match client network. - La xarxa de la sol·licitud de pagament no coincideix amb la xarxa del client. - - - Payment request is not initialized. - La sol·licitud de pagament no està inicialitzada. - - - Requested payment amount of %1 is too small (considered dust). - L'import de pagament sol·licitat %1 és massa petit (es considera polsim). - - - Payment request error - Error en la sol·licitud de pagament - - - Cannot start bitcoin: click-to-pay handler - No es pot iniciar bitcoin: gestor clica-per-pagar - - - Payment request fetch URL is invalid: %1 - L'URL de recuperació de la sol·licitud de pagament no és vàlida: %1 - - - URI cannot be parsed! This can be caused by an invalid Bitcoin address or malformed URI parameters. - L'URI no pot ser analitzat! Això pot ser a causa d'una adreça de Bitcoin no vàlida o per paràmetres URI amb mal format. - - - Payment request file handling - Gestió de fitxers de les sol·licituds de pagament - - - Payment request file cannot be read! This can be caused by an invalid payment request file. - No es pot llegir el fitxer de la sol·licitud de pagament. Això pot ser causat per un fitxer de sol·licitud de pagament no vàlid. - - - Payment request expired. - La sol·licitud de pagament ha vençut. - - - Unverified payment requests to custom payment scripts are unsupported. - No s'accepten sol·licituds de pagament no verificades a scripts de pagament personalitzats. - - - Invalid payment request. - Sol·licitud de pagament no vàlida. - - - Refund from %1 - Reemborsament de %1 - - - Payment request %1 is too large (%2 bytes, allowed %3 bytes). - La sol·licitud de pagament %1 és massa gran (%2 bytes, permès %3 bytes). - - - Payment request DoS protection - Protecció de DoS per a la sol·licitud de pagament - - - Error communicating with %1: %2 - Error en comunicar amb %1: %2 - - - Payment request cannot be parsed! - No es pot analitzar la sol·licitud de pagament! - - - Bad response from server %1 - Mala resposta del servidor %1 - - - Payment acknowledged - Pagament reconegut - - - Network request error - Error en la sol·licitud de xarxa - - - - PeerTableModel - - User Agent - Agent d'usuari - - - Node/Service - Node/Servei - - - Ping Time - Temps de ping - - - - QObject - - Amount - Import - - - Enter a Bitcoin address (e.g. %1) - Introduïu una adreça de Bitcoin (p. ex. %1) - - - %1 d - %1 d - - - %1 h - %1 h - - - %1 m - %1 m - - - %1 s - %1 s - - - None - Cap - - - N/A - N/A - - - %1 ms - %1 ms - - - - QRImageWidget - - &Save Image... - De&sa la imatge... - - - &Copy Image - &Copia la imatge - - - Save QR Code - Desa el codi QR - - - PNG Image (*.png) - Imatge PNG (*.png) - - - - RPCConsole - - Client name - Nom del client - - - N/A - N/A - - - Client version - Versió del client - - - &Information - &Informació - - - Debug window - Finestra de depuració - - - General - General - - - Using OpenSSL version - Utilitzant OpenSSL versió - - - Using BerkeleyDB version - Utilitzant BerkeleyDB versió - - - Startup time - &Temps d'inici - - - Network - Xarxa - - - Name - Nom - - - Number of connections - Nombre de connexions - - - Block chain - Cadena de blocs - - - Current number of blocks - Nombre de blocs actuals - - - Open the Bitcoin Core debug log file from the current data directory. This can take a few seconds for large log files. - Obre el fitxer de registre de depuració del Bitcoin Core del directori de dades actual. Pot portar uns quants segons per a fitxers de registre grans. - - - Received - Rebut - - - Sent - Enviat - - - &Peers - &Iguals - - - Select a peer to view detailed information. - Seleccioneu un igual per mostrar informació detallada. - - - Direction - Direcció - - - Version - Versió - - - User Agent - Agent d'usuari - - - Services - Serveis - - - Starting Height - Alçada inicial - - - Sync Height - Sincronitza l'alçada - - - Ban Score - Puntuació de bandeig - - - Connection Time - Temps de connexió - - - Last Send - Darrer enviament - - - Last Receive - Darrera recepció - - - Bytes Sent - Bytes enviats - - - Bytes Received - Bytes rebuts - - - Ping Time - Temps de ping - - - Time Offset - Diferència horària - - - Last block time - Últim temps de bloc - - - &Open - &Obre - - - &Console - &Consola - - - &Network Traffic - Trà&nsit de la xarxa - - - &Clear - Nete&ja - - - Totals - Totals - - - In: - Dins: - - - Out: - Fora: - - - Build date - Data de compilació - - - Debug log file - Fitxer de registre de depuració - - - Clear console - Neteja la consola - - - Welcome to the Bitcoin Core RPC console. - Us donem la benviguda a la consola RPC del Bitcoin Core. - - - Use up and down arrows to navigate history, and <b>Ctrl-L</b> to clear screen. - Utilitza les fletxes d'amunt i avall per navegar per l'historial, i <b>Ctrl-L<\b> per netejar la pantalla. - - - Type <b>help</b> for an overview of available commands. - Escriviu <b>help<\b> per a obtenir un llistat de les ordres disponibles. - - - %1 B - %1 B - - - %1 KB - %1 KB - - - %1 MB - %1 MB - - - %1 GB - %1 GB - - - via %1 - a través de %1 - - - never - mai - - - Inbound - Entrant - - - Outbound - Sortint - - - Unknown - Desconegut - - - Fetching... - S'està obtenint... - - - - ReceiveCoinsDialog - - &Amount: - Im&port: - - - &Label: - &Etiqueta: - - - &Message: - &Missatge: - - - Reuse one of the previously used receiving addresses. Reusing addresses has security and privacy issues. Do not use this unless re-generating a payment request made before. - Reutilitza una de les adreces de recepció utilitzades anteriorment. La reutilització d'adreces pot comportar problemes de seguretat i privadesa. No ho utilitzeu llevat que torneu a generar una sol·licitud de pagament feta abans. - - - R&euse an existing receiving address (not recommended) - R&eutilitza una adreça de recepció anterior (no recomanat) - - - An optional message to attach to the payment request, which will be displayed when the request is opened. Note: The message will not be sent with the payment over the Bitcoin network. - Un missatge opcional que s'adjuntarà a la sol·licitud de pagament, que es mostrarà quan s'obri la sol·licitud. Nota: El missatge no s'enviarà amb el pagament per la xarxa Bitcoin. - - - An optional label to associate with the new receiving address. - Una etiqueta opcional que s'associarà amb la nova adreça receptora. - - - Use this form to request payments. All fields are <b>optional</b>. - Utilitzeu aquest formulari per sol·licitar pagaments. Tots els camps són <b>opcionals</b>. - - - An optional amount to request. Leave this empty or zero to not request a specific amount. - Un import opcional per sol·licitar. Deixeu-ho en blanc o zero per no sol·licitar cap import específic. - - - Clear all fields of the form. - Esborra tots els camps del formuari. - - - Clear - Neteja - - - Requested payments history - Historial de pagaments sol·licitats - - - &Request payment - &Sol·licitud de pagament - - - Show the selected request (does the same as double clicking an entry) - Mostra la sol·licitud seleccionada (fa el mateix que el doble clic a una entrada) - - - Show - Mostra - - - Remove the selected entries from the list - Esborra les entrades seleccionades de la llista - - - Remove - Esborra - - - Copy label - Copia l'etiqueta - - - Copy message - Copia el missatge - - - Copy amount - Copia l'import - - - - ReceiveRequestDialog - - QR Code - Codi QR - - - Copy &URI - Copia l'&URI - - - Copy &Address - Copia l'&adreça - - - &Save Image... - De&sa la imatge... - - - Request payment to %1 - Sol·licita un pagament a %1 - - - Payment information - Informació de pagament - - - URI - URI - - - Address - Adreça - - - Amount - Import - - - Label - Etiqueta - - - Message - Missatge - - - Resulting URI too long, try to reduce the text for label / message. - URI resultant massa llarga, intenta reduir el text per a la etiqueta / missatge - - - Error encoding URI into QR Code. - Error en codificar l'URI en un codi QR. - - - - RecentRequestsTableModel - - Date - Data - - - Label - Etiqueta - - - Message - Missatge - - - Amount - Import - - - (no label) - (sense etiqueta) - - - (no message) - (sense missatge) - - - (no amount) - (sense import) - - - - SendCoinsDialog - - Send Coins - Envia monedes - - - Coin Control Features - Característiques de control de les monedes - - - Inputs... - Entrades... - - - automatically selected - seleccionat automàticament - - - Insufficient funds! - Fons insuficients! - - - Quantity: - Quantitat: - - - Bytes: - Bytes: - - - Amount: - Import: - - - Priority: - Prioritat: - - - Fee: - Comissió: - - - After Fee: - Comissió posterior: - - - Change: - Canvi: - - - If this is activated, but the change address is empty or invalid, change will be sent to a newly generated address. - Si s'activa això, però l'adreça de canvi està buida o bé no és vàlida, el canvi s'enviarà a una adreça generada de nou. - - - Custom change address - Personalitza l'adreça de canvi - - - Transaction Fee: - Comissió de transacció - - - Choose... - Tria... - - - collapse fee-settings - redueix els paràmetres de comissió - - - per kilobyte - per kilobyte - - - 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. - 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. - - - Hide - Amaga - - - total at least - total com a mínim - - - 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. - 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. - - - (read the tooltip) - (llegiu l'indicador de funció) - - - Recommended: - Recomanada: - - - Custom: - Personalitzada: - - - (Smart fee not initialized yet. This usually takes a few blocks...) - (No s'ha inicialitzat encara la comissió intel·ligent. Normalment pren uns pocs blocs...) - - - Confirmation time: - Temps de confirmació: - - - normal - normal - - - fast - ràpid - - - Send as zero-fee transaction if possible - Envia com a transacció de comissió zero si és possible - - - (confirmation may take longer) - (la confirmació pot trigar més temps) - - - Send to multiple recipients at once - Envia a múltiples destinataris al mateix temps - - - Add &Recipient - Afegeix &destinatari - - - Clear all fields of the form. - Netejar tots els camps del formulari. - - - Dust: - Polsim: - - - Clear &All - Neteja-ho &tot - - - Balance: - Balanç: - - - Confirm the send action - Confirma l'acció d'enviament - - - S&end - E&nvia - - - Confirm send coins - Confirma l'enviament de monedes - - - %1 to %2 - %1 a %2 - - - Copy quantity - Copia la quantitat - - - Copy amount - Copia l'import - - - Copy fee - Copia la comissió - - - Copy after fee - Copia la comissió posterior - - - Copy bytes - Copia els bytes - - - Copy priority - Copia la prioritat - - - Copy change - Copia el canvi - - - or - o - - - The amount to pay must be larger than 0. - L'import a pagar ha de ser major que 0. - - - The amount exceeds your balance. - L'import supera el vostre balanç. - - - The total exceeds your balance when the %1 transaction fee is included. - El total excedeix el teu balanç quan s'afegeix la comissió a la transacció %1. - - - Transaction creation failed! - Ha fallat la creació de la transacció! - - - 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. - 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. - - - A fee higher than %1 is considered an absurdly high fee. - Una comissió superior a %1 es considera una comissió absurdament alta. - - - Payment request expired. - La sol·licitud de pagament ha vençut. - - - Estimated to begin confirmation within %n block(s). - Estimat per començar la confirmació en %n bloc.Estimat per començar la confirmació en %n blocs. - - - Pay only the minimum fee of %1 - Paga només la comissió mínima de %1 - - - The recipient address is not valid. Please recheck. - L'adreça de destinatari no és vàlida. Torneu-la a comprovar. - - - Duplicate address found: addresses should only be used once each. - S'ha trobat una adreça duplicada: cal utilitzar les adreces només un cop cada vegada. - - - Warning: Invalid Bitcoin address - Avís: adreça Bitcoin no vàlida - - - (no label) - (sense etiqueta) - - - Warning: Unknown change address - Avís: adreça de canvi desconeguda - - - Copy dust - Copia el polsim - - - Are you sure you want to send? - Esteu segur que ho voleu enviar? - - - added as transaction fee - S'ha afegit una taxa de transacció - - - - SendCoinsEntry - - A&mount: - Q&uantitat: - - - Pay &To: - Paga &a: - - - Enter a label for this address to add it to your address book - Introduïu una etiqueta per a aquesta adreça per afegir-la a la llibreta d'adreces - - - &Label: - &Etiqueta: - - - Choose previously used address - Escull una adreça feta servir anteriorment - - - This is a normal payment. - Això és un pagament normal. - - - The Bitcoin address to send the payment to - L'adreça Bitcoin on enviar el pagament - - - Alt+A - Alta+A - - - Paste address from clipboard - Enganxar adreça del porta-retalls - - - Alt+P - Alt+P - - - Remove this entry - Elimina aquesta entrada - - - The fee will be deducted from the amount being sent. The recipient will receive less bitcoins than you enter in the amount field. If multiple recipients are selected, the fee is split equally. - La comissió es deduirà de l'import que s'enviarà. El destinatari rebrà menys bitcoins que les que introduïu al camp d'import. Si se seleccionen múltiples destinataris, la comissió es dividirà per igual. - - - S&ubtract fee from amount - S&ubstreu la comissió de l'import - - - Message: - Missatge: - - - This is an unauthenticated payment request. - Aquesta és una sol·licitud de pagament no autenticada. - - - This is an authenticated payment request. - Aquesta és una sol·licitud de pagament autenticada. - - - Enter a label for this address to add it to the list of used addresses - Introduïu una etiqueta per a aquesta adreça per afegir-la a la llista d'adreces utilitzades - - - A message that was attached to the bitcoin: URI which will be stored with the transaction for your reference. Note: This message will not be sent over the Bitcoin network. - Un missatge que s'ha adjuntat al bitcoin: URI que s'emmagatzemarà amb la transacció per a la vostra referència. Nota: el missatge no s'enviarà a través de la xarxa Bitcoin. - - - Pay To: - Paga a: - - - Memo: - Memo: - - - - ShutdownWindow - - Bitcoin Core is shutting down... - S'està aturant el Bitcoin Core... - - - Do not shut down the computer until this window disappears. - No apagueu l'ordinador fins que no desaparegui aquesta finestra. - - - - SignVerifyMessageDialog - - Signatures - Sign / Verify a Message - Signatures - Signa / verifica un missatge - - - &Sign Message - &Signa el missatge - - - You can sign messages/agreements with your addresses to prove you can receive bitcoins sent to them. Be careful not to sign anything vague or random, as phishing attacks may try to trick you into signing your identity over to them. Only sign fully-detailed statements you agree to. - Podeu signar missatges/acords amb les vostres adreces per provar que rebeu les bitcoins que s'hi envien. Aneu amb compte no signar res que sigui vague o aleatori, perquè en alguns atacs de suplantació es pot provar que hi signeu la vostra identitat. Només signeu aquelles declaracions completament detallades en què hi esteu d'acord. - - - The Bitcoin address to sign the message with - L'adreça Bitcoin amb què signar el missatge - - - Choose previously used address - Tria les adreces fetes servir amb anterioritat - - - Alt+A - Alt+A - - - Paste address from clipboard - Enganxa l'adreça del porta-retalls - - - Alt+P - Alt+P - - - Enter the message you want to sign here - Introduïu aquí el missatge que voleu signar - - - Signature - Signatura - - - Copy the current signature to the system clipboard - Copia la signatura actual al porta-retalls del sistema - - - Sign the message to prove you own this Bitcoin address - Signa el missatge per provar que ets propietari d'aquesta adreça Bitcoin - - - Sign &Message - Signa el &missatge - - - Reset all sign message fields - Neteja tots els camps de clau - - - Clear &All - Neteja-ho &tot - - - &Verify Message - &Verifica el missatge - - - Enter the receiver's address, message (ensure you copy line breaks, spaces, tabs, etc. exactly) and signature below to verify the message. Be careful not to read more into the signature than what is in the signed message itself, to avoid being tricked by a man-in-the-middle attack. Note that this only proves the signing party receives with the address, it cannot prove sendership of any transaction! - Introduïu l'adreça del receptor, el missatge (assegureu-vos de copiar els salts de línia, espais, tabuladors, etc. exactament) i signatura de sota per verificar el missatge. Tingueu cura de no llegir més en la signatura del que està al missatge signat, per evitar ser enganyat per un atac d'home-en-el-mig. Tingueu en compte que això només demostra que la part que signa rep amb l'adreça, i no es pot provar l'enviament de qualsevol transacció! - - - The Bitcoin address the message was signed with - L'adreça Bitcoin amb què va ser signat el missatge - - - Verify the message to ensure it was signed with the specified Bitcoin address - Verificar el missatge per assegurar-se que ha estat signat amb una adreça Bitcoin específica - - - Verify &Message - Verifica el &missatge - - - Reset all verify message fields - Neteja tots els camps de verificació de missatge - - - Click "Sign Message" to generate signature - Feu clic a «Signa el missatge» per a generar una signatura - - - The entered address is invalid. - L'adreça introduïda no és vàlida. - - - Please check the address and try again. - Comproveu l'adreça i torneu-ho a provar. - - - The entered address does not refer to a key. - L'adreça introduïda no referencia a cap clau. - - - Wallet unlock was cancelled. - El desbloqueig del moneder ha estat cancelat. - - - Private key for the entered address is not available. - La clau privada per a la adreça introduïda no està disponible. - - - Message signing failed. - La signatura del missatge ha fallat. - - - Message signed. - Missatge signat. - - - The signature could not be decoded. - La signatura no s'ha pogut descodificar. - - - Please check the signature and try again. - Comproveu la signatura i torneu-ho a provar. - - - The signature did not match the message digest. - La signatura no coincideix amb el resum del missatge. - - - Message verification failed. - Ha fallat la verificació del missatge. - - - Message verified. - Missatge verificat. - - - - SplashScreen - - Bitcoin Core - Bitcoin Core - - - The Bitcoin Core developers - Els desenvolupadors del Bitcoin Core - - - [testnet] - [testnet] - - - - TrafficGraphWidget - - KB/s - KB/s - - - - TransactionDesc - - Open until %1 - Obert fins %1 - - - conflicted - en conflicte - - - %1/offline - %1/fora de línia - - - %1/unconfirmed - %1/sense confirmar - - - %1 confirmations - %1 confirmacions - - - Status - Estat - - - , broadcast through %n node(s) - , difusió a través de %n node, difusió a través de %n nodes - - - Date - Data - - - Source - Font - - - Generated - Generat - - - From - Des de - - - To - A - - - own address - Adreça pròpia - - - watch-only - només lectura - - - label - etiqueta - - - Credit - Crèdit - - - matures in %n more block(s) - disponible en %n bloc mésdisponibles en %n blocs més - - - not accepted - no acceptat - - - Debit - Dèbit - - - Total debit - Dèbit total - - - Total credit - Crèdit total - - - Transaction fee - Comissió de transacció - - - Net amount - Import net - - - Message - Missatge - - - Comment - Comentar - - - Transaction ID - ID de transacció - - - Merchant - Mercader - - - Generated coins must mature %1 blocks before they can be spent. When you generated this block, it was broadcast to the network to be added to the block chain. If it fails to get into the chain, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - Les monedes generades han de madurar %1 blocs abans de poder ser gastades. Quan genereu aquest bloc, es farà saber a la xarxa per tal d'afegir-lo a la cadena de blocs. Si no pot fer-se lloc a la cadena, el seu estat canviarà a «no acceptat» i no es podrà gastar. Això pot passar ocasionalment si un altre node genera un bloc en un marge de segons respecte al vostre. - - - Debug information - Informació de depuració - - - Transaction - Transacció - - - Inputs - Entrades - - - Amount - Import - - - true - cert - - - false - fals - - - , has not been successfully broadcast yet - , encara no ha estat emès correctement - - - Open for %n more block(s) - Obre per %n bloc mésObre per %n blocs més - - - unknown - desconegut - - - - TransactionDescDialog - - Transaction details - Detall de la transacció - - - This pane shows a detailed description of the transaction - Aquest panell mostra una descripció detallada de la transacció - - - - TransactionTableModel - - Date - Data - - - Type - Tipus - - - Immature (%1 confirmations, will be available after %2) - Immadur (%1 confirmacions, serà disponible després de %2) - - - Open for %n more block(s) - Obre per %n bloc mésObre per %n blocs més - - - Open until %1 - Obert fins %1 - - - Confirmed (%1 confirmations) - Confirmat (%1 confirmacions) - - - This block was not received by any other nodes and will probably not be accepted! - Aquest bloc no ha estat rebut per cap altre node i probablement no serà acceptat! - - - Generated but not accepted - Generat però no acceptat - - - Offline - Fora de línia - - - Label - Etiqueta - - - Unconfirmed - Sense confirmar - - - Confirming (%1 of %2 recommended confirmations) - Confirmant (%1 de %2 confirmacions recomanades) - - - Conflicted - En conflicte - - - Received with - Rebut amb - - - Received from - Rebut de - - - Sent to - Enviat a - - - Payment to yourself - Pagament a un mateix - - - Mined - Minat - - - watch-only - només lectura - - - (n/a) - (n/a) - - - Transaction status. Hover over this field to show number of confirmations. - Estat de la transacció. Desplaceu-vos sobre aquest camp per mostrar el nombre de confirmacions. - - - Date and time that the transaction was received. - Data i hora en que la transacció va ser rebuda. - - - Type of transaction. - Tipus de transacció. - - - Whether or not a watch-only address is involved in this transaction. - Si està implicada o no una adreça només de lectura en la transacció. - - - User-defined intent/purpose of the transaction. - Intenció/propòsit de la transacció definida per l'usuari. - - - Amount removed from or added to balance. - Import extret o afegit del balanç. - - - - TransactionView - - All - Tot - - - Today - Avui - - - This week - Aquesta setmana - - - This month - Aquest mes - - - Last month - El mes passat - - - This year - Enguany - - - Range... - Rang... - - - Received with - Rebut amb - - - Sent to - Enviat a - - - To yourself - A un mateix - - - Mined - Minat - - - Other - Altres - - - Enter address or label to search - Introduïu una adreça o una etiqueta per cercar - - - Min amount - Import mínim - - - Copy address - Copia l'adreça - - - Copy label - Copiar etiqueta - - - Copy amount - Copia l'import - - - Copy transaction ID - Copiar ID de transacció - - - Edit label - Editar etiqueta - - - Show transaction details - Mostra detalls de la transacció - - - Export Transaction History - Exporta l'historial de transacció - - - Watch-only - Només de lectura - - - Exporting Failed - L'exportació ha fallat - - - There was an error trying to save the transaction history to %1. - S'ha produït un error en provar de desar l'historial de transacció a %1. - - - Exporting Successful - Exportació amb èxit - - - The transaction history was successfully saved to %1. - L'historial de transaccions s'ha desat correctament a %1. - - - Comma separated file (*.csv) - Fitxer separat per comes (*.csv) - - - Confirmed - Confirmat - - - Date - Data - - - Type - Tipus - - - Label - Etiqueta - - - Address - Adreça - - - ID - ID - - - Range: - Rang: - - - to - a - - - - UnitDisplayStatusBarControl - - Unit to show amounts in. Click to select another unit. - Unitat en què mostrar els imports. Feu clic per seleccionar una altra unitat. - - - - WalletFrame - - No wallet has been loaded. - No s'ha carregat cap moneder. - - - - WalletModel - - Send Coins - Envia monedes - - - - WalletView - - &Export - &Exporta - - - Export the data in the current tab to a file - Exporta les dades de la pestanya actual a un fitxer - - - Backup Wallet - Còpia de seguretat del moneder - - - Wallet Data (*.dat) - Dades del moneder (*.dat) - - - Backup Failed - Ha fallat la còpia de seguretat - - - There was an error trying to save the wallet data to %1. - S'ha produït un error en provar de desar les dades del moneder a %1. - - - The wallet data was successfully saved to %1. - S'han desat les dades del moneder correctament a %1. - - - Backup Successful - La còpia de seguretat s'ha realitzat correctament - - - - bitcoin-core - - Options: - Opcions: - - - Specify data directory - Especifica el directori de dades - - - Connect to a node to retrieve peer addresses, and disconnect - Connecta al node per obtenir les adreces de les connexions, i desconnecta - - - Specify your own public address - Especifiqueu la vostra adreça pública - - - Accept command line and JSON-RPC commands - Accepta la línia d'ordres i ordres JSON-RPC - - - Run in the background as a daemon and accept commands - Executa en segon pla com a programa dimoni i accepta ordres - - - Use the test network - Utilitza la xarxa de prova - - - Accept connections from outside (default: 1 if no -proxy or -connect) - Accepta connexions de fora (per defecte: 1 si no -proxy o -connect) - - - Bind to given address and always listen on it. Use [host]:port notation for IPv6 - Vincula a una adreça específica i sempre escolta-hi. Utilitza la notació [host]:port per IPv6 - - - Delete all wallet transactions and only recover those parts of the blockchain through -rescan on startup - Elimina totes les transaccions del moneder i només recupera aquelles de la cadena de blocs a través de -rescan a l'inici - - - Distributed under the MIT software license, see the accompanying file COPYING or <http://www.opensource.org/licenses/mit-license.php>. - Distribuït sota llicència de programari MIT. Vegeu el fitxer acompanyant COPYING o <http://www.opensource.org/licenses/mit-license.php>. - - - Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) - Executa una ordre quan una transacció del moneder canviï (%s en cmd es canvia per TxID) - - - Maximum total fees to use in a single wallet transaction; setting this too low may abort large transactions (default: %s) - Comissions totals màximes que s'utilitzaran en una única transacció de moneder; si s'estableix un valor massa baix es poden interrompre transaccions grans (per defecte: %s) - - - Reduce storage requirements by pruning (deleting) old blocks. This mode disables wallet support and is incompatible with -txindex. Warning: Reverting this setting requires re-downloading the entire blockchain. (default: 0 = disable pruning blocks, >%u = target size in MiB to use for block files) - Redueix els requeriments d'emmagatzemament podant (suprimint) els blocs antics. Aquest mode inhabilita l'ús de moneders i és incompatible amb -tindex. Avís: Revertir aquesta configuració comporta tornar a baixar la cadena de blocs sencera. (per defecte: 0 = inhabilita la poda de blocs, >%u = mida objectiu en MiB per utilitzar els fitxers de blocs) - - - Set the number of script verification threads (%u to %d, 0 = auto, <0 = leave that many cores free, default: %d) - Defineix el nombre de fils de verificació d'scripts (%u a %d, 0 = auto, <0 = deixa tants nuclis lliures, per defecte: %d) - - - This is a pre-release test build - use at your own risk - do not use for mining or merchant applications - Aquesta és una versió de pre-llançament - utilitza-la sota la teva responsabilitat - No usar per a minería o aplicacions de compra-venda - - - Unable to bind to %s on this computer. Bitcoin Core is probably already running. - No es pot enllaçar %s a aquest ordinador. El Bitcoin Core probablement ja estigui executant-s'hi. - - - WARNING: abnormally high number of blocks generated, %d blocks received in the last %d hours (%d expected) - AVÃS: s'ha generat un nombre anòmalament alt de blocs, %d blocs rebuts en les darreres %d hores (se n'esperaven %d) - - - WARNING: check your network connection, %d blocks received in the last %d hours (%d expected) - AVÃS: comproveu la vostra connexió a la xarxa, %d blocs rebuts en les darreres %d hores (se n'esperaven %d) - - - Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. - Avís: el -paytxfee és molt elevat! Aquesta és la comissió de transacció que pagareu si envieu una transacció. - - - Warning: The network does not appear to fully agree! Some miners appear to be experiencing issues. - Avís: la xarxa no sembla que hi estigui plenament d'acord. Alguns miners sembla que estan experimentant problemes. - - - Warning: We do not appear to fully agree with our peers! You may need to upgrade, or other nodes may need to upgrade. - Avís: sembla que no estem plenament d'acord amb els nostres iguals! Podria caler que actualitzar l'aplicació, o potser que ho facin altres nodes. - - - Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. - Avís: error en llegir el fitxer wallet.dat! Totes les claus es llegeixen correctament, però hi ha dades de transaccions o entrades de la llibreta d'adreces absents o bé son incorrectes. - - - 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. - 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. - - - Whitelist peers connecting from the given netmask or IP address. Can be specified multiple times. - 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. - - - (default: 1) - (per defecte: 1) - - - <category> can be: - <category> pot ser: - - - Attempt to recover private keys from a corrupt wallet.dat - Intenta recuperar les claus privades d'un fitxer wallet.dat corrupte - - - Block creation options: - Opcions de la creació de blocs: - - - Connect only to the specified node(s) - Connecta només al(s) node(s) especificats - - - Connection options: - Opcions de connexió: - - - Corrupted block database detected - S'ha detectat una base de dades de blocs corrupta - - - Debugging/Testing options: - Opcions de depuració/proves: - - - Do not load the wallet and disable wallet RPC calls - No carreguis el moneder i inhabilita les crides RPC del moneder - - - Do you want to rebuild the block database now? - Voleu reconstruir la base de dades de blocs ara? - - - Error initializing block database - Error carregant la base de dades de blocs - - - Error initializing wallet database environment %s! - Error inicialitzant l'entorn de la base de dades del moneder %s! - - - Error loading block database - Error carregant la base de dades del bloc - - - Error opening block database - Error en obrir la base de dades de blocs - - - Error: Disk space is low! - Error: Espai al disc baix! - - - Failed to listen on any port. Use -listen=0 if you want this. - Ha fallat escoltar a qualsevol port. Feu servir -listen=0 si voleu fer això. - - - If <category> is not supplied, output all debugging information. - Si no se subministra <category>, mostra tota la informació de depuració. - - - Importing... - S'està important... - - - Incorrect or no genesis block found. Wrong datadir for network? - No s'ha trobat el bloc de gènesi o és incorrecte. El directori de dades de la xarxa és incorrecte? - - - Invalid -onion address: '%s' - Adreça -onion no vàlida: '%s' - - - Not enough file descriptors available. - No hi ha suficient descriptors de fitxers disponibles. - - - Only connect to nodes in network <net> (ipv4, ipv6 or onion) - Només connecta als nodes de la xarxa <net> (ipv4, ipv6 o onion) - - - Prune cannot be configured with a negative value. - La poda no es pot configurar amb un valor negatiu. - - - Prune mode is incompatible with -txindex. - El mode de poda és incompatible amb -txindex. - - - Set database cache size in megabytes (%d to %d, default: %d) - Defineix la mida de la memòria cau de la base de dades en megabytes (%d a %d, per defecte: %d) - - - Set maximum block size in bytes (default: %d) - Defineix la mida màxim del bloc en bytes (per defecte: %d) - - - Specify wallet file (within data directory) - Especifica un fitxer de moneder (dins del directori de dades) - - - Use UPnP to map the listening port (default: %u) - Utilitza UPnP per a mapejar el port d'escolta (per defecte: %u) - - - Verifying blocks... - S'estan verificant els blocs... - - - Verifying wallet... - S'està verificant el moneder... - - - Wallet %s resides outside data directory %s - El moneder %s resideix fora del directori de dades %s - - - Wallet options: - Opcions de moneder: - - - Warning: This version is obsolete; upgrade required! - Avís: aquesta versió és obsoleta; cal actualitzar-la! - - - You need to rebuild the database using -reindex to change -txindex - Cal que reconstruïu la base de dades fent servir -reindex per canviar -txindex - - - Imports blocks from external blk000??.dat file - Importa blocs de un fitxer blk000??.dat extern - - - 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 - Permet les connexions JSON-RPC d'una font específica. Vàlid per a <ip> són una IP individual (p. ex., 1.2.3.4), una xarxa / màscara de xarxa (p. ex., 1.2.3.4/255.255.255.0) o una xarxa/CIDR (p. ex., 1.2.3.4/24). Es pot especificar aquesta opció moltes vegades - - - Bind to given address and whitelist peers connecting to it. Use [host]:port notation for IPv6 - Vincula l'adreça donada i posa a la llista blanca els iguals que s'hi connectin. Feu servir la notació [host]:port per a IPv6 - - - Bind to given address to listen for JSON-RPC connections. Use [host]:port notation for IPv6. This option can be specified multiple times (default: bind to all interfaces) - Vincula a l'adreça donada per a escoltar les connexions JSON-RPC. Feu servir la notació [host]:port per a IPv6. Aquesta opció pot ser especificada moltes vegades (per defecte: vincula a totes les interfícies) - - - Cannot obtain a lock on data directory %s. Bitcoin Core is probably already running. - No es pot obtenir un bloqueig del directori de dades %s. El Bitcoin Core probablement ja s'estigui executant. - - - Create new files with system default permissions, instead of umask 077 (only effective with disabled wallet functionality) - 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) - - - Discover own IP addresses (default: 1 when listening and no -externalip or -proxy) - Descobreix l'adreça IP pròpia (per defecte: 1 quan s'escolta i no -externalip o -proxy) - - - Error: Listening for incoming connections failed (listen returned error %s) - Error: ha fallat escoltar les connexions entrants (l'escoltament ha retornat l'error %s) - - - Error: Unsupported argument -socks found. Setting SOCKS version isn't possible anymore, only SOCKS5 proxies are supported. - Error: s'ha trobat un argument no permès de -socks. Ja no es pot definir més la versió de SOCKS, només s'accepten els proxies de SOCKS5.ç - - - Execute command when a relevant alert is received or we see a really long fork (%s in cmd is replaced by message) - Executa l'ordre quan es rebi un avís rellevant o veiem una forquilla molt llarga (%s en cmd és reemplaçat per un missatge) - - - Fees (in BTC/Kb) smaller than this are considered zero fee for relaying (default: %s) - Comissions (en BTC/Kb) inferiors a això es consideren de comissió zero per a la transmissió (per defecte: %s) - - - If paytxfee is not set, include enough fee so transactions begin confirmation on average within n blocks (default: %u) - 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) - - - Invalid amount for -maxtxfee=<amount>: '%s' (must be at least the minrelay fee of %s to prevent stuck transactions) - 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) - - - Maximum size of data in data carrier transactions we relay and mine (default: %u) - Mida màxima de les dades en les transaccions de l'operador en què confiem i en les meves (per defecte: %u) - - - Prune configured below the minimum of %d MB. Please use a higher number. - Poda configurada per sota el mínim de %d MB. Feu servir un nombre superior. - - - Query for peer addresses via DNS lookup, if low on addresses (default: 1 unless -connect) - Consulta a adreces d'iguals a través de DNS, si es troba baix en adreces (per defecte: 1 a menys que -connect) - - - Randomize credentials for every proxy connection. This enables Tor stream isolation (default: %u) - Genera a l'atzar credencials per a cada connexió proxy. Això habilita l'aïllament del flux de Tor (per defecte: %u) - - - Set maximum size of high-priority/low-fee transactions in bytes (default: %d) - Defineix la mida màxima de transaccions d'alta prioritat / baixa comissió en bytes (per defecte: %d) - - - Set the number of threads for coin generation if enabled (-1 = all cores, default: %d) - Defineix el nombre de fils per a la generació de moneda si està habilitat (-1 = tots els nuclis, per defecte: %d) - - - The transaction amount is too small to send after the fee has been deducted - L'import de la transacció és massa petit per enviar-la després que se'n dedueixi la comissió - - - 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. - 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. - - - 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 - - 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 - - - Warning: -maxtxfee is set very high! Fees this large could be paid on a single transaction. - Avís: s'ha especificat un -maxtxfee molt alt! Comissions tan grans podrien pagar-se en una única transacció. - - - Warning: Please check that your computer's date and time are correct! If your clock is wrong Bitcoin Core will not work properly. - 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. - - - 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 - 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 - - - You need to rebuild the database using -reindex to go back to unpruned mode. This will redownload the entire blockchain - Cal que torneu a construir la base de dades fent servir -reindex per tornar al mode no podat. Això tornarà a baixar la cadena de blocs sencera - - - (default: %u) - (per defecte: %u) - - - Accept public REST requests (default: %u) - Accepta sol·licituds REST públiques (per defecte: %u) - - - Activating best chain... - S'està activant la millor cadena... - - - Can't run with a wallet in prune mode. - No es pot executar amb un moneder en mode poda. - - - Cannot resolve -whitebind address: '%s' - No es pot resoldre l'adreça -whitebind: «%s» - - - Choose data directory on startup (default: 0) - Tria el directori de dades a l'inici (per defecte: 0) - - - Connect through SOCKS5 proxy - Connecta a través del proxy SOCKS5 - - - Copyright (C) 2009-%i The Bitcoin Core Developers - Copyright (C) 2009-%i Els desenvolupadors del Bitcoin Core - - - Could not parse -rpcbind value %s as network address - No s'ha pogut analitzar el valor -rpcbind %s com una adreça de xarxa - - - Error loading wallet.dat: Wallet requires newer version of Bitcoin Core - Error en carregar wallet.dat: el moneder requereix una versió més nova del Bitcoin core - - - Error reading from database, shutting down. - Error en llegir la base de dades, tancant. - - - Error: Unsupported argument -tor found, use -onion. - Error: s'ha trobat un argument -tor no acceptat. Feu servir -onion. - - - Fee (in BTC/kB) to add to transactions you send (default: %s) - Comissió en (BTC/kB) per afegir a les transaccions que envieu (per defecte: %s) - - - Information - &Informació - - - Initialization sanity check failed. Bitcoin Core is shutting down. - Ha fallat la inicialització de la comprovació de validesa. El Bitcoin Core s'està aturant. - - - Invalid amount for -maxtxfee=<amount>: '%s' - Import no vàlid per a -maxtxfee=<amount>: '%s' - - - Invalid amount for -minrelaytxfee=<amount>: '%s' - Import no vàlid per a -minrelaytxfee=<amount>: «%s» - - - Invalid amount for -mintxfee=<amount>: '%s' - Import no vàlid per a -mintxfee=<amount>: «%s» - - - Invalid amount for -paytxfee=<amount>: '%s' (must be at least %s) - Import no vàlid per a -paytxfee=<amount>: «%s» (ha de ser com a mínim %s) - - - Invalid netmask specified in -whitelist: '%s' - S'ha especificat una màscara de xarxa no vàlida a -whitelist: «%s» - - - Keep at most <n> unconnectable transactions in memory (default: %u) - Manté com a màxim <n> transaccions no connectables en memòria (per defecte: %u) - - - Need to specify a port with -whitebind: '%s' - Cal especificar un port amb -whitebind: «%s» - - - Node relay options: - Opcions de transmissió del node: - - - RPC SSL options: (see the Bitcoin Wiki for SSL setup instructions) - Opcions RPC SSL: (veieu el wiki del Bitcoin per a instruccions de configuració de l'SSL) - - - RPC server options: - Opcions del servidor RPC: - - - RPC support for HTTP persistent connections (default: %d) - Suport RPC per a connexions HTTP persistents (per defecte: %d) - - - Rebuild block chain index from current blk000??.dat files on startup - Reconstrueix l'índex de la cadena de blocs dels fitxers blk000??.dat actuals a l'inici. - - - Receive and display P2P network alerts (default: %u) - Rep i mostra avisos de la xarxa P2P (per defecte: %u) - - - Send trace/debug info to console instead of debug.log file - Envia informació de traça/depuració a la consola en comptes del fitxer debug.log - - - Send transactions as zero-fee transactions if possible (default: %u) - Envia les transaccions com a transaccions de comissió zero sempre que sigui possible (per defecte: %u) - - - Set SSL root certificates for payment request (default: -system-) - Defineix certificats arrel SSL per a la sol·licitud de pagament (per defecte: -sistema-) - - - Set language, for example "de_DE" (default: system locale) - Defineix un idioma, per exemple «de_DE» (per defecte: preferències locals de sistema) - - - Show all debugging options (usage: --help -help-debug) - Mostra totes les opcions de depuració (ús: --help --help-debug) - - - Show splash screen on startup (default: 1) - Mostra la finestra de benvinguda a l'inici (per defecte: 1) - - - Shrink debug.log file on client startup (default: 1 when no -debug) - Redueix el fitxer debug.log durant l'inici del client (per defecte: 1 quan no -debug) - - - Signing transaction failed - Ha fallat la signatura de la transacció - - - Start minimized - Inicia minimitzat - - - The transaction amount is too small to pay the fee - L'import de la transacció és massa petit per pagar-ne una comissió - - - This is experimental software. - Això és programari experimental. - - - Transaction amount too small - Import de la transacció massa petit - - - Transaction amounts must be positive - Els imports de les transaccions han de ser positius - - - Transaction too large for fee policy - Transacció massa gran per a la política de comissions - - - Transaction too large - La transacció és massa gran - - - UI Options: - Opcions d'interfície: - - - Unable to bind to %s on this computer (bind returned error %s) - No s'ha pogut vincular a %s en aquest ordinador (la vinculació ha retornat l'error %s) - - - Use UPnP to map the listening port (default: 1 when listening) - Utilitza UPnP per a mapejar els ports d'escolta (per defecte: 1 quan s'escolta) - - - Username for JSON-RPC connections - Nom d'usuari per a connexions JSON-RPC - - - Wallet needed to be rewritten: restart Bitcoin Core to complete - Cal reescriure el moneder: reiniceu el Bitcoin Core per completar-ho. - - - Warning - Avís - - - Warning: Unsupported argument -benchmark ignored, use -debug=bench. - Avís: s'ha ignorat l'argument no acceptat de -benchmark. Feu servir -debug=bench. - - - Warning: Unsupported argument -debugnet ignored, use -debug=net. - Avís: s'ha ignorat l'argument no acceptat de -debugnet. Feu servir -debug=net. - - - Zapping all transactions from wallet... - Se suprimeixen totes les transaccions del moneder... - - - on startup - a l'inici de l'aplicació - - - wallet.dat corrupt, salvage failed - El fitxer wallet.data és corrupte. El rescat de les dades ha fallat - - - Password for JSON-RPC connections - Contrasenya per a connexions JSON-RPC - - - Execute command when the best block changes (%s in cmd is replaced by block hash) - Executa l'ordre quan el millor bloc canviï (%s en cmd es reemplaça per un resum de bloc) - - - Upgrade wallet to latest format - Actualitza el moneder a l'últim format - - - Rescan the block chain for missing wallet transactions - Reescaneja la cadena de blocs en les transaccions de moneder perdudes - - - Use OpenSSL (https) for JSON-RPC connections - Utilitza OpenSSL (https) per a connexions JSON-RPC - - - This help message - Aquest misatge d'ajuda - - - Allow DNS lookups for -addnode, -seednode and -connect - Permet consultes DNS per a -addnode, -seednode i -connect - - - Loading addresses... - S'estan carregant les adreces... - - - Error loading wallet.dat: Wallet corrupted - Error en carregar wallet.dat: Moneder corrupte - - - (1 = keep tx meta data e.g. account owner and payment request information, 2 = drop tx meta data) - (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) - - - How thorough the block verification of -checkblocks is (0-4, default: %u) - Com d'exhaustiva és la verificació de blocs del -checkblocks (0-4, per defecte: %u) - - - Maintain a full transaction index, used by the getrawtransaction rpc call (default: %u) - Manté un índex complet de transaccions, utilitzat per la crida rpc getrawtransaction (per defecte: %u) - - - Number of seconds to keep misbehaving peers from reconnecting (default: %u) - Nombre de segons necessaris perquè els iguals de comportament qüestionable puguin tornar a connectar-se (per defecte: %u) - - - Output debugging information (default: %u, supplying <category> is optional) - Informació de sortida de la depuració (per defecte: %u, proporcionar <category> és opcional) - - - Use separate SOCKS5 proxy to reach peers via Tor hidden services (default: %s) - Utilitza un proxy SOCKS4 apart per a arribar als iguals a través de serveis ocults de Tor (per defecte: %s) - - - (default: %s) - (per defecte: %s) - - - Acceptable ciphers (default: %s) - Xifrats acceptables (per defecte: %s) - - - Always query for peer addresses via DNS lookup (default: %u) - Demana sempre les adreces dels iguals a través de consultes DNS (per defecte: %u) - - - Error loading wallet.dat - Error en carregar wallet.dat - - - Generate coins (default: %u) - Genera monedes (per defecte: %u) - - - How many blocks to check at startup (default: %u, 0 = all) - Quants blocs per comprovar a l'inici (per defecte: %u, 0 = tots) - - - Include IP addresses in debug output (default: %u) - Inclou l'adreça IP a la sortida de depuració (per defecte: %u) - - - Invalid -proxy address: '%s' - Adreça -proxy invalida: '%s' - - - Listen for JSON-RPC connections on <port> (default: %u or testnet: %u) - Escolta les connexions JSON-RPC en <port> (per defecte: %u o testnet: %u) - - - Listen for connections on <port> (default: %u or testnet: %u) - Escolta les connexions en <port> (per defecte: %u o testnet: %u) - - - Maintain at most <n> connections to peers (default: %u) - Manté com a màxim <n> connexions a iguals (per defecte: %u) - - - Make the wallet broadcast transactions - Fes que el moneder faci difusió de les transaccions - - - Maximum per-connection receive buffer, <n>*1000 bytes (default: %u) - Memòria intermèdia màxima de recepció per connexió, <n>*1000 bytes (per defecte: %u) - - - Maximum per-connection send buffer, <n>*1000 bytes (default: %u) - Memòria intermèdia màxima d'enviament per connexió, <n>*1000 bytes (per defecte: %u) - - - Prepend debug output with timestamp (default: %u) - Posa davant de la sortida de depuració una marca horària (per defecte: %u) - - - Relay and mine data carrier transactions (default: %u) - Retransmet i mina les transaccions de l'operador (per defecte: %u) - - - Relay non-P2SH multisig (default: %u) - Retransmet multisig no P2SH (per defecte: %u) - - - Server certificate file (default: %s) - Fitxer de certificat del servidor (per defecte: %s) - - - Server private key (default: %s) - Clau privada del servidor (per defecte: %s) - - - Set key pool size to <n> (default: %u) - Defineix la mida clau disponible a <n> (per defecte: %u) - - - Set minimum block size in bytes (default: %u) - Defineix la mida de bloc mínima en bytes (per defecte: %u) - - - Set the number of threads to service RPC calls (default: %d) - Defineix el nombre de fils a crides de servei RPC (per defecte: %d) - - - Specify configuration file (default: %s) - Especifica el fitxer de configuració (per defecte: %s) - - - Specify connection timeout in milliseconds (minimum: 1, default: %d) - Especifica el temps d'espera de la connexió en milisegons (mínim: 1, per defecte: %d) - - - Specify pid file (default: %s) - Especifica el fitxer pid (per defecte: %s) - - - Spend unconfirmed change when sending transactions (default: %u) - Gasta el canvi no confirmat en enviar les transaccions (per defecte: %u) - - - Threshold for disconnecting misbehaving peers (default: %u) - Llindar per a desconnectar els iguals de comportament qüestionable (per defecte: %u) - - - Unknown network specified in -onlynet: '%s' - Xarxa desconeguda especificada a -onlynet: '%s' - - - Cannot resolve -bind address: '%s' - No es pot resoldre l'adreça -bind: '%s' - - - Cannot resolve -externalip address: '%s' - No es pot resoldre l'adreça -externalip: '%s' - - - Invalid amount for -paytxfee=<amount>: '%s' - Import no vàlid per a -paytxfee=<amount>: «%s» - - - Insufficient funds - Balanç insuficient - - - Loading block index... - S'està carregant l'índex de blocs... - - - Add a node to connect to and attempt to keep the connection open - Afegeix un node per a connectar-s'hi i intenta mantenir-hi la connexió oberta - - - Loading wallet... - S'està carregant el moneder... - - - Cannot downgrade wallet - No es pot reduir la versió del moneder - - - Cannot write default address - No es pot escriure l'adreça per defecte - - - Rescanning... - S'està reescanejant... - - - Done loading - Ha acabat la càrrega - - - Error - Error - - - \ No newline at end of file diff --git a/src/qt/locale/bitcoin_cmn.ts b/src/qt/locale/bitcoin_cmn.ts deleted file mode 100644 index 37c937b86..000000000 --- a/src/qt/locale/bitcoin_cmn.ts +++ /dev/null @@ -1,114 +0,0 @@ - - - AddressBookPage - - Create a new address - åˆ›å»ºæ–°åœ°å€ - - - - AddressTableModel - - - AskPassphraseDialog - - - BitcoinGUI - - - ClientModel - - - CoinControlDialog - - - EditAddressDialog - - - FreespaceChecker - - - HelpMessageDialog - - - Intro - - - OpenURIDialog - - - OptionsDialog - - - OverviewPage - - - PaymentServer - - - PeerTableModel - - - QObject - - - QRImageWidget - - - RPCConsole - - - ReceiveCoinsDialog - - - ReceiveRequestDialog - - - RecentRequestsTableModel - - - SendCoinsDialog - - - SendCoinsEntry - - - ShutdownWindow - - - SignVerifyMessageDialog - - - SplashScreen - - - TrafficGraphWidget - - - TransactionDesc - - - TransactionDescDialog - - - TransactionTableModel - - - TransactionView - - - UnitDisplayStatusBarControl - - - WalletFrame - - - WalletModel - - - WalletView - - - bitcoin-core - - \ No newline at end of file diff --git a/src/qt/locale/bitcoin_cs.ts b/src/qt/locale/bitcoin_cs.ts deleted file mode 100644 index f809b292b..000000000 --- a/src/qt/locale/bitcoin_cs.ts +++ /dev/null @@ -1,3576 +0,0 @@ - - - AddressBookPage - - Right-click to edit address or label - Pravým tlaÄítkem myÅ¡i zaÄneÅ¡ upravovat oznaÄení adresy - - - Create a new address - VytvoÅ™ novou adresu - - - &New - &Nová - - - Copy the currently selected address to the system clipboard - Zkopíruj aktuálnÄ› vybranou adresu do systémové schránky - - - &Copy - &Kopíruj - - - C&lose - &Zavřít - - - &Copy Address - &Kopíruj adresu - - - Delete the currently selected address from the list - Smaž zvolenou adresu ze seznamu - - - Export the data in the current tab to a file - Exportuj data z tohoto panelu do souboru - - - &Export - &Export - - - &Delete - S&maž - - - Choose the address to send coins to - Zvol adresu, na kterou poÅ¡leÅ¡ mince - - - Choose the address to receive coins with - Zvol adres na příjem mincí - - - C&hoose - &Zvol - - - Sending addresses - Odesílací adresy - - - Receiving addresses - PÅ™ijímací adresy - - - These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins. - Tohle jsou tvé Bitcoinové adresy pro posílání plateb. PÅ™ed odesláním mincí si vždy zkontroluj Äástku a cílovou adresu. - - - These are your Bitcoin addresses for receiving payments. It is recommended to use a new receiving address for each transaction. - Tohle jsou tvé Bitcoinové adresy pro příjem plateb. Je doporuÄené používat pokaždé novou adresu pro každou transakci. - - - Copy &Label - Kopíruj &oznaÄení - - - &Edit - &Uprav - - - Export Address List - Exportuj seznam adres - - - Comma separated file (*.csv) - CSV formát (*.csv) - - - Exporting Failed - Exportování selhalo - - - There was an error trying to save the address list to %1. Please try again. - PÅ™i ukládání seznamu adres do %1 se pÅ™ihodila nÄ›jaká chyba. Zkus to prosím znovu. - - - - AddressTableModel - - Label - OznaÄení - - - Address - Adresa - - - (no label) - (bez oznaÄení) - - - - AskPassphraseDialog - - Passphrase Dialog - ZmÄ›na hesla - - - Enter passphrase - Zadej platné heslo - - - New passphrase - Zadej nové heslo - - - Repeat new passphrase - Totéž heslo jeÅ¡tÄ› jednou - - - Encrypt wallet - ZaÅ¡ifruj peněženku - - - This operation needs your wallet passphrase to unlock the wallet. - K provedení této operace musíš zadat heslo k peněžence, aby se mohla odemknout. - - - Unlock wallet - Odemkni peněženku - - - This operation needs your wallet passphrase to decrypt the wallet. - K provedení této operace musíš zadat heslo k peněžence, aby se mohla deÅ¡ifrovat. - - - Decrypt wallet - DeÅ¡ifruj peněženku - - - Change passphrase - Změň heslo - - - Confirm wallet encryption - PotvrÄ zaÅ¡ifrování peněženky - - - Warning: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR BITCOINS</b>! - UpozornÄ›ní: Pokud si zaÅ¡ifrujeÅ¡ peněženku a ztratíš Äi zapomeneÅ¡ heslo, <b>PŘIJDEÅ  O VÅ ECHNY BITCOINY</b>! - - - Are you sure you wish to encrypt your wallet? - Jsi si jistý, že chceÅ¡ peněženku zaÅ¡ifrovat? - - - Bitcoin Core 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. - Bitcoin Core se teÄ ukonÄí, aby dokonÄil zaÅ¡ifrování. Pamatuj vÅ¡ak, že pouhé zaÅ¡ifrování peněženky nemůže zabránit krádeži tvých bitcoinů malwarem, kterým se může poÄítaÄ nakazit. - - - 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. - DÅ®LEŽITÉ: VÅ¡echny pÅ™edchozí zálohy peněženky by mÄ›ly být nahrazeny novÄ› vygenerovanou, zaÅ¡ifrovanou peněženkou. Z bezpeÄnostních důvodů budou pÅ™edchozí zálohy neÅ¡ifrované peněženky nepoužitelné, jakmile zaÄneÅ¡ používat novou zaÅ¡ifrovanou peněženku. - - - Warning: The Caps Lock key is on! - UpozornÄ›ní: Caps Lock je zapnutý! - - - Wallet encrypted - Peněženka je zaÅ¡ifrována - - - 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>. - Zadej nové heslo k peněžence.<br/>Použij <b>alespoň deset náhodných znaků</b> nebo <b>alespoň osm slov</b>. - - - Enter the old passphrase and new passphrase to the wallet. - Zadej staré a nové heslo k peněžence. - - - Wallet encryption failed - ZaÅ¡ifrování peněženky selhalo - - - Wallet encryption failed due to an internal error. Your wallet was not encrypted. - ZaÅ¡ifrování peněženky selhalo kvůli vnitÅ™ní chybÄ›. Tvá peněženka tedy nebyla zaÅ¡ifrována. - - - The supplied passphrases do not match. - Zadaná hesla nejsou shodná. - - - Wallet unlock failed - NepodaÅ™ilo se odemknout peněženku - - - The passphrase entered for the wallet decryption was incorrect. - Nezadal jsi správné heslo pro deÅ¡ifrování peněženky. - - - Wallet decryption failed - NepodaÅ™ilo se deÅ¡ifrovat peněženku - - - Wallet passphrase was successfully changed. - Heslo k peněžence bylo v pořádku zmÄ›nÄ›no. - - - - BitcoinGUI - - Sign &message... - Po&depiÅ¡ zprávu... - - - Synchronizing with network... - Synchronizuji se se sítí... - - - &Overview - &PÅ™ehled - - - Node - Uzel - - - Show general overview of wallet - Zobraz celkový pÅ™ehled peněženky - - - &Transactions - &Transakce - - - Browse transaction history - Procházej historii transakcí - - - E&xit - &Konec - - - Quit application - UkonÄi aplikaci - - - About &Qt - O &Qt - - - Show information about Qt - Zobraz informace o Qt - - - &Options... - &Možnosti... - - - &Encrypt Wallet... - ZaÅ¡i&fruj peněženku... - - - &Backup Wallet... - &Zazálohuj peněženku... - - - &Change Passphrase... - Změň &heslo... - - - &Sending addresses... - Od&esílací adresy... - - - &Receiving addresses... - PÅ™&ijímací adresy... - - - Open &URI... - NaÄíst &URI... - - - Bitcoin Core client - Bitcoin Core klient - - - Importing blocks from disk... - Importuji bloky z disku... - - - Reindexing blocks on disk... - Vytvářím nový index bloků na disku... - - - Send coins to a Bitcoin address - PoÅ¡li mince na Bitcoinovou adresu - - - Backup wallet to another location - Zazálohuj peněženku na jiné místo - - - Change the passphrase used for wallet encryption - Změň heslo k Å¡ifrování peněženky - - - &Debug window - &Ladicí okno - - - Open debugging and diagnostic console - OtevÅ™i ladicí a diagnostickou konzoli - - - &Verify message... - &Ověř zprávu... - - - Bitcoin - Bitcoin - - - Wallet - Peněženka - - - &Send - &PoÅ¡li - - - &Receive - PÅ™i&jmi - - - Show information about Bitcoin Core - Zobraz informace o Bitcoin Core - - - &Show / Hide - &Zobraz/Skryj - - - Show or hide the main Window - Zobraz nebo skryj hlavní okno - - - Encrypt the private keys that belong to your wallet - ZaÅ¡ifruj soukromé klíÄe ve své peněžence - - - Sign messages with your Bitcoin addresses to prove you own them - PodepiÅ¡ zprávy svými Bitcoinovými adresami, Äímž prokážeÅ¡, že jsi jejich vlastníkem - - - Verify messages to ensure they were signed with specified Bitcoin addresses - Ověř zprávy, aby ses ujistil, že byly podepsány danými Bitcoinovými adresami - - - &File - &Soubor - - - &Settings - &Nastavení - - - &Help - Ná&povÄ›da - - - Tabs toolbar - Panel s listy - - - Bitcoin Core - Bitcoin Core - - - Request payments (generates QR codes and bitcoin: URIs) - Požaduj platby (generuje QR kódy a bitcoin: URI) - - - &About Bitcoin Core - O &Bitcoin Core - - - Modify configuration options for Bitcoin Core - Uprav nastavení Bitcoin Core - - - Show the list of used sending addresses and labels - Ukaž seznam použitých odesílacích adres a jejich oznaÄení - - - Show the list of used receiving addresses and labels - Ukaž seznam použitých pÅ™ijímacích adres a jejich oznaÄení - - - Open a bitcoin: URI or payment request - NaÄti bitcoin: URI nebo platební požadavek - - - &Command-line options - Ar&gumenty z příkazové řádky - - - Show the Bitcoin Core help message to get a list with possible Bitcoin command-line options - Seznam argumentů Bitcoinu pro příkazovou řádku získáš v nápovÄ›dÄ› Bitcoinu Core - - - %n active connection(s) to Bitcoin network - %n aktivní spojení do Bitcoinové sítÄ›%n aktivní spojení do Bitcoinové sítÄ›%n aktivních spojení do Bitcoinové sítÄ› - - - No block source available... - Není dostupný žádný zdroj bloků... - - - Processed %n block(s) of transaction history. - Zpracován %n blok transakÄní historie.Zpracovány %n bloky transakÄní historie.Zpracováno %n bloků transakÄní historie. - - - %n hour(s) - %n hodinu%n hodiny%n hodin - - - %n day(s) - %n den%n dny%n dnů - - - %n week(s) - %n týden%n týdny%n týdnů - - - %1 and %2 - %1 a %2 - - - %n year(s) - %n rok%n roky%n roků - - - %1 behind - Stahuji jeÅ¡tÄ› bloky transakcí za poslední %1 - - - Last received block was generated %1 ago. - Poslední stažený blok byl vygenerován %1 zpátky. - - - Transactions after this will not yet be visible. - Následné transakce jeÅ¡tÄ› nebudou vidÄ›t. - - - Error - Chyba - - - Warning - UpozornÄ›ní - - - Information - Informace - - - Up to date - Aktuální - - - Catching up... - Stahuji... - - - Date: %1 - - Datum: %1 - - - - Amount: %1 - - Částka: %1 - - - - Type: %1 - - Typ: %1 - - - - Label: %1 - - OznaÄení: %1 - - - - Address: %1 - - Adresa: %1 - - - - Sent transaction - Odeslané transakce - - - Incoming transaction - Příchozí transakce - - - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - Peněženka je <b>zaÅ¡ifrovaná</b> a momentálnÄ› <b>odemÄená</b> - - - Wallet is <b>encrypted</b> and currently <b>locked</b> - Peněženka je <b>zaÅ¡ifrovaná</b> a momentálnÄ› <b>zamÄená</b> - - - - ClientModel - - Network Alert - UpozornÄ›ní sítÄ› - - - - CoinControlDialog - - Coin Selection - VýbÄ›r mincí - - - Quantity: - PoÄet: - - - Bytes: - Bajtů: - - - Amount: - Částka: - - - Priority: - Priorita: - - - Fee: - Poplatek: - - - Dust: - Prach: - - - After Fee: - ÄŒistá Äástka: - - - Change: - Drobné: - - - (un)select all - (od)oznaÄit vÅ¡echny - - - Tree mode - Zobrazit jako strom - - - List mode - Vypsat jako seznam - - - Amount - Částka - - - Received with label - Příjem na oznaÄení - - - Received with address - Příjem na adrese - - - Date - Datum - - - Confirmations - Potvrzení - - - Confirmed - Potvrzeno - - - Priority - Priorita - - - Copy address - Kopíruj adresu - - - Copy label - Kopíruj její oznaÄení - - - Copy amount - Kopíruj Äástku - - - Copy transaction ID - Kopíruj ID transakce - - - Lock unspent - Zamkni neutracené - - - Unlock unspent - Odemkni k utracení - - - Copy quantity - Kopíruj poÄet - - - Copy fee - Kopíruj poplatek - - - Copy after fee - Kopíruj Äistou Äástku - - - Copy bytes - Kopíruj bajty - - - Copy priority - Kopíruj prioritu - - - Copy dust - Kopíruj prach - - - Copy change - Kopíruj drobné - - - highest - nejvyšší - - - higher - vyšší - - - high - vysoká - - - medium-high - vyšší stÅ™ední - - - medium - stÅ™ední - - - low-medium - nižší stÅ™ední - - - low - nízká - - - lower - nižší - - - lowest - nejnižší - - - (%1 locked) - (%1 zamÄeno) - - - none - žádná - - - This label turns red if the transaction size is greater than 1000 bytes. - Popisek zÄervená, pokud je velikost transakce vÄ›tší než 1000 bajtů. - - - This label turns red if the priority is smaller than "medium". - Popisek zÄervená, pokud je priorita menší než „stÅ™ední“. - - - This label turns red if any recipient receives an amount smaller than %1. - Popisek zÄervená, pokud má nÄ›který příjemce obdržet Äástku menší než %1. - - - Can vary +/- %1 satoshi(s) per input. - Může se liÅ¡it o +/– %1 satoshi na každý vstup. - - - yes - ano - - - no - ne - - - This means a fee of at least %1 per kB is required. - To znamená, že je vyžadován poplatek alespoň %1 za kB. - - - Can vary +/- 1 byte per input. - Může se liÅ¡it o +/– 1 bajt na každý vstup. - - - Transactions with higher priority are more likely to get included into a block. - Transakce s vyšší prioritou mají vÄ›tší Å¡anci na zaÅ™azení do bloku. - - - (no label) - (bez oznaÄení) - - - change from %1 (%2) - drobné z %1 (%2) - - - (change) - (drobné) - - - - EditAddressDialog - - Edit Address - Uprav adresu - - - &Label - &OznaÄení - - - The label associated with this address list entry - OznaÄení spojené s tímto záznamem v seznamu adres - - - The address associated with this address list entry. This can only be modified for sending addresses. - Adresa spojená s tímto záznamem v seznamu adres. Lze upravovat jen pro odesílací adresy. - - - &Address - &Adresa - - - New receiving address - Nová pÅ™ijímací adresa - - - New sending address - Nová odesílací adresa - - - Edit receiving address - Uprav pÅ™ijímací adresu - - - Edit sending address - Uprav odesílací adresu - - - The entered address "%1" is already in the address book. - Zadaná adresa "%1" už v adresáři je. - - - The entered address "%1" is not a valid Bitcoin address. - Zadaná adresa "%1" není platná Bitcoinová adresa. - - - Could not unlock wallet. - Nemohu odemknout peněženku. - - - New key generation failed. - NepodaÅ™ilo se mi vygenerovat nový klíÄ. - - - - FreespaceChecker - - A new data directory will be created. - Vytvoří se nový adresář pro data. - - - name - název - - - Directory already exists. Add %1 if you intend to create a new directory here. - Adresář už existuje. PÅ™idej %1, pokud tady chceÅ¡ vytvoÅ™it nový adresář. - - - Path already exists, and is not a directory. - Taková cesta už existuje, ale není adresářem. - - - Cannot create data directory here. - Tady nemůžu vytvoÅ™it adresář pro data. - - - - HelpMessageDialog - - Bitcoin Core - Bitcoin Core - - - version - verze - - - (%1-bit) - (%1-bit) - - - About Bitcoin Core - O Bitcoin Core - - - Command-line options - Argumenty z příkazové řádky - - - Usage: - Užití: - - - command-line options - možnosti příkazové řádky - - - - Intro - - Welcome - Vítej - - - Welcome to Bitcoin Core. - Vítej v Bitcoin Core. - - - As this is the first time the program is launched, you can choose where Bitcoin Core will store its data. - Tohle je poprvé, co spouÅ¡tíš Bitcoin Core, takže si můžeÅ¡ zvolit, kam bude ukládat svá data. - - - Bitcoin Core will download and store a copy of the Bitcoin block chain. At least %1GB of data will be stored in this directory, and it will grow over time. The wallet will also be stored in this directory. - Bitcoin Core bude stahovat kopii Å™etÄ›zce bloků. Proto bude potÅ™eba do tohoto adresáře uložit nejménÄ› %1 GB dat – toto Äíslo bude navíc v průbÄ›hu Äasu pomalu růst. Tvá peněženka bude rovněž uložena v tomto adresáři. - - - Use the default data directory - Použij výchozí adresář pro data - - - Use a custom data directory: - Použij tento adresář pro data: - - - Bitcoin Core - Bitcoin Core - - - Error: Specified data directory "%1" cannot be created. - Chyba: Nejde vytvoÅ™it požadovaný adresář pro data „%1“. - - - Error - Chyba - - - %n GB of free space available - %n GB volného místa%n GB volného místa%n GB volného místa - - - (of %n GB needed) - (z potÅ™ebného %n GB)(z potÅ™ebných %n GB)(z potÅ™ebných %n GB) - - - - OpenURIDialog - - Open URI - NaÄíst URI - - - Open payment request from URI or file - NaÄíst platební požadavek z URI nebo ze souboru - - - URI: - URI: - - - Select payment request file - Vyber soubor platebního požadavku - - - Select payment request file to open - Vyber soubor platebního požadavku k naÄtení - - - - OptionsDialog - - Options - Možnosti - - - &Main - &Hlavní - - - Size of &database cache - Velikost &databázové cache - - - MB - MB - - - Number of script &verification threads - PoÄet vláken pro &verifikaci skriptů - - - Accept connections from outside - PÅ™ijímat spojení zvenÄí - - - Allow incoming connections - PÅ™ijímat příchozí spojení - - - IP address of the proxy (e.g. IPv4: 127.0.0.1 / IPv6: ::1) - IP adresa proxy (napÅ™. IPv4: 127.0.0.1/IPv6: ::1) - - - Minimize instead of exit the application when the window is closed. When this option is enabled, the application will be closed only after selecting Exit in the menu. - ZavÅ™ením se aplikace minimalizuje. Pokud je tato volba zaÅ¡krtnuta, tak se aplikace ukonÄí pouze zvolením Konec v menu. - - - The user interface language can be set here. This setting will take effect after restarting Bitcoin Core. - Tady lze nastavit jazyk uživatelského rozhraní. Nastavení se projeví až po restartování Bitcoin Core. - - - 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 |. - URL tÅ™etích stran (napÅ™. block exploreru), které se zobrazí v kontextovém menu v záložce Transakce. %s v URL se nahradí hashem transakce. Více URL oddÄ›l svislítkem |. - - - Third party transaction URLs - URL transakcí tÅ™etích stran - - - Active command-line options that override above options: - Aktivní argumenty z příkazové řádky, které pÅ™etloukly tato nastavení: - - - Reset all client options to default. - Vrátí vÅ¡echny volby na výchozí hodnoty. - - - &Reset Options - &Obnovit nastavení - - - &Network - &Síť - - - Automatically start Bitcoin Core after logging in to the system. - Automaticky spustí Bitcoin Core po pÅ™ihlášení do systému. - - - &Start Bitcoin Core on system login - S&pustit Bitcoin Core po pÅ™ihlášení do systému - - - (0 = auto, <0 = leave that many cores free) - (0 = automaticky, <0 = nechat daný poÄet jader volný, výchozí: 0) - - - W&allet - P&eněženka - - - Expert - Odborník - - - Enable coin &control features - Povolit ruÄní správu &mincí - - - 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. - Pokud zakážeÅ¡ utrácení jeÅ¡tÄ› nepotvrzených drobných, nepůjde použít drobné z transakce, dokud nebude mít alespoň jedno potvrzení. Ovlivní to také výpoÄet stavu úÄtu. - - - &Spend unconfirmed change - &Utrácet i jeÅ¡tÄ› nepotvrzené drobné - - - Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled. - Automaticky otevÅ™e potÅ™ebný port na routeru. Tohle funguje jen za pÅ™edpokladu, že tvůj router podporuje UPnP a že je UPnP povolené. - - - Map port using &UPnP - Namapovat port pÅ™es &UPnP - - - Connect to the Bitcoin network through a SOCKS5 proxy. - PÅ™ipojí se do Bitcoinové sítÄ› pÅ™es SOCKS5 proxy. - - - &Connect through SOCKS5 proxy (default proxy): - &PÅ™ipojit pÅ™es SOCKS5 proxy (výchozí proxy): - - - Proxy &IP: - &IP adresa proxy: - - - &Port: - Por&t: - - - Port of the proxy (e.g. 9050) - Port proxy (napÅ™. 9050) - - - &Window - O&kno - - - Show only a tray icon after minimizing the window. - Po minimalizaci okna zobrazí pouze ikonu v panelu. - - - &Minimize to the tray instead of the taskbar - &Minimalizovávat do ikony v panelu - - - M&inimize on close - Za&vÅ™ením minimalizovat - - - &Display - Zobr&azení - - - User Interface &language: - &Jazyk uživatelského rozhraní: - - - &Unit to show amounts in: - J&ednotka pro Äástky: - - - Choose the default subdivision unit to show in the interface and when sending coins. - Zvol výchozí podjednotku, která se bude zobrazovat v programu a pÅ™i posílání mincí. - - - Whether to show coin control features or not. - Zda ukazovat možnosti pro ruÄní správu mincí nebo ne. - - - &OK - &Budiž - - - &Cancel - &ZruÅ¡it - - - default - výchozí - - - none - žádné - - - Confirm options reset - Potvrzení obnovení nastavení - - - Client restart required to activate changes. - K aktivaci zmÄ›n je potÅ™eba restartovat klienta. - - - Client will be shut down. Do you want to proceed? - Klient se vypne, chceÅ¡ pokraÄovat? - - - This change would require a client restart. - Tahle zmÄ›na bude chtít restartovat klienta. - - - The supplied proxy address is invalid. - Zadaná adresa proxy je neplatná. - - - - OverviewPage - - Form - Formulář - - - The displayed information may be out of date. Your wallet automatically synchronizes with the Bitcoin network after a connection is established, but this process has not completed yet. - Zobrazené informace nemusí být aktuální. Tvá peněženka se automaticky sesynchronizuje s Bitcoinovou sítí, jakmile se s ní spojí. Zatím ale jeÅ¡tÄ› není synchronizace dokonÄena. - - - Watch-only: - Sledované: - - - Available: - K dispozici: - - - Your current spendable balance - Aktuální disponibilní stav tvého úÄtu - - - Pending: - OÄekáváno: - - - Total of transactions that have yet to be confirmed, and do not yet count toward the spendable balance - Souhrn transakcí, které jeÅ¡tÄ› nejsou potvrzené a které se jeÅ¡tÄ› nezapoÄítávají do celkového disponibilního stavu úÄtu - - - Immature: - Nedozráno: - - - Mined balance that has not yet matured - Vytěžené mince, které jeÅ¡tÄ› nejsou zralé - - - Balances - Stavy úÄtů - - - Total: - Celkem: - - - Your current total balance - Celkový stav tvého úÄtu - - - Your current balance in watch-only addresses - Aktuální stav úÄtu sledovaných adres - - - Spendable: - Běžné: - - - Recent transactions - Poslední transakce - - - Unconfirmed transactions to watch-only addresses - Nepotvrzené transakce sledovaných adres - - - Mined balance in watch-only addresses that has not yet matured - Vytěžené mince na sledovaných adresách, které jeÅ¡tÄ› nejsou zralé - - - Current total balance in watch-only addresses - Aktuální stav úÄtu sledovaných adres - - - - PaymentServer - - URI handling - Zpracování URI - - - Invalid payment address %1 - Neplatná platební adresa %1 - - - Payment request rejected - Platební požadavek byl odmítnut - - - Payment request network doesn't match client network. - Síť platebního požadavku neodpovídá síti klienta. - - - Payment request is not initialized. - Platební požadavek není zahájený. - - - Requested payment amount of %1 is too small (considered dust). - Požadovaná platební Äástka %1 je příliÅ¡ malá (je považována za prach). - - - Payment request error - Chyba platebního požadavku - - - Cannot start bitcoin: click-to-pay handler - Nemůžu spustit bitcoin: obsluha click-to-pay - - - Payment request fetch URL is invalid: %1 - Zdrojová URL platebního požadavku není platná: %1 - - - URI cannot be parsed! This can be caused by an invalid Bitcoin address or malformed URI parameters. - NepodaÅ™ilo se analyzovat URI! Důvodem může být neplatná Bitcoinová adresa nebo poÅ¡kozené parametry URI. - - - Payment request file handling - Zpracování souboru platebního požadavku - - - Payment request file cannot be read! This can be caused by an invalid payment request file. - Soubor platebního požadavku nejde pÅ™eÄíst nebo zpracovat! PříÄinou může být Å¡patný soubor platebního požadavku. - - - Payment request expired. - Platební požadavek vyprÅ¡el. - - - Unverified payment requests to custom payment scripts are unsupported. - Neověřené platební požadavky k uživatelským platebním skriptům nejsou podporované. - - - Invalid payment request. - Neplatný platební požadavek. - - - Refund from %1 - Vrácení penÄ›z od %1 - - - Payment request %1 is too large (%2 bytes, allowed %3 bytes). - Platební požadavek %1 je moc velký (%2 bajtů, povoleno %3 bajtů). - - - Payment request DoS protection - DoS ochrana platebního požadavku - - - Error communicating with %1: %2 - Chyba pÅ™i komunikaci s %1: %2 - - - Payment request cannot be parsed! - Platební požadavek je neÄitelný! - - - Bad response from server %1 - Chybná odpovÄ›Ä ze serveru %1 - - - Payment acknowledged - Platba potvrzena - - - Network request error - Chyba síťového požadavku - - - - PeerTableModel - - User Agent - Typ klienta - - - Node/Service - Uzel/Služba - - - Ping Time - Odezva - - - - QObject - - Amount - Částka - - - Enter a Bitcoin address (e.g. %1) - Zadej Bitcoinovou adresu (napÅ™. %1) - - - %1 d - %1 d - - - %1 h - %1 h - - - %1 m - %1 m - - - %1 s - %1 s - - - None - Žádné - - - N/A - N/A - - - %1 ms - %1 ms - - - - QRImageWidget - - &Save Image... - &Ulož obrázek... - - - &Copy Image - &Kopíruj obrázek - - - Save QR Code - Ulož QR kód - - - PNG Image (*.png) - PNG obrázek (*.png) - - - - RPCConsole - - Client name - Název klienta - - - N/A - N/A - - - Client version - Verze klienta - - - &Information - &Informace - - - Debug window - Ladicí okno - - - General - Obecné - - - Using OpenSSL version - Používaná verze OpenSSL - - - Using BerkeleyDB version - Používaná verze BerkeleyDB - - - Startup time - ÄŒas spuÅ¡tÄ›ní - - - Network - Síť - - - Name - Název - - - Number of connections - PoÄet spojení - - - Block chain - ŘetÄ›zec bloků - - - Current number of blocks - Aktuální poÄet bloků - - - Open the Bitcoin Core debug log file from the current data directory. This can take a few seconds for large log files. - OtevÅ™i soubor s ladicími záznamy Bitcoin Core z aktuálního datového adresáře. U velkých logů to může pár vteÅ™in zabrat. - - - Received - PÅ™ijato - - - Sent - Odesláno - - - &Peers - &ProtÄ›jÅ¡ky - - - Select a peer to view detailed information. - Vyber protÄ›jÅ¡ek a uvidíš jeho detailní informace. - - - Direction - SmÄ›r - - - Version - Verze - - - User Agent - Typ klienta - - - Services - Služby - - - Starting Height - Prvotní výška - - - Sync Height - Aktuální výška - - - Ban Score - Skóre pro klatbu - - - Connection Time - Doba spojení - - - Last Send - Poslední odeslání - - - Last Receive - Poslední příjem - - - Bytes Sent - Bajtů odesláno - - - Bytes Received - Bajtů pÅ™ijato - - - Ping Time - Odezva - - - Time Offset - ÄŒasový posun - - - Last block time - ÄŒas posledního bloku - - - &Open - &Otevřít - - - &Console - &Konzole - - - &Network Traffic - &Síťový provoz - - - &Clear - &VyÄistit - - - Totals - SouÄty - - - In: - Sem: - - - Out: - Ven: - - - Build date - Datum kompilace - - - Debug log file - Soubor s ladicími záznamy - - - Clear console - VyÄistit konzoli - - - Welcome to the Bitcoin Core RPC console. - Vítej v RPC konzoli Bitcoin Core. - - - Use up and down arrows to navigate history, and <b>Ctrl-L</b> to clear screen. - V historii se pohybujeÅ¡ Å¡ipkami nahoru a dolů a pomocí <b>Ctrl-L</b> Äistíš obrazovku. - - - Type <b>help</b> for an overview of available commands. - Napsáním <b>help</b> si vypíšeÅ¡ pÅ™ehled dostupných příkazů. - - - %1 B - %1 B - - - %1 KB - %1 kB - - - %1 MB - %1 MB - - - %1 GB - %1 GB - - - via %1 - via %1 - - - never - nikdy - - - Inbound - Sem - - - Outbound - Ven - - - Unknown - Neznámá - - - Fetching... - Stahuji... - - - - ReceiveCoinsDialog - - &Amount: - Čás&tka: - - - &Label: - &OznaÄení: - - - &Message: - &Zpráva: - - - Reuse one of the previously used receiving addresses. Reusing addresses has security and privacy issues. Do not use this unless re-generating a payment request made before. - Recyklovat již dříve použité adresy. Recyklace adres má bezpeÄnostní rizika a naruÅ¡uje soukromí. NezaÅ¡krtávejte to, pokud znovu nevytváříte již dříve vytvoÅ™ený platební požadavek. - - - R&euse an existing receiving address (not recommended) - &Recyklovat již existující adresy (nedoporuÄeno) - - - An optional message to attach to the payment request, which will be displayed when the request is opened. Note: The message will not be sent with the payment over the Bitcoin network. - Volitelná zpráva, která se pÅ™ipojí k platebnímu požadavku a která se zobrazí, když se požadavek otevÅ™e. Poznámka: Tahle zpráva se neposílá s platbou po Bitcoinové síti. - - - An optional label to associate with the new receiving address. - Volitelné oznaÄení, které se má pÅ™iÅ™adit k nové adrese. - - - Use this form to request payments. All fields are <b>optional</b>. - Tímto formulář můžeÅ¡ požadovat platby. VÅ¡echna pole jsou <b>volitelná</b>. - - - An optional amount to request. Leave this empty or zero to not request a specific amount. - Volitelná Äástka, kterou požadujeÅ¡. Nech prázdné nebo nulové, pokud nepožadujeÅ¡ konkrétní Äástku. - - - Clear all fields of the form. - Promaž obsah ze vÅ¡ech formulářových políÄek. - - - Clear - VyÄistit - - - Requested payments history - Historie vyžádaných plateb - - - &Request payment - &Vyžádat platbu - - - Show the selected request (does the same as double clicking an entry) - Zobraz zvolený požadavek (stejnÄ› tak můžeÅ¡ přímo na nÄ›j dvakrát poklepat) - - - Show - Zobrazit - - - Remove the selected entries from the list - Smaž zvolené požadavky ze seznamu - - - Remove - Smazat - - - Copy label - Kopíruj její oznaÄení - - - Copy message - Kopíruj zprávu - - - Copy amount - Kopíruj Äástku - - - - ReceiveRequestDialog - - QR Code - QR kód - - - Copy &URI - &Kopíruj URI - - - Copy &Address - Kopíruj &adresu - - - &Save Image... - &Ulož obrázek... - - - Request payment to %1 - Platební požadavek: %1 - - - Payment information - Informace o platbÄ› - - - URI - URI - - - Address - Adresa - - - Amount - Částka - - - Label - OznaÄení - - - Message - Zpráva - - - Resulting URI too long, try to reduce the text for label / message. - Výsledná URI je příliÅ¡ dlouhá, zkus zkrátit text oznaÄení/zprávy. - - - Error encoding URI into QR Code. - Chyba pÅ™i kódování URI do QR kódu. - - - - RecentRequestsTableModel - - Date - Datum - - - Label - OznaÄení - - - Message - Zpráva - - - Amount - Částka - - - (no label) - (bez oznaÄení) - - - (no message) - (bez zprávy) - - - (no amount) - (bez Äástky) - - - - SendCoinsDialog - - Send Coins - PoÅ¡li mince - - - Coin Control Features - Možnosti ruÄní správy mincí - - - Inputs... - Vstupy... - - - automatically selected - automaticky vybrané - - - Insufficient funds! - Nedostatek prostÅ™edků! - - - Quantity: - PoÄet: - - - Bytes: - Bajtů: - - - Amount: - Částka: - - - Priority: - Priorita: - - - Fee: - Poplatek: - - - After Fee: - ÄŒistá Äástka: - - - Change: - Drobné: - - - If this is activated, but the change address is empty or invalid, change will be sent to a newly generated address. - Pokud aktivováno, ale adresa pro drobné je prázdná nebo neplatná, tak se drobné poÅ¡lou na novÄ› vygenerovanou adresu. - - - Custom change address - Vlastní adresa pro drobné - - - Transaction Fee: - TransakÄní poplatek: - - - Choose... - Zvol... - - - collapse fee-settings - sbal nastavení poplatků - - - per kilobyte - za kilobajt - - - 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. - 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. - - - Hide - Skryj - - - total at least - pÅ™inejmenším - - - 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. - 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. - - - (read the tooltip) - (viz bublina) - - - Recommended: - DoporuÄený: - - - Custom: - Vlastní: - - - (Smart fee not initialized yet. This usually takes a few blocks...) - (Inteligentní poplatek jeÅ¡tÄ› není inicializovaný. Obvykle mu to tak pár bloků trvá...) - - - Confirmation time: - Rychlost potvrzení: - - - normal - normální - - - fast - rychlá - - - Send as zero-fee transaction if possible - PoÅ¡li transakci pokud možno bez poplatku - - - (confirmation may take longer) - (potvrzení může trvat déle) - - - Send to multiple recipients at once - PoÅ¡li více příjemcům naráz - - - Add &Recipient - PÅ™i&dej příjemce - - - Clear all fields of the form. - Promaž obsah ze vÅ¡ech formulářových políÄek. - - - Dust: - Prach: - - - Clear &All - VÅ¡echno s&maž - - - Balance: - Stav úÄtu: - - - Confirm the send action - PotvrÄ odeslání - - - S&end - P&oÅ¡li - - - Confirm send coins - PotvrÄ odeslání mincí - - - %1 to %2 - %1 pro %2 - - - Copy quantity - Kopíruj poÄet - - - Copy amount - Kopíruj Äástku - - - Copy fee - Kopíruj poplatek - - - Copy after fee - Kopíruj Äistou Äástku - - - Copy bytes - Kopíruj bajty - - - Copy priority - Kopíruj prioritu - - - Copy change - Kopíruj drobné - - - or - nebo - - - The amount to pay must be larger than 0. - Odesílaná Äástka musí být vÄ›tší než 0. - - - The amount exceeds your balance. - Částka pÅ™ekraÄuje stav úÄtu. - - - The total exceeds your balance when the %1 transaction fee is included. - Celková Äástka pÅ™i pÅ™ipoÄítání poplatku %1 pÅ™ekroÄí stav úÄtu. - - - Transaction creation failed! - VytvoÅ™ení transakce selhalo! - - - 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. - 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. - - - A fee higher than %1 is considered an absurdly high fee. - Poplatek vyšší než %1 je považován za absurdnÄ› vysoký. - - - Payment request expired. - Platební požadavek vyprÅ¡el. - - - Estimated to begin confirmation within %n block(s). - Potvrzování by podle odhadu mÄ›lo zaÄít bÄ›hem %n bloku.Potvrzování by podle odhadu mÄ›lo zaÄít bÄ›hem %n bloků.Potvrzování by podle odhadu mÄ›lo zaÄít bÄ›hem %n bloků. - - - Pay only the minimum fee of %1 - Zaplatit pouze minimální poplatek %1 - - - The recipient address is not valid. Please recheck. - Adresa příjemce je neplatná – pÅ™ekontroluj ji prosím. - - - Duplicate address found: addresses should only be used once each. - Zaznamenána duplicitní adresa: každá adresa by ale mÄ›la být použita vždy jen jednou. - - - Warning: Invalid Bitcoin address - UpozornÄ›ní: Neplatná Bitcoinová adresa - - - (no label) - (bez oznaÄení) - - - Warning: Unknown change address - UpozornÄ›ní: Neznámá adresa pro drobné - - - Copy dust - Kopíruj prach - - - Are you sure you want to send? - Jsi si jistý, že to chceÅ¡ poslat? - - - added as transaction fee - pÅ™idán jako transakÄní poplatek - - - - SendCoinsEntry - - A&mount: - Čás&tka: - - - Pay &To: - &Komu: - - - Enter a label for this address to add it to your address book - Zadej oznaÄení této adresy; obojí se ti pak uloží do adresáře - - - &Label: - O&znaÄení: - - - Choose previously used address - Vyber již použitou adresu - - - This is a normal payment. - Tohle je normální platba. - - - The Bitcoin address to send the payment to - Bitcoinová adresa příjemce - - - Alt+A - Alt+A - - - Paste address from clipboard - Vlož adresu ze schránky - - - Alt+P - Alt+P - - - Remove this entry - Smaž tento záznam - - - The fee will be deducted from the amount being sent. The recipient will receive less bitcoins than you enter in the amount field. If multiple recipients are selected, the fee is split equally. - Poplatek se odeÄte od posílané Äástky. Příjemce tak dostane ménÄ› bitcoinů, než zadáš do pole Částka. Pokud vybereÅ¡ více příjemců, tak se poplatek rovnomÄ›rnÄ› rozloží. - - - S&ubtract fee from amount - &OdeÄíst poplatek od Äástky - - - Message: - Zpráva: - - - This is an unauthenticated payment request. - Tohle je neověřený platební požadavek. - - - This is an authenticated payment request. - Tohle je ověřený platební požadavek. - - - Enter a label for this address to add it to the list of used addresses - Zadej oznaÄení této adresy; obojí se ti pak uloží do adresáře - - - A message that was attached to the bitcoin: URI which will be stored with the transaction for your reference. Note: This message will not be sent over the Bitcoin network. - Zpráva, která byla pÅ™ipojena k bitcoin: URI a která se ti pro pÅ™ehled uloží k transakci. Poznámka: Tahle zpráva se neposílá s platbou po Bitcoinové síti. - - - Pay To: - Komu: - - - Memo: - Poznámka: - - - - ShutdownWindow - - Bitcoin Core is shutting down... - Bitcoin Core se ukonÄuje... - - - Do not shut down the computer until this window disappears. - Nevypínej poÄítaÄ, dokud toto okno nezmizí. - - - - SignVerifyMessageDialog - - Signatures - Sign / Verify a Message - Podpisy - podepsat/ověřit zprávu - - - &Sign Message - &PodepiÅ¡ zprávu - - - You can sign messages/agreements with your addresses to prove you can receive bitcoins sent to them. Be careful not to sign anything vague or random, as phishing attacks may try to trick you into signing your identity over to them. Only sign fully-detailed statements you agree to. - Podepsáním zprávy/smlouvy svými adresami můžeÅ¡ prokázat, že jsi na nÄ› schopen pÅ™ijmout bitcoiny. BuÄ opatrný a nepodepisuj nic vágního nebo náhodného; například pÅ™i phishingových útocích můžeÅ¡ být lákán, abys nÄ›co takového podepsal. Podepisuj pouze naprosto úplná a detailní prohlášení, se kterými souhlasíš. - - - The Bitcoin address to sign the message with - Bitcoinová adresa, kterou se zpráva podepíše - - - Choose previously used address - Vyber již použitou adresu - - - Alt+A - Alt+A - - - Paste address from clipboard - Vlož adresu ze schránky - - - Alt+P - Alt+P - - - Enter the message you want to sign here - Sem vepiÅ¡ zprávu, kterou chceÅ¡ podepsat - - - Signature - Podpis - - - Copy the current signature to the system clipboard - Zkopíruj aktuálnÄ› vybraný podpis do systémové schránky - - - Sign the message to prove you own this Bitcoin address - PodepiÅ¡ zprávu, Äímž prokážeÅ¡, že jsi vlastníkem této Bitcoinové adresy - - - Sign &Message - Po&depiÅ¡ zprávu - - - Reset all sign message fields - Vymaž vÅ¡echna pole formuláře pro podepsání zrávy - - - Clear &All - VÅ¡echno &smaž - - - &Verify Message - &Ověř zprávu - - - Enter the receiver's address, message (ensure you copy line breaks, spaces, tabs, etc. exactly) and signature below to verify the message. Be careful not to read more into the signature than what is in the signed message itself, to avoid being tricked by a man-in-the-middle attack. Note that this only proves the signing party receives with the address, it cannot prove sendership of any transaction! - K ověření podpisu zprávy zadej adresu příjemce, zprávu (ověř si, že správnÄ› kopírujeÅ¡ zalomení řádků, mezery, tabulátory apod.) a podpis. Dávej pozor na to, abys nezkopíroval do podpisu víc, než co je v samotné podepsané zprávÄ›, abys nebyl napálen man-in-the-middle útokem. Poznamenejme vÅ¡ak, že takto lze pouze prokázat, že podepisující je schopný na dané adrese pÅ™ijmout platbu, ale není možnéprokázat, že odeslal jakoukoli transakci! - - - The Bitcoin address the message was signed with - Bitcoinová adresa, kterou je zpráva podepsána - - - Verify the message to ensure it was signed with the specified Bitcoin address - Ověř zprávu, aby ses ujistil, že byla podepsána danou Bitcoinovou adresou - - - Verify &Message - O&věř zprávu - - - Reset all verify message fields - Vymaž vÅ¡echna pole formuláře pro ověření zrávy - - - Click "Sign Message" to generate signature - Kliknutím na "PodepiÅ¡ zprávu" vygenerujeÅ¡ podpis - - - The entered address is invalid. - Zadaná adresa je neplatná. - - - Please check the address and try again. - Zkontroluj ji prosím a zkus to pak znovu. - - - The entered address does not refer to a key. - Zadaná adresa nepasuje ke klíÄi. - - - Wallet unlock was cancelled. - OdemÄení peněženky bylo zruÅ¡eno. - - - Private key for the entered address is not available. - Soukromý klÃ­Ä pro zadanou adresu není dostupný. - - - Message signing failed. - NepodaÅ™ilo se podepsat zprávu. - - - Message signed. - Zpráv podepsána. - - - The signature could not be decoded. - Podpis nejde dekódovat. - - - Please check the signature and try again. - Zkontroluj ho prosím a zkus to pak znovu. - - - The signature did not match the message digest. - Podpis se neshoduje s haÅ¡em zprávy. - - - Message verification failed. - NepodaÅ™ilo se ověřit zprávu. - - - Message verified. - Zpráva ověřena. - - - - SplashScreen - - Bitcoin Core - Bitcoin Core - - - The Bitcoin Core developers - Vývojáři Bitcoin Core - - - [testnet] - [testnet] - - - - TrafficGraphWidget - - KB/s - kB/s - - - - TransactionDesc - - Open until %1 - OtÅ™evÅ™eno dokud %1 - - - conflicted - kolidující - - - %1/offline - %1/offline - - - %1/unconfirmed - %1/nepotvrzeno - - - %1 confirmations - %1 potvrzení - - - Status - Stav - - - , broadcast through %n node(s) - , rozesláno pÅ™es %n uzel, rozesláno pÅ™es %n uzly, rozesláno pÅ™es %n uzlů - - - Date - Datum - - - Source - Zdroj - - - Generated - Vygenerováno - - - From - Od - - - To - Pro - - - own address - vlastní adresa - - - watch-only - sledovaná - - - label - oznaÄení - - - Credit - Příjem - - - matures in %n more block(s) - dozraje po %n blokudozraje po %n blocíchdozraje po %n blocích - - - not accepted - neakceptováno - - - Debit - Výdaj - - - Total debit - Celkové výdaje - - - Total credit - Celkové příjmy - - - Transaction fee - TransakÄní poplatek - - - Net amount - ÄŒistá Äástka - - - Message - Zpráva - - - Comment - Komentář - - - Transaction ID - ID transakce - - - Merchant - Obchodník - - - Generated coins must mature %1 blocks before they can be spent. When you generated this block, it was broadcast to the network to be added to the block chain. If it fails to get into the chain, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - Vygenerované mince musí Äekat %1 bloků, než mohou být utraceny. Když jsi vygeneroval tenhle blok, tak byl rozposlán do sítÄ›, aby byl pÅ™idán do Å™etÄ›zce bloků. Pokud se mu nepodaří dostat se do Å™etÄ›zce, zmÄ›ní se na "neakceptovaný" a nepůjde utratit. To se obÄas může stát, pokud jiný uzel vygeneruje blok zhruba ve stejném okamžiku jako ty. - - - Debug information - Ladicí informace - - - Transaction - Transakce - - - Inputs - Vstupy - - - Amount - Částka - - - true - true - - - false - false - - - , has not been successfully broadcast yet - , jeÅ¡tÄ› nebylo rozesláno - - - Open for %n more block(s) - OtevÅ™eno pro %n další blokOtevÅ™eno pro %n další blokyOtevÅ™eno pro %n dalších bloků - - - unknown - neznámo - - - - TransactionDescDialog - - Transaction details - Detaily transakce - - - This pane shows a detailed description of the transaction - Toto okno zobrazuje detailní popis transakce - - - - TransactionTableModel - - Date - Datum - - - Type - Typ - - - Immature (%1 confirmations, will be available after %2) - Nedozráno (%1 potvrzení, bude k dispozici za %2) - - - Open for %n more block(s) - OtevÅ™eno pro %n další blokOtevÅ™eno pro %n další blokyOtevÅ™eno pro %n dalších bloků - - - Open until %1 - OtÅ™evÅ™eno dokud %1 - - - Confirmed (%1 confirmations) - Potvrzeno (%1 potvrzení) - - - This block was not received by any other nodes and will probably not be accepted! - Tento blok nedostal žádný jiný uzel a pravdÄ›podobnÄ› nebude akceptován! - - - Generated but not accepted - Vygenerováno, ale neakceptováno - - - Offline - Offline - - - Label - OznaÄení - - - Unconfirmed - Nepotvrzeno - - - Confirming (%1 of %2 recommended confirmations) - Potvrzuje se (%1 z %2 doporuÄených potvrzení) - - - Conflicted - V kolizi - - - Received with - PÅ™ijato do - - - Received from - PÅ™ijato od - - - Sent to - Posláno na - - - Payment to yourself - Platba sama sobÄ› - - - Mined - Vytěženo - - - watch-only - sledovací - - - (n/a) - (n/a) - - - Transaction status. Hover over this field to show number of confirmations. - Stav transakce. Najetím myÅ¡i na toto políÄko si zobrazíš poÄet potvrzení. - - - Date and time that the transaction was received. - Datum a Äas pÅ™ijetí transakce. - - - Type of transaction. - Druh transakce. - - - Whether or not a watch-only address is involved in this transaction. - Zda tato transakce zahrnuje i nÄ›kterou sledovanou adresu. - - - User-defined intent/purpose of the transaction. - Uživatelsky urÄený úÄel transakce. - - - Amount removed from or added to balance. - Částka odeÄtená z nebo pÅ™iÄtená k úÄtu. - - - - TransactionView - - All - VÅ¡e - - - Today - Dnes - - - This week - Tento týden - - - This month - Tento mÄ›síc - - - Last month - Minulý mÄ›síc - - - This year - Letos - - - Range... - Rozsah... - - - Received with - PÅ™ijato - - - Sent to - Posláno - - - To yourself - Sám sobÄ› - - - Mined - Vytěženo - - - Other - Ostatní - - - Enter address or label to search - Zadej adresu nebo oznaÄení pro její vyhledání - - - Min amount - Minimální Äástka - - - Copy address - Kopíruj adresu - - - Copy label - Kopíruj její oznaÄení - - - Copy amount - Kopíruj Äástku - - - Copy transaction ID - Kopíruj ID transakce - - - Edit label - Uprav oznaÄení - - - Show transaction details - Zobraz detaily transakce - - - Export Transaction History - Exportuj transakÄní historii - - - Watch-only - Sledovaná - - - Exporting Failed - Exportování selhalo - - - There was an error trying to save the transaction history to %1. - PÅ™i ukládání transakÄní historie do %1 se pÅ™ihodila nÄ›jaká chyba. - - - Exporting Successful - ÚspěšnÄ› vyexportováno - - - The transaction history was successfully saved to %1. - TransakÄní historie byla v pořádku uložena do %1. - - - Comma separated file (*.csv) - CSV formát (*.csv) - - - Confirmed - Potvrzeno - - - Date - Datum - - - Type - Typ - - - Label - OznaÄení - - - Address - Adresa - - - ID - ID - - - Range: - Rozsah: - - - to - až - - - - UnitDisplayStatusBarControl - - Unit to show amounts in. Click to select another unit. - Jednotka pro Äástky. Klikni pro výbÄ›r nÄ›jaké jiné. - - - - WalletFrame - - No wallet has been loaded. - Žádná peněženka se nenaÄetla. - - - - WalletModel - - Send Coins - PoÅ¡li mince - - - - WalletView - - &Export - &Export - - - Export the data in the current tab to a file - Exportuj data z tohoto panelu do souboru - - - Backup Wallet - Záloha peněženky - - - Wallet Data (*.dat) - Data peněženky (*.dat) - - - Backup Failed - Zálohování selhalo - - - There was an error trying to save the wallet data to %1. - PÅ™i ukládání peněženky do %1 se pÅ™ihodila nÄ›jaká chyba. - - - The wallet data was successfully saved to %1. - Data z peněženky byla v pořádku uložena do %1. - - - Backup Successful - ÚspěšnÄ› zazálohováno - - - - bitcoin-core - - Options: - Možnosti: - - - Specify data directory - Adresář pro data - - - Connect to a node to retrieve peer addresses, and disconnect - PÅ™ipojit se k uzlu, získat adresy jeho protÄ›jÅ¡ků a odpojit se - - - Specify your own public address - Udej svou veÅ™ejnou adresu - - - Accept command line and JSON-RPC commands - Akceptovat příkazy z příkazové řádky a pÅ™es JSON-RPC - - - Run in the background as a daemon and accept commands - Běžet na pozadí jako démon a akceptovat příkazy - - - Use the test network - Použít testovací síť (testnet) - - - Accept connections from outside (default: 1 if no -proxy or -connect) - PÅ™ijímat spojení zvenÄí (výchozí: 1, pokud není zadáno -proxy nebo -connect) - - - Bind to given address and always listen on it. Use [host]:port notation for IPv6 - Poslouchat na zadané adrese. Pro zápis IPv6 adresy použij notaci [adresa]:port - - - Delete all wallet transactions and only recover those parts of the blockchain through -rescan on startup - Smazat vÅ¡echny transakce peněženky a pÅ™i startu obnovit pouze relevantní Äásti Å™etÄ›zce bloků pomocí -rescan - - - Distributed under the MIT software license, see the accompanying file COPYING or <http://www.opensource.org/licenses/mit-license.php>. - Šířen pod softwarovou licencí MIT, viz pÅ™iložený soubor COPYING nebo <http://www.opensource.org/licenses/mit-license.php>. - - - Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) - Spustit příkaz, když se objeví transakce týkající se peněženky (%s se v příkazu nahradí za TxID) - - - Maximum total fees to use in a single wallet transaction; setting this too low may abort large transactions (default: %s) - 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) - - - Reduce storage requirements by pruning (deleting) old blocks. This mode disables wallet support and is incompatible with -txindex. Warning: Reverting this setting requires re-downloading the entire blockchain. (default: 0 = disable pruning blocks, >%u = target size in MiB to use for block files) - Omezit nároky na úložný prostor proÅ™ezáváním (mazáním) starých bloků. V tomto režimu chybí peněženka a rovněž tento režim není sluÄitelný s -txindex. UpozornÄ›ní: opÄ›tovná zmÄ›na tohoto nastavení bude vyžadovat nové stažení celého Å™etÄ›zce bloků. (výchozí: 0 = bloky neproÅ™ezávat, >%u = cílová velikost souborů s bloky, v MiB) - - - Set the number of script verification threads (%u to %d, 0 = auto, <0 = leave that many cores free, default: %d) - Nastavení poÄtu vláken pro verifikaci skriptů (%u až %d, 0 = automaticky, <0 = nechat daný poÄet jader volný, výchozí: %d) - - - This is a pre-release test build - use at your own risk - do not use for mining or merchant applications - Tohle je testovací verze – používej ji jen na vlastní riziko, ale rozhodnÄ› ji nepoužívej k těžbÄ› nebo pro obchodní aplikace - - - Unable to bind to %s on this computer. Bitcoin Core is probably already running. - Nedaří se mi pÅ™ipojit na %s na tomhle poÄítaÄi. Bitcoin Core už pravdÄ›podobnÄ› jednou běží. - - - WARNING: abnormally high number of blocks generated, %d blocks received in the last %d hours (%d expected) - UPOZORNÄšNÃ: vygenerováno nezvykle mnoho bloků – pÅ™ijato %d bloků jen za posledních %d hodin (oÄekáváno %d) - - - WARNING: check your network connection, %d blocks received in the last %d hours (%d expected) - UPOZORNÄšNÃ: zkontroluj své spojení do sítÄ› – bylo pÅ™ijato %d bloků za posledních %d hodin (oÄekáváno %d) - - - Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. - UpozornÄ›ní: -paytxfee je nastaveno velmi vysoko! Toto je transakÄní poplatek, který zaplatíš za každou poslanou transakci. - - - Warning: The network does not appear to fully agree! Some miners appear to be experiencing issues. - UpozornÄ›ní: Síť podle vÅ¡eho není v konzistentním stavu. NÄ›kteří těžaÅ™i jsou zÅ™ejmÄ› v potížích. - - - Warning: We do not appear to fully agree with our peers! You may need to upgrade, or other nodes may need to upgrade. - UpozornÄ›ní: Nesouhlasím zcela se svými protÄ›jÅ¡ky! Možná potÅ™ebuji aktualizovat nebo ostatní uzly potÅ™ebují aktualizovat. - - - Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. - UpozornÄ›ní: nastala chyba pÅ™i Ätení souboru wallet.dat! VÅ¡echny klíÄe se pÅ™eÄetly správnÄ›, ale data o transakcích nebo záznamy v adresáři mohou chybÄ›t Äi být nesprávné. - - - 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. - 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. - - - Whitelist peers connecting from the given netmask or IP address. Can be specified multiple times. - 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. - - - (default: 1) - (výchozí: 1) - - - <category> can be: - <category> může být: - - - Attempt to recover private keys from a corrupt wallet.dat - Pokusit se zachránit soukromé klíÄe z poÅ¡kozeného souboru wallet.dat - - - Block creation options: - Možnosti vytváření bloku: - - - Connect only to the specified node(s) - PÅ™ipojit se pouze k zadanému uzlu (příp. zadaným uzlům) - - - Connection options: - Možnosti pÅ™ipojení: - - - Corrupted block database detected - Bylo zjiÅ¡tÄ›no poÅ¡kození databáze bloků - - - Debugging/Testing options: - Možnosti ladÄ›ní/testování: - - - Do not load the wallet and disable wallet RPC calls - NenaÄítat peněženku a vypnout její RPC volání - - - Do you want to rebuild the block database now? - ChceÅ¡ pÅ™estavÄ›t databázi bloků hned teÄ? - - - Error initializing block database - Chyba pÅ™i zakládání databáze bloků - - - Error initializing wallet database environment %s! - Chyba pÅ™i vytváření databázového prostÅ™edí %s pro peněženku! - - - Error loading block database - Chyba pÅ™i naÄítání databáze bloků - - - Error opening block database - Chyba pÅ™i otevírání databáze bloků - - - Error: Disk space is low! - Problém: Na disku je málo místa! - - - Failed to listen on any port. Use -listen=0 if you want this. - NepodaÅ™ilo se naslouchat na žádném portu. Použij -listen=0, pokud to byl tvůj zámÄ›r. - - - If <category> is not supplied, output all debugging information. - Pokud není <category> zadána, bude tisknout veÅ¡keré ladicí informace. - - - Importing... - Importuji... - - - Incorrect or no genesis block found. Wrong datadir for network? - Nemám žádný nebo jen Å¡patný genesis blok. Není Å¡patnÄ› nastavený datadir? - - - Invalid -onion address: '%s' - Neplatná -onion adresa: '%s' - - - Not enough file descriptors available. - Je nedostatek deskriptorů souborů. - - - Only connect to nodes in network <net> (ipv4, ipv6 or onion) - PÅ™ipojovat se pouze k uzlům v <net> síti (ipv4, ipv6 nebo onion) - - - Prune cannot be configured with a negative value. - ProÅ™ezávání nemůže být zkonfigurováno s negativní hodnotou. - - - Prune mode is incompatible with -txindex. - ProÅ™ezávací režim není kompatibilní s -txindex. - - - Set database cache size in megabytes (%d to %d, default: %d) - Nastavit velikost databázové vyrovnávací pamÄ›ti v megabajtech (%d až %d, výchozí: %d) - - - Set maximum block size in bytes (default: %d) - Nastavit maximální velikost bloku v bajtech (výchozí: %d) - - - Specify wallet file (within data directory) - Udej název souboru s peněženkou (v rámci datového adresáře) - - - Use UPnP to map the listening port (default: %u) - Použít UPnP k namapování naslouchacího portu (výchozí: %u) - - - Verifying blocks... - Ověřuji bloky... - - - Verifying wallet... - Kontroluji peněženku... - - - Wallet %s resides outside data directory %s - Peněženka %s se nachází mimo datový adresář %s - - - Wallet options: - Možnosti peněženky: - - - Warning: This version is obsolete; upgrade required! - UpozornÄ›ní: tahle verze je zastaralá, mÄ›l bys ji aktualizovat! - - - You need to rebuild the database using -reindex to change -txindex - Je tÅ™eba pÅ™estavÄ›t databázi použitím -reindex, aby bylo možné zmÄ›nit -txindex - - - Imports blocks from external blk000??.dat file - Importovat bloky z externího souboru blk000??.dat - - - 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 - Povolit JSON-RPC spojení ze specifikovaného zdroje. Platnou hodnotou <ip> je jednotlivá IP adresa (napÅ™. 1.2.3.4), síť/maska (napÅ™. 1.2.3.4/255.255.255.0) nebo síť/CIDR (napÅ™. 1.2.3.4/24). Tuto volbu lze použít i vícekrát - - - An error occurred while setting up the RPC address %s port %u for listening: %s - PÅ™i nastavování naslouchací RPC adresy %s a portu %u nastala chyba: %s - - - Bind to given address and whitelist peers connecting to it. Use [host]:port notation for IPv6 - Obsadit zadanou adresu a protÄ›jÅ¡ky, které se na ní pÅ™ipojí, umístit na bílou listinu. Pro zápis IPv6 adresy použij notaci [adresa]:port - - - Bind to given address to listen for JSON-RPC connections. Use [host]:port notation for IPv6. This option can be specified multiple times (default: bind to all interfaces) - ÄŒekat na zadané adrese na JSON-RPC spojení. Pro zápis IPv6 adresy použij notaci [adresa]:port. Tuto volbu lze použít i vícekrát (výchozí: poslouchat na vÅ¡ech rozhraních) - - - Cannot obtain a lock on data directory %s. Bitcoin Core is probably already running. - Nedaří se mi získat zámek na datový adresář %s. Bitcoin Core pravdÄ›podobnÄ› už jednou běží. - - - Create new files with system default permissions, instead of umask 077 (only effective with disabled wallet functionality) - 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) - - - Discover own IP addresses (default: 1 when listening and no -externalip or -proxy) - Zjistit vlastní IP adresu (výchozí: 1, pokud naslouchá a není zadáno -externalip nebo -proxy) - - - Error: Listening for incoming connections failed (listen returned error %s) - Chyba: Nelze naslouchat příchozí spojení (listen vrátil chybu %s) - - - Error: Unsupported argument -socks found. Setting SOCKS version isn't possible anymore, only SOCKS5 proxies are supported. - Chyba: Byl použit nepodporovaný argument -socks. Nastavení verze SOCKS už není možné, podporovány jsou pouze SOCKS5 proxy. - - - Execute command when a relevant alert is received or we see a really long fork (%s in cmd is replaced by message) - Spustit příkaz, když pÅ™ijde relevantní upozornÄ›ní nebo když dojde k opravdu dlouhému rozÅ¡tÄ›pení Å™etezce bloků (%s se v příkazu nahradí zprávou) - - - Fees (in BTC/Kb) smaller than this are considered zero fee for relaying (default: %s) - Poplatky (v BTC/kB) menší než tato hodnota jsou považovány za nulové pro úÄely pÅ™eposílání transakcí (výchozí: %s) - - - If paytxfee is not set, include enough fee so transactions begin confirmation on average within n blocks (default: %u) - 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) - - - Invalid amount for -maxtxfee=<amount>: '%s' (must be at least the minrelay fee of %s to prevent stuck transactions) - Neplatná Äástka pro -maxtxfee=<amount>: '%s' (musí být alespoň jako poplatek minrelay %s, aby transakce nezůstávaly trÄet) - - - Maximum size of data in data carrier transactions we relay and mine (default: %u) - 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) - - - Prune configured below the minimum of %d MB. Please use a higher number. - ProÅ™ezávání je nastaveno pod minimum %d MB. Použij prosím nÄ›jaké vyšší Äíslo. - - - Query for peer addresses via DNS lookup, if low on addresses (default: 1 unless -connect) - PÅ™i nedostatku adres získat další protÄ›jÅ¡ky z DNS (výchozí: 1, pokud není použito -connect) - - - Randomize credentials for every proxy connection. This enables Tor stream isolation (default: %u) - Použít náhodné údaje pro každé proxy spojení. To umožní izolovat nesouvisející datové toky v Toru (výchozí: %u) - - - Set maximum size of high-priority/low-fee transactions in bytes (default: %d) - Nastavit maximální velikost prioritních/nízkopoplatkových transakcí v bajtech (výchozí: %d) - - - Set the number of threads for coin generation if enabled (-1 = all cores, default: %d) - Nastavení poÄtu vláken pro těžení, je-li zapnuté (-1 = vÅ¡echna jádra, výchozí: %d) - - - The transaction amount is too small to send after the fee has been deducted - Částka v transakci po odeÄtení poplatku je příliÅ¡ malá na odeslání - - - 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. - 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. - - - 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 - - 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 - - - - Warning: -maxtxfee is set very high! Fees this large could be paid on a single transaction. - UpozornÄ›ní: -maxtxfee je nastaveno velmi vysoko! Takto vysoký poplatek může být zaplacen v jednotlivé transakci. - - - Warning: Please check that your computer's date and time are correct! If your clock is wrong Bitcoin Core will not work properly. - 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Ä›. - - - 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 - 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 - - - You need to rebuild the database using -reindex to go back to unpruned mode. This will redownload the entire blockchain - K návratu k neproÅ™ezávacímu režimu je potÅ™eba pÅ™estavÄ›t databázi použitím -reindex. Také se znovu stáhne celý Å™etÄ›zec bloků - - - (default: %u) - (výchozí: %u) - - - Accept public REST requests (default: %u) - PÅ™ijímat veÅ™ejné REST požadavky (výchozí: %u) - - - Activating best chain... - Aktivuji nejlepší Å™etÄ›zec... - - - Can't run with a wallet in prune mode. - V proÅ™ezávacím režimu se s pÄ›něženkou nemůžu spustit. - - - Cannot resolve -whitebind address: '%s' - Nemohu pÅ™eložit -whitebind adresu: '%s' - - - Choose data directory on startup (default: 0) - Zvolit adresář pro data pÅ™i startu (výchozí: 0) - - - Connect through SOCKS5 proxy - PÅ™ipojit se pÅ™es SOCKS5 proxy - - - Copyright (C) 2009-%i The Bitcoin Core Developers - Copyright (C) 2009-%i Vývojáři Bitcoin Core - - - Could not parse -rpcbind value %s as network address - Nejde mi pÅ™eÄíst hodnotu -rpcbind %s jako síťovou adresu - - - Error loading wallet.dat: Wallet requires newer version of Bitcoin Core - Chyba pÅ™i naÄítání wallet.dat: peněženka vyžaduje novÄ›jší verzi Bitcoin Core - - - Error reading from database, shutting down. - Chyba pÅ™i Ätení z databáze, ukonÄuji se. - - - Error: Unsupported argument -tor found, use -onion. - Chyba: Argument -tor již není podporovaný, použij -onion. - - - Fee (in BTC/kB) to add to transactions you send (default: %s) - Poplatek (v BTC/kB), který se pÅ™idá ke každé odeslané transakci (výchozí: %s) - - - Information - Informace - - - Initialization sanity check failed. Bitcoin Core is shutting down. - Selhala úvodní zevrubná provÄ›rka. Bitcoin Core se ukonÄuje. - - - Invalid amount for -maxtxfee=<amount>: '%s' - Neplatná Äástka pro -maxtxfee=<amount>: '%s' - - - Invalid amount for -minrelaytxfee=<amount>: '%s' - Neplatná Äástka pro -minrelaytxfee=<Äástka>: '%s' - - - Invalid amount for -mintxfee=<amount>: '%s' - Neplatná Äástka pro -mintxfee=<Äástka>: '%s' - - - Invalid amount for -paytxfee=<amount>: '%s' (must be at least %s) - Neplatná Äástka pro -paytxfee=<Äástka>: '%s' (musí být alespoň %s) - - - Invalid netmask specified in -whitelist: '%s' - Ve -whitelist byla zadána neplatná podsíť: '%s' - - - Keep at most <n> unconnectable transactions in memory (default: %u) - Držet v pamÄ›ti nejvýše <n> nespojitelných transakcí (výchozí: %u) - - - Need to specify a port with -whitebind: '%s' - V rámci -whitebind je tÅ™eba specifikovat i port: '%s' - - - Node relay options: - Možnosti pÅ™eposílání: - - - RPC SSL options: (see the Bitcoin Wiki for SSL setup instructions) - Možnosti SSL pro RPC: (viz instrukce nastavení SSL na Bitcoin Wiki) - - - RPC server options: - Možnosti RPC serveru: - - - RPC support for HTTP persistent connections (default: %d) - Podpora RPC pro perzistentní HTTP spojení (výchozí: %d) - - - Rebuild block chain index from current blk000??.dat files on startup - PÅ™i startu znovu vytvoÅ™it index Å™etÄ›zce bloků z aktuálních blk000??.dat souborů - - - Receive and display P2P network alerts (default: %u) - PÅ™ijímat a zobrazovat poplachy z P2P sítÄ› (výchozí: %u) - - - Send trace/debug info to console instead of debug.log file - Posílat stopovací/ladicí informace do konzole místo do souboru debug.log - - - Send transactions as zero-fee transactions if possible (default: %u) - Posílat transakce pokud možno bez poplatků (výchozí: %u) - - - Set SSL root certificates for payment request (default: -system-) - Nastavit koÅ™enové SSL certifikáty pro platební požadavky (výchozí: -system-) - - - Set language, for example "de_DE" (default: system locale) - Nastavit jazyk, například „de_DE“ (výchozí: systémové nastavení) - - - Show all debugging options (usage: --help -help-debug) - Zobrazit vÅ¡echny možnosti ladÄ›ní (užití: --help -help-debug) - - - Show splash screen on startup (default: 1) - Zobrazit startovací obrazovku (výchozí: 1) - - - Shrink debug.log file on client startup (default: 1 when no -debug) - PÅ™i spuÅ¡tÄ›ní klienta zmenÅ¡it soubor debug.log (výchozí: 1, pokud není zadáno -debug) - - - Signing transaction failed - NepodaÅ™ilo se podepsat transakci - - - Start minimized - Nastartovat minimalizovanÄ› - - - The transaction amount is too small to pay the fee - Částka v transakci je příliÅ¡ malá na pokrytí poplatku - - - This is experimental software. - Tohle je experimentální program. - - - Transaction amount too small - Částka v transakci je příliÅ¡ malá - - - Transaction amounts must be positive - Částky v transakci musí být kladné - - - Transaction too large for fee policy - Transakce je na poplatkovou politiku příliÅ¡ velká - - - Transaction too large - Transakce je příliÅ¡ velká - - - UI Options: - Možnosti UI: - - - Unable to bind to %s on this computer (bind returned error %s) - Nedaří se mi pÅ™ipojit na %s na tomhle poÄítaÄi (operace bind vrátila chybu %s) - - - Use UPnP to map the listening port (default: 1 when listening) - Použít UPnP k namapování naslouchacího portu (výchozí: 1, pokud naslouchá) - - - Username for JSON-RPC connections - Uživatelské jméno pro JSON-RPC spojení - - - Wallet needed to be rewritten: restart Bitcoin Core to complete - Soubor s peněženkou potÅ™eboval pÅ™epsat: restartuj Bitcoin Core, aby se operace dokonÄila - - - Warning - UpozornÄ›ní - - - Warning: Unsupported argument -benchmark ignored, use -debug=bench. - UpozornÄ›ní: Nepodporovaný argument -benchmark se ignoruje, použij -debug=bench. - - - Warning: Unsupported argument -debugnet ignored, use -debug=net. - UpozornÄ›ní: Nepodporovaný argument -debugnet se ignoruje, použij -debug=net. - - - Zapping all transactions from wallet... - Vymazat vÅ¡echny transakce z peněženky... - - - on startup - pÅ™i startu - - - wallet.dat corrupt, salvage failed - Soubor wallet.dat je poÅ¡kozen, jeho záchrana se nezdaÅ™ila - - - Password for JSON-RPC connections - Heslo pro JSON-RPC spojení - - - Execute command when the best block changes (%s in cmd is replaced by block hash) - Spustit příkaz, když se zmÄ›ní nejlepší blok (%s se v příkazu nahradí hashem bloku) - - - Upgrade wallet to latest format - PÅ™evést peněženku na nejnovÄ›jší formát - - - Rescan the block chain for missing wallet transactions - PÅ™eskenovat Å™etÄ›zec bloků na chybÄ›jící transakce tvé pÄ›něženky - - - Use OpenSSL (https) for JSON-RPC connections - Použít OpenSSL (https) pro JSON-RPC spojení - - - This help message - Tato nápovÄ›da - - - Allow DNS lookups for -addnode, -seednode and -connect - Povolit DNS dotazy pro -addnode (pÅ™idání uzlu), -seednode a -connect (pÅ™ipojení) - - - Loading addresses... - NaÄítám adresy... - - - Error loading wallet.dat: Wallet corrupted - Chyba pÅ™i naÄítání wallet.dat: peněženka je poÅ¡kozená - - - (1 = keep tx meta data e.g. account owner and payment request information, 2 = drop tx meta data) - (1 = ukládat transakÄní metadata, napÅ™. majitele úÄtu a informace o platebním požadavku, 2 = mazat transakÄní metadata) - - - How thorough the block verification of -checkblocks is (0-4, default: %u) - Jak moc důkladná má být verifikace bloků -checkblocks (0-4, výchozí: %u) - - - Maintain a full transaction index, used by the getrawtransaction rpc call (default: %u) - Spravovat úplný index transakcí, který je využíván rpc voláním getrawtransaction (výchozí: %u) - - - Number of seconds to keep misbehaving peers from reconnecting (default: %u) - Doba ve vteÅ™inách, po kterou se nebudou moci zlobivé protÄ›jÅ¡ky znovu pÅ™ipojit (výchozí: %u) - - - Output debugging information (default: %u, supplying <category> is optional) - Tisknout ladicí informace (výchozí: %u, zadání <category> je volitelné) - - - Use separate SOCKS5 proxy to reach peers via Tor hidden services (default: %s) - Použít samostatnou SOCKS5 proxy ke spojení s protÄ›jÅ¡ky pÅ™es skryté služby v Toru (výchozí: %s) - - - (default: %s) - (výchozí: %s) - - - Acceptable ciphers (default: %s) - Akceptovatelné Å¡ifry (výchozí: %s) - - - Always query for peer addresses via DNS lookup (default: %u) - Vždy získávat adresy dalších protÄ›jÅ¡ků pÅ™es DNS (výchozí: %u) - - - Error loading wallet.dat - Chyba pÅ™i naÄítání wallet.dat - - - Generate coins (default: %u) - Těžit (výchozí: %u) - - - How many blocks to check at startup (default: %u, 0 = all) - Kolik bloků pÅ™i startu zkontrolovat (výchozí: %u, 0 = vÅ¡echny) - - - Include IP addresses in debug output (default: %u) - Zaznamenávat do ladicích výstupů i IP adresy (výchozí: %u) - - - Invalid -proxy address: '%s' - Neplatná -proxy adresa: '%s' - - - Listen for JSON-RPC connections on <port> (default: %u or testnet: %u) - ÄŒekat na JSON-RPC spojení na <portu> (výchozí: %u nebo testnet: %u) - - - Listen for connections on <port> (default: %u or testnet: %u) - ÄŒekat na spojení na <portu> (výchozí: %u nebo testnet: %u) - - - Maintain at most <n> connections to peers (default: %u) - Povolit nejvýše <n> protÄ›jÅ¡ků (výchozí: %u) - - - Make the wallet broadcast transactions - Transakce z peněženky rozesílat - - - Maximum per-connection receive buffer, <n>*1000 bytes (default: %u) - Maximální velikost pÅ™ijímacího bufferu pro každé spojení, <n>*1000 bajtů (výchozí: %u) - - - Maximum per-connection send buffer, <n>*1000 bytes (default: %u) - Maximální velikost odesílacího bufferu pro každé spojení, <n>*1000 bajtů (výchozí: %u) - - - Prepend debug output with timestamp (default: %u) - PÅ™ipojit pÅ™ed ladicí výstup Äasové razítko (výchozí: %u) - - - Relay and mine data carrier transactions (default: %u) - PÅ™eposílat a těžit transakce nesoucí data (výchozí: %u) - - - Relay non-P2SH multisig (default: %u) - PÅ™eposílat ne-P2SH multisig (výchozí: %u) - - - Server certificate file (default: %s) - Soubor se serverovým certifikátem (výchozí: %s) - - - Server private key (default: %s) - Soubor se serverovým soukromým klíÄem (výchozí: %s) - - - Set key pool size to <n> (default: %u) - Nastavit zásobník klíÄů na velikost <n> (výchozí: %u) - - - Set minimum block size in bytes (default: %u) - Nastavit minimální velikost bloku v bajtech (výchozí: %u) - - - Set the number of threads to service RPC calls (default: %d) - Nastavení poÄtu vláken pro servisní RPC volání (výchozí: %d) - - - Specify configuration file (default: %s) - KonfiguraÄní soubor (výchozí: %s) - - - Specify connection timeout in milliseconds (minimum: 1, default: %d) - Zadej Äasový limit spojení v milivteÅ™inách (minimum: 1, výchozí: %d) - - - Spend unconfirmed change when sending transactions (default: %u) - Utrácet i jeÅ¡tÄ› nepotvrzené drobné pÅ™i posílání transakcí (výchozí: %u) - - - Threshold for disconnecting misbehaving peers (default: %u) - Práh pro odpojování zlobivých protÄ›jÅ¡ků (výchozí: %u) - - - Unknown network specified in -onlynet: '%s' - V -onlynet byla uvedena neznámá síť: '%s' - - - Cannot resolve -bind address: '%s' - Nemohu pÅ™eložit -bind adresu: '%s' - - - Cannot resolve -externalip address: '%s' - Nemohu pÅ™eložit -externalip adresu: '%s' - - - Invalid amount for -paytxfee=<amount>: '%s' - Neplatná Äástka pro -paytxfee=<Äástka>: '%s' - - - Insufficient funds - Nedostatek prostÅ™edků - - - Loading block index... - NaÄítám index bloků... - - - Add a node to connect to and attempt to keep the connection open - PÅ™idat uzel, ke kterému se pÅ™ipojit a snažit se spojení udržet - - - Loading wallet... - NaÄítám peněženku... - - - Cannot downgrade wallet - Nemohu pÅ™evést peněženku do staršího formátu - - - Cannot write default address - Nemohu napsat výchozí adresu - - - Rescanning... - PÅ™eskenovávám... - - - Done loading - NaÄítání dokonÄeno - - - Error - Chyba - - - \ No newline at end of file diff --git a/src/qt/locale/bitcoin_cy.ts b/src/qt/locale/bitcoin_cy.ts deleted file mode 100644 index 1b8eb3dc4..000000000 --- a/src/qt/locale/bitcoin_cy.ts +++ /dev/null @@ -1,506 +0,0 @@ - - - AddressBookPage - - Create a new address - Creu cyfeiriad newydd - - - Copy the currently selected address to the system clipboard - Copio'r cyfeiriad sydd wedi'i ddewis i'r clipfwrdd system - - - &Delete - &Dileu - - - - AddressTableModel - - Label - Label - - - Address - Cyfeiriad - - - (no label) - (heb label) - - - - AskPassphraseDialog - - Enter passphrase - Teipiwch gyfrinymadrodd - - - New passphrase - Cyfrinymadrodd newydd - - - Repeat new passphrase - Ailadroddwch gyfrinymadrodd newydd - - - Encrypt wallet - Amgryptio'r waled - - - This operation needs your wallet passphrase to unlock the wallet. - Mae angen i'r gweithred hon ddefnyddio'ch cyfrinymadrodd er mwyn datgloi'r waled. - - - Unlock wallet - Datgloi'r waled - - - This operation needs your wallet passphrase to decrypt the wallet. - Mae angen i'r gweithred hon ddefnyddio'ch cyfrinymadrodd er mwyn dadgryptio'r waled. - - - Decrypt wallet - Dadgryptio'r waled - - - Change passphrase - Newid cyfrinymadrodd - - - Confirm wallet encryption - Cadarnau amgryptiad y waled - - - Wallet encrypted - Waled wedi'i amgryptio - - - Wallet encryption failed - Amgryptiad waled wedi methu - - - Wallet encryption failed due to an internal error. Your wallet was not encrypted. - Methodd amgryptiad y waled oherwydd gwall mewnol. Ni amgryptwyd eich waled. - - - The supplied passphrases do not match. - Dydy'r cyfrinymadroddion a ddarparwyd ddim yn cyd-fynd â'u gilydd. - - - Wallet unlock failed - Methodd ddatgloi'r waled - - - Wallet decryption failed - Methodd dadgryptiad y waled - - - - BitcoinGUI - - Synchronizing with network... - Cysoni â'r rhwydwaith... - - - &Overview - &Trosolwg - - - Show general overview of wallet - Dangos trosolwg cyffredinol y waled - - - &Transactions - &Trafodion - - - Browse transaction history - Pori hanes trafodion - - - Quit application - Gadael rhaglen - - - &Options... - &Opsiynau - - - Change the passphrase used for wallet encryption - Newid y cyfrinymadrodd a ddefnyddiwyd ar gyfer amgryptio'r waled - - - &File - &Ffeil - - - &Settings - &Gosodiadau - - - &Help - &Cymorth - - - Tabs toolbar - Bar offer tabiau - - - Error - Gwall - - - Warning - Rhybudd - - - Information - Gwybodaeth - - - Up to date - Cyfamserol - - - Catching up... - Dal i fyny - - - Sent transaction - Trafodiad a anfonwyd - - - Incoming transaction - Trafodiad sy'n cyrraedd - - - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - Mae'r waled <b>wedi'i amgryptio</b> ac <b>heb ei gloi</b> ar hyn o bryd - - - Wallet is <b>encrypted</b> and currently <b>locked</b> - Mae'r waled <b>wedi'i amgryptio</b> ac <b>ar glo</b> ar hyn o bryd - - - - ClientModel - - - CoinControlDialog - - Date - Dyddiad - - - (no label) - (heb label) - - - - EditAddressDialog - - Edit Address - Golygu'r cyfeiriad - - - &Label - &Label - - - &Address - &Cyfeiriad - - - New receiving address - Cyfeiriad derbyn newydd - - - New sending address - Cyfeiriad anfon newydd - - - Edit receiving address - Golygu'r cyfeiriad derbyn - - - Edit sending address - Golygu'r cyfeiriad anfon - - - The entered address "%1" is already in the address book. - Mae'r cyfeiriad "%1" sydd newydd gael ei geisio gennych yn y llyfr cyfeiriad yn barod. - - - Could not unlock wallet. - Methodd ddatgloi'r waled. - - - New key generation failed. - Methodd gynhyrchu allwedd newydd. - - - - FreespaceChecker - - - HelpMessageDialog - - - Intro - - Error - Gwall - - - - OpenURIDialog - - - OptionsDialog - - Options - Opsiynau - - - - OverviewPage - - Form - Ffurflen - - - - PaymentServer - - - PeerTableModel - - - QObject - - - QRImageWidget - - - RPCConsole - - &Information - Gwybodaeth - - - - ReceiveCoinsDialog - - &Label: - &Label: - - - - ReceiveRequestDialog - - Address - Cyfeiriad - - - Label - Label - - - Message - Neges - - - - RecentRequestsTableModel - - Date - Dyddiad - - - Label - Label - - - Message - Neges - - - (no label) - (heb label) - - - - SendCoinsDialog - - Send Coins - Anfon arian - - - Send to multiple recipients at once - Anfon at pobl lluosog ar yr un pryd - - - Balance: - Gweddill: - - - Confirm the send action - Cadarnhau'r gweithrediad anfon - - - %1 to %2 - %1 i %2 - - - (no label) - (heb label) - - - - SendCoinsEntry - - A&mount: - &Maint - - - &Label: - &Label: - - - Alt+A - Alt+A - - - Paste address from clipboard - Gludo cyfeiriad o'r glipfwrdd - - - Alt+P - Alt+P - - - - ShutdownWindow - - - SignVerifyMessageDialog - - Alt+A - Alt+A - - - Paste address from clipboard - Gludo cyfeiriad o'r glipfwrdd - - - Alt+P - Alt+P - - - - SplashScreen - - [testnet] - [testnet] - - - - TrafficGraphWidget - - - TransactionDesc - - Open until %1 - Agor tan %1 - - - Date - Dyddiad - - - Message - Neges - - - - TransactionDescDialog - - - TransactionTableModel - - Date - Dyddiad - - - Type - Math - - - Open until %1 - Agor tan %1 - - - Label - Label - - - - TransactionView - - Today - Heddiw - - - This year - Eleni - - - Date - Dyddiad - - - Type - Math - - - Label - Label - - - Address - Cyfeiriad - - - - UnitDisplayStatusBarControl - - - WalletFrame - - - WalletModel - - Send Coins - Anfon arian - - - - WalletView - - - bitcoin-core - - Information - Gwybodaeth - - - Warning - Rhybudd - - - Error - Gwall - - - \ No newline at end of file diff --git a/src/qt/locale/bitcoin_da.ts b/src/qt/locale/bitcoin_da.ts deleted file mode 100644 index f5c8ca65f..000000000 --- a/src/qt/locale/bitcoin_da.ts +++ /dev/null @@ -1,3590 +0,0 @@ - - - AddressBookPage - - Right-click to edit address or label - Højreklik for at redigere adresse eller mærke - - - Create a new address - Opret en ny adresse - - - &New - &Ny - - - Copy the currently selected address to the system clipboard - Kopiér den valgte adresse til systemets udklipsholder - - - &Copy - &Kopiér - - - C&lose - &Luk - - - &Copy Address - &Kopiér adresse - - - Delete the currently selected address from the list - Slet den markerede adresse fra listen - - - Export the data in the current tab to a file - Eksportér den aktuelle visning til en fil - - - &Export - &Eksportér - - - &Delete - &Slet - - - Choose the address to send coins to - Vælg adresse at sende bitcoins til - - - Choose the address to receive coins with - Vælg adresse at modtage bitcoins med - - - C&hoose - &Vælg - - - Sending addresses - Afsendelsesadresser - - - Receiving addresses - Modtagelsesadresser - - - These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins. - Disse er dine Bitcoin-adresser for at sende betalinger. Tjek altid beløb og modtageradresse, inden du sender bitcoins. - - - These are your Bitcoin addresses for receiving payments. It is recommended to use a new receiving address for each transaction. - Dette er dine Bitcoin-adresser til at modtage betalinger med. Det anbefales are bruge en ny modtagelsesadresse for hver transaktion. - - - Copy &Label - Kopiér &mærkat - - - &Edit - &Redigér - - - Export Address List - Eksportér adresseliste - - - Comma separated file (*.csv) - Kommasepareret fil (*.csv) - - - Exporting Failed - Eksport mislykkedes - - - There was an error trying to save the address list to %1. Please try again. - Der opstod en fejl under gemning af adresselisten til %1. Prøv venligst igen. - - - - AddressTableModel - - Label - Mærkat - - - Address - Adresse - - - (no label) - (ingen mærkat) - - - - AskPassphraseDialog - - Passphrase Dialog - Adgangskodedialog - - - Enter passphrase - Indtast adgangskode - - - New passphrase - Ny adgangskode - - - Repeat new passphrase - Gentag ny adgangskode - - - Encrypt wallet - Kryptér tegnebog - - - This operation needs your wallet passphrase to unlock the wallet. - Denne funktion har brug for din tegnebogs adgangskode for at lÃ¥se tegnebogen op. - - - Unlock wallet - LÃ¥s tegnebog op - - - This operation needs your wallet passphrase to decrypt the wallet. - Denne funktion har brug for din tegnebogs adgangskode for at dekryptere tegnebogen. - - - Decrypt wallet - Dekryptér tegnebog - - - Change passphrase - Skift adgangskode - - - Confirm wallet encryption - Bekræft tegnebogskryptering - - - Warning: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR BITCOINS</b>! - Advarsel: Hvis du krypterer din tegnebog og mister din adgangskode, vil du <b>MISTE ALLE DINE BITCOINS</b>! - - - Are you sure you wish to encrypt your wallet? - Er du sikker pÃ¥, at du ønsker at kryptere din tegnebog? - - - Bitcoin Core 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. - Bitcoin Core vil nu lukke for at færdiggøre krypteringsprocessen. Husk at kryptering af din tegnebog kan ikke beskytte dine bitcoin fuldt ud mod at blive stjÃ¥let af eventuel malware, der mÃ¥tte have inficeret din computer. - - - 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. - VIGTIGT: Enhver tidligere sikkerhedskopi, som du har lavet af tegnebogsfilen, bør blive erstattet af den nyligt genererede, krypterede tegnebogsfil. Af sikkerhedsmæssige Ã¥rsager vil tidligere sikkerhedskopier af den ikke-krypterede tegnebogsfil blive ubrugelige i det øjeblik, du starter med at anvende den nye, krypterede tegnebog. - - - Warning: The Caps Lock key is on! - Advarsel: Caps Lock-tasten er aktiveret! - - - Wallet encrypted - Tegnebog krypteret - - - 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>. - Indtast det nye kodeord til tegnebogen.<br/>Brug venligst et kodeord pÃ¥ <b>ti eller flere tilfældige tegn</b> eller <b>otte eller flere ord</b>. - - - Enter the old passphrase and new passphrase to the wallet. - Indtast den gamle adgangskode og en ny adgangskode til tegnebogen. - - - Wallet encryption failed - Tegnebogskryptering mislykkedes - - - Wallet encryption failed due to an internal error. Your wallet was not encrypted. - Tegnebogskryptering mislykkedes pÃ¥ grund af en intern fejl. Din tegnebog blev ikke krypteret. - - - The supplied passphrases do not match. - De angivne adgangskoder stemmer ikke overens. - - - Wallet unlock failed - TegnebogsoplÃ¥sning mislykkedes - - - The passphrase entered for the wallet decryption was incorrect. - Den angivne adgangskode for tegnebogsdekrypteringen er forkert. - - - Wallet decryption failed - Tegnebogsdekryptering mislykkedes - - - Wallet passphrase was successfully changed. - Tegnebogens adgangskode blev ændret. - - - - BitcoinGUI - - Sign &message... - Underskriv &besked… - - - Synchronizing with network... - Synkroniserer med netværk… - - - &Overview - &Oversigt - - - Node - Knude - - - Show general overview of wallet - Vis generel oversigt over tegnebog - - - &Transactions - &Transaktioner - - - Browse transaction history - Gennemse transaktionshistorik - - - E&xit - &Luk - - - Quit application - Afslut program - - - About &Qt - Om &Qt - - - Show information about Qt - Vis informationer om Qt - - - &Options... - &Indstillinger… - - - &Encrypt Wallet... - &Kryptér tegnebog… - - - &Backup Wallet... - &Sikkerhedskopiér tegnebog… - - - &Change Passphrase... - &Skift adgangskode… - - - &Sending addresses... - &Afsendelsesadresser… - - - &Receiving addresses... - &Modtagelsesadresser… - - - Open &URI... - &Ã…bn URI… - - - Bitcoin Core client - Bitcoin Core-klient - - - Importing blocks from disk... - Importerer blokke fra disken… - - - Reindexing blocks on disk... - Genindekserer blokke pÃ¥ disken… - - - Send coins to a Bitcoin address - Send bitcoins til en Bitcoin-adresse - - - Backup wallet to another location - Lav sikkerhedskopi af tegnebogen til et andet sted - - - Change the passphrase used for wallet encryption - Skift adgangskode anvendt til tegnebogskryptering - - - &Debug window - &Fejlsøgningsvindue - - - Open debugging and diagnostic console - Ã…bn fejlsøgnings- og diagnosticeringskonsollen - - - &Verify message... - &Verificér besked… - - - Bitcoin - Bitcoin - - - Wallet - Tegnebog - - - &Send - &Send - - - &Receive - &Modtag - - - Show information about Bitcoin Core - Vis oplysninger om Bitcoin Core - - - &Show / Hide - &Vis / skjul - - - Show or hide the main Window - Vis eller skjul hovedvinduet - - - Encrypt the private keys that belong to your wallet - Kryptér de private nøgler, der hører til din tegnebog - - - Sign messages with your Bitcoin addresses to prove you own them - Underskriv beskeder med dine Bitcoin-adresser for at bevise, at de tilhører dig - - - Verify messages to ensure they were signed with specified Bitcoin addresses - Verificér beskeder for at sikre, at de er underskrevet med de angivne Bitcoin-adresser - - - &File - &Fil - - - &Settings - &Opsætning - - - &Help - &Hjælp - - - Tabs toolbar - Faneværktøjslinje - - - Bitcoin Core - Bitcoin Core - - - Request payments (generates QR codes and bitcoin: URIs) - Anmod om betalinger (genererer QR-koder og "bitcoin:"-URI'er) - - - &About Bitcoin Core - &Om Bitcoin Core - - - Modify configuration options for Bitcoin Core - Ændr opsætning af Bitcoin Core - - - Show the list of used sending addresses and labels - Vis listen over brugte afsendelsesadresser og -mærkater - - - Show the list of used receiving addresses and labels - Vis listen over brugte modtagelsesadresser og -mærkater - - - Open a bitcoin: URI or payment request - Ã…bn en "bitcoin:"-URI eller betalingsanmodning - - - &Command-line options - Tilvalg for &kommandolinje - - - Show the Bitcoin Core help message to get a list with possible Bitcoin command-line options - Vis Bitcoin Core hjælpebesked for at fÃ¥ en liste over mulige tilvalg for Bitcoin kommandolinje - - - %n active connection(s) to Bitcoin network - %n aktiv forbindelse til Bitcoin-netværket%n aktive forbindelser til Bitcoin-netværket - - - No block source available... - Ingen blokkilde tilgængelig… - - - Processed %n block(s) of transaction history. - Bearbejdede %n blok med transaktionshistorik.Bearbejdede %n blokke med transaktionshistorik. - - - %n hour(s) - %n time%n timer - - - %n day(s) - %n dag%n dage - - - %n week(s) - %n uge%n uger - - - %1 and %2 - %1 og %2 - - - %n year(s) - %n Ã¥r%n Ã¥r - - - %1 behind - %1 bagud - - - Last received block was generated %1 ago. - Senest modtagne blok blev genereret for %1 siden. - - - Transactions after this will not yet be visible. - Transaktioner herefter vil endnu ikke være synlige. - - - Error - Fejl - - - Warning - Advarsel - - - Information - Information - - - Up to date - Opdateret - - - Catching up... - Indhenter… - - - Date: %1 - - Dato: %1 - - - - Amount: %1 - - Beløb: %1 - - - - Type: %1 - - Type: %1 - - - - Label: %1 - - Mærkat: %1 - - - - Address: %1 - - Adresse: %1 - - - - Sent transaction - Afsendt transaktion - - - Incoming transaction - IndgÃ¥ende transaktion - - - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - Tegnebog er <b>krypteret</b> og i øjeblikket <b>ulÃ¥st</b> - - - Wallet is <b>encrypted</b> and currently <b>locked</b> - Tegnebog er <b>krypteret</b> og i øjeblikket <b>lÃ¥st</b> - - - - ClientModel - - Network Alert - Netværksadvarsel - - - - CoinControlDialog - - Coin Selection - Coin-styring - - - Quantity: - Mængde: - - - Bytes: - Byte: - - - Amount: - Beløb: - - - Priority: - Prioritet: - - - Fee: - Gebyr: - - - Dust: - Støv: - - - After Fee: - Efter gebyr: - - - Change: - Byttepenge: - - - (un)select all - (af)vælg alle - - - Tree mode - Trætilstand - - - List mode - Listetilstand - - - Amount - Beløb - - - Received with label - Modtaget med mærke - - - Received with address - Modtaget med adresse - - - Date - Dato - - - Confirmations - Bekræftelser - - - Confirmed - Bekræftet - - - Priority - Prioritet - - - Copy address - Kopiér adresse - - - Copy label - Kopiér mærkat - - - Copy amount - Kopiér beløb - - - Copy transaction ID - Kopiér transaktions-ID - - - Lock unspent - FastlÃ¥s ubrugte - - - Unlock unspent - LÃ¥s ubrugte op - - - Copy quantity - Kopiér mængde - - - Copy fee - Kopiér gebyr - - - Copy after fee - Kopiér efter-gebyr - - - Copy bytes - Kopiér byte - - - Copy priority - Kopiér prioritet - - - Copy dust - Kopiér støv - - - Copy change - Kopiér byttepenge - - - highest - højest - - - higher - højere - - - high - højt - - - medium-high - mellemhøj - - - medium - medium - - - low-medium - mellemlav - - - low - lav - - - lower - lavere - - - lowest - lavest - - - (%1 locked) - (%1 fastlÃ¥st) - - - none - ingen - - - This label turns red if the transaction size is greater than 1000 bytes. - Denne mærkat bliver rød, hvis transaktionsstørrelsen er større end 1000 byte. - - - This label turns red if the priority is smaller than "medium". - Denne mærkat bliver rød, hvis prioriteten er mindre end "medium". - - - This label turns red if any recipient receives an amount smaller than %1. - Denne mærkat bliver rød, hvis en eller flere modtagere modtager et beløb, der er mindre end %1. - - - Can vary +/- %1 satoshi(s) per input. - Kan variere med +/- %1 satoshi per input. - - - yes - ja - - - no - nej - - - This means a fee of at least %1 per kB is required. - Dette betyder, at et gebyr pÃ¥ mindst %1 pr. kB er nødvendigt. - - - Can vary +/- 1 byte per input. - Kan variere ±1 byte pr. input. - - - Transactions with higher priority are more likely to get included into a block. - Transaktioner med højere prioritet har højere sansynlighed for at blive inkluderet i en blok. - - - (no label) - (ingen mærkat) - - - change from %1 (%2) - byttepenge fra %1 (%2) - - - (change) - (byttepange) - - - - EditAddressDialog - - Edit Address - Redigér adresse - - - &Label - &Mærkat - - - The label associated with this address list entry - Mærkatet, der er associeret med denne indgang i adresselisten - - - The address associated with this address list entry. This can only be modified for sending addresses. - Adressen, der er associeret med denne indgang i adresselisten. Denne kan kune ændres for afsendelsesadresser. - - - &Address - &Adresse - - - New receiving address - Ny modtagelsesadresse - - - New sending address - Ny afsendelsesadresse - - - Edit receiving address - Redigér modtagelsesadresse - - - Edit sending address - Redigér afsendelsesadresse - - - The entered address "%1" is already in the address book. - Den indtastede adresse "%1" er allerede i adressebogen. - - - The entered address "%1" is not a valid Bitcoin address. - Den indtastede adresse "%1" er ikke en gyldig Bitcoin-adresse. - - - Could not unlock wallet. - Kunne ikke lÃ¥se tegnebog op. - - - New key generation failed. - Ny nøglegenerering mislykkedes. - - - - FreespaceChecker - - A new data directory will be created. - En ny datamappe vil blive oprettet. - - - name - navn - - - Directory already exists. Add %1 if you intend to create a new directory here. - Mappe eksisterer allerede. Tilføj %1, hvis du vil oprette en ny mappe her. - - - Path already exists, and is not a directory. - Sti eksisterer allerede og er ikke en mappe. - - - Cannot create data directory here. - Kan ikke oprette en mappe her. - - - - HelpMessageDialog - - Bitcoin Core - Bitcoin Core - - - version - version - - - (%1-bit) - (%1-bit) - - - About Bitcoin Core - Om Bitcoin Core - - - Command-line options - Kommandolinjetilvalg - - - Usage: - Anvendelse: - - - command-line options - kommandolinjetilvalg - - - - Intro - - Welcome - Velkommen - - - Welcome to Bitcoin Core. - Velkommen til Bitcoin Core. - - - As this is the first time the program is launched, you can choose where Bitcoin Core will store its data. - Siden dette er første gang, programmet startes, kan du vælge, hvor Bitcoin Core skal gemme sin data. - - - Bitcoin Core will download and store a copy of the Bitcoin block chain. At least %1GB of data will be stored in this directory, and it will grow over time. The wallet will also be stored in this directory. - Bitcoin Core vil downloade og gemme et kopi af Bitcoin-blokkæden. Mindst %1 GB data vil blive gemt i denne mappe, og den vil vokse over tid. Tegnebogen vil ogsÃ¥ blive gemt i denne mappe. - - - Use the default data directory - Brug standardmappen for data - - - Use a custom data directory: - Brug tilpasset mappe for data: - - - Bitcoin Core - Bitcoin Core - - - Error: Specified data directory "%1" cannot be created. - Fejl: Angivet datamappe "%1" kan ikke oprettes. - - - Error - Fejl - - - %n GB of free space available - %n GB fri plads tilgængelig%n GB fri plads tilgængelig - - - - OpenURIDialog - - Open URI - Ã…bn URI - - - Open payment request from URI or file - Ã…bn betalingsanmodning fra URI eller fil - - - URI: - URI: - - - Select payment request file - Vælg fil for betalingsanmodning - - - Select payment request file to open - Vælg fil for betalingsanmodning til Ã¥bning - - - - OptionsDialog - - Options - Indstillinger - - - &Main - &Generelt - - - Size of &database cache - Størrelsen pÃ¥ &databasens cache - - - MB - MB - - - Number of script &verification threads - Antallet af script&verificeringstrÃ¥de - - - Accept connections from outside - Acceptér forbindelser udefra - - - Allow incoming connections - Tillad indkommende forbindelser - - - IP address of the proxy (e.g. IPv4: 127.0.0.1 / IPv6: ::1) - IP-adresse for proxyen (fx IPv4: 127.0.0.1 / IPv6: ::1) - - - Minimize instead of exit the application when the window is closed. When this option is enabled, the application will be closed only after selecting Exit in the menu. - Minimér i stedet for at lukke applikationen, nÃ¥r vinduet lukkes. NÃ¥r denne indstilling er slÃ¥et til, vil applikationen først blive lukket, nÃ¥r Afslut vælges i menuen. - - - The user interface language can be set here. This setting will take effect after restarting Bitcoin Core. - Sproget for brugerfladen kan vælges her. Denne indstilling vil træde i kraft efter genstart af Bitcoin Core. - - - 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 |. - Tredjeparts-URL'er (fx et blokhÃ¥ndteringsværktøj), der vises i transaktionsfanen som genvejsmenupunkter. %s i URL'en erstattes med transaktionens hash. Flere URL'er separeres med en lodret streg |. - - - Third party transaction URLs - Tredjeparts-transaktions-URL'er - - - Active command-line options that override above options: - Aktuelle tilvalg for kommandolinjen, der tilsidesætter ovenstÃ¥ende tilvalg: - - - Reset all client options to default. - Nulstil alle klientindstillinger til deres standard. - - - &Reset Options - &Nulstil indstillinger - - - &Network - &Netværk - - - Automatically start Bitcoin Core after logging in to the system. - Start Bitcoin Core automatisk efter der logges ind pÃ¥ systemet. - - - &Start Bitcoin Core on system login - &Start Bitcoin Core ved system-login - - - (0 = auto, <0 = leave that many cores free) - (0 = auto, <0 = efterlad sÃ¥ mange kerner fri) - - - W&allet - &Tegnebog - - - Expert - Ekspert - - - Enable coin &control features - SlÃ¥ egenskaber for &coin-styring til - - - 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. - Hvis du slÃ¥r brug af ubekræftede byttepenge fra, kan byttepengene fra en transaktion ikke bruges, før pÃ¥gældende transaktion har mindst én bekræftelse. Dette pÃ¥virker ogsÃ¥ mÃ¥den hvorpÃ¥ din saldo beregnes. - - - &Spend unconfirmed change - &Brug ubekræftede byttepenge - - - Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled. - Ã…bn automatisk Bitcoin-klientens port pÃ¥ routeren. Dette virker kun, nÃ¥r din router understøtter UPnP, og UPnP er aktiveret. - - - Map port using &UPnP - Konfigurér port vha. &UPnP - - - Connect to the Bitcoin network through a SOCKS5 proxy. - Forbind til Bitcoin-netværket gennem en SOCKS5-proxy. - - - &Connect through SOCKS5 proxy (default proxy): - &Forbind gennem SOCKS5-proxy (standard-proxy): - - - Proxy &IP: - Proxy-&IP: - - - &Port: - &Port: - - - Port of the proxy (e.g. 9050) - Port for proxyen (fx 9050) - - - &Window - &Vindue - - - Show only a tray icon after minimizing the window. - Vis kun et statusikon efter minimering af vinduet. - - - &Minimize to the tray instead of the taskbar - &Minimér til statusfeltet i stedet for proceslinjen - - - M&inimize on close - M&inimér ved lukning - - - &Display - &Visning - - - User Interface &language: - &Sprog for brugergrænseflade: - - - &Unit to show amounts in: - &Enhed at vise beløb i: - - - Choose the default subdivision unit to show in the interface and when sending coins. - Vælg standard for underopdeling af enhed, som skal vises i brugergrænsefladen og ved afsendelse af bitcoins. - - - Whether to show coin control features or not. - Hvorvidt egenskaber for coin-styring skal vises eller ej. - - - &OK - &O.k. - - - &Cancel - &Annullér - - - default - standard - - - none - ingen - - - Confirm options reset - Bekræft nulstilling af indstillinger - - - Client restart required to activate changes. - Genstart af klienten er nødvendig for at aktivere ændringer. - - - Client will be shut down. Do you want to proceed? - Klienten vil lukke ned. Vil du fortsætte? - - - This change would require a client restart. - Denne ændring vil kræve en genstart af klienten. - - - The supplied proxy address is invalid. - Den angivne proxy-adresse er ugyldig. - - - - OverviewPage - - Form - Formular - - - The displayed information may be out of date. Your wallet automatically synchronizes with the Bitcoin network after a connection is established, but this process has not completed yet. - Den viste information kan være forældet. Din tegnebog synkroniserer automatisk med Bitcoin-netværket, nÃ¥r en forbindelse etableres, men denne proces er ikke gennemført endnu. - - - Watch-only: - Kigge: - - - Available: - Tilgængelig: - - - Your current spendable balance - Din nuværende tilgængelige saldo - - - Pending: - Uafgjort: - - - Total of transactions that have yet to be confirmed, and do not yet count toward the spendable balance - Total saldo for transaktioner, som ikke er blevet bekræftet endnu, og som ikke endnu er en del af den tilgængelige saldo - - - Immature: - Umodne: - - - Mined balance that has not yet matured - Minet saldo, som endnu ikke er modnet - - - Balances - Saldi: - - - Total: - Total: - - - Your current total balance - Din nuværende totale saldo - - - Your current balance in watch-only addresses - Din nuværende saldo pÃ¥ kigge-adresser - - - Spendable: - Spendérbar: - - - Recent transactions - Nylige transaktioner - - - Unconfirmed transactions to watch-only addresses - Ubekræftede transaktioner til kigge-adresser - - - Mined balance in watch-only addresses that has not yet matured - Minet saldo pÃ¥ kigge-adresser, som endnu ikke er modnet - - - Current total balance in watch-only addresses - Nuværende totalsaldo pÃ¥ kigge-adresser - - - - PaymentServer - - URI handling - URI-hÃ¥ndtering - - - Invalid payment address %1 - Ugyldig betalingsadresse %1 - - - Payment request rejected - Betalingsanmodning afvist - - - Payment request network doesn't match client network. - Netværk for betalingsanmodning stemmer ikke overens med klientens netværk. - - - Payment request is not initialized. - Betalingsanmodning er ikke klargjort. - - - Requested payment amount of %1 is too small (considered dust). - Anmodet betalingsbeløb pÃ¥ %1 er for lille (regnes som støv). - - - Payment request error - Fejl i betalingsanmodning - - - Cannot start bitcoin: click-to-pay handler - Kan ikke starte bitcoin: click-to-pay-hÃ¥ndtering - - - Payment request fetch URL is invalid: %1 - Hentnings-URL for betalingsanmodning er ugyldig: %1 - - - URI cannot be parsed! This can be caused by an invalid Bitcoin address or malformed URI parameters. - URI kan ikke tolkes! Dette kan skyldes en ugyldig Bitcoin-adresse eller forkert udformede URL-parametre. - - - Payment request file handling - FilhÃ¥ndtering for betalingsanmodninger - - - Payment request file cannot be read! This can be caused by an invalid payment request file. - Fil for betalingsanmodning kan ikke læses! Dette kan skyldes en ugyldig fil for betalingsanmodning. - - - Payment request expired. - Betalingsanmodning er udløbet. - - - Unverified payment requests to custom payment scripts are unsupported. - Ikke-verificerede betalingsanmodninger for tilpassede betalings-scripts understøttes ikke. - - - Invalid payment request. - Ugyldig betalingsanmodning. - - - Refund from %1 - Tilbagebetaling fra %1 - - - Payment request %1 is too large (%2 bytes, allowed %3 bytes). - Betalingsanmodning %1 er for stor (%2 byte, %3 byte tilladt). - - - Payment request DoS protection - Beskyttelse mod DoS-angreb via betalingsanmodninger - - - Error communicating with %1: %2 - Fejl under kommunikation med %1: %2 - - - Payment request cannot be parsed! - Betalingsanmodning kan ikke tolkes! - - - Bad response from server %1 - Fejlagtigt svar fra server %1 - - - Payment acknowledged - Betaling anerkendt - - - Network request error - Fejl i netværksforespørgsel - - - - PeerTableModel - - User Agent - Brugeragent - - - Node/Service - Knude/tjeneste - - - Ping Time - Ping-tid - - - - QObject - - Amount - Beløb - - - Enter a Bitcoin address (e.g. %1) - Indtast en Bitcoin-adresse (fx %1) - - - %1 d - %1 d - - - %1 h - %1 t - - - %1 m - %1 m - - - %1 s - %1 s - - - None - Ingen - - - N/A - N/A - - - %1 ms - %1 ms - - - - QRImageWidget - - &Save Image... - &Gem billede… - - - &Copy Image - &Kopiér foto - - - Save QR Code - Gem QR-kode - - - PNG Image (*.png) - PNG-billede (*.png) - - - - RPCConsole - - Client name - Klientnavn - - - N/A - N/A - - - Client version - Klientversion - - - &Information - &Information - - - Debug window - Fejlsøgningsvindue - - - General - Generelt - - - Using OpenSSL version - Anvender OpenSSL-version - - - Using BerkeleyDB version - Bruger BerkeleyDB version - - - Startup time - Opstartstidspunkt - - - Network - Netværk - - - Name - Navn - - - Number of connections - Antal forbindelser - - - Block chain - Blokkæde - - - Current number of blocks - Nuværende antal blokke - - - Open the Bitcoin Core debug log file from the current data directory. This can take a few seconds for large log files. - Ã…bn Bitcoin Cores fejlsøgningslogfil fra den aktuelle datamappe. Dette kan tage nogle fÃ¥ sekunder for store logfiler. - - - Received - Modtaget - - - Sent - Sendt - - - &Peers - Andre &knuder - - - Select a peer to view detailed information. - Vælg en anden knude for at se detaljeret information. - - - Direction - Retning - - - Version - Version - - - User Agent - Brugeragent - - - Services - Tjenester - - - Starting Height - Starthøjde - - - Sync Height - Synkroniseringshøjde - - - Ban Score - Bandlysningsscore - - - Connection Time - Forbindelsestid - - - Last Send - Seneste afsendelse - - - Last Receive - Seneste modtagelse - - - Bytes Sent - Byte sendt - - - Bytes Received - Byte modtaget - - - Ping Time - Ping-tid - - - Time Offset - Tidsforskydning - - - Last block time - Tidsstempel for seneste blok - - - &Open - &Ã…bn - - - &Console - &Konsol - - - &Network Traffic - &Netværkstrafik - - - &Clear - &Ryd - - - Totals - Totaler - - - In: - Indkommende: - - - Out: - UdgÃ¥ende: - - - Build date - Byggedato - - - Debug log file - Fejlsøgningslogfil - - - Clear console - Ryd konsol - - - Welcome to the Bitcoin Core RPC console. - Velkommen til Bitcoin Cores RPC-konsol. - - - Use up and down arrows to navigate history, and <b>Ctrl-L</b> to clear screen. - Brug op- og ned-piletasterne til at navigere i historikken og <b>Ctrl-L</b> til at rydde skærmen. - - - Type <b>help</b> for an overview of available commands. - Tast <b>help</b> for en oversigt over de tilgængelige kommandoer. - - - %1 B - %1 B - - - %1 KB - %1 KB - - - %1 MB - %1 MB - - - %1 GB - %1 GB - - - via %1 - via %1 - - - never - aldrig - - - Inbound - Indkommende - - - Outbound - UdgÃ¥ende - - - Unknown - Ukendt - - - Fetching... - Henter… - - - - ReceiveCoinsDialog - - &Amount: - &Beløb: - - - &Label: - &Mærkat: - - - &Message: - &Besked: - - - Reuse one of the previously used receiving addresses. Reusing addresses has security and privacy issues. Do not use this unless re-generating a payment request made before. - Genbrug en af de tidligere brugte modtagelsesadresser. Genbrug af adresser har indflydelse pÃ¥ sikkerhed og privatliv. Brug ikke dette med mindre du genskaber en betalingsanmodning fra tidligere. - - - R&euse an existing receiving address (not recommended) - &Genbrug en eksisterende modtagelsesadresse (anbefales ikke) - - - An optional message to attach to the payment request, which will be displayed when the request is opened. Note: The message will not be sent with the payment over the Bitcoin network. - En valgfri besked, der føjes til betalingsanmodningen, og som vil vises, nÃ¥r anmodningen Ã¥bnes. Bemærk: Beskeden vil ikke sendes sammen med betalingen over Bitcoin-netværket. - - - An optional label to associate with the new receiving address. - Et valgfrit mærkat, der associeres med den nye modtagelsesadresse. - - - Use this form to request payments. All fields are <b>optional</b>. - Brug denne formular for at anmode om betalinger. Alle felter er <b>valgfri</b>. - - - An optional amount to request. Leave this empty or zero to not request a specific amount. - Et valgfrit beløb til anmodning. Lad dette felt være tomt eller indeholde nul for at anmode om et ikke-specifikt beløb. - - - Clear all fields of the form. - Ryd alle felter af formen. - - - Clear - Ryd - - - Requested payments history - Historik over betalingsanmodninger - - - &Request payment - &Anmod om betaling - - - Show the selected request (does the same as double clicking an entry) - Vis den valgte anmodning (gør det samme som dobbeltklik pÃ¥ en indgang) - - - Show - Vis - - - Remove the selected entries from the list - Fjern de valgte indgange fra listen - - - Remove - Fjern - - - Copy label - Kopiér mærkat - - - Copy message - Kopiér besked - - - Copy amount - Kopier beløb - - - - ReceiveRequestDialog - - QR Code - QR-kode - - - Copy &URI - Kopiér &URI - - - Copy &Address - Kopiér &adresse - - - &Save Image... - &Gem billede… - - - Request payment to %1 - Anmod om betaling til %1 - - - Payment information - Betalingsinformation - - - URI - URI - - - Address - Adresse - - - Amount - Beløb - - - Label - Mærkat - - - Message - Besked - - - Resulting URI too long, try to reduce the text for label / message. - Resulterende URI var for lang; prøv at forkorte teksten til mærkaten/beskeden. - - - Error encoding URI into QR Code. - Fejl ved kodning fra URI til QR-kode. - - - - RecentRequestsTableModel - - Date - Dato - - - Label - Mærkat - - - Message - Besked - - - Amount - Beløb - - - (no label) - (ingen mærkat) - - - (no message) - (ingen besked) - - - (no amount) - (intet beløb) - - - - SendCoinsDialog - - Send Coins - Send bitcoins - - - Coin Control Features - Egenskaber for coin-styring - - - Inputs... - Inputs… - - - automatically selected - valgt automatisk - - - Insufficient funds! - Utilstrækkelige midler! - - - Quantity: - Mængde: - - - Bytes: - Byte: - - - Amount: - Beløb: - - - Priority: - Prioritet: - - - Fee: - Gebyr: - - - After Fee: - Efter gebyr: - - - Change: - Byttepenge: - - - If this is activated, but the change address is empty or invalid, change will be sent to a newly generated address. - Hvis dette aktiveres, men byttepengeadressen er tom eller ugyldig, vil byttepenge blive sendt til en nygenereret adresse. - - - Custom change address - Tilpasset byttepengeadresse - - - Transaction Fee: - Transaktionsgebyr: - - - Choose... - Vælg… - - - collapse fee-settings - sammenfold gebyropsætning - - - per kilobyte - pr. kilobyte - - - 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. - Hvis det brugertilpassede gebyr er sat til 1000 satoshis, og transaktionen kun fylder 250 byte, betaler "pr. kilobyte" kun 250 satoshis i gebyr, mens "total mindst" betaler 1000 satoshis. For transaktioner større end en kilobyte betaler begge pr. kilobyte. - - - Hide - Skjul - - - total at least - total mindst - - - 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. - Det er helt fint kun at betale det minimale gebyr, sÃ¥ længe den totale transaktionsvolumen er mindre end den plads, der er tilgængelig i blokkene. Men vær opmærksom pÃ¥, at dette kan ende ud i transaktioner, der aldrig bliver bekræftet, nÃ¥r der bliver større forespørgsel efter bitcoin-transaktioner, end hvad netværket kan bearbejde. - - - (read the tooltip) - (læs værktøjstippet) - - - Recommended: - Anbefalet: - - - Custom: - Brugertilpasset: - - - (Smart fee not initialized yet. This usually takes a few blocks...) - (Smart-gebyr er ikke initialiseret endnu. Dette tager typisk nogle fÃ¥ blokke…) - - - Confirmation time: - Bekræftelsestid: - - - normal - normal - - - fast - hurtig - - - Send as zero-fee transaction if possible - Send som nul-gebyr-transaktion hvis muligt - - - (confirmation may take longer) - (bekræftelse kan tage længere) - - - Send to multiple recipients at once - Send til flere modtagere pÃ¥ en gang - - - Add &Recipient - Tilføj &modtager - - - Clear all fields of the form. - Ryd alle felter af formen. - - - Dust: - Støv: - - - Clear &All - Ryd &alle - - - Balance: - Saldo: - - - Confirm the send action - Bekræft afsendelsen - - - S&end - &Afsend - - - Confirm send coins - Bekræft afsendelse af bitcoins - - - %1 to %2 - %1 til %2 - - - Copy quantity - Kopiér mængde - - - Copy amount - Kopier beløb - - - Copy fee - Kopiér gebyr - - - Copy after fee - Kopiér efter-gebyr - - - Copy bytes - Kopiér byte - - - Copy priority - Kopiér prioritet - - - Copy change - Kopiér byttepenge - - - or - eller - - - The amount to pay must be larger than 0. - Beløbet til betaling skal være større end 0. - - - The amount exceeds your balance. - Beløbet overstiger din saldo. - - - The total exceeds your balance when the %1 transaction fee is included. - Totalen overstiger din saldo, nÃ¥r transaktionsgebyret pÃ¥ %1 er inkluderet. - - - Transaction creation failed! - Oprettelse af transaktion mislykkedes! - - - 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. - 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. - - - A fee higher than %1 is considered an absurdly high fee. - Et gebyr højere end %1 opfattes som et absurd højt gebyr. - - - Payment request expired. - Betalingsanmodning er udløbet. - - - Estimated to begin confirmation within %n block(s). - Bekræftelse estimeres til at begynde inden for %n blok.Bekræftelse estimeres til at begynde inden for %n blokke. - - - Pay only the minimum fee of %1 - Betal kun det minimale gebyr pÃ¥ %1 - - - Total Amount %1<span style='font-size:10pt;font-weight:normal;'><br />(=%2)</span> - Totalbeløb %1<span style='font-size:10pt;font-weight:normal;'><br />(=%2)</span> - - - The recipient address is not valid. Please recheck. - Modtageradressen er ikke gyldig. Tjek venligst igen. - - - Duplicate address found: addresses should only be used once each. - Adressegenganger fundet. Adresser bør kun bruges én gang hver. - - - Warning: Invalid Bitcoin address - Advarsel: Ugyldig Bitcoin-adresse - - - (no label) - (ingen mærkat) - - - Warning: Unknown change address - Advarsel: Ukendt byttepengeadresse - - - Copy dust - Kopiér støv - - - Are you sure you want to send? - Er du sikker pÃ¥, at du vil sende? - - - added as transaction fee - tilføjet som transaktionsgebyr - - - - SendCoinsEntry - - A&mount: - &Beløb: - - - Pay &To: - Betal &til: - - - Enter a label for this address to add it to your address book - Indtast en mærkat for denne adresse for at føje den til din adressebog - - - &Label: - &Mærkat: - - - Choose previously used address - Vælg tidligere brugt adresse - - - This is a normal payment. - Dette er en normal betaling. - - - The Bitcoin address to send the payment to - Bitcoin-adresse, som betalingen skal sendes til - - - Alt+A - Alt+A - - - Paste address from clipboard - Indsæt adresse fra udklipsholderen - - - Alt+P - Alt+P - - - Remove this entry - Fjern denne indgang - - - The fee will be deducted from the amount being sent. The recipient will receive less bitcoins than you enter in the amount field. If multiple recipients are selected, the fee is split equally. - Gebyret vil blive trukket fra det sendte beløb. Modtageren vil modtage færre bitcoin, end du indtaster i beløbfeltet. Hvis flere modtagere vælges, vil gebyret deles ligeligt. - - - S&ubtract fee from amount - &Træk gebyr fra beløb - - - Message: - Besked: - - - This is an unauthenticated payment request. - Dette er en uautentificeret betalingsanmodning. - - - This is an authenticated payment request. - Dette er en autentificeret betalingsanmodning. - - - Enter a label for this address to add it to the list of used addresses - Indtast et mærkat for denne adresse for at føje den til listen over brugte adresser - - - A message that was attached to the bitcoin: URI which will be stored with the transaction for your reference. Note: This message will not be sent over the Bitcoin network. - En besked, som blev føjet til "bitcon:"-URI'en, som vil gemmes med transaktionen til din reference. Bemærk: Denne besked vil ikke blive sendt over Bitcoin-netværket. - - - Pay To: - Betal til: - - - Memo: - Memo: - - - - ShutdownWindow - - Bitcoin Core is shutting down... - Bitcoin Core lukker ned… - - - Do not shut down the computer until this window disappears. - Luk ikke computeren ned, før dette vindue forsvinder. - - - - SignVerifyMessageDialog - - Signatures - Sign / Verify a Message - Signature - Underskriv/verificér en besked - - - &Sign Message - &Underskriv besked - - - You can sign messages/agreements with your addresses to prove you can receive bitcoins sent to them. Be careful not to sign anything vague or random, as phishing attacks may try to trick you into signing your identity over to them. Only sign fully-detailed statements you agree to. - Du kan signere beskeder/aftaler med dine adresser for at bevise, at du kan modtage bitcoin, der bliver sendt til adresserne. Vær forsigtig med ikke at signere noget vagt eller tilfældigt, da eventuelle phishing-angreb kan snyde dig til at overlade din identitet til dem. Signér kun fuldt ud detaljerede udsagn, som du er enig i. - - - The Bitcoin address to sign the message with - Bitcoin-adresse, som beskeden skal signeres med - - - Choose previously used address - Vælg tidligere brugt adresse - - - Alt+A - Alt+A - - - Paste address from clipboard - Indsæt adresse fra udklipsholderen - - - Alt+P - Alt+P - - - Enter the message you want to sign here - Indtast her beskeden, du ønsker at underskrive - - - Signature - Underskrift - - - Copy the current signature to the system clipboard - Kopiér den nuværende underskrift til systemets udklipsholder - - - Sign the message to prove you own this Bitcoin address - Underskriv denne besked for at bevise, at Bitcoin-adressen tilhører dig - - - Sign &Message - Underskriv &besked - - - Reset all sign message fields - Nulstil alle "underskriv besked"-felter - - - Clear &All - Ryd &alle - - - &Verify Message - &Verificér besked - - - Enter the receiver's address, message (ensure you copy line breaks, spaces, tabs, etc. exactly) and signature below to verify the message. Be careful not to read more into the signature than what is in the signed message itself, to avoid being tricked by a man-in-the-middle attack. Note that this only proves the signing party receives with the address, it cannot prove sendership of any transaction! - Indtast modtagerens adresse, besked (vær sikker pÃ¥ at kopiere linjeskift, mellemrum, tabuleringer, etc. præcist) og signatur herunder for at verificere beskeden. Vær forsigtig med ikke at læse noget ud fra signaturen, som ikke stÃ¥r i selve beskeden, for at undgÃ¥ at blive snydt af et eventuelt man-in-the-middle-angreb. Bemærk, at dette kun beviser, at den signerende person kan modtage med adressen; det kan ikke bevise hvem der har sendt en given transaktion! - - - The Bitcoin address the message was signed with - Bitcoin-adressen, som beskeden blev signeret med - - - Verify the message to ensure it was signed with the specified Bitcoin address - Verificér beskeden for at sikre, at den er underskrevet med den angivne Bitcoin-adresse - - - Verify &Message - Verificér &besked - - - Reset all verify message fields - Nulstil alle "verificér besked"-felter - - - Click "Sign Message" to generate signature - Klik "Underskriv besked" for at generere underskriften - - - The entered address is invalid. - Den indtastede adresse er ugyldig. - - - Please check the address and try again. - Tjek venligst adressen og forsøg igen. - - - The entered address does not refer to a key. - Den indtastede adresse henviser ikke til en nøgle. - - - Wallet unlock was cancelled. - TegnebogsoplÃ¥sning annulleret. - - - Private key for the entered address is not available. - Den private nøgle for den indtastede adresse er ikke tilgængelig. - - - Message signing failed. - Underskrivning af besked mislykkedes. - - - Message signed. - Besked underskrevet. - - - The signature could not be decoded. - Underskriften kunne ikke afkodes. - - - Please check the signature and try again. - Tjek venligst underskriften, og forsøg igen. - - - The signature did not match the message digest. - Underskriften matcher ikke beskedens indhold. - - - Message verification failed. - Verificering af besked mislykkedes. - - - Message verified. - Besked verificeret. - - - - SplashScreen - - Bitcoin Core - Bitcoin Core - - - The Bitcoin Core developers - Udviklerne af Bitcoin Core - - - [testnet] - [testnetværk] - - - - TrafficGraphWidget - - KB/s - KB/s - - - - TransactionDesc - - Open until %1 - Ã…ben indtil %1 - - - conflicted - konflikt - - - %1/offline - %1/offline - - - %1/unconfirmed - %1/ubekræftet - - - %1 confirmations - %1 bekræftelser - - - Status - Status - - - , broadcast through %n node(s) - , transmitteret igennem %n knude, transmitteret igennem %n knuder - - - Date - Dato - - - Source - Kilde - - - Generated - Genereret - - - From - Fra - - - To - Til - - - own address - egen adresse - - - watch-only - kigge - - - label - mærkat - - - Credit - Kredit - - - matures in %n more block(s) - modner efter yderligere %n blokmodner efter yderligere %n blokke - - - not accepted - ikke accepteret - - - Debit - Debet - - - Total debit - Total debet - - - Total credit - Total kredit - - - Transaction fee - Transaktionsgebyr - - - Net amount - Nettobeløb - - - Message - Besked - - - Comment - Kommentar - - - Transaction ID - Transaktions-ID - - - Merchant - Forretningsdrivende - - - Generated coins must mature %1 blocks before they can be spent. When you generated this block, it was broadcast to the network to be added to the block chain. If it fails to get into the chain, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - Minede bitcoins skal modne %1 blokke, før de kan bruges. Da du genererede denne blok, blev den transmitteret til netværket for at blive føjet til blokkæden. Hvis det ikke lykkes at fÃ¥ den i kæden, vil dens tilstand ændres til "ikke accepteret", og den vil ikke kunne bruges. Dette kan ske nu og da, hvis en anden knude udvinder en blok inden for nogle fÃ¥ sekunder fra din. - - - Debug information - Fejlsøgningsinformation - - - Transaction - Transaktion - - - Inputs - Input - - - Amount - Beløb - - - true - sand - - - false - falsk - - - , has not been successfully broadcast yet - , er ikke blevet transmitteret endnu - - - Open for %n more block(s) - Ã…bn yderligere %n blokÃ…bn yderligere %n blokke - - - unknown - ukendt - - - - TransactionDescDialog - - Transaction details - Transaktionsdetaljer - - - This pane shows a detailed description of the transaction - Denne rude viser en detaljeret beskrivelse af transaktionen - - - - TransactionTableModel - - Date - Dato - - - Type - Type - - - Immature (%1 confirmations, will be available after %2) - Umoden (%1 bekræftelser; vil være tilgængelig efter %2) - - - Open for %n more block(s) - Ã…bn yderligere %n blokÃ…bn yderligere %n blokke - - - Open until %1 - Ã…ben indtil %1 - - - Confirmed (%1 confirmations) - Bekræftet (%1 bekræftelser) - - - This block was not received by any other nodes and will probably not be accepted! - Denne blok blev ikke modtaget af nogen andre knuder og vil formentlig ikke blive accepteret! - - - Generated but not accepted - Genereret, men ikke accepteret - - - Offline - Offline - - - Label - Mærkat - - - Unconfirmed - Ubekræftet - - - Confirming (%1 of %2 recommended confirmations) - Bekræfter (%1 af %2 anbefalede bekræftelser) - - - Conflicted - Konflikt - - - Received with - Modtaget med - - - Received from - Modtaget fra - - - Sent to - Sendt til - - - Payment to yourself - Betaling til dig selv - - - Mined - Minet - - - watch-only - kigge - - - (n/a) - (n/a) - - - Transaction status. Hover over this field to show number of confirmations. - Transaktionsstatus. Hold musen over dette felt for at vise antallet af bekræftelser. - - - Date and time that the transaction was received. - Dato og klokkeslæt for modtagelse af transaktionen. - - - Type of transaction. - Transaktionstype. - - - Whether or not a watch-only address is involved in this transaction. - Afgør hvorvidt en kigge-adresse er involveret i denne transaktion. - - - User-defined intent/purpose of the transaction. - Brugerdefineret hensigt/formÃ¥l med transaktionen. - - - Amount removed from or added to balance. - Beløb trukket fra eller tilføjet balance. - - - - TransactionView - - All - Alle - - - Today - I dag - - - This week - Denne uge - - - This month - Denne mÃ¥ned - - - Last month - Sidste mÃ¥ned - - - This year - Dette Ã¥r - - - Range... - Interval… - - - Received with - Modtaget med - - - Sent to - Sendt til - - - To yourself - Til dig selv - - - Mined - Minet - - - Other - Andet - - - Enter address or label to search - Indtast adresse eller mærkat for at søge - - - Min amount - Minimumsbeløb - - - Copy address - Kopiér adresse - - - Copy label - Kopiér mærkat - - - Copy amount - Kopiér beløb - - - Copy transaction ID - Kopiér transaktions-ID - - - Edit label - Redigér mærkat - - - Show transaction details - Vis transaktionsdetaljer - - - Export Transaction History - Historik for eksport af transaktioner - - - Watch-only - Kigge - - - Exporting Failed - Eksport mislykkedes - - - There was an error trying to save the transaction history to %1. - En fejl opstod under gemning af transaktionshistorik til %1. - - - Exporting Successful - Eksport problemfri - - - The transaction history was successfully saved to %1. - Transaktionshistorikken blev gemt til %1 med succes. - - - Comma separated file (*.csv) - Kommasepareret fil (*.csv) - - - Confirmed - Bekræftet - - - Date - Dato - - - Type - Type - - - Label - Mærkat - - - Address - Adresse - - - ID - ID - - - Range: - Interval: - - - to - til - - - - UnitDisplayStatusBarControl - - Unit to show amounts in. Click to select another unit. - Enhed, som beløb vises i. Klik for at vælge en anden enhed. - - - - WalletFrame - - No wallet has been loaded. - Ingen tegnebog er indlæst. - - - - WalletModel - - Send Coins - Send bitcoins - - - - WalletView - - &Export - &Eksportér - - - Export the data in the current tab to a file - Eksportér den aktuelle visning til en fil - - - Backup Wallet - Sikkerhedskopiér tegnebog - - - Wallet Data (*.dat) - Tegnebogsdata (*.dat) - - - Backup Failed - Sikkerhedskopiering mislykkedes - - - There was an error trying to save the wallet data to %1. - Der skete en fejl under gemning af tegnebogsdata til %1. - - - The wallet data was successfully saved to %1. - Tegnebogsdata blev gemt til %1 med succes. - - - Backup Successful - Sikkerhedskopiering problemfri - - - - bitcoin-core - - Options: - Indstillinger: - - - Specify data directory - Angiv datamappe - - - Connect to a node to retrieve peer addresses, and disconnect - Forbind til en knude for at modtage adresser pÃ¥ andre knuder, og afbryd derefter - - - Specify your own public address - Angiv din egen offentlige adresse - - - Accept command line and JSON-RPC commands - Acceptér kommandolinje- og JSON-RPC-kommandoer - - - Run in the background as a daemon and accept commands - Kør i baggrunden som en service, og acceptér kommandoer - - - Use the test network - Brug testnetværket - - - Accept connections from outside (default: 1 if no -proxy or -connect) - Acceptér forbindelser udefra (standard: 1 hvis hverken -proxy eller -connect) - - - Bind to given address and always listen on it. Use [host]:port notation for IPv6 - Tildel til den givne adresse og lyt altid pÃ¥ den. Brug [vært]:port-notation for IPv6 - - - Delete all wallet transactions and only recover those parts of the blockchain through -rescan on startup - Slet alle transaktioner i tegnebogen og genskab kun disse dele af blokkæden gennem -rescan under opstart - - - Distributed under the MIT software license, see the accompanying file COPYING or <http://www.opensource.org/licenses/mit-license.php>. - Distribueret under MIT-softwarelicensen; se den vedlagte fil COPYING eller <http://www.opensource.org/licenses/mit-license.php>. - - - Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) - Udfør kommando, nÃ¥r en transaktion i tegnebogen ændres (%s i kommandoen erstattes med TxID) - - - Maximum total fees to use in a single wallet transaction; setting this too low may abort large transactions (default: %s) - Maksimalt totalt gebyr der kan bruges i en enkelt tegnebogstransaktion. For lav en værdi kan afbryde store transaktioner (standard: %s) - - - Reduce storage requirements by pruning (deleting) old blocks. This mode disables wallet support and is incompatible with -txindex. Warning: Reverting this setting requires re-downloading the entire blockchain. (default: 0 = disable pruning blocks, >%u = target size in MiB to use for block files) - Reducér pladskravene ved at beskære (slette, "prune") gamle blokke. Denne tilstand slÃ¥r understøttelse af tegnebogen fra og er ikke kompatibel med -txindex. Advarsel: Fortrydelse af denne indstilling kræver download af hele blokkæden igen. (standard: 0 = slÃ¥ beskæring af blokke fra, >%u = mÃ¥lstørrelse i MiB der skal bruges til blokfiler) - - - Set the number of script verification threads (%u to %d, 0 = auto, <0 = leave that many cores free, default: %d) - Sæt antallet af scriptverificeringstrÃ¥de (%u til %d, 0 = auto, <0 = efterlad det antal kernet fri, standard: %d) - - - This is a pre-release test build - use at your own risk - do not use for mining or merchant applications - Dette er en foreløbig testudgivelse - brug pÃ¥ eget ansvar - brug ikke til udvinding eller handelsprogrammer - - - Unable to bind to %s on this computer. Bitcoin Core is probably already running. - Ikke i stand til at tildele til %s pÃ¥ denne computer. Bitcoin Core kører sansynligvis allerede. - - - WARNING: abnormally high number of blocks generated, %d blocks received in the last %d hours (%d expected) - ADVARSEL: unormalt mange blokke er genereret; %d blokke er modtaget i løbet af de seneste %d timer (%d forventet) - - - WARNING: check your network connection, %d blocks received in the last %d hours (%d expected) - ADVARSEL: tjek din netværksforbindelse; %d blokke er modtaget i løbet af de seneste %d timer (%d forventet) - - - Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. - Advarsel: -paytxfee er sat meget højt! Dette er det gebyr du vil betale, hvis du sender en transaktion. - - - Warning: The network does not appear to fully agree! Some miners appear to be experiencing issues. - Advarsel: Netværket ser ikke ud til at være fuldt ud enige! Enkelte minere ser ud til at opleve problemer. - - - Warning: We do not appear to fully agree with our peers! You may need to upgrade, or other nodes may need to upgrade. - Advarsel: Vi ser ikke ud til at være fuldt ud enige med andre knuder! Du kan være nødt til at opgradere, eller andre knuder kan være nødt til at opgradere. - - - Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. - Advarsel: fejl under læsning af wallet.dat! Alle nøgler blev læst korrekt, men transaktionsdata eller adressebogsposter kan mangle eller være forkerte. - - - 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. - Advarsel: wallet.dat ødelagt, data reddet! Oprindelig wallet.dat gemt som wallet.{timestamp}.bak i %s; hvis din saldo eller dine transaktioner er forkert, bør du genskabe fra en sikkerhedskopi. - - - Whitelist peers connecting from the given netmask or IP address. Can be specified multiple times. - Sæt andre knuder, der forbinder fra den angivne netmaske eller IP, pÃ¥ hvidliste. Kan angives flere gange. - - - (default: 1) - (standard: 1) - - - <category> can be: - <kategori> kan være: - - - Attempt to recover private keys from a corrupt wallet.dat - Forsøg at genskabe private nøgler fra ødelagt wallet.dat - - - Block creation options: - Blokoprettelsestilvalg: - - - Connect only to the specified node(s) - Tilslut kun til de(n) angivne knude(r) - - - Connection options: - Tilvalg for forbindelser: - - - Corrupted block database detected - Ødelagt blokdatabase opdaget - - - Debugging/Testing options: - Tilvalg for fejlfinding/test: - - - Do not load the wallet and disable wallet RPC calls - Indlæs ikke tegnebogen og slÃ¥ tegnebogs-RPC-kald fra - - - Do you want to rebuild the block database now? - Ønsker du at genopbygge blokdatabasen nu? - - - Error initializing block database - Klargøring af blokdatabase mislykkedes - - - Error initializing wallet database environment %s! - Klargøring af tegnebogsdatabasemiljøet %s mislykkedes! - - - Error loading block database - Indlæsning af blokdatabase mislykkedes - - - Error opening block database - Ã…bning af blokdatabase mislykkedes - - - Error: Disk space is low! - Fejl: Mangel pÃ¥ ledig diskplads! - - - Failed to listen on any port. Use -listen=0 if you want this. - Lytning pÃ¥ enhver port mislykkedes. Brug -listen=0, hvis du ønsker dette. - - - If <category> is not supplied, output all debugging information. - Hvis <kategori> ikke angives, udskriv al fejlsøgningsinformation. - - - Importing... - Importerer… - - - Incorrect or no genesis block found. Wrong datadir for network? - Ukorrekt eller ingen tilblivelsesblok fundet. Forkert datamappe for netværk? - - - Invalid -onion address: '%s' - Ugyldig -onion adresse: "%s" - - - Not enough file descriptors available. - For fÃ¥ tilgængelige fildeskriptorer. - - - Only connect to nodes in network <net> (ipv4, ipv6 or onion) - Tilslut kun til knuder i netværk <net> (IPv4, IPv6 eller Onion) - - - Prune cannot be configured with a negative value. - Beskæring kan ikke opsættes med en negativ værdi. - - - Prune mode is incompatible with -txindex. - Beskæringstilstand er ikke kompatibel med -txindex. - - - Set database cache size in megabytes (%d to %d, default: %d) - Sæt cache-størrelse for database i megabytes (%d til %d; standard: %d) - - - Set maximum block size in bytes (default: %d) - Sæt maksimum blokstørrelse i byte (standard: %d) - - - Specify wallet file (within data directory) - Angiv tegnebogsfil (inden for datamappe) - - - Use UPnP to map the listening port (default: %u) - Brug UPnP til at konfigurere den lyttende port (standard: %u) - - - Verifying blocks... - Verificerer blokke… - - - Verifying wallet... - Verificerer tegnebog… - - - Wallet %s resides outside data directory %s - Tegnebog %s findes uden for datamappe %s - - - Wallet options: - Tilvalg for tegnebog: - - - Warning: This version is obsolete; upgrade required! - Advarsel: Denne version er forældet; opgradering pÃ¥krævet! - - - You need to rebuild the database using -reindex to change -txindex - Du er nødt til at genopbygge databasen ved hjælp af -reindex for at ændre -txindex - - - Imports blocks from external blk000??.dat file - Importerer blokke fra ekstern blk000??.dat fil - - - 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 - Tillad JSON-RPC-forbindelser fra angivet kilde. Gyldig for <ip> er en enkelt IP (fx 1.2.3.4), et netværk/netmaske (fx 1.2.3.4/255.255.255.0) eller et netværk/CIDR (fx 1.2.3.4/24). Dette tilvalg kan angives flere gange - - - An error occurred while setting up the RPC address %s port %u for listening: %s - Der opstod en fejl under opsætning af RPC-adresse %s port %u for lytning: %s - - - Bind to given address and whitelist peers connecting to it. Use [host]:port notation for IPv6 - Tildel given adresse og sæt andre knuder, der forbinder til den, pÃ¥ hvidliste. Brug [vært]:port notation for IPv6 - - - Bind to given address to listen for JSON-RPC connections. Use [host]:port notation for IPv6. This option can be specified multiple times (default: bind to all interfaces) - Tildel til den givne adresse for at lytte efter JSON-RPC-forbindelser. Brug [vært]:port-notation for IPv6. Denne valgmulighed kan angives flere gange (standard: tildel til alle grænseflader) - - - Cannot obtain a lock on data directory %s. Bitcoin Core is probably already running. - Kan ikke opnÃ¥ en lÃ¥s pÃ¥ datamappe %s. Bitcoin Core kører sansynligvis allerede. - - - Create new files with system default permissions, instead of umask 077 (only effective with disabled wallet functionality) - Opret nye filer med systemstandard for rettigheder i stedet for umask 077 (kun virksomt med tegnebogsfunktionalitet slÃ¥et fra) - - - Discover own IP addresses (default: 1 when listening and no -externalip or -proxy) - Opdag egne IP-adresser (standard: 1 under lytning og ingen -externalip eller -proxy) - - - Error: Listening for incoming connections failed (listen returned error %s) - Fejl: Lytning efter indkommende forbindelser mislykkedes (lytning resultarede i fejl %s) - - - Error: Unsupported argument -socks found. Setting SOCKS version isn't possible anymore, only SOCKS5 proxies are supported. - Fejl: Ikke understøttet argument -socks blev fundet. Det er ikke muligt at angive SOCKS-version længere, da kun SOCKS5-proxier er understøttet. - - - Execute command when a relevant alert is received or we see a really long fork (%s in cmd is replaced by message) - Udfør kommando, nÃ¥r en relevant alarm modtages eller vi ser en virkelig lang udsplitning (%s i cmd erstattes af besked) - - - Fees (in BTC/Kb) smaller than this are considered zero fee for relaying (default: %s) - Gebyrer (i BTC/Kb) mindre end dette opfattes som nulgebyr for videresendelse (standard: %s) - - - If paytxfee is not set, include enough fee so transactions begin confirmation on average within n blocks (default: %u) - Hvis paytxfee ikke er sat, inkluderes nok gebyr til at transaktioner begynder at blive bekræftet ingen for gennemsnitligt n blokke (standard: %u) - - - Invalid amount for -maxtxfee=<amount>: '%s' (must be at least the minrelay fee of %s to prevent stuck transactions) - Ugyldigt beløb for -maxtxfee=<beløb>: "%s" (skal være pÃ¥ mindst minrelay-gebyret pÃ¥ %s for at undgÃ¥ hængende transaktioner) - - - Maximum size of data in data carrier transactions we relay and mine (default: %u) - Maksimal størrelse pÃ¥ data i transaktioner til dataoverførsel, som vi videresender og miner (standard: %u) - - - Prune configured below the minimum of %d MB. Please use a higher number. - Beskæring opsat under minimumsværdien %d MB. Brug venligst en højere værdi. - - - Query for peer addresses via DNS lookup, if low on addresses (default: 1 unless -connect) - Forespørgsel - - - Randomize credentials for every proxy connection. This enables Tor stream isolation (default: %u) - Brug tilfældige akkreditiver for hver proxy-forbindelse. Dette tillader strømisolation med Tor (standard: %u) - - - Set maximum size of high-priority/low-fee transactions in bytes (default: %d) - Sæt maksimumstørrelse for højprioritet/lavgebyr-transaktioner i byte (standard: %d) - - - Set the number of threads for coin generation if enabled (-1 = all cores, default: %d) - Sæt antaller af trÃ¥de for coin-generering, hvis aktiveret (-1 = alle kerner, standard: %d) - - - The transaction amount is too small to send after the fee has been deducted - Transaktionsbeløbet er for lille til at sende, nÃ¥r gebyret er trukket fra - - - 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. - 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. - - - 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 - - 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 - - - - Warning: -maxtxfee is set very high! Fees this large could be paid on a single transaction. - Advarsel: -maxtxfee er sat meget højt! SÃ¥ store gebyrer kan betales pÃ¥ en enkelt transaktion. - - - Warning: Please check that your computer's date and time are correct! If your clock is wrong Bitcoin Core will not work properly. - 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. - - - 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 - 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 - - - You need to rebuild the database using -reindex to go back to unpruned mode. This will redownload the entire blockchain - Du er nødt til at genopbygge databasen ved hjælp af -reindex for at gÃ¥ tilbage til ikke-beskÃ¥ret tilstand. Dette vil downloade hele blokkæden igen - - - (default: %u) - (standard: %u) - - - Accept public REST requests (default: %u) - Acceptér offentlige REST-anmodninger (standard: %u) - - - Activating best chain... - Aktiverer bedste kæde… - - - Can't run with a wallet in prune mode. - Kan ikke køre med en tegnebog i beskÃ¥ret tilstand. - - - Cannot resolve -whitebind address: '%s' - Kan ikke løse -whitebind adresse: "%s" - - - Choose data directory on startup (default: 0) - Vælg datamappe ved opstart (standard: 0) - - - Connect through SOCKS5 proxy - Forbind gennem SOCKS5-proxy - - - Copyright (C) 2009-%i The Bitcoin Core Developers - Ophavsret © 2009-%i Udviklerne af Bitcoin Core - - - Could not parse -rpcbind value %s as network address - Kunne ikke tolke -rpcbind-værdi %s som en netværksadresse - - - Error loading wallet.dat: Wallet requires newer version of Bitcoin Core - Fejl ved indlæsning af wallet.dat: Tegnebog kræver en nyere version af Bitcoin Core - - - Error reading from database, shutting down. - Fejl under læsning fra database; lukker ned. - - - Error: A fatal internal error occurred, see debug.log for details - Fejl: En alvorlig intern fejl er opstÃ¥et. Se debug.log for detaljer - - - Error: Unsupported argument -tor found, use -onion. - Fejl: Ikke understøttet argument -tor fundet, brug -onion. - - - Fee (in BTC/kB) to add to transactions you send (default: %s) - Gebyr (i BTC/kB) som skal føjes til transaktioner, du sender (standard: %s) - - - Information - Information - - - Initialization sanity check failed. Bitcoin Core is shutting down. - Sundhedstjek under klargøring mislykkedes. Bitcoin Core lukker ned. - - - Invalid amount for -maxtxfee=<amount>: '%s' - Ugyldigt beløb for -maxtxfee=<beløb>: "%s" - - - Invalid amount for -minrelaytxfee=<amount>: '%s' - Ugyldigt beløb til -minrelaytxfee=<beløb>: "%s" - - - Invalid amount for -mintxfee=<amount>: '%s' - Ugyldigt beløb til -mintxfee=<beløb>: "%s" - - - Invalid amount for -paytxfee=<amount>: '%s' (must be at least %s) - Ugyldigt beløb for -paytxfee=<beløb>: "%s" (skal være mindst %s) - - - Invalid netmask specified in -whitelist: '%s' - Ugyldig netmaske angivet i -whitelist: "%s" - - - Keep at most <n> unconnectable transactions in memory (default: %u) - Behold højest <n> uforbindelige transaktioner i hukommelsen (standard: %u) - - - Need to specify a port with -whitebind: '%s' - Nødt til at angive en port med -whitebinde: "%s" - - - Node relay options: - Videresendelsesvalgmuligheder for knude: - - - Pruning blockstore... - Beskærer bloklager… - - - RPC SSL options: (see the Bitcoin Wiki for SSL setup instructions) - Tilvalg for RPC SSL: (se Bitcoin Wiki for instruktioner i SSL-opstart) - - - RPC server options: - Tilvalg for RPC-server: - - - RPC support for HTTP persistent connections (default: %d) - RPC-understøttelse for HTTP-persistente forbindelser (standard: %d) - - - Rebuild block chain index from current blk000??.dat files on startup - Genopbyg blokkædeindeks fra nuværende blk000??.dat-filer ved opstart - - - Receive and display P2P network alerts (default: %u) - Modtag og vis P2P-netværksadvarsler (standard: %u) - - - Send trace/debug info to console instead of debug.log file - Send sporings-/fejlsøgningsinformation til konsollen i stedet for debug.log filen - - - Send transactions as zero-fee transactions if possible (default: %u) - Send transaktioner som nul-gebyr-transaktioner hvis muligt (standard: %u) - - - Set SSL root certificates for payment request (default: -system-) - Sæt SSL-rodcertifikater for betalingsanmodning (standard: -system-) - - - Set language, for example "de_DE" (default: system locale) - Angiv sprog, fx "da_DK" (standard: systemlokalitet) - - - Show all debugging options (usage: --help -help-debug) - Vis alle tilvalg for fejlsøgning (brug: --help -help-debug) - - - Show splash screen on startup (default: 1) - Vis opstartsbillede ved opstart (standard: 1) - - - Shrink debug.log file on client startup (default: 1 when no -debug) - Formindsk debug.log filen ved klientopstart (standard: 1 hvis ikke -debug) - - - Signing transaction failed - Underskrift af transaktion mislykkedes - - - Start minimized - Start minimeret - - - The transaction amount is too small to pay the fee - Transaktionsbeløbet er for lille til at betale gebyret - - - This is experimental software. - Dette er eksperimentelt software. - - - Transaction amount too small - Transaktionsbeløb er for lavt - - - Transaction amounts must be positive - Transaktionsbeløb skal være positive - - - Transaction too large for fee policy - Transaktion for stor til gebyrretningslinjer - - - Transaction too large - Transaktionen er for stor - - - UI Options: - Indstillinger for brugerflade: - - - Unable to bind to %s on this computer (bind returned error %s) - Ikke i stand til at tildele til %s pÃ¥ denne computer (bind returnerede fejl %s) - - - Use UPnP to map the listening port (default: 1 when listening) - Brug UPnP til at konfigurere den lyttende port (standard: 1 under lytning) - - - Username for JSON-RPC connections - Brugernavn til JSON-RPC-forbindelser - - - Wallet needed to be rewritten: restart Bitcoin Core to complete - Det var nødvendigt at genskrive tegnebogen: genstart Bitcoin Core for at gennemføre - - - Warning - Advarsel - - - Warning: Unsupported argument -benchmark ignored, use -debug=bench. - Advarsel: Ikke understøttet argument -benchmark ignoreret, brug -debug=bench. - - - Warning: Unsupported argument -debugnet ignored, use -debug=net. - Advarsel: Ikke understøttet argument -debugnet ignoreret, brug -debug=net. - - - Zapping all transactions from wallet... - Zapper alle transaktioner fra tegnebog… - - - on startup - under opstart - - - wallet.dat corrupt, salvage failed - wallet.dat ødelagt, redning af data mislykkedes - - - Password for JSON-RPC connections - Adgangskode til JSON-RPC-forbindelser - - - Execute command when the best block changes (%s in cmd is replaced by block hash) - Udfør kommando, nÃ¥r den bedste blok ændres (%s i kommandoen erstattes med blokhash) - - - Upgrade wallet to latest format - Opgrader tegnebog til seneste format - - - Rescan the block chain for missing wallet transactions - Gennemsøg blokkæden for manglende tegnebogstransaktioner - - - Use OpenSSL (https) for JSON-RPC connections - Brug OpenSSL (https) for JSON-RPC-forbindelser - - - This help message - Denne hjælpebesked - - - Allow DNS lookups for -addnode, -seednode and -connect - Tillad DNS-opslag for -addnode, -seednode og -connect - - - Loading addresses... - Indlæser adresser… - - - Error loading wallet.dat: Wallet corrupted - Fejl ved indlæsning af wallet.dat: Tegnebog ødelagt - - - (1 = keep tx meta data e.g. account owner and payment request information, 2 = drop tx meta data) - (1 = behold metadata for transaktion, fx kontoindehaver og information om betalingsanmodning, 2 = drop metadata for transaktion) - - - How thorough the block verification of -checkblocks is (0-4, default: %u) - Hvor gennemarbejdet blokverificeringen for -checkblocks er (0-4; standard: %u) - - - Maintain a full transaction index, used by the getrawtransaction rpc call (default: %u) - Vedligehold et komplet transaktionsindeks, der bruges af rpc-kaldet getrawtransaction (standard: %u) - - - Number of seconds to keep misbehaving peers from reconnecting (default: %u) - Antal sekunder, som knuder der opfører sig upassende, skal vente før reetablering (standard: %u) - - - Output debugging information (default: %u, supplying <category> is optional) - Udskriv fejlsøgningsinformation (standard: %u, angivelse af <kategori> er valgfri) - - - Use separate SOCKS5 proxy to reach peers via Tor hidden services (default: %s) - Brug separat SOCS5-proxy for at nÃ¥ andre knuder via Tor skjulte tjenester (standard: %s) - - - (default: %s) - (standard: %s) - - - Acceptable ciphers (default: %s) - Accepterede kodninger (standard: %s) - - - Always query for peer addresses via DNS lookup (default: %u) - Forespørg altid adresser pÃ¥ andre knuder via DNS-opslag (default: %u) - - - Error loading wallet.dat - Fejl ved indlæsning af wallet.dat - - - Generate coins (default: %u) - Generér bitcoins (standard: %u) - - - How many blocks to check at startup (default: %u, 0 = all) - Antal blokke som tjekkes ved opstart (standard: %u, 0 = alle) - - - Include IP addresses in debug output (default: %u) - Inkludér IP-adresser i fejlretningsoutput (standard: %u) - - - Invalid -proxy address: '%s' - Ugyldig -proxy adresse: "%s" - - - Listen for JSON-RPC connections on <port> (default: %u or testnet: %u) - Lyt efter JSON-RPC-forbindelser pÃ¥ <port> (standard: %u eller testnet: %u) - - - Listen for connections on <port> (default: %u or testnet: %u) - Lyt efter forbindelser pÃ¥ <port> (standard: %u eller testnet: %u) - - - Maintain at most <n> connections to peers (default: %u) - Oprethold højest <n> forbindelser til andre knuder (standard: %u) - - - Make the wallet broadcast transactions - FÃ¥ tegnebogen til at transmittere transaktioner - - - Maximum per-connection receive buffer, <n>*1000 bytes (default: %u) - Maksimum for modtagelsesbuffer pr. forbindelse, <n>*1000 byte (standard: %u) - - - Maximum per-connection send buffer, <n>*1000 bytes (default: %u) - Maksimum for afsendelsesbuffer pr. forbindelse, <n>*1000 byte (standard: %u) - - - Prepend debug output with timestamp (default: %u) - Føj tidsstempel foran fejlsøgningsoutput (standard: %u) - - - Relay and mine data carrier transactions (default: %u) - Videresend og udvind databærer-transaktioner (standard: %u) - - - Relay non-P2SH multisig (default: %u) - Videresend ikke-P2SH multisig (standard: %u) - - - Server certificate file (default: %s) - Servercertifikat-fil (standard: %s) - - - - Server private key (default: %s) - Serverens private nøgle (standard: %s) - - - Set key pool size to <n> (default: %u) - Sæt nøglepuljestørrelse til <n> (standard: %u) - - - - Set minimum block size in bytes (default: %u) - Angiv minimumsblokstørrelse i byte (standard: %u) - - - Set the number of threads to service RPC calls (default: %d) - Angiv antallet af trÃ¥de til at hÃ¥ndtere RPC-kald (standard: %d) - - - Specify configuration file (default: %s) - Angiv konfigurationsfil (standard: %s) - - - Specify connection timeout in milliseconds (minimum: 1, default: %d) - Angiv tilslutningstimeout i millisekunder (minimum: 1, standard: %d) - - - Specify pid file (default: %s) - Angiv pid-fil (standard: %s) - - - Spend unconfirmed change when sending transactions (default: %u) - Brug ubekræftede byttepenge under afsendelse af transaktioner (standard: %u) - - - Threshold for disconnecting misbehaving peers (default: %u) - Grænse for afbrydelse af forbindelse til knuder, der opfører sig upassende (standard: %u) - - - Unknown network specified in -onlynet: '%s' - Ukendt netværk anført i -onlynet: "%s" - - - Cannot resolve -bind address: '%s' - Kan ikke finde -bind adressen: "%s" - - - Cannot resolve -externalip address: '%s' - Kan ikke finde -externalip adressen: "%s" - - - Invalid amount for -paytxfee=<amount>: '%s' - Ugyldigt beløb for -paytxfee=<beløb>: "%s" - - - Insufficient funds - Manglende dækning - - - Loading block index... - Indlæser blokindeks… - - - Add a node to connect to and attempt to keep the connection open - Tilføj en knude til at forbinde til og forsøg at holde forbindelsen Ã¥ben - - - Loading wallet... - Indlæser tegnebog… - - - Cannot downgrade wallet - Kan ikke nedgradere tegnebog - - - Cannot write default address - Kan ikke skrive standardadresse - - - Rescanning... - Genindlæser… - - - Done loading - Indlæsning gennemført - - - Error - Fejl - - - \ No newline at end of file diff --git a/src/qt/locale/bitcoin_de.ts b/src/qt/locale/bitcoin_de.ts deleted file mode 100644 index 3cb94b3c7..000000000 --- a/src/qt/locale/bitcoin_de.ts +++ /dev/null @@ -1,3584 +0,0 @@ - - - AddressBookPage - - Right-click to edit address or label - Rechtsklick zum Bearbeiten der Adresse oder der Bezeichnung - - - Create a new address - Eine neue Adresse erstellen - - - &New - &Neu - - - Copy the currently selected address to the system clipboard - Ausgewählte Adresse in die Zwischenablage kopieren - - - &Copy - &Kopieren - - - C&lose - &Schließen - - - &Copy Address - Adresse &kopieren - - - Delete the currently selected address from the list - Ausgewählte Adresse aus der Liste entfernen - - - Export the data in the current tab to a file - Daten der aktuellen Ansicht in eine Datei exportieren - - - &Export - E&xportieren - - - &Delete - &Löschen - - - Choose the address to send coins to - Wählen Sie die Adresse aus, an die Sie Bitcoins überweisen möchten - - - Choose the address to receive coins with - Wählen Sie die Adresse aus, über die Sie Bitcoins empfangen wollen - - - C&hoose - &Auswählen - - - Sending addresses - Zahlungsadressen - - - Receiving addresses - Empfangsadressen - - - These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins. - Dies sind Ihre Bitcoin-Adressen zum Tätigen von Überweisungen. Bitte prüfen Sie den Betrag und die Empfangsadresse, bevor Sie Bitcoins überweisen. - - - These are your Bitcoin addresses for receiving payments. It is recommended to use a new receiving address for each transaction. - Dies sind Ihre Bitcoin-Adressen zum Empfangen von Zahlungen. Es wird empfohlen für jede Transaktion eine neue Empfangsadresse zu verwenden. - - - Copy &Label - &Bezeichnung kopieren - - - &Edit - &Editieren - - - Export Address List - Addressliste exportieren - - - Comma separated file (*.csv) - Kommagetrennte-Datei (*.csv) - - - Exporting Failed - Exportieren fehlgeschlagen - - - There was an error trying to save the address list to %1. Please try again. - Beim Speichern der Adressliste nach %1 ist ein Fehler aufgetreten. Bitte versuchen Sie es erneut. - - - - AddressTableModel - - Label - Bezeichnung - - - Address - Adresse - - - (no label) - (keine Bezeichnung) - - - - AskPassphraseDialog - - Passphrase Dialog - Passphrasendialog - - - Enter passphrase - Passphrase eingeben - - - New passphrase - Neue Passphrase - - - Repeat new passphrase - Neue Passphrase bestätigen - - - Encrypt wallet - Wallet verschlüsseln - - - This operation needs your wallet passphrase to unlock the wallet. - Dieser Vorgang benötigt Ihre Passphrase, um die Wallet zu entsperren. - - - Unlock wallet - Wallet entsperren - - - This operation needs your wallet passphrase to decrypt the wallet. - Dieser Vorgang benötigt Ihre Passphrase, um die Wallet zu entschlüsseln. - - - Decrypt wallet - Wallet entschlüsseln - - - Change passphrase - Passphrase ändern - - - Confirm wallet encryption - Wallet-Verschlüsselung bestätigen - - - Warning: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR BITCOINS</b>! - Warnung: Wenn Sie Ihre Wallet verschlüsseln und Ihre Passphrase verlieren, werden Sie <b>alle Ihre Bitcoins verlieren</b>! - - - Are you sure you wish to encrypt your wallet? - Sind Sie sich sicher, dass Sie Ihre Wallet verschlüsseln möchten? - - - Bitcoin Core 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. - Bitcoin Core wird jetzt beendet, um den Verschlüsselungsprozess abzuschließen. Vergessen Sie nicht, dass eine Wallet-Verschlüsselung nicht vollständig vor Diebstahl Ihrer Bitcoins durch Schadsoftware schützen kann, die Ihren Computer infiziert. - - - 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. - WICHTIG: Alle vorherigen Wallet-Sicherungen sollten durch die neu erzeugte, verschlüsselte Wallet ersetzt werden. Aus Sicherheitsgründen werden vorherige Sicherungen der unverschlüsselten Wallet nutzlos, sobald Sie die neue, verschlüsselte Wallet verwenden. - - - Warning: The Caps Lock key is on! - Warnung: Die Feststelltaste ist aktiviert! - - - Wallet encrypted - Wallet verschlüsselt - - - 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>. - Geben Sie die neue Passphrase für die Wallet ein.<br>Bitte benutzen Sie eine Passphrase bestehend aus <b>zehn oder mehr zufälligen Zeichen</b> oder <b>acht oder mehr Wörtern</b>. - - - Enter the old passphrase and new passphrase to the wallet. - Geben Sie die alte und neue Wallet-Passphrase ein. - - - Wallet encryption failed - Wallet-Verschlüsselung fehlgeschlagen - - - Wallet encryption failed due to an internal error. Your wallet was not encrypted. - Die Wallet-Verschlüsselung ist aufgrund eines internen Fehlers fehlgeschlagen. Ihre Wallet wurde nicht verschlüsselt. - - - The supplied passphrases do not match. - Die eingegebenen Passphrasen stimmen nicht überein. - - - Wallet unlock failed - Wallet-Entsperrung fehlgeschlagen - - - The passphrase entered for the wallet decryption was incorrect. - Die eingegebene Passphrase zur Wallet-Entschlüsselung war nicht korrekt. - - - Wallet decryption failed - Wallet-Entschlüsselung fehlgeschlagen - - - Wallet passphrase was successfully changed. - Die Wallet-Passphrase wurde erfolgreich geändert. - - - - BitcoinGUI - - Sign &message... - Nachricht s&ignieren... - - - Synchronizing with network... - Synchronisiere mit Netzwerk... - - - &Overview - &Übersicht - - - Node - Knoten - - - Show general overview of wallet - Allgemeine Wallet-Übersicht anzeigen - - - &Transactions - &Transaktionen - - - Browse transaction history - Transaktionsverlauf durchsehen - - - E&xit - &Beenden - - - Quit application - Anwendung beenden - - - About &Qt - Über &Qt - - - Show information about Qt - Informationen über Qt anzeigen - - - &Options... - &Konfiguration... - - - &Encrypt Wallet... - Wallet &verschlüsseln... - - - &Backup Wallet... - Wallet &sichern... - - - &Change Passphrase... - Passphrase &ändern... - - - &Sending addresses... - &Zahlungsadressen... - - - &Receiving addresses... - &Empfangsadressen... - - - Open &URI... - &URI öffnen... - - - Bitcoin Core client - "Bitcoin Core"-Client - - - Importing blocks from disk... - Importiere Blöcke von Datenträger... - - - Reindexing blocks on disk... - Reindiziere Blöcke auf Datenträger... - - - Send coins to a Bitcoin address - Bitcoins an eine Bitcoin-Adresse überweisen - - - Backup wallet to another location - Eine Wallet-Sicherungskopie erstellen und abspeichern - - - Change the passphrase used for wallet encryption - Ändert die Passphrase, die für die Wallet-Verschlüsselung benutzt wird - - - &Debug window - &Debugfenster - - - Open debugging and diagnostic console - Debugging- und Diagnosekonsole öffnen - - - &Verify message... - Nachricht &verifizieren... - - - Bitcoin - Bitcoin - - - Wallet - Wallet - - - &Send - &Überweisen - - - &Receive - &Empfangen - - - Show information about Bitcoin Core - Informationen über Bitcoin Core anzeigen - - - &Show / Hide - &Anzeigen / Verstecken - - - Show or hide the main Window - Das Hauptfenster anzeigen oder verstecken - - - Encrypt the private keys that belong to your wallet - Verschlüsselt die zu Ihrer Wallet gehörenden privaten Schlüssel - - - Sign messages with your Bitcoin addresses to prove you own them - Nachrichten signieren, um den Besitz Ihrer Bitcoin-Adressen zu beweisen - - - Verify messages to ensure they were signed with specified Bitcoin addresses - Nachrichten verifizieren, um sicherzustellen, dass diese mit den angegebenen Bitcoin-Adressen signiert wurden - - - &File - &Datei - - - &Settings - &Einstellungen - - - &Help - &Hilfe - - - Tabs toolbar - Registerkartenleiste - - - Bitcoin Core - Bitcoin Core - - - Request payments (generates QR codes and bitcoin: URIs) - Zahlungen anfordern (erzeugt QR-Codes und "bitcoin:"-URIs) - - - &About Bitcoin Core - &Über Bitcoin Core - - - Modify configuration options for Bitcoin Core - Konfiguration von Bitcoin Core bearbeiten - - - Show the list of used sending addresses and labels - Liste verwendeter Zahlungsadressen und Bezeichnungen anzeigen - - - Show the list of used receiving addresses and labels - Liste verwendeter Empfangsadressen und Bezeichnungen anzeigen - - - Open a bitcoin: URI or payment request - Eine "bitcoin:"-URI oder Zahlungsanforderung öffnen - - - &Command-line options - &Kommandozeilenoptionen - - - Show the Bitcoin Core help message to get a list with possible Bitcoin command-line options - Zeige den "Bitcoin Core"-Hilfetext, um eine Liste mit möglichen Kommandozeilenoptionen zu erhalten - - - %n active connection(s) to Bitcoin network - %n aktive Verbindung zum Bitcoin-Netzwerk%n aktive Verbindungen zum Bitcoin-Netzwerk - - - No block source available... - Keine Blockquelle verfügbar... - - - Processed %n block(s) of transaction history. - %n Block des Transaktionsverlaufs verarbeitet.%n Blöcke des Transaktionsverlaufs verarbeitet. - - - %n hour(s) - %n Stunde%n Stunden - - - %n day(s) - %n Tag%n Tage - - - %n week(s) - %n Woche%n Wochen - - - %1 and %2 - %1 und %2 - - - %n year(s) - %n Jahr%n Jahre - - - %1 behind - %1 im Rückstand - - - Last received block was generated %1 ago. - Der letzte empfangene Block ist %1 alt. - - - Transactions after this will not yet be visible. - Transaktionen hiernach werden noch nicht angezeigt. - - - Error - Fehler - - - Warning - Warnung - - - Information - Hinweis - - - Up to date - Auf aktuellem Stand - - - Catching up... - Hole auf... - - - Date: %1 - - Datum: %1 - - - - Amount: %1 - - Betrag: %1 - - - - Type: %1 - - Typ: %1 - - - - Label: %1 - - Bezeichnung: %1 - - - - Address: %1 - - Adresse: %1 - - - - Sent transaction - Gesendete Transaktion - - - Incoming transaction - Eingehende Transaktion - - - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - Wallet ist <b>verschlüsselt</b> und aktuell <b>entsperrt</b> - - - Wallet is <b>encrypted</b> and currently <b>locked</b> - Wallet ist <b>verschlüsselt</b> und aktuell <b>gesperrt</b> - - - - ClientModel - - Network Alert - Netzwerkalarm - - - - CoinControlDialog - - Coin Selection - Münzauswahl ("Coin Control") - - - Quantity: - Anzahl: - - - Bytes: - Byte: - - - Amount: - Betrag: - - - Priority: - Priorität: - - - Fee: - Gebühr: - - - Dust: - "Dust": - - - After Fee: - Abzüglich Gebühr: - - - Change: - Wechselgeld: - - - (un)select all - Alles (de)selektieren - - - Tree mode - Baumansicht - - - List mode - Listenansicht - - - Amount - Betrag - - - Received with label - Empfangen über Bezeichnung - - - Received with address - Empfangen über Adresse - - - Date - Datum - - - Confirmations - Bestätigungen - - - Confirmed - Bestätigt - - - Priority - Priorität - - - Copy address - Adresse kopieren - - - Copy label - Bezeichnung kopieren - - - Copy amount - Betrag kopieren - - - Copy transaction ID - Transaktions-ID kopieren - - - Lock unspent - Nicht ausgegebenen Betrag sperren - - - Unlock unspent - Nicht ausgegebenen Betrag entsperren - - - Copy quantity - Anzahl kopieren - - - Copy fee - Gebühr kopieren - - - Copy after fee - Abzüglich Gebühr kopieren - - - Copy bytes - Byte kopieren - - - Copy priority - Priorität kopieren - - - Copy dust - "Dust" kopieren - - - Copy change - Wechselgeld kopieren - - - highest - am höchsten - - - higher - höher - - - high - hoch - - - medium-high - mittel-hoch - - - medium - mittel - - - low-medium - niedrig-mittel - - - low - niedrig - - - lower - niedriger - - - lowest - am niedrigsten - - - (%1 locked) - (%1 gesperrt) - - - none - keine - - - This label turns red if the transaction size is greater than 1000 bytes. - Diese Bezeichnung wird rot, wenn die Transaktion größer als 1000 Byte ist. - - - This label turns red if the priority is smaller than "medium". - Diese Bezeichnung wird rot, wenn die Priorität niedriger als "mittel" ist. - - - This label turns red if any recipient receives an amount smaller than %1. - Diese Bezeichnung wird rot, wenn irgendein Empfänger einen Betrag kleiner als %1 erhält. - - - Can vary +/- %1 satoshi(s) per input. - Kann pro Eingabe um +/- %1 Satoshi(s) abweichen. - - - yes - ja - - - no - nein - - - This means a fee of at least %1 per kB is required. - Das bedeutet, dass eine Gebühr von mindestens %1 pro kB erforderlich ist. - - - Can vary +/- 1 byte per input. - Kann um +/- 1 Byte pro Eingabe variieren. - - - Transactions with higher priority are more likely to get included into a block. - Transaktionen mit höherer Priorität haben eine größere Chance in einen Block aufgenommen zu werden. - - - (no label) - (keine Bezeichnung) - - - change from %1 (%2) - Wechselgeld von %1 (%2) - - - (change) - (Wechselgeld) - - - - EditAddressDialog - - Edit Address - Adresse bearbeiten - - - &Label - &Bezeichnung - - - The label associated with this address list entry - Bezeichnung, die dem Adresslisteneintrag zugeordnet ist. - - - The address associated with this address list entry. This can only be modified for sending addresses. - Adresse, die dem Adresslisteneintrag zugeordnet ist. Diese kann nur bei Zahlungsadressen verändert werden. - - - &Address - &Adresse - - - New receiving address - Neue Empfangsadresse - - - New sending address - Neue Zahlungsadresse - - - Edit receiving address - Empfangsadresse bearbeiten - - - Edit sending address - Zahlungsadresse bearbeiten - - - The entered address "%1" is already in the address book. - Die eingegebene Adresse "%1" befindet sich bereits im Adressbuch. - - - The entered address "%1" is not a valid Bitcoin address. - Die eingegebene Adresse "%1" ist keine gültige Bitcoin-Adresse. - - - Could not unlock wallet. - Wallet konnte nicht entsperrt werden. - - - New key generation failed. - Erzeugung eines neuen Schlüssels fehlgeschlagen. - - - - FreespaceChecker - - A new data directory will be created. - Es wird ein neues Datenverzeichnis angelegt. - - - name - Name - - - Directory already exists. Add %1 if you intend to create a new directory here. - Verzeichnis existiert bereits. Fügen Sie %1 an, wenn Sie beabsichtigen hier ein neues Verzeichnis anzulegen. - - - Path already exists, and is not a directory. - Pfad existiert bereits und ist kein Verzeichnis. - - - Cannot create data directory here. - Datenverzeichnis kann hier nicht angelegt werden. - - - - HelpMessageDialog - - Bitcoin Core - Bitcoin Core - - - version - Version - - - (%1-bit) - (%1-Bit) - - - About Bitcoin Core - Über Bitcoin Core - - - Command-line options - Kommandozeilenoptionen - - - Usage: - Benutzung: - - - command-line options - Kommandozeilenoptionen - - - - Intro - - Welcome - Willkommen - - - Welcome to Bitcoin Core. - Willkommen zu Bitcoin Core. - - - As this is the first time the program is launched, you can choose where Bitcoin Core will store its data. - Da Sie das Programm gerade zum ersten Mal starten, können Sie nun auswählen wo Bitcoin Core seine Daten ablegen soll. - - - Bitcoin Core will download and store a copy of the Bitcoin block chain. At least %1GB of data will be stored in this directory, and it will grow over time. The wallet will also be stored in this directory. - Bitcoin Core wird eine Kopie der Blockkette herunterladen und speichern. Mindestens %1GB Daten werden in diesem Verzeichnis abgelegt und die Datenmenge wächst über die Zeit an. Auch die Wallet wird in diesem Verzeichnis abgelegt. - - - Use the default data directory - Standard-Datenverzeichnis verwenden - - - Use a custom data directory: - Ein benutzerdefiniertes Datenverzeichnis verwenden: - - - Bitcoin Core - Bitcoin Core - - - Error: Specified data directory "%1" cannot be created. - Fehler: Angegebenes Datenverzeichnis "%1" kann nicht angelegt werden. - - - Error - Fehler - - - %n GB of free space available - %n GB freier Speicherplatz verfügbar%n GB freier Speicherplatz verfügbar - - - (of %n GB needed) - (von benötigtem %n GB)(von benötigten %n GB) - - - - OpenURIDialog - - Open URI - URI öffnen - - - Open payment request from URI or file - Zahlungsanforderung über URI oder aus Datei öffnen - - - URI: - URI: - - - Select payment request file - Zahlungsanforderungsdatei auswählen - - - Select payment request file to open - Zu öffnende Zahlungsanforderungsdatei auswählen - - - - OptionsDialog - - Options - Konfiguration - - - &Main - &Allgemein - - - Size of &database cache - Größe des &Datenbankcaches - - - MB - MB - - - Number of script &verification threads - Anzahl an Skript-&Verifizierungs-Threads - - - Accept connections from outside - Eingehende Verbindungen annehmen - - - Allow incoming connections - Erlaubt eingehende Verbindungen - - - IP address of the proxy (e.g. IPv4: 127.0.0.1 / IPv6: ::1) - IP-Adresse des Proxies (z.B. IPv4: 127.0.0.1 / IPv6: ::1) - - - Minimize instead of exit the application when the window is closed. When this option is enabled, the application will be closed only after selecting Exit in the menu. - Minimiert die Anwendung anstatt sie zu beenden wenn das Fenster geschlossen wird. Wenn dies aktiviert ist, müssen Sie die Anwendung über "Beenden" im Menü schließen. - - - The user interface language can be set here. This setting will take effect after restarting Bitcoin Core. - Legt die Sprache der Benutzeroberfläche fest. Diese Einstellung wird erst nach einem Neustart von Bitcoin Core aktiv. - - - 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 |. - Externe URLs (z.B. ein Block-Explorer), die im Kontextmenü des Transaktionsverlaufs eingefügt werden. In der URL wird %s durch den Transaktionshash ersetzt. Bei Angabe mehrerer URLs müssen diese durch "|" voneinander getrennt werden. - - - Third party transaction URLs - Externe Transaktions-URLs - - - Active command-line options that override above options: - Aktive Kommandozeilenoptionen, die obige Konfiguration überschreiben: - - - Reset all client options to default. - Setzt die Clientkonfiguration auf Standardwerte zurück. - - - &Reset Options - Konfiguration &zurücksetzen - - - &Network - &Netzwerk - - - Automatically start Bitcoin Core after logging in to the system. - Bitcoin Core nach der Anmeldung am System automatisch starten. - - - &Start Bitcoin Core on system login - &Bitcoin Core nach Systemanmeldung starten - - - (0 = auto, <0 = leave that many cores free) - (0 = automatisch, <0 = so viele Kerne frei lassen) - - - W&allet - W&allet - - - Expert - Erweiterte Wallet-Optionen - - - Enable coin &control features - "&Coin Control"-Funktionen aktivieren - - - 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. - Wenn Sie das Ausgeben von unbestätigtem Wechselgeld deaktivieren, kann das Wechselgeld einer Transaktion nicht verwendet werden, bis es mindestens eine Bestätigung erhalten hat. Dies wirkt sich auf die Berechnung des Kontostands aus. - - - &Spend unconfirmed change - &Unbestätigtes Wechselgeld darf ausgegeben werden - - - Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled. - Automatisch den Bitcoin-Clientport auf dem Router öffnen. Dies funktioniert nur, wenn Ihr Router UPnP unterstützt und dies aktiviert ist. - - - Map port using &UPnP - Portweiterleitung via &UPnP - - - Connect to the Bitcoin network through a SOCKS5 proxy. - Über einen SOCKS5-Proxy mit dem Bitcoin-Netzwerk verbinden. - - - &Connect through SOCKS5 proxy (default proxy): - Über einen SOCKS5-Proxy &verbinden (Standardproxy): - - - Proxy &IP: - Proxy-&IP: - - - &Port: - &Port: - - - Port of the proxy (e.g. 9050) - Port des Proxies (z.B. 9050) - - - &Window - &Programmfenster - - - Show only a tray icon after minimizing the window. - Nur ein Symbol im Infobereich anzeigen, nachdem das Programmfenster minimiert wurde. - - - &Minimize to the tray instead of the taskbar - In den Infobereich anstatt in die Taskleiste &minimieren - - - M&inimize on close - Beim Schließen m&inimieren - - - &Display - Anzei&ge - - - User Interface &language: - &Sprache der Benutzeroberfläche: - - - &Unit to show amounts in: - &Einheit der Beträge: - - - Choose the default subdivision unit to show in the interface and when sending coins. - Wählen Sie die standardmäßige Untereinheit, die in der Benutzeroberfläche und beim Überweisen von Bitcoins angezeigt werden soll. - - - Whether to show coin control features or not. - Legt fest, ob die "Coin Control"-Funktionen angezeigt werden. - - - &OK - &OK - - - &Cancel - A&bbrechen - - - default - Standard - - - none - keine - - - Confirm options reset - Zurücksetzen der Konfiguration bestätigen - - - Client restart required to activate changes. - Clientneustart nötig, um die Änderungen zu aktivieren. - - - Client will be shut down. Do you want to proceed? - Client wird beendet. Möchten Sie den Vorgang fortsetzen? - - - This change would require a client restart. - Diese Änderung würde einen Clientneustart benötigen. - - - The supplied proxy address is invalid. - Die eingegebene Proxyadresse ist ungültig. - - - - OverviewPage - - Form - Formular - - - The displayed information may be out of date. Your wallet automatically synchronizes with the Bitcoin network after a connection is established, but this process has not completed yet. - Die angezeigten Informationen sind möglicherweise nicht mehr aktuell. Ihre Wallet wird automatisch synchronisiert, nachdem eine Verbindung zum Bitcoin-Netzwerk hergestellt wurde. Dieser Prozess ist jedoch derzeit noch nicht abgeschlossen. - - - Watch-only: - Beobachtet: - - - Available: - Verfügbar: - - - Your current spendable balance - Ihr aktuell verfügbarer Kontostand - - - Pending: - Ausstehend: - - - Total of transactions that have yet to be confirmed, and do not yet count toward the spendable balance - Betrag aus unbestätigten Transaktionen, der noch nicht im aktuell verfügbaren Kontostand enthalten ist - - - Immature: - Unreif: - - - Mined balance that has not yet matured - Erarbeiteter Betrag der noch nicht gereift ist - - - Balances - Kontostände - - - Total: - Gesamtbetrag: - - - Your current total balance - Aktueller Gesamtbetrag aus obigen Kategorien - - - Your current balance in watch-only addresses - Ihr aktueller Kontostand beobachteter Adressen - - - Spendable: - Verfügbar: - - - Recent transactions - Letzte Transaktionen - - - Unconfirmed transactions to watch-only addresses - Unbestätigte Transaktionen von beobachteten Adressen - - - Mined balance in watch-only addresses that has not yet matured - Erarbeiteter Betrag in beobachteten Adressen der noch nicht gereift ist - - - Current total balance in watch-only addresses - Aktueller Gesamtbetrag in beobachteten Adressen aus obigen Kategorien - - - - PaymentServer - - URI handling - URI-Verarbeitung - - - Invalid payment address %1 - Ungültige Zahlungsadresse %1 - - - Payment request rejected - Zahlungsanforderung abgelehnt - - - Payment request network doesn't match client network. - Netzwerk der Zahlungsanforderung stimmt nicht mit dem Client-Netzwerk überein. - - - Payment request is not initialized. - Zahlungsanforderung ist nicht initialisiert. - - - Requested payment amount of %1 is too small (considered dust). - Angeforderter Zahlungsbetrag in Höhe von %1 ist zu niedrig und wurde als "Dust" eingestuft. - - - Payment request error - fehlerhafte Zahlungsanforderung - - - Cannot start bitcoin: click-to-pay handler - "bitcoin: Klicken-zum-Bezahlen"-Handler konnte nicht gestartet werden - - - Payment request fetch URL is invalid: %1 - Abruf-URL der Zahlungsanforderung ist ungültig: %1 - - - URI cannot be parsed! This can be caused by an invalid Bitcoin address or malformed URI parameters. - URI kann nicht analysiert werden! Dies kann durch eine ungültige Bitcoin-Adresse oder fehlerhafte URI-Parameter verursacht werden. - - - Payment request file handling - Zahlungsanforderungsdatei-Verarbeitung - - - Payment request file cannot be read! This can be caused by an invalid payment request file. - Zahlungsanforderungsdatei kann nicht gelesen werden! Dies kann durch eine ungültige Zahlungsanforderungsdatei verursacht werden. - - - Payment request expired. - Zahlungsanforderung abgelaufen. - - - Unverified payment requests to custom payment scripts are unsupported. - Unverifizierte Zahlungsanforderungen an benutzerdefinierte Zahlungsskripte werden nicht unterstützt. - - - Invalid payment request. - Ungültige Zahlungsanforderung. - - - Refund from %1 - Rücküberweisung von %1 - - - Payment request %1 is too large (%2 bytes, allowed %3 bytes). - Zahlungsanforderung %1 ist zu groß (%2 Byte, erlaubt sind %3 Byte). - - - Payment request DoS protection - Zahlungsanforderungs-DoS-Schutz - - - Error communicating with %1: %2 - Kommunikationsfehler mit %1: %2 - - - Payment request cannot be parsed! - Zahlungsanforderung kann nicht verarbeitet werden! - - - Bad response from server %1 - Fehlerhafte Antwort vom Server: %1 - - - Payment acknowledged - Zahlung bestätigt - - - Network request error - fehlerhafte Netzwerkanfrage - - - - PeerTableModel - - User Agent - User-Agent - - - Node/Service - Knoten/Dienst - - - Ping Time - Pingzeit - - - - QObject - - Amount - Betrag - - - Enter a Bitcoin address (e.g. %1) - Bitcoin-Adresse eingeben (z.B. %1) - - - %1 d - %1 d - - - %1 h - %1 h - - - %1 m - %1 m - - - %1 s - %1 s - - - None - Keine - - - N/A - k.A. - - - %1 ms - %1 ms - - - - QRImageWidget - - &Save Image... - Grafik &speichern... - - - &Copy Image - Grafik &kopieren - - - Save QR Code - QR-Code speichern - - - PNG Image (*.png) - PNG-Grafik (*.png) - - - - RPCConsole - - Client name - Clientname - - - N/A - k.A. - - - Client version - Clientversion - - - &Information - Hinweis - - - Debug window - Debugfenster - - - General - Allgemein - - - Using OpenSSL version - Verwendete OpenSSL-Version - - - Using BerkeleyDB version - Verwendete BerkeleyDB-Version - - - Startup time - Startzeit - - - Network - Netzwerk - - - Name - Name - - - Number of connections - Anzahl Verbindungen - - - Block chain - Blockkette - - - Current number of blocks - Aktuelle Anzahl Blöcke - - - Open the Bitcoin Core debug log file from the current data directory. This can take a few seconds for large log files. - Öffnet die "Bitcoin Core"-Debugprotokolldatei aus dem aktuellen Datenverzeichnis. Dies kann bei großen Protokolldateien einige Sekunden dauern. - - - Received - Empfangen - - - Sent - Übertragen - - - &Peers - &Gegenstellen - - - Select a peer to view detailed information. - Gegenstelle auswählen, um detaillierte Informationen zu erhalten. - - - Direction - Richtung - - - Version - Version - - - User Agent - User-Agent - - - Services - Dienste - - - Starting Height - Start-Höhe - - - Sync Height - Sync-Höhe - - - Ban Score - Sperrpunktzahl - - - Connection Time - Verbindungsdauer - - - Last Send - Letzte Übertragung - - - Last Receive - Letzter Empfang - - - Bytes Sent - Übertragene Byte - - - Bytes Received - Empfangene Byte - - - Ping Time - Pingzeit - - - Time Offset - Zeitversatz - - - Last block time - Letzte Blockzeit - - - &Open - &Öffnen - - - &Console - &Konsole - - - &Network Traffic - &Netzwerkauslastung - - - &Clear - &Zurücksetzen - - - Totals - Gesamtbetrag: - - - In: - eingehend: - - - Out: - ausgehend: - - - Build date - Erstellungsdatum - - - Debug log file - Debugprotokolldatei - - - Clear console - Konsole zurücksetzen - - - Welcome to the Bitcoin Core RPC console. - Willkommen in der "Bitcoin Core"-RPC-Konsole. - - - Use up and down arrows to navigate history, and <b>Ctrl-L</b> to clear screen. - Pfeiltaste hoch und runter, um den Verlauf durchzublättern und <b>Strg-L</b>, um die Konsole zurückzusetzen. - - - Type <b>help</b> for an overview of available commands. - Bitte <b>help</b> eingeben, um eine Übersicht verfügbarer Befehle zu erhalten. - - - %1 B - %1 B - - - %1 KB - %1 KB - - - %1 MB - %1 MB - - - %1 GB - %1 GB - - - via %1 - über %1 - - - never - nie - - - Inbound - eingehend - - - Outbound - ausgehend - - - Unknown - Unbekannt - - - Fetching... - Aktualisiere... - - - - ReceiveCoinsDialog - - &Amount: - &Betrag: - - - &Label: - &Bezeichnung: - - - &Message: - &Nachricht: - - - Reuse one of the previously used receiving addresses. Reusing addresses has security and privacy issues. Do not use this unless re-generating a payment request made before. - Eine der bereits verwendeten Empfangsadressen wiederverwenden. Addressen wiederzuverwenden birgt Sicherheits- und Datenschutzrisiken. Außer zum Neuerstellen einer bereits erzeugten Zahlungsanforderung sollten Sie dies nicht nutzen. - - - R&euse an existing receiving address (not recommended) - Vorhandene Empfangsadresse &wiederverwenden (nicht empfohlen) - - - An optional message to attach to the payment request, which will be displayed when the request is opened. Note: The message will not be sent with the payment over the Bitcoin network. - Eine optionale Nachricht, die an die Zahlungsanforderung angehängt wird. Sie wird angezeigt, wenn die Anforderung geöffnet wird. Hinweis: Diese Nachricht wird nicht mit der Zahlung über das Bitcoin-Netzwerk gesendet. - - - An optional label to associate with the new receiving address. - Eine optionale Bezeichnung, die der neuen Empfangsadresse zugeordnet wird. - - - Use this form to request payments. All fields are <b>optional</b>. - Verwenden Sie dieses Formular, um Zahlungen anzufordern. Alle Felder sind <b>optional</b>. - - - An optional amount to request. Leave this empty or zero to not request a specific amount. - Ein optional angeforderte Betrag. Lassen Sie dieses Feld leer oder setzen Sie es auf 0, um keinen spezifischen Betrag anzufordern. - - - Clear all fields of the form. - Alle Formularfelder zurücksetzen. - - - Clear - Zurücksetzen - - - Requested payments history - Verlauf der angeforderten Zahlungen - - - &Request payment - &Zahlung anfordern - - - Show the selected request (does the same as double clicking an entry) - Ausgewählte Zahlungsanforderungen anzeigen (entspricht einem Doppelklick auf einen Eintrag) - - - Show - Anzeigen - - - Remove the selected entries from the list - Ausgewählte Einträge aus der Liste entfernen - - - Remove - Entfernen - - - Copy label - Bezeichnung kopieren - - - Copy message - Nachricht kopieren - - - Copy amount - Betrag kopieren - - - - ReceiveRequestDialog - - QR Code - QR-Code - - - Copy &URI - &URI kopieren - - - Copy &Address - &Addresse kopieren - - - &Save Image... - Grafik &speichern... - - - Request payment to %1 - Zahlung anfordern an %1 - - - Payment information - Zahlungsinformationen - - - URI - URI - - - Address - Adresse - - - Amount - Betrag - - - Label - Bezeichnung - - - Message - Nachricht - - - Resulting URI too long, try to reduce the text for label / message. - Resultierende URI ist zu lang, bitte den Text für Bezeichnung/Nachricht kürzen. - - - Error encoding URI into QR Code. - Beim Enkodieren der URI in den QR-Code ist ein Fehler aufgetreten. - - - - RecentRequestsTableModel - - Date - Datum - - - Label - Bezeichnung - - - Message - Nachricht - - - Amount - Betrag - - - (no label) - (keine Bezeichnung) - - - (no message) - (keine Nachricht) - - - (no amount) - (kein Betrag) - - - - SendCoinsDialog - - Send Coins - Bitcoins überweisen - - - Coin Control Features - "Coin Control"-Funktionen - - - Inputs... - Eingaben... - - - automatically selected - automatisch ausgewählt - - - Insufficient funds! - Unzureichender Kontostand! - - - Quantity: - Anzahl: - - - Bytes: - Byte: - - - Amount: - Betrag: - - - Priority: - Priorität: - - - Fee: - Gebühr: - - - After Fee: - Abzüglich Gebühr: - - - Change: - Wechselgeld: - - - If this is activated, but the change address is empty or invalid, change will be sent to a newly generated address. - Wenn dies aktivert, und die Wechselgeld-Adresse leer oder ungültig ist, wird das Wechselgeld einer neu erzeugten Adresse gutgeschrieben. - - - Custom change address - Benutzerdefinierte Wechselgeld-Adresse - - - Transaction Fee: - Transaktionsgebühr: - - - Choose... - Auswählen... - - - collapse fee-settings - Transaktionsgebühreneinstellungen ausblenden - - - per kilobyte - pro Kilobyte - - - 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. - Wenn die benutzerdefinierte Gebühr 1000 Satoshis beträgt und die Transaktion nur 250 Byte groß ist, wird bei Auswahl von "pro Kilobyte" eine Gebühr in Höhe von 250 Satoshis, bei Auswahl von "Mindestbetrag" eine Gebühr in Höhe von 1000 Satoshis bezahlt. Bei Transaktionen die Größer als ein Kilobyte sind, werden bei beiden Optionen die Gebühren pro Kilobyte bezahlt. - - - Hide - Ausblenden - - - total at least - Mindestbetrag - - - 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. - Nur die minimale Gebühr zu bezahlen ist so lange in Ordnung, wie weniger Transaktionsvolumen als Platz in den Blöcken vorhanden ist. Aber Vorsicht, diese Option kann dazu führen, dass Transaktionen nicht bestätigt werden, wenn mehr Bedarf an Bitcoin-Transaktionen besteht als das Netzwerk verarbeiten kann. - - - (read the tooltip) - (den Hinweistext lesen) - - - Recommended: - Empfehlungen: - - - Custom: - Benutzerdefiniert: - - - (Smart fee not initialized yet. This usually takes a few blocks...) - (Intelligente Gebührenlogik ist noch nicht verfügbar. Normalerweise dauert dies einige Blöcke lang...) - - - Confirmation time: - Bestätigungszeit: - - - normal - normal - - - fast - schnell - - - Send as zero-fee transaction if possible - Wenn möglich als gebührenfreie Transaktion senden - - - (confirmation may take longer) - (Bestätigung kann länger dauern) - - - Send to multiple recipients at once - An mehrere Empfänger auf einmal überweisen - - - Add &Recipient - Empfänger &hinzufügen - - - Clear all fields of the form. - Alle Formularfelder zurücksetzen. - - - Dust: - "Dust": - - - Clear &All - &Zurücksetzen - - - Balance: - Kontostand: - - - Confirm the send action - Überweisung bestätigen - - - S&end - &Überweisen - - - Confirm send coins - Überweisung bestätigen - - - %1 to %2 - %1 an %2 - - - Copy quantity - Anzahl kopieren - - - Copy amount - Betrag kopieren - - - Copy fee - Gebühr kopieren - - - Copy after fee - Abzüglich Gebühr kopieren - - - Copy bytes - Byte kopieren - - - Copy priority - Priorität kopieren - - - Copy change - Wechselgeld kopieren - - - or - oder - - - The amount to pay must be larger than 0. - Der zu zahlende Betrag muss größer als 0 sein. - - - The amount exceeds your balance. - Der angegebene Betrag übersteigt Ihren Kontostand. - - - The total exceeds your balance when the %1 transaction fee is included. - Der angegebene Betrag übersteigt aufgrund der Transaktionsgebühr in Höhe von %1 Ihren Kontostand. - - - Transaction creation failed! - Transaktionserstellung fehlgeschlagen! - - - 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. - 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. - - - A fee higher than %1 is considered an absurdly high fee. - Eine höhere Gebühr als %1 wird als unsinnig hohe Gebühr angesehen. - - - Payment request expired. - Zahlungsanforderung abgelaufen. - - - Estimated to begin confirmation within %n block(s). - Voraussichtlicher Beginn der Bestätigung innerhalb von %n Block.Voraussichtlicher Beginn der Bestätigung innerhalb von %n Blöcken. - - - Pay only the minimum fee of %1 - Nur die minimale Gebühr in Höhe von %1 zahlen - - - Total Amount %1<span style='font-size:10pt;font-weight:normal;'><br />(=%2)</span> - Gesamtbetrag %1<span style='font-size:10pt;font-weight:normal;'><br />(=%2)</span> - - - The recipient address is not valid. Please recheck. - Die Zahlungsadresse ist ungültig, bitte nochmals überprüfen. - - - Duplicate address found: addresses should only be used once each. - Doppelte Adresse entdeckt: Adressen dürfen jeweils nur einmal vorkommen. - - - Warning: Invalid Bitcoin address - Warnung: Ungültige Bitcoin-Adresse - - - (no label) - (keine Bezeichnung) - - - Warning: Unknown change address - Warnung: Unbekannte Wechselgeld-Adresse - - - Copy dust - "Dust" kopieren - - - Are you sure you want to send? - Wollen Sie die Überweisung ausführen? - - - added as transaction fee - als Transaktionsgebühr hinzugefügt - - - - SendCoinsEntry - - A&mount: - Betra&g: - - - Pay &To: - E&mpfänger: - - - Enter a label for this address to add it to your address book - Adressbezeichnung eingeben (diese wird zusammen mit der Adresse dem Adressbuch hinzugefügt) - - - &Label: - &Bezeichnung: - - - Choose previously used address - Bereits verwendete Adresse auswählen - - - This is a normal payment. - Dies ist eine normale Überweisung. - - - The Bitcoin address to send the payment to - Die Zahlungsadresse der Überweisung - - - Alt+A - Alt+A - - - Paste address from clipboard - Adresse aus der Zwischenablage einfügen - - - Alt+P - Alt+P - - - Remove this entry - Diesen Eintrag entfernen - - - The fee will be deducted from the amount being sent. The recipient will receive less bitcoins than you enter in the amount field. If multiple recipients are selected, the fee is split equally. - Die Gebühr wird vom zu überweisenden Betrag abgezogen. Der Empfänger wird also weniger Bitcoins erhalten, als Sie im Betrags-Feld eingegeben haben. Falls mehrere Empfänger ausgewählt wurden, wird die Gebühr gleichmäßig verteilt. - - - S&ubtract fee from amount - Gebühr vom Betrag ab&ziehen - - - Message: - Nachricht: - - - This is an unauthenticated payment request. - Dies ist keine beglaubigte Zahlungsanforderung. - - - This is an authenticated payment request. - Dies ist eine beglaubigte Zahlungsanforderung. - - - Enter a label for this address to add it to the list of used addresses - Adressbezeichnung eingeben, die dann zusammen mit der Adresse der Liste bereits verwendeter Adressen hinzugefügt wird. - - - A message that was attached to the bitcoin: URI which will be stored with the transaction for your reference. Note: This message will not be sent over the Bitcoin network. - Eine an die "bitcoin:"-URI angefügte Nachricht, die zusammen mit der Transaktion gespeichert wird. Hinweis: Diese Nachricht wird nicht über das Bitcoin-Netzwerk gesendet. - - - Pay To: - Empfänger: - - - Memo: - Memo: - - - - ShutdownWindow - - Bitcoin Core is shutting down... - Bitcoin Core wird beendet... - - - Do not shut down the computer until this window disappears. - Fahren Sie den Computer nicht herunter, bevor dieses Fenster verschwindet. - - - - SignVerifyMessageDialog - - Signatures - Sign / Verify a Message - Signaturen - eine Nachricht signieren / verifizieren - - - &Sign Message - Nachricht &signieren - - - You can sign messages/agreements with your addresses to prove you can receive bitcoins sent to them. Be careful not to sign anything vague or random, as phishing attacks may try to trick you into signing your identity over to them. Only sign fully-detailed statements you agree to. - Sie können Nachrichten/Vereinbarungen mit Hilfe Ihrer Adressen signieren, um zu beweisen, dass Sie Bitcoins empfangen können, die an diese Adressen überwiesen werden. Seien Sie vorsichtig und signieren Sie nichts Vages oder Willkürliches, um Ihre Indentität vor Phishingangriffen zu schützen. Signieren Sie nur vollständig-detaillierte Aussagen, mit denen Sie auch einverstanden sind. - - - The Bitcoin address to sign the message with - Die Bitcoin-Adresse mit der die Nachricht signiert wird - - - Choose previously used address - Bereits verwendete Adresse auswählen - - - Alt+A - Alt+A - - - Paste address from clipboard - Adresse aus der Zwischenablage einfügen - - - Alt+P - Alt+P - - - Enter the message you want to sign here - Zu signierende Nachricht hier eingeben - - - Signature - Signatur - - - Copy the current signature to the system clipboard - Aktuelle Signatur in die Zwischenablage kopieren - - - Sign the message to prove you own this Bitcoin address - Die Nachricht signieren, um den Besitz dieser Bitcoin-Adresse zu beweisen - - - Sign &Message - &Nachricht signieren - - - Reset all sign message fields - Alle "Nachricht signieren"-Felder zurücksetzen - - - Clear &All - &Zurücksetzen - - - &Verify Message - Nachricht &verifizieren - - - Enter the receiver's address, message (ensure you copy line breaks, spaces, tabs, etc. exactly) and signature below to verify the message. Be careful not to read more into the signature than what is in the signed message itself, to avoid being tricked by a man-in-the-middle attack. Note that this only proves the signing party receives with the address, it cannot prove sendership of any transaction! - Geben Sie die Zahlungsadresse des Empfängers, Nachricht (achten Sie darauf Zeilenumbrüche, Leerzeichen, Tabulatoren usw. exakt zu kopieren) und Signatur unten ein, um die Nachricht zu verifizieren. Vorsicht, interpretieren Sie nicht mehr in die Signatur hinein, als in der signierten Nachricht selber enthalten ist, um nicht von einem Man-in-the-middle-Angriff hinters Licht geführt zu werden. Beachten Sie dass dies nur beweißt, dass die signierende Partei über diese Adresse Überweisungen empfangen kann. - - - The Bitcoin address the message was signed with - Die Bitcoin-Adresse mit der die Nachricht signiert wurde - - - Verify the message to ensure it was signed with the specified Bitcoin address - Die Nachricht verifizieren, um sicherzustellen, dass diese mit der angegebenen Bitcoin-Adresse signiert wurde - - - Verify &Message - &Nachricht verifizieren - - - Reset all verify message fields - Alle "Nachricht verifizieren"-Felder zurücksetzen - - - Click "Sign Message" to generate signature - Auf "Nachricht signieren" klicken, um die Signatur zu erzeugen - - - The entered address is invalid. - Die eingegebene Adresse ist ungültig. - - - Please check the address and try again. - Bitte überprüfen Sie die Adresse und versuchen Sie es erneut. - - - The entered address does not refer to a key. - Die eingegebene Adresse verweist nicht auf einen Schlüssel. - - - Wallet unlock was cancelled. - Wallet-Entsperrung wurde abgebrochen. - - - Private key for the entered address is not available. - Privater Schlüssel zur eingegebenen Adresse ist nicht verfügbar. - - - Message signing failed. - Signierung der Nachricht fehlgeschlagen. - - - Message signed. - Nachricht signiert. - - - The signature could not be decoded. - Die Signatur konnte nicht dekodiert werden. - - - Please check the signature and try again. - Bitte überprüfen Sie die Signatur und versuchen Sie es erneut. - - - The signature did not match the message digest. - Die Signatur entspricht nicht dem "Message Digest". - - - Message verification failed. - Verifikation der Nachricht fehlgeschlagen. - - - Message verified. - Nachricht verifiziert. - - - - SplashScreen - - Bitcoin Core - Bitcoin Core - - - The Bitcoin Core developers - Die "Bitcoin Core"-Entwickler - - - [testnet] - [Testnetz] - - - - TrafficGraphWidget - - KB/s - KB/s - - - - TransactionDesc - - Open until %1 - Offen bis %1 - - - conflicted - in Konflikt stehend - - - %1/offline - %1/offline - - - %1/unconfirmed - %1/unbestätigt - - - %1 confirmations - %1 Bestätigungen - - - Status - Status - - - , broadcast through %n node(s) - , über %n Knoten übertragen, über %n Knoten übertragen - - - Date - Datum - - - Source - Quelle - - - Generated - Erzeugt - - - From - Von - - - To - An - - - own address - eigene Adresse - - - watch-only - beobachtet - - - label - Bezeichnung - - - Credit - Gutschrift - - - matures in %n more block(s) - reift noch %n weiteren Blockreift noch %n weitere Blöcke - - - not accepted - nicht angenommen - - - Debit - Belastung - - - Total debit - Gesamtbelastung - - - Total credit - Gesamtgutschrift - - - Transaction fee - Transaktionsgebühr - - - Net amount - Nettobetrag - - - Message - Nachricht - - - Comment - Kommentar - - - Transaction ID - Transaktions-ID - - - Merchant - Händler - - - Generated coins must mature %1 blocks before they can be spent. When you generated this block, it was broadcast to the network to be added to the block chain. If it fails to get into the chain, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - Erzeugte Bitcoins müssen %1 Blöcke lang reifen, bevor sie ausgegeben werden können. Als Sie diesen Block erzeugten, wurde er an das Netzwerk übertragen, um ihn der Blockkette hinzuzufügen. Falls dies fehlschlägt wird der Status in "nicht angenommen" geändert und Sie werden keine Bitcoins gutgeschrieben bekommen. Das kann gelegentlich passieren, wenn ein anderer Knoten einen Block fast zeitgleich erzeugt. - - - Debug information - Debuginformationen - - - Transaction - Transaktion - - - Inputs - Eingaben - - - Amount - Betrag - - - true - wahr - - - false - falsch - - - , has not been successfully broadcast yet - , wurde noch nicht erfolgreich übertragen - - - Open for %n more block(s) - Offen für %n weiteren BlockOffen für %n weitere Blöcke - - - unknown - unbekannt - - - - TransactionDescDialog - - Transaction details - Transaktionsdetails - - - This pane shows a detailed description of the transaction - Dieser Bereich zeigt eine detaillierte Beschreibung der Transaktion an - - - - TransactionTableModel - - Date - Datum - - - Type - Typ - - - Immature (%1 confirmations, will be available after %2) - Unreif (%1 Bestätigungen, wird verfügbar sein nach %2) - - - Open for %n more block(s) - Offen für %n weiteren BlockOffen für %n weitere Blöcke - - - Open until %1 - Offen bis %1 - - - Confirmed (%1 confirmations) - Bestätigt (%1 Bestätigungen) - - - This block was not received by any other nodes and will probably not be accepted! - Dieser Block wurde von keinem anderen Knoten empfangen und wird wahrscheinlich nicht angenommen werden! - - - Generated but not accepted - Erzeugt, jedoch nicht angenommen - - - Offline - Offline - - - Label - Bezeichnung - - - Unconfirmed - Unbestätigt - - - Confirming (%1 of %2 recommended confirmations) - Wird bestätigt (%1 von %2 empfohlenen Bestätigungen) - - - Conflicted - in Konflikt stehend - - - Received with - Empfangen über - - - Received from - Empfangen von - - - Sent to - Überwiesen an - - - Payment to yourself - Eigenüberweisung - - - Mined - Erarbeitet - - - watch-only - beobachtet - - - (n/a) - (k.A.) - - - Transaction status. Hover over this field to show number of confirmations. - Transaktionsstatus, fahren Sie mit der Maus über dieses Feld, um die Anzahl der Bestätigungen zu sehen. - - - Date and time that the transaction was received. - Datum und Uhrzeit zu der die Transaktion empfangen wurde. - - - Type of transaction. - Art der Transaktion - - - Whether or not a watch-only address is involved in this transaction. - Zeigt an, ob eine beobachtete Adresse in diese Transaktion involviert ist. - - - User-defined intent/purpose of the transaction. - Benutzerdefinierte Absicht bzw. Verwendungszweck der Transaktion - - - Amount removed from or added to balance. - Der Betrag, der dem Kontostand abgezogen oder hinzugefügt wurde. - - - - TransactionView - - All - Alle - - - Today - Heute - - - This week - Diese Woche - - - This month - Diesen Monat - - - Last month - Letzten Monat - - - This year - Dieses Jahr - - - Range... - Zeitraum - - - Received with - Empfangen über - - - Sent to - Überwiesen an - - - To yourself - Eigenüberweisung - - - Mined - Erarbeitet - - - Other - Andere - - - Enter address or label to search - Zu suchende Adresse oder Bezeichnung eingeben - - - Min amount - Minimaler Betrag - - - Copy address - Adresse kopieren - - - Copy label - Bezeichnung kopieren - - - Copy amount - Betrag kopieren - - - Copy transaction ID - Transaktions-ID kopieren - - - Edit label - Bezeichnung bearbeiten - - - Show transaction details - Transaktionsdetails anzeigen - - - Export Transaction History - Transaktionsverlauf exportieren - - - Watch-only - Beobachtet - - - Exporting Failed - Exportieren fehlgeschlagen - - - There was an error trying to save the transaction history to %1. - Beim Speichern des Transaktionsverlaufs nach %1 ist ein Fehler aufgetreten. - - - Exporting Successful - Exportieren erfolgreich - - - The transaction history was successfully saved to %1. - Speichern des Transaktionsverlaufs nach %1 war erfolgreich. - - - Comma separated file (*.csv) - Kommagetrennte-Datei (*.csv) - - - Confirmed - Bestätigt - - - Date - Datum - - - Type - Typ - - - Label - Bezeichnung - - - Address - Adresse - - - ID - ID - - - Range: - Zeitraum: - - - to - bis - - - - UnitDisplayStatusBarControl - - Unit to show amounts in. Click to select another unit. - Die Einheit in der Beträge angezeigt werden. Klicken, um eine andere Einheit auszuwählen. - - - - WalletFrame - - No wallet has been loaded. - Es wurde keine Wallet geladen. - - - - WalletModel - - Send Coins - Bitcoins überweisen - - - - WalletView - - &Export - E&xportieren - - - Export the data in the current tab to a file - Daten der aktuellen Ansicht in eine Datei exportieren - - - Backup Wallet - Wallet sichern - - - Wallet Data (*.dat) - Wallet-Daten (*.dat) - - - Backup Failed - Sicherung fehlgeschlagen - - - There was an error trying to save the wallet data to %1. - Beim Speichern der Wallet-Daten nach %1 ist ein Fehler aufgetreten. - - - The wallet data was successfully saved to %1. - Speichern der Wallet-Daten nach %1 war erfolgreich. - - - Backup Successful - Sicherung erfolgreich - - - - bitcoin-core - - Options: - Optionen: - - - Specify data directory - Datenverzeichnis festlegen - - - Connect to a node to retrieve peer addresses, and disconnect - Mit dem angegebenen Knoten verbinden, um Adressen von Gegenstellen abzufragen, danach trennen - - - Specify your own public address - Die eigene öffentliche Adresse angeben - - - Accept command line and JSON-RPC commands - Kommandozeilen- und JSON-RPC-Befehle annehmen - - - Run in the background as a daemon and accept commands - Als Hintergrunddienst ausführen und Befehle annehmen - - - Use the test network - Das Testnetz verwenden - - - Accept connections from outside (default: 1 if no -proxy or -connect) - Eingehende Verbindungen annehmen (Standard: 1, wenn nicht -proxy oder -connect) - - - Bind to given address and always listen on it. Use [host]:port notation for IPv6 - An die angegebene Adresse binden und immer abhören. Für IPv6 "[Host]:Port"-Notation verwenden - - - Delete all wallet transactions and only recover those parts of the blockchain through -rescan on startup - Alle Wallet-Transaktionen löschen und nur diese Teilbereiche der Blockkette durch -rescan beim Starten wiederherstellen - - - Distributed under the MIT software license, see the accompanying file COPYING or <http://www.opensource.org/licenses/mit-license.php>. - Veröffentlicht unter der MIT-Softwarelizenz, siehe beiligende Datei COPYING oder <http://www.opensource.org/licenses/mit-license.php>. - - - Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) - Befehl ausführen wenn sich eine Wallet-Transaktion verändert (%s im Befehl wird durch die Transaktions-ID ersetzt) - - - Maximum total fees to use in a single wallet transaction; setting this too low may abort large transactions (default: %s) - Maximale Gesamtgebühren je Wallet-Transaktion, ein zu niedriger Wert kann große Transaktionen abbrechen (Standard: %s) - - - Reduce storage requirements by pruning (deleting) old blocks. This mode disables wallet support and is incompatible with -txindex. Warning: Reverting this setting requires re-downloading the entire blockchain. (default: 0 = disable pruning blocks, >%u = target size in MiB to use for block files) - Speicherplatzanforderung durch kürzen (löschen) alter Blöcke reduzieren. Dieser Modus deaktiviert die Wallet-Unterstützung und ist nicht mit -txindex kompatibel. Warnung: Die Umkehr dieser Einstellung erfordert das erneute Herunterladen der gesamten Blockkette. (Standard: 0 = deaktiviert das Kürzen von Blöcken, >%u = Zielgröße in MiB, die für Blockdateien verwendet werden darf) - - - Set the number of script verification threads (%u to %d, 0 = auto, <0 = leave that many cores free, default: %d) - Maximale Anzahl an Skript-Verifizierungs-Threads festlegen (%u bis %d, 0 = automatisch, <0 = so viele Kerne frei lassen, Standard: %d) - - - This is a pre-release test build - use at your own risk - do not use for mining or merchant applications - Dies ist eine Vorab-Testversion - Verwendung auf eigene Gefahr - nicht für Mining- oder Handelsanwendungen nutzen! - - - Unable to bind to %s on this computer. Bitcoin Core is probably already running. - Kann auf diesem Computer nicht an %s binden, da Bitcoin Core wahrscheinlich bereits gestartet wurde. - - - WARNING: abnormally high number of blocks generated, %d blocks received in the last %d hours (%d expected) - Warnung: Es wurde eine ungewöhnlich hohe Anzahl Blöcke erzeugt, %d Blöcke wurden in den letzten %d Stunden empfangen (%d wurden erwartet). - - - WARNING: check your network connection, %d blocks received in the last %d hours (%d expected) - Warnung: Überprüpfen Sie ihre Netzwerkverbindung, %d Blöcke wurden in den letzten %d Stunden empfangen (%d wurden erwartet). - - - Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. - Warnung: -paytxfee ist auf einen sehr hohen Wert festgelegt! Dies ist die Gebühr die beim Senden einer Transaktion fällig wird. - - - Warning: The network does not appear to fully agree! Some miners appear to be experiencing issues. - Warnung: Das Netzwerk scheint nicht vollständig übereinzustimmen! Einige Miner scheinen Probleme zu haben. - - - Warning: We do not appear to fully agree with our peers! You may need to upgrade, or other nodes may need to upgrade. - Warnung: Wir scheinen nicht vollständig mit unseren Gegenstellen übereinzustimmen! Sie oder die anderen Knoten müssen unter Umständen Ihre Client-Software aktualisieren. - - - Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. - Warnung: Lesen von wallet.dat fehlgeschlagen! Alle Schlüssel wurden korrekt gelesen, Transaktionsdaten bzw. Adressbucheinträge fehlen aber möglicherweise oder sind inkorrekt. - - - 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. - Warnung: wallet.dat beschädigt, Datenrettung erfolgreich! Original wallet.dat wurde als wallet.{Zeitstempel}.dat in %s gespeichert. Falls Ihr Kontostand oder Transaktionen nicht korrekt sind, sollten Sie von einer Datensicherung wiederherstellen. - - - Whitelist peers connecting from the given netmask or IP address. Can be specified multiple times. - Gegenstellen die sich von der angegebenen Netzmaske oder IP-Adresse aus verbinden immer zulassen. Kann mehrmals angegeben werden. - - - (default: 1) - (Standard: 1) - - - <category> can be: - <category> kann sein: - - - Attempt to recover private keys from a corrupt wallet.dat - Versuchen, private Schlüssel aus einer beschädigten wallet.dat wiederherzustellen - - - Block creation options: - Blockerzeugungsoptionen: - - - Connect only to the specified node(s) - Mit nur dem oder den angegebenen Knoten verbinden - - - Connection options: - Verbindungsoptionen: - - - Corrupted block database detected - Beschädigte Blockdatenbank erkannt - - - Debugging/Testing options: - Debugging-/Testoptionen: - - - Do not load the wallet and disable wallet RPC calls - Die Wallet nicht laden und Wallet-RPC-Aufrufe deaktivieren - - - Do you want to rebuild the block database now? - Möchten Sie die Blockdatenbank jetzt neu aufbauen? - - - Error initializing block database - Fehler beim Initialisieren der Blockdatenbank - - - Error initializing wallet database environment %s! - Fehler beim Initialisieren der Wallet-Datenbankumgebung %s! - - - Error loading block database - Fehler beim Laden der Blockdatenbank - - - Error opening block database - Fehler beim Öffnen der Blockdatenbank - - - Error: Disk space is low! - Fehler: Zu wenig freier Speicherplatz auf dem Datenträger! - - - Failed to listen on any port. Use -listen=0 if you want this. - Fehler, es konnte kein Port abgehört werden. Wenn dies so gewünscht wird -listen=0 verwenden. - - - If <category> is not supplied, output all debugging information. - Wenn <category> nicht angegeben wird, jegliche Debugginginformationen ausgeben. - - - Importing... - Importiere... - - - Incorrect or no genesis block found. Wrong datadir for network? - Fehlerhafter oder kein Genesis-Block gefunden. Falsches Datenverzeichnis für das Netzwerk? - - - Invalid -onion address: '%s' - Ungültige "-onion"-Adresse: '%s' - - - Not enough file descriptors available. - Nicht genügend Datei-Deskriptoren verfügbar. - - - Only connect to nodes in network <net> (ipv4, ipv6 or onion) - Nur zu Knoten des Netzwerktyps <net> verbinden (ipv4, ipv6 oder onion) - - - Prune cannot be configured with a negative value. - Kürzungsmodus kann nicht mit einem negativen Wert konfiguriert werden. - - - Prune mode is incompatible with -txindex. - Kürzungsmodus ist nicht mit -txindex kompatibel. - - - Set database cache size in megabytes (%d to %d, default: %d) - Größe des Datenbankcaches in Megabyte festlegen (%d bis %d, Standard: %d) - - - Set maximum block size in bytes (default: %d) - Maximale Blockgröße in Byte festlegen (Standard: %d) - - - Specify wallet file (within data directory) - Wallet-Datei angeben (innerhalb des Datenverzeichnisses) - - - Use UPnP to map the listening port (default: %u) - UPnP verwenden, um eine Portweiterleitung einzurichten (Standard: %u) - - - Verifying blocks... - Verifiziere Blöcke... - - - Verifying wallet... - Verifiziere Wallet... - - - Wallet %s resides outside data directory %s - Wallet %s liegt außerhalb des Datenverzeichnisses %s - - - Wallet options: - Wallet-Optionen: - - - Warning: This version is obsolete; upgrade required! - Warnung: Diese Version is veraltet, Aktualisierung erforderlich! - - - You need to rebuild the database using -reindex to change -txindex - Sie müssen die Datenbank mit Hilfe von -reindex neu aufbauen, um -txindex zu verändern - - - Imports blocks from external blk000??.dat file - Blöcke aus externer Datei blk000??.dat importieren - - - 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 - JSON-RPC-Verbindungen von der angegeben Quelle erlauben. Gültig für <ip> ist eine einzelne IP-Adresse (z.B. 1.2.3.4), ein Netzwerk bzw. eine Netzmaske (z.B. 1.2.3.4/255.255.255.0), oder die CIDR-Notation (z.B. 1.2.3.4/24). Kann mehrmals angegeben werden. - - - An error occurred while setting up the RPC address %s port %u for listening: %s - Beim Einrichten der abzuhörenden RPC-Adresse %s auf Port %u ist ein Fehler aufgetreten: %s - - - Bind to given address and whitelist peers connecting to it. Use [host]:port notation for IPv6 - An die angegebene Adresse binden und Gegenstellen, die sich dorthin verbinden, immer zulassen. Für IPv6 "[Host]:Port"-Notation verwenden - - - Bind to given address to listen for JSON-RPC connections. Use [host]:port notation for IPv6. This option can be specified multiple times (default: bind to all interfaces) - An die angegebene Adresse binden und nach eingehenden JSON-RPC-Verbindungen abhören. Für IPv6 "[Host]:Port"-Notation verwenden. Kann mehrmals angegeben werden. (Standard: an alle Schnittstellen binden) - - - Cannot obtain a lock on data directory %s. Bitcoin Core is probably already running. - Datenverzeichnis %s kann nicht gesperrt werden, da Bitcoin Core wahrscheinlich bereits gestartet wurde. - - - Create new files with system default permissions, instead of umask 077 (only effective with disabled wallet functionality) - Neue Dateien mit Standard-Systemrechten erzeugen, anstatt mit umask 077 (nur mit deaktivierter Walletfunktion nutzbar) - - - Discover own IP addresses (default: 1 when listening and no -externalip or -proxy) - Eigene IP-Adressen ermitteln (Standard: 1, wenn abgehört wird und nicht -externalip oder -proxy) - - - Error: Listening for incoming connections failed (listen returned error %s) - Fehler: Abhören nach eingehenden Verbindungen fehlgeschlagen (listen meldete Fehler %s) - - - Error: Unsupported argument -socks found. Setting SOCKS version isn't possible anymore, only SOCKS5 proxies are supported. - Fehler: Nicht unterstütztes Argument -socks gefunden. Das Festlegen der SOCKS-Version ist nicht mehr möglich, nur noch SOCKS5-Proxies werden unterstützt. - - - Execute command when a relevant alert is received or we see a really long fork (%s in cmd is replaced by message) - Befehl ausführen wenn ein relevanter Alarm empfangen wird oder wir einen wirklich langen Fork entdecken (%s im Befehl wird durch die Nachricht ersetzt) - - - Fees (in BTC/Kb) smaller than this are considered zero fee for relaying (default: %s) - Niedrigere Gebühren (in BTC/Kb) als diese werden bei der Weiterleitung als gebührenfrei angesehen (Standard: %s) - - - If paytxfee is not set, include enough fee so transactions begin confirmation on average within n blocks (default: %u) - 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) - - - Invalid amount for -maxtxfee=<amount>: '%s' (must be at least the minrelay fee of %s to prevent stuck transactions) - 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) - - - Maximum size of data in data carrier transactions we relay and mine (default: %u) - Maximale Datengröße in "Data Carrier"-Transaktionen die weitergeleitet und erarbeitet werden (Standard: %u) - - - Prune configured below the minimum of %d MB. Please use a higher number. - Kürzungsmodus wurde kleiner als das Minimum in Höhe von %d MiB konfiguriert. Bitte verwenden Sie einen größeren Wert. - - - Query for peer addresses via DNS lookup, if low on addresses (default: 1 unless -connect) - Adressen von Gegenstellen via DNS-Namensauflösung finden, falls zu wenige Adressen verfügbar sind (Standard: 1, außer bei -connect) - - - Randomize credentials for every proxy connection. This enables Tor stream isolation (default: %u) - Zufällige Anmeldedaten für jede Proxyverbindung verwenden. Dies aktiviert Tor-Datenflussisolation (Standard: %u) - - - Set maximum size of high-priority/low-fee transactions in bytes (default: %d) - Maximale Größe in Byte von "high-priority/low-fee"-Transaktionen festlegen (Standard: %d) - - - Set the number of threads for coin generation if enabled (-1 = all cores, default: %d) - Maximale Anzahl an Threads zur Bitcoinerzeugung, wenn aktiviert, festlegen (-1 = alle Kerne, Standard: %d) - - - The transaction amount is too small to send after the fee has been deducted - Der Transaktionsbetrag ist zum senden zu niedrig, nachdem die Gebühr abgezogen wurde. - - - 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. - 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. - - - 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 - - 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 - - - - Warning: -maxtxfee is set very high! Fees this large could be paid on a single transaction. - Warnung: -maxtxfee ist auf einen sehr hohen Wert festgelegt! Gebühren dieser Höhe könnten für eine einzelne Transaktion bezahlt werden. - - - Warning: Please check that your computer's date and time are correct! If your clock is wrong Bitcoin Core will not work properly. - Warnung: Bitte korrigieren Sie die Datums- und Uhrzeiteinstellungen Ihres Computers, da Bitcoin Core ansonsten nicht ordnungsgemäß funktionieren wird. - - - 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 - 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. - - - You need to rebuild the database using -reindex to go back to unpruned mode. This will redownload the entire blockchain - Sie müssen die Datenbank mit Hilfe von -reindex neu aufbauen, um zum ungekürzten Modus zurückzukehren. Dies erfordert, dass die gesamte Blockkette erneut heruntergeladen wird. - - - (default: %u) - (Standard: %u) - - - Accept public REST requests (default: %u) - Öffentliche REST-Anfragen annehmen (Standard: %u) - - - Activating best chain... - Aktiviere beste Blockkette... - - - Can't run with a wallet in prune mode. - Eine Wallet kann im Kürzungsmodus nicht verwendet werden. - - - Cannot resolve -whitebind address: '%s' - Kann Adresse in -whitebind nicht auflösen: '%s' - - - Choose data directory on startup (default: 0) - Datenverzeichnis beim Starten auswählen (Standard: 0) - - - Connect through SOCKS5 proxy - Über einen SOCKS5-Proxy &verbinden - - - Copyright (C) 2009-%i The Bitcoin Core Developers - Urheberrecht (C) 2009-%i Die "Bitcoin Core"-Entwickler - - - Could not parse -rpcbind value %s as network address - Der Wert %s von -rpcbind wurde nicht als Netzwerkadresse erkannt - - - Error loading wallet.dat: Wallet requires newer version of Bitcoin Core - Fehler beim Laden von wallet.dat: Wallet benötigt neuere Version von Bitcoin Core - - - Error reading from database, shutting down. - Fehler beim lesen der Datenbank, Ausführung wird beendet. - - - Error: A fatal internal error occurred, see debug.log for details - Fehler: Ein schwerer interner Fehler ist aufgetreten, siehe debug.log für Details. - - - Error: Unsupported argument -tor found, use -onion. - Fehler: Nicht unterstütztes Argument -tor gefunden, bitte -onion verwenden. - - - Fee (in BTC/kB) to add to transactions you send (default: %s) - Gebühr (in BTC/kB), die von Ihnen gesendeten Transaktionen hinzugefügt wird (Standard: %s) - - - Information - Hinweis - - - Initialization sanity check failed. Bitcoin Core is shutting down. - Initialisierungsplausibilitätsprüfung fehlgeschlagen. Bitcoin Core wird beendet. - - - Invalid amount for -maxtxfee=<amount>: '%s' - Ungültiger Betrag für -maxtxfee=<amount>: '%s' - - - Invalid amount for -minrelaytxfee=<amount>: '%s' - Ungültiger Betrag für -minrelaytxfee=<amount>: '%s' - - - Invalid amount for -mintxfee=<amount>: '%s' - Ungültiger Betrag für -mintxfee=<amount>: '%s' - - - Invalid amount for -paytxfee=<amount>: '%s' (must be at least %s) - Ungültiger Betrag für -paytxfee=<amount>: '%s' (muss mindestens %s sein) - - - Invalid netmask specified in -whitelist: '%s' - Ungültige Netzmaske angegeben in -whitelist: '%s' - - - Keep at most <n> unconnectable transactions in memory (default: %u) - Maximal <n> nicht-verbindbare Transaktionen im Speicher halten (Standard: %u) - - - Need to specify a port with -whitebind: '%s' - Angabe eines Ports benötigt für -whitebind: '%s' - - - Node relay options: - Knoten-Weiterleitungsoptionen: - - - RPC SSL options: (see the Bitcoin Wiki for SSL setup instructions) - RPC-SSL-Optionen (siehe Bitcoin-Wiki für SSL-Einrichtung): - - - RPC server options: - RPC-Serveroptionen: - - - RPC support for HTTP persistent connections (default: %d) - Unterstützung für persistente HTTP-Verbindungen bei RPC (Standard: %d) - - - Rebuild block chain index from current blk000??.dat files on startup - Blockkettenindex aus aktuellen Dateien blk000??.dat beim Starten wiederaufbauen - - - Receive and display P2P network alerts (default: %u) - P2P-Netzwerk-Alarme empfangen und anzeigen (Standard: %u) - - - Send trace/debug info to console instead of debug.log file - Rückverfolgungs- und Debuginformationen an die Konsole senden, anstatt sie in debug.log zu schreiben - - - Send transactions as zero-fee transactions if possible (default: %u) - Transaktionen, wenn möglich, als gebührenfreie Transaktion senden (Standard: %u) - - - Set SSL root certificates for payment request (default: -system-) - SSL-Wurzelzertifikate für Zahlungsanforderungen festlegen (Standard: -system-) - - - Set language, for example "de_DE" (default: system locale) - Sprache festlegen, z.B. "de_DE" (Standard: Systemstandard) - - - Show all debugging options (usage: --help -help-debug) - Zeige alle Debuggingoptionen (Benutzung: --help -help-debug) - - - Show splash screen on startup (default: 1) - Startbildschirm beim Starten anzeigen (Standard: 1) - - - Shrink debug.log file on client startup (default: 1 when no -debug) - Protokolldatei debug.log beim Starten des Clients kürzen (Standard: 1, wenn kein -debug) - - - Signing transaction failed - Signierung der Transaktion fehlgeschlagen - - - Start minimized - Minimiert starten - - - The transaction amount is too small to pay the fee - Der Transaktionsbetrag ist zu niedrig, um die Gebühr zu bezahlen. - - - This is experimental software. - Dies ist experimentelle Software. - - - Transaction amount too small - Transaktionsbetrag zu niedrig - - - Transaction amounts must be positive - Transaktionsbeträge müssen positiv sein - - - Transaction too large for fee policy - Transaktion ist für die Gebührenrichtlinie zu groß - - - Transaction too large - Transaktion zu groß - - - UI Options: - Benutzeroberflächenoptionen: - - - Unable to bind to %s on this computer (bind returned error %s) - Kann auf diesem Computer nicht an %s binden (bind meldete Fehler %s) - - - Use UPnP to map the listening port (default: 1 when listening) - UPnP verwenden, um eine Portweiterleitung einzurichten (Standard: 1, wenn abgehört wird) - - - Username for JSON-RPC connections - Benutzername für JSON-RPC-Verbindungen - - - Wallet needed to be rewritten: restart Bitcoin Core to complete - Wallet musste neu geschrieben werden: starten Sie Bitcoin Core zur Fertigstellung neu - - - Warning - Warnung - - - Warning: Unsupported argument -benchmark ignored, use -debug=bench. - Warnung: Nicht unterstütztes Argument -benchmark wurde ignoriert, bitte -debug=bench verwenden. - - - Warning: Unsupported argument -debugnet ignored, use -debug=net. - Warnung: Nicht unterstütztes Argument -debugnet wurde ignoriert, bitte -debug=net verwenden. - - - Zapping all transactions from wallet... - Lösche alle Transaktionen aus Wallet... - - - on startup - beim Starten - - - wallet.dat corrupt, salvage failed - wallet.dat beschädigt, Datenrettung fehlgeschlagen - - - Password for JSON-RPC connections - Passwort für JSON-RPC-Verbindungen - - - Execute command when the best block changes (%s in cmd is replaced by block hash) - Befehl ausführen wenn der beste Block wechselt (%s im Befehl wird durch den Hash des Blocks ersetzt) - - - Upgrade wallet to latest format - Wallet auf das neueste Format aktualisieren - - - Rescan the block chain for missing wallet transactions - Blockkette erneut nach fehlenden Wallet-Transaktionen durchsuchen - - - Use OpenSSL (https) for JSON-RPC connections - OpenSSL (https) für JSON-RPC-Verbindungen verwenden - - - This help message - Dieser Hilfetext - - - Allow DNS lookups for -addnode, -seednode and -connect - Erlaube DNS-Abfragen für -addnode, -seednode und -connect - - - Loading addresses... - Lade Adressen... - - - Error loading wallet.dat: Wallet corrupted - Fehler beim Laden von wallet.dat: Wallet beschädigt - - - (1 = keep tx meta data e.g. account owner and payment request information, 2 = drop tx meta data) - (1 = TX-Metadaten wie z.B. Accountbesitzer und Zahlungsanforderungsinformationen behalten, 2 = TX-Metadaten verwerfen) - - - How thorough the block verification of -checkblocks is (0-4, default: %u) - Legt fest, wie gründlich die Blockverifikation von -checkblocks ist (0-4, Standard: %u) - - - Maintain a full transaction index, used by the getrawtransaction rpc call (default: %u) - Einen vollständigen Transaktionsindex führen, der vom RPC-Befehl "getrawtransaction" genutzt wird (Standard: %u) - - - Number of seconds to keep misbehaving peers from reconnecting (default: %u) - Anzahl Sekunden, während denen sich nicht konform verhaltenden Gegenstellen die Wiederverbindung verweigert wird (Standard: %u) - - - Output debugging information (default: %u, supplying <category> is optional) - Debugginginformationen ausgeben (Standard: %u, <category> anzugeben ist optional) - - - Use separate SOCKS5 proxy to reach peers via Tor hidden services (default: %s) - Separaten SOCKS5-Proxy verwenden, um Gegenstellen über versteckte Tor-Dienste zu erreichen (Standard: %s) - - - (default: %s) - (Standard: %s) - - - Acceptable ciphers (default: %s) - Zulässige Chiffren (Standard: %s) - - - Always query for peer addresses via DNS lookup (default: %u) - Adressen von Gegenstellen immer über DNS-Namensauflösung abfragen (Standard: %u) - - - Error loading wallet.dat - Fehler beim Laden von wallet.dat - - - Generate coins (default: %u) - Bitcoins erzeugen (Standard: %u) - - - How many blocks to check at startup (default: %u, 0 = all) - Wieviele Blöcke beim Starten geprüft werden sollen (Standard: %u, 0 = alle) - - - Include IP addresses in debug output (default: %u) - IP-Adressen in Debugausgabe einschließen (Standard: %u) - - - Invalid -proxy address: '%s' - Ungültige Adresse in -proxy: '%s' - - - Listen for JSON-RPC connections on <port> (default: %u or testnet: %u) - <port> nach JSON-RPC-Verbindungen abhören (Standard: %u oder Testnetz: %u) - - - Maintain at most <n> connections to peers (default: %u) - Maximal <n> Verbindungen zu Gegenstellen aufrechterhalten (Standard: %u) - - - Make the wallet broadcast transactions - Die Wallet soll Transaktionen übertragen/broadcasten - - - Maximum per-connection receive buffer, <n>*1000 bytes (default: %u) - Maximale Größe des Empfangspuffers pro Verbindung, <n> * 1000 Byte (Standard: %u) - - - Maximum per-connection send buffer, <n>*1000 bytes (default: %u) - Maximale Größe des Sendepuffers pro Verbindung, <n> * 1000 Byte (Standard: %u) - - - Prepend debug output with timestamp (default: %u) - Debugausgaben einen Zeitstempel voranstellen (Standard: %u) - - - Relay and mine data carrier transactions (default: %u) - "Data Carrier"-Transaktionen weiterleiten und erarbeiten (Standard: %u) - - - Relay non-P2SH multisig (default: %u) - Nicht-"P2SH-Multisig" weiterleiten (Standard: %u) - - - Server certificate file (default: %s) - Serverzertifikat (Standard: %s) - - - Server private key (default: %s) - Privater Serverschlüssel (Standard: %s) - - - Set key pool size to <n> (default: %u) - Größe des Schlüsselpools festlegen auf <n> (Standard: %u) - - - Set minimum block size in bytes (default: %u) - Minimale Blockgröße in Byte festlegen (Standard: %u) - - - Set the number of threads to service RPC calls (default: %d) - Maximale Anzahl an Threads zur Verarbeitung von RPC-Anfragen festlegen (Standard: %d) - - - Specify configuration file (default: %s) - Konfigurationsdatei festlegen (Standard: %s) - - - Specify connection timeout in milliseconds (minimum: 1, default: %d) - Verbindungzeitüberschreitung in Millisekunden festlegen (Minimum: 1, Standard: %d) - - - Specify pid file (default: %s) - PID-Datei festlegen (Standard: %s) - - - Spend unconfirmed change when sending transactions (default: %u) - Unbestätigtes Wechselgeld darf beim Senden von Transaktionen ausgegeben werden (Standard: %u) - - - Threshold for disconnecting misbehaving peers (default: %u) - Schwellenwert, um Verbindungen zu sich nicht konform verhaltenden Gegenstellen zu beenden (Standard: %u) - - - Unknown network specified in -onlynet: '%s' - Unbekannter Netztyp in -onlynet angegeben: '%s' - - - Cannot resolve -bind address: '%s' - Kann Adresse in -bind nicht auflösen: '%s' - - - Cannot resolve -externalip address: '%s' - Kann Adresse in -externalip nicht auflösen: '%s' - - - Invalid amount for -paytxfee=<amount>: '%s' - Ungültiger Betrag für -paytxfee=<amount>: '%s' - - - Insufficient funds - Unzureichender Kontostand - - - Loading block index... - Lade Blockindex... - - - Add a node to connect to and attempt to keep the connection open - Mit dem angegebenen Knoten verbinden und versuchen die Verbindung aufrecht zu erhalten - - - Loading wallet... - Lade Wallet... - - - Cannot downgrade wallet - Wallet kann nicht auf eine ältere Version herabgestuft werden - - - Cannot write default address - Standardadresse kann nicht geschrieben werden - - - Rescanning... - Durchsuche erneut... - - - Done loading - Laden abgeschlossen - - - Error - Fehler - - - \ No newline at end of file diff --git a/src/qt/locale/bitcoin_el_GR.ts b/src/qt/locale/bitcoin_el_GR.ts deleted file mode 100644 index ad0ee1d03..000000000 --- a/src/qt/locale/bitcoin_el_GR.ts +++ /dev/null @@ -1,2935 +0,0 @@ - - - AddressBookPage - - Right-click to edit address or label - Δεξί-κλικ για επεξεÏγασία της διεÏθυνσης ή της ετικέτας - - - Create a new address - ΔημιουÏγία νέας διεÏθυνσης - - - &New - &Îέo - - - Copy the currently selected address to the system clipboard - ΑντέγÏαψε την επιλεγμένη διεÏθυνση στο Ï€ÏόχειÏο του συστήματος - - - &Copy - &ΑντιγÏαφή - - - C&lose - Κ&λείσιμο - - - &Copy Address - &ΑντιγÏαφή διεÏθυνσης - - - Delete the currently selected address from the list - ΑντιγÏαφη της επιλεγμενης διεÏθυνσης στο Ï€ÏόχειÏο του συστηματος - - - Export the data in the current tab to a file - Εξαγωγή δεδομένων καÏτέλας σε αÏχείο - - - &Export - &Εξαγωγή - - - &Delete - &ΔιαγÏαφή - - - Choose the address to send coins to - Επιλογή διεÏθυνσης όπου θα σταλθοÏν νομίσματα - - - Choose the address to receive coins with - Επιλογή διεÏθυνσης απ' όπου θα ληφθοÏν νομίσματα - - - C&hoose - Ε&πιλογή - - - Sending addresses - ΔιευθÏνσεις αποστολής - - - Receiving addresses - ΔιευθÏνσεις λήψης - - - These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins. - Αυτές είναι οι Bitcoin διευθÏνσεις σας για να λαμβάνετε πληÏωμές. Δίνοντας μία ξεχωÏιστή διεÏθυνση σε κάθε αποστολέα, θα μποÏείτε να ελέγχετε ποιος σας πληÏώνει. - - - These are your Bitcoin addresses for receiving payments. It is recommended to use a new receiving address for each transaction. - Αυτές είναι οι Bitcoin διευθÏνσεις σας για να λαμβάνετε πληÏωμές. Δίνοντας μία ξεχωÏιστή διεÏθυνση σε κάθε αποστολέα, θα μποÏείτε να ελέγχετε ποιος σας πληÏώνει. - - - Copy &Label - ΑντιγÏαφή &επιγÏαφής - - - &Edit - &ΕπεξεÏγασία - - - Export Address List - Εξαγωγή της λίστας διευθÏνσεων - - - Comma separated file (*.csv) - ΑÏχείο οÏιοθετημένο με κόμματα (*.csv) - - - Exporting Failed - Η Εξαγωγή Απέτυχε - - - There was an error trying to save the address list to %1. Please try again. - ΠαÏουσιάστηκε σφάλμα κατά την αποθήκευση της λίστας ποÏτοφολιών στο %1. ΠαÏακαλώ δοκιμάστε ξανά - - - - AddressTableModel - - Label - ΕπιγÏαφή - - - Address - ΔιεÏθυνση - - - (no label) - (χωÏίς ετικέτα) - - - - AskPassphraseDialog - - Passphrase Dialog - ΦÏάση Ï€Ïόσβασης - - - Enter passphrase - Βάλτε κωδικό Ï€Ïόσβασης - - - New passphrase - &Αλλαγή ÎºÏ‰Î´Î¹ÎºÎ¿Ï - - - Repeat new passphrase - Επανέλαβε τον νέο κωδικό Ï€Ïόσβασης - - - Encrypt wallet - &ΚÏυπτογÏάφηση ποÏÏ„Î¿Ï†Î¿Î»Î¹Î¿Ï - - - This operation needs your wallet passphrase to unlock the wallet. - Αυτη η ενεÏγεία χÏειάζεται τον κωδικό του ποÏÏ„Î¿Ï†Î¿Î»Î¹Î¿Ï Î³Î¹Î± να ξεκλειδώσει το ποÏτοφόλι. - - - Unlock wallet - Ξεκλειδωσε το ποÏτοφολι - - - This operation needs your wallet passphrase to decrypt the wallet. - Αυτη η ενεÏγεια χÏειάζεται τον κωδικο του ποÏτοφολιου για να αποκÏυπτογÏαφησειι το ποÏτοφολι. - - - Decrypt wallet - ΑποκÏυπτογÏάφησε το ποÏτοφολι - - - Change passphrase - Άλλαξε κωδικο Ï€Ïόσβασης - - - Confirm wallet encryption - Επιβεβαίωσε την κÏυπτογÏαφηση του ποÏÏ„Î¿Ï†Î¿Î»Î¹Î¿Ï - - - Warning: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR BITCOINS</b>! - ΠÏοσοχη: Εαν κÏυπτογÏαφησεις το ποÏτοφολι σου και χάσεις τον κωδικο σου θα χάσεις <b> ΟΛΑ ΣΟΥ ΤΑ BITCOINS</b>! -Είσαι σίγουÏος ότι θέλεις να κÏυπτογÏαφησεις το ποÏτοφολι; - - - Are you sure you wish to encrypt your wallet? - Είστε σίγουÏοι ότι θέλετε να κÏυπτογÏαφήσετε το ποÏτοφόλι σας; - - - 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. - ΣΗΜΑÎΤΙΚΟ: Τα Ï€ÏοηγοÏμενα αντίγÏαφα ασφαλείας που έχετε κάνει από το αÏχείο του ποÏτοφόλιου σας θα Ï€Ïέπει να αντικατασταθουν με το νέο που δημιουÏγείται, κÏυπτογÏαφημένο αÏχείο ποÏτοφόλιου. Για λόγους ασφαλείας, τα Ï€ÏοηγοÏμενα αντίγÏαφα ασφαλείας του μη κÏυπτογÏαφημένου αÏχείου ποÏτοφόλιου θα καταστουν άχÏηστα μόλις αÏχίσετε να χÏησιμοποιείτε το νέο κÏυπτογÏαφημένο ποÏτοφόλι. - - - Warning: The Caps Lock key is on! - ΠÏοσοχη: το πλήκτÏο Caps Lock είναι ενεÏγο. - - - Wallet encrypted - ΚÏυπτογÏαφημενο ποÏτοφολι - - - 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>. - Εισάγετε τον νέο κωδικό Ï€Ïόσβασης στον ποÏτοφόλι <br/> ΠαÏακαλώ χÏησιμοποιείστε ένα κωδικό με <b> 10 ή πεÏισσότεÏους τυχαίους χαÏακτήÏες</b> ή <b> οχτώ ή παÏαπάνω λέξεις</b>. - - - Wallet encryption failed - Η κÏυπτογÏαφηση του ποÏÏ„Î¿Ï†Î¿Î»Î¹Î¿Ï Î±Ï€Î­Ï„Ï…Ï‡Îµ - - - Wallet encryption failed due to an internal error. Your wallet was not encrypted. - Η κÏυπτογÏάφηση του ποÏÏ„Î¿Ï†Î¿Î»Î¹Î¿Ï Î±Ï€Î­Ï„Ï…Ï‡Îµ λογω εσωτεÏÎ¹ÎºÎ¿Ï ÏƒÏ†Î¬Î»Î¼Î±Ï„Î¿Ï‚. Το ποÏτοφολι δεν κÏυπτογÏαφηθηκε. - - - The supplied passphrases do not match. - Οι εισαχθέντες κωδικοί δεν ταιÏιάζουν. - - - Wallet unlock failed - το ξεκλείδωμα του ποÏÏ„Î¿Ï†Î¿Î»Î¹Î¿Ï Î±Ï€Î­Ï„Ï…Ï‡Îµ - - - The passphrase entered for the wallet decryption was incorrect. - Ο κωδικος που εισήχθη για την αποκÏυπτογÏαφηση του ποÏÏ„Î¿Ï†Î¿Î»Î¹Î¿Ï Î®Ï„Î±Î½ λαθος. - - - Wallet decryption failed - Η αποκÏυπτογÏαφηση του ποÏÏ„Î¿Ï†Î¿Î»Î¹Î¿Ï Î±Ï€Î­Ï„Ï…Ï‡Îµ - - - Wallet passphrase was successfully changed. - Ο κωδικος του ποÏÏ„Î¿Ï†Î¿Î»Î¹Î¿Ï Î¬Î»Î»Î±Î¾Îµ με επιτυχία. - - - - BitcoinGUI - - Sign &message... - ΥπογÏαφή &ΜηνÏματος... - - - Synchronizing with network... - ΣυγχÏονισμός με το δίκτυο... - - - &Overview - &Επισκόπηση - - - Node - Κόμβος - - - Show general overview of wallet - Εμφάνισε τη γενική εικόνα του ποÏÏ„Î¿Ï†Î¿Î»Î¹Î¿Ï - - - &Transactions - &Συναλλαγές - - - Browse transaction history - ΠεÏιήγηση στο ιστοÏικό συναλλαγών - - - E&xit - Έ&ξοδος - - - Quit application - Εξοδος από την εφαÏμογή - - - About &Qt - Σχετικά με &Qt - - - Show information about Qt - Εμφάνισε πληÏοφοÏίες σχετικά με Qt - - - &Options... - &Επιλογές... - - - &Encrypt Wallet... - &ΚÏυπτογÏάφησε το ποÏτοφόλι - - - &Backup Wallet... - &ΑντίγÏαφο ασφαλείας του ποÏÏ„Î¿Ï†Î¿Î»Î¹Î¿Ï - - - &Change Passphrase... - &Άλλαξε κωδικο Ï€Ïόσβασης - - - &Sending addresses... - ΔιευθÏνσεις αποστολής - - - &Receiving addresses... - ΔιευθÏνσεις λήψης - - - Open &URI... - 'Ανοιγμα &URI - - - Bitcoin Core client - ΕφαÏμογή Bitcoin Core - - - Importing blocks from disk... - Εισαγωγή μπλοκ από τον σκληÏο δίσκο ... - - - Reindexing blocks on disk... - ΦόÏτωση ευÏετηÏίου μπλοκ στον σκληÏο δισκο... - - - Send coins to a Bitcoin address - Στείλε νομίσματα σε μια διεÏθυνση bitcoin - - - Backup wallet to another location - ΔημιουÏγία αντιγÏάφου ασφαλείας ποÏÏ„Î¿Ï†Î¿Î»Î¹Î¿Ï ÏƒÎµ άλλη τοποθεσία - - - Change the passphrase used for wallet encryption - Αλλαγή του ÎºÏ‰Î´Î¹ÎºÎ¿Ï ÎºÏυπτογÏάφησης του ποÏÏ„Î¿Ï†Î¿Î»Î¹Î¿Ï - - - &Debug window - &ΠαÏάθυÏο αποσφαλμάτωσης - - - Open debugging and diagnostic console - Άνοιγμα κονσόλας αποσφαλμάτωσης και διαγνωστικών - - - &Verify message... - &Επιβεβαίωση μηνÏματος - - - Bitcoin - Bitcoin - - - Wallet - ΠοÏτοφόλι - - - &Send - &Αποστολή - - - &Receive - &ΠαÏαλαβή - - - Show information about Bitcoin Core - Σχετικά με το Bitcoin Core - - - &Show / Hide - &Εμφάνισε/ΚÏÏψε - - - Show or hide the main Window - Εμφάνιση ή αποκÏÏψη του κεντÏικου παÏάθυÏου - - - Encrypt the private keys that belong to your wallet - ΚÏυπτογÏαφήστε τα ιδιωτικά κλειδιά που ανήκουν στο ποÏτοφόλι σας - - - Sign messages with your Bitcoin addresses to prove you own them - ΥπογÏάψτε ένα μήνυμα για να βεβαιώσετε πως είστε ο κάτοχος αυτής της διεÏθυνσης - - - Verify messages to ensure they were signed with specified Bitcoin addresses - ΥπογÏάψτε ένα μήνυμα για ν' αποδείξετε πως ανήκει μια συγκεκÏιμένη διεÏθυνση Bitcoin - - - &File - &ΑÏχείο - - - &Settings - &Ρυθμίσεις - - - &Help - &Βοήθεια - - - Tabs toolbar - ΕÏγαλειοθήκη καÏτελών - - - Bitcoin Core - Bitcoin Core - - - Request payments (generates QR codes and bitcoin: URIs) - Αίτηση πληÏωμών (δημιουÏγεί QR codes και διευθÏνσεις bitcoin: ) - - - &About Bitcoin Core - &Σχετικά με το Bitcoin Core - - - Show the list of used sending addresses and labels - ΠÏοβολή της λίστας των χÏησιμοποιημένων διευθÏνσεων και ετικετών αποστολής - - - Show the list of used receiving addresses and labels - ΠÏοβολή της λίστας των χÏησιμοποιημένων διευθÏνσεων και ετικετών λήψεως - - - Open a bitcoin: URI or payment request - Άνοιγμα bitcoin: URI αίτησης πληÏωμής - - - &Command-line options - &Επιλογές γÏαμμής εντολών - - - Show the Bitcoin Core help message to get a list with possible Bitcoin command-line options - Εμφανιση του Bitcoin-Qt μήνυματος βοήθειας για να πάÏετε μια λίστα με τις πιθανές επιλογές Bitcoin γÏαμμής εντολών. - - - No block source available... - Η πηγή του μπλοκ δεν ειναι διαθέσιμη... - - - %1 and %2 - %1 και %2 - - - %1 behind - %1 πίσω - - - Last received block was generated %1 ago. - Το τελευταίο μπλοκ που ελήφθη δημιουÏγήθηκε %1 Ï€Ïιν. - - - Transactions after this will not yet be visible. - Οι συναλλαγές μετά από αυτό δεν θα είναι ακόμη οÏατες. - - - Error - Σφάλμα - - - Warning - ΠÏοειδοποίηση - - - Information - ΠληÏοφοÏία - - - Up to date - ΕνημεÏωμένο - - - Catching up... - ΕνημέÏωση... - - - Date: %1 - - ΗμεÏομηνία: %1 - - - - Amount: %1 - - Ποσό: %1 - - - - Type: %1 - - ΤÏπος: %1 - - - - Label: %1 - - Ετικέτα: %1 - - - - Address: %1 - - ΔιεÏθυνση: %1 - - - - Sent transaction - Η συναλλαγή απεστάλη - - - Incoming transaction - ΕισεÏχόμενη συναλλαγή - - - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - Το ποÏτοφόλι είναι <b>κÏυπτογÏαφημένο</b> και <b>ξεκλείδωτο</b> - - - Wallet is <b>encrypted</b> and currently <b>locked</b> - Το ποÏτοφόλι είναι <b>κÏυπτογÏαφημένο</b> και <b>κλειδωμένο</b> - - - - ClientModel - - Network Alert - Ειδοποίηση ΔικτÏου - - - - CoinControlDialog - - Coin Selection - Επιλογή κεÏμάτων - - - Quantity: - Ποσότητα: - - - Bytes: - Bytes: - - - Amount: - Ποσό: - - - Priority: - ΠÏοτεÏαιότητα: - - - Fee: - ΤαÏίφα - - - Dust: - Σκόνη - - - After Fee: - ΤαÏίφα αλλαγής - - - Change: - Ρέστα: - - - (un)select all - (από)επιλογή όλων - - - Tree mode - Εμφάνιση Ï„Ïπου δέντÏο - - - List mode - Λίστα εντολών - - - Amount - Ποσό - - - Received with label - ΠαÏαλήφθηκε με επιγÏαφή - - - Received with address - ΠαÏαλείφθηκε με την εξής διεÏθυνση - - - Date - ΗμεÏομηνία - - - Confirmations - ΕπικυÏώσεις - - - Confirmed - ΕπικυÏωμένες - - - Priority - ΠÏοτεÏαιότητα - - - Copy address - ΑντιγÏαφή διεÏθυνσης - - - Copy label - ΑντιγÏαφή επιγÏαφής - - - Copy amount - ΑντιγÏαφή Ï€Î¿ÏƒÎ¿Ï - - - Copy transaction ID - ΑντιγÏαφη του ID Συναλλαγής - - - Lock unspent - Κλείδωμα αξόδευτων - - - Unlock unspent - Ξεκλείδωμα αξόδευτων - - - Copy quantity - ΑντιγÏαφή ποσότητας - - - Copy fee - ΑντιγÏαφή ταÏίφας - - - Copy after fee - ΑντιγÏαφή μετα-ταÏίφας - - - Copy bytes - ΑντιγÏαφή των byte - - - Copy priority - ΑντιγÏαφή Ï€ÏοτεÏαιότητας - - - Copy dust - ΑντιγÏαφή 'σκόνης' - - - Copy change - ΑντιγÏαφή των Ïέστων - - - highest - Ïψιστη - - - higher - υψηλότεÏη - - - high - ψηλή - - - medium-high - μεσαία-ψηλή - - - medium - μεσαία - - - low-medium - μεσαία-χαμηλή - - - low - χαμηλή - - - lower - χαμηλότεÏη - - - lowest - χαμηλότατη - - - (%1 locked) - (%1 κλειδωμένο) - - - none - κανένα - - - This label turns red if the transaction size is greater than 1000 bytes. - Αυτή η ετικέτα γίνεται κόκκινη αν το μέγεθος της συναλλαγής είναι μεγαλÏτεÏο από 1000 bytes. - - - This label turns red if the priority is smaller than "medium". - Αυτή η ετικέτα γίνεται κόκκινη αν η Ï€ÏοτεÏαιότητα είναι μικÏότεÏη από "μεσαία". - - - This label turns red if any recipient receives an amount smaller than %1. - Αυτή η ετικέτα γίνεται κόκκινη αν οποιοσδήποτε παÏαλήπτης λάβει ποσό μικÏότεÏο από %1. - - - yes - ναι - - - no - όχι - - - This means a fee of at least %1 per kB is required. - Ελάχιστο χÏεώσιμο ποσό τουλάχιστο %1 ανα kB - - - Transactions with higher priority are more likely to get included into a block. - Συναλλαγές με υψηλότεÏη Ï€ÏοτεÏαιότητα είναι πιο πιθανό να πεÏιλαμβάνονται σε ένα μπλοκ. - - - (no label) - (χωÏίς ετικέτα) - - - change from %1 (%2) - Ïέστα από %1 (%2) - - - (change) - (Ïέστα) - - - - - EditAddressDialog - - Edit Address - ΕπεξεÏγασία ΔιεÏθυνσης - - - &Label - &ΕπιγÏαφή - - - The label associated with this address list entry - Η ετικέτα που συνδέεται με αυτήν την καταχώÏηση στο βιβλίο διευθÏνσεων - - - The address associated with this address list entry. This can only be modified for sending addresses. - Η διεÏθυνση σχετίζεται με αυτή την καταχώÏηση του βιβλίου διευθÏνσεων. ΜποÏεί να Ï„Ïοποποιηθεί μόνο για τις διευθÏνσεις αποστολής. - - - &Address - &ΔιεÏθυνση - - - New receiving address - Îέα διεÏθυνση λήψης - - - New sending address - Îέα διεÏθυνση αποστολής - - - Edit receiving address - ΕπεξεÏγασία διεÏθυνσης λήψης - - - Edit sending address - ΕπεξεÏγασία διεÏθυνσης αποστολής - - - The entered address "%1" is already in the address book. - Η διεÏθυνση "%1" βÏίσκεται ήδη στο βιβλίο διευθÏνσεων. - - - The entered address "%1" is not a valid Bitcoin address. - Η διεÏθυνση "%1" δεν είναι έγκυÏη Bitcoin διεÏθυνση. - - - Could not unlock wallet. - Δεν είναι δυνατό το ξεκλείδωμα του ποÏτοφολιοÏ. - - - New key generation failed. - Η δημιουÏγία νέου ÎºÎ»ÎµÎ¹Î´Î¹Î¿Ï Î±Ï€Î­Ï„Ï…Ï‡Îµ. - - - - FreespaceChecker - - A new data directory will be created. - Θα δημιουÏγηθεί ένας νέος φάκελος δεδομένων. - - - name - όνομα - - - Directory already exists. Add %1 if you intend to create a new directory here. - Κατάλογος ήδη υπάÏχει. ΠÏοσθήκη %1, αν σκοπεÏετε να δημιουÏγήσετε έναν νέο κατάλογο εδώ. - - - Path already exists, and is not a directory. - Η διαδÏομή υπάÏχει ήδη αλλά δεν είναι φάκελος - - - Cannot create data directory here. - Δεν μποÏεί να δημιουÏγηθεί φάκελος δεδομένων εδώ. - - - - HelpMessageDialog - - Bitcoin Core - Bitcoin Core - - - version - έκδοση - - - (%1-bit) - (%1-bit) - - - About Bitcoin Core - Σχετικά με το Bitcoin Core - - - Command-line options - επιλογής γÏαμμής εντολών - - - Usage: - ΧÏήση: - - - command-line options - επιλογής γÏαμμής εντολών - - - - Intro - - Welcome - Καλώς ήÏθατε - - - Welcome to Bitcoin Core. - Καλώς ήÏθατε στο Bitcoin Core. - - - As this is the first time the program is launched, you can choose where Bitcoin Core will store its data. - Καθώς αυτή είναι η Ï€Ïώτη φοÏά που εκκινείται το Ï€ÏόγÏαμμα, μποÏείτε να διαλέξετε Ï€Î¿Ï Î¸Î± αποθηκεÏει το Bitcoin Core τα δεδομένα του. - - - Bitcoin Core will download and store a copy of the Bitcoin block chain. At least %1GB of data will be stored in this directory, and it will grow over time. The wallet will also be stored in this directory. - O πυÏήνας Bitcoin θα κατεβάσει και να αποθηκεÏσει ένα αντίγÏαφο της αλυσίδας μπλοκ Bitcoin. Τουλάχιστον %1GB δεδομένων θα αποθηκευτοÏν σε αυτόν τον κατάλογο, και θα αυξηθεί με την πάÏοδο του χÏόνου. Το ποÏτοφόλι θα αποθηκευτεί σε αυτόν τον κατάλογο. - - - Use the default data directory - ΧÏήση του Ï€Ïοεπιλεγμένου φακέλου δεδομένων - - - Use a custom data directory: - ΠÏοσαÏμογή του φακέλου δεδομένων: - - - Bitcoin Core - Bitcoin Core - - - Error: Specified data directory "%1" cannot be created. - Σφάλμα: Ο καθοÏισμένος φάκελος δεδομένων "%1" δεν μποÏεί να δημιουÏγηθεί. - - - Error - Σφάλμα - - - %n GB of free space available - %n GB ελεÏθεÏου χώÏου διαθέσιμα%n GB ελεÏθεÏου χώÏου διαθέσιμα - - - (of %n GB needed) - (από το %n GB που απαιτείται)(από τα %n GB που απαιτοÏνται) - - - - OpenURIDialog - - Open URI - 'Ανοιγμα &URI - - - Open payment request from URI or file - Ανοιχτό αίτημα πληÏωμής από URI ή απο αÏχείο - - - URI: - URI: - - - Select payment request file - Επιλέξτε πληÏωμή αÏχείου αίτησης - - - Select payment request file to open - Επιλέξτε αÏχείο πληÏωμής για άνοιγμα. - - - - OptionsDialog - - Options - Ρυθμίσεις - - - &Main - &ΚÏÏιο - - - Size of &database cache - Μέγεθος κÏυφής μνήμης βάσης δεδομένων. - - - MB - MB - - - Number of script &verification threads - ΑÏιθμός script και γÏαμμές επαλήθευσης - - - Accept connections from outside - Αποδοχή συνδέσεων απο έξω - - - Allow incoming connections - Αποδοχή εισεÏχόμενων συναλλαγών - - - IP address of the proxy (e.g. IPv4: 127.0.0.1 / IPv6: ::1) - ΔιεÏθυνση IP του διαμεσολαβητή (Ï€.χ. 127.0.0.1 / IPv6: ::1) - - - Minimize instead of exit the application when the window is closed. When this option is enabled, the application will be closed only after selecting Exit in the menu. - Ελαχιστοποίηση αντί για έξοδο κατά το κλείσιμο του παÏαθÏÏου. Όταν αυτή η επιλογή είναι ενεÏγοποιημένη, η εφαÏμογή θα κλείνει μόνο αν επιλεχθεί η Έξοδος στο μενοÏ. - - - 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 |. - URLs από Ï„Ïίτους (Ï€.χ. ένας εξεÏευνητής μπλοκ) τα οποία εμφανίζονται στην καÏτέλα συναλλαγών ως στοιχεία μενοÏ. Το %s στα URL αντικαθιστάται από την τιμή της κατατεμαχισμένης συναλλαγής. - - - Third party transaction URLs - ΔιευθÏνσεις Ï„Ïίτων συναλλαγών. - - - Active command-line options that override above options: - ΕνεÏγές επιλογές γÏαμμής-εντολών που παÏακάμπτουν τις παÏαπάνω επιλογές: - - - Reset all client options to default. - ΕπαναφοÏα όλων των επιλογων του πελάτη σε default. - - - &Reset Options - ΕπαναφοÏα Ïυθμίσεων - - - &Network - &Δίκτυο - - - (0 = auto, <0 = leave that many cores free) - (0 = αυτόματο, <0 = ελεÏθεÏοι πυÏήνες) - - - W&allet - Π&οÏτοφόλι - - - Expert - ΈμπειÏος - - - Enable coin &control features - Επιλογή κατα πόσο να αναδείχνονται οι δυνατότητες ελέγχου κεÏμάτων. - - - 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. - Εάν απενεÏγοποιήσετε το ξόδεμα μη επικυÏωμένων Ïέστων, τα Ïέστα από μια συναλλαγή δεν μποÏοÏν να χÏησιμοποιηθοÏν έως ότου αυτή η συναλλαγή έχει έστω μια επικÏÏωση. Αυτό επίσης επηÏεάζει το πως υπολογίζεται το υπόλοιπό σας. - - - &Spend unconfirmed change - &Ξόδεμα μη επικυÏωμένων Ïέστων - - - Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled. - Αυτόματο άνοιγμα των θυÏών Bitcoin στον δÏομολογητή. ΛειτουÏγεί μόνο αν ο δÏομολογητής σας υποστηÏίζει τη λειτουÏγία UPnP. - - - Map port using &UPnP - Απόδοση θυÏών με χÏήστη &UPnP - - - Connect to the Bitcoin network through a SOCKS5 proxy. - ΣÏνδεση στο Bitcoin δίκτυο μέσω διαμεσολαβητή SOCKS5 (Ï€.χ. για σÏνδεση μέσω Tor) - - - &Connect through SOCKS5 proxy (default proxy): - &ΣÏνδεση μέσω διαμεσολαβητή SOCKS5 (Ï€Ïοεπιλεγμένος) - - - Proxy &IP: - &IP διαμεσολαβητή: - - - &Port: - &ΘÏÏα: - - - Port of the proxy (e.g. 9050) - ΘÏÏα διαμεσολαβητή - - - &Window - &ΠαÏάθυÏο - - - Show only a tray icon after minimizing the window. - Εμφάνιση μόνο εικονιδίου στην πεÏιοχή ειδοποιήσεων κατά την ελαχιστοποίηση - - - &Minimize to the tray instead of the taskbar - &Ελαχιστοποίηση στην πεÏιοχή ειδοποιήσεων αντί της γÏαμμής εÏγασιών - - - M&inimize on close - Ε&λαχιστοποίηση κατά το κλείσιμο - - - &Display - &Απεικόνιση - - - User Interface &language: - Γλώσσα πεÏιβάλλοντος εÏγασίας: - - - &Unit to show amounts in: - &Μονάδα μέτÏησης: - - - Choose the default subdivision unit to show in the interface and when sending coins. - Διαλέξτε την Ï€Ïοεπιλεγμένη υποδιαίÏεση που θα εμφανίζεται όταν στέλνετε νομίσματα. - - - Whether to show coin control features or not. - Επιλογή κατα πόσο να αναδείχνονται οι δυνατότητες ελέγχου κεÏμάτων. - - - - &OK - &ΟΚ - - - &Cancel - &ΑκÏÏωση - - - default - Ï€Ïοεπιλογή - - - none - κανένα - - - Confirm options reset - Επιβεβαιώση των επιλογων επαναφοÏάς - - - Client restart required to activate changes. - ΧÏειάζεται επανεκκίνηση του Ï€ÏογÏάμματος για να ενεÏγοποιηθοÏν οι αλλαγές. - - - This change would require a client restart. - Η αλλαγή αυτή θα χÏειαστεί επανεκκίνηση του Ï€ÏογÏάμματος - - - The supplied proxy address is invalid. - Δεν είναι έγκυÏη η διεÏθυνση διαμεσολαβητή - - - - OverviewPage - - Form - ΦόÏμα - - - The displayed information may be out of date. Your wallet automatically synchronizes with the Bitcoin network after a connection is established, but this process has not completed yet. - Οι πληÏοφοÏίες που εμφανίζονται μποÏεί να είναι ξεπεÏασμένες. Το ποÏτοφόλι σας συγχÏονίζεται αυτόματα με το δίκτυο Bitcoin μετά από μια σÏνδεση, αλλά αυτή η διαδικασία δεν έχει ακόμη ολοκληÏωθεί. - - - Watch-only: - Επίβλεψη μόνο: - - - Available: - Διαθέσιμο: - - - Your current spendable balance - Το Ï„Ïέχον διαθέσιμο υπόλοιπο - - - Pending: - ΕκκÏεμοÏν: - - - Total of transactions that have yet to be confirmed, and do not yet count toward the spendable balance - Το άθÏοισμα των συναλλαγών που δεν έχουν ακόμα επιβεβαιωθεί και δεν Ï€ÏοσμετÏώνται στο Ï„Ïέχον διαθέσιμο υπόλοιπό σας - - - Immature: - ΑνώÏιμος - - - Mined balance that has not yet matured - ΕξοÏυγμενο υπόλοιπο που δεν έχει ακόμα ωÏιμάσει - - - Balances - Υπόλοιπο: - - - Total: - ΣÏνολο: - - - Your current total balance - Το Ï„Ïέχον συνολικό υπόλοιπο - - - Your current balance in watch-only addresses - Το Ï„Ïέχον υπόλοιπο σας σε διευθÏνσεις παÏακολοÏθησης μόνο - - - Spendable: - Ξοδεμένα: - - - Recent transactions - ΠÏόσφατες συναλλαγές - - - Unconfirmed transactions to watch-only addresses - Μη επικυÏωμένες συναλλαγές σε διευθÏνσεις παÏακολοÏθησης μόνο - - - Mined balance in watch-only addresses that has not yet matured - ΕξοÏυγμένο υπόλοιπο σε διευθÏνσεις παÏακολοÏθησης μόνο που δεν έχει ωÏιμάσει ακόμα - - - Current total balance in watch-only addresses - Το Ï„Ïέχον συνολικό υπόλοιπο σε διευθÏνσεις παÏακολοÏθησης μόνο - - - - PaymentServer - - URI handling - ΧειÏισμός URI - - - Invalid payment address %1 - Μη έγκυÏη διεÏθυνση πληÏωμής %1 - - - Payment request rejected - Η αίτηση πληÏωμής έχει αÏνηθεί. - - - Payment request is not initialized. - Η αίτηση πληÏωμής δεν έχει αÏχίζει ακόμα. - - - Requested payment amount of %1 is too small (considered dust). - Το ζητοÏμενο ποσό πληÏωμής του %1 είναι Ï€Î¿Î»Ï Î¼Î¹ÎºÏÏŒ (θεωÏείται σκόνη) - - - Payment request error - Σφάλμα αιτήματος πληÏωμής - - - Cannot start bitcoin: click-to-pay handler - Δεν είναι δυνατή η εκκίνηση του Bitcoin: click-to-pay handler - - - Payment request fetch URL is invalid: %1 - Η διεÏθυνση πληÏωμής (URL) δεν είναι έγκυÏη: %1 - - - Payment request file handling - Επιλέξτε αÏχείο πληÏωμής για άνοιγμα. - - - Refund from %1 - ΕπιστÏοφή Ï€Î¿ÏƒÎ¿Ï Î±Ï€ÏŒ %1 - - - Error communicating with %1: %2 - Σφάλμα επικοινωνίας με %1: %2 - - - Payment request cannot be parsed! - Η αίτηση πληÏωμής δεν μποÏεί να αναλυθεί! - - - Bad response from server %1 - Κακή απάντηση από διακομιστή %1 - - - Payment acknowledged - ΠληÏωμή αναγνωÏίστηκε - - - Network request error - Σφάλμα αιτήματος δικτÏου - - - - PeerTableModel - - Ping Time - ΧÏόνος καθυστέÏησης - - - - QObject - - Amount - Ποσό - - - Enter a Bitcoin address (e.g. %1) - Εισάγετε μια διεÏθυνση Bitcoin (Ï€.χ. %1) - - - %1 d - %1 d - - - %1 h - %1 ÏŽ - - - %1 m - %1 λ - - - %1 s - %1 s - - - None - Κανένα - - - N/A - Μη διαθέσιμο - - - %1 ms - %1 ms - - - - QRImageWidget - - &Save Image... - &Αποθήκευση εικόνας... - - - &Copy Image - &ΑντιγÏαφή εικόνας - - - Save QR Code - Αποθήκευση κώδικα QR - - - PNG Image (*.png) - Εικόνες PNG (*.png) - - - - RPCConsole - - Client name - Όνομα Πελάτη - - - N/A - Μη διαθέσιμο - - - Client version - Έκδοση Πελάτη - - - &Information - &ΠληÏοφοÏία - - - Debug window - ΠαÏάθυÏο αποσφαλμάτωσης - - - General - Γενικά - - - Using OpenSSL version - ΧÏησιμοποιηση της OpenSSL εκδοσης - - - Using BerkeleyDB version - ΧÏήση BerkeleyDB έκδοσης - - - Startup time - ΧÏόνος εκκίνησης - - - Network - Δίκτυο - - - Name - Όνομα - - - Number of connections - ΑÏιθμός συνδέσεων - - - Block chain - Αλυσίδα μπλοκ - - - Current number of blocks - ΤÏέχον αÏιθμός μπλοκ - - - Received - ΠαÏαλήφθησαν - - - Sent - Αποστολή - - - &Peers - &ΧÏήστες - - - Select a peer to view detailed information. - Επιλέξτε ένα χÏήστη για να δείτε αναλυτικές πληÏοφοÏίες. - - - Version - Έκδοση - - - Services - ΥπηÏεσίες - - - Starting Height - ΑÏχικό Ïψος - - - Sync Height - Ύψος ÏƒÏ…Î³Ï‡Î¿Î½Î¹ÏƒÎ¼Î¿Ï - - - Ban Score - Î£ÎºÎ¿Ï Î±Ï€Î¿ÎºÎ»Î·ÏƒÎ¼Î¿Ï - - - Connection Time - ΧÏόνος σÏνδεσης - - - Last Send - Τελευταία αποστολή - - - Last Receive - Τελευταία λήψη - - - Bytes Sent - Σταλθέντα bytes - - - Bytes Received - Ληφθέντα bytes - - - Ping Time - ΧÏόνος καθυστέÏησης - - - Last block time - ΧÏόνος τελευταίου μπλοκ - - - &Open - &Άνοιγμα - - - &Console - &Κονσόλα - - - &Network Traffic - &Κίνηση δικτÏου - - - &Clear - &ΕκκαθάÏιση - - - Totals - ΣÏνολα - - - In: - ΕισεÏχόμενα: - - - Out: - ΕξεÏχόμενα: - - - Build date - ΗμεÏομηνία κατασκευής - - - Debug log file - ΑÏχείο καταγÏαφής ÎµÎ½Ï„Î¿Ï€Î¹ÏƒÎ¼Î¿Ï ÏƒÏ†Î±Î»Î¼Î¬Ï„Ï‰Î½ - - - Clear console - ΚαθαÏισμός κονσόλας - - - Use up and down arrows to navigate history, and <b>Ctrl-L</b> to clear screen. - ΧÏησιμοποιήστε το πάνω και κάτω βέλος για να πεÏιηγηθείτε στο ιστοÏικο, και <b>Ctrl-L</b> για εκκαθαÏιση οθονης. - - - Type <b>help</b> for an overview of available commands. - ΓÏάψτε <b>help</b> για μια επισκόπηση των διαθέσιμων εντολών - - - %1 B - %1 B - - - %1 KB - %1 KB - - - %1 MB - %1 MB - - - %1 GB - %1 GB - - - via %1 - μέσω %1 - - - never - ποτέ - - - Inbound - ΕισεÏχόμενα - - - Outbound - ΕξεÏχόμενα - - - Unknown - Άγνωστο(α) - - - Fetching... - Ανάκτηση... - - - - ReceiveCoinsDialog - - &Amount: - &Ποσό: - - - &Label: - &ΕπιγÏαφή - - - &Message: - &Μήνυμα: - - - R&euse an existing receiving address (not recommended) - Ε&παναχÏησιμοποίηση υπάÏχουσας διεÏθυνσης λήψης (δεν συνιστάται) - - - Clear all fields of the form. - ΚαθαÏισμός όλων των πεδίων της φόÏμας. - - - Clear - ΚαθαÏισμός - - - &Request payment - &Αίτηση πληÏωμής - - - Show - Εμφάνιση - - - Remove the selected entries from the list - ΑφαίÏεση επιλεγμένων καταχωÏίσεων από τη λίστα - - - Remove - ΑφαίÏεση - - - Copy label - ΑντιγÏαφή επιγÏαφής - - - Copy message - ΑντιγÏαφή μηνÏματος - - - Copy amount - ΑντιγÏαφή Ï€Î¿ÏƒÎ¿Ï - - - - ReceiveRequestDialog - - QR Code - Κώδικας QR - - - Copy &URI - ΑντιγÏαφη της επιλεγμενης διεÏθυνσης στο Ï€ÏόχειÏο του συστηματος - - - Copy &Address - ΑντιγÏαφή &ΔιεÏθυνσης - - - &Save Image... - &Αποθήκευση εικόνας... - - - Request payment to %1 - Αίτηση πληÏωμής για %1 - - - Payment information - ΠληÏοφοÏίες πληÏωμής - - - URI - URI: - - - Address - ΔιεÏθυνση - - - Amount - Ποσό - - - Label - ΕπιγÏαφή - - - Message - Μήνυμα - - - Resulting URI too long, try to reduce the text for label / message. - Το αποτέλεσμα της διεÏθυνσης είναι Ï€Î¿Î»Ï Î¼ÎµÎ³Î¬Î»Î¿. Μειώστε το μέγεθος για το κείμενο της ετικέτας/ μηνÏματος. - - - Error encoding URI into QR Code. - Σφάλμα κατά την κωδικοποίηση του URI σε κώδικα QR - - - - RecentRequestsTableModel - - Date - ΗμεÏομηνία - - - Label - ΕπιγÏαφή - - - Message - Μήνυμα - - - Amount - Ποσό - - - (no label) - (χωÏίς ετικέτα) - - - (no message) - (κανένα μήνυμα) - - - (no amount) - (κανένα ποσό) - - - - SendCoinsDialog - - Send Coins - Αποστολή νομισμάτων - - - Coin Control Features - ΧαÏακτηÏηστικά επιλογής κεÏμάτων - - - Inputs... - ΕισÏοές... - - - automatically selected - επιλεγμένο αυτόματα - - - Insufficient funds! - ΑνεπαÏκές κεφάλαιο! - - - Quantity: - Ποσότητα: - - - Bytes: - Bytes: - - - Amount: - Ποσό: - - - Priority: - ΠÏοτεÏαιότητα: - - - Fee: - ΤαÏίφα - - - After Fee: - ΤαÏίφα αλλαγής - - - Change: - Ρέστα: - - - If this is activated, but the change address is empty or invalid, change will be sent to a newly generated address. - Όταν ενεÏγό, αλλά η διεÏθυνση Ïέστων είναι κενή ή άκυÏη, τα Ïέστα θα σταλοÏν σε μία Ï€Ïόσφατα δημιουÏγημένη διεÏθυνση. - - - Custom change address - ΠÏοσαÏμοσμένη διεÏθυνση Ïέστων - - - Transaction Fee: - Τέλος συναλλαγής: - - - Choose... - Επιλογή... - - - per kilobyte - ανά kilobyte - - - Hide - ΑπόκÏυψη - - - total at least - συνολικά τουλάχιστον - - - Recommended: - ΠÏοτεινόμενο: - - - Custom: - ΠÏοσαÏμογή: - - - Confirmation time: - ΧÏόνος επικÏÏωσης: - - - normal - κανονικό - - - fast - ΓÏήγοÏο - - - (confirmation may take longer) - (η επικÏÏωση ίσως χÏειαστεί πεÏισσότεÏο χÏόνο) - - - Send to multiple recipients at once - Αποστολή σε πολλοÏÏ‚ αποδέκτες ταυτόχÏονα - - - Add &Recipient - &ΠÏοσθήκη αποδέκτη - - - Clear all fields of the form. - ΚαθαÏισμός όλων των πεδίων της φόÏμας. - - - Dust: - Σκόνη - - - Clear &All - ΚαθαÏισμός &Όλων - - - Balance: - Υπόλοιπο: - - - Confirm the send action - Επιβεβαίωση αποστολής - - - S&end - Αποστολη - - - Confirm send coins - Επιβεβαίωση αποστολής νομισμάτων - - - %1 to %2 - %1 σε %2 - - - Copy quantity - ΑντιγÏαφή ποσότητας - - - Copy amount - ΑντιγÏαφή Ï€Î¿ÏƒÎ¿Ï - - - Copy fee - ΑντιγÏαφή ταÏίφας - - - Copy after fee - ΑντιγÏαφή μετα-ταÏίφας - - - Copy bytes - ΑντιγÏαφή των byte - - - Copy priority - ΑντιγÏαφή Ï€ÏοτεÏαιότητας - - - Copy change - ΑντιγÏαφή των Ïέστων - - - or - ή - - - The amount to pay must be larger than 0. - Το ποσό πληÏωμής Ï€Ïέπει να είναι μεγαλÏτεÏο από 0. - - - The amount exceeds your balance. - Το ποσό ξεπεÏνάει το διαθέσιμο υπόλοιπο - - - The total exceeds your balance when the %1 transaction fee is included. - Το σÏνολο υπεÏβαίνει το υπόλοιπό σας όταν συμπεÏιληφθεί και η αμοιβή %1 - - - Transaction creation failed! - Η δημιουÏγία της συναλλαγής απέτυχε! - - - Warning: Invalid Bitcoin address - ΠÏοειδοποίηση: Μη έγκυÏη διεÏθυνση Bitcoin - - - (no label) - (χωÏίς ετικέτα) - - - Copy dust - ΑντιγÏαφή 'σκόνης' - - - Are you sure you want to send? - Είστε βέβαιοι για την αποστολή; - - - added as transaction fee - Ï€Ïοστέθηκαν ως αμοιβή συναλλαγής - - - - SendCoinsEntry - - A&mount: - &Ποσό: - - - Pay &To: - ΠληÏωμή &σε: - - - Enter a label for this address to add it to your address book - Εισάγετε μια επιγÏαφή για αυτή τη διεÏθυνση ώστε να καταχωÏηθεί στο βιβλίο διευθÏνσεων - - - &Label: - &ΕπιγÏαφή - - - Choose previously used address - Επιλογή διεÏθυνσης που έχει ήδη χÏησιμοποιηθεί - - - This is a normal payment. - Αυτή είναι μια απλή πληÏωμή. - - - The Bitcoin address to send the payment to - Η διεÏθυνση Bitcoin που θα σταλεί η πληÏωμή - - - Alt+A - Alt+A - - - Paste address from clipboard - Επικόλληση διεÏθυνσης από το βιβλίο διευθÏνσεων - - - Alt+P - Alt+P - - - Remove this entry - ΑφαίÏεση αυτής της καταχώÏησης - - - Message: - Μήνυμα: - - - Enter a label for this address to add it to the list of used addresses - Εισάγεται μία ετικέτα για αυτή την διεÏθυνση για να Ï€Ïοστεθεί στη λίστα με τις χÏησιμοποιημένες διευθÏνσεις - - - Pay To: - ΠληÏωμή σε: - - - Memo: - Σημείωση: - - - - ShutdownWindow - - Bitcoin Core is shutting down... - Το Bitcoin Core τεÏματίζεται... - - - Do not shut down the computer until this window disappears. - Μην απενεÏγοποιήσετε τον υπολογιστή μέχÏι να κλείσει αυτό το παÏάθυÏο. - - - - SignVerifyMessageDialog - - Signatures - Sign / Verify a Message - ΥπογÏαφές - Είσοδος / Επαλήθευση μήνυματος - - - &Sign Message - &ΥπογÏαφή ΜηνÏματος - - - The Bitcoin address to sign the message with - ΔιεÏθυνση Bitcoin που θα σταλεί το μήνυμα - - - Choose previously used address - Επιλογή διεÏθυνσης που έχει ήδη χÏησιμοποιηθεί - - - Alt+A - Alt+A - - - Paste address from clipboard - Επικόλληση διεÏθυνσης από το βιβλίο διευθÏνσεων - - - Alt+P - Alt+P - - - Enter the message you want to sign here - Εισάγετε εδώ το μήνυμα που θέλετε να υπογÏάψετε - - - Signature - ΥπογÏαφή - - - Copy the current signature to the system clipboard - ΑντέγÏαφη της επιλεγμενης διεÏθυνσης στο Ï€ÏόχειÏο του συστηματος - - - Sign the message to prove you own this Bitcoin address - ΥπογÏάψτε ένα μήνυμα για ν' αποδείξετε πως σας ανήκει μια συγκεκÏιμένη διεÏθυνση Bitcoin - - - Sign &Message - ΥπογÏαφη μήνυματος - - - Reset all sign message fields - ΕπαναφοÏά όλων των πεδίων μήνυματος - - - Clear &All - ΚαθαÏισμός &Όλων - - - &Verify Message - &Επιβεβαίωση μηνÏματος - - - The Bitcoin address the message was signed with - ΔιεÏθυνση Bitcoin η οποία το μήνυμα έχει υπογÏαφεί - - - Verify the message to ensure it was signed with the specified Bitcoin address - ΥπογÏάψτε ένα μήνυμα για ν' αποδείξετε πως υπογÏαφθηκε απο μια συγκεκÏιμένη διεÏθυνση Bitcoin - - - Verify &Message - Επιβεβαίωση μηνÏματος - - - Reset all verify message fields - ΕπαναφοÏά όλων επαλήθευμενων πεδίων μήνυματος - - - Click "Sign Message" to generate signature - Κάντε κλικ στο "ΥπογÏαφή ΜηνÏματος" για να λάβετε την υπογÏαφή - - - The entered address is invalid. - Η διεÏθυνση που εισήχθη είναι λάθος. - - - Please check the address and try again. - ΠαÏακαλοÏμε ελέγξτε την διεÏθυνση και δοκιμάστε ξανά. - - - The entered address does not refer to a key. - Η διεÏθυνση που έχει εισαχθεί δεν αναφέÏεται σε ένα πλήκτÏο. - - - Wallet unlock was cancelled. - το ξεκλείδωμα του ποÏÏ„Î¿Ï†Î¿Î»Î¹Î¿Ï Î±Ï€Î­Ï„Ï…Ï‡Îµ - - - Private key for the entered address is not available. - Το Ï€Ïοσωπικό κλειδί εισαγμενης διευθυνσης δεν είναι διαθέσιμο. - - - Message signing failed. - Η υπογÏαφή του μηνÏματος απέτυχε. - - - Message signed. - Μήνυμα υπεγÏάφη. - - - The signature could not be decoded. - Η υπογÏαφή δεν μπόÏεσε να αποκÏυπτογÏαφηθεί. - - - Please check the signature and try again. - ΠαÏακαλοÏμε ελέγξτε την υπογÏαφή και δοκιμάστε ξανά. - - - The signature did not match the message digest. - Η υπογÏαφή δεν ταιÏιάζει με το μήνυμα. - - - Message verification failed. - Η επιβεβαίωση του μηνÏματος απέτυχε - - - Message verified. - Μήνυμα επιβεβαιώθηκε. - - - - SplashScreen - - Bitcoin Core - Bitcoin Core - - - The Bitcoin Core developers - Οι Ï€ÏογÏαμματιστές του Bitcoin Core - - - [testnet] - [testnet] - - - - TrafficGraphWidget - - KB/s - KB/s - - - - TransactionDesc - - Open until %1 - Ανοιχτό μέχÏι %1 - - - conflicted - σÏγκÏουση - - - %1/offline - %1/χωÏίς σÏνδεση; - - - %1/unconfirmed - %1/χωÏίς επιβεβαίωση - - - %1 confirmations - %1 επιβεβαιώσεις - - - Status - Κατάσταση - - - Date - ΗμεÏομηνία - - - Source - Πηγή - - - Generated - ΔημιουÏγία - - - From - Από - - - To - ΠÏος - - - own address - δική σας διεÏθυνση - - - watch-only - Επίβλεψη μόνο: - - - label - eπιγÏαφή - - - Credit - Πίστωση - - - not accepted - μη αποδεκτό - - - Debit - Debit - - - Total debit - ΣÏνολο χÏέωσης - - - Total credit - Συνολική πίστωση - - - Transaction fee - Τέλος συναλλαγής - - - Net amount - ΚαθαÏÏŒ ποσό - - - Message - Μήνυμα - - - Comment - Σχόλιο: - - - Transaction ID - ID Συναλλαγής: - - - Merchant - ΈμποÏος - - - Generated coins must mature %1 blocks before they can be spent. When you generated this block, it was broadcast to the network to be added to the block chain. If it fails to get into the chain, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - ΠÏέπει να πεÏιμένετε %1 μπλοκ Ï€Ïιν μποÏέσετε να χÏησιμοποιήσετε τα νομίσματα που έχετε δημιουÏγήσει. Το μπλοκ που δημιουÏγήσατε μεταδόθηκε στο δίκτυο για να συμπεÏιληφθεί στην αλυσίδα των μπλοκ. Αν δεν μπει σε αυτή θα μετατÏαπεί σε "μη αποδεκτό" και δε θα μποÏεί να καταναλωθεί. Αυτό συμβαίνει σπάνια όταν κάποιος άλλος κόμβος δημιουÏγήσει ένα μπλοκ λίγα δευτεÏόλεπτα Ï€Ïιν από εσάς. - - - Debug information - ΠληÏοφοÏίες αποσφαλμάτωσης - - - Transaction - Συναλλαγή - - - Inputs - εισÏοές - - - Amount - Ποσό - - - true - αληθής - - - false - αναληθής - - - , has not been successfully broadcast yet - , δεν έχει ακόμα μεταδοθεί μ' επιτυχία - - - unknown - άγνωστο - - - - TransactionDescDialog - - Transaction details - ΛεπτομέÏειες συναλλαγής - - - This pane shows a detailed description of the transaction - Αυτό το παÏάθυÏο δείχνει μια λεπτομεÏή πεÏιγÏαφή της συναλλαγής - - - - TransactionTableModel - - Date - ΗμεÏομηνία - - - Type - ΤÏπος - - - Open until %1 - Ανοιχτό μέχÏι %1 - - - Confirmed (%1 confirmations) - ΕπικυÏωμένη (%1 επικυÏώσεις) - - - This block was not received by any other nodes and will probably not be accepted! - Αυτό το μπλοκ δεν έχει παÏαληφθεί από κανέναν άλλο κόμβο και κατά πάσα πιθανότητα θα αποÏÏιφθεί! - - - Generated but not accepted - ΔημιουÏγήθηκε αλλά αποÏÏίφθηκε - - - Offline - Offline - - - Label - ΕπιγÏαφή - - - Unconfirmed - Ανεπιβεβαίωτες - - - Conflicted - ΣÏγκÏουση - - - Received with - Ελήφθη με - - - Received from - Ελήφθη από - - - Sent to - Απεστάλη Ï€Ïος - - - Payment to yourself - ΠληÏωμή Ï€Ïος εσάς - - - Mined - ΕξόÏυξη - - - watch-only - Επίβλεψη μόνο: - - - (n/a) - (δ/α) - - - Transaction status. Hover over this field to show number of confirmations. - Κατάσταση συναλλαγής. Πηγαίνετε το ποντίκι πάνω από αυτό το πεδίο για να δείτε τον αÏιθμό των επικυÏώσεων - - - Date and time that the transaction was received. - ΗμεÏομηνία κι ÏŽÏα λήψης της συναλλαγής. - - - Type of transaction. - Είδος συναλλαγής. - - - Amount removed from or added to balance. - Ποσό που αφαιÏέθηκε ή Ï€Ïοστέθηκε στο υπόλοιπο. - - - - TransactionView - - All - Όλα - - - Today - ΣήμεÏα - - - This week - Αυτή την εβδομάδα - - - This month - Αυτόν τον μήνα - - - Last month - Τον Ï€ÏοηγοÏμενο μήνα - - - This year - Αυτό το έτος - - - Range... - Έκταση... - - - Received with - Ελήφθη με - - - Sent to - Απεστάλη Ï€Ïος - - - To yourself - ΠÏος εσάς - - - Mined - ΕξόÏυξη - - - Other - Άλλο - - - Enter address or label to search - Αναζήτηση με βάση τη διεÏθυνση ή την επιγÏαφή - - - Min amount - Ελάχιστο ποσό - - - Copy address - ΑντιγÏαφή διεÏθυνσης - - - Copy label - ΑντιγÏαφή επιγÏαφής - - - Copy amount - ΑντιγÏαφή Ï€Î¿ÏƒÎ¿Ï - - - Copy transaction ID - ΑντιγÏαφη του ID Συναλλαγής - - - Edit label - ΕπεξεÏγασία επιγÏαφής - - - Show transaction details - Εμφάνιση λεπτομεÏειών συναλλαγής - - - Export Transaction History - Εξαγωγή ΙστοÏÎ¹ÎºÎ¿Ï Î£Ï…Î½Î±Î»Î»Î±Î³ÏŽÎ½ - - - Watch-only - Επίβλεψη μόνο: - - - Exporting Failed - Η Εξαγωγή Απέτυχε - - - There was an error trying to save the transaction history to %1. - YπήÏξε σφάλμα κατά την Ï€Ïοσπάθεια αποθήκευσης του ιστοÏÎ¹ÎºÎ¿Ï ÏƒÏ…Î½Î±Î»Î»Î±Î³ÏŽÎ½ στο %1. - - - Exporting Successful - Επιτυχής εξαγωγή - - - The transaction history was successfully saved to %1. - Το ιστοÏικό συναλλαγών αποθηκεÏτηκε επιτυχώς στο %1. - - - Comma separated file (*.csv) - ΑÏχείο οÏιοθετημένο με κόμματα (*.csv) - - - Confirmed - ΕπικυÏωμένες - - - Date - ΗμεÏομηνία - - - Type - ΤÏπος - - - Label - ΕπιγÏαφή - - - Address - ΔιεÏθυνση - - - ID - ID - - - Range: - Έκταση: - - - to - έως - - - - UnitDisplayStatusBarControl - - Unit to show amounts in. Click to select another unit. - Μονάδα μέτÏησης Ï€Ïοβολής ποσών. Κάντε κλικ για επιλογή άλλης μονάδας. - - - - WalletFrame - - No wallet has been loaded. - Δεν έχει φοÏτωθεί ποÏτοφόλι - - - - WalletModel - - Send Coins - Αποστολή νομισμάτων - - - - WalletView - - &Export - &Εξαγωγή - - - Export the data in the current tab to a file - Εξαγωγή δεδομένων καÏτέλας σε αÏχείο - - - Backup Wallet - ΑντίγÏαφο ασφαλείας του ποÏÏ„Î¿Ï†Î¿Î»Î¹Î¿Ï - - - Wallet Data (*.dat) - ΑÏχεία δεδομένων ποÏÏ„Î¿Ï†Î¿Î»Î¹Î¿Ï (*.dat) - - - Backup Failed - Αποτυχία κατά τη δημιουÏγία αντιγÏάφου - - - There was an error trying to save the wallet data to %1. - ΠαÏουσιάστηκε σφάλμα κατά την αποθήκευση των δεδομένων ποÏÏ„Î¿Ï†Î¿Î»Î¹Î¿Ï ÏƒÏ„Î¿ %1. - - - The wallet data was successfully saved to %1. - Τα δεδομένα ποÏÏ„Î¿Ï†Î¿Î»Î¹Î¿Ï Î±Ï€Î¿Î¸Î·ÎºÎµÏτηκαν με επιτυχία στο %1. - - - Backup Successful - Η δημιουÏγια αντιγÏαφου ασφαλειας πετυχε - - - - bitcoin-core - - Options: - Επιλογές: - - - Specify data directory - ΟÏισμός φακέλου δεδομένων - - - Connect to a node to retrieve peer addresses, and disconnect - ΣÏνδεση σε έναν κόμβο για την ανάκτηση διευθÏνσεων από ομοτίμους, και αποσυνδέσh - - - Specify your own public address - ΔιευκÏινίστε τη δικιά σας δημόσια διεÏθυνση. - - - Accept command line and JSON-RPC commands - Αποδοχή εντολών κονσόλας και JSON-RPC - - - Run in the background as a daemon and accept commands - Εκτέλεση στο παÏασκήνιο κι αποδοχή εντολών - - - Use the test network - ΧÏήση του Î´Î¿ÎºÎ¹Î¼Î±ÏƒÏ„Î¹ÎºÎ¿Ï Î´Î¹ÎºÏ„Ïου - - - Accept connections from outside (default: 1 if no -proxy or -connect) - Îα δέχεσαι συνδέσεις από έξω(Ï€Ïοεπιλογή:1) - - - Bind to given address and always listen on it. Use [host]:port notation for IPv6 - Αποθηκευση σε συγκεκÏιμένη διεÏθυνση. ΧÏησιμοποιήστε τα πλήκτÏα [Host] : συμβολισμός θÏÏα για IPv6 - - - Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) - Εκτέλεσε την εντολή όταν το καλÏτεÏο μπλοκ αλλάξει(%s στην εντολή αντικαθίσταται από το hash του μπλοκ) - - - This is a pre-release test build - use at your own risk - do not use for mining or merchant applications - Αυτό είναι ένα Ï€Ïο-τεστ κυκλοφοÏίας - χÏησιμοποιήστε το με δική σας ευθÏνη - δεν χÏησιμοποιείτε για εξόÏυξη ή για αλλες εφαÏμογές - - - Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. - ΠÏοειδοποίηση: Η παÏάμετÏος -paytxfee είναι Ï€Î¿Î»Ï Ï…ÏˆÎ·Î»Î®. ΠÏόκειται για την αμοιβή που θα πληÏώνετε για κάθε συναλλαγή που θα στέλνετε. - - - Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. - ΠÏοειδοποίηση : Σφάλμα wallet.dat κατα την ανάγνωση ! Όλα τα κλειδιά αναγνωÏισθηκαν σωστά, αλλά τα δεδομένα των συναλλαγών ή καταχωÏήσεις στο βιβλίο διευθÏνσεων μποÏεί να είναι ελλιπείς ή λανθασμένα. - - - 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. - ΠÏοειδοποίηση : το αÏχειο wallet.dat ειναι διεφθαÏμένο, τα δεδομένα σώζονται ! Original wallet.dat αποθηκεÏονται ως wallet.{timestamp}.bak στο %s . Αν το υπόλοιπο του ή τις συναλλαγές σας, είναι λάθος θα Ï€Ïέπει να επαναφέÏετε από ένα αντίγÏαφο ασφαλείας - - - (default: 1) - (Ï€Ïοεπιλογή: 1) - - - Attempt to recover private keys from a corrupt wallet.dat - ΠÏοσπάθεια για ανακτησει ιδιωτικων κλειδιων από ενα διεφθαÏμένο αÏχειο wallet.dat - - - Block creation options: - Αποκλεισμός επιλογων δημιουÏγίας: - - - Connect only to the specified node(s) - ΣÏνδεση μόνο με οÏισμένους κόμβους - - - Connection options: - Επιλογές σÏνδεσης: - - - Corrupted block database detected - Εντοπισθηκε διεφθαÏμενη βαση δεδομενων των μπλοκ - - - Do you want to rebuild the block database now? - Θελετε να δημιουÏγηθει τωÏα η βαση δεδομενων του μπλοκ? - - - Error initializing block database - Σφάλμα κατά την ενεÏγοποίηση της βάσης δεδομένων μπλοκ - - - Error initializing wallet database environment %s! - Σφάλμα κατά την ενεÏγοποίηση της βάσης δεδομένων ποÏτοφόλιου %s! - - - Error loading block database - Σφάλμα φοÏτωσης της βασης δεδομενων των μπλοκ - - - Error opening block database - Σφάλμα φοÏτωσης της βασης δεδομενων των μπλοκ - - - Error: Disk space is low! - ΠÏοειδοποίηση: Χαμηλός χώÏος στο δίσκο - - - Failed to listen on any port. Use -listen=0 if you want this. - ταλαιπωÏηθειτε για να ακοÏσετε σε οποιαδήποτε θÏÏα. ΧÏήση - ακοÏστε = 0 , αν θέλετε αυτό. - - - Importing... - ΕΙσαγωγή... - - - Invalid -onion address: '%s' - ΆκυÏη διεÏθυνση -onion : '%s' - - - Not enough file descriptors available. - Δεν ειναι αÏκετες πεÏιγÏαφες αÏχείων διαθέσιμες. - - - Only connect to nodes in network <net> (ipv4, ipv6 or onion) - Μόνο σÏνδεση σε κόμβους του δικτÏου <net> (ipv4, ipv6 ή onion) - - - Specify wallet file (within data directory) - Επιλέξτε αÏχείο ποÏÏ„Î¿Ï†Î¿Î»Î¹Î¿Ï (μέσα απο κατάλογο δεδομένων) - - - Verifying blocks... - Επαλήθευση των μπλοκ... - - - Verifying wallet... - Επαλήθευση ποÏτοφολιου... - - - Wallet %s resides outside data directory %s - Το ποÏτοφόλι %s βÏίσκεται έξω από το φάκελο δεδομένων %s - - - Wallet options: - Επιλογές ποÏτοφολιοÏ: - - - Imports blocks from external blk000??.dat file - Εισαγωγή μπλοκ από εξωτεÏικό αÏχείο blk000?.dat - - - Cannot obtain a lock on data directory %s. Bitcoin Core is probably already running. - Αδυναμία κλειδώματος του φακέλου δεδομένων %s. Πιθανώς το Bitcoin να είναι ήδη ενεÏγό. - - - Warning: Please check that your computer's date and time are correct! If your clock is wrong Bitcoin Core will not work properly. - ΠÏοειδοποίηση: ΠαÏακαλώ ελέγξτε ότι η ημεÏομηνία και ÏŽÏα του υπολογιστή σας είναι σωστά Ïυθμισμένες! Εάν το Ïολόι σας είναι λάθος το Bitcoin Core δεν θα λειτουÏγήσει σωστά. - - - Choose data directory on startup (default: 0) - Επιλογή φακέλου δεδομένων στην εκκίνηση (Ï€Ïοεπιλεγμένο: 0) - - - Connect through SOCKS5 proxy - ΣÏνδεση μέσω διαμεσολαβητή SOCKS5 - - - Could not parse -rpcbind value %s as network address - Δεν μπόÏεσε να αναλυθεί η παÏάμετÏος -rpcbind value %s ως διεÏθυνση δικτÏου - - - Error loading wallet.dat: Wallet requires newer version of Bitcoin Core - Σφάλμα φόÏτωσης wallet.dat: Το ΠοÏτοφόλι απαιτεί μια νεότεÏη έκδοση του Bitcoin - - - Error reading from database, shutting down. - Σφάλμα ανάγνωσης από τη βάση δεδομένων, γίνεται τεÏματισμός. - - - Error: Unsupported argument -tor found, use -onion. - Σφάλμα: Μη συμβατή παÏάμετÏος -tor. ΧÏησιμοποιήσε την παÏάμετÏο -onion - - - Information - ΠληÏοφοÏία - - - Initialization sanity check failed. Bitcoin Core is shutting down. - Η εκκίνηση ελέγχου οÏθότητας απέτυχε. Γίνεται τεÏματισμός του Bitcoin Core. - - - Invalid amount for -minrelaytxfee=<amount>: '%s' - Μη έγκυÏο ποσό για την παÏάμετÏο -paytxfee=<amount>: '%s' - - - Invalid amount for -mintxfee=<amount>: '%s' - Μη έγκυÏο ποσό για την παÏάμετÏο -paytxfee=<amount>: '%s' - - - Node relay options: - Επιλογές αναμετάδοσης κόμβου: - - - RPC SSL options: (see the Bitcoin Wiki for SSL setup instructions) - Ρυθμίσεις SSL: (ανατÏέξτε στο Bitcoin Wiki για οδηγίες Ïυθμίσεων SSL) - - - RPC server options: - Επιλογές διακομιστή RPC: - - - Send trace/debug info to console instead of debug.log file - Αποστολή πληÏοφοÏιών ÎµÎ½Ï„Î¿Ï€Î¹ÏƒÎ¼Î¿Ï ÏƒÏ†Î±Î»Î¼Î¬Ï„Ï‰Î½ στην κονσόλα αντί του αÏχείου debug.log - - - Set SSL root certificates for payment request (default: -system-) - ΟÏίστε SSL root certificates για αίτηση πληÏωμής (default: -system-) - - - Set language, for example "de_DE" (default: system locale) - ÎŒÏισε γλώσσα, για παÏάδειγμα "de_DE"(Ï€Ïοεπιλογή:τοπικές Ïυθμίσεις) - - - Show all debugging options (usage: --help -help-debug) - ΠÏοβολή όλων των επιλογών ÎµÎ½Ï„Î¿Ï€Î¹ÏƒÎ¼Î¿Ï ÏƒÏ†Î±Î»Î¼Î¬Ï„Ï‰Î½ (χÏήση: --help -help-debug) - - - Show splash screen on startup (default: 1) - Εμφάνισε την οθόνη εκκίνησης κατά την εκκίνηση(Ï€Ïοεπιλογή:1) - - - Shrink debug.log file on client startup (default: 1 when no -debug) - ΣυÏÏίκνωση του αÏχείο debug.log κατα την εκκίνηση του πελάτη (Ï€Ïοεπιλογή: 1 όταν δεν-debug) - - - Signing transaction failed - Η υπογÏαφή συναλλαγής απέτυχε - - - Start minimized - ΈναÏξη ελαχιστοποιημένο - - - This is experimental software. - Η εφαÏμογή είναι σε πειÏαματικό στάδιο. - - - Transaction amount too small - Το ποσό της συναλλαγής είναι Ï€Î¿Î»Ï Î¼Î¹ÎºÏο - - - Transaction amounts must be positive - Τα ποσά των συναλλαγών Ï€Ïέπει να είναι θετικα - - - Transaction too large - Η συναλλαγή ειναι Ï€Î¿Î»Ï Î¼ÎµÎ³Î¬Î»Î· - - - Use UPnP to map the listening port (default: 1 when listening) - ΧÏησιμοποίηση του UPnP για την χÏήση της πόÏτας αναμονής (Ï€Ïοεπιλογή:1) - - - Username for JSON-RPC connections - Όνομα χÏήστη για τις συνδέσεις JSON-RPC - - - Warning - ΠÏοειδοποίηση - - - Zapping all transactions from wallet... - ΜεταφοÏά όλων των συναλλαγών απο το ποÏτοφόλι - - - on startup - κατά την εκκίνηση - - - wallet.dat corrupt, salvage failed - Το αÏχειο wallet.dat ειναι διεφθαÏμένο, η διάσωση απέτυχε - - - Password for JSON-RPC connections - Κωδικός για τις συνδέσεις JSON-RPC - - - Execute command when the best block changes (%s in cmd is replaced by block hash) - Εκτέλεσε την εντολή όταν το καλÏτεÏο μπλοκ αλλάξει(%s στην εντολή αντικαθίσταται από το hash του μπλοκ) - - - Upgrade wallet to latest format - Αναβάθμισε το ποÏτοφόλι στην τελευταία έκδοση - - - Rescan the block chain for missing wallet transactions - Επανέλεγχος της αλυσίδας μπλοκ για αποÏσες συναλλαγές - - - Use OpenSSL (https) for JSON-RPC connections - ΧÏήση του OpenSSL (https) για συνδέσεις JSON-RPC - - - This help message - Αυτό το κείμενο βοήθειας - - - Allow DNS lookups for -addnode, -seednode and -connect - Îα επιτÏέπονται οι έλεγχοι DNS για Ï€Ïοσθήκη και σÏνδεση κόμβων - - - Loading addresses... - ΦόÏτωση διευθÏνσεων... - - - Error loading wallet.dat: Wallet corrupted - Σφάλμα φόÏτωσης wallet.dat: ΚατεστÏαμμένο ΠοÏτοφόλι - - - How thorough the block verification of -checkblocks is (0-4, default: %u) - Πόσο εξονυχιστική να είναι η επιβεβαίωση του μπλοκ (0-4, Ï€Ïοεπιλογή: %u) - - - Maintain a full transaction index, used by the getrawtransaction rpc call (default: %u) - ΔιατηÏήση ένος πλήÏες ευÏετήÏιου συναλλαγών (Ï€Ïοεπιλογή: %u) - - - Number of seconds to keep misbehaving peers from reconnecting (default: %u) - ΔευτεÏόλεπτα Ï€Ïιν επιτÏαπεί ξανά η σÏνδεση των Ï€Ïοβληματικών peers (Ï€Ïοεπιλογή: %u) - - - Error loading wallet.dat - Σφάλμα φόÏτωσης αÏχείου wallet.dat - - - Generate coins (default: %u) - ΔημιουÏγία νομισμάτων (Ï€ÏοκαθοÏισμος: %u) - - - How many blocks to check at startup (default: %u, 0 = all) - Πόσα μπλοκ να ελέγχθουν κατά την εκκίνηση (Ï€Ïοεπιλογή: %u, 0 = όλα) - - - Include IP addresses in debug output (default: %u) - Îα συμπεÏιληφθεί η διεÏθυνση IP στην αναφοÏά? (Ï€Ïοεπιλογή: %u) - - - Invalid -proxy address: '%s' - Δεν είναι έγκυÏη η διεÏθυνση διαμεσολαβητή: '%s' - - - Server certificate file (default: %s) - ΑÏχείο Ï€Î¹ÏƒÏ„Î¿Ï€Î¿Î¹Î·Ï„Î¹ÎºÎ¿Ï Ï„Î¿Ï… διακομιστή (Ï€Ïοεπιλογή: %s) - - - Specify connection timeout in milliseconds (minimum: 1, default: %d) - ΟÏισμός λήξης χÏÎ¿Î½Î¹ÎºÎ¿Ï Î¿Ïίου σε χιλιοστά του δευτεÏολέπτου(Ï€Ïοεπιλογή: %d) - - - Specify pid file (default: %s) - ΟÏίστε αÏχείο pid (Ï€Ïοεπιλογή: %s) - - - Threshold for disconnecting misbehaving peers (default: %u) - ÎŒÏιο αποσÏνδεσης Ï€Ïοβληματικών peers (Ï€Ïοεπιλογή: %u) - - - Unknown network specified in -onlynet: '%s' - Άγνωστo δίκτυο οÏίζεται σε onlynet: '%s' - - - Cannot resolve -bind address: '%s' - Δεν μποÏÏŽ να γÏάψω την Ï€Ïοεπιλεγμένη διεÏθυνση: '%s' - - - Cannot resolve -externalip address: '%s' - Δεν μποÏÏŽ να γÏάψω την Ï€Ïοεπιλεγμένη διεÏθυνση: '%s' - - - Invalid amount for -paytxfee=<amount>: '%s' - Μη έγκυÏο ποσό για την παÏάμετÏο -paytxfee=<amount>: '%s' - - - Insufficient funds - ΑνεπαÏκές κεφάλαιο - - - Loading block index... - ΦόÏτωση ευÏετηÏίου μπλοκ... - - - Add a node to connect to and attempt to keep the connection open - ΠÏοσέθεσε ένα κόμβο για σÏνδεση και Ï€Ïοσπάθησε να κÏατήσεις την σÏνδεση ανοιχτή - - - Loading wallet... - ΦόÏτωση ποÏτοφολιοÏ... - - - Cannot downgrade wallet - Δεν μποÏÏŽ να υποβαθμίσω το ποÏτοφόλι - - - Cannot write default address - Δεν μποÏÏŽ να γÏάψω την Ï€Ïοεπιλεγμένη διεÏθυνση - - - Rescanning... - Ανίχνευση... - - - Done loading - Η φόÏτωση ολοκληÏώθηκε - - - Error - Σφάλμα - - - \ No newline at end of file diff --git a/src/qt/locale/bitcoin_en.ts b/src/qt/locale/bitcoin_en.ts deleted file mode 100644 index 228515854..000000000 --- a/src/qt/locale/bitcoin_en.ts +++ /dev/null @@ -1,4576 +0,0 @@ - - - - - AddressBookPage - - - Right-click to edit address or label - - - - - Create a new address - Create a new address - - - - &New - - - - - Copy the currently selected address to the system clipboard - Copy the currently selected address to the system clipboard - - - - &Copy - - - - - C&lose - - - - - &Copy Address - &Copy Address - - - - Delete the currently selected address from the list - Delete the currently selected address from the list - - - - Export the data in the current tab to a file - Export the data in the current tab to a file - - - - &Export - &Export - - - - &Delete - &Delete - - - - Choose the address to send coins to - - - - - Choose the address to receive coins with - - - - - C&hoose - - - - - Sending addresses - - - - - Receiving addresses - - - - - These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins. - These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins. - - - - These are your Bitcoin addresses for receiving payments. It is recommended to use a new receiving address for each transaction. - - - - - Copy &Label - Copy &Label - - - - &Edit - &Edit - - - - Export Address List - - - - - Comma separated file (*.csv) - Comma separated file (*.csv) - - - - Exporting Failed - - - - - There was an error trying to save the address list to %1. Please try again. - - - - - AddressTableModel - - - Label - Label - - - - Address - Address - - - - (no label) - (no label) - - - - AskPassphraseDialog - - - Passphrase Dialog - Passphrase Dialog - - - - Enter passphrase - Enter passphrase - - - - New passphrase - New passphrase - - - - Repeat new passphrase - Repeat new passphrase - - - - Encrypt wallet - Encrypt wallet - - - - This operation needs your wallet passphrase to unlock the wallet. - This operation needs your wallet passphrase to unlock the wallet. - - - - Unlock wallet - Unlock wallet - - - - This operation needs your wallet passphrase to decrypt the wallet. - This operation needs your wallet passphrase to decrypt the wallet. - - - - Decrypt wallet - Decrypt wallet - - - - Change passphrase - Change passphrase - - - - Confirm wallet encryption - Confirm wallet encryption - - - - Warning: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR BITCOINS</b>! - Warning: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR BITCOINS</b>! - - - - Are you sure you wish to encrypt your wallet? - Are you sure you wish to encrypt your wallet? - - - - Bitcoin Core 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. - - - - - 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. - 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. - - - - - Warning: The Caps Lock key is on! - Warning: The Caps Lock key is on! - - - - - Wallet encrypted - Wallet encrypted - - - - 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>. - - - - - Enter the old passphrase and new passphrase to the wallet. - - - - - - - - Wallet encryption failed - Wallet encryption failed - - - - Wallet encryption failed due to an internal error. Your wallet was not encrypted. - Wallet encryption failed due to an internal error. Your wallet was not encrypted. - - - - - The supplied passphrases do not match. - The supplied passphrases do not match. - - - - Wallet unlock failed - Wallet unlock failed - - - - - - The passphrase entered for the wallet decryption was incorrect. - The passphrase entered for the wallet decryption was incorrect. - - - - Wallet decryption failed - Wallet decryption failed - - - - Wallet passphrase was successfully changed. - Wallet passphrase was successfully changed. - - - - BitcoinGUI - - - Sign &message... - Sign &message... - - - - Synchronizing with network... - Synchronizing with network... - - - - &Overview - &Overview - - - - Node - - - - - Show general overview of wallet - Show general overview of wallet - - - - &Transactions - &Transactions - - - - Browse transaction history - Browse transaction history - - - - E&xit - E&xit - - - - Quit application - Quit application - - - - About &Qt - About &Qt - - - - Show information about Qt - Show information about Qt - - - - &Options... - &Options... - - - - &Encrypt Wallet... - &Encrypt Wallet... - - - - &Backup Wallet... - &Backup Wallet... - - - - &Change Passphrase... - &Change Passphrase... - - - - &Sending addresses... - - - - - &Receiving addresses... - - - - - Open &URI... - - - - - Bitcoin Core client - - - - - Importing blocks from disk... - Importing blocks from disk... - - - - Reindexing blocks on disk... - Reindexing blocks on disk... - - - - Send coins to a Bitcoin address - Send coins to a Bitcoin address - - - - Backup wallet to another location - Backup wallet to another location - - - - Change the passphrase used for wallet encryption - Change the passphrase used for wallet encryption - - - - &Debug window - &Debug window - - - - Open debugging and diagnostic console - Open debugging and diagnostic console - - - - &Verify message... - &Verify message... - - - - Bitcoin - Bitcoin - - - - Wallet - Wallet - - - - &Send - &Send - - - - &Receive - &Receive - - - - Show information about Bitcoin Core - - - - - &Show / Hide - &Show / Hide - - - - Show or hide the main Window - Show or hide the main Window - - - - Encrypt the private keys that belong to your wallet - Encrypt the private keys that belong to your wallet - - - - Sign messages with your Bitcoin addresses to prove you own them - Sign messages with your Bitcoin addresses to prove you own them - - - - Verify messages to ensure they were signed with specified Bitcoin addresses - Verify messages to ensure they were signed with specified Bitcoin addresses - - - - &File - &File - - - - &Settings - &Settings - - - - &Help - &Help - - - - Tabs toolbar - Tabs toolbar - - - - Bitcoin Core - Bitcoin Core - - - - Request payments (generates QR codes and bitcoin: URIs) - - - - - &About Bitcoin Core - - - - - Modify configuration options for Bitcoin Core - - - - - Show the list of used sending addresses and labels - - - - - Show the list of used receiving addresses and labels - - - - - Open a bitcoin: URI or payment request - - - - - &Command-line options - - - - - Show the Bitcoin Core help message to get a list with possible Bitcoin command-line options - - - - - %n active connection(s) to Bitcoin network - - %n active connection to Bitcoin network - %n active connections to Bitcoin network - - - - - No block source available... - No block source available... - - - - Processed %n block(s) of transaction history. - - Processed %n block of transaction history. - Processed %n blocks of transaction history. - - - - - %n hour(s) - - %n hour - %n hours - - - - - %n day(s) - - %n day - %n days - - - - - - %n week(s) - - %n week - %n weeks - - - - - %1 and %2 - - - - - %n year(s) - - %n year - %n years - - - - - %1 behind - %1 behind - - - - Last received block was generated %1 ago. - Last received block was generated %1 ago. - - - - Transactions after this will not yet be visible. - Transactions after this will not yet be visible. - - - - Error - Error - - - - Warning - Warning - - - - Information - Information - - - - Up to date - Up to date - - - - Catching up... - Catching up... - - - - Date: %1 - - - - - - Amount: %1 - - - - - - Type: %1 - - - - - - Label: %1 - - - - - - Address: %1 - - - - - - Sent transaction - Sent transaction - - - - Incoming transaction - Incoming transaction - - - - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - - - - Wallet is <b>encrypted</b> and currently <b>locked</b> - Wallet is <b>encrypted</b> and currently <b>locked</b> - - - - ClientModel - - - Network Alert - Network Alert - - - - CoinControlDialog - - - Coin Selection - - - - - Quantity: - - - - - Bytes: - - - - - Amount: - - - - - Priority: - - - - - Fee: - - - - - Dust: - - - - - After Fee: - - - - - Change: - - - - - (un)select all - - - - - Tree mode - - - - - List mode - - - - - Amount - Amount - - - - Received with label - - - - - Received with address - - - - - Date - Date - - - - Confirmations - - - - - Confirmed - Confirmed - - - - Priority - - - - - Copy address - Copy address - - - - Copy label - Copy label - - - - - Copy amount - Copy amount - - - - Copy transaction ID - Copy transaction ID - - - - Lock unspent - - - - - Unlock unspent - - - - - Copy quantity - - - - - Copy fee - - - - - Copy after fee - - - - - Copy bytes - - - - - Copy priority - - - - - Copy dust - - - - - Copy change - - - - - highest - - - - - higher - - - - - high - - - - - medium-high - - - - - medium - - - - - low-medium - - - - - low - - - - - lower - - - - - lowest - - - - - (%1 locked) - - - - - none - - - - - This label turns red if the transaction size is greater than 1000 bytes. - - - - - This label turns red if the priority is smaller than "medium". - - - - - This label turns red if any recipient receives an amount smaller than %1. - - - - - Can vary +/- %1 satoshi(s) per input. - - - - - yes - - - - - no - - - - - - This means a fee of at least %1 per kB is required. - - - - - Can vary +/- 1 byte per input. - - - - - Transactions with higher priority are more likely to get included into a block. - - - - - - (no label) - (no label) - - - - change from %1 (%2) - - - - - (change) - - - - - EditAddressDialog - - - Edit Address - Edit Address - - - - &Label - &Label - - - - The label associated with this address list entry - - - - - The address associated with this address list entry. This can only be modified for sending addresses. - - - - - &Address - &Address - - - - New receiving address - New receiving address - - - - New sending address - New sending address - - - - Edit receiving address - Edit receiving address - - - - Edit sending address - Edit sending address - - - - The entered address "%1" is already in the address book. - The entered address "%1" is already in the address book. - - - - The entered address "%1" is not a valid Bitcoin address. - The entered address "%1" is not a valid Bitcoin address. - - - - Could not unlock wallet. - Could not unlock wallet. - - - - New key generation failed. - New key generation failed. - - - - FreespaceChecker - - - A new data directory will be created. - A new data directory will be created. - - - - name - name - - - - Directory already exists. Add %1 if you intend to create a new directory here. - Directory already exists. Add %1 if you intend to create a new directory here. - - - - Path already exists, and is not a directory. - Path already exists, and is not a directory. - - - - Cannot create data directory here. - Cannot create data directory here. - - - - HelpMessageDialog - - - Bitcoin Core - Bitcoin Core - - - - version - version - - - - - (%1-bit) - - - - - About Bitcoin Core - - - - - Command-line options - - - - - Usage: - Usage: - - - - command-line options - command-line options - - - - Intro - - - Welcome - Welcome - - - - Welcome to Bitcoin Core. - - - - - As this is the first time the program is launched, you can choose where Bitcoin Core will store its data. - - - - - Bitcoin Core will download and store a copy of the Bitcoin block chain. At least %1GB of data will be stored in this directory, and it will grow over time. The wallet will also be stored in this directory. - - - - - Use the default data directory - Use the default data directory - - - - Use a custom data directory: - Use a custom data directory: - - - - Bitcoin Core - Bitcoin Core - - - - Error: Specified data directory "%1" cannot be created. - - - - - Error - Error - - - - %n GB of free space available - - - - - - - - (of %n GB needed) - - - - - - - - OpenURIDialog - - - Open URI - - - - - Open payment request from URI or file - - - - - URI: - - - - - Select payment request file - - - - - Select payment request file to open - - - - - OptionsDialog - - - Options - Options - - - - &Main - &Main - - - - Size of &database cache - - - - - MB - - - - - Number of script &verification threads - - - - - Accept connections from outside - - - - - Allow incoming connections - - - - - IP address of the proxy (e.g. IPv4: 127.0.0.1 / IPv6: ::1) - - - - - Minimize instead of exit the application when the window is closed. When this option is enabled, the application will be closed only after selecting Exit in the menu. - - - - - The user interface language can be set here. This setting will take effect after restarting Bitcoin Core. - - - - - - 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 |. - - - - - Third party transaction URLs - - - - - Active command-line options that override above options: - - - - - Reset all client options to default. - Reset all client options to default. - - - - &Reset Options - &Reset Options - - - - &Network - &Network - - - - Automatically start Bitcoin Core after logging in to the system. - - - - - &Start Bitcoin Core on system login - - - - - (0 = auto, <0 = leave that many cores free) - - - - - W&allet - - - - - Expert - - - - - Enable coin &control features - - - - - 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. - - - - - &Spend unconfirmed change - - - - - Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled. - Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled. - - - - Map port using &UPnP - Map port using &UPnP - - - - Connect to the Bitcoin network through a SOCKS5 proxy. - - - - - &Connect through SOCKS5 proxy (default proxy): - - - - - Proxy &IP: - Proxy &IP: - - - - &Port: - &Port: - - - - Port of the proxy (e.g. 9050) - Port of the proxy (e.g. 9050) - - - - &Window - &Window - - - - Show only a tray icon after minimizing the window. - Show only a tray icon after minimizing the window. - - - - &Minimize to the tray instead of the taskbar - &Minimize to the tray instead of the taskbar - - - - M&inimize on close - M&inimize on close - - - - &Display - &Display - - - - User Interface &language: - User Interface &language: - - - - &Unit to show amounts in: - &Unit to show amounts in: - - - - Choose the default subdivision unit to show in the interface and when sending coins. - Choose the default subdivision unit to show in the interface and when sending coins. - - - - Whether to show coin control features or not. - - - - - &OK - &OK - - - - &Cancel - &Cancel - - - - default - default - - - - none - - - - - Confirm options reset - Confirm options reset - - - - - Client restart required to activate changes. - - - - - Client will be shut down. Do you want to proceed? - - - - - This change would require a client restart. - - - - - The supplied proxy address is invalid. - The supplied proxy address is invalid. - - - - OverviewPage - - - Form - Form - - - - - The displayed information may be out of date. Your wallet automatically synchronizes with the Bitcoin network after a connection is established, but this process has not completed yet. - The displayed information may be out of date. Your wallet automatically synchronizes with the Bitcoin network after a connection is established, but this process has not completed yet. - - - - Watch-only: - - - - - Available: - - - - - Your current spendable balance - Your current spendable balance - - - - Pending: - - - - - Total of transactions that have yet to be confirmed, and do not yet count toward the spendable balance - Total of transactions that have yet to be confirmed, and do not yet count toward the spendable balance - - - - Immature: - Immature: - - - - Mined balance that has not yet matured - Mined balance that has not yet matured - - - - Balances - - - - - Total: - Total: - - - - Your current total balance - Your current total balance - - - - Your current balance in watch-only addresses - - - - - Spendable: - - - - - Recent transactions - - - - - Unconfirmed transactions to watch-only addresses - - - - - Mined balance in watch-only addresses that has not yet matured - - - - - Current total balance in watch-only addresses - - - - - PaymentServer - - - - - URI handling - URI handling - - - - Invalid payment address %1 - - - - - - - - - Payment request rejected - - - - - Payment request network doesn't match client network. - - - - - Payment request is not initialized. - - - - - Requested payment amount of %1 is too small (considered dust). - - - - - - - - - - Payment request error - - - - - Cannot start bitcoin: click-to-pay handler - - - - - Payment request fetch URL is invalid: %1 - - - - - URI cannot be parsed! This can be caused by an invalid Bitcoin address or malformed URI parameters. - - - - - Payment request file handling - - - - - Payment request file cannot be read! This can be caused by an invalid payment request file. - - - - - Payment request expired. - - - - - Unverified payment requests to custom payment scripts are unsupported. - - - - - - Invalid payment request. - - - - - Refund from %1 - - - - - Payment request %1 is too large (%2 bytes, allowed %3 bytes). - - - - - Payment request DoS protection - - - - - Error communicating with %1: %2 - - - - - Payment request cannot be parsed! - - - - - Bad response from server %1 - - - - - Payment acknowledged - - - - - Network request error - - - - - PeerTableModel - - - User Agent - - - - - Node/Service - - - - - Ping Time - - - - - QObject - - - Amount - Amount - - - - Enter a Bitcoin address (e.g. %1) - - - - - %1 d - - - - - %1 h - - - - - %1 m - - - - - - %1 s - - - - - None - - - - - N/A - N/A - - - - %1 ms - - - - - QRImageWidget - - - &Save Image... - - - - - &Copy Image - - - - - Save QR Code - Save QR Code - - - - PNG Image (*.png) - - - - - RPCConsole - - - Client name - Client name - - - - - - - - - - - - - - - - - - - - - - - - - - - N/A - N/A - - - - Client version - Client version - - - - &Information - &Information - - - - Debug window - - - - - General - - - - - Using OpenSSL version - Using OpenSSL version - - - - Using BerkeleyDB version - - - - - Startup time - Startup time - - - - Network - Network - - - - Name - - - - - Number of connections - Number of connections - - - - Block chain - Block chain - - - - Current number of blocks - Current number of blocks - - - - Open the Bitcoin Core debug log file from the current data directory. This can take a few seconds for large log files. - - - - - Received - - - - - Sent - - - - - &Peers - - - - - - - Select a peer to view detailed information. - - - - - Direction - - - - - Version - - - - - User Agent - - - - - Services - - - - - Starting Height - - - - - Sync Height - - - - - Ban Score - - - - - Connection Time - - - - - Last Send - - - - - Last Receive - - - - - Bytes Sent - - - - - Bytes Received - - - - - Ping Time - - - - - Time Offset - - - - - Last block time - Last block time - - - - &Open - &Open - - - - &Console - &Console - - - - &Network Traffic - - - - - &Clear - - - - - Totals - - - - - In: - - - - - Out: - - - - - Build date - Build date - - - - Debug log file - Debug log file - - - - Clear console - Clear console - - - - Welcome to the Bitcoin Core RPC console. - - - - - Use up and down arrows to navigate history, and <b>Ctrl-L</b> to clear screen. - Use up and down arrows to navigate history, and <b>Ctrl-L</b> to clear screen. - - - - Type <b>help</b> for an overview of available commands. - Type <b>help</b> for an overview of available commands. - - - - %1 B - - - - - %1 KB - - - - - %1 MB - - - - - %1 GB - - - - - via %1 - - - - - - never - - - - - Inbound - - - - - Outbound - - - - - Unknown - - - - - - Fetching... - - - - - ReceiveCoinsDialog - - - &Amount: - - - - - &Label: - &Label: - - - - &Message: - - - - - Reuse one of the previously used receiving addresses. Reusing addresses has security and privacy issues. Do not use this unless re-generating a payment request made before. - - - - - R&euse an existing receiving address (not recommended) - - - - - - An optional message to attach to the payment request, which will be displayed when the request is opened. Note: The message will not be sent with the payment over the Bitcoin network. - - - - - - An optional label to associate with the new receiving address. - - - - - Use this form to request payments. All fields are <b>optional</b>. - - - - - - An optional amount to request. Leave this empty or zero to not request a specific amount. - - - - - Clear all fields of the form. - - - - - Clear - - - - - Requested payments history - - - - - &Request payment - - - - - Show the selected request (does the same as double clicking an entry) - - - - - Show - - - - - Remove the selected entries from the list - - - - - Remove - - - - - Copy label - Copy label - - - - Copy message - - - - - Copy amount - Copy amount - - - - ReceiveRequestDialog - - - QR Code - - - - - Copy &URI - - - - - Copy &Address - - - - - &Save Image... - - - - - Request payment to %1 - - - - - Payment information - - - - - URI - - - - - Address - Address - - - - Amount - Amount - - - - Label - Label - - - - Message - Message - - - - Resulting URI too long, try to reduce the text for label / message. - Resulting URI too long, try to reduce the text for label / message. - - - - Error encoding URI into QR Code. - Error encoding URI into QR Code. - - - - RecentRequestsTableModel - - - Date - Date - - - - Label - Label - - - - Message - Message - - - - Amount - Amount - - - - (no label) - (no label) - - - - (no message) - - - - - (no amount) - - - - - SendCoinsDialog - - - - Send Coins - Send Coins - - - - Coin Control Features - - - - - Inputs... - - - - - automatically selected - - - - - Insufficient funds! - - - - - Quantity: - - - - - Bytes: - - - - - Amount: - - - - - Priority: - - - - - Fee: - - - - - After Fee: - - - - - Change: - - - - - If this is activated, but the change address is empty or invalid, change will be sent to a newly generated address. - - - - - Custom change address - - - - - Transaction Fee: - - - - - Choose... - - - - - collapse fee-settings - - - - - per kilobyte - - - - - - 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. - - - - - Hide - - - - - total at least - - - - - - 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. - - - - - (read the tooltip) - - - - - Recommended: - - - - - Custom: - - - - - (Smart fee not initialized yet. This usually takes a few blocks...) - - - - - Confirmation time: - - - - - normal - - - - - fast - - - - - Send as zero-fee transaction if possible - - - - - (confirmation may take longer) - - - - - Send to multiple recipients at once - Send to multiple recipients at once - - - - Add &Recipient - Add &Recipient - - - - Clear all fields of the form. - - - - - Dust: - - - - - Clear &All - Clear &All - - - - Balance: - Balance: - - - - Confirm the send action - Confirm the send action - - - - S&end - S&end - - - - Confirm send coins - Confirm send coins - - - - - - - %1 to %2 - - - - - Copy quantity - - - - - Copy amount - Copy amount - - - - Copy fee - - - - - Copy after fee - - - - - Copy bytes - - - - - Copy priority - - - - - Copy change - - - - - or - - - - - The amount to pay must be larger than 0. - The amount to pay must be larger than 0. - - - - The amount exceeds your balance. - The amount exceeds your balance. - - - - The total exceeds your balance when the %1 transaction fee is included. - The total exceeds your balance when the %1 transaction fee is included. - - - - Transaction creation failed! - - - - - 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. - - - - - A fee higher than %1 is considered an absurdly high fee. - - - - - Payment request expired. - - - - - Estimated to begin confirmation within %n block(s). - - Estimated to begin confirmation within %n block. - Estimated to begin confirmation within %n blocks. - - - - - Pay only the minimum fee of %1 - - - - - Total Amount %1<span style='font-size:10pt;font-weight:normal;'><br />(=%2)</span> - - - - - The recipient address is not valid. Please recheck. - - - - - Duplicate address found: addresses should only be used once each. - - - - - Warning: Invalid Bitcoin address - - - - - (no label) - (no label) - - - - Warning: Unknown change address - - - - - Copy dust - - - - - Are you sure you want to send? - - - - - added as transaction fee - - - - - SendCoinsEntry - - - - - A&mount: - A&mount: - - - - Pay &To: - Pay &To: - - - - Enter a label for this address to add it to your address book - Enter a label for this address to add it to your address book - - - - &Label: - &Label: - - - - Choose previously used address - - - - - This is a normal payment. - - - - - The Bitcoin address to send the payment to - - - - - Alt+A - Alt+A - - - - Paste address from clipboard - Paste address from clipboard - - - - Alt+P - Alt+P - - - - - - Remove this entry - - - - - The fee will be deducted from the amount being sent. The recipient will receive less bitcoins than you enter in the amount field. If multiple recipients are selected, the fee is split equally. - - - - - S&ubtract fee from amount - - - - - Message: - - - - - This is an unauthenticated payment request. - - - - - This is an authenticated payment request. - - - - - Enter a label for this address to add it to the list of used addresses - - - - - A message that was attached to the bitcoin: URI which will be stored with the transaction for your reference. Note: This message will not be sent over the Bitcoin network. - - - - - - Pay To: - - - - - - Memo: - - - - - ShutdownWindow - - - Bitcoin Core is shutting down... - - - - - Do not shut down the computer until this window disappears. - - - - - SignVerifyMessageDialog - - - Signatures - Sign / Verify a Message - Signatures - Sign / Verify a Message - - - - &Sign Message - &Sign Message - - - - You can sign messages/agreements with your addresses to prove you can receive bitcoins sent to them. Be careful not to sign anything vague or random, as phishing attacks may try to trick you into signing your identity over to them. Only sign fully-detailed statements you agree to. - - - - - The Bitcoin address to sign the message with - - - - - - Choose previously used address - - - - - - Alt+A - Alt+A - - - - Paste address from clipboard - Paste address from clipboard - - - - Alt+P - Alt+P - - - - Enter the message you want to sign here - Enter the message you want to sign here - - - - Signature - Signature - - - - Copy the current signature to the system clipboard - Copy the current signature to the system clipboard - - - - Sign the message to prove you own this Bitcoin address - Sign the message to prove you own this Bitcoin address - - - - Sign &Message - Sign &Message - - - - Reset all sign message fields - Reset all sign message fields - - - - - Clear &All - Clear &All - - - - &Verify Message - &Verify Message - - - - Enter the receiver's address, message (ensure you copy line breaks, spaces, tabs, etc. exactly) and signature below to verify the message. Be careful not to read more into the signature than what is in the signed message itself, to avoid being tricked by a man-in-the-middle attack. Note that this only proves the signing party receives with the address, it cannot prove sendership of any transaction! - - - - - The Bitcoin address the message was signed with - - - - - Verify the message to ensure it was signed with the specified Bitcoin address - Verify the message to ensure it was signed with the specified Bitcoin address - - - - Verify &Message - Verify &Message - - - - Reset all verify message fields - Reset all verify message fields - - - - Click "Sign Message" to generate signature - Click "Sign Message" to generate signature - - - - - The entered address is invalid. - The entered address is invalid. - - - - - - - Please check the address and try again. - Please check the address and try again. - - - - - The entered address does not refer to a key. - The entered address does not refer to a key. - - - - Wallet unlock was cancelled. - Wallet unlock was cancelled. - - - - Private key for the entered address is not available. - Private key for the entered address is not available. - - - - Message signing failed. - Message signing failed. - - - - Message signed. - Message signed. - - - - The signature could not be decoded. - The signature could not be decoded. - - - - - Please check the signature and try again. - Please check the signature and try again. - - - - The signature did not match the message digest. - The signature did not match the message digest. - - - - Message verification failed. - Message verification failed. - - - - Message verified. - Message verified. - - - - SplashScreen - - - Bitcoin Core - Bitcoin Core - - - - The Bitcoin Core developers - - - - - [testnet] - [testnet] - - - - TrafficGraphWidget - - - KB/s - - - - - TransactionDesc - - - Open until %1 - Open until %1 - - - - conflicted - - - - - %1/offline - %1/offline - - - - %1/unconfirmed - %1/unconfirmed - - - - %1 confirmations - %1 confirmations - - - - Status - Status - - - - , broadcast through %n node(s) - - , broadcast through %n node - , broadcast through %n nodes - - - - - Date - Date - - - - Source - Source - - - - Generated - Generated - - - - - - From - From - - - - - - To - To - - - - own address - own address - - - - - watch-only - - - - - label - label - - - - - - - - Credit - Credit - - - - matures in %n more block(s) - - matures in %n more block - matures in %n more blocks - - - - - not accepted - not accepted - - - - - - Debit - Debit - - - - Total debit - - - - - Total credit - - - - - Transaction fee - Transaction fee - - - - Net amount - Net amount - - - - - Message - Message - - - - Comment - Comment - - - - Transaction ID - Transaction ID - - - - Merchant - - - - - Generated coins must mature %1 blocks before they can be spent. When you generated this block, it was broadcast to the network to be added to the block chain. If it fails to get into the chain, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - - - - - Debug information - Debug information - - - - Transaction - Transaction - - - - Inputs - Inputs - - - - Amount - Amount - - - - - true - true - - - - - false - false - - - - , has not been successfully broadcast yet - , has not been successfully broadcast yet - - - - Open for %n more block(s) - - Open for %n more block - Open for %n more blocks - - - - - unknown - unknown - - - - TransactionDescDialog - - - Transaction details - Transaction details - - - - This pane shows a detailed description of the transaction - This pane shows a detailed description of the transaction - - - - TransactionTableModel - - - Date - Date - - - - Type - Type - - - - Immature (%1 confirmations, will be available after %2) - - - - - Open for %n more block(s) - - Open for %n more block - Open for %n more blocks - - - - - Open until %1 - Open until %1 - - - - Confirmed (%1 confirmations) - Confirmed (%1 confirmations) - - - - This block was not received by any other nodes and will probably not be accepted! - This block was not received by any other nodes and will probably not be accepted! - - - - Generated but not accepted - Generated but not accepted - - - - Offline - - - - - Label - Label - - - - Unconfirmed - - - - - Confirming (%1 of %2 recommended confirmations) - - - - - Conflicted - - - - - Received with - Received with - - - - Received from - Received from - - - - Sent to - Sent to - - - - Payment to yourself - Payment to yourself - - - - Mined - Mined - - - - watch-only - - - - - (n/a) - (n/a) - - - - Transaction status. Hover over this field to show number of confirmations. - Transaction status. Hover over this field to show number of confirmations. - - - - Date and time that the transaction was received. - Date and time that the transaction was received. - - - - Type of transaction. - Type of transaction. - - - - Whether or not a watch-only address is involved in this transaction. - - - - - User-defined intent/purpose of the transaction. - - - - - Amount removed from or added to balance. - Amount removed from or added to balance. - - - - TransactionView - - - - All - All - - - - Today - Today - - - - This week - This week - - - - This month - This month - - - - Last month - Last month - - - - This year - This year - - - - Range... - Range... - - - - Received with - Received with - - - - Sent to - Sent to - - - - To yourself - To yourself - - - - Mined - Mined - - - - Other - Other - - - - Enter address or label to search - Enter address or label to search - - - - Min amount - Min amount - - - - Copy address - Copy address - - - - Copy label - Copy label - - - - Copy amount - Copy amount - - - - Copy transaction ID - Copy transaction ID - - - - Edit label - Edit label - - - - Show transaction details - Show transaction details - - - - Export Transaction History - - - - - Watch-only - - - - - Exporting Failed - - - - - There was an error trying to save the transaction history to %1. - - - - - Exporting Successful - - - - - The transaction history was successfully saved to %1. - - - - - Comma separated file (*.csv) - Comma separated file (*.csv) - - - - Confirmed - Confirmed - - - - Date - Date - - - - Type - Type - - - - Label - Label - - - - Address - Address - - - - ID - ID - - - - Range: - Range: - - - - to - to - - - - UnitDisplayStatusBarControl - - - Unit to show amounts in. Click to select another unit. - - - - - WalletFrame - - - No wallet has been loaded. - - - - - WalletModel - - - Send Coins - Send Coins - - - - WalletView - - - &Export - &Export - - - - Export the data in the current tab to a file - Export the data in the current tab to a file - - - - Backup Wallet - Backup Wallet - - - - Wallet Data (*.dat) - Wallet Data (*.dat) - - - - Backup Failed - Backup Failed - - - - There was an error trying to save the wallet data to %1. - - - - - The wallet data was successfully saved to %1. - - - - - Backup Successful - Backup Successful - - - - bitcoin-core - - - Options: - Options: - - - - Specify data directory - Specify data directory - - - - Connect to a node to retrieve peer addresses, and disconnect - Connect to a node to retrieve peer addresses, and disconnect - - - - Specify your own public address - Specify your own public address - - - - Accept command line and JSON-RPC commands - Accept command line and JSON-RPC commands - - - - Run in the background as a daemon and accept commands - Run in the background as a daemon and accept commands - - - - Use the test network - Use the test network - - - - Accept connections from outside (default: 1 if no -proxy or -connect) - Accept connections from outside (default: 1 if no -proxy or -connect) - - - - Bind to given address and always listen on it. Use [host]:port notation for IPv6 - Bind to given address and always listen on it. Use [host]:port notation for IPv6 - - - - Delete all wallet transactions and only recover those parts of the blockchain through -rescan on startup - - - - - Distributed under the MIT software license, see the accompanying file COPYING or <http://www.opensource.org/licenses/mit-license.php>. - - - - - Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) - Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) - - - - Maximum total fees to use in a single wallet transaction; setting this too low may abort large transactions (default: %s) - - - - - Reduce storage requirements by pruning (deleting) old blocks. This mode disables wallet support and is incompatible with -txindex. Warning: Reverting this setting requires re-downloading the entire blockchain. (default: 0 = disable pruning blocks, >%u = target size in MiB to use for block files) - - - - - Set the number of script verification threads (%u to %d, 0 = auto, <0 = leave that many cores free, default: %d) - - - - - This is a pre-release test build - use at your own risk - do not use for mining or merchant applications - This is a pre-release test build - use at your own risk - do not use for mining or merchant applications - - - - Unable to bind to %s on this computer. Bitcoin Core is probably already running. - - - - - WARNING: abnormally high number of blocks generated, %d blocks received in the last %d hours (%d expected) - - - - - WARNING: check your network connection, %d blocks received in the last %d hours (%d expected) - - - - - Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. - Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. - - - - Warning: The network does not appear to fully agree! Some miners appear to be experiencing issues. - Warning: The network does not appear to fully agree! Some miners appear to be experiencing issues. - - - - Warning: We do not appear to fully agree with our peers! You may need to upgrade, or other nodes may need to upgrade. - Warning: We do not appear to fully agree with our peers! You may need to upgrade, or other nodes may need to upgrade. - - - - Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. - Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. - - - - 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. - 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. - - - - Whitelist peers connecting from the given netmask or IP address. Can be specified multiple times. - - - - - (default: 1) - - - - - <category> can be: - - - - - Attempt to recover private keys from a corrupt wallet.dat - Attempt to recover private keys from a corrupt wallet.dat - - - - Block creation options: - Block creation options: - - - - Connect only to the specified node(s) - Connect only to the specified node(s) - - - - Connection options: - - - - - Corrupted block database detected - Corrupted block database detected - - - - Debugging/Testing options: - - - - - Do not load the wallet and disable wallet RPC calls - - - - - Do you want to rebuild the block database now? - Do you want to rebuild the block database now? - - - - Error initializing block database - Error initializing block database - - - - Error initializing wallet database environment %s! - Error initializing wallet database environment %s! - - - - Error loading block database - Error loading block database - - - - Error opening block database - Error opening block database - - - - Error: Disk space is low! - Error: Disk space is low! - - - - Failed to listen on any port. Use -listen=0 if you want this. - Failed to listen on any port. Use -listen=0 if you want this. - - - - If <category> is not supplied, output all debugging information. - - - - - Importing... - - - - - Incorrect or no genesis block found. Wrong datadir for network? - Incorrect or no genesis block found. Wrong datadir for network? - - - - Invalid -onion address: '%s' - - - - - Not enough file descriptors available. - Not enough file descriptors available. - - - - Only connect to nodes in network <net> (ipv4, ipv6 or onion) - - - - - Prune cannot be configured with a negative value. - - - - - Prune mode is incompatible with -txindex. - - - - - Set database cache size in megabytes (%d to %d, default: %d) - - - - - Set maximum block size in bytes (default: %d) - - - - - Specify wallet file (within data directory) - Specify wallet file (within data directory) - - - - Use UPnP to map the listening port (default: %u) - - - - - Verifying blocks... - Verifying blocks... - - - - Verifying wallet... - Verifying wallet... - - - - Wallet %s resides outside data directory %s - Wallet %s resides outside data directory %s - - - - Wallet options: - - - - - Warning: This version is obsolete; upgrade required! - - - - - You need to rebuild the database using -reindex to change -txindex - You need to rebuild the database using -reindex to change -txindex - - - - Imports blocks from external blk000??.dat file - Imports blocks from external blk000??.dat file - - - - 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 - - - - - An error occurred while setting up the RPC address %s port %u for listening: %s - - - - - Bind to given address and whitelist peers connecting to it. Use [host]:port notation for IPv6 - - - - - Bind to given address to listen for JSON-RPC connections. Use [host]:port notation for IPv6. This option can be specified multiple times (default: bind to all interfaces) - - - - - Cannot obtain a lock on data directory %s. Bitcoin Core is probably already running. - - - - - Create new files with system default permissions, instead of umask 077 (only effective with disabled wallet functionality) - - - - - Discover own IP addresses (default: 1 when listening and no -externalip or -proxy) - - - - - Error: Listening for incoming connections failed (listen returned error %s) - - - - - Error: Unsupported argument -socks found. Setting SOCKS version isn't possible anymore, only SOCKS5 proxies are supported. - - - - - Execute command when a relevant alert is received or we see a really long fork (%s in cmd is replaced by message) - Execute command when a relevant alert is received or we see a really long fork (%s in cmd is replaced by message) - - - - Fees (in BTC/Kb) smaller than this are considered zero fee for relaying (default: %s) - - - - - If paytxfee is not set, include enough fee so transactions begin confirmation on average within n blocks (default: %u) - - - - - Invalid amount for -maxtxfee=<amount>: '%s' (must be at least the minrelay fee of %s to prevent stuck transactions) - - - - - Maximum size of data in data carrier transactions we relay and mine (default: %u) - - - - - Prune configured below the minimum of %d MB. Please use a higher number. - - - - - Query for peer addresses via DNS lookup, if low on addresses (default: 1 unless -connect) - - - - - Randomize credentials for every proxy connection. This enables Tor stream isolation (default: %u) - - - - - Set maximum size of high-priority/low-fee transactions in bytes (default: %d) - - - - - Set the number of threads for coin generation if enabled (-1 = all cores, default: %d) - - - - - The transaction amount is too small to send after the fee has been deducted - - - - - 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. - - - - - 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 - - - - - - Warning: -maxtxfee is set very high! Fees this large could be paid on a single transaction. - - - - - Warning: Please check that your computer's date and time are correct! If your clock is wrong Bitcoin Core will not work properly. - - - - - 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 - - - - - You need to rebuild the database using -reindex to go back to unpruned mode. This will redownload the entire blockchain - - - - - (default: %u) - - - - - Accept public REST requests (default: %u) - - - - - Activating best chain... - - - - - Can't run with a wallet in prune mode. - - - - - Cannot resolve -whitebind address: '%s' - - - - - Choose data directory on startup (default: 0) - Choose data directory on startup (default: 0) - - - - Connect through SOCKS5 proxy - - - - - Copyright (C) 2009-%i The Bitcoin Core Developers - - - - - Could not parse -rpcbind value %s as network address - - - - - Error loading wallet.dat: Wallet requires newer version of Bitcoin Core - - - - - Error reading from database, shutting down. - - - - - Error: A fatal internal error occurred, see debug.log for details - - - - - Error: Unsupported argument -tor found, use -onion. - - - - - Fee (in BTC/kB) to add to transactions you send (default: %s) - - - - - Information - Information - - - - Initialization sanity check failed. Bitcoin Core is shutting down. - - - - - Invalid amount for -maxtxfee=<amount>: '%s' - - - - - Invalid amount for -minrelaytxfee=<amount>: '%s' - Invalid amount for -minrelaytxfee=<amount>: '%s' - - - - Invalid amount for -mintxfee=<amount>: '%s' - Invalid amount for -mintxfee=<amount>: '%s' - - - - Invalid amount for -paytxfee=<amount>: '%s' (must be at least %s) - - - - - Invalid netmask specified in -whitelist: '%s' - - - - - Keep at most <n> unconnectable transactions in memory (default: %u) - - - - - Need to specify a port with -whitebind: '%s' - - - - - Node relay options: - - - - - Pruning blockstore... - - - - - RPC SSL options: (see the Bitcoin Wiki for SSL setup instructions) - - - - - RPC server options: - - - - - RPC support for HTTP persistent connections (default: %d) - - - - - Rebuild block chain index from current blk000??.dat files on startup - - - - - Receive and display P2P network alerts (default: %u) - - - - - Send trace/debug info to console instead of debug.log file - Send trace/debug info to console instead of debug.log file - - - - Send transactions as zero-fee transactions if possible (default: %u) - - - - - Set SSL root certificates for payment request (default: -system-) - - - - - Set language, for example "de_DE" (default: system locale) - Set language, for example "de_DE" (default: system locale) - - - - Show all debugging options (usage: --help -help-debug) - - - - - Show splash screen on startup (default: 1) - Show splash screen on startup (default: 1) - - - - Shrink debug.log file on client startup (default: 1 when no -debug) - Shrink debug.log file on client startup (default: 1 when no -debug) - - - - Signing transaction failed - Signing transaction failed - - - - Start minimized - Start minimized - - - - The transaction amount is too small to pay the fee - - - - - This is experimental software. - - - - - Transaction amount too small - Transaction amount too small - - - - Transaction amounts must be positive - Transaction amounts must be positive - - - - Transaction too large for fee policy - - - - - Transaction too large - Transaction too large - - - - UI Options: - - - - - Unable to bind to %s on this computer (bind returned error %s) - - - - - Use UPnP to map the listening port (default: 1 when listening) - Use UPnP to map the listening port (default: 1 when listening) - - - - Username for JSON-RPC connections - Username for JSON-RPC connections - - - - Wallet needed to be rewritten: restart Bitcoin Core to complete - - - - - Warning - Warning - - - - Warning: Unsupported argument -benchmark ignored, use -debug=bench. - - - - - Warning: Unsupported argument -debugnet ignored, use -debug=net. - - - - - Zapping all transactions from wallet... - - - - - on startup - - - - - wallet.dat corrupt, salvage failed - wallet.dat corrupt, salvage failed - - - - Password for JSON-RPC connections - Password for JSON-RPC connections - - - - Execute command when the best block changes (%s in cmd is replaced by block hash) - Execute command when the best block changes (%s in cmd is replaced by block hash) - - - - Upgrade wallet to latest format - Upgrade wallet to latest format - - - - Rescan the block chain for missing wallet transactions - Rescan the block chain for missing wallet transactions - - - - Use OpenSSL (https) for JSON-RPC connections - Use OpenSSL (https) for JSON-RPC connections - - - - This help message - This help message - - - - Allow DNS lookups for -addnode, -seednode and -connect - Allow DNS lookups for -addnode, -seednode and -connect - - - - Loading addresses... - Loading addresses... - - - - Error loading wallet.dat: Wallet corrupted - Error loading wallet.dat: Wallet corrupted - - - - (1 = keep tx meta data e.g. account owner and payment request information, 2 = drop tx meta data) - - - - - How thorough the block verification of -checkblocks is (0-4, default: %u) - - - - - Maintain a full transaction index, used by the getrawtransaction rpc call (default: %u) - - - - - Number of seconds to keep misbehaving peers from reconnecting (default: %u) - - - - - Output debugging information (default: %u, supplying <category> is optional) - - - - - Use separate SOCKS5 proxy to reach peers via Tor hidden services (default: %s) - - - - - (default: %s) - - - - - Acceptable ciphers (default: %s) - - - - - Always query for peer addresses via DNS lookup (default: %u) - - - - - Error loading wallet.dat - Error loading wallet.dat - - - - Generate coins (default: %u) - - - - - How many blocks to check at startup (default: %u, 0 = all) - - - - - Include IP addresses in debug output (default: %u) - - - - - Invalid -proxy address: '%s' - Invalid -proxy address: '%s' - - - - Listen for JSON-RPC connections on <port> (default: %u or testnet: %u) - - - - - Listen for connections on <port> (default: %u or testnet: %u) - - - - - Maintain at most <n> connections to peers (default: %u) - - - - - Make the wallet broadcast transactions - - - - - Maximum per-connection receive buffer, <n>*1000 bytes (default: %u) - - - - - Maximum per-connection send buffer, <n>*1000 bytes (default: %u) - - - - - Prepend debug output with timestamp (default: %u) - - - - - Relay and mine data carrier transactions (default: %u) - - - - - Relay non-P2SH multisig (default: %u) - - - - - Server certificate file (default: %s) - - - - - Server private key (default: %s) - - - - - Set key pool size to <n> (default: %u) - - - - - Set minimum block size in bytes (default: %u) - - - - - Set the number of threads to service RPC calls (default: %d) - - - - - Specify configuration file (default: %s) - - - - - Specify connection timeout in milliseconds (minimum: 1, default: %d) - - - - - Specify pid file (default: %s) - - - - - Spend unconfirmed change when sending transactions (default: %u) - - - - - Threshold for disconnecting misbehaving peers (default: %u) - - - - - Unknown network specified in -onlynet: '%s' - Unknown network specified in -onlynet: '%s' - - - - Cannot resolve -bind address: '%s' - Cannot resolve -bind address: '%s' - - - - Cannot resolve -externalip address: '%s' - Cannot resolve -externalip address: '%s' - - - - Invalid amount for -paytxfee=<amount>: '%s' - Invalid amount for -paytxfee=<amount>: '%s' - - - - Insufficient funds - Insufficient funds - - - - Loading block index... - Loading block index... - - - - Add a node to connect to and attempt to keep the connection open - Add a node to connect to and attempt to keep the connection open - - - - Loading wallet... - Loading wallet... - - - - Cannot downgrade wallet - Cannot downgrade wallet - - - - Cannot write default address - Cannot write default address - - - - Rescanning... - Rescanning... - - - - Done loading - Done loading - - - - Error - Error - - - diff --git a/src/qt/locale/bitcoin_eo.ts b/src/qt/locale/bitcoin_eo.ts deleted file mode 100644 index a5f92d422..000000000 --- a/src/qt/locale/bitcoin_eo.ts +++ /dev/null @@ -1,2402 +0,0 @@ - - - AddressBookPage - - Right-click to edit address or label - Dekstre-klaku por redakti adreson aÅ­ etikedon - - - Create a new address - Krei novan adreson - - - &New - &Nova - - - Copy the currently selected address to the system clipboard - Kopii elektitan adreson al la tondejo - - - &Copy - &Kopii - - - C&lose - &Fermi - - - &Copy Address - &Kopii Adreson - - - Delete the currently selected address from the list - Forigi la elektitan adreson el la listo - - - Export the data in the current tab to a file - Eksporti la datumojn el la aktuala langeto al dosiero - - - &Export - &Eksporti - - - &Delete - &Forigi - - - Choose the address to send coins to - Elektu la alsendotan adreson - - - Choose the address to receive coins with - Elektu la ricevontan adreson - - - C&hoose - &Elekti - - - Sending addresses - Sendaj adresoj - - - Receiving addresses - Ricevaj adresoj - - - These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins. - Jen viaj Bitmon-adresoj por sendi pagojn. Zorge kontrolu la sumon kaj la alsendan adreson antaÅ­ ol sendi. - - - These are your Bitcoin addresses for receiving payments. It is recommended to use a new receiving address for each transaction. - Jen viaj bitmonaj adresoj por ricevi pagojn. Estas konsilinde uzi apartan ricevan adreson por ĉiu transakcio. - - - Copy &Label - Kopii &Etikedon - - - &Edit - &Redakti - - - Export Address List - Eksporti Adresliston - - - Comma separated file (*.csv) - Perkome disigita dosiero (*.csv) - - - Exporting Failed - ekspotado malsukcesinta - - - There was an error trying to save the address list to %1. Please try again. - Okazis eraron dum konservo de adreslisto al %1. Bonvolu provi denove. - - - - AddressTableModel - - Label - Etikedo - - - Address - Adreso - - - (no label) - (neniu etikedo) - - - - AskPassphraseDialog - - Passphrase Dialog - Dialogo pri pasfrazo - - - Enter passphrase - Enigu pasfrazon - - - New passphrase - Nova pasfrazo - - - Repeat new passphrase - Ripetu la novan pasfrazon - - - Encrypt wallet - Ĉifri la monujon - - - This operation needs your wallet passphrase to unlock the wallet. - Ĉi tiu operacio bezonas vian monujan pasfrazon, por malÅlosi la monujon. - - - Unlock wallet - MalÅlosi la monujon - - - This operation needs your wallet passphrase to decrypt the wallet. - Ĉi tiu operacio bezonas vian monujan pasfrazon, por malĉifri la monujon. - - - Decrypt wallet - Malĉifri la monujon - - - Change passphrase - SÌ‚angÌ‚i la pasfrazon - - - Confirm wallet encryption - Konfirmo de ĉifrado de la monujo - - - Warning: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR BITCOINS</b>! - Atentu! Se vi cÌ‚ifras vian monujon kaj perdas la pasfrazon, vi <b>PERDOS LA TUTON DE VIA BITMONO<b>! - - - Are you sure you wish to encrypt your wallet? - CÌ‚u vi certas, ke vi volas cÌ‚ifri la monujon? - - - 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. - GRAVE: antaŭaj sekur-kopioj de via monujo-dosiero estas forigindaj kiam vi havas nove kreitan cÌ‚ifritan monujo-dosieron. Pro sekureco, antaŭaj kopioj de la necÌ‚ifrita dosiero ne plu funkcios tuj kiam vi ekuzos la novan cÌ‚ifritan dosieron. - - - Warning: The Caps Lock key is on! - Atentu: la majuskla baskulo estas sÌ‚altita! - - - Wallet encrypted - La monujo estas ĉifrita - - - Wallet encryption failed - CÌ‚ifrado de la monujo fiaskis - - - Wallet encryption failed due to an internal error. Your wallet was not encrypted. - Ĉifrado de monujo fiaskis pro interna eraro. Via monujo ne estas ĉifrita. - - - The supplied passphrases do not match. - La pasfrazoj entajpitaj ne samas. - - - Wallet unlock failed - MalsÌ‚loso de la monujo fiaskis - - - The passphrase entered for the wallet decryption was incorrect. - La pasfrazo enigita por ĉifrado de monujo ne gÌ‚ustas. - - - Wallet decryption failed - MalcÌ‚ifrado de la monujo fiaskis - - - Wallet passphrase was successfully changed. - Vi sukcese sÌ‚angÌ‚is la pasfrazon de la monujo. - - - - BitcoinGUI - - Sign &message... - Subskribi &mesaÄon... - - - Synchronizing with network... - Sinkronigante kun reto... - - - &Overview - &Superrigardo - - - Node - Nodo - - - Show general overview of wallet - Vidigi gÌ‚eneralan superrigardon de la monujo - - - &Transactions - &Transakcioj - - - Browse transaction history - Esplori historion de transakcioj - - - E&xit - &Eliri - - - Quit application - Eliri la aplikaĵon - - - About &Qt - Pri &Qt - - - Show information about Qt - Vidigi informojn pri Qt - - - &Options... - &Agordoj... - - - &Encrypt Wallet... - CÌ‚ifri &Monujon... - - - &Backup Wallet... - &Krei sekurkopion de la monujo... - - - &Change Passphrase... - SÌ‚angÌ‚i &Pasfrazon... - - - &Sending addresses... - &Sendaj adresoj... - - - &Receiving addresses... - &Ricevaj adresoj... - - - Open &URI... - Malfermi &URI-on... - - - Bitcoin Core client - kliento de bitmon-kerno - - - Importing blocks from disk... - Importado de blokoj el disko... - - - Reindexing blocks on disk... - Reindeksado de blokoj sur disko... - - - Send coins to a Bitcoin address - Sendi monon al Bitmon-adreso - - - Backup wallet to another location - Krei alilokan sekurkopion de monujo - - - Change the passphrase used for wallet encryption - SÌ‚angÌ‚i la pasfrazon por cÌ‚ifri la monujon - - - &Debug window - Sen&cimiga fenestro - - - Open debugging and diagnostic console - Malfermi konzolon de sencimigo kaj diagnozo - - - &Verify message... - &Kontroli mesaÄon... - - - Bitcoin - Bitmono - - - Wallet - Monujo - - - &Send - &Sendi - - - &Receive - &Ricevi - - - Show information about Bitcoin Core - Vidigi informon pri Bitmona Kerno - - - &Show / Hide - &Montri / KasÌ‚i - - - Show or hide the main Window - Montri aŭ kasÌ‚i la cÌ‚efan fenestron - - - Encrypt the private keys that belong to your wallet - CÌ‚ifri la privatajn sÌ‚losilojn de via monujo - - - Sign messages with your Bitcoin addresses to prove you own them - Subskribi mesagÌ‚ojn per via Bitmon-adresoj por pravigi, ke vi estas la posedanto - - - Verify messages to ensure they were signed with specified Bitcoin addresses - Kontroli mesagÌ‚ojn por kontroli ĉu ili estas subskribitaj per specifaj Bitmon-adresoj - - - &File - &Dosiero - - - &Settings - &Agordoj - - - &Help - &Helpo - - - Tabs toolbar - Langeto-breto - - - Bitcoin Core - Kerno de Bitmono - - - Request payments (generates QR codes and bitcoin: URIs) - Peti pagon (kreas QR-kodojn kaj URI-ojn kun prefikso bitcoin:) - - - &About Bitcoin Core - &Pri la Bitmona Kerno - - - Show the list of used sending addresses and labels - Vidigi la liston de uzitaj sendaj adresoj kaj etikedoj - - - Show the list of used receiving addresses and labels - Vidigi la liston de uzitaj ricevaj adresoj kaj etikedoj - - - Open a bitcoin: URI or payment request - Malfermi bitcoin:-URI-on aÅ­ pagpeton - - - &Command-line options - &Komandliniaj agordajÌ‚oj - - - No block source available... - Neniu fonto de blokoj trovebla... - - - %1 and %2 - %1 kaj %2 - - - %1 behind - mankas %1 - - - Last received block was generated %1 ago. - Lasta ricevita bloko kreigÌ‚is antaŭ %1. - - - Transactions after this will not yet be visible. - Transakcioj por tio ankoraŭ ne videblas. - - - Error - Eraro - - - Warning - Averto - - - Information - Informoj - - - Up to date - Äœisdata - - - Catching up... - Äœisdatigante... - - - Sent transaction - Sendita transakcio - - - Incoming transaction - Envenanta transakcio - - - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - Monujo estas <b>ĉifrita</b> kaj aktuale <b>malÅlosita</b> - - - Wallet is <b>encrypted</b> and currently <b>locked</b> - Monujo estas <b>ĉifrita</b> kaj aktuale <b>Ålosita</b> - - - - ClientModel - - Network Alert - Reta Averto - - - - CoinControlDialog - - Quantity: - Kvanto: - - - Bytes: - Bajtoj: - - - Amount: - Sumo: - - - Priority: - Prioritato: - - - Fee: - Krompago: - - - Dust: - Polvo: - - - After Fee: - Post krompago: - - - Change: - Restmono: - - - (un)select all - (mal)elekti ĉion - - - Tree mode - ArboreÄimo - - - List mode - ListreÄimo - - - Amount - Sumo - - - Received with label - Ricevita kun etikedo - - - Received with address - Ricevita kun adreso - - - Date - Dato - - - Confirmations - Konfirmoj - - - Confirmed - Konfirmita - - - Priority - Prioritato - - - Copy address - Kopii adreson - - - Copy label - Kopii etikedon - - - Copy amount - Kopii sumon - - - Copy transaction ID - Kopii transakcian ID-on - - - Lock unspent - Åœlosi la neelspezitajn - - - Unlock unspent - MalÅlosi la neelspezitajn - - - Copy quantity - Kopii kvanton - - - Copy fee - Kopii krompagon - - - Copy after fee - Kopii post krompago - - - Copy bytes - Kopii bajtojn - - - Copy priority - Kopii prioritaton - - - Copy dust - Kopii polvon - - - Copy change - Kopii restmonon - - - highest - plej alta - - - higher - pli alta - - - high - alta - - - medium-high - mezalta - - - medium - meza - - - low-medium - mezmalalta - - - low - malalta - - - lower - pli malalta - - - lowest - plej malalta - - - (%1 locked) - (%1 Ålosita) - - - none - neniu - - - yes - jes - - - no - ne - - - This means a fee of at least %1 per kB is required. - Tio signifas, ke krompago de almenaÅ­ po %1 por ĉiu kB estas deviga. - - - Can vary +/- 1 byte per input. - Povas varii po +/- 1 bajton por ĉiu enigo. - - - Transactions with higher priority are more likely to get included into a block. - Transakcioj kun pli alta prioritato havas pli altan Åancon inkluziviÄi en bloko. - - - (no label) - (neniu etikedo) - - - change from %1 (%2) - restmono de %1 (%2) - - - (change) - (restmono) - - - - EditAddressDialog - - Edit Address - Redakti Adreson - - - &Label - &Etikedo - - - The label associated with this address list entry - La etikedo ligita al tiu ĉi adreslistero - - - The address associated with this address list entry. This can only be modified for sending addresses. - La adreso ligita al tiu ĉi adreslistero. Eblas modifi tion nur por sendaj adresoj. - - - &Address - &Adreso - - - New receiving address - Nova adreso por ricevi - - - New sending address - Nova adreso por sendi - - - Edit receiving address - Redakti adreson por ricevi - - - Edit sending address - Redakti adreson por sendi - - - The entered address "%1" is already in the address book. - La adreso enigita "%1" jam ekzistas en la adresaro. - - - The entered address "%1" is not a valid Bitcoin address. - La adreso enigita "%1" ne estas valida Bitmon-adreso. - - - Could not unlock wallet. - Ne eblis malÅlosi monujon. - - - New key generation failed. - Fiaskis kreo de nova sÌ‚losilo. - - - - FreespaceChecker - - A new data directory will be created. - KreigÌ‚os nova dosierujo por la datumoj. - - - name - nomo - - - Directory already exists. Add %1 if you intend to create a new directory here. - Tiu dosierujo jam ekzistas. Aldonu %1 si vi volas krei novan dosierujon cÌ‚i tie. - - - Path already exists, and is not a directory. - Vojo jam ekzistas, kaj ne estas dosierujo. - - - Cannot create data directory here. - Ne eblas krei dosierujon por datumoj cÌ‚i tie. - - - - HelpMessageDialog - - Bitcoin Core - Kerno de Bitmono - - - version - versio - - - About Bitcoin Core - Pri la Bitmona Kerno - - - Command-line options - Komandliniaj agordajÌ‚oj - - - Usage: - Uzado: - - - command-line options - komandliniaj agordajÌ‚oj - - - - Intro - - Welcome - Bonvenon - - - Welcome to Bitcoin Core. - Bonvenon al la bitmona kerno, Bitcoin Core. - - - As this is the first time the program is launched, you can choose where Bitcoin Core will store its data. - Dum tiu ĉi unua uzo de la programo, vi povas elekti lokon, kie Bitcoin Core stokos siajn datumojn. - - - Bitcoin Core will download and store a copy of the Bitcoin block chain. At least %1GB of data will be stored in this directory, and it will grow over time. The wallet will also be stored in this directory. - Bitcoin Core elÅutos kaj konservos kopion de la bitmona blokĉeno. AlmenaÅ­ %1GB da datumoj konserviÄos en tiu loko, kaj tio poiome kreskos. AnkaÅ­ via monujo konserviÄos en tiu dosierujo. - - - Use the default data directory - Uzi la defaŭltan dosierujon por datumoj - - - Use a custom data directory: - Uzi alian dosierujon por datumoj: - - - Bitcoin Core - Kerno de Bitmono - - - Error - Eraro - - - - OpenURIDialog - - Open URI - Malfermi URI-on - - - Open payment request from URI or file - Malfermi pagpeton el URI aÅ­ dosiero - - - URI: - URI: - - - Select payment request file - Elektu la dosieron de la pagpeto - - - Select payment request file to open - Elektu la malfermotan dosieron de la pagpeto - - - - OptionsDialog - - Options - AgordajÌ‚oj - - - &Main - CÌ‚&efa - - - Size of &database cache - Dosiergrando de &datumbasa kaÅmemoro - - - MB - MB - - - Reset all client options to default. - Reagordi cÌ‚ion al defaŭlataj valoroj. - - - &Reset Options - &Rekomenci agordadon - - - &Network - &Reto - - - Expert - Fakulo - - - Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled. - Aŭtomate malfermi la kursilan pordon por Bitmono. Tio funkcias nur se via kursilo havas la UPnP-funkcion, kaj se tiu cÌ‚i estas sÌ‚altita. - - - Map port using &UPnP - Mapigi pordon per &UPnP - - - Proxy &IP: - Prokurila &IP: - - - &Port: - &Pordo: - - - Port of the proxy (e.g. 9050) - la pordo de la prokurilo (ekz. 9050) - - - &Window - &Fenestro - - - Show only a tray icon after minimizing the window. - Montri nur sistempletan piktogramon post minimumigo de la fenestro. - - - &Minimize to the tray instead of the taskbar - &Minimumigi al la sistempleto anstataŭ al la taskopleto - - - M&inimize on close - M&inimumigi je fermo - - - &Display - &Aspekto - - - User Interface &language: - &Lingvo de la fasado: - - - &Unit to show amounts in: - &Unuo por vidigi sumojn: - - - Choose the default subdivision unit to show in the interface and when sending coins. - Elekti la defaŭltan manieron por montri bitmonajn sumojn en la interfaco, kaj kiam vi sendos bitmonon. - - - Whether to show coin control features or not. - Ĉu montri detalan adres-regilon, aÅ­ ne. - - - &OK - &Bone - - - &Cancel - &Nuligi - - - default - defaŭlta - - - none - neniu - - - Confirm options reset - Konfirmi resÌ‚argo de agordoj - - - The supplied proxy address is invalid. - La prokurila adreso estas malvalida. - - - - OverviewPage - - Form - Formularo - - - The displayed information may be out of date. Your wallet automatically synchronizes with the Bitcoin network after a connection is established, but this process has not completed yet. - Eblas, ke la informoj videblaj cÌ‚i tie estas eksdataj. Via monujo aŭtomate sinkonigÌ‚as kun la bitmona reto kiam ili konektigÌ‚as, sed tiu procezo ankoraŭ ne finfarigÌ‚is. - - - Your current spendable balance - via aktuala elspezebla saldo - - - Total of transactions that have yet to be confirmed, and do not yet count toward the spendable balance - la sumo de transakcioj ankoraŭ ne konfirmitaj, kiuj ankoraŭ ne elspezeblas - - - Immature: - Nematura: - - - Mined balance that has not yet matured - Minita saldo, kiu ankoraŭ ne maturigÌ‚is - - - Total: - Totalo: - - - Your current total balance - via aktuala totala saldo - - - - PaymentServer - - URI handling - Traktado de URI-oj - - - Invalid payment address %1 - Nevalida pagadreso %1 - - - Requested payment amount of %1 is too small (considered dust). - La petita pagosumo de %1 estas tro malgranda (konsiderata kiel polvo). - - - Payment request error - Eraro dum pagopeto - - - Cannot start bitcoin: click-to-pay handler - Ne eblas lanĉi la ilon 'klaki-por-pagi' - - - Refund from %1 - Repago de %1 - - - Error communicating with %1: %2 - Eraro dum komunikado kun %1: %2 - - - Bad response from server %1 - Malbona respondo de la servilo %1 - - - Payment acknowledged - Pago agnoskita - - - Network request error - Eraro dum ret-peto - - - - PeerTableModel - - - QObject - - Amount - Sumo - - - %1 h - %1 h - - - %1 m - %1 m - - - N/A - neaplikebla - - - - QRImageWidget - - &Save Image... - &Konservi Bildon... - - - &Copy Image - &Kopii Bildon - - - Save QR Code - Konservi QR-kodon - - - PNG Image (*.png) - PNG-bildo (*.png) - - - - RPCConsole - - Client name - Nomo de kliento - - - N/A - neaplikebla - - - Client version - Versio de kliento - - - &Information - &Informoj - - - Debug window - Sencimiga fenestro - - - General - Äœenerala - - - Using OpenSSL version - uzas OpenSSL-version - - - Startup time - Horo de lancÌ‚o - - - Network - Reto - - - Name - Nomo - - - Number of connections - Nombro de konektoj - - - Block chain - Blokĉeno - - - Current number of blocks - Aktuala nombro de blokoj - - - Bytes Sent - Bajtoj Senditaj: - - - Last block time - Horo de la lasta bloko - - - &Open - &Malfermi - - - &Console - &Konzolo - - - &Network Traffic - &Reta Trafiko - - - &Clear - &Forigi ĉion - - - Totals - Totaloj - - - In: - En: - - - Out: - El: - - - Build date - Dato de kompilado - - - Debug log file - Sencimiga protokoldosiero - - - Clear console - Malplenigi konzolon - - - Use up and down arrows to navigate history, and <b>Ctrl-L</b> to clear screen. - Uzu la sagojn supran kaj malsupran por esplori la historion, kaj <b>stir-L</b> por malplenigi la ekranon. - - - Type <b>help</b> for an overview of available commands. - Tajpu <b>help</b> por superrigardo de la disponeblaj komandoj. - - - %1 B - %1 B - - - %1 KB - %1 KB - - - %1 MB - %1 MB - - - %1 GB - %1 GB - - - - ReceiveCoinsDialog - - &Amount: - &Kvanto: - - - &Label: - &Etikedo: - - - &Message: - &MesaÄo: - - - Reuse one of the previously used receiving addresses. Reusing addresses has security and privacy issues. Do not use this unless re-generating a payment request made before. - Reuzi unu el la jam uzitaj ricevaj adresoj. Reuzo de adresoj povas krei problemojn pri sekureco kaj privateco. Ne uzu tiun ĉi funkcion krom por rekrei antaÅ­e faritan pagopeton. - - - R&euse an existing receiving address (not recommended) - R&euzi ekzistantan ricevan adreson (malrekomendinda) - - - Clear all fields of the form. - Malplenigi ĉiujn kampojn de la formularo. - - - Clear - Forigi - - - &Request payment - &Peti pagon - - - Show - Vidigi - - - Remove - Forigi - - - Copy label - Kopii etikedon - - - Copy message - Kopiu mesaÄon - - - Copy amount - Kopii sumon - - - - ReceiveRequestDialog - - QR Code - QR-kodo - - - Copy &URI - Kopii &URI - - - Copy &Address - Kopii &Adreson - - - &Save Image... - &Konservi Bildon... - - - Request payment to %1 - Peti pagon al %1 - - - Payment information - Paginformoj - - - URI - URI - - - Address - Adreso - - - Amount - Sumo - - - Label - Etikedo - - - Message - MesagÌ‚o - - - Resulting URI too long, try to reduce the text for label / message. - La rezultanta URI estas tro longa. Provu malplilongigi la tekston de la etikedo / mesagÌ‚o. - - - Error encoding URI into QR Code. - Eraro de kodigo de URI en la QR-kodon. - - - - RecentRequestsTableModel - - Date - Dato - - - Label - Etikedo - - - Message - MesagÌ‚o - - - Amount - Sumo - - - (no label) - (neniu etikedo) - - - (no message) - (neniu mesaÄo) - - - - SendCoinsDialog - - Send Coins - Sendi Bitmonon - - - Coin Control Features - Monregaj Opcioj - - - Inputs... - Enigoj... - - - Insufficient funds! - Nesufiĉa mono! - - - Quantity: - Kvanto: - - - Bytes: - Bajtoj: - - - Amount: - Sumo: - - - Priority: - Prioritato: - - - Fee: - Krompago: - - - After Fee: - Post krompago: - - - Change: - Restmono: - - - Send to multiple recipients at once - Sendi samtempe al pluraj ricevantoj - - - Add &Recipient - Aldoni &Ricevonton - - - Clear all fields of the form. - Malplenigi ĉiujn kampojn de la formularo. - - - Dust: - Polvo: - - - Clear &All - &Forigi CÌ‚ion - - - Balance: - Saldo: - - - Confirm the send action - Konfirmi la sendon - - - S&end - Åœendi - - - Confirm send coins - Konfirmi sendon de bitmono - - - %1 to %2 - %1 al %2 - - - Copy quantity - Kopii kvanton - - - Copy amount - Kopii sumon - - - Copy fee - Kopii krompagon - - - Copy after fee - Kopii post krompago - - - Copy bytes - Kopii bajtojn - - - Copy priority - Kopii prioritaton - - - Copy change - Kopii restmonon - - - or - aÅ­ - - - The amount to pay must be larger than 0. - La pagenda sumo devas esti pli ol 0. - - - The amount exceeds your balance. - La sumo estas pli granda ol via saldo. - - - The total exceeds your balance when the %1 transaction fee is included. - La sumo kun la %1 krompago estas pli granda ol via saldo. - - - Transaction creation failed! - Kreo de transakcio fiaskis! - - - Warning: Invalid Bitcoin address - Averto: Nevalida Bitmon-adreso - - - (no label) - (neniu etikedo) - - - Copy dust - Kopii polvon - - - Are you sure you want to send? - Ĉu vi certas, ke vi volas sendi? - - - added as transaction fee - aldonita kiel krompago - - - - SendCoinsEntry - - A&mount: - &Sumo: - - - Pay &To: - &Ricevonto: - - - Enter a label for this address to add it to your address book - Tajpu etikedon por tiu cÌ‚i adreso kaj aldonu gÌ‚in al via adresaro - - - &Label: - &Etikedo: - - - Choose previously used address - Elektu la jam uzitan adreson - - - This is a normal payment. - Tio estas normala pago. - - - Alt+A - Alt+A - - - Paste address from clipboard - Alglui adreson de tondejo - - - Alt+P - Alt+P - - - Remove this entry - Forigu ĉi tiun enskribon - - - Message: - MesagÌ‚o: - - - Enter a label for this address to add it to the list of used addresses - Tajpu etikedon por tiu ĉi adreso por aldoni Äin al la listo de uzitaj adresoj - - - Pay To: - Pagi Al: - - - Memo: - Memorando: - - - - ShutdownWindow - - Do not shut down the computer until this window disappears. - Ne sistemfermu Äis ĉi tiu fenestro malaperas. - - - - SignVerifyMessageDialog - - Signatures - Sign / Verify a Message - Subskriboj - Subskribi / Kontroli mesagÌ‚on - - - &Sign Message - &Subskribi MesagÌ‚on - - - Choose previously used address - Elektu la jam uzitan adreson - - - Alt+A - Alt+A - - - Paste address from clipboard - Alglui adreson de tondejo - - - Alt+P - Alt+P - - - Enter the message you want to sign here - Tajpu la mesagÌ‚on, kiun vi volas sendi, cîi tie - - - Signature - Subskribo - - - Copy the current signature to the system clipboard - Kopii la aktualan subskribon al la tondejo - - - Sign the message to prove you own this Bitcoin address - Subskribi la mesagÌ‚on por pravigi, ke vi estas la posedanto de tiu Bitmon-adreso - - - Sign &Message - Subskribi &MesagÌ‚on - - - Reset all sign message fields - Reagordigi cÌ‚iujn prisubskribajn kampojn - - - Clear &All - &Forigi CÌ‚ion - - - &Verify Message - &Kontroli MesagÌ‚on - - - Verify the message to ensure it was signed with the specified Bitcoin address - Kontroli la mesagÌ‚on por pravigi, ke gÌ‚i ja estas subskribita per la specifa Bitmon-adreso - - - Verify &Message - Kontroli &MesagÌ‚on - - - Reset all verify message fields - Reagordigi cÌ‚iujn prikontrolajn kampojn - - - Click "Sign Message" to generate signature - Klaku "Subskribi MesagÌ‚on" por krei subskribon - - - The entered address is invalid. - La adreso, kiun vi enmetis, estas nevalida. - - - Please check the address and try again. - Bonvolu kontroli la adreson kaj reprovi. - - - The entered address does not refer to a key. - La adreso, kiun vi enmetis, referencas neniun sÌ‚losilon. - - - Wallet unlock was cancelled. - MalÅloso de monujo estas nuligita. - - - Private key for the entered address is not available. - La privata sÌ‚losilo por la enigita adreso ne disponeblas. - - - Message signing failed. - Subskribo de mesagÌ‚o fiaskis. - - - Message signed. - MesagÌ‚o estas subskribita. - - - The signature could not be decoded. - Ne eblis malcÌ‚ifri la subskribon. - - - Please check the signature and try again. - Bonvolu kontroli la subskribon kaj reprovu. - - - The signature did not match the message digest. - La subskribo ne kongruis kun la mesagÌ‚-kompilajÌ‚o. - - - Message verification failed. - Kontrolo de mesagÌ‚o malsukcesis. - - - Message verified. - MesagÌ‚o sukcese kontrolita. - - - - SplashScreen - - Bitcoin Core - Kerno de Bitmono - - - The Bitcoin Core developers - La programistoj de Bitmona Kerno - - - [testnet] - [testnet] - - - - TrafficGraphWidget - - KB/s - KB/s - - - - TransactionDesc - - Open until %1 - Malferma gÌ‚is %1 - - - %1/offline - %1/senkonekte - - - %1/unconfirmed - %1/nekonfirmite - - - %1 confirmations - %1 konfirmoj - - - Status - Stato - - - Date - Dato - - - Source - Fonto - - - Generated - Kreita - - - From - De - - - To - Al - - - own address - propra adreso - - - label - etikedo - - - Credit - Kredito - - - not accepted - ne akceptita - - - Debit - Debeto - - - Transaction fee - Krompago - - - Net amount - Neta sumo - - - Message - MesagÌ‚o - - - Comment - Komento - - - Transaction ID - Transakcia ID - - - Merchant - Vendisto - - - Generated coins must mature %1 blocks before they can be spent. When you generated this block, it was broadcast to the network to be added to the block chain. If it fails to get into the chain, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - Kreitaj moneroj devas esti maturaj je %1 blokoj antaÅ­ ol eblas elspezi ilin. Kiam vi generis tiun ĉi blokon, Äi estis elsendita al la reto por aldono al la blokĉeno. Se tiu aldono malsukcesas, Äia stato ÅanÄiÄos al "neakceptita" kaj ne eblos elspezi Äin. Tio estas malofta, sed povas okazi se alia bloko estas kreita je preskaÅ­ la sama momento kiel la via. - - - Debug information - Sencimigaj informoj - - - Transaction - Transakcio - - - Inputs - Enigoj - - - Amount - Sumo - - - true - vera - - - false - malvera - - - , has not been successfully broadcast yet - , ankoraÅ­ ne elsendita sukcese - - - unknown - nekonata - - - - TransactionDescDialog - - Transaction details - Transakciaj detaloj - - - This pane shows a detailed description of the transaction - Tiu cÌ‚i panelo montras detalan priskribon de la transakcio - - - - TransactionTableModel - - Date - Dato - - - Type - Tipo - - - Open until %1 - Malferma gÌ‚is %1 - - - Confirmed (%1 confirmations) - Konfirmita (%1 konfirmoj) - - - This block was not received by any other nodes and will probably not be accepted! - Tiun cÌ‚i blokon ne ricevis ajna alia nodo, kaj gÌ‚i versÌ‚ajne ne akceptigÌ‚os! - - - Generated but not accepted - Kreita sed ne akceptita - - - Offline - Senkonekte - - - Label - Etikedo - - - Unconfirmed - Nekonfirmita - - - Received with - Ricevita kun - - - Received from - Ricevita de - - - Sent to - Sendita al - - - Payment to yourself - Pago al vi mem - - - Mined - Minita - - - (n/a) - neaplikebla - - - Transaction status. Hover over this field to show number of confirmations. - Transakcia stato. SÌ‚vebi super tiu cÌ‚i kampo por montri la nombron de konfirmoj. - - - Date and time that the transaction was received. - Dato kaj horo kiam la transakcio alvenis. - - - Type of transaction. - Tipo de transakcio. - - - Amount removed from or added to balance. - Sumo elprenita de aŭ aldonita al la saldo. - - - - TransactionView - - All - Ĉiuj - - - Today - HodiaÅ­ - - - This week - CÌ‚i-semajne - - - This month - CÌ‚i-monate - - - Last month - Pasintmonate - - - This year - CÌ‚i-jare - - - Range... - Intervalo... - - - Received with - Ricevita kun - - - Sent to - Sendita al - - - To yourself - Al vi mem - - - Mined - Minita - - - Other - Aliaj - - - Enter address or label to search - Tajpu adreson aŭ etikedon por sercÌ‚i - - - Min amount - Minimuma sumo - - - Copy address - Kopii adreson - - - Copy label - Kopii etikedon - - - Copy amount - Kopii sumon - - - Copy transaction ID - Kopii transakcian ID-on - - - Edit label - Redakti etikedon - - - Show transaction details - Montri detalojn de transakcio - - - Exporting Failed - ekspotado malsukcesinta - - - Comma separated file (*.csv) - Perkome disigita dosiero (*.csv) - - - Confirmed - Konfirmita - - - Date - Dato - - - Type - Tipo - - - Label - Etikedo - - - Address - Adreso - - - ID - ID - - - Range: - Intervalo: - - - to - al - - - - UnitDisplayStatusBarControl - - - WalletFrame - - - WalletModel - - Send Coins - Sendi Bitmonon - - - - WalletView - - &Export - &Eksporti - - - Export the data in the current tab to a file - Eksporti la datumojn el la aktuala langeto al dosiero - - - Backup Wallet - Krei sekurkopion de monujo - - - Wallet Data (*.dat) - Monuj-datumoj (*.dat) - - - Backup Failed - Malsukcesis sekurkopio - - - Backup Successful - Sukcesis krei sekurkopion - - - - bitcoin-core - - Options: - Agordoj: - - - Specify data directory - Specifi dosieron por datumoj - - - Connect to a node to retrieve peer addresses, and disconnect - Konekti al nodo por ricevi adresojn de samtavolanoj, kaj malkonekti - - - Specify your own public address - Specifi vian propran publikan adreson - - - Accept command line and JSON-RPC commands - Akcepti komandojn JSON-RPC kaj el komandlinio - - - Run in the background as a daemon and accept commands - Ruli fone kiel demono kaj akcepti komandojn - - - Use the test network - Uzi la test-reton - - - Accept connections from outside (default: 1 if no -proxy or -connect) - Akcepti konektojn el ekstere (defaŭlte: 1 se ne estas -proxy nek -connect) - - - Bind to given address and always listen on it. Use [host]:port notation for IPv6 - Bindi al donita adreso kaj cÌ‚iam aŭskulti per gÌ‚i. Uzu la formaton [gastigo]:pordo por IPv6 - - - Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) - Plenumi komandon kiam monuja transakcio sÌ‚angÌ‚igÌ‚as (%s en cmd anstataŭigÌ‚as per TxID) - - - This is a pre-release test build - use at your own risk - do not use for mining or merchant applications - Tiu cÌ‚i estas antaŭeldona testa versio - uzu laÅ­ via propra risko - ne uzu por minado aŭ por aplikajÌ‚oj por vendistoj - - - Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. - Averto: -paytxfee estas agordita per tre alta valoro! Tio estas la krompago, kion vi pagos se vi sendas la transakcion. - - - Warning: The network does not appear to fully agree! Some miners appear to be experiencing issues. - Averto: La reto ne tute konsentas! Kelkaj minantoj Åajne spertas problemojn aktuale. - - - Warning: We do not appear to fully agree with our peers! You may need to upgrade, or other nodes may need to upgrade. - Averto: Åajne ni ne tute konsentas kun niaj samtavolanoj! Eble vi devas Äisdatigi vian klienton, aÅ­ eble aliaj nodoj faru same. - - - Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. - Averto: okazis eraro dum lego de wallet.dat! CÌ‚iuj sÌ‚losiloj sukcese legigÌ‚is, sed la transakciaj datumoj aŭ la adresaro eble mankas aŭ malgÌ‚ustas. - - - 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. - Averto: via wallet.dat estas difektita, sed la datumoj sukcese savigÌ‚is! La originala wallet.dat estas nun konservita kiel wallet.{timestamp}.bak en %s; se via saldo aŭ transakcioj estas malgÌ‚ustaj vi devus restaŭri per alia sekurkopio. - - - <category> can be: - <category> povas esti: - - - Attempt to recover private keys from a corrupt wallet.dat - Provo ripari privatajn sÌ‚losilojn el difektita wallet.dat - - - Block creation options: - Blok-kreaj agordajÌ‚oj: - - - Connect only to the specified node(s) - Konekti nur al specifita(j) nodo(j) - - - Corrupted block database detected - Difektita blokdatumbazo trovita - - - Do you want to rebuild the block database now? - CÌ‚u vi volas rekonstrui la blokdatumbazon nun? - - - Error initializing block database - Eraro dum pravalorizado de blokdatumbazo - - - Error initializing wallet database environment %s! - Eraro dum pravalorizado de monuj-datumbaza cÌ‚irkaŭajÌ‚o %s! - - - Error loading block database - Eraro dum sÌ‚argado de blokdatumbazo - - - Error opening block database - Eraro dum malfermado de blokdatumbazo - - - Error: Disk space is low! - Eraro: restas malmulte da diskospaco! - - - Failed to listen on any port. Use -listen=0 if you want this. - Ne sukcesis aŭskulti ajnan pordon. Uzu -listen=0 se tion vi volas. - - - Incorrect or no genesis block found. Wrong datadir for network? - Geneza bloko aŭ netrovita aŭ negÌ‚usta. CÌ‚u eble la datadir de la reto malgÌ‚ustas? - - - Invalid -onion address: '%s' - Nevalida -onion-adreso: '%s' - - - Not enough file descriptors available. - NesuficÌ‚a nombro de dosierpriskribiloj disponeblas. - - - Specify wallet file (within data directory) - Specifi monujan dosieron (ene de dosierujo por datumoj) - - - Verifying blocks... - Kontrolado de blokoj... - - - Verifying wallet... - Kontrolado de monujo... - - - Wallet %s resides outside data directory %s - Monujo %s trovigÌ‚as ekster la dosierujo por datumoj %s - - - Wallet options: - Monujaj opcioj: - - - You need to rebuild the database using -reindex to change -txindex - Vi devas rekontrui la datumbazon kun -reindex por sÌ‚angÌ‚i -txindex - - - Imports blocks from external blk000??.dat file - Importas blokojn el ekstera dosiero blk000??.dat - - - Execute command when a relevant alert is received or we see a really long fork (%s in cmd is replaced by message) - Plenumi komandon kiam rilata alerto riceviÄas, aÅ­ kiam ni vidas tre longan forkon (%s en cms anstataÅ­iÄas per mesaÄo) - - - Choose data directory on startup (default: 0) - Elekti dosierujon por datumoj dum lancÌ‚o (defaŭlte: 0) - - - Information - Informoj - - - Invalid amount for -minrelaytxfee=<amount>: '%s' - Nevalida sumo por -minrelaytxfee=<amount>: '%s' - - - Invalid amount for -mintxfee=<amount>: '%s' - Nevalida sumo por -mintxfee=<amount>: '%s' - - - Send trace/debug info to console instead of debug.log file - Sendi spurajn/sencimigajn informojn al la konzolo anstataŭ al dosiero debug.log - - - Set language, for example "de_DE" (default: system locale) - Agordi lingvon, ekzemple "de_DE" (defaŭlte: tiu de la sistemo) - - - Show splash screen on startup (default: 1) - Montri salutsÌ‚ildon dum lancÌ‚o (defaŭlte: 1) - - - Shrink debug.log file on client startup (default: 1 when no -debug) - Malpligrandigi la sencimigan protokol-dosieron kiam kliento lancÌ‚igÌ‚as (defaŭlte: 1 kiam mankas -debug) - - - Signing transaction failed - Subskriba transakcio fiaskis - - - Start minimized - LancÌ‚igÌ‚i plejete - - - This is experimental software. - Äi estas eksperimenta programo - - - Transaction amount too small - Transakcia sumo tro malgranda - - - Transaction amounts must be positive - Transakcia sumo devas esti pozitiva - - - Transaction too large - Transakcio estas tro granda - - - Use UPnP to map the listening port (default: 1 when listening) - Uzi UPnP por mapi la aŭskultan pordon (defaŭlte: 1 dum aŭskultado) - - - Username for JSON-RPC connections - Salutnomo por konektoj JSON-RPC - - - Warning - Averto - - - wallet.dat corrupt, salvage failed - wallet.dat estas difektita, riparo malsukcesis - - - Password for JSON-RPC connections - Pasvorto por konektoj JSON-RPC - - - Execute command when the best block changes (%s in cmd is replaced by block hash) - Plenumi komandon kiam plej bona bloko sÌ‚angÌ‚igÌ‚as (%s en cmd anstataŭigÌ‚as per bloka haketajÌ‚o) - - - Upgrade wallet to latest format - GÌ‚isdatigi monujon al plej lasta formato - - - Rescan the block chain for missing wallet transactions - Reskani la blokcÌ‚enon por mankantaj monujaj transakcioj - - - Use OpenSSL (https) for JSON-RPC connections - Uzi OpenSSL (https) por konektoj JSON-RPC - - - This help message - Tiu cÌ‚i helpmesagÌ‚o - - - Allow DNS lookups for -addnode, -seednode and -connect - Permesi DNS-elsercÌ‚ojn por -addnote, -seednote kaj -connect - - - Loading addresses... - ÅœarÄante adresojn... - - - Error loading wallet.dat: Wallet corrupted - Eraro dum sÌ‚argado de wallet.dat: monujo difektita - - - Error loading wallet.dat - Eraro dum sÌ‚argado de wallet.dat - - - Invalid -proxy address: '%s' - Nevalid adreso -proxy: '%s' - - - Unknown network specified in -onlynet: '%s' - Nekonata reto specifita en -onlynet: '%s' - - - Cannot resolve -bind address: '%s' - Ne eblas trovi la adreson -bind: '%s' - - - Cannot resolve -externalip address: '%s' - Ne eblas trovi la adreson -externalip: '%s' - - - Invalid amount for -paytxfee=<amount>: '%s' - Nevalida sumo por -paytxfee=<amount>: '%s' - - - Insufficient funds - Nesufiĉa mono - - - Loading block index... - ÅœarÄante blok-indekson... - - - Add a node to connect to and attempt to keep the connection open - Aldoni nodon por alkonekti kaj provi daŭrigi la malferman konekton - - - Loading wallet... - Åœargado de monujo... - - - Cannot downgrade wallet - Ne eblas malpromocii monujon - - - Cannot write default address - Ne eblas skribi defaŭltan adreson - - - Rescanning... - Reskanado... - - - Done loading - Åœargado finigÌ‚is - - - Error - Eraro - - - \ No newline at end of file diff --git a/src/qt/locale/bitcoin_es.ts b/src/qt/locale/bitcoin_es.ts deleted file mode 100644 index 062096134..000000000 --- a/src/qt/locale/bitcoin_es.ts +++ /dev/null @@ -1,3588 +0,0 @@ - - - AddressBookPage - - Right-click to edit address or label - Haz clic derecho para editar la dirección o etiqueta - - - Create a new address - Crear una nueva dirección - - - &New - &Nuevo - - - Copy the currently selected address to the system clipboard - Copiar la dirección seleccionada al portapapeles del sistema - - - &Copy - &Copiar - - - C&lose - &Cerrar - - - &Copy Address - &Copiar dirección - - - Delete the currently selected address from the list - Eliminar la dirección seleccionada de la lista - - - Export the data in the current tab to a file - Exportar los datos en la ficha actual a un archivo - - - &Export - &Exportar - - - &Delete - &Eliminar - - - Choose the address to send coins to - Elija la dirección para enviar monedas a - - - Choose the address to receive coins with - Elija la dirección para recibir monedas con - - - C&hoose - &Escoger - - - Sending addresses - Direcciones de envío - - - Receiving addresses - Direcciones de recepción - - - These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins. - Estas son tus direcciones Bitcoin para enviar los pagos. Comprueba siempre la cantidad y la dirección receptora antes de enviar las monedas. - - - These are your Bitcoin addresses for receiving payments. It is recommended to use a new receiving address for each transaction. - Estas son tus direcciones de Bitcoin para recibir los pagos. Se recomienda utilizar una nueva dirección de recepción para cada transacción. - - - Copy &Label - Copiar &Etiqueta - - - &Edit - &Editar - - - Export Address List - Exportar la lista de direcciones - - - Comma separated file (*.csv) - Archivos separados por coma (*.csv) - - - Exporting Failed - Fallo al exportar - - - - AddressTableModel - - Label - Etiqueta - - - Address - Dirección - - - (no label) - (sin etiqueta) - - - - AskPassphraseDialog - - Passphrase Dialog - Diálogo de contraseña - - - Enter passphrase - Introducir contraseña - - - New passphrase - Nueva contraseña - - - Repeat new passphrase - Repita la nueva contraseña - - - Encrypt wallet - Cifrar el monedero - - - This operation needs your wallet passphrase to unlock the wallet. - Esta operación requiere su contraseña para desbloquear el monedero. - - - Unlock wallet - Desbloquear monedero - - - This operation needs your wallet passphrase to decrypt the wallet. - Esta operación requiere su contraseña para descifrar el monedero. - - - Decrypt wallet - Descifrar el monedero - - - Change passphrase - Cambiar contraseña - - - Confirm wallet encryption - Confirmar cifrado del monedero - - - Warning: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR BITCOINS</b>! - Atencion: ¡Si cifra su monedero y pierde la contraseña perderá <b>TODOS SUS BITCOINS</b>!" - - - Are you sure you wish to encrypt your wallet? - ¿Estás seguro que deseas cifrar tu monedero ? - - - Bitcoin Core 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. - Bitcoin Core se cerrará ahora para completar el procedo de encriptación. Recuerda que encriptar tu cartera no te protegerá completamente de la pérdida de bitcoins por infección de malware en tu computadora. - - - 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. - IMPORTANTE: Cualquier copia de seguridad que haya realizado previamente de su archivo de monedero debe reemplazarse con el nuevo archivo de monedero cifrado. Por razones de seguridad, las copias de seguridad previas del archivo de monedero no cifradas serán inservibles en cuanto comience a usar el nuevo monedero cifrado. - - - Warning: The Caps Lock key is on! - Aviso: ¡La tecla de Mayúsculas está activada! - - - Wallet encrypted - Monedero cifrado - - - 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>. - Introduzca la nueva contraseña para el monedero.<br/>Utilice por favor una contraseña con <b>diez o más caracteres aleatorios</b> o con <b>ocho o más palabras</b>. - - - Enter the old passphrase and new passphrase to the wallet. - Introduce la antigua y la nueva contraseña de la cartera. - - - Wallet encryption failed - Ha fallado el cifrado del monedero - - - Wallet encryption failed due to an internal error. Your wallet was not encrypted. - Ha fallado el cifrado del monedero debido a un error interno. El monedero no ha sido cifrado. - - - The supplied passphrases do not match. - Las contraseñas no coinciden. - - - Wallet unlock failed - Ha fallado el desbloqueo del monedero - - - The passphrase entered for the wallet decryption was incorrect. - La contraseña introducida para descifrar el monedero es incorrecta. - - - Wallet decryption failed - Ha fallado el descifrado del monedero - - - Wallet passphrase was successfully changed. - Se ha cambiado correctamente la contraseña del monedero. - - - - BitcoinGUI - - Sign &message... - Firmar &mensaje... - - - Synchronizing with network... - Sincronizando con la red… - - - &Overview - &Vista general - - - Node - Nodo - - - Show general overview of wallet - Mostrar vista general del monedero - - - &Transactions - &Transacciones - - - Browse transaction history - Examinar el historial de transacciones - - - E&xit - &Salir - - - Quit application - Salir de la aplicación - - - About &Qt - Acerca de &Qt - - - Show information about Qt - Mostrar información acerca de Qt - - - &Options... - &Opciones... - - - &Encrypt Wallet... - &Cifrar monedero… - - - &Backup Wallet... - &Guardar copia del monedero... - - - &Change Passphrase... - &Cambiar la contraseña… - - - &Sending addresses... - Direcciones de &envío... - - - &Receiving addresses... - Direcciones de &recepción... - - - Open &URI... - Abrir &URI... - - - Bitcoin Core client - Cliente Bitcoin Core - - - Importing blocks from disk... - Importando bloques de disco... - - - Reindexing blocks on disk... - Reindexando bloques en disco... - - - Send coins to a Bitcoin address - Enviar bitcoins a una dirección Bitcoin - - - Backup wallet to another location - Copia de seguridad del monedero en otra ubicación - - - Change the passphrase used for wallet encryption - Cambiar la contraseña utilizada para el cifrado del monedero - - - &Debug window - &Ventana de depuración - - - Open debugging and diagnostic console - Abrir la consola de depuración y diagnóstico - - - &Verify message... - &Verificar mensaje... - - - Bitcoin - Bitcoin - - - Wallet - Monedero - - - &Send - &Enviar - - - &Receive - &Recibir - - - Show information about Bitcoin Core - Mostrar información acerca de Bitcoin Core - - - &Show / Hide - &Mostrar / Ocultar - - - Show or hide the main Window - Mostrar u ocultar la ventana principal - - - Encrypt the private keys that belong to your wallet - Cifrar las claves privadas de su monedero - - - Sign messages with your Bitcoin addresses to prove you own them - Firmar mensajes con sus direcciones Bitcoin para demostrar la propiedad - - - Verify messages to ensure they were signed with specified Bitcoin addresses - Verificar mensajes comprobando que están firmados con direcciones Bitcoin concretas - - - &File - &Archivo - - - &Settings - &Configuración - - - &Help - &Ayuda - - - Tabs toolbar - Barra de pestañas - - - Bitcoin Core - Bitcoin Core - - - Request payments (generates QR codes and bitcoin: URIs) - Solicitar pagos (generando códigos QR e identificadores URI "bitcoin:") - - - &About Bitcoin Core - &Acerca de Bitcoin Core - - - Modify configuration options for Bitcoin Core - Modificar las opciones de configuración de Bitcoin - - - Show the list of used sending addresses and labels - Mostrar la lista de direcciones de envío y etiquetas - - - Show the list of used receiving addresses and labels - Muestra la lista de direcciones de recepción y etiquetas - - - Open a bitcoin: URI or payment request - Abrir un identificador URI "bitcoin:" o una petición de pago - - - &Command-line options - &Opciones de consola de comandos - - - Show the Bitcoin Core help message to get a list with possible Bitcoin command-line options - Mostrar el mensaje de ayuda de Bitcoin Core con una lista de las posibles opciones de la consola de comandos de Bitcoin - - - %n active connection(s) to Bitcoin network - %n conexión activa hacia la red Bitcoin%n conexiones activas hacia la red Bitcoin - - - No block source available... - Ninguna fuente de bloques disponible ... - - - Processed %n block(s) of transaction history. - %n bloque procesado del historial de transacciones.%n bloques procesados del historial de transacciones. - - - %n hour(s) - %n hora%n horas - - - %n day(s) - %n día%n días - - - %n week(s) - %n semana%n semanas - - - %1 and %2 - %1 y %2 - - - %n year(s) - %n año%n años - - - %1 behind - %1 atrás - - - Last received block was generated %1 ago. - El último bloque recibido fue generado hace %1. - - - Transactions after this will not yet be visible. - Las transacciones posteriores aún no están visibles. - - - Error - Error - - - Warning - Aviso - - - Information - Información - - - Up to date - Actualizado - - - Catching up... - Actualizando... - - - Date: %1 - - Fecha: %1 - - - - Amount: %1 - - Amount: %1 - - - - Type: %1 - - Tipo: %1 - - - - Label: %1 - - Etiqueta: %1 - - - - Address: %1 - - Dirección: %1 - - - - Sent transaction - Transacción enviada - - - Incoming transaction - Transacción entrante - - - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - El monedero está <b>cifrado</b> y actualmente <b>desbloqueado</b> - - - Wallet is <b>encrypted</b> and currently <b>locked</b> - El monedero está <b>cifrado</b> y actualmente <b>bloqueado</b> - - - - ClientModel - - Network Alert - Alerta de red - - - - CoinControlDialog - - Coin Selection - Selección de la moneda - - - Quantity: - Cantidad: - - - Bytes: - Bytes: - - - Amount: - Cuantía: - - - Priority: - Prioridad: - - - Fee: - Tasa: - - - Dust: - Polvo: - - - After Fee: - Después de aplicar la comisión: - - - Change: - Cambio: - - - (un)select all - (des)marcar todos - - - Tree mode - Modo árbol - - - List mode - Modo lista - - - Amount - Cantidad - - - Received with label - Recibido con etiqueta - - - Received with address - Recibido con dirección - - - Date - Fecha - - - Confirmations - Confirmaciones - - - Confirmed - Confirmado - - - Priority - Prioridad - - - Copy address - Copiar dirección - - - Copy label - Copiar etiqueta - - - Copy amount - Copiar cuantía - - - Copy transaction ID - Copiar identificador de transacción - - - Lock unspent - Bloquear lo no gastado - - - Unlock unspent - Desbloquear lo no gastado - - - Copy quantity - Copiar cantidad - - - Copy fee - Copiar comisión - - - Copy after fee - Copiar después de aplicar comisión - - - Copy bytes - Copiar bytes - - - Copy priority - Copiar prioridad - - - Copy dust - Copiar polvo - - - Copy change - Copiar cambio - - - highest - lo más alto - - - higher - más alto - - - high - alto - - - medium-high - medio-alto - - - medium - medio - - - low-medium - bajo-medio - - - low - bajo - - - lower - más bajo - - - lowest - lo más bajo - - - (%1 locked) - (%1 bloqueado) - - - none - ninguna - - - This label turns red if the transaction size is greater than 1000 bytes. - Esta etiqueta se mostrará en rojo si el tamaño de la transacción es mayor de 1000 bytes. - - - This label turns red if the priority is smaller than "medium". - Esta etiqueta se mostrará en rojo si la prioridad es menor a "media" - - - This label turns red if any recipient receives an amount smaller than %1. - Esta etiqueta se vuelve roja si el cambio es menor que %1 - - - Can vary +/- %1 satoshi(s) per input. - Puede variar en +/- %1 satoshi(s) por entrada. - - - yes - si - - - no - no - - - This means a fee of at least %1 per kB is required. - Esto implica que se requiere una comisión de al menos %1 por kB - - - Can vary +/- 1 byte per input. - Puede variar en +/- 1 byte por entrada. - - - Transactions with higher priority are more likely to get included into a block. - Las transacciones con mayor prioridad tienen mayor probabilidad de ser incluidas en un bloque. - - - (no label) - (sin etiqueta) - - - change from %1 (%2) - Cambio desde %1 (%2) - - - (change) - (cambio) - - - - EditAddressDialog - - Edit Address - Editar Dirección - - - &Label - &Etiqueta - - - The label associated with this address list entry - La etiqueta asociada con esta entrada de la lista de direcciones - - - The address associated with this address list entry. This can only be modified for sending addresses. - La dirección asociada con esta entrada de la lista de direcciones. Solo puede ser modificada para direcciones de envío. - - - &Address - &Dirección - - - New receiving address - Nueva dirección de recepción - - - New sending address - Nueva dirección de envío - - - Edit receiving address - Editar dirección de recepción - - - Edit sending address - Editar dirección de envío - - - The entered address "%1" is already in the address book. - La dirección introducida "%1" ya está presente en la libreta de direcciones. - - - The entered address "%1" is not a valid Bitcoin address. - La dirección introducida "%1" no es una dirección Bitcoin válida. - - - Could not unlock wallet. - No se pudo desbloquear el monedero. - - - New key generation failed. - Ha fallado la generación de la nueva clave. - - - - FreespaceChecker - - A new data directory will be created. - Se creará un nuevo directorio de datos. - - - name - nombre - - - Directory already exists. Add %1 if you intend to create a new directory here. - El directorio ya existe. Añada %1 si pretende crear aquí un directorio nuevo. - - - Path already exists, and is not a directory. - La ruta ya existe y no es un directorio. - - - Cannot create data directory here. - No se puede crear un directorio de datos aquí. - - - - HelpMessageDialog - - Bitcoin Core - Bitcoin Core - - - version - versión - - - (%1-bit) - (%1-bit) - - - About Bitcoin Core - Acerca de Bitcoin Core - - - Command-line options - Opciones de la línea de órdenes - - - Usage: - Uso: - - - command-line options - opciones de la consola de comandos - - - - Intro - - Welcome - Bienvenido - - - Welcome to Bitcoin Core. - Bienvenido a Bitcoin Core - - - As this is the first time the program is launched, you can choose where Bitcoin Core will store its data. - Al ser la primera vez que se ejecuta el programa, puede elegir dónde almacenará sus datos Bitcoin Core. - - - Bitcoin Core will download and store a copy of the Bitcoin block chain. At least %1GB of data will be stored in this directory, and it will grow over time. The wallet will also be stored in this directory. - Bitcoin Core va a descargar y guardar una copia de la cadena de bloques de Bitcoin. Se almacenará al menos %1GB de datos en este directorio, que irá creciendo con el tiempo. El monedero se guardará también en este directorio. - - - Use the default data directory - Utilizar el directorio de datos predeterminado - - - Use a custom data directory: - Utilizar un directorio de datos personalizado: - - - Bitcoin Core - Bitcoin Core - - - Error: Specified data directory "%1" cannot be created. - Error: no ha podido crearse el directorio de datos especificado "%1". - - - Error - Error - - - %n GB of free space available - %n GB de espacio libre%n GB de espacio disponible - - - (of %n GB needed) - (de %n GB necesitados)(de %n GB requeridos) - - - - OpenURIDialog - - Open URI - Abrir URI... - - - Open payment request from URI or file - Abrir solicitud de pago a partir de un identificador URI o de un archivo - - - URI: - URI: - - - Select payment request file - Seleccionar archivo de sulicitud de pago - - - Select payment request file to open - Seleccionar el archivo de solicitud de pago para abrir - - - - OptionsDialog - - Options - Opciones - - - &Main - &Principal - - - Size of &database cache - Tamaño de cache de la &base de datos - - - MB - MB - - - Number of script &verification threads - Número de hilos de &verificación de scripts - - - Accept connections from outside - Aceptar conexiones desde el exterior - - - Allow incoming connections - Aceptar conexiones entrantes - - - IP address of the proxy (e.g. IPv4: 127.0.0.1 / IPv6: ::1) - Dirección IP del proxy (p. ej. IPv4: 127.0.0.1 / IPv6: ::1) - - - Minimize instead of exit the application when the window is closed. When this option is enabled, the application will be closed only after selecting Exit in the menu. - Minimizar en lugar de salir de la aplicación cuando la ventana está cerrada. Cuando se activa esta opción, la aplicación sólo se cerrará después de seleccionar Salir en el menú. - - - The user interface language can be set here. This setting will take effect after restarting Bitcoin Core. - El idioma de la interfaz de usuario puede establecerse aquí. Este ajuste se aplicará cuando se reinicie Bitcoin. - - - 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 |. - Identificadores URL de terceros (por ejemplo, un explorador de bloques) que aparecen en la pestaña de transacciones como elementos del menú contextual. El %s en la URL es reemplazado por el valor hash de la transacción. Se pueden separar URL múltiples por una barra vertical |. - - - Third party transaction URLs - Identificadores URL de transacciones de terceros - - - Active command-line options that override above options: - Opciones activas de consola de comandos que tienen preferencia sobre las opciones anteriores: - - - Reset all client options to default. - Restablecer todas las opciones predeterminadas del cliente. - - - &Reset Options - &Restablecer opciones - - - &Network - &Red - - - Automatically start Bitcoin Core after logging in to the system. - Iniciar automáticamente Bitcoin Core al iniciar el sistema. - - - &Start Bitcoin Core on system login - &Iniciar Bitcoin Core al inicio del sistema - - - (0 = auto, <0 = leave that many cores free) - (0 = automático, <0 = dejar libres ese número de núcleos) - - - W&allet - &Monedero - - - Expert - Experto - - - Enable coin &control features - Habilitar funcionalidad de &coin control - - - 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. - Si desactiva el gasto del cambio no confirmado, no se podrá usar el cambio de una transacción hasta que se alcance al menos una confirmación. Esto afecta también a cómo se calcula su saldo. - - - &Spend unconfirmed change - &Gastar cambio no confirmado - - - Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled. - Abrir automáticamente el puerto del cliente Bitcoin en el router. Esta opción solo funciona si el router admite UPnP y está activado. - - - Map port using &UPnP - Mapear el puerto mediante &UPnP - - - Connect to the Bitcoin network through a SOCKS5 proxy. - Conectarse a la red Bitcoin a través de un proxy SOCKS5. - - - &Connect through SOCKS5 proxy (default proxy): - &Conectarse a través de proxy SOCKS5 (proxy predeterminado): - - - Proxy &IP: - Dirección &IP del proxy: - - - &Port: - &Puerto: - - - Port of the proxy (e.g. 9050) - Puerto del servidor proxy (ej. 9050) - - - &Window - &Ventana - - - Show only a tray icon after minimizing the window. - Minimizar la ventana a la bandeja de iconos del sistema. - - - &Minimize to the tray instead of the taskbar - &Minimizar a la bandeja en vez de a la barra de tareas - - - M&inimize on close - M&inimizar al cerrar - - - &Display - &Interfaz - - - User Interface &language: - I&dioma de la interfaz de usuario - - - &Unit to show amounts in: - Mostrar las cantidades en la &unidad: - - - Choose the default subdivision unit to show in the interface and when sending coins. - Elegir la subdivisión predeterminada para mostrar cantidades en la interfaz y cuando se envían bitcoins. - - - Whether to show coin control features or not. - Mostrar o no funcionalidad de Coin Control - - - &OK - &Aceptar - - - &Cancel - &Cancelar - - - default - predeterminado - - - none - ninguna - - - Confirm options reset - Confirme el restablecimiento de las opciones - - - Client restart required to activate changes. - Se necesita reiniciar el cliente para activar los cambios. - - - Client will be shut down. Do you want to proceed? - El cliente se cerrará. ¿Desea continuar? - - - This change would require a client restart. - Este cambio exige el reinicio del cliente. - - - The supplied proxy address is invalid. - La dirección proxy indicada es inválida. - - - - OverviewPage - - Form - Formulario - - - The displayed information may be out of date. Your wallet automatically synchronizes with the Bitcoin network after a connection is established, but this process has not completed yet. - La información mostrada puede estar desactualizada. Su monedero se sincroniza automáticamente con la red Bitcoin después de que se haya establecido una conexión, pero este proceso aún no se ha completado. - - - Watch-only: - De observación: - - - Available: - Disponible: - - - Your current spendable balance - Su saldo disponible actual - - - Pending: - Pendiente: - - - Total of transactions that have yet to be confirmed, and do not yet count toward the spendable balance - Total de transacciones pendientes de confirmar y que aún no contribuye al saldo disponible - - - Immature: - No madurado: - - - Mined balance that has not yet matured - Saldo recién minado que aún no ha madurado. - - - Balances - Saldos - - - Total: - Total: - - - Your current total balance - Su saldo actual total - - - Your current balance in watch-only addresses - Su saldo actual en direcciones watch-only - - - Spendable: - Gastable: - - - Recent transactions - Transacciones recientes - - - Unconfirmed transactions to watch-only addresses - Transacciones sin confirmar en direcciones watch-only - - - Mined balance in watch-only addresses that has not yet matured - Saldo minado en direcciones watch-only que aún no ha madurado - - - Current total balance in watch-only addresses - Saldo total en las direcciones watch-only - - - - PaymentServer - - URI handling - Gestión de URI - - - Invalid payment address %1 - Dirección de pago no válida %1 - - - Payment request rejected - Solicitud de pago rechazada - - - Payment request network doesn't match client network. - La red de solicitud de pago no coincide con la red cliente - - - Payment request is not initialized. - La solicitud de pago no está inicializada - - - Requested payment amount of %1 is too small (considered dust). - La cantidad del pago solicitado (%1) es demasiado pequeña (considerada polvo). - - - Payment request error - Error en solicitud de pago - - - Cannot start bitcoin: click-to-pay handler - No se puede iniciar el gestor de identificadores "bitcoin:" de clic-para-pagar - - - Payment request fetch URL is invalid: %1 - La URL de obtención de la solicitud de pago es inválida: %1 - - - URI cannot be parsed! This can be caused by an invalid Bitcoin address or malformed URI parameters. - ¡No se puede leer el identificador URI! Esto puede deberse a una dirección Bitcoin inválida o a parámetros de la URI mal formados - - - Payment request file handling - Procesado del archivo de solicitud de pago - - - Payment request file cannot be read! This can be caused by an invalid payment request file. - ¡No puede leerse el archivo de solicitud de pago! Esto puede deberse a un archivo inválido de solicitud de pago. - - - Payment request expired. - Solicitud de pago caducada. - - - Unverified payment requests to custom payment scripts are unsupported. - No están soportadas las peticiones inseguras a scripts de pago personalizados - - - Invalid payment request. - Petición de pago no válida. - - - Refund from %1 - Devolución desde %1 - - - Payment request %1 is too large (%2 bytes, allowed %3 bytes). - La petición de pago %1 es demasiado grande (%2 bytes, permitidos %3 bytes). - - - Payment request DoS protection - Solicitud pago de protección DoS - - - Error communicating with %1: %2 - Error en la comunicación con %1: %2 - - - Payment request cannot be parsed! - ¡No puede leerse la solicitud de pago! - - - Bad response from server %1 - Respuesta errónea del servidor %1 - - - Payment acknowledged - Pago aceptado - - - Network request error - Error en petición de red - - - - PeerTableModel - - User Agent - User Agent - - - Node/Service - Nodo/Servicio - - - Ping Time - Ping - - - - QObject - - Amount - Cantidad - - - Enter a Bitcoin address (e.g. %1) - Introducir una dirección Bitcoin (p. ej. %1) - - - %1 d - %1 d - - - %1 h - %1 h - - - %1 m - %1 m - - - %1 s - %1 s - - - None - Ninguno - - - N/A - N/D - - - %1 ms - %1 ms - - - - QRImageWidget - - &Save Image... - Guardar Imagen... - - - &Copy Image - Copiar imagen - - - Save QR Code - Guardar código QR - - - PNG Image (*.png) - Imágenes PNG (*.png) - - - - RPCConsole - - Client name - Nombre del cliente - - - N/A - N/D - - - Client version - Versión del cliente - - - &Information - &Información - - - Debug window - Ventana de depuración - - - General - General - - - Using OpenSSL version - Utilizando la versión de OpenSSL - - - Using BerkeleyDB version - Utilizando la versión de BerkeleyDB - - - Startup time - Hora de inicio - - - Network - Red - - - Name - Nombre - - - Number of connections - Número de conexiones - - - Block chain - Cadena de bloques - - - Current number of blocks - Número actual de bloques - - - Open the Bitcoin Core debug log file from the current data directory. This can take a few seconds for large log files. - Abre el archivo de registro de depuración de Bitcoin desde el directorio de datos actual. Esto puede tardar unos segundos para ficheros de registro de gran tamaño. - - - Received - Recibido - - - Sent - Enviado - - - &Peers - &Pares - - - Select a peer to view detailed information. - Seleccionar un par para ver su información detallada. - - - Direction - Dirección - - - Version - Versión - - - User Agent - User Agent - - - Services - Servicios - - - Starting Height - Altura de comienzo - - - Sync Height - Altura de sincronización - - - Ban Score - Puntuación de bloqueo - - - Connection Time - Duración de la conexión - - - Last Send - Ultimo envío - - - Last Receive - Ultima recepción - - - Bytes Sent - Bytes enviados - - - Bytes Received - Bytes recibidos - - - Ping Time - Ping - - - Time Offset - Desplazamiento de tiempo - - - Last block time - Hora del último bloque - - - &Open - &Abrir - - - &Console - &Consola - - - &Network Traffic - &Tráfico de Red - - - &Clear - &Vaciar - - - Totals - Total: - - - In: - Entrante: - - - Out: - Saliente: - - - Build date - Fecha de compilación - - - Debug log file - Archivo de registro de depuración - - - Clear console - Borrar consola - - - Welcome to the Bitcoin Core RPC console. - Bienvenido a la consola RPC de Bitcoin Core. - - - Use up and down arrows to navigate history, and <b>Ctrl-L</b> to clear screen. - Use las flechas arriba y abajo para navegar por el historial y <b>Control+L</b> para vaciar la pantalla. - - - Type <b>help</b> for an overview of available commands. - Escriba <b>help</b> para ver un resumen de los comandos disponibles. - - - %1 B - %1 B - - - %1 KB - %1 KB - - - %1 MB - %1 MB - - - %1 GB - %1 GB - - - via %1 - via %1 - - - never - nunca - - - Inbound - Entrante - - - Outbound - Saliente - - - Unknown - Desconocido - - - Fetching... - Adquiriendo.... - - - - ReceiveCoinsDialog - - &Amount: - Cantidad - - - &Label: - &Etiqueta: - - - &Message: - Mensaje: - - - Reuse one of the previously used receiving addresses. Reusing addresses has security and privacy issues. Do not use this unless re-generating a payment request made before. - Reutilizar una de las direcciones previamente usadas para recibir. Reutilizar direcciones tiene problemas de seguridad y privacidad. No lo uses a menos que antes regeneres una solicitud de pago. - - - R&euse an existing receiving address (not recommended) - R&eutilizar una dirección existente para recibir (no recomendado) - - - An optional message to attach to the payment request, which will be displayed when the request is opened. Note: The message will not be sent with the payment over the Bitcoin network. - Un mensaje opcional para adjuntar a la solicitud de pago, que se muestra cuando se abre la solicitud. Nota: El mensaje no se enviará con el pago por la red Bitcoin. - - - An optional label to associate with the new receiving address. - Etiqueta opcional para asociar con la nueva dirección de recepción. - - - Use this form to request payments. All fields are <b>optional</b>. - Utilice este formulario para solicitar pagos. Todos los campos son <b>opcionales</b>. - - - An optional amount to request. Leave this empty or zero to not request a specific amount. - Para solicitar una cantidad opcional. Deje este vacío o cero para no solicitar una cantidad específica. - - - Clear all fields of the form. - Vaciar todos los campos del formulario. - - - Clear - Vaciar - - - Requested payments history - Historial de pagos solicitados - - - &Request payment - &Solicitar pago - - - Show the selected request (does the same as double clicking an entry) - Muestra la petición seleccionada (También doble clic) - - - Show - Mostrar - - - Remove the selected entries from the list - Borrar de la lista las direcciónes actualmente seleccionadas - - - Remove - Eliminar - - - Copy label - Copiar etiqueta - - - Copy message - Mensaje - - - Copy amount - Copiar cuantía - - - - ReceiveRequestDialog - - QR Code - Código QR - - - Copy &URI - Copiar &URI - - - Copy &Address - Copiar &Dirección - - - &Save Image... - Guardar Imagen... - - - Request payment to %1 - Solicitar pago a %1 - - - Payment information - Información de pago - - - URI - URI - - - Address - Dirección - - - Amount - Cantidad - - - Label - Etiqueta - - - Message - Mensaje - - - Resulting URI too long, try to reduce the text for label / message. - URI resultante demasiado larga. Intente reducir el texto de la etiqueta / mensaje. - - - Error encoding URI into QR Code. - Error al codificar la URI en el código QR. - - - - RecentRequestsTableModel - - Date - Fecha - - - Label - Etiqueta - - - Message - Mensaje - - - Amount - Cantidad - - - (no label) - (sin etiqueta) - - - (no message) - (Ningun mensaje) - - - (no amount) - (sin cantidad) - - - - SendCoinsDialog - - Send Coins - Enviar bitcoins - - - Coin Control Features - Características de Coin Control - - - Inputs... - Entradas... - - - automatically selected - Seleccionado automáticamente - - - Insufficient funds! - Fondos insuficientes! - - - Quantity: - Cantidad: - - - Bytes: - Bytes: - - - Amount: - Cuantía: - - - Priority: - Prioridad: - - - Fee: - Tasa: - - - After Fee: - Después de tasas: - - - Change: - Cambio: - - - If this is activated, but the change address is empty or invalid, change will be sent to a newly generated address. - Si se marca esta opción pero la dirección de cambio está vacía o es inválida, el cambio se enviará a una nueva dirección recién generada. - - - Custom change address - Dirección propia - - - Transaction Fee: - Comisión de Transacción: - - - Choose... - Elija... - - - collapse fee-settings - Colapsar ajustes de cuota - - - per kilobyte - por kilobyte - - - 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. - 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 - - - Hide - Ocultar - - - total at least - total por lo menos - - - 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. - 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. - - - (read the tooltip) - (leer la sugerencia) - - - Recommended: - Recomendado: - - - Custom: - Personalizado: - - - (Smart fee not initialized yet. This usually takes a few blocks...) - (Tarifa inteligente no inicializado aún. Esto generalmente lleva a pocos bloques...) - - - Confirmation time: - Tiempo de confirmación: - - - normal - normal - - - fast - rápido - - - Send as zero-fee transaction if possible - Enviar transacción, si es posible, sin comisión - - - (confirmation may take longer) - (confirmación puede tardar más tiempo) - - - Send to multiple recipients at once - Enviar a múltiples destinatarios de una vez - - - Add &Recipient - Añadir &destinatario - - - Clear all fields of the form. - Vaciar todos los campos del formulario - - - Dust: - Polvo: - - - Clear &All - Vaciar &todo - - - Balance: - Saldo: - - - Confirm the send action - Confirmar el envío - - - S&end - &Enviar - - - Confirm send coins - Confirmar el envío de bitcoins - - - %1 to %2 - %1 a %2 - - - Copy quantity - Copiar cantidad - - - Copy amount - Copiar cuantía - - - Copy fee - Copiar donación - - - Copy after fee - Copiar después de aplicar donación - - - Copy bytes - Copiar bytes - - - Copy priority - Copiar prioridad - - - Copy change - Copiar Cambio - - - or - o - - - The amount to pay must be larger than 0. - La cantidad por pagar tiene que ser mayor de 0. - - - The amount exceeds your balance. - La cantidad sobrepasa su saldo. - - - The total exceeds your balance when the %1 transaction fee is included. - El total sobrepasa su saldo cuando se incluye la tasa de envío de %1 - - - Transaction creation failed! - ¡Ha fallado la creación de la transacción! - - - 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. - ¡La transacción fue rechazada! Esto puede haber ocurrido si alguno de los bitcoins de su monedero ya estaba gastado o si ha usado una copia de wallet.dat y los bitcoins estaban gastados en la copia pero no se habían marcado como gastados aqui. - - - Payment request expired. - Solicitud de pago caducada. - - - Estimated to begin confirmation within %n block(s). - Estimado para empezar la confirmación dentro de %n bloque.Estimado para empezar la confirmación dentro de %n bloques. - - - Pay only the minimum fee of %1 - Paga sólo la cuota mínima de %1 - - - Total Amount %1<span style='font-size:10pt;font-weight:normal;'><br />(=%2)</span> - Monto Total %1<span style='font-size:10pt;font-weight:normal;'><br />(=%2)</span> - - - The recipient address is not valid. Please recheck. - La dirección del destinatario no es válida. Por favor, compruébela de nuevo. - - - Duplicate address found: addresses should only be used once each. - Se ha encontrado una dirección duplicada. Solo se puede enviar a cada dirección una vez por operación de envío. - - - Warning: Invalid Bitcoin address - Alerta: Dirección de Bitcoin inválida - - - (no label) - (sin etiqueta) - - - Warning: Unknown change address - Alerta: Dirección de Bitcoin inválida - - - Copy dust - Copiar polvo - - - Are you sure you want to send? - ¿Está seguro que desea enviar? - - - added as transaction fee - añadido como comisión de transacción - - - - SendCoinsEntry - - A&mount: - Ca&ntidad: - - - Pay &To: - &Pagar a: - - - Enter a label for this address to add it to your address book - Etiquete esta dirección para añadirla a la libreta - - - &Label: - &Etiqueta: - - - Choose previously used address - Escoger direcciones previamente usadas - - - This is a normal payment. - Esto es un pago ordinario. - - - The Bitcoin address to send the payment to - Dirección Bitcoin a la que enviar el pago - - - Alt+A - Alt+A - - - Paste address from clipboard - Pegar dirección desde portapapeles - - - Alt+P - Alt+P - - - Remove this entry - Eliminar esta transacción - - - The fee will be deducted from the amount being sent. The recipient will receive less bitcoins than you enter in the amount field. If multiple recipients are selected, the fee is split equally. - La cuota será deducida de la cantidad que sea mandada. El destinatario recibirá menos bitcoins de los que entres en el - - - S&ubtract fee from amount - Restar comisiones a la cantidad - - - Message: - Mensaje: - - - This is an unauthenticated payment request. - Esta es una petición de pago no autentificada. - - - This is an authenticated payment request. - Esta es una petición de pago autentificada. - - - Enter a label for this address to add it to the list of used addresses - Introduce una etiqueta para esta dirección para añadirla a la lista de direcciones utilizadas - - - A message that was attached to the bitcoin: URI which will be stored with the transaction for your reference. Note: This message will not be sent over the Bitcoin network. - Un mensaje que se adjuntó a la bitcoin: URL que será almacenada con la transacción para su referencia. Nota: Este mensaje no se envía a través de la red Bitcoin. - - - Pay To: - Paga a: - - - Memo: - Memo: - - - - ShutdownWindow - - Bitcoin Core is shutting down... - Bitcoin Core se está cerrando... - - - Do not shut down the computer until this window disappears. - No apague el equipo hasta que desaparezca esta ventana. - - - - SignVerifyMessageDialog - - Signatures - Sign / Verify a Message - Firmas - Firmar / verificar un mensaje - - - &Sign Message - &Firmar mensaje - - - You can sign messages/agreements with your addresses to prove you can receive bitcoins sent to them. Be careful not to sign anything vague or random, as phishing attacks may try to trick you into signing your identity over to them. Only sign fully-detailed statements you agree to. - Puede firmar los mensajes con sus direcciones para demostrar que las posee. Tenga cuidado de no firmar cualquier cosa de manera vaga o aleatoria, pues los ataques de phishing pueden tratar de engañarle firmando su identidad a través de ellos. Sólo firme declaraciones totalmente detalladas con las que usted esté de acuerdo. - - - The Bitcoin address to sign the message with - Dirección Bitcoin con la que firmar el mensaje - - - Choose previously used address - Escoger dirección previamente usada - - - Alt+A - Alt+A - - - Paste address from clipboard - Pegar dirección desde portapapeles - - - Alt+P - Alt+P - - - Enter the message you want to sign here - Introduzca el mensaje que desea firmar aquí - - - Signature - Firma - - - Copy the current signature to the system clipboard - Copiar la firma actual al portapapeles del sistema - - - Sign the message to prove you own this Bitcoin address - Firmar el mensaje para demostrar que se posee esta dirección Bitcoin - - - Sign &Message - Firmar &mensaje - - - Reset all sign message fields - Vaciar todos los campos de la firma de mensaje - - - Clear &All - Vaciar &todo - - - &Verify Message - &Verificar mensaje - - - Enter the receiver's address, message (ensure you copy line breaks, spaces, tabs, etc. exactly) and signature below to verify the message. Be careful not to read more into the signature than what is in the signed message itself, to avoid being tricked by a man-in-the-middle attack. Note that this only proves the signing party receives with the address, it cannot prove sendership of any transaction! - Introduzca la dirección para la firma, el mensaje (asegurándose de copiar tal cual los saltos de línea, espacios, tabulaciones, etc.) y la firma a continuación para verificar el mensaje. Tenga cuidado de no asumir más información de lo que dice el propio mensaje firmado para evitar fraudes basados en ataques de tipo man-in-the-middle. - - - The Bitcoin address the message was signed with - La dirección Bitcoin con la que se firmó el mensaje - - - Verify the message to ensure it was signed with the specified Bitcoin address - Verificar el mensaje para comprobar que fue firmado con la dirección Bitcoin indicada - - - Verify &Message - Verificar &mensaje - - - Reset all verify message fields - Vaciar todos los campos de la verificación de mensaje - - - Click "Sign Message" to generate signature - Haga clic en "Firmar mensaje" para generar la firma - - - The entered address is invalid. - La dirección introducida es inválida. - - - Please check the address and try again. - Verifique la dirección e inténtelo de nuevo. - - - The entered address does not refer to a key. - La dirección introducida no corresponde a una clave. - - - Wallet unlock was cancelled. - Se ha cancelado el desbloqueo del monedero. - - - Private key for the entered address is not available. - No se dispone de la clave privada para la dirección introducida. - - - Message signing failed. - Ha fallado la firma del mensaje. - - - Message signed. - Mensaje firmado. - - - The signature could not be decoded. - No se puede decodificar la firma. - - - Please check the signature and try again. - Compruebe la firma e inténtelo de nuevo. - - - The signature did not match the message digest. - La firma no coincide con el resumen del mensaje. - - - Message verification failed. - La verificación del mensaje ha fallado. - - - Message verified. - Mensaje verificado. - - - - SplashScreen - - Bitcoin Core - Bitcoin Core - - - The Bitcoin Core developers - Los desarrolladores de Bitcoin Core - - - [testnet] - [testnet] - - - - TrafficGraphWidget - - KB/s - KB/s - - - - TransactionDesc - - Open until %1 - Abierto hasta %1 - - - conflicted - en conflicto - - - %1/offline - %1/fuera de línea - - - %1/unconfirmed - %1/no confirmado - - - %1 confirmations - %1 confirmaciones - - - Status - Estado - - - , broadcast through %n node(s) - , transmitir a través de %n nodo, transmitir a través de %n nodos - - - Date - Fecha - - - Source - Fuente - - - Generated - Generado - - - From - De - - - To - Para - - - own address - dirección propia - - - watch-only - de observación - - - label - etiqueta - - - Credit - Crédito - - - matures in %n more block(s) - disponible en %n bloque másdisponible en %n bloques más - - - not accepted - no aceptada - - - Debit - Débito - - - Total debit - Débito total - - - Total credit - Crédito total - - - Transaction fee - Comisión de transacción - - - Net amount - Cantidad neta - - - Message - Mensaje - - - Comment - Comentario - - - Transaction ID - Identificador de transacción - - - Merchant - Vendedor - - - Generated coins must mature %1 blocks before they can be spent. When you generated this block, it was broadcast to the network to be added to the block chain. If it fails to get into the chain, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - Los bitcoins generados deben madurar %1 bloques antes de que puedan gastarse. Cuando generó este bloque, se transmitió a la red para que se añadiera a la cadena de bloques. Si no consigue entrar en la cadena, su estado cambiará a "no aceptado" y ya no se podrá gastar. Esto puede ocurrir ocasionalmente si otro nodo genera un bloque a pocos segundos del suyo. - - - Debug information - Información de depuración - - - Transaction - Transacción - - - Inputs - entradas - - - Amount - Cantidad - - - true - verdadero - - - false - falso - - - , has not been successfully broadcast yet - , todavía no se ha sido difundido satisfactoriamente - - - Open for %n more block(s) - Abrir para %n bloque másAbrir para %n bloques más - - - unknown - desconocido - - - - TransactionDescDialog - - Transaction details - Detalles de transacción - - - This pane shows a detailed description of the transaction - Esta ventana muestra información detallada sobre la transacción - - - - TransactionTableModel - - Date - Fecha - - - Type - Tipo - - - Immature (%1 confirmations, will be available after %2) - No vencidos (%1 confirmaciones. Estarán disponibles al cabo de %2) - - - Open for %n more block(s) - Abrir para %n bloque másAbrir para %n bloques más - - - Open until %1 - Abierto hasta %1 - - - Confirmed (%1 confirmations) - Confirmado (%1 confirmaciones) - - - This block was not received by any other nodes and will probably not be accepted! - Este bloque no ha sido recibido por otros nodos y probablemente no sea aceptado! - - - Generated but not accepted - Generado pero no aceptado - - - Offline - Sin conexión - - - Label - Etiqueta - - - Unconfirmed - Sin confirmar - - - Confirming (%1 of %2 recommended confirmations) - Confirmando (%1 de %2 confirmaciones recomendadas) - - - Conflicted - En conflicto - - - Received with - Recibido con - - - Received from - Recibidos de - - - Sent to - Enviado a - - - Payment to yourself - Pago propio - - - Mined - Minado - - - watch-only - de observación - - - (n/a) - (nd) - - - Transaction status. Hover over this field to show number of confirmations. - Estado de transacción. Pasa el ratón sobre este campo para ver el número de confirmaciones. - - - Date and time that the transaction was received. - Fecha y hora en que se recibió la transacción. - - - Type of transaction. - Tipo de transacción. - - - Whether or not a watch-only address is involved in this transaction. - Sea o no una dirección sólo está involucrada en esta transacción. - - - User-defined intent/purpose of the transaction. - intento/propósito de la transacción definido por el usuario. - - - Amount removed from or added to balance. - Cantidad retirada o añadida al saldo. - - - - TransactionView - - All - Todo - - - Today - Hoy - - - This week - Esta semana - - - This month - Este mes - - - Last month - Mes pasado - - - This year - Este año - - - Range... - Rango... - - - Received with - Recibido con - - - Sent to - Enviado a - - - To yourself - A usted mismo - - - Mined - Minado - - - Other - Otra - - - Enter address or label to search - Introduzca una dirección o etiqueta que buscar - - - Min amount - Cantidad mínima - - - Copy address - Copiar dirección - - - Copy label - Copiar etiqueta - - - Copy amount - Copiar cuantía - - - Copy transaction ID - Copiar identificador de transacción - - - Edit label - Editar etiqueta - - - Show transaction details - Mostrar detalles de la transacción - - - Export Transaction History - Exportar historial de transacciones - - - Watch-only - De observación - - - Exporting Failed - Error exportando - - - There was an error trying to save the transaction history to %1. - Ha habido un error al intentar guardar la transacción con %1. - - - Exporting Successful - Exportación finalizada - - - The transaction history was successfully saved to %1. - La transacción ha sido guardada en %1. - - - Comma separated file (*.csv) - Archivos de columnas separadas por coma (*.csv) - - - Confirmed - Confirmado - - - Date - Fecha - - - Type - Tipo - - - Label - Etiqueta - - - Address - Dirección - - - ID - ID - - - Range: - Rango: - - - to - para - - - - UnitDisplayStatusBarControl - - Unit to show amounts in. Click to select another unit. - Unidad en la que se muestran las cantidades. Haga clic para seleccionar otra unidad. - - - - WalletFrame - - No wallet has been loaded. - No se ha cargado ningún monedero - - - - WalletModel - - Send Coins - Enviar bitcoins - - - - WalletView - - &Export - &Exportar - - - Export the data in the current tab to a file - Exportar a un archivo los datos de esta pestaña - - - Backup Wallet - Copia de seguridad del monedero - - - Wallet Data (*.dat) - Datos de monedero (*.dat) - - - Backup Failed - Ha fallado el respaldo - - - There was an error trying to save the wallet data to %1. - Ha habido un error al intentar guardar los datos del monedero en %1. - - - The wallet data was successfully saved to %1. - Los datos del monedero se han guardado con éxito en %1. - - - Backup Successful - Se ha completado la copia de seguridad del monedero - - - - bitcoin-core - - Options: - Opciones: - - - - Specify data directory - Especificar directorio para los datos - - - Connect to a node to retrieve peer addresses, and disconnect - Conectar a un nodo para obtener direcciones de pares y desconectar - - - Specify your own public address - Especifique su propia dirección pública - - - Accept command line and JSON-RPC commands - Aceptar comandos consola y JSON-RPC - - - - Run in the background as a daemon and accept commands - Ejecutar en segundo plano como daemon y aceptar comandos - - - - Use the test network - Usar la red de pruebas - - - - Accept connections from outside (default: 1 if no -proxy or -connect) - Aceptar conexiones desde el exterior (predeterminado: 1 si no -proxy o -connect) - - - Bind to given address and always listen on it. Use [host]:port notation for IPv6 - Vincular a la dirección dada y escuchar siempre en ella. Utilice la notación [host]:port para IPv6 - - - Delete all wallet transactions and only recover those parts of the blockchain through -rescan on startup - Borrar todas las transacciones del monedero y sólo recuperar aquellas partes de la cadena de bloques por medio de -rescan on startup. - - - Distributed under the MIT software license, see the accompanying file COPYING or <http://www.opensource.org/licenses/mit-license.php>. - Distribuido bajo la licencia de software MIT, vea la copia del archivo adjunto o <http://www.opensource.org/licenses/mit-license.php>. - - - Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) - Ejecutar comando cuando una transacción del monedero cambia (%s en cmd se remplazará por TxID) - - - Maximum total fees to use in a single wallet transaction; setting this too low may abort large transactions (default: %s) - Maximo Comisión totales para usar en una sola transacción billetera; establecer esta demasiado bajo puede abortar transacciones grandes (por defecto: %s) - - - Reduce storage requirements by pruning (deleting) old blocks. This mode disables wallet support and is incompatible with -txindex. Warning: Reverting this setting requires re-downloading the entire blockchain. (default: 0 = disable pruning blocks, >%u = target size in MiB to use for block files) - Reducir los requerimientos de almacenamiento mediante la poda (borrado) bloquea viejos. Este modo desactiva el apoyo cartera y es incompatible con -txindex. Advertencia: Revertir esta configuración requiere volver a descargar toda la blockchain. (por defecto: 0 = desactivar bloques de poda, >%u = tamaño de destino en MiB de usar para los archivos de bloques) - - - Set the number of script verification threads (%u to %d, 0 = auto, <0 = leave that many cores free, default: %d) - Establecer el número de hilos (threads) de verificación de scripts (entre %u y %d, 0 = automático, <0 = dejar libres ese número de núcleos; predeterminado: %d) - - - This is a pre-release test build - use at your own risk - do not use for mining or merchant applications - Esta es una versión de pre-prueba - utilícela bajo su propio riesgo. No la utilice para usos comerciales o de minería. - - - Unable to bind to %s on this computer. Bitcoin Core is probably already running. - No se ha podido acceder a %s en esta máquina. Probablemente ya se está ejecutando Bitcoin Core. - - - WARNING: abnormally high number of blocks generated, %d blocks received in the last %d hours (%d expected) - ADVERTENCIA: anormalmente alto número de bloques generado, %d bloques recibidos en las últimas horas %d (%d espera) - - - WARNING: check your network connection, %d blocks received in the last %d hours (%d expected) - ADVERTENCIA: comprueba tu conexión de red, %d bloques recibidos en las últimas %d horas (%d esperados) - - - Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. - Aviso: ¡-paytxfee tiene un valor muy alto! Esta es la comisión que pagará si envía una transacción. - - - Warning: The network does not appear to fully agree! Some miners appear to be experiencing issues. - Atención: ¡Parece que la red no está totalmente de acuerdo! Algunos mineros están presentando inconvenientes. - - - Warning: We do not appear to fully agree with our peers! You may need to upgrade, or other nodes may need to upgrade. - Atención: ¡Parece que no estamos completamente de acuerdo con nuestros pares! Podría necesitar una actualización, u otros nodos podrían necesitarla. - - - Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. - Aviso: ¡Error al leer wallet.dat! Todas las claves se han leído correctamente, pero podrían faltar o ser incorrectos los datos de transacciones o las entradas de la libreta de direcciones. - - - 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. - Aviso: ¡Recuperados datos de wallet.dat corrupto! El wallet.dat original se ha guardado como wallet.{timestamp}.bak en %s; si hubiera errores en su saldo o transacciones, deberá restaurar una copia de seguridad. - - - Whitelist peers connecting from the given netmask or IP address. Can be specified multiple times. - Poner en lista blanca a los equipos que se conecten desde la máscara de subred o dirección IP especificada. Se puede especificar múltiples veces. - - - (default: 1) - (predeterminado: 1) - - - <category> can be: - <category> puede ser: - - - Attempt to recover private keys from a corrupt wallet.dat - Intento de recuperar claves privadas de un wallet.dat corrupto - - - Block creation options: - Opciones de creación de bloques: - - - Connect only to the specified node(s) - Conectar sólo a los nodos (o nodo) especificados - - - Connection options: - Opciones de conexión: - - - Corrupted block database detected - Corrupción de base de datos de bloques detectada. - - - Debugging/Testing options: - Opciones de depuración/pruebas: - - - Do not load the wallet and disable wallet RPC calls - No cargar el monedero y desactivar las llamadas RPC del monedero - - - Do you want to rebuild the block database now? - ¿Quieres reconstruir la base de datos de bloques ahora? - - - Error initializing block database - Error al inicializar la base de datos de bloques - - - Error initializing wallet database environment %s! - Error al inicializar el entorno de la base de datos del monedero %s - - - Error loading block database - Error cargando base de datos de bloques - - - Error opening block database - Error al abrir base de datos de bloques. - - - Error: Disk space is low! - Error: ¡Espacio en disco bajo! - - - Failed to listen on any port. Use -listen=0 if you want this. - Ha fallado la escucha en todos los puertos. Use -listen=0 si desea esto. - - - If <category> is not supplied, output all debugging information. - Si no se proporciona <category>, mostrar toda la depuración - - - Importing... - Importando... - - - Incorrect or no genesis block found. Wrong datadir for network? - Incorrecto o bloque de génesis no encontrado. Datadir equivocada para la red? - - - Invalid -onion address: '%s' - Dirección -onion inválida: '%s' - - - Not enough file descriptors available. - No hay suficientes descriptores de archivo disponibles. - - - Only connect to nodes in network <net> (ipv4, ipv6 or onion) - Sólo conectar a nodos en redes <net> (ipv4, ipv6 o onion) - - - Prune cannot be configured with a negative value. - Pode no se puede configurar con un valor negativo. - - - Prune mode is incompatible with -txindex. - El modo recorte es incompatible con -txindex. - - - Set database cache size in megabytes (%d to %d, default: %d) - Asignar tamaño de cache en megabytes (entre %d y %d; predeterminado: %d) - - - Set maximum block size in bytes (default: %d) - Establecer tamaño máximo de bloque en bytes (predeterminado: %d) - - - Specify wallet file (within data directory) - Especificar archivo de monedero (dentro del directorio de datos) - - - Use UPnP to map the listening port (default: %u) - Usar UPnP para asignar el puerto de escucha (predeterminado:: %u) - - - Verifying blocks... - Verificando bloques... - - - Verifying wallet... - Verificando monedero... - - - Wallet %s resides outside data directory %s - El monedero %s se encuentra fuera del directorio de datos %s - - - Wallet options: - Opciones de monedero: - - - Warning: This version is obsolete; upgrade required! - Peligro: Esta versión es obsoleta; actualización requerida! - - - You need to rebuild the database using -reindex to change -txindex - Usted necesita reconstruir la base de datos utilizando -reindex para cambiar -txindex - - - Imports blocks from external blk000??.dat file - Importa los bloques desde un archivo blk000??.dat externo - - - 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 - Permitir conexiones JSON-RPC de origen especificado. Válido para son una sola IP (por ejemplo 1.2.3.4), una red/máscara de red (por ejemplo 1.2.3.4/255.255.255.0) o una red/CIDR (e.g. 1.2.3.4/24). Esta opción se puede especificar varias veces - - - An error occurred while setting up the RPC address %s port %u for listening: %s - Ocurrió un error al configurar la dirección de RPC %s puerto %u para escuchar en: %s - - - Bind to given address and whitelist peers connecting to it. Use [host]:port notation for IPv6 - Ligar a las direcciones especificadas y poner en lista blanca a los equipos conectados a ellas. Usar la notación para IPv6 [host]:puerto. - - - Bind to given address to listen for JSON-RPC connections. Use [host]:port notation for IPv6. This option can be specified multiple times (default: bind to all interfaces) - Ligar a las direcciones especificadas para escuchar por conexiones JSON-RPC. Usar la notación para IPv6 [host]:puerto. Esta opción se puede especificar múltiples veces (por defecto: ligar a todas las interfaces) - - - Cannot obtain a lock on data directory %s. Bitcoin Core is probably already running. - No se ha podido bloquear el directorio de datos %s. Probablemente ya se está ejecutando Bitcoin Core. - - - Create new files with system default permissions, instead of umask 077 (only effective with disabled wallet functionality) - Crear nuevos archivos con permisos por defecto del sistema, en lugar de umask 077 (sólo efectivo con la funcionalidad de monedero desactivada) - - - Discover own IP addresses (default: 1 when listening and no -externalip or -proxy) - Descubra direcciones IP propias (por defecto: 1 cuando se escucha y nadie -externalip o -proxy) - - - Error: Listening for incoming connections failed (listen returned error %s) - Error: la escucha para conexiones entrantes falló (la escucha regresó el error %s) - - - Error: Unsupported argument -socks found. Setting SOCKS version isn't possible anymore, only SOCKS5 proxies are supported. - Error: Unsupported argumento -socks encontrados. SOCKS versión ajuste ya no es posible, sólo SOCKS5 proxies son compatibles. - - - Execute command when a relevant alert is received or we see a really long fork (%s in cmd is replaced by message) - Ejecutar un comando cuando se reciba una alerta importante o cuando veamos un fork demasiado largo (%s en cmd se reemplazará por el mensaje) - - - Fees (in BTC/Kb) smaller than this are considered zero fee for relaying (default: %s) - Tarifas (en BTC/Kb) más pequeños que esto se consideran cero cuota de reinstalación (por defecto: %s) - - - If paytxfee is not set, include enough fee so transactions begin confirmation on average within n blocks (default: %u) - 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) - - - Maximum size of data in data carrier transactions we relay and mine (default: %u) - El tamaño máximo de los datos en las operaciones de transporte de datos que transmitimos y el mio (default: %u) - - - Prune configured below the minimum of %d MB. Please use a higher number. - Pode configurado por debajo del mínimo de %d MB. Por favor, use un número más alto. - - - Query for peer addresses via DNS lookup, if low on addresses (default: 1 unless -connect) - Consulta de direcciones pares mediante búsqueda de DNS, si bajo en direcciones (por defecto: 1 a menos que - conectar) - - - Randomize credentials for every proxy connection. This enables Tor stream isolation (default: %u) - Aleatorizar las credenciales para cada conexión proxy. Esto habilita la Tor stream isolation (por defecto: %u) - - - Set maximum size of high-priority/low-fee transactions in bytes (default: %d) - Establecer tamaño máximo de las transacciones de alta prioridad/baja comisión en bytes (predeterminado: %d) - - - Set the number of threads for coin generation if enabled (-1 = all cores, default: %d) - Ajuste el número de hilos para la generación de moneda si está habilitado (-1 = all cores, default: %d) - - - The transaction amount is too small to send after the fee has been deducted - Monto de transacción muy pequeña luego de la deducción por comisión - - - 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. - 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. - - - 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 - - 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 - - - - Warning: -maxtxfee is set very high! Fees this large could be paid on a single transaction. - Advertencia: ¡-maxtxfee se establece muy alta! Esta gran tarifa podría ser pagada en una sola transacción . - - - Warning: Please check that your computer's date and time are correct! If your clock is wrong Bitcoin Core will not work properly. - Aviso: ¡Comprueba la fecha y hora de tu ordenador y verifica si es correcta! Si no es correcta Bitcoin Core no funcionará adecuadamente. - - - 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 - 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. - - - You need to rebuild the database using -reindex to go back to unpruned mode. This will redownload the entire blockchain - Necesitas reconstruir la base de datos utilizando -reindex para volver al modo sin recorte. Esto volverá a descargar toda la cadena de bloques - - - (default: %u) - (por defecto: %u) - - - Accept public REST requests (default: %u) - Aceptar solicitudes públicas en FERIADOS (por defecto: %u) - - - Activating best chain... - Activando la mejor cadena... - - - Can't run with a wallet in prune mode. - No se puede ejecutar con un monedero en modo recorte. - - - Cannot resolve -whitebind address: '%s' - No se puede resolver -whitebind address: '%s' - - - Choose data directory on startup (default: 0) - Elegir directorio de datos al iniciar (predeterminado: 0) - - - Connect through SOCKS5 proxy - Conectar usando SOCKS5 proxy - - - Copyright (C) 2009-%i The Bitcoin Core Developers - Copyright (C) 2009-%i The Bitcoin Core Developers - - - Could not parse -rpcbind value %s as network address - No se pudo analizar -rpcbind valor%s como dirección de red - - - Error loading wallet.dat: Wallet requires newer version of Bitcoin Core - Error al cargar wallet.dat: El monedero requiere una versión más reciente de Bitcoin Core - - - Error reading from database, shutting down. - Error al leer la base de datos, cerrando. - - - Error: A fatal internal error occurred, see debug.log for details - Un error interno fatal ocurrió, ver debug.log para detalles - - - Error: Unsupported argument -tor found, use -onion. - Error: Argumento encontrado -tor no soportado, utilice -onion - - - Fee (in BTC/kB) to add to transactions you send (default: %s) - Cuota (in BTC/kB) para añadir a las transacciones que envíes (por defecto: %s) - - - Information - Información - - - Initialization sanity check failed. Bitcoin Core is shutting down. - La inicialización de la verificación de validez falló. Se está apagando Bitcoin Core. - - - Invalid amount for -maxtxfee=<amount>: '%s' - Monto inválido para -maxtxfee=<amount>: '%s' - - - Invalid amount for -minrelaytxfee=<amount>: '%s' - Cantidad inválida para -minrelaytxfee=<amount>: '%s' - - - Invalid amount for -mintxfee=<amount>: '%s' - Cantidad inválida para -mintxfee=<amount>: '%s' - - - Invalid amount for -paytxfee=<amount>: '%s' (must be at least %s) - Cantidad inválida para -paytxfee=<amount>: '%s' (debe ser por lo menos %s) - - - Invalid netmask specified in -whitelist: '%s' - Máscara de red inválida especificada en -whitelist: '%s' - - - Keep at most <n> unconnectable transactions in memory (default: %u) - Mantener como máximo <n> transacciones no conectables en memoria (por defecto: %u) - - - Need to specify a port with -whitebind: '%s' - Necesita especificar un puerto con -whitebind: '%s' - - - Node relay options: - Opciones de nodos de retransmisión: - - - Pruning blockstore... - Poda blockstore ... - - - RPC SSL options: (see the Bitcoin Wiki for SSL setup instructions) - Opciones SSL de RPC: (véase la wiki de Bitcoin para las instrucciones de instalación de SSL) - - - RPC server options: - Opciones de servidor RPC: - - - RPC support for HTTP persistent connections (default: %d) - Soporte RPC para conexiones HTTP persistentes (por defecto: %d) - - - Rebuild block chain index from current blk000??.dat files on startup - Reconstruir el índice de la cadena de bloques en el arranque desde los actuales ficheros blk000??.dat - - - Receive and display P2P network alerts (default: %u) - Recibir y mostrar alertas de red P2P (default: %u) - - - Send trace/debug info to console instead of debug.log file - Enviar información de trazas/depuración a la consola en lugar de al archivo debug.log - - - Send transactions as zero-fee transactions if possible (default: %u) - Mandar transacciones como comisión-cero si es posible (por defecto: %u) - - - Set SSL root certificates for payment request (default: -system-) - Establecer los certificados raíz SSL para solicitudes de pago (predeterminado: -system-) - - - Set language, for example "de_DE" (default: system locale) - Establecer el idioma, por ejemplo, "es_ES" (predeterminado: configuración regional del sistema) - - - Show all debugging options (usage: --help -help-debug) - Muestra todas las opciones de depuración (uso: --help -help-debug) - - - Show splash screen on startup (default: 1) - Mostrar pantalla de bienvenida en el inicio (predeterminado: 1) - - - Shrink debug.log file on client startup (default: 1 when no -debug) - Reducir el archivo debug.log al iniciar el cliente (predeterminado: 1 sin -debug) - - - Signing transaction failed - Transacción falló - - - Start minimized - Arrancar minimizado - - - The transaction amount is too small to pay the fee - Cantidad de la transacción demasiado pequeña para pagar la comisión - - - This is experimental software. - Este software es experimental. - - - Transaction amount too small - Cantidad de la transacción demasiado pequeña - - - Transaction amounts must be positive - Las cantidades en las transacciones deben ser positivas - - - Transaction too large for fee policy - Operación demasiado grande para la política de tasas - - - Transaction too large - Transacción demasiado grande - - - UI Options: - Opciones de interfaz de usuario - - - Unable to bind to %s on this computer (bind returned error %s) - No es posible conectar con %s en este sistema (bind ha dado el error %s) - - - Use UPnP to map the listening port (default: 1 when listening) - Usar UPnP para asignar el puerto de escucha (predeterminado: 1 al escuchar) - - - Username for JSON-RPC connections - Nombre de usuario para las conexiones JSON-RPC - - - - Wallet needed to be rewritten: restart Bitcoin Core to complete - Monedero es necesario volver a escribir: reiniciar Bitcoin Core para completar - - - Warning - Aviso - - - Warning: Unsupported argument -benchmark ignored, use -debug=bench. - Advertencia: Argumento no soportado -benchmark ignored, use -debug=bench. - - - Warning: Unsupported argument -debugnet ignored, use -debug=net. - Aviso: Argumento no sportado -debugnet anticuado, utilice -debug=net. - - - Zapping all transactions from wallet... - Eliminando todas las transacciones del monedero... - - - on startup - al iniciar - - - wallet.dat corrupt, salvage failed - wallet.dat corrupto. Ha fallado la recuperación. - - - Password for JSON-RPC connections - Contraseña para las conexiones JSON-RPC - - - - Execute command when the best block changes (%s in cmd is replaced by block hash) - Ejecutar un comando cuando cambia el mejor bloque (%s en cmd se sustituye por el hash de bloque) - - - Upgrade wallet to latest format - Actualizar el monedero al último formato - - - Rescan the block chain for missing wallet transactions - Volver a examinar la cadena de bloques en busca de transacciones del monedero perdidas - - - Use OpenSSL (https) for JSON-RPC connections - Usar OpenSSL (https) para las conexiones JSON-RPC - - - - This help message - Este mensaje de ayuda - - - - Allow DNS lookups for -addnode, -seednode and -connect - Permitir búsquedas DNS para -addnode, -seednode y -connect - - - Loading addresses... - Cargando direcciones... - - - Error loading wallet.dat: Wallet corrupted - Error al cargar wallet.dat: el monedero está dañado - - - (1 = keep tx meta data e.g. account owner and payment request information, 2 = drop tx meta data) - (1 = keep tx meta data e.g. account owner and payment request information, 2 = drop tx meta data) - - - How thorough the block verification of -checkblocks is (0-4, default: %u) - Nivel de rigor en la verificación de bloques de -checkblocks (0-4; predeterminado: %u) - - - Maintain a full transaction index, used by the getrawtransaction rpc call (default: %u) - Mantener el índice completo de transacciones, usado por la llamada rpc de getrawtransaction (por defecto: %u) - - - Number of seconds to keep misbehaving peers from reconnecting (default: %u) - Número de segundos en que se evita la reconexión de pares con mal comportamiento (predeterminado: %u) - - - Output debugging information (default: %u, supplying <category> is optional) - Mostrar depuración (por defecto: %u, proporcionar <category> es opcional) - - - Use separate SOCKS5 proxy to reach peers via Tor hidden services (default: %s) - Usar distintos proxys SOCKS5 para comunicarse vía Tor de forma anónima (Por defecto: %s) - - - (default: %s) - (predeterminado: %s) - - - Acceptable ciphers (default: %s) - Aceptar cifrado (por defecto: %s) - - - Always query for peer addresses via DNS lookup (default: %u) - Siempre consultar direcciones de otros equipos por medio de DNS lookup (por defecto: %u) - - - Error loading wallet.dat - Error al cargar wallet.dat - - - Generate coins (default: %u) - Generar monedas (por defecto: %u) - - - How many blocks to check at startup (default: %u, 0 = all) - Cuántos bloques comprobar al iniciar (predeterminado: %u, 0 = todos) - - - Include IP addresses in debug output (default: %u) - Incluir direcciones IP en la salida de depuración (por defecto: %u) - - - Invalid -proxy address: '%s' - Dirección -proxy inválida: '%s' - - - Listen for JSON-RPC connections on <port> (default: %u or testnet: %u) - Escuchar conexiones JSON-RPC en <puerto> (predeterminado: %u o testnet: %u) - - - Listen for connections on <port> (default: %u or testnet: %u) - Escuchar conexiones en <puerto> (predeterminado: %u o testnet: %u) - - - Maintain at most <n> connections to peers (default: %u) - Mantener como máximo <n> conexiones a pares (predeterminado: %u) - - - Make the wallet broadcast transactions - Realiza las operaciones de difusión del monedero - - - Maximum per-connection receive buffer, <n>*1000 bytes (default: %u) - Búfer de recepción máximo por conexión, <n>*1000 bytes (por defecto: %u) - - - Maximum per-connection send buffer, <n>*1000 bytes (default: %u) - Búfer de recepción máximo por conexión, , <n>*1000 bytes (por defecto: %u) - - - Prepend debug output with timestamp (default: %u) - Anteponer marca temporal a la información de depuración (por defecto: %u) - - - Relay and mine data carrier transactions (default: %u) - Retransmitir y minar transacciones de transporte de datos (por defecto: %u) - - - Relay non-P2SH multisig (default: %u) - Relay non-P2SH multisig (default: %u) - - - Server certificate file (default: %s) - Archivo de certificado del servidor (por defecto: %s) - - - Server private key (default: %s) - Llave privada del servidor (por defecto: %s) - - - Set key pool size to <n> (default: %u) - Ajustar el número de claves en reserva <n> (predeterminado: %u) - - - Set minimum block size in bytes (default: %u) - Establecer tamaño mínimo de bloque en bytes (por defecto: %u) - - - Set the number of threads to service RPC calls (default: %d) - Establecer el número de procesos para llamadas del servicio RPC (por defecto: %d) - - - Specify configuration file (default: %s) - Especificar archivo de configuración (por defecto: %s) - - - Specify connection timeout in milliseconds (minimum: 1, default: %d) - Especificar tiempo de espera de la conexión (mínimo: 1, por defecto: %d) - - - Specify pid file (default: %s) - Especificar archivo pid (predeterminado: %s) - - - Spend unconfirmed change when sending transactions (default: %u) - Gastar cambio no confirmado al enviar transacciones (predeterminado: %u) - - - Threshold for disconnecting misbehaving peers (default: %u) - Umbral para la desconexión de pares con mal comportamiento (predeterminado: %u) - - - Unknown network specified in -onlynet: '%s' - La red especificada en -onlynet '%s' es desconocida - - - Cannot resolve -bind address: '%s' - No se puede resolver la dirección de -bind: '%s' - - - Cannot resolve -externalip address: '%s' - No se puede resolver la dirección de -externalip: '%s' - - - Invalid amount for -paytxfee=<amount>: '%s' - Cantidad inválida para -paytxfee=<amount>: '%s' - - - Insufficient funds - Fondos insuficientes - - - Loading block index... - Cargando el índice de bloques... - - - Add a node to connect to and attempt to keep the connection open - Añadir un nodo al que conectarse y tratar de mantener la conexión abierta - - - Loading wallet... - Cargando monedero... - - - Cannot downgrade wallet - No se puede rebajar el monedero - - - Cannot write default address - No se puede escribir la dirección predeterminada - - - Rescanning... - Reexplorando... - - - Done loading - Se terminó de cargar - - - Error - Error - - - \ No newline at end of file diff --git a/src/qt/locale/bitcoin_es_CL.ts b/src/qt/locale/bitcoin_es_CL.ts deleted file mode 100644 index c35acf2c6..000000000 --- a/src/qt/locale/bitcoin_es_CL.ts +++ /dev/null @@ -1,1425 +0,0 @@ - - - AddressBookPage - - Right-click to edit address or label - Haga clic para editar la dirección o etiqueta - - - Create a new address - Crea una nueva direCrea una nueva direccióncción - - - &New - y nueva - - - Copy the currently selected address to the system clipboard - Copia la dirección seleccionada al portapapeles - - - &Copy - y copiar - - - C&lose - C y perder - - - &Copy Address - &Copia dirección - - - Delete the currently selected address from the list - Eliminar la dirección seleccionada de la lista - - - Export the data in the current tab to a file - Exportar los datos de la pestaña actual a un archivo - - - &Export - y exportar - - - &Delete - &Borrar - - - Copy &Label - Copia &etiqueta - - - &Edit - &Editar - - - Comma separated file (*.csv) - Archivos separados por coma (*.csv) - - - - AddressTableModel - - Label - Etiqueta - - - Address - Dirección - - - (no label) - (sin etiqueta) - - - - AskPassphraseDialog - - Enter passphrase - Introduce contraseña actual - - - New passphrase - Nueva contraseña - - - Repeat new passphrase - Repite nueva contraseña - - - Encrypt wallet - Codificar billetera - - - This operation needs your wallet passphrase to unlock the wallet. - Esta operación necesita la contraseña para desbloquear la billetera. - - - Unlock wallet - Desbloquea billetera - - - This operation needs your wallet passphrase to decrypt the wallet. - Esta operación necesita la contraseña para decodificar la billetara. - - - Decrypt wallet - Decodificar cartera - - - Change passphrase - Cambia contraseña - - - Confirm wallet encryption - Confirma la codificación de cartera - - - Warning: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR BITCOINS</b>! - Atención: ¡Si codificas tu billetera y pierdes la contraseña perderás <b>TODOS TUS BITCOINS</b>! - - - Are you sure you wish to encrypt your wallet? - ¿Seguro que quieres seguir codificando la billetera? - - - 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. - IMPORTANTE: Cualquier versión anterior que hayas realizado de tu archivo de billetera será reemplazada por el nuevo archivo de billetera encriptado. Por razones de seguridad, los respaldos anteriores de los archivos de billetera se volverán inútiles en tanto comiences a usar la nueva billetera encriptada. - - - Warning: The Caps Lock key is on! - Precaucion: Mayúsculas Activadas - - - Wallet encrypted - Billetera codificada - - - Wallet encryption failed - Falló la codificación de la billetera - - - Wallet encryption failed due to an internal error. Your wallet was not encrypted. - La codificación de la billetera falló debido a un error interno. Tu billetera no ha sido codificada. - - - The supplied passphrases do not match. - Las contraseñas no coinciden. - - - Wallet unlock failed - Ha fallado el desbloqueo de la billetera - - - The passphrase entered for the wallet decryption was incorrect. - La contraseña introducida para decodificar la billetera es incorrecta. - - - Wallet decryption failed - Ha fallado la decodificación de la billetera - - - Wallet passphrase was successfully changed. - La contraseña de billetera ha sido cambiada con éxito. - - - - BitcoinGUI - - Sign &message... - Firmar &Mensaje... - - - Synchronizing with network... - Sincronizando con la red... - - - &Overview - &Vista general - - - Show general overview of wallet - Muestra una vista general de la billetera - - - &Transactions - &Transacciones - - - Browse transaction history - Explora el historial de transacciónes - - - E&xit - &Salir - - - Quit application - Salir del programa - - - About &Qt - Acerca de - - - Show information about Qt - Mostrar Información sobre Qt - - - &Options... - &Opciones - - - &Encrypt Wallet... - &Codificar la billetera... - - - &Backup Wallet... - &Respaldar billetera... - - - &Change Passphrase... - &Cambiar la contraseña... - - - Open &URI... - Abrir y url... - - - Bitcoin Core client - cliente bitcoin core - - - Reindexing blocks on disk... - Cargando el index de bloques... - - - Send coins to a Bitcoin address - Enviar monedas a una dirección bitcoin - - - Backup wallet to another location - Respaldar billetera en otra ubicación - - - Change the passphrase used for wallet encryption - Cambiar la contraseña utilizada para la codificación de la billetera - - - &Debug window - Ventana &Debug - - - Open debugging and diagnostic console - Abre consola de depuración y diagnóstico - - - Bitcoin - Bitcoin - - - Wallet - Cartera - - - &Send - &Envía - - - &Receive - y recibir - - - &Show / Hide - &Mostrar/Ocultar - - - Sign messages with your Bitcoin addresses to prove you own them - Firmar un mensaje para provar que usted es dueño de esta dirección - - - &File - &Archivo - - - &Settings - &Configuración - - - &Help - &Ayuda - - - Tabs toolbar - Barra de pestañas - - - Bitcoin Core - bitcoin core - - - Error - Error - - - Warning - Atención - - - Information - Información - - - Up to date - Actualizado - - - Catching up... - Recuperando... - - - Sent transaction - Transacción enviada - - - Incoming transaction - Transacción entrante - - - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - La billetera esta <b>codificada</b> y actualmente <b>desbloqueda</b> - - - Wallet is <b>encrypted</b> and currently <b>locked</b> - La billetera esta <b>codificada</b> y actualmente <b>bloqueda</b> - - - - ClientModel - - Network Alert - Alerta de Red - - - - CoinControlDialog - - Amount: - Cantidad: - - - Amount - Cantidad - - - Date - Fecha - - - Confirmed - Confirmado - - - Priority - prioridad - - - Copy address - Copia dirección - - - Copy label - Copia etiqueta - - - Copy amount - Copiar Cantidad - - - medium - medio - - - yes - si - - - no - no - - - (no label) - (sin etiqueta) - - - - EditAddressDialog - - Edit Address - Editar dirección - - - &Label - &Etiqueta - - - &Address - &Dirección - - - New receiving address - Nueva dirección para recibir - - - New sending address - Nueva dirección para enviar - - - Edit receiving address - Editar dirección de recepción - - - Edit sending address - Editar dirección de envio - - - The entered address "%1" is already in the address book. - La dirección introducida "%1" ya esta guardada en la libreta de direcciones. - - - The entered address "%1" is not a valid Bitcoin address. - La dirección introducida "%1" no es una dirección Bitcoin valida. - - - Could not unlock wallet. - No se pudo desbloquear la billetera. - - - New key generation failed. - La generación de nueva clave falló. - - - - FreespaceChecker - - name - Nombre - - - - HelpMessageDialog - - Bitcoin Core - bitcoin core - - - version - versión - - - Usage: - Uso: - - - - Intro - - Welcome - bienvenido - - - Bitcoin Core - bitcoin core - - - Error - Error - - - - OpenURIDialog - - URI: - url: - - - - OptionsDialog - - Options - Opciones - - - &Main - &Principal - - - Reset all client options to default. - Reestablece todas las opciones. - - - &Network - &Red - - - Expert - experto - - - Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled. - Abre automáticamente el puerto del cliente Bitcoin en el router. Esto funciona solo cuando tu router es compatible con UPnP y está habilitado. - - - Map port using &UPnP - Direcciona el puerto usando &UPnP - - - Proxy &IP: - &IP Proxy: - - - &Port: - &Puerto: - - - Port of the proxy (e.g. 9050) - Puerto del servidor proxy (ej. 9050) - - - &Window - y windows - - - - Show only a tray icon after minimizing the window. - Muestra solo un ícono en la bandeja después de minimizar la ventana - - - &Minimize to the tray instead of the taskbar - &Minimiza a la bandeja en vez de la barra de tareas - - - M&inimize on close - M&inimiza a la bandeja al cerrar - - - &Display - &Mostrado - - - &Unit to show amounts in: - &Unidad en la que mostrar cantitades: - - - Choose the default subdivision unit to show in the interface and when sending coins. - Elige la subdivisión por defecto para mostrar cantidaded en la interfaz cuando se envien monedas - - - &OK - &OK - - - &Cancel - &Cancela - - - default - predeterminado - - - Confirm options reset - Confirmar reestablecimiento de las opciones - - - - OverviewPage - - Form - Formulario - - - Total: - Total: - - - - PaymentServer - - Payment acknowledged - Pago completado - - - - PeerTableModel - - - QObject - - Amount - Cantidad - - - N/A - N/A - - - - QRImageWidget - - &Save Image... - Guardar imagen... - - - &Copy Image - Copiar Imagen - - - - RPCConsole - - Client name - Nombre del cliente - - - N/A - N/A - - - Client version - Versión del Cliente - - - &Information - &Información - - - General - General - - - Startup time - Tiempo de inicio - - - Network - Red - - - Name - Nombre - - - Number of connections - Número de conexiones - - - Block chain - Bloquea cadena - - - Version - version - - - - &Open - &Abrir - - - &Console - &Consola - - - Totals - Total: - - - Clear console - Limpiar Consola - - - - ReceiveCoinsDialog - - &Label: - &Etiqueta: - - - &Message: - &mensaje - - - Copy label - Copia etiqueta - - - Copy amount - Copiar Cantidad - - - - ReceiveRequestDialog - - QR Code - Código QR - - - Copy &Address - &Copia dirección - - - &Save Image... - Guardar imagen... - - - Address - Dirección - - - Amount - Cantidad - - - Label - Etiqueta - - - Message - Mensaje - - - - RecentRequestsTableModel - - Date - Fecha - - - Label - Etiqueta - - - Message - Mensaje - - - Amount - Cantidad - - - (no label) - (sin etiqueta) - - - - SendCoinsDialog - - Send Coins - Enviar monedas - - - Amount: - Cantidad: - - - Send to multiple recipients at once - Enviar a múltiples destinatarios - - - Add &Recipient - &Agrega destinatario - - - Clear &All - &Borra todos - - - Balance: - Balance: - - - Confirm the send action - Confirma el envio - - - S&end - &Envía - - - Confirm send coins - Confirmar el envio de monedas - - - Copy amount - Copiar Cantidad - - - The amount to pay must be larger than 0. - La cantidad por pagar tiene que ser mayor 0. - - - The amount exceeds your balance. - La cantidad sobrepasa tu saldo. - - - The total exceeds your balance when the %1 transaction fee is included. - El total sobrepasa tu saldo cuando se incluyen %1 como tasa de envio. - - - (no label) - (sin etiqueta) - - - - SendCoinsEntry - - A&mount: - Cantidad: - - - Pay &To: - &Pagar a: - - - Enter a label for this address to add it to your address book - Introduce una etiqueta a esta dirección para añadirla a tu guia - - - &Label: - &Etiqueta: - - - Alt+A - Alt+A - - - Paste address from clipboard - Pega dirección desde portapapeles - - - Alt+P - Alt+P - - - Message: - Mensaje: - - - - ShutdownWindow - - - SignVerifyMessageDialog - - &Sign Message - &Firmar Mensaje - - - Alt+A - Alt+A - - - Paste address from clipboard - Pega dirección desde portapapeles - - - Alt+P - Alt+P - - - Enter the message you want to sign here - Escriba el mensaje que desea firmar - - - Signature - Firma - - - Sign the message to prove you own this Bitcoin address - Firmar un mensjage para probar que usted es dueño de esta dirección - - - Sign &Message - Firmar Mensaje - - - Clear &All - &Borra todos - - - &Verify Message - &Firmar Mensaje - - - Verify &Message - &Firmar Mensaje - - - Click "Sign Message" to generate signature - Click en "Firmar Mensage" para conseguir firma - - - Please check the address and try again. - Por favor, revise la dirección Bitcoin e inténtelo denuevo - - - Wallet unlock was cancelled. - Ha fallado el desbloqueo de la billetera - - - Message signing failed. - Firma fallida - - - Message signed. - Mensaje firmado - - - Message verified. - Mensaje comprobado - - - - SplashScreen - - Bitcoin Core - bitcoin core - - - [testnet] - [red-de-pruebas] - - - - TrafficGraphWidget - - KB/s - KB/s - - - - TransactionDesc - - Open until %1 - Abierto hasta %1 - - - %1/offline - %1/fuera de linea - - - %1/unconfirmed - %1/no confirmado - - - %1 confirmations - %1 confirmaciónes - - - Status - Estado - - - Date - Fecha - - - Generated - Generado - - - From - De - - - To - A - - - own address - propia dirección - - - label - etiqueta - - - Credit - Credito - - - not accepted - no aceptada - - - Debit - Debito - - - Transaction fee - Comisión transacción - - - Net amount - Cantidad total - - - Message - Mensaje - - - Comment - Comentario - - - Transaction ID - ID de Transacción - - - Transaction - Transacción - - - Amount - Cantidad - - - , has not been successfully broadcast yet - , no ha sido emitido satisfactoriamente todavía - - - unknown - desconocido - - - - TransactionDescDialog - - Transaction details - Detalles de transacción - - - This pane shows a detailed description of the transaction - Esta ventana muestra información detallada sobre la transacción - - - - TransactionTableModel - - Date - Fecha - - - Type - Tipo - - - Open until %1 - Abierto hasta %1 - - - Confirmed (%1 confirmations) - Confirmado (%1 confirmaciones) - - - This block was not received by any other nodes and will probably not be accepted! - Este bloque no ha sido recibido por otros nodos y probablemente no sea aceptado ! - - - Generated but not accepted - Generado pero no acceptado - - - Label - Etiqueta - - - Received with - Recibido con - - - Received from - Recibido de - - - Sent to - Enviado a - - - Payment to yourself - Pagar a usted mismo - - - Mined - Minado - - - (n/a) - (n/a) - - - Transaction status. Hover over this field to show number of confirmations. - Estado de transacción. Pasa el raton sobre este campo para ver el numero de confirmaciónes. - - - Date and time that the transaction was received. - Fecha y hora cuando se recibió la transaccion - - - Type of transaction. - Tipo de transacción. - - - Amount removed from or added to balance. - Cantidad restada o añadida al balance - - - - TransactionView - - All - Todo - - - Today - Hoy - - - This week - Esta semana - - - This month - Esta mes - - - Last month - Mes pasado - - - This year - Este año - - - Range... - Rango... - - - Received with - Recibido con - - - Sent to - Enviado a - - - To yourself - A ti mismo - - - Mined - Minado - - - Other - Otra - - - Enter address or label to search - Introduce una dirección o etiqueta para buscar - - - Min amount - Cantidad minima - - - Copy address - Copia dirección - - - Copy label - Copia etiqueta - - - Copy amount - Copiar Cantidad - - - Edit label - Edita etiqueta - - - Show transaction details - Mostrar detalles de la transacción - - - Comma separated file (*.csv) - Archivos separados por coma (*.csv) - - - Confirmed - Confirmado - - - Date - Fecha - - - Type - Tipo - - - Label - Etiqueta - - - Address - Dirección - - - ID - ID - - - Range: - Rango: - - - to - para - - - - UnitDisplayStatusBarControl - - - WalletFrame - - - WalletModel - - Send Coins - Enviar monedas - - - - WalletView - - &Export - y exportar - - - Export the data in the current tab to a file - Exportar los datos de la pestaña actual a un archivo - - - Backup Wallet - Respaldar billetera - - - Wallet Data (*.dat) - Datos de billetera (*.dat) - - - Backup Failed - Ha fallado el respaldo - - - - bitcoin-core - - Options: - Opciones: - - - - Specify data directory - Especifica directorio para los datos - - - - Accept command line and JSON-RPC commands - Aceptar comandos consola y JSON-RPC - - - - Run in the background as a daemon and accept commands - Correr como demonio y acepta comandos - - - - Use the test network - Usa la red de pruebas - - - - Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. - Precaución: -paytxfee es muy alta. Esta es la comisión que pagarás si envias una transacción. - - - Connect only to the specified node(s) - Conecta solo al nodo especificado - - - - Error loading block database - Error cargando blkindex.dat - - - Error: Disk space is low! - Atención: Poco espacio en el disco duro - - - Imports blocks from external blk000??.dat file - Importar bloques desde el archivo externo blk000??.dat - - - Information - Información - - - Send trace/debug info to console instead of debug.log file - Enviar informacion de seguimiento a la consola en vez del archivo debug.log - - - Start minimized - Arranca minimizado - - - - Use UPnP to map the listening port (default: 1 when listening) - Intenta usar UPnP para mapear el puerto de escucha (default: 1 when listening) - - - Username for JSON-RPC connections - Usuario para las conexiones JSON-RPC - - - - Warning - Atención - - - wallet.dat corrupt, salvage failed - wallet.dat corrompió, guardado fallido - - - Password for JSON-RPC connections - Contraseña para las conexiones JSON-RPC - - - - Upgrade wallet to latest format - Actualizar billetera al formato actual - - - Rescan the block chain for missing wallet transactions - Rescanea la cadena de bloques para transacciones perdidas de la cartera - - - - Use OpenSSL (https) for JSON-RPC connections - Usa OpenSSL (https) para las conexiones JSON-RPC - - - - This help message - Este mensaje de ayuda - - - - Allow DNS lookups for -addnode, -seednode and -connect - Permite búsqueda DNS para addnode y connect - - - - Loading addresses... - Cargando direcciónes... - - - Error loading wallet.dat: Wallet corrupted - Error cargando wallet.dat: Billetera corrupta - - - Error loading wallet.dat - Error cargando wallet.dat - - - Invalid -proxy address: '%s' - Dirección -proxy invalida: '%s' - - - Invalid amount for -paytxfee=<amount>: '%s' - Cantidad inválida para -paytxfee=<amount>: '%s' - - - Insufficient funds - Fondos insuficientes - - - Loading block index... - Cargando el index de bloques... - - - Add a node to connect to and attempt to keep the connection open - Agrega un nodo para conectarse and attempt to keep the connection open - - - Loading wallet... - Cargando cartera... - - - Rescanning... - Rescaneando... - - - Done loading - Carga completa - - - Error - Error - - - \ No newline at end of file diff --git a/src/qt/locale/bitcoin_es_DO.ts b/src/qt/locale/bitcoin_es_DO.ts deleted file mode 100644 index 082de1a08..000000000 --- a/src/qt/locale/bitcoin_es_DO.ts +++ /dev/null @@ -1,2430 +0,0 @@ - - - AddressBookPage - - Create a new address - Crear una nueva dirección - - - &New - Nuevo - - - Copy the currently selected address to the system clipboard - Copiar la dirección seleccionada al portapapeles del sistema - - - &Copy - &Copiar - - - C&lose - &Cerrar - - - &Copy Address - &Copiar dirección - - - Delete the currently selected address from the list - Borrar de la lista la dirección seleccionada - - - Export the data in the current tab to a file - Exportar a un archivo los datos de esta pestaña - - - &Export - &Exportar - - - &Delete - &Eliminar - - - Choose the address to send coins to - Escoja la dirección para enviar monedas - - - Choose the address to receive coins with - Escoja la dirección para recibir monedas - - - C&hoose - &Escoger - - - Sending addresses - Enviando dirección - - - Receiving addresses - Recibiendo dirección - - - These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins. - Estas son sus direcciones Bitcoin para enviar pagos. Compruebe siempre la cantidad y la dirección receptora antes de transferir monedas. - - - These are your Bitcoin addresses for receiving payments. It is recommended to use a new receiving address for each transaction. - Estas son sus direcciones de Bitcoin para recibir pagos. Se recomienda utilizar una nueva dirección de recepción para cada transacción. - - - Copy &Label - Copiar &etiqueta - - - &Edit - &Editar - - - Export Address List - Exportar la lista de direcciones - - - Comma separated file (*.csv) - Archivos de columnas separadas por coma (*.csv) - - - Exporting Failed - Error exportando - - - - AddressTableModel - - Label - Etiqueta - - - Address - Dirección - - - (no label) - (sin etiqueta) - - - - AskPassphraseDialog - - Passphrase Dialog - Diálogo de contraseña - - - Enter passphrase - Introducir contraseña - - - New passphrase - Nueva contraseña - - - Repeat new passphrase - Repita la nueva contraseña - - - Encrypt wallet - Cifrar la cartera - - - This operation needs your wallet passphrase to unlock the wallet. - Esta operación requiere su contraseña para desbloquear la cartera - - - Unlock wallet - Desbloquear cartera - - - This operation needs your wallet passphrase to decrypt the wallet. - Esta operación requiere su contraseña para descifrar la cartera. - - - Decrypt wallet - Descifrar la certare - - - Change passphrase - Cambiar contraseña - - - Confirm wallet encryption - Confirmar cifrado de la cartera - - - Warning: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR BITCOINS</b>! - Atencion: ¡Si cifra su monedero y pierde la contraseña perderá <b>TODOS SUS BITCOINS</b>!" - - - Are you sure you wish to encrypt your wallet? - ¿Seguro que desea cifrar su monedero? - - - 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. - IMPORTANTE: Cualquier copia de seguridad que haya realizado previamente de su archivo de monedero debe reemplazarse con el nuevo archivo de monedero cifrado. Por razones de seguridad, las copias de seguridad previas del archivo de monedero no cifradas serán inservibles en cuanto comience a usar el nuevo monedero cifrado. - - - Warning: The Caps Lock key is on! - Aviso: ¡La tecla de bloqueo de mayúsculas está activada! - - - Wallet encrypted - Monedero cifrado - - - Wallet encryption failed - Ha fallado el cifrado del monedero - - - Wallet encryption failed due to an internal error. Your wallet was not encrypted. - Ha fallado el cifrado del monedero debido a un error interno. El monedero no ha sido cifrado. - - - The supplied passphrases do not match. - Las contraseñas no coinciden. - - - Wallet unlock failed - Ha fallado el desbloqueo del monedero - - - The passphrase entered for the wallet decryption was incorrect. - La contraseña introducida para descifrar el monedero es incorrecta. - - - Wallet decryption failed - Ha fallado el descifrado del monedero - - - Wallet passphrase was successfully changed. - Se ha cambiado correctamente la contraseña del monedero. - - - - BitcoinGUI - - Sign &message... - Firmar &mensaje... - - - Synchronizing with network... - Sincronizando con la red… - - - &Overview - &Vista general - - - Node - Nodo - - - Show general overview of wallet - Mostrar vista general del monedero - - - &Transactions - &Transacciones - - - Browse transaction history - Examinar el historial de transacciones - - - E&xit - &Salir - - - Quit application - Salir de la aplicación - - - About &Qt - Acerca de &Qt - - - Show information about Qt - Mostrar información acerca de Qt - - - &Options... - &Opciones... - - - &Encrypt Wallet... - &Cifrar monedero… - - - &Backup Wallet... - Copia de &respaldo del monedero... - - - &Change Passphrase... - &Cambiar la contraseña… - - - &Sending addresses... - $Enviando dirección... - - - &Receiving addresses... - &Recibiendo dirección - - - Open &URI... - Abrir URI... - - - Importing blocks from disk... - Importando bloques de disco... - - - Reindexing blocks on disk... - Reindexando bloques en disco... - - - Send coins to a Bitcoin address - Enviar monedas a una dirección Bitcoin - - - Backup wallet to another location - Copia de seguridad del monedero en otra ubicación - - - Change the passphrase used for wallet encryption - Cambiar la contraseña utilizada para el cifrado del monedero - - - &Debug window - Ventana de &depuración - - - Open debugging and diagnostic console - Abrir la consola de depuración y diagnóstico - - - &Verify message... - &Verificar mensaje... - - - Bitcoin - Bitcoin - - - Wallet - Monedero - - - &Send - &Enviar - - - &Receive - &Recibir - - - &Show / Hide - Mo&strar/ocultar - - - Show or hide the main Window - Mostrar u ocultar la ventana principal - - - Encrypt the private keys that belong to your wallet - Cifrar las claves privadas de su monedero - - - Sign messages with your Bitcoin addresses to prove you own them - Firmar mensajes con sus direcciones Bitcoin para demostrar la propiedad - - - Verify messages to ensure they were signed with specified Bitcoin addresses - Verificar mensajes comprobando que están firmados con direcciones Bitcoin concretas - - - &File - &Archivo - - - &Settings - &Configuración - - - &Help - A&yuda - - - Tabs toolbar - Barra de pestañas - - - Bitcoin Core - Núcleo de Bitcoin - - - Request payments (generates QR codes and bitcoin: URIs) - Solicitar pagos (genera codigo QR y URL's de Bitcoin) - - - &About Bitcoin Core - &Acerca del Núcleo de Bitcoin - - - Show the list of used sending addresses and labels - Mostrar la lista de direcciones de envío y etiquetas - - - Show the list of used receiving addresses and labels - Muestra la lista de direcciones de recepción y etiquetas - - - Open a bitcoin: URI or payment request - Abrir un bitcoin: URI o petición de pago - - - &Command-line options - &Opciones de linea de comando - - - No block source available... - Ninguna fuente de bloques disponible ... - - - %1 behind - %1 atrás - - - Last received block was generated %1 ago. - El último bloque recibido fue generado hace %1. - - - Transactions after this will not yet be visible. - Las transacciones posteriores aún no están visibles. - - - Error - Error - - - Warning - Aviso - - - Information - Información - - - Up to date - Actualizado - - - Catching up... - Actualizando... - - - Sent transaction - Transacción enviada - - - Incoming transaction - Transacción entrante - - - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - El monedero está <b>cifrado</b> y actualmente <b>desbloqueado</b> - - - Wallet is <b>encrypted</b> and currently <b>locked</b> - El monedero está <b>cifrado</b> y actualmente <b>bloqueado</b> - - - - ClientModel - - Network Alert - Alerta de red - - - - CoinControlDialog - - Quantity: - Cantidad: - - - Bytes: - Bytes: - - - Amount: - Cuantía: - - - Priority: - Prioridad: - - - Fee: - Tasa: - - - After Fee: - Después de tasas: - - - Change: - Cambio: - - - (un)select all - (des)selecciona todos - - - Tree mode - Modo arbol - - - List mode - Modo lista - - - Amount - Cantidad - - - Date - Fecha - - - Confirmations - Confirmaciones - - - Confirmed - Confirmado - - - Priority - Prioridad - - - Copy address - Copiar dirección - - - Copy label - Copiar etiqueta - - - Copy amount - Copiar cantidad - - - Copy transaction ID - Copiar identificador de transacción - - - Lock unspent - Bloquear lo no gastado - - - Unlock unspent - Desbloquear lo no gastado - - - Copy quantity - Copiar cantidad - - - Copy fee - Copiar donación - - - Copy after fee - Copiar después de aplicar donación - - - Copy bytes - Copiar bytes - - - Copy priority - Copiar prioridad - - - Copy change - Copiar Cambio - - - highest - lo más alto - - - higher - más alto - - - high - alto - - - medium-high - medio-alto - - - medium - medio - - - low-medium - bajo-medio - - - low - bajo - - - lower - más bajo - - - lowest - lo más bajo - - - (%1 locked) - (%1 bloqueado) - - - none - ninguno - - - yes - si - - - no - no - - - This means a fee of at least %1 per kB is required. - Esto implica que se requiere una tarifa de al menos %1 por kB - - - Can vary +/- 1 byte per input. - Puede variar +/- 1 byte por entrada. - - - Transactions with higher priority are more likely to get included into a block. - Las transacciones con alta prioridad son más propensas a ser incluidas dentro de un bloque. - - - (no label) - (sin etiqueta) - - - change from %1 (%2) - Enviar desde %1 (%2) - - - (change) - (cambio) - - - - EditAddressDialog - - Edit Address - Editar Dirección - - - &Label - &Etiqueta - - - The label associated with this address list entry - La etiqueta asociada con esta entrada de la lista de direcciones - - - The address associated with this address list entry. This can only be modified for sending addresses. - La dirección asociada con esta entrada de la lista de direcciones. Solo puede ser modificada para direcciones de envío. - - - &Address - &Dirección - - - New receiving address - Nueva dirección de recepción - - - New sending address - Nueva dirección de envío - - - Edit receiving address - Editar dirección de recepción - - - Edit sending address - Editar dirección de envío - - - The entered address "%1" is already in the address book. - La dirección introducida "%1" ya está presente en la libreta de direcciones. - - - The entered address "%1" is not a valid Bitcoin address. - La dirección introducida "%1" no es una dirección Bitcoin válida. - - - Could not unlock wallet. - No se pudo desbloquear el monedero. - - - New key generation failed. - Ha fallado la generación de la nueva clave. - - - - FreespaceChecker - - A new data directory will be created. - Se creará un nuevo directorio de datos. - - - name - nombre - - - Directory already exists. Add %1 if you intend to create a new directory here. - El directorio ya existe. Añada %1 si pretende crear aquí un directorio nuevo. - - - Path already exists, and is not a directory. - La ruta ya existe y no es un directorio. - - - Cannot create data directory here. - No se puede crear un directorio de datos aquí. - - - - HelpMessageDialog - - Bitcoin Core - Núcleo de Bitcoin - - - version - versión - - - About Bitcoin Core - Acerca del Núcleo de Bitcoin - - - Command-line options - Opciones de la línea de órdenes - - - Usage: - Uso: - - - command-line options - opciones de la línea de órdenes - - - - Intro - - Welcome - Bienvenido - - - Welcome to Bitcoin Core. - Bienvenido al Núcleo de Bitcoin - - - As this is the first time the program is launched, you can choose where Bitcoin Core will store its data. - Al ser la primera vez que se ejecuta el programa, puede elegir dónde almacenará sus datos Bitcoin-Qt. - - - Bitcoin Core will download and store a copy of the Bitcoin block chain. At least %1GB of data will be stored in this directory, and it will grow over time. The wallet will also be stored in this directory. - Bitcoin-Qt va a descargar y guardar una copia de la cadena de bloques de Bitcoin. Se almacenará al menos %1GB de datos en este directorio, que irá creciendo con el tiempo. El monedero se guardará también en este directorio. - - - Use the default data directory - Utilizar el directorio de datos predeterminado - - - Use a custom data directory: - Utilice un directorio de datos personalizado: - - - Bitcoin Core - Núcleo de Bitcoin - - - Error - Error - - - - OpenURIDialog - - Open URI - Abrir URI... - - - Open payment request from URI or file - El pago requiere una URI o archivo - - - URI: - URI: - - - Select payment request file - Seleccione archivo de sulicitud de pago - - - Select payment request file to open - Abrir archivo de solicitud de pago - - - - OptionsDialog - - Options - Opciones - - - &Main - &Principal - - - MB - MB - - - IP address of the proxy (e.g. IPv4: 127.0.0.1 / IPv6: ::1) - Dirección IP del proxy (ej. IPv4: 127.0.0.1 / IPv6: ::1) - - - Reset all client options to default. - Restablecer todas las opciones del cliente a las predeterminadas. - - - &Reset Options - &Restablecer opciones - - - &Network - &Red - - - Expert - Experto - - - Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled. - Abrir automáticamente el puerto del cliente Bitcoin en el router. Esta opción solo funciona si el router admite UPnP y está activado. - - - Map port using &UPnP - Mapear el puerto usando &UPnP - - - Proxy &IP: - Dirección &IP del proxy: - - - &Port: - &Puerto: - - - Port of the proxy (e.g. 9050) - Puerto del servidor proxy (ej. 9050) - - - &Window - &Ventana - - - Show only a tray icon after minimizing the window. - Minimizar la ventana a la bandeja de iconos del sistema. - - - &Minimize to the tray instead of the taskbar - &Minimizar a la bandeja en vez de a la barra de tareas - - - M&inimize on close - M&inimizar al cerrar - - - &Display - &Interfaz - - - User Interface &language: - I&dioma de la interfaz de usuario - - - &Unit to show amounts in: - Mostrar las cantidades en la &unidad: - - - Choose the default subdivision unit to show in the interface and when sending coins. - Elegir la subdivisión predeterminada para mostrar cantidades en la interfaz y cuando se envían monedas. - - - Whether to show coin control features or not. - Mostrar o no características de control de moneda - - - &OK - &Aceptar - - - &Cancel - &Cancelar - - - default - predeterminado - - - none - ninguno - - - Confirm options reset - Confirme el restablecimiento de las opciones - - - Client restart required to activate changes. - Reinicio del cliente para activar cambios. - - - This change would require a client restart. - Este cambio requiere reinicio por parte del cliente. - - - The supplied proxy address is invalid. - La dirección proxy indicada es inválida. - - - - OverviewPage - - Form - Desde - - - The displayed information may be out of date. Your wallet automatically synchronizes with the Bitcoin network after a connection is established, but this process has not completed yet. - La información mostrada puede estar desactualizada. Su monedero se sincroniza automáticamente con la red Bitcoin después de que se haya establecido una conexión, pero este proceso aún no se ha completado. - - - Your current spendable balance - Su balance actual gastable - - - Total of transactions that have yet to be confirmed, and do not yet count toward the spendable balance - Total de transacciones que deben ser confirmadas, y que no cuentan con el balance gastable necesario - - - Immature: - No disponible: - - - Mined balance that has not yet matured - Saldo recién minado que aún no está disponible. - - - Total: - Total: - - - Your current total balance - Su balance actual total - - - - PaymentServer - - URI handling - Gestión de URI - - - Invalid payment address %1 - Dirección de pago no válida %1 - - - Requested payment amount of %1 is too small (considered dust). - La cantidad del pago solicitado (%1) es demasiado pequeña (considerada polvo). - - - Payment request error - Error en petición de pago - - - Cannot start bitcoin: click-to-pay handler - No se pudo iniciar bitcoin: manejador de pago-al-clic - - - Unverified payment requests to custom payment scripts are unsupported. - No están soportadas las peticiones inseguras a scripts de pago personalizados - - - Refund from %1 - Devolución de %1 - - - Error communicating with %1: %2 - Error en la comunicación con %1: %2 - - - Bad response from server %1 - Respuesta errónea del servidor %1 - - - Payment acknowledged - Pago aceptado - - - Network request error - Error en petición de red - - - - PeerTableModel - - - QObject - - Amount - Cantidad - - - %1 h - %1 h - - - %1 m - %1 m - - - N/A - N/D - - - - QRImageWidget - - &Save Image... - Guardar Imagen... - - - &Copy Image - Copiar imagen - - - Save QR Code - Guardar código QR - - - PNG Image (*.png) - Imágenes PNG (*.png) - - - - RPCConsole - - Client name - Nombre del cliente - - - N/A - N/D - - - Client version - Versión del cliente - - - &Information - Información - - - Debug window - Ventana de depuración - - - General - General - - - Using OpenSSL version - Utilizando la versión OpenSSL - - - Startup time - Hora de inicio - - - Network - Red - - - Name - Nombre - - - Number of connections - Número de conexiones - - - Block chain - Cadena de bloques - - - Current number of blocks - Número actual de bloques - - - Last block time - Hora del último bloque - - - &Open - &Abrir - - - &Console - &Consola - - - &Network Traffic - &Tráfico de Red - - - &Clear - &Limpiar - - - Totals - Total: - - - In: - Dentro: - - - Out: - Fuera: - - - Build date - Fecha de compilación - - - Debug log file - Archivo de registro de depuración - - - Clear console - Borrar consola - - - Use up and down arrows to navigate history, and <b>Ctrl-L</b> to clear screen. - Use las flechas arriba y abajo para navegar por el historial y <b>Control+L</b> para limpiar la pantalla. - - - Type <b>help</b> for an overview of available commands. - Escriba <b>help</b> para ver un resumen de los comandos disponibles. - - - %1 B - %1 B - - - %1 KB - %1 KB - - - %1 MB - %1 MB - - - %1 GB - %1 GB - - - - ReceiveCoinsDialog - - &Amount: - Cantidad - - - &Label: - &Etiqueta: - - - &Message: - Mensaje: - - - Reuse one of the previously used receiving addresses. Reusing addresses has security and privacy issues. Do not use this unless re-generating a payment request made before. - Reutilizar una de las direcciones previamente usadas para recibir. Reutilizar direcciones tiene problemas de seguridad y privacidad. No lo uses a menos que antes regeneres una solicitud de pago. - - - R&euse an existing receiving address (not recommended) - R&eutilizar una dirección existente para recibir (no recomendado) - - - Clear all fields of the form. - Limpiar todos los campos del formulario - - - Clear - Limpiar - - - &Request payment - &Solicitar pago - - - Show the selected request (does the same as double clicking an entry) - Muestra la petición seleccionada (También doble clic) - - - Show - Mostrar - - - Remove the selected entries from the list - Borrar de la lista las direcciónes actualmente seleccionadas - - - Remove - Eliminar - - - Copy label - Copiar etiqueta - - - Copy amount - Copiar cantidad - - - - ReceiveRequestDialog - - QR Code - Código QR - - - Copy &URI - Copiar &URI - - - Copy &Address - Copiar &Dirección - - - &Save Image... - Guardar Imagen... - - - Request payment to %1 - Solicitar pago a %1 - - - Payment information - Información de pago - - - URI - URI - - - Address - Dirección - - - Amount - Cantidad - - - Label - Etiqueta - - - Message - Mensaje - - - Resulting URI too long, try to reduce the text for label / message. - URI resultante demasiado larga. Intente reducir el texto de la etiqueta / mensaje. - - - Error encoding URI into QR Code. - Error al codificar la URI en el código QR. - - - - RecentRequestsTableModel - - Date - Fecha - - - Label - Etiqueta - - - Message - Mensaje - - - Amount - Cantidad - - - (no label) - (sin etiqueta) - - - (no message) - (Ningun mensaje) - - - - SendCoinsDialog - - Send Coins - Enviar monedas - - - Coin Control Features - Características de control de la moneda - - - Inputs... - Entradas... - - - automatically selected - Seleccionado automaticamente - - - Insufficient funds! - Fondos insuficientes! - - - Quantity: - Cantidad: - - - Bytes: - Bytes: - - - Amount: - Cuantía: - - - Priority: - Prioridad: - - - Fee: - Tasa: - - - After Fee: - Después de tasas: - - - Change: - Cambio: - - - If this is activated, but the change address is empty or invalid, change will be sent to a newly generated address. - Al activarse, si la dirección esta vacía o es inválida, las monedas serán enviadas a una nueva dirección generada. - - - Custom change address - Dirección propia - - - Send to multiple recipients at once - Enviar a múltiples destinatarios de una vez - - - Add &Recipient - Añadir &destinatario - - - Clear all fields of the form. - Limpiar todos los campos del formulario - - - Clear &All - Limpiar &todo - - - Balance: - Saldo: - - - Confirm the send action - Confirmar el envío - - - S&end - &Enviar - - - Confirm send coins - Confirmar el envío de monedas - - - %1 to %2 - %1 a %2 - - - Copy quantity - Copiar cantidad - - - Copy amount - Copiar cantidad - - - Copy fee - Copiar donación - - - Copy after fee - Copiar después de aplicar donación - - - Copy bytes - Copiar bytes - - - Copy priority - Copiar prioridad - - - Copy change - Copiar Cambio - - - or - o - - - The amount to pay must be larger than 0. - La cantidad por pagar tiene que ser mayor de 0. - - - The amount exceeds your balance. - La cantidad sobrepasa su saldo. - - - The total exceeds your balance when the %1 transaction fee is included. - El total sobrepasa su saldo cuando se incluye la tasa de envío de %1 - - - Transaction creation failed! - ¡Ha fallado la creación de la transacción! - - - 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. - La transacción fue rechazada. Esto puede haber ocurrido si alguna de las monedas ya estaba gastada o si ha usado una copia de wallet.dat y las monedas se gastaron en la copia pero no se han marcado como gastadas aqui. - - - Warning: Invalid Bitcoin address - Alerta: Dirección de Bitcoin inválida - - - (no label) - (sin etiqueta) - - - Warning: Unknown change address - Alerta: Dirección de Bitcoin inválida - - - Are you sure you want to send? - ¿Está seguro que desea enviar? - - - added as transaction fee - añadido como comisión de transacción - - - - SendCoinsEntry - - A&mount: - Ca&ntidad: - - - Pay &To: - &Pagar a: - - - Enter a label for this address to add it to your address book - Etiquete esta dirección para añadirla a la libreta - - - &Label: - &Etiqueta: - - - Choose previously used address - Escoger dirección previamente usada - - - This is a normal payment. - Esto es un pago ordinario. - - - Alt+A - Alt+A - - - Paste address from clipboard - Pegar dirección desde portapapeles - - - Alt+P - Alt+P - - - Remove this entry - Eliminar esta transacción - - - Enter a label for this address to add it to the list of used addresses - Introduce una etiqueta para esta dirección para añadirla a la lista de direcciones utilizadas - - - Pay To: - Paga a: - - - Memo: - Memo: - - - - ShutdownWindow - - - SignVerifyMessageDialog - - Signatures - Sign / Verify a Message - Firmas - Firmar / verificar un mensaje - - - &Sign Message - &Firmar mensaje - - - Choose previously used address - Escoger dirección previamente usada - - - Alt+A - Alt+A - - - Paste address from clipboard - Pegar dirección desde portapapeles - - - Alt+P - Alt+P - - - Enter the message you want to sign here - Introduzca el mensaje que desea firmar aquí - - - Signature - Firma - - - Copy the current signature to the system clipboard - Copiar la firma actual al portapapeles del sistema - - - Sign the message to prove you own this Bitcoin address - Firmar el mensaje para demostrar que se posee esta dirección Bitcoin - - - Sign &Message - Firmar &mensaje - - - Reset all sign message fields - Limpiar todos los campos de la firma de mensaje - - - Clear &All - Limpiar &todo - - - &Verify Message - &Verificar mensaje - - - Verify the message to ensure it was signed with the specified Bitcoin address - Verificar el mensaje para comprobar que fue firmado con la dirección Bitcoin indicada - - - Verify &Message - Verificar &mensaje - - - Reset all verify message fields - Limpiar todos los campos de la verificación de mensaje - - - Click "Sign Message" to generate signature - Haga clic en "Firmar mensaje" para generar la firma - - - The entered address is invalid. - La dirección introducida es inválida. - - - Please check the address and try again. - Verifique la dirección e inténtelo de nuevo. - - - The entered address does not refer to a key. - La dirección introducida no corresponde a una clave. - - - Wallet unlock was cancelled. - Se ha cancelado el desbloqueo del monedero. - - - Private key for the entered address is not available. - No se dispone de la clave privada para la dirección introducida. - - - Message signing failed. - Ha fallado la firma del mensaje. - - - Message signed. - Mensaje firmado. - - - The signature could not be decoded. - No se puede decodificar la firma. - - - Please check the signature and try again. - Compruebe la firma e inténtelo de nuevo. - - - The signature did not match the message digest. - La firma no coincide con el resumen del mensaje. - - - Message verification failed. - La verificación del mensaje ha fallado. - - - Message verified. - Mensaje verificado. - - - - SplashScreen - - Bitcoin Core - Núcleo de Bitcoin - - - The Bitcoin Core developers - Los desarrolladores del Núcleo de Bitcoin - - - [testnet] - [testnet] - - - - TrafficGraphWidget - - KB/s - KB/s - - - - TransactionDesc - - Open until %1 - Abierto hasta %1 - - - %1/offline - %1/fuera de línea - - - %1/unconfirmed - %1/no confirmado - - - %1 confirmations - %1 confirmaciones - - - Status - Estado - - - Date - Fecha - - - Source - Fuente - - - Generated - Generado - - - From - De - - - To - Para - - - own address - dirección propia - - - label - etiqueta - - - Credit - Crédito - - - not accepted - no aceptada - - - Debit - Débito - - - Transaction fee - Comisión de transacción - - - Net amount - Cantidad neta - - - Message - Mensaje - - - Comment - Comentario - - - Transaction ID - ID - - - Merchant - Vendedor - - - Generated coins must mature %1 blocks before they can be spent. When you generated this block, it was broadcast to the network to be added to the block chain. If it fails to get into the chain, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - Las monedas generadas deben madurar %1 bloques antes de que puedan ser gastadas. Una vez que generas este bloque, es propagado por la red para ser añadido a la cadena de bloques. Si falla el intento de meterse en la cadena, su estado cambiará a "no aceptado" y ya no se puede gastar. Esto puede ocurrir ocasionalmente si otro nodo genera un bloque a pocos segundos del tuyo. - - - Debug information - Información de depuración - - - Transaction - Transacción - - - Inputs - entradas - - - Amount - Cantidad - - - true - verdadero - - - false - falso - - - , has not been successfully broadcast yet - , todavía no se ha sido difundido satisfactoriamente - - - unknown - desconocido - - - - TransactionDescDialog - - Transaction details - Detalles de transacción - - - This pane shows a detailed description of the transaction - Esta ventana muestra información detallada sobre la transacción - - - - TransactionTableModel - - Date - Fecha - - - Type - Tipo - - - Open until %1 - Abierto hasta %1 - - - Confirmed (%1 confirmations) - Confirmado (%1 confirmaciones) - - - This block was not received by any other nodes and will probably not be accepted! - Este bloque no ha sido recibido por otros nodos y probablemente no sea aceptado! - - - Generated but not accepted - Generado pero no aceptado - - - Label - Etiqueta - - - Received with - Recibido con - - - Received from - Recibidos de - - - Sent to - Enviado a - - - Payment to yourself - Pago propio - - - Mined - Minado - - - (n/a) - (nd) - - - Transaction status. Hover over this field to show number of confirmations. - Estado de transacción. Pasa el ratón sobre este campo para ver el número de confirmaciones. - - - Date and time that the transaction was received. - Fecha y hora en que se recibió la transacción. - - - Type of transaction. - Tipo de transacción. - - - Amount removed from or added to balance. - Cantidad retirada o añadida al saldo. - - - - TransactionView - - All - Todo - - - Today - Hoy - - - This week - Esta semana - - - This month - Este mes - - - Last month - Mes pasado - - - This year - Este año - - - Range... - Rango... - - - Received with - Recibido con - - - Sent to - Enviado a - - - To yourself - A usted mismo - - - Mined - Minado - - - Other - Otra - - - Enter address or label to search - Introduzca una dirección o etiqueta que buscar - - - Min amount - Cantidad mínima - - - Copy address - Copiar dirección - - - Copy label - Copiar etiqueta - - - Copy amount - Copiar cantidad - - - Copy transaction ID - Copiar identificador de transacción - - - Edit label - Editar etiqueta - - - Show transaction details - Mostrar detalles de la transacción - - - Export Transaction History - Exportar historial de transacciones - - - Exporting Failed - Error exportando - - - There was an error trying to save the transaction history to %1. - Ha habido un error al intentar guardar la transacción con %1. - - - Exporting Successful - Exportación finalizada - - - The transaction history was successfully saved to %1. - La transacción ha sido guardada en %1. - - - Comma separated file (*.csv) - Archivos de columnas separadas por coma (*.csv) - - - Confirmed - Confirmado - - - Date - Fecha - - - Type - Tipo - - - Label - Etiqueta - - - Address - Dirección - - - ID - ID - - - Range: - Rango: - - - to - para - - - - UnitDisplayStatusBarControl - - - WalletFrame - - No wallet has been loaded. - No se ha cargado ningún monedero - - - - WalletModel - - Send Coins - Enviar monedas - - - - WalletView - - &Export - &Exportar - - - Export the data in the current tab to a file - Exportar a un archivo los datos de esta pestaña - - - Backup Wallet - Respaldo de monedero - - - Wallet Data (*.dat) - Datos de monedero (*.dat) - - - Backup Failed - Ha fallado el respaldo - - - There was an error trying to save the wallet data to %1. - Ha habido un error al intentar guardar los datos del monedero en %1. - - - The wallet data was successfully saved to %1. - Los datos del monedero se han guardado con éxito en %1. - - - Backup Successful - Se ha completado con éxito la copia de respaldo - - - - bitcoin-core - - Options: - Opciones: - - - - Specify data directory - Especificar directorio para los datos - - - Connect to a node to retrieve peer addresses, and disconnect - Conectar a un nodo para obtener direcciones de pares y desconectar - - - Specify your own public address - Especifique su propia dirección pública - - - Accept command line and JSON-RPC commands - Aceptar comandos consola y JSON-RPC - - - - Run in the background as a daemon and accept commands - Ejecutar en segundo plano como daemon y aceptar comandos - - - - Use the test network - Usar la red de pruebas - - - - Accept connections from outside (default: 1 if no -proxy or -connect) - Aceptar conexiones desde el exterior (predeterminado: 1 si no -proxy o -connect) - - - Bind to given address and always listen on it. Use [host]:port notation for IPv6 - Vincular a la dirección dada y escuchar siempre en ella. Utilice la notación [host]:port para IPv6 - - - Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) - Ejecutar comando cuando una transacción del monedero cambia (%s en cmd se remplazará por TxID) - - - This is a pre-release test build - use at your own risk - do not use for mining or merchant applications - Esta es una versión de pre-prueba - utilícela bajo su propio riesgo. No la utilice para usos comerciales o de minería. - - - Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. - Aviso: ¡-paytxfee tiene un valor muy alto! Esta es la comisión que pagará si envía una transacción. - - - Warning: The network does not appear to fully agree! Some miners appear to be experiencing issues. - Atención: ¡Parece que la red no está totalmente de acuerdo! Algunos mineros están presentando inconvenientes. - - - Warning: We do not appear to fully agree with our peers! You may need to upgrade, or other nodes may need to upgrade. - Atención: ¡Parece que no estamos completamente de acuerdo con nuestros pares! Podría necesitar una actualización, u otros nodos podrían necesitarla. - - - Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. - Aviso: ¡Error al leer wallet.dat! Todas las claves se han leído correctamente, pero podrían faltar o ser incorrectos los datos de transacciones o las entradas de la libreta de direcciones. - - - 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. - Aviso: ¡Recuperados datos de wallet.dat corrupto! El wallet.dat original se ha guardado como wallet.{timestamp}.bak en %s; si hubiera errores en su saldo o transacciones, deberá restaurar una copia de seguridad. - - - <category> can be: - <category> puede ser: - - - Attempt to recover private keys from a corrupt wallet.dat - Intento de recuperar claves privadas de un wallet.dat corrupto - - - Block creation options: - Opciones de creación de bloques: - - - Connect only to the specified node(s) - Conectar sólo a los nodos (o nodo) especificados - - - Corrupted block database detected - Corrupción de base de datos de bloques detectada. - - - Do you want to rebuild the block database now? - ¿Quieres reconstruir la base de datos de bloques ahora? - - - Error initializing block database - Error al inicializar la base de datos de bloques - - - Error initializing wallet database environment %s! - Error al inicializar el entorno de la base de datos del monedero %s - - - Error loading block database - Error cargando base de datos de bloques - - - Error opening block database - Error al abrir base de datos de bloques. - - - Error: Disk space is low! - Error: ¡Espacio en disco bajo! - - - Failed to listen on any port. Use -listen=0 if you want this. - Ha fallado la escucha en todos los puertos. Use -listen=0 si desea esto. - - - If <category> is not supplied, output all debugging information. - Si no se proporciona <category>, mostrar toda la depuración - - - Incorrect or no genesis block found. Wrong datadir for network? - Incorrecto o bloque de génesis no encontrado. Datadir equivocada para la red? - - - Invalid -onion address: '%s' - Dirección -onion inválida: '%s' - - - Not enough file descriptors available. - No hay suficientes descriptores de archivo disponibles. - - - Set maximum block size in bytes (default: %d) - Establecer tamaño máximo de bloque en bytes (por defecto: %d) - - - Specify wallet file (within data directory) - Especificar archivo de monedero (dentro del directorio de datos) - - - Verifying blocks... - Verificando bloques... - - - Verifying wallet... - Verificando monedero... - - - Wallet %s resides outside data directory %s - El monedero %s se encuentra fuera del directorio de datos %s - - - You need to rebuild the database using -reindex to change -txindex - Usted necesita reconstruir la base de datos utilizando -reindex para cambiar -txindex - - - Imports blocks from external blk000??.dat file - Importa los bloques desde un archivo blk000??.dat externo - - - Execute command when a relevant alert is received or we see a really long fork (%s in cmd is replaced by message) - Ejecutar un comando cuando se reciba una alerta importante o cuando veamos un fork demasiado largo (%s en cmd se reemplazará por el mensaje) - - - Set maximum size of high-priority/low-fee transactions in bytes (default: %d) - Establecer tamaño máximo de las transacciones de alta prioridad/comisión baja en bytes (por defecto: %d) - - - Choose data directory on startup (default: 0) - Elegir directorio de datos al iniciar (predeterminado: 0) - - - Information - Información - - - Invalid amount for -minrelaytxfee=<amount>: '%s' - Inválido por el monto -minrelaytxfee=<amount>: '%s' - - - Invalid amount for -mintxfee=<amount>: '%s' - Inválido por el monto -mintxfee=<amount>: '%s' - - - RPC SSL options: (see the Bitcoin Wiki for SSL setup instructions) - Opciones RPC SSL: (Vea la Wiki de Bitcoin para las instrucciones de la configuración de SSL) - - - RPC server options: - Opciones del sservidor RPC: - - - Send trace/debug info to console instead of debug.log file - Enviar información de trazas/depuración a la consola en lugar de al archivo debug.log - - - Set language, for example "de_DE" (default: system locale) - Establecer el idioma, por ejemplo, "es_ES" (predeterminado: configuración regional del sistema) - - - Show all debugging options (usage: --help -help-debug) - Mostrar todas las opciones de depuración (uso: --help -help-debug) - - - Show splash screen on startup (default: 1) - Mostrar pantalla de bienvenida en el inicio (predeterminado: 1) - - - Shrink debug.log file on client startup (default: 1 when no -debug) - Reducir el archivo debug.log al iniciar el cliente (predeterminado: 1 sin -debug) - - - Signing transaction failed - Transacción falló - - - Start minimized - Arrancar minimizado - - - Transaction amount too small - Monto de la transacción muy pequeño - - - Transaction amounts must be positive - Montos de transacciones deben ser positivos - - - Transaction too large - Transacción demasiado grande - - - Use UPnP to map the listening port (default: 1 when listening) - Usar UPnP para asignar el puerto de escucha (predeterminado: 1 al escuchar) - - - Username for JSON-RPC connections - Nombre de usuario para las conexiones JSON-RPC - - - - Warning - Aviso - - - on startup - al iniciar - - - wallet.dat corrupt, salvage failed - wallet.dat corrupto. Ha fallado la recuperación. - - - Password for JSON-RPC connections - Contraseña para las conexiones JSON-RPC - - - - Execute command when the best block changes (%s in cmd is replaced by block hash) - Ejecutar un comando cuando cambia el mejor bloque (%s en cmd se sustituye por el hash de bloque) - - - Upgrade wallet to latest format - Actualizar el monedero al último formato - - - Rescan the block chain for missing wallet transactions - Volver a examinar la cadena de bloques en busca de transacciones del monedero perdidas - - - Use OpenSSL (https) for JSON-RPC connections - Usar OpenSSL (https) para las conexiones JSON-RPC - - - - This help message - Este mensaje de ayuda - - - - Allow DNS lookups for -addnode, -seednode and -connect - Permitir búsquedas DNS para -addnode, -seednode y -connect - - - Loading addresses... - Cargando direcciones... - - - Error loading wallet.dat: Wallet corrupted - Error al cargar wallet.dat: el monedero está dañado - - - Error loading wallet.dat - Error al cargar wallet.dat - - - Invalid -proxy address: '%s' - Dirección -proxy inválida: '%s' - - - Unknown network specified in -onlynet: '%s' - La red especificada en -onlynet '%s' es desconocida - - - Cannot resolve -bind address: '%s' - No se puede resolver la dirección de -bind: '%s' - - - Cannot resolve -externalip address: '%s' - No se puede resolver la dirección de -externalip: '%s' - - - Invalid amount for -paytxfee=<amount>: '%s' - Cantidad inválida para -paytxfee=<amount>: '%s' - - - Insufficient funds - Fondos insuficientes - - - Loading block index... - Cargando el índice de bloques... - - - Add a node to connect to and attempt to keep the connection open - Añadir un nodo al que conectarse y tratar de mantener la conexión abierta - - - Loading wallet... - Cargando monedero... - - - Cannot downgrade wallet - No se puede rebajar el monedero - - - Cannot write default address - No se puede escribir la dirección predeterminada - - - Rescanning... - Reexplorando... - - - Done loading - Generado pero no aceptado - - - Error - Error - - - \ No newline at end of file diff --git a/src/qt/locale/bitcoin_es_MX.ts b/src/qt/locale/bitcoin_es_MX.ts deleted file mode 100644 index d6af5222f..000000000 --- a/src/qt/locale/bitcoin_es_MX.ts +++ /dev/null @@ -1,1094 +0,0 @@ - - - AddressBookPage - - Create a new address - Crear una dirección nueva - - - &New - &Nuevo - - - Copy the currently selected address to the system clipboard - Copiar el domicilio seleccionado al portapapeles del sistema - - - &Copy - &Copiar - - - C&lose - Cerrar - - - &Copy Address - &Copiar dirección - - - Delete the currently selected address from the list - Eliminar la dirección actualmente seleccionada de la lista - - - Export the data in the current tab to a file - Exportar la información en la tabla actual a un archivo - - - &Export - &Exportar - - - &Delete - &Borrar - - - Choose the address to send coins to - Elija una dirección a la cual enviar monedas - - - Choose the address to receive coins with - Elija la dirección con la cual recibir monedas - - - C&hoose - Elegir - - - Sending addresses - Enviando direcciones - - - Receiving addresses - Recibiendo direcciones - - - These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins. - Estas son tus direcciones de Bitcoin para enviar pagos. Siempre revise la cantidad y la dirección receptora antes de enviar monedas - - - These are your Bitcoin addresses for receiving payments. It is recommended to use a new receiving address for each transaction. - Estas son tus direcciones Bitcoin para recibir pagos. Es recomendado usar una nueva dirección receptora para cada transacción. - - - Copy &Label - Copiar &Etiqueta - - - &Edit - &Editar - - - Export Address List - Exportar Lista de direcciones - - - Comma separated file (*.csv) - Arhchivo separado por comas (*.CSV) - - - Exporting Failed - Exportación fallida - - - - AddressTableModel - - Label - Etiqueta - - - Address - Domicilio - - - (no label) - (sin etiqueta) - - - - AskPassphraseDialog - - Enter passphrase - Ingrese la contraseña - - - New passphrase - Nueva contraseña - - - Repeat new passphrase - Repita la nueva contraseña - - - Encrypt wallet - Encriptar cartera. - - - This operation needs your wallet passphrase to unlock the wallet. - Esta operación necesita la contraseña de su cartera para desbloquear su cartera. - - - Unlock wallet - Desbloquear cartera. - - - This operation needs your wallet passphrase to decrypt the wallet. - Esta operación necesita la contraseña de su cartera para desencriptar su cartera. - - - Decrypt wallet - Desencriptar cartera - - - Change passphrase - Cambiar contraseña - - - Confirm wallet encryption - Confirmar la encriptación de cartera - - - Warning: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR BITCOINS</b>! - Advertencia: Si encripta su cartera y pierde su contraseña, <b>PERDERà TODOS SUS BITCOINS</b>! - - - Are you sure you wish to encrypt your wallet? - ¿Está seguro que desea encriptar su cartera? - - - Warning: The Caps Lock key is on! - Advertencia: ¡La tecla Bloq Mayus está activada! - - - Wallet encrypted - Cartera encriptada - - - Wallet encryption failed - Encriptación de la cartera fallida - - - Wallet encryption failed due to an internal error. Your wallet was not encrypted. - La encriptación de la cartera falló debido a un error interno. Su cartera no fue encriptada. - - - The supplied passphrases do not match. - Las contraseñas dadas no coinciden - - - Wallet unlock failed - El desbloqueo de la cartera falló - - - The passphrase entered for the wallet decryption was incorrect. - La contraseña ingresada para la desencriptación de la cartera es incorrecto - - - Wallet decryption failed - La desencriptación de la cartera fallo - - - Wallet passphrase was successfully changed. - La contraseña de la cartera ha sido exitosamente cambiada. - - - - BitcoinGUI - - Sign &message... - Sign &mensaje - - - Synchronizing with network... - Sincronizando con la red... - - - &Overview - &Vista previa - - - Node - Nodo - - - Show general overview of wallet - Mostrar la vista previa general de la cartera - - - &Transactions - &Transacciones - - - Browse transaction history - Explorar el historial de transacciones - - - E&xit - S&alir - - - Quit application - Salir de la aplicación - - - About &Qt - Acerca de &Qt - - - Show information about Qt - Mostrar información acerca de Qt - - - &Options... - &Opciones - - - &Encrypt Wallet... - &Encriptar cartera - - - &Backup Wallet... - &Respaldar cartera - - - &Change Passphrase... - &Cambiar contraseña... - - - &Sending addresses... - &Enviando direcciones... - - - &Receiving addresses... - &Recibiendo direcciones... - - - Open &URI... - Abrir &URL... - - - Importing blocks from disk... - Importando bloques desde el disco... - - - Reindexing blocks on disk... - Reindexando bloques en el disco... - - - Send coins to a Bitcoin address - Enviar monedas a una dirección Bitcoin - - - Backup wallet to another location - Respaldar cartera en otra ubicación - - - Change the passphrase used for wallet encryption - Cambiar la contraseña usada para la encriptación de la cartera - - - &Debug window - &Depurar ventana - - - Open debugging and diagnostic console - Abrir la consola de depuración y disgnostico - - - &Verify message... - &Verificar mensaje... - - - &File - &Archivo - - - &Settings - &Configuraciones - - - &Help - &Ayuda - - - Tabs toolbar - Pestañas - - - Bitcoin Core - nucleo Bitcoin - - - &Command-line options - opciones de la &Linea de comandos - - - Show the Bitcoin Core help message to get a list with possible Bitcoin command-line options - Mostrar mensaje de ayuda del nucleo de Bitcoin para optener una lista con los posibles comandos de Bitcoin - - - Up to date - Actualizado al dia - - - Catching up... - Resiviendo... - - - Sent transaction - Enviar Transacción - - - Incoming transaction - Transacción entrante - - - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - La cartera esta <b>encriptada</b> y <b>desbloqueada</b> actualmente - - - Wallet is <b>encrypted</b> and currently <b>locked</b> - La cartera esta <b>encriptada</b> y <b>bloqueada</b> actualmente - - - - ClientModel - - - CoinControlDialog - - Bytes: - Bytes: - - - Amount: - Monto: - - - Priority: - Prioridad: - - - Fee: - Cuota: - - - Amount - Monto - - - Date - Fecha - - - Confirmed - Confirmado - - - Copy address - Copiar dirección - - - Copy label - Copiar capa - - - Copy amount - copiar monto - - - Copy quantity - copiar cantidad - - - Copy fee - copiar cuota - - - Copy after fee - copiar despues de cuota - - - Copy bytes - copiar bytes - - - Copy priority - copiar prioridad - - - Copy change - copiar cambio - - - (no label) - (sin etiqueta) - - - - EditAddressDialog - - Edit Address - Editar dirección - - - &Label - &Etiqueta - - - &Address - &Dirección - - - New receiving address - Nueva dirección de entregas - - - New sending address - Nueva dirección de entregas - - - Edit receiving address - Editar dirección de entregas - - - Edit sending address - Editar dirección de envios - - - The entered address "%1" is already in the address book. - El domicilio ingresado "%1" ya existe en la libreta de direcciones - - - Could not unlock wallet. - No se puede desbloquear la cartera - - - New key generation failed. - La generación de la nueva clave fallo - - - - FreespaceChecker - - - HelpMessageDialog - - Bitcoin Core - nucleo Bitcoin - - - version - Versión - - - (%1-bit) - (%1-bit) - - - About Bitcoin Core - Acerca de Bitcoin Core - - - Usage: - Uso: - - - command-line options - Opciones de comando de lineas - - - - Intro - - Bitcoin Core - nucleo Bitcoin - - - - OpenURIDialog - - - OptionsDialog - - Options - Opciones - - - Active command-line options that override above options: - Activar las opciones de linea de comando que sobre escriben las siguientes opciones: - - - - OverviewPage - - Form - Formulario - - - - PaymentServer - - - PeerTableModel - - - QObject - - Amount - Monto - - - - QRImageWidget - - - RPCConsole - - - ReceiveCoinsDialog - - &Label: - &Etiqueta - - - An optional message to attach to the payment request, which will be displayed when the request is opened. Note: The message will not be sent with the payment over the Bitcoin network. - Mensaje opcional para agregar a la solicitud de pago, el cual será mostrado cuando la solicitud este abierta. Nota: El mensaje no se manda con el pago a travéz de la red de Bitcoin. - - - Use this form to request payments. All fields are <b>optional</b>. - Use este formulario para la solicitud de pagos. Todos los campos son <b>opcionales</b> - - - An optional amount to request. Leave this empty or zero to not request a specific amount. - Monto opcional a solicitar. Dejarlo vacion o en cero no solicita un monto especifico. - - - Copy label - Copiar capa - - - Copy amount - copiar monto - - - - ReceiveRequestDialog - - Address - Domicilio - - - Amount - Monto - - - Label - Etiqueta - - - - RecentRequestsTableModel - - Date - Fecha - - - Label - Etiqueta - - - Amount - Monto - - - (no label) - (sin etiqueta) - - - - SendCoinsDialog - - Send Coins - Mandar monedas - - - Bytes: - Bytes: - - - Amount: - Monto: - - - Priority: - Prioridad: - - - Fee: - Cuota: - - - Send to multiple recipients at once - Enviar a múltiples receptores a la vez - - - Balance: - Saldo: - - - Confirm the send action - Confirme la acción de enviar - - - Confirm send coins - Confirme para mandar monedas - - - Copy quantity - copiar cantidad - - - Copy amount - copiar monto - - - Copy fee - copiar cuota - - - Copy after fee - copiar despues de cuota - - - Copy bytes - copiar bytes - - - Copy priority - copiar prioridad - - - Copy change - copiar cambio - - - or - o - - - The amount to pay must be larger than 0. - El monto a pagar debe ser mayor a 0 - - - Transaction creation failed! - ¡La creación de transacion falló! - - - 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. - ¡La transación fue rechazada! Esto puede ocurrir si algunas de tus monedas en tu cartera han sido gastadas, al igual que si usas una cartera copiada y la monedas fueron gastadas en la copia pero no se marcaron como gastadas. - - - Warning: Invalid Bitcoin address - Advertencia: Dirección de Bitcoin invalida - - - (no label) - (sin etiqueta) - - - Warning: Unknown change address - Advertencia: Cambio de dirección desconocido - - - - SendCoinsEntry - - A&mount: - M&onto - - - Pay &To: - Pagar &a: - - - Enter a label for this address to add it to your address book - Ingrese una etiqueta para esta dirección para agregarlo en su libreta de direcciones. - - - &Label: - &Etiqueta - - - This is a normal payment. - Este es un pago normal - - - Alt+A - Alt+A - - - Paste address from clipboard - Pegar dirección del portapapeles - - - Alt+P - Alt+P - - - Remove this entry - Quitar esta entrada - - - Message: - Mensaje: - - - Pay To: - Pago para: - - - - ShutdownWindow - - Bitcoin Core is shutting down... - Apagando el nucleo de Bitcoin... - - - Do not shut down the computer until this window disappears. - No apague su computadora hasta que esta ventana desaparesca. - - - - SignVerifyMessageDialog - - Alt+A - Alt+A - - - Paste address from clipboard - Pegar dirección del portapapeles - - - Alt+P - Alt+P - - - - SplashScreen - - Bitcoin Core - nucleo Bitcoin - - - The Bitcoin Core developers - Los desarrolladores de Bitcoin Core - - - - TrafficGraphWidget - - - TransactionDesc - - Open until %1 - Abrir hasta %1 - - - %1/unconfirmed - %1/No confirmado - - - %1 confirmations - %1 confirmaciones - - - Date - Fecha - - - Transaction ID - ID - - - Amount - Monto - - - , has not been successfully broadcast yet - , no ha sido transmitido aun - - - unknown - desconocido - - - - TransactionDescDialog - - Transaction details - Detalles de la transacción - - - This pane shows a detailed description of the transaction - Este panel muestras una descripción detallada de la transacción - - - - TransactionTableModel - - Date - Fecha - - - Type - Tipo - - - Open until %1 - Abrir hasta %1 - - - Confirmed (%1 confirmations) - Confimado (%1 confirmaciones) - - - This block was not received by any other nodes and will probably not be accepted! - Este bloque no fue recibido por ningun nodo y probablemente no fue aceptado ! - - - Generated but not accepted - Generado pero no aprovado - - - Label - Etiqueta - - - Received with - Recivido con - - - Sent to - Enviar a - - - Payment to yourself - Pagar a si mismo - - - Mined - Minado - - - (n/a) - (n/a) - - - Date and time that the transaction was received. - Fecha y hora en que la transacción fue recibida - - - Type of transaction. - Escriba una transacción - - - Amount removed from or added to balance. - Cantidad removida del saldo o agregada - - - - TransactionView - - All - Todo - - - Today - Hoy - - - This week - Esta semana - - - This month - Este mes - - - Last month - El mes pasado - - - This year - Este año - - - Received with - Recivido con - - - Sent to - Enviar a - - - To yourself - Para ti mismo - - - Mined - Minado - - - Other - Otro - - - Enter address or label to search - Ingrese dirección o capa a buscar - - - Min amount - Monto minimo - - - Copy address - Copiar dirección - - - Copy label - Copiar capa - - - Copy amount - copiar monto - - - Edit label - Editar capa - - - Export Transaction History - Exportar el historial de transacción - - - Exporting Failed - Exportación fallida - - - There was an error trying to save the transaction history to %1. - Ocurrio un error intentando guardar el historial de transaciones a %1 - - - Exporting Successful - Exportacion satisfactoria - - - Comma separated file (*.csv) - Arhchivo separado por comas (*.CSV) - - - Confirmed - Confirmado - - - Date - Fecha - - - Type - Tipo - - - Label - Etiqueta - - - Address - Domicilio - - - ID - ID - - - to - Para - - - - UnitDisplayStatusBarControl - - - WalletFrame - - No wallet has been loaded. - No se há cargado la cartera. - - - - WalletModel - - Send Coins - Mandar monedas - - - - WalletView - - &Export - &Exportar - - - Export the data in the current tab to a file - Exportar la información en la tabla actual a un archivo - - - There was an error trying to save the wallet data to %1. - Ocurrio un error tratando de guardar la información de la cartera %1 - - - - bitcoin-core - - <category> can be: - <categoria> puede ser: - - - Wallet options: - Opciones de cartera: - - - Choose data directory on startup (default: 0) - Escojer el directorio de información al iniciar (por defecto : 0) - - - Set language, for example "de_DE" (default: system locale) - Definir idioma, por ejemplo "de_DE" (por defecto: Sistema local) - - - Show splash screen on startup (default: 1) - Mostrar pantalla de arraque al iniciar (por defecto: 1) - - - Start minimized - Iniciar minimizado - - - Loading addresses... - Cargando direcciones... - - - Loading block index... - Cargando indice de bloques... - - - Loading wallet... - Cargando billetera... - - - Done loading - Carga completa - - - \ No newline at end of file diff --git a/src/qt/locale/bitcoin_es_UY.ts b/src/qt/locale/bitcoin_es_UY.ts deleted file mode 100644 index bb9946661..000000000 --- a/src/qt/locale/bitcoin_es_UY.ts +++ /dev/null @@ -1,470 +0,0 @@ - - - AddressBookPage - - Create a new address - Crear una nueva dirección - - - Copy the currently selected address to the system clipboard - Copia la dirección seleccionada al portapapeles del sistema - - - &Delete - &Borrar - - - Comma separated file (*.csv) - Archivos separados por coma (*.csv) - - - - AddressTableModel - - Label - Etiqueta - - - Address - Direccion - - - (no label) - (Sin etiqueta) - - - - AskPassphraseDialog - - Enter passphrase - Escriba la contraseña - - - New passphrase - Nueva contraseña - - - Repeat new passphrase - Repetir nueva contraseña - - - Encrypt wallet - Monedero cifrado - - - This operation needs your wallet passphrase to unlock the wallet. - Esta operacion necesita la contraseña del monedero para desbloquear el mismo - - - Unlock wallet - Monedero destrabado - - - This operation needs your wallet passphrase to decrypt the wallet. - Esta operacion necesita la contraseña del monedero para descifrar el mismo - - - Decrypt wallet - Monedero descifrado - - - Change passphrase - Cambiar contraseña - - - Confirm wallet encryption - Confirme el cifrado del monedero - - - Wallet encrypted - Monedero cifrado - - - Wallet encryption failed - Fallo en el cifrado del monedero - - - Wallet encryption failed due to an internal error. Your wallet was not encrypted. - Fallo en el cifrado del monedero a causa de un error interno. Su monedero no esta cifrado - - - The supplied passphrases do not match. - Las contraseñas suministradas no coinciden. - - - Wallet unlock failed - Fallo en el desbloqueo del mondero - - - The passphrase entered for the wallet decryption was incorrect. - La contraseña introducida para el descifrado del monedero es incorrecta. - - - Wallet decryption failed - Fallo en el descifrado del monedero - - - - BitcoinGUI - - Synchronizing with network... - Sincronizando con la red... - - - &Overview - &Vista previa - - - Show general overview of wallet - Mostrar descripción general del monedero - - - &Transactions - &transaciones - - - Browse transaction history - Buscar en el historial de transacciones - - - Quit application - Salir de la aplicacion - - - &Options... - &Opciones... - - - Change the passphrase used for wallet encryption - Cambie la clave utilizada para el cifrado del monedero - - - &File - &Archivo - - - &Settings - &Configuracion - - - &Help - &Ayuda - - - Tabs toolbar - Barra de herramientas - - - Up to date - A la fecha - - - Catching up... - Ponerse al dia... - - - Sent transaction - Transaccion enviada - - - Incoming transaction - Transacción entrante - - - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - El Monedero esta <b>cifrado</b> y actualmente <b>desbloqueado</b> - - - Wallet is <b>encrypted</b> and currently <b>locked</b> - El Monedero esta <b>cifrado</b> y actualmente <b>bloqueado</b> - - - - ClientModel - - - CoinControlDialog - - Date - Fecha - - - (no label) - (Sin etiqueta) - - - - EditAddressDialog - - Edit Address - Editar dirección - - - &Label - &Etiqueta - - - &Address - &Direccion - - - New receiving address - Nueva dirección de recepción - - - New sending address - Nueva dirección de envío - - - Edit receiving address - Editar dirección de recepcion - - - Edit sending address - Editar dirección de envío - - - Could not unlock wallet. - No se puede abrir el monedero. - - - New key generation failed. - Fallo en la nueva clave generada. - - - - FreespaceChecker - - - HelpMessageDialog - - - Intro - - - OpenURIDialog - - - OptionsDialog - - Options - Opciones - - - - OverviewPage - - Form - Formulario - - - - PaymentServer - - - PeerTableModel - - - QObject - - - QRImageWidget - - - RPCConsole - - - ReceiveCoinsDialog - - &Label: - &Etiqueta: - - - - ReceiveRequestDialog - - Address - Direccion - - - Label - Etiqueta - - - - RecentRequestsTableModel - - Date - Fecha - - - Label - Etiqueta - - - (no label) - (Sin etiqueta) - - - - SendCoinsDialog - - Send Coins - Enviar monedas - - - Send to multiple recipients at once - Enviar a varios destinatarios a la vez - - - Balance: - Balance: - - - Confirm the send action - Confirmar el envío - - - Confirm send coins - Confirmar el envio de monedas - - - The amount to pay must be larger than 0. - La cantidad a pagar debe ser mayor que 0. - - - (no label) - (Sin etiqueta) - - - - SendCoinsEntry - - A&mount: - A&Monto: - - - Pay &To: - Pagar &A: - - - Enter a label for this address to add it to your address book - Introduzca una etiqueta para esta dirección para añadirla a su libreta de direcciones - - - &Label: - &Etiqueta: - - - Alt+A - Alt+A - - - Paste address from clipboard - Pegar la dirección desde el portapapeles - - - Alt+P - Alt+P - - - - ShutdownWindow - - - SignVerifyMessageDialog - - Alt+A - Alt+A - - - Paste address from clipboard - Pegar la dirección desde el portapapeles - - - Alt+P - Alt+P - - - - SplashScreen - - [testnet] - [prueba_de_red] - - - - TrafficGraphWidget - - - TransactionDesc - - Open until %1 - Abrir hasta %1 - - - Date - Fecha - - - unknown - desconocido - - - - TransactionDescDialog - - - TransactionTableModel - - Date - Fecha - - - Open until %1 - Abrir hasta %1 - - - Label - Etiqueta - - - - TransactionView - - Comma separated file (*.csv) - Archivos separados por coma (*.csv) - - - Date - Fecha - - - Label - Etiqueta - - - Address - Direccion - - - - UnitDisplayStatusBarControl - - - WalletFrame - - - WalletModel - - Send Coins - Enviar monedas - - - - WalletView - - - bitcoin-core - - \ No newline at end of file diff --git a/src/qt/locale/bitcoin_et.ts b/src/qt/locale/bitcoin_et.ts deleted file mode 100644 index c746107bc..000000000 --- a/src/qt/locale/bitcoin_et.ts +++ /dev/null @@ -1,1920 +0,0 @@ - - - AddressBookPage - - Create a new address - Loo uus aadress - - - &New - &Uus - - - Copy the currently selected address to the system clipboard - Kopeeri märgistatud aadress vahemällu - - - &Copy - &Kopeeri - - - C&lose - S&ulge - - - &Copy Address - &Kopeeri Aadress - - - Delete the currently selected address from the list - Kustuta märgistatud aadress loetelust - - - Export the data in the current tab to a file - Ekspordi kuvatava vahelehe sisu faili - - - &Export - &Ekspordi - - - &Delete - &Kustuta - - - C&hoose - V&ali - - - These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins. - Need on sinu Bitcoini aadressid maksete saatmiseks. Müntide saatmisel kontrolli alati summat ning saaja aadressi. - - - Copy &Label - &Märgise kopeerimine - - - &Edit - &Muuda - - - Comma separated file (*.csv) - Komaeraldatud fail (*.csv) - - - Exporting Failed - Eksportimine Ebaõnnestus - - - - AddressTableModel - - Label - Silt - - - Address - Aadress - - - (no label) - (silti pole) - - - - AskPassphraseDialog - - Passphrase Dialog - Salafraasi dialoog - - - Enter passphrase - Sisesta salafraas - - - New passphrase - Uus salafraas - - - Repeat new passphrase - Korda salafraasi - - - Encrypt wallet - Krüpteeri rahakott - - - This operation needs your wallet passphrase to unlock the wallet. - See toiming nõuab sinu rahakoti salafraasi. - - - Unlock wallet - Tee rahakott lukust lahti. - - - This operation needs your wallet passphrase to decrypt the wallet. - See toiming nõuab sinu rahakoti salafraasi. - - - Decrypt wallet - Dekrüpteeri rahakott. - - - Change passphrase - Muuda salafraasi - - - Confirm wallet encryption - Kinnita rahakoti krüpteering - - - Warning: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR BITCOINS</b>! - Hoiatus: Kui sa kaotad oma, rahakoti krüpteerimisel kasutatud, salafraasi, siis <b>KAOTAD KA KÕIK OMA BITCOINID</b>! - - - Are you sure you wish to encrypt your wallet? - Kas soovid oma rahakoti krüpteerida? - - - 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. - TÄHTIS: Kõik varasemad rahakoti varundfailid tuleks üle kirjutada äsja loodud krüpteeritud rahakoti failiga. Turvakaalutlustel tühistatakse krüpteerimata rahakoti failid alates uue, krüpteeritud rahakoti, kasutusele võtust. - - - Warning: The Caps Lock key is on! - Hoiatus: Caps Lock on sisse lülitatud! - - - Wallet encrypted - Rahakott krüpteeritud - - - Wallet encryption failed - Tõrge rahakoti krüpteerimisel - - - Wallet encryption failed due to an internal error. Your wallet was not encrypted. - Rahakoti krüpteering ebaõnnestus tõrke tõttu. Sinu rahakotti ei krüpteeritud. - - - The supplied passphrases do not match. - Salafraasid ei kattu. - - - Wallet unlock failed - Rahakoti avamine ebaõnnestus - - - The passphrase entered for the wallet decryption was incorrect. - Rahakoti salafraas ei ole õige. - - - Wallet decryption failed - Rahakoti dekrüpteerimine ei õnnestunud - - - Wallet passphrase was successfully changed. - Rahakoti salafraasi muutmine õnnestus. - - - - BitcoinGUI - - Sign &message... - Signeeri &sõnum - - - Synchronizing with network... - Võrgusünkimine... - - - &Overview - &Ülevaade - - - Show general overview of wallet - Kuva rahakoti üld-ülevaade - - - &Transactions - &Tehingud - - - Browse transaction history - Sirvi tehingute ajalugu - - - E&xit - V&älju - - - Quit application - Väljumine - - - About &Qt - Teave &Qt kohta - - - Show information about Qt - Kuva Qt kohta käiv info - - - &Options... - &Valikud... - - - &Encrypt Wallet... - &Krüpteeri Rahakott - - - &Backup Wallet... - &Varunda Rahakott - - - &Change Passphrase... - &Salafraasi muutmine - - - Open &URI... - Ava &URI... - - - Importing blocks from disk... - Impordi blokid kettalt... - - - Reindexing blocks on disk... - Kettal olevate blokkide re-indekseerimine... - - - Send coins to a Bitcoin address - Saada münte Bitcoini aadressile - - - Backup wallet to another location - Varunda rahakott teise asukohta - - - Change the passphrase used for wallet encryption - Rahakoti krüpteerimise salafraasi muutmine - - - &Debug window - &Debugimise aken - - - Open debugging and diagnostic console - Ava debugimise ja diagnostika konsool - - - &Verify message... - &Kontrolli sõnumit... - - - Bitcoin - Bitcoin - - - Wallet - Rahakott - - - &Send - &Saada - - - &Receive - &Saama - - - &Show / Hide - &Näita / Peida - - - Show or hide the main Window - Näita või peida peaaken - - - Encrypt the private keys that belong to your wallet - Krüpteeri oma rahakoti privaatvõtmed - - - Sign messages with your Bitcoin addresses to prove you own them - Omandi tõestamiseks allkirjasta sõnumid oma Bitcoini aadressiga - - - Verify messages to ensure they were signed with specified Bitcoin addresses - Kinnita sõnumid kindlustamaks et need allkirjastati määratud Bitcoini aadressiga - - - &File - &Fail - - - &Settings - &Seaded - - - &Help - &Abi - - - Tabs toolbar - Vahelehe tööriistariba - - - Bitcoin Core - Bitcoini tuumik - - - %n hour(s) - %n tund%n tundi - - - %n day(s) - %n päev%n päeva - - - %n week(s) - %n nädal%n nädalat - - - %1 and %2 - %1 ja %2 - - - %n year(s) - %n aasta%n aastat - - - %1 behind - %1 maas - - - Last received block was generated %1 ago. - Viimane saabunud blokk loodi %1 tagasi. - - - Transactions after this will not yet be visible. - Peale seda ei ole tehingud veel nähtavad. - - - Error - Tõrge - - - Warning - Hoiatus - - - Information - Informatsioon - - - Up to date - Ajakohane - - - Catching up... - Jõuan... - - - Date: %1 - - Kuupäev: %1 - - - - Amount: %1 - - Summa: %1 - - - - Type: %1 - - Tüüp: %1 - - - - Label: %1 - - &Märgis: %1 - - - - Address: %1 - - Aadress: %1 - - - - Sent transaction - Saadetud tehing - - - Incoming transaction - Sisenev tehing - - - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - Rahakott on <b>krüpteeritud</b> ning hetkel <b>avatud</b> - - - Wallet is <b>encrypted</b> and currently <b>locked</b> - Rahakott on <b>krüpteeritud</b> ning hetkel <b>suletud</b> - - - - ClientModel - - Network Alert - Võrgu Häire - - - - CoinControlDialog - - Quantity: - Kogus: - - - Amount: - Summa: - - - Fee: - Tasu: - - - Amount - Kogus - - - Date - Kuupäev - - - Confirmed - Kinnitatud - - - Copy address - Aadressi kopeerimine - - - Copy label - Märgise kopeerimine - - - Copy amount - Kopeeri summa - - - Copy transaction ID - Kopeeri tehingu ID - - - Copy fee - Kopeeri tasu - - - highest - kõrgeim - - - higher - kõrgem - - - high - kõrge - - - medium - keskmine - - - low - madal - - - lower - madalam - - - lowest - madalaim - - - (%1 locked) - (%1 lukustatud) - - - yes - jah - - - no - ei - - - (no label) - (silti pole) - - - - EditAddressDialog - - Edit Address - Muuda aadressi - - - &Label - &Märgis - - - &Address - &Aadress - - - New receiving address - Uus sissetulev aadress - - - New sending address - Uus väljaminev aadress - - - Edit receiving address - Sissetulevate aadresside muutmine - - - Edit sending address - Väljaminevate aadresside muutmine - - - The entered address "%1" is already in the address book. - Selline aadress on juba olemas: "%1" - - - The entered address "%1" is not a valid Bitcoin address. - Sisestatud aadress "%1" ei ole Bitcoinis kehtiv. - - - Could not unlock wallet. - Rahakotti ei avatud - - - New key generation failed. - Tõrge uue võtme loomisel. - - - - FreespaceChecker - - name - nimi - - - - HelpMessageDialog - - Bitcoin Core - Bitcoini tuumik - - - version - versioon - - - About Bitcoin Core - Kirjeldus Bitcoini Tuumast - - - Command-line options - Käsurea valikud - - - Usage: - Kasutus: - - - command-line options - käsurea valikud - - - - Intro - - Welcome - Teretulemast - - - Bitcoin Core - Bitcoini tuumik - - - Error - Tõrge - - - - OpenURIDialog - - Open URI - Ava URI - - - URI: - URI: - - - - OptionsDialog - - Options - Valikud - - - MB - MB - - - Reset all client options to default. - Taasta kõik klientprogrammi seadete vaikeväärtused. - - - &Reset Options - &Lähtesta valikud - - - &Network - &Võrk - - - W&allet - R&ahakott - - - Expert - Ekspert - - - Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled. - Bitcoini kliendi pordi automaatne avamine ruuteris. Toimib, kui sinu ruuter aktsepteerib UPnP ühendust. - - - Map port using &UPnP - Suuna port &UPnP kaudu - - - Proxy &IP: - Proxi &IP: - - - &Port: - &Port: - - - Port of the proxy (e.g. 9050) - Proxi port (nt 9050) - - - &Window - &Aken - - - Show only a tray icon after minimizing the window. - Minimeeri systray alale. - - - &Minimize to the tray instead of the taskbar - &Minimeeri systray alale - - - M&inimize on close - M&inimeeri sulgemisel - - - &Display - &Kuva - - - User Interface &language: - Kasutajaliidese &keel: - - - &Unit to show amounts in: - Summade kuvamise &Unit: - - - Choose the default subdivision unit to show in the interface and when sending coins. - Vali liideses ning müntide saatmisel kuvatav vaikimisi alajaotus. - - - &OK - &OK - - - &Cancel - &Katkesta - - - default - vaikeväärtus - - - Confirm options reset - Kinnita valikute algseadistamine - - - The supplied proxy address is invalid. - Sisestatud kehtetu proxy aadress. - - - - OverviewPage - - Form - Vorm - - - The displayed information may be out of date. Your wallet automatically synchronizes with the Bitcoin network after a connection is established, but this process has not completed yet. - Kuvatav info ei pruugi olla ajakohane. Ühenduse loomisel süngitakse sinu rahakott automaatselt Bitconi võrgustikuga, kuid see toiming on hetkel lõpetamata. - - - Immature: - Ebaküps: - - - Mined balance that has not yet matured - Mitte aegunud mine'itud jääk - - - Recent transactions - Hiljutised tehingud - - - - PaymentServer - - URI handling - URI käsitsemine - - - Cannot start bitcoin: click-to-pay handler - Bitcoin ei käivitu: vajuta-maksa toiming - - - - PeerTableModel - - - QObject - - Amount - Kogus - - - N/A - N/A - - - - QRImageWidget - - Save QR Code - Salvesta QR kood - - - - RPCConsole - - Client name - Kliendi nimi - - - N/A - N/A - - - Client version - Kliendi versioon - - - &Information - &Informatsioon - - - General - Üldine - - - Using OpenSSL version - Kasutan OpenSSL versiooni - - - Startup time - Käivitamise hetk - - - Network - Võrgustik - - - Name - Nimi - - - Number of connections - Ühenduste arv - - - Block chain - Ploki jada - - - Current number of blocks - Plokkide hetkearv - - - Received - Vastuvõetud - - - Sent - Saadetud - - - Direction - Suund - - - Version - Versioon - - - Services - Teenused - - - Last block time - Viimane ploki aeg - - - &Open - &Ava - - - &Console - &Konsool - - - Build date - Valmistusaeg - - - Debug log file - Debugimise logifail - - - Clear console - Puhasta konsool - - - Use up and down arrows to navigate history, and <b>Ctrl-L</b> to clear screen. - Ajaloo sirvimiseks kasuta üles ja alla nooli, ekraani puhastamiseks <b>Ctrl-L</b>. - - - Type <b>help</b> for an overview of available commands. - Ülevaateks võimalikest käsklustest trüki <b>help</b>. - - - %1 B - %1 B - - - %1 KB - %1 B - - - %1 MB - %1 MB - - - %1 GB - %1 GB - - - - ReceiveCoinsDialog - - &Amount: - &Summa: - - - &Label: - &Märgis - - - &Message: - &Sõnum: - - - Show - Näita - - - Remove - Eemalda - - - Copy label - Märgise kopeerimine - - - Copy message - Kopeeri sõnum - - - Copy amount - Kopeeri summa - - - - ReceiveRequestDialog - - Address - Aadress - - - Amount - Kogus - - - Label - Silt - - - Message - Sõnum - - - Resulting URI too long, try to reduce the text for label / message. - Tulemuseks on liiga pikk URL, püüa lühendada märgise/teate teksti. - - - Error encoding URI into QR Code. - Tõrge URI'st QR koodi loomisel - - - - RecentRequestsTableModel - - Date - Kuupäev - - - Label - Silt - - - Message - Sõnum - - - Amount - Kogus - - - (no label) - (silti pole) - - - (no message) - (sõnum puudub) - - - (no amount) - (summa puudub) - - - - SendCoinsDialog - - Send Coins - Müntide saatmine - - - Quantity: - Kogus: - - - Amount: - Summa: - - - Fee: - Tasu: - - - Choose... - Vali... - - - Hide - Peida - - - Recommended: - Soovitatud: - - - normal - normaalne - - - fast - kiire - - - Send to multiple recipients at once - Saatmine mitmele korraga - - - Add &Recipient - Lisa &Saaja - - - Clear &All - Puhasta &Kõik - - - Balance: - Jääk: - - - Confirm the send action - Saatmise kinnitamine - - - S&end - S&aada - - - Confirm send coins - Müntide saatmise kinnitamine - - - Copy amount - Kopeeri summa - - - Copy fee - Kopeeri tasu - - - or - või - - - The amount to pay must be larger than 0. - Makstav summa peab olema suurem kui 0. - - - The amount exceeds your balance. - Summa ületab jäägi. - - - The total exceeds your balance when the %1 transaction fee is included. - Summa koos tehingu tasuga %1 ületab sinu jääki. - - - (no label) - (silti pole) - - - - SendCoinsEntry - - A&mount: - S&umma: - - - Pay &To: - Maksa &: - - - Enter a label for this address to add it to your address book - Aadressiraamatusse sisestamiseks märgista aadress - - - &Label: - &Märgis - - - Alt+A - Alt+A - - - Paste address from clipboard - Kleebi aadress vahemälust - - - Alt+P - Alt+P - - - Message: - Sõnum: - - - - ShutdownWindow - - - SignVerifyMessageDialog - - Signatures - Sign / Verify a Message - Signatuurid - Allkirjasta / Kinnita Sõnum - - - &Sign Message - &Allkirjastamise teade - - - Alt+A - Alt+A - - - Paste address from clipboard - Kleebi aadress vahemälust - - - Alt+P - Alt+P - - - Enter the message you want to sign here - Sisesta siia allkirjastamise sõnum - - - Signature - Signatuur - - - Copy the current signature to the system clipboard - Kopeeri praegune signatuur vahemällu - - - Sign the message to prove you own this Bitcoin address - Allkirjasta sõnum Bitcoini aadressi sulle kuulumise tõestamiseks - - - Sign &Message - Allkirjasta &Sõnum - - - Reset all sign message fields - Tühjenda kõik sõnumi allkirjastamise väljad - - - Clear &All - Puhasta &Kõik - - - &Verify Message - &Kinnita Sõnum - - - Verify the message to ensure it was signed with the specified Bitcoin address - Kinnita sõnum tõestamaks selle allkirjastatust määratud Bitcoini aadressiga. - - - Verify &Message - Kinnita &Sõnum - - - Reset all verify message fields - Tühjenda kõik sõnumi kinnitamise väljad - - - Click "Sign Message" to generate signature - Signatuuri genereerimiseks vajuta "Allkirjasta Sõnum" - - - The entered address is invalid. - Sisestatud aadress ei kehti. - - - Please check the address and try again. - Palun kontrolli aadressi ning proovi uuesti. - - - The entered address does not refer to a key. - Sisestatud aadress ei viita võtmele. - - - Wallet unlock was cancelled. - Rahakoti avamine katkestati. - - - Private key for the entered address is not available. - Sisestatud aadressi privaatvõti ei ole saadaval. - - - Message signing failed. - Sõnumi signeerimine ebaõnnestus. - - - Message signed. - Sõnum signeeritud. - - - The signature could not be decoded. - Signatuuri ei õnnestunud dekodeerida. - - - Please check the signature and try again. - Palun kontrolli signatuuri ning proovi uuesti. - - - The signature did not match the message digest. - Signatuur ei kattunud sõnumi kokkuvõttega. - - - Message verification failed. - Sõnumi kontroll ebaõnnestus. - - - Message verified. - Sõnum kontrollitud. - - - - SplashScreen - - Bitcoin Core - Bitcoini tuumik - - - The Bitcoin Core developers - Bitcoini Tuuma arendajad - - - [testnet] - [testnet] - - - - TrafficGraphWidget - - KB/s - KB/s - - - - TransactionDesc - - Open until %1 - Avatud kuni %1 - - - %1/unconfirmed - %1/kinnitamata - - - %1 confirmations - %1 kinnitust - - - Status - Staatus - - - Date - Kuupäev - - - Source - Allikas - - - Generated - Genereeritud - - - From - Saatja - - - To - Saaja - - - own address - oma aadress - - - label - märgis - - - Credit - Krediit - - - not accepted - mitte aktsepteeritud - - - Debit - Deebet - - - Transaction fee - Tehingu tasu - - - Net amount - Neto summa - - - Message - Sõnum - - - Comment - Kommentaar - - - Transaction ID - Tehingu ID - - - Debug information - Debug'imise info - - - Transaction - Tehing - - - Inputs - Sisendid - - - Amount - Kogus - - - true - õige - - - false - vale - - - , has not been successfully broadcast yet - , veel esitlemata - - - unknown - tundmatu - - - - TransactionDescDialog - - Transaction details - Tehingu üksikasjad - - - This pane shows a detailed description of the transaction - Paan kuvab tehingu detailid - - - - TransactionTableModel - - Date - Kuupäev - - - Type - Tüüp - - - Open until %1 - Avatud kuni %1 - - - Confirmed (%1 confirmations) - Kinnitatud (%1 kinnitust) - - - This block was not received by any other nodes and will probably not be accepted! - Antud klotsi pole saanud ükski osapool ning tõenäoliselt seda ei aktsepteerita! - - - Generated but not accepted - Loodud, kuid aktsepteerimata - - - Label - Silt - - - Received with - Saadud koos - - - Received from - Kellelt saadud - - - Sent to - Saadetud - - - Payment to yourself - Makse iseendale - - - Mined - Mine'itud - - - (n/a) - (n/a) - - - Transaction status. Hover over this field to show number of confirmations. - Tehingu staatus. Kinnituste arvu kuvamiseks liigu hiire noolega selle peale. - - - Date and time that the transaction was received. - Tehingu saamise kuupäev ning kellaaeg. - - - Type of transaction. - Tehingu tüüp. - - - Amount removed from or added to balance. - Jäägile lisatud või eemaldatud summa. - - - - TransactionView - - All - Kõik - - - Today - Täna - - - This week - Jooksev nädal - - - This month - Jooksev kuu - - - Last month - Eelmine kuu - - - This year - Jooksev aasta - - - Range... - Ulatus... - - - Received with - Saadud koos - - - Sent to - Saadetud - - - To yourself - Iseendale - - - Mined - Mine'itud - - - Other - Muu - - - Enter address or label to search - Otsimiseks sisesta märgis või aadress - - - Min amount - Vähim summa - - - Copy address - Aadressi kopeerimine - - - Copy label - Märgise kopeerimine - - - Copy amount - Kopeeri summa - - - Copy transaction ID - Kopeeri tehingu ID - - - Edit label - Märgise muutmine - - - Show transaction details - Kuva tehingu detailid - - - Exporting Failed - Eksportimine Ebaõnnestus - - - Comma separated file (*.csv) - Komaeraldatud fail (*.csv) - - - Confirmed - Kinnitatud - - - Date - Kuupäev - - - Type - Tüüp - - - Label - Silt - - - Address - Aadress - - - ID - ID - - - Range: - Ulatus: - - - to - saaja - - - - UnitDisplayStatusBarControl - - - WalletFrame - - - WalletModel - - Send Coins - Müntide saatmine - - - - WalletView - - &Export - &Ekspordi - - - Export the data in the current tab to a file - Ekspordi kuvatava vahelehe sisu faili - - - Backup Wallet - Varundatud Rahakott - - - Wallet Data (*.dat) - Rahakoti andmed (*.dat) - - - Backup Failed - Varundamine nurjus - - - Backup Successful - Varundamine õnnestus - - - - bitcoin-core - - Options: - Valikud: - - - Specify data directory - Täpsusta andmekataloog - - - Connect to a node to retrieve peer addresses, and disconnect - Peeri aadressi saamiseks ühendu korraks node'iga - - - Specify your own public address - Täpsusta enda avalik aadress - - - Accept command line and JSON-RPC commands - Luba käsurea ning JSON-RPC käsklusi - - - Run in the background as a daemon and accept commands - Tööta taustal ning aktsepteeri käsklusi - - - Use the test network - Testvõrgu kasutamine - - - Accept connections from outside (default: 1 if no -proxy or -connect) - Luba välisühendusi (vaikeväärtus: 1 kui puudub -proxy või -connect) - - - Bind to given address and always listen on it. Use [host]:port notation for IPv6 - Määratud aadressiga sidumine ning sellelt kuulamine. IPv6 jaoks kasuta vormingut [host]:port - - - Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) - Käivita käsklus, kui rahakoti tehing muutub (%s cmd's muudetakse TxID'ks) - - - This is a pre-release test build - use at your own risk - do not use for mining or merchant applications - See on test-versioon - kasutamine omal riisikol - ära kasuta mining'uks ega kaupmeeste programmides - - - Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. - Hoiatus: -paytxfee on seatud väga kõrgeks! See on sinu poolt makstav tehingu lisatasu. - - - Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. - Hoiatus: ilmnes tõrge wallet.dat faili lugemisel! Võtmed on terved, kuid tehingu andmed või aadressiraamatu kirjed võivad olla kadunud või vigased. - - - 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. - Hoiatus: toimus wallet.dat faili andmete päästmine! Originaal wallet.dat nimetati kaustas %s ümber wallet.{ajatempel}.bak'iks, jäägi või tehingute ebakõlade puhul tuleks teha backup'ist taastamine. - - - Attempt to recover private keys from a corrupt wallet.dat - Püüa vigasest wallet.dat failist taastada turvavõtmed - - - Block creation options: - Blokeeri loomise valikud: - - - Connect only to the specified node(s) - Ühendu ainult määratud node'i(de)ga - - - Corrupted block database detected - Tuvastati vigane bloki andmebaas - - - Do you want to rebuild the block database now? - Kas soovid bloki andmebaasi taastada? - - - Error initializing block database - Tõrge bloki andmebaasi käivitamisel - - - Error initializing wallet database environment %s! - Tõrge rahakoti keskkonna %s käivitamisel! - - - Error loading block database - Tõrge bloki baasi lugemisel - - - Error opening block database - Tõrge bloki andmebaasi avamisel - - - Error: Disk space is low! - Tõrge: liiga vähe kettaruumi! - - - Failed to listen on any port. Use -listen=0 if you want this. - Pordi kuulamine nurjus. Soovikorral kasuta -listen=0. - - - Verifying blocks... - Kontrollin blokke... - - - Verifying wallet... - Kontrollin rahakotti... - - - Wallet options: - Rahakoti valikud: - - - Imports blocks from external blk000??.dat file - Impordi blokid välisest blk000??.dat failist - - - Information - Informatsioon - - - RPC server options: - RPC serveri valikud: - - - Send trace/debug info to console instead of debug.log file - Saada jälitus/debug, debug.log faili asemel, konsooli - - - Set language, for example "de_DE" (default: system locale) - Keele valik, nt "ee_ET" (vaikeväärtus: system locale) - - - Show splash screen on startup (default: 1) - Käivitamisel teabeakna kuvamine (vaikeväärtus: 1) - - - Shrink debug.log file on client startup (default: 1 when no -debug) - Kahanda programmi käivitamisel debug.log faili (vaikeväärtus: 1, kui ei ole -debug) - - - Signing transaction failed - Tehingu allkirjastamine ebaõnnestus - - - Start minimized - Käivitu tegumiribale - - - The transaction amount is too small to pay the fee - Tehingu summa on tasu maksmiseks liiga väikene - - - Transaction amount too small - Tehingu summa liiga väikene - - - Transaction too large - Tehing liiga suur - - - UI Options: - UI Valikud: - - - Use UPnP to map the listening port (default: 1 when listening) - Kasuta kuulatava pordi määramiseks UPnP ühendust (vaikeväärtus: 1, kui kuulatakse) - - - Username for JSON-RPC connections - JSON-RPC ühenduste kasutajatunnus - - - Warning - Hoiatus - - - on startup - käivitamisel - - - wallet.dat corrupt, salvage failed - wallet.dat fail on katki, päästmine ebaõnnestus - - - Password for JSON-RPC connections - JSON-RPC ühenduste salasõna - - - Execute command when the best block changes (%s in cmd is replaced by block hash) - Käivita käsklus, kui parim plokk muutub (käskluse %s asendatakse ploki hash'iga) - - - Upgrade wallet to latest format - Uuenda rahakott uusimasse vormingusse - - - Rescan the block chain for missing wallet transactions - Otsi ploki jadast rahakoti kadunud tehinguid - - - Use OpenSSL (https) for JSON-RPC connections - Kasuta JSON-RPC ühenduste jaoks OpenSSL'i (https) - - - This help message - Käesolev abitekst - - - Allow DNS lookups for -addnode, -seednode and -connect - -addnode, -seednode ja -connect tohivad kasutada DNS lookup'i - - - Loading addresses... - Aadresside laadimine... - - - Error loading wallet.dat: Wallet corrupted - Viga wallet.dat käivitamisel. Vigane rahakkott - - - (default: %s) - (vaikimisi: %s) - - - Error loading wallet.dat - Viga wallet.dat käivitamisel - - - Invalid -proxy address: '%s' - Vigane -proxi aadress: '%s' - - - Unknown network specified in -onlynet: '%s' - Kirjeldatud tundmatu võrgustik -onlynet'is: '%s' - - - Cannot resolve -bind address: '%s' - Tundmatu -bind aadress: '%s' - - - Cannot resolve -externalip address: '%s' - Tundmatu -externalip aadress: '%s' - - - Invalid amount for -paytxfee=<amount>: '%s' - -paytxfee=<amount> jaoks vigane kogus: '%s' - - - Insufficient funds - Liiga suur summa - - - Loading block index... - Klotside indeksi laadimine... - - - Add a node to connect to and attempt to keep the connection open - Lisa node ning hoia ühendus avatud - - - Loading wallet... - Rahakoti laadimine... - - - Cannot downgrade wallet - Rahakoti vanandamine ebaõnnestus - - - Cannot write default address - Tõrge vaikimisi aadressi kirjutamisel - - - Rescanning... - Üleskaneerimine... - - - Done loading - Laetud - - - Error - Tõrge - - - \ No newline at end of file diff --git a/src/qt/locale/bitcoin_eu_ES.ts b/src/qt/locale/bitcoin_eu_ES.ts deleted file mode 100644 index 3de9ad5a2..000000000 --- a/src/qt/locale/bitcoin_eu_ES.ts +++ /dev/null @@ -1,686 +0,0 @@ - - - AddressBookPage - - Create a new address - Sortu helbide berria - - - Copy the currently selected address to the system clipboard - Kopiatu hautatutako helbidea sistemaren arbelera - - - &Delete - &Ezabatu - - - Comma separated file (*.csv) - Komaz bereizitako artxiboa (*.csv) - - - - AddressTableModel - - Label - Etiketa - - - Address - Helbidea - - - (no label) - (etiketarik ez) - - - - AskPassphraseDialog - - Enter passphrase - Sartu pasahitza - - - New passphrase - Pasahitz berria - - - Repeat new passphrase - Errepikatu pasahitz berria - - - Encrypt wallet - Enkriptatu zorroa - - - This operation needs your wallet passphrase to unlock the wallet. - Eragiketa honek zorroaren pasahitza behar du zorroa desblokeatzeko. - - - Unlock wallet - Desblokeatu zorroa - - - This operation needs your wallet passphrase to decrypt the wallet. - Eragiketa honek zure zorroaren pasahitza behar du, zorroa desenkriptatzeko. - - - Decrypt wallet - Desenkriptatu zorroa - - - Change passphrase - Aldatu pasahitza - - - Confirm wallet encryption - Berretsi zorroaren enkriptazioa - - - Wallet encrypted - Zorroa enkriptatuta - - - Wallet encryption failed - Zorroaren enkriptazioak huts egin du - - - Wallet encryption failed due to an internal error. Your wallet was not encrypted. - Zorroaren enkriptazioak huts egin du barne-errore baten ondorioz. Zure zorroa ez da enkriptatu. - - - The supplied passphrases do not match. - Eman dituzun pasahitzak ez datoz bat. - - - Wallet unlock failed - Zorroaren desblokeoak huts egin du - - - The passphrase entered for the wallet decryption was incorrect. - Zorroa desenkriptatzeko sartutako pasahitza okerra da. - - - Wallet decryption failed - Zorroaren desenkriptazioak huts egin du - - - - BitcoinGUI - - Synchronizing with network... - Sarearekin sinkronizatzen... - - - &Overview - &Gainbegiratu - - - Show general overview of wallet - Ikusi zorroaren begirada orokorra - - - &Transactions - &Transakzioak - - - Browse transaction history - Ikusi transakzioen historia - - - E&xit - Irten - - - Quit application - Irten aplikaziotik - - - About &Qt - &Qt-ari buruz - - - Show information about Qt - Erakutsi Bitcoin-i buruzko informazioa - - - &Options... - &Aukerak... - - - Change the passphrase used for wallet encryption - Aldatu zorroa enkriptatzeko erabilitako pasahitza - - - &File - &Artxiboa - - - &Settings - &Ezarpenak - - - &Help - &Laguntza - - - Tabs toolbar - Fitxen tresna-barra - - - Up to date - Egunean - - - Catching up... - Eguneratzen... - - - Sent transaction - Bidalitako transakzioa - - - Incoming transaction - Sarrerako transakzioa - - - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - Zorroa <b>enkriptatuta</b> eta <b>desblokeatuta</b> dago une honetan - - - Wallet is <b>encrypted</b> and currently <b>locked</b> - Zorroa <b>enkriptatuta</b> eta <b>blokeatuta</b> dago une honetan - - - - ClientModel - - - CoinControlDialog - - Amount: - Kopurua - - - Amount - Kopurua - - - Date - Data - - - Copy address - Kopiatu helbidea - - - Copy label - Kopiatu etiketa - - - (no label) - (etiketarik ez) - - - - EditAddressDialog - - Edit Address - Editatu helbidea - - - &Label - &Etiketa - - - &Address - &Helbidea - - - New receiving address - Jasotzeko helbide berria - - - New sending address - Bidaltzeko helbide berria - - - Edit receiving address - Editatu jasotzeko helbidea - - - Edit sending address - Editatu bidaltzeko helbidea - - - The entered address "%1" is already in the address book. - Sartu berri den helbidea, "%1", helbide-liburuan dago jadanik. - - - Could not unlock wallet. - Ezin desblokeatu zorroa. - - - New key generation failed. - Gako berriaren sorrerak huts egin du. - - - - FreespaceChecker - - - HelpMessageDialog - - - Intro - - - OpenURIDialog - - - OptionsDialog - - Options - Aukerak - - - - OverviewPage - - Form - Inprimakia - - - - PaymentServer - - - PeerTableModel - - - QObject - - Amount - Kopurua - - - - QRImageWidget - - - RPCConsole - - - ReceiveCoinsDialog - - &Label: - &Etiketa: - - - Copy label - Kopiatu etiketa - - - - ReceiveRequestDialog - - Address - Helbidea - - - Amount - Kopurua - - - Label - Etiketa - - - - RecentRequestsTableModel - - Date - Data - - - Label - Etiketa - - - Amount - Kopurua - - - (no label) - (etiketarik ez) - - - - SendCoinsDialog - - Send Coins - Bidali txanponak - - - Amount: - Kopurua - - - Send to multiple recipients at once - Bidali hainbat jasotzaileri batera - - - Balance: - Saldoa: - - - Confirm the send action - Berretsi bidaltzeko ekintza - - - Confirm send coins - Berretsi txanponak bidaltzea - - - The amount to pay must be larger than 0. - Ordaintzeko kopurua 0 baino handiagoa izan behar du. - - - (no label) - (etiketarik ez) - - - - SendCoinsEntry - - A&mount: - K&opurua: - - - Pay &To: - Ordaindu &honi: - - - Enter a label for this address to add it to your address book - Sartu etiketa bat helbide honetarako, eta gehitu zure helbide-liburuan - - - &Label: - &Etiketa: - - - Alt+A - Alt+A - - - Paste address from clipboard - Itsatsi helbidea arbeletik - - - Alt+P - Alt+P - - - Message: - Mezua - - - - ShutdownWindow - - - SignVerifyMessageDialog - - Alt+A - Alt+A - - - Paste address from clipboard - Itsatsi helbidea arbeletik - - - Alt+P - Alt+P - - - - SplashScreen - - [testnet] - [testnet] - - - - TrafficGraphWidget - - - TransactionDesc - - Open until %1 - Zabalik %1 arte - - - %1/unconfirmed - %1/konfirmatu gabe - - - %1 confirmations - %1 konfirmazioak - - - Date - Data - - - Amount - Kopurua - - - , has not been successfully broadcast yet - , ez da arrakastaz emititu oraindik - - - unknown - ezezaguna - - - - TransactionDescDialog - - Transaction details - Transakzioaren xehetasunak - - - This pane shows a detailed description of the transaction - Panel honek transakzioaren deskribapen xehea erakusten du - - - - TransactionTableModel - - Date - Data - - - Type - Mota - - - Open until %1 - Zabalik %1 arte - - - Confirmed (%1 confirmations) - Konfirmatuta (%1 konfirmazio) - - - This block was not received by any other nodes and will probably not be accepted! - Bloke hau ez du beste inongo nodorik jaso, eta seguruenik ez da onartuko! - - - Generated but not accepted - Sortua, baina ez onartua - - - Label - Etiketa - - - Received with - Jasota honekin: - - - Sent to - Hona bidalia: - - - Payment to yourself - Ordainketa zeure buruari - - - Mined - Bildua - - - (n/a) - (n/a) - - - Transaction status. Hover over this field to show number of confirmations. - Transakzioaren egoera. Pasatu sagua gainetik konfirmazio kopurua ikusteko. - - - Date and time that the transaction was received. - Transakzioa jasotako data eta ordua. - - - Type of transaction. - Transakzio mota. - - - Amount removed from or added to balance. - Saldoan kendu edo gehitutako kopurua. - - - - TransactionView - - All - Denak - - - Today - Gaur - - - This week - Aste honetan - - - This month - Hil honetan - - - Last month - Azken hilean - - - This year - Aurten - - - Range... - Muga... - - - Received with - Jasota honekin: - - - Sent to - Hona bidalia: - - - To yourself - Zeure buruari - - - Mined - Bildua - - - Other - Beste - - - Enter address or label to search - Sartu bilatzeko helbide edo etiketa - - - Min amount - Kopuru minimoa - - - Copy address - Kopiatu helbidea - - - Copy label - Kopiatu etiketa - - - Comma separated file (*.csv) - Komaz bereizitako artxiboa (*.csv) - - - Date - Data - - - Type - Mota - - - Label - Etiketa - - - Address - Helbidea - - - - UnitDisplayStatusBarControl - - - WalletFrame - - - WalletModel - - Send Coins - Bidali txanponak - - - - WalletView - - - bitcoin-core - - Options: - Aukerak - - - This help message - Laguntza mezu hau - - - Rescanning... - Birbilatzen... - - - Done loading - Zamaketa amaitua - - - \ No newline at end of file diff --git a/src/qt/locale/bitcoin_fa.ts b/src/qt/locale/bitcoin_fa.ts deleted file mode 100644 index e8437bdcf..000000000 --- a/src/qt/locale/bitcoin_fa.ts +++ /dev/null @@ -1,2070 +0,0 @@ - - - AddressBookPage - - Right-click to edit address or label - برای تغییر آدرس Ùˆ یا برچسب کلیک راست کنید. - - - Create a new address - ایجاد نشانی جدید - - - &New - &جدید - - - Copy the currently selected address to the system clipboard - Ú©Ù¾ÛŒ نشانی انتخاب شده به Ø­Ø§ÙØ¸Ù‡Ù” سیستم - - - &Copy - &رونوشت - - - C&lose - &بستن - - - &Copy Address - &Ú©Ù¾ÛŒ نشانی - - - Delete the currently selected address from the list - حذ٠نشانی انتخاب‌شده از لیست - - - Export the data in the current tab to a file - خروجی Ú¯Ø±ÙØªÙ† داده‌های برگهٔ ÙØ¹Ù„ÛŒ به یک پرونده - - - &Export - &صدور - - - &Delete - &حذ٠- - - Choose the address to send coins to - آدرس مورد نظر برای ارسال کوین ها را انتخاب کنید - - - Choose the address to receive coins with - آدرس موردنظر برای Ø¯Ø±ÛŒØ§ÙØª کوین ها را انتخاب کنید. - - - Sending addresses - آدرس های ارسال کننده - - - Receiving addresses - آدرس های Ø¯Ø±ÛŒØ§ÙØª کننده - - - These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins. - این‌ها نشانی‌های بیت‌کوین شما برای ارسال وجود هستند. همیشه قبل از ارسال سکه‌ها، نشانی Ø¯Ø±ÛŒØ§ÙØªâ€ŒÚ©Ù†Ù†Ø¯Ù‡ Ùˆ مقدار ارسالی را بررسی کنید. - - - These are your Bitcoin addresses for receiving payments. It is recommended to use a new receiving address for each transaction. - این‌ها نشانی‌های بیت‌کوین شما برای Ø¯Ø±ÛŒØ§ÙØª وجوه هستند. توصیه می‌شود یک نشانی Ø¯Ø±ÛŒØ§ÙØª جدید برای هر تبادل Ø§Ø³ØªÙØ§Ø¯Ù‡ کنید. - - - Copy &Label - Ú©Ù¾ÛŒ Ùˆ برچسب‌&گذاری - - - &Edit - &ویرایش - - - Export Address List - استخراج لیست آدرس - - - Comma separated file (*.csv) - پروندهٔ نوع CSV جداشونده با کاما (*.csv) - - - Exporting Failed - استخراج انجام نشد - - - There was an error trying to save the address list to %1. Please try again. - خطایی هنگام تلاش برای ذخیرهٔ لیست آدرس ها در %1 رخ داد. - - - - AddressTableModel - - Label - برچسب - - - Address - آدرس - - - (no label) - (بدون برچسب) - - - - AskPassphraseDialog - - Passphrase Dialog - پنجرهٔ گذرواژه - - - Enter passphrase - گذرواژه را وارد کنید - - - New passphrase - گذرواژهٔ جدید - - - Repeat new passphrase - تکرار گذرواژهٔ جدید - - - Encrypt wallet - رمزنگاری کی٠پول - - - This operation needs your wallet passphrase to unlock the wallet. - انجام این عملیات نیازمند گذرواژهٔ کی٠پول شما برای باز کردن Ù‚ÙÙ„ آن است. - - - Unlock wallet - باز کردن Ù‚ÙÙ„ کی٠پول - - - This operation needs your wallet passphrase to decrypt the wallet. - انجام این عملیات نیازمند گذرواژهٔ کی٠پول شما برای رمزگشایی کردن آن است. - - - Decrypt wallet - رمزگشایی کی٠پول - - - Change passphrase - تغییر گذرواژه - - - Confirm wallet encryption - تأیید رمزنگاری کی٠پول - - - Warning: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR BITCOINS</b>! - هشدار: اگر کی٠پول خود را رمزنگاری کنید Ùˆ گذرواژه را ÙØ±Ø§Ù…وش کنید، <b>تمام دارایی بیت‌کوین خود را از دست خواهید داد</b>! - - - Are you sure you wish to encrypt your wallet? - آیا مطمئن هستید Ú©Ù‡ می‌خواهید کی٠پول خود را رمزنگاری کنید؟ - - - Bitcoin Core 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. - هسته بیت‌کوین هم اکنون بسته می‌شود تا ÙØ±Ø§ÛŒÙ†Ø¯ رمزگذاری را تمام کند. به خاطر داشته باشید Ú©Ù‡ رمزگذاری کردن کی٠پول‌تان نمی‌تواند به طور کامل بیت‌کوین‌های شما را در برابر دزدیده شدن توسط Ø¨Ø¯Ø§ÙØ²Ø§Ø±Ù‡Ø§ÛŒÛŒ Ú©Ù‡ رایانه‌ی شما را آلوده می‌کنند، Ù…Ø­Ø§ÙØ¸Øª نماید. - - - 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. - مهم: هر نسخهٔ پشتیبانی Ú©Ù‡ تا کنون از کی٠پول خود تهیه کرده‌اید، باید با کی٠پول رمزنگاری شدهٔ جدید جایگزین شود. به دلایل امنیتی، پروندهٔ قدیمی کی٠پول بدون رمزنگاری، تا زمانی Ú©Ù‡ از کی٠پول رمزنگاری‌شدهٔ جدید Ø§Ø³ØªÙØ§Ø¯Ù‡ نکنید، غیرقابل Ø§Ø³ØªÙØ§Ø¯Ù‡ خواهد بود. - - - Warning: The Caps Lock key is on! - هشدار: کلید Caps Lock روشن است! - - - Wallet encrypted - کی٠پول رمزنگاری شد - - - 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>. - رمز جدید کی٠پول خود را وارد کنید.<br/>از رمز عبوری Ø§Ø³ØªÙØ§Ø¯Ù‡ کنید Ú©Ù‡<b> حداقل 10 کاراکتر تصادÙÛŒ </b> Ùˆ یا <b> حداقل 8 حر٠داشته باشد.</b> - - - Enter the old passphrase and new passphrase to the wallet. - رمز عبور قدیمی Ùˆ رمز عبور جدید کی٠پول خود را وارد گنید. - - - Wallet encryption failed - رمزنگاری کی٠پول با شکست مواجه شد - - - Wallet encryption failed due to an internal error. Your wallet was not encrypted. - رمزنگاری کی٠پول بنا به یک خطای داخلی با شکست مواجه شد. کی٠پول شما رمزنگاری نشد. - - - The supplied passphrases do not match. - گذرواژه‌های داده شده با هم تطابق ندارند. - - - Wallet unlock failed - بازگشایی Ù‚ÙÙ„ Ú©ÛŒÙ‌پول با شکست مواجه شد - - - The passphrase entered for the wallet decryption was incorrect. - گذرواژهٔ وارد شده برای رمزگشایی کی٠پول نادرست بود. - - - Wallet decryption failed - رمزگشایی ناموÙÙ‚ کی٠پول - - - Wallet passphrase was successfully changed. - گذرواژهٔ کی٠پول با موÙقیت عوض شد. - - - - BitcoinGUI - - Sign &message... - &امضای پیام... - - - Synchronizing with network... - همگام‌سازی با شبکه... - - - &Overview - &بررسی اجمالی - - - Node - گره - - - Show general overview of wallet - نمایش بررسی اجمالی کی٠پول - - - &Transactions - &تراکنش‌ها - - - Browse transaction history - مرور تاریخچهٔ تراکنش‌ها - - - E&xit - &خروج - - - Quit application - خروج از برنامه - - - About &Qt - دربارهٔ &کیوت - - - Show information about Qt - نمایش اطلاعات دربارهٔ کیوت - - - &Options... - &تنظیمات... - - - &Encrypt Wallet... - &رمزنگاری کی٠پول... - - - &Backup Wallet... - &پیشتیبان‌گیری از کی٠پول... - - - &Change Passphrase... - &تغییر گذرواژه... - - - &Sending addresses... - &در حال ارسال آدرس ها... - - - &Receiving addresses... - &در حال Ø¯Ø±ÛŒØ§ÙØª آدرس ها... - - - Open &URI... - باز کردن &آدرس - - - Importing blocks from disk... - Ø¯Ø±ÛŒØ§ÙØª بلوک‌ها از دیسک... - - - Reindexing blocks on disk... - بازنشانی بلوک‌ها روی دیسک... - - - Send coins to a Bitcoin address - ارسال وجه به نشانی بیت‌کوین - - - Backup wallet to another location - تهیهٔ پشتیبان از کی٠پول در یک مکان دیگر - - - Change the passphrase used for wallet encryption - تغییر گذرواژهٔ مورد Ø§Ø³ØªÙØ§Ø¯Ù‡ در رمزنگاری کی٠پول - - - &Debug window - پنجرهٔ ا&شکال‌زدایی - - - Open debugging and diagnostic console - باز کردن کنسول خطایابی Ùˆ اشکال‌زدایی - - - &Verify message... - با&زبینی پیام... - - - Bitcoin - بیت‌کوین - - - Wallet - کی٠پول - - - &Send - &ارسال - - - &Receive - &Ø¯Ø±ÛŒØ§ÙØª - - - Show information about Bitcoin Core - نمایش اطلاعات در مورد بیت‌کوین - - - &Show / Hide - &نمایش/ عدم نمایش - - - Show or hide the main Window - نمایش یا مخÙی‌کردن پنجرهٔ اصلی - - - Encrypt the private keys that belong to your wallet - رمزنگاری کلیدهای خصوصی متعلق به کی٠پول شما - - - Sign messages with your Bitcoin addresses to prove you own them - برای اثبات اینکه پیام‌ها به شما تعلق دارند، آن‌ها را با نشانی بیت‌کوین خود امضا کنید - - - Verify messages to ensure they were signed with specified Bitcoin addresses - برای حصول اطمینان از اینکه پیام با نشانی بیت‌کوین مشخص شده امضا است یا خیر، پیام را شناسایی کنید - - - &File - &ÙØ§ÛŒÙ„ - - - &Settings - &تنظیمات - - - &Help - &کمک‌رسانی - - - Tabs toolbar - نوارابزار برگه‌ها - - - Bitcoin Core - هسته Bitcoin - - - &About Bitcoin Core - درباره هسته ÛŒ بیت کوین - - - Show the list of used sending addresses and labels - نمایش لیست آدرس های ارسال Ùˆ لیبل ها - - - Show the list of used receiving addresses and labels - نمایش لیست آدرس های Ø¯Ø±ÛŒØ§ÙØª Ùˆ لیبل ها - - - %n active connection(s) to Bitcoin network - %n ارتباط ÙØ¹Ø§Ù„ با شبکهٔ بیت‌کوین - - - No block source available... - منبعی برای Ø¯Ø±ÛŒØ§ÙØª بلاک در دسترس نیست... - - - %n hour(s) - %n ساعت - - - %n day(s) - %n روز - - - %n week(s) - %n Ù‡ÙØªÙ‡ - - - %1 behind - %1 عقب‌تر - - - Last received block was generated %1 ago. - آخرین بلاک Ø¯Ø±ÛŒØ§ÙØªÛŒ %1 پیش ایجاد شده است. - - - Transactions after this will not yet be visible. - تراکنش‌های بعد از این هنوز قابل مشاهده نیستند. - - - Error - خطا - - - Warning - هشدار - - - Information - اطلاعات - - - Up to date - وضعیت به‌روز - - - Catching up... - به‌روز رسانی... - - - Sent transaction - تراکنش ارسال شد - - - Incoming transaction - تراکنش Ø¯Ø±ÛŒØ§ÙØª شد - - - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - کی٠پول <b>رمزنگاری شده</b> است Ùˆ هم‌اکنون <b>باز</b> است - - - Wallet is <b>encrypted</b> and currently <b>locked</b> - کی٠پول <b>رمزنگاری شده</b> است Ùˆ هم‌اکنون <b>Ù‚ÙÙ„</b> است - - - - ClientModel - - Network Alert - پیام شبکه - - - - CoinControlDialog - - Coin Selection - انتخاب سکه - - - Quantity: - تعداد: - - - Bytes: - بایت ها: - - - Amount: - مبلغ: - - - Priority: - اولویت: - - - Fee: - هزینه: - - - After Fee: - هزینه ÛŒ پسین: - - - Change: - پول خورد: - - - Tree mode - مدل درختی - - - List mode - مدل لیست - - - Amount - مبلغ - - - Received with label - Ø¯Ø±ÛŒØ§ÙØª شده با برچسب - - - Received with address - Ø¯Ø±ÛŒØ§ÙØª شده با نشانی - - - Date - تاریخ - - - Confirmations - تاییدیه ها - - - Confirmed - تأیید شده - - - Priority - اولویت - - - Copy address - Ú©Ù¾ÛŒ نشانی - - - Copy label - Ú©Ù¾ÛŒ برچسب - - - Copy amount - Ú©Ù¾ÛŒ مقدار - - - Copy transaction ID - Ú©Ù¾ÛŒ شناسهٔ تراکنش - - - highest - بیشترین - - - higher - بیشتر - - - high - زیاد - - - medium-high - متوسط متمایل به زیاد - - - medium - متوسط - - - low-medium - متوسط متمایل به Ú©Ù… - - - low - Ú©Ù… - - - lower - کمتر - - - lowest - کمترین - - - none - هیچکدام - - - yes - بله - - - no - خیر - - - (no label) - (بدون برچسب) - - - (change) - (تغییر) - - - - EditAddressDialog - - Edit Address - ویرایش نشانی - - - &Label - &برچسب - - - &Address - &نشانی - - - New receiving address - نشانی Ø¯Ø±ÛŒØ§ÙØªÛŒ جدید - - - New sending address - نشانی ارسالی جدید - - - Edit receiving address - ویرایش نشانی Ø¯Ø±ÛŒØ§ÙØªÛŒ - - - Edit sending address - ویرایش نشانی ارسالی - - - The entered address "%1" is already in the address book. - نشانی وارد شده «%1» در حال حاضر در Ø¯ÙØªØ±Ú†Ù‡ وجود دارد. - - - The entered address "%1" is not a valid Bitcoin address. - نشانی وارد شده «%1» یک نشانی معتبر بیت‌کوین نیست. - - - Could not unlock wallet. - نمی‌توان کی٠پول را رمزگشایی کرد. - - - New key generation failed. - ایجاد کلید جدید با شکست مواجه شد. - - - - FreespaceChecker - - A new data directory will be created. - یک مسیر دادهٔ جدید ایجاد خواهد شد. - - - name - نام - - - Directory already exists. Add %1 if you intend to create a new directory here. - این پوشه در حال حاضر وجود دارد. اگر می‌خواهید یک دایرکتوری جدید در این‌جا ایجاد کنید، %1 را اضاÙÙ‡ کنید. - - - Path already exists, and is not a directory. - مسیر داده شده موجود است Ùˆ به یک پوشه اشاره نمی‌کند. - - - Cannot create data directory here. - نمی‌توان پوشهٔ داده در این‌جا ایجاد کرد. - - - - HelpMessageDialog - - Bitcoin Core - هسته Bitcoin - - - version - نسخه - - - About Bitcoin Core - درباره هسته ÛŒ بیت کوین - - - Command-line options - گزینه‌های Ø®Ø·â€ŒÙØ±Ù…ان - - - Usage: - Ø§Ø³ØªÙØ§Ø¯Ù‡: - - - command-line options - گزینه‌های خط ÙØ±Ù…ان - - - - Intro - - Welcome - خوش‌آمدید - - - Welcome to Bitcoin Core. - به هسته بیت کوین خوش آمدید. - - - As this is the first time the program is launched, you can choose where Bitcoin Core will store its data. - از آنجایی Ú©Ù‡ این اولین اجرای برنامه است، شما می‌توانید مسیر ذخیرهٔ داده‌ها را انتخاب کنید. - - - Use the default data directory - Ø§Ø³ØªÙØ§Ø¯Ù‡ از مسیر Ù¾ÛŒØ´â€ŒÙØ±Ø¶ - - - Use a custom data directory: - Ø§Ø³ØªÙØ§Ø¯Ù‡ از یک مسیر Ø³ÙØ§Ø±Ø´ÛŒ: - - - Bitcoin Core - هسته Bitcoin - - - Error - خطا - - - - OpenURIDialog - - - OptionsDialog - - Options - گزینه‌ها - - - &Main - &عمومی - - - Reset all client options to default. - بازنشانی تمام تنظیمات به Ù¾ÛŒØ´â€ŒÙØ±Ø¶. - - - &Reset Options - &بازنشانی تنظیمات - - - &Network - &شبکه - - - Expert - استخراج - - - Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled. - باز کردن خودکار درگاه شبکهٔ بیت‌کوین روی روترها. تنها زمانی کار می‌کند Ú©Ù‡ روتر از پروتکل UPnP پشتیبانی کند Ùˆ این پروتکل ÙØ¹Ø§Ù„ باشد. - - - Map port using &UPnP - نگاشت درگاه شبکه با Ø§Ø³ØªÙØ§Ø¯Ù‡ از پروتکل &UPnP - - - Proxy &IP: - Ø¢&ی‌پی پراکسی: - - - &Port: - &درگاه: - - - Port of the proxy (e.g. 9050) - درگاه پراکسی (مثال 9050) - - - &Window - &پنجره - - - Show only a tray icon after minimizing the window. - تنها بعد از Ú©ÙˆÚ†Ú© کردن پنجره، tray icon را نشان بده. - - - &Minimize to the tray instead of the taskbar - &Ú©ÙˆÚ†Ú© کردن به سینی به‌جای نوار وظیÙÙ‡ - - - M&inimize on close - Ú©ÙˆÚ†Ú© کردن &در زمان بسته شدن - - - &Display - &نمایش - - - User Interface &language: - زبان &رابط کاربری: - - - &Unit to show amounts in: - &واحد نمایش مبالغ: - - - Choose the default subdivision unit to show in the interface and when sending coins. - انتخاب واحد پول مورد Ø§Ø³ØªÙØ§Ø¯Ù‡ برای نمایش در پنجره‌ها Ùˆ برای ارسال سکه. - - - &OK - &تأیید - - - &Cancel - &لغو - - - default - Ù¾ÛŒØ´â€ŒÙØ±Ø¶ - - - none - هیچکدام - - - Confirm options reset - تأیید٠بازنشانی گزینه‌ها - - - This change would require a client restart. - برای این تغییرات بازنشانی مشتری ضروری است - - - The supplied proxy address is invalid. - آدرس پراکسی داده شده صحیح نیست. - - - - OverviewPage - - Form - ÙØ±Ù… - - - The displayed information may be out of date. Your wallet automatically synchronizes with the Bitcoin network after a connection is established, but this process has not completed yet. - اطلاعات نمایش‌داده شده ممکن است قدیمی باشند. بعد از این Ú©Ù‡ یک اتصال با شبکه برقرار شد، کی٠پول شما به‌صورت خودکار با شبکهٔ بیت‌کوین همگام‌سازی می‌شود. اما این روند هنوز کامل نشده است. - - - Available: - در دسترس: - - - Your current spendable balance - تراز علی‌الحساب شما - - - Total of transactions that have yet to be confirmed, and do not yet count toward the spendable balance - مجموع تراکنش‌هایی Ú©Ù‡ هنوز تأیید نشده‌اند؛ Ùˆ هنوز روی تراز علی‌الحساب اعمال نشده‌اند - - - Immature: - نارسیده: - - - Mined balance that has not yet matured - تراز استخراج شده از معدن Ú©Ù‡ هنوز بالغ نشده است - - - Balances - تراز ها - - - Total: - جمع Ú©Ù„: - - - Your current total balance - تراز Ú©Ù„ ÙØ¹Ù„ÛŒ شما - - - Spendable: - :قابل خرج کردن - - - Recent transactions - تراکنش های اخیر - - - - PaymentServer - - URI handling - مدیریت URI - - - Payment request rejected - درخواست پرداخت رد شد. - - - Payment request error - خطای درخواست پرداخت - - - Cannot start bitcoin: click-to-pay handler - نمی‌توان بیت‌کوین را اجرا کرد: کنترل‌کنندهٔ کلیک-Ùˆ-پرداخت - - - Payment request expired. - درخواست پرداخت منقضی شد. - - - Invalid payment request. - درخواست پرداخت نامعتبر - - - - PeerTableModel - - - QObject - - Amount - مبلغ - - - None - هیچکدام - - - N/A - ناموجود - - - - QRImageWidget - - Save QR Code - ذخیرهٔ کد QR - - - - RPCConsole - - Client name - نام کلاینت - - - N/A - ناموجود - - - Client version - نسخهٔ کلاینت - - - &Information - &اطلاعات - - - Using OpenSSL version - نسخهٔ OpenSSL Ø§Ø³ØªÙØ§Ø¯Ù‡ شده - - - Startup time - زمان آغاز به کار - - - Network - شبکه - - - Name - اسم - - - Number of connections - تعداد ارتباطات - - - Block chain - زنجیرهٔ بلوک‌ها - - - Current number of blocks - تعداد ÙØ¹Ù„ÛŒ بلوک‌ها - - - Received - Ø¯Ø±ÛŒØ§ÙØªÛŒ - - - Sent - ارسال شده - - - Version - نسخه - - - Services - سرویس ها - - - Last block time - زمان آخرین بلوک - - - &Open - با&ز کردن - - - &Console - &کنسول - - - Totals - جمع Ú©Ù„: - - - Build date - ساخت تاریخ - - - Debug log file - ÙØ§ÛŒÙ„٠لاگ٠اشکال زدایی - - - Clear console - پاکسازی کنسول - - - Welcome to the Bitcoin Core RPC console. - به کنسول RPC هسته بیت کوین خوش آمدید. - - - Use up and down arrows to navigate history, and <b>Ctrl-L</b> to clear screen. - دکمه‌های بالا Ùˆ پایین برای پیمایش تاریخچه Ùˆ <b>Ctrl-L</b> برای پاک کردن ØµÙØ­Ù‡. - - - Type <b>help</b> for an overview of available commands. - برای نمایش یک مرور Ú©Ù„ÛŒ از دستورات ممکن، عبارت <b>help</b> را بنویسید. - - - Unknown - ناشناخته - - - - ReceiveCoinsDialog - - &Label: - &برچسب: - - - Show - نمایش - - - Remove - حذ٠کردن - - - Copy label - Ú©Ù¾ÛŒ برچسب - - - Copy amount - Ú©Ù¾ÛŒ مقدار - - - - ReceiveRequestDialog - - QR Code - کد QR - - - Address - نشانی - - - Amount - مبلغ - - - Label - برچسب - - - Message - پیام - - - Resulting URI too long, try to reduce the text for label / message. - URL ایجاد شده خیلی طولانی است. سعی کنید طول برچسب Ùˆ یا پیام را کمتر کنید. - - - Error encoding URI into QR Code. - خطا در تبدیل نشانی اینترنتی به صورت کد QR. - - - - RecentRequestsTableModel - - Date - تاریخ - - - Label - برچسب - - - Message - پیام - - - Amount - مبلغ - - - (no label) - (بدون برچسب) - - - - SendCoinsDialog - - Send Coins - ارسال سکه - - - Quantity: - تعداد: - - - Bytes: - بایت ها: - - - Amount: - مبلغ: - - - Priority: - اولویت: - - - Fee: - هزینه: - - - After Fee: - هزینه ÛŒ پسین: - - - Change: - پول خورد: - - - fast - سریع - - - Send to multiple recipients at once - ارسال به چند Ø¯Ø±ÛŒØ§ÙØªâ€ŒÚ©Ù†Ù†Ø¯Ù‡Ù” به‌طور همزمان - - - Add &Recipient - &Ø¯Ø±ÛŒØ§ÙØªâ€ŒÚ©Ù†Ù†Ø¯Ù‡Ù” جدید - - - Clear &All - پاکسازی &همه - - - Balance: - تزار: - - - Confirm the send action - عملیات ارسال را تأیید کنید - - - S&end - &ارسال - - - Confirm send coins - ارسال سکه را تأیید کنید - - - Copy amount - Ú©Ù¾ÛŒ مقدار - - - or - یا - - - The amount to pay must be larger than 0. - مبلغ پرداخت باید بیشتر از Û° باشد. - - - The amount exceeds your balance. - میزان پرداخت از تراز شما بیشتر است. - - - The total exceeds your balance when the %1 transaction fee is included. - با احتساب هزینهٔ %1 برای هر تراکنش، مجموع میزان پرداختی از مبلغ تراز شما بیشتر می‌شود. - - - Payment request expired. - درخواست پرداخت منقضی شد. - - - (no label) - (بدون برچسب) - - - Are you sure you want to send? - آیا مطمئن هستید Ú©Ù‡ Ù…ÛŒ خواهید ارسال کنید؟ - - - - SendCoinsEntry - - A&mount: - A&مبلغ : - - - Pay &To: - پرداخ&ت به: - - - Enter a label for this address to add it to your address book - برای این نشانی یک برچسب وارد کنید تا در Ø¯ÙØªØ±Ú†Ù‡Ù” آدرس ذخیره شود - - - &Label: - &برچسب: - - - Choose previously used address - انتخاب نشانی پیش‌تر Ø§Ø³ØªÙØ§Ø¯Ù‡ شده - - - This is a normal payment. - این یک پرداخت عادی است - - - The Bitcoin address to send the payment to - نشانی بیت‌کوین برای ارسال پرداخت به آن - - - Alt+A - Alt+A - - - Paste address from clipboard - چسباندن نشانی از Ø­Ø§ÙØ¸Ù‡Ù” سیستم - - - Alt+P - Alt+P - - - Remove this entry - حذ٠این مدخل - - - Message: - پیام: - - - - ShutdownWindow - - - SignVerifyMessageDialog - - Signatures - Sign / Verify a Message - امضاها - امضا / تأیید یک پیام - - - &Sign Message - ا&مضای پیام - - - The Bitcoin address to sign the message with - نشانی بیت‌کوین برای امضاء پیغام با آن - - - Choose previously used address - انتخاب نشانی پیشتر Ø§Ø³ØªÙØ§Ø¯Ù‡ شده - - - Alt+A - Alt+A - - - Paste address from clipboard - چسباندن نشانی از Ø­Ø§ÙØ¸Ù‡Ù” سیستم - - - Alt+P - Alt+P - - - Enter the message you want to sign here - پیامی را Ú©Ù‡ می‌خواهید امضا کنید در اینجا وارد کنید - - - Signature - امضا - - - Copy the current signature to the system clipboard - امضای ÙØ¹Ù„ÛŒ را به Ø­Ø§ÙØ¸Ù‡Ù” سیستم Ú©Ù¾ÛŒ Ú©Ù† - - - Sign the message to prove you own this Bitcoin address - برای اثبات تعلق این نشانی به شما، پیام را امضا کنید - - - Sign &Message - ا&مضای پیام - - - Reset all sign message fields - بازنشانی تمام Ùیلدهای پیام - - - Clear &All - پاک &کردن همه - - - &Verify Message - &شناسایی پیام - - - The Bitcoin address the message was signed with - نشانی بیت‌کوین Ú©Ù‡ پیغام با آن امضاء شده - - - Verify the message to ensure it was signed with the specified Bitcoin address - برای حصول اطمینان از اینکه پیام با نشانی بیت‌کوین مشخص شده امضا است یا خیر، پیام را شناسایی کنید - - - Verify &Message - &شناسایی پیام - - - Reset all verify message fields - بازنشانی تمام Ùیلدهای پیام - - - Click "Sign Message" to generate signature - برای ایجاد یک امضای جدید روی «امضای پیام» کلیک کنید - - - The entered address is invalid. - نشانی وارد شده نامعتبر است. - - - Please check the address and try again. - Ù„Ø·ÙØ§Ù‹ نشانی را بررسی کنید Ùˆ دوباره تلاش کنید. - - - The entered address does not refer to a key. - نشانی وارد شده به هیچ کلیدی اشاره نمی‌کند. - - - Wallet unlock was cancelled. - عملیات باز کرن Ù‚ÙÙ„ کی٠پول لغو شد. - - - Private key for the entered address is not available. - کلید خصوصی برای نشانی وارد شده در دسترس نیست. - - - Message signing failed. - امضای پیام با شکست مواجه شد. - - - Message signed. - پیام امضا شد. - - - The signature could not be decoded. - امضا نمی‌تواند کدگشایی شود. - - - Please check the signature and try again. - Ù„Ø·ÙØ§Ù‹ امضا را بررسی نموده Ùˆ دوباره تلاش کنید. - - - The signature did not match the message digest. - امضا با خلاصهٔ پیام مطابقت ندارد. - - - Message verification failed. - شناسایی پیام با شکست مواجه شد. - - - Message verified. - پیام شناسایی شد. - - - - SplashScreen - - Bitcoin Core - هسته Bitcoin - - - The Bitcoin Core developers - توسعه‌دهندگان هسته بیت‌کوین - - - [testnet] - آزمایش شبکه - - - - TrafficGraphWidget - - KB/s - کیلوبایت - - - - TransactionDesc - - Open until %1 - باز تا %1 - - - %1/offline - %1/Ø¢Ùلاین - - - %1/unconfirmed - %1/تأیید نشده - - - %1 confirmations - %1 تأییدیه - - - Status - وضعیت - - - , broadcast through %n node(s) - ØŒ پخش از طریق %n گره - - - Date - تاریخ - - - Source - منبع - - - Generated - تولید شده - - - From - ÙØ±Ø³ØªÙ†Ø¯Ù‡ - - - To - گیرنده - - - own address - آدرس شما - - - label - برچسب - - - Credit - بدهی - - - matures in %n more block(s) - بلوغ در %n بلوک دیگر - - - not accepted - Ù¾Ø°ÛŒØ±ÙØªÙ‡ نشد - - - Debit - اعتبار - - - Transaction fee - هزینهٔ تراکنش - - - Net amount - مبلغ خالص - - - Message - پیام - - - Comment - نظر - - - Transaction ID - شناسهٔ تراکنش - - - Debug information - اطلاعات اشکال‌زدایی - - - Transaction - تراکنش - - - Inputs - ورودی‌ها - - - Amount - مبلغ - - - true - درست - - - false - نادرست - - - , has not been successfully broadcast yet - ØŒ هنوز با موÙقیت ارسال نشده - - - Open for %n more block(s) - باز برای %n بلوک دیگر - - - unknown - ناشناس - - - - TransactionDescDialog - - Transaction details - جزئیات تراکنش - - - This pane shows a detailed description of the transaction - این پانل شامل توصی٠کاملی از جزئیات تراکنش است - - - - TransactionTableModel - - Date - تاریخ - - - Type - نوع - - - Open for %n more block(s) - باز برای %n بلوک دیگر - - - Open until %1 - باز شده تا %1 - - - Confirmed (%1 confirmations) - تأیید شده (%1 تأییدیه) - - - This block was not received by any other nodes and will probably not be accepted! - این بلوک از هیچ همتای دیگری Ø¯Ø±ÛŒØ§ÙØª نشده است Ùˆ احتمال می‌رود Ù¾Ø°ÛŒØ±ÙØªÙ‡ نشود! - - - Generated but not accepted - تولید شده ولی قبول نشده - - - Label - برچسب - - - Received with - Ø¯Ø±ÛŒØ§ÙØªâ€ŒØ´Ø¯Ù‡ با - - - Received from - Ø¯Ø±ÛŒØ§ÙØªâ€ŒØ´Ø¯Ù‡ از - - - Sent to - ارسال‌شده به - - - Payment to yourself - پر داخت به خودتان - - - Mined - استخراج‌شده - - - (n/a) - (ناموجود) - - - Transaction status. Hover over this field to show number of confirmations. - وضعیت تراکنش. نشانگر را روی این Ùیلد Ù†Ú¯Ù‡ دارید تا تعداد تأییدیه‌ها نشان داده شود. - - - Date and time that the transaction was received. - تاریخ Ùˆ ساعت Ø¯Ø±ÛŒØ§ÙØª تراکنش. - - - Type of transaction. - نوع تراکنش. - - - Amount removed from or added to balance. - مبلغ کسر شده Ùˆ یا اضاÙÙ‡ شده به تراز. - - - - TransactionView - - All - همه - - - Today - امروز - - - This week - این Ù‡ÙØªÙ‡ - - - This month - این ماه - - - Last month - ماه گذشته - - - This year - امسال - - - Range... - محدوده... - - - Received with - Ø¯Ø±ÛŒØ§ÙØªâ€ŒØ´Ø¯Ù‡ با - - - Sent to - ارسال به - - - To yourself - به خودتان - - - Mined - استخراج‌شده - - - Other - دیگر - - - Enter address or label to search - برای جست‌‌وجو نشانی یا برچسب را وارد کنید - - - Min amount - مبلغ حداقل - - - Copy address - Ú©Ù¾ÛŒ نشانی - - - Copy label - Ú©Ù¾ÛŒ برچسب - - - Copy amount - Ú©Ù¾ÛŒ مقدار - - - Copy transaction ID - Ú©Ù¾ÛŒ شناسهٔ تراکنش - - - Edit label - ویرایش برچسب - - - Show transaction details - نمایش جزئیات تراکنش - - - Exporting Failed - استخراج انجام نشد - - - Exporting Successful - استخراج موÙÙ‚ - - - Comma separated file (*.csv) - پروندهٔ نوع CSV جداشونده با کاما (*.csv) - - - Confirmed - تأیید شده - - - Date - تاریخ - - - Type - نوع - - - Label - برچسب - - - Address - نشانی - - - ID - شناسه - - - Range: - محدوده: - - - to - به - - - - UnitDisplayStatusBarControl - - - WalletFrame - - - WalletModel - - Send Coins - ارسال وجه - - - - WalletView - - &Export - &صدور - - - Export the data in the current tab to a file - داده ها نوار٠جاری را به ÙØ§ÛŒÙ„ انتقال دهید - - - Backup Wallet - نسخهٔ پشتیبان کی٠پول - - - Wallet Data (*.dat) - دادهٔ کی٠پول (*.dat) - - - Backup Failed - خطا در پشتیبان‌گیری - - - Backup Successful - پشتیبان‌گیری موÙÙ‚ - - - - bitcoin-core - - Options: - گزینه‌ها: - - - Specify data directory - مشخص کردن دایرکتوری داده‌ها - - - Connect to a node to retrieve peer addresses, and disconnect - اتصال به یک گره برای Ø¯Ø±ÛŒØ§ÙØª آدرس‌های همتا Ùˆ قطع اتصال پس از اتمام عملیات - - - Specify your own public address - آدرس عمومی خود را مشخص کنید - - - Accept command line and JSON-RPC commands - پذیرش دستورات خط ÙØ±Ù…ان Ùˆ دستورات JSON-RPC - - - Run in the background as a daemon and accept commands - اجرا در پشت زمینه به‌صورت یک سرویس Ùˆ پذیرش دستورات - - - Use the test network - Ø§Ø³ØªÙØ§Ø¯Ù‡ از شبکهٔ آزمایش - - - Accept connections from outside (default: 1 if no -proxy or -connect) - پذیرش اتصالات از بیرون (پیش ÙØ±Ø¶:1 بدون پراکسی یا اتصال) - - - Bind to given address and always listen on it. Use [host]:port notation for IPv6 - مقید به نشانی داده شده باشید Ùˆ همیشه از آن پیروی کنید. از نشانه گذاری استاندار IPv6 به صورت Host]:Port] Ø§Ø³ØªÙØ§Ø¯Ù‡ کنید. - - - Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) - هنگامی Ú©Ù‡ یک تراکنش در کی٠پولی رخ Ù…ÛŒ دهد، دستور را اجرا Ú©Ù†(%s در دستورات بوسیله ÛŒ TxID جایگزین Ù…ÛŒ شود) - - - This is a pre-release test build - use at your own risk - do not use for mining or merchant applications - این یک نسخه ÛŒ آزمایشی است - با مسئولیت خودتان از آن Ø§Ø³ØªÙØ§Ø¯Ù‡ کنید - آن را در معدن Ùˆ بازرگانی بکار نگیرید. - - - Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. - هشدار: مبلغ paytxfee بسیار بالایی تنظیم شده است! این مبلغ هزینه‌ای است Ú©Ù‡ شما برای تراکنش‌ها پرداخت می‌کنید. - - - Block creation options: - بستن گزینه ایجاد - - - Connect only to the specified node(s) - تنها در گره (های) مشخص شده متصل شوید - - - Corrupted block database detected - یک پایگاه داده ÛŒ بلوک خراب ÛŒØ§ÙØª شد - - - Do you want to rebuild the block database now? - آیا مایلید Ú©Ù‡ اکنون پایگاه داده ÛŒ بلوک را بازسازی کنید؟ - - - Error initializing block database - خطا در آماده سازی پایگاه داده ÛŒ بلوک - - - Error loading block database - خطا در بارگذاری پایگاه داده ها - - - Error opening block database - خطا در بازگشایی پایگاه داده ÛŒ بلوک - - - Error: Disk space is low! - خطا: ÙØ¶Ø§ÛŒ دیسک Ú©Ù… است! - - - Failed to listen on any port. Use -listen=0 if you want this. - شنیدن هر گونه درگاه انجام پذیر نیست. ازlisten=0 برای اینکار Ø§Ø³ØªÙØ§Ø¯Ù‡ کیند. - - - Importing... - در حال پیاده‌سازی... - - - Verifying blocks... - در حال بازبینی بلوک ها... - - - Verifying wallet... - در حال بازبینی کی٠پول... - - - Warning: Please check that your computer's date and time are correct! If your clock is wrong Bitcoin Core will not work properly. - هشدار: تاریخ Ùˆ ساعت کامپیوتر خود را بررسی کنید. اگر ساعت درست نباشد هسته بیت‌کوین به درستی کار نخواهد کرد. - - - Choose data directory on startup (default: 0) - انتخاب مسیر داده‌ها در ابتدای اجرای برنامه (Ù¾ÛŒØ´â€ŒÙØ±Ø¶: 0) - - - Information - اطلاعات - - - Send trace/debug info to console instead of debug.log file - اطلاعات ردگیری/اشکال‌زدایی را به جای ÙØ§ÛŒÙ„ لاگ اشکال‌زدایی به کنسول Ø¨ÙØ±Ø³ØªÛŒØ¯ - - - Set language, for example "de_DE" (default: system locale) - زبان را تنظیم کنید؛ برای مثال «de_DE» (زبان Ù¾ÛŒØ´â€ŒÙØ±Ø¶ محلی) - - - Show splash screen on startup (default: 1) - نمایش پنجرهٔ خوشامدگویی در ابتدای اجرای برنامه (Ù¾ÛŒØ´â€ŒÙØ±Ø¶: 1) - - - Shrink debug.log file on client startup (default: 1 when no -debug) - ÙØ§ÛŒÙ„ debug.log را در startup مشتری Ú©ÙˆÚ†Ú© Ú©Ù† (پیش ÙØ±Ø¶:1 اگر اشکال زدایی روی نداد) - - - Start minimized - اجرای برنامه به صورت کوچک‌شده - - - UI Options: - گزینه‌های رابط کاربری: - - - Use UPnP to map the listening port (default: 1 when listening) - از UPnP برای شناسایی درگاه شنیداری Ø§Ø³ØªÙØ§Ø¯Ù‡ کنید (پیش ÙØ±Ø¶:1 در زمان شنیدن) - - - Username for JSON-RPC connections - JSON-RPC شناسه برای ارتباطات - - - Warning - هشدار - - - Password for JSON-RPC connections - JSON-RPC عبارت عبور برای ارتباطات - - - Execute command when the best block changes (%s in cmd is replaced by block hash) - زمانی Ú©Ù‡ بهترین بلاک تغییر کرد، دستور را اجرا Ú©Ù† (%s در cmd با block hash جایگزین شده است) - - - Upgrade wallet to latest format - wallet را به جدیدترین ÙØ±Ù…ت روزآمد کنید - - - Rescan the block chain for missing wallet transactions - اسکان مجدد زنجیر بلوکها برای Ú¯Ù… والت معامله - - - Use OpenSSL (https) for JSON-RPC connections - JSON-RPCبرای ارتباطات Ø§Ø³ØªÙØ§Ø¯Ù‡ کنید OpenSSL (https) - - - This help message - پیام Ú©Ù…Ú©ÛŒ - - - Allow DNS lookups for -addnode, -seednode and -connect - به DNS اجازه بده تا برای addnode ØŒ seednode Ùˆ اتصال جستجو کند - - - Loading addresses... - بار گیری آدرس ها - - - Error loading wallet.dat: Wallet corrupted - خطا در بارگیری wallet.dat: کی٠پول خراب شده است - - - Error loading wallet.dat - خطا در بارگیری wallet.dat - - - Invalid -proxy address: '%s' - آدرس پراکسی اشتباه %s - - - Unknown network specified in -onlynet: '%s' - شبکه مشخص شده غیرقابل شناسایی در onlynet: '%s' - - - Cannot resolve -bind address: '%s' - آدرس قابل اتصال- شناسایی نیست %s - - - Cannot resolve -externalip address: '%s' - آدرس خارجی قابل اتصال- شناسایی نیست %s - - - Invalid amount for -paytxfee=<amount>: '%s' - میزان وجه اشتباه برای paytxfee=<میزان وجه>: %s - - - Insufficient funds - بود جه نا کاÙÛŒ - - - Loading block index... - بار گیری شاخص بلوک - - - Add a node to connect to and attempt to keep the connection open - به اتصال یک گره اضاÙÙ‡ کنید Ùˆ اتصال را باز نگاه دارید - - - Loading wallet... - بار گیری والت - - - Cannot downgrade wallet - امکان تنزل نسخه در wallet وجود ندارد - - - Cannot write default address - آدرس پیش ÙØ±Ø¶ قابل ذخیره نیست - - - Rescanning... - اسکان مجدد - - - Done loading - بار گیری انجام شده است - - - Error - خطا - - - \ No newline at end of file diff --git a/src/qt/locale/bitcoin_fa_IR.ts b/src/qt/locale/bitcoin_fa_IR.ts deleted file mode 100644 index 1174e24b4..000000000 --- a/src/qt/locale/bitcoin_fa_IR.ts +++ /dev/null @@ -1,1112 +0,0 @@ - - - AddressBookPage - - Create a new address - گشایش حسابی جدید - - - &New - جدید - - - Copy the currently selected address to the system clipboard - Ú©Ù¾ÛŒ کردن حساب انتخاب شده به Ø­Ø§ÙØ¸Ù‡ سیستم - کلیپ بورد - - - &Copy - Ú©Ù¾ÛŒ - - - C&lose - بستن - - - &Copy Address - Ú©Ù¾ÛŒ آدرس - - - Delete the currently selected address from the list - حذ٠آدرس های انتخاب شده از لیست - - - Export the data in the current tab to a file - صدور داده نوار جاری به یک ÙØ§ÛŒÙ„ - - - &Export - صدور - - - &Delete - حذ٠- - - Choose the address to send coins to - انتخاب آدرس جهت ارسال کوین ها به آن آدرس - - - Choose the address to receive coins with - انتخاب آدرس جهت Ø¯Ø±ÛŒØ§ÙØª کوین ها از آن آدرس - - - C&hoose - انتخاب - - - Sending addresses - ارسال آدرس ها - - - Receiving addresses - Ø¯Ø±ÛŒØ§ÙØª آدرس ها - - - Copy &Label - Ú©Ù¾ÛŒ برچسب - - - &Edit - ویرایش - - - Export Address List - صدور لیست آدرس - - - Comma separated file (*.csv) - ÙØ§ÛŒÙ„ سی اس ÙˆÛŒ (*.csv) - - - Exporting Failed - صدور با شکست مواجه شد - - - There was an error trying to save the address list to %1. Please try again. - خطایی به هنگام ذخیره لیست آدرس در %1 رخ داده است. Ù„Ø·ÙØ§ دوباره تلاش کنید. - - - - AddressTableModel - - Label - برچسب - - - Address - حساب - - - (no label) - (برچسب ندارد) - - - - AskPassphraseDialog - - Passphrase Dialog - دیالوگ رمزعبور - - - Enter passphrase - رمز/پَس ÙØ±Ùیز را وارد کنید - - - New passphrase - رمز/پَس ÙØ±Ùیز جدید را وارد کنید - - - Repeat new passphrase - رمز/پَس ÙØ±Ùیز را دوباره وارد کنید - - - Encrypt wallet - wallet را رمزگذاری کنید - - - This operation needs your wallet passphrase to unlock the wallet. - برای انجام این عملکرد به رمز/پَس ÙØ±ÙیزÙwallet نیاز است تا آن را از حالت Ù‚ÙÙ„ درآورد. - - - Unlock wallet - باز کردن Ù‚ÙÙ„ wallet - - - This operation needs your wallet passphrase to decrypt the wallet. - برای کش٠رمز walletØŒ به رمز/پَس ÙØ±ÙیزÙwallet نیاز است. - - - Decrypt wallet - کش٠رمز wallet - - - Change passphrase - تغییر رمز/پَس ÙØ±Ùیز - - - Confirm wallet encryption - رمزگذاری wallet را تایید کنید - - - Warning: The Caps Lock key is on! - اخطار: کلید Caps Lock ÙØ¹Ø§Ù„ است! - - - Wallet encrypted - تایید رمزگذاری - - - Enter the old passphrase and new passphrase to the wallet. - رمز قدیمی Ùˆ جدید کی٠پول را وارد کنید. - - - Wallet encryption failed - رمزگذاری تایید نشد - - - Wallet encryption failed due to an internal error. Your wallet was not encrypted. - رمزگذاری به علت خطای داخلی تایید نشد. wallet شما رمزگذاری نشد - - - The supplied passphrases do not match. - رمزهای/پَس ÙØ±Ùیزهای٠وارد شده با هم تطابق ندارند - - - Wallet unlock failed - Ù‚ÙÙ„ wallet باز نشد - - - The passphrase entered for the wallet decryption was incorrect. - رمزهای/پَس ÙØ±Ùیزهای٠وارد شده wallet برای کش٠رمز اشتباه است. - - - Wallet decryption failed - کش٠رمز wallet انجام نشد - - - Wallet passphrase was successfully changed. - رمز عبور کی٠پول با موÙقیت تغییر کرد. - - - - BitcoinGUI - - Sign &message... - امضا Ùˆ پیام - - - Synchronizing with network... - به روز رسانی با شبکه... - - - &Overview - Ùˆ بازبینی - - - Show general overview of wallet - نمای Ú©Ù„ÛŒ از wallet را نشان بده - - - &Transactions - Ùˆ تراکنش - - - Browse transaction history - تاریخچه تراکنش را باز Ú©Ù† - - - E&xit - خروج - - - Quit application - از "درخواست نامه"/ application خارج شو - - - About &Qt - درباره Ùˆ Qt - - - Show information about Qt - نمایش اطلاعات درباره Qt - - - &Options... - Ùˆ انتخابها - - - &Encrypt Wallet... - Ùˆ رمزگذاری wallet - - - &Backup Wallet... - Ùˆ Ú¯Ø±ÙØªÙ† نسخه پیشتیبان از wallet - - - &Change Passphrase... - تغییر رمز/پَس ÙØ±Ùیز - - - Backup wallet to another location - Ú¯Ø±ÙØªÙ† نسخه پیشتیبان در آدرسی دیگر - - - Change the passphrase used for wallet encryption - رمز مربوط به رمزگذاری٠wallet را تغییر دهید - - - Bitcoin - bitcoin - - - Wallet - کی٠پول - - - &Send - Ùˆ ارسال - - - &Show / Hide - &نمایش/ عدم نمایش Ùˆ - - - &File - Ùˆ ÙØ§ÛŒÙ„ - - - &Settings - Ùˆ تنظیمات - - - &Help - Ùˆ راهنما - - - Tabs toolbar - نوار ابزار - - - Error - خطا - - - Up to date - روزآمد - - - Catching up... - در حال روزآمد سازی.. - - - Sent transaction - ارسال تراکنش - - - Incoming transaction - تراکنش Ø¯Ø±ÛŒØ§ÙØªÛŒ - - - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - wallet رمزگذاری شد Ùˆ در حال حاضر از حالت Ù‚ÙÙ„ در آمده است - - - Wallet is <b>encrypted</b> and currently <b>locked</b> - wallet رمزگذاری شد Ùˆ در حال حاضر Ù‚ÙÙ„ است - - - - ClientModel - - Network Alert - هشدار شبکه - - - - CoinControlDialog - - Amount: - میزان وجه: - - - Amount - میزان - - - Date - تاریخ - - - Confirmed - تایید شده - - - Copy address - آدرس را Ú©Ù¾ÛŒ کنید - - - Copy label - برچسب را Ú©Ù¾ÛŒ کنید - - - Copy amount - میزان وجه Ú©Ù¾ÛŒ شود - - - (no label) - (برچسب ندارد) - - - - EditAddressDialog - - Edit Address - ویرایش حساب - - - &Label - Ùˆ برچسب - - - &Address - حساب& - - - New receiving address - حساب Ø¯Ø±ÛŒØ§ÙØª کننده جدید - - - - New sending address - حساب ارسال کننده جدید - - - Edit receiving address - ویرایش حساب Ø¯Ø±ÛŒØ§ÙØª کننده - - - Edit sending address - ویرایش حساب ارسال کننده - - - The entered address "%1" is not a valid Bitcoin address. - آدرس وارد شده "%1" یک آدرس صحیح برای bitcoin نسشت - - - Could not unlock wallet. - عدم توانیی برای Ù‚ÙÙ„ گشایی wallet - - - New key generation failed. - عدم توانیی در ایجاد کلید جدید - - - - FreespaceChecker - - - HelpMessageDialog - - version - نسخه - - - Usage: - میزان Ø§Ø³ØªÙØ§Ø¯Ù‡: - - - - Intro - - Error - خطا - - - - OpenURIDialog - - - OptionsDialog - - Options - انتخاب/آپشن - - - &OK - Ùˆ تایید - - - &Cancel - Ùˆ رد - - - default - پیش ÙØ±Ø¶ - - - - OverviewPage - - Form - ÙØ±Ù… - - - The displayed information may be out of date. Your wallet automatically synchronizes with the Bitcoin network after a connection is established, but this process has not completed yet. - اطلاعات نمایش داده شده ممکن است روزآمد نباشد. wallet شما به صورت خودکار بعد از برقراری اتصال با شبکه bitcoin به روز Ù…ÛŒ شود اما این ÙØ±Ø§ÛŒÙ†Ø¯ هنوز تکمیل نشده است. - - - - PaymentServer - - - PeerTableModel - - - QObject - - Amount - میزان - - - - QRImageWidget - - - RPCConsole - - Client name - نام کنسول RPC - - - Client version - ویرایش کنسول RPC - - - Network - شبکه - - - Number of connections - تعداد اتصال - - - Block chain - زنجیره مجموعه تراکنش ها - - - Current number of blocks - تعداد زنجیره های حاضر - - - - ReceiveCoinsDialog - - &Label: - Ùˆ برچسب - - - Copy label - برچسب را Ú©Ù¾ÛŒ کنید - - - Copy amount - میزان وجه Ú©Ù¾ÛŒ شود - - - - ReceiveRequestDialog - - Address - حساب - - - Amount - میزان - - - Label - برچسب - - - Message - پیام - - - Resulting URI too long, try to reduce the text for label / message. - متن وارد شده طولانی است، متن٠برچسب/پیام را کوتاه کنید - - - Error encoding URI into QR Code. - خطای تبدیل URI به کد QR - - - - RecentRequestsTableModel - - Date - تاریخ - - - Label - برچسب - - - Message - پیام - - - Amount - میزان - - - (no label) - (برچسب ندارد) - - - - SendCoinsDialog - - Send Coins - سکه های ارسالی - - - Amount: - میزان وجه: - - - Send to multiple recipients at once - ارسال همزمان به گیرنده های متعدد - - - Balance: - مانده حساب: - - - Confirm the send action - تایید عملیات ارسال - - - S&end - Ùˆ ارسال - - - Confirm send coins - تایید ارسال بیت کوین ها - - - Copy amount - میزان وجه Ú©Ù¾ÛŒ شود - - - The amount to pay must be larger than 0. - میزان پرداخت باید بیشتر از 0 باشد - - - The amount exceeds your balance. - مقدار مورد نظر از مانده حساب بیشتر است. - - - (no label) - (برچسب ندارد) - - - - SendCoinsEntry - - A&mount: - Ùˆ میزان وجه - - - Pay &To: - پرداخت Ùˆ به Ú†Ù‡ کسی - - - Enter a label for this address to add it to your address book - یک برچسب برای این آدرس بنویسید تا به Ø¯ÙØªØ±Ú†Ù‡ آدرسهای شما اضاÙÙ‡ شود - - - &Label: - Ùˆ برچسب - - - Alt+A - Alt Ùˆ A - - - Paste address from clipboard - آدرس را بر کلیپ بورد Ú©Ù¾ÛŒ کنید - - - Alt+P - Alt Ùˆ P - - - Message: - پیام: - - - Pay To: - پرداخت به: - - - Memo: - یادداشت: - - - - ShutdownWindow - - Bitcoin Core is shutting down... - هسته بیت کوین در حال خاموش شدن است... - - - Do not shut down the computer until this window disappears. - تا پیش از بسته شدن این پنجره کامپیوتر خود را خاموش نکنید. - - - - SignVerifyMessageDialog - - &Sign Message - Ùˆ امضای پیام - - - Alt+A - Alt Ùˆ A - - - Paste address from clipboard - آدرس را بر کلیپ بورد Ú©Ù¾ÛŒ کنید - - - Alt+P - Alt Ùˆ P - - - - SplashScreen - - [testnet] - [testnet] - - - - TrafficGraphWidget - - - TransactionDesc - - Open until %1 - باز Ú©Ù† تا %1 - - - %1/unconfirmed - %1 / تایید نشده - - - %1 confirmations - %1 تایید - - - Date - تاریخ - - - label - برچسب - - - Message - پیام - - - Transaction ID - شناسه کاربری - - - Amount - میزان - - - , has not been successfully broadcast yet - ØŒ هنوز با موÙقیت ارسال نگردیده است - - - unknown - ناشناس - - - - TransactionDescDialog - - Transaction details - جزئیات تراکنش - - - This pane shows a detailed description of the transaction - این بخش جزئیات تراکنش را نشان Ù…ÛŒ دهد - - - - TransactionTableModel - - Date - تاریخ - - - Type - گونه - - - Open until %1 - باز Ú©Ù† تا %1 - - - Confirmed (%1 confirmations) - تایید شده (%1 تاییدها) - - - This block was not received by any other nodes and will probably not be accepted! - این block توسط گره های دیگری Ø¯Ø±ÛŒØ§ÙØª نشده است Ùˆ ممکن است قبول نشود - - - Generated but not accepted - تولید شده اما قبول نشده است - - - Label - برچسب - - - Received with - Ø¯Ø±ÛŒØ§ÙØª با - - - Received from - Ø¯Ø±ÛŒØ§ÙØª شده از - - - Sent to - ارسال به - - - Payment to yourself - وجه برای شما - - - Mined - استخراج شده - - - (n/a) - خالی - - - Transaction status. Hover over this field to show number of confirmations. - وضعیت تراکنش. با اشاره به این بخش تعداد تاییدها نمایش داده Ù…ÛŒ شود - - - Date and time that the transaction was received. - زمان Ùˆ تاریخی Ú©Ù‡ تراکنش Ø¯Ø±ÛŒØ§ÙØª شده است - - - Type of transaction. - نوع تراکنش - - - Amount removed from or added to balance. - میزان وجه Ú©Ù… شده یا اضاÙÙ‡ شده به حساب - - - - TransactionView - - All - همه - - - Today - امروز - - - This week - این Ù‡ÙØªÙ‡ - - - This month - این ماه - - - Last month - ماه گذشته - - - This year - این سال - - - Range... - حدود.. - - - Received with - Ø¯Ø±ÛŒØ§ÙØª با - - - Sent to - ارسال به - - - To yourself - به شما - - - Mined - استخراج شده - - - Other - دیگر - - - Enter address or label to search - آدرس یا برچسب را برای جستجو وارد کنید - - - Min amount - حداقل میزان وجه - - - Copy address - آدرس را Ú©Ù¾ÛŒ کنید - - - Copy label - برچسب را Ú©Ù¾ÛŒ کنید - - - Copy amount - میزان وجه Ú©Ù¾ÛŒ شود - - - Edit label - برچسب را ویرایش کنید - - - Exporting Failed - صدور با شکست مواجه شد - - - Exporting Successful - صدور با موÙقیت انجام شد - - - Comma separated file (*.csv) - Comma separated file (*.csv) ÙØ§ÛŒÙ„ جداگانه دستوری - - - Confirmed - تایید شده - - - Date - تاریخ - - - Type - گونه - - - Label - برچسب - - - Address - حساب - - - ID - شناسه کاربری - - - Range: - دامنه: - - - to - به - - - - UnitDisplayStatusBarControl - - - WalletFrame - - - WalletModel - - Send Coins - سکه های ارسالی - - - - WalletView - - &Export - صدور - - - Export the data in the current tab to a file - صدور داده نوار جاری به یک ÙØ§ÛŒÙ„ - - - Backup Wallet - Ú¯Ø±ÙØªÙ† نسخه پیشتیبان از Wallet - - - Wallet Data (*.dat) - داده های Wallet -(*.dat) - - - Backup Failed - عملیات Ú¯Ø±ÙØªÙ† نسخه پیشتیبان انجام نشد - - - - bitcoin-core - - Options: - انتخابها: - - - Specify data directory - دایرکتوری داده را مشخص Ú©Ù† - - - Accept command line and JSON-RPC commands - command line Ùˆ JSON-RPC commands را قبول کنید - - - Run in the background as a daemon and accept commands - به عنوان daemon بک گراند را اجرا کنید Ùˆ دستورات را قبول نمایید - - - Use the test network - از تست٠شبکه Ø§Ø³ØªÙØ§Ø¯Ù‡ نمایید - - - The transaction amount is too small to send after the fee has been deducted - مبلغ تراکنش کمتر از آن است Ú©Ù‡ پس از کسر هزینه تراکنش قابل ارسال باشد - - - RPC server options: - گزینه های سرویس دهنده RPC: - - - Send trace/debug info to console instead of debug.log file - ارسال اطلاعات پیگیری/خطایابی به کنسول به جای ارسال به ÙØ§ÛŒÙ„ debug.log - - - Send transactions as zero-fee transactions if possible (default: %u) - ارسال تراکنش ها به صورت بدون کارمزد در صورت امکان (پیش ÙØ±Ø¶: %u) - - - Username for JSON-RPC connections - شناسه کاربری برای ارتباطات٠JSON-RPC - - - Password for JSON-RPC connections - رمز برای ارتباطات٠JSON-RPC - - - Execute command when the best block changes (%s in cmd is replaced by block hash) - دستور را وقتی بهترین بلاک تغییر کرد اجرا Ú©Ù† (%s در دستور توسط block hash جایگزین شده است) - - - Upgrade wallet to latest format - wallet را به جدیدترین نسخه روزآمد کنید - - - Rescan the block chain for missing wallet transactions - زنجیره بلاک را برای تراکنش جا Ø§ÙØªØ§Ø¯Ù‡ در WALLET دوباره اسکن کنید - - - Use OpenSSL (https) for JSON-RPC connections - برای ارتباطات٠JSON-RPC از OpenSSL (https) Ø§Ø³ØªÙØ§Ø¯Ù‡ کنید - - - This help message - این پیام راهنما - - - Loading addresses... - لود شدن آدرسها.. - - - Error loading wallet.dat: Wallet corrupted - خطا در هنگام لود شدن wallet.dat: Wallet corrupted - - - Error loading wallet.dat - خطا در هنگام لود شدن wallet.dat - - - Set minimum block size in bytes (default: %u) - تنظیم کمینه اندازه بلاک بر حسب بایت (پیش ÙØ±Ø¶: %u) - - - Set the number of threads to service RPC calls (default: %d) - تنظیم تعداد ریسمان ها برای سرویس دهی ÙØ±Ø§Ø®ÙˆØ§Ù†ÛŒ های RPC (پیش ÙØ±Ø¶: %d) - - - Specify configuration file (default: %s) - ÙØ§ÛŒÙ„ تنظیمات را مشخص کنید (پیش ÙØ±Ø¶: %s) - - - Specify pid file (default: %s) - ÙØ§ÛŒÙ„ pid را مشخص کنید (پیش ÙØ±Ø¶: %s) - - - Invalid amount for -paytxfee=<amount>: '%s' - میزان اشتباه است for -paytxfee=<amount>: '%s' - - - Insufficient funds - وجوه ناکاÙÛŒ - - - Loading block index... - لود شدن نمایه بلاکها.. - - - Add a node to connect to and attempt to keep the connection open - یک گره برای اتصال اضاÙÙ‡ کنید Ùˆ تلاش کنید تا اتصال را باز نگاه دارید - - - Loading wallet... - wallet در حال لود شدن است... - - - Cannot downgrade wallet - قابلیت برگشت به نسخه قبلی برای wallet امکان پذیر نیست - - - Cannot write default address - آدرس پیش ÙØ±Ø¶ قابل ذخیره نیست - - - Rescanning... - اسکن٠دوباره... - - - Done loading - اتمام لود شدن - - - Error - خطا - - - \ No newline at end of file diff --git a/src/qt/locale/bitcoin_fi.ts b/src/qt/locale/bitcoin_fi.ts deleted file mode 100644 index 661864964..000000000 --- a/src/qt/locale/bitcoin_fi.ts +++ /dev/null @@ -1,3272 +0,0 @@ - - - AddressBookPage - - Right-click to edit address or label - Valitse hiiren oikealla painikkeella muokataksesi osoitetta tai nimikettä - - - Create a new address - Luo uusi osoite - - - &New - &Uusi - - - Copy the currently selected address to the system clipboard - Kopioi valittu osoite leikepöydälle - - - &Copy - &Kopioi - - - C&lose - S&ulje - - - &Copy Address - &Kopioi osoite - - - Delete the currently selected address from the list - Poista valittu osoite listalta - - - Export the data in the current tab to a file - Vie auki olevan välilehden tiedot tiedostoon - - - &Export - &Vie - - - &Delete - &Poista - - - Choose the address to send coins to - Valitse osoite johon kolikot lähetetään - - - Choose the address to receive coins with - Valitse osoite johon vastaanotetaan kolikoita - - - C&hoose - V&alitse - - - Sending addresses - Lähettävä osoite - - - Receiving addresses - Vastaanottava osoite - - - These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins. - Nämä ovat sinun Bitcoin osoitteita maksujen lähetykseen. Tarkista aina summa ja vastaanottajan osoite ennenkuin lähetät kolikkoja. - - - These are your Bitcoin addresses for receiving payments. It is recommended to use a new receiving address for each transaction. - Nämä ovat sinun Bitcoin-osoitteesi suoritusten vastaanottamiseen. Suositellaan että annat uuden osoitteen kullekin transaktiolle. - - - Copy &Label - Kopioi &nimike - - - &Edit - &Muokkaa - - - Export Address List - Vie osoitekirja - - - Comma separated file (*.csv) - Comma separated file (*.csv) - - - Exporting Failed - Vienti epäonnistui - - - There was an error trying to save the address list to %1. Please try again. - Virhe tallentaessa osoitelistaa %1. Yritä uudelleen. - - - - AddressTableModel - - Label - Nimi - - - Address - Osoite - - - (no label) - (ei nimikettä) - - - - AskPassphraseDialog - - Passphrase Dialog - Tunnuslauseen tekstinsyöttökenttä - - - Enter passphrase - Kirjoita tunnuslause - - - New passphrase - Uusi tunnuslause - - - Repeat new passphrase - Toista uusi tunnuslause - - - Encrypt wallet - Salaa lompakko - - - This operation needs your wallet passphrase to unlock the wallet. - Tätä toimintoa varten sinun täytyy antaa lompakon tunnuslause sen avaamiseksi. - - - Unlock wallet - Avaa lompakko - - - This operation needs your wallet passphrase to decrypt the wallet. - Tätä toimintoa varten sinun täytyy antaa lompakon tunnuslause salauksen purkuun. - - - Decrypt wallet - Pura lompakon salaus - - - Change passphrase - Vaihda tunnuslause - - - Confirm wallet encryption - Vahvista lompakon salaus - - - Warning: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR BITCOINS</b>! - Varoitus: Jos salaat lompakkosi ja menetät tunnuslauseesi, <b>MENETÄT KAIKKI BITCOINISI</b>! - - - Are you sure you wish to encrypt your wallet? - Haluatko varmasti salata lompakkosi? - - - Bitcoin Core 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. - Bitcoin Core sammuu nyt viimeistelläkseen kryptaamisen. Muista että lompakon kryptaaminen ei voi täysin suojata bitcoinejasi varkaudelta malwaren saastuttamalla tietokoneella. - - - 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. - TÄRKEÄÄ: Kaikki vanhat lompakon varmuuskopiot pitäisi korvata uusilla suojatuilla varmuuskopioilla. Turvallisuussyistä edelliset varmuuskopiot muuttuvat turhiksi, kun aloitat suojatun lompakon käytön. - - - Warning: The Caps Lock key is on! - Varoitus: Caps Lock on käytössä! - - - Wallet encrypted - Lompakko salattu - - - 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>. - Anna salauslause lompakkoon. <br/>Ole hyvä ja käytä lausetta jossa on <b>kymmenen tai enemmän satunnaista merkkiä</b> tai <b>kahdeksan tai useampi sanaa</b>. - - - Enter the old passphrase and new passphrase to the wallet. - Syötä vanha ja uusi salasana lompakolle. - - - Wallet encryption failed - Lompakon salaus epäonnistui - - - Wallet encryption failed due to an internal error. Your wallet was not encrypted. - Lompakon salaaminen epäonnistui sisäisen virheen vuoksi. Lompakkoasi ei salattu. - - - The supplied passphrases do not match. - Annetut tunnuslauseet eivät täsmää. - - - Wallet unlock failed - Lompakon avaaminen epäonnistui. - - - The passphrase entered for the wallet decryption was incorrect. - Annettu tunnuslause oli väärä. - - - Wallet decryption failed - Lompakon salauksen purku epäonnistui. - - - Wallet passphrase was successfully changed. - Lompakon tunnuslause vaihdettiin onnistuneesti. - - - - BitcoinGUI - - Sign &message... - &Allekirjoita viesti... - - - Synchronizing with network... - Synkronoidaan verkon kanssa... - - - &Overview - &Yleisnäkymä - - - Node - Solmu - - - Show general overview of wallet - Lompakon tilanteen yleiskatsaus - - - &Transactions - &Rahansiirrot - - - Browse transaction history - Selaa rahansiirtohistoriaa - - - E&xit - L&opeta - - - Quit application - Sulje ohjelma - - - About &Qt - Tietoja &Qt - - - Show information about Qt - Näytä tietoja Qt:ta - - - &Options... - &Asetukset... - - - &Encrypt Wallet... - &Salaa lompakko... - - - &Backup Wallet... - &Varmuuskopioi Lompakko... - - - &Change Passphrase... - &Vaihda Tunnuslause... - - - &Sending addresses... - &Lähetysosoitteet... - - - &Receiving addresses... - &Vastaanotto-osoitteet... - - - Open &URI... - Avaa &URI... - - - Bitcoin Core client - Bitcoin Core ohjelma - - - Importing blocks from disk... - Tuodaan lohkoja levyltä - - - Reindexing blocks on disk... - Ladataan lohkoindeksiä... - - - Send coins to a Bitcoin address - Lähetä kolikoita Bitcoin-osoitteeseen - - - Backup wallet to another location - Varmuuskopioi lompakko toiseen sijaintiin - - - Change the passphrase used for wallet encryption - Vaihda lompakon salaukseen käytettävä tunnuslause - - - &Debug window - &Testausikkuna - - - Open debugging and diagnostic console - Avaa debuggaus- ja diagnostiikkakonsoli - - - &Verify message... - Varmista &viesti... - - - Bitcoin - Bitcoin - - - Wallet - Lompakko - - - &Send - &Lähetä - - - &Receive - &Vastaanota - - - Show information about Bitcoin Core - Näytä tietoja Bitcoin Core:sta - - - &Show / Hide - &Näytä / Piilota - - - Show or hide the main Window - Näytä tai piilota Bitcoin-ikkuna - - - Encrypt the private keys that belong to your wallet - Suojaa yksityiset avaimet, jotka kuuluvat lompakkoosi - - - Sign messages with your Bitcoin addresses to prove you own them - Allekirjoita viestisi omalla Bitcoin -osoitteellasi todistaaksesi, että omistat ne - - - Verify messages to ensure they were signed with specified Bitcoin addresses - Varmista, että viestisi on allekirjoitettu määritetyllä Bitcoin -osoitteella - - - &File - &Tiedosto - - - &Settings - &Asetukset - - - &Help - &Apua - - - Tabs toolbar - Välilehtipalkki - - - Bitcoin Core - Bitcoin-ydin - - - Request payments (generates QR codes and bitcoin: URIs) - Pyydä maksuja (Luo QR koodit ja bitcoin: URIt) - - - &About Bitcoin Core - &Tietoja Bitcoin Core - - - Modify configuration options for Bitcoin Core - Muokkaa kokoonpanoasetuksia Bitcoin Corelle - - - Show the list of used sending addresses and labels - Näytä lähettämiseen käytettyjen osoitteiden ja nimien lista - - - Show the list of used receiving addresses and labels - Näytä vastaanottamiseen käytettyjen osoitteiden ja nimien lista - - - Open a bitcoin: URI or payment request - Avaa bitcoin: URI tai maksupyyntö - - - &Command-line options - &Komentorivin valinnat - - - Show the Bitcoin Core help message to get a list with possible Bitcoin command-line options - Näytä Bitcoin Core ohjeet saadaksesi listan mahdollisista Bitcoinin komentorivivalinnoista - - - %n active connection(s) to Bitcoin network - %n aktiivinen yhteys Bitcoin-verkkoon%n aktiivista yhteyttä Bitcoin-verkkoon - - - No block source available... - Lohkojen lähdettä ei saatavilla... - - - Processed %n block(s) of transaction history. - Prosessoitu %n lohko rahansiirtohistoriasta.Prosessoitu %n lohkoa rahansiirtohistoriasta. - - - %n hour(s) - %n tunti%n tuntia - - - %n day(s) - %n päivä%n päivää - - - %n week(s) - %n viikko%n viikkoa - - - %1 and %2 - %1 ja %2 - - - %n year(s) - %n vuosi%n vuotta - - - %1 behind - %1 jäljessä - - - Last received block was generated %1 ago. - Viimeisin vastaanotettu lohko tuotettu %1. - - - Transactions after this will not yet be visible. - Tämän jälkeiset rahansiirrot eivät ole vielä näkyvissä. - - - Error - Virhe - - - Warning - Varoitus - - - Information - Tietoa - - - Up to date - Rahansiirtohistoria on ajan tasalla - - - Catching up... - Saavutetaan verkkoa... - - - Date: %1 - - Päivämäärä: %1 - - - - Amount: %1 - - Määrä: %1 - - - - Type: %1 - - Tyyppi: %1 - - - - Label: %1 - - Nimike: %1 - - - - Address: %1 - - Osoite: %1 - - - - Sent transaction - Lähetetyt rahansiirrot - - - Incoming transaction - Saapuva rahansiirto - - - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - Lompakko on <b>salattu</b> ja tällä hetkellä <b>avoinna</b> - - - Wallet is <b>encrypted</b> and currently <b>locked</b> - Lompakko on <b>salattu</b> ja tällä hetkellä <b>lukittuna</b> - - - - ClientModel - - Network Alert - Verkkohälytys - - - - CoinControlDialog - - Coin Selection - Kolikoiden valinta - - - Quantity: - Määrä: - - - Bytes: - Tavuja: - - - Amount: - Määrä: - - - Priority: - Prioriteetti: - - - Fee: - Palkkio: - - - Dust: - Tomu: - - - After Fee: - Palkkion jälkeen: - - - Change: - Vaihtoraha: - - - (un)select all - (epä)valitse kaikki - - - Tree mode - Puurakenne - - - List mode - Listarakenne - - - Amount - Määrä - - - Received with label - Vastaanotettu nimikkeellä - - - Received with address - Vastaanotettu osoitteella - - - Date - Aika - - - Confirmations - Vahvistuksia - - - Confirmed - Vahvistettu - - - Priority - Prioriteetti - - - Copy address - Kopioi osoite - - - Copy label - Kopioi nimi - - - Copy amount - Kopioi määrä - - - Copy transaction ID - Kopioi siirtotunnus - - - Lock unspent - Lukitse käyttämättömät - - - Unlock unspent - Avaa käyttämättömät - - - Copy quantity - Kopioi määrä - - - Copy fee - Kopioi palkkio - - - Copy after fee - Kopioi palkkion jälkeen - - - Copy bytes - Kopioi tavut - - - Copy priority - Kopioi prioriteetti - - - Copy dust - Kopioi tomu - - - Copy change - Kopioi vaihtoraha - - - highest - korkein - - - higher - korkeampi - - - high - korkea - - - medium-high - keski-korkea - - - medium - keskisuuri - - - low-medium - pieni-keskisuuri - - - low - pieni - - - lower - pienempi - - - lowest - pienin - - - (%1 locked) - (%1 lukittu) - - - none - ei mitään - - - This label turns red if the transaction size is greater than 1000 bytes. - Tämä nimi muuttuu punaiseksi mikäli rahansiirron koko on suurempi kuin 1000 tavua. - - - This label turns red if the priority is smaller than "medium". - Tämä nimi muuttuu punaiseksi mikäli prioriteetti on pienempi kuin "medium". - - - This label turns red if any recipient receives an amount smaller than %1. - Tämä nimike muuttuu punaiseksi mikäli mikä tahansa saaja vastaanottaa pienemmän määrän kuin %1. - - - Can vary +/- %1 satoshi(s) per input. - Saattaa vaihdella +/- %1 satoshia per syöte. - - - yes - kyllä - - - no - ei - - - This means a fee of at least %1 per kB is required. - Tämä tarkoittaa että vähintään %1 per kB palkkio on pakollinen. - - - Can vary +/- 1 byte per input. - Voi vaihdella +/- 1 tavu per syöte - - - Transactions with higher priority are more likely to get included into a block. - Rahansiirrot korkeammalla prioriteetilla sisällytetään varmemmin lohkoon. - - - (no label) - (ei nimeä) - - - change from %1 (%2) - Vaihda %1 (%2) - - - (change) - (vaihtoraha) - - - - EditAddressDialog - - Edit Address - Muokkaa osoitetta - - - &Label - &Nimi - - - The label associated with this address list entry - Tähän osoitteeseen liitetty nimi - - - The address associated with this address list entry. This can only be modified for sending addresses. - Osoite liitettynä tähän osoitekirjan alkioon. Tämä voidaan muokata vain lähetysosoitteissa. - - - &Address - &Osoite - - - New receiving address - Uusi vastaanottava osoite - - - New sending address - Uusi lähettävä osoite - - - Edit receiving address - Muokkaa vastaanottajan osoitetta - - - Edit sending address - Muokkaa lähtevää osoitetta - - - The entered address "%1" is already in the address book. - Osoite "%1" on jo osoitekirjassa. - - - The entered address "%1" is not a valid Bitcoin address. - Antamasi osoite "%1" ei ole validi Bitcoin-osoite. - - - Could not unlock wallet. - Lompakkoa ei voitu avata. - - - New key generation failed. - Uuden avaimen luonti epäonnistui. - - - - FreespaceChecker - - A new data directory will be created. - Luodaan uusi kansio. - - - name - Nimi - - - Directory already exists. Add %1 if you intend to create a new directory here. - Hakemisto on jo olemassa. Lisää %1 jos tarkoitus on luoda hakemisto tänne. - - - Path already exists, and is not a directory. - Polku on jo olemassa, eikä se ole kansio. - - - Cannot create data directory here. - Ei voida luoda data-hakemistoa tänne. - - - - HelpMessageDialog - - Bitcoin Core - Bitcoin-ydin - - - version - versio - - - (%1-bit) - (%1-bit) - - - About Bitcoin Core - Tietoja Bitcoin Core - - - Command-line options - Komentorivi parametrit - - - Usage: - Käyttö: - - - command-line options - komentorivi parametrit - - - - Intro - - Welcome - Tervetuloa - - - Welcome to Bitcoin Core. - Tervetuloa Bitcoin Core - - - As this is the first time the program is launched, you can choose where Bitcoin Core will store its data. - Tämän on ensimmäinen kerta kun Bitcoin Core on käynnistetty joten voit valita data-hakemiston paikan. - - - Bitcoin Core will download and store a copy of the Bitcoin block chain. At least %1GB of data will be stored in this directory, and it will grow over time. The wallet will also be stored in this directory. - Bitcoin Core lataa ja tallentaa kopion Bitcoinin lohkoketjusta. Vähintään %1GB dataa tullaan tallentamaan tähän hakemistoon ja tarve kasvaa ajan myötä. Lomakko tullaan myös tallentamaan tähän hakemistoon. - - - Use the default data directory - Käytä oletuskansiota - - - Use a custom data directory: - Määritä oma kansio: - - - Bitcoin Core - Bitcoin-ydin - - - Error: Specified data directory "%1" cannot be created. - Virhe: Annettu datahakemistoa "%1" ei voida luoda. - - - Error - Virhe - - - %n GB of free space available - %n Gt vapaata tilaa käytettävissä%n Gt vapaata tilaa käytettävissä - - - (of %n GB needed) - (%n Gt tarvittavasta tilasta)(%n Gt tarvittavasta tilasta) - - - - OpenURIDialog - - Open URI - Avaa URI - - - Open payment request from URI or file - Avaa maksupyyntö URI:sta tai tiedostosta - - - URI: - URI: - - - Select payment request file - Valitse maksupyynnön tiedosto - - - Select payment request file to open - Valitse maksypyynnön tiedosto avattavaksi - - - - OptionsDialog - - Options - Asetukset - - - &Main - &Yleiset - - - Size of &database cache - &Tietokannan välimuistin koko - - - MB - MB - - - Number of script &verification threads - Script &varmistuksen threadien määrä - - - Accept connections from outside - Hyväksy yhteysiä ulkopuolelta - - - Allow incoming connections - Hyväksy sisääntulevia yhteyksiä - - - IP address of the proxy (e.g. IPv4: 127.0.0.1 / IPv6: ::1) - IP osoite proxille (esim. IPv4: 127.0.0.1 / IPv6: ::1) - - - 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 |. - Ulkopuoliset URL-osoitteet (esim. block explorer,) jotka esiintyvät siirrot-välilehdellä valikossa. %s URL-osoitteessa korvataan siirtotunnuksella. Useampi URL-osoite on eroteltu pystyviivalla |. - - - Third party transaction URLs - Kolmannen osapuolen rahansiirto URL:t - - - Active command-line options that override above options: - Aktiiviset komentorivivalinnat jotka ohittavat ylläolevat valinnat: - - - Reset all client options to default. - Palauta kaikki asetukset takaisin alkuperäisiksi. - - - &Reset Options - &Palauta asetukset - - - &Network - &Verkko - - - Automatically start Bitcoin Core after logging in to the system. - Käynnistä Bitcoin Core automaattisesti järjestelmään kirjautumisen jälkeen. - - - &Start Bitcoin Core on system login - &Käynnistä Bitcoin Core järjestelmään kirjautuessa - - - (0 = auto, <0 = leave that many cores free) - (0 = auto, <0 = jätä näin monta ydintä vapaaksi) - - - W&allet - &Lompakko - - - Expert - Expertti - - - Enable coin &control features - Ota käytöön &Kolikkokontrolli-ominaisuudet - - - 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. - Jos poistat varmistamattomien vaihtorahojen käytön, rahansiirron vaihtorahaa ei voida käyttää ennen vähintään yhtä varmistusta. Tämä vaikuttaa myös kuinka taseesi lasketaan. - - - &Spend unconfirmed change - &Käytä varmistamattomia vaihtorahoja - - - Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled. - Avaa Bitcoin-asiakasohjelman portti reitittimellä automaattisesti. Tämä toimii vain, jos reitittimesi tukee UPnP:tä ja se on käytössä. - - - Map port using &UPnP - Portin uudelleenohjaus &UPnP:llä - - - Connect to the Bitcoin network through a SOCKS5 proxy. - Yhdistä Bitcoin-verkkoon SOCKS5-välityspalvelimen kautta. - - - &Connect through SOCKS5 proxy (default proxy): - &Yhdistä SOCKS5-välityspalvelimen kautta (oletus välityspalvelin): - - - Proxy &IP: - Proxyn &IP: - - - &Port: - &Portti - - - Port of the proxy (e.g. 9050) - Proxyn Portti (esim. 9050) - - - &Window - &Ikkuna - - - Show only a tray icon after minimizing the window. - Näytä ainoastaan ilmaisinalueella ikkunan pienentämisen jälkeen. - - - &Minimize to the tray instead of the taskbar - &Pienennä ilmaisinalueelle työkalurivin sijasta - - - M&inimize on close - P&ienennä suljettaessa - - - &Display - &Käyttöliittymä - - - User Interface &language: - &Käyttöliittymän kieli - - - &Unit to show amounts in: - Yksikkö jona bitcoin-määrät näytetään - - - Choose the default subdivision unit to show in the interface and when sending coins. - Valitse mitä yksikköä käytetään ensisijaisesti bitcoin-määrien näyttämiseen. - - - Whether to show coin control features or not. - Näytetäänkö kolikkokontrollin ominaisuuksia vai ei - - - &OK - &OK - - - &Cancel - &Peruuta - - - default - oletus - - - none - ei mitään - - - Confirm options reset - Varmista asetusten palautus - - - Client restart required to activate changes. - Ohjelman uudelleenkäynnistys aktivoi muutokset. - - - Client will be shut down. Do you want to proceed? - Asiakasohjelma sammutetaan. Haluatko jatkaa? - - - This change would require a client restart. - Tämä muutos vaatii ohjelman uudelleenkäynnistyksen. - - - The supplied proxy address is invalid. - Antamasi proxy-osoite on virheellinen. - - - - OverviewPage - - Form - Lomake - - - The displayed information may be out of date. Your wallet automatically synchronizes with the Bitcoin network after a connection is established, but this process has not completed yet. - Näytetyt tiedot eivät välttämättä ole ajantasalla. Lompakkosi synkronoituu Bitcoin-verkon kanssa automaattisesti yhteyden muodostamisen jälkeen, mutta synkronointi on vielä meneillään. - - - Watch-only: - Seuranta: - - - Available: - Käytettävissä: - - - Your current spendable balance - Nykyinen käytettävissä oleva tase - - - Pending: - Odotetaan: - - - Total of transactions that have yet to be confirmed, and do not yet count toward the spendable balance - Varmistamattomien rahansiirtojen summa, jota ei lasketa käytettävissä olevaan taseeseen. - - - Immature: - Epäkypsää: - - - Mined balance that has not yet matured - Louhittu saldo, joka ei ole vielä kypsynyt - - - Balances - Saldot - - - Total: - Yhteensä: - - - Your current total balance - Tililläsi tällä hetkellä olevien Bitcoinien määrä - - - Your current balance in watch-only addresses - Nykyinen tase seurantaosoitetteissa - - - Spendable: - Käytettävissä: - - - Recent transactions - Viimeisimmät rahansiirrot - - - Unconfirmed transactions to watch-only addresses - Vahvistamattomat rahansiirrot vain katseltaviin osoitteisiin - - - Mined balance in watch-only addresses that has not yet matured - Louhittu, ei vielä kypsynyt saldo vain katseltavissa osoitteissa - - - Current total balance in watch-only addresses - Nykyinen tase seurantaosoitetteissa - - - - PaymentServer - - URI handling - URI käsittely - - - Invalid payment address %1 - Virheellinen maksuosoite %1 - - - Payment request rejected - Maksupyyntö hylätty - - - Payment request network doesn't match client network. - Maksypyyntö verkossa ei täsmää asiakasohjelman verkkoon. - - - Payment request is not initialized. - Maksupyyntöä ei ole alustettu. - - - Requested payment amount of %1 is too small (considered dust). - Maksupyyntö %1 on liian pieni (huomioidaan tomuna). - - - Payment request error - Maksupyyntövirhe - - - Cannot start bitcoin: click-to-pay handler - Ei voida käynnistää bitcoin: klikkaa-maksu käsittelijää - - - Payment request fetch URL is invalid: %1 - Maksupyynnön haku URL on virheellinen: %1 - - - URI cannot be parsed! This can be caused by an invalid Bitcoin address or malformed URI parameters. - URIa ei voitu jäsentää! Tämä voi johtua kelvottomasta Bitcoin-osoitteesta tai virheellisistä URI parametreista. - - - Payment request file handling - Maksupyynnön tiedoston käsittely - - - Payment request file cannot be read! This can be caused by an invalid payment request file. - Maksupyynnön tiedostoa ei voida lukea! Tämä voi aiheutua sopimattomasta maksupyyntötiedostosta. - - - Payment request expired. - Maksupyyntö on vanhentunut. - - - Unverified payment requests to custom payment scripts are unsupported. - Varmistamattomia maksupyyntöjä kustomoituun maksupalveluun ei tueta. - - - Invalid payment request. - Epäkelpo maksupyyntö. - - - Refund from %1 - Maksupalautus %1:sta - - - Payment request %1 is too large (%2 bytes, allowed %3 bytes). - Maksupyyntö %1 on liian suuri (%2 tavua, sallittu %3 tavua). - - - Payment request DoS protection - Maksupyynnön DoS-suojaus - - - Error communicating with %1: %2 - Virhe kommunikoidessa %1n kanssa: %2 - - - Payment request cannot be parsed! - Maksupyyntöä ei voida jäsentää! - - - Bad response from server %1 - Huono vastaus palvelimelta %1 - - - Payment acknowledged - Rahansiirto tunnistettu - - - Network request error - Tietoverkon pyyntövirhe - - - - PeerTableModel - - User Agent - Käyttöliittymä - - - Node/Service - Noodi/Palvelu - - - Ping Time - Vasteaika - - - - QObject - - Amount - Määrä - - - Enter a Bitcoin address (e.g. %1) - Syötä Bitcoin-osoite (esim. %1) - - - %1 d - %1 d - - - %1 h - %1 h - - - %1 m - %1 m - - - %1 s - %1 s - - - None - Ei yhtään - - - N/A - Ei saatavilla - - - %1 ms - %1 ms - - - - QRImageWidget - - &Save Image... - &Tallenna kuva - - - &Copy Image - &Kopioi kuva - - - Save QR Code - Tallenna QR-koodi - - - PNG Image (*.png) - PNG kuva (*.png) - - - - RPCConsole - - Client name - Pääteohjelman nimi - - - N/A - Ei saatavilla - - - Client version - Pääteohjelman versio - - - &Information - T&ietoa - - - Debug window - &Debug-ikkuna - - - General - Yleinen - - - Using OpenSSL version - Käytössä oleva OpenSSL-versio - - - Using BerkeleyDB version - Käyttää BerkeleyDB-versiota - - - Startup time - Käynnistysaika - - - Network - Verkko - - - Name - Nimi - - - Number of connections - Yhteyksien lukumäärä - - - Block chain - Lohkoketju - - - Current number of blocks - Nykyinen Lohkojen määrä - - - Received - Vastaanotetut - - - Sent - Lähetetyt - - - &Peers - &Vertaiset - - - Select a peer to view detailed information. - Valitse vertainen eriteltyjä tietoja varten. - - - Direction - Suunta - - - Version - Versio - - - User Agent - Käyttöliittymä - - - Services - Palvelut - - - Starting Height - Aloituskorkeus - - - Sync Height - Synkronointikorkeus - - - Ban Score - Panna-pisteytys - - - Connection Time - Yhteysaika - - - Last Send - Viimeisin lähetetty - - - Last Receive - Viimeisin vastaanotettu - - - Bytes Sent - Tavua lähetetty - - - Bytes Received - Tavua vastaanotettu - - - Ping Time - Vasteaika - - - Time Offset - Ajan poikkeama - - - Last block time - Viimeisimmän lohkon aika - - - &Open - &Avaa - - - &Console - &Konsoli - - - &Network Traffic - &Verkkoliikenne - - - &Clear - &Tyhjennä - - - Totals - Yhteensä - - - In: - Sisään: - - - Out: - Ulos: - - - Build date - Kääntöpäiväys - - - Debug log file - Debug lokitiedosto - - - Clear console - Tyhjennä konsoli - - - Welcome to the Bitcoin Core RPC console. - Tervetuloa Bitcoin Coren RPC-konsoliin. - - - Use up and down arrows to navigate history, and <b>Ctrl-L</b> to clear screen. - Ylös- ja alas-nuolet selaavat historiaa ja <b>Ctrl-L</b> tyhjentää ruudun. - - - Type <b>help</b> for an overview of available commands. - Kirjoita <b>help</b> nähdäksesi yleiskatsauksen käytettävissä olevista komennoista. - - - %1 B - %1 B - - - %1 KB - %1 KB - - - %1 MB - %1 MB - - - %1 GB - %1 GB - - - via %1 - %1 kautta - - - never - ei koskaan - - - Inbound - Sisääntuleva - - - Outbound - Ulosmenevä - - - Unknown - Tuntematon - - - Fetching... - Hankitaan... - - - - ReceiveCoinsDialog - - &Amount: - &Määrä - - - &Label: - &Nimi: - - - &Message: - &Viesti: - - - Reuse one of the previously used receiving addresses. Reusing addresses has security and privacy issues. Do not use this unless re-generating a payment request made before. - Uudelleenkäytä yksi vanhoista vastaanotto-osoitteista. Uudelleenkäyttössä on turvallisuus- ja yksityisyysongelmia. Älä käytä tätä ellet ole uudelleenluomassa aikaisempaa maksupyyntöä. - - - R&euse an existing receiving address (not recommended) - &Uudelleenkäytä vastaanotto-osoitetta (ei suositella) - - - An optional message to attach to the payment request, which will be displayed when the request is opened. Note: The message will not be sent with the payment over the Bitcoin network. - Valinnainen viesti liitetään maksupyyntöön ja näytetään avattaessa. Viestiä ei lähetetä Bitcoin-verkkoon. - - - An optional label to associate with the new receiving address. - Valinnainen nimi liitetään vastaanottavaan osoitteeseen. - - - Use this form to request payments. All fields are <b>optional</b>. - Käytä lomaketta maksupyyntöihin. Kaikki kentät ovat <b>valinnaisia</b>. - - - An optional amount to request. Leave this empty or zero to not request a specific amount. - Valinnainen pyyntömäärä. Jätä tyhjäksi tai nollaksi jos et pyydä tiettyä määrää. - - - Clear all fields of the form. - Tyhjennä lomakkeen kaikki kentät. - - - Clear - Tyhjennä - - - Requested payments history - Pyydettyjen maksujen historia - - - &Request payment - &Vastaanota maksu - - - Show the selected request (does the same as double clicking an entry) - Näytä valittu pyyntö (sama toiminta kuin alkion tuplaklikkaus) - - - Show - Näytä - - - Remove the selected entries from the list - Poista valitut alkiot listasta - - - Remove - Poista - - - Copy label - Kopioi nimi - - - Copy message - Kopioi viesti - - - Copy amount - Kopioi määrä - - - - ReceiveRequestDialog - - QR Code - QR-koodi - - - Copy &URI - Kopioi &URI - - - Copy &Address - Kopioi &Osoite - - - &Save Image... - &Tallenna kuva - - - Request payment to %1 - Vastaanota maksu %1 - - - Payment information - Maksutiedot - - - URI - URI - - - Address - Osoite - - - Amount - Määrä - - - Label - Nimi - - - Message - Viesti - - - Resulting URI too long, try to reduce the text for label / message. - Tuloksen URI liian pitkä, yritä lyhentää otsikon tekstiä / viestiä. - - - Error encoding URI into QR Code. - Virhe käännettäessä URI:a QR-koodiksi. - - - - RecentRequestsTableModel - - Date - Aika - - - Label - Nimi - - - Message - Viesti - - - Amount - Määrä - - - (no label) - (ei nimeä) - - - (no message) - (ei viestiä) - - - (no amount) - (ei määrää) - - - - SendCoinsDialog - - Send Coins - Lähetä Bitcoineja - - - Coin Control Features - Kolikkokontrolli ominaisuudet - - - Inputs... - Sisääntulot... - - - automatically selected - automaattisesti valitut - - - Insufficient funds! - Lompakon saldo ei riitä! - - - Quantity: - Määrä: - - - Bytes: - Tavuja: - - - Amount: - Määrä: - - - Priority: - Prioriteetti: - - - Fee: - Palkkio: - - - After Fee: - Palkkion jälkeen: - - - Change: - Vaihtoraha: - - - If this is activated, but the change address is empty or invalid, change will be sent to a newly generated address. - Jos tämä aktivoidaan mutta vaihtorahan osoite on tyhjä tai virheellinen, vaihtoraha tullaan lähettämään uuteen luotuun osoitteeseen. - - - Custom change address - Kustomoitu vaihtorahan osoite - - - Transaction Fee: - Rahansiirtokulu: - - - Choose... - Valitse... - - - collapse fee-settings - pudota kulujen asetukset - - - per kilobyte - per kilotavu - - - Hide - Piilota - - - total at least - yhteensä ainakin - - - (read the tooltip) - (lue työkaluvinkki) - - - Recommended: - Suositeltu: - - - Custom: - Muokattu: - - - Confirmation time: - Vahvistusaika: - - - normal - normaali - - - fast - nopea - - - Send as zero-fee transaction if possible - Lähetä siirtokuluttomana jos mahdollista - - - (confirmation may take longer) - (vahvistaminen voi viedä kauemmin) - - - Send to multiple recipients at once - Lähetä usealla vastaanottajalle samanaikaisesti - - - Add &Recipient - Lisää &Vastaanottaja - - - Clear all fields of the form. - Tyhjennä lomakkeen kaikki kentät - - - Dust: - Tomu: - - - Clear &All - &Tyhjennnä Kaikki - - - Balance: - Balanssi: - - - Confirm the send action - Vahvista lähetys - - - S&end - &Lähetä - - - Confirm send coins - Hyväksy Bitcoinien lähettäminen - - - %1 to %2 - %1 to %2 - - - Copy quantity - Kopioi määrä - - - Copy amount - Kopioi määrä - - - Copy fee - Kopioi palkkio - - - Copy after fee - Kopioi palkkion jälkeen - - - Copy bytes - Kopioi tavut - - - Copy priority - Kopioi prioriteetti - - - Copy change - Kopioi vaihtoraha - - - or - tai - - - The amount to pay must be larger than 0. - Maksettavan summan tulee olla suurempi kuin 0 Bitcoinia. - - - The amount exceeds your balance. - Määrä ylittää käytettävissä olevan saldon. - - - The total exceeds your balance when the %1 transaction fee is included. - Kokonaismäärä ylittää saldosi kun %1 maksukulu lisätään summaan. - - - Transaction creation failed! - Rahansiirron luonti epäonnistui! - - - 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. - Rahansiirto hylättiin! Tämä saattaa tapahtua jos lompakossa olevat kolikot on jo kulutettu, kuten jos käytät kopioita wallet.dat tiedostosta ja kolikot oli jos käytetty mutta ei merkattu täällä. - - - A fee higher than %1 is considered an absurdly high fee. - Rahansiirtokulua %1 ja sitä suurempia määriä pidetään järjenvastaisen korkeana kuluna. - - - Payment request expired. - Maksupyyntö on vanhentunut. - - - Pay only the minimum fee of %1 - Maksa vain vähimmäiskulu %1 - - - The recipient address is not valid. Please recheck. - Vastaanottajan osoite ei ole kelvollinen. Tarkistathan uudelleen. - - - Warning: Invalid Bitcoin address - Varoitus: Virheellinen Bitcoin osoite - - - (no label) - (ei nimeä) - - - Warning: Unknown change address - Varoitus: Tuntematon vaihtorahan osoite - - - Copy dust - Kopioi tomu - - - Are you sure you want to send? - Haluatko varmasti lähettää? - - - added as transaction fee - lisätty rahansiirtomaksuna - - - - SendCoinsEntry - - A&mount: - M&äärä: - - - Pay &To: - Maksun saaja: - - - Enter a label for this address to add it to your address book - Anna nimi tälle osoitteelle, jos haluat lisätä sen osoitekirjaan - - - &Label: - &Nimi: - - - Choose previously used address - Valitse aikaisemmin käytetty osoite - - - This is a normal payment. - Tämä on normaali maksu. - - - The Bitcoin address to send the payment to - Bitcoin-osoite johon maksu lähetetään - - - Alt+A - Alt+A - - - Paste address from clipboard - Liitä osoite leikepöydältä - - - Alt+P - Alt+P - - - Remove this entry - Poista tämä alkio - - - S&ubtract fee from amount - V&ähennä maksukulu määrästä - - - Message: - Viesti: - - - This is an unauthenticated payment request. - Tämä on todentamaton maksupyyntö. - - - This is an authenticated payment request. - Tämä on todennettu maksupyyntö. - - - Enter a label for this address to add it to the list of used addresses - Aseta nimi tälle osoitteelle lisätäksesi sen käytettyjen osoitteiden listalle. - - - A message that was attached to the bitcoin: URI which will be stored with the transaction for your reference. Note: This message will not be sent over the Bitcoin network. - Viesti joka liitettiin bitcoin: URI:iin tallennetaan rahansiirtoon viitteeksi. Tätä viestiä ei lähetetä Bitcoin-verkkoon. - - - Pay To: - Saaja: - - - Memo: - Muistio: - - - - ShutdownWindow - - Bitcoin Core is shutting down... - Bitcoin core sulkeutuu... - - - Do not shut down the computer until this window disappears. - Älä sammuta tietokonetta ennenkuin tämä ikkuna katoaa. - - - - SignVerifyMessageDialog - - Signatures - Sign / Verify a Message - Allekirjoitukset - Allekirjoita / Varmista viesti - - - &Sign Message - &Allekirjoita viesti - - - The Bitcoin address to sign the message with - Bitcoin-osoite jolla viesti allekirjoitetaan - - - Choose previously used address - Valitse aikaisemmin käytetty osoite - - - Alt+A - Alt+A - - - Paste address from clipboard - Liitä osoite leikepöydältä - - - Alt+P - Alt+P - - - Enter the message you want to sign here - Kirjoita tähän viesti minkä haluat allekirjoittaa - - - Signature - Allekirjoitus - - - Copy the current signature to the system clipboard - Kopioi tämänhetkinen allekirjoitus leikepöydälle - - - Sign the message to prove you own this Bitcoin address - Allekirjoita viesti todistaaksesi, että omistat tämän Bitcoin-osoitteen - - - Sign &Message - Allekirjoita &viesti - - - Reset all sign message fields - Tyhjennä kaikki allekirjoita-viesti-kentät - - - Clear &All - &Tyhjennä Kaikki - - - &Verify Message - &Varmista viesti - - - The Bitcoin address the message was signed with - Bitcoin-osoite jolla viesti on allekirjoitettu - - - Verify the message to ensure it was signed with the specified Bitcoin address - Tarkista viestin allekirjoitus varmistaaksesi, että se allekirjoitettiin tietyllä Bitcoin-osoitteella - - - Verify &Message - Varmista &viesti... - - - Reset all verify message fields - Tyhjennä kaikki varmista-viesti-kentät - - - Click "Sign Message" to generate signature - Klikkaa "Allekirjoita Viesti luodaksesi allekirjoituksen - - - The entered address is invalid. - Syötetty osoite on virheellinen. - - - Please check the address and try again. - Tarkista osoite ja yritä uudelleen. - - - The entered address does not refer to a key. - Syötetyn osoitteen avainta ei löydy. - - - Wallet unlock was cancelled. - Lompakon avaaminen peruttiin. - - - Private key for the entered address is not available. - Yksityistä avainta syötetylle osoitteelle ei ole saatavilla. - - - Message signing failed. - Viestin allekirjoitus epäonnistui. - - - Message signed. - Viesti allekirjoitettu. - - - The signature could not be decoded. - Allekirjoitusta ei pystytty tulkitsemaan. - - - Please check the signature and try again. - Tarkista allekirjoitus ja yritä uudelleen. - - - The signature did not match the message digest. - Allekirjoitus ei täsmää viestin tiivisteeseen. - - - Message verification failed. - Viestin varmistus epäonnistui. - - - Message verified. - Viesti varmistettu. - - - - SplashScreen - - Bitcoin Core - Bitcoin-ydin - - - The Bitcoin Core developers - Bitcoin Core kehittäjät - - - [testnet] - [testnet] - - - - TrafficGraphWidget - - KB/s - KB/s - - - - TransactionDesc - - Open until %1 - Avoinna %1 asti - - - conflicted - ristiriitainen - - - %1/offline - %1/offline - - - %1/unconfirmed - %1/vahvistamaton - - - %1 confirmations - %1 vahvistusta - - - Status - Tila - - - , broadcast through %n node(s) - lähetetty %n noodin läpilähetetty %n noodin läpi - - - Date - Päivämäärä - - - Source - Lähde - - - Generated - Generoitu - - - From - Lähettäjä - - - To - Saaja - - - own address - oma osoite - - - watch-only - vain katseltava - - - label - nimi - - - Credit - Credit - - - matures in %n more block(s) - kypsyy %n lohkon kuluttuakypsyy %n lohkon kuluttua - - - not accepted - ei hyväksytty - - - Debit - Debit - - - Total debit - Yhteensä debit - - - Total credit - Yhteensä credit - - - Transaction fee - Maksukulu - - - Net amount - Netto määrä - - - Message - Viesti - - - Comment - Viesti - - - Transaction ID - Siirtotunnus - - - Merchant - Kauppias - - - Generated coins must mature %1 blocks before they can be spent. When you generated this block, it was broadcast to the network to be added to the block chain. If it fails to get into the chain, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - Luodut kolikot täytyy kypsyttää %1 lohkoa kunnes ne voidaan käyttää. Kun loit tämän lohkon, se lähetettiin verkkoon lisänä lohkoketjuun. Jos se epäonnistuu pääsemään ketjuun sen tila tulee muuttumaan "ei hyväksytty" ja sitä ei voida käyttää. Tämä voi ajoittain tapahtua kun toisen solmun lohko luodaan samanaikaisesti omasi kanssa. - - - Debug information - Debug tiedot - - - Transaction - Rahansiirto - - - Inputs - Sisääntulot - - - Amount - Määrä - - - true - tosi - - - false - epätosi - - - , has not been successfully broadcast yet - , ei ole vielä onnistuneesti lähetetty - - - Open for %n more block(s) - Avoinna %n lisälohkolleAvoinna %n lisälohkolle - - - unknown - tuntematon - - - - TransactionDescDialog - - Transaction details - Rahansiirron yksityiskohdat - - - This pane shows a detailed description of the transaction - Tämä ruutu näyttää yksityiskohtaisen tiedon rahansiirrosta - - - - TransactionTableModel - - Date - Päivämäärä - - - Type - Laatu - - - Immature (%1 confirmations, will be available after %2) - Epäkypsä (%1 varmistusta, saatavilla %2 jälkeen) - - - Open for %n more block(s) - Avoinna %n lisälohkolleAvoinna %n lisälohkolle - - - Open until %1 - Avoinna %1 asti - - - Confirmed (%1 confirmations) - Vahvistettu (%1 vahvistusta) - - - This block was not received by any other nodes and will probably not be accepted! - Tätä lohkoa ei vastaanotettu mistään muusta solmusta ja sitä ei mahdollisesti hyväksytä! - - - Generated but not accepted - Generoitu mutta ei hyväksytty - - - Offline - Offline - - - Label - Nimi - - - Unconfirmed - Varmistamaton - - - Confirming (%1 of %2 recommended confirmations) - Varmistetaan (%1 kehoitetusta %2 varmistuksesta) - - - Conflicted - Ristiriitainen - - - Received with - Vastaanotettu osoitteella - - - Received from - Vastaanotettu - - - Sent to - Saaja - - - Payment to yourself - Maksu itsellesi - - - Mined - Louhittu - - - watch-only - vain katseltava - - - (n/a) - (ei saatavilla) - - - Transaction status. Hover over this field to show number of confirmations. - Rahansiirron tila. Siirrä osoitin kentän päälle nähdäksesi vahvistusten lukumäärä. - - - Date and time that the transaction was received. - Rahansiirron vastaanottamisen päivämäärä ja aika. - - - Type of transaction. - Rahansiirron laatu. - - - Whether or not a watch-only address is involved in this transaction. - Onko rahansiirrossa mukana ainoastaan katseltava osoite vai ei. - - - Amount removed from or added to balance. - Saldoon lisätty tai siitä vähennetty määrä. - - - - TransactionView - - All - Kaikki - - - Today - Tänään - - - This week - Tällä viikolla - - - This month - Tässä kuussa - - - Last month - Viime kuussa - - - This year - Tänä vuonna - - - Range... - Alue... - - - Received with - Vastaanotettu osoitteella - - - Sent to - Saaja - - - To yourself - Itsellesi - - - Mined - Louhittu - - - Other - Muu - - - Enter address or label to search - Anna etsittävä osoite tai tunniste - - - Min amount - Minimimäärä - - - Copy address - Kopioi osoite - - - Copy label - Kopioi nimi - - - Copy amount - Kopioi määrä - - - Copy transaction ID - Kopioi siirtotunnus - - - Edit label - Muokkaa nimeä - - - Show transaction details - Näytä rahansiirron yksityiskohdat - - - Export Transaction History - Vie rahansiirtohistoria - - - Watch-only - Vain katseltava - - - Exporting Failed - Vienti epäonnistui - - - There was an error trying to save the transaction history to %1. - Rahansiirron historian tallentamisessa tapahtui virhe paikkaan %1. - - - Exporting Successful - Vienti onnistui - - - The transaction history was successfully saved to %1. - Rahansiirron historia tallennettiin onnistuneesti paikkaan %1. - - - Comma separated file (*.csv) - Comma separated file (*.csv) - - - Confirmed - Vahvistettu - - - Date - Aika - - - Type - Laatu - - - Label - Nimi - - - Address - Osoite - - - ID - ID - - - Range: - Alue: - - - to - kenelle - - - - UnitDisplayStatusBarControl - - Unit to show amounts in. Click to select another unit. - Yksikkö jossa määrät näytetään. Klikkaa valitaksesi toisen yksikön. - - - - WalletFrame - - No wallet has been loaded. - Lomakkoa ei ole ladattu. - - - - WalletModel - - Send Coins - Lähetä Bitcoineja - - - - WalletView - - &Export - &Vie... - - - Export the data in the current tab to a file - Vie auki olevan välilehden tiedot tiedostoon - - - Backup Wallet - Varmuuskopioi lompakko - - - Wallet Data (*.dat) - Lompakkodata (*.dat) - - - Backup Failed - Varmuuskopio epäonnistui - - - There was an error trying to save the wallet data to %1. - Lompakon tallennuksessa tapahtui virhe %1. - - - The wallet data was successfully saved to %1. - Lompakko tallennettiin onnistuneesti tiedostoon %1. - - - Backup Successful - Varmuuskopio Onnistui - - - - bitcoin-core - - Options: - Asetukset: - - - Specify data directory - Määritä data-hakemisto - - - Connect to a node to retrieve peer addresses, and disconnect - Yhdistä noodiin hakeaksesi naapurien osoitteet ja katkaise yhteys - - - Specify your own public address - Määritä julkinen osoitteesi - - - Accept command line and JSON-RPC commands - Hyväksy merkkipohjaiset- ja JSON-RPC-käskyt - - - Run in the background as a daemon and accept commands - Aja taustalla daemonina ja hyväksy komennot - - - Use the test network - Käytä test -verkkoa - - - Accept connections from outside (default: 1 if no -proxy or -connect) - Hyväksy yhteyksiä ulkopuolelta (vakioasetus: 1 jos -proxy tai -connect ei määritelty) - - - Bind to given address and always listen on it. Use [host]:port notation for IPv6 - Kytkeydy annettuun osoitteeseen ja pidä linja aina auki. Käytä [host]:portin merkintätapaa IPv6:lle. - - - Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) - Suorita käsky kun lompakossa rahansiirto muuttuu (%s cmd on vaihdettu TxID kanssa) - - - Set the number of script verification threads (%u to %d, 0 = auto, <0 = leave that many cores free, default: %d) - Aseta script varmistuksen threadien lukumäärä (%u - %d, 0= auto, <0 = jätä näin monta ydintä vapaaksi, oletus: %d) - - - This is a pre-release test build - use at your own risk - do not use for mining or merchant applications - Tämä on esi-julkaistu testiversio - Käytä omalla riskillä - Ei saa käytää louhimiseen tai kauppasovelluksiin. - - - Unable to bind to %s on this computer. Bitcoin Core is probably already running. - Ei voida yhdistää %s tässä tietokoneessa. Bitcoin Core on luultavasti jo käynnissä. - - - Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. - Varoitus: -paytxfee on asetettu erittäin korkeaksi! Tämä on maksukulu jonka tulet maksamaan kun lähetät siirron. - - - Warning: The network does not appear to fully agree! Some miners appear to be experiencing issues. - Varoitus: Tietoverkko ei ole sovussa! Luohijat näyttävät kokevan virhetilanteita. - - - Warning: We do not appear to fully agree with our peers! You may need to upgrade, or other nodes may need to upgrade. - Varoitus: Olemme vertaisverkon kanssa ristiriidassa! Sinun tulee päivittää tai toisten solmujen tulee päivitää. - - - Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. - Varoitus: virhe luettaessa wallet.dat-lompakkotiedostoa. Kaikki avaimet luettiin onnistuneesti, mutta siirtohistoria tai osoitekirja saattavat olla kadonneet tai virheellisiä. - - - 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. - Varoitus: wallet.dat -lompakkotiedosto on korruptoitunut, tiedot pelastettu. Alkuperäinen wallet.dat -lompakkotiedosto on tallennettu wallet.{timestamp}.bak kansioon %s; jos balanssisi tai siirtohistoria on virheellinen, sinun tulisi palauttaa lompakkotiedosto varmuuskopiosta. - - - (default: 1) - (oletus: 1) - - - <category> can be: - <category> voi olla: - - - Attempt to recover private keys from a corrupt wallet.dat - Yritetään palauttaa privaattiavaimia korruptoituneesta wallet.dat -lompakkotiedostosta - - - Block creation options: - Lohkon luonnin asetukset: - - - Connect only to the specified node(s) - Yhidstä ainoastaan määrättyihin noodeihin - - - Connection options: - Yhteyden valinnat: - - - Corrupted block database detected - Vioittunut lohkotietokanta havaittu - - - Debugging/Testing options: - Debuggaus/Testauksen valinnat: - - - Do not load the wallet and disable wallet RPC calls - Älä lataa lompakkoa ja poista lompakon RPC kutsut - - - Do you want to rebuild the block database now? - Haluatko uudelleenrakentaa lohkotietokannan nyt? - - - Error initializing block database - Virhe alustaessa lohkotietokantaa - - - Error initializing wallet database environment %s! - Virhe alustaessa lompakon tietokantaympäristöä %s! - - - Error loading block database - Virhe avattaessa lohkoketjua - - - Error opening block database - Virhe avattaessa lohkoindeksiä - - - Error: Disk space is low! - Varoitus: Levytila on vähissä! - - - Failed to listen on any port. Use -listen=0 if you want this. - Ei onnistuttu kuuntelemaan missään portissa. Käytä -listen=0 jos haluat tätä. - - - If <category> is not supplied, output all debugging information. - Jos <kategoria> ei annettu, tulosta kaikki debuggaustieto. - - - Importing... - Tuodaan... - - - Incorrect or no genesis block found. Wrong datadir for network? - Virheellinen tai olematon alkulohko löydetty. Väärä data-hakemisto verkolle? - - - Invalid -onion address: '%s' - Virheellinen -onion osoite: '%s' - - - Not enough file descriptors available. - Ei tarpeeksi tiedostomerkintöjä vapaana. - - - Only connect to nodes in network <net> (ipv4, ipv6 or onion) - Yhdistä vain solmukohtiin <net>-verkossa (ipv4, ipv6 tai onion) - - - Prune mode is incompatible with -txindex. - Karsittu tila ei ole yhteensopiva -txindex:n kanssa. - - - Set database cache size in megabytes (%d to %d, default: %d) - Aseta tietokannan välimuistin koko megatavuissa (%d - %d, oletus: %d - - - Set maximum block size in bytes (default: %d) - Aseta lohkon maksimikoko tavuissa (oletus: %d) - - - Specify wallet file (within data directory) - Aseta lompakkotiedosto (data-hakemiston sisällä) - - - Use UPnP to map the listening port (default: %u) - Käytä UPnP:ta kuuntelevan portin kartoittamiseen (oletus: %u) - - - Verifying blocks... - Varmistetaan lohkoja... - - - Verifying wallet... - Varmistetaan lompakko... - - - Wallet %s resides outside data directory %s - Lompakko %s sijaitsee data-hakemiston ulkopuolella %s - - - Wallet options: - Lompakon valinnat: - - - Warning: This version is obsolete; upgrade required! - Varoitus: Tämä versio on vanhentunut; päivittämistä vaaditaan! - - - You need to rebuild the database using -reindex to change -txindex - Sinun tulee uudelleenrakentaa tietokanta käyttäen -reindex vaihtaen -txindex - - - Imports blocks from external blk000??.dat file - Tuodaan lohkoja ulkoisesta blk000??.dat tiedostosta - - - Cannot obtain a lock on data directory %s. Bitcoin Core is probably already running. - Ei voida lukita data-hakemistoa %s. Bitcoin Core on luultavasti jo käynnissä. - - - Execute command when a relevant alert is received or we see a really long fork (%s in cmd is replaced by message) - Aja komento kun olennainen hälytys vastaanotetaan tai nähdään todella pitkä haara (%s komennossa korvataan viestillä) - - - Set maximum size of high-priority/low-fee transactions in bytes (default: %d) - Aseta maksimikoko korkea prioriteetti/pieni palkkio rahansiirtoihin tavuissa (oletus: %d) - - - Set the number of threads for coin generation if enabled (-1 = all cores, default: %d) - Aseta kolikoiden luomiseen tarkoitettujen säikeiden lukumäärä (-1 = kaikki ytimet, oletus: %d) - - - (default: %u) - (oletus: %u) - - - Accept public REST requests (default: %u) - Hyväksy julkisia REST-pyyntöjä (oletus: %u) - - - Activating best chain... - Aktivoidaan parhainta ketjua... - - - Can't run with a wallet in prune mode. - Lompakkoa ei voida ajaa karsitussa tilassa. - - - Cannot resolve -whitebind address: '%s' - -whitebind -osoitetta '%s' ei voida jäsentää - - - Choose data directory on startup (default: 0) - Valitse data-hakemisto käynnistyksessä (oletus: 0) - - - Connect through SOCKS5 proxy - Yhdistä SOCKS5 proxin kautta - - - Copyright (C) 2009-%i The Bitcoin Core Developers - Copyright (C) 2009-%i Bitcoin kehittäjät - - - Error loading wallet.dat: Wallet requires newer version of Bitcoin Core - Virhe ladattaessa wallet.dat-tiedostoa: Tarvitset uudemman version Bitcoinista - - - Error reading from database, shutting down. - Virheitä tietokantaa luettaessa, ohjelma pysäytetään. - - - Information - Tietoa - - - Invalid amount for -minrelaytxfee=<amount>: '%s' - Virheellinen määrä -minrelaytxfee=<amount>: '%s' - - - Invalid amount for -mintxfee=<amount>: '%s' - Virheellinen määrä -mintxfee=<amount>: '%s' - - - Node relay options: - Välityssolmukohdan asetukset: - - - RPC SSL options: (see the Bitcoin Wiki for SSL setup instructions) - RPC SSL valinnat: (katso Bitcoin Wikistä SSL-asennuksen ohjeet) - - - RPC server options: - RPC-palvelimen valinnat: - - - RPC support for HTTP persistent connections (default: %d) - RPC-tuki pysyville HTTP-yhteyksille (oletus: %d) - - - Receive and display P2P network alerts (default: %u) - Vastaanota ja näytä P2P-verkon hälytyksiä (oletus: %u) - - - Send trace/debug info to console instead of debug.log file - Lähetä jäljitys/debug-tieto konsoliin, debug.log-tiedoston sijaan - - - Set SSL root certificates for payment request (default: -system-) - Aseta SSL root varmenne maksupyynnöille (oletus: -system-) - - - Set language, for example "de_DE" (default: system locale) - Set language, for example "de_DE" (default: system locale) - - - Show all debugging options (usage: --help -help-debug) - Näytä kaikki debuggaus valinnat: (käyttö: --help -help-debug) - - - Show splash screen on startup (default: 1) - Näytä aloitusruutu käynnistettäessä (oletus: 1) - - - Shrink debug.log file on client startup (default: 1 when no -debug) - Pienennä debug.log tiedosto käynnistyksen yhteydessä (vakioasetus: 1 kun ei -debug) - - - Signing transaction failed - Siirron vahvistus epäonnistui - - - Start minimized - Käynnistä pienennettynä - - - This is experimental software. - Tämä on ohjelmistoa kokeelliseen käyttöön. - - - Transaction amount too small - Siirtosumma liian pieni - - - Transaction amounts must be positive - Siirtosumman tulee olla positiivinen - - - Transaction too large - Siirtosumma liian iso - - - UI Options: - Ulkoasun asetukset: - - - Use UPnP to map the listening port (default: 1 when listening) - Käytä UPnP:tä kuunneltavan portin avaamiseen (vakioasetus: 1 kun kuuntelemassa) - - - Username for JSON-RPC connections - Käyttäjätunnus JSON-RPC-yhteyksille - - - Wallet needed to be rewritten: restart Bitcoin Core to complete - Lompakko tarvitsee uudelleenkirjoittaa: käynnistä Bitcoin uudelleen - - - Warning - Varoitus - - - Zapping all transactions from wallet... - Tyhjennetään kaikki rahansiirrot lompakosta.... - - - on startup - käynnistyksessä - - - wallet.dat corrupt, salvage failed - wallet.dat -lompakkotiedosto korruptoitunut, korjaaminen epäonnistui - - - Password for JSON-RPC connections - Salasana JSON-RPC-yhteyksille - - - Execute command when the best block changes (%s in cmd is replaced by block hash) - Suorita käsky kun paras lohko muuttuu (%s cmd on vaihdettu block hashin kanssa) - - - Upgrade wallet to latest format - Päivitä lompakko uusimpaan formaattiin - - - Rescan the block chain for missing wallet transactions - Skannaa uudelleen lohkoketju lompakon puuttuvien rahasiirtojen vuoksi - - - Use OpenSSL (https) for JSON-RPC connections - Käytä OpenSSL:ää (https) JSON-RPC-yhteyksille - - - This help message - Tämä ohjeviesti - - - Allow DNS lookups for -addnode, -seednode and -connect - Salli DNS kyselyt -addnode, -seednode ja -connect yhteydessä - - - Loading addresses... - Ladataan osoitteita... - - - Error loading wallet.dat: Wallet corrupted - Virhe ladattaessa wallet.dat-tiedostoa: Lompakko vioittunut - - - Use separate SOCKS5 proxy to reach peers via Tor hidden services (default: %s) - Käytä erillistä SOCKS5-proxyä tavoittaaksesi vertaisia Tor-piilopalveluiden kautta (oletus: %s) - - - (default: %s) - (oletus: %s) - - - Acceptable ciphers (default: %s) - Hyväksyttävät salaukset (oletus: %s) - - - Error loading wallet.dat - Virhe ladattaessa wallet.dat-tiedostoa - - - Generate coins (default: %u) - Luo kolikoita (oletus: %u) - - - How many blocks to check at startup (default: %u, 0 = all) - Kuinka monta lohkoa tarkistetaan käynnistyksessä (oletus: %u, 0 = kaikki) - - - Include IP addresses in debug output (default: %u) - Sisällytä IP-osoitteet virheenkorjauslokissa (oletus: %u) - - - Invalid -proxy address: '%s' - Virheellinen proxy-osoite '%s' - - - Listen for connections on <port> (default: %u or testnet: %u) - Kuuntele yhteyksiä portissa <port> (oletus: %u tai testnet: %u) - - - Make the wallet broadcast transactions - Aseta lompakko kuuluttamaan rahansiirtoja - - - Relay non-P2SH multisig (default: %u) - Välitä ei-P2SH-multisig (oletus: %u) - - - Server certificate file (default: %s) - Palvelimen sertifikaattitiedosto (oletus: %s) - - - Server private key (default: %s) - Palvelimen private key (oletus: %s) - - - Set key pool size to <n> (default: %u) - Aseta avainaltaan kooksi <n> (oletus: %u) - - - Set minimum block size in bytes (default: %u) - Aseta pienin mahdollinen lohkokoko tavuina (oletus: %u) - - - Set the number of threads to service RPC calls (default: %d) - Aseta RPC-kutsujen palvelemiseen tarkoitettujen säikeiden lukumäärä (oletus: %d) - - - Specify configuration file (default: %s) - Määritä asetustiedosto (oletus: %s) - - - Specify pid file (default: %s) - Määritä pid-tiedosto (oletus: %s) - - - Spend unconfirmed change when sending transactions (default: %u) - Käytä vahvistamattomia vaihtorahoja lähetettäessä rahansiirtoja (oletus: %u) - - - Unknown network specified in -onlynet: '%s' - Tuntematon verkko -onlynet parametrina: '%s' - - - Cannot resolve -bind address: '%s' - -bind osoitteen '%s' selvittäminen epäonnistui - - - Cannot resolve -externalip address: '%s' - -externalip osoitteen '%s' selvittäminen epäonnistui - - - Invalid amount for -paytxfee=<amount>: '%s' - -paytxfee=<amount>: '%s' on virheellinen - - - Insufficient funds - Lompakon saldo ei riitä - - - Loading block index... - Ladataan lohkoindeksiä... - - - Add a node to connect to and attempt to keep the connection open - Linää solmu mihin liittyä pitääksesi yhteyden auki - - - Loading wallet... - Ladataan lompakkoa... - - - Cannot downgrade wallet - Et voi päivittää lompakkoasi vanhempaan versioon - - - Cannot write default address - Oletusosoitetta ei voi kirjoittaa - - - Rescanning... - Skannataan uudelleen... - - - Done loading - Lataus on valmis - - - Error - Virhe - - - \ No newline at end of file diff --git a/src/qt/locale/bitcoin_fr.ts b/src/qt/locale/bitcoin_fr.ts deleted file mode 100644 index 00eef6cb5..000000000 --- a/src/qt/locale/bitcoin_fr.ts +++ /dev/null @@ -1,3560 +0,0 @@ - - - AddressBookPage - - Right-click to edit address or label - Cliquer à droite pour modifier l'adresse ou l'étiquette - - - Create a new address - Créer une nouvelle adresse - - - &New - &Nouveau - - - Copy the currently selected address to the system clipboard - Copier l'adresse courante sélectionnée dans le presse-papiers - - - &Copy - &Copier - - - C&lose - &Fermer - - - &Copy Address - &Copier l'adresse - - - Delete the currently selected address from the list - Supprimer l'adresse actuellement sélectionnée de la liste - - - Export the data in the current tab to a file - Exporter les données de l'onglet courant vers un fichier - - - &Export - &Exporter - - - &Delete - &Supprimer - - - Choose the address to send coins to - Choisir l'adresse à laquelle envoyer des pièces - - - Choose the address to receive coins with - Choisir l'adresse avec laquelle recevoir des pièces - - - C&hoose - C&hoisir - - - Sending addresses - Adresses d'envoi - - - Receiving addresses - Adresses de réception - - - These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins. - Voici vos adresses Bitcoin pour envoyer des paiements. Vérifiez toujours le montant et l'adresse du destinataire avant d'envoyer des pièces. - - - These are your Bitcoin addresses for receiving payments. It is recommended to use a new receiving address for each transaction. - Voici vos adresses Bitcoin pour recevoir des paiements. Il est recommandé d'utiliser une nouvelle adresse de réception pour chaque transaction. - - - Copy &Label - Copier l'é&tiquette - - - &Edit - &Modifier - - - Export Address List - Exporter la liste d'adresses - - - Comma separated file (*.csv) - Valeurs séparées par des virgules (*.csv) - - - Exporting Failed - L'exportation a échoué - - - There was an error trying to save the address list to %1. Please try again. - Une erreur est survenue lors de l'enregistrement de la liste d'adresses vers %1. Veuillez ressayer plus tard. - - - - AddressTableModel - - Label - Étiquette - - - Address - Adresse - - - (no label) - (aucune étiquette) - - - - AskPassphraseDialog - - Passphrase Dialog - Fenêtre de dialogue de la phrase de passe - - - Enter passphrase - Saisir la phrase de passe - - - New passphrase - Nouvelle phrase de passe - - - Repeat new passphrase - Répéter la phrase de passe - - - Encrypt wallet - Chiffrer le portefeuille - - - This operation needs your wallet passphrase to unlock the wallet. - Cette opération nécessite votre phrase de passe pour déverrouiller le portefeuille. - - - Unlock wallet - Déverrouiller le portefeuille - - - This operation needs your wallet passphrase to decrypt the wallet. - Cette opération nécessite votre phrase de passe pour déchiffrer le portefeuille. - - - Decrypt wallet - Déchiffrer le portefeuille - - - Change passphrase - Changer la phrase de passe - - - Confirm wallet encryption - Confirmer le chiffrement du portefeuille - - - Warning: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR BITCOINS</b>! - Avertissement : si vous chiffrez votre portefeuille et perdez votre phrase de passe, vous <b>PERDREZ TOUS VOS BITCOINS</b> ! - - - Are you sure you wish to encrypt your wallet? - Êtes-vous sûr de vouloir chiffrer votre portefeuille ? - - - Bitcoin Core 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. - Bitcoin Core va maintenant se fermer pour terminer le processus de chiffrement. Souvenez-vous que le chiffrement de votre portefeuille ne peut pas vous protéger complètement contre le vol de vos bitcoins par des programmes malveillants infectant votre ordinateur. - - - 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. - IMPORTANT : Toute sauvegarde précédente de votre fichier de portefeuille devrait être remplacée par le nouveau fichier de portefeuille chiffré. Pour des raisons de sécurité, les sauvegardes précédentes de votre fichier de portefeuille non chiffré deviendront inutilisables dès que vous commencerez à utiliser le nouveau portefeuille chiffré. - - - Warning: The Caps Lock key is on! - Avertissement : la touche Verr. Maj. est activée ! - - - Wallet encrypted - Portefeuille chiffré - - - 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>. - Saisissez une nouvelle phrase de passe pour le portefeuille.<br/>Veuillez utiliser une phrase composée de <b>dix caractères aléatoires ou plus</b>, ou bien de <b>huit mots ou plus</b>. - - - Enter the old passphrase and new passphrase to the wallet. - Saisir l'ancienne phrase de passe puis la nouvelle phrase de passe du portefeuille. - - - Wallet encryption failed - Le chiffrement du portefeuille a échoué - - - Wallet encryption failed due to an internal error. Your wallet was not encrypted. - Le chiffrement du portefeuille a échoué en raison d'une erreur interne. Votre portefeuille n'a pas été chiffré. - - - The supplied passphrases do not match. - Les phrases de passe saisies ne correspondent pas. - - - Wallet unlock failed - Le déverrouillage du portefeuille a échoué - - - The passphrase entered for the wallet decryption was incorrect. - La phrase de passe saisie pour déchiffrer le portefeuille était incorrecte. - - - Wallet decryption failed - Le déchiffrage du portefeuille a échoué - - - Wallet passphrase was successfully changed. - La phrase de passe du portefeuille a été modifiée avec succès. - - - - BitcoinGUI - - Sign &message... - &Signer le message... - - - Synchronizing with network... - Synchronisation avec le réseau en cours… - - - &Overview - &Vue d'ensemble - - - Node - NÅ“ud - - - Show general overview of wallet - Afficher une vue d’ensemble du portefeuille - - - &Transactions - &Transactions - - - Browse transaction history - Parcourir l'historique des transactions - - - E&xit - Q&uitter - - - Quit application - Quitter l’application - - - About &Qt - À propos de &Qt - - - Show information about Qt - Afficher des informations sur Qt - - - &Options... - &Options… - - - &Encrypt Wallet... - &Chiffrer le portefeuille... - - - &Backup Wallet... - Sauvegarder le &portefeuille... - - - &Change Passphrase... - &Changer la phrase de passe... - - - &Sending addresses... - Adresses d'&envoi... - - - &Receiving addresses... - Adresses de &réception... - - - Open &URI... - Ouvrir un &URI... - - - Bitcoin Core client - Client Bitcoin Core - - - Importing blocks from disk... - Importation des blocs à partir du disque... - - - Reindexing blocks on disk... - Réindexation des blocs sur le disque... - - - Send coins to a Bitcoin address - Envoyer des pièces à une adresse Bitcoin - - - Backup wallet to another location - Sauvegarder le portefeuille vers un autre emplacement - - - Change the passphrase used for wallet encryption - Modifier la phrase de passe utilisée pour le chiffrement du portefeuille - - - &Debug window - Fenêtre de &débogage - - - Open debugging and diagnostic console - Ouvrir une console de débogage et de diagnostic - - - &Verify message... - &Vérifier un message... - - - Bitcoin - Bitcoin - - - Wallet - Portefeuille - - - &Send - &Envoyer - - - &Receive - &Recevoir - - - Show information about Bitcoin Core - Montrer des informations à propos de Bitcoin Core - - - &Show / Hide - &Afficher / Cacher - - - Show or hide the main Window - Afficher ou masquer la fenêtre principale - - - Encrypt the private keys that belong to your wallet - Chiffrer les clefs privées de votre portefeuille - - - Sign messages with your Bitcoin addresses to prove you own them - Signer les messages avec vos adresses Bitcoin pour prouver que vous les détenez - - - Verify messages to ensure they were signed with specified Bitcoin addresses - Vérifier les messages pour vous assurer qu'ils ont été signés avec les adresses Bitcoin spécifiées - - - &File - &Fichier - - - &Settings - &Réglages - - - &Help - &Aide - - - Tabs toolbar - Barre d'outils des onglets - - - Bitcoin Core - Bitcoin Core - - - Request payments (generates QR codes and bitcoin: URIs) - Demander des paiements (génère des codes QR et des URIs bitcoin:) - - - &About Bitcoin Core - À &propos de Bitcoin Core - - - Modify configuration options for Bitcoin Core - Modifier les options de configuration de Bitcoin Core - - - Show the list of used sending addresses and labels - Afficher la liste d'adresses d'envoi et d'étiquettes utilisées - - - Show the list of used receiving addresses and labels - Afficher la liste d'adresses de réception et d'étiquettes utilisées - - - Open a bitcoin: URI or payment request - Ouvrir un URI bitcoin: ou une demande de paiement - - - &Command-line options - Options de ligne de &commande - - - Show the Bitcoin Core help message to get a list with possible Bitcoin command-line options - Afficher le message d'aide de Bitcoin Core pour obtenir une liste des options de ligne de commande Bitcoin possibles. - - - %n active connection(s) to Bitcoin network - %n connexion active avec le réseau Bitcoin%n connexions actives avec le réseau Bitcoin - - - No block source available... - Aucune source de blocs disponible... - - - Processed %n block(s) of transaction history. - %n bloc d'historique transactionnel a été traité%n blocs d'historique transactionnel ont été traités - - - %n hour(s) - %n heure%n heures - - - %n day(s) - %n jour%n jours - - - %n week(s) - %n semaine%n semaines - - - %1 and %2 - %1 et %2 - - - %n year(s) - %n an%n ans - - - %1 behind - %1 en retard - - - Last received block was generated %1 ago. - Le dernier bloc reçu avait été généré il y a %1. - - - Transactions after this will not yet be visible. - Les transactions après ceci ne sont pas encore visibles. - - - Error - Erreur - - - Warning - Avertissement - - - Information - Information - - - Up to date - À jour - - - Catching up... - Rattrapage en cours… - - - Date: %1 - - Date : %1 - - - - Amount: %1 - - Montant : %1 - - - - Type: %1 - - Type : %1 - - - - Label: %1 - - Étiquette : %1 - - - - Address: %1 - - Adresse : %1 - - - - Sent transaction - Transaction envoyée - - - Incoming transaction - Transaction entrante - - - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - Le portefeuille est <b>chiffré</b> et est actuellement <b>déverrouillé</b> - - - Wallet is <b>encrypted</b> and currently <b>locked</b> - Le portefeuille est <b>chiffré</b> et actuellement <b>verrouillé</b> - - - - ClientModel - - Network Alert - Alerte réseau - - - - CoinControlDialog - - Coin Selection - Sélection des pièces - - - Quantity: - Quantité : - - - Bytes: - Octets : - - - Amount: - Montant : - - - Priority: - Priorité : - - - Fee: - Frais : - - - Dust: - Poussière : - - - After Fee: - Après les frais : - - - Change: - Monnaie : - - - (un)select all - Tout (dé)sélectionner - - - Tree mode - Mode arborescence - - - List mode - Mode liste - - - Amount - Montant - - - Received with label - Reçu avec une étiquette - - - Received with address - Reçu avec une adresse - - - Date - Date - - - Confirmations - Confirmations - - - Confirmed - Confirmée - - - Priority - Priorité - - - Copy address - Copier l’adresse - - - Copy label - Copier l’étiquette - - - Copy amount - Copier le montant - - - Copy transaction ID - Copier l'ID de la transaction - - - Lock unspent - Verrouiller ce qui n'est pas dépensé - - - Unlock unspent - Déverrouiller ce qui n'est pas dépensé - - - Copy quantity - Copier la quantité - - - Copy fee - Copier les frais - - - Copy after fee - Copier le montant après les frais - - - Copy bytes - Copier les octets - - - Copy priority - Copier la priorité - - - Copy dust - Copier la poussière - - - Copy change - Copier la monnaie - - - highest - la plus élevée - - - higher - plus élevée - - - high - élevée - - - medium-high - moyennement-élevée - - - medium - moyenne - - - low-medium - moyennement-basse - - - low - basse - - - lower - plus basse - - - lowest - la plus basse - - - (%1 locked) - (%1 verrouillé) - - - none - aucun - - - This label turns red if the transaction size is greater than 1000 bytes. - Cette étiquette devient rouge si la taille de la transaction est plus grande que 1 000 octets. - - - This label turns red if the priority is smaller than "medium". - Cette étiquette devient rouge si la priorité est plus basse que « moyenne ». - - - Can vary +/- %1 satoshi(s) per input. - Peut varier +/- %1 satoshi(s) par entrée. - - - yes - oui - - - no - non - - - This means a fee of at least %1 per kB is required. - Ceci signifie que des frais d'au moins %1 par ko sont exigés. - - - Can vary +/- 1 byte per input. - Peut varier +/- 1 octet par entrée. - - - Transactions with higher priority are more likely to get included into a block. - Les transactions à priorité plus haute sont plus à même d'être incluses dans un bloc. - - - (no label) - (aucune étiquette) - - - change from %1 (%2) - monnaie de %1 (%2) - - - (change) - (monnaie) - - - - EditAddressDialog - - Edit Address - Modifier l'adresse - - - &Label - &Étiquette - - - The label associated with this address list entry - L'étiquette associée à cette entrée de la liste d'adresses - - - The address associated with this address list entry. This can only be modified for sending addresses. - L'adresse associée à cette entrée de la liste d'adresses. Ceci ne peut être modifié que pour les adresses d'envoi. - - - &Address - &Adresse - - - New receiving address - Nouvelle adresse de réception - - - New sending address - Nouvelle adresse d’envoi - - - Edit receiving address - Modifier l’adresse de réception - - - Edit sending address - Modifier l’adresse d'envoi - - - The entered address "%1" is already in the address book. - L’adresse fournie « %1 » est déjà présente dans le carnet d'adresses. - - - The entered address "%1" is not a valid Bitcoin address. - L'adresse fournie « %1 » n'est pas une adresse Bitcoin valide. - - - Could not unlock wallet. - Impossible de déverrouiller le portefeuille. - - - New key generation failed. - Échec de génération de la nouvelle clef. - - - - FreespaceChecker - - A new data directory will be created. - Un nouveau répertoire de données sera créé. - - - name - nom - - - Directory already exists. Add %1 if you intend to create a new directory here. - Le répertoire existe déjà. Ajoutez %1 si vous voulez créer un nouveau répertoire ici. - - - Path already exists, and is not a directory. - Le chemin existe déjà et n'est pas un répertoire. - - - Cannot create data directory here. - Impossible de créer un répertoire de données ici. - - - - HelpMessageDialog - - Bitcoin Core - Bitcoin Core - - - version - version - - - (%1-bit) - (%1-bit) - - - About Bitcoin Core - À propos de Bitcoin Core - - - Command-line options - Options de ligne de commande - - - Usage: - Utilisation : - - - command-line options - options de ligne de commande - - - - Intro - - Welcome - Bienvenue - - - Welcome to Bitcoin Core. - Bienvenue à Bitcoin Core. - - - As this is the first time the program is launched, you can choose where Bitcoin Core will store its data. - Comme c'est la première fois que le logiciel est lancé, vous pouvez choisir où Bitcoin Core stockera ses données. - - - Bitcoin Core will download and store a copy of the Bitcoin block chain. At least %1GB of data will be stored in this directory, and it will grow over time. The wallet will also be stored in this directory. - Bitcoin Core va télécharger et stocker une copie de la chaîne de blocs Bitcoin. Au moins %1Go de données seront stockées dans ce répertoire et cela augmentera avec le temps. Le portefeuille sera également stocké dans ce répertoire. - - - Use the default data directory - Utiliser le répertoire de données par défaut - - - Use a custom data directory: - Utiliser un répertoire de données personnalisé : - - - Bitcoin Core - Bitcoin Core - - - Error: Specified data directory "%1" cannot be created. - Erreur : le répertoire de données spécifié « %1 » ne peut pas être créé. - - - Error - Erreur - - - %n GB of free space available - %n Go d'espace libre disponible%n Go d'espace libre disponibles - - - - OpenURIDialog - - Open URI - Ouvrir un URI - - - Open payment request from URI or file - Ouvrir une demande de paiement à partir d'un URI ou d'un fichier - - - URI: - URI : - - - Select payment request file - Choisir le fichier de demande de paiement - - - Select payment request file to open - Choisir le fichier de demande de paiement à ouvrir - - - - OptionsDialog - - Options - Options - - - &Main - Réglages &principaux - - - Size of &database cache - Taille du cache de la base de &données - - - MB - Mo - - - Number of script &verification threads - Nombre d'exétrons de &vérification de script - - - Accept connections from outside - Accepter les connexions provenant de l'extérieur - - - Allow incoming connections - Permettre les transactions entrantes - - - IP address of the proxy (e.g. IPv4: 127.0.0.1 / IPv6: ::1) - Adresse IP du mandataire (par ex. IPv4 : 127.0.0.1 / IPv6 : ::1) - - - Minimize instead of exit the application when the window is closed. When this option is enabled, the application will be closed only after selecting Exit in the menu. - Minimiser au lieu de quitter l'application lorsque la fenêtre est fermée. Si cette option est activée, l'application ne sera fermée qu'en sélectionnant Quitter dans le menu. - - - The user interface language can be set here. This setting will take effect after restarting Bitcoin Core. - La langue de l'interface utilisateur peut être définie ici. Ce réglage sera pris en compte après redémarrage de Bitcoin. - - - 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 |. - URL de tiers (par ex. un explorateur de blocs) apparaissant dans l'onglet des transactions comme éléments du menu contextuel. %s dans l'URL est remplacé par le hachage de la transaction. Les URL multiples sont séparées par une barre verticale |. - - - Third party transaction URLs - URL de transaction d'un tiers - - - Active command-line options that override above options: - Options actives de ligne de commande qui annulent les options ci-dessus : - - - Reset all client options to default. - Réinitialiser toutes les options du client aux valeurs par défaut. - - - &Reset Options - &Réinitialisation des options - - - &Network - &Réseau - - - Automatically start Bitcoin Core after logging in to the system. - Démarrer Bitcoin Core automatiquement après avoir ouvert une session sur le système. - - - &Start Bitcoin Core on system login - &Démarrer Bitcoin Core lors de l'ouverture d'une session - - - (0 = auto, <0 = leave that many cores free) - (0 = auto, < 0 = laisser ce nombre de cÅ“urs inutilisés) - - - W&allet - &Portefeuille - - - Expert - Expert - - - Enable coin &control features - Activer les fonctions de &contrôle des pièces - - - 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. - Si vous désactivé la dépense de la monnaie non confirmée, la monnaie d'une transaction ne peut pas être utilisée tant que cette transaction n'a pas reçu au moins une confirmation. Ceci affecte aussi comment votre solde est calculé. - - - &Spend unconfirmed change - &Dépenser la monnaie non confirmée - - - Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled. - Ouvrir le port du client Bitcoin automatiquement sur le routeur. Ceci ne fonctionne que si votre routeur supporte l'UPnP et si la fonctionnalité est activée. - - - Map port using &UPnP - Mapper le port avec l'&UPnP - - - Connect to the Bitcoin network through a SOCKS5 proxy. - Se connecter au réseau Bitcoin par un mandataire SOCKS5. - - - &Connect through SOCKS5 proxy (default proxy): - Se &connecter par un mandataire SOCKS5 (mandataire par défaut) : - - - Proxy &IP: - &IP du serveur mandataire : - - - &Port: - &Port : - - - Port of the proxy (e.g. 9050) - Port du serveur mandataire (par ex. 9050) - - - &Window - &Fenêtre - - - Show only a tray icon after minimizing the window. - Afficher uniquement une icône système après minimisation. - - - &Minimize to the tray instead of the taskbar - &Minimiser dans la barre système au lieu de la barre des tâches - - - M&inimize on close - M&inimiser lors de la fermeture - - - &Display - &Affichage - - - User Interface &language: - &Langue de l'interface utilisateur : - - - &Unit to show amounts in: - &Unité d'affichage des montants : - - - Choose the default subdivision unit to show in the interface and when sending coins. - Choisissez la sous-unité par défaut pour l'affichage dans l'interface et lors de l'envoi de pièces. - - - Whether to show coin control features or not. - Afficher ou non les fonctions de contrôle des pièces. - - - &OK - &OK - - - &Cancel - A&nnuler - - - default - par défaut - - - none - aucune - - - Confirm options reset - Confirmer la réinitialisation des options - - - Client restart required to activate changes. - Le redémarrage du client est nécessaire pour activer les changements. - - - Client will be shut down. Do you want to proceed? - Le client sera arrêté. Voulez-vous continuer ? - - - This change would require a client restart. - Ce changement demanderait un redémarrage du client. - - - The supplied proxy address is invalid. - L'adresse de serveur mandataire fournie est invalide. - - - - OverviewPage - - Form - Formulaire - - - The displayed information may be out of date. Your wallet automatically synchronizes with the Bitcoin network after a connection is established, but this process has not completed yet. - Les informations affichées peuvent être obsolètes. Votre portefeuille est automatiquement synchronisé avec le réseau Bitcoin lorsque la connexion s'établit, or ce processus n'est pas encore terminé. - - - Watch-only: - Juste-regarder : - - - Available: - Disponible : - - - Your current spendable balance - Votre solde actuel pouvant être dépensé - - - Pending: - En attente : - - - Total of transactions that have yet to be confirmed, and do not yet count toward the spendable balance - Total des transactions qui doivent encore être confirmées et qu'il n'est pas encore possible de dépenser - - - Immature: - Immature : - - - Mined balance that has not yet matured - Le solde généré n'est pas encore mûr - - - Balances - Soldes - - - Total: - Total : - - - Your current total balance - Votre solde total actuel - - - Your current balance in watch-only addresses - Votre balance actuelle en adresses juste-regarder - - - Spendable: - Disponible : - - - Recent transactions - Transactions récentes - - - Unconfirmed transactions to watch-only addresses - Transactions non confirmées vers des adresses juste-regarder - - - Mined balance in watch-only addresses that has not yet matured - Le solde miné dans des adresses juste-regarder, qui n'est pas encore mûr - - - Current total balance in watch-only addresses - Solde total actuel dans des adresses juste-regarder - - - - PaymentServer - - URI handling - Gestion des URIs - - - Invalid payment address %1 - Adresse de paiement invalide %1 - - - Payment request rejected - La demande de paiement est rejetée - - - Payment request network doesn't match client network. - Le réseau de la demande de paiement ne correspond pas au réseau du client. - - - Payment request is not initialized. - La demande de paiement n'est pas initialisée. - - - Requested payment amount of %1 is too small (considered dust). - Le paiement demandé d'un montant de %1 est trop faible (considéré comme de la poussière). - - - Payment request error - Erreur de demande de paiement - - - Cannot start bitcoin: click-to-pay handler - Impossible de démarrer le gestionnaire de cliquer-pour-payer bitcoin : - - - Payment request fetch URL is invalid: %1 - L'URL de récupération de la demande de paiement est invalide : %1 - - - URI cannot be parsed! This can be caused by an invalid Bitcoin address or malformed URI parameters. - L'URI ne peut pas être analysé ! Ceci peut être causé par une adresse Bitcoin invalide ou par des paramètres d'URI mal formés. - - - Payment request file handling - Gestion des fichiers de demande de paiement - - - Payment request file cannot be read! This can be caused by an invalid payment request file. - Le fichier de demande de paiement ne peut pas être lu ! Ceci peut être causé par un fichier de demande de paiement invalide. - - - Payment request expired. - Demande de paiement expirée. - - - Unverified payment requests to custom payment scripts are unsupported. - Les demandes de paiements non vérifiées à des scripts de paiement personnalisés ne sont pas prises en charge. - - - Invalid payment request. - Demande de paiement invalide. - - - Refund from %1 - Remboursement de %1 - - - Payment request %1 is too large (%2 bytes, allowed %3 bytes). - La demande de paiement %1 est trop grande (%2 octets, %3 octets permis). - - - Payment request DoS protection - Protection DdS des demandes de paiement - - - Error communicating with %1: %2 - Erreur de communication avec %1 : %2 - - - Payment request cannot be parsed! - La demande de paiement ne peut pas être analysée ! - - - Bad response from server %1 - Mauvaise réponse du serveur %1 - - - Payment acknowledged - Le paiement a été confirmé - - - Network request error - Erreur de demande réseau - - - - PeerTableModel - - User Agent - Agent utilisateur - - - Node/Service - NÅ“ud/service - - - Ping Time - Temps de ping - - - - QObject - - Amount - Montant - - - Enter a Bitcoin address (e.g. %1) - Saisir une adresse Bitcoin (p. ex. %1) - - - %1 d - %1 d - - - %1 h - %1 h - - - %1 m - %1 min - - - %1 s - %1 s - - - None - Aucun - - - N/A - N.D. - - - %1 ms - %1 ms - - - - QRImageWidget - - &Save Image... - &Sauvegarder l'image... - - - &Copy Image - &Copier l'image - - - Save QR Code - Sauvegarder le code QR - - - PNG Image (*.png) - Image PNG (*.png) - - - - RPCConsole - - Client name - Nom du client - - - N/A - N.D. - - - Client version - Version du client - - - &Information - &Informations - - - Debug window - Fenêtre de débogage - - - General - Général - - - Using OpenSSL version - Version d'OpenSSL utilisée - - - Using BerkeleyDB version - Version BerkeleyDB utilisée - - - Startup time - Heure de démarrage - - - Network - Réseau - - - Name - Nom - - - Number of connections - Nombre de connexions - - - Block chain - Chaîne de blocs - - - Current number of blocks - Nombre actuel de blocs - - - Open the Bitcoin Core debug log file from the current data directory. This can take a few seconds for large log files. - Ouvrir le journal de débogage du répertoire de données actuel. Ceci pourrait prendre quelques secondes pour les gros fichiers de journalisation. - - - Received - Reçu - - - Sent - Envoyé - - - &Peers - &Pairs - - - Select a peer to view detailed information. - Choisir un pair pour voir l'information détaillée. - - - Direction - Direction - - - Version - Version - - - User Agent - Agent utilisateur - - - Services - Services - - - Starting Height - Hauteur de démarrage - - - Sync Height - Hauteur de synchro - - - Ban Score - Pointage des bannissements - - - Connection Time - Temps de connexion - - - Last Send - Dernier envoi - - - Last Receive - Dernière réception - - - Bytes Sent - Octets envoyés - - - Bytes Received - Octets reçus - - - Ping Time - Temps de ping - - - Time Offset - Décalage temporel - - - Last block time - Horodatage du dernier bloc - - - &Open - &Ouvrir - - - &Console - &Console - - - &Network Traffic - Trafic &réseau - - - &Clear - &Nettoyer - - - Totals - Totaux - - - In: - Entrant : - - - Out: - Sortant : - - - Build date - Date de compilation - - - Debug log file - Journal de débogage - - - Clear console - Nettoyer la console - - - Welcome to the Bitcoin Core RPC console. - Bienvenue dans le console RPC de Bitcoin Core. - - - Use up and down arrows to navigate history, and <b>Ctrl-L</b> to clear screen. - Utiliser les touches de curseur pour naviguer dans l'historique et <b>Ctrl-L</b> pour effacer l'écran. - - - Type <b>help</b> for an overview of available commands. - Taper <b>help</b> pour afficher une vue générale des commandes proposées. - - - %1 B - %1 o - - - %1 KB - %1 Ko - - - %1 MB - %1 Mo - - - %1 GB - %1 Go - - - via %1 - par %1 - - - never - jamais - - - Inbound - Entrant - - - Outbound - Sortant - - - Unknown - Inconnu - - - Fetching... - Récupération... - - - - ReceiveCoinsDialog - - &Amount: - &Montant : - - - &Label: - &Étiquette : - - - &Message: - M&essage : - - - Reuse one of the previously used receiving addresses. Reusing addresses has security and privacy issues. Do not use this unless re-generating a payment request made before. - Réutilise une adresse de réception précédemment utilisée. Réutiliser une adresse pose des problèmes de sécurité et de vie privée. N'utilisez pas cette option sauf si vous générez à nouveau une demande de paiement déjà faite. - - - R&euse an existing receiving address (not recommended) - Ré&utiliser une adresse de réception existante (non recommandé) - - - An optional message to attach to the payment request, which will be displayed when the request is opened. Note: The message will not be sent with the payment over the Bitcoin network. - Un message optionnel à joindre à la demande de paiement qui sera affiché à l'ouverture de celle-ci. Note : le message ne sera pas envoyé avec le paiement par le réseau Bitcoin. - - - An optional label to associate with the new receiving address. - Un étiquette optionnelle à associer à la nouvelle adresse de réception - - - Use this form to request payments. All fields are <b>optional</b>. - Utiliser ce formulaire pour demander des paiements. Tous les champs sont <b>optionnels</b>. - - - An optional amount to request. Leave this empty or zero to not request a specific amount. - Un montant optionnel à demander. Laisser ceci vide ou à zéro pour ne pas demander de montant spécifique. - - - Clear all fields of the form. - Effacer tous les champs du formulaire. - - - Clear - Effacer - - - Requested payments history - Historique des paiements demandés - - - &Request payment - &Demande de paiement - - - Show the selected request (does the same as double clicking an entry) - Afficher la demande choisie (identique à un double-clic sur une entrée) - - - Show - Afficher - - - Remove the selected entries from the list - Enlever les entrées sélectionnées de la liste - - - Remove - Enlever - - - Copy label - Copier l’étiquette - - - Copy message - Copier le message - - - Copy amount - Copier le montant - - - - ReceiveRequestDialog - - QR Code - Code QR - - - Copy &URI - Copier l'&URI - - - Copy &Address - Copier l'&adresse - - - &Save Image... - &Sauvegarder l'image... - - - Request payment to %1 - Demande de paiement à %1 - - - Payment information - Informations de paiement - - - URI - URI - - - Address - Adresse - - - Amount - Montant - - - Label - Étiquette - - - Message - Message - - - Resulting URI too long, try to reduce the text for label / message. - L'URI résultant est trop long, essayez de réduire le texte d'étiquette / de message. - - - Error encoding URI into QR Code. - Erreur d'encodage de l'URI en code QR. - - - - RecentRequestsTableModel - - Date - Date - - - Label - Étiquette - - - Message - Message - - - Amount - Montant - - - (no label) - (pas d'étiquette) - - - (no message) - (pas de message) - - - (no amount) - (aucun montant) - - - - SendCoinsDialog - - Send Coins - Envoyer des pièces - - - Coin Control Features - Fonctions de contrôle des pièces - - - Inputs... - Entrants... - - - automatically selected - choisi automatiquement - - - Insufficient funds! - Fonds insuffisants ! - - - Quantity: - Quantité : - - - Bytes: - Octets : - - - Amount: - Montant : - - - Priority: - Priorité : - - - Fee: - Frais : - - - After Fee: - Après les frais : - - - Change: - Monnaie : - - - If this is activated, but the change address is empty or invalid, change will be sent to a newly generated address. - Si ceci est actif mais l'adresse de monnaie rendue est vide ou invalide, la monnaie sera envoyée vers une adresse nouvellement générée. - - - Custom change address - Adresse personnalisée de monnaie rendue - - - Transaction Fee: - Frais de transaction : - - - Choose... - Choisir... - - - collapse fee-settings - réduire les paramètres des frais - - - per kilobyte - par kilo-octet - - - 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. - Si les frais personnalisés sont définis à 1 000 satoshis et que la transaction est seulement de 250 octets, donc le « par kilo-octet » ne paiera que 250 satoshis de frais, alors que le « total au moins » paiera 1 000 satoshis. Pour des transactions supérieures à un kilo-octet, les deux paieront par kilo-octets. - - - Hide - Cacher - - - total at least - total au moins - - - 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. - Il est correct de payer les frais minimum tant que le volume transactionnel est inférieur à l'espace dans les blocs. Mais soyez conscient que ceci pourrait résulter en une transaction n'étant jamais confirmée une fois qu'il y aura plus de transactions que le réseau ne pourra en traiter. - - - (read the tooltip) - (lire l'infobulle) - - - Recommended: - Recommandés : - - - Custom: - Personnalisés : - - - (Smart fee not initialized yet. This usually takes a few blocks...) - (Les frais intelligents ne sont pas encore initialisés. Ceci prend habituellement quelques blocs...) - - - Confirmation time: - Temps de confirmation : - - - normal - normal - - - fast - rapide - - - Send as zero-fee transaction if possible - Envoyer si possible une transaction sans frais - - - (confirmation may take longer) - (la confirmation pourrait prendre plus longtemps) - - - Send to multiple recipients at once - Envoyer à plusieurs destinataires à la fois - - - Add &Recipient - Ajouter un &destinataire - - - Clear all fields of the form. - Effacer tous les champs du formulaire. - - - Dust: - Poussière : - - - Clear &All - &Tout nettoyer - - - Balance: - Solde : - - - Confirm the send action - Confirmer l’action d'envoi - - - S&end - E&nvoyer - - - Confirm send coins - Confirmer l’envoi des pièces - - - %1 to %2 - %1 à %2 - - - Copy quantity - Copier la quantité - - - Copy amount - Copier le montant - - - Copy fee - Copier les frais - - - Copy after fee - Copier le montant après les frais - - - Copy bytes - Copier les octets - - - Copy priority - Copier la priorité - - - Copy change - Copier la monnaie - - - or - ou - - - The amount to pay must be larger than 0. - Le montant à payer doit être supérieur à 0. - - - The amount exceeds your balance. - Le montant dépasse votre solde. - - - The total exceeds your balance when the %1 transaction fee is included. - Le montant dépasse votre solde lorsque les frais de transaction de %1 sont inclus. - - - Transaction creation failed! - La création de la transaction a échoué ! - - - 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. - La transaction a été rejetée ! Ceci peut arriver si certaines pièces de votre portefeuille étaient déjà dépensées, par exemple si vous avez utilisé une copie de wallet.dat et que des pièces ont été dépensées dans la copie sans être marquées comme telles ici. - - - A fee higher than %1 is considered an absurdly high fee. - Des frais supérieurs à %1 sont considérés comme ridiculement élevés. - - - Payment request expired. - Demande de paiement expirée. - - - Estimated to begin confirmation within %n block(s). - Il est estimé que la confirmation commencera dans %n bloc.Il est estimé que la confirmation commencera dans %n blocs. - - - Pay only the minimum fee of %1 - Payer seulement les frais minimum de %1 - - - The recipient address is not valid. Please recheck. - L'adresse du destinataire est invalide. Veuillez la vérifier. - - - Duplicate address found: addresses should only be used once each. - Adresse identique trouvée : chaque adresse ne devrait être utilisée qu'une fois. - - - Warning: Invalid Bitcoin address - Avertissement : adresse Bitcoin invalide - - - (no label) - (pas d'étiquette) - - - Warning: Unknown change address - Avertissement : adresse de monnaie rendue inconnue - - - Copy dust - Copier la poussière - - - Are you sure you want to send? - Êtes-vous sûr de vouloir envoyer ? - - - added as transaction fee - ajouté en tant que frais de transaction - - - - SendCoinsEntry - - A&mount: - &Montant : - - - Pay &To: - &Payer à : - - - Enter a label for this address to add it to your address book - Saisir une étiquette pour cette adresse afin de l’ajouter à votre carnet d’adresses - - - &Label: - É&tiquette : - - - Choose previously used address - Choisir une adresse déjà utilisée - - - This is a normal payment. - Ceci est un paiement normal. - - - The Bitcoin address to send the payment to - L'adresse Bitcoin à laquelle envoyer le paiement - - - Alt+A - Alt+A - - - Paste address from clipboard - Coller l'adresse depuis le presse-papiers - - - Alt+P - Alt+P - - - Remove this entry - Enlever cette entrée - - - The fee will be deducted from the amount being sent. The recipient will receive less bitcoins than you enter in the amount field. If multiple recipients are selected, the fee is split equally. - Les frais seront déduits du montant envoyé. Le destinataire recevra moins de bitcoins que le montant saisi dans le champ de montant. Si plusieurs destinataires sont sélectionnés, les frais seront partagés également.. - - - S&ubtract fee from amount - S&oustraire les frais du montant - - - Message: - Message : - - - This is an unauthenticated payment request. - Cette demande de paiement n'est pas authentifiée. - - - This is an authenticated payment request. - Cette demande de paiement est authentifiée. - - - Enter a label for this address to add it to the list of used addresses - Saisir une étiquette pour cette adresse afin de l'ajouter à la liste d'adresses utilisées - - - A message that was attached to the bitcoin: URI which will be stored with the transaction for your reference. Note: This message will not be sent over the Bitcoin network. - Un message qui était joint à l'URI Bitcoin et qui sera stocké avec la transaction pour référence. Note : ce message ne sera pas envoyé par le réseau Bitcoin. - - - Pay To: - Payer à : - - - Memo: - Mémo : - - - - ShutdownWindow - - Bitcoin Core is shutting down... - Arrêt de Bitcoin Core... - - - Do not shut down the computer until this window disappears. - Ne pas fermer l'ordinateur jusqu'à la disparition de cette fenêtre. - - - - SignVerifyMessageDialog - - Signatures - Sign / Verify a Message - Signatures - Signer / Vérifier un message - - - &Sign Message - &Signer un message - - - You can sign messages/agreements with your addresses to prove you can receive bitcoins sent to them. Be careful not to sign anything vague or random, as phishing attacks may try to trick you into signing your identity over to them. Only sign fully-detailed statements you agree to. - Vous pouvez signer des messages/accords avec vos adresses pour prouver que vous pouvez recevoir des bitcoins à ces dernières. Faites attention de ne rien signer de vague ou au hasard, car des attaques d'hameçonnage pourraient essayer de vous faire signer avec votre identité afin de l'usurper. Ne signez que des déclarations entièrement détaillées et avec lesquelles vous êtes d'accord. - - - The Bitcoin address to sign the message with - L'adresse Bitcoin avec laquelle signer le message - - - Choose previously used address - Choisir une adresse précédemment utilisée - - - Alt+A - Alt+A - - - Paste address from clipboard - Coller une adresse depuis le presse-papiers - - - Alt+P - Alt+P - - - Enter the message you want to sign here - Saisir ici le message que vous désirez signer - - - Signature - Signature - - - Copy the current signature to the system clipboard - Copier la signature actuelle dans le presse-papiers - - - Sign the message to prove you own this Bitcoin address - Signer le message pour prouver que vous détenez cette adresse Bitcoin - - - Sign &Message - Signer le &message - - - Reset all sign message fields - Réinitialiser tous les champs de signature de message - - - Clear &All - &Tout nettoyer - - - &Verify Message - &Vérifier un message - - - Enter the receiver's address, message (ensure you copy line breaks, spaces, tabs, etc. exactly) and signature below to verify the message. Be careful not to read more into the signature than what is in the signed message itself, to avoid being tricked by a man-in-the-middle attack. Note that this only proves the signing party receives with the address, it cannot prove sendership of any transaction! - Saisissez ci-dessous l'adresse de destinataire, le message (assurez-vous de copier exactement les retours à la ligne, les espaces, les tabulations, etc.) et la signature pour vérifier le message. Faites attention à ne pas déduire davantage de la signature que ce qui est contenu dans le message signé même, pour éviter d'être trompé par une attaque d'homme du milieu. Notez que ceci ne fait que prouver que le signataire reçoit l'adresse et ne peut pas prouver la provenance d'une transaction. - - - The Bitcoin address the message was signed with - L'adresse Bitcoin avec laquelle le message a été signé - - - Verify the message to ensure it was signed with the specified Bitcoin address - Vérifier le message pour vous assurer qu'il a bien été signé par l'adresse Bitcoin spécifiée - - - Verify &Message - Vérifier le &message - - - Reset all verify message fields - Réinitialiser tous les champs de vérification de message - - - Click "Sign Message" to generate signature - Cliquez sur « Signer le message » pour générer la signature - - - The entered address is invalid. - L'adresse saisie est invalide. - - - Please check the address and try again. - Veuillez vérifier l'adresse et réessayer. - - - The entered address does not refer to a key. - L'adresse saisie ne fait pas référence à une clef. - - - Wallet unlock was cancelled. - Le déverrouillage du portefeuille a été annulé. - - - Private key for the entered address is not available. - La clef privée n'est pas disponible pour l'adresse indiquée. - - - Message signing failed. - La signature du message a échoué. - - - Message signed. - Le message a été signé. - - - The signature could not be decoded. - La signature n'a pu être décodée. - - - Please check the signature and try again. - Veuillez vérifier la signature et réessayer. - - - The signature did not match the message digest. - La signature ne correspond pas à l'empreinte du message. - - - Message verification failed. - Échec de la vérification du message. - - - Message verified. - Message vérifié. - - - - SplashScreen - - Bitcoin Core - Bitcoin Core - - - The Bitcoin Core developers - Les développeurs Bitcoin Core - - - [testnet] - [testnet] - - - - TrafficGraphWidget - - KB/s - Ko/s - - - - TransactionDesc - - Open until %1 - Ouvert jusqu'à %1 - - - conflicted - en conflit - - - %1/offline - %1/hors ligne - - - %1/unconfirmed - %1/non confirmée - - - %1 confirmations - %1 confirmations - - - Status - État - - - , broadcast through %n node(s) - , diffusée à travers %n nÅ“ud, diffusée à travers %n nÅ“uds - - - Date - Date - - - Source - Source - - - Generated - Généré - - - From - De - - - To - À - - - own address - votre propre adresse - - - watch-only - juste-regarder - - - label - étiquette - - - Credit - Crédit - - - matures in %n more block(s) - arrive à maturité dans %n bloc de plusarrive à maturité dans %n blocs de plus - - - not accepted - refusé - - - Debit - Débit - - - Total debit - Débit total - - - Total credit - Crédit total - - - Transaction fee - Frais de transaction - - - Net amount - Montant net - - - Message - Message - - - Comment - Commentaire - - - Transaction ID - ID de la transaction - - - Merchant - Marchand - - - Generated coins must mature %1 blocks before they can be spent. When you generated this block, it was broadcast to the network to be added to the block chain. If it fails to get into the chain, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - Les pièces générées doivent mûrir pendant %1 blocs avant de pouvoir être dépensées. Lorsque vous avez généré ce bloc, il a été diffusé sur le réseau pour être ajouté à la chaîne de blocs. S’il échoue a intégrer la chaîne, son état sera modifié en « non accepté » et il ne sera pas possible de le dépenser. Ceci peut arriver occasionnellement si un autre nÅ“ud génère un bloc à quelques secondes du votre. - - - Debug information - Informations de débogage - - - Transaction - Transaction - - - Inputs - Entrants - - - Amount - Montant - - - true - vrai - - - false - faux - - - , has not been successfully broadcast yet - , n’a pas encore été diffusée avec succès - - - Open for %n more block(s) - Ouvert pour %n bloc de plusOuvert pour %n blocs de plus - - - unknown - inconnu - - - - TransactionDescDialog - - Transaction details - Détails de la transaction - - - This pane shows a detailed description of the transaction - Ce panneau affiche une description détaillée de la transaction - - - - TransactionTableModel - - Date - Date - - - Type - Type - - - Immature (%1 confirmations, will be available after %2) - Immature (%1 confirmations, sera disponible après %2) - - - Open for %n more block(s) - Ouvert pour %n bloc de plusOuvert pour %n blocs de plus - - - Open until %1 - Ouvert jusqu'à %1 - - - Confirmed (%1 confirmations) - Confirmée (%1 confirmations) - - - This block was not received by any other nodes and will probably not be accepted! - Ce bloc n’a été reçu par aucun autre nÅ“ud et ne sera probablement pas accepté ! - - - Generated but not accepted - Généré mais pas accepté - - - Offline - Hors ligne - - - Label - Étiquette - - - Unconfirmed - Non confirmé - - - Confirming (%1 of %2 recommended confirmations) - Confirmation (%1 sur %2 confirmations recommandées) - - - Conflicted - En conflit - - - Received with - Reçue avec - - - Received from - Reçue de - - - Sent to - Envoyée à - - - Payment to yourself - Paiement à vous-même - - - Mined - Miné - - - watch-only - juste-regarder - - - (n/a) - (n.d) - - - Transaction status. Hover over this field to show number of confirmations. - État de la transaction. Laissez le pointeur de la souris sur ce champ pour voir le nombre de confirmations. - - - Date and time that the transaction was received. - Date et heure de réception de la transaction. - - - Type of transaction. - Type de transaction. - - - Whether or not a watch-only address is involved in this transaction. - Une adresse juste-regarder est-elle impliquée dans cette transaction. - - - User-defined intent/purpose of the transaction. - Intention/but de la transaction défini par l'utilisateur. - - - Amount removed from or added to balance. - Montant ajouté ou enlevé au solde. - - - - TransactionView - - All - Toutes - - - Today - Aujourd’hui - - - This week - Cette semaine - - - This month - Ce mois-ci - - - Last month - Le mois dernier - - - This year - Cette année - - - Range... - Intervalle… - - - Received with - Reçue avec - - - Sent to - Envoyée à - - - To yourself - À vous-même - - - Mined - Miné - - - Other - Autres - - - Enter address or label to search - Saisir une adresse ou une étiquette à rechercher - - - Min amount - Montant min. - - - Copy address - Copier l’adresse - - - Copy label - Copier l’étiquette - - - Copy amount - Copier le montant - - - Copy transaction ID - Copier l'ID de la transaction - - - Edit label - Modifier l’étiquette - - - Show transaction details - Afficher les détails de la transaction - - - Export Transaction History - Exporter l'historique des transactions - - - Watch-only - Juste-regarder : - - - Exporting Failed - L'exportation a échoué - - - There was an error trying to save the transaction history to %1. - Une erreur est survenue lors de l'enregistrement de l'historique des transactions vers %1. - - - Exporting Successful - Exportation réussie - - - The transaction history was successfully saved to %1. - L'historique des transactions a été sauvegardée avec succès vers %1. - - - Comma separated file (*.csv) - Valeurs séparées par des virgules (*.csv) - - - Confirmed - Confirmée - - - Date - Date - - - Type - Type - - - Label - Étiquette - - - Address - Adresse - - - ID - ID - - - Range: - Intervalle : - - - to - à - - - - UnitDisplayStatusBarControl - - Unit to show amounts in. Click to select another unit. - Unité d'affichage des montants. Cliquer pour choisir une autre unité. - - - - WalletFrame - - No wallet has been loaded. - Aucun portefeuille de chargé. - - - - WalletModel - - Send Coins - Envoyer des pièces - - - - WalletView - - &Export - &Exporter - - - Export the data in the current tab to a file - Exporter les données de l'onglet courant vers un fichier - - - Backup Wallet - Sauvegarder le portefeuille - - - Wallet Data (*.dat) - Données de portefeuille (*.dat) - - - Backup Failed - Échec de la sauvegarde - - - There was an error trying to save the wallet data to %1. - Une erreur est survenue lors de l'enregistrement des données de portefeuille vers %1. - - - The wallet data was successfully saved to %1. - Les données de portefeuille ont été enregistrées avec succès vers %1 - - - Backup Successful - Sauvegarde réussie - - - - bitcoin-core - - Options: - Options : - - - Specify data directory - Spécifier le répertoire de données - - - Connect to a node to retrieve peer addresses, and disconnect - Se connecter à un nÅ“ud pour obtenir des adresses de pairs puis se déconnecter - - - Specify your own public address - Spécifier votre propre adresse publique - - - Accept command line and JSON-RPC commands - Accepter les commandes de JSON-RPC et de la ligne de commande - - - Run in the background as a daemon and accept commands - Fonctionner en arrière-plan en tant que démon et accepter les commandes - - - Use the test network - Utiliser le réseau de test - - - Accept connections from outside (default: 1 if no -proxy or -connect) - Accepter les connexions entrantes (par défaut : 1 si aucun -proxy ou -connect ) - - - Bind to given address and always listen on it. Use [host]:port notation for IPv6 - Se lier à l'adresse donnée et toujours l'écouter. Utilisez la notation [host]:port pour l'IPv6 - - - Delete all wallet transactions and only recover those parts of the blockchain through -rescan on startup - Supprimer toutes les transactions du portefeuille et ne récupérer que ces parties de la chaîne de bloc avec -rescan au démarrage - - - Distributed under the MIT software license, see the accompanying file COPYING or <http://www.opensource.org/licenses/mit-license.php>. - Distribué sous la licence MIT d'utilisation d'un logiciel. Consultez le fichier joint COPYING ou <http://www.opensource.org/licenses/mit-license.php>. - - - Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) - Exécuter la commande lorsqu'une transaction de portefeuille change (%s dans la commande est remplacée par TxID) - - - Maximum total fees to use in a single wallet transaction; setting this too low may abort large transactions (default: %s) - Total maximal des frais à utiliser en une seule transaction de portefeuille. Le définir trop bas pourrait interrompre les grosses transactions (par défaut : %s) - - - Reduce storage requirements by pruning (deleting) old blocks. This mode disables wallet support and is incompatible with -txindex. Warning: Reverting this setting requires re-downloading the entire blockchain. (default: 0 = disable pruning blocks, >%u = target size in MiB to use for block files) - Réduire les exigences de stockage en élaguant (supprimant) les anciens blocs. Ce mode désactive la prise en charge de portefeuilles et n'est pas compatible avec -txindex. Avertissement : configurer ce paramètre à sa valeur antérieure retéléchargera complètement la chaîne de blocs (par défaut : 0 = désactiver l'élagage des blocs, >%u = taille cible en Mo à utiliser pour les fichiers de blocs). - - - Set the number of script verification threads (%u to %d, 0 = auto, <0 = leave that many cores free, default: %d) - Définir le nombre d'exétrons de vérification des scripts (%u à %d, 0 = auto, < 0 = laisser ce nombre de cÅ“urs inutilisés, par défaut : %d) - - - This is a pre-release test build - use at your own risk - do not use for mining or merchant applications - Ceci est une pré-version de test - l'utiliser à vos risques et périls - ne pas l'utiliser pour miner ou pour des applications marchandes - - - Unable to bind to %s on this computer. Bitcoin Core is probably already running. - Impossible de se lier à %s sur cet ordinateur. Bitcoin Core fonctionne probablement déjà. - - - WARNING: abnormally high number of blocks generated, %d blocks received in the last %d hours (%d expected) - AVERTISSEMENT : un nombre anormalement élevé de blocs a été généré, %d blocs reçus durant les %d dernières heures (%d attendus) - - - WARNING: check your network connection, %d blocks received in the last %d hours (%d expected) - AVERTISSEMENT : vérifiez votre connexion réseau, %d blocs reçus durant les %d dernières heures (%d attendus) - - - Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. - Avertissement : -paytxfee est réglé sur un montant très élevé ! Il s'agit des frais de transaction que vous payerez si vous envoyez une transaction. - - - Warning: The network does not appear to fully agree! Some miners appear to be experiencing issues. - Avertissement : le réseau ne semble pas totalement d'accord ! Quelques mineurs semblent éprouver des difficultés. - - - Warning: We do not appear to fully agree with our peers! You may need to upgrade, or other nodes may need to upgrade. - Avertissement : nous ne semblons pas être en accord complet avec nos pairs ! Vous pourriez avoir besoin d'effectuer une mise à niveau, ou d'autres nÅ“uds du réseau pourraient avoir besoin d'effectuer une mise à niveau. - - - Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. - Avertissement : une erreur est survenue lors de la lecture de wallet.dat ! Toutes les clefs ont été lues correctement mais les données de transaction ou les entrées du carnet d'adresses sont peut-être incorrectes ou manquantes. - - - 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. - Avertissement : wallet.dat corrompu, données récupérées ! Le fichier wallet.dat original a été enregistré en tant que wallet.{timestamp}.bak dans %s ; si votre solde ou transactions sont incorrects vous devriez effectuer une restauration depuis une sauvegarde. - - - Whitelist peers connecting from the given netmask or IP address. Can be specified multiple times. - Pairs de la liste blanche se connectant à partir du masque réseau ou de l'IP donné. Peut être spécifié plusieurs fois. - - - (default: 1) - (par défaut : 1) - - - <category> can be: - <category> peut être : - - - Attempt to recover private keys from a corrupt wallet.dat - Tenter de récupérer les clefs privées d'un wallet.dat corrompu - - - Block creation options: - Options de création de bloc : - - - Connect only to the specified node(s) - Ne se connecter qu'au(x) nÅ“ud(s) spécifié(s) - - - Connection options: - Options de connexion : - - - Corrupted block database detected - Base corrompue de données des blocs détectée - - - Debugging/Testing options: - Options de test/de débogage : - - - Do not load the wallet and disable wallet RPC calls - Ne pas charger le portefeuille et désactiver les appels RPC - - - Do you want to rebuild the block database now? - Voulez-vous reconstruire la base de données des blocs maintenant ? - - - Error initializing block database - Erreur lors de l'initialisation de la base de données des blocs - - - Error initializing wallet database environment %s! - Erreur lors de l'initialisation de l'environnement de la base de données du portefeuille %s ! - - - Error loading block database - Erreur du chargement de la base de données des blocs - - - Error opening block database - Erreur lors de l'ouverture de la base de données des blocs - - - Error: Disk space is low! - Erreur : l'espace disque est faible ! - - - Failed to listen on any port. Use -listen=0 if you want this. - Échec de l'écoute sur un port quelconque. Utilisez -listen=0 si vous voulez ceci. - - - If <category> is not supplied, output all debugging information. - Si <category> n'est pas indiqué, extraire toutes les données de débogage. - - - Importing... - Importation... - - - Incorrect or no genesis block found. Wrong datadir for network? - Bloc de genèse incorrect ou introuvable. Mauvais répertoire de données pour le réseau ? - - - Invalid -onion address: '%s' - Adresse -onion invalide : « %s » - - - Not enough file descriptors available. - Pas assez de descripteurs de fichiers proposés. - - - Only connect to nodes in network <net> (ipv4, ipv6 or onion) - Seulement se connecter aux nÅ“uds du réseau <net> (IPv4, IPv6 ou oignon) - - - Prune cannot be configured with a negative value. - L'élagage ne peut pas être configuré avec une valeur négative. - - - Prune mode is incompatible with -txindex. - Le mode élagage n'est pas compatible avec -txindex. - - - Set database cache size in megabytes (%d to %d, default: %d) - Définir la taille du cache de la base de données en mégaoctets (%d to %d, default: %d) - - - Set maximum block size in bytes (default: %d) - Définir la taille minimale de bloc en octets (par défaut : %d) - - - Specify wallet file (within data directory) - Spécifiez le fichier de portefeuille (dans le répertoire de données) - - - Use UPnP to map the listening port (default: %u) - Utiliser l'UPnP pour mapper le port d'écoute (par défaut : %u) - - - Verifying blocks... - Vérification des blocs en cours... - - - Verifying wallet... - Vérification du portefeuille en cours... - - - Wallet %s resides outside data directory %s - Le portefeuille %s réside en dehors du répertoire de données %s - - - Wallet options: - Options du portefeuille : - - - Warning: This version is obsolete; upgrade required! - Avertissement : cette version est obsolète. Une mise à niveau est exigée ! - - - You need to rebuild the database using -reindex to change -txindex - Vous devez reconstruire la base de données en utilisant -reindex afin de modifier -txindex - - - Imports blocks from external blk000??.dat file - Importe des blocs depuis un fichier blk000??.dat externe - - - 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 - Permettre les connexions JSON-RPC de sources spécifiques. Valide pour <ip> qui sont une IP simple (p. ex. 1.2.3.4), un réseau/masque réseau (p. ex. 1.2.3.4/255.255.255.0) ou un réseau/CIDR (p. ex. 1.2.3.4/24). Cette option peut être être spécifiée plusieurs fois - - - An error occurred while setting up the RPC address %s port %u for listening: %s - Une erreur est survenue lors de la mise en place de l'adresse %s port %u d'écoute RPC : %s - - - Bind to given address and whitelist peers connecting to it. Use [host]:port notation for IPv6 - Se lier à l'adresse donnée et aux pairs s'y connectant. Utiliser la notation [host]:port pour l'IPv6 - - - Bind to given address to listen for JSON-RPC connections. Use [host]:port notation for IPv6. This option can be specified multiple times (default: bind to all interfaces) - Se lier à l'adresse donnée pour écouter des connexions JSON-RPC. Utiliser la notation [host]:port pour l'IPv6. Cette option peut être spécifiée plusieurs fois (par défaut : se lier à toutes les interfaces) - - - Cannot obtain a lock on data directory %s. Bitcoin Core is probably already running. - Impossible d’obtenir un verrou sur le répertoire de données %s. Bitcoin Core fonctionne probablement déjà. - - - Create new files with system default permissions, instead of umask 077 (only effective with disabled wallet functionality) - Créer de nouveaux fichiers avec les permissions système par défaut, au lieu de umask 077 (effectif seulement avec la fonction du portefeuille désactivée) - - - Discover own IP addresses (default: 1 when listening and no -externalip or -proxy) - Découvrir ses propres adresses (par défaut : 1 en écoute et sans externalip ou -proxy) - - - Error: Listening for incoming connections failed (listen returned error %s) - Erreur : l'écoute des connexions entrantes a échoué (l'écoute a retourné l'erreur %s) - - - Error: Unsupported argument -socks found. Setting SOCKS version isn't possible anymore, only SOCKS5 proxies are supported. - Erreur : l'argument non pris en charge -socks a été trouvé. Il n'est plus possible de définir la version de SOCKS, seuls les serveurs mandataires SOCKS5 sont pris en charge. - - - Execute command when a relevant alert is received or we see a really long fork (%s in cmd is replaced by message) - Exécuter une commande lorsqu'une alerte pertinente est reçue ou si nous voyons une bifurcation vraiment étendue (%s dans la commande est remplacé par le message) - - - Fees (in BTC/Kb) smaller than this are considered zero fee for relaying (default: %s) - Les frais (en BTC/Ko) inférieurs à ce seuil sont considérés comme étant nuls pour le relayage (par défaut : %s) - - - If paytxfee is not set, include enough fee so transactions begin confirmation on average within n blocks (default: %u) - Si paytxfee n'est pas défini, inclure suffisamment de frais afin que les transactions commencent la confirmation en moyenne avant n blocs (par défaut : %u) - - - Invalid amount for -maxtxfee=<amount>: '%s' (must be at least the minrelay fee of %s to prevent stuck transactions) - Montant invalide pour -maxtxfee=<amount> : « %s » (doit être au moins les frais minrelay de %s pour prévenir le blocage des transactions) - - - Maximum size of data in data carrier transactions we relay and mine (default: %u) - Quantité maximale de données dans les transactions du porteur de données que nous relayons et minons (par défaut : %u) - - - Prune configured below the minimum of %d MB. Please use a higher number. - L'élagage est configuré au-dessous du minimum de %d Mo. Veuillez utiliser un nombre plus élevé. - - - Query for peer addresses via DNS lookup, if low on addresses (default: 1 unless -connect) - Demander les adresses des pairs par recherche DNS si l'on manque d'adresses (par défaut : 1 sauf si -connect) - - - Randomize credentials for every proxy connection. This enables Tor stream isolation (default: %u) - Aléer les authentifiants pour chaque connexion mandataire. Ceci active l'isolement de flux de Tor (par défaut : %u) - - - Set maximum size of high-priority/low-fee transactions in bytes (default: %d) - Définir la taille maximale en octets des transactions prioritaires/à frais modiques (par défaut : %d) - - - Set the number of threads for coin generation if enabled (-1 = all cores, default: %d) - Définir le nombre de fils de génération de pièces, si elle est activée (-1 = tous les cÅ“urs, par défaut : %d) - - - The transaction amount is too small to send after the fee has been deducted - Le montant de la transaction est trop bas pour être envoyé une fois que les frais ont été déduits - - - 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. - Ce produit comprend des logiciels développés par le projet OpenSSL pour être utilisés dans la boîte à outils OpenSSL <https://www.openssl.org/> et un logiciel cryptographique écrit par Eric Young, ainsi qu'un logiciel UPnP écrit par Thomas Bernard. - - - 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 - - Pour utiliser bitcoind, ou l'option -server de bitcoin-qt, vous devez définir un mot de passe rpc dans le fichier de configuration : -%s -Il est recommandé d'utiliser le mot de passe aléatoire suivant : -rpcuser=bitcoinrpc -rpcpassword=%s -(vous n'avez pas à mémoriser ce mot de passe) -Le nom d'utilisateur et le mot de passe NE DOIVENT PAS être identiques. -Si le fichier n'existe pas, créez-le avec la permission lecture-seule-par-le-propriétaire. -Il est aussi recommandé de définir alertnotify afin que les problèmes vous soient signalés ; -par exemple : alertnotify=echo %%s | mail -s "Alerte Bitcoin" admin@foo.com - - - - Warning: -maxtxfee is set very high! Fees this large could be paid on a single transaction. - Avertissement :-maxtxfee est défini très haut ! Des frais aussi élevés pourraient être payés sur une seule transaction. - - - Warning: Please check that your computer's date and time are correct! If your clock is wrong Bitcoin Core will not work properly. - Avertissement : veuillez vérifier que l'heure et la date de votre ordinateur sont correctes ! Si votre horloge n'est pas à l'heure, Bitcoin Core ne fonctionnera pas correctement. - - - 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 - Les pairs de la liste blanche ne peuvent pas être bannis DoS et leurs transactions sont toujours relayées, même si elles sont déjà dans le mempool, utile p. ex. pour une passerelle - - - You need to rebuild the database using -reindex to go back to unpruned mode. This will redownload the entire blockchain - Vous devez reconstruire la base de données en utilisant -reindex afin de revenir au mode sans élagage. Ceci retéléchargera complètement la chaîne de blocs. - - - (default: %u) - (par défaut : %u) - - - Accept public REST requests (default: %u) - Accepter les demandes REST publiques (par défaut : %u) - - - Activating best chain... - Activation de la meilleure chaîne... - - - Can't run with a wallet in prune mode. - L'exécution est impossible quand le portefeuille est en mode élagage. - - - Cannot resolve -whitebind address: '%s' - Impossible de résoudre l'adresse -whitebind : « %s » - - - Choose data directory on startup (default: 0) - Choisir un répertoire de données au démarrage (par défaut : 0) - - - Connect through SOCKS5 proxy - Se connecter par un mandataire SOCKS5 - - - Copyright (C) 2009-%i The Bitcoin Core Developers - Copyright © 2009-%i Les développeurs de Bitcoin Core - - - Could not parse -rpcbind value %s as network address - Impossible d'analyser la valeur -rpcbind %s comme adresse réseau - - - Error loading wallet.dat: Wallet requires newer version of Bitcoin Core - Erreur lors du chargement de wallet.dat : le portefeuille exige une version plus récente de Bitcoin Core - - - Error reading from database, shutting down. - Erreur de lecture de la base de données, fermeture en cours. - - - Error: Unsupported argument -tor found, use -onion. - Erreur : argument non pris en charge -tor trouvé, utiliser -onion. - - - Fee (in BTC/kB) to add to transactions you send (default: %s) - Les frais (en BTC/ko) à ajouter aux transactions que vous envoyez (par défaut : %s) - - - Information - Informations - - - Initialization sanity check failed. Bitcoin Core is shutting down. - L'initialisation du test de cohérence a échoué. Bitcoin est en cours de fermeture. - - - Invalid amount for -maxtxfee=<amount>: '%s' - Montant invalide pour -maxtxfee=<amount> : « %s » - - - Invalid amount for -minrelaytxfee=<amount>: '%s' - Montant invalide pour -minrelayfee=<montant> : « %s » - - - Invalid amount for -mintxfee=<amount>: '%s' - Montant invalide pour -mintxfee=<montant> : « %s » - - - Invalid amount for -paytxfee=<amount>: '%s' (must be at least %s) - Montant invalide pour -paytxfee=<montant> : « %s » (doit être au moins %s) - - - Invalid netmask specified in -whitelist: '%s' - Masque réseau invalide spécifié dans -whitelist : « %s » - - - Keep at most <n> unconnectable transactions in memory (default: %u) - Garder au plus <n> transactions non connectables en mémoire (par défaut : %u) - - - Need to specify a port with -whitebind: '%s' - Un port doit être spécifié avec -whitebind : « %s » - - - Node relay options: - Options de relais du nÅ“ud : - - - RPC SSL options: (see the Bitcoin Wiki for SSL setup instructions) - Options RPC SSL : (voir le wiki Bitcoin pour les instructions de configuration de SSL) - - - RPC server options: - Options du serveur RPC : - - - RPC support for HTTP persistent connections (default: %d) - Prise en charge de RPC pour les connexions persistantes HTTP (par défaut : %d) - - - Rebuild block chain index from current blk000??.dat files on startup - Reconstruire au démarrage l'index de la chaîne de blocs à partir des fichiers blk000??.dat actuels - - - Receive and display P2P network alerts (default: %u) - Recevoir et afficher les alertes du réseau poste à poste (%u par défaut) - - - Send trace/debug info to console instead of debug.log file - Envoyer les informations de débogage/trace à la console au lieu du fichier debug.log - - - Send transactions as zero-fee transactions if possible (default: %u) - Envoyer si possible les transactions comme étant sans frais (par défaut : %u) - - - Set SSL root certificates for payment request (default: -system-) - Définir les certificats racine SSL pour les demandes de paiement (par défaut : -système-) - - - Set language, for example "de_DE" (default: system locale) - Définir la langue, par exemple « fr_CA » (par défaut : la langue du système) - - - Show all debugging options (usage: --help -help-debug) - Montrer toutes les options de débogage (utilisation : --help --help-debug) - - - Show splash screen on startup (default: 1) - Afficher la page de garde au démarrage (par défaut : 1) - - - Shrink debug.log file on client startup (default: 1 when no -debug) - Réduire le fichier debug.log lors du démarrage du client (par défaut : 1 lorsque -debug n'est pas présent) - - - Signing transaction failed - La signature de la transaction a échoué - - - Start minimized - Démarrer minimisé - - - The transaction amount is too small to pay the fee - Le montant de la transaction est trop bas pour que les frais soient payés - - - This is experimental software. - Ceci est un logiciel expérimental. - - - Transaction amount too small - Montant de la transaction trop bas - - - Transaction amounts must be positive - Les montants de transaction doivent être positifs - - - Transaction too large for fee policy - La transaction est trop grosse pour la politique de frais - - - Transaction too large - Transaction trop volumineuse - - - UI Options: - Options de l'IU : - - - Unable to bind to %s on this computer (bind returned error %s) - Impossible de se lier à %s sur cet ordinateur (bind a retourné l'erreur %s) - - - Use UPnP to map the listening port (default: 1 when listening) - Utiliser l'UPnP pour mapper le port d'écoute (par défaut : 1 lors de l'écoute) - - - Username for JSON-RPC connections - Nom d'utilisateur pour les connexions JSON-RPC - - - Wallet needed to be rewritten: restart Bitcoin Core to complete - Le portefeuille avait besoin d'être réécrit : veuillez redémarrer Bitcoin Core pour terminer - - - Warning - Avertissement - - - Warning: Unsupported argument -benchmark ignored, use -debug=bench. - Avertissement : l'argument -benchmark non pris en charge a été ignoré, utiliser -debug=bench. - - - Warning: Unsupported argument -debugnet ignored, use -debug=net. - Avertissement : l'argument -debugnet non pris en charge a été ignoré, utiliser -debug=net. - - - Zapping all transactions from wallet... - Supprimer toutes les transactions du portefeuille... - - - on startup - au démarrage - - - wallet.dat corrupt, salvage failed - wallet.dat corrompu, la récupération a échoué - - - Password for JSON-RPC connections - Mot de passe pour les connexions JSON-RPC - - - Execute command when the best block changes (%s in cmd is replaced by block hash) - Exécuter la commande lorsque le meilleur bloc change (%s dans cmd est remplacé par le hachage du bloc) - - - Upgrade wallet to latest format - Mettre à niveau le portefeuille vers le format le plus récent - - - Rescan the block chain for missing wallet transactions - Réanalyser la chaîne de blocs pour les transactions de portefeuille manquantes - - - Use OpenSSL (https) for JSON-RPC connections - Utiliser OpenSSL (https) pour les connexions JSON-RPC - - - This help message - Ce message d'aide - - - Allow DNS lookups for -addnode, -seednode and -connect - Autoriser les recherches DNS pour -addnode, -seednode et -connect - - - Loading addresses... - Chargement des adresses… - - - Error loading wallet.dat: Wallet corrupted - Erreur lors du chargement de wallet.dat : portefeuille corrompu - - - (1 = keep tx meta data e.g. account owner and payment request information, 2 = drop tx meta data) - (1 = conserver les métadonnées de transmission, par ex. les informations du propriétaire du compte et de la demande de paiement, 2 = abandonner les métadonnées de transmission) - - - How thorough the block verification of -checkblocks is (0-4, default: %u) - Degré de profondeur de la vérification des blocs -checkblocks (0-4, par défaut : %u) - - - Maintain a full transaction index, used by the getrawtransaction rpc call (default: %u) - Maintenir un index complet des transactions, utilisé par l'appel RPC getrawtransaction (obtenir la transaction brute) (par défaut : %u) - - - Number of seconds to keep misbehaving peers from reconnecting (default: %u) - Délai en secondes de refus de reconnexion pour les pairs présentant un mauvais comportement (par défaut : %u) - - - Output debugging information (default: %u, supplying <category> is optional) - Extraire les informations de débogage (par défaut : %u, fournir <category> est optionnel) - - - Use separate SOCKS5 proxy to reach peers via Tor hidden services (default: %s) - Utiliser un serveur mandataire SOCKS5 séparé pour atteindre les pairs par les services cachés de Tor (par défaut : %s) - - - (default: %s) - (par défaut : %s) - - - Acceptable ciphers (default: %s) - Chiffrements acceptables (par défaut : %s) - - - Always query for peer addresses via DNS lookup (default: %u) - Toujours demander les adresses des pairs par recherche DNS (par défaut : %u) - - - Error loading wallet.dat - Erreur lors du chargement de wallet.dat - - - Generate coins (default: %u) - Générer des pièces (défaut : %u) - - - How many blocks to check at startup (default: %u, 0 = all) - Nombre de blocs à vérifier au démarrage (par défaut : %u, 0 = tous) - - - Include IP addresses in debug output (default: %u) - Inclure les adresses IP à la sortie de débogage (par défaut : %u) - - - Invalid -proxy address: '%s' - Adresse -proxy invalide : « %s » - - - Listen for JSON-RPC connections on <port> (default: %u or testnet: %u) - Écouter les connexions JSON-RPC sur <port> (par défaut : %u ou tesnet : %u) - - - Listen for connections on <port> (default: %u or testnet: %u) - Écouter les connexions sur <port> (par défaut : %u ou tesnet : %u) - - - Maintain at most <n> connections to peers (default: %u) - Garder au plus <n> connexions avec les pairs (par défaut : %u) - - - Make the wallet broadcast transactions - Obliger le portefeuille à diffuser les transactions - - - Maximum per-connection receive buffer, <n>*1000 bytes (default: %u) - Tampon maximal de réception par connexion, <n>*1000 octets (par défaut : %u) - - - Maximum per-connection send buffer, <n>*1000 bytes (default: %u) - Tampon maximal d'envoi par connexion », <n>*1000 octets (par défaut : %u) - - - Prepend debug output with timestamp (default: %u) - Ajouter l'horodatage au début de la sortie de débogage (par défaut : %u) - - - Relay and mine data carrier transactions (default: %u) - Relayer et miner les transactions du porteur de données (par défaut : %u) - - - Relay non-P2SH multisig (default: %u) - Relayer les multisignatures non-P2SH (par défaut : %u) - - - Set key pool size to <n> (default: %u) - Définir la taille de la réserve de clefs à <n> (par défaut : %u) - - - Set minimum block size in bytes (default: %u) - Définir la taille de bloc minimale en octets (par défaut : %u) - - - Specify configuration file (default: %s) - Spécifier le fichier de configuration (par défaut : %s) - - - Specify connection timeout in milliseconds (minimum: 1, default: %d) - Spécifier le délai d'expiration de la connexion en millisecondes (minimum : 1, par défaut : %d) - - - Specify pid file (default: %s) - Spécifier le fichier pid (par défaut : %s) - - - Spend unconfirmed change when sending transactions (default: %u) - Dépenser la monnaie non confirmée lors de l'envoi de transactions (par défaut : %u) - - - Threshold for disconnecting misbehaving peers (default: %u) - Seuil de déconnexion des pairs présentant un mauvais comportement (par défaut : %u) - - - Unknown network specified in -onlynet: '%s' - Réseau inconnu spécifié sur -onlynet : « %s » - - - Cannot resolve -bind address: '%s' - Impossible de résoudre l'adresse -bind : « %s » - - - Cannot resolve -externalip address: '%s' - Impossible de résoudre l'adresse -externalip : « %s » - - - Invalid amount for -paytxfee=<amount>: '%s' - Montant invalide pour -paytxfee=<montant> : « %s » - - - Insufficient funds - Fonds insuffisants - - - Loading block index... - Chargement de l’index des blocs… - - - Add a node to connect to and attempt to keep the connection open - Ajouter un nÅ“ud auquel se connecter et tenter de garder la connexion ouverte - - - Loading wallet... - Chargement du portefeuille… - - - Cannot downgrade wallet - Impossible de revenir à une version inférieure du portefeuille - - - Cannot write default address - Impossible d'écrire l'adresse par défaut - - - Rescanning... - Nouvelle analyse… - - - Done loading - Chargement terminé - - - Error - Erreur - - - \ No newline at end of file diff --git a/src/qt/locale/bitcoin_fr_CA.ts b/src/qt/locale/bitcoin_fr_CA.ts deleted file mode 100644 index f4fe7d659..000000000 --- a/src/qt/locale/bitcoin_fr_CA.ts +++ /dev/null @@ -1,206 +0,0 @@ - - - AddressBookPage - - Create a new address - Créer une nouvelle adresse - - - Copy the currently selected address to the system clipboard - Copier l'adresse surligné a votre presse-papier - - - &Delete - &Supprimer - - - Comma separated file (*.csv) - Fichier séparé par une virgule (*.csv) - - - - AddressTableModel - - Label - Record - - - Address - Addresse - - - (no label) - (pas de record) - - - - AskPassphraseDialog - - Enter passphrase - Entrer Mot de Passe - - - New passphrase - Nouveau Mot de passe - - - Repeat new passphrase - Répéter Mot de Passe - - - Encrypt wallet - Encrypter Porte-Feuille - - - This operation needs your wallet passphrase to unlock the wallet. - Cette opération nécessite le mot de passe de votre porte-feuille pour débarrer le porte-feuille. - - - Unlock wallet - Débarrer Porte-Feuille - - - This operation needs your wallet passphrase to decrypt the wallet. - Cette opération nécessite le mot de passe de votre porte-feuille pour le décrypter. - - - - BitcoinGUI - - - ClientModel - - - CoinControlDialog - - (no label) - (pas de record) - - - - EditAddressDialog - - - FreespaceChecker - - - HelpMessageDialog - - - Intro - - - OpenURIDialog - - - OptionsDialog - - - OverviewPage - - - PaymentServer - - - PeerTableModel - - - QObject - - - QRImageWidget - - - RPCConsole - - - ReceiveCoinsDialog - - - ReceiveRequestDialog - - Address - Addresse - - - Label - Record - - - - RecentRequestsTableModel - - Label - Record - - - (no label) - (pas de record) - - - - SendCoinsDialog - - (no label) - (pas de record) - - - - SendCoinsEntry - - - ShutdownWindow - - - SignVerifyMessageDialog - - - SplashScreen - - - TrafficGraphWidget - - - TransactionDesc - - - TransactionDescDialog - - - TransactionTableModel - - Label - Record - - - - TransactionView - - Comma separated file (*.csv) - Fichier séparé par une virgule (*.csv) - - - Label - Record - - - Address - Addresse - - - - UnitDisplayStatusBarControl - - - WalletFrame - - - WalletModel - - - WalletView - - - bitcoin-core - - \ No newline at end of file diff --git a/src/qt/locale/bitcoin_gl.ts b/src/qt/locale/bitcoin_gl.ts deleted file mode 100644 index 709b17e2f..000000000 --- a/src/qt/locale/bitcoin_gl.ts +++ /dev/null @@ -1,2226 +0,0 @@ - - - AddressBookPage - - Create a new address - Crear unha nova dirección - - - &New - &Novo - - - Copy the currently selected address to the system clipboard - Copiar a dirección seleccionada ao cartafol - - - &Copy - &Copiar - - - C&lose - &Pechar - - - &Copy Address - &Copiar Dirección - - - Delete the currently selected address from the list - Borrar a dirección actualmente seleccionada da listaxe - - - Export the data in the current tab to a file - Exportar os datos da pestaña actual a un arquivo. - - - &Export - &Exportar - - - &Delete - &Borrar - - - Choose the address to send coins to - Escolle a dirección á que enviar moedas - - - Choose the address to receive coins with - Escolle a dirección da que recibir moedas - - - C&hoose - &Escoller - - - Sending addresses - Direccións para enviar - - - Receiving addresses - Direccións para recibir - - - These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins. - Estas son as túas direccións Bitcoin para enviar pagos. Revisa sempre a cantidade e a dirección receptora antes de enviar moedas. - - - These are your Bitcoin addresses for receiving payments. It is recommended to use a new receiving address for each transaction. - Estas son as túas direccións Bitcoin para recibir pagos. Recoméndase empregar unha nova dirección de recepción por cada transacción. - - - Copy &Label - Copiar &Etiqueta - - - &Edit - &Modificar - - - Export Address List - Exportar Lista de Direccións - - - Comma separated file (*.csv) - Arquivo separado por comas (*.csv) - - - Exporting Failed - Exportación falida - - - - AddressTableModel - - Label - Etiqueta - - - Address - Dirección - - - (no label) - (sen etiqueta) - - - - AskPassphraseDialog - - Passphrase Dialog - Diálogo de Contrasinal - - - Enter passphrase - Introduce contrasinal - - - New passphrase - Novo contrasinal - - - Repeat new passphrase - Repite novo contrasinal - - - Encrypt wallet - Encriptar moedeiro - - - This operation needs your wallet passphrase to unlock the wallet. - Esta operación precisa o contrasinal do teu moedeiro para desbloquear o moedeiro. - - - Unlock wallet - Desbloquear moedeiro - - - This operation needs your wallet passphrase to decrypt the wallet. - Esta operación precisa o contrasinal do teu moedeiro para desencriptar o moedeiro. - - - Decrypt wallet - Desencriptar moedeiro - - - Change passphrase - Cambiar contrasinal - - - Confirm wallet encryption - Confirmar encriptación de moedeiro - - - Warning: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR BITCOINS</b>! - Precaución: Se encriptas o teu moedeiro e perdes o teu contrasinal, ti <b>PERDERÃS TÓDOLOS TEUS BITCOINS</b>! - - - Are you sure you wish to encrypt your wallet? - Estás seguro de que desexas encriptar o teu moedeiro? - - - 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. - IMPORTANTE: Calquera copia de seguridade previa que fixeses do teu arquivo de moedeiro debería ser substituída polo recén xerado arquivo encriptado de moedeiro. Por razóns de seguridade, as copias de seguridade previas de un arquivo de moedeiro desencriptado tornaránse inútiles no momento no que comeces a emprega-lo novo, encriptado, moedeiro. - - - Warning: The Caps Lock key is on! - Precaución: A tecla de Bloqueo de Maiúsculas está activada! - - - Wallet encrypted - Moedeiro encriptado - - - Wallet encryption failed - Encriptación de moedeiro fallida - - - Wallet encryption failed due to an internal error. Your wallet was not encrypted. - A encriptación do moedeiro fallou por mor dun erro interno. O teu moedeiro non foi encriptado. - - - The supplied passphrases do not match. - Os contrasinais suministrados non coinciden. - - - Wallet unlock failed - Desbloqueo de moedeiro fallido - - - The passphrase entered for the wallet decryption was incorrect. - O contrasinal introducido para a desencriptación do moedeiro foi incorrecto. - - - Wallet decryption failed - Desencriptación de moedeiro fallida - - - Wallet passphrase was successfully changed. - Cambiouse con éxito o contrasinal do moedeiro. - - - - BitcoinGUI - - Sign &message... - &Asinar mensaxe... - - - Synchronizing with network... - Sincronizando coa rede... - - - &Overview - &Vista xeral - - - Show general overview of wallet - Amosar vista xeral do moedeiro - - - &Transactions - &Transacciones - - - Browse transaction history - Navegar historial de transaccións - - - E&xit - &Saír - - - Quit application - Saír da aplicación - - - About &Qt - Acerca de &Qt - - - Show information about Qt - Amosar información acerca de Qt - - - &Options... - &Opcións... - - - &Encrypt Wallet... - &Encriptar Moedeiro... - - - &Backup Wallet... - Copia de &Seguridade do Moedeiro... - - - &Change Passphrase... - &Cambiar contrasinal... - - - Importing blocks from disk... - Importando bloques de disco... - - - Reindexing blocks on disk... - Reindexando bloques no disco... - - - Send coins to a Bitcoin address - Enviar moedas a unha dirección Bitcoin - - - Backup wallet to another location - Facer copia de seguridade do moedeiro noutra localización - - - Change the passphrase used for wallet encryption - Cambiar o contrasinal empregado para a encriptación do moedeiro - - - &Debug window - Ventana de &Depuración - - - Open debugging and diagnostic console - Abrir consola de depuración e diagnóstico - - - &Verify message... - &Verificar mensaxe... - - - Bitcoin - Bitcoin - - - Wallet - Moedeiro - - - &Send - &Enviar - - - &Receive - &Recibir - - - &Show / Hide - &Amosar/Agachar - - - Show or hide the main Window - Amosar ou agachar a ventana principal - - - Encrypt the private keys that belong to your wallet - Encriptar as claves privadas que pertencen ao teu moedeiro - - - Sign messages with your Bitcoin addresses to prove you own them - Asina mensaxes coas túas direccións Bitcoin para probar que te pertencen - - - Verify messages to ensure they were signed with specified Bitcoin addresses - Verificar mensaxes para asegurar que foron asinados con direccións Bitcoin dadas. - - - &File - &Arquivo - - - &Settings - Axus&tes - - - &Help - A&xuda - - - Tabs toolbar - Barra de ferramentas - - - Bitcoin Core - Core de Bitcoin - - - Request payments (generates QR codes and bitcoin: URIs) - Solicitar pagos (xenera códigos QR e bitcoin: URIs) - - - &About Bitcoin Core - &Sobre Bitcoin Core - - - Show the list of used sending addresses and labels - Amosar a listaxe de direccións e etiquetas para enviar empregadas - - - Show the list of used receiving addresses and labels - Amosar a listaxe de etiquetas e direccións para recibir empregadas - - - Open a bitcoin: URI or payment request - Abrir un bitcoin: URI ou solicitude de pago - - - No block source available... - Non hai orixe de bloques dispoñible... - - - %1 behind - %1 detrás - - - Last received block was generated %1 ago. - O último bloque recibido foi xerado fai %1. - - - Transactions after this will not yet be visible. - As transaccións despois desta non serán todavía visibles. - - - Error - Erro - - - Warning - Precaución - - - Information - Información - - - Up to date - Actualizado - - - Catching up... - Poñendo ao día... - - - Sent transaction - Transacción enviada - - - Incoming transaction - Transacción entrante - - - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - O moedeiro está <b>encriptado</b> e actualmente <b>desbloqueado</b> - - - Wallet is <b>encrypted</b> and currently <b>locked</b> - O moedeiro está <b>encriptado</b> e actualmente <b>bloqueado</b> - - - - ClientModel - - Network Alert - Alerta de Rede - - - - CoinControlDialog - - Quantity: - Cantidade: - - - Bytes: - Bytes: - - - Amount: - Importe: - - - Priority: - Prioridade: - - - Fee: - Pago: - - - Change: - Cambiar: - - - (un)select all - (des)selecciona todo - - - Tree mode - Modo árbore - - - List mode - Modo lista - - - Amount - Cantidade - - - Date - Data - - - Confirmations - Confirmacións - - - Confirmed - Confirmado - - - Priority - Prioridade - - - Copy address - Copiar dirección - - - Copy label - Copiar etiqueta - - - Copy amount - Copiar cantidade - - - Copy transaction ID - Copiar ID de transacción - - - Lock unspent - Bloquear o aforrado - - - Unlock unspent - Desbloquear o aforrado - - - Copy quantity - Copiar cantidade - - - Copy fee - Copiar pago - - - Copy after fee - Copiar despóis do pago - - - Copy bytes - Copiar bytes - - - Copy priority - Copiar prioridade - - - Copy change - Copiar cambio - - - highest - O máis alto - - - higher - Máis alto que - - - high - alto - - - medium-high - medio-alto - - - low-medium - medio-baixo - - - low - baixo - - - lower - máis baixo que - - - lowest - o máis baixo - - - (%1 locked) - (%1 bloqueado) - - - yes - Si - - - no - non - - - Transactions with higher priority are more likely to get included into a block. - As transacción con maior prioridade teñen máis posibilidades de ser incluidas nun bloque - - - (no label) - (sen etiqueta) - - - (change) - (cambio) - - - - EditAddressDialog - - Edit Address - Modificar Dirección - - - &Label - &Etiqueta - - - The label associated with this address list entry - A etiqueta asociada con esta entrada da listaxe de direccións - - - The address associated with this address list entry. This can only be modified for sending addresses. - A dirección asociada con esta entrada na listaxe de dirección. Esta so pode ser modificada por direccións para enviar. - - - &Address - &Dirección - - - New receiving address - Nova dirección para recibir - - - New sending address - Nova dirección para enviar - - - Edit receiving address - Modificar dirección para recibir - - - Edit sending address - Modificar dirección para enviar - - - The entered address "%1" is already in the address book. - A dirección introducida "%1" xa está no libro de direccións. - - - The entered address "%1" is not a valid Bitcoin address. - A dirección introducida '%1' non é unha dirección Bitcoin válida. - - - Could not unlock wallet. - Non se puido desbloquear o moedeiro. - - - New key generation failed. - A xeración de nova clave fallou. - - - - FreespaceChecker - - A new data directory will be created. - Crearáse un novo directorio de datos. - - - name - nome - - - Directory already exists. Add %1 if you intend to create a new directory here. - O directorio xa existe. Engade %1 se queres crear un novo directorio aquí. - - - Path already exists, and is not a directory. - A ruta xa existe e non é un directorio. - - - Cannot create data directory here. - Non se pode crear directorio de datos aquí - - - - HelpMessageDialog - - Bitcoin Core - Core de Bitcoin - - - version - versión - - - About Bitcoin Core - Sobre Bitcoin core - - - Command-line options - Opcións da liña de comandos - - - Usage: - Emprego: - - - command-line options - opcións da liña de comandos - - - - Intro - - Welcome - Benvido - - - Use the default data directory - Empregar o directorio de datos por defecto - - - Use a custom data directory: - Empregar un directorio de datos personalizado - - - Bitcoin Core - Core de Bitcoin - - - Error - Erro - - - - OpenURIDialog - - Open URI - Abrir URI - - - Open payment request from URI or file - Abrir solicitude de pago dende URI ou ficheiro - - - URI: - URI: - - - Select payment request file - Seleccionar ficheiro de solicitude de pago - - - Select payment request file to open - Seleccione ficheiro de solicitude de pago para abrir - - - - OptionsDialog - - Options - Opcións - - - &Main - &Principal - - - Reset all client options to default. - Restaurar todas as opcións de cliente ás por defecto - - - &Reset Options - Opcións de &Restaurar - - - &Network - &Rede - - - Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled. - Abrir automáticamente o porto do cliente Bitcoin no router. Esto so funciona se o teu router soporta UPnP e está habilitado. - - - Map port using &UPnP - Mapear porto empregando &UPnP - - - Proxy &IP: - &IP do Proxy: - - - &Port: - &Porto: - - - Port of the proxy (e.g. 9050) - Porto do proxy (exemplo: 9050) - - - &Window - &Xanela - - - Show only a tray icon after minimizing the window. - Amosar so un icono na bandexa tras minimiza-la xanela. - - - &Minimize to the tray instead of the taskbar - &Minimizar á bandexa en lugar de á barra de tarefas. - - - M&inimize on close - M&inimizar ao pechar - - - &Display - &Visualización - - - User Interface &language: - &Linguaxe de interface de usuario: - - - &Unit to show amounts in: - &Unidade na que amosar as cantidades: - - - Choose the default subdivision unit to show in the interface and when sending coins. - Escolle a unidade de subdivisión por defecto para amosar na interface e ao enviar moedas. - - - &OK - &OK - - - &Cancel - &Cancelar - - - default - por defecto - - - Confirm options reset - Confirmar opcións de restaurar - - - The supplied proxy address is invalid. - A dirección de proxy suministrada é inválida. - - - - OverviewPage - - Form - Formulario - - - The displayed information may be out of date. Your wallet automatically synchronizes with the Bitcoin network after a connection is established, but this process has not completed yet. - A información amosada por estar desactualizada. O teu moedeiro sincronízase automáticamente coa rede Bitcoin despois de que se estableza unha conexión, pero este proceso non está todavía rematado. - - - Your current spendable balance - O teu balance actualmente dispoñible - - - Total of transactions that have yet to be confirmed, and do not yet count toward the spendable balance - Total de transaccións que aínda teñen que ser confirmadas, e non contan todavía dentro do balance gastable - - - Immature: - Inmaduro: - - - Mined balance that has not yet matured - O balance minado todavía non madurou - - - Total: - Total: - - - Your current total balance - O teu balance actual total - - - - PaymentServer - - URI handling - Manexo de URI - - - Invalid payment address %1 - Dirección de pago %1 inválida - - - Requested payment amount of %1 is too small (considered dust). - A cantidade de %1 na solicitude de pado é moi pequena (considerada po). - - - Payment request error - Erro na petición de pago - - - Refund from %1 - Devolución dende %1 - - - Error communicating with %1: %2 - Erro comunicando con %1: %2 - - - Bad response from server %1 - Responsa errónea do servidor %1 - - - Payment acknowledged - Pago admitido - - - Network request error - Erro de solicitude de rede - - - - PeerTableModel - - - QObject - - Amount - Cantidade - - - %1 h - %1 h - - - %1 m - %1 m - - - N/A - N/A - - - - QRImageWidget - - &Save Image... - &Gardar Imaxe... - - - &Copy Image - &Copiar Imaxe - - - Save QR Code - Gardar Código QR - - - - RPCConsole - - Client name - Nome do cliente - - - N/A - N/A - - - Client version - Versión do cliente - - - &Information - &Información - - - Using OpenSSL version - Usar versión OpenSSL - - - Startup time - Tempo de arranque - - - Network - Rede - - - Number of connections - Número de conexións - - - Block chain - Cadea de bloques - - - Current number of blocks - Número actual de bloques - - - Last block time - Hora do último bloque - - - &Open - &Abrir - - - &Console - &Consola - - - &Network Traffic - &Tráfico de Rede - - - &Clear - &Limpar - - - Totals - Totais - - - In: - Dentro: - - - Out: - Fóra: - - - Build date - Data de construción - - - Debug log file - Arquivo de log de depuración - - - Clear console - Limpar consola - - - Use up and down arrows to navigate history, and <b>Ctrl-L</b> to clear screen. - Emprega as flechas arriba e abaixo para navegar polo historial, e <b>Ctrl-L</b> para limpar a pantalla. - - - Type <b>help</b> for an overview of available commands. - Escribe <b>axuda</b> para unha vista xeral dos comandos dispoñibles. - - - %1 B - %1 B - - - %1 KB - %1 KB - - - %1 MB - %1 MB - - - %1 GB - %1 GB - - - - ReceiveCoinsDialog - - &Amount: - &Cantidade: - - - &Label: - &Etiqueta: - - - &Message: - &Mensaxe: - - - Reuse one of the previously used receiving addresses. Reusing addresses has security and privacy issues. Do not use this unless re-generating a payment request made before. - Reutilizar unha das direccións para recibir previas. Reutilizar direccións ten problemas de seguridade e privacidade. Non empregues esto agás que antes se fixese unha solicitude de rexeneración dun pago. - - - R&euse an existing receiving address (not recommended) - R&eutilizar unha dirección para recibir existente (non recomendado) - - - Clear all fields of the form. - Limpar tódolos campos do formulario - - - Clear - Limpar - - - &Request payment - &Solicitar pago - - - Copy label - Copiar etiqueta - - - Copy amount - Copiar cantidade - - - - ReceiveRequestDialog - - QR Code - Código QR - - - Copy &URI - Copiar &URI - - - Copy &Address - Copiar &Dirección - - - &Save Image... - &Gardar Imaxe... - - - Request payment to %1 - Solicitar pago a %1 - - - Payment information - Información de Pago - - - URI - URI - - - Address - Dirección - - - Amount - Cantidade - - - Label - Etiqueta - - - Message - Mensaxe - - - Resulting URI too long, try to reduce the text for label / message. - A URI resultante é demasiado larga, tenta reducir o texto para a etiqueta / mensaxe. - - - Error encoding URI into QR Code. - Erro codificando URI nun Código QR. - - - - RecentRequestsTableModel - - Date - Data - - - Label - Etiqueta - - - Message - Mensaxe - - - Amount - Cantidade - - - (no label) - (sen etiqueta) - - - - SendCoinsDialog - - Send Coins - Moedas Enviadas - - - Quantity: - Cantidade: - - - Bytes: - Bytes: - - - Amount: - Importe: - - - Priority: - Prioridade: - - - Fee: - Pago: - - - Change: - Cambiar: - - - Send to multiple recipients at once - Enviar a múltiples receptores á vez - - - Add &Recipient - Engadir &Receptor - - - Clear all fields of the form. - Limpar tódolos campos do formulario - - - Clear &All - Limpar &Todo - - - Balance: - Balance: - - - Confirm the send action - Confirmar a acción de envío - - - S&end - &Enviar - - - Confirm send coins - Confirmar envío de moedas - - - %1 to %2 - %1 a %2 - - - Copy quantity - Copiar cantidade - - - Copy amount - Copiar cantidade - - - Copy fee - Copiar pago - - - Copy after fee - Copiar despóis do pago - - - Copy bytes - Copiar bytes - - - Copy priority - Copiar prioridade - - - Copy change - Copiar cambio - - - The amount to pay must be larger than 0. - A cantidade a pagar debe ser maior que 0. - - - The amount exceeds your balance. - A cantidade sobrepasa o teu balance. - - - The total exceeds your balance when the %1 transaction fee is included. - O total sobrepasa o teu balance cando se inclúe a tarifa de transacción %1. - - - Warning: Invalid Bitcoin address - Atención: Enderezo Bitcoin non válido - - - (no label) - (sen etiqueta) - - - Warning: Unknown change address - Atención: Enderezo de cambio desconocido - - - Are you sure you want to send? - Seguro que queres enviar? - - - added as transaction fee - engadido como tarifa de transacción - - - - SendCoinsEntry - - A&mount: - &Cantidade: - - - Pay &To: - Pagar &A: - - - Enter a label for this address to add it to your address book - Introduce unha etiqueta para esta dirección para engadila ao teu libro de direccións - - - &Label: - &Etiqueta: - - - Choose previously used address - Escoller dirección previamente empregada - - - This is a normal payment. - Este é un pago normal - - - Alt+A - Alt+A - - - Paste address from clipboard - Pegar dirección dende portapapeis - - - Alt+P - Alt+P - - - Remove this entry - Eliminar esta entrada - - - Enter a label for this address to add it to the list of used addresses - Introduce unha etiqueta para esta dirección para engadila á listaxe de direccións empregadas - - - Pay To: - Pagar A: - - - Memo: - Memo: - - - - ShutdownWindow - - - SignVerifyMessageDialog - - Signatures - Sign / Verify a Message - Sinaturas - Asinar / Verificar unha Mensaxe - - - &Sign Message - &Asinar Mensaxe - - - Choose previously used address - Escoller dirección previamente empregada - - - Alt+A - Alt+A - - - Paste address from clipboard - Pegar dirección dende portapapeis - - - Alt+P - Alt+P - - - Enter the message you want to sign here - Introduce a mensaxe que queres asinar aquí - - - Signature - Sinatura - - - Copy the current signature to the system clipboard - Copiar a sinatura actual ao portapapeis do sistema - - - Sign the message to prove you own this Bitcoin address - Asina a mensaxe para probar que posees esta dirección Bitcoin - - - Sign &Message - Asinar &Mensaxe - - - Reset all sign message fields - Restaurar todos os campos de sinatura de mensaxe - - - Clear &All - Limpar &Todo - - - &Verify Message - &Verificar Mensaxe - - - Verify the message to ensure it was signed with the specified Bitcoin address - Verificar a mensaxe para asegurar que foi asinada coa dirección Bitcoin especificada - - - Verify &Message - Verificar &Mensaxe - - - Reset all verify message fields - Restaurar todos os campos de verificación de mensaxe - - - Click "Sign Message" to generate signature - Click en "Asinar Mensaxe" para xerar sinatura - - - The entered address is invalid. - A dirección introducida é inválida. - - - Please check the address and try again. - Por favor comproba a dirección e proba de novo. - - - The entered address does not refer to a key. - A dirección introducida non se refire a ninguna clave. - - - Wallet unlock was cancelled. - Cancelouse o desbloqueo do moedeiro. - - - Private key for the entered address is not available. - A clave privada da dirección introducida non está dispoñible. - - - Message signing failed. - Fallou a sinatura da mensaxe. - - - Message signed. - Mensaxe asinada. - - - The signature could not be decoded. - A sinatura non puido ser decodificada. - - - Please check the signature and try again. - Por favor revise a sinatura e probe de novo. - - - The signature did not match the message digest. - A sinatura non coincide co resumo da mensaxe. - - - Message verification failed. - A verificación da mensaxe fallou. - - - Message verified. - Mensaxe verificada. - - - - SplashScreen - - Bitcoin Core - Core de Bitcoin - - - The Bitcoin Core developers - Os desarrolladores de Bitcoin Core - - - [testnet] - [testnet] - - - - TrafficGraphWidget - - KB/s - KB/s - - - - TransactionDesc - - Open until %1 - Aberto ata %1 - - - %1/offline - %1/fóra de liña - - - %1/unconfirmed - %1/sen confirmar - - - %1 confirmations - %1 confirmacións - - - Status - Estado - - - Date - Data - - - Source - Orixe - - - Generated - Xerado - - - From - Dende - - - To - A - - - own address - dirección propia - - - label - etiqueta - - - Credit - Crédito - - - not accepted - non aceptado - - - Debit - Débito - - - Transaction fee - Tarifa de transacción - - - Net amount - Cantidade neta - - - Message - Mensaxe - - - Comment - Comentario - - - Transaction ID - ID de Transacción - - - Merchant - Comerciante - - - Generated coins must mature %1 blocks before they can be spent. When you generated this block, it was broadcast to the network to be added to the block chain. If it fails to get into the chain, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - As moedas xeradas deben madurar %1 bloques antes de que poidan ser gastadas. Cando xeraste este bloque, foi propagado á rede para ser engadido á cadeas de bloques. Se falla ao tentar meterse na cadea, o seu estado cambiará a "non aceptado" e non poderá ser gastado. Esto pode ocorrir ocasionalmente se outro nodo xera un bloque en poucos segundos de diferencia co teu. - - - Debug information - Información de depuración - - - Transaction - Transacción - - - Inputs - Entradas - - - Amount - Cantidade - - - true - verdadeiro - - - false - falso - - - , has not been successfully broadcast yet - , non foi propagado con éxito todavía - - - unknown - descoñecido - - - - TransactionDescDialog - - Transaction details - Detalles de transacción - - - This pane shows a detailed description of the transaction - Este panel amosa unha descripción detallada da transacción - - - - TransactionTableModel - - Date - Data - - - Type - Tipo - - - Open until %1 - Aberto ata %1 - - - Confirmed (%1 confirmations) - Confirmado (%1 confirmacións) - - - This block was not received by any other nodes and will probably not be accepted! - Este bloque non foi recibido por ningún outro nodo e probablemente non será aceptado! - - - Generated but not accepted - Xerado pero non aceptado - - - Label - Etiqueta - - - Received with - Recibido con - - - Received from - Recibido de - - - Sent to - Enviado a - - - Payment to yourself - Pago a ti mesmo - - - Mined - Minado - - - (n/a) - (n/a) - - - Transaction status. Hover over this field to show number of confirmations. - Estado da transacción. Pasa por riba deste campo para amosar o número de confirmacións. - - - Date and time that the transaction was received. - Data e hora na que foi recibida a transacción. - - - Type of transaction. - Tipo de transacción. - - - Amount removed from or added to balance. - Cantidade borrada ou engadida no balance. - - - - TransactionView - - All - Todo - - - Today - Hoxe - - - This week - Esta semana - - - This month - Este mes - - - Last month - O último mes - - - This year - Este ano - - - Range... - Periodo... - - - Received with - Recibido con - - - Sent to - Enviado a - - - To yourself - A ti mesmo - - - Mined - Minado - - - Other - Outro - - - Enter address or label to search - Introduce dirección ou etiqueta para buscar - - - Min amount - Cantidade mínima - - - Copy address - Copiar dirección - - - Copy label - Copiar etiqueta - - - Copy amount - Copiar cantidade - - - Copy transaction ID - Copiar ID de transacción - - - Edit label - Modificar etiqueta - - - Show transaction details - Amosar detalles da transacción - - - Export Transaction History - Exportar Historial de Transaccións - - - Exporting Failed - Exportación falida - - - There was an error trying to save the transaction history to %1. - Houbo un erro intentando salvar o historial de transaccións a %1. - - - Exporting Successful - Exportado correctamente - - - The transaction history was successfully saved to %1. - O historial de transaccións foi salvado correctamente en %1. - - - Comma separated file (*.csv) - Arquivo separado por comas (*.csv) - - - Confirmed - Confirmado - - - Date - Data - - - Type - Tipo - - - Label - Etiqueta - - - Address - Dirección - - - ID - ID - - - Range: - Periodo: - - - to - a - - - - UnitDisplayStatusBarControl - - - WalletFrame - - No wallet has been loaded. - Ningún moedeiro cargado - - - - WalletModel - - Send Coins - Moedas Enviadas - - - - WalletView - - &Export - &Exportar - - - Export the data in the current tab to a file - Exportar os datos da pestaña actual a un arquivo. - - - Backup Wallet - Copia de Seguridade de Moedeiro - - - Wallet Data (*.dat) - Datos de Moedeiro (*.dat) - - - Backup Failed - Copia de Seguridade Fallida - - - There was an error trying to save the wallet data to %1. - Houbo un erro intentando gardar os datos de moedeiro en %1. - - - The wallet data was successfully saved to %1. - Os datos do moedeiro foron gardados correctamente en %1. - - - Backup Successful - Copia de Seguridade Correcta - - - - bitcoin-core - - Options: - Opcións: - - - Specify data directory - Especificar directorio de datos - - - Connect to a node to retrieve peer addresses, and disconnect - Conectar a nodo para recuperar direccións de pares, e desconectar - - - Specify your own public address - Especificar a túa propia dirección pública - - - Accept command line and JSON-RPC commands - Aceptar liña de comandos e comandos JSON-RPC - - - Run in the background as a daemon and accept commands - Executar no fondo como un demo e aceptar comandos - - - Use the test network - Empregar a rede de proba - - - Accept connections from outside (default: 1 if no -proxy or -connect) - Aceptar conexións de fóra (por defecto: 1 se non -proxy ou -connect) - - - Bind to given address and always listen on it. Use [host]:port notation for IPv6 - Enlazar a unha dirección dada e escoitar sempre nela. Emprega a notación [host]:post para IPv6 - - - Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) - Executar comando cando unha transacción do moedeiro cambia (%s no comando é substituído por TxID) - - - This is a pre-release test build - use at your own risk - do not use for mining or merchant applications - Esta é unha build de test pre-lanzamento - emprégaa baixo o teu propio risco - non empregar para minado ou aplicacións de comerciantes - - - Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. - Precaución: -paytxfee está posto moi algo! Esta é a tarifa de transacción que ti pagarás se envías unha transacción. - - - Warning: The network does not appear to fully agree! Some miners appear to be experiencing issues. - Precaución: A rede non parece estar totalmente de acordo! Algúns mineitos parecen estar experimentando problemas. - - - Warning: We do not appear to fully agree with our peers! You may need to upgrade, or other nodes may need to upgrade. - Precaución: Non parece que esteamos totalmente de acordo cos nosos pares! Pode que precises actualizar, ou outros nodos poden precisar actualizarse. - - - Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. - Precaución: erro lendo wallet.dat! Tódalas claves lidas correctamente, pero os datos de transacción ou as entradas do libro de direccións podrían estar ausentes ou incorrectos. - - - 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. - Precaución: wallet.dat corrupto, datos salvagardados! O wallet.dat orixinal foi gardado como wallet.{timestamp}.bak en %s; se o teu balance ou transaccións son incorrectas deberías restauralas dende unha copia de seguridade. - - - <category> can be: - <categoría> pode ser: - - - Attempt to recover private keys from a corrupt wallet.dat - Tentar recuperar claves privadas dende un wallet.dat corrupto - - - Block creation options: - Opcións de creación de bloque: - - - Connect only to the specified node(s) - Conectar so ao(s) nodo(s) especificado(s) - - - Corrupted block database detected - Detectada base de datos de bloques corrupta. - - - Do you want to rebuild the block database now? - Queres reconstruír a base de datos de bloques agora? - - - Error initializing block database - Erro inicializando a base de datos de bloques - - - Error initializing wallet database environment %s! - Erro inicializando entorno de base de datos de moedeiro %s! - - - Error loading block database - Erro cargando base de datos do bloque - - - Error opening block database - Erro abrindo base de datos de bloques - - - Error: Disk space is low! - Erro: Espacio en disco escaso! - - - Failed to listen on any port. Use -listen=0 if you want this. - Fallou escoitar en calquera porto. Emprega -listen=0 se queres esto. - - - Incorrect or no genesis block found. Wrong datadir for network? - Bloque genesis incorrecto o no existente. Datadir erróneo para a rede? - - - Invalid -onion address: '%s' - Dirección -onion inválida: '%s' - - - Not enough file descriptors available. - Non hai suficientes descritores de arquivo dispoñibles. - - - Specify wallet file (within data directory) - Especificar arquivo do moedeiro (dentro do directorio de datos) - - - Verifying blocks... - Verificando bloques... - - - Verifying wallet... - Verificando moedeiro... - - - Wallet %s resides outside data directory %s - O moedeiro %s reside fóra do directorio de datos %s - - - You need to rebuild the database using -reindex to change -txindex - Precisas reconstruír a base de datos empregando -reindex para cambiar -txindex - - - Imports blocks from external blk000??.dat file - Importa bloques dende arquivos blk000??.dat externos - - - Execute command when a relevant alert is received or we see a really long fork (%s in cmd is replaced by message) - Executar comando cando se recibe unha alerta relevante ou vemos un fork realmente longo (%s no cmd é substituído pola mensaxe) - - - Choose data directory on startup (default: 0) - Escolle directorio de datos ao arrancar (por defecto: 0) - - - Information - Información - - - Invalid amount for -minrelaytxfee=<amount>: '%s' - Cantidade inválida para -minrelaytxfee=<cantidade>: '%s' - - - Invalid amount for -mintxfee=<amount>: '%s' - Cantidade inválida para -mintxfee=<cantidade>: '%s' - - - Send trace/debug info to console instead of debug.log file - Enviar traza/información de depuración á consola en lugar de ao arquivo debug.log - - - Set language, for example "de_DE" (default: system locale) - Fixar idioma, por exemplo "de_DE" (por defecto: locale del sistema) - - - Show splash screen on startup (default: 1) - Amosar pantalla splash no arranque (por defecto: 1) - - - Shrink debug.log file on client startup (default: 1 when no -debug) - Recortar o arquivo debug.log ao arrancar o cliente (por defecto: 1 cando no-debug) - - - Signing transaction failed - Fallou a sinatura da transacción - - - Start minimized - Comezar minimizado - - - Transaction amount too small - A cantidade da transacción é demasiado pequena - - - Transaction amounts must be positive - As cantidades da transacción deben ser positivas - - - Transaction too large - A transacción é demasiado grande - - - Use UPnP to map the listening port (default: 1 when listening) - Usar UPnP para mapear o porto de escoita (por defecto: 1 se á escoita) - - - Username for JSON-RPC connections - Nome de usuario para conexións JSON-RPC - - - Warning - Precaución - - - wallet.dat corrupt, salvage failed - wallet.dat corrupto, fallou o gardado - - - Password for JSON-RPC connections - Contrasinal para conexións JSON-RPC - - - Execute command when the best block changes (%s in cmd is replaced by block hash) - Executar comando cando o mellor bloque cambie (%s no comando é sustituído polo hash do bloque) - - - Upgrade wallet to latest format - Actualizar moedeiro ao formato máis recente - - - Rescan the block chain for missing wallet transactions - Rescanear transaccións ausentes na cadea de bloques - - - Use OpenSSL (https) for JSON-RPC connections - Empregar OpenSSL (https) para conexións JSON-RPC - - - This help message - Esta mensaxe de axuda - - - Allow DNS lookups for -addnode, -seednode and -connect - Permitir lookup de DNS para -addnote, -seednote e -connect - - - Loading addresses... - Cargando direccións... - - - Error loading wallet.dat: Wallet corrupted - Erro cargando wallet.dat: Moedeiro corrupto - - - Error loading wallet.dat - Erro cargando wallet.dat - - - Invalid -proxy address: '%s' - Dirección -proxy inválida: '%s' - - - Unknown network specified in -onlynet: '%s' - Rede descoñecida especificada en -onlynet: '%s' - - - Cannot resolve -bind address: '%s' - Non se pode resolver a dirección -bind: '%s' - - - Cannot resolve -externalip address: '%s' - Non se pode resolver dirección -externalip: '%s' - - - Invalid amount for -paytxfee=<amount>: '%s' - Cantidade inválida para -paytxfee=<cantidade>: '%s' - - - Insufficient funds - Fondos insuficientes - - - Loading block index... - Cargando índice de bloques... - - - Add a node to connect to and attempt to keep the connection open - Engadir un nodo ao que conectarse e tentar manter a conexión aberta - - - Loading wallet... - Cargando moedeiro... - - - Cannot downgrade wallet - Non se pode desactualizar o moedeiro - - - Cannot write default address - Non se pode escribir a dirección por defecto - - - Rescanning... - Rescaneando... - - - Done loading - Carga completa - - - Error - Erro - - - \ No newline at end of file diff --git a/src/qt/locale/bitcoin_gu_IN.ts b/src/qt/locale/bitcoin_gu_IN.ts deleted file mode 100644 index ef99b0dd3..000000000 --- a/src/qt/locale/bitcoin_gu_IN.ts +++ /dev/null @@ -1,110 +0,0 @@ - - - AddressBookPage - - - AddressTableModel - - - AskPassphraseDialog - - - BitcoinGUI - - - ClientModel - - - CoinControlDialog - - - EditAddressDialog - - - FreespaceChecker - - - HelpMessageDialog - - - Intro - - - OpenURIDialog - - - OptionsDialog - - - OverviewPage - - - PaymentServer - - - PeerTableModel - - - QObject - - - QRImageWidget - - - RPCConsole - - - ReceiveCoinsDialog - - - ReceiveRequestDialog - - - RecentRequestsTableModel - - - SendCoinsDialog - - - SendCoinsEntry - - - ShutdownWindow - - - SignVerifyMessageDialog - - - SplashScreen - - - TrafficGraphWidget - - - TransactionDesc - - - TransactionDescDialog - - - TransactionTableModel - - - TransactionView - - - UnitDisplayStatusBarControl - - - WalletFrame - - - WalletModel - - - WalletView - - - bitcoin-core - - \ No newline at end of file diff --git a/src/qt/locale/bitcoin_he.ts b/src/qt/locale/bitcoin_he.ts deleted file mode 100644 index e24d5dd21..000000000 --- a/src/qt/locale/bitcoin_he.ts +++ /dev/null @@ -1,2926 +0,0 @@ - - - AddressBookPage - - Create a new address - יצירת כתובת חדשה - - - &New - &חדשה - - - Copy the currently selected address to the system clipboard - העתקת הכתובת המסומנת ללוח ×”×’×–×™×¨×™× - - - &Copy - ×”&עתקה - - - C&lose - סגירה - - - &Copy Address - העתקת כתובת - - - Delete the currently selected address from the list - מחיקת הכתובת שנבחרה מהרשימה - - - Export the data in the current tab to a file - ×™×¦×•× ×”× ×ª×•× ×™× ×ž×”×œ×©×•× ×™×ª הנוכחית לקובץ - - - &Export - ×™&×¦×•× - - - &Delete - מ&×—×™×§×” - - - Choose the address to send coins to - × × ×œ×‘×—×•×¨ ×ת הכתובת המבוקשת לשליחת המטבעות - - - Choose the address to receive coins with - × × ×œ×‘×—×•×¨ ×ת הכתובת המבוקשת לקבלת המטבעות - - - C&hoose - בחירה - - - Sending addresses - כתובות לשליחה - - - Receiving addresses - כתובות לקבלה - - - These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins. - ×לה כתובת הביטקוין שלך לצורך שליחת תשלומי×. תמיד יש לבדוק ×ת הכמות ו×ת כתובות מקבלי ×”×ª×©×œ×•×ž×™× ×œ×¤× ×™ שליחת מטבעות. - - - These are your Bitcoin addresses for receiving payments. It is recommended to use a new receiving address for each transaction. - ×לה כתובות הביטקוין שלך לצורך קבלת תשלומי×. מומלץ להשתמש בכתובת קבלה חדשה לכל העברה. - - - Copy &Label - העתקת &תווית - - - &Edit - ×¢&ריכה - - - Export Address List - ×™×¦×•× ×¨×©×™×ž×ª כתובות - - - Comma separated file (*.csv) - קובץ מופרד ×‘×¤×¡×™×§×™× (‎*.csv) - - - Exporting Failed - ×”×™×¦×•× × ×›×©×œ - - - There was an error trying to save the address list to %1. Please try again. - ×ירעה שגי××” בעת הניסיון לשמור ×ת רשימת הכתובת ×ל %1. × × ×œ× ×¡×•×ª שוב. - - - - AddressTableModel - - Label - תווית - - - Address - כתובת - - - (no label) - (×ין תווית) - - - - AskPassphraseDialog - - Passphrase Dialog - דו־שיח מילת צופן - - - Enter passphrase - × × ×œ×”×–×™×Ÿ מילת צופן - - - New passphrase - מילת צופן חדשה - - - Repeat new passphrase - × × ×œ×—×–×•×¨ על מילת הצופן החדשה - - - Encrypt wallet - הצפנת ×”×רנק - - - This operation needs your wallet passphrase to unlock the wallet. - פעולה זו דורשת ×ת מילת הצופן של ×”×רנק שלך כדי לפתוח ×ת ×”×רנק. - - - Unlock wallet - פתיחת ×רנק - - - This operation needs your wallet passphrase to decrypt the wallet. - פעולה זו דורשת ×ת מילת הצופן של ×”×רנק שלך כדי לפענח ×ת ×”×רנק. - - - Decrypt wallet - פענוח ×רנק - - - Change passphrase - שינוי מילת צופן - - - Confirm wallet encryption - ×ישור הצפנת ×”×רנק - - - Warning: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR BITCOINS</b>! - ×זהרה: הצפנת ×”×רנק ו×יבוד מילת הצופן עשויה להוביל <b>ל×יבוד כל ×”×‘×™×˜×§×•×™× ×™× ×©×œ×š</b>! - - - Are you sure you wish to encrypt your wallet? - ×”×× ×כן להצפין ×ת ×”×רנק? - - - 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. - לתשומת לבך: כל גיבוי ×§×•×“× ×©×‘×™×¦×¢×ª ל×רנק שלך יש להחליף בקובץ ×”×רנק המוצפן שזה עתה נוצר. מטעמי ×בטחה, ×’×™×‘×•×™×™× ×§×•×“×ž×™× ×©×œ קובץ ×”×רנק הבלתי-מוצפן יהפכו לחסרי תועלת ×¢× ×”×ª×—×œ×ª השימוש ב×רנק החדש המוצפן. - - - Warning: The Caps Lock key is on! - זהירות: מקש Caps Lock פעיל! - - - Wallet encrypted - ×”×רנק הוצפן - - - 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>. - × × ×œ×”×–×™×Ÿ ×ת מילת הצופן החדשה ל×רנק.<br/>כד××™ להשתמש במילת צופן המורכבת מ<b>עשרה ×ª×•×•×™× ×קר××™×™× ×•×ž×¢×œ×”</b>, ×ו <b>שמונה ×ž×™×œ×™× ×•×ž×¢×œ×”</b>. - - - Wallet encryption failed - הצפנת ×”×רנק נכשלה - - - Wallet encryption failed due to an internal error. Your wallet was not encrypted. - הצפנת ×”×רנק נכשלה עקב שגי××” פנימית. ×”×רנק שלך ×œ× ×”×•×¦×¤×Ÿ. - - - The supplied passphrases do not match. - מילות הצופן שסופקו ×ינן תו×מות. - - - Wallet unlock failed - פתיחת ×”×רנק נכשלה - - - The passphrase entered for the wallet decryption was incorrect. - מילת הצופן שהוכנסה לפענוח ×”×רנק שגויה. - - - Wallet decryption failed - פענוח ×”×רנק נכשל - - - Wallet passphrase was successfully changed. - מילת הצופן של ×”×רנק שונתה בהצלחה. - - - - BitcoinGUI - - Sign &message... - &חתימה על הודעה… - - - Synchronizing with network... - בסנכרון ×¢× ×”×¨×©×ªâ€¦ - - - &Overview - &סקירה - - - Node - מפרק - - - Show general overview of wallet - הצגת סקירה כללית של ×”×רנק - - - &Transactions - ×”&עברות - - - Browse transaction history - עיון בהיסטוריית ההעברות - - - E&xit - ×™&צי××” - - - Quit application - יצי××” מהתכנית - - - About &Qt - על ×ודות Qt - - - Show information about Qt - הצגת מידע על Qt - - - &Options... - &×פשרויות… - - - &Encrypt Wallet... - ×”&צפנת ×”×רנק… - - - &Backup Wallet... - &גיבוי ×”×רנק… - - - &Change Passphrase... - ×”&חלפת מילת הצופן… - - - &Sending addresses... - כתובת ×”&שליחה… - - - &Receiving addresses... - כתובות ×”&קבלה… - - - Open &URI... - פתיחת &כתובת מש×ב… - - - Bitcoin Core client - לקוח ליבה של ביטקוין - - - Importing blocks from disk... - ×ž×§×˜×¢×™× ×ž×™×•×‘××™× ×ž×”×›×•× ×Ÿâ€¦ - - - Reindexing blocks on disk... - ×”×ž×§×˜×¢×™× × ×•×¡×¤×™× ×œ×ž×¤×ª×— בכונן… - - - Send coins to a Bitcoin address - שליחת מטבעות לכתובת ביטקוין - - - Backup wallet to another location - גיבוי ×”×רנק ×œ×ž×™×§×•× ×חר - - - Change the passphrase used for wallet encryption - החלפת מילת הצופן להצפנת ×”×רנק - - - &Debug window - חלון &ניפוי - - - Open debugging and diagnostic console - פתיחת לוח הבקרה ל×בחון ולניפוי - - - &Verify message... - &×ימות הודעה… - - - Bitcoin - ביטקוין - - - Wallet - ×רנק - - - &Send - &שליחה - - - &Receive - &קבלה - - - Show information about Bitcoin Core - הצגת מידע על ליבת ביטקוין - - - &Show / Hide - ×”&צגה / הסתרה - - - Show or hide the main Window - הצגה ×ו הסתרה של החלון הר×שי - - - Encrypt the private keys that belong to your wallet - הצפנת המפתחות ×”×¤×¨×˜×™×™× ×©×©×™×™×›×™× ×œ×רנק שלך - - - Sign messages with your Bitcoin addresses to prove you own them - ×—×ª×•× ×¢×œ הודעות ×¢× ×›×ª×•×‘×•×ª הביטקוין שלך כדי להוכיח שהן בבעלותך - - - Verify messages to ensure they were signed with specified Bitcoin addresses - ×מת הודעות כדי להבטיח שהן נחתמו ×¢× ×›×ª×•×‘×ª ביטקוין מסוימות - - - &File - &קובץ - - - &Settings - ×”&גדרות - - - &Help - ×¢&זרה - - - Tabs toolbar - סרגל ×›×œ×™× ×œ×©×•× ×™×•×ª - - - Bitcoin Core - ליבת ביטקוין - - - Request payments (generates QR codes and bitcoin: URIs) - בקשת ×ª×©×œ×•×ž×™× (יצירה של ×§×•×“×™× ×ž×¡×•×’ QR וסכימות כתובות מש×ב של :bitcoin) - - - &About Bitcoin Core - על &×ודות ליבת ביטקוין - - - Show the list of used sending addresses and labels - הצג ×ת רשימת הכתובות לשליחה שהיו בשימוש לרבות התוויות - - - Show the list of used receiving addresses and labels - הצגת רשימת הכתובות והתוויות הנמצ×ות בשימוש - - - Open a bitcoin: URI or payment request - פתיחת ביטקוין: כתובת מש×ב ×ו בקשת ×ª×©×œ×•× - - - &Command-line options - ×פשרויות &שורת הפקודה - - - Show the Bitcoin Core help message to get a list with possible Bitcoin command-line options - הצגת הודעות העזרה של ליבת ביטקוין כדי לקבל רשימה ×¢× ×פשרויות שורת הפקודה ×”×פשריות של ביטקוין - - - No block source available... - ×ין מקור ×ž×§×˜×¢×™× ×–×ž×™×Ÿâ€¦ - - - %1 and %2 - %1 ו%2 - - - Last received block was generated %1 ago. - המקטע ×”×חרון שהתקבל נוצר לפני %1. - - - Transactions after this will not yet be visible. - ההעברות שבוצעו ל×חר העברה זו ×œ× ×™×•×¤×™×¢×•. - - - Error - שגי××” - - - Warning - ×זהרה - - - Information - מידע - - - Up to date - עדכני - - - Catching up... - מתבצע עדכון… - - - Sent transaction - העברת שליחה - - - Incoming transaction - העברת קבלה - - - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - ×”×רנק <b>מוצפן</b> ו<b>פתוח</b> כרגע - - - Wallet is <b>encrypted</b> and currently <b>locked</b> - ×”×רנק <b>מוצפן</b> ו<b>נעול</b> כרגע - - - - ClientModel - - Network Alert - ×זעקת רשת - - - - CoinControlDialog - - Quantity: - כמות: - - - Bytes: - בתי×: - - - Amount: - סכו×: - - - Priority: - עדיפות: - - - Fee: - עמלה: - - - Dust: - ×בק: - - - After Fee: - ל×חר עמלה: - - - Change: - עודף: - - - (un)select all - ביטול/×ישור הבחירה - - - Tree mode - מצב ×¢×¥ - - - List mode - מצב רשימה - - - Amount - כמות - - - Date - ת×ריך - - - Confirmations - ××™×©×•×¨×™× - - - Confirmed - מ×ושר - - - Priority - עדיפות - - - Copy address - העתקת כתובת - - - Copy label - העתקת תווית - - - Copy amount - העתקת כמות - - - Copy transaction ID - העתקת מזהה העברה - - - Lock unspent - נעילת יתרה - - - Unlock unspent - פתיחת יתרה - - - Copy quantity - העתקת כמות - - - Copy fee - העתקת עמלה - - - Copy after fee - העתקת ×חרי עמלה - - - Copy bytes - העתקת ×‘×ª×™× - - - Copy priority - העתקת עדיפות - - - Copy dust - העתקת ×בק - - - Copy change - העתקת עודף - - - highest - הגבוה ביותר - - - higher - גבוה יותר - - - high - גבוה - - - medium-high - בינוני - גבוה - - - medium - בינוני - - - low-medium - בינוני - נמוך - - - low - נמוך - - - lower - נמוך יותר - - - lowest - הנמוך ביותר - - - none - ×œ×œ× - - - Can vary +/- %1 satoshi(s) per input. - יכולה להשתנות ב+/- %1 סטושי לקלט. - - - yes - כן - - - no - ×œ× - - - This means a fee of at least %1 per kB is required. - ×–×ת ×ומרת שנחוצה עמלה של ×œ× ×¤×—×•×ª מ־%1 לכל קילו בית. - - - Can vary +/- 1 byte per input. - הערך יכול להיות +/- בית ×חד לכל קלט. - - - Transactions with higher priority are more likely to get included into a block. - העברות ×¢× ×¢×“×™×¤×•×ª גבוהה, יותר סיכוי שיכנסו לתוך המקטע. - - - (no label) - (×ין תווית) - - - change from %1 (%2) - עודף מ־%1 (%2) - - - (change) - (עודף) - - - - EditAddressDialog - - Edit Address - עריכת כתובת - - - &Label - ת&ווית - - - The label associated with this address list entry - התווית המשויכת לרשומה הזו ברשימת הכתובות - - - The address associated with this address list entry. This can only be modified for sending addresses. - הכתובת המשויכת ×¢× ×¨×©×•×ž×” זו ברשימת הכתובות. ניתן לשנות ×–×ת רק עבור כתובות לשליחה. - - - &Address - &כתובת - - - New receiving address - כתובת חדשה לקבלה - - - New sending address - כתובת חדשה לשליחה - - - Edit receiving address - עריכת כתובת לקבלה - - - Edit sending address - עריכת כתובת לשליחה - - - The entered address "%1" is already in the address book. - הכתובת שהוכנסה „%1“ כבר נמצ×ת בפנקס הכתובות. - - - The entered address "%1" is not a valid Bitcoin address. - הכתובת שהוכנסה „%1“ ××™× ×” כתובת ביטקוין תקנית. - - - Could not unlock wallet. - פתיחת ×”×רנק נכשלה. - - - New key generation failed. - יצירת מפתח חדש נכשלה. - - - - FreespaceChecker - - A new data directory will be created. - תיקיית × ×ª×•× ×™× ×—×“×©×” תיווצר. - - - name - ×©× - - - Directory already exists. Add %1 if you intend to create a new directory here. - התיקייה כבר קיימת. ניתן להוסיף %1 ×× ×™×© ליצור תיקייה חדשה ×›×ן. - - - Path already exists, and is not a directory. - הנתיב כבר ×§×™×™× ×•×ינו מצביע על תיקייה. - - - Cannot create data directory here. - ×œ× × ×™×ª×Ÿ ליצור ×›×ן תיקיית נתוני×. - - - - HelpMessageDialog - - Bitcoin Core - ליבת ביטקוין - - - version - גרסה - - - (%1-bit) - (%1-סיביות) - - - About Bitcoin Core - על ×ודות ליבת ביטקוין - - - Command-line options - ×פשרויות שורת פקודה - - - Usage: - שימוש: - - - command-line options - ×פשרויות שורת פקודה - - - - Intro - - Welcome - ברוך בו×ך - - - Welcome to Bitcoin Core. - ברוך בו×ך לליבת ביטקוין - - - As this is the first time the program is launched, you can choose where Bitcoin Core will store its data. - מכיוון שז×ת ×”×¤×¢× ×”×¨×שונה שהתכנית פועלת ניתן לבחור ×יפה ליבת ביטקוין ת×חסן ×ת ×”× ×ª×•× ×™× ×©×œ×”. - - - Bitcoin Core will download and store a copy of the Bitcoin block chain. At least %1GB of data will be stored in this directory, and it will grow over time. The wallet will also be stored in this directory. - לקוח ביטקוין יוריד וישמור העתק של שרשרת ×”×ž×§×˜×¢×™× ×©×œ ביטקוין. לפחות %1 ג״ב ×ž×”× ×ª×•× ×™× ×™×וחסנו בתיקייה זו, ×•×”×™× ×ª×’×“×œ ×¢× ×”×–×ž×Ÿ. ×”×רנק ×’× ×™×וחסן בתיקייה הזו. - - - Use the default data directory - שימוש בבררת המחדל של תיקיית הנתוני×. - - - Use a custom data directory: - שימוש בתיקיית × ×ª×•× ×™× ×ž×•×ª×מת ×ישית: - - - Bitcoin Core - ליבת ביטקוין - - - Error: Specified data directory "%1" cannot be created. - שגי××”: ×œ× × ×™×ª×Ÿ ליצור ×ת תיקיית ×”× ×ª×•× ×™× ×©×¦×•×™× ×” „%1“. - - - Error - שגי××” - - - - OpenURIDialog - - Open URI - פתיחת כתובת מש×ב - - - Open payment request from URI or file - פתיחת בקשת ×ª×©×œ×•× ×ž×›×ª×•×‘×ª מש×ב ×ו מקובץ - - - URI: - כתובת מש×ב: - - - Select payment request file - בחירת קובץ בקשת ×ª×©×œ×•× - - - Select payment request file to open - בחירת קובץ בקשת ×ª×©×œ×•× ×œ×¤×ª×™×—×” - - - - OptionsDialog - - Options - ×פשרויות - - - &Main - &ר×שי - - - Size of &database cache - גודל מ&טמון מסד ×”× ×ª×•× ×™× - - - MB - מ״ב - - - Number of script &verification threads - מספר תהליכי ×”&×ימות של הסקריפט - - - Accept connections from outside - קבלת ×—×™×‘×•×¨×™× ×ž×‘×—×•×¥ - - - Allow incoming connections - ל×פשר ×—×™×‘×•×¨×™× × ×›× ×¡×™× - - - IP address of the proxy (e.g. IPv4: 127.0.0.1 / IPv6: ::1) - כתובת ×”Ö¾IP של המתווך (לדוגמה IPv4: 127.0.0.1†/ IPv6: ::1) - - - 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 |. - כתובות צד־שלישי (כגון: סייר מקטעי×) ×©×ž×•×¤×™×¢×™× ×‘×œ×©×•× ×™×ª ההעברות בתור ×¤×¨×™×˜×™× ×‘×ª×¤×¨×™×˜ ההקשר. %s בכתובת מוחלף בגיבוב ההעברה. מספר כתובות יופרדו בפס ×× ×›×™ |. - - - Third party transaction URLs - כתובות העברה צד־שלישי - - - Active command-line options that override above options: - ×פשרויות פעילות בשורת הפקודה שדורסות ×ת ×”×פשרויות שלהלן: - - - Reset all client options to default. - ×יפוס כל ×פשרויות התכנית לבררת המחדל. - - - &Reset Options - &×יפוס ×פשרויות - - - &Network - &רשת - - - (0 = auto, <0 = leave that many cores free) - (0 = ×וטומטי, <0 = להש×יר ×›×–×ת כמות של ליבות חופשיות) - - - W&allet - &×רנק - - - Expert - מומחה - - - Enable coin &control features - הפעלת תכונות &בקרת מטבעות - - - 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. - ×× ×פשרות ההשקעה של עודף בלתי מ×ושר תנוטרל, ×œ× × ×™×ª×Ÿ ×™×”×™×” להשתמש בעודף מההעברה עד שלהעברה ×™×”×™×” לפחות ×ישור ×חד. פעולה זו ×’× ×ž×©×¤×™×¢×” על חישוב המ×זן שלך. - - - &Spend unconfirmed change - עודף &בלתי מ×ושר מההשקעה - - - Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled. - פתיחת הפתחה של ביטקוין בנתב ב×ופן ×וטומטי. עובד רק ×× UPnP מופעל ונתמך בנתב. - - - Map port using &UPnP - מיפוי פתחה ב×מצעות UPnP - - - Proxy &IP: - כתובת ×”Ö¾IP של המ&תווך: - - - &Port: - &פתחה: - - - Port of the proxy (e.g. 9050) - הפתחה של המתווך (למשל 9050) - - - &Window - &חלון - - - Show only a tray icon after minimizing the window. - הצג סמל מגש בלבד ל×חר מזעור החלון. - - - &Minimize to the tray instead of the taskbar - מ&זעור למגש ×‘×ž×§×•× ×œ×©×•×¨×ª המשימות - - - M&inimize on close - מ&זעור ×¢× ×¡×’×™×¨×” - - - &Display - ת&צוגה - - - User Interface &language: - &שפת מנשק המשתמש: - - - &Unit to show amounts in: - ×™&חידת מידה להצגת כמויות: - - - Choose the default subdivision unit to show in the interface and when sending coins. - ניתן לבחור ×ת בררת המחדל ליחידת החלוקה שתוצג במנשק ובעת שליחת מטבעות. - - - Whether to show coin control features or not. - ×”×× ×œ×”×¦×™×’ תכונות שליטת מטבע ×ו ל×. - - - &OK - &×ישור - - - &Cancel - &ביטול - - - default - בררת מחדל - - - none - ×œ×œ× - - - Confirm options reset - ×ישור ×יפוס ×”×פשרויות - - - Client restart required to activate changes. - נדרשת הפעלה מחדש של הלקוח כדי להפעיל ×ת השינויי×. - - - This change would require a client restart. - שינוי ×–×” ידרוש הפעלה מחדש של תכנית הלקוח. - - - The supplied proxy address is invalid. - כתובת המתווך שסופקה ××™× ×” תקינה. - - - - OverviewPage - - Form - טופס - - - The displayed information may be out of date. Your wallet automatically synchronizes with the Bitcoin network after a connection is established, but this process has not completed yet. - המידע המוצג עשוי להיות מיושן. ×”×רנק שלך מסתנכרן ב×ופן ×וטומטי ×¢× ×¨×©×ª הביטקוין ל×חר יצירת החיבור, ×ך התהליך ×˜×¨× ×”×¡×ª×™×™×. - - - Watch-only: - צפייה בלבד: - - - Available: - זמין: - - - Your current spendable balance - היתרה הזמינה הנוכחית - - - Pending: - בהמתנה: - - - Total of transactions that have yet to be confirmed, and do not yet count toward the spendable balance - ×”×¡×›×•× ×”×›×•×œ×œ של העברות ×©×˜×¨× ×ושרו ועדיין ×ינן נספרות בחישוב היתרה הזמינה - - - Immature: - ×œ× ×‘×©×œ: - - - Mined balance that has not yet matured - מ×זן שנכרה ×•×˜×¨× ×”×‘×©×™×œ - - - Balances - מ××–× ×™× - - - Total: - סך הכול: - - - Your current total balance - סך כל היתרה הנוכחית שלך - - - Your current balance in watch-only addresses - המ×זן הנוכחי שלך בכתובות לקרי××” בלבד - - - Recent transactions - העברות ×חרונות - - - Unconfirmed transactions to watch-only addresses - העברות בלתי מ×ושרות לכתובות לצפייה בלבד - - - Mined balance in watch-only addresses that has not yet matured - מ×זן ל×חר כרייה בכתובות לצפייה בלבד שעדיין ×œ× ×”×‘×©×™×œ×• - - - Current total balance in watch-only addresses - המ×זן הכולל הנוכחי בכתובות לצפייה בלבד - - - - PaymentServer - - URI handling - תפעול כתובות מש×ב - - - Invalid payment address %1 - כתובת ×ª×©×œ×•× ×©×’×•×™×” %1 - - - Payment request rejected - בקשת ×”×ª×©×œ×•× × ×“×—×ª×” - - - Payment request network doesn't match client network. - רשת בקשת ×”×ª×©×œ×•× ××™× ×” תו×מת לרשת הלקוח. - - - Payment request is not initialized. - בקשת ×”×ª×©×œ×•× ×œ× ×”×—×œ×”. - - - Requested payment amount of %1 is too small (considered dust). - ×”×¡×›×•× ×¢×œ סך %1 הנדרש ×œ×ª×©×œ×•× ×§×˜×Ÿ מדי (נחשב ל×בק) - - - Payment request error - שגי××” בבקשת ×ª×©×œ×•× - - - Cannot start bitcoin: click-to-pay handler - ×œ× × ×™×ª×Ÿ להתחיל ×ת ביטקוין: טיפול ×‘×œ×—×™×¦×”â€“×œ×ª×©×œ×•× - - - Payment request fetch URL is invalid: %1 - כתובת ×חזור בקשת ×”×ª×©×œ×•× ×©×’×•×™×”: %1 - - - URI cannot be parsed! This can be caused by an invalid Bitcoin address or malformed URI parameters. - ×œ× × ×™×ª×Ÿ לנתח ×ת כתובת המש×ב! מצב ×–×” יכול לקרות עקב כתובת ביטקוין שגויה ×ו ×¤×¨×ž×˜×¨×™× ×©×’×•×™×™× ×‘×›×ª×•×‘×ª המש×ב. - - - Payment request file handling - טיפול בקובצי בקשות ×ª×©×œ×•× - - - Payment request file cannot be read! This can be caused by an invalid payment request file. - ×œ× × ×™×ª×Ÿ ×œ×§×¨×•× ×ת קובץ בקשת התשלו×! מצב ×›×–×” יכול לקרות בעקבות קובץ בקשת ×ª×©×œ×•× ×¤×’×•×. - - - Unverified payment requests to custom payment scripts are unsupported. - בקשות ×ª×©×œ×•× ×‘×œ×ª×™ מ×ומתות ×œ×¡×§×¨×™×¤×˜×™× ×œ×ª×©×œ×•× ×ž×•×ª××ž×™× ×ישית ×ינן נתמכות. - - - Refund from %1 - החזר מ־%1 - - - Error communicating with %1: %2 - שגי××” בתקשורת ×¢× %1: %2 - - - Payment request cannot be parsed! - ×œ× × ×™×ª×Ÿ לפענח ×ת בקשת התשלו×! - - - Bad response from server %1 - מענה שגוי משרת %1 - - - Payment acknowledged - ×”×ª×©×œ×•× ×”×ª×§×‘×œ - - - Network request error - שגי×ת בקשת שרת - - - - PeerTableModel - - User Agent - סוכן משתמש - - - Ping Time - זמן המענה - - - - QObject - - Amount - כמות - - - Enter a Bitcoin address (e.g. %1) - × × ×œ×”×–×™×Ÿ כתובת ביטקוין (למשל: %1) - - - %1 d - %1 ×™×ž×™× - - - %1 h - %1 שעות - - - %1 m - %1 דקות - - - %1 s - %1 שניות - - - None - ×œ×œ× - - - N/A - ×œ× ×–×ž×™×Ÿ - - - %1 ms - %1 מילישניות - - - - QRImageWidget - - &Save Image... - &שמירת תמונה… - - - &Copy Image - ×”&עתקת תמונה - - - Save QR Code - שמירת קוד QR - - - PNG Image (*.png) - תמונת PNG â€(‎*.png) - - - - RPCConsole - - Client name - ×©× ×œ×§×•×— - - - N/A - ×œ× ×–×ž×™×Ÿ - - - Client version - גרסת מנשק - - - &Information - מי&דע - - - Debug window - חלון ניפוי - - - General - כללי - - - Using OpenSSL version - שימוש ב־OpenSSL גרסה - - - Using BerkeleyDB version - שימוש ב־BerkeleyDB גרסה - - - Startup time - זמן עלייה - - - Network - רשת - - - Name - ×©× - - - Number of connections - מספר ×—×™×‘×•×¨×™× - - - Block chain - שרשרת ×ž×§×˜×¢×™× - - - Current number of blocks - מספר ×”×ž×§×˜×¢×™× ×”× ×•×›×—×™ - - - Received - התקבלו - - - Sent - נשלחו - - - &Peers - &×¢×ž×™×ª×™× - - - Select a peer to view detailed information. - × × ×œ×‘×—×•×¨ בעמית כדי להציג מידע מפורט. - - - Direction - כיוון - - - Version - גרסה - - - User Agent - סוכן משתמש - - - Services - ×©×™×¨×•×ª×™× - - - Starting Height - גובה התחלתי - - - Sync Height - גובה הסנכרון - - - Ban Score - דירוג חסימה - - - Connection Time - זמן החיבור - - - Last Send - שליחה ×חרונה - - - Last Receive - קבלה ×חרונה - - - Bytes Sent - ×‘×ª×™× ×©× ×©×œ×—×• - - - Bytes Received - ×‘×ª×™× ×©×”×ª×§×‘×œ×• - - - Ping Time - זמן המענה - - - Last block time - זמן המקטע ×”×חרון - - - &Open - &פתיחה - - - &Console - מ&סוף בקרה - - - &Network Traffic - &תעבורת רשת - - - &Clear - &ניקוי - - - Totals - ×¡×›×•×ž×™× - - - In: - נכנס: - - - Out: - יוצ×: - - - Build date - ת×ריך בנייה - - - Debug log file - קובץ יומן ניפוי - - - Clear console - ניקוי מסוף הבקרה - - - Use up and down arrows to navigate history, and <b>Ctrl-L</b> to clear screen. - יש להשתמש ×‘×—×¦×™× ×œ×ž×¢×œ×” ולמטה כדי לנווט בהיסטוריה, וב־<b>Ctrl-L</b> כדי לנקות ×ת המסך. - - - Type <b>help</b> for an overview of available commands. - ניתן להקליד <b>help</b> לקבלת סקירה של הפקודות הזמינות. - - - %1 B - %1 ב׳ - - - %1 KB - %1 ק״ב - - - %1 MB - %1 מ״ב - - - %1 GB - %1 ג״ב - - - via %1 - דרך %1 - - - never - ×œ×¢×•×œ× ×œ× - - - Inbound - תעבורה נכנסת - - - Outbound - תעבורה יוצ×ת - - - Unknown - ×œ× ×™×“×•×¢ - - - Fetching... - מתקבל… - - - - ReceiveCoinsDialog - - &Amount: - &סכו×: - - - &Label: - ת&ווית: - - - &Message: - הו&דעה: - - - Reuse one of the previously used receiving addresses. Reusing addresses has security and privacy issues. Do not use this unless re-generating a payment request made before. - ניתן להשתמש שוב ב×חת מכתובות הקבלה שכבר נעשה בהן שימוש. לשימוש חוזר בכתובות ישנן השלכות ×בטחה ופרטיות. מומלץ ×©×œ× ×œ×”×©×ª×ž×© ב×פשרות זו למעט יצירה מחדש של בקשת ×ª×©×œ×•× ×©× ×•×¦×¨×” בעבר. - - - R&euse an existing receiving address (not recommended) - ש&ימוש &חוזר בכתובת קבלה קיימת (×œ× ×ž×•×ž×œ×¥) - - - An optional message to attach to the payment request, which will be displayed when the request is opened. Note: The message will not be sent with the payment over the Bitcoin network. - הודעת רשות לצירוף לבקשת ×”×ª×©×œ×•× ×©×ª×•×¦×’ בעת פתיחת הבקשה. לתשומת לבך: ההודעה ×œ× ×ª×™×©×œ×— ×¢× ×”×ª×©×œ×•× ×‘×¨×©×ª ביטקוין. - - - An optional label to associate with the new receiving address. - תווית רשות לשיוך ×¢× ×›×ª×•×‘×ª הקבלה החדשה. - - - Use this form to request payments. All fields are <b>optional</b>. - יש להשתמש בטופס ×–×” כדי לבקש תשלומי×. כל השדות ×”× ×‘×’×“×¨ <b>רשות</b>. - - - An optional amount to request. Leave this empty or zero to not request a specific amount. - ×¡×›×•× ×›×¨×©×•×ª לבקשה. ניתן להש×יר ×–×ת ריק כדי ×œ× ×œ×‘×§×© ×¡×›×•× ×ž×¡×•×™×. - - - Clear all fields of the form. - ניקוי של כל השדות בטופס. - - - Clear - ניקוי - - - Requested payments history - היסטוריית בקשות ×ª×©×œ×•× - - - &Request payment - &בקשת ×ª×©×œ×•× - - - Show the selected request (does the same as double clicking an entry) - הצגת בקשות נבחרות (דומה ללחיצה כפולה על רשומה) - - - Show - הצגה - - - Remove the selected entries from the list - הסרת הרשומות הנבחרות מהרשימה - - - Remove - הסרה - - - Copy label - העתקת תווית - - - Copy message - העתקת הודעה - - - Copy amount - העתקת כמות - - - - ReceiveRequestDialog - - QR Code - קוד QR - - - Copy &URI - העתקת &כתובת מש×ב - - - Copy &Address - העתקת &כתובת - - - &Save Image... - &שמירת תמונה… - - - Request payment to %1 - בקשת ×ª×©×œ×•× ×œ×˜×•×‘×ª %1 - - - Payment information - מידע על ×ª×©×œ×•× - - - URI - כתובת מש×ב - - - Address - כתובת - - - Amount - כמות - - - Label - תווית - - - Message - הודעה - - - Resulting URI too long, try to reduce the text for label / message. - כתובת המש×ב המתקבלת ×רוכה מדי, כד××™ לנסות ×œ×¦×ž×¦× ×ת הטקסט בתווית / הודעה. - - - Error encoding URI into QR Code. - שגי××” בקידוד כתובת מש×ב לקוד QR - - - - RecentRequestsTableModel - - Date - ת×ריך - - - Label - תווית - - - Message - הודעה - - - Amount - כמות - - - (no label) - (×ין תווית) - - - (no message) - (×ין הודעה) - - - (no amount) - (×ין סכו×) - - - - SendCoinsDialog - - Send Coins - שליחת מטבעות - - - Coin Control Features - תכונות בקרת מטבעות - - - Inputs... - קלטי×… - - - automatically selected - בבחירה ×וטומטית - - - Insufficient funds! - ×ין מספיק כספי×! - - - Quantity: - כמות: - - - Bytes: - בתי×: - - - Amount: - סכו×: - - - Priority: - עדיפות: - - - Fee: - עמלה: - - - After Fee: - ל×חר עמלה: - - - Change: - עודף: - - - If this is activated, but the change address is empty or invalid, change will be sent to a newly generated address. - ×× ×פשרות זו מופעלת ×ך כתובת העודף ריקה ×ו שגויה, העודף יישלח לכתובת חדשה שתיווצר. - - - Custom change address - כתובת לעודף מות×מת ×ישית - - - Send to multiple recipients at once - שליחה למספר ×ž×•×˜×‘×™× ×‘×•Ö¾×–×ž× ×™×ª - - - Add &Recipient - הוספת &מוטב - - - Clear all fields of the form. - ניקוי של כל השדות בטופס. - - - Dust: - ×בק: - - - Clear &All - &ניקוי הכול - - - Balance: - מ×זן: - - - Confirm the send action - ×ישור פעולת השליחה - - - S&end - &שליחה - - - Confirm send coins - ×ישור שליחת מטבעות - - - %1 to %2 - %1 ×ל %2 - - - Copy quantity - העתקת כמות - - - Copy amount - העתקת כמות - - - Copy fee - העתקת עמלה - - - Copy after fee - העתקת ×חרי עמלה - - - Copy bytes - העתקת ×‘×ª×™× - - - Copy priority - העתקת עדיפות - - - Copy change - העתקת עודף - - - or - ×ו - - - The amount to pay must be larger than 0. - הכמות ×œ×ª×©×œ×•× ×—×™×™×‘×ª להיות גדולה מ־0. - - - The amount exceeds your balance. - הכמות עולה על המ×זן שלך. - - - The total exceeds your balance when the %1 transaction fee is included. - הכמות הכוללת, ובכללה עמלת העברה בסך %1, עולה על המ×זן שלך. - - - Transaction creation failed! - יצירת ההעברה נכשלה! - - - 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. - ההעברה נדחתה! מצב ×›×–×” עשוי לקרות ×× ×—×œ×§ מהמטבעות ב×רנק שלך כבר הושקעו, כמו למשל עקב שימוש בעותק של wallet.dat והמטבעות הושקעו בעותק ×בל ×œ× ×¡×•×ž× ×• ×›×ילו הושקעו דרך ×›×ן. - - - Warning: Invalid Bitcoin address - ×זהרה: כתובת ביטקוין שגויה - - - (no label) - (×ין תווית) - - - Warning: Unknown change address - ×זהרה: כתובת עודף בלתי ידועה - - - Copy dust - העתקת ×בק - - - Are you sure you want to send? - ×”×× ×כן לשלוח? - - - added as transaction fee - נוסף כעמלת העברה - - - - SendCoinsEntry - - A&mount: - &כמות: - - - Pay &To: - ×œ×©×œ× ×œ&טובת: - - - Enter a label for this address to add it to your address book - × × ×œ×”×›× ×™×¡ תווית לכתובת ×”×–×ת כדי להוסיף לפנקס הכתובות - - - &Label: - ת&ווית: - - - Choose previously used address - בחירת כתובת שהייתה בשימוש - - - This is a normal payment. - זהו ×ª×©×œ×•× ×¨×’×™×œ. - - - The Bitcoin address to send the payment to - כתובת הביטקוין של המוטב - - - Alt+A - Alt+A - - - Paste address from clipboard - הדבקת כתובת מלוח ×”×’×–×™×¨×™× - - - Alt+P - Alt+P - - - Remove this entry - הסרת רשומה זו - - - Message: - הודעה: - - - Enter a label for this address to add it to the list of used addresses - יש להזין תווית עבור כתובת זו כדי להוסיף ×ותה לרשימת הכתובות בשימוש - - - A message that was attached to the bitcoin: URI which will be stored with the transaction for your reference. Note: This message will not be sent over the Bitcoin network. - הודעה שצורפה לביטקוין: כתובת שת×וחסן בהעברה לצורך מעקב מצדך. לתשומת לבך: הודעה זו ×œ× ×ª×™×©×œ×— ברשת הביטקוין. - - - Pay To: - ×ª×©×œ×•× ×œ×˜×•×‘×ª: - - - Memo: - תזכורת: - - - - ShutdownWindow - - Bitcoin Core is shutting down... - ליבת ביטקוין נסגרת… - - - Do not shut down the computer until this window disappears. - ×ין לכבות ×ת המחשב עד שחלון ×–×” נעל×. - - - - SignVerifyMessageDialog - - Signatures - Sign / Verify a Message - חתימות - חתימה ×ו ×ימות של הודעה - - - &Sign Message - חתימה על הו&דעה - - - The Bitcoin address to sign the message with - כתובת הביטקוין ×תה ×œ×—×ª×•× ×תה ×ת ההודעה - - - Choose previously used address - בחירת כתובת שהייתה בשימוש - - - Alt+A - Alt+A - - - Paste address from clipboard - הדבקת כתובת מלוח ×”×’×–×™×¨×™× - - - Alt+P - Alt+P - - - Enter the message you want to sign here - יש להוסיף ×›×ן ×ת ההודעה עליה ×œ×—×ª×•× - - - Signature - חתימה - - - Copy the current signature to the system clipboard - העתקת החתימה הנוכחית ללוח ×”×’×–×™×¨×™× - - - Sign the message to prove you own this Bitcoin address - ניתן ×œ×—×ª×•× ×¢×œ ההודעה כדי להוכיח שכתובת הביטקוין הזו בבעלותך. - - - Sign &Message - &חתימה על הודעה - - - Reset all sign message fields - ×יפוס כל שדות החתימה על הודעה - - - Clear &All - &ניקוי הכול - - - &Verify Message - &×ימות הודעה - - - The Bitcoin address the message was signed with - כתובת הביטקוין ש×תה נחתמה ההודעה - - - Verify the message to ensure it was signed with the specified Bitcoin address - ניתן ל×מת ×ת ההודעה כדי להבטיח ×©×”×™× × ×—×ª×ž×” ×¢× ×›×ª×•×‘×ª הביטקוין הנתונה - - - Verify &Message - &×ימות הודעה - - - Reset all verify message fields - ×יפוס כל שדות ×ימות ההודעה - - - Click "Sign Message" to generate signature - יש ללחוץ על „חתימה על ההודעה“ כדי לחולל חתימה - - - The entered address is invalid. - הכתובת שהוכנסה ××™× ×” תקינה. - - - Please check the address and try again. - × × ×œ×‘×“×•×§ ×ת הכתובת לנסות שנית. - - - The entered address does not refer to a key. - הכתובת שהוכנסה ××™× ×” מתייחסת למפתח. - - - Wallet unlock was cancelled. - פתיחת ×”×רנק בוטלה. - - - Private key for the entered address is not available. - המפתח הפרטי עבור הכתובת שהוכנסה ×ינו זמין. - - - Message signing failed. - החתימה על ההודעה נכשלה. - - - Message signed. - ההודעה נחתמה. - - - The signature could not be decoded. - ×œ× × ×™×ª×Ÿ לפענח ×ת החתימה. - - - Please check the signature and try again. - × × ×œ×‘×“×•×§ ×ת החתימה ולנסות שנית. - - - The signature did not match the message digest. - החתימה ×œ× ×ª×•×מת ×ת תקציר ההודעה. - - - Message verification failed. - ×ימות ההודעה נכשל. - - - Message verified. - ההודעה ×ומתה. - - - - SplashScreen - - Bitcoin Core - ליבת ביטקוין - - - The Bitcoin Core developers - מתכנתי ליבת ביטקוין - - - [testnet] - [רשת-בדיקה] - - - - TrafficGraphWidget - - KB/s - ק״ב/ש׳ - - - - TransactionDesc - - Open until %1 - פתוחה עד %1 - - - conflicted - מתנגש - - - %1/offline - %1/מנותק - - - %1/unconfirmed - %1/המתנה ל×ישור - - - %1 confirmations - %1 ××™×©×•×¨×™× - - - Status - מצב - - - Date - ת×ריך - - - Source - מקור - - - Generated - נוצר - - - From - מ×ת - - - To - ×ל - - - own address - כתובת עצמית - - - watch-only - צפייה בלבד - - - label - תווית - - - Credit - זיכוי - - - not accepted - ×œ× ×”×ª×§×‘×œ - - - Debit - חיוב - - - Total debit - סך כל החיוב - - - Total credit - סך כל ×”×שר××™ - - - Transaction fee - עמלת העברה - - - Net amount - כמות × ×§×™×™×” - - - Message - הודעה - - - Comment - הערה - - - Transaction ID - מזהה העברה - - - Merchant - סוחר - - - Generated coins must mature %1 blocks before they can be spent. When you generated this block, it was broadcast to the network to be added to the block chain. If it fails to get into the chain, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - מטבעות ×—×“×©×™× ×©× ×•×¦×¨×• ×—×™×™×‘×™× ×œ×”×‘×©×™×œ במשך %1 ×ž×§×˜×¢×™× ×œ×¤× ×™ שניתן לנצל ×ות×. כשמקטע ×–×” נוצר ×”×•× ×ž×©×•×“×¨ ברשת על מנת שייכנס לשרשרת המקטעי×. ×× ×”×•× ×œ× ×™×™×›× ×¡ לשרשרת, מצבו ישתנה ×œâ€ž×œ× ×”×ª×§×‘×œâ€œ ×•×œ× × ×™×ª×Ÿ ×™×”×™×” לנצלו. מצב ×›×–×” יכול לקרות מדי ×¤×¢× ×× ×‘×ž×§×¨×” מפרק ×חר יצר מקטע בהבדל של שניות בודדות ממך. - - - Debug information - מידע ניפוי - - - Transaction - העברה - - - Inputs - ×§×œ×˜×™× - - - Amount - כמות - - - true - ×מת - - - false - שקר - - - , has not been successfully broadcast yet - , ×˜×¨× ×©×•×“×¨ בהצלחה - - - unknown - ×œ× ×™×“×•×¢ - - - - TransactionDescDialog - - Transaction details - פרטי ההעברה - - - This pane shows a detailed description of the transaction - חלונית זו מציגה תי×ור מפורט של ההעברה - - - - TransactionTableModel - - Date - ת×ריך - - - Type - סוג - - - Immature (%1 confirmations, will be available after %2) - ×œ× ×‘×©×œ (%1 ×ישורי×, יהיו ×–×ž×™× ×™× ×œ×חר %2) - - - Open until %1 - פתוחה עד %1 - - - Confirmed (%1 confirmations) - מ×ושר (%1 ×ישורי×) - - - This block was not received by any other nodes and will probably not be accepted! - המקטע ×”×–×” ×œ× × ×§×œ×˜ על ידי ××£ מפרק ×חר, וכנר××” ×œ× ×™×ª×§×‘×œ! - - - Generated but not accepted - נוצר ×ך ×œ× ×”×ª×§×‘×œ - - - Offline - מנותק - - - Label - תווית - - - Unconfirmed - ×œ×œ× ×ישור - - - Confirming (%1 of %2 recommended confirmations) - מתקבל ×ישור (%1 מתוך %2 ××™×©×•×¨×™× ×ž×•×ž×œ×¦×™×) - - - Conflicted - מתנגש - - - Received with - התקבל ×¢× - - - Received from - התקבל מ×ת - - - Sent to - נשלח ×ל - - - Payment to yourself - ×ª×©×œ×•× ×œ×¢×¦×ž×š - - - Mined - נכרה - - - watch-only - צפייה בלבד - - - (n/a) - (×œ× ×–×ž×™×Ÿ) - - - Transaction status. Hover over this field to show number of confirmations. - מצב ההעברה. יש להמתין ×¢× ×”×¡×ž×Ÿ מעל שדה ×–×” כדי לר×ות ×ת מספר ×”×ישורי×. - - - Date and time that the transaction was received. - הת×ריך והשעה בה ההעברה ×”×–×ת התקבלה. - - - Type of transaction. - סוג ההעברה. - - - Whether or not a watch-only address is involved in this transaction. - ×”×× ×›×ª×•×‘×•×ª לצפייה בלבד מעורבות בהעברה ×–×ת ×ו של×. - - - Amount removed from or added to balance. - הכמות שהתווספה ×ו הוסרה מהיתרה. - - - - TransactionView - - All - הכול - - - Today - ×”×™×•× - - - This week - השבוע - - - This month - החודש - - - Last month - החודש שעבר - - - This year - השנה - - - Range... - טווח… - - - Received with - התקבל ×¢× - - - Sent to - נשלח ×ל - - - To yourself - לעצמך - - - Mined - נכרה - - - Other - ×חר - - - Enter address or label to search - × × ×œ×”×›× ×™×¡ כתובת ×ו תווית לחיפוש - - - Min amount - כמות מזערית - - - Copy address - העתקת כתובת - - - Copy label - העתקת תווית - - - Copy amount - העתקת כמות - - - Copy transaction ID - העתקת מזהה העברה - - - Edit label - עריכת תווית - - - Show transaction details - הצגת פרטי העברה - - - Export Transaction History - ×™×¦×•× ×”×™×¡×˜×•×¨×™×™×ª העברות - - - Watch-only - צפייה בלבד - - - Exporting Failed - ×”×™×¦×•× × ×›×©×œ - - - There was an error trying to save the transaction history to %1. - ×ירעה שגי××” בעת ניסיון לשמור ×ת היסטוריית ההעברות ×ל %1. - - - Exporting Successful - ×”×™×¦×•× ×‘×•×¦×¢ בהצלחה - - - The transaction history was successfully saved to %1. - היסטוריית ההעברות נשמרה ל־%1 בהצלחה. - - - Comma separated file (*.csv) - קובץ מופרד ×‘×¤×¡×™×§×™× (‎*.csv) - - - Confirmed - מ×ושר - - - Date - ת×ריך - - - Type - סוג - - - Label - תווית - - - Address - כתובת - - - ID - מזהה - - - Range: - טווח: - - - to - ×ל - - - - UnitDisplayStatusBarControl - - Unit to show amounts in. Click to select another unit. - יחידת המידה להצגת הסכומי×. יש ללחוץ כדי לבחור ביחידת מידה ×חרת. - - - - WalletFrame - - No wallet has been loaded. - ×œ× × ×˜×¢×Ÿ ×רנק - - - - WalletModel - - Send Coins - שליחת מטבעות - - - - WalletView - - &Export - ×™&×¦×•× - - - Export the data in the current tab to a file - ×™×¦×•× ×”× ×ª×•× ×™× ×ž×”×œ×©×•× ×™×ª הנוכחית לקובץ - - - Backup Wallet - גיבוי ×רנק - - - Wallet Data (*.dat) - נתוני ×רנק (‎*.dat) - - - Backup Failed - גיבוי נכשל - - - There was an error trying to save the wallet data to %1. - ×ירעה שגי××” בעת ניסיון לשמירת נתוני ×”×רנק ×ל %1. - - - The wallet data was successfully saved to %1. - נתוני ×”×רנק נשמרו בהצלחה ×ל %1. - - - Backup Successful - הגיבוי ×”×•×©×œ× ×‘×”×¦×œ×—×” - - - - bitcoin-core - - Options: - ×פשרויות: - - - Specify data directory - ציון תיקיית × ×ª×•× ×™× - - - Connect to a node to retrieve peer addresses, and disconnect - יש להתחבר למפרק כדי לדלות כתובות ×¢×ž×™×ª×™× ×•××– להתנתק - - - Specify your own public address - × × ×œ×¦×™×™×Ÿ ×ת הכתובת הפומבית שלך - - - Accept command line and JSON-RPC commands - קבלת פקודות משורת הפקודה ומ־JSON-RPC - - - Run in the background as a daemon and accept commands - ריצה כסוכן ברקע וקבלת פקודות - - - Use the test network - שימוש ברשת הבדיקה - - - Accept connections from outside (default: 1 if no -proxy or -connect) - קבלת ×—×™×‘×•×¨×™× ×ž×‘×—×•×¥ (בררת מחדל: 1 ×œ×œ× â€Ž-proxy ×ו ‎-connect) - - - Bind to given address and always listen on it. Use [host]:port notation for IPv6 - להת×גד לכתובת נתונה לה×זין לה תמיד. יש להשתמש בצורה ‎[host]:port עבור IPv6. - - - Delete all wallet transactions and only recover those parts of the blockchain through -rescan on startup - מחיקת כל העברות ×”×רנק ולשחזר רק ×ת ×”×—×œ×§×™× ×”×ž×¡×•×™×ž×™× ×‘×©×¨×©×¨×ª ×”×ž×§×˜×¢×™× ×‘×מצעות ‎-rescan ×¢× ×”×”×¤×¢×œ×” - - - Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) - ביצוע פקודה ×›×שר העברה ב×רנק משתנה (%s ב־cmd יוחלף ב־TxID) - - - This is a pre-release test build - use at your own risk - do not use for mining or merchant applications - זוהי בניית ניסיון טרו×-שחרור - השימוש בה על ×חריותך - ×ין להשתמש לצורך כריה ×ו יישומי מסחר - - - Unable to bind to %s on this computer. Bitcoin Core is probably already running. - ×œ× × ×™×ª×Ÿ להת×גד ×ל %s במחשב ×–×”. כנר××” שליבת ביטקוין כבר פועלת. - - - Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. - ×זהרה: ‎-paytxfee נקבע לערך מ×ד גבוה! זוהי עמלת הפעולה ×©×ª×©×•×œ× ×‘×¢×ª העברת שליחה. - - - Warning: The network does not appear to fully agree! Some miners appear to be experiencing issues. - ×זהרה: נר××” ×©×œ× ×›×œ הרשת מסכימה! נר××” ×©×™×©× × ×›×•×¨×™× ×©× ×ª×§×œ×™× ×‘×‘×¢×™×•×ª. - - - Warning: We do not appear to fully agree with our peers! You may need to upgrade, or other nodes may need to upgrade. - ×זהרה: נר××” שישנה ×י־הסכמה בינינו לבין ש×ר ×”×¢×ž×™×ª×™× ×©×œ× ×•! יתכן שעדיף לשדרג ×ו שכל ש×ר ×”×¢×ž×™×ª×™× ×¦×¨×™×›×™× ×œ×©×“×¨×’. - - - Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. - ×זהרה: שגי××” בקרי×ת wallet.dat! כל המפתחות נקר×ו ב×ופן תקין, ×ך נתוני ההעברות ×ו ספר הכתובות ×¢×œ×•×œ×™× ×œ×”×™×•×ª ×—×¡×¨×™× ×ו שגויי×. - - - 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. - ×זהרה: הקובץ wallet.dat הושחת, המידע חולץ! קובץ ×”Ö¾wallet.dat המקורי נשמר ×‘×©× wallet.{timestamp}.bak ×‘×ž×™×§×•× %s; ×× ×”×ž×זן ×ו ההעברות ×©×’×•×™×™× ×¢×œ×™×š לשחזר גיבוי. - - - (default: 1) - (בררת מחדל: 1) - - - <category> can be: - <קטגוריה> יכולה להיות: - - - Attempt to recover private keys from a corrupt wallet.dat - נסה לשחזר מפתחות ×¤×¨×˜×™×™× ×ž×§×•×‘×¥ wallet.dat מושחת. - - - Block creation options: - ×פשרויות יצירת מקטע: - - - Connect only to the specified node(s) - התחבר רק ×œ×¦×ž×ª×™× ×”×ž×¦×•×™× ×™× - - - Connection options: - הגדרות חיבור: - - - Corrupted block database detected - התגלה מסד נתוני ×ž×§×˜×¢×™× ×œ× ×ª×§×™×Ÿ - - - Debugging/Testing options: - ×פשרויות ניפוי/בדיקה: - - - Do not load the wallet and disable wallet RPC calls - ×œ× ×œ×˜×¢×•×Ÿ ×ת ×”×רנק ולנטרל קרי×ות RPC - - - Do you want to rebuild the block database now? - ×”×× ×œ×‘× ×•×ª מחדש ×ת מסד נתוני המקטעי×? - - - Error initializing block database - שגי××” ב×תחול מסד נתוני ×”×ž×§×˜×¢×™× - - - Error initializing wallet database environment %s! - שגי××” ב×תחול סביבת מסד נתוני ×”××¨× ×§×™× %s! - - - Error loading block database - שגי××” בטעינת מסד נתוני ×”×ž×§×˜×¢×™× - - - Error opening block database - שגי××” בטעינת מסד נתוני ×”×ž×§×˜×¢×™× - - - Error: Disk space is low! - שגי××”: מעט ×ž×§×•× ×¤× ×•×™ בכונן! - - - Failed to listen on any port. Use -listen=0 if you want this. - ×”××–× ×” נכשלה בכל פורט. השתמש ב- -listen=0 ×× ×‘×¨×¦×•× ×š בכך. - - - If <category> is not supplied, output all debugging information. - ×× ×œ× ×¡×•×¤×§×” <קטגוריה> יש ×œ×™×™×¦× ×ת כל פרטי הניפוי. - - - Importing... - מתבצע יבו×… - - - Incorrect or no genesis block found. Wrong datadir for network? - מקטע הפתיח ×”×•× ×©×’×•×™ ×ו ×œ× × ×ž×¦×. תיקיית × ×ª×•× ×™× ×©×’×•×™×” עבור הרשת? - - - Invalid -onion address: '%s' - כתובת onion- שגויה: '%s' - - - Not enough file descriptors available. - ×ין מספיק מידע על הקובץ - - - Only connect to nodes in network <net> (ipv4, ipv6 or onion) - תמיד להתחבר ×œ×ž×¤×¨×§×™× ×‘×¨×©×ª <net>†(ipv4,†ipv6 ×ו onion) - - - Set database cache size in megabytes (%d to %d, default: %d) - הגדרת גודל מטמון מסדי ×”× ×ª×•× ×™× ×‘×ž×’×” ×‘×ª×™× (%d עד %d, בררת מחדל: %d) - - - Set maximum block size in bytes (default: %d) - הגדרת קובץ מקטע מרבי ×‘×‘×ª×™× (בררת מחדל: %d) - - - Specify wallet file (within data directory) - ציון קובץ ×רנק (בתוך תיקיית הנתוני×) - - - Verifying blocks... - ×”×ž×§×˜×¢×™× ×ž×ומתי×… - - - Verifying wallet... - ×”×רנק מ×ומת… - - - Wallet %s resides outside data directory %s - ×”×רנק %s יושב מחוץ לתיקיית ×”× ×ª×•× ×™× %s - - - Wallet options: - ×פשרויות ×”×רנק: - - - You need to rebuild the database using -reindex to change -txindex - עליך לבנות מחדש ×ת מסד ×”× ×ª×•× ×™× ×ª×•×š שימוש ב־‎-reindex על מנת לשנות ×ת ‎-txindex - - - Imports blocks from external blk000??.dat file - מיוב××™× ×ž×§×˜×¢×™× ×ž×§×•×‘×¦×™ blk000??.dat ×—×™×¦×•× ×™×™× - - - Execute command when a relevant alert is received or we see a really long fork (%s in cmd is replaced by message) - הרץ פקודה ×›×שר ההתר××” הרלוונטית מתקבלת ×ו כש×נחנו ×¢×“×™× ×œ×¤×™×¦×•×œ ×רוך מ×וד (%s בשורת הפקודה יוחלף ×¢"×™ ההודעה) - - - Warning: Please check that your computer's date and time are correct! If your clock is wrong Bitcoin Core will not work properly. - ×זהרה: × × ×œ×‘×“×•×§ שהת×ריך והשעה של המחשב שלך נכוני×! ×× ×”×©×¢×•×Ÿ שלך שגוי ליבת ביטקוין ×œ× ×ª×¢×‘×•×“ כר×וי. - - - Cannot resolve -whitebind address: '%s' - ×œ× × ×™×ª×Ÿ לפתור ×ת הכתובת ‎-whitebind:†'%s' - - - Choose data directory on startup (default: 0) - בחירת תיקיית × ×ª×•× ×™× ×¢× ×”×”×¤×¢×œ×” (בררת מחדל: 0) - - - Connect through SOCKS5 proxy - התחברות דרך מתווך SOCKS5 - - - Copyright (C) 2009-%i The Bitcoin Core Developers - כל הזכויות שמורות (C)†2009â€-%i מתכנתי ליבת ביטקוין - - - Could not parse -rpcbind value %s as network address - ×œ× × ×™×ª×Ÿ לנתח ×ת הערך של ‎-rpcbind שצוין בתור %s ככתובת רשת - - - Error loading wallet.dat: Wallet requires newer version of Bitcoin Core - ×ירעה שגי××” בטעינת wallet.dat: ×”×רנק דורש גרסה חדשה יותר של ליבת ביטקוין - - - Error: Unsupported argument -tor found, use -onion. - שגי××”: × ×ž×¦× ×רגומנט בלתי נתמך ‎-tor, יש להשתמש ב־‎-onion. - - - Fee (in BTC/kB) to add to transactions you send (default: %s) - עמלה (ב־BTC/ק״ב) להוספה להעברות שנשלחות ממך (בררת מחדל: %s) - - - Information - מידע - - - Initialization sanity check failed. Bitcoin Core is shutting down. - בדיקת התקינות ההתחלתית נכשלה. ליבת ביטקוין תיסגר כעת. - - - Invalid amount for -minrelaytxfee=<amount>: '%s' - כמות ×œ× ×ª×§×™× ×” עבור -paytxfee=<amount>: '%s' - - - Invalid amount for -mintxfee=<amount>: '%s' - כמות ×œ× ×ª×§×™× ×” עבור ‎-mintxfee=<amount>‎:†'%s' - - - Invalid amount for -paytxfee=<amount>: '%s' (must be at least %s) - כמות ×œ× ×ª×§×™× ×” עבור ‎-paytxfee=<amount>‎:†'%s' (חייבת להיות לפחות %s) - - - Invalid netmask specified in -whitelist: '%s' - מסכת הרשת שצוינה ×¢× â€Ž-whitelist שגויה: '%s' - - - Need to specify a port with -whitebind: '%s' - עליך לציין פתחה ×¢× â€Ž-whitebind:†'%s' - - - Node relay options: - ×פשרויות ממסר מפרק: - - - RPC SSL options: (see the Bitcoin Wiki for SSL setup instructions) - ×פשרויות RPC SSL: (× × ×œ×¢×™×™×Ÿ בוויקי של ביטקוין לקבלת הנחיות על הגדרת SSL) - - - RPC server options: - הגדרות שרת RPC - - - Send trace/debug info to console instead of debug.log file - שלח מידע דיב××’ ועקבה לקונסולה ×‘×ž×§×•× ×œ×§×•×‘×¥ debug.log - - - Set SSL root certificates for payment request (default: -system-) - הגדרות ×ישורי בסיס של SSL לבקשות ×ª×©×œ×•× (בררת המחדל: -מערכת-) - - - Set language, for example "de_DE" (default: system locale) - הגדרת שפה, למשל „he_il“ (בררת מחדל: שפת המערכת) - - - Show all debugging options (usage: --help -help-debug) - הצגת כל ×פשרויות הניפוי (שימוש: ‎--help -help-debug) - - - Show splash screen on startup (default: 1) - הצגת מסך פתיחה בעת הפעלה (בררת מחדל: 1) - - - Shrink debug.log file on client startup (default: 1 when no -debug) - כיווץ הקובץ debug.log בהפעלת הלקוח (בררת מחדל: 1 ×œ×œ× â€Ž-debug) - - - Signing transaction failed - החתימה על ההעברה נכשלה - - - Start minimized - התחלה במצב ממוזער - - - This is experimental software. - זוהי תכנית נסיונית. - - - Transaction amount too small - ×¡×›×•× ×”×”×¢×‘×¨×” קטן מדי - - - Transaction amounts must be positive - סכומי ההעברות ×—×™×™×‘×™× ×œ×”×™×•×ª ×—×™×•×‘×™×™× - - - Transaction too large - ×¡×›×•× ×”×”×¢×‘×¨×” גדול מדי - - - Unable to bind to %s on this computer (bind returned error %s) - ×œ× × ×™×ª×Ÿ להת×גד ×¢× ×”×¤×ª×—×” %s במחשב ×–×” (פעולת ×”×יגוד החזירה ×ת השגי××” %s) - - - Use UPnP to map the listening port (default: 1 when listening) - יש להשתמש ב־UPnP כדי למפות ×ת הפתחה לה××–× ×” (בררת מחדל: 1 בעת ×”××–× ×”) - - - Username for JSON-RPC connections - ×©× ×ž×©×ª×ž×© לחיבורי JSON-RPC - - - Wallet needed to be rewritten: restart Bitcoin Core to complete - יש לכתוב ×ת ×”×רנק מחדש: × × ×œ×”×¤×¢×™×œ ×ת ליבת ביטקוין מחדש כדי ×œ×”×©×œ×™× ×ת הפעולה - - - Warning - ×זהרה - - - Warning: Unsupported argument -benchmark ignored, use -debug=bench. - ×זהרה: ×”×רגומנט ש×ינו נתמך עוד ‎-benchmark ×œ× ×”×•×¤×¢×œ, × × ×œ×”×©×ª×ž×© ב־‎-debug=bench. - - - Warning: Unsupported argument -debugnet ignored, use -debug=net. - ×זהרה: ×”×רגומנט ש×ינו נתמך עוד ‎-debugnet ×œ× ×”×•×¤×¢×œ, × × ×œ×”×©×ª×ž×© ב־‎-debug=net. - - - on startup - ×¢× ×”×”×¤×¢×œ×” - - - wallet.dat corrupt, salvage failed - קובץ wallet.dat מושחת, החילוץ נכשל - - - Password for JSON-RPC connections - ססמה לחיבורי JSON-RPC - - - Execute command when the best block changes (%s in cmd is replaced by block hash) - יש לבצע פקודה זו כשהמקטע הטוב ביותר משתנה (%s בפקודה יוחלף בגיבוב המקטע) - - - Upgrade wallet to latest format - שדרוג ×”×רנק למבנה העדכני - - - Rescan the block chain for missing wallet transactions - יש לסרוק מחדש ×ת שרשרת ×”×ž×§×˜×¢×™× ×œ×ž×¦×™×ת העברות חסרות ב×רנק - - - Use OpenSSL (https) for JSON-RPC connections - שימוש ב־OpenSSL (https)‎ עבור חיבורי JSON-RPC - - - This help message - הודעת העזרה הזו - - - Allow DNS lookups for -addnode, -seednode and -connect - הפעלת בדיקת DNS עבור ‎-addnode,†‎-seednode ו־‎-connect - - - Loading addresses... - הכתובות בטעינה… - - - Error loading wallet.dat: Wallet corrupted - שגי××” בטעינת הקובץ wallet.dat: ×”×רנק מושחת - - - Error loading wallet.dat - שגי××” בטעינת הקובץ wallet.dat - - - Invalid -proxy address: '%s' - כתובת ‎-proxy ×œ× ×ª×§×™× ×”: '%s' - - - Unknown network specified in -onlynet: '%s' - רשת ×œ× ×™×“×•×¢×” צוינה דרך ‎-onlynet:†'%s' - - - Cannot resolve -bind address: '%s' - ×œ× × ×™×ª×Ÿ לפתור ×ת הכתובת ‎-bind:†'%s' - - - Cannot resolve -externalip address: '%s' - ×œ× × ×™×ª×Ÿ לפתור ×ת הכתובת ‎-externalip:†'%s' - - - Invalid amount for -paytxfee=<amount>: '%s' - כמות ×œ× ×ª×§×™× ×” עבור ‎-paytxfee=<amount>‎:†'%s' - - - Insufficient funds - ×ין מספיק ×›×¡×¤×™× - - - Loading block index... - מפתח ×”×ž×§×˜×¢×™× × ×˜×¢×Ÿâ€¦ - - - Add a node to connect to and attempt to keep the connection open - הוספת מפרק להתחברות ולנסות לשמור על החיבור פתוח - - - Loading wallet... - ×”×רנק בטעינה… - - - Cannot downgrade wallet - ×œ× × ×™×ª×Ÿ להחזיר ×ת גרסת ×”×רנק - - - Cannot write default address - ×œ× × ×™×ª×Ÿ לכתוב ×ת כתובת בררת המחדל - - - Rescanning... - סריקה מחדש… - - - Done loading - טעינה הושלמה - - - Error - שגי××” - - - \ No newline at end of file diff --git a/src/qt/locale/bitcoin_hi_IN.ts b/src/qt/locale/bitcoin_hi_IN.ts deleted file mode 100644 index 01e074ffc..000000000 --- a/src/qt/locale/bitcoin_hi_IN.ts +++ /dev/null @@ -1,861 +0,0 @@ - - - AddressBookPage - - Create a new address - नया पता लिखिठ! - - - Copy the currently selected address to the system clipboard - चà¥à¤¨à¤¿à¤¨à¥à¤¦à¤¾ पते को सिसà¥à¤Ÿà¤® कà¥à¤²à¤¿à¤ªà¤¬à¥‹à¤°à¥à¤¡ पर कापी करे ! - - - &Copy Address - &पता कॉपी करे - - - &Delete - &मिटाठ!! - - - Copy &Label - &लेबल कॉपी करे - - - &Edit - &à¤à¤¡à¤¿à¤Ÿ - - - Comma separated file (*.csv) - Comma separated file (*.csv) - - - - AddressTableModel - - Label - लेबल - - - Address - पता - - - (no label) - (कोई लेबल नही !) - - - - AskPassphraseDialog - - Enter passphrase - पहचान शबà¥à¤¦/अकà¥à¤·à¤° डालिठ! - - - New passphrase - नया पहचान शबà¥à¤¦/अकà¥à¤·à¤° डालिठ! - - - Repeat new passphrase - दोबारा नया पहचान शबà¥à¤¦/अकà¥à¤·à¤° डालिठ! - - - Encrypt wallet - à¤à¤¨à¤•à¥à¤°à¤¿à¤ªà¥à¤Ÿ वॉलेट ! - - - This operation needs your wallet passphrase to unlock the wallet. - वॉलेट खोलने के आपका वॉलेट पहचान शबà¥à¤¦à¥â€Œ/अकà¥à¤·à¤° चाईठ! - - - Unlock wallet - वॉलेट खोलिठ- - - This operation needs your wallet passphrase to decrypt the wallet. - वॉलेट डीकà¥à¤°à¤¿à¤ªà¥à¤Ÿ( विकोड) करने के लिठआपका वॉलेट पहचान शबà¥à¤¦à¥â€Œ/अकà¥à¤·à¤° चाईठ! - - - Decrypt wallet - डीकà¥à¤°à¤¿à¤ªà¥à¤Ÿ वॉलेट - - - Change passphrase - पहचान शबà¥à¤¦/अकà¥à¤·à¤° बदलिये ! - - - Confirm wallet encryption - वॉलेट à¤à¤¨à¤•à¥à¤°à¤¿à¤ªà¤¶à¤¨ को पà¥à¤°à¤®à¤¾à¤£à¤¿à¤¤ कीजिठ! - - - Wallet encrypted - वॉलेट à¤à¤¨à¤•à¥à¤°à¤¿à¤ªà¥à¤Ÿ हो गया ! - - - Wallet encryption failed - वॉलेट à¤à¤¨à¤•à¥à¤°à¤¿à¤ªà¥à¤Ÿ नही हà¥à¤†! - - - Wallet encryption failed due to an internal error. Your wallet was not encrypted. - वॉलेट à¤à¤¨à¤•à¥à¤°à¤¿à¤ªà¤¶à¤¨ नाकाम हो गया इंटरà¥à¤¨à¤² à¤à¤°à¤° की वजह से! आपका वॉलेट à¤à¤¨à¤•à¥à¤°à¥€à¤ªà¤¤ नही हà¥à¤† है! - - - The supplied passphrases do not match. - आपके दà¥à¤µà¤¾à¤°à¤¾ डाले गये पहचान शबà¥à¤¦/अकà¥à¤·à¤° मिलते नही है ! - - - Wallet unlock failed - वॉलेट का लॉक नही खà¥à¤²à¤¾ ! - - - The passphrase entered for the wallet decryption was incorrect. - वॉलेट डीकà¥à¤°à¤¿à¤ªà¥à¤Ÿ करने के लिठजो पहचान शबà¥à¤¦/अकà¥à¤·à¤° डाले गये है वो सही नही है! - - - Wallet decryption failed - वॉलेट का डीकà¥à¤°à¤¿à¤ªà¥à¤Ÿ-षà¥à¤£ असफल ! - - - - BitcoinGUI - - Synchronizing with network... - नेटवरà¥à¤• से समकालिक (मिल) रहा है ... - - - &Overview - &विवरण - - - Show general overview of wallet - वॉलेट का सामानया विवरण दिखाठ! - - - &Transactions - & लेन-देन - - - - Browse transaction history - देखिठपà¥à¤°à¤¾à¤¨à¥‡ लेन-देन के विवरण ! - - - E&xit - बाहर जायें - - - Quit application - अपà¥à¤²à¤¿à¤•ेशन से बाहर निकलना ! - - - &Options... - &विकलà¥à¤ª - - - &Backup Wallet... - &बैकप वॉलेट - - - Change the passphrase used for wallet encryption - पहचान शबà¥à¤¦/अकà¥à¤·à¤° जो वॉलेट à¤à¤¨à¤•à¥à¤°à¤¿à¤ªà¤¶à¤¨ के लिठइसà¥à¤¤à¥‡à¤®à¤¾à¤² किया है उसे बदलिà¤! - - - Bitcoin - बीटकोइन - - - Wallet - वॉलेट - - - &File - &फाइल - - - &Settings - &सेटà¥à¤Ÿà¤¿à¤‚गà¥à¤¸ - - - &Help - &मदद - - - Tabs toolbar - टैबस टूलबार - - - %1 behind - %1 पीछे - - - Error - भूल - - - Warning - चेतावनी - - - Information - जानकारी - - - Up to date - नवीनतम - - - Sent transaction - भेजी टà¥à¤°à¤¾à¤‚जकà¥à¤¶à¤¨ - - - Incoming transaction - पà¥à¤°à¤¾à¤ªà¥à¤¤ हà¥à¤ˆ टà¥à¤°à¤¾à¤‚जकà¥à¤¶à¤¨ - - - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - वॉलेट à¤à¤¨à¥à¤•à¥à¤°à¤¿à¤ªà¥à¤Ÿà¥‡à¤¡ है तथा अभी लॉकà¥à¤¡ नहीं है - - - Wallet is <b>encrypted</b> and currently <b>locked</b> - वॉलेट à¤à¤¨à¥à¤•à¥à¤°à¤¿à¤ªà¥à¤Ÿà¥‡à¤¡ है तथा अभी लॉकà¥à¤¡ है - - - - ClientModel - - - CoinControlDialog - - Amount: - राशि : - - - Amount - राशि - - - Date - taareek - - - Confirmed - पकà¥à¤•ा - - - Copy address - पता कॉपी करे - - - Copy label - लेबल कॉपी करे - - - Copy amount - कॉपी राशि - - - (no label) - (कोई लेबल नही !) - - - - EditAddressDialog - - Edit Address - पता à¤à¤¡à¤¿à¤Ÿ करना - - - &Label - &लेबल - - - &Address - &पता - - - New receiving address - नया सà¥à¤µà¥€à¤•ारà¥à¤¯ पता - - - New sending address - नया भेजने वाला पता - - - Edit receiving address - à¤à¤¡à¤¿à¤Ÿ सà¥à¤µà¥€à¤•ारà¥à¤¯ पता - - - Edit sending address - à¤à¤¡à¤¿à¤Ÿ भेजने वाला पता - - - The entered address "%1" is already in the address book. - डाला गया पता "%1" à¤à¤¡à¥à¤°à¥‡à¤¸ बà¥à¤• में पहले से ही मोजूद है| - - - Could not unlock wallet. - वॉलेट को unlock नहीं किया जा सकता| - - - New key generation failed. - नयी कà¥à¤‚जी का निरà¥à¤®à¤¾à¤£ असफल रहा| - - - - FreespaceChecker - - - HelpMessageDialog - - version - संसà¥à¤•रण - - - Usage: - खपत : - - - - Intro - - Error - भूल - - - - OpenURIDialog - - - OptionsDialog - - Options - विकलà¥à¤ª - - - &OK - &ओके - - - &Cancel - &कैनà¥à¤¸à¤² - - - - OverviewPage - - Form - फारà¥à¤® - - - - PaymentServer - - - PeerTableModel - - - QObject - - Amount - राशि - - - N/A - लागू नही - - - - - QRImageWidget - - - RPCConsole - - N/A - लागू नही - - - - &Information - जानकारी - - - - ReceiveCoinsDialog - - &Label: - लेबल: - - - Copy label - लेबल कॉपी करे - - - Copy amount - कॉपी राशि - - - - ReceiveRequestDialog - - Address - पता - - - Amount - राशि - - - Label - लेबल - - - - RecentRequestsTableModel - - Date - taareek - - - Label - लेबल - - - Amount - राशि - - - (no label) - (कोई लेबल नही !) - - - - SendCoinsDialog - - Send Coins - सिकà¥à¤•े भेजें| - - - Amount: - राशि : - - - Send to multiple recipients at once - à¤à¤• साथ कई पà¥à¤°à¤¾à¤ªà¥à¤¤à¤•रà¥à¤¤à¤¾à¤“ं को भेजें - - - Balance: - बाकी रकम : - - - Confirm the send action - भेजने की पà¥à¤·à¥à¤Ÿà¤¿ करें - - - Confirm send coins - सिकà¥à¤•े भेजने की पà¥à¤·à¥à¤Ÿà¤¿ करें - - - Copy amount - कॉपी राशि - - - The amount to pay must be larger than 0. - भेजा गया अमाउंट शà¥à¤¨à¥à¤¯ से अधिक होना चाहिà¤| - - - (no label) - (कोई लेबल नही !) - - - - SendCoinsEntry - - A&mount: - अमाउंट: - - - Pay &To: - पà¥à¤°à¤¾à¤ªà¥à¤¤à¤•रà¥à¤¤à¤¾: - - - Enter a label for this address to add it to your address book - आपकी à¤à¤¡à¥à¤°à¥‡à¤¸ बà¥à¤• में इस à¤à¤¡à¥à¤°à¥‡à¤¸ के लिठà¤à¤• लेबल लिखें - - - &Label: - लेबल: - - - Alt+A - Alt-A - - - Paste address from clipboard - Clipboard से à¤à¤¡à¥à¤°à¥‡à¤¸ paste करें - - - Alt+P - Alt-P - - - - ShutdownWindow - - - SignVerifyMessageDialog - - Alt+A - Alt-A - - - Paste address from clipboard - Clipboard से à¤à¤¡à¥à¤°à¥‡à¤¸ paste करें - - - Alt+P - Alt-P - - - Signature - हसà¥à¤¤à¤¾à¤•à¥à¤·à¤° - - - - SplashScreen - - [testnet] - [टेसà¥à¤Ÿà¤¨à¥‡à¤Ÿ] - - - - TrafficGraphWidget - - - TransactionDesc - - Open until %1 - खà¥à¤²à¤¾ है जबतक %1 - - - %1/unconfirmed - %1/अपà¥à¤·à¥à¤Ÿ - - - %1 confirmations - %1 पà¥à¤·à¥à¤Ÿà¤¿à¤¯à¤¾à¤ - - - Date - taareek - - - Transaction ID - ID - - - Amount - राशि - - - true - सही - - - false - ग़लत - - - , has not been successfully broadcast yet - , अभी तक सफलतापूरà¥à¤µà¤• पà¥à¤°à¤¸à¤¾à¤°à¤¿à¤¤ नहीं किया गया है - - - unknown - अजà¥à¤žà¤¾à¤¤ - - - - TransactionDescDialog - - Transaction details - लेन-देन का विवरण - - - This pane shows a detailed description of the transaction - ये खिड़की आपको लेन-देन का विसà¥à¤¤à¥ƒà¤¤ विवरण देगी ! - - - - TransactionTableModel - - Date - taareek - - - Type - टाइप - - - Open until %1 - खà¥à¤²à¤¾ है जबतक %1 - - - Confirmed (%1 confirmations) - पकà¥à¤•े ( %1 पकà¥à¤•ा करना) - - - This block was not received by any other nodes and will probably not be accepted! - यह बà¥à¤²à¥‰à¤• किसी भी और नोड को मिला नही है ! शायद यह बà¥à¤²à¥‰à¤• कोई भी नोड सà¥à¤µà¥€à¤•ारे गा नही ! - - - Generated but not accepted - जेनरेट किया गया किंतॠसà¥à¤µà¥€à¤•ारा नही गया ! - - - Label - लेबल - - - Received with - सà¥à¤µà¥€à¤•ार करना - - - Received from - सà¥à¤µà¥€à¤•ारà¥à¤¯ ओर से - - - Sent to - भेजा गया - - - Payment to yourself - भेजा खà¥à¤¦ को भà¥à¤—तान - - - Mined - माइंड - - - (n/a) - (लागू नहीं) - - - Transaction status. Hover over this field to show number of confirmations. - टà¥à¤°à¤¾à¤‚सेकà¥à¤¶à¤¨ सà¥à¤¤à¤¿à¤¥à¤¿| पà¥à¤·à¥à¤Ÿà¤¿à¤¯à¥‹à¤‚ की संखà¥à¤¯à¤¾ जानने के लिठइस जगह पर माउस लायें| - - - Date and time that the transaction was received. - तारीख तथा समय जब ये टà¥à¤°à¤¾à¤‚सेकà¥à¤¶à¤¨ पà¥à¤°à¤¾à¤ªà¥à¤¤ हà¥à¤ˆ थी| - - - Type of transaction. - टà¥à¤°à¤¾à¤‚सेकà¥à¤¶à¤¨ का पà¥à¤°à¤•ार| - - - Amount removed from or added to balance. - अमाउंट बैलेंस से निकला या जमा किया गया | - - - - TransactionView - - All - सभी - - - Today - आज - - - This week - इस हफà¥à¤¤à¥‡ - - - This month - इस महीने - - - Last month - पिछले महीने - - - This year - इस साल - - - Range... - विसà¥à¤¤à¤¾à¤°... - - - Received with - सà¥à¤µà¥€à¤•ार करना - - - Sent to - भेजा गया - - - To yourself - अपनेआप को - - - Mined - माइंड - - - Other - अनà¥à¤¯ - - - Enter address or label to search - ढूà¤à¤¦à¤¨à¥‡ के लिठकृपा करके पता या लेबल टाइप करे ! - - - Min amount - लघà¥à¤¤à¥à¤¤à¤® राशि - - - Copy address - पता कॉपी करे - - - Copy label - लेबल कॉपी करे - - - Copy amount - कॉपी राशि - - - Edit label - à¤à¤¡à¤¿à¤Ÿ लेबल - - - Comma separated file (*.csv) - Comma separated file (*.csv) - - - Confirmed - पकà¥à¤•ा - - - Date - taareek - - - Type - टाइप - - - Label - लेबल - - - Address - पता - - - ID - ID - - - Range: - विसà¥à¤¤à¤¾à¤°: - - - to - तक - - - - UnitDisplayStatusBarControl - - - WalletFrame - - - WalletModel - - Send Coins - सिकà¥à¤•े भेजें| - - - - WalletView - - Backup Wallet - बैकप वॉलेट - - - Wallet Data (*.dat) - वॉलेट डेटा (*.dat) - - - Backup Failed - बैकप असफल - - - Backup Successful - बैकप सफल - - - - bitcoin-core - - Options: - विकलà¥à¤ª: - - - Specify data directory - डेटा डायरेकà¥à¤Ÿà¤°à¥€ बताà¤à¤‚ - - - Run in the background as a daemon and accept commands - बैकगà¥à¤°à¤¾à¤‰à¤‚ड में डेमॉन बन कर रन करे तथा कमांडà¥à¤¸ सà¥à¤µà¥€à¤•ार करें - - - Use the test network - टेसà¥à¤Ÿ नेटवरà¥à¤• का इसà¥à¤¤à¥‡à¤®à¤¾à¤² करे - - - Verifying blocks... - बà¥à¤²à¥‰à¤•à¥à¤¸ जाà¤à¤šà¥‡ जा रहा है... - - - Verifying wallet... - वॉलेट जाà¤à¤šà¤¾ जा रहा है... - - - Information - जानकारी - - - Warning - चेतावनी - - - Loading addresses... - पता पà¥à¤¸à¥à¤¤à¤• आ रही है... - - - Loading block index... - बà¥à¤²à¥‰à¤• इंडेकà¥à¤¸ आ रहा है... - - - Loading wallet... - वॉलेट आ रहा है... - - - Rescanning... - रि-सà¥à¤•ेनी-इंग... - - - Done loading - लोड हो गया| - - - Error - भूल - - - \ No newline at end of file diff --git a/src/qt/locale/bitcoin_hr.ts b/src/qt/locale/bitcoin_hr.ts deleted file mode 100644 index 74d380ec2..000000000 --- a/src/qt/locale/bitcoin_hr.ts +++ /dev/null @@ -1,1904 +0,0 @@ - - - AddressBookPage - - Right-click to edit address or label - Desni klik za ureÄ‘ivanje adresa i oznaka - - - Create a new address - Dodajte novu adresu - - - &New - &Nova - - - Copy the currently selected address to the system clipboard - Kopiraj trenutno odabranu adresu u meÄ‘uspremnik - - - &Copy - &Kopiraj - - - C&lose - &Zatvori - - - &Copy Address - &Kopiraj adresu - - - Delete the currently selected address from the list - Brisanje trenutno odabrane adrese s popisa. - - - Export the data in the current tab to a file - Izvoz podataka iz trenutnog lista u datoteku - - - &Export - &Izvozi - - - &Delete - Iz&briÅ¡i - - - Choose the address to send coins to - Odaberi adresu na koju Å¡aljeÅ¡ novac - - - Choose the address to receive coins with - Odaberi adresu na koju primaÅ¡ novac - - - C&hoose - &Odaberi - - - Sending addresses - Adresa za slanje - - - Receiving addresses - Adresa za primanje - - - These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins. - Ovo su vaÅ¡e Bitcoin adrese za slanje novca. Uvijek provjerite iznos i adresu primatelja prije slanja novca. - - - These are your Bitcoin addresses for receiving payments. It is recommended to use a new receiving address for each transaction. - Ovo su vaÅ¡e Bitcoin adrese za primanje novca. PreporuÄamo da koristite novu adresu za primanje za svaku transakciju. - - - Copy &Label - Kopiraj &oznaku - - - &Edit - &Uredi - - - Export Address List - Izvezi listu adresa - - - Comma separated file (*.csv) - Datoteka podataka odvojenih zarezima (*.csv) - - - Exporting Failed - Izvoz neuspjeÅ¡an - - - There was an error trying to save the address list to %1. Please try again. - DoÅ¡lo je do pogreÅ¡ke kod spremanja liste adresa na %1. Molimo pokuÅ¡ajte ponovno. - - - - AddressTableModel - - Label - Oznaka - - - Address - Adresa - - - (no label) - (bez oznake) - - - - AskPassphraseDialog - - Passphrase Dialog - Dijalog lozinke - - - Enter passphrase - Unesite lozinku - - - New passphrase - Nova lozinka - - - Repeat new passphrase - Ponovite novu lozinku - - - Encrypt wallet - Å ifriranje novÄanika - - - This operation needs your wallet passphrase to unlock the wallet. - Ova operacija treba lozinku vaÅ¡eg novÄanika kako bi se novÄanik otkljuÄao. - - - Unlock wallet - OtkljuÄaj novÄanik - - - This operation needs your wallet passphrase to decrypt the wallet. - Ova operacija treba lozinku vaÅ¡eg novÄanika kako bi se novÄanik deÅ¡ifrirao. - - - Decrypt wallet - DeÅ¡ifriranje novÄanika. - - - Change passphrase - Promjena lozinke - - - Confirm wallet encryption - Potvrdi Å¡ifriranje novÄanika - - - Warning: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR BITCOINS</b>! - Upozorenje: Ako Å¡ifrirate vaÅ¡ novÄanik i izgubite lozinku, <b>IZGUBIT ĆETE SVE SVOJE BITCOINE!</b> - - - Are you sure you wish to encrypt your wallet? - Jeste li sigurni da želite Å¡ifrirati svoj novÄanik? - - - 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. - VAŽNO: Sve prethodne priÄuve vaÅ¡eg novÄanika trebale bi biti zamijenjene novo stvorenom, Å¡ifriranom datotekom novÄanika. Zbog sigurnosnih razloga, prethodne priÄuve neÅ¡ifriranog novÄanika će postati beskorisne Äim poÄnete koristiti novi, Å¡ifrirani novÄanik. - - - Warning: The Caps Lock key is on! - Upozorenje: Tipka Caps Lock je ukljuÄena! - - - Wallet encrypted - NovÄanik Å¡ifriran - - - 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>. - Unesite novu lozinku za novÄanik. <br/>Molimo Vas da koristite zaporku od <b>deset ili viÅ¡e sluÄajnih znakova</b>, ili <b>osam ili viÅ¡e rijeÄi.</b> - - - Enter the old passphrase and new passphrase to the wallet. - Unesite staru i novu lozinku za novÄanik. - - - Wallet encryption failed - Å ifriranje novÄanika nije uspjelo - - - Wallet encryption failed due to an internal error. Your wallet was not encrypted. - Å ifriranje novÄanika nije uspjelo zbog interne pogreÅ¡ke. VaÅ¡ novÄanik nije Å¡ifriran. - - - The supplied passphrases do not match. - Priložene lozinke se ne podudaraju. - - - Wallet unlock failed - OtkljuÄavanje novÄanika nije uspjelo - - - The passphrase entered for the wallet decryption was incorrect. - Lozinka za deÅ¡ifriranje novÄanika nije toÄna. - - - Wallet decryption failed - DeÅ¡ifriranje novÄanika nije uspjelo - - - Wallet passphrase was successfully changed. - Lozinka novÄanika je uspjeÅ¡no promijenjena. - - - - BitcoinGUI - - Sign &message... - P&otpiÅ¡ite poruku... - - - Synchronizing with network... - UsklaÄ‘ivanje s mrežom ... - - - &Overview - &Pregled - - - Node - ÄŒvor - - - Show general overview of wallet - Prikaži opći pregled novÄanika - - - &Transactions - &Transakcije - - - Browse transaction history - Pretraži povijest transakcija - - - E&xit - &Izlaz - - - Quit application - Izlazak iz programa - - - About &Qt - ViÅ¡e o &Qt - - - Show information about Qt - Prikaži informacije o Qt - - - &Options... - Pos&tavke... - - - &Encrypt Wallet... - Å i&friraj novÄanik... - - - &Backup Wallet... - Spremi &kopiju novÄanika... - - - &Change Passphrase... - Promjena &lozinke... - - - &Sending addresses... - Adrese za &slanje - - - &Receiving addresses... - Adrese za &primanje - - - Open &URI... - Otvori &URI... - - - Bitcoin Core client - Bitcoin Core klijent - - - Importing blocks from disk... - Importiranje blokova sa diska... - - - Reindexing blocks on disk... - Re-indeksiranje blokova na disku... - - - Send coins to a Bitcoin address - Slanje novca na bitcoin adresu - - - Backup wallet to another location - Napravite sigurnosnu kopiju novÄanika na drugoj lokaciji - - - Change the passphrase used for wallet encryption - Promijenite lozinku za Å¡ifriranje novÄanika - - - &Debug window - Konzola za dijagnostiku - - - Open debugging and diagnostic console - Otvori konzolu za dijagnostiku - - - &Verify message... - &Potvrdite poruku... - - - Bitcoin - Bitcoin - - - Wallet - NovÄanik - - - &Send - &PoÅ¡alji - - - &Receive - Pri&mi - - - Show information about Bitcoin Core - Prikaži informacije o programu Bitcoin Core - - - &Show / Hide - Po&kaži / Sakrij - - - Show or hide the main Window - Prikaži ili sakrij glavni prozor - - - Encrypt the private keys that belong to your wallet - Å ifriranje privatnih kljuÄeva koji u novÄaniku - - - Sign messages with your Bitcoin addresses to prove you own them - Poruku potpiÅ¡emo s bitcoin adresom, kako bi dokazali vlasniÅ¡tvo nad tom adresom - - - Verify messages to ensure they were signed with specified Bitcoin addresses - Provjeravanje poruke, kao dokaz, da je potpisana navedenom bitcoin adresom - - - &File - &Datoteka - - - &Settings - &Postavke - - - &Help - &Pomoć - - - Tabs toolbar - Traka kartica - - - Bitcoin Core - Bitcoin Core - - - Request payments (generates QR codes and bitcoin: URIs) - Zatraži uplatu (stvara QR kod i bitcoin: URI adresu) - - - &About Bitcoin Core - &O programu Bitcoin Core - - - Modify configuration options for Bitcoin Core - Promijeni postavke programa - - - Show the list of used sending addresses and labels - Prikaži popis koriÅ¡tenih adresa i oznaka za slanje novca - - - Show the list of used receiving addresses and labels - Prikaži popis koriÅ¡tenih adresa i oznaka za primanje novca - - - Open a bitcoin: URI or payment request - Otvori bitcoin: URI adresu ili zahtjev za uplatu - - - &Command-line options - Opcije &naredbene linije - - - Show the Bitcoin Core help message to get a list with possible Bitcoin command-line options - Ispis svih opcija naredbene linije programa sa kratkim opisom - - - %n active connection(s) to Bitcoin network - %n aktivna veza na Bitcoin mrežu%n aktivnih veza na Bitcoin mrežu%n aktivnih veza na Bitcoin mrežu - - - Processed %n block(s) of transaction history. - ObraÄ‘en %n blok povijesti transakcije.ObraÄ‘eno %n bloka povijesti transakcije.ObraÄ‘eno %n blokova povijesti transakcije. - - - %n hour(s) - %n sat%n sata%n sati - - - %n day(s) - %n dan%n dana%n dana - - - %n week(s) - %n tjedan%n tjedna%n tjedana - - - %1 and %2 - %1 i %2 - - - %n year(s) - %n godina%n godine%n godina - - - Last received block was generated %1 ago. - Zadnji primljeni blok je bio ustvaren prije %1. - - - Transactions after this will not yet be visible. - Transakcije izvrÅ¡ene za tim blokom nisu joÅ¡ prikazane. - - - Error - GreÅ¡ka - - - Warning - Upozorenje - - - Information - Informacija - - - Up to date - Ažurno - - - Catching up... - Ažuriranje... - - - Date: %1 - - Datum: %1 - - - - Amount: %1 - - Iznos: %1 - - - - Type: %1 - - Vrsta: %1 - - - - Label: %1 - - Oznaka: %1 - - - - Address: %1 - - Adresa: %1 - - - - Sent transaction - Poslana transakcija - - - Incoming transaction - Dolazna transakcija - - - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - NovÄanik je <b>Å¡ifriran</b> i trenutno <b>otkljuÄan</b> - - - Wallet is <b>encrypted</b> and currently <b>locked</b> - NovÄanik je <b>Å¡ifriran</b> i trenutno <b>zakljuÄan</b> - - - - ClientModel - - - CoinControlDialog - - Coin Selection - Izbor ulaza transakcije - - - Quantity: - KoliÄina: - - - Bytes: - Bajtova: - - - Amount: - Iznos: - - - Priority: - Prioriteta: - - - Fee: - Naknada: - - - Dust: - Prah: - - - Change: - Vraćeno: - - - (un)select all - Izaberi sve/niÅ¡ta - - - Amount - Iznos - - - Received with label - Primljeno pod oznakom - - - Received with address - Primljeno na adresu - - - Date - Datum - - - Confirmations - Broj potvrda - - - Confirmed - PotvrÄ‘eno - - - Priority - Prioriteta - - - Copy address - Kopiraj adresu - - - Copy label - Kopiraj oznaku - - - Copy amount - Kopiraj iznos - - - Copy transaction ID - Kopiraj ID transakcije - - - highest - najviÅ¡a - - - higher - viÅ¡a - - - high - visoka - - - medium-high - srednje visoka - - - medium - srednja - - - low-medium - srednje niska - - - low - niska - - - lower - niža - - - lowest - najniža - - - This label turns red if the transaction size is greater than 1000 bytes. - Oznaka postane crvene boje ako je transakcija veća od 1000 bajtova. - - - This label turns red if the priority is smaller than "medium". - Oznaka postane crvene boje ako je prioriteta transakcije niža od "srednja" - - - This label turns red if any recipient receives an amount smaller than %1. - Oznaka postane crvene boje ako je iznos manji od %1 - - - yes - da - - - no - ne - - - Transactions with higher priority are more likely to get included into a block. - Transakcije viÅ¡e prioritete imaju veću vjerojatnost da budu prije dodane u novi blok. - - - (no label) - (bez oznake) - - - - EditAddressDialog - - Edit Address - Uredi adresu - - - &Label - &Oznaka - - - The label associated with this address list entry - Oznaka bitcoin adrese - - - The address associated with this address list entry. This can only be modified for sending addresses. - Bitcoin adresa. Izmjene adrese su moguće samo za adrese za slanje. - - - &Address - &Adresa - - - New receiving address - Nova adresa za primanje - - - New sending address - Nova adresa za slanje - - - Edit receiving address - Uredi adresu za primanje - - - Edit sending address - Uredi adresu za slanje - - - The entered address "%1" is already in the address book. - Upisana adresa "%1" je već u adresaru. - - - The entered address "%1" is not a valid Bitcoin address. - Upisana adresa "%1" nije valjana bitcoin adresa. - - - Could not unlock wallet. - Ne mogu otkljuÄati novÄanik. - - - New key generation failed. - Stvaranje novog kljuÄa nije uspjelo. - - - - FreespaceChecker - - A new data directory will be created. - Stvoren će biti novi direktorij za podatke. - - - name - ime - - - Cannot create data directory here. - Nije moguće stvoriti direktorij za podatke na tom mjestu. - - - - HelpMessageDialog - - Bitcoin Core - Bitcoin Core - - - version - verzija - - - (%1-bit) - (%1-bit) - - - About Bitcoin Core - O programu Bitcoin Core - - - Command-line options - Opcije programa u naredbenoj liniji - - - Usage: - Upotreba: - - - command-line options - opcije programa u naredbenoj liniji - - - - Intro - - Welcome - DobrodoÅ¡li - - - Welcome to Bitcoin Core. - DobrodoÅ¡li u programu Bitcoin Core. - - - Bitcoin Core - Bitcoin Core - - - Error - GreÅ¡ka - - - - OpenURIDialog - - Open URI - Otvori URI adresu - - - Open payment request from URI or file - Otvori zahtjev za plaćanje iz URI adrese ili datoteke - - - URI: - URI: - - - Select payment request file - Izaberi datoteku zahtjeva za plaćanje - - - Select payment request file to open - Izaberi datoteku zahtjeva za plaćanje - - - - OptionsDialog - - Options - Postavke - - - &Main - &Glavno - - - Size of &database cache - VeliÄina predmemorije baze podataka - - - MB - MB - - - Number of script &verification threads - Broj CPU niti za verifikaciju transakcija - - - Allow incoming connections - Dozvoli povezivanje izvana - - - IP address of the proxy (e.g. IPv4: 127.0.0.1 / IPv6: ::1) - IP adresa proxy servera (npr. IPv4: 127.0.0.1 / IPv6: ::1) - - - Minimize instead of exit the application when the window is closed. When this option is enabled, the application will be closed only after selecting Exit in the menu. - Minimizirati aplikaciju umjesto zatvoriti, kada se zatvori prozor. Kada je ova opcija omogućena, aplikacija će biti zatvorena tek nakon odabira naredbe Izlaz u izborniku. - - - Reset all client options to default. - Nastavi sve postavke programa na poÄetne vrijednosti. - - - &Reset Options - Po&nastavi postavke - - - &Network - &Mreža - - - Automatically start Bitcoin Core after logging in to the system. - Program se automatski pokrene po prijavi u sustav. - - - &Start Bitcoin Core on system login - &Pokreni program kod prijave u sustav - - - W&allet - &NovÄanik - - - &Spend unconfirmed change - &TroÅ¡enje nepotvrÄ‘enih vraćenih iznosa - - - Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled. - Automatski otvori port Bitcoin klijenta na ruteru. To radi samo ako ruter podržava UPnP i ako je omogućen. - - - Map port using &UPnP - Mapiraj port koristeći &UPnP - - - Proxy &IP: - Proxy &IP: - - - &Port: - &Vrata: - - - Port of the proxy (e.g. 9050) - Proxy vrata (npr. 9050) - - - &Window - &Prozor - - - Show only a tray icon after minimizing the window. - Prikaži samo ikonu u sistemskoj traci nakon minimiziranja prozora - - - &Minimize to the tray instead of the taskbar - &Minimiziraj u sistemsku traku umjesto u traku programa - - - M&inimize on close - M&inimiziraj kod zatvaranja - - - &Display - &Prikaz - - - User Interface &language: - Jezi&k suÄelja: - - - &Unit to show amounts in: - &Jedinica za prikaz iznosa: - - - Choose the default subdivision unit to show in the interface and when sending coins. - Izaberite željeni najmanji dio bitcoina koji će biti prikazan u suÄelju i koji će se koristiti za plaćanje. - - - &OK - &U redu - - - &Cancel - &Odustani - - - default - standardne vrijednosti - - - The supplied proxy address is invalid. - Priložena proxy adresa je nevažeća. - - - - OverviewPage - - Form - Oblik - - - The displayed information may be out of date. Your wallet automatically synchronizes with the Bitcoin network after a connection is established, but this process has not completed yet. - Prikazani podatci mogu biti zastarjeli. VaÅ¡ novÄanik se automatski sinkronizira s Bitcoin mrežom kada je veza uspostavljena, ali taj proces joÅ¡ nije zavrÅ¡en. - - - Total: - Ukupno: - - - - PaymentServer - - URI handling - URI upravljanje - - - - PeerTableModel - - - QObject - - Amount - Iznos - - - N/A - N/A - - - - QRImageWidget - - &Save Image... - &Spremi sliku... - - - Save QR Code - Spremi QR kod - - - - RPCConsole - - Client name - Ime klijenta - - - N/A - N/A - - - Client version - Verzija klijenta - - - &Information - &Informacije - - - Using OpenSSL version - OpenSSL verzija u upotrebi - - - Network - Mreža - - - Name - Ime - - - Number of connections - Broj veza - - - Block chain - Lanac blokova - - - Current number of blocks - Trenutni broj blokova - - - Received - Primljeno - - - Sent - Poslano - - - Direction - Smjer - - - Version - Verzija - - - Connection Time - Trajanje veze - - - Bytes Sent - Bajtova poslano - - - Bytes Received - Bajtova primljeno - - - Last block time - Posljednje vrijeme bloka - - - &Open - &Otvori - - - &Console - &Konzola - - - &Network Traffic - &Mrežni promet - - - Totals - Ukupno: - - - Clear console - OÄisti konzolu - - - Welcome to the Bitcoin Core RPC console. - DobrodoÅ¡li u Bitcoin RPC konzolu. - - - Use up and down arrows to navigate history, and <b>Ctrl-L</b> to clear screen. - Koristite tipke gore i dolje za izbor već koriÅ¡tenih naredbi. <b>Ctrl-L</b> kako bi oÄistili ekran i povijest naredbi. - - - Unknown - Nepoznato - - - - ReceiveCoinsDialog - - &Amount: - &Iznos: - - - &Label: - &Oznaka: - - - &Message: - &Poruka: - - - Clear all fields of the form. - ObriÅ¡i sva polja - - - &Request payment - &Zatraži plaćanje - - - Show - Pokaži - - - Copy label - Kopiraj oznaku - - - Copy amount - Kopiraj iznos - - - - ReceiveRequestDialog - - QR Code - QR kôd - - - Copy &URI - Kopiraj &URI - - - Copy &Address - Kopiraj &adresu - - - &Save Image... - &Spremi sliku... - - - URI - URI - - - Address - Adresa - - - Amount - Iznos - - - Label - Oznaka - - - Message - Poruka - - - Resulting URI too long, try to reduce the text for label / message. - URI je predug, probajte skratiti tekst za naslov / poruku. - - - Error encoding URI into QR Code. - GreÅ¡ka kod kodiranja URI adrese u QR kod. - - - - RecentRequestsTableModel - - Date - Datum - - - Label - Oznaka - - - Message - Poruka - - - Amount - Iznos - - - (no label) - (bez oznake) - - - (no message) - (bez poruke) - - - (no amount) - (bez iznosa) - - - - SendCoinsDialog - - Send Coins - Slanje novca - - - Quantity: - KoliÄina: - - - Bytes: - Bajtova: - - - Amount: - Iznos: - - - Priority: - Prioriteta: - - - Fee: - Naknada: - - - Change: - Vraćeno: - - - Send to multiple recipients at once - PoÅ¡alji novce većem broju primatelja u jednoj transakciji - - - Add &Recipient - &Dodaj primatelja - - - Clear all fields of the form. - ObriÅ¡i sva polja - - - Dust: - Prah: - - - Clear &All - ObriÅ¡i &sve - - - Balance: - Stanje: - - - Confirm the send action - Potvrdi akciju slanja - - - S&end - &PoÅ¡alji - - - Confirm send coins - Potvrdi slanje novca - - - Copy amount - Kopiraj iznos - - - or - ili - - - The amount to pay must be larger than 0. - Iznos mora biti veći od 0. - - - The amount exceeds your balance. - Iznos je veći od raspoložljivog stanja novÄanika. - - - The total exceeds your balance when the %1 transaction fee is included. - Iznos je veći od stanja novÄanika kad se doda naknada za transakcije od %1. - - - (no label) - (bez oznake) - - - - SendCoinsEntry - - A&mount: - &Iznos: - - - Pay &To: - &Primatelj plaćanja: - - - Enter a label for this address to add it to your address book - Unesite oznaku za ovu adresu kako bi ju dodali u vaÅ¡ adresar - - - &Label: - &Oznaka: - - - Alt+A - Alt+A - - - Paste address from clipboard - Zalijepi adresu iz meÄ‘uspremnika - - - Alt+P - Alt+P - - - Message: - Poruka: - - - Pay To: - Primatelj plaćanja: - - - - ShutdownWindow - - - SignVerifyMessageDialog - - &Sign Message - &PotpiÅ¡ite poruku - - - Alt+A - Alt+A - - - Paste address from clipboard - Zalijepi adresu iz meÄ‘uspremnika - - - Alt+P - Alt+P - - - Enter the message you want to sign here - UpiÅ¡ite poruku koju želite potpisati ovdje - - - Signature - Potpis - - - Clear &All - ObriÅ¡i &sve - - - &Verify Message - &Potvrdite poruku - - - Wallet unlock was cancelled. - OtkljuÄavanje novÄanika je otkazano. - - - Message signed. - Poruka je potpisana. - - - - SplashScreen - - Bitcoin Core - Bitcoin Core - - - [testnet] - [testnet] - - - - TrafficGraphWidget - - - TransactionDesc - - Open until %1 - Otvoren do %1 - - - %1/offline - %1 nije dostupan - - - %1/unconfirmed - %1/nepotvrÄ‘eno - - - %1 confirmations - %1 potvrda - - - Status - Status - - - Date - Datum - - - Source - Izvor - - - Generated - Generiran - - - From - Od - - - To - Za - - - own address - vlastita adresa - - - label - oznaka - - - Credit - Uplaćeno - - - not accepted - Nije prihvaćeno - - - Debit - Zaduženje - - - Transaction fee - Naknada za transakciju - - - Net amount - Neto iznos - - - Message - Poruka - - - Comment - Komentar - - - Transaction ID - ID transakcije - - - Transaction - Transakcija - - - Inputs - Unosi - - - Amount - Iznos - - - , has not been successfully broadcast yet - , joÅ¡ nije bio uspjeÅ¡no emitiran - - - unknown - nepoznato - - - - TransactionDescDialog - - Transaction details - Detalji transakcije - - - This pane shows a detailed description of the transaction - Ovaj prozor prikazuje detaljni opis transakcije - - - - TransactionTableModel - - Date - Datum - - - Type - Tip - - - Open until %1 - Otvoren do %1 - - - Confirmed (%1 confirmations) - PotvrÄ‘en (%1 potvrda) - - - This block was not received by any other nodes and will probably not be accepted! - Ovaj blok nije bio primljen od strane bilo kojeg drugog Ävora i vjerojatno neće biti prihvaćen! - - - Generated but not accepted - Generirano, ali nije prihvaćeno - - - Label - Oznaka - - - Received with - Primljeno s - - - Received from - Primljeno od - - - Sent to - Poslano za - - - Payment to yourself - Plaćanje samom sebi - - - Mined - Rudareno - - - (n/a) - (n/d) - - - Transaction status. Hover over this field to show number of confirmations. - Status transakcije - - - Date and time that the transaction was received. - Datum i vrijeme kad je transakcija primljena - - - Type of transaction. - Vrsta transakcije. - - - Amount removed from or added to balance. - Iznos odbijen od ili dodan k saldu. - - - - TransactionView - - All - Sve - - - Today - Danas - - - This week - Ovaj tjedan - - - This month - Ovaj mjesec - - - Last month - ProÅ¡li mjesec - - - This year - Ove godine - - - Range... - Raspon... - - - Received with - Primljeno s - - - Sent to - Poslano za - - - To yourself - Samom sebi - - - Mined - Rudareno - - - Other - Ostalo - - - Enter address or label to search - Unesite adresu ili oznaku za pretraživanje - - - Min amount - Min iznos - - - Copy address - Kopiraj adresu - - - Copy label - Kopiraj oznaku - - - Copy amount - Kopiraj iznos - - - Copy transaction ID - Kopiraj ID transakcije - - - Edit label - Izmjeni oznaku - - - Show transaction details - Prikaži detalje transakcije - - - Exporting Failed - Izvoz neuspjeÅ¡an - - - Comma separated file (*.csv) - Datoteka podataka odvojenih zarezima (*.csv) - - - Confirmed - PotvrÄ‘eno - - - Date - Datum - - - Type - Tip - - - Label - Oznaka - - - Address - Adresa - - - ID - ID - - - Range: - Raspon: - - - to - za - - - - UnitDisplayStatusBarControl - - - WalletFrame - - - WalletModel - - Send Coins - Slanje novca - - - - WalletView - - &Export - &Izvoz - - - Export the data in the current tab to a file - Izvoz podataka iz trenutnog taba u datoteku - - - Backup Wallet - Arhiviranje novÄanika - - - Wallet Data (*.dat) - Podaci novÄanika (*.dat) - - - Backup Failed - Arhiviranje nije uspjelo - - - - bitcoin-core - - Options: - Postavke: - - - Specify data directory - Odaberi direktorij za datoteke - - - Specify your own public address - Odaberi vlastitu javnu adresu - - - Accept command line and JSON-RPC commands - Prihvati komande iz tekst moda i JSON-RPC - - - Run in the background as a daemon and accept commands - IzvrÅ¡avaj u pozadini kao uslužnik i prihvaćaj komande - - - Use the test network - Koristi test mrežu - - - Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. - Upozorenje: -paytxfee je podeÅ¡en na preveliki iznos. To je iznos koji ćete platiti za obradu transakcije. - - - Block creation options: - Opcije za kreiranje bloka: - - - Connect only to the specified node(s) - Poveži se samo sa odreÄ‘enim Ävorom/Ävorovima - - - Error: Disk space is low! - PogreÅ¡ka: Nema dovoljno prostora na disku! - - - Imports blocks from external blk000??.dat file - Uvozi blokove sa vanjske blk000??.dat datoteke - - - Information - Informacija - - - Send trace/debug info to console instead of debug.log file - Å alji trace/debug informacije na konzolu umjesto u debug.log datoteku - - - Start minimized - Pokreni minimiziran - - - Use UPnP to map the listening port (default: 1 when listening) - PokuÅ¡aj koristiti UPnP da otvoriÅ¡ port za uslugu (default: 1 when listening) - - - Username for JSON-RPC connections - KorisniÄko ime za JSON-RPC veze - - - Warning - Upozorenje - - - Password for JSON-RPC connections - Lozinka za JSON-RPC veze - - - Execute command when the best block changes (%s in cmd is replaced by block hash) - IzvrÅ¡ite naredbu kada se najbolji blok promjeni (%s u cmd je zamjenjen sa block hash) - - - Upgrade wallet to latest format - Nadogradite novÄanik u posljednji format. - - - Rescan the block chain for missing wallet transactions - Ponovno pretraži lanac blokova za transakcije koje nedostaju - - - Use OpenSSL (https) for JSON-RPC connections - Koristi OpenSSL (https) za JSON-RPC povezivanje - - - This help message - Ova poruka za pomoć - - - Allow DNS lookups for -addnode, -seednode and -connect - Dozvoli DNS upite za -addnode, -seednode i -connect - - - Loading addresses... - UÄitavanje adresa... - - - Error loading wallet.dat: Wallet corrupted - GreÅ¡ka kod uÄitavanja datoteke wallet.dat: NovÄanik pokvaren - - - Error loading wallet.dat - GreÅ¡ka kod uÄitavanja datoteke wallet.dat - - - Invalid -proxy address: '%s' - Nevaljala -proxy adresa: '%s' - - - Invalid amount for -paytxfee=<amount>: '%s' - Nevaljali iznos za opciju -paytxfee=<iznos>: '%s' - - - Insufficient funds - Nedovoljna sredstva - - - Loading block index... - UÄitavanje indeksa blokova... - - - Add a node to connect to and attempt to keep the connection open - Doda Ävor s kojim se želite povezati i nastoji održati vezu otvorenu - - - Loading wallet... - UÄitavanje novÄanika... - - - Cannot downgrade wallet - Nije moguće novÄanik vratiti na prijaÅ¡nju verziju. - - - Cannot write default address - Nije moguće upisati zadanu adresu. - - - Rescanning... - Ponovno pretraživanje... - - - Done loading - UÄitavanje gotovo - - - Error - GreÅ¡ka - - - \ No newline at end of file diff --git a/src/qt/locale/bitcoin_hu.ts b/src/qt/locale/bitcoin_hu.ts deleted file mode 100644 index fd476611e..000000000 --- a/src/qt/locale/bitcoin_hu.ts +++ /dev/null @@ -1,2326 +0,0 @@ - - - AddressBookPage - - Right-click to edit address or label - A cím vagy címke szerkeszteséhez kattintson a jobb gombbal - - - Create a new address - Új cím létrehozása - - - &New - &Új - - - Copy the currently selected address to the system clipboard - A kiválasztott cím másolása a vágólapra - - - &Copy - &Másolás - - - C&lose - &Bezárás - - - &Copy Address - &Cím másolása - - - Delete the currently selected address from the list - Kiválasztott cím törlése a listából - - - Export the data in the current tab to a file - Jelenlegi nézet exportálása fájlba - - - &Export - &Exportálás - - - &Delete - &Törlés - - - Choose the address to send coins to - Válaszd ki a címet, ahová küldesz - - - Choose the address to receive coins with - Válaszd ki a címet, amivel fogadsz - - - C&hoose - &Kiválaszt - - - Sending addresses - Küldési címek - - - Receiving addresses - Fogadó címek - - - These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins. - EzekrÅ‘l a címekrÅ‘l küldhetsz bitcoint. Mindig ellenÅ‘rizd a fogadó címet és a fizetendÅ‘ összeget, mielÅ‘tt elküldöd. - - - These are your Bitcoin addresses for receiving payments. It is recommended to use a new receiving address for each transaction. - Ezekkel a címekkel fogadhatsz bitcoint. Ajánlott minden tranzakcióhoz egy új fogadó címet használni. - - - Copy &Label - &Címke másolása - - - &Edit - Sz&erkesztés - - - Export Address List - Címjegyzék exportálása - - - Comma separated file (*.csv) - VesszÅ‘vel elválasztott fájl (*.csv) - - - Exporting Failed - Az exportálás sikertelen volt - - - There was an error trying to save the address list to %1. Please try again. - Hiba történt a címjegyzék %1 helyre való mentésekor. Kérlek próbáld újra. - - - - AddressTableModel - - Label - Címke - - - Address - Cím - - - (no label) - (nincs címke) - - - - AskPassphraseDialog - - Passphrase Dialog - Jelszó párbeszédablak - - - Enter passphrase - Add meg a jelszót - - - New passphrase - Új jelszó - - - Repeat new passphrase - Új jelszó újra - - - Encrypt wallet - Tárca titkosítása - - - This operation needs your wallet passphrase to unlock the wallet. - A tárca megnyitásához a műveletnek szüksége van a tárcád jelszavára. - - - Unlock wallet - Tárca megnyitása - - - This operation needs your wallet passphrase to decrypt the wallet. - A tárca dekódolásához a műveletnek szüksége van a tárcád jelszavára. - - - Decrypt wallet - Tárca dekódolása - - - Change passphrase - Jelszó megváltoztatása - - - Confirm wallet encryption - Biztosan titkosítani akarod a tárcát? - - - Warning: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR BITCOINS</b>! - Figyelem: ha titkosítod a tárcát és elveszted a jelszavad, akkor <b>AZ ÖSSZES BITCOINOD ELVESZIK!</b> - - - Are you sure you wish to encrypt your wallet? - Biztosan titkosítani akarod a tárcád? - - - 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. - FONTOS: A tárca-fájl minden korábbi mentését cseréld le ezzel az új, titkosított tárca-fájllal. Biztonsági okokból a tárca-fájl korábbi, titkosítás nélküli mentései használhatatlanná válnak, amint elkezded használni az új, titkosított tárcát. - - - Warning: The Caps Lock key is on! - Vigyázat: a Caps Lock be van kapcsolva! - - - Wallet encrypted - Tárca titkosítva - - - 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>. - Add meg a tárca új jelszavát.<br/>Olyan jelszót válassz, ami <b>legalább tíz véletlenszerű karakterbÅ‘l</b> vagy <b>legalább 8 véletlenszerű szóból</b> áll. - - - Wallet encryption failed - A tárca titkosítása sikertelen. - - - Wallet encryption failed due to an internal error. Your wallet was not encrypted. - Tárca titkosítása belsÅ‘ hiba miatt sikertelen. A tárcád nem lett titkosítva. - - - The supplied passphrases do not match. - A megadott jelszavak nem egyeznek. - - - Wallet unlock failed - Tárca megnyitása sikertelen - - - The passphrase entered for the wallet decryption was incorrect. - Hibás jelszó. - - - Wallet decryption failed - Dekódolás sikertelen. - - - Wallet passphrase was successfully changed. - Jelszó megváltoztatva. - - - - BitcoinGUI - - Sign &message... - Üzenet aláírása... - - - Synchronizing with network... - Szinkronizálás a hálózattal... - - - &Overview - &Ãttekintés - - - Node - Csomópont - - - Show general overview of wallet - Tárca általános áttekintése - - - &Transactions - &Tranzakciók - - - Browse transaction history - Tranzakciós elÅ‘zmények megtekintése - - - E&xit - &Kilépés - - - Quit application - Kilépés az alkalmazásból - - - About &Qt - A &Qt-ról - - - Show information about Qt - Információk a Qt-ról - - - &Options... - &Opciók... - - - &Encrypt Wallet... - Tárca &titkosítása... - - - &Backup Wallet... - &Bisztonsági másolat készítése a Tárcáról - - - &Change Passphrase... - Jelszó &megváltoztatása... - - - &Sending addresses... - &Küldési címek... - - - &Receiving addresses... - &Fogadó címek... - - - Open &URI... - &URI azonosító megnyitása... - - - Bitcoin Core client - Bitcoin Core kliens - - - Importing blocks from disk... - A blokkok importálása lemezrÅ‘l... - - - Reindexing blocks on disk... - Lemezen lévÅ‘ blokkok újraindexelése... - - - Send coins to a Bitcoin address - Bitcoin küldése megadott címre - - - Backup wallet to another location - Biztonsági másolat készítése a tárcáról egy másik helyre - - - Change the passphrase used for wallet encryption - Tárca-titkosító jelszó megváltoztatása - - - &Debug window - &Debug ablak - - - Open debugging and diagnostic console - HibakeresÅ‘ és diagnosztikai konzol megnyitása - - - &Verify message... - Üzenet &valódiságának ellenÅ‘rzése - - - Bitcoin - Bitcoin - - - Wallet - Tárca - - - &Send - &Küldés - - - &Receive - &Fogadás - - - Show information about Bitcoin Core - Bitcoin Core információ megjelenítése - - - &Show / Hide - &Mutat / Elrejt - - - Show or hide the main Window - FÅ‘ablakot mutat/elrejt - - - Encrypt the private keys that belong to your wallet - A tárcádhoz tartozó privát kulcsok titkosítása - - - Sign messages with your Bitcoin addresses to prove you own them - Üzenetek aláírása a Bitcoin-címmeiddel, amivel bizonyítod, hogy a cím a sajátod - - - Verify messages to ensure they were signed with specified Bitcoin addresses - Üzenetek ellenÅ‘rzése, hogy valóban a megjelölt Bitcoin-címekkel vannak-e aláírva - - - &File - &Fájl - - - &Settings - &Beállítások - - - &Help - &Súgó - - - Tabs toolbar - Fül eszköztár - - - Bitcoin Core - Bitcoin Core - - - Request payments (generates QR codes and bitcoin: URIs) - Fizetési kérelem (QR-kódot és "bitcoin:" URI azonosítót hoz létre) - - - &About Bitcoin Core - &A Bitcoin Core-ról - - - Show the list of used sending addresses and labels - A használt küldési címek és címkék megtekintése - - - Show the list of used receiving addresses and labels - A használt fogadó címek és címkék megtekintése - - - Open a bitcoin: URI or payment request - "bitcoin:" URI azonosító vagy fizetési kérelem megnyitása - - - &Command-line options - Paran&cssor kapcsolók - - - Show the Bitcoin Core help message to get a list with possible Bitcoin command-line options - A Bitcoin Core súgóüzenet megjelenítése a Bitcoin lehetséges parancssori kapcsolóival. - - - No block source available... - Blokk forrása ismeretlen... - - - %n hour(s) - %n óra%n óra - - - %1 and %2 - %1 és %2 - - - %1 behind - %1 lemaradás - - - Last received block was generated %1 ago. - Az utolsóként kapott blokk kora: %1. - - - Transactions after this will not yet be visible. - Ez utáni tranzakciók még nem lesznek láthatóak. - - - Error - Hiba - - - Warning - Figyelem - - - Information - Információ - - - Up to date - Naprakész - - - Catching up... - Frissítés... - - - Date: %1 - - Dátum: %1 - - - - Type: %1 - - Típus: %1 - - - - Sent transaction - Tranzakció elküldve. - - - Incoming transaction - BeérkezÅ‘ tranzakció - - - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - A tárca <b>titkosítva</b> és jelenleg <b>nyitva</b>. - - - Wallet is <b>encrypted</b> and currently <b>locked</b> - Tárca <b>kódolva</b> és jelenleg <b>zárva</b>. - - - - ClientModel - - Network Alert - Hálózati figyelmeztetés - - - - CoinControlDialog - - Quantity: - Mennyiség: - - - Bytes: - Bájtok: - - - Amount: - Összeg: - - - Priority: - Prioritás: - - - Fee: - Díjak: - - - Dust: - Por-határ: - - - After Fee: - Utólagos díj: - - - Change: - Visszajáró: - - - (un)select all - mindent kiválaszt/elvet - - - Tree mode - Fa nézet - - - List mode - Lista nézet - - - Amount - Összeg - - - Date - Dátum - - - Confirmations - MegerÅ‘sítések - - - Confirmed - MegerÅ‘sítve - - - Priority - Prioritás - - - Copy address - Cím másolása - - - Copy label - Címke másolása - - - Copy amount - Összeg másolása - - - Copy transaction ID - Tranzakcióazonosító másolása - - - Lock unspent - Megmaradt zárolása - - - Unlock unspent - Zárolás feloldása - - - Copy quantity - Mennyiség másolása - - - Copy fee - Díj másolása - - - Copy after fee - Utólagos díj másolása - - - Copy bytes - Byte-ok másolása - - - Copy priority - Prioritás másolása - - - Copy dust - Visszajáró másolása - - - Copy change - Visszajáró másolása - - - highest - legmagasabb - - - higher - magasabb - - - high - magas - - - medium-high - közepesen-magas - - - medium - közepes - - - low-medium - alacsony-közepes - - - low - alacsony - - - lower - alacsonyabb - - - lowest - legalacsonyabb - - - (%1 locked) - (%1 zárolva) - - - none - semmi - - - Can vary +/- %1 satoshi(s) per input. - Bemenetenként +/- %1 satoshi-val változhat - - - yes - igen - - - no - nem - - - This means a fee of at least %1 per kB is required. - Legalább %1 díj szüksége kB-onként. - - - Can vary +/- 1 byte per input. - Bemenetenként +/- 1 byte-al változhat. - - - Transactions with higher priority are more likely to get included into a block. - Nagyobb prioritású tranzakciók nagyobb valószínűséggel kerülnek be egy blokkba. - - - (no label) - (nincs címke) - - - change from %1 (%2) - visszajáró %1-bÅ‘l (%2) - - - (change) - (visszajáró) - - - - EditAddressDialog - - Edit Address - Cím szerkesztése - - - &Label - Cím&ke - - - The label associated with this address list entry - Ehhez a listaelemhez rendelt címke - - - The address associated with this address list entry. This can only be modified for sending addresses. - Ehhez a címlistaelemhez rendelt cím. Csak a küldÅ‘ címek módosíthatók. - - - &Address - &Cím - - - New receiving address - Új fogadó cím - - - New sending address - Új küldÅ‘ cím - - - Edit receiving address - Fogadó cím szerkesztése - - - Edit sending address - KüldÅ‘ cím szerkesztése - - - The entered address "%1" is already in the address book. - A megadott "%1" cím már szerepel a címjegyzékben. - - - The entered address "%1" is not a valid Bitcoin address. - A megadott "%1" cím nem egy érvényes Bitcoin-cím. - - - Could not unlock wallet. - Tárca feloldása sikertelen - - - New key generation failed. - Új kulcs generálása sikertelen - - - - FreespaceChecker - - A new data directory will be created. - Új adatkönyvtár lesz létrehozva. - - - name - Név - - - Path already exists, and is not a directory. - Az elérési út létezik, de nem egy könyvtáré. - - - Cannot create data directory here. - Adatkönyvtár nem hozható itt létre. - - - - HelpMessageDialog - - Bitcoin Core - Bitcoin Core - - - version - verzió - - - (%1-bit) - (%1-bit) - - - About Bitcoin Core - A Bitcoin Core-ról - - - Command-line options - Parancssoros opciók - - - Usage: - Használat: - - - command-line options - parancssoros opciók - - - - Intro - - Welcome - Üdvözlünk - - - Welcome to Bitcoin Core. - Üdvözlünk a Bitcoin Core-ban. - - - Bitcoin Core will download and store a copy of the Bitcoin block chain. At least %1GB of data will be stored in this directory, and it will grow over time. The wallet will also be stored in this directory. - A Bitcoin Core le fogja tölteni és tárolni fogja a Bitcoin blokklánc egy másolatát. Legalább %1GB adat lesz tárolva ebben a mappában, és ez folyamatosan nÅ‘ni fog. A tárca szintén itt lesz tárolva. - - - Use the default data directory - Az alapértelmezett adat könyvtár használata - - - Use a custom data directory: - Saját adatkönyvtár használata: - - - Bitcoin Core - Bitcoin Core - - - Error: Specified data directory "%1" cannot be created. - Hiba: A megadott "%1" adatkönyvtár nem hozható létre. - - - Error - Hiba - - - - OpenURIDialog - - Open URI - URI megnyitása - - - Open payment request from URI or file - Fizetési kérelem megnyitása URI azonosítóból vagy fájlból - - - URI: - URI: - - - Select payment request file - Fizetési kérelmi fájl kiválasztása - - - Select payment request file to open - Fizetés kérelmi fájl kiválasztása - - - - OptionsDialog - - Options - Opciók - - - &Main - &FÅ‘ - - - MB - MB - - - Accept connections from outside - KülsÅ‘ kapcsolatok elfogadása - - - Allow incoming connections - BejövÅ‘ kapcsolatok engedélyezése - - - IP address of the proxy (e.g. IPv4: 127.0.0.1 / IPv6: ::1) - A proxy IP címe (pl.: IPv4: 127.0.0.1 / IPv6: ::1) - - - Reset all client options to default. - Minden kliensbeállítás alapértelmezettre állítása. - - - &Reset Options - Beállítások tö&rlése - - - &Network - &Hálózat - - - &Start Bitcoin Core on system login - A Bitcoin elindítása bejelentkezéskor - - - Expert - szakértÅ‘ - - - Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled. - A Bitcoin-kliens portjának automatikus megnyitása a routeren. Ez csak akkor működik, ha a routered támogatja az UPnP-t és az engedélyezve is van rajta. - - - Map port using &UPnP - &UPnP port-feltérképezés - - - Connect to the Bitcoin network through a SOCKS5 proxy. - Csatlakozás a Bitcoin hálózatához SOCKS5 proxyn keresztül - - - Proxy &IP: - Proxy &IP: - - - &Port: - &Port: - - - Port of the proxy (e.g. 9050) - Proxy portja (pl.: 9050) - - - &Window - &Ablak - - - Show only a tray icon after minimizing the window. - Kicsinyítés után csak eszköztár-ikont mutass - - - &Minimize to the tray instead of the taskbar - &Kicsinyítés a tálcára az eszköztár helyett - - - M&inimize on close - K&icsinyítés záráskor - - - &Display - &Megjelenítés - - - User Interface &language: - Felhasználófelület nye&lve: - - - &Unit to show amounts in: - &Mértékegység: - - - Choose the default subdivision unit to show in the interface and when sending coins. - Válaszd ki az interfészen és érmék küldésekor megjelenítendÅ‘ alapértelmezett alegységet. - - - &OK - &OK - - - &Cancel - Megszakítás - - - default - alapértelmezett - - - none - semmi - - - Confirm options reset - Beállítások törlésének jóváhagyása. - - - Client restart required to activate changes. - A változtatások aktiválásahoz újra kell indítani a klienst. - - - The supplied proxy address is invalid. - A megadott proxy cím nem érvényes. - - - - OverviewPage - - Form - Űrlap - - - The displayed information may be out of date. Your wallet automatically synchronizes with the Bitcoin network after a connection is established, but this process has not completed yet. - A kijelzett információ lehet, hogy elavult. A pénztárcája automatikusan szinkronizálja magát a Bitcoin hálózattal miután a kapcsolat létrejön, de ez e folyamat még nem fejezÅ‘dött be. - - - Available: - ElérhetÅ‘: - - - Your current spendable balance - Jelenlegi egyenleg - - - Pending: - Küldés: - - - Total of transactions that have yet to be confirmed, and do not yet count toward the spendable balance - Még megerÅ‘sítésre váró, a jelenlegi egyenlegbe be nem számított tranzakciók - - - Immature: - Éretlen: - - - Mined balance that has not yet matured - Bányászott egyenleg amely még nem érett be. - - - Total: - Összesen: - - - Your current total balance - Aktuális egyenleged - - - Spendable: - ElkölthetÅ‘: - - - Recent transactions - A legutóbbi tranzakciók - - - - PaymentServer - - URI handling - URI kezelés - - - Cannot start bitcoin: click-to-pay handler - A bitcoint nem lehet elindítani: click-to-pay handler - - - - PeerTableModel - - User Agent - User Agent - - - Ping Time - Ping idÅ‘ - - - - QObject - - Amount - Összeg - - - %1 d - %1 n - - - %1 h - %1 ó - - - %1 m - %1 p - - - %1 s - %1 mp - - - N/A - Nem elérhetÅ‘ - - - - QRImageWidget - - &Save Image... - &Kép mentése - - - &Copy Image - &Kép másolása - - - Save QR Code - QR kód mentése - - - PNG Image (*.png) - PNG kép (*.png) - - - - RPCConsole - - Client name - Kliens néve - - - N/A - Nem elérhetÅ‘ - - - Client version - Kliens verzió - - - &Information - &Információ - - - Debug window - Debug ablak - - - General - Ãltalános - - - Using OpenSSL version - Használt OpenSSL verzió - - - Startup time - Bekapcsolás ideje - - - Network - Hálózat - - - Name - Név - - - Number of connections - Kapcsolatok száma - - - Block chain - Blokklánc - - - Current number of blocks - Aktuális blokkok száma - - - Received - Fogadott - - - Sent - Küldött - - - &Peers - &Peerek - - - Version - Verzió - - - User Agent - User Agent - - - Services - Szolgáltatások - - - Last Send - Legutóbbi küldés - - - Last Receive - Legutóbbi fogadás - - - Bytes Sent - Küldött bájtok - - - Bytes Received - Fogadott bájtok - - - Ping Time - Ping idÅ‘ - - - Last block time - Utolsó blokk ideje - - - &Open - &Megnyitás - - - &Console - &Konzol - - - &Network Traffic - &Hálózati forgalom - - - Totals - Összesen: - - - In: - Be: - - - Out: - Ki: - - - Build date - Fordítás dátuma - - - Debug log file - Debug naplófájl - - - Clear console - Konzol törlése - - - Use up and down arrows to navigate history, and <b>Ctrl-L</b> to clear screen. - Navigálhat a fel és le nyilakkal, és <b>Ctrl-L</b> -vel törölheti a képernyÅ‘t. - - - Type <b>help</b> for an overview of available commands. - Ãrd be azt, hogy <b>help</b> az elérhetÅ‘ parancsok áttekintéséhez. - - - %1 B - %1 B - - - %1 KB - %1 KB - - - %1 MB - %1 MB - - - %1 GB - %1 GB - - - never - soha - - - Unknown - Ismeretlen - - - - ReceiveCoinsDialog - - &Label: - Címke: - - - &Message: - &Üzenet: - - - Clear - Törlés - - - Show - Mutat - - - Remove - Eltávolítás - - - Copy label - Címke másolása - - - Copy message - Üzenet másolása - - - Copy amount - Összeg másolása - - - - ReceiveRequestDialog - - QR Code - QR kód - - - Copy &URI - &URI másolása - - - Copy &Address - &Cím másolása - - - &Save Image... - &Kép mentése - - - URI - URI: - - - Address - Cím - - - Amount - Összeg - - - Label - Címke - - - Message - Üzenet - - - Resulting URI too long, try to reduce the text for label / message. - A keletkezett URI túl hosszú, próbálja meg csökkenteni a cimkeszöveg / üzenet méretét. - - - Error encoding URI into QR Code. - Hiba lépett fel az URI QR kóddá alakításakor - - - - RecentRequestsTableModel - - Date - Dátum - - - Label - Címke - - - Message - Üzenet - - - Amount - Összeg - - - (no label) - (nincs címke) - - - - SendCoinsDialog - - Send Coins - Érmék küldése - - - Inputs... - Bemenetek... - - - Quantity: - Mennyiség: - - - Bytes: - Bájtok: - - - Amount: - Összeg: - - - Priority: - Prioritás: - - - Fee: - Díjak: - - - After Fee: - Utólagos díj: - - - Change: - Visszajáró: - - - Transaction Fee: - Tranzakciós díj - - - Hide - Elrejtés - - - Send to multiple recipients at once - Küldés több címzettnek egyszerre - - - Add &Recipient - &Címzett hozzáadása - - - Dust: - Por-határ: - - - Clear &All - Mindent &töröl - - - Balance: - Egyenleg: - - - Confirm the send action - Küldés megerÅ‘sítése - - - S&end - &Küldés - - - Confirm send coins - Küldés megerÅ‘sítése - - - Copy quantity - Mennyiség másolása - - - Copy amount - Összeg másolása - - - Copy fee - Díj másolása - - - Copy after fee - Utólagos díj másolása - - - Copy bytes - Byte-ok másolása - - - Copy priority - Prioritás másolása - - - Copy change - Visszajáró másolása - - - or - vagy - - - The amount to pay must be larger than 0. - A fizetendÅ‘ összegnek nagyobbnak kell lennie 0-nál. - - - The amount exceeds your balance. - Nincs ennyi bitcoin az egyenlegeden. - - - The total exceeds your balance when the %1 transaction fee is included. - A küldeni kívánt összeg és a %1 tranzakciós díj együtt meghaladja az egyenlegeden rendelkezésedre álló összeget. - - - (no label) - (nincs címke) - - - Copy dust - Visszajáró másolása - - - - SendCoinsEntry - - A&mount: - Összeg: - - - Pay &To: - Címzett: - - - Enter a label for this address to add it to your address book - Milyen címkével kerüljön be ez a cím a címtáradba? - - - - &Label: - Címke: - - - Alt+A - Alt+A - - - Paste address from clipboard - Cím beillesztése a vágólapról - - - Alt+P - Alt+P - - - Message: - Üzenet: - - - Memo: - Jegyzet: - - - - ShutdownWindow - - Bitcoin Core is shutting down... - A Bitcoin Core leáll... - - - - SignVerifyMessageDialog - - Signatures - Sign / Verify a Message - Aláírások - üzenet aláírása/ellenÅ‘rzése - - - &Sign Message - Üzenet aláírása... - - - Alt+A - Alt+A - - - Paste address from clipboard - Cím beillesztése a vágólapról - - - Alt+P - Alt+P - - - Enter the message you want to sign here - Ide írja az aláírandó üzenetet - - - Signature - Aláírás - - - Copy the current signature to the system clipboard - A jelenleg kiválasztott aláírás másolása a rendszer-vágólapra - - - Sign the message to prove you own this Bitcoin address - Üzenet - - - Sign &Message - Üzenet &aláírása - - - Clear &All - Mindent &töröl - - - &Verify Message - Üzenet ellenÅ‘rzése - - - The entered address is invalid. - A megadott cím nem érvényes. - - - Please check the address and try again. - EllenÅ‘rizze a címet és próbálja meg újra. - - - Private key for the entered address is not available. - A megadott cím privát kulcsa nem található. - - - Message signing failed. - Üzenet aláírása nem sikerült. - - - Message signed. - Üzenet aláírva. - - - The signature could not be decoded. - Az aláírást nem sikerült dekódolni. - - - Please check the signature and try again. - EllenÅ‘rizd az aláírást és próbáld újra. - - - Message verification failed. - Az üzenet ellenÅ‘rzése nem sikerült. - - - Message verified. - Üzenet ellenÅ‘rizve. - - - - SplashScreen - - Bitcoin Core - Bitcoin Core - - - The Bitcoin Core developers - A Bitcoin Core fejlesztÅ‘i - - - [testnet] - [teszthálózat] - - - - TrafficGraphWidget - - KB/s - KB/s - - - - TransactionDesc - - Open until %1 - %1-ig megnyitva - - - %1/unconfirmed - %1/megerÅ‘sítetlen - - - %1 confirmations - %1 megerÅ‘sítés - - - Status - Ãllapot - - - Date - Dátum - - - Source - Forrás - - - Generated - Legenerálva - - - From - Űrlap - - - To - Címzett - - - own address - saját cím - - - label - címke - - - Credit - Jóváírás - - - not accepted - elutasítva - - - Debit - Terhelés - - - Transaction fee - Tranzakciós díj - - - Net amount - Nettó összeg - - - Message - Üzenet - - - Comment - Megjegyzés - - - Transaction ID - Tranzakcióazonosító - - - Debug information - Debug információ - - - Transaction - Tranzakció - - - Inputs - Bemenetek - - - Amount - Összeg - - - true - igaz - - - false - hamis - - - , has not been successfully broadcast yet - , még nem sikerült elküldeni. - - - unknown - ismeretlen - - - - TransactionDescDialog - - Transaction details - Tranzakció részletei - - - This pane shows a detailed description of the transaction - Ez a mezÅ‘ a tranzakció részleteit mutatja - - - - TransactionTableModel - - Date - Dátum - - - Type - Típus - - - Open until %1 - %1-ig megnyitva - - - Confirmed (%1 confirmations) - MegerÅ‘sítve (%1 megerÅ‘sítés) - - - This block was not received by any other nodes and will probably not be accepted! - Ezt a blokkot egyetlen másik csomópont sem kapta meg, így valószínűleg nem lesz elfogadva! - - - Generated but not accepted - Legenerálva, de még el nem fogadva. - - - Offline - Offline - - - Label - Címke - - - Unconfirmed - MegerÅ‘sítetlen: - - - Received with - Erre a címre - - - Received from - ErrÅ‘l az - - - Sent to - Erre a címre - - - Payment to yourself - Magadnak kifizetve - - - Mined - Kibányászva - - - (n/a) - (nincs) - - - Transaction status. Hover over this field to show number of confirmations. - Tranzakció állapota. Húzd ide a kurzort, hogy lásd a megerÅ‘sítések számát. - - - Date and time that the transaction was received. - Tranzakció fogadásának dátuma és idÅ‘pontja. - - - Type of transaction. - Tranzakció típusa. - - - Amount removed from or added to balance. - Az egyenleghez jóváírt vagy ráterhelt összeg. - - - - TransactionView - - All - Mind - - - Today - Mai - - - This week - Ezen a héten - - - This month - Ebben a hónapban - - - Last month - Múlt hónapban - - - This year - Ebben az évben - - - Range... - Tartomány ... - - - Received with - Erre a címre - - - Sent to - Erre a címre - - - To yourself - Magadnak - - - Mined - Kibányászva - - - Other - Más - - - Enter address or label to search - Ãrd be a keresendÅ‘ címet vagy címkét - - - Min amount - Minimális összeg - - - Copy address - Cím másolása - - - Copy label - Címke másolása - - - Copy amount - Összeg másolása - - - Copy transaction ID - Tranzakcióazonosító másolása - - - Edit label - Címke szerkesztése - - - Show transaction details - Tranzakciós részletek megjelenítése - - - Exporting Failed - Az exportálás sikertelen volt - - - Exporting Successful - Sikeres exportálás - - - Comma separated file (*.csv) - VesszÅ‘vel elválasztott fájl (*.csv) - - - Confirmed - MegerÅ‘sítve - - - Date - Dátum - - - Type - Típus - - - Label - Címke - - - Address - Cím - - - ID - Azonosító - - - Range: - Tartomány: - - - to - meddig - - - - UnitDisplayStatusBarControl - - - WalletFrame - - - WalletModel - - Send Coins - Érmék küldése - - - - WalletView - - &Export - &Exportálás - - - Export the data in the current tab to a file - Jelenlegi nézet exportálása fájlba - - - Backup Wallet - Biztonsági másolat készítése a Tárcáról - - - Wallet Data (*.dat) - Tárca fájl (*.dat) - - - Backup Failed - Biztonsági másolat készítése sikertelen - - - Backup Successful - Sikeres biztonsági mentés - - - - bitcoin-core - - Options: - Opciók - - - - Specify data directory - Adatkönyvtár - - - - Connect to a node to retrieve peer addresses, and disconnect - Kapcsolódás egy csomóponthoz a peerek címeinek megszerzése miatt, majd szétkapcsolás - - - Specify your own public address - Adja meg az Ön saját nyilvános címét - - - Accept command line and JSON-RPC commands - Parancssoros és JSON-RPC parancsok elfogadása - - - - Run in the background as a daemon and accept commands - Háttérben futtatás daemonként és parancsok elfogadása - - - - Use the test network - Teszthálózat használata - - - - Accept connections from outside (default: 1 if no -proxy or -connect) - KívülrÅ‘l érkezÅ‘ kapcsolatok elfogadása (alapértelmezett: 1, ha nem használt a -proxy vagy a -connect) - - - Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) - Parancs, amit akkor hajt végre, amikor egy tárca-tranzakció megváltozik (%s a parancsban lecserélÅ‘dik a blokk TxID-re) - - - Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. - Figyelem: a -paytxfee nagyon magas. Ennyi tranzakciós díjat fogsz fizetni, ha elküldöd a tranzakciót. - - - Connect only to the specified node(s) - Csatlakozás csak a megadott csomóponthoz - - - Corrupted block database detected - Sérült blokk-adatbázis észlelve - - - Do you want to rebuild the block database now? - Újra akarod építeni a blokk adatbázist most? - - - Error initializing block database - A blokkadatbázis inicializálása nem sikerült - - - Error initializing wallet database environment %s! - A tárca-adatbázis inicializálása nem sikerült: %s! - - - Error loading block database - Hiba a blokk adatbázis betöltése közben. - - - Error opening block database - Hiba a blokk adatbázis megnyitása közben. - - - Error: Disk space is low! - Hiba: kevés a hely a lemezen! - - - Failed to listen on any port. Use -listen=0 if you want this. - Egyik hálózati porton sem sikerül hallgatni. Használja a -listen=0 kapcsolót, ha ezt szeretné. - - - Importing... - Importálás - - - Incorrect or no genesis block found. Wrong datadir for network? - Helytelen vagy nemlétezÅ‘ genézis blokk. Helytelen hálózati adatkönyvtár? - - - Not enough file descriptors available. - Nincs elég fájlleíró. - - - Verifying blocks... - Blokkok ellenÅ‘rzése... - - - Verifying wallet... - Tárca ellenÅ‘rzése... - - - Wallet options: - Tárca beállítások: - - - You need to rebuild the database using -reindex to change -txindex - Az adatbázist újra kell építeni -reindex használatával (módosítás -tindex). - - - Choose data directory on startup (default: 0) - Adatkönyvtár kiválasztása induláskor (alapbeállítás: 0) - - - Copyright (C) 2009-%i The Bitcoin Core Developers - Copyright (C) 2009-%i A Bitcoin Core FejlesztÅ‘i - - - Error reading from database, shutting down. - Hiba az adatbázis olvasásakor, leállítás - - - Information - Információ - - - Invalid amount for -minrelaytxfee=<amount>: '%s' - Érvénytelen -minrelaytxfee=<amount>: '%s' összeg - - - Invalid amount for -mintxfee=<amount>: '%s' - Érvénytelen -mintxfee=<amount>: '%s' összeg - - - Send trace/debug info to console instead of debug.log file - trace/debug információ küldése a konzolra a debog.log fájl helyett - - - Set SSL root certificates for payment request (default: -system-) - SLL gyökér-igazolások megadása fizetési kérelmekhez (alapértelmezett: -system-) - - - Set language, for example "de_DE" (default: system locale) - Nyelvbeállítás, például "de_DE" (alapértelmezett: rendszer nyelve) - - - Show splash screen on startup (default: 1) - IndítóképernyÅ‘ mutatása induláskor (alapértelmezett: 1) - - - Signing transaction failed - Tranzakció aláírása sikertelen - - - Start minimized - Indítás lekicsinyítve - - - - This is experimental software. - Ez egy kísérleti szoftver. - - - Transaction amount too small - Tranzakció összege túl alacsony - - - Transaction amounts must be positive - Tranzakció összege pozitív kell legyen - - - Transaction too large - Túl nagy tranzakció - - - Use UPnP to map the listening port (default: 1 when listening) - UPnP-használat engedélyezése a figyelÅ‘ port feltérképezésénél (default: 1 when listening) - - - Username for JSON-RPC connections - Felhasználói név JSON-RPC csatlakozásokhoz - - - - Warning - Figyelem - - - Password for JSON-RPC connections - Jelszó JSON-RPC csatlakozásokhoz - - - - Execute command when the best block changes (%s in cmd is replaced by block hash) - Parancs, amit akkor hajt végre, amikor a legjobb blokk megváltozik (%s a cmd-ban lecserélÅ‘dik a blokk hash-re) - - - Upgrade wallet to latest format - A Tárca frissítése a legfrissebb formátumra - - - Rescan the block chain for missing wallet transactions - Blokklánc újraszkennelése hiányzó tárca-tranzakciók után - - - - Use OpenSSL (https) for JSON-RPC connections - OpenSSL (https) használata JSON-RPC csatalkozásokhoz - - - - This help message - Ez a súgó-üzenet - - - - Allow DNS lookups for -addnode, -seednode and -connect - DNS-kikeresés engedélyezése az addnode-nál és a connect-nél - - - Loading addresses... - Címek betöltése... - - - Error loading wallet.dat: Wallet corrupted - Hiba a wallet.dat betöltése közben: meghibásodott tárca - - - Error loading wallet.dat - Hiba az wallet.dat betöltése közben - - - Invalid -proxy address: '%s' - Érvénytelen -proxy cím: '%s' - - - Unknown network specified in -onlynet: '%s' - Ismeretlen hálózat lett megadva -onlynet: '%s' - - - Cannot resolve -bind address: '%s' - Csatlakozási cím (-bind address) feloldása nem sikerült: '%s' - - - Cannot resolve -externalip address: '%s' - KülsÅ‘ cím (-externalip address) feloldása nem sikerült: '%s' - - - Invalid amount for -paytxfee=<amount>: '%s' - Étvénytelen -paytxfee=<összeg> összeg: '%s' - - - Insufficient funds - Nincs elég bitcoinod. - - - Loading block index... - Blokkindex betöltése... - - - Add a node to connect to and attempt to keep the connection open - ElérendÅ‘ csomópont megadása and attempt to keep the connection open - - - Loading wallet... - Tárca betöltése... - - - Cannot downgrade wallet - Nem sikerült a Tárca visszaállítása a korábbi verzióra - - - Cannot write default address - Nem sikerült az alapértelmezett címet írni. - - - Rescanning... - Újraszkennelés... - - - Done loading - Betöltés befejezve. - - - Error - Hiba - - - \ No newline at end of file diff --git a/src/qt/locale/bitcoin_id_ID.ts b/src/qt/locale/bitcoin_id_ID.ts deleted file mode 100644 index 5f2c0880f..000000000 --- a/src/qt/locale/bitcoin_id_ID.ts +++ /dev/null @@ -1,2490 +0,0 @@ - - - AddressBookPage - - Create a new address - Buat alamat baru - - - &New - &Baru - - - Copy the currently selected address to the system clipboard - Salin alamat yang dipilih ke clipboard - - - &Copy - &Menyalin - - - C&lose - T&utup - - - &Copy Address - &Salin Alamat - - - Delete the currently selected address from the list - Hapus alamat yang sementara dipilih dari daftar - - - Export the data in the current tab to a file - Ekspor data dalam tab sekarang ke sebuah berkas - - - &Export - &Ekspor - - - &Delete - &Hapus - - - Choose the address to send coins to - Pilihlah alamat kemana koin Anda akan dikirim - - - Choose the address to receive coins with - Pilihlah alamat dimana Anda akan menerima koin - - - C&hoose - P&ilihlah - - - Sending addresses - Alamat-alamat mengirim - - - Receiving addresses - Alamat-alamat menerima - - - These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins. - Alamat-alamat Anda supaya mengirim pembayaran. Periksalah jumlah dan alamat penerima setiap kali Anda mengirim Bitcoin. - - - These are your Bitcoin addresses for receiving payments. It is recommended to use a new receiving address for each transaction. - Alamat-alamat Anda supaya menerima pembayaran. Dianjurkan agar Anda menggunakan alamat menerima yang baru untuk setiap transaksi. - - - Copy &Label - Salin &Label - - - &Edit - &Ubah - - - Export Address List - Ekspor Daftar Alamat - - - Comma separated file (*.csv) - Berkas CSV (*.csv) - - - Exporting Failed - Proses Ekspor Gagal - - - - AddressTableModel - - Label - Label - - - Address - Alamat - - - (no label) - (tidak ada label) - - - - AskPassphraseDialog - - Passphrase Dialog - Dialog Kata kunci - - - Enter passphrase - Masukkan kata kunci - - - New passphrase - Kata kunci baru - - - Repeat new passphrase - Ulangi kata kunci baru - - - Encrypt wallet - Enkripsi dompet - - - This operation needs your wallet passphrase to unlock the wallet. - Operasi ini memerlukan kata kunci dompet Anda untuk membuka dompet ini. - - - Unlock wallet - Buka dompet - - - This operation needs your wallet passphrase to decrypt the wallet. - Operasi ini memerlukan kata kunci dompet Anda untuk mendekripsi dompet ini. - - - Decrypt wallet - Dekripsi dompet - - - Change passphrase - Ubah kata kunci - - - Confirm wallet encryption - Konfirmasi enkripsi dompet - - - Warning: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR BITCOINS</b>! - Perhatian: Jika anda mengenkripsi dompet anda dan lupa kata kuncinya, anda pasti <b>KEHILANGAN SELURUH BITCOIN ANDA</B>! - - - Are you sure you wish to encrypt your wallet? - Apakah kamu yakin ingin mengenkripsi dompet anda? - - - Warning: The Caps Lock key is on! - Perhatian: tombol Caps Lock sementara aktif! - - - Wallet encrypted - Dompet terenkripsi - - - Wallet encryption failed - Enkripsi dompet gagal - - - Wallet encryption failed due to an internal error. Your wallet was not encrypted. - Enkripsi dompet gagal karena kesalahan internal. Dompet Anda tidak dienkripsi. - - - The supplied passphrases do not match. - Kata kunci yang dimasukkan tidak cocok. - - - Wallet unlock failed - Gagal buka dompet - - - The passphrase entered for the wallet decryption was incorrect. - Kata kunci yang dimasukkan untuk dekripsi dompet tidak cocok. - - - Wallet decryption failed - Dekripsi dompet gagal - - - Wallet passphrase was successfully changed. - Kata kunci untuk dompet berubah berhasil. - - - - BitcoinGUI - - Sign &message... - Pesan &penanda... - - - Synchronizing with network... - Sinkronisasi dengan jaringan... - - - &Overview - &Kilasan - - - Node - Node - - - Show general overview of wallet - Tampilkan kilasan umum dari dompet - - - &Transactions - &Transaksi - - - Browse transaction history - Jelajah sejarah transaksi - - - E&xit - K&eluar - - - Quit application - Keluar dari aplikasi - - - About &Qt - Mengenai &Qt - - - Show information about Qt - Tampilkan informasi mengenai Qt - - - &Options... - &Pilihan... - - - &Backup Wallet... - &Cadangkan Dompet... - - - &Change Passphrase... - &Ubah Kata Kunci... - - - &Sending addresses... - Alamat-alamat &Mengirim - - - &Receiving addresses... - Alamat-alamat &Menerima - - - Open &URI... - Buka &URI - - - Bitcoin Core client - Client Bitcoin Inti - - - Importing blocks from disk... - Blok-blok sedang di-impor dari disk - - - Reindexing blocks on disk... - Mengindex ulang block di harddisk... - - - Send coins to a Bitcoin address - Kirim koin ke alamat Bitcoin - - - Backup wallet to another location - Cadangkan dompet ke lokasi lain - - - Change the passphrase used for wallet encryption - Ubah kata kunci yang digunakan untuk enkripsi dompet - - - &Debug window - &Jendela Debug - - - Open debugging and diagnostic console - Buka konsol debug dan diagnosa - - - &Verify message... - &Verifikasi pesan... - - - Bitcoin - Bitcoin - - - Wallet - Dompet - - - &Send - &Kirim - - - &Receive - &Menerima - - - Show information about Bitcoin Core - Tampilkan informasi tentang Bitcoin Inti - - - &Show / Hide - &Sunjukkan / Menyembungi - - - Show or hide the main Window - Tampilkan atau sembunyikan jendela utama - - - Encrypt the private keys that belong to your wallet - Mengenkripsi kunci-kunci pribadi yang dipunyai dompetmu - - - Sign messages with your Bitcoin addresses to prove you own them - Tandalah pesanan dengan alamat-alamat Bitcoin Anda supaya membuktikan pesanan itu dikirim oleh Anda - - - Verify messages to ensure they were signed with specified Bitcoin addresses - Periksakan pesan-pesan supaya menjaminkan ditandatangani oleh alamat Bitcoin yang terperinci - - - &File - &Berkas - - - &Settings - &Pengaturan - - - &Help - &Bantuan - - - Tabs toolbar - Baris tab - - - Bitcoin Core - Bitcoin Core - - - Request payments (generates QR codes and bitcoin: URIs) - Permintaan pembayaran (membangkitkan kode QR dan bitcoin: URIs) - - - &About Bitcoin Core - &Mengenai Bitcoin Core - - - Show the list of used sending addresses and labels - Tampilkan daftar alamat dan label yang terkirim - - - Show the list of used receiving addresses and labels - Tampilkan daftar alamat dan label yang diterima - - - Open a bitcoin: URI or payment request - Buka URI bitcoin: atau permintaan pembayaran - - - &Command-line options - &pilihan Perintah-baris - - - Show the Bitcoin Core help message to get a list with possible Bitcoin command-line options - Tampilkan pesan bantuan Bitcoin Core untuk memberikan daftar pilihan perintah-baris yang memungkinkan dalam aplikasi Bitcoin - - - %n active connection(s) to Bitcoin network - %n hubungan aktif ke jaringan Bitcoin - - - No block source available... - Sumber blok tidak tersedia... - - - %n hour(s) - %n jam - - - %n day(s) - %n hari - - - %n week(s) - %n minggu - - - %1 and %2 - %1 dan %2 - - - %n year(s) - %n tahun - - - %1 behind - kurang %1 - - - Last received block was generated %1 ago. - Blok terakhir dibuat %1 lalu. - - - Transactions after this will not yet be visible. - Transaksi setelah ini tidak akan ditampilkan - - - Error - Gagal - - - Warning - Peringatan - - - Information - Informasi - - - Up to date - Terbaru - - - Catching up... - Menyusul... - - - Sent transaction - Transaksi terkirim - - - Incoming transaction - Transaksi diterima - - - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - Dompet saat ini <b>terenkripsi</b> dan <b>terbuka</b> - - - Wallet is <b>encrypted</b> and currently <b>locked</b> - Dompet saat ini <b>terenkripsi</b> dan <b>terkunci</b> - - - - ClientModel - - Network Alert - Notifikasi Jaringan - - - - CoinControlDialog - - Quantity: - Kuantitas: - - - Bytes: - Bytes: - - - Amount: - Nilai: - - - Priority: - Prioritas: - - - Fee: - Biaya: - - - After Fee: - Dengan Biaya: - - - Change: - Uang Kembali: - - - (un)select all - (Tidak)memilih semua - - - Tree mode - mode pohon - - - List mode - Mode daftar - - - Amount - Nilai - - - Date - Tanggal - - - Confirmations - Konfirmasi-konfirmasi - - - Confirmed - Terkonfirmasi - - - Priority - Prioritas - - - Copy address - Salin alamat - - - Copy label - Salin label - - - Copy amount - Salin nilai - - - Copy transaction ID - Menyalinkan ID transaksi - - - Lock unspent - Kunci terpakai. - - - Unlock unspent - Membuka kunci terpakai - - - Copy quantity - Salin kuantitas - - - Copy fee - Salin biaya - - - Copy after fee - Salin dengan biaya - - - Copy bytes - Salin bytes - - - Copy priority - Salin prioritas - - - Copy change - Salin uang kembali - - - highest - terbesar - - - higher - lebih besar - - - high - besar - - - medium-high - sedang-sampai-besar - - - medium - sedang - - - low-medium - sedikit-sampai-sedang - - - low - sedikit - - - lower - lebih sedikit - - - lowest - tersedikit - - - (%1 locked) - (%1 terkunci) - - - none - tidak satupun - - - yes - ya - - - no - tidak - - - This means a fee of at least %1 per kB is required. - Berarti perlu biaya lebih dari %1 untuk setiap kB. - - - Can vary +/- 1 byte per input. - Boleh berbeda +/- 1 byte setiap masukan. - - - Transactions with higher priority are more likely to get included into a block. - Makin penting transaksinya, makin kemungkinan akan termasuk dalam blok. - - - (no label) - (tidak ada label) - - - change from %1 (%2) - uang kembali dari %1 (%2) - - - (change) - (uang kembali) - - - - EditAddressDialog - - Edit Address - Ubah Alamat - - - &Label - &Label - - - The label associated with this address list entry - Label yang terkait dengan daftar alamat yang dimasukkan ini - - - The address associated with this address list entry. This can only be modified for sending addresses. - Alamat yang terkait dengan entri buku alamat ini. Hanya dapat diubah untuk alamat pengirim. - - - &Address - &Alamat - - - New receiving address - Alamat menerima baru - - - New sending address - Alamat mengirim baru - - - Edit receiving address - Ubah alamat menerima - - - Edit sending address - Ubah alamat mengirim - - - The entered address "%1" is already in the address book. - Alamat yang dimasukkan "%1" sudah ada di dalam buku alamat. - - - The entered address "%1" is not a valid Bitcoin address. - Alamat yang dimasukkan "%1" bukan alamat Bitcoin yang benar. - - - Could not unlock wallet. - Tidak dapat membuka dompet. - - - New key generation failed. - Pembuatan kunci baru gagal. - - - - FreespaceChecker - - A new data directory will be created. - Sebuah data direktori baru telah dibuat. - - - name - nama - - - Directory already exists. Add %1 if you intend to create a new directory here. - Direktori masih ada. Tambahlah %1 kalau ingin membuat direktori baru disini. - - - Path already exists, and is not a directory. - Masih ada Path, dan path itu bukan direktori. - - - Cannot create data directory here. - Tidak busa membuat direktori untuk data disini. - - - - HelpMessageDialog - - Bitcoin Core - Bitcoin Core - - - version - versi - - - About Bitcoin Core - Mengenai Bitcoin Core - - - Usage: - Penggunaan: - - - command-line options - pilihan perintah-baris - - - - Intro - - Welcome - Selamat Datang - - - Welcome to Bitcoin Core. - Selamat Datang ke Bitcoin Core - - - Use the default data directory - Menggunakan direktori untuk data yang biasa. - - - Use a custom data directory: - Menggunakan direktori data yang dipilih Anda: - - - Bitcoin Core - Bitcoin Core - - - Error - Gagal - - - %n GB of free space available - %n GB dari ruang yang tersedia - - - - OpenURIDialog - - Open URI - Buka URI - - - Open payment request from URI or file - Buka permintaan pembayaran dari URI atau arsip - - - URI: - URI: - - - Select payment request file - Pilihlah arsip permintaan pembayaran - - - Select payment request file to open - Pilihlah arsip permintaan pembayaran yang Anda ingin membuka - - - - OptionsDialog - - Options - Pilihan - - - &Main - &Utama - - - MB - MB - - - IP address of the proxy (e.g. IPv4: 127.0.0.1 / IPv6: ::1) - Alamat IP proxy (cth. IPv4: 127.0.0.1 / IPv6: ::1) - - - Third party transaction URLs - Transaksi URLs pihak ketiga - - - Active command-line options that override above options: - pilihan perintah-baris aktif menimpa atas pilihan-pilihan: - - - Reset all client options to default. - Reset setiap pilihan untuk pilihan biasa - - - &Reset Options - &Reset Pilihan - - - &Network - &Jaringan - - - W&allet - D&ompet - - - Expert - Ahli - - - Enable coin &control features - Nyalain cara &pengaturan koin - - - 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. - Jika Anda menonaktifkan perubahan saldo untuk transaksi yang belum dikonfirmasi, perubahan dari transaksi tidak dapat dilakukan sampai transaksi memiliki setidaknya satu konfirmasi. Hal ini juga mempengaruhi bagaimana saldo Anda dihitung. - - - &Spend unconfirmed change - &Perubahan saldo untuk transaksi yang belum dikonfirmasi - - - Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled. - Otomatis membuka port client Bitcoin di router. Hanya berjalan apabila router anda mendukung UPnP dan di-enable. - - - Map port using &UPnP - Petakan port dengan &UPnP - - - Proxy &IP: - IP Proxy: - - - &Port: - &Port: - - - Port of the proxy (e.g. 9050) - Port proxy (cth. 9050) - - - &Window - &Jendela - - - Show only a tray icon after minimizing the window. - Hanya tampilkan ikon tray setelah meminilisasi jendela - - - &Minimize to the tray instead of the taskbar - &Meminilisasi ke tray daripada taskbar - - - M&inimize on close - M&eminilisasi saat tutup - - - &Display - &Tampilan - - - User Interface &language: - &Bahasa Antarmuka Pengguna: - - - &Unit to show amounts in: - &Unit untuk menunjukkan nilai: - - - Choose the default subdivision unit to show in the interface and when sending coins. - Pilihan standar unit yang ingin ditampilkan pada layar aplikasi dan saat mengirim koin. - - - Whether to show coin control features or not. - Ingin menunjukkan cara pengaturan koin atau tidak. - - - &OK - &YA - - - &Cancel - &Batal - - - default - standar - - - none - tidak satupun - - - Confirm options reset - Memastikan reset pilihan - - - Client restart required to activate changes. - Restart klien diperlukan untuk mengaktifkan perubahan. - - - This change would require a client restart. - Perubahan ini akan memerlukan restart klien - - - The supplied proxy address is invalid. - Alamat proxy yang diisi tidak valid. - - - - OverviewPage - - Form - Formulir - - - The displayed information may be out of date. Your wallet automatically synchronizes with the Bitcoin network after a connection is established, but this process has not completed yet. - Informasi terlampir mungkin sudah kedaluwarsa. Dompet Anda secara otomatis mensinkronisasi dengan jaringan Bitcoin ketika sebuah hubungan terbentuk, namun proses ini belum selesai. - - - Available: - Tersedia: - - - Your current spendable balance - Jumlah yang Anda bisa keluarkan sekarang - - - Pending: - Ditunda - - - Total of transactions that have yet to be confirmed, and do not yet count toward the spendable balance - Jumlah keseluruhan transaksi yang belum dikonfirmasi, dan belum saatnya dihitung sebagai pengeluaran saldo yang telah dibelanjakan. - - - Immature: - Terlalu Muda: - - - Mined balance that has not yet matured - Saldo ditambang yang masih terlalu muda - - - Total: - Jumlah: - - - Your current total balance - Jumlah saldo Anda sekarang - - - - PaymentServer - - URI handling - Penanganan URI - - - Invalid payment address %1 - Alamat pembayaran salah %1 - - - Requested payment amount of %1 is too small (considered dust). - Nilai pembayaran %1 yang diminta oleh Anda terlalu sedikit (dianggap debu). - - - Payment request error - Gagalan permintaan pembayaran - - - Refund from %1 - Pembayaran kembali dari %1 - - - Error communicating with %1: %2 - Masalah berkomunikasi dengan %1: %2 - - - Bad response from server %1 - Jawaban salah dari server %1 - - - Payment acknowledged - Pembayaran diakui - - - Network request error - Gagalan permintaan dari jaringan - - - - PeerTableModel - - - QObject - - Amount - Nilai - - - %1 h - %1 Jam - - - %1 m - %1 menit - - - N/A - T/S - - - - QRImageWidget - - &Save Image... - &Simpan Gambaran... - - - &Copy Image - &Salin Gambaran - - - Save QR Code - Simpan Kode QR - - - PNG Image (*.png) - Gambar PNG (*.png) - - - - RPCConsole - - Client name - Nama Klien - - - N/A - T/S - - - Client version - Versi Klien - - - &Information - &Informasi - - - Debug window - Jendela debug - - - General - Umum - - - Using OpenSSL version - Menggunakan versi OpenSSL - - - Startup time - Waktu nyala - - - Network - Jaringan - - - Name - Nama - - - Number of connections - Jumlah hubungan - - - Block chain - Rantai blok - - - Current number of blocks - Jumlah blok terkini - - - Last block time - Waktu blok terakhir - - - &Open - &Buka - - - &Console - &Konsol - - - &Network Traffic - Kemacetan &Jaringan - - - &Clear - &Kosongkan - - - Totals - Total - - - In: - Masuk: - - - Out: - Keluar: - - - Build date - Tanggal pembuatan - - - Debug log file - Berkas catatan debug - - - Clear console - Bersihkan konsol - - - Use up and down arrows to navigate history, and <b>Ctrl-L</b> to clear screen. - Gunakan panah keatas dan kebawah untuk menampilkan sejarah, dan <b>Ctrl-L</b> untuk bersihkan layar. - - - Type <b>help</b> for an overview of available commands. - Ketik <b>help</b> untuk menampilkan perintah tersedia. - - - %1 B - %1 B - - - %1 KB - %1 KB - - - %1 MB - %1 MB - - - %1 GB - %1 GB - - - - ReceiveCoinsDialog - - &Amount: - &Nilai: - - - &Label: - &Label: - - - &Message: - &Pesan: - - - R&euse an existing receiving address (not recommended) - Gunakan lagi alamat penerima yang ada (tidak disarankan) - - - An optional label to associate with the new receiving address. - Label opsional untuk mengasosiasikan dengan alamat penerima baru. - - - Use this form to request payments. All fields are <b>optional</b>. - Gunakan form ini untuk meminta pembayaran. Semua bidang adalah <b>opsional</b>. - - - An optional amount to request. Leave this empty or zero to not request a specific amount. - Nilai permintaan opsional. Biarkan ini kosong atau nol bila tidak meminta nilai tertentu. - - - Clear all fields of the form. - Hapus informasi dari form. - - - Clear - Hapus - - - Requested payments history - Riwayat pembayaran yang diminta Anda - - - &Request payment - &Minta pembayaran - - - Show the selected request (does the same as double clicking an entry) - Menunjukkan permintaan yang dipilih (sama dengan tekan pilihan dua kali) - - - Show - Menunjukkan - - - Remove the selected entries from the list - Menghapus informasi terpilih dari daftar - - - Remove - Menghapus - - - Copy label - Salin label - - - Copy message - Salin Pesan - - - Copy amount - Salin nilai - - - - ReceiveRequestDialog - - QR Code - Kode QR - - - Copy &URI - Salin &URI - - - Copy &Address - Salin &Alamat - - - &Save Image... - &Simpan Gambaran... - - - Request payment to %1 - Minta pembayaran ke %1 - - - Payment information - Informasi pembayaran - - - URI - URI - - - Address - Alamat - - - Amount - Nilai - - - Label - Label - - - Message - Pesan - - - Resulting URI too long, try to reduce the text for label / message. - Hasil URI terlalu panjang, coba kurangi label / pesan. - - - Error encoding URI into QR Code. - Gagal mengubah URI ke kode QR. - - - - RecentRequestsTableModel - - Date - Tanggal - - - Label - Label - - - Message - Pesan: - - - Amount - Nilai - - - (no label) - (tidak ada label) - - - (no message) - (tidak ada pesan) - - - (no amount) - (tidak ada nilai) - - - - SendCoinsDialog - - Send Coins - Kirim Koin - - - Coin Control Features - Cara Pengaturan Koin - - - Inputs... - Masukan... - - - automatically selected - Pemilihan otomatis - - - Insufficient funds! - Saldo tidak mencukupi! - - - Quantity: - Kuantitas: - - - Bytes: - Bytes: - - - Amount: - Nilai: - - - Priority: - Prioritas: - - - Fee: - Biaya: - - - After Fee: - Dengan Biaya: - - - Change: - Uang Kembali: - - - If this is activated, but the change address is empty or invalid, change will be sent to a newly generated address. - Jiki ini dipilih, tetapi alamat pengembalian uang kosong atau salah, uang kembali akan dikirim ke alamat yang baru dibuat. - - - Custom change address - Alamat uang kembali yang kustom - - - Send to multiple recipients at once - Kirim ke beberapa penerima sekaligus - - - Add &Recipient - Tambahlah &Penerima - - - Clear all fields of the form. - Hapus informasi dari form. - - - Balance: - Saldo: - - - Confirm the send action - Konfirmasi aksi pengiriman - - - S&end - K&irim - - - Confirm send coins - Konfirmasi pengiriman koin - - - %1 to %2 - %1 ke %2 - - - Copy quantity - Salin kuantitas - - - Copy amount - Salin nilai - - - Copy fee - Salin biaya - - - Copy after fee - Salin dengan biaya - - - Copy bytes - Salin bytes - - - Copy priority - Salin prioritas - - - Copy change - Salin uang kembali - - - or - atau - - - The amount to pay must be larger than 0. - Nilai yang dibayar harus lebih besar dari 0. - - - The amount exceeds your balance. - Nilai melebihi saldo Anda. - - - The total exceeds your balance when the %1 transaction fee is included. - Jumlah melebihi saldo Anda ketika biaya transaksi %1 ditambahkan. - - - Transaction creation failed! - Gagal membuat transaksi! - - - 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. - Gagal: Transaksi ditolak. Ini mungkin terjadi jika beberapa dari koin dalam dompet Anda telah digunakan, seperti ketika Anda menggunakan salinan wallet.dat dan beberapa koin telah dibelanjakan dalam salinan tersebut tetapi disini tidak tertandai sebagai terpakai. - - - Warning: Invalid Bitcoin address - Awas: Alamat Bitcoin tidak sah - - - (no label) - (tidak ada label) - - - Are you sure you want to send? - Apakah Anda yakin ingin kirim? - - - added as transaction fee - ditambahkan sebagai biaya transaksi - - - - SendCoinsEntry - - A&mount: - J&umlah: - - - Pay &To: - Kirim &Ke: - - - Enter a label for this address to add it to your address book - Masukkan label bagi alamat ini untuk menambahkannya ke buku alamat Anda - - - &Label: - &Label: - - - Choose previously used address - Pilih alamat yang telah digunakan sebelumnya - - - This is a normal payment. - Ini adalah pembayaran normal - - - Alt+A - Alt+J - - - Paste address from clipboard - Tempel alamat dari salinan - - - Alt+P - Alt+B - - - Remove this entry - Hapus masukan ini - - - Message: - Pesan: - - - Enter a label for this address to add it to the list of used addresses - Masukkan label untuk alamat ini untuk dimasukan dalam daftar alamat yang pernah digunakan - - - Pay To: - Kirim Ke: - - - Memo: - Catatan Peringatan: - - - - ShutdownWindow - - Bitcoin Core is shutting down... - Bitcoin Core sementara dimatikan... - - - Do not shut down the computer until this window disappears. - Kamu tidak dapat mematikan komputer sebelum jendela ini tertutup sendiri. - - - - SignVerifyMessageDialog - - Signatures - Sign / Verify a Message - Tanda Tangan / Verifikasi sebuah Pesan - - - &Sign Message - &Tandakan Pesan - - - Choose previously used address - Pilih alamat yang telah digunakan sebelumnya - - - Alt+A - Alt+A - - - Paste address from clipboard - Tempel alamat dari salinan - - - Alt+P - Alt+B - - - Enter the message you want to sign here - Masukan pesan yang ingin ditandai disini - - - Signature - Tanda Tangan - - - Copy the current signature to the system clipboard - Salin tanda tangan terpilih ke sistem klipboard - - - Sign the message to prove you own this Bitcoin address - Tandai pesan untuk menyetujui kamu pemiliki alamat Bitcoin ini - - - Sign &Message - Tandakan &Pesan - - - Reset all sign message fields - Hapus semua bidang penanda pesan - - - &Verify Message - &Verifikasi Pesan - - - Verify &Message - Verifikasi &Pesan - - - Reset all verify message fields - Hapus semua bidang verifikasi pesan - - - Click "Sign Message" to generate signature - Tekan "Tandatangan Pesan" untuk menghasilan tanda tangan - - - The entered address is invalid. - Alamat yang dimasukkan tidak sesuai. - - - Please check the address and try again. - Silahkan periksa alamat dan coba lagi. - - - The entered address does not refer to a key. - Alamat itu tidak menghubungkan kunci. - - - Wallet unlock was cancelled. - Membuka kunci dompet dibatalkan. - - - Private key for the entered address is not available. - Kunci pribadi untuk alamat itu tidak tersedia. - - - Message signing failed. - Menandai pesan gagal. - - - Message signed. - Pesan ditandai. - - - The signature could not be decoded. - Tanda tangan tidak bisa diterjemahkan. - - - Please check the signature and try again. - Mohon periksa tanda tangan dan coba kembali - - - The signature did not match the message digest. - Tanda tangan tidak cocok dengan intisari pesan. - - - Message verification failed. - Verifikasi pesan gagal. - - - Message verified. - Pesan terverifikasi. - - - - SplashScreen - - Bitcoin Core - Bitcoin Core - - - The Bitcoin Core developers - Pembangun Bitcoin Core - - - [testnet] - [testnet] - - - - TrafficGraphWidget - - KB/s - KB/s - - - - TransactionDesc - - Open until %1 - Buka hingga %1 - - - conflicted - Terkonflik - - - %1/offline - %1/tidak terhubung - - - %1/unconfirmed - %1/belum dikonfirmasi - - - %1 confirmations - %1 konfirmasi - - - Status - Status - - - , broadcast through %n node(s) - kirim lewat %n node - - - Date - Tanggal - - - Source - Sumber - - - Generated - Dibuat - - - From - Dari - - - To - Untuk - - - own address - Alamat saya sendiri - - - label - label - - - Credit - Kredit - - - matures in %n more block(s) - cukup tua sesudah %n blok lagi - - - not accepted - tidak diterima - - - Debit - Debet - - - Transaction fee - Biaya Transaksi - - - Net amount - Nilai bersih - - - Message - Pesan: - - - Comment - Komentar - - - Transaction ID - ID Transaksi - - - Merchant - Pedagang - - - Debug information - Informasi debug - - - Transaction - Transaksi - - - Inputs - Masukan - - - Amount - Nilai - - - true - benar - - - false - salah - - - , has not been successfully broadcast yet - , belum berhasil disiarkan - - - Open for %n more block(s) - Buka untuk %n blok lagi - - - unknown - tidak diketahui - - - - TransactionDescDialog - - Transaction details - Rincian transaksi - - - This pane shows a detailed description of the transaction - Jendela ini menampilkan deskripsi rinci dari transaksi tersebut - - - - TransactionTableModel - - Date - Tanggal - - - Type - Jenis - - - Immature (%1 confirmations, will be available after %2) - Terlalu muda (cuma %1 konfirmasi, akan siap sesudah %2) - - - Open for %n more block(s) - Buka untuk %n blok lagi - - - Open until %1 - Buka hingga %1 - - - Confirmed (%1 confirmations) - Terkonfirmasi (%1 konfirmasi) - - - This block was not received by any other nodes and will probably not be accepted! - Blok ini tidak diterima oleh node lainnya dan kemungkinan tidak akan diterima! - - - Generated but not accepted - Terbuat tetapi tidak diterima - - - Offline - Tidak terhubung - - - Label - Label - - - Unconfirmed - Belum dikonfirmasi - - - Confirming (%1 of %2 recommended confirmations) - Sedang dikonfirmasi (%1 dari %2 konfirmasi disarankan) - - - Conflicted - Terkonflik - - - Received with - Diterima dengan - - - Received from - Diterima dari - - - Sent to - Terkirim ke - - - Payment to yourself - Pembayaran ke Anda sendiri - - - Mined - Tertambang - - - (n/a) - (t/s) - - - Transaction status. Hover over this field to show number of confirmations. - Status transaksi. Arahkan ke bagian ini untuk menampilkan jumlah konfrimasi. - - - Date and time that the transaction was received. - Tanggal dan waktu transaksi tersebut diterima. - - - Type of transaction. - Jenis transaksi. - - - Amount removed from or added to balance. - Nilai dihapus dari atau ditambahkan ke saldo. - - - - TransactionView - - All - Semua - - - Today - Hari ini - - - This week - Minggu ini - - - This month - Bulan ini - - - Last month - Bulan kemarin - - - This year - Tahun ini - - - Range... - Jarak... - - - Received with - DIterima dengan - - - Sent to - Terkirim ke - - - To yourself - Ke Anda sendiri - - - Mined - Ditambang - - - Other - Lainnya - - - Enter address or label to search - Masukkan alamat atau label untuk mencari - - - Min amount - Nilai min - - - Copy address - Salin alamat - - - Copy label - Salin label - - - Copy amount - Salin Nilai - - - Copy transaction ID - Menyalinkan ID transaksi - - - Edit label - Ubah label - - - Show transaction details - Tampilkan rincian transaksi - - - Export Transaction History - Expor Histori Transaksi - - - Exporting Failed - Proses Ekspor Gagal - - - Exporting Successful - Proses Ekspor Berhasil - - - The transaction history was successfully saved to %1. - Riwayat transaksi berhasil disimpan di %1. - - - Comma separated file (*.csv) - Berkas CSV (*.csv) - - - Confirmed - Terkonfirmasi - - - Date - Tanggal - - - Type - Jenis - - - Label - Label - - - Address - Alamat - - - ID - ID - - - Range: - Jarak: - - - to - ke - - - - UnitDisplayStatusBarControl - - - WalletFrame - - No wallet has been loaded. - Tidak ada dompet yang dibuka - - - - WalletModel - - Send Coins - Kirim Koin - - - - WalletView - - &Export - &Ekspor - - - Export the data in the current tab to a file - Ekspor data dalam tab sekarang ke sebuah berkas - - - Backup Wallet - Cadangkan Dompet - - - Wallet Data (*.dat) - Data Dompet (*.dat) - - - Backup Failed - Cadangkgan Gagal - - - The wallet data was successfully saved to %1. - Informasi dalam dompet berhasil disimpan di %1. - - - Backup Successful - Cadangkan Berhasil - - - - bitcoin-core - - Options: - Pilihan: - - - Specify data directory - Tentukan direktori data - - - Connect to a node to retrieve peer addresses, and disconnect - Hubungkan ke node untuk menerima alamat peer, dan putuskan - - - Specify your own public address - Tentukan alamat publik Anda sendiri - - - Accept command line and JSON-RPC commands - Menerima perintah baris perintah dan JSON-RPC - - - Run in the background as a daemon and accept commands - Berjalan dibelakang sebagai daemin dan menerima perintah - - - Use the test network - Gunakan jaringan uji - - - Accept connections from outside (default: 1 if no -proxy or -connect) - Terima hubungan dari luar (standar: 1 kalau -proxy atau -connect tidak dipilih) - - - Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) - Jalankan perintah ketika perubahan transaksi dompet (%s di cmd digantikan oleh TxID) - - - Unable to bind to %s on this computer. Bitcoin Core is probably already running. - Tidak bisa mengikat dengan %s di computer ini. Kemungkinan Bitcoin Core sudah mulai. - - - Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. - Peringatan: -paytxfee sangat besar! Ini adalah biaya pengiriman yang akan dibayar oleh Anda jika transaksi terkirim. - - - Warning: The network does not appear to fully agree! Some miners appear to be experiencing issues. - Peringatan: Jaringan tidak semua bersetuju! Beberapa penambang dapat persoalan. - - - Warning: We do not appear to fully agree with our peers! You may need to upgrade, or other nodes may need to upgrade. - Peringatan: Kami tidak bersetujuh dengan peer-peer kami! Kemungkinan Anda harus upgrade, atau node-node lain yang harus diupgrade. - - - Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. - Awas: wallet.dat tidak bisa dibaca! Berhasil periksakan kunci-kunci dalam arsipnya, tetapi ada kemungkinan informasi tentang transaksi atau isi-isi buku alamat salah atau terhilang. - - - (default: 1) - (pengaturan awal: 1) - - - Attempt to recover private keys from a corrupt wallet.dat - Coba memulihkan kunci-kunci pribadi dari wallet.dat yang rusak - - - Block creation options: - Pilihan pembuatan blok: - - - Connect only to the specified node(s) - Jangan menghubungkan node(-node) selain yang di daftar - - - Connection options: - Pilih koneksi: - - - Corrupted block database detected - Menemukan database blok yang rusak - - - Do not load the wallet and disable wallet RPC calls - Jangan memuat dompet dan menonaktifkan panggilan dompet RPC - - - Do you want to rebuild the block database now? - Apakah Anda ingin coba membangun kembali database blok sekarang? - - - Error initializing block database - Kesalahan menginisialisasi database blok - - - Error initializing wallet database environment %s! - Kesalahan menginisialisasi dompet pada database%s! - - - Error loading block database - Gagal memuat database blok - - - Error opening block database - Menemukan masalah membukakan database blok - - - Error: Disk space is low! - Gagal: Hard disk hampir terisi! - - - Importing... - mengimpor... - - - Incorrect or no genesis block found. Wrong datadir for network? - Tidak bisa cari blok pertama, atau blok pertama salah. Salah direktori untuk jaringan? - - - Invalid -onion address: '%s' - Alamat -onion salah: '%s' - - - Not enough file descriptors available. - Deskripsi berkas tidak tersedia dengan cukup. - - - Set maximum block size in bytes (default: %d) - Atur ukuran maksimal untuk blok dalam byte (biasanya: %d) - - - Specify wallet file (within data directory) - Tentukan arsip dompet (dalam direktori data) - - - Verifying blocks... - Blok-blok sedang diverifikasi... - - - Verifying wallet... - Dompet sedang diverifikasi... - - - Wallet %s resides outside data directory %s - Dompet %s ada diluar direktori data %s - - - Wallet options: - Opsi dompet: - - - You need to rebuild the database using -reindex to change -txindex - Harus membangun ulang database menggunakan -reindex supaya mengubah -txindex - - - Imports blocks from external blk000??.dat file - Impor blok dari eksternal berkas blk000???.dat - - - Cannot obtain a lock on data directory %s. Bitcoin Core is probably already running. - Tidak bisa mengunci data directory %s. Kemungkinan Bitcoin Core sudah mulai. - - - Information - Informasi - - - Invalid amount for -minrelaytxfee=<amount>: '%s' - Nilai yang salah untuk -minrelaytxfee=<amount>: '%s' - - - Invalid amount for -mintxfee=<amount>: '%s' - Nilai yang salah untuk -mintxfee=<amount>: '%s' - - - RPC server options: - Opsi server RPC: - - - Send trace/debug info to console instead of debug.log file - Kirim info jejak/debug ke konsol bukan berkas debug.log - - - Set language, for example "de_DE" (default: system locale) - Atur bahasa, sebagai contoh "id_ID" (standar: system locale) - - - Show splash screen on startup (default: 1) - Tampilkan layar pembuka saat nyala (standar: 1) - - - Shrink debug.log file on client startup (default: 1 when no -debug) - Mengecilkan berkas debug.log saat klien berjalan (Standar: 1 jika tidak -debug) - - - Signing transaction failed - Tandatangani transaksi tergagal - - - Start minimized - Memulai terminimalisi - - - Transaction amount too small - Nilai transaksi terlalu kecil - - - Transaction amounts must be positive - Nilai transaksi harus positif - - - Transaction too large - Transaksi terlalu besar - - - Username for JSON-RPC connections - Nama pengguna untuk hubungan JSON-RPC - - - Warning - Peringatan - - - Zapping all transactions from wallet... - Setiap transaksi dalam dompet sedang di-'Zap'... - - - wallet.dat corrupt, salvage failed - wallet.dat rusak, tidak bisa diperbaiki - - - Password for JSON-RPC connections - Kata sandi untuk hubungan JSON-RPC - - - Execute command when the best block changes (%s in cmd is replaced by block hash) - Menjalankan perintah ketika perubahan blok terbaik (%s dalam cmd digantikan oleh hash blok) - - - Upgrade wallet to latest format - Perbarui dompet ke format terbaru - - - Rescan the block chain for missing wallet transactions - Pindai ulang rantai-blok untuk transaksi dompet yang hilang - - - Use OpenSSL (https) for JSON-RPC connections - Gunakan OpenSSL (https) untuk hubungan JSON-RPC - - - This help message - Pesan bantuan ini - - - Allow DNS lookups for -addnode, -seednode and -connect - Izinkan peninjauan DNS untuk -addnote, -seednode dan -connect - - - Loading addresses... - Memuat alamat... - - - Error loading wallet.dat: Wallet corrupted - Gagal memuat wallet.dat: Dompet rusak - - - Error loading wallet.dat - Gagal memuat wallet.dat - - - Invalid -proxy address: '%s' - Alamat -proxy salah: '%s' - - - Unknown network specified in -onlynet: '%s' - Jaringan tidak diketahui yang ditentukan dalam -onlynet: '%s' - - - Cannot resolve -bind address: '%s' - Tidak dapat menyelesaikan alamat -bind: '%s' - - - Cannot resolve -externalip address: '%s' - Tidak dapat menyelesaikan alamat -externalip: '%s' - - - Invalid amount for -paytxfee=<amount>: '%s' - Nilai salah untuk -paytxfee=<amount>: '%s' - - - Insufficient funds - Saldo tidak mencukupi - - - Loading block index... - Memuat indeks blok... - - - Add a node to connect to and attempt to keep the connection open - Tambahkan node untuk dihubungkan dan upaya untuk menjaga hubungan tetap terbuka - - - Loading wallet... - Memuat dompet... - - - Cannot downgrade wallet - Tidak dapat menurunkan versi dompet - - - Cannot write default address - Tidak dapat menyimpan alamat standar - - - Rescanning... - Memindai ulang... - - - Done loading - Memuat selesai - - - Error - Gagal - - - \ No newline at end of file diff --git a/src/qt/locale/bitcoin_it.ts b/src/qt/locale/bitcoin_it.ts deleted file mode 100644 index 0aa4ac8f8..000000000 --- a/src/qt/locale/bitcoin_it.ts +++ /dev/null @@ -1,3568 +0,0 @@ - - - AddressBookPage - - Right-click to edit address or label - Fare clic con il tasto destro del mouse per modificare l'indirizzo o l'etichetta - - - Create a new address - Crea un nuovo indirizzo - - - &New - &Nuovo - - - Copy the currently selected address to the system clipboard - Copia negli appunti l'indirizzo attualmente selezionato - - - &Copy - &Copia - - - C&lose - C&hiudi - - - &Copy Address - &Copia l'indirizzo - - - Delete the currently selected address from the list - Rimuove dalla lista l'indirizzo attualmente selezionato - - - Export the data in the current tab to a file - Esporta su file i dati contenuti nella tabella corrente - - - &Export - &Esporta - - - &Delete - &Elimina - - - Choose the address to send coins to - Scegli l'indirizzo a cui inviare bitcoin - - - Choose the address to receive coins with - Scegli l'indirizzo con cui ricevere bitcoin - - - C&hoose - Sc&egli - - - Sending addresses - Indirizzi d'invio - - - Receiving addresses - Indirizzi di ricezione - - - These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins. - Questo è un elenco di indirizzi Bitcoin a cui puoi inviare pagamenti. Controlla sempre l'importo e l'indirizzo del beneficiario prima di inviare bitcoin. - - - These are your Bitcoin addresses for receiving payments. It is recommended to use a new receiving address for each transaction. - Questi sono i tuoi indirizzi Bitcoin che puoi usare per ricevere pagamenti. Si raccomanda di generare un nuovo indirizzo per ogni transazione. - - - Copy &Label - Copia &l'etichetta - - - &Edit - &Modifica - - - Export Address List - Esporta Lista Indirizzi - - - Comma separated file (*.csv) - Testo CSV (*.csv) - - - Exporting Failed - Esportazione Fallita. - - - There was an error trying to save the address list to %1. Please try again. - Si è verificato un errore tentando di salvare la lista degli indirizzi su %1. Si prega di riprovare. - - - - AddressTableModel - - Label - Etichetta - - - Address - Indirizzo - - - (no label) - (nessuna etichetta) - - - - AskPassphraseDialog - - Passphrase Dialog - Finestra passphrase - - - Enter passphrase - Inserisci la passphrase - - - New passphrase - Nuova passphrase - - - Repeat new passphrase - Ripeti la nuova passphrase - - - Encrypt wallet - Cifra il portamonete - - - This operation needs your wallet passphrase to unlock the wallet. - Questa operazione necessita della passphrase per sbloccare il portamonete. - - - Unlock wallet - Sblocca il portamonete - - - This operation needs your wallet passphrase to decrypt the wallet. - Quest'operazione necessita della passphrase per decifrare il portamonete, - - - Decrypt wallet - Decifra il portamonete - - - Change passphrase - Cambia la passphrase - - - Confirm wallet encryption - Conferma la cifratura del portamonete - - - Warning: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR BITCOINS</b>! - Attenzione: perdendo la passphrase di un portamonete cifrato <b>TUTTI I PROPRI BITCOIN ANDRANNO PERSI</b>! - - - Are you sure you wish to encrypt your wallet? - Si è sicuri di voler cifrare il portamonete? - - - Bitcoin Core 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. - Bitcoin Core si chiuderà per portare a termine il processo di cifratura. Si ricorda che la cifratura del portamonete non garantisce protezione totale contro i furti causati da infezioni malware. - - - 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. - IMPORTANTE: qualsiasi backup del file portamonete effettuato in precedenza dovrà essere sostituito con il file del portamonete cifrato appena generato. Per ragioni di sicurezza, i precedenti backup del file del portamonete non cifrato diventeranno inservibili non appena si inizierà ad utilizzare il nuovo portamonete cifrato. - - - Warning: The Caps Lock key is on! - Attenzione: il tasto Blocco maiuscole è attivo! - - - Wallet encrypted - Portamonete cifrato - - - 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>. - Inserisci la nuova passphrase per il portamonete.<br/>Si consiglia di utilizzare <b>almeno dieci caratteri casuali</b> oppure <b>otto o più parole</b>. - - - Enter the old passphrase and new passphrase to the wallet. - Inserisci la vecchia e la nuova passphrase per il portamonete. - - - Wallet encryption failed - Cifratura del portamonete fallita - - - Wallet encryption failed due to an internal error. Your wallet was not encrypted. - Cifratura del portamonete fallita a causa di un errore interno. Il portamonete non è stato cifrato. - - - The supplied passphrases do not match. - Le passphrase inserite non corrispondono. - - - Wallet unlock failed - Sblocco del portamonete fallito - - - The passphrase entered for the wallet decryption was incorrect. - La passphrase inserita per la decifrazione del portamonete è errata. - - - Wallet decryption failed - Decifrazione del portamonete fallita - - - Wallet passphrase was successfully changed. - Passphrase del portamonete modificata con successo. - - - - BitcoinGUI - - Sign &message... - Firma &messaggio... - - - Synchronizing with network... - Sincronizzazione con la rete in corso... - - - &Overview - &Sintesi - - - Node - Nodo - - - Show general overview of wallet - Mostra lo stato generale del portamonete - - - &Transactions - &Transazioni - - - Browse transaction history - Mostra la cronologia delle transazioni - - - E&xit - &Esci - - - Quit application - Chiudi applicazione - - - About &Qt - Informazioni su &Qt - - - Show information about Qt - Mostra le informazioni su Qt - - - &Options... - &Opzioni... - - - &Encrypt Wallet... - &Cifra il portamonete... - - - &Backup Wallet... - &Backup portamonete... - - - &Change Passphrase... - &Cambia passphrase... - - - &Sending addresses... - &Indirizzi d'invio... - - - &Receiving addresses... - Indirizzi di &ricezione... - - - Open &URI... - Apri &URI... - - - Bitcoin Core client - Bitcoin Core client - - - Importing blocks from disk... - Importazione blocchi dal disco... - - - Reindexing blocks on disk... - Re-indicizzazione blocchi su disco... - - - Send coins to a Bitcoin address - Invia fondi ad un indirizzo Bitcoin - - - Backup wallet to another location - Effettua il backup del portamonete - - - Change the passphrase used for wallet encryption - Cambia la passphrase utilizzata per la cifratura del portamonete - - - &Debug window - Finestra di &debug - - - Open debugging and diagnostic console - Apri la console di debugging e diagnostica - - - &Verify message... - &Verifica messaggio... - - - Bitcoin - Bitcoin - - - Wallet - Portamonete - - - &Send - &Invia - - - &Receive - &Ricevi - - - Show information about Bitcoin Core - Mostra le informazioni su Bitcoin Core - - - &Show / Hide - &Mostra / Nascondi - - - Show or hide the main Window - Mostra o nascondi la Finestra principale - - - Encrypt the private keys that belong to your wallet - Cifra le chiavi private che appartengono al tuo portamonete - - - Sign messages with your Bitcoin addresses to prove you own them - Firma messaggi con i tuoi indirizzi Bitcoin per dimostrarne il possesso - - - Verify messages to ensure they were signed with specified Bitcoin addresses - Verifica che i messaggi siano stati firmati con gli indirizzi Bitcoin specificati - - - &File - &File - - - &Settings - &Impostazioni - - - &Help - &Aiuto - - - Tabs toolbar - Barra degli strumenti - - - Bitcoin Core - Bitcoin Core - - - Request payments (generates QR codes and bitcoin: URIs) - Richiedi pagamenti (genera codici QR e bitcoin: URI) - - - &About Bitcoin Core - &Informazioni su Bitcoin Core - - - Modify configuration options for Bitcoin Core - Modifica opzioni di configurazione per Bitcoin Core - - - Show the list of used sending addresses and labels - Mostra la lista degli indirizzi di invio utilizzati - - - Show the list of used receiving addresses and labels - Mostra la lista degli indirizzi di ricezione utilizzati - - - Open a bitcoin: URI or payment request - Apri un bitcoin: URI o una richiesta di pagamento - - - &Command-line options - Opzioni della riga di &comando - - - Show the Bitcoin Core help message to get a list with possible Bitcoin command-line options - Mostra il messaggio di aiuto di Bitcoin Core per ottenere la lista delle opzioni della riga di comando valide. - - - %n active connection(s) to Bitcoin network - %n connessione attiva alla rete Bitcoin%n connessioni alla rete Bitcoin attive - - - No block source available... - Nessuna fonte di blocchi disponibile... - - - Processed %n block(s) of transaction history. - Elaborato %n blocco dello storico transazioni.Elaborati %n blocchi dello storico transazioni. - - - %n hour(s) - %n ora%n ore - - - %n day(s) - %n giorno%n giorni - - - %n week(s) - %n settimana%n settimane - - - %1 and %2 - %1 e %2 - - - %n year(s) - %n anno%n anni - - - %1 behind - Indietro di %1 - - - Last received block was generated %1 ago. - L'ultimo blocco ricevuto è stato generato %1 fa. - - - Transactions after this will not yet be visible. - Le transazioni effettuate successivamente non sono ancora visibili. - - - Error - Errore - - - Warning - Attenzione - - - Information - Informazioni - - - Up to date - Aggiornato - - - Catching up... - In aggiornamento... - - - Date: %1 - - Data: %1 - - - - Amount: %1 - - Quantità: %1 - - - - Type: %1 - - Tipo: %1 - - - - Label: %1 - - Etichetta: %1 - - - - Address: %1 - - Indirizzo: %1 - - - - Sent transaction - Transazione inviata - - - Incoming transaction - Transazione ricevuta - - - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - Il portamonete è <b>cifrato</b> ed attualmente <b>sbloccato</b> - - - Wallet is <b>encrypted</b> and currently <b>locked</b> - Il portamonete è <b>cifrato</b> ed attualmente <b>bloccato</b> - - - - ClientModel - - Network Alert - Avviso di rete - - - - CoinControlDialog - - Coin Selection - Selezione Input - - - Quantity: - Quantità: - - - Bytes: - Byte: - - - Amount: - Importo: - - - Priority: - Priorità: - - - Fee: - Commissione: - - - Dust: - Trascurabile: - - - After Fee: - Dopo Commissione: - - - Change: - Resto: - - - (un)select all - (de)seleziona tutto - - - Tree mode - Modalità Albero - - - List mode - Modalità Lista - - - Amount - Importo - - - Received with label - Ricevuto con l'etichetta - - - Received with address - Ricevuto con l'indirizzo - - - Date - Data - - - Confirmations - Conferme - - - Confirmed - Confermato - - - Priority - Priorità - - - Copy address - Copia l'indirizzo - - - Copy label - Copia l'etichetta - - - Copy amount - Copia importo - - - Copy transaction ID - Copia l'ID transazione - - - Lock unspent - Bloccare non spesi - - - Unlock unspent - Sbloccare non spesi - - - Copy quantity - Copia quantità - - - Copy fee - Copia commissione - - - Copy after fee - Copia dopo commissione - - - Copy bytes - Copia byte - - - Copy priority - Copia priorità - - - Copy dust - Copia trascurabile - - - Copy change - Copia resto - - - highest - massima - - - higher - molto alta - - - high - alta - - - medium-high - medio-alta - - - medium - media - - - low-medium - medio-bassa - - - low - bassa - - - lower - molto bassa - - - lowest - minima - - - (%1 locked) - (%1 bloccato) - - - none - nessuno - - - This label turns red if the transaction size is greater than 1000 bytes. - Questa etichetta diventerà rossa se la dimensione della transazione supererà i 1000 byte. - - - This label turns red if the priority is smaller than "medium". - Questa etichetta diventerà rossa se la priorità sarà inferiore a "media". - - - This label turns red if any recipient receives an amount smaller than %1. - Questa etichetta diventerà rossa se uno qualsiasi dei destinatari riceverà un importo inferiore a %1. - - - Can vary +/- %1 satoshi(s) per input. - Può variare di +/- %1 satoshi per input. - - - yes - sì - - - no - no - - - This means a fee of at least %1 per kB is required. - In tal caso sarà necessaria una commissione di almeno %1 per ogni kB. - - - Can vary +/- 1 byte per input. - Può variare di +/- 1 byte per input. - - - Transactions with higher priority are more likely to get included into a block. - Le transazioni con priorità più alta hanno più probabilità di essere incluse in un blocco. - - - (no label) - (nessuna etichetta) - - - change from %1 (%2) - resto da %1 (%2) - - - (change) - (resto) - - - - EditAddressDialog - - Edit Address - Modifica l'indirizzo - - - &Label - &Etichetta - - - The label associated with this address list entry - L'etichetta associata con questa voce della lista degli indirizzi - - - The address associated with this address list entry. This can only be modified for sending addresses. - L'indirizzo associato con questa voce della lista degli indirizzi. Può essere modificato solo per gli indirizzi d'invio. - - - &Address - &Indirizzo - - - New receiving address - Nuovo indirizzo di ricezione - - - New sending address - Nuovo indirizzo d'invio - - - Edit receiving address - Modifica indirizzo di ricezione - - - Edit sending address - Modifica indirizzo d'invio - - - The entered address "%1" is already in the address book. - L'indirizzo "%1" è già presente in rubrica. - - - The entered address "%1" is not a valid Bitcoin address. - L'indirizzo "%1" non è un indirizzo bitcoin valido. - - - Could not unlock wallet. - Impossibile sbloccare il portamonete. - - - New key generation failed. - Generazione della nuova chiave non riuscita. - - - - FreespaceChecker - - A new data directory will be created. - Sarà creata una nuova cartella dati. - - - name - nome - - - Directory already exists. Add %1 if you intend to create a new directory here. - Cartella già esistente. Aggiungi %1 se intendi creare qui una nuova cartella. - - - Path already exists, and is not a directory. - Il percorso è già esistente e non è una cartella. - - - Cannot create data directory here. - Impossibile creare una cartella dati qui. - - - - HelpMessageDialog - - Bitcoin Core - Bitcoin Core - - - version - versione - - - (%1-bit) - (%1-bit) - - - About Bitcoin Core - Informazioni su Bitcoin Core - - - Command-line options - Opzioni della riga di comando - - - Usage: - Utilizzo: - - - command-line options - opzioni della riga di comando - - - - Intro - - Welcome - Benvenuto - - - Welcome to Bitcoin Core. - Benvenuti su Bitcoin Core. - - - As this is the first time the program is launched, you can choose where Bitcoin Core will store its data. - Visto che questa è la prima volta che il programma viene lanciato, puoi scegliere dove Bitcoin Core salverà i propri dati. - - - Bitcoin Core will download and store a copy of the Bitcoin block chain. At least %1GB of data will be stored in this directory, and it will grow over time. The wallet will also be stored in this directory. - Bitcoin Core scaricherà e salverà una copia della block chain di Bitcoin. Il portamonete ed almeno %1GB di dati saranno salvati in questa cartella. Si ricorda che lo spazio occupato andrà ad aumentare nel tempo. - - - Use the default data directory - Usa la cartella dati predefinita - - - Use a custom data directory: - Usa una cartella dati personalizzata: - - - Bitcoin Core - Bitcoin Core - - - Error: Specified data directory "%1" cannot be created. - Errore: La cartella dati "%1" specificata non può essere creata. - - - Error - Errore - - - - OpenURIDialog - - Open URI - Apri URI - - - Open payment request from URI or file - Apri richiesta di pagamento da URI o file - - - URI: - URI: - - - Select payment request file - Seleziona il file di richiesta di pagamento - - - Select payment request file to open - Seleziona il file di richiesta di pagamento da aprire - - - - OptionsDialog - - Options - Opzioni - - - &Main - &Principale - - - Size of &database cache - Dimensione della cache del &database. - - - MB - MB - - - Number of script &verification threads - Numero di thread di &verifica degli script - - - Accept connections from outside - Accetta connessioni provenienti dall'esterno - - - Allow incoming connections - Permetti connessioni in ingresso - - - IP address of the proxy (e.g. IPv4: 127.0.0.1 / IPv6: ::1) - Indirizzo IP del proxy (ad es. IPv4: 127.0.0.1 / IPv6: ::1) - - - Minimize instead of exit the application when the window is closed. When this option is enabled, the application will be closed only after selecting Exit in the menu. - Riduci ad icona invece di uscire dall'applicazione quando la finestra viene chiusa. Attivando questa opzione l'applicazione terminerà solo dopo aver selezionato Esci dal menu File. - - - The user interface language can be set here. This setting will take effect after restarting Bitcoin Core. - La lingua dell'interfaccia utente può essere impostata qui. L'applicazione delle modifiche avrà effetto dopo il riavvio di Bitcoin Core. - - - 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 |. - URL di terze parti (ad es. un block explorer) che appaiono nella tabella delle transazioni come voci nel menu contestuale. "%s" nell'URL è sostituito dall'hash della transazione. -Per specificare più URL separarli con una barra verticale "|". - - - Third party transaction URLs - URL di transazione di terze parti - - - Active command-line options that override above options: - Opzioni della riga di comando attive che sostituiscono i settaggi sopra elencati: - - - Reset all client options to default. - Reimposta tutte le opzioni del client allo stato predefinito. - - - &Reset Options - &Ripristina Opzioni - - - &Network - Rete - - - Automatically start Bitcoin Core after logging in to the system. - Avvia automaticamente Bitcoin Core una volta effettuato l'accesso al sistema. - - - &Start Bitcoin Core on system login - &Avvia Bitcoin Core all'accesso al sistema - - - (0 = auto, <0 = leave that many cores free) - (0 = automatico, <0 = lascia questo numero di core liberi) - - - W&allet - Port&amonete - - - Expert - Esperti - - - Enable coin &control features - Abilita le funzionalità di coin &control - - - 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. - Disabilitando l'uso di resti non confermati, il resto di una transazione non potrà essere speso fino a quando non avrà ottenuto almeno una conferma. Questa impostazione influisce inoltre sul calcolo del saldo. - - - &Spend unconfirmed change - &Spendi resti non confermati - - - Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled. - Apri automaticamente la porta del client Bitcoin sul router. Il protocollo UPnP deve essere supportato da parte del router ed attivo. - - - Map port using &UPnP - Mappa le porte tramite &UPnP - - - Connect to the Bitcoin network through a SOCKS5 proxy. - Connessione alla rete Bitcoin attraverso un proxy SOCKS5. - - - &Connect through SOCKS5 proxy (default proxy): - &Connessione attraverso proxy SOCKS5 (proxy predefinito): - - - Proxy &IP: - &IP del proxy: - - - &Port: - &Porta: - - - Port of the proxy (e.g. 9050) - Porta del proxy (ad es. 9050) - - - &Window - &Finestra - - - Show only a tray icon after minimizing the window. - Mostra solo nella tray bar quando si riduce ad icona. - - - &Minimize to the tray instead of the taskbar - &Minimizza nella tray bar invece che sulla barra delle applicazioni - - - M&inimize on close - M&inimizza alla chiusura - - - &Display - &Mostra - - - User Interface &language: - &Lingua Interfaccia Utente: - - - &Unit to show amounts in: - &Unità di misura con cui visualizzare gli importi: - - - Choose the default subdivision unit to show in the interface and when sending coins. - Scegli l'unità di suddivisione predefinita da utilizzare per l'interfaccia e per l'invio di bitcoin. - - - Whether to show coin control features or not. - Specifica se le funzionalita di coin control saranno visualizzate. - - - &OK - &OK - - - &Cancel - &Cancella - - - default - predefinito - - - none - nessuno - - - Confirm options reset - Conferma ripristino opzioni - - - Client restart required to activate changes. - È necessario un riavvio del client per applicare le modifiche. - - - Client will be shut down. Do you want to proceed? - Il client sarà arrestato. Si desidera procedere? - - - This change would require a client restart. - Questa modifica richiede un riavvio del client. - - - The supplied proxy address is invalid. - L'indirizzo proxy che hai fornito non è valido. - - - - OverviewPage - - Form - Modulo - - - The displayed information may be out of date. Your wallet automatically synchronizes with the Bitcoin network after a connection is established, but this process has not completed yet. - Le informazioni visualizzate potrebbero non essere aggiornate. Il portamonete si sincronizza automaticamente con la rete Bitcoin una volta stabilita una connessione, ma questo processo non è ancora stato completato. - - - Watch-only: - Sola lettura: - - - Available: - Disponibile: - - - Your current spendable balance - Il tuo saldo spendibile attuale - - - Pending: - In attesa: - - - Total of transactions that have yet to be confirmed, and do not yet count toward the spendable balance - Totale delle transazioni in corso di conferma e che non sono ancora conteggiate nel saldo spendibile - - - Immature: - Immaturo: - - - Mined balance that has not yet matured - Importo generato dal mining e non ancora maturato - - - Balances - Saldo - - - Total: - Totale: - - - Your current total balance - Il tuo saldo totale attuale - - - Your current balance in watch-only addresses - Il tuo saldo attuale negli indirizzi di sola lettura - - - Spendable: - Spendibile: - - - Recent transactions - Transazioni recenti - - - Unconfirmed transactions to watch-only addresses - Transazioni non confermate su indirizzi di sola lettura - - - Mined balance in watch-only addresses that has not yet matured - Importo generato dal mining su indirizzi di sola lettura e non ancora maturato - - - Current total balance in watch-only addresses - Saldo corrente totale negli indirizzi di sola lettura - - - - PaymentServer - - URI handling - Gestione URI - - - Invalid payment address %1 - Indirizzo di pagamento non valido %1 - - - Payment request rejected - Richiesta di pagamento respinta - - - Payment request network doesn't match client network. - La rete della richiesta di pagamento non corrisponde alla rete del client. - - - Payment request is not initialized. - La richiesta di pagamento non è stata inizializzata. - - - Requested payment amount of %1 is too small (considered dust). - L'importo di pagamento di %1 richiesto è troppo basso (considerato come trascurabile). - - - Payment request error - Errore di richiesta di pagamento - - - Cannot start bitcoin: click-to-pay handler - Impossibile avviare bitcoin: gestore click-to-pay - - - Payment request fetch URL is invalid: %1 - URL di recupero della Richiesta di pagamento non valido: %1 - - - URI cannot be parsed! This can be caused by an invalid Bitcoin address or malformed URI parameters. - Impossibile interpretare l'URI! I parametri URI o l'indirizzo Bitcoin potrebbero non essere corretti. - - - Payment request file handling - Gestione del file di richiesta del pagamento - - - Payment request file cannot be read! This can be caused by an invalid payment request file. - Impossibile leggere il file della richiesta di pagamento! Il file della richiesta di pagamento potrebbe non essere valido. - - - Payment request expired. - Richiesta di pagamento scaduta. - - - Unverified payment requests to custom payment scripts are unsupported. - Le richieste di pagamento non verificate verso script di pagamento personalizzati non sono supportate. - - - Invalid payment request. - Richiesta di pagamento non valida. - - - Refund from %1 - Rimborso da %1 - - - Payment request %1 is too large (%2 bytes, allowed %3 bytes). - La richiesta di pagamento %1 (%2 byte) supera la dimensione massima di %3 byte. - - - Payment request DoS protection - Protezione DoS per la richiesta di pagamento - - - Error communicating with %1: %2 - Errore di comunicazione con %1: %2 - - - Payment request cannot be parsed! - La richiesta di pagamento non può essere analizzata! - - - Bad response from server %1 - Risposta errata da parte del server %1 - - - Payment acknowledged - Pagamento riconosciuto - - - Network request error - Errore di richiesta di rete - - - - PeerTableModel - - User Agent - User Agent - - - Node/Service - Nodo/Servizio - - - Ping Time - Tempo di ping - - - - QObject - - Amount - Importo - - - Enter a Bitcoin address (e.g. %1) - Inserisci un indirizzo Bitcoin (ad es. %1) - - - %1 d - %1 d - - - %1 h - %1 h - - - %1 m - %1 m - - - %1 s - %1 s - - - None - Nessuno - - - N/A - N/D - - - %1 ms - %1 ms - - - - QRImageWidget - - &Save Image... - &Salva Immagine... - - - &Copy Image - &Copia Immagine - - - Save QR Code - Salva codice QR - - - PNG Image (*.png) - Immagine PNG (*.png) - - - - RPCConsole - - Client name - Nome del client - - - N/A - N/D - - - Client version - Versione client - - - &Information - &Informazioni - - - Debug window - Finestra di debug - - - General - Generale - - - Using OpenSSL version - Versione OpenSSL in uso - - - Using BerkeleyDB version - Versione BerkeleyDB in uso - - - Startup time - Ora di avvio - - - Network - Rete - - - Name - Nome - - - Number of connections - Numero di connessioni - - - Block chain - Block chain - - - Current number of blocks - Numero attuale di blocchi - - - Open the Bitcoin Core debug log file from the current data directory. This can take a few seconds for large log files. - Apre il file log di debug di Bitcoin Core dalla cartella dati attuale. Questa azione può richiedere alcuni secondi per file log di grandi dimensioni. - - - Received - Ricevuto - - - Sent - Inviato - - - &Peers - &Peer - - - Select a peer to view detailed information. - Seleziona un peer per visualizzare informazioni più dettagliate. - - - Direction - Direzione - - - Version - Versione - - - User Agent - User Agent - - - Services - Servizi - - - Starting Height - Nr. Blocco Iniziale - - - Sync Height - Nr. Blocco Sincronizzato - - - Ban Score - Punteggio di Ban - - - Connection Time - Tempo di Connessione - - - Last Send - Ultimo Invio - - - Last Receive - Ultima Ricezione - - - Bytes Sent - Byte Inviati - - - Bytes Received - Byte Ricevuti - - - Ping Time - Tempo di Ping - - - Time Offset - Scarto Temporale - - - Last block time - Ora del blocco più recente - - - &Open - &Apri - - - &Console - &Console - - - &Network Traffic - &Traffico di Rete - - - &Clear - &Cancella - - - Totals - Totali - - - In: - Entrata: - - - Out: - Uscita: - - - Build date - Data di creazione - - - Debug log file - File log del Debug - - - Clear console - Cancella console - - - Welcome to the Bitcoin Core RPC console. - Benvenuto nella console RPC di Bitcoin Core. - - - Use up and down arrows to navigate history, and <b>Ctrl-L</b> to clear screen. - Usa le frecce direzionali per scorrere la cronologia, e <b>Ctrl-L</b> per cancellarla. - - - Type <b>help</b> for an overview of available commands. - Scrivi <b>help</b> per un riassunto dei comandi disponibili. - - - %1 B - %1 B - - - %1 KB - %1 KB - - - %1 MB - %1 MB - - - %1 GB - %1 GB - - - via %1 - via %1 - - - never - mai - - - Inbound - In entrata - - - Outbound - In uscita - - - Unknown - Sconosciuto - - - Fetching... - Recuperando... - - - - ReceiveCoinsDialog - - &Amount: - &Importo: - - - &Label: - &Etichetta: - - - &Message: - &Messaggio: - - - Reuse one of the previously used receiving addresses. Reusing addresses has security and privacy issues. Do not use this unless re-generating a payment request made before. - Riutilizza uno degli indirizzi di ricezione generati in precedenza. Riutilizzare un indirizzo comporta problemi di sicurezza e privacy. Non selezionare questa opzione a meno che non si stia rigenerando una richiesta di pagamento creata in precedenza. - - - R&euse an existing receiving address (not recommended) - R&iusa un indirizzo di ricezione (non raccomandato) - - - An optional message to attach to the payment request, which will be displayed when the request is opened. Note: The message will not be sent with the payment over the Bitcoin network. - Un messaggio opzionale da allegare e mostrare all'apertura della richiesta di pagamento. Nota: Il messaggio non sarà inviato con il pagamento sulla rete Bitcoin. - - - An optional label to associate with the new receiving address. - Un'etichetta opzionale da associare al nuovo indirizzo di ricezione. - - - Use this form to request payments. All fields are <b>optional</b>. - Usa questo modulo per richiedere pagamenti. Tutti i campi sono <b>opzionali</b>. - - - An optional amount to request. Leave this empty or zero to not request a specific amount. - Un importo opzionale da associare alla richiesta. Lasciare vuoto o a zero per non richiedere un importo specifico. - - - Clear all fields of the form. - Cancellare tutti i campi del modulo. - - - Clear - Cancella - - - Requested payments history - Cronologia pagamenti richiesti - - - &Request payment - &Richiedi pagamento - - - Show the selected request (does the same as double clicking an entry) - Mostra la richiesta selezionata (produce lo stesso effetto di un doppio click su una voce) - - - Show - Mostra - - - Remove the selected entries from the list - Rimuovi le voci selezionate dalla lista - - - Remove - Rimuovi - - - Copy label - Copia l'etichetta - - - Copy message - Copia il messaggio - - - Copy amount - Copia l'importo - - - - ReceiveRequestDialog - - QR Code - Codice QR - - - Copy &URI - Copia &URI - - - Copy &Address - Copia &Indirizzo - - - &Save Image... - &Salva Immagine... - - - Request payment to %1 - Richiesta di pagamento a %1 - - - Payment information - Informazioni pagamento - - - URI - URI - - - Address - Indirizzo - - - Amount - Importo - - - Label - Etichetta - - - Message - Messaggio - - - Resulting URI too long, try to reduce the text for label / message. - L'URI risultante è troppo lungo, prova a ridurre il testo nell'etichetta / messaggio. - - - Error encoding URI into QR Code. - Errore nella codifica dell'URI nel codice QR. - - - - RecentRequestsTableModel - - Date - Data - - - Label - Etichetta - - - Message - Messaggio - - - Amount - Importo - - - (no label) - (nessuna etichetta) - - - (no message) - (nessun messaggio) - - - (no amount) - (nessun importo) - - - - SendCoinsDialog - - Send Coins - Invia Bitcoin - - - Coin Control Features - Funzionalità di Coin Control - - - Inputs... - Input... - - - automatically selected - selezionato automaticamente - - - Insufficient funds! - Fondi insufficienti! - - - Quantity: - Quantità: - - - Bytes: - Byte: - - - Amount: - Importo: - - - Priority: - Priorità: - - - Fee: - Commissione: - - - After Fee: - Dopo Commissione: - - - Change: - Resto: - - - If this is activated, but the change address is empty or invalid, change will be sent to a newly generated address. - In caso di abilitazione con indirizzo vuoto o non valido, il resto sarà inviato ad un nuovo indirizzo generato appositamente. - - - Custom change address - Personalizza indirizzo di resto - - - Transaction Fee: - Commissione di Transazione: - - - Choose... - Scegli... - - - collapse fee-settings - minimizza le impostazioni di commissione - - - per kilobyte - per kilobyte - - - 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. - Se la commissione personalizzata è impostata su 1000 satoshi e la transazione è di soli 250 byte, allora "per kilobyte" paga solo 250 satoshi di commissione, mentre "somma almeno" paga 1000 satoshi. Per transazioni più grandi di un kilobyte, entrambe le opzioni pagano al kilobyte. - - - Hide - Nascondi - - - total at least - somma almeno - - - 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. - Non vi è alcuna controindicazione a pagare la commissione minima, a patto che il volume delle transazioni sia inferiore allo spazio disponibile nei blocchi. Occorre comunque essere consapevoli che ciò potrebbe impedire la conferma delle transazioni nel caso in cui la rete risultasse satura. - - - (read the tooltip) - (leggi il suggerimento) - - - Recommended: - Raccomandata: - - - Custom: - Personalizzata: - - - (Smart fee not initialized yet. This usually takes a few blocks...) - (Commissione intelligente non ancora inizializzata. Normalmente richiede un'attesa di alcuni blocchi...) - - - Confirmation time: - Tempo di conferma: - - - normal - normale - - - fast - veloce - - - Send as zero-fee transaction if possible - Invia come transazione a zero commissioni se possibile - - - (confirmation may take longer) - (la conferma potrebbe richiedere più tempo) - - - Send to multiple recipients at once - Invia simultaneamente a più beneficiari - - - Add &Recipient - &Aggiungi beneficiario - - - Clear all fields of the form. - Cancellare tutti i campi del modulo. - - - Dust: - Trascurabile: - - - Clear &All - Cancella &tutto - - - Balance: - Saldo: - - - Confirm the send action - Conferma l'azione di invio - - - S&end - &Invia - - - Confirm send coins - Conferma l'invio di bitcoin - - - %1 to %2 - %1 a %2 - - - Copy quantity - Copia quantità - - - Copy amount - Copia importo - - - Copy fee - Copia commissione - - - Copy after fee - Copia dopo commissione - - - Copy bytes - Copia byte - - - Copy priority - Copia priorità - - - Copy change - Copia resto - - - or - o - - - The amount to pay must be larger than 0. - L'importo da pagare deve essere maggiore di 0. - - - The amount exceeds your balance. - L'importo è superiore al tuo saldo attuale. - - - The total exceeds your balance when the %1 transaction fee is included. - Il totale è superiore al tuo saldo attuale includendo la commissione di %1. - - - Transaction creation failed! - Creazione transazione fallita! - - - 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. - La transazione è stata respinta! Questo può accadere se alcuni bitcoin nel tuo portamonete sono già stati spesi, come nel caso in cui tu avessi utilizzato una copia del file wallet.dat per spendere bitcoin e questi non fossero stati considerati come spesi dal portamonete corrente. - - - A fee higher than %1 is considered an absurdly high fee. - Una commissione maggiore di %1 è considerata irragionevolmente elevata. - - - Payment request expired. - Richiesta di pagamento scaduta. - - - Pay only the minimum fee of %1 - Paga solamente la commissione minima di %1 - - - The recipient address is not valid. Please recheck. - L'indirizzo del beneficiario non è valido. Si prega di ricontrollare. - - - Duplicate address found: addresses should only be used once each. - Rilevato un indirizzo duplicato Ciascun indirizzo dovrebbe essere utilizzato una sola volta. - - - Warning: Invalid Bitcoin address - Attenzione: Indirizzo Bitcoin non valido - - - (no label) - (nessuna etichetta) - - - Warning: Unknown change address - Attenzione: Indirizzo per il resto sconosciuto - - - Copy dust - Copia trascurabile - - - Are you sure you want to send? - Sei sicuro di voler inviare? - - - added as transaction fee - aggiunto come tassa di transazione - - - - SendCoinsEntry - - A&mount: - &Importo: - - - Pay &To: - Paga &a: - - - Enter a label for this address to add it to your address book - Inserisci un'etichetta per questo indirizzo, per aggiungerlo alla rubrica - - - &Label: - &Etichetta: - - - Choose previously used address - Scegli un indirizzo usato precedentemente - - - This is a normal payment. - Questo è un normale pagamento. - - - The Bitcoin address to send the payment to - L'indirizzo Bitcoin a cui vuoi inviare il pagamento - - - Alt+A - Alt+A - - - Paste address from clipboard - Incollare l'indirizzo dagli appunti - - - Alt+P - Alt+P - - - Remove this entry - Rimuovi questa voce - - - The fee will be deducted from the amount being sent. The recipient will receive less bitcoins than you enter in the amount field. If multiple recipients are selected, the fee is split equally. - La commissione sarà sottratta dall'importo che si sta inviando. Il beneficiario riceverà un totale di bitcoin inferiore al valore digitato. Nel caso in cui siano stati selezionati più beneficiari la commissione sarà suddivisa in parti uguali. - - - S&ubtract fee from amount - S&ottrae la commissione dall'importo - - - Message: - Messaggio: - - - This is an unauthenticated payment request. - Questa è una richiesta di pagamento non autenticata. - - - This is an authenticated payment request. - Questa è una richiesta di pagamento autenticata. - - - Enter a label for this address to add it to the list of used addresses - Inserisci un'etichetta per questo indirizzo per aggiungerlo alla lista degli indirizzi utilizzati - - - A message that was attached to the bitcoin: URI which will be stored with the transaction for your reference. Note: This message will not be sent over the Bitcoin network. - Messaggio incluso nel bitcoin URI e che sarà memorizzato con la transazione per vostro riferimento. Nota: Questo messaggio non sarà inviato attraverso la rete Bitcoin. - - - Pay To: - Pagare a: - - - Memo: - Memo: - - - - ShutdownWindow - - Bitcoin Core is shutting down... - Arresto di Bitcoin Core in corso... - - - Do not shut down the computer until this window disappears. - Non spegnere il computer fino a quando questa finestra non si sarà chiusa. - - - - SignVerifyMessageDialog - - Signatures - Sign / Verify a Message - Firme - Firma / Verifica un messaggio - - - &Sign Message - &Firma Messaggio - - - You can sign messages/agreements with your addresses to prove you can receive bitcoins sent to them. Be careful not to sign anything vague or random, as phishing attacks may try to trick you into signing your identity over to them. Only sign fully-detailed statements you agree to. - È possibile firmare messaggi/accordi con i propri indirizzi in modo da dimostrare di poter ricevere bitcoin attraverso di essi. Si consiglia di prestare attenzione a non firmare dichiarazioni vaghe o casuali, attacchi di phishing potrebbero cercare di indurre ad apporre la firma su di esse. Si raccomanda di firmare esclusivamente dichiarazioni completamente dettagliate e delle quali si condivide in pieno il contenuto. - - - The Bitcoin address to sign the message with - L'indirizzo Bitcoin da utilizzare per firmare il messaggio - - - Choose previously used address - Scegli un indirizzo usato precedentemente - - - Alt+A - Alt+A - - - Paste address from clipboard - Incolla l'indirizzo dagli appunti - - - Alt+P - Alt+P - - - Enter the message you want to sign here - Inserisci qui il messaggio che vuoi firmare - - - Signature - Firma - - - Copy the current signature to the system clipboard - Copia la firma corrente nella clipboard - - - Sign the message to prove you own this Bitcoin address - Firma un messaggio per dimostrare di possedere questo indirizzo Bitcoin - - - Sign &Message - Firma &Messaggio - - - Reset all sign message fields - Reimposta tutti i campi della firma messaggio - - - Clear &All - Cancella &Tutto - - - &Verify Message - &Verifica Messaggio - - - Enter the receiver's address, message (ensure you copy line breaks, spaces, tabs, etc. exactly) and signature below to verify the message. Be careful not to read more into the signature than what is in the signed message itself, to avoid being tricked by a man-in-the-middle attack. Note that this only proves the signing party receives with the address, it cannot prove sendership of any transaction! - Per verificare il messaggio inserire l'indirizzo del firmatario, il messaggio e la firma nei campi sottostanti, assicurandosi di copiare esattamente anche ritorni a capo, spazi, tabulazioni, etc.. Si raccomanda di non lasciarsi fuorviare dalla firma a leggere più di quanto non sia riportato nel testo del messaggio stesso, in modo da evitare di cadere vittima di attacchi di tipo man-in-the-middle. Si ricorda che la verifica della firma dimostra soltanto che il firmatario può ricevere pagamenti con l'indirizzo corrispondente, non prova l'invio di alcuna transazione. - - - The Bitcoin address the message was signed with - L'indirizzo Bitcoin con cui è stato contrassegnato il messaggio - - - Verify the message to ensure it was signed with the specified Bitcoin address - Verifica il messaggio per accertare che sia stato firmato con l'indirizzo specificato - - - Verify &Message - Verifica &Messaggio - - - Reset all verify message fields - Reimposta tutti i campi della verifica messaggio - - - Click "Sign Message" to generate signature - Clicca "Firma il messaggio" per ottenere la firma - - - The entered address is invalid. - L'indirizzo inserito non è valido. - - - Please check the address and try again. - Per favore controlla l'indirizzo e prova di nuovo. - - - The entered address does not refer to a key. - L'indirizzo bitcoin inserito non è associato a nessuna chiave. - - - Wallet unlock was cancelled. - Sblocco del portamonete annullato. - - - Private key for the entered address is not available. - La chiave privata per l'indirizzo inserito non è disponibile. - - - Message signing failed. - Firma messaggio fallita. - - - Message signed. - Messaggio firmato. - - - The signature could not be decoded. - Non è stato possibile decodificare la firma. - - - Please check the signature and try again. - Per favore controlla la firma e prova di nuovo. - - - The signature did not match the message digest. - La firma non corrisponde al digest del messaggio. - - - Message verification failed. - Verifica messaggio fallita. - - - Message verified. - Messaggio verificato. - - - - SplashScreen - - Bitcoin Core - Bitcoin Core - - - The Bitcoin Core developers - Gli sviluppatori di Bitcoin Core - - - [testnet] - [testnet] - - - - TrafficGraphWidget - - KB/s - KB/s - - - - TransactionDesc - - Open until %1 - Aperto fino a %1 - - - conflicted - in conflitto - - - %1/offline - %1/offline - - - %1/unconfirmed - %1/non confermata - - - %1 confirmations - %1 conferme - - - Status - Stato - - - , broadcast through %n node(s) - , trasmesso attraverso %n nodo, trasmessa attraverso %n nodi - - - Date - Data - - - Source - Sorgente - - - Generated - Generato - - - From - Da - - - To - A - - - own address - proprio indirizzo - - - watch-only - sola lettura - - - label - etichetta - - - Credit - Credito - - - matures in %n more block(s) - matura tra %n bloccomatura tra %n blocchi - - - not accepted - non accettate - - - Debit - Debito - - - Total debit - Debito totale - - - Total credit - Credito totale - - - Transaction fee - Commissione transazione - - - Net amount - Importo netto - - - Message - Messaggio - - - Comment - Commento - - - Transaction ID - ID della transazione - - - Merchant - Commerciante - - - Generated coins must mature %1 blocks before they can be spent. When you generated this block, it was broadcast to the network to be added to the block chain. If it fails to get into the chain, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - È necessario attendere %1 blocchi prima che i bitcoin generati possano essere spesi. Al momento della generazione questo blocco è stato trasmesso alla rete in modo da poter essere aggiunto alla block chain. Se l'inserimento avrà esito negativo lo stato del blocco sarà modificato in "non accettato" ed esso risulterà non spendibile. Ciò può verificarsi occasionalmente nel caso in cui un altro blocco sia stato generato entro pochi secondi dal tuo. - - - Debug information - Informazione di debug - - - Transaction - Transazione - - - Inputs - Input - - - Amount - Importo - - - true - vero - - - false - falso - - - , has not been successfully broadcast yet - , non è ancora stata trasmessa con successo - - - Open for %n more block(s) - Aperto per %n altro bloccoAperto per altri %n blocchi - - - unknown - sconosciuto - - - - TransactionDescDialog - - Transaction details - Dettagli sulla transazione - - - This pane shows a detailed description of the transaction - Questo pannello mostra una descrizione dettagliata della transazione - - - - TransactionTableModel - - Date - Data - - - Type - Tipo - - - Immature (%1 confirmations, will be available after %2) - Immaturo (%1 conferme, sarà disponibile fra %2) - - - Open for %n more block(s) - Aperto per %n altro bloccoAperto per altri %n blocchi - - - Open until %1 - Aperto fino a %1 - - - Confirmed (%1 confirmations) - Confermata (%1 conferme) - - - This block was not received by any other nodes and will probably not be accepted! - Questo blocco non è stato ricevuto da alcun altro nodo e probabilmente non sarà accettato! - - - Generated but not accepted - Generati, ma non accettati - - - Offline - Offline - - - Label - Etichetta - - - Unconfirmed - Non confermata - - - Confirming (%1 of %2 recommended confirmations) - In conferma (%1 di %2 conferme raccomandate) - - - Conflicted - In conflitto - - - Received with - Ricevuto tramite - - - Received from - Ricevuto da - - - Sent to - Inviato a - - - Payment to yourself - Pagamento a te stesso - - - Mined - Ottenuto dal mining - - - watch-only - sola lettura - - - (n/a) - (n/d) - - - Transaction status. Hover over this field to show number of confirmations. - Stato della transazione. Passare con il mouse su questo campo per visualizzare il numero di conferme. - - - Date and time that the transaction was received. - Data e ora in cui la transazione è stata ricevuta. - - - Type of transaction. - Tipo di transazione. - - - Whether or not a watch-only address is involved in this transaction. - Indica se un indirizzo di sola lettura sia o meno coinvolto in questa transazione. - - - User-defined intent/purpose of the transaction. - Intento/scopo della transazione definito dall'utente. - - - Amount removed from or added to balance. - Importo rimosso o aggiunto al saldo. - - - - TransactionView - - All - Tutti - - - Today - Oggi - - - This week - Questa settimana - - - This month - Questo mese - - - Last month - Il mese scorso - - - This year - Quest'anno - - - Range... - Intervallo... - - - Received with - Ricevuto tramite - - - Sent to - Inviato a - - - To yourself - A te stesso - - - Mined - Ottenuto dal mining - - - Other - Altro - - - Enter address or label to search - Inserisci un indirizzo o un'etichetta da cercare - - - Min amount - Importo minimo - - - Copy address - Copia l'indirizzo - - - Copy label - Copia l'etichetta - - - Copy amount - Copia l'importo - - - Copy transaction ID - Copia l'ID transazione - - - Edit label - Modifica l'etichetta - - - Show transaction details - Mostra i dettagli della transazione - - - Export Transaction History - Esporta lo storico delle transazioni - - - Watch-only - Sola lettura - - - Exporting Failed - Esportazione Fallita. - - - There was an error trying to save the transaction history to %1. - Si è verificato un errore durante il salvataggio dello storico delle transazioni in %1. - - - Exporting Successful - Esportazione Riuscita - - - The transaction history was successfully saved to %1. - Lo storico delle transazioni e' stato salvato con successo in %1. - - - Comma separated file (*.csv) - Testo CSV (*.csv) - - - Confirmed - Confermato - - - Date - Data - - - Type - Tipo - - - Label - Etichetta - - - Address - Indirizzo - - - ID - ID - - - Range: - Intervallo: - - - to - a - - - - UnitDisplayStatusBarControl - - Unit to show amounts in. Click to select another unit. - Unità con cui visualizzare gli importi. Clicca per selezionare un altra unità. - - - - WalletFrame - - No wallet has been loaded. - Non è stato caricato alcun portamonete. - - - - WalletModel - - Send Coins - Invia Bitcoin - - - - WalletView - - &Export - &Esporta - - - Export the data in the current tab to a file - Esporta su file i dati contenuti nella tabella corrente - - - Backup Wallet - Backup Portamonete - - - Wallet Data (*.dat) - Dati Portamonete (*.dat) - - - Backup Failed - Backup Fallito - - - There was an error trying to save the wallet data to %1. - Si è verificato un errore durante il salvataggio dei dati del portamonete in %1. - - - The wallet data was successfully saved to %1. - Il portamonete è stato correttamente salvato in %1. - - - Backup Successful - Backup eseguito con successo - - - - bitcoin-core - - Options: - Opzioni: - - - Specify data directory - Specifica la cartella dati - - - Connect to a node to retrieve peer addresses, and disconnect - Connessione ad un nodo e successiva disconnessione per recuperare gli indirizzi dei peer - - - Specify your own public address - Specifica il tuo indirizzo pubblico - - - Accept command line and JSON-RPC commands - Accetta comandi da riga di comando e JSON-RPC - - - Run in the background as a daemon and accept commands - Esegui in background come demone ed accetta i comandi - - - Use the test network - Utilizza la rete di prova - - - Accept connections from outside (default: 1 if no -proxy or -connect) - Accetta connessioni dall'esterno (predefinito: 1 se -proxy o -connect non sono utilizzati) - - - Bind to given address and always listen on it. Use [host]:port notation for IPv6 - Associa all'indirizzo indicato e resta permanentemente in ascolto su di esso. Usa la notazione [host]:porta per l'IPv6 - - - Delete all wallet transactions and only recover those parts of the blockchain through -rescan on startup - Elimina tutte le transazioni dal portamonete e recupera solo quelle che fanno parte della blockchain attraverso il comando -rescan all'avvio. - - - Distributed under the MIT software license, see the accompanying file COPYING or <http://www.opensource.org/licenses/mit-license.php>. - Distribuito secondo la licenza software MIT, vedi il file COPYING incluso oppure <http://www.opensource.org/licenses/mit-license.php>. - - - Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) - Esegue un comando quando lo stato di una transazione del portamonete cambia (%s in cmd è sostituito da TxID) - - - Maximum total fees to use in a single wallet transaction; setting this too low may abort large transactions (default: %s) - Commissioni massime totali da includere in una singola transazione dal portamonete. Un'impostazione troppo bassa potrebbe provocare l'annullamento di transazioni di grosse dimensioni (predefinito: %s) - - - Reduce storage requirements by pruning (deleting) old blocks. This mode disables wallet support and is incompatible with -txindex. Warning: Reverting this setting requires re-downloading the entire blockchain. (default: 0 = disable pruning blocks, >%u = target size in MiB to use for block files) - Riduce i requisiti di spazio di archiviazione attraverso la rimozione dei vecchi blocchi (pruning). Questa modalità disabilita le funzionalità di portamonete ed è incompatibile con l'opzione -txindex. Attenzione: il ripristinando questa opzione l'intera blockchain dovrà essere riscaricata. (predefinito: 0 = disabilita il pruning, >%u = dimensione desiderata in MiB per i file dei blocchi) - - - Set the number of script verification threads (%u to %d, 0 = auto, <0 = leave that many cores free, default: %d) - Imposta il numero di thread per la verifica degli script (da %u a %d, 0 = automatico, <0 = lascia questo numero di core liberi, predefinito: %d) - - - This is a pre-release test build - use at your own risk - do not use for mining or merchant applications - Questa versione è una compilazione pre-rilascio - usala a tuo rischio - non utilizzarla per la generazione o per applicazioni di commercio - - - Unable to bind to %s on this computer. Bitcoin Core is probably already running. - Impossibile associarsi a %s su questo computer. Probabilmente Bitcoin Core è già in esecuzione. - - - WARNING: abnormally high number of blocks generated, %d blocks received in the last %d hours (%d expected) - ATTENZIONE, il numero di blocchi generati è insolitamente elevato: %d blocchi ricevuti nelle ultime %d ore (%d previsti) - - - WARNING: check your network connection, %d blocks received in the last %d hours (%d expected) - ATTENZIONE, si consiglia di verificare la connessione di rete: %d blocchi ricevuti nelle ultime %d ore (%d previsti) - - - Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. - Attenzione: -paytxfee è impostato su un valore molto elevato. Questa è la commissione che si paga quando si invia una transazione. - - - Warning: The network does not appear to fully agree! Some miners appear to be experiencing issues. - Attenzione: La rete non sembra trovarsi in pieno consenso! Alcuni minatori sembrano riscontrare problemi. - - - Warning: We do not appear to fully agree with our peers! You may need to upgrade, or other nodes may need to upgrade. - Attenzione: Sembra che non vi sia pieno consenso con i nostri peer! Un aggiornamento da parte tua o degli altri nodi potrebbe essere necessario. - - - Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. - Attenzione: errore di lettura di wallet.dat! Tutte le chiavi sono state lette correttamente, ma i dati delle transazioni o della rubrica potrebbero essere mancanti o non corretti. - - - 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. - Attenzione: wallet.dat corrotto, dati recuperati! Il wallet.dat originale è stato salvato come wallet.{timestamp}.bak in %s. Se i dati relativi a saldo o transazioni non dovessero risultare corretti si consiglia di procedere al ripristino da un backup. - - - Whitelist peers connecting from the given netmask or IP address. Can be specified multiple times. - Inserisce in whitelist i peer che si connettono da un dato indirizzo IP o netmask. Può essere specificato più volte. - - - (default: 1) - (predefinito: 1) - - - <category> can be: - Valori possibili per <category>: - - - Attempt to recover private keys from a corrupt wallet.dat - Tenta di recuperare le chiavi private da un wallet.dat corrotto - - - Block creation options: - Opzioni creazione blocco: - - - Connect only to the specified node(s) - Connessione ai soli nodi specificati - - - Connection options: - Opzioni di connessione: - - - Corrupted block database detected - Rilevato database blocchi corrotto - - - Debugging/Testing options: - Opzioni di Debug/Test: - - - Do not load the wallet and disable wallet RPC calls - Disabilita il portamonete e le relative chiamate RPC - - - Do you want to rebuild the block database now? - Vuoi ricostruire ora il database dei blocchi? - - - Error initializing block database - Errore durante l'inizializzazione del database dei blocchi - - - Error initializing wallet database environment %s! - Errore durante l'inizializzazione dell'ambiente del database del portamonete %s! - - - Error loading block database - Errore durante il caricamento del database blocchi - - - Error opening block database - Errore durante l'apertura del database blocchi - - - Error: Disk space is low! - Errore: la spazio libero sul disco è insufficiente! - - - Failed to listen on any port. Use -listen=0 if you want this. - Nessuna porta disponibile per l'ascolto. Usa -listen=0 se vuoi procedere comunque. - - - If <category> is not supplied, output all debugging information. - Se <category> non è specificata, mostra tutte le informazioni di debug. - - - Importing... - Importazione... - - - Incorrect or no genesis block found. Wrong datadir for network? - Blocco genesi non corretto o non trovato. È possibile che la cartella dati appartenga ad un'altra rete. - - - Invalid -onion address: '%s' - Indirizzo -onion non valido: '%s' - - - Not enough file descriptors available. - Non ci sono abbastanza descrittori di file disponibili. - - - Only connect to nodes in network <net> (ipv4, ipv6 or onion) - Connessione ai soli nodi appartenenti alla rete <net> (ipv4, ipv6 o Tor) - - - Prune cannot be configured with a negative value. - La modalità prune non può essere configurata con un valore negativo. - - - Prune mode is incompatible with -txindex. - La modalità prune è incompatibile con l'opzione -txindex. - - - Set database cache size in megabytes (%d to %d, default: %d) - Imposta la dimensione della cache del database in megabyte (%d a %d, predefinito: %d) - - - Set maximum block size in bytes (default: %d) - Imposta la dimensione massima del blocco in byte (predefinito: %d) - - - Specify wallet file (within data directory) - Specifica il file del portamonete (all'interno della cartella dati) - - - Use UPnP to map the listening port (default: %u) - Usa UPnP per mappare la porta di ascolto (predefinito: %u) - - - Verifying blocks... - Verifica blocchi... - - - Verifying wallet... - Verifica portamonete... - - - Wallet %s resides outside data directory %s - Il portamonete %s si trova al di fuori dalla cartella dati %s - - - Wallet options: - Opzioni portamonete: - - - Warning: This version is obsolete; upgrade required! - Attenzione: questa versione è obsoleta. Aggiornamento necessario! - - - You need to rebuild the database using -reindex to change -txindex - È necessario ricostruire il database usando -reindex per cambiare -txindex - - - Imports blocks from external blk000??.dat file - Importa blocchi da un file blk000??.dat esterno - - - 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 - Permette connessioni JSON-RPC dall'origine specificata. I valori validi per <ip> sono un singolo IP (ad es. 1.2.3.4), una network/netmask (ad es. 1.2.3.4/255.255.255.0) oppure una network/CIDR (ad es. 1.2.3.4/24). Questa opzione può essere specificata più volte. - - - Bind to given address and whitelist peers connecting to it. Use [host]:port notation for IPv6 - Resta in ascolto sull'indirizzo indicato ed inserisce in whitelist i peer che vi si collegano. Usa la notazione [host]:porta per l'IPv6 - - - Bind to given address to listen for JSON-RPC connections. Use [host]:port notation for IPv6. This option can be specified multiple times (default: bind to all interfaces) - Resta in attesa di connessioni JSON-RPC sull'indirizzo indicato. Usa la notazione [host]:porta per IPv6. Questa opzione può essere specificata più volte (predefinito: associa a tutte le interfacce) - - - Cannot obtain a lock on data directory %s. Bitcoin Core is probably already running. - Non è possibile ottenere un lock sulla cartella %s. Probabilmente Bitcoin Core è già in esecuzione. - - - Create new files with system default permissions, instead of umask 077 (only effective with disabled wallet functionality) - Crea nuovi file con i permessi di default del sistema, invece che con umask 077 (ha effetto solo con funzionalità di portamonete disabilitate) - - - Discover own IP addresses (default: 1 when listening and no -externalip or -proxy) - Scopre i propri indirizzi IP (predefinito: 1 se in ascolto ed -externalip o -proxy non sono specificati) - - - Error: Listening for incoming connections failed (listen returned error %s) - Errore: attesa per connessioni in arrivo fallita (errore riportato %s) - - - Error: Unsupported argument -socks found. Setting SOCKS version isn't possible anymore, only SOCKS5 proxies are supported. - Errore: individuato argomento -socks non supportato. Non è più possibile impostare la versione SOCKS, solamente i proxy SOCKS5 sono supportati. - - - Execute command when a relevant alert is received or we see a really long fork (%s in cmd is replaced by message) - Esegue un comando in caso di ricezione di un allarme pertinente o se si rileva un fork molto lungo (%s in cmd è sostituito dal messaggio) - - - Fees (in BTC/Kb) smaller than this are considered zero fee for relaying (default: %s) - Le commissioni (in BTC/kB) inferiori a questo valore sono considerate pari a zero relativamente alla trasmissione (predefinito: %s) - - - If paytxfee is not set, include enough fee so transactions begin confirmation on average within n blocks (default: %u) - Nel caso in cui paytxfee non sia impostato, include una commissione tale da ottenere un avvio delle conferme entro una media di n blocchi (predefinito: %u) - - - Invalid amount for -maxtxfee=<amount>: '%s' (must be at least the minrelay fee of %s to prevent stuck transactions) - Importo non valido per -maxtxfee=<amount>: '%s' (deve essere almeno pari alla commissione 'minrelay fee' di %s per prevenire transazioni bloccate) - - - Maximum size of data in data carrier transactions we relay and mine (default: %u) - Dimensione massima dei dati in transazioni di trasporto dati che saranno trasmesse ed incluse nei blocchi (predefinito: %u) - - - Prune configured below the minimum of %d MB. Please use a higher number. - La modalità prune è configurata al di sotto del minimo di %d MB. Si prega di utilizzare un valore più elevato. - - - Query for peer addresses via DNS lookup, if low on addresses (default: 1 unless -connect) - Ottiene gli indirizzi dei peer attraverso interrogazioni DNS, in caso di scarsa disponibilità (predefinito: 1 a meno che -connect non sia specificato) - - - Randomize credentials for every proxy connection. This enables Tor stream isolation (default: %u) - Randomizza le credenziali per ogni connessione proxy. Permette la Tor stream isolation (predefinito: %u) - - - Set maximum size of high-priority/low-fee transactions in bytes (default: %d) - Imposta la dimensione massima in byte delle transazioni ad alta-priorità/basse-commissioni (predefinito: %d) - - - Set the number of threads for coin generation if enabled (-1 = all cores, default: %d) - Specifica il numero di thread per la generazione di bitcoin, se abilitata (-1 = tutti i core, predefinito: %d) - - - The transaction amount is too small to send after the fee has been deducted - L'importo della transazione risulta troppo basso per l'invio una volta dedotte le commissioni. - - - 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. - Questo prodotto include software sviluppato dal progetto OpenSSL per l'uso del Toolkit OpenSSL <https://www.openssl.org/>, software crittografico scritto da Eric Young e software UPnP scritto da Thomas Bernard. - - - 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 - - Per utilizzare bitcoind o l'opzione -server in Bitcoin Core è necessario specificare una rpcpassword nel file di configurazione: -%s -Si raccomanda di utilizzare la seguente password casuale: -rpcuser=bitcoinrpc -rpcpassword=%s -(non è necessario ricordare questa password) -Il nome utente e la password NON DEVONO corrispondere. -Se il file non esiste si raccomanda di crearlo con permessi di lettura per il solo proprietario. -Si raccomanda inoltre di configurare alertnotify in modo da ricevere notifiche di eventuali problemi, ad es. alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com - - - - Warning: -maxtxfee is set very high! Fees this large could be paid on a single transaction. - Attenzione: -maxtxfee è impostato su un valore molto elevato. Tali commissioni potrebbero essere pagate anche in una singola transazione. - - - Warning: Please check that your computer's date and time are correct! If your clock is wrong Bitcoin Core will not work properly. - Attenzione: Si prega di verificare che data ed ora del computer siano corrette! Una configurazione errata dell'orologio di sistema potrebbe impedire a Bitcoin Core di funzionare regolarmente. - - - 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 - I peer inclusi in whitelist non possono subire ban per DoS e le loro transazioni saranno sempre trasmesse, anche nel caso in cui si trovino già nel mempool. Ciò è utile ad es. per i gateway - - - You need to rebuild the database using -reindex to go back to unpruned mode. This will redownload the entire blockchain - Per ritornare alla modalità unpruned sarà necessario ricostruire il database utilizzando l'opzione -reindex. L'intera blockchain sarà riscaricata. - - - (default: %u) - (default: %u) - - - Accept public REST requests (default: %u) - Accetta richieste REST pubbliche (predefinito: %u) - - - Activating best chain... - Attivazione della blockchain migliore... - - - Can't run with a wallet in prune mode. - Impossibile operare con un portamonete in modalità prune. - - - Cannot resolve -whitebind address: '%s' - Impossibile risolvere indirizzo -whitebind: '%s' - - - Choose data directory on startup (default: 0) - Seleziona la cartella dati all'avvio (predefinito: 0) - - - Connect through SOCKS5 proxy - Connessione attraverso un proxy SOCKS5 - - - Copyright (C) 2009-%i The Bitcoin Core Developers - Copyright (C) 2009-%i Gli sviluppatori di Bitcoin Core - - - Could not parse -rpcbind value %s as network address - Non è stato possibile riconoscere il valore %s di -rpcbind come indirizzo di rete - - - Error loading wallet.dat: Wallet requires newer version of Bitcoin Core - Errore durante il caricamento del file wallet.dat: il portamonete richiede una versione di Bitcoin Core più recente - - - Error reading from database, shutting down. - Errore durante lalettura del database. Arresto in corso. - - - Error: A fatal internal error occurred, see debug.log for details - Errore: si è presentato un errore interno fatale, consulta il file debug.log per maggiori dettagli - - - Error: Unsupported argument -tor found, use -onion. - Errore: Rilevato argomento -tor non supportato, utilizzare -onion. - - - Fee (in BTC/kB) to add to transactions you send (default: %s) - Commissione (in BTC/kB) da aggiungere alle transazioni che invii (predefinito: %s) - - - Information - Informazioni - - - Initialization sanity check failed. Bitcoin Core is shutting down. - Test di integrità iniziale fallito. Bitcoin Core si arresterà. - - - Invalid amount for -maxtxfee=<amount>: '%s' - Importo non valido per -maxtxfee=<amount>: '%s' - - - Invalid amount for -minrelaytxfee=<amount>: '%s' - Importo non valido per -minrelaytxfee=<amount>: '%s' - - - Invalid amount for -mintxfee=<amount>: '%s' - Importo non valido per -mintxfee=<amount>: '%s' - - - Invalid amount for -paytxfee=<amount>: '%s' (must be at least %s) - Importo non valido per -paytxfee=<amount>: '%s' (deve essere almeno %s) - - - Invalid netmask specified in -whitelist: '%s' - Netmask non valida specificata in -whitelist: '%s' - - - Keep at most <n> unconnectable transactions in memory (default: %u) - Mantiene in memoria al massimo <n> transazioni non collegabili (predefinito: %u) - - - Need to specify a port with -whitebind: '%s' - È necessario specificare una porta con -whitebind: '%s' - - - Node relay options: - Opzioni trasmissione nodo: - - - RPC SSL options: (see the Bitcoin Wiki for SSL setup instructions) - Opzioni RPC SSL: (consulta la Bitcoin Wiki per le istruzioni relative alla configurazione SSL) - - - RPC server options: - Opzioni server RPC: - - - RPC support for HTTP persistent connections (default: %d) - Supporto RPC per le connessioni HTTP persistenti (predefinito: %d) - - - Rebuild block chain index from current blk000??.dat files on startup - Ricostruzione dell'indice della block chain dai file blk000??.dat correnti all'avvio - - - Receive and display P2P network alerts (default: %u) - Ricevi e visualizza gli alerts della rete P2P (default: %u) - - - Send trace/debug info to console instead of debug.log file - Invia le informazioni di trace/debug alla console invece che al file debug.log - - - Send transactions as zero-fee transactions if possible (default: %u) - Invia transazioni a zero commissioni se possibile (predefinito: %u) - - - Set SSL root certificates for payment request (default: -system-) - Imposta i certificati radice SSL per le richieste di pagamento (predefinito: -system-) - - - Set language, for example "de_DE" (default: system locale) - Imposta lingua, ad esempio "it_IT" (predefinito: lingua di sistema) - - - Show all debugging options (usage: --help -help-debug) - Mostra tutte le opzioni di debug (utilizzo: --help -help-debug) - - - Show splash screen on startup (default: 1) - Mostra finestra di presentazione all'avvio (predefinito: 1) - - - Shrink debug.log file on client startup (default: 1 when no -debug) - Riduce il file debug.log all'avvio del client (predefinito: 1 se -debug non è impostato) - - - Signing transaction failed - Firma transazione fallita - - - Start minimized - Avvia ridotto a icona - - - The transaction amount is too small to pay the fee - L'importo della transazione è troppo basso per pagare la commissione - - - This is experimental software. - Questo è un software sperimentale. - - - Transaction amount too small - Importo transazione troppo piccolo - - - Transaction amounts must be positive - Gli importi della transazione devono essere positivi - - - Transaction too large for fee policy - Transazione troppo grande in base alla policy sulle commissioni - - - Transaction too large - Transazione troppo grande - - - UI Options: - Opzioni Interfaccia Utente: - - - Unable to bind to %s on this computer (bind returned error %s) - Impossibile associarsi a %s su questo computer (l'associazione ha restituito l'errore %s) - - - Use UPnP to map the listening port (default: 1 when listening) - Usa UPnP per mappare la porta in ascolto (predefinito: 1 quando in ascolto) - - - Username for JSON-RPC connections - Nome utente per connessioni JSON-RPC - - - Wallet needed to be rewritten: restart Bitcoin Core to complete - Il portamonete necessitava di essere riscritto: riavviare Bitcoin Core per completare l'operazione - - - Warning - Attenzione - - - Warning: Unsupported argument -benchmark ignored, use -debug=bench. - Attenzione: Argomento -benchmark ignorato in quanto non supportato, usare -debug=bench. - - - Warning: Unsupported argument -debugnet ignored, use -debug=net. - Attenzione: Argomento -debugnet ignorato in quanto non supportato, usare -debug=net. - - - Zapping all transactions from wallet... - Eliminazione dal portamonete di tutte le transazioni... - - - on startup - all'avvio - - - wallet.dat corrupt, salvage failed - wallet.dat corrotto, recupero fallito - - - Password for JSON-RPC connections - Password per connessioni JSON-RPC - - - Execute command when the best block changes (%s in cmd is replaced by block hash) - Esegue un comando quando il miglior blocco cambia (%s nel cmd è sostituito dall'hash del blocco) - - - Upgrade wallet to latest format - Aggiorna il wallet all'ultimo formato - - - Rescan the block chain for missing wallet transactions - Ripete la scansione della block chain per individuare le transazioni che mancano dal portamonete - - - Use OpenSSL (https) for JSON-RPC connections - Utilizza OpenSSL (https) per le connessioni JSON-RPC - - - This help message - Questo messaggio di aiuto - - - Allow DNS lookups for -addnode, -seednode and -connect - Consente interrogazioni DNS per -addnode, -seednode e -connect - - - Loading addresses... - Caricamento indirizzi... - - - Error loading wallet.dat: Wallet corrupted - Errore caricamento wallet.dat: Portamonete corrotto - - - (1 = keep tx meta data e.g. account owner and payment request information, 2 = drop tx meta data) - (1 = mantiene metadati tx, ad es. proprietario account ed informazioni di richiesta di pagamento, 2 = scarta metadati tx) - - - How thorough the block verification of -checkblocks is (0-4, default: %u) - Determina quanto sarà approfondita la verifica da parte di -checkblocks (0-4, predefinito: %u) - - - Maintain a full transaction index, used by the getrawtransaction rpc call (default: %u) - Mantiene l'indice completo delle transazioni usato dalla chiamata rpc getrawtransaction (predefinito: %u) - - - Number of seconds to keep misbehaving peers from reconnecting (default: %u) - Numero di secondi di sospensione prima della riconnessione per i peer che mostrano un comportamento anomalo (predefinito: %u) - - - Output debugging information (default: %u, supplying <category> is optional) - Emette informazioni di debug (predefinito: %u, fornire <category> è opzionale) - - - Use separate SOCKS5 proxy to reach peers via Tor hidden services (default: %s) - Usa un proxy SOCKS5 a parte per raggiungere i peer attraverso gli hidden services di Tor (predefinito: %s) - - - (default: %s) - (predefinito: %s) - - - Acceptable ciphers (default: %s) - Cifrari accettabili (predefinito: %s) - - - Always query for peer addresses via DNS lookup (default: %u) - Interroga sempre i DNS per ottenere gli indirizzi dei peer (predefinito: %u) - - - Error loading wallet.dat - Errore caricamento wallet.dat - - - Generate coins (default: %u) - Genera bitcoin (predefinito: %u) - - - How many blocks to check at startup (default: %u, 0 = all) - Numero di blocchi da controllare all'avvio (predefinito: %u, 0 = tutti) - - - Include IP addresses in debug output (default: %u) - Include gli indirizzi IP nell'output del debug (predefinito: %u) - - - Invalid -proxy address: '%s' - Indirizzo -proxy non valido: '%s' - - - Listen for JSON-RPC connections on <port> (default: %u or testnet: %u) - Resta in attesa di connessioni JSON-RPC su <port> (predefinito: %u o testnet: %u) - - - Listen for connections on <port> (default: %u or testnet: %u) - Resta in attesa di connessioni su <port> (predefinito: %u o testnet: %u) - - - Maintain at most <n> connections to peers (default: %u) - Mantiene al massimo <n> connessioni verso i peer (predefinito: %u) - - - Make the wallet broadcast transactions - Configura il portamonete per la trasmissione di transazioni - - - Maximum per-connection receive buffer, <n>*1000 bytes (default: %u) - Buffer di ricezione massimo per connessione, <n>*1000 byte (predefinito: %u) - - - Maximum per-connection send buffer, <n>*1000 bytes (default: %u) - Buffer di invio massimo per connessione, <n>*1000 byte (predefinito: %u) - - - Prepend debug output with timestamp (default: %u) - Antepone un timestamp all'output del debug (predefinito: %u) - - - Relay and mine data carrier transactions (default: %u) - Trasmette ed include nei blocchi transazioni di trasporto dati (predefinito: %u) - - - Relay non-P2SH multisig (default: %u) - Trasmette transazioni non-P2SH multisig (predefinito: %u) - - - Server certificate file (default: %s) - File del certificato del server (predefinito: %s) - - - Server private key (default: %s) - Chiave privata del server (predefinito: %s) - - - Set key pool size to <n> (default: %u) - Imposta la dimensione del pool di chiavi a <n> (predefinito: %u) - - - Set minimum block size in bytes (default: %u) - Imposta la dimensione minima del blocco in byte (predefinito: %u) - - - Set the number of threads to service RPC calls (default: %d) - Imposta il numero di thread destinati a rispondere alle chiamate RPC (predefinito %d) - - - Specify configuration file (default: %s) - Specifica il file di configurazione (predefinito: %s) - - - Specify connection timeout in milliseconds (minimum: 1, default: %d) - Specifica il timeout di connessione in millisecondi (minimo:1, predefinito: %d) - - - Specify pid file (default: %s) - Specifica il file pid (predefinito: %s) - - - Spend unconfirmed change when sending transactions (default: %u) - Abilita la spesa di resto non confermato quando si inviano transazioni (predefinito: %u) - - - Threshold for disconnecting misbehaving peers (default: %u) - Soglia di disconnessione per i peer che si comportano in maniera anomala (predefinito: %u) - - - Unknown network specified in -onlynet: '%s' - Rete sconosciuta specificata in -onlynet: '%s' - - - Cannot resolve -bind address: '%s' - Impossibile risolvere indirizzo -bind: '%s' - - - Cannot resolve -externalip address: '%s' - Impossibile risolvere indirizzo -externalip: '%s' - - - Invalid amount for -paytxfee=<amount>: '%s' - Importo non valido per -paytxfee=<amount>: '%s' - - - Insufficient funds - Fondi insufficienti - - - Loading block index... - Caricamento dell'indice dei blocchi... - - - Add a node to connect to and attempt to keep the connection open - Aggiunge un nodo a cui connettersi e tenta di mantenere aperta la connessione - - - Loading wallet... - Caricamento portamonete... - - - Cannot downgrade wallet - Non è possibile effettuare il downgrade del portamonete - - - Cannot write default address - Non è possibile scrivere l'indirizzo predefinito - - - Rescanning... - Ripetizione scansione... - - - Done loading - Caricamento completato - - - Error - Errore - - - \ No newline at end of file diff --git a/src/qt/locale/bitcoin_ja.ts b/src/qt/locale/bitcoin_ja.ts deleted file mode 100644 index 2140fe743..000000000 --- a/src/qt/locale/bitcoin_ja.ts +++ /dev/null @@ -1,3593 +0,0 @@ - - - AddressBookPage - - Right-click to edit address or label - å³ã‚¯ãƒªãƒƒã‚¯ã§ã‚¢ãƒ‰ãƒ¬ã‚¹ã¾ãŸã¯ãƒ©ãƒ™ãƒ«ã‚’編集ã—ã¾ã™ - - - Create a new address - æ–°è¦ã‚¢ãƒ‰ãƒ¬ã‚¹ã®ä½œæˆ - - - &New - æ–°è¦(&N) - - - Copy the currently selected address to the system clipboard - ç¾åœ¨é¸æŠžã•れã¦ã„るアドレスをシステムã®ã‚¯ãƒªãƒƒãƒ—ボードã«ã‚³ãƒ”ーã™ã‚‹ - - - &Copy - コピー(&C) - - - C&lose - é–‰ã˜ã‚‹(&C) - - - &Copy Address - アドレスをコピー (&C) - - - Delete the currently selected address from the list - é¸æŠžã•れãŸã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’一覧ã‹ã‚‰å‰Šé™¤ã™ã‚‹ - - - Export the data in the current tab to a file - ファイルã«ç¾åœ¨ã®ã‚¿ãƒ–ã®ãƒ‡ãƒ¼ã‚¿ã‚’エクスãƒãƒ¼ãƒˆ - - - &Export - エクスãƒãƒ¼ãƒˆ (&E) - - - &Delete - 削除(&D) - - - Choose the address to send coins to - é€ä¿¡å…ˆã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’é¸æŠž - - - Choose the address to receive coins with - 支払ã„ã‚’å—ã‘å–るアドレスを指定ã™ã‚‹ - - - C&hoose - é¸æŠž(&C) - - - Sending addresses - アドレスé€ä¿¡ä¸­ - - - Receiving addresses - アドレスå—信中 - - - These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins. - ã“ã‚Œã‚‰ã¯æ”¯æ‰•ã„ã‚’é€ä¿¡ã™ã‚‹ãŸã‚ã®ã‚ãªãŸã® Bitcoin アドレスã§ã™ã€‚コインをé€ä¿¡ã™ã‚‹å‰ã«ã€å¸¸ã«é¡ã¨å—信アドレスを確èªã—ã¦ãã ã•ã„。 - - - These are your Bitcoin addresses for receiving payments. It is recommended to use a new receiving address for each transaction. - ã“ã‚Œã‚‰ã¯æ”¯æ‰•ã„ã‚’å—ã‘å–ã‚‹ãŸã‚ã®ãƒ“ットコインアドレスã§ã™ã€‚トランザクションã”ã¨ã«æ–°ã—ã„å—ã‘å–り用アドレスを作æˆã™ã‚‹ã“ã¨ãŒæŽ¨å¥¨ã•れã¾ã™ã€‚ - - - Copy &Label - ラベルをコピー (&L) - - - &Edit - 編集 (&E) - - - Export Address List - アドレス帳をエクスãƒãƒ¼ãƒˆ - - - Comma separated file (*.csv) - CSVファイル (*.csv) - - - Exporting Failed - エクスãƒãƒ¼ãƒˆå¤±æ•— - - - There was an error trying to save the address list to %1. Please try again. - トランザクション履歴を %1 ã¸ä¿å­˜ã™ã‚‹éš›ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚å†è©¦è¡Œã—ã¦ãã ã•ã„。 - - - - AddressTableModel - - Label - ラベル - - - Address - アドレス - - - (no label) - (ラベル無ã—) - - - - AskPassphraseDialog - - Passphrase Dialog - パスフレーズ ダイアログ - - - Enter passphrase - パスフレーズを入力 - - - New passphrase - æ–°ã—ã„パスフレーズ - - - Repeat new passphrase - æ–°ã—ã„パスフレーズをもã†ä¸€åº¦ - - - Encrypt wallet - ウォレットを暗å·åŒ–ã™ã‚‹ - - - This operation needs your wallet passphrase to unlock the wallet. - ã“ã®æ“作ã¯ã‚¦ã‚©ãƒ¬ãƒƒãƒˆã‚’アンロックã™ã‚‹ãŸã‚ã«ãƒ‘スフレーズãŒå¿…è¦ã§ã™ã€‚ - - - Unlock wallet - ウォレットをアンロックã™ã‚‹ - - - This operation needs your wallet passphrase to decrypt the wallet. - ã“ã®æ“作ã¯ã‚¦ã‚©ãƒ¬ãƒƒãƒˆã®æš—å·åŒ–解除ã®ãŸã‚ã«ãƒ‘スフレーズãŒå¿…è¦ã§ã™ã€‚ - - - Decrypt wallet - ã‚¦ã‚©ãƒ¬ãƒƒãƒˆã®æš—å·åŒ–を解除ã™ã‚‹ - - - Change passphrase - パスフレーズã®å¤‰æ›´ - - - Confirm wallet encryption - ã‚¦ã‚©ãƒ¬ãƒƒãƒˆã®æš—å·åŒ–を確èªã™ã‚‹ - - - Warning: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR BITCOINS</b>! - 警告: ã‚‚ã—ã‚‚ã‚ãªãŸã®ã‚¦ã‚©ãƒ¬ãƒƒãƒˆã‚’æš—å·åŒ–ã—ã¦ãƒ‘スフレーズを失ã£ã¦ã—ã¾ã£ãŸãªã‚‰ã€<b>ã‚ãªãŸã® Bitcoin ã¯ã™ã¹ã¦å¤±ã‚れã¾ã™</b>! - - - Are you sure you wish to encrypt your wallet? - 本当ã«ã‚¦ã‚©ãƒ¬ãƒƒãƒˆã‚’æš—å·åŒ–ã—ã¾ã™ã‹? - - - Bitcoin Core 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. - æš—å·åŒ–処ç†ã‚’完了ã•ã›ã‚‹ãŸã‚ Bitcoin Core ã‚’ã„ã¾ã™ã終了ã—ã¾ã™ã€‚ã‚¦ã‚©ãƒ¬ãƒƒãƒˆã®æš—å·åŒ–ã§ã¯ã€ã‚³ãƒ³ãƒ”ãƒ¥ãƒ¼ã‚¿ã«æ„ŸæŸ“ã—ãŸãƒžãƒ«ã‚¦ã‚§ã‚¢ãªã©ã«ã‚ˆã‚‹ãƒ“ットコインã®ç›—難ã‹ã‚‰å®Œå…¨ã«å®ˆã‚‹ã“ã¨ã¯ã§ããªã„ã“ã¨ã«ã”注æ„ãã ã•ã„。 - - - 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. - é‡è¦: éŽåŽ»ã®ã‚¦ã‚©ãƒ¬ãƒƒãƒˆ ファイルã®ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—ã¯ã€æš—å·åŒ–ã•ã‚ŒãŸæ–°ã—ã„ウォレット ファイルã«å–り替ãˆã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚セキュリティ上ã®ç†ç”±ã«ã‚ˆã‚Šã€æš—å·åŒ–ã•ã‚ŒãŸæ–°ã—ã„ウォレットを使ã„å§‹ã‚ã‚‹ã¨ã€æš—å·åŒ–ã•れã¦ã„ãªã„ウォレット ファイルã®ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—ã¯ã™ãã«ä½¿ãˆãªããªã‚Šã¾ã™ã€‚ - - - Warning: The Caps Lock key is on! - 警告: Caps Lock キーãŒã‚ªãƒ³ã«ãªã£ã¦ã„ã¾ã™! - - - Wallet encrypted - ã‚¦ã‚©ãƒ¬ãƒƒãƒˆã¯æš—å·åŒ–ã•れã¾ã—㟠- - - 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>. - ã‚¦ã‚©ãƒ¬ãƒƒãƒˆã®æ–°ã—ã„パスフレーズを入力ã—ã¦ãã ã•ã„。<br/><b>10文字以上ã®ãƒ©ãƒ³ãƒ€ãƒ ãªæ–‡å­—</b>ã§æ§‹æˆã•れãŸã‚‚ã®ã‹ã€<b>8å˜èªžä»¥ä¸Šã®å˜èªž</b>ã§æ§‹æˆã•れãŸãƒ‘スフレーズを使用ã—ã¦ãã ã•ã„。 - - - Enter the old passphrase and new passphrase to the wallet. - ウォレットã®å¤ã„パスフレーズãŠã‚ˆã³æ–°ã—ã„パスフレーズを入力ã—ã¦ãã ã•ã„。 - - - Wallet encryption failed - ã‚¦ã‚©ãƒ¬ãƒƒãƒˆã®æš—å·åŒ–ã«å¤±æ•—ã—ã¾ã—㟠- - - Wallet encryption failed due to an internal error. Your wallet was not encrypted. - 内部エラーã«ã‚ˆã‚Šã‚¦ã‚©ãƒ¬ãƒƒãƒˆã®æš—å·åŒ–ãŒå¤±æ•—ã—ã¾ã—ãŸã€‚ã‚¦ã‚©ãƒ¬ãƒƒãƒˆã¯æš—å·åŒ–ã•れã¾ã›ã‚“ã§ã—ãŸã€‚ - - - The supplied passphrases do not match. - パスフレーズãŒåŒã˜ã§ã¯ã‚りã¾ã›ã‚“。 - - - Wallet unlock failed - ウォレットã®ã‚¢ãƒ³ãƒ­ãƒƒã‚¯ã«å¤±æ•—ã—ã¾ã—㟠- - - The passphrase entered for the wallet decryption was incorrect. - ã‚¦ã‚©ãƒ¬ãƒƒãƒˆã®æš—å·åŒ–解除ã®ãƒ‘ã‚¹ãƒ•ãƒ¬ãƒ¼ã‚ºãŒæ­£ã—ãã‚りã¾ã›ã‚“。 - - - Wallet decryption failed - ã‚¦ã‚©ãƒ¬ãƒƒãƒˆã®æš—å·åŒ–解除ã«å¤±æ•—ã—ã¾ã—㟠- - - Wallet passphrase was successfully changed. - ウォレットã®ãƒ‘スフレーズã®å¤‰æ›´ãŒæˆåŠŸã—ã¾ã—ãŸã€‚ - - - - BitcoinGUI - - Sign &message... - メッセージã®ç½²å... (&m) - - - Synchronizing with network... - ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã«åŒæœŸä¸­â€¦â€¦ - - - &Overview - 概è¦(&O) - - - Node - ノード - - - Show general overview of wallet - ã‚¦ã‚©ãƒ¬ãƒƒãƒˆã®æ¦‚è¦ã‚’見る - - - &Transactions - å–引(&T) - - - Browse transaction history - å–引履歴を閲覧 - - - E&xit - 終了(&E) - - - Quit application - アプリケーションを終了 - - - About &Qt - Qt ã«ã¤ã„ã¦(&Q) - - - Show information about Qt - Qt ã®æƒ…報を表示 - - - &Options... - オプション... (&O) - - - &Encrypt Wallet... - ã‚¦ã‚©ãƒ¬ãƒƒãƒˆã®æš—å·åŒ–... (&E) - - - &Backup Wallet... - ウォレットã®ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—... (&B) - - - &Change Passphrase... - パスフレーズã®å¤‰æ›´... (&C) - - - &Sending addresses... - é€é‡‘先アドレス一覧 (&S)... - - - &Receiving addresses... - å—ã‘å–り用アドレス一覧 (&R)... - - - Open &URI... - URI ã‚’é–‹ã (&U)... - - - Bitcoin Core client - Bitcoinコア クライアント - - - Importing blocks from disk... - ディスクã‹ã‚‰ãƒ–ロックをインãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã™... - - - Reindexing blocks on disk... - ディスク上ã®ãƒ–ロックã®ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã‚’å†ä½œæˆä¸­... - - - Send coins to a Bitcoin address - Bitcoin アドレスã«ã‚³ã‚¤ãƒ³ã‚’é€ã‚‹ - - - Backup wallet to another location - ウォレットを他ã®å ´æ‰€ã«ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ— - - - Change the passphrase used for wallet encryption - ウォレット暗å·åŒ–用パスフレーズã®å¤‰æ›´ - - - &Debug window - デãƒãƒƒã‚° ウインドウ (&D) - - - Open debugging and diagnostic console - デãƒãƒƒã‚°ã¨è¨ºæ–­ã‚³ãƒ³ã‚½ãƒ¼ãƒ«ã‚’é–‹ã - - - &Verify message... - ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã®æ¤œè¨¼... (&V) - - - Bitcoin - Bitcoin - - - Wallet - ウォレット - - - &Send - é€ã‚‹ (&S) - - - &Receive - å—ä¿¡ (&R) - - - Show information about Bitcoin Core - Bitcoinコアã«é–¢ã™ã‚‹æƒ…報を表示 - - - &Show / Hide - 見る/éš ã™ (&S) - - - Show or hide the main Window - メイン ウインドウを表示ã¾ãŸã¯éžè¡¨ç¤º - - - Encrypt the private keys that belong to your wallet - ã‚ãªãŸã®ã‚¦ã‚©ãƒ¬ãƒƒãƒˆã®ç§˜å¯†éµã‚’æš—å·åŒ–ã—ã¾ã™ - - - Sign messages with your Bitcoin addresses to prove you own them - ã‚ãªãŸãŒæ‰€æœ‰ã—ã¦ã„ã‚‹ã“ã¨ã‚’証明ã™ã‚‹ãŸã‚ã«ã€ã‚ãªãŸã® Bitcoin アドレスã§ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã«ç½²åã—ã¦ãã ã•ã„ - - - Verify messages to ensure they were signed with specified Bitcoin addresses - 指定ã•れ㟠Bitcoin アドレスã§ç½²åã•れãŸã“ã¨ã‚’確èªã™ã‚‹ãŸã‚ã«ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’検証ã—ã¾ã™ - - - &File - ファイル(&F) - - - &Settings - 設定(&S) - - - &Help - ヘルプ(&H) - - - Tabs toolbar - タブツールãƒãƒ¼ - - - Bitcoin Core - Bitcoin ã®ã‚³ã‚¢ - - - Request payments (generates QR codes and bitcoin: URIs) - 支払ã„ã‚’è¦æ±‚ã™ã‚‹ (QRコードã¨bitcoin:ã§ã¯ã˜ã¾ã‚‹URIを生æˆã™ã‚‹) - - - &About Bitcoin Core - ビットコインコアã«ã¤ã„㦠(&A) - - - Modify configuration options for Bitcoin Core - Bitcoin Core ã®è¨­å®šã‚’編集ã™ã‚‹ - - - Show the list of used sending addresses and labels - 使用済ã¿ã®é€é‡‘用アドレスã¨ãƒ©ãƒ™ãƒ«ã®ä¸€è¦§ã‚’表示ã™ã‚‹ - - - Show the list of used receiving addresses and labels - 支払ã„ã‚’å—ã‘å–るアドレスã¨ãƒ©ãƒ™ãƒ«ã®ãƒªã‚¹ãƒˆã‚’表示ã™ã‚‹ - - - Open a bitcoin: URI or payment request - bitcoin: URIã¾ãŸã¯æ”¯æ‰•ã„リクエストを開ã - - - &Command-line options - コマンドラインオプション (&C) - - - Show the Bitcoin Core help message to get a list with possible Bitcoin command-line options - 有効㪠Bitcoin ã®ã‚³ãƒžãƒ³ãƒ‰ãƒ©ã‚¤ãƒ³ オプションを見るãŸã‚ã« Bitcoin Core ã®ãƒ˜ãƒ«ãƒ—メッセージを表示ã—ã¾ã™ã€‚ - - - %n active connection(s) to Bitcoin network - %n ã® Bitcoin ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã¸ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ–ãªæŽ¥ç¶š - - - No block source available... - 利用å¯èƒ½ãªãƒ–ロックãŒã‚りã¾ã›ã‚“... - - - Processed %n block(s) of transaction history. - トランザクション履歴㮠%n ブロックを処ç†ã—ã¾ã—ãŸã€‚ - - - %n hour(s) - %n 時間 - - - %n day(s) - %n æ—¥ - - - %n week(s) - %n 週間 - - - %1 and %2 - %1 㨠%2 - - - %n year(s) - %n å¹´ - - - %1 behind - %1 é…å»¶ - - - Last received block was generated %1 ago. - 最後ã«å—ä¿¡ã•れãŸãƒ–ロック㯠%1 å‰ã«ç”Ÿæˆã•れã¾ã—ãŸã€‚ - - - Transactions after this will not yet be visible. - ã“ã®å¾Œã®å–引ã¯ã¾ã è¡¨ç¤ºã•れã¾ã›ã‚“。 - - - Error - エラー - - - Warning - 警告 - - - Information - 情報 - - - Up to date - ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã¯æœ€æ–°ã§ã™ - - - Catching up... - 追跡中... - - - Date: %1 - - 日付: %1 - - - - Amount: %1 - - ç·é¡: %1 - - - - Type: %1 - - タイプ: %1 - - - - Label: %1 - - ラベル: %1 - - - - Address: %1 - - アドレス: %1 - - - - Sent transaction - é€é‡‘å–引 - - - Incoming transaction - ç€é‡‘å–引 - - - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - ウォレットã¯<b>æš—å·åŒ–ã•れã¦ã€ã‚¢ãƒ³ãƒ­ãƒƒã‚¯ã•れã¦ã„ã¾ã™</b> - - - Wallet is <b>encrypted</b> and currently <b>locked</b> - ウォレットã¯<b>æš—å·åŒ–ã•れã¦ã€ãƒ­ãƒƒã‚¯ã•れã¦ã„ã¾ã™</b> - - - - ClientModel - - Network Alert - ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯è­¦å‘Š - - - - CoinControlDialog - - Coin Selection - ã‚³ã‚¤ãƒ³é¸æŠž - - - Quantity: - æ•°é‡: - - - Bytes: - ãƒã‚¤ãƒˆ: - - - Amount: - ç·é¡: - - - Priority: - 優先度: - - - Fee: - 手数料: - - - Dust: - ダスト: - - - After Fee: - 手数料差引後: - - - Change: - 釣り銭: - - - (un)select all - ã™ã¹ã¦é¸æŠž/é¸æŠžè§£é™¤ - - - Tree mode - ツリーモード - - - List mode - リストモード - - - Amount - ç·é¡ - - - Received with label - ラベルã«å¯¾ã™ã‚‹å…¥é‡‘一覧 - - - Received with address - アドレスã«å¯¾ã™ã‚‹å…¥é‡‘一覧 - - - Date - 日付 - - - Confirmations - 検証数 - - - Confirmed - 検証済㿠- - - Priority - 優先度 - - - Copy address - アドレスをコピーã™ã‚‹ - - - Copy label - ラベルをコピーã™ã‚‹ - - - Copy amount - ç·é¡ã®ã‚³ãƒ”ー - - - Copy transaction ID - å–引 ID をコピー - - - Lock unspent - 未使用トランザクションをロックã™ã‚‹ - - - Unlock unspent - 未使用トランザクションをアンロックã™ã‚‹ - - - Copy quantity - æ•°é‡ã‚’コピーã™ã‚‹ - - - Copy fee - 手数料をコピーã™ã‚‹ - - - Copy after fee - 手数料差引後ã®å€¤ã‚’コピーã™ã‚‹ - - - Copy bytes - ãƒã‚¤ãƒˆæ•°ã‚’コピーã™ã‚‹ - - - Copy priority - 優先度をコピーã™ã‚‹ - - - Copy dust - ダストをコピーã™ã‚‹ - - - Copy change - 釣り銭をコピー - - - highest - 最高 - - - higher - éžå¸¸ã«é«˜ - - - high - 高 - - - medium-high - 中〜高 - - - medium - 中 - - - low-medium - 低〜中 - - - low - 低 - - - lower - éžå¸¸ã«ä½Ž - - - lowest - 最低 - - - (%1 locked) - (%1 ãŒãƒ­ãƒƒã‚¯æ¸ˆã¿) - - - none - ãªã— - - - This label turns red if the transaction size is greater than 1000 bytes. - トランザクションã®ã‚µã‚¤ã‚ºãŒ1000ãƒã‚¤ãƒˆã‚’è¶…ãˆã‚‹å ´åˆã«ã¯ã“ã®ãƒ©ãƒ™ãƒ«ã¯èµ¤è‰²ã«ãªã‚Šã¾ã™ã€‚ - - - This label turns red if the priority is smaller than "medium". - 優先度ãŒã€Œä¸­ã€æœªæº€ã®å ´åˆã€ã“ã®ãƒ©ãƒ™ãƒ«ã¯èµ¤è‰²ã«ãªã‚Šã¾ã™ã€‚ - - - This label turns red if any recipient receives an amount smaller than %1. - å—å–人ã®ã†ã¡èª°ã‹ã®å—å–é¡ãŒ %1 未満ã®å ´åˆã«ã“ã®ãƒ©ãƒ™ãƒ«ã¯èµ¤è‰²ã«ãªã‚Šã¾ã™ã€‚ - - - Can vary +/- %1 satoshi(s) per input. - ã²ã¨ã¤ã®å…¥åŠ›ã«ã¤ã %1 satoshi å‰å¾Œãšã‚Œã‚‹ã“ã¨ãŒã‚りã¾ã™ã€‚ - - - yes - ã¯ã„ - - - no - ã„ã„㈠- - - This means a fee of at least %1 per kB is required. - ã“れã¯å°‘ãªãã¨ã‚‚1kBã‚ãŸã‚Š %1 ã®æ‰‹æ•°æ–™ãŒå¿…è¦ã§ã‚ã‚‹ã“ã¨ã‚’æ„味ã—ã¾ã™ã€‚ - - - Can vary +/- 1 byte per input. - ã²ã¨ã¤ã®å…¥åŠ›ã«ã¤ã1ãƒã‚¤ãƒˆç¨‹åº¦ãšã‚Œã‚‹ã“ã¨ãŒã‚りã¾ã™ã€‚ - - - Transactions with higher priority are more likely to get included into a block. - より高ã„優先度をæŒã¤ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã®æ–¹ãŒãƒ–ロックã«å–り込ã¾ã‚Œã‚„ã™ããªã‚Šã¾ã™ã€‚ - - - (no label) - (ラベル無ã—) - - - change from %1 (%2) - %1 (%2) ã‹ã‚‰ã®ãŠã¤ã‚Š - - - (change) - (ãŠã¤ã‚Š) - - - - EditAddressDialog - - Edit Address - アドレスã®ç·¨é›† - - - &Label - ラベル(&L) - - - The label associated with this address list entry - ã“ã®ã‚¢ãƒ‰ãƒ¬ã‚¹å¸³é …ç›®ã«çµã³ã¤ã‘られã¦ã„るラベル - - - The address associated with this address list entry. This can only be modified for sending addresses. - ã“ã®ã‚¢ãƒ‰ãƒ¬ã‚¹å¸³é …ç›®ã«çµã³ã¤ã‘られã¦ã„るアドレス。ã“ã®é …ç›®ã¯é€é‡‘用アドレスã®å ´åˆã®ã¿ç·¨é›†ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ - - - &Address - アドレス帳 (&A) - - - New receiving address - æ–°ã—ã„å—信アドレス - - - New sending address - æ–°ã—ã„é€ä¿¡ã‚¢ãƒ‰ãƒ¬ã‚¹ - - - Edit receiving address - å—信アドレスを編集 - - - Edit sending address - é€ä¿¡ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’編集 - - - The entered address "%1" is already in the address book. - 入力ã•れãŸã‚¢ãƒ‰ãƒ¬ã‚¹ "%1" ã¯æ—¢ã«ã‚¢ãƒ‰ãƒ¬ã‚¹å¸³ã«ã‚りã¾ã™ã€‚ - - - The entered address "%1" is not a valid Bitcoin address. - 入力ã•れãŸã‚¢ãƒ‰ãƒ¬ã‚¹ "%1" ã¯ç„¡åŠ¹ãª Bitcoin アドレスã§ã™ã€‚ - - - Could not unlock wallet. - ウォレットをアンロックã§ãã¾ã›ã‚“ã§ã—ãŸã€‚ - - - New key generation failed. - æ–°ã—ã„キーã®ç”Ÿæˆã«å¤±æ•—ã—ã¾ã—ãŸã€‚ - - - - FreespaceChecker - - A new data directory will be created. - æ–°ã—ã„データ ディレクトリãŒä½œæˆã•れã¾ã™ã€‚ - - - name - name - - - Directory already exists. Add %1 if you intend to create a new directory here. - ディレクトリãŒã‚‚ã†ã‚りã¾ã™ã€‚ æ–°ã—ã„ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’作るã¤ã‚‚りãªã‚‰%1を書ã„ã¦ãã ã•ã„。 - - - Path already exists, and is not a directory. - パスãŒå­˜åœ¨ã—ã¾ã™ãŒãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã§ã¯ã‚りã¾ã›ã‚“。 - - - Cannot create data directory here. - ã“ã“ã«ãƒ‡ãƒ¼ã‚¿ ディレクトリを作æˆã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。 - - - - HelpMessageDialog - - Bitcoin Core - Bitcoin ã®ã‚³ã‚¢ - - - version - ãƒãƒ¼ã‚¸ãƒ§ãƒ³ - - - (%1-bit) - (%1ビット) - - - About Bitcoin Core - Bitcoinコアã«ã¤ã„㦠- - - Command-line options - コマンドライン オプション - - - Usage: - 使用法: - - - command-line options - コマンドライン オプション - - - - Intro - - Welcome - よã†ã“ã - - - Welcome to Bitcoin Core. - よã†ã“ãï¼ - - - As this is the first time the program is launched, you can choose where Bitcoin Core will store its data. - ã“れã¯ãƒ—ログラム最åˆã®èµ·å‹•ã§ã™ã€‚Bitcoin CoreãŒãƒ‡ãƒ¼ã‚¿ã‚’ä¿å­˜ã™ã‚‹å ´æ‰€ã‚’é¸æŠžã—ã¦ä¸‹ã•ã„。 - - - Bitcoin Core will download and store a copy of the Bitcoin block chain. At least %1GB of data will be stored in this directory, and it will grow over time. The wallet will also be stored in this directory. - Bitcoin Coreã¯ã€ãƒ“ットコインã®ãƒ–ロックãƒã‚§ãƒ¼ãƒ³ã®ã‚³ãƒ”ーをã€ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã—ã¦ä¿å­˜ã—ã¾ã™ã€‚å°‘ãªãã¨ã‚‚%1ギガãƒã‚¤ãƒˆã®ãƒ‡ãƒ¼ã‚¿ãŒã€ã“ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«ä¿å­˜ã•れã¾ã™ã€‚ãã—ã¦ãã‚Œã¯æ™‚é–“ã¨å…±ã«å¢—加ã—ã¾ã™ã€‚ã¾ãŸã‚¦ã‚©ãƒ¬ãƒƒãƒˆã‚‚ã“ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«ä¿å­˜ã•れã¾ã™ã€‚ - - - Use the default data directory - åˆæœŸå€¤ã®ãƒ‡ãƒ¼ã‚¿ ディレクトリを使用 - - - Use a custom data directory: - ä»»æ„ã®ãƒ‡ãƒ¼ã‚¿ ディレクトリを使用: - - - Bitcoin Core - Bitcoin ã®ã‚³ã‚¢ - - - Error: Specified data directory "%1" cannot be created. - エラー: 指定ã®ãƒ‡ãƒ¼ã‚¿ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒª "%1" を作æˆã§ãã¾ã›ã‚“。 - - - Error - エラー - - - %n GB of free space available - %n GBã®ç©ºã容é‡ãŒåˆ©ç”¨å¯èƒ½ - - - (of %n GB needed) - (%n GBå¿…è¦) - - - - OpenURIDialog - - Open URI - URI ã‚’é–‹ã - - - Open payment request from URI or file - URI ã¾ãŸã¯ãƒ•ァイルã‹ã‚‰æ”¯æ‰•ã„リクエストを開ã - - - URI: - URI: - - - Select payment request file - 支払ã„ãƒªã‚¯ã‚¨ã‚¹ãƒˆãƒ•ã‚¡ã‚¤ãƒ«ã‚’é¸æŠžã—ã¦ãã ã•ã„ - - - Select payment request file to open - é–‹ããŸã„支払ã„ãƒªã‚¯ã‚¨ã‚¹ãƒˆãƒ•ã‚¡ã‚¤ãƒ«ã‚’é¸æŠžã—ã¦ãã ã•ã„ - - - - OptionsDialog - - Options - 設定 - - - &Main - メイン (&M) - - - Size of &database cache - データベースキャッシュã®ã‚µã‚¤ã‚º (&D) - - - MB - MB - - - Number of script &verification threads - スクリプト検証用スレッド数 (&V) - - - Accept connections from outside - 外部ã‹ã‚‰ã®æŽ¥ç¶šã‚’許å¯ã™ã‚‹ - - - Allow incoming connections - 外部ã‹ã‚‰ã®æŽ¥ç¶šã‚’許å¯ã™ã‚‹ - - - IP address of the proxy (e.g. IPv4: 127.0.0.1 / IPv6: ::1) - プロキシã®IPアドレス (例ãˆã° IPv4: 127.0.0.1 / IPv6: ::1) - - - Minimize instead of exit the application when the window is closed. When this option is enabled, the application will be closed only after selecting Exit in the menu. - ウィンドウを閉ã˜ã‚‹éš›ã«ã‚¢ãƒ—リケーションを終了ã™ã‚‹ã®ã§ã¯ãªãã€æœ€å°åŒ–ã—ã¾ã™ã€‚ã“ã®ã‚ªãƒ—ã‚·ãƒ§ãƒ³ãŒæœ‰åŠ¹åŒ–ã•れãŸå ´åˆã€ãƒ¡ãƒ‹ãƒ¥ãƒ¼ã‹ã‚‰çµ‚äº†ã‚’é¸æŠžã—ãŸå ´åˆã«ã®ã¿ã‚¢ãƒ—リケーションã¯é–‰ã˜ã‚‰ã‚Œã¾ã™ã€‚ - - - The user interface language can be set here. This setting will take effect after restarting Bitcoin Core. - ユーザ・インタフェイス言語ã¯ã“ã“ã§è¨­å®šã§ãã¾ã™ã€‚ã“ã®è¨­å®šã¯Bitcoin Coreã®å†èµ·å‹•å¾Œã«æœ‰åйã¨ãªã‚Šã¾ã™ã€‚ - - - 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 |. - トランザクションタブã®ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆãƒ¡ãƒ‹ãƒ¥ãƒ¼é …ç›®ã«è¡¨ç¤ºã™ã‚‹ã€ã‚µãƒ¼ãƒ‰ãƒ‘ーティURL (例ãˆã°ãƒ–ロックエクスプローラ)。URL中ã®%sã¯ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã®ãƒãƒƒã‚·ãƒ¥å€¤ã«ç½®ãæ›ãˆã‚‰ã‚Œã¾ã™ã€‚垂直ãƒãƒ¼ | ã§åŒºåˆ‡ã‚‹ã“ã¨ã§ã€è¤‡æ•°ã®URLを指定ã§ãã¾ã™ã€‚ - - - Third party transaction URLs - サードパーティã®ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³URL - - - Active command-line options that override above options: - 上ã®ã‚ªãƒ—ã‚·ãƒ§ãƒ³ã‚’ç½®ãæ›ãˆã‚‹ã“ã¨ã®ã§ãã‚‹ã€æœ‰åйãªã‚³ãƒžãƒ³ãƒ‰ãƒ©ã‚¤ãƒ³ã‚ªãƒ—ションã®ä¸€è¦§: - - - Reset all client options to default. - ã™ã¹ã¦ã®ã‚ªãƒ—ã‚·ãƒ§ãƒ³ã‚’åˆæœŸå€¤ã«æˆ»ã—ã¾ã™ã€‚ - - - &Reset Options - オプションをリセット (&R) - - - &Network - ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ (&N) - - - Automatically start Bitcoin Core after logging in to the system. - システムã«ãƒ­ã‚°ã‚¤ãƒ³ã—ãŸéš›ã€è‡ªå‹•çš„ã«Bitcoin Coreã‚’èµ·å‹•ã™ã‚‹ã€‚ - - - &Start Bitcoin Core on system login - システムã¸ãƒ­ã‚°ã‚¤ãƒ³ã—ãŸéš›ã«Bitcoin Coreã‚’èµ·å‹•ã™ã‚‹ (&S) - - - (0 = auto, <0 = leave that many cores free) - (0 = 自動ã€0以上 = 指定ã—ãŸæ•°ã®ã‚³ã‚¢ã‚’フリーã«ã™ã‚‹) - - - W&allet - ウォレット (&A) - - - Expert - エクスãƒãƒ¼ãƒˆ - - - Enable coin &control features - コインコントロール機能を有効化ã™ã‚‹ (&C) - - - 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. - 未検証ã®ãŠã¤ã‚Šã®ä½¿ç”¨ã‚’無効化ã™ã‚‹ã¨ã€ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ãŒå°‘ãªãã¨ã‚‚1検証をç²å¾—ã™ã‚‹ã¾ã§ã¯ãã®ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã®ãŠã¤ã‚Šã¯åˆ©ç”¨ã§ããªããªã‚Šã¾ã™ã€‚ã“ã‚Œã¯æ®‹é«˜ã®è¨ˆç®—方法ã«ã‚‚影響ã—ã¾ã™ã€‚ - - - &Spend unconfirmed change - 未検証ã®ãŠã¤ã‚Šã‚’使用ã™ã‚‹ (&S) - - - Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled. - 自動的ã«ãƒ«ãƒ¼ã‚¿ãƒ¼ä¸Šã® Bitcoin クライアントã®ãƒãƒ¼ãƒˆã‚’é–‹ãã¾ã™ã€‚ã‚ãªãŸã®ãƒ«ãƒ¼ã‚¿ãƒ¼ãŒ UPnP ã«å¯¾å¿œã—ã¦ã„ã¦ã€ãã‚ŒãŒæœ‰åйã«ãªã£ã¦ã„ã‚‹å ´åˆã«ä½œå‹•ã—ã¾ã™ã€‚ - - - Map port using &UPnP - UPnP を使ã£ã¦ãƒãƒ¼ãƒˆã‚’割り当ã¦ã‚‹ (&U) - - - Connect to the Bitcoin network through a SOCKS5 proxy. - SOCKS5 プロキシ経由ã§Bitcoinãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã«æŽ¥ç¶šã™ã‚‹ - - - &Connect through SOCKS5 proxy (default proxy): - SOCKS5 ãƒ—ãƒ­ã‚­ã‚·çµŒç”±ã§æŽ¥ç¶šã™ã‚‹ (デフォルトプロキシ): (&C) - - - Proxy &IP: - プロキシ㮠IP (&I) : - - - &Port: - ãƒãƒ¼ãƒˆ (&P) : - - - Port of the proxy (e.g. 9050) - プロキシã®ãƒãƒ¼ãƒˆç•ªå· (例 9050) - - - &Window - ウインドウ (&W) - - - Show only a tray icon after minimizing the window. - ウインドウを最å°åŒ–ã—ãŸã‚ã¨ãƒˆãƒ¬ã‚¤ アイコンã ã‘を表示ã™ã‚‹ã€‚ - - - &Minimize to the tray instead of the taskbar - タスクãƒãƒ¼ã®ä»£ã‚りã«ãƒˆãƒ¬ã‚¤ã«æœ€å°åŒ– (&M) - - - M&inimize on close - é–‰ã˜ã‚‹æ™‚ã«æœ€å°åŒ– (&i) - - - &Display - 表示 (&D) - - - User Interface &language: - ユーザインターフェースã®è¨€èªž (&l) : - - - &Unit to show amounts in: - é¡ã‚’表示ã™ã‚‹å˜ä½ (&U) : - - - Choose the default subdivision unit to show in the interface and when sending coins. - インターフェース上ã®è¡¨ç¤ºã¨ã‚³ã‚¤ãƒ³ã®é€ä¿¡ã§ä½¿ç”¨ã™ã‚‹å˜ä½ã‚’é¸æŠžã—ã¾ã™ã€‚ - - - Whether to show coin control features or not. - コインコントロール機能を表示ã™ã‚‹ã‹ã©ã†ã‹ã€‚ - - - &OK - &OK - - - &Cancel - キャンセル (&C) - - - default - åˆæœŸå€¤ - - - none - ãªã— - - - Confirm options reset - オプションã®ãƒªã‚»ãƒƒãƒˆã®ç¢ºèª - - - Client restart required to activate changes. - 変更を有効化ã™ã‚‹ã«ã¯ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆã‚’å†èµ·å‹•ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ - - - Client will be shut down. Do you want to proceed? - クライアントを終了ã—ã¾ã™ã€‚続行ã—ã¦ã‚‚よã‚ã—ã„ã§ã™ã‹ï¼Ÿ - - - This change would require a client restart. - ã“ã®å¤‰æ›´ã¯ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆã®å†èµ·å‹•ãŒå¿…è¦ã§ã™ã€‚ - - - The supplied proxy address is invalid. - プロキシアドレスãŒç„¡åйã§ã™ã€‚ - - - - OverviewPage - - Form - フォーム - - - The displayed information may be out of date. Your wallet automatically synchronizes with the Bitcoin network after a connection is established, but this process has not completed yet. - 表示ã•ã‚ŒãŸæƒ…å ±ã¯å¤ã„ã‹ã‚‚ã—れã¾ã›ã‚“。接続ãŒç¢ºç«‹ã•れるã¨ã€ã‚ãªãŸã®ã‚¦ã‚©ãƒ¬ãƒƒãƒˆã¯ Bitcoin ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã¨è‡ªå‹•çš„ã«åŒæœŸã—ã¾ã™ãŒã€ã“ã®ãƒ—ロセスã¯ã¾ã å®Œäº†ã—ã¦ã„ã¾ã›ã‚“。 - - - Watch-only: - 監視é™å®š: - - - Available: - 利用å¯èƒ½: - - - Your current spendable balance - ã‚ãªãŸã®åˆ©ç”¨å¯èƒ½æ®‹é«˜ - - - Pending: - 検証待ã¡: - - - Total of transactions that have yet to be confirmed, and do not yet count toward the spendable balance - 未検証ã®å–引ã§åˆ©ç”¨å¯èƒ½æ®‹é«˜ã«å映ã•れã¦ã„ãªã„æ•° - - - Immature: - 未完æˆ: - - - Mined balance that has not yet matured - 完æˆã—ã¦ã„ãªã„採掘ã•ã‚ŒãŸæ®‹é«˜ - - - Balances - 残高 - - - Total: - åˆè¨ˆ: - - - Your current total balance - ã‚ãªãŸã®ç¾åœ¨ã®æ®‹é«˜ - - - Your current balance in watch-only addresses - 監視é™å®šã‚¢ãƒ‰ãƒ¬ã‚¹å†…ã®ç¾åœ¨ã®æ®‹é«˜ - - - Spendable: - 使用å¯èƒ½: - - - Recent transactions - 最近ã®ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ - - - Unconfirmed transactions to watch-only addresses - 監視é™å®šã‚¢ãƒ‰ãƒ¬ã‚¹ã«å¯¾ã™ã‚‹æœªæ¤œè¨¼ã®ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ - - - Mined balance in watch-only addresses that has not yet matured - ウォッãƒã‚ªãƒ³ãƒªãƒ¼ã‚¢ãƒ‰ãƒ¬ã‚¹ã®æŽ¡æŽ˜ã•ã‚ŒãŸæ®‹é«˜ã®ã†ã¡ã€æˆç†Ÿã—ã¦ã„ãªã„ã‚‚ã® - - - Current total balance in watch-only addresses - 監視é™å®šã‚¢ãƒ‰ãƒ¬ã‚¹å†…ã®ç¾åœ¨ã®å…¨æ®‹é«˜ - - - - PaymentServer - - URI handling - URI ã®æ“作 - - - Invalid payment address %1 - 支払ã„ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã€Œ%1ã€ã¯ç„¡åйã§ã™ - - - Payment request rejected - 支払ã„è¦æ±‚ã¯æ‹’å¦ã•れã¾ã—㟠- - - Payment request network doesn't match client network. - 支払ã„リクエストã®ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã¯ç¾åœ¨ã®ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆã®ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã«ä¸€è‡´ã—ã¾ã›ã‚“。 - - - Payment request is not initialized. - 支払ã„リクエストã¯é–‹å§‹ã•れã¦ã„ã¾ã›ã‚“。 - - - Requested payment amount of %1 is too small (considered dust). - è¦æ±‚ã•ã‚ŒãŸæ”¯æ‰•é¡ %1 ã¯å°‘ãªã™ãŽã¾ã™ (ダストã¨ã¿ãªã•れã¦ã—ã¾ã„ã¾ã™)。 - - - Payment request error - 支払ã„ã®ãƒªã‚¯ã‚¨ã‚¹ãƒˆã®ã‚¨ãƒ©ãƒ¼ã§ã™ - - - Cannot start bitcoin: click-to-pay handler - Bitcoin ã‚’èµ·å‹•ã§ãã¾ã›ã‚“: click-to-pay handler - - - Payment request fetch URL is invalid: %1 - 支払ã„è¦æ±‚ã®å–å¾—å…ˆURLãŒç„¡åйã§ã™: %1 - - - URI cannot be parsed! This can be caused by an invalid Bitcoin address or malformed URI parameters. - URI ã‚’è§£æžã§ãã¾ã›ã‚“! ã“れã¯ç„¡åŠ¹ãª Bitcoin アドレスã‚ã‚‹ã„ã‚„ä¸æ­£ãªå½¢å¼ã® URI パラメーターã«ã‚ˆã£ã¦å¼•ãèµ·ã“ã•れる場åˆãŒã‚りã¾ã™ã€‚ - - - Payment request file handling - 支払ã„リクエストファイルを処ç†ã—ã¦ã„ã¾ã™ - - - Payment request file cannot be read! This can be caused by an invalid payment request file. - 支払ã„リクエストファイルを読ã¿è¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸï¼ç„¡åŠ¹ãªæ”¯æ‰•ã„リクエストファイルã«ã‚ˆã‚Šå¼•ãèµ·ã“ã•れãŸå¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ - - - Payment request expired. - 支払ã„ãƒªã‚¯ã‚¨ã‚¹ãƒˆã®æœŸé™ãŒåˆ‡ã‚Œã¾ã—ãŸã€‚ - - - Unverified payment requests to custom payment scripts are unsupported. - カスタム支払ã„スクリプトã«å¯¾ã™ã‚‹ã€æ¤œè¨¼ã•れã¦ã„ãªã„支払ã„リクエストã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“。 - - - Invalid payment request. - ç„¡åŠ¹ãªæ”¯æ‰•ã„リクエスト。 - - - Refund from %1 - %1 ã‹ã‚‰ã®è¿”金 - - - Payment request %1 is too large (%2 bytes, allowed %3 bytes). - 支払リクエスト %1 ã¯å¤§ãã™ãŽã¾ã™ï¼ˆ%2ãƒã‚¤ãƒˆã§ã™ãŒã€%3ãƒã‚¤ãƒˆã¾ã§ãŒè¨±ã•れã¦ã„ã¾ã™ï¼‰ã€‚ - - - Payment request DoS protection - 支払リクエストDoSä¿è­· - - - Error communicating with %1: %2 - %1: %2ã¨ã‚³ãƒŸãƒ¥ãƒ‹ã‚±ãƒ¼ã‚·ãƒ§ãƒ³ãƒ»ã‚¨ãƒ©ãƒ¼ã§ã™ - - - Payment request cannot be parsed! - 支払リクエストを読ã¿è¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸï¼ - - - Bad response from server %1 - サーãƒãƒ¼ã®è¿”事ã¯ç„¡åй %1 - - - Payment acknowledged - 支払ã„ã¯ç¢ºèªã—ã¾ã—㟠- - - Network request error - ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ãƒ»ãƒªã‚¯ã‚¨ã‚¹ãƒˆã®ã‚¨ãƒ©ãƒ¼ã§ã™ - - - - PeerTableModel - - User Agent - ユーザエージェント - - - Node/Service - ノード・サービス - - - Ping Time - Ping時間 - - - - QObject - - Amount - ç·é¡ - - - Enter a Bitcoin address (e.g. %1) - Bitcoinアドレスを入力ã—ã¦ãã ã•ã„ (例 %1) - - - %1 d - %1æ—¥ - - - %1 h - %1 h - - - %1 m - %1 m - - - %1 s - %1ç§’ - - - None - ãªã— - - - N/A - N/A - - - %1 ms - %1ミリ秒 - - - - QRImageWidget - - &Save Image... - ç”»åƒã‚’ä¿å­˜(&S) - - - &Copy Image - ç”»åƒã‚’コピー(&C) - - - Save QR Code - QR コードã®ä¿å­˜ - - - PNG Image (*.png) - PNGç”»åƒãƒ•ァイル(*.png) - - - - RPCConsole - - Client name - クライアントå - - - N/A - N/A - - - Client version - クライアントã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ - - - &Information - 情報 (&I) - - - Debug window - デãƒãƒƒã‚° ウインドウ - - - General - 一般 - - - Using OpenSSL version - 使用中㮠OpenSSL ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ - - - Using BerkeleyDB version - 使用中ã®BerkleyDBãƒãƒ¼ã‚¸ãƒ§ãƒ³ - - - Startup time - èµ·å‹•ã—ãŸæ—¥æ™‚ - - - Network - ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ - - - Name - åå‰ - - - Number of connections - 接続数 - - - Block chain - ブロック ãƒã‚§ãƒ¼ãƒ³ - - - Current number of blocks - ç¾åœ¨ã®ãƒ–ロック数 - - - Open the Bitcoin Core debug log file from the current data directory. This can take a few seconds for large log files. - ç¾åœ¨ã®ãƒ‡ãƒ¼ã‚¿ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‹ã‚‰Bitcoin Coreã®ãƒ‡ãƒãƒƒã‚°ç”¨ãƒ­ã‚°ãƒ•ァイルを開ãã¾ã™ã€‚ログファイルãŒå·¨å¤§ãªå ´åˆã€æ•°ç§’ã‹ã‹ã‚‹ã“ã¨ãŒã‚りã¾ã™ã€‚ - - - Received - å—å– - - - Sent - é€é‡‘ - - - &Peers - ピア (&P) - - - Select a peer to view detailed information. - 詳ã—ã„æƒ…報を見ãŸã„ãƒ”ã‚¢ã‚’é¸æŠžã—ã¦ãã ã•ã„。 - - - Direction - æ–¹å‘ - - - Version - ãƒãƒ¼ã‚¸ãƒ§ãƒ³ - - - User Agent - ユーザエージェント - - - Services - サービス - - - Starting Height - 開始時ã®ãƒ–ロック高 - - - Sync Height - åŒæœŸæ¸ˆã¿ãƒ–ロック高 - - - Ban Score - Banスコア - - - Connection Time - 接続時間 - - - Last Send - 最終é€ä¿¡ - - - Last Receive - 最終å—ä¿¡ - - - Bytes Sent - é€ä¿¡æ¸ˆãƒã‚¤ãƒˆæ•° - - - Bytes Received - å—信済ãƒã‚¤ãƒˆæ•° - - - Ping Time - Ping時間 - - - Time Offset - 時間オフセット - - - Last block time - æœ€çµ‚ãƒ–ãƒ­ãƒƒã‚¯ã®æ—¥æ™‚ - - - &Open - é–‹ã (&O) - - - &Console - コンソール (&C) - - - &Network Traffic - ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ (&N) - - - &Clear - クリア(&C) - - - Totals - åˆè¨ˆ - - - In: - 入力: - - - Out: - 出力: - - - Build date - ãƒ“ãƒ«ãƒ‰ã®æ—¥ä»˜ - - - Debug log file - デãƒãƒƒã‚°ç”¨ãƒ­ã‚°ãƒ•ァイル - - - Clear console - コンソールをクリア - - - Welcome to the Bitcoin Core RPC console. - Bitcoin Coreã®RPCコンソールã¸ã‚ˆã†ã“ã。 - - - Use up and down arrows to navigate history, and <b>Ctrl-L</b> to clear screen. - 上下ã®çŸ¢å°ã§å±¥æ­´ã‚’ãŸã©ã‚Œã¾ã™ã€‚ <b>Ctrl-L</b> ã§ã‚¹ã‚¯ãƒªãƒ¼ãƒ³ã‚’消去ã§ãã¾ã™ã€‚ - - - Type <b>help</b> for an overview of available commands. - 使用å¯èƒ½ãªã‚³ãƒžãƒ³ãƒ‰ã‚’見るã«ã¯ <b>help</b> ã¨å…¥åŠ›ã—ã¾ã™ã€‚ - - - %1 B - %1 B - - - %1 KB - %1 KB - - - %1 MB - %1 MB - - - %1 GB - %1 GB - - - via %1 - %1経由 - - - never - 一度もãªã— - - - Inbound - 内å‘ã - - - Outbound - 外å‘ã - - - Unknown - 未知 - - - Fetching... - å–得中…… - - - - ReceiveCoinsDialog - - &Amount: - ç·é¡:(&A) - - - &Label: - ラベル(&L): - - - &Message: - メッセージ (&M): - - - Reuse one of the previously used receiving addresses. Reusing addresses has security and privacy issues. Do not use this unless re-generating a payment request made before. - 以å‰åˆ©ç”¨ã—ãŸå—å–用アドレスã®ã©ã‚Œã‹ã‚’å†åˆ©ç”¨ã—ã¾ã™ã€‚アドレスã®å†åˆ©ç”¨ã¯ã‚»ã‚­ãƒ¥ãƒªãƒ†ã‚£ãŠã‚ˆã³ãƒ—ライãƒã‚·ãƒ¼ã«ãŠã„ã¦å•題ãŒã‚りã¾ã™ã€‚以å‰ä½œæˆã—ãŸæ”¯æ‰•リクエストをå†ç”Ÿæˆã™ã‚‹ã¨ã以外ã¯åˆ©ç”¨ã—ãªã„ã§ãã ã•ã„。 - - - R&euse an existing receiving address (not recommended) - 既存ã®å—å–用アドレスをå†åˆ©ç”¨ã™ã‚‹ (éžæŽ¨å¥¨) (&E) - - - An optional message to attach to the payment request, which will be displayed when the request is opened. Note: The message will not be sent with the payment over the Bitcoin network. - 支払リクエストãŒé–‹å§‹ã•ã‚ŒãŸæ™‚ã«è¡¨ç¤ºã•ã‚Œã‚‹ã€æ”¯æ‰•ãƒªã‚¯ã‚¨ã‚¹ãƒˆã«æ·»ãˆã‚‹ä»»æ„ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã§ã™ã€‚注æ„:メッセージã¯Bitcoinãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã‚’通ã˜ã¦ã€æ”¯æ‰•ã¨å…±ã«é€ã‚‰ã‚Œã‚‹ã‚ã‘ã§ã¯ã‚りã¾ã›ã‚“。 - - - An optional label to associate with the new receiving address. - å—å–用アドレスã«ç´ã¥ãä»»æ„ã®ãƒ©ãƒ™ãƒ«ã€‚ - - - Use this form to request payments. All fields are <b>optional</b>. - ã“ã®ãƒ•ォームを使用ã—ã¦æ”¯æ‰•ã®ãƒªã‚¯ã‚¨ã‚¹ãƒˆã‚’行ã„ã¾ã—ょã†ã€‚ã™ã¹ã¦ã®é …ç›®ã¯<b>ä»»æ„入力</b>ã§ã™ã€‚ - - - An optional amount to request. Leave this empty or zero to not request a specific amount. - リクエストã™ã‚‹ä»»æ„ã®é‡‘é¡ã€‚特定ã®é‡‘é¡ã‚’リクエストã™ã‚‹ã®ã§ãªã„å ´åˆã«ã¯ã€ã“ã®æ¬„ã¯ç©ºç™½ã®ã¾ã¾ã‹ã‚¼ãƒ­ã«ã—ã¦ãã ã•ã„。 - - - Clear all fields of the form. - å…¨ã¦ã®å…¥åŠ›é …ç›®ã‚’ã‚¯ãƒªã‚¢ - - - Clear - クリア - - - Requested payments history - 支払リクエスト履歴 - - - &Request payment - 支払をリクエストã™ã‚‹ (&R) - - - Show the selected request (does the same as double clicking an entry) - é¸æŠžã•れãŸãƒªã‚¯ã‚¨ã‚¹ãƒˆã‚’表示ã™ã‚‹ï¼ˆé …目をダブルクリックã™ã‚‹ã“ã¨ã§ã‚‚表示ã§ãã¾ã™ï¼‰ - - - Show - 表示 - - - Remove the selected entries from the list - リストã‹ã‚‰é¸æŠžé …目を削除 - - - Remove - 削除 - - - Copy label - ラベルをコピーã™ã‚‹ - - - Copy message - メッセージをコピーã™ã‚‹ - - - Copy amount - ç·é¡ã®ã‚³ãƒ”ー - - - - ReceiveRequestDialog - - QR Code - QR コード - - - Copy &URI - URI をコピーã™ã‚‹ (&U) - - - Copy &Address - アドレスをコピーã™ã‚‹ (&A) - - - &Save Image... - ç”»åƒã‚’ä¿å­˜(&S) - - - Request payment to %1 - %1 ã¸ã®æ”¯æ‰•ã„リクエストを行ㆠ- - - Payment information - æ”¯æ‰•ã„æƒ…å ± - - - URI - URI - - - Address - アドレス - - - Amount - ç·é¡ - - - Label - ラベル - - - Message - メッセージ - - - Resulting URI too long, try to reduce the text for label / message. - URI ãŒé•·ããªã‚ŠéŽãŽã¾ã™ã€‚ラベルやメッセージã®ãƒ†ã‚­ã‚¹ãƒˆã‚’短ãã—ã¦ãã ã•ã„。 - - - Error encoding URI into QR Code. - QR コード用㮠URI エンコードã§ã‚¨ãƒ©ãƒ¼ã€‚ - - - - RecentRequestsTableModel - - Date - 日付 - - - Label - ラベル - - - Message - メッセージ - - - Amount - ç·é¡ - - - (no label) - (ラベル無ã—) - - - (no message) - (メッセージãªã—) - - - (no amount) - (金é¡ãªã—) - - - - SendCoinsDialog - - Send Coins - コインをé€ã‚‹ - - - Coin Control Features - コインコントロール機能 - - - Inputs... - 入力... - - - automatically selected - è‡ªå‹•é¸æŠž - - - Insufficient funds! - 残高ä¸è¶³ã§ã™ï¼ - - - Quantity: - æ•°é‡: - - - Bytes: - ãƒã‚¤ãƒˆ: - - - Amount: - ç·é¡: - - - Priority: - 優先度: - - - Fee: - 手数料: - - - After Fee: - 手数料差引後: - - - Change: - 釣り銭: - - - If this is activated, but the change address is empty or invalid, change will be sent to a newly generated address. - ã“ã‚ŒãŒæœ‰åйã«ã‚‚ã‹ã‹ã‚らãšãŠã¤ã‚Šã‚¢ãƒ‰ãƒ¬ã‚¹ãŒç©ºæ¬„ã§ã‚ã£ãŸã‚Šç„¡åйã§ã‚ã£ãŸå ´åˆã«ã¯ã€ãŠã¤ã‚Šã¯æ–°ã—ã生æˆã•れãŸã‚¢ãƒ‰ãƒ¬ã‚¹ã¸é€é‡‘ã•れã¾ã™ã€‚ - - - Custom change address - カスタムãŠã¤ã‚Šã‚¢ãƒ‰ãƒ¬ã‚¹ - - - Transaction Fee: - トランザクション手数料: - - - Choose... - é¸æŠžâ€¦â€¦ - - - collapse fee-settings - 手数料設定を折りãŸãŸã‚€ - - - per kilobyte - 1キロãƒã‚¤ãƒˆã‚ãŸã‚Šæ‰‹æ•°æ–™ - - - 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. - カスタム手数料ãŒ1000satoshiã«è¨­å®šã•れã¦ã„ã‚‹å ´åˆã€ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã‚µã‚¤ã‚ºãŒ250ãƒã‚¤ãƒˆã¨ã™ã‚‹ã¨ã€ã€Œ1キロãƒã‚¤ãƒˆã‚ãŸã‚Šæ‰‹æ•°æ–™ã€ã§ã¯250satoshiã®æ‰‹æ•°æ–™ã®ã¿ã‚’支払ã„ã¾ã™ãŒã€ã€Œæœ€å°æ‰‹æ•°æ–™ã€ã§ã¯1000satoshiを支払ã„ã¾ã™ã€‚1キロãƒã‚¤ãƒˆã‚’è¶…ãˆã‚‹ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã®å ´åˆã«ã¯ã€ã©ã¡ã‚‰ã®æ–¹æ³•ã‚’é¸æŠžã—ãŸã¨ã—ã¦ã‚‚1キロãƒã‚¤ãƒˆã‚ãŸã‚Šã§æ”¯æ‰•ã‚れã¾ã™ã€‚ - - - Hide - éš ã™ - - - total at least - æœ€å°æ‰‹æ•°æ–™ - - - 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. - ブロックã®å®¹é‡ã«æ¯”ã¹ã¦ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³æµé‡ãŒå°‘ãªã„ã†ã¡ã¯æœ€å°æ‰‹æ•°æ–™ã®ã¿ã®æ”¯æ‰•ã§å分ã§ã™ã€‚ã—ã‹ã—ãªãŒã‚‰ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ãŒå‡¦ç†ã—ãれãªã„ã»ã©bitcoinトランザクションã®éœ€è¦ãŒã²ã¨ãŸã³ç”Ÿã¾ã‚Œã¦ã—ã¾ã£ãŸå ´åˆã«ã¯ã€æ°¸é ã«æ¤œè¨¼ãŒã•れãªã„トランザクションã«ãªã£ã¦ã—ã¾ã†å¯èƒ½æ€§ãŒã‚ã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。 - - - (read the tooltip) - (ツールãƒãƒƒãƒ—ã‚’ãŠèª­ã¿ãã ã•ã„) - - - Recommended: - 推奨: - - - Custom: - カスタム: - - - (Smart fee not initialized yet. This usually takes a few blocks...) - (スマート手数料ã¯ã¾ã åˆæœŸåŒ–ã•れã¦ã„ã¾ã›ã‚“。ã“れã«ã¯ãŠãŠã‚ˆã数ブロックã»ã©ã‹ã‹ã‚Šã¾ã™â€¦â€¦ï¼‰ - - - Confirmation time: - 検証時間: - - - normal - 普通 - - - fast - 高速 - - - Send as zero-fee transaction if possible - å¯èƒ½ãªå ´åˆã«ã¯æ‰‹æ•°æ–™ã‚¼ãƒ­ã®ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã¨ã—ã¦é€é‡‘ã™ã‚‹ - - - (confirmation may take longer) - (検証ã«é•·ã„時間ãŒã‹ã‹ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ï¼‰ - - - Send to multiple recipients at once - 一度ã«è¤‡æ•°ã®äººã«é€ã‚‹ - - - Add &Recipient - å—å–人を追加 (&R) - - - Clear all fields of the form. - å…¨ã¦ã®å…¥åŠ›é …ç›®ã‚’ã‚¯ãƒªã‚¢ - - - Dust: - ダスト: - - - Clear &All - ã™ã¹ã¦ã‚¯ãƒªã‚¢ (&A) - - - Balance: - 残高: - - - Confirm the send action - é€ã‚‹æ“作を確èªã™ã‚‹ - - - S&end - é€ã‚‹ (&e) - - - Confirm send coins - コインをé€ã‚‹ç¢ºèª - - - %1 to %2 - %1 ã‹ã‚‰ %2 - - - Copy quantity - æ•°é‡ã‚’コピーã™ã‚‹ - - - Copy amount - ç·é¡ã®ã‚³ãƒ”ー - - - Copy fee - 手数料をコピーã™ã‚‹ - - - Copy after fee - 手数料差引後ã®å€¤ã‚’コピーã™ã‚‹ - - - Copy bytes - ãƒã‚¤ãƒˆæ•°ã‚’コピーã™ã‚‹ - - - Copy priority - 優先度をコピーã™ã‚‹ - - - Copy change - 釣り銭をコピー - - - or - ã¾ãŸã¯ - - - The amount to pay must be larger than 0. - 支払é¡ã¯0より大ãããªã„ã¨ã„ã‘ã¾ã›ã‚“。 - - - The amount exceeds your balance. - é¡ãŒæ®‹é«˜ã‚’è¶…ãˆã¦ã„ã¾ã™ã€‚ - - - The total exceeds your balance when the %1 transaction fee is included. - %1 ã®å–引手数料をå«ã‚ã‚‹ã¨é¡ãŒæ®‹é«˜ã‚’è¶…ãˆã¦ã„ã¾ã™ã€‚ - - - Transaction creation failed! - トラザクションã®ä½œæˆã«å¤±æ•—ã—ã¾ã—ãŸ! - - - 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. - ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã¯æ‹’å¦ã•れã¾ã—ãŸã€‚wallet.dat ã®ã‚³ãƒ”ーを使ã„ã€ãã—ã¦ã‚³ãƒ”ーã—ãŸã‚¦ã‚©ãƒ¬ãƒƒãƒˆã‹ã‚‰ã‚³ã‚¤ãƒ³ã‚’使用ã—ãŸã“ã¨ãŒãƒžãƒ¼ã‚¯ã•れãªã‹ã£ãŸã¨ããªã©ã€ã‚¦ã‚©ãƒ¬ãƒƒãƒˆã®ã„ãã¤ã‹ã®ã‚³ã‚¤ãƒ³ãŒã™ã§ã«ä½¿ç”¨ã•れã¦ã„ã‚‹å ´åˆã«ã€ã“ã®ã‚¨ãƒ©ãƒ¼ã¯èµ·ã“ã‚‹ã‹ã‚‚ã—れã¾ã›ã‚“。 - - - A fee higher than %1 is considered an absurdly high fee. - %1 ã‚ˆã‚Šã‚‚é«˜ã„æ‰‹æ•°æ–™ã®å ´åˆã€æ‰‹æ•°æ–™ãŒé«˜ã™ãŽã‚‹ã¨åˆ¤æ–­ã•れã¾ã™ã€‚ - - - Payment request expired. - 支払ã„ãƒªã‚¯ã‚¨ã‚¹ãƒˆã®æœŸé™ãŒåˆ‡ã‚Œã¾ã—ãŸã€‚ - - - Estimated to begin confirmation within %n block(s). - %n ãƒ–ãƒ­ãƒƒã‚¯ä»¥å†…ã«æ¤œè¨¼ãŒé–‹å§‹ã•れるã¨äºˆæƒ³ã•れã¾ã™ã€‚ - - - Pay only the minimum fee of %1 - æœ€å°æ‰‹æ•°æ–™ %1 ã®ã¿ã‚’支払ㆠ- - - Total Amount %1<span style='font-size:10pt;font-weight:normal;'><br />(=%2)</span> - ç·é¡ %1<span style='font-size:10pt;font-weight:normal;'><br />(=%2)</span> - - - The recipient address is not valid. Please recheck. - å—å–アドレスãŒä¸æ­£ã§ã™ã€‚å†ãƒã‚§ãƒƒã‚¯ã—ã¦ãã ã•ã„。 - - - Duplicate address found: addresses should only be used once each. - é‡è¤‡ã—ãŸã‚¢ãƒ‰ãƒ¬ã‚¹ãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸ: アドレスã¯ãれãžã‚Œä¸€åº¦ã®ã¿ä½¿ç”¨ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ - - - Warning: Invalid Bitcoin address - 警告:無効ãªBitcoinアドレスã§ã™ - - - (no label) - (ラベル無ã—) - - - Warning: Unknown change address - 警告:未知ã®ãŠã¤ã‚Šã‚¢ãƒ‰ãƒ¬ã‚¹ã§ã™ - - - Copy dust - ダストをコピーã™ã‚‹ - - - Are you sure you want to send? - é€ã£ã¦ã‚ˆã‚ã—ã„ã§ã™ã‹ï¼Ÿ - - - added as transaction fee - å–引手数料ã¨ã—ã¦è¿½åŠ ã•れ㟠- - - - SendCoinsEntry - - A&mount: - 金é¡(&A): - - - Pay &To: - é€ã‚Šå…ˆ(&T): - - - Enter a label for this address to add it to your address book - アドレス帳ã«è¿½åŠ ã™ã‚‹ã«ã¯ã€ã“ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã®ãƒ©ãƒ™ãƒ«ã‚’入力ã—ã¾ã™ - - - &Label: - ラベル(&L): - - - Choose previously used address - å‰ã«ä½¿ç”¨ã—ãŸã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’é¸ã¶ - - - This is a normal payment. - ã“れã¯é€šå¸¸ã®æ”¯æ‰•ã§ã™ã€‚ - - - The Bitcoin address to send the payment to - 支払ã®é€é‡‘å…ˆBitcoinアドレス - - - Alt+A - Alt+A - - - Paste address from clipboard - クリップボードã‹ã‚‰ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’貼付ã‘ã‚‹ - - - Alt+P - Alt+P - - - Remove this entry - ã“ã®é …目を削除ã™ã‚‹ - - - The fee will be deducted from the amount being sent. The recipient will receive less bitcoins than you enter in the amount field. If multiple recipients are selected, the fee is split equally. - é€é‡‘ã™ã‚‹é‡‘é¡ã‹ã‚‰æ‰‹æ•°æ–™ãŒå·®ã—引ã‹ã‚Œã¾ã™ã€‚å—å–äººã¯æ•°é‡ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã§æŒ‡å®šã—ãŸé‡ã‚ˆã‚Šã‚‚å°‘ãªã„ビットコインをå—ã‘å–りã¾ã™ã€‚å—å–人ãŒè¤‡æ•°ã„ã‚‹å ´åˆã«ã¯ã€æ‰‹æ•°æ–™ã¯å‡ç­‰å‰²ã•れã¾ã™ã€‚ - - - S&ubtract fee from amount - é€é‡‘é¡ã‹ã‚‰æ‰‹æ•°æ–™ã‚’å·®ã—引ã (&U) - - - Message: - メッセージ: - - - This is an unauthenticated payment request. - ã“ã‚Œã¯æœªèªè¨¼ã®æ”¯æ‰•ã„リクエストã§ã™ã€‚ - - - This is an authenticated payment request. - ã“れã¯èªè¨¼æ¸ˆã¿ã®æ”¯æ‰•ã„リクエストã§ã™ã€‚ - - - Enter a label for this address to add it to the list of used addresses - ã“ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã«å¯¾ã™ã‚‹ãƒ©ãƒ™ãƒ«ã‚’入力ã™ã‚‹ã“ã¨ã§ã€ä½¿ç”¨æ¸ˆã¿ã‚¢ãƒ‰ãƒ¬ã‚¹ã®ä¸€è¦§ã«è¿½åŠ ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ - - - A message that was attached to the bitcoin: URI which will be stored with the transaction for your reference. Note: This message will not be sent over the Bitcoin network. - bitcoin: URIã«æ·»ä»˜ã•れã¦ã„ãŸãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã§ã™ã€‚ã“れã¯å‚照用ã¨ã—ã¦ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã¨ã¨ã‚‚ã«ä¿å­˜ã•れã¾ã™ã€‚注æ„:ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã¯Bitcoinãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã‚’通ã—ã¦é€ä¿¡ã•れるã‚ã‘ã§ã¯ã‚りã¾ã›ã‚“。 - - - Pay To: - 支払先: - - - Memo: - メモ: - - - - ShutdownWindow - - Bitcoin Core is shutting down... - Bitcoin Coreをシャットダウンã—ã¦ã„ã¾ã™ã€‚ - - - Do not shut down the computer until this window disappears. - ã“ã®ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ãŒæ¶ˆãˆã‚‹ã¾ã§ã‚³ãƒ³ãƒ”ュータをシャットダウンã—ãªã„ã§ä¸‹ã•ã„。 - - - - SignVerifyMessageDialog - - Signatures - Sign / Verify a Message - ç½²å - メッセージã®ç½²å/検証 - - - &Sign Message - メッセージã®ç½²å (&S) - - - You can sign messages/agreements with your addresses to prove you can receive bitcoins sent to them. Be careful not to sign anything vague or random, as phishing attacks may try to trick you into signing your identity over to them. Only sign fully-detailed statements you agree to. - ã‚ãªãŸã®æ‰€æœ‰ã—ã¦ã„るアドレスã«ã‚ˆã‚Šãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚„åˆæ„書ã«ç½²åã‚’ã™ã‚‹ã“ã¨ã§ã€ãれらアドレスã«å¯¾ã—ã¦é€ã‚‰ã‚ŒãŸãƒ“ットコインをå—ã‘å–ã‚‹ã“ã¨ãŒã§ãã‚‹ã“ã¨ã‚’証明ã§ãã¾ã™ã€‚フィッシング攻撃ã«ã‚ˆã‚Šä¸æ­£ã«ã‚ãªãŸã®è­˜åˆ¥æƒ…報を署åã•ã›ã‚‰ã‚Œã¦ã—ã¾ã†ã“ã¨ã‚’防ããŸã‚ã«ã€ä¸æ˜Žç¢ºãªã‚‚ã®ã‚„ランダムãªã‚‚ã®ã«å¯¾ã—ã¦ç½²åã—ãªã„ã‚ˆã†æ³¨æ„ã—ã¦ãã ã•ã„ã€‚åˆæ„ã™ã‚‹ã“ã¨ãŒå¯èƒ½ãªã€ã‚ˆã詳細ã®è¨˜ã•ã‚ŒãŸæ–‡è¨€ã«ã®ã¿ç½²åã™ã‚‹ã‚ˆã†ã«ã—ã¦ãã ã•ã„。 - - - The Bitcoin address to sign the message with - メッセージを署åã™ã‚‹Bitcoinアドレス - - - Choose previously used address - å‰ã«ä½¿ç”¨ã—ãŸã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’é¸ã¶ - - - Alt+A - Alt+A - - - Paste address from clipboard - クリップボードã‹ã‚‰ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’貼付ã‘ã‚‹ - - - Alt+P - Alt+P - - - Enter the message you want to sign here - ã“ã“ã«ã‚ãªãŸãŒç½²åã™ã‚‹ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’入力ã—ã¾ã™ - - - Signature - ç½²å - - - Copy the current signature to the system clipboard - ç¾åœ¨ã®ç½²åをシステムã®ã‚¯ãƒªãƒƒãƒ—ボードã«ã‚³ãƒ”ーã™ã‚‹ - - - Sign the message to prove you own this Bitcoin address - ã“ã® Bitcoin アドレスを所有ã—ã¦ã„ã‚‹ã“ã¨ã‚’証明ã™ã‚‹ãŸã‚ã«ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã«ç½²å - - - Sign &Message - メッセージã®ç½²å (&M) - - - Reset all sign message fields - 入力項目ã®å†…容をã™ã¹ã¦æ¶ˆåŽ»ã—ã¾ã™ - - - Clear &All - ã™ã¹ã¦ã‚¯ãƒªã‚¢ (&A) - - - &Verify Message - ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã®æ¤œè¨¼ (&V) - - - Enter the receiver's address, message (ensure you copy line breaks, spaces, tabs, etc. exactly) and signature below to verify the message. Be careful not to read more into the signature than what is in the signed message itself, to avoid being tricked by a man-in-the-middle attack. Note that this only proves the signing party receives with the address, it cannot prove sendership of any transaction! - å—å–人ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã¨ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ï¼ˆæ”¹è¡Œã‚„スペースã€ã‚¿ãƒ–ãªã©ã‚‚完全ã«ä¸€è‡´ã™ã‚‹ã‚ˆã†æ³¨æ„ã—ã¦ãã ã•ã„)ãŠã‚ˆã³ç½²åを以下ã«å…¥åŠ›ã—ã€ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã®ç½²åを検証ã—ã¦ãã ã•ã„。中間者攻撃ã«ã‚ˆã‚Šé¨™ã•れるã®ã‚’防ããŸã‚ã€ç½²å対象ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã«æ›¸ã‹ã‚Œã¦ã„ã‚‹ã“ã¨ä»¥ä¸Šã®æ„味を署åã‹ã‚‰èª­ã¿å–ã‚ã†ã¨ã—ãªã„ã‚ˆã†æ³¨æ„ã—ã¦ãã ã•ã„。ã“れã¯ç½²å作æˆè€…ãŒã“ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã§å—ã‘å–ã£ãŸã“ã¨ã‚’証明ã™ã‚‹ã ã‘ã§ã‚りã€ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã®é€ä¿¡æ¨©é™ã‚’証明ã™ã‚‹ã‚‚ã®ã§ã¯ãªã„ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„ï¼ - - - The Bitcoin address the message was signed with - メッセージã®ç½²åã«ä½¿ã‚れãŸBitcoinアドレス - - - Verify the message to ensure it was signed with the specified Bitcoin address - 指定ã•れ㟠Bitcoin アドレスã§ç½²åã•れãŸã“ã¨ã‚’ä¿è¨¼ã™ã‚‹ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’検証 - - - Verify &Message - ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã®æ¤œè¨¼ (&M) - - - Reset all verify message fields - 入力項目ã®å†…容をã™ã¹ã¦æ¶ˆåŽ»ã—ã¾ã™ - - - Click "Sign Message" to generate signature - ç½²åを作æˆã™ã‚‹ã«ã¯"メッセージã®ç½²å"をクリック - - - The entered address is invalid. - 䏿­£ãªã‚¢ãƒ‰ãƒ¬ã‚¹ãŒå…¥åŠ›ã•れã¾ã—ãŸã€‚ - - - Please check the address and try again. - アドレスを確ã‹ã‚ã¦ã‹ã‚‰ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ãã ã•ã„。 - - - The entered address does not refer to a key. - 入力ã•れãŸã‚¢ãƒ‰ãƒ¬ã‚¹ã«é–¢é€£ã™ã‚‹ã‚­ãƒ¼ãŒã‚りã¾ã›ã‚“。 - - - Wallet unlock was cancelled. - ウォレットã®ã‚¢ãƒ³ãƒ­ãƒƒã‚¯ã¯ã‚­ãƒ£ãƒ³ã‚»ãƒ«ã•れã¾ã—ãŸã€‚ - - - Private key for the entered address is not available. - 入力ã•れãŸã‚¢ãƒ‰ãƒ¬ã‚¹ã®ãƒ—ライベート キーãŒç„¡åйã§ã™ã€‚ - - - Message signing failed. - メッセージã®ç½²åã«å¤±æ•—ã—ã¾ã—ãŸã€‚ - - - Message signed. - メッセージã«ç½²åã—ã¾ã—ãŸã€‚ - - - The signature could not be decoded. - ç½²åãŒãƒ‡ã‚³ãƒ¼ãƒ‰ã§ãã¾ã›ã‚“。 - - - Please check the signature and try again. - ç½²åを確èªã—ã¦ã‹ã‚‰ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ãã ã•ã„。 - - - The signature did not match the message digest. - ç½²åã¯ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ ダイジェストã¨ä¸€è‡´ã—ã¾ã›ã‚“ã§ã—ãŸã€‚ - - - Message verification failed. - ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã®æ¤œè¨¼ã«å¤±æ•—ã—ã¾ã—ãŸã€‚ - - - Message verified. - ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã¯æ¤œè¨¼ã•れã¾ã—ãŸã€‚ - - - - SplashScreen - - Bitcoin Core - Bitcoin ã®ã‚³ã‚¢ - - - The Bitcoin Core developers - ビットコインコアã®é–‹ç™ºè€… - - - [testnet] - [testnet] - - - - TrafficGraphWidget - - KB/s - KB/s - - - - TransactionDesc - - Open until %1 - ユニット %1 ã‚’é–‹ã - - - conflicted - è¡çª - - - %1/offline - %1/オフライン - - - %1/unconfirmed - %1/未検証 - - - %1 confirmations - %1 ç¢ºèª - - - Status - ステータス - - - , broadcast through %n node(s) - %n ノードã«ãƒ–ロードキャスト - - - Date - 日付 - - - Source - ソース - - - Generated - 生æˆã•れ㟠- - - From - é€ä¿¡ - - - To - å—ä¿¡ - - - own address - 自分ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ - - - watch-only - 監視é™å®š - - - label - ラベル - - - Credit - クレジット - - - matures in %n more block(s) - %n 以上ã®ãƒ–ãƒ­ãƒƒã‚¯ãŒæº€æœŸ - - - not accepted - 承èªã•れãªã‹ã£ãŸ - - - Debit - 引ãè½ã¨ã—é¡ - - - Total debit - ç·å‡ºé‡‘é¡ - - - Total credit - ç·å…¥é‡‘é¡ - - - Transaction fee - å–引手数料 - - - Net amount - æ­£å‘³é‡‘é¡ - - - Message - メッセージ - - - Comment - コメント - - - Transaction ID - å–引 ID - - - Merchant - 商人 - - - Generated coins must mature %1 blocks before they can be spent. When you generated this block, it was broadcast to the network to be added to the block chain. If it fails to get into the chain, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - 生æˆã•れãŸã‚³ã‚¤ãƒ³ã¯ä½¿ã†å‰ã«%1ã®ãƒ–ロックを完æˆã•ã›ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ã‚ãªãŸãŒç”Ÿæˆã—ãŸæ™‚ã€ã“ã®ãƒ–ロックã¯ãƒ–ロック ãƒã‚§ãƒ¼ãƒ³ã«è¿½åŠ ã•れるãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã«ãƒ–ロードキャストã•れã¾ã—ãŸã€‚ãƒã‚§ãƒ¼ãƒ³ã«è¿½åŠ ã•れるã®ãŒå¤±æ•—ã—ãŸå ´åˆã€çŠ¶æ…‹ãŒ"䏿‰¿èª"ã«å¤‰æ›´ã•れã¦ä½¿ãˆãªããªã‚‹ã§ã—ょã†ã€‚ã“れã¯ã€åˆ¥ã®ãƒŽãƒ¼ãƒ‰ãŒã‚ãªãŸã®æ•°ç§’å‰ã«ãƒ–ロックを生æˆã™ã‚‹å ´åˆã«æ™‚々起ã“ã‚‹ã‹ã‚‚ã—れã¾ã›ã‚“。 - - - Debug information - デãƒãƒƒã‚°æƒ…å ± - - - Transaction - å–引 - - - Inputs - 入力 - - - Amount - ç·é¡ - - - true - æ­£ã—ã„ - - - false - æ­£ã—ããªã„ - - - , has not been successfully broadcast yet - ã¾ã ãƒ–ãƒ­ãƒ¼ãƒ‰ã‚­ãƒ£ã‚¹ãƒˆãŒæˆåŠŸã—ã¦ã„ã¾ã›ã‚“ - - - Open for %n more block(s) - %n 以上ã®ãƒ–ロックを開ã - - - unknown - æœªç¢ºèª - - - - TransactionDescDialog - - Transaction details - å–引ã®è©³ç´° - - - This pane shows a detailed description of the transaction - ã“ã“ã§ã¯å–引ã®è©³ç´°ã‚’表示ã—ã¦ã„ã¾ã™ - - - - TransactionTableModel - - Date - 日付 - - - Type - タイプ - - - Immature (%1 confirmations, will be available after %2) - 未æˆç†Ÿï¼ˆ%1検証。%2検証完了後ã«ä½¿ç”¨å¯èƒ½ã¨ãªã‚Šã¾ã™ï¼‰ - - - Open for %n more block(s) - %n 以上ã®ãƒ–ロックを開ã - - - Open until %1 - ユニット %1 ã‚’é–‹ã - - - Confirmed (%1 confirmations) - 検証ã•れã¾ã—㟠(%1 検証済ã¿) - - - This block was not received by any other nodes and will probably not be accepted! - ã“ã®ãƒ–ロックã¯ä»–ã®ã©ã®ãƒŽãƒ¼ãƒ‰ã«ã‚ˆã£ã¦ã‚‚å—ã‘å–られãªã„ã§ã€å¤šåˆ†å—ã‘入れられãªã„ã§ã—ょã†ï¼ - - - Generated but not accepted - 生æˆã•れã¾ã—ãŸãŒæ‰¿èªã•れã¾ã›ã‚“ã§ã—㟠- - - Offline - オフライン - - - Label - ラベル - - - Unconfirmed - 未検証 - - - Confirming (%1 of %2 recommended confirmations) - 検証中(%2ã®æŽ¨å¥¨æ¤œè¨¼æ•°ã®ã†ã¡ã€%1検証ãŒå®Œäº†ï¼‰ - - - Conflicted - è¡çª - - - Received with - å—ä¿¡å…ƒ - - - Received from - é€ã‚Šä¸» - - - Sent to - é€ã‚Šå…ˆ - - - Payment to yourself - 自分自身ã¸ã®æ”¯æ‰•ã„ - - - Mined - 発掘ã—㟠- - - watch-only - 監視é™å®š - - - (n/a) - (n/a) - - - Transaction status. Hover over this field to show number of confirmations. - å–引ã®çжæ³ã€‚ã“ã®ãƒ•ィールドã®ä¸Šã«ã‚«ãƒ¼ã‚½ãƒ«ã‚’ç½®ãã¨æ¤œè¨¼ã®æ•°ã‚’表示ã—ã¾ã™ã€‚ - - - Date and time that the transaction was received. - å–引をå—ä¿¡ã—ãŸæ—¥æ™‚。 - - - Type of transaction. - å–引ã®ç¨®é¡žã€‚ - - - Whether or not a watch-only address is involved in this transaction. - 監視é™å®šã‚¢ãƒ‰ãƒ¬ã‚¹ãŒã“ã®ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã«å«ã¾ã‚Œã¦ã„ã‚‹ã‹ã©ã†ã‹ - - - User-defined intent/purpose of the transaction. - ユーザ定義ã®ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã®æ„図や目的。 - - - Amount removed from or added to balance. - 残高ã«è¿½åŠ ã¾ãŸã¯å‰Šé™¤ã•れãŸç·é¡ã€‚ - - - - TransactionView - - All - ã™ã¹ã¦ - - - Today - 今日 - - - This week - 今週 - - - This month - 今月 - - - Last month - 先月 - - - This year - 今年 - - - Range... - 期間... - - - Received with - é€ã‚Šä¸» - - - Sent to - é€ã‚Šå…ˆ - - - To yourself - 自分自身 - - - Mined - 発掘ã—㟠- - - Other - ãã®ä»– - - - Enter address or label to search - 検索ã™ã‚‹ã‚¢ãƒ‰ãƒ¬ã‚¹ã¾ãŸã¯ãƒ©ãƒ™ãƒ«ã‚’入力 - - - Min amount - 最å°ã®é¡ - - - Copy address - アドレスをコピーã™ã‚‹ - - - Copy label - ラベルをコピーã™ã‚‹ - - - Copy amount - ç·é¡ã®ã‚³ãƒ”ー - - - Copy transaction ID - å–引 ID をコピー - - - Edit label - ラベルã®ç·¨é›† - - - Show transaction details - å–引ã®è©³ç´°ã‚’表示 - - - Export Transaction History - トランザクション履歴をエクスãƒãƒ¼ãƒˆã™ã‚‹ - - - Watch-only - 監視é™å®š - - - Exporting Failed - エクスãƒãƒ¼ãƒˆã«å¤±æ•—ã—ã¾ã—㟠- - - There was an error trying to save the transaction history to %1. - トランザクション履歴を %1 ã¸ä¿å­˜ã™ã‚‹éš›ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚ - - - Exporting Successful - エクスãƒãƒ¼ãƒˆã«æˆåŠŸã—ã¾ã—㟠- - - The transaction history was successfully saved to %1. - ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³å±¥æ­´ã¯æ­£å¸¸ã«%1ã«ä¿å­˜ã•れã¾ã—ãŸã€‚ - - - Comma separated file (*.csv) - テキスト CSV (*.csv) - - - Confirmed - 検証済㿠- - - Date - 日付 - - - Type - タイプ - - - Label - ラベル - - - Address - Helbidea - - - ID - ID - - - Range: - 期間: - - - to - ã‹ã‚‰ - - - - UnitDisplayStatusBarControl - - Unit to show amounts in. Click to select another unit. - 金é¡ã‚’表示ã™ã‚‹éš›ã®å˜ä½ã€‚クリックã™ã‚‹ã“ã¨ã§ä»–ã®å˜ä½ã‚’é¸æŠžã—ã¾ã™ã€‚ - - - - WalletFrame - - No wallet has been loaded. - ウォレットãŒãƒ­ãƒ¼ãƒ‰ã•れã¦ã„ã¾ã›ã‚“ - - - - WalletModel - - Send Coins - コインをé€ã‚‹ - - - - WalletView - - &Export - エクスãƒãƒ¼ãƒˆ (&E) - - - Export the data in the current tab to a file - ファイルã«ç¾åœ¨ã®ã‚¿ãƒ–ã®ãƒ‡ãƒ¼ã‚¿ã‚’エクスãƒãƒ¼ãƒˆ - - - Backup Wallet - ウォレットã®ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ— - - - Wallet Data (*.dat) - ウォレット データ (*.dat) - - - Backup Failed - ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—ã«å¤±æ•—ã—ã¾ã—㟠- - - There was an error trying to save the wallet data to %1. - ウォレットデータを%1ã¸ä¿å­˜ã™ã‚‹éš›ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚ - - - The wallet data was successfully saved to %1. - ウォレット ãƒ‡ãƒ¼ã‚¿ã¯æ­£å¸¸ã«%1ã«ä¿å­˜ã•れã¾ã—ãŸã€‚ - - - Backup Successful - ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—æˆåŠŸ - - - - bitcoin-core - - Options: - オプション: - - - Specify data directory - データ ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã®æŒ‡å®š - - - Connect to a node to retrieve peer addresses, and disconnect - ピア アドレスをå–å¾—ã™ã‚‹ãŸã‚ã«ãƒŽãƒ¼ãƒ‰ã«æŽ¥ç¶šã—ã€ãã—ã¦åˆ‡æ–­ã—ã¾ã™ - - - Specify your own public address - ã‚ãªãŸè‡ªèº«ã®ãƒ‘ブリックãªã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’指定 - - - Accept command line and JSON-RPC commands - コマンドライン㨠JSON-RPC ã‚³ãƒžãƒ³ãƒ‰ã‚’è¨±å¯ - - - Run in the background as a daemon and accept commands - デーモンã¨ã—ã¦ãƒãƒƒã‚¯ã‚°ãƒ©ãƒ³ãƒ‰ã§å®Ÿè¡Œã—ã‚³ãƒžãƒ³ãƒ‰ã‚’è¨±å¯ - - - Use the test network - テストã®ãŸã‚ã®ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã‚’使用 - - - Accept connections from outside (default: 1 if no -proxy or -connect) - 外部ã‹ã‚‰ã®æŽ¥ç¶šã‚’è¨±å¯ (åˆæœŸå€¤: -proxy ã¾ãŸã¯ -connect を使用ã—ã¦ã„ãªã„å ´åˆã¯1) - - - Bind to given address and always listen on it. Use [host]:port notation for IPv6 - 指定ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã¸ãƒã‚¤ãƒ³ãƒ‰ã—ã€ãã®ä¸Šã§å¸¸ã«ãƒªã‚¹ãƒ³ã—ã¾ã™ã€‚IPv6 㯠[ホストå]:ãƒãƒ¼ãƒˆç•ªå· ã¨è¡¨è¨˜ã—ã¾ã™ - - - Delete all wallet transactions and only recover those parts of the blockchain through -rescan on startup - ウォレットã®å…¨ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã‚’削除ã—ã€ã“れらを-rescanオプションを用ã„ã‚‹ã“ã¨ã§èµ·å‹•時ã«ãƒ–ロックãƒã‚§ã‚¤ãƒ³ã®ãƒ‡ãƒ¼ã‚¿ã®ã¿ã‹ã‚‰ãƒªã‚«ãƒãƒªã—ã¾ã™ã€‚ - - - Distributed under the MIT software license, see the accompanying file COPYING or <http://www.opensource.org/licenses/mit-license.php>. - MITソフトウェアライセンスã®ã‚‚ã¨ã§é…布ã•れã¦ã„ã¾ã™ã€‚付属ã®COPYINGファイルã¾ãŸã¯<http://www.opensource.org/licenses/mit-license.php>ã‚’å‚ç…§ã—ã¦ãã ã•ã„。 - - - Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) - ウォレットã®å–引を変更ã™ã‚‹éš›ã«ã‚³ãƒžãƒ³ãƒ‰ã‚’実行 (cmd ã® %s 㯠TxID ã«ç½®æ›ã•れる) - - - Maximum total fees to use in a single wallet transaction; setting this too low may abort large transactions (default: %s) - ã²ã¨ã¤ã®ã‚¦ã‚©ãƒ¬ãƒƒãƒˆãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã§ä½¿ç”¨ã™ã‚‹åˆè¨ˆæ‰‹æ•°æ–™ã®æœ€å¤§å€¤ã€‚低ã™ãŽã‚‹å€¤ã‚’指定ã™ã‚‹ã¨å·¨å¤§ãªãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã®ä½œæˆãŒã§ããªããªã‚Šã¾ã™ (è¦å®šå€¤: %s) - - - Reduce storage requirements by pruning (deleting) old blocks. This mode disables wallet support and is incompatible with -txindex. Warning: Reverting this setting requires re-downloading the entire blockchain. (default: 0 = disable pruning blocks, >%u = target size in MiB to use for block files) - å¤ã„ブロックを剪定ã™ã‚‹ï¼ˆå‰Šé™¤ã™ã‚‹ï¼‰ã“ã¨ã§è¨˜æ†¶å®¹é‡ã®å¿…è¦é‡ã‚’削減ã™ã‚‹ã€‚ã“ã®ãƒ¢ãƒ¼ãƒ‰ã‚’有効ã«ã™ã‚‹ã¨ã‚¦ã‚©ãƒ¬ãƒƒãƒˆæ©Ÿèƒ½ã®ã‚µãƒãƒ¼ãƒˆã¯ç„¡åйã«ãªã‚Šã€-txindexã¨ã‚‚äº’æ›æ€§ãŒãªããªã‚Šã¾ã™ã€‚警告: ã“ã®è¨­å®šã®å†æœ‰åŠ¹åŒ–ã«ã¯å…¨ãƒ–ロックãƒã‚§ã‚¤ãƒ³ã®å†ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ãŒå¿…è¦ã¨ãªã‚Šã¾ã™ã€‚(è¦å®šå€¤: 0 = ブロックã®å‰ªå®šç„¡åйã€>%u = ブロックファイルã«ä½¿ç”¨ã™ã‚‹MiBå˜ä½ã®ç›®æ¨™ã‚µã‚¤ã‚º) - - - Set the number of script verification threads (%u to %d, 0 = auto, <0 = leave that many cores free, default: %d) - スクリプト検証スレッドを設定 (%uã‹ã‚‰%dã®é–“, 0 = 自動, <0 = ãŸãã•ã‚“ã®ã‚³ã‚¢ã‚’自由ã«ã—ã¦ãŠã, åˆæœŸå€¤: %d) - - - This is a pre-release test build - use at your own risk - do not use for mining or merchant applications - ã“れã¯ãƒªãƒªãƒ¼ã‚¹å‰ã®ãƒ†ã‚¹ãƒˆãƒ“ルドã§ã™ - å„自ã®è²¬ä»»ã§åˆ©ç”¨ã™ã‚‹ã“㨠- 採掘や商å–引ã«ä½¿ç”¨ã—ãªã„ã§ãã ã•ã„ - - - Unable to bind to %s on this computer. Bitcoin Core is probably already running. - ã“ã®ã‚³ãƒ³ãƒ”ュータ㮠%s ã«ãƒã‚¤ãƒ³ãƒ‰ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。ãŠãらã Bitcoin Core ã¯æ—¢ã«å®Ÿè¡Œã•れã¦ã„ã¾ã™ã€‚ - - - WARNING: abnormally high number of blocks generated, %d blocks received in the last %d hours (%d expected) - 警告:異常ã«å¤šãã®æ•°ã®ãƒ–ロックãŒç”Ÿæˆã•れã¦ã„ã¾ã™ã€‚%d ãƒ–ãƒ­ãƒƒã‚¯ãŒæœ€è¿‘ %d 時間以内ã«å—ã‘å–られã¾ã—ãŸã€‚(期待値: %d) - - - WARNING: check your network connection, %d blocks received in the last %d hours (%d expected) - 警告:ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯æŽ¥ç¶šã‚’確èªã—ã¦ãã ã•ã„。%d ãƒ–ãƒ­ãƒƒã‚¯ãŒæœ€è¿‘ %d 時間以内ã«ã«å—ã‘å–られã¾ã—ãŸã€‚(期待値: %d) - - - Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. - 警告: -paytxfee ãŒéžå¸¸ã«é«˜ã設定ã•れã¦ã„ã¾ã™! ã“れã¯å–引をé€ä¿¡ã™ã‚‹å ´åˆã«æ”¯æ‰•ã†å–引手数料ã§ã™ã€‚ - - - Warning: The network does not appear to fully agree! Some miners appear to be experiencing issues. - 警告: ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã¯å®Œå…¨ã«åŒæ„ã—ãªã„ã¿ãŸã„ã§ã™ã€‚マイナーã¯ä½•ã‹ã®å•題を経験ã—ã¦ã‚‹ã¿ãŸã„ãªã‚“ã§ã™ã€‚ - - - Warning: We do not appear to fully agree with our peers! You may need to upgrade, or other nodes may need to upgrade. - 警告: ピアーã¨å®Œå…¨ã«åŒæ„ã—ãªã„ã¿ãŸã„ã§ã™ï¼ã‚¢ãƒƒãƒ—グレードã¯å¿…è¦ã‹ã‚‚ã—れã¾ã›ã‚“ã€ãれã¨ã‚‚ä»–ã®ãƒŽãƒ¼ãƒ‰ã¯ã‚¢ãƒƒãƒ—グレードã¯å¿…è¦ã‹ã‚‚ã—れã¾ã›ã‚“。 - - - Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. - 警告: wallet.dat ã®èª­ã¿è¾¼ã¿ã‚¨ãƒ©ãƒ¼! ã™ã¹ã¦ã®ã‚­ãƒ¼ã¯æ­£ã—ã読ã¿å–れã¾ã™ãŒã€å–引データやアドレス帳ã®ã‚¨ãƒ³ãƒˆãƒªãŒå¤±ã‚れãŸã‹ã€æ­£ã—ããªã„å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ - - - 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. - 警告: wallet.dat ãŒå£Šã‚ŒãŸã®ã§ãƒ‡ãƒ¼ã‚¿ã‚’復旧ã—ã¾ã—ãŸ! オリジナル㮠wallet.dat 㯠wallet.{timestamp}.bak ã¨ã—㦠%s ã«ä¿å­˜ã•れã¾ã—ãŸ; ã‚‚ã—ã‚‚ã‚ãªãŸã®æ®‹é«˜ã‚„å–å¼•ãŒæ­£ã—ããªã„ãªã‚‰ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—ã‹ã‚‰å¾©å…ƒã—ã¦ãã ã•ã„。 - - - Whitelist peers connecting from the given netmask or IP address. Can be specified multiple times. - 与ãˆã‚‰ã‚ŒãŸãƒãƒƒãƒˆãƒžã‚¹ã‚¯ã‚„IPアドレスã‹ã‚‰æŽ¥ç¶šã‚’行ã†ã€ãƒ›ãƒ¯ã‚¤ãƒˆãƒªã‚¹ãƒˆã®ãƒ”ア。複数回指定ã§ãã¾ã™ã€‚ - - - (default: 1) - (デフォルト: 1) - - - <category> can be: - <category>ã¯ä»¥ä¸‹ã®å€¤ã‚’指定ã§ãã¾ã™ï¼š - - - Attempt to recover private keys from a corrupt wallet.dat - 壊れ㟠wallet.dat ã‹ã‚‰ç§˜å¯†éµã‚’復旧ã™ã‚‹ã“ã¨ã‚’試㙠- - - Block creation options: - ブロック作æˆã‚ªãƒ—ション: - - - Connect only to the specified node(s) - 指定ã—ãŸãƒŽãƒ¼ãƒ‰ã ã‘ã«æŽ¥ç¶š - - - Connection options: - 接続オプション: - - - Corrupted block database detected - ç ´æã—ãŸãƒ–ロック データベースãŒè¦‹ã¤ã‹ã‚Šã¾ã—㟠- - - - Debugging/Testing options: - デãƒãƒƒã‚°ï¼ãƒ†ã‚¹ãƒˆç”¨ã‚ªãƒ—ション: - - - Do not load the wallet and disable wallet RPC calls - ウォレットã¯èª­ã¿è¾¼ã¾ãšã€ã‚¦ã‚©ãƒ¬ãƒƒãƒˆRPCコールを無効化ã™ã‚‹ - - - Do you want to rebuild the block database now? - ブロック データベースを今ã™ã冿§‹ç¯‰ã—ã¾ã™ã‹? - - - Error initializing block database - ブロック データベースã®åˆæœŸåŒ–中ã«ã‚¨ãƒ©ãƒ¼ - - - Error initializing wallet database environment %s! - ウォレットã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ç’°å¢ƒ %s åˆæœŸåŒ–エラー! - - - Error loading block database - ブロック データベースã®èª­ã¿è¾¼ã¿ã‚¨ãƒ©ãƒ¼ - - - Error opening block database - ブロック データベースã®é–‹å§‹ã‚¨ãƒ©ãƒ¼ - - - Error: Disk space is low! - エラー: ディスク容é‡ä¸è¶³! - - - Failed to listen on any port. Use -listen=0 if you want this. - ãƒãƒ¼ãƒˆã®ãƒªã‚¹ãƒ³ã«å¤±æ•—ã—ã¾ã—ãŸã€‚å¿…è¦ã§ã‚れ㰠-listen=0 を使用ã—ã¦ãã ã•ã„。 - - - If <category> is not supplied, output all debugging information. - <category> ãŒä¸Žãˆã‚‰ã‚Œãªã‹ã£ãŸå ´åˆã«ã¯ã€ã™ã¹ã¦ã®ãƒ‡ãƒãƒƒã‚°æƒ…å ±ãŒå‡ºåŠ›ã•れã¾ã™ã€‚ - - - Importing... - インãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã™â€¦â€¦ - - - Incorrect or no genesis block found. Wrong datadir for network? - 䏿­£ãªãƒ–ロックã‚ã‚‹ã„ã¯ã€ç”Ÿæˆã•れã¦ã„ãªã„ブロックãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸã€‚ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã® datadir ãŒé–“é•ã£ã¦ã„ã¾ã›ã‚“ã‹? - - - Invalid -onion address: '%s' - 無効㪠-onion アドレス:'%s' - - - Not enough file descriptors available. - 使用å¯èƒ½ãªãƒ•ァイルディスクリプタãŒä¸è¶³ã—ã¦ã„ã¾ã™ã€‚ - - - Only connect to nodes in network <net> (ipv4, ipv6 or onion) - <net> (ipv4, ipv6 ã¾ãŸã¯ onion) ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯å†…ã®ãƒŽãƒ¼ãƒ‰ã ã‘ã«æŽ¥ç¶šã™ã‚‹ - - - Prune cannot be configured with a negative value. - 剪定値ã¯è² ã®å€¤ã«è¨­å®šã§ãã¾ã›ã‚“。 - - - Prune mode is incompatible with -txindex. - 剪定モードã¯-txindexã¨äº’æ›æ€§ãŒã‚りã¾ã›ã‚“。 - - - Set database cache size in megabytes (%d to %d, default: %d) - データベースã®ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã‚µã‚¤ã‚ºã‚’メガãƒã‚¤ãƒˆã§è¨­å®š (%dã‹ã‚‰%dã€‚åˆæœŸå€¤: %d) - - - Set maximum block size in bytes (default: %d) - 最大ブロックサイズをãƒã‚¤ãƒˆã§è¨­å®š (åˆæœŸå€¤: %d) - - - Specify wallet file (within data directory) - ウォレットã®ãƒ•ァイルを指定 (データ・ディレクトリã®ä¸­ã«) - - - Use UPnP to map the listening port (default: %u) - リッスンãƒãƒ¼ãƒˆã®å‰²å½“ã« UPnP を使用 (åˆæœŸå€¤: %u) - - - Verifying blocks... - ãƒ–ãƒ­ãƒƒã‚¯ã®æ¤œè¨¼ä¸­... - - - Verifying wallet... - ã‚¦ã‚©ãƒ¬ãƒƒãƒˆã®æ¤œè¨¼ä¸­... - - - Wallet %s resides outside data directory %s - 財布 %s ã¯ãƒ‡ãƒ¼ã‚¿ãƒ»ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒª%sã®å¤–ã«ã‚りã¾ã™ - - - Wallet options: - ウォレットオプション: - - - Warning: This version is obsolete; upgrade required! - 警告: ã“ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã¯ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“。アップグレードãŒå¿…è¦ã§ã™ï¼ - - - You need to rebuild the database using -reindex to change -txindex - -txindex を変更ã™ã‚‹ã«ã¯ -reindex を使用ã—ã¦ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚’冿§‹ç¯‰ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ - - - Imports blocks from external blk000??.dat file - 外部㮠blk000??.dat ファイルã‹ã‚‰ãƒ–ロックをインãƒãƒ¼ãƒˆ - - - 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 - 指定ã—ãŸã‚¢ã‚¯ã‚»ã‚¹å…ƒã‹ã‚‰ã®JSON-RPC接続を許å¯ã™ã‚‹ã€‚有効ãª<ip>ã¯ã€å˜ä¸€ã®IP (例 1.2.3.4)ã€ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯/ãƒãƒƒãƒˆãƒžã‚¹ã‚¯ (1.2.3.4/255.255.255.0)ã€ã¾ãŸã¯ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯/CIDR (1.2.3.4/24)ã§ã™ã€‚ã“ã®ã‚ªãƒ—ションã¯è¤‡æ•°å›žæŒ‡å®šã§ãã¾ã™ã€‚ - - - An error occurred while setting up the RPC address %s port %u for listening: %s - リッスンã™ã‚‹ RPC アドレス %sã€ãƒãƒ¼ãƒˆ %u ã®è¨­å®šä¸­ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸ: %s - - - Bind to given address and whitelist peers connecting to it. Use [host]:port notation for IPv6 - 指定ã•れãŸã‚¢ãƒ‰ãƒ¬ã‚¹ãŠã‚ˆã³ã€ãã“ã«æŽ¥ç¶šã‚’è¡Œã£ã¦ããŸãƒ›ãƒ¯ã‚¤ãƒˆãƒªã‚¹ãƒˆã®ãƒ”ã‚¢ã«å¯¾ã—ã¦ãƒã‚¤ãƒ³ãƒ‰ã‚’行ã„ã¾ã™ã€‚IPv6ã®å ´åˆã«ã¯ [host]:port 表記を使用ã—ã¦ãã ã•ã„ - - - Bind to given address to listen for JSON-RPC connections. Use [host]:port notation for IPv6. This option can be specified multiple times (default: bind to all interfaces) - 指定ã•れãŸã‚¢ãƒ‰ãƒ¬ã‚¹ã«å¯¾ã—㦠JSON-RPC 接続をリッスンã—ã™ã‚‹ã‚ˆã†ãƒã‚¤ãƒ³ãƒ‰ã—ã¾ã™ã€‚IPv6ã®å ´åˆã«ã¯ [host]:port 表記を使用ã—ã¦ãã ã•ã„。ã“ã®ã‚ªãƒ—ションã¯è¤‡æ•°å›žæŒ‡å®šã™ã‚‹ã“ã¨ãŒå¯èƒ½ã§ã™ (åˆæœŸå€¤: ã™ã¹ã¦ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェースã«å¯¾ã—ã¦ãƒã‚¤ãƒ³ãƒ‰ã™ã‚‹) - - - Cannot obtain a lock on data directory %s. Bitcoin Core is probably already running. - データ ディレクトリ %s ã®ãƒ­ãƒƒã‚¯ã‚’å–å¾—ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。ãŠãらã Bitcoin Core ã¯å®Ÿè¡Œä¸­ã§ã™ã€‚ - - - Create new files with system default permissions, instead of umask 077 (only effective with disabled wallet functionality) - umask 077 ã§ã¯ãªãã€ã‚·ã‚¹ãƒ†ãƒ ã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆãƒ‘ãƒ¼ãƒŸãƒƒã‚·ãƒ§ãƒ³ã§æ–°è¦ãƒ•ァイルを作æˆã™ã‚‹ (ウォレット機能ãŒç„¡åŠ¹åŒ–ã•れã¦ã„ãŸå ´åˆã«ã®ã¿æœ‰åй) - - - Discover own IP addresses (default: 1 when listening and no -externalip or -proxy) - 自分ã®IPアドレスを解決ã™ã‚‹ (è¦å®šå€¤: リッスンをã—ã¦ãŠã‚Šã€-externalipã¾ãŸã¯-proxyã‚ªãƒ—ã‚·ãƒ§ãƒ³ãŒæŒ‡å®šã•れã¦ã„ãªã„å ´åˆã¯1) - - - Error: Listening for incoming connections failed (listen returned error %s) - エラー: 内å‘ãã®æŽ¥ç¶šã‚’ãƒªãƒƒã‚¹ãƒ³ã™ã‚‹ã®ã«å¤±æ•—ã—ã¾ã—㟠(エラー %s ãŒè¿”å´ã•れã¾ã—ãŸ) - - - Error: Unsupported argument -socks found. Setting SOCKS version isn't possible anymore, only SOCKS5 proxies are supported. - エラー: サãƒãƒ¼ãƒˆã•れã¦ã„ãªã„引数 -socks ãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸã€‚SOCKSãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®è¨­å®šã¯ã§ããªã„よã†ã«ãªã‚Šã¾ã—ãŸã€‚SOCKS5プロキシã®ã¿ãŒã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã™ã€‚ - - - Execute command when a relevant alert is received or we see a really long fork (%s in cmd is replaced by message) - 関連ã®ã‚¢ãƒ©ãƒ¼ãƒˆã‚’もらã£ã¦ã‚‚ã™ã”ãé•·ã„ã®ãƒ•ォークを見ã¦ã‚‚コマンドを実行 (コマンドã®ä¸­ã«ã‚ã‚‹ã®%sã¯ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‹ã‚‰ç½®ãæ›ãˆã•ã›ã‚‹) - - - Fees (in BTC/Kb) smaller than this are considered zero fee for relaying (default: %s) - 中継ã®éš›ã€ã“ã®å€¤æœªæº€ã®æ‰‹æ•°æ–™ (BTC/Kbå˜ä½) ã¯ã‚¼ãƒ­ã§ã‚ã‚‹ã¨ã¿ãªã™ (デフォルト: %s) - - - If paytxfee is not set, include enough fee so transactions begin confirmation on average within n blocks (default: %u) - paytxfee ãŒè¨­å®šã•れã¦ã„ãªã‹ã£ãŸå ´åˆã€å¹³å‡ã—㦠n ブロック以内ã«ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ãŒæ¤œè¨¼ã•れ始ã‚ã‚‹ã®ã«ååˆ†ãªæ‰‹æ•°æ–™ã‚’å«ã‚ã‚‹ (åˆæœŸå€¤: %u) - - - Invalid amount for -maxtxfee=<amount>: '%s' (must be at least the minrelay fee of %s to prevent stuck transactions) - -maxtxfee=<amount> ã®æ•°é‡ã®æŒ‡å®šãŒä¸æ­£ã§ã™: '%s' (トランザクションãŒè©°ã¾ã£ã¦ã—ã¾ã†ã®ã‚’防ããŸã‚ã€å°‘ãªãã¨ã‚‚ %s ã®æœ€å°ä¸­ç¶™æ‰‹æ•°æ–™ã‚’指定ã—ãªã‘れã°ã„ã‘ã¾ã›ã‚“) - - - Maximum size of data in data carrier transactions we relay and mine (default: %u) - 中継ãŠã‚ˆã³æŽ¡æŽ˜ã‚’行ã†éš›ã®ã€ãƒ‡ãƒ¼ã‚¿é‹é€ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã®ä¸­ã®ãƒ‡ãƒ¼ã‚¿ã®æœ€å¤§ã‚µã‚¤ã‚º (åˆæœŸå€¤: %u) - - - Prune configured below the minimum of %d MB. Please use a higher number. - å‰ªå®šãŒæœ€å°å€¤ã® %d MB以下ã«è¨­å®šã•れã¦ã„ã¾ã™ã€‚ã‚‚ã£ã¨å¤§ããªå€¤ã‚’使用ã—ã¦ãã ã•ã„。 - - - Query for peer addresses via DNS lookup, if low on addresses (default: 1 unless -connect) - ä¿æœ‰ã™ã‚‹ãƒ”アアドレスãŒå°‘ãªã„å ´åˆã€DNS ルックアップã«ã‚ˆã‚Šãƒ”アアドレスをå•ã„åˆã‚ã›ã‚‹ (-connect を使ã£ã¦ã„ãªã„å ´åˆã®åˆæœŸå€¤: 1) - - - Randomize credentials for every proxy connection. This enables Tor stream isolation (default: %u) - èªè¨¼æƒ…報をプロキシー接続ã”ã¨ã«ãƒ©ãƒ³ãƒ€ãƒ åŒ–ã™ã‚‹ã€‚ã“れã«ã‚ˆã‚ŠTorストリーム分離をã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ (è¦å®šå€¤: %u) - - - Set maximum size of high-priority/low-fee transactions in bytes (default: %d) - 最優先/æœ€ä½Žæ‰‹æ•°æ–™ã®æœ€å¤§ã‚µã‚¤ã‚ºã‚’ãƒã‚¤ãƒˆã§æŒ‡å®š (åˆæœŸå€¤: %d) - - - Set the number of threads for coin generation if enabled (-1 = all cores, default: %d) - コイン生æˆãŒæœ‰åйã«ãªã£ã¦ã„ãŸå ´åˆã®åˆ©ç”¨ã‚¹ãƒ¬ãƒƒãƒ‰æ•°ã‚’設定ã™ã‚‹ (-1 = ã™ã¹ã¦ã®ã‚³ã‚¢, åˆæœŸå€¤: %d) - - - The transaction amount is too small to send after the fee has been deducted - 手数料差引後ã®ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã®é‡‘é¡ãŒå°ã•ã™ãŽã‚‹ãŸã‚ã€é€é‡‘ã§ãã¾ã›ã‚“。 - - - 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. - ã“ã®è£½å“ã¯OpenSSLプロジェクトã«ã‚ˆã‚Šé–‹ç™ºã•れãŸã‚½ãƒ•トウェアをOpenSSLツールキットã¨ã—ã¦åˆ©ç”¨ã—ã¦ã„ã¾ã™ <https://www.openssl.org/>。ã¾ãŸã€Eric Youngæ°ã«ã‚ˆã‚Šé–‹ç™ºã•ã‚ŒãŸæš—å·ã‚½ãƒ•トウェアã€Thomas Bernardæ°ã«ã‚ˆã‚Šæ›¸ã‹ã‚ŒãŸUPnPソフトウェアを用ã„ã¦ã„ã¾ã™ã€‚ - - - 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 - - bitcoindを用ã„ã‚‹å ´åˆã‚„ã€-server オプションをbitcoin-qtã«æŒ‡å®šã™ã‚‹å ´åˆã«ã¯ã€è¨­å®šãƒ•ァイルã«rpcpasswordを設定ã—ãªã‘れã°ãªã‚Šã¾ã›ã‚“: -%s -以下ã®ãƒ©ãƒ³ãƒ€ãƒ ãªãƒ‘スワードを用ã„ã‚‹ã“ã¨ãŒæŽ¨å¥¨ã•れã¾ã™: -rpcuser=bitcoinrpc -rpcpassword=%s -(ã“ã®ãƒ‘スワードを暗記ã™ã‚‹å¿…è¦ã¯ã‚りã¾ã›ã‚“) -ユーザåã¨ãƒ‘スワードã¯ä¸€è‡´ã—ã¦ã¯ã„ã‘ã¾ã›ã‚“。 -ファイルãŒå­˜åœ¨ã—ãªã„å ´åˆã«ã¯ã€æ‰€æœ‰è€…ã®ã¿èª­ã¿è¾¼ã¿å¯èƒ½ãªãƒ•ァイルパーミッションã§ãƒ•ァイルを作æˆã—ã¦ãã ã•ã„。 -ã¾ãŸalertnotifyを設定ã—ã€å•題発生時ã«é€šçŸ¥ãŒè¡Œãよã†ã«ã™ã‚‹ã“ã¨ã‚’ãŠã™ã™ã‚ã—ã¾ã™; -例: alertnotify=echo %%s | mail -s "Bitcoinアラート" admin@foo.com - - - - Warning: -maxtxfee is set very high! Fees this large could be paid on a single transaction. - 警告: -maxtxfee ãŒéžå¸¸ã«é«˜ã設定ã•れã¦ã„ã¾ã™ï¼ã²ã¨ã¤ã®ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã§ã“ã®é‡ã®æ‰‹æ•°æ–™ãŒæ”¯æ‰•ã‚れã¦ã—ã¾ã†ã“ã¨ãŒã‚りã¾ã™ã€‚ - - - Warning: Please check that your computer's date and time are correct! If your clock is wrong Bitcoin Core will not work properly. - 警告: ã‚ãªãŸã®PCã®æ—¥ä»˜ã¨æ™‚åˆ»ãŒæ­£ã—ã„ã“ã¨ã‚’確èªã—ã¦ä¸‹ã•ã„ï¼ ã‚‚ã—ã‚ãªãŸã®æ™‚è¨ˆãŒæ­£ã—ããªã‘れã°Bitcoin CoreãŒæ­£ç¢ºã«å‹•作ã—ã¾ã›ã‚“。 - - - 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 - ホワイトリストã®ãƒ”ã‚¢ã¯DoSã«ã‚ˆã‚‹ã‚¢ã‚¯ã‚»ã‚¹ç¦æ­¢å‡¦ç†ãŒç„¡åŠ¹åŒ–ã•れã€ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã¯ä¾‹ãˆmempoolå†…ã«æ—¢ã«å­˜åœ¨ã—ã¦ã„ãŸã¨ã—ã¦ã‚‚常ã«ãƒªãƒ¬ãƒ¼ã•れã¾ã™ã€‚ã“れã¯ä¾‹ãˆã°ã‚²ãƒ¼ãƒˆã‚¦ã‚§ã‚¤ã«å¯¾ã—ã¦æœ‰ç”¨ã§ã™ - - - You need to rebuild the database using -reindex to go back to unpruned mode. This will redownload the entire blockchain - éžå‰ªå®šãƒ¢ãƒ¼ãƒ‰ã«æˆ»ã‚‹ãŸã‚ã«ã¯-reindexオプションを使用ã—ã¦ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚’冿§‹ç¯‰ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ã“れã«ã‚ˆã‚Šãƒ–ロックãƒã‚§ã‚¤ãƒ³å…¨ä½“ã®å†ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ãŒè¡Œã‚れã¾ã™ã€‚ - - - (default: %u) - (è¦å®šå€¤: %u) - - - Accept public REST requests (default: %u) - 公開 REST リクエストを許å¯ã™ã‚‹ (åˆæœŸå€¤: %u) - - - Activating best chain... - 最優良ã®ãƒã‚§ã‚¤ãƒ³ã‚’有効化ã—ã¦ã„ã¾ã™... - - - Can't run with a wallet in prune mode. - 剪定モードã§ã¯ã‚¦ã‚©ãƒ¬ãƒƒãƒˆæ©Ÿèƒ½ä»˜ãã§èµ·å‹•ã§ãã¾ã›ã‚“。 - - - Cannot resolve -whitebind address: '%s' - -whitebind アドレス '%s' を解決ã§ãã¾ã›ã‚“ - - - Choose data directory on startup (default: 0) - 起動時ã«ãƒ‡ãƒ¼ã‚¿ ディレクトリをé¸ã¶ (åˆæœŸå€¤: 0) - - - Connect through SOCKS5 proxy - SOCKS5 ãƒ—ãƒ­ã‚­ã‚·çµŒç”±ã§æŽ¥ç¶šã™ã‚‹ - - - Copyright (C) 2009-%i The Bitcoin Core Developers - Copyright (C) 2009-%i Bitcoin Core 開発者 - - - Could not parse -rpcbind value %s as network address - -rpcbind ã®å€¤ %s ã‚’ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã‚¢ãƒ‰ãƒ¬ã‚¹ã¨ã—ã¦è§£é‡ˆã§ãã¾ã›ã‚“ã§ã—㟠- - - Error loading wallet.dat: Wallet requires newer version of Bitcoin Core - wallet.dat ã®èª­ã¿è¾¼ã¿ã«å¤±æ•—ã—ã¾ã—ãŸ: ウォレットã®èª­ã¿è¾¼ã¿ã«ã¯ã‚ˆã‚Šæ–°ã—ã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã® Bitcoin Core ãŒå¿…è¦ã§ã™ - - - Error reading from database, shutting down. - データベースã®èª­ã¿è¾¼ã¿ã‚¨ãƒ©ãƒ¼ã€‚シャットダウンã—ã¾ã™ã€‚ - - - Error: A fatal internal error occurred, see debug.log for details - エラー:致命的ãªå†…部エラーãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚詳細ã¯debug.logã‚’å‚ç…§ã—ã¦ãã ã•ã„ - - - Error: Unsupported argument -tor found, use -onion. - エラー: サãƒãƒ¼ãƒˆã•れã¦ã„ãªã„引数 -tor ãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸã€‚-onion を使用ã—ã¦ãã ã•ã„。 - - - Fee (in BTC/kB) to add to transactions you send (default: %s) - é€ä¿¡ã™ã‚‹ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã«ä»˜åŠ ã™ã‚‹æ‰‹æ•°æ–™ (BTC/kBå˜ä½) (åˆæœŸå€¤: %s) - - - Information - 情報 - - - Initialization sanity check failed. Bitcoin Core is shutting down. - åˆæœŸåŒ–時ã®å¥å…¨æ€§ãƒã‚§ãƒƒã‚¯ã«å¤±æ•—ã—ã¾ã—ãŸã€‚Bitcoin Coreを終了ã—ã¾ã™ã€‚ - - - Invalid amount for -maxtxfee=<amount>: '%s' - -maxtxfee=<amount> ã«å¯¾ã™ã‚‹ç„¡åŠ¹ãªæ•°é‡ã§ã™: '%s' - - - Invalid amount for -minrelaytxfee=<amount>: '%s' - 䏿­£ãªé¡ -minrelaytxfee=<amount>: '%s' - - - Invalid amount for -mintxfee=<amount>: '%s' - 䏿­£ãªé¡ -minrelaytxfee=<amount>: '%s' - - - Invalid amount for -paytxfee=<amount>: '%s' (must be at least %s) - -paytxfee=<amount> ã«å¯¾ã™ã‚‹ç„¡åŠ¹ãªæ•°é‡ã§ã™: '%s' (å°‘ãªãã¨ã‚‚ %s ã§ãªã‘れã°ã„ã‘ã¾ã›ã‚“) - - - Invalid netmask specified in -whitelist: '%s' - -whitelist ã«å¯¾ã™ã‚‹ç„¡åйãªãƒãƒƒãƒˆãƒžã‚¹ã‚¯ã§ã™: '%s' - - - Keep at most <n> unconnectable transactions in memory (default: %u) - 最大㧠<n> 個ã®å­¤ç«‹ã—ãŸãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã‚’メモリã®ä¸­ã«ä¿æŒã™ã‚‹ (åˆæœŸå€¤: %u) - - - Need to specify a port with -whitebind: '%s' - -whitebind を用ã„ã¦ãƒãƒ¼ãƒˆã‚’指定ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™: '%s' - - - Node relay options: - ノード中継オプション: - - - Pruning blockstore... - ブロックデータを剪定ã—ã¦ã„ã¾ã™â€¦â€¦ - - - RPC SSL options: (see the Bitcoin Wiki for SSL setup instructions) - RPC SSL オプション: (SSLã®ã‚»ãƒƒãƒˆã‚¢ãƒƒãƒ—手順ã¯ãƒ“ットコインWikiã‚’å‚ç…§ã—ã¦ãã ã•ã„) - - - RPC server options: - RPCサーãƒã®ã‚ªãƒ—ション: - - - RPC support for HTTP persistent connections (default: %d) - RPCã«ãŠã‘ã‚‹HTTPã®æŒç¶šçš„æŽ¥ç¶šã®ã‚µãƒãƒ¼ãƒˆ (åˆæœŸå€¤: %d) - - - Rebuild block chain index from current blk000??.dat files on startup - 起動時ã«ç¾åœ¨ã® blk000??.dat ファイルã‹ã‚‰ãƒ–ロック ãƒã‚§ãƒ¼ãƒ³ã®ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã‚’冿§‹ç¯‰ - - - Receive and display P2P network alerts (default: %u) - P2Pãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã®ã‚¢ãƒ©ãƒ¼ãƒˆã®å—ã‘å–りã¨è¡¨ç¤ºã‚’行ㆠ(デフォルト: %u) - - - Send trace/debug info to console instead of debug.log file - トレース/デãƒãƒƒã‚°æƒ…報を debug.log ファイルã®ä»£ã‚りã«ã‚³ãƒ³ã‚½ãƒ¼ãƒ«ã¸é€ã‚‹ - - - Send transactions as zero-fee transactions if possible (default: %u) - å¯èƒ½ãªå ´åˆã«ã¯æ‰‹æ•°æ–™ã‚¼ãƒ­ã®ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã¨ã—ã¦ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã‚’é€ä¿¡ã™ã‚‹ (åˆæœŸå€¤: %u) - - - Set SSL root certificates for payment request (default: -system-) - 支払ã„リクエスト用ã«SSLルート証明書を設定ã™ã‚‹ï¼ˆãƒ‡ãƒ•ォルト:-system-) - - - Set language, for example "de_DE" (default: system locale) - 言語設定 例: "de_DE" (åˆæœŸå€¤: システムã®è¨€èªž) - - - Show all debugging options (usage: --help -help-debug) - ã™ã¹ã¦ã®ãƒ‡ãƒãƒƒã‚°ã‚ªãƒ—ションを表示ã™ã‚‹ (ä½¿ã„æ–¹: --help -help-debug) - - - Show splash screen on startup (default: 1) - 起動時ã«ã‚¹ãƒ—ラッシュ画é¢ã‚’表示ã™ã‚‹ (åˆæœŸå€¤: 1) - - - Shrink debug.log file on client startup (default: 1 when no -debug) - クライアント起動時㫠debug.log ãƒ•ã‚¡ã‚¤ãƒ«ã‚’ç¸®å° (åˆæœŸå€¤: -debug オプションを指定ã—ãªã„å ´åˆã¯1) - - - Signing transaction failed - å–引ã®ç½²åã«å¤±æ•—ã—ã¾ã—㟠- - - Start minimized - 最å°åŒ–ã•れãŸçŠ¶æ…‹ã§èµ·å‹•ã™ã‚‹ - - - The transaction amount is too small to pay the fee - トランザクションã®é‡‘é¡ãŒå°ã•ã™ãŽã¦æ‰‹æ•°æ–™ã‚’支払ãˆã¾ã›ã‚“ - - - This is experimental software. - ã“れã¯å®Ÿé¨“çš„ãªã‚½ãƒ•トウェアã§ã™ã€‚ - - - Transaction amount too small - å–引ã®é¡ãŒå°ã•éŽãŽã¾ã™ - - - Transaction amounts must be positive - å–引ã®é¡ã¯0より大ããã—ã¦ãã ã•ã„ - - - Transaction too large for fee policy - 手数料ãƒãƒªã‚·ãƒ¼ã«å¯¾ã—ã¦ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ãŒå¤§ãã™ãŽã¾ã™ - - - Transaction too large - å–引ãŒå¤§ãéŽãŽã¾ã™ - - - UI Options: - UIオプション: - - - Unable to bind to %s on this computer (bind returned error %s) - ã“ã®ã‚³ãƒ³ãƒ”ュータ㮠%s ã«ãƒã‚¤ãƒ³ãƒ‰ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ (ãƒã‚¤ãƒ³ãƒ‰ãŒè¿”ã—ãŸã‚¨ãƒ©ãƒ¼ã¯ %s) - - - Use UPnP to map the listening port (default: 1 when listening) - リスン ãƒãƒ¼ãƒˆã®å‰²å½“ã« UPnP を使用 (åˆæœŸå€¤: リスン中ã¯1) - - - Username for JSON-RPC connections - JSON-RPC 接続ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼å - - - Wallet needed to be rewritten: restart Bitcoin Core to complete - ã‚¦ã‚©ãƒ¬ãƒƒãƒˆãŒæ›¸ãç›´ã•れる必è¦ãŒã‚りã¾ã—ãŸ: 完了ã™ã‚‹ãŸã‚ã« Bitcoin Core ã‚’å†èµ·å‹•ã—ã¾ã™ - - - Warning - 警告 - - - Warning: Unsupported argument -benchmark ignored, use -debug=bench. - 警告: サãƒãƒ¼ãƒˆã•れã¦ã„ãªã„引数 -benchmark ã¯ç„¡è¦–ã•れã¾ã—ãŸã€‚-debug=bench を使用ã—ã¦ãã ã•ã„。 - - - Warning: Unsupported argument -debugnet ignored, use -debug=net. - 警告: サãƒãƒ¼ãƒˆã•れã¦ã„ãªã„引数 -debugnet ã¯ç„¡è¦–ã•れã¾ã—ãŸã€‚-debug=net を使用ã—ã¦ãã ã•ã„。 - - - Zapping all transactions from wallet... - ウォレットã‹ã‚‰ã™ã¹ã¦ã®ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã‚’消去ã—ã¦ã„ã¾ã™... - - - on startup - 起動時 - - - wallet.dat corrupt, salvage failed - wallet.dat ãŒå£Šã‚Œã€å¾©æ—§ã«å¤±æ•—ã—ã¾ã—㟠- - - Password for JSON-RPC connections - JSON-RPC 接続ã®ãƒ‘スワード - - - Execute command when the best block changes (%s in cmd is replaced by block hash) - 最良ã®ãƒ–ロックã«å¤‰æ›´ã™ã‚‹éš›ã«ã‚³ãƒžãƒ³ãƒ‰ã‚’実行 (cmd ã® %s ã¯ãƒ–ロック ãƒãƒƒã‚·ãƒ¥ã«ç½®æ›ã•れる) - - - Upgrade wallet to latest format - ウォレットを最新ã®ãƒ•ォーマットã«ã‚¢ãƒƒãƒ—グレード - - - Rescan the block chain for missing wallet transactions - 失ã£ãŸã‚¦ã‚©ãƒ¬ãƒƒãƒˆã®å–引ã®ãƒ–ロック ãƒã‚§ãƒ¼ãƒ³ã‚’å†ã‚¹ã‚­ãƒ£ãƒ³ - - - Use OpenSSL (https) for JSON-RPC connections - JSON-RPC 接続㫠OpenSSL (https) を使用 - - - This help message - ã“ã®ãƒ˜ãƒ«ãƒ— メッセージ - - - Allow DNS lookups for -addnode, -seednode and -connect - -addnode, -seednode 㨠-connect ã§ DNS ルックアップを許å¯ã™ã‚‹ - - - Loading addresses... - アドレスを読ã¿è¾¼ã‚“ã§ã„ã¾ã™... - - - Error loading wallet.dat: Wallet corrupted - wallet.dat 読ã¿è¾¼ã¿ã‚¨ãƒ©ãƒ¼: ウォレットãŒå£Šã‚Œã¾ã—㟠- - - (1 = keep tx meta data e.g. account owner and payment request information, 2 = drop tx meta data) - (1 = トランザクションã®ãƒ¡ã‚¿ãƒ‡ãƒ¼ã‚¿ã€ä¾‹ãˆã°ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã®æ‰€æœ‰è€…や支払リクエストã®å†…å®¹ã‚’ä¿æŒã™ã‚‹, 2 = トランザクションã®ãƒ¡ã‚¿ãƒ‡ãƒ¼ã‚¿ã‚’破棄ã™ã‚‹) - - - How thorough the block verification of -checkblocks is (0-4, default: %u) - -checkblocks ã®ãƒ–ãƒ­ãƒƒã‚¯ã®æ¤œè¨¼ãƒ¬ãƒ™ãƒ« (0-4, åˆæœŸå€¤: %u) - - - Maintain a full transaction index, used by the getrawtransaction rpc call (default: %u) - getrawtransaction rpc 呼ã³å‡ºã—時ã«ç”¨ã„ã‚‹ã€å®Œå…¨ãªãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã‚’ä¿æŒã™ã‚‹ (åˆæœŸå€¤: %u) - - - Number of seconds to keep misbehaving peers from reconnecting (default: %u) - 䏿­£ãªãƒ”ã‚¢ã‚’å†æŽ¥ç¶šã™ã‚‹ã¾ã§ã®ç§’æ•° (åˆæœŸå€¤: %u) - - - Output debugging information (default: %u, supplying <category> is optional) - デãƒãƒƒã‚°æƒ…報を出力ã™ã‚‹ (åˆæœŸå€¤: %u, <category> ã®æŒ‡å®šã¯ä»»æ„ã§ã™) - - - Use separate SOCKS5 proxy to reach peers via Tor hidden services (default: %s) - Tor 秘匿サービスを通ã—ã€åˆ¥ã€…ã® SOCKS5 プロキシを用ã„ã‚‹ã“ã¨ã§ãƒ”ã‚¢ã«åˆ°é”ã™ã‚‹ (åˆæœŸå€¤: %s) - - - (default: %s) - (デフォルト: %s) - - - Acceptable ciphers (default: %s) - å—付å¯èƒ½ãªæš—å·åŒ–æ–¹å¼ (åˆæœŸå€¤: %s) - - - Always query for peer addresses via DNS lookup (default: %u) - DNS ルックアップを通ã—ã¦ãƒ”アアドレスを常ã«å•ã„åˆã‚ã›ã‚‹ (åˆæœŸå€¤: %u) - - - Error loading wallet.dat - wallet.dat 読ã¿è¾¼ã¿ã‚¨ãƒ©ãƒ¼ - - - Generate coins (default: %u) - ã‚³ã‚¤ãƒ³ã‚’ç”Ÿæˆ (åˆæœŸå€¤: %u) - - - How many blocks to check at startup (default: %u, 0 = all) - 起動時ã«ç‚¹æ¤œã™ã‚‹ãƒ–ロック数 (åˆæœŸå€¤: %u, 0=ã™ã¹ã¦) - - - Include IP addresses in debug output (default: %u) - デãƒãƒƒã‚°å‡ºåŠ›ã«IPアドレスをå«ã‚ã‚‹ (åˆæœŸå€¤: %u) - - - Invalid -proxy address: '%s' - 無効㪠-proxy アドレス: '%s' - - - Listen for JSON-RPC connections on <port> (default: %u or testnet: %u) - <port> ã§ JSON-RPC 接続をリスン (åˆæœŸå€¤: %uã€testnet 㯠%u) - - - Listen for connections on <port> (default: %u or testnet: %u) - 接続ã®ãƒªãƒƒã‚¹ãƒ³ã‚’ <port> ã§è¡Œã† (åˆæœŸå€¤: %uã€testnet: %u) - - - Maintain at most <n> connections to peers (default: %u) - ãƒ”ã‚¢ã®æŽ¥ç¶šæ•°ã‚’æœ€å¤§ã§ã‚‚ <n> 個ã«ç¶­æŒã™ã‚‹ (åˆæœŸå€¤: %u) - - - Make the wallet broadcast transactions - ウォレットã®ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã‚’ブロードキャストã™ã‚‹ - - - Maximum per-connection receive buffer, <n>*1000 bytes (default: %u) - æŽ¥ç¶šæ¯Žã®æœ€å¤§å—ä¿¡ãƒãƒƒãƒ•ã‚¡ <n>*1000 ãƒã‚¤ãƒˆ (åˆæœŸå€¤: %u) - - - Maximum per-connection send buffer, <n>*1000 bytes (default: %u) - æŽ¥ç¶šæ¯Žã®æœ€å¤§é€ä¿¡ãƒãƒƒãƒ•ã‚¡ <n>*1000 ãƒã‚¤ãƒˆ (åˆæœŸå€¤: %u) - - - Prepend debug output with timestamp (default: %u) - デãƒãƒƒã‚°å‡ºåŠ›ã«ã‚¿ã‚¤ãƒ ã‚¹ã‚¿ãƒ³ãƒ—を付ã‘ã‚‹ (åˆæœŸå€¤: %u) - - - Relay and mine data carrier transactions (default: %u) - データé‹é€ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã®ãƒªãƒ¬ãƒ¼ãŠã‚ˆã³æŽ¡æŽ˜ã‚’行ㆠ(åˆæœŸå€¤: %u) - - - Relay non-P2SH multisig (default: %u) - P2SHã§ãªã„マルãƒã‚·ã‚°ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã‚’リレーã™ã‚‹ (åˆæœŸå€¤: %u) - - - Server certificate file (default: %s) - サーãƒè¨¼æ˜Žæ›¸ãƒ•ァイル (åˆæœŸå€¤: %s) - - - Server private key (default: %s) - サーãƒã®ç§˜å¯†éµ (åˆæœŸå€¤: %s) - - - Set key pool size to <n> (default: %u) - key pool ã®ã‚µã‚¤ã‚ºã‚’ <n> (åˆæœŸå€¤: %u) ã«ã‚»ãƒƒãƒˆ - - - Set minimum block size in bytes (default: %u) - 最å°ãƒ–ロックサイズをãƒã‚¤ãƒˆã§è¨­å®š (åˆæœŸå€¤: %u) - - - Set the number of threads to service RPC calls (default: %d) - RPC サービスã®ã‚¹ãƒ¬ãƒƒãƒ‰æ•°ã‚’設定 (åˆæœŸå€¤: %d) - - - Specify configuration file (default: %s) - è¨­å®šãƒ•ã‚¡ã‚¤ãƒ«ã®æŒ‡å®š (åˆæœŸå€¤: %s) - - - Specify connection timeout in milliseconds (minimum: 1, default: %d) - 接続ã®ã‚¿ã‚¤ãƒ ã‚¢ã‚¦ãƒˆã‚’ãƒŸãƒªã‚»ã‚³ãƒ³ãƒ‰ã§æŒ‡å®š (最å°å€¤: 1, åˆæœŸå€¤: %d) - - - Specify pid file (default: %s) - pid ãƒ•ã‚¡ã‚¤ãƒ«ã®æŒ‡å®š (åˆæœŸå€¤: %s) - - - Spend unconfirmed change when sending transactions (default: %u) - トランザクションé€ä¿¡æ™‚ã«æœªæ¤œè¨¼ã®ãŠã¤ã‚Šã‚’使用ã™ã‚‹ (デフォルト: %u) - - - Threshold for disconnecting misbehaving peers (default: %u) - 䏿­£ãªãƒ”アを切断ã™ã‚‹ãŸã‚ã®ã—ãã„値 (åˆæœŸå€¤: %u) - - - Unknown network specified in -onlynet: '%s' - -onlynet ã§æŒ‡å®šã•れ㟠'%s' ã¯æœªçŸ¥ã®ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã§ã™ - - - Cannot resolve -bind address: '%s' - -bind ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ '%s' を解決ã§ãã¾ã›ã‚“ - - - Cannot resolve -externalip address: '%s' - -externalip ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ '%s' を解決ã§ãã¾ã›ã‚“ - - - Invalid amount for -paytxfee=<amount>: '%s' - -paytxfee=<amount> ã®é¡ '%s' ãŒç„¡åйã§ã™ - - - Insufficient funds - 残高ä¸è¶³ - - - Loading block index... - ブロック インデックスを読ã¿è¾¼ã‚“ã§ã„ã¾ã™... - - - Add a node to connect to and attempt to keep the connection open - 接続ã™ã‚‹ãƒŽãƒ¼ãƒ‰ã‚’è¿½åŠ ã—æŽ¥ç¶šã‚’æŒç¶šã™ã‚‹ã‚ˆã†ã«è©¦ã—ã¾ã™ - - - Loading wallet... - ウォレットを読ã¿è¾¼ã‚“ã§ã„ã¾ã™... - - - Cannot downgrade wallet - ウォレットã®ãƒ€ã‚¦ãƒ³ã‚°ãƒ¬ãƒ¼ãƒ‰ã¯ã§ãã¾ã›ã‚“ - - - Cannot write default address - åˆæœŸå€¤ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’書ã込むã“ã¨ãŒã§ãã¾ã›ã‚“ - - - Rescanning... - å†ã‚¹ã‚­ãƒ£ãƒ³ä¸­... - - - Done loading - 読ã¿è¾¼ã¿å®Œäº† - - - Error - エラー - - - \ No newline at end of file diff --git a/src/qt/locale/bitcoin_ka.ts b/src/qt/locale/bitcoin_ka.ts deleted file mode 100644 index 7a0c382a8..000000000 --- a/src/qt/locale/bitcoin_ka.ts +++ /dev/null @@ -1,2518 +0,0 @@ - - - AddressBookPage - - Create a new address - áƒáƒ®áƒáƒšáƒ˜ მისáƒáƒ›áƒáƒ áƒ—ის შექმნრ- - - &New - შექმ&ნრ- - - Copy the currently selected address to the system clipboard - მáƒáƒœáƒ˜áƒ¨áƒœáƒ£áƒšáƒ˜ მისáƒáƒ›áƒáƒ áƒ—ის კáƒáƒžáƒ˜áƒ áƒ”ბრსისტემურ კლიპბáƒáƒ áƒ“ში - - - &Copy - &კáƒáƒžáƒ˜áƒ áƒ”ბრ- - - C&lose - &დáƒáƒ®áƒ£áƒ áƒ•რ- - - &Copy Address - &მისáƒáƒ›áƒáƒ áƒ—ის კáƒáƒžáƒ˜áƒ áƒ”ბრ- - - Delete the currently selected address from the list - მáƒáƒœáƒ˜áƒ¨áƒœáƒ£áƒšáƒ˜ მისáƒáƒ›áƒáƒ áƒ—ის წáƒáƒ¨áƒšáƒ სიიდáƒáƒœ - - - Export the data in the current tab to a file - áƒáƒ› ბáƒáƒ áƒáƒ—იდáƒáƒœ მáƒáƒœáƒáƒªáƒ”მების ექსპáƒáƒ áƒ¢áƒ˜ ფáƒáƒ˜áƒšáƒ¨áƒ˜ - - - &Export - &ექსპáƒáƒ áƒ¢áƒ˜ - - - &Delete - &წáƒáƒ¨áƒšáƒ - - - Choose the address to send coins to - áƒáƒ˜áƒ áƒ©áƒ˜áƒ”თ მáƒáƒœáƒ”ტების გáƒáƒ’ზáƒáƒ•ნის მისáƒáƒ›áƒáƒ áƒ—ი - - - Choose the address to receive coins with - áƒáƒ˜áƒ áƒ©áƒ˜áƒ”თ მáƒáƒœáƒ”ტების მიღების მისáƒáƒ›áƒáƒ áƒ—ი - - - C&hoose - &áƒáƒ áƒ©áƒ”ვრ- - - Sending addresses - გáƒáƒ’ზáƒáƒ•ნის მისáƒáƒ›áƒáƒ áƒ—ი - - - Receiving addresses - მიღების მისáƒáƒ›áƒáƒ áƒ—ი - - - These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins. - ეს áƒáƒ áƒ˜áƒ¡ თქვენი Bitcoin-მისáƒáƒ›áƒáƒ áƒ—ები გáƒáƒ“áƒáƒ®áƒ“ების შესáƒáƒ¡áƒ áƒ£áƒšáƒ”ბლáƒáƒ“. მáƒáƒœáƒ”ტების გáƒáƒ’ზáƒáƒ•ნáƒáƒ›áƒ“ე ყáƒáƒ•ელთვის შეáƒáƒ›áƒáƒ¬áƒ›áƒ”თ თáƒáƒœáƒ®áƒ დრმიმღების მისáƒáƒ›áƒáƒ áƒ—ი. - - - These are your Bitcoin addresses for receiving payments. It is recommended to use a new receiving address for each transaction. - ეს áƒáƒ áƒ˜áƒ¡ თქვენი Bitcoin-მისáƒáƒ›áƒáƒ áƒ—ები გáƒáƒ“áƒáƒ®áƒ“ების მისáƒáƒ¦áƒ”ბáƒáƒ“. რეკáƒáƒ›áƒ”ნდებულირყáƒáƒ•ელი ტრáƒáƒœáƒ¡áƒáƒ¥áƒªáƒ˜áƒ˜áƒ¡áƒáƒ—ვის áƒáƒ®áƒáƒšáƒ˜ მიღების მისáƒáƒ›áƒáƒ áƒ—ის გáƒáƒ›áƒáƒ§áƒ”ნებáƒ. - - - Copy &Label - ნიშნუ&ლის კáƒáƒžáƒ˜áƒ áƒ”ბრ- - - &Edit - რ&ედáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბრ- - - Export Address List - მისáƒáƒ›áƒáƒ áƒ—ების სიის ექსპáƒáƒ áƒ¢áƒ˜ - - - Comma separated file (*.csv) - CSV-ფáƒáƒ˜áƒšáƒ˜ (*.csv) - - - Exporting Failed - ექსპáƒáƒ áƒ¢áƒ˜ ვერ გáƒáƒœáƒ®áƒáƒ áƒªáƒ˜áƒ”ლდრ- - - - AddressTableModel - - Label - ნიშნული - - - Address - მისáƒáƒ›áƒáƒ áƒ—ი - - - (no label) - (áƒáƒ  áƒáƒ áƒ˜áƒ¡ ნიშნული) - - - - AskPassphraseDialog - - Passphrase Dialog - ფრáƒáƒ–áƒ-პáƒáƒ áƒáƒšáƒ˜áƒ¡ დიáƒáƒšáƒáƒ’ი - - - Enter passphrase - შეიყვáƒáƒœáƒ”თ ფრáƒáƒ–áƒ-პáƒáƒ áƒáƒšáƒ˜ - - - New passphrase - áƒáƒ®áƒáƒšáƒ˜ ფრáƒáƒ–áƒ-პáƒáƒ áƒáƒšáƒ˜ - - - Repeat new passphrase - გáƒáƒ˜áƒ›áƒ”áƒáƒ áƒ”თ áƒáƒ®áƒáƒšáƒ˜ ფრáƒáƒ–áƒ-პáƒáƒ áƒáƒšáƒ˜ - - - Encrypt wallet - სáƒáƒ¤áƒ£áƒšáƒ˜áƒ¡ დáƒáƒ¨áƒ˜áƒ¤áƒ áƒ•რ- - - This operation needs your wallet passphrase to unlock the wallet. - ეს áƒáƒžáƒ”რáƒáƒªáƒ˜áƒ მáƒáƒ˜áƒ—ხáƒáƒ•ს თქვენი სáƒáƒ¤áƒ£áƒšáƒ˜áƒ¡ ფრáƒáƒ–áƒ-პáƒáƒ áƒáƒšáƒ¡ სáƒáƒ¤áƒ£áƒšáƒ˜áƒ¡ გáƒáƒœáƒ¡áƒáƒ‘ლáƒáƒ™áƒáƒ“. - - - Unlock wallet - სáƒáƒ¤áƒ£áƒšáƒ˜áƒ¡ გáƒáƒœáƒ‘ლáƒáƒ™áƒ•რ- - - This operation needs your wallet passphrase to decrypt the wallet. - ეს áƒáƒžáƒ”რáƒáƒªáƒ˜áƒ მáƒáƒ˜áƒ—ხáƒáƒ•ს თქვენი სáƒáƒ¤áƒ£áƒšáƒ˜áƒ¡ ფრáƒáƒ–áƒ-პáƒáƒ áƒáƒšáƒ¡ სáƒáƒ¤áƒ£áƒšáƒ˜áƒ¡ გáƒáƒ¡áƒáƒ¨áƒ˜áƒ¤áƒ áƒáƒ“. - - - Decrypt wallet - სáƒáƒ¤áƒ£áƒšáƒ˜áƒ¡ გáƒáƒ¨áƒ˜áƒ¤áƒ áƒ•რ- - - Change passphrase - ფრáƒáƒ–áƒ-პáƒáƒ áƒáƒšáƒ˜áƒ¡ შეცვლრ- - - Confirm wallet encryption - დáƒáƒáƒ“áƒáƒ¡áƒ¢áƒ£áƒ áƒ”თ სáƒáƒ¤áƒ£áƒšáƒ˜áƒ¡ დáƒáƒ¨áƒ˜áƒ¤áƒ áƒ•რ- - - Warning: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR BITCOINS</b>! - ყურáƒáƒ“ღებáƒ: სáƒáƒ¤áƒ£áƒšáƒ˜áƒ¡ დáƒáƒ¨áƒ˜áƒ¤áƒ áƒ•ის შემდეგ თუ თქვენ დáƒáƒ™áƒáƒ áƒ’áƒáƒ•თ ფრáƒáƒ–áƒ-პáƒáƒ áƒáƒšáƒ¡, <b>ყველრბიტქáƒáƒ˜áƒœáƒ˜ დáƒáƒ’ეკáƒáƒ áƒ’ებáƒáƒ—</b>! - - - Are you sure you wish to encrypt your wallet? - დáƒáƒ áƒ¬áƒ›áƒ£áƒœáƒ”ბული ხáƒáƒ áƒ—, რáƒáƒ› გინდáƒáƒ— სáƒáƒ¤áƒ£áƒšáƒ˜áƒ¡ დáƒáƒ¨áƒ˜áƒ¤áƒ áƒ•áƒ? - - - 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. - მნიშვნელáƒáƒ•áƒáƒœáƒ˜áƒ: თქვენი სáƒáƒ¤áƒ£áƒšáƒ˜áƒ¡ ყველრáƒáƒ“რინდელი áƒáƒ áƒ¥áƒ˜áƒ•ი შეიცვლებრáƒáƒ®áƒšáƒáƒ“გენერირებული დáƒáƒ¨áƒ˜áƒ¤áƒ áƒ£áƒšáƒ˜ სáƒáƒ¤áƒ£áƒšáƒ˜áƒ¡ ფáƒáƒ˜áƒšáƒ˜áƒ—. უსáƒáƒ¤áƒ áƒ—ხáƒáƒ”ბის მáƒáƒ¡áƒáƒ–რებებით დáƒáƒ£áƒ¨áƒ˜áƒ¤áƒ áƒáƒ•ი სáƒáƒ¤áƒ£áƒšáƒ˜áƒ¡ ძველი áƒáƒ áƒ¥áƒ˜áƒ•ები ძáƒáƒšáƒáƒ¡ დáƒáƒ™áƒáƒ áƒ’áƒáƒ•ს, რáƒáƒ’áƒáƒ áƒª კი დáƒáƒ˜áƒ¬áƒ§áƒ”ბთ áƒáƒ®áƒáƒšáƒ˜, დáƒáƒ¨áƒ˜áƒ¤áƒ áƒ£áƒšáƒ˜ სáƒáƒ¤áƒ£áƒšáƒ˜áƒ¡ გáƒáƒ›áƒáƒ§áƒ”ნებáƒáƒ¡. - - - Warning: The Caps Lock key is on! - ყურáƒáƒ“ღებáƒ: ჩáƒáƒ áƒ—ულირCaps Lock რეჟიმი! - - - Wallet encrypted - სáƒáƒ¤áƒ£áƒšáƒ” დáƒáƒ¨áƒ˜áƒ¤áƒ áƒ£áƒšáƒ˜áƒ - - - Wallet encryption failed - ვერ მáƒáƒ®áƒ”რხდრსáƒáƒ¤áƒ£áƒšáƒ˜áƒ¡ დáƒáƒ¨áƒ˜áƒ¤áƒ áƒ•რ- - - Wallet encryption failed due to an internal error. Your wallet was not encrypted. - სáƒáƒ¤áƒ£áƒšáƒ˜áƒ¡ დáƒáƒ¨áƒ˜áƒ¤áƒ áƒ•რვერ მáƒáƒ®áƒ”რხდრსისტემáƒáƒ¨áƒ˜ შეცდáƒáƒ›áƒ˜áƒ¡ გáƒáƒ›áƒ. თქვენი სáƒáƒ¤áƒ£áƒšáƒ” áƒáƒ  áƒáƒ áƒ˜áƒ¡ დáƒáƒ¨áƒ¤áƒ áƒ£áƒšáƒ˜. - - - The supplied passphrases do not match. - ფრáƒáƒ–áƒ-პáƒáƒ áƒáƒšáƒ”ბი áƒáƒ  ემთხვევრერთმáƒáƒœáƒ”თს. - - - Wallet unlock failed - სáƒáƒ¤áƒ£áƒšáƒ˜áƒ¡ გáƒáƒœáƒ‘ლáƒáƒ™áƒ•რვერ მáƒáƒ®áƒ”რხდრ- - - The passphrase entered for the wallet decryption was incorrect. - სáƒáƒ¤áƒ£áƒšáƒ˜áƒ¡ გáƒáƒœáƒ¨áƒ˜áƒ¤áƒ áƒ•ის ფრáƒáƒ–áƒ-პáƒáƒ áƒáƒšáƒ˜ áƒáƒ áƒáƒ¬áƒáƒ áƒ˜áƒ - - - Wallet decryption failed - სáƒáƒ¤áƒ£áƒšáƒ˜áƒ¡ გáƒáƒœáƒ¨áƒ˜áƒ¤áƒ áƒ•რვერ მáƒáƒ®áƒ”რხდრ- - - Wallet passphrase was successfully changed. - სáƒáƒ¤áƒ£áƒšáƒ˜áƒ¡ ფრáƒáƒ–áƒ-პáƒáƒ áƒáƒšáƒ˜ შეცვლილიáƒ. - - - - BitcoinGUI - - Sign &message... - ხელ&მáƒáƒ¬áƒ”რრ- - - Synchronizing with network... - ქსელთáƒáƒœ სინქრáƒáƒœáƒ˜áƒ–ებáƒ... - - - &Overview - მიმ&áƒáƒ®áƒ˜áƒšáƒ•რ- - - Node - კვáƒáƒœáƒ«áƒ˜ - - - Show general overview of wallet - სáƒáƒ¤áƒ£áƒšáƒ˜áƒ¡ ზáƒáƒ’áƒáƒ“ი მიმáƒáƒ®áƒ˜áƒšáƒ•რ- - - &Transactions - &ტრáƒáƒœáƒ¡áƒáƒ¥áƒªáƒ˜áƒ”ბი - - - Browse transaction history - ტრáƒáƒœáƒ¡áƒáƒ¥áƒªáƒ˜áƒ”ბის ისტáƒáƒ áƒ˜áƒ˜áƒ¡ დáƒáƒ—ვáƒáƒšáƒ˜áƒ”რებრ- - - E&xit - &გáƒáƒ¡áƒ•ლრ- - - Quit application - გáƒáƒ¡áƒ•ლრ- - - About &Qt - &Qt-ს შესáƒáƒ®áƒ”ბ - - - Show information about Qt - ინფáƒáƒ áƒ›áƒáƒªáƒ˜áƒ Qt-ს შესáƒáƒ®áƒ”ბ - - - &Options... - &áƒáƒžáƒªáƒ˜áƒ”ბი - - - &Encrypt Wallet... - სáƒáƒ¤áƒ£áƒšáƒ˜áƒ¡ &დáƒáƒ¨áƒ˜áƒ¤áƒ áƒ•რ- - - &Backup Wallet... - სáƒáƒ¤áƒ£áƒšáƒ˜áƒ¡ &áƒáƒ áƒ¥áƒ˜áƒ•ირებრ- - - &Change Passphrase... - ფრáƒáƒ–áƒ-პáƒáƒ áƒáƒšáƒ˜áƒ¡ შე&ცვლრ- - - &Sending addresses... - გáƒáƒ’ზáƒáƒ•ნის მი&სáƒáƒ›áƒáƒ áƒ—ი - - - &Receiving addresses... - მიღების მისáƒáƒ›áƒ&რთი - - - Open &URI... - &URI-ის გáƒáƒ®áƒ¡áƒœáƒ... - - - Importing blocks from disk... - ბლáƒáƒ™áƒ”ბის იმპáƒáƒ áƒ¢áƒ˜ დისკიდáƒáƒœ... - - - Reindexing blocks on disk... - დისკზე ბლáƒáƒ™áƒ”ბის რეინდექსáƒáƒªáƒ˜áƒ... - - - Send coins to a Bitcoin address - მáƒáƒœáƒ”ტების გáƒáƒ’ზáƒáƒ•ნრBitcoin-მისáƒáƒ›áƒáƒ áƒ—ზე - - - Backup wallet to another location - სáƒáƒ¤áƒ£áƒšáƒ˜áƒ¡ áƒáƒ áƒ¥áƒ˜áƒ•ირებრსხვრáƒáƒ“გილზე - - - Change the passphrase used for wallet encryption - სáƒáƒ¤áƒ£áƒšáƒ˜áƒ¡ დáƒáƒ¨áƒ˜áƒ¤áƒ áƒ•ის ფრáƒáƒ–áƒ-პáƒáƒ áƒáƒšáƒ˜áƒ¡ შეცვლრ- - - &Debug window - დáƒ&ხვეწის ფáƒáƒœáƒ¯áƒáƒ áƒ - - - Open debugging and diagnostic console - დáƒáƒ®áƒ•ეწისრდრგიáƒáƒ’ნáƒáƒ¡áƒ¢áƒ˜áƒ™áƒ˜áƒ¡ კáƒáƒœáƒ¡áƒáƒšáƒ˜áƒ¡ გáƒáƒ¨áƒ•ებრ- - - &Verify message... - &ვერიფიკáƒáƒªáƒ˜áƒ - - - Bitcoin - Bitcoin - - - Wallet - სáƒáƒ¤áƒ£áƒšáƒ” - - - &Send - &გáƒáƒ’ზáƒáƒ•ნრ- - - &Receive - &მიღებრ- - - &Show / Hide - &ჩვენებáƒ/დáƒáƒ¤áƒáƒ áƒ•რ- - - Show or hide the main Window - მთáƒáƒ•áƒáƒ áƒ˜ ფáƒáƒœáƒ¯áƒ áƒ˜áƒ¡ ჩვენებáƒ/დáƒáƒ¤áƒáƒ áƒ•რ- - - Encrypt the private keys that belong to your wallet - თქვენი სáƒáƒ¤áƒ£áƒšáƒ˜áƒ¡ პირáƒáƒ“ი გáƒáƒ¡áƒáƒ¦áƒ”ბების დáƒáƒ¨áƒ˜áƒ¤áƒ áƒ•რ- - - Sign messages with your Bitcoin addresses to prove you own them - მესიჯებზე ხელმáƒáƒ¬áƒ”რრთქვენი Bitcoin-მისáƒáƒ›áƒáƒ áƒ—ებით იმის დáƒáƒ¡áƒ¢áƒ£áƒ áƒáƒ“, რáƒáƒ› ის თქვენირ- - - Verify messages to ensure they were signed with specified Bitcoin addresses - შეáƒáƒ›áƒáƒ¬áƒ›áƒ”თ, რáƒáƒ› მესიჯები ხელმáƒáƒ¬áƒ”რილირმითითებული Bitcoin-მისáƒáƒ›áƒáƒ áƒ—ით - - - &File - &ფáƒáƒ˜áƒšáƒ˜ - - - &Settings - &პáƒáƒ áƒáƒ›áƒ”ტრები - - - &Help - &დáƒáƒ®áƒ›áƒáƒ áƒ”ბრ- - - Tabs toolbar - ბáƒáƒ áƒáƒ—ების პáƒáƒœáƒ”ლი - - - Bitcoin Core - Bitcoin Core - - - Request payments (generates QR codes and bitcoin: URIs) - გáƒáƒ“áƒáƒ®áƒ“ის მáƒáƒ—ხáƒáƒ•ნრ(შეიქმნებრQR-კáƒáƒ“ები დრbitcoin: ბმულები) - - - &About Bitcoin Core - Bitcoin Core-ს შეს&áƒáƒ®áƒ”ბ - - - Show the list of used sending addresses and labels - გáƒáƒ›áƒáƒ§áƒ”ნებული გáƒáƒ’ზáƒáƒ•ნის მისáƒáƒ›áƒáƒ áƒ—ებისრდრნიშნულების სიის ჩვენებრ- - - Show the list of used receiving addresses and labels - გáƒáƒ›áƒáƒ§áƒ”ნებული მიღების მისáƒáƒ›áƒáƒ áƒ—ებისრდრნიშნულების სიის ჩვენებრ- - - Open a bitcoin: URI or payment request - bitcoin: URI-ის áƒáƒœ გáƒáƒ“áƒáƒ®áƒ“ის მáƒáƒ—ხáƒáƒ•ნის გáƒáƒ®áƒ¡áƒœáƒ - - - &Command-line options - სáƒáƒ™áƒáƒ›áƒáƒœáƒ“რსტრიქáƒáƒœáƒ˜áƒ¡ áƒáƒž&ციები - - - Show the Bitcoin Core help message to get a list with possible Bitcoin command-line options - Bitcoin Core-ს დáƒáƒ®áƒ›áƒáƒ áƒ”ბის ჩვენებრBitcoin-ის სáƒáƒ™áƒáƒ›áƒáƒœáƒ“რსტრიქáƒáƒœáƒ˜áƒ¡ დáƒáƒ¡áƒáƒ¨áƒ•ები áƒáƒžáƒªáƒ˜áƒ”ბის სáƒáƒœáƒáƒ®áƒáƒ•áƒáƒ“ - - - No block source available... - ბლáƒáƒ™áƒ”ბის წყáƒáƒ áƒ მიუწვდáƒáƒ›áƒ”ლიáƒ... - - - %1 and %2 - %1 დრ%2 - - - %1 behind - %1 გáƒáƒ•ლილირ- - - Last received block was generated %1 ago. - ბáƒáƒšáƒ მიღებული ბლáƒáƒ™áƒ˜áƒ¡ გენერირებიდáƒáƒœ გáƒáƒ¡áƒ£áƒšáƒ˜áƒ %1 - - - Transactions after this will not yet be visible. - შემდგáƒáƒ›áƒ˜ ტრáƒáƒœáƒ¡áƒáƒ¥áƒªáƒ˜áƒ”ბი ნáƒáƒ©áƒ•ენები ჯერ áƒáƒ  იქნებáƒ. - - - Error - შეცდáƒáƒ›áƒ - - - Warning - გáƒáƒ¤áƒ áƒ—ხილებრ- - - Information - ინფáƒáƒ áƒ›áƒáƒªáƒ˜áƒ - - - Up to date - გáƒáƒœáƒáƒ®áƒšáƒ”ბულირ- - - Catching up... - ჩáƒáƒ áƒ—ვáƒ... - - - Sent transaction - გáƒáƒ’ზáƒáƒ•ნილი ტრáƒáƒœáƒ¡áƒáƒ¥áƒªáƒ˜áƒ”ბი - - - Incoming transaction - მიღებული ტრáƒáƒœáƒ¡áƒáƒ¥áƒªáƒ˜áƒ”ბი - - - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - სáƒáƒ¤áƒ£áƒšáƒ” <b>დáƒáƒ¨áƒ˜áƒ¤áƒ áƒ£áƒšáƒ˜áƒ</b> დრáƒáƒ›áƒŸáƒáƒ›áƒáƒ“ <b>გáƒáƒœáƒ‘ლáƒáƒ™áƒ˜áƒšáƒ˜áƒ</b> - - - Wallet is <b>encrypted</b> and currently <b>locked</b> - სáƒáƒ¤áƒ£áƒšáƒ” <b>დáƒáƒ¨áƒ˜áƒ¤áƒ áƒ£áƒšáƒ˜áƒ</b> დრáƒáƒ›áƒŸáƒáƒ›áƒáƒ“ <b>დáƒáƒ‘ლáƒáƒ™áƒ˜áƒšáƒ˜áƒ</b> - - - - ClientModel - - Network Alert - ქსელური გáƒáƒœáƒ’áƒáƒ¨áƒ˜ - - - - CoinControlDialog - - Quantity: - რáƒáƒáƒ“ენáƒáƒ‘áƒ: - - - Bytes: - ბáƒáƒ˜áƒ¢áƒ”ბი: - - - Amount: - თáƒáƒœáƒ®áƒ: - - - Priority: - პრიáƒáƒ áƒ˜áƒ¢áƒ”ტი: - - - Fee: - სáƒáƒ™áƒáƒ›áƒ˜áƒ¡áƒ˜áƒ: - - - After Fee: - დáƒáƒ›áƒáƒ¢áƒ”ბითი სáƒáƒ™áƒáƒ›áƒ˜áƒ¡áƒ˜áƒ: - - - Change: - ხურდáƒ: - - - (un)select all - ყველáƒáƒ¡ მáƒáƒœáƒ˜áƒ¨áƒ•ნáƒ/(მáƒáƒ®áƒ¡áƒœáƒ) - - - Tree mode - გáƒáƒœáƒ¢áƒáƒ¢áƒ•ილი - - - List mode - სირ- - - Amount - თáƒáƒœáƒ®áƒ - - - Date - თáƒáƒ áƒ˜áƒ¦áƒ˜ - - - Confirmations - დáƒáƒ“áƒáƒ¡áƒ¢áƒ£áƒ áƒ”ბრ- - - Confirmed - დáƒáƒ“áƒáƒ¡áƒ¢áƒ£áƒ áƒ”ბულირ- - - Priority - პრიáƒáƒ áƒ˜áƒ¢áƒ”ტი - - - Copy address - მისáƒáƒ›áƒáƒ áƒ—ის კáƒáƒžáƒ˜áƒ áƒ”ბრ- - - Copy label - ნიშნულის კáƒáƒžáƒ˜áƒ áƒ”ბრ- - - Copy amount - თáƒáƒœáƒ®áƒ˜áƒ¡ კáƒáƒžáƒ˜áƒ áƒ”ბრ- - - Copy transaction ID - ტრáƒáƒœáƒ¡áƒáƒ¥áƒªáƒ˜áƒ˜áƒ¡ ID-ს კáƒáƒžáƒ˜áƒ áƒ”ბრ- - - Lock unspent - დáƒáƒ£áƒ®áƒáƒ áƒ¯áƒáƒ•ის დáƒáƒ‘ლáƒáƒ™áƒ•რ- - - Unlock unspent - დáƒáƒ£áƒ®áƒáƒ áƒ¯áƒáƒ•ის გáƒáƒœáƒ‘ლáƒáƒ™áƒ•რ- - - Copy quantity - რáƒáƒáƒ“ენáƒáƒ‘ის კáƒáƒžáƒ˜áƒ áƒ”ბრ- - - Copy fee - სáƒáƒ™áƒáƒ›áƒ˜áƒ¡áƒ˜áƒáƒ¡ კáƒáƒžáƒ˜áƒ áƒ”ბრ- - - Copy after fee - დáƒáƒ›áƒáƒ¢áƒ”ბითი სáƒáƒ™áƒáƒ›áƒ˜áƒ¡áƒ˜áƒáƒ¡ კáƒáƒžáƒ˜áƒ áƒ”ბრ- - - Copy bytes - ბáƒáƒ˜áƒ¢áƒ”ბის კáƒáƒžáƒ˜áƒ áƒ”ბრ- - - Copy priority - პრიáƒáƒ áƒ˜áƒ¢áƒ”ტის კáƒáƒžáƒ˜áƒ áƒ”ბრ- - - Copy change - ხურდის კáƒáƒžáƒ˜áƒ áƒ”ბრ- - - highest - უმáƒáƒ¦áƒšáƒ”სი - - - higher - უფრრმáƒáƒ¦áƒáƒšáƒ˜ - - - high - მáƒáƒ¦áƒáƒšáƒ˜ - - - medium-high - სáƒáƒ¨áƒ£áƒáƒšáƒáƒ–ე მáƒáƒ¦áƒáƒšáƒ˜ - - - medium - სáƒáƒ¨áƒ£áƒáƒšáƒ - - - low-medium - სáƒáƒ¨áƒ£áƒáƒšáƒáƒ–ე დáƒáƒ‘áƒáƒšáƒ˜ - - - low - დáƒáƒ‘áƒáƒšáƒ˜ - - - lower - უფრრდáƒáƒ‘áƒáƒšáƒ˜ - - - lowest - უდáƒáƒ‘ლესი - - - (%1 locked) - (%1 დáƒáƒ‘ლáƒáƒ™áƒ˜áƒšáƒ˜áƒ) - - - none - ცáƒáƒ áƒ˜áƒ”ლი - - - yes - კი - - - no - áƒáƒ áƒ - - - This means a fee of at least %1 per kB is required. - ეს ნიშნáƒáƒ•ს, რáƒáƒ› კილáƒáƒ‘áƒáƒ˜áƒ¢áƒ–ე სáƒáƒ™áƒáƒ›áƒ˜áƒ¡áƒ˜áƒ იქნებრმინიმუმ %1 - - - Can vary +/- 1 byte per input. - შეიძლებრიყáƒáƒ¡ +/- 1 ბáƒáƒ˜áƒ¢áƒ˜ ყáƒáƒ•ელ შესáƒáƒ•áƒáƒšáƒ–ე. - - - Transactions with higher priority are more likely to get included into a block. - მეტი პრიáƒáƒ áƒ˜áƒ¢áƒ”ტის ტრáƒáƒœáƒ¡áƒáƒ¥áƒªáƒ˜áƒ”ბს მეტი შáƒáƒœáƒ¡áƒ˜ áƒáƒ¥áƒ•ს მáƒáƒ®áƒ•დეს ბლáƒáƒ™áƒ¨áƒ˜. - - - (no label) - (áƒáƒ  áƒáƒ áƒ˜áƒ¡ ნიშნული) - - - change from %1 (%2) - ხურდრ%1-დáƒáƒœ (%2) - - - (change) - (ხურდáƒ) - - - - EditAddressDialog - - Edit Address - მისáƒáƒ›áƒáƒ áƒ—ის შეცვლრ- - - &Label - ნიშნუ&ლი - - - The label associated with this address list entry - მისáƒáƒ›áƒáƒ áƒ—ების სიის áƒáƒ› ჩáƒáƒœáƒáƒ¬áƒ”რთáƒáƒœ áƒáƒ¡áƒáƒªáƒ˜áƒ áƒ”ბული ნიშნული - - - The address associated with this address list entry. This can only be modified for sending addresses. - მისáƒáƒ›áƒáƒ áƒ—ების სიის áƒáƒ› ჩáƒáƒœáƒáƒ¬áƒ”რთáƒáƒœ მისáƒáƒ›áƒáƒ áƒ—ი áƒáƒ¡áƒáƒªáƒ˜áƒ áƒ”ბული. მისი შეცვლრშეიძლებრმხáƒáƒšáƒáƒ“ გáƒáƒ’ზáƒáƒ•ნის მისáƒáƒ›áƒáƒ áƒ—ის შემთხვევáƒáƒ¨áƒ˜. - - - &Address - მის&áƒáƒ›áƒáƒ áƒ—ი - - - New receiving address - áƒáƒ®áƒáƒšáƒ˜ მიღების მისáƒáƒ›áƒáƒ áƒ—ი - - - New sending address - áƒáƒ®áƒáƒšáƒ˜ გáƒáƒ’ზáƒáƒ•ნის მისáƒáƒ›áƒáƒ áƒ—ი - - - Edit receiving address - მიღების მისáƒáƒ›áƒáƒ áƒ—ის შეცვლრ- - - Edit sending address - გáƒáƒ’ზáƒáƒ•ნის მისáƒáƒ›áƒáƒ áƒ—ის შეცვლრ- - - The entered address "%1" is already in the address book. - მისáƒáƒ›áƒáƒ áƒ—ი "%1" უკვე áƒáƒ áƒ˜áƒ¡ მისáƒáƒ›áƒáƒ áƒ—ების წიგნში. - - - The entered address "%1" is not a valid Bitcoin address. - შეყვáƒáƒœáƒ˜áƒšáƒ˜ მისáƒáƒ›áƒáƒ áƒ—ი "%1" áƒáƒ  áƒáƒ áƒ˜áƒ¡ ვáƒáƒšáƒ˜áƒ“ური Bitcoin-მისáƒáƒ›áƒáƒ áƒ—ი. - - - Could not unlock wallet. - სáƒáƒ¤áƒ£áƒšáƒ˜áƒ¡ გáƒáƒœáƒ‘ლáƒáƒ™áƒ•რვერ მáƒáƒ®áƒ”რხდáƒ. - - - New key generation failed. - áƒáƒ®áƒáƒšáƒ˜ გáƒáƒ¡áƒáƒ¦áƒ”ბის გენერირებრვერ მáƒáƒ®áƒ”რხდრ- - - - FreespaceChecker - - A new data directory will be created. - შეიქმნებრáƒáƒ®áƒáƒšáƒ˜ მáƒáƒœáƒáƒªáƒ”მთრკáƒáƒ¢áƒáƒšáƒáƒ’ი. - - - name - სáƒáƒ®áƒ”ლი - - - Directory already exists. Add %1 if you intend to create a new directory here. - კáƒáƒ¢áƒáƒšáƒáƒ’ი უკვე áƒáƒ áƒ¡áƒ”ბáƒáƒ‘ს. დáƒáƒáƒ›áƒáƒ¢áƒ”თ %1 თუ გინდáƒáƒ— áƒáƒ®áƒáƒšáƒ˜ კáƒáƒ¢áƒáƒšáƒáƒ’ის áƒáƒ¥áƒ•ე შექმნáƒ. - - - Path already exists, and is not a directory. - მისáƒáƒ›áƒáƒ áƒ—ი უკვე áƒáƒ áƒ¡áƒ”ბáƒáƒ‘ს დრáƒáƒ  წáƒáƒ áƒ›áƒáƒáƒ“გენს კáƒáƒ¢áƒáƒšáƒáƒ’ს. - - - Cannot create data directory here. - კáƒáƒ¢áƒáƒšáƒáƒ’ის áƒáƒ¥ შექმნრშეუძლებელიáƒ. - - - - HelpMessageDialog - - Bitcoin Core - Bitcoin Core - - - version - ვერსირ- - - About Bitcoin Core - Bitcoin Core-ს შესáƒáƒ®áƒ”ბ - - - Command-line options - კáƒáƒ›áƒáƒœáƒ“ების ზáƒáƒšáƒ˜áƒ¡ áƒáƒžáƒªáƒ˜áƒ”ბი - - - Usage: - გáƒáƒ›áƒáƒ§áƒ”ნებáƒ: - - - command-line options - კáƒáƒ›áƒáƒœáƒ“ების ზáƒáƒšáƒ˜áƒ¡ áƒáƒžáƒªáƒ˜áƒ”ბი - - - - Intro - - Welcome - მáƒáƒ’ესáƒáƒšáƒ›áƒ”ბით - - - Welcome to Bitcoin Core. - მáƒáƒ’ესáƒáƒšáƒ›áƒ”ბáƒáƒ— Bitcoin Core. - - - As this is the first time the program is launched, you can choose where Bitcoin Core will store its data. - ეს პრáƒáƒ’რáƒáƒ›áƒ˜áƒ¡ პირველი გáƒáƒ¨áƒ•ებáƒáƒ; შეგიძლიáƒáƒ— მიუთითáƒáƒ—, სáƒáƒ“ შეინáƒáƒ®áƒáƒ¡ მáƒáƒœáƒáƒªáƒ”მები Bitcoin Core-მ. - - - Use the default data directory - ნáƒáƒ’ულისხმევი კáƒáƒ¢áƒáƒšáƒáƒ’ის გáƒáƒ›áƒáƒ§áƒ”ნებრ- - - Use a custom data directory: - მითითებული კáƒáƒ¢áƒáƒšáƒáƒ’ის გáƒáƒ›áƒáƒ§áƒ”ნებáƒ: - - - Bitcoin Core - Bitcoin Core - - - Error - შეცდáƒáƒ›áƒ - - - - OpenURIDialog - - Open URI - URI-ის გáƒáƒ®áƒ¡áƒœáƒ - - - Open payment request from URI or file - გáƒáƒ“áƒáƒ®áƒ“ის მáƒáƒ—ხáƒáƒ•ნის შექმნრURI-იდáƒáƒœ áƒáƒœ ფáƒáƒ˜áƒšáƒ˜áƒ“áƒáƒœ - - - URI: - URI: - - - Select payment request file - გáƒáƒ“áƒáƒ®áƒ“ის მáƒáƒ—ხáƒáƒ•ნის ფáƒáƒ˜áƒšáƒ˜áƒ¡ áƒáƒ áƒ©áƒ”ვრ- - - Select payment request file to open - გáƒáƒ“áƒáƒ®áƒ“ის მáƒáƒ—ხáƒáƒ•ნის ფáƒáƒ˜áƒšáƒ˜áƒ¡ áƒáƒ áƒ©áƒ”ვრგáƒáƒ¡áƒáƒ®áƒ¡áƒœáƒ”ლáƒáƒ“ - - - - OptionsDialog - - Options - áƒáƒžáƒªáƒ˜áƒ”ბი - - - &Main - &მთáƒáƒ•áƒáƒ áƒ˜ - - - Size of &database cache - მáƒáƒœáƒáƒªáƒ”მთრბáƒáƒ–ის კეშის სი&დიდე - - - MB - MB - - - Number of script &verification threads - სკრიპტის &ვერიფიცირების ნáƒáƒ™áƒáƒ“ების რáƒáƒáƒ“ენáƒáƒ‘რ- - - IP address of the proxy (e.g. IPv4: 127.0.0.1 / IPv6: ::1) - პრáƒáƒ¥áƒ¡áƒ˜áƒ¡ IP-მისáƒáƒ›áƒáƒ áƒ—ი (მáƒáƒ’.: IPv4: 127.0.0.1 / IPv6: ::1) - - - Active command-line options that override above options: - სáƒáƒ™áƒáƒ›áƒáƒœáƒ“რსტრიქáƒáƒœáƒ˜áƒ¡ áƒáƒ¥áƒ¢áƒ˜áƒ£áƒ áƒ˜ áƒáƒžáƒªáƒ˜áƒ”ბი, რáƒáƒ›áƒšáƒ”ბიც გáƒáƒ“áƒáƒ¤áƒáƒ áƒáƒ•ენ ზემáƒáƒ—ნáƒáƒ©áƒ•ენებს: - - - Reset all client options to default. - კლიენტის ყველრპáƒáƒ áƒáƒ›áƒ”ტრის დáƒáƒ‘რუნებრნáƒáƒ’ულისხმევ მნიშვნელáƒáƒ‘ებზე. - - - &Reset Options - დáƒáƒ‘&რუნების áƒáƒžáƒªáƒ˜áƒ”ბი - - - &Network - &ქსელი - - - W&allet - ს&áƒáƒ¤áƒ£áƒšáƒ” - - - 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. - დáƒáƒ£áƒ“áƒáƒ¡áƒ¢áƒ£áƒ áƒ”ბელი ხურდის გáƒáƒ›áƒáƒ§áƒ”ნების áƒáƒ™áƒ áƒ«áƒáƒšáƒ•ის შემდეგ მáƒáƒ—ი გáƒáƒ›áƒáƒ§áƒ”ნებრშეუძლებელი იქნებáƒ, სáƒáƒœáƒáƒ› ტრáƒáƒœáƒ¡áƒáƒ¥áƒªáƒ˜áƒáƒ¡ áƒáƒ  ექნებრერთი დáƒáƒ¡áƒ¢áƒ£áƒ áƒ˜ მáƒáƒ˜áƒœáƒª. ეს áƒáƒ˜áƒ¡áƒáƒ®áƒ”ბრთქვენი ნáƒáƒ¨áƒ—ის დáƒáƒ—ვლáƒáƒ–ეც. - - - Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled. - რáƒáƒ£áƒ¢áƒ”რში Bitcoin-კლიენტის პáƒáƒ áƒ¢áƒ˜áƒ¡ áƒáƒ•ტáƒáƒ›áƒáƒ¢áƒ£áƒ áƒ˜ გáƒáƒ®áƒ¡áƒœáƒ. მუშáƒáƒáƒ‘ს, თუ თქვენს რáƒáƒ£áƒ¢áƒ”რს ჩáƒáƒ áƒ—ული áƒáƒ¥áƒ•ს UPnP. - - - Map port using &UPnP - პáƒáƒ áƒ¢áƒ˜áƒ¡ გáƒáƒ“áƒáƒ›áƒ˜áƒ¡áƒáƒ›áƒáƒ áƒ—ებრ&UPnP-ით - - - Proxy &IP: - პრáƒáƒ¥áƒ¡áƒ˜áƒ¡ &IP: - - - &Port: - &პáƒáƒ áƒ¢áƒ˜ - - - Port of the proxy (e.g. 9050) - პრáƒáƒ¥áƒ¡áƒ˜áƒ¡ პáƒáƒ áƒ¢áƒ˜ (მáƒáƒ’.: 9050) - - - &Window - &ფáƒáƒœáƒ¯áƒáƒ áƒ - - - Show only a tray icon after minimizing the window. - ფáƒáƒœáƒ¯áƒ áƒ˜áƒ¡ მინიმიზებისáƒáƒ¡ მხáƒáƒšáƒáƒ“ იკáƒáƒœáƒ სისტემურ ზáƒáƒœáƒáƒ¨áƒ˜ - - - &Minimize to the tray instead of the taskbar - &მინიმიზებრსისტემურ ზáƒáƒœáƒáƒ¨áƒ˜ პრáƒáƒ’რáƒáƒ›áƒ”ბის პáƒáƒœáƒ”ლის ნáƒáƒªáƒ•ლáƒáƒ“ - - - M&inimize on close - მ&ინიმიზებრდáƒáƒ®áƒ£áƒ áƒ•ისáƒáƒ¡ - - - &Display - &ჩვენებრ- - - User Interface &language: - სáƒáƒ›áƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბ&ლრენáƒ: - - - &Unit to show amounts in: - ერთეუ&ლი: - - - Choose the default subdivision unit to show in the interface and when sending coins. - áƒáƒ˜áƒ áƒ©áƒ˜áƒ”თ გáƒáƒ¡áƒáƒ’ზáƒáƒ•ნი თáƒáƒœáƒ®áƒ˜áƒ¡ ნáƒáƒ’ულისხმევი ერთეული. - - - Whether to show coin control features or not. - ვáƒáƒ©áƒ•ენáƒáƒ— თუ áƒáƒ áƒ მáƒáƒœáƒ”ტების მáƒáƒ áƒ—ვის პáƒáƒ áƒáƒ›áƒ”ტრები. - - - &OK - &OK - - - &Cancel - &გáƒáƒ£áƒ¥áƒ›áƒ”ბრ- - - default - ნáƒáƒ’ულისხმევი - - - none - ცáƒáƒ áƒ˜áƒ”ლი - - - Confirm options reset - დáƒáƒáƒ“áƒáƒ¡áƒ¢áƒ£áƒ áƒ”თ პáƒáƒ áƒáƒ›áƒ”ტრების დáƒáƒ‘რუნებრნáƒáƒ’ულისხმევზე - - - Client restart required to activate changes. - ცვლილებები ძáƒáƒšáƒáƒ¨áƒ˜ შევრკლიენტის ხელáƒáƒ®áƒáƒšáƒ˜ გáƒáƒ¨áƒ•ების შემდეგ. - - - This change would require a client restart. - áƒáƒ› ცვლილებების ძáƒáƒšáƒáƒ¨áƒ˜ შესáƒáƒ¡áƒ•ლელáƒáƒ“ სáƒáƒ­áƒ˜áƒ áƒáƒ კლიენტის დáƒáƒ®áƒ£áƒ áƒ•რდრხელáƒáƒ®áƒáƒšáƒ˜ გáƒáƒ¨áƒ•ებáƒ. - - - The supplied proxy address is invalid. - პრáƒáƒ¥áƒ¡áƒ˜áƒ¡ მისáƒáƒ›áƒáƒ áƒ—ი áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜áƒ. - - - - OverviewPage - - Form - ფáƒáƒ áƒ›áƒ - - - The displayed information may be out of date. Your wallet automatically synchronizes with the Bitcoin network after a connection is established, but this process has not completed yet. - ნáƒáƒ©áƒ•ენები ინფáƒáƒ áƒ›áƒáƒªáƒ˜áƒ შეიძლებრმáƒáƒ«áƒ•ელებული იყáƒáƒ¡. თქვენი სáƒáƒ¤áƒ£áƒšáƒ” áƒáƒ•ტáƒáƒ›áƒáƒ¢áƒ£áƒ áƒáƒ“ სინქრáƒáƒœáƒ˜áƒ–დებრBitcoin-ის ქსელთáƒáƒœ კáƒáƒ•შირის დáƒáƒ›áƒ§áƒáƒ áƒ”ბის შემდეგ, ეს პრáƒáƒªáƒ”სი ჯერ áƒáƒ  áƒáƒ áƒ˜áƒ¡ დáƒáƒ¡áƒ áƒ£áƒšáƒ”ბული. - - - Available: - ხელმისáƒáƒ¬áƒ•დáƒáƒ›áƒ˜áƒ: - - - Your current spendable balance - თქვენი ხელმისáƒáƒ¬áƒ•დáƒáƒ›áƒ˜ ნáƒáƒ¨áƒ—ი - - - Pending: - იგზáƒáƒ•ნებáƒ: - - - Total of transactions that have yet to be confirmed, and do not yet count toward the spendable balance - დáƒáƒ¡áƒáƒ“áƒáƒ¡áƒ¢áƒ£áƒ áƒ”ბელი ტრáƒáƒœáƒ¡áƒáƒ¥áƒªáƒ˜áƒ”ბის სáƒáƒ”რთრრáƒáƒáƒ“ენáƒáƒ‘áƒ, რáƒáƒ›áƒšáƒ”ბიც ჯერ áƒáƒ  áƒáƒ áƒ˜áƒ¡ áƒáƒ¡áƒáƒ®áƒ£áƒšáƒ˜ ბáƒáƒšáƒáƒœáƒ¡áƒ¨áƒ˜ - - - Immature: - მáƒáƒ£áƒ›áƒ–áƒáƒ“ებელიáƒ: - - - Mined balance that has not yet matured - მáƒáƒžáƒáƒ•ებული თáƒáƒœáƒ®áƒ, რáƒáƒ›áƒ”ლიც ჯერ áƒáƒ  áƒáƒ áƒ˜áƒ¡ მზáƒáƒ“ყáƒáƒ¤áƒœáƒáƒ¨áƒ˜ - - - Total: - სულ: - - - Your current total balance - თქვენი სრული მიმდინáƒáƒ áƒ” ბáƒáƒšáƒáƒœáƒ¡áƒ˜ - - - - PaymentServer - - URI handling - URI-ების დáƒáƒ›áƒ£áƒ¨áƒáƒ•ებრ- - - Invalid payment address %1 - გáƒáƒ“áƒáƒ®áƒ“ის მისáƒáƒ›áƒáƒ áƒ—ი áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜áƒ: %1 - - - Requested payment amount of %1 is too small (considered dust). - მáƒáƒ—ხáƒáƒ•ნილი გáƒáƒ“áƒáƒ®áƒ“ის %1 მáƒáƒªáƒ£áƒšáƒáƒ‘რძáƒáƒšáƒ˜áƒáƒœ მცირერ(ითვლებრ"მტვრáƒáƒ“") - - - Payment request error - გáƒáƒ“áƒáƒ®áƒ“ის მáƒáƒ—ხáƒáƒ•ნის შეცდáƒáƒ›áƒ - - - Cannot start bitcoin: click-to-pay handler - ვერ გáƒáƒ˜áƒ¨áƒ•რbitcoin: click-to-pay - - - Payment request fetch URL is invalid: %1 - áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜áƒ გáƒáƒ“áƒáƒ®áƒ“ის მáƒáƒ—ხáƒáƒ•ნის URL: %1 - - - Payment request file handling - გáƒáƒ“áƒáƒ®áƒ“ის მáƒáƒ—ხáƒáƒ•ნის ფáƒáƒ˜áƒšáƒ˜áƒ¡ დáƒáƒ›áƒ£áƒ¨áƒáƒ•ებრ- - - Unverified payment requests to custom payment scripts are unsupported. - áƒáƒ áƒáƒ•ერიფიცირებული გáƒáƒ“áƒáƒ®áƒ“ის მáƒáƒ—ხáƒáƒ•ნები გáƒáƒ“áƒáƒ®áƒ“ის სáƒáƒ›áƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლრსკრიპტებისáƒáƒ—ვის áƒáƒ  áƒáƒ áƒ˜áƒ¡ მხáƒáƒ áƒ“áƒáƒ­áƒ”რილი. - - - Refund from %1 - დáƒáƒ‘რუნებრ%1-სáƒáƒ’áƒáƒœ - - - Error communicating with %1: %2 - ვერ გáƒáƒ›áƒáƒ“ის კáƒáƒ•შირზე %1: %2 - - - Bad response from server %1 - ცუდი პáƒáƒ¡áƒ£áƒ®áƒ˜ სერვერისáƒáƒ’áƒáƒœ %1 - - - Payment acknowledged - გáƒáƒ“áƒáƒ®áƒ“რმიღებულირ- - - Network request error - ქსელური მáƒáƒ—ხáƒáƒ•ნის შეცდáƒáƒ›áƒ - - - - PeerTableModel - - - QObject - - Amount - თáƒáƒœáƒ®áƒ - - - %1 h - %1 სთ - - - %1 m - %1 წთ - - - N/A - მიუწვდ. - - - - QRImageWidget - - &Save Image... - გáƒáƒ›áƒ&სáƒáƒ®áƒ£áƒšáƒ”ბის შენáƒáƒ®áƒ•áƒ... - - - &Copy Image - გáƒáƒ›áƒáƒ¡áƒáƒ®áƒ£áƒšáƒ”ბის &კáƒáƒžáƒ˜áƒ áƒ”ბრ- - - Save QR Code - QR-კáƒáƒ“ის შენáƒáƒ®áƒ•რ- - - PNG Image (*.png) - PNG სურáƒáƒ—ი (*.png) - - - - RPCConsole - - Client name - კლიენტი - - - N/A - მიუწვდ. - - - Client version - კლიენტის ვერსირ- - - &Information - &ინფáƒáƒ áƒ›áƒáƒªáƒ˜áƒ - - - Debug window - დáƒáƒ®áƒ•ეწის ფáƒáƒœáƒ¯áƒáƒ áƒ - - - General - სáƒáƒ”რთრ- - - Using OpenSSL version - OpenSSL-ის ვერსირ- - - Startup time - სტáƒáƒ áƒ¢áƒ˜áƒ¡ დრრ- - - Network - ქსელი - - - Name - სáƒáƒ®áƒ”ლი - - - Number of connections - შეერთებების რáƒáƒáƒ“ენáƒáƒ‘რ- - - Block chain - ბლáƒáƒ™áƒ—რჯáƒáƒ­áƒ•ი - - - Current number of blocks - ბლáƒáƒ™áƒ”ბის მიმდინáƒáƒ áƒ” რáƒáƒáƒ“ენáƒáƒ‘რ- - - Last block time - ბáƒáƒšáƒ ბლáƒáƒ™áƒ˜áƒ¡ დრრ- - - &Open - &შექმნრ- - - &Console - &კáƒáƒœáƒ¡áƒáƒšáƒ˜ - - - &Network Traffic - &ქსელის ტრáƒáƒ¤áƒ˜áƒ™áƒ˜ - - - &Clear - &წáƒáƒ¨áƒšáƒ - - - Totals - სულ: - - - In: - შემáƒáƒ›áƒáƒ•áƒáƒšáƒ˜: - - - Out: - გáƒáƒ›áƒáƒ•áƒáƒšáƒ˜: - - - Build date - შექმნის დრრ- - - Debug log file - დáƒáƒ®áƒ•ეწის ლáƒáƒ’-ფáƒáƒ˜áƒšáƒ˜ - - - Clear console - კáƒáƒœáƒ¡áƒáƒšáƒ˜áƒ¡ გáƒáƒ¡áƒ£áƒ¤áƒ—áƒáƒ•ებრ- - - Use up and down arrows to navigate history, and <b>Ctrl-L</b> to clear screen. - კლáƒáƒ•იშები "ზევით" დრ"ქვევით" - ისტáƒáƒ áƒ˜áƒáƒ¨áƒ˜ მáƒáƒ«áƒ áƒáƒáƒ‘áƒ, <b>Ctrl-L</b> - ეკრáƒáƒœáƒ˜áƒ¡ გáƒáƒ¡áƒ£áƒ¤áƒ—áƒáƒ•ებáƒ. - - - Type <b>help</b> for an overview of available commands. - áƒáƒ™áƒ áƒ˜áƒ¤áƒ”თ <b>help</b> ფáƒáƒ¨áƒ•ებული ბრძáƒáƒœáƒ”ბების სáƒáƒœáƒáƒ®áƒáƒ•áƒáƒ“. - - - %1 B - %1 B - - - %1 KB - %1 KB - - - %1 MB - %1 MB - - - %1 GB - %1 GB - - - - ReceiveCoinsDialog - - &Amount: - თ&áƒáƒœáƒ®áƒ: - - - &Label: - ნიშნუ&ლი: - - - &Message: - &მესიჯი: - - - Reuse one of the previously used receiving addresses. Reusing addresses has security and privacy issues. Do not use this unless re-generating a payment request made before. - რáƒáƒ›áƒ”ლიმე áƒáƒ“რე გáƒáƒ›áƒáƒ§áƒ”ნებული მიღების მისáƒáƒ›áƒáƒ áƒ—ის გáƒáƒ›áƒáƒ§áƒ”ნებáƒ. ეს áƒáƒ›áƒªáƒ˜áƒ áƒ”ბს უსáƒáƒ¤áƒ áƒ—ხáƒáƒ”ბáƒáƒ¡áƒ დრპრივáƒáƒ¢áƒ£áƒšáƒáƒ‘áƒáƒ¡. ნუ გáƒáƒ›áƒáƒ˜áƒ§áƒ”ნებთ áƒáƒ› áƒáƒžáƒªáƒ˜áƒáƒ¡, თუ áƒáƒ  áƒáƒ®áƒ“ენთ áƒáƒ“რე მáƒáƒ—ხáƒáƒ•ნილი გáƒáƒ“áƒáƒ®áƒ“ის ხელáƒáƒ®áƒšáƒ გენერირებáƒáƒ¡. - - - R&euse an existing receiving address (not recommended) - áƒáƒ“&რე გáƒáƒ›áƒáƒ§áƒ”ნებული მიღების მისáƒáƒ›áƒáƒ áƒ—ის გáƒáƒ›áƒáƒ§áƒ”ნებრ(áƒáƒ  áƒáƒ áƒ˜áƒ¡ რეკáƒáƒ›áƒ”ნდებული) - - - An optional message to attach to the payment request, which will be displayed when the request is opened. Note: The message will not be sent with the payment over the Bitcoin network. - áƒáƒ áƒáƒáƒ£áƒªáƒ˜áƒšáƒ”ბელი მესიჯი, რáƒáƒ›áƒ”ლიც ერთვის გáƒáƒ“áƒáƒ®áƒ“ის მáƒáƒ—ხáƒáƒ•ნáƒáƒ¡ დრნáƒáƒ©áƒ•ენები იქნებრმáƒáƒ—ხáƒáƒ•ნის გáƒáƒ®áƒ¡áƒœáƒ˜áƒ¡áƒáƒ¡. შენიშვნáƒ: მესიჯი áƒáƒ  გáƒáƒ§áƒ•ებრგáƒáƒ“áƒáƒ®áƒ“áƒáƒ¡ ბითქáƒáƒ˜áƒœáƒ˜áƒ¡ ქსელში. - - - An optional label to associate with the new receiving address. - áƒáƒ áƒáƒáƒ£áƒªáƒ˜áƒšáƒ”ბელი ნიშნული áƒáƒ®áƒáƒš მიღების მისáƒáƒ›áƒáƒ áƒ—თáƒáƒœ áƒáƒ¡áƒáƒªáƒ˜áƒ áƒ”ბისáƒáƒ—ვის. - - - Use this form to request payments. All fields are <b>optional</b>. - გáƒáƒ›áƒáƒ˜áƒ§áƒ”ნეთ ეს ფáƒáƒ áƒ›áƒ გáƒáƒ“áƒáƒ®áƒ“ის მáƒáƒ—ხáƒáƒ•ნისáƒáƒ—ვის. ყველრველი <b>áƒáƒ áƒáƒáƒ£áƒªáƒ˜áƒšáƒ”ბელიáƒ</b>. - - - An optional amount to request. Leave this empty or zero to not request a specific amount. - მáƒáƒ—ხáƒáƒ•ნის მáƒáƒªáƒ£áƒšáƒáƒ‘áƒ. áƒáƒ áƒáƒáƒ£áƒªáƒ˜áƒšáƒ”ბელიáƒ. ჩáƒáƒ¬áƒ”რეთ 0 áƒáƒœ დáƒáƒ¢áƒáƒ•ეთ ცáƒáƒ áƒ˜áƒ”ლი, თუ áƒáƒ  მáƒáƒ˜áƒ—ხáƒáƒ•ებრკáƒáƒœáƒ™áƒ áƒ”ტული მáƒáƒªáƒ£áƒšáƒáƒ‘áƒ. - - - Clear all fields of the form. - ფáƒáƒ áƒ›áƒ˜áƒ¡ ყველრველის წáƒáƒ¨áƒšáƒ - - - Clear - წáƒáƒ¨áƒšáƒ - - - Requested payments history - მáƒáƒ—ხáƒáƒ•ნილი გáƒáƒ“áƒáƒ®áƒ“ების ისტáƒáƒ áƒ˜áƒ - - - &Request payment - &გáƒáƒ“áƒáƒ®áƒ“ის მáƒáƒ—ხáƒáƒ•ნრ- - - Show the selected request (does the same as double clicking an entry) - áƒáƒ áƒ©áƒ”ული მáƒáƒ—ხáƒáƒ•ნის ჩვენებრ(იგივეáƒ, რáƒáƒª ჩáƒáƒœáƒáƒ¬áƒ”რზე áƒáƒ áƒ¯áƒ”რ ჩხვლეტáƒ) - - - Show - ჩვენებრ- - - Remove the selected entries from the list - მáƒáƒœáƒ˜áƒ¨áƒœáƒ£áƒšáƒ˜ ჩáƒáƒœáƒáƒ¬áƒ”რების წáƒáƒ¨áƒšáƒ სიიდáƒáƒœ - - - Remove - წáƒáƒ¨áƒšáƒ - - - Copy label - ნიშნულის კáƒáƒžáƒ˜áƒ áƒ”ბრ- - - Copy message - მესიჯის კáƒáƒžáƒ˜áƒ áƒ”ბრ- - - Copy amount - თáƒáƒœáƒ®áƒ˜áƒ¡ კáƒáƒžáƒ˜áƒ áƒ”ბრ- - - - ReceiveRequestDialog - - QR Code - QR-კáƒáƒ“ი - - - Copy &URI - &URI-ის კáƒáƒžáƒ˜áƒ áƒ”ბრ- - - Copy &Address - მის&áƒáƒ›áƒáƒ áƒ—ის კáƒáƒžáƒ˜áƒ áƒ”ბრ- - - &Save Image... - გáƒáƒ›áƒ&სáƒáƒ®áƒ£áƒšáƒ”ბის შენáƒáƒ®áƒ•áƒ... - - - Request payment to %1 - %1-ის გáƒáƒ“áƒáƒ–დის მáƒáƒ—ხáƒáƒ•ნრ- - - Payment information - ინფáƒáƒ áƒ›áƒáƒªáƒ˜áƒ გáƒáƒ“áƒáƒ®áƒ“ის შესáƒáƒ®áƒ”ბ - - - URI - URI - - - Address - მისáƒáƒ›áƒáƒ áƒ—ი - - - Amount - თáƒáƒœáƒ®áƒ - - - Label - ნიშნული - - - Message - მესიჯი - - - Resulting URI too long, try to reduce the text for label / message. - URI ძáƒáƒšáƒ˜áƒáƒœ გრძელი გáƒáƒ›áƒáƒ“ის, შეáƒáƒ›áƒáƒ™áƒšáƒ”თ ნიშნულის/მესიჯის ტექსტი. - - - Error encoding URI into QR Code. - შედáƒáƒ›áƒ URI-ის QR-კáƒáƒ“ში გáƒáƒ“áƒáƒ§áƒ•áƒáƒœáƒ˜áƒ¡áƒáƒ¡. - - - - RecentRequestsTableModel - - Date - თáƒáƒ áƒ˜áƒ¦áƒ˜ - - - Label - ნიშნული - - - Message - მესიჯი - - - Amount - თáƒáƒœáƒ®áƒ - - - (no label) - (áƒáƒ  áƒáƒ áƒ˜áƒ¡ ნიშნული) - - - (no message) - (მესიჯები áƒáƒ  áƒáƒ áƒ˜áƒ¡) - - - (no amount) - (თáƒáƒœáƒ®áƒ áƒáƒ  áƒáƒ áƒ˜áƒ¡) - - - - SendCoinsDialog - - Send Coins - მáƒáƒœáƒ”ტების გáƒáƒ’ზáƒáƒ•ნრ- - - Coin Control Features - მáƒáƒœáƒ”ტების კáƒáƒœáƒ¢áƒ áƒáƒšáƒ˜áƒ¡ პáƒáƒ áƒáƒ›áƒ”ტრები - - - Inputs... - ხáƒáƒ áƒ¯áƒ”ბი... - - - automatically selected - áƒáƒ áƒ©áƒ”ულირáƒáƒ•ტáƒáƒ›áƒáƒ¢áƒ£áƒ áƒáƒ“ - - - Insufficient funds! - áƒáƒ  áƒáƒ áƒ˜áƒ¡ სáƒáƒ™áƒ›áƒáƒ áƒ˜áƒ¡áƒ˜ თáƒáƒœáƒ®áƒ! - - - Quantity: - რáƒáƒáƒ“ენáƒáƒ‘áƒ: - - - Bytes: - ბáƒáƒ˜áƒ¢áƒ”ბი: - - - Amount: - თáƒáƒœáƒ®áƒ: - - - Priority: - პრიáƒáƒ áƒ˜áƒ¢áƒ”ტი: - - - Fee: - სáƒáƒ™áƒáƒ›áƒ˜áƒ¡áƒ˜áƒ: - - - After Fee: - დáƒáƒ›áƒáƒ¢áƒ”ბითი სáƒáƒ™áƒáƒ›áƒ˜áƒ¡áƒ˜áƒ: - - - Change: - ხურდáƒ: - - - If this is activated, but the change address is empty or invalid, change will be sent to a newly generated address. - áƒáƒ›áƒ˜áƒ¡ გáƒáƒáƒ¥áƒ¢áƒ˜áƒ£áƒ áƒ”ბისáƒáƒ¡ თუ ხურდის მისáƒáƒ›áƒáƒ áƒ—ი ცáƒáƒ áƒ˜áƒ”ლირáƒáƒœ áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜áƒ, ხურდრგáƒáƒ˜áƒ’ზáƒáƒ•ნებრáƒáƒ®áƒšáƒáƒ“ გენერირებულ მისáƒáƒ›áƒáƒ áƒ—ებზე. - - - Custom change address - ხურდის მისáƒáƒ›áƒáƒ áƒ—ი - - - Send to multiple recipients at once - გáƒáƒ’ზáƒáƒ•ნრრáƒáƒ›áƒ“ენიმე რეციპიენტთáƒáƒœ ერთდრáƒáƒ£áƒšáƒáƒ“ - - - Add &Recipient - &რეციპიენტის დáƒáƒ›áƒáƒ¢áƒ”ბრ- - - Clear all fields of the form. - ფáƒáƒ áƒ›áƒ˜áƒ¡ ყველრველის წáƒáƒ¨áƒšáƒ - - - Clear &All - გ&áƒáƒ¡áƒ£áƒ¤áƒ—áƒáƒ•ებრ- - - Balance: - ბáƒáƒšáƒáƒœáƒ¡áƒ˜: - - - Confirm the send action - გáƒáƒ’ზáƒáƒ•ნის დáƒáƒ“áƒáƒ¡áƒ¢áƒ£áƒ áƒ”ბრ- - - S&end - გáƒáƒ’&ზáƒáƒ•ნრ- - - Confirm send coins - მáƒáƒœáƒ”ტების გáƒáƒ’ზáƒáƒ•ნის დáƒáƒ“áƒáƒ¡áƒ¢áƒ£áƒ áƒ”ბრ- - - %1 to %2 - %1-დáƒáƒœ %2-ში - - - Copy quantity - რáƒáƒáƒ“ენáƒáƒ‘ის კáƒáƒžáƒ˜áƒ áƒ”ბრ- - - Copy amount - თáƒáƒœáƒ®áƒ˜áƒ¡ კáƒáƒžáƒ˜áƒ áƒ”ბრ- - - Copy fee - სáƒáƒ™áƒáƒ›áƒ˜áƒ¡áƒ˜áƒáƒ¡ კáƒáƒžáƒ˜áƒ áƒ”ბრ- - - Copy after fee - დáƒáƒ›áƒáƒ¢áƒ”ბითი სáƒáƒ™áƒáƒ›áƒ˜áƒ¡áƒ˜áƒáƒ¡ კáƒáƒžáƒ˜áƒ áƒ”ბრ- - - Copy bytes - ბáƒáƒ˜áƒ¢áƒ”ბის კáƒáƒžáƒ˜áƒ áƒ”ბრ- - - Copy priority - პრიáƒáƒ áƒ˜áƒ¢áƒ”ტის კáƒáƒžáƒ˜áƒ áƒ”ბრ- - - Copy change - ხურდის კáƒáƒžáƒ˜áƒ áƒ”ბრ- - - or - áƒáƒœ - - - The amount to pay must be larger than 0. - გáƒáƒ“áƒáƒ®áƒ“ის მáƒáƒªáƒ£áƒšáƒáƒ‘რ0-ზე მეტი უნდრიყáƒáƒ¡ - - - The amount exceeds your balance. - თáƒáƒœáƒ®áƒ áƒáƒ¦áƒ”მáƒáƒ¢áƒ”ბრთქვენს ბáƒáƒšáƒáƒœáƒ¡áƒ¡ - - - Transaction creation failed! - შეცდáƒáƒ›áƒ ტრáƒáƒœáƒ¡áƒáƒ¥áƒªáƒ˜áƒ˜áƒ¡ შექმნისáƒáƒ¡! - - - 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. - ტრáƒáƒœáƒ¡áƒáƒ¥áƒªáƒ˜áƒ უáƒáƒ áƒ§áƒáƒ¤áƒ˜áƒšáƒ˜áƒ! შესáƒáƒ«áƒšáƒáƒ მáƒáƒœáƒ”ტების ნáƒáƒ¬áƒ˜áƒšáƒ˜ თქვენი სáƒáƒ¤áƒ£áƒšáƒ˜áƒ“áƒáƒœ უკვე გáƒáƒ›áƒáƒ§áƒ”ნებულიáƒ, რáƒáƒª შეიძლებრმáƒáƒ®áƒ“ეს wallet.dat-ის áƒáƒ¡áƒšáƒ˜áƒ¡ გáƒáƒ›áƒáƒ§áƒ”ნებისáƒáƒ¡, რáƒáƒªáƒ მáƒáƒœáƒ”ტები გáƒáƒ˜áƒ’ზáƒáƒ•ნრსხვრáƒáƒ¡áƒšáƒ˜áƒ“áƒáƒœ, áƒáƒ¥ კი áƒáƒ  áƒáƒ áƒ˜áƒ¡ გáƒáƒ’ზáƒáƒ•ნილáƒáƒ“ მáƒáƒœáƒ˜áƒ¨áƒœáƒ£áƒšáƒ˜. - - - Warning: Invalid Bitcoin address - ყურáƒáƒ“ღებáƒ: áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜áƒ Bitcoin-მისáƒáƒ›áƒáƒ áƒ—ი - - - (no label) - (áƒáƒ  áƒáƒ áƒ˜áƒ¡ ნიშნული) - - - Warning: Unknown change address - ყურáƒáƒ“ღებáƒ: უცნáƒáƒ‘ირხურდის მისáƒáƒ›áƒáƒ áƒ—ი - - - Are you sure you want to send? - დáƒáƒ áƒ¬áƒ›áƒ£áƒœáƒ”ბული ხáƒáƒ áƒ—, რáƒáƒ› გინდáƒáƒ— გáƒáƒ’ზáƒáƒ•ნáƒ? - - - added as transaction fee - დáƒáƒ›áƒáƒ¢áƒ”ბულირსáƒáƒ™áƒáƒ›áƒ˜áƒ¡áƒ˜áƒ - - - - SendCoinsEntry - - A&mount: - &რáƒáƒáƒ“ენáƒáƒ‘რ- - - Pay &To: - áƒáƒ“რესáƒ&ტი: - - - Enter a label for this address to add it to your address book - შეიყვáƒáƒœáƒ”თ áƒáƒ› მისáƒáƒ›áƒáƒ áƒ—ის ნიშნული მისáƒáƒ›áƒáƒ áƒ—ების წიგნში დáƒáƒ¡áƒáƒ›áƒáƒ¢áƒ”ბლáƒáƒ“ - - - &Label: - ნიშნუ&ლი: - - - Choose previously used address - áƒáƒ˜áƒ áƒ©áƒ˜áƒ”თ áƒáƒ“რე გáƒáƒ›áƒáƒ§áƒ”ნებული მისáƒáƒ›áƒáƒ áƒ—ი - - - This is a normal payment. - ეს áƒáƒ áƒ˜áƒ¡ ჩვეულებრივი გáƒáƒ“áƒáƒ®áƒ“áƒ. - - - Alt+A - Alt+A - - - Paste address from clipboard - მისáƒáƒ›áƒáƒ áƒ—ის ჩáƒáƒ¡áƒ›áƒ კლიპბáƒáƒ áƒ“იდáƒáƒœ - - - Alt+P - Alt+P - - - Remove this entry - ჩáƒáƒœáƒáƒ¬áƒ”რის წáƒáƒ¨áƒšáƒ - - - Message: - მესიჯი: - - - Enter a label for this address to add it to the list of used addresses - შეიყვáƒáƒœáƒ”თ áƒáƒ› მისáƒáƒ›áƒáƒ áƒ—ის ნიშნული გáƒáƒ›áƒáƒ§áƒ”ნებული მისáƒáƒ›áƒáƒ áƒ—ების სიáƒáƒ¨áƒ˜ დáƒáƒ¡áƒáƒ›áƒáƒ¢áƒ”ბლáƒáƒ“ - - - A message that was attached to the bitcoin: URI which will be stored with the transaction for your reference. Note: This message will not be sent over the Bitcoin network. - მესიჯი, რáƒáƒ›áƒ”ლიც თáƒáƒœ ერთვის მáƒáƒœáƒ”ტებს: URI, რáƒáƒ›áƒ”ლიც შეინáƒáƒ®áƒ”ბრტრáƒáƒœáƒ¡áƒáƒ¥áƒªáƒ˜áƒáƒ¡áƒ—áƒáƒœ ერთáƒáƒ“ თქვენთვის. შენიშვნáƒ: მესიჯი áƒáƒ  გáƒáƒ§áƒ•ებრგáƒáƒ“áƒáƒ®áƒ“áƒáƒ¡ ბითქáƒáƒ˜áƒœáƒ˜áƒ¡ ქსელში. - - - Pay To: - áƒáƒ“რესáƒáƒ¢áƒ˜: - - - Memo: - შენიშვნáƒ: - - - - ShutdownWindow - - Bitcoin Core is shutting down... - Bitcoin Core იხურებáƒ... - - - Do not shut down the computer until this window disappears. - áƒáƒ  გáƒáƒ›áƒáƒ áƒ—áƒáƒ— კáƒáƒ›áƒžáƒ˜áƒ£áƒ¢áƒ”რი áƒáƒ› ფáƒáƒœáƒ¯áƒ áƒ˜áƒ¡ გáƒáƒ¥áƒ áƒáƒ‘áƒáƒ›áƒ“ე. - - - - SignVerifyMessageDialog - - Signatures - Sign / Verify a Message - ხელმáƒáƒ¬áƒ”რები - მესიჯის ხელმáƒáƒ¬áƒ”რáƒ/ვერიფიკáƒáƒªáƒ˜áƒ - - - &Sign Message - მე&სიჯის ხელმáƒáƒ¬áƒ”რრ- - - Choose previously used address - áƒáƒ˜áƒ áƒ©áƒ˜áƒ”თ áƒáƒ“რე გáƒáƒ›áƒáƒ§áƒ”ნებული მისáƒáƒ›áƒáƒ áƒ—ი - - - Alt+A - Alt+A - - - Paste address from clipboard - მისáƒáƒ›áƒáƒ áƒ—ის ჩáƒáƒ¡áƒ›áƒ კლიპბáƒáƒ áƒ“იდáƒáƒœ - - - Alt+P - Alt+P - - - Enter the message you want to sign here - áƒáƒ™áƒ áƒ˜áƒ¤áƒ”თ ხელმáƒáƒ¡áƒáƒ¬áƒ”რი მესიჯი - - - Signature - ხელმáƒáƒ¬áƒ”რრ- - - Copy the current signature to the system clipboard - მიმდინáƒáƒ áƒ” ხელმáƒáƒ¬áƒ”რის კáƒáƒžáƒ˜áƒ áƒ”ბრკლიპბáƒáƒ áƒ“ში - - - Sign the message to prove you own this Bitcoin address - მáƒáƒáƒ¬áƒ”რეთ ხელი იმის დáƒáƒ¡áƒáƒ“áƒáƒ¡áƒ¢áƒ£áƒ áƒ”ბლáƒáƒ“, რáƒáƒ› ეს მისáƒáƒ›áƒáƒ áƒ—ი თქვენირ- - - Sign &Message - &მესიჯის ხელმáƒáƒ¬áƒ”რრ- - - Reset all sign message fields - ხელმáƒáƒ¬áƒ”რის ყველრველის წáƒáƒ¨áƒšáƒ - - - Clear &All - გ&áƒáƒ¡áƒ£áƒ¤áƒ—áƒáƒ•ებრ- - - &Verify Message - მესიჯის &ვერიფიკáƒáƒªáƒ˜áƒ - - - Verify the message to ensure it was signed with the specified Bitcoin address - შეáƒáƒ›áƒáƒ¬áƒ›áƒ”თ, რáƒáƒ› მესიჯი ხელმáƒáƒ¬áƒ”რილირმითითებული Bitcoin-მისáƒáƒ›áƒáƒ áƒ—ით - - - Verify &Message - &მესიჯის ვერიფიკáƒáƒªáƒ˜áƒ - - - Reset all verify message fields - ვერიფიკáƒáƒªáƒ˜áƒ˜áƒ¡ ყველრველის წáƒáƒ¨áƒšáƒ - - - Click "Sign Message" to generate signature - ხელმáƒáƒ¬áƒ”რის გენერირებისáƒáƒ—ვის დáƒáƒáƒ­áƒ˜áƒ áƒ”თ "მესიჯის ხელმáƒáƒ¬áƒ”რáƒ"-ს - - - The entered address is invalid. - შეყვáƒáƒœáƒ˜áƒšáƒ˜ მისáƒáƒ›áƒáƒ áƒ—ი áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜áƒ. - - - Please check the address and try again. - შეáƒáƒ›áƒáƒ¬áƒ›áƒ”თ მისáƒáƒ›áƒáƒ áƒ—ი დრსცáƒáƒ“ეთ ხელáƒáƒ®áƒšáƒ. - - - The entered address does not refer to a key. - შეყვáƒáƒœáƒ˜áƒšáƒ˜ მისáƒáƒ›áƒáƒ áƒ—ი áƒáƒ  áƒáƒ áƒ˜áƒ¡ კáƒáƒ•შირში გáƒáƒ¡áƒáƒ¦áƒ”ბთáƒáƒœ. - - - Wallet unlock was cancelled. - სáƒáƒ¤áƒ£áƒšáƒ˜áƒ¡ გáƒáƒœáƒ‘ლáƒáƒ™áƒ•რშეწყვეტილიáƒ. - - - Private key for the entered address is not available. - áƒáƒ› მისáƒáƒ›áƒáƒ áƒ—ისáƒáƒ—ვის პირáƒáƒ“ი გáƒáƒ¡áƒáƒ¦áƒ”ბი მიუწვდáƒáƒ›áƒ”ლიáƒ. - - - Message signing failed. - ვერ მáƒáƒ®áƒ”რხდრმესიჯის ხელმáƒáƒ¬áƒ”რáƒ. - - - Message signed. - მესიჯი ხელმáƒáƒ¬áƒ”რილიáƒ. - - - The signature could not be decoded. - ხელმáƒáƒ¬áƒ”რის დეკáƒáƒ“ირებრვერ ხერხდებáƒ. - - - Please check the signature and try again. - შეáƒáƒ›áƒáƒ¬áƒ›áƒ”თ ხელმáƒáƒ¬áƒ”რრდრსცáƒáƒ“ეთ ხელáƒáƒ®áƒšáƒ. - - - The signature did not match the message digest. - ხელმáƒáƒ¬áƒ”რრáƒáƒ  შეესáƒáƒ‘áƒáƒ›áƒ”ბრმესიჯის დáƒáƒ˜áƒ¯áƒ”სტს. - - - Message verification failed. - მესიჯის ვერიფიკáƒáƒªáƒ˜áƒ ვერ მáƒáƒ®áƒ”რხდáƒ. - - - Message verified. - მესიჯი ვერიფიცირებულიáƒ. - - - - SplashScreen - - Bitcoin Core - Bitcoin Core - - - The Bitcoin Core developers - Bitcoin Core-ს áƒáƒ•ტáƒáƒ áƒ”ბი - - - [testnet] - [testnet] - - - - TrafficGraphWidget - - KB/s - KB/s - - - - TransactionDesc - - Open until %1 - ღირიქნებრსáƒáƒœáƒáƒ› %1 - - - conflicted - კáƒáƒœáƒ¤áƒšáƒ˜áƒ¥áƒ¢áƒ¨áƒ˜áƒ - - - %1/offline - %1/გáƒáƒ—იშულირ- - - %1/unconfirmed - %1/დáƒáƒ£áƒ“áƒáƒ¡áƒ¢áƒ£áƒ áƒ”ბელირ- - - %1 confirmations - %1 დáƒáƒ“áƒáƒ¡áƒ¢áƒ£áƒ áƒ”ბულირ- - - Status - სტáƒáƒ¢áƒ£áƒ¡áƒ˜ - - - Date - თáƒáƒ áƒ˜áƒ¦áƒ˜ - - - Source - წყáƒáƒ áƒ - - - Generated - გენერირებულირ- - - From - გáƒáƒ›áƒ’ზáƒáƒ•ნი - - - To - მიმღები - - - own address - სáƒáƒ™áƒ£áƒ—áƒáƒ áƒ˜ მისáƒáƒ›áƒáƒ áƒ—ი - - - label - ნიშნული - - - Credit - კრედიტი - - - not accepted - უáƒáƒ áƒ§áƒáƒ¤áƒ˜áƒšáƒ˜áƒ - - - Debit - დებიტი - - - Transaction fee - ტრáƒáƒœáƒ¡áƒáƒ¥áƒªáƒ˜áƒ˜áƒ¡ სáƒáƒ¤áƒáƒ¡áƒ£áƒ áƒ˜ - სáƒáƒ™áƒáƒ›áƒ˜áƒ¡áƒ˜áƒ - - - Net amount - სუფთრთáƒáƒœáƒ®áƒ - - - Message - მესიჯი - - - Comment - შენიშვნრ- - - Transaction ID - ტრáƒáƒœáƒ¡áƒáƒ¥áƒªáƒ˜áƒ˜áƒ¡ ID - - - Merchant - გáƒáƒ›áƒ§áƒ˜áƒ“ველი - - - Generated coins must mature %1 blocks before they can be spent. When you generated this block, it was broadcast to the network to be added to the block chain. If it fails to get into the chain, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - გენერირებული მáƒáƒœáƒ”ტები გáƒáƒ¡áƒáƒ’ზáƒáƒ•ნáƒáƒ“ მáƒáƒ›áƒ¬áƒ˜áƒ¤áƒ“ებრ%1 ბლáƒáƒ™áƒ˜áƒ¡ შემდეგ. ეს ბლáƒáƒ™áƒ˜ გენერირების შემდეგ გáƒáƒ•რცელებულ იქნრქსელში ბლáƒáƒ™áƒ—რჯáƒáƒ­áƒ•ზე დáƒáƒ¡áƒáƒ›áƒáƒ¢áƒ”ბლáƒáƒ“. თუ ის ვერ ჩáƒáƒ¯áƒ“რჯáƒáƒ­áƒ•ში, მიეცემრსტáƒáƒ¢áƒ£áƒ¡áƒ˜ "უáƒáƒ áƒ§áƒáƒ¤áƒ˜áƒšáƒ˜áƒ" დრáƒáƒ› მáƒáƒœáƒ”ტებს ვერ გáƒáƒ›áƒáƒ˜áƒ§áƒ”ნებთ. áƒáƒ¡áƒ”თი რáƒáƒ› შეიძლებრმáƒáƒ®áƒ“ეს, თუ რáƒáƒ›áƒ”ლიმე კვáƒáƒœáƒ«áƒ›áƒ რáƒáƒ›áƒ“ენიმე წáƒáƒ›áƒ˜áƒ— დáƒáƒ’áƒáƒ¡áƒ¬áƒ áƒáƒ— ბლáƒáƒ™áƒ˜áƒ¡ გენერირებáƒ. - - - Debug information - დáƒáƒ®áƒ•ეწის ინფáƒáƒ áƒ›áƒáƒªáƒ˜áƒ - - - Transaction - ტრáƒáƒœáƒ¡áƒáƒ¥áƒªáƒ˜áƒ - - - Inputs - ხáƒáƒ áƒ¯áƒ”ბი - - - Amount - თáƒáƒœáƒ®áƒ - - - true - ჭეშმáƒáƒ áƒ˜áƒ¢áƒ˜ - - - false - მცდáƒáƒ áƒ˜ - - - , has not been successfully broadcast yet - , დáƒáƒ’ზáƒáƒ•ნრáƒáƒ  áƒáƒ áƒ˜áƒ¡ წáƒáƒ áƒ›áƒáƒ¢áƒ”ბით დáƒáƒ¡áƒ áƒ£áƒšáƒ”ბული - - - unknown - უცნáƒáƒ‘ირ- - - - TransactionDescDialog - - Transaction details - ტრáƒáƒœáƒ¡áƒáƒ¥áƒªáƒ˜áƒ˜áƒ¡ დეტáƒáƒšáƒ”ბი - - - This pane shows a detailed description of the transaction - ტრáƒáƒœáƒ¡áƒáƒ¥áƒªáƒ˜áƒ˜áƒ¡ დáƒáƒ¬áƒ•რილებითი áƒáƒ¦áƒ¬áƒ”რილáƒáƒ‘რ- - - - TransactionTableModel - - Date - თáƒáƒ áƒ˜áƒ¦áƒ˜ - - - Type - ტიპი - - - Immature (%1 confirmations, will be available after %2) - áƒáƒ  áƒáƒ áƒ˜áƒ¡ მáƒáƒ›áƒ¬áƒ˜áƒ¤áƒ”ბული (%1 დáƒáƒ¡áƒ¢áƒ£áƒ áƒ˜, სáƒáƒ­áƒ˜áƒ áƒáƒ სულ %2) - - - Open until %1 - ღირიქნებრსáƒáƒœáƒáƒ› %1 - - - Confirmed (%1 confirmations) - დáƒáƒ“áƒáƒ¡áƒ¢áƒ£áƒ áƒ”ბულირ(%1დáƒáƒ¡áƒ¢áƒ£áƒ áƒ˜) - - - This block was not received by any other nodes and will probably not be accepted! - ეს ბლáƒáƒ™áƒ˜ áƒáƒ  áƒáƒ áƒ˜áƒ¡ მიღებული áƒáƒ áƒªáƒ”რთი კვáƒáƒœáƒ«áƒ˜áƒ¡ მიერ დრსáƒáƒ•áƒáƒ áƒáƒ£áƒ“áƒáƒ“ უáƒáƒ áƒ§áƒáƒ¤áƒ˜áƒšáƒ˜áƒ! - - - Generated but not accepted - გენერირებულიáƒ, მáƒáƒ’რáƒáƒ› უáƒáƒ áƒ§áƒáƒ¤áƒ˜áƒšáƒ˜áƒ - - - Offline - áƒáƒ¤áƒšáƒáƒ˜áƒœáƒ¨áƒ˜áƒ - - - Label - ნიშნული - - - Unconfirmed - დáƒáƒ£áƒ“áƒáƒ¡áƒ¢áƒ£áƒ áƒ”ბელირ- - - Confirming (%1 of %2 recommended confirmations) - დáƒáƒ“áƒáƒ¡áƒ¢áƒ£áƒ áƒ”ბულირ(%1, რეკáƒáƒ›áƒ”ნდებულირ%2) - - - Conflicted - კáƒáƒœáƒ¤áƒšáƒ˜áƒ¥áƒ¢áƒ¨áƒ˜áƒ - - - Received with - შემáƒáƒ¡áƒ£áƒšáƒ˜áƒ - - - Received from - გáƒáƒ›áƒáƒ›áƒ’ზáƒáƒ•ნი - - - Sent to - გáƒáƒ’ზáƒáƒ•ნილირ- - - Payment to yourself - გáƒáƒ“áƒáƒ®áƒ“ილირსáƒáƒ™áƒ£áƒ—áƒáƒ áƒ˜ თáƒáƒ•ისáƒáƒ—ვის - - - Mined - მáƒáƒžáƒáƒ•ებულირ- - - (n/a) - (მიუწვდ.) - - - Transaction status. Hover over this field to show number of confirmations. - ტრáƒáƒœáƒ¡áƒáƒ¥áƒªáƒ˜áƒ˜áƒ¡ სტáƒáƒ¢áƒ£áƒ¡áƒ˜. ველზე კურსáƒáƒ áƒ˜áƒ¡ შეყვáƒáƒœáƒ˜áƒ¡áƒáƒ¡ გáƒáƒ›áƒáƒ©áƒœáƒ“ებრდáƒáƒ¡áƒ¢áƒ£áƒ áƒ”ბის რáƒáƒáƒ“ენáƒáƒ‘áƒ. - - - Date and time that the transaction was received. - ტრáƒáƒœáƒ¡áƒáƒ¥áƒªáƒ˜áƒ˜áƒ¡ მიღების თáƒáƒ áƒ˜áƒ¦áƒ˜ დრდრáƒ. - - - Type of transaction. - ტრáƒáƒœáƒ¡áƒáƒ¥áƒªáƒ˜áƒ˜áƒ¡ ტიპი. - - - Amount removed from or added to balance. - ბáƒáƒšáƒáƒœáƒ¡áƒ˜áƒ“áƒáƒœ მáƒáƒ®áƒ¡áƒœáƒ˜áƒšáƒ˜ áƒáƒœ დáƒáƒ›áƒáƒ¢áƒ”ბული თáƒáƒœáƒ®áƒ. - - - - TransactionView - - All - ყველრ- - - Today - დღეს - - - This week - áƒáƒ› კვირის - - - This month - áƒáƒ› თვის - - - Last month - ბáƒáƒšáƒ თვის - - - This year - áƒáƒ› წლის - - - Range... - შუáƒáƒšáƒ”დი... - - - Received with - შემáƒáƒ¡áƒ£áƒšáƒ˜áƒ - - - Sent to - გáƒáƒ’ზáƒáƒ•ნილირ- - - To yourself - სáƒáƒ™áƒ£áƒ—áƒáƒ áƒ˜ თáƒáƒ•ისáƒáƒ—ვის - - - Mined - მáƒáƒžáƒáƒ•ებულირ- - - Other - სხვრ- - - Enter address or label to search - შეიყვáƒáƒœáƒ”თ სáƒáƒ«áƒ”ბნი მისáƒáƒ›áƒáƒ áƒ—ი áƒáƒœ ნიშნული - - - Min amount - მინ. თáƒáƒœáƒ®áƒ - - - Copy address - მისáƒáƒ›áƒáƒ áƒ—ის კáƒáƒžáƒ˜áƒ áƒ”ბრ- - - Copy label - ნიშნულის კáƒáƒžáƒ˜áƒ áƒ”ბრ- - - Copy amount - თáƒáƒœáƒ®áƒ˜áƒ¡ კáƒáƒžáƒ˜áƒ áƒ”ბრ- - - Copy transaction ID - ტრáƒáƒœáƒ¡áƒáƒ¥áƒªáƒ˜áƒ˜áƒ¡ ID-ს კáƒáƒžáƒ˜áƒ áƒ”ბრ- - - Edit label - ნიშნულის რედáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბრ- - - Show transaction details - ტრáƒáƒœáƒ¡áƒáƒ¥áƒªáƒ˜áƒ˜áƒ¡ დეტáƒáƒšáƒ”ბის ჩვენებრ- - - Export Transaction History - ტრáƒáƒœáƒ¡áƒáƒ¥áƒªáƒ˜áƒ”ბის ისტáƒáƒ áƒ˜áƒ˜áƒ¡ ექსპáƒáƒ áƒ¢áƒ˜ - - - Exporting Failed - ექსპáƒáƒ áƒ¢áƒ˜ ვერ გáƒáƒœáƒ®áƒáƒ áƒªáƒ˜áƒ”ლდრ- - - There was an error trying to save the transaction history to %1. - შეცდáƒáƒ›áƒ %1-ში ტრáƒáƒœáƒ¡áƒáƒ¥áƒªáƒ˜áƒ”ბის შენáƒáƒ®áƒ•ის მცდელáƒáƒ‘ისáƒáƒ¡. - - - Exporting Successful - ეხპáƒáƒ áƒ¢áƒ˜ გáƒáƒœáƒ®áƒáƒ áƒªáƒ˜áƒ”ლებულირ- - - The transaction history was successfully saved to %1. - ტრáƒáƒœáƒ¡áƒáƒ¥áƒªáƒ˜áƒ”ბის ისტáƒáƒ áƒ˜áƒ შენáƒáƒ®áƒ£áƒšáƒ˜áƒ %1-ში. - - - Comma separated file (*.csv) - CSV-ფáƒáƒ˜áƒšáƒ˜ (*.csv) - - - Confirmed - დáƒáƒ“áƒáƒ¡áƒ¢áƒ£áƒ áƒ”ბულირ- - - Date - თáƒáƒ áƒ˜áƒ¦áƒ˜ - - - Type - ტიპი - - - Label - ნიშნული - - - Address - მისáƒáƒ›áƒáƒ áƒ—ი - - - ID - ID - - - Range: - შუáƒáƒšáƒ”დი: - - - to - - - - - - UnitDisplayStatusBarControl - - - WalletFrame - - No wallet has been loaded. - áƒáƒ  áƒáƒ áƒ˜áƒ¡ ჩáƒáƒ¢áƒ•ირთული სáƒáƒ¤áƒ£áƒšáƒ”. - - - - WalletModel - - Send Coins - მáƒáƒœáƒ”ტების გáƒáƒ’ზáƒáƒ•ნრ- - - - WalletView - - &Export - &ექსპáƒáƒ áƒ¢áƒ˜ - - - Export the data in the current tab to a file - áƒáƒ› ბáƒáƒ áƒáƒ—იდáƒáƒœ მáƒáƒœáƒáƒªáƒ”მების ექსპáƒáƒ áƒ¢áƒ˜ ფáƒáƒ˜áƒšáƒ¨áƒ˜ - - - Backup Wallet - სáƒáƒ¤áƒ£áƒšáƒ˜áƒ¡ áƒáƒ áƒ¥áƒ˜áƒ•ირებრ- - - Wallet Data (*.dat) - სáƒáƒ¤áƒ£áƒšáƒ˜áƒ¡ მáƒáƒœáƒáƒªáƒ”მები (*.dat) - - - Backup Failed - áƒáƒ áƒ¥áƒ˜áƒ•ირებრვერ მáƒáƒ®áƒ”რხდრ- - - There was an error trying to save the wallet data to %1. - შეცდáƒáƒ›áƒ %1-ში სáƒáƒ¤áƒ£áƒšáƒ˜áƒ¡ მáƒáƒœáƒáƒªáƒ”მების შენáƒáƒ®áƒ•ის მცდელáƒáƒ‘ისáƒáƒ¡. - - - The wallet data was successfully saved to %1. - სáƒáƒ¤áƒ£áƒšáƒ˜áƒ¡ მáƒáƒœáƒáƒªáƒ”მები შენáƒáƒ®áƒ£áƒšáƒ˜áƒ %1-ში. - - - Backup Successful - áƒáƒ áƒ¥áƒ˜áƒ•ირებრშესრულებულირ- - - - bitcoin-core - - Options: - áƒáƒžáƒªáƒ˜áƒ”ბი: - - - Specify data directory - მიუთითეთ მáƒáƒœáƒáƒªáƒ”მთრკáƒáƒ¢áƒáƒšáƒáƒ’ი - - - Connect to a node to retrieve peer addresses, and disconnect - მიერთებრკვáƒáƒœáƒ«áƒ—áƒáƒœ, პირების მისáƒáƒ›áƒáƒ áƒ—ების მიღებრდრგáƒáƒ—იშვრ- - - Specify your own public address - მიუთითეთ თქვენი სáƒáƒ¯áƒáƒ áƒ მისáƒáƒ›áƒáƒ áƒ—ი - - - Accept command line and JSON-RPC commands - სáƒáƒ™áƒáƒ›áƒáƒœáƒ“რსტრიქáƒáƒœáƒ˜áƒ¡áƒ დრJSON-RPC-კáƒáƒ›áƒáƒ›áƒ“ების ნებáƒáƒ áƒ—ვრ- - - Run in the background as a daemon and accept commands - რეზიდენტულáƒáƒ“ გáƒáƒ¨áƒ•ებრდრკáƒáƒ›áƒáƒœáƒ“ების მიღებრ- - - Use the test network - სáƒáƒ¢áƒ”სტრქსელის გáƒáƒ›áƒáƒ§áƒ”ნებრ- - - Accept connections from outside (default: 1 if no -proxy or -connect) - გáƒáƒ áƒ”დáƒáƒœ შეერთებების დáƒáƒ¨áƒ•ებრ(ნáƒáƒ’ულისხმევი: 1 თუ áƒáƒ  გáƒáƒ›áƒáƒ˜áƒ§áƒ”ნებრ-proxy áƒáƒœ -connect) - - - Bind to given address and always listen on it. Use [host]:port notation for IPv6 - მáƒáƒªáƒ”მულ მისáƒáƒ›áƒáƒ áƒ—ზე მიჯáƒáƒ­áƒ•რმუდმივáƒáƒ“ მáƒáƒ¡áƒ–ე მიყურáƒáƒ“ებით. გáƒáƒ›áƒáƒ˜áƒ§áƒ”ნეთ [host]:port ფáƒáƒ áƒ›áƒ IPv6-სáƒáƒ—ვის - - - Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) - კáƒáƒ›áƒáƒœáƒ“ის შესრულებრსáƒáƒ¤áƒ£áƒšáƒ˜áƒ¡ ტრáƒáƒœáƒ¡áƒáƒ¥áƒªáƒ˜áƒ˜áƒ¡ ცვლილებისáƒáƒ¡ (%s კáƒáƒ›áƒáƒœáƒ“áƒáƒ¨áƒ˜ ჩáƒáƒœáƒáƒªáƒ•ლდებრTxID-ით) - - - This is a pre-release test build - use at your own risk - do not use for mining or merchant applications - ეს áƒáƒ áƒ˜áƒ¡ წინáƒáƒ¡áƒ¬áƒáƒ áƒ˜ სáƒáƒ¢áƒ”სტრვერსირ- გáƒáƒ›áƒáƒ˜áƒ§áƒ”ნეთ სáƒáƒ™áƒ£áƒ—áƒáƒ áƒ˜ რისკით - áƒáƒ  გáƒáƒ›áƒáƒ˜áƒ§áƒ”ნáƒáƒ— მáƒáƒžáƒáƒ•ებისრáƒáƒœ კáƒáƒ›áƒ”რციული მიზნებისáƒáƒ—ვის - - - Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. - ყურáƒáƒ“ღებáƒ: ძáƒáƒšáƒ˜áƒáƒœ მáƒáƒ¦áƒáƒšáƒ˜áƒ -paytxfee - სáƒáƒ™áƒáƒ›áƒ˜áƒ¡áƒ, რáƒáƒ›áƒ”ლსáƒáƒª თქვენ გáƒáƒ“áƒáƒ˜áƒ®áƒ“ით áƒáƒ› ტრáƒáƒœáƒ¡áƒáƒ¥áƒªáƒ˜áƒ˜áƒ¡ გáƒáƒ’ზáƒáƒ•ნის სáƒáƒ¤áƒáƒ¡áƒ£áƒ áƒáƒ“. - - - Warning: The network does not appear to fully agree! Some miners appear to be experiencing issues. - ყურáƒáƒ“ღებáƒ: ქსელში შეუთáƒáƒœáƒ®áƒ›áƒ”ბლáƒáƒ‘áƒáƒ. შესáƒáƒ«áƒšáƒáƒ ცáƒáƒšáƒ™áƒ”ულ მáƒáƒ›áƒžáƒáƒ•ებლებს პრáƒáƒ‘ლემები ექმნებáƒáƒ—! - - - Warning: We do not appear to fully agree with our peers! You may need to upgrade, or other nodes may need to upgrade. - ყურáƒáƒ“ღებáƒ: ჩვენ áƒáƒ  ვეთáƒáƒœáƒ®áƒ›áƒ”ბით ყველრპირს. შესáƒáƒ«áƒšáƒáƒ თქვენ áƒáƒœ სხვრკვáƒáƒœáƒ«áƒ”ბს გáƒáƒœáƒáƒ®áƒšáƒ”ბრგჭირდებáƒáƒ—. - - - Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. - ყურáƒáƒ“ღებáƒ: áƒáƒ  იკითხებრwallet.dat! ყველრგáƒáƒ¡áƒáƒ¦áƒ”ბი წáƒáƒ™áƒ˜áƒ—ხულიáƒ, მáƒáƒ’რáƒáƒ› გáƒáƒ›áƒáƒ áƒ©áƒ”ნილი áƒáƒœ áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜áƒ ტრáƒáƒœáƒ¡áƒáƒ¥áƒªáƒ˜áƒ˜áƒ¡ თáƒáƒ áƒ˜áƒ¦áƒ˜ áƒáƒœ ჩáƒáƒœáƒáƒ¬áƒ”რები მისáƒáƒ›áƒáƒ áƒ—ების წიგნში. - - - 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. - ყურáƒáƒ“ღებáƒ: wallet.dat დáƒáƒ–იáƒáƒœáƒ”ბულიáƒ! áƒáƒ áƒ˜áƒ’ინáƒáƒšáƒ£áƒ áƒ˜ wallet.dat შენáƒáƒ®áƒ£áƒšáƒ˜áƒ რáƒáƒ’áƒáƒ áƒª wallet.{timestamp}.bak %s-ში; თუ შეáƒáƒ›áƒ©áƒœáƒ˜áƒ”თ უზუსტáƒáƒ‘რნáƒáƒ¨áƒ—ში áƒáƒœ ტრáƒáƒœáƒ¡áƒáƒ¥áƒªáƒ˜áƒ”ბში, áƒáƒ¦áƒáƒ“გინეთ áƒáƒ áƒ¥áƒ˜áƒ•იდáƒáƒœ. - - - <category> can be: - <category> შეიძლებრიყáƒáƒ¡: - - - Attempt to recover private keys from a corrupt wallet.dat - პირáƒáƒ“ი გáƒáƒ¡áƒáƒ¦áƒ”ბების áƒáƒ¦áƒ“გენის მცდელáƒáƒ‘რwallet.dat-იდáƒáƒœ - - - Block creation options: - ბლáƒáƒ™áƒ˜áƒ¡ შექმნის áƒáƒžáƒªáƒ˜áƒ”ბი: - - - Connect only to the specified node(s) - შეერთებრმხáƒáƒšáƒáƒ“ მითითებულ კვáƒáƒœáƒ«(ებ)თáƒáƒœ - - - Corrupted block database detected - შენიშნულირბლáƒáƒ™áƒ—რბáƒáƒ–ის დáƒáƒ–იáƒáƒœáƒ”ბრ- - - Do not load the wallet and disable wallet RPC calls - áƒáƒ  ჩáƒáƒ˜áƒ¢áƒ•ირთáƒáƒ¡ სáƒáƒ¤áƒ£áƒšáƒ” დრáƒáƒ˜áƒ™áƒ áƒ«áƒáƒšáƒáƒ¡ სáƒáƒ¤áƒ£áƒšáƒ˜áƒ¡áƒáƒ“მი RPC-მიმáƒáƒ áƒ—ვები - - - Do you want to rebuild the block database now? - გáƒáƒ•უშვáƒáƒ— ბლáƒáƒ™áƒ—რბáƒáƒ–ის ხელáƒáƒ®áƒšáƒ áƒáƒ’ებრეხლáƒ? - - - Error initializing block database - ვერ ინიციáƒáƒšáƒ˜áƒ–დებრბლáƒáƒ™áƒ”ბის ბáƒáƒ–რ- - - Error initializing wallet database environment %s! - ვერ ინიციáƒáƒšáƒ˜áƒ–დებრსáƒáƒ¤áƒ£áƒšáƒ˜áƒ¡ ბáƒáƒ–ის გáƒáƒ áƒ”მრ%s! - - - Error loading block database - áƒáƒ  იტვირთებრბლáƒáƒ™áƒ”ბის ბáƒáƒ–რ- - - Error opening block database - ბლáƒáƒ™áƒ—რბáƒáƒ–ის შექმნრვერ მáƒáƒ®áƒ”რხდრ- - - Error: Disk space is low! - შეცდáƒáƒ›áƒ: დისზე áƒáƒ  áƒáƒ áƒ˜áƒ¡ áƒáƒ“გილი! - - - Failed to listen on any port. Use -listen=0 if you want this. - ვერ ხერხდებრპáƒáƒ áƒ¢áƒ”ბის მიყურáƒáƒ“ებáƒ. თუ გსურთ, გáƒáƒ›áƒáƒ˜áƒ§áƒ”ნეთ -listen=0. - - - If <category> is not supplied, output all debugging information. - თუ <category> áƒáƒ  áƒáƒ áƒ˜áƒ¡ მითითებული, ნáƒáƒ©áƒ•ენები იქნებრსრული დáƒáƒ®áƒ•ეწის ინფáƒáƒ áƒ›áƒáƒªáƒ˜áƒ. - - - Incorrect or no genesis block found. Wrong datadir for network? - სáƒáƒ¬áƒ§áƒ˜áƒ¡áƒ˜ ბლáƒáƒ™áƒ˜ áƒáƒ  áƒáƒ áƒ¡áƒ”ბáƒáƒ‘ს áƒáƒœ áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜áƒ. ქსელის მáƒáƒœáƒáƒªáƒ”მთრკáƒáƒ¢áƒáƒšáƒáƒ’ი datadir ხáƒáƒ› áƒáƒ áƒ˜áƒ¡ áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜? - - - Invalid -onion address: '%s' - áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜áƒ მისáƒáƒ›áƒáƒ áƒ—ი -onion: '%s' - - - Not enough file descriptors available. - áƒáƒ  áƒáƒ áƒ˜áƒ¡ სáƒáƒ™áƒ›áƒáƒ áƒ˜áƒ¡áƒ˜ ფáƒáƒ˜áƒš-დესკრიპტáƒáƒ áƒ”ბი. - - - Set maximum block size in bytes (default: %d) - ბლáƒáƒ™áƒ˜áƒ¡ მáƒáƒ¥áƒ¡áƒ˜áƒ›áƒáƒšáƒ£áƒ áƒ˜ ზáƒáƒ›áƒ˜áƒ¡ გáƒáƒœáƒ¡áƒáƒ–ღვრრბáƒáƒ˜áƒ¢áƒ”ბში (ნáƒáƒ“ულისხმევი: %d) - - - Specify wallet file (within data directory) - მიუთითეთ სáƒáƒ¤áƒ£áƒšáƒ˜áƒ¡ ფáƒáƒ˜áƒšáƒ˜ (კáƒáƒ¢áƒáƒšáƒáƒ’ში) - - - Verifying blocks... - ბლáƒáƒ™áƒ”ბის ვერიფიკáƒáƒªáƒ˜áƒ... - - - Verifying wallet... - სáƒáƒ¤áƒ£áƒšáƒ˜áƒ¡ ვერიფიკáƒáƒªáƒ˜áƒ... - - - Wallet %s resides outside data directory %s - სáƒáƒ¤áƒ£áƒšáƒ” %s მდებáƒáƒ áƒ”áƒáƒ‘ს მáƒáƒœáƒáƒªáƒ”მთრკáƒáƒ¢áƒáƒšáƒáƒ’ის %s გáƒáƒ áƒ”თ - - - Wallet options: - სფულის áƒáƒžáƒªáƒ˜áƒ”ბი: - - - You need to rebuild the database using -reindex to change -txindex - სáƒáƒ­áƒ˜áƒ áƒáƒ ბáƒáƒ–ის ხელáƒáƒ®áƒáƒšáƒ˜ áƒáƒ’ებáƒ, გáƒáƒ›áƒáƒ˜áƒ§áƒ”ნეთ -reindex რáƒáƒ—რშეცვáƒáƒšáƒáƒ— -txindex - - - Imports blocks from external blk000??.dat file - ბლáƒáƒ™áƒ”ბის იმპáƒáƒ áƒ¢áƒ˜ გáƒáƒ áƒ” blk000??.dat ფáƒáƒ˜áƒšáƒ˜áƒ“áƒáƒœ - - - Execute command when a relevant alert is received or we see a really long fork (%s in cmd is replaced by message) - ბრძáƒáƒœáƒ”ბის შესრულებრშესáƒáƒ‘áƒáƒ›áƒ˜áƒ¡áƒ˜ უწყების მიღებისáƒáƒ¡ áƒáƒœ რáƒáƒªáƒ შეინიშნებრსáƒáƒ’რძნáƒáƒ‘ი გáƒáƒ®áƒšáƒ”ჩრ(cmd-ში %s შეიცვლებრმესიჯით) - - - Set maximum size of high-priority/low-fee transactions in bytes (default: %d) - მáƒáƒ¦áƒáƒšáƒžáƒ áƒ˜áƒáƒ áƒ˜áƒ¢áƒ”ტული/დáƒáƒ‘áƒáƒšáƒ¡áƒáƒ™áƒáƒ›áƒ˜áƒ¡áƒ˜áƒáƒ˜áƒáƒœáƒ˜ ტრáƒáƒœáƒ¡áƒáƒ¥áƒªáƒ˜áƒ”ბის მáƒáƒ¥áƒ¡áƒ˜áƒ›áƒáƒšáƒ£áƒ áƒ˜ ზáƒáƒ›áƒ ბáƒáƒ˜áƒ¢áƒ”ბში (ნáƒáƒ’ულისხმევი: %d) - - - Choose data directory on startup (default: 0) - მáƒáƒœáƒáƒªáƒ”მთრკáƒáƒ¢áƒáƒšáƒáƒ’ის მითითებრყáƒáƒ•ელი გáƒáƒ¨áƒ•ებისáƒáƒ¡ (ნáƒáƒ’ულისხმევი: 0) - - - Information - ინფáƒáƒ áƒ›áƒáƒªáƒ˜áƒ - - - Invalid amount for -minrelaytxfee=<amount>: '%s' - დáƒáƒ£áƒ¨áƒ•ებელი მნიშვნელáƒáƒ‘რ-minrelaytxfee=<amount>: '%s' - - - Invalid amount for -mintxfee=<amount>: '%s' - დáƒáƒ£áƒ¨áƒ•ებელი მნიშვნელáƒáƒ‘რ-mintxfee=<amount>: '%s' - - - Send trace/debug info to console instead of debug.log file - ტრáƒáƒ¡áƒ˜áƒ áƒ”ბის/დáƒáƒ®áƒ•ეწის ინფáƒáƒ¡ გáƒáƒ’ზáƒáƒ•ნრკáƒáƒœáƒ¡áƒáƒšáƒ–ე debug.log ფáƒáƒ˜áƒšáƒ˜áƒ¡ ნáƒáƒªáƒ•ლáƒáƒ“ - - - Set language, for example "de_DE" (default: system locale) - áƒáƒ˜áƒ áƒ©áƒ˜áƒ”თ ენáƒ, მáƒáƒ’áƒáƒšáƒ˜áƒ—áƒáƒ“ "de_DE" (ნáƒáƒ’ულისხმევირსისტემური ლáƒáƒ™áƒáƒšáƒ˜) - - - Show splash screen on startup (default: 1) - მისáƒáƒšáƒ›áƒ”ბის ეკრáƒáƒœáƒ˜áƒ¡ ჩვენებრგáƒáƒ¨áƒ•ებისáƒáƒ¡ (ნáƒáƒ’ულისხმევი:1) - - - Shrink debug.log file on client startup (default: 1 when no -debug) - debug.log ფáƒáƒ˜áƒšáƒ˜áƒ¡ შეკუმშვრგáƒáƒ¨áƒ•ებისáƒáƒ¡ (ნáƒáƒ’ულისხმევიáƒ: 1 რáƒáƒªáƒ áƒáƒ  áƒáƒ§áƒ”ნირ-debug) - - - Signing transaction failed - ტრáƒáƒœáƒ¡áƒáƒ¥áƒªáƒ˜áƒ”ბის ხელმáƒáƒ¬áƒ”რრვერ მáƒáƒ®áƒ”რხდრ- - - Start minimized - გáƒáƒ¨áƒ•ებრმინიმიზებული ეკრáƒáƒœáƒ˜áƒ— - - - Transaction amount too small - ტრáƒáƒœáƒ¡áƒáƒ¥áƒªáƒ˜áƒ”ბის რáƒáƒáƒ“ენáƒáƒ‘რძáƒáƒšáƒ˜áƒáƒœ ცáƒáƒ¢áƒáƒ - - - Transaction amounts must be positive - ტრáƒáƒœáƒ¡áƒáƒ¥áƒªáƒ˜áƒ”ბის რáƒáƒáƒ“ენáƒáƒ‘რდáƒáƒ“ებითი რიცხვი უნდრიყáƒáƒ¡ - - - Transaction too large - ტრáƒáƒœáƒ¡áƒáƒ¥áƒªáƒ˜áƒ ძáƒáƒšáƒ˜áƒáƒœ დიდირ- - - Use UPnP to map the listening port (default: 1 when listening) - გáƒáƒ›áƒáƒ˜áƒ§áƒ”ნეთ UPnP მისáƒáƒ§áƒ£áƒ áƒáƒ“ებელი პáƒáƒ áƒ¢áƒ˜áƒ¡ გáƒáƒ“áƒáƒ¡áƒáƒ›áƒ˜áƒ¡áƒáƒ›áƒáƒ áƒ—ებლáƒáƒ“ (ნáƒáƒ’ულისხმევი: 1 რáƒáƒªáƒ ჩáƒáƒ áƒ—ულირმიყურáƒáƒ“ებáƒ) - - - Username for JSON-RPC connections - მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის სáƒáƒ®áƒ”ლი JSON-RPC-შეერთებისáƒáƒ—ვის - - - Warning - გáƒáƒ¤áƒ áƒ—ხილებრ- - - Zapping all transactions from wallet... - ტრáƒáƒœáƒ¡áƒáƒ¥áƒªáƒ˜áƒ”ბის ჩáƒáƒ®áƒ¡áƒœáƒ სáƒáƒ¤áƒ£áƒšáƒ˜áƒ“áƒáƒœ... - - - wallet.dat corrupt, salvage failed - wallet.dat დáƒáƒ–იáƒáƒœáƒ”ბულიáƒ, áƒáƒ¦áƒ“გენრვერ მáƒáƒ®áƒ”რხდრ- - - Password for JSON-RPC connections - პáƒáƒ áƒáƒšáƒ˜ JSON-RPC-შეერთებისáƒáƒ—ვის - - - Execute command when the best block changes (%s in cmd is replaced by block hash) - კáƒáƒ›áƒáƒœáƒ“ის შესრულებრუკეთესი ბლáƒáƒ™áƒ˜áƒ¡ გáƒáƒ›áƒáƒ©áƒ”ნისáƒáƒ¡ (%s კáƒáƒ›áƒáƒœáƒ“áƒáƒ¨áƒ˜ ჩáƒáƒœáƒáƒªáƒ•ლდებრბლáƒáƒ™áƒ˜áƒ¡ ჰეშით) - - - Upgrade wallet to latest format - სáƒáƒ¤áƒ£áƒšáƒ˜áƒ¡ ფáƒáƒ áƒ›áƒáƒ¢áƒ˜áƒ¡ გáƒáƒœáƒáƒ®áƒšáƒ”ბრ- - - Rescan the block chain for missing wallet transactions - ბლáƒáƒ™áƒ”ბის ჯáƒáƒ­áƒ•ის გáƒáƒ“áƒáƒ›áƒáƒ¬áƒ›áƒ”ბრსáƒáƒ¤áƒ£áƒšáƒ”ში გáƒáƒ›áƒáƒ áƒ©áƒ”ნილ ტრáƒáƒœáƒ¡áƒáƒ¥áƒªáƒ˜áƒ”ბზე - - - Use OpenSSL (https) for JSON-RPC connections - OpenSSL-ის (https) გáƒáƒ›áƒáƒ§áƒ”ნებრJSON-RPC-შეერთებებისáƒáƒ—ვის - - - This help message - ეს ტექსტი - - - Allow DNS lookups for -addnode, -seednode and -connect - DNS-ძებნის დáƒáƒ¨áƒ•ებრ-addnode, -seednode დრ-connect-სáƒáƒ—ვის - - - Loading addresses... - მისáƒáƒ›áƒáƒ áƒ—ების ჩáƒáƒ¢áƒ•ირთვáƒ... - - - Error loading wallet.dat: Wallet corrupted - áƒáƒ  იტვირთებრwallet.dat: სáƒáƒ¤áƒ£áƒšáƒ” დáƒáƒ–იáƒáƒœáƒ”ბულირ- - - Error loading wallet.dat - áƒáƒ  იტვირთებრwallet.dat - - - Invalid -proxy address: '%s' - áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜áƒ მისáƒáƒ›áƒáƒ áƒ—ი -proxy: '%s' - - - Unknown network specified in -onlynet: '%s' - -onlynet-ში მითითებულირუცნáƒáƒ‘ი ქსელი: '%s' - - - Cannot resolve -bind address: '%s' - ვერ ხერხდებრ-bind მისáƒáƒ›áƒáƒ áƒ—ის გáƒáƒ áƒ™áƒ•ევáƒ: '%s' - - - Cannot resolve -externalip address: '%s' - ვერ ხერხდებრ-externalip მისáƒáƒ›áƒáƒ áƒ—ის გáƒáƒ áƒ™áƒ•ევáƒ: '%s' - - - Invalid amount for -paytxfee=<amount>: '%s' - დáƒáƒ£áƒ¨áƒ•ებელი მნიშვნელáƒáƒ‘რ-paytxfee=<amount>: '%s' - - - Insufficient funds - áƒáƒ  áƒáƒ áƒ˜áƒ¡ სáƒáƒ™áƒ›áƒáƒ áƒ˜áƒ¡áƒ˜ თáƒáƒœáƒ®áƒ - - - Loading block index... - ბლáƒáƒ™áƒ”ბის ინდექსის ჩáƒáƒ¢áƒ•ირთვáƒ... - - - Add a node to connect to and attempt to keep the connection open - მისáƒáƒ”რთებელი კვáƒáƒœáƒ«áƒ˜áƒ¡ დáƒáƒ›áƒáƒ¢áƒ”ბრდრმიერთების შეძლებისდáƒáƒ’ვáƒáƒ áƒáƒ“ შენáƒáƒ áƒ©áƒ£áƒœáƒ”ბრ- - - Loading wallet... - სáƒáƒ¤áƒ£áƒšáƒ˜áƒ¡ ჩáƒáƒ¢áƒ•ირთვáƒ... - - - Cannot downgrade wallet - სáƒáƒ¤áƒ£áƒšáƒ˜áƒ¡ ძველ ვერსიáƒáƒ–ე გáƒáƒ“áƒáƒ§áƒ•áƒáƒœáƒ შეუძლებელირ- - - Cannot write default address - ვერ ხერხდებრნáƒáƒ’ულისხმევი მისáƒáƒ›áƒáƒ áƒ—ის ჩáƒáƒ¬áƒ”რრ- - - Rescanning... - სკáƒáƒœáƒ˜áƒ áƒ”ბáƒ... - - - Done loading - ჩáƒáƒ¢áƒ•ირთვრდáƒáƒ¡áƒ áƒ£áƒšáƒ”ბულირ- - - Error - შეცდáƒáƒ›áƒ - - - \ No newline at end of file diff --git a/src/qt/locale/bitcoin_kk_KZ.ts b/src/qt/locale/bitcoin_kk_KZ.ts deleted file mode 100644 index 5ee904063..000000000 --- a/src/qt/locale/bitcoin_kk_KZ.ts +++ /dev/null @@ -1,442 +0,0 @@ - - - AddressBookPage - - Create a new address - Жаңа Ð°Ð´Ñ€ÐµÑ ÐµÐ½Ð³Ñ–Ð·Ñƒ - - - &New - Жаңа - - - Copy the currently selected address to the system clipboard - Таңдаған адреÑті тізімнен жою - - - C&lose - Жабу - - - &Export - ЭкÑпорт - - - &Delete - Жою - - - Comma separated file (*.csv) - Үтірмен бөлінген текÑÑ‚ (*.csv) - - - - AddressTableModel - - Label - таңба - - - Address - ÐÐ´Ñ€ÐµÑ - - - (no label) - (таңбаÑыз) - - - - AskPassphraseDialog - - Enter passphrase - ÒšÒ±Ð¿Ð¸Ñ Ñөзді енгізу - - - New passphrase - Жаңа Ò›Ò±Ð¿Ð¸Ñ Ñөзі - - - Repeat new passphrase - Жаңа Ò›Ò±Ð¿Ð¸Ñ Ñөзді қайта енгізу - - - Encrypt wallet - ӘмиÑнді шифрлау - - - This operation needs your wallet passphrase to unlock the wallet. - Бұл операциÑÑÑ‹ бойынша Ñіздің әмиÑнізді қоршаудан шығару үшін әмиÑнның Ò›Ò±Ð¿Ð¸Ñ Ñөзі керек - - - Unlock wallet - ӘмиÑнізді қоршаудан шығару - - - This operation needs your wallet passphrase to decrypt the wallet. - Бұл операциÑÑÑ‹ бойынша Ñіздің әмиÑнізді шифрлап таÑтау үшін әмиÑнның Ò›Ò±Ð¿Ð¸Ñ Ñөзі керек - - - Decrypt wallet - ӘмиÑнізді шифрлап таÑтау - - - Change passphrase - ÒšÒ±Ð¿Ð¸Ñ Ñөзді өзгерту - - - - BitcoinGUI - - &Transactions - &ТранзакциÑлар - - - E&xit - Шығу - - - &Options... - Параметрлері - - - &Backup Wallet... - ӘмиÑнды жаÑыру - - - &Change Passphrase... - ÒšÒ±Ð¿Ð¸Ñ Ñөзді өзгерту - - - Bitcoin - Биткоин - - - Wallet - ӘмиÑн - - - &Send - Жіберу - - - &Receive - Ðлу - - - &File - Файл - - - &Help - Көмек - - - %n hour(s) - %n Ñағат - - - %n day(s) - %n күн - - - %n week(s) - %n апта - - - %1 and %2 - %1 немеÑе %2 - - - %n year(s) - %n жыл - - - %1 behind - %1 қалмады - - - Error - қате - - - Warning - ЕÑкерту - - - Information - Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ - - - Up to date - Жаңартылған - - - - ClientModel - - - CoinControlDialog - - Amount: - Саны - - - Priority: - БаÑымдық - - - Fee: - КомиÑÑÐ¸Ñ - - - Dust: - Шаң - - - After Fee: - КомиÑÑÐ¸Ñ Ð°Ð»Ñƒ кейін - - - Amount - Саны - - - Date - Күні - - - Confirmations - РаÑтау Ñаны - - - Confirmed - РаÑтық - - - Priority - БаÑымдық - - - no - жоқ - - - (no label) - (таңбаÑыз) - - - - EditAddressDialog - - &Address - ÐÐ´Ñ€ÐµÑ - - - - FreespaceChecker - - - HelpMessageDialog - - - Intro - - Error - қате - - - - OpenURIDialog - - - OptionsDialog - - - OverviewPage - - - PaymentServer - - - PeerTableModel - - - QObject - - Amount - Саны - - - - QRImageWidget - - - RPCConsole - - - ReceiveCoinsDialog - - - ReceiveRequestDialog - - Address - ÐÐ´Ñ€ÐµÑ - - - Amount - Саны - - - Label - таңба - - - - RecentRequestsTableModel - - Date - Күні - - - Label - таңба - - - Amount - Саны - - - (no label) - (таңбаÑыз) - - - - SendCoinsDialog - - Amount: - Саны - - - Priority: - БаÑымдық - - - Fee: - КомиÑÑиÑ: - - - After Fee: - КомиÑÑÐ¸Ñ Ð°Ð»Ñƒ кейін: - - - Dust: - Шаң - - - (no label) - (таңбаÑыз) - - - - SendCoinsEntry - - - ShutdownWindow - - - SignVerifyMessageDialog - - - SplashScreen - - - TrafficGraphWidget - - - TransactionDesc - - Date - Күні - - - Amount - Саны - - - - TransactionDescDialog - - - TransactionTableModel - - Date - Күні - - - Label - таңба - - - - TransactionView - - Comma separated file (*.csv) - Үтірмен бөлінген файл (*.csv) - - - Confirmed - РаÑтық - - - Date - Күні - - - Label - таңба - - - Address - ÐÐ´Ñ€ÐµÑ - - - - UnitDisplayStatusBarControl - - - WalletFrame - - - WalletModel - - - WalletView - - &Export - ЭкÑпорт - - - - bitcoin-core - - Information - Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ - - - Transaction amount too small - Ð¢Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ñ Ó©Ñ‚Ðµ кішкентай - - - Transaction too large - Ð¢Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ñ Ó©Ñ‚Ðµ үлкен - - - Warning - ЕÑкерту - - - Error - қате - - - \ No newline at end of file diff --git a/src/qt/locale/bitcoin_ko_KR.ts b/src/qt/locale/bitcoin_ko_KR.ts deleted file mode 100644 index 089e5afbb..000000000 --- a/src/qt/locale/bitcoin_ko_KR.ts +++ /dev/null @@ -1,2624 +0,0 @@ - - - AddressBookPage - - Right-click to edit address or label - 지갑 주소나 ì´ë¦„ì„ ìˆ˜ì •í•˜ë ¤ë©´ ìš°í´ë¦­í•˜ì„¸ìš”. - - - Create a new address - 새 주소 만들기 - - - &New - 새 항목(N) - - - Copy the currently selected address to the system clipboard - 현재 ì„ íƒí•œ 주소를 시스템 í´ë¦½ë³´ë“œë¡œ 복사하기 - - - &Copy - 복사 - - - C&lose - 닫기 (L) - - - &Copy Address - 계좌 복사(&C) - - - Delete the currently selected address from the list - 현재 목ë¡ì— ì„ íƒí•œ 주소 ì‚­ì œ - - - Export the data in the current tab to a file - 현재 íƒ­ì— ìžˆëŠ” ë°ì´í„°ë¥¼ 파ì¼ë¡œ 내보내기 - - - &Export - &내보내기 - - - &Delete - &ì‚­ì œ - - - Choose the address to send coins to - ì½”ì¸ì„ 보내실 주소를 ì„ íƒí•˜ì„¸ìš” - - - Choose the address to receive coins with - ì½”ì¸ì„ 받으실 주소를 ì„ íƒí•˜ì„¸ìš” - - - C&hoose - ì„ íƒí•˜ê¸° (H) - - - Sending addresses - 보내는 주소들 - - - Receiving addresses - ë°›ì€ ì£¼ì†Œë“¤ - - - These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins. - 비트코ì¸ì„ 받는 계좌 주소입니다. ì½”ì¸ì„ 보내기 ì „ì— ìž”ê³ ì™€ 받는 주소를 í•­ìƒ í™•ì¸í•˜ì„¸ìš”. - - - These are your Bitcoin addresses for receiving payments. It is recommended to use a new receiving address for each transaction. - 비트코ì¸ì„ ë°›ì„ ìˆ˜ 있는 계좌 주소입니다. 매 거래마다 새로운 주소 ì‚¬ìš©ì„ ê¶Œìž¥í•©ë‹ˆë‹¤. - - - Copy &Label - 표 복사 - - - &Edit - 편집& - - - Export Address List - 주소 ëª©ë¡ ë‚´ë³´ë‚´ê¸° - - - Comma separated file (*.csv) - ê°ê°ì˜ 파ì¼ì— 쉼표하기(*.csv) - - - Exporting Failed - 내보내기 실패 - - - There was an error trying to save the address list to %1. Please try again. - %1으로 주소 리스트를 저장하는 ë™ì•ˆ 오류가 ë°œìƒí–ˆìŠµë‹ˆë‹¤. 다시 시ë„해주세요. - - - - AddressTableModel - - Label - 표 - - - Address - 주소 - - - (no label) - (표 ì—†ìŒ) - - - - AskPassphraseDialog - - Passphrase Dialog - 암호문 대화ìƒìž - - - Enter passphrase - 암호 입력하기 - - - New passphrase - 새로운 암호 - - - Repeat new passphrase - 새 암호 반복 - - - Encrypt wallet - 지갑 암호화 - - - This operation needs your wallet passphrase to unlock the wallet. - ì´ ìž‘ì—…ì„ ì‹¤í–‰í•˜ë ¤ë©´ ì‚¬ìš©ìž ì§€ê°‘ì˜ ì•”í˜¸ê°€ 필요합니다. - - - Unlock wallet - 지갑 열기 - - - This operation needs your wallet passphrase to decrypt the wallet. - ì´ ìž‘ì—…ì€ ì§€ê°‘ì„ í•´ë…하기 위해 ì‚¬ìš©ìž ì§€ê°‘ì˜ ì•”í˜¸ê°€ 필요합니다. - - - Decrypt wallet - 지갑 í•´ë… - - - Change passphrase - 암호 변경 - - - Confirm wallet encryption - ì§€ê°‘ì˜ ì•”í˜¸í™”ë¥¼ 확정 - - - Warning: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR BITCOINS</b>! - 경고: 만약 ì•”í˜¸í™”ëœ ì§€ê°‘ì˜ ë¹„ë°€ë²ˆí˜¸ë¥¼ 잃어버릴 경우, 모든 비트코ì¸ë“¤ì„ 잃어버릴 수 있습니다! - - - Are you sure you wish to encrypt your wallet? - 지갑 암호화를 허용하시겠습니까? - - - 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. - 중요: ë³¸ì¸ ì§€ê°‘íŒŒì¼ì—서 만든 예전 ë°±ì—…ë“¤ì€ ìƒˆë¡œ ìƒì„±í•œ ì•”í™”í™”ëœ ì§€ê°‘ 파ì¼ë¡œ êµì²´ë©ë‹ˆë‹¤. ë³´ì•ˆìƒ ì´ìœ ë¡œ ì´ì „ì— ì•”í˜¸í™” 하지 ì•Šì€ ì§€ê°‘ íŒŒì¼ ë°±ì—…ì€ ì‚¬ìš©í•  수 없게 ë˜ë‹ˆ 빠른 ì‹œì¼ ë‚´ë¡œ 새로 ì•”í™”í™”ëœ ì§€ê°‘ì„ ì‚¬ìš©í•˜ì‹œê¸° ë°”ëžë‹ˆë‹¤. - - - Warning: The Caps Lock key is on! - 경고: ìº¡ìŠ¤ë¡ í‚¤ê°€ 켜져있습니다! - - - Wallet encrypted - 지갑 암호화 완료 - - - Wallet encryption failed - 지갑 암호화 실패 - - - Wallet encryption failed due to an internal error. Your wallet was not encrypted. - 지갑 암호화는 ë‚´ë¶€ ì—러로 ì¸í•´ 실패했습니다. ë‹¹ì‹ ì˜ ì§€ê°‘ì€ ì•”í˜¸í™” ë˜ì§€ 않았습니다. - - - The supplied passphrases do not match. - 지정한 암호가 ì¼ì¹˜í•˜ì§€ 않습니다. - - - Wallet unlock failed - ì§€ê°‘ì„ ì—´ì§€ 못했습니다. - - - The passphrase entered for the wallet decryption was incorrect. - 지갑 í•´ë…ì„ ìœ„í•œ 암호가 틀렸습니다. - - - Wallet decryption failed - 지갑 í•´ë…ì— ì‹¤íŒ¨í•˜ì˜€ìŠµë‹ˆë‹¤. - - - Wallet passphrase was successfully changed. - 지갑 비밀번호가 성공ì ìœ¼ë¡œ 변경ë˜ì—ˆìŠµë‹ˆë‹¤. - - - - BitcoinGUI - - Sign &message... - 메시지 서명&... - - - Synchronizing with network... - 네트워í¬ì™€ ë™ê¸°í™”중... - - - &Overview - &개요 - - - Node - 노드 - - - Show general overview of wallet - ì§€ê°‘ì˜ ì¼ë°˜ì  개요를 ë³´ì—¬ì¤ë‹ˆë‹¤. - - - &Transactions - &거래 - - - Browse transaction history - ê±°ëž˜ë‚´ì—­ì„ ê²€ìƒ‰í•©ë‹ˆë‹¤. - - - E&xit - 나가기(&X) - - - Quit application - ì ìš© 중단 - - - About &Qt - Qt ì •ë³´(&Q) - - - Show information about Qt - Qt 정보를 표시합니다 - - - &Options... - &옵션 - - - &Encrypt Wallet... - 지갑 암호화&... - - - &Backup Wallet... - 지갑 백업&... - - - &Change Passphrase... - 암호문 변경&... - - - &Sending addresses... - &주소 보내는 중 - - - &Receiving addresses... - & 주소 받는 중 - - - Open &URI... - URI&열기... - - - Bitcoin Core client - ë¹„íŠ¸ì½”ì¸ ì½”ì–´ í´ë¼ì´ì–¸íЏ - - - Importing blocks from disk... - 디스í¬ì—서 ë¸”ë¡ ê°€ì ¸ì˜¤ëŠ” 중... - - - Reindexing blocks on disk... - 디스í¬ì—서 ë¸”ë¡ ë‹¤ì‹œ 색ì¸ì¤‘... - - - Send coins to a Bitcoin address - ë¹„íŠ¸ì½”ì¸ ì£¼ì†Œë¡œ ì½”ì¸ ì „ì†¡ - - - Backup wallet to another location - ì§€ê°‘ì„ ë‹¤ë¥¸ìž¥ì†Œì— ë°±ì—… - - - Change the passphrase used for wallet encryption - 지갑 ì•”í˜¸í™”ì— ì‚¬ìš©ë˜ëŠ” 암호를 변경합니다 - - - &Debug window - 디버그 ì°½& - - - Open debugging and diagnostic console - 디버깅 ë° ì§„ë‹¨ ì½˜ì†”ì„ ì—½ë‹ˆë‹¤ - - - &Verify message... - 메시지 확ì¸&... - - - Bitcoin - ë¹„íŠ¸ì½”ì¸ - - - Wallet - 지갑 - - - &Send - 보내기(&S) - - - &Receive - 받기(&R) - - - Show information about Bitcoin Core - ë¹„íŠ¸ì½”ì¸ ì½”ì–´ì— ê´€í•œ 정보입니다. - - - &Show / Hide - ë³´ì´ê¸°/숨기기(&S) - - - Show or hide the main Window - ë©”ì¸ì°½ ë³´ì´ê¸° ë˜ëŠ” 숨기기 - - - Encrypt the private keys that belong to your wallet - ì§€ê°‘ì— í¬í•¨ëœ ê°œì¸í‚¤ 암호화하기 - - - Sign messages with your Bitcoin addresses to prove you own them - 지갑 주소가 ë³¸ì¸ ì†Œìœ ì¸ì§€ ì¦ëª…하기 위해 ë¹„íŠ¸ì½”ì¸ ì£¼ì†Œì— ì„œëª…í•  수 있습니다. - - - Verify messages to ensure they were signed with specified Bitcoin addresses - ë¹„íŠ¸ì½”ì¸ ì£¼ì†Œì˜ ì „ìž ì„œëª… 확ì¸ì„ 위해 ì²¨ë¶€ëœ ë©”ì‹œì§€ê°€ ìžˆì„ ê²½ìš° ì´ë¥¼ ê²€ì¦í•  수 있습니다. - - - &File - &íŒŒì¼ - - - &Settings - &설정 - - - &Help - &ë„ì›€ë§ - - - Tabs toolbar - 툴바 색ì¸í‘œ - - - Bitcoin Core - ë¹„íŠ¸ì½”ì¸ ì½”ì–´ - - - Request payments (generates QR codes and bitcoin: URIs) - 지불 요청하기 (QR코드와 비트코ì¸ì´ ìƒì„±ë©ë‹ˆë‹¤: URIs) - - - &About Bitcoin Core - &ë¹„íŠ¸ì½”ì¸ ì½”ì–´ 소개 - - - Show the list of used sending addresses and labels - 한번 ì´ìƒ ì‚¬ìš©ëœ ë³´ë‚´ëŠ” 주소와 주소 ì œëª©ì˜ ëª©ë¡ì„ ë³´ì—¬ì¤ë‹ˆë‹¤. - - - Show the list of used receiving addresses and labels - 한번 ì´ìƒ ì‚¬ìš©ëœ ë°›ëŠ” 주소와 주소 ì œëª©ì˜ ëª©ë¡ì„ ë³´ì—¬ì¤ë‹ˆë‹¤. - - - Open a bitcoin: URI or payment request - bitcoin: URI ë˜ëŠ” 지불요청 열기 - - - &Command-line options - 명령어-ë¼ì¸ 옵션 - - - Show the Bitcoin Core help message to get a list with possible Bitcoin command-line options - 사용할 수 있는 ë¹„íŠ¸ì½”ì¸ ëª…ë ¹ì–´ 옵션 목ë¡ì„ 가져오기 위해 Bitcoin-Qt ë„ì›€ë§ ë©”ì‹œì§€ë¥¼ 표시합니다. - - - No block source available... - 사용 가능한 블ë¡ì´ 없습니다... - - - %n hour(s) - %n시간 - - - %n day(s) - %nì¼ - - - %n week(s) - %n주 - - - %1 and %2 - %1 그리고 %2 - - - %n year(s) - %në…„ - - - %1 behind - %1 ë’¤ì— - - - Last received block was generated %1 ago. - ìµœê·¼ì— ë°›ì€ ë¸”ë¡ì€ %1 ì „ì— ìƒì„±ë˜ì—ˆìŠµë‹ˆë‹¤. - - - Transactions after this will not yet be visible. - ì´ í›„ì˜ ê±°ëž˜ë“¤ì€ ì•„ì§ ë³´ì´ì§€ ì•Šì„ ê²ƒìž…ë‹ˆë‹¤. - - - Error - 오류 - - - Warning - 경고 - - - Information - ì •ë³´ - - - Up to date - 현재까지 - - - Catching up... - ë¸”ë¡ ë”°ë¼ìž¡ê¸°... - - - Date: %1 - - ë‚ ì§œ: %1 - - - - Amount: %1 - - 금액: %1 - - - - Type: %1 - - 종류: %1 - - - - Label: %1 - - ë¼ë²¨: %1 - - - - Address: %1 - - 주소: %1 - - - - Sent transaction - 거래 보내기 - - - Incoming transaction - 들어오고 있는 거래 - - - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - ì§€ê°‘ì´ ì•”í˜¸í™” ë˜ì—ˆê³  현재 차단해제 ë˜ì—ˆìŠµë‹ˆë‹¤ - - - Wallet is <b>encrypted</b> and currently <b>locked</b> - ì§€ê°‘ì´ ì•”í˜¸í™” ë˜ì—ˆê³  현재 잠겨져 있습니다 - - - - ClientModel - - Network Alert - ë„¤íŠ¸ì›Œí¬ ê²½ê³  - - - - CoinControlDialog - - Coin Selection - ì½”ì¸ ì„ íƒ - - - Quantity: - 수량: - - - Bytes: - ë°”ì´íЏ: - - - Amount: - 금액: - - - Priority: - 우선순위: - - - Fee: - 수수료: - - - Dust: - ë”스트: - - - After Fee: - 수수료 ì´í›„: - - - Change: - ì²´ì¸ì§€: - - - (un)select all - ëª¨ë‘ ì„ íƒ(하지 않ìŒ) - - - Tree mode - 트리 모드 - - - List mode - 리스트 모드 - - - Amount - 거래량 - - - Date - ë‚ ì§œ - - - Confirmations - í™•ì¸ - - - Confirmed - 확ì¸ë¨ - - - Priority - 우선순위 - - - Copy address - 주소 복사하기 - - - Copy label - 표 복사하기 - - - Copy amount - 거래량 복사 - - - Copy transaction ID - 거래 ì•„ì´ë”” 복사 - - - Lock unspent - 비트코ì¸ì´ 사용ë˜ì§€ ì•Šì€ ì£¼ì†Œë¥¼ 잠금 처리합니다. - - - Unlock unspent - 비트코ì¸ì´ 사용ë˜ì§€ ì•Šì€ ì£¼ì†Œë¥¼ 잠금 해제합니다. - - - Copy quantity - 수량 복사 - - - Copy fee - 수수료 복사 - - - Copy after fee - 수수료 ì´í›„ 복사 - - - Copy bytes - bytes 복사 - - - Copy priority - ìš°ì„ ë„ ë³µì‚¬ - - - highest - 아주 ë†’ìŒ - - - higher - 보다 ë†’ìŒ - - - high - ë†’ìŒ - - - medium-high - 약간 ë†’ìŒ - - - medium - 보통 - - - low-medium - 약간 ë‚®ìŒ - - - low - ë‚®ìŒ - - - lower - 보다 ë‚®ìŒ - - - lowest - 아주 ë‚®ìŒ - - - (%1 locked) - (%1 잠금) - - - none - ì—†ìŒ - - - yes - 예 - - - no - 아니요 - - - This means a fee of at least %1 per kB is required. - ì´ ì˜ë¯¸ëŠ” 수수료가 최소한 %1 per 키로바ì´íЏ 필요합니다 - - - Transactions with higher priority are more likely to get included into a block. - ìš°ì„  순위가 ë†’ì€ ê±°ëž˜ì˜ ê²½ìš° ë¸”ëŸ­ì— í¬í•¨ë  ê°€ëŠ¥ì„±ì´ ë” ë§ŽìŠµë‹ˆë‹¤. - - - (no label) - (표 ì—†ìŒ) - - - change from %1 (%2) - ~로부터 변경 %1 (%2) - - - - EditAddressDialog - - Edit Address - 주소 편집 - - - &Label - &표 - - - The label associated with this address list entry - 현재 ì„ íƒëœ 주소 í•„ë“œì˜ ì œëª©ìž…ë‹ˆë‹¤. - - - &Address - &주소 - - - New receiving address - 새로 받는 주소 - - - New sending address - 새로 보내는 주소 - - - Edit receiving address - 받는 주소 편집 - - - Edit sending address - 보내는 주소 편집 - - - The entered address "%1" is already in the address book. - ìž…ë ¥ëœ ì£¼ì†ŒëŠ”"%1" ì´ë¯¸ 주소ë¡ì— 있습니다. - - - The entered address "%1" is not a valid Bitcoin address. - 입력한 "%1" 주소는 올바른 ë¹„íŠ¸ì½”ì¸ ì£¼ì†Œê°€ 아닙니다. - - - Could not unlock wallet. - ì§€ê°‘ì„ ì—´ 수 없습니다. - - - New key generation failed. - 새로운 키 ìƒì„±ì´ 실패하였습니다 - - - - FreespaceChecker - - A new data directory will be created. - 새로운 ë°ì´í„° í´ë”ê°€ ìƒì„±ë©ë‹ˆë‹¤. - - - name - ì´ë¦„ - - - Directory already exists. Add %1 if you intend to create a new directory here. - í´ë”ê°€ ì´ë¯¸ 존재합니다. 새로운 í´ë” ìƒì„±ì„ ì›í•œë‹¤ë©´ %1 명령어를 추가하세요. - - - Path already exists, and is not a directory. - 경로가 ì´ë¯¸ 존재합니다. 그리고 ê·¸ê²ƒì€ í´ë”ê°€ 아닙니다. - - - Cannot create data directory here. - ë°ì´í„° í´ë”를 여기 ìƒì„±í•  수 없습니다. - - - - HelpMessageDialog - - Bitcoin Core - ë¹„íŠ¸ì½”ì¸ ì½”ì–´ - - - version - 버전 - - - (%1-bit) - (%1-비트) - - - About Bitcoin Core - ë¹„íŠ¸ì½”ì¸ ì½”ì–´ 소개 - - - Command-line options - 명령줄 옵션 - - - Usage: - 사용법: - - - command-line options - 명령줄 옵션 - - - - Intro - - Welcome - 환ì˜í•©ë‹ˆë‹¤ - - - Welcome to Bitcoin Core. - ë¹„íŠ¸ì½”ì¸ ì½”ì–´ì— ì˜¤ì‹ ê²ƒì„ í™˜ì˜í•©ë‹ˆ. - - - As this is the first time the program is launched, you can choose where Bitcoin Core will store its data. - í”„ë¡œê·¸ëž¨ì´ ì²˜ìŒìœ¼ë¡œ 실행ë˜ê³  있습니다. ë¹„íŠ¸ì½”ì¸ ì½”ì–´ê°€ ì–´ë””ì— ë°ì´í„°ë¥¼ 저장할지 ì„ íƒí•  수 있습니다. - - - Bitcoin Core will download and store a copy of the Bitcoin block chain. At least %1GB of data will be stored in this directory, and it will grow over time. The wallet will also be stored in this directory. - ë¹„íŠ¸ì½”ì¸ ì½”ì–´ê°€ 블럭체ì¸ì˜ ë³µì‚¬ë³¸ì„ ë‹¤ìš´ë¡œë“œ 저장합니다. ì ì–´ë„ %1GBì˜ ë°ì´í„°ê°€ ì´ í´ë”ì— ì €ìž¥ë˜ë©° ì‹œê°„ì´ ê²½ê³¼í• ìˆ˜ë¡ ì ì°¨ ì¦ê°€í•©ë‹ˆë‹¤. 그리고 지갑 ë˜í•œ ì´ í´ë”ì— ì €ìž¥ë©ë‹ˆë‹¤. - - - Use the default data directory - 기본 ë°ì´í„° í´ë”를 사용하기 - - - Use a custom data directory: - 커스텀 ë°ì´í„° í´ë” 사용: - - - Bitcoin Core - ë¹„íŠ¸ì½”ì¸ ì½”ì–´ - - - Error - 오류 - - - - OpenURIDialog - - Open URI - URI 열기 - - - Open payment request from URI or file - 지급 요청 URI ë˜ëŠ” íŒŒì¼ ì—´ê¸° - - - URI: - URI: - - - Select payment request file - 지불 요청 파ì¼ì„ ì„ íƒí•˜ì„¸ìš” - - - Select payment request file to open - 지불 요청 파ì¼ì„ 열기 위해서 ì„ íƒí•˜ì„¸ìš” - - - - OptionsDialog - - Options - ì„ íƒë“¤ - - - &Main - ë©”ì¸(&M) - - - Size of &database cache - ë°ì´í„°ë² ì´ìФ ìºì‹œ í¬ê¸° - - - MB - 메가바ì´íЏ - - - Number of script &verification threads - 스í¬ë¦½íЏ ì¸ì¦ ì“°ë ˆë“œì˜ ê°œìˆ˜ - - - Accept connections from outside - ì™¸ë¶€ë¡œë¶€í„°ì˜ ì—°ê²°ì„ ìŠ¹ì¸í•©ë‹ˆë‹¤. - - - Allow incoming connections - ì—°ê²° ìš”ì²­ì„ í—ˆìš©í•©ë‹ˆë‹¤. - - - IP address of the proxy (e.g. IPv4: 127.0.0.1 / IPv6: ::1) - 프ë¡ì‹œ ì•„ì´í”¼ 주소(예. IPv4:127.0.0.1 / IPv6: ::1) - - - Third party transaction URLs - ì œ 3ìž ê±°ëž˜ URLs - - - Active command-line options that override above options: - 명령어 ë¼ì¸ ì˜µì…˜ì„ í™œì„±í™”í•´ì„œ ì˜µì…˜ì„ ìš°íšŒí•˜ì‹œì˜¤ - - - Reset all client options to default. - 모든 í´ë¼ì´ì–¸íЏ ì˜µì…˜ì„ ê¸°ë³¸ê°’ìœ¼ë¡œ 재설정 - - - &Reset Options - 옵션 재설정(&R) - - - &Network - 네트워í¬(&N) - - - W&allet - 지갑 - - - Expert - 전문가 - - - Enable coin &control features - ì½”ì¸ ìƒì„¸ ì œì–´ê¸°ëŠ¥ì„ í™œì„±í™”í•©ë‹ˆë‹¤ - &C - - - &Spend unconfirmed change - &확ì¸ë˜ì§€ ì•Šì€ ëˆì„ 쓰다 - - - Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled. - ë¼ìš°í„°ì˜ ë¹„íŠ¸ì½”ì¸ í´ë¼ì´ì–¸íЏ í¬íŠ¸ë¥¼ ìžë™ìœ¼ë¡œ 엽니다. ë¼ìš°í„°ì—서 UPnP를 ì§€ì›í•˜ê³  활성화 í–ˆì„ ê²½ìš°ì—ë§Œ ë™ìž‘합니다. - - - Map port using &UPnP - ì‚¬ìš©ì¤‘ì¸ UPnP í¬íЏ 매핑(&U) - - - Connect to the Bitcoin network through a SOCKS5 proxy. - SOCKS5 프ë¡ì‹œë¥¼ 통해 ë¹„íŠ¸ì½”ì¸ ë„¤íŠ¸ì›Œí¬ ì—°ê²° - - - &Connect through SOCKS5 proxy (default proxy): - SOCKS5 프ë¡ì‹œë¥¼ ê±°ì³ ì—°ê²°í•©ë‹ˆë‹¤ (기본값 프ë¡ì‹œ): - - - Proxy &IP: - 프ë¡ì‹œ IP(&I): - - - &Port: - í¬íЏ(&P): - - - Port of the proxy (e.g. 9050) - 프ë¡ì‹œì˜ í¬íŠ¸ë²ˆí˜¸ìž…ë‹ˆë‹¤(예: 9050) - - - &Window - ì°½(&W) - - - Show only a tray icon after minimizing the window. - ì°½ì„ ìµœì†Œí™” 하면 트레ì´ì— ì•„ì´ì½˜ë§Œ 표시합니다. - - - &Minimize to the tray instead of the taskbar - 작업 표시줄 대신 트레ì´ë¡œ 최소화(&M) - - - M&inimize on close - ë‹«ì„때 최소화(&I) - - - &Display - 표시(&D) - - - User Interface &language: - ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìФ 언어(&L): - - - &Unit to show amounts in: - ê±°ëž˜ì•¡ì„ í‘œì‹œí•  단위(&U): - - - Choose the default subdivision unit to show in the interface and when sending coins. - ì¸í„°íŽ˜ì´ìŠ¤ì— í‘œì‹œí•˜ê³  ì½”ì¸ì„ 보낼때 사용할 기본 최소화 단위를 ì„ íƒí•˜ì‹­ì‹œì˜¤. - - - Whether to show coin control features or not. - ì½”ì¸ ìƒì„¸ ì œì–´ê¸°ëŠ¥ì— ëŒ€í•œ 표시 여부를 ì„ íƒí•  수 있습니다. - - - &OK - 확ì¸(&O) - - - &Cancel - 취소(&C) - - - default - 기본값 - - - none - ì—†ìŒ - - - Confirm options reset - 옵션 초기화를 í™•ì¸ - - - Client restart required to activate changes. - 변경 ì‚¬í•­ì„ ì ìš©í•˜ê¸° 위해서는 í”„ë¡œê·¸ëž¨ì´ ì¢…ë£Œ 후 재시작ë˜ì–´ì•¼ 합니다. - - - This change would require a client restart. - ì´ ë³€ê²½ 사항 ì ìš©ì„ 위해 프로그램 ìž¬ì‹œìž‘ì´ í•„ìš”í•©ë‹ˆë‹¤. - - - The supplied proxy address is invalid. - 지정한 프ë¡ì‹œ 주소가 잘못ë˜ì—ˆìŠµë‹ˆë‹¤. - - - - OverviewPage - - Form - 유형 - - - The displayed information may be out of date. Your wallet automatically synchronizes with the Bitcoin network after a connection is established, but this process has not completed yet. - 표시한 ì •ë³´ê°€ ì˜¤ëž˜ëœ ê²ƒ 같습니다. ë¹„íŠ¸ì½”ì¸ ë„¤íŠ¸ì›Œí¬ì— 연결하고 난 다ìŒì— ì§€ê°‘ì„ ìžë™ìœ¼ë¡œ ë™ê¸°í™” 하지만, ì•„ì§ ê³¼ì •ì´ ë나지는 않았습니다. - - - Watch-only: - ëª¨ë‹ˆí„°ë§ ì§€ê°‘: - - - Available: - 사용 가능 - - - Your current spendable balance - ë‹¹ì‹ ì˜ í˜„ìž¬ 사용 가능한 잔액 - - - Pending: - 미확정 - - - Total of transactions that have yet to be confirmed, and do not yet count toward the spendable balance - ì „ì²´ ê±°ëž˜ë“¤ì€ ì•„ì§ í™•ì¸ë˜ì§€ 않았고, 그리고 현재 ìž”ì•¡ì— ì•„ì§ ë°˜ì˜ë˜ì§€ 않았습니다. - - - Immature: - ì•„ì§ ì‚¬ìš© 불가능: - - - Mined balance that has not yet matured - ì•„ì§ ì‚¬ìš© 가능하지 ì•Šì€ ì±„êµ´ëœ ìž”ì•¡ - - - Total: - ì´ì•¡: - - - Your current total balance - ë‹¹ì‹ ì˜ í˜„ìž¬ ì´ì•¡ - - - Your current balance in watch-only addresses - ëª¨ë‹ˆí„°ë§ ì§€ê°‘ì˜ í˜„ìž¬ 잔액 - - - - PaymentServer - - URI handling - URI 조작중 - - - Invalid payment address %1 - ìž˜ëª»ëœ ì§€ë¶ˆ 주소입니다 %1 - - - Requested payment amount of %1 is too small (considered dust). - 요청한 금액 %1ì˜ ì–‘ì´ ë„ˆë¬´ ì ìŠµë‹ˆë‹¤. (스팸성 거래로 간주) - - - Payment request error - 지불 요청 애러 - - - Cannot start bitcoin: click-to-pay handler - 비트코ì¸ì„ 시작할 수 없습니다: 지급제어기를 í´ë¦­í•˜ì‹œì˜¤ - - - Payment request fetch URL is invalid: %1 - 대금 ì²­êµ¬ì„œì˜ URLì´ ì˜¬ë°”ë¥´ì§€ 않습니다: %1 - - - Payment request file handling - ì§€ë¶ˆì´ íŒŒì¼ ì²˜ë¦¬ë¥¼ 요청합니다 - - - Unverified payment requests to custom payment scripts are unsupported. - ìž„ì˜ë¡œ 변경한 ê²°ì œ 스í¬ë¦½íЏ ê¸°ë°˜ì˜ ëŒ€ê¸ˆ 청구서 ì–‘ì‹ì€ ê²€ì¦ë˜ê¸° 전까지는 ì§€ì›ë˜ì§€ 않습니다. - - - Refund from %1 - %1 ìœ¼ë¡œë¶€í„°ì˜ í™˜ë¶ˆ - - - Error communicating with %1: %2 - %1ê³¼ ì†Œí†µí•˜ëŠ”ë° ì• ëŸ¬: %2 - - - Bad response from server %1 - 서버로 부터 ë°˜ì‘ì´ ì—†ìŠµë‹ˆë‹¤ %1 - - - Payment acknowledged - ì§€ë¶ˆì´ ìŠ¹ì¸ë¨ - - - Network request error - ë„¤íŠ¸ì›Œí¬ ìš”ì²­ 애러 - - - - PeerTableModel - - - QObject - - Amount - 거래량 - - - Enter a Bitcoin address (e.g. %1) - ë¹„íŠ¸ì½”ì¸ ì£¼ì†Œë¥¼ 입력하기 (예. %1) - - - N/A - ì—†ìŒ - - - - QRImageWidget - - &Save Image... - ì´ë¯¸ì§€ 저장(&S)... - - - &Copy Image - ì´ë¯¸ì§€ 복사(&C) - - - Save QR Code - QR코드 저장 - - - PNG Image (*.png) - PNG ì´ë¯¸ì§€(*.png) - - - - RPCConsole - - Client name - í´ë¼ì´ì–¸íЏ ì´ë¦„ - - - N/A - ì—†ìŒ - - - Client version - í´ë¼ì´ì–¸íЏ 버전 - - - &Information - ì •ë³´ - - - Debug window - 디버그 ì°½ - - - General - ì¼ë°˜ - - - Using OpenSSL version - 오픈SSL ë²„ì „ì„ ì‚¬ìš©í•©ë‹ˆë‹¤ - - - Startup time - 시작 시간 - - - Network - ë„¤íŠ¸ì›Œí¬ - - - Name - ì´ë¦„ - - - Number of connections - ì—°ê²° 수 - - - Block chain - 블럭 ì²´ì¸ - - - Current number of blocks - 현재 블럭 수 - - - Last block time - 최종 블럭 ì‹œê° - - - &Open - 열기(&O) - - - &Console - 콘솔(&C) - - - &Network Traffic - &ë„¤íŠ¸ì›Œí¬ íŠ¸ëž˜í”½ - - - &Clear - &지우기 - - - Totals - ì´ì•¡ - - - In: - In: - - - Out: - Out: - - - Build date - 빌드 ë‚ ì§œ - - - Debug log file - 로그 íŒŒì¼ ë””ë²„ê·¸ - - - Clear console - 콘솔 초기화 - - - Use up and down arrows to navigate history, and <b>Ctrl-L</b> to clear screen. - 기ë¡ì„ 찾아보려면 위 아래 화살표 키를, í™”ë©´ì„ ì§€ìš°ë ¤ë©´ <b>Ctrl-L</b>키를 사용하십시오. - - - Type <b>help</b> for an overview of available commands. - 사용할 수 있는 ëª…ë ¹ì„ ë‘˜ëŸ¬ë³´ë ¤ë©´ <b>help</b>를 입력하십시오. - - - - ReceiveCoinsDialog - - &Amount: - &거래량: - - - &Label: - 표: - - - &Message: - &메시지: - - - Reuse one of the previously used receiving addresses. Reusing addresses has security and privacy issues. Do not use this unless re-generating a payment request made before. - ì´ì „ì— ì‚¬ìš©ëœ ìˆ˜ì·¨ìš© 주소를 사용할려고 합니다. ì£¼ì†Œì˜ ìž¬ì‚¬ìš©ì€ ë³´ì•ˆê³¼ ê°œì¸ì •ë³´ 보호 측면ì—서 문제를 초래할 수 있습니다. ì´ì „ 지불 ìš”ì²­ì„ ìž¬ìƒì„±í•˜ëŠ” 경우가 아니ë¼ë©´ 주소 ìž¬ì‚¬ìš©ì„ ê¶Œí•˜ì§€ 않습니다. - - - R&euse an existing receiving address (not recommended) - í˜„ìž¬ì˜ ìˆ˜ì·¨ìš© 주소를 재사용합니다만 권장하지는 않습니다. (R&) - - - An optional label to associate with the new receiving address. - ìž„ì˜ì˜ ë¼ë²¨ì´ 새로운 받기 주소와 ê²°í•© - - - Use this form to request payments. All fields are <b>optional</b>. - ì§€ê¸‰ì„ ìš”ì²­í•˜ê¸° 위해 아래 형ì‹ì„ 사용하세요. ìž…ë ¥ê°’ì€ <b>ì„ íƒ ì‚¬í•­</b> 입니다. - - - An optional amount to request. Leave this empty or zero to not request a specific amount. - 요청할 금액 입력칸으로 ì„ íƒ ì‚¬í•­ìž…ë‹ˆë‹¤. 빈 칸으로 ë‘거나 특정 ê¸ˆì•¡ì´ í•„ìš”í•˜ì§€ 않는 경우 0ì„ ìž…ë ¥í•˜ì„¸ìš”. - - - Clear all fields of the form. - ì–‘ì‹ì˜ 모든 필드를 ì§€ì›ë‹ˆë‹¤ - - - Clear - 지우기 - - - Requested payments history - ì§€ì¶œê¸°ë¡ í™•ì¸ - - - &Request payment - 지불 요청(&R) - - - Show - 보기 - - - Remove the selected entries from the list - 목ë¡ì—서 삭제할 í•­ëª©ì„ ì„ íƒí•˜ì‹œì˜¤ - - - Remove - ì‚­ì œ - - - Copy label - 표 복사하기 - - - Copy message - 메시지 복사 - - - Copy amount - 거래량 복사 - - - - ReceiveRequestDialog - - QR Code - QR 코드 - - - Copy &URI - URI 복사(&U) - - - Copy &Address - 주소 복사(&A) - - - &Save Image... - ì´ë¯¸ì§€ 저장(&S)... - - - Request payment to %1 - %1ì— ì§€ë¶ˆì„ ìš”ì²­í–ˆìŠµë‹ˆë‹¤ - - - Payment information - 지불 ì •ë³´ - - - URI - URI - - - Address - 주소 - - - Amount - 거래량 - - - Label - 표 - - - Message - 메시지 - - - Resulting URI too long, try to reduce the text for label / message. - URI 결과가 너무 길ìŒ, 표/ë©”ì„¸ì§€ì˜ ê¸€ì„ ì¤„ì´ë„ë¡ í•˜ì„¸ìš”. - - - Error encoding URI into QR Code. - QR코드 ì¸ì½”딩 오류 - - - - RecentRequestsTableModel - - Date - ë‚ ì§œ - - - Label - 표 - - - Message - 메시지 - - - Amount - 거래량 - - - (no label) - (표 ì—†ìŒ) - - - (no message) - (메세지가 없습니다) - - - (no amount) - (거래량 ì—†ìŒ) - - - - SendCoinsDialog - - Send Coins - ì½”ì¸ë“¤ 보내기 - - - Coin Control Features - ì½”ì¸ ì»¨íŠ¸ë¡¤ 기능들 - - - Inputs... - ìž…ë ¥... - - - automatically selected - ìžë™ ì„ íƒ - - - Insufficient funds! - ìžê¸ˆì´ 부족합니다! - - - Quantity: - 수량: - - - Bytes: - ë°”ì´íЏ: - - - Amount: - 거래량: - - - Priority: - 우선순위: - - - Fee: - 수수료: - - - After Fee: - 수수료 ì´í›„: - - - Change: - ì²´ì¸ì§€: - - - Custom change address - 주소변경 - - - Send to multiple recipients at once - ë‹¤ìˆ˜ì˜ ìˆ˜ë ¹ì¸ë“¤ì—게 í•œë²ˆì— ë³´ë‚´ê¸° - - - Add &Recipient - ìˆ˜ë ¹ì¸ ì¶”ê°€í•˜ê¸° - - - Clear all fields of the form. - ì–‘ì‹ì˜ 모든 필드를 ì§€ì›ë‹ˆë‹¤ - - - Dust: - ë”스트: - - - Clear &All - ëª¨ë‘ ì§€ìš°ê¸°(&A) - - - Balance: - 잔액: - - - Confirm the send action - 전송 기능 í™•ì¸ - - - S&end - 보내기(&E) - - - Confirm send coins - ì½”ì¸ ì „ì†¡ì„ í™•ì¸ - - - %1 to %2 - %1ì„(를) %2(으)로 - - - Copy quantity - 수량 복사 - - - Copy amount - 거래량 복사 - - - Copy fee - 수수료 복사 - - - Copy after fee - 수수료 ì´í›„ 복사 - - - Copy bytes - bytes 복사 - - - Copy priority - ìš°ì„ ë„ ë³µì‚¬ - - - or - ë˜ëŠ” - - - The amount to pay must be larger than 0. - 지불하는 ê¸ˆì•¡ì€ 0 보다 커야 합니다. - - - The amount exceeds your balance. - 잔고를 초과하였습니다. - - - The total exceeds your balance when the %1 transaction fee is included. - %1 ì˜ ê±°ëž˜ìˆ˜ìˆ˜ë£Œë¥¼ í¬í•¨í•˜ë©´ 잔고를 초과합니다. - - - Transaction creation failed! - 거래를 ìƒì„±í•˜ëŠ” ê²ƒì„ ì‹¤íŒ¨í•˜ì˜€ìŠµë‹ˆë‹¤ - - - 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. - 거래가 ê±°ë¶€ë˜ì—ˆìŠµë‹ˆë‹¤. 몇몇 ì½”ì¸ë“¤ì´ 지갑ì—서 ì´ë¯¸ ì‚¬ìš©ëœ ê²½ìš°, 예를 들어 ì½”ì¸ì„ ì´ë¯¸ 사용한 wallet.dat를 복사해서 사용한 경우 지금 ì§€ê°‘ì— ê¸°ë¡ì´ 안ë˜ìžˆì–´ ì´ëŸ° ì¼ì´ ìƒê¸¸ 수 있습니다. - - - Warning: Invalid Bitcoin address - 경고: ìž˜ëª»ëœ ë¹„íŠ¸ì½”ì¸ì£¼ì†Œìž…니다 - - - (no label) - (표 ì—†ìŒ) - - - Warning: Unknown change address - 경고: 알려지지 ì•Šì€ ì£¼ì†Œë³€ê²½ìž…ë‹ˆë‹¤ - - - Are you sure you want to send? - ì •ë§ë¡œ 보내시겠습니까? - - - added as transaction fee - 거래 수수료로 ì¶”ê°€ë¨ - - - - SendCoinsEntry - - A&mount: - 금액: - - - Pay &To: - 지급&수신: - - - Enter a label for this address to add it to your address book - ë‹¹ì‹ ì˜ ì£¼ì†Œë¡ì— ì´ ì£¼ì†Œë¥¼ 추가하기 위하여 표를 입역하세요 - - - &Label: - 표: - - - Choose previously used address - ì´ì „ì— ì‚¬ìš©í•œ 주소를 ì„ íƒí•˜ì‹­ì‹œì˜¤ - - - This is a normal payment. - í‰ê· ì§€ê¸‰ìž…니다 - - - Alt+A - Alt+A - - - Paste address from clipboard - í´ë¦½ë³´ë“œë¡œ 부터 주소를 ë¶™ì´ì„¸ìš” - - - Alt+P - Alt+P - - - Remove this entry - í•­ëª©ì„ ì§€ìš°ì‹œì˜¤ - - - Message: - 메시지: - - - Enter a label for this address to add it to the list of used addresses - ì‚¬ìš©ëœ ì£¼ì†Œ 목ë¡ì— 새 주소를 추가하기 위해 ì œëª©ì„ ìž…ë ¥í•©ë‹ˆë‹¤. - - - A message that was attached to the bitcoin: URI which will be stored with the transaction for your reference. Note: This message will not be sent over the Bitcoin network. - 비트코ì¸ì— ì²¨ë¶€ëœ ë©”ì‹œì§€: 참고용으로 거래와 함께 ì €ìž¥ë  URI. 메모: ì´ ë©”ì‹œì§€ëŠ” ë¹„íŠ¸ì½”ì¸ ë„¤íŠ¸ì›Œí¬ë¡œ 전송ë˜ì§€ 않습니다. - - - Pay To: - 송금할 ëŒ€ìƒ : - - - Memo: - 메모: - - - - ShutdownWindow - - Bitcoin Core is shutting down... - 비트코ì¸ì½”ì–´ê°€ 닫아지고 있습니다 - - - Do not shut down the computer until this window disappears. - ì°½ì´ ì‚¬ë¼ì§€ê¸° 전까지 컴퓨터를 ë„지마시오. - - - - SignVerifyMessageDialog - - Signatures - Sign / Verify a Message - 서명 - ì‹¸ì¸ / 메시지 í™•ì¸ - - - &Sign Message - 메시지 서명(&S) - - - Choose previously used address - ì´ì „ì— ì‚¬ìš©í•œ 주소를 ì„ íƒí•˜ì‹­ì‹œì˜¤ - - - Alt+A - Alt+A - - - Paste address from clipboard - í´ë¦½ë³´ë“œë¡œ 부터 주소를 ë¶™ì´ì„¸ìš” - - - Alt+P - Alt+P - - - Enter the message you want to sign here - ì—¬ê¸°ì— ì„œëª…í•˜ë ¤ëŠ” 메시지를 입력하십시오 - - - Signature - 서명 - - - Copy the current signature to the system clipboard - 현재 ì„œëª…ì„ ì‹œìŠ¤í…œ í´ë¦½ë³´ë“œì— 복사 - - - Sign the message to prove you own this Bitcoin address - ì—¬ëŸ¬ë¶„ì˜ ë¹„íŠ¸ì½”ì¸ ì£¼ì†Œë¥¼ ì¦ëª…하려면 메시지 서명하십시오 - - - Sign &Message - ë©”ì‹œì§€ì— ì„œëª…(&M) - - - Reset all sign message fields - 메시지 í•„ë“œì˜ ëª¨ë“  서명 재설정 - - - Clear &All - ëª¨ë‘ ì§€ìš°ê¸°(&A) - - - &Verify Message - 메시지 ê²€ì¦(&V) - - - Verify the message to ensure it was signed with the specified Bitcoin address - 정확한 비트코ì¸ì£¼ì†Œê°€ ìž…ë ¥ë¬ëŠ”ì§€ 메시지를 확ì¸í•˜ì‹œì˜¤ - - - Verify &Message - 메시지 ê²€ì¦(&M) - - - Reset all verify message fields - 모든 ê²€ì¦ ë©”ì‹œì§€ 필드 재설정 - - - Click "Sign Message" to generate signature - ì„œëª…ì„ ë§Œë“¤ë ¤ë©´ "메시지 서명"ì„ ëˆ„ë¥´ì‹­ì‹œì˜¤ - - - The entered address is invalid. - 입력한 주소가 잘못ë˜ì—ˆìŠµë‹ˆë‹¤. - - - Please check the address and try again. - 주소를 확ì¸í•˜ê³  다시 시ë„하십시오. - - - The entered address does not refer to a key. - 입력한 주소는 키ì—서 참조하지 않습니다. - - - Wallet unlock was cancelled. - 지갑 잠금 해제를 취소했습니다. - - - Private key for the entered address is not available. - 입력한 ì£¼ì†Œì— ëŒ€í•œ ê°œì¸í‚¤ê°€ 없습니다. - - - Message signing failed. - 메시지 ì„œëª…ì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤. - - - Message signed. - 메시지를 서명했습니다. - - - The signature could not be decoded. - ì„œëª…ì„ í•´ë…í•  수 없습니다. - - - Please check the signature and try again. - ì„œëª…ì„ í™•ì¸í•˜ê³  다시 시ë„하십시오. - - - The signature did not match the message digest. - 메시지 다ì´ì œìŠ¤íŠ¸ì™€ ì„œëª…ì´ ì¼ì¹˜í•˜ì§€ 않습니다. - - - Message verification failed. - 메시지 ê²€ì¦ì— 실패했습니다. - - - Message verified. - 메시지를 ê²€ì¦í–ˆìŠµë‹ˆë‹¤. - - - - SplashScreen - - Bitcoin Core - ë¹„íŠ¸ì½”ì¸ ì½”ì–´ - - - The Bitcoin Core developers - 비트코ì¸ì½”ì–´ 개발ìžë“¤ - - - [testnet] - [테스트넷] - - - - TrafficGraphWidget - - KB/s - KB/s - - - - TransactionDesc - - Open until %1 - %1 까지 열림 - - - conflicted - ì¶©ëŒ - - - %1/offline - %1/오프ë¼ì¸ - - - %1/unconfirmed - %1/ë¯¸í™•ì¸ - - - %1 confirmations - %1 확ì¸ë¨ - - - Status - ìƒíƒœ - - - Date - ë‚ ì§œ - - - Source - 소스 - - - Generated - ìƒì„±í•˜ë‹¤ - - - From - 으로부터 - - - To - ì—게 - - - own address - ìžì‹ ì˜ 주소 - - - label - ë¼ë²¨ - - - Credit - 예금 - - - not accepted - 허용ë˜ì§€ 않는다 - - - Debit - 차변 - - - Transaction fee - 송금 수수료 - - - Net amount - ì´ì•¡ - - - Message - 메시지 - - - Comment - 설명 - - - Transaction ID - ì•„ì´ë”” - - - Merchant - ìƒì¸ - - - Generated coins must mature %1 blocks before they can be spent. When you generated this block, it was broadcast to the network to be added to the block chain. If it fails to get into the chain, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - ì‹ ê·œ ì±„êµ´ëœ ì½”ì¸ì´ 사용ë˜ê¸° 위해서는 %1 ê°œì˜ ë¸”ëŸ­ì´ ê²½ê³¼ë˜ì–´ì•¼ 합니다. ë¸”ëŸ­ì„ ìƒì„±í•  때 블럭체ì¸ì— 추가ë˜ë„ë¡ ë„¤íŠ¸ì›Œí¬ì— 전파ë˜ëŠ” ê³¼ì •ì„ ê±°ì¹˜ëŠ”ë°, 블럭체ì¸ì— í¬í•¨ë˜ì§€ 못하고 실패한다면 해당 ë¸”ëŸ­ì˜ ìƒíƒœëŠ” '미승ì¸'으로 표현ë˜ê³  ë¹„íŠ¸ì½”ì¸ ë˜í•œ ì‚¬ìš©ë  ìˆ˜ 없습니다. ì´ í˜„ìƒì€ 다른 노드가 비슷한 ì‹œê°„ëŒ€ì— ë™ì‹œì— ë¸”ëŸ­ì„ ìƒì„±í•  때 종종 ë°œìƒí•  수 있습니다. - - - Debug information - 디버깅 ì •ë³´ - - - Transaction - 송금 - - - Inputs - ìž…ë ¥ - - - Amount - 거래량 - - - true - ì°¸ - - - false - ê±°ì§“ - - - , has not been successfully broadcast yet - . ì•„ì§ ì„±ê³µì ìœ¼ë¡œ 통보하지 ì•ŠìŒ - - - unknown - ì•Œìˆ˜ì—†ìŒ - - - - TransactionDescDialog - - Transaction details - 거래 세부 ë‚´ì—­ - - - This pane shows a detailed description of the transaction - ì´ ì°½ì€ ê±°ëž˜ì˜ ì„¸ë¶€ë‚´ì—­ì„ ë³´ì—¬ì¤ë‹ˆë‹¤ - - - - TransactionTableModel - - Date - ë‚ ì§œ - - - Type - 종류 - - - Immature (%1 confirmations, will be available after %2) - 충분히 숙성ë˜ì§€ ì•Šì€ ìƒíƒœ (%1 승ì¸, %2 í›„ì— ì‚¬ìš© 가능합니다) - - - Open until %1 - %1 까지 열림 - - - Confirmed (%1 confirmations) - 확ì¸ë¨(%1 확ì¸ë¨) - - - This block was not received by any other nodes and will probably not be accepted! - ì´ ë¸”ëŸ­ì€ ë‹¤ë¥¸ 노드로부터 받지 않아 허용ë˜ì§€ ì•Šì„ ê²ƒìž„. - - - Generated but not accepted - ìƒì„±ë˜ì—ˆìœ¼ë‚˜ ê±°ì ˆë¨ - - - Offline - 오프ë¼ì¸ - - - Label - 표 - - - Unconfirmed - ë¯¸í™•ì¸ - - - Confirming (%1 of %2 recommended confirmations) - ìŠ¹ì¸ ì¤‘ (권장ë˜ëŠ” ìŠ¹ì¸ íšŒìˆ˜ %2 대비 현재 ìŠ¹ì¸ ìˆ˜ %1) - - - Conflicted - ì¶©ëŒ - - - Received with - 보낸 주소 - - - Received from - 보낸 주소 - - - Sent to - 받는 주소 - - - Payment to yourself - ìžì‹ ì—게 지불 - - - Mined - 채굴 - - - (n/a) - (ì—†ìŒ) - - - Transaction status. Hover over this field to show number of confirmations. - 거래ìƒí™©. 마우스를 올리면 승ì¸íšŸìˆ˜ê°€ 표시ë©ë‹ˆë‹¤. - - - Date and time that the transaction was received. - 거래가 ì´ë£¨ì–´ì§„ 날짜와 시ê°. - - - Type of transaction. - ê±°ëž˜ì˜ ì¢…ë¥˜. - - - Amount removed from or added to balance. - ë³€ê²½ëœ ìž”ê³ . - - - - TransactionView - - All - ì „ì²´ - - - Today - 오늘 - - - This week - ì´ë²ˆì£¼ - - - This month - ì´ë²ˆ 달 - - - Last month - 지난 달 - - - This year - 올 í•´ - - - Range... - 범위... - - - Received with - 보낸 주소 - - - Sent to - 받는 주소 - - - To yourself - ìžê¸°ê±°ëž˜ - - - Mined - 채굴 - - - Other - 기타 - - - Enter address or label to search - 검색하기 위한 주소 ë˜ëŠ” 표 ìž…ë ¥ - - - Min amount - 최소 거래량 - - - Copy address - 주소 복사하기 - - - Copy label - 표 복사하기 - - - Copy amount - 거래량 복사 - - - Copy transaction ID - 거래 ì•„ì´ë”” 복사 - - - Edit label - 표 수정하기 - - - Show transaction details - 거래 ë‚´ì—­ í™•ì¸ - - - Export Transaction History - 거래 ê¸°ë¡ ë‚´ë³´ë‚´ê¸° - - - Exporting Failed - 내보내기 실패 - - - There was an error trying to save the transaction history to %1. - %1으로 거래 기ë¡ì„ ì €ìž¥í•˜ëŠ”ë° ì• ëŸ¬ê°€ 있었습니다. - - - Exporting Successful - 내보내기 성공 - - - The transaction history was successfully saved to %1. - 거래 기ë¡ì´ 성공ì ìœ¼ë¡œ %1ì— ì €ìž¥ë˜ì—ˆìŠµë‹ˆë‹¤. - - - Comma separated file (*.csv) - ê°ê°ì˜ 파ì¼ì— 쉼표하기(*.csv) - - - Confirmed - 확ì¸ë¨ - - - Date - ë‚ ì§œ - - - Type - 종류 - - - Label - 표 - - - Address - 주소 - - - ID - ì•„ì´ë”” - - - Range: - 범위: - - - to - ìƒëŒ€ë°© - - - - UnitDisplayStatusBarControl - - - WalletFrame - - No wallet has been loaded. - 지갑 불러오기가 안ë©ë‹ˆë‹¤ - - - - WalletModel - - Send Coins - ì½”ì¸ë“¤ 보내기 - - - - WalletView - - &Export - &내보내기 - - - Export the data in the current tab to a file - 현재 íƒ­ì— ìžˆëŠ” ë°ì´í„°ë¥¼ 파ì¼ë¡œ 내보내기 - - - Backup Wallet - 지갑 백업 - - - Wallet Data (*.dat) - 지갑 ë°ì´í„°(*.dat) - - - Backup Failed - 백업 실패 - - - There was an error trying to save the wallet data to %1. - 지갑 ë°ì´í„°ë¥¼ %1 í´ë”ì— ì €ìž¥í•˜ëŠ” ë™ì•ˆ 오류가 ë°œìƒí–ˆìŠµë‹ˆë‹¤. - - - The wallet data was successfully saved to %1. - 지갑 ì •ë³´ê°€ %1ì— ì„±ê³µì ìœ¼ë¡œ 저장ë˜ì—ˆìŠµë‹ˆë‹¤ - - - Backup Successful - 백업 성공 - - - - bitcoin-core - - Options: - 옵션: - - - Specify data directory - ë°ì´í„° í´ë” 지정 - - - Connect to a node to retrieve peer addresses, and disconnect - 피어 주소를 받기 위해 ë…¸ë“œì— ì—°ê²°í•˜ê³ , ë°›ì€ í›„ì— ì—°ê²°ì„ ëŠìŠµë‹ˆë‹¤ - - - Specify your own public address - ê³µì¸ ì£¼ì†Œë¥¼ 지정하십시오 - - - Accept command line and JSON-RPC commands - 명령줄과 JSON-RPC 명령 ìˆ˜ë½ - - - Run in the background as a daemon and accept commands - ë°ëª¬ìœ¼ë¡œ 백그ë¼ìš´ë“œì—서 실행하고 ëª…ë ¹ì„ í—ˆìš© - - - Use the test network - 테스트 ë„¤íŠ¸ì›Œí¬ ì‚¬ìš© - - - Accept connections from outside (default: 1 if no -proxy or -connect) - 외부 ì ‘ì†ì„ 승ì¸í•©ë‹ˆë‹¤ - - - Bind to given address and always listen on it. Use [host]:port notation for IPv6 - ì„ íƒëœ 주소로 고정하며 í•­ìƒ ë¦¬ìŠ¨(Listen)합니다. IPv6 í”„ë¡œí† ì½œì¸ ê²½ìš° [host]:port ë°©ì‹ì˜ 명령어 í‘œê¸°ë²•ì„ ì‚¬ìš©í•©ë‹ˆë‹¤. - - - Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) - 지갑 거래가 바뀌면 ëª…ë ¹ì„ ì‹¤í–‰í•©ë‹ˆë‹¤.(%s ì•ˆì˜ ëª…ë ¹ì–´ê°€ TxID로 ë°”ë€ë‹ˆë‹¤) - - - This is a pre-release test build - use at your own risk - do not use for mining or merchant applications - ì´ ë¹Œë“œ ë²„ì „ì€ ì •ì‹ ì¶œì‹œ ì „ í…ŒìŠ¤íŠ¸ì˜ ëª©ì ì´ë©°, 예기치 ì•Šì€ ìœ„í—˜ê³¼ 오류가 ë°œìƒí•  수 있습니다. 채굴과 ìƒì ìš© 소프트웨어로 사용하는 ê²ƒì„ ê¶Œí•˜ì§€ 않습니다. - - - Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. - 경고: -paytxfeeê°’ì´ ë„ˆë¬´ í½ë‹ˆë‹¤! ì´ ê°’ì€ ì†¡ê¸ˆí• ë•Œ 지불할 송금 수수료입니다. - - - Warning: The network does not appear to fully agree! Some miners appear to be experiencing issues. - 경고 : 모든 네트워í¬ê°€ ë™ì˜í•´ì•¼ 하나, ì¼ë¶€ 채굴ìžë“¤ì—게 문제가 있는 것으로 보입니다. - - - Warning: We do not appear to fully agree with our peers! You may need to upgrade, or other nodes may need to upgrade. - 경고: 현재 ë¹„íŠ¸ì½”ì¸ ë²„ì „ì´ ë‹¤ë¥¸ ë„¤íŠ¸ì›Œí¬ ì°¸ì—¬ìžë“¤ê³¼ ë™ì¼í•˜ì§€ 않는 것 같습니다. 당신 ë˜ëŠ” 다른 참여ìžë“¤ì´ ë™ì¼í•œ ë¹„íŠ¸ì½”ì¸ ë²„ì „ìœ¼ë¡œ 업그레ì´ë“œ í•  필요가 있습니다. - - - Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. - 경고 : wallet.dat 파ì¼ì„ ì½ëŠ” 중 ì—러가 ë°œìƒí–ˆìŠµë‹ˆë‹¤. 주소 키는 ëª¨ë‘ ì •í™•í•˜ê²Œ 로딩ë˜ì—ˆìœ¼ë‚˜ 거래 ë°ì´í„°ì™€ ì£¼ì†Œë¡ í•„ë“œì—서 누ë½ì´ë‚˜ 오류가 존재할 수 있습니다. - - - 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. - 경고 : wallet.datê°€ ì†ìƒë˜ì–´ ë°ì´í„°ê°€ 복구ë˜ì—ˆìŠµë‹ˆë‹¤. ì›ëž˜ì˜ wallet.dat 파ì¼ì€ %s í›„ì— wallet.{timestamp}.bak ì´ë¦„으로 저장ë©ë‹ˆë‹¤. 잔액과 거래 ë‚´ì—­ì´ ì •í™•í•˜ì§€ 않다면 백업 파ì¼ë¡œ 부터 ë³µì›í•´ì•¼ 합니다. - - - (default: 1) - (기본값: 1) - - - Attempt to recover private keys from a corrupt wallet.dat - ì†ìƒëœ wallet.datì—서 ê°œì¸í‚¤ ë³µì›ì„ 시ë„합니다 - - - Block creation options: - ë¸”ë¡ ìƒì„± 옵션: - - - Connect only to the specified node(s) - ì§€ì •ëœ ë…¸ë“œì—ë§Œ 연결하기 - - - Connection options: - ì—°ê²° 설정 : - - - Corrupted block database detected - ì†ìƒëœ ë¸”ë¡ ë°ì´í„°ë² ì´ìŠ¤ê°€ ê°ì§€ë˜ì—ˆìŠµë‹ˆë‹¤ - - - Debugging/Testing options: - 디버그 ë° í…ŒìŠ¤íŠ¸ 설정 - - - Do not load the wallet and disable wallet RPC calls - 지갑 불러오기를 하지마시오 ë˜í•œ 지갑 RPC ì—°ê²°ì„ ì°¨ë‹¨í•˜ì‹­ì‹œì˜¤ - - - Do you want to rebuild the block database now? - ë¸”ë½ ë°ì´í„°ë² ì´ìŠ¤ë¥¼ 다시 ìƒì„±í•˜ì‹œê² ìŠµë‹ˆê¹Œ? - - - Error initializing block database - ë¸”ë¡ ë°ì´í„°ë² ì´ìŠ¤ë¥¼ ì´ˆê¸°í™”í•˜ëŠ”ë° ì˜¤ë¥˜ - - - Error loading block database - ë¸”ë¡ ë°ì´í„°ë² ì´ìŠ¤ë¥¼ ë¶ˆëŸ¬ì˜¤ëŠ”ë° ì˜¤ë¥˜ - - - Error opening block database - ë¸”ë¡ ë°ì´í„°ë² ì´ìŠ¤ë¥¼ ì—¬ëŠ”ë° ì˜¤ë¥˜ - - - Error: Disk space is low! - 오류: ë””ìŠ¤í¬ ê³µê°„ì´ ë¶€ì¡±í•©ë‹ˆë‹¤! - - - Failed to listen on any port. Use -listen=0 if you want this. - ì–´ë–¤ í¬íŠ¸ë„ ë°˜ì‘하지 않습니다. ì‚¬ìš©ìž ë°˜ì‘=0 만약 ì›í•œë‹¤ë©´ - - - If <category> is not supplied, output all debugging information. - <카테고리>ê°€ 제공ë˜ì§€ ì•Šì„ ê²½ìš°, 모든 디버깅 정보를 출력 - - - Importing... - 들여오기 중... - - - Incorrect or no genesis block found. Wrong datadir for network? - 올바르지 않거나 ìƒì„±ëœ 블ë¡ì„ ì°¾ì„ ìˆ˜ 없습니다. ìž˜ëª»ëœ ë„¤íŠ¸ì›Œí¬ ìžë£Œ 디렉토리? - - - Invalid -onion address: '%s' - ìž˜ëª»ëœ -onion 주소입니다: '%s' - - - Not enough file descriptors available. - 사용 가능한 íŒŒì¼ ë””ìŠ¤í¬ë¦½í„°-File Descriptor-ê°€ 부족합니다. - - - Set database cache size in megabytes (%d to %d, default: %d) - ë°ì´í„°ë² ì´ìФ 케시 í¬ê¸°ë¥¼ 메가바ì´íŠ¸ë¡œ 설정(%d 부터 %d, 기본값: %d) - - - Set maximum block size in bytes (default: %d) - 최대 ë¸”ë½ í¬ê¸°ë¥¼ Bytes로 지정하세요 (기본: %d) - - - Specify wallet file (within data directory) - ë°ì´í„° í´ë” ì•ˆì— ì§€ê°‘ 파ì¼ì„ ì„ íƒí•˜ì„¸ìš”. - - - Verifying blocks... - ë¸”ë¡ ê²€ì¦ì¤‘... - - - Verifying wallet... - 지갑 ê²€ì¦ì¤‘... - - - Wallet %s resides outside data directory %s - 지갑 %s는 ë°ì´í„° 디렉토리 %s ë°–ì— ìœ„ì¹˜í•©ë‹ˆë‹¤. - - - Wallet options: - 지갑 옵션: - - - You need to rebuild the database using -reindex to change -txindex - -txindex를 바꾸기 위해서는 -reindex를 사용해서 ë°ì´í„°ë² ì´ìŠ¤ë¥¼ 재구성해야 합니다. - - - Imports blocks from external blk000??.dat file - 외부 blk000??.dat 파ì¼ì—서 블ë¡ì„ 가져옵니다. - - - Cannot obtain a lock on data directory %s. Bitcoin Core is probably already running. - ë°ì´í„° 디렉토리 %sì— ë½ì„ 걸 수 없었습니다. ë¹„íŠ¸ì½”ì¸ ì½”ì–´ê°€ ì´ë¯¸ 실행 ì¤‘ì¸ ê²ƒìœ¼ë¡œ 보입니다. - - - Execute command when a relevant alert is received or we see a really long fork (%s in cmd is replaced by message) - ì´ ì‚¬í•­ê³¼ 관련있는 경고가 ë°œìƒí•˜ê±°ë‚˜ 아주 긴 í¬í¬ê°€ ë°œìƒí–ˆì„ 때 명령어를 실행해 주세요. (cmd 명령어 목ë¡ì—서 %s는 메시지로 대체ë©ë‹ˆë‹¤) - - - Set maximum size of high-priority/low-fee transactions in bytes (default: %d) - 최대 í¬ê¸°ë¥¼ 최우선으로 설정 / ë°”ì´íŠ¸ë‹¹ 최소 수수료로 거래(기본값: %d) - - - Choose data directory on startup (default: 0) - 파ì¼ëª©ë¡ì„ ì„ íƒí•˜ì—¬ 시작하시오(기본값: 0) - - - Information - ì •ë³´ - - - Invalid amount for -minrelaytxfee=<amount>: '%s' - 노드로 전달하기 위한 최저 거래 수수료가 부족합니다. - minrelaytxfee=<amount>: '%s' - - - - Invalid amount for -mintxfee=<amount>: '%s' - 최저 거래 수수료가 부족합니다. -mintxfee=<amount>: '%s' - - - RPC SSL options: (see the Bitcoin Wiki for SSL setup instructions) - RPC SSL 옵션: (ë¹„íŠ¸ì½”ì¸ ìœ„í‚¤ì˜ SSL 설정 설명서 참고) - - - RPC server options: - RPC 서버 설정 - - - Send trace/debug info to console instead of debug.log file - ì¶”ì ì˜¤ë¥˜ 정보를 degug.log ìžë£Œë¡œ 보내는 대신 콘솔로 보내기 - - - Set SSL root certificates for payment request (default: -system-) - 지불 ìš”ì²­ì„ ìœ„í•´ SSL 최ìƒìœ„ ì¸ì¦ì„ 설정합니다. (기본값: -system-) - - - Set language, for example "de_DE" (default: system locale) - "de_DE"와 ê°™ì´ ì–¸ì–´ë¥¼ 설정하십시오 (기본값: 시스템 로캘) - - - Show all debugging options (usage: --help -help-debug) - 모든 디버그 설정 보기(설정: --help -help-debug) - - - Show splash screen on startup (default: 1) - 시작시 시작 화면 표시 (기본값: 1) - - - Shrink debug.log file on client startup (default: 1 when no -debug) - í´ë¼ì´ì–¸íЏ 시작시 debug.log íŒŒì¼ ë¹„ìš°ê¸°(기본값: 디버그 안할때 1) - - - Signing transaction failed - 거래를 ì„œëª…í•˜ëŠ”ê²ƒì„ ì‹¤íŒ¨í•˜ì˜€ìŠµë‹ˆë‹¤. - - - Start minimized - 최소화 ìƒíƒœì—서 시작 - - - Transaction amount too small - ê±°ëž˜ëŸ‰ì´ ë„ˆë¬´ ì ìŠµë‹ˆë‹¤ - - - Transaction amounts must be positive - ê±°ëž˜ëŸ‰ì€ ë°˜ë“œì‹œ 정수여야합니다. - - - Transaction too large - 너무 í° ê±°ëž˜ - - - Use UPnP to map the listening port (default: 1 when listening) - UPnP사용하여 ì§€ë„ì—서 í¬íЏ ë°˜ì‘기다리는 중 (기본값: 1 ë°˜ì‘ì´ ìƒê¸°ë©´) - - - Username for JSON-RPC connections - JSON-RPC ì—°ê²°ì— ì‚¬ìš©í•  ì‚¬ìš©ìž ì´ë¦„ - - - Warning - 경고 - - - Zapping all transactions from wallet... - ì§€ê°‘ì˜ ëª¨ë“ ê±°ëž˜ë‚´ì—­ 건너뛰기... - - - on startup - êµ¬ë™ ì¤‘ - - - wallet.dat corrupt, salvage failed - wallet.dat 파ì¼ì´ ì†ìƒë˜ì—ˆê³  복구가 실패하였습니다. - - - Password for JSON-RPC connections - JSON-RPC ì—°ê²°ì— ì‚¬ìš©í•  암호 - - - Execute command when the best block changes (%s in cmd is replaced by block hash) - ìµœê³ ì˜ ë¸”ëŸ­ì´ ë³€í•˜ë©´ ëª…ë ¹ì„ ì‹¤í–‰(cmd ì— ìžˆëŠ” %s 는 블럭 í•´ì‹œì— ì˜í•´ 대체ë˜ì–´ ì§) - - - Upgrade wallet to latest format - ì§€ê°‘ì„ ìµœê·¼ 형ì‹ìœ¼ë¡œ 개선하시오 - - - Rescan the block chain for missing wallet transactions - 누ë½ëœ 지갑 ì†¡ê¸ˆì— ëŒ€í•œ ë¸”ë¡ ì²´ì¸ ë‹¤ì‹œ 검색 - - - Use OpenSSL (https) for JSON-RPC connections - JSON-RPC ì—°ê²°ì— OpenSSL(https) 사용 - - - This help message - ë„ì›€ë§ ë©”ì‹œì§€ìž…ë‹ˆë‹¤ - - - Allow DNS lookups for -addnode, -seednode and -connect - -addnode, -seednode, -connect ì˜µì…˜ì— ëŒ€í•´ DNS íƒìƒ‰ 허용 - - - Loading addresses... - 주소를 불러오는 중... - - - Error loading wallet.dat: Wallet corrupted - wallet.dat 불러오기 ì—러: 지갑 오류 - - - Error loading wallet.dat - wallet.dat 불러오기 ì—러 - - - Invalid -proxy address: '%s' - ìž˜ëª»ëœ -proxy 주소입니다: '%s' - - - Unknown network specified in -onlynet: '%s' - -onlynetì— ì§€ì •í•œ 네트워í¬ë¥¼ 알 수 없습니다: '%s' - - - Cannot resolve -bind address: '%s' - -bind 주소를 확ì¸í•  수 없습니다: '%s' - - - Cannot resolve -externalip address: '%s' - -externalip 주소를 확ì¸í•  수 없습니다: '%s' - - - Invalid amount for -paytxfee=<amount>: '%s' - -paytxfee=<amount>ì— ëŒ€í•œ ì–‘ì´ ìž˜ëª»ë˜ì—ˆìŠµë‹ˆë‹¤: '%s' - - - Insufficient funds - ìžê¸ˆ 부족 - - - Loading block index... - 블럭 ì¸ë±ìŠ¤ë¥¼ 불러오는 중... - - - Add a node to connect to and attempt to keep the connection open - 노드를 추가하여 연결하고 ì—°ê²°ìƒíƒœë¥¼ ê³„ì† ìœ ì§€í•˜ë ¤ê³  시ë„합니다. - - - Loading wallet... - ì§€ê°‘ì„ ë¶ˆëŸ¬ì˜¤ëŠ” 중... - - - Cannot downgrade wallet - ì§€ê°‘ì„ ë‹¤ìš´ê·¸ë ˆì´ë“œ í•  수 없습니다 - - - Cannot write default address - 기본 ê³„ì¢Œì— ê¸°ë¡í•  수 없습니다 - - - Rescanning... - 재검색 중... - - - Done loading - 로딩 완료 - - - Error - 오류 - - - \ No newline at end of file diff --git a/src/qt/locale/bitcoin_ky.ts b/src/qt/locale/bitcoin_ky.ts deleted file mode 100644 index 442d7c5d5..000000000 --- a/src/qt/locale/bitcoin_ky.ts +++ /dev/null @@ -1,330 +0,0 @@ - - - AddressBookPage - - Create a new address - Жаң даректи жаÑоо - - - &Delete - Ó¨&чүрүү - - - - AddressTableModel - - Address - Дарек - - - (no label) - (аты жок) - - - - AskPassphraseDialog - - - BitcoinGUI - - &Transactions - &ТранзакциÑлар - - - &Verify message... - Билдирүүнү &текшерүү... - - - Bitcoin - Bitcoin - - - Wallet - Капчык - - - &File - &Файл - - - &Help - &Жардам - - - Error - Ката - - - Warning - ЭÑкертүү - - - Information - Маалымат - - - Up to date - Жаңыланган - - - - ClientModel - - - CoinControlDialog - - Date - Дата - - - none - жок - - - (no label) - (аты жок) - - - - EditAddressDialog - - &Address - &Дарек - - - - FreespaceChecker - - - HelpMessageDialog - - version - верÑÐ¸Ñ - - - - Intro - - Error - Ката - - - - OpenURIDialog - - - OptionsDialog - - MB - МБ - - - &Network - &Тармак - - - &Port: - &Порт: - - - &Window - &Терезе - - - &OK - &Жарайт - - - &Cancel - &Жокко чыгаруу - - - default - жарыÑланбаган - - - none - жок - - - - OverviewPage - - - PaymentServer - - - PeerTableModel - - - QObject - - - QRImageWidget - - - RPCConsole - - &Information - Маалымат - - - General - Жалпы - - - Name - Ðты - - - &Open - &Ðчуу - - - &Console - &КонÑоль - - - Clear console - КонÑолду тазалоо - - - - ReceiveCoinsDialog - - - ReceiveRequestDialog - - Address - Дарек - - - Message - Билдирүү - - - - RecentRequestsTableModel - - Date - Дата - - - Message - Билдирүү - - - (no label) - (аты жок) - - - - SendCoinsDialog - - Clear &All - &Бардыгын тазалоо - - - S&end - &Жөнөтүү - - - (no label) - (аты жок) - - - - SendCoinsEntry - - Paste address from clipboard - Даректи алмашуу буферинен коюу - - - Message: - Билдирүү: - - - - ShutdownWindow - - - SignVerifyMessageDialog - - Paste address from clipboard - Даректи алмашуу буферинен коюу - - - Clear &All - &Бардыгын тазалоо - - - - SplashScreen - - - TrafficGraphWidget - - - TransactionDesc - - %1/offline - %1/тармакта ÑÐ¼ÐµÑ - - - Date - Дата - - - Message - Билдирүү - - - - TransactionDescDialog - - - TransactionTableModel - - Date - Дата - - - - TransactionView - - Date - Дата - - - Address - Дарек - - - - UnitDisplayStatusBarControl - - - WalletFrame - - - WalletModel - - - WalletView - - - bitcoin-core - - Information - Маалымат - - - Warning - ЭÑкертүү - - - Error - Ката - - - \ No newline at end of file diff --git a/src/qt/locale/bitcoin_la.ts b/src/qt/locale/bitcoin_la.ts deleted file mode 100644 index b1a69c9a9..000000000 --- a/src/qt/locale/bitcoin_la.ts +++ /dev/null @@ -1,1642 +0,0 @@ - - - AddressBookPage - - Create a new address - Crea novam inscriptionem - - - Copy the currently selected address to the system clipboard - Copia inscriptionem iam selectam in latibulum systematis - - - &Copy Address - &Copia Inscriptionem - - - Delete the currently selected address from the list - Dele active selectam inscriptionem ex enumeratione - - - Export the data in the current tab to a file - Exporta data in hac tabella in plicam - - - &Export - &Exporta - - - &Delete - &Dele - - - These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins. - Hae sunt inscriptiones mittendi pensitationes. Semper inspice quantitatem et inscriptionem accipiendi antequam nummos mittis. - - - Copy &Label - Copia &Titulum - - - &Edit - &Muta - - - Comma separated file (*.csv) - Comma Separata Plica (*.csv) - - - - AddressTableModel - - Label - Titulus - - - Address - Inscriptio - - - (no label) - (nullus titulus) - - - - AskPassphraseDialog - - Passphrase Dialog - Dialogus Tesserae - - - Enter passphrase - Insere tesseram - - - New passphrase - Nova tessera - - - Repeat new passphrase - Itera novam tesseram - - - Encrypt wallet - Cifra cassidile - - - This operation needs your wallet passphrase to unlock the wallet. - Huic operationi necesse est tessera cassidili tuo ut cassidile reseret. - - - Unlock wallet - Resera cassidile - - - This operation needs your wallet passphrase to decrypt the wallet. - Huic operationi necesse est tessera cassidili tuo ut cassidile decifret. - - - Decrypt wallet - Decifra cassidile - - - Change passphrase - Muta tesseram - - - Confirm wallet encryption - Confirma cifrationem cassidilis - - - Warning: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR BITCOINS</b>! - Monitio: Si cassidile tuum cifras et tesseram amittis, tu <b>AMITTES OMNES TUOS NUMMOS BITOS</b>! - - - Are you sure you wish to encrypt your wallet? - Certusne es te velle tuum cassidile cifrare? - - - 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. - GRAVE: Oportet ulla prioria conservata quae fecisti de plica tui cassidilis reponi a nove generata cifrata plica cassidilis. Propter securitatem, prioria conservata de plica non cifrata cassidilis inutilia fiet simul atque incipis uti novo cifrato cassidili. - - - Warning: The Caps Lock key is on! - Monitio: Litterae ut capitales seratae sunt! - - - Wallet encrypted - Cassidile cifratum - - - Wallet encryption failed - Cassidile cifrare abortum est - - - Wallet encryption failed due to an internal error. Your wallet was not encrypted. - Cassidile cifrare abortum est propter internum errorem. Tuum cassidile cifratum non est. - - - The supplied passphrases do not match. - Tesserae datae non eaedem sunt. - - - Wallet unlock failed - Cassidile reserare abortum est. - - - The passphrase entered for the wallet decryption was incorrect. - Tessera inserta pro cassidilis decifrando prava erat. - - - Wallet decryption failed - Cassidile decifrare abortum est. - - - Wallet passphrase was successfully changed. - Tessera cassidilis successa est in mutando. - - - - BitcoinGUI - - Sign &message... - Signa &nuntium... - - - Synchronizing with network... - Synchronizans cum rete... - - - &Overview - &Summarium - - - Show general overview of wallet - Monstra generale summarium cassidilis - - - &Transactions - &Transactiones - - - Browse transaction history - Inspicio historiam transactionum - - - E&xit - E&xi - - - Quit application - Exi applicatione - - - About &Qt - Informatio de &Qt - - - Show information about Qt - Monstra informationem de Qt - - - &Options... - &Optiones - - - &Encrypt Wallet... - &Cifra Cassidile... - - - &Backup Wallet... - &Conserva Cassidile... - - - &Change Passphrase... - &Muta tesseram... - - - Importing blocks from disk... - Importans frusta ab disco... - - - Reindexing blocks on disk... - Recreans indicem frustorum in disco... - - - Send coins to a Bitcoin address - Mitte nummos ad inscriptionem Bitcoin - - - Backup wallet to another location - Conserva cassidile in locum alium - - - Change the passphrase used for wallet encryption - Muta tesseram utam pro cassidilis cifrando - - - &Debug window - Fenestra &Debug - - - Open debugging and diagnostic console - Aperi terminalem debug et diagnosticalem - - - &Verify message... - &Verifica nuntium... - - - Bitcoin - Bitcoin - - - Wallet - Cassidile - - - &Send - &Mitte - - - &Receive - &Accipe - - - &Show / Hide - &Monstra/Occulta - - - Show or hide the main Window - Monstra vel occulta Fenestram principem - - - Encrypt the private keys that belong to your wallet - Cifra claves privatas quae cassidili tui sunt - - - Sign messages with your Bitcoin addresses to prove you own them - Signa nuntios cum tuis inscriptionibus Bitcoin ut demonstres te eas possidere - - - Verify messages to ensure they were signed with specified Bitcoin addresses - Verifica nuntios ut certus sis eos signatos esse cum specificatis inscriptionibus Bitcoin - - - &File - &Plica - - - &Settings - &Configuratio - - - &Help - &Auxilium - - - Tabs toolbar - Tabella instrumentorum "Tabs" - - - Bitcoin Core - Bitcoin Nucleus - - - No block source available... - Nulla fons frustorum absens... - - - %1 behind - %1 post - - - Last received block was generated %1 ago. - Postremum acceptum frustum generatum est %1 abhinc. - - - Transactions after this will not yet be visible. - Transactiones post hoc nondum visibiles erunt. - - - Error - Error - - - Warning - Monitio - - - Information - Informatio - - - Up to date - Recentissimo - - - Catching up... - Persequens... - - - Sent transaction - Transactio missa - - - Incoming transaction - Transactio incipiens - - - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - Cassidile <b>cifratum</b> est et iam nunc <b>reseratum</b> - - - Wallet is <b>encrypted</b> and currently <b>locked</b> - Cassidile <b>cifratum</b> est et iam nunc <b>seratum</b> - - - - ClientModel - - Network Alert - Monitio Retis - - - - CoinControlDialog - - Amount: - Quantitas: - - - Amount - Quantitas - - - Date - Dies - - - Confirmed - Confirmatum - - - Copy address - Copia inscriptionem - - - Copy label - Copia titulum - - - Copy amount - Copia quantitatem - - - Copy transaction ID - Copia transactionis ID - - - (no label) - (nullus titulus) - - - - EditAddressDialog - - Edit Address - Muta Inscriptionem - - - &Label - &Titulus - - - &Address - &Inscriptio - - - New receiving address - Nova inscriptio accipiendi - - - New sending address - Nova inscriptio mittendi - - - Edit receiving address - Muta inscriptionem accipiendi - - - Edit sending address - Muta inscriptionem mittendi - - - The entered address "%1" is already in the address book. - Inserta inscriptio "%1" iam in libro inscriptionum est. - - - The entered address "%1" is not a valid Bitcoin address. - Inscriptio inserta "%1" non valida inscriptio Bitcoin est. - - - Could not unlock wallet. - Non potuisse cassidile reserare - - - New key generation failed. - Generare novam clavem abortum est. - - - - FreespaceChecker - - - HelpMessageDialog - - Bitcoin Core - Bitcoin Nucleus - - - version - versio - - - Command-line options - Optiones mandati initiantis - - - Usage: - Usus: - - - command-line options - Optiones mandati intiantis - - - - Intro - - Bitcoin Core - Bitcoin Nucleus - - - Error - Error - - - - OpenURIDialog - - - OptionsDialog - - Options - Optiones - - - &Main - &Princeps - - - Reset all client options to default. - Reconstitue omnes optiones clientis ad praedefinita. - - - &Reset Options - &Reconstitue Optiones - - - &Network - &Rete - - - Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled. - Aperi per se portam clientis Bitcoin in itineratore. Hoc tantum effectivum est si itineratrum tuum supportat UPnP et id activum est. - - - Map port using &UPnP - Designa portam utendo &UPnP - - - Proxy &IP: - &IP vicarii: - - - &Port: - &Porta: - - - Port of the proxy (e.g. 9050) - Porta vicarii (e.g. 9050) - - - &Window - &Fenestra - - - Show only a tray icon after minimizing the window. - Monstra tantum iconem in tabella systematis postquam fenestram minifactam est. - - - &Minimize to the tray instead of the taskbar - &Minifac in tabellam systematis potius quam applicationum - - - M&inimize on close - M&inifac ad claudendum - - - &Display - &UI - - - User Interface &language: - &Lingua monstranda utenti: - - - &Unit to show amounts in: - &Unita qua quantitates monstrare: - - - Choose the default subdivision unit to show in the interface and when sending coins. - Selige praedefinitam unitam subdivisionis monstrare in interfacie et quando nummos mittere - - - &OK - &OK - - - &Cancel - &Cancella - - - default - praedefinitum - - - Confirm options reset - Confirma optionum reconstituere - - - The supplied proxy address is invalid. - Inscriptio vicarii tradita non valida est. - - - - OverviewPage - - Form - Schema - - - The displayed information may be out of date. Your wallet automatically synchronizes with the Bitcoin network after a connection is established, but this process has not completed yet. - Monstrata informatio fortasse non recentissima est. Tuum cassidile per se synchronizat cum rete Bitcoin postquam conexio constabilita est, sed hoc actio nondum perfecta est. - - - Immature: - Immatura: - - - Mined balance that has not yet matured - Fossum pendendum quod nondum maturum est - - - - PaymentServer - - URI handling - Tractatio URI - - - Cannot start bitcoin: click-to-pay handler - Bitcoin incipere non potest: cliccare-ad-pensandum handler - - - - PeerTableModel - - - QObject - - Amount - Quantitas - - - N/A - N/A - - - - QRImageWidget - - Save QR Code - Salva codicem QR - - - - RPCConsole - - Client name - Nomen clientis - - - N/A - N/A - - - Client version - Versio clientis - - - &Information - &Informatio - - - Using OpenSSL version - Utens OpenSSL versione - - - Startup time - Tempus initiandi - - - Network - Rete - - - Number of connections - Numerus conexionum - - - Block chain - Catena frustorum - - - Current number of blocks - Numerus frustorum iam nunc - - - Last block time - Hora postremi frusti - - - &Open - &Aperi - - - &Console - &Terminale - - - Build date - Dies aedificandi - - - Debug log file - Debug catalogi plica - - - Clear console - Vacuefac terminale - - - Use up and down arrows to navigate history, and <b>Ctrl-L</b> to clear screen. - Utere sagittis sursum deorsumque ut per historiam naviges, et <b>Ctrl+L</b> ut scrinium vacuefacias. - - - Type <b>help</b> for an overview of available commands. - Scribe <b>help</b> pro summario possibilium mandatorum. - - - - ReceiveCoinsDialog - - &Label: - &Titulus: - - - Copy label - Copia titulum - - - Copy amount - Copia quantitatem - - - - ReceiveRequestDialog - - Address - Inscriptio - - - Amount - Quantitas - - - Label - Titulus - - - Message - Nuntius - - - Resulting URI too long, try to reduce the text for label / message. - Resultato URI nimis longo, conare minuere verba pro titulo / nuntio. - - - Error encoding URI into QR Code. - Error codificandi URI in codicem QR. - - - - RecentRequestsTableModel - - Date - Dies - - - Label - Titulus - - - Message - Nuntius - - - Amount - Quantitas - - - (no label) - (nullus titulus) - - - - SendCoinsDialog - - Send Coins - Mitte Nummos - - - Amount: - Quantitas: - - - Send to multiple recipients at once - Mitte pluribus accipientibus simul - - - Add &Recipient - Adde &Accipientem - - - Clear &All - Vacuefac &Omnia - - - Balance: - Pendendum: - - - Confirm the send action - Confirma actionem mittendi - - - S&end - &Mitte - - - Confirm send coins - Confirma mittendum nummorum - - - Copy amount - Copia quantitatem - - - The amount to pay must be larger than 0. - Oportet quantitatem ad pensandum maiorem quam 0 esse. - - - The amount exceeds your balance. - Quantitas est ultra quod habes. - - - The total exceeds your balance when the %1 transaction fee is included. - Quantitas est ultra quod habes cum merces transactionis %1 includitur. - - - (no label) - (nullus titulus) - - - - SendCoinsEntry - - A&mount: - &Quantitas: - - - Pay &To: - Pensa &Ad: - - - Enter a label for this address to add it to your address book - Insero titulum huic inscriptioni ut eam in tuum librum inscriptionum addas. - - - &Label: - &Titulus: - - - Alt+A - Alt+A - - - Paste address from clipboard - Glutina inscriptionem ex latibulo - - - Alt+P - Alt+P - - - Message: - Nuntius: - - - - ShutdownWindow - - - SignVerifyMessageDialog - - Signatures - Sign / Verify a Message - Signationes - Signa / Verifica nuntium - - - &Sign Message - &Signa Nuntium - - - Alt+A - Alt+A - - - Paste address from clipboard - Glutina inscriptionem ex latibulo - - - Alt+P - Alt+P - - - Enter the message you want to sign here - Insere hic nuntium quod vis signare - - - Signature - Signatio - - - Copy the current signature to the system clipboard - Copia signationem in latibulum systematis - - - Sign the message to prove you own this Bitcoin address - Signa nuntium ut demonstres hanc inscriptionem Bitcoin a te possessa esse - - - Sign &Message - Signa &Nuntium - - - Reset all sign message fields - Reconstitue omnes campos signandi nuntii - - - Clear &All - Vacuefac &Omnia - - - &Verify Message - &Verifica Nuntium - - - Verify the message to ensure it was signed with the specified Bitcoin address - Verifica nuntium ut cures signatum esse cum specifica inscriptione Bitcoin - - - Verify &Message - Verifica &Nuntium - - - Reset all verify message fields - Reconstitue omnes campos verificandi nuntii - - - Click "Sign Message" to generate signature - Clicca "Signa Nuntium" ut signatio generetur - - - The entered address is invalid. - Inscriptio inserta non valida est. - - - Please check the address and try again. - Sodes inscriptionem proba et rursus conare. - - - The entered address does not refer to a key. - Inserta inscriptio clavem non refert. - - - Wallet unlock was cancelled. - Cassidilis reserare cancellatum est. - - - Private key for the entered address is not available. - Clavis privata absens est pro inserta inscriptione. - - - Message signing failed. - Nuntium signare abortum est. - - - Message signed. - Nuntius signatus. - - - The signature could not be decoded. - Signatio decodificari non potuit. - - - Please check the signature and try again. - Sodes signationem proba et rursus conare. - - - The signature did not match the message digest. - Signatio non convenit digesto nuntii - - - Message verification failed. - Nuntium verificare abortum est. - - - Message verified. - Nuntius verificatus. - - - - SplashScreen - - Bitcoin Core - Bitcoin Nucleus - - - [testnet] - [testnet] - - - - TrafficGraphWidget - - - TransactionDesc - - Open until %1 - Apertum donec %1 - - - %1/offline - %1/non conecto - - - %1/unconfirmed - %1/non confirmata - - - %1 confirmations - %1 confirmationes - - - Status - Status - - - Date - Dies - - - Source - Fons - - - Generated - Generatum - - - From - Ab - - - To - Ad - - - own address - inscriptio propria - - - label - titulus - - - Credit - Creditum - - - not accepted - non acceptum - - - Debit - Debitum - - - Transaction fee - Transactionis merces - - - Net amount - Cuncta quantitas - - - Message - Nuntius - - - Comment - Annotatio - - - Transaction ID - ID transactionis - - - Debug information - Informatio de debug - - - Transaction - Transactio - - - Inputs - Lectenda - - - Amount - Quantitas - - - true - verum - - - false - falsum - - - , has not been successfully broadcast yet - , nondum prospere disseminatum est - - - unknown - ignotum - - - - TransactionDescDialog - - Transaction details - Particularia transactionis - - - This pane shows a detailed description of the transaction - Haec tabula monstrat descriptionem verbosam transactionis - - - - TransactionTableModel - - Date - Dies - - - Type - Typus - - - Open until %1 - Apertum donec %1 - - - Confirmed (%1 confirmations) - Confirmatum (%1 confirmationes) - - - This block was not received by any other nodes and will probably not be accepted! - Hoc frustum non acceptum est ab ulla alia nodis et probabiliter non acceptum erit! - - - Generated but not accepted - Generatum sed non acceptum - - - Label - Titulus - - - Received with - Acceptum cum - - - Received from - Acceptum ab - - - Sent to - Missum ad - - - Payment to yourself - Pensitatio ad te ipsum - - - Mined - Fossa - - - (n/a) - (n/a) - - - Transaction status. Hover over this field to show number of confirmations. - Status transactionis. Supervola cum mure ut monstretur numerus confirmationum. - - - Date and time that the transaction was received. - Dies et tempus quando transactio accepta est. - - - Type of transaction. - Typus transactionis. - - - Amount removed from or added to balance. - Quantitas remota ex pendendo aut addita ei. - - - - TransactionView - - All - Omne - - - Today - Hodie - - - This week - Hac hebdomade - - - This month - Hoc mense - - - Last month - Postremo mense - - - This year - Hoc anno - - - Range... - Intervallum... - - - Received with - Acceptum cum - - - Sent to - Missum ad - - - To yourself - Ad te ipsum - - - Mined - Fossa - - - Other - Alia - - - Enter address or label to search - Insere inscriptionem vel titulum ut quaeras - - - Min amount - Quantitas minima - - - Copy address - Copia inscriptionem - - - Copy label - Copia titulum - - - Copy amount - Copia quantitatem - - - Copy transaction ID - Copia transactionis ID - - - Edit label - Muta titulum - - - Show transaction details - Monstra particularia transactionis - - - Comma separated file (*.csv) - Comma Separata Plica (*.csv) - - - Confirmed - Confirmatum - - - Date - Dies - - - Type - Typus - - - Label - Titulus - - - Address - Inscriptio - - - ID - ID - - - Range: - Intervallum: - - - to - ad - - - - UnitDisplayStatusBarControl - - - WalletFrame - - - WalletModel - - Send Coins - Mitte Nummos - - - - WalletView - - &Export - &Exporta - - - Export the data in the current tab to a file - Exporta data in hac tabella in plicam - - - Backup Wallet - Conserva cassidile - - - Wallet Data (*.dat) - Data cassidilis (*.dat) - - - Backup Failed - Conservare abortum est. - - - Backup Successful - Successum in conservando - - - - bitcoin-core - - Options: - Optiones: - - - Specify data directory - Specifica indicem datorum - - - Connect to a node to retrieve peer addresses, and disconnect - Conecta ad nodum acceptare inscriptiones parium, et disconecte - - - Specify your own public address - Specifica tuam propriam publicam inscriptionem - - - Accept command line and JSON-RPC commands - Accipe terminalis et JSON-RPC mandata. - - - Run in the background as a daemon and accept commands - Operare infere sicut daemon et mandata accipe - - - Use the test network - Utere rete experimentale - - - Accept connections from outside (default: 1 if no -proxy or -connect) - Accipe conexiones externas (praedefinitum: 1 nisi -proxy neque -connect) - - - Bind to given address and always listen on it. Use [host]:port notation for IPv6 - Conglutina ad inscriptionem datam et semper in eam ausculta. Utere [moderatrum]:porta notationem pro IPv6 - - - Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) - Facere mandatum quotiescumque cassidilis transactio mutet (%s in mandato sbstituitur ab TxID) - - - This is a pre-release test build - use at your own risk - do not use for mining or merchant applications - Hoc est prae-dimittum experimentala aedes - utere eo periculo tuo proprio - nolite utere fodendo vel applicationibus mercatoriis - - - Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. - Monitio: -paytxfee constitutum valde magnum! Hoc est merces transactionis solves si mittis transactionem. - - - Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. - Monitio: error legendo wallet.dat! Omnes claves recte lectae, sed data transactionum vel libri inscriptionum fortasse desint vel prava sint. - - - 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. - Monitio: wallet.data corrupta, data salvata! Originalis wallet.dat salvata ut wallet.{timestamp}.bak in %s; si pendendum tuum vel transactiones pravae sunt, oportet ab conservato restituere. - - - Attempt to recover private keys from a corrupt wallet.dat - Conare recipere claves privatas de corrupto wallet.dat - - - Block creation options: - Optiones creandi frustorum: - - - Connect only to the specified node(s) - Conecte sole ad nodos specificatos (vel nodum specificatum) - - - Corrupted block database detected - Corruptum databasum frustorum invenitur - - - Do you want to rebuild the block database now? - Visne reficere databasum frustorum iam? - - - Error initializing block database - Error initiando databasem frustorum - - - Error initializing wallet database environment %s! - Error initiando systematem databasi cassidilis %s! - - - Error loading block database - Error legendo frustorum databasem - - - Error opening block database - Error aperiendo databasum frustorum - - - Error: Disk space is low! - Error: Inopia spatii disci! - - - Failed to listen on any port. Use -listen=0 if you want this. - Non potuisse auscultare in ulla porta. Utere -listen=0 si hoc vis. - - - Not enough file descriptors available. - Inopia descriptorum plicarum. - - - Verifying blocks... - Verificante frusta... - - - Verifying wallet... - Verificante cassidilem... - - - Imports blocks from external blk000??.dat file - Importat frusta ab externa plica blk000??.dat - - - Information - Informatio - - - Invalid amount for -minrelaytxfee=<amount>: '%s' - Quantitas non valida pro -minrelaytxfee=<amount>: '%s' - - - Invalid amount for -mintxfee=<amount>: '%s' - Quantitas non valida pro -mintxfee=<amount>: '%s' - - - Send trace/debug info to console instead of debug.log file - Mitte informationem vestigii/debug ad terminale potius quam plicam debug.log - - - Set language, for example "de_DE" (default: system locale) - Constitue linguam, exempli gratia "de_DE" (praedefinitum: lingua systematis) - - - Show splash screen on startup (default: 1) - Monstra principem imaginem ad initium (praedefinitum: 1) - - - Shrink debug.log file on client startup (default: 1 when no -debug) - Diminue plicam debug.log ad initium clientis (praedefinitum: 1 nisi -debug) - - - Signing transaction failed - Signandum transactionis abortum est - - - Start minimized - Incipe minifactum ut icon - - - Transaction amount too small - Magnitudo transactionis nimis parva - - - Transaction amounts must be positive - Necesse est magnitudines transactionum positivas esse. - - - Transaction too large - Transactio nimis magna - - - Use UPnP to map the listening port (default: 1 when listening) - Utere UPnP designare portam auscultandi (praedefinitum: 1 quando auscultans) - - - Username for JSON-RPC connections - Nomen utentis pro conexionibus JSON-RPC - - - Warning - Monitio - - - wallet.dat corrupt, salvage failed - wallet.dat corrupta, salvare abortum est - - - Password for JSON-RPC connections - Tessera pro conexionibus JSON-RPC - - - Execute command when the best block changes (%s in cmd is replaced by block hash) - Pelle mandatum quando optissimum frustum mutat (%s in mandato substituitur ab hash frusti) - - - Upgrade wallet to latest format - Progredere cassidile ad formam recentissimam - - - Rescan the block chain for missing wallet transactions - Iterum perlege catenam frustorum propter absentes cassidilis transactiones - - - Use OpenSSL (https) for JSON-RPC connections - Utere OpenSSL (https) pro conexionibus JSON-RPC - - - This help message - Hic nuntius auxilii - - - Allow DNS lookups for -addnode, -seednode and -connect - Permitte quaerenda DNS pro -addnode, -seednode, et -connect - - - Loading addresses... - Legens inscriptiones... - - - Error loading wallet.dat: Wallet corrupted - Error legendi wallet.dat: Cassidile corruptum - - - Error loading wallet.dat - Error legendi wallet.dat - - - Invalid -proxy address: '%s' - Inscriptio -proxy non valida: '%s' - - - Unknown network specified in -onlynet: '%s' - Ignotum rete specificatum in -onlynet: '%s' - - - Cannot resolve -bind address: '%s' - Non posse resolvere -bind inscriptonem: '%s' - - - Cannot resolve -externalip address: '%s' - Non posse resolvere -externalip inscriptionem: '%s' - - - Invalid amount for -paytxfee=<amount>: '%s' - Quantitas non valida pro -paytxfee=<quantitas>: '%s' - - - Insufficient funds - Inopia nummorum - - - Loading block index... - Legens indicem frustorum... - - - Add a node to connect to and attempt to keep the connection open - Adice nodum cui conectere et conare sustinere conexionem apertam - - - Loading wallet... - Legens cassidile... - - - Cannot downgrade wallet - Non posse cassidile regredi - - - Cannot write default address - Non posse scribere praedefinitam inscriptionem - - - Rescanning... - Iterum perlegens... - - - Done loading - Completo lengendi - - - Error - Error - - - \ No newline at end of file diff --git a/src/qt/locale/bitcoin_lt.ts b/src/qt/locale/bitcoin_lt.ts deleted file mode 100644 index 4e468911d..000000000 --- a/src/qt/locale/bitcoin_lt.ts +++ /dev/null @@ -1,1746 +0,0 @@ - - - AddressBookPage - - Right-click to edit address or label - SpustelÄ—kite deÅ¡inįjį klaviÅ¡a norint keisti adresÄ… arba etiketÄ™ - - - Create a new address - Sukurti naujÄ… adresÄ… - - - &New - &Naujas - - - Copy the currently selected address to the system clipboard - Kopijuoti esamÄ… adresÄ… į mainų atmintį - - - &Copy - &Kopijuoti - - - C&lose - &Užverti - - - &Copy Address - &Kopijuoti adresÄ… - - - Delete the currently selected address from the list - IÅ¡trinti pasirinktÄ… adresÄ… iÅ¡ sÄ…raÅ¡o - - - &Export - &Eksportuoti - - - &Delete - &Trinti - - - Choose the address to send coins to - Pasirinkite adresÄ… kuriam siÅ«site monetas - - - C&hoose - P&asirinkti - - - Sending addresses - SiunÄiami adresai - - - Receiving addresses - Gaunami adresai - - - Copy &Label - Kopijuoti ž&ymÄ™ - - - &Edit - &Keisti - - - Export Address List - Eksportuoti adresų sÄ…rašą - - - Comma separated file (*.csv) - Kableliais atskirtų duomenų failas (*.csv) - - - Exporting Failed - Eksportavimas nepavyko - - - There was an error trying to save the address list to %1. Please try again. - Bandant iÅ¡saugoti adresų sÄ…rašą - įvyko klaida keliant į %1. PraÅ¡ome bandyti dar kartÄ…. - - - - AddressTableModel - - Label - ŽymÄ— - - - Address - Adresas - - - (no label) - (nÄ—ra žymÄ—s) - - - - AskPassphraseDialog - - Passphrase Dialog - SlaptafrazÄ—s dialogas - - - Enter passphrase - Ä®vesti slaptafrazÄ™ - - - New passphrase - Nauja slaptafrazÄ— - - - Repeat new passphrase - Pakartokite naujÄ… slaptafrazÄ™ - - - Encrypt wallet - Užšifruoti piniginÄ™ - - - This operation needs your wallet passphrase to unlock the wallet. - Å i operacija reikalauja jÅ«sų piniginÄ—s slaptafrazÄ—s jai atrakinti. - - - Unlock wallet - Atrakinti piniginÄ™ - - - This operation needs your wallet passphrase to decrypt the wallet. - Å i operacija reikalauja jÅ«sų piniginÄ—s slaptafrazÄ—s jai iššifruoti. - - - Decrypt wallet - Iššifruoti piniginÄ™ - - - Change passphrase - Pakeisti slaptafrazÄ™ - - - Confirm wallet encryption - Patvirtinkite piniginÄ—s užšifravimÄ… - - - Warning: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR BITCOINS</b>! - DÄ—mesio: jei užšifruosite savo piniginÄ™ ir pamesite slaptafrazÄ™, jÅ«s<b>PRARASITE VISUS SAVO BITCOINUS</b>! - - - Are you sure you wish to encrypt your wallet? - Ar tikrai norite Å¡ifruoti savo piniginÄ™? - - - Warning: The Caps Lock key is on! - Ä®spÄ—jimas: įjungtas Caps Lock klaviÅ¡as! - - - Wallet encrypted - PiniginÄ— užšifruota - - - Wallet encryption failed - Nepavyko užšifruoti piniginÄ™ - - - Wallet encryption failed due to an internal error. Your wallet was not encrypted. - DÄ—l vidinÄ—s klaidos nepavyko užšifruoti piniginÄ™.PiniginÄ— neužšifruota. - - - The supplied passphrases do not match. - Ä®vestos slaptafrazÄ—s nesutampa. - - - Wallet unlock failed - Nepavyko atrakinti piniginÄ™ - - - The passphrase entered for the wallet decryption was incorrect. - Neteisingai įvestas slaptažodis piniginÄ—s iššifravimui. - - - Wallet decryption failed - Nepavyko iššifruoti piniginÄ—s - - - Wallet passphrase was successfully changed. - PiniginÄ—s slaptažodis sÄ—kmingai pakeistas. - - - - BitcoinGUI - - Sign &message... - PasiraÅ¡yti ži&nutÄ™... - - - Synchronizing with network... - Sinchronizavimas su tinklu ... - - - &Overview - &Apžvalga - - - Node - TaÅ¡kas - - - Show general overview of wallet - Rodyti piniginÄ—s bendrÄ… apžvalgÄ… - - - &Transactions - &Sandoriai - - - Browse transaction history - Apžvelgti sandorių istorijÄ… - - - E&xit - &IÅ¡eiti - - - Quit application - IÅ¡jungti programÄ… - - - About &Qt - Apie &Qt - - - Show information about Qt - Rodyti informacijÄ… apie Qt - - - &Options... - &Parinktys... - - - &Encrypt Wallet... - &Užšifruoti piniginÄ™... - - - &Backup Wallet... - &Backup piniginÄ™... - - - &Change Passphrase... - &Keisti slaptafrazÄ™... - - - &Sending addresses... - &SiunÄiami adresai... - - - &Receiving addresses... - &Gaunami adresai... - - - Open &URI... - Atidaryti &URI... - - - Bitcoin Core client - Bitcoin Core klientas - - - Importing blocks from disk... - Blokai importuojami iÅ¡ disko... - - - Reindexing blocks on disk... - Blokai iÅ¡ naujo indeksuojami... - - - Send coins to a Bitcoin address - Siųsti monetas Bitcoin adresui - - - Backup wallet to another location - Daryti piniginÄ—s atsarginÄ™ kopijÄ… - - - Change the passphrase used for wallet encryption - Pakeisti slaptafrazÄ™ naudojamÄ… piniginÄ—s užšifravimui - - - &Debug window - &Derinimo langas - - - Open debugging and diagnostic console - Atverti derinimo ir diagnostikos konsolÄ™ - - - &Verify message... - &Tikrinti žinutÄ™... - - - Bitcoin - Bitcoin - - - Wallet - PiniginÄ— - - - &Send - &Siųsti - - - &Receive - &Gauti - - - Show information about Bitcoin Core - Rodyti informacijÄ… apie Bitcoin Core - - - &Show / Hide - &Rodyti / SlÄ—pti - - - Show or hide the main Window - Rodyti arba slÄ—pti pagrindinį langÄ… - - - Encrypt the private keys that belong to your wallet - Užšifruoti privaÄius raktus, kurie priklauso jÅ«sų piniginei - - - &File - &Failas - - - &Settings - &Nustatymai - - - &Help - &Pagalba - - - Tabs toolbar - Kortelių įrankinÄ— - - - Bitcoin Core - Bitcoin branduolys - - - &About Bitcoin Core - &Apie Bitcoin Core - - - Error - Klaida - - - Warning - Ä®spÄ—jimas - - - Information - Informacija - - - Up to date - Atnaujinta - - - Catching up... - Vejamasi... - - - Sent transaction - Sandoris nusiųstas - - - Incoming transaction - Ateinantis sandoris - - - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - PiniginÄ— <b>užšifruota</b> ir Å¡iuo metu <b>atrakinta</b> - - - Wallet is <b>encrypted</b> and currently <b>locked</b> - PiniginÄ— <b>užšifruota</b> ir Å¡iuo metu <b>užrakinta</b> - - - - ClientModel - - Network Alert - Tinklo įspÄ—jimas - - - - CoinControlDialog - - Coin Selection - Monetų pasirinkimas - - - Quantity: - Kiekis: - - - Bytes: - Baitai: - - - Amount: - Suma: - - - Priority: - Pirmumas: - - - Fee: - Mokestis: - - - After Fee: - Po mokesÄio: - - - Change: - Graža: - - - (un)select all - (ne)pasirinkti viskÄ… - - - Tree mode - Medžio režimas - - - List mode - SÄ…raÅ¡o režimas - - - Amount - Suma - - - Date - Data - - - Confirmations - Patvirtinimai - - - Confirmed - Patvirtintas - - - Priority - Pirmumas - - - Copy address - Kopijuoti adresÄ… - - - Copy label - Kopijuoti žymÄ™ - - - Copy amount - Kopijuoti sumÄ… - - - Copy quantity - Kopijuoti kiekį - - - Copy fee - Kopijuoti mokestį - - - Copy after fee - Kopijuoti po mokesÄio - - - Copy bytes - Kopijuoti baitus - - - Copy priority - Kopijuoti pirmumÄ… - - - highest - auksÄiausias - - - higher - aukÅ¡tesnis - - - high - aukÅ¡tas - - - medium-high - vidutiniÅ¡kai aukÅ¡tas - - - medium - vidutiniÅ¡kai - - - low-medium - žemai-vidutiniÅ¡kas - - - low - žemas - - - lower - žemesnis - - - lowest - žemiausias - - - none - niekas - - - yes - taip - - - no - ne - - - (no label) - (nÄ—ra žymÄ—s) - - - - EditAddressDialog - - Edit Address - Keisti adresÄ… - - - &Label - Ž&ymÄ— - - - &Address - &Adresas - - - New receiving address - Naujas gavimo adresas - - - New sending address - Naujas siuntimo adresas - - - Edit receiving address - Keisti gavimo adresÄ… - - - Edit sending address - Keisti siuntimo adresÄ… - - - The entered address "%1" is already in the address book. - Ä®vestas adresas „%1“ jau yra adresų knygelÄ—je. - - - The entered address "%1" is not a valid Bitcoin address. - Ä®vestas adresas „%1“ nÄ—ra galiojantis Bitcoin adresas. - - - Could not unlock wallet. - Nepavyko atrakinti piniginÄ—s. - - - New key generation failed. - Naujo rakto generavimas nepavyko. - - - - FreespaceChecker - - name - pavadinimas - - - - HelpMessageDialog - - Bitcoin Core - Bitcoin branduolys - - - version - versija - - - About Bitcoin Core - Apie Bitcoin Core - - - Command-line options - KomandinÄ—s eilutÄ—s parametrai - - - Usage: - Naudojimas: - - - command-line options - komandinÄ—s eilutÄ—s parametrai - - - - Intro - - Welcome - Sveiki - - - Welcome to Bitcoin Core. - Sveiki atvykÄ™ į Bitcoin Core. - - - Bitcoin Core - Bitcoin branduolys - - - Error - Klaida - - - - OpenURIDialog - - - OptionsDialog - - Options - Parinktys - - - &Main - &PagrindinÄ—s - - - &Network - &Tinklas - - - Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled. - AutomatiÅ¡kai atidaryti Bitcoin kliento prievadÄ… marÅ¡rutizatoriuje. Tai veikia tik tada, kai jÅ«sų marÅ¡rutizatorius palaiko UPnP ir ji įjungta. - - - Map port using &UPnP - Persiųsti prievadÄ… naudojant &UPnP - - - Proxy &IP: - Tarpinio serverio &IP: - - - &Port: - &Prievadas: - - - Port of the proxy (e.g. 9050) - Tarpinio serverio preivadas (pvz, 9050) - - - &Window - &Langas - - - Show only a tray icon after minimizing the window. - Po programos lango sumažinimo rodyti tik programos ikonÄ…. - - - &Minimize to the tray instead of the taskbar - &M sumažinti langÄ… bet ne užduoÄių juostÄ… - - - M&inimize on close - &Sumažinti uždarant - - - &Display - &Rodymas - - - User Interface &language: - Naudotojo sÄ…sajos &kalba: - - - &Unit to show amounts in: - &Vienetai, kuriais rodyti sumas: - - - Choose the default subdivision unit to show in the interface and when sending coins. - Rodomų ir siunÄiamų monetų kiekio matavimo vienetai - - - &OK - &Gerai - - - &Cancel - &AtÅ¡aukti - - - default - numatyta - - - none - niekas - - - Confirm options reset - Patvirtinti nustatymų atstatymÄ… - - - The supplied proxy address is invalid. - Nurodytas tarpinio serverio adresas negalioja. - - - - OverviewPage - - Form - Forma - - - Available: - Galimi: - - - Pending: - Laukiantys: - - - Immature: - NepribrendÄ™: - - - Total: - Viso: - - - Your current total balance - JÅ«sų balansas - - - - PaymentServer - - URI handling - URI apdorojimas - - - Payment request rejected - MokÄ—jimo siuntimas atmestas - - - Network request error - Tinklo užklausos klaida - - - - PeerTableModel - - - QObject - - Amount - Suma - - - %1 h - %1 h - - - %1 m - %1 m - - - N/A - nÄ—ra - - - - QRImageWidget - - Save QR Code - Ä®raÅ¡yti QR kodÄ… - - - - RPCConsole - - Client name - Kliento pavadinimas - - - N/A - nÄ—ra - - - Client version - Kliento versija - - - &Information - &Informacija - - - Using OpenSSL version - Naudojama OpenSSL versija - - - Startup time - Paleidimo laikas - - - Network - Tinklas - - - Number of connections - Prisijungimų kiekis - - - Block chain - Blokų grandinÄ— - - - Current number of blocks - Dabartinis blokų skaiÄius - - - Received - Gauta - - - Direction - Kryptis - - - Version - Versija - - - Bytes Sent - Nusiųsti baitai - - - Bytes Received - Gauti baitai - - - Last block time - Paskutinio bloko laikas - - - &Open - &Atverti - - - &Console - &KonsolÄ— - - - Totals - Viso: - - - Build date - Kompiliavimo data - - - Debug log file - Derinimo žurnalo failas - - - Clear console - IÅ¡valyti konsolÄ™ - - - %1 B - %1 B - - - %1 KB - %1 KB - - - %1 MB - %1 MB - - - %1 GB - %1 GB - - - never - Niekada - - - - ReceiveCoinsDialog - - &Label: - Ž&ymÄ—: - - - Clear - IÅ¡valyti - - - Copy label - Kopijuoti žymÄ™ - - - Copy amount - Kopijuoti sumÄ… - - - - ReceiveRequestDialog - - QR Code - QR kodas - - - Payment information - MokÄ—jimo informacija - - - Address - Adresas - - - Amount - Suma - - - Label - ŽymÄ— - - - Message - ŽinutÄ— - - - Error encoding URI into QR Code. - Klaida, koduojant URI į QR kodÄ…. - - - - RecentRequestsTableModel - - Date - Data - - - Label - ŽymÄ— - - - Message - ŽinutÄ— - - - Amount - Suma - - - (no label) - (nÄ—ra žymÄ—s) - - - - SendCoinsDialog - - Send Coins - Siųsti monetas - - - Quantity: - Kiekis: - - - Bytes: - Baitai: - - - Amount: - Suma: - - - Priority: - Pirmumas: - - - Fee: - Mokestis: - - - After Fee: - Po mokesÄio: - - - Change: - Graža: - - - Send to multiple recipients at once - Siųsti keliems gavÄ—jams vienu metu - - - Add &Recipient - &A PridÄ—ti gavÄ—jÄ… - - - Clear &All - IÅ¡valyti &viskÄ… - - - Balance: - Balansas: - - - Confirm the send action - Patvirtinti siuntimo veiksmÄ… - - - S&end - &Siųsti - - - Confirm send coins - Patvirtinti monetų siuntimÄ… - - - Copy quantity - Kopijuoti kiekį - - - Copy amount - Kopijuoti sumÄ… - - - Copy fee - Kopijuoti mokestį - - - Copy after fee - Kopijuoti po mokesÄio - - - Copy bytes - Kopijuoti baitus - - - Copy priority - Kopijuoti pirmumÄ… - - - The amount to pay must be larger than 0. - ApmokÄ—jimo suma turi bÅ«ti didesnÄ— nei 0. - - - The amount exceeds your balance. - Suma virÅ¡ija jÅ«sų balansÄ…. - - - The total exceeds your balance when the %1 transaction fee is included. - Jei pridedame sandorio mokestį %1 bendra suma virÅ¡ija jÅ«sų balansÄ…. - - - (no label) - (nÄ—ra žymÄ—s) - - - - SendCoinsEntry - - A&mount: - Su&ma: - - - Pay &To: - MokÄ—ti &gavÄ—jui: - - - Enter a label for this address to add it to your address book - Ä®veskite žymÄ™ Å¡iam adresui kad galÄ—tumÄ—te įtraukti jÄ… į adresų knygelÄ™ - - - &Label: - Ž&ymÄ—: - - - Alt+A - Alt+A - - - Paste address from clipboard - Ä®vesti adresÄ… iÅ¡ mainų atminties - - - Alt+P - Alt+P - - - Message: - ŽinutÄ—: - - - - ShutdownWindow - - - SignVerifyMessageDialog - - &Sign Message - &PasiraÅ¡yti žinutÄ™ - - - Alt+A - Alt+A - - - Paste address from clipboard - Ä®vesti adresÄ… iÅ¡ mainų atminties - - - Alt+P - Alt+P - - - Enter the message you want to sign here - Ä®veskite praneÅ¡imÄ…, kurį norite pasiraÅ¡yti Äia - - - Sign the message to prove you own this Bitcoin address - Registruotis žinute įrodymuii, kad turite šį adresÄ… - - - Sign &Message - Registruoti praneÅ¡i&mÄ… - - - Clear &All - IÅ¡valyti &viskÄ… - - - &Verify Message - &Patikrinti žinutÄ™ - - - Verify the message to ensure it was signed with the specified Bitcoin address - Patikrinkite žinutÄ™, jog įsitikintumÄ—te, kad jÄ… pasirašė nurodytas Bitcoin adresas - - - Click "Sign Message" to generate signature - SpragtelÄ—kite "Registruotis žinutÄ™" tam, kad gauti parašą - - - The entered address is invalid. - Ä®vestas adresas negalioja. - - - Please check the address and try again. - PraÅ¡om patikrinti adresÄ… ir bandyti iÅ¡ naujo. - - - Wallet unlock was cancelled. - PiniginÄ—s atrakinimas atÅ¡auktas. - - - Message signing failed. - ŽinutÄ—s pasiraÅ¡ymas nepavyko. - - - Message signed. - ŽinutÄ— pasiraÅ¡yta. - - - The signature could not be decoded. - Nepavyko iÅ¡koduoti paraÅ¡o. - - - Please check the signature and try again. - PraÅ¡om patikrinti parašą ir bandyti iÅ¡ naujo. - - - The signature did not match the message digest. - ParaÅ¡as neatitinka žinutÄ—s. - - - Message verification failed. - ŽinutÄ—s tikrinimas nepavyko. - - - Message verified. - ŽinutÄ— patikrinta. - - - - SplashScreen - - Bitcoin Core - Bitcoin branduolys - - - [testnet] - [testavimotinklas] - - - - TrafficGraphWidget - - KB/s - KB/s - - - - TransactionDesc - - Open until %1 - Atidaryta iki %1 - - - %1/offline - %1/neprisijungÄ™s - - - %1/unconfirmed - %1/nepatvirtintas - - - %1 confirmations - %1 patvirtinimų - - - Status - BÅ«sena - - - Date - Data - - - Source - Å altinis - - - Generated - Sugeneruotas - - - From - Nuo - - - To - Kam - - - own address - savo adresas - - - label - žymÄ— - - - Credit - Kreditas - - - not accepted - nepriimta - - - Debit - Debitas - - - Transaction fee - Sandorio mokestis - - - Net amount - Neto suma - - - Message - ŽinutÄ— - - - Comment - Komentaras - - - Transaction ID - Sandorio ID - - - Debug information - Derinimo informacija - - - Transaction - Sandoris - - - Amount - Suma - - - true - tiesa - - - false - netiesa - - - , has not been successfully broadcast yet - , transliavimas dar nebuvo sÄ—kmingas - - - unknown - nežinomas - - - - TransactionDescDialog - - Transaction details - Sandorio detelÄ—s - - - This pane shows a detailed description of the transaction - Å is langas sandorio detalų apraÅ¡ymÄ… - - - - TransactionTableModel - - Date - Data - - - Type - Tipas - - - Open until %1 - Atidaryta iki %1 - - - Confirmed (%1 confirmations) - Patvirtinta (%1 patvirtinimai) - - - This block was not received by any other nodes and will probably not be accepted! - Å is blokas negautas nÄ— vienu iÅ¡ mazgų ir matomai nepriimtas - - - Generated but not accepted - IÅ¡gauta bet nepriimta - - - Label - ŽymÄ— - - - Received with - Gauta su - - - Received from - Gauta iÅ¡ - - - Sent to - IÅ¡siųsta - - - Payment to yourself - MokÄ—jimas sau - - - Mined - IÅ¡gauta - - - (n/a) - nepasiekiama - - - Transaction status. Hover over this field to show number of confirmations. - Sandorio bÅ«klÄ—. Užvedus pelÄ—s žymeklį ant Å¡ios srities matysite patvirtinimų skaiÄių. - - - Date and time that the transaction was received. - Sandorio gavimo data ir laikas - - - Type of transaction. - Sandorio tipas. - - - Amount removed from or added to balance. - Suma pridÄ—ta ar iÅ¡skaiÄiuota iÅ¡ balanso - - - - TransactionView - - All - Visi - - - Today - Å iandien - - - This week - Å iÄ… savaitÄ™ - - - This month - Šį mÄ—nesį - - - Last month - Paskutinį mÄ—nesį - - - This year - Å iais metais - - - Range... - Intervalas... - - - Received with - Gauta su - - - Sent to - IÅ¡siųsta - - - To yourself - Skirta sau - - - Mined - IÅ¡gauta - - - Other - Kita - - - Enter address or label to search - Ä®veskite adresÄ… ar žymÄ™ į paieÅ¡kÄ… - - - Min amount - Minimali suma - - - Copy address - Kopijuoti adresÄ… - - - Copy label - Kopijuoti žymÄ™ - - - Copy amount - Kopijuoti sumÄ… - - - Edit label - Taisyti žymÄ™ - - - Show transaction details - Rodyti sandÄ—rio detales - - - Exporting Failed - Eksportavimas nepavyko - - - Comma separated file (*.csv) - Kableliais atskirtų duomenų failas (*.csv) - - - Confirmed - Patvirtintas - - - Date - Data - - - Type - Tipas - - - Label - ŽymÄ— - - - Address - Adresas - - - ID - ID - - - Range: - GrupÄ—: - - - to - skirta - - - - UnitDisplayStatusBarControl - - - WalletFrame - - - WalletModel - - Send Coins - Siųsti monetas - - - - WalletView - - &Export - &Eksportuoti - - - Backup Wallet - Backup piniginÄ™ - - - Wallet Data (*.dat) - PiniginÄ—s duomenys (*.dat) - - - Backup Failed - Nepavyko padaryti atsarginÄ—s kopijos - - - Backup Successful - AtsarginÄ— kopija sÄ—kmingai padaryta - - - - bitcoin-core - - Options: - Parinktys: - - - Specify data directory - Nustatyti duomenų aplankÄ… - - - Specify your own public address - Nurodykite savo nuosavÄ… viešą adresÄ… - - - Accept command line and JSON-RPC commands - Priimti komandinÄ™ eilutÄ™ ir JSON-RPC komandas - - - Run in the background as a daemon and accept commands - Dirbti fone kaip Å¡ešėlyje ir priimti komandas - - - Use the test network - Naudoti testavimo tinklÄ… - - - Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. - Ä®spÄ—jimas: -paytxfee yra nustatytas per didelis. Tai sandorio mokestis, kurį turÄ—site mokÄ—ti, jei siųsite sandorį. - - - Connect only to the specified node(s) - Prisijungti tik prie nurodyto mazgo - - - Error opening block database - Klaida atveriant blokų duombazÄ™ - - - Verifying blocks... - Tikrinami blokai... - - - Verifying wallet... - Tikrinama piniginÄ—... - - - Information - Informacija - - - Send trace/debug info to console instead of debug.log file - Siųsti atsekimo/derinimo info į konsolÄ™ vietoj debug.log failo - - - Set language, for example "de_DE" (default: system locale) - Nustatyti kalbÄ…, pavyzdžiui "lt_LT" (numatyta: sistemos kalba) - - - Start minimized - Paleisti sumažintÄ… - - - Use UPnP to map the listening port (default: 1 when listening) - Bandymas naudoti UPnP struktÅ«ra klausymosi prievadui (default: 1 when listening) - - - Username for JSON-RPC connections - Vartotojo vardas JSON-RPC jungimuisi - - - Warning - Ä®spÄ—jimas - - - Password for JSON-RPC connections - Slaptažodis JSON-RPC sujungimams - - - Upgrade wallet to latest format - Atnaujinti piniginÄ™ į naujausiÄ… formatÄ… - - - Rescan the block chain for missing wallet transactions - IeÅ¡koti prarastų piniginÄ—s sandorių blokų grandinÄ—je - - - Use OpenSSL (https) for JSON-RPC connections - Naudoti OpenSSL (https) jungimuisi JSON-RPC - - - This help message - Pagelbos žinutÄ— - - - Allow DNS lookups for -addnode, -seednode and -connect - Leisti DNS paieÅ¡kÄ… sujungimui ir mazgo pridÄ—jimui - - - Loading addresses... - Užkraunami adresai... - - - Error loading wallet.dat: Wallet corrupted - wallet.dat pakrovimo klaida, wallet.dat sugadintas - - - Error loading wallet.dat - wallet.dat pakrovimo klaida - - - Invalid -proxy address: '%s' - Neteisingas proxy adresas: '%s' - - - Invalid amount for -paytxfee=<amount>: '%s' - Neteisinga suma -paytxfee=<amount>: '%s' - - - Insufficient funds - Nepakanka lėšų - - - Loading block index... - Ä®keliamas blokų indeksas... - - - Add a node to connect to and attempt to keep the connection open - PridÄ—ti mazgÄ… prie sujungti su and attempt to keep the connection open - - - Loading wallet... - Užkraunama piniginÄ—... - - - Cannot write default address - Negalima paraÅ¡yti įprasto adreso - - - Rescanning... - PeržiÅ«ra - - - Done loading - Ä®kÄ—limas baigtas - - - Error - Klaida - - - \ No newline at end of file diff --git a/src/qt/locale/bitcoin_lv_LV.ts b/src/qt/locale/bitcoin_lv_LV.ts deleted file mode 100644 index fcdacfac5..000000000 --- a/src/qt/locale/bitcoin_lv_LV.ts +++ /dev/null @@ -1,2290 +0,0 @@ - - - AddressBookPage - - Create a new address - Izveidot jaunu adresi - - - &New - &Jauns - - - Copy the currently selected address to the system clipboard - KopÄ“t iezÄ«mÄ“to adresi uz starpliktuvi - - - &Copy - &KopÄ“t - - - C&lose - &AizvÄ“rt - - - &Copy Address - &KopÄ“t adresi - - - Delete the currently selected address from the list - IzdzÄ“st iezÄ«mÄ“tÄs adreses no saraksta - - - Export the data in the current tab to a file - Datus no tekoÅ¡Ä ieliktņa eksportÄ“t uz failu - - - &Export - &EksportÄ“t - - - &Delete - &DzÄ“st - - - Choose the address to send coins to - IzvÄ“lies adresi uz kuru sÅ«tÄ«t bitcoins - - - Choose the address to receive coins with - IzvÄ“lies adresi ar kuru saņemt bitcoins - - - C&hoose - &IzvÄ“lÄ“ties - - - Sending addresses - SÅ«tīšanas adreses - - - Receiving addresses - SaņemÅ¡anas adreses - - - Copy &Label - KopÄ“t &Nosaukumu - - - &Edit - &Rediģēt - - - Export Address List - EksportÄ“t AdreÅ¡u Sarakstu - - - Comma separated file (*.csv) - Fails ar komatu kÄ atdalÄ«tÄju (*.csv) - - - Exporting Failed - Eksportēšana NeizdevÄs - - - - AddressTableModel - - Label - Nosaukums - - - Address - Adrese - - - (no label) - (bez nosaukuma) - - - - AskPassphraseDialog - - Passphrase Dialog - Paroles dialogs - - - Enter passphrase - Ierakstiet paroli - - - New passphrase - Jauna parole - - - Repeat new passphrase - JaunÄ parole vÄ“lreiz - - - Encrypt wallet - Å ifrÄ“t maciņu - - - This operation needs your wallet passphrase to unlock the wallet. - Lai veikto Å¡o darbÄ«bu, maciņš jÄatslÄ“dz ar paroli. - - - Unlock wallet - AtslÄ“gt maciņu - - - This operation needs your wallet passphrase to decrypt the wallet. - Å ai darbÄ«bai maciņš jÄatÅ¡ifrÄ“ ar maciņa paroli. - - - Decrypt wallet - AtÅ¡ifrÄ“t maciņu - - - Change passphrase - MainÄ«t paroli - - - Confirm wallet encryption - ApstiprinÄt maciņa Å¡ifrēšanu - - - Warning: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR BITCOINS</b>! - BrÄ«dinÄjums: Ja tu noÅ¡ifrÄ“ savu maciņu un pazaudÄ“ paroli, tu <b>PAZAUDÄ’SI VISAS SAVAS BITCOINS</b>! - - - Are you sure you wish to encrypt your wallet? - Vai tu tieÅ¡Äm vÄ“lies Å¡ifrÄ“t savu maciņu? - - - Warning: The Caps Lock key is on! - BrÄ«dinÄjums: Caps Lock ir ieslÄ“gts! - - - Wallet encrypted - Maciņš noÅ¡ifrÄ“ts - - - Wallet encryption failed - Maciņa Å¡ifrēšana neizdevÄs - - - Wallet encryption failed due to an internal error. Your wallet was not encrypted. - Maciņa Å¡ifrēšana neizdevÄs programmas kļūdas dēļ. JÅ«su maciņš netika Å¡ifrÄ“ts. - - - The supplied passphrases do not match. - IevadÄ«tÄs paroles nav vienÄdas. - - - Wallet unlock failed - Maciņu atÅ¡ifrÄ“t neizdevÄs - - - The passphrase entered for the wallet decryption was incorrect. - Maciņa atÅ¡ifrēšanai ievadÄ«tÄ parole nav pareiza. - - - Wallet decryption failed - Maciņu neizdevÄs atÅ¡ifrÄ“t - - - Wallet passphrase was successfully changed. - Maciņa parole tika veiksmÄ«gi nomainÄ«ta. - - - - BitcoinGUI - - Sign &message... - ParakstÄ«t &ziņojumu... - - - Synchronizing with network... - SinhronizÄcija ar tÄ«klu... - - - &Overview - &PÄrskats - - - Node - Node - - - Show general overview of wallet - RÄdÄ«t vispÄrÄ“ju maciņa pÄrskatu - - - &Transactions - &Transakcijas - - - Browse transaction history - SkatÄ«t transakciju vÄ“sturi - - - E&xit - &Iziet - - - Quit application - AizvÄ“rt programmu - - - About &Qt - Par &Qt - - - Show information about Qt - ParÄdÄ«t informÄciju par Qt - - - &Options... - &IespÄ“jas... - - - &Encrypt Wallet... - Å ifrÄ“t &maciņu... - - - &Backup Wallet... - &Maciņa Rezerves Kopija... - - - &Change Passphrase... - MainÄ«t &Paroli... - - - &Sending addresses... - &SÅ«tīšanas adreses... - - - &Receiving addresses... - SaņemÅ¡anas &adreses... - - - Open &URI... - AtvÄ“rt &URI... - - - Bitcoin Core client - Bitcoin Core klients - - - Importing blocks from disk... - ImportÄ“ blokus no diska... - - - Reindexing blocks on disk... - Bloku reindeksēšana no diska... - - - Send coins to a Bitcoin address - NosÅ«tÄ«t bitkoinus uz Bitcoin adresi - - - Backup wallet to another location - Izveidot maciņa rezerves kopiju citur - - - Change the passphrase used for wallet encryption - MainÄ«t maciņa Å¡ifrēšanas paroli - - - &Debug window - &AtkļūdoÅ¡anas logs - - - Open debugging and diagnostic console - AtvÄ“rt atkļūdoÅ¡anas un diagnostikas konsoli - - - &Verify message... - &PÄrbaudÄ«t ziņojumu... - - - Bitcoin - Bitcoin - - - Wallet - Maciņš - - - &Send - &SÅ«tÄ«t - - - &Receive - &Saņemt - - - Show information about Bitcoin Core - ParÄdÄ«t informÄciju par Bitcoin Core - - - &Show / Hide - &RÄdÄ«t / PaslÄ“pt - - - Show or hide the main Window - ParÄdÄ«t vai paslÄ“pt galveno Logu - - - Encrypt the private keys that belong to your wallet - Å ifrÄ“t privÄtÄs atslÄ“gas kuras pieder tavam maciņam - - - Sign messages with your Bitcoin addresses to prove you own them - ParakstÄ«t ziņojumus ar savÄm Bitcoin adresÄ“m lai pierÄdÄ«tu ka tÄs pieder tev - - - Verify messages to ensure they were signed with specified Bitcoin addresses - PÄrbaudÄ«t ziņojumus lai pÄrliecinÄtos, ka tie tika parakstÄ«ti ar norÄdÄ«tajÄm Bitcoin adresÄ“m - - - &File - &Fails - - - &Settings - &UzstÄdÄ«jumi - - - &Help - &PalÄ«dzÄ«ba - - - Tabs toolbar - Ciļņu rÄ«kjosla - - - Bitcoin Core - Bitcoin Core - - - Request payments (generates QR codes and bitcoin: URIs) - PieprasÄ«t maksÄjumus (izveido QR kodu un bitcoin: URIs) - - - &About Bitcoin Core - Par &Bitcoin Core - - - Open a bitcoin: URI or payment request - AtvÄ“rt bitcoin URI vai maksÄjuma pieprasÄ«jumu - - - &Command-line options - &Komandrindas iespÄ“jas - - - No block source available... - Nav pieejams neviens bloku avots... - - - %1 and %2 - %1 un %2 - - - %1 behind - %1 aizmugurÄ“ - - - Transactions after this will not yet be visible. - Transakcijas pÄ“c šī vel nebÅ«s redzamas - - - Error - Kļūda - - - Warning - BrÄ«dinÄjums - - - Information - InformÄcija - - - Up to date - SinhronizÄ“ts - - - Catching up... - SinhronizÄ“jos... - - - Sent transaction - Transakcija nosÅ«tÄ«ta - - - Incoming transaction - IenÄkoÅ¡a transakcija - - - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - Maciņš ir <b>Å¡ifrÄ“ts</b> un paÅ¡laik <b>atslÄ“gts</b> - - - Wallet is <b>encrypted</b> and currently <b>locked</b> - Maciņš ir <b>Å¡ifrÄ“ts</b> un paÅ¡laik <b>slÄ“gts</b> - - - - ClientModel - - Network Alert - TÄ«kla brÄ«dinÄjums - - - - CoinControlDialog - - Quantity: - Daudzums: - - - Bytes: - Baiti: - - - Amount: - Daudzums: - - - Priority: - PrioritÄte: - - - Fee: - Maksa: - - - After Fee: - PÄ“c Maksas: - - - Change: - Atlikums: - - - (un)select all - iezÄ«mÄ“t visus - - - Tree mode - Koka režīms - - - List mode - Saraksta režīms - - - Amount - Daudzums - - - Date - Datums - - - Confirmations - ApstiprinÄjumi - - - Confirmed - ApstiprinÄts - - - Priority - PrioritÄte - - - Copy address - KopÄ“t adresi - - - Copy label - KopÄ“t nosaukumu - - - Copy amount - KopÄ“t daudzumu - - - Copy transaction ID - KopÄ“t transakcijas ID - - - Lock unspent - AizslÄ“gt neiztÄ“rÄ“to - - - Unlock unspent - AtslÄ“gt neiztÄ“rÄ“to - - - Copy quantity - KopÄ“t daudzumu - - - Copy fee - KopÄ“t maksu - - - Copy after fee - KopÄ“t pÄ“c maksas - - - Copy bytes - KopÄ“t baitus - - - Copy priority - KopÄ“t prioritÄti - - - Copy change - KopÄ“t atlikumu - - - highest - augstÄkais - - - higher - augstÄks - - - high - augsts - - - medium-high - vidÄ“ji-augsts - - - medium - vidÄ“js - - - low-medium - zemi-vidÄ“js - - - low - zems - - - lower - zemÄks - - - lowest - zemÄkais - - - (%1 locked) - (%1 aizslÄ“gts) - - - none - neviena - - - yes - - - - no - nÄ“ - - - (no label) - (bez nosaukuma) - - - change from %1 (%2) - atlikums no %1 (%2) - - - (change) - (atlikums) - - - - EditAddressDialog - - Edit Address - MainÄ«t adrese - - - &Label - &Nosaukums - - - &Address - &Adrese - - - New receiving address - Jauna saņemÅ¡anas adrese - - - New sending address - Jauna nosÅ«tīšanas adrese - - - Edit receiving address - MainÄ«t saņemÅ¡anas adresi - - - Edit sending address - MainÄ«t nosÅ«tīšanas adresi - - - The entered address "%1" is already in the address book. - Nupat ierakstÄ«tÄ adrese "%1" jau atrodas adreÅ¡u grÄmatÄ. - - - The entered address "%1" is not a valid Bitcoin address. - IerakstÄ«tÄ adrese "%1" nav derÄ«ga Bitcoin adrese. - - - Could not unlock wallet. - Nav iespÄ“jams atslÄ“gt maciņu. - - - New key generation failed. - NeizdevÄs Ä£enerÄ“t jaunu atslÄ“gu. - - - - FreespaceChecker - - A new data directory will be created. - Tiks izveidota jauna datu mape. - - - name - vÄrds - - - Path already exists, and is not a directory. - Å Äds ceļš jau pastÄv un tÄ nav mape. - - - Cannot create data directory here. - Å eit nevar izveidot datu mapi. - - - - HelpMessageDialog - - Bitcoin Core - Bitcoin Core - - - version - versija - - - (%1-bit) - (%1-biti) - - - About Bitcoin Core - Par Bitcoin Core - - - Usage: - Lietojums: - - - command-line options - komandrindas izvÄ“les - - - - Intro - - Welcome - Sveiciens - - - Welcome to Bitcoin Core. - SveicinÄts Bitcoin Core - - - Use the default data directory - Izmantot noklusÄ“to datu mapi - - - Use a custom data directory: - Izmantot pielÄgotu datu mapi: - - - Bitcoin Core - Bitcoin Core - - - Error - Kļūda - - - - OpenURIDialog - - Open URI - AtvÄ“rt URI - - - Open payment request from URI or file - AtvÄ“rt maksÄjuma pieprasÄ«jumu no URI vai datnes - - - URI: - URI: - - - Select payment request file - IzvÄ“lies maksÄjuma pieprasÄ«juma datni - - - Select payment request file to open - IzvÄ“lies maksÄjuma pieprasÄ«juma datni lai atvÄ“ru - - - - OptionsDialog - - Options - IespÄ“jas - - - &Main - &Galvenais - - - Size of &database cache - &DatubÄzes keÅ¡atmiņas izmÄ“rs - - - MB - MB - - - Number of script &verification threads - Skriptu &pÄrbaudes pavedienu skaits - - - IP address of the proxy (e.g. IPv4: 127.0.0.1 / IPv6: ::1) - Starpniekservera IP adrese (piem. IPv4: 127.0.0.1 / IPv6: ::1) - - - Third party transaction URLs - TreÅ¡o personu transakciju URLs - - - Active command-line options that override above options: - AktÄ«vÄs komandrindas opcijas, kuras pÄrspÄ“ko Å¡os iestatÄ«jumus: - - - Reset all client options to default. - AtiestatÄ«t visus klienta iestatÄ«jumus uz noklusÄ“jumu. - - - &Reset Options - &AtiestatÄ«t IestatÄ«jumus. - - - &Network - &TÄ«kls - - - W&allet - &Maciņš - - - Expert - Eksperts - - - Enable coin &control features - IeslÄ“gt bitcoin &kontroles funkcijas - - - &Spend unconfirmed change - &TÄ“rÄ“t neapstiprinÄtu atlikumu - - - Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled. - Uz rÅ«tera automÄtiski atvÄ“rt Bitcoin klienta portu. Tas strÄdÄ tikai tad, ja rÅ«teris atbalsta UPnP un tas ir ieslÄ“gts. - - - Map port using &UPnP - KartÄ“t portu, izmantojot &UPnP - - - Proxy &IP: - Starpniekservera &IP: - - - &Port: - &Ports: - - - Port of the proxy (e.g. 9050) - Starpniekservera ports (piem. 9050) - - - &Window - &Logs - - - Show only a tray icon after minimizing the window. - PÄ“c loga minimizÄcijas rÄdÄ«t tikai ikonu sistÄ“mas teknÄ“. - - - &Minimize to the tray instead of the taskbar - &MinimizÄ“t uz sistÄ“mas tekni, nevis rÄ«kjoslu - - - M&inimize on close - M&inimizÄ“t aizverot - - - &Display - &Izskats - - - User Interface &language: - LietotÄja interfeiss un &valoda: - - - &Unit to show amounts in: - &VienÄ«bas, kurÄs attÄ“lot daudzumus: - - - Choose the default subdivision unit to show in the interface and when sending coins. - IzvÄ“lÄ“ties dalÄ«juma vienÄ«bu pÄ“c noklusēšanas, ko izmantot interfeisÄ un nosÅ«tot bitkoinus. - - - Whether to show coin control features or not. - Vai rÄdÄ«t Bitcoin kontroles funkcijas vai nÄ“. - - - &OK - &Labi - - - &Cancel - &Atcelt - - - default - pÄ“c noklusēšanas - - - none - neviena - - - Confirm options reset - ApstiprinÄt iestatÄ«jumu atiestatīšanu - - - The supplied proxy address is invalid. - NorÄdÄ«tÄ starpniekservera adrese nav derÄ«ga. - - - - OverviewPage - - Form - Forma - - - The displayed information may be out of date. Your wallet automatically synchronizes with the Bitcoin network after a connection is established, but this process has not completed yet. - AttÄ“lotÄ informÄcija var bÅ«t novecojusi. JÅ«su maciņš pÄ“c savienojuma izveides automÄtiski sinhronizÄ“jas ar Bitcoin tÄ«klu, taÄu Å¡is process vÄ“l nav beidzies. - - - Available: - Pieejams: - - - Your current spendable balance - Tava paÅ¡reizÄ“jÄ tÄ“rÄ“jamÄ bilance - - - Pending: - Neizšķirts: - - - Total of transactions that have yet to be confirmed, and do not yet count toward the spendable balance - KopÄ“jÄ apstiprinÄmo transakciju vÄ“rtÄ«ba, vÄ“l nav ieskaitÄ«ta tÄ“rÄ“jamajÄ bilancÄ“ - - - Immature: - NenobrieduÅ¡u: - - - Total: - Kopsumma: - - - Your current total balance - JÅ«su kopÄ“jÄ tekoÅ¡Ä bilance - - - - PaymentServer - - URI handling - URI apstrÄde - - - Invalid payment address %1 - NederÄ«ga maksÄjuma adrese %1 - - - Payment request error - MaksÄjumu pieprasÄ«juma kļūda - - - Cannot start bitcoin: click-to-pay handler - Nevar palaist Bitcoin: nospied-lai-maksÄtu apstrÄdÄtÄju - - - Refund from %1 - Atmaksa no %1 - - - Payment acknowledged - MaksÄjums atzÄ«ts - - - Network request error - TÄ«kla pieprasÄ«juma kļūda - - - - PeerTableModel - - - QObject - - Amount - Daudzums - - - %1 h - %1 st - - - %1 m - %1 m - - - N/A - N/A - - - - QRImageWidget - - &Save Image... - &SaglabÄt AttÄ“lu... - - - &Copy Image - &KopÄ“t AttÄ“lu - - - Save QR Code - SaglabÄt QR kodu - - - PNG Image (*.png) - PNG AttÄ“ls (*.png) - - - - RPCConsole - - Client name - Klienta vÄrds - - - N/A - N/A - - - Client version - Klienta versija - - - &Information - &InformÄcija - - - Debug window - AtkļūdoÅ¡anas logs - - - General - VispÄrÄ“js - - - Using OpenSSL version - IzmantotÄ OpenSSL versija - - - Startup time - SÄkuma laiks - - - Network - TÄ«kls - - - Name - VÄrds - - - Number of connections - Savienojumu skaits - - - Block chain - Bloku virkne - - - Current number of blocks - PaÅ¡reizÄ“jais bloku skaits - - - Last block time - PÄ“dÄ“jÄ bloka laiks - - - &Open - &AtvÄ“rt - - - &Console - &Konsole - - - &Network Traffic - &TÄ«kla Satiksme - - - &Clear - &NotÄ«rÄ«t - - - Totals - Kopsummas - - - In: - Ie.: - - - Out: - Iz.: - - - Build date - KompilÄcijas datums - - - Debug log file - AtkļūdoÅ¡anas žurnÄla datne - - - Clear console - NotÄ«rÄ«t konsoli - - - Use up and down arrows to navigate history, and <b>Ctrl-L</b> to clear screen. - Izmantojiet bultiņas uz augÅ¡u un leju, lai pÄrvietotos pa vÄ“sturi, un <b>Ctrl-L</b> ekrÄna notÄ«rīšanai. - - - Type <b>help</b> for an overview of available commands. - Ierakstiet <b>help</b> lai iegÅ«tu pieejamo komandu sarakstu. - - - %1 B - %1 B - - - %1 KB - %1 KB - - - %1 MB - %1 MB - - - %1 GB - %1 GB - - - - ReceiveCoinsDialog - - &Amount: - &Daudzums: - - - &Label: - &Nosaukums: - - - &Message: - &Ziņojums: - - - R&euse an existing receiving address (not recommended) - &AtkÄrtoti izmantot esoÅ¡o saņemÅ¡anas adresi (nav ieteicams) - - - Clear all fields of the form. - NotÄ«rÄ«t visus laukus formÄ. - - - Clear - NotÄ«rÄ«t - - - Requested payments history - PieprasÄ«to maksÄjumu vÄ“sture - - - &Request payment - &PieprasÄ«t maksÄjumu - - - Show the selected request (does the same as double clicking an entry) - ParÄdÄ«t atlasÄ«tos pieprasÄ«jumus (tas pats, kas dubultklikšķis uz ieraksta) - - - Show - RÄdÄ«t - - - Remove the selected entries from the list - Noņemt atlasÄ«tos ierakstus no saraksta. - - - Remove - Noņemt - - - Copy label - KopÄ“t nosaukumu - - - Copy message - KopÄ“t ziņojumu - - - Copy amount - KopÄ“t daudzumu - - - - ReceiveRequestDialog - - QR Code - QR Kods - - - Copy &URI - KopÄ“t &URI - - - Copy &Address - KopÄ“t &Adresi - - - &Save Image... - &SaglabÄt AttÄ“lu... - - - Request payment to %1 - PieprasÄ«t maksÄjumu uz %1 - - - Payment information - MaksÄjuma informÄcija - - - URI - URI - - - Address - Adrese - - - Amount - Daudzums - - - Label - Nosaukums - - - Message - Ziņojums - - - Resulting URI too long, try to reduce the text for label / message. - RezultÄta URI pÄrÄk garÅ¡, mēģiniet saÄ«sinÄt nosaukumu vai ziņojumu. - - - Error encoding URI into QR Code. - Kļūda kodÄ“jot URI QR kodÄ. - - - - RecentRequestsTableModel - - Date - Datums - - - Label - Nosaukums - - - Message - Ziņojums - - - Amount - Daudzums - - - (no label) - (bez nosaukuma) - - - (no message) - (nav ziņojuma) - - - (no amount) - (nav summas) - - - - SendCoinsDialog - - Send Coins - SÅ«tÄ«t Bitkoinus - - - Coin Control Features - Bitcoin Kontroles Funkcijas - - - Inputs... - Ieejas... - - - automatically selected - automÄtiski atlasÄ«ts - - - Insufficient funds! - Nepietiekami lÄ«dzekļi! - - - Quantity: - Daudzums: - - - Bytes: - Baiti: - - - Amount: - Daudzums: - - - Priority: - PrioritÄte: - - - Fee: - Maksa: - - - After Fee: - PÄ“c Maksas: - - - Change: - Atlikums: - - - Custom change address - PielÄgota atlikuma adrese - - - Send to multiple recipients at once - SÅ«tÄ«t vairÄkiem saņēmÄ“jiem uzreiz - - - Add &Recipient - &Pievienot SaņēmÄ“ju - - - Clear all fields of the form. - NotÄ«rÄ«t visus laukus formÄ. - - - Clear &All - &NotÄ«rÄ«t visu - - - Balance: - Bilance: - - - Confirm the send action - ApstiprinÄt nosÅ«tīšanu - - - S&end - &SÅ«tÄ«t - - - Confirm send coins - ApstiprinÄt bitkoinu sÅ«tīšanu - - - %1 to %2 - %1 lÄ«dz %2 - - - Copy quantity - KopÄ“t daudzumu - - - Copy amount - KopÄ“t daudzumu - - - Copy fee - KopÄ“t maksu - - - Copy after fee - KopÄ“t pÄ“c maksas - - - Copy bytes - KopÄ“t baitus - - - Copy priority - KopÄ“t prioritÄti - - - Copy change - KopÄ“t atlikumu - - - or - vai - - - The amount to pay must be larger than 0. - NosÅ«tÄmajai summai jÄbÅ«t lielÄkai par 0. - - - The amount exceeds your balance. - Daudzums pÄrsniedz pieejamo. - - - The total exceeds your balance when the %1 transaction fee is included. - Kopsumma pÄrsniedz pieejamo, ja pieskaitÄ«ta %1 transakcijas maksa. - - - Transaction creation failed! - Transakcijas izveidoÅ¡ana neizdevÄs! - - - Warning: Invalid Bitcoin address - BrÄ«dinÄjums: NederÄ«ga Bitcoin adrese - - - (no label) - (bez nosaukuma) - - - Warning: Unknown change address - BrÄ«dinÄjums: NezinÄma atlikuma adrese - - - added as transaction fee - pievienots kÄ transakcijas maksa - - - - SendCoinsEntry - - A&mount: - Apjo&ms - - - Pay &To: - &SaņēmÄ“js: - - - Enter a label for this address to add it to your address book - Lai pievienotu adresi adreÅ¡u grÄmatai, tai jÄdod nosaukums - - - &Label: - &Nosaukums: - - - Choose previously used address - IzvÄ“lies iepriekÅ¡ izmantoto adresi - - - This is a normal payment. - Å is ir parasts maksÄjums. - - - Alt+A - Alt+A - - - Paste address from clipboard - ielÄ«mÄ“t adresi no starpliktuves - - - Alt+P - Alt+P - - - Remove this entry - Noņem Å¡o ierakstu - - - Message: - Ziņojums: - - - Pay To: - MaksÄt: - - - Memo: - Memo: - - - - ShutdownWindow - - Bitcoin Core is shutting down... - Bitcoin Core tiek izslÄ“gta... - - - Do not shut down the computer until this window disappears. - NeizslÄ“dziet datoru kamÄ“r Å¡is logs nepazÅ«d. - - - - SignVerifyMessageDialog - - Signatures - Sign / Verify a Message - Paraksti - ParakstÄ«t / PabaudÄ«t Ziņojumu - - - &Sign Message - ParakstÄ«t &Ziņojumu - - - Choose previously used address - IzvÄ“lies iepriekÅ¡ izmantoto adresi - - - Alt+A - Alt+A - - - Paste address from clipboard - ielÄ«mÄ“t adresi no starpliktuves - - - Alt+P - Alt+P - - - Enter the message you want to sign here - Å eit ievadi ziņojumu kuru vÄ“lies parakstÄ«t - - - Signature - Paraksts - - - Copy the current signature to the system clipboard - KopÄ“t parakstu uz sistÄ“mas starpliktuvi - - - Sign the message to prove you own this Bitcoin address - ParakstÄ«t ziņojumu lai pierÄdÄ«tu, ka esi šīs Bitcoin adreses Ä«paÅ¡nieks. - - - Sign &Message - ParakstÄ«t &Ziņojumu - - - Reset all sign message fields - AtiestatÄ«t visus laukus - - - Clear &All - &NotÄ«rÄ«t visu - - - &Verify Message - &PÄrbaudÄ«t Ziņojumu - - - Verify &Message - &PÄrbaudÄ«t Ziņojumu - - - Reset all verify message fields - AtiestatÄ«t visus laukus - - - Click "Sign Message" to generate signature - Nospied "ParakstÄ«t Ziņojumu" lai Ä£enerÄ“tu parakstu - - - The entered address is invalid. - IevadÄ«tÄ adrese ir nederÄ«ga. - - - Please check the address and try again. - LÅ«dzu pÄrbaudi adresi un mēģini vÄ“lreiz. - - - The entered address does not refer to a key. - IevadÄ«tÄ adrese neattiecas uz atslÄ“gu. - - - Wallet unlock was cancelled. - Maciņa atslÄ“gÅ¡ana tika atcelta. - - - Private key for the entered address is not available. - PrivÄtÄ atslÄ“ga priekÅ¡ ievadÄ«tÄs adreses nav pieejama. - - - Message signing failed. - NeizdevÄs parakstÄ«t ziņojumu. - - - Message signed. - Ziņojums parakstÄ«ts. - - - The signature could not be decoded. - Paraksts nevarÄ“ja tikt dekodÄ“ts. - - - Please check the signature and try again. - LÅ«dzu pÄrbaudi parakstu un mēģini vÄ“lreiz. - - - The signature did not match the message digest. - Paraksts neatbilda ziņojuma apkopojumam. - - - Message verification failed. - Ziņojumu neizdevÄs pÄrbaudÄ«t. - - - Message verified. - Ziņojums pÄrbaudÄ«ts. - - - - SplashScreen - - Bitcoin Core - Bitcoin Core - - - The Bitcoin Core developers - Bitcoin Core izstrÄdÄtÄji - - - [testnet] - [testnets] - - - - TrafficGraphWidget - - KB/s - KB/s - - - - TransactionDesc - - Open until %1 - AtvÄ“rts lÄ«dz %1 - - - conflicted - pretrunÄ - - - %1/offline - %1/bezsaistÄ“ - - - %1/unconfirmed - %1/neapstiprinÄtas - - - %1 confirmations - %1 apstiprinÄjumu - - - Status - Status - - - Date - Datums - - - Source - Avots - - - Generated - Ä¢enerÄ“ts - - - From - No - - - To - Uz - - - own address - paÅ¡a adrese - - - label - etiÄ·ete - - - Credit - KredÄ«ts - - - not accepted - nav pieņemts - - - Debit - Debets - - - Transaction fee - Transakcijas maksa - - - Net amount - Neto summa - - - Message - Ziņojums - - - Comment - KomentÄrs - - - Transaction ID - Transakcijas ID - - - Merchant - TirgotÄjs - - - Debug information - AtkļūdoÅ¡anas informÄcija - - - Transaction - Transakcija - - - Inputs - Ieejas - - - Amount - Daudzums - - - true - patiess - - - false - nepatiess - - - , has not been successfully broadcast yet - , vÄ“l nav veiksmÄ«gi izziņots - - - unknown - nav zinÄms - - - - TransactionDescDialog - - Transaction details - Transakcijas detaļas - - - This pane shows a detailed description of the transaction - Å is panelis parÄda transakcijas detaļas - - - - TransactionTableModel - - Date - Datums - - - Type - Tips - - - Open until %1 - AtvÄ“rts lÄ«dz %1 - - - Confirmed (%1 confirmations) - ApstiprinÄts (%1 apstiprinÄjumu) - - - This block was not received by any other nodes and will probably not be accepted! - Neviens cits mezgls Å¡o bloku nav saņēmis un droÅ¡i vien netiks akceptÄ“ts! - - - Generated but not accepted - Ä¢enerÄ“ts, taÄu nav akceptÄ“ts - - - Offline - BezsaitÄ“ - - - Label - Nosaukums - - - Unconfirmed - NeapstiprinÄts - - - Conflicted - PretrunÄ - - - Received with - Saņemts ar - - - Received from - Saņemts no - - - Sent to - NosÅ«tÄ«ts - - - Payment to yourself - MaksÄjums sev - - - Mined - Atrasts - - - (n/a) - (nav pieejams) - - - Transaction status. Hover over this field to show number of confirmations. - Transakcijas statuss. Turiet peli virs šī lauka, lai redzÄ“tu apstiprinÄjumu skaitu. - - - Date and time that the transaction was received. - Transakcijas saņemÅ¡anas datums un laiks. - - - Type of transaction. - Transakcijas tips. - - - Amount removed from or added to balance. - Bilancei pievienotais vai atņemtais daudzums. - - - - TransactionView - - All - Visi - - - Today - Å odien - - - This week - Å onedēļ - - - This month - Å omÄ“nes - - - Last month - PÄ“dÄ“jais mÄ“nesis - - - This year - Å ogad - - - Range... - Diapazons... - - - Received with - Saņemts ar - - - Sent to - NosÅ«tÄ«ts - - - To yourself - Sev - - - Mined - Atrasts - - - Other - Cits - - - Enter address or label to search - Ierakstiet meklÄ“jamo nosaukumu vai adresi - - - Min amount - MinimÄlais daudzums - - - Copy address - KopÄ“t adresi - - - Copy label - KopÄ“t nosaukumu - - - Copy amount - KopÄ“t daudzumu - - - Copy transaction ID - KopÄ“t transakcijas ID - - - Edit label - MainÄ«t nosaukumu - - - Show transaction details - RÄdÄ«t transakcijas detaļas - - - Export Transaction History - EksportÄ“t Transakciju VÄ“sturi - - - Exporting Failed - Eksportēšana NeizdevÄs - - - Exporting Successful - Eksportēšana VeiksmÄ«ga - - - The transaction history was successfully saved to %1. - Transakciju vÄ“sture tika veiksmÄ«gi saglabÄta uz %1. - - - Comma separated file (*.csv) - Fails ar komatu kÄ atdalÄ«tÄju (*.csv) - - - Confirmed - ApstiprinÄts - - - Date - Datums - - - Type - Tips - - - Label - Nosaukums - - - Address - Adrese - - - ID - ID - - - Range: - Diapazons: - - - to - uz - - - - UnitDisplayStatusBarControl - - - WalletFrame - - No wallet has been loaded. - Neviens maciņš nav ielÄdÄ“ts. - - - - WalletModel - - Send Coins - SÅ«tÄ«t Bitkoinus - - - - WalletView - - &Export - &EksportÄ“t - - - Export the data in the current tab to a file - Datus no tekoÅ¡Ä ieliktņa eksportÄ“t uz failu - - - Backup Wallet - Izveidot maciņa rezerves kopiju - - - Wallet Data (*.dat) - Maciņa dati (*.dat) - - - Backup Failed - Rezerves kopēšana neizdevÄs - - - There was an error trying to save the wallet data to %1. - Notikusi kļūme mēģinot saglabÄt maciņa datus uz %1. - - - The wallet data was successfully saved to %1. - Maciņa dati tika veiksmÄ«gi saglabÄti uz %1. - - - Backup Successful - Dublēšana VeiksmÄ«ga - - - - bitcoin-core - - Options: - IespÄ“jas: - - - Specify data directory - NorÄdiet datu direktoriju - - - Connect to a node to retrieve peer addresses, and disconnect - Pievienoties mezglam, lai iegÅ«tu citu mezglu adreses, un atvienoties - - - Specify your own public address - NorÄdiet savu publisko adresi - - - Accept command line and JSON-RPC commands - Pieņemt komandrindas un JSON-RPC komandas - - - Run in the background as a daemon and accept commands - DarbinÄt fonÄ kÄ servisu un pieņemt komandas - - - Use the test network - Izmantot testa tÄ«klu - - - (default: 1) - (noklusÄ“jums: 1) - - - <category> can be: - <category> var bÅ«t: - - - Attempt to recover private keys from a corrupt wallet.dat - MēģinÄt atgÅ«t privÄtÄs atslÄ“gas no bojÄta wallet.dat - - - Block creation options: - Bloka izveidoÅ¡anas iestatÄ«jumi: - - - Connect only to the specified node(s) - Savienoties tikai ar norÄdÄ«tajÄm nodÄ“m. - - - Connection options: - Savienojuma iestatÄ«jumi: - - - Debugging/Testing options: - AtkļūdoÅ¡anas/Testēšanas iestatÄ«jumi: - - - Error loading block database - Kļūda ielÄdÄ“jot bloku datubÄzi - - - Error: Disk space is low! - Kļūda: Zema diska vieta! - - - If <category> is not supplied, output all debugging information. - Ja <category> nav norÄdÄ«ta, izvadÄ«t visu atkļūdoÅ¡anas informÄciju. - - - Importing... - ImportÄ“... - - - Verifying blocks... - PÄrbauda blokus... - - - Verifying wallet... - PÄrbauda maciņu... - - - Wallet options: - Maciņa iespÄ“jas: - - - Imports blocks from external blk000??.dat file - ImportÄ“t blokus no ÄrÄ“jÄs blk000??.dat datnes - - - Information - InformÄcija - - - RPC server options: - RPC servera iestatÄ«jumi: - - - Send trace/debug info to console instead of debug.log file - Debug/trace informÄciju izvadÄ«t konsolÄ“, nevis debug.log failÄ - - - Set language, for example "de_DE" (default: system locale) - UzstÄdiet valodu, piemÄ“ram "de_DE" (pÄ“c noklusēšanas: sistÄ“mas lokÄle) - - - Show splash screen on startup (default: 1) - UzsÄkot, parÄdÄ«t programmas informÄcijas logu (pÄ“c noklusēšanas: 1) - - - Signing transaction failed - Transakcijas parakstīšana neizdevÄs - - - Start minimized - SÄkt minimizÄ“tu - - - Transaction amount too small - Transakcijas summa ir pÄrÄk maza - - - Transaction amounts must be positive - Transakcijas summai ir jÄbÅ«t pozitÄ«vai - - - Transaction too large - Transakcija ir pÄrÄk liela - - - Username for JSON-RPC connections - JSON-RPC savienojumu lietotÄjvÄrds - - - Warning - BrÄ«dinÄjums - - - on startup - startēšanas laikÄ - - - wallet.dat corrupt, salvage failed - wallet.dat ir bojÄts, glÄbÅ¡ana neizdevÄs - - - Password for JSON-RPC connections - JSON-RPC savienojumu parole - - - Execute command when the best block changes (%s in cmd is replaced by block hash) - IzpildÄ«t komandu, kad labÄk atbilstoÅ¡ais bloks izmainÄs (%s cmd aizvieto ar bloka heÅ¡u) - - - Upgrade wallet to latest format - Atjaunot maciņa formÄtu uz jaunÄko - - - Rescan the block chain for missing wallet transactions - AtkÄrtoti skanÄ“t bloku virkni, meklÄ“jot trÅ«kstoÅ¡Äs maciņa transakcijas - - - Use OpenSSL (https) for JSON-RPC connections - JSON-RPC savienojumiem izmantot OpenSSL (https) - - - This help message - Å is palÄ«dzÄ«bas paziņojums - - - Allow DNS lookups for -addnode, -seednode and -connect - Atļaut DNS uzmeklēšanu priekÅ¡ -addnode, -seednode un -connect - - - Loading addresses... - IelÄdÄ“ adreses... - - - Error loading wallet.dat: Wallet corrupted - Nevar ielÄdÄ“t wallet.dat: maciņš bojÄts - - - Error loading wallet.dat - Kļūda ielÄdÄ“jot wallet.dat - - - Invalid -proxy address: '%s' - NederÄ«ga -proxy adrese: '%s' - - - Unknown network specified in -onlynet: '%s' - -onlynet komandÄ norÄdÄ«ts nepazÄ«stams tÄ«kls: '%s' - - - Cannot resolve -bind address: '%s' - Nevar uzmeklÄ“t -bind adresi: '%s' - - - Cannot resolve -externalip address: '%s' - Nevar atrisinÄt -externalip adresi: '%s' - - - Invalid amount for -paytxfee=<amount>: '%s' - NederÄ«gs daudzums priekÅ¡ -paytxfree=<amount>: '%s' - - - Insufficient funds - Nepietiek bitkoinu - - - Loading block index... - IelÄdÄ“ bloku indeksu... - - - Add a node to connect to and attempt to keep the connection open - Pievienot mezglu, kam pievienoties un turÄ“t savienojumu atvÄ“rtu - - - Loading wallet... - IelÄdÄ“ maciņu... - - - Cannot downgrade wallet - Nevar maciņa formÄtu padarÄ«t vecÄku - - - Cannot write default address - Nevar ierakstÄ«t adresi pÄ“c noklusēšanas - - - Rescanning... - SkanÄ“ju no jauna... - - - Done loading - IelÄde pabeigta - - - Error - Kļūda - - - \ No newline at end of file diff --git a/src/qt/locale/bitcoin_mn.ts b/src/qt/locale/bitcoin_mn.ts deleted file mode 100644 index 699031270..000000000 --- a/src/qt/locale/bitcoin_mn.ts +++ /dev/null @@ -1,1078 +0,0 @@ - - - AddressBookPage - - Create a new address - Ð¨Ð¸Ð½Ñ Ñ…Ð°Ñг нÑÑÑ… - - - &New - &Ð¨Ð¸Ð½Ñ - - - Copy the currently selected address to the system clipboard - Одоогоор ÑонгогдÑон байгаа хаÑгуудыг Ñануулах - - - &Copy - &Хуулах - - - C&lose - &Хаах - - - &Copy Address - ХаÑгийг &Хуулбарлах - - - Delete the currently selected address from the list - Одоо ÑонгогдÑон байгаа хаÑгуудыг жагÑÐ°Ð°Ð»Ñ‚Ð°Ð°Ñ ÑƒÑтгах - - - Export the data in the current tab to a file - СонгогдÑон таб дÑÑрхи дата-г ÑкÑпортлох - - - &Export - &ЭкÑпортдлох - - - &Delete - &УÑтгах - - - Choose the address to send coins to - ЗооÑнуудыг илгÑÑÑ… хаÑгийг Ñонгоно уу - - - Choose the address to receive coins with - ЗооÑнуудыг хүлÑÑн авах хаÑгийг Ñонгоно уу - - - Sending addresses - ИлгÑÑÑ… хаÑгууд - - - Receiving addresses - ХүлÑÑн авах хаÑг - - - These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins. - ЭдгÑÑÑ€ Биткойн хаÑгууд нь илгÑÑÑ… хаÑгууд. ХүлÑÑн авах хаÑг болон тоо Ñ…ÑмжÑÑг илгÑÑÑ…ÑÑÑÑÑ Ó©Ð¼Ð½Ó© Ñайн нÑгталж үзÑж байна уу - - - These are your Bitcoin addresses for receiving payments. It is recommended to use a new receiving address for each transaction. - ЭдгÑÑÑ€ Биткойн хаÑгууд нь хүлÑÑн авах хаÑгууд. ГүйлгÑÑ Ð±Ð¾Ð»Ð³Ð¾Ð½Ð´ шинÑÑÑ€ хаÑг Ò¯Ò¯ÑгÑхийг бид Ñанал болгож байна. - - - Copy &Label - &Шошгыг хуулбарлах - - - &Edit - &Ѳѳрчлѳх - - - Export Address List - ЭкÑпорт хийх хаÑгуудын жагÑаалт - - - Comma separated file (*.csv) - ТаÑлалаар туÑгаарлагдÑан Ñ…Ò¯ÑнÑгтÑн файл (.csv) - - - - AddressTableModel - - Label - Шошго - - - Address - ХаÑг - - - (no label) - (шошгогүй) - - - - AskPassphraseDialog - - Enter passphrase - Ðууц үгийг оруул - - - New passphrase - Ð¨Ð¸Ð½Ñ Ð½ÑƒÑƒÑ† үг - - - Repeat new passphrase - Ð¨Ð¸Ð½Ñ Ð½ÑƒÑƒÑ† үгийг давтана уу - - - Encrypt wallet - Түрүйвчийг цоожлох - - - This operation needs your wallet passphrase to unlock the wallet. - Ð­Ð½Ñ Ò¯Ð¹Ð»Ð´Ñлийг гүйцÑтгÑхийн тулд та нууц үгÑÑÑ€ÑÑ Ñ‚Ò¯Ñ€Ò¯Ð¹Ð²Ñ‡Ð¸Ð¹Ð½ цоожийг тайлах Ñ…ÑÑ€ÑгтÑй - - - Unlock wallet - Түрүйвчийн цоожийг тайлах - - - This operation needs your wallet passphrase to decrypt the wallet. - Ð­Ð½Ñ Ò¯Ð¹Ð»Ð´Ñлийг гүйцÑтгÑхийн тулд та ÑхлÑÑд түрүйвчийн нууц үгийг оруулж цоожийг тайлах шаардлагтай. - - - Decrypt wallet - Түрүйвчийн цоожийг уÑтгах - - - Change passphrase - Ðууц үгийг Ñолих - - - Confirm wallet encryption - Түрүйвчийн цоожийг баталгаажуулах - - - Wallet encrypted - Түрүйвч цоожлогдлоо - - - Wallet encryption failed - Түрүйвчийн цоожлол амжилттай болÑонгүй - - - Wallet encryption failed due to an internal error. Your wallet was not encrypted. - Түрүйвчийн цоожлол дотоод Ð°Ð»Ð´Ð°Ð°Ð½Ð°Ð°Ñ Ò¯Ò¯Ð´Ñн амжилттай болÑонгүй. Түрүйвч цоожлогдоогүй байна. - - - The supplied passphrases do not match. - Таны оруулÑан нууц үг таарÑангүй - - - Wallet unlock failed - Түрүйвчийн цоож тайлагдÑангүй - - - The passphrase entered for the wallet decryption was incorrect. - Таны оруулÑан түрүйвчийн цоожийг тайлах нууц үг буруу байна - - - Wallet decryption failed - Түрүйвчийн цоож амжилттай уÑтгагдÑангүй - - - Wallet passphrase was successfully changed. - Түрүйвчийн нууц үг амжилттай ѳѳр - - - - BitcoinGUI - - Sign &message... - &Ð—ÑƒÑ€Ð²Ð°Ñ Ñ…Ð°Ð²Ñаргах... - - - Synchronizing with network... - СүлжÑÑÑ‚Ñй тааруулж байна... - - - Node - Ðод - - - &Transactions - ГүйлгÑÑнүүд - - - Browse transaction history - ГүйлгÑÑнүүдийн түүхийг харах - - - E&xit - Гарах - - - Quit application - ÐŸÑ€Ð¾Ð³Ñ€Ð°Ð¼Ð°Ð°Ñ Ð“Ð°Ñ€Ð°Ñ… - - - About &Qt - &Клиентийн тухай - - - Show information about Qt - Клиентийн тухай мÑдÑÑллийг харуул - - - &Options... - &Сонголтууд... - - - &Encrypt Wallet... - &Түрүйвчийг цоожлох... - - - &Backup Wallet... - &Түрүйвчийг Жоорлох... - - - &Change Passphrase... - &Ðууц Үгийг Солих... - - - Change the passphrase used for wallet encryption - Түрүйвчийг цоожлох нууц үгийг Ñолих - - - Open debugging and diagnostic console - Оношилгоо ба заÑварын конÑолыг онгойлго - - - Bitcoin - Биткойн - - - Wallet - Түрүйвч - - - &Show / Hide - &Харуул / Ðуу - - - &File - &Файл - - - &Settings - &Тохиргоо - - - &Help - &ТуÑламж - - - Error - Ðлдаа - - - Up to date - ШинÑчлÑгдÑÑн - - - Sent transaction - Гадагшаа гүйлгÑÑ - - - Incoming transaction - Дотогшоо гүйлгÑÑ - - - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - Түрүйвч <b>цоожтой</b> ба одоогоор цоож <b>онгорхой</b> байна - - - Wallet is <b>encrypted</b> and currently <b>locked</b> - Түрүйвч <b>цоожтой</b> ба одоогоор цоож <b>хаалттай</b> байна - - - - ClientModel - - - CoinControlDialog - - Amount: - Ð¥ÑмжÑÑ: - - - Fee: - Тѳлбѳр: - - - Amount - Ð¥ÑмжÑÑ - - - Date - Огноо - - - Confirmed - Баталгаажлаа - - - Copy address - ХаÑгийг Ñанах - - - Copy label - Шошгыг Ñанах - - - Copy amount - Ð¥ÑмжÑÑг Ñанах - - - Copy change - Ѳѳрчлѳлтийг Ñанах - - - (no label) - (шошгогүй) - - - (change) - (ѳѳрчлѳх) - - - - EditAddressDialog - - Edit Address - ХаÑгийг ѳѳрчлѳх - - - &Label - &Шошго - - - &Address - &ХаÑг - - - New receiving address - Ð¨Ð¸Ð½Ñ Ñ…Ò¯Ð»ÑÑн авах хаÑг - - - New sending address - Ð¨Ð¸Ð½Ñ Ñвуулах хаÑг - - - Edit receiving address - ХүлÑÑн авах хаÑгийг ѳѳрчлѳх - - - Edit sending address - Явуулах хаÑгийг ѳѳрчлѳх - - - The entered address "%1" is already in the address book. - Таны оруулÑан хаÑг "%1" нь хаÑгийн бүртгÑлд ѳмнѳ нь орÑон байна - - - Could not unlock wallet. - Түрүйвчийн цоожийг тайлж чадÑангүй - - - New key generation failed. - Ð¨Ð¸Ð½Ñ Ñ‚Ò¯Ð»Ñ…Ò¯Ò¯Ñ€ амжилттай гарÑангүй - - - - FreespaceChecker - - - HelpMessageDialog - - version - хувилбар - - - Usage: - Ð¥ÑÑ€ÑглÑÑ: - - - - Intro - - Error - Ðлдаа - - - - OpenURIDialog - - - OptionsDialog - - Options - Сонголтууд - - - MB - МБ - - - IP address of the proxy (e.g. IPv4: 127.0.0.1 / IPv6: ::1) - прокÑигийн IP хаÑг (жишÑÑ Ð½ÑŒ: IPv4: 127.0.0.1 / IPv6: ::1) - - - Client restart required to activate changes. - Ѳѳрчлѳлтүүдийг идÑвхижүүлхийн тулд клиентийг ахин ÑхлүүлÑÑ… шаардлагтай - - - This change would require a client restart. - Ð­Ð½Ñ Ñ³Ñ³Ñ€Ñ‡Ð»Ñ³Ð»Ñ‚Ð¸Ð¹Ð³ оруулахын тулд кли1нт програмыг ахин ÑхлүүлÑÑ… шаардлагтай - - - - OverviewPage - - Available: - Ð¥ÑÑ€ÑглÑж болох Ñ…ÑмжÑÑ: - - - - PaymentServer - - - PeerTableModel - - - QObject - - Amount - Ð¥ÑмжÑÑ - - - N/A - Ðлга Байна - - - - QRImageWidget - - PNG Image (*.png) - PNG форматын зураг (*.png) - - - - RPCConsole - - Client name - Клиентийн нÑÑ€ - - - N/A - Ðлга Байна - - - Client version - Клиентийн хувилбар - - - &Information - &МÑдÑÑллÑл - - - General - Ерѳнхий - - - Network - СүлжÑÑ - - - Name - ÐÑÑ€ - - - Number of connections - Холболтын тоо - - - Block chain - Блокийн цуваа - - - Current number of blocks - Одоогийн блокийн тоо - - - Last block time - Сүүлийн блокийн хугацаа - - - &Open - &ÐÑÑÑ… - - - &Console - &КонÑол - - - Clear console - КонÑолыг цÑвÑрлÑÑ… - - - - ReceiveCoinsDialog - - &Label: - &Шошго: - - - Show - Харуул - - - Remove the selected entries from the list - СонгогдÑон ѳгѳгдлүүдийг уÑтгах - - - Remove - УÑтгах - - - Copy label - Шошгыг Ñанах - - - Copy message - ЗурваÑыг Ñанах - - - Copy amount - Ð¥ÑмжÑÑг Ñанах - - - - ReceiveRequestDialog - - Address - ХаÑг - - - Amount - Ð¥ÑмжÑÑ - - - Label - Шошго - - - Message - Ð—ÑƒÑ€Ð²Ð°Ñ - - - - RecentRequestsTableModel - - Date - Огноо - - - Label - Шошго - - - Message - Ð—ÑƒÑ€Ð²Ð°Ñ - - - Amount - Ð¥ÑмжÑÑ - - - (no label) - (шошгогүй) - - - (no message) - (Ð·ÑƒÑ€Ð²Ð°Ñ Ð°Ð»Ð³Ð°) - - - - SendCoinsDialog - - Send Coins - Ð—Ð¾Ð¾Ñ Ñвуулах - - - automatically selected - автоматаар ÑонгогдÑон - - - Insufficient funds! - Таны данÑны үлдÑгдÑл хүрÑлцÑхгүй байна! - - - Amount: - Ð¥ÑмжÑÑ: - - - Fee: - Тѳлбѳр: - - - Send to multiple recipients at once - ÐÑгÑн зÑÑ€Ñг олон хүлÑÑн авагчруу Ñвуулах - - - Add &Recipient - &ХүлÑÑн авагчийг ÐÑмÑÑ… - - - Clear &All - &Бүгдийг ЦÑвÑÑ€Ð»Ñ - - - Balance: - БаланÑ: - - - Confirm the send action - Явуулах үйлдлийг баталгаажуулна уу - - - S&end - Яв&уул - - - Confirm send coins - Ð—Ð¾Ð¾Ñ Ñвуулахыг баталгаажуулна уу - - - Copy amount - Ð¥ÑмжÑÑг Ñанах - - - Copy change - Ѳѳрчлѳлтийг Ñанах - - - or - ÑÑвÑл - - - The amount to pay must be larger than 0. - Тѳлѳх Ñ…ÑмжÑÑ 0.-Ð¾Ð¾Ñ Ð¸Ñ… байх Ñ‘Ñтой - - - The amount exceeds your balance. - Ð­Ð½Ñ Ñ…ÑмжÑÑ Ñ‚Ð°Ð½Ñ‹ баланÑÐ°Ð°Ñ Ñ…ÑÑ‚ÑÑ€ÑÑн байна. - - - The total exceeds your balance when the %1 transaction fee is included. - ГүйлгÑÑний тѳлбѳр %1-ийг тооцхоор нийт дүн нь таны баланÑÐ°Ð°Ñ Ñ…ÑтрÑÑд байна. - - - Warning: Invalid Bitcoin address - Ðнхаар:Буруу Биткойны хаÑг байна - - - (no label) - (шошгогүй) - - - - SendCoinsEntry - - A&mount: - Дүн: - - - Pay &To: - Тѳлѳх &хаÑг: - - - Enter a label for this address to add it to your address book - Ð­Ð½Ñ Ñ…Ð°Ñгийг ѳѳрийн бүртгÑлдÑÑ Ð°Ð²Ð°Ñ…Ñ‹Ð½ тулд шошго оруул - - - &Label: - &Шошго: - - - Alt+A - Alt+A - - - Paste address from clipboard - КопидÑон хаÑгийг буулгах - - - Alt+P - Alt+P - - - Message: - ЗурваÑ: - - - - ShutdownWindow - - Bitcoin Core is shutting down... - Биткойны цѳм хаагдаж байна... - - - Do not shut down the computer until this window disappears. - Ð­Ð½Ñ Ñ†Ð¾Ð½Ñ…Ñ‹Ð³ хаагдтал компьютерÑÑ Ð±Ò¯Ò¯ унтраагаарай - - - - SignVerifyMessageDialog - - Alt+A - Alt+A - - - Paste address from clipboard - КопидÑон хаÑгийг буулгах - - - Alt+P - Alt+P - - - Clear &All - &Бүгдийг ЦÑвÑÑ€Ð»Ñ - - - - SplashScreen - - - TrafficGraphWidget - - - TransactionDesc - - Open until %1 - %1 хүртÑл нÑÑлттÑй - - - conflicted - зѳрчилдлѳѳ - - - %1/unconfirmed - %1/баталгаажаагүй - - - %1 confirmations - %1 баталгаажилтууд - - - Date - Огноо - - - Message - Ð—ÑƒÑ€Ð²Ð°Ñ - - - Transaction ID - Тодорхойлолт - - - Amount - Ð¥ÑмжÑÑ - - - , has not been successfully broadcast yet - , хараахан амжилттай цацагдаагүй байна - - - unknown - үл мÑдÑгдÑÑ… - - - - TransactionDescDialog - - Transaction details - ГүйлгÑÑний мÑдÑÑллÑл - - - This pane shows a detailed description of the transaction - ГүйлгÑÑний дÑлгÑÑ€Ñнгүйг ÑÐ½Ñ Ð±Ð¸Ñ‡Ð¸Ð» цонх харуулж байна - - - - TransactionTableModel - - Date - Огноо - - - Type - Тѳрѳл - - - Open until %1 - %1 хүртÑл нÑÑлттÑй - - - Confirmed (%1 confirmations) - Баталгаажлаа (%1 баталгаажилт) - - - This block was not received by any other nodes and will probably not be accepted! - Ð­Ð½Ñ Ð±Ð»Ð¾ÐºÐ¸Ð¹Ð³ аль ч нод хүлÑÑн авÑангүй ба ер нь зѳвшѳѳрѳгдѳхгүй байж мÑднÑ! - - - Generated but not accepted - Ò®Ò¯ÑгÑгдÑÑн гÑхдÑÑ Ñ…Ò¯Ð»ÑÑн авагдаагүй - - - Label - Шошго - - - Unconfirmed - Баталгаажаагүй - - - Conflicted - Зѳрчилдлѳѳ - - - Received with - ХүлÑÑн авÑан хаÑг - - - Received from - ХүлÑÑн авагдÑан хаÑг - - - Sent to - ЯвуулÑан хаÑг - - - Payment to yourself - ѲѳрлүүгÑÑ Ñ…Ð¸Ð¹ÑÑн тѳлбѳр - - - Mined - ОлборлогдÑон - - - (n/a) - (алга байна) - - - Transaction status. Hover over this field to show number of confirmations. - ГүйлгÑÑний байдал. Энд хулганыг авчирч баталгаажуулалтын тоог харна уу. - - - Date and time that the transaction was received. - ГүйлгÑÑг хүлÑÑн авÑан огноо ба цаг. - - - Type of transaction. - ГүйлгÑÑний тѳрѳл - - - Amount removed from or added to balance. - БаланÑÐ°Ð°Ñ Ð°Ð²Ð°Ð³Ð´Ñан болон нÑмÑгдÑÑн Ñ…ÑмжÑÑ. - - - - TransactionView - - All - Бүгд - - - Today - Ѳнѳѳдѳр - - - This week - Ð­Ð½Ñ Ð´Ð¾Ð»Ð¾Ð¾ хоног - - - This month - Ð­Ð½Ñ Ñар - - - Last month - ѲнгѳрÑѳн Ñар - - - This year - Ð­Ð½Ñ Ð¶Ð¸Ð» - - - Received with - ХүлÑÑн авÑан хаÑг - - - Sent to - ЯвуулÑан хаÑг - - - To yourself - ѲѳрлүүгÑÑ - - - Mined - ОлборлогдÑон - - - Other - БуÑад - - - Enter address or label to search - Хайлт хийхийн тулд хаÑг ÑÑвÑл шошгыг оруул - - - Min amount - Хамгийн бага Ñ…ÑмжÑÑ - - - Copy address - ХаÑгийг Ñанах - - - Copy label - Шошгыг Ñанах - - - Copy amount - Ð¥ÑмжÑÑг Ñанах - - - Edit label - Шошгыг ѳѳрчлѳх - - - Show transaction details - ГүйлгÑÑний дÑлгÑÑ€Ñнгүйг харуул - - - The transaction history was successfully saved to %1. - ГүйлгÑÑнүй түүхийг %1-д амжилттай хадгаллаа. - - - Comma separated file (*.csv) - ТаÑлалаар туÑгаарлагдÑан Ñ…Ò¯ÑнÑгтÑн файл (.csv) - - - Confirmed - Баталгаажлаа - - - Date - Огноо - - - Type - Тѳрѳл - - - Label - Шошго - - - Address - ХаÑг - - - ID - Тодорхойлолт - - - to - -Ñ€Ò¯Ò¯/руу - - - - UnitDisplayStatusBarControl - - - WalletFrame - - No wallet has been loaded. - Ямар ч түрүйвч ачааллагдÑангүй. - - - - WalletModel - - Send Coins - Ð—Ð¾Ð¾Ñ Ñвуулах - - - - WalletView - - &Export - &ЭкÑпортдлох - - - Export the data in the current tab to a file - СонгогдÑон таб дÑÑрхи дата-г ÑкÑпортлох - - - - bitcoin-core - - Options: - Сонголтууд: - - - Wallet options: - Түрүйвчийн Ñонголтууд: - - - Upgrade wallet to latest format - Түрүйвчийг хамгийн Ñүүлийн үеийн форматруу шинÑчлÑÑ… - - - Loading addresses... - ХаÑгуудыг ачааллаж байна... - - - Error loading wallet.dat: Wallet corrupted - wallet.dat-ыг ачааллахад алдаа гарлаа: Түрүйвч ÑвдÑÑ€ÑÑн байна - - - Error loading wallet.dat - wallet.dat-ыг ачааллахад алдаа гарлаа - - - Invalid -proxy address: '%s' - ЭдгÑÑÑ€ прокÑи хаÑгнууд буруу байна: '%s' - - - Insufficient funds - Таны данÑны үлдÑгдÑл хүрÑлцÑхгүй байна - - - Loading block index... - Блокийн индекÑүүдийг ачааллаж байна... - - - Add a node to connect to and attempt to keep the connection open - Холболт хийхийн тулд мѳн холболтой онгорхой хадгалхын тулд ÑˆÐ¸Ð½Ñ Ð½Ð¾Ð´ нÑм - - - Loading wallet... - Түрүйвчийг ачааллаж байна... - - - Rescanning... - Ðхин уншиж байна... - - - Done loading - Ðчааллаж дууÑлаа - - - Error - Ðлдаа - - - \ No newline at end of file diff --git a/src/qt/locale/bitcoin_ms_MY.ts b/src/qt/locale/bitcoin_ms_MY.ts deleted file mode 100644 index 5e10c80af..000000000 --- a/src/qt/locale/bitcoin_ms_MY.ts +++ /dev/null @@ -1,190 +0,0 @@ - - - AddressBookPage - - Create a new address - Cipta alamat baru - - - &New - &Baru - - - Copy the currently selected address to the system clipboard - Salin alamat terpilih ke dalam sistem papan klip - - - &Copy - &Salin - - - &Copy Address - &Salin Alamat - - - &Export - &Eksport - - - &Delete - &Padam - - - Choose the address to send coins to - Pilih alamat untuk menghantar syiling - - - Choose the address to receive coins with - Pilih alamat untuk menerima syiling - - - C&hoose - &Pilih - - - Comma separated file (*.csv) - Fail yang dipisahkan dengan koma - - - - AddressTableModel - - Address - Alamat - - - - AskPassphraseDialog - - - BitcoinGUI - - &Options... - Pilihan - - - - ClientModel - - - CoinControlDialog - - - EditAddressDialog - - Edit Address - Alamat - - - &Address - Alamat - - - - FreespaceChecker - - - HelpMessageDialog - - - Intro - - - OpenURIDialog - - - OptionsDialog - - - OverviewPage - - - PaymentServer - - - PeerTableModel - - - QObject - - - QRImageWidget - - - RPCConsole - - - ReceiveCoinsDialog - - - ReceiveRequestDialog - - Address - Alamat - - - - RecentRequestsTableModel - - - SendCoinsDialog - - Balance: - Baki - - - - SendCoinsEntry - - - ShutdownWindow - - - SignVerifyMessageDialog - - - SplashScreen - - - TrafficGraphWidget - - - TransactionDesc - - - TransactionDescDialog - - - TransactionTableModel - - - TransactionView - - Comma separated file (*.csv) - Fail yang dipisahkan dengan koma - - - Address - Alamat - - - - UnitDisplayStatusBarControl - - - WalletFrame - - - WalletModel - - - WalletView - - &Export - &Eksport - - - - bitcoin-core - - \ No newline at end of file diff --git a/src/qt/locale/bitcoin_nb.ts b/src/qt/locale/bitcoin_nb.ts deleted file mode 100644 index 13bf4bd19..000000000 --- a/src/qt/locale/bitcoin_nb.ts +++ /dev/null @@ -1,3592 +0,0 @@ - - - AddressBookPage - - Right-click to edit address or label - Høyreklikk for Ã¥ redigere adressen eller merkelappen - - - Create a new address - Opprett en ny addresse - - - &New - &Ny - - - Copy the currently selected address to the system clipboard - Kopier den valgte adressen til systemets utklippstavle - - - &Copy - &Kopier - - - C&lose - &Lukk - - - &Copy Address - &Kopier Adresse - - - Delete the currently selected address from the list - Slett den valgte adressen fra listen. - - - Export the data in the current tab to a file - Eksporter data fra nÃ¥værende fane til fil - - - &Export - &Eksporter - - - &Delete - &Slett - - - Choose the address to send coins to - Velg adressen Ã¥ sende mynter til - - - Choose the address to receive coins with - Velg adressen til Ã¥ motta mynter med - - - C&hoose - &Velg - - - Sending addresses - Utsendingsadresser - - - Receiving addresses - Mottaksadresser - - - These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins. - Dette er dine Bitcoin-adresser for Ã¥ sende betalinger. Alltid sjekk beløp og mottakeradresse før sending av mynter. - - - These are your Bitcoin addresses for receiving payments. It is recommended to use a new receiving address for each transaction. - Dette er dine Bitcoin-adresser for Ã¥ sende betalinger. Det er anbefalt Ã¥ bruk en ny mottaksadresse for hver transaksjon. - - - Copy &Label - Kopier &Merkelapp - - - &Edit - &Rediger - - - Export Address List - Ekporter Adresseliste - - - Comma separated file (*.csv) - Kommaseparert fil (*.csv) - - - Exporting Failed - Eksportering feilet - - - There was an error trying to save the address list to %1. Please try again. - Det oppstod en feil under lagring av adresselisten til %1. Vennligst prøv pÃ¥ nytt. - - - - AddressTableModel - - Label - Merkelapp - - - Address - Adresse - - - (no label) - (ingen merkelapp) - - - - AskPassphraseDialog - - Passphrase Dialog - Dialog for Adgangsfrase - - - Enter passphrase - Angi adgangsfrase - - - New passphrase - Ny adgangsfrase - - - Repeat new passphrase - Gjenta ny adgangsfrase - - - Encrypt wallet - Krypter lommebok - - - This operation needs your wallet passphrase to unlock the wallet. - Denne operasjonen krever adgangsfrasen til lommeboken for Ã¥ lÃ¥se den opp. - - - Unlock wallet - LÃ¥s opp lommebok - - - This operation needs your wallet passphrase to decrypt the wallet. - Denne operasjonen krever adgangsfrasen til lommeboken for Ã¥ dekryptere den. - - - Decrypt wallet - Dekrypter lommebok - - - Change passphrase - Endre adgangsfrase - - - Confirm wallet encryption - Bekreft kryptering av lommebok - - - Warning: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR BITCOINS</b>! - Advarsel: Hvis du krypterer lommeboken og mister adgangsfrasen, sÃ¥ vil du <b>MISTE ALLE DINE BITCOINS</b>! - - - Are you sure you wish to encrypt your wallet? - Er du sikker pÃ¥ at du vil kryptere lommeboken? - - - Bitcoin Core 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. - Bitcoin Core vil nÃ¥ avslutte for Ã¥ fullføre krypteringsprosessen. Husk at kryptering av lommeboken ikke kan beskytte fullstendig mot tyveri av dine bitcoins hvis datamaskinen din er infisert av skadevare. - - - 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. - VIKTIG: Tidligere sikkerhetskopier av din lommebokfil bør erstattes med den nylig genererte og krypterte filen, da de blir ugyldiggjort av sikkerhetshensyn sÃ¥ snart du begynner Ã¥ bruke den nye krypterte lommeboken. - - - Warning: The Caps Lock key is on! - Advarsel: Caps Lock er pÃ¥! - - - Wallet encrypted - Lommebok kryptert - - - 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>. - Oppgi adgangsfrasen til lommeboken.<br/>Vennligst bruk en adgangsfrase med <b>ti eller flere tilfeldige tegn</b>, eller <b>Ã¥tte eller flere ord</b>. - - - Enter the old passphrase and new passphrase to the wallet. - Oppgi gammel og ny adgangsfrase til lommeboken. - - - Wallet encryption failed - Kryptering av lommebok feilet - - - Wallet encryption failed due to an internal error. Your wallet was not encrypted. - Kryptering av lommebok feilet pÃ¥ grunn av en intern feil. Din lommebok ble ikke kryptert. - - - The supplied passphrases do not match. - De angitte adgangsfrasene er ulike. - - - Wallet unlock failed - OpplÃ¥sing av lommebok feilet - - - The passphrase entered for the wallet decryption was incorrect. - Adgangsfrasen angitt for dekryptering av lommeboken var feil. - - - Wallet decryption failed - Dekryptering av lommebok feilet - - - Wallet passphrase was successfully changed. - Adgangsfrase for lommebok endret. - - - - BitcoinGUI - - Sign &message... - Signer &melding... - - - Synchronizing with network... - Synkroniserer med nettverk... - - - &Overview - &Oversikt - - - Node - Node - - - Show general overview of wallet - Vis generell oversikt over lommeboken - - - &Transactions - &Transaksjoner - - - Browse transaction history - Vis transaksjonshistorikk - - - E&xit - &Avslutt - - - Quit application - Avslutt applikasjonen - - - About &Qt - Om &Qt - - - Show information about Qt - Vis informasjon om Qt - - - &Options... - &Innstillinger... - - - &Encrypt Wallet... - &Krypter Lommebok... - - - &Backup Wallet... - Lag &Sikkerhetskopi av Lommebok... - - - &Change Passphrase... - &Endre Adgangsfrase... - - - &Sending addresses... - &Utsendingsadresser... - - - &Receiving addresses... - &Mottaksadresser... - - - Open &URI... - Ã…pne &URI... - - - Bitcoin Core client - Bitcoin Core-klient - - - Importing blocks from disk... - Importere blokker... - - - Reindexing blocks on disk... - Reindekserer blokker pÃ¥ harddisk... - - - Send coins to a Bitcoin address - Send til en Bitcoin-adresse - - - Backup wallet to another location - Sikkerhetskopier lommebok til annet sted - - - Change the passphrase used for wallet encryption - Endre adgangsfrasen brukt for kryptering av lommebok - - - &Debug window - &Feilsøkingsvindu - - - Open debugging and diagnostic console - Ã…pne konsoll for feilsøk og diagnostikk - - - &Verify message... - &Verifiser melding... - - - Bitcoin - Bitcoin - - - Wallet - Lommebok - - - &Send - &Send - - - &Receive - &Motta - - - Show information about Bitcoin Core - Vis informasjon om Bitcoin Core - - - &Show / Hide - &Vis / Skjul - - - Show or hide the main Window - Vis eller skjul hovedvinduet - - - Encrypt the private keys that belong to your wallet - Krypter de private nøklene som tilhører lommeboken din - - - Sign messages with your Bitcoin addresses to prove you own them - Signer en melding med Bitcoin-adressene dine for Ã¥ bevise at du eier dem - - - Verify messages to ensure they were signed with specified Bitcoin addresses - Bekreft meldinger for Ã¥ være sikker pÃ¥ at de ble signert av en angitt Bitcoin-adresse - - - &File - &Fil - - - &Settings - &Innstillinger - - - &Help - &Hjelp - - - Tabs toolbar - Verktøylinje for faner - - - Bitcoin Core - Bitcoin Core - - - Request payments (generates QR codes and bitcoin: URIs) - Forespør betalinger (genererer QR-koder og bitcoin: URIer) - - - &About Bitcoin Core - &Om Bitcoin Core - - - Modify configuration options for Bitcoin Core - Endre konfigurasjonsvalg for Bitcoin Core - - - Show the list of used sending addresses and labels - Vis listen av brukte utsendingsadresser og merkelapper - - - Show the list of used receiving addresses and labels - Vis listen over bruke mottaksadresser og merkelapper - - - Open a bitcoin: URI or payment request - Ã…pne en Bitcoin: URI eller betalingsetterspørring - - - &Command-line options - &Kommandolinjevalg - - - Show the Bitcoin Core help message to get a list with possible Bitcoin command-line options - Vis Bitcoin Core hjelpemeldingen for Ã¥ fÃ¥ en liste med mulige kommandolinjevalg - - - %n active connection(s) to Bitcoin network - %n aktiv forbindelse til Bitcoin-nettverket%n aktive forbindelser til Bitcoin-nettverket - - - No block source available... - Ingen kilde for blokker tilgjengelig... - - - Processed %n block(s) of transaction history. - Lastet %n blokk med transaksjonshistorikk.Lastet %n blokker med transaksjonshistorikk. - - - %n hour(s) - %n time%n timer - - - %n day(s) - %n dag%n dager - - - %n week(s) - %n uke%n uker - - - %1 and %2 - %1 og %2 - - - %n year(s) - %n Ã¥r%n Ã¥r - - - %1 behind - %1 bak - - - Last received block was generated %1 ago. - Siste mottatte blokk ble generert for %1 siden. - - - Transactions after this will not yet be visible. - Transaksjoner etter dette vil ikke være synlige enda. - - - Error - Feil - - - Warning - Advarsel - - - Information - Informasjon - - - Up to date - Oppdatert - - - Catching up... - Laster ned... - - - Date: %1 - - Dato: %1 - - - - Amount: %1 - - Beløp: %1: - - - - Type: %1 - - Type: %1 - - - - Label: %1 - - Merkelapp: %1 - - - - Address: %1 - - Adresse: %1 - - - - Sent transaction - Sendt transaksjon - - - Incoming transaction - Innkommende transaksjon - - - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - Lommeboken er <b>kryptert</b> og for tiden <b>lÃ¥st opp</b> - - - Wallet is <b>encrypted</b> and currently <b>locked</b> - Lommeboken er <b>kryptert</b> og for tiden <b>lÃ¥st</b> - - - - ClientModel - - Network Alert - Nettverksvarsel - - - - CoinControlDialog - - Coin Selection - Mynt Valg - - - Quantity: - Mengde: - - - Bytes: - Bytes: - - - Amount: - Beløp: - - - Priority: - Prioritet: - - - Fee: - Avgift: - - - Dust: - Støv: - - - After Fee: - Totalt: - - - Change: - Veksel: - - - (un)select all - velg (fjern) alle - - - Tree mode - Trevisning - - - List mode - Listevisning - - - Amount - Beløp - - - Received with label - Mottatt med merkelapp - - - Received with address - Mottatt med adresse - - - Date - Dato - - - Confirmations - Bekreftelser - - - Confirmed - Bekreftet - - - Priority - Prioritet - - - Copy address - Kopier adresse - - - Copy label - Kopier merkelapp - - - Copy amount - Kopier beløp - - - Copy transaction ID - Kopier transaksjons-ID - - - Lock unspent - LÃ¥s ubrukte - - - Unlock unspent - LÃ¥s opp ubrukte - - - Copy quantity - Kopier mengde - - - Copy fee - Kopier gebyr - - - Copy after fee - Kopier totalt - - - Copy bytes - Kopier bytes - - - Copy priority - Kopier prioritet - - - Copy dust - Kopier støv - - - Copy change - Kopier veksel - - - highest - høyest - - - higher - høyere - - - high - høy - - - medium-high - medium-høy - - - medium - medium - - - low-medium - lav-medium - - - low - lav - - - lower - lavere - - - lowest - lavest - - - (%1 locked) - (%1 lÃ¥st) - - - none - ingen - - - This label turns red if the transaction size is greater than 1000 bytes. - Denne teksten blir rød hvis transaksjonsstørrelsen er større enn 1000 bytes. - - - This label turns red if the priority is smaller than "medium". - Denne teksten blir rød hvis prioriteten er lavere enn "medium". - - - This label turns red if any recipient receives an amount smaller than %1. - Denne teksten blir rød dersom en mottaker mottar et beløp mindre enn %1. - - - Can vary +/- %1 satoshi(s) per input. - Kan variere +/- %1 satoshi(er) per input. - - - yes - ja - - - no - nei - - - This means a fee of at least %1 per kB is required. - Dette betyr at et gebyr pÃ¥ minst %1 per KB er pÃ¥krevd. - - - Can vary +/- 1 byte per input. - Kan variere +/- 1 byte per input. - - - Transactions with higher priority are more likely to get included into a block. - Transaksjoner med høyere prioritet har mer sannsynlighet for Ã¥ bli inkludert i en blokk. - - - (no label) - (ingen merkelapp) - - - change from %1 (%2) - veksel fra %1 (%2) - - - (change) - (veksel) - - - - EditAddressDialog - - Edit Address - Rediger adresse - - - &Label - &Merkelapp - - - The label associated with this address list entry - Merkelappen koblet til denne adresseliste oppføringen - - - The address associated with this address list entry. This can only be modified for sending addresses. - Adressen til denne oppføringen i adresseboken. Denne kan kun endres for utsendingsadresser. - - - &Address - &Adresse - - - New receiving address - Ny mottaksadresse - - - New sending address - Ny utsendingsadresse - - - Edit receiving address - Rediger mottaksadresse - - - Edit sending address - Rediger utsendingsadresse - - - The entered address "%1" is already in the address book. - Den oppgitte adressen "%1" er allerede i adresseboken. - - - The entered address "%1" is not a valid Bitcoin address. - Den angitte adressed "%1" er ikke en gyldig Bitcoin-adresse. - - - Could not unlock wallet. - Kunne ikke lÃ¥se opp lommeboken. - - - New key generation failed. - Generering av ny nøkkel feilet. - - - - FreespaceChecker - - A new data directory will be created. - En ny datamappe vil bli laget. - - - name - navn - - - Directory already exists. Add %1 if you intend to create a new directory here. - Mappe finnes allerede. Legg til %1 hvis du vil lage en ny mappe her. - - - Path already exists, and is not a directory. - Snarvei finnes allerede, og er ikke en mappe. - - - Cannot create data directory here. - Kan ikke lage datamappe her. - - - - HelpMessageDialog - - Bitcoin Core - Bitcoin Core - - - version - versjon - - - (%1-bit) - (%1-bit) - - - About Bitcoin Core - Om Bitcoin Core - - - Command-line options - Kommandolinjevalg - - - Usage: - Bruk: - - - command-line options - kommandolinjevalg - - - - Intro - - Welcome - Velkommen - - - Welcome to Bitcoin Core. - Velkommen til Bitcoin Core. - - - As this is the first time the program is launched, you can choose where Bitcoin Core will store its data. - Siden dette er første gang programmet starter, kan du nÃ¥ velge hvor Bitcoin Core skal lagre sine data. - - - Bitcoin Core will download and store a copy of the Bitcoin block chain. At least %1GB of data will be stored in this directory, and it will grow over time. The wallet will also be stored in this directory. - Bitcoin Core vil laste ned og lagre en kopi av Bitcoin sin blokkjede. Minst %1GB av data vil bli lagret i denne mappen, og det vil vokse over tid. Lommeboken vil ogsÃ¥ bli lagret i denne mappen. - - - Use the default data directory - Bruk standard datamappe - - - Use a custom data directory: - Bruk en egendefinert datamappe: - - - Bitcoin Core - Bitcoin Core - - - Error: Specified data directory "%1" cannot be created. - Feil: Den oppgitte datamappen "%1" kan ikke opprettes. - - - Error - Feil - - - %n GB of free space available - %n GB med ledig lagringsplass%n GB med ledig lagringsplass - - - (of %n GB needed) - (av %n GB som trengs)(av %n GB som trengs) - - - - OpenURIDialog - - Open URI - Ã…pne URI - - - Open payment request from URI or file - Ã…pne betalingsetterspørring fra URI eller fil - - - URI: - URI: - - - Select payment request file - Velg fil for betalingsetterspørring - - - Select payment request file to open - Velg fil for betalingsetterspørring Ã¥ Ã¥pne - - - - OptionsDialog - - Options - Innstillinger - - - &Main - &Hoved - - - Size of &database cache - Størrelse pÃ¥ &database hurtigbuffer - - - MB - MB - - - Number of script &verification threads - Antall script &verifikasjonstrÃ¥der - - - Accept connections from outside - Tillat tilkoblinger fra utsiden - - - Allow incoming connections - Tillatt innkommende tilkoblinger - - - IP address of the proxy (e.g. IPv4: 127.0.0.1 / IPv6: ::1) - IP-adressen til proxyen (f.eks. IPv4: 127.0.0.1 / IPv6: ::1) - - - Minimize instead of exit the application when the window is closed. When this option is enabled, the application will be closed only after selecting Exit in the menu. - Minimer i stedet for Ã¥ avslutte applikasjonen nÃ¥r vinduet lukkes. NÃ¥r dette er valgt, vil applikasjonen avsluttes kun etter at Avslutte er valgt i menyen. - - - The user interface language can be set here. This setting will take effect after restarting Bitcoin Core. - SprÃ¥k for brukergrensesnittet kan velges her. Denne innstillingen trer i kraft etter omstart av Bitcoin Core. - - - 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 |. - Tredjepart URLer (f. eks. en blokkutforsker) som dukker opp i transaksjonsfanen som kontekst meny elementer. %s i URLen er erstattet med transaksjonen sin hash. Flere URLer er separert av en vertikal linje |. - - - Third party transaction URLs - Tredjepart transaksjon URLer - - - Active command-line options that override above options: - Aktive kommandolinjevalg som overstyrer valgene ovenfor: - - - Reset all client options to default. - Tilbakestill alle klient valg til standard - - - &Reset Options - &Tilbakestill Instillinger - - - &Network - &Nettverk - - - Automatically start Bitcoin Core after logging in to the system. - Start Bitcoin Core automatisk ved oppstart av datamaskinen. - - - &Start Bitcoin Core on system login - &Start Bitcoin Core ved oppstart av datamaskinen - - - (0 = auto, <0 = leave that many cores free) - (0 = automatisk, <0 = la sÃ¥ mange kjerner være ledig) - - - W&allet - L&ommebok - - - Expert - Ekspert - - - Enable coin &control features - Aktiver &myntkontroll funksjoner - - - 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. - Hvis du sperrer for bruk av ubekreftet veksel, kan ikke vekselen fra transaksjonen bli brukt før transaksjonen har minimum en bekreftelse. Dette pÃ¥virker ogsÃ¥ hvordan balansen din blir beregnet. - - - &Spend unconfirmed change - &Bruk ubekreftet veksel - - - Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled. - Ã…pne automatisk Bitcoin klientporten pÃ¥ ruteren. Dette virker kun om din ruter støtter UPnP og dette er pÃ¥slÃ¥tt. - - - Map port using &UPnP - Sett opp port ved hjelp av &UPnP - - - Connect to the Bitcoin network through a SOCKS5 proxy. - Koble til Bitcoin-nettverket gjennom en SOCKS5 proxy. - - - &Connect through SOCKS5 proxy (default proxy): - &Koble til gjennom SOCKS5 proxy (standardvalg proxy): - - - Proxy &IP: - Proxy &IP: - - - &Port: - &Port: - - - Port of the proxy (e.g. 9050) - Proxyens port (f.eks. 9050) - - - &Window - &Vindu - - - Show only a tray icon after minimizing the window. - Vis kun ikon i systemkurv etter minimering av vinduet. - - - &Minimize to the tray instead of the taskbar - &Minimer til systemkurv istedenfor oppgavelinjen - - - M&inimize on close - M&inimer ved lukking - - - &Display - &Visning - - - User Interface &language: - &SprÃ¥k for brukergrensesnitt - - - &Unit to show amounts in: - &Enhet for visning av beløper: - - - Choose the default subdivision unit to show in the interface and when sending coins. - Velg standard delt enhet for visning i grensesnittet og for sending av bitcoins. - - - Whether to show coin control features or not. - Skal myntkontroll funksjoner vises eller ikke. - - - &OK - &OK - - - &Cancel - &Avbryt - - - default - standardverdi - - - none - ingen - - - Confirm options reset - Bekreft tilbakestilling av innstillinger - - - Client restart required to activate changes. - Omstart av klienten er nødvendig for Ã¥ aktivere endringene. - - - Client will be shut down. Do you want to proceed? - Klienten vil bli lukket. Ønsker du Ã¥ gÃ¥ videre? - - - This change would require a client restart. - Denne endringen krever omstart av klienten. - - - The supplied proxy address is invalid. - Angitt proxyadresse er ugyldig. - - - - OverviewPage - - Form - Skjema - - - The displayed information may be out of date. Your wallet automatically synchronizes with the Bitcoin network after a connection is established, but this process has not completed yet. - Informasjonen som vises kan være foreldet. Din lommebok synkroniseres automatisk med Bitcoin-nettverket etter at tilkobling er opprettet, men denne prosessen er ikke ferdig enda. - - - Watch-only: - Kun observerbar: - - - Available: - Tilgjengelig: - - - Your current spendable balance - Din nÃ¥værende saldo - - - Pending: - Under behandling: - - - Total of transactions that have yet to be confirmed, and do not yet count toward the spendable balance - Totalt antall ubekreftede transaksjoner som ikke teller med i saldo - - - Immature: - Umoden: - - - Mined balance that has not yet matured - Minet saldo har ikke modnet enda - - - Balances - Saldoer - - - Total: - Totalt: - - - Your current total balance - Din nÃ¥værende saldo - - - Your current balance in watch-only addresses - Din nÃ¥værende balanse i kun observerbare adresser - - - Spendable: - Kan brukes: - - - Recent transactions - Nylige transaksjoner - - - Unconfirmed transactions to watch-only addresses - Ubekreftede transaksjoner til kun observerbare adresser - - - Mined balance in watch-only addresses that has not yet matured - Utvunnet balanse i kun observerbare adresser som ennÃ¥ ikke har modnet - - - Current total balance in watch-only addresses - NÃ¥værende totale balanse i kun observerbare adresser - - - - PaymentServer - - URI handling - URI-hÃ¥ndtering - - - Invalid payment address %1 - Ugyldig betalingsadresse %1 - - - Payment request rejected - Betalingsetterspørring avvist - - - Payment request network doesn't match client network. - Nettverk for betalingsetterspørring er ikke i overensstemmelse med klientnettverket. - - - Payment request is not initialized. - Betalingsetterspørringen er ikke initialisert. - - - Requested payment amount of %1 is too small (considered dust). - Forespurt betalingsmengde pÃ¥ %1 er for liten (betraktet som støv). - - - Payment request error - Betalingsetterspørringsfeil - - - Cannot start bitcoin: click-to-pay handler - Kan ikke starte Bitcoin: klikk-og-betal hÃ¥ndterer - - - Payment request fetch URL is invalid: %1 - Hentelenke for betalingsetterspørring er ugyldig: %1 - - - URI cannot be parsed! This can be caused by an invalid Bitcoin address or malformed URI parameters. - URI kan ikke fortolkes! Dette kan være forÃ¥rsaket av en ugyldig Bitcoin-adresse eller feilformede URI-parametre. - - - Payment request file handling - FilhÃ¥ndtering for betalingsetterspørring - - - Payment request file cannot be read! This can be caused by an invalid payment request file. - Betalingsetterspørringsfil kan ikke leses! Dette kan være forÃ¥rsaket av en ugyldig betalingsetterspørringsfil. - - - Payment request expired. - Betalingsetterspørringen har utløpt. - - - Unverified payment requests to custom payment scripts are unsupported. - Uverifiserte betalingsforespørsler til egentilpassede betalingscript er ikke støttet. - - - Invalid payment request. - Ugyldig betalingsetterspørring. - - - Refund from %1 - Refundering fra %1 - - - Payment request %1 is too large (%2 bytes, allowed %3 bytes). - Betalingsforespørsel %1 er for stor (%2 bytes, tillatt %3 bytes). - - - Payment request DoS protection - Betalingsforespørsel DoS-beskyttelse - - - Error communicating with %1: %2 - Feil i kommunikasjonen med %1: %2 - - - Payment request cannot be parsed! - Betaingsetterspørrelse kan ikke fortolkes! - - - Bad response from server %1 - DÃ¥rlig svar fra server %1 - - - Payment acknowledged - Betaling erkjent - - - Network request error - Nettverksforespørsel feil - - - - PeerTableModel - - User Agent - Brukeragent - - - Node/Service - Node/Tjeneste - - - Ping Time - Ping-tid - - - - QObject - - Amount - Beløp - - - Enter a Bitcoin address (e.g. %1) - Oppgi en Bitcoin-adresse (f.eks. %1) - - - %1 d - %1 d - - - %1 h - %1 t - - - %1 m - %1 m - - - %1 s - %1 s - - - None - Ingen - - - N/A - - - - - %1 ms - %1 ms - - - - QRImageWidget - - &Save Image... - &Lagre Bilde... - - - &Copy Image - &Kopier Bilde - - - Save QR Code - Lagre QR-kode - - - PNG Image (*.png) - PNG-bilde (*.png) - - - - RPCConsole - - Client name - Klientnavn - - - N/A - - - - - Client version - Klientversjon - - - &Information - &Informasjon - - - Debug window - Feilsøkingsvindu - - - General - Generelt - - - Using OpenSSL version - Bruker OpenSSL versjon - - - Using BerkeleyDB version - Bruker BerkeleyDB versjon - - - Startup time - Oppstartstidspunkt - - - Network - Nettverk - - - Name - Navn - - - Number of connections - Antall tilkoblinger - - - Block chain - Blokkjeden - - - Current number of blocks - NÃ¥værende antall blokker - - - Open the Bitcoin Core debug log file from the current data directory. This can take a few seconds for large log files. - Ã…pne Bitcoin Core sin loggfil for feilsøk fra gjeldende datamappe. Dette kan ta noen sekunder for store loggfiler. - - - Received - Mottatt - - - Sent - Sendt - - - &Peers - &Noder - - - Select a peer to view detailed information. - Velg en node for Ã¥ vise detaljert informasjon. - - - Direction - Retning - - - Version - Versjon - - - User Agent - Brukeragent - - - Services - Tjenester - - - Starting Height - Starthøyde - - - Sync Height - Synkroniseringshøyde - - - Ban Score - Ban Poengsum - - - Connection Time - Tilkoblingstid - - - Last Send - Siste Sendte - - - Last Receive - Siste Mottatte - - - Bytes Sent - Byte Sendt - - - Bytes Received - Byte Mottatt - - - Ping Time - Ping-tid - - - Time Offset - Tidsforskyvning - - - Last block time - Tidspunkt for siste blokk - - - &Open - &Ã…pne - - - &Console - &Konsoll - - - &Network Traffic - &Nettverkstrafikk - - - &Clear - &Fjern - - - Totals - Totalt - - - In: - Inn: - - - Out: - Ut: - - - Build date - Byggedato - - - Debug log file - Loggfil for feilsøk - - - Clear console - Tøm konsoll - - - Welcome to the Bitcoin Core RPC console. - Velkommen til Bitcoin Core sin RPC-konsoll. - - - Use up and down arrows to navigate history, and <b>Ctrl-L</b> to clear screen. - Bruk opp og ned pil for Ã¥ navigere historikken, og <b>Ctrl-L</b> for Ã¥ tømme skjermen. - - - Type <b>help</b> for an overview of available commands. - Skriv <b>help</b> for en oversikt over kommandoer. - - - %1 B - %1 B - - - %1 KB - %1 KB - - - %1 MB - %1 MB - - - %1 GB - %1 GB - - - via %1 - via %1 - - - never - aldri - - - Inbound - Innkommende - - - Outbound - UtgÃ¥ende - - - Unknown - Ukjent - - - Fetching... - Henter … - - - - ReceiveCoinsDialog - - &Amount: - &Beløp: - - - &Label: - &Merkelapp: - - - &Message: - &Melding: - - - Reuse one of the previously used receiving addresses. Reusing addresses has security and privacy issues. Do not use this unless re-generating a payment request made before. - Gjenbruk en av de tidligere brukte mottaksadressene. Gjenbruk av adresser har sikkerhets- og personvernsutfordringer. Ikke bruk dette med unntak for Ã¥ gjennopprette en betalingsetterspørring som ble gjort tidligere. - - - R&euse an existing receiving address (not recommended) - Gj&enbruk en eksisterende mottaksadresse (ikke anbefalt) - - - An optional message to attach to the payment request, which will be displayed when the request is opened. Note: The message will not be sent with the payment over the Bitcoin network. - En valgfri melding Ã¥ tilknytte betalingsetterspørringen, som vil bli vist nÃ¥r forespørselen er Ã¥pnet. Meldingen vil ikke bli sendt med betalingen over Bitcoin-nettverket. - - - An optional label to associate with the new receiving address. - En valgfri merkelapp Ã¥ tilknytte den nye mottakeradressen. - - - Use this form to request payments. All fields are <b>optional</b>. - Bruk dette skjemaet til betalingsforespørsler. Alle felt er <b>valgfrie</b>. - - - An optional amount to request. Leave this empty or zero to not request a specific amount. - Et valgfritt beløp Ã¥ etterspørre. La stÃ¥ tomt eller null for ikke Ã¥ etterspørre et spesifikt beløp. - - - Clear all fields of the form. - Fjern alle felter fra skjemaet. - - - Clear - Fjern - - - Requested payments history - Etterspurt betalingshistorikk - - - &Request payment - &Etterspør betaling - - - Show the selected request (does the same as double clicking an entry) - Vis den valgte etterspørringen (gjør det samme som Ã¥ dobbelklikke pÃ¥ en oppføring) - - - Show - Vis - - - Remove the selected entries from the list - Fjern de valgte oppføringene fra listen - - - Remove - Fjern - - - Copy label - Kopier merkelapp - - - Copy message - Kopier melding - - - Copy amount - Kopier beløp - - - - ReceiveRequestDialog - - QR Code - QR-kode - - - Copy &URI - Kopier &URI - - - Copy &Address - Kopier &Adresse - - - &Save Image... - &Lagre Bilde... - - - Request payment to %1 - Etterspør betaling til %1 - - - Payment information - Betalingsinformasjon - - - URI - URI - - - Address - Adresse - - - Amount - Beløp - - - Label - Merkelapp - - - Message - Melding - - - Resulting URI too long, try to reduce the text for label / message. - Resultat URI for lang, prøv Ã¥ redusere teksten for merkelapp / melding. - - - Error encoding URI into QR Code. - Feil ved koding av URI til QR-kode. - - - - RecentRequestsTableModel - - Date - Dato - - - Label - Merkelapp - - - Message - Melding - - - Amount - Beløp - - - (no label) - (ingen merkelapp) - - - (no message) - (ingen melding) - - - (no amount) - (intet beløp) - - - - SendCoinsDialog - - Send Coins - Send Bitcoins - - - Coin Control Features - Myntkontroll Funksjoner - - - Inputs... - Inndata... - - - automatically selected - automatisk valgte - - - Insufficient funds! - Utilstrekkelige midler! - - - Quantity: - Mengde: - - - Bytes: - Bytes: - - - Amount: - Beløp: - - - Priority: - Prioritet: - - - Fee: - Gebyr: - - - After Fee: - Etter Gebyr: - - - Change: - Veksel: - - - If this is activated, but the change address is empty or invalid, change will be sent to a newly generated address. - Hvis dette er aktivert, men adressen for veksel er tom eller ugyldig, vil veksel bli sendt til en nylig generert adresse. - - - Custom change address - Egendefinert adresse for veksel - - - Transaction Fee: - Transaksjonsgebyr: - - - Choose... - Velg... - - - collapse fee-settings - Legg ned gebyrinnstillinger - - - per kilobyte - per kilobyte - - - 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. - Hvis den egendefinerte avgiften er satt til 1000 satoshis og transaksjonen bare er 250 bytes, da vil "per kilobyte" bare betale 250 satoshis i gebyr, mens "minstebeløp" betaler 1000 satoshis. For transaksjoner større enn en kilobyte vil begge betale for antall kilobyte. - - - Hide - Skjul - - - total at least - minstebeløp - - - 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. - Betaling av bare minimumsavgiften gÃ¥r helt fint sÃ¥ lenge det er mindre transaksjonsvolum enn plass i blokkene. Men vær klar over at dette kan ende opp i en transaksjon som aldri blir bekreftet nÃ¥r det er mer etterspørsel etter Bitcoin-transaksjoner enn nettverket kan behandle. - - - (read the tooltip) - (les verktøytipset) - - - Recommended: - Anbefalt: - - - Custom: - Egendefinert: - - - (Smart fee not initialized yet. This usually takes a few blocks...) - (Smartgebyr ikke innført ennÃ¥. Dette tar vanligvis noen blokker...) - - - Confirmation time: - Bekreftelsestid: - - - normal - normal - - - fast - rask - - - Send as zero-fee transaction if possible - Send uten transaksjonsgebyr hvis mulig - - - (confirmation may take longer) - (bekreftelse kan ta lengre tid) - - - Send to multiple recipients at once - Send til flere enn en mottaker - - - Add &Recipient - Legg til &Mottaker - - - Clear all fields of the form. - Fjern alle felter fra skjemaet. - - - Dust: - Støv: - - - Clear &All - Fjern &Alt - - - Balance: - Saldo: - - - Confirm the send action - Bekreft sending - - - S&end - S&end - - - Confirm send coins - Bekreft sending av bitcoins - - - %1 to %2 - %1 til %2 - - - Copy quantity - Kopier mengde - - - Copy amount - Kopier beløp - - - Copy fee - Kopier gebyr - - - Copy after fee - Kopier fra gebyr - - - Copy bytes - Kopier bytes - - - Copy priority - Kopier prioritet - - - Copy change - Kopier veksel - - - or - eller - - - The amount to pay must be larger than 0. - Beløpet som skal betales mÃ¥ være over 0. - - - The amount exceeds your balance. - Beløpet overstiger saldo. - - - The total exceeds your balance when the %1 transaction fee is included. - Totalbeløpet overstiger saldo etter at %1 transaksjonsgebyr er lagt til. - - - Transaction creation failed! - Opprettelse av transaksjon feilet! - - - 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. - Transaksjonen ble avvist! Dette kan skje hvis noen av myntene i lommeboken allerede er brukt, som hvis du kopierte wallet.dat og mynter ble brukt i kopien uten Ã¥ bli markert som brukt her. - - - A fee higher than %1 is considered an absurdly high fee. - Et gebyr høyere enn %1 er ansett som et absurd høyt gebyr. - - - Payment request expired. - Betalingsetterspørringen har utløpt. - - - Estimated to begin confirmation within %n block(s). - AnslÃ¥tt til Ã¥ begynne bekreftelse innen %n blokk.AnslÃ¥tt til Ã¥ begynne bekreftelse innen %n blokker. - - - Pay only the minimum fee of %1 - Betal kun minimumsgebyret pÃ¥ %1 - - - Total Amount %1<span style='font-size:10pt;font-weight:normal;'><br />(=%2)</span> - Totalt Beløp %1<span style='font-size:10pt;font-weight:normal;'><br />(=%2)</span> - - - The recipient address is not valid. Please recheck. - Mottakeradressen er ikke gyldig. Vennligst kontroller pÃ¥ nytt. - - - Duplicate address found: addresses should only be used once each. - Gjenbruk av adresse funnet: adresser skal bare brukes en gang hver. - - - Warning: Invalid Bitcoin address - Advarsel: Ugyldig Bitcoin-adresse - - - (no label) - (ingen merkelapp) - - - Warning: Unknown change address - Advarsel: Ukjent adresse for veksel - - - Copy dust - Kopier støv - - - Are you sure you want to send? - Er du sikker pÃ¥ at du vil sende? - - - added as transaction fee - lagt til som transaksjonsgebyr - - - - SendCoinsEntry - - A&mount: - &Beløp: - - - Pay &To: - Betal &Til: - - - Enter a label for this address to add it to your address book - Skriv inn en merkelapp for denne adressen for Ã¥ legge den til i din adressebok - - - &Label: - &Merkelapp: - - - Choose previously used address - Velg tidligere brukt adresse - - - This is a normal payment. - Dette er en normal betaling. - - - The Bitcoin address to send the payment to - Bitcoin-adressen betalingen skal sendes til - - - Alt+A - Alt+A - - - Paste address from clipboard - Lim inn adresse fra utklippstavlen - - - Alt+P - Alt+P - - - Remove this entry - Fjern denne oppføringen - - - The fee will be deducted from the amount being sent. The recipient will receive less bitcoins than you enter in the amount field. If multiple recipients are selected, the fee is split equally. - Gebyret vil bli trukket fra beløpet som blir sendt. Mottakeren vil motta mindre bitcoins enn det du skriver inn i beløpsfeltet. Hvis det er valgt flere mottakere, deles gebyret likt. - - - S&ubtract fee from amount - T&rekk fra gebyr fra beløp - - - Message: - Melding: - - - This is an unauthenticated payment request. - Dette er en uautorisert betalingsetterspørring. - - - This is an authenticated payment request. - Dette er en autorisert betalingsetterspørring. - - - Enter a label for this address to add it to the list of used addresses - Skriv inn en merkelapp for denne adressen for Ã¥ legge den til listen av brukte adresser - - - A message that was attached to the bitcoin: URI which will be stored with the transaction for your reference. Note: This message will not be sent over the Bitcoin network. - En melding som var tilknyttet bitcoinen: URI vil bli lagret med transaksjonen for din oversikt. Denne meldingen vil ikke bli sendt over Bitcoin-nettverket. - - - Pay To: - Betal Til: - - - Memo: - Memo: - - - - ShutdownWindow - - Bitcoin Core is shutting down... - Bitcoin Core lukker... - - - Do not shut down the computer until this window disappears. - SlÃ¥ ikke av datamaskinen før dette vinduet forsvinner. - - - - SignVerifyMessageDialog - - Signatures - Sign / Verify a Message - Signaturer - Signer / Verifiser en Melding - - - &Sign Message - &Signer Melding - - - You can sign messages/agreements with your addresses to prove you can receive bitcoins sent to them. Be careful not to sign anything vague or random, as phishing attacks may try to trick you into signing your identity over to them. Only sign fully-detailed statements you agree to. - Du kan signere meldinger/avtaler med adresser for Ã¥ bevise at du kan motta bitcoins sendt til dem. Vær forsiktig med Ã¥ signere noe vagt eller tilfeldig, siden phishing-angrep kan prøve Ã¥ lure deg til Ã¥ signere din identitet over til dem. Bare signer fullt detaljerte utsagn som du er enig i. - - - The Bitcoin address to sign the message with - Bitcoin-adressen meldingen skal signeres med - - - Choose previously used address - Velg tidligere brukt adresse - - - Alt+A - Alt+A - - - Paste address from clipboard - Lim inn adresse fra utklippstavlen - - - Alt+P - Alt+P - - - Enter the message you want to sign here - Skriv inn meldingen du vil signere her - - - Signature - Signatur - - - Copy the current signature to the system clipboard - Kopier valgt signatur til utklippstavle - - - Sign the message to prove you own this Bitcoin address - Signer meldingen for Ã¥ bevise at du eier denne Bitcoin-adressen - - - Sign &Message - Signer &Melding - - - Reset all sign message fields - Tilbakestill alle felter for meldingssignering - - - Clear &All - Fjern &Alt - - - &Verify Message - &Verifiser Melding - - - Enter the receiver's address, message (ensure you copy line breaks, spaces, tabs, etc. exactly) and signature below to verify the message. Be careful not to read more into the signature than what is in the signed message itself, to avoid being tricked by a man-in-the-middle attack. Note that this only proves the signing party receives with the address, it cannot prove sendership of any transaction! - Skriv inn mottakerens adresse, melding (forsikre deg om at du kopier linjeskift, mellomrom, faner osv. nøyaktig) og underskrift nedenfor for Ã¥ bekrefte meldingen. Vær forsiktig sÃ¥ du ikke leser mer ut av signaturen enn hva som er i den signerte meldingen i seg selv, for Ã¥ unngÃ¥ Ã¥ bli lurt av et man-in-the-middle-angrep. Merk at dette bare beviser at den som signerer kan motta med adressen, dette beviser ikke hvem som har sendt transaksjoner! - - - The Bitcoin address the message was signed with - Bitcoin-adressen meldingen ble signert med - - - Verify the message to ensure it was signed with the specified Bitcoin address - Verifiser meldingen for Ã¥ være sikker pÃ¥ at den ble signert av den angitte Bitcoin-adressen - - - Verify &Message - Verifiser &Melding - - - Reset all verify message fields - Tilbakestill alle felter for meldingsverifikasjon - - - Click "Sign Message" to generate signature - Klikk "Signer Melding" for Ã¥ generere signatur - - - The entered address is invalid. - Angitt adresse er ugyldig. - - - Please check the address and try again. - Vennligst sjekk adressen og prøv igjen. - - - The entered address does not refer to a key. - Angitt adresse refererer ikke til en nøkkel. - - - Wallet unlock was cancelled. - OpplÃ¥sing av lommebok ble avbrutt. - - - Private key for the entered address is not available. - Privat nøkkel for den angitte adressen er ikke tilgjengelig. - - - Message signing failed. - Signering av melding feilet. - - - Message signed. - Melding signert. - - - The signature could not be decoded. - Signaturen kunne ikke dekodes. - - - Please check the signature and try again. - Vennligst sjekk signaturen og prøv igjen. - - - The signature did not match the message digest. - Signaturen passer ikke til meldingen. - - - Message verification failed. - Verifikasjon av melding feilet. - - - Message verified. - Melding verifisert. - - - - SplashScreen - - Bitcoin Core - Bitcoin Core - - - The Bitcoin Core developers - Bitcoin Core utviklerne - - - [testnet] - [testnett] - - - - TrafficGraphWidget - - KB/s - KB/s - - - - TransactionDesc - - Open until %1 - Ã…pen til %1 - - - conflicted - konflikt - - - %1/offline - %1/frakoblet - - - %1/unconfirmed - %1/ubekreftet - - - %1 confirmations - %1 bekreftelser - - - Status - Status - - - , broadcast through %n node(s) - , kringkast gjennom %n node, kringkast gjennom %n noder - - - Date - Dato - - - Source - Kilde - - - Generated - Generert - - - From - Fra - - - To - Til - - - own address - egen adresse - - - watch-only - kun observerbar - - - label - merkelapp - - - Credit - Kredit - - - matures in %n more block(s) - blir moden om %n blokkblir moden om %n blokker - - - not accepted - ikke akseptert - - - Debit - Debet - - - Total debit - Total debet - - - Total credit - Total kredit - - - Transaction fee - Transaksjonsgebyr - - - Net amount - Nettobeløp - - - Message - Melding - - - Comment - Kommentar - - - Transaction ID - Transaksjons-ID - - - Merchant - Forhandler - - - Generated coins must mature %1 blocks before they can be spent. When you generated this block, it was broadcast to the network to be added to the block chain. If it fails to get into the chain, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - Genererte bitcoins mÃ¥ modnes %1 blokker før de kan brukes. Da du genererte denne blokken ble den kringkastet pÃ¥ nettverket for Ã¥ bli lagt til i kjeden av blokker. Hvis den ikke kommer med i kjeden vil den endre seg til "ikke akseptert" og pengene vil ikke kunne brukes. Dette vil noen ganger skje hvis en annen node genererer en blokk noen sekunder i tid fra din egen. - - - Debug information - Informasjon for feilsøk - - - Transaction - Transaksjon - - - Inputs - Inndata - - - Amount - Beløp - - - true - sann - - - false - usann - - - , has not been successfully broadcast yet - , har ikke blitt kringkastet med hell enda - - - Open for %n more block(s) - Ã…pen for %n blokk tilÃ…pen for %n blokker til - - - unknown - ukjent - - - - TransactionDescDialog - - Transaction details - Transaksjonsdetaljer - - - This pane shows a detailed description of the transaction - Her vises en detaljert beskrivelse av transaksjonen - - - - TransactionTableModel - - Date - Dato - - - Type - Type - - - Immature (%1 confirmations, will be available after %2) - Umoden (%1 bekreftelser, vil være tilgjengelig etter %2) - - - Open for %n more block(s) - Ã…pen for %n blokk tilÃ…pen for %n blokker til - - - Open until %1 - Ã…pen til %1 - - - Confirmed (%1 confirmations) - Bekreftet (%1 bekreftelser) - - - This block was not received by any other nodes and will probably not be accepted! - Denne blokken har ikke blitt mottatt av noen andre noder og vil sannsynligvis ikke bli akseptert! - - - Generated but not accepted - Generert men ikke akseptert - - - Offline - Frakoblet - - - Label - Merkelapp - - - Unconfirmed - Ubekreftet - - - Confirming (%1 of %2 recommended confirmations) - Bekrefter (%1 av %2 anbefalte bekreftelser) - - - Conflicted - Konflikt - - - Received with - Mottatt med - - - Received from - Mottatt fra - - - Sent to - Sendt til - - - Payment to yourself - Betaling til deg selv - - - Mined - Utvunnet - - - watch-only - kun observerbar - - - (n/a) - - - - - Transaction status. Hover over this field to show number of confirmations. - Transaksjonsstatus. Hold muspekeren over dette feltet for Ã¥ se antall bekreftelser. - - - Date and time that the transaction was received. - Dato og tid for da transaksjonen ble mottat. - - - Type of transaction. - Type transaksjon. - - - Whether or not a watch-only address is involved in this transaction. - Hvorvidt en kun observerbar adresse er involvert i denne transaksjonen. - - - User-defined intent/purpose of the transaction. - Brukerdefinert intensjon/hensikt med transaksjonen. - - - Amount removed from or added to balance. - Beløp fjernet eller lagt til saldo. - - - - TransactionView - - All - Alle - - - Today - I dag - - - This week - Denne uken - - - This month - Denne mÃ¥neden - - - Last month - Forrige mÃ¥ned - - - This year - Dette Ã¥ret - - - Range... - Intervall... - - - Received with - Mottatt med - - - Sent to - Sendt til - - - To yourself - Til deg selv - - - Mined - Utvunnet - - - Other - Andre - - - Enter address or label to search - Skriv inn adresse eller merkelapp for søk - - - Min amount - Minimumsbeløp - - - Copy address - Kopier adresse - - - Copy label - Kopier merkelapp - - - Copy amount - Kopier beløp - - - Copy transaction ID - Kopier transaksjons-ID - - - Edit label - Rediger merkelapp - - - Show transaction details - Vis transaksjonsdetaljer - - - Export Transaction History - Eksporter Transaksjonshistorikk - - - Watch-only - Kun observer - - - Exporting Failed - Ekport Feilet - - - There was an error trying to save the transaction history to %1. - En feil oppstod ved lagring av transaksjonshistorikken til %1. - - - Exporting Successful - Ekport Fullført - - - The transaction history was successfully saved to %1. - Transaksjonshistorikken ble lagret til %1. - - - Comma separated file (*.csv) - Kommaseparert fil (*.csv) - - - Confirmed - Bekreftet - - - Date - Dato - - - Type - Type - - - Label - Merkelapp - - - Address - Adresse - - - ID - ID - - - Range: - Intervall: - - - to - til - - - - UnitDisplayStatusBarControl - - Unit to show amounts in. Click to select another unit. - Enhet Ã¥ vise beløper i. Klikk for Ã¥ velge en annen enhet. - - - - WalletFrame - - No wallet has been loaded. - Ingen lommebok har blitt lastet. - - - - WalletModel - - Send Coins - Send Bitcoins - - - - WalletView - - &Export - &Eksporter - - - Export the data in the current tab to a file - Eksporter data fra nÃ¥værende fane til fil - - - Backup Wallet - Sikkerhetskopier Lommebok - - - Wallet Data (*.dat) - Lommebokdata (*.dat) - - - Backup Failed - Sikkerhetskopiering Feilet - - - There was an error trying to save the wallet data to %1. - En feil oppstod ved lagring av lommebok til %1. - - - The wallet data was successfully saved to %1. - Lommeboken ble lagret til %1. - - - Backup Successful - Sikkerhetskopiering Fullført - - - - bitcoin-core - - Options: - Innstillinger: - - - Specify data directory - Angi mappe for datafiler - - - Connect to a node to retrieve peer addresses, and disconnect - Koble til node for Ã¥ hente adresser til andre noder, koble sÃ¥ fra igjen - - - Specify your own public address - Angi din egen offentlige adresse - - - Accept command line and JSON-RPC commands - Ta imot kommandolinje- og JSON-RPC-kommandoer - - - Run in the background as a daemon and accept commands - Kjør i bakgrunnen som daemon og ta imot kommandoer - - - Use the test network - Bruk testnettverket - - - Accept connections from outside (default: 1 if no -proxy or -connect) - Ta imot tilkoblinger fra utsiden (standardverdi: 1 hvis uten -proxy eller -connect) - - - Bind to given address and always listen on it. Use [host]:port notation for IPv6 - Bind til angitt adresse. Bruk [vertsmaskin]:port notasjon for IPv6 - - - Delete all wallet transactions and only recover those parts of the blockchain through -rescan on startup - Slett alle transaksjoner i lommeboken og gjenopprett kun de delene av blokkjeden gjennom -rescan ved oppstart - - - Distributed under the MIT software license, see the accompanying file COPYING or <http://www.opensource.org/licenses/mit-license.php>. - Distribuert under MIT programvarelisensen, se medfølgende fil COPYING eller <http://www.opensource.org/licenses/mit-license.php>. - - - Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) - Kjør kommando nÃ¥r en lommeboktransaksjon endres (%s i kommando er erstattet med TxID) - - - Maximum total fees to use in a single wallet transaction; setting this too low may abort large transactions (default: %s) - Maksimalt samlede gebyrer til Ã¥ bruke i en enkelt lommeboktransaksjon; settes dette for lavt kan store transaksjoner kanskje avbrytes (standardverdi: %s) - - - Reduce storage requirements by pruning (deleting) old blocks. This mode disables wallet support and is incompatible with -txindex. Warning: Reverting this setting requires re-downloading the entire blockchain. (default: 0 = disable pruning blocks, >%u = target size in MiB to use for block files) - Reduser lagringsbehovet ved beskjæring (slette) gamle blokker. Denne modusen deaktiverer støtte for lommebok og er ikke kompatibel med -txindex. Advarsel: Tilbakestilling av denne innstillingen krever at hele blokkjeden mÃ¥ lastes ned pÃ¥ nytt. (Standardverdi: 0 = deaktiver beskjæringsblokker, >%u = mÃ¥l for størrelse i MiB Ã¥ bruke for blokkfiler) - - - Set the number of script verification threads (%u to %d, 0 = auto, <0 = leave that many cores free, default: %d) - Angi antall trÃ¥der for skriptverifisering (%u til %d, 0 = auto, <0 = la det antallet kjerner være ledig, standard: %d) - - - This is a pre-release test build - use at your own risk - do not use for mining or merchant applications - Dette er en forhÃ¥ndssluppet testversjon - bruk pÃ¥ egen risiko - ikke for bruk til blokkutvinning eller bedriftsapplikasjoner - - - Unable to bind to %s on this computer. Bitcoin Core is probably already running. - Ute av stand til Ã¥ binde til %s pÃ¥ denne datamaskinen. Bitcoin Core kjører sannsynligvis allerede. - - - WARNING: abnormally high number of blocks generated, %d blocks received in the last %d hours (%d expected) - ADVARSEL: unormalt høyt antall blokker generert, %d blokker mottatt de siste %d timene (%d forventet) - - - WARNING: check your network connection, %d blocks received in the last %d hours (%d expected) - ADVARSEL: kontroller nettverkstilkoblingen, mottok %d blokker i de siste %d timene (%d forventet) - - - Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. - Advarsel: -paytxfee er satt veldig høyt! Dette er transaksjonsgebyret du betaler nÃ¥r du sender transaksjoner. - - - Warning: The network does not appear to fully agree! Some miners appear to be experiencing issues. - Advarsel: Nettverket ser ikke ut til Ã¥ være enig! Noen minere ser ut til Ã¥ ha problemer. - - - Warning: We do not appear to fully agree with our peers! You may need to upgrade, or other nodes may need to upgrade. - Advarsel: Vi ser ikke ut til Ã¥ være enige med vÃ¥re noder! Du mÃ¥ oppgradere, eller andre noder mÃ¥ oppgradere. - - - Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. - Advarsel: Feil ved lesing av wallet.dat! Alle nøkler lest riktig, men transaksjonsdataene eller oppføringer i adresseboken mangler kanskje eller er feil. - - - 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. - Advarsel: wallet.dat korrupt, data reddet! Original wallet.dat lagret som wallet.{timestamp}.bak i %s; hvis din saldo eller dine transaksjoner ikke er korrekte bør du gjenopprette fra en backup. - - - Whitelist peers connecting from the given netmask or IP address. Can be specified multiple times. - Hvitelist noder som kobler til fra den oppgitte nettmasken eller IP-adressen. Kan oppgis flere ganger. - - - (default: 1) - (standardverdi: 1) - - - <category> can be: - <category> kan være: - - - Attempt to recover private keys from a corrupt wallet.dat - Forsøk Ã¥ berge private nøkler fra en korrupt wallet.dat - - - Block creation options: - Valg for opprettelse av blokker: - - - Connect only to the specified node(s) - Koble kun til angitt(e) node(r) - - - Connection options: - Innstillinger for tilkobling: - - - Corrupted block database detected - Oppdaget korrupt blokkdatabase - - - Debugging/Testing options: - Valg for feilsøking/testing: - - - Do not load the wallet and disable wallet RPC calls - Ikke last inn lommeboken og deaktiver RPC-kall - - - Do you want to rebuild the block database now? - Ønsker du Ã¥ gjenopprette blokkdatabasen nÃ¥? - - - Error initializing block database - Feil under initialisering av blokkdatabase - - - Error initializing wallet database environment %s! - Feil under oppstart av lommeboken sitt databasemiljø %s! - - - Error loading block database - Feil ved lasting av blokkdatabase - - - Error opening block database - Feil under Ã¥pning av blokkdatabase - - - Error: Disk space is low! - Feil: Lite ledig lagringsplass! - - - Failed to listen on any port. Use -listen=0 if you want this. - Kunne ikke lytte pÃ¥ noen port. Bruk -listen=0 hvis det er dette du vil. - - - If <category> is not supplied, output all debugging information. - Hvis <category> ikke er oppgitt, ta ut all informasjon om feilsøking. - - - Importing... - Importerer... - - - Incorrect or no genesis block found. Wrong datadir for network? - Ugyldig eller ingen skaperblokk funnet. Feil datamappe for nettverk? - - - Invalid -onion address: '%s' - Ugyldig -onion adresse: '%s' - - - Not enough file descriptors available. - For fÃ¥ fildeskriptorer tilgjengelig. - - - Only connect to nodes in network <net> (ipv4, ipv6 or onion) - Bare koble til noder i nettverket <net> (IPv4, IPv6 eller onion) - - - Prune cannot be configured with a negative value. - Beskjæringsmodus kan ikke konfigureres med en negativ verdi. - - - Prune mode is incompatible with -txindex. - Beskjæringsmodus er ikke kompatibel med -txindex. - - - Set database cache size in megabytes (%d to %d, default: %d) - Sett databasen sin størrelse pÃ¥ hurtigbufferen i megabytes (%d til %d, standardverdi: %d) - - - Set maximum block size in bytes (default: %d) - Sett maks blokkstørrelse i bytes (standardverdi: %d) - - - Specify wallet file (within data directory) - Angi lommebokfil (inne i datamappe) - - - Use UPnP to map the listening port (default: %u) - Bruk UPnP for Ã¥ sette opp lytteport (standardverdi: %u) - - - Verifying blocks... - Verifiserer blokker... - - - Verifying wallet... - Verifiserer lommebok... - - - Wallet %s resides outside data directory %s - Lommebok %s befinner seg utenfor datamappe %s - - - Wallet options: - Valg for lommebok: - - - Warning: This version is obsolete; upgrade required! - Advarsel: Denne versjonen er utdatert; oppgradering er pÃ¥krevd! - - - You need to rebuild the database using -reindex to change -txindex - Du mÃ¥ gjenoppbygge databasen med Ã¥ bruke -reindex for Ã¥ endre -txindex - - - Imports blocks from external blk000??.dat file - Importerer blokker fra ekstern fil blk000??.dat - - - 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 - Tillat JSON-RPC-tilkoblinger fra angitt kilde. Gyldig for <ip> er en enkelt IP (f. eks. 1.2.3.4), et nettverk/nettmaske (f. eks. 1.2.3.4/255.255.255.0) eller et nettverk/CIDR (f. eks. 1.2.3.4/24). Dette alternativet kan angis flere ganger - - - An error occurred while setting up the RPC address %s port %u for listening: %s - En feil oppstod under oppsett av RPC-adressen %s port %u for lytting: %s - - - Bind to given address and whitelist peers connecting to it. Use [host]:port notation for IPv6 - Bind til gitt adresse og hvitlist peers som kobler seg til den. Bruk [host]:port notasjon for IPv6 - - - Bind to given address to listen for JSON-RPC connections. Use [host]:port notation for IPv6. This option can be specified multiple times (default: bind to all interfaces) - Bind til gitt adresse for Ã¥ lytte for JSON-RPC-tilkoblinger. Bruk [host]:port notasjon for IPv6. Dette alternativet kan angis flere ganger (standardverdi: bind til alle grensesnitt) - - - Cannot obtain a lock on data directory %s. Bitcoin Core is probably already running. - Ute av stand til Ã¥ lÃ¥se datamappen %s. Bitcoin Core kjører sannsynligvis allerede. - - - Create new files with system default permissions, instead of umask 077 (only effective with disabled wallet functionality) - Opprett nye filer med standardtillatelser i systemet, i stedet for umask 077 (kun virksom med lommebokfunksjonalitet slÃ¥tt av) - - - Discover own IP addresses (default: 1 when listening and no -externalip or -proxy) - Oppdag egne IP-adresser (standardverdi: 1 ved lytting og ingen -externalip eller -proxy) - - - Error: Listening for incoming connections failed (listen returned error %s) - Feil: Lytting etter innkommende tilkoblinger feilet (lytting returnerte feil %s) - - - Error: Unsupported argument -socks found. Setting SOCKS version isn't possible anymore, only SOCKS5 proxies are supported. - Feil: Argumentet -socks er ikke støttet. Det er ikke lenger mulig Ã¥ sette SOCKS-versjon; bare SOCKS5-proxyer er støttet. - - - Execute command when a relevant alert is received or we see a really long fork (%s in cmd is replaced by message) - Utfør kommando nÃ¥r et relevant varsel er mottatt eller vi ser en veldig lang gaffel (%s i kommando er erstattet med melding) - - - Fees (in BTC/Kb) smaller than this are considered zero fee for relaying (default: %s) - Gebyrer (i BTC/Kb) mindre enn dette anses som null gebyr for videresending (standardverdi: %s) - - - If paytxfee is not set, include enough fee so transactions begin confirmation on average within n blocks (default: %u) - Hvis paytxfee ikke er angitt, inkluderer da nok i gebyr til at transaksjoner gjennomsnittligt bekreftes innen n blokker (standardverdi: %u) - - - Invalid amount for -maxtxfee=<amount>: '%s' (must be at least the minrelay fee of %s to prevent stuck transactions) - Ugyldig beløp for -maxtxfee=<amount>: '%s' (mÃ¥ være minst minimum relé gebyr pÃ¥ %s for Ã¥ hindre fastlÃ¥ste transaksjoner) - - - Maximum size of data in data carrier transactions we relay and mine (default: %u) - Maksimal størrelse pÃ¥ data i databærende transaksjoner vi videresender og ufører graving pÃ¥ (standardverdi: %u) - - - Prune configured below the minimum of %d MB. Please use a higher number. - Beskjæringsmodus er konfigurert under minimum pÃ¥ %d MB. Vennligst bruk et høyere nummer. - - - Query for peer addresses via DNS lookup, if low on addresses (default: 1 unless -connect) - Søk etter nodeadresser via DNS-oppslag, hvis vi har fÃ¥ adresser Ã¥ koble til (standard: 1 med mindre -connect) - - - Randomize credentials for every proxy connection. This enables Tor stream isolation (default: %u) - Bruk tilfeldig identitet for hver proxytilkobling. Dette muliggjør TOR stream isolasjon (standardverdi: %u) - - - Set maximum size of high-priority/low-fee transactions in bytes (default: %d) - Sett maksimum størrelse for transaksjoner med høy prioritet / lavt gebyr, i bytes (standardverdi: %d) - - - Set the number of threads for coin generation if enabled (-1 = all cores, default: %d) - Angi antall trÃ¥der for mynt generering hvis aktivert (-1 = alle kjerner, standardverdi: %d) - - - The transaction amount is too small to send after the fee has been deducted - Transaksjonsbeløpet er for lite til Ã¥ sendes etter at gebyret er fratrukket - - - 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. - Dette produktet inneholder programvare utviklet av OpenSSL Project for bruk i OpenSSL Toolkit <https://www.openssl.org/> og kryptografisk programvare skrevet av Eric Young og UPnP-programvare skrevet av Thomas Bernard. - - - 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 - - For Ã¥ bruke bitcoind, eller -server valget til bitcoin-qt, mÃ¥ du angi et rpcpassord i konfigurasjonsfilen: -%s -Det anbefales at du bruker det følgende tilfeldige passordet: -rpcuser=bitcoinrpc -rpcpassword=%s -(du behøver ikke Ã¥ huske passordet) -Brukernavnet og passordet MÃ… IKKE være like. -Om filen ikke eksisterer, opprett den med eier-kun-les filrettigheter. -Det er ogsÃ¥ anbefalt at Ã¥ sette varselsmelding slik du fÃ¥r melding om problemer; -for eksempel: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com - - - - Warning: -maxtxfee is set very high! Fees this large could be paid on a single transaction. - Advarsel: -paytxfee er satt veldig høyt! SÃ¥ stort gebyr kan bli betalt ved en enkelt transaksjon. - - - Warning: Please check that your computer's date and time are correct! If your clock is wrong Bitcoin Core will not work properly. - Advarsel: Vennligst undersøk at din datamaskin har riktig dato og klokkeslett! Hvis klokken er stilt feil vil ikke Bitcoin Core fungere riktig. - - - 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 - Hvitlistede noder kan ikke DoS-blokkeres, og deres transaksjoner videresendes alltid, selv om de allerede er i minnelageret. Nyttig f.eks. for en gateway. - - - You need to rebuild the database using -reindex to go back to unpruned mode. This will redownload the entire blockchain - Du mÃ¥ gjenoppbygge databasen ved hjelp av -reindex for Ã¥ gÃ¥ tilbake til ubeskÃ¥ret modus. Dette vil laste ned hele blokkjeden pÃ¥ nytt. - - - (default: %u) - (standardverdi: %u) - - - Accept public REST requests (default: %u) - Godta offentlige REST forespørsler (standardverdi: %u) - - - Activating best chain... - Aktiverer beste kjede... - - - Can't run with a wallet in prune mode. - Kan ikke kjøre med en lommebok i beskjæringsmodus. - - - Cannot resolve -whitebind address: '%s' - Kan ikke løse -whitebind-adresse: '%s' - - - Choose data directory on startup (default: 0) - Velg datamappe ved oppstart (standard: 0) - - - Connect through SOCKS5 proxy - Koble til via SOCKS5-proxy - - - Copyright (C) 2009-%i The Bitcoin Core Developers - Copyright (C) 2009-%i utviklerne av Bitcoin Core - - - Could not parse -rpcbind value %s as network address - Kunne ikke tolke -rpcbind-verdi %s som en nettverksadresse - - - Error loading wallet.dat: Wallet requires newer version of Bitcoin Core - Feil ved lasting av wallet.dat: Lommeboken krever en nyere versjon av Bitcoin Core - - - Error reading from database, shutting down. - Feil ved lesing fra database, stenger ned. - - - Error: A fatal internal error occurred, see debug.log for details - Feil: En fatal intern feil oppstod, se debug.log for detaljer - - - Error: Unsupported argument -tor found, use -onion. - Feil: Argumentet -tor er ikke støttet, bruk -onion. - - - Fee (in BTC/kB) to add to transactions you send (default: %s) - Gebyr (i BTC/kB) for Ã¥ legge til i transaksjoner du sender (standardverdi: %s) - - - Information - Informasjon - - - Initialization sanity check failed. Bitcoin Core is shutting down. - Sunnhetssjekk ved oppstart feilet. Bitcoin Core stenges ned. - - - Invalid amount for -maxtxfee=<amount>: '%s' - Ugyldig beløp for -maxtxfee=<amount>: '%s' - - - Invalid amount for -minrelaytxfee=<amount>: '%s' - Ugyldig mengde for -minrelaytxfee=<beløp>: '%s' - - - Invalid amount for -mintxfee=<amount>: '%s' - Ugyldig mengde for -mintxfee=<beløp>: '%s' - - - Invalid amount for -paytxfee=<amount>: '%s' (must be at least %s) - Ugyldig beløp for -paytxfee=<amount>: '%s' (mÃ¥ være minst %s) - - - Invalid netmask specified in -whitelist: '%s' - Ugyldig nettmaske spesifisert i -whitelist: '%s' - - - Keep at most <n> unconnectable transactions in memory (default: %u) - Hold pÃ¥ det meste <n> transaksjoner som ikke kobles i minnet (standardverdi: %u) - - - Need to specify a port with -whitebind: '%s' - MÃ¥ oppgi en port med -whitebind: '%s' - - - Node relay options: - Node alternativer for videresending: - - - Pruning blockstore... - Beskjærer blokklageret... - - - RPC SSL options: (see the Bitcoin Wiki for SSL setup instructions) - RPC SSL-valg: (se Bitcoin Wiki for oppsettsinstruksjoner for SSL) - - - RPC server options: - Innstillinger for RPC-server: - - - RPC support for HTTP persistent connections (default: %d) - RPC-støtte for persistente HTTP-forbindelser (standardverdi: %d) - - - Rebuild block chain index from current blk000??.dat files on startup - Gjenopprett blokkjedeindeks fra gjeldende blk000??.dat filer ved oppstart - - - Receive and display P2P network alerts (default: %u) - Motta og vis P2P nettverksvarsler (standardvalg: %u) - - - Send trace/debug info to console instead of debug.log file - Send spor-/feilsøkingsinformasjon til konsollen istedenfor filen debug.log - - - Send transactions as zero-fee transactions if possible (default: %u) - Send transaksjoner uten transaksjonsgebyr hvis mulig (standardverdi: %u) - - - Set SSL root certificates for payment request (default: -system-) - Sett SSL-rotsertifikat for betalingsetterspørring (standard: -system-) - - - Set language, for example "de_DE" (default: system locale) - Sett sprÃ¥k, for eksempel "nb_NO" (standardverdi: fra operativsystem) - - - Show all debugging options (usage: --help -help-debug) - Vis alle feilsøkingsvalg (bruk: --help -help-debug) - - - Show splash screen on startup (default: 1) - Vis splashskjerm ved oppstart (standardverdi: 1) - - - Shrink debug.log file on client startup (default: 1 when no -debug) - Krymp filen debug.log nÃ¥r klienten starter (standardverdi: 1 hvis uten -debug) - - - Signing transaction failed - Signering av transaksjon feilet - - - Start minimized - Start minimert - - - The transaction amount is too small to pay the fee - Transaksjonsbeløpet er for lite til Ã¥ betale gebyr - - - This is experimental software. - Dette er eksperimentell programvare. - - - Transaction amount too small - Transaksjonen er for liten - - - Transaction amounts must be positive - Transaksjonsbeløpet mÃ¥ være positivt - - - Transaction too large for fee policy - Transaksjon for stor for gebyrpolitikken - - - Transaction too large - Transaksjonen er for stor - - - UI Options: - Innstillinger for Brukergrensesnitt: - - - Unable to bind to %s on this computer (bind returned error %s) - Kan ikke binde til %s pÃ¥ denne datamaskinen (binding returnerte feilen %s) - - - Use UPnP to map the listening port (default: 1 when listening) - Bruk UPnP for lytteport (standardverdi: 1 ved lytting) - - - Username for JSON-RPC connections - Brukernavn for JSON-RPC forbindelser - - - Wallet needed to be rewritten: restart Bitcoin Core to complete - Lommeboken mÃ¥tte skrives pÃ¥ nytt: start Bitcoin Core pÃ¥ nytt for Ã¥ fullføre - - - Warning - Advarsel - - - Warning: Unsupported argument -benchmark ignored, use -debug=bench. - Advarsel: Argumentet -benchmark er ikke støttet og ble ignorert, bruk -debug=bench. - - - Warning: Unsupported argument -debugnet ignored, use -debug=net. - Advarsel: Argumentet -debugnet er ikke støttet og ble ignorert, bruk -debug=net. - - - Zapping all transactions from wallet... - Zapper alle transaksjoner fra lommeboken... - - - on startup - ved oppstart - - - wallet.dat corrupt, salvage failed - wallet.dat korrupt, bergning feilet - - - Password for JSON-RPC connections - Passord for JSON-RPC forbindelser - - - Execute command when the best block changes (%s in cmd is replaced by block hash) - Utfør kommando nÃ¥r beste blokk endrer seg (%s i kommandoen erstattes med blokkens hash) - - - Upgrade wallet to latest format - Oppgrader lommebok til nyeste format - - - Rescan the block chain for missing wallet transactions - Se gjennom blokkjeden etter manglende lommeboktransaksjoner - - - Use OpenSSL (https) for JSON-RPC connections - Bruk OpenSSL (https) for JSON-RPC forbindelser - - - This help message - Denne hjelpemeldingen - - - Allow DNS lookups for -addnode, -seednode and -connect - Tillat oppslag i DNS for -addnode, -seednode og -connect - - - Loading addresses... - Laster adresser... - - - Error loading wallet.dat: Wallet corrupted - Feil ved lasting av wallet.dat: Lommeboken er skadet - - - (1 = keep tx meta data e.g. account owner and payment request information, 2 = drop tx meta data) - (1 = behold metadata for transaksjon som f. eks. kontoeier og informasjon om betalingsanmodning, 2 = dropp metadata for transaksjon) - - - How thorough the block verification of -checkblocks is (0-4, default: %u) - Hvor grundig blokkverifiseringen til -checkblocks er (0-4, standardverdi: %u) - - - Maintain a full transaction index, used by the getrawtransaction rpc call (default: %u) - Oppretthold en full transaksjonsindeks, brukt av getrawtransaction RPC-kall (standardverdi: %u) - - - Number of seconds to keep misbehaving peers from reconnecting (default: %u) - Antall sekunder noder med dÃ¥rlig oppførsel hindres fra Ã¥ koble til pÃ¥ nytt (standardverdi: %u) - - - Output debugging information (default: %u, supplying <category> is optional) - Ta ut feilsøkingsinformasjon (standardverdi: %u, bruk av <category> er valgfritt) - - - Use separate SOCKS5 proxy to reach peers via Tor hidden services (default: %s) - Bruk separate SOCKS5 proxyer for Ã¥ nÃ¥ noder via Tor skjulte tjenester (standardverdi: %s) - - - (default: %s) - (standardverdi: %s) - - - Acceptable ciphers (default: %s) - Akseptable sifre (standardverdi: %s) - - - Always query for peer addresses via DNS lookup (default: %u) - Alltid søk etter nodeadresser via DNS-oppslag (standardverdi: %u) - - - Error loading wallet.dat - Feil ved lasting av wallet.dat - - - Generate coins (default: %u) - Generer mynter (standardverdi: %u) - - - How many blocks to check at startup (default: %u, 0 = all) - Hvor mange blokker skal sjekkes ved oppstart (standardverdi: %u, 0 = alle) - - - Include IP addresses in debug output (default: %u) - Inkludere IP-adresser i feilsøkingslogg (standardverdi: %u) - - - Invalid -proxy address: '%s' - Ugyldig -proxy adresse: '%s' - - - Listen for JSON-RPC connections on <port> (default: %u or testnet: %u) - Lytt etter JSON-RPC tilkoblinger pÃ¥ <port> (standardverdi: %u eller testnett: %u) - - - Listen for connections on <port> (default: %u or testnet: %u) - Lytt etter tilkoblinger pÃ¥ <port> (standardverdi: %u eller testnett: %u) - - - Maintain at most <n> connections to peers (default: %u) - Hold maks <n> koblinger Ã¥pne til andre noder (standardverdi: %u) - - - Make the wallet broadcast transactions - FÃ¥ lommeboken til Ã¥ kringkaste transaksjoner - - - Maximum per-connection receive buffer, <n>*1000 bytes (default: %u) - Maks mottaksbuffer per forbindelse, <n>*1000 bytes (standardverdi: %u) - - - Maximum per-connection send buffer, <n>*1000 bytes (default: %u) - Maks sendebuffer per forbindelse, <n>*1000 bytes (standardverdi: %u) - - - Prepend debug output with timestamp (default: %u) - Sett inn tidsstempel i front av feilsøkingsdata (standardverdi: %u) - - - Relay and mine data carrier transactions (default: %u) - Videresend og ufør graving av databærende transaksjoner (standardverdi: %u) - - - Relay non-P2SH multisig (default: %u) - Videresend ikke-P2SH multisig (standardverdi: %u) - - - Server certificate file (default: %s) - Fil for tjenersertifikat (standardverdi: %s) - - - Server private key (default: %s) - Privat nøkkel for tjener (standardverdi: %s) - - - Set key pool size to <n> (default: %u) - Angi størrelse pÃ¥ nøkkel-lager til <n> (standardverdi: %u) - - - Set minimum block size in bytes (default: %u) - Sett minimum blokkstørrelse i bytes (standardverdi: %u) - - - Set the number of threads to service RPC calls (default: %d) - Sett antall trÃ¥der til betjening av RPC-kall (standardverdi: %d) - - - Specify configuration file (default: %s) - Angi konfigurasjonsfil (standardverdi: %s) - - - Specify connection timeout in milliseconds (minimum: 1, default: %d) - Angi tidsavbrudd for forbindelse i millisekunder (minimum: 1, standardverdi: %d) - - - Specify pid file (default: %s) - Angi pid-fil (standardverdi: %s) - - - Spend unconfirmed change when sending transactions (default: %u) - Bruk ubekreftet veksel ved sending av transaksjoner (standardverdi: %u) - - - Threshold for disconnecting misbehaving peers (default: %u) - Grenseverdi for Ã¥ koble fra noder med dÃ¥rlig oppførsel (standardverdi: %u) - - - Unknown network specified in -onlynet: '%s' - Ukjent nettverk angitt i -onlynet '%s' - - - Cannot resolve -bind address: '%s' - Kunne ikke slÃ¥ opp -bind adresse: '%s' - - - Cannot resolve -externalip address: '%s' - Kunne ikke slÃ¥ opp -externalip adresse: '%s' - - - Invalid amount for -paytxfee=<amount>: '%s' - Ugyldig beløp for -paytxfee=<beløp>: '%s' - - - Insufficient funds - Utilstrekkelige midler - - - Loading block index... - Laster blokkindeks... - - - Add a node to connect to and attempt to keep the connection open - Legg til node for tilkobling og hold forbindelsen Ã¥pen - - - Loading wallet... - Laster lommebok... - - - Cannot downgrade wallet - Kan ikke nedgradere lommebok - - - Cannot write default address - Kan ikke skrive standardadresse - - - Rescanning... - Leser gjennom... - - - Done loading - Ferdig med lasting - - - Error - Feil - - - \ No newline at end of file diff --git a/src/qt/locale/bitcoin_nl.ts b/src/qt/locale/bitcoin_nl.ts deleted file mode 100644 index 0487a7e13..000000000 --- a/src/qt/locale/bitcoin_nl.ts +++ /dev/null @@ -1,3496 +0,0 @@ - - - AddressBookPage - - Right-click to edit address or label - Klik met de rechtermuisknop om het adres of label te wijzigen - - - Create a new address - Maak een nieuw adres - - - &New - &Nieuw - - - Copy the currently selected address to the system clipboard - Kopieer het geselecteerde adres naar het klembord - - - &Copy - &Kopieer - - - C&lose - S&luiten - - - &Copy Address - &Kopiëer Adres - - - Delete the currently selected address from the list - Verwijder het geselecteerde adres van de lijst - - - Export the data in the current tab to a file - Exporteer de data in de huidige tab naar een bestand - - - &Export - &Exporteer - - - &Delete - &Verwijder - - - Choose the address to send coins to - Kies het adres om munten naar te versturen - - - Choose the address to receive coins with - Kies het adres om munten op te ontvangen - - - C&hoose - K&iezen - - - Sending addresses - Verstuur adressen - - - Receiving addresses - Ontvang adressen - - - These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins. - Dit zijn uw Bitcoinadressen om betalingen mee te verzenden. Controleer altijd het bedrag en het ontvang adres voordat u uw bitcoins verzendt. - - - These are your Bitcoin addresses for receiving payments. It is recommended to use a new receiving address for each transaction. - Dit zijn uw Bitcoin-adressen waarmee u kunt betalen. We raden u aan om een nieuw ontvangstadres voor elke transactie te gebruiken. - - - Copy &Label - Kopiëer &Label - - - &Edit - &Bewerk - - - Export Address List - Exporteer adreslijst - - - Comma separated file (*.csv) - Kommagescheiden bestand (*.csv) - - - Exporting Failed - Export Mislukt - - - There was an error trying to save the address list to %1. Please try again. - Een fout is opgetreden tijdens het opslaan van deze adreslijst naar %1. Probeer het nogmaals. - - - - AddressTableModel - - Label - Label - - - Address - Adres - - - (no label) - (geen label) - - - - AskPassphraseDialog - - Passphrase Dialog - Wachtwoorddialoog - - - Enter passphrase - Voer wachtwoord in - - - New passphrase - Nieuw wachtwoord - - - Repeat new passphrase - Herhaal nieuw wachtwoord - - - Encrypt wallet - Versleutel portemonnee - - - This operation needs your wallet passphrase to unlock the wallet. - Deze operatie vereist uw portemonneewachtwoord om de portemonnee te openen. - - - Unlock wallet - Open portemonnee - - - This operation needs your wallet passphrase to decrypt the wallet. - Deze operatie vereist uw portemonneewachtwoord om de portemonnee te ontsleutelen - - - Decrypt wallet - Ontsleutel portemonnee - - - Change passphrase - Wijzig wachtwoord - - - Confirm wallet encryption - Bevestig versleuteling van de portemonnee - - - Warning: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR BITCOINS</b>! - Waarschuwing: Als u uw portemonnee versleutelt en uw wachtwoord vergeet, zult u <b>AL UW BITCOINS VERLIEZEN</b>! - - - Are you sure you wish to encrypt your wallet? - Weet u zeker dat u uw portemonnee wilt versleutelen? - - - Bitcoin Core 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. - Bitcoin Core zal nu afsluiten om het versleutelingsproces te voltooien. Hou er rekening mee dat versleuteling van je portemonnee je niet volledig beschermt tegen diefstal van jouw bitcoins door malware op je computer. - - - 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. - BELANGRIJK: Elke eerder gemaakte backup van uw portemonneebestand dient u te vervangen door het nieuw gegenereerde, versleutelde portemonneebestand. Om veiligheidsredenen zullen eerdere backups van het niet-versleutelde portemonneebestand onbruikbaar worden zodra u uw nieuwe, versleutelde, portemonnee begint te gebruiken. - - - Warning: The Caps Lock key is on! - Waarschuwing: De Caps-Lock-toets staat aan! - - - Wallet encrypted - Portemonnee versleuteld - - - 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>. - Voer een nieuw wachtwoord in voor uw portemonnee.<br/>Gebruik een wachtwoord van <b>tien of meer willekeurige karakters</b>, of <b>acht of meer woorden</b>. - - - Enter the old passphrase and new passphrase to the wallet. - Voer het oude en nieuwe wachtwoord in voor uw portemonnee. - - - Wallet encryption failed - Portemonneeversleuteling mislukt - - - Wallet encryption failed due to an internal error. Your wallet was not encrypted. - Portemonneeversleuteling mislukt door een interne fout. Uw portemonnee is niet versleuteld. - - - The supplied passphrases do not match. - De opgegeven wachtwoorden komen niet overeen - - - Wallet unlock failed - Portemonnee openen mislukt - - - The passphrase entered for the wallet decryption was incorrect. - Het opgegeven wachtwoord voor de portemonnee-ontsleuteling is niet correct. - - - Wallet decryption failed - Portemonnee-ontsleuteling mislukt - - - Wallet passphrase was successfully changed. - Portemonneewachtwoord is met succes gewijzigd. - - - - BitcoinGUI - - Sign &message... - &Onderteken bericht... - - - Synchronizing with network... - Synchroniseren met netwerk... - - - &Overview - &Overzicht - - - Node - Node - - - Show general overview of wallet - Toon algemeen overzicht van uw portemonnee - - - &Transactions - &Transacties - - - Browse transaction history - Blader door transactieverleden - - - E&xit - &Afsluiten - - - Quit application - Programma afsluiten - - - About &Qt - Over &Qt - - - Show information about Qt - Toon informatie over Qt - - - &Options... - O&pties... - - - &Encrypt Wallet... - &Versleutel Portemonnee... - - - &Backup Wallet... - &Backup Portemonnee... - - - &Change Passphrase... - &Wijzig Wachtwoord - - - &Sending addresses... - V&erstuur adressen... - - - &Receiving addresses... - O&ntvang adressen... - - - Open &URI... - Open &URI... - - - Bitcoin Core client - Bitcoin Kern applicatie - - - Importing blocks from disk... - Blokken aan het importeren vanaf harde schijf... - - - Reindexing blocks on disk... - Bezig met herindexeren van blokken op harde schijf... - - - Send coins to a Bitcoin address - Verstuur munten naar een Bitcoinadres - - - Backup wallet to another location - Backup portemonnee naar een andere locatie - - - Change the passphrase used for wallet encryption - Wijzig het wachtwoord voor uw portemonneversleuteling - - - &Debug window - &Debugscherm - - - Open debugging and diagnostic console - Open debugging en diagnostische console - - - &Verify message... - &Verifiëer bericht... - - - Bitcoin - Bitcoin - - - Wallet - Portemonnee - - - &Send - &Versturen - - - &Receive - &Ontvangen - - - Show information about Bitcoin Core - Toon informatie over bitcoin kern - - - &Show / Hide - &Toon / Verberg - - - Show or hide the main Window - Toon of verberg het hoofdvenster - - - Encrypt the private keys that belong to your wallet - Versleutel de geheime sleutels die bij uw portemonnee horen - - - Sign messages with your Bitcoin addresses to prove you own them - Onderteken berichten met uw Bitcoinadressen om te bewijzen dat u deze adressen bezit - - - Verify messages to ensure they were signed with specified Bitcoin addresses - Verifiëer handtekeningen om zeker te zijn dat de berichten zijn ondertekend met de gespecificeerde Bitcoinadressen - - - &File - &Bestand - - - &Settings - &Instellingen - - - &Help - &Hulp - - - Tabs toolbar - Tab-werkbalk - - - Bitcoin Core - Bitcoin Kern - - - Request payments (generates QR codes and bitcoin: URIs) - Vraag betaling aan (genereert QR codes en bitcoin: URIs) - - - &About Bitcoin Core - &Over Bitcoin Core - - - Modify configuration options for Bitcoin Core - Wijzig configuratieopties voor Bitcoin Core - - - Show the list of used sending addresses and labels - Toon de lijst met gebruikt verzend adressen en labels - - - Show the list of used receiving addresses and labels - Toon de lijst met gebruikte ontvangst adressen en labels - - - Open a bitcoin: URI or payment request - Open een bitcoin: URI of betalingsverzoek - - - &Command-line options - &Commandoregel-opties - - - Show the Bitcoin Core help message to get a list with possible Bitcoin command-line options - Toon het Bitcoin Core hulpbericht om een lijst te krijgen met mogelijke Bitcoin commandoregelopties - - - %n active connection(s) to Bitcoin network - %n actieve connectie naar Bitcoin netwerk%n actieve connecties naar Bitcoin netwerk - - - No block source available... - Geen bron voor blokken beschikbaar... - - - Processed %n block(s) of transaction history. - %n blok aan transactie geschiedenis verwerkt.%n blokken aan transactie geschiedenis verwerkt. - - - %n hour(s) - %n uur%n uur - - - %n day(s) - %n dag%n dagen - - - %n week(s) - %n week%n weken - - - %1 and %2 - %1 en %2 - - - %n year(s) - %n jaar%n jaar - - - %1 behind - %1 achter - - - Last received block was generated %1 ago. - Laatst ontvangen blok was %1 geleden gegenereerd. - - - Transactions after this will not yet be visible. - Transacties na dit moment zullen nu nog niet zichtbaar zijn. - - - Error - Fout - - - Warning - Waarschuwing - - - Information - Informatie - - - Up to date - Bijgewerkt - - - Catching up... - Aan het bijwerken... - - - Date: %1 - - Datum: %1 - - - - Amount: %1 - - Aantal: %1 - - - - Type: %1 - - Type: %1 - - - - Label: %1 - - Label: %1 - - - - Address: %1 - - Adres: %1 - - - - Sent transaction - Verzonden transactie - - - Incoming transaction - Binnenkomende transactie - - - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - Portemonnee is <b>versleuteld</b> en momenteel <b>geopend</b> - - - Wallet is <b>encrypted</b> and currently <b>locked</b> - Portemonnee is <b>versleuteld</b> en momenteel <b>gesloten</b> - - - - ClientModel - - Network Alert - Netwerkwaarschuwing - - - - CoinControlDialog - - Coin Selection - Munt Selectie - - - Quantity: - Kwantiteit - - - Bytes: - Bytes: - - - Amount: - Bedrag: - - - Priority: - Prioriteit: - - - Fee: - Vergoeding: - - - Dust: - Stof: - - - After Fee: - Na vergoeding: - - - Change: - Wisselgeld: - - - (un)select all - (de)selecteer alles - - - Tree mode - Boom modus - - - List mode - Lijst modus - - - Amount - Bedrag - - - Received with label - Ontvangen met label - - - Received with address - Ontvangen met adres - - - Date - Datum - - - Confirmations - Bevestigingen - - - Confirmed - Bevestigd - - - Priority - Prioriteit - - - Copy address - Kopieer adres - - - Copy label - Kopieer label - - - Copy amount - Kopieer bedrag - - - Copy transaction ID - Kopieer transactie-ID - - - Lock unspent - Blokeer ongebruikte - - - Unlock unspent - Deblokkeer ongebruikte - - - Copy quantity - Kopieer aantal - - - Copy fee - Kopieer vergoeding - - - Copy after fee - Kopieer na vergoeding - - - Copy bytes - Kopieer bytes - - - Copy priority - Kopieer prioriteit - - - Copy dust - Kopieër stof - - - Copy change - Kopieer wisselgeld - - - highest - hoogste - - - higher - hoger - - - high - hoog - - - medium-high - gemiddeld hoog - - - medium - gemiddeld - - - low-medium - laag gemiddeld - - - low - laag - - - lower - lager - - - lowest - laagste - - - (%1 locked) - (%1 geblokeerd) - - - none - geen - - - This label turns red if the transaction size is greater than 1000 bytes. - Dit label wordt rood als de transactie groter is dan 1000 bytes. - - - This label turns red if the priority is smaller than "medium". - Dit label wordt rood als de prioriteit lager is dan "gemiddeld". - - - This label turns red if any recipient receives an amount smaller than %1. - Dit label wordt rood wanneer een ontvanger minder dan %1 krijgt. - - - Can vary +/- %1 satoshi(s) per input. - Kan per input +/- %1 satoshi(s) variëren. - - - yes - ja - - - no - nee - - - This means a fee of at least %1 per kB is required. - Dit betekent dat een vergoeding van minimaal %1 per kB nodig is. - - - Can vary +/- 1 byte per input. - Kan +/- byte per invoer variëren. - - - Transactions with higher priority are more likely to get included into a block. - Transacties met een hogere prioriteit zullen eerder in een block gezet worden. - - - (no label) - (geen label) - - - change from %1 (%2) - wijzig van %1 (%2) - - - (change) - (wijzig) - - - - EditAddressDialog - - Edit Address - Bewerk Adres - - - &Label - &Label - - - The label associated with this address list entry - Het label dat bij dit adres item hoort - - - The address associated with this address list entry. This can only be modified for sending addresses. - Het adres dat bij dit adres item hoort. Dit kan alleen bewerkt worden voor verstuur adressen. - - - &Address - &Adres - - - New receiving address - Nieuw ontvangstadres - - - New sending address - Nieuw adres om naar te verzenden - - - Edit receiving address - Bewerk ontvangstadres - - - Edit sending address - Bewerk adres om naar te verzenden - - - The entered address "%1" is already in the address book. - Het opgegeven adres "%1" bestaat al in uw adresboek. - - - The entered address "%1" is not a valid Bitcoin address. - Het opgegeven adres "%1" is een ongeldig Bitcoinadres - - - Could not unlock wallet. - Kon de portemonnee niet openen. - - - New key generation failed. - Genereren nieuwe sleutel mislukt. - - - - FreespaceChecker - - A new data directory will be created. - Een nieuwe gegevensmap wordt aangemaakt. - - - name - naam - - - Directory already exists. Add %1 if you intend to create a new directory here. - Map bestaat al. Voeg %1 toe als u van plan bent hier een nieuwe map aan te maken. - - - Path already exists, and is not a directory. - Communicatiepad bestaat al, en is geen folder. - - - Cannot create data directory here. - Kan hier geen gegevensmap aanmaken. - - - - HelpMessageDialog - - Bitcoin Core - Bitcoin Kern - - - version - versie - - - (%1-bit) - (%1-bit) - - - About Bitcoin Core - Over Bitcoin Core - - - Command-line options - Commandoregel-opties - - - Usage: - Gebruik: - - - command-line options - commandoregel-opties - - - - Intro - - Welcome - Welkom - - - Welcome to Bitcoin Core. - Welkom bij Bitcoin Core - - - As this is the first time the program is launched, you can choose where Bitcoin Core will store its data. - Omdat dit de eerste keer is dat het programma gestart is, kunt u nu kiezen waar Bitcoin Core de data moet opslaan. - - - Bitcoin Core will download and store a copy of the Bitcoin block chain. At least %1GB of data will be stored in this directory, and it will grow over time. The wallet will also be stored in this directory. - Bitcoin Core zal een kopie van de Bitcoin blokketen downloaden en opslaan. Tenminste %1 GB aan data wordt opgeslagen in deze map en het zal groeien in de tijd. De portemonnee wordt ook in deze map opgeslagen. - - - Use the default data directory - Gebruik de standaard gegevensmap - - - Use a custom data directory: - Gebruik een persoonlijke gegevensmap: - - - Bitcoin Core - Bitcoin Kern - - - Error: Specified data directory "%1" cannot be created. - Fout: De gespecificeerde directory "%1" kan niet worden gecreëerd. - - - Error - Fout - - - %n GB of free space available - %n GB aan vrije oplsagruimte beschikbaar%n GB aan vrije oplsagruimte beschikbaar - - - (of %n GB needed) - (van %n GB nodig)(van %n GB nodig) - - - - OpenURIDialog - - Open URI - Open URI - - - Open payment request from URI or file - Open betalingsverzoek via URI of bestand - - - URI: - URI: - - - Select payment request file - Selecteer betalingsverzoek bestand - - - Select payment request file to open - Selecteer betalingsverzoek bestand om te openen - - - - OptionsDialog - - Options - Opties - - - &Main - &Algemeen - - - Size of &database cache - Grootte van de &database cache - - - MB - MB - - - Number of script &verification threads - Aantal threads voor &scriptverificatie - - - Accept connections from outside - Accepteer binnenkomende verbindingen - - - Allow incoming connections - Sta inkomende verbindingen toe - - - IP address of the proxy (e.g. IPv4: 127.0.0.1 / IPv6: ::1) - IP-adres van de proxy (bijv. IPv4: 127.0.0.1 / IPv6: ::1) - - - Minimize instead of exit the application when the window is closed. When this option is enabled, the application will be closed only after selecting Exit in the menu. - Minimaliseren in plaats van de applicatie af te sluiten wanneer het venster is afgesloten. Als deze optie is ingeschakeld, zal de toepassing pas worden afgesloten na het selecteren van Exit in het menu. - - - The user interface language can be set here. This setting will take effect after restarting Bitcoin Core. - Stel hier de taal van de applicatie in. Deze instelling zal van kracht worden na het herstarten van de applicatie. - - - 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 |. - Derde partijen URL's (bijvoorbeeld block explorer) dat in de transacties tab verschijnen als contextmenu elementen. %s in de URL is vervangen door transactie hash. Verscheidene URL's zijn gescheiden door een verticale streep |. - - - Third party transaction URLs - Transactie-URLs van derde partijen - - - Active command-line options that override above options: - Actieve commandoregelopties die bovenstaande opties overschrijven: - - - Reset all client options to default. - Reset alle clientopties naar de standaardinstellingen. - - - &Reset Options - &Reset Opties - - - &Network - &Netwerk - - - Automatically start Bitcoin Core after logging in to the system. - Bitcoin Kern automatisch starten bij inloggen. - - - &Start Bitcoin Core on system login - &Start Bitcoin Kern tijdens login. - - - (0 = auto, <0 = leave that many cores free) - (0 = auto, <0 = laat dit aantal kernen vrij) - - - W&allet - W&allet - - - Expert - Expert - - - Enable coin &control features - Coin &Control activeren - - - 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. - Indien het uitgeven van onbevestigd wisselgeld uitgeschakeld wordt dan kan het wisselgeld van een transactie niet worden gebruikt totdat de transactie ten minste een bevestiging heeft. Dit heeft ook invloed op de manier waarop uw saldo wordt berekend. - - - &Spend unconfirmed change - &Spendeer onbevestigd wisselgeld - - - Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled. - Open de Bitcoin-poort automatisch op de router. Dit werkt alleen als de router UPnP ondersteunt en het aanstaat. - - - Map port using &UPnP - Portmapping via &UPnP - - - Connect to the Bitcoin network through a SOCKS5 proxy. - Verbind met het Bitcoin netwerk via een SOCKS5 proxy. - - - &Connect through SOCKS5 proxy (default proxy): - &Verbind via een SOCKS5-proxy (standaardproxy): - - - Proxy &IP: - Proxy &IP: - - - &Port: - &Poort: - - - Port of the proxy (e.g. 9050) - Poort van de proxy (bijv. 9050) - - - &Window - &Scherm - - - Show only a tray icon after minimizing the window. - Laat alleen een systeemvak-icoon zien wanneer het venster geminimaliseerd is - - - &Minimize to the tray instead of the taskbar - &Minimaliseer naar het systeemvak in plaats van de taakbalk - - - M&inimize on close - Minimaliseer bij sluiten van het &venster - - - &Display - &Interface - - - User Interface &language: - Taal &Gebruikersinterface: - - - &Unit to show amounts in: - &Eenheid om bedrag in te tonen: - - - Choose the default subdivision unit to show in the interface and when sending coins. - Kies de standaard onderverdelingseenheid om weer te geven in uw programma, en voor het versturen van munten - - - Whether to show coin control features or not. - Munt controle functies weergeven of niet. - - - &OK - &OK - - - &Cancel - Ann&uleren - - - default - standaard - - - none - geen - - - Confirm options reset - Bevestig reset opties - - - Client restart required to activate changes. - Herstart van de client is vereist om veranderingen door te voeren. - - - Client will be shut down. Do you want to proceed? - Applicatie zal worden afgesloten. Wilt u doorgaan? - - - This change would require a client restart. - Om dit aan te passen moet de client opnieuw gestart worden. - - - The supplied proxy address is invalid. - Het opgegeven proxyadres is ongeldig. - - - - OverviewPage - - Form - Vorm - - - The displayed information may be out of date. Your wallet automatically synchronizes with the Bitcoin network after a connection is established, but this process has not completed yet. - De weergegeven informatie kan verouderd zijn. Uw portemonnee synchroniseert automaticsh met het Bitcoinnetwerk nadat een verbinding is gelegd, maar dit proces is nog niet voltooid. - - - Watch-only: - Alleen-bekijkbaar: - - - Available: - Beschikbaar: - - - Your current spendable balance - Uw beschikbare saldo - - - Pending: - Afwachtend: - - - Total of transactions that have yet to be confirmed, and do not yet count toward the spendable balance - De som van de transacties die nog bevestigd moeten worden, en nog niet meetellen in uw beschikbare saldo - - - Immature: - Immatuur: - - - Mined balance that has not yet matured - Gedolven saldo dat nog niet tot wasdom is gekomen - - - Balances - Saldi - - - Total: - Totaal: - - - Your current total balance - Uw totale saldo - - - Your current balance in watch-only addresses - Uw huidige balans in alleen-bekijkbare adressen - - - Spendable: - Besteedbaar: - - - Recent transactions - Recente transacties - - - Unconfirmed transactions to watch-only addresses - Onbevestigde transacties naar alleen-bekijkbare adressen - - - Mined balance in watch-only addresses that has not yet matured - Ontgonnen saldo dat nog niet tot wasdom is gekomen - - - Current total balance in watch-only addresses - Huidige balans in alleen-bekijkbare adressen. - - - - PaymentServer - - URI handling - URI-behandeling - - - Invalid payment address %1 - Ongeldig betalingsadres %1 - - - Payment request rejected - Betalingsverzoek geweigerd - - - Payment request network doesn't match client network. - Betalingsaanvraagnetwerk komt niet overeen met klantennetwerk. - - - Payment request is not initialized. - Betalingsaanvraag is niet geïnitialiseerd. - - - Requested payment amount of %1 is too small (considered dust). - Het gevraagde betalingsbedrag van %1 is te weinig (beschouwd als stof). - - - Payment request error - Fout bij betalingsverzoek - - - Cannot start bitcoin: click-to-pay handler - Kan bitcoin niet starten: click-to-pay handler - - - Payment request fetch URL is invalid: %1 - URL om betalingsverzoek te verkrijgen is ongeldig: %1 - - - URI cannot be parsed! This can be caused by an invalid Bitcoin address or malformed URI parameters. - URI kan niet verwerkt worden! Dit kan het gevolg zijn van een ongeldig Bitcoin adres of misvormde URI parameters. - - - Payment request file handling - Betalingsverzoek bestandsafhandeling - - - Payment request file cannot be read! This can be caused by an invalid payment request file. - Betalingsverzoek-bestand kan niet gelezen of verwerkt worden! Dit kan veroorzaakt worden door een ongeldig betalingsverzoek-bestand. - - - Payment request expired. - Betalingsverzoek verlopen. - - - Unverified payment requests to custom payment scripts are unsupported. - Niet-geverifieerde betalingsverzoeken naar aangepaste betaling scripts worden niet ondersteund. - - - Invalid payment request. - Ongeldig betalingsverzoek. - - - Refund from %1 - Restitutie van %1 - - - Payment request %1 is too large (%2 bytes, allowed %3 bytes). - Betalingsverzoek %1 is te groot (%2 bytes, toegestaan ​​%3 bytes). - - - Payment request DoS protection - Betalingsaanvraag DoS bescherming - - - Error communicating with %1: %2 - Fout bij communiceren met %1: %2 - - - Payment request cannot be parsed! - Betalingsverzoek kan niet juist worden ontleed of verwerkt! - - - Bad response from server %1 - Ongeldige respons van server %1 - - - Payment acknowledged - Betaling bevestigd - - - Network request error - Netwerkfout bij verzoek - - - - PeerTableModel - - User Agent - User Agent - - - Ping Time - Ping tijd - - - - QObject - - Amount - Bedrag - - - Enter a Bitcoin address (e.g. %1) - Voer een Bitcoin-adres in (bijv. %1) - - - %1 d - %1d - - - %1 h - %1 uur - - - %1 m - %1 m - - - %1 s - %1s - - - None - Geen - - - N/A - N.v.t. - - - %1 ms - %1 ms - - - - QRImageWidget - - &Save Image... - &Afbeelding opslaan... - - - &Copy Image - &Afbeelding kopiëren - - - Save QR Code - Sla QR-code op - - - PNG Image (*.png) - PNG afbeelding (*.png) - - - - RPCConsole - - Client name - Clientnaam - - - N/A - N.v.t. - - - Client version - Clientversie - - - &Information - &Informatie - - - Debug window - Debug venster - - - General - Algemeen - - - Using OpenSSL version - Gebruikt OpenSSL versie - - - Using BerkeleyDB version - Gebruikt BerkeleyDB versie - - - Startup time - Opstarttijd - - - Network - Netwerk - - - Name - Naam - - - Number of connections - Aantal connecties - - - Block chain - Blokketen - - - Current number of blocks - Huidig aantal blokken - - - Open the Bitcoin Core debug log file from the current data directory. This can take a few seconds for large log files. - Open het Bitcoin Core debug logbestand van de huidige gegevens directory. Dit kan enkele seconden duren voor grote logbestanden. - - - Received - Ontvangen - - - Sent - Verstuurd - - - &Peers - &Peers - - - Select a peer to view detailed information. - Selecteer een peer om gedetailleerde informatie te bekijken. - - - Direction - Directie - - - Version - Versie - - - User Agent - User Agent - - - Services - Services - - - Starting Height - Aanvangshoogte - - - Sync Height - Synchronisatiehoogte - - - Ban Score - Ban score - - - Connection Time - Connectie tijd - - - Last Send - Laatst verstuurd - - - Last Receive - Laatst ontvangen - - - Bytes Sent - Bytes Verzonden - - - Bytes Received - Bytes Ontvangen - - - Ping Time - Ping Tijd - - - Last block time - Tijd laatste blok - - - &Open - &Open - - - &Console - &Console - - - &Network Traffic - &Netwerkverkeer - - - &Clear - &Wissen - - - Totals - Totalen - - - In: - In; - - - Out: - Uit: - - - Build date - Bouwdatum - - - Debug log file - Debug-logbestand - - - Clear console - Maak console leeg - - - Welcome to the Bitcoin Core RPC console. - Welkom op de Bitcoin Core RPC console. - - - Use up and down arrows to navigate history, and <b>Ctrl-L</b> to clear screen. - Gebruik de pijltjestoetsen om door de geschiedenis te navigeren, en <b>Ctrl-L</b> om het scherm leeg te maken. - - - Type <b>help</b> for an overview of available commands. - Typ <b>help</b> voor een overzicht van de beschikbare commando's. - - - %1 B - %1 B - - - %1 KB - %1 Kb - - - %1 MB - %1 MB - - - %1 GB - %1 Gb - - - via %1 - via %1 - - - never - nooit - - - Inbound - Inkomend - - - Outbound - Uitgaand - - - Unknown - Onbekend - - - Fetching... - Ophalen... - - - - ReceiveCoinsDialog - - &Amount: - &Bedrag - - - &Label: - &Label: - - - &Message: - &Bericht - - - Reuse one of the previously used receiving addresses. Reusing addresses has security and privacy issues. Do not use this unless re-generating a payment request made before. - Gebruik een van de eerder gebruikte ontvangstadressen opnieuw. Het opnieuw gebruiken van adressen heeft beveiliging- en privacy problemen. Gebruik dit niet, behalve als er eerder een betalingsverzoek opnieuw gegenereerd is. - - - R&euse an existing receiving address (not recommended) - H&ergebruik en bestaand ontvangstadres (niet aanbevolen) - - - An optional message to attach to the payment request, which will be displayed when the request is opened. Note: The message will not be sent with the payment over the Bitcoin network. - Een optioneel bericht om bij te voegen aan het betalingsverzoek, dewelke zal getoond worden wanneer het verzoek is geopend. Opermerking: Het bericht zal niet worden verzonden met de betaling over het Bitcoin netwerk. - - - An optional label to associate with the new receiving address. - Een optioneel label om te associëren met het nieuwe ontvangende adres - - - Use this form to request payments. All fields are <b>optional</b>. - Gebruik dit formulier om te verzoeken tot betaling. Alle velden zijn <b>optioneel</b>. - - - An optional amount to request. Leave this empty or zero to not request a specific amount. - Een optioneel te verzoeken bedrag. Laat dit leeg, of nul, om geen specifiek bedrag aan te vragen. - - - Clear all fields of the form. - Wis alle velden op het formulier. - - - Clear - Wissen - - - Requested payments history - Geschiedenis van de betalingsverzoeken - - - &Request payment - &Betalingsverzoek - - - Show the selected request (does the same as double clicking an entry) - Toon het geselecteerde verzoek (doet hetzelfde als dubbelklikken) - - - Show - Toon - - - Remove the selected entries from the list - Verwijder de geselecteerde items van de lijst - - - Remove - Verwijder - - - Copy label - Kopieer label - - - Copy message - Kopieer bericht - - - Copy amount - Kopieer bedrag - - - - ReceiveRequestDialog - - QR Code - QR-code - - - Copy &URI - Kopieer &URI - - - Copy &Address - Kopieer &adres - - - &Save Image... - &Sla afbeelding op... - - - Request payment to %1 - Betalingsverzoek tot %1 - - - Payment information - Betalingsinformatie - - - URI - URI - - - Address - Adres - - - Amount - Bedrag - - - Label - Label - - - Message - Bericht - - - Resulting URI too long, try to reduce the text for label / message. - Resulterende URI te lang, probeer de tekst korter te maken voor het label/bericht. - - - Error encoding URI into QR Code. - Fout tijdens encoderen URI in QR-code - - - - RecentRequestsTableModel - - Date - Datum - - - Label - Label - - - Message - Bericht - - - Amount - Bedrag - - - (no label) - (geen label) - - - (no message) - (geen bericht) - - - (no amount) - (geen bedrag) - - - - SendCoinsDialog - - Send Coins - Verstuur munten - - - Coin Control Features - Coin controle opties - - - Inputs... - Invoer... - - - automatically selected - automatisch geselecteerd - - - Insufficient funds! - Onvoldoende fonds! - - - Quantity: - Kwantiteit - - - Bytes: - Bytes: - - - Amount: - Bedrag: - - - Priority: - Prioriteit: - - - Fee: - Vergoeding: - - - After Fee: - Na vergoeding: - - - Change: - Wisselgeld: - - - If this is activated, but the change address is empty or invalid, change will be sent to a newly generated address. - Als dit is geactiveerd, maar het wisselgeldadres is leeg of ongeldig, dan wordt het wisselgeld verzonden naar een nieuw gegenereerd adres. - - - Custom change address - Aangepast wisselgeldadres - - - Transaction Fee: - Transactiekosten: - - - Choose... - Kies... - - - collapse fee-settings - Transactiekosteninstellingen verbergen - - - per kilobyte - per kilobyte - - - 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. - Als de aangepaste toeslag is ingesteld op 1000 satoshis en de transactie is maar 250 bytes, dan wordt bij "per kilobyte" 250 satoshis aan toeslag berekend, terwijl er bij "totaal tenminste" 1000 satoshis worden berekend. Voor transacties die groter zijn dan een kilobyte, wordt in beide gevallen per kilobyte de toeslag berekend. - - - Hide - Verbergen - - - total at least - totaal ten minste - - - 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. - De minimale toeslag betalen is prima mits het transactievolume kleiner is dan de ruimte in de blokken. Let wel op dat dit tot gevolg kan hebben dat een transactie nooit wordt bevestigd als er meer vraag is naar bitcointransacties dan het netwerk kan verwerken. - - - (read the tooltip) - (lees de tooltip) - - - Recommended: - Aanbevolen: - - - Custom: - Handmatig: - - - (Smart fee not initialized yet. This usually takes a few blocks...) - (Slimme vergoeding is nog niet geïnitialiseerd. Dit duurt meestal een paar blokken...) - - - Confirmation time: - Bevestigings tijd: - - - normal - normaal - - - fast - snel - - - Send as zero-fee transaction if possible - Verstuur als transactie zonder verzendkosten indien mogelijk - - - (confirmation may take longer) - (bevestiging kan langer duren) - - - Send to multiple recipients at once - Verstuur aan verschillende ontvangers ineens - - - Add &Recipient - Voeg &Ontvanger Toe - - - Clear all fields of the form. - Wis alle velden van het formulier. - - - Dust: - Stof: - - - Clear &All - Verwijder &Alles - - - Balance: - Saldo: - - - Confirm the send action - Bevestig de verstuuractie - - - S&end - &Verstuur - - - Confirm send coins - Bevestig versturen munten - - - %1 to %2 - %1 tot %2 - - - Copy quantity - Kopieer aantal - - - Copy amount - Kopieer bedrag - - - Copy fee - Kopieer vergoeding - - - Copy after fee - Kopieer na vergoeding - - - Copy bytes - Kopieer bytes - - - Copy priority - Kopieer prioriteit - - - Copy change - Kopieer wijziging - - - or - of - - - The amount to pay must be larger than 0. - Het ingevoerde bedrag moet groter zijn dan 0. - - - The amount exceeds your balance. - Bedrag is hoger dan uw huidige saldo - - - The total exceeds your balance when the %1 transaction fee is included. - Totaal overschrijdt uw huidige saldo wanneer de %1 transactiekosten worden meegerekend - - - Transaction creation failed! - Transactie creatie niet gelukt! - - - 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. - De transactie was afgewezen. Dit kan gebeuren als u eerder uitgegeven munten opnieuw wilt versturen, zoals wanneer u een kopie van uw wallet.dat heeft gebruikt en in de kopie deze munten zijn gemarkeerd als uitgegeven, maar in de huidige nog niet. - - - Payment request expired. - Betalingsverzoek verlopen. - - - Pay only the minimum fee of %1 - Betaal alleen de minimale transactiekosten van %1 - - - The recipient address is not valid. Please recheck. - Het adres van de ontvanger is niet geldig. Gelieve opnieuw te controleren.. - - - Duplicate address found: addresses should only be used once each. - Dubbel adres gevonden: adressen mogen maar één keer worden gebruikt worden. - - - Warning: Invalid Bitcoin address - Waarschuwing: Ongeldig Bitcoin adres - - - (no label) - (geen label) - - - Warning: Unknown change address - Waarschuwing: Onbekend wisselgeldadres - - - Copy dust - Kopieër stof - - - Are you sure you want to send? - Weet u zeker dat u wilt verzenden? - - - added as transaction fee - toegevoegd als transactiekosten - - - - SendCoinsEntry - - A&mount: - Bedra&g: - - - Pay &To: - Betaal &Aan: - - - Enter a label for this address to add it to your address book - Vul een label in voor dit adres om het toe te voegen aan uw adresboek - - - &Label: - &Label: - - - Choose previously used address - Kies een eerder gebruikt adres - - - This is a normal payment. - Dit is een normale betaling. - - - The Bitcoin address to send the payment to - Het Bitcoin adres om betaling aan te voldoen - - - Alt+A - Alt+A - - - Paste address from clipboard - Plak adres vanuit klembord - - - Alt+P - Alt+P - - - Remove this entry - Verwijder deze toevoeging - - - Message: - Bericht: - - - This is an unauthenticated payment request. - Dit is een niet-geverifieerd betalingsverzoek. - - - This is an authenticated payment request. - Dit is een geverifieerd betalingsverzoek. - - - Enter a label for this address to add it to the list of used addresses - Vul een label voor dit adres in om het aan de lijst met gebruikte adressen toe te voegen - - - A message that was attached to the bitcoin: URI which will be stored with the transaction for your reference. Note: This message will not be sent over the Bitcoin network. - Een bericht dat werd toegevoegd aan de bitcoin: URI dewelke wordt opgeslagen met de transactie ter referentie. Opmerking: Dit bericht zal niet worden verzonden over het Bitcoin netwerk. - - - Pay To: - Betaal Aan: - - - Memo: - Memo: - - - - ShutdownWindow - - Bitcoin Core is shutting down... - Bitcoin Core is aan het afsluiten... - - - Do not shut down the computer until this window disappears. - Sluit de computer niet af totdat dit venster verdwenen is. - - - - SignVerifyMessageDialog - - Signatures - Sign / Verify a Message - Handtekeningen - Onderteken een bericht / Verifiëer een handtekening - - - &Sign Message - O&nderteken Bericht - - - You can sign messages/agreements with your addresses to prove you can receive bitcoins sent to them. Be careful not to sign anything vague or random, as phishing attacks may try to trick you into signing your identity over to them. Only sign fully-detailed statements you agree to. - U kunt berichten/overeenkomsten ondertekenen met uw adres om te bewijzen dat u Bitcoins kunt versturen. Wees voorzichtig met het ondertekenen van iets vaags of willekeurigs, omdat phishing-aanvallen u kunnen proberen te misleiden tot het ondertekenen van overeenkomsten om uw identiteit aan hen toe te vertrouwen. Onderteken alleen volledig gedetailleerde verklaringen voordat u akkoord gaat. - - - The Bitcoin address to sign the message with - Het Bitcoin adres om bericht mee te ondertekenen - - - Choose previously used address - Kies een eerder gebruikt adres - - - Alt+A - Alt+A - - - Paste address from clipboard - Plak adres vanuit klembord - - - Alt+P - Alt+P - - - Enter the message you want to sign here - Typ hier het bericht dat u wilt ondertekenen - - - Signature - Handtekening - - - Copy the current signature to the system clipboard - Kopieer de huidige handtekening naar het systeemklembord - - - Sign the message to prove you own this Bitcoin address - Onderteken een bericht om te bewijzen dat u een bepaald Bitcoinadres bezit - - - Sign &Message - Onderteken &Bericht - - - Reset all sign message fields - Verwijder alles in de invulvelden - - - Clear &All - Verwijder &Alles - - - &Verify Message - &Verifiëer Bericht - - - The Bitcoin address the message was signed with - Het Bitcoin adres waarmee het bericht ondertekend is - - - Verify the message to ensure it was signed with the specified Bitcoin address - Controleer een bericht om te verifiëren dat het gespecificeerde Bitcoinadres het bericht heeft ondertekend. - - - Verify &Message - Verifiëer &Bericht - - - Reset all verify message fields - Verwijder alles in de invulvelden - - - Click "Sign Message" to generate signature - Klik "Onderteken Bericht" om de handtekening te genereren - - - The entered address is invalid. - Het opgegeven adres is ongeldig. - - - Please check the address and try again. - Controleer s.v.p. het adres en probeer het opnieuw. - - - The entered address does not refer to a key. - Het opgegeven adres verwijst niet naar een sleutel. - - - Wallet unlock was cancelled. - Portemonnee-ontsleuteling is geannuleerd - - - Private key for the entered address is not available. - Geheime sleutel voor het ingevoerde adres is niet beschikbaar. - - - Message signing failed. - Ondertekenen van het bericht is mislukt. - - - Message signed. - Bericht ondertekend. - - - The signature could not be decoded. - De handtekening kon niet worden gedecodeerd. - - - Please check the signature and try again. - Controleer s.v.p. de handtekening en probeer het opnieuw. - - - The signature did not match the message digest. - De handtekening hoort niet bij het bericht. - - - Message verification failed. - Berichtverificatie mislukt. - - - Message verified. - Bericht correct geverifiëerd. - - - - SplashScreen - - Bitcoin Core - Bitcoin Kern - - - The Bitcoin Core developers - De Bitcoin Core ontwikkelaars - - - [testnet] - [testnetwerk] - - - - TrafficGraphWidget - - KB/s - KB/s - - - - TransactionDesc - - Open until %1 - Openen totdat %1 - - - conflicted - conflicterend - - - %1/offline - %1/offline - - - %1/unconfirmed - %1/onbevestigd - - - %1 confirmations - %1 bevestigingen - - - Status - Status - - - , broadcast through %n node(s) - , uitgezonden naar %n node, uitgezonden naar %n nodes - - - Date - Datum - - - Source - Bron - - - Generated - Gegenereerd - - - From - Van - - - To - Aan - - - own address - eigen adres - - - watch-only - alleen-bekijkbaar - - - label - label - - - Credit - Credit - - - matures in %n more block(s) - komt tot wasdom na %n nieuw blokkomt tot wasdom na %n nieuwe blokken - - - not accepted - niet geaccepteerd - - - Debit - Debet - - - Total debit - Totaal debit - - - Total credit - Totaal credit - - - Transaction fee - Transactiekosten - - - Net amount - Netto bedrag - - - Message - Bericht - - - Comment - Opmerking - - - Transaction ID - Transactie-ID: - - - Merchant - Handelaar - - - Generated coins must mature %1 blocks before they can be spent. When you generated this block, it was broadcast to the network to be added to the block chain. If it fails to get into the chain, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - Gegenereerde munten moeten %1 blokken rijpen voordat ze kunnen worden besteed. Toen dit blok gegenereerd werd, werd het uitgezonden naar het netwerk om aan de blokketen toegevoegd te worden. Als het niet lukt om in de keten toegevoegd te worden, zal de status te veranderen naar "niet geaccepteerd" en het zal deze niet besteedbaar zijn. Dit kan soms gebeuren als een ander knooppunt een blok genereert binnen een paar seconden na die van u. - - - Debug information - Debug-informatie - - - Transaction - Transactie - - - Inputs - Inputs - - - Amount - Bedrag - - - true - waar - - - false - onwaar - - - , has not been successfully broadcast yet - , is nog niet met succes uitgezonden - - - Open for %n more block(s) - Open voor nog %n blokOpen voor nog %n blokken - - - unknown - onbekend - - - - TransactionDescDialog - - Transaction details - Transactiedetails - - - This pane shows a detailed description of the transaction - Dit venster laat een uitgebreide beschrijving van de transactie zien - - - - TransactionTableModel - - Date - Datum - - - Type - Type - - - Immature (%1 confirmations, will be available after %2) - immatuur (%1 bevestigingen, zal beschikbaar zijn na %2) - - - Open for %n more block(s) - Open voor nog %n blokOpen voor nog %n blokken - - - Open until %1 - Open tot %1 - - - Confirmed (%1 confirmations) - Bevestigd (%1 bevestigingen) - - - This block was not received by any other nodes and will probably not be accepted! - Dit blok is niet ontvangen bij andere nodes en zal waarschijnlijk niet worden geaccepteerd! - - - Generated but not accepted - Gegenereerd maar niet geaccepteerd - - - Offline - Niet verbonden - - - Label - Label - - - Unconfirmed - Onbevestigd - - - Confirming (%1 of %2 recommended confirmations) - Bevestigen (%1 van %2 aanbevolen bevestigingen) - - - Conflicted - Conflicterend - - - Received with - Ontvangen met - - - Received from - Ontvangen van - - - Sent to - Verzonden aan - - - Payment to yourself - Betaling aan uzelf - - - Mined - Gedolven - - - watch-only - alleen-bekijkbaar - - - (n/a) - (nvt) - - - Transaction status. Hover over this field to show number of confirmations. - Transactiestatus. Houd de muiscursor boven dit veld om het aantal bevestigingen te laten zien. - - - Date and time that the transaction was received. - Datum en tijd waarop deze transactie is ontvangen. - - - Type of transaction. - Type transactie. - - - Whether or not a watch-only address is involved in this transaction. - Of er een alleen-bekijken adres is betrokken bij deze transactie. - - - Amount removed from or added to balance. - Bedrag verwijderd van of toegevoegd aan saldo - - - - TransactionView - - All - Alles - - - Today - Vandaag - - - This week - Deze week - - - This month - Deze maand - - - Last month - Vorige maand - - - This year - Dit jaar - - - Range... - Bereik... - - - Received with - Ontvangen met - - - Sent to - Verzonden aan - - - To yourself - Aan uzelf - - - Mined - Gedolven - - - Other - Anders - - - Enter address or label to search - Vul adres of label in om te zoeken - - - Min amount - Min. bedrag - - - Copy address - Kopieer adres - - - Copy label - Kopieer label - - - Copy amount - Kopieer bedrag - - - Copy transaction ID - Kopieer transactie-ID - - - Edit label - Bewerk label - - - Show transaction details - Toon transactiedetails - - - Export Transaction History - Exporteer Transactieverleden - - - Watch-only - Alleen-bekijkbaar - - - Exporting Failed - Export Mislukt - - - There was an error trying to save the transaction history to %1. - Er is een fout opgetreden bij het opslaan van het transactieverleden naar %1. - - - Exporting Successful - Export Succesvol - - - The transaction history was successfully saved to %1. - Het transactieverleden was succesvol bewaard in %1. - - - Comma separated file (*.csv) - Kommagescheiden bestand (*.csv) - - - Confirmed - Bevestigd - - - Date - Datum - - - Type - Type - - - Label - Label - - - Address - Adres - - - ID - ID - - - Range: - Bereik: - - - to - naar - - - - UnitDisplayStatusBarControl - - Unit to show amounts in. Click to select another unit. - Eenheid om bedragen uit te drukken. Klik om een andere eenheid te selecteren. - - - - WalletFrame - - No wallet has been loaded. - Portemonnee werd niet geladen. - - - - WalletModel - - Send Coins - Verstuur munten - - - - WalletView - - &Export - &Exporteer - - - Export the data in the current tab to a file - Exporteer de data in de huidige tab naar een bestand - - - Backup Wallet - Portemonnee backuppen - - - Wallet Data (*.dat) - Portemonnee-data (*.dat) - - - Backup Failed - Backup Mislukt - - - There was an error trying to save the wallet data to %1. - Er is een fout opgetreden bij het wegschrijven van de portemonnee-data naar %1. - - - The wallet data was successfully saved to %1. - De portemonneedata is succesvol opgeslagen in %1. - - - Backup Successful - Backup Succesvol - - - - bitcoin-core - - Options: - Opties: - - - Specify data directory - Stel datamap in - - - Connect to a node to retrieve peer addresses, and disconnect - Verbind naar een node om adressen van anderen op te halen, en verbreek vervolgens de verbinding - - - Specify your own public address - Specificeer uw eigen publieke adres - - - Accept command line and JSON-RPC commands - Aanvaard commandoregel- en JSON-RPC-commando's - - - Run in the background as a daemon and accept commands - Draai in de achtergrond als daemon en aanvaard commando's - - - Use the test network - Gebruik het testnetwerk - - - Accept connections from outside (default: 1 if no -proxy or -connect) - Accepteer verbindingen van buitenaf (standaard: 1 als geen -proxy of -connect is opgegeven) - - - Bind to given address and always listen on it. Use [host]:port notation for IPv6 - Bind aan opgegeven adres en luister er altijd op. Gebruik [host]:port notatie voor IPv6 - - - Delete all wallet transactions and only recover those parts of the blockchain through -rescan on startup - Verwijder alle transacties van de portemonnee en herstel alleen de delen van de blockchain door -rescan tijdens het opstarten - - - Distributed under the MIT software license, see the accompanying file COPYING or <http://www.opensource.org/licenses/mit-license.php>. - Uitgegeven onder de MIT software licentie, zie het bijgevoegde bestand COPYING of <http://www.opensource.org/licenses/mit-license.php>. - - - Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) - Voer opdracht uit zodra een portemonneetransactie verandert (%s in cmd wordt vervangen door TxID) - - - Set the number of script verification threads (%u to %d, 0 = auto, <0 = leave that many cores free, default: %d) - Kies het aantal script verificatie processen (%u tot %d, 0 = auto, <0 = laat dit aantal kernen vrij, standaard: %d) - - - This is a pre-release test build - use at your own risk - do not use for mining or merchant applications - Dit is een pre-release testversie - gebruik op eigen risico! Gebruik deze niet voor het delven van munten of handelsdoeleinden - - - Unable to bind to %s on this computer. Bitcoin Core is probably already running. - Niet in staat om %s te verbinden op deze computer. Bitcoin Core draait waarschijnlijk al. - - - WARNING: check your network connection, %d blocks received in the last %d hours (%d expected) - WAARSCHUWING: controleer uw netwerkverbinding, %d blokken ontvangen in de laatste %d uren (%d verwacht) - - - Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. - Waarschuwing: -paytxfee is zeer hoog ingesteld. Dit zijn de transactiekosten die u betaalt bij het versturen van een transactie. - - - Warning: The network does not appear to fully agree! Some miners appear to be experiencing issues. - Waarschuwing: Het lijkt erop dat het netwerk geen consensus kan vinden! Sommige delvers lijken problemen te ondervinden. - - - Warning: We do not appear to fully agree with our peers! You may need to upgrade, or other nodes may need to upgrade. - Waarschuwing: Het lijkt erop dat we geen consensus kunnen vinden met onze peers! Mogelijk dient u te upgraden, of andere nodes moeten wellicht upgraden. - - - Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. - Waarschuwing: Fout bij het lezen van wallet.dat! Alle sleutels zijn in goede orde uitgelezen, maar transactiedata of adresboeklemma's zouden kunnen ontbreken of fouten bevatten. - - - 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. - Waarschuwing: wallet.dat is corrupt, data is veiliggesteld! Originele wallet.dat is opgeslagen als wallet.{tijdstip}.bak in %s; als uw balans of transacties incorrect zijn dient u een backup terug te zetten. - - - Whitelist peers connecting from the given netmask or IP address. Can be specified multiple times. - Goedgekeurde peers die verbinden van het ingegeven netmask of IP adres. Kan meerdere keren gespecificeerd worden. - - - (default: 1) - (standaard: 1) - - - <category> can be: - <category> kan zijn: - - - Attempt to recover private keys from a corrupt wallet.dat - Poog de geheime sleutels uit een corrupt wallet.dat bestand terug te halen - - - Block creation options: - Blokcreatie-opties: - - - Connect only to the specified node(s) - Verbind alleen naar de gespecificeerde node(s) - - - Connection options: - Verbindingsopties: - - - Corrupted block database detected - Corrupte blokkendatabase gedetecteerd - - - Debugging/Testing options: - Foutopsporing/Testopties: - - - Do not load the wallet and disable wallet RPC calls - Laad de wallet niet en schakel wallet RPC oproepen uit - - - Do you want to rebuild the block database now? - Wilt u de blokkendatabase nu herbouwen? - - - Error initializing block database - Fout bij intialisatie blokkendatabase - - - Error initializing wallet database environment %s! - Probleem met initializeren van de database-omgeving %s! - - - Error loading block database - Fout bij het laden van blokkendatabase - - - Error opening block database - Fout bij openen blokkendatabase - - - Error: Disk space is low! - Fout: Weinig vrije diskruimte! - - - Failed to listen on any port. Use -listen=0 if you want this. - Mislukt om op welke poort dan ook te luisteren. Gebruik -listen=0 as u dit wilt. - - - If <category> is not supplied, output all debugging information. - Als er geen <category> is opgegeven, laat dan alle debugging informatie zien. - - - Importing... - Importeren... - - - Incorrect or no genesis block found. Wrong datadir for network? - Incorrect of geen genesis-blok gevonden. Verkeerde datamap voor het netwerk? - - - Invalid -onion address: '%s' - Ongeldig -onion adres '%s' - - - Not enough file descriptors available. - Niet genoeg file descriptors beschikbaar. - - - Only connect to nodes in network <net> (ipv4, ipv6 or onion) - Verbind alleen met nodes in netwerk <net> (ipv4, ipv6 of onion) - - - Set database cache size in megabytes (%d to %d, default: %d) - Zet database cache grootte in megabytes (%d tot %d, standaard: %d) - - - Set maximum block size in bytes (default: %d) - Stel maximum blokgrootte in in bytes (standaard: %d) - - - Specify wallet file (within data directory) - Specificeer het portemonnee bestand (vanuit de gegevensmap) - - - Use UPnP to map the listening port (default: %u) - Gebruik UPnP om de luisterende poort te mappen (standaard: %u) - - - Verifying blocks... - Blokken aan het controleren... - - - Verifying wallet... - Portemonnee aan het controleren... - - - Wallet %s resides outside data directory %s - Portemonnee %s bevindt zich buiten de gegevensmap %s - - - Wallet options: - Portemonnee instellingen: - - - Warning: This version is obsolete; upgrade required! - Waarschuwing: Deze versie is verouderd; upgraden verplicht! - - - You need to rebuild the database using -reindex to change -txindex - Om -txindex te kunnen veranderen dient u de database opnieuw te bouwen met gebruik van -reindex. - - - Imports blocks from external blk000??.dat file - Importeert blokken van extern blk000??.dat bestand - - - 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 - Sta JSON-RPC verbindingen toe vanuit een gespecificeerde bron. Geldig voor <ip> zijn een enkel IP (bijv. 1.2.3.4), een netwerk/netmask (bijv. 1.2.3.4/255.255.255.0) of een netwerk/CIDR (bijv. 1.2.3.4/24). Deze optie kan meerdere keren gespecificeerd worden. - - - An error occurred while setting up the RPC address %s port %u for listening: %s - Er is een fout opgetreden tijdens het opzetten van het RPC adres %s poort %u voor luisteren: %s - - - Bind to given address and whitelist peers connecting to it. Use [host]:port notation for IPv6 - Bind aan opgegeven adres en keur peers die ermee verbinden goed. Gebruik [host]:poort notatie voor IPv6 - - - Bind to given address to listen for JSON-RPC connections. Use [host]:port notation for IPv6. This option can be specified multiple times (default: bind to all interfaces) - Bind aan gegeven adres om te luisteren voor JSON-RPC verbindingen. Gebruik [host]:poort notatie voor IPv6. Deze optie kan meerdere keren gespecificeerd worden (standaard: bind aan alle interfaces. - - - Cannot obtain a lock on data directory %s. Bitcoin Core is probably already running. - Kan geen lock verkrijgen op gegevensmap %s. Bitcoin Core draait waarschijnlijk al. - - - Create new files with system default permissions, instead of umask 077 (only effective with disabled wallet functionality) - Creër nieuwe bestanden met standaard systeem bestandsrechten in plaats van umask 077 (alleen effectief met uitgeschakelde portemonnee functionaliteit) - - - Error: Listening for incoming connections failed (listen returned error %s) - Fout: luisteren naar binnenkomende verbindingen mislukt (luisteren gaf foutmelding %s) - - - Error: Unsupported argument -socks found. Setting SOCKS version isn't possible anymore, only SOCKS5 proxies are supported. - Fout: er is een niet-ondersteund argument -socks aangetroffen. Het instellen van de SOCKS-versie is niet langer mogelijk. Alleen SOCKS5-proxy's worden ondersteund. - - - Execute command when a relevant alert is received or we see a really long fork (%s in cmd is replaced by message) - Voer commando uit zodra een waarschuwing is ontvangen of wanneer we een erg lange fork detecteren (%s in commando wordt vervangen door bericht) - - - Fees (in BTC/Kb) smaller than this are considered zero fee for relaying (default: %s) - Toeslagen (in BTC/Kb) kleiner dan dit worden beschouwd als geen vergoeding (voor doorgeven) (standaard: %s) - - - If paytxfee is not set, include enough fee so transactions begin confirmation on average within n blocks (default: %u) - Als paytxfee niet is ingesteld, het pakket voldoende vergoeding zodat transacties beginnen bevestiging gemiddeld binnen in blokken (default: %u) - - - Invalid amount for -maxtxfee=<amount>: '%s' (must be at least the minrelay fee of %s to prevent stuck transactions) - ongeldig bedrag voor -maxtxfee=<amount>: '%s' (moet ten minste de minrelay vergoeding van %s het voorkomen geplakt transacties voorkomen) - - - Maximum size of data in data carrier transactions we relay and mine (default: %u) - Maximale grootte va n de gegevens in gegevensdrager transacties we relais en de mijnen -(default: %u) - - - Query for peer addresses via DNS lookup, if low on addresses (default: 1 unless -connect) - Query voor peer- adressen via DNS- lookup , als laag op adressen (default: 1 unless -connect) - - - Set maximum size of high-priority/low-fee transactions in bytes (default: %d) - Stel maximumgrootte in bytes in voor hoge-prioriteits-/lage-transactiekosten-transacties (standaard: %d) - - - Set the number of threads for coin generation if enabled (-1 = all cores, default: %d) - Stel het aantal threads in voor het genereren van coins indien ingesteld (-1 = alle kernen, standaard: %d) - - - The transaction amount is too small to send after the fee has been deducted - Het transactiebedrag is te klein om te versturen nadat de vergoeding in mindering is gebracht - - - 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. - Dit product bevat software dat ontwikkeld is door het OpenSSL Project voor gebruik in de OpenSSL Toolkit <https://www.openssl.org/> en cryptografische software geschreven door Eric Young en UPnP software geschreven door Thomas Bernard. - - - 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 - - Om bitcoind of de -server optie naar bitcoin-gt te gebruiken, dient u een rpcwachtwoord in te stellen in het configuratiebestand: - %s -Wij raden u aan om het volgende wachtwoord willekeurig te gebruiken: -rpcuser=bitcoinrpc -rpcpassword=%s -(u hoeft dit wachtwoord niet te onthouden) -De gebruikersnaam en het wachtwoorden moeten NIET hetzelfde zijn. -Indien het bestand niet bestaat, maak het bestand aan met bestandsrechten: alleen lezen voor eigenaar. -Het is ook aan te raden om een alarmnotificatie in te stellen, zodat u op de hoogte bent van de problemen; -Voorbeeld: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com - - - Warning: -maxtxfee is set very high! Fees this large could be paid on a single transaction. - Let op: -maxtxfee is erg hoog ingesteld! Transactiekosten van dergelijke groottes kunnen in een enkele transactie worden betaald. - - - Warning: Please check that your computer's date and time are correct! If your clock is wrong Bitcoin Core will not work properly. - Waarschuwing: Controleer dat de datum en tijd van uw computer correct zijn ingesteld! Bij een onjuist ingestelde klok zal Bitcoin Core niet goed werken. - - - 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 - Goedgekeurde peers kunnen niet ge-DoS-banned worden en hun transacties worden altijd doorgestuurd, zelfs als ze reeds in de mempool aanwezig zijn, nuttig voor bijv. een gateway - - - (default: %u) - (standaard: %u) - - - Accept public REST requests (default: %u) - Accepteer publieke REST-requests (standaard: %u) - - - Activating best chain... - Beste reeks activeren... - - - Cannot resolve -whitebind address: '%s' - Kan -whitebind adres niet herleiden: '%s' - - - Choose data directory on startup (default: 0) - Kies de gegevensmap tijdens het opstarten (standaard: 0) - - - Connect through SOCKS5 proxy - Verbind door SOCKS5 proxy - - - Copyright (C) 2009-%i The Bitcoin Core Developers - Auteursrecht (C) 2009-%i De Bitcoin Core Ontwikkelaars - - - Could not parse -rpcbind value %s as network address - Niet mogelijk om -rpcbind waarde %s te verwerken als netwerk adres - - - Error loading wallet.dat: Wallet requires newer version of Bitcoin Core - Fout bij laden wallet.dat: Portemonnee vereist een nieuwere versie van Bitcoin Core - - - Error reading from database, shutting down. - Fout bij het lezen van de database, afsluiten. - - - Error: Unsupported argument -tor found, use -onion. - Fout: Niet ondersteund argument -tor gevonden, gebruik -onion. - - - Fee (in BTC/kB) to add to transactions you send (default: %s) - Transactiekosten (in BTC/kB) om toe te voegen aan transacties die u verstuurd (standaard: %s) - - - Information - Informatie - - - Initialization sanity check failed. Bitcoin Core is shutting down. - Initialisatie sanity check mislukt. Bitcoin Core is aan het afsluiten. - - - Invalid amount for -maxtxfee=<amount>: '%s' - Ongeldig bedrag voor -maxtxfee=<amount>: '%s' - - - Invalid amount for -minrelaytxfee=<amount>: '%s' - Ongeldig bedrag voor -minrelaytxfee=<bedrag>: '%s' - - - Invalid amount for -mintxfee=<amount>: '%s' - Ongeldig bedrag voor -mintxfee=<bedrag>: '%s' - - - Invalid amount for -paytxfee=<amount>: '%s' (must be at least %s) - Ongeldig bedrag voor -paytxfee=<bedrag>: '%s' (Minimum %s) - - - Invalid netmask specified in -whitelist: '%s' - Ongeldig netmask gespecificeerd in -whitelist: '%s' - - - Keep at most <n> unconnectable transactions in memory (default: %u) - Houd maximaal <n> onverbonden transacties in geheugen (standaard: %u) - - - Need to specify a port with -whitebind: '%s' - Verplicht een poort met -whitebind op te geven: '%s' - - - Node relay options: - Node relay opties: - - - RPC SSL options: (see the Bitcoin Wiki for SSL setup instructions) - RPC SSL opties: (zie de Bitcoin Wiki voor SSL installatie-instructies) - - - RPC server options: - RPC server opties: - - - RPC support for HTTP persistent connections (default: %d) - RPC ondersteuning voor HTTP persisten verbindingen (default: %d) - - - Send trace/debug info to console instead of debug.log file - Stuur trace/debug-info naar de console in plaats van het debug.log bestand - - - Send transactions as zero-fee transactions if possible (default: %u) - Verstuur transacties zonder verzendkosten indien mogelijk (standaard: %u) - - - Set SSL root certificates for payment request (default: -system-) - Zet SSL root certificaten voor betalingsverzoek (standaard: -sytem-) - - - Set language, for example "de_DE" (default: system locale) - Stel taal in, bijvoorbeeld ''de_DE" (standaard: systeeminstellingen) - - - Show all debugging options (usage: --help -help-debug) - Toon alle foutopsporingsopties (gebruik: --help -help-debug) - - - Show splash screen on startup (default: 1) - Laat laadscherm zien bij het opstarten. (standaard: 1) - - - Shrink debug.log file on client startup (default: 1 when no -debug) - Verklein debug.log-bestand bij het opstarten van de client (standaard: 1 als geen -debug) - - - Signing transaction failed - Ondertekenen van transactie mislukt - - - Start minimized - Geminimaliseerd starten - - - The transaction amount is too small to pay the fee - Het transactiebedrag is te klein om de vergoeding te betalen - - - This is experimental software. - Dit is experimentele software. - - - Transaction amount too small - Transactiebedrag te klein - - - Transaction amounts must be positive - Transactiebedragen moeten positief zijn - - - Transaction too large for fee policy - De transactie is te groot voor het toeslagenbeleid - - - Transaction too large - Transactie te groot - - - UI Options: - UI Opties: - - - Unable to bind to %s on this computer (bind returned error %s) - Niet in staat om aan %s te binden op deze computer (bind gaf error %s) - - - Use UPnP to map the listening port (default: 1 when listening) - Gebruik UPnP om de luisterende poort te mappen (standaard: 1 als er wordt geluisterd) - - - Username for JSON-RPC connections - Gebruikersnaam voor JSON-RPC-verbindingen - - - Wallet needed to be rewritten: restart Bitcoin Core to complete - Portemonnee moest herschreven worden: Herstart Bitcoin Core om te voltooien - - - Warning - Waarschuwing - - - Warning: Unsupported argument -benchmark ignored, use -debug=bench. - Waarschuwing: Niet ondersteund argument -benchmark genegeerd, gebruik -debug=bench. - - - Warning: Unsupported argument -debugnet ignored, use -debug=net. - Waarschuwing: Niet ondersteund argument -debugnet genegeerd, gebruik -debug=net. - - - Zapping all transactions from wallet... - Bezig met het zappen van alle transacties van de portemonnee... - - - on startup - bij opstarten - - - wallet.dat corrupt, salvage failed - wallet.dat corrupt, veiligstellen mislukt - - - Password for JSON-RPC connections - Wachtwoord voor JSON-RPC-verbindingen - - - Execute command when the best block changes (%s in cmd is replaced by block hash) - Voer commando uit zodra het beste blok verandert (%s in cmd wordt vervangen door blockhash) - - - Upgrade wallet to latest format - Vernieuw portemonnee naar nieuwste versie - - - Rescan the block chain for missing wallet transactions - Doorzoek de blokketen op ontbrekende portemonnee-transacties - - - Use OpenSSL (https) for JSON-RPC connections - Gebruik OpenSSL (https) voor JSON-RPC-verbindingen - - - This help message - Dit helpbericht - - - Allow DNS lookups for -addnode, -seednode and -connect - Sta DNS-naslag toe voor -addnode, -seednode en -connect - - - Loading addresses... - Adressen aan het laden... - - - Error loading wallet.dat: Wallet corrupted - Fout bij laden wallet.dat: Portemonnee corrupt - - - (1 = keep tx meta data e.g. account owner and payment request information, 2 = drop tx meta data) - (1 = behoudt tx meta data bijv. account eigenaar en betalingsverzoek informatie, 2. sla tx meta data niet op) - - - How thorough the block verification of -checkblocks is (0-4, default: %u) - Hoe grondig de blokverificatie van -checkblocks is (0-4, standaard: %u) - - - Maintain a full transaction index, used by the getrawtransaction rpc call (default: %u) - Onderhoud een volledige transactieindex, gebruikt door de getrawtransaction rpc call (standaard: %u) - - - Number of seconds to keep misbehaving peers from reconnecting (default: %u) - Aantal seconden dat zich misdragende peers niet opnieuw kunnen verbinden (standaard: %u) - - - Output debugging information (default: %u, supplying <category> is optional) - Output extra debugginginformatie (standaard: %u, het leveren van <category> is optioneel) - - - Use separate SOCKS5 proxy to reach peers via Tor hidden services (default: %s) - Gebruik een aparte SOCKS5 proxy om 'Tor hidden services' te bereiken (standaard: %s) - - - Acceptable ciphers (default: %s) - Geaccepteerde versleutelingen (standaard: %s) - - - Always query for peer addresses via DNS lookup (default: %u) - Vind anderen door middel van een DNS-naslag (standaard: %u) - - - Error loading wallet.dat - Fout bij laden wallet.dat - - - Generate coins (default: %u) - Genereer munten (standaard: %u) - - - How many blocks to check at startup (default: %u, 0 = all) - Aantal te checken blokken bij het opstarten (standaard: %u, 0 = allemaal) - - - Include IP addresses in debug output (default: %u) - IP-adressen toevoegen in de debuguitvoer (standaard: %u) - - - Invalid -proxy address: '%s' - Ongeldig -proxy adres: '%s' - - - Listen for JSON-RPC connections on <port> (default: %u or testnet: %u) - Luister naar JSON-RPC-verbindingen op poort <port> (standaard: %u of testnet: %u) - - - Listen for connections on <port> (default: %u or testnet: %u) - Luister naar verbindingen op <poort> (standaard: %u of testnet: %u) - - - Maintain at most <n> connections to peers (default: %u) - Onderhoud maximaal <n> verbindingen naar peers (standaard: %u) - - - Make the wallet broadcast transactions - Laat de portemonnee transacties uitsturen - - - Maximum per-connection receive buffer, <n>*1000 bytes (default: %u) - Maximum per-connectie ontvangstbuffer, <n>*1000 bytes (standaard: %u) - - - Maximum per-connection send buffer, <n>*1000 bytes (default: %u) - Maximum per-connectie zendbuffer, <n>*1000 bytes (standaard: %u) - - - Prepend debug output with timestamp (default: %u) - Prepend debug output met tijdstempel (standaard: %u) - - - Relay and mine data carrier transactions (default: %u) - Gegevensdrager transacties relay en de mijnen (default: %u) - - - Relay non-P2SH multisig (default: %u) - Relay non-P2SH multisig (default: %u) - - - Server certificate file (default: %s) - Certificaat-bestand voor server (standaard: %s) - - - Server private key (default: %s) - Geheime sleutel voor server (standaard: %s) - - - Set key pool size to <n> (default: %u) - Stel sleutelpoelgrootte in op <&> (standaard: %u) - - - Set minimum block size in bytes (default: %u) - Stel minimum blokgrootte in in bytes (standaard: %u) - - - Set the number of threads to service RPC calls (default: %d) - Stel het aantal threads in om RPC-aanvragen mee te bedienen (standaard: %d) - - - Specify configuration file (default: %s) - Specificeer configuratie bestand (standaard: %s) - - - Specify connection timeout in milliseconds (minimum: 1, default: %d) - Specificeer de time-out tijd in milliseconden (minimum: 1, standaard: %d) - - - Specify pid file (default: %s) - Specificeer pid-bestand (standaard: %s) - - - Spend unconfirmed change when sending transactions (default: %u) - Besteed onbevestigd wisselgeld bij het versturen van transacties (standaard: %u) - - - Threshold for disconnecting misbehaving peers (default: %u) - Drempel om verbinding te verbreken naar zich misdragende peers (standaard: %u) - - - Unknown network specified in -onlynet: '%s' - Onbekend netwerk gespecificeerd in -onlynet: '%s' - - - Cannot resolve -bind address: '%s' - Kan -bind adres niet herleiden: '%s' - - - Cannot resolve -externalip address: '%s' - Kan -externlip adres niet herleiden: '%s' - - - Invalid amount for -paytxfee=<amount>: '%s' - Ongeldig bedrag voor -paytxfee=<bedrag>: '%s' - - - Insufficient funds - Ontoereikend saldo - - - Loading block index... - Blokindex aan het laden... - - - Add a node to connect to and attempt to keep the connection open - Voeg een node om naar te verbinden toe en probeer de verbinding open te houden - - - Loading wallet... - Portemonnee aan het laden... - - - Cannot downgrade wallet - Kan portemonnee niet downgraden - - - Cannot write default address - Kan standaardadres niet schrijven - - - Rescanning... - Blokketen aan het doorzoeken... - - - Done loading - Klaar met laden - - - Error - Fout - - - \ No newline at end of file diff --git a/src/qt/locale/bitcoin_pam.ts b/src/qt/locale/bitcoin_pam.ts deleted file mode 100644 index 4939dff4b..000000000 --- a/src/qt/locale/bitcoin_pam.ts +++ /dev/null @@ -1,1502 +0,0 @@ - - - AddressBookPage - - Right-click to edit address or label - I-right click ban alilan ing address o libel - - - Create a new address - Maglalang kang bayung address - - - &New - &Bayu - - - Copy the currently selected address to the system clipboard - Kopyan me ing salukuyan at makipiling address keng system clipboard - - - &Copy - &Kopyan - - - C&lose - I&sara - - - &Copy Address - &Kopyan ing address - - - Delete the currently selected address from the list - Ilako ya ing kasalungsungan makapiling address keng listahan - - - &Delete - &Ilako - - - Choose the address to send coins to - Pilinan ing address a magpadalang coins kang - - - Choose the address to receive coins with - Pilinan ing address a tumanggap coins a atin - - - C&hoose - P&ilinan - - - Sending addresses - Address king pamag-Send - - - Receiving addresses - Address king pamag-Tanggap - - - These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins. - Reni reng kekang Bitcoin address king pamagpadalang kabayaran. Lawan mulang masalese reng alaga ampo ing address na ning tumanggap bayu ka magpadalang barya. - - - These are your Bitcoin addresses for receiving payments. It is recommended to use a new receiving address for each transaction. - Reni reng kekang Bitcoin addresses keng pamananggap bayad. Rerekomenda mi na gumamit kang bayung address keng balang transaksiyon. - - - Copy &Label - Kopyan ing &Label - - - &Edit - &Alilan - - - Comma separated file (*.csv) - Comma separated file (*.csv) - - - - AddressTableModel - - Label - Label - - - Address - Address - - - (no label) - (alang label) - - - - AskPassphraseDialog - - Passphrase Dialog - Dialogo ning Passphrase - - - Enter passphrase - Mamalub kang passphrase - - - New passphrase - Panibayung passphrase - - - Repeat new passphrase - Pasibayuan ya ing bayung passphrase - - - Encrypt wallet - I-encrypt ye ing wallet - - - This operation needs your wallet passphrase to unlock the wallet. - Ing operasyun a ini kailangan ne ing kekayung wallet passphrase, ban a-unlock ya ing wallet - - - Unlock wallet - Unlock ya ing wallet - - - This operation needs your wallet passphrase to decrypt the wallet. - Ing operasyun a ini kailangan ne ing kekang wallet passphrase ban a-decrypt ne ing wallet. - - - Decrypt wallet - I-decrypt ya ing wallet - - - Change passphrase - Alilan ya ing passphrase - - - Confirm wallet encryption - Kumpirman ya ing wallet encryption - - - Warning: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR BITCOINS</b>! - Kapabaluan: Istung in-encrypt me ing kekang wallet at meala ya ing passphrase na, ma-<b>ALA NO NGAN RING KEKANG BITCOINS</b> - - - Are you sure you wish to encrypt your wallet? - Siguradu na kang buri meng i-encrypt ing kekang wallet? - - - 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. - Mayalaga: Reng milabas a backups a gewa mu gamit ing wallet file mu dapat lamung mialilan bayung gawang encrypted wallet file. Para keng seguridad , reng milabas a backups dareng ali maka encrypt a wallet file ma-ala nala istung inumpisan mu nalang gamitan reng bayu, at me encrypt a wallet. - - - Warning: The Caps Lock key is on! - Kapabaluan: Makabuklat ya ing Caps Lock key! - - - Wallet encrypted - Me-encrypt ne ing wallet - - - Wallet encryption failed - Memali ya ing pamag-encrypt king wallet - - - Wallet encryption failed due to an internal error. Your wallet was not encrypted. - Memali ya ing encryption uli na ning ausan dang internal error. E ya me-encrypt ing wallet yu. - - - The supplied passphrases do not match. - E la mitutugma ring mibieng passphrase - - - Wallet unlock failed - Memali ya ing pamag-unlock king wallet - - - The passphrase entered for the wallet decryption was incorrect. - E ya istu ing passphrase a pepalub da para king wallet decryption - - - Wallet decryption failed - Me-mali ya ing pamag-decrypt king wallet - - - Wallet passphrase was successfully changed. - Mi-alilan ne ing passphrase na ning wallet. - - - - BitcoinGUI - - Sign &message... - I-sign ing &mensayi - - - Synchronizing with network... - Mag-sychronize ne king network... - - - &Overview - &Overview - - - Show general overview of wallet - Ipakit ing kabuuang lawe ning wallet - - - &Transactions - &Transaksion - - - Browse transaction history - Lawan ing kasalesayan ning transaksion - - - E&xit - L&umwal - - - Quit application - Tuknangan ing aplikasyon - - - About &Qt - Tungkul &Qt - - - Show information about Qt - Magpakit impormasion tungkul king Qt - - - &Options... - &Pipamilian... - - - &Encrypt Wallet... - I-&Encrypt in Wallet... - - - &Backup Wallet... - I-&Backup ing Wallet... - - - &Change Passphrase... - &Alilan ing Passphrase... - - - Send coins to a Bitcoin address - Magpadalang barya king Bitcoin address - - - Backup wallet to another location - I-backup ing wallet king aliwang lugal - - - Change the passphrase used for wallet encryption - Alilan ya ing passphrase a gagamitan para king wallet encryption - - - &Debug window - I-&Debug ing awang - - - Open debugging and diagnostic console - Ibuklat ing debugging at diagnostic console - - - &Verify message... - &Beripikan ing message... - - - Bitcoin - Bitcoin - - - Wallet - Wallet - - - &Show / Hide - &Ipalto / Isalikut - - - Show or hide the main Window - Ipalto o isalikut ing pun a awang - - - &File - &File - - - &Settings - &Pamag-ayus - - - &Help - &Saup - - - Tabs toolbar - Gamit para king Tabs - - - Bitcoin Core - Kapilubluban ning Bitcoin - - - Last received block was generated %1 ago. - Ing tatauling block a metanggap, me-generate ya %1 ing milabas - - - Transactions after this will not yet be visible. - Ing transaksion kaibat na nini ali yapa magsilbing ipakit. - - - Error - Mali - - - Warning - Kapabaluan - - - Information - &Impormasion - - - Up to date - Makatuki ya king aldo - - - Catching up... - Catching up... - - - Sent transaction - Mipadalang transaksion - - - Incoming transaction - Paparatang a transaksion - - - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - Maka-<b>encrypt</b> ya ing wallet at kasalukuyan yang maka-<b>unlocked</b> - - - Wallet is <b>encrypted</b> and currently <b>locked</b> - Maka-<b>encrypt</b> ya ing wallet at kasalukuyan yang maka-<b>locked</b> - - - - ClientModel - - Network Alert - Alertu ning Network - - - - CoinControlDialog - - Amount - Alaga - - - Date - Kaaldauan - - - Confirmed - Me-kumpirma - - - Copy address - Kopyan ing address - - - Copy label - Kopyan ing label - - - Copy amount - Kopyan ing alaga - - - (no label) - (alang label) - - - - EditAddressDialog - - Edit Address - Alilan ing Address - - - &Label - &Label - - - &Address - &Address - - - New receiving address - Bayung address king pamagtanggap - - - New sending address - Bayung address king pamagpadala - - - Edit receiving address - Alilan ya ing address king pamagpadala - - - Edit sending address - Alilan ya ing address king pamagpadala - - - The entered address "%1" is already in the address book. - Ing pepalub yung address "%1" ati na yu king aklat dareng address - - - The entered address "%1" is not a valid Bitcoin address. - Ing pepalub yung address "%1" ali ya katanggap-tanggap a Bitcoin address. - - - Could not unlock wallet. - Ali ya bisang mag-unlock ing wallet - - - New key generation failed. - Memali ya ing pamangaua king key - - - - FreespaceChecker - - - HelpMessageDialog - - Bitcoin Core - Kapilubluban ning Bitcoin - - - version - bersion - - - Command-line options - Pipamilian command-line - - - Usage: - Pamanggamit: - - - command-line options - pipamilian command-line - - - - Intro - - Welcome - Malaus ka - - - Bitcoin Core - Kapilubluban ning Bitcoin - - - Error - Mali - - - - OpenURIDialog - - - OptionsDialog - - Options - Pipamilian - - - &Main - &Pun - - - &Network - &Network - - - Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled. - Ibuklat yang antimanu ing Bitcoin client port king router. Gagana yamu ini istung ing router mu susuporta yang UPnP at magsilbi ya. - - - Map port using &UPnP - Mapa ng ning port gamit ing &UPnP - - - Proxy &IP: - Proxy &IP: - - - &Port: - &Port: - - - Port of the proxy (e.g. 9050) - Port na ning proxy(e.g. 9050) - - - &Window - &Awang - - - Show only a tray icon after minimizing the window. - Ipakit mu ing tray icon kaibat meng pelatian ing awang. - - - &Minimize to the tray instead of the taskbar - &Latian ya ing tray kesa king taskbar - - - M&inimize on close - P&alatian istung isara - - - &Display - &Ipalto - - - User Interface &language: - Amanu na ning user interface: - - - &Unit to show amounts in: - Ing &Unit a ipakit king alaga ning: - - - Choose the default subdivision unit to show in the interface and when sending coins. - Pilinan ing default subdivision unit a ipalto o ipakit king interface at istung magpadala kang barya. - - - &OK - &OK - - - &Cancel - I-&Cancel - - - default - default - - - The supplied proxy address is invalid. - Ing milageng proxy address eya katanggap-tanggap. - - - - OverviewPage - - Form - Form - - - The displayed information may be out of date. Your wallet automatically synchronizes with the Bitcoin network after a connection is established, but this process has not completed yet. - Ing makaltong impormasion mapalyaring luma ne. Ing kekang wallet otomatiku yang mag-synchronize keng Bitcoin network istung mekakonekta ne king network, oneng ing prosesung ini ali ya pa kumpletu. - - - Your current spendable balance - Ing kekang kasalungsungan balanse a malyari mung gastusan - - - Total of transactions that have yet to be confirmed, and do not yet count toward the spendable balance - Ing kabuuan dareng transaksion a kasalungsungan ali pa me-kumpirma, at kasalungsungan ali pa mebilang kareng kekang balanseng malyari mung gastusan - - - Immature: - Immature: - - - Mined balance that has not yet matured - Reng me-minang balanse a epa meg-matured - - - Total: - Kabuuan: - - - Your current total balance - Ing kekang kasalungsungan kabuuang balanse - - - - PaymentServer - - - PeerTableModel - - - QObject - - Amount - Alaga - - - N/A - N/A - - - - QRImageWidget - - - RPCConsole - - Client name - Lagyu ning kliente - - - N/A - N/A - - - Client version - Bersion ning Cliente - - - &Information - &Impormasion - - - Using OpenSSL version - Gagamit bersion na ning OpenSSL - - - Startup time - Oras ning umpisa - - - Network - Network - - - Number of connections - Bilang dareng koneksion - - - Block chain - Block chain - - - Current number of blocks - Kasalungsungan bilang dareng blocks - - - Last block time - Tatauling oras na ning block - - - &Open - &Ibuklat - - - &Console - &Console - - - Totals - Kabuuan: - - - Build date - Kaaldauan ning pamaglalang - - - Debug log file - Debug log file - - - Clear console - I-Clear ing console - - - Use up and down arrows to navigate history, and <b>Ctrl-L</b> to clear screen. - Gamitan me ing patas at pababang arrow para alibut me ing kasalesayan, at <b>Ctrl-L</b> ban I-clear ya ing screen. - - - Type <b>help</b> for an overview of available commands. - I-type ing <b>help</b> ban akit la reng ati at magsilbing commands. - - - - ReceiveCoinsDialog - - &Label: - &Label: - - - Copy label - Kopyan ing label - - - Copy amount - Kopyan ing alaga - - - - ReceiveRequestDialog - - Address - Address - - - Amount - Alaga - - - Label - Label - - - Message - Mensayi - - - - RecentRequestsTableModel - - Date - Kaaldauan - - - Label - Label - - - Message - Mensayi - - - Amount - Alaga - - - (no label) - (alang label) - - - - SendCoinsDialog - - Send Coins - Magpadalang Barya - - - Send to multiple recipients at once - Misanang magpadala kareng alialiuang tumanggap - - - Add &Recipient - Maglage &Tumanggap - - - Clear &All - I-Clear &Eganagana - - - Balance: - Balanse: - - - Confirm the send action - Kumpirman ing aksion king pamagpadala - - - S&end - Ipadala - - - Confirm send coins - Kumpirman ing pamagpadalang barya - - - Copy amount - Kopyan ing alaga - - - The amount to pay must be larger than 0. - Ing alaga na ning bayaran dapat mung mas matas ya king 0. - - - The amount exceeds your balance. - Ing alaga mipasobra ya king kekang balanse. - - - The total exceeds your balance when the %1 transaction fee is included. - Ing kabuuan mipasobra ya king kekang balanse istung inabe ya ing %1 a bayad king transaksion - - - (no label) - (alang label) - - - - SendCoinsEntry - - A&mount: - A&laga: - - - Pay &To: - Ibayad &kang: - - - Enter a label for this address to add it to your address book - Magpalub kang label para king address a ini ban a-iabe me king aklat dareng address - - - &Label: - &Label: - - - Alt+A - Alt+A - - - Paste address from clipboard - Idikit ing address menibat king clipboard - - - Alt+P - Alt+P - - - - ShutdownWindow - - - SignVerifyMessageDialog - - Signatures - Sign / Verify a Message - Pirma - Pirman / I-beripika ing mensayi - - - &Sign Message - &Pirman ing Mensayi - - - Alt+A - Alt+A - - - Paste address from clipboard - Idikit ing address menibat king clipboard - - - Alt+P - Alt+P - - - Enter the message you want to sign here - Ipalub ing mensayi a buri mung pirman keni - - - Signature - Pirma - - - Copy the current signature to the system clipboard - Kopyan ing kasalungsungan pirma king system clipboard - - - Sign the message to prove you own this Bitcoin address - Pirman ing mensayi ban patune na keka ya ining Bitcoin address - - - Sign &Message - Pirman ing &Mensayi - - - Reset all sign message fields - Ibalik keng dati reng ngan fields keng pamamirmang mensayi - - - Clear &All - I-Clear &Eganagana - - - &Verify Message - &Beripikan ing Mensayi - - - Verify the message to ensure it was signed with the specified Bitcoin address - Beripikan ing mensayi ban asiguradu a me pirma ya ini gamit ing mepiling Bitcoin address - - - Verify &Message - Beripikan ing &Mensayi - - - Reset all verify message fields - Ibalik king dati reng ngan fields na ning pamag beripikang mensayi - - - Click "Sign Message" to generate signature - I-click ing "Pirman ing Mensayi" ban agawa ya ing metung a pirma - - - The entered address is invalid. - Ing milub a address e ya katanggap-tanggap. - - - Please check the address and try again. - Maliaring pakilawe pasibayu ing address at pasibayuan ya iti. - - - The entered address does not refer to a key. - Ing milub a address ali ya mag-refer king metung a key. - - - Wallet unlock was cancelled. - Me-kansela ya ing pamag-unlock king wallet. - - - Private key for the entered address is not available. - Ing private key para king milub a address, ala ya. - - - Message signing failed. - Me-mali ya ing pamag-pirma king mensayi . - - - Message signed. - Me-pirman ne ing mensayi. - - - The signature could not be decoded. - Ing pirma ali ya bisang ma-decode. - - - Please check the signature and try again. - Maliaring pakilawe pasibayu ing pirma kaibat pasibayuan ya iti. - - - The signature did not match the message digest. - Ing pirma ali ya makatugma king message digest. - - - Message verification failed. - Me-mali ya ing pamag-beripika king mensayi. - - - Message verified. - Me-beripika ne ing mensayi. - - - - SplashScreen - - Bitcoin Core - Kapilubluban ning Bitcoin - - - [testnet] - [testnet] - - - - TrafficGraphWidget - - - TransactionDesc - - Open until %1 - Makabuklat anggang %1 - - - %1/offline - %1/offline - - - %1/unconfirmed - %1/ali me-kumpirma - - - %1 confirmations - %1 kumpirmasion - - - Status - Kabilian - - - Date - Kaaldauan - - - Source - Pikuanan - - - Generated - Megawa - - - From - Menibat - - - To - Para kang - - - own address - sariling address - - - label - label - - - Credit - Credit - - - not accepted - ali metanggap - - - Debit - Debit - - - Transaction fee - Bayad king Transaksion - - - Net amount - Alaga dareng eganagana - - - Message - Mensayi - - - Comment - Komentu - - - Transaction ID - ID - - - Debug information - Impormasion ning Debug - - - Transaction - Transaksion - - - Amount - Alaga - - - true - tutu - - - false - e tutu - - - , has not been successfully broadcast yet - , eya matagumpeng mibalita - - - unknown - e miya balu - - - - TransactionDescDialog - - Transaction details - Detalye ning Transaksion - - - This pane shows a detailed description of the transaction - Ining pane a ini magpakit yang detalyadung description ning transaksion - - - - TransactionTableModel - - Date - Kaaldauan - - - Type - Klase - - - Open until %1 - Makabuklat anggang %1 - - - Confirmed (%1 confirmations) - Me-kumpirma(%1 kumpirmasion) - - - This block was not received by any other nodes and will probably not be accepted! - Ing block a ini ali de atanggap deng aliwa pang nodes ania ali ya magsilbing tanggapan - - - Generated but not accepted - Me-generate ya oneng ali ya metanggap - - - Label - Label - - - Received with - Atanggap kayabe ning - - - Received from - Atanggap menibat kang - - - Sent to - Mipadala kang - - - Payment to yourself - Kabayaran keka - - - Mined - Me-mina - - - (n/a) - (n/a) - - - Transaction status. Hover over this field to show number of confirmations. - Status ning Transaksion: Itapat me babo na ning field a ini ban ipakit dala reng bilang dareng me-kumpirma na - - - Date and time that the transaction was received. - Aldo at oras nung kapilan me tanggap ya ing transaksion - - - Type of transaction. - Klase ning transaksion - - - Amount removed from or added to balance. - Alagang milako o miragdag king balanse. - - - - TransactionView - - All - Eganagana - - - Today - Aldo iti - - - This week - Paruminggung iti - - - This month - Bulan a iti - - - Last month - Milabas a bulan - - - This year - Banuang iti - - - Range... - Angganan... - - - Received with - Atanggap kayabe ning - - - Sent to - Mipadala kang - - - To yourself - Keng sarili mu - - - Mined - Me-mina - - - Other - Aliwa - - - Enter address or label to search - Magpalub kang address o label para pantunan - - - Min amount - Pekaditak a alaga - - - Copy address - Kopyan ing address - - - Copy label - Kopyan ing label - - - Copy amount - Kopyan ing alaga - - - Edit label - Alilan ing label - - - Show transaction details - Ipakit ing detalye ning transaksion - - - Comma separated file (*.csv) - Comma separated file (*.csv) - - - Confirmed - Me-kumpirma - - - Date - Kaaldauan - - - Type - Klase - - - Label - Label - - - Address - Address - - - ID - ID - - - Range: - Angga: - - - to - para kang - - - - UnitDisplayStatusBarControl - - - WalletFrame - - - WalletModel - - Send Coins - Magpadalang Barya - - - - WalletView - - - bitcoin-core - - Options: - Pipamilian: - - - Specify data directory - Pilinan ing data directory - - - Connect to a node to retrieve peer addresses, and disconnect - Kumunekta king note ban ayakua mula reng peer address, at mako king panga konekta - - - Specify your own public address - Sabyan me ing kekang pampublikong address - - - Accept command line and JSON-RPC commands - Tumanggap command line at JSON-RPC commands - - - Run in the background as a daemon and accept commands - Gumana king gulut bilang daemon at tumanggap commands - - - Use the test network - Gamitan ing test network - - - Accept connections from outside (default: 1 if no -proxy or -connect) - Tumanggap koneksion menibat king kilwal (default: 1 if no -proxy or -connect) - - - Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. - Kapabaluan: Sobra ya katas ing makalage king -paytxfee. Ini ing maging bayad mu para king bayad na ning transaksion istung pepadala me ing transaksion a ini. - - - Block creation options: - Pipamilian king pamag-gawang block: - - - Connect only to the specified node(s) - Kumunekta mu king mepiling node(s) - - - Corrupted block database detected - Mekapansin lang me-corrupt a block database - - - Do you want to rebuild the block database now? - Buri meng buuan pasibayu ing block database ngene? - - - Error initializing block database - Kamalian king pamag-initialize king block na ning database - - - Error opening block database - Kamalian king pamag buklat king block database - - - Error: Disk space is low! - Kamalian: Mababa ne ing espasyu king disk! - - - Failed to listen on any port. Use -listen=0 if you want this. - Memali ya ing pamakiramdam kareng gang nanung port. Gamita me ini -listen=0 nung buri me ini. - - - Information - &Impormasion - - - Send trace/debug info to console instead of debug.log file - Magpadalang trace/debug info okeng console kesa keng debug.log file - - - Set language, for example "de_DE" (default: system locale) - Mamiling Amanu, alimbawa "de_DE"(default: system locale) - - - Show splash screen on startup (default: 1) - Ipalto ing splash screen keng umpisa (default: 1) - - - Start minimized - Umpisan ing pamaglati - - - Transaction too large - Maragul yang masiadu ing transaksion - - - Username for JSON-RPC connections - Username para king JSON-RPC koneksion - - - Warning - Kapabaluan - - - Password for JSON-RPC connections - Password para king JSON-RPC koneksion - - - Execute command when the best block changes (%s in cmd is replaced by block hash) - I-execute ing command istung mialilan ya ing best block (%s in cmd is replaced by block hash) - - - Upgrade wallet to latest format - I-upgrade ing wallet king pekabayung porma - - - Rescan the block chain for missing wallet transactions - I-scan pasibayu ing block chain para kareng mauaualang transaksion - - - Use OpenSSL (https) for JSON-RPC connections - Gumamit OpenSSL(https) para king JSON-RPC koneksion - - - This help message - Ining saup a mensayi - - - Allow DNS lookups for -addnode, -seednode and -connect - Payagan ing pamaglawe DNS para king -addnode, -seednode and -connect - - - Loading addresses... - Lo-load da ne ing address... - - - Error loading wallet.dat: Wallet corrupted - Me-mali ya ing pamag-load king wallet.dat: Me-corrupt ya ing wallet - - - Error loading wallet.dat - Me-mali ya ing pamag-load king wallet.dat - - - Invalid -proxy address: '%s' - Ali katanggap-tanggap a -proxy addresss: '%s' - - - Unknown network specified in -onlynet: '%s' - E kilalang network ing mepili king -onlynet: '%s' - - - Cannot resolve -bind address: '%s' - Eya me-resolve ing -bind address: '%s' - - - Cannot resolve -externalip address: '%s' - Eya me-resolve ing -externalip address: '%s' - - - Invalid amount for -paytxfee=<amount>: '%s' - Eya maliari ing alaga keng -paytxfee=<amount>: '%s' - - - Insufficient funds - Kulang a pondo - - - Loading block index... - Lo-load dane ing block index... - - - Add a node to connect to and attempt to keep the connection open - Magdagdag a node ban kumunekta at subuknan apanatili yang makabuklat ing koneksion - - - Loading wallet... - Lo-load dane ing wallet... - - - Cannot downgrade wallet - Ali ya magsilbing i-downgrade ing wallet - - - Cannot write default address - Eya misulat ing default address - - - Rescanning... - I-scan deng pasibayu... - - - Done loading - Yari ne ing pamag-load - - - Error - Mali - - - \ No newline at end of file diff --git a/src/qt/locale/bitcoin_pl.ts b/src/qt/locale/bitcoin_pl.ts deleted file mode 100644 index 8e4ee8496..000000000 --- a/src/qt/locale/bitcoin_pl.ts +++ /dev/null @@ -1,3564 +0,0 @@ - - - AddressBookPage - - Right-click to edit address or label - Kliknij prawy przycisk aby edytować adres lub etykietÄ™ - - - Create a new address - Utwórz nowy adres - - - &New - &Nowy - - - Copy the currently selected address to the system clipboard - Skopiuj aktualnie wybrany adres do schowka - - - &Copy - &Kopiuj - - - C&lose - Z&amknij - - - &Copy Address - &Kopiuj adres - - - Delete the currently selected address from the list - UsuÅ„ zaznaczony adres z listy - - - Export the data in the current tab to a file - Eksportuj dane z aktywnej karty do pliku - - - &Export - &Eksportuj - - - &Delete - &UsuÅ„ - - - Choose the address to send coins to - Wybierz adres, na który chcesz wysÅ‚ać monety - - - Choose the address to receive coins with - Wybierz adres, na który chcesz otrzymać monety - - - C&hoose - W&ybierz - - - Sending addresses - Adres wysyÅ‚ania - - - Receiving addresses - Adres odbiorczy - - - These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins. - Tutaj znajdujÄ… siÄ™ adresy Bitcoin na które wysyÅ‚asz pÅ‚atnoÅ›ci. Zawsze sprawdzaj ilość i adres odbiorcy przed wysyÅ‚kÄ… monet. - - - These are your Bitcoin addresses for receiving payments. It is recommended to use a new receiving address for each transaction. - To twoje adresy Bitcoin, na które otrzymujesz pÅ‚atnoÅ›ci. Zaleca siÄ™ używanie nowych adresów odbiorczych dla każdej transakcji. - - - Copy &Label - Kopiuj &EtykietÄ™ - - - &Edit - &Modyfikuj - - - Export Address List - Eksportuj listÄ™ adresowÄ… - - - Comma separated file (*.csv) - CSV (rozdzielany przecinkami) - - - Exporting Failed - Błąd przy próbie eksportu - - - There was an error trying to save the address list to %1. Please try again. - WystÄ…piÅ‚ błąd podczas próby zapisu listy adresów %1. ProszÄ™ spróbować ponownie. - - - - AddressTableModel - - Label - Etykieta - - - Address - Adres - - - (no label) - (brak etykiety) - - - - AskPassphraseDialog - - Passphrase Dialog - Okienko HasÅ‚a - - - Enter passphrase - Wpisz hasÅ‚o - - - New passphrase - Nowe hasÅ‚o - - - Repeat new passphrase - Powtórz nowe hasÅ‚o - - - Encrypt wallet - Zaszyfruj portfel - - - This operation needs your wallet passphrase to unlock the wallet. - Ta operacja wymaga hasÅ‚a do portfela ażeby odblokować portfel. - - - Unlock wallet - Odblokuj portfel - - - This operation needs your wallet passphrase to decrypt the wallet. - Ta operacja wymaga hasÅ‚a do portfela ażeby odszyfrować portfel. - - - Decrypt wallet - Odszyfruj portfel - - - Change passphrase - ZmieÅ„ hasÅ‚o - - - Confirm wallet encryption - Potwierdź szyfrowanie portfela - - - Warning: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR BITCOINS</b>! - Uwaga: JeÅ›li zaszyfrujesz swój portfel i zgubisz hasÅ‚o to <b>STRACISZ WSZYSTKIE SWOJE BITCOIN'Y</b>! - - - Are you sure you wish to encrypt your wallet? - JesteÅ› pewien, że chcesz zaszyfrować swój portfel? - - - Bitcoin Core 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. - Program Bitcoin Core zamknie siÄ™, aby dokoÅ„czyć proces szyfrowania. PamiÄ™taj, że szyfrowanie portfela nie zabezpiecza w peÅ‚ni Twoich bitcoinów przed kradzieżą przez wirusy lub trojany mogÄ…ce zainfekować Twój komputer. - - - 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. - WAÅ»NE: Wszystkie wykonane wczeÅ›niej kopie pliku portfela powinny być zamienione na nowe, szyfrowane pliki. Z powodów bezpieczeÅ„stwa, poprzednie kopie nieszyfrowanych plików portfela stanÄ… siÄ™ bezużyteczne jak tylko zaczniesz korzystać z nowego, szyfrowanego portfela. - - - Warning: The Caps Lock key is on! - Uwaga: Klawisz Caps Lock jest włączony! - - - Wallet encrypted - Portfel zaszyfrowany - - - 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>. - Wprowadź nowe hasÅ‚o do portfela.<br/>ProszÄ™ używać hasÅ‚a zÅ‚ożonego z <b>10 lub wiÄ™cej losowych znaków</b> lub <b>oÅ›miu lub wiÄ™cej słów.</b> - - - Enter the old passphrase and new passphrase to the wallet. - Podaj stare i nowe hasÅ‚o do portfela. - - - Wallet encryption failed - Szyfrowanie portfela nie powiodÅ‚o siÄ™ - - - Wallet encryption failed due to an internal error. Your wallet was not encrypted. - Szyfrowanie portfela nie powiodÅ‚o siÄ™ z powodu wewnÄ™trznego błędu. Twój portfel nie zostaÅ‚ zaszyfrowany. - - - The supplied passphrases do not match. - Podane hasÅ‚a nie sÄ… takie same. - - - Wallet unlock failed - Odblokowanie portfela nie powiodÅ‚o siÄ™ - - - The passphrase entered for the wallet decryption was incorrect. - Wprowadzone hasÅ‚o do odszyfrowania portfela jest niepoprawne. - - - Wallet decryption failed - Odszyfrowanie portfela nie powiodÅ‚o siÄ™ - - - Wallet passphrase was successfully changed. - HasÅ‚o portfela zostaÅ‚o pomyÅ›lnie zmienione. - - - - BitcoinGUI - - Sign &message... - Podpisz wiado&mość... - - - Synchronizing with network... - Synchronizacja z sieciÄ…... - - - &Overview - P&odsumowanie - - - Node - WÄ™zeÅ‚ - - - Show general overview of wallet - Pokazuje ogólny widok portfela - - - &Transactions - &Transakcje - - - Browse transaction history - PrzeglÄ…daj historiÄ™ transakcji - - - E&xit - &ZakoÅ„cz - - - Quit application - Zamknij program - - - About &Qt - O &Qt - - - Show information about Qt - Pokazuje informacje o Qt - - - &Options... - &Opcje... - - - &Encrypt Wallet... - Zaszyfruj Portf&el - - - &Backup Wallet... - Wykonaj kopiÄ™ zapasowÄ…... - - - &Change Passphrase... - &ZmieÅ„ hasÅ‚o... - - - &Sending addresses... - Adresy wysyÅ‚ania... - - - &Receiving addresses... - Adresy odbioru... - - - Open &URI... - Otwórz URI... - - - Bitcoin Core client - RdzeÅ„ klienta Bitcoin - - - Importing blocks from disk... - Importowanie bloków z dysku... - - - Reindexing blocks on disk... - Ponowne indeksowanie bloków na dysku... - - - Send coins to a Bitcoin address - WyÅ›lij monety na adres Bitcoin - - - Backup wallet to another location - Zapasowy portfel w innej lokalizacji - - - Change the passphrase used for wallet encryption - ZmieÅ„ hasÅ‚o użyte do szyfrowania portfela - - - &Debug window - &Okno debugowania - - - Open debugging and diagnostic console - Otwórz konsolÄ™ debugowania i diagnostyki - - - &Verify message... - &Zweryfikuj wiadomość... - - - Bitcoin - Bitcoin - - - Wallet - Portfel - - - &Send - WyÅ›lij - - - &Receive - Odbie&rz - - - Show information about Bitcoin Core - Pokaż informacje o Rdzeniu Bitcoin - - - &Show / Hide - &Pokaż / Ukryj - - - Show or hide the main Window - Pokazuje lub ukrywa główne okno - - - Encrypt the private keys that belong to your wallet - Szyfruj klucze prywatne, które sÄ… w Twoim portfelu - - - Sign messages with your Bitcoin addresses to prove you own them - Podpisz wiadomoÅ›ci swoim adresem aby udowodnić jego posiadanie - - - Verify messages to ensure they were signed with specified Bitcoin addresses - Zweryfikuj wiadomość, aby upewnić siÄ™, że zostaÅ‚a podpisana podanym adresem Bitcoin. - - - &File - &Plik - - - &Settings - P&referencje - - - &Help - Pomo&c - - - Tabs toolbar - Pasek zakÅ‚adek - - - Bitcoin Core - RdzeÅ„ Bitcoin - - - Request payments (generates QR codes and bitcoin: URIs) - Żądaj pÅ‚atnoÅ›ci (generuje kod QR oraz bitcoin URI) - - - &About Bitcoin Core - &O Bitcoin Core - - - Modify configuration options for Bitcoin Core - ZmieÅ„ opcje konfiguracji dla Bitcoin Core - - - Show the list of used sending addresses and labels - Pokaż listÄ™ adresów i etykiet użytych do wysyÅ‚ania - - - Show the list of used receiving addresses and labels - Pokaż listÄ™ adresów i etykiet użytych do odbierania - - - Open a bitcoin: URI or payment request - Otwórz URI bitcoin: lub żądanie zapÅ‚aty - - - &Command-line options - &Opcje linii komend - - - Show the Bitcoin Core help message to get a list with possible Bitcoin command-line options - Pokaż pomoc Rdzenia Bitcoin, aby zobaczyć listÄ™ wszystkich opcji linii poleceÅ„ - - - %n active connection(s) to Bitcoin network - %n aktywnych połączeÅ„ do sieci Bitcoin%n aktywnych połączeÅ„ do sieci Bitcoin%n aktywnych połączeÅ„ do sieci Bitcoin - - - No block source available... - Brak dostÄ™pnych źródeÅ‚ bloków... - - - Processed %n block(s) of transaction history. - Przetworzono %n bloków historii transakcji.Przetworzono %n bloków historii transakcji.Przetworzono %n bloków historii transakcji. - - - %n hour(s) - %n godzin%n godzin%n godzin - - - %n week(s) - %n tygodni%n tygodni%n tygodni - - - %1 and %2 - %1 i %2 - - - %n year(s) - %n lat%n lat%n lat - - - %1 behind - %1 wstecz - - - Last received block was generated %1 ago. - Ostatni otrzymany blok zostaÅ‚ wygenerowany %1 temu. - - - Transactions after this will not yet be visible. - Transakcje po tym momencie nie bÄ™dÄ… jeszcze widoczne. - - - Error - Błąd - - - Warning - Ostrzeżenie - - - Information - Informacja - - - Up to date - Aktualny - - - Catching up... - SynchronizujÄ™ siÄ™... - - - Date: %1 - - Data: %1 - - - - Amount: %1 - - Kwota: %1 - - - - Type: %1 - - Typ: %1 - - - - Label: %1 - - Etykieta: %1 - - - - Address: %1 - - Adres: %1 - - - - Sent transaction - Transakcja wysÅ‚ana - - - Incoming transaction - Transakcja przychodzÄ…ca - - - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - Portfel jest <b>zaszyfrowany</b> i obecnie <b>odblokowany</b> - - - Wallet is <b>encrypted</b> and currently <b>locked</b> - Portfel jest <b>zaszyfrowany</b> i obecnie <b>zablokowany</b> - - - - ClientModel - - Network Alert - Komunikat Sieci - - - - CoinControlDialog - - Coin Selection - Wybór monet - - - Quantity: - Ilość: - - - Bytes: - Bajtów: - - - Amount: - Kwota: - - - Priority: - Priorytet: - - - Fee: - OpÅ‚ata: - - - Dust: - PyÅ‚: - - - After Fee: - Po opÅ‚acie: - - - Change: - Reszta: - - - (un)select all - Zaznacz/Odznacz wszystko - - - Tree mode - Widok drzewa - - - List mode - Widok listy - - - Amount - Kwota - - - Received with label - Otrzymano z opisem - - - Received with address - Otrzymano z adresem - - - Date - Data - - - Confirmations - Potwierdzenia - - - Confirmed - Potwierdzony - - - Priority - Priorytet - - - Copy address - Kopiuj adres - - - Copy label - Kopiuj etykietÄ™ - - - Copy amount - Kopiuj kwotÄ™ - - - Copy transaction ID - Skopiuj ID transakcji - - - Lock unspent - Zablokuj niewydane - - - Unlock unspent - Odblokuj niewydane - - - Copy quantity - Skopiuj ilość - - - Copy fee - Skopiuj opÅ‚atÄ™ - - - Copy after fee - Skopiuj ilość po opÅ‚acie - - - Copy bytes - Skopiuj ilość bajtów - - - Copy priority - Skopiuj priorytet - - - Copy dust - Kopiuj kurz - - - Copy change - Skopiuj resztÄ™ - - - highest - najwyższa - - - higher - wyższa - - - high - wysoka - - - medium-high - Å›rednio wysoki - - - medium - Å›rednia - - - low-medium - Å›rednio niski - - - low - niski - - - lower - niższy - - - lowest - najniższy - - - (%1 locked) - (%1 zablokowane) - - - none - żaden - - - This label turns red if the transaction size is greater than 1000 bytes. - Ta etykieta staje siÄ™ czerwona, kiedy transakcja jest wiÄ™ksza niż 1000 bajtów. - - - This label turns red if the priority is smaller than "medium". - Ta etykieta jest czerwona, jeżeli priorytet jest mniejszy niż "Å›redni" - - - This label turns red if any recipient receives an amount smaller than %1. - Etykieta staje siÄ™ czerwona kiedy którykolwiek odbiorca otrzymuje kwotÄ™ mniejszÄ… niż %1. - - - Can vary +/- %1 satoshi(s) per input. - Waha siÄ™ +/- %1 satoshi na wejÅ›cie. - - - yes - tak - - - no - nie - - - This means a fee of at least %1 per kB is required. - Oznacza to wymaganÄ… opÅ‚atÄ™ minimum %1 na kB. - - - Can vary +/- 1 byte per input. - Waha siÄ™ +/- 1 bajt na wejÅ›cie. - - - Transactions with higher priority are more likely to get included into a block. - Transakcje o wyższym priorytecie zwykle szybciej zostajÄ… dołączone do bloku. - - - (no label) - (brak etykiety) - - - change from %1 (%2) - reszta z %1 (%2) - - - (change) - (reszta) - - - - EditAddressDialog - - Edit Address - ZmieÅ„ adres - - - &Label - &Etykieta - - - The label associated with this address list entry - Etykieta skojarzona z tym wpisem na liÅ›cie adresów - - - The address associated with this address list entry. This can only be modified for sending addresses. - Ten adres jest skojarzony z wpisem na liÅ›cie adresów. Może być zmodyfikowany jedynie dla adresów wysyÅ‚ajÄ…cych. - - - &Address - &Adres - - - New receiving address - Nowy adres otrzymywania - - - New sending address - Nowy adres wysyÅ‚ania - - - Edit receiving address - ZmieÅ„ adres odbioru - - - Edit sending address - ZmieÅ„ adres wysyÅ‚ania - - - The entered address "%1" is already in the address book. - Wprowadzony adres "%1" już istnieje w książce adresowej. - - - The entered address "%1" is not a valid Bitcoin address. - Wprowadzony adres "%1" nie jest poprawnym adresem Bitcoin. - - - Could not unlock wallet. - Nie można byÅ‚o odblokować portfela. - - - New key generation failed. - Tworzenie nowego klucza nie powiodÅ‚o siÄ™. - - - - FreespaceChecker - - A new data directory will be created. - BÄ™dzie utworzony nowy folder danych. - - - name - nazwa - - - Directory already exists. Add %1 if you intend to create a new directory here. - Katalog już istnieje. Dodaj %1 jeÅ›li masz zamiar utworzyć tutaj nowy katalog. - - - Path already exists, and is not a directory. - Åšcieżka już istnieje i nie jest katalogiem. - - - Cannot create data directory here. - Nie można byÅ‚o tutaj utworzyć folderu. - - - - HelpMessageDialog - - Bitcoin Core - RdzeÅ„ Bitcoin - - - version - wersja - - - (%1-bit) - (%1-bit) - - - About Bitcoin Core - O Bitcoin Core - - - Command-line options - Opcje konsoli - - - Usage: - Użycie: - - - command-line options - opcje konsoli - - - - Intro - - Welcome - Witaj - - - Welcome to Bitcoin Core. - Witam w Bitcoin Core - - - As this is the first time the program is launched, you can choose where Bitcoin Core will store its data. - Ponieważ jest to pierwsze uruchomienie programu, możesz wybrać gdzie Bitcoin Core bÄ™dzie przechowywaÅ‚ swoje dane. - - - Bitcoin Core will download and store a copy of the Bitcoin block chain. At least %1GB of data will be stored in this directory, and it will grow over time. The wallet will also be stored in this directory. - Program pobierze i bÄ™dzie przechowywaÅ‚ kopiÄ™ Å‚aÅ„cucha bloków Bitcoin. W wybranym katalogu musi być przynajmniej %1GB miejsca, a z czasem ilość danych bÄ™dzie rosÅ‚a. Portfel bÄ™dzie przechowywany w tym samym katalogu. - - - Use the default data directory - Użyj domyÅ›lnego folderu danych - - - Use a custom data directory: - Użyj wybranego folderu dla danych - - - Bitcoin Core - RdzeÅ„ Bitcoin - - - Error: Specified data directory "%1" cannot be created. - Błąd: OkreÅ›lony folder danych "%1" nie mógÅ‚ zostać utworzony. - - - Error - Błąd - - - %n GB of free space available - %n GB dostÄ™pnego wolnego miejsca%n GB dostÄ™pnego wolnego miejsca%n GB dostÄ™pnego wolnego miejsca - - - (of %n GB needed) - (z %n GB potrzebnych)(z %n GB potrzebnych)(z %n GB potrzebnych) - - - - OpenURIDialog - - Open URI - Otwórz URI - - - Open payment request from URI or file - Otwórz żądanie zapÅ‚aty z URI lub pliku - - - URI: - URI: - - - Select payment request file - Otwórz żądanie zapÅ‚aty z pliku - - - Select payment request file to open - Wybierz plik żądania zapÅ‚aty do otwarcia - - - - OptionsDialog - - Options - Opcje - - - &Main - Główne - - - Size of &database cache - Wielkość bufora bazy &danych - - - MB - MB - - - Number of script &verification threads - Liczba wÄ…tków &weryfikacji skryptu - - - Accept connections from outside - Akceptuj połączenia z zewnÄ…trz - - - Allow incoming connections - Zezwól na połączenia przychodzÄ…ce - - - IP address of the proxy (e.g. IPv4: 127.0.0.1 / IPv6: ::1) - Adres IP serwera proxy (np. IPv4: 127.0.0.1 / IPv6: ::1) - - - Minimize instead of exit the application when the window is closed. When this option is enabled, the application will be closed only after selecting Exit in the menu. - Minimalizuje zamiast zakoÅ„czyć dziaÅ‚anie programu przy zamykaniu okna. Kiedy ta opcja jest włączona, program zakoÅ„czy dziaÅ‚anie po wybieraniu Zamknij w menu. - - - The user interface language can be set here. This setting will take effect after restarting Bitcoin Core. - Można tu ustawić jÄ™zyk interfejsu uzytkownika. Å»eby ustawienie przyniosÅ‚o skutek trzeba uruchomić ponownie Bitcoin. - - - 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 |. - ZewnÄ™trzne URL podglÄ…du transakcji (np. eksplorator bloków), które bÄ™dÄ… wyÅ›wietlaÅ‚y siÄ™ w menu kontekstowym, w zakÅ‚adce transakcji. %s bÄ™dzie zamieniany w adresie na hash transakcji. Oddziel wiele adresów pionowÄ… kreskÄ… |. - - - Third party transaction URLs - ZewnÄ™trzny URL podglÄ…du transakcji - - - Active command-line options that override above options: - Aktywne opcje linii komend, które nadpisujÄ… powyższe opcje: - - - Reset all client options to default. - Przywróć wszystkie domyÅ›lne ustawienia klienta. - - - &Reset Options - Z&resetuj Ustawienia - - - &Network - &Sieć - - - Automatically start Bitcoin Core after logging in to the system. - Automatycznie uruchamia Bitcoin po zalogowaniu do systemu. - - - &Start Bitcoin Core on system login - Uruchamiaj Bitcoin wraz z zalogowaniem do &systemu - - - (0 = auto, <0 = leave that many cores free) - (0 = automatycznie, <0 = zostaw tyle wolnych rdzeni) - - - W&allet - Portfel - - - Expert - Ekspert - - - Enable coin &control features - Włącz funk&cje kontoli monet - - - 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. - Jeżeli wyłączysz możliwość wydania niezatwierdzonej wydanej reszty, reszta z transakcji nie bÄ™dzie mogÅ‚a zostać wykorzystana, dopóki ta transakcja nie bÄ™dzie miaÅ‚a przynajmniej jednego potwierdzenia. To także ma wpÅ‚yw na obliczanie Twojego salda. - - - &Spend unconfirmed change - Wydaj niepotwierdzonÄ… re&sztÄ™ - - - Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled. - Automatycznie otwiera port klienta Bitcoin na routerze. Ta opcja dzieÅ‚a tylko jeÅ›li twój router wspiera UPnP i jest ono włączone. - - - Map port using &UPnP - Mapuj port używajÄ…c &UPnP - - - Connect to the Bitcoin network through a SOCKS5 proxy. - Połącz siÄ™ z sieciÄ… Bitcoin poprzez proxy SOCKS5. - - - &Connect through SOCKS5 proxy (default proxy): - Połącz przez proxy SO&CKS5 (domyÅ›lne proxy): - - - Proxy &IP: - Proxy &IP: - - - &Port: - &Port: - - - Port of the proxy (e.g. 9050) - Port proxy (np. 9050) - - - &Window - &Okno - - - Show only a tray icon after minimizing the window. - Pokazuj tylko ikonÄ™ przy zegarku po zminimalizowaniu okna. - - - &Minimize to the tray instead of the taskbar - &Minimalizuj do paska przy zegarku zamiast do paska zadaÅ„ - - - M&inimize on close - M&inimalizuj przy zamkniÄ™ciu - - - &Display - &WyÅ›wietlanie - - - User Interface &language: - JÄ™zyk &Użytkownika: - - - &Unit to show amounts in: - &Jednostka pokazywana przy kwocie: - - - Choose the default subdivision unit to show in the interface and when sending coins. - Wybierz podziaÅ‚ jednostki pokazywany w interfejsie oraz podczas wysyÅ‚ania monet - - - Whether to show coin control features or not. - Wybierz pokazywanie lub nie funkcji kontroli monet. - - - &OK - &OK - - - &Cancel - &Anuluj - - - default - domyÅ›lny - - - none - żaden - - - Confirm options reset - Potwierdź reset ustawieÅ„ - - - Client restart required to activate changes. - Wymagany restart programu, aby uaktywnić zmiany. - - - Client will be shut down. Do you want to proceed? - Program zostanie wyłączony. Czy chcesz kontynuować? - - - This change would require a client restart. - Ta zmiana może wymagać ponownego uruchomienia klienta. - - - The supplied proxy address is invalid. - Adres podanego proxy jest nieprawidÅ‚owy - - - - OverviewPage - - Form - Formularz - - - The displayed information may be out of date. Your wallet automatically synchronizes with the Bitcoin network after a connection is established, but this process has not completed yet. - WyÅ›wietlana informacja może być nieaktualna. Twój portfel synchronizuje siÄ™ automatycznie z sieciÄ… bitcoin, zaraz po tym jak uzyskano połączenie, ale proces ten nie zostaÅ‚ jeszcze ukoÅ„czony. - - - Watch-only: - Tylko podglÄ…daj: - - - Available: - DostÄ™pne: - - - Your current spendable balance - Twoje obecne saldo - - - Pending: - W toku: - - - Total of transactions that have yet to be confirmed, and do not yet count toward the spendable balance - Suma transakcji, które nie zostaÅ‚y jeszcze potwierdzone, a które nie zostaÅ‚y wliczone do twojego obecnego salda - - - Immature: - NiedojrzaÅ‚y: - - - Mined balance that has not yet matured - Balans wydobytych monet, które jeszcze nie dojrzaÅ‚y - - - Balances - Salda - - - Total: - Wynosi ogółem: - - - Your current total balance - Twoje obecne saldo - - - Your current balance in watch-only addresses - Twoje obecne saldo na podglÄ…danym adresie - - - Spendable: - Możliwe do wydania: - - - Recent transactions - Ostatnie transakcje - - - Unconfirmed transactions to watch-only addresses - Niepotwierdzone transakcje na podglÄ…danych adresach - - - Mined balance in watch-only addresses that has not yet matured - Wykopane monety na podglÄ…danych adresach które jeszcze nie dojrzaÅ‚y - - - Current total balance in watch-only addresses - ÅÄ…czna kwota na podglÄ…danych adresach - - - - PaymentServer - - URI handling - ObsÅ‚uga URI - - - Invalid payment address %1 - błędny adres pÅ‚atnoÅ›ci %1 - - - Payment request rejected - Żądanie pÅ‚atnoÅ›ci odrzucone - - - Payment request network doesn't match client network. - Sieć żądania pÅ‚atnoÅ›ci nie odpowiada sieci klienta. - - - Payment request is not initialized. - Żądanie pÅ‚atnoÅ›ci nie jest zainicjowane. - - - Requested payment amount of %1 is too small (considered dust). - Żądana kwota %1 jest za niska (uznano za kurz). - - - Payment request error - Błąd żądania pÅ‚atnoÅ›ci - - - Cannot start bitcoin: click-to-pay handler - Nie można uruchomić protokoÅ‚u bitcoin: kliknij-by-zapÅ‚acić - - - Payment request fetch URL is invalid: %1 - URL pobrania żądania zapÅ‚aty jest nieprawidÅ‚owe: %1 - - - URI cannot be parsed! This can be caused by an invalid Bitcoin address or malformed URI parameters. - URI nie może zostać przetworzony! Może to być spowodowane nieprawidÅ‚owym adresem Bitcoin lub uszkodzonymi parametrami URI. - - - Payment request file handling - Przechwytywanie plików żądania pÅ‚atnoÅ›ci - - - Payment request file cannot be read! This can be caused by an invalid payment request file. - Plików żądania pÅ‚atnoÅ›ci nie może zostać odczytany. MogÅ‚o to być spowodowane nieprawidÅ‚owym plikiem żądania pÅ‚atnoÅ›ci. - - - Payment request expired. - Żądanie pÅ‚atnoÅ›ci upÅ‚ynęło. - - - Unverified payment requests to custom payment scripts are unsupported. - Niezweryfikowane żądania pÅ‚atnoÅ›ci do wÅ‚asnych skryptów pÅ‚atnoÅ›ci sÄ… niewspierane. - - - Invalid payment request. - NieprawidÅ‚owe żądanie pÅ‚atnoÅ›ci - - - Refund from %1 - Zwrot z %1 - - - Payment request %1 is too large (%2 bytes, allowed %3 bytes). - Żądanie pÅ‚atnoÅ›ci %1 jest zbyt duże (%2 bajtów, dozwolone %3 bajtów). - - - Payment request DoS protection - Zabezpieczenie żądania pÅ‚atnoÅ›ci przed atakiem DoS - - - Error communicating with %1: %2 - Błąd komunikacji z %1 : %2 - - - Payment request cannot be parsed! - Żądanie pÅ‚atnoÅ›ci nie może zostać przetworzone. - - - Bad response from server %1 - Błędna odpowiedź z serwera %1 - - - Payment acknowledged - PÅ‚atność potwierdzona - - - Network request error - Błąd żądania sieci - - - - PeerTableModel - - User Agent - Aplikacja kliencka - - - Node/Service - WÄ™zeÅ‚/UsÅ‚ugi - - - Ping Time - Czas odpowiedzi - - - - QObject - - Amount - Kwota - - - Enter a Bitcoin address (e.g. %1) - Wprowadź adres Bitcoin (np. %1) - - - %1 d - %1 d - - - %1 h - %1 h - - - %1 m - %1 m - - - %1 s - %1 s - - - None - Å»aden - - - N/A - NIEDOSTĘPNE - - - %1 ms - %1 ms - - - - QRImageWidget - - &Save Image... - &Zapisz obraz... - - - &Copy Image - &Kopiuj obraz - - - Save QR Code - Zapisz Kod QR - - - PNG Image (*.png) - Obraz PNG (*.png) - - - - RPCConsole - - Client name - Nazwa klienta - - - N/A - NIEDOSTĘPNE - - - Client version - Wersja klienta - - - &Information - &Informacje - - - Debug window - Okno debugowania - - - General - Ogólne - - - Using OpenSSL version - Używana wersja OpenSSL - - - Using BerkeleyDB version - Używana wersja BerkeleyDB - - - Startup time - Czas uruchomienia - - - Network - Sieć - - - Name - Nazwa - - - Number of connections - Liczba połączeÅ„ - - - Block chain - ÅaÅ„cuch bloków - - - Current number of blocks - Aktualna liczba bloków - - - Open the Bitcoin Core debug log file from the current data directory. This can take a few seconds for large log files. - Otwórz plik logowania debugowania Bitcoin Core z obecnego katalogu z danymi. Może to potrwać kilka sekund przy wiÄ™kszych plikach. - - - Received - Otrzymane - - - Sent - WysÅ‚ane - - - &Peers - &WÄ™zÅ‚y - - - Select a peer to view detailed information. - Wybierz wÄ™zeÅ‚ żeby zobaczyć szczegóły. - - - Direction - Kierunek - - - Version - Wersja - - - User Agent - Aplikacja kliencka - - - Services - UsÅ‚ugi - - - Starting Height - PoczÄ…tkowa wysokość - - - Sync Height - Zsynchronizowana wysokość - - - Ban Score - Punkty karne - - - Connection Time - Czas połączenia - - - Last Send - Ostatnio wysÅ‚ano - - - Last Receive - Ostatnio odebrano - - - Bytes Sent - Bajtów wysÅ‚ano - - - Bytes Received - Bajtów pobrano - - - Ping Time - Czas odpowiedzi - - - Time Offset - PrzesuniÄ™cie czasu - - - Last block time - Czas ostatniego bloku - - - &Open - &Otwórz - - - &Console - &Konsola - - - &Network Traffic - $Ruch sieci - - - &Clear - &Wyczyść - - - Totals - Kwota ogólna - - - In: - WejÅ›cie: - - - Out: - WyjÅ›cie: - - - Build date - Data kompilacji - - - Debug log file - Plik logowania debugowania - - - Clear console - Wyczyść konsolÄ™ - - - Welcome to the Bitcoin Core RPC console. - Witaj w konsoli Bitcoin Core RPC. - - - Use up and down arrows to navigate history, and <b>Ctrl-L</b> to clear screen. - Użyj strzaÅ‚ek do przewijania historii i <b>Ctrl-L</b> aby wyczyÅ›cić ekran - - - Type <b>help</b> for an overview of available commands. - Wpisz <b>help</b> aby uzyskać listÄ™ dostÄ™pnych komend - - - %1 B - %1 B - - - %1 KB - %1 KB - - - %1 MB - %1 MB - - - %1 GB - %1 GB - - - via %1 - przez %1 - - - never - nigdy - - - Inbound - WejÅ›ciowy - - - Outbound - WyjÅ›ciowy - - - Unknown - Nieznany - - - Fetching... - Pobieram... - - - - ReceiveCoinsDialog - - &Amount: - &Ilość: - - - &Label: - &Etykieta: - - - &Message: - &Wiadomość: - - - Reuse one of the previously used receiving addresses. Reusing addresses has security and privacy issues. Do not use this unless re-generating a payment request made before. - Użyj jednego z poprzednio użytych adresów odbiorczych. Podczas ponownego używania adresów wystÄ™pujÄ… problemy z bezpieczeÅ„stwem i prywatnoÅ›ciÄ…. Nie korzystaj z tej opcji, chyba że odtwarzasz żądanie pÅ‚atnoÅ›ci wykonane już wczeÅ›niej. - - - An optional message to attach to the payment request, which will be displayed when the request is opened. Note: The message will not be sent with the payment over the Bitcoin network. - Opcjonalna wiadomość do dołączenia do żądania pÅ‚atnoÅ›ci, która bÄ™dzie wyÅ›wietlana, gdy żądanie zostanie otwarte. Uwaga: wiadomość ta nie zostanie wysÅ‚ana wraz z pÅ‚atnoÅ›ciÄ… w sieci Bitcoin. - - - An optional label to associate with the new receiving address. - Opcjonalna etykieta do skojarzenia z nowym adresem odbiorczym. - - - Use this form to request payments. All fields are <b>optional</b>. - Użyj tego formularza do zażądania pÅ‚atnoÅ›ci. Wszystkie pola sÄ… <b>opcjonalne</b>. - - - An optional amount to request. Leave this empty or zero to not request a specific amount. - Opcjonalna kwota by zażądać. Zostaw puste lub zero by nie zażądać konkretnej kwoty. - - - Clear all fields of the form. - Wyczyść wszystkie pola formularza. - - - Clear - Wyczyść - - - Requested payments history - Żądanie historii pÅ‚atnoÅ›ci - - - &Request payment - &Żądaj pÅ‚atnoÅ›ci - - - Show the selected request (does the same as double clicking an entry) - Pokaż wybrane żądanie (robi to samo co dwukrotne klikniÄ™cie pozycji) - - - Show - Pokaż - - - Remove the selected entries from the list - UsuÅ„ zaznaczone z listy - - - Remove - UsuÅ„ - - - Copy label - Kopiuj etykietÄ™ - - - Copy message - Kopiuj wiadomość - - - Copy amount - Kopiuj kwotÄ™ - - - - ReceiveRequestDialog - - QR Code - Kod QR - - - Copy &URI - Kopiuj &URI - - - Copy &Address - Kopiuj &adres - - - &Save Image... - &Zapisz obraz... - - - Request payment to %1 - Zażądaj pÅ‚atnoÅ›ci do %1 - - - Payment information - Informacje o pÅ‚atnoÅ›ci - - - URI - URI - - - Address - Adres - - - Amount - Kwota - - - Label - Etykieta - - - Message - Wiadomość - - - Resulting URI too long, try to reduce the text for label / message. - Wynikowy URI jest zbyt dÅ‚ugi, spróbuj zmniejszyć tekst etykiety / wiadomoÅ›ci - - - Error encoding URI into QR Code. - Błąd kodowania URI w Kodzie QR. - - - - RecentRequestsTableModel - - Date - Data - - - Label - Etykieta - - - Message - Wiadomość - - - Amount - Kwota - - - (no label) - (brak etykiety) - - - (no message) - (brak wiadomoÅ›ci) - - - (no amount) - (brak kwoty) - - - - SendCoinsDialog - - Send Coins - WyÅ›lij monety - - - Coin Control Features - Funkcje kontroli monet - - - Inputs... - WejÅ›cia... - - - automatically selected - zaznaczone automatycznie - - - Insufficient funds! - NiewystarczajÄ…ce Å›rodki! - - - Quantity: - Ilość: - - - Bytes: - Bajtów: - - - Amount: - Kwota: - - - Priority: - Priorytet: - - - Fee: - OpÅ‚ata: - - - After Fee: - Po opÅ‚acie: - - - Change: - Reszta: - - - If this is activated, but the change address is empty or invalid, change will be sent to a newly generated address. - Kiedy ta opcja jest wybrana, to jeżeli adres reszty jest pusty lub nieprawidÅ‚owy, to reszta bÄ™dzie wysyÅ‚ana na nowo wygenerowany adres, - - - Custom change address - Niestandardowe zmiany adresu - - - Transaction Fee: - OpÅ‚ata transakcyjna: - - - Choose... - Wybierz... - - - collapse fee-settings - zwiÅ„ opcje opÅ‚aty - - - per kilobyte - za kilobajt - - - 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. - Jeżeli wÅ‚asna opÅ‚ata zostanie ustawiona na 1000 satoshi, a transakcja bÄ™dzie miaÅ‚a tylko 250 bajtów, to "za kilobajt" pÅ‚aci tylko 250 satoshi, podczas gdy, "razem przynajmniej" pÅ‚aci 1000 satoshi. Przy transakcjach wiÄ™kszych niż kilobajt, w obu przypadkach pÅ‚aci za każdy kilobajt. - - - Hide - Ukryj - - - total at least - razem przynajmniej - - - 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. - ZapÅ‚acenie tylko minimalnej opÅ‚aty jest nadal wystarczajÄ…ce, dopóki jest mniejszy wolumen transakcji niż miejsca w blokach. Należy jednak mieć Å›wiadomość, że może skoÅ„czyć siÄ™ to niezatwierdzeniem nigdy transakcji, gdy jest wiÄ™ksze zapotrzebowanie na transakcje bitcoina niż sieć może przetworzyć. - - - (read the tooltip) - (przeczytaj podpowiedź) - - - Recommended: - Zalecane: - - - Custom: - WÅ‚asna: - - - (Smart fee not initialized yet. This usually takes a few blocks...) - (Sprytne opÅ‚aty nie sÄ… jeszcze zainicjowane. Trwa to zwykle kilka bloków...) - - - Confirmation time: - Czas potwierdzenia: - - - normal - normalnie - - - fast - szybko - - - Send as zero-fee transaction if possible - WyÅ›lij bez opÅ‚aty jeżeli to możliwe - - - (confirmation may take longer) - (potwierdzenie może potrwać dÅ‚użej) - - - Send to multiple recipients at once - WyÅ›lij do wielu odbiorców na raz - - - Add &Recipient - Dodaj Odbio&rcÄ™ - - - Clear all fields of the form. - Wyczyść wszystkie pola formularza. - - - Dust: - PyÅ‚: - - - Clear &All - Wyczyść &wszystko - - - Balance: - Saldo: - - - Confirm the send action - Potwierdź akcjÄ™ wysyÅ‚ania - - - S&end - Wy&syÅ‚ka - - - Confirm send coins - Potwierdź wysyÅ‚anie monet - - - %1 to %2 - %1 do %2 - - - Copy quantity - Skopiuj ilość - - - Copy amount - Kopiuj kwotÄ™ - - - Copy fee - Skopiuj opÅ‚atÄ™ - - - Copy after fee - Skopiuj ilość po opÅ‚acie - - - Copy bytes - Skopiuj ilość bajtów - - - Copy priority - Skopiuj priorytet - - - Copy change - Skopiuj resztÄ™ - - - or - lub - - - The amount to pay must be larger than 0. - Kwota do zapÅ‚acenia musi być wiÄ™ksza od 0. - - - The amount exceeds your balance. - Kwota przekracza twoje saldo. - - - The total exceeds your balance when the %1 transaction fee is included. - Suma przekracza twoje saldo, gdy doliczymy %1 prowizji transakcyjnej. - - - Transaction creation failed! - Utworzenie transakcji nie powiodÅ‚o siÄ™! - - - 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. - Transakcja zostaÅ‚a odrzucona! Może siÄ™ to zdarzyć jeÅ›li część monet z portfela zostaÅ‚a już wydana używajÄ…c kopii pliku wallet.dat i nie zostaÅ‚o to tutaj uwzglÄ™dnione. - - - A fee higher than %1 is considered an absurdly high fee. - OpÅ‚ata wyższa niż %1 jest uważana za szalenie wysokÄ…. - - - Payment request expired. - Żądanie pÅ‚atnoÅ›ci upÅ‚ynęło. - - - Estimated to begin confirmation within %n block(s). - Przybliżony czas zatwierdzenia: %n bloków.Przybliżony czas zatwierdzenia: %n bloków.Przybliżony czas zatwierdzenia: %n bloków. - - - Pay only the minimum fee of %1 - PÅ‚ac tylko minimalna opÅ‚atÄ™ %1 - - - Total Amount %1<span style='font-size:10pt;font-weight:normal;'><br />(=%2)</span> - CaÅ‚kowita kwota %1<span style='font-size:10pt;font-weight:normal;'><br />(=%2)</span> - - - The recipient address is not valid. Please recheck. - Adres odbiorcy jest nieprawidÅ‚owy, proszÄ™ sprawić ponownie. - - - Duplicate address found: addresses should only be used once each. - Znaleziono powtórzony adres, można wysÅ‚ać tylko raz na każdy adres podczas jednej operacji wysyÅ‚ania. - - - Warning: Invalid Bitcoin address - Ostrzeżenie: nieprawidÅ‚owy adres Bitcoin - - - (no label) - (brak etykiety) - - - Warning: Unknown change address - Ostrzeżenie: Nieznany adres reszty - - - Copy dust - Kopiuj kurz - - - Are you sure you want to send? - Czy na pewno chcesz wysÅ‚ać? - - - added as transaction fee - dodano jako opÅ‚ata transakcyjna - - - - SendCoinsEntry - - A&mount: - Su&ma: - - - Pay &To: - ZapÅ‚ać &dla: - - - Enter a label for this address to add it to your address book - Wprowadź etykietÄ™ dla tego adresu by dodać go do książki adresowej - - - &Label: - &Etykieta: - - - Choose previously used address - Wybierz wczeÅ›niej użyty adres - - - This is a normal payment. - To jest standardowa pÅ‚atność - - - The Bitcoin address to send the payment to - Adres Bitcoin gdzie wysÅ‚ać pÅ‚atność - - - Alt+A - Alt+A - - - Paste address from clipboard - Wklej adres ze schowka - - - Alt+P - Alt+P - - - Remove this entry - UsuÅ„ ten wpis - - - The fee will be deducted from the amount being sent. The recipient will receive less bitcoins than you enter in the amount field. If multiple recipients are selected, the fee is split equally. - OpÅ‚ata zostanie odjÄ™ta od kwoty wysyÅ‚ane.Odbiorca otrzyma mniej niż bitcoins wpisz w polu kwoty. JeÅ›li wybrano kilku odbiorców, opÅ‚ata jest podzielona równo. - - - S&ubtract fee from amount - Odejmij od wysokoÅ›ci opÅ‚aty - - - Message: - Wiadomość: - - - This is an unauthenticated payment request. - To żądanie zapÅ‚aty nie zostaÅ‚o zweryfikowane. - - - This is an authenticated payment request. - To żądanie zapÅ‚aty jest zweryfikowane. - - - Enter a label for this address to add it to the list of used addresses - Wprowadź etykietÄ™ dla tego adresu by dodać go do listy użytych adresów - - - A message that was attached to the bitcoin: URI which will be stored with the transaction for your reference. Note: This message will not be sent over the Bitcoin network. - Wiadomość, która zostaÅ‚a dołączona do URI bitcoin:, która bÄ™dzie przechowywana wraz z transakcjÄ… w celach informacyjnych. Uwaga: Ta wiadomość nie bÄ™dzie rozsyÅ‚ana w sieci Bitcoin. - - - Pay To: - WpÅ‚ać do: - - - Memo: - Notatka: - - - - ShutdownWindow - - Bitcoin Core is shutting down... - Bitcoin Core siÄ™ zamyka... - - - Do not shut down the computer until this window disappears. - Nie wyłączaj komputera dopóki to okno nie zniknie. - - - - SignVerifyMessageDialog - - Signatures - Sign / Verify a Message - Podpisy - Podpisz / zweryfikuj wiadomość - - - &Sign Message - Podpi&sz Wiadomość - - - You can sign messages/agreements with your addresses to prove you can receive bitcoins sent to them. Be careful not to sign anything vague or random, as phishing attacks may try to trick you into signing your identity over to them. Only sign fully-detailed statements you agree to. - Możesz podpisywać wiadomoÅ›ci swoimi adresami aby udowodnić, że jesteÅ› ich wÅ‚aÅ›cicielem. Uważaj, aby nie podpisywać niczego co wzbudza Twoje podejrzenia, ponieważ ktoÅ› może stosować phishing próbujÄ…c nakÅ‚onić CiÄ™ do ich podpisania. Akceptuj i podpisuj tylko w peÅ‚ni zrozumiaÅ‚e komunikaty i wiadomoÅ›ci. - - - The Bitcoin address to sign the message with - Adres Bitcoin, za pomocÄ… którego podpisać wiadomość - - - Choose previously used address - Wybierz wczeÅ›niej użyty adres - - - Alt+A - Alt+A - - - Paste address from clipboard - Wklej adres ze schowka - - - Alt+P - Alt+P - - - Enter the message you want to sign here - Tutaj wprowadź wiadomość, którÄ… chcesz podpisać - - - Signature - Podpis - - - Copy the current signature to the system clipboard - Kopiuje aktualny podpis do schowka systemowego - - - Sign the message to prove you own this Bitcoin address - Podpisz wiadomość aby dowieść, że ten adres jest twój - - - Sign &Message - Podpisz Wiado&mość - - - Reset all sign message fields - Zresetuj wszystkie pola podpisanej wiadomoÅ›ci - - - Clear &All - Wyczyść &wszystko - - - &Verify Message - &Zweryfikuj wiadomość - - - The Bitcoin address the message was signed with - Adres Bitcoin, którym zostaÅ‚a podpisana wiadomość - - - Verify the message to ensure it was signed with the specified Bitcoin address - Zweryfikuj wiadomość, aby upewnić siÄ™, że zostaÅ‚a podpisana odpowiednim adresem Bitcoin. - - - Verify &Message - Zweryfikuj Wiado&mość - - - Reset all verify message fields - Resetuje wszystkie pola weryfikacji wiadomoÅ›ci - - - Click "Sign Message" to generate signature - Kliknij "Podpisz Wiadomość" żeby uzyskać podpis - - - The entered address is invalid. - Podany adres jest nieprawidÅ‚owy. - - - Please check the address and try again. - ProszÄ™ sprawdzić adres i spróbować ponownie. - - - The entered address does not refer to a key. - Wprowadzony adres nie odnosi siÄ™ do klucza. - - - Wallet unlock was cancelled. - Odblokowanie portfela zostaÅ‚o anulowane. - - - Private key for the entered address is not available. - Klucz prywatny dla podanego adresu nie jest dostÄ™pny. - - - Message signing failed. - Podpisanie wiadomoÅ›ci nie powiodÅ‚o siÄ™. - - - Message signed. - Wiadomość podpisana. - - - The signature could not be decoded. - Podpis nie może zostać zdekodowany. - - - Please check the signature and try again. - Sprawdź podpis i spróbuj ponownie. - - - The signature did not match the message digest. - Podpis nie odpowiada skrótowi wiadomoÅ›ci. - - - Message verification failed. - Weryfikacja wiadomoÅ›ci nie powiodÅ‚a siÄ™. - - - Message verified. - Wiadomość zweryfikowana. - - - - SplashScreen - - Bitcoin Core - RdzeÅ„ Bitcoin - - - The Bitcoin Core developers - Deweloperzy Bitcoin Core - - - [testnet] - [testnet] - - - - TrafficGraphWidget - - KB/s - KB/s - - - - TransactionDesc - - Open until %1 - Otwórz do %1 - - - conflicted - konflikt - - - %1/offline - %1/offline - - - %1/unconfirmed - %1/niezatwierdzone - - - %1 confirmations - %1 potwierdzeÅ„ - - - Status - Status - - - , broadcast through %n node(s) - , przekazywany przez %n wÄ™złów, przekazywany przez %n wÄ™złów, przekazywany przez %n wÄ™złów - - - Date - Data - - - Source - ŹródÅ‚o - - - Generated - Wygenerowano - - - From - Od - - - To - Do - - - own address - wÅ‚asny adres - - - watch-only - tylko-obserwowany - - - label - etykieta - - - Credit - Przypisy - - - matures in %n more block(s) - potwierdzona przy %n blokach wiÄ™cejpotwierdzona przy %n blokach wiÄ™cejpotwierdzona przy %n blokach wiÄ™cej - - - not accepted - niezaakceptowane - - - Debit - Debet - - - Total debit - Razem wychodzÄ…cych - - - Total credit - Razem przychodzÄ…cych - - - Transaction fee - OpÅ‚ata transakcyjna - - - Net amount - Kwota netto - - - Message - Wiadomość - - - Comment - Komentarz - - - Transaction ID - ID transakcji - - - Merchant - Kupiec - - - Generated coins must mature %1 blocks before they can be spent. When you generated this block, it was broadcast to the network to be added to the block chain. If it fails to get into the chain, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - Wygenerowane monety muszÄ… dojrzeć przez %1 bloków zanim bÄ™dzie można je wydać. Gdy wygenerowaÅ‚eÅ› ten blok zostaÅ‚ on ogÅ‚oszony w sieci i dodany do Å‚aÅ„cucha bloków. Jeżeli nie uda mu siÄ™ wejść do Å‚aÅ„cucha jego status zostanie zmieniony na "nie zaakceptowano" i nie bÄ™dzie można go wydać. To czasem zdarza siÄ™ gdy inny wÄ™zeÅ‚ wygeneruje blok w kilka sekund od twojego. - - - Debug information - Informacje debugowania - - - Transaction - Transakcja - - - Inputs - WejÅ›cia - - - Amount - Kwota - - - true - prawda - - - false - faÅ‚sz - - - , has not been successfully broadcast yet - , nie zostaÅ‚ jeszcze pomyÅ›lnie rozesÅ‚any - - - Open for %n more block(s) - Otwórz dla %n nastÄ™pnych blokówOtwórz dla %n nastÄ™pnych blokówOtwórz dla %n nastÄ™pnych bloków - - - unknown - nieznany - - - - TransactionDescDialog - - Transaction details - Szczegóły transakcji - - - This pane shows a detailed description of the transaction - Ten panel pokazuje szczegółowy opis transakcji - - - - TransactionTableModel - - Date - Data - - - Type - Typ - - - Immature (%1 confirmations, will be available after %2) - NiedojrzaÅ‚a (%1 potwierdzeÅ„, bÄ™dzie dostÄ™pna po %2) - - - Open for %n more block(s) - Otwórz dla %n nastÄ™pnych blokówOtwórz dla %n nastÄ™pnych blokówOtwórz dla %n nastÄ™pnych bloków - - - Open until %1 - Otwórz do %1 - - - Confirmed (%1 confirmations) - Zatwierdzony (%1 potwierdzeÅ„) - - - This block was not received by any other nodes and will probably not be accepted! - Ten blok nie zostaÅ‚ odebrany przez jakikolwiek inny wÄ™zeÅ‚ i prawdopodobnie nie zostanie zaakceptowany! - - - Generated but not accepted - Wygenerowano ale nie zaakceptowano - - - Offline - Offline - - - Label - Etykieta - - - Unconfirmed - Niepotwierdzone: - - - Confirming (%1 of %2 recommended confirmations) - Potwierdzanie (%1 z %2 rekomendowanych potwierdzeÅ„) - - - Conflicted - Konflikt - - - Received with - Otrzymane przez - - - Received from - Odebrano od - - - Sent to - WysÅ‚ano do - - - Payment to yourself - PÅ‚atność do siebie - - - Mined - Wydobyto - - - watch-only - tylko-obserwowany - - - (n/a) - (brak) - - - Transaction status. Hover over this field to show number of confirmations. - Status transakcji. Najedź na pole, aby zobaczyć liczbÄ™ potwierdzeÅ„. - - - Date and time that the transaction was received. - Data i czas odebrania transakcji. - - - Type of transaction. - Rodzaj transakcji. - - - Whether or not a watch-only address is involved in this transaction. - Czy adres tylko-obserwowany jest lub nie użyty w tej transakcji. - - - User-defined intent/purpose of the transaction. - Zdefiniowana przez użytkownika intencja/cel transakcji. - - - Amount removed from or added to balance. - Kwota usuniÄ™ta z lub dodana do konta. - - - - TransactionView - - All - Wszystko - - - Today - Dzisiaj - - - This week - W tym tygodniu - - - This month - W tym miesiÄ…cu - - - Last month - W zeszÅ‚ym miesiÄ…cu - - - This year - W tym roku - - - Range... - Zakres... - - - Received with - Otrzymane przez - - - Sent to - WysÅ‚ano do - - - To yourself - Do siebie - - - Mined - Wydobyto - - - Other - Inne - - - Enter address or label to search - Wprowadź adres albo etykietÄ™ żeby wyszukać - - - Min amount - Min suma - - - Copy address - Kopiuj adres - - - Copy label - Kopiuj etykietÄ™ - - - Copy amount - Kopiuj kwotÄ™ - - - Copy transaction ID - Skopiuj ID transakcji - - - Edit label - ZmieÅ„ etykietÄ™ - - - Show transaction details - Pokaż szczegóły transakcji - - - Export Transaction History - Eksport historii transakcji - - - Watch-only - Tylko obserwowany - - - Exporting Failed - Błąd przy próbie eksportu - - - There was an error trying to save the transaction history to %1. - WystÄ…piÅ‚ błąd przy próbie zapisu historii transakcji do %1. - - - Exporting Successful - Eksport powiódÅ‚ siÄ™ - - - The transaction history was successfully saved to %1. - Historia transakcji zostaÅ‚a zapisana do %1. - - - Comma separated file (*.csv) - CSV (rozdzielany przecinkami) - - - Confirmed - Potwierdzony - - - Date - Data - - - Type - Typ - - - Label - Etykieta - - - Address - Adres - - - ID - ID - - - Range: - Zakres: - - - to - do - - - - UnitDisplayStatusBarControl - - Unit to show amounts in. Click to select another unit. - Jednostka w jakiej pokazywane sÄ… kwoty. Kliknij aby wybrać innÄ…. - - - - WalletFrame - - No wallet has been loaded. - Nie zaÅ‚adowano żadnego portfela. - - - - WalletModel - - Send Coins - WyÅ›lij monety - - - - WalletView - - &Export - &Eksportuj - - - Export the data in the current tab to a file - Eksportuj dane z aktywnej karty do pliku - - - Backup Wallet - Kopia Zapasowa Portfela - - - Wallet Data (*.dat) - Dane Portfela (*.dat) - - - Backup Failed - Nie udaÅ‚o siÄ™ wykonać kopii zapasowej - - - There was an error trying to save the wallet data to %1. - WystÄ…piÅ‚ błąd przy próbie zapisu pliku portfela do %1. - - - The wallet data was successfully saved to %1. - Plik portfela zostaÅ‚ zapisany do %1. - - - Backup Successful - Wykonano KopiÄ™ ZapasowÄ… - - - - bitcoin-core - - Options: - Opcje: - - - Specify data directory - Wskaż folder danych - - - Connect to a node to retrieve peer addresses, and disconnect - Podłącz siÄ™ do wÄ™zÅ‚a aby otrzymać adresy peerów i rozłącz - - - Specify your own public address - Podaj swój publiczny adres - - - Accept command line and JSON-RPC commands - Akceptuj liniÄ™ poleceÅ„ oraz polecenia JSON-RPC - - - Run in the background as a daemon and accept commands - Uruchom w tle jako daemon i przyjmuj polecenia - - - Use the test network - Użyj sieci testowej - - - Accept connections from outside (default: 1 if no -proxy or -connect) - Akceptuj połączenia z zewnÄ…trz (domyÅ›lnie: 1 jeÅ›li nie ustawiono -proxy lub -connect) - - - Bind to given address and always listen on it. Use [host]:port notation for IPv6 - Skojarz z podanym adresem i nasÅ‚uchuj na nim. Użyj formatu [host]:port dla IPv6 - - - Delete all wallet transactions and only recover those parts of the blockchain through -rescan on startup - Usuwa wszystkie transakcje w portfelu i tylko odtwarza te części z Å‚aÅ„cucha bloków poprzez -rescan przy starcie - - - Distributed under the MIT software license, see the accompanying file COPYING or <http://www.opensource.org/licenses/mit-license.php>. - Rozprowadzane na licencji MIT, zobacz dołączony plik COPYING lub <http://www.opensource.org/licenses/mit-license.php>. - - - Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) - Wykonaj polecenie, kiedy transakcja portfela ulegnie zmianie (%s w poleceniu zostanie zastÄ…pione przez TxID) - - - Maximum total fees to use in a single wallet transaction; setting this too low may abort large transactions (default: %s) - Maksymalna caÅ‚kowita opÅ‚ata użyta na każdÄ… pojedynczÄ… transakcjÄ™ portfela; ustawienie jej za nisko może przerwać wiÄ™ksze transakcje (domyÅ›lnie: %s) - - - Set the number of script verification threads (%u to %d, 0 = auto, <0 = leave that many cores free, default: %d) - Ustaw liczbÄ™ wÄ…tków skryptu weryfikacyjnego (%u do %d, 0 = auto, <0 = zostaw tyle rdzeni wolnych, domyÅ›lnie: %d) - - - This is a pre-release test build - use at your own risk - do not use for mining or merchant applications - To jest testowa wersja - używaj na wÅ‚asne ryzyko - nie używaj do wykopywania oraz przy aplikacjach kupieckich - - - Unable to bind to %s on this computer. Bitcoin Core is probably already running. - Nie można przywiÄ…zać z portem %s na tym komputerze. Bitcoin Core prawdopodobnie już dziaÅ‚a. - - - WARNING: abnormally high number of blocks generated, %d blocks received in the last %d hours (%d expected) - UWAGA: nienaturalnie duża liczba wygenerowanych bloków, %d bloków otrzymano w ostatnich %d godzinach (%d oczekiwanych) - - - WARNING: check your network connection, %d blocks received in the last %d hours (%d expected) - UWAGA: sprawdź swoje połączenie sieciowe, %d bloków otrzymano w ostatnich %d godzinach (%d oczekiwanych) - - - Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. - Ostrzeżenie: -paytxfee jest bardzo duże! Jest to prowizja za transakcje, którÄ… pÅ‚acisz, gdy wysyÅ‚asz monety. - - - Warning: The network does not appear to fully agree! Some miners appear to be experiencing issues. - Ostrzeżenie: Sieć nie wydaje siÄ™ w peÅ‚ni zgodna! Niektórzy górnicy wydajÄ… siÄ™ doÅ›wiadczać problemów. - - - Warning: We do not appear to fully agree with our peers! You may need to upgrade, or other nodes may need to upgrade. - Uwaga: WyglÄ…da na to, że nie ma peÅ‚nej zgodnoÅ›ci z naszymi peerami! Możliwe, że potrzebujesz aktualizacji bÄ…dź inne wÄ™zÅ‚y jej potrzebujÄ… - - - Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. - Ostrzeżenie: błąd odczytu wallet.dat! Wszystkie klucze zostaÅ‚y odczytane, ale może brakować pewnych danych transakcji lub wpisów w książce adresowej lub mogÄ… one być nieprawidÅ‚owe. - - - 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. - Ostrzeżenie: Odtworzono dane z uszkodzonego pliku wallet.dat! Oryginalny wallet.dat zostaÅ‚ zapisany jako wallet.{timestamp}.bak w %s; jeÅ›li twoje saldo lub transakcje sÄ… niepoprawne powinieneÅ› odtworzyć kopiÄ™ zapasowÄ…. - - - Whitelist peers connecting from the given netmask or IP address. Can be specified multiple times. - Dodawaj do biaÅ‚ej listy wÄ™zÅ‚y łączÄ…ce siÄ™ z podanej maski sieciowej lub adresu IP. Może być okreÅ›lona kilka razy. - - - (default: 1) - (domyÅ›lnie: 1) - - - <category> can be: - <category> mogÄ… być: - - - Attempt to recover private keys from a corrupt wallet.dat - Próbuj odzyskać klucze prywatne z uszkodzonego wallet.dat - - - Block creation options: - Opcje tworzenia bloku: - - - Connect only to the specified node(s) - ÅÄ…cz siÄ™ tylko do wskazanego wÄ™zÅ‚a/wÄ™złów - - - Connection options: - Opcje połączenia: - - - Corrupted block database detected - Wykryto uszkodzonÄ… bazÄ™ bloków - - - Debugging/Testing options: - Opcje debugowania/testowania: - - - Do not load the wallet and disable wallet RPC calls - Nie Å‚aduj portfela i wyłącz wywoÅ‚ania RPC portfela - - - Do you want to rebuild the block database now? - Czy chcesz teraz przebudować bazÄ™ bloków? - - - Error initializing block database - Błąd inicjowania bazy danych bloków - - - Error initializing wallet database environment %s! - Błąd inicjowania Å›rodowiska bazy portfela %s! - - - Error loading block database - Błąd Å‚adowania bazy bloków - - - Error opening block database - Błąd otwierania bazy bloków - - - Error: Disk space is low! - Błąd: MaÅ‚o miejsca na dysku! - - - Failed to listen on any port. Use -listen=0 if you want this. - Próba nasÅ‚uchiwania na jakimkolwiek porcie nie powiodÅ‚a siÄ™. Użyj -listen=0 jeÅ›li tego chcesz. - - - If <category> is not supplied, output all debugging information. - Jeżeli <category> nie zostanie okreÅ›lona, wyÅ›wietl wszystkie informacje debugowania. - - - Importing... - Importowanie… - - - Incorrect or no genesis block found. Wrong datadir for network? - NieprawidÅ‚owy lub brak bloku genezy. Błędny folder_danych dla sieci? - - - Invalid -onion address: '%s' - NieprawidÅ‚owy adres -onion: '%s' - - - Not enough file descriptors available. - Brak wystarczajÄ…cej liczby deskryptorów plików. - - - Only connect to nodes in network <net> (ipv4, ipv6 or onion) - ÅÄ…cz z wÄ™zÅ‚ami tylko w sieci <net> (ipv4, piv6 lub onion) - - - Prune cannot be configured with a negative value. - Przycinanie nie może być skonfigurowane z negatywnÄ… wartoÅ›ciÄ…. - - - Prune mode is incompatible with -txindex. - Tryb ograniczony jest niekompatybilny z -txindex. - - - Set database cache size in megabytes (%d to %d, default: %d) - Ustaw wielkość pamiÄ™ci podrÄ™cznej w megabajtach (%d do %d, domyÅ›lnie: %d) - - - Set maximum block size in bytes (default: %d) - Ustaw maksymalnÄ… wielkość bloku w bajtach (domyÅ›lnie: %d) - - - Specify wallet file (within data directory) - OkreÅ›l plik portfela (w obrÄ™bie folderu danych) - - - Use UPnP to map the listening port (default: %u) - Użyj UPnP do przekazania portu nasÅ‚uchu (domyÅ›lnie : %u) - - - Verifying blocks... - Weryfikacja bloków... - - - Verifying wallet... - Weryfikacja portfela... - - - Wallet %s resides outside data directory %s - Portfel %s znajduje siÄ™ poza folderem danych %s - - - Wallet options: - Opcje portfela: - - - Warning: This version is obsolete; upgrade required! - Uwaga: Ta wersja jest przestarzaÅ‚a, wymagana jest aktualizacja! - - - You need to rebuild the database using -reindex to change -txindex - Musisz przebudować bazÄ™ używajÄ…c parametru -reindex aby zmienić -txindex - - - Imports blocks from external blk000??.dat file - Importuj bloki z zewnÄ™trznego pliku blk000??.dat - - - 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 - Pozwól na połączenia JSON-RPC z podanego źródÅ‚a. Jako <ip> prawidÅ‚owe jest pojedyncze IP (np. 1.2.3.4), podsieć/maska (np. 1.2.3.4/255.255.255.0) lub sieć/CIDR (np. 1.2.3.4/24). Opcja ta może być użyta wiele razy. - - - An error occurred while setting up the RPC address %s port %u for listening: %s - Napotkano błąd podczas ustawiania adres RPC %s port %u dla nasÅ‚uchiwania: %s - - - Bind to given address and whitelist peers connecting to it. Use [host]:port notation for IPv6 - Podepnij siÄ™ do podanego adresu i dodawaj do biaÅ‚ej listy wÄ™zÅ‚y łączÄ…ce siÄ™ z nim. Użyj notacji [host]:port dla IPv6 - - - Bind to given address to listen for JSON-RPC connections. Use [host]:port notation for IPv6. This option can be specified multiple times (default: bind to all interfaces) - Powiąż siÄ™ z podanym adresem, aby nasÅ‚uchiwać połączenia JSON-RPC. Użyj notacji [host]:port dla IPv6. Ta opcja może być okreÅ›lona kilka razy (domyÅ›lnie: powiąż ze wszystkimi interfejsami) - - - Cannot obtain a lock on data directory %s. Bitcoin Core is probably already running. - Nie można uzyskać blokady na katalogu z danymi %s. RdzeÅ„ Bitcoin najprawdopodobniej jest już uruchomiony. - - - Create new files with system default permissions, instead of umask 077 (only effective with disabled wallet functionality) - Twórz nowe pliki z domyÅ›lnymi dla systemu uprawnieniami, zamiast umask 077 (skuteczne tylko przy wyłączonej funkcjonalnoÅ›ci portfela) - - - Discover own IP addresses (default: 1 when listening and no -externalip or -proxy) - Odkryj wÅ‚asny adres IP (domyÅ›lnie: 1 kiedy w trybie nasÅ‚uchu i brak -externalip lub -proxy) - - - Error: Listening for incoming connections failed (listen returned error %s) - Błąd: NasÅ‚uchiwanie połączeÅ„ przychodzÄ…cych nie powiodÅ‚o siÄ™ (nasÅ‚uch zwróciÅ‚ błąd %s) - - - Error: Unsupported argument -socks found. Setting SOCKS version isn't possible anymore, only SOCKS5 proxies are supported. - Błąd: Znaleziono niewspierany argument -socks . Ustawienie wersji SOCKS nie jest już możliwe, tylko serwery proxy SOCKS5 sÄ… wspierane. - - - Execute command when a relevant alert is received or we see a really long fork (%s in cmd is replaced by message) - Uruchom polecenie przy otrzymaniu odpowiedniego powiadomienia lub gdy zobaczymy naprawdÄ™ dÅ‚ugie rozgałęzienie (%s w poleceniu jest podstawiane za komunikat) - - - Fees (in BTC/Kb) smaller than this are considered zero fee for relaying (default: %s) - OpÅ‚aty (w BTC/Kb) mniejsze niż ta bÄ™dÄ… traktowane jako bez opÅ‚aty przy propagowaniu (domyÅ›lnie: %s) - - - If paytxfee is not set, include enough fee so transactions begin confirmation on average within n blocks (default: %u) - Jeżeli nie ustawiono paytxfee, dołącz wystarczajÄ…ca opÅ‚atÄ™, aby transakcja mogÅ‚a zostać zatwierdzona w ciÄ…gu Å›redniej iloÅ›ci n bloków (domyÅ›lnie: %u) - - - Invalid amount for -maxtxfee=<amount>: '%s' (must be at least the minrelay fee of %s to prevent stuck transactions) - NiewÅ‚aÅ›ciwa ilość dla -maxtxfee=<ilość>: '%s' (musi wynosić przynajmniej minimalnÄ… wielkość %s aby zapobiec utkniÄ™ciu transakcji) - - - Maximum size of data in data carrier transactions we relay and mine (default: %u) - Maksymalny rozmiar danych w transakcji przekazujÄ…cej dane które przekazujemy i wydobywamy (domyÅ›lnie: %u) - - - Prune configured below the minimum of %d MB. Please use a higher number. - Przycinanie skonfigurowano poniżej minimalnych %d MB. ProszÄ™ użyć wyższej liczby. - - - Query for peer addresses via DNS lookup, if low on addresses (default: 1 unless -connect) - Wyszukaj adresy wÄ™złów wykorzystujÄ…c zapytanie DNS, jeżeli masz maÅ‚o adresów (domyÅ›lnie: 1 jeÅ›li nie użyto -connect) - - - Set maximum size of high-priority/low-fee transactions in bytes (default: %d) - Ustaw maksymalny rozmiar transakcji o wysokim priorytecie/niskiej prowizji w bajtach (domyÅ›lnie: %d) - - - Set the number of threads for coin generation if enabled (-1 = all cores, default: %d) - Ustaw liczbÄ™ wÄ…tków dla generowania monet (-1 = wszystkie rdzenie, domyÅ›lnie: %d) - - - The transaction amount is too small to send after the fee has been deducted - Zbyt niska kwota transakcji do wysÅ‚ania po odjÄ™ciu opÅ‚aty - - - 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. - Program ten zawiera oprogramowanie stworzone przez OpenSSL Project do użycia w OpensSSL Toolkit <https://www.openssl.org/>, oprogramowanie kryptograficzne napisane przez Eric Young oraz oprogramowanie UPnP napisane przez Thomas Bernard. - - - 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 - - Aby korzystać z bitcoind, lub opcji -server w bitcoin-qt, musisz ustawić opcjÄ™ rpcpassword w pliku konfiguracyjnym: -%s -Zalecane jest użycie poniższego losowego hasÅ‚a: -rpcuser=bitcoinrpc -rpcpassword=%s -(nie musisz pamiÄ™tać tego hasÅ‚a) -Nazwa użytkownika i hasÅ‚o NIE MOGÄ„ być takie same. -Jeżeli ten plik nie istnieje, utwórz go z uprawnieniami tylko-do-odczytu przez wÅ‚aÅ›ciciela. -Zalecane jest także ustawienie opcji alertnotify, dziÄ™ki której bÄ™dziesz powiadamiany o problemach; -na przykÅ‚ad: alertnotify=echo %%s | mail -s "Alarm Bitcoin" admin@foo.com - - - - Warning: -maxtxfee is set very high! Fees this large could be paid on a single transaction. - Ostrzeżenie: -matxfee jest ustawione bardzo wysokie! Tak wysokie opÅ‚aty mogÄ… być zapÅ‚acone w jednej transakcji. - - - Warning: Please check that your computer's date and time are correct! If your clock is wrong Bitcoin Core will not work properly. - Ostrzeżenie: ProszÄ™ sprawdzić czy data i czas na Twoim komputerze sÄ… poprawne! Jeżeli ustawienia zegara bÄ™dÄ… zÅ‚e, Bitcoin Core nie bÄ™dzie dziaÅ‚aÅ‚ prawidÅ‚owo. - - - 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 - WÄ™zÅ‚y z biaÅ‚ej listy nie mogÄ… zostać zbanowane za ataki DoS, a ich transakcje bÄ™dÄ… zawsze przekazywane, nawet jeżeli bÄ™dÄ… znajdywać siÄ™ już w pamiÄ™ci, przydatne np. dla bramek pÅ‚atniczych - - - (default: %u) - (domyÅ›lnie: %u) - - - Accept public REST requests (default: %u) - Akceptuj publiczne żądania REST (domyÅ›lnie: %u) - - - Activating best chain... - Aktywuje najlepszy Å‚aÅ„cuch - - - Can't run with a wallet in prune mode. - Nie można uruchomić z portfela w trybie ograniczonym. - - - Cannot resolve -whitebind address: '%s' - Nie można rozwiÄ…zać adresu -whitebind: '%s' - - - Choose data directory on startup (default: 0) - Wybierz folder danych przy starcie (domyÅ›lnie: 0) - - - Connect through SOCKS5 proxy - Połącz przez SOCKS5 proxy - - - Copyright (C) 2009-%i The Bitcoin Core Developers - Copyright (C) 2009-%i The Bitcoin Core Developers - - - Could not parse -rpcbind value %s as network address - Nie można przetworzyć wartoÅ›ci -rpcbind %s jako adresu sieciowego - - - Error loading wallet.dat: Wallet requires newer version of Bitcoin Core - Błąd Å‚adowania wallet.dat: Portfel wymaga nowszej wersji Bitcoin Core - - - Error reading from database, shutting down. - Błąd odczytu z bazy danych, wyłączam siÄ™. - - - Error: A fatal internal error occurred, see debug.log for details - Błąd: WystÄ…piÅ‚ fatalny błąd wewnÄ™trzny, sprawdź szczegóły w debug.log - - - Error: Unsupported argument -tor found, use -onion. - Błąd: Znaleziono nieprawidÅ‚owy argument -tor, użyj -onion. - - - Fee (in BTC/kB) to add to transactions you send (default: %s) - Prowizja (w BTC za kB) dodawana do wysyÅ‚anej transakcji (domyÅ›lnie: %s) - - - Information - Informacja - - - Initialization sanity check failed. Bitcoin Core is shutting down. - WstÄ™pna kontrola poprawnoÅ›ci nie powiodÅ‚a siÄ™. Bitcoin Core wyłącza siÄ™. - - - Invalid amount for -maxtxfee=<amount>: '%s' - NieprawidÅ‚owa kwota dla -maxtxfee=<amount>: '%s' - - - Invalid amount for -minrelaytxfee=<amount>: '%s' - NieprawidÅ‚owa kwota dla -minrelaytxfee=<amount>: '%s' - - - Invalid amount for -mintxfee=<amount>: '%s' - NieprawidÅ‚owa kwota dla -mintxfee=<amount>: '%s' - - - Invalid amount for -paytxfee=<amount>: '%s' (must be at least %s) - NieprawidÅ‚owa kwota dla -paytxfee=<amount>: '%s' (musi być co najmniej %s) - - - Invalid netmask specified in -whitelist: '%s' - NieprawidÅ‚owa maska sieci okreÅ›lona w -whitelist: '%s' - - - Keep at most <n> unconnectable transactions in memory (default: %u) - Przechowuj w pamiÄ™ci maksymalnie <n> transakcji nie możliwych do połączenia (domyÅ›lnie: %u) - - - Node relay options: - Opcje przekaźnikowe wÄ™zÅ‚a: - - - Pruning blockstore... - Przycinanie zapisu bloków... - - - RPC SSL options: (see the Bitcoin Wiki for SSL setup instructions) - Opcje RPC SSL: (odwiedź Bitcoin Wiki w celu uzyskania instrukcji) - - - RPC server options: - Opcje serwera RPC: - - - RPC support for HTTP persistent connections (default: %d) - Wsparcie RPC dla ciÄ…gÅ‚ych połączeÅ„ HTTP (domyÅ›lnie: %d) - - - Rebuild block chain index from current blk000??.dat files on startup - Odbuduj indeks Å‚aÅ„cucha bloków z obecnych plików blk000??.dat podczas ponownego uruchomienia - - - Receive and display P2P network alerts (default: %u) - Odbieranie i wyÅ›wietlanie alertów sieci P2P (domyÅ›lnie: %u) - - - Send trace/debug info to console instead of debug.log file - WyÅ›lij informacjÄ™/raport do konsoli zamiast do pliku debug.log. - - - Send transactions as zero-fee transactions if possible (default: %u) - WyÅ›lij bez opÅ‚aty jeżeli to możliwe (domyÅ›lnie: %u) - - - Set SSL root certificates for payment request (default: -system-) - Ustaw certyfikaty główne SSL dla żądaÅ„ pÅ‚atnoÅ›ci (domyÅ›lnie: -system-) - - - Set language, for example "de_DE" (default: system locale) - Ustaw JÄ™zyk, na przykÅ‚ad "pl_PL" (domyÅ›lnie: systemowy) - - - Show all debugging options (usage: --help -help-debug) - Pokaż wszystkie opcje odpluskwiania (użycie: --help -help-debug) - - - Show splash screen on startup (default: 1) - Pokazuj okno powitalne przy starcie (domyÅ›lnie: 1) - - - Shrink debug.log file on client startup (default: 1 when no -debug) - Zmniejsz plik debug.log przy starcie programu (domyÅ›lnie: 1 jeÅ›li nie użyto -debug) - - - Signing transaction failed - Podpisywanie transakcji nie powiodÅ‚o siÄ™ - - - Start minimized - Uruchom zminimalizowany - - - The transaction amount is too small to pay the fee - Zbyt niska kwota transakcji by zapÅ‚acić opÅ‚atÄ™ - - - This is experimental software. - To oprogramowanie eksperymentalne. - - - Transaction amount too small - Zbyt niska kwota transakcji - - - Transaction amounts must be positive - Kwota transakcji musi być dodatnia - - - Transaction too large for fee policy - Transakcja jest zbyt duża dla tej opÅ‚aty - - - Transaction too large - Transakcja zbyt duża - - - UI Options: - Opcje UI - - - Unable to bind to %s on this computer (bind returned error %s) - Nie można przywiÄ…zać do %s na tym komputerze (bind zwróciÅ‚ błąd %s) - - - Use UPnP to map the listening port (default: 1 when listening) - Używaj UPnP do mapowania portu nasÅ‚uchu (domyÅ›lnie: 1 gdy nasÅ‚uchuje) - - - Username for JSON-RPC connections - Nazwa użytkownika dla połączeÅ„ JSON-RPC - - - Wallet needed to be rewritten: restart Bitcoin Core to complete - Portfel wymaga przepisania: zrestartuj Bitcoina aby ukoÅ„czyć - - - Warning - Ostrzeżenie - - - Warning: Unsupported argument -benchmark ignored, use -debug=bench. - Uwaga: Zignorowano nieprawidÅ‚owy argument -benchmark, użyj -debug=bench. - - - Warning: Unsupported argument -debugnet ignored, use -debug=net. - Uwaga: Zignorowano nieprawidÅ‚owy argument -debugnet , użyj -debug=net. - - - Zapping all transactions from wallet... - Usuwam wszystkie transakcje z portfela... - - - on startup - podczas uruchamiania - - - wallet.dat corrupt, salvage failed - wallet.dat uszkodzony, odtworzenie siÄ™ nie powiodÅ‚o - - - Password for JSON-RPC connections - HasÅ‚o do połączeÅ„ JSON-RPC - - - Execute command when the best block changes (%s in cmd is replaced by block hash) - Wykonaj polecenie kiedy najlepszy blok ulegnie zmianie (%s w komendzie zastanie zastÄ…pione przez hash bloku) - - - Upgrade wallet to latest format - Zaktualizuj portfel do najnowszego formatu. - - - Rescan the block chain for missing wallet transactions - Przeskanuj Å‚aÅ„cuch bloków w poszukiwaniu zaginionych transakcji portfela - - - Use OpenSSL (https) for JSON-RPC connections - Użyj OpenSSL (https) do połączeÅ„ JSON-RPC - - - This help message - Ta wiadomość pomocy - - - Allow DNS lookups for -addnode, -seednode and -connect - Zezwól -addnode, -seednode i -connect na łączenie siÄ™ z serwerem DNS - - - Loading addresses... - Wczytywanie adresów... - - - Error loading wallet.dat: Wallet corrupted - Błąd Å‚adowania wallet.dat: Uszkodzony portfel - - - (1 = keep tx meta data e.g. account owner and payment request information, 2 = drop tx meta data) - (1 = zachowaj wysÅ‚ane metadane np. wÅ‚aÅ›ciciel konta i informacje o żądaniach pÅ‚atnoÅ›ci, 2 = porzuć wysÅ‚ane metadane) - - - How thorough the block verification of -checkblocks is (0-4, default: %u) - Jak dokÅ‚adna jest weryfikacja bloków przy -checkblocks (0-4, domyÅ›lnie: %u) - - - Maintain a full transaction index, used by the getrawtransaction rpc call (default: %u) - Utrzymuj peÅ‚ny indeks transakcji, używany przy wywoÅ‚aniu RPC getrawtransaction (domyÅ›lnie: %u) - - - Number of seconds to keep misbehaving peers from reconnecting (default: %u) - Czas w sekundach, przez jaki nietrzymajÄ…ce siÄ™ zasad wÄ™zÅ‚y nie bÄ™dÄ… mogÅ‚y ponownie siÄ™ podłączyć (domyÅ›lnie: %u) - - - Output debugging information (default: %u, supplying <category> is optional) - Wypuść informacje debugowania (domyÅ›lnie: %u, podanie <category> jest opcjonalne) - - - Use separate SOCKS5 proxy to reach peers via Tor hidden services (default: %s) - Użyj oddzielnego prozy SOCKS5 aby osiÄ…gnąć wÄ™zÅ‚y w ukrytych usÅ‚ugach Tor (domyÅ›lnie: %s) - - - (default: %s) - (domyÅ›lnie: %s) - - - Acceptable ciphers (default: %s) - Akceptowane szyfry (domyÅ›lne: %s) - - - Always query for peer addresses via DNS lookup (default: %u) - Zawsze wypytuj o adresy wÄ™złów poprzez podejrzenie DNS (domyÅ›lnie: %u) - - - Error loading wallet.dat - Błąd Å‚adowania wallet.dat - - - Generate coins (default: %u) - Generuj monety (domyÅ›lnie: %u) - - - How many blocks to check at startup (default: %u, 0 = all) - Ile bloków sprawdzić przy starcie (domyÅ›lnie: %u, 0 = wszystkie) - - - Include IP addresses in debug output (default: %u) - Dołącz adresy IP do logowania (domyÅ›lnie: %u) - - - Invalid -proxy address: '%s' - NieprawidÅ‚owy adres -proxy: '%s' - - - Listen for JSON-RPC connections on <port> (default: %u or testnet: %u) - NasÅ‚uchuj połączeÅ„ JSON-RPC na <port> (domyÅ›lnie: %u lub testnet: %u) - - - Listen for connections on <port> (default: %u or testnet: %u) - NasÅ‚uchuj połączeÅ„ na <port> (domyÅ›lnie: %u lub testnet: %u) - - - Maintain at most <n> connections to peers (default: %u) - Utrzymuj maksymalnie <n> połączeÅ„ z wÄ™zÅ‚ami (domyÅ›lnie: %u) - - - Make the wallet broadcast transactions - Spraw by portfel dokonaÅ‚ transmisji transakcji - - - Maximum per-connection receive buffer, <n>*1000 bytes (default: %u) - Maksymalny bufor odbioru na połączenie, <n>*1000 bajtów (domyÅ›lnie: %u) - - - Maximum per-connection send buffer, <n>*1000 bytes (default: %u) - Maksymalny bufor wysyÅ‚ania na połączenie, <n>*1000 bajtów (domyÅ›lnie: %u) - - - Prepend debug output with timestamp (default: %u) - Dołączaj znacznik czasu do logowania (domyÅ›lnie: %u) - - - Relay and mine data carrier transactions (default: %u) - Przekazuj i wydobywaj transakcje zawierajÄ…ce dane (domyÅ›lnie: %u) - - - Relay non-P2SH multisig (default: %u) - Przekazuj transakcje multisig inne niż P2SH (domyÅ›lnie: %u) - - - Server certificate file (default: %s) - Plik certyfikatu serwera (domyÅ›lnie: %s) - - - Server private key (default: %s) - Klucz prywatny serwera (domyÅ›lnie: %s) - - - Set key pool size to <n> (default: %u) - Ustaw rozmiar puli kluczy na <n> (domyÅ›lnie: %u) - - - Set minimum block size in bytes (default: %u) - Ustaw minimalny rozmiar bloku w bajtach (domyÅ›lnie: %u) - - - Set the number of threads to service RPC calls (default: %d) - Ustaw liczbÄ™ wÄ…tków do obsÅ‚ugi RPC (domyÅ›lnie: %d) - - - Specify configuration file (default: %s) - Wskaż plik konfiguracyjny (domyÅ›lnie: %s) - - - Specify connection timeout in milliseconds (minimum: 1, default: %d) - Wskaż czas oczekiwania na połączenie w milisekundach (minimum: 1, domyÅ›lnie: %d) - - - Specify pid file (default: %s) - Wskaż plik pid (domyÅ›lnie: %s) - - - Spend unconfirmed change when sending transactions (default: %u) - Wydawaj niepotwierdzonÄ… resztÄ™ podczas wysyÅ‚ania transakcji (domyÅ›lnie: %u) - - - Threshold for disconnecting misbehaving peers (default: %u) - Próg, po którym nastÄ…pi rozłączenie wÄ™złów nietrzymajÄ…cych siÄ™ zasad (domyÅ›lnie: %u) - - - Unknown network specified in -onlynet: '%s' - Nieznana sieć w -onlynet: '%s' - - - Cannot resolve -bind address: '%s' - Nie można uzyskać adresu -bind: '%s' - - - Cannot resolve -externalip address: '%s' - Nie można uzyskać adresu -externalip: '%s' - - - Invalid amount for -paytxfee=<amount>: '%s' - NieprawidÅ‚owa kwota dla -paytxfee=<amount>: '%s' - - - Insufficient funds - NiewystarczajÄ…ce Å›rodki - - - Loading block index... - Åadowanie indeksu bloku... - - - Add a node to connect to and attempt to keep the connection open - Dodaj wÄ™zeÅ‚ do podłączenia siÄ™ i próbuj utrzymać to połączenie - - - Loading wallet... - Wczytywanie portfela... - - - Cannot downgrade wallet - Nie można dezaktualizować portfela - - - Cannot write default address - Nie można zapisać domyÅ›lnego adresu - - - Rescanning... - Ponowne skanowanie... - - - Done loading - Wczytywanie zakoÅ„czone - - - Error - Błąd - - - \ No newline at end of file diff --git a/src/qt/locale/bitcoin_pt_BR.ts b/src/qt/locale/bitcoin_pt_BR.ts deleted file mode 100644 index 112b89489..000000000 --- a/src/qt/locale/bitcoin_pt_BR.ts +++ /dev/null @@ -1,3380 +0,0 @@ - - - AddressBookPage - - Right-click to edit address or label - Clique com o botão direito para editar o endereço ou rótulo - - - Create a new address - Criar novo endereço - - - &New - &Novo - - - Copy the currently selected address to the system clipboard - Copie o endereço selecionado para a área de transferência do sistema - - - &Copy - &Copiar - - - C&lose - &Fechar - - - &Copy Address - &Copiar Endereço - - - Delete the currently selected address from the list - Excluir os endereços selecionados da lista - - - Export the data in the current tab to a file - Exportar os dados na aba atual para um arquivo - - - &Export - &Exportar - - - &Delete - &Excluir - - - Choose the address to send coins to - Escolha o endereço para enviar moedas - - - Choose the address to receive coins with - Escolha o endereço para receber moedas - - - C&hoose - Escol&ha - - - Sending addresses - Endereços para envios - - - Receiving addresses - Endereços de recebimento - - - These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins. - Esses são seus endereços Bitcoin para enviar pagamentos. Certifique-se sempre da quantia e do destinatário antes de enviar moedas. - - - These are your Bitcoin addresses for receiving payments. It is recommended to use a new receiving address for each transaction. - Estes são os seus endereços Bitcoin para receber pagamentos. Recomenda-se a utilização de um novo endereço de recebimento para cada transação. - - - Copy &Label - Copiar &Rótulo - - - &Edit - &Editar - - - Export Address List - Exportar lista de endereços - - - Comma separated file (*.csv) - Arquivo separado por vírgulas (*. csv) - - - Exporting Failed - Exportação Falhou - - - There was an error trying to save the address list to %1. Please try again. - Ocorreu um erro ao tentar salvar a lista de endereço em %1.. Por favor tente novamente. - - - - AddressTableModel - - Label - Rótulo - - - Address - Endereço - - - (no label) - (Sem rótulo) - - - - AskPassphraseDialog - - Passphrase Dialog - Janela da Frase de Segurança - - - Enter passphrase - Digite a frase de segurança - - - New passphrase - Nova frase de segurança - - - Repeat new passphrase - Repita a nova frase de segurança - - - Encrypt wallet - Criptografar carteira - - - This operation needs your wallet passphrase to unlock the wallet. - Esta operação precisa de sua frase de segurança para desbloquear a carteira. - - - Unlock wallet - Desbloquear carteira - - - This operation needs your wallet passphrase to decrypt the wallet. - Esta operação precisa de sua frase de segurança para descriptografar a carteira. - - - Decrypt wallet - Descriptografar carteira - - - Change passphrase - Alterar frase de segurança - - - Confirm wallet encryption - Confirmar criptografia da carteira - - - Warning: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR BITCOINS</b>! - Atenção: Se você criptografar sua carteira e perder sua frase, você vai <b>perder todos os seus BITCOINS!</b> - - - Are you sure you wish to encrypt your wallet? - Tem certeza de que deseja criptografar sua carteira? - - - Bitcoin Core 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. - O Bitcoin irá fechar agora para terminar o processo de criptografia. Lembre-se que criptografando sua carteira não te protege totalmente de ter seus bitcoins roubados por um malware que infectar seu computador. - - - 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. - IMPORTANTE: Qualquer backup prévio que você tenha feito do seu arquivo wallet deve ser substituído pelo novo e encriptado arquivo wallet gerado. Por razões de segurança, qualquer backup do arquivo wallet não criptografado se tornará inútil assim que você começar a usar uma nova carteira criptografada. - - - Warning: The Caps Lock key is on! - Atenção: A tecla Caps Lock está ligada! - - - Wallet encrypted - Carteira criptografada - - - 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>. - Digite a nova frase da carteira. <br/>Por favor utilize uma senha com <b>dez ou mais caracteres aleartórios</b>, ou <b>oito ou mais palavras</b>. - - - Enter the old passphrase and new passphrase to the wallet. - Insira a frase antiga e a nova da carteira. - - - Wallet encryption failed - A criptografia da carteira falhou - - - Wallet encryption failed due to an internal error. Your wallet was not encrypted. - A criptografia da carteira falhou devido a um erro interno. Sua carteira não estava criptografada. - - - The supplied passphrases do not match. - A frase de segurança fornecida não confere. - - - Wallet unlock failed - O desbloqueio da carteira falhou - - - The passphrase entered for the wallet decryption was incorrect. - A frase de segurança digitada para a descriptografia da carteira estava incorreta. - - - Wallet decryption failed - A descriptografia da carteira falhou - - - Wallet passphrase was successfully changed. - A frase de segurança da carteira foi alterada com êxito. - - - - BitcoinGUI - - Sign &message... - &Assinar mensagem... - - - Synchronizing with network... - Sincronizando com a rede... - - - &Overview - &Visão geral - - - Node - Nó - - - Show general overview of wallet - Mostrar visão geral da carteira - - - &Transactions - &Transações - - - Browse transaction history - Navegar pelo histórico de transações - - - E&xit - S&air - - - Quit application - Sair da aplicação - - - About &Qt - Sobre &Qt - - - Show information about Qt - Mostrar informações sobre o Qt - - - &Options... - &Opções... - - - &Encrypt Wallet... - &Criptografar Carteira... - - - &Backup Wallet... - &Backup da carteira... - - - &Change Passphrase... - &Mudar frase de segurança... - - - &Sending addresses... - Endereço&s de envio... - - - &Receiving addresses... - Endereços de &recebimento... - - - Open &URI... - Abrir &URI... - - - Bitcoin Core client - Cliente Bitcoin - - - Importing blocks from disk... - Importando blocos do disco... - - - Reindexing blocks on disk... - Reindexando blocos no disco... - - - Send coins to a Bitcoin address - Enviar moedas para um endereço bitcoin - - - Backup wallet to another location - Fazer cópia de segurança da carteira para uma outra localização - - - Change the passphrase used for wallet encryption - Mudar a frase de segurança utilizada na criptografia da carteira - - - &Debug window - Janela de &Depuração - - - Open debugging and diagnostic console - Abrir console de depuração e diagnóstico - - - &Verify message... - &Verificar mensagem... - - - Bitcoin - Bitcoin - - - Wallet - Carteira - - - &Send - &Enviar - - - &Receive - &Receber - - - Show information about Bitcoin Core - Mostrar informações sobre Bitcoin - - - &Show / Hide - &Exibir/Ocultar - - - Show or hide the main Window - Mostrar ou esconder a Janela Principal. - - - Encrypt the private keys that belong to your wallet - Criptografar as chaves privadas que pertencem à sua carteira - - - Sign messages with your Bitcoin addresses to prove you own them - Assine mensagens com seus endereços Bitcoin para provar que você é dono delas - - - Verify messages to ensure they were signed with specified Bitcoin addresses - Verificar mensagens para se assegurar que elas foram assinadas pelo dono de Endereços Bitcoin específicos - - - &File - &Arquivo - - - &Settings - &Configurações - - - &Help - A&juda - - - Tabs toolbar - Barra de ferramentas - - - Bitcoin Core - Bitcoin - - - Request payments (generates QR codes and bitcoin: URIs) - Solicitações de pagamentos (gera códigos QR e bitcoin: URIs) - - - &About Bitcoin Core - &Sobre Bitcoin - - - Modify configuration options for Bitcoin Core - Modificar opções de configuração do Bitcoin - - - Show the list of used sending addresses and labels - Mostrar a lista de endereços de envio e rótulos usados - - - Show the list of used receiving addresses and labels - Mostrar a lista de endereços de recebimento usados ​​e rótulos - - - Open a bitcoin: URI or payment request - Abrir um bitcoin: URI ou cobrança - - - &Command-line options - Opções de linha de &comando - - - Show the Bitcoin Core help message to get a list with possible Bitcoin command-line options - Mostra a mensagem de ajuda do Bitcoin para pegar a lista com os comandos possíveis - - - %n active connection(s) to Bitcoin network - %n conexão ativa na rede Bitcoin%n conexões ativas na rede Bitcoin - - - No block source available... - Nenhum servidor disponível... - - - %n hour(s) - %n hora%n horas - - - %n day(s) - %n dia%n dias - - - %n week(s) - %n semana%n semanas - - - %1 and %2 - %1 e %2 - - - %n year(s) - %n ano%n anos - - - %1 behind - %1 atrás - - - Last received block was generated %1 ago. - Último bloco recebido foi gerado %1 atrás. - - - Transactions after this will not yet be visible. - Transações após isso ainda não estão visíveis. - - - Error - Erro - - - Warning - Atenção - - - Information - Informação - - - Up to date - Atualizado - - - Catching up... - Recuperando o atraso ... - - - Date: %1 - - Data: %1 - - - - Amount: %1 - - Quantidade: %1 - - - - Type: %1 - - Tipo: %1 - - - - Label: %1 - - Rótulo: %1 - - - - Address: %1 - - Endereço: %1 - - - - Sent transaction - Transação enviada - - - Incoming transaction - Transação recebida - - - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - Carteira está <b>criptografada</b> e atualmente <b>desbloqueada</b> - - - Wallet is <b>encrypted</b> and currently <b>locked</b> - Carteira está <b>criptografada</b> e atualmente <b>bloqueada</b> - - - - ClientModel - - Network Alert - Alerta da Rede - - - - CoinControlDialog - - Coin Selection - Selecionar Moeda - - - Quantity: - Quantidade: - - - Bytes: - Bytes: - - - Amount: - Quantia: - - - Priority: - Prioridade: - - - Fee: - Taxa: - - - Dust: - Poeira: - - - After Fee: - Depois da taxa: - - - Change: - trocar - - - (un)select all - (de)selecionar tudo - - - Tree mode - Modo árvore - - - List mode - Modo lista - - - Amount - Quantidade - - - Received with label - Recebido com rótulo - - - Received with address - Recebido com endereço - - - Date - Data - - - Confirmations - Confirmações - - - Confirmed - Confirmado - - - Priority - Prioridade - - - Copy address - Copiar endereço - - - Copy label - Copiar rótulo - - - Copy amount - Copiar quantia - - - Copy transaction ID - Copiar ID da transação - - - Lock unspent - Travar não gasto - - - Unlock unspent - Destravar não gasto - - - Copy quantity - Copiar quantidade - - - Copy fee - Copiar taxa - - - Copy after fee - Copia pós-taxa - - - Copy bytes - Copiar bytes - - - Copy priority - Copia prioridade - - - Copy dust - Copiar poeira - - - Copy change - Copia alteração - - - highest - mais alta possível - - - higher - muito alta - - - high - alta - - - medium-high - média-alta - - - medium - média - - - low-medium - média-baixa - - - low - baixa - - - lower - muito baixa - - - lowest - a mais baixa possível - - - (%1 locked) - (%1 travado) - - - none - nenhum - - - This label turns red if the transaction size is greater than 1000 bytes. - Este texto fica vermelho se o tamanho da transação for maior que 1000 bytes. - - - This label turns red if the priority is smaller than "medium". - Este texto fica vermelho se a prioridade é menor que "medio". - - - This label turns red if any recipient receives an amount smaller than %1. - Este texto fica vermelho se qualquer destinatário receber uma quantidade menor que %1. - - - Can vary +/- %1 satoshi(s) per input. - Pode variar +/- %1 satoshi(s) por entrada. - - - yes - sim - - - no - não - - - This means a fee of at least %1 per kB is required. - Isso significa que uma taxa de pelo menos %1 por kB é necessária. - - - Can vary +/- 1 byte per input. - Pode variar +/- 1 byte por entrada. - - - Transactions with higher priority are more likely to get included into a block. - Transações de alta prioridade são mais propensas a serem incluídas em um bloco. - - - (no label) - (Sem rótulo) - - - change from %1 (%2) - troco de %1 (%2) - - - (change) - (troco) - - - - EditAddressDialog - - Edit Address - Editar Endereço - - - &Label - &Rótulo - - - The label associated with this address list entry - O rótulo associado a esta entrada na lista de endereços - - - The address associated with this address list entry. This can only be modified for sending addresses. - O endereço associado a esta lista de endereços de entrada. Isso só pode ser modificado para o envio de endereços. - - - &Address - &Endereço - - - New receiving address - Novo endereço de recebimento - - - New sending address - Novo endereço de envio - - - Edit receiving address - Editar endereço de recebimento - - - Edit sending address - Editar endereço de envio - - - The entered address "%1" is already in the address book. - O endereço digitado "%1" já se encontra no catálogo de endereços. - - - The entered address "%1" is not a valid Bitcoin address. - O endereço digitado "%1" não é um endereço Bitcoin válido. - - - Could not unlock wallet. - Não foi possível desbloquear a carteira. - - - New key generation failed. - A geração de nova chave falhou. - - - - FreespaceChecker - - A new data directory will be created. - Um novo diretório de dados será criado. - - - name - nome - - - Directory already exists. Add %1 if you intend to create a new directory here. - O diretório já existe. Adicione %1 se você pretende criar um novo diretório aqui. - - - Path already exists, and is not a directory. - Esta pasta já existe, e não é um diretório. - - - Cannot create data directory here. - Não é possível criar um diretório de dados aqui. - - - - HelpMessageDialog - - Bitcoin Core - Bitcoin - - - version - versão - - - (%1-bit) - (%1-bit) - - - About Bitcoin Core - Sobre o Bitcoin - - - Command-line options - Opções da linha de comando - - - Usage: - Uso: - - - command-line options - opções da linha de comando - - - - Intro - - Welcome - Bem-vindo - - - Welcome to Bitcoin Core. - Bem vindo ao Bitcoin. - - - As this is the first time the program is launched, you can choose where Bitcoin Core will store its data. - A primeira vez que o programa é aberto você pode escolher onde o Bitcoin vai guardar os dados. - - - Bitcoin Core will download and store a copy of the Bitcoin block chain. At least %1GB of data will be stored in this directory, and it will grow over time. The wallet will also be stored in this directory. - O Bitcoin vai fazer download e salvar uma cópia da cadeia de blocos do Bitcoin: Blockchain. Pelo menos %1 GB de dados serão armazenados nesse diretório e isso aumentará ao longo do tempo. Sua carteira também será armazenada nesse diretório. - - - Use the default data directory - Use o diretório de dados padrão - - - Use a custom data directory: - Use um diretório de dados personalizado: - - - Bitcoin Core - Bitcoin - - - Error: Specified data directory "%1" cannot be created. - Erro: Diretório de dados "%1" não pode ser criado. - - - Error - Erro - - - %n GB of free space available - %n GB de espaço livre disponível%n GB de espaço livre disponível - - - (of %n GB needed) - (de %n GB necessário)(de %n GB necessário) - - - - OpenURIDialog - - Open URI - Abrir URI - - - Open payment request from URI or file - Cobrança aberta de URI ou arquivo - - - URI: - URI: - - - Select payment request file - Selecione o arquivo de cobrança - - - Select payment request file to open - Selecione o arquivo de cobrança para ser aberto - - - - OptionsDialog - - Options - Opções - - - &Main - Principal - - - Size of &database cache - Tamanho do banco de &dados do cache - - - MB - MB - - - Number of script &verification threads - Número de threads do script de &verificação - - - Accept connections from outside - Aceitar conexões externas - - - Allow incoming connections - Permitir conexões de entrada - - - IP address of the proxy (e.g. IPv4: 127.0.0.1 / IPv6: ::1) - Endereço de IP do proxy (e.g. IPv4: 127.0.0.1 / IPv6: ::1) - - - Minimize instead of exit the application when the window is closed. When this option is enabled, the application will be closed only after selecting Exit in the menu. - Minimizar em vez de fechar o programa quando a janela for fechada. Quando essa opção estiver ativa, o programa só será fechado somente pela opção Sair no menu Arquivo. - - - The user interface language can be set here. This setting will take effect after restarting Bitcoin Core. - A linguagem da interface do usuário pode ser alterada aqui. A mudança ocorrerá após o reinício do Bitcoin Core. - - - 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 |. - URLs de terceiros (exemplo: explorador de blocos) que aparecem na aba de transações como itens do menu de contexto. %s na URL é substituido pela hash da transação. Múltiplas URLs são separadas pela barra vertical |. - - - Third party transaction URLs - URLs de transação de terceiros: - - - Active command-line options that override above options: - Ativa as opções de linha de comando que sobrescreve as opções acima: - - - Reset all client options to default. - Redefinir todas as opções do cliente para opções padrão. - - - &Reset Options - &Redefinir opções - - - &Network - Rede - - - Automatically start Bitcoin Core after logging in to the system. - Inicar automaticamente o Bitcoin ao logar no sistema. - - - &Start Bitcoin Core on system login - &Iniciar Bitcoin no login do sistema - - - (0 = auto, <0 = leave that many cores free) - (0 = automático, <0 = número de cores deixados livres) - - - W&allet - C&arteira - - - Expert - Avançado - - - Enable coin &control features - Habilitar opções de &controle de moedas - - - 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. - Se você desabilitar o gasto de um troco não confirmado, o troco da transação não poderá ser utilizado até a transação ter pelo menos uma confirmação. Isso também afeta seu saldo computado. - - - &Spend unconfirmed change - Ga&star mudança não confirmada - - - Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled. - Abrir as portas do cliente Bitcoin automaticamente no roteador. Isto só funcionará se seu roteador suportar UPnP e esta função estiver habilitada. - - - Map port using &UPnP - Mapear porta usando &UPnP - - - Connect to the Bitcoin network through a SOCKS5 proxy. - Conectar na rede Bitcoin através de um proxy SOCKS5. - - - &Connect through SOCKS5 proxy (default proxy): - &Conectar usando proxy SOCKS5 (proxy pradrão): - - - Proxy &IP: - &IP do proxy: - - - &Port: - &Porta: - - - Port of the proxy (e.g. 9050) - Porta do serviço de proxy (ex. 9050) - - - &Window - &Janela - - - Show only a tray icon after minimizing the window. - Mostrar apenas um ícone na bandeja ao minimizar a janela. - - - &Minimize to the tray instead of the taskbar - &Minimizar para a bandeja em vez da barra de tarefas. - - - M&inimize on close - M&inimizar ao sair - - - &Display - &Mostrar - - - User Interface &language: - &Linguagem da interface: - - - &Unit to show amounts in: - &Unidade usada para mostrar quantidades: - - - Choose the default subdivision unit to show in the interface and when sending coins. - Escolha a unidade padrão de subdivisão para interface mostrar quando enviar bitcoins. - - - Whether to show coin control features or not. - Mostrar ou não opções de controle da moeda. - - - &OK - &OK - - - &Cancel - &Cancelar - - - default - padrão - - - none - nenhum - - - Confirm options reset - Confirmar redefinição de opções - - - Client restart required to activate changes. - Reinicialização do aplicativo necessária para efetivar alterações. - - - Client will be shut down. Do you want to proceed? - O programa será encerrado. Deseja continuar? - - - This change would require a client restart. - Essa mudança requer uma reinicialização do aplicativo. - - - The supplied proxy address is invalid. - O endereço proxy fornecido é inválido. - - - - OverviewPage - - Form - Formulário - - - The displayed information may be out of date. Your wallet automatically synchronizes with the Bitcoin network after a connection is established, but this process has not completed yet. - A informação mostrada pode estar desatualizada. Sua carteira sincroniza automaticamente com a rede Bitcoin depois que a conexão é estabelecida, mas este processo pode não estar completo ainda. - - - Watch-only: - Monitorados: - - - Available: - Disponível: - - - Your current spendable balance - Seu saldo atual spendable - - - Pending: - Pendente: - - - Total of transactions that have yet to be confirmed, and do not yet count toward the spendable balance - Total de transações que ainda têm de ser confirmados, e ainda não contam para o equilíbrio spendable - - - Immature: - Imaturo: - - - Mined balance that has not yet matured - Saldo minerado que ainda não maturou - - - Balances - Saldos - - - Total: - Total: - - - Your current total balance - Seu saldo total atual - - - Your current balance in watch-only addresses - Sua balança atual em endereços apenas visualizados - - - Spendable: - Disponível: - - - Recent transactions - Transações recentes - - - Unconfirmed transactions to watch-only addresses - Transações não confirmadas de um endereço monitorado - - - Mined balance in watch-only addresses that has not yet matured - Saldo minerado de endereço monitorado ainda não foi implementado - - - Current total balance in watch-only addresses - Balanço total em endereços monitorados - - - - PaymentServer - - URI handling - Manipulação de URI - - - Invalid payment address %1 - Endereço de pagamento inválido %1 - - - Payment request rejected - Solicitação de pagamento rejeitada - - - Payment request is not initialized. - Pedido de pagamento não é inicializado. - - - Requested payment amount of %1 is too small (considered dust). - Valor do pagamento solicitado de %1 é muito pequeno (Considerado poeira). - - - Payment request error - Erro no pedido de pagamento - - - Cannot start bitcoin: click-to-pay handler - Não foi possível iniciar bitcoin: manipulador clique-para-pagar - - - Payment request fetch URL is invalid: %1 - URL de cobrança é inválida: %1 - - - Payment request file handling - Manipulação de arquivo de cobrança - - - Payment request expired. - Pedido de pagamento expirado. - - - Unverified payment requests to custom payment scripts are unsupported. - Cobrança não verificada para scripts de pagamento personalizados não é suportado. - - - Invalid payment request. - Pedido de pagamento inválido. - - - Refund from %1 - Reembolso de %1 - - - Payment request %1 is too large (%2 bytes, allowed %3 bytes). - Pedido de pagamento %1 é muito grande (%2 bytes, permitido %3 bytes). - - - Payment request DoS protection - Pagamento requer proteção DoS - - - Error communicating with %1: %2 - Erro na comunicação com %1: %2 - - - Payment request cannot be parsed! - Requisição de pagamento não pode ser analisado! - - - Bad response from server %1 - Resposta incorreta do servidor %1 - - - Payment acknowledged - Pagamento reconhecido - - - Network request error - Erro de solicitação de rede - - - - PeerTableModel - - User Agent - User Agent - - - Node/Service - Nó/Serviço - - - Ping Time - Ping - - - - QObject - - Amount - Quantidade - - - Enter a Bitcoin address (e.g. %1) - Informe um endereço Bitcoin (ex: %1) - - - %1 d - %1 d - - - %1 h - %1 h - - - %1 m - %1 m - - - %1 s - %1 s - - - None - Nenhum - - - N/A - N/A - - - %1 ms - %1 ms - - - - QRImageWidget - - &Save Image... - &Salvar imagem - - - &Copy Image - &Copiar Imagem - - - Save QR Code - Salvar código QR - - - PNG Image (*.png) - PNG Imagem (*.png) - - - - RPCConsole - - Client name - Nome do cliente - - - N/A - N/A - - - Client version - Versão do cliente - - - &Information - &Informação - - - Debug window - Janela de depuração - - - General - Geral - - - Using OpenSSL version - Versão do OpenSSL - - - Using BerkeleyDB version - Versão do BerkeleyDB - - - Startup time - Horário de inicialização - - - Network - Rede - - - Name - Nome - - - Number of connections - Número de conexões - - - Block chain - Corrente de blocos - - - Current number of blocks - Quantidade atual de blocos - - - Open the Bitcoin Core debug log file from the current data directory. This can take a few seconds for large log files. - Abrir o arquivo de log de depuração do Bitcoin na pasta de dados atual. Isso pode demorar para arquivos grandes. - - - Received - Recebido - - - Sent - Enviado - - - &Peers - &Pares - - - Select a peer to view detailed information. - Selecione um cliente para ver informações detalhadas. - - - Direction - Direção - - - Version - Versão - - - User Agent - User Agent - - - Services - Serviços - - - Starting Height - Altura inicial - - - Sync Height - Altura sincronizada - - - Ban Score - Banir pontuação - - - Connection Time - Tempo de conexão - - - Last Send - Ultimo Envio - - - Last Receive - Ultimo Recebido - - - Bytes Sent - Bytes Enviados - - - Bytes Received - Bytes recebidos - - - Ping Time - Ping - - - Last block time - Horário do último bloco - - - &Open - &Abrir - - - &Console - &Console - - - &Network Traffic - Tráfico de Rede - - - &Clear - &Limpar - - - Totals - Totais - - - In: - Entrada: - - - Out: - Saída: - - - Build date - Data do 'build' - - - Debug log file - Arquivo de log de Depuração - - - Clear console - Limpar console - - - Welcome to the Bitcoin Core RPC console. - Bem vindo ao console de RPC do Bitcoin. - - - Use up and down arrows to navigate history, and <b>Ctrl-L</b> to clear screen. - Use as setas para cima e para baixo para navegar pelo histórico, e <b>Ctrl-L</b> para limpar a tela. - - - Type <b>help</b> for an overview of available commands. - Digite <b>help</b> para uma visão geral dos comandos disponíveis. - - - %1 B - %1 B - - - %1 KB - %1 KB - - - %1 MB - %1 MB - - - %1 GB - %1 GB - - - via %1 - por %1 - - - never - nunca - - - Inbound - Entrada - - - Outbound - Saída - - - Unknown - Desconhecido - - - Fetching... - Buscando... - - - - ReceiveCoinsDialog - - &Amount: - Qu&antia: - - - &Label: - &Rótulo: - - - &Message: - &Mensagem - - - Reuse one of the previously used receiving addresses. Reusing addresses has security and privacy issues. Do not use this unless re-generating a payment request made before. - Reutilize um dos endereços de recebimento anteriormente utilizados. Reutilizar um endereço implica em problemas com segurança e privacidade. Não reutilize a menos que esteja refazendo uma cobrança já feita anteriormente. - - - R&euse an existing receiving address (not recommended) - R&eutilize um endereço de recebimento (não recomendado) - - - An optional message to attach to the payment request, which will be displayed when the request is opened. Note: The message will not be sent with the payment over the Bitcoin network. - Uma mensagem opcional que será anexada na cobrança e será mostrada quando ela for aberta. Nota: A mensagem não será enviada com o pagamento pela rede Bitcoin. - - - An optional label to associate with the new receiving address. - Um marcador opcional para associar ao novo endereço de recebimento. - - - Use this form to request payments. All fields are <b>optional</b>. - Use esse formulário para fazer cobranças. Todos os campos são <b>opcionais</b>. - - - An optional amount to request. Leave this empty or zero to not request a specific amount. - Uma quantia opcional para cobrar. Deixe vazio ou em branco se o pagador puder especificar a quantia. - - - Clear all fields of the form. - Limpa todos os campos do formulário. - - - Clear - Limpar - - - Requested payments history - Histórico de cobranças - - - &Request payment - &Requisitar Pagamento - - - Show the selected request (does the same as double clicking an entry) - Mostra a cobrança selecionada (o mesmo que clicar duas vezes em um registro) - - - Show - Mostrar - - - Remove the selected entries from the list - Remove o registro selecionado da lista - - - Remove - Remover - - - Copy label - Copiar rótulo - - - Copy message - Copiar mensagem - - - Copy amount - Copiar quantia - - - - ReceiveRequestDialog - - QR Code - Código QR - - - Copy &URI - Copiar &URI - - - Copy &Address - &Copiar Endereço - - - &Save Image... - &Salvar Imagem... - - - Request payment to %1 - Requisitar pagamento para %1 - - - Payment information - Informação de pagamento - - - URI - URI - - - Address - Endereço - - - Amount - Quantidade - - - Label - Rótulo - - - Message - Mensagem - - - Resulting URI too long, try to reduce the text for label / message. - URI resultante muito longa. Tente reduzir o texto do rótulo ou da mensagem. - - - Error encoding URI into QR Code. - Erro ao codigicar o URI em código QR - - - - RecentRequestsTableModel - - Date - Data - - - Label - Rótulo - - - Message - Mensagem - - - Amount - Quantidade - - - (no label) - (Sem rótulo) - - - (no message) - (sem mensagem) - - - (no amount) - (sem quantia especificada) - - - - SendCoinsDialog - - Send Coins - Enviar moedas - - - Coin Control Features - Opções de controle de moeda - - - Inputs... - Entradas... - - - automatically selected - automaticamente selecionado - - - Insufficient funds! - Saldo insuficiente! - - - Quantity: - Quantidade: - - - Bytes: - Bytes: - - - Amount: - Quantia: - - - Priority: - Prioridade: - - - Fee: - Taxa: - - - After Fee: - Depois da taxa: - - - Change: - troco - - - If this is activated, but the change address is empty or invalid, change will be sent to a newly generated address. - Se isso estiver ativo e o endereço de troco estiver vazio ou inválido, o troco será enviado a um novo endereço gerado na hora. - - - Custom change address - Endereço específico de troco - - - Transaction Fee: - Taxa de transação: - - - Choose... - Escolher - - - collapse fee-settings - colapso Taxa de definições - - - per kilobyte - por kilobyte - - - 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. - Se a taxa personalizada for definida em 1000 satoshis e a transação tiver somente 250 bytes, então "por kilobyte" somente paga 250 satoshis de taxa, enquanto "pelo menos" paga 1000 satoshis. Se a transação for maior que 1 kilobyte, ambos pagam por kilobyte. - - - Hide - Ocultar - - - total at least - pelo menos - - - 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. - Pagando apenas a taxa mínima é bom, desde que haja pouco volume de transações. Mas esteja ciente de que isso pode acabar em uma transação nunca confirmanda uma vez que há mais demanda por transações do que a rede pode processar. - - - (read the tooltip) - (Leia o popup) - - - Recommended: - Recomendado: - - - Custom: - Personalizado: - - - (Smart fee not initialized yet. This usually takes a few blocks...) - (Smart fee não iniciado. Isso requer alguns blocos...) - - - Confirmation time: - Tempo de confirmação: - - - normal - normal - - - fast - rápido - - - Send as zero-fee transaction if possible - Enviar sem taxa de transação se possível - - - (confirmation may take longer) - (confirmação pode demorar) - - - Send to multiple recipients at once - Enviar para vários destinatários de uma só vez - - - Add &Recipient - Adicionar destinatário - - - Clear all fields of the form. - Limpar todos os campos do formulário. - - - Dust: - Poeira: - - - Clear &All - Limpar Tudo - - - Balance: - Saldo: - - - Confirm the send action - Confirmar o envio - - - S&end - Enviar - - - Confirm send coins - Confirmar envio de moedas - - - %1 to %2 - %1 para %2 - - - Copy quantity - Copiar quantidade - - - Copy amount - Copiar quantia - - - Copy fee - Copiar taxa - - - Copy after fee - Copia pós-taxa - - - Copy bytes - Copiar bytes - - - Copy priority - Copia prioridade - - - Copy change - Copia alteração - - - or - ou - - - The amount to pay must be larger than 0. - A quantidade a ser paga precisa ser maior que 0. - - - The amount exceeds your balance. - A quantidade excede seu saldo. - - - The total exceeds your balance when the %1 transaction fee is included. - O total excede seu saldo quando uma taxa de transação de %1 é incluída. - - - Transaction creation failed! - A criação de transação falhou! - - - 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. - A transação foi rejeitada! Isso pode acontecer se alguns bitcoins na sua carteira já foram gastos em outro local, por exemplo se você tiver uma cópia do wallet.dat e os bitcoins tiverem sido gastos na cópia mas não marcados como gastos aqui ainda. - - - A fee higher than %1 is considered an absurdly high fee. - Uma taxa maior que %1 é considerada uma taxa absurdamente alto. - - - Payment request expired. - Pedido de pagamento expirado. - - - Estimated to begin confirmation within %n block(s). - Confirmação estimada em %n bloco.Confirmação estimada em %n blocos. - - - Pay only the minimum fee of %1 - Pagar somente a taxa mínima de %1 - - - The recipient address is not valid. Please recheck. - O endereço do destinatário é inválido. Favor confirmar. - - - Duplicate address found: addresses should only be used once each. - Endereço duplicado encontrado: Endereços devem ser usados somente uma vez cada. - - - Warning: Invalid Bitcoin address - Atenção: endereço de Bitcoin inválido - - - (no label) - (Sem rótulo) - - - Warning: Unknown change address - Atenção: endereço de troco desconhecido - - - Copy dust - Copiar poeira - - - Are you sure you want to send? - Tem certeza que quer enviar? - - - added as transaction fee - Adicionado como taxa de transação - - - - SendCoinsEntry - - A&mount: - Q&uantidade: - - - Pay &To: - Pagar &Para: - - - Enter a label for this address to add it to your address book - Digite um rótulo para este endereço para adicioná-lo ao catálogo de endereços - - - &Label: - &Rótulo: - - - Choose previously used address - Escolher endereço usado anteriormente - - - This is a normal payment. - Este é um pagamento normal. - - - The Bitcoin address to send the payment to - Endereço que enviará o pagamento - - - Alt+A - Alt+A - - - Paste address from clipboard - Colar o endereço da área de transferência - - - Alt+P - Alt+P - - - Remove this entry - Remover esta entrada - - - The fee will be deducted from the amount being sent. The recipient will receive less bitcoins than you enter in the amount field. If multiple recipients are selected, the fee is split equally. - A taxa será deduzida da quantia sendo enviada. O destinatário receberá menos bitcoins do que você colocou no campo de quantidade. Se varios destinatários estão selecionados, a taxa é dividida igualmente. - - - S&ubtract fee from amount - &Retirar taxa da quantia - - - Message: - Mensagem: - - - This is an unauthenticated payment request. - Esta é uma cobrança não autenticada. - - - This is an authenticated payment request. - Esta é uma cobrança autenticada. - - - Enter a label for this address to add it to the list of used addresses - Digite um rótulo para este endereço para adicioná-lo no catálogo - - - A message that was attached to the bitcoin: URI which will be stored with the transaction for your reference. Note: This message will not be sent over the Bitcoin network. - A mensagem que foi anexada ao bitcoin: URI na qual será gravada na transação para sua referência. Nota: Essa mensagem não será gravada publicamente na rede Bitcoin. - - - Pay To: - Pague Para: - - - Memo: - Memorizar: - - - - ShutdownWindow - - Bitcoin Core is shutting down... - Bitcoin está desligando... - - - Do not shut down the computer until this window disappears. - Não desligue o computador até que esta janela desapareça. - - - - SignVerifyMessageDialog - - Signatures - Sign / Verify a Message - Assinaturas - Assinar / Verificar uma mensagem - - - &Sign Message - &Assinar mensagem - - - The Bitcoin address to sign the message with - O enderesso Bitcoin que assinará a mensagem - - - Choose previously used address - Escolha um endereço usado anteriormente - - - Alt+A - Alt+A - - - Paste address from clipboard - Colar o endereço da área de transferência - - - Alt+P - Alt+P - - - Enter the message you want to sign here - Entre a mensagem que você quer assinar aqui - - - Signature - Assinatura - - - Copy the current signature to the system clipboard - Copiar a assinatura para a área de transferência do sistema - - - Sign the message to prove you own this Bitcoin address - Assinar mensagem para provar que você é dono deste endereço Bitcoin - - - Sign &Message - Assinar &mensagem - - - Reset all sign message fields - Limpar todos os campos de assinatura da mensagem - - - Clear &All - Limpar Tudo - - - &Verify Message - &Verificar mensagem - - - The Bitcoin address the message was signed with - O enderesso Bitcoin que assionou a mesnagem - - - Verify the message to ensure it was signed with the specified Bitcoin address - Verificar mensagem para se assegurar que ela foi assinada pelo dono de um endereço Bitcoin específico. - - - Verify &Message - Verificar &mensagem - - - Reset all verify message fields - Limpar todos os campos de assinatura da mensagem - - - Click "Sign Message" to generate signature - Clique em "Assinar mensagem" para gerar a assinatura - - - The entered address is invalid. - O endereço fornecido é inválido. - - - Please check the address and try again. - Por favor, verifique o endereço e tente novamente. - - - The entered address does not refer to a key. - O endereço fornecido não se refere a uma chave. - - - Wallet unlock was cancelled. - Desbloqueamento da Carteira foi cancelado. - - - Private key for the entered address is not available. - A chave privada para o endereço fornecido não está disponível. - - - Message signing failed. - Assinatura da mensagem falhou. - - - Message signed. - Mensagem assinada. - - - The signature could not be decoded. - A assinatura não pode ser decodificada. - - - Please check the signature and try again. - Por favor, verifique a assinatura e tente novamente. - - - The signature did not match the message digest. - A assinatura não corresponde ao "resumo da mensagem". - - - Message verification failed. - Verificação da mensagem falhou. - - - Message verified. - Mensagem verificada. - - - - SplashScreen - - Bitcoin Core - Bitcoin - - - The Bitcoin Core developers - Programadores do Bitcoin - - - [testnet] - [testnet] - - - - TrafficGraphWidget - - KB/s - KB/s - - - - TransactionDesc - - Open until %1 - Aberto até %1 - - - conflicted - em conflito - - - %1/offline - %1/offline - - - %1/unconfirmed - %1/não confirmadas - - - %1 confirmations - %1 confirmações - - - Status - Status - - - , broadcast through %n node(s) - , difundir atráves de %n nó, difundir atráves de %n nós - - - Date - Data - - - Source - Fonte - - - Generated - Gerados - - - From - De - - - To - Para - - - own address - seu próprio endereço - - - watch-only - monitorado - - - label - rótulo - - - Credit - Crédito - - - matures in %n more block(s) - matura em mais %n blocomatura em mais %n blocos - - - not accepted - não aceito - - - Debit - Débito - - - Total debit - Débito total - - - Total credit - Credito total - - - Transaction fee - Taxa de transação - - - Net amount - Valor líquido - - - Message - Mensagem - - - Comment - Comentário - - - Transaction ID - ID da transação - - - Merchant - Mercador - - - Generated coins must mature %1 blocks before they can be spent. When you generated this block, it was broadcast to the network to be added to the block chain. If it fails to get into the chain, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - Bitcoins recém minerados precisam aguardar %1 blocos antes de serem gastos. Quando o bloco foi gerado, ele foi disseminado pela rede para ser adicionado à blockchain. Se ele falhar em ser inserido na cadeia, seu estado será modificado para "não aceito" e ele não poderá ser gasto. Isso pode acontecer eventualmente quando blocos são gerados quase que simultaneamente. - - - Debug information - Informação de depuração - - - Transaction - Transação - - - Inputs - Entradas - - - Amount - Quantidade - - - true - verdadeiro - - - false - falso - - - , has not been successfully broadcast yet - , ainda não foi propagada na rede com sucesso. - - - Open for %n more block(s) - Abrir para mais %n blocoAbrir para mais %n blocos - - - unknown - desconhecido - - - - TransactionDescDialog - - Transaction details - Detalhes da transação - - - This pane shows a detailed description of the transaction - Este painel mostra uma descrição detalhada da transação - - - - TransactionTableModel - - Date - Data - - - Type - Tipo - - - Immature (%1 confirmations, will be available after %2) - Recém-criado (%1 confirmações, disponível somente após %2) - - - Open for %n more block(s) - Abrir para mais %n blocoAbrir para mais %n blocos - - - Open until %1 - Aberto até %1 - - - Confirmed (%1 confirmations) - Confirmado (%1 confirmações) - - - This block was not received by any other nodes and will probably not be accepted! - Este bloco não foi recebido por nenhum outro participante da rede e provavelmente não será aceito! - - - Generated but not accepted - Gerado mas não aceito - - - Offline - Offline - - - Label - Rótulo - - - Unconfirmed - Não confirmado - - - Confirming (%1 of %2 recommended confirmations) - Confirmando (%1 de %2 confirmações recomendadas) - - - Conflicted - Conflitou - - - Received with - Recebido - - - Received from - Recebido - - - Sent to - Enviado - - - Payment to yourself - Pagamento para você mesmo - - - Mined - Minerado - - - watch-only - monitorado - - - (n/a) - (n/a) - - - Transaction status. Hover over this field to show number of confirmations. - Status da transação. Passe o mouse sobre este campo para mostrar o número de confirmações. - - - Date and time that the transaction was received. - Data e hora em que a transação foi recebida. - - - Type of transaction. - Tipo de transação. - - - Whether or not a watch-only address is involved in this transaction. - Mostrar ou não endereços Bitcoin na lista de transações. - - - Amount removed from or added to balance. - Quantidade debitada ou creditada ao saldo. - - - - TransactionView - - All - Todos - - - Today - Hoje - - - This week - Esta semana - - - This month - Este mês - - - Last month - Mês passado - - - This year - Este ano - - - Range... - Intervalo... - - - Received with - Recebido - - - Sent to - Enviado - - - To yourself - Para você mesmo - - - Mined - Minerado - - - Other - Outro - - - Enter address or label to search - Procure um endereço ou rótulo - - - Min amount - Quantidade mínima - - - Copy address - Copiar endereço - - - Copy label - Copiar rótulo - - - Copy amount - Copiar quantia - - - Copy transaction ID - Copiar ID da transação - - - Edit label - Editar rótulo - - - Show transaction details - Mostrar detalhes da transação - - - Export Transaction History - Exportar Histórico de Transação - - - Watch-only - Monitorado - - - Exporting Failed - Exportação Falhou - - - There was an error trying to save the transaction history to %1. - Ocorreu um erro ao tentar salvar o histórico de transação em %1. - - - Exporting Successful - Exportação feita com sucesso - - - The transaction history was successfully saved to %1. - O histórico de transação foi gravado com sucesso em %1. - - - Comma separated file (*.csv) - Arquivo separado por vírgulas (*. csv) - - - Confirmed - Confirmado - - - Date - Data - - - Type - Tipo - - - Label - Rótulo - - - Address - Endereço - - - ID - ID - - - Range: - Intervalo: - - - to - para - - - - UnitDisplayStatusBarControl - - Unit to show amounts in. Click to select another unit. - Unidade para mostrar. Clique para selecionar outra unidade. - - - - WalletFrame - - No wallet has been loaded. - Nenhuma carteira foi carregada. - - - - WalletModel - - Send Coins - Send Coins - - - - WalletView - - &Export - &Exportar - - - Export the data in the current tab to a file - Exportar os dados na aba atual para um arquivo - - - Backup Wallet - Fazer cópia de segurança da Carteira - - - Wallet Data (*.dat) - Dados da Carteira (*.dat) - - - Backup Failed - Cópia de segurança Falhou - - - There was an error trying to save the wallet data to %1. - Ocorreu um erro ao tentar salvar os dados da carteira em %1. - - - The wallet data was successfully saved to %1. - Os dados da carteira foram salvos com sucesso em %1. - - - Backup Successful - Backup feito com sucesso - - - - bitcoin-core - - Options: - Opções: - - - Specify data directory - Especificar o diretório de dados - - - Connect to a node to retrieve peer addresses, and disconnect - Conectar a um nó para receber endereços de participantes, e desconectar. - - - Specify your own public address - Especificar seu próprio endereço público - - - Accept command line and JSON-RPC commands - Aceitar linha de comando e comandos JSON-RPC - - - Run in the background as a daemon and accept commands - Rodar em segundo plano como serviço e aceitar comandos - - - Use the test network - Usar rede de teste - - - Accept connections from outside (default: 1 if no -proxy or -connect) - Aceitar conexões externas (padrão: 1 se opções -proxy ou -connect não estiverem presentes) - - - Bind to given address and always listen on it. Use [host]:port notation for IPv6 - Vincular ao endereço fornecido e sempre escutar nele. Use a notação [host]:port para IPv6 - - - Delete all wallet transactions and only recover those parts of the blockchain through -rescan on startup - Apaga todas as transações da carteira e somente recupera essas partes da blockchain usando o comando -rescan na inicialização - - - Distributed under the MIT software license, see the accompanying file COPYING or <http://www.opensource.org/licenses/mit-license.php>. - Distribuido sob a licença MIT software license. Veja os termos em <http://www.opensource.org/licenses/mit-license.php>. - - - Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) - Executa um comando quando uma transação da carteira mudar (%s no comando será substituído por TxID) - - - Reduce storage requirements by pruning (deleting) old blocks. This mode disables wallet support and is incompatible with -txindex. Warning: Reverting this setting requires re-downloading the entire blockchain. (default: 0 = disable pruning blocks, >%u = target size in MiB to use for block files) - Reduz o armazenamento requerido prunando (apagando) blocos antigos. Este modo desativa o suporte a carteira e é incompatível com -txindex. Aviso: Reverter essa opção requer re-baixar o blockchain inteiro. (padrão: 0 = desativado, >%u = Tamanho em mega para os arquivos de bloco) - - - Set the number of script verification threads (%u to %d, 0 = auto, <0 = leave that many cores free, default: %d) - Define o número de threads de verificação de script (%u a %d, 0 = automático, <0 = número de cores deixados livres, padrão: %d) - - - This is a pre-release test build - use at your own risk - do not use for mining or merchant applications - Este pode ser um build de teste pré-lançamento - use por sua conta e risco - não use para mineração ou aplicações de comércio. - - - Unable to bind to %s on this computer. Bitcoin Core is probably already running. - Impossível ouvir em %s neste computador. Provavelmente o Bitcoin já está sendo executado. - - - Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. - Atenção: valor de -paytxfee escolhido é muito alto! Este é o valor da taxa de transação que você irá pagar se enviar a transação. - - - Warning: The network does not appear to fully agree! Some miners appear to be experiencing issues. - Atenção: A rede não parecem concordar plenamente! Alguns mineiros parecem estar enfrentando problemas. - - - Warning: We do not appear to fully agree with our peers! You may need to upgrade, or other nodes may need to upgrade. - Atenção: Nós não parecemos concordar plenamente com nossos colegas! Você pode precisar atualizar ou outros nós podem precisar atualizar. - - - Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. - Atenção: erro ao ler arquivo wallet.dat! Todas as chaves foram lidas corretamente, mas dados de transações e do catálogo de endereços podem estar faltando ou incorretos. - - - 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. - Atenção: wallet.dat corrompido, dados recuperados! Arquivo wallet.dat original salvo como wallet.{timestamp}.bak em %s; se seu saldo ou transações estiverem incorretos, você deve restaurar o backup. - - - Whitelist peers connecting from the given netmask or IP address. Can be specified multiple times. - Lista Branca pares de ligação da máscara de rede dado ou o endereço IP . Pode ser especificado várias vezes. - - - (default: 1) - (padrão: 1) - - - <category> can be: - <category> pode ser: - - - Attempt to recover private keys from a corrupt wallet.dat - Tentar recuperar chaves privadas de um arquivo wallet.dat corrompido - - - Block creation options: - Opções de criação de blocos: - - - Connect only to the specified node(s) - Conectar apenas a cliente(s) específico(s) - - - Connection options: - Opções de conexão: - - - Corrupted block database detected - Detectado Banco de dados de blocos corrompido - - - Debugging/Testing options: - Opções de depuração/teste: - - - Do not load the wallet and disable wallet RPC calls - Não carrega a carteira e desabilita as chamadas RPC para a carteira - - - Do you want to rebuild the block database now? - Você quer reconstruir o banco de dados de blocos agora? - - - Error initializing block database - Erro ao inicializar banco de dados de blocos - - - Error initializing wallet database environment %s! - Erro ao inicializar ambiente de banco de dados de carteira %s! - - - Error loading block database - Erro ao carregar banco de dados de blocos - - - Error opening block database - Erro ao abrir banco de dados de blocos - - - Error: Disk space is low! - Erro: Espaço em disco insuficiente! - - - Failed to listen on any port. Use -listen=0 if you want this. - Falha ao escutar em qualquer porta. Use -listen=0 se você quiser isso. - - - If <category> is not supplied, output all debugging information. - Se <category> não for informada, registrar toda informação de depuração. - - - Importing... - Importando... - - - Incorrect or no genesis block found. Wrong datadir for network? - Bloco gênese incorreto ou não encontrado. Datadir errado para a rede? - - - Invalid -onion address: '%s' - Endereço -onion inválido: '%s' - - - Not enough file descriptors available. - Decriptadores de arquivos disponíveis insuficientes. - - - Only connect to nodes in network <net> (ipv4, ipv6 or onion) - Somente conectar a clientes na rede <net> (ipv4, ipv6 ou onion) - - - Prune cannot be configured with a negative value. - O modo Prune não pode ser configurado com um valor negativo. - - - Prune mode is incompatible with -txindex. - O modo Prune é incompatível com -txindex. - - - Set database cache size in megabytes (%d to %d, default: %d) - Define o tamanho do cache do banco de dados em megabytes (%d para %d, padrão: %d) - - - Set maximum block size in bytes (default: %d) - Define o tamanho máximo de cada bloco em bytes (padrão: %d) - - - Specify wallet file (within data directory) - Especifique o arquivo da carteira (dentro do diretório de dados) - - - Use UPnP to map the listening port (default: %u) - Use UPnP para mapear a porta de entrada (padrão: %u) - - - Verifying blocks... - Verificando blocos... - - - Verifying wallet... - Verificando carteira... - - - Wallet %s resides outside data directory %s - Carteira %s reside fora do diretório de dados %s - - - Wallet options: - Opções da carteira: - - - Warning: This version is obsolete; upgrade required! - Atenção: Essa versão está obsoleta, atualização necessária! - - - You need to rebuild the database using -reindex to change -txindex - Você precisa reconstruir o banco de dados utilizando -reindex - - - Imports blocks from external blk000??.dat file - Importar blocos de um arquivo externo blk000??.dat - - - 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 - Permitir conexões JSON-RPC de uma fonte específica. Válido para um único ip (ex. 1.2.3.4), até uma rede/máscara (ex. 1.2.3.4/255.255.255.0) ou uma rede/CIDR (ex. 1.2.3.4/24). Esta opção pode ser usada múltiplas vezes - - - An error occurred while setting up the RPC address %s port %u for listening: %s - Um erro ocorreu enquanto configurando o endereço RPC %s porta %u para escuta: %s - - - Bind to given address and whitelist peers connecting to it. Use [host]:port notation for IPv6 - Vincular ao endereço fornecido e sempre escutar nele. Use a notação [host]:port para IPv6 - - - Cannot obtain a lock on data directory %s. Bitcoin Core is probably already running. - Não foi possível obter acesso exclusivo ao diretório de dados %s. Provavelmente Bitcoin já está sendo executado. - - - Discover own IP addresses (default: 1 when listening and no -externalip or -proxy) - Descobrir o próprio IP (padrão: 1 enquanto aguardando conexões e sem -externalip ou -proxy) - - - Error: Listening for incoming connections failed (listen returned error %s) - Erro: Aceitar conexões de entrada falhou (retornou erro %s) - - - Execute command when a relevant alert is received or we see a really long fork (%s in cmd is replaced by message) - Executa um comando quando um alerta relevante é recebido ou vemos uma longa segregação (%s em cmd é substituído pela mensagem) - - - Fees (in BTC/Kb) smaller than this are considered zero fee for relaying (default: %s) - Taxas (em BTC/Kb) menores do que este valor são consideradas inexistentes para divulgação (padrão: %s) - - - Prune configured below the minimum of %d MB. Please use a higher number. - Prunagem configurada abaixo do mínimo de %d MB. Use um número maior. - - - Set maximum size of high-priority/low-fee transactions in bytes (default: %d) - Define o tamanho máximo de alta-prioridade por taxa baixa nas transações em bytes (padrão: %d) - - - 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 - - Para usar o bitcoind, ou a opção -server do bitcoin-qt, você deve definir rpcpassword no arquivo de configuração: -%s -É recomendado que use a seguinte senha randômica: -rpcuser=bitcoinrpc -rpcpassword=%s -(você não precisa lembrar esta senha) -O usuário e senha NÃO DEVEM ser os mesmos. -Se o arquivo não existir, crie com permissão de proprietário criador somente. -É também recomendado definir a opção alertnotify se deseja ser notificado de problemas; -por exemplo: alertnotify=echo %%s | mail -s "Alerta do Bitcoin" admin@foo.com.br - - - - You need to rebuild the database using -reindex to go back to unpruned mode. This will redownload the entire blockchain - Você precisa reconstruir o banco de dados usando -reindex para sair do modo prune. Isso irá rebaixar todo o blockchain. - - - (default: %u) - (padrão: %u) - - - Activating best chain... - Ativando a melhor sequência... - - - Cannot resolve -whitebind address: '%s' - Impossível resolver endereço -whitebind: '%s' - - - Choose data directory on startup (default: 0) - Escolha o diretório de dados na inicialização (padrão: 0) - - - Connect through SOCKS5 proxy - Connecte-se através de um proxy SOCKS5 - - - Copyright (C) 2009-%i The Bitcoin Core Developers - Copyright (C) 2009-%i Desenvolvedores Bitcoin Core - - - Could not parse -rpcbind value %s as network address - Impossível interpretar o valor -rpcbind %s como um endereço da rede - - - Error loading wallet.dat: Wallet requires newer version of Bitcoin Core - Erro ao carregar wallet.dat: A carteira requer a nova versão do Bitcoin - - - Error reading from database, shutting down. - Erro ao ler o banco de dados. Finalizando. - - - Error: Unsupported argument -tor found, use -onion. - Erro: Argumento não suportado -tor, use -onion. - - - Fee (in BTC/kB) to add to transactions you send (default: %s) - Taxa (em BTC/kB) a adicionar nas transações que você envia (padrão: %s) - - - Information - Informação - - - Invalid amount for -maxtxfee=<amount>: '%s' - Quantidade inválida para -maxtxfee=<quantidade>: '%s' - - - Invalid amount for -minrelaytxfee=<amount>: '%s' - Quantidade inválida para -minrelaytxfee=<amount>: '%s' - - - Invalid amount for -mintxfee=<amount>: '%s' - Valor inválido para -mintxfee=<amount>: '%s' - - - Invalid amount for -paytxfee=<amount>: '%s' (must be at least %s) - Valor inválido para -paytxfee=<amount>: '%s' (precisa ser no mínimo %s) - - - Invalid netmask specified in -whitelist: '%s' - Máscara de rede especificada em -whitelist: '%s' é inválida - - - Need to specify a port with -whitebind: '%s' - Necessário informar uma porta com -whitebind: '%s' - - - Node relay options: - Opções de relé nó : - - - Pruning blockstore... - Prunando os blocos existentes... - - - RPC SSL options: (see the Bitcoin Wiki for SSL setup instructions) - Opções RPC SSL: (veja o Bitcoin Wiki para instruções de configuração SSL) - - - RPC server options: - Opções do servidor RPC: - - - Send trace/debug info to console instead of debug.log file - Mandar informação de trace/debug para o console em vez de para o arquivo debug.log - - - Send transactions as zero-fee transactions if possible (default: %u) - Enviar transação sem taxa, se possível (padrão: %u) - - - Set SSL root certificates for payment request (default: -system-) - Define certificados SSL root para requisição de pagamento (padrão: -system-) - - - Set language, for example "de_DE" (default: system locale) - Escolher língua, por exemplo "de_DE" (padrão: localização do sistema) - - - Show all debugging options (usage: --help -help-debug) - Exibir todas opções de depuração (uso: --help -help-debug) - - - Show splash screen on startup (default: 1) - Mostrar tela inicial ao ligar (padrão: 1) - - - Shrink debug.log file on client startup (default: 1 when no -debug) - Encolher arquivo debug.log ao iniciar o cliente (padrão 1 se opção -debug não estiver presente) - - - Signing transaction failed - Assinatura de transação falhou - - - Start minimized - Inicializar minimizado - - - The transaction amount is too small to pay the fee - A quantidade da transação é pequena demais para pagar a taxa - - - This is experimental software. - Este é um software experimental. - - - Transaction amount too small - Quantidade da transação muito pequena. - - - Transaction amounts must be positive - As quantidades das transações devem ser positivas. - - - Transaction too large for fee policy - Transação muito grande para enviar sem taxa - - - Transaction too large - Transação muito larga - - - UI Options: - Opções da interface: - - - Unable to bind to %s on this computer (bind returned error %s) - Impossível se ligar a %s neste computador (bind retornou erro %s) - - - Use UPnP to map the listening port (default: 1 when listening) - Usar UPnP para mapear porta de escuta (padrão: 1 quando estiver escutando) - - - Username for JSON-RPC connections - Nome de usuário para conexões JSON-RPC - - - Wallet needed to be rewritten: restart Bitcoin Core to complete - Sua carteira precisou ser reescrita: favor reiniciar o Bitcoin para completar - - - Warning - Atenção - - - Zapping all transactions from wallet... - Aniquilando todas as transações da carteira... - - - on startup - ao iniciar - - - wallet.dat corrupt, salvage failed - wallet.dat corrompido, recuperação falhou - - - Password for JSON-RPC connections - Senha para conexões JSON-RPC - - - Execute command when the best block changes (%s in cmd is replaced by block hash) - Executa um comando quando o melhor bloco mudar (%s no comando será substituído pelo hash do bloco) - - - Upgrade wallet to latest format - Atualizar carteira para o formato mais recente - - - Rescan the block chain for missing wallet transactions - Re-escanear blocos procurando por transações perdidas da carteira - - - Use OpenSSL (https) for JSON-RPC connections - Usar OpenSSL (https) para conexões JSON-RPC - - - This help message - Exibe esta mensagem de ajuda - - - Allow DNS lookups for -addnode, -seednode and -connect - Permitir consultas DNS para -addnode, -seednode e -connect - - - Loading addresses... - Carregando endereços... - - - Error loading wallet.dat: Wallet corrupted - Erro ao carregar wallet.dat: Carteira corrompida - - - (default: %s) - (padrão: %s) - - - Acceptable ciphers (default: %s) - Cífras aceitas (padrão: %s) - - - Error loading wallet.dat - Erro ao carregar wallet.dat - - - Generate coins (default: %u) - Gerar moedas (padrão: %u) - - - How many blocks to check at startup (default: %u, 0 = all) - Quantos blocos devem ser checados ao iniciar (padrão: %u, 0 = todos) - - - Include IP addresses in debug output (default: %u) - Incluir endereço IP na saída de depuração (padrão: %u) - - - Invalid -proxy address: '%s' - Endereço -proxy inválido: '%s' - - - Listen for connections on <port> (default: %u or testnet: %u) - Aguardar por conexões na porta <port> (padrão: %u ou testnet: %u) - - - Prepend debug output with timestamp (default: %u) - Adiciona timestamp como prefixo no debug (default: %u) - - - Relay non-P2SH multisig (default: %u) - Retransmitir P2SH não multisig (default: %u) - - - Server certificate file (default: %s) - Arquivo de certificado do servidor (padrão: %s) - - - Server private key (default: %s) - Chave privada do servidor (padrão: %s) - - - Set minimum block size in bytes (default: %u) - Definir tamanho mínimo do bloco, em bytes (padrão: %u) - - - Specify configuration file (default: %s) - Especificar arquivo de configuração (padrão: %s) - - - Specify connection timeout in milliseconds (minimum: 1, default: %d) - Especificar tempo para desistência de conexões, em mili segundos (mínimo: 1, padrão: %d) - - - Specify pid file (default: %s) - Especificar aqrquivo pid (default: %s) - - - Unknown network specified in -onlynet: '%s' - Rede desconhecida especificada em -onlynet: '%s' - - - Cannot resolve -bind address: '%s' - Impossível encontrar o endereço -bind: '%s' - - - Cannot resolve -externalip address: '%s' - Impossível encontrar endereço -externalip: '%s' - - - Invalid amount for -paytxfee=<amount>: '%s' - Quantidade inválida para -paytxfee=<quantidade>: '%s' - - - Insufficient funds - Saldo insuficiente - - - Loading block index... - Carregando índice de blocos... - - - Add a node to connect to and attempt to keep the connection open - Adicionar um cliente para se conectar e tentar manter a conexão ativa - - - Loading wallet... - Carregando carteira... - - - Cannot downgrade wallet - Não é possível fazer downgrade da carteira - - - Cannot write default address - Não foi possível escrever no endereço padrão - - - Rescanning... - Re-escaneando... - - - Done loading - Carregamento terminado - - - Error - Erro - - - \ No newline at end of file diff --git a/src/qt/locale/bitcoin_pt_PT.ts b/src/qt/locale/bitcoin_pt_PT.ts deleted file mode 100644 index cfbaff7b3..000000000 --- a/src/qt/locale/bitcoin_pt_PT.ts +++ /dev/null @@ -1,3217 +0,0 @@ - - - AddressBookPage - - Right-click to edit address or label - Clique á direita para editar endereço ou rótulo - - - Create a new address - Criar um novo endereço - - - &New - &Novo - - - Copy the currently selected address to the system clipboard - Copiar o endereço selecionado para a área de transferência - - - &Copy - &Copiar - - - C&lose - F&echar - - - &Copy Address - &Copiar Endereço - - - Delete the currently selected address from the list - Apagar o endereço selecionado da lista - - - Export the data in the current tab to a file - Exportar os dados no separador actual para um ficheiro - - - &Export - &Exportar - - - &Delete - &Eliminar\ - - - Choose the address to send coins to - Escolha o endereço para o qual pretende enviar moedas - - - Choose the address to receive coins with - Escolha o endereço com o qual pretende receber moedas - - - C&hoose - Escol&her - - - Sending addresses - Endereços de envio - - - Receiving addresses - Endereços de depósito - - - These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins. - Estes são os seus endereços Bitcoin para enviar pagamentos. Verifique sempre o valor e o endereço de envio antes de enviar moedas. - - - These are your Bitcoin addresses for receiving payments. It is recommended to use a new receiving address for each transaction. - Estes são os seus endereços Bitcoin para receber pagamentos. É recomendado que utilize um endereço novo para cada transacção. - - - Copy &Label - Copiar &Rótulo - - - &Edit - &Editar - - - Export Address List - Exportar Lista de Endereços - - - Comma separated file (*.csv) - Ficheiro separado por vírgulas (*.csv) - - - Exporting Failed - A Exportação Falhou - - - There was an error trying to save the address list to %1. Please try again. - Houve um erro ao tentar a guardar a lista de endereços em %1. Por favor tente novamente. - - - - AddressTableModel - - Label - Rótulo - - - Address - Endereço - - - (no label) - (sem rótulo) - - - - AskPassphraseDialog - - Passphrase Dialog - Diálogo de frase de segurança - - - Enter passphrase - Insira a frase de segurança - - - New passphrase - Nova frase de segurança - - - Repeat new passphrase - Repita a nova frase de segurança - - - Encrypt wallet - Encriptar carteira - - - This operation needs your wallet passphrase to unlock the wallet. - A sua frase de segurança é necessária para desbloquear a carteira. - - - Unlock wallet - Desbloquear carteira - - - This operation needs your wallet passphrase to decrypt the wallet. - A sua frase de segurança é necessária para desencriptar a carteira. - - - Decrypt wallet - Desencriptar carteira - - - Change passphrase - Alterar frase de segurança - - - Confirm wallet encryption - Confirmar encriptação da carteira - - - Warning: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR BITCOINS</b>! - Atenção: Se encriptar a carteira e perder a sua senha irá <b>PERDER TODOS OS SEUS BITCOINS</b>! - - - Are you sure you wish to encrypt your wallet? - Tem a certeza que deseja encriptar a carteira? - - - Bitcoin Core 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. - O cliente Bitcoin Core irá agora ser fechado para terminar o processo de encriptação. Recorde que a encriptação da sua carteira não protegerá totalmente os seus bitcoins de serem roubados por programas maliciosos que infectem o seu computador. - - - 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. - IMPORTANTE: Qualquer cópia de segurança da carteira anterior deverá ser substituída com o novo ficheiro de carteira, agora encriptado. Por razões de segurança, cópias de segurança não encriptadas tornar-se-ão inúteis assim que começar a usar a nova carteira encriptada. - - - Warning: The Caps Lock key is on! - Atenção: A tecla Caps Lock está activa! - - - Wallet encrypted - Carteira encriptada - - - 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>. - Escreva a nova frase de seguraça da sua carteira. <br/> Por favor, use uma frase de <b>10 ou mais caracteres aleatórios,</b> ou <b>oito ou mais palavras</b>. - - - Enter the old passphrase and new passphrase to the wallet. - Escreva a antiga frase de segurança da carteira, seguida da nova. - - - Wallet encryption failed - A encriptação da carteira falhou - - - Wallet encryption failed due to an internal error. Your wallet was not encrypted. - A encriptação da carteira falhou devido a um erro interno. A carteira não foi encriptada. - - - The supplied passphrases do not match. - As frases de segurança fornecidas não coincidem. - - - Wallet unlock failed - O desbloqueio da carteira falhou - - - The passphrase entered for the wallet decryption was incorrect. - A frase de segurança introduzida para a desencriptação da carteira estava incorreta. - - - Wallet decryption failed - A desencriptação da carteira falhou - - - Wallet passphrase was successfully changed. - A frase de segurança da carteira foi alterada com êxito. - - - - BitcoinGUI - - Sign &message... - Assinar &mensagem... - - - Synchronizing with network... - A sincronizar com a rede... - - - &Overview - Visã&o geral - - - Node - Nó - - - Show general overview of wallet - Mostrar visão geral da carteira - - - &Transactions - &Transações - - - Browse transaction history - Navegar pelo histórico de transações - - - E&xit - Fec&har - - - Quit application - Sair da aplicação - - - About &Qt - Sobre &Qt - - - Show information about Qt - Mostrar informação sobre Qt - - - &Options... - &Opções... - - - &Encrypt Wallet... - E&ncriptar Carteira... - - - &Backup Wallet... - &Guardar Carteira... - - - &Change Passphrase... - Mudar &Palavra-passe... - - - &Sending addresses... - A &enviar endereços... - - - &Receiving addresses... - A &receber endereços... - - - Open &URI... - Abrir &URI... - - - Bitcoin Core client - Cliente Bitcoin Core - - - Importing blocks from disk... - A importar blocos do disco... - - - Reindexing blocks on disk... - A reindexar blocos no disco... - - - Send coins to a Bitcoin address - Enviar moedas para um endereço bitcoin - - - Backup wallet to another location - Faça uma cópia de segurança da carteira para outra localização - - - Change the passphrase used for wallet encryption - Mudar a frase de segurança utilizada na encriptação da carteira - - - &Debug window - Janela de &depuração - - - Open debugging and diagnostic console - Abrir consola de diagnóstico e depuração - - - &Verify message... - &Verificar mensagem... - - - Bitcoin - Bitcoin - - - Wallet - Carteira - - - &Send - &Enviar - - - &Receive - &Receber - - - Show information about Bitcoin Core - Mostrar informação sobre Bitcoin Core - - - &Show / Hide - Mo&strar / Ocultar - - - Show or hide the main Window - Mostrar ou esconder a janela principal - - - Encrypt the private keys that belong to your wallet - Encriptar as chaves privadas que pertencem à sua carteira - - - Sign messages with your Bitcoin addresses to prove you own them - Assine mensagens com os seus endereços Bitcoin para provar que os controla - - - Verify messages to ensure they were signed with specified Bitcoin addresses - Verifique mensagens para assegurar que foram assinadas com o endereço Bitcoin especificado - - - &File - &Ficheiro - - - &Settings - &Configurações - - - &Help - &Ajuda - - - Tabs toolbar - Barra de separadores - - - Bitcoin Core - Bitcoin Core - - - Request payments (generates QR codes and bitcoin: URIs) - Solicitar pagamentos (gera códigos QR e URIs bitcoin:) - - - &About Bitcoin Core - &Sobre o Bitcoin Core - - - Modify configuration options for Bitcoin Core - Modificar opções de configuração de Bitcoin Core - - - Show the list of used sending addresses and labels - Mostrar a lista de rótulos e endereços de envio usados - - - Show the list of used receiving addresses and labels - Mostrar a lista de rótulos e endereços de receção usados - - - Open a bitcoin: URI or payment request - Abrir URI bitcoin: ou pedido de pagamento - - - &Command-line options - &Opções da linha de &comandos - - - Show the Bitcoin Core help message to get a list with possible Bitcoin command-line options - Mostrar a mensagem de ajuda do Bitcoin Core para obter uma lista com possíveis opções de linha de comandos - - - %n active connection(s) to Bitcoin network - %n ligação ativa à rede Bitcoin%n ligações ativas à rede Bitcoin - - - No block source available... - Nenhuma fonte de blocos disponível... - - - Processed %n block(s) of transaction history. - Processado %n bloco do histórico de transações.Processados %n blocos do histórico de transações. - - - %n hour(s) - %n hora%n horas - - - %n day(s) - %n dia%n dias - - - %n week(s) - %n semana%n semanas - - - %1 and %2 - %1 e %2 - - - %n year(s) - %n ano%n anos - - - %1 behind - %1 em atraso - - - Last received block was generated %1 ago. - O último bloco recebido foi gerado %1 atrás. - - - Transactions after this will not yet be visible. - Transações posteriores não serão visíveis por enquanto. - - - Error - Erro - - - Warning - Aviso - - - Information - Informação - - - Up to date - Atualizado - - - Catching up... - Recuperando o atraso... - - - Date: %1 - - Data: %1 - - - - Amount: %1 - - Quantia: %1 - - - - Type: %1 - - Tipo: %1 - - - - Label: %1 - - Rótulo: %1 - - - - Address: %1 - - Endereço: %1 - - - - Sent transaction - Transação enviada - - - Incoming transaction - Transação recebida - - - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - A carteira está <b>encriptada</b> e atualmente <b>desbloqueada</b> - - - Wallet is <b>encrypted</b> and currently <b>locked</b> - A carteira está <b>encriptada</b> e atualmente <b>bloqueada</b> - - - - ClientModel - - Network Alert - Alerta da Rede - - - - CoinControlDialog - - Coin Selection - Seleção de moeda - - - Quantity: - Quantidade: - - - Bytes: - Bytes: - - - Amount: - Quantia: - - - Priority: - Prioridade: - - - Fee: - Taxa: - - - Dust: - Lixo: - - - After Fee: - Depois da Taxa: - - - Change: - Troco: - - - (un)select all - (des)seleccionar todos - - - Tree mode - Modo árvore - - - List mode - Modo lista - - - Amount - Quantia - - - Received with label - Recebido com rótulo - - - Received with address - Recebido com endereço - - - Date - Data - - - Confirmations - Confirmados - - - Confirmed - Confirmada - - - Priority - Prioridade - - - Copy address - Copiar endereço - - - Copy label - Copiar rótulo - - - Copy amount - Copiar quantia - - - Copy transaction ID - Copiar ID da transação - - - Lock unspent - Bloquear não gastos - - - Unlock unspent - Desbloquear não gastos - - - Copy quantity - Copiar quantidade - - - Copy fee - Copiar taxa - - - Copy after fee - Copiar valor após taxa - - - Copy bytes - Copiar bytes - - - Copy priority - Copiar prioridade - - - Copy dust - Copiar lixo - - - Copy change - Copiar alteração - - - highest - muito alta - - - higher - mais alta - - - high - alta - - - medium-high - média-alta - - - medium - média - - - low-medium - média-baixa - - - low - baixa - - - lower - mais baixa - - - lowest - muito alta - - - (%1 locked) - (%1 bloqueados) - - - none - nenhum - - - This label turns red if the transaction size is greater than 1000 bytes. - Este rótulo fica vermelho se o tamanho da transacção exceder os 1000 bytes. - - - This label turns red if the priority is smaller than "medium". - Esta legenda fica vermelha se a prioridade for menor que "média". - - - This label turns red if any recipient receives an amount smaller than %1. - Este rótulo fica vermelho se algum recipiente receber uma quantia menor que %1. - - - Can vary +/- %1 satoshi(s) per input. - Pode variar +/- %1 satoshi(s) por entrada - - - yes - sim - - - no - não - - - This means a fee of at least %1 per kB is required. - Isto significa que uma taxa de pelo menos %1 por kB é necessária. - - - Can vary +/- 1 byte per input. - Pode variar +/- 1 byte por input. - - - Transactions with higher priority are more likely to get included into a block. - Transacções com uma prioridade mais alta têm uma maior probabilidade de serem incluídas num bloco. - - - (no label) - (sem rótulo) - - - change from %1 (%2) - troco de %1 (%2) - - - (change) - (troco) - - - - EditAddressDialog - - Edit Address - Editar Endereço - - - &Label - &Rótulo - - - The label associated with this address list entry - O rótulo associado com esta entrada no livro de endereços - - - The address associated with this address list entry. This can only be modified for sending addresses. - O endereço associado com o esta entrada no livro de endereços. Isto só pode ser modificado para endereços de saída. - - - &Address - E&ndereço - - - New receiving address - Novo endereço de entrada - - - New sending address - Novo endereço de saída - - - Edit receiving address - Editar endereço de entrada - - - Edit sending address - Editar endereço de saída - - - The entered address "%1" is already in the address book. - O endereço introduzido "%1" já se encontra no livro de endereços. - - - The entered address "%1" is not a valid Bitcoin address. - O endereço introduzido "%1" não é um endereço bitcoin válido. - - - Could not unlock wallet. - Impossível desbloquear carteira. - - - New key generation failed. - Falha ao gerar nova chave. - - - - FreespaceChecker - - A new data directory will be created. - Uma nova pasta de dados será criada. - - - name - nome - - - Directory already exists. Add %1 if you intend to create a new directory here. - A pasta já existe. Adicione %1 se pretender criar aqui uma nova pasta. - - - Path already exists, and is not a directory. - Caminho já existe, e não é uma pasta. - - - Cannot create data directory here. - Não pode ser criada uma pasta de dados aqui. - - - - HelpMessageDialog - - Bitcoin Core - Bitcoin Core - - - version - versão - - - (%1-bit) - (%1-bit) - - - About Bitcoin Core - Sobre o Bitcoin Core - - - Command-line options - Opções de linha de comandos - - - Usage: - Utilização: - - - command-line options - opções da linha de comandos - - - - Intro - - Welcome - Bem-vindo - - - Welcome to Bitcoin Core. - Bem-vindo ao Bitcoin Core. - - - As this is the first time the program is launched, you can choose where Bitcoin Core will store its data. - Sendo esta a primeira vez que o programa é iniciado, poderá escolher onde o Bitcoin Core irá guardar os seus dados. - - - Bitcoin Core will download and store a copy of the Bitcoin block chain. At least %1GB of data will be stored in this directory, and it will grow over time. The wallet will also be stored in this directory. - O Bitcoin Core vai transferir e armazenar uma cópia do "block chain" (cadeia de blocos). Pelo menos %1GB de dados serão armazenados nesta pasta, e vão crescer ao longo do tempo. A sua carteira também irá ser armazenada nesta pasta. - - - Use the default data directory - Utilizar a pasta de dados padrão - - - Use a custom data directory: - Utilizar uma pasta de dados personalizada: - - - Bitcoin Core - Bitcoin Core - - - Error: Specified data directory "%1" cannot be created. - Erro: Pasta de dados especificada como "%1, não pode ser criada. - - - Error - Erro - - - %n GB of free space available - %n GB de espaço livre disponível %n GB de espaço livre disponível - - - (of %n GB needed) - (de %n GB necessários)(de %n GB necessário) - - - - OpenURIDialog - - Open URI - Abir URI - - - Open payment request from URI or file - Abrir pedido de pagamento de um URI ou ficheiro - - - URI: - URI: - - - Select payment request file - Seleccione o ficheiro de pedido de pagamento - - - Select payment request file to open - Seleccione o ficheiro de pedido de pagamento a abrir - - - - OptionsDialog - - Options - Opções - - - &Main - &Principal - - - Size of &database cache - Tamanho da cache da base de &dados - - - MB - MB - - - Number of script &verification threads - Número de processos de &verificação de scripts - - - Accept connections from outside - Aceitar conceções externas - - - Allow incoming connections - Permitir conexão - - - IP address of the proxy (e.g. IPv4: 127.0.0.1 / IPv6: ::1) - Endereço IP do proxy (p.ex. IPv4: 127.0.0.1 / IPv6: ::1) - - - Minimize instead of exit the application when the window is closed. When this option is enabled, the application will be closed only after selecting Exit in the menu. - Minimize ao invés de sair da aplicação quando a janela é fechada. Com esta opção selecionada, a aplicação apenas será encerrada quando escolher Sair da aplicação no menú. - - - The user interface language can be set here. This setting will take effect after restarting Bitcoin Core. - A linguagem da interface do utilizador pode ser definida aqui. Esta definição entrará em efeito após reiniciar o Bitcoin Core. - - - 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 |. - URLs de outrem (ex. um explorador de blocos) que aparece no separador de transações como itens do menu de contexto. -%s do URL é substituído por hash de transação. Vários URLs são separados por barra vertical |. - - - Third party transaction URLs - URLs de transação de outrem - - - Active command-line options that override above options: - Opções de linha de comandos ativas que se sobrepõem ás opções anteriores: - - - Reset all client options to default. - Repor todas as opções do cliente. - - - &Reset Options - &Repor Opções - - - &Network - &Rede - - - Automatically start Bitcoin Core after logging in to the system. - Começar o Bitcoin Core automaticamente ao iniciar sessão no sistema. - - - &Start Bitcoin Core on system login - &Começar o Bitcoin Core ao iniciar o sistema - - - (0 = auto, <0 = leave that many cores free) - (0 = auto, <0 = Deixar essa quantidade de núcleos livre) - - - W&allet - C&arteira - - - Expert - Especialista - - - Enable coin &control features - Ativar funcionalidades de controlo de transação. - - - 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. - No caso de desativar o gasto de troco não confirmado, o troco de uma transação não poderá ser utilizado até que essa transação tenha pelo menos uma confirmação. Isto também afeta o cálculo do seu saldo. - - - &Spend unconfirmed change - &Gastar troco não confirmado - - - Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled. - Abrir a porta do cliente bitcoin automaticamente no seu router. Isto apenas funciona se o seu router suportar UPnP e este se encontrar ligado. - - - Map port using &UPnP - Mapear porta usando &UPnP - - - Connect to the Bitcoin network through a SOCKS5 proxy. - Conectar à rede da Bitcoin através dum proxy SOCLS5. - - - &Connect through SOCKS5 proxy (default proxy): - &Ligar através dum proxy SOCKS5 (proxy por defeito): - - - Proxy &IP: - &IP do proxy: - - - &Port: - &Porto: - - - Port of the proxy (e.g. 9050) - Porto do proxy (p.ex. 9050) - - - &Window - &Janela - - - Show only a tray icon after minimizing the window. - Apenas mostrar o ícone da bandeja de sistema após minimizar a janela. - - - &Minimize to the tray instead of the taskbar - &Minimizar para a bandeja de sistema e não para a barra de ferramentas - - - M&inimize on close - M&inimizar ao fechar - - - &Display - &Visualização - - - User Interface &language: - &Linguagem da interface de utilizador: - - - &Unit to show amounts in: - &Unidade para mostrar quantias: - - - Choose the default subdivision unit to show in the interface and when sending coins. - Escolha a subdivisão unitária a ser mostrada por defeito na aplicação e ao enviar moedas. - - - Whether to show coin control features or not. - Escolha para mostrar funcionalidades de Coin Control ou não. - - - &OK - &OK - - - &Cancel - &Cancelar - - - default - padrão - - - none - nenhum - - - Confirm options reset - Confirme a reposição de opções - - - Client restart required to activate changes. - É necessário reiniciar o cliente para ativar as alterações. - - - Client will be shut down. Do you want to proceed? - O cliente será desligado. Deseja continuar? - - - This change would require a client restart. - Esta alteração requer um reinício do cliente. - - - The supplied proxy address is invalid. - O endereço de proxy introduzido é inválido. - - - - OverviewPage - - Form - Formulário - - - The displayed information may be out of date. Your wallet automatically synchronizes with the Bitcoin network after a connection is established, but this process has not completed yet. - A informação mostrada poderá estar desatualizada. A sua carteira sincroniza automaticamente com a rede Bitcoin depois de estabelecer ligação, mas este processo ainda não está completo. - - - Watch-only: - Modo-verificação: - - - Available: - Disponível: - - - Your current spendable balance - O seu saldo (gastável) disponível - - - Pending: - Pendente: - - - Total of transactions that have yet to be confirmed, and do not yet count toward the spendable balance - Total de transações por confirmar, que ainda não estão contabilizadas no seu saldo gastável - - - Immature: - Imaturo: - - - Mined balance that has not yet matured - O saldo minado ainda não amadureceu - - - Balances - Balanços - - - Total: - Total: - - - Your current total balance - O seu saldo total actual - - - Your current balance in watch-only addresses - O seu balanço atual em endereços de apenas observação - - - Spendable: - Dispensável: - - - Recent transactions - transações recentes - - - Unconfirmed transactions to watch-only addresses - Transações não confirmadas para endereços modo-verificação - - - Mined balance in watch-only addresses that has not yet matured - Saldo minado ainda não disponivél de endereços modo-verificação - - - Current total balance in watch-only addresses - Saldo disponivél em enderços modo-verificação - - - - PaymentServer - - URI handling - Manuseamento de URI - - - Invalid payment address %1 - Endereço de pagamento inválido %1 - - - Payment request rejected - Pedido de pagamento rejeitado - - - Payment request network doesn't match client network. - Rede de requisição de pagamento não corresponde com a rede do cliente. - - - Payment request is not initialized. - Requisição de pagamento não iniciou. - - - Requested payment amount of %1 is too small (considered dust). - Quantia solicitada para pagamento de %1 é muito pequena (considerada "pó"). - - - Payment request error - Erro de pedido de pagamento - - - Cannot start bitcoin: click-to-pay handler - Impossível iniciar o controlador de bitcoin: click-to-pay - - - Payment request fetch URL is invalid: %1 - O URL de pedido de pagamento é inválido: %1 - - - URI cannot be parsed! This can be caused by an invalid Bitcoin address or malformed URI parameters. - URI não foi lido correctamente! Isto pode ser causado por um endereço Bitcoin inválido ou por parâmetros URI malformados. - - - Payment request file handling - Controlo de pedidos de pagamento. - - - Payment request file cannot be read! This can be caused by an invalid payment request file. - O ficheiro de pedido de pagamento não pôde ser lido! Isto pode ter sido causado por um ficheiro de pedido de pagamento inválido. - - - Payment request expired. - Pedido de pagamento expirou. - - - Unverified payment requests to custom payment scripts are unsupported. - Pedidos de pagamento não-verificados para scripts de pagamento personalizados não são suportados. - - - Invalid payment request. - Pedido de pagamento inválido. - - - Refund from %1 - Reembolsar de %1 - - - Payment request %1 is too large (%2 bytes, allowed %3 bytes). - Pedido de pagamento %1 excede o tamanho (%2 bytes, permitido %3 bytes). - - - Payment request DoS protection - Pedido de pagamento proteção DdS - - - Error communicating with %1: %2 - Erro ao comunicar com %1: %2 - - - Payment request cannot be parsed! - O pedido de pagamento não pode ser lido ou processado! - - - Bad response from server %1 - Má resposta do servidor %1 - - - Payment acknowledged - Pagamento confirmado - - - Network request error - Erro de pedido de rede - - - - PeerTableModel - - User Agent - Agente Usuário - - - Node/Service - Nó/Serviço - - - Ping Time - Tempo de Latência - - - - QObject - - Amount - Quantia - - - Enter a Bitcoin address (e.g. %1) - Entre um endereço Bitcoin (ex. %1) - - - %1 d - %1 d - - - %1 h - %1 h - - - %1 m - %1 m - - - %1 s - %1 s - - - None - Nenhum - - - N/A - N/D - - - %1 ms - %1 ms - - - - QRImageWidget - - &Save Image... - &Salvar Imagem... - - - &Copy Image - &Copiar Imagem - - - Save QR Code - Guardar Código QR - - - PNG Image (*.png) - Imagem PNG (*.png) - - - - RPCConsole - - Client name - Nome do Cliente - - - N/A - N/D - - - Client version - Versão do Cliente - - - &Information - &Informação - - - Debug window - Janela de depuração - - - General - Geral - - - Using OpenSSL version - Usando versão OpenSSL - - - Using BerkeleyDB version - Versão BerkeleyDB em uso - - - Startup time - Hora de inicialização - - - Network - Rede - - - Name - Nome - - - Number of connections - Número de ligações - - - Block chain - Cadeia de blocos - - - Current number of blocks - Número actual de blocos - - - Received - Recebido - - - Sent - Enviado - - - &Peers - &Conexção - - - Select a peer to view detailed information. - Selecione uma conexação para ver informação em detalhe. - - - Direction - Direcção - - - Version - Versão - - - User Agent - Agente Usuário - - - Services - Serviços - - - Starting Height - Iniciando Altura - - - Sync Height - Sincronização da Altura - - - Ban Score - Resultado da Suspensão - - - Connection Time - Tempo de Conexção - - - Last Send - Ultimo Envio - - - Last Receive - Ultimo Recebimento - - - Bytes Sent - Bytes Enviados - - - Bytes Received - Bytes Recebidos - - - Ping Time - Tempo de Latência - - - Last block time - Data do último bloco - - - &Open - &Abrir - - - &Console - &Consola - - - &Network Traffic - &Tráfego de Rede - - - &Clear - &Limpar - - - Totals - Totais - - - In: - Entrada: - - - Out: - Saída: - - - Build date - Data de compilação - - - Debug log file - Ficheiro de registo de depuração - - - Clear console - Limpar consola - - - Welcome to the Bitcoin Core RPC console. - Bem-vindo à consola RPC do Bitcoin Core. - - - Use up and down arrows to navigate history, and <b>Ctrl-L</b> to clear screen. - Use as setas para cima e para baixo para navegar no histórico e <b>Ctrl-L</b> para limpar o ecrã. - - - Type <b>help</b> for an overview of available commands. - Insira <b>help</b> para visualizar os comandos disponíveis. - - - %1 B - %1 B - - - %1 KB - %1 KB - - - %1 MB - %1 MB - - - %1 GB - %1 GB - - - via %1 - via %1 - - - never - nunca - - - Inbound - Entrada - - - Outbound - Saída - - - Unknown - Desconhecido - - - Fetching... - Em busca... - - - - ReceiveCoinsDialog - - &Amount: - &Quantia: - - - &Label: - &Rótulo: - - - &Message: - &Mensagem: - - - Reuse one of the previously used receiving addresses. Reusing addresses has security and privacy issues. Do not use this unless re-generating a payment request made before. - Reutilize um dos endereços de entrada usados anteriormente. Reutilizar endereços pode levar a riscos de segurança e de privacidade. Não use esta função a não ser que esteja a gerar novamente uma requisição de pagamento feita anteriormente. - - - R&euse an existing receiving address (not recommended) - Reutilizar um endereço de receção existente (não recomendado) - - - An optional message to attach to the payment request, which will be displayed when the request is opened. Note: The message will not be sent with the payment over the Bitcoin network. - Uma mensagem opcional para anexar ao pedido de pagamento, que será exibida quando o pedido for aberto. Nota: A mensagem não será enviada com o pagamento através da rede Bitcoin. - - - An optional label to associate with the new receiving address. - Um rótulo opcional a associar ao novo endereço de receção. - - - Use this form to request payments. All fields are <b>optional</b>. - Utilize este formulário para solicitar pagamentos. Todos os campos são <b>opcionais</b>. - - - An optional amount to request. Leave this empty or zero to not request a specific amount. - Uma quantia opcional a solicitar. Deixe em branco ou zero para não solicitar uma quantidade específica. - - - Clear all fields of the form. - Limpar todos os campos do formulário. - - - Clear - Limpar - - - Requested payments history - Histórico de pagamentos solicitados - - - &Request payment - &Requisitar Pagamento - - - Show the selected request (does the same as double clicking an entry) - Mostrar o pedido seleccionado (faz o mesmo que clicar 2 vezes numa entrada) - - - Show - Mostrar - - - Remove the selected entries from the list - Remover as entradas seleccionadas da lista - - - Remove - Remover - - - Copy label - Copiar rótulo - - - Copy message - Copiar mensagem - - - Copy amount - Copiar quantia - - - - ReceiveRequestDialog - - QR Code - Código QR - - - Copy &URI - Copiar &URI - - - Copy &Address - Copi&ar Endereço - - - &Save Image... - &Salvar Imagem... - - - Request payment to %1 - Requisitar Pagamento para %1 - - - Payment information - Informação de Pagamento - - - URI - URI - - - Address - Endereço - - - Amount - Quantia - - - Label - Rótulo - - - Message - Mensagem - - - Resulting URI too long, try to reduce the text for label / message. - URI resultante muito longo. Tente reduzir o texto do rótulo / mensagem. - - - Error encoding URI into QR Code. - Erro ao codificar URI em Código QR. - - - - RecentRequestsTableModel - - Date - Data - - - Label - Rótulo - - - Message - Mensagem - - - Amount - Quantia - - - (no label) - (sem rótulo) - - - (no message) - (sem mensagem) - - - (no amount) - (sem quantia) - - - - SendCoinsDialog - - Send Coins - Enviar Moedas - - - Coin Control Features - Funcionalidades de Coin Control: - - - Inputs... - Entradas... - - - automatically selected - selecionadas automáticamente - - - Insufficient funds! - Fundos insuficientes! - - - Quantity: - Quantidade: - - - Bytes: - Bytes: - - - Amount: - Quantia: - - - Priority: - Prioridade: - - - Fee: - Taxa: - - - After Fee: - Depois da taxa: - - - Change: - Troco: - - - If this is activated, but the change address is empty or invalid, change will be sent to a newly generated address. - Se isto estiver ativo, mas o endereço de troco estiver vazio ou for inválido, o troco irá ser enviado para um novo endereço. - - - Custom change address - Endereço de troco personalizado - - - Transaction Fee: - Custo da Transação: - - - Choose... - Escolha... - - - collapse fee-settings - fechar definições-de custos - - - per kilobyte - por kilobyte - - - 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. - Se a taxa fixa for 1000 satoshis e a transação for somente 250 bytes, pagará somente 250 satoshis "por kilobyte" em custos se trasacionar "pelo menos" 1000 satoshis. Transações superiores a um kilobyte são cobradas por kilobyte. - - - Hide - Esconder - - - total at least - total minimo - - - 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. - Pode pagar somente a taxa minima desde que haja um volume de transações inferior ao espaço nos blocos. No entanto tenha em atenção que esta opção poderá acabar em uma transação nunca confirmada assim que os pedidos de transações excedam a capacidade de processamento da rede. - - - (read the tooltip) - (leia a dica) - - - Recommended: - Recomendado: - - - Custom: - Uso: - - - (Smart fee not initialized yet. This usually takes a few blocks...) - (Taxa inteligente ainda não foi acionada. Normalmente demora alguns blocos...) - - - Confirmation time: - Tempo de confirmação: - - - normal - normal - - - fast - rapido - - - Send as zero-fee transaction if possible - Enviar como uma transação a custo zero se possivél - - - (confirmation may take longer) - (confirmação poderá demorar mais) - - - Send to multiple recipients at once - Enviar para múltiplos destinatários de uma vez - - - Add &Recipient - Adicionar &Destinatário - - - Clear all fields of the form. - Limpar todos os campos do formulário. - - - Dust: - Lixo: - - - Clear &All - Limpar &Tudo - - - Balance: - Saldo: - - - Confirm the send action - Confirme ação de envio - - - S&end - E&nviar - - - Confirm send coins - Confirme envio de moedas - - - %1 to %2 - %1 para %2 - - - Copy quantity - Copiar quantidade - - - Copy amount - Copiar quantia - - - Copy fee - Copiar taxa - - - Copy after fee - Copiar valor após taxa - - - Copy bytes - Copiar bytes - - - Copy priority - Copiar prioridade - - - Copy change - Copiar alteração - - - or - ou - - - The amount to pay must be larger than 0. - A quantia a pagar deverá ser maior que 0. - - - The amount exceeds your balance. - A quantia excede o seu saldo. - - - The total exceeds your balance when the %1 transaction fee is included. - O total excede o seu saldo quando a taxa de transação de %1 for incluída. - - - Transaction creation failed! - Erro: A criação da transação falhou! - - - 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. - A transação foi rejeitada! Isto poderá acontecer se algumas das moedas na sua carteira já tiverem sido gastas, se por exemplo tiver usado uma cópia do ficheiro wallet.dat e as moedas tiverem sido gastas na cópia mas não tiverem sido marcadas como gastas aqui. - - - Payment request expired. - Pedido de pagamento expirou. - - - Pay only the minimum fee of %1 - Pagar somente a taxa minima de %1 - - - Warning: Invalid Bitcoin address - Aviso: Endereço Bitcoin inválido - - - (no label) - (sem rótulo) - - - Warning: Unknown change address - Aviso: Endereço de troco desconhecido - - - Copy dust - Copiar lixo - - - Are you sure you want to send? - Tem a certeza que deseja enviar? - - - added as transaction fee - adicionados como taxa de transação - - - - SendCoinsEntry - - A&mount: - Qu&antia: - - - Pay &To: - &Pagar A: - - - Enter a label for this address to add it to your address book - Escreva um rótulo para este endereço para o adicionar ao seu livro de endereços - - - &Label: - Rótu&lo: - - - Choose previously used address - Escolher endereço usado previamente - - - This is a normal payment. - Este é um pagamento normal. - - - The Bitcoin address to send the payment to - O endereço Bitcoin para enviar o pagamento - - - Alt+A - Alt+A - - - Paste address from clipboard - Cole endereço da área de transferência - - - Alt+P - Alt+P - - - Remove this entry - Remover esta entrada - - - Message: - Mensagem: - - - Enter a label for this address to add it to the list of used addresses - Introduza um rótulo para este endereço para o adicionar à sua lista de endereços usados - - - A message that was attached to the bitcoin: URI which will be stored with the transaction for your reference. Note: This message will not be sent over the Bitcoin network. - Uma mensagem que estava anexada ao URI bitcoin: que será armazenada com a transação para sua referência. Nota: Esta mensagem não será enviada através da rede Bitcoin. - - - Pay To: - Pagar a: - - - Memo: - Memorando: - - - - ShutdownWindow - - Bitcoin Core is shutting down... - O Bitcoin Core está a encerrar... - - - Do not shut down the computer until this window disappears. - Não desligue o computador enquanto esta janela não desaparecer. - - - - SignVerifyMessageDialog - - Signatures - Sign / Verify a Message - Assinaturas - Assinar / Verificar uma Mensagem - - - &Sign Message - &Assinar Mensagem - - - The Bitcoin address to sign the message with - O endereço Bitcoin para designar a mensagem - - - Choose previously used address - Escolher endereço usado previamente - - - Alt+A - Alt+A - - - Paste address from clipboard - Colar endereço da área de transferência - - - Alt+P - Alt+P - - - Enter the message you want to sign here - Escreva aqui a mensagem que deseja assinar - - - Signature - Assinatura - - - Copy the current signature to the system clipboard - Copiar a assinatura actual para a área de transferência - - - Sign the message to prove you own this Bitcoin address - Assine uma mensagem para provar que é dono deste endereço Bitcoin - - - Sign &Message - Assinar &Mensagem - - - Reset all sign message fields - Repor todos os campos de assinatura de mensagem - - - Clear &All - Limpar &Tudo - - - &Verify Message - &Verificar Mensagem - - - The Bitcoin address the message was signed with - O endereço Bitcoin com que a mensagem foi designada - - - Verify the message to ensure it was signed with the specified Bitcoin address - Verifique a mensagem para assegurar que foi assinada com o endereço Bitcoin especificado - - - Verify &Message - Verificar &Mensagem - - - Reset all verify message fields - Repor todos os campos de verificação de mensagem - - - Click "Sign Message" to generate signature - Clique "Assinar mensagem" para gerar a assinatura - - - The entered address is invalid. - O endereço introduzido é inválido. - - - Please check the address and try again. - Por favor verifique o endereço e tente de novo. - - - The entered address does not refer to a key. - O endereço introduzido não refere a nenhuma chave. - - - Wallet unlock was cancelled. - O desbloqueio da carteira foi cancelado. - - - Private key for the entered address is not available. - A chave privada para o endereço introduzido não está disponível. - - - Message signing failed. - Assinatura de mensagem falhou. - - - Message signed. - Mensagem assinada. - - - The signature could not be decoded. - A assinatura não pôde ser descodificada. - - - Please check the signature and try again. - Por favor verifique a assinatura e tente de novo. - - - The signature did not match the message digest. - A assinatura não condiz com o conteúdo da mensagem. - - - Message verification failed. - Verificação da mensagem falhou. - - - Message verified. - Mensagem verificada. - - - - SplashScreen - - Bitcoin Core - Bitcoin Core - - - The Bitcoin Core developers - Os programadores do Bitcoin Core - - - [testnet] - [rede de testes] - - - - TrafficGraphWidget - - KB/s - KB/s - - - - TransactionDesc - - Open until %1 - Aberto até %1 - - - conflicted - em conflito: - - - %1/offline - %1/desligado - - - %1/unconfirmed - %1/não confirmada - - - %1 confirmations - %1 confirmações - - - Status - Estado - - - , broadcast through %n node(s) - , transmitida através de %n nó, transmitida através de %n nós - - - Date - Data - - - Source - Origem - - - Generated - Gerado - - - From - De - - - To - Para - - - own address - endereço próprio - - - watch-only - modo-verificação - - - label - rótulo - - - Credit - Crédito - - - matures in %n more block(s) - matura em %n blocomatura em %n blocos - - - not accepted - não aceite - - - Debit - Débito - - - Total debit - Total a debitar - - - Total credit - Total a creditar - - - Transaction fee - Taxa de transação - - - Net amount - Valor líquido - - - Message - Mensagem - - - Comment - Comentário - - - Transaction ID - ID da Transação - - - Merchant - Comerciante - - - Generated coins must mature %1 blocks before they can be spent. When you generated this block, it was broadcast to the network to be added to the block chain. If it fails to get into the chain, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - Moedas geradas deverão maturar por %1 blocos antes de poderem ser gastas. Quando gerou este bloco, ele foi transmitido para a rede para ser incluído na cadeia de blocos. Se a inclusão na cadeia de blocos falhar, o seu estado irá ser alterado para "não aceite" e as moedas não poderão ser gastas. Isto poderá acontecer ocasionalmente se outro nó da rede gerar um bloco a poucos segundos de diferença do seu. - - - Debug information - Informação de depuração - - - Transaction - Transação - - - Inputs - Entradas - - - Amount - Quantia - - - true - verdadeiro - - - false - falso - - - , has not been successfully broadcast yet - , ainda não foi transmitida com sucesso - - - Open for %n more block(s) - Aberta por mais %n blocoAberta por mais %n blocos - - - unknown - desconhecido - - - - TransactionDescDialog - - Transaction details - Detalhes da transação - - - This pane shows a detailed description of the transaction - Esta janela mostra uma descrição detalhada da transação - - - - TransactionTableModel - - Date - Data - - - Type - Tipo - - - Immature (%1 confirmations, will be available after %2) - Imaturo (%1 confirmações, estará disponível após %2) - - - Open for %n more block(s) - Aberta por mais %n blocoAberta por mais %n blocos - - - Open until %1 - Aberto até %1 - - - Confirmed (%1 confirmations) - Confirmada (%1 confirmações) - - - This block was not received by any other nodes and will probably not be accepted! - Este bloco não foi recebido por outros nós e provavelmente não será aceite pela rede! - - - Generated but not accepted - Gerado mas não aceite - - - Offline - Offline - - - Label - Rótulo - - - Unconfirmed - Não confirmado: - - - Confirming (%1 of %2 recommended confirmations) - A confirmar (%1 de %2 confirmações recomendadas) - - - Conflicted - Em Conflito: - - - Received with - Recebido com - - - Received from - Recebido de - - - Sent to - Enviado para - - - Payment to yourself - Pagamento a si mesmo - - - Mined - Minadas - - - watch-only - modo-verificação - - - (n/a) - (n/d) - - - Transaction status. Hover over this field to show number of confirmations. - Estado da transação. Passar o cursor por cima deste campo para mostrar o número de confirmações. - - - Date and time that the transaction was received. - Data e hora em que a transação foi recebida. - - - Type of transaction. - Tipo de transação. - - - Whether or not a watch-only address is involved in this transaction. - Desde que um endereço de modo-verificação faça parte ou não desta transação - - - Amount removed from or added to balance. - Quantia retirada ou adicionada ao saldo. - - - - TransactionView - - All - Todas - - - Today - Hoje - - - This week - Esta semana - - - This month - Este mês - - - Last month - Mês passado - - - This year - Este ano - - - Range... - Período... - - - Received with - Recebida com - - - Sent to - Enviada para - - - To yourself - Para si mesmo - - - Mined - Minadas - - - Other - Outras - - - Enter address or label to search - Escreva endereço ou rótulo a procurar - - - Min amount - Quantia mínima - - - Copy address - Copiar endereço - - - Copy label - Copiar rótulo - - - Copy amount - Copiar quantia - - - Copy transaction ID - Copiar ID da Transação - - - Edit label - Editar rótulo - - - Show transaction details - Mostrar detalhes da transação - - - Export Transaction History - Exportar Histórico de Transacções - - - Watch-only - Modo-verificação - - - Exporting Failed - A Exportação Falhou - - - There was an error trying to save the transaction history to %1. - Ocorreu um erro ao tentar guardar o histórico de transações em %1. - - - Exporting Successful - Exportação Bem Sucedida - - - The transaction history was successfully saved to %1. - O histórico de transacções foi com guardado com sucesso em %1. - - - Comma separated file (*.csv) - Ficheiro separado por vírgulas (*.csv) - - - Confirmed - Confirmada - - - Date - Data - - - Type - Tipo - - - Label - Rótulo - - - Address - Endereço - - - ID - ID - - - Range: - Período: - - - to - até - - - - UnitDisplayStatusBarControl - - Unit to show amounts in. Click to select another unit. - Unidade de valores recebidos. Clique para selecionar outra unidade. - - - - WalletFrame - - No wallet has been loaded. - Nenhuma carteira foi carregada. - - - - WalletModel - - Send Coins - Enviar Moedas - - - - WalletView - - &Export - &Exportar - - - Export the data in the current tab to a file - Exportar os dados no separador actual para um ficheiro - - - Backup Wallet - Cópia de Segurança da Carteira - - - Wallet Data (*.dat) - Dados da Carteira (*.dat) - - - Backup Failed - Cópia de Segurança Falhou - - - There was an error trying to save the wallet data to %1. - Ocorreu um erro ao tentar guardar os dados da carteira em %1. - - - The wallet data was successfully saved to %1. - Os dados da carteira foram guardados com sucesso em %1. - - - Backup Successful - Cópia de Segurança Bem Sucedida - - - - bitcoin-core - - Options: - Opções: - - - Specify data directory - Especificar pasta de dados - - - Connect to a node to retrieve peer addresses, and disconnect - Ligar a um nó para recuperar endereços de pares, e desligar - - - Specify your own public address - Especifique o seu endereço público - - - Accept command line and JSON-RPC commands - Aceitar comandos de linha de comandos e JSON-RPC - - - Run in the background as a daemon and accept commands - Correr o processo em segundo plano e aceitar comandos - - - Use the test network - Utilizar a rede de testes - - - Accept connections from outside (default: 1 if no -proxy or -connect) - Aceitar ligações externas (padrão: 1 sem -proxy ou -connect) - - - Bind to given address and always listen on it. Use [host]:port notation for IPv6 - Associar a endereço específico e escutar sempre nele. Use a notação [anfitrião]:porta para IPv6 - - - Delete all wallet transactions and only recover those parts of the blockchain through -rescan on startup - Apague todas as transações da carteira e somente restore aquelas que façam parte do blockchain através de re-scan ao reiniciar o programa - - - Distributed under the MIT software license, see the accompanying file COPYING or <http://www.opensource.org/licenses/mit-license.php>. - Distribuido através da licença de software MIT, verifique o ficheiro anexado COPYING ou <http://www.opensource.org/licenses/mit-license.php>. - - - Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) - Executar comando quando uma das transações na carteira mudar (no comando, %s é substituído pelo ID da Transação) - - - Set the number of script verification threads (%u to %d, 0 = auto, <0 = leave that many cores free, default: %d) - Defina o número de processos de verificação (%u até %d, 0 = automático, <0 = ldisponibiliza esse número de núcleos livres, por defeito: %d) - - - This is a pre-release test build - use at your own risk - do not use for mining or merchant applications - Esta é uma versão de testes pré-lançamento - use à sua responsabilidade - não usar para minar ou aplicações comerciais - - - Unable to bind to %s on this computer. Bitcoin Core is probably already running. - Incapaz de vincular à porta %s neste computador. O Bitcoin Core provavelmente já está a correr. - - - Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. - Atenção: -paytxfee está definida com um valor muito alto! Esta é a taxa que irá pagar se enviar uma transação. - - - Warning: The network does not appear to fully agree! Some miners appear to be experiencing issues. - Aviso: A rede não parece estar completamente de acordo! Parece que alguns mineiros estão com dificuldades técnicas. - - - Warning: We do not appear to fully agree with our peers! You may need to upgrade, or other nodes may need to upgrade. - Atenção: Parecemos não estar de acordo com os nossos pares! Poderá ter que atualizar o seu cliente, ou outros nós poderão ter que atualizar os seus clientes. - - - Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. - Atenção: erro ao ler wallet.dat! Todas as chaves foram lidas correctamente, mas dados de transação ou do livro de endereços podem estar em falta ou incorrectos. - - - 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. - Atenção: wallet.dat corrompido, dados recuperados! wallet.dat original salvo como wallet.{timestamp}.bak em %s; se o seu saldo ou transações estiverem incorrectos deverá recuperar uma cópia de segurança. - - - Whitelist peers connecting from the given netmask or IP address. Can be specified multiple times. - Ligações na lista branca conectam desde a seguinte netmask ou endereço IP. Posse ser especificado varias vezes. - - - (default: 1) - (padrão: 1) - - - <category> can be: - <categoria> pode ser: - - - Attempt to recover private keys from a corrupt wallet.dat - Tentar recuperar chaves privadas de um wallet.dat corrupto - - - Block creation options: - Opções de criação de bloco: - - - Connect only to the specified node(s) - Apenas ligar ao(s) nó(s) especificado(s) - - - Connection options: - Opcões de conexção: - - - Corrupted block database detected - Cadeia de blocos corrompida detectada - - - Debugging/Testing options: - Depuração/Opções teste: - - - Do not load the wallet and disable wallet RPC calls - Não carregar a carteira e desativar chamadas RPC de carteira. - - - Do you want to rebuild the block database now? - Deseja reconstruir agora a base de dados de blocos. - - - Error initializing block database - Erro ao inicializar a cadeia de blocos - - - Error initializing wallet database environment %s! - Erro ao inicializar o ambiente %s da base de dados da carteira - - - Error loading block database - Erro ao carregar base de dados de blocos - - - Error opening block database - Erro ao abrir a base de dados de blocos - - - Error: Disk space is low! - Erro: Pouco espaço em disco! - - - Failed to listen on any port. Use -listen=0 if you want this. - Falhou a escutar em qualquer porta. Use -listen=0 se quiser isto. - - - If <category> is not supplied, output all debugging information. - Se uma <categoria> não é fornecida, imprimir toda a informação de depuração. - - - Importing... - A importar... - - - Incorrect or no genesis block found. Wrong datadir for network? - Bloco génese incorreto ou nenhum bloco génese encontrado. Pasta de dados errada para a rede? - - - Invalid -onion address: '%s' - Endereço -onion inválido: '%s' - - - Not enough file descriptors available. - Os descritores de ficheiros disponíveis são insuficientes. - - - Only connect to nodes in network <net> (ipv4, ipv6 or onion) - Somente conectar aos nodes na rede <net> (ipv4, ipv6 ou onion) - - - Set database cache size in megabytes (%d to %d, default: %d) - Definir o tamanho da cache de base de dados em megabytes (%d a %d, padrão: %d) - - - Set maximum block size in bytes (default: %d) - Definir tamanho máximo por bloco em bytes (por defeito: %d) - - - Specify wallet file (within data directory) - Especifique ficheiro de carteira (dentro da pasta de dados) - - - Use UPnP to map the listening port (default: %u) - Use UPnP para mapear a porto de escuta (default: %u) - - - Verifying blocks... - A verificar blocos... - - - Verifying wallet... - A verificar carteira... - - - Wallet %s resides outside data directory %s - A carteira %s reside fora da pasta de dados %s - - - Wallet options: - Opções da carteira: - - - Warning: This version is obsolete; upgrade required! - Aviso: Esta versão está desatualizada; atualização necessária! - - - You need to rebuild the database using -reindex to change -txindex - É necessário reconstruir as bases de dados usando -reindex para mudar o -txindex - - - Imports blocks from external blk000??.dat file - Importar blocos de um ficheiro blk000??.dat externo - - - 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 - Permitir conexções JSON-RPC de fontes especificas. Valido para <ip> um unico IP (ex. 1.2.3.4), uma rede/netmask (ex. 1.2.3.4/255.255.255.0) ou uma rede/CIDR (ex. 1.2.3.4/24). Esta opção pode ser especificada varias vezes - - - An error occurred while setting up the RPC address %s port %u for listening: %s - Um erro ocorreu durante a definição do endereço RPC %s porto %u para escutar: %s - - - Bind to given address and whitelist peers connecting to it. Use [host]:port notation for IPv6 - Vincualar o endereço dado e listar as ligações conectadas ao mesmo na lista branca. Use a notação [anfitrião]:porta para IPv6 - - - Bind to given address to listen for JSON-RPC connections. Use [host]:port notation for IPv6. This option can be specified multiple times (default: bind to all interfaces) - Vinculado para dar o endereço para atender as ligações JSON-RPC. Use [host]: Notação de porta para IPv6. Esta opção pode ser especificada várias vezes (padrão: ligam-se a todas as interfaces) - - - Cannot obtain a lock on data directory %s. Bitcoin Core is probably already running. - Impossível trancar a pasta de dados %s. Provavelmente o Bitcoin Core já está a ser executado. - - - Execute command when a relevant alert is received or we see a really long fork (%s in cmd is replaced by message) - Executar comando quando um alerta relevante for recebido ou em caso de uma divisão longa da cadeia de blocos (no comando, %s é substituído pela mensagem) - - - Set maximum size of high-priority/low-fee transactions in bytes (default: %d) - Definir tamanho máximo de transações com alta-prioridade/baixa-taxa em bytes (por defeito: %d) - - - Warning: Please check that your computer's date and time are correct! If your clock is wrong Bitcoin Core will not work properly. - Atenção: Por favor verifique que a data e hora do seu computador estão correctas! Se o seu relógio não estiver certo o Bitcoin Core não irá funcionar correctamente. - - - (default: %u) - (por defeito: %u) - - - Choose data directory on startup (default: 0) - Escolha a pasta de dados ao iniciar (por defeito: 0) - - - Copyright (C) 2009-%i The Bitcoin Core Developers - Copyright (C) 2009-%i Os Programadores do Bitcoin Core - - - Error loading wallet.dat: Wallet requires newer version of Bitcoin Core - Erro ao carregar wallet.dat: A Carteira requer uma versão mais recente do Bitcoin Core - - - Information - Informação - - - Invalid amount for -minrelaytxfee=<amount>: '%s' - Quantia inválida para -minrelaytxfee=<quantidade>: '%s' - - - Invalid amount for -mintxfee=<amount>: '%s' - Quantia inválida para -mintxfee=<quantidade>: '%s' - - - Send trace/debug info to console instead of debug.log file - Enviar informação de rastreio/depuração para a consola e não para o ficheiro debug.log - - - Set SSL root certificates for payment request (default: -system-) - Configurar certificados SSL root para pedido de pagamento (default: -system-) - - - Set language, for example "de_DE" (default: system locale) - Definir linguagem, por exemplo "pt_PT" (por defeito: linguagem do sistema) - - - Show splash screen on startup (default: 1) - Mostrar imagem ao iniciar (por defeito: 1) - - - Shrink debug.log file on client startup (default: 1 when no -debug) - Encolher ficheiro debug.log ao iniciar o cliente (por defeito: 1 sem -debug definido) - - - Signing transaction failed - Falhou assinatura da transação - - - Start minimized - Iniciar minimizado - - - Transaction amount too small - Quantia da transação é muito baixa - - - Transaction amounts must be positive - Quantia da transação deverá ser positiva - - - Transaction too large - Transação grande demais - - - Use UPnP to map the listening port (default: 1 when listening) - Usar UPnP para mapear a porta de escuta (padrão: 1 ao escutar) - - - Username for JSON-RPC connections - Nome de utilizador para ligações JSON-RPC - - - Wallet needed to be rewritten: restart Bitcoin Core to complete - A Carteira precisou de ser reescrita: reinicie o Bitcoin Core para completar o processo - - - Warning - Aviso - - - Zapping all transactions from wallet... - A limpar todas as transações da carteira... - - - wallet.dat corrupt, salvage failed - wallet.dat corrompido, recuperação falhou - - - Password for JSON-RPC connections - Palavra-passe para ligações JSON-RPC - - - Execute command when the best block changes (%s in cmd is replaced by block hash) - Executar comando quando o melhor bloco mudar (no comando, %s é substituído pela hash do bloco) - - - Upgrade wallet to latest format - Atualize a carteira para o formato mais recente - - - Rescan the block chain for missing wallet transactions - Procurar transações em falta na cadeia de blocos - - - Use OpenSSL (https) for JSON-RPC connections - Usar OpenSSL (https) para ligações JSON-RPC - - - This help message - Esta mensagem de ajuda - - - Allow DNS lookups for -addnode, -seednode and -connect - Permitir procuras DNS para -addnode, -seednode e -connect - - - Loading addresses... - A carregar endereços... - - - Error loading wallet.dat: Wallet corrupted - Erro ao carregar wallet.dat: Carteira danificada - - - Error loading wallet.dat - Erro ao carregar wallet.dat - - - Invalid -proxy address: '%s' - Endereço -proxy inválido: '%s' - - - Listen for JSON-RPC connections on <port> (default: %u or testnet: %u) - Escutar por ligações JSON-RPC na porta <port> (por defeito: %u ou rede de testes: %u) - - - Listen for connections on <port> (default: %u or testnet: %u) - Escute ligações na porta <port> (por defeito: %u ou testnet: %u) - - - Maintain at most <n> connections to peers (default: %u) - Manter no máximo <n> ligações a outros nós da rede (por defeito: %u) - - - Maximum per-connection receive buffer, <n>*1000 bytes (default: %u) - Maximo armazenamento intermédio de recepção por ligação, <n>*1000 bytes (por defeito: %u) - - - Maximum per-connection send buffer, <n>*1000 bytes (default: %u) - Maximo armazenamento intermédio de envio por ligação, <n>*1000 bytes (por defeito: %u) - - - Prepend debug output with timestamp (default: %u) - Adicionar data e hora à informação de depuração (por defeito: %u) - - - Server certificate file (default: %s) - Ficheiro de certificado do servidor (por defeito: %s) - - - Server private key (default: %s) - Chave privada do servidor (por defeito: %s) - - - Set key pool size to <n> (default: %u) - Definir o tamanho da memória de chaves para <n> (por defeito: %u) - - - Set minimum block size in bytes (default: %u) - Definir tamanho minímo de um bloco em bytes (por defeito: %u) - - - Set the number of threads to service RPC calls (default: %d) - Defina o número de processos para servir as chamadas RPC (por defeito: %d) - - - Specify configuration file (default: %s) - Especificar ficheiro de configuração (por defeito: %s) - - - Specify connection timeout in milliseconds (minimum: 1, default: %d) - Especificar tempo de espera da ligação em milissegundos (mínimo 1, por defeito: %d) - - - Unknown network specified in -onlynet: '%s' - Rede desconhecida especificada em -onlynet: '%s' - - - Cannot resolve -bind address: '%s' - Não foi possível resolver o endereço -bind: '%s' - - - Cannot resolve -externalip address: '%s' - Não foi possível resolver o endereço -externalip: '%s' - - - Invalid amount for -paytxfee=<amount>: '%s' - Quantia inválida para -paytxfee=<amount>: '%s' - - - Insufficient funds - Fundos insuficientes - - - Loading block index... - A carregar índice de blocos... - - - Add a node to connect to and attempt to keep the connection open - Adicionar um nó para se ligar e tentar manter a ligação aberta - - - Loading wallet... - A carregar carteira... - - - Cannot downgrade wallet - Impossível mudar a carteira para uma versão anterior - - - Cannot write default address - Impossível escrever endereço por defeito - - - Rescanning... - Reexaminando... - - - Done loading - Carregamento completo - - - Error - Erro - - - \ No newline at end of file diff --git a/src/qt/locale/bitcoin_ro_RO.ts b/src/qt/locale/bitcoin_ro_RO.ts deleted file mode 100644 index 76fd8e5eb..000000000 --- a/src/qt/locale/bitcoin_ro_RO.ts +++ /dev/null @@ -1,3204 +0,0 @@ - - - AddressBookPage - - Right-click to edit address or label - Click-dreapta pentru a edita adresa sau eticheta - - - Create a new address - Creează o adresă nouă - - - &New - &Nou - - - Copy the currently selected address to the system clipboard - Copiază adresa selectată în clipboard - - - &Copy - &Copiază - - - C&lose - ÃŽnchide - - - &Copy Address - &Copiază adresa - - - Delete the currently selected address from the list - Åžterge adresele curent selectate din listă - - - Export the data in the current tab to a file - Exportă datele din tab-ul curent într-un fiÅŸier - - - &Export - &Exportă - - - &Delete - Åžterge - - - Choose the address to send coins to - AlegeÅ£i adresa unde vreÅ£i să trimiteÅ£i monezile - - - Choose the address to receive coins with - AlegeÅ£i adresa unde vreÅ£i să primiÅ£i monezile - - - C&hoose - &AlegeÅ£i - - - Sending addresses - Adresa destinatarului - - - Receiving addresses - Adresa de primire - - - These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins. - Acestea sînt adresele dumneavoastră Bitcoin pentru efectuarea plăţilor. VerificaÅ£i întotdeauna cantitatea ÅŸi adresa de primire înainte de a trimite monezi. - - - These are your Bitcoin addresses for receiving payments. It is recommended to use a new receiving address for each transaction. - Acestea sînt adresele dumneavoastră Bitcoin folosite pentru a primi plati. Este recomandat să folosiÅ£i o adresă nouă de primire pentru fiecare tranzacÅ£ie în parte. - - - Copy &Label - Copiază &eticheta - - - &Edit - &Editare - - - Export Address List - Exportă listă de adrese - - - Comma separated file (*.csv) - FiÅŸier text cu valori separate prin virgulă (*.csv) - - - Exporting Failed - Export nereuÅŸit - - - There was an error trying to save the address list to %1. Please try again. - A apărut o eroare la salvarea listei de adrese la %1. Vă rugăm să încercaÅ£i din nou. - - - - AddressTableModel - - Label - Etichetă - - - Address - Adresă - - - (no label) - (fără etichetă) - - - - AskPassphraseDialog - - Passphrase Dialog - Dialogul pentru fraza de acces - - - Enter passphrase - IntroduceÅ£i fraza de acces - - - New passphrase - Frază de acces nouă - - - Repeat new passphrase - RepetaÅ£i noua frază de acces - - - Encrypt wallet - Criptare portofel - - - This operation needs your wallet passphrase to unlock the wallet. - Această acÅ£iune necesită fraza dvs. de acces pentru deblocarea portofelului. - - - Unlock wallet - Deblocare portofel - - - This operation needs your wallet passphrase to decrypt the wallet. - Această acÅ£iune necesită fraza dvs. de acces pentru decriptarea portofelului. - - - Decrypt wallet - Decriptare portofel - - - Change passphrase - Schimbare frază de acces - - - Confirm wallet encryption - ConfirmaÅ£i criptarea portofelului - - - Warning: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR BITCOINS</b>! - AtenÅ£ie: Dacă pierdeÅ£i parola portofelului electronic după criptare, <b>VEÅ¢I PIERDE ÃŽNTREAGA SUMÄ‚ DE BITCOIN ACUMULATÄ‚</b>! - - - Are you sure you wish to encrypt your wallet? - Sigur doriÅ£i să criptaÅ£i portofelul dvs.? - - - Bitcoin Core 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. - Bitcoin se va închide acum pentru a termina procesul de criptare. Å¢ineÅ£i minte că criptarea portofelului nu vă poate proteja în totalitate de furtul monedelor de către programe dăunătoare care vă infectează calculatorul. - - - 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. - IMPORTANT: Orice copie de siguranţă făcută anterior portofelului dumneavoastră ar trebui înlocuită cu cea generată cel mai recent, fiÅŸier criptat al portofelului. Pentru siguranţă, copiile de siguranţă vechi ale portofelului ne-criptat vor deveni inutile imediat ce veÅ£i începe folosirea noului fiÅŸier criptat al portofelului. - - - Warning: The Caps Lock key is on! - AtenÅ£ie! Caps Lock este pornit! - - - Wallet encrypted - Portofel criptat - - - 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>. - IntroduceÅ£i noua parolă a portofelului electronic.<br/>Vă rugăm să folosiÅ£i o parolă de<b>minimum 10 caractere aleatoare</b>, sau <b>minimum 8 cuvinte</b>. - - - Enter the old passphrase and new passphrase to the wallet. - IntroduceÅ£i vechea ÅŸi noua parolă pentru portofel. - - - Wallet encryption failed - Criptarea portofelului nu a reuÅŸit - - - Wallet encryption failed due to an internal error. Your wallet was not encrypted. - Criptarea portofelului nu a reuÅŸit din cauza unei erori interne. Portofelul dvs. nu a fost criptat. - - - The supplied passphrases do not match. - Frazele de acces introduse nu se potrivesc. - - - Wallet unlock failed - Deblocarea portofelului nu a reuÅŸit - - - The passphrase entered for the wallet decryption was incorrect. - Fraza de acces introdusă pentru decriptarea portofelului a fost incorectă. - - - Wallet decryption failed - Decriptarea portofelului nu a reuÅŸit - - - Wallet passphrase was successfully changed. - Parola portofelului electronic a fost schimbată. - - - - BitcoinGUI - - Sign &message... - Semnează &mesaj... - - - Synchronizing with network... - Se sincronizează cu reÅ£eaua... - - - &Overview - &Imagine de ansamblu - - - Node - Nod - - - Show general overview of wallet - Arată o stare generală de ansamblu a portofelului - - - &Transactions - &TranzacÅ£ii - - - Browse transaction history - Răsfoire istoric tranzacÅ£ii - - - E&xit - IeÅŸire - - - Quit application - ÃŽnchide aplicaÅ£ia - - - About &Qt - Despre &Qt - - - Show information about Qt - Arată informaÅ£ii despre Qt - - - &Options... - &OpÅ£iuni... - - - &Encrypt Wallet... - Cript&ează portofelul... - - - &Backup Wallet... - Face o copie de siguranţă a portofelului... - - - &Change Passphrase... - S&chimbă parola... - - - &Sending addresses... - Adrese de trimitere... - - - &Receiving addresses... - Adrese de p&rimire... - - - Open &URI... - Deschide &URI... - - - Bitcoin Core client - Clientul Bitcoin Core - - - Importing blocks from disk... - Import blocuri de pe disk... - - - Reindexing blocks on disk... - Se reindexează blocurile pe disc... - - - Send coins to a Bitcoin address - Trimite monede către o adresă Bitcoin - - - Backup wallet to another location - Creează o copie de rezervă a portofelului într-o locaÅ£ie diferită - - - Change the passphrase used for wallet encryption - Schimbă fraza de acces folosită pentru criptarea portofelului - - - &Debug window - Fereastra de &depanare - - - Open debugging and diagnostic console - Deschide consola de depanare ÅŸi diagnosticare - - - &Verify message... - &Verifică mesaj... - - - Bitcoin - Bitcoin - - - Wallet - Portofel - - - &Send - Trimite - - - &Receive - P&rimeÅŸte - - - Show information about Bitcoin Core - Arată informaÅ£ii despre Bitcoin Core - - - &Show / Hide - Arată/Ascunde - - - Show or hide the main Window - Arată sau ascunde fereastra principală - - - Encrypt the private keys that belong to your wallet - Criptează cheile private ale portofelului dvs. - - - Sign messages with your Bitcoin addresses to prove you own them - SemnaÅ£i mesaje cu adresa dvs. Bitcoin pentru a dovedi că vă aparÅ£in - - - Verify messages to ensure they were signed with specified Bitcoin addresses - VerificaÅ£i mesaje pentru a vă asigura că au fost semnate cu adresa Bitcoin specificată - - - &File - &FiÅŸier - - - &Settings - &Setări - - - &Help - A&jutor - - - Tabs toolbar - Bara de unelte - - - Bitcoin Core - Nucleul Bitcoin - - - Request payments (generates QR codes and bitcoin: URIs) - CereÅ£i plăţi (generează coduri QR ÅŸi bitcoin-uri: URls) - - - &About Bitcoin Core - &Despre Nucleul Bitcoin - - - Modify configuration options for Bitcoin Core - Modifică opÅ£iunile de configurare pentru Bitcoin - - - Show the list of used sending addresses and labels - Arată lista de adrese trimise ÅŸi etichetele folosite. - - - Show the list of used receiving addresses and labels - Arată lista de adrese pentru primire ÅŸi etichetele - - - Open a bitcoin: URI or payment request - Deschidere bitcoin: o adresa URI sau o cerere de plată - - - &Command-line options - OpÅ£iuni linie de &comandă - - - Show the Bitcoin Core help message to get a list with possible Bitcoin command-line options - Arată mesajul de ajutor Bitcoin Core pentru a obÅ£ine o listă cu opÅ£iunile posibile de linii de comandă Bitcoin - - - %n active connection(s) to Bitcoin network - %n conexiune activă către reÅ£eaua Bitcoin%n conexiuni active către reÅ£eaua Bitcoin%n de conexiuni active către reÅ£eaua Bitcoin - - - No block source available... - Nici o sursă de bloc disponibilă... - - - Processed %n block(s) of transaction history. - S-a procesat %n bloc din istoricul tranzacÅ£iilor.S-au procesat %n blocuri din istoricul tranzacÅ£iilor.S-au procesat %n de blocuri din istoricul tranzacÅ£iilor. - - - %n hour(s) - %n oră%n ore%n ore - - - %n day(s) - %n zi%n zile%n de zile - - - %n week(s) - %n săptămână%n săptămâni%n de săptămâni - - - %1 and %2 - %1 ÅŸi %2 - - - %n year(s) - %n an%n ani%n de ani - - - %1 behind - %1 în urmă - - - Last received block was generated %1 ago. - Ultimul bloc recepÅ£ionat a fost generat acum %1. - - - Transactions after this will not yet be visible. - TranzacÅ£iile după aceasta nu vor fi vizibile încă. - - - Error - Eroare - - - Warning - Avertisment - - - Information - InformaÅ£ie - - - Up to date - Actualizat - - - Catching up... - Se actualizează... - - - Date: %1 - - Data: %1 - - - - Amount: %1 - - Sumă: %1 - - - - Type: %1 - - Tip: %1 - - - - Label: %1 - - Etichetă: %1 - - - - Address: %1 - - Adresă: %1 - - - - Sent transaction - TranzacÅ£ie expediată - - - Incoming transaction - TranzacÅ£ie recepÅ£ionată - - - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - Portofelul este <b>criptat</b> iar în momentul de faţă este <b>deblocat</b> - - - Wallet is <b>encrypted</b> and currently <b>locked</b> - Portofelul este <b>criptat</b> iar în momentul de faţă este <b>blocat</b> - - - - ClientModel - - Network Alert - Alertă reÅ£ea - - - - CoinControlDialog - - Coin Selection - Selectarea monezii - - - Quantity: - Cantitate: - - - Bytes: - OcteÅ£i: - - - Amount: - Sumă: - - - Priority: - Prioritate: - - - Fee: - Taxă: - - - Dust: - Praf: - - - After Fee: - După taxă: - - - Change: - Schimb: - - - (un)select all - (de)selectare tot - - - Tree mode - Mod arbore - - - List mode - Mod listă - - - Amount - Sumă - - - Received with label - Primite cu eticheta - - - Received with address - Primite cu adresa - - - Date - Data - - - Confirmations - Confirmări - - - Confirmed - Confirmat - - - Priority - Prioritate - - - Copy address - Copiază adresa - - - Copy label - Copiază eticheta - - - Copy amount - Copiază suma - - - Copy transaction ID - Copiază ID tranzacÅ£ie - - - Lock unspent - Blocare necheltuiÅ£i - - - Unlock unspent - Deblocare necheltuiÅ£i - - - Copy quantity - Copiază cantitea - - - Copy fee - Copiază taxa - - - Copy after fee - Copiază după taxă - - - Copy bytes - Copiază octeÅ£i - - - Copy priority - Copiază prioritatea - - - Copy dust - Copiază praf - - - Copy change - Copiază rest - - - highest - cea mai mare - - - higher - mai mare - - - high - mare - - - medium-high - medie-mare - - - medium - medie - - - low-medium - medie-scăzută - - - low - scazută - - - lower - mai scăzută - - - lowest - cea mai scăzută - - - none - nimic - - - This label turns red if the transaction size is greater than 1000 bytes. - Această etichetă devine roÅŸie în cazul în care dimensiunea tranzacÅ£iei este mai mare de 1000 de octeÅ£i. - - - This label turns red if the priority is smaller than "medium". - Această etichetă devine roÅŸie dacă prioritatea e mai mică decît "medie". - - - This label turns red if any recipient receives an amount smaller than %1. - Această etichetă devine roÅŸie, dacă orice beneficiar primeÅŸte o sumă mai mică decât %1. - - - Can vary +/- %1 satoshi(s) per input. - Poate varia +/- %1 satoshi pentru fiecare intrare. - - - yes - da - - - no - nu - - - Can vary +/- 1 byte per input. - Poate varia +/- 1 octet pentru fiecare intrare. - - - Transactions with higher priority are more likely to get included into a block. - TranzacÅ£iile cu prioritate mai mare sînt mai susceptibile de fi incluse într-un bloc. - - - (no label) - (fără etichetă) - - - change from %1 (%2) - restul de la %1 (%2) - - - (change) - (rest) - - - - EditAddressDialog - - Edit Address - Editează adresa - - - &Label - &Etichetă - - - The label associated with this address list entry - Eticheta asociată cu această intrare din listă. - - - The address associated with this address list entry. This can only be modified for sending addresses. - Adresa asociată cu această adresă din listă. Aceasta poate fi modificată doar pentru adresele de trimitere. - - - &Address - &Adresă - - - New receiving address - Noua adresă de primire - - - New sending address - Noua adresă de trimitere - - - Edit receiving address - Editează adresa de primire - - - Edit sending address - Editează adresa de trimitere - - - The entered address "%1" is already in the address book. - Adresa introdusă "%1" se află deja în lista de adrese. - - - The entered address "%1" is not a valid Bitcoin address. - Adresa introdusă "%1" nu este o adresă bitcoin validă. - - - Could not unlock wallet. - Portofelul nu a putut fi deblocat. - - - New key generation failed. - Generarea noii chei nu a reuÅŸit. - - - - FreespaceChecker - - A new data directory will be created. - Va fi creat un nou dosar de date. - - - name - nume - - - Directory already exists. Add %1 if you intend to create a new directory here. - Dosarul deja există. Adaugă %1 dacă intenÅ£ionaÅ£i să creaÅ£i un nou dosar aici. - - - Path already exists, and is not a directory. - Calea deja există ÅŸi nu este un dosar. - - - Cannot create data directory here. - Nu se poate crea un dosar de date aici. - - - - HelpMessageDialog - - Bitcoin Core - Nucleul Bitcoin - - - version - versiunea - - - (%1-bit) - (%1-bit) - - - About Bitcoin Core - Despre Nucleul Bitcoin - - - Command-line options - OpÅ£iuni linie de comandă - - - Usage: - Uz: - - - command-line options - OpÅ£iuni linie de comandă - - - - Intro - - Welcome - Bun venit - - - Welcome to Bitcoin Core. - Bine aÅ£i venit la Nucleul Bitcoin. - - - As this is the first time the program is launched, you can choose where Bitcoin Core will store its data. - Dacă aceasta este prima dată cînd programul este lansat, puteÅ£i alege unde Nucleul Bitcoin va stoca datele. - - - Use the default data directory - FoloseÅŸte dosarul de date implicit - - - Use a custom data directory: - FoloseÅŸte un dosar de date personalizat: - - - Bitcoin Core - Nucleul Bitcoin - - - Error: Specified data directory "%1" cannot be created. - Eroare: Directorul datelor specificate "%1" nu poate fi creat. - - - Error - Eroare - - - %n GB of free space available - %n GB de spaÅ£iu liber disponibil%n GB de spaÅ£iu liber disponibil%n GB de spaÅ£iu liber disponibil - - - (of %n GB needed) - (din %n GB necesar)(din %n GB necesari)(din %n GB necesari) - - - - OpenURIDialog - - Open URI - Deschide URI - - - Open payment request from URI or file - DeschideÅ£i cerere de plată prin intermediul adresei URI sau a fiÅŸierului - - - URI: - URI: - - - Select payment request file - SelectaÅ£i fiÅŸierul cerere de plată - - - Select payment request file to open - SelectaÅ£i fiÅŸierul cerere de plată pentru deschidere - - - - OptionsDialog - - Options - OpÅ£iuni - - - &Main - Principal - - - Size of &database cache - Mărimea bazei de &date cache - - - MB - MB - - - Number of script &verification threads - Numărul de thread-uri de &verificare - - - Accept connections from outside - Acceptă conexiuni din exterior - - - Allow incoming connections - Permite conexiuni de intrare - - - IP address of the proxy (e.g. IPv4: 127.0.0.1 / IPv6: ::1) - Adresa IP a serverului proxy (de exemplu: IPv4: 127.0.0.1 / IPv6: ::1) - - - Minimize instead of exit the application when the window is closed. When this option is enabled, the application will be closed only after selecting Exit in the menu. - Minimizează fereastra în locul părăsirii programului în momentul închiderii ferestrei. Cînd acestă opÅ£iune e activă, aplicaÅ£ia se va opri doar în momentul selectării comenzii 'ÃŽnchide aplicaÅ£ia' din menu. - - - The user interface language can be set here. This setting will take effect after restarting Bitcoin Core. - Limba interfeÅ£ei utilizatorului poate fi setată aici. Această setare va avea efect după repornirea Nucleului Bitcoin. - - - 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 |. - URL-uri terÅ£e părÅ£i (de exemplu, un explorator de bloc), care apar în tab-ul tranzacÅ£iilor ca elemente de meniu contextual. %s în URL este înlocuit cu hash de tranzacÅ£ie. URL-urile multiple sînt separate prin bară verticală |. - - - Third party transaction URLs - URL-uri tranzacÅ£ii terÅ£e părÅ£i - - - Active command-line options that override above options: - OpÅ£iuni linie de comandă active care oprimă opÅ£iunile de mai sus: - - - Reset all client options to default. - Resetează toate setările clientului la valorile implicite. - - - &Reset Options - &Resetează opÅ£iunile - - - &Network - ReÅ£ea - - - &Start Bitcoin Core on system login - PorneÅŸte Nucleul Bitcoin la pornirea sistemului - - - (0 = auto, <0 = leave that many cores free) - (0 = automat, <0 = lasă atîtea nuclee libere) - - - W&allet - Portofel - - - Expert - Expert - - - Enable coin &control features - Activare caracteristici de control ale monedei - - - 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. - Dacă dezactivaÅ£i cheltuirea restului neconfirmat, restul dintr-o tranzacÅ£ie nu poate fi folosit pînă cînd tranzacÅ£ia are cel puÅ£in o confirmare. Aceasta afectează de asemenea calcularea soldului. - - - &Spend unconfirmed change - Cheltuire rest neconfirmat - - - Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled. - Deschide automat în router portul aferent clientului Bitcoin. FuncÅ£ionează doar dacă routerul duportă UPnP ÅŸi e activat. - - - Map port using &UPnP - Mapare port folosind &UPnP - - - Connect to the Bitcoin network through a SOCKS5 proxy. - Conectare la reÅ£eaua Bitcoin printr-un proxy SOCKS. - - - &Connect through SOCKS5 proxy (default proxy): - &Conectare printr-un proxy SOCKS (implicit proxy): - - - Proxy &IP: - Proxy &IP: - - - &Port: - &Port: - - - Port of the proxy (e.g. 9050) - Portul proxy (de exemplu: 9050) - - - &Window - &Fereastră - - - Show only a tray icon after minimizing the window. - Arată doar un icon în tray la ascunderea ferestrei - - - &Minimize to the tray instead of the taskbar - &Minimizare în tray în loc de taskbar - - - M&inimize on close - M&inimizare fereastră în locul închiderii programului - - - &Display - &AfiÅŸare - - - User Interface &language: - &Limbă interfaţă utilizator - - - &Unit to show amounts in: - &Unitatea de măsură pentru afiÅŸarea sumelor: - - - Choose the default subdivision unit to show in the interface and when sending coins. - AlegeÅ£i subdiviziunea folosită la afiÅŸarea interfeÅ£ei ÅŸi la trimiterea de bitcoin. - - - Whether to show coin control features or not. - Arată controlul caracteristicilor monedei sau nu. - - - &OK - &OK - - - &Cancel - Renunţă - - - default - iniÅ£ial - - - none - nimic - - - Confirm options reset - Confirmă resetarea opÅ£iunilor - - - Client restart required to activate changes. - Este necesară repornirea clientului pentru a activa schimbările. - - - Client will be shut down. Do you want to proceed? - Clientul va fi închis. DoriÅ£i să continuaÅ£i? - - - This change would require a client restart. - Această schimbare necesită o repornire a clientului. - - - The supplied proxy address is invalid. - Adresa bitcoin pe care aÅ£i specificat-o nu este validă. - - - - OverviewPage - - Form - Form - - - The displayed information may be out of date. Your wallet automatically synchronizes with the Bitcoin network after a connection is established, but this process has not completed yet. - InformaÅ£iile afiÅŸate pot fi neactualizate. Portofelul dvs. se sincronizează automat cu reÅ£eaua Bitcoin după ce o conexiune este stabilită, dar acest proces nu a fost finalizat încă. - - - Watch-only: - Doar-supraveghere: - - - Available: - Disponibil: - - - Your current spendable balance - BalanÅ£a dvs. curentă de cheltuieli - - - Pending: - ÃŽn aÅŸteptare: - - - Total of transactions that have yet to be confirmed, and do not yet count toward the spendable balance - Totalul tranzacÅ£iilor care nu sunt confirmate încă ÅŸi care nu sunt încă adunate la balanÅ£a de cheltuieli - - - Immature: - Nematurizat: - - - Mined balance that has not yet matured - BalanÅ£a minertită care nu s-a maturizat încă - - - Balances - Balanţă - - - Total: - Total: - - - Your current total balance - BalanÅ£a totală curentă - - - Your current balance in watch-only addresses - Soldul dvs. curent în adresele doar-supraveghere - - - Spendable: - Cheltuibil: - - - Recent transactions - TranzacÅ£ii recente - - - Unconfirmed transactions to watch-only addresses - TranzacÅ£ii neconfirmate la adresele doar-supraveghere - - - Mined balance in watch-only addresses that has not yet matured - Balanţă minată în adresele doar-supraveghere care nu s-a maturizat încă - - - Current total balance in watch-only addresses - Soldul dvs. total în adresele doar-supraveghere - - - - PaymentServer - - URI handling - Gestionare URI - - - Invalid payment address %1 - Adresă pentru plată nevalidă %1 - - - Payment request rejected - Cerere de plată refuzată - - - Payment request network doesn't match client network. - Cererea de plată din reÅ£ea nu se potriveÅŸte cu clientul din reÅ£ea - - - Payment request is not initialized. - Cererea de plată nu este iniÅ£ializată. - - - Requested payment amount of %1 is too small (considered dust). - Suma cerută de plată de %1 este prea mică (considerată praf). - - - Payment request error - Eroare la cererea de plată - - - Cannot start bitcoin: click-to-pay handler - Nu poate porni bitcoin: manipulator clic-pentru-plată - - - Payment request fetch URL is invalid: %1 - URL-ul cererii de plată preluat nu este valid: %1 - - - URI cannot be parsed! This can be caused by an invalid Bitcoin address or malformed URI parameters. - URI nu poate fi analizat! Acest lucru poate fi cauzat de o adresă Bitcoin nevalidă sau parametri URI deformaÅ£i. - - - Payment request file handling - Manipulare fiÅŸier cerere de plată - - - Payment request file cannot be read! This can be caused by an invalid payment request file. - FiÅŸierul cerere de plată nu poate fi citit! Cauza poate fi un fiÅŸier cerere de plată nevalid. - - - Payment request expired. - Cererea de plată a expirat. - - - Unverified payment requests to custom payment scripts are unsupported. - Cererile de plată neverificate prin script-uri personalizate de plată nu sînt suportate. - - - Invalid payment request. - Cerere de plată nevalidă. - - - Refund from %1 - Rambursare de la %1 - - - Payment request %1 is too large (%2 bytes, allowed %3 bytes). - Cererea de plată %1 este prea mare (%2 octeÅ£i, permis %3 octeÅ£i). - - - Payment request DoS protection - ProtecÅ£ie DoS cerere de plată - - - Error communicating with %1: %2 - Eroare la comunicarea cu %1: %2 - - - Payment request cannot be parsed! - Cererea de plată nu poate fi analizată! - - - Bad response from server %1 - Răspuns greÅŸit de la server %1 - - - Payment acknowledged - Plată acceptată - - - Network request error - Eroare în cererea de reÅ£ea - - - - PeerTableModel - - User Agent - Agent utilizator - - - Ping Time - Timp ping - - - - QObject - - Amount - Cantitate - - - Enter a Bitcoin address (e.g. %1) - IntroduceÅ£i o adresă Bitcoin (de exemplu %1) - - - %1 d - %1 z - - - %1 h - %1 h - - - %1 m - %1 m - - - %1 s - %1 s - - - None - Niciuna - - - N/A - N/A - - - %1 ms - %1 ms - - - - QRImageWidget - - &Save Image... - &Salvează imagine... - - - &Copy Image - &Copiază imaginea - - - Save QR Code - Salvează codul QR - - - PNG Image (*.png) - Imagine de tip PNG (*.png) - - - - RPCConsole - - Client name - Nume client - - - N/A - indisponibil - - - Client version - Versiune client - - - &Information - &InformaÅ£ii - - - Debug window - Fereastra de depanare - - - General - General - - - Using OpenSSL version - FoloseÅŸte OpenSSL versiunea - - - Using BerkeleyDB version - FoloseÅŸte BerkeleyDB versiunea - - - Startup time - Durata pornirii - - - Network - ReÅ£ea - - - Name - Nume - - - Number of connections - Numărul de conexiuni - - - Block chain - LanÅ£ de blocuri - - - Current number of blocks - Numărul curent de blocuri - - - Received - RecepÅ£ionat - - - Sent - Trimis - - - &Peers - &Parteneri - - - Select a peer to view detailed information. - SelectaÅ£i un partener pentru a vedea informaÅ£iile detaliate. - - - Direction - DirecÅ£ie - - - Version - Versiune - - - User Agent - Agent utilizator - - - Services - Servicii - - - Connection Time - Timp conexiune - - - Last Send - Ultima trimitere - - - Last Receive - Ultima primire - - - Bytes Sent - OcteÅ£i trimiÅŸi - - - Bytes Received - OcteÅ£i primiÅ£i - - - Ping Time - Timp ping - - - Last block time - Data ultimului bloc - - - &Open - &Deschide - - - &Console - &Consolă - - - &Network Traffic - Trafic reÅ£ea - - - &Clear - &Curăţă - - - Totals - Totaluri - - - In: - Intrare: - - - Out: - IeÅŸire: - - - Build date - Construit la data - - - Debug log file - FiÅŸier jurnal depanare - - - Clear console - Curăţă consola - - - Welcome to the Bitcoin Core RPC console. - Bun venit la consola Nucleului Bitcoin RPC. - - - Use up and down arrows to navigate history, and <b>Ctrl-L</b> to clear screen. - FolosiÅ£i săgetile sus ÅŸi jos pentru a naviga în istoric ÅŸi <b>Ctrl-L</b> pentru a curăţa. - - - Type <b>help</b> for an overview of available commands. - ScrieÅ£i <b>help</b> pentru a vedea comenzile disponibile. - - - %1 B - %1 B - - - %1 KB - %1 KB - - - %1 MB - %1 MB - - - %1 GB - %1 GB - - - via %1 - via %1 - - - never - niciodată - - - Inbound - Intrare - - - Outbound - IeÅŸire - - - Unknown - Necunoscut - - - Fetching... - Preluare... - - - - ReceiveCoinsDialog - - &Amount: - Sum&a: - - - &Label: - &Etichetă: - - - &Message: - &Mesaj: - - - Reuse one of the previously used receiving addresses. Reusing addresses has security and privacy issues. Do not use this unless re-generating a payment request made before. - RefoloseÅŸte una din adresele de primire folosite anterior. Refolosirea adreselor poate crea probleme de securitate ÅŸi confidenÅ£ialitate. Nu folosiÅ£i această opÅ£iune decît dacă o cerere de regenerare a plăţii a fost făcută anterior. - - - R&euse an existing receiving address (not recommended) - R&efoloseÅŸte o adresă de primire (nu este recomandat) - - - An optional message to attach to the payment request, which will be displayed when the request is opened. Note: The message will not be sent with the payment over the Bitcoin network. - Un mesaj opÅ£ional de ataÅŸat la cererea de plată, care va fi afiÅŸat cînd cererea este deschisă. Notă: Acest mesaj nu va fi trimis cu plata către reÅ£eaua Bitcoin. - - - An optional label to associate with the new receiving address. - O etichetă opÅ£ională de asociat cu adresa de primire. - - - Use this form to request payments. All fields are <b>optional</b>. - FoloseÅŸte acest formular pentru a solicita plăţi. Toate cîmpurile sînt <b>opÅ£ionale</b>. - - - An optional amount to request. Leave this empty or zero to not request a specific amount. - O sumă opÅ£ională de cerut. LăsaÅ£i gol sau zero pentru a nu cere o sumă anume. - - - Clear all fields of the form. - Curăţă toate cîmpurile formularului. - - - Clear - Curăţă - - - Requested payments history - Istoricul plăţilor cerute - - - &Request payment - &Cerere plată - - - Show the selected request (does the same as double clicking an entry) - Arată cererea selectată (acelaÅŸi lucru ca ÅŸi dublu-clic pe o înregistrare) - - - Show - Arată - - - Remove the selected entries from the list - ÃŽnlătură intrările selectate din listă - - - Remove - ÃŽnlătură - - - Copy label - Copiază eticheta - - - Copy message - Copiază mesajul - - - Copy amount - Copiază suma - - - - ReceiveRequestDialog - - QR Code - Cod QR - - - Copy &URI - Copiază &URl - - - Copy &Address - Copiază &adresa - - - &Save Image... - &Salvează imaginea... - - - Request payment to %1 - Cere plata pentru %1 - - - Payment information - InformaÅ£iile plăţii - - - URI - URI - - - Address - Adresă - - - Amount - Sumă - - - Label - Etichetă - - - Message - Mesaj - - - Resulting URI too long, try to reduce the text for label / message. - URI rezultat este prea lung, încearcaÅ£i să reduceÅ£i textul pentru etichetă / mesaj. - - - Error encoding URI into QR Code. - Eroare la codarea URl-ului în cod QR. - - - - RecentRequestsTableModel - - Date - Data - - - Label - Etichetă - - - Message - Mesaj - - - Amount - Sumă - - - (no label) - (fără etichetă) - - - (no message) - (nici un mesaj) - - - (no amount) - (sumă nulă) - - - - SendCoinsDialog - - Send Coins - Trimite monede - - - Coin Control Features - Caracteristici de control ale monedei - - - Inputs... - Intrări... - - - automatically selected - selecÅ£ie automată - - - Insufficient funds! - Fonduri insuficiente! - - - Quantity: - Cantitate: - - - Bytes: - OcteÅ£i: - - - Amount: - Sumă: - - - Priority: - Prioritate: - - - Fee: - Taxă: - - - After Fee: - După taxă: - - - Change: - Rest: - - - If this is activated, but the change address is empty or invalid, change will be sent to a newly generated address. - Dacă este activat, dar adresa de rest este goală sau nevalidă, restul va fi trimis la o adresă nou generată. - - - Custom change address - Adresă personalizată de rest - - - Transaction Fee: - Taxă tranzacÅ£ie: - - - Choose... - AlegeÅ£i... - - - per kilobyte - per kilooctet - - - Hide - Ascunde - - - total at least - total cel puÅ£in - - - Recommended: - Recomandat: - - - Custom: - Personalizat: - - - Confirmation time: - Timp confirmare: - - - normal - normal - - - fast - rapid - - - Send as zero-fee transaction if possible - Trimite ca taxă zero dacă este posibil - - - (confirmation may take longer) - (confirmarea poate dura mai mult) - - - Send to multiple recipients at once - Trimite simultan către mai mulÅ£i destinatari - - - Add &Recipient - Adaugă destinata&r - - - Clear all fields of the form. - Åžterge toate cîmpurile formularului. - - - Dust: - Praf: - - - Clear &All - Curăţă to&ate - - - Balance: - Balanţă: - - - Confirm the send action - Confirmă operaÅ£iunea de trimitere - - - S&end - Trimit&e - - - Confirm send coins - Confirmă trimiterea de monede - - - %1 to %2 - %1 la %2 - - - Copy quantity - Copiază cantitea - - - Copy amount - Copiază suma - - - Copy fee - Copiază taxa - - - Copy after fee - Copiază după taxă - - - Copy bytes - Copiază octeÅ£i - - - Copy priority - Copiază prioritatea - - - Copy change - Copiază rest - - - or - sau - - - The amount to pay must be larger than 0. - Suma de plată trebuie să fie mai mare decît 0. - - - The amount exceeds your balance. - Suma depăşeÅŸte soldul contului. - - - The total exceeds your balance when the %1 transaction fee is included. - Totalul depăşeÅŸte soldul contului dacă se include ÅŸi plata taxei de %1. - - - Transaction creation failed! - Creare tranzacÅ£ie nereuÅŸită! - - - 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. - TranzacÅ£ia a fost respinsă! Acest lucru se poate întîmpla dacă o parte din monedele tale din portofel au fost deja cheltuite, la fel ca ÅŸi cum aÅ£i fi folosit o copie a wallet.dat ÅŸi monedele au fost cheltuite în copie, dar nu au fost marcate ca ÅŸi cheltuite ÅŸi aici. - - - Payment request expired. - Cererea de plată a expirat. - - - Pay only the minimum fee of %1 - PlăteÅŸte doar taxa minimă de %1 - - - The recipient address is not valid. Please recheck. - Adresa destinatarului nu este validă, vă rugăm să o verificaÅ£i. - - - Warning: Invalid Bitcoin address - AtenÅ£ie: Adresa bitcoin nevalidă! - - - (no label) - (fără etichetă) - - - Warning: Unknown change address - AtenÅ£ie: Adresă de rest necunoscută - - - Copy dust - Copiază praf - - - Are you sure you want to send? - Sigur doriÅ£i să trimiteÅ£i? - - - added as transaction fee - adăugat ca taxă de tranzacÅ£ie - - - - SendCoinsEntry - - A&mount: - Su&mă: - - - Pay &To: - PlăteÅŸte că&tre: - - - Enter a label for this address to add it to your address book - IntroduceÅ£i o etichetă pentru această adresă pentru a fi adăugată în lista dvs. de adrese - - - &Label: - &Etichetă: - - - Choose previously used address - AlegeÅ£i adrese folosite anterior - - - This is a normal payment. - Aceasta este o tranzacÅ£ie normală. - - - The Bitcoin address to send the payment to - Adresa bitcoin către care se face plata - - - Alt+A - Alt+A - - - Paste address from clipboard - LipeÅŸte adresa din clipboard - - - Alt+P - Alt+P - - - Remove this entry - ÃŽnlătură această intrare - - - Message: - Mesaj: - - - Enter a label for this address to add it to the list of used addresses - IntroduceÅ£i eticheta pentru ca această adresa să fie introdusă în lista de adrese folosite - - - A message that was attached to the bitcoin: URI which will be stored with the transaction for your reference. Note: This message will not be sent over the Bitcoin network. - un mesaj a fost ataÅŸat la bitcoin: URI care va fi stocat cu tranzacÅ£ia pentru referinÅ£a dvs. Notă: Acest mesaj nu va fi trimis către reÅ£eaua bitcoin. - - - Pay To: - PlăteÅŸte către: - - - Memo: - Memo: - - - - ShutdownWindow - - Bitcoin Core is shutting down... - Nucleul Bitcoin se închide... - - - Do not shut down the computer until this window disappears. - Nu închide calculatorul pînă ce această fereastră nu dispare. - - - - SignVerifyMessageDialog - - Signatures - Sign / Verify a Message - Semnaturi - Semnează/verifică un mesaj - - - &Sign Message - &Semnează mesaj - - - The Bitcoin address to sign the message with - Adresa cu care semnaÅ£i mesajul - - - Choose previously used address - AlegeÅ£i adrese folosite anterior - - - Alt+A - Alt+A - - - Paste address from clipboard - LipeÅŸte adresa copiată din clipboard - - - Alt+P - Alt+P - - - Enter the message you want to sign here - IntroduceÅ£i mesajul pe care vreÅ£i să-l semnaÅ£i, aici - - - Signature - Semnătură - - - Copy the current signature to the system clipboard - Copiază semnatura curentă în clipboard-ul sistemului - - - Sign the message to prove you own this Bitcoin address - Semnează mesajul pentru a dovedi ca deÅ£ineÅ£i acestă adresă Bitcoin - - - Sign &Message - Semnează &mesaj - - - Reset all sign message fields - Resetează toate cîmpurile mesajelor semnate - - - Clear &All - Curăţă to&ate - - - &Verify Message - &Verifică mesaj - - - The Bitcoin address the message was signed with - IntroduceÅ£i o adresă Bitcoin - - - Verify the message to ensure it was signed with the specified Bitcoin address - VerificaÅ£i mesajul pentru a vă asigura că a fost semnat cu adresa Bitcoin specificată - - - Verify &Message - Verifică &mesaj - - - Reset all verify message fields - Resetează toate cîmpurile mesajelor semnate - - - Click "Sign Message" to generate signature - FaceÅ£i clic pe "Semneaza msaj" pentru a genera semnătura - - - The entered address is invalid. - Adresa introdusă nu este validă - - - Please check the address and try again. - Vă rugăm verificaÅ£i adresa ÅŸi încercaÅ£i din nou. - - - The entered address does not refer to a key. - Adresa introdusă nu se referă la o cheie. - - - Wallet unlock was cancelled. - Blocarea portofelului a fost întreruptă. - - - Private key for the entered address is not available. - Cheia privată pentru adresa introdusă nu este validă. - - - Message signing failed. - Semnarea mesajului nu a reuÅŸit. - - - Message signed. - Mesaj semnat. - - - The signature could not be decoded. - Această semnatură nu a putut fi decodată. - - - Please check the signature and try again. - Vă rugăm verificaÅ£i semnătura ÅŸi încercaÅ£i din nou. - - - The signature did not match the message digest. - Semnatura nu se potriveÅŸte cu mesajul. - - - Message verification failed. - Verificarea mesajului nu a reuÅŸit. - - - Message verified. - Mesaj verificat. - - - - SplashScreen - - Bitcoin Core - Nucleul Bitcoin - - - The Bitcoin Core developers - Dezvoltatorii Nucleului Bitcoin - - - [testnet] - [testnet] - - - - TrafficGraphWidget - - KB/s - KB/s - - - - TransactionDesc - - Open until %1 - Deschis pînă la %1 - - - conflicted - în conflict - - - %1/offline - %1/deconectat - - - %1/unconfirmed - %1/neconfirmat - - - %1 confirmations - %1 confirmări - - - Status - Stare - - - , broadcast through %n node(s) - , distribuit prin %n nod, distribuit prin %n noduri, distribuit prin %n de noduri - - - Date - Data - - - Source - Sursa - - - Generated - Generat - - - From - De la - - - To - Către - - - own address - adresa proprie - - - watch-only - doar-supraveghere - - - label - etichetă - - - Credit - Credit - - - matures in %n more block(s) - se maturizează în încă %n blocse maturizează în încă %n blocurise maturizează în încă %n de blocuri - - - not accepted - neacceptat - - - Debit - Debit - - - Total debit - Total debit - - - Total credit - Total credit - - - Transaction fee - Taxă tranzacÅ£ie - - - Net amount - Suma netă - - - Message - Mesaj - - - Comment - Comentariu - - - Transaction ID - ID-ul tranzacÅ£ie - - - Merchant - Comerciant - - - Generated coins must mature %1 blocks before they can be spent. When you generated this block, it was broadcast to the network to be added to the block chain. If it fails to get into the chain, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - Monezile generate trebuie să crească %1 blocuri înainte să poată fi cheltuite. Cînd aÅ£i generat acest bloc, a fost transmis reÅ£elei pentru a fi adaugat la lanÅ£ul de blocuri. Aceasta se poate întîmpla ocazional dacă alt nod generează un bloc la numai cîteva secunde de al dvs. - - - Debug information - InformaÅ£ii pentru depanare - - - Transaction - TranzacÅ£ie - - - Inputs - Intrări - - - Amount - Sumă - - - true - adevărat - - - false - fals - - - , has not been successfully broadcast yet - , nu s-a propagat încă - - - unknown - necunoscut - - - - TransactionDescDialog - - Transaction details - Detaliile tranzacÅ£iei - - - This pane shows a detailed description of the transaction - Acest panou arată o descriere detaliată a tranzacÅ£iei - - - - TransactionTableModel - - Date - Data - - - Type - Tip - - - Immature (%1 confirmations, will be available after %2) - Imatur (%1 confirmări, va fi disponibil după %2) - - - Open until %1 - Deschis până la %1 - - - Confirmed (%1 confirmations) - Confirmat (%1 confirmări) - - - This block was not received by any other nodes and will probably not be accepted! - Acest bloc nu a fost recepÅ£ionat de nici un alt nod ÅŸi probabil nu va fi acceptat! - - - Generated but not accepted - Generat dar neacceptat - - - Offline - Deconectat - - - Label - Etichetă - - - Unconfirmed - Neconfirmat - - - Confirming (%1 of %2 recommended confirmations) - Confirmare (%1 din %2 confirmări recomandate) - - - Conflicted - ÃŽn conflict - - - Received with - RecepÅ£ionat cu - - - Received from - Primit de la - - - Sent to - Trimis către - - - Payment to yourself - Plată către dvs. - - - Mined - Minerit - - - watch-only - doar-supraveghere - - - (n/a) - indisponibil - - - Transaction status. Hover over this field to show number of confirmations. - Starea tranzacÅ£iei. TreceÅ£i cu mouse-ul peste acest cîmp pentru afiÅŸarea numărului de confirmări. - - - Date and time that the transaction was received. - Data ÅŸi ora la care a fost recepÅ£ionată tranzacÅ£ia. - - - Type of transaction. - Tipul tranzacÅ£iei. - - - Whether or not a watch-only address is involved in this transaction. - Indiferent dacă sau nu o adresă doar-suăpraveghere este implicată în această tranzacÅ£ie. - - - Amount removed from or added to balance. - Suma extrasă sau adăugată la sold. - - - - TransactionView - - All - Toate - - - Today - Astăzi - - - This week - Săptămîna aceasta - - - This month - Luna aceasta - - - Last month - Luna trecută - - - This year - Anul acesta - - - Range... - Interval... - - - Received with - RecepÅ£ionat cu - - - Sent to - Trimis către - - - To yourself - Către dvs. - - - Mined - Minerit - - - Other - Altele - - - Enter address or label to search - IntroduceÅ£i adresa sau eticheta pentru căutare - - - Min amount - Suma minimă - - - Copy address - Copiază adresa - - - Copy label - Copiază eticheta - - - Copy amount - Copiază suma - - - Copy transaction ID - Copiază ID tranzacÅ£ie - - - Edit label - Editează eticheta - - - Show transaction details - Arată detaliile tranzacÅ£iei - - - Export Transaction History - Export istoric tranzacÅ£ii - - - Watch-only - Doar-supraveghere - - - Exporting Failed - Export nereuÅŸit - - - There was an error trying to save the transaction history to %1. - S-a produs o eroare la salvarea istoricului tranzacÅ£iilor la %1. - - - Exporting Successful - Export reuÅŸit - - - The transaction history was successfully saved to %1. - Istoricul tranzacÅ£iilor a fost salvat cu succes la %1. - - - Comma separated file (*.csv) - FiÅŸier text cu valori separate prin virgulă (*.csv) - - - Confirmed - Confirmat - - - Date - Data - - - Type - Tip - - - Label - Etichetă - - - Address - Adresă - - - ID - ID - - - Range: - Interval: - - - to - către - - - - UnitDisplayStatusBarControl - - Unit to show amounts in. Click to select another unit. - Unitatea în care sînt arătate sumele. FaceÅ£i clic pentru a selecta o altă unitate. - - - - WalletFrame - - No wallet has been loaded. - Nu a fost încărcat nici un portofel. - - - - WalletModel - - Send Coins - Trimitere bitcoin - - - - WalletView - - &Export - &Export - - - Export the data in the current tab to a file - Exportă datele din tab-ul curent într-un fiÅŸier - - - Backup Wallet - Copie de siguranţă portofel - - - Wallet Data (*.dat) - Date portofel (*.dat) - - - Backup Failed - Copierea de siguranţă nu a reuÅŸit - - - There was an error trying to save the wallet data to %1. - S-a produs o eroare la salvarea datelor portofelului la %1. - - - The wallet data was successfully saved to %1. - Datele portofelului s-au salvat cu succes la %1. - - - Backup Successful - Copie de siguranţă efectuată cu succes - - - - bitcoin-core - - Options: - OpÅ£iuni: - - - Specify data directory - SpecificaÅ£i dosarul de date - - - Connect to a node to retrieve peer addresses, and disconnect - Se conectează la un nod pentru a obÅ£ine adresele partenerilor, ÅŸi apoi se deconectează - - - Specify your own public address - SpecificaÅ£i adresa dvs. publică - - - Accept command line and JSON-RPC commands - Acceptă comenzi din linia de comandă ÅŸi comenzi JSON-RPC - - - Run in the background as a daemon and accept commands - Rulează în fundal ca un demon ÅŸi acceptă comenzi - - - Use the test network - Utilizează reÅ£eaua de test - - - Accept connections from outside (default: 1 if no -proxy or -connect) - Acceptă conexiuni din afară (implicit: 1 dacă nu se foloseÅŸte -proxy sau -connect) - - - Bind to given address and always listen on it. Use [host]:port notation for IPv6 - AtaÅŸaÅ£i adresei date ÅŸi ascultaÅ£i totdeauna pe ea. FolosiÅ£i notaÅ£ia [host]:port pentru IPv6 - - - Distributed under the MIT software license, see the accompanying file COPYING or <http://www.opensource.org/licenses/mit-license.php>. - Distribuit sub licenÅ£a de programe MIT/X11, vezi fiÅŸierul însoÅ£itor COPYING sau <http://www.opensource.org/licenses/mit-license.php>. - - - Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) - Execută comanda cînd o tranzacÅ£ie a portofelului se schimbă (%s în cmd este înlocuit de TxID) - - - Set the number of script verification threads (%u to %d, 0 = auto, <0 = leave that many cores free, default: %d) - Setează numărul de thread-uri de verificare a script-urilor (%u la %d, 0 = auto, <0 = lasă atîtea nuclee libere, implicit: %d) - - - This is a pre-release test build - use at your own risk - do not use for mining or merchant applications - Aceasta este o versiune de test preliminară - vă asumaÅ£i riscul folosind-o - nu folosiÅ£i pentru minerit sau aplicaÅ£iile comercianÅ£ilor - - - Unable to bind to %s on this computer. Bitcoin Core is probably already running. - Nu se poate lega la %s pe acest calculator. Nucleul Bitcoin probabil deja rulează. - - - Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. - AtenÅ£ie: setarea -paytxfee este foarte mare! Aceasta este taxa tranzacÅ£iei pe care o veÅ£i plăti dacă trimiteÅ£i o tranzacÅ£ie. - - - Warning: The network does not appear to fully agree! Some miners appear to be experiencing issues. - AtenÅ£ie: ReÅ£eaua nu pare să fie de acord în totalitate! Aparent niÅŸte mineri au probleme. - - - Warning: We do not appear to fully agree with our peers! You may need to upgrade, or other nodes may need to upgrade. - AtenÅ£ie: Aparent, nu sîntem de acord cu toÅ£i partenerii noÅŸtri! Va trebui să faceÅ£i o actualizare, sau alte noduri necesită actualizare. - - - Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. - AtenÅ£ie: eroare la citirea fiÅŸierului wallet.dat! Toate cheile sînt citite corect, dar datele tranzactiei sau anumite intrări din agenda sînt incorecte sau lipsesc. - - - 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. - AtenÅ£ie: fiÅŸierul wallet.dat este corupt, date salvate! FiÅŸierul original wallet.dat a fost salvat ca wallet.{timestamp}.bak in %s; dacă balansul sau tranzactiile sînt incorecte ar trebui să restauraÅ£i dintr-o copie de siguranţă. - - - (default: 1) - (iniÅ£ial: 1) - - - <category> can be: - <category> poate fi: - - - Attempt to recover private keys from a corrupt wallet.dat - ÃŽncercare de recuperare a cheilor private dintr-un wallet.dat corupt - - - Block creation options: - OpÅ£iuni creare bloc: - - - Connect only to the specified node(s) - Conectare doar la nod(urile) specificate - - - Connection options: - OpÅ£iuni conexiune: - - - Corrupted block database detected - Bloc defect din baza de date detectat - - - Debugging/Testing options: - OpÅ£iuni Depanare/Test: - - - Do not load the wallet and disable wallet RPC calls - Nu încarcă portofelul ÅŸi dezactivează solicitările portofel RPC - - - Do you want to rebuild the block database now? - DoriÅ£i să reconstruiÅ£i baza de date blocuri acum? - - - Error initializing block database - Eroare la iniÅ£ializarea bazei de date de blocuri - - - Error initializing wallet database environment %s! - Eroare la iniÅ£ializarea mediului de bază de date a portofelului %s! - - - Error loading block database - Eroare la încărcarea bazei de date de blocuri - - - Error opening block database - Eroare la deschiderea bazei de date de blocuri - - - Error: Disk space is low! - Eroare: SpaÅ£iu pe disc redus! - - - Failed to listen on any port. Use -listen=0 if you want this. - Nu s-a reuÅŸit ascultarea pe orice port. FolosiÅ£i -listen=0 dacă vreÅ£i asta. - - - If <category> is not supplied, output all debugging information. - Dacă <category> nu este furnizat, produce toate informaÅ£iile de depanare. - - - Importing... - Import... - - - Incorrect or no genesis block found. Wrong datadir for network? - Incorect sau nici un bloc de geneza găsit. Directorul de retea greÅŸit? - - - Invalid -onion address: '%s' - Adresa -onion nevalidă: '%s' - - - Not enough file descriptors available. - Nu sînt destule descriptoare disponibile. - - - Only connect to nodes in network <net> (ipv4, ipv6 or onion) - Se conectează doar la noduri în reÅ£eaua <net> (ipv4, ipv6 sau onion) - - - Set database cache size in megabytes (%d to %d, default: %d) - Setează mărimea bazei de date cache în megaocteÅ£i (%d la %d, implicit: %d) - - - Set maximum block size in bytes (default: %d) - SetaÅ£i dimensiunea maximă a unui bloc în bytes (implicit: %d) - - - Specify wallet file (within data directory) - Specifică fiÅŸierul portofel (în dosarul de date) - - - Use UPnP to map the listening port (default: %u) - FoloseÅŸte mapare UPnP pentru asculatere port (implicit: %u) - - - Verifying blocks... - Se verifică blocurile... - - - Verifying wallet... - Se verifică portofelul... - - - Wallet %s resides outside data directory %s - Portofelul %s se află în afara dosarului de date %s - - - Wallet options: - OpÅ£iuni portofel: - - - You need to rebuild the database using -reindex to change -txindex - Trebuie să reconstruiÅ£i baza de date folosind -reindex pentru a schimba -txindex - - - Imports blocks from external blk000??.dat file - Importă blocuri dintr-un fiÅŸier extern blk000??.dat - - - 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 - Permite conexiunile JSON-RPC din sursa specificată. Valid pentru <ip> sînt IP singulare (ex. 1.2.3.4), o reÅ£ea/mască-reÅ£ea (ex. 1.2.3.4/255.255.255.0) sau o reÅ£ea/CIDR (ex. 1.2.3.4/24). Această opÅ£iune poate fi specificată de mai multe ori - - - An error occurred while setting up the RPC address %s port %u for listening: %s - A apărut o eroare la setarea adresei RPC %s portul %u pentru ascultare: %s - - - Cannot obtain a lock on data directory %s. Bitcoin Core is probably already running. - Nu se poate obÅ£ine blocarea folderului cu date %s. Nucleul Bitcoin probabil deja rulează. - - - Execute command when a relevant alert is received or we see a really long fork (%s in cmd is replaced by message) - Execută comanda cînd o alertă relevantă este primită sau vedem o bifurcaÅ£ie foarte lungă (%s în cmd este înlocuit de mesaj) - - - Set maximum size of high-priority/low-fee transactions in bytes (default: %d) - Setează mărimea pentru tranzacÅ£iile prioritare/taxe mici în octeÅ£i (implicit: %d) - - - 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. - Acest produs include programe dezvoltate de către Proiectul OpenSSL pentru a fi folosite în OpenSSL Toolkit <https://www.openssl.org/> ÅŸi programe criptografice scrise de către Eric Young ÅŸi programe UPnP scrise de către Thomas Bernard. - - - Accept public REST requests (default: %u) - Acceptă cererile publice REST (implicit: %u) - - - Choose data directory on startup (default: 0) - Alege dosarul de date la pornire (implicit: 0) - - - Connect through SOCKS5 proxy - Conectare prin proxy SOCKS5 - - - Copyright (C) 2009-%i The Bitcoin Core Developers - Copyright (C) 2009-%i Dezvoltatorii Bitcoin - - - Error reading from database, shutting down. - Eroare la citirea bazei de date. Oprire. - - - Error: Unsupported argument -tor found, use -onion. - Eroare: Argument nesuportat -tor găsit, folosiÅ£i -onion. - - - Fee (in BTC/kB) to add to transactions you send (default: %s) - Taxa (în BTC/kB) de adăugat la tranzacÅ£iile pe care le trimiteÅ£i(implicit: %s) - - - Information - InformaÅ£ie - - - Initialization sanity check failed. Bitcoin Core is shutting down. - Nu s-a reuÅŸit iniÅ£ierea verificării sănătăţii. Nucleul Bitcoin se opreÅŸte. - - - Invalid amount for -maxtxfee=<amount>: '%s' - Sumă nevalidă pentru -maxtxfee=<suma>: '%s' - - - Invalid amount for -minrelaytxfee=<amount>: '%s' - Sumă nevalidă pentru -minrelaytxfee=<suma>:'%s' - - - Invalid amount for -mintxfee=<amount>: '%s' - Sumă nevalidă pentru -mintxfee=<suma>: '%s' - - - Invalid amount for -paytxfee=<amount>: '%s' (must be at least %s) - Sumă nevalidă pentru -paytxfee=<suma>: '%s' (trebuie să fie cel puÅ£in %s) - - - Invalid netmask specified in -whitelist: '%s' - Mască reÅ£ea nevalidă specificată în -whitelist: '%s' - - - Need to specify a port with -whitebind: '%s' - Trebuie să specificaÅ£i un port cu -whitebind: '%s' - - - RPC SSL options: (see the Bitcoin Wiki for SSL setup instructions) - OpÅ£iuni RPC SSL: (vedeÅ£i Wiki Bitcoin pentru intrucÅ£iunile de setare SSL) - - - RPC server options: - OpÅ£iuni server RPC: - - - RPC support for HTTP persistent connections (default: %d) - RPC suportă pentru HTTP conexiuni persistente (implicit: %d) - - - Send trace/debug info to console instead of debug.log file - Trimite informaÅ£iile trace/debug la consolă în locul fiÅŸierului debug.log - - - Send transactions as zero-fee transactions if possible (default: %u) - Trimitere tranzacÅ£ii ca tranzacÅ£ii taxă-zero dacă este posibil (implicit: %u) - - - Set SSL root certificates for payment request (default: -system-) - Setare rădăcină certificat SSL pentru cerere de plată (implicit: -sistem- ) - - - Set language, for example "de_DE" (default: system locale) - Setează limba, de exemplu: "de_DE" (implicit: sistem local) - - - Show all debugging options (usage: --help -help-debug) - Arată toate opÅ£iunile de depanare (uz: --help -help-debug) - - - Show splash screen on startup (default: 1) - AfiÅŸează pe ecran splash la pornire (implicit: 1) - - - Shrink debug.log file on client startup (default: 1 when no -debug) - MicÅŸorează fiÅŸierul debug.log la pornirea clientului (implicit: 1 cînd nu se foloseÅŸte -debug) - - - Signing transaction failed - Nu s-a reuÅŸit semnarea tranzacÅ£iei - - - Start minimized - ÃŽncepe minimizat - - - This is experimental software. - Acesta este un program experimental. - - - Transaction amount too small - Suma tranzacÅ£ionată este prea mică - - - Transaction amounts must be positive - Sumele tranzacÅ£ionate trebuie să fie pozitive - - - Transaction too large for fee policy - TranzacÅ£ie prea mare pentru politică gratis - - - Transaction too large - TranzacÅ£ie prea mare - - - Unable to bind to %s on this computer (bind returned error %s) - Nu se poate lega la %s pe acest calculator. (Legarea a întors eroarea %s) - - - Use UPnP to map the listening port (default: 1 when listening) - FoloseÅŸte UPnP pentru a vedea porturile (implicit: 1 cînd ascultă) - - - Username for JSON-RPC connections - Utilizator pentru conexiunile JSON-RPC - - - Wallet needed to be rewritten: restart Bitcoin Core to complete - Portofelul necesită rescrierea: reporniÅ£i Nucleul Bitcoin pentru completare - - - Warning - Avertisment - - - Warning: Unsupported argument -benchmark ignored, use -debug=bench. - Avertisment: Argument nesuportat -benchmark ignorat, folosiÅ£i -debug=bench. - - - Warning: Unsupported argument -debugnet ignored, use -debug=net. - Avertisment: Argument nesuportat -debugnet ignorat, folosiÅ£i -debug=net. - - - Zapping all transactions from wallet... - Åžterge toate tranzacÅ£iile din portofel... - - - on startup - la pornire - - - wallet.dat corrupt, salvage failed - wallet.dat corupt, salvare nereuÅŸită - - - Password for JSON-RPC connections - Parola pentru conexiunile JSON-RPC - - - Execute command when the best block changes (%s in cmd is replaced by block hash) - Execută comanda cînd cel mai bun bloc se modifică (%s în cmd este înlocuit cu hash-ul blocului) - - - Upgrade wallet to latest format - Actualizează portofelul la ultimul format - - - Rescan the block chain for missing wallet transactions - Rescanează lanÅ£ul de bloc pentru tranzacÅ£iile portofel lipsă - - - Use OpenSSL (https) for JSON-RPC connections - FoloseÅŸte OpenSSL (https) pentru conexiunile JSON-RPC - - - This help message - Acest mesaj de ajutor - - - Allow DNS lookups for -addnode, -seednode and -connect - Permite căutări DNS pentru -addnode, -seednode ÅŸi -connect - - - Loading addresses... - ÃŽncărcare adrese... - - - Error loading wallet.dat: Wallet corrupted - Eroare la încărcarea wallet.dat: Portofel corupt - - - Output debugging information (default: %u, supplying <category> is optional) - Produce toate informaÅ£iile de depanare (implicit: %u <category> furnizată este opÅ£ională) - - - (default: %s) - (implicit: %s) - - - Acceptable ciphers (default: %s) - Cifruri acceptabile (implicit: %s) - - - Error loading wallet.dat - Eroare la încărcarea wallet.dat - - - Generate coins (default: %u) - Generează monede (implicit: %u) - - - How many blocks to check at startup (default: %u, 0 = all) - Cîte blocuri verifică la pornire (implicit: %u, 0 = toate) - - - Invalid -proxy address: '%s' - Adresa -proxy nevalidă: '%s' - - - Server certificate file (default: %s) - FiÅŸierul certificat al serverului (implicit: %s) - - - Server private key (default: %s) - Cheia privată a serverului (implicit: %s) - - - Set minimum block size in bytes (default: %u) - Setare mărime minimă bloc în octeÅ£i (implicit: %u) - - - Specify configuration file (default: %s) - SpecificaÅ£i fiÅŸierul configuraÅ£ie (implicit: %s) - - - Specify pid file (default: %s) - Specifică fiÅŸierul pid (implicit: %s) - - - Unknown network specified in -onlynet: '%s' - ReÅ£eaua specificată în -onlynet este necunoscută: '%s' - - - Cannot resolve -bind address: '%s' - Nu se poate rezolva adresa -bind: '%s' - - - Cannot resolve -externalip address: '%s' - Nu se poate rezolva adresa -externalip: '%s' - - - Invalid amount for -paytxfee=<amount>: '%s' - Suma nevalidă pentru -paytxfee=<amount>: '%s' - - - Insufficient funds - Fonduri insuficiente - - - Loading block index... - ÃŽncărcare index bloc... - - - Add a node to connect to and attempt to keep the connection open - Adaugă un nod la care te poÅ£i conecta pentru a menÅ£ine conexiunea deschisă - - - Loading wallet... - ÃŽncărcare portofel... - - - Cannot downgrade wallet - Nu se poate retrograda portofelul - - - Cannot write default address - Nu se poate scrie adresa implicită - - - Rescanning... - Rescanare... - - - Done loading - ÃŽncărcare terminată - - - Error - Eroare - - - \ No newline at end of file diff --git a/src/qt/locale/bitcoin_ru.ts b/src/qt/locale/bitcoin_ru.ts deleted file mode 100644 index 592c97266..000000000 --- a/src/qt/locale/bitcoin_ru.ts +++ /dev/null @@ -1,3528 +0,0 @@ - - - AddressBookPage - - Right-click to edit address or label - Клик правой кнопкой Ð´Ð»Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð°Ð´Ñ€ÐµÑа или метки - - - Create a new address - Создать новый Ð°Ð´Ñ€ÐµÑ - - - &New - &Ðовый - - - Copy the currently selected address to the system clipboard - Копировать текущий выделенный Ð°Ð´Ñ€ÐµÑ Ð² буфер обмена - - - &Copy - &Копировать - - - C&lose - &Закрыть - - - &Copy Address - &Копировать Ð°Ð´Ñ€ÐµÑ - - - Delete the currently selected address from the list - Удалить выбранный Ð°Ð´Ñ€ÐµÑ Ð¸Ð· ÑпиÑка - - - Export the data in the current tab to a file - ЭкÑпортировать данные из вкладки в файл - - - &Export - &ЭкÑпорт - - - &Delete - &Удалить - - - Choose the address to send coins to - Выберите Ð°Ð´Ñ€ÐµÑ Ð´Ð»Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²ÐºÐ¸ на него монет - - - Choose the address to receive coins with - Выберите Ð°Ð´Ñ€ÐµÑ Ð´Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð¼Ð¾Ð½ÐµÑ‚ - - - C&hoose - &Выбрать - - - Sending addresses - ÐдреÑа отправки - - - Receiving addresses - ÐдреÑа Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ - - - These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins. - Это ваши адреÑа Bitcoin Ð´Ð»Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²ÐºÐ¸ платежей. Ð’Ñегда проверÑйте количеÑтво и Ð°Ð´Ñ€ÐµÑ Ð¿Ð¾Ð»ÑƒÑ‡Ð°Ñ‚ÐµÐ»Ñ Ð¿ÐµÑ€ÐµÐ´ отправкой перевода. - - - These are your Bitcoin addresses for receiving payments. It is recommended to use a new receiving address for each transaction. - Это ваши адреÑа Bitcoin Ð´Ð»Ñ Ð¿Ñ€Ð¸Ñ‘Ð¼Ð° платежей. РекомендуетÑÑ Ð¸Ñпользовать новый Ð°Ð´Ñ€ÐµÑ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ транзакции. - - - Copy &Label - Копировать &метку - - - &Edit - &Правка - - - Export Address List - ЭкÑпортировать ÑпиÑок адреÑов - - - Comma separated file (*.csv) - ТекÑÑ‚, разделённый запÑтыми (*.csv) - - - Exporting Failed - ЭкÑпорт не удалÑÑ - - - - AddressTableModel - - Label - Метка - - - Address - ÐÐ´Ñ€ÐµÑ - - - (no label) - [нет метки] - - - - AskPassphraseDialog - - Passphrase Dialog - Диалог ввода Ð¿Ð°Ñ€Ð¾Ð»Ñ - - - Enter passphrase - Введите пароль - - - New passphrase - Ðовый пароль - - - Repeat new passphrase - Повторите новый пароль - - - Encrypt wallet - Зашифровать бумажник - - - This operation needs your wallet passphrase to unlock the wallet. - Ð”Ð»Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ð¸ требуетÑÑ Ð¿Ð°Ñ€Ð¾Ð»ÑŒ вашего бумажника. - - - Unlock wallet - Разблокировать бумажник - - - This operation needs your wallet passphrase to decrypt the wallet. - Ð”Ð»Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ð¸ требуетÑÑ Ð¿Ð°Ñ€Ð¾Ð»ÑŒ вашего бумажника. - - - Decrypt wallet - РаÑшифровать бумажник - - - Change passphrase - Сменить пароль - - - Confirm wallet encryption - Подтвердите шифрование бумажника - - - Warning: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR BITCOINS</b>! - Внимание: еÑли вы зашифруете бумажник и потерÑете пароль, вы <b>ПОТЕРЯЕТЕ ВСЕ Ð’ÐШИ БИТКОЙÐЫ</b>! - - - Are you sure you wish to encrypt your wallet? - Ð’Ñ‹ уверены, что хотите зашифровать ваш бумажник? - - - Bitcoin Core 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. - Ð¡ÐµÐ¹Ñ‡Ð°Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð° закроетÑÑ Ð´Ð»Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑÑа шифрованиÑ. Помните, что шифрование вашего бумажника не может полноÑтью защитить ваши биткоины от кражи Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ Ð¸Ð½Ñ„Ð¸Ñ†Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð²Ð°ÑˆÐµÐ³Ð¾ компьютера вредоноÑным ПО. - - - 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. - Ð’ÐЖÐО: вÑе предыдущие резервные копии вашего бумажника должны быть заменены новым зашифрованным файлом. Ð’ целÑÑ… безопаÑноÑти предыдущие резервные копии незашифрованного бумажника Ñтанут беÑполезны, как только вы начнёте иÑпользовать новый зашифрованный бумажник. - - - Warning: The Caps Lock key is on! - Внимание: Caps Lock включен! - - - Wallet encrypted - Бумажник зашифрован - - - 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>. - Введите новый пароль бумажника.<br/>ИÑпользуйте пароль, ÑоÑтоÑщий из <b>деÑÑти или более Ñлучайных Ñимволов</b>, или <b>воÑьми или более Ñлов</b>. - - - Enter the old passphrase and new passphrase to the wallet. - Введите Ñтарый и новый пароль Ð´Ð»Ñ ÐºÐ¾ÑˆÐµÐ»ÑŒÐºÐ°. - - - Wallet encryption failed - Ðе удалоÑÑŒ зашифровать бумажник - - - Wallet encryption failed due to an internal error. Your wallet was not encrypted. - Шифрование бумажника не удалоÑÑŒ из-за внутренней ошибки. Ваш бумажник не был зашифрован. - - - The supplied passphrases do not match. - Введённые пароли не Ñовпадают. - - - Wallet unlock failed - Разблокировка бумажника не удалаÑÑŒ - - - The passphrase entered for the wallet decryption was incorrect. - Указанный пароль не подходит. - - - Wallet decryption failed - РаÑшифрование бумажника не удалоÑÑŒ - - - Wallet passphrase was successfully changed. - Пароль бумажника уÑпешно изменён. - - - - BitcoinGUI - - Sign &message... - &ПодпиÑать Ñообщение... - - - Synchronizing with network... - Ð¡Ð¸Ð½Ñ…Ñ€Ð¾Ð½Ð¸Ð·Ð°Ñ†Ð¸Ñ Ñ Ñетью... - - - &Overview - &Обзор - - - Node - Узел - - - Show general overview of wallet - Показать общий обзор дейÑтвий Ñ Ð±ÑƒÐ¼Ð°Ð¶Ð½Ð¸ÐºÐ¾Ð¼ - - - &Transactions - &Транзакции - - - Browse transaction history - Показать иÑторию транзакций - - - E&xit - Ð’&ыход - - - Quit application - Закрыть приложение - - - About &Qt - О &Qt - - - Show information about Qt - Показать информацию о Qt - - - &Options... - &Параметры - - - &Encrypt Wallet... - &Зашифровать бумажник... - - - &Backup Wallet... - &Сделать резервную копию бумажника... - - - &Change Passphrase... - &Изменить пароль... - - - &Sending addresses... - &ÐдреÑа отправки... - - - &Receiving addresses... - ÐдреÑа &получениÑ... - - - Open &URI... - Открыть &URI... - - - Bitcoin Core client - Bitcoin Core клиент - - - Importing blocks from disk... - ИмпортируютÑÑ Ð±Ð»Ð¾ÐºÐ¸ Ñ Ð´Ð¸Ñка... - - - Reindexing blocks on disk... - Идёт переиндекÑÐ°Ñ†Ð¸Ñ Ð±Ð»Ð¾ÐºÐ¾Ð² на диÑке... - - - Send coins to a Bitcoin address - Отправить монеты на указанный Ð°Ð´Ñ€ÐµÑ Bitcoin - - - Backup wallet to another location - Сделать резервную копию бумажника в другом меÑте - - - Change the passphrase used for wallet encryption - Изменить пароль ÑˆÐ¸Ñ„Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð±ÑƒÐ¼Ð°Ð¶Ð½Ð¸ÐºÐ° - - - &Debug window - &Окно отладки - - - Open debugging and diagnostic console - Открыть конÑоль отладки и диагноÑтики - - - &Verify message... - &Проверить Ñообщение... - - - Bitcoin - Bitcoin - - - Wallet - Бумажник - - - &Send - &Отправить - - - &Receive - &Получить - - - Show information about Bitcoin Core - Показать информацию о Bitcoin Core - - - &Show / Hide - &Показать / Скрыть - - - Show or hide the main Window - Показать или Ñкрыть главное окно - - - Encrypt the private keys that belong to your wallet - Зашифровать приватные ключи, принадлежащие вашему бумажнику - - - Sign messages with your Bitcoin addresses to prove you own them - ПодпиÑать ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð²Ð°ÑˆÐ¸Ð¼ адреÑом Bitcoin, чтобы доказать, что вы им владеете - - - Verify messages to ensure they were signed with specified Bitcoin addresses - Проверить ÑообщениÑ, чтобы удоÑтоверитьÑÑ, что они были подпиÑаны определённым адреÑом Bitcoin - - - &File - &Файл - - - &Settings - &ÐаÑтройки - - - &Help - &Помощь - - - Tabs toolbar - Панель вкладок - - - Bitcoin Core - Bitcoin Core - - - Request payments (generates QR codes and bitcoin: URIs) - ЗапроÑить платежи (Ñоздаёт QR-коды и bitcoin: ÑÑылки) - - - &About Bitcoin Core - &О Bitcoin Core - - - Modify configuration options for Bitcoin Core - Изменить опции конфигурации Bitcoin Core - - - Show the list of used sending addresses and labels - Показать ÑпиÑок иÑпользованных адреÑов и меток отправки - - - Show the list of used receiving addresses and labels - Показать ÑпиÑок иÑпользованных адреÑов и меток Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ - - - Open a bitcoin: URI or payment request - Открыть bitcoin: URI или Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð¿Ð»Ð°Ñ‚ÐµÐ¶Ð° - - - &Command-line options - &Параметры командной Ñтроки - - - Show the Bitcoin Core help message to get a list with possible Bitcoin command-line options - Показать помощь по Bitcoin Core и получить ÑпиÑок доÑтупных параметров командной Ñтроки. - - - No block source available... - ИÑточник блоков недоÑтупен... - - - Processed %n block(s) of transaction history. - Обработан %n блок иÑтории транзакций.Обработано %n блока иÑтории транзакций.Обработано %n блоков иÑтории транзакций.Обработано %n блоков иÑтории транзакций. - - - %1 and %2 - %1 и %2 - - - %1 behind - %1 позади - - - Last received block was generated %1 ago. - ПоÑледний полученный блок был Ñгенерирован %1 назад. - - - Transactions after this will not yet be visible. - Транзакции поÑле него пока не будут видны. - - - Error - Ошибка - - - Warning - Внимание - - - Information - Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ - - - Up to date - Синхронизировано - - - Catching up... - СинхронизируетÑÑ... - - - Date: %1 - - Дата: %1 - - - - Amount: %1 - - КоличеÑтво: %1 - - - - Type: %1 - - Тип: %1 - - - - Label: %1 - - Метка: %1 - - - - Address: %1 - - ÐдреÑ: %1 - - - - Sent transaction - ИÑходÑÑ‰Ð°Ñ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ñ - - - Incoming transaction - ВходÑÑ‰Ð°Ñ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ñ - - - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - Бумажник <b>зашифрован</b> и в наÑтоÑщее Ð²Ñ€ÐµÐ¼Ñ <b>разблокирован</b> - - - Wallet is <b>encrypted</b> and currently <b>locked</b> - Бумажник <b>зашифрован</b> и в наÑтоÑщее Ð²Ñ€ÐµÐ¼Ñ <b>заблокирован</b> - - - - ClientModel - - Network Alert - Ð¡ÐµÑ‚ÐµÐ²Ð°Ñ Ð¢Ñ€ÐµÐ²Ð¾Ð³Ð° - - - - CoinControlDialog - - Coin Selection - Выбор монет - - - Quantity: - КоличеÑтво: - - - Bytes: - Байт: - - - Amount: - Сумма: - - - Priority: - Приоритет: - - - Fee: - КомиÑÑиÑ: - - - Dust: - Пыль: - - - After Fee: - ПоÑле комиÑÑии: - - - Change: - Сдача: - - - (un)select all - Отменить выбор вÑего - - - Tree mode - Режим дерева - - - List mode - Режим ÑпиÑка - - - Amount - Сумма - - - Received with label - Получено Ñ Ð¿Ð¾Ð¼ÐµÑ‚ÐºÐ¾Ð¹ - - - Received with address - Получено Ñ Ð°Ð´Ñ€ÐµÑа - - - Date - Дата - - - Confirmations - Подтверждений - - - Confirmed - Подтверждено - - - Priority - Приоритет - - - Copy address - Копировать Ð°Ð´Ñ€ÐµÑ - - - Copy label - Копировать метку - - - Copy amount - Скопировать Ñумму - - - Copy transaction ID - Скопировать ID транзакции - - - Lock unspent - Заблокировать непотраченное - - - Unlock unspent - Разблокировать непотраченное - - - Copy quantity - Копировать количеÑтво - - - Copy fee - Копировать комиÑÑию - - - Copy after fee - Копировать поÑле комиÑÑии - - - Copy bytes - Копировать байты - - - Copy priority - Копировать приоритет - - - Copy dust - Копировать пыль - - - Copy change - Копировать Ñдачу - - - highest - Ñамый выÑокий - - - higher - выше - - - high - выÑокий - - - medium-high - выше Ñреднего - - - medium - Ñредний - - - low-medium - ниже Ñреднего - - - low - низкий - - - lower - ниже - - - lowest - Ñамый низкий - - - (%1 locked) - (%1 заблокировано) - - - none - ничего - - - This label turns red if the transaction size is greater than 1000 bytes. - Эта метка ÑтановитÑÑ ÐºÑ€Ð°Ñной, еÑли размер транзакции будет больше, чем 1000 байт. - - - This label turns red if the priority is smaller than "medium". - Эта метка ÑтановитÑÑ ÐºÑ€Ð°Ñной, еÑли приоритет меньше, чем "Ñреднее". - - - This label turns red if any recipient receives an amount smaller than %1. - Эта метка ÑтановитÑÑ ÐºÑ€Ð°Ñной, еÑли любой из получателей принимает количеÑтво меньше, чем %1. - - - Can vary +/- %1 satoshi(s) per input. - Может отличатьÑÑ Ð½Ð° +/- %1 Ñатоши на вход. - - - yes - да - - - no - нет - - - This means a fee of at least %1 per kB is required. - Это значит, что требуетÑÑ ÐºÐ¾Ð¼Ð¸ÑÑÐ¸Ñ ÐºÐ°Ðº минимум %1 на КБ. - - - Can vary +/- 1 byte per input. - Может отличатьÑÑ Ð½Ð° +/- 1 байт на вход. - - - Transactions with higher priority are more likely to get included into a block. - Транзакции Ñ Ð±Ð¾Ð»ÐµÐµ выÑоким приоритетом будут вероÑтнее других включены в блок. - - - (no label) - [нет метки] - - - change from %1 (%2) - Ñдача Ñ %1 (%2) - - - (change) - (размен) - - - - EditAddressDialog - - Edit Address - Изменить Ð°Ð´Ñ€ÐµÑ - - - &Label - &Метка - - - The label associated with this address list entry - Метка, ÑвÑÐ·Ð°Ð½Ð½Ð°Ñ Ñ Ñтой запиÑью ÑпиÑка адреÑов - - - The address associated with this address list entry. This can only be modified for sending addresses. - ÐдреÑ, ÑвÑзанный Ñ Ñтой запиÑью ÑпиÑка адреÑов. Он может быть изменён только Ð´Ð»Ñ Ð°Ð´Ñ€ÐµÑов отправки. - - - &Address - &ÐÐ´Ñ€ÐµÑ - - - New receiving address - Ðовый Ð°Ð´Ñ€ÐµÑ Ð´Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ - - - New sending address - Ðовый Ð°Ð´Ñ€ÐµÑ Ð´Ð»Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²ÐºÐ¸ - - - Edit receiving address - Изменение адреÑа Ð´Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ - - - Edit sending address - Изменение адреÑа Ð´Ð»Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²ÐºÐ¸ - - - The entered address "%1" is already in the address book. - Введённый Ð°Ð´Ñ€ÐµÑ Â«%1» уже находитÑÑ Ð² адреÑной книге. - - - The entered address "%1" is not a valid Bitcoin address. - Введённый Ð°Ð´Ñ€ÐµÑ "%1" не ÑвлÑетÑÑ Ð¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ñ‹Ð¼ Bitcoin-адреÑом. - - - Could not unlock wallet. - Ðе удаетÑÑ Ñ€Ð°Ð·Ð±Ð»Ð¾ÐºÐ¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ бумажник. - - - New key generation failed. - Ð“ÐµÐ½ÐµÑ€Ð°Ñ†Ð¸Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ ключа не удалаÑÑŒ. - - - - FreespaceChecker - - A new data directory will be created. - Будет Ñоздан новый каталог данных. - - - name - Ð¸Ð¼Ñ - - - Directory already exists. Add %1 if you intend to create a new directory here. - Каталог уже ÑущеÑтвует. Добавьте %1, еÑли вы хотите Ñоздать здеÑÑŒ новый каталог. - - - Path already exists, and is not a directory. - Путь уже ÑущеÑтвует и не ÑвлÑетÑÑ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð¾Ð¼. - - - Cannot create data directory here. - Ðе удаётÑÑ Ñоздать здеÑÑŒ каталог данных. - - - - HelpMessageDialog - - Bitcoin Core - Bitcoin Core - - - version - верÑÐ¸Ñ - - - (%1-bit) - (%1-бит) - - - About Bitcoin Core - О Bitcoin Core - - - Command-line options - Параметры командной Ñтроки - - - Usage: - ИÑпользование: - - - command-line options - параметры командной Ñтроки - - - - Intro - - Welcome - Добро пожаловать - - - Welcome to Bitcoin Core. - Добро пожаловать в Bitcoin Core. - - - As this is the first time the program is launched, you can choose where Bitcoin Core will store its data. - Так как вы впервые запуÑтили программу, вы можете выбрать, где Bitcoin Core будет хранить данные. - - - Bitcoin Core will download and store a copy of the Bitcoin block chain. At least %1GB of data will be stored in this directory, and it will grow over time. The wallet will also be stored in this directory. - Bitcoin Core Ñкачает и Ñохранит копию цепи блоков. Как минимум, %1ГБ данных будет хранитьÑÑ Ð² Ñтом каталоге, и Ñо временем он будет раÑти. Бумажник будет также Ñохранён в Ñтом каталоге. - - - Use the default data directory - ИÑпользовать каталог данных по умолчанию - - - Use a custom data directory: - ИÑпользовать другой каталог данных: - - - Bitcoin Core - Bitcoin Core - - - Error: Specified data directory "%1" cannot be created. - Ошибка: не удалоÑÑŒ Ñоздать указанный каталог данных "%1". - - - Error - Ошибка - - - - OpenURIDialog - - Open URI - Открыть URI - - - Open payment request from URI or file - Открыть Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð¿Ð»Ð°Ñ‚ÐµÐ¶Ð° из URI или файла - - - URI: - URI: - - - Select payment request file - Выбрать файл запроÑа платежа - - - Select payment request file to open - Выберите файл запроÑа платежа - - - - OptionsDialog - - Options - Параметры - - - &Main - &Ð“Ð»Ð°Ð²Ð½Ð°Ñ - - - Size of &database cache - Размер кÑша &БД - - - MB - МБ - - - Number of script &verification threads - ЧиÑло потоков проверки &ÑÑ†ÐµÐ½Ð°Ñ€Ð¸Ñ - - - Accept connections from outside - Разрешать ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð¸Ð·Ð²Ð½Ðµ - - - Allow incoming connections - Разрешить входÑщие Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ - - - IP address of the proxy (e.g. IPv4: 127.0.0.1 / IPv6: ::1) - IP-Ð°Ð´Ñ€ÐµÑ Ð¿Ñ€Ð¾ÐºÑи (например IPv4: 127.0.0.1 / IPv6: ::1) - - - Minimize instead of exit the application when the window is closed. When this option is enabled, the application will be closed only after selecting Exit in the menu. - Сворачивать вмеÑто закрытиÑ. ЕÑли Ð´Ð°Ð½Ð½Ð°Ñ Ð¾Ð¿Ñ†Ð¸Ñ Ð±ÑƒÐ´ÐµÑ‚ выбрана — приложение закроетÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ поÑле выбора ÑоответÑтвующего пункта в меню. - - - The user interface language can be set here. This setting will take effect after restarting Bitcoin Core. - ЗдеÑÑŒ можно выбрать Ñзык интерфейÑа. ÐаÑтройки вÑтупÑÑ‚ в Ñилу поÑле перезапуÑка Bitcoin Core. - - - 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 |. - Сторонние URL (например, block explorer), которые отображаютÑÑ Ð½Ð° вкладке транзакций как пункты контекÑтного меню. %s в URL заменÑетÑÑ Ñ…Ñшем транзакции. URL отделÑÑŽÑ‚ÑÑ Ð´Ñ€ÑƒÐ³ от друга вертикальной чертой |. - - - Third party transaction URLs - Сторонние URL транзакций. - - - Active command-line options that override above options: - Ðктивные опции командной Ñтроки, которые перекрывают вышеуказанные опции: - - - Reset all client options to default. - СброÑить вÑе наÑтройки клиента на Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¿Ð¾ умолчанию. - - - &Reset Options - &СброÑить параметры - - - &Network - &Сеть - - - Automatically start Bitcoin Core after logging in to the system. - ÐвтоматичеÑки запуÑкать Bitcoin Core поÑле входа в ÑиÑтему - - - &Start Bitcoin Core on system login - &ЗапуÑкать Bitcoin Core при входе в ÑиÑтему - - - (0 = auto, <0 = leave that many cores free) - (0 = автоматичеÑки, <0 = оÑтавить Ñтолько незагруженных Ñдер) - - - W&allet - Б&умажник - - - Expert - ЭкÑперт - - - Enable coin &control features - Включить управление входами - - - 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. - При отключении траты неподтверждённой Ñдачи, Ñдача от транзакции не может быть иÑпользована до тех пор пока у Ñтой транзакции не будет Ñ…Ð¾Ñ‚Ñ Ð±Ñ‹ одно подтверждение. Это также влиÑет как ваш Ð±Ð°Ð»Ð°Ð½Ñ Ñ€Ð°ÑÑчитываетÑÑ. - - - &Spend unconfirmed change - &Тратить неподтверждённую Ñдачу - - - Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled. - ÐвтоматичеÑки открыть порт Ð´Ð»Ñ Bitcoin-клиента на роутере. Работает только еÑли Ваш роутер поддерживает UPnP, и Ð´Ð°Ð½Ð½Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð°. - - - Map port using &UPnP - ПроброÑить порт через &UPnP - - - Connect to the Bitcoin network through a SOCKS5 proxy. - ПодключатьÑÑ Ðº Ñети Bitcoin через прокÑи SOCKS5 - - - &Connect through SOCKS5 proxy (default proxy): - &ПодключатьÑÑ Ðº Ñети Bitcoin через прокÑи SOCKS5 (прокÑи по умолчанию): - - - Proxy &IP: - &IP ПрокÑи: - - - &Port: - По&рт: - - - Port of the proxy (e.g. 9050) - Порт прокÑи-Ñервера (например, 9050) - - - &Window - &Окно - - - Show only a tray icon after minimizing the window. - Показывать только иконку в ÑиÑтемном лотке поÑле ÑÐ²Ð¾Ñ€Ð°Ñ‡Ð¸Ð²Ð°Ð½Ð¸Ñ Ð¾ÐºÐ½Ð°. - - - &Minimize to the tray instead of the taskbar - &Cворачивать в ÑиÑтемный лоток вмеÑто панели задач - - - M&inimize on close - С&ворачивать при закрытии - - - &Display - О&тображение - - - User Interface &language: - &Язык интерфейÑа: - - - &Unit to show amounts in: - &Отображать Ñуммы в единицах: - - - Choose the default subdivision unit to show in the interface and when sending coins. - Выберите единицу Ð¸Ð·Ð¼ÐµÑ€ÐµÐ½Ð¸Ñ Ð¼Ð¾Ð½ÐµÑ‚ при отображении и отправке. - - - Whether to show coin control features or not. - Показывать ли функции ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»Ñ Ð¼Ð¾Ð½ÐµÑ‚ или нет. - - - &OK - &OK - - - &Cancel - &Отмена - - - default - по умолчанию - - - none - ничего - - - Confirm options reset - Подтвердите ÑÐ±Ñ€Ð¾Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð² - - - Client restart required to activate changes. - Ð”Ð»Ñ Ð¿Ñ€Ð¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹ требуетÑÑ Ð¿ÐµÑ€ÐµÐ·Ð°Ð¿ÑƒÑк клиента. - - - Client will be shut down. Do you want to proceed? - Клиент будет выключен. Желаете продолжить? - - - This change would require a client restart. - Это изменение потребует перезапуÑка клиента. - - - The supplied proxy address is invalid. - ÐÐ´Ñ€ÐµÑ Ð¿Ñ€Ð¾ÐºÑи неверен. - - - - OverviewPage - - Form - Форма - - - The displayed information may be out of date. Your wallet automatically synchronizes with the Bitcoin network after a connection is established, but this process has not completed yet. - ÐžÑ‚Ð¾Ð±Ñ€Ð°Ð¶Ð°ÐµÐ¼Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¼Ð¾Ð¶ÐµÑ‚ быть уÑтаревшей. Ваш бумажник автоматичеÑки ÑинхронизируетÑÑ Ñ Ñетью Bitcoin поÑле подключениÑ, но Ñтот процеÑÑ Ð¿Ð¾ÐºÐ° не завершён. - - - Watch-only: - Только наблюдение: - - - Available: - ДоÑтупно: - - - Your current spendable balance - Ваш текущий раÑходный Ð±Ð°Ð»Ð°Ð½Ñ - - - Pending: - Ð’ ожидании: - - - Total of transactions that have yet to be confirmed, and do not yet count toward the spendable balance - ÐžÐ±Ñ‰Ð°Ñ Ñумма вÑех транзакций, которые до Ñих пор не подтверждены, и до Ñих пор не учитываютÑÑ Ð² раÑходном баланÑе - - - Immature: - Ðезрелые: - - - Mined balance that has not yet matured - Ð‘Ð°Ð»Ð°Ð½Ñ Ð´Ð¾Ð±Ñ‹Ñ‚Ñ‹Ñ… монет, который ещё не Ñозрел - - - Balances - БаланÑÑ‹ - - - Total: - Итого: - - - Your current total balance - Ваш текущий общий Ð±Ð°Ð»Ð°Ð½Ñ - - - Your current balance in watch-only addresses - Ваш текущий Ð±Ð°Ð»Ð°Ð½Ñ Ð² адреÑах Ð½Ð°Ð±Ð»ÑŽÐ´ÐµÐ½Ð¸Ñ - - - Spendable: - ДоÑтупно: - - - Recent transactions - ПоÑледние транзакции - - - Unconfirmed transactions to watch-only addresses - Ðеподтверждённые транзакции на адреÑа Ð½Ð°Ð±Ð»ÑŽÐ´ÐµÐ½Ð¸Ñ - - - Mined balance in watch-only addresses that has not yet matured - Ð‘Ð°Ð»Ð°Ð½Ñ Ð´Ð¾Ð±Ñ‹Ñ‚Ñ‹Ñ… монет на адреÑах наблюдениÑ, который ещё не Ñозрел - - - Current total balance in watch-only addresses - Текущий общий Ð±Ð°Ð»Ð°Ð½Ñ Ð½Ð° адреÑах Ð½Ð°Ð±Ð»ÑŽÐ´ÐµÐ½Ð¸Ñ - - - - PaymentServer - - URI handling - Обработка URI - - - Invalid payment address %1 - Ðеверный Ð°Ð´Ñ€ÐµÑ Ð¿Ð»Ð°Ñ‚ÐµÐ¶Ð° %1 - - - Payment request rejected - Ð—Ð°Ð¿Ñ€Ð¾Ñ Ð¿Ð»Ð°Ñ‚ÐµÐ¶Ð° отклонён - - - Payment request network doesn't match client network. - Сеть запроÑа платежа не Ñовпадает Ñ Ñетью клиента. - - - Payment request is not initialized. - Ð—Ð°Ð¿Ñ€Ð¾Ñ Ð¿Ð»Ð°Ñ‚ÐµÐ¶Ð° не инициализирован. - - - Requested payment amount of %1 is too small (considered dust). - Ð—Ð°Ð¿Ñ€Ð¾ÑˆÐµÐ½Ð½Ð°Ñ Ñумма платежа %1 Ñлишком мала (ÑчитаетÑÑ Ð¿Ñ‹Ð»ÑŒÑŽ). - - - Payment request error - Ошибка запроÑа платежа - - - Cannot start bitcoin: click-to-pay handler - Ðе удаётÑÑ Ð·Ð°Ð¿ÑƒÑтить bitcoin: обработчик click-to-pay - - - Payment request fetch URL is invalid: %1 - Ðеверный URL запроÑа платежа: %1 - - - URI cannot be parsed! This can be caused by an invalid Bitcoin address or malformed URI parameters. - Ðе удалоÑÑŒ обработать URI! Это может быть ÑвÑзано Ñ Ð½ÐµÐ²ÐµÑ€Ð½Ñ‹Ð¼ адреÑом Bitcoin или неправильными параметрами URI. - - - Payment request file handling - Обработка файла запроÑа платежа - - - Payment request file cannot be read! This can be caused by an invalid payment request file. - Файл запроÑа платежа не может быть прочитан! Обычно Ñто проиÑходит из-за неверного файла запроÑа платежа. - - - Payment request expired. - Ð—Ð°Ð¿Ñ€Ð¾Ñ Ð¿Ð»Ð°Ñ‚ÐµÐ¶Ð° проÑрочен. - - - Unverified payment requests to custom payment scripts are unsupported. - Ðепроверенные запроÑÑ‹ платежей Ñ Ð½ÐµÑтандартными платёжными ÑценариÑми не поддерживаютÑÑ. - - - Invalid payment request. - Ðеверный Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð¿Ð»Ð°Ñ‚ÐµÐ¶Ð°. - - - Refund from %1 - Возврат от %1 - - - Payment request %1 is too large (%2 bytes, allowed %3 bytes). - Ð—Ð°Ð¿Ñ€Ð¾Ñ Ð¿Ð»Ð°Ñ‚ÐµÐ¶Ð° %1 Ñлишком большой (%2 байтов, разрешено %3 байтов). - - - Payment request DoS protection - DoS-защита запроÑа платежа - - - Error communicating with %1: %2 - Ошибка ÑвÑзи Ñ %1: %2 - - - Payment request cannot be parsed! - Ð—Ð°Ð¿Ñ€Ð¾Ñ Ð¿Ð»Ð°Ñ‚ÐµÐ¶Ð° не может быть разобран! - - - Bad response from server %1 - Плохой ответ от Ñервера %1 - - - Payment acknowledged - Платёж принÑÑ‚ - - - Network request error - Ошибка Ñетевого запроÑа - - - - PeerTableModel - - User Agent - Юзер-агент - - - Node/Service - Узел/ÑÐµÑ€Ð²Ð¸Ñ - - - Ping Time - Ð’Ñ€ÐµÐ¼Ñ Ð·Ð°Ð´ÐµÑ€Ð¶ÐºÐ¸ - - - - QObject - - Amount - Сумма - - - Enter a Bitcoin address (e.g. %1) - Введите Ð°Ð´Ñ€ÐµÑ Bitcoin (например, %1) - - - %1 d - %1 д - - - %1 h - %1 ч - - - %1 m - %1 мин - - - %1 s - %1 Ñ - - - None - Ðичего - - - N/A - Ð/Д - - - %1 ms - %1 Ð¼Ñ - - - - QRImageWidget - - &Save Image... - &Сохранить изображение... - - - &Copy Image - &Копировать изображение - - - Save QR Code - Сохранить QR-код - - - PNG Image (*.png) - Изображение PNG (*.png) - - - - RPCConsole - - Client name - Ð˜Ð¼Ñ ÐºÐ»Ð¸ÐµÐ½Ñ‚Ð° - - - N/A - Ð/Д - - - Client version - ВерÑÐ¸Ñ ÐºÐ»Ð¸ÐµÐ½Ñ‚Ð° - - - &Information - &Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ - - - Debug window - Окно отладки - - - General - Общие - - - Using OpenSSL version - ИÑпользуетÑÑ Ð²ÐµÑ€ÑÐ¸Ñ OpenSSL - - - Using BerkeleyDB version - ИÑпользуетÑÑ Ð²ÐµÑ€ÑÐ¸Ñ BerkeleyDB - - - Startup time - Ð’Ñ€ÐµÐ¼Ñ Ð·Ð°Ð¿ÑƒÑка - - - Network - Сеть - - - Name - Ð˜Ð¼Ñ - - - Number of connections - ЧиÑло подключений - - - Block chain - Цепь блоков - - - Current number of blocks - Текущее чиÑло блоков - - - Open the Bitcoin Core debug log file from the current data directory. This can take a few seconds for large log files. - Открыть отладочный лог-файл Bitcoin Core из текущего каталога данных. Это может занÑть неÑколько Ñекунд Ð´Ð»Ñ Ð±Ð¾Ð»ÑŒÑˆÐ¸Ñ… лог-файлов. - - - Received - Получено - - - Sent - Отправлено - - - &Peers - &УчаÑтники - - - Select a peer to view detailed information. - Выберите учаÑтника Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñмотра подробноÑтей. - - - Direction - Ðаправление - - - Version - ВерÑÐ¸Ñ - - - User Agent - Юзер-агент - - - Services - СервиÑÑ‹ - - - Starting Height - ÐÐ°Ñ‡Ð°Ð»ÑŒÐ½Ð°Ñ Ð²Ñ‹Ñота - - - Sync Height - Ð’Ñ‹Ñота Ñинхронизации - - - Ban Score - Очков бана - - - Connection Time - Ð’Ñ€ÐµÐ¼Ñ ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ - - - Last Send - ПоÑледнÑÑ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²ÐºÐ° - - - Last Receive - ПоÑледний раз получено - - - Bytes Sent - Байт передано - - - Bytes Received - Байт получено - - - Ping Time - Ð’Ñ€ÐµÐ¼Ñ Ð·Ð°Ð´ÐµÑ€Ð¶ÐºÐ¸ - - - Time Offset - Смещение времени - - - Last block time - Ð’Ñ€ÐµÐ¼Ñ Ð¿Ð¾Ñледнего блока - - - &Open - &Открыть - - - &Console - КонÑоль - - - &Network Traffic - Сетевой &трафик - - - &Clear - &ОчиÑтить - - - Totals - Ð’Ñего - - - In: - Вход: - - - Out: - Выход: - - - Build date - Дата Ñборки - - - Debug log file - Отладочный лог-файл - - - Clear console - ОчиÑтить конÑоль - - - Welcome to the Bitcoin Core RPC console. - Добро пожаловать в RPC-конÑоль Bitcoin Core. - - - Use up and down arrows to navigate history, and <b>Ctrl-L</b> to clear screen. - ИÑпользуйте Ñтрелки вверх и вниз Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñмотра иÑтории и <b>Ctrl-L</b> Ð´Ð»Ñ Ð¾Ñ‡Ð¸Ñтки Ñкрана. - - - Type <b>help</b> for an overview of available commands. - Ðапишите <b>help</b> Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñмотра доÑтупных команд. - - - %1 B - %1 Б - - - %1 KB - %1 КБ - - - %1 MB - %1 МБ - - - %1 GB - %1 ГБ - - - via %1 - через %1 - - - never - никогда - - - Inbound - ВходÑщие - - - Outbound - ИÑходÑщие - - - Unknown - ÐеизвеÑтно - - - Fetching... - Получение... - - - - ReceiveCoinsDialog - - &Amount: - &Сумма: - - - &Label: - &Метка: - - - &Message: - &Сообщение - - - Reuse one of the previously used receiving addresses. Reusing addresses has security and privacy issues. Do not use this unless re-generating a payment request made before. - Повторно иÑпользовать один из ранее иÑпользованных адреÑов. Повторное иÑпользование адреÑов неÑёт риÑки безопаÑноÑти и приватноÑти. Ðе иÑпользуйте Ñту опцию, еÑли вы не Ñоздаёте повторно ранее Ñделанный Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð¿Ð»Ð°Ñ‚ÐµÐ¶Ð°. - - - R&euse an existing receiving address (not recommended) - &Повторно иÑпользовать ÑущеÑтвующий Ð°Ð´Ñ€ÐµÑ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ (не рекомендуетÑÑ) - - - An optional message to attach to the payment request, which will be displayed when the request is opened. Note: The message will not be sent with the payment over the Bitcoin network. - ÐеобÑзательное Ñообщение Ð´Ð»Ñ Ð·Ð°Ð¿Ñ€Ð¾Ñа платежа, которое будет показано при открытии запроÑа. Заметьте: Ñообщение не будет отправлено вмеÑте Ñ Ð¿Ð»Ð°Ñ‚ÐµÐ¶Ð¾Ð¼ через Ñеть Bitcoin. - - - An optional label to associate with the new receiving address. - ÐеобÑÐ·Ð°Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ð¼ÐµÑ‚ÐºÐ° Ð´Ð»Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ адреÑа получениÑ. - - - Use this form to request payments. All fields are <b>optional</b>. - Заполните форму Ð´Ð»Ñ Ð·Ð°Ð¿Ñ€Ð¾Ñа платежей. Ð’Ñе Ð¿Ð¾Ð»Ñ <b>необÑзательны</b>. - - - An optional amount to request. Leave this empty or zero to not request a specific amount. - ÐеобÑÐ·Ð°Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ñумма Ð´Ð»Ñ Ð·Ð°Ð¿Ñ€Ð¾Ñа. ОÑтавьте пуÑтым или укажите ноль, чтобы запроÑить неопределённую Ñумму. - - - Clear all fields of the form. - ОчиÑтить вÑе Ð¿Ð¾Ð»Ñ Ñ„Ð¾Ñ€Ð¼Ñ‹. - - - Clear - ОчиÑтить - - - Requested payments history - ИÑÑ‚Ð¾Ñ€Ð¸Ñ Ð·Ð°Ð¿Ñ€Ð¾ÑˆÐµÐ½Ð½Ñ‹Ñ… платежей - - - &Request payment - &ЗапроÑить платёж - - - Show the selected request (does the same as double clicking an entry) - Показать выбранный Ð·Ð°Ð¿Ñ€Ð¾Ñ (то же Ñамое, что и двойной клик по запиÑи) - - - Show - Показать - - - Remove the selected entries from the list - Удалить выбранные запиÑи из ÑпиÑка - - - Remove - Удалить - - - Copy label - Копировать метку - - - Copy message - Копировать Ñообщение - - - Copy amount - Скопировать Ñумму - - - - ReceiveRequestDialog - - QR Code - QR код - - - Copy &URI - Копировать &URI - - - Copy &Address - Копировать &Ð°Ð´Ñ€ÐµÑ - - - &Save Image... - &Сохранить изображение... - - - Request payment to %1 - ЗапроÑить платёж на %1 - - - Payment information - Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¿Ð»Ð°Ñ‚ÐµÐ¶Ð° - - - URI - URI - - - Address - ÐÐ´Ñ€ÐµÑ - - - Amount - Сумма - - - Label - Метка - - - Message - Сообщение - - - Resulting URI too long, try to reduce the text for label / message. - ПолучившийÑÑ URI Ñлишком длинный, попробуйте Ñократить текÑÑ‚ метки / ÑообщениÑ. - - - Error encoding URI into QR Code. - Ошибка ÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ URI в QR-код - - - - RecentRequestsTableModel - - Date - Дата - - - Label - Метка - - - Message - Сообщение - - - Amount - Сумма - - - (no label) - [нет метки] - - - (no message) - (нет ÑообщениÑ) - - - (no amount) - (нет Ñуммы) - - - - SendCoinsDialog - - Send Coins - Отправка - - - Coin Control Features - Функции ÐšÐ¾Ð½Ñ‚Ñ€Ð¾Ð»Ñ ÐœÐ¾Ð½ÐµÑ‚ - - - Inputs... - Входы... - - - automatically selected - автоматичеÑки выбрано - - - Insufficient funds! - ÐедоÑтаточно ÑредÑтв! - - - Quantity: - КоличеÑтво: - - - Bytes: - Байт: - - - Amount: - Сумма: - - - Priority: - Приоритет: - - - Fee: - КомиÑÑиÑ: - - - After Fee: - ПоÑле комиÑÑии: - - - Change: - Размен: - - - If this is activated, but the change address is empty or invalid, change will be sent to a newly generated address. - ЕÑли Ñто выбрано, но Ð°Ð´Ñ€ÐµÑ Ñдачи пуÑтой или неверный, Ñдача будет отправлена на новый Ñгенерированный адреÑ. - - - Custom change address - Свой Ð°Ð´Ñ€ÐµÑ Ð´Ð»Ñ Ñдачи - - - Transaction Fee: - КомиÑÑÐ¸Ñ - - - Choose... - Выберите... - - - collapse fee-settings - Свернуть наÑтройки комиÑÑии - - - per kilobyte - за килобайт - - - 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. - ЕÑли комиÑÑÐ¸Ñ ÑƒÑтановлена в 1000 Ñатоши, а Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ñ ÑоÑтавлÑет лишь 250 байт, тогда комиÑÑÐ¸Ñ "на килобайт" ÑоÑтавит 250 Ñатоши, а "вÑего как минимум" — 1000 Ñатоши. Ð”Ð»Ñ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ð¹ крупнее килобайта в обоих ÑлучаÑÑ… будет иÑпользоватьÑÑ Ð¿Ð»Ð°Ñ‚Ñ‘Ð¶ "на килобайт". - - - Hide - Скрыть - - - total at least - Итого как минимум - - - 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. - Уплата минимальной комиÑÑии — не проблема, пока объём транзакций меньше, чем Ñвободное меÑто в блоках. Учтите, однако, что Ñ‚Ð°ÐºÐ°Ñ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ñ Ð¼Ð¾Ð¶ÐµÑ‚ никогда не подтвердитьÑÑ, еÑли ÑÐ¿Ñ€Ð¾Ñ Ð½Ð° транзакции превышает возможноÑти Ñети по их обработке. - - - (read the tooltip) - (прочтите подÑказку) - - - Recommended: - Рекомендовано: - - - Custom: - Выборочно: - - - (Smart fee not initialized yet. This usually takes a few blocks...) - (Ð£Ð¼Ð½Ð°Ñ ÐºÐ¾Ð¼Ð¸ÑÑÐ¸Ñ Ð¿Ð¾ÐºÐ° не инициализирована. Обычно Ð´Ð»Ñ Ñтого требуетÑÑ Ð½ÐµÑколько блоков...) - - - Confirmation time: - Ð’Ñ€ÐµÐ¼Ñ Ð¿Ð¾Ð´Ñ‚Ð²ÐµÑ€Ð¶Ð´ÐµÐ½Ð¸Ñ: - - - normal - обычный - - - fast - уÑкоренный - - - Send as zero-fee transaction if possible - ОÑущеÑтвить транзакцию беÑплатно, еÑли возможно - - - (confirmation may take longer) - (подтверждение может занÑть больше времени) - - - Send to multiple recipients at once - Отправить неÑкольким получателÑм одновременно - - - Add &Recipient - &Добавить Ð¿Ð¾Ð»ÑƒÑ‡Ð°Ñ‚ÐµÐ»Ñ - - - Clear all fields of the form. - ОчиÑтить вÑе Ð¿Ð¾Ð»Ñ Ñ„Ð¾Ñ€Ð¼Ñ‹ - - - Dust: - Пыль: - - - Clear &All - ОчиÑтить &вÑÑ‘ - - - Balance: - БаланÑ: - - - Confirm the send action - Подтвердить отправку - - - S&end - &Отправить - - - Confirm send coins - Подтвердите отправку монет - - - %1 to %2 - С %1 на %2 - - - Copy quantity - Копировать количеÑтво - - - Copy amount - Скопировать Ñумму - - - Copy fee - Копировать комиÑÑию - - - Copy after fee - Копировать поÑле комиÑÑии - - - Copy bytes - Копировать байты - - - Copy priority - Копировать приоритет - - - Copy change - Копировать размен - - - or - или - - - The amount to pay must be larger than 0. - Сумма Ð´Ð»Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²ÐºÐ¸ должно быть больше 0. - - - The amount exceeds your balance. - Сумма превышает Ваш Ð±Ð°Ð»Ð°Ð½Ñ - - - The total exceeds your balance when the %1 transaction fee is included. - Сумма превыÑит Ваш баланÑ, еÑли комиÑÑÐ¸Ñ Ð² размере %1 будет добавлена к транзакции - - - Transaction creation failed! - Ðе удалоÑÑŒ Ñоздать транзакцию! - - - 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. - Ð¢Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ñ Ð±Ñ‹Ð»Ð° отклонена! Такое может произойти, еÑли некоторые монеты уже были потрачены, например, еÑли Ð’Ñ‹ иÑпользуете одну копию бумажника (wallet.dat), а монеты были потрачены из другой копии, но не были отмечены как потраченные в Ñтой. - - - A fee higher than %1 is considered an absurdly high fee. - КомиÑÑÐ¸Ñ Ð±Ð¾Ð»ÑŒÑˆÐµ, чем %1, ÑчитаетÑÑ Ð½ÐµÐ²ÐµÑ€Ð¾Ñтно большой. - - - Payment request expired. - Ð—Ð°Ð¿Ñ€Ð¾Ñ Ð¿Ð»Ð°Ñ‚ÐµÐ¶Ð° проÑрочен. - - - Total Amount %1<span style='font-size:10pt;font-weight:normal;'><br />(=%2)</span> - Ð’Ñего %1<span style='font-size:10pt;font-weight:normal;'><br />(=%2)</span> - - - The recipient address is not valid. Please recheck. - ÐÐ´Ñ€ÐµÑ Ð¿Ð¾Ð»ÑƒÑ‡Ð°Ñ‚ÐµÐ»Ñ Ð½ÐµÐ²ÐµÑ€Ð½Ñ‹Ð¹. ПожалуйÑта, перепроверьте. - - - Duplicate address found: addresses should only be used once each. - Обнаружен дублирующийÑÑ Ð°Ð´Ñ€ÐµÑ: иÑпользуйте каждый Ð°Ð´Ñ€ÐµÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ один раз. - - - Warning: Invalid Bitcoin address - Внимание: неверный Ð°Ð´Ñ€ÐµÑ Bitcoin - - - (no label) - [нет метки] - - - Warning: Unknown change address - Внимание: неизвеÑтный Ð°Ð´Ñ€ÐµÑ Ð´Ð»Ñ Ñдачи - - - Copy dust - Копировать пыль - - - Are you sure you want to send? - Ð’Ñ‹ уверены, что хотите отправить? - - - added as transaction fee - добавлено как комиÑÑÐ¸Ñ - - - - SendCoinsEntry - - A&mount: - Ко&личеÑтво: - - - Pay &To: - Полу&чатель: - - - Enter a label for this address to add it to your address book - Введите метку Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ адреÑа (Ð´Ð»Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð² адреÑную книгу) - - - &Label: - &Метка: - - - Choose previously used address - Выберите ранее иÑпользованный Ð°Ð´Ñ€ÐµÑ - - - This is a normal payment. - Это нормальный платёж. - - - The Bitcoin address to send the payment to - ÐÐ´Ñ€ÐµÑ Bitcoin, на который отправить платёж - - - Alt+A - Alt+A - - - Paste address from clipboard - Ð’Ñтавить Ð°Ð´Ñ€ÐµÑ Ð¸Ð· буфера обмена - - - Alt+P - Alt+P - - - Remove this entry - Удалить Ñту запиÑÑŒ - - - The fee will be deducted from the amount being sent. The recipient will receive less bitcoins than you enter in the amount field. If multiple recipients are selected, the fee is split equally. - С отправлÑемой Ñуммы будет удержана комиÑÑиÑ. Получателю придёт меньше биткоинов, чем вы вводите в поле количеÑтва. ЕÑли выбрано неÑколько получателей, комиÑÑÐ¸Ñ Ñ€Ð°ÑпределÑетÑÑ Ð¿Ð¾Ñ€Ð¾Ð²Ð½Ñƒ. - - - S&ubtract fee from amount - ВычеÑть комиÑÑию из Ñуммы - - - Message: - Сообщение: - - - This is an unauthenticated payment request. - Это неавторизованный Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð¿Ð»Ð°Ñ‚ÐµÐ¶Ð°. - - - This is an authenticated payment request. - Это авторизованный Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð¿Ð»Ð°Ñ‚ÐµÐ¶Ð°. - - - Enter a label for this address to add it to the list of used addresses - Введите метку Ð´Ð»Ñ Ñтого адреÑа, чтобы добавить его в ÑпиÑок иÑпользованных - - - A message that was attached to the bitcoin: URI which will be stored with the transaction for your reference. Note: This message will not be sent over the Bitcoin network. - К bitcoin: URI было прикреплено Ñообщение, которое будет Ñохранено вмеÑте Ñ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸ÐµÐ¹ Ð´Ð»Ñ Ð²Ð°ÑˆÐµÐ³Ð¾ ÑведениÑ. Заметьте: Ñообщение не будет отправлено через Ñеть Bitcoin. - - - Pay To: - Получатель: - - - Memo: - Примечание: - - - - ShutdownWindow - - Bitcoin Core is shutting down... - Bitcoin Core выключаетÑÑ... - - - Do not shut down the computer until this window disappears. - Ðе выключайте компьютер, пока Ñто окно не иÑчезнет. - - - - SignVerifyMessageDialog - - Signatures - Sign / Verify a Message - ПодпиÑи - подпиÑать/проверить Ñообщение - - - &Sign Message - &ПодпиÑать Ñообщение - - - You can sign messages/agreements with your addresses to prove you can receive bitcoins sent to them. Be careful not to sign anything vague or random, as phishing attacks may try to trick you into signing your identity over to them. Only sign fully-detailed statements you agree to. - Ð’Ñ‹ можете подпиÑывать ÑообщениÑ/ÑÐ¾Ð³Ð»Ð°ÑˆÐµÐ½Ð¸Ñ Ñвоими адреÑами, чтобы доказать Ñвою возможноÑть получать биткоины на них. Будьте оÑторожны, не подпиÑывайте что-то неопределённое или Ñлучайное, так как фишинговые атаки могут обманным путём заÑтавить Ð²Ð°Ñ Ð¿Ð¾Ð´Ð¿Ð¸Ñать нежелательные ÑообщениÑ. ПодпиÑывайте только те ÑообщениÑ, Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ð¼Ð¸ вы ÑоглаÑны вплоть до мелочей. - - - The Bitcoin address to sign the message with - ÐÐ´Ñ€ÐµÑ Bitcoin, которым подпиÑать Ñообщение - - - Choose previously used address - Выберите ранее иÑпользованный Ð°Ð´Ñ€ÐµÑ - - - Alt+A - Alt+A - - - Paste address from clipboard - Ð’Ñтавить Ð°Ð´Ñ€ÐµÑ Ð¸Ð· буфера обмена - - - Alt+P - Alt+P - - - Enter the message you want to sign here - Введите Ñообщение Ð´Ð»Ñ Ð¿Ð¾Ð´Ð¿Ð¸Ñи - - - Signature - ПодпиÑÑŒ - - - Copy the current signature to the system clipboard - Скопировать текущую подпиÑÑŒ в ÑиÑтемный буфер обмена - - - Sign the message to prove you own this Bitcoin address - ПодпиÑать Ñообщение, чтобы доказать владение адреÑом Bitcoin - - - Sign &Message - ПодпиÑать &Сообщение - - - Reset all sign message fields - СброÑить Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð²Ñех полей подпиÑÑ‹Ð²Ð°Ð½Ð¸Ñ Ñообщений - - - Clear &All - ОчиÑтить &вÑÑ‘ - - - &Verify Message - &Проверить Ñообщение - - - Enter the receiver's address, message (ensure you copy line breaks, spaces, tabs, etc. exactly) and signature below to verify the message. Be careful not to read more into the signature than what is in the signed message itself, to avoid being tricked by a man-in-the-middle attack. Note that this only proves the signing party receives with the address, it cannot prove sendership of any transaction! - Введите ниже Ð°Ð´Ñ€ÐµÑ Ð¿Ð¾Ð»ÑƒÑ‡Ð°Ñ‚ÐµÐ»Ñ, Ñообщение (убедитеÑÑŒ, что переводы Ñтрок, пробелы, табы и Ñ‚.п. в точноÑти Ñкопированы) и подпиÑÑŒ, чтобы проверить Ñообщение. УбедитеÑÑŒ, что не Ñкопировали лишнего в подпиÑÑŒ, по Ñравнению Ñ Ñамим подпиÑываемым Ñообщением, чтобы не Ñтать жертвой атаки "man-in-the-middle". Заметьте, что Ñта Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ ÑƒÐ´Ð¾ÑтоверÑет лишь авторÑтво подпиÑавшего, но не может удоÑтоверить Ð¾Ñ‚Ð¿Ñ€Ð°Ð²Ð¸Ñ‚ÐµÐ»Ñ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ð¸. - - - The Bitcoin address the message was signed with - ÐÐ´Ñ€ÐµÑ Bitcoin, которым было подпиÑано Ñообщение - - - Verify the message to ensure it was signed with the specified Bitcoin address - Проверить Ñообщение, чтобы убедитьÑÑ, что оно было подпиÑано указанным адреÑом Bitcoin - - - Verify &Message - Проверить &Сообщение - - - Reset all verify message fields - СброÑить вÑе Ð¿Ð¾Ð»Ñ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐºÐ¸ ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ - - - Click "Sign Message" to generate signature - Ðажмите "ПодпиÑать Ñообщение" Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð´Ð¿Ð¸Ñи - - - The entered address is invalid. - Введённый Ð°Ð´Ñ€ÐµÑ Ð½ÐµÐ²ÐµÑ€ÐµÐ½ - - - Please check the address and try again. - ПожалуйÑта, проверьте Ð°Ð´Ñ€ÐµÑ Ð¸ попробуйте ещё раз. - - - The entered address does not refer to a key. - Введённый Ð°Ð´Ñ€ÐµÑ Ð½Ðµ ÑвÑзан Ñ ÐºÐ»ÑŽÑ‡Ð¾Ð¼ - - - Wallet unlock was cancelled. - Разблокировка бумажника была отменена. - - - Private key for the entered address is not available. - Ð”Ð»Ñ Ð²Ð²ÐµÐ´Ñ‘Ð½Ð½Ð¾Ð³Ð¾ адреÑа недоÑтупен закрытый ключ - - - Message signing failed. - Ðе удалоÑÑŒ подпиÑать Ñообщение - - - Message signed. - Сообщение подпиÑано - - - The signature could not be decoded. - ПодпиÑÑŒ не может быть раÑкодирована. - - - Please check the signature and try again. - ПожалуйÑта, проверьте подпиÑÑŒ и попробуйте ещё раз. - - - The signature did not match the message digest. - ПодпиÑÑŒ не ÑоответÑтвует отпечатку ÑообщениÑ. - - - Message verification failed. - Проверка ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð½Ðµ удалаÑÑŒ. - - - Message verified. - Сообщение проверено. - - - - SplashScreen - - Bitcoin Core - Bitcoin Core - - - The Bitcoin Core developers - Разработчики Bitcoin Core - - - [testnet] - [теÑÑ‚Ð¾Ð²Ð°Ñ Ñеть] - - - - TrafficGraphWidget - - KB/s - КБ/Ñек - - - - TransactionDesc - - Open until %1 - Открыто до %1 - - - conflicted - в противоречии - - - %1/offline - %1/отключен - - - %1/unconfirmed - %1/не подтверждено - - - %1 confirmations - %1 подтверждений - - - Status - Ð¡Ñ‚Ð°Ñ‚ÑƒÑ - - - Date - Дата - - - Source - ИÑточник - - - Generated - Сгенерированно - - - From - От - - - To - Ð”Ð»Ñ - - - own address - Ñвой Ð°Ð´Ñ€ÐµÑ - - - watch-only - только наблюдение - - - label - метка - - - Credit - Кредит - - - not accepted - не принÑто - - - Debit - Дебет - - - Total debit - Ð’Ñего дебет - - - Total credit - Ð’Ñего кредит - - - Transaction fee - КомиÑÑÐ¸Ñ - - - Net amount - ЧиÑÑ‚Ð°Ñ Ñумма - - - Message - Сообщение - - - Comment - Комментарий: - - - Transaction ID - ID транзакции - - - Merchant - Продавец - - - Generated coins must mature %1 blocks before they can be spent. When you generated this block, it was broadcast to the network to be added to the block chain. If it fails to get into the chain, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - Сгенерированные монеты должны подождать %1 блоков, прежде чем они могут быть потрачены. Когда Ð’Ñ‹ Ñгенерировали Ñтот блок, он был отправлен в Ñеть Ð´Ð»Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð² цепочку блоков. ЕÑли он не попадёт в цепь, его ÑÑ‚Ð°Ñ‚ÑƒÑ Ð¸Ð·Ð¼ÐµÐ½Ð¸Ñ‚ÑÑ Ð½Ð° "не принÑÑ‚", и монеты будут недейÑтвительны. Это иногда проиÑходит в Ñлучае, еÑли другой узел Ñгенерирует блок на неÑколько Ñекунд раньше ваÑ. - - - Debug information - ÐžÑ‚Ð»Ð°Ð´Ð¾Ñ‡Ð½Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ - - - Transaction - Ð¢Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ñ - - - Inputs - Входы - - - Amount - Сумма - - - true - иÑтина - - - false - ложь - - - , has not been successfully broadcast yet - , ещё не было уÑпешно разоÑлано - - - unknown - неизвеÑтно - - - - TransactionDescDialog - - Transaction details - Детали транзакции - - - This pane shows a detailed description of the transaction - Эта панель отображает детальное опиÑание транзакции. - - - - TransactionTableModel - - Date - Дата - - - Type - Тип - - - Immature (%1 confirmations, will be available after %2) - Ðезрелый (%1 подтверждений, будет доÑтупен поÑле %2) - - - Open until %1 - Открыто до %1 - - - Confirmed (%1 confirmations) - Подтверждено (%1 подтверждений) - - - This block was not received by any other nodes and will probably not be accepted! - Этот блок не был получен другими узлами и, возможно, не будет принÑÑ‚! - - - Generated but not accepted - Сгенерированно, но не подтверждено - - - Offline - Ðет активных Ñоединений Ñ Ñетью - - - Label - Метка - - - Unconfirmed - Ðеподтверждено - - - Conflicted - Ð’ противоречии - - - Received with - Получено - - - Received from - Получено от - - - Sent to - Отправлено - - - Payment to yourself - Отправлено Ñебе - - - Mined - Добыто - - - watch-only - только наблюдение - - - (n/a) - [не доÑтупно] - - - Transaction status. Hover over this field to show number of confirmations. - Ð¡Ñ‚Ð°Ñ‚ÑƒÑ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ð¸. Подведите курÑор к нужному полю Ð´Ð»Ñ Ñ‚Ð¾Ð³Ð¾, чтобы увидеть количеÑтво подтверждений. - - - Date and time that the transaction was received. - Дата и времÑ, когда Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ñ Ð±Ñ‹Ð»Ð° получена. - - - Type of transaction. - Тип транзакции. - - - Whether or not a watch-only address is involved in this transaction. - ИÑпользовалÑÑ Ð»Ð¸ в транзакции Ð°Ð´Ñ€ÐµÑ Ð´Ð»Ñ Ð½Ð°Ð±Ð»ÑŽÐ´ÐµÐ½Ð¸Ñ. - - - User-defined intent/purpose of the transaction. - ОпределÑемое пользователем намерение/цель транзакции. - - - Amount removed from or added to balance. - Сумма, добавленнаÑ, или ÑнÑÑ‚Ð°Ñ Ñ Ð±Ð°Ð»Ð°Ð½Ñа. - - - - TransactionView - - All - Ð’Ñе - - - Today - Ð¡ÐµÐ³Ð¾Ð´Ð½Ñ - - - This week - Ðа Ñтой неделе - - - This month - Ð’ Ñтом меÑÑце - - - Last month - Ð’ прошлом меÑÑце - - - This year - Ð’ Ñтом году - - - Range... - Промежуток... - - - Received with - Получено на - - - Sent to - Отправлено на - - - To yourself - Отправленные Ñебе - - - Mined - Добытые - - - Other - Другое - - - Enter address or label to search - Введите Ð°Ð´Ñ€ÐµÑ Ð¸Ð»Ð¸ метку Ð´Ð»Ñ Ð¿Ð¾Ð¸Ñка - - - Min amount - Мин. Ñумма - - - Copy address - Копировать Ð°Ð´Ñ€ÐµÑ - - - Copy label - Копировать метку - - - Copy amount - Скопировать Ñумму - - - Copy transaction ID - Скопировать ID транзакции - - - Edit label - Изменить метку - - - Show transaction details - Показать подробноÑти транзакции - - - Export Transaction History - ЭкÑпортировать иÑторию транзакций - - - Watch-only - Ð”Ð»Ñ Ð½Ð°Ð±Ð»ÑŽÐ´ÐµÐ½Ð¸Ñ - - - Exporting Failed - ЭкÑпорт не удалÑÑ - - - There was an error trying to save the transaction history to %1. - Произошла ошибка при Ñохранении иÑтории транзакций в %1. - - - Exporting Successful - ЭкÑпорт уÑпешно завершён - - - The transaction history was successfully saved to %1. - ИÑÑ‚Ð¾Ñ€Ð¸Ñ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ð¹ была уÑпешно Ñохранена в %1. - - - Comma separated file (*.csv) - ТекÑÑ‚, разделённый запÑтыми (*.csv) - - - Confirmed - Подтверждено - - - Date - Дата - - - Type - Тип - - - Label - Метка - - - Address - ÐÐ´Ñ€ÐµÑ - - - ID - ID - - - Range: - Промежуток от: - - - to - до - - - - UnitDisplayStatusBarControl - - Unit to show amounts in. Click to select another unit. - Единица Ð¸Ð·Ð¼ÐµÑ€ÐµÐ½Ð¸Ñ ÐºÐ¾Ð»Ð¸Ñ‡ÐµÑтва монет. Щёлкните Ð´Ð»Ñ Ð²Ñ‹Ð±Ð¾Ñ€Ð° другой единицы. - - - - WalletFrame - - No wallet has been loaded. - Ðе был загружен ни один бумажник. - - - - WalletModel - - Send Coins - Отправка - - - - WalletView - - &Export - &ЭкÑпорт - - - Export the data in the current tab to a file - ЭкÑпортировать данные из вкладки в файл - - - Backup Wallet - Сделать резервную копию бумажника - - - Wallet Data (*.dat) - Данные бумажника (*.dat) - - - Backup Failed - Резервное копирование не удалоÑÑŒ - - - There was an error trying to save the wallet data to %1. - Произошла ошибка при Ñохранении данных бумажника в %1. - - - The wallet data was successfully saved to %1. - Данные бумажника были уÑпешно Ñохранены в %1. - - - Backup Successful - Резервное копирование уÑпешно завершено - - - - bitcoin-core - - Options: - Параметры: - - - Specify data directory - Задать каталог данных - - - Connect to a node to retrieve peer addresses, and disconnect - ПодключитьÑÑ Ðº учаÑтнику, чтобы получить ÑпиÑок адреÑов других учаÑтников и отключитьÑÑ - - - Specify your own public address - Укажите ваш ÑобÑтвенный публичный Ð°Ð´Ñ€ÐµÑ - - - Accept command line and JSON-RPC commands - Принимать командную Ñтроку и команды JSON-RPC - - - Run in the background as a daemon and accept commands - ЗапуÑкатьÑÑ Ð² фоне как демон и принимать команды - - - Use the test network - ИÑпользовать теÑтовую Ñеть - - - Accept connections from outside (default: 1 if no -proxy or -connect) - Принимать Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð¸Ð·Ð²Ð½Ðµ (по умолчанию: 1, еÑли не иÑпользуетÑÑ -proxy или -connect) - - - Bind to given address and always listen on it. Use [host]:port notation for IPv6 - ПривÑзатьÑÑ Ðº указанному адреÑу и вÑегда проÑлушивать только его. ИÑпользуйте [хоÑÑ‚]:порт Ð´Ð»Ñ IPv6 - - - Delete all wallet transactions and only recover those parts of the blockchain through -rescan on startup - Удалить вÑе транзакции бумажника Ñ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾Ñтью воÑÑтановить Ñти чаÑти цепи блоков Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ -rescan при запуÑке - - - Distributed under the MIT software license, see the accompanying file COPYING or <http://www.opensource.org/licenses/mit-license.php>. - РаÑпроÑтранÑетÑÑ Ð¿Ð¾Ð´ лицензией MIT, Ñм. приложенный файл COPYING или <http://www.opensource.org/licenses/mit-license.php>. - - - Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) - Выполнить команду, когда менÑетÑÑ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ñ Ð² бумажнике (%s в команде заменÑетÑÑ Ð½Ð° TxID) - - - Maximum total fees to use in a single wallet transaction; setting this too low may abort large transactions (default: %s) - МакÑÐ¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ Ñумма комиÑÑий Ð´Ð»Ñ Ð¾Ð´Ð½Ð¾Ð¹ транзакции в бумажнике; Ñлишком низкое значение может вызвать прерывание больших транзакций (по умолчанию: %s) - - - Reduce storage requirements by pruning (deleting) old blocks. This mode disables wallet support and is incompatible with -txindex. Warning: Reverting this setting requires re-downloading the entire blockchain. (default: 0 = disable pruning blocks, >%u = target size in MiB to use for block files) - Уменьшить размер хранилища за Ñчёт ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ (обрезаниÑ) Ñтарых блоков. Этот режим отключает поддержку бумажника и неÑовмеÑтим Ñ -txindex. Внимание: переключение Ñтой опции обратно потребует полной загрузки цепи блоков. (по умолчанию: 0 = отключить удаление блоков, >%u = целевой размер в Мб Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð² блоков) - - - Set the number of script verification threads (%u to %d, 0 = auto, <0 = leave that many cores free, default: %d) - Задать чиÑло потоков проверки Ñкрипта (от %u до %d, 0=авто, <0 = оÑтавить Ñтолько Ñдер Ñвободными, по умолчанию: %d) - - - This is a pre-release test build - use at your own risk - do not use for mining or merchant applications - Это пре-Ñ€ÐµÐ»Ð¸Ð·Ð½Ð°Ñ Ñ‚ÐµÑÑ‚Ð¾Ð²Ð°Ñ Ñборка - иÑпользуйте на Ñвой Ñтрах и риÑк - не иÑпользуйте Ð´Ð»Ñ Ð´Ð¾Ð±Ñ‹Ñ‡Ð¸ или торговых приложений - - - Unable to bind to %s on this computer. Bitcoin Core is probably already running. - Ðе удалоÑÑŒ забиндитьÑÑ Ð½Ð° %s на Ñтом компьютере. Возможно, Bitcoin Core уже запущен. - - - WARNING: abnormally high number of blocks generated, %d blocks received in the last %d hours (%d expected) - Ð’ÐИМÐÐИЕ: Ñгенерировано ненормально большое чиÑло блоков, %d блоков получено за поÑледние %d чаÑов (ожидалоÑÑŒ %d) - - - WARNING: check your network connection, %d blocks received in the last %d hours (%d expected) - Ð’ÐИМÐÐИЕ: проверьте Ñетевое подключение, получено %d блоков за поÑледние %d чаÑов (ожидалоÑÑŒ %d) - - - Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. - Внимание: уÑтановлено очень большое значение -paytxfee. Это комиÑÑиÑ, которую вы заплатите при проведении транзакции. - - - Warning: The network does not appear to fully agree! Some miners appear to be experiencing issues. - Внимание: похоже, в Ñети нет полного ÑоглаÑиÑ! Ðекоторый майнеры, возможно, иÑпытывают проблемы. - - - Warning: We do not appear to fully agree with our peers! You may need to upgrade, or other nodes may need to upgrade. - Внимание: мы не полноÑтью ÑоглаÑны Ñ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ‹Ð¼Ð¸ учаÑтниками! Вам или другим учаÑтникам, возможно, Ñледует обновитьÑÑ. - - - Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. - Внимание: ошибка Ñ‡Ñ‚ÐµÐ½Ð¸Ñ wallet.dat! Ð’Ñе ключи прочитаны верно, но данные транзакций или запиÑи адреÑной книги могут отÑутÑтвовать или быть неправильными. - - - 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. - Внимание: wallet.dat повреждён, данные ÑпаÑены! Оригинальный wallet.dat Ñохранён как wallet.{timestamp}.bak в %s; еÑли ваш Ð±Ð°Ð»Ð°Ð½Ñ Ð¸Ð»Ð¸ транзакции некорректны, вы должны воÑÑтановить файл из резервной копии. - - - Whitelist peers connecting from the given netmask or IP address. Can be specified multiple times. - ВноÑить в белый ÑпиÑок учаÑтников, подключающихÑÑ Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ð¾Ð¹ маÑки Ñети или IP. Можно иÑпользовать многократно. - - - (default: 1) - (по умолчанию: 1) - - - <category> can be: - <category> может быть: - - - Attempt to recover private keys from a corrupt wallet.dat - ПопытатьÑÑ Ð²Ð¾ÑÑтановить приватные ключи из повреждённого wallet.dat - - - Block creation options: - Параметры ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð±Ð»Ð¾ÐºÐ¾Ð²: - - - Connect only to the specified node(s) - ПодключатьÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ к указанному узлу(ам) - - - Connection options: - Параметры подключениÑ: - - - Corrupted block database detected - БД блоков повреждена - - - Debugging/Testing options: - Параметры отладки/теÑтированиÑ: - - - Do not load the wallet and disable wallet RPC calls - Ðе загружать бумажник и запретить Ð¾Ð±Ñ€Ð°Ñ‰ÐµÐ½Ð¸Ñ Ðº нему через RPC - - - Do you want to rebuild the block database now? - ПереÑобрать БД блоков прÑмо ÑейчаÑ? - - - Error initializing block database - Ошибка инициализации БД блоков - - - Error initializing wallet database environment %s! - Ошибка инициализации Ð¾ÐºÑ€ÑƒÐ¶ÐµÐ½Ð¸Ñ Ð‘Ð” бумажника %s! - - - Error loading block database - Ошибка Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ð±Ð°Ð·Ñ‹ данных блоков - - - Error opening block database - Ðе удалоÑÑŒ открыть БД блоков - - - Error: Disk space is low! - Ошибка: мало меÑта на диÑке! - - - Failed to listen on any port. Use -listen=0 if you want this. - Ðе удалоÑÑŒ начать проÑлушивание на порту. ИÑпользуйте -listen=0 еÑли Ð²Ð°Ñ Ñто уÑтраивает. - - - If <category> is not supplied, output all debugging information. - ЕÑли <category> не предоÑтавлена, выводить вÑÑŽ отладочную информацию. - - - Importing... - Импорт ... - - - Incorrect or no genesis block found. Wrong datadir for network? - Ðеверный или отÑутÑтвующий начальный блок. Ðеправильный каталог данных Ð´Ð»Ñ Ñети? - - - Invalid -onion address: '%s' - Ðеверный -onion адреÑ: '%s' - - - Not enough file descriptors available. - ÐедоÑтаточно файловых деÑкрипторов. - - - Only connect to nodes in network <net> (ipv4, ipv6 or onion) - СоединÑтьÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ по Ñети <net> (ipv4, ipv6 или onion) - - - Prune cannot be configured with a negative value. - Удаление блоков не может иÑпользовать отрицательное значение. - - - Prune mode is incompatible with -txindex. - Режим ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð±Ð»Ð¾ÐºÐ¾Ð² неÑовмеÑтим Ñ -txindex. - - - Set database cache size in megabytes (%d to %d, default: %d) - УÑтановить размер кÑша БД в мегабайтах(от %d до %d, по умолчанию: %d) - - - Set maximum block size in bytes (default: %d) - Задать макÑимальный размер блока в байтах (по умолчанию: %d) - - - Specify wallet file (within data directory) - Укажите файл бумажника (внутри каталога данных) - - - Use UPnP to map the listening port (default: %u) - ИÑпользовать UPnP Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð±Ñ€Ð¾Ñа порта (по умолчанию: %u) - - - Verifying blocks... - Проверка блоков... - - - Verifying wallet... - Проверка бумажника... - - - Wallet %s resides outside data directory %s - Бумажник %s раÑполагаетÑÑ Ð²Ð½Ðµ каталога данных %s - - - Wallet options: - ÐаÑтройки бумажника: - - - Warning: This version is obsolete; upgrade required! - Внимание: Ñта верÑÐ¸Ñ ÑƒÑтарела; требуетÑÑ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ðµ! - - - You need to rebuild the database using -reindex to change -txindex - Вам необходимо переÑобрать базы данных Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ -reindex, чтобы изменить -txindex - - - Imports blocks from external blk000??.dat file - Импортировать блоки из внешнего файла blk000??.dat - - - 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 - Разрешить Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ JSON-RPC Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ð¾Ð³Ð¾ иÑточника. Разрешённые Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð´Ð»Ñ <ip> — отдельный IP (например, 1.2.3.4), Ñеть/маÑка Ñети (например, 1.2.3.4/255.255.255.0) или Ñеть/CIDR (например, 1.2.3.4/24). Эту опцию можно иÑпользовать многократно - - - An error occurred while setting up the RPC address %s port %u for listening: %s - Произошла ошибка в процеÑÑе Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð¸Ñ RPC адреÑа %s порта %u Ð´Ð»Ñ Ð¿Ñ€Ð¾ÑлушиваниÑ: %s - - - Bind to given address and whitelist peers connecting to it. Use [host]:port notation for IPv6 - ПривÑзатьÑÑ Ðº указанному адреÑу и внеÑти в белый ÑпиÑок подключающихÑÑ Ðº нему учаÑтников. ИÑпользуйте [хоÑÑ‚]:порт Ð´Ð»Ñ IPv6 - - - Bind to given address to listen for JSON-RPC connections. Use [host]:port notation for IPv6. This option can be specified multiple times (default: bind to all interfaces) - ПривÑзатьÑÑ Ðº указанному адреÑу Ð´Ð»Ñ Ð¿Ñ€Ð¾ÑÐ»ÑƒÑˆÐ¸Ð²Ð°Ð½Ð¸Ñ JSON-RPC подключений. ИÑпользуйте запиÑÑŒ [хоÑÑ‚]:порт Ð´Ð»Ñ IPv6. Эту опцию можно иÑпользовать многократно (по умолчанию: привÑзыватьÑÑ ÐºÐ¾ вÑем интерфейÑам) - - - Cannot obtain a lock on data directory %s. Bitcoin Core is probably already running. - Ðе удалоÑÑŒ уÑтановить блокировку на каталог данных %s. Возможно, Bitcoin Core уже запущен. - - - Create new files with system default permissions, instead of umask 077 (only effective with disabled wallet functionality) - Создавать новые файлы Ñ ÑиÑтемными правами по умолчанию вмеÑто umask 077 (Ñффективно только при отключенном бумажнике) - - - Discover own IP addresses (default: 1 when listening and no -externalip or -proxy) - Обнаруживать ÑобÑтвенный IP Ð°Ð´Ñ€ÐµÑ (по умолчанию: 1 при проÑлушивании и без -externalip или -proxy) - - - Error: Listening for incoming connections failed (listen returned error %s) - Ошибка: не удалоÑÑŒ начать проÑлушивание входÑщих подключений (проÑлушивание вернуло ошибку %s) - - - Error: Unsupported argument -socks found. Setting SOCKS version isn't possible anymore, only SOCKS5 proxies are supported. - Ошибка: обнаружен неподдерживаемый аргумент -socks. Выбор верÑии SOCKS более невозможен, поддерживаютÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ прокÑи SOCKS5. - - - Execute command when a relevant alert is received or we see a really long fork (%s in cmd is replaced by message) - Выполнить команду, когда приходит ÑоответÑтвующее Ñообщение о тревоге или наблюдаетÑÑ Ð¾Ñ‡ÐµÐ½ÑŒ длинное раÑщепление цепи (%s в команде заменÑетÑÑ Ð½Ð° Ñообщение) - - - Fees (in BTC/Kb) smaller than this are considered zero fee for relaying (default: %s) - КомиÑÑии (в BTC/Кб) меньшие Ñтого Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ ÑчитаютÑÑ Ð½ÑƒÐ»ÐµÐ²Ñ‹Ð¼Ð¸ Ð´Ð»Ñ Ñ‚Ñ€Ð°Ð½ÑлÑции (по умолчанию: %s) - - - If paytxfee is not set, include enough fee so transactions begin confirmation on average within n blocks (default: %u) - ЕÑли paytxfee не задан, включить доÑтаточную комиÑÑию Ð´Ð»Ñ Ð¿Ð¾Ð´Ñ‚Ð²ÐµÑ€Ð¶Ð´ÐµÐ½Ð¸Ñ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ð¸ в Ñреднем за n блоков (по умолчанию: %u) - - - Invalid amount for -maxtxfee=<amount>: '%s' (must be at least the minrelay fee of %s to prevent stuck transactions) - Ðеверное значение Ð´Ð»Ñ -maxtxfee=<amount>: '%s' (Ð¼Ð¸Ð½Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ ÐºÐ¾Ð¼Ð¸ÑÑÐ¸Ñ Ñ‚Ñ€Ð°Ð½ÑлÑции %s Ð´Ð»Ñ Ð¿Ñ€ÐµÐ´Ð¾Ñ‚Ð²Ñ€Ð°Ñ‰ÐµÐ½Ð¸Ñ Ð·Ð°Ð²Ð¸ÑÐ°Ð½Ð¸Ñ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ð¹) - - - Maximum size of data in data carrier transactions we relay and mine (default: %u) - Ðаибольший размер данных в ноÑителе данных транзакций, которые мы передаем и генерируем (по умолчанию: %u) - - - Prune configured below the minimum of %d MB. Please use a higher number. - Удаление блоков выÑтавлено ниже, чем минимум в %d Мб. ПожалуйÑта, иÑпользуйте большее значение. - - - Query for peer addresses via DNS lookup, if low on addresses (default: 1 unless -connect) - Запрашивать адреÑа учаÑтников Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ DNS, еÑли адреÑов мало (по умолчанию: 1, еÑли не указан -connect) - - - Randomize credentials for every proxy connection. This enables Tor stream isolation (default: %u) - ИÑпользовать Ñлучайные учётные данные Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ прокÑи-подключениÑ. Эта Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¿Ð¾Ð·Ð²Ð¾Ð»Ñет изолировать потоки Tor (по умолчанию: %u) - - - Set maximum size of high-priority/low-fee transactions in bytes (default: %d) - Задать макÑимальный размер выÑокоприоритетных/низкокомиÑÑионных транзакций в байтах (по умолчанию: %d) - - - Set the number of threads for coin generation if enabled (-1 = all cores, default: %d) - Задать чиÑло потоков генерации монет, еÑли она включена (-1 = вÑе Ñдра процеÑÑора, по умолчанию: %d) - - - The transaction amount is too small to send after the fee has been deducted - Сумма транзакции за вычетом комиÑÑии Ñлишком мала - - - 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. - Этот продукт включает ПО, разработанное OpenSSL Project Ð´Ð»Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð² OpenSSL Toolkit <https://www.openssl.org/> и криптографичеÑкое ПО, напиÑанное Eric Young и ПО Ð´Ð»Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ Ñ UPnP, напиÑанное Thomas Bernard. - - - 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 - - Ð”Ð»Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ bitcoind или опции bitcoin-qt -server, вы должны уÑтановить опцию rpcpassword в конфигурационном файле: - %s -РекомендуетÑÑ Ð¸Ñпользовать Ñледующий Ñлучайный пароль: -rpcuser=bitcoinrpc -rpcpassword=%s -(вам не нужно запоминать Ñтот пароль) -Ð˜Ð¼Ñ Ð¸ пароль ДОЛЖÐЫ различатьÑÑ. -ЕÑли файл не ÑущеÑтвует, Ñоздайте его и уÑтановите право доÑтупа только Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ Ð²Ð»Ð°Ð´ÐµÐ»ÑŒÑ†Ð°. -Также рекомендуетÑÑ Ð²ÐºÐ»ÑŽÑ‡Ð¸Ñ‚ÑŒ alertnotify Ð´Ð»Ñ Ð¾Ð¿Ð¾Ð²ÐµÑ‰ÐµÐ½Ð¸Ñ Ð¾ проблемах; -Ðапример: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com - - - - Warning: -maxtxfee is set very high! Fees this large could be paid on a single transaction. - Внимание: уÑтановлено очень большое значение -paytxfee. Такие большие комиÑÑии могут быть уплачены в отдельной транзакции. - - - Warning: Please check that your computer's date and time are correct! If your clock is wrong Bitcoin Core will not work properly. - Внимание: убедитеÑÑŒ, что дата и Ð²Ñ€ÐµÐ¼Ñ Ð½Ð° Вашем компьютере выÑтавлены верно. ЕÑли Ваши чаÑÑ‹ идут неправильно, Bitcoin Core будет работать некорректно. - - - 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 - УчаÑтники из белого ÑпиÑка не могуть быть забанены за DoS, и их транзакции вÑегда транÑлируютÑÑ, даже еÑли они уже ÑодержатÑÑ Ð² памÑти. Полезно, например, Ð´Ð»Ñ ÑˆÐ»ÑŽÐ·Ð°. - - - You need to rebuild the database using -reindex to go back to unpruned mode. This will redownload the entire blockchain - Вам необходимо переÑобрать базу данных Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ -reindex, чтобы вернутьÑÑ Ðº полному режиму. Это приведёт к перезагрузке вÑей цепи блоков - - - (default: %u) - (по умолчанию: %u) - - - Accept public REST requests (default: %u) - Принимать публичные REST-запроÑÑ‹ (по умолчанию: %u) - - - Activating best chain... - ÐктивируетÑÑ Ð»ÑƒÑ‡ÑˆÐ°Ñ Ñ†ÐµÐ¿ÑŒ... - - - Can't run with a wallet in prune mode. - ÐÐµÐ»ÑŒÐ·Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ñ‚ÑŒ Ñ Ð±ÑƒÐ¼Ð°Ð¶Ð½Ð¸ÐºÐ¾Ð¼ в режиме Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸ÐµÐ¼ блоков. - - - Cannot resolve -whitebind address: '%s' - Ðе удаётÑÑ Ñ€Ð°Ð·Ñ€ÐµÑˆÐ¸Ñ‚ÑŒ Ð°Ð´Ñ€ÐµÑ Ð² параметре -whitebind: '%s' - - - Choose data directory on startup (default: 0) - Выбрать каталог данных при запуÑке (по умолчанию: 0) - - - Connect through SOCKS5 proxy - ПодключатьÑÑ Ñ‡ÐµÑ€ÐµÐ· SOCKS5 прокÑи - - - Copyright (C) 2009-%i The Bitcoin Core Developers - Ð’Ñе права защищены © 2009-%i Разработчики Bitcoin Core - - - Could not parse -rpcbind value %s as network address - Ðе удалоÑÑŒ разобрать значение %s параметра -rpcbind как Ñетевой Ð°Ð´Ñ€ÐµÑ - - - Error loading wallet.dat: Wallet requires newer version of Bitcoin Core - Ошибка загрузки wallet.dat: бумажник требует более новую верÑию Bitcoin Core - - - Error reading from database, shutting down. - Ошибка Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ð±Ð°Ð·Ñ‹ данных, работа завершаетÑÑ. - - - Error: A fatal internal error occurred, see debug.log for details - Ошибка: произошла неуÑÑ‚Ñ€Ð°Ð½Ð¸Ð¼Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°, подробноÑти в debug.log - - - Error: Unsupported argument -tor found, use -onion. - Ошибка: обнаружен неподдерживаемый параметр -tor, иÑпользуйте -onion. - - - Fee (in BTC/kB) to add to transactions you send (default: %s) - КомиÑÑÐ¸Ñ (в BTC/Кб) Ð´Ð»Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ðº вашим транзакциÑм (по умолчанию: %s) - - - Information - Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ - - - Initialization sanity check failed. Bitcoin Core is shutting down. - Ðе удалоÑÑŒ проверить чиÑтоту. Bitcoin Core выключаетÑÑ. - - - Invalid amount for -maxtxfee=<amount>: '%s' - Ðеверное значение -maxtxfee=<amount>: '%s' - - - Invalid amount for -minrelaytxfee=<amount>: '%s' - ÐÐµÐ²ÐµÑ€Ð½Ð°Ñ Ñумма в параметре -minrelaytxfee=<кол-во>: '%s' - - - Invalid amount for -mintxfee=<amount>: '%s' - ÐÐµÐ²ÐµÑ€Ð½Ð°Ñ Ñумма в параметре -mintxfee=<кол-во>: '%s' - - - Invalid amount for -paytxfee=<amount>: '%s' (must be at least %s) - Ðеверное количеÑтво в параметре -paytxfee=<кол-во>: '%s' (должно быть как минимум %s) - - - Invalid netmask specified in -whitelist: '%s' - Указана Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ ÑÐµÑ‚ÐµÐ²Ð°Ñ Ð¼Ð°Ñка в -whitelist: '%s' - - - Keep at most <n> unconnectable transactions in memory (default: %u) - Держать в памÑти до <n> неÑвÑзных транзакций (по умолчанию: %u) - - - Need to specify a port with -whitebind: '%s' - Ðеобходимо указать порт Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ -whitebind: '%s' - - - Node relay options: - Параметры транÑлÑции узла: - - - Pruning blockstore... - ОчиÑтка хранилища блоков... - - - RPC SSL options: (see the Bitcoin Wiki for SSL setup instructions) - Параметры RPC SSL: (Ñм. Bitcoin вики Ð´Ð»Ñ Ð¸Ð½Ñтрукций по наÑтройке SSL) - - - RPC server options: - Параметры Ñервера RPC: - - - RPC support for HTTP persistent connections (default: %d) - Поддержка RPC поÑтоÑнных HTTP подключений (по умолчанию: %d) - - - Rebuild block chain index from current blk000??.dat files on startup - ПереÑтроить при запуÑке Ð¸Ð½Ð´ÐµÐºÑ Ñ†ÐµÐ¿Ð¸ блоков из текущих файлов blk000??.dat - - - Receive and display P2P network alerts (default: %u) - Получать и отображать P2P Ñетевые тревоги (по умолчанию: %u) - - - Send trace/debug info to console instead of debug.log file - Выводить информацию траÑÑировки/отладки на конÑоль вмеÑто файла debug.log - - - Send transactions as zero-fee transactions if possible (default: %u) - ОÑущеÑтвить транзакцию беÑплатно, еÑли возможно (по умолчанию: %u) - - - Set SSL root certificates for payment request (default: -system-) - Указать корневые SSL-Ñертификаты Ð´Ð»Ñ Ð·Ð°Ð¿Ñ€Ð¾Ñа платежа (по умолчанию: -system-) - - - Set language, for example "de_DE" (default: system locale) - Выберите Ñзык, например "de_DE" (по умолчанию: как в ÑиÑтеме) - - - Show all debugging options (usage: --help -help-debug) - Показать вÑе отладочные параметры (иÑпользование: --help -help-debug) - - - Show splash screen on startup (default: 1) - Показывать ÑплÑш при запуÑке (по умолчанию: 1) - - - Shrink debug.log file on client startup (default: 1 when no -debug) - Сжимать файл debug.log при запуÑке клиента (по умолчанию: 1, еÑли нет -debug) - - - Signing transaction failed - Ðе удалоÑÑŒ подпиÑать транзакцию - - - Start minimized - ЗапуÑкать Ñвёрнутым - - - The transaction amount is too small to pay the fee - Сумма транзакции Ñлишком мала Ð´Ð»Ñ ÑƒÐ¿Ð»Ð°Ñ‚Ñ‹ комиÑÑии - - - This is experimental software. - Это ÑкÑпериментальное ПО. - - - Transaction amount too small - Сумма транзакции Ñлишком мала - - - Transaction amounts must be positive - Сумма транзакции должна быть положительна - - - Transaction too large for fee policy - Ð¢Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ñ Ñлишком Ð±Ð¾Ð»ÑŒÑˆÐ°Ñ Ð´Ð»Ñ Ð¿Ñ€Ð°Ð²Ð¸Ð» комиÑÑии. - - - Transaction too large - Ð¢Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ñ Ñлишком Ð±Ð¾Ð»ÑŒÑˆÐ°Ñ - - - UI Options: - ÐаÑтройки интерфейÑа: - - - Unable to bind to %s on this computer (bind returned error %s) - Ðевозможно привÑзатьÑÑ Ðº %s на Ñтом компьютере (bind вернул ошибку %s) - - - Use UPnP to map the listening port (default: 1 when listening) - ИÑпользовать UPnP Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð±Ñ€Ð¾Ñа порта (по умолчанию: 1, еÑли иÑпользуетÑÑ Ð¿Ñ€Ð¾Ñлушивание) - - - Username for JSON-RPC connections - Ð˜Ð¼Ñ Ð´Ð»Ñ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ð¹ JSON-RPC - - - Wallet needed to be rewritten: restart Bitcoin Core to complete - Ðеобходимо перезапиÑать бумажник, перезапуÑтите Bitcoin Core Ð´Ð»Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ð¸. - - - Warning - Внимание - - - Warning: Unsupported argument -benchmark ignored, use -debug=bench. - Внимание: неподдерживаемый аргумент -benchmark проигнорирован, иÑпользуйте -debug=bench. - - - Warning: Unsupported argument -debugnet ignored, use -debug=net. - Внимание: неподдерживаемый аргумент -debugnet проигнорирован, иÑпользуйте -debug=net. - - - Zapping all transactions from wallet... - Стираем вÑе транзакции из кошелька... - - - on startup - при запуÑке - - - wallet.dat corrupt, salvage failed - wallet.dat повреждён, ÑпаÑение данных не удалоÑÑŒ - - - Password for JSON-RPC connections - Пароль Ð´Ð»Ñ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ð¹ JSON-RPC - - - Execute command when the best block changes (%s in cmd is replaced by block hash) - Выполнить команду, когда поÑвлÑетÑÑ Ð½Ð¾Ð²Ñ‹Ð¹ блок (%s в команде заменÑетÑÑ Ð½Ð° Ñ…Ñш блока) - - - Upgrade wallet to latest format - Обновить бумажник до поÑледнего формата - - - Rescan the block chain for missing wallet transactions - Перепроверить цепь блоков на предмет отÑутÑтвующих в бумажнике транзакций - - - Use OpenSSL (https) for JSON-RPC connections - ИÑпользовать OpenSSL (https) Ð´Ð»Ñ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ð¹ JSON-RPC - - - This help message - Эта Ñправка - - - Allow DNS lookups for -addnode, -seednode and -connect - Разрешить поиÑк в DNS Ð´Ð»Ñ -addnode, -seednode и -connect - - - Loading addresses... - Загрузка адреÑов... - - - Error loading wallet.dat: Wallet corrupted - Ошибка загрузки wallet.dat: Бумажник поврежден - - - (1 = keep tx meta data e.g. account owner and payment request information, 2 = drop tx meta data) - (1 = ÑохранÑть метаданные транзакции: например, владельца аккаунта и информацию запроÑа платежа; 2 = отброÑить метаданные) - - - How thorough the block verification of -checkblocks is (0-4, default: %u) - ÐаÑколько тщательна проверка контрольных блоков -checkblocks (0-4, по умолчанию: %u) - - - Maintain a full transaction index, used by the getrawtransaction rpc call (default: %u) - Держать полный Ð¸Ð½Ð´ÐµÐºÑ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ð¹, иÑпользуемый RPC-запроÑом getrawtransaction (по умолчанию: %u) - - - Number of seconds to keep misbehaving peers from reconnecting (default: %u) - ЧиÑло Ñекунд Ð±Ð»Ð¾ÐºÐ¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð¾ ведущих ÑÐµÐ±Ñ ÑƒÐ·Ð»Ð¾Ð² (по умолчанию: %u) - - - Output debugging information (default: %u, supplying <category> is optional) - Выводить отладочную информацию (по умолчанию: %u, указание <category> необÑзательно) - - - Use separate SOCKS5 proxy to reach peers via Tor hidden services (default: %s) - ИÑпользовать отдельный прокÑи SOCKS5 Ð´Ð»Ñ ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ñ ÑƒÑ‡Ð°Ñтниками через Ñкрытые ÑервиÑÑ‹ Tor (по умолчанию: %s) - - - (default: %s) - (по умолчанию: %s) - - - Acceptable ciphers (default: %s) - ДопуÑтимые шифры (по умолчанию: %s) - - - Always query for peer addresses via DNS lookup (default: %u) - Ð’Ñегда запрашивать адреÑа учаÑтников Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ DNS (по умолчанию: %u) - - - Error loading wallet.dat - Ошибка при загрузке wallet.dat - - - Generate coins (default: %u) - Включить добычу монет (по умолчанию: %u) - - - How many blocks to check at startup (default: %u, 0 = all) - Сколько блоков проверÑть при запуÑке (по умолчанию: %u, 0 = вÑе) - - - Include IP addresses in debug output (default: %u) - Включить IP-адреÑа в отладочный вывод (по умолчанию: %u) - - - Invalid -proxy address: '%s' - Ðеверный Ð°Ð´Ñ€ÐµÑ -proxy: '%s' - - - Listen for JSON-RPC connections on <port> (default: %u or testnet: %u) - ПроÑлушивать Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ JSON-RPC на <порту> (по умолчанию: %u или %u в теÑтовой Ñети) - - - Listen for connections on <port> (default: %u or testnet: %u) - Принимать входÑщие Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð½Ð° <port> (по умолчанию: %u или %u в теÑтовой Ñети) - - - Maintain at most <n> connections to peers (default: %u) - Поддерживать не более <n> подключений к узлам (по умолчанию: %u) - - - Make the wallet broadcast transactions - РаÑÑылать транзакции из бумажника - - - Maximum per-connection receive buffer, <n>*1000 bytes (default: %u) - МакÑимальный размер буфера приёма на Ñоединение, <n>*1000 байт (по умолчанию: %u) - - - Maximum per-connection send buffer, <n>*1000 bytes (default: %u) - МакÑимальный размер буфера отправки на Ñоединение, <n>*1000 байт (по умолчанию: %u) - - - Prepend debug output with timestamp (default: %u) - ДопиÑывать отметки времени к отладочному выводу (по умолчанию: %u) - - - Relay and mine data carrier transactions (default: %u) - ТранÑлировать и генерировать транзакции ноÑителей данных (по умолчанию: %u) - - - Relay non-P2SH multisig (default: %u) - ТранÑлировать не-P2SH мультиподпиÑÑŒ (по умолчанию: %u) - - - Server certificate file (default: %s) - Файл Ñертификата Ñервера (по умолчанию: %s) - - - Server private key (default: %s) - Закрытый ключ Ñервера (по умолчанию: %s) - - - Set key pool size to <n> (default: %u) - УÑтановить размер пула ключей в <n> (по умолчанию: %u) - - - Set the number of threads to service RPC calls (default: %d) - Задать чиÑло потоков Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð·Ð°Ð¿Ñ€Ð¾Ñов RPC (по умолчанию: %d) - - - Specify configuration file (default: %s) - Указать конфигурационный файл (по умолчанию: %s) - - - Specify connection timeout in milliseconds (minimum: 1, default: %d) - Указать тайм-аут ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð² миллиÑекундах (минимум: 1, по умолчанию: %d) - - - Specify pid file (default: %s) - Указать pid-файл (по умолчанию: %s) - - - Spend unconfirmed change when sending transactions (default: %u) - Тратить неподтвержденную Ñдачу при отправке транзакций (по умолчанию: %u) - - - Threshold for disconnecting misbehaving peers (default: %u) - Порог Ð´Ð»Ñ Ð¾Ñ‚ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð¾ ведущих ÑÐµÐ±Ñ ÑƒÐ·Ð»Ð¾Ð² (по умолчанию: %u) - - - Unknown network specified in -onlynet: '%s' - Ð’ параметре -onlynet указана неизвеÑÑ‚Ð½Ð°Ñ Ñеть: '%s' - - - Cannot resolve -bind address: '%s' - Ðе удаётÑÑ Ñ€Ð°Ð·Ñ€ÐµÑˆÐ¸Ñ‚ÑŒ Ð°Ð´Ñ€ÐµÑ Ð² параметре -bind: '%s' - - - Cannot resolve -externalip address: '%s' - Ðе удаётÑÑ Ñ€Ð°Ð·Ñ€ÐµÑˆÐ¸Ñ‚ÑŒ Ð°Ð´Ñ€ÐµÑ Ð² параметре -externalip: '%s' - - - Invalid amount for -paytxfee=<amount>: '%s' - ÐÐµÐ²ÐµÑ€Ð½Ð°Ñ Ñумма в параметре -paytxfee=<кол-во>: '%s' - - - Insufficient funds - ÐедоÑтаточно монет - - - Loading block index... - Загрузка индекÑа блоков... - - - Add a node to connect to and attempt to keep the connection open - Добавить узел Ð´Ð»Ñ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð¸ пытатьÑÑ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°Ñ‚ÑŒ Ñоединение открытым - - - Loading wallet... - Загрузка бумажника... - - - Cannot downgrade wallet - Ðе удаётÑÑ Ð¿Ð¾Ð½Ð¸Ð·Ð¸Ñ‚ÑŒ верÑию бумажника - - - Cannot write default address - Ðе удаётÑÑ Ð·Ð°Ð¿Ð¸Ñать Ð°Ð´Ñ€ÐµÑ Ð¿Ð¾ умолчанию - - - Rescanning... - Сканирование... - - - Done loading - Загрузка завершена - - - Error - Ошибка - - - \ No newline at end of file diff --git a/src/qt/locale/bitcoin_sah.ts b/src/qt/locale/bitcoin_sah.ts deleted file mode 100644 index 9ca08ee7d..000000000 --- a/src/qt/locale/bitcoin_sah.ts +++ /dev/null @@ -1,110 +0,0 @@ - - - AddressBookPage - - - AddressTableModel - - - AskPassphraseDialog - - - BitcoinGUI - - - ClientModel - - - CoinControlDialog - - - EditAddressDialog - - - FreespaceChecker - - - HelpMessageDialog - - - Intro - - - OpenURIDialog - - - OptionsDialog - - - OverviewPage - - - PaymentServer - - - PeerTableModel - - - QObject - - - QRImageWidget - - - RPCConsole - - - ReceiveCoinsDialog - - - ReceiveRequestDialog - - - RecentRequestsTableModel - - - SendCoinsDialog - - - SendCoinsEntry - - - ShutdownWindow - - - SignVerifyMessageDialog - - - SplashScreen - - - TrafficGraphWidget - - - TransactionDesc - - - TransactionDescDialog - - - TransactionTableModel - - - TransactionView - - - UnitDisplayStatusBarControl - - - WalletFrame - - - WalletModel - - - WalletView - - - bitcoin-core - - \ No newline at end of file diff --git a/src/qt/locale/bitcoin_sk.ts b/src/qt/locale/bitcoin_sk.ts deleted file mode 100644 index cce8f2a09..000000000 --- a/src/qt/locale/bitcoin_sk.ts +++ /dev/null @@ -1,3446 +0,0 @@ - - - AddressBookPage - - Right-click to edit address or label - Kliknutím pravým tlaÄidlom upravte adresu alebo popis - - - Create a new address - VytvoriÅ¥ novú adresu - - - &New - &Nové - - - Copy the currently selected address to the system clipboard - KopírovaÅ¥ práve zvolenú adresu do systémového klipbordu - - - &Copy - &KopírovaÅ¥ - - - C&lose - ZatvoriÅ¥ - - - &Copy Address - &KopírovaÅ¥ adresu - - - Delete the currently selected address from the list - Vymaž vybranú adresu zo zoznamu - - - Export the data in the current tab to a file - ExportovaÅ¥ tento náhľad do súboru - - - &Export - &ExportovaÅ¥... - - - &Delete - &ZmazaÅ¥ - - - Choose the address to send coins to - Zvoľte adresu kam poslaÅ¥ coins - - - Choose the address to receive coins with - Zvoľte adresu na ktorú prijaÅ¥ coins - - - C&hoose - VybraÅ¥ - - - Sending addresses - Adresa odoslania - - - Receiving addresses - Adresa prijatia - - - These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins. - Toto sú VaÅ¡e Bitcoin adresy pre posielanie platieb. Vždy skontrolujte množstvo a prijímaciu adresu pred poslaním coins. - - - These are your Bitcoin addresses for receiving payments. It is recommended to use a new receiving address for each transaction. - Toto sú vaÅ¡e Bitcoin adresy pre prijímanie platieb. OdporúÄa sa použiÅ¥ novú prijímaciu adresu pre každú transakciu. - - - Copy &Label - KopírovaÅ¥ &popis - - - &Edit - &UpraviÅ¥ - - - Export Address List - ExportovaÅ¥ zoznam adries - - - Comma separated file (*.csv) - ÄŒiarkou oddelovaný súbor (*.csv) - - - Exporting Failed - Export zlyhal - - - There was an error trying to save the address list to %1. Please try again. - Nastala chyba pri pokuse uložiÅ¥ zoznam adries do %1. Skúste znovu. - - - - AddressTableModel - - Label - Popis - - - Address - Adresa - - - (no label) - (bez popisu) - - - - AskPassphraseDialog - - Passphrase Dialog - Dialóg hesla - - - Enter passphrase - Zadajte heslo - - - New passphrase - Nové heslo - - - Repeat new passphrase - Zopakujte nové heslo - - - Encrypt wallet - ZaÅ¡ifrovaÅ¥ peňaženku - - - This operation needs your wallet passphrase to unlock the wallet. - Táto operácia potrebuje heslo k vaÅ¡ej peňaženke aby ju mohla deÅ¡ifrovaÅ¥. - - - Unlock wallet - Odomknúť peňaženku - - - This operation needs your wallet passphrase to decrypt the wallet. - Táto operácia potrebuje heslo k vaÅ¡ej peňaženke na deÅ¡ifrovanie peňaženky. - - - Decrypt wallet - DeÅ¡ifrovaÅ¥ peňaženku - - - Change passphrase - Zmena hesla - - - Confirm wallet encryption - PotvrÄte Å¡ifrovanie peňaženky - - - Warning: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR BITCOINS</b>! - Varovanie: Ak zaÅ¡ifrujete peňaženku a stratíte heslo, <b>STRATÃTE VÅ ETKY VAÅ E BITCOINY</b>!⎠- - - Are you sure you wish to encrypt your wallet? - Ste si istí, že si želáte zaÅ¡ifrovaÅ¥ peňaženku? - - - Bitcoin Core 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. - Jadro Bitcoin sa teraz ukonÄí pre dokonÄenie procesu Å¡ifrovania. Pamätaj, že Å¡ifrovanie peňaženky Ťa nemôže úplne ochrániÅ¥ pred krádežou bitcoinov pomocou Å¡kodlivého software. - - - 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. - DÔLEŽITÉ: VÅ¡etky doterajÅ¡ie záložné kópie peňaženky ktoré ste zhotovili by mali byÅ¥ nahradené novým zaÅ¡ifrovaným súborom s peňaženkou. Z bezpeÄnostných dôvodov sa predchádzajúce kópie nezaÅ¡ifrovanej peňaženky stanú neužitoÄné keÄ zaÄnete používaÅ¥ novú zaÅ¡ifrovanú peňaženku. - - - Warning: The Caps Lock key is on! - Varovanie: Caps Lock je zapnutý - - - Wallet encrypted - Peňaženka zaÅ¡ifrovaná - - - 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>. - Zadajte nové heslo k peňaženke.<br/>Prosím použite heslo s dĺžkou aspoň <b>10 alebo viac náhodných znakov</b>, alebo <b>8 alebo viac slov</b>. - - - Enter the old passphrase and new passphrase to the wallet. - Zadajte staré a nové heslo k peňaženke. - - - Wallet encryption failed - Å ifrovanie peňaženky zlyhalo - - - Wallet encryption failed due to an internal error. Your wallet was not encrypted. - Å ifrovanie peňaženky zlyhalo kôli internej chybe. VaÅ¡a peňaženka nebola zaÅ¡ifrovaná. - - - The supplied passphrases do not match. - Zadané heslá nesúhlasia. - - - Wallet unlock failed - Odomykanie peňaženky zlyhalo - - - The passphrase entered for the wallet decryption was incorrect. - Zadané heslo pre deÅ¡ifrovanie peňaženky bolo nesprávne. - - - Wallet decryption failed - Zlyhalo Å¡ifrovanie peňaženky. - - - Wallet passphrase was successfully changed. - Heslo k peňaženke bolo úspeÅ¡ne zmenené. - - - - BitcoinGUI - - Sign &message... - PodpísaÅ¥ &správu... - - - Synchronizing with network... - Synchronizácia so sieÅ¥ou... - - - &Overview - &Prehľad - - - Node - Uzol - - - Show general overview of wallet - ZobraziÅ¥ celkový prehľad o peňaženke - - - &Transactions - &Transakcie - - - Browse transaction history - PrechádzaÅ¥ históriu transakcií - - - E&xit - U&konÄiÅ¥ - - - Quit application - UkonÄiÅ¥ program - - - About &Qt - O &Qt - - - Show information about Qt - Zobrazit informácie o Qt - - - &Options... - &Možnosti... - - - &Encrypt Wallet... - &ZaÅ¡ifrovaÅ¥ Peňaženku... - - - &Backup Wallet... - &ZálohovaÅ¥ peňaženku... - - - &Change Passphrase... - &Zmena Hesla... - - - &Sending addresses... - &Odosielajúce adresy ... - - - &Receiving addresses... - &Prijímajúce adresy... - - - Open &URI... - OtvoriÅ¥ &URI... - - - Bitcoin Core client - Bitcoin Core klient - - - Importing blocks from disk... - Importujem bloky z disku... - - - Reindexing blocks on disk... - Preindexúvam bloky na disku... - - - Send coins to a Bitcoin address - PoslaÅ¥ bitcoins na adresu - - - Backup wallet to another location - ZálohovaÅ¥ peňaženku na iné miesto - - - Change the passphrase used for wallet encryption - ZmeniÅ¥ heslo použité na Å¡ifrovanie peňaženky - - - &Debug window - &Okno pre ladenie - - - Open debugging and diagnostic console - Otvor konzolu pre ladenie a diagnostiku - - - &Verify message... - O&veriÅ¥ správu... - - - Bitcoin - Bitcoin - - - Wallet - Peňaženka - - - &Send - &OdoslaÅ¥ - - - &Receive - &PrijaÅ¥ - - - Show information about Bitcoin Core - ZobraziÅ¥ informácie o Bitcoin Core - - - &Show / Hide - ZobraziÅ¥ / skryÅ¥ - - - Show or hide the main Window - ZobraziÅ¥ alebo skryÅ¥ hlavné okno - - - Encrypt the private keys that belong to your wallet - ZaÅ¡ifruj súkromné kľúÄe ktoré patria do vaÅ¡ej peňaženky - - - Sign messages with your Bitcoin addresses to prove you own them - PodpísaÅ¥ správu s vaÅ¡ou adresou Bitcoin aby ste preukázali že ju vlastníte - - - Verify messages to ensure they were signed with specified Bitcoin addresses - OveriÅ¥ Äi správa bola podpísaná uvedenou Bitcoin adresou - - - &File - &Súbor - - - &Settings - &Nastavenia - - - &Help - &Pomoc - - - Tabs toolbar - LiÅ¡ta záložiek - - - Bitcoin Core - Jadro Bitcoin - - - Request payments (generates QR codes and bitcoin: URIs) - VyžiadaÅ¥ platby (vygeneruje QR kódy a bitcoin: URI) - - - &About Bitcoin Core - O jadre Bitcoin - - - Modify configuration options for Bitcoin Core - UpraviÅ¥ možnosti nastavenia pre Jadro Bitcoin - - - Show the list of used sending addresses and labels - ZobraziÅ¥ zoznam použitých adries odosielateľa a ich popisy - - - Show the list of used receiving addresses and labels - ZobraziÅ¥ zoznam použitých prijímacích adries a ich popisov - - - Open a bitcoin: URI or payment request - OtvoriÅ¥ bitcoin URI alebo výzvu k platbe - - - &Command-line options - Možnosti príkazového riadku - - - Show the Bitcoin Core help message to get a list with possible Bitcoin command-line options - ZobraziÅ¥ pomocnú správu od Bitcoin Jadra pre získanie zoznamu dostupných možností príkazového riadku - - - %n active connection(s) to Bitcoin network - %n aktívne pripojenie do siete Bitcoin%n aktívne pripojenia do siete Bitcoin%n aktívnych pripojení do siete Bitcoin - - - No block source available... - Nedostupný zdroj blokov... - - - Processed %n block(s) of transaction history. - Spracovaných %n blok transakÄnej histórie.Spracovaných %n bloky transakÄnej histórie.Spracovaných %n blokov transakÄnej histórie. - - - %n hour(s) - %n hodina%n hodiny%n hodín - - - %n day(s) - %n deň%n dni%n dní - - - %n week(s) - %n týždeň%n týždne%n týždňov - - - %1 and %2 - %1 a %2 - - - %n year(s) - %n rok%n roky%n rokov - - - %1 behind - %1 pozadu - - - Last received block was generated %1 ago. - Posledný prijatý blok bol vygenerovaný pred %1. - - - Transactions after this will not yet be visible. - Transakcie po tomto Äase eÅ¡te nebudú viditeľné. - - - Error - Chyba - - - Warning - Upozornenie - - - Information - Informácia - - - Up to date - Aktualizovaný - - - Catching up... - SÅ¥ahujem... - - - Date: %1 - - Dátum: %1 - - - - Amount: %1 - - Suma: %1 - - - - Type: %1 - - Typ: %1 - - - - Label: %1 - - Popis: %1 - - - - Address: %1 - - Adresa: %1 - - - - Sent transaction - Odoslané transakcie - - - Incoming transaction - Prijatá transakcia - - - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - Peňaženka je <b>zaÅ¡ifrovaná</b> a momentálne <b>odomknutá</b> - - - Wallet is <b>encrypted</b> and currently <b>locked</b> - Peňaženka je <b>zaÅ¡ifrovaná</b> a momentálne <b>zamknutá</b> - - - - ClientModel - - Network Alert - Výstraha siete - - - - CoinControlDialog - - Coin Selection - Výber mince - - - Quantity: - Množstvo: - - - Bytes: - Bajtov: - - - Amount: - Suma: - - - Priority: - Priorita: - - - Fee: - Poplatok: - - - Dust: - Prach: - - - After Fee: - Po poplatku: - - - Change: - Zmena: - - - (un)select all - (ne)vybraÅ¥ vÅ¡etko - - - Tree mode - Stromový režim - - - List mode - Zoznamový režim - - - Amount - Suma - - - Received with label - Prijaté s oznaÄením - - - Received with address - Prijaté s adresou - - - Date - Dátum - - - Confirmations - Potvrdenia - - - Confirmed - Potvrdené - - - Priority - Priorita - - - Copy address - KopírovaÅ¥ adresu - - - Copy label - KopírovaÅ¥ popis - - - Copy amount - KopírovaÅ¥ sumu - - - Copy transaction ID - KopírovaÅ¥ ID transakcie - - - Lock unspent - Uzamknúť neminuté - - - Unlock unspent - Odomknúť neminuté - - - Copy quantity - KopírovaÅ¥ množstvo - - - Copy fee - KopírovaÅ¥ poplatok - - - Copy after fee - KopírovaÅ¥ za poplatok - - - Copy bytes - KopírovaÅ¥ bajty - - - Copy priority - KopírovaÅ¥ prioritu - - - Copy dust - KopírovaÅ¥ prach - - - Copy change - KopírovaÅ¥ zmenu - - - highest - najvyššie - - - higher - vyššie - - - high - vysoké - - - medium-high - stredne vysoké - - - medium - stredné - - - low-medium - stredne nízke - - - low - nízke - - - lower - nižšie - - - lowest - najnižšie - - - (%1 locked) - (%1 zamknutých) - - - none - žiadne - - - This label turns red if the transaction size is greater than 1000 bytes. - Tento popis sÄervenie ak veľkosÅ¥ transakcie presiahne 1000 bajtov. - - - This label turns red if the priority is smaller than "medium". - Tento popis sÄervenie ak je priorita nižšia ako "stredná". - - - This label turns red if any recipient receives an amount smaller than %1. - Tento popis sÄervenie ak ktorýkoľvek príjemca dostane sumu menÅ¡iu ako %1. - - - Can vary +/- %1 satoshi(s) per input. - Môže sa líšiÅ¥ o +/- %1 satoshi pre každý vstup - - - yes - áno - - - no - nie - - - This means a fee of at least %1 per kB is required. - To znamená že požadovaný poplatok je aspoň %1 za kB. - - - Can vary +/- 1 byte per input. - Môže sa pohybovaÅ¥ +/- 1 bajt pre vstup. - - - Transactions with higher priority are more likely to get included into a block. - Transakcie s vysokou prioritou sa pravdepodobnejsie dostanú do bloku. - - - (no label) - (bez popisu) - - - change from %1 (%2) - zmena od %1 (%2) - - - (change) - (zmena) - - - - EditAddressDialog - - Edit Address - UpraviÅ¥ adresu - - - &Label - &Popis - - - The label associated with this address list entry - Popis tejto položký v zozname adries je prázdny - - - The address associated with this address list entry. This can only be modified for sending addresses. - Adresa spojená s týmto záznamom v adresári. Možno upravovaÅ¥ len pre odosielajúce adresy. - - - &Address - &Adresa - - - New receiving address - Nová adresa pre prijímanie - - - New sending address - Nová adresa pre odoslanie - - - Edit receiving address - UpraviÅ¥ prijímacie adresy - - - Edit sending address - UpraviÅ¥ odosielaciu adresu - - - The entered address "%1" is already in the address book. - Vložená adresa "%1" sa už nachádza v adresári. - - - The entered address "%1" is not a valid Bitcoin address. - Vložená adresa "%1" nieje platnou adresou bitcoin. - - - Could not unlock wallet. - Nepodarilo sa odomknúť peňaženku. - - - New key generation failed. - Generovanie nového kľúÄa zlyhalo. - - - - FreespaceChecker - - A new data directory will be created. - Bude vytvorený nový dátový adresár. - - - name - názov - - - Directory already exists. Add %1 if you intend to create a new directory here. - PrieÄinok už existuje. Pridajte "%1" ak chcete vytvoriÅ¥ nový prieÄinok tu. - - - Path already exists, and is not a directory. - Cesta už existuje a nie je to adresár. - - - Cannot create data directory here. - Tu nemôžem vytvoriÅ¥ dátový adresár. - - - - HelpMessageDialog - - Bitcoin Core - Jadro Bitcoin - - - version - verzia - - - (%1-bit) - (%1-bit) - - - About Bitcoin Core - O jadre Bitcoin - - - Command-line options - Voľby príkazového riadku - - - Usage: - Použitie: - - - command-line options - voľby príkazového riadku - - - - Intro - - Welcome - Vitajte - - - Welcome to Bitcoin Core. - Vitajte v jadre Bitcoin. - - - As this is the first time the program is launched, you can choose where Bitcoin Core will store its data. - KeÄže spúštate program prvý krát, môžte si vybraÅ¥ kde bude Bitcoin Jadro ukladaÅ¥ svoje dáta. - - - Bitcoin Core will download and store a copy of the Bitcoin block chain. At least %1GB of data will be stored in this directory, and it will grow over time. The wallet will also be stored in this directory. - Jadro Bitcoin stiahne zo siete a uloží kópiu Bitcoin blockchain. Aspoň %1GB dát bude uložených v tomto prieÄinku a Äasom porastie. Peňaženka bude tiež uložená v tomto prieÄinku. - - - Use the default data directory - PoužiÅ¥ predvolený dátový adresár - - - Use a custom data directory: - PoužiÅ¥ vlastný dátový adresár: - - - Bitcoin Core - Jadro Bitcoin - - - Error: Specified data directory "%1" cannot be created. - Chyba: Zadaný prieÄinok pre dáta "%1" nemôže byÅ¥ vytvorený. - - - Error - Chyba - - - %n GB of free space available - %n GB voľného miesta%n GB voľného miesta%n GB voľného miesta - - - (of %n GB needed) - (z %n GB potrebného)(z %n GB potrebných)(z %n GB potrebných) - - - - OpenURIDialog - - Open URI - OtvoriÅ¥ URI - - - Open payment request from URI or file - OtvoriÅ¥ požiadavku na zaplatenie z URI alebo súboru - - - URI: - URI: - - - Select payment request file - Vyberte súbor s výzvou k platbe - - - Select payment request file to open - Vyberte ktorý súbor s výzvou k platbe otvoriÅ¥ - - - - OptionsDialog - - Options - Možnosti - - - &Main - &Hlavné - - - Size of &database cache - VeľkosÅ¥ vyrovnávacej pamäti &databázy - - - MB - MB - - - Number of script &verification threads - PoÄet &vlákien overujúcich skript - - - Accept connections from outside - PrijaÅ¥ spojenia zvonku - - - Allow incoming connections - PovoliÅ¥ prichádzajúce spojenia - - - IP address of the proxy (e.g. IPv4: 127.0.0.1 / IPv6: ::1) - IP adresy proxy (napr. IPv4: 127.0.0.1 / IPv6: ::1) - - - Minimize instead of exit the application when the window is closed. When this option is enabled, the application will be closed only after selecting Exit in the menu. - MinimalizovaÅ¥ namiesto ukonÄenia aplikácie keÄ sa okno zavrie. KeÄ je zvolená táto možnosÅ¥, aplikácia sa zavrie len po zvolení UkonÄiÅ¥ v menu. - - - The user interface language can be set here. This setting will take effect after restarting Bitcoin Core. - Tu sa dá nastaviÅ¥ jazyk užívateľského rozhrania. Toto nastavenie bude úÄinné po reÅ¡tartovaní Jadra Bitcoin. - - - 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 |. - URL tretích strán (napr. prehliadaÄ blockchain) ktoré sa zobrazujú v záložke transakcií ako položky kontextového menu. %s v URL je nahradené hash-om transakcie. Viaceré URL sú oddelené zvislou Äiarou |. - - - Third party transaction URLs - URL transakcií s tretími stranami - - - Active command-line options that override above options: - Aktívne možnosti príkazového riadku ktoré prepíšu možnosti vyššie: - - - Reset all client options to default. - VynulovaÅ¥ vÅ¡etky voľby klienta na predvolené. - - - &Reset Options - VynulovaÅ¥ voľby - - - &Network - SieÅ¥ - - - Automatically start Bitcoin Core after logging in to the system. - Automaticky spustiÅ¥ Jadro Bitcoin po prihlásení do systému - - - &Start Bitcoin Core on system login - &SpustiÅ¥ Bitcoin pri spustení systému správy okien - - - (0 = auto, <0 = leave that many cores free) - (0 = auto, <0 = nechaÅ¥ toľko jadier voľných) - - - W&allet - Peňaženka - - - Expert - Expert - - - Enable coin &control features - PovoliÅ¥ možnosti "&coin control" - - - 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. - Ak vypnete míňanie nepotvrdeného výdavku tak výdavok z transakcie bude možné použiÅ¥ až keÄ daná transakcia bude maÅ¥ aspoň jedno potvrdenie. Toto má vplyv aj na výpoÄet vášho zostatku. - - - &Spend unconfirmed change - Minúť nepotvrdený výdavok - - - Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled. - Automaticky otvorit port pre Bitcoin na routeri. Toto funguje len ak router podporuje UPnP a je táto podpora aktivovaná. - - - Map port using &UPnP - MapovaÅ¥ port pomocou &UPnP - - - Connect to the Bitcoin network through a SOCKS5 proxy. - PripojiÅ¥ do siete Bitcoin cez proxy server SOCKS5. - - - &Connect through SOCKS5 proxy (default proxy): - &PripojiÅ¥ cez proxy server SOCKS5 (predvolený proxy). - - - Proxy &IP: - Proxy &IP: - - - &Port: - &Port: - - - Port of the proxy (e.g. 9050) - Port proxy (napr. 9050) - - - &Window - Okno - - - Show only a tray icon after minimizing the window. - ZobraziÅ¥ len ikonu na liÅ¡te po minimalizovaní okna. - - - &Minimize to the tray instead of the taskbar - ZobraziÅ¥ len ikonu na liÅ¡te po minimalizovaní okna. - - - M&inimize on close - M&inimalizovaÅ¥ pri zavretí - - - &Display - &Displej - - - User Interface &language: - Jazyk užívateľského rozhrania: - - - &Unit to show amounts in: - &ZobrazovaÅ¥ hodnoty v jednotkách: - - - Choose the default subdivision unit to show in the interface and when sending coins. - Zvoľte ako deliÅ¥ bitcoin pri zobrazovaní pri platbách a užívateľskom rozhraní. - - - Whether to show coin control features or not. - ÄŒi zobrazovaÅ¥ možnosti "Coin control" alebo nie. - - - &OK - &OK - - - &Cancel - ZruÅ¡iÅ¥ - - - default - predvolené - - - none - žiadne - - - Confirm options reset - PotvrdiÅ¥ obnovenie možností - - - Client restart required to activate changes. - ReÅ¡tart klienta potrebný pre aktivovanie zmien. - - - Client will be shut down. Do you want to proceed? - Klient bude vypnutý, chcete pokraÄovaÅ¥? - - - This change would require a client restart. - Táto zmena by vyžadovala reÅ¡tart klienta. - - - The supplied proxy address is invalid. - Zadaná proxy adresa je neplatná. - - - - OverviewPage - - Form - Forma - - - The displayed information may be out of date. Your wallet automatically synchronizes with the Bitcoin network after a connection is established, but this process has not completed yet. - Zobrazené informácie môžu byÅ¥ neaktuálne. VaÅ¡a peňaženka sa automaticky synchronizuje so sieÅ¥ou Bitcoin po nadviazaní spojenia, ale tento proces eÅ¡te nie je ukonÄený. - - - Watch-only: - Iba sledované: - - - Available: - Disponibilné: - - - Your current spendable balance - Váš aktuálny disponibilný zostatok - - - Pending: - ÄŒakajúce potvrdenie: - - - Total of transactions that have yet to be confirmed, and do not yet count toward the spendable balance - Suma transakcií ktoré eÅ¡te neboli potvrdené a eÅ¡te sa nepoÄítajú do disponibilného zostatku - - - Immature: - Nezrelé: - - - Mined balance that has not yet matured - Vytvorený zostatok ktorý eÅ¡te nedosiahol zrelosÅ¥ - - - Balances - Stav úÄtu - - - Total: - Celkovo: - - - Your current total balance - Váš súÄasný celkový zostatok - - - Your current balance in watch-only addresses - Váš celkový zostatok pre adresy ktoré sa iba sledujú - - - Spendable: - Použiteľné: - - - Recent transactions - Nedávne transakcie - - - Unconfirmed transactions to watch-only addresses - Nepotvrdené transakcie pre adresy ktoré sa iba sledujú - - - Mined balance in watch-only addresses that has not yet matured - VyÅ¥ažená suma pre adresy ktoré sa iba sledujú ale eÅ¡te nie je dozretá - - - Current total balance in watch-only addresses - Aktuálny celkový zostatok pre adries ktoré sa iba sledujú - - - - PaymentServer - - URI handling - Spracovanie URI - - - Invalid payment address %1 - Neplatná adresa platby %1 - - - Payment request rejected - Požiadavka na platbu zamietnutá - - - Payment request network doesn't match client network. - SieÅ¥ požiadavky na platbu nie je zhodná so sieÅ¥ou klienta. - - - Payment request is not initialized. - Požiadavka na platbu nie je inicializovaná - - - Requested payment amount of %1 is too small (considered dust). - Požadovaná platba sumy %1 je príliÅ¡ malá (považovaná za prach). - - - Payment request error - Chyba pri vyžiadaní platby - - - Cannot start bitcoin: click-to-pay handler - Nedá sa spustiÅ¥ obslužný program bitcoin: click-to-pay zaplatiÅ¥ kliknutím - - - Payment request fetch URL is invalid: %1 - URL pre stiahnutie výzvy na zaplatenie je neplatné: %1 - - - URI cannot be parsed! This can be caused by an invalid Bitcoin address or malformed URI parameters. - URI sa nedá analyzovaÅ¥! To môže byÅ¥ spôsobené neplatnou Bitcoin adresou alebo zle upravenými vlastnosÅ¥ami URI. - - - Payment request file handling - Obsluha súboru s požiadavkou na platbu - - - Payment request file cannot be read! This can be caused by an invalid payment request file. - Súbor s výzvou na zaplatenie sa nedá ÄítaÅ¥ alebo spracovaÅ¥! To môže byÅ¥ spôsobené aj neplatným súborom s výzvou. - - - Payment request expired. - VyprÅ¡ala platnosÅ¥ požiadavky na platbu. - - - Unverified payment requests to custom payment scripts are unsupported. - Program nepodporuje neoverené platobné výzvy na vlastná skripty. - - - Invalid payment request. - Chybná požiadavka na platbu. - - - Refund from %1 - Vrátenie z %1 - - - Payment request %1 is too large (%2 bytes, allowed %3 bytes). - Požiadavka na platbu %1 je príliÅ¡ veľká (%2 bajtov, povolené je %3 bajtov). - - - Payment request DoS protection - Ochrana pred zahltením požiadavkami na platbu - - - Error communicating with %1: %2 - Chyba komunikácie s %1: %2 - - - Payment request cannot be parsed! - Požiadavka na platbu nemôže byÅ¥ analyzovaná! - - - Bad response from server %1 - Zlá odpoveÄ zo servera %1 - - - Payment acknowledged - Platba potvrdená - - - Network request error - Chyba požiadavky siete - - - - PeerTableModel - - User Agent - Aplikácia - - - Node/Service - Uzol/Služba - - - Ping Time - ÄŒas odozvy - - - - QObject - - Amount - Suma - - - Enter a Bitcoin address (e.g. %1) - Zadajte bitcoin adresu (napr. %1) - - - %1 d - %1 d - - - %1 h - %1 h - - - %1 m - %1 m - - - %1 s - %1 s - - - None - Žiadne - - - N/A - nie je k dispozícii - - - %1 ms - %1 ms - - - - QRImageWidget - - &Save Image... - UložiÅ¥ obrázok... - - - &Copy Image - KopírovaÅ¥ obrázok - - - Save QR Code - Ukladanie QR kódu - - - PNG Image (*.png) - PNG obrázok (*.png) - - - - RPCConsole - - Client name - Meno klienta - - - N/A - nie je k dispozícii - - - Client version - Verzia klienta - - - &Information - &Informácia - - - Debug window - Okno pre ladenie - - - General - VÅ¡eobecné - - - Using OpenSSL version - Používa OpenSSL verziu - - - Using BerkeleyDB version - Používa BerkeleyDB verziu - - - Startup time - ÄŒas spustenia - - - Network - SieÅ¥ - - - Name - Názov - - - Number of connections - PoÄet pripojení - - - Block chain - ReÅ¥azec blokov - - - Current number of blocks - Aktuálny poÄet blokov - - - Open the Bitcoin Core debug log file from the current data directory. This can take a few seconds for large log files. - OtvoriÅ¥ Bitcoin log súbor pre ladenie z aktuálneho dátového adresára. Toto môže trvaÅ¥ niekoľko sekúnd pre veľké súbory. - - - Received - Prijaté - - - Sent - Odoslané - - - &Peers - &Partneri - - - Select a peer to view detailed information. - Vyberte poÄítaÄ pre zobrazenie podrobností. - - - Direction - Smer - - - Version - Verzia - - - User Agent - Aplikácia - - - Services - Služby - - - Starting Height - PoÄiatoÄná výška - - - Sync Height - Synchronizovaná výška - - - Ban Score - Skóre zákazu - - - Connection Time - Dĺžka spojenia - - - Last Send - Posledné odoslanie - - - Last Receive - Posledné prijatie - - - Bytes Sent - Odoslaných bajtov - - - Bytes Received - Prijatých bajtov - - - Ping Time - ÄŒas odozvy - - - Time Offset - ÄŒasový posun - - - Last block time - ÄŒas posledného bloku - - - &Open - &OtvoriÅ¥ - - - &Console - &Konzola - - - &Network Traffic - &SieÅ¥ová prevádzka - - - &Clear - &VyÄistiÅ¥ - - - Totals - Celkovo: - - - In: - Dnu: - - - Out: - Von: - - - Build date - Dátum zostavenia - - - Debug log file - Súbor záznamu ladenia - - - Clear console - VymazaÅ¥ konzolu - - - Welcome to the Bitcoin Core RPC console. - Vitajte v RPC konzole pre Jadro Bitcoin. - - - Use up and down arrows to navigate history, and <b>Ctrl-L</b> to clear screen. - Použi šípky hore a dolu pre navigáciu históriou a <b>Ctrl-L</b> pre vyÄistenie obrazovky. - - - Type <b>help</b> for an overview of available commands. - Napíš <b>help</b> pre prehľad dostupných príkazov. - - - %1 B - %1 B - - - %1 KB - %1 KB - - - %1 MB - %1 MB - - - %1 GB - %1 GB - - - via %1 - cez %1 - - - never - nikdy - - - Inbound - Prichádzajúce - - - Outbound - Odchádzajúce - - - Unknown - neznámy - - - Fetching... - Získava sa... - - - - ReceiveCoinsDialog - - &Amount: - &Suma: - - - &Label: - &Popis: - - - &Message: - &Správa: - - - Reuse one of the previously used receiving addresses. Reusing addresses has security and privacy issues. Do not use this unless re-generating a payment request made before. - Znovu použiÅ¥ jednu z už použitých adries pre prijímanie. Znovu používanie adries je sporná otázka bezpeÄnosti aj súkromia. Používajte to len v prípade ak znovu generujete výzvu na zaplatenie ktorú ste už vyrobili v minulosti. - - - R&euse an existing receiving address (not recommended) - Znovu použiÅ¥ jestvujúcu prijímaciu adresu (neodporúÄa sa) - - - An optional message to attach to the payment request, which will be displayed when the request is opened. Note: The message will not be sent with the payment over the Bitcoin network. - PridaÅ¥ voliteľnú správu k výzve na zaplatenie, ktorá sa zobrazí keÄ bude výzva otvorená. Poznámka: Správa nebude poslaná s platbou cez sieÅ¥ Bitcoin. - - - An optional label to associate with the new receiving address. - Voliteľný popis ktorý sa pridá k tejto novej prijímajúcej adrese. - - - Use this form to request payments. All fields are <b>optional</b>. - Použite tento formulár pre vyžiadanie platby. VÅ¡etky polia sú <b>voliteľné</b>. - - - An optional amount to request. Leave this empty or zero to not request a specific amount. - Voliteľná požadovaná suma. Nechajte prázdne alebo nulu ak nepožadujete urÄitú sumu. - - - Clear all fields of the form. - VyÄistiÅ¥ vÅ¡etky polia formulára. - - - Clear - VyÄistiÅ¥ - - - Requested payments history - História vyžiadaných platieb - - - &Request payment - VyžiadaÅ¥ platbu - - - Show the selected request (does the same as double clicking an entry) - Zobraz zvolenú požiadavku (urobí to isté ako dvoj-klik na záznam) - - - Show - ZobraziÅ¥ - - - Remove the selected entries from the list - OdstrániÅ¥ zvolené záznamy zo zoznamu - - - Remove - OdstrániÅ¥ - - - Copy label - KopírovaÅ¥ popis - - - Copy message - KopírovaÅ¥ správu - - - Copy amount - KopírovaÅ¥ sumu - - - - ReceiveRequestDialog - - QR Code - QR kód - - - Copy &URI - KopírovaÅ¥ &URI - - - Copy &Address - KopírovaÅ¥ adresu - - - &Save Image... - UložiÅ¥ obrázok... - - - Request payment to %1 - VyžiadaÅ¥ platbu pre %1 - - - Payment information - Informácia o platbe - - - URI - URI - - - Address - Adresa - - - Amount - Suma - - - Label - Popis - - - Message - Správa - - - Resulting URI too long, try to reduce the text for label / message. - Výsledné URI príliÅ¡ dlhé, skráť text pre názov / správu. - - - Error encoding URI into QR Code. - Chyba v zakódovaní URI do QR kódu - - - - RecentRequestsTableModel - - Date - Dátum - - - Label - Popis - - - Message - Správa - - - Amount - Suma - - - (no label) - (bez popisu) - - - (no message) - (žiadna správa) - - - (no amount) - (žiadna suma) - - - - SendCoinsDialog - - Send Coins - PoslaÅ¥ Bitcoins - - - Coin Control Features - Možnosti "Coin Control" - - - Inputs... - Vstupy... - - - automatically selected - automaticky vybrané - - - Insufficient funds! - Nedostatok prostriedkov! - - - Quantity: - Množstvo: - - - Bytes: - Bajtov: - - - Amount: - Suma: - - - Priority: - Priorita: - - - Fee: - Poplatok: - - - After Fee: - Po poplatku: - - - Change: - Zmena: - - - If this is activated, but the change address is empty or invalid, change will be sent to a newly generated address. - Ak aktivované ale adresa pre výdavok je prázdna alebo neplatná, výdavok bude poslaný na novovytvorenú adresu. - - - Custom change address - Vlastná adresa zmeny - - - Transaction Fee: - Poplatok za transakciu: - - - Choose... - ZvoliÅ¥... - - - collapse fee-settings - zbaliÅ¥ nastavenia poplatkov - - - per kilobyte - za kilobajt - - - 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. - Ak je poplatok nastavený na 1000 satoshi a transakcia je veľká len 250 bajtov, potom "za kilobajt" zaplatí poplatok 250 satoshi, ale "spolu aspoň" zaplatí 1000 satoshi. Pre transakcie väÄÅ¡ie ako kilobajt platia oba spôsoby za každý kilobajt. - - - Hide - SkryÅ¥ - - - total at least - spolu aspoň - - - 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. - Zaplatenie len minimálneho poplatku je v poriadku, pokiaľ existuje menej transakcií ako miesta v blokoch. Uvedomte si vÅ¡ak, že ak bude vyšší dopyt po transakciách ako dokáže sieÅ¥ spracovaÅ¥, môže byÅ¥ vaÅ¡a transakcia odsúvaná a nepotvrdená donekoneÄna. - - - (read the tooltip) - (preÄítajte si nápovedu pod kurzorom) - - - Recommended: - OdporúÄaný: - - - Custom: - Vlastný: - - - (Smart fee not initialized yet. This usually takes a few blocks...) - (Automatický poplatok eÅ¡te nebol aktivovaný. Toto zvyÄajne trvá niekoľko blokov...) - - - Confirmation time: - ÄŒas potvrdenia: - - - normal - normálne - - - fast - rýchle - - - Send as zero-fee transaction if possible - PoslaÅ¥ ako transakciu bez poplatku, ak je to možné - - - (confirmation may take longer) - (potvrdenie môže trvaÅ¥ dlhÅ¡ie) - - - Send to multiple recipients at once - PoslaÅ¥ viacerým príjemcom naraz - - - Add &Recipient - &PridaÅ¥ príjemcu - - - Clear all fields of the form. - VyÄistiÅ¥ vÅ¡etky polia formulára. - - - Dust: - Prach: - - - Clear &All - &ZmazaÅ¥ vÅ¡etko - - - Balance: - Zostatok: - - - Confirm the send action - PotvrÄte odoslanie - - - S&end - &OdoslaÅ¥ - - - Confirm send coins - PotvrdiÅ¥ odoslanie bitcoins - - - %1 to %2 - %1 do %2 - - - Copy quantity - KopírovaÅ¥ množstvo - - - Copy amount - KopírovaÅ¥ sumu - - - Copy fee - KopírovaÅ¥ poplatok - - - Copy after fee - KopírovaÅ¥ za poplatok - - - Copy bytes - KopírovaÅ¥ bajty - - - Copy priority - KopírovaÅ¥ prioritu - - - Copy change - KopírovaÅ¥ zmenu - - - or - alebo - - - The amount to pay must be larger than 0. - Suma na úhradu musí byÅ¥ väÄÅ¡ia ako 0. - - - The amount exceeds your balance. - Suma je vyššia ako Váš zostatok. - - - The total exceeds your balance when the %1 transaction fee is included. - Suma celkom prevyÅ¡uje Váš zostatok ak sú zapoÄítané %1 transakÄné poplatky. - - - Transaction creation failed! - Vytvorenie transakcie zlyhalo! - - - 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. - Transakcia bola zamietnutá! Toto sa môže staÅ¥ ak niektoré coins vo vaÅ¡ej peňaženke už boli minuté, ako keÄ použijete kópiu wallet.dat a coins boli minuté z kópie ale neoznaÄené ako minuté tu. - - - A fee higher than %1 is considered an absurdly high fee. - Poplatok vyšší ako %1 je považovaný za Å¡ialene vysoký. - - - Payment request expired. - VyprÅ¡ala platnosÅ¥ požiadavky na platbu. - - - Pay only the minimum fee of %1 - ZaplatiÅ¥ minimálny poplatok %1 - - - The recipient address is not valid. Please recheck. - Adresa príjemcu je neplatná. Prosím, overte ju. - - - Duplicate address found: addresses should only be used once each. - NaÅ¡la sa duplicitná adresa: každú adresu je možné použiÅ¥ len raz. - - - Warning: Invalid Bitcoin address - Varovanie: Nesprávna Bitcoin adresa - - - (no label) - (bez popisu) - - - Warning: Unknown change address - Varovanie: Neznáma adresa pre výdavok - - - Copy dust - KopírovaÅ¥ prach - - - Are you sure you want to send? - UrÄite to chcete odoslaÅ¥? - - - added as transaction fee - pridané ako transakÄný poplatok - - - - SendCoinsEntry - - A&mount: - Su&ma: - - - Pay &To: - Zapla&tiÅ¥: - - - Enter a label for this address to add it to your address book - Vložte popis pre túto adresu aby sa pridala do adresára - - - &Label: - &Popis: - - - Choose previously used address - VybraÅ¥ predtým použitú adresu - - - This is a normal payment. - Toto je normálna platba. - - - The Bitcoin address to send the payment to - Zvoľte adresu kam poslaÅ¥ platbu - - - Alt+A - Alt+A - - - Paste address from clipboard - Vložte adresu z klipbordu - - - Alt+P - Alt+P - - - Remove this entry - OdstrániÅ¥ túto položku - - - S&ubtract fee from amount - OdpoÄítaÅ¥ poplatok od s&umy - - - Message: - Správa: - - - This is an unauthenticated payment request. - Toto je neoverená výzva k platbe. - - - This is an authenticated payment request. - Toto je overená výzva k platbe. - - - Enter a label for this address to add it to the list of used addresses - Vložte popis pre túto adresu aby sa uložila do zoznamu použitých adries - - - A message that was attached to the bitcoin: URI which will be stored with the transaction for your reference. Note: This message will not be sent over the Bitcoin network. - Správa ktorá bola pripojená k bitcoin: URI a ktorá bude uložená s transakcou pre VaÅ¡e potreby. Poznámka: Táto správa nebude poslaná cez sieÅ¥ Bitcoin. - - - Pay To: - Platba pre: - - - Memo: - Poznámka: - - - - ShutdownWindow - - Bitcoin Core is shutting down... - Jadro Bitcoin sa ukonÄuje... - - - Do not shut down the computer until this window disappears. - Nevypínajte poÄítaÄ kým toto okno nezmizne. - - - - SignVerifyMessageDialog - - Signatures - Sign / Verify a Message - Podpisy - PodpísaÅ¥ / OveriÅ¥ správu - - - &Sign Message - &PodpísaÅ¥ Správu - - - Choose previously used address - VybraÅ¥ predtým použitú adresu - - - Alt+A - Alt+A - - - Paste address from clipboard - Vložte adresu z klipbordu - - - Alt+P - Alt+P - - - Enter the message you want to sign here - Sem vložte správu ktorú chcete podpísaÅ¥ - - - Signature - Podpis - - - Copy the current signature to the system clipboard - KopírovaÅ¥ práve zvolenú adresu do systémového klipbordu - - - Sign the message to prove you own this Bitcoin address - Podpíšte správu aby ste dokázali že vlastníte túto adresu - - - Sign &Message - PodpísaÅ¥ &správu - - - Reset all sign message fields - VynulovaÅ¥ vÅ¡etky polia podpisu správy - - - Clear &All - &ZmazaÅ¥ vÅ¡etko - - - &Verify Message - O&veriÅ¥ správu... - - - The Bitcoin address the message was signed with - Adresa Bitcoin, ktorou bola podpísaná správa - - - Verify the message to ensure it was signed with the specified Bitcoin address - Overím správy sa uistiÅ¥ že bola podpísaná oznaÄenou Bitcoin adresou - - - Verify &Message - &OveriÅ¥ správu - - - Reset all verify message fields - ObnoviÅ¥ vÅ¡etky polia v overiÅ¥ správu - - - Click "Sign Message" to generate signature - Kliknite "PodpísaÅ¥ Správu" na získanie podpisu - - - The entered address is invalid. - Zadaná adresa je neplatná. - - - Please check the address and try again. - Prosím skontrolujte adresu a skúste znova. - - - The entered address does not refer to a key. - Vložená adresa nezodpovedá žiadnemu kľúcu. - - - Wallet unlock was cancelled. - Odomknutie peňaženky bolo zruÅ¡ené. - - - Private key for the entered address is not available. - Súkromný kÄ¾ÃºÄ pre vložená adresu nieje k dispozícii. - - - Message signing failed. - Podpísanie správy zlyhalo. - - - Message signed. - Správa podpísaná. - - - The signature could not be decoded. - Podpis nie je možné dekódovaÅ¥. - - - Please check the signature and try again. - Prosím skontrolujte podpis a skúste znova. - - - The signature did not match the message digest. - Podpis sa nezhoduje so zhrnutím správy - - - Message verification failed. - Overenie správy zlyhalo. - - - Message verified. - Správa overená. - - - - SplashScreen - - Bitcoin Core - Jadro Bitcoin - - - The Bitcoin Core developers - Vývojári jadra Bitcoin - - - [testnet] - [testovacia sieÅ¥] - - - - TrafficGraphWidget - - KB/s - KB/s - - - - TransactionDesc - - Open until %1 - Otvorené do %1 - - - conflicted - sporné - - - %1/offline - %1/offline - - - %1/unconfirmed - %1/nepotvrdené - - - %1 confirmations - %1 potvrdení - - - Status - Stav - - - , broadcast through %n node(s) - , vysielaÅ¥ cez %n uzol, vysielaÅ¥ cez %n uzle, vysielaÅ¥ cez %n uzolov - - - Date - Dátum - - - Source - Zdroj - - - Generated - Vygenerované - - - From - od - - - To - Pre - - - own address - vlastná adresa - - - watch-only - Iba sledovanie - - - label - popis - - - Credit - Kredit - - - not accepted - neprijaté - - - Debit - Debet - - - Total debit - Debit spolu - - - Total credit - Kredit spolu - - - Transaction fee - TransakÄný poplatok - - - Net amount - Suma netto - - - Message - Správa - - - Comment - Komentár - - - Transaction ID - ID transakcie - - - Merchant - Kupec - - - Generated coins must mature %1 blocks before they can be spent. When you generated this block, it was broadcast to the network to be added to the block chain. If it fails to get into the chain, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - Vygenerované mince musia dospieÅ¥ %1 blokov kým môžu byÅ¥ minuté. KeÄ vytvoríte tento blok, bude rozoslaný do siete aby bol akceptovaný do reÅ¥aze blokov. Ak sa nedostane do reÅ¥azca, jeho stav sa zmení na "zamietnutý" a nebude sa daÅ¥ minúť. Toto sa môže obÄas staÅ¥ ak iný uzol vytvorí blok približne v rovnakom Äase. - - - Debug information - Ladiace informácie - - - Transaction - Transakcie - - - Inputs - Vstupy - - - Amount - Suma - - - true - pravda - - - false - nepravda - - - , has not been successfully broadcast yet - , eÅ¡te nebola úspeÅ¡ne odoslaná - - - Open for %n more block(s) - Otvorené pre %n Äalší blokOtvorené pre %n ÄalÅ¡ie blokyOtvorené pre %n Äalších blokov - - - unknown - neznámy - - - - TransactionDescDialog - - Transaction details - Detaily transakcie - - - This pane shows a detailed description of the transaction - Táto ÄasÅ¥ obrazovky zobrazuje detailný popis transakcie - - - - TransactionTableModel - - Date - Dátum - - - Type - Typ - - - Immature (%1 confirmations, will be available after %2) - Nezrelé (%1 potvrdení, bude k dispozícii po %2) - - - Open for %n more block(s) - Otvorené pre %n Äalší blokOtvorené pre %n ÄalÅ¡ie blokyOtvorené pre %n Äalších blokov - - - Open until %1 - Otvorené do %1 - - - Confirmed (%1 confirmations) - Potvrdené (%1 potvrdení) - - - This block was not received by any other nodes and will probably not be accepted! - Ten blok nebol prijatý žiadnou inou nódou a pravdepodobne nebude akceptovaný! - - - Generated but not accepted - Vygenerované ale neakceptované - - - Offline - Offline - - - Label - Popis - - - Unconfirmed - Nepotvrdené - - - Confirming (%1 of %2 recommended confirmations) - Potvrdzuje sa ( %1 z %2 odporúÄaných potvrdení) - - - Conflicted - V rozpore - - - Received with - Prijaté s - - - Received from - Prijaté od: - - - Sent to - Odoslané na - - - Payment to yourself - Platba sebe samému - - - Mined - VyÅ¥ažené - - - watch-only - Iba sledovanie - - - (n/a) - (n/a) - - - Transaction status. Hover over this field to show number of confirmations. - Status transakcie. Pohybujte myÅ¡ou nad týmto poľom a zjaví sa poÄet potvrdení. - - - Date and time that the transaction was received. - Dátum a Äas prijatia transakcie. - - - Type of transaction. - Typ transakcie. - - - Whether or not a watch-only address is involved in this transaction. - ÄŒi sú ale nie sú, adresy iba na sledovanie zahrnuté v tejto transakcii. - - - Amount removed from or added to balance. - Suma pridaná alebo odobraná k zostatku. - - - - TransactionView - - All - VÅ¡etko - - - Today - Dnes - - - This week - Tento týždeň - - - This month - Tento mesiac - - - Last month - Minulý mesiac - - - This year - Tento rok - - - Range... - Rozsah... - - - Received with - Prijaté s - - - Sent to - Odoslané na - - - To yourself - Samému sebe - - - Mined - VyÅ¥ažené - - - Other - Iné - - - Enter address or label to search - Vložte adresu alebo popis pre vyhľadávanie - - - Min amount - Min množstvo - - - Copy address - KopírovaÅ¥ adresu - - - Copy label - KopírovaÅ¥ popis - - - Copy amount - KopírovaÅ¥ sumu - - - Copy transaction ID - KopírovaÅ¥ ID transakcie - - - Edit label - EditovaÅ¥ popis - - - Show transaction details - ZobraziÅ¥ podrobnosti transakcie - - - Export Transaction History - ExportovaÅ¥ históriu transakcií - - - Watch-only - Iba sledovanie - - - Exporting Failed - Export zlyhal - - - There was an error trying to save the transaction history to %1. - Vyskytla sa chyba pri pokuse o uloženie histórie transakcií do %1. - - - Exporting Successful - Export úspeÅ¡ný - - - The transaction history was successfully saved to %1. - História transakciá bola úspeÅ¡ne uložená do %1. - - - Comma separated file (*.csv) - ÄŒiarkou oddelovaný súbor (*.csv) - - - Confirmed - Potvrdené - - - Date - Dátum - - - Type - Typ - - - Label - Popis - - - Address - Adresa - - - ID - ID - - - Range: - Rozsah: - - - to - do - - - - UnitDisplayStatusBarControl - - Unit to show amounts in. Click to select another unit. - Jednotka pre zobrazovanie súm. Kliknite pre zvolenie inej jednotky. - - - - WalletFrame - - No wallet has been loaded. - Nie je naÄítaná peňaženka. - - - - WalletModel - - Send Coins - PoslaÅ¥ Bitcoins - - - - WalletView - - &Export - &ExportovaÅ¥... - - - Export the data in the current tab to a file - ExportovaÅ¥ tento náhľad do súboru - - - Backup Wallet - ZálohovaÅ¥ peňaženku - - - Wallet Data (*.dat) - Údaje peňaženky (*.dat) - - - Backup Failed - Záloha zlyhala - - - There was an error trying to save the wallet data to %1. - Vyskytla sa chyba pri pokuse o uloženie dát peňaženky do %1. - - - The wallet data was successfully saved to %1. - Dáta peňaženky boli úspeÅ¡ne uložené do %1. - - - Backup Successful - Záloha úspeÅ¡ná - - - - bitcoin-core - - Options: - Možnosti: - - - Specify data directory - UrÄiÅ¥ prieÄinok s dátami - - - Connect to a node to retrieve peer addresses, and disconnect - PripojiÅ¥ sa k uzlu, získaÅ¥ adresy Äalších poÄítaÄov v sieti a odpojiÅ¥ sa - - - Specify your own public address - UrÄite vaÅ¡u vlastnú verejnú adresu - - - Accept command line and JSON-RPC commands - PrijímaÅ¥ príkazy z príkazového riadku a JSON-RPC - - - Run in the background as a daemon and accept commands - BežaÅ¥ na pozadí ako démon a prijímaÅ¥ príkazy - - - Use the test network - PoužiÅ¥ testovaciu sieÅ¥ - - - Accept connections from outside (default: 1 if no -proxy or -connect) - PrijaÅ¥ spojenia zvonku (predvolené: 1 ak žiadne -proxy alebo -connect) - - - Bind to given address and always listen on it. Use [host]:port notation for IPv6 - SpojiÅ¥ s danou adresou a vždy na nej poÄúvaÅ¥. Použite zápis [host]:port pre IPv6 - - - Delete all wallet transactions and only recover those parts of the blockchain through -rescan on startup - VymazaÅ¥ vÅ¡etky transakcie z peňaženky a pri spustení znova získaÅ¥ z reÅ¥azca blokov iba tie získané pomocou -rescan - - - Distributed under the MIT software license, see the accompanying file COPYING or <http://www.opensource.org/licenses/mit-license.php>. - Distribuované pod softvérovou licenciou MIT, viÄ sprievodný súbor COPYING alebo <http://www.opensource.org/licenses/mit-license.php>. - - - Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) - Vykonaj príkaz keÄ sa zmení transakcia peňaženky (%s v príkaze je nahradená TxID) - - - Set the number of script verification threads (%u to %d, 0 = auto, <0 = leave that many cores free, default: %d) - NastaviÅ¥ poÄeÅ¥ vlákien overujúcich skripty (%u až %d, 0 = auto, <0 = nechaÅ¥ toľkoto jadier voľných, prednastavené: %d) - - - This is a pre-release test build - use at your own risk - do not use for mining or merchant applications - Toto je pred-testovacia verzia - použitie je na vlastné riziko - nepoužívajte na tvorbu bitcoin ani obchodovanie. - - - Unable to bind to %s on this computer. Bitcoin Core is probably already running. - Nepodarilo sa pripojiÅ¥ na %s na tomto poÄítaÄi. Bitcoin Jadro je už pravdepodobne spustené. - - - Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. - Varovanie: -paytxfee je nastavené veľmi vysoko. Toto sú transakÄné poplatky ktoré zaplatíte ak odoÅ¡lete transakciu. - - - Warning: The network does not appear to fully agree! Some miners appear to be experiencing issues. - Varovanie: Javí sa že sieÅ¥ sieÅ¥ úplne nesúhlasí! Niektorí mineri zjavne majú Å¥ažkosti. - -The network does not appear to fully agree! Some miners appear to be experiencing issues. - - - Warning: We do not appear to fully agree with our peers! You may need to upgrade, or other nodes may need to upgrade. - Varovanie: Zjavne sa úplne nezhodujeme s naÅ¡imi peer-mi! Možno potrebujete prejsÅ¥ na novÅ¡iu verziu alebo ostatné uzly potrebujú vyššiu verziu. - - - Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. - Varovanie: chyba pri Äítaní wallet.dad! VÅ¡etky kľúÄe sú Äitateľné ale transakÄné dáta alebo záznamy v adresári môžu byÅ¥ nesprávne. - - - 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. - Varovanie: wallet.dat je poÅ¡kodený, údaje úspeÅ¡ne získané! Pôvodný wallet.dat uložený ako wallet.{timestamp}.bak v %s; ak váš zostatok alebo transakcie niesu správne, mali by ste súbor obnoviÅ¥ zo zálohy. - - - Whitelist peers connecting from the given netmask or IP address. Can be specified multiple times. - Uzle na zoznam povolených, ktoré sa pripájajú z danej netmask alebo IP adresy. Môže byÅ¥ zadané viac krát. - - - (default: 1) - (predvolené: 1) - - - <category> can be: - <category> môže byÅ¥: - - - Attempt to recover private keys from a corrupt wallet.dat - Pokus zachrániÅ¥ súkromné kľúÄe z poÅ¡kodeného wallet.dat - - - Block creation options: - Voľby vytvorenia bloku: - - - Connect only to the specified node(s) - PripojiÅ¥ sa len k urÄenej nóde - - - Connection options: - Možnosti pripojenia: - - - Corrupted block database detected - Zistená poÅ¡kodená databáza blokov - - - Debugging/Testing options: - Možnosti ladenia/testovania: - - - Do not load the wallet and disable wallet RPC calls - Nenahrat peňaženku a zablokovaÅ¥ volania RPC. - - - Do you want to rebuild the block database now? - Chcete znovu zostaviÅ¥ databázu blokov? - - - Error initializing block database - Chyba inicializácie databázy blokov - - - Error initializing wallet database environment %s! - Chyba spustenia databázového prostredia peňaženky %s! - - - Error loading block database - Chyba naÄítania databázy blokov - - - Error opening block database - Chyba otvárania databázy blokov - - - Error: Disk space is low! - Chyba: Málo miesta na disku! - - - Failed to listen on any port. Use -listen=0 if you want this. - Chyba poÄúvania na ktoromkoľvek porte. Použi -listen=0 ak toto chcete. - - - If <category> is not supplied, output all debugging information. - Ak nie je uvedená <category>, na výstupe zobrazuj vÅ¡etky informácie pre ladenie. - - - Importing... - Prebieha import ... - - - Incorrect or no genesis block found. Wrong datadir for network? - Nesprávny alebo žiadny genesis blok nájdený. Nesprávny dátový prieÄinok alebo sieÅ¥? - - - Invalid -onion address: '%s' - Neplatná -onion adresa: '%s' - - - Not enough file descriptors available. - Nedostatok kľúÄových slov súboru. - - - Only connect to nodes in network <net> (ipv4, ipv6 or onion) - PripojiÅ¥ iba k uzlom v sieti <net> (ipv4, ipv6, alebo onion) - - - Set database cache size in megabytes (%d to %d, default: %d) - NastaviÅ¥ veľkosÅ¥ pomocnej pamäti databázy v megabajtoch (%d do %d, prednastavené: %d) - - - Set maximum block size in bytes (default: %d) - NastaviÅ¥ najväÄÅ¡iu veľkosÅ¥ bloku v bytoch (predvolené: %d) - - - Specify wallet file (within data directory) - OznaÄ súbor peňaženky (v prieÄinku s dátami) - - - Use UPnP to map the listening port (default: %u) - PoužiÅ¥ UPnP pre mapovanie poÄúvajúceho portu (predvolené: %u) - - - Verifying blocks... - Overujem bloky... - - - Verifying wallet... - Overujem peňaženku... - - - Wallet %s resides outside data directory %s - Peňaženka %s sa nachádza mimo dátového prieÄinka %s - - - Wallet options: - Voľby peňaženky: - - - You need to rebuild the database using -reindex to change -txindex - Potrebujete prebudovaÅ¥ databázu použitím -reindex zmeniÅ¥ -txindex - - - Imports blocks from external blk000??.dat file - Importuje bloky z externého súboru blk000??.dat - - - 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 - PovoliÅ¥ JSON-RPC pripojenia zo zadaného zdroja. Pre <ip> sú platné jednoduché IP (napr. 1.2.3.4), sieÅ¥/netmask (napr. 1.2.3.4/255.255.255.0) alebo sieÅ¥/CIDR (napr. 1.2.3.4/24). Táto možnosÅ¥ môže byÅ¥ zadaná niekoľko krát - - - An error occurred while setting up the RPC address %s port %u for listening: %s - Pri nastavovaní RPC adresy %s na porte %u pre poÄúvanie doÅ¡lo k chybe: %s - - - Bind to given address and whitelist peers connecting to it. Use [host]:port notation for IPv6 - SpojiÅ¥ s danou adresou a povolenými partnerskými zariadeniami ktoré sa tam pripájajú. Použite zápis [host]:port pre IPv6 - - - Bind to given address to listen for JSON-RPC connections. Use [host]:port notation for IPv6. This option can be specified multiple times (default: bind to all interfaces) - SpojiÅ¥ s danou adresou pre poÄúvanie JSON-RPC spojení. Použite zápis [host]:port pre IPv6. Táto možnosÅ¥ môže byt zadaná niekoľko krát (predvolené: spojiÅ¥ so vÅ¡etkými rozhraniami) - - - Cannot obtain a lock on data directory %s. Bitcoin Core is probably already running. - Neviem uzamknúť data adresár %s. Jadro Bitcoin je pravdepodobne už spustené. - - - Create new files with system default permissions, instead of umask 077 (only effective with disabled wallet functionality) - VytvoriÅ¥ nové súbory z predvolenými systémovými právami, namiesto umask 077 (funguje iba z vypnutou funkcionalitou peňaženky) - - - Error: Listening for incoming connections failed (listen returned error %s) - Chyba: PoÄúvanie prichádzajúcich spojení zlyhalo (vrátená chyba je %s) - - - Error: Unsupported argument -socks found. Setting SOCKS version isn't possible anymore, only SOCKS5 proxies are supported. - Chyba: Nájdený nepodporovaný argument -socks. Nastavenie SOCKS verzie nie je už možné, podporované sú už iba proxy SOCKS5. - - - Execute command when a relevant alert is received or we see a really long fork (%s in cmd is replaced by message) - VykonaÅ¥ príkaz po prijatí patriÄného varovania alebo uvidíme veľmi dlhé rozdvojenie siete (%s v cmd je nahradené správou) - - - Fees (in BTC/Kb) smaller than this are considered zero fee for relaying (default: %s) - Poplatky (v BTC/Kb) nižšie ako toľkoto sa považujú za nulové pri postupovaní transakcií (predvolené: %s) - - - If paytxfee is not set, include enough fee so transactions begin confirmation on average within n blocks (default: %u) - Ak nie je nastavené paytxfee, pridaÅ¥ dostatoÄný poplatok aby sa transakcia zaÄala potvrdzovaÅ¥ priemerne v rámci bloku (predvolené: %u) - - - Invalid amount for -maxtxfee=<amount>: '%s' (must be at least the minrelay fee of %s to prevent stuck transactions) - Neplatná suma pre -maxtxfee=<amount>: '%s' (aby sa transakcia nezasekla, minimálny prenosový poplatok musí byÅ¥ aspoň %s) - - - Maximum size of data in data carrier transactions we relay and mine (default: %u) - Maximálna veľkosÅ¥ dát v transakciách nosných dát, ktoré prenášame a Å¥ažíme (predvolené: %u) - - - Query for peer addresses via DNS lookup, if low on addresses (default: 1 unless -connect) - Dotaz na partnerské adresy pomocou vyhľadávania DNS v prípade nedostatku adries (predvolené: 1, pokiaľ -connect) - - - Set maximum size of high-priority/low-fee transactions in bytes (default: %d) - NastaviÅ¥ najväÄÅ¡iu veľkosÅ¥ vysoká-dôležitosÅ¥/nízke-poplatky transakcií v bajtoch (prednastavené: %d) - - - Set the number of threads for coin generation if enabled (-1 = all cores, default: %d) - NastaviÅ¥ poÄet vlákien pre generáciu mincí (-1 = vÅ¡etky jadrá, predvolené: %d) - - - 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. - Tento produkt obsahuje softvér vyvinutý projektom OpenSSL pre použitie sady nástrojov OpenSSL <https://www.openssl.org/> a kryptografického softvéru napísaného Eric Young a UPnP softvér napísaný Thomas Bernard. - - - Warning: -maxtxfee is set very high! Fees this large could be paid on a single transaction. - Upozornenie: -maxtxfee je nastavené príliÅ¡ vysoko! Takto vysoké poplatky by mali byÅ¥ zaplatené za jednu transakciu. - - - 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 - Uzle na zoznam povolených nemôžu byÅ¥ DoS zakázané a ich transakcie vždy postúpené Äalej, aj v prípade, ak sú už pamäťovej fronte. UžitoÄné napr. pre brány - - - (default: %u) - (predvolené: %u) - - - Accept public REST requests (default: %u) - AkceptovaÅ¥ verejné REST žiadosti (predvolené: %u) - - - Cannot resolve -whitebind address: '%s' - Nedá sa vyrieÅ¡iÅ¥ -whitebind adresa: '%s' - - - Choose data directory on startup (default: 0) - Zvoľte dátový prieÄinok pri Å¡tarte (prednastavené: 0) - - - Connect through SOCKS5 proxy - PripojiÅ¥ cez proxy server SOCKS5 - - - Copyright (C) 2009-%i The Bitcoin Core Developers - Autorské práva (C) 2009-%i Vývojári jadra Bitcoin - - - Could not parse -rpcbind value %s as network address - Nedá sa analyzovaÅ¥ -rpcbind hodnota %s ako sieÅ¥ová adresa - - - Error loading wallet.dat: Wallet requires newer version of Bitcoin Core - Chyba pri Äítaní wallet.dat: Peňaženka vyžaduje vyššiu verziu Jadra Bitcoin - - - Error reading from database, shutting down. - Chyba pri naÄítaní z databázy, ukonÄuje sa. - - - Error: Unsupported argument -tor found, use -onion. - Chyba: nájdený nepodporovaný argument -tor, použite -onion. - - - Fee (in BTC/kB) to add to transactions you send (default: %s) - Poplatok (v BTC/kB), ktorý sa pridá k transakciám, ktoré odosielate (predvolený: %s) - - - Information - Informácia - - - Invalid amount for -maxtxfee=<amount>: '%s' - Neplatná suma pre -maxtxfee=<amount>: '%s' - - - Invalid amount for -minrelaytxfee=<amount>: '%s' - Neplatná suma pre -minrelaytxfee=<amount>: '%s' - - - Invalid amount for -mintxfee=<amount>: '%s' - Neplatná suma pre -mintxfee=<amount>: '%s' - - - Invalid amount for -paytxfee=<amount>: '%s' (must be at least %s) - Neplatná suma pre -paytxfee=<amount>: '%s' (musí byÅ¥ aspoň %s) - - - Invalid netmask specified in -whitelist: '%s' - Nadaná neplatná netmask vo -whitelist: '%s' - - - Keep at most <n> unconnectable transactions in memory (default: %u) - V pamäti udržiavaÅ¥ najviac <n> nepotvrdených transakcií (predvolené: %u) - - - Need to specify a port with -whitebind: '%s' - Je potrebné zadaÅ¥ port s -whitebind: '%s' - - - Node relay options: - Prenosové možnosti uzla: - - - RPC SSL options: (see the Bitcoin Wiki for SSL setup instructions) - Možnosti RPC SSL: (Pozri v Bitcoin Wiki pokyny pre SSL nastavenie) - - - RPC server options: - Možnosti servra RPC: - - - RPC support for HTTP persistent connections (default: %d) - Podpora RPC pre trvalé HTTP spojenia (predvolené: %d) - - - Receive and display P2P network alerts (default: %u) - ObdržaÅ¥ a zobraziÅ¥ sieÅ¥ové P2P varovania (predvolené: %u) - - - Send trace/debug info to console instead of debug.log file - OdoslaÅ¥ trace/debug informácie na konzolu namiesto debug.info žurnálu - - - Send transactions as zero-fee transactions if possible (default: %u) - PoslaÅ¥ ako transakcie bez poplatku, ak je to možné (predvolené: %u) - - - Set SSL root certificates for payment request (default: -system-) - NastaviÅ¥ koreňový certifikát pre výzvy na platbu (prednastavené: -system-) - - - Set language, for example "de_DE" (default: system locale) - NastaviÅ¥ jazyk, napríklad "sk_SK" (predvolené: systémový) - - - Show all debugging options (usage: --help -help-debug) - ZobraziÅ¥ vÅ¡etky možnosti ladenia (použitie: --help --help-debug) - - - Show splash screen on startup (default: 1) - ZobraziÅ¥ splash screen pri spustení (predvolené: 1) - - - Shrink debug.log file on client startup (default: 1 when no -debug) - ZmenÅ¡iÅ¥ debug.log pri spustení klienta (predvolené: 1 ak bez -debug) - - - Signing transaction failed - Podpísanie správy zlyhalo - - - Start minimized - SpustiÅ¥ minimalizované - - - This is experimental software. - Toto je experimentálny softvér. - - - Transaction amount too small - Suma transakcie príliÅ¡ malá - - - Transaction amounts must be positive - Hodnoty transakcie musia byÅ¥ väÄÅ¡ie ako nula (pozitívne) - - - Transaction too large for fee policy - Transakcia je príliÅ¡ veľká pre aktuálne podmienky poplatkov - - - Transaction too large - Transakcia príliÅ¡ veľká - - - UI Options: - Možnosti používateľského rozhrania: - - - Unable to bind to %s on this computer (bind returned error %s) - Na tomto poÄítaÄi sa nedá vytvoriÅ¥ väzba %s (vytvorenie väzby vrátilo chybu %s) - - - Use UPnP to map the listening port (default: 1 when listening) - SkúsiÅ¥ použiÅ¥ UPnP pre mapovanie poÄúvajúceho portu (default: 1 when listening) - - - Username for JSON-RPC connections - Užívateľské meno pre JSON-RPC spojenia - - - Warning - Upozornenie - - - Warning: Unsupported argument -benchmark ignored, use -debug=bench. - Upozornenie: Nepodporovaný argument -benchmark bol ignorovaný, použite -debug=bench. - - - Warning: Unsupported argument -debugnet ignored, use -debug=net. - Upozornenie: Nepodporovaný argument -debugnet bol ignorovaný, použite -debug=net. - - - Zapping all transactions from wallet... - ZmazaÅ¥ vÅ¡etky transakcie z peňaženky... - - - on startup - pri Å¡tarte - - - wallet.dat corrupt, salvage failed - wallet.dat je poÅ¡kodený, záchrana zlyhala - - - Password for JSON-RPC connections - Heslo pre JSON-rPC spojenia - - - Execute command when the best block changes (%s in cmd is replaced by block hash) - Vykonaj príkaz, ak zmeny v najlepÅ¡om bloku (%s v príkaze nahradí blok hash) - - - Upgrade wallet to latest format - Aktualizuj peňaženku na najnovší formát. - - - Rescan the block chain for missing wallet transactions - Znovu skenovaÅ¥ reÅ¥az blokov pre chýbajúce transakcie - - - Use OpenSSL (https) for JSON-RPC connections - PoužiÅ¥ OpenSSL (https) pre JSON-RPC spojenia - - - This help message - Táto pomocná správa - - - Allow DNS lookups for -addnode, -seednode and -connect - PovoliÅ¥ vyhľadávanie DNS pre pridanie nódy a spojenie - - - Loading addresses... - NaÄítavanie adries... - - - Error loading wallet.dat: Wallet corrupted - Chyba naÄítania wallet.dat: Peňaženka je poÅ¡kodená - - - (1 = keep tx meta data e.g. account owner and payment request information, 2 = drop tx meta data) - (1 = zachovaÅ¥ metaúdaje tx napr. vlastníka úÄtu a informácie o platobných príkazoch, 2 = zahodiÅ¥ metaúdaje tx) - - - How thorough the block verification of -checkblocks is (0-4, default: %u) - Ako dôkladné je -checkblocks overenie blokov (0-4, predvolené: %u) - - - Maintain a full transaction index, used by the getrawtransaction rpc call (default: %u) - UdržiavaÅ¥ kompletný transakÄný index, využíva getrawtransaction rpc volanie (predvolené: %u) - - - Number of seconds to keep misbehaving peers from reconnecting (default: %u) - PoÄet sekúnd, poÄas ktorých nepripájaÅ¥ zle správajúce sa uzle (predvolené: %u) - - - Output debugging information (default: %u, supplying <category> is optional) - Výstupné ladiace informácie (predvolené: %u, dodanie <category> je voliteľné) - - - Use separate SOCKS5 proxy to reach peers via Tor hidden services (default: %s) - PoužiÅ¥ samostatný SOCKS5 proxy server na dosiahnutie poÄítaÄov cez skryté služby Tor (predvolené: %s) - - - (default: %s) - (predvolené: %s) - - - Acceptable ciphers (default: %s) - Prijateľné Å¡ifry (predvolené: %s) - - - Always query for peer addresses via DNS lookup (default: %u) - Vždy sa dotazovaÅ¥ adresy partnerských uzlov cez vyhľadávanie DNS (predvolené: %u) - - - Error loading wallet.dat - Chyba naÄítania wallet.dat - - - How many blocks to check at startup (default: %u, 0 = all) - Koľko blokov overiÅ¥ pri spustení (predvolené: %u, 0 = vÅ¡etky) - - - Include IP addresses in debug output (default: %u) - Zahrnúť IP adresy v ladiacom výstupe (predvolené: %u) - - - Invalid -proxy address: '%s' - Neplatná adresa proxy: '%s' - - - Listen for JSON-RPC connections on <port> (default: %u or testnet: %u) - PoÄúvaÅ¥ JSON-RPC pripojenia na <port> (predvolené: %u alebo testovacia sieÅ¥: %u) - - - Listen for connections on <port> (default: %u or testnet: %u) - PoÄúvaÅ¥ pripojenia na <port> (predvolené: %u alebo testovacia sieÅ¥: %u) - - - Maintain at most <n> connections to peers (default: %u) - UdržiavaÅ¥ najviac <n> spojení s inými poÄítaÄmi (predvolené: %u) - - - Maximum per-connection receive buffer, <n>*1000 bytes (default: %u) - Maximálna prijímajúca medzipamäť pre pripojenie, <n>*1000 bajtov (predvolené: %u) - - - Maximum per-connection send buffer, <n>*1000 bytes (default: %u) - Maximálna odosielajúca medzipamäť pre pripojenie, <n>*1000 bajtov (predvolené: %u) - - - Prepend debug output with timestamp (default: %u) - Na zaÄiatok pripojiÅ¥ Äasovú známku k ladiacemu výstupu (predvolené: %u) - - - Relay and mine data carrier transactions (default: %u) - PrenášaÅ¥ a Å¥ažiÅ¥ transakcie nosných dát (predvolené: %u) - - - Relay non-P2SH multisig (default: %u) - PrenášaÅ¥ non-P2SH multi-podpis (predvolené: %u) - - - Server certificate file (default: %s) - CertifikaÄný súbor servera (predvolené: %s) - - - Server private key (default: %s) - Privátny kÄ¾ÃºÄ servera (predvolené: %s) - - - Set key pool size to <n> (default: %u) - NastaviÅ¥ veľkosÅ¥ kľúÄa fronty na <n> (predvolené: %u) - - - Set minimum block size in bytes (default: %u) - NastaviÅ¥ minimálnu veľkosÅ¥ bloku v bajtoch (predvolené: %u) - - - Set the number of threads to service RPC calls (default: %d) - NastaviÅ¥ poÄet vlákien na obsluhu RPC volaní (predvolené: %d) - - - Specify configuration file (default: %s) - ZadaÅ¥ konfiguraÄný súbor (predvolené: %s) - - - Specify connection timeout in milliseconds (minimum: 1, default: %d) - Zadajte Äasový limit pripojenia v milisekundách (minimum: 1, predvolené: %d) - - - Specify pid file (default: %s) - ZadaÅ¥ pid súbor (predvolené: %s) - - - Spend unconfirmed change when sending transactions (default: %u) - Minúť nepotvrdené zmenu pri posielaní transakcií (predvolené: %u) - - - Threshold for disconnecting misbehaving peers (default: %u) - Hranica pre odpájanie zle sa správajúcim partnerským uzlom (predvolené: %u) - - - Unknown network specified in -onlynet: '%s' - Neznáma sieÅ¥ upresnená v -onlynet: '%s' - - - Cannot resolve -bind address: '%s' - Nemožno rozrieÅ¡iÅ¥ -bind adress: '%s' - - - Cannot resolve -externalip address: '%s' - Nemožno rozrieÅ¡iÅ¥ -externalip address: '%s' - - - Invalid amount for -paytxfee=<amount>: '%s' - Neplatná suma pre -paytxfee=<amount>: '%s' - - - Insufficient funds - Nedostatok prostriedkov - - - Loading block index... - NaÄítavanie zoznamu blokov... - - - Add a node to connect to and attempt to keep the connection open - PridaÅ¥ nód na pripojenie a pokus o udržanie pripojenia otvoreného - - - Loading wallet... - NaÄítavam peňaženku... - - - Cannot downgrade wallet - Nie je možné prejsÅ¥ na nižšiu verziu peňaženky - - - Cannot write default address - Nie je možné zapísaÅ¥ predvolenú adresu. - - - Rescanning... - Nové prehľadávanie... - - - Done loading - DokonÄené naÄítavanie - - - Error - Chyba - - - \ No newline at end of file diff --git a/src/qt/locale/bitcoin_sl_SI.ts b/src/qt/locale/bitcoin_sl_SI.ts deleted file mode 100644 index 4c3427e47..000000000 --- a/src/qt/locale/bitcoin_sl_SI.ts +++ /dev/null @@ -1,3312 +0,0 @@ - - - AddressBookPage - - Right-click to edit address or label - Desni klik za urejanje naslovov ali oznak - - - Create a new address - Ustvari nov naslov - - - &New - &Novo - - - Copy the currently selected address to the system clipboard - Kopiraj trenutno izbrani naslov v odložiÅ¡Äe - - - &Copy - &Kopiraj - - - C&lose - &Zapri - - - &Copy Address - &Kopiraj naslov - - - Delete the currently selected address from the list - IzbriÅ¡i trenutno oznaÄeni naslov iz seznama - - - Export the data in the current tab to a file - Izvozi podatke v trenutnem zavihku v datoteko - - - &Export - &Izvozi - - - &Delete - I&zbriÅ¡i - - - Choose the address to send coins to - Izbira naslova, na katerega poÅ¡iljate plaÄilo - - - Choose the address to receive coins with - Izbira naslova za prejem plaÄila - - - C&hoose - &Izberi - - - Sending addresses - Imenik naslovov za poÅ¡iljanje - - - Receiving addresses - Imenik naslovov za prejemanje - - - These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins. - To je vaÅ¡ imenik shranjenih naslovov Bitcoin, na katere lahko poÅ¡iljate plaÄila. Pred vsakim odlivom vedno preverite, Äe sta znesek in prejemnikov naslov pravilna. - - - These are your Bitcoin addresses for receiving payments. It is recommended to use a new receiving address for each transaction. - To je imenik vaÅ¡ih ustvarjenih naslovov Bitcoin, na katere lahko prejemate plaÄila. PriporoÄljivo je, da za vsak nov priliv ustvarite nov prejemni naslov. - - - Copy &Label - Kopiraj &oznako - - - &Edit - &Uredi - - - Export Address List - Izvozi seznam naslovov - - - Comma separated file (*.csv) - Datoteka s podatki, loÄenimi z vejico (*.csv) - - - Exporting Failed - Seznama naslovov ni bilo mogoÄe izvoziti. - - - There was an error trying to save the address list to %1. Please try again. - Napaka pri shranjevanju seznama naslovov v datoteko %1. Prosimo, poskusite znova. - - - - AddressTableModel - - Label - Oznaka - - - Address - Naslov - - - (no label) - (brez oznake) - - - - AskPassphraseDialog - - Passphrase Dialog - Vnos gesla - - - Enter passphrase - Vnesite geslo - - - New passphrase - Novo geslo - - - Repeat new passphrase - Ponovite novo geslo - - - Encrypt wallet - Å ifriraj denarnico - - - This operation needs your wallet passphrase to unlock the wallet. - To dejanje zahteva geslo za odklepanje vaÅ¡e denarnice. - - - Unlock wallet - Odkleni denarnico - - - This operation needs your wallet passphrase to decrypt the wallet. - To dejanje zahteva geslo za deÅ¡ifriranje vaÅ¡e denarnice. - - - Decrypt wallet - DeÅ¡ifriraj denarnico - - - Change passphrase - Zamenjaj geslo - - - Confirm wallet encryption - Potrditev Å¡ifriranja denarnice - - - Warning: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR BITCOINS</b>! - Opozorilo: V primeru izgube gesla Å¡ifrirane denarnice, boste <b>IZGUBILI VSE BITCOINE V DENARNICI</b>! - - - Are you sure you wish to encrypt your wallet? - Ali ste prepriÄani, da želite Å¡ifrirati vaÅ¡o denarnico? - - - Bitcoin Core 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. - Program se bo zaprl, da dokonÄa proces Å¡ifriranja. Zapomnite si, da Å¡ifriranje ne more popolnoma zaÅ¡Äititi vaÅ¡e denarnice pred krajami in zlonamernimi programi, ki bi lahko bili nameÅ¡Äeni na vaÅ¡em raÄunalniku. - - - 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. - POMEMBNO: Vse starejÅ¡e obstojeÄe varnostne kopije denarnice je potrebno zamenjati s to novo, Å¡ifrirano varnostno kopijo. Iz varnostnih razlogov bodo stare varnostne kopije postale neuporabne takoj, ko zaÄnete uporabljati novo, Å¡ifrirano denarnico. - - - Warning: The Caps Lock key is on! - Opozorilo: imate vklopljene velike Ärke (Caps Lock) - - - Wallet encrypted - Denarnica je Å¡ifrirana - - - 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>. - Vnesite novo geslo. Prosimo, da uporabite geslo sestavljeno iz <b>deset ali veÄ</b> nakljuÄnih znakov, ali <b>osem ali veÄ</b> besed. - - - Enter the old passphrase and new passphrase to the wallet. - Vnesite staro in novo geslo denarnice. - - - Wallet encryption failed - Denarnice ni bilo mogoÄe Å¡ifrirati. - - - Wallet encryption failed due to an internal error. Your wallet was not encrypted. - PriÅ¡lo je do napake. Denarnice ni bilo mogoÄe Å¡ifrirati. - - - The supplied passphrases do not match. - VneÅ¡eni gesli se ne ujemata - - - Wallet unlock failed - Denarnice ni bilo mogoÄe odkleniti. - - - The passphrase entered for the wallet decryption was incorrect. - Vnesli ste napaÄno geslo za deÅ¡ifriranje denarnice. - - - Wallet decryption failed - Denarnice ni bilo mogoÄe deÅ¡ifrirati. - - - Wallet passphrase was successfully changed. - Geslo za dostop do denarnice je bilo uspeÅ¡no zamenjano. - - - - BitcoinGUI - - Sign &message... - PodpiÅ¡i &sporoÄilo ... - - - Synchronizing with network... - Dohitevam omrežje ... - - - &Overview - Pre&gled - - - Node - VozliÅ¡Äe - - - Show general overview of wallet - Oglejte si sploÅ¡ne informacije o vaÅ¡i denarnici - - - &Transactions - &Transakcije - - - Browse transaction history - Brskajte po zgodovini transakcij - - - E&xit - I&zhod - - - Quit application - Ustavite program - - - About &Qt - O &Qt - - - Show information about Qt - Oglejte si informacije o Qt - - - &Options... - &Možnosti ... - - - &Encrypt Wallet... - &Å ifriraj denarnico ... - - - &Backup Wallet... - Shrani &varnostno kopijo denarnice ... - - - &Change Passphrase... - &Spremeni geslo ... - - - &Sending addresses... - Naslovi za po&Å¡iljanje ... - - - &Receiving addresses... - Naslovi za &prejemanje... - - - Open &URI... - Odpri &URI ... - - - Bitcoin Core client - Odjemalec Bitcoin Core - - - Importing blocks from disk... - Uvažam bloke z diska ... - - - Reindexing blocks on disk... - Poustvarjam kazalo blokov na disku ... - - - Send coins to a Bitcoin address - Izvedite plaÄilo na naslov Bitcoin - - - Backup wallet to another location - Shranite varnostno kopijo svoje denarnice na drugo lokacijo - - - Change the passphrase used for wallet encryption - Spremenite geslo za Å¡ifriranje denarnice - - - &Debug window - &RazhroÅ¡Äevalno okno - - - Open debugging and diagnostic console - Odprite razhroÅ¡Äevalno in diagnostiÄno konzolo - - - &Verify message... - &Preveri sporoÄilo ... - - - Bitcoin - Bitcoin - - - Wallet - Denarnica - - - &Send - &PoÅ¡lji - - - &Receive - P&rejmi - - - Show information about Bitcoin Core - Oglejte si informacije o programu - - - &Show / Hide - &Prikaži / Skrij - - - Show or hide the main Window - Prikaži ali skrij glavno okno - - - Encrypt the private keys that belong to your wallet - Å ifrirajte zasebne kljuÄe, ki se nahajajo v denarnici - - - Sign messages with your Bitcoin addresses to prove you own them - PodpiÅ¡ite poljubno sporoÄilo z enim svojih naslovov Bitcoin, da prejemniku sporoÄila dokažete, da je ta naslov v vaÅ¡i lasti. - - - Verify messages to ensure they were signed with specified Bitcoin addresses - Preverite, Äe je bilo prejeto sporoÄilo podpisano z doloÄenim naslovom Bitcoin - - - &File - &Datoteka - - - &Settings - &Nastavitve - - - &Help - &PomoÄ - - - Tabs toolbar - Orodna vrstica zavihkov - - - Bitcoin Core - Bitcoin Core - - - Request payments (generates QR codes and bitcoin: URIs) - Zahtevajte plaÄilo (ustvarite zahtevek s kodo QR in URI tipa bitcoin:) - - - &About Bitcoin Core - &O programu - - - Modify configuration options for Bitcoin Core - Spremenite programske nastavitve - - - Show the list of used sending addresses and labels - Preglejte in uredite seznam naslovov, na katere ste kdaj poslali plaÄila - - - Show the list of used receiving addresses and labels - Preglejte in uredite seznam naslovov, na katere ste kdaj prejeli plaÄila - - - Open a bitcoin: URI or payment request - Izvedite plaÄilo iz zahtevka v datoteki ali iz URI tipa bitcoin: - - - &Command-line options - Opcije &ukazne vrstice - - - Show the Bitcoin Core help message to get a list with possible Bitcoin command-line options - Oglejte si seznam in kratek opis vseh opcij pri zagonu programa iz ukazne vrstice - - - %n active connection(s) to Bitcoin network - %n aktivna povezava v bitcoin omrežje%n aktivni povezavi v bitcoin omrežje%n aktivne povezave v bitcoin omrežje%n aktivnih povezav v bitcoin omrežje - - - No block source available... - Ni virov za prenos blokov ... - - - Processed %n block(s) of transaction history. - %n obdelan blok zgodovine transakcij.%n obdelana bloka zgodovine transakcij.%n obdelani bloki zgodovine transakcij.%n obdelanih blokov zgodovine transakcij. - - - %n hour(s) - %n ura%n uri%n ure%n ur - - - %n day(s) - %n dan%n dneva%n dni%n dni - - - %n week(s) - %n teden%n tedna%n tedne%n tednov - - - %1 and %2 - %1 in %2 - - - %n year(s) - %n leto%n leti%n leta%n let - - - %1 behind - imam Å¡e %1 zaostanka - - - Last received block was generated %1 ago. - Zadnji prejeti blok je bil ustvarjen %1 nazaj. - - - Transactions after this will not yet be visible. - NovejÅ¡e transakcije Å¡e ne bodo vidne. - - - Error - Napaka - - - Warning - Opozorilo - - - Information - Informacije - - - Up to date - Posodobljeno - - - Catching up... - Dohitevam omrežje ... - - - Date: %1 - - Datum: %1 - - - - Amount: %1 - - Znesek: %1 - - - - Type: %1 - - Vrsta: %1 - - - - Label: %1 - - Oznaka: %1 - - - - Address: %1 - - Naslov: %1 - - - - Sent transaction - Odlivi - - - Incoming transaction - Prilivi - - - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - Denarnica je <b>Å¡ifrirana</b> in trenutno <b>odklenjena</b> - - - Wallet is <b>encrypted</b> and currently <b>locked</b> - Denarnica je <b>Å¡ifrirana</b> in trenutno <b>zaklenjena</b> - - - - ClientModel - - Network Alert - Omrežno opozorilo - - - - CoinControlDialog - - Coin Selection - Izbira vhodnih kovancev - - - Quantity: - Å t.vhodov: - - - Bytes: - Å t.bajtov: - - - Amount: - Znesek: - - - Priority: - Prioriteta: - - - Fee: - Provizija: - - - Dust: - Prah: - - - After Fee: - Po proviziji: - - - Change: - VraÄilo: - - - (un)select all - izberi vse/niÄ - - - Tree mode - Drevesni prikaz - - - List mode - Seznam - - - Amount - Znesek - - - Received with label - Oznaka priliva - - - Received with address - Naslov priliva - - - Date - Datum - - - Confirmations - Potrditve - - - Confirmed - Potrjeno - - - Priority - Prioriteta - - - Copy address - Kopiraj naslov - - - Copy label - Kopiraj oznako - - - Copy amount - Kopiraj znesek - - - Copy transaction ID - Kopiraj ID transakcije - - - Lock unspent - Zakleni neporabljeno - - - Unlock unspent - Odkleni neporabljeno - - - Copy quantity - Kopiraj Å¡tevilo vhodov - - - Copy fee - Kopiraj znesek provizije - - - Copy after fee - Kopiraj konÄni znesek - - - Copy bytes - Kopiraj Å¡tevilo bajtov - - - Copy priority - Kopiraj prioriteto - - - Copy dust - Kopiraj prah - - - Copy change - Kopiraj znesek vraÄila - - - highest - najviÅ¡ja - - - higher - viÅ¡ja - - - high - visoka - - - medium-high - srednje visoka - - - medium - srednja - - - low-medium - srednje nizka - - - low - nizka - - - lower - nižja - - - lowest - najnižja - - - (%1 locked) - (%1 zaklenjeno) - - - none - niÄ - - - This label turns red if the transaction size is greater than 1000 bytes. - Oznaka postane rdeÄa, Äe je transakcije veÄja od 1000 bajtov. - - - This label turns red if the priority is smaller than "medium". - Oznaka postane rdeÄa, Äe je prioriteta transakcije manjÅ¡a kot "srednja". - - - This label turns red if any recipient receives an amount smaller than %1. - Oznaka postane rdeÄa, Äe je znesek manjÅ¡i od %1. - - - Can vary +/- %1 satoshi(s) per input. - Lahko variira +/- %1 satoshijev na vhod. - - - yes - da - - - no - ne - - - This means a fee of at least %1 per kB is required. - To pomeni, da je zahtevana provizija v viÅ¡ini vsaj %1 na KiB. - - - Can vary +/- 1 byte per input. - Lahko variira +/-1 bajt na vhod. - - - Transactions with higher priority are more likely to get included into a block. - Transakcije z viÅ¡jo prioriteto imajo boljÅ¡e možnosti za vkljuÄitev v blok. - - - (no label) - (brez oznake) - - - change from %1 (%2) - vraÄilo od %1 (%2) - - - (change) - (vraÄilo) - - - - EditAddressDialog - - Edit Address - Uredi naslov - - - &Label - &Oznaka - - - The label associated with this address list entry - Oznaka, pod katero je spodnji naslov naveden v vaÅ¡em imeniku naslovov. - - - The address associated with this address list entry. This can only be modified for sending addresses. - Naslov tega vnosa v imeniku. Spremeniti ga je mogoÄe le pri vnosih iz imenika naslovov za poÅ¡iljanje. - - - &Address - &Naslov - - - New receiving address - Nov naslov za prilive - - - New sending address - Nov naslov za odlive - - - Edit receiving address - Uredi naslov za prilive - - - Edit sending address - Uredi naslov za odlive - - - The entered address "%1" is already in the address book. - VneÅ¡eni naslov %1 je že v imeniku. - - - The entered address "%1" is not a valid Bitcoin address. - VneÅ¡eni naslov %1 ni veljaven naslov Bitcoin. - - - Could not unlock wallet. - Denarnice ni bilo mogoÄe odkleniti. - - - New key generation failed. - Novega kljuÄa ni bilo mogoÄe ustvariti. - - - - FreespaceChecker - - A new data directory will be created. - Ustvarjena bo nova podatkovna mapa. - - - name - ime - - - Directory already exists. Add %1 if you intend to create a new directory here. - Mapa že obstaja. Dodajte %1, Äe tu želite ustvariti novo mapo. - - - Path already exists, and is not a directory. - Pot že obstaja, vendar ni mapa. - - - Cannot create data directory here. - Na tem mestu ni mogoÄe ustvariti nove mape. - - - - HelpMessageDialog - - Bitcoin Core - Bitcoin Core - - - version - razliÄica - - - (%1-bit) - (%1-bit) - - - About Bitcoin Core - O programu Bitcoin Core - - - Command-line options - Možnosti ukazne vrstice - - - Usage: - Uporaba: - - - command-line options - možnosti ukazne vrstice - - - - Intro - - Welcome - DobrodoÅ¡li - - - Welcome to Bitcoin Core. - DobrodoÅ¡li v programu Bitcoin Core. - - - As this is the first time the program is launched, you can choose where Bitcoin Core will store its data. - To je prvi zagon programa, zato lahko izberete mapo, v katero bo program shranjeval podatke. - - - Bitcoin Core will download and store a copy of the Bitcoin block chain. At least %1GB of data will be stored in this directory, and it will grow over time. The wallet will also be stored in this directory. - Program bo prenesel in shranil kopijo verige blokov. V izbrani podatkovni mapi bo shranjenih vsaj %1 GiB podatkov, ta koliÄina pa bo sÄasoma Å¡e naraÅ¡Äala. V tej mapi bo shranjena tudi denarnica. - - - Use the default data directory - Uporabi privzeto podatkovno mapo - - - Use a custom data directory: - Uporabi to podatkovno mapo: - - - Bitcoin Core - Bitcoin Core - - - Error: Specified data directory "%1" cannot be created. - Napaka: Ni mogoÄe ustvariti mape "%1". - - - Error - Napaka - - - %n GB of free space available - %n GiB prostega prostora na voljo%n GiB prostega prostora na voljo%n GiB prostega prostora na voljo%n GiB prostega prostora na voljo - - - - OpenURIDialog - - Open URI - Odpri URl - - - Open payment request from URI or file - Vnesite zahtevek za plaÄilo iz URI ali pa ga naložite iz datoteke - - - URI: - URI: - - - Select payment request file - Izbiranje datoteke z zahtevkom za plaÄilo - - - Select payment request file to open - Izberite datoteko, ki vsebuje zahtevek za plaÄilo - - - - OptionsDialog - - Options - Možnosti - - - &Main - &Glavno - - - Size of &database cache - Velikost &predpomnilnika podatkovne baze - - - MB - MiB - - - Number of script &verification threads - Å tevilo programskih &niti za preverjanje - - - Accept connections from outside - Sprejemaj zunanje povezave - - - Allow incoming connections - Dovoli dohodne povezave - - - IP address of the proxy (e.g. IPv4: 127.0.0.1 / IPv6: ::1) - Naslov IP posredniÅ¡kega strežnika (npr. IPv4: 127.0.0.1 ali IPv6: ::1) - - - Minimize instead of exit the application when the window is closed. When this option is enabled, the application will be closed only after selecting Exit in the menu. - Ko zaprete glavno okno programa, bo program tekel Å¡e naprej, okno pa bo zgolj minimirano. Program v tem primeru ustavite tako, da v meniju izberete ukaz Izhod. - - - The user interface language can be set here. This setting will take effect after restarting Bitcoin Core. - Nastavitev jezika uporabniÅ¡kega vmesnika programa. Nova nastavitev jezika bo uporabljena Å¡ele, ko boste znova zagnali program. - - - 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 |. - Naslovi URL tretjih oseb (npr. raziskovalec blokov), ki bodo navedeni v kontekstnem meniju seznama transakcij. Niz %s iz naslova URL je nadomeÅ¡Äen s hash vrednostjo transakcije. VeÄ zaporednih naslovov URL je med seboj loÄenih z znakom |. - - - Third party transaction URLs - Zunanje povezave za transakcije - - - Active command-line options that override above options: - Aktivne opcije iz ukazne vrstice, ki preglasijo zgornje opcije: - - - Reset all client options to default. - Ponastavi vse nastavitve programa na privzete vrednosti. - - - &Reset Options - &Ponastavi nastavitve - - - &Network - &Omrežje - - - Automatically start Bitcoin Core after logging in to the system. - Ob uporabnikovi prijavi v sistem se bo program samodejno zagnal - - - &Start Bitcoin Core on system login - &Zaženi program ob prijavi v sistem - - - (0 = auto, <0 = leave that many cores free) - (0 = samodejno, <0 = toliko procesorskih jeder naj ostane prostih) - - - W&allet - &Denarnica - - - Expert - Napredne možnosti - - - Enable coin &control features - OmogoÄi upravljanje s kovanci - - - 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. - ÄŒe onemogoÄite troÅ¡enje drobiža iz Å¡e nepotrjenih transakcij, potem vrnjenega drobiža ne morete uporabiti, dokler plaÄilo ni vsaj enkrat potrjeno. Ta opcija vpliva tudi na izraÄun stanja sredstev. - - - &Spend unconfirmed change - OmogoÄi &troÅ¡enje drobiža iz Å¡e nepotrjenih plaÄil - - - Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled. - Program samodejno odpre ustrezna vrata na usmerjevalniku. To deluje samo, Äe vaÅ¡ usmerjevalnik podpira in ima omogoÄen UPnP. - - - Map port using &UPnP - Preslikaj vrata z uporabo &UPnP - - - Connect to the Bitcoin network through a SOCKS5 proxy. - Poveži se v omrežje Bitcoin preko posredniÅ¡kega strežnika SOCKS5. - - - &Connect through SOCKS5 proxy (default proxy): - &Poveži se preko posredniÅ¡kega strežnika SOCKS5 (privzeti strežnik): - - - Proxy &IP: - Naslov &IP posredniÅ¡kega strežnika: - - - &Port: - &Vrata: - - - Port of the proxy (e.g. 9050) - Vrata posredniÅ¡kega strežnika (npr. 9050) - - - &Window - O&kno - - - Show only a tray icon after minimizing the window. - Po minimiranju okna samo prikaži ikono programa v pladnju. - - - &Minimize to the tray instead of the taskbar - &Minimiraj na pladenj namesto na opravilno vrstico - - - M&inimize on close - Ob zapiranju okno zgolj m&inimiraj - - - &Display - &Prikaz - - - User Interface &language: - &Jezik uporabniÅ¡kega vmesnika: - - - &Unit to show amounts in: - &Enota za prikaz zneskov: - - - Choose the default subdivision unit to show in the interface and when sending coins. - Izberite privzeto mersko enoto za prikaz v uporabniÅ¡kem vmesniku in pri poÅ¡iljanju kovancev. - - - Whether to show coin control features or not. - OmogoÄi dodatno možnost podrobnega nadzora nad posameznimi kovanci v transakcijah. - - - &OK - &Potrdi - - - &Cancel - &PrekliÄi - - - default - privzeto - - - none - niÄ - - - Confirm options reset - Potrditev ponastavitve - - - Client restart required to activate changes. - Za uveljavitev sprememb je potreben ponoven zagon programa. - - - Client will be shut down. Do you want to proceed? - Program bo zaustavljen. Želite nadaljevati z izhodom? - - - This change would require a client restart. - Ta sprememba zahteva ponoven zagon programa. - - - The supplied proxy address is invalid. - VneÅ¡eni naslov posredniÅ¡kega strežnika ni veljaven. - - - - OverviewPage - - Form - Oblika - - - The displayed information may be out of date. Your wallet automatically synchronizes with the Bitcoin network after a connection is established, but this process has not completed yet. - Prikazani podatki so morda zastareli. Program ob vzpostavitvi povezave samodejno sinhronizira denarnico z omrežjem Bitcoin, a trenutno ta proces Å¡e ni zakljuÄen. - - - Watch-only: - Opazovano: - - - Available: - Na voljo: - - - Your current spendable balance - Skupni znesek vaÅ¡ih sredstev, s katerimi lahko prosto razpolagate - - - Pending: - Nepotrjeno: - - - Total of transactions that have yet to be confirmed, and do not yet count toward the spendable balance - Skupni znesek sredstev s katerimi Å¡e ne razpolagate prosto, ker so del Å¡e nepotrjenih transakcij. - - - Immature: - Nedozorelo: - - - Mined balance that has not yet matured - Nedozorel narudarjeni znesek - - - Balances - Stanje sredstev - - - Total: - Skupaj: - - - Your current total balance - Trenutna vsota vseh vaÅ¡ih sredstev - - - Your current balance in watch-only addresses - Trenutno stanje vaÅ¡ih sredstev na opazovanih naslovih - - - Spendable: - Na voljo: - - - Recent transactions - Nedavne transakcije - - - Unconfirmed transactions to watch-only addresses - Nepotrjene transakcije na opazovanih naslovih - - - Mined balance in watch-only addresses that has not yet matured - Nedozoreli narudarjeni znesek na opazovanih naslovih - - - Current total balance in watch-only addresses - Trenutno skupno stanje sredstev na opazovanih naslovih - - - - PaymentServer - - URI handling - Rokovanje z URI - - - Invalid payment address %1 - Neveljaven naslov plaÄila %1 - - - Payment request rejected - Zahtevek za plaÄilo je bil zavrnjen. - - - Payment request network doesn't match client network. - Zahtevek za plaÄilo in vaÅ¡ odjemalec se nahajata na dveh razliÄnih omrežjih. - - - Payment request is not initialized. - Zahtevek za plaÄilo ni inicializiran. - - - Requested payment amount of %1 is too small (considered dust). - Znesek %1 v zahtevku za plaÄilo je prenizek (smatran za prah.) - - - Payment request error - Napaka pri zahtevku za plaÄilo - - - Cannot start bitcoin: click-to-pay handler - Ni mogoÄe zagnati rokovalca plaÄilnih povezav tipa bitcoin:. - - - Payment request fetch URL is invalid: %1 - Naslov URL za pridobitev zahtevka za plaÄilo ni veljaven: %1 - - - URI cannot be parsed! This can be caused by an invalid Bitcoin address or malformed URI parameters. - URI je neprepoznaven! Možno je, da je naslov Bitcoin neveljaven, ali da so parametri v URI napaÄno oblikovani. - - - Payment request file handling - Rokovanje z datoteko z zahtevkom za plaÄilo - - - Payment request file cannot be read! This can be caused by an invalid payment request file. - Datoteke z zahtevkom za plaÄilo ni mogoÄe prebrati! Možno je, da datoteka ni veljavna. - - - Payment request expired. - Zahtevek za plaÄilo je potekel. - - - Unverified payment requests to custom payment scripts are unsupported. - Nepreverjeni zahtevki za plaÄilo, namenjeni plaÄilni skripti po meri, niso podprti. - - - Invalid payment request. - Neveljaven zahtevek za plaÄilo. - - - Refund from %1 - PovraÄilo od %1 - - - Payment request %1 is too large (%2 bytes, allowed %3 bytes). - Zahtevek za plaÄilo %1 je prevelik (%2 bajtov, dovoljenih je %3 bajtov.) - - - Payment request DoS protection - ZaÅ¡Äita pred napadom denial-of-service zahtevka za plaÄilo - - - Error communicating with %1: %2 - Napaka pri povezavi z %1: %2 - - - Payment request cannot be parsed! - Zahtevek za plaÄilo je neprepoznaven! - - - Bad response from server %1 - NapaÄen odziv strežnika %1 - - - Payment acknowledged - PlaÄilo priznano - - - Network request error - Napaka omrežne zahteve - - - - PeerTableModel - - User Agent - Ime agenta - - - Node/Service - VozliÅ¡Äe/Storitev - - - Ping Time - Odzivni Äas - - - - QObject - - Amount - Znesek - - - Enter a Bitcoin address (e.g. %1) - Vnesite naslov Bitcoin (npr. %1): - - - %1 d - %1 d - - - %1 h - %1 h - - - %1 m - %1 m - - - %1 s - %1 s - - - None - NiÄ - - - N/A - Neznano - - - %1 ms - %1 ms - - - - QRImageWidget - - &Save Image... - &Shrani sliko ... - - - &Copy Image - &Kopiraj sliko - - - Save QR Code - Shrani kodo QR - - - PNG Image (*.png) - PNG slika (*.png) - - - - RPCConsole - - Client name - Ime odjemalca - - - N/A - Neznano - - - Client version - RazliÄica odjemalca - - - &Information - &Informacije - - - Debug window - RazhroÅ¡Äevalno okno - - - General - SploÅ¡no - - - Using OpenSSL version - OpenSSL razliÄica v rabi - - - Using BerkeleyDB version - BerkeleyDB razliÄica v rabi - - - Startup time - ÄŒas zagona - - - Network - Omrežje - - - Name - Ime - - - Number of connections - Å tevilo povezav - - - Block chain - Veriga blokov - - - Current number of blocks - Trenutno Å¡tevilo blokov - - - Open the Bitcoin Core debug log file from the current data directory. This can take a few seconds for large log files. - Odpre razhroÅ¡Äevalni dnevnik debug.log, ki se nahaja v trenutni podatkovni mapi. ÄŒe je datoteka velika, lahko postopek traja nekaj sekund. - - - Received - Prejeto - - - Sent - Oddano - - - &Peers - &Soležniki - - - Select a peer to view detailed information. - Izberite soležnika, o katerem si želite ogledati podrobnejÅ¡e informacije. - - - Direction - Smer povezave - - - Version - RazliÄica - - - User Agent - Ime agenta - - - Services - Storitve - - - Starting Height - ZaÄetna viÅ¡ina - - - Sync Height - Trenutna viÅ¡ina - - - Ban Score - Kazenske toÄke - - - Connection Time - Trajanje povezave - - - Last Send - Nazadje oddano - - - Last Receive - Nazadnje prejeto - - - Bytes Sent - Oddanih bajtov - - - Bytes Received - Prejetih bajtov - - - Ping Time - Odzivni Äas - - - Time Offset - ÄŒasovni odklon - - - Last block time - ÄŒas zadnjega bloka - - - &Open - &Odpri - - - &Console - &Konzola - - - &Network Traffic - &Omrežni promet - - - &Clear - &PoÄisti - - - Totals - Promet - - - In: - Dohodnih: - - - Out: - Odhodnih: - - - Build date - Datum izgradnje - - - Debug log file - RazhroÅ¡Äevalni dnevnik - - - Clear console - PoÄisti konzolo - - - Welcome to the Bitcoin Core RPC console. - DobrodoÅ¡li v konzoli RPC programa Bitcoin Core. - - - Use up and down arrows to navigate history, and <b>Ctrl-L</b> to clear screen. - Uporabite tipki gor in dol za navigacijo po zgodovini ukazov. Uporabite <b>Ctrl-L</b> za izbris zaslona in zgodovine ukazov. - - - Type <b>help</b> for an overview of available commands. - Vtipkajte <b>help</b> za pregled razpoložljivih ukazov. - - - %1 B - %1 B - - - %1 KB - %1 KiB - - - %1 MB - %1 MiB - - - %1 GB - %1 GiB - - - via %1 - preko %1 - - - never - nikoli - - - Inbound - Dohodna - - - Outbound - Odhodna - - - Unknown - Neznano - - - Fetching... - Pridobivam ... - - - - ReceiveCoinsDialog - - &Amount: - &Znesek: - - - &Label: - &Oznaka: - - - &Message: - &SporoÄilo: - - - Reuse one of the previously used receiving addresses. Reusing addresses has security and privacy issues. Do not use this unless re-generating a payment request made before. - Ponovno uporabite enega od že uporabljenih naslovov za prejemanje. VeÄkratna uporaba istih naslovov za prejemanje negativno vpliva na varnost in zasebnost. To opcijo uporabite samo v primeru, da poustvarjate obstojeÄ zahtevek za plaÄilo. - - - R&euse an existing receiving address (not recommended) - P&onovno uporabite obstojeÄ naslov za prejemanje. (Ni priporoÄeno.) - - - An optional message to attach to the payment request, which will be displayed when the request is opened. Note: The message will not be sent with the payment over the Bitcoin network. - Neobvezno sporoÄilo kot priponka zahtevku za plaÄilo, ki bo prikazano, ko bo zahtevek odprt. Opomba: Opravljeno plaÄilo.prek omrežja Bitcoin tega sporoÄila ne bo vsebovalo. - - - An optional label to associate with the new receiving address. - Oznaka novega sprejemnega naslova. - - - Use this form to request payments. All fields are <b>optional</b>. - S tem obrazcem ustvarite nov zahtevek za plaÄilo. Vsa polja so <b>neobvezna</b>. - - - An optional amount to request. Leave this empty or zero to not request a specific amount. - Zahtevani znesek. ÄŒe ne zahtevate doloÄenega zneska, pustite prazno ali nastavite vrednost na 0. - - - Clear all fields of the form. - PoÄisti vsa polja. - - - Clear - PoÄisti - - - Requested payments history - Zgodovina zahtevkov za plaÄilo - - - &Request payment - &Zahtevaj plaÄilo - - - Show the selected request (does the same as double clicking an entry) - Prikaz izbranega zahtevka. (Isto funkcijo opravi dvojni klik na zapis.) - - - Show - Pokaži - - - Remove the selected entries from the list - Odstrani oznaÄene vnose iz seznama - - - Remove - Odstrani - - - Copy label - Kopiraj oznako - - - Copy message - Kopiraj sporoÄilo - - - Copy amount - Kopiraj znesek - - - - ReceiveRequestDialog - - QR Code - QR Koda - - - Copy &URI - Kopiraj &URl - - - Copy &Address - Kopiraj &naslov - - - &Save Image... - &Shrani sliko ... - - - Request payment to %1 - Zahtevek za plaÄilo z oznako: %1 - - - Payment information - Informacije o plaÄilu - - - URI - URI - - - Address - Naslov - - - Amount - Znesek - - - Label - Oznaka - - - Message - SporoÄilo - - - Resulting URI too long, try to reduce the text for label / message. - Nastali URI je predolg. SkuÅ¡ajte skrajÅ¡ati besedilo v oznaki/sporoÄilu. - - - Error encoding URI into QR Code. - Napaka pri pretvorbi URI v kodo QR. - - - - RecentRequestsTableModel - - Date - Datum - - - Label - Oznaka - - - Message - SporoÄilo - - - Amount - Znesek - - - (no label) - (brez oznake) - - - (no message) - (brez sporoÄila) - - - (no amount) - (brez zneska) - - - - SendCoinsDialog - - Send Coins - PoÅ¡lji - - - Coin Control Features - Upravljanje s kovanci - - - Inputs... - Vhodi ... - - - automatically selected - samodejno izbrani - - - Insufficient funds! - Premalo sredstev! - - - Quantity: - Å t.vhodov: - - - Bytes: - Å t.bajtov: - - - Amount: - Znesek: - - - Priority: - Prioriteta: - - - Fee: - Provizija: - - - After Fee: - Po proviziji: - - - Change: - VraÄilo: - - - If this is activated, but the change address is empty or invalid, change will be sent to a newly generated address. - ÄŒe to vkljuÄite, nato pa vnesete neveljaven naslov, ali pa pustite polje prazno, bo vrnjen drobiž poslan na novo ustvarjen naslov. - - - Custom change address - Naslov za vraÄilo drobiža po meri - - - Transaction Fee: - Provizija: - - - Choose... - Izberi ... - - - collapse fee-settings - Skrije nastavitve provizije - - - per kilobyte - na KiB - - - 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. - ÄŒe je nastavitev zneska provizije po meri enaka 1000 satoshijev, transakcija pa je velika samo 250 bajtov, je obraÄunani znesek provizije pri nastavitvi "za KiB" samo 250 satoshijev, medtem ko je pri nastavitvi "skupno vsaj" ta znesek 1000 satoshijev. Za transakcije, veÄje od 1 KiB, se konÄni znesek pri obeh nastavitvah obraÄuna na KiB. - - - Hide - Skrij - - - total at least - skupno vsaj - - - 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. - Dokler bo v blokih Å¡e dovolj prostora za vse nastajajoÄe transakcije, zadostuje, Äe plaÄate samo minimalno provizijo. Ko pa se bo koliÄina vseh transakcij poveÄala do meja zmogljivosti omrežja, se lahko zgodi, da vaÅ¡a transakcija brez veÄje provizije nikoli ne bo potrjena. - - - (read the tooltip) - (oglejte si namig) - - - Recommended: - PriporoÄena: - - - Custom: - Po meri: - - - (Smart fee not initialized yet. This usually takes a few blocks...) - (Samodejni obraÄun provizije Å¡e ni pripravljen. Po navadi izraÄun traja nekaj blokov ...) - - - Confirmation time: - ÄŒas do potrditve: - - - normal - navadno - - - fast - hitro - - - Send as zero-fee transaction if possible - PoÅ¡lji brez provizije, Äe je mogoÄe - - - (confirmation may take longer) - (Äas do potrditve je lahko daljÅ¡i) - - - Send to multiple recipients at once - PoÅ¡lji veÄ prejemnikom hkrati - - - Add &Recipient - Dodaj &prejemnika - - - Clear all fields of the form. - PoÄisti vsa polja. - - - Dust: - Prah: - - - Clear &All - PoÄisti &vse - - - Balance: - Stanje: - - - Confirm the send action - Potrdi poÅ¡iljanje - - - S&end - &PoÅ¡lji - - - Confirm send coins - Potrdi poÅ¡iljanje - - - %1 to %2 - %1 na %2 - - - Copy quantity - Kopiraj Å¡tevilo vhodov - - - Copy amount - Kopiraj znesek - - - Copy fee - Kopiraj provizijo - - - Copy after fee - Kopiraj Po proviziji - - - Copy bytes - Kopiraj bajte - - - Copy priority - Kopiraj prioriteto - - - Copy change - Kopiraj vraÄilo - - - or - ali - - - The amount to pay must be larger than 0. - Znesek za plaÄilo mora biti veÄji od 0. - - - The amount exceeds your balance. - Znesek je veÄji od stanja sredstev, s katerimi razpolagate. - - - The total exceeds your balance when the %1 transaction fee is included. - Celotni znesek z vkljuÄeno provizijo %1 je veÄji od stanja sredstev, s katerimi razpolagate. - - - Transaction creation failed! - Transakcije ni bilo mogoÄe ustvariti! - - - 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. - Transakcija je bila zavrnjena! To se lahko zgodi, Äe so bili kateri od kovancev iz denarnice že porabljeni, kot v primeru, da ste kje uporabili kopijo datoteke wallet.dat in kovance tam že porabili, lokalno pa ti Å¡e niso bili oznaÄeni kot porabljeni. - - - A fee higher than %1 is considered an absurdly high fee. - Provizija, viÅ¡ja od %1, velja za nesmiselno visoko. - - - Payment request expired. - Zahtevek za plaÄilo je potekel. - - - Estimated to begin confirmation within %n block(s). - Predviden zaÄetek potrditev po %n najdenem bloku.Predviden zaÄetek potrditev po %n najdenih blokih.Predviden zaÄetek potrditev po %n najdenih blokih.Predviden zaÄetek potrditev po %n najdenih blokih. - - - Pay only the minimum fee of %1 - PlaÄilo samo minimalne provizije v znesku %1 - - - The recipient address is not valid. Please recheck. - Naslov prejemnika je neveljaven. Prosimo, preverite. - - - Duplicate address found: addresses should only be used once each. - Naslov je že bil uporabljen. Vsak naslov naj bi se uporabil samo enkrat. - - - Warning: Invalid Bitcoin address - Opozorilo: Neveljaven bitcoin naslov - - - (no label) - (brez oznake) - - - Warning: Unknown change address - Opozorilo: Neznan naslov za vraÄilo drobiža - - - Copy dust - Kopiraj prah - - - Are you sure you want to send? - Ali ste prepriÄani, da želite izvesti plaÄilo? - - - added as transaction fee - dodano kot provizija transakcije - - - - SendCoinsEntry - - A&mount: - &Znesek: - - - Pay &To: - Prejemnik &plaÄila: - - - Enter a label for this address to add it to your address book - Vnesite oznako, pod katero bo zgornji naslov shranjen v imenik - - - &Label: - &Oznaka: - - - Choose previously used address - Izberite enega od že uporabljenih naslovov - - - This is a normal payment. - PlaÄilo je navadne vrste. - - - The Bitcoin address to send the payment to - Naslov Bitcoin, na katerega bo plaÄilo poslano - - - Alt+A - Alt+A - - - Paste address from clipboard - Prilepite naslov iz odložiÅ¡Äa - - - Alt+P - Alt+P - - - Remove this entry - Izpraznite vsebino polja - - - The fee will be deducted from the amount being sent. The recipient will receive less bitcoins than you enter in the amount field. If multiple recipients are selected, the fee is split equally. - Znesek plaÄila bo zmanjÅ¡an za znesek provizije. Prejemnik bo prejel manjÅ¡e Å¡tevilo kovancev, kot je bil vneÅ¡eni znesek. ÄŒe je prejemnikov veÄ, bo provizija med njih enakomerno porazdeljena. - - - S&ubtract fee from amount - O&dÅ¡tej provizijo od zneska - - - Message: - SporoÄilo: - - - This is an unauthenticated payment request. - Zahtevek za plaÄilo je neoverjen. - - - This is an authenticated payment request. - Zahtevek za plaÄilo je overjen. - - - Enter a label for this address to add it to the list of used addresses - ÄŒe vnesete oznako za zgornji naslov, se bo skupaj z naslovom shranila v imenk že uporabljenih naslovov - - - A message that was attached to the bitcoin: URI which will be stored with the transaction for your reference. Note: This message will not be sent over the Bitcoin network. - SporoÄilo, ki ste ga pripeli na URI tipa bitcoin:. Shranjeno bo skupaj s podatki o transakciji. Opomba: SporoÄilo ne bo poslano preko omrežja Bitcoin. - - - Pay To: - Prejemnik: - - - Memo: - Opomba: - - - - ShutdownWindow - - Bitcoin Core is shutting down... - Program se ustavlja ... - - - Do not shut down the computer until this window disappears. - Dokler to okno ne izgine, ne zaustavljajte raÄunalnika. - - - - SignVerifyMessageDialog - - Signatures - Sign / Verify a Message - PodpiÅ¡i / preveri sporoÄilo - - - &Sign Message - &PodpiÅ¡i sporoÄilo - - - You can sign messages/agreements with your addresses to prove you can receive bitcoins sent to them. Be careful not to sign anything vague or random, as phishing attacks may try to trick you into signing your identity over to them. Only sign fully-detailed statements you agree to. - S svojimi naslovi lahko podpisujete sporoÄila ali pogodbe in s tem dokazujete, da na teh naslovih lahko prejemate kovance. Bodite previdni in ne podpisujte niÄesar nejasnega ali nakljuÄnega, ker vas zlikovci preko ribarjenja (phishing) lahko prelisiÄijo, da na njih prepiÅ¡ete svojo identiteto. Podpisujte samo podrobno opisane izjave, s katerimi se strinjate. - - - The Bitcoin address to sign the message with - Naslov Bitcoin, s katerim podpisujete sporoÄilo - - - Choose previously used address - Izberite enega od že uporabljenih naslovov - - - Alt+A - Alt+A - - - Paste address from clipboard - Prilepite naslov iz odložiÅ¡Äa - - - Alt+P - Alt+P - - - Enter the message you want to sign here - Vnesite sporoÄilo, ki ga želite podpisati - - - Signature - Podpis - - - Copy the current signature to the system clipboard - Kopiranje trenutnega podpisa na sistemsko odložiÅ¡Äe. - - - Sign the message to prove you own this Bitcoin address - PodpiÅ¡ite sporoÄilo, da dokažete lastniÅ¡tvo nad zgornjim naslovom. - - - Sign &Message - PodpiÅ¡i &sporoÄilo - - - Reset all sign message fields - PoÄisti vsa polja za vnos v oknu za podpisovanje - - - Clear &All - PoÄisti &vse - - - &Verify Message - &Preveri sporoÄilo - - - Enter the receiver's address, message (ensure you copy line breaks, spaces, tabs, etc. exactly) and signature below to verify the message. Be careful not to read more into the signature than what is in the signed message itself, to avoid being tricked by a man-in-the-middle attack. Note that this only proves the signing party receives with the address, it cannot prove sendership of any transaction! - Da preverite verodostojnost sporoÄila, spodaj vnesite: prejemnikov naslov, prejeto sporoÄilo (pazljivo skopirajte vse prelome vrstic, presledke, tabulatorje ipd.,) in prejeti podpis. Da se izognete napadom tipa man-in-the-middle, vedite, da iz veljavnega podpisa ne sledi niÄ drugega, kot tisto, kar je navedeno v sporoÄilu. Podpis samo potrjuje dejstvo, da ima podpisnik v lasti prejemni naslov, ne more pa dokazati vira nobene transakcije! - - - The Bitcoin address the message was signed with - Naslov Bitcoin, s katerim je bilo sporoÄilo podpisano - - - Verify the message to ensure it was signed with the specified Bitcoin address - Preverite, ali je bilo sporoÄilo v resnici podpisano z navedenim naslovom Bitcoin. - - - Verify &Message - Preveri &sporoÄilo - - - Reset all verify message fields - PoÄisti vsa polja za vnos v oknu za preverjanje - - - Click "Sign Message" to generate signature - Kliknite "PodpiÅ¡i sporoÄilo" da ustvarite podpis - - - The entered address is invalid. - VneÅ¡eni naslov ni veljaven. - - - Please check the address and try again. - Prosimo preverite naslov in poskusite znova. - - - The entered address does not refer to a key. - VneÅ¡eni naslov se ne nanaÅ¡a na noben kljuÄ. - - - Wallet unlock was cancelled. - Odklepanje denarnice je bilo preklicano. - - - Private key for the entered address is not available. - Zasebni kljuÄ vneÅ¡enega naslova ni na voljo. - - - Message signing failed. - Podpisa ni bilo mogoÄe ustvariti. - - - Message signed. - Podpis je bil ustvarjen. - - - The signature could not be decoded. - Podpisa ni bilo mogoÄe razbrati. - - - Please check the signature and try again. - Prosimo preverite podpis in poskusite znova. - - - The signature did not match the message digest. - Podpis se ne ujema z rezultatom funkcije preverjanja. - - - Message verification failed. - Podpis ni veljaven za to sporoÄilo. - - - Message verified. - Podpis sporoÄila je veljaven. - - - - SplashScreen - - Bitcoin Core - Bitcoin Core - - - The Bitcoin Core developers - Bitcoin Core razvijalci - - - [testnet] - [testnet] - - - - TrafficGraphWidget - - KB/s - KiB/s - - - - TransactionDesc - - Open until %1 - Odprto do %1 - - - conflicted - v konfliktu - - - %1/offline - %1/brez povezave - - - %1/unconfirmed - %1/nepotrjeno - - - %1 confirmations - %1 potrdil - - - Status - Status - - - , broadcast through %n node(s) - , posredovano %n vozliÅ¡Äu, posredovano %n vozliÅ¡Äema, posredovano %n vozliÅ¡Äem, posredovano %n vozliÅ¡Äem - - - Date - Datum - - - Source - Izvor - - - Generated - Generirano - - - From - PoÅ¡iljatelj - - - To - Prejemnik - - - own address - lasten naslov - - - watch-only - opazovano - - - label - oznaka - - - Credit - V dobro - - - matures in %n more block(s) - dozori po %n najdenem blokudozori po %n najdenih blokihdozori po %n najdenih blokihdozori po %n najdenih blokih - - - not accepted - ni bilo sprejeto - - - Debit - Debit - - - Total debit - Skupaj v breme - - - Total credit - Skupaj v dobro - - - Transaction fee - Provizija transakcije - - - Net amount - Neto znesek - - - Message - SporoÄilo - - - Comment - Opomba - - - Transaction ID - ID transakcije - - - Merchant - Trgovec - - - Generated coins must mature %1 blocks before they can be spent. When you generated this block, it was broadcast to the network to be added to the block chain. If it fails to get into the chain, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - Ustvarjeni kovanci morajo zoreti %1 blokov, preden jih lahko porabite. Ko ste ta blok zgenerirali, je bil posredovan v omrežje, da bo dodan v verigo. ÄŒe se bloku ni uspelo uvrstiti v verigo, se bo njegovo stanje spremenilo v "ni bilo sprejeto" in kovancev ne bo mogoÄe porabiti. To se vÄasih zgodi, Äe kak drug rudar v roku nekaj sekund hkrati z vami odkrije drug blok. - - - Debug information - RazhroÅ¡Äevalne informacije - - - Transaction - Transakcija - - - Inputs - Vhodi - - - Amount - Znesek - - - true - pravilno - - - false - nepravilno - - - , has not been successfully broadcast yet - , Å¡e ni bila uspeÅ¡no razneÅ¡ena - - - Open for %n more block(s) - Odprto Å¡e %n blokOdprto Å¡e %n blokaOdprto Å¡e %n blokeOdprto Å¡e %n blokov - - - unknown - neznano - - - - TransactionDescDialog - - Transaction details - Podrobnosti transakcije - - - This pane shows a detailed description of the transaction - V tem podoknu so prikazane podrobnosti o transakciji - - - - TransactionTableModel - - Date - Datum - - - Type - Vrsta - - - Immature (%1 confirmations, will be available after %2) - Nedozorelo (Å¡t. potrditev: %1, na voljo Å¡ele po: %2) - - - Open for %n more block(s) - Odprto Å¡e %n blokOdprto Å¡e %n blokaOdprto Å¡e %n blokeOdprto Å¡e %n blokov - - - Open until %1 - Odprto do %1 - - - Confirmed (%1 confirmations) - Potrjeno (%1 potrdil) - - - This block was not received by any other nodes and will probably not be accepted! - Ta blok ni prejelo Å¡e nobeno vozliÅ¡Äe. Najverjetneje ne bo sprejet! - - - Generated but not accepted - Generirano, toda ne sprejeto - - - Offline - Brez povezave - - - Label - Oznaka - - - Unconfirmed - Nepotrjeno - - - Confirming (%1 of %2 recommended confirmations) - V potrjevanju (Å¡t. potrditev: %1 od priporoÄenih %2) - - - Conflicted - V konfliktu - - - Received with - Prejemek - - - Received from - Prejemek - - - Sent to - Izdatek - - - Payment to yourself - Nakazilo sebi - - - Mined - Narudarjeno - - - watch-only - opazovano - - - (n/a) - (ni na voljo) - - - Transaction status. Hover over this field to show number of confirmations. - Stanje transakcije. Zapeljite z miÅ¡ko Äez to polje za prikaz Å¡tevila potrdil. - - - Date and time that the transaction was received. - Datum in Äas, ko je transakcija bila prejeta. - - - Type of transaction. - Vrsta transakcije. - - - Whether or not a watch-only address is involved in this transaction. - Ali je v transakciji udeležen kateri od opazovanih naslovov. - - - User-defined intent/purpose of the transaction. - UporabniÅ¡ko doloÄen namen transakcije. - - - Amount removed from or added to balance. - Znesek spremembe stanja sredstev. - - - - TransactionView - - All - Vse - - - Today - Danes - - - This week - Ta teden - - - This month - Ta mesec - - - Last month - PrejÅ¡nji mesec - - - This year - To leto - - - Range... - ObmoÄje ... - - - Received with - Prejemek - - - Sent to - Izdatek - - - To yourself - Nakazilo sebi - - - Mined - Narudarjeno - - - Other - Drugo - - - Enter address or label to search - IÅ¡Äite po naslovu ali oznaki - - - Min amount - Minimalni znesek - - - Copy address - Kopiraj naslov - - - Copy label - Kopiraj oznako - - - Copy amount - Kopiraj znesek - - - Copy transaction ID - Kopiraj ID transakcije - - - Edit label - Uredi oznako - - - Show transaction details - Prikaži podrobnosti transakcije - - - Export Transaction History - Izvoz zgodovine transakcij - - - Watch-only - Opazovano - - - Exporting Failed - Seznama transakcij ni bilo mogoÄe izvoziti. - - - There was an error trying to save the transaction history to %1. - PriÅ¡lo je do napake med shranjevanjem zgodovine transakcij v datoteko %1. - - - Exporting Successful - UspeÅ¡en izvoz - - - The transaction history was successfully saved to %1. - Zgodovina poteklih transakcij je bila uspeÅ¡no shranjena v datoteko %1. - - - Comma separated file (*.csv) - Datoteka s podatki, loÄenimi z vejico (*.csv) - - - Confirmed - Potrjeno - - - Date - Datum - - - Type - Vrsta - - - Label - Oznaka - - - Address - Naslov - - - ID - ID - - - Range: - ObmoÄje: - - - to - za - - - - UnitDisplayStatusBarControl - - Unit to show amounts in. Click to select another unit. - Merska enota za prikaz zneskov. Kliknite za izbiro druge enote. - - - - WalletFrame - - No wallet has been loaded. - Denarnica ni bila naložena. - - - - WalletModel - - Send Coins - PoÅ¡lji - - - - WalletView - - &Export - &Izvozi - - - Export the data in the current tab to a file - Izvozi podatke iz trenutnega zavihka v datoteko - - - Backup Wallet - Izdelava varnostne kopije denarnice - - - Wallet Data (*.dat) - Podatki denarnice (*.dat) - - - Backup Failed - Varnostne kopije ni bilo mogoÄe izdelati. - - - There was an error trying to save the wallet data to %1. - PriÅ¡lo je do napake pri shranjevanju podatkov denarnice v datoteko %1. - - - The wallet data was successfully saved to %1. - Podatki iz denarnice so bili uspeÅ¡no shranjeni v datoteko %1. - - - Backup Successful - Varnostna kopija je bila uspeÅ¡no izdelana - - - - bitcoin-core - - Options: - Možnosti: - - - Specify data directory - Izberite podatkovno mapo - - - Connect to a node to retrieve peer addresses, and disconnect - Povežite se z vozliÅ¡Äem za pridobitev naslovov soležnikov in nato prekinite povezavo. - - - Specify your own public address - DoloÄite vaÅ¡ lasten javni naslov - - - Accept command line and JSON-RPC commands - Sprejemaj ukaze iz ukazne vrstice in preko JSON-RPC - - - Run in the background as a daemon and accept commands - Teci v ozadju in sprejemaj ukaze - - - Use the test network - Uporabi testno omrežje - - - Accept connections from outside (default: 1 if no -proxy or -connect) - Sprejemaj zunanje povezave (privzeto: 1, razen Äe ste vklopili opciji -proxy ali -connect) - - - Bind to given address and always listen on it. Use [host]:port notation for IPv6 - Veži dani naslov in tam vedno posluÅ¡aj. Za naslove protokola IPv6 uporabite zapis [gostitelj]:vrata. - - - Distributed under the MIT software license, see the accompanying file COPYING or <http://www.opensource.org/licenses/mit-license.php>. - Distribuirano v okviru programske licence MIT. Podrobnosti so navedene v priloženi datoteki COPYING ali na naslovu <http://www.opensource.org/licenses/mit-license.php>. - - - Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) - Izvedi ukaz, ko bo transakcija denarnice se spremenila (V cmd je bil TxID zamenjan za %s) - - - Maximum total fees to use in a single wallet transaction; setting this too low may abort large transactions (default: %s) - NajveÄji Å¡e veljavni skupni znesek provizij pri transakcijah z uporabo ene denarnice. Prenizka nastavitev lahko povzroÄi izloÄitev veÄjih transakcij (privzeto %s) - - - Reduce storage requirements by pruning (deleting) old blocks. This mode disables wallet support and is incompatible with -txindex. Warning: Reverting this setting requires re-downloading the entire blockchain. (default: 0 = disable pruning blocks, >%u = target size in MiB to use for block files) - OmogoÄi obrezovanje (brisanje) starejÅ¡ih blokov in s tem prihrani pri prostoru za shranjevanje. Ta naÄin delovanja onemogoÄi uporabo denarnice in ni združljivo z opcijo -txindex. Opozorilo: ÄŒe kasneje to opcijo povrnete na privzeto vrednost, boste morali ponovno prenesti celotno verigo. (privzeto: 0 = onemogoÄi obrezovanje, >%u = ciljna velikost datotek blokov v MiB) - - - Set the number of script verification threads (%u to %d, 0 = auto, <0 = leave that many cores free, default: %d) - Nastavi Å¡tevilo niti za preverjanje skript (%u do %d, 0 = samodejno, <0 toliko procesorskih jeder naj ostane prostih, privzeto: %d) - - - This is a pre-release test build - use at your own risk - do not use for mining or merchant applications - To je preizkusna razliÄica Å¡e neizdanega programa. Uporabljate jo na lastno odgovornost. Programa ne uporabljajte je za rudarjenje ali trgovske aplikacije. - - - Unable to bind to %s on this computer. Bitcoin Core is probably already running. - Na tem raÄunalniku ni bilo mogoÄe vezati naslova %s. Odjemalec Bitcoin Core je verjetno že zagnan. - - - WARNING: abnormally high number of blocks generated, %d blocks received in the last %d hours (%d expected) - OPOZORILO: Generirano je bilo nenavadno veliko Å¡tevilo blokov. Å t. prejetih blokov: %d v Å¡t. ur: %d (priÄakovanih je %d blokov) - - - WARNING: check your network connection, %d blocks received in the last %d hours (%d expected) - OPOZORILO: Preverite vaÅ¡o omrežno povezavo. Å t. prejetih blokov: %d v Å¡t. ur: %d (priÄakovanih je %d blokov) - - - Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. - Opozorilo: Vrednost opcije -paytxfee je zelo visoka. To je provizija, ki jo boste plaÄali, Äe izvedete plaÄilo. - - - Warning: The network does not appear to fully agree! Some miners appear to be experiencing issues. - Opozorilo: Trenutno na omrežju ni videti konsenza! Videti je, kot da bi imeli nekateri rudarji težave. - - - Warning: We do not appear to fully agree with our peers! You may need to upgrade, or other nodes may need to upgrade. - Opozorilo: Trenutno se s soležniki ne strinjam v popolnosti! MogoÄe bi morali vi ali drugi udeleženci posodobiti odjemalce. - - - Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. - Opozorilo: napaka pri branju datoteke wallet.dat! Vsi kljuÄi so bili pravilno prebrani, podatki o transakciji ali imenik vneÅ¡enih naslovov so morda izgubljeni ali nepravilni. - - - 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. - Opozorilo: Datoteka wallet.dat je bila okvarjena, podatki pa so bili kljub temu reÅ¡eni! Originalna datoteka je bila shranjena kot wallet.{Äas.oznaka}.bak v mapo %s. ÄŒe sta skupno stanje ali seznam transakcij napaÄna, morate datoteko restavrirati iz varnostne kopije. - - - Whitelist peers connecting from the given netmask or IP address. Can be specified multiple times. - Sprejemaj povezave samo od soležnikov, ki so na naslovih, ki ustrezajo navedeni omrežni maski ali naslovu. Opcijo lahko navedete veÄkrat. - - - (default: 1) - (privzeto: 1) - - - <category> can be: - <category> je lahko: - - - Attempt to recover private keys from a corrupt wallet.dat - SkuÅ¡aj obnoviti zasebne kljuÄe iz okvarjene datoteke wallet.dat - - - Block creation options: - Možnosti ustvarjanja blokov: - - - Connect only to the specified node(s) - Poveži se samo z (enim ali veÄ) navedenimi vozliÅ¡Äi - - - Connection options: - Izbire povezave: - - - Corrupted block database detected - Podatkovna baza blokov je okvarjena - - - Debugging/Testing options: - Možnosti razhroÅ¡Äevanja in testiranja: - - - Do not load the wallet and disable wallet RPC calls - Ne naloži denarnice in onemogoÄi s tem povezane klice RPC - - - Do you want to rebuild the block database now? - Želite zdaj obnoviti podatkovno bazo blokov? - - - Error initializing block database - Napaka pri inicializaciji podatkovne baze blokov - - - Error initializing wallet database environment %s! - Napaka pri inicializaciji okolja podatkovne baze denarnice %s! - - - Error loading block database - Napaka pri nalaganju podatkovne baze blokov - - - Error opening block database - Napaka pri odpiranju podatkovne baze blokov - - - Error: Disk space is low! - Opozorilo: Premalo prostora na disku! - - - Failed to listen on any port. Use -listen=0 if you want this. - Ni mogoÄe posluÅ¡ati na nobenih vratih. ÄŒe to zares želite, uporabite opcijo -listen=0. - - - If <category> is not supplied, output all debugging information. - ÄŒe element <category> ni naveden, izpisuje vse informacije za razhroÅ¡Äevanje. - - - Importing... - Uvažam ... - - - Incorrect or no genesis block found. Wrong datadir for network? - Izvornega bloka ni mogoÄe najti ali pa je neveljaven. Preverite, Äe ste izbrali pravo podatkovno mapo za izbrano omrežje. - - - Invalid -onion address: '%s' - Neveljaven naslov tipa -onion: '%s' - - - Not enough file descriptors available. - Na voljo ni dovolj deskriptorjev datotek. - - - Only connect to nodes in network <net> (ipv4, ipv6 or onion) - Povezuj se samo z vozliÅ¡Äi na omrežju tipa <net> (IPv4, IPv6 ali onion) - - - Prune cannot be configured with a negative value. - Negativne vrednosti parametra funkcije obrezovanja niso sprejemljive. - - - Prune mode is incompatible with -txindex. - Funkcija obrezovanja ni združljiva z opcijo -txindex. - - - Set database cache size in megabytes (%d to %d, default: %d) - Nastavitev velikosti predpomnilnik podatkovne baze v MiB (%d do %d, privzeto: %d) - - - Set maximum block size in bytes (default: %d) - Nastavitev maksimalne velikosti bloka v bajtih (privzeto: %d) - - - Specify wallet file (within data directory) - Ime datoteke z denarnico (znotraj podatkovne mape) - - - Use UPnP to map the listening port (default: %u) - Uporabi protokol UPnP za preslikavo vrat za posluÅ¡anje (privzeto: %u) - - - Verifying blocks... - Preverjam celovitost blokov ... - - - Verifying wallet... - Preverjam celovitost denarnice ... - - - Wallet %s resides outside data directory %s - Datoteka %s z denarnico se nahaja izven podatkovne mape %s - - - Wallet options: - Izbire denarnice: - - - Warning: This version is obsolete; upgrade required! - Opozorilo: RazliÄica vaÅ¡ega odjemalca je zastarela. Potrebna je nadgradnja! - - - You need to rebuild the database using -reindex to change -txindex - Ob spremembi vrednosti opcije -txindex boste morali obnoviti bazo podatkov z uporabo opcije -reindex - - - Imports blocks from external blk000??.dat file - Uvozi bloke iz zunanje datoteke blk000??.dat - - - 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 - Iz navedenega vira dovoli povezave na JSON-RPC. Veljavne oblike vrednosti parametra <ip> so: edinstven naslov IP (npr.: 1.2.3.4), kombinacija omrežje/netmask (npr.: 1.2.3.4/255.255.255.0), ali pa kombinacija omrežje/CIDR (1.2.3.4/24). To opcijo lahko navedete veÄkrat. - - - An error occurred while setting up the RPC address %s port %u for listening: %s - PriÅ¡lo je do napake med zagonom posluÅ¡alca RPC na naslovu %s in vratih %u: %s - - - Bind to given address and whitelist peers connecting to it. Use [host]:port notation for IPv6 - Veži dani naslov in sprejemaj povezave samo od navedenih soležnikov. Za naslove protokola IPv6 uporabite zapis [gostitelj]:vrata. - - - Bind to given address to listen for JSON-RPC connections. Use [host]:port notation for IPv6. This option can be specified multiple times (default: bind to all interfaces) - Veži dani naslov in sprejemaj povezave na JSON-RPC. Za naslove protokola IPv6 uporabite zapis [gostitelj]:vrata. To opcijo lahko navedete veÄkrat. (privzeto: veži vse omrežne vmesnike) - - - Cannot obtain a lock on data directory %s. Bitcoin Core is probably already running. - Ne morem zakleniti podatkovne mape %s. Bitcoin Core je verjetno že zagnan. - - - Create new files with system default permissions, instead of umask 077 (only effective with disabled wallet functionality) - Ustvarjaj nove datoteke s privzetimi sistemskimi dovoljenji, namesto z umask 077. (To pride v poÅ¡tev samo, kadar imate izklopljeno funkcijo denarnice.) - - - Discover own IP addresses (default: 1 when listening and no -externalip or -proxy) - Odkrij svoj naslov IP (privzeto: 1, Äe posluÅ¡ate in sta opciji -externalip in -proxy neaktivni) - - - Error: Listening for incoming connections failed (listen returned error %s) - Napaka: Ni mogoÄe sprejemati dohodnih povezav (vrnjena napaka: %s) - - - Error: Unsupported argument -socks found. Setting SOCKS version isn't possible anymore, only SOCKS5 proxies are supported. - Napaka: Navedli ste nepodprto vrednost opcije -socks. RazliÄice protokola SOCKS ni veÄ mogoÄe navesti, podprti so samo posredniÅ¡ki strežniki tipa SOCKS5. - - - Execute command when a relevant alert is received or we see a really long fork (%s in cmd is replaced by message) - Ko bo prejeto ustrezno opozorilo, ali ko bo opažena zelo dolga razvejitev, izvedi navedeni ukazni niz. (Niz %s bo nadomeÅ¡Äen z vsebino sporoÄila.) - - - Fees (in BTC/Kb) smaller than this are considered zero fee for relaying (default: %s) - Provizije (v BTC/KiB), ki so manjÅ¡e od te vrednosti, se pri posredovanju smatrajo za niÄne (privzeto: %s) - - - If paytxfee is not set, include enough fee so transactions begin confirmation on average within n blocks (default: %u) - ÄŒe opcija -paytxfee ni nastavljena, nastavi znesek provizije tako visoko, da bodo transakcije potrjene v povpreÄno n blokih. (privzeto: %u) - - - Randomize credentials for every proxy connection. This enables Tor stream isolation (default: %u) - Na vsak posredniÅ¡ki strežnik se prijavi z drugimi nakljuÄnimi podatki. Tako je omogoÄena osamitev tokov v omrežju Tor (privzeto: %u) - - - Warning: Please check that your computer's date and time are correct! If your clock is wrong Bitcoin Core will not work properly. - Opozorilo: Preverite, Äe sta datum in ura na vaÅ¡em raÄunalniku toÄna! Bitcoin Core ne bo dobro deloval, Äe je nastavljeni Äas nepravilen. - - - (default: %u) - (privzeto: %u) - - - Activating best chain... - Preklapljam na najboljÅ¡o verigo ... - - - Can't run with a wallet in prune mode. - ÄŒe je omogoÄena funkcija obrezovanja, ni mogoÄe uporabljati denarnice. - - - Cannot resolve -whitebind address: '%s' - Naslova %s, podanega pri opciji -whitebind ni mogoÄe razreÅ¡iti. - - - Choose data directory on startup (default: 0) - Ob zagonu pozovi uporabnika, naj izbere podatkovno mapo (privzeto: 0) - - - Connect through SOCKS5 proxy - Poveži se preko posredniÅ¡kega strežnika SOCKS5 - - - Copyright (C) 2009-%i The Bitcoin Core Developers - Copyright (C) 2009-%i The Bitcoin Core Developers - - - Could not parse -rpcbind value %s as network address - Vrednost %s opcije -rpcbind ni prepoznaven omrežni naslov - - - Information - Informacije - - - Need to specify a port with -whitebind: '%s' - Pri opciji -whitebind morate navesti vrata: %s - - - Send trace/debug info to console instead of debug.log file - PoÅ¡ilja sledilne/razhroÅ¡Äevalne informacije na konzolo namesto v datoteko debug.log - - - Set SSL root certificates for payment request (default: -system-) - Nastavi korenske certifikate SSL za preverjanje zahtevkov za plaÄilo (privzeto: -system-) - - - Set language, for example "de_DE" (default: system locale) - Nastavi jezik, npr. "sl_SI" (privzeto: jezik sistema) - - - Show splash screen on startup (default: 1) - Ob zagonu prikaži uvodni zaslon (privzeto: 1) - - - Shrink debug.log file on client startup (default: 1 when no -debug) - Ob zagonu skrajÅ¡aj datoteko debug.log (privzeto: 1, Äe ni vklopljena opcija -debug) - - - Signing transaction failed - Transakcije ni bilo mogoÄe podpisati. - - - Start minimized - Zaženi v minimiranem oknu - - - This is experimental software. - Program je eksperimentalne narave. - - - Transaction amount too small - Znesek je pramajhen - - - Transaction amounts must be positive - Znesek mora biti pozitiven - - - Transaction too large - Transkacija je prevelika - - - UI Options: - Možnosti uporabniÅ¡kega vmesnika: - - - Unable to bind to %s on this computer (bind returned error %s) - Na tem raÄunalniku ni bilo mogoÄe vezati naslova %s (vrnjena napaka: %s) - - - Username for JSON-RPC connections - UporabniÅ¡ko ime za povezave na JSON-RPC - - - Warning - Opozorilo - - - Zapping all transactions from wallet... - BriÅ¡em vse transakcije iz denarnice ... - - - on startup - ob zagonu - - - wallet.dat corrupt, salvage failed - Datoteka wallet.dat je poÅ¡kodovana in je ni bilo mogoÄe obnoviti. - - - Password for JSON-RPC connections - Geslo za povezave na JSON-RPC - - - Execute command when the best block changes (%s in cmd is replaced by block hash) - Izvedi ukaz, ko je najden najboljÅ¡i blok (niz %s v ukazu bo zamenjan s hash vrednostjo bloka) - - - Upgrade wallet to latest format - Nadgradi denarnico na najnovejÅ¡o razliÄico - - - Rescan the block chain for missing wallet transactions - S ponovnim pregledom verige blokov poiÅ¡Äi manjkajoÄe transakcije iz denarnice - - - Use OpenSSL (https) for JSON-RPC connections - Uporabi OpenSSL (https) za povezave na JSON-RPC - - - This help message - To sporoÄilo pomoÄi - - - Allow DNS lookups for -addnode, -seednode and -connect - OmogoÄi poizvedbe DNS za opcije -addnode, -seednode in -connect. - - - Loading addresses... - Nalagam naslove ... - - - Error loading wallet.dat: Wallet corrupted - Napaka pri nalaganju wallet.dat: denarnica pokvarjena - - - Use separate SOCKS5 proxy to reach peers via Tor hidden services (default: %s) - Za dostop do soležnikov preko skritih storitev Tor uporabi drug posredniÅ¡ki strežnik SOCKS5 (privzeto: %s) - - - (default: %s) - (privzeto: %s) - - - Acceptable ciphers (default: %s) - Sprejemljivi tipi Å¡ifriranja (privzeto: %s) - - - Error loading wallet.dat - Napaka pri nalaganju wallet.dat - - - Invalid -proxy address: '%s' - Neveljaven naslov -proxy: '%s' - - - Relay non-P2SH multisig (default: %u) - Posreduj transakcije tipa multisig, ki niso hkrati tipa P2SH. (privzeto: %u) - - - Specify configuration file (default: %s) - Za shranjevanje konfiguracije uporabi navedeno datoteko. (privzeto: %s) - - - Specify connection timeout in milliseconds (minimum: 1, default: %d) - Vzpostavljanje nove povezave poteÄe po navedenem Å¡t. preteÄenih milisekund. (najmanj: 1, privzeto: %d) - - - Specify pid file (default: %s) - Za shranjevanje PID uporabi navedeno datoteko. (privzeto: %s) - - - Spend unconfirmed change when sending transactions (default: %u) - Pri odlivnih transakcijah omogoÄi troÅ¡enje drobiža iz Å¡e nepotrjenih plaÄil (privzeto: %u) - - - Threshold for disconnecting misbehaving peers (default: %u) - Prekini povezavo s soležnikom, ko Å¡t. njegovih kazenskih toÄk preseže navedeni prag. (privzeto: %u) - - - Unknown network specified in -onlynet: '%s' - Neznano omrežje doloÄeno v -onlynet: '%s'. - - - Cannot resolve -bind address: '%s' - Naslova %s, podanega pri opciji -bind ni mogoÄe razreÅ¡iti. - - - Cannot resolve -externalip address: '%s' - Naslova "%s", podanega pri opciji -externalip ni mogoÄe razreÅ¡iti. - - - Invalid amount for -paytxfee=<amount>: '%s' - Neveljavna koliÄina za -paytxfee=<amount>: '%s' - - - Insufficient funds - Premalo sredstev - - - Loading block index... - Nalagam kazalo blokov ... - - - Add a node to connect to and attempt to keep the connection open - Dodaj povezavo na vozliÅ¡Äe in jo skuÅ¡aj držati odprto - - - Loading wallet... - Nalagam denarnico ... - - - Cannot downgrade wallet - Ne morem - - - Cannot write default address - Ni mogoÄe zapisati privzetega naslova - - - Rescanning... - Ponovno pregledujem verigo ... - - - Done loading - Nalaganje konÄano - - - Error - Napaka - - - \ No newline at end of file diff --git a/src/qt/locale/bitcoin_sq.ts b/src/qt/locale/bitcoin_sq.ts deleted file mode 100644 index 6ed985688..000000000 --- a/src/qt/locale/bitcoin_sq.ts +++ /dev/null @@ -1,774 +0,0 @@ - - - AddressBookPage - - Right-click to edit address or label - Kliko me të djathtën për të ndryshuar adresën ose etiketen. - - - Create a new address - Krijo një adresë të re - - - &New - &E re - - - Copy the currently selected address to the system clipboard - Kopjo adresën e zgjedhur në memorjen e sistemit - - - &Copy - &Kopjo - - - &Copy Address - &Kopjo adresen - - - Delete the currently selected address from the list - Fshi adresen e selektuar nga lista - - - &Delete - &Fshi - - - Choose the address to send coins to - Zgjidh adresen ku do te dergoni monedhat - - - Sending addresses - Duke derguar adresen - - - Receiving addresses - Duke marr adresen - - - These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins. - Këto janë Bitcoin adresat e juaja për të dërguar pagesa. Gjithmon kontrolloni shumën dhe adresën pranuese para se të dërgoni monedha. - - - These are your Bitcoin addresses for receiving payments. It is recommended to use a new receiving address for each transaction. - Këto janë Bitcoin adresat e juaja për të pranuar pagesa. Rekomandohet që gjithmon të përdorni një adresë të re për çdo transaksion. - - - Copy &Label - Kopjo &Etiketë - - - &Edit - &Ndrysho - - - Export Address List - Eksporto listën e adresave - - - Comma separated file (*.csv) - Skedar i ndarë me pikëpresje(*.csv) - - - Exporting Failed - Eksportimi dështoj - - - There was an error trying to save the address list to %1. Please try again. - Gabim gjatë ruajtjes së listës së adresave në %1. Ju lutem provoni prapë. - - - - AddressTableModel - - Label - Etiketë - - - Address - Adresë - - - (no label) - (pa etiketë) - - - - AskPassphraseDialog - - Enter passphrase - Futni frazkalimin - - - New passphrase - Frazkalim i ri - - - Repeat new passphrase - Përsërisni frazkalimin e ri - - - Encrypt wallet - Kripto portofolin - - - This operation needs your wallet passphrase to unlock the wallet. - Ky veprim ka nevojë per frazkalimin e portofolit tuaj që të ç'kyç portofolin. - - - Unlock wallet - ç'kyç portofolin. - - - This operation needs your wallet passphrase to decrypt the wallet. - Ky veprim kërkon frazkalimin e portofolit tuaj që të dekriptoj portofolin. - - - Decrypt wallet - Dekripto portofolin - - - Change passphrase - Ndrysho frazkalimin - - - Confirm wallet encryption - Konfirmoni enkriptimin e portofolit - - - Are you sure you wish to encrypt your wallet? - Jeni te sigurt te enkriptoni portofolin tuaj? - - - Wallet encrypted - Portofoli u enkriptua - - - Wallet encryption failed - Enkriptimi i portofolit dështoi - - - Wallet encryption failed due to an internal error. Your wallet was not encrypted. - Enkriptimi i portofolit dështoi për shkak të një gabimi të brëndshëm. portofoli juaj nuk u enkriptua. - - - The supplied passphrases do not match. - Frazkalimet e plotësuara nuk përputhen. - - - Wallet unlock failed - ç'kyçja e portofolit dështoi - - - The passphrase entered for the wallet decryption was incorrect. - Frazkalimi i futur për dekriptimin e portofolit nuk ishte i saktë. - - - Wallet decryption failed - Dekriptimi i portofolit dështoi - - - - BitcoinGUI - - Synchronizing with network... - Duke u sinkronizuar me rrjetin... - - - &Overview - &Përmbledhje - - - Show general overview of wallet - Trego një përmbledhje te përgjithshme të portofolit - - - &Transactions - &Transaksionet - - - Browse transaction history - Shfleto historinë e transaksioneve - - - Quit application - Mbyllni aplikacionin - - - &Options... - &Opsione - - - Change the passphrase used for wallet encryption - Ndrysho frazkalimin e përdorur per enkriptimin e portofolit - - - Bitcoin - Bitcoin - - - Wallet - Portofol - - - &Send - &Dergo - - - &Receive - &Merr - - - &Show / Hide - &Shfaq / Fsheh - - - &File - &Skedar - - - &Settings - &Konfigurimet - - - &Help - &Ndihmë - - - Tabs toolbar - Shiriti i mjeteve - - - Bitcoin Core - Berthama Bitcoin - - - &About Bitcoin Core - Rreth Berthames Bitkoin - - - %1 and %2 - %1 dhe %2 - - - %1 behind - %1 Pas - - - Error - Problem - - - Information - Informacion - - - Up to date - I azhornuar - - - Catching up... - Duke u azhornuar... - - - Sent transaction - Dërgo transaksionin - - - Incoming transaction - Transaksion në ardhje - - - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - Portofoli po <b> enkriptohet</b> dhe është <b> i ç'kyçur</b> - - - Wallet is <b>encrypted</b> and currently <b>locked</b> - Portofoli po <b> enkriptohet</b> dhe është <b> i kyçur</b> - - - - ClientModel - - - CoinControlDialog - - Coin Selection - Zgjedhja e monedhes - - - Amount: - Shuma: - - - Amount - Sasia - - - Date - Data - - - Copy address - Kopjo adresën - - - yes - po - - - no - jo - - - (no label) - (pa etiketë) - - - - EditAddressDialog - - Edit Address - Ndrysho Adresën - - - &Label - &Etiketë - - - &Address - &Adresa - - - New receiving address - Adresë e re pritëse - - - New sending address - Adresë e re dërgimi - - - Edit receiving address - Ndrysho adresën pritëse - - - Edit sending address - ndrysho adresën dërguese - - - The entered address "%1" is already in the address book. - Adresa e dhënë "%1" është e zënë në librin e adresave. - - - Could not unlock wallet. - Nuk mund të ç'kyçet portofoli. - - - New key generation failed. - Krijimi i çelësit të ri dështoi. - - - - FreespaceChecker - - name - emri - - - - HelpMessageDialog - - Bitcoin Core - Berthama Bitcoin - - - version - versioni - - - About Bitcoin Core - Rreth Berthames Bitkoin - - - - Intro - - Welcome - Miresevini - - - Welcome to Bitcoin Core. - Miresevini ne Berthamen Bitcoin - - - Bitcoin Core - Berthama Bitcoin - - - Error - Problem - - - - OpenURIDialog - - - OptionsDialog - - Options - Opsionet - - - - OverviewPage - - Form - Formilarë - - - - PaymentServer - - - PeerTableModel - - - QObject - - Amount - Sasia - - - - QRImageWidget - - - RPCConsole - - &Open - &Hap - - - &Clear - &Pastro - - - never - asnjehere - - - Unknown - i/e panjohur - - - - ReceiveCoinsDialog - - &Label: - &Etiketë: - - - - ReceiveRequestDialog - - Address - Adresë - - - Amount - Sasia - - - Label - Etiketë - - - - RecentRequestsTableModel - - Date - Data - - - Label - Etiketë - - - Amount - Sasia - - - (no label) - (pa etiketë) - - - - SendCoinsDialog - - Send Coins - Dërgo Monedha - - - Amount: - Shuma: - - - Send to multiple recipients at once - Dërgo marrësve të ndryshëm njëkohësisht - - - Balance: - Balanca: - - - Confirm the send action - Konfirmo veprimin e dërgimit - - - Confirm send coins - konfirmo dërgimin e monedhave - - - The amount to pay must be larger than 0. - Shuma e paguar duhet të jetë më e madhe se 0. - - - (no label) - (pa etiketë) - - - - SendCoinsEntry - - A&mount: - Sh&uma: - - - Pay &To: - Paguaj &drejt: - - - Enter a label for this address to add it to your address book - Krijoni një etiketë për këtë adresë që t'ja shtoni librit të adresave - - - &Label: - &Etiketë: - - - Alt+A - Alt+A - - - Paste address from clipboard - Ngjit nga memorja e sistemit - - - Alt+P - Alt+P - - - - ShutdownWindow - - - SignVerifyMessageDialog - - Alt+A - Alt+A - - - Paste address from clipboard - Ngjit nga memorja e sistemit - - - Alt+P - Alt+P - - - - SplashScreen - - Bitcoin Core - Berthama Bitcoin - - - [testnet] - [testo rrjetin] - - - - TrafficGraphWidget - - - TransactionDesc - - Open until %1 - Hapur deri më %1 - - - %1/unconfirmed - %1/I pakonfirmuar - - - %1 confirmations - %1 konfirmimet - - - Date - Data - - - Amount - Sasia - - - , has not been successfully broadcast yet - , nuk është transmetuar me sukses deri tani - - - unknown - i/e panjohur - - - - TransactionDescDialog - - Transaction details - Detajet e transaksionit - - - This pane shows a detailed description of the transaction - Ky panel tregon një përshkrim të detajuar të transaksionit - - - - TransactionTableModel - - Date - Data - - - Type - Lloji - - - Open until %1 - Hapur deri më %1 - - - Confirmed (%1 confirmations) - I/E konfirmuar(%1 konfirmime) - - - This block was not received by any other nodes and will probably not be accepted! - Ky bllok është marrë nga ndonjë nyje dhe ka shumë mundësi të mos pranohet! - - - Generated but not accepted - I krijuar por i papranuar - - - Label - Etiketë - - - Received with - Marrë me - - - Sent to - Dërguar drejt - - - Payment to yourself - Pagesë ndaj vetvetes - - - Mined - Minuar - - - (n/a) - (p/a) - - - - TransactionView - - Received with - Marrë me - - - Sent to - Dërguar drejt - - - Mined - Minuar - - - Copy address - Kopjo adresën - - - Exporting Failed - Eksportimi dështoj - - - Comma separated file (*.csv) - Skedar i ndarë me pikëpresje(*.csv) - - - Date - Data - - - Type - Lloji - - - Label - Etiketë - - - Address - Adresë - - - - UnitDisplayStatusBarControl - - - WalletFrame - - - WalletModel - - Send Coins - Dërgo Monedha - - - - WalletView - - - bitcoin-core - - Information - Informacion - - - Insufficient funds - Fonde te pamjaftueshme - - - Rescanning... - Rikerkim - - - Error - Problem - - - \ No newline at end of file diff --git a/src/qt/locale/bitcoin_sr.ts b/src/qt/locale/bitcoin_sr.ts deleted file mode 100644 index ddaab9ab2..000000000 --- a/src/qt/locale/bitcoin_sr.ts +++ /dev/null @@ -1,806 +0,0 @@ - - - AddressBookPage - - Create a new address - Napravite novu adresu - - - &New - Novo - - - Copy the currently selected address to the system clipboard - Kopirajte trenutno izabranu adresu - - - &Copy - Kopirajte - - - &Copy Address - Kopirajte adresu - - - Delete the currently selected address from the list - Izbrisite trenutno izabranu adresu sa liste - - - &Delete - &Избриши - - - Comma separated file (*.csv) - Зарезом одвојене вредноÑти (*.csv) - - - - AddressTableModel - - Label - Етикета - - - Address - ÐдреÑа - - - (no label) - (без етикете) - - - - AskPassphraseDialog - - Enter passphrase - УнеÑите лозинку - - - New passphrase - Ðова лозинка - - - Repeat new passphrase - Поновите нову лозинку - - - Encrypt wallet - Шифровање новчаника - - - This operation needs your wallet passphrase to unlock the wallet. - Ова акција захтева лозинку Вашег новчаника да би га откључала. - - - Unlock wallet - Откључавање новчаника - - - This operation needs your wallet passphrase to decrypt the wallet. - Ова акција захтева да унеÑете лозинку да би дешифловала новчаник. - - - Decrypt wallet - Дешифровање новчаника - - - Change passphrase - Промена лозинке - - - Confirm wallet encryption - Одобрите шифровање новчаника - - - Warning: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR BITCOINS</b>! - Упозорење: Ðко Ñе ваш новчаник шифрује а потом изгубите лозинкзу, ви ћете <b>ИЗГУБИТИ СВЕ BITCOIN-Е</b>! - - - Are you sure you wish to encrypt your wallet? - Да ли Ñте Ñигурни да желите да Ñе новчаник шифује? - - - Wallet encrypted - Ðовчаник је шифрован - - - Wallet encryption failed - ÐеуÑпело шифровање новчаника - - - Wallet encryption failed due to an internal error. Your wallet was not encrypted. - ÐаÑтала је унутрашња грешка током шифровања новчаника. Ваш новчаник није шифрован. - - - The supplied passphrases do not match. - Лозинке које Ñте унели Ñе не подударају. - - - Wallet unlock failed - ÐеуÑпело откључавање новчаника - - - The passphrase entered for the wallet decryption was incorrect. - Лозинка коју Ñте унели за откључавање новчаника је нетачна. - - - Wallet decryption failed - ÐеуÑпело дешифровање новчаника - - - Wallet passphrase was successfully changed. - Лозинка за приÑтуп новчанику је уÑпешно промењена. - - - - BitcoinGUI - - Synchronizing with network... - Синхронизација Ñа мрежом у току... - - - &Overview - &Општи преглед - - - Show general overview of wallet - Погледајте општи преглед новчаника - - - &Transactions - &ТранÑакције - - - Browse transaction history - Претражите иÑторијат транÑакција - - - E&xit - I&zlaz - - - Quit application - ÐапуÑтите програм - - - About &Qt - О &Qt-у - - - Show information about Qt - Прегледајте информације о Qt-у - - - &Options... - П&оÑтавке... - - - &Encrypt Wallet... - &Шифровање новчаника... - - - &Backup Wallet... - &Backup новчаника - - - &Change Passphrase... - Промени &лозинку... - - - Send coins to a Bitcoin address - Пошаљите новац на bitcoin адреÑу - - - Change the passphrase used for wallet encryption - Мењање лозинке којом Ñе шифрује новчаник - - - Wallet - новчаник - - - &Send - &Пошаљи - - - &File - &Фајл - - - &Settings - &Подешавања - - - &Help - П&омоћ - - - Tabs toolbar - Трака Ñа картицама - - - Up to date - Ðжурно - - - Catching up... - Ðжурирање у току... - - - Sent transaction - ПоÑлана транÑакција - - - Incoming transaction - Придошла транÑакција - - - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - Ðовчаник Ñ˜Ñ <b>шифрован</b> и тренутно <b>откључан</b> - - - Wallet is <b>encrypted</b> and currently <b>locked</b> - Ðовчаник Ñ˜Ñ <b>шифрован</b> и тренутно <b>закључан</b> - - - - ClientModel - - - CoinControlDialog - - Amount: - Iznos: - - - Amount - iznos - - - Date - datum - - - Confirmed - Potvrdjen - - - Copy address - kopiraj adresu - - - Copy label - kopiraj naziv - - - Copy amount - kopiraj iznos - - - (no label) - (без етикете) - - - - EditAddressDialog - - Edit Address - Измени адреÑу - - - &Label - &Етикета - - - &Address - &ÐдреÑа - - - The entered address "%1" is already in the address book. - Унешена адреÑа "%1" Ñе већ налази у адреÑару. - - - Could not unlock wallet. - Ðемогуће откључати новчаник. - - - - FreespaceChecker - - - HelpMessageDialog - - version - верзија - - - About Bitcoin Core - O Bitcoin Coru - - - Usage: - Korišćenje: - - - - Intro - - - OpenURIDialog - - - OptionsDialog - - Options - ПоÑтавке - - - &Unit to show amounts in: - &Јединица за приказивање изноÑа: - - - &OK - &OK - - - - OverviewPage - - Form - Форма - - - - PaymentServer - - - PeerTableModel - - - QObject - - Amount - iznos - - - - QRImageWidget - - - RPCConsole - - - ReceiveCoinsDialog - - &Label: - &Етикета - - - Copy label - kopiraj naziv - - - Copy amount - kopiraj iznos - - - - ReceiveRequestDialog - - Address - ÐдреÑа - - - Amount - iznos - - - Label - Етикета - - - - RecentRequestsTableModel - - Date - datum - - - Label - Етикета - - - Amount - iznos - - - (no label) - (без етикете) - - - - SendCoinsDialog - - Send Coins - Слање новца - - - Amount: - Iznos: - - - Confirm the send action - Потврди акцију Ñлања - - - S&end - &Пошаљи - - - Copy amount - kopiraj iznos - - - (no label) - (без етикете) - - - - SendCoinsEntry - - &Label: - &Етикета - - - Alt+A - Alt+ - - - Alt+P - Alt+П - - - Message: - Poruka: - - - - ShutdownWindow - - - SignVerifyMessageDialog - - Alt+A - Alt+ - - - Alt+P - Alt+П - - - - SplashScreen - - [testnet] - [testnet] - - - - TrafficGraphWidget - - - TransactionDesc - - Open until %1 - Otvoreno do %1 - - - %1/unconfirmed - %1/nepotvrdjeno - - - %1 confirmations - %1 potvrde - - - Date - datum - - - label - етикета - - - Amount - iznos - - - , has not been successfully broadcast yet - , nije joÅ¡ uvek uspeÅ¡no emitovan - - - unknown - nepoznato - - - - TransactionDescDialog - - Transaction details - detalji transakcije - - - This pane shows a detailed description of the transaction - Ovaj odeljak pokazuje detaljan opis transakcije - - - - TransactionTableModel - - Date - datum - - - Type - tip - - - Open until %1 - Otvoreno do %1 - - - Confirmed (%1 confirmations) - Potvrdjena (%1 potvrdjenih) - - - This block was not received by any other nodes and will probably not be accepted! - Ovaj blok nije primljen od ostalih Ävorova (nodova) i verovatno neće biti prihvaćen! - - - Generated but not accepted - Generisan ali nije prihvaćen - - - Label - Етикета - - - Received with - Primljen sa - - - Received from - Primljeno od - - - Sent to - Poslat ka - - - Payment to yourself - Isplata samom sebi - - - Mined - Minirano - - - (n/a) - (n/a) - - - Transaction status. Hover over this field to show number of confirmations. - Status vaÅ¡e transakcije. Predjite miÅ¡em preko ovog polja da bi ste videli broj konfirmacija - - - Date and time that the transaction was received. - Datum i vreme primljene transakcije. - - - Type of transaction. - Tip transakcije - - - Amount removed from or added to balance. - Iznos odbijen ili dodat balansu. - - - - TransactionView - - All - Sve - - - Today - Danas - - - This week - ove nedelje - - - This month - Ovog meseca - - - Last month - ProÅ¡log meseca - - - This year - Ove godine - - - Range... - Opseg... - - - Received with - Primljen sa - - - Sent to - Poslat ka - - - To yourself - Vama - samom sebi - - - Mined - Minirano - - - Other - Drugi - - - Enter address or label to search - Navedite adresu ili naziv koji bi ste potražili - - - Min amount - Min iznos - - - Copy address - kopiraj adresu - - - Copy label - kopiraj naziv - - - Copy amount - kopiraj iznos - - - Edit label - promeni naziv - - - Comma separated file (*.csv) - Зарезом одвојене вредноÑти (*.csv) - - - Confirmed - Potvrdjen - - - Date - datum - - - Type - tip - - - Label - Етикета - - - Address - ÐдреÑа - - - Range: - Opseg: - - - to - do - - - - UnitDisplayStatusBarControl - - - WalletFrame - - - WalletModel - - Send Coins - Слање новца - - - - WalletView - - Backup Wallet - Backup новчаника - - - - bitcoin-core - - Options: - Opcije - - - Specify data directory - Gde je konkretni data direktorijum - - - Accept command line and JSON-RPC commands - Prihvati komandnu liniju i JSON-RPC komande - - - Run in the background as a daemon and accept commands - Radi u pozadini kao daemon servis i prihvati komande - - - Use the test network - Koristi testnu mrežu - - - Username for JSON-RPC connections - KorisniÄko ime za JSON-RPC konekcije - - - Password for JSON-RPC connections - Lozinka za JSON-RPC konekcije - - - Rescan the block chain for missing wallet transactions - Ponovo skeniraj lanac blokova za nedostajuće transakcije iz novÄanika - - - Use OpenSSL (https) for JSON-RPC connections - Koristi OpenSSL (https) za JSON-RPC konekcije - - - This help message - Ova poruka Pomoći - - - Loading addresses... - uÄitavam adrese.... - - - Error loading wallet.dat: Wallet corrupted - Грешка током учитавања wallet.dat: Ðовчаник је покварен - - - Error loading wallet.dat - Грешка током учитавања wallet.dat - - - Loading block index... - UÄitavam blok indeksa... - - - Loading wallet... - Ðовчаник Ñе учитава... - - - Rescanning... - Ponovo skeniram... - - - Done loading - ZavrÅ¡eno uÄitavanje - - - \ No newline at end of file diff --git a/src/qt/locale/bitcoin_sv.ts b/src/qt/locale/bitcoin_sv.ts deleted file mode 100644 index f589383f9..000000000 --- a/src/qt/locale/bitcoin_sv.ts +++ /dev/null @@ -1,3577 +0,0 @@ - - - AddressBookPage - - Right-click to edit address or label - Högerklicka för att ändra adressen eller etiketten. - - - Create a new address - Skapa ny adress - - - &New - &Ny - - - Copy the currently selected address to the system clipboard - Kopiera den markerade adressen till systemets Urklipp - - - &Copy - &Kopiera - - - C&lose - S&täng - - - &Copy Address - &Kopiera adress - - - Delete the currently selected address from the list - Ta bort den valda adressen frÃ¥n listan - - - Export the data in the current tab to a file - Exportera informationen i den nuvarande fliken till en fil - - - &Export - &Exportera - - - &Delete - &Radera - - - Choose the address to send coins to - Välj en adress att sända betalning till - - - Choose the address to receive coins with - Välj en adress att ta emot betalning till - - - C&hoose - V&älj - - - Sending addresses - Avsändaradresser - - - Receiving addresses - Mottagaradresser - - - These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins. - Detta är dina Bitcoin-adresser för att skicka betalningar. Kolla alltid summan och den mottagande adressen innan du skickar Bitcoins. - - - These are your Bitcoin addresses for receiving payments. It is recommended to use a new receiving address for each transaction. - Detta är dina Bitcoin-adresser för att ta emot betalningar. Det rekommenderas att använda en ny mottagningsadress för varje transaktion. - - - Copy &Label - Kopiera &etikett - - - &Edit - &Ändra - - - Export Address List - Exportera adresslistan - - - Comma separated file (*.csv) - Kommaseparerad fil (*.csv) - - - Exporting Failed - Exporteringen misslyckades - - - There was an error trying to save the address list to %1. Please try again. - Det inträffade ett fel när adresslistan skulle sparas till %1. -Var vänlig och försök igen. - - - - AddressTableModel - - Label - Etikett - - - Address - Adress - - - (no label) - (ingen etikett) - - - - AskPassphraseDialog - - Passphrase Dialog - Lösenordsdialog - - - Enter passphrase - Ange lösenord - - - New passphrase - Nytt lösenord - - - Repeat new passphrase - Upprepa nytt lösenord - - - Encrypt wallet - Kryptera plÃ¥nbok - - - This operation needs your wallet passphrase to unlock the wallet. - Denna operation behöver din plÃ¥nboks lösenord för att lÃ¥sa upp plÃ¥nboken. - - - Unlock wallet - LÃ¥s upp plÃ¥nbok - - - This operation needs your wallet passphrase to decrypt the wallet. - Denna operation behöver din plÃ¥nboks lösenord för att dekryptera plÃ¥nboken. - - - Decrypt wallet - Dekryptera plÃ¥nbok - - - Change passphrase - Ändra lösenord - - - Confirm wallet encryption - Bekräfta kryptering av plÃ¥nbok - - - Warning: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR BITCOINS</b>! - VARNING: Om du krypterar din plÃ¥nbok och glömmer ditt lösenord, kommer du att <b>FÖRLORA ALLA DINA TILLGÃ…NGAR</b>! - - - Are you sure you wish to encrypt your wallet? - Är du säker pÃ¥ att du vill kryptera din plÃ¥nbok? - - - Bitcoin Core 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. - Bitcoin Core kommer att stängas för att slutföra krypteringsprocessen. Kom ihÃ¥g att plÃ¥nbokskryptering inte garanterar fullt skydd mot skadlig kod pÃ¥ din dator. - - - 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. - VIKTIGT: Alla tidigare säkerhetskopior du har gjort av plÃ¥nbokens fil ska ersättas med den nya genererade, krypterade plÃ¥nboks filen. Av säkerhetsskäl kommer tidigare säkerhetskopior av den okrypterade plÃ¥nboks filen blir oanvändbara när du börjar använda en ny, krypterad plÃ¥nbok. - - - Warning: The Caps Lock key is on! - Varning: Caps Lock är pÃ¥slaget! - - - Wallet encrypted - PlÃ¥nboken är krypterad - - - 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>. - Ange plÃ¥nbokens nya lösenord. <br/> Använd ett lösenord pÃ¥ <b>tio eller fler slumpmässiga tecken,</b> eller <b>Ã¥tta eller fler ord.</b>. - - - Enter the old passphrase and new passphrase to the wallet. - Ge det gamla lösenordet och det nya lösenordet för plÃ¥nboken. - - - Wallet encryption failed - Kryptering av plÃ¥nbok misslyckades - - - Wallet encryption failed due to an internal error. Your wallet was not encrypted. - Kryptering av plÃ¥nbok misslyckades pÃ¥ grund av ett internt fel. Din plÃ¥nbok blev inte krypterad. - - - The supplied passphrases do not match. - De angivna lösenorden överensstämmer inte. - - - Wallet unlock failed - UpplÃ¥sning av plÃ¥nbok misslyckades - - - The passphrase entered for the wallet decryption was incorrect. - Lösenordet för dekryptering av plÃ¥nbok var felaktig. - - - Wallet decryption failed - Dekryptering av plÃ¥nbok misslyckades - - - Wallet passphrase was successfully changed. - PlÃ¥nbokens lösenord har ändrats. - - - - BitcoinGUI - - Sign &message... - Signera &meddelande... - - - Synchronizing with network... - Synkroniserar med nätverk... - - - &Overview - &Översikt - - - Node - Nod - - - Show general overview of wallet - Visa generell översikt av plÃ¥nboken - - - &Transactions - &Transaktioner - - - Browse transaction history - Bläddra i transaktionshistorik - - - E&xit - &Avsluta - - - Quit application - Avsluta programmet - - - About &Qt - Om &Qt - - - Show information about Qt - Visa information om Qt - - - &Options... - &Alternativ... - - - &Encrypt Wallet... - &Kryptera plÃ¥nbok... - - - &Backup Wallet... - &Säkerhetskopiera plÃ¥nbok... - - - &Change Passphrase... - &Byt lösenord... - - - &Sending addresses... - Av&sändaradresser... - - - &Receiving addresses... - Mottaga&radresser... - - - Open &URI... - Öppna &URI... - - - Bitcoin Core client - Bitcoin Core-klient - - - Importing blocks from disk... - Importerar block frÃ¥n disk... - - - Reindexing blocks on disk... - Ã…terindexerar block pÃ¥ disken... - - - Send coins to a Bitcoin address - Skicka bitcoins till en Bitcoin-adress - - - Backup wallet to another location - Säkerhetskopiera plÃ¥nboken till en annan plats - - - Change the passphrase used for wallet encryption - Byt lösenfras för kryptering av plÃ¥nbok - - - &Debug window - &Debug-fönster - - - Open debugging and diagnostic console - Öppna debug- och diagnostikkonsolen - - - &Verify message... - &Verifiera meddelande... - - - Bitcoin - Bitcoin - - - Wallet - PlÃ¥nbok - - - &Send - &Skicka - - - &Receive - &Ta emot - - - Show information about Bitcoin Core - Visa information om Bitcoin Core - - - &Show / Hide - &Visa / Göm - - - Show or hide the main Window - Visa eller göm huvudfönstret - - - Encrypt the private keys that belong to your wallet - Kryptera de privata nycklar som tillhör din plÃ¥nbok - - - Sign messages with your Bitcoin addresses to prove you own them - Signera meddelanden med din Bitcoin-adress för att bevisa att du äger dem - - - Verify messages to ensure they were signed with specified Bitcoin addresses - Verifiera meddelanden för att vara säker pÃ¥ att de var signerade med specificerade Bitcoin-adresser - - - &File - &Arkiv - - - &Settings - &Inställningar - - - &Help - &Hjälp - - - Tabs toolbar - Verktygsfält för tabbar - - - Bitcoin Core - Bitcoin Core - - - Request payments (generates QR codes and bitcoin: URIs) - Begär betalning (genererar QR-koder och bitcoin-URI) - - - &About Bitcoin Core - &Om Bitcoin Core - - - Modify configuration options for Bitcoin Core - Ändra konfigurationsalternativ för Bitcoin Core - - - Show the list of used sending addresses and labels - Visa listan av använda avsändaradresser och etiketter - - - Show the list of used receiving addresses and labels - Visa listan av använda mottagningsadresser och etiketter - - - Open a bitcoin: URI or payment request - Öppna en bitcoin: URI eller betalningsbegäran - - - &Command-line options - &Kommandoradsalternativ - - - Show the Bitcoin Core help message to get a list with possible Bitcoin command-line options - Visa Bitcoin Cores hjälpmeddelande för att fÃ¥ en lista med möjliga Bitcoin-kommandoradsalternativ. - - - %n active connection(s) to Bitcoin network - %n aktiva anslutningar till Bitcoin-nätverket.%n aktiva anslutningar till Bitcoin-nätverket. - - - No block source available... - Ingen block-källa tillgänglig... - - - Processed %n block(s) of transaction history. - Bearbetade %n block av transaktionshistoriken.Bearbetade %n block av transaktionshistoriken. - - - %n hour(s) - %n timme%n timmar - - - %n day(s) - %n dag%n dagar - - - %n week(s) - %n vecka%n veckor - - - %1 and %2 - %1 och %2 - - - %n year(s) - %n Ã¥r%n Ã¥r - - - %1 behind - %1 efter - - - Last received block was generated %1 ago. - Senast mottagna block genererades för %1 sen. - - - Transactions after this will not yet be visible. - Transaktioner efter denna kommer inte ännu vara synliga. - - - Error - Fel - - - Warning - Varning - - - Information - Information - - - Up to date - Uppdaterad - - - Catching up... - Hämtar senaste... - - - Date: %1 - - Datum: %1 - - - - Amount: %1 - - Belopp: %1 - - - - Type: %1 - - Typ: %1 - - - - Label: %1 - - Etikett: %1 - - - - Address: %1 - - Adress: %1 - - - - Sent transaction - Transaktion skickad - - - Incoming transaction - Inkommande transaktion - - - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - Denna plÃ¥nbok är <b>krypterad</b> och för närvarande <b>olÃ¥st</b> - - - Wallet is <b>encrypted</b> and currently <b>locked</b> - Denna plÃ¥nbok är <b>krypterad</b> och för närvarande <b>lÃ¥st</b> - - - - ClientModel - - Network Alert - Nätverkslarm - - - - CoinControlDialog - - Coin Selection - Myntval - - - Quantity: - Kvantitet: - - - Bytes: - Antal byte: - - - Amount: - Belopp: - - - Priority: - Prioritet: - - - Fee: - Avgift: - - - Dust: - Damm: - - - After Fee: - Efter avgift: - - - Change: - Växel: - - - (un)select all - (av)markera allt - - - Tree mode - Trädvy - - - List mode - Listvy - - - Amount - Mängd - - - Received with label - Mottagen med etikett - - - Received with address - Mottagen med adress - - - Date - Datum - - - Confirmations - Bekräftelser - - - Confirmed - Bekräftad - - - Priority - Prioritet - - - Copy address - Kopiera adress - - - Copy label - Kopiera etikett - - - Copy amount - Kopiera belopp - - - Copy transaction ID - Kopiera transaktions ID - - - Lock unspent - LÃ¥s ospenderat - - - Unlock unspent - LÃ¥s upp ospenderat - - - Copy quantity - Kopiera kvantitet - - - Copy fee - Kopiera avgift - - - Copy after fee - Kopiera efter avgift - - - Copy bytes - Kopiera byte - - - Copy priority - Kopiera prioritet - - - Copy dust - Kopiera damm - - - Copy change - Kopiera växel - - - highest - högst - - - higher - högre - - - high - hög - - - medium-high - medelhög - - - medium - medel - - - low-medium - lÃ¥gmedel - - - low - lÃ¥g - - - lower - lägre - - - lowest - lägst - - - (%1 locked) - (%1 lÃ¥st) - - - none - ingen - - - This label turns red if the transaction size is greater than 1000 bytes. - Denna etikett blir röd om transaktionens storlek är större än 1000 bytes. - - - This label turns red if the priority is smaller than "medium". - Denna etikett blir röd om prioriteten är lägre än "medium". - - - This label turns red if any recipient receives an amount smaller than %1. - Denna etikett blir röd om nÃ¥gon mottagare fÃ¥r ett belopp mindre än %1. - - - yes - ja - - - no - nej - - - This means a fee of at least %1 per kB is required. - Detta betyder att en avgift pÃ¥ minst %1 per kB behövs. - - - Can vary +/- 1 byte per input. - Kan variera +/- 1 byte per inmatning. - - - Transactions with higher priority are more likely to get included into a block. - Transaktioner med högre prioritet har större sannolikhet att inkluderas i ett block. - - - (no label) - (Ingen etikett) - - - change from %1 (%2) - växel frÃ¥n %1 (%2) - - - (change) - (växel) - - - - EditAddressDialog - - Edit Address - Redigera adress - - - &Label - &Etikett - - - The label associated with this address list entry - Etiketten associerad med denna adresslistas post - - - The address associated with this address list entry. This can only be modified for sending addresses. - Adressen associerad med denna adresslistas post. Detta kan bara ändras för sändningsadresser. - - - &Address - &Adress - - - New receiving address - Ny mottagaradress - - - New sending address - Ny avsändaradress - - - Edit receiving address - Redigera mottagaradress - - - Edit sending address - Redigera avsändaradress - - - The entered address "%1" is already in the address book. - Den angivna adressen "%1" finns redan i adressboken. - - - The entered address "%1" is not a valid Bitcoin address. - Den angivna adressen "%1" är inte en giltig Bitcoin-adress. - - - Could not unlock wallet. - PlÃ¥nboken kunde inte lÃ¥sas upp. - - - New key generation failed. - Misslyckades med generering av ny nyckel. - - - - FreespaceChecker - - A new data directory will be created. - En ny datakatalog kommer att skapas. - - - name - namn - - - Directory already exists. Add %1 if you intend to create a new directory here. - Katalogen finns redan. Läggtill %1 om du vill skapa en ny katalog här. - - - Path already exists, and is not a directory. - Sökvägen finns redan, och är inte en katalog. - - - Cannot create data directory here. - Kan inte skapa datakatalog här. - - - - HelpMessageDialog - - Bitcoin Core - Bitcoin Core - - - version - version - - - (%1-bit) - (%1-bit) - - - About Bitcoin Core - Om Bitcoin Core - - - Command-line options - Kommandoradsalternativ - - - Usage: - Användning: - - - command-line options - kommandoradsalternativ - - - - Intro - - Welcome - Välkommen - - - Welcome to Bitcoin Core. - Välkommen till Bitcoin Core. - - - As this is the first time the program is launched, you can choose where Bitcoin Core will store its data. - Eftersom detta är första gÃ¥ngen programmet startas fÃ¥r du välja var Bitcoin Core skall lagra sina data. - - - Bitcoin Core will download and store a copy of the Bitcoin block chain. At least %1GB of data will be stored in this directory, and it will grow over time. The wallet will also be stored in this directory. - Bitcoin Core kommer att ladda ner och spara en kopia av Bitcoin-blockkedjan. Ã…tminstone %1GB av data kommer att sparas i denna katalog, och den kommer att växa över tiden. PlÃ¥nboken kommer ocksÃ¥ att sparas i denna katalog. - - - Use the default data directory - Använd den förvalda datakatalogen - - - Use a custom data directory: - Använd en anpassad datakatalog: - - - Bitcoin Core - Bitcoin Core - - - Error: Specified data directory "%1" cannot be created. - Fel: Den angivna datakatalogen "%1" kan inte skapas. - - - Error - Fel - - - %n GB of free space available - %n GB fritt utrymme kvar%n GB fritt utrymme kvar - - - (of %n GB needed) - (av %n GB behövs)(av %n GB behövs) - - - - OpenURIDialog - - Open URI - Öppna URI - - - Open payment request from URI or file - Öppna betalningsbegäran frÃ¥n URI eller fil - - - URI: - URI: - - - Select payment request file - Välj betalningsbegäransfil - - - Select payment request file to open - Välj betalningsbegäransfil att öppna - - - - OptionsDialog - - Options - Alternativ - - - &Main - &Allmänt - - - Size of &database cache - Storleken pÃ¥ &databascache - - - MB - MB - - - Number of script &verification threads - Antalet skript&verifikationstrÃ¥dar - - - Accept connections from outside - Acceptera anslutningar utifrÃ¥n - - - Allow incoming connections - Acceptera inkommande anslutningar - - - IP address of the proxy (e.g. IPv4: 127.0.0.1 / IPv6: ::1) - Proxyns IP-adress (t.ex. IPv4: 127.0.0.1 / IPv6: ::1) - - - Minimize instead of exit the application when the window is closed. When this option is enabled, the application will be closed only after selecting Exit in the menu. - Minimera istället för att stänga programmet när fönstret stängs. När detta alternativ är aktiverat stängs programmet endast genom att välja Stäng i menyn. - - - The user interface language can be set here. This setting will take effect after restarting Bitcoin Core. - Gränssnittets sprÃ¥k kan väljas här. Denna inställning träder i kraft efter omstart av Bitcoin Core. - - - 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 |. - Tredjeparts URL:er (t.ex. en blockutforskare) som finns i transaktionstabben som ett menyval i sammanhanget. %s i URL:en ersätts med tansaktionshashen. Flera URL:er är separerade med vertikala streck |. - - - Third party transaction URLs - Tredjeparts transaktions-URL:er - - - Active command-line options that override above options: - Aktiva kommandoradsalternativ som ersätter alternativen ovan: - - - Reset all client options to default. - Ã…terställ alla klientinställningar till förvalen. - - - &Reset Options - &Ã…terställ alternativ - - - &Network - &Nätverk - - - Automatically start Bitcoin Core after logging in to the system. - Kör Bitcoin Core automatiskt vid systeminloggning. - - - &Start Bitcoin Core on system login - &Kör Bitcoin Core vid systeminloggning - - - (0 = auto, <0 = leave that many cores free) - (0 = auto, <0 = lämna sÃ¥ mÃ¥nga kärnor lediga) - - - W&allet - &PlÃ¥nbok - - - Expert - Expert - - - Enable coin &control features - Aktivera mynt&kontrollfunktioner - - - 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. - Om du avaktiverar betalning med obekräftad växel, kan inte växeln frÃ¥n en transaktion användas förrän den transaktionen har minst en bekräftelse. - - - &Spend unconfirmed change - &Spendera obekräftad växel - - - Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled. - Öppna automatiskt Bitcoin-klientens port pÃ¥ routern. Detta fungerar endast om din router har UPnP aktiverat. - - - Map port using &UPnP - Tilldela port med hjälp av &UPnP - - - Connect to the Bitcoin network through a SOCKS5 proxy. - Anslut till Bitcoin-nätverket genom en SOCKS5-proxy. - - - &Connect through SOCKS5 proxy (default proxy): - &Anslut genom SOCKS5-proxy (förvald proxy): - - - Proxy &IP: - Proxy-&IP: - - - &Port: - &Port: - - - Port of the proxy (e.g. 9050) - Proxyns port (t.ex. 9050) - - - &Window - &Fönster - - - Show only a tray icon after minimizing the window. - Visa endast en systemfältsikon vid minimering. - - - &Minimize to the tray instead of the taskbar - &Minimera till systemfältet istället för aktivitetsfältet - - - M&inimize on close - M&inimera vid stängning - - - &Display - &Visa - - - User Interface &language: - Användargränssnittets &sprÃ¥k: - - - &Unit to show amounts in: - &MÃ¥ttenhet att visa belopp i: - - - Choose the default subdivision unit to show in the interface and when sending coins. - Välj en mÃ¥ttenhet att visa i gränssnittet och när du skickar mynt. - - - Whether to show coin control features or not. - Om myntkontrollfunktioner skall visas eller inte - - - &OK - &OK - - - &Cancel - &Avbryt - - - default - standard - - - none - ingen - - - Confirm options reset - Bekräfta att alternativen ska Ã¥terställs - - - Client restart required to activate changes. - Klientomstart är nödvändig för att aktivera ändringarna. - - - Client will be shut down. Do you want to proceed? - Programmet kommer att stängas. Vill du fortsätta? - - - This change would require a client restart. - Denna ändring kräver en klientomstart. - - - The supplied proxy address is invalid. - Den angivna proxy-adressen är ogiltig. - - - - OverviewPage - - Form - Formulär - - - The displayed information may be out of date. Your wallet automatically synchronizes with the Bitcoin network after a connection is established, but this process has not completed yet. - Den visade informationen kan vara inaktuell. PlÃ¥nboken synkroniseras automatiskt med Bitcoin-nätverket efter att anslutningen är upprättad, men denna process har inte slutförts ännu. - - - Watch-only: - Granska-bara: - - - Available: - Tillgängligt: - - - Your current spendable balance - Ditt tillgängliga saldo - - - Pending: - PÃ¥gÃ¥ende: - - - Total of transactions that have yet to be confirmed, and do not yet count toward the spendable balance - Totalt antal transaktioner som ännu inte bekräftats, och som ännu inte räknas med i aktuellt saldo - - - Immature: - Omogen: - - - Mined balance that has not yet matured - Den genererade balansen som ännu inte har mognat - - - Balances - Balanser - - - Total: - Totalt: - - - Your current total balance - Ditt nuvarande totala saldo - - - Your current balance in watch-only addresses - Ditt nuvarande saldo i granska-bara adresser - - - Spendable: - Spenderbar: - - - Recent transactions - Nyligen genomförda transaktioner - - - Unconfirmed transactions to watch-only addresses - Okonfirmerade transaktioner till granska-bara adresser - - - Mined balance in watch-only addresses that has not yet matured - Den genererade balansen i granska-bara adresser som ännu inte har mognat - - - Current total balance in watch-only addresses - Nuvarande total balans i granska-bara adresser - - - - PaymentServer - - URI handling - URI hantering - - - Invalid payment address %1 - Felaktig betalningsadress %1 - - - Payment request rejected - Betalningsbegäran avslogs - - - Payment request network doesn't match client network. - Betalningsbegärans nätverk matchar inte klientens nätverk. - - - Payment request is not initialized. - Betalningsbegäran är inte initierad. - - - Requested payment amount of %1 is too small (considered dust). - Begärd betalning av %1 är för liten (betraktas som damm). - - - Payment request error - Fel vid betalningsbegäran - - - Cannot start bitcoin: click-to-pay handler - Kan inte starta bitcoin: klicka-och-betala handhavare - - - Payment request fetch URL is invalid: %1 - Betalningsbegärans hämta URL är felaktig: %1 - - - URI cannot be parsed! This can be caused by an invalid Bitcoin address or malformed URI parameters. - URI gÃ¥r inte att tolkas! Detta kan orsakas av en ogiltig Bitcoin-adress eller felaktiga URI parametrar. - - - Payment request file handling - Hantering av betalningsbegäransfil - - - Payment request file cannot be read! This can be caused by an invalid payment request file. - Betalningsbegäransfilen kan inte läsas! Detta kan orsakas av en felaktig betalningsbegäransfil. - - - Payment request expired. - Betalningsbegäran löpte ut. - - - Unverified payment requests to custom payment scripts are unsupported. - Overifierade betalningsbegärningar till specialbetalningsskript stöds inte. - - - Invalid payment request. - Ogiltig betalningsbegäran. - - - Refund from %1 - Ã…terbetalning frÃ¥n %1 - - - Payment request %1 is too large (%2 bytes, allowed %3 bytes). - Betalningsbegäran %1 är för stor (%2 bytes, tillÃ¥ten %3 bytes) - - - Payment request DoS protection - Betalningsbegäran begär DoS-skydd - - - Error communicating with %1: %2 - Kommunikationsfel med %1: %2 - - - Payment request cannot be parsed! - Betalningsbegäran kan inte behandlas! - - - Bad response from server %1 - DÃ¥ligt svar frÃ¥n server %1 - - - Payment acknowledged - Betalningen bekräftad - - - Network request error - Fel vid närverksbegäran - - - - PeerTableModel - - User Agent - Användaragent - - - Node/Service - Nod/Tjänst - - - Ping Time - Pingtid - - - - QObject - - Amount - Mängd - - - Enter a Bitcoin address (e.g. %1) - Ange en Bitcoin-adress (t.ex. %1) - - - %1 d - %1 d - - - %1 h - %1 h - - - %1 m - %1 m - - - %1 s - %1 s - - - None - Ingen - - - N/A - ej tillgänglig - - - %1 ms - %1 ms - - - - QRImageWidget - - &Save Image... - &Spara Bild... - - - &Copy Image - &Kopiera Bild - - - Save QR Code - Spara QR-kod - - - PNG Image (*.png) - PNG-bild (*.png) - - - - RPCConsole - - Client name - Klientnamn - - - N/A - ej tillgänglig - - - Client version - Klient-version - - - &Information - &Information - - - Debug window - Debug fönster - - - General - Generell - - - Using OpenSSL version - Använder OpenSSL version - - - Using BerkeleyDB version - Använder BerkeleyDB versionen - - - Startup time - Uppstartstid - - - Network - Nätverk - - - Name - Namn - - - Number of connections - Antalet anslutningar - - - Block chain - Blockkedja - - - Current number of blocks - Aktuellt antal block - - - Open the Bitcoin Core debug log file from the current data directory. This can take a few seconds for large log files. - Öppna felsökningsloggfilen för Bitcoin Core frÃ¥n den nuvarande datakatalogen. Detta kan ta nÃ¥gra sekunder om loggfilen är stor. - - - Received - Mottagen - - - Sent - Skickad - - - &Peers - &Klienter - - - Select a peer to view detailed information. - Välj en klient för att se detaljerad information. - - - Direction - Riktning - - - Version - Version - - - User Agent - Användaragent - - - Services - Tjänster - - - Starting Height - Starthöjd - - - Sync Height - Synchöjd - - - Ban Score - Banpoäng - - - Connection Time - Anslutningstid - - - Last Send - Senast sänt - - - Last Receive - Senast mottagen - - - Bytes Sent - Bytes sänt - - - Bytes Received - Bytes mottaget - - - Ping Time - Pingtid - - - Time Offset - Tidsförskjutning - - - Last block time - Sista blocktid - - - &Open - &Öppna - - - &Console - &Konsol - - - &Network Traffic - &Nätverkstrafik - - - &Clear - &Rensa - - - Totals - Totalt: - - - In: - In: - - - Out: - Ut: - - - Build date - Kompileringsdatum - - - Debug log file - Debugloggfil - - - Clear console - Rensa konsollen - - - Welcome to the Bitcoin Core RPC console. - Välkommen till RPC-konsolen för Bitcoin Core. - - - Use up and down arrows to navigate history, and <b>Ctrl-L</b> to clear screen. - Använd upp- och ner-pilarna för att navigera i historiken, och <b>Ctrl-L</b> för att rensa skärmen. - - - Type <b>help</b> for an overview of available commands. - Skriv <b>help</b> för en översikt av alla kommandon. - - - %1 B - %1 B - - - %1 KB - %1 KB - - - %1 MB - %1 MB - - - %1 GB - %1 GB - - - via %1 - via %1 - - - never - aldrig - - - Inbound - Inkommande - - - Outbound - UtgÃ¥ende - - - Unknown - Okänd - - - Fetching... - Hämtar... - - - - ReceiveCoinsDialog - - &Label: - &Etikett: - - - &Message: - &Meddelande: - - - Reuse one of the previously used receiving addresses. Reusing addresses has security and privacy issues. Do not use this unless re-generating a payment request made before. - Ã…teranvänd en av tidigare använda mottagningsadresser. Ã…teranvändning av adresser har bÃ¥de säkerhets och integritetsbrister. Använd inte samma mottagningsadress om du inte gör om samma betalningsbegäran. - - - R&euse an existing receiving address (not recommended) - Ã…t&eranvänd en existerande mottagningsadress (rekommenderas inte) - - - An optional message to attach to the payment request, which will be displayed when the request is opened. Note: The message will not be sent with the payment over the Bitcoin network. - Ett frivilligt meddelande att bifoga betalningsbegäran, vilket visas när begäran öppnas. NB: Meddelandet kommer inte att sändas med betalningen över Bitcoinnätverket. - - - An optional label to associate with the new receiving address. - En frivillig etikett att associera med den nya mottagningsadressen. - - - Use this form to request payments. All fields are <b>optional</b>. - Använd detta formulär för att begära betalningar. Alla fält är <b>frivilliga</b>. - - - An optional amount to request. Leave this empty or zero to not request a specific amount. - En valfri summa att begära. Lämna denna tom eller noll för att inte begära en specifik summa. - - - Clear all fields of the form. - Rensa alla formulärfälten - - - Clear - Rensa - - - Requested payments history - Historik för begärda betalningar - - - &Request payment - Begä&r betalning - - - Show the selected request (does the same as double clicking an entry) - Visa valda begäranden (gör samma som att dubbelklicka pÃ¥ en post) - - - Show - Visa - - - Remove the selected entries from the list - Ta bort valda poster frÃ¥n listan - - - Remove - Ta bort - - - Copy label - Kopiera etikett - - - Copy message - Kopiera meddelande - - - Copy amount - Kopiera belopp - - - - ReceiveRequestDialog - - QR Code - QR-kod - - - Copy &URI - Kopiera &URI - - - Copy &Address - Kopiera &Adress - - - &Save Image... - &Spara Bild... - - - Request payment to %1 - Begär betalning till %1 - - - Payment information - Betalningsinformation - - - URI - URI - - - Address - Adress - - - Amount - Mängd - - - Label - Etikett - - - Message - Meddelande - - - Resulting URI too long, try to reduce the text for label / message. - URI:n är för lÃ¥ng, försöka minska texten för etikett / meddelande. - - - Error encoding URI into QR Code. - Fel vid skapande av QR-kod frÃ¥n URI. - - - - RecentRequestsTableModel - - Date - Datum - - - Label - Etikett - - - Message - Meddelande - - - Amount - Mängd - - - (no label) - (Ingen etikett) - - - (no message) - (inget meddelande) - - - (no amount) - (ingen summa) - - - - SendCoinsDialog - - Send Coins - Skicka pengar - - - Coin Control Features - Myntkontrollfunktioner - - - Inputs... - Inmatningar... - - - automatically selected - automatiskt vald - - - Insufficient funds! - Otillräckliga medel! - - - Quantity: - Kvantitet: - - - Bytes: - Antal Byte: - - - Amount: - Belopp: - - - Priority: - Prioritet: - - - Fee: - Avgift: - - - After Fee: - Efter avgift: - - - Change: - Växel: - - - If this is activated, but the change address is empty or invalid, change will be sent to a newly generated address. - Om denna är aktiverad men växeladressen är tom eller felaktig kommer växeln att sändas till en nygenererad adress. - - - Custom change address - Specialväxeladress - - - Transaction Fee: - Transaktionsavgift: - - - Choose... - Välj... - - - collapse fee-settings - Fäll ihop avgiftsinställningarna - - - per kilobyte - per kilobyte - - - 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. - Om den anpassad avgiften är satt till 1000 satoshi och transaktionen bara är 250 byte, betalar "per kilobyte" bara 250 satoshi i avgift, medans "totalt minst" betalar 1000 satoshi. För transaktioner större än en kilobyte betalar bÃ¥de per kilobyte. - - - Hide - Göm - - - total at least - totalt minst - - - 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. - Att betala endast den minsta avgiften är bara bra sÃ¥ länge det är mindre transaktionsvolym än utrymme i blocken. Men tänk pÃ¥ att det kan hamna i en aldrig bekräftar transaktion när det finns mer efterfrÃ¥gan pÃ¥ bitcoin transaktioner än nätverket kan bearbeta. - - - (read the tooltip) - (läs verktygstips) - - - Recommended: - Rekommenderad: - - - Custom: - Anpassad: - - - (Smart fee not initialized yet. This usually takes a few blocks...) - (Smartavgiften är inte initierad än. Detta tar vanligen nÃ¥gra block...) - - - Confirmation time: - Bekräftelsetid: - - - normal - normal - - - fast - snabb - - - Send as zero-fee transaction if possible - Sänd som nollavgiftstransaktion om möjligt - - - (confirmation may take longer) - (bekräftelse kan ta längre tid) - - - Send to multiple recipients at once - Skicka till flera mottagare samtidigt - - - Add &Recipient - Lägg till &mottagare - - - Clear all fields of the form. - Rensa alla formulärfälten - - - Dust: - Damm: - - - Clear &All - Rensa &alla - - - Balance: - Balans: - - - Confirm the send action - Bekräfta sändordern - - - S&end - &Skicka - - - Confirm send coins - Bekräfta skickade mynt - - - %1 to %2 - %1 till %2 - - - Copy quantity - Kopiera kvantitet - - - Copy amount - Kopiera belopp - - - Copy fee - Kopiera avgift - - - Copy after fee - Kopiera efter avgift - - - Copy bytes - Kopiera byte - - - Copy priority - Kopiera prioritet - - - Copy change - Kopiera växel - - - or - eller - - - The amount to pay must be larger than 0. - Det betalade beloppet mÃ¥ste vara större än 0. - - - The amount exceeds your balance. - Värdet överstiger ditt saldo. - - - The total exceeds your balance when the %1 transaction fee is included. - Totalvärdet överstiger ditt saldo när transaktionsavgiften %1 är pÃ¥lagd. - - - Transaction creation failed! - Transaktionen gick inte att skapa! - - - 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. - Transaktionen avslogs! Detta kan hända om nÃ¥gra av mynten i plÃ¥nboken redan spenderats, t.ex om du använt en kopia av wallet.dat och mynt spenderades i kopian men inte markerats som spenderade här. - - - A fee higher than %1 is considered an absurdly high fee. - En avgift som är högre än %1 anses vara en orimligt hög avgift. - - - Payment request expired. - Betalningsbegäran löpte ut. - - - Estimated to begin confirmation within %n block(s). - Uppskattas till att pÃ¥börja bekräftelse inom %n block.Uppskattas till att pÃ¥börja bekräftelse inom %n block. - - - Pay only the minimum fee of %1 - Betala endast den minimala avgiften pÃ¥ %1 - - - Total Amount %1<span style='font-size:10pt;font-weight:normal;'><br />(=%2)</span> - Total summa %1<span style='font-size:10pt;font-weight:normal;'><br />(=%2)</span> - - - The recipient address is not valid. Please recheck. - Mottagarens adress är ogiltig. Kontrollera igen. - - - Duplicate address found: addresses should only be used once each. - Duplicerad adress upptäckt: adresser skall endast användas en gÃ¥ng var. - - - Warning: Invalid Bitcoin address - Varning: Felaktig Bitcoinadress - - - (no label) - (Ingen etikett) - - - Warning: Unknown change address - Varning: Okänd växeladress - - - Copy dust - Kopiera damm - - - Are you sure you want to send? - Är du säker pÃ¥ att du vill skicka? - - - added as transaction fee - adderad som transaktionsavgift - - - - SendCoinsEntry - - A&mount: - &Belopp: - - - Pay &To: - Betala &Till: - - - Enter a label for this address to add it to your address book - Ange ett namn för den här adressen och lägg till den i din adressbok - - - &Label: - &Etikett: - - - Choose previously used address - Välj tidigare använda adresser - - - This is a normal payment. - Detta är en normal betalning. - - - The Bitcoin address to send the payment to - Bitcoinadress att sända betalning till - - - Alt+A - Alt+A - - - Paste address from clipboard - Klistra in adress frÃ¥n Urklipp - - - Alt+P - Alt+P - - - Remove this entry - Radera denna post - - - The fee will be deducted from the amount being sent. The recipient will receive less bitcoins than you enter in the amount field. If multiple recipients are selected, the fee is split equally. - Avgiften dras frÃ¥n beloppet som skickas. Mottagaren kommer att fÃ¥ mindre bitcoins än du angivit i belopp-fältet. Om flera mottagare valts kommer avgiften delas jämt. - - - Message: - Meddelande: - - - This is an unauthenticated payment request. - Detta är en oautentiserad betalningsbegäran. - - - This is an authenticated payment request. - Detta är en autentiserad betalningsbegäran. - - - Enter a label for this address to add it to the list of used addresses - Ange en etikett för denna adress att adderas till listan över använda adresser - - - A message that was attached to the bitcoin: URI which will be stored with the transaction for your reference. Note: This message will not be sent over the Bitcoin network. - Ett meddelande som bifogades bitcoin-URI, vilket lagras med transaktionen som referens. NB: Meddelandet kommer inte att sändas över Bitcoinnätverket. - - - Pay To: - Betala Till: - - - Memo: - PM: - - - - ShutdownWindow - - Bitcoin Core is shutting down... - Bitcoin Core stängs av... - - - Do not shut down the computer until this window disappears. - Stäng inte av datorn förrän denna ruta försvinner. - - - - SignVerifyMessageDialog - - Signatures - Sign / Verify a Message - Signaturer - Signera / Verifiera ett Meddelande - - - &Sign Message - &Signera Meddelande - - - You can sign messages/agreements with your addresses to prove you can receive bitcoins sent to them. Be careful not to sign anything vague or random, as phishing attacks may try to trick you into signing your identity over to them. Only sign fully-detailed statements you agree to. - Du kan underteckna meddelanden/avtal med dina adresser för att bevisa att du kan ta emot bitcoins som skickats till dem. Var försiktig sÃ¥ du inte undertecknar nÃ¥got oklart eller konstigt, eftersom phishing-angrepp kan försöka fÃ¥ dig att underteckna din identitet till dem. Underteckna endast väldetaljerade meddelanden som du godkänner. - - - The Bitcoin address to sign the message with - Bitcoinadress att signera meddelandet med - - - Choose previously used address - Välj tidigare använda adresser - - - Alt+A - Alt+A - - - Paste address from clipboard - Klistra in adress frÃ¥n Urklipp - - - Alt+P - Alt+P - - - Enter the message you want to sign here - Skriv in meddelandet du vill signera här - - - Signature - Signatur - - - Copy the current signature to the system clipboard - Kopiera signaturen till systemets Urklipp - - - Sign the message to prove you own this Bitcoin address - Signera meddelandet för att bevisa att du äger denna adress - - - Sign &Message - Signera &Meddelande - - - Reset all sign message fields - Rensa alla fält - - - Clear &All - Rensa &alla - - - &Verify Message - &Verifiera Meddelande - - - Enter the receiver's address, message (ensure you copy line breaks, spaces, tabs, etc. exactly) and signature below to verify the message. Be careful not to read more into the signature than what is in the signed message itself, to avoid being tricked by a man-in-the-middle attack. Note that this only proves the signing party receives with the address, it cannot prove sendership of any transaction! - Ange mottagarens adress, meddelande (kopiera radbrytningar, mellanrum, flikar, etc. exakt) och signatur nedan för att verifiera meddelandet. Undvik att läsa in mera information i signaturen än vad som stod i själva undertecknade meddelandet, för att undvika ett man-in-the-middle-angrepp. Notera att detta endast bevisar att undertecknad tar emot med adressen, det bevisar inte vem som skickat transaktionen! - - - The Bitcoin address the message was signed with - Bitcoinadressen som meddelandet signerades med - - - Verify the message to ensure it was signed with the specified Bitcoin address - Verifiera meddelandet för att vara säker pÃ¥ att den var signerad med den angivna Bitcoin-adressen - - - Verify &Message - Verifiera &Meddelande - - - Reset all verify message fields - Rensa alla fält - - - Click "Sign Message" to generate signature - Klicka "Signera Meddelande" för att fÃ¥ en signatur - - - The entered address is invalid. - Den angivna adressen är ogiltig. - - - Please check the address and try again. - Vad god kontrollera adressen och försök igen. - - - The entered address does not refer to a key. - Den angivna adressen refererar inte till en nyckel. - - - Wallet unlock was cancelled. - UpplÃ¥sningen av plÃ¥nboken avbröts. - - - Private key for the entered address is not available. - Privata nyckel för den angivna adressen är inte tillgänglig. - - - Message signing failed. - Signeringen av meddelandet misslyckades. - - - Message signed. - Meddelandet är signerat. - - - The signature could not be decoded. - Signaturen kunde inte avkodas. - - - Please check the signature and try again. - Kontrollera signaturen och försök igen. - - - The signature did not match the message digest. - Signaturen matchade inte meddelandesammanfattningen. - - - Message verification failed. - Meddelandet verifikation misslyckades. - - - Message verified. - Meddelandet är verifierad. - - - - SplashScreen - - Bitcoin Core - Bitcoin Kärna - - - The Bitcoin Core developers - Bitcoin Core-utvecklarna - - - [testnet] - [testnet] - - - - TrafficGraphWidget - - KB/s - KB/s - - - - TransactionDesc - - Open until %1 - Öppet till %1 - - - conflicted - konflikterade - - - %1/offline - %1/nerkopplad - - - %1/unconfirmed - %1/obekräftade - - - %1 confirmations - %1 bekräftelser - - - Status - Status - - - , broadcast through %n node(s) - , sänd genom %n nod, sänd genom %n noder - - - Date - Datum - - - Source - Källa - - - Generated - Genererad - - - From - FrÃ¥n - - - To - Till - - - own address - egen adress - - - watch-only - granska-bara - - - label - etikett - - - Credit - Kredit - - - matures in %n more block(s) - mognar om %n fler blockmognar om %n fler block - - - not accepted - inte accepterad - - - Debit - Belasta - - - Total debit - Total skuld - - - Total credit - Total kredit - - - Transaction fee - Transaktionsavgift - - - Net amount - Nettobelopp - - - Message - Meddelande - - - Comment - Kommentar - - - Transaction ID - Transaktions-ID - - - Merchant - Handlare - - - Generated coins must mature %1 blocks before they can be spent. When you generated this block, it was broadcast to the network to be added to the block chain. If it fails to get into the chain, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - Genererade mynt mÃ¥ste vänta %1 block innan de kan användas. När du skapade detta block sändes det till nätverket för att läggas till i blockkedjan. Om blocket inte kommer in i kedjan kommer dess status att ändras till "accepteras inte" och kommer ej att gÃ¥ att spendera. Detta kan ibland hända om en annan nod genererar ett block nästan samtidigt som dig. - - - Debug information - Debug information - - - Transaction - Transaktion - - - Inputs - Inputs - - - Amount - Mängd - - - true - sant - - - false - falsk - - - , has not been successfully broadcast yet - , har inte lyckats skickas ännu - - - Open for %n more block(s) - Öppet för %n mer blockÖppet för %n mer block - - - unknown - okänd - - - - TransactionDescDialog - - Transaction details - Transaktionsdetaljer - - - This pane shows a detailed description of the transaction - Den här panelen visar en detaljerad beskrivning av transaktionen - - - - TransactionTableModel - - Date - Datum - - - Type - Typ - - - Immature (%1 confirmations, will be available after %2) - Omogen (%1 konfirmeringar, blir tillgänglig efter %2) - - - Open for %n more block(s) - Öppet för %n mer blockÖppet för %n mer block - - - Open until %1 - Öppet till %1 - - - Confirmed (%1 confirmations) - Bekräftad (%1 bekräftelser) - - - This block was not received by any other nodes and will probably not be accepted! - Det här blocket togs inte emot av nÃ¥gra andra noder och kommer antagligen inte att bli godkänt. - - - Generated but not accepted - Genererad men inte accepterad - - - Offline - Nerkopplad - - - Label - Etikett - - - Unconfirmed - Okonfirmerade - - - Confirming (%1 of %2 recommended confirmations) - Konfirmerar (%1 of %2 konfirmeringar) - - - Conflicted - Konflikterade - - - Received with - Mottagen med - - - Received from - Mottaget frÃ¥n - - - Sent to - Skickad till - - - Payment to yourself - Betalning till dig själv - - - Mined - Genererade - - - watch-only - granska-bara - - - (n/a) - (n/a) - - - Transaction status. Hover over this field to show number of confirmations. - Transaktionsstatus. HÃ¥ll muspekaren över för att se antal bekräftelser. - - - Date and time that the transaction was received. - Tidpunkt dÃ¥ transaktionen mottogs. - - - Type of transaction. - Transaktionstyp. - - - Whether or not a watch-only address is involved in this transaction. - Anger om granska-bara--adresser är involverade i denna transaktion. - - - User-defined intent/purpose of the transaction. - Användardefinierat syfte/ändamÃ¥l för transaktionen. - - - Amount removed from or added to balance. - Belopp draget eller tillagt till balans. - - - - TransactionView - - All - Alla - - - Today - Idag - - - This week - Denna vecka - - - This month - Denna mÃ¥nad - - - Last month - FöregÃ¥ende mÃ¥nad - - - This year - Det här Ã¥ret - - - Range... - Period... - - - Received with - Mottagen med - - - Sent to - Skickad till - - - To yourself - Till dig själv - - - Mined - Genererade - - - Other - Övriga - - - Enter address or label to search - Sök efter adress eller etikett - - - Min amount - Minsta mängd - - - Copy address - Kopiera adress - - - Copy label - Kopiera etikett - - - Copy amount - Kopiera belopp - - - Copy transaction ID - Kopiera transaktions ID - - - Edit label - Ändra etikett - - - Show transaction details - Visa transaktionsdetaljer - - - Export Transaction History - Exportera Transaktionshistoriken - - - Watch-only - Granska-bara - - - Exporting Failed - Exporteringen misslyckades - - - There was an error trying to save the transaction history to %1. - Det inträffade ett fel när transaktionshistoriken skulle sparas till %1. - - - Exporting Successful - Exporteringen lyckades - - - The transaction history was successfully saved to %1. - Transaktionshistoriken sparades utan problem till %1. - - - Comma separated file (*.csv) - Kommaseparerad fil (*.csv) - - - Confirmed - Bekräftad - - - Date - Datum - - - Type - Typ - - - Label - Etikett - - - Address - Adress - - - ID - ID - - - Range: - Intervall: - - - to - till - - - - UnitDisplayStatusBarControl - - Unit to show amounts in. Click to select another unit. - &Enhet att visa belopp i. Klicka för att välja annan enhet. - - - - WalletFrame - - No wallet has been loaded. - Ingen plÃ¥nbok har laddats in. - - - - WalletModel - - Send Coins - Skicka pengar - - - - WalletView - - &Export - &Exportera - - - Export the data in the current tab to a file - Exportera informationen i den nuvarande fliken till en fil - - - Backup Wallet - Säkerhetskopiera PlÃ¥nbok - - - Wallet Data (*.dat) - PlÃ¥nboks-data (*.dat) - - - Backup Failed - Säkerhetskopiering misslyckades - - - There was an error trying to save the wallet data to %1. - Det inträffade ett fel när plÃ¥nbokens data skulle sparas till %1. - - - The wallet data was successfully saved to %1. - PlÃ¥nbokens data sparades utan problem till %1. - - - Backup Successful - Säkerhetskopiering lyckades - - - - bitcoin-core - - Options: - Inställningar: - - - Specify data directory - Ange katalog för data - - - Connect to a node to retrieve peer addresses, and disconnect - Anslut till en nod för att hämta klientadresser, och koppla frÃ¥n - - - Specify your own public address - Ange din egen publika adress - - - Accept command line and JSON-RPC commands - TillÃ¥t kommandon frÃ¥n kommandotolken och JSON-RPC-kommandon - - - Run in the background as a daemon and accept commands - Kör i bakgrunden som tjänst och acceptera kommandon - - - Use the test network - Använd testnätverket - - - Accept connections from outside (default: 1 if no -proxy or -connect) - Acceptera anslutningar utifrÃ¥n (förvalt: 1 om ingen -proxy eller -connect) - - - Bind to given address and always listen on it. Use [host]:port notation for IPv6 - Bind till given adress och lyssna alltid pÃ¥ den. Använd [värd]:port notation för IPv6 - - - Delete all wallet transactions and only recover those parts of the blockchain through -rescan on startup - Ta bort alla plÃ¥nbokstransaktioner och Ã¥terskapa bara dom som är en del av blockkedjan genom att ange -rescan vid uppstart - - - Distributed under the MIT software license, see the accompanying file COPYING or <http://www.opensource.org/licenses/mit-license.php>. - Distribuerad under MIT mjukvarulicens, se den bifogade filen COPYING eller <http://www.opensource.org/licenses/mit-license.php>. - - - Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) - Exekvera kommando när en plÃ¥nbokstransaktion ändras (%s i cmd är ersatt av TxID) - - - Maximum total fees to use in a single wallet transaction; setting this too low may abort large transactions (default: %s) - Maximal total avgift att använda i en plÃ¥nbokstransaktion. Sätts denna för lÃ¥gt kommer stora transaktioner att avbrytas (förvalt: %s) - - - Reduce storage requirements by pruning (deleting) old blocks. This mode disables wallet support and is incompatible with -txindex. Warning: Reverting this setting requires re-downloading the entire blockchain. (default: 0 = disable pruning blocks, >%u = target size in MiB to use for block files) - Reducera lagringsbehovet genom att beskära (ta bort) gamla block. Detta läge avaktiverar plÃ¥nbokssupport och är inkompatibel med -txindex. Varning: Ändras denna inställning mÃ¥ste hela blockkedjan laddas ner igen. 0 = avaktivera beskärning av blocks, >%u = mÃ¥lstorlek i MiB att använda för blockfiler) - - - Set the number of script verification threads (%u to %d, 0 = auto, <0 = leave that many cores free, default: %d) - Ange antalet skriptkontrolltrÃ¥dar (%u till %d, 0 = auto, <0 = lämna sÃ¥ mÃ¥nga kärnor lediga, förval: %d) - - - This is a pre-release test build - use at your own risk - do not use for mining or merchant applications - Detta är ett förhands testbygge - använd pÃ¥ egen risk - använd inte för mining eller handels applikationer - - - Unable to bind to %s on this computer. Bitcoin Core is probably already running. - Det gÃ¥r inte att binda till %s pÃ¥ den här datorn. Bitcoin Core är förmodligen redan igÃ¥ng. - - - WARNING: abnormally high number of blocks generated, %d blocks received in the last %d hours (%d expected) - Varning: Onormalt antal block block genererade. %d block mottagna senaste %d timmarna (%d förväntade) - - - WARNING: check your network connection, %d blocks received in the last %d hours (%d expected) - Varning: Kontrollera din närverksanslutning. %d block mottagna senaste %d timmarna, (%d förväntade) - - - Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. - Varning: -paytxfee är satt väldigt hög! Detta är avgiften du kommer betala för varje transaktion. - - - Warning: The network does not appear to fully agree! Some miners appear to be experiencing issues. - Varning: Nätverket verkar inte vara helt överens! NÃ¥gra miners verkar ha problem. - - - Warning: We do not appear to fully agree with our peers! You may need to upgrade, or other nodes may need to upgrade. - Varning: Vi verkar inte helt överens med vÃ¥ra peers! Du kan behöva uppgradera, eller andra noder kan behöva uppgradera. - - - Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. - Varning: fel vid läsning av wallet.dat! Alla nycklar lästes korrekt, men transaktionsdatan eller adressbokens poster kanske saknas eller är felaktiga. - - - 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. - Varning: wallet.dat korrupt, datan har räddats! Den ursprungliga wallet.dat har sparas som wallet.{timestamp}.bak i %s; om ditt saldo eller transaktioner är felaktiga ska du Ã¥terställa frÃ¥n en säkerhetskopia. - - - Whitelist peers connecting from the given netmask or IP address. Can be specified multiple times. - Vitlista klienter som ansluter frÃ¥n angivna nätmasker eller IP-adresser. Kan specificeras flera gÃ¥nger. - - - (default: 1) - (förvalt: 1) - - - <category> can be: - <category> Kan vara: - - - Attempt to recover private keys from a corrupt wallet.dat - Försök att rädda de privata nycklarna frÃ¥n en korrupt wallet.dat - - - Block creation options: - Block skapande inställningar: - - - Connect only to the specified node(s) - Koppla enbart upp till den/de specificerade noden/noder - - - Connection options: - Anslutningsoptioner: - - - Corrupted block database detected - Korrupt blockdatabas har upptäckts - - - Debugging/Testing options: - Avlusnings/Testnings optioner: - - - Do not load the wallet and disable wallet RPC calls - Ladda inte plÃ¥nboken och stäng av RPC-anrop till plÃ¥nboken - - - Do you want to rebuild the block database now? - Vill du bygga om blockdatabasen nu? - - - Error initializing block database - Fel vid initiering av blockdatabasen - - - Error initializing wallet database environment %s! - Fel vid initiering av plÃ¥nbokens databasmiljö %s! - - - Error loading block database - Fel vid inläsning av blockdatabasen - - - Error opening block database - Fel vid öppning av blockdatabasen - - - Error: Disk space is low! - Fel: HÃ¥rddiskutrymme är lÃ¥gt! - - - Failed to listen on any port. Use -listen=0 if you want this. - Misslyckades att lyssna pÃ¥ nÃ¥gon port. Använd -listen=0 om du vill detta. - - - If <category> is not supplied, output all debugging information. - Om <category> inte anges, skrivs all avlusningsinformation ut. - - - Importing... - Importerar... - - - Incorrect or no genesis block found. Wrong datadir for network? - Felaktig eller inget genesisblock hittades. Fel datadir för nätverket? - - - Invalid -onion address: '%s' - Ogiltig -onion adress:'%s' - - - Not enough file descriptors available. - Inte tillräckligt med filbeskrivningar tillgängliga. - - - Only connect to nodes in network <net> (ipv4, ipv6 or onion) - Anslut enbart till noder i nätverket <net> (IPv4, IPv6 eller onion) - - - Prune cannot be configured with a negative value. - Beskärning kan inte konfigureras med ett negativt värde. - - - Prune mode is incompatible with -txindex. - Beskärningsläge är inkompatibel med -txindex. - - - Set database cache size in megabytes (%d to %d, default: %d) - Sätt databasens cachestorlek i megabyte (%d till %d, förvalt: %d) - - - Set maximum block size in bytes (default: %d) - Sätt maximal blockstorlek i byte (förvalt: %d) - - - Specify wallet file (within data directory) - Ange plÃ¥nboksfil (inom datakatalogen) - - - Use UPnP to map the listening port (default: %u) - Använd UPnP för att mappa den lyssnande porten (förvalt: %u) - - - Verifying blocks... - Verifierar block... - - - Verifying wallet... - Verifierar plÃ¥nboken... - - - Wallet %s resides outside data directory %s - PlÃ¥nbok %s ligger utanför datakatalogen %s - - - Wallet options: - PlÃ¥nboksinställningar: - - - Warning: This version is obsolete; upgrade required! - Varning: Denna version är förÃ¥ldrad; uppgradering krävs! - - - You need to rebuild the database using -reindex to change -txindex - Du mÃ¥ste Ã¥terskapa databasen med -reindex för att ändra -txindex - - - Imports blocks from external blk000??.dat file - Importerar block frÃ¥n extern blk000??.dat fil - - - 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 - TillÃ¥t JSON-RPC anslutningar frÃ¥n specifik kalla. TillÃ¥tet för <ip> är enkel IP (t.ex 1.2.3.4), en nätverk/nätmask (t.ex. 1.2.3.4/255.255.255.0) eller ett nätverk/CIDR (t.ex. 1.2.3.4/24). Denna option kan specificeras flera gÃ¥nger - - - An error occurred while setting up the RPC address %s port %u for listening: %s - Ett fel uppstod vid upprättandet av RPC adress %s port %u för att lyssna: %s - - - Bind to given address and whitelist peers connecting to it. Use [host]:port notation for IPv6 - Bind till given adress och vitlista klienter som ansluter till den. Använd [värd]:port notation för IPv6 - - - Bind to given address to listen for JSON-RPC connections. Use [host]:port notation for IPv6. This option can be specified multiple times (default: bind to all interfaces) - Bind till angiven adress för att lyssna pÃ¥ JSON-RPC anslutningar. Använd [värd]:port notation for IPv6. Denna option kan specificeras flera gÃ¥nger (förvalt: bind till alla gränssnitt) - - - Cannot obtain a lock on data directory %s. Bitcoin Core is probably already running. - Kan inte lÃ¥sa data-mappen %s. Bitcoin Core körs förmodligen redan. - - - Create new files with system default permissions, instead of umask 077 (only effective with disabled wallet functionality) - Skapa nya filer med systemets förvalda rättigheter, istället för umask 077 (bara effektivt med avaktiverad plÃ¥nboks funktionalitet) - - - Discover own IP addresses (default: 1 when listening and no -externalip or -proxy) - Upptäck egna IP adresser (standard: 1 vid lyssning ingen -externalip eller -proxy) - - - Error: Listening for incoming connections failed (listen returned error %s) - Fel: Avlyssning av inkommande anslutningar misslyckades (Avlyssningen returnerade felkod %s) - - - Error: Unsupported argument -socks found. Setting SOCKS version isn't possible anymore, only SOCKS5 proxies are supported. - Fel: Argumentet -socks stöds inte. Att sätta SOCKS version är inte möjligt längre. Endast SOCKS5 proxy stöds. - - - Execute command when a relevant alert is received or we see a really long fork (%s in cmd is replaced by message) - Exekvera kommando när ett relevant meddelande är mottagen eller när vi ser en väldigt lÃ¥ng förgrening (%s i cmd är utbytt med ett meddelande) - - - Fees (in BTC/Kb) smaller than this are considered zero fee for relaying (default: %s) - Avgifter (i BTC/Kb) mindre än detta betraktas som nollavgift för vidarebefodran (förvalt: %s) - - - If paytxfee is not set, include enough fee so transactions begin confirmation on average within n blocks (default: %u) - Om paytxfee inte är satt, inkludera tillräcklig avgift sÃ¥ att transaktionen börjar att konfirmeras inom n blocks (förvalt: %u) - - - Invalid amount for -maxtxfee=<amount>: '%s' (must be at least the minrelay fee of %s to prevent stuck transactions) - OtillÃ¥tet belopp för -maxtxfee=<belopp>: '%s' (mÃ¥ste Ã¥tminstÃ¥nde vara minrelay avgift %s för att förhindra stoppade transkationer) - - - Maximum size of data in data carrier transactions we relay and mine (default: %u) - Maximal storlek pÃ¥ data i databärartransaktioner som vi reläar och bryter (förvalt: %u) - - - Prune configured below the minimum of %d MB. Please use a higher number. - Beskärning konfigurerad under miniminivÃ¥n %d MB. Var vänlig använd ett högre värde. - - - Query for peer addresses via DNS lookup, if low on addresses (default: 1 unless -connect) - Sök efter klientadresser med DNS sökningen, om det finns otillräckligt med adresser (förvalt: 1 om inte -connect) - - - Randomize credentials for every proxy connection. This enables Tor stream isolation (default: %u) - Slumpa autentiseringen för varje proxyanslutning. Detta möjliggör Tor ström-isolering (förvalt: %u) - - - Set maximum size of high-priority/low-fee transactions in bytes (default: %d) - Sätt den maximala storleken av hög-prioriterade/lÃ¥g-avgifts transaktioner i byte (förvalt: %d) - - - The transaction amount is too small to send after the fee has been deducted - Transaktionen är för liten att skicka efter det att avgiften har dragits - - - 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. - Denna produkten innehÃ¥ller mjukvara utvecklad av OpenSSL Project för användning i OpenSSL Toolkit <https://www.openssl.org/> och kryptografisk mjukvara utvecklad av Eric Young samt UPnP-mjukvara skriven av Thomas Bernard. - - - 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 - - För att använda bitconid,eller -server optionen till bitcoin-qt sÃ¥ mäste du sätta ett rpclösensord i konfigurationsfilen: -%s -Det är rekommenderat att använda följande slumpade lösenord: -rpcuser=bitcoinrpc -rpcpassword=%s -(du behöver inte komma ihÃ¥g lösenordet) -Användarnamnet och lösenordet FÃ…R INTE vara detsamma. -Om filen inte existerar, skapa den med enbart ägarläsbara filrättigheter. -Det är ocksÃ¥ rekommenderat att sätta alertnotify sÃ¥ du meddelas om problem; -till exempel: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com - - - - Warning: -maxtxfee is set very high! Fees this large could be paid on a single transaction. - Varning: -maxtxfee är satt väldigt hög! SÃ¥ höga avgifter kan betalas för en enstaka transaktion. - - - Warning: Please check that your computer's date and time are correct! If your clock is wrong Bitcoin Core will not work properly. - Varning: Vänligen kolla sÃ¥ att din dators datum och tid är korrekt! Om din klocka gÃ¥r fel kommer Bitcoin Core inte att fungera korrekt. - - - 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 - Vitlistade klienter kan inte bli DoS bannade och deras transaktioner reläas alltid, även om dom redan är i mempoolen, användbart för t.ex en gateway - - - You need to rebuild the database using -reindex to go back to unpruned mode. This will redownload the entire blockchain - Du mÃ¥ste bygga om databasen genom att använda -reindex för att Ã¥tergÃ¥ till obeskärt läge. Detta kommer att ladda ner hela blockkedjan. - - - (default: %u) - (förvalt: %u) - - - Accept public REST requests (default: %u) - Acceptera publika REST förfrÃ¥gningar (förvalt: %u) - - - Activating best chain... - Aktiverar bästa kedjan... - - - Can't run with a wallet in prune mode. - Kan inte köra med en plÃ¥nbok i beskärningsläge. - - - Cannot resolve -whitebind address: '%s' - Kan inte matcha -whitebind adress: '%s' - - - Choose data directory on startup (default: 0) - Välj datakatalog vid uppstart (förvalt: 0) - - - Connect through SOCKS5 proxy - Anslut genom SOCKS5 proxy - - - Copyright (C) 2009-%i The Bitcoin Core Developers - Copyright (C) 2009-%i Bitcoin Core Utvecklarna - - - Could not parse -rpcbind value %s as network address - Kunde inte tolka -rpcbind värdet %s som en nätverksadress - - - Error loading wallet.dat: Wallet requires newer version of Bitcoin Core - Fel vid inläsningen av wallet.dat: Kontofilen kräver en senare version av Bitcoin Core - - - Error reading from database, shutting down. - Fel vid läsning frÃ¥n databas, avslutar. - - - Error: A fatal internal error occurred, see debug.log for details - Fel: Ett kritiskt internt fel uppstod, se debug.log för detaljer - - - Error: Unsupported argument -tor found, use -onion. - Fel: Argumentet -tor stöds inte, använd -onion. - - - Fee (in BTC/kB) to add to transactions you send (default: %s) - Avgift (i BTC/Kb) att lägga till pÃ¥ transaktioner du skickar (förvalt: %s) - - - Information - Information - - - Initialization sanity check failed. Bitcoin Core is shutting down. - Initieringschecken fallerade. Bitcoin Core stängs av... - - - Invalid amount for -maxtxfee=<amount>: '%s' - OtillÃ¥tet belopp för -maxtxfee=<belopp>: '%s' - - - Invalid amount for -minrelaytxfee=<amount>: '%s' - Ogiltigt belopp för -minrelaytxfee=<belopp>: '%s' - - - Invalid amount for -mintxfee=<amount>: '%s' - Ogiltigt belopp för -mintxfee=<belopp>: '%s' - - - Invalid amount for -paytxfee=<amount>: '%s' (must be at least %s) - Ogiltigt belopp för -paytxfee=<belopp>:'%s' (mÃ¥ste vara minst %s) - - - Invalid netmask specified in -whitelist: '%s' - Ogiltig nätmask angiven i -whitelist: '%s' - - - Keep at most <n> unconnectable transactions in memory (default: %u) - HÃ¥ll som mest <n> oanslutningsbara transaktioner i minnet (förvalt: %u) - - - Need to specify a port with -whitebind: '%s' - Port mÃ¥ste anges med -whitelist: '%s' - - - Node relay options: - Nodreläoptioner: - - - Pruning blockstore... - Rensar blockstore... - - - RPC SSL options: (see the Bitcoin Wiki for SSL setup instructions) - RPC SSL optioner: (se Bitcoin Wiki för SSL inställningsinstruktioner) - - - RPC server options: - RPC serveroptioner: - - - RPC support for HTTP persistent connections (default: %d) - RPC support för HTTP permanent anslutning (förvalt: %d) - - - Rebuild block chain index from current blk000??.dat files on startup - Ã…terskapa blockkedjans index frÃ¥n nuvarande blk000??.dat filer under uppstarten - - - Receive and display P2P network alerts (default: %u) - Mottag och visa P2P nätverksvarningar (förvalt: %u) - - - Send trace/debug info to console instead of debug.log file - Skicka trace-/debuginformation till terminalen istället för till debug.log - - - Send transactions as zero-fee transactions if possible (default: %u) - Sänd transaktioner som nollavgiftstransaktioner om möjligt (förvalt: %u) - - - Set SSL root certificates for payment request (default: -system-) - Sätt SSL root-certifikat för betalningsbegäran (förvalt: -system-) - - - Set language, for example "de_DE" (default: system locale) - Ändra sprÃ¥k, till exempel "de_DE" (förvalt: systemets sprÃ¥k) - - - Show all debugging options (usage: --help -help-debug) - Visa alla avlusningsoptioner (använd: --help -help-debug) - - - Show splash screen on startup (default: 1) - Visa startbilden vid uppstart (förvalt: 1) - - - Shrink debug.log file on client startup (default: 1 when no -debug) - Krymp debug.log filen vid klient start (förvalt: 1 vid ingen -debug) - - - Signing transaction failed - Signering av transaktion misslyckades - - - Start minimized - Starta som minimerad - - - The transaction amount is too small to pay the fee - Transaktionen är för liten för att betala avgiften - - - This is experimental software. - Detta är experimentmjukvara. - - - Transaction amount too small - Transaktions belopp för liten - - - Transaction amounts must be positive - Transaktionens belopp mÃ¥ste vara positiva - - - Transaction too large for fee policy - Transaktionen är för stor för avgiftspolicyn - - - Transaction too large - Transaktionen är för stor - - - UI Options: - UI Alternativ: - - - Unable to bind to %s on this computer (bind returned error %s) - Det gÃ¥r inte att binda till %s pÃ¥ den här datorn (bind returnerade felmeddelande %s) - - - Use UPnP to map the listening port (default: 1 when listening) - Använd UPnP för att mappa den lyssnande porten (förvalt: 1 under lyssning) - - - Username for JSON-RPC connections - Användarnamn för JSON-RPC-anslutningar - - - Wallet needed to be rewritten: restart Bitcoin Core to complete - Kontot behöver sparas om: Starta om Bitcoin Core för att fullfölja - - - Warning - Varning - - - Warning: Unsupported argument -benchmark ignored, use -debug=bench. - Varning: Argument -benchmark stöds inte och ignoreras, använd -debug=bench. - - - Warning: Unsupported argument -debugnet ignored, use -debug=net. - Varning: Argument -debugnet stöds inte och ignorerad, använd -debug=net. - - - Zapping all transactions from wallet... - Töm plÃ¥nboken pÃ¥ alla transaktioner... - - - on startup - under uppstarten - - - wallet.dat corrupt, salvage failed - wallet.dat korrupt, räddning misslyckades - - - Password for JSON-RPC connections - Lösenord för JSON-RPC-anslutningar - - - Execute command when the best block changes (%s in cmd is replaced by block hash) - Exekvera kommando när det bästa blocket ändras (%s i cmd är utbytt av blockhash) - - - Upgrade wallet to latest format - Uppgradera plÃ¥nboken till senaste formatet - - - Rescan the block chain for missing wallet transactions - Sök i blockkedjan efter saknade plÃ¥nboks transaktioner - - - Use OpenSSL (https) for JSON-RPC connections - Använd OpenSSL (https) för JSON-RPC-anslutningar - - - This help message - Det här hjälp medelandet - - - Allow DNS lookups for -addnode, -seednode and -connect - TillÃ¥t DNS-sökningar för -addnode, -seednode och -connect - - - Loading addresses... - Laddar adresser... - - - Error loading wallet.dat: Wallet corrupted - Fel vid inläsningen av wallet.dat: PlÃ¥nboken är skadad - - - (1 = keep tx meta data e.g. account owner and payment request information, 2 = drop tx meta data) - (1 = spara tx metadata t.ex. kontoägare och betalningsbegäransinformation, 2 = släng tx metadata) - - - How thorough the block verification of -checkblocks is (0-4, default: %u) - Hur grundlig blockverifikationen vid -checkblocks är (0-4, förvalt: %u) - - - Maintain a full transaction index, used by the getrawtransaction rpc call (default: %u) - UpprätthÃ¥ll ett fullständigt transaktionsindex, som används av getrawtransaction rpc-anrop (förval: %u) - - - Number of seconds to keep misbehaving peers from reconnecting (default: %u) - Antal sekunder att hindra klienter som missköter sig frÃ¥n att ansluta (förvalt: %u) - - - Output debugging information (default: %u, supplying <category> is optional) - Skriv ut avlusningsinformation (förvalt: %u, att ange <category> är frivilligt) - - - Use separate SOCKS5 proxy to reach peers via Tor hidden services (default: %s) - Använd separat SOCKS5 proxy för att nÃ¥ kollegor via dolda tjänster i Tor (förvalt: -%s) - - - (default: %s) - (förvalt: %s) - - - Acceptable ciphers (default: %s) - Accepterbara chiffer (förvalt: %s) - - - Always query for peer addresses via DNS lookup (default: %u) - Sök alltid efter klientadresser med DNS sökningen (förvalt: %u) - - - Error loading wallet.dat - Fel vid inläsning av plÃ¥nboksfilen wallet.dat - - - Generate coins (default: %u) - Generera mynt (förvalt: %u) - - - How many blocks to check at startup (default: %u, 0 = all) - Hur mÃ¥nga block att kontrollera vid uppstart (förvalt: %u, 0 = alla) - - - Include IP addresses in debug output (default: %u) - Inkludera IP-adresser i debugutskrift (förvalt: %u) - - - Invalid -proxy address: '%s' - Ogiltig -proxy adress: '%s' - - - Listen for JSON-RPC connections on <port> (default: %u or testnet: %u) - Lyssna pÃ¥ JSON-RPC-anslutningar pÃ¥ <port> (förval: %u eller testnet: %u) - - - Listen for connections on <port> (default: %u or testnet: %u) - Lyssna efter anslutningar pÃ¥ <port> (förvalt: %u eller testnet: %u) - - - Maintain at most <n> connections to peers (default: %u) - Ha som mest <n> anslutningar till andra klienter (förvalt: %u) - - - Make the wallet broadcast transactions - Gör sÃ¥ att plÃ¥nboken sänder ut transaktionerna - - - Maximum per-connection receive buffer, <n>*1000 bytes (default: %u) - Maximal mottagningsbuffert per anslutning, <n>*1000 byte (förvalt: %u) - - - Maximum per-connection send buffer, <n>*1000 bytes (default: %u) - Maximal sändningsbuffert per anslutning, <n>*1000 byte (förvalt: %u) - - - Prepend debug output with timestamp (default: %u) - Skriv ut tidsstämpel i avlusningsinformationen (förvalt: %u) - - - Relay and mine data carrier transactions (default: %u) - Reläa och bearbeta databärartransaktioner (förvalt: %u) - - - Relay non-P2SH multisig (default: %u) - Reläa icke P2SH multisig (förvalt: %u) - - - Server certificate file (default: %s) - Serverns certifikatfil (förvalt: %s) - - - Server private key (default: %s) - Serverns privata nyckel (förvalt: %s) - - - Set key pool size to <n> (default: %u) - Sätt storleken pÃ¥ nyckelpoolen till <n> (förvalt: %u) - - - Set minimum block size in bytes (default: %u) - Sätt minsta blockstorlek i byte (standard: %u) - - - Set the number of threads to service RPC calls (default: %d) - Ange antalet trÃ¥dar för att hantera RPC anrop (förvalt: %d) - - - Specify configuration file (default: %s) - Ange konfigurationsfil (förvalt: %s) - - - Specify connection timeout in milliseconds (minimum: 1, default: %d) - Ange timeout för uppkoppling i millisekunder (minimum:1, förvalt: %d) - - - Specify pid file (default: %s) - Ange pid-fil (förvalt: %s) - - - Spend unconfirmed change when sending transactions (default: %u) - Spendera okonfirmerad växel när transaktioner sänds (förvalt: %u) - - - Threshold for disconnecting misbehaving peers (default: %u) - Tröskelvärde för att koppla ifrÃ¥n klienter som missköter sig (förvalt: %u) - - - Unknown network specified in -onlynet: '%s' - Okänt nätverk som anges i -onlynet: '%s' - - - Cannot resolve -bind address: '%s' - Kan inte matcha -bind adress: '%s' - - - Cannot resolve -externalip address: '%s' - Kan inte matcha -externalip adress: '%s' - - - Invalid amount for -paytxfee=<amount>: '%s' - Ogiltigt belopp för -paytxfee=<belopp>:'%s' - - - Insufficient funds - Otillräckligt med bitcoins - - - Loading block index... - Laddar blockindex... - - - Add a node to connect to and attempt to keep the connection open - Lägg till en nod att koppla upp mot och försök att hÃ¥lla anslutningen öppen - - - Loading wallet... - Laddar plÃ¥nbok... - - - Cannot downgrade wallet - Kan inte nedgradera plÃ¥nboken - - - Cannot write default address - Kan inte skriva standardadress - - - Rescanning... - Söker igen... - - - Done loading - Klar med laddning - - - Error - Fel - - - \ No newline at end of file diff --git a/src/qt/locale/bitcoin_th_TH.ts b/src/qt/locale/bitcoin_th_TH.ts deleted file mode 100644 index 098050296..000000000 --- a/src/qt/locale/bitcoin_th_TH.ts +++ /dev/null @@ -1,386 +0,0 @@ - - - AddressBookPage - - Create a new address - สร้างที่อยู่ใหม่ - - - Copy the currently selected address to the system clipboard - คัดลอà¸à¸—ี่อยู่ที่ถูà¸à¹€à¸¥à¸·à¸­à¸à¹„ปยัง คลิปบอร์ดของระบบ - - - &Delete - &ลบ - - - Comma separated file (*.csv) - คั่นไฟล์ด้วยเครื่องหมายจุลภาค (*.csv) - - - - AddressTableModel - - Label - ชื่อ - - - Address - ที่อยู่ - - - (no label) - (ไม่มีชื่อ) - - - - AskPassphraseDialog - - Enter passphrase - ใส่รหัสผ่าน - - - New passphrase - รหัสผา่นใหม่ - - - Repeat new passphrase - à¸à¸£à¸¸à¸“าà¸à¸£à¸­à¸à¸£à¸«à¸±à¸ªà¸œà¹ˆà¸²à¸™à¹ƒà¸«à¸¡à¹ˆà¸­à¸µà¸à¸„รั้งหนึ่ง - - - Encrypt wallet - à¸à¸£à¸°à¹€à¸›à¹‹à¸²à¸ªà¸•างค์ที่เข้ารหัส - - - This operation needs your wallet passphrase to unlock the wallet. - à¸à¸²à¸£à¸”ำเนินà¸à¸²à¸£à¸™à¸µà¹‰à¸•้องมีรหัสผ่านà¸à¸£à¸°à¹€à¸›à¹‹à¸²à¹€à¸‡à¸´à¸™à¸‚องคุณเพื่อปลดล็อคà¸à¸£à¸°à¹€à¸›à¹‹à¸²à¹€à¸‡à¸´à¸™ - - - Unlock wallet - เปิดà¸à¸£à¸°à¹€à¸›à¹‹à¸²à¸ªà¸•างค์ - - - This operation needs your wallet passphrase to decrypt the wallet. - à¸à¸²à¸£à¸”ำเนินà¸à¸²à¸£à¸™à¸µà¹‰à¸•้องมีรหัสผ่านà¸à¸£à¸°à¹€à¸›à¹‹à¸²à¹€à¸‡à¸´à¸™à¸‚องคุณในà¸à¸²à¸£à¸–อดรหัสà¸à¸£à¸°à¹€à¸›à¹‹à¸²à¹€à¸‡à¸´à¸™ - - - Decrypt wallet - ถอดรหัสà¸à¸£à¸°à¹€à¸›à¹‹à¸²à¸ªà¸•างค์ - - - Change passphrase - เปลี่ยนรหัสผ่าน - - - Confirm wallet encryption - ยืนยันà¸à¸²à¸£à¹€à¸‚้ารหัสà¸à¸£à¸°à¹€à¸›à¹‹à¸²à¸ªà¸•างค์ - - - Wallet encrypted - à¸à¸£à¸°à¹€à¸›à¹‹à¸²à¸ªà¸•างค์ถูà¸à¹€à¸‚้ารหัสเรียบร้อยà¹à¸¥à¹‰à¸§ - - - Wallet encryption failed - à¸à¸²à¸£à¹€à¸‚้ารหัสà¸à¸£à¸°à¹€à¸›à¹‹à¸²à¸ªà¸•างค์ผิดพลาด - - - Wallet encryption failed due to an internal error. Your wallet was not encrypted. - à¸à¸£à¸°à¹€à¸›à¹‹à¸²à¹€à¸‡à¸´à¸™à¹€à¸‚้ารหัสล้มเหลวเนื่องจาà¸à¸‚้อผิดพลาดภายใน à¸à¸£à¸°à¹€à¸›à¹‹à¸²à¹€à¸‡à¸´à¸™à¸‚องคุณไม่ได้เข้ารหัส - - - The supplied passphrases do not match. - รหัสผ่านที่คุณà¸à¸£à¸­à¸à¹„ม่ตรงà¸à¸±à¸™ - - - Wallet unlock failed - ปลดล็อคà¸à¸£à¸°à¹€à¸›à¹‹à¸²à¹€à¸‡à¸´à¸™à¸¥à¹‰à¸¡à¹€à¸«à¸¥à¸§ - - - The passphrase entered for the wallet decryption was incorrect. - ป้อนรหัสผ่านสำหรับà¸à¸²à¸£à¸–อดรหัสà¸à¸£à¸°à¹€à¸›à¹‹à¸²à¹€à¸‡à¸´à¸™à¹„ม่ถูà¸à¸•้อง - - - Wallet decryption failed - ถอดรหัสà¸à¸£à¸°à¹€à¸›à¹‹à¸²à¹€à¸‡à¸´à¸™à¸¥à¹‰à¸¡à¹€à¸«à¸¥à¸§ - - - - BitcoinGUI - - Synchronizing with network... - à¸à¸³à¸¥à¸±à¸‡à¸—ำข้อมูลให้ตรงà¸à¸±à¸™à¸à¸±à¸šà¹€à¸„รือข่าย ... - - - &Overview - &ภาพรวม - - - Show general overview of wallet - à¹à¸ªà¸”งภาพรวมทั่วไปของà¸à¸£à¸°à¹€à¸›à¹‹à¸²à¹€à¸‡à¸´à¸™ - - - &Transactions - &à¸à¸²à¸£à¸—ำรายà¸à¸²à¸£ - - - Browse transaction history - เรียà¸à¸”ูประวัติà¸à¸²à¸£à¸—ำธุรà¸à¸£à¸£à¸¡ - - - Quit application - ออà¸à¸ˆà¸²à¸à¹‚ปรà¹à¸à¸£à¸¡ - - - &Options... - &ตัวเลือà¸... - - - Change the passphrase used for wallet encryption - เปลี่ยนรหัสผ่านที่ใช้สำหรับà¸à¸²à¸£à¹€à¸‚้ารหัสà¸à¸£à¸°à¹€à¸›à¹‹à¸²à¹€à¸‡à¸´à¸™ - - - &File - &ไฟล์ - - - &Settings - &à¸à¸²à¸£à¸•ั้งค่า - - - &Help - &ช่วยเหลือ - - - Tabs toolbar - à¹à¸–บเครื่องมือ - - - %n active connection(s) to Bitcoin network - %n ที่ใช้งานà¸à¸²à¸£à¹€à¸Šà¸·à¹ˆà¸­à¸¡à¸•่อà¸à¸±à¸šà¹€à¸„รือข่าย Bitcoin - - - Up to date - ทันสมัย - - - Catching up... - จับได้... - - - Sent transaction - รายà¸à¸²à¸£à¸—ี่ส่ง - - - Incoming transaction - à¸à¸²à¸£à¸—ำรายà¸à¸²à¸£à¸‚าเข้า - - - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - ระเป๋าเงินถูภ<b>เข้ารหัส</b> à¹à¸¥à¸°à¹ƒà¸™à¸‚ณะนี้ <b>ปลดล็อคà¹à¸¥à¹‰à¸§</b> - - - Wallet is <b>encrypted</b> and currently <b>locked</b> - à¸à¸£à¸°à¹€à¸›à¹‹à¸²à¹€à¸‡à¸´à¸™à¸–ูภ<b>เข้ารหัส</b> à¹à¸¥à¸°à¹ƒà¸™à¸›à¸±à¸ˆà¸ˆà¸¸à¸šà¸±à¸™ <b>ล็อค </b> - - - - ClientModel - - - CoinControlDialog - - (no label) - (ไม่มีชื่อ) - - - - EditAddressDialog - - Edit Address - à¹à¸à¹‰à¹„ขที่อยู่ - - - &Label - &ชื่อ - - - &Address - &ที่อยู่ - - - New receiving address - ที่อยู่ผู้รับใหม่ - - - New sending address - ที่อยู่ผู้ส่งใหม่ - - - Edit receiving address - à¹à¸à¹‰à¹„ขที่อยู่ผู้รับ - - - Edit sending address - à¹à¸à¹‰à¹„ขที่อยู่ผู้ส่ง - - - The entered address "%1" is already in the address book. - ป้อนที่อยู่ "%1" ที่มีอยู่à¹à¸¥à¹‰à¸§à¹ƒà¸™à¸ªà¸¡à¸¸à¸”ที่อยู่ - - - Could not unlock wallet. - ไม่สามารถปลดล็อคà¸à¸£à¸°à¹€à¸›à¹‹à¸²à¹€à¸‡à¸´à¸™ - - - New key generation failed. - สร้างà¸à¸¸à¸à¹à¸ˆà¹ƒà¸«à¸¡à¹ˆà¸¥à¹‰à¸¡à¹€à¸«à¸¥à¸§ - - - - FreespaceChecker - - - HelpMessageDialog - - - Intro - - - OpenURIDialog - - - OptionsDialog - - Options - ตัวเลือภ- - - - OverviewPage - - Form - รูป - - - - PaymentServer - - - PeerTableModel - - - QObject - - - QRImageWidget - - - RPCConsole - - - ReceiveCoinsDialog - - - ReceiveRequestDialog - - Address - ที่อยู่ - - - Label - ชื่อ - - - - RecentRequestsTableModel - - Label - ชื่อ - - - (no label) - (ไม่มีชื่อ) - - - - SendCoinsDialog - - Send Coins - ส่งเหรียภ- - - (no label) - (ไม่มีชื่อ) - - - - SendCoinsEntry - - - ShutdownWindow - - - SignVerifyMessageDialog - - - SplashScreen - - [testnet] - [testnet] - - - - TrafficGraphWidget - - - TransactionDesc - - - TransactionDescDialog - - - TransactionTableModel - - Label - ชื่อ - - - - TransactionView - - Today - วันนี้ - - - Comma separated file (*.csv) - คั่นไฟล์ด้วยเครื่องหมายจุลภาค (*.csv) - - - Label - ชื่อ - - - Address - ที่อยู่ - - - - UnitDisplayStatusBarControl - - - WalletFrame - - - WalletModel - - Send Coins - ส่งเหรียภ- - - - WalletView - - - bitcoin-core - - \ No newline at end of file diff --git a/src/qt/locale/bitcoin_tr.ts b/src/qt/locale/bitcoin_tr.ts deleted file mode 100644 index 45be4f7e0..000000000 --- a/src/qt/locale/bitcoin_tr.ts +++ /dev/null @@ -1,3576 +0,0 @@ - - - AddressBookPage - - Right-click to edit address or label - Adres veya etiketi düzenlemek için saÄŸ tıklayınız. - - - Create a new address - Yeni bir adres oluÅŸtur - - - &New - &Yeni - - - Copy the currently selected address to the system clipboard - Seçili adresi panoya kopyala - - - &Copy - &Kopyala - - - C&lose - K&apat - - - &Copy Address - &Adresi Kopyala - - - Delete the currently selected address from the list - Seçili adresi listeden sil - - - Export the data in the current tab to a file - Açık olan sekmedeki verileri bir dosyaya aktar - - - &Export - &Dışa aktar - - - &Delete - &Sil - - - Choose the address to send coins to - Bitcoin yollanacak adresi seç - - - Choose the address to receive coins with - Bitcoin alınacak adresi seç - - - C&hoose - S&eç - - - Sending addresses - &Gönderme adresleri... - - - Receiving addresses - Alım adresleri - - - These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins. - Bunlar ödemeleri göndermek için kullanacağınız Bitcoin adreslerinizdir. Bitcoin yollamadan önce miktarı ve alıcının alım adresini daima kontrol ediniz. - - - These are your Bitcoin addresses for receiving payments. It is recommended to use a new receiving address for each transaction. - Bunlar ödemeleri almak için kullanacağınız Bitcoin adreslerinizdir. Her iÅŸlem için yeni bir alım adresi kullanmanız tavsiye edilir. - - - Copy &Label - &Etiketi kopyala - - - &Edit - &Düzenle - - - Export Address List - Adres listesini dışa aktar - - - Comma separated file (*.csv) - Virgülle ayrılmış deÄŸerler dosyası (*.csv) - - - Exporting Failed - Dışa aktarım baÅŸarısız oldu - - - There was an error trying to save the address list to %1. Please try again. - Adres listesinin %1 konumuna kaydedilmesi sırasında bir hata meydana geldi. Lütfen tekrar deneyin. - - - - AddressTableModel - - Label - Etiket - - - Address - Adres - - - (no label) - (etiket yok) - - - - AskPassphraseDialog - - Passphrase Dialog - Parola diyaloÄŸu - - - Enter passphrase - Parolayı giriniz - - - New passphrase - Yeni parola - - - Repeat new passphrase - Yeni parolayı tekrarlayınız - - - Encrypt wallet - Cüzdanı ÅŸifrele - - - This operation needs your wallet passphrase to unlock the wallet. - Bu iÅŸlem cüzdan kilidini açmak için cüzdan parolanızı gerektirir. - - - Unlock wallet - Cüzdan kilidini aç - - - This operation needs your wallet passphrase to decrypt the wallet. - Bu iÅŸlem cüzdanın ÅŸifrelemesini açmak için cüzdan parolasını gerektirir. - - - Decrypt wallet - Cüzdanın ÅŸifrelemesini aç - - - Change passphrase - Parolayı deÄŸiÅŸtir - - - Confirm wallet encryption - Cüzdanın ÅŸifrelemesini teyit eder - - - Warning: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR BITCOINS</b>! - Uyarı: EÄŸer cüzdanınızı ÅŸifrelerseniz ve parolanızı kaybederseniz, <b>TÜM BİTCOİNLERİNİZİ KAYBEDERSİNİZ</b>! - - - Are you sure you wish to encrypt your wallet? - Cüzdanınızı ÅŸifrelemek istediÄŸinizden emin misiniz? - - - Bitcoin Core 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. - Åžifreleme iÅŸlemini tamamlamak için Bitcoin ÇekirdeÄŸi ÅŸimdi kapanacaktır. Cüzdanınızı ÅŸifrelemenin, Bitcoinlerinizin bilgisayara bulaÅŸan kötücül bir yazılım tarafından çalınmaya karşı tamamen koruyamayacağını unutmayınız. - - - 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. - ÖNEMLİ: Önceden yapmış olduÄŸunuz cüzdan dosyası yedeklemelerinin yeni oluÅŸturulan ÅŸifrelenmiÅŸ cüzdan dosyası ile deÄŸiÅŸtirilmeleri gerekir. Güvenlik nedenleriyle yeni, ÅŸifrelenmiÅŸ cüzdanı kullanmaya baÅŸladığınızda eski ÅŸifrelenmemiÅŸ cüzdan dosyaları iÅŸe yaramaz hale gelecektir. - - - Warning: The Caps Lock key is on! - Uyarı: Caps Lock tuÅŸu faal durumda! - - - Wallet encrypted - Cüzdan ÅŸifrelendi - - - 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>. - Cüzdan için yeni parolayı giriniz.<br/>Lütfen <b>on ya da daha fazla rastgele karakter</b> veya <b>sekiz ya da daha fazla kelime</b> içeren bir parola kullanınız. - - - Enter the old passphrase and new passphrase to the wallet. - Cüzdan için eski parolayı ve yeni parolayı giriniz. - - - Wallet encryption failed - Cüzdan ÅŸifrelemesi baÅŸarısız oldu - - - Wallet encryption failed due to an internal error. Your wallet was not encrypted. - Dahili bir hata sebebiyle cüzdan ÅŸifrelemesi baÅŸarısız oldu. Cüzdanınız ÅŸifrelenmedi. - - - The supplied passphrases do not match. - Girilen parolalar birbirleriyle uyumlu deÄŸil. - - - Wallet unlock failed - Cüzdan kilidinin açılması baÅŸarısız oldu - - - The passphrase entered for the wallet decryption was incorrect. - Cüzdan ÅŸifresinin açılması için girilen parola yanlıştı. - - - Wallet decryption failed - Cüzdan ÅŸifresinin açılması baÅŸarısız oldu - - - Wallet passphrase was successfully changed. - Cüzdan parolası baÅŸarılı bir ÅŸekilde deÄŸiÅŸtirildi. - - - - BitcoinGUI - - Sign &message... - &Mesaj imzala... - - - Synchronizing with network... - Åžebeke ile senkronizasyon... - - - &Overview - &Genel bakış - - - Node - Düğüm - - - Show general overview of wallet - Cüzdana genel bakışı göster - - - &Transactions - &Muameleler - - - Browse transaction history - Muamele tarihçesini tara - - - E&xit - &Çık - - - Quit application - Uygulamadan çık - - - About &Qt - &Qt hakkında - - - Show information about Qt - Qt hakkında bilgi görüntü - - - &Options... - &Seçenekler... - - - &Encrypt Wallet... - Cüzdanı &ÅŸifrele... - - - &Backup Wallet... - Cüzdanı &yedekle... - - - &Change Passphrase... - Parolayı &deÄŸiÅŸtir... - - - &Sending addresses... - &Gönderme adresleri... - - - &Receiving addresses... - &Alma adresleri... - - - Open &URI... - &URI aç... - - - Bitcoin Core client - Bitcoin ÇekirdeÄŸi istemcisi - - - Importing blocks from disk... - Bloklar diskten içe aktarılıyor... - - - Reindexing blocks on disk... - Diskteki bloklar yeniden endeksleniyor... - - - Send coins to a Bitcoin address - Bir Bitcoin adresine Bitcoin yolla - - - Backup wallet to another location - Cüzdanı diÄŸer bir konumda yedekle - - - Change the passphrase used for wallet encryption - Cüzdan ÅŸifrelemesi için kullanılan parolayı deÄŸiÅŸtir - - - &Debug window - &Hata ayıklama penceresi - - - Open debugging and diagnostic console - Hata ayıklama ve teÅŸhis penceresini aç - - - &Verify message... - Mesaj &kontrol et... - - - Bitcoin - Bitcoin - - - Wallet - Cüzdan - - - &Send - &Gönder - - - &Receive - &Al - - - Show information about Bitcoin Core - Bitcoin ÇekirdeÄŸi hakkında bilgi göster - - - &Show / Hide - &Göster / Sakla - - - Show or hide the main Window - Ana pencereyi görüntüle ya da sakla - - - Encrypt the private keys that belong to your wallet - Cüzdanınızın özel anahtarlarını ÅŸifrele - - - Sign messages with your Bitcoin addresses to prove you own them - Mesajları adreslerin size ait olduÄŸunu ispatlamak için Bitcoin adresleri ile imzala - - - Verify messages to ensure they were signed with specified Bitcoin addresses - Belirtilen Bitcoin adresleri ile imzalandıklarından emin olmak için mesajları kontrol et - - - &File - &Dosya - - - &Settings - &Ayarlar - - - &Help - &Yardım - - - Tabs toolbar - Sekme araç çubuÄŸu - - - Bitcoin Core - Bitcoin ÇekirdeÄŸi - - - Request payments (generates QR codes and bitcoin: URIs) - Ödeme talep et (QR kodu ve bitcoin URI'si oluÅŸturur) - - - &About Bitcoin Core - Bitcoin ÇekirdeÄŸi &hakkında - - - Modify configuration options for Bitcoin Core - Bitcoin ÇekirdeÄŸi yapılandırma seçeneklerini deÄŸiÅŸtir - - - Show the list of used sending addresses and labels - Kullanılmış gönderme adresleri ve etiketlerin listesini göster - - - Show the list of used receiving addresses and labels - Kullanılmış alım adresleri ve etiketlerin listesini göster - - - Open a bitcoin: URI or payment request - Bir bitcoin: baÄŸlantısı ya da ödeme talebi aç - - - &Command-line options - &Komut satırı seçenekleri - - - Show the Bitcoin Core help message to get a list with possible Bitcoin command-line options - Bitcoin komut satırı seçeneklerinin listesini elde etmek için Bitcoin ÇekirdeÄŸi yardım mesajını göster - - - %n active connection(s) to Bitcoin network - Bitcoin ÅŸebekesine %n faal baÄŸlantıBitcoin ÅŸebekesine %n faal baÄŸlantı - - - No block source available... - Hiçbir blok kaynağı mevcut deÄŸil... - - - Processed %n block(s) of transaction history. - Muamele tarihçesinden %n blok iÅŸlendi.Muamele tarihçesinden %n blok iÅŸlendi - - - %n hour(s) - %n saat%n saat - - - %n day(s) - %n gün%n gün - - - %n week(s) - %n hafta%n hafta - - - %1 and %2 - %1 ve %2 - - - %n year(s) - %n yıl%n yıl - - - %1 behind - %1 geride - - - Last received block was generated %1 ago. - Son alınan blok %1 evvel oluÅŸturulmuÅŸtu. - - - Transactions after this will not yet be visible. - Bundan sonraki muameleler henüz görüntülenemez. - - - Error - Hata - - - Warning - Uyarı - - - Information - Bilgi - - - Up to date - Güncel - - - Catching up... - Aralık kapatılıyor... - - - Date: %1 - - Tarih: %1 - - - - Amount: %1 - - MeblaÄŸ: %1 - - - - Type: %1 - - Tür: %1 - - - - Label: %1 - - Etiket: %1 - - - - Address: %1 - - Adres: %1 - - - - Sent transaction - Muamele yollandı - - - Incoming transaction - Gelen muamele - - - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - Cüzdan <b>ÅŸifrelenmiÅŸtir</b> ve ÅŸu anda <b>kilidi açıktır</b> - - - Wallet is <b>encrypted</b> and currently <b>locked</b> - Cüzdan <b>ÅŸifrelenmiÅŸtir</b> ve ÅŸu anda <b>kilitlidir</b> - - - - ClientModel - - Network Alert - Åžebeke hakkında uyarı - - - - CoinControlDialog - - Coin Selection - Bitcoin Seçimi - - - Quantity: - Miktar: - - - Bytes: - Bayt: - - - Amount: - MeblaÄŸ: - - - Priority: - Öncelik: - - - Fee: - Ücret: - - - Dust: - Toz: - - - After Fee: - Ücretten sonra: - - - Change: - Para üstü: - - - (un)select all - tümünü seç(me) - - - Tree mode - AÄŸaç kipi - - - List mode - Liste kipi - - - Amount - MeblaÄŸ - - - Received with label - Åžu etiketle alındı - - - Received with address - Åžu adresle alındı - - - Date - Tarih - - - Confirmations - DoÄŸrulamalar - - - Confirmed - DoÄŸrulandı - - - Priority - Öncelik - - - Copy address - Adresi kopyala - - - Copy label - Etiketi kopyala - - - Copy amount - Meblağı kopyala - - - Copy transaction ID - Muamele kimliÄŸini kopyala - - - Lock unspent - Harcanmamışı kilitle - - - Unlock unspent - Harcanmamışın kilidini aç - - - Copy quantity - Miktarı kopyala - - - Copy fee - Ücreti kopyala - - - Copy after fee - Ücretten sonrakini kopyala - - - Copy bytes - Baytları kopyala - - - Copy priority - ÖnceliÄŸi kopyala - - - Copy dust - Tozu kopyala - - - Copy change - Para üstünü kopyala - - - highest - azami - - - higher - daha yüksek - - - high - yüksek - - - medium-high - orta-yüksek - - - medium - orta - - - low-medium - düşük-orta - - - low - düşük - - - lower - daha düşük - - - lowest - asgari - - - (%1 locked) - (%1 kilitlendi) - - - none - boÅŸ - - - This label turns red if the transaction size is greater than 1000 bytes. - EÄŸer muamele boyutu 1000 bayttan yüksek ise bu etiket kırmızı hale gelir. - - - This label turns red if the priority is smaller than "medium". - EÄŸer öncelik "ortadan" düşükse bu etiket kırmızı olur. - - - This label turns red if any recipient receives an amount smaller than %1. - EÄŸer herhangi bir alıcı %1'den düşük bir meblaÄŸ alırsa bu etiket kırmızı olur. - - - Can vary +/- %1 satoshi(s) per input. - GiriÅŸ başına +/- %1 satoshi olarak deÄŸiÅŸebilir. - - - yes - evet - - - no - hayır - - - This means a fee of at least %1 per kB is required. - Bu, kB başına en az %1 ücret gerektiÄŸi anlamnına gelir. - - - Can vary +/- 1 byte per input. - Girdi başına +/- 1 bayt deÄŸiÅŸebilir. - - - Transactions with higher priority are more likely to get included into a block. - Yüksek öncelikli muamelelerin bir bloÄŸa dahil olmaları daha olasıdır. - - - (no label) - (boÅŸ etiket) - - - change from %1 (%2) - %1 unsurundan para üstü (%2) - - - (change) - (para üstü) - - - - EditAddressDialog - - Edit Address - Adresi düzenle - - - &Label - &Etiket - - - The label associated with this address list entry - Bu adres listesi girdisi ile iliÅŸkili etiket - - - The address associated with this address list entry. This can only be modified for sending addresses. - Bu adres listesi girdisi ile iliÅŸkili adres. Sadece gönderme adresleri için deÄŸiÅŸtirilebilir. - - - &Address - &Adres - - - New receiving address - Yeni alım adresi - - - New sending address - Yeni gönderi adresi - - - Edit receiving address - Alım adresini düzenle - - - Edit sending address - Gönderi adresini düzenle - - - The entered address "%1" is already in the address book. - Girilen "%1" adresi hâlihazırda adres defterinde mevcuttur. - - - The entered address "%1" is not a valid Bitcoin address. - Girilen "%1" adresi geçerli bir Bitcoin adresi deÄŸildir. - - - Could not unlock wallet. - Cüzdan kilidi açılamadı. - - - New key generation failed. - Yeni anahtar oluÅŸturulması baÅŸarısız oldu. - - - - FreespaceChecker - - A new data directory will be created. - Yeni bir veri klasörü oluÅŸturulacaktır. - - - name - isim - - - Directory already exists. Add %1 if you intend to create a new directory here. - Klasör hâlihazırda mevcuttur. Burada yeni bir klasör oluÅŸturmak istiyorsanız, %1 ilâve ediniz. - - - Path already exists, and is not a directory. - EriÅŸim yolu zaten mevcuttur ve klasör deÄŸildir. - - - Cannot create data directory here. - Burada veri klasörü oluÅŸturulamaz. - - - - HelpMessageDialog - - Bitcoin Core - Bitcoin ÇekirdeÄŸi - - - version - sürüm - - - (%1-bit) - (%1-bit) - - - About Bitcoin Core - Bitcoin ÇekirdeÄŸi hakkında - - - Command-line options - Komut satırı seçenekleri - - - Usage: - Kullanım: - - - command-line options - komut satırı seçenekleri - - - - Intro - - Welcome - HoÅŸ geldiniz - - - Welcome to Bitcoin Core. - Bitcoin ÇekirdeÄŸine hoÅŸ geldiniz. - - - As this is the first time the program is launched, you can choose where Bitcoin Core will store its data. - Bu programı ilk kez baÅŸlattığınızdan dolayı Bitcoin ÇekirdeÄŸinin verilerini nereye saklayacağını seçebilirsiniz. - - - Bitcoin Core will download and store a copy of the Bitcoin block chain. At least %1GB of data will be stored in this directory, and it will grow over time. The wallet will also be stored in this directory. - Bitcoin çekirdeÄŸi Bitcoin blok zincirinin bir kopyasını indirip saklayacaktır. Asgari %1GB bouyutunda veri bu klasörde saklanacak ve zamanla bu boyut artacaktır. Cüzdan da bu klasörde saklanacaktır. - - - Use the default data directory - Varsayılan veri klasörünü kullan - - - Use a custom data directory: - Özel bir veri klasörü kullan: - - - Bitcoin Core - Bitcoin ÇekirdeÄŸi - - - Error: Specified data directory "%1" cannot be created. - Hata: belirtilen "%1" veri klasörü oluÅŸturulamaz. - - - Error - Hata - - - %n GB of free space available - %n GB boÅŸ alan mevcuttur%n GB boÅŸ alan mevcuttur - - - (of %n GB needed) - (gereken %n GB alandan)(gereken %n GB alandan) - - - - OpenURIDialog - - Open URI - URI aç - - - Open payment request from URI or file - Dosyadan veya URI'den ödeme talebi aç - - - URI: - URI: - - - Select payment request file - Ödeme talebi dosyasını seç - - - Select payment request file to open - Açılacak ödeme talebi dosyasını seç - - - - OptionsDialog - - Options - Seçenekler - - - &Main - &Esas ayarlar - - - Size of &database cache - &Veritabanı tamponunun boyutu - - - MB - MB - - - Number of script &verification threads - İş parçacıklarını &denetleme betiÄŸi sayısı - - - Accept connections from outside - Dışarıdan gelen baÄŸlantıları kabul et - - - Allow incoming connections - Gelen baÄŸlantılara izin ver - - - IP address of the proxy (e.g. IPv4: 127.0.0.1 / IPv6: ::1) - Vekil sunucusunun IP adresi (mesela IPv4: 127.0.0.1 / IPv6: ::1) - - - Minimize instead of exit the application when the window is closed. When this option is enabled, the application will be closed only after selecting Exit in the menu. - Pencere kapatıldığında uygulamadan çıkmak yerine uygulamayı küçültür. Bu seçenek etkinleÅŸtirildiÄŸinde, uygulama sadece menüden çıkış seçildiÄŸinde kapanacaktır. - - - The user interface language can be set here. This setting will take effect after restarting Bitcoin Core. - Kullanıcı arayüzünün dili burada belirtilebilir. Bu ayar Bitcoin ÇekirdeÄŸi tekrar baÅŸlatıldığında etkinleÅŸecektir. - - - 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 |. - Muameleler sekmesinde baÄŸlam menüsü unsurları olarak görünen üçüncü taraf baÄŸlantıları (mesela bir blok tarayıcısı). URL'deki %s, muamele hash deÄŸeri ile deÄŸiÅŸtirilecektir. Birden çok baÄŸlantılar düşey çubuklar | ile ayrılacaktır. - - - Third party transaction URLs - Üçüncü taraf muamele URL'leri - - - Active command-line options that override above options: - Yukarıdaki seçeneklerin yerine geçen faal komut satırı seçenekleri: - - - Reset all client options to default. - İstemcinin tüm seçeneklerini varsayılan deÄŸerlere geri al. - - - &Reset Options - Seçenekleri Sıfı&rla - - - &Network - &Åžebeke - - - Automatically start Bitcoin Core after logging in to the system. - Sistemde oturum açıldığında Bitcoin ÇekirdeÄŸini otomatik olarak baÅŸlat. - - - &Start Bitcoin Core on system login - Bitcoin ÇekirdeÄŸini sistem oturumuyla &baÅŸlat - - - (0 = auto, <0 = leave that many cores free) - (0 = otomatik, <0 = bu kadar çekirdeÄŸi kullanma) - - - W&allet - &Cüzdan - - - Expert - GeliÅŸmiÅŸ - - - Enable coin &control features - Para &kontrolü özelliklerini etkinleÅŸtir - - - 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. - Teyit edilmemiÅŸ para üstünü harcamayı devre dışı bırakırsanız, bir muamelenin para üstü bu muamele için en az bir teyit olana dek harcanamaz. Bu, aynı zamanda bakiyenizin nasıl hesaplandığını da etkiler. - - - &Spend unconfirmed change - Teyit edilmemiÅŸ para üstünü &harca - - - Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled. - Yönlendiricide Bitcoin istemci portlarını otomatik olarak açar. Bu, sadece yönlendiricinizin UPnP desteÄŸi bulunuyorsa ve etkinse çalışabilir. - - - Map port using &UPnP - Portları &UPnP kullanarak haritala - - - Connect to the Bitcoin network through a SOCKS5 proxy. - Bitcoin ÅŸebekesine SOCKS5 vekil sunucusu vasıtasıyla baÄŸlan. - - - &Connect through SOCKS5 proxy (default proxy): - SOCKS5 vekil sunucusu vasıtasıyla &baÄŸlan (varsayılan vekil sunucusu): - - - Proxy &IP: - Vekil &İP: - - - &Port: - &Port: - - - Port of the proxy (e.g. 9050) - Vekil sunucunun portu (mesela 9050) - - - &Window - &Pencere - - - Show only a tray icon after minimizing the window. - Küçültüldükten sonra sadece çekmece ikonu göster. - - - &Minimize to the tray instead of the taskbar - İşlem çubuÄŸu yerine sistem çekmecesine &küçült - - - M&inimize on close - Kapatma sırasında k&üçült - - - &Display - &Görünüm - - - User Interface &language: - Kullanıcı arayüzü &lisanı: - - - &Unit to show amounts in: - MeblaÄŸları göstermek için &birim: - - - Choose the default subdivision unit to show in the interface and when sending coins. - Bitcoin gönderildiÄŸinde arayüzde gösterilecek varsayılan alt birimi seçiniz. - - - Whether to show coin control features or not. - Para kontrol özelliklerinin gösterilip gösterilmeyeceÄŸini ayarlar. - - - &OK - &Tamam - - - &Cancel - &İptal - - - default - varsayılan - - - none - boÅŸ - - - Confirm options reset - Seçeneklerin sıfırlanmasını teyit et - - - Client restart required to activate changes. - DeÄŸiÅŸikliklerin uygulanması için istemcinin yeniden baÅŸlatılması lazımdır. - - - Client will be shut down. Do you want to proceed? - İstemci kapanacaktır. Devam etmek istiyor musunuz? - - - This change would require a client restart. - Bu deÄŸiÅŸiklik istemcinin tekrar baÅŸlatılmasını gerektirir. - - - The supplied proxy address is invalid. - Girilen vekil sunucu adresi geçersizdir. - - - - OverviewPage - - Form - Form - - - The displayed information may be out of date. Your wallet automatically synchronizes with the Bitcoin network after a connection is established, but this process has not completed yet. - Görüntülenen veriler zaman aşımına uÄŸramış olabilir. BaÄŸlantı kurulduÄŸunda cüzdanınız otomatik olarak ÅŸebeke ile eÅŸleÅŸir ancak bu iÅŸlem henüz tamamlanmamıştır. - - - Watch-only: - Sadece-izlenen: - - - Available: - Mevcut: - - - Your current spendable balance - Güncel harcanabilir bakiyeniz - - - Pending: - Beklemede: - - - Total of transactions that have yet to be confirmed, and do not yet count toward the spendable balance - Henüz teyit edilmemiÅŸ ve harcanabilir bakiyeye eklenmemiÅŸ muamelelerin toplamı - - - Immature: - OlgunlaÅŸmamış: - - - Mined balance that has not yet matured - OluÅŸturulan bakiye henüz olgunlaÅŸmamıştır - - - Balances - Bakiyeler - - - Total: - Toplam: - - - Your current total balance - Güncel toplam bakiyeniz - - - Your current balance in watch-only addresses - Sadece izlenen adreslerdeki güncel bakiyeniz - - - Spendable: - Harcanabilir: - - - Recent transactions - Son muameleler - - - Unconfirmed transactions to watch-only addresses - Sadece izlenen adreslere gelen teyit edilmemiÅŸ muameleler - - - Mined balance in watch-only addresses that has not yet matured - Sadece izlenen adreslerin henüz olgunlaÅŸmamış oluÅŸturulan bakiyeleri - - - Current total balance in watch-only addresses - Sadece izlenen adreslerdeki güncel toplam bakiye - - - - PaymentServer - - URI handling - URI yönetimi - - - Invalid payment address %1 - Geçersiz ödeme adresi %1 - - - Payment request rejected - Ödeme talebi reddedildi - - - Payment request network doesn't match client network. - Ödeme talebi ÅŸebekesi istemci ÅŸebekesine denk gelmiyor. - - - Payment request is not initialized. - Ödeme talebi baÅŸlatılmamış. - - - Requested payment amount of %1 is too small (considered dust). - Talep edilen %1 meblağında ödeme çok düşüktür (toz olarak kabul edilir). - - - Payment request error - Ödeme talebi hatası - - - Cannot start bitcoin: click-to-pay handler - Bitcoin baÅŸlatılamadı: tıkla-ve-öde yöneticisi - - - Payment request fetch URL is invalid: %1 - Ödeme talebini alma URL'i geçersiz: %1 - - - URI cannot be parsed! This can be caused by an invalid Bitcoin address or malformed URI parameters. - URI okunamadı! Sebebi geçersiz bir Bitcoin adresi veya hatalı URI parametreleri olabilir. - - - Payment request file handling - Ödeme talebi dosyası yönetimi - - - Payment request file cannot be read! This can be caused by an invalid payment request file. - Ödeme talebi okunamaz ya da iÅŸlenemez! Bunun sebebi geçersiz bir ödeme talebi dosyası olabilir. - - - Payment request expired. - Ödeme talebinin ömrü doldu. - - - Unverified payment requests to custom payment scripts are unsupported. - Özel ödeme betiklerine teyit edilmemiÅŸ ödeme talepleri desteklenmez. - - - Invalid payment request. - Geçersiz ödeme talebi. - - - Refund from %1 - %1 öğesinden iade - - - Payment request %1 is too large (%2 bytes, allowed %3 bytes). - %1 ödeme talebi çok büyük (%2 bayt, müsaade edilen %3 bayt). - - - Payment request DoS protection - Ödeme talebi DoS koruması - - - Error communicating with %1: %2 - %1 ile iletiÅŸimde hata: %2 - - - Payment request cannot be parsed! - Ödeme talebi ayrıştırılamaz! - - - Bad response from server %1 - %1 sunucusundan hatalı cevap - - - Payment acknowledged - Ödeme teyit edildi - - - Network request error - Åžebeke talebi hatası - - - - PeerTableModel - - User Agent - Kullanıcı Yazılımı - - - Node/Service - Düğüm/Servis - - - Ping Time - Ping Süresi - - - - QObject - - Amount - MeblaÄŸ - - - Enter a Bitcoin address (e.g. %1) - Bir Bitcoin adresi giriniz (mesela %1) - - - %1 d - %1 g - - - %1 h - %1 s - - - %1 m - %1 d - - - %1 s - %1 s - - - None - BoÅŸ - - - N/A - Mevcut deÄŸil - - - %1 ms - %1 ms - - - - QRImageWidget - - &Save Image... - Resmi k&aydet... - - - &Copy Image - Resmi &kopyala - - - Save QR Code - QR kodu kaydet - - - PNG Image (*.png) - PNG resim (*.png) - - - - RPCConsole - - Client name - İstemci ismi - - - N/A - Mevcut deÄŸil - - - Client version - İstemci sürümü - - - &Information - &Malumat - - - Debug window - Hata ayıklama penceresi - - - General - Genel - - - Using OpenSSL version - Kullanılan OpenSSL sürümü - - - Using BerkeleyDB version - Kullanılan BerkeleyDB sürümü - - - Startup time - BaÅŸlama zamanı - - - Network - Åžebeke - - - Name - İsim - - - Number of connections - BaÄŸlantı sayısı - - - Block chain - Blok zinciri - - - Current number of blocks - Güncel blok sayısı - - - Open the Bitcoin Core debug log file from the current data directory. This can take a few seconds for large log files. - Güncel veri klasöründen Bitcoin ÇekirdeÄŸi hata ayıklama kütük dosyasını açar. Büyük kütük dosyaları için bu birkaç saniye alabilir. - - - Received - Alınan - - - Sent - Yollanan - - - &Peers - &EÅŸler - - - Select a peer to view detailed information. - Ayrıntılı bilgi görmek için bir eÅŸ seçin. - - - Direction - Yön - - - Version - Sürüm - - - User Agent - Kullanıcı Yazılımı - - - Services - Servisler - - - Starting Height - BaÅŸlama YüksekliÄŸi - - - Sync Height - EÅŸleÅŸme YüksekliÄŸi - - - Ban Score - Yasaklama Skoru - - - Connection Time - BaÄŸlantı Süresi - - - Last Send - Son Gönderme - - - Last Receive - Son Alma - - - Bytes Sent - Yollanan Baytlar - - - Bytes Received - Alınan Baytlar - - - Ping Time - Ping Süresi - - - Time Offset - Saat Farkı - - - Last block time - Son blok zamanı - - - &Open - &Aç - - - &Console - &Konsol - - - &Network Traffic - &Åžebeke trafiÄŸi - - - &Clear - &Temizle - - - Totals - Toplamlar - - - In: - İçeri: - - - Out: - Dışarı: - - - Build date - Derleme tarihi - - - Debug log file - Hata ayıklama kütük dosyası - - - Clear console - Konsolu temizle - - - Welcome to the Bitcoin Core RPC console. - Bitcoin ÇekirdeÄŸi RPC konsoluna hoÅŸ geldiniz. - - - Use up and down arrows to navigate history, and <b>Ctrl-L</b> to clear screen. - Tarihçede gezinmek için imleç tuÅŸlarını kullanınız, <b>Ctrl-L</b> ile de ekranı temizleyebilirsiniz. - - - Type <b>help</b> for an overview of available commands. - Mevcut komutların listesi için <b>help</b> yazınız. - - - %1 B - %1 B - - - %1 KB - %1 KB - - - %1 MB - %1 MB - - - %1 GB - %1 GB - - - via %1 - %1 vasıtasıyla - - - never - asla - - - Inbound - Gelen - - - Outbound - Giden - - - Unknown - Bilinmiyor - - - Fetching... - Alınıyor... - - - - ReceiveCoinsDialog - - &Amount: - &MeblaÄŸ: - - - &Label: - &Etiket: - - - &Message: - Me&saj: - - - Reuse one of the previously used receiving addresses. Reusing addresses has security and privacy issues. Do not use this unless re-generating a payment request made before. - Daha önce kullanılmış bir alım adresini kullan. Adresleri tekrar kullanmak güvenlik ve gizlilik sorunları doÄŸurur. Bunu, daha önce yaptığınız bir talebi tekrar oluÅŸturmak durumu dışında kullanmayınız. - - - R&euse an existing receiving address (not recommended) - &Hâlihazırda bulunan bir alım adresini kullan (önerilmez) - - - An optional message to attach to the payment request, which will be displayed when the request is opened. Note: The message will not be sent with the payment over the Bitcoin network. - Talep açıldığında gösterilecek, isteÄŸinize dayalı, ödeme talebi ile iliÅŸkilendirilecek bir mesaj. Not: Bu mesaj ödeme ile birlikte Bitcoin ÅŸebekesi üzerinden gönderilmeyecektir. - - - An optional label to associate with the new receiving address. - Yeni alım adresi ile iliÅŸkili, seçiminize dayalı etiket. - - - Use this form to request payments. All fields are <b>optional</b>. - Ödeme talep etmek için bu formu kullanın. Tüm alanlar <b>seçime dayalıdır</b>. - - - An optional amount to request. Leave this empty or zero to not request a specific amount. - Seçiminize dayalı talep edilecek meblaÄŸ. Belli bir meblaÄŸ talep etmemek için bunu boÅŸ bırakın veya sıfır deÄŸerini kullanın. - - - Clear all fields of the form. - Formdaki tüm alanları temizle. - - - Clear - Temizle - - - Requested payments history - Talep edilen ödemelerin tarihçesi - - - &Request payment - Ödeme &talep et - - - Show the selected request (does the same as double clicking an entry) - Seçilen talebi göster (bir unsura çift tıklamakla aynı anlama gelir) - - - Show - Göster - - - Remove the selected entries from the list - Seçilen unsurları listeden kaldır - - - Remove - Kaldır - - - Copy label - Etiketi kopyala - - - Copy message - Mesajı kopyala - - - Copy amount - Meblağı kopyala - - - - ReceiveRequestDialog - - QR Code - QR Kodu - - - Copy &URI - &URI'yi kopyala - - - Copy &Address - &Adresi kopyala - - - &Save Image... - Resmi ka&ydet... - - - Request payment to %1 - %1 unsuruna ödeme talep et - - - Payment information - Ödeme bilgisi - - - URI - URI - - - Address - Adres - - - Amount - MeblaÄŸ - - - Label - Etiket - - - Message - Mesaj - - - Resulting URI too long, try to reduce the text for label / message. - Sonuç URI çok uzun, etiket ya da mesaj metnini kısaltmayı deneyiniz. - - - Error encoding URI into QR Code. - URI'nin QR koduna kodlanmasında hata oluÅŸtu. - - - - RecentRequestsTableModel - - Date - Tarih - - - Label - Etiket - - - Message - Mesaj - - - Amount - MeblaÄŸ - - - (no label) - (boÅŸ etiket) - - - (no message) - (boÅŸ mesaj) - - - (no amount) - (boÅŸ meblaÄŸ) - - - - SendCoinsDialog - - Send Coins - Bitcoin yolla - - - Coin Control Features - Para kontrolü özellikleri - - - Inputs... - Girdiler... - - - automatically selected - otomatik seçilmiÅŸ - - - Insufficient funds! - Yetersiz fon! - - - Quantity: - Miktar: - - - Bytes: - Bayt: - - - Amount: - MeblaÄŸ: - - - Priority: - Öncelik: - - - Fee: - Ücret: - - - After Fee: - Ücretten sonra: - - - Change: - Para üstü: - - - If this is activated, but the change address is empty or invalid, change will be sent to a newly generated address. - Bu etkinleÅŸtirildiyse fakat para üstü adresi boÅŸ ya da geçersizse para üstü yeni oluÅŸturulan bir adrese gönderilecektir. - - - Custom change address - Özel para üstü adresi - - - Transaction Fee: - Muamele ücreti: - - - Choose... - Seç... - - - collapse fee-settings - ücret-ayarlarını-küçült - - - per kilobyte - kilobayt başı - - - 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. - EÄŸer özel ücret 1000 satoÅŸi olarak ayarlandıysa ve muamele sadece 250 baytsa, "kilobayt başı" ücret olarak sadece 250 satoÅŸi öder ve "toplam asgari" 1000 satoÅŸi öder. Bir kilobayttan yüksek muameleler için ikisi de kilobayt başı ödeme yapar. - - - Hide - Sakla - - - total at least - toplam asgari - - - 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. - Asgari ücreti ödemek, bloklarda boÅŸluktan daha az muamele hacmi olduÄŸu sürece bir sorun çıkarmaz. Fakat ÅŸebekenin iÅŸleyecebileceÄŸinden daha çok bitcoin muameleleri talebi olduÄŸunda bunun asla teyit edilmeyen bir muamele olabileceÄŸinin farkında olmalısınız. - - - (read the tooltip) - (bilgi balonunu oku) - - - Recommended: - Tavsiye edilen: - - - Custom: - Özel: - - - (Smart fee not initialized yet. This usually takes a few blocks...) - (Zeki ücret henüz baÅŸlatılmadı. Bu genelde birkaç blok alır...) - - - Confirmation time: - Teyit süresi: - - - normal - normal - - - fast - çabuk - - - Send as zero-fee transaction if possible - Mümkünse ücretsiz muamele olarak gönder - - - (confirmation may take longer) - (teyit daha uzun süre alabilir) - - - Send to multiple recipients at once - Birçok alıcıya aynı anda gönder - - - Add &Recipient - &Alıcı ekle - - - Clear all fields of the form. - Formdaki tüm alanları temizle. - - - Dust: - Toz: - - - Clear &All - Tümünü &temizle - - - Balance: - Bakiye: - - - Confirm the send action - Yollama etkinliÄŸini teyit ediniz - - - S&end - G&önder - - - Confirm send coins - Gönderiyi teyit ediniz - - - %1 to %2 - %1 öğesinden %2 unsuruna - - - Copy quantity - Miktarı kopyala - - - Copy amount - Meblağı kopyala - - - Copy fee - Ücreti kopyala - - - Copy after fee - Ücretten sonrakini kopyala - - - Copy bytes - Baytları kopyala - - - Copy priority - ÖnceliÄŸi kopyala - - - Copy change - Para üstünü kopyala - - - or - veya - - - The amount to pay must be larger than 0. - ÖdeyeceÄŸiniz tutarın sıfırdan yüksek olması gerekir. - - - The amount exceeds your balance. - Tutar bakiyenizden yüksektir. - - - The total exceeds your balance when the %1 transaction fee is included. - Toplam, %1 muamele ücreti ilâve edildiÄŸinde bakiyenizi geçmektedir. - - - Transaction creation failed! - Muamelenin oluÅŸturulması baÅŸarısız oldu! - - - 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. - Muamele reddedildi! Cüzdanınızdaki madenî paraların bazıları zaten harcanmış olduÄŸunda bu meydana gelebilir. ÖrneÄŸin wallet.dat dosyasının bir kopyasını kullandıysanız ve kopyada para harcandığında ancak burada harcandığı iÅŸaretlenmediÄŸinde. - - - A fee higher than %1 is considered an absurdly high fee. - %1 tutarından yüksek ücret saçma derecede yüksek bir ücret olarak kabul edilir. - - - Payment request expired. - Ödeme talebinin ömrü doldu. - - - Pay only the minimum fee of %1 - Sadece asgari ücret olan %1 tutarını öde - - - The recipient address is not valid. Please recheck. - Alıcı adresi geçerli deÄŸildir. Lütfen denetleyiniz. - - - Duplicate address found: addresses should only be used once each. - Çift adres bulundu: adresler herbiri için sadece bir kez kullanılmalıdır. - - - Warning: Invalid Bitcoin address - Uyarı: geçersiz Bitcoin adresi - - - (no label) - (boÅŸ etiket) - - - Warning: Unknown change address - Uyarı: geçersiz para üstü adresi - - - Copy dust - Tozu kopyala - - - Are you sure you want to send? - Göndermek istediÄŸinizden emin misiniz? - - - added as transaction fee - muamele ücreti olarak eklendi - - - - SendCoinsEntry - - A&mount: - Mebla&ÄŸ: - - - Pay &To: - &Åžu adrese öde: - - - Enter a label for this address to add it to your address book - Adres defterinize eklemek için bu adrese iliÅŸik bir etiket giriniz - - - &Label: - &Etiket: - - - Choose previously used address - Önceden kullanılmış adres seç - - - This is a normal payment. - Bu, normal bir ödemedir. - - - The Bitcoin address to send the payment to - Ödemenin yollanacağı Bitcoin adresi - - - Alt+A - Alt+A - - - Paste address from clipboard - Panodan adres yapıştır - - - Alt+P - Alt+P - - - Remove this entry - Bu unsuru kaldır - - - The fee will be deducted from the amount being sent. The recipient will receive less bitcoins than you enter in the amount field. If multiple recipients are selected, the fee is split equally. - Ücret yollanan meblaÄŸdan alınacaktır. Alıcı meblaÄŸ alanında girdiÄŸinizden daha az bitcoin alacaktır. EÄŸer birden çok alıcı seçiliyse ücret eÅŸit olarak bölünecektir. - - - S&ubtract fee from amount - Ücreti meblaÄŸdan düş - - - Message: - Mesaj: - - - This is an unauthenticated payment request. - Bu, kimliÄŸi doÄŸrulanmamış bir ödeme talebidir. - - - This is an authenticated payment request. - Bu, kimliÄŸi doÄŸrulanmış bir ödeme talebidir. - - - Enter a label for this address to add it to the list of used addresses - Kullanılmış adres listesine eklemek için bu adrese bir etiket girin - - - A message that was attached to the bitcoin: URI which will be stored with the transaction for your reference. Note: This message will not be sent over the Bitcoin network. - Bitcoin: URI'siyle iliÅŸkili ve bilginiz için muameleyle saklanacak bir mesaj. Not: Bu mesaj Bitcoin ÅŸebekesi üzerinden gönderilmeyecektir. - - - Pay To: - Åžu adrese öde: - - - Memo: - Not: - - - - ShutdownWindow - - Bitcoin Core is shutting down... - Bitcoin ÇekirdeÄŸi kapanıyor... - - - Do not shut down the computer until this window disappears. - Bu pencere kalkıncaya dek bilgisayarı kapatmayınız. - - - - SignVerifyMessageDialog - - Signatures - Sign / Verify a Message - İmzalar - Mesaj İmzala / Kontrol et - - - &Sign Message - Mesaj &imzala - - - You can sign messages/agreements with your addresses to prove you can receive bitcoins sent to them. Be careful not to sign anything vague or random, as phishing attacks may try to trick you into signing your identity over to them. Only sign fully-detailed statements you agree to. - Adreslerinize yollanan bitcoinleri alabileceÄŸiniz ispatlamak için adreslerinizle mesaj/anlaÅŸma imzalayabilirsiniz. Oltalama saldırılarının kimliÄŸinizi imzanızla elde etmeyi deneyebilecekleri için belirsiz ya da rastgele hiçbir ÅŸey imzalamamaya dikkat ediniz. Sadece ayrıntılı açıklaması olan ve tümüne katıldığınız ifadeleri imzalayınız. - - - The Bitcoin address to sign the message with - Mesajın imzalanmasında kullanılacak Bitcoin adresi - - - Choose previously used address - Önceden kullanılmış adres seç - - - Alt+A - Alt+A - - - Paste address from clipboard - Panodan adres yapıştır - - - Alt+P - Alt+P - - - Enter the message you want to sign here - İmzalamak istediÄŸiniz mesajı burada giriniz - - - Signature - İmza - - - Copy the current signature to the system clipboard - Güncel imzayı sistem panosuna kopyala - - - Sign the message to prove you own this Bitcoin address - Bu Bitcoin adresinin sizin olduÄŸunu ispatlamak için mesajı imzalayın - - - Sign &Message - &Mesajı imzala - - - Reset all sign message fields - Tüm mesaj alanlarını sıfırla - - - Clear &All - Tümünü &temizle - - - &Verify Message - Mesaj &kontrol et - - - Enter the receiver's address, message (ensure you copy line breaks, spaces, tabs, etc. exactly) and signature below to verify the message. Be careful not to read more into the signature than what is in the signed message itself, to avoid being tricked by a man-in-the-middle attack. Note that this only proves the signing party receives with the address, it cannot prove sendership of any transaction! - Alıcının adresini, mesajı (satır sonları, boÅŸluklar, sekmeler vs. karakterleri tam olarak kopyaladığınızdan emin olunuz) ve imzayı aÅŸağıda giriniz. Bir ortadaki adam saldırısı tarafından kandırılmaya mâni olmak için imzadan, imzalı mesajın içeriÄŸini aÅŸan bir anlam çıkarmamaya dikkat ediniz. Bunun sadece imzalayan tarafın adres ile alım yapabildiÄŸini ispatladığını ve herhangi bir muamelenin gönderi tarafını kanıtlayamayacağını unutmayınız! - - - The Bitcoin address the message was signed with - Mesajın imzalanmasında kullanılan Bitcoin adresi - - - Verify the message to ensure it was signed with the specified Bitcoin address - Belirtilen Bitcoin adresi ile imzalandığını doÄŸrulamak için mesajı kontrol et - - - Verify &Message - &Mesaj kontrol et - - - Reset all verify message fields - Tüm mesaj kontrolü alanlarını sıfırla - - - Click "Sign Message" to generate signature - İmzayı oluÅŸturmak için "Mesaj İmzala" unsurunu tıklayın - - - The entered address is invalid. - Girilen adres geçersizdir. - - - Please check the address and try again. - Adresi kontrol edip tekrar deneyiniz. - - - The entered address does not refer to a key. - Girilen adres herhangi bir anahtara iÅŸaret etmemektedir. - - - Wallet unlock was cancelled. - Cüzdan kilidinin açılması iptal edildi. - - - Private key for the entered address is not available. - Girilen adres için özel anahtar mevcut deÄŸildir. - - - Message signing failed. - Mesajın imzalanması baÅŸarısız oldu. - - - Message signed. - Mesaj imzalandı. - - - The signature could not be decoded. - İmzanın kodu çözülemedi. - - - Please check the signature and try again. - İmzayı kontrol edip tekrar deneyiniz. - - - The signature did not match the message digest. - İmza mesajın hash deÄŸeri ile eÅŸleÅŸmedi. - - - Message verification failed. - Mesaj doÄŸrulaması baÅŸarısız oldu. - - - Message verified. - Mesaj doÄŸrulandı. - - - - SplashScreen - - Bitcoin Core - Bitcoin ÇekirdeÄŸi - - - The Bitcoin Core developers - Bitcoin ÇekirdeÄŸi geliÅŸtiricileri - - - [testnet] - [testnet] - - - - TrafficGraphWidget - - KB/s - KB/s - - - - TransactionDesc - - Open until %1 - %1 deÄŸerine dek açık - - - conflicted - çakışma - - - %1/offline - %1/çevrim dışı - - - %1/unconfirmed - %1/doÄŸrulanmadı - - - %1 confirmations - %1 teyit - - - Status - Durum - - - , broadcast through %n node(s) - , %n düğüm vasıtasıyla yayınlandı, %n düğüm vasıtasıyla yayınlandı - - - Date - Tarih - - - Source - Kaynak - - - Generated - OluÅŸturuldu - - - From - Gönderen - - - To - Alıcı - - - own address - kendi adresiniz - - - watch-only - sadece-izlenen - - - label - etiket - - - Credit - Gider - - - matures in %n more block(s) - %n ek blok sonrasında olgunlaÅŸacak%n ek blok sonrasında olgunlaÅŸacak - - - not accepted - kabul edilmedi - - - Debit - Gelir - - - Total debit - Toplam gider - - - Total credit - Toplam gelir - - - Transaction fee - Muamele ücreti - - - Net amount - Net meblaÄŸ - - - Message - Mesaj - - - Comment - Yorum - - - Transaction ID - Muamele tanımlayıcı - - - Merchant - Tüccar - - - Generated coins must mature %1 blocks before they can be spent. When you generated this block, it was broadcast to the network to be added to the block chain. If it fails to get into the chain, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - OluÅŸturulan bitcoin'lerin harcanabilmelerinden önce %1 blok beklemeleri gerekmektedir. Bu blok, oluÅŸturduÄŸunuzda, blok zincirine eklenmesi için aÄŸda yayınlandı. Zincire eklenmesi baÅŸarısız olursa, durumu "kabul edilmedi" olarak deÄŸiÅŸtirilecek ve harcanamayacaktır. Bu, bazen baÅŸka bir düğüm sizden birkaç saniye önce ya da sonra blok oluÅŸturursa meydana gelebilir. - - - Debug information - Hata ayıklama verileri - - - Transaction - Muamele - - - Inputs - Girdiler - - - Amount - MeblaÄŸ - - - true - doÄŸru - - - false - yanlış - - - , has not been successfully broadcast yet - , henüz baÅŸarılı bir ÅŸekilde yayınlanmadı - - - Open for %n more block(s) - %n ilâve blok için açık%n ilâve blok için açık - - - unknown - bilinmiyor - - - - TransactionDescDialog - - Transaction details - Muamele detayları - - - This pane shows a detailed description of the transaction - Bu pano muamelenin ayrıntılı açıklamasını gösterir - - - - TransactionTableModel - - Date - Tarih - - - Type - Tür - - - Immature (%1 confirmations, will be available after %2) - OlgunlaÅŸmamış (%1 teyit, %2 teyit ardından kullanılabilir olacaktır) - - - Open for %n more block(s) - %n ilâve blok için açık%n ilâve blok için açık - - - Open until %1 - %1 deÄŸerine dek açık - - - Confirmed (%1 confirmations) - DoÄŸrulandı (%1 teyit) - - - This block was not received by any other nodes and will probably not be accepted! - Bu blok baÅŸka hiçbir düğüm tarafından alınmamıştır ve muhtemelen kabul edilmeyecektir! - - - Generated but not accepted - OluÅŸturuldu ama kabul edilmedi - - - Offline - Çevrim dışı - - - Label - Etiket - - - Unconfirmed - Teyit edilmemiÅŸ - - - Confirming (%1 of %2 recommended confirmations) - Teyit ediliyor (tavsiye edilen %2 teyit üzerinden %1 doÄŸrulama) - - - Conflicted - Çakışma - - - Received with - Åžununla alındı - - - Received from - Alındığı kiÅŸi - - - Sent to - GönderildiÄŸi adres - - - Payment to yourself - Kendinize ödeme - - - Mined - Madenden çıkarılan - - - watch-only - sadece-izlenen - - - (n/a) - (mevcut deÄŸil) - - - Transaction status. Hover over this field to show number of confirmations. - Muamele durumu. DoÄŸrulama sayısını görüntülemek için imleci bu alanda tutunuz. - - - Date and time that the transaction was received. - Muamelenin alındığı tarih ve zaman. - - - Type of transaction. - Muamele türü. - - - Whether or not a watch-only address is involved in this transaction. - Bu muamelede sadece izlenen bir adresin bulunup bulunmadığı. - - - User-defined intent/purpose of the transaction. - Muamelenin kullanıcı tanımlı niyeti/amacı. - - - Amount removed from or added to balance. - Bakiyeden alınan ya da bakiyeye eklenen meblaÄŸ. - - - - TransactionView - - All - Hepsi - - - Today - Bugün - - - This week - Bu hafta - - - This month - Bu ay - - - Last month - Geçen ay - - - This year - Bu sene - - - Range... - Aralık... - - - Received with - Åžununla alınan - - - Sent to - GönderildiÄŸi adres - - - To yourself - Kendinize - - - Mined - OluÅŸturulan - - - Other - DiÄŸer - - - Enter address or label to search - Aranacak adres ya da etiket giriniz - - - Min amount - Asgari meblaÄŸ - - - Copy address - Adresi kopyala - - - Copy label - Etiketi kopyala - - - Copy amount - Meblağı kopyala - - - Copy transaction ID - Muamele kimliÄŸini kopyala - - - Edit label - Etiketi düzenle - - - Show transaction details - Muamele detaylarını göster - - - Export Transaction History - Muamele tarihçesini dışa aktar - - - Watch-only - Sadece izlenen - - - Exporting Failed - Dışa aktarım baÅŸarısız oldu - - - There was an error trying to save the transaction history to %1. - Muamele tarihçesinin %1 konumuna kaydedilmesi sırasında bir hata meydana geldi. - - - Exporting Successful - Dışa aktarım baÅŸarılı oldu - - - The transaction history was successfully saved to %1. - Muamele tarihçesi baÅŸarılı bir ÅŸekilde %1 konumuna kaydedildi. - - - Comma separated file (*.csv) - Virgülle ayrılmış deÄŸerler dosyası (*.csv) - - - Confirmed - DoÄŸrulandı - - - Date - Tarih - - - Type - Tür - - - Label - Etiket - - - Address - Adres - - - ID - Tanımlayıcı - - - Range: - Aralık: - - - to - ilâ - - - - UnitDisplayStatusBarControl - - Unit to show amounts in. Click to select another unit. - MeblaÄŸları göstermek için birim. BaÅŸka bir birim seçmek için tıklayınız. - - - - WalletFrame - - No wallet has been loaded. - Hiçbir cüzdan yüklenmemiÅŸtir. - - - - WalletModel - - Send Coins - Bitcoin yolla - - - - WalletView - - &Export - &Dışa aktar - - - Export the data in the current tab to a file - Güncel sekmedeki verileri bir dosyaya aktar - - - Backup Wallet - Cüzdanı Yedekle - - - Wallet Data (*.dat) - Cüzdan verileri (*.dat) - - - Backup Failed - Yedekleme baÅŸarısız oldu - - - There was an error trying to save the wallet data to %1. - Cüzdan verilerinin %1 konumuna kaydedilmesi sırasında bir hata meydana geldi. - - - The wallet data was successfully saved to %1. - Cüzdan verileri %1 konumuna baÅŸarıyla kaydedildi. - - - Backup Successful - Yedekleme baÅŸarılı - - - - bitcoin-core - - Options: - Seçenekler: - - - Specify data directory - Veri dizinini belirt - - - Connect to a node to retrieve peer addresses, and disconnect - EÅŸ adresleri elde etmek için bir düğüme baÄŸlan ve ardından baÄŸlantıyı kes - - - Specify your own public address - Kendi genel adresinizi tanımlayın - - - Accept command line and JSON-RPC commands - Komut satırı ve JSON-RPC komutlarını kabul et - - - Run in the background as a daemon and accept commands - Arka planda daemon (servis) olarak çalış ve komutları kabul et - - - Use the test network - Deneme ÅŸebekesini kullan - - - Accept connections from outside (default: 1 if no -proxy or -connect) - Dışarıdan gelen baÄŸlantıları kabul et (varsayılan: -proxy veya -connect yoksa 1) - - - Bind to given address and always listen on it. Use [host]:port notation for IPv6 - Belirtilen adrese baÄŸlan ve daima ondan dinle. IPv6 için [makine]:port yazımını kullanınız - - - Delete all wallet transactions and only recover those parts of the blockchain through -rescan on startup - Tüm cüzdan muamelelerini sil ve baÅŸlangıçta -rescan ile sadece blok zincirinin parçası olanları geri getir - - - Distributed under the MIT software license, see the accompanying file COPYING or <http://www.opensource.org/licenses/mit-license.php>. - MIT yazılım lisansı kapsamında yayınlanmıştır, ekteki COPYING dosyasına ya da <http://www.opensource.org/licenses/mit-license.php> adresine bakınız. - - - Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) - Bir cüzdan muamelesi deÄŸiÅŸtiÄŸinde komutu çalıştır (komuttaki %s muamele kimliÄŸi ile deÄŸiÅŸtirilecektir) - - - Maximum total fees to use in a single wallet transaction; setting this too low may abort large transactions (default: %s) - Tek cüzdan muamelesinde kullanılacak azami toplam ücret; bunu çok düşük olarak ayarlamak büyük muameleleri iptal edebilir (varsayılan: %s) - - - Reduce storage requirements by pruning (deleting) old blocks. This mode disables wallet support and is incompatible with -txindex. Warning: Reverting this setting requires re-downloading the entire blockchain. (default: 0 = disable pruning blocks, >%u = target size in MiB to use for block files) - Depolama gerekliliÄŸini eski blokları silerek düşür. Bu kip cüzdan desteÄŸini devre dışı bırakır ve -txindex ile uyumsuzdur. İkaz: Bu ayarı geri almak tüm blok zincirini yeniden indirmeyi gerektirir. (varsayılan: 0 = blokları silmeyi devre dışı bırak, >%u = MB olarak blok dosyaları için kullanılacak hedef boyut) - - - Set the number of script verification threads (%u to %d, 0 = auto, <0 = leave that many cores free, default: %d) - Betik kontrolü iÅŸ parçacıklarının sayısını belirler (%u ilâ %d, 0 = otomatik, <0 = bu sayıda çekirdeÄŸi kullanma, varsayılan: %d) - - - This is a pre-release test build - use at your own risk - do not use for mining or merchant applications - Bu yayın öncesi bir deneme sürümüdür - tüm riski siz üstlenmiÅŸ olursunuz - bitcoin oluÅŸturmak ya da ticari uygulamalar için kullanmayınız - - - Unable to bind to %s on this computer. Bitcoin Core is probably already running. - Bu bilgisayarda %s unsuruna baÄŸlanılamadı. Bitcoin ÇekirdeÄŸi muhtemelen hâlihazırda çalışmaktadır. - - - WARNING: abnormally high number of blocks generated, %d blocks received in the last %d hours (%d expected) - İKAZ: anormal yüksek sayıda blok oluÅŸturulmuÅŸtur, %d blok son %d saat içinde alınmıştır (%d bekleniyordu) - - - WARNING: check your network connection, %d blocks received in the last %d hours (%d expected) - İKAZ: aÄŸ baÄŸlantınızı kontrol ediniz, %d blok son %d saat içinde alınmıştır (%d bekleniyordu) - - - Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. - Uyarı: -paytxfee çok yüksek bir deÄŸere ayarlanmış! Bu, muamele gönderirseniz ödeyeceÄŸiniz muamele ücretidir. - - - Warning: The network does not appear to fully agree! Some miners appear to be experiencing issues. - Uyarı: ÅŸebeke tamamen mutabık deÄŸil gibi görünüyor! Bazı madenciler sorun yaşıyor gibi görünüyor. - - - Warning: We do not appear to fully agree with our peers! You may need to upgrade, or other nodes may need to upgrade. - Uyarı: eÅŸlerimizle tamamen mutabık deÄŸiliz gibi görünüyor! Güncelleme yapmanız gerekebilir ya da diÄŸer düğümlerin güncelleme yapmaları gerekebilir. - - - Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. - Uyarı: wallet.dat dosyasının okunması sırasında bir hata meydana geldi! Tüm anahtarlar doÄŸru bir ÅŸekilde okundu, ancak muamele verileri ya da adres defteri unsurları hatalı veya eksik olabilir. - - - 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. - Uyarı: wallet.dat bozuk, veriler geri kazanıldı! Özgün wallet.dat, wallet.{zamandamgası}.bak olarak %s klasörüne kaydedildi; bakiyeniz ya da muameleleriniz yanlışsa bir yedeklemeden tekrar yüklemeniz gerekir. - - - Whitelist peers connecting from the given netmask or IP address. Can be specified multiple times. - Belirtilen aÄŸ maskesi ya da IP adresinden baÄŸlanan eÅŸleri beyaz listeye al. Birden fazla kez belirtilebilir. - - - (default: 1) - (varsayılan: 1) - - - <category> can be: - <kategori> ÅŸunlar olabilir: - - - Attempt to recover private keys from a corrupt wallet.dat - Bozuk bir wallet.dat dosyasından özel anahtarları geri kazanmayı dene - - - Block creation options: - Blok oluÅŸturma seçenekleri: - - - Connect only to the specified node(s) - Sadece belirtilen düğüme veya düğümlere baÄŸlan - - - Connection options: - BaÄŸlantı seçenekleri: - - - Corrupted block database detected - Bozuk blok veritabanı tespit edildi - - - Debugging/Testing options: - Hata ayıklama/deneme seçenekleri: - - - Do not load the wallet and disable wallet RPC calls - Cüzdanı yükleme ve cüzdan RPC çaÄŸrılarını devre dışı bırak - - - Do you want to rebuild the block database now? - Blok veritabanını ÅŸimdi yeniden inÅŸa etmek istiyor musunuz? - - - Error initializing block database - Blok veritabanını baÅŸlatılırken bir hata meydana geldi - - - Error initializing wallet database environment %s! - %s cüzdan veritabanı ortamının baÅŸlatılmasında hata meydana geldi! - - - Error loading block database - Blok veritabanının yüklenmesinde hata - - - Error opening block database - Blok veritabanının açılışı sırasında hata - - - Error: Disk space is low! - Hata: Disk alanı düşük! - - - Failed to listen on any port. Use -listen=0 if you want this. - Herhangi bir portun dinlenmesi baÅŸarısız oldu. Bunu istiyorsanız -listen=0 seçeneÄŸini kullanınız. - - - If <category> is not supplied, output all debugging information. - <kategori> saÄŸlanmamışsa tüm hata ayıklama verilerini dök. - - - Importing... - İçe aktarılıyor... - - - Incorrect or no genesis block found. Wrong datadir for network? - Yanlış ya da bulunamamış doÄŸuÅŸ bloku. Åžebeke için yanlış veri klasörü mü? - - - Invalid -onion address: '%s' - Geçersiz -onion adresi: '%s' - - - Not enough file descriptors available. - Kafi derecede dosya tanımlayıcıları mevcut deÄŸil. - - - Only connect to nodes in network <net> (ipv4, ipv6 or onion) - Sadece <net> ÅŸebekesindeki düğümlere baÄŸlan (ipv4, ipv6 veya onion) - - - Prune cannot be configured with a negative value. - Prune negatif bir deÄŸerle yapılandırılamaz. - - - Prune mode is incompatible with -txindex. - Prune kipi -txindex ile uyumsuzdur. - - - Set database cache size in megabytes (%d to %d, default: %d) - Veritabanı önbellek boyutunu megabayt olarak belirt (%d ilâ %d, varsayılan: %d) - - - Set maximum block size in bytes (default: %d) - Azami blok boyutunu bayt olarak ayarla (varsayılan: %d) - - - Specify wallet file (within data directory) - Cüzdan dosyası belirtiniz (veri klasörünün içinde) - - - Use UPnP to map the listening port (default: %u) - Dinleme portunu haritalamak için UPnP kullan (varsayılan: %u) - - - Verifying blocks... - Bloklar kontrol ediliyor... - - - Verifying wallet... - Cüzdan kontrol ediliyor... - - - Wallet %s resides outside data directory %s - %s cüzdan %s veri klasörünün dışında bulunuyor - - - Wallet options: - Cüzdan seçenekleri: - - - Warning: This version is obsolete; upgrade required! - Uyarı: Bu sürüm çok eskidir; güncellemeniz gerekir! - - - You need to rebuild the database using -reindex to change -txindex - -txindex'i deÄŸiÅŸtirmek için veritabanını -reindex kullanarak tekrar inÅŸa etmeniz gerekmektedir - - - Imports blocks from external blk000??.dat file - Harici blk000??.dat dosyasından blokları içe aktarır - - - 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 - Belirtilen kaynaktan JSON-RPC baÄŸlantılarını kabul et. Bir <ip> için geçerli olanlar ÅŸunlardır: salt IP adresi (mesela 1.2.3.4), bir ÅŸebeke/aÄŸ maskesi (örneÄŸin 1.2.3.4/255.255.255.0) ya da bir ÅŸebeke/CIDR (mesela 1.2.3.4/24). Bu seçenek birden fazla kez belirtilebilir - - - An error occurred while setting up the RPC address %s port %u for listening: %s - Dinleme için RPC adresi %s port %u kurulurken bir hata meydana geldi: %s - - - Bind to given address and whitelist peers connecting to it. Use [host]:port notation for IPv6 - Belirtilen adrese baÄŸlan ve ona baÄŸlanan eÅŸleri beyaz listeye al. IPv6 için [makine]:port imlasını kullanınız - - - Bind to given address to listen for JSON-RPC connections. Use [host]:port notation for IPv6. This option can be specified multiple times (default: bind to all interfaces) - Belirtilen adrese baÄŸlan ve JSON RPC baÄŸlantıları için dinlemeye geç. IPv6 için [makine]:port imlasını kullanınız. Bu seçenek birden çok kez belirtilebilir (varsayılan: tüm arayüzlere baÄŸlan) - - - Cannot obtain a lock on data directory %s. Bitcoin Core is probably already running. - %s veri dizininde kilit elde edilemedi. Bitcoin ÇekirdeÄŸi muhtemelen hâlihazırda çalışmaktadır. - - - Create new files with system default permissions, instead of umask 077 (only effective with disabled wallet functionality) - Yeni dosyaları umask 077 yerine varsayılan izinlerle oluÅŸtur (sadece devre dışı cüzdan iÅŸlevselliÄŸi ile etkilidir) - - - Discover own IP addresses (default: 1 when listening and no -externalip or -proxy) - Kendi IP adreslerini keÅŸfet (varsayılan: dinlenildiÄŸinde ve -externalip ya da -proxy yoksa 1) - - - Error: Listening for incoming connections failed (listen returned error %s) - Hata: İçeri gelen baÄŸlantıların dinlenmesi baÅŸarısız oldu (dinleme %s hatasını verdi) - - - Error: Unsupported argument -socks found. Setting SOCKS version isn't possible anymore, only SOCKS5 proxies are supported. - Hata: Desteklenmeyen -socks argümanı bulundu. SOCKS sürümünün ayarlanması artık mümkün deÄŸildir, sadece SOCKS5 vekilleri desteklenmektedir. - - - Execute command when a relevant alert is received or we see a really long fork (%s in cmd is replaced by message) - İlgili bir uyarı alındığında ya da gerçekten uzun bir çatallama gördüğümüzde komutu çalıştır (komuttaki %s mesaj ile deÄŸiÅŸtirilir) - - - Fees (in BTC/Kb) smaller than this are considered zero fee for relaying (default: %s) - Kb başına BTC olarak bundan düşük ücretler aktarım için sıfır deÄŸerinde ücret olarak kabul edilir (varsayılan: %s) - - - If paytxfee is not set, include enough fee so transactions begin confirmation on average within n blocks (default: %u) - EÄŸer paytxfee ayarlanmadıysa kafi derecede ücret ekleyin ki muameleler teyite vasati n blok içinde baÅŸlasın (varsayılan: %u) - - - Invalid amount for -maxtxfee=<amount>: '%s' (must be at least the minrelay fee of %s to prevent stuck transactions) - -maxtxfee=<tutar> için geçersiz tutar: '%s' (Sıkışmış muameleleri önlemek için en az %s deÄŸerinde asgari aktarım ücretine eÅŸit olmalıdır) - - - Maximum size of data in data carrier transactions we relay and mine (default: %u) - Aktardığımız ve oluÅŸturduÄŸumuz veri taşıyıcı muamelelerindeki azami veri boyutu (varsayılan: %u) - - - Prune configured below the minimum of %d MB. Please use a higher number. - Prune, asgari deÄŸer olan %d MB'den düşük olarak ayarlanmıştır. Lütfen daha yüksek bir sayı kullanınız. - - - Query for peer addresses via DNS lookup, if low on addresses (default: 1 unless -connect) - Adres sayısı azaldıysa DNS sorgulamasıyla eÅŸ adresleri ara (varsayılan: 1 -connect kullanılmadıysa) - - - Randomize credentials for every proxy connection. This enables Tor stream isolation (default: %u) - Her vekil baÄŸlantısı için kimlik verilerini rastgele yap. Bu, Tor akış izolasyonunu etkinleÅŸtirir (varsayılan: %u) - - - Set maximum size of high-priority/low-fee transactions in bytes (default: %d) - Yüksek öncelikli/düşük ücretli muamelelerin azami boyutunu bayt olarak ayarla (varsayılan: %d) - - - Set the number of threads for coin generation if enabled (-1 = all cores, default: %d) - Etkinse bitcoin oluÅŸuturulmasına atanan iÅŸ parçacığı sayısını ayarla (-1 = tüm çekirdekler, varsayılan: %d) - - - The transaction amount is too small to send after the fee has been deducted - Bu muamele, ücret düşüldükten sonra göndermek için çok düşük - - - 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. - Bu ürün OpenSSL projesi tarafından OpenSSL araç takımı (http://www.openssl.org/) için geliÅŸtirilen yazılımlar, Eric Young (eay@cryptsoft.com) tarafından hazırlanmış ÅŸifreleme yazılımları ve Thomas Bernard tarafından programlanmış UPnP yazılımı içerir. - - - 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 - - bitcoind ya da bitcoin-qt ile -server seçeneÄŸini kullanmak için yapılandırma dosyasında bir rpc parolası belirtmeniz gerekir: -%s -AÅŸağıdaki rastgele oluÅŸturulan parolayı kullanmanız tavsiye edilir: -rpcuser=bitcoinrpc -rpcpassword=%s -(bu parolayı hatırlamanız gerekli deÄŸildir) -Kullanıcı ismi ile parolanın FARKLI olmaları gerekir. -Dosya mevcut deÄŸilse, sadece sahibi için okumayla sınırlı izin ile oluÅŸturunuz. -Sorunlar hakkında bildiri almak için alertnotify unsurunu ayarlamanız tavsiye edilir; -mesela: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com - - - - Warning: -maxtxfee is set very high! Fees this large could be paid on a single transaction. - İkaz: -maxtxfee çok yüksek bir deÄŸere ayarlanmış! Bu denli yüksek ücretler tek bir muamelede ödenebilir. - - - Warning: Please check that your computer's date and time are correct! If your clock is wrong Bitcoin Core will not work properly. - Uyarı: Lütfen bilgisayarınızın saat ve tarihinin doÄŸru olduÄŸunu kontol ediniz! Saatinizde gecikme varsa Bitcoin ÇekirdeÄŸi doÄŸru ÅŸekilde çalışamaz. - - - 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 - Beyaz listeye alınan eÅŸler DoS yasaklamasına uÄŸramazlar ve muameleleri zaten mempool'da olsalar da daima aktarılır, bu mesela bir geçit için kullanışlıdır - - - You need to rebuild the database using -reindex to go back to unpruned mode. This will redownload the entire blockchain - Prune olmayan kipe dönmek için veritabanını -reindex ile tekrar derlemeniz gerekir. Bu, tüm blok zincirini tekrar indirecektir - - - (default: %u) - (varsayılan: %u) - - - Accept public REST requests (default: %u) - Herkese açık REST taleplerini kabul et (varsayılan: %u) - - - Activating best chain... - En iyi zincir etkinleÅŸtiriliyor... - - - Can't run with a wallet in prune mode. - Prune kipindeki bir cüzdan ile çalışamaz. - - - Cannot resolve -whitebind address: '%s' - -whitebind adresi çözümlenemedi: '%s' - - - Choose data directory on startup (default: 0) - BaÅŸlangıçta veri klasörü seç (varsayılan: 0) - - - Connect through SOCKS5 proxy - SOCKS5 vekil sunucusu vasıtasıyla baÄŸlan - - - Copyright (C) 2009-%i The Bitcoin Core Developers - Telif hakkı 2009-%i Bitcoin ÇekirdeÄŸi GeliÅŸtiricileri - - - Could not parse -rpcbind value %s as network address - -rpcbind deÄŸeri %s ÅŸebeke adresi olarak ayrıştırılamadı - - - Error loading wallet.dat: Wallet requires newer version of Bitcoin Core - wallet.dat dosyasının yüklenmesinde hata: Cüzdan Bitcoin ÇekirdeÄŸinin daha yeni bir sürümünü gerektirmektedir - - - Error reading from database, shutting down. - Veritabanından okumada hata, kapatılıyor. - - - Error: Unsupported argument -tor found, use -onion. - Hata: Deskteklenmeyen -tor argümanı bulundu, -onion kullanınız. - - - Fee (in BTC/kB) to add to transactions you send (default: %s) - Yolladığınız muamelelere kB başına BTC olarak eklenecek ücret (varsayılan: %s) - - - Information - Bilgi - - - Initialization sanity check failed. Bitcoin Core is shutting down. - BaÅŸlatma sınaması baÅŸarısız oldu. Bitcoin ÇekirdeÄŸi kapatılıyor. - - - Invalid amount for -maxtxfee=<amount>: '%s' - -maxtxfee=<tutar> için geçersiz tutar: '%s' - - - Invalid amount for -minrelaytxfee=<amount>: '%s' - -minrelaytxfee=<amount> için geçersiz meblaÄŸ: '%s' - - - Invalid amount for -mintxfee=<amount>: '%s' - -mintxfee=<amount> için geçersiz meblaÄŸ: '%s' - - - Invalid amount for -paytxfee=<amount>: '%s' (must be at least %s) - -paytxfee=<tutar>:'%s' unsurunda geçersiz tutar (asgari %s olması lazımdır) - - - Invalid netmask specified in -whitelist: '%s' - -whitelist: '%s' unsurunda geçersiz bir aÄŸ maskesi belirtildi - - - Keep at most <n> unconnectable transactions in memory (default: %u) - Hafızada en çok <n> baÄŸlanılamaz muamele tut (varsayılan: %u) - - - Need to specify a port with -whitebind: '%s' - -whitebind: '%s' ile bir port belirtilmesi lazımdır - - - Node relay options: - Düğüm röle seçenekleri: - - - RPC SSL options: (see the Bitcoin Wiki for SSL setup instructions) - RPC SSL seçenekleri: (SSL kurulumu yönergeleri için Bitcoin vikisine bakınız) - - - RPC server options: - RPC sunucu seçenekleri: - - - RPC support for HTTP persistent connections (default: %d) - Kalıcı HTTP baÄŸlantıları için RPC desteÄŸi (varsayılan: %d) - - - Rebuild block chain index from current blk000??.dat files on startup - BaÅŸlangıçta blok zinciri indeksini güncel blk000??.dat dosyalarından tekrar inÅŸa et - - - Receive and display P2P network alerts (default: %u) - P2P ağından gelen önemli uyarıları alın ve gösterin (önseçili deÄŸer: %u) - - - Send trace/debug info to console instead of debug.log file - Trace/hata ayıklama verilerini debug.log dosyası yerine konsola gönder - - - Send transactions as zero-fee transactions if possible (default: %u) - Muameleleri mümkünse ücretsiz olarak gönder (varsayılan: %u) - - - Set SSL root certificates for payment request (default: -system-) - Ödeme talebi için SSL kök sertifikalarını belirle (varsayılan: -system-) - - - Set language, for example "de_DE" (default: system locale) - Lisan belirt, mesela "de_De" (varsayılan: sistem dili) - - - Show all debugging options (usage: --help -help-debug) - Tüm hata ayıklama seçeneklerini göster (kullanımı: --help -help-debug) - - - Show splash screen on startup (default: 1) - BaÅŸlatıldığında baÅŸlangıç ekranını göster (varsayılan: 1) - - - Shrink debug.log file on client startup (default: 1 when no -debug) - İstemci baÅŸlatıldığında debug.log dosyasını küçült (varsayılan: -debug bulunmadığında 1) - - - Signing transaction failed - Muamelenin imzalanması baÅŸarısız oldu - - - Start minimized - Küçültülmüş olarak baÅŸlat - - - The transaction amount is too small to pay the fee - Muamele meblağı ücreti ödemek için çok düşük - - - This is experimental software. - Bu, deneysel bir yazılımdır. - - - Transaction amount too small - Muamele meblağı çok düşük - - - Transaction amounts must be positive - Muamele tutarının pozitif olması lazımdır - - - Transaction too large for fee policy - Ücret politikası için çok büyük muamele - - - Transaction too large - Muamele çok büyük - - - UI Options: - Arayüz Seçenkleri: - - - Unable to bind to %s on this computer (bind returned error %s) - Bu bilgisayarda %s unsuruna baÄŸlanılamadı (baÄŸlanma %s hatasını verdi) - - - Use UPnP to map the listening port (default: 1 when listening) - Dinlenecek portu haritalamak için UPnP kullan (varsayılan: dinlenildiÄŸinde 1) - - - Username for JSON-RPC connections - JSON-RPC baÄŸlantıları için kullanıcı ismi - - - Wallet needed to be rewritten: restart Bitcoin Core to complete - Cüzdanın tekrar yazılması gerekmektedir: tamamlamak için Bitcoin ÇekirdeÄŸini yeniden baÅŸlatın - - - Warning - Uyarı - - - Warning: Unsupported argument -benchmark ignored, use -debug=bench. - Uyarı: Deskteklenmeyen -benchmark argümanı görmezden gelindi, -debug=bench kullanınız. - - - Warning: Unsupported argument -debugnet ignored, use -debug=net. - Uyarı: Desteklenmeyen -debugnet argümanı görmezden gelindi, debug=net kullanınız. - - - Zapping all transactions from wallet... - Cüzdandaki tüm muameleler kaldırılıyor... - - - on startup - baÅŸlangıçta - - - wallet.dat corrupt, salvage failed - wallet.dat bozuk, geri kazanım baÅŸarısız oldu - - - Password for JSON-RPC connections - JSON-RPC baÄŸlantıları için parola - - - Execute command when the best block changes (%s in cmd is replaced by block hash) - En iyi blok deÄŸiÅŸtiÄŸinde komutu çalıştır (komut için %s parametresi blok hash deÄŸeri ile deÄŸiÅŸtirilecektir) - - - Upgrade wallet to latest format - Cüzdanı en yeni biçime güncelle - - - Rescan the block chain for missing wallet transactions - Blok zincirini eksik cüzdan muameleleri için tekrar tara - - - Use OpenSSL (https) for JSON-RPC connections - JSON-RPC baÄŸlantıları için OpenSSL (https) kullan - - - This help message - Bu yardım mesajı - - - Allow DNS lookups for -addnode, -seednode and -connect - -addnode, -seednode ve -connect için DNS aramalarına izin ver - - - Loading addresses... - Adresler yükleniyor... - - - Error loading wallet.dat: Wallet corrupted - wallet.dat dosyasının yüklenmesinde hata oluÅŸtu: bozuk cüzdan - - - (1 = keep tx meta data e.g. account owner and payment request information, 2 = drop tx meta data) - (1 = tx meta verilerini tut mesela hesap sahibi ve ödeme talebi bilgileri, 2 = tx meta verilerini at) - - - How thorough the block verification of -checkblocks is (0-4, default: %u) - -checkblocks'un blok kontrolünün ne kadar kapsamlı olacağı (0 ilâ 4, varsayılan: %u) - - - Maintain a full transaction index, used by the getrawtransaction rpc call (default: %u) - Muamelelerin tamamının indeksini tut, getrawtransaction rpc çaÄŸrısı tarafından kullanılır (varsayılan: %u) - - - Number of seconds to keep misbehaving peers from reconnecting (default: %u) - Aksaklık gösteren eÅŸlerle terkar baÄŸlantıyı engelleme süresi, saniye olarak (varsayılan: %u) - - - Output debugging information (default: %u, supplying <category> is optional) - Hata ayıklama bilgisi dök (varsayılan: %u, <kategori> saÄŸlanması seçime dayalıdır) - - - Use separate SOCKS5 proxy to reach peers via Tor hidden services (default: %s) - EÅŸlere gizli Tor servisleri ile ulaÅŸmak için ayrı SOCKS5 vekil sunucusu kullan (varsayılan: %s) - - - (default: %s) - (varsayılan: %s) - - - Acceptable ciphers (default: %s) - Kabul edilebilir ÅŸifreler (varsayılan: %s) - - - Always query for peer addresses via DNS lookup (default: %u) - EÅŸ adresleri sorgulaması için daima DNS aramasını kullan (varsayılan: %u) - - - Error loading wallet.dat - wallet.dat dosyasının yüklenmesinde hata oluÅŸtu - - - Generate coins (default: %u) - Bitcoin oluÅŸtur (varsayılan: %u) - - - How many blocks to check at startup (default: %u, 0 = all) - BaÅŸlangıçta kontrol edilecek blok sayısı (varsayılan: %u, 0 = hepsi) - - - Include IP addresses in debug output (default: %u) - Hata ayıklama çıktısına IP adreslerini dahil et (varsayılan: %u) - - - Invalid -proxy address: '%s' - Geçersiz -proxy adresi: '%s' - - - Listen for JSON-RPC connections on <port> (default: %u or testnet: %u) - JSON-RPC baÄŸlantılarını <port> üzerinde dinle (varsayılan: %u veya tesnet: %u) - - - Listen for connections on <port> (default: %u or testnet: %u) - BaÄŸlantılar için dinlenecek <port> (varsayılan: %u ya da testnet: %u) - - - Maintain at most <n> connections to peers (default: %u) - EÅŸler ile en çok <n> adet baÄŸlantı kur (varsayılan: %u) - - - Make the wallet broadcast transactions - Cüzdanın muameleleri yayınlamasını saÄŸla - - - Maximum per-connection receive buffer, <n>*1000 bytes (default: %u) - Her baÄŸlantı için azami alım tamponu, <n>*1000 bayt (varsayılan: %u) - - - Maximum per-connection send buffer, <n>*1000 bytes (default: %u) - Her baÄŸlantı için azami yollama tamponu, <n>*1000 bayt (varsayılan: %u) - - - Prepend debug output with timestamp (default: %u) - Hata ayıklama verilerinin önüne zaman damgası ekle (varsayılan: %u) - - - Relay and mine data carrier transactions (default: %u) - Veri taşıyıcı muameleleri oluÅŸtur ve aktar (varsayılan: %u) - - - Relay non-P2SH multisig (default: %u) - P2SH olmayan çoklu imzaları aktar (varsayılan: %u) - - - Server certificate file (default: %s) - Sunucu sertifika dosyası (varsayılan: %s) - - - Server private key (default: %s) - Sunucu özel anahtarı (varsayılan: %s) - - - Set key pool size to <n> (default: %u) - Anahtar alan boyutunu <n> deÄŸerine ayarla (varsayılan: %u) - - - Set minimum block size in bytes (default: %u) - Bayt olarak asgari blok boyutunu tanımla (varsayılan: %u) - - - Set the number of threads to service RPC calls (default: %d) - Hizmet RCP aramaları iÅŸ parçacığı sayısını belirle (varsayılan: %d) - - - Specify configuration file (default: %s) - Yapılandırma dosyası belirtiniz (varsayılan: %s) - - - Specify connection timeout in milliseconds (minimum: 1, default: %d) - BaÄŸlantı zaman aşım süresini milisaniye olarak belirt (asgari: 1, varsayılan: %d) - - - Specify pid file (default: %s) - Pid dosyası belirtiniz (varsayılan: %s) - - - Spend unconfirmed change when sending transactions (default: %u) - Gönderme muamelelerinde teyit edilmemiÅŸ para üstünü harca (varsayılan: %u) - - - Threshold for disconnecting misbehaving peers (default: %u) - Aksaklık gösteren eÅŸlerle baÄŸlantıyı kesme sınırı (varsayılan: %u) - - - Unknown network specified in -onlynet: '%s' - -onlynet için bilinmeyen bir ÅŸebeke belirtildi: '%s' - - - Cannot resolve -bind address: '%s' - -bind adresi çözümlenemedi: '%s' - - - Cannot resolve -externalip address: '%s' - -externalip adresi çözümlenemedi: '%s' - - - Invalid amount for -paytxfee=<amount>: '%s' - -paytxfee=<meblaÄŸ> için geçersiz meblaÄŸ: '%s' - - - Insufficient funds - Yetersiz bakiye - - - Loading block index... - Blok indeksi yükleniyor... - - - Add a node to connect to and attempt to keep the connection open - BaÄŸlanılacak düğüm ekle ve baÄŸlantıyı zinde tutmaya çalış - - - Loading wallet... - Cüzdan yükleniyor... - - - Cannot downgrade wallet - Cüzdan eski biçime geri alınamaz - - - Cannot write default address - Varsayılan adres yazılamadı - - - Rescanning... - Yeniden tarama... - - - Done loading - Yükleme tamamlandı - - - Error - Hata - - - \ No newline at end of file diff --git a/src/qt/locale/bitcoin_uk.ts b/src/qt/locale/bitcoin_uk.ts deleted file mode 100644 index fb2f9f881..000000000 --- a/src/qt/locale/bitcoin_uk.ts +++ /dev/null @@ -1,3592 +0,0 @@ - - - AddressBookPage - - Right-click to edit address or label - Клікніть правою кнопкою Ð´Ð»Ñ Ñ€ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ð°Ð´Ñ€ÐµÑи або мітки - - - Create a new address - Створити нову адреÑу - - - &New - &Ðова - - - Copy the currently selected address to the system clipboard - Копіювати виділену адреÑу в буфер обміну - - - &Copy - &Копіювати - - - C&lose - З&акрити - - - &Copy Address - &Скопіювати адреÑу - - - Delete the currently selected address from the list - Вилучити вибрані адреÑи з переліку - - - Export the data in the current tab to a file - ЕкÑпортувати дані з поточної вкладки в файл - - - &Export - &ЕкÑпорт... - - - &Delete - &Видалити - - - Choose the address to send coins to - Виберіть адреÑу Ð´Ð»Ñ Ð²Ñ–Ð´Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð½Ñ Ð¼Ð¾Ð½ÐµÑ‚ - - - Choose the address to receive coins with - Виберіть адреÑу Ð´Ð»Ñ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð¼Ð¾Ð½ÐµÑ‚ - - - C&hoose - &Обрати - - - Sending addresses - ÐдреÑи Ð´Ð»Ñ Ð²Ñ–Ð´Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð½Ñ - - - Receiving addresses - ÐдреÑи Ð´Ð»Ñ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ - - - These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins. - Це ваші Bitcoin-адреÑи Ð´Ð»Ñ Ð²Ñ–Ð´Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð½Ñ Ð¿Ð»Ð°Ñ‚ÐµÐ¶Ñ–Ð². Перед відправленнÑм монет завжди перевірÑйте Ñуму та адреÑу прийому. - - - These are your Bitcoin addresses for receiving payments. It is recommended to use a new receiving address for each transaction. - Це ваша нова Bitcoin адреÑа Ð´Ð»Ñ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð¿Ð»Ð°Ñ‚ÐµÐ¶Ñ–Ð². Рекомендовано викориÑтовувати нову адреÑу Ð´Ð»Ñ ÐºÐ¾Ð¶Ð½Ð¾Ñ— транзакції. - - - Copy &Label - Скопіювати &мітку - - - &Edit - &Редагувати - - - Export Address List - ЕкÑпортувати ÑпиÑок Ð°Ð´Ñ€ÐµÑ - - - Comma separated file (*.csv) - ЗначеннÑ, розділені комою (*.csv) - - - Exporting Failed - Помилка екÑпорту - - - There was an error trying to save the address list to %1. Please try again. - Виникла помилка при Ñпробі Ð·Ð±ÐµÑ€Ñ–Ð³Ð°Ð½Ð½Ñ Ð°Ð´Ñ€ÐµÑ Ð´Ð¾ %1. Будь лаÑка Ñпробуйте ще. - - - - AddressTableModel - - Label - Ðазва - - - Address - ÐдреÑа - - - (no label) - (немає назви) - - - - AskPassphraseDialog - - Passphrase Dialog - Діалог Ð²Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð¿Ð°Ñ€Ð¾Ð»ÑŽ - - - Enter passphrase - Введіть пароль - - - New passphrase - Ðовий пароль - - - Repeat new passphrase - Повторіть пароль - - - Encrypt wallet - Зашифрувати гаманець - - - This operation needs your wallet passphrase to unlock the wallet. - Ð¦Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ñ–Ñ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±ÑƒÑ” пароль Ð´Ð»Ñ Ñ€Ð¾Ð·Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð³Ð°Ð¼Ð°Ð½Ñ†Ñ. - - - Unlock wallet - Розблокувати гаманець - - - This operation needs your wallet passphrase to decrypt the wallet. - Ð¦Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ñ–Ñ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±ÑƒÑ” пароль Ð´Ð»Ñ Ð´ÐµÑˆÐ¸Ñ„Ñ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð³Ð°Ð¼Ð°Ð½Ñ†Ñ. - - - Decrypt wallet - Дешифрувати гаманець - - - Change passphrase - Змінити пароль - - - Confirm wallet encryption - Підтвердити ÑˆÐ¸Ñ„Ñ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð³Ð°Ð¼Ð°Ð½Ñ†Ñ - - - Warning: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR BITCOINS</b>! - УВÐГÐ: Якщо ви зашифруєте гаманець Ñ– забудете пароль, ви <b>ВТРÐТИТЕ ВСІ СВОЇ БІТКОІÐИ</b>! - - - Are you sure you wish to encrypt your wallet? - Ви дійÑно хочете зашифрувати Ñвій гаманець? - - - Bitcoin Core 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. - Клієнт «Bitcoin Core» буде закрито Ð´Ð»Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑу шифруваннÑ. Пам'Ñтайте, що ÑˆÐ¸Ñ„Ñ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð³Ð°Ð¼Ð°Ð½Ñ†Ñ Ð½Ðµ зможе повніÑтю захиÑтити ваші біткоїни від крадіжки Ñкщо ваш комп'ютер буде інфіковано шкідливими програмами. - - - 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. - Ð’ÐЖЛИВО: Ð’ÑÑ– попередні резервні копії, Ñкі ви зробили з вашого файлу Ð³Ð°Ð¼Ð°Ð½Ñ†Ñ Ð¿Ð¾Ð²Ð¸Ð½Ð½Ñ– бути замінені новоÑтвореним, зашифрованим файлом гаманцÑ. З міркувань безпеки, попередні резервні копії незашифрованого файла Ð³Ð°Ð¼Ð°Ð½Ñ†Ñ Ñтануть непридатними одразу ж, Ñк тільки ви почнете викориÑтовувати новий, зашифрований гаманець. - - - Warning: The Caps Lock key is on! - Увага: Ввімкнено Caps Lock! - - - Wallet encrypted - Гаманець зашифровано - - - 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>. - Введіть нову кодову фразу Ð´Ð»Ñ Ð³Ð°Ð¼Ð°Ð½Ñ†Ñ.<br/>Будь лаÑка, викориÑтовуйте кодові фрази що міÑÑ‚Ñть <b> щонайменше деÑÑть випадкових Ñимволів </b> або <b> щонайменше віÑім Ñлів </b>. - - - Enter the old passphrase and new passphrase to the wallet. - Введіть Ñтарий пароль та новий пароль до гаманцÑ. - - - Wallet encryption failed - Ðе вдалоÑÑ Ð·Ð°ÑˆÐ¸Ñ„Ñ€ÑƒÐ²Ð°Ñ‚Ð¸ гаманець - - - Wallet encryption failed due to an internal error. Your wallet was not encrypted. - Виникла помилка під Ñ‡Ð°Ñ ÑˆÐ¸Ñ„Ñ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð³Ð°Ð¼Ð°Ð½Ñ†Ñ. Ваш гаманець не було зашифровано. - - - The supplied passphrases do not match. - Введені паролі не Ñпівпадають. - - - Wallet unlock failed - Ðе вдалоÑÑ Ñ€Ð¾Ð·Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ñ‚Ð¸ гаманець - - - The passphrase entered for the wallet decryption was incorrect. - Введений пароль Ñ” неправильним. - - - Wallet decryption failed - Ðе вдалоÑÑ Ñ€Ð¾Ð·ÑˆÐ¸Ñ„Ñ€ÑƒÐ²Ð°Ñ‚Ð¸ гаманець - - - Wallet passphrase was successfully changed. - Пароль було уÑпішно змінено. - - - - BitcoinGUI - - Sign &message... - &ПідпиÑати повідомленнÑ... - - - Synchronizing with network... - Ð¡Ð¸Ð½Ñ…Ñ€Ð¾Ð½Ñ–Ð·Ð°Ñ†Ñ–Ñ Ð· мережею... - - - &Overview - &ОглÑд - - - Node - Вузол - - - Show general overview of wallet - Показати Ñтан Ð³Ð°Ð¼Ð°Ð½Ñ†Ñ - - - &Transactions - &Транзакції - - - Browse transaction history - ПереглÑнути Ñ–Ñторію транзакцій - - - E&xit - &Вихід - - - Quit application - Вийти - - - About &Qt - &Про Qt - - - Show information about Qt - Показати інформацію про Qt - - - &Options... - &Параметри... - - - &Encrypt Wallet... - &Ð¨Ð¸Ñ„Ñ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð³Ð°Ð¼Ð°Ð½Ñ†Ñ... - - - &Backup Wallet... - &Резервне ÐºÐ¾Ð¿Ñ–ÑŽÐ²Ð°Ð½Ð½Ñ Ð³Ð°Ð¼Ð°Ð½Ñ†Ñ... - - - &Change Passphrase... - Змінити парол&ÑŒ... - - - &Sending addresses... - ÐдреÑи Ð´Ð»Ñ &відправленнÑ... - - - &Receiving addresses... - ÐдреÑи Ð´Ð»Ñ &отриманнÑ... - - - Open &URI... - Відкрити &URI - - - Bitcoin Core client - Клієнт «Bitcoin Core» - - - Importing blocks from disk... - Імпорт блоків з диÑку... - - - Reindexing blocks on disk... - ПереіндекÑÐ°Ñ†Ñ–Ñ Ð±Ð»Ð¾ÐºÑ–Ð² на диÑку ... - - - Send coins to a Bitcoin address - Відправити монети на вказану адреÑу - - - Backup wallet to another location - Резервне ÐºÐ¾Ð¿Ñ–ÑŽÐ²Ð°Ð½Ð½Ñ Ð³Ð°Ð¼Ð°Ð½Ñ†Ñ Ð² інше міÑце - - - Change the passphrase used for wallet encryption - Змінити пароль, Ñкий викориÑтовуєтьÑÑ Ð´Ð»Ñ ÑˆÐ¸Ñ„Ñ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð³Ð°Ð¼Ð°Ð½Ñ†Ñ - - - &Debug window - Ð’&ікно Ð·Ð½ÐµÐ²Ð°Ð´Ð¶ÐµÐ½Ð½Ñ - - - Open debugging and diagnostic console - Відкрити конÑоль Ð·Ð½ÐµÐ²Ð°Ð´Ð¶ÐµÐ½Ð½Ñ Ñ– діагноÑтики - - - &Verify message... - П&еревірити повідомленнÑ... - - - Bitcoin - Bitcoin - - - Wallet - Гаманець - - - &Send - &Відправити - - - &Receive - &Отримати - - - Show information about Bitcoin Core - Показати інформацію про Bitcoin Core - - - &Show / Hide - Показа&ти / Приховати - - - Show or hide the main Window - Показує або приховує головне вікно - - - Encrypt the private keys that belong to your wallet - Зашифрувати закриті ключі, що знаходÑтьÑÑ Ñƒ вашому гаманці - - - Sign messages with your Bitcoin addresses to prove you own them - Підтвердіть, що Ви Ñ” влаÑником Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð¿Ñ–Ð´Ð¿Ð¸Ñавши його Вашою Bitcoin-адреÑою - - - Verify messages to ensure they were signed with specified Bitcoin addresses - Перевірте Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ð²Ð¿ÐµÐ²Ð½ÐµÐ½Ð¾Ñті, що воно підпиÑано вказаною Bitcoin-адреÑою - - - &File - &Файл - - - &Settings - &ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ - - - &Help - &Довідка - - - Tabs toolbar - Панель вкладок - - - Bitcoin Core - Bitcoin Core - - - Request payments (generates QR codes and bitcoin: URIs) - Створити запит платежу (генерує QR-код та bitcoin: URI) - - - &About Bitcoin Core - П&ро Bitcoin Core - - - Modify configuration options for Bitcoin Core - Редагувати параметри Bitcoin Core - - - Show the list of used sending addresses and labels - Показати ÑпиÑок Ð°Ð´Ñ€ÐµÑ Ñ– міток, що були викориÑтані Ð´Ð»Ñ Ð²Ñ–Ð´Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð½Ñ - - - Show the list of used receiving addresses and labels - Показати ÑпиÑок Ð°Ð´Ñ€ÐµÑ Ñ– міток, що були викориÑтані Ð´Ð»Ñ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ - - - Open a bitcoin: URI or payment request - Відкрити bitcoin: URI чи запит платежу - - - &Command-line options - П&араметри командного Ñ€Ñдка - - - Show the Bitcoin Core help message to get a list with possible Bitcoin command-line options - Показати довідку Bitcoin Core Ð´Ð»Ñ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð¿ÐµÑ€ÐµÐ»Ñ–ÐºÑƒ можливих параметрів командного Ñ€Ñдка. - - - %n active connection(s) to Bitcoin network - %n активне з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð· мережею Bitcoin%n активні з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð· мережею Bitcoin%n активних з'єднань з мережею Bitcoin - - - No block source available... - ÐедоÑтупно жодного джерела блоків... - - - Processed %n block(s) of transaction history. - Оброблено %n блок Ñ–Ñторії транзакцій.Оброблено %n блоки Ñ–Ñторії транзакцій.Оброблено %n блоків Ñ–Ñторії транзакцій. - - - %n hour(s) - %n година%n години%n годин - - - %n day(s) - %n день%n дні%n днів - - - %n week(s) - %n тиждень%n тижнÑ%n тижнів - - - %1 and %2 - %1 та %2 - - - %n year(s) - %n рік%n роки%n років - - - %1 behind - %1 тому - - - Last received block was generated %1 ago. - ОÑтанній отриманий блок було згенеровано %1 тому. - - - Transactions after this will not yet be visible. - Пізніші транзакції не буде видно. - - - Error - Помилка - - - Warning - ÐŸÐ¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ - - - Information - Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ - - - Up to date - Синхронізовано - - - Catching up... - СинхронізуєтьÑÑ... - - - Date: %1 - - Дата: %1 - - - - Amount: %1 - - КількіÑть: %1 - - - - Type: %1 - - Тип: %1 - - - - Label: %1 - - Мітка: %1 - - - - Address: %1 - - ÐдреÑа: %1 - - - - Sent transaction - ÐадіÑлані транзакції - - - Incoming transaction - Отримані транзакції - - - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - <b>Зашифрований</b> гаманець <b>розблоковано</b> - - - Wallet is <b>encrypted</b> and currently <b>locked</b> - <b>Зашифрований</b> гаманець <b>заблоковано</b> - - - - ClientModel - - Network Alert - Ð¡Ð¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð¼ÐµÑ€ÐµÐ¶Ñ– - - - - CoinControlDialog - - Coin Selection - Вибір Монет - - - Quantity: - КількіÑть: - - - Bytes: - Байтів: - - - Amount: - Сума: - - - Priority: - Пріорітет: - - - Fee: - КоміÑÑ–Ñ: - - - Dust: - Пил: - - - After Fee: - ПіÑÐ»Ñ ÐºÐ¾Ð¼Ñ–ÑÑ–Ñ—: - - - Change: - Решта: - - - (un)select all - Вибрати/знÑти вÑÑ– - - - Tree mode - Деревом - - - List mode - СпиÑком - - - Amount - КількіÑть - - - Received with label - Отримано з позначкою - - - Received with address - Отримано з адреÑою - - - Date - Дата - - - Confirmations - Підтверджень - - - Confirmed - Підтверджені - - - Priority - Пріоритет - - - Copy address - Скопіювати адреÑу - - - Copy label - Скопіювати мітку - - - Copy amount - Скопіювати Ñуму - - - Copy transaction ID - Скопіювати ID транзакції - - - Lock unspent - Заблокувати - - - Unlock unspent - Розблокувати - - - Copy quantity - Скопіювати кількіÑть - - - Copy fee - Скопіювати коміÑÑ–ÑŽ - - - Copy after fee - Скопіювати піÑÐ»Ñ ÐºÐ¾Ð¼Ñ–ÑÑ–Ñ— - - - Copy bytes - Скопіювати байти - - - Copy priority - Скопіювати пріорітет - - - Copy dust - Скопіювати пил - - - Copy change - Скопіювати решту - - - highest - найвищий - - - higher - вищий - - - high - виÑокий - - - medium-high - вище за Ñередній - - - medium - Ñередній - - - low-medium - нижче за Ñередній - - - low - низький - - - lower - нижчий - - - lowest - найнижчий - - - (%1 locked) - (%1 заблоковано) - - - none - відÑутній - - - This label turns red if the transaction size is greater than 1000 bytes. - Ð¦Ñ Ð¿Ð¾Ð·Ð½Ð°Ñ‡ÐºÐ° Ñтане червоною, Ñкщо розмір транзакції перевищить 1000 байтів. - - - This label turns red if the priority is smaller than "medium". - Ð¦Ñ Ð¿Ð¾Ð·Ð½Ð°Ñ‡ÐºÐ° Ñтане червоною, Ñкщо пріоритет транзакції менше, ніж «Ñередній». - - - This label turns red if any recipient receives an amount smaller than %1. - Ð¦Ñ Ð¿Ð¾Ð·Ð½Ð°Ñ‡ÐºÐ° Ñтане червоною, Ñкщо будь-Ñкий отримувач отримає Ñуму, меншу за %1. - - - Can vary +/- %1 satoshi(s) per input. - Може відрізнÑтиÑÑ Ð½Ð° +/- %1 Ñатоші за вхід - - - yes - так - - - no - ні - - - This means a fee of at least %1 per kB is required. - Це означає, що необхідно внеÑти коміÑÑ–ÑŽ (щонайменше %1 за КБ). - - - Can vary +/- 1 byte per input. - Може відрізнÑтиÑÑ Ð½Ð° +/- 1 байт за вхід. - - - Transactions with higher priority are more likely to get included into a block. - Транзакції з вищим пріоритетом мають більше шанÑів бути включеними до блоку. - - - (no label) - (немає назви) - - - change from %1 (%2) - решта з %1 (%2) - - - (change) - (решта) - - - - EditAddressDialog - - Edit Address - Редагувати адреÑу - - - &Label - &Мітка - - - The label associated with this address list entry - Мітка, пов'Ñзана з цим запиÑом ÑпиÑку Ð°Ð´Ñ€ÐµÑ - - - The address associated with this address list entry. This can only be modified for sending addresses. - ÐдреÑа, пов'Ñзана з цим запиÑом ÑпиÑку адреÑ. Це поле може бути модифіковане лише Ð´Ð»Ñ Ð°Ð´Ñ€ÐµÑ Ð²Ñ–Ð´Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð½Ñ. - - - &Address - &ÐдреÑа - - - New receiving address - Ðова адреÑа Ð´Ð»Ñ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ - - - New sending address - Ðова адреÑа Ð´Ð»Ñ Ð²Ñ–Ð´Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð½Ñ - - - Edit receiving address - Редагувати адреÑу Ð´Ð»Ñ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ - - - Edit sending address - Редагувати адреÑу Ð´Ð»Ñ Ð²Ñ–Ð´Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð½Ñ - - - The entered address "%1" is already in the address book. - Введена адреÑа «%1» вже приÑÑƒÑ‚Ð½Ñ Ð² адреÑній книзі. - - - The entered address "%1" is not a valid Bitcoin address. - Введена адреÑа «%1» не Ñ” коректною адреÑою в мережі Bitcoin. - - - Could not unlock wallet. - Ðеможливо розблокувати гаманець. - - - New key generation failed. - Ðе вдалоÑÑ Ð·Ð³ÐµÐ½ÐµÑ€ÑƒÐ²Ð°Ñ‚Ð¸ нові ключі. - - - - FreespaceChecker - - A new data directory will be created. - Буде Ñтворено новий каталог даних. - - - name - назва - - - Directory already exists. Add %1 if you intend to create a new directory here. - Каталог вже Ñ–Ñнує. Додайте %1, Ñкщо ви мали намір Ñтворити там новий каталог. - - - Path already exists, and is not a directory. - ШлÑÑ… вже Ñ–Ñнує Ñ– не Ñ” каталогом. - - - Cannot create data directory here. - Тут неможливо Ñтворити каталог даних. - - - - HelpMessageDialog - - Bitcoin Core - Bitcoin Core - - - version - верÑÑ–Ñ— - - - (%1-bit) - (%1-бітний) - - - About Bitcoin Core - Про Bitcoin Core - - - Command-line options - Параметри командного Ñ€Ñдка - - - Usage: - ВикориÑтаннÑ: - - - command-line options - параметри командного Ñ€Ñдка - - - - Intro - - Welcome - Ð’Ñ–Ñ‚Ð°Ð½Ð½Ñ - - - Welcome to Bitcoin Core. - ЛаÑкаво проÑимо в Bitcoin Core. - - - As this is the first time the program is launched, you can choose where Bitcoin Core will store its data. - ОÑкільки це перший запуÑк програми, ви можете обрати де Bitcoin Core буде зберігати дані. - - - Bitcoin Core will download and store a copy of the Bitcoin block chain. At least %1GB of data will be stored in this directory, and it will grow over time. The wallet will also be stored in this directory. - Bitcoin Core завантажить та збереже копію ланцюжка блоків Bitcoin. Щонайменше %1ГБ даних буде збережено в цьому каталозі. Гаманець теж буде збережено в цьому каталозі. - - - Use the default data directory - ВикориÑтовувати типовий каталог даних - - - Use a custom data directory: - ВикориÑтовувати Ñвій каталог даних: - - - Bitcoin Core - Bitcoin Core - - - Error: Specified data directory "%1" cannot be created. - Помилка: неможливо Ñтворити обраний каталог даних «%1». - - - Error - Помилка - - - %n GB of free space available - ДоÑтупно %n ГБ вільного проÑторуДоÑтупно %n ГБ вільного проÑторуДоÑтупно %n ГБ вільного проÑтору - - - (of %n GB needed) - (в той чаÑ, Ñк необхідно %n ГБ)(в той чаÑ, Ñк необхідно %n ГБ)(в той чаÑ, Ñк необхідно %n ГБ) - - - - OpenURIDialog - - Open URI - Відкрити URI - - - Open payment request from URI or file - Відкрити запит платежу з URI або файлу - - - URI: - URI: - - - Select payment request file - Виберіть файл запиту платежу - - - Select payment request file to open - Виберіть файл запиту платежу Ð´Ð»Ñ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ñ‚Ñ - - - - OptionsDialog - - Options - Параметри - - - &Main - &Головні - - - Size of &database cache - Розмір &кешу бази даних - - - MB - МБ - - - Number of script &verification threads - КількіÑть потоків &Ñценарію перевірки - - - Accept connections from outside - Приймати Ð¿Ñ–Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ð·Ð·Ð¾Ð²Ð½Ñ– - - - Allow incoming connections - Дозволити вхідні Ð·â€™Ñ”Ð´Ð½Ð°Ð½Ð½Ñ - - - IP address of the proxy (e.g. IPv4: 127.0.0.1 / IPv6: ::1) - IP-адреÑа прокÑÑ–-Ñервера (наприклад IPv4: 127.0.0.1 / IPv6: ::1) - - - Minimize instead of exit the application when the window is closed. When this option is enabled, the application will be closed only after selecting Exit in the menu. - Згортати заміÑть закриттÑ. Якщо Ñ†Ñ Ð¾Ð¿Ñ†Ñ–Ñ Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð°, програма закриєтьÑÑ Ð»Ð¸ÑˆÐµ піÑÐ»Ñ Ð²Ð¸Ð±Ð¾Ñ€Ñƒ відповідного пункту в меню. - - - The user interface language can be set here. This setting will take effect after restarting Bitcoin Core. - Ð’Ñтановлює мову інтерфейÑу. Зміни набудуть чинноÑті піÑÐ»Ñ Ð¿ÐµÑ€ÐµÐ·Ð°Ð¿ÑƒÑку Bitcoin Core. - - - 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 |. - Сторонні URL (наприклад, block explorer), що з'ÑвлÑтьÑÑ Ð½Ð° вкладці транзакцій у виглÑді пункту контекÑтного меню. %s в URL буде замінено на хеш транзакції. Ð”Ð»Ñ Ð²Ñ–Ð´Ð¾ÐºÑ€ÐµÐ¼Ð»ÐµÐ½Ð½Ñ URLів викориÑтовуйте вертикальну риÑку |. - - - Third party transaction URLs - Сторонні URL транзакцій - - - Active command-line options that override above options: - Ðктивовані параметри командного Ñ€Ñдка, що перекривають вищевказані параметри: - - - Reset all client options to default. - Скинути вÑÑ– параметри клієнта на типові. - - - &Reset Options - С&кинути параметри - - - &Network - &Мережа - - - Automatically start Bitcoin Core after logging in to the system. - Ðвтоматично запуÑкати Bitcoin Core при вході до ÑиÑтеми. - - - &Start Bitcoin Core on system login - &ЗапуÑкати Bitcoin Core при вході до ÑиÑтеми - - - (0 = auto, <0 = leave that many cores free) - (0 = автоматично, <0 = вказує кількіÑть вільних Ñдер) - - - W&allet - Г&аманець - - - Expert - ЕкÑперт - - - Enable coin &control features - Ввімкнути &ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ…Ð¾Ð´Ð°Ð¼Ð¸ - - - 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. - Якщо вимкнути витрату непідтвердженої решти, то решту від транзакції не можна буде викориÑтати, допоки Ñ†Ñ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ñ–Ñ Ð½Ðµ матиме хоча б одне підтвердженнÑ. Це також впливає на розрахунок баланÑу. - - - &Spend unconfirmed change - &Витрачати непідтверджену решту - - - Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled. - Ðвтоматично відкривати порт Ð´Ð»Ñ ÐºÐ»Ñ–Ñ”Ð½Ñ‚Ñƒ біткоін на роутері. Працює лише Ñкщо ваш роутер підтримує UPnP Ñ– Ñ†Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ ÑƒÐ²Ñ–Ð¼ÐºÐ½ÐµÐ½Ð°. - - - Map port using &UPnP - Ð’Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð¿Ð¾Ñ€Ñ‚Ñƒ через &UPnP - - - Connect to the Bitcoin network through a SOCKS5 proxy. - ÐŸÑ–Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ð´Ð¾ мережі Bitcoin через SOCKS5 прокÑÑ–. - - - &Connect through SOCKS5 proxy (default proxy): - &ÐŸÑ–Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ñ‡ÐµÑ€ÐµÐ· SOCKS5 прокÑÑ– (прокÑÑ– за замовчуваннÑм): - - - Proxy &IP: - &IP прокÑÑ–: - - - &Port: - &Порт: - - - Port of the proxy (e.g. 9050) - Порт прокÑÑ–-Ñервера (наприклад 9050) - - - &Window - &Вікно - - - Show only a tray icon after minimizing the window. - Показувати лише іконку в треї піÑÐ»Ñ Ð·Ð³Ð¾Ñ€Ñ‚Ð°Ð½Ð½Ñ Ð²Ñ–ÐºÐ½Ð°. - - - &Minimize to the tray instead of the taskbar - Мінімізувати &у трей - - - M&inimize on close - Згортати заміÑть закритт&Ñ - - - &Display - &Ð’Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ - - - User Interface &language: - Мов&а інтерфейÑу кориÑтувача: - - - &Unit to show amounts in: - Ð’&имірювати монети в: - - - Choose the default subdivision unit to show in the interface and when sending coins. - Виберіть одиницю Ð²Ð¸Ð¼Ñ–Ñ€ÑŽÐ²Ð°Ð½Ð½Ñ Ð¼Ð¾Ð½ÐµÑ‚, Ñка буде відображатиÑÑŒ в гаманці та при відправленні. - - - Whether to show coin control features or not. - Показати або Ñховати ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ…Ð¾Ð´Ð°Ð¼Ð¸. - - - &OK - &Гаразд - - - &Cancel - &СкаÑувати - - - default - типово - - - none - відÑутні - - - Confirm options reset - ÐŸÑ–Ð´Ñ‚Ð²ÐµÑ€Ð´Ð¶ÐµÐ½Ð½Ñ ÑÐºÐ¸Ð´Ð°Ð½Ð½Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ñ–Ð² - - - Client restart required to activate changes. - Ð”Ð»Ñ Ð·Ð°ÑтоÑÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð¼Ñ–Ð½ необхідно перезапуÑтити клієнта. - - - Client will be shut down. Do you want to proceed? - Клієнт буде вимкнено. Продовжити? - - - This change would require a client restart. - Ð¦Ñ Ð·Ð¼Ñ–Ð½Ð° вÑтупить в Ñилу піÑÐ»Ñ Ð¿ÐµÑ€ÐµÐ·Ð°Ð¿ÑƒÑку клієнта - - - The supplied proxy address is invalid. - Ðевірно вказано адреÑу прокÑÑ–. - - - - OverviewPage - - Form - Форма - - - The displayed information may be out of date. Your wallet automatically synchronizes with the Bitcoin network after a connection is established, but this process has not completed yet. - Показана Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð²Ð¶Ðµ може бути заÑтарілою. Ваш гаманець буде автоматично Ñинхронізовано з мережею Bitcoin піÑÐ»Ñ Ð²ÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¿Ñ–Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ, але цей Ð¿Ñ€Ð¾Ñ†ÐµÑ Ñ‰Ðµ не завершено. - - - Watch-only: - Тільки ÑпоÑтереженнÑ: - - - Available: - ÐаÑвно: - - - Your current spendable balance - Ваш поточний підтверджений Ð±Ð°Ð»Ð°Ð½Ñ - - - Pending: - ОчікуєтьÑÑ: - - - Total of transactions that have yet to be confirmed, and do not yet count toward the spendable balance - Сума монет у непідтверджених транзакціÑÑ… - - - Immature: - Ðезрілі: - - - Mined balance that has not yet matured - Ð‘Ð°Ð»Ð°Ð½Ñ Ð²Ð¸Ð´Ð¾Ð±ÑƒÑ‚Ð¸Ñ… та ще недозрілих монет - - - Balances - БаланÑи - - - Total: - Ð’Ñього: - - - Your current total balance - Ваш поточний Ñукупний Ð±Ð°Ð»Ð°Ð½Ñ - - - Your current balance in watch-only addresses - Ваш поточний Ð±Ð°Ð»Ð°Ð½Ñ Ð² адреÑах Ð´Ð»Ñ ÑпоÑÑ‚ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ - - - Spendable: - ДоÑтупно: - - - Recent transactions - ОÑтанні транзакції - - - Unconfirmed transactions to watch-only addresses - Ðепідтверджені транзакції на адреÑи Ð´Ð»Ñ ÑпоÑÑ‚ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ - - - Mined balance in watch-only addresses that has not yet matured - Ð‘Ð°Ð»Ð°Ð½Ñ Ð²Ð¸Ð´Ð¾Ð±ÑƒÑ‚Ð¸Ñ… та ще недозрілих монет на адреÑах Ð´Ð»Ñ ÑпоÑÑ‚ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ - - - Current total balance in watch-only addresses - Поточний Ñукупний Ð±Ð°Ð»Ð°Ð½Ñ Ð² адреÑах Ð´Ð»Ñ ÑпоÑÑ‚ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ - - - - PaymentServer - - URI handling - Обробка URI - - - Invalid payment address %1 - Помилка в адреÑÑ– платежу %1 - - - Payment request rejected - Запит платежу відхилено - - - Payment request network doesn't match client network. - Мережа запиту платежу не Ñ” мережею клієнта. - - - Payment request is not initialized. - Запит платежу не ініціалізовано. - - - Requested payment amount of %1 is too small (considered dust). - Сума запиту платежу Ð´Ð»Ñ %1 занадто мала (вважаєтьÑÑ Ð¿Ð¸Ð»Ð¾Ð¼) - - - Payment request error - Помилка запиту платежу - - - Cannot start bitcoin: click-to-pay handler - Ðеможливо запуÑтити bitcoin: обробник click-to-pay - - - Payment request fetch URL is invalid: %1 - URL запиту платежу Ñ” некоректним: %1 - - - URI cannot be parsed! This can be caused by an invalid Bitcoin address or malformed URI parameters. - Ðеможливо обробити URI! Причиною цього може бути некоректна Bitcoin-адреÑа або неправильні параметри URI. - - - Payment request file handling - Обробка файлу запиту платежу - - - Payment request file cannot be read! This can be caused by an invalid payment request file. - Ðеможливо прочитати файл запиту платежу! Ймовірно, файл пошкоджено. - - - Payment request expired. - Запит платежу проÑтрочено. - - - Unverified payment requests to custom payment scripts are unsupported. - Ðеперевірені запити платежів з влаÑними платіжними ÑценаріÑми не підтримуютьÑÑ. - - - Invalid payment request. - Помилка в запиті платежу. - - - Refund from %1 - Ð’Ñ–Ð´ÑˆÐºÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ Ð· %1 - - - Payment request %1 is too large (%2 bytes, allowed %3 bytes). - Запит платежу %1 занадто великий (%2 байт, дозволено %3 байт). - - - Payment request DoS protection - Оплата потребує захиÑту DoS - - - Error communicating with %1: %2 - Помилка зв'Ñзку з %1: %2 - - - Payment request cannot be parsed! - Ðеможливо розпізнати запит платежу! - - - Bad response from server %1 - Погана відповідь від Ñервера %1 - - - Payment acknowledged - Платіж підтверджено - - - Network request error - Помилка мережевого запиту - - - - PeerTableModel - - User Agent - Клієнт кориÑтувача - - - Node/Service - Вузол/Ð¡ÐµÑ€Ð²Ñ–Ñ - - - Ping Time - Затримка - - - - QObject - - Amount - КількіÑть - - - Enter a Bitcoin address (e.g. %1) - Введіть адреÑу Bitcoin (наприклад %1) - - - %1 d - %1 д - - - %1 h - %1 г - - - %1 m - %1 Ñ… - - - %1 s - %1 Ñ - - - None - ВідÑутні - - - N/A - Ð/Д - - - %1 ms - %1 Ð¼Ñ - - - - QRImageWidget - - &Save Image... - &Зберегти зображеннÑ... - - - &Copy Image - &Копіювати Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ - - - Save QR Code - Зберегти QR-код - - - PNG Image (*.png) - Ð—Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ PNG (*.png) - - - - RPCConsole - - Client name - Ðазва клієнту - - - N/A - Ð/Д - - - Client version - ВерÑÑ–Ñ ÐºÐ»Ñ–Ñ”Ð½Ñ‚Ñƒ - - - &Information - &Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ - - - Debug window - Вікно Ð·Ð½ÐµÐ²Ð°Ð´Ð¶ÐµÐ½Ð½Ñ - - - General - Загальна - - - Using OpenSSL version - ВикориÑтовуєтьÑÑ OpenSSL верÑÑ–Ñ— - - - Using BerkeleyDB version - ВикориÑтовуєтьÑÑ BerkeleyDB верÑÑ–Ñ— - - - Startup time - Ð§Ð°Ñ Ð·Ð°Ð¿ÑƒÑку - - - Network - Мережа - - - Name - Ð†Ð¼â€™Ñ - - - Number of connections - КількіÑть підключень - - - Block chain - Ланцюг блоків - - - Current number of blocks - Поточне чиÑло блоків - - - Open the Bitcoin Core debug log file from the current data directory. This can take a few seconds for large log files. - Відкрити файл журналу Ð½Ð°Ð»Ð°Ð³Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ Bitcoin Core з поточного каталогу даних. Це може зайнÑти кілька Ñекунд Ð´Ð»Ñ Ð²ÐµÐ»Ð¸ÐºÐ¸Ñ… файлів журналів. - - - Received - Отримано - - - Sent - Відправлено - - - &Peers - &УчаÑники - - - Select a peer to view detailed information. - Виберіть учаÑника Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ³Ð»Ñду детальнішої інформації - - - Direction - ÐапрÑмок - - - Version - ВерÑÑ–Ñ - - - User Agent - Клієнт кориÑтувача - - - Services - СервіÑи - - - Starting Height - Початкова виÑота - - - Sync Height - ВиÑота Ñинхронізації - - - Ban Score - Очки бану - - - Connection Time - Ð§Ð°Ñ Ð·'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ - - - Last Send - ВоÑтаннє відправлено - - - Last Receive - ВоÑтаннє отримано - - - Bytes Sent - Байтів відправлено - - - Bytes Received - Байтів отримано - - - Ping Time - Затримка - - - Time Offset - Ð Ñ–Ð·Ð½Ð¸Ñ†Ñ Ñ‡Ð°Ñу - - - Last block time - Ð§Ð°Ñ Ð¾Ñтаннього блоку - - - &Open - &Відкрити - - - &Console - &КонÑоль - - - &Network Traffic - &Мережевий трафік - - - &Clear - &ОчиÑтити - - - Totals - Ð’Ñього - - - In: - Вхідних: - - - Out: - Вихідних: - - - Build date - Дата Ð·Ð±Ð¸Ñ€Ð°Ð½Ð½Ñ - - - Debug log file - Файл звіту Ð·Ð½ÐµÐ²Ð°Ð´Ð¶ÐµÐ½Ð½Ñ - - - Clear console - ОчиÑтити конÑоль - - - Welcome to the Bitcoin Core RPC console. - Вітаємо у RPC-конÑолі Bitcoin Core. - - - Use up and down arrows to navigate history, and <b>Ctrl-L</b> to clear screen. - ВикориÑтовуйте Ñтрілки вгору вниз Ð´Ð»Ñ Ð½Ð°Ð²Ñ–Ð³Ð°Ñ†Ñ–Ñ— по Ñ–Ñторії, Ñ– <b>Ctrl-L</b> Ð´Ð»Ñ Ð¾Ñ‡Ð¸Ñ‰ÐµÐ½Ð½Ñ ÐµÐºÑ€Ð°Ð½Ð°. - - - Type <b>help</b> for an overview of available commands. - Ðаберіть <b>help</b> Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ³Ð»Ñду доÑтупних команд. - - - %1 B - %1 Б - - - %1 KB - %1 КБ - - - %1 MB - %1 МБ - - - %1 GB - %1 ГБ - - - via %1 - через %1 - - - never - ніколи - - - Inbound - Вхідний - - - Outbound - Вихідний - - - Unknown - Ðевідома - - - Fetching... - ОтриманнÑ... - - - - ReceiveCoinsDialog - - &Amount: - &КількіÑть: - - - &Label: - &Мітка: - - - &Message: - &ПовідомленнÑ: - - - Reuse one of the previously used receiving addresses. Reusing addresses has security and privacy issues. Do not use this unless re-generating a payment request made before. - Повторно викориÑтати одну з адреÑ. Повторне викориÑÑ‚Ð°Ð½Ð½Ñ Ð°Ð´Ñ€ÐµÑ Ñтворює ризики безпеки та конфіденційноÑті. Ðе викориÑтовуйте Ñ—Ñ—, окрім Ñк Ð´Ð»Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾Ð³Ð¾ запиту платежу. - - - R&euse an existing receiving address (not recommended) - По&вторно викориÑтати адреÑу Ð´Ð»Ñ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ (не рекомендуєтьÑÑ) - - - An optional message to attach to the payment request, which will be displayed when the request is opened. Note: The message will not be sent with the payment over the Bitcoin network. - Ðеобов'Ñзкове Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð½Ð° додаток до запиту платежу, котре буде показане під Ñ‡Ð°Ñ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ð·Ð°Ð¿Ð¸Ñ‚Ñƒ. Примітка: Це Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð½Ðµ буде відправлено з платежем через мережу Bitcoin. - - - An optional label to associate with the new receiving address. - Ðеобов'Ñзкове поле Ð´Ð»Ñ Ð¼Ñ–Ñ‚ÐºÐ¸ нової адреÑи отримувача. - - - Use this form to request payments. All fields are <b>optional</b>. - ВикориÑтовуйте цю форму, щоб отримати платежі. Ð’ÑÑ– Ð¿Ð¾Ð»Ñ Ñ” <b>необов'Ñзковими</b>. - - - An optional amount to request. Leave this empty or zero to not request a specific amount. - Ðеобов'Ñзкове поле Ð´Ð»Ñ Ñуми запиту. Залиште це поле пуÑтим або впишіть нуль, щоб не надÑилати у запиті конкретної Ñуми. - - - Clear all fields of the form. - ОчиÑтити вÑÑ– Ð¿Ð¾Ð»Ñ Ð² формі - - - Clear - ОчиÑтити - - - Requested payments history - ІÑÑ‚Ð¾Ñ€Ñ–Ñ Ð·Ð°Ð¿Ð¸Ñ‚Ñ–Ð² платежу - - - &Request payment - Ð&адіÑлати запит платежу - - - Show the selected request (does the same as double clicking an entry) - Показати вибраний запит (робить те ж Ñаме, що й подвійний клік по запиÑу) - - - Show - Показати - - - Remove the selected entries from the list - Вилучити вибрані запиÑи зі ÑпиÑку - - - Remove - Вилучити - - - Copy label - Скопіювати мітку - - - Copy message - Скопіювати Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ - - - Copy amount - Копіювати кількіÑть - - - - ReceiveRequestDialog - - QR Code - QR-Код - - - Copy &URI - &Скопіювати URI - - - Copy &Address - Скопіювати &адреÑу - - - &Save Image... - &Зберегти зображеннÑ... - - - Request payment to %1 - Запит платежу на %1 - - - Payment information - Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ платіж - - - URI - URI - - - Address - ÐдреÑа - - - Amount - КількіÑть - - - Label - Ðазва - - - Message - ÐŸÐ¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ - - - Resulting URI too long, try to reduce the text for label / message. - Кінцевий URI занадто довгий, Ñпробуйте зменшити текÑÑ‚ Ð´Ð»Ñ Ð¼Ñ–Ñ‚ÐºÐ¸ / повідомленнÑ. - - - Error encoding URI into QR Code. - Помилка при кодуванні URI в QR-код. - - - - RecentRequestsTableModel - - Date - Дата - - - Label - Ðазва - - - Message - ÐŸÐ¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ - - - Amount - КількіÑть - - - (no label) - (немає назви) - - - (no message) - (без повідомленнÑ) - - - (no amount) - (без Ñуми) - - - - SendCoinsDialog - - Send Coins - Відправити - - - Coin Control Features - ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð¼Ð¾Ð½ÐµÑ‚Ð°Ð¼Ð¸ - - - Inputs... - Входи... - - - automatically selected - вибираютьÑÑ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡Ð½Ð¾ - - - Insufficient funds! - ÐедоÑтатньо коштів! - - - Quantity: - КількіÑть: - - - Bytes: - Байтів: - - - Amount: - Сума: - - - Priority: - Пріорітет: - - - Fee: - КоміÑÑ–Ñ: - - - After Fee: - ПіÑÐ»Ñ ÐºÐ¾Ð¼Ñ–ÑÑ–Ñ—: - - - Change: - Решта: - - - If this is activated, but the change address is empty or invalid, change will be sent to a newly generated address. - Якщо це поле активовано, але адреÑа Ð´Ð»Ñ Ñ€ÐµÑˆÑ‚Ð¸ відÑÑƒÑ‚Ð½Ñ Ð°Ð±Ð¾ некоректна, то решта буде відправлена на новоÑтворену адреÑу. - - - Custom change address - Вказати адреÑу Ð´Ð»Ñ Ñ€ÐµÑˆÑ‚Ð¸ - - - Transaction Fee: - КоміÑÑ–Ñ Ð·Ð° передачу: - - - Choose... - Виберіть... - - - collapse fee-settings - згорнути Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¾Ð¿Ð»Ð°Ñ‚ - - - per kilobyte - за кілобайт - - - 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. - Якщо коміÑÑ–Ñ Ð²ÑтановлюєтьÑÑ Ð² 1000 Ñатоші Ñ– розмір транзакції лише 250 байтів, то Ð¾Ð¿Ñ†Ñ–Ñ "за кілобайт" вÑтановлює коміÑÑ–ÑŽ в 250 Ñатоші, в той чаÑ, Ñк "вÑього щонайменше" - в 1000 Ñатоші. Ð”Ð»Ñ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ñ–Ð¹ більших за кілобайт в обох випадках буде знÑто коміÑÑ–ÑŽ за кілобайт. - - - Hide - Приховати - - - total at least - вÑього щонайменше - - - 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. - Оплата тільки мінімальної коміÑÑ–Ñ— Ñ” прийнÑтною, допоки обÑÑг транзакцій Ñ” меншим проÑтору в блоках. Ðле майте на увазі, що це може анулювати транзакцію, Ñкщо попит на Bitcoin транзакції Ñтане більшим, ніж мережа зможе обробити. - - - (read the tooltip) - (читати підказки) - - - Recommended: - Рекомендовано: - - - Custom: - Змінено: - - - (Smart fee not initialized yet. This usually takes a few blocks...) - (Розумну оплату ще не ініціалізовано. Це, зазвичай, триває кілька блоків...) - - - Confirmation time: - Ð§Ð°Ñ Ð¿Ñ–Ð´Ñ‚Ð²ÐµÑ€Ð´Ð¶ÐµÐ½Ð½Ñ: - - - normal - звичайний - - - fast - швидкий - - - Send as zero-fee transaction if possible - ÐадіÑлати транзакцію без Ñплати коміÑÑ–Ñ—, Ñкщо це можливо - - - (confirmation may take longer) - (Ð¿Ñ–Ð´Ñ‚Ð²ÐµÑ€Ð´Ð¶ÐµÐ½Ð½Ñ Ð¼Ð¾Ð¶Ðµ зайнÑти більше чаÑу) - - - Send to multiple recipients at once - Відправити на декілька Ð°Ð´Ñ€ÐµÑ - - - Add &Recipient - Дод&ати одержувача - - - Clear all fields of the form. - ОчиÑтити вÑÑ– Ð¿Ð¾Ð»Ñ Ð² формі - - - Dust: - Пил: - - - Clear &All - ОчиÑтити &вÑе - - - Balance: - БаланÑ: - - - Confirm the send action - Підтвердити Ð²Ñ–Ð´Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð½Ñ - - - S&end - &Відправити - - - Confirm send coins - Підтвердіть Ð²Ñ–Ð´Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð½Ñ - - - %1 to %2 - %1 на %2 - - - Copy quantity - Копіювати кількіÑть - - - Copy amount - Копіювати Ñуму - - - Copy fee - Копіювати коміÑÑ–ÑŽ - - - Copy after fee - Копіювати піÑÐ»Ñ ÐºÐ¾Ð¼Ñ–ÑÑ–Ñ— - - - Copy bytes - Копіювати байти - - - Copy priority - Копіювати пріорітет - - - Copy change - Копіювати решту - - - or - або - - - The amount to pay must be larger than 0. - КількіÑть монет Ð´Ð»Ñ Ð²Ñ–Ð´Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð½Ñ Ð¿Ð¾Ð²Ð¸Ð½Ð½Ð° бути більше 0. - - - The amount exceeds your balance. - КількіÑть монет Ð´Ð»Ñ Ð²Ñ–Ð´Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð½Ñ Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÑ” ваш баланÑ. - - - The total exceeds your balance when the %1 transaction fee is included. - Сума перевищить ваш баланÑ, Ñкщо коміÑÑ–Ñ %1 буде додана до вашої транзакції. - - - Transaction creation failed! - Ðе вдалоÑÑ Ñтворити транзакцію! - - - 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. - Транзакцію відхилено! Це може ÑтатиÑÑŒ, Ñкщо декілька монет з вашого Ð³Ð°Ð¼Ð°Ð½Ñ†Ñ Ð²Ð¶Ðµ викориÑтані, наприклад, Ñкщо ви викориÑтовуєте одну копію Ð³Ð°Ð¼Ð°Ð½Ñ†Ñ (wallet.dat), а монети були викориÑтані з іншої копії, але не позначені Ñк викориÑтані в цій. - - - A fee higher than %1 is considered an absurdly high fee. - Плата вища, ніж %1 вважаєтьÑÑ ÑˆÐ°Ð»ÐµÐ½Ð¾ виÑокою. - - - Payment request expired. - Запит платежу проÑтрочено. - - - Estimated to begin confirmation within %n block(s). - Перше Ð¿Ñ–Ð´Ñ‚Ð²ÐµÑ€Ð´Ð¶ÐµÐ½Ð½Ñ Ð¾Ñ‡Ñ–ÐºÑƒÑ”Ñ‚ÑŒÑÑ Ð¿Ñ€Ð¾Ñ‚Ñгом %n блоку.Перше Ð¿Ñ–Ð´Ñ‚Ð²ÐµÑ€Ð´Ð¶ÐµÐ½Ð½Ñ Ð¾Ñ‡Ñ–ÐºÑƒÑ”Ñ‚ÑŒÑÑ Ð¿Ñ€Ð¾Ñ‚Ñгом %n блоків.Перше Ð¿Ñ–Ð´Ñ‚Ð²ÐµÑ€Ð´Ð¶ÐµÐ½Ð½Ñ Ð¾Ñ‡Ñ–ÐºÑƒÑ”Ñ‚ÑŒÑÑ Ð¿Ñ€Ð¾Ñ‚Ñгом %n блоків. - - - Pay only the minimum fee of %1 - Платити тільки мінімальну коміÑÑ–ÑŽ у розмірі %1 - - - Total Amount %1<span style='font-size:10pt;font-weight:normal;'><br />(=%2)</span> - Ð’Ñього %1<span style='font-size:10pt;font-weight:normal;'><br />(=%2)</span> - - - The recipient address is not valid. Please recheck. - ÐдреÑа отримувача неправильна. Будь лаÑка, перевірте Ñ—Ñ—. - - - Duplicate address found: addresses should only be used once each. - Знайдено адреÑу, що дублюєтьÑÑ: кожна адреÑа має бути вказана не більше одного разу. - - - Warning: Invalid Bitcoin address - Увага: Ðеправильна Bitcoin-адреÑа - - - (no label) - (немає назви) - - - Warning: Unknown change address - Увага: Ðевідома адреÑа Ð´Ð»Ñ Ñ€ÐµÑˆÑ‚Ð¸ - - - Copy dust - Копіювати пил - - - Are you sure you want to send? - Ви впевнені, що хочете відправити? - - - added as transaction fee - додано Ñк коміÑÑ–Ñ Ð·Ð° транзакцію - - - - SendCoinsEntry - - A&mount: - &КількіÑть: - - - Pay &To: - &Отримувач: - - - Enter a label for this address to add it to your address book - Введіть мітку Ð´Ð»Ñ Ñ†Ñ–Ñ”Ñ— адреÑи Ð´Ð»Ñ Ð´Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ Ñ—Ñ— в адреÑну книгу - - - &Label: - &Мітка: - - - Choose previously used address - Обрати ранiш викориÑтовувану адреÑу - - - This is a normal payment. - Це звичайний платіж. - - - The Bitcoin address to send the payment to - ÐдреÑа Bitcoin Ð´Ð»Ñ Ð²Ñ–Ð´Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð½Ñ Ð¿Ð»Ð°Ñ‚ÐµÐ¶Ñƒ - - - Alt+A - Alt+A - - - Paste address from clipboard - Ð’Ñтавити адреÑу - - - Alt+P - Alt+P - - - Remove this entry - Видалити цей Ð·Ð°Ð¿Ð¸Ñ - - - The fee will be deducted from the amount being sent. The recipient will receive less bitcoins than you enter in the amount field. If multiple recipients are selected, the fee is split equally. - КоміÑÑ–ÑŽ буде знÑто зі вказаної Ñуми. До отримувача надійде менше біткоінів, ніж було вказано в полі кількоÑті. Якщо ж отримувачів декілька - коміÑÑ–ÑŽ буде розподілено між ними. - - - S&ubtract fee from amount - Ð’&іднÑти коміÑÑ–ÑŽ від Ñуми - - - Message: - ПовідомленнÑ: - - - This is an unauthenticated payment request. - Цей запит платежу не Ñ” автентифікованим. - - - This is an authenticated payment request. - Цей запит платежу Ñ” автентифікованим. - - - Enter a label for this address to add it to the list of used addresses - Введіть мітку Ð´Ð»Ñ Ñ†Ñ–Ñ”Ñ— адреÑи Ð´Ð»Ñ Ð´Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ Ñ—Ñ— в ÑпиÑок викориÑтаних Ð°Ð´Ñ€ÐµÑ - - - A message that was attached to the bitcoin: URI which will be stored with the transaction for your reference. Note: This message will not be sent over the Bitcoin network. - ПовідомленнÑ, що було додане до bitcoin:URI та буде збережено разом з транзакцією Ð´Ð»Ñ Ð´Ð¾Ð²Ñ–Ð´ÐºÐ¸. Примітка: Це Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð½Ðµ буде відправлено в мережу Bitcoin. - - - Pay To: - Отримувач: - - - Memo: - Ðотатка: - - - - ShutdownWindow - - Bitcoin Core is shutting down... - Bitcoin Core вимикаєтьÑÑ... - - - Do not shut down the computer until this window disappears. - Ðе вимикайте комп’ютер до Ð·Ð½Ð¸ÐºÐ½ÐµÐ½Ð½Ñ Ñ†ÑŒÐ¾Ð³Ð¾ вікна. - - - - SignVerifyMessageDialog - - Signatures - Sign / Verify a Message - ПідпиÑи - ÐŸÑ–Ð´Ð¿Ð¸Ñ / Перевірка Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ - - - &Sign Message - &ПідпиÑати Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ - - - You can sign messages/agreements with your addresses to prove you can receive bitcoins sent to them. Be careful not to sign anything vague or random, as phishing attacks may try to trick you into signing your identity over to them. Only sign fully-detailed statements you agree to. - Ви можете підпиÑувати повідомленнÑ/угоди Ñвоїми адреÑами, щоб довеÑти можливіÑть Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð±Ñ–Ñ‚ÐºÐ¾Ñ–Ð½Ñ–Ð², що будуть надіÑлані на них. ОÑтерігайтеÑÑ Ð¿Ñ–Ð´Ð¿Ð¸Ñувати будь-що нечітке чи неочікуване, так Ñк за допомогою фішинг-атаки Ð²Ð°Ñ Ð¼Ð¾Ð¶ÑƒÑ‚ÑŒ Ñпробувати ввеÑти в оману Ð´Ð»Ñ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð²Ð°ÑˆÐ¾Ð³Ð¾ підпиÑу під чужими Ñловами. ПідпиÑуйте лише чіткі твердженнÑ, з Ñкими ви повніÑтю згодні. - - - The Bitcoin address to sign the message with - ÐдреÑа Bitcoin Ð´Ð»Ñ Ð¿Ñ–Ð´Ð¿Ð¸Ñу цього Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ - - - Choose previously used address - Обрати ранiш викориÑтовувану адреÑу - - - Alt+A - Alt+A - - - Paste address from clipboard - Ð’Ñтавити адреÑу - - - Alt+P - Alt+P - - - Enter the message you want to sign here - Введіть повідомленнÑ, Ñке ви хочете підпиÑати тут - - - Signature - ÐŸÑ–Ð´Ð¿Ð¸Ñ - - - Copy the current signature to the system clipboard - Копіювати поточну Ñигнатуру до ÑиÑтемного буферу обміну - - - Sign the message to prove you own this Bitcoin address - Підпишіть Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ñ‰Ð¾Ð± довеÑти, що ви Ñ” влаÑником цієї адреÑи - - - Sign &Message - &ПідпиÑати Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ - - - Reset all sign message fields - Скинути вÑÑ– Ð¿Ð¾Ð»Ñ Ð¿Ñ–Ð´Ð¿Ð¸Ñу Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ - - - Clear &All - ОчиÑтити &вÑе - - - &Verify Message - П&еревірити Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ - - - Enter the receiver's address, message (ensure you copy line breaks, spaces, tabs, etc. exactly) and signature below to verify the message. Be careful not to read more into the signature than what is in the signed message itself, to avoid being tricked by a man-in-the-middle attack. Note that this only proves the signing party receives with the address, it cannot prove sendership of any transaction! - Введіть нижче адреÑу отримувача, Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ (впевнітьÑÑ, що ви точно Ñкопіювали Ñимволи Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ñ€Ñдка, табулÑцію, пробіли тощо) та Ð¿Ñ–Ð´Ð¿Ð¸Ñ Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ²Ñ–Ñ€ÐºÐ¸ повідомленнÑ. ВпевнітьÑÑ, що в Ð¿Ñ–Ð´Ð¿Ð¸Ñ Ð½Ðµ було додано зайвих Ñимволів: це допоможе уникнути атак типу «людина поÑередині». Зауважте, що це лише заÑвідчує можливіÑть Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ñ–Ð¹ підпиÑувачем, але не в Ñтані підтвердити джерело жодної транзакції! - - - The Bitcoin address the message was signed with - ÐдреÑа Bitcoin, Ñкою було підпиÑано це Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ - - - Verify the message to ensure it was signed with the specified Bitcoin address - Перевірте Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ð²Ð¿ÐµÐ²Ð½ÐµÐ½Ð¾Ñті, що воно підпиÑано вказаною Bitcoin-адреÑою - - - Verify &Message - Пере&вірити Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ - - - Reset all verify message fields - Скинути вÑÑ– Ð¿Ð¾Ð»Ñ Ð¿ÐµÑ€ÐµÐ²Ñ–Ñ€ÐºÐ¸ Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ - - - Click "Sign Message" to generate signature - ÐатиÑніть кнопку «ПідпиÑати повідомленнÑ», Ð´Ð»Ñ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð¿Ñ–Ð´Ð¿Ð¸Ñу - - - The entered address is invalid. - Введена нечинна адреÑа. - - - Please check the address and try again. - Будь лаÑка, перевірте адреÑу та Ñпробуйте ще. - - - The entered address does not refer to a key. - Введена адреÑа не відноÑитьÑÑ Ð´Ð¾ ключа. - - - Wallet unlock was cancelled. - Ð Ð¾Ð·Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð³Ð°Ð¼Ð°Ð½Ñ†Ñ Ð±ÑƒÐ»Ð¾ ÑкаÑоване. - - - Private key for the entered address is not available. - Приватний ключ Ð´Ð»Ñ Ð²Ð²ÐµÐ´ÐµÐ½Ð¾Ñ— адреÑи недоÑтупний. - - - Message signing failed. - Ðе вдалоÑÑ Ð¿Ñ–Ð´Ð¿Ð¸Ñати повідомленнÑ. - - - Message signed. - ÐŸÐ¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð¿Ñ–Ð´Ð¿Ð¸Ñано. - - - The signature could not be decoded. - ÐŸÑ–Ð´Ð¿Ð¸Ñ Ð½Ðµ можливо декодувати. - - - Please check the signature and try again. - Будь лаÑка, перевірте Ð¿Ñ–Ð´Ð¿Ð¸Ñ Ñ‚Ð° Ñпробуйте ще. - - - The signature did not match the message digest. - ÐŸÑ–Ð´Ð¿Ð¸Ñ Ð½Ðµ збігаєтьÑÑ Ð· хешем повідомленнÑ. - - - Message verification failed. - Ðе вдалоÑÑ Ð¿ÐµÑ€ÐµÐ²Ñ–Ñ€Ð¸Ñ‚Ð¸ повідомленнÑ. - - - Message verified. - ÐŸÐ¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð¿ÐµÑ€ÐµÐ²Ñ–Ñ€ÐµÐ½Ð¾. - - - - SplashScreen - - Bitcoin Core - Bitcoin Core - - - The Bitcoin Core developers - Розробники Bitcoin Core - - - [testnet] - [теÑтова мережа] - - - - TrafficGraphWidget - - KB/s - КБ/Ñ - - - - TransactionDesc - - Open until %1 - Відкрито до %1 - - - conflicted - Ñуперечить - - - %1/offline - %1/поза інтернетом - - - %1/unconfirmed - %1/не підтверджено - - - %1 confirmations - %1 підтверджень - - - Status - Ð¡Ñ‚Ð°Ñ‚ÑƒÑ - - - , broadcast through %n node(s) - , розіÑлано через %n вузол, розіÑлано через %n вузли, розіÑлано через %n вузлів - - - Date - Дата - - - Source - Джерело - - - Generated - Згенеровано - - - From - Відправник - - - To - Отримувач - - - own address - ВлаÑна адреÑа - - - watch-only - тільки ÑпоÑÑ‚ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ - - - label - Мітка - - - Credit - Кредит - - - matures in %n more block(s) - «дозріє» через %n блок«дозріє» через %n блоки«дозріє» через %n блоків - - - not accepted - не прийнÑто - - - Debit - Дебет - - - Total debit - Загальний дебет - - - Total credit - Загальний кредит - - - Transaction fee - КоміÑÑ–Ñ Ð·Ð° транзакцію - - - Net amount - Загальна Ñума - - - Message - ÐŸÐ¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ - - - Comment - Коментар - - - Transaction ID - ID транзакції - - - Merchant - Продавець - - - Generated coins must mature %1 blocks before they can be spent. When you generated this block, it was broadcast to the network to be added to the block chain. If it fails to get into the chain, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - ПіÑÐ»Ñ Ð³ÐµÐ½ÐµÑ€Ð°Ñ†Ñ–Ñ— монет, потрібно зачекати %1 блоків, перш ніж Ñ—Ñ… можна буде викориÑтати. Коли ви згенерували цей блок, його було відправлено в мережу Ð´Ð»Ñ Ñ‚Ð¾Ð³Ð¾, щоб він був доданий до ланцюжка блоків. Якщо Ñ†Ñ Ð¿Ñ€Ð¾Ñ†ÐµÐ´ÑƒÑ€Ð° не вдаÑтьÑÑ, ÑÑ‚Ð°Ñ‚ÑƒÑ Ð±ÑƒÐ´Ðµ змінено на «не підтверджено» Ñ– ви не зможете витратити згенеровані монети. Таке може ÑтатиÑÑŒ, Ñкщо хтоÑÑŒ інший згенерував блок на декілька Ñекунд раніше. - - - Debug information - Ðалагоджувальна Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ - - - Transaction - Ð¢Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ñ–Ñ - - - Inputs - Входи - - - Amount - КількіÑть - - - true - true - - - false - false - - - , has not been successfully broadcast yet - , ще не було уÑпішно розіÑлано - - - Open for %n more block(s) - Відкрито на %n блокВідкрито на %n блокиВідкрито на %n блоків - - - unknown - невідомо - - - - TransactionDescDialog - - Transaction details - Деталі транзакції - - - This pane shows a detailed description of the transaction - Даний діалог показує детальну ÑтатиÑтику по вибраній транзакції - - - - TransactionTableModel - - Date - Дата - - - Type - Тип - - - Immature (%1 confirmations, will be available after %2) - Ðезрілі (%1 підтверджень, будуть доÑтупні піÑÐ»Ñ %2) - - - Open for %n more block(s) - Відкрито на %n блокВідкрито на %n блокиВідкрито на %n блоків - - - Open until %1 - Відкрито до %1 - - - Confirmed (%1 confirmations) - Підтверджено (%1 підтверджень) - - - This block was not received by any other nodes and will probably not be accepted! - Цей блок не був отриманий жодними іншими вузлами Ñ–, ймовірно, не буде прийнÑтий! - - - Generated but not accepted - Згенеровано, але не підтверджено - - - Offline - Поза мережею - - - Label - Ðазва - - - Unconfirmed - Ðе підтверджено - - - Confirming (%1 of %2 recommended confirmations) - ПідтверджуєтьÑÑ (%1 з %2 рекомендованих підтверджень) - - - Conflicted - Суперечить - - - Received with - Отримані на - - - Received from - Отримано від - - - Sent to - Відправлені на - - - Payment to yourself - Відправлено Ñобі - - - Mined - Добуті - - - watch-only - тільки ÑпоÑÑ‚ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ - - - (n/a) - (недоÑтупно) - - - Transaction status. Hover over this field to show number of confirmations. - Ð¡Ñ‚Ð°Ñ‚ÑƒÑ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ñ–Ñ—. Ðаведіть вказівник на це поле, щоб показати кількіÑть підтверджень. - - - Date and time that the transaction was received. - Дата Ñ– чаÑ, коли транзакцію було отримано. - - - Type of transaction. - Тип транзакції. - - - Whether or not a watch-only address is involved in this transaction. - Показує, чи було залучено адреÑу Ð´Ð»Ñ ÑпоÑÑ‚ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ð² цій транзакції. - - - User-defined intent/purpose of the transaction. - ÐŸÑ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ñ–Ñ— (визначаєтьÑÑ ÐºÐ¾Ñ€Ð¸Ñтувачем). - - - Amount removed from or added to balance. - Сума, додана чи знÑта з баланÑу. - - - - TransactionView - - All - Ð’ÑÑ– - - - Today - Сьогодні - - - This week - Ðа цьому тижні - - - This month - Ðа цьому міÑÑці - - - Last month - Минулого міÑÑÑ†Ñ - - - This year - Цього року - - - Range... - Проміжок... - - - Received with - Отримані на - - - Sent to - Відправлені на - - - To yourself - Відправлені Ñобі - - - Mined - Добуті - - - Other - Інше - - - Enter address or label to search - Введіть адреÑу чи мітку Ð´Ð»Ñ Ð¿Ð¾ÑˆÑƒÐºÑƒ - - - Min amount - Мінімальна Ñума - - - Copy address - Скопіювати адреÑу - - - Copy label - Скопіювати мітку - - - Copy amount - Скопіювати Ñуму - - - Copy transaction ID - Скопіювати ID транзакції - - - Edit label - Редагувати мітку - - - Show transaction details - Показати деталі транзакції - - - Export Transaction History - ЕкÑпортувати Ñ–Ñторію транзакцій - - - Watch-only - Ð”Ð»Ñ ÑпоÑÑ‚ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ - - - Exporting Failed - Помилка екÑпорту - - - There was an error trying to save the transaction history to %1. - Виникла помилка при Ñпробі Ð·Ð±ÐµÑ€Ñ–Ð³Ð°Ð½Ð½Ñ Ñ–Ñторії транзакцій до %1. - - - Exporting Successful - ЕкÑпорт уÑпішно виконано - - - The transaction history was successfully saved to %1. - ІÑторію транзакцій було уÑпішно збережено до %1. - - - Comma separated file (*.csv) - ЗначеннÑ, розділені комою (*.csv) - - - Confirmed - Підтверджені - - - Date - Дата - - - Type - Тип - - - Label - Ðазва - - - Address - ÐдреÑа - - - ID - Ідентифікатор - - - Range: - Діапазон від: - - - to - до - - - - UnitDisplayStatusBarControl - - Unit to show amounts in. Click to select another unit. - ÐžÐ´Ð¸Ð½Ð¸Ñ†Ñ Ð²Ð¸Ð¼Ñ–Ñ€Ñƒ монет. ÐатиÑніть Ð´Ð»Ñ Ð²Ð¸Ð±Ð¾Ñ€Ñƒ іншої. - - - - WalletFrame - - No wallet has been loaded. - Гаманець не завантажувавÑÑ - - - - WalletModel - - Send Coins - Відправити - - - - WalletView - - &Export - &ЕкÑпорт - - - Export the data in the current tab to a file - ЕкÑпортувати дані з поточної вкладки в файл - - - Backup Wallet - Зробити резервне ÐºÐ¾Ð¿Ñ–ÑŽÐ²Ð°Ð½Ð½Ñ Ð³Ð°Ð¼Ð°Ð½Ñ†Ñ - - - Wallet Data (*.dat) - Данi Ð³Ð°Ð¼Ð°Ð½Ñ†Ñ (*.dat) - - - Backup Failed - Помилка резервного ÐºÐ¾Ð¿Ñ–ÑŽÐ²Ð°Ð½Ð½Ñ - - - There was an error trying to save the wallet data to %1. - Виникла помилка при Ñпробі зберегти гаманець в %1. - - - The wallet data was successfully saved to %1. - Дані Ð³Ð°Ð¼Ð°Ð½Ñ†Ñ ÑƒÑпішно збережено в %1. - - - Backup Successful - УÑпішне ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ€ÐµÐ·ÐµÑ€Ð²Ð½Ð¾Ñ— копії - - - - bitcoin-core - - Options: - Параметри: - - - Specify data directory - Вкажіть робочий каталог - - - Connect to a node to retrieve peer addresses, and disconnect - ПідключитиÑÑŒ до вузла, щоб отримати ÑпиÑок Ð°Ð´Ñ€ÐµÑ Ñ–Ð½ÑˆÐ¸Ñ… учаÑників та від'єднатиÑÑŒ - - - Specify your own public address - Вкажіть вашу влаÑну публічну адреÑу - - - Accept command line and JSON-RPC commands - Приймати команди із командного Ñ€Ñдка та команди JSON-RPC - - - Run in the background as a daemon and accept commands - ЗапуÑтити в фоновому режимі (Ñк демон) та приймати команди - - - Use the test network - ВикориÑтовувати теÑтову мережу - - - Accept connections from outside (default: 1 if no -proxy or -connect) - Приймати Ð¿Ñ–Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ð·Ð·Ð¾Ð²Ð½Ñ– (типово: 1 за відÑутноÑті -proxy чи -connect) - - - Bind to given address and always listen on it. Use [host]:port notation for IPv6 - Прив'ÑзатиÑÑ Ð´Ð¾ даної адреÑи та проÑлуховувати Ñ—Ñ—. ВикориÑтовуйте Ð·Ð°Ð¿Ð¸Ñ Ð²Ð¸Ð´Ñƒ [хоÑÑ‚]:порт Ð´Ð»Ñ IPv6 - - - Delete all wallet transactions and only recover those parts of the blockchain through -rescan on startup - Видалити вÑÑ– транзакції Ð³Ð°Ð¼Ð°Ð½Ñ†Ñ Ñ‚Ð° відновити ті, що будуть знайдені під Ñ‡Ð°Ñ Ð·Ð°Ð¿ÑƒÑку за допомогою -rescan - - - Distributed under the MIT software license, see the accompanying file COPYING or <http://www.opensource.org/licenses/mit-license.php>. - ПоширюєтьÑÑ Ð·Ð° ліцензією MIT, додаткова Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¼Ñ–ÑтитьÑÑ Ñƒ файлі COPYING та за адреÑою <http://www.opensource.org/licenses/mit-license.php>. - - - Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) - Виконати команду, коли Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ñ–Ñ Ð³Ð°Ð¼Ð°Ð½Ñ†Ñ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚ÑŒÑÑ (заміÑть %s в команді буде підÑтавлено ідентифікатор транзакції) - - - Maximum total fees to use in a single wallet transaction; setting this too low may abort large transactions (default: %s) - МакÑимальна загальна коміÑÑ–Ñ Ð·Ð° одну транзакцію; занадто низьке Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¼Ð¾Ð¶Ðµ ÑкаÑувати відправку великих транзакцій (типово: %s) - - - Reduce storage requirements by pruning (deleting) old blocks. This mode disables wallet support and is incompatible with -txindex. Warning: Reverting this setting requires re-downloading the entire blockchain. (default: 0 = disable pruning blocks, >%u = target size in MiB to use for block files) - Зменшити вимоги до наÑвного проÑтору на ноÑÑ–Ñ— даних за допомогою ÑÐºÐ¾Ñ€Ð¾Ñ‡ÐµÐ½Ð½Ñ Ð»Ð°Ð½Ñ†ÑŽÐ¶ÐºÐ° (Ð²Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ Ñтарих блоків). Цей режим вимикає підтримку Ð³Ð°Ð¼Ð°Ð½Ñ†Ñ Ñ‚Ð° Ñ” неÑуміÑним з параметром -txindex. Увага: при поверненні до типового Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²Ð¸Ð´Ð°Ð»ÐµÐ½Ñ– чаÑтини ланцюжка буде повторно завантажено. (типово: 0 = вимкнути ÑÐºÐ¾Ñ€Ð¾Ñ‡ÐµÐ½Ð½Ñ Ð»Ð°Ð½Ñ†ÑŽÐ¶ÐºÐ°, >%u = очікуваний розмір файлів блоків в МіБ) - - - Set the number of script verification threads (%u to %d, 0 = auto, <0 = leave that many cores free, default: %d) - Ð’Ñтановити кількіÑть потоків Ñкрипту перевірки (від %u до %d, 0 = автоматично, <0 = вказує кількіÑть вільних Ñдер, типово: %d) - - - This is a pre-release test build - use at your own risk - do not use for mining or merchant applications - Це теÑтова збірка пре-релізної верÑÑ–Ñ— - викориÑтовуйте на Ñвій Ñтрах Ñ– ризик - не заÑтоÑовувати Ð´Ð»Ñ Ð´Ð¾Ð±ÑƒÐ²Ð°Ð½Ð½Ñ Ð¼Ð¾Ð½ÐµÑ‚ або торгівлі - - - Unable to bind to %s on this computer. Bitcoin Core is probably already running. - Ðеможливо прив'ÑзатиÑÑ Ð´Ð¾ %s на цьому комп'ютері. Можливо, Bitcoin Core вже запущено. - - - WARNING: abnormally high number of blocks generated, %d blocks received in the last %d hours (%d expected) - УВÐГÐ: аномально виÑока кількіÑть згенерованих блоків, %d блок(ів) було отримано за оÑтанні %d годин(и) (має бути %d) - - - WARNING: check your network connection, %d blocks received in the last %d hours (%d expected) - УВÐГÐ: перевірте ваше мережеве з'єднаннÑ, %d блок(ів) було отримано за оÑтанні %d годин(и) (має бути %d) - - - Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. - Увага: вÑтановлено занадто велику коміÑÑ–ÑŽ (-paytxfee). КоміÑÑ–Ñ Ð·Ð½Ñ–Ð¼Ð°Ñ‚Ð¸Ð¼ÐµÑ‚ÑŒÑÑ ÐºÐ¾Ð¶ÐµÐ½ раз коли ви проводитимете транзакції. - - - Warning: The network does not appear to fully agree! Some miners appear to be experiencing issues. - Увага: ЧаÑтина мережі викориÑтовує інший головний ланцюжок! ДеÑкі добувачі, можливо, зазнають проблем. - - - Warning: We do not appear to fully agree with our peers! You may need to upgrade, or other nodes may need to upgrade. - Увага: Ðаш ланцюжок блоків відрізнÑєтьÑÑ Ð²Ñ–Ð´ ланцюжків підключених учаÑників! Можливо, вам, або іншим вузлам, необхідно оновитиÑÑ. - - - Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. - Увага: помилка Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ wallet.dat! Ð’ÑÑ– ключі прочитано коректно, але дані транзакцій чи запиÑи адреÑної книги можуть бути пропущені, або пошкоджені. - - - 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. - Увага: файл wallet.dat пошкоджено, дані врÑтовано! Оригінальний wallet.dat збережено Ñк wallet.{timestamp}.bak до %s; Ñкщо Ваш Ð±Ð°Ð»Ð°Ð½Ñ Ñ‡Ð¸ транзакції неправильні, Ви можете відновити Ñ—Ñ… з резервної копії. - - - Whitelist peers connecting from the given netmask or IP address. Can be specified multiple times. - Додати учаÑників, що під'єднуютьÑÑ Ð· заданої підмережі чи IP-адреÑи, в білий ÑпиÑок. Можна вказувати декілька разів. - - - (default: 1) - (типово: 1) - - - <category> can be: - <category> може бути: - - - Attempt to recover private keys from a corrupt wallet.dat - Спроба відновити закриті ключі з пошкодженого wallet.dat - - - Block creation options: - Опції ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð±Ð»Ð¾ÐºÑƒ: - - - Connect only to the specified node(s) - ПідключитиÑÑŒ лише до вказаного вузла/вузлів - - - Connection options: - Параметри з'єднаннÑ: - - - Corrupted block database detected - ВиÑвлено пошкоджений блок бази даних - - - Debugging/Testing options: - Параметри теÑтуваннÑ/налагодженнÑ: - - - Do not load the wallet and disable wallet RPC calls - Ðе завантажувати гаманець та вимкнути Ð·Ð²ÐµÑ€Ð½ÐµÐ½Ð½Ñ Ð´Ð¾ нього через RPC - - - Do you want to rebuild the block database now? - Ви хочете перебудувати базу даних блоків зараз? - - - Error initializing block database - Помилка ініціалізації бази даних блоків - - - Error initializing wallet database environment %s! - Помилка ініціалізації Ñередовища бази даних Ð³Ð°Ð¼Ð°Ð½Ñ†Ñ %s! - - - Error loading block database - Помилка Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð±Ð°Ð·Ð¸ даних блоків - - - Error opening block database - Помилка Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ð±Ð»Ð¾ÐºÑƒ бази даних - - - Error: Disk space is low! - Помилка: Мало вільного міÑÑ†Ñ Ð½Ð° диÑку! - - - Failed to listen on any port. Use -listen=0 if you want this. - Ðе вдалоÑÑ Ñлухати на жодному порту. ВикориÑтовуйте -listen=0, Ñкщо ви хочете цього. - - - If <category> is not supplied, output all debugging information. - Якщо <category> не задано, виводить вÑÑŽ налагоджувальну інформацію. - - - Importing... - Імпорт... - - - Incorrect or no genesis block found. Wrong datadir for network? - Початковий блок некоректний/відÑутній. Чи правильно вказано каталог даних Ð´Ð»Ñ Ð¾Ð±Ñ€Ð°Ð½Ð¾Ñ— мережі? - - - Invalid -onion address: '%s' - Помилка в адреÑÑ– -onion: «%s» - - - Not enough file descriptors available. - Бракує доÑтупних деÑкрипторів файлів. - - - Only connect to nodes in network <net> (ipv4, ipv6 or onion) - ПідключатиÑÑ Ñ‚Ñ–Ð»ÑŒÐºÐ¸ до вузлів в мережі <net> (ipv4, ipv6 або onion) - - - Prune cannot be configured with a negative value. - Розмір Ñкороченого ланцюжка блоків не може бути від'ємним. - - - Prune mode is incompatible with -txindex. - ВикориÑÑ‚Ð°Ð½Ð½Ñ Ñкороченого ланцюжка блоків неÑуміÑне з параметром -txindex. - - - Set database cache size in megabytes (%d to %d, default: %d) - Ð’Ñтановити розмір кешу бази даних в мегабайтах (від %d до %d, типово: %d) - - - Set maximum block size in bytes (default: %d) - Ð’Ñтановити макÑимальний розмір блоку у байтах (типово: %d) - - - Specify wallet file (within data directory) - Вкажіть файл Ð³Ð°Ð¼Ð°Ð½Ñ†Ñ (в межах каталогу даних) - - - Use UPnP to map the listening port (default: %u) - ÐамагатиÑÑŒ викориÑтовувати UPnP Ð´Ð»Ñ Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð¿Ð¾Ñ€Ñ‚Ñƒ, що проÑлуховуєтьÑÑ, на роутері (типово: %u) - - - Verifying blocks... - Перевірка блоків... - - - Verifying wallet... - Перевірка гаманцÑ... - - - Wallet %s resides outside data directory %s - Гаманець %s знаходитьÑÑ Ð¿Ð¾Ð·Ð° каталогом даних %s - - - Wallet options: - Параметри гаманцÑ: - - - Warning: This version is obsolete; upgrade required! - Увага: Поточна верÑÑ–Ñ Ð·Ð°Ñтаріла, необхідне оновленнÑ! - - - You need to rebuild the database using -reindex to change -txindex - Вам необхідно перебудувати базу даних з викориÑтаннÑм -reindex Ð´Ð»Ñ Ñ‚Ð¾Ð³Ð¾, щоб змінити -txindex - - - Imports blocks from external blk000??.dat file - Імпорт блоків з зовнішнього файлу blk000??.dat - - - 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 - Дозволити Ð¿Ñ–Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ð¿Ð¾ протоколу JSON-RPC зі вказаного джерела. Правильною Ð´Ð»Ñ <ip> Ñ” окрема IP-адреÑа (наприклад, 1.2.3.4), IP-адреÑа та маÑка підмережі (наприклад, 1.2.3.4/255.255.255.0) або CIDR-адреÑа (наприклад, 1.2.3.4/24). Цей параметр можна вказувати декілька разів. - - - An error occurred while setting up the RPC address %s port %u for listening: %s - СталаÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° при Ñпробі відкрити порт RPC-адреÑи %s:%u Ð´Ð»Ñ Ð¿Ñ€Ð¾ÑлуховуваннÑ: %s - - - Bind to given address and whitelist peers connecting to it. Use [host]:port notation for IPv6 - Прив'ÑзатиÑÑ Ð´Ð¾ даної адреÑи та вноÑити до білого ÑпиÑку учаÑників, що під'єднуютьÑÑ Ð´Ð¾ неї. ВикориÑтовуйте Ð·Ð°Ð¿Ð¸Ñ Ð²Ð¸Ð´Ñƒ [хоÑÑ‚]:порт Ð´Ð»Ñ IPv6 - - - Bind to given address to listen for JSON-RPC connections. Use [host]:port notation for IPv6. This option can be specified multiple times (default: bind to all interfaces) - Прив'ÑзатиÑÑ Ð´Ð¾ даної адреÑи Ð´Ð»Ñ Ð¿Ñ€Ð¾ÑÐ»ÑƒÑ…Ð¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ JSON-RPC підключень. ВикориÑтовуйте Ð·Ð°Ð¿Ð¸Ñ Ð²Ð¸Ð´Ñƒ [хоÑÑ‚]:порт Ð´Ð»Ñ IPv6. Цей параметр можна вказувати декілька разів (типово: прив'ÑзуватиÑÑ Ð´Ð¾ вÑÑ–Ñ… інтерфейÑів) - - - Cannot obtain a lock on data directory %s. Bitcoin Core is probably already running. - Ðе вдалоÑÑ Ð²Ñтановити Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ð° каталог даних %s. Bitcoin Core, ймовірно, вже запущений. - - - Create new files with system default permissions, instead of umask 077 (only effective with disabled wallet functionality) - Створювати нові файли з типовими Ð´Ð»Ñ ÑиÑтеми атрибутами доÑтупу заміÑть маÑки 077 (діє тільки при вимкненому гаманці) - - - Discover own IP addresses (default: 1 when listening and no -externalip or -proxy) - Визначити влаÑні IP-адреÑи (типово: 1 при проÑлуховуванні та за відÑутноÑті -externalip або -proxy) - - - Error: Listening for incoming connections failed (listen returned error %s) - Помилка: Ðе вдалоÑÑ Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ñ‚Ð¸ проÑÐ»ÑƒÑ…Ð¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ…Ñ–Ð´Ð½Ð¸Ñ… підключень (listen повернув помилку: %s) - - - Error: Unsupported argument -socks found. Setting SOCKS version isn't possible anymore, only SOCKS5 proxies are supported. - Помилка: Параметр -socks не підтримуєтьÑÑ. МожливіÑть вказувати верÑÑ–ÑŽ SOCKS було видалено, так Ñк підтримуєтьÑÑ Ð»Ð¸ÑˆÐµ SOCKS5. - - - Execute command when a relevant alert is received or we see a really long fork (%s in cmd is replaced by message) - Виконати команду при надходженні важливого ÑÐ¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð°Ð±Ð¾ при ÑпоÑтереженні тривалого Ñ€Ð¾Ð·Ð³Ð°Ð»ÑƒÐ¶ÐµÐ½Ð½Ñ Ð»Ð°Ð½Ñ†ÑŽÐ¶ÐºÐ° (заміÑть %s буде підÑтавлено повідомленнÑ) - - - Fees (in BTC/Kb) smaller than this are considered zero fee for relaying (default: %s) - КоміÑÑ–Ñ— (в BTC/КБ), що менші за вказану, вважатимутьÑÑ Ð½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¼Ð¸ (Ð´Ð»Ñ Ñ€ÐµÑ‚Ñ€Ð°Ð½ÑлÑції) (типово: %s) - - - If paytxfee is not set, include enough fee so transactions begin confirmation on average within n blocks (default: %u) - Якщо параметр paytxfee не вÑтановлено, включити коміÑÑ–ÑŽ Ð´Ð»Ñ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð¿ÐµÑ€ÑˆÐ¸Ñ… підтверджень транзакцій протÑгом n блоків (типово: %u) - - - Invalid amount for -maxtxfee=<amount>: '%s' (must be at least the minrelay fee of %s to prevent stuck transactions) - ÐеприпуÑтима Ñума Ð´Ð»Ñ -maxtxfee = <amount>: «%s» ( плата повинна бути, принаймні %s, щоб запобігти завиÑанню транзакцій) - - - Maximum size of data in data carrier transactions we relay and mine (default: %u) - МакÑимальний розмір даних в транзакціÑÑ… ноÑіїв даних, що ми передаємо Ñ– добуваємо (за замовчуваннÑм: %u) - - - Prune configured below the minimum of %d MB. Please use a higher number. - Ð’Ñтановлений розмір ланцюжка блоків Ñ” замалим (менший за %d МБ). Будь лаÑка, виберіть більше чиÑло. - - - Query for peer addresses via DNS lookup, if low on addresses (default: 1 unless -connect) - ДізнаватиÑÑ Ð°Ð´Ñ€ÐµÑи учаÑників через DNS при замалій кількоÑті відомих Ð°Ð´Ñ€ÐµÑ (типово: 1 за відÑутноÑті -connect) - - - Randomize credentials for every proxy connection. This enables Tor stream isolation (default: %u) - Ðадавати випадкові дані доÑтупу Ð´Ð»Ñ ÐºÐ¾Ð¶Ð½Ð¾Ð³Ð¾ прокÑÑ–-з'єднаннÑ. Це дозволÑÑ” ввімкнути ізолÑцію потоків Tor'у (типово: %u) - - - Set maximum size of high-priority/low-fee transactions in bytes (default: %d) - Ð’Ñтановити макÑимальний розмір транзакцій з виÑоким пріоритетом та низькою коміÑією (в байтах) (типово: %d) - - - Set the number of threads for coin generation if enabled (-1 = all cores, default: %d) - Ð’Ñтановити кількіÑть потоків Ð´Ð»Ñ Ð³ÐµÐ½ÐµÑ€Ð°Ñ†Ñ–Ñ— монет (-1 = кількоÑті Ñдер, типово: %d) - - - The transaction amount is too small to send after the fee has been deducted - Залишок від Ñуми транзакції зі Ñплатою коміÑÑ–Ñ— занадто малий - - - 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. - Цей продукт включає в Ñебе програмне забезпеченнÑ, розроблене в рамках проекту OpenSSL <https://www.openssl.org/>, криптографічне програмне забезпеченнÑ, напиÑане Еріком Янгом, та функції Ð´Ð»Ñ Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸ з UPnP, напиÑані ТомаÑом Бернардом. - - - 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 - - Ð”Ð»Ñ Ð²Ð¸ÐºÐ¾Ñ€Ð¸ÑÑ‚Ð°Ð½Ð½Ñ bitcoind, або bitcoin-qt з параметром -server, ви повинні вÑтановити rpcpassword в файлі конфігурації: -%s -РекомендуєтьÑÑ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñтати такий випадковий пароль: -rpcuser=bitcoinrpc -rpcpassword=%s -(вам не треба запам'Ñтовувати цей пароль) -Ім'Ñ ÐºÐ¾Ñ€Ð¸Ñтувача та пароль ПОВИÐÐІ бути різними. -Якщо файлу не Ñ–Ñнує, Ñтворіть його, обмеживши доÑтуп правом Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð´Ð»Ñ Ð²Ð»Ð°Ñника. -Також рекомендуєтьÑÑ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñтовувати alertnotify Ð´Ð»Ñ Ñ‚Ð¾Ð³Ð¾, щоб отримувати ÑÐ¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾ проблеми; -наприклад: alertnotify=echo %%s | mail -s "Ð¡Ð¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Bitcoin" admin@foo.com - - - - Warning: -maxtxfee is set very high! Fees this large could be paid on a single transaction. - Увага: уÑтановлено дуже велике Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ -maxtxfee! Такі великі коміÑÑ–Ñ— можуть бути Ñплачені в окремій транзакції. - - - Warning: Please check that your computer's date and time are correct! If your clock is wrong Bitcoin Core will not work properly. - Увага: будь лаÑка, перевірте дату Ñ– Ñ‡Ð°Ñ Ð½Ð° Ñвоєму комп'ютері! Якщо ваш годинник йде неправильно, Bitcoin Core може працювати некоректно. - - - 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 - УчаÑники, що знаходÑтьÑÑ Ð² білому ÑпиÑку, не можуть бути заблоковані за DoS та їхні транзакції завжди ретранÑлюватимутьÑÑ (навіть Ñкщо вони Ñ” в пам'Ñті), що може бути кориÑним, наприклад, Ð´Ð»Ñ ÑˆÐ»ÑŽÐ·Ñƒ - - - You need to rebuild the database using -reindex to go back to unpruned mode. This will redownload the entire blockchain - Вам необхідно перебудувати базу даних з викориÑтаннÑм -reindex Ð´Ð»Ñ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð¿Ð¾Ð²Ð½Ð¾Ð³Ð¾ ланцюжка блоків. - - - (default: %u) - (типово: %u) - - - Accept public REST requests (default: %u) - Приймати публічні REST-запити (типово: %u) - - - Activating best chain... - ÐÐºÑ‚Ð¸Ð²Ð°Ñ†Ñ–Ñ Ð½Ð°Ð¹ÐºÑ€Ð°Ñ‰Ð¾Ð³Ð¾ ланцюжка... - - - Can't run with a wallet in prune mode. - ВикориÑÑ‚Ð°Ð½Ð½Ñ Ð³Ð°Ð¼Ð°Ð½Ñ†Ñ Ð·Ñ– Ñкороченим ланцюжком блоків неможливе. - - - Cannot resolve -whitebind address: '%s' - Ðе вдалоÑÑ Ñ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ñ‚Ð¸ адреÑу Ð´Ð»Ñ -whitebind: «%s» - - - Choose data directory on startup (default: 0) - Обрати каталог даних під Ñ‡Ð°Ñ Ð·Ð°Ð¿ÑƒÑку (типово: 0) - - - Connect through SOCKS5 proxy - ПідключитиÑÑŒ через SOCKS5-прокÑÑ– - - - Copyright (C) 2009-%i The Bitcoin Core Developers - (C) 2009-%i Розробники Bitcoin Core - - - Could not parse -rpcbind value %s as network address - Ðеможливо розпізнати мережеву адреÑу Ð´Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ñƒ -rpcbind (%s) - - - Error loading wallet.dat: Wallet requires newer version of Bitcoin Core - Помилка при завантаженні wallet.dat: Гаманець потребує новішої верÑÑ–Ñ— Bitcoin Core - - - Error reading from database, shutting down. - Помилка Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð±Ð°Ð·Ð¸ даних, припинÑÑŽ роботу. - - - Error: A fatal internal error occurred, see debug.log for details - Помилка: СталаÑÑ Ñ„Ð°Ñ‚Ð°Ð»ÑŒÐ½Ð° помилка (детальніший Ð¾Ð¿Ð¸Ñ Ð½Ð°Ð²ÐµÐ´ÐµÐ½Ð¾ в debug.log) - - - Error: Unsupported argument -tor found, use -onion. - Помилка: Параметр -tor не підтримуєтьÑÑ, викориÑтовуйте -onion - - - Fee (in BTC/kB) to add to transactions you send (default: %s) - КоміÑÑ–Ñ (в BTC/КБ), що додаватиметьÑÑ Ð´Ð¾ вихідних транзакцій (типово: %s) - - - Information - Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ - - - Initialization sanity check failed. Bitcoin Core is shutting down. - Ðе вдалоÑÑ Ð¿Ñ€Ð¾Ð¹Ñ‚Ð¸ базові перевірки під Ñ‡Ð°Ñ Ñ–Ð½Ñ–Ñ†Ñ–Ð°Ð»Ñ–Ð·Ð°Ñ†Ñ–Ñ—. Bitcoin Core буде вимкнено. - - - Invalid amount for -maxtxfee=<amount>: '%s' - ÐеприпуÑтима Ñума Ð´Ð»Ñ -maxtxfee = <amount>: «%s» - - - Invalid amount for -minrelaytxfee=<amount>: '%s' - Вказано некоректну Ñуму Ð´Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ñƒ -minrelaytxfee: «%s» - - - Invalid amount for -mintxfee=<amount>: '%s' - Вказано некоректну Ñуму Ð´Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ñƒ -mintxfee: «%s» - - - Invalid amount for -paytxfee=<amount>: '%s' (must be at least %s) - Вказано некоректну Ñуму Ð´Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ñƒ -paytxfee: «%s» (повинно бути щонайменше %s) - - - Invalid netmask specified in -whitelist: '%s' - Вказано неправильну маÑку підмережі Ð´Ð»Ñ -whitelist: «%s» - - - Keep at most <n> unconnectable transactions in memory (default: %u) - Утримувати в пам'Ñті щонайбільше <n> транзакцій, що Ñпоживають невідомі входи (типово: %u) - - - Need to specify a port with -whitebind: '%s' - Ðеобхідно вказати порт Ð´Ð»Ñ -whitebind: «%s» - - - Node relay options: - Параметри вузла ретранÑлÑції: - - - Pruning blockstore... - Ð¡ÐºÐ¾Ñ€Ð¾Ñ‡ÐµÐ½Ð½Ñ ÐºÑ–Ð»ÑŒÐºÐ¾Ñті блоків... - - - RPC SSL options: (see the Bitcoin Wiki for SSL setup instructions) - Параметри RPC SSL: (див. Bitcoin Wiki Ð´Ð»Ñ Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ SSL) - - - RPC server options: - Параметри Ñервера RPC: - - - RPC support for HTTP persistent connections (default: %d) - Підтримка RPC Ð´Ð»Ñ Ð¿Ð¾Ñтійних HTTP-з'єднань (типово: %d) - - - Rebuild block chain index from current blk000??.dat files on startup - При запуÑку перебудувати Ñ–Ð½Ð´ÐµÐºÑ Ð»Ð°Ð½Ñ†ÑŽÐ¶ÐºÐ° блоків з поточних файлів blk000??.dat - - - Receive and display P2P network alerts (default: %u) - Отримувати та відображати Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ Ð· мережі (типово: %u) - - - Send trace/debug info to console instead of debug.log file - ВідÑилати налагоджувальну інформацію на конÑоль, а не у файл debug.log - - - Send transactions as zero-fee transactions if possible (default: %u) - Ðе Ñплачувати коміÑÑ–ÑŽ за надÑÐ¸Ð»Ð°Ð½Ð½Ñ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ñ–Ð¹, Ñкщо це можливо (типово: %u) - - - Set SSL root certificates for payment request (default: -system-) - Вказати кореневі SSL-Ñертифікати Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñ‚Ñƒ платежу (типово: -ÑиÑтемні-) - - - Set language, for example "de_DE" (default: system locale) - Ð’ÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¼Ð¾Ð²Ð¸, наприклад "de_DE" (типово: ÑиÑтемна) - - - Show all debugging options (usage: --help -help-debug) - Показати вÑÑ– налагоджувальні параметри (викориÑтаннÑ: --help -help-debug) - - - Show splash screen on startup (default: 1) - Показувати заÑтавку під Ñ‡Ð°Ñ Ð·Ð°Ð¿ÑƒÑку (типово: 1) - - - Shrink debug.log file on client startup (default: 1 when no -debug) - СтиÑкати файл debug.log під Ñ‡Ð°Ñ Ñтарту клієнта (типово: 1 коли відÑутній параметр -debug) - - - Signing transaction failed - ПідпиÑÐ°Ð½Ð½Ñ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ñ–Ñ— не вдалоÑÑ - - - Start minimized - ЗапуÑкати згорнутим - - - The transaction amount is too small to pay the fee - Ðеможливо Ñплатити коміÑÑ–ÑŽ із-за малої Ñуми транзакції - - - This is experimental software. - Це програмне Ð·Ð°Ð±ÐµÐ·Ð¿ÐµÑ‡ÐµÐ½Ð½Ñ Ñ” екÑпериментальним. - - - Transaction amount too small - Сума транзакції занадто мала - - - Transaction amounts must be positive - Суми монет у транзакції мають бути позитивними - - - Transaction too large for fee policy - Ð¢Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ñ–Ñ Ð·Ð°Ð½Ð°Ð´Ñ‚Ð¾ велика Ð´Ð»Ñ Ð¿Ñ€Ð°Ð²Ð¸Ð» коміÑÑ–Ñ— - - - Transaction too large - Ð¢Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ñ–Ñ Ð·Ð°Ð½Ð°Ð´Ñ‚Ð¾ велика - - - UI Options: - Параметри інтерфейÑу: - - - Unable to bind to %s on this computer (bind returned error %s) - Ðеможливо прив'ÑзатиÑÑ Ð´Ð¾ %s на цьому комп'ютері (bind повернув помилку: %s) - - - Use UPnP to map the listening port (default: 1 when listening) - ÐамагатиÑÑŒ викориÑтовувати UPnP Ð´Ð»Ñ Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð¿Ð¾Ñ€Ñ‚Ñƒ, що проÑлуховуєтьÑÑ Ð½Ð° роутері (типово: 1 коли проÑлуховуєтьÑÑ) - - - Username for JSON-RPC connections - Ім'Ñ ÐºÐ¾Ñ€Ð¸Ñтувача Ð´Ð»Ñ JSON-RPC-з'єднань - - - Wallet needed to be rewritten: restart Bitcoin Core to complete - Потрібно перезапиÑати гаманець: перезапуÑтіть Bitcoin Core Ð´Ð»Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ - - - Warning - ÐŸÐ¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ - - - Warning: Unsupported argument -benchmark ignored, use -debug=bench. - Увага: Параметр -benchmark не підтримуєтьÑÑ Ñ‚Ð° буде проігнорований, викориÑтовуйте -debug=bench. - - - Warning: Unsupported argument -debugnet ignored, use -debug=net. - Увага: Параметр -debugnet не підтримуєтьÑÑ Ñ‚Ð° буде проігнорований, викориÑтовуйте -debug=net. - - - Zapping all transactions from wallet... - Ð’Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ Ð²ÑÑ–Ñ… транзакцій з гаманцÑ... - - - on startup - під Ñ‡Ð°Ñ Ð·Ð°Ð¿ÑƒÑку - - - wallet.dat corrupt, salvage failed - wallet.dat пошкоджено, Ð²Ñ–Ð´Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð½Ðµ вдалоÑÑ - - - Password for JSON-RPC connections - Пароль Ð´Ð»Ñ JSON-RPC-з'єднань - - - Execute command when the best block changes (%s in cmd is replaced by block hash) - Виконати команду, коли з'ÑвитьÑÑ Ð½Ð¾Ð²Ð¸Ð¹ блок (%s в команді змінюєтьÑÑ Ð½Ð° хеш блоку) - - - Upgrade wallet to latest format - Модернізувати гаманець до найновішого формату - - - Rescan the block chain for missing wallet transactions - ПереÑканувати ланцюжок блоків, в пошуку втрачених транзакцій - - - Use OpenSSL (https) for JSON-RPC connections - ВикориÑтовувати OpenSSL (https) Ð´Ð»Ñ JSON-RPC-з'єднань - - - This help message - Дана довідка - - - Allow DNS lookups for -addnode, -seednode and -connect - Дозволити пошук в DNS Ð´Ð»Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´ -addnode, -seednode та -connect - - - Loading addresses... - Ð—Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð°Ð´Ñ€ÐµÑ... - - - Error loading wallet.dat: Wallet corrupted - Помилка при завантаженні wallet.dat: Гаманець пошкоджено - - - (1 = keep tx meta data e.g. account owner and payment request information, 2 = drop tx meta data) - (1 = утримувати метадані транзакцій (до Ñких відноÑитьÑÑ Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ влаÑника рахунку та запити платежів), 2 - відкинути) - - - How thorough the block verification of -checkblocks is (0-4, default: %u) - Рівень ретельноÑті перевірки блоків (0-4, типово: %u) - - - Maintain a full transaction index, used by the getrawtransaction rpc call (default: %u) - Утримувати повний Ñ–Ð½Ð´ÐµÐºÑ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ñ–Ð¹ (викориÑтовуєтьÑÑ RPC-викликом getrawtransaction) (типово: %u) - - - Number of seconds to keep misbehaving peers from reconnecting (default: %u) - Ð§Ð°Ñ Ð² Ñекундах, протÑгом Ñкого відключені учаÑники з поганою поведінкою не зможуть підключитиÑÑ (типово: %u) - - - Output debugging information (default: %u, supplying <category> is optional) - Виводити налагоджувальну інформацію (типово: %u, Ð²ÐºÐ°Ð·Ð°Ð½Ð½Ñ <category> необов'Ñзкове) - - - Use separate SOCKS5 proxy to reach peers via Tor hidden services (default: %s) - ВикориÑтовувати окремий SOCKS5-прокÑÑ– Ð´Ð»Ñ Ð·'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð· учаÑниками через приховані ÑервіÑи Tor (типово: %s) - - - (default: %s) - (типово: %s) - - - Acceptable ciphers (default: %s) - ДопуÑтимі шифри (типово: %s) - - - Always query for peer addresses via DNS lookup (default: %u) - Завжди дізнаватиÑÑ Ð°Ð´Ñ€ÐµÑи учаÑників через DNS (типово: %u) - - - Error loading wallet.dat - Помилка при завантаженні wallet.dat - - - Generate coins (default: %u) - Ð“ÐµÐ½ÐµÑ€Ð°Ñ†Ñ–Ñ Ð¼Ð¾Ð½ÐµÑ‚ (типово: %u) - - - How many blocks to check at startup (default: %u, 0 = all) - Скільки блоків перевірÑти під Ñ‡Ð°Ñ Ð·Ð°Ð¿ÑƒÑку (типово: %u, 0 = вÑÑ–) - - - Include IP addresses in debug output (default: %u) - Включити IP-адреÑи до налагоджувального виводу (типово: %u) - - - Invalid -proxy address: '%s' - Помилка в адреÑÑ– прокÑÑ–-Ñервера: «%s» - - - Listen for JSON-RPC connections on <port> (default: %u or testnet: %u) - ПроÑлуховувати <port> Ð´Ð»Ñ JSON-RPC з'єднань (типово: %u, Ð´Ð»Ñ Ñ‚ÐµÑтової мережі: %u) - - - Listen for connections on <port> (default: %u or testnet: %u) - Чекати на з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð½Ð° <port> (типово: %u, Ð´Ð»Ñ Ñ‚ÐµÑтової мережі: %u) - - - Maintain at most <n> connections to peers (default: %u) - Підтримувати щонайбільше <n> з'єднань з учаÑниками (типово: %u) - - - Make the wallet broadcast transactions - Дозволити гаманцю розповÑюджувати транзакції - - - Maximum per-connection receive buffer, <n>*1000 bytes (default: %u) - МакÑимальний розмір вхідного буферу на одне з'єднаннÑ, <n>*1000 байтів (типово: %u) - - - Maximum per-connection send buffer, <n>*1000 bytes (default: %u) - МакÑимальний розмір вихідного буферу на одне з'єднаннÑ, <n>*1000 байтів (типово: %u) - - - Prepend debug output with timestamp (default: %u) - Доповнювати налагоджувальний вивід відміткою чаÑу (типово: %u) - - - Relay and mine data carrier transactions (default: %u) - РетранÑлювати та Ñтворювати транзакції ноÑіїв даних (типово: %u) - - - Relay non-P2SH multisig (default: %u) - РетранÑлювати не-P2SH транзакції з мультипідпиÑом (типово: %u) - - - Server certificate file (default: %s) - Файл Ñертифіката Ñервера (типово: %s) - - - Server private key (default: %s) - Закритий ключ Ñервера (типово: %s) - - - Set key pool size to <n> (default: %u) - Ð’Ñтановити розмір пулу ключів <n> (типово: %u) - - - Set minimum block size in bytes (default: %u) - Ð’Ñтановити мінімальний розмір блоку в байтах (типово: %u) - - - Set the number of threads to service RPC calls (default: %d) - Ð’Ñтановити чиÑло потоків Ð´Ð»Ñ Ð¾Ð±ÑÐ»ÑƒÐ³Ð¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð¸ÐºÐ»Ð¸ÐºÑ–Ð² RPC (типово: %d) - - - Specify configuration file (default: %s) - Вказати файл конфігурації (типово: %s) - - - Specify connection timeout in milliseconds (minimum: 1, default: %d) - Вказати тайм-аут Ð¿Ñ–Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ð² міліÑекундах (щонайменше: 1, типово: %d) - - - Specify pid file (default: %s) - Вказати pid-файл (типово: %s) - - - Spend unconfirmed change when sending transactions (default: %u) - Витрачати непідтверджену решту при відправленні транзакцій (типово: %u) - - - Threshold for disconnecting misbehaving peers (default: %u) - Поріг Ð²Ñ–Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ ÑƒÑ‡Ð°Ñників з поганою поведінкою (типово: %u) - - - Unknown network specified in -onlynet: '%s' - Ðевідома мережа вказана в -onlynet: «%s» - - - Cannot resolve -bind address: '%s' - Ðе вдалоÑÑ Ñ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ñ‚Ð¸ адреÑу Ð´Ð»Ñ -bind: «%s» - - - Cannot resolve -externalip address: '%s' - Ðе вдалоÑÑ Ñ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ñ‚Ð¸ адреÑу Ð´Ð»Ñ -externalip: «%s» - - - Invalid amount for -paytxfee=<amount>: '%s' - Помилка у величині коміÑÑ–Ñ— -paytxfee=<amount>: «%s» - - - Insufficient funds - ÐедоÑтатньо коштів - - - Loading block index... - Ð—Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ñ–Ð½Ð´ÐµÐºÑу блоків... - - - Add a node to connect to and attempt to keep the connection open - Додати вузол до Ð¿Ñ–Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ñ– лишити його відкритим - - - Loading wallet... - Ð—Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð³Ð°Ð¼Ð°Ð½Ñ†Ñ... - - - Cannot downgrade wallet - Ðе вдаєтьÑÑ Ð¿Ð¾Ð½Ð¸Ð·Ð¸Ñ‚Ð¸ верÑÑ–ÑŽ Ð³Ð°Ð¼Ð°Ð½Ñ†Ñ - - - Cannot write default address - Ðеможливо запиÑати типову адреÑу - - - Rescanning... - СкануваннÑ... - - - Done loading - Ð—Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ðµ - - - Error - Помилка - - - \ No newline at end of file diff --git a/src/qt/locale/bitcoin_ur_PK.ts b/src/qt/locale/bitcoin_ur_PK.ts deleted file mode 100644 index d4242d5e3..000000000 --- a/src/qt/locale/bitcoin_ur_PK.ts +++ /dev/null @@ -1,366 +0,0 @@ - - - AddressBookPage - - Right-click to edit address or label - Ù¾ØªÛ ØªØ¨Ø¯ÛŒÙ„ کرے Ú©Û’ لیے دائیاں Ú©Ù„Ú© کریں - - - Create a new address - نیا ایڈریس بنائیں - - - &New - نیا - - - Copy the currently selected address to the system clipboard - سلیکٹڈ پتے Ú©Ùˆ کمپوٹر Ú©ÛŒ عارضی Ø¬Ú¯Û Ø±Ú©Ú¾ÛŒÚº - - - &Copy - نقل - - - C&lose - بند - - - &Copy Address - کاپی Ù¾ØªÛ - - - Delete the currently selected address from the list - سلیکٹڈ پتے Ú©Ùˆ مٹائیں - - - Export the data in the current tab to a file - Ù…ÙˆØ¬ÙˆØ¯Û ÚˆÛŒÙ¹Ø§ Ú©Ùˆ ÙØ§Ø¦ÛŒÙ„ میں محÙوظ کریں - - - &Export - برآمد - - - &Delete - مٹا - - - Choose the address to send coins to - کوئین وصول کرنے والے کا Ù¾ØªÛ - - - Choose the address to receive coins with - کوئین بھیجنے والے کا Ù¾ØªÛ - - - C&hoose - چننا - - - Sending addresses - جس پتے پر بھیجنے Ûیں - - - - AddressTableModel - - Label - Ú†Ù¹ - - - Address - Ù¾ØªÛ - - - (no label) - Ú†Ù¹ Ú©Û’ بغیر - - - - AskPassphraseDialog - - Enter passphrase - پاس ÙØ±ÛŒØ² داخل کریں - - - New passphrase - نیا پاس ÙØ±ÛŒØ² - - - Repeat new passphrase - نیا پاس ÙØ±ÛŒØ² Ø¯ÛØ±Ø§Ø¦ÛŒÚº - - - Encrypt wallet - بٹوے Ú©ÛŒ رمزنگاری - - - Unlock wallet - بٹوا ان لاک - - - Decrypt wallet - Ø®ÙÛŒÛ Ú©Ø´Ø§Ø¦ÛŒ کر یںبٹوے Ú©Û’ - - - Change passphrase - پاس ÙØ±ÛŒØ² تبدیل کریں - - - - BitcoinGUI - - Error - نقص - - - - ClientModel - - - CoinControlDialog - - Amount - رقم - - - Date - تاریخ - - - (no label) - Ú†Ù¹ Ú©Û’ بغیر - - - - EditAddressDialog - - - FreespaceChecker - - - HelpMessageDialog - - - Intro - - Error - نقص - - - - OpenURIDialog - - - OptionsDialog - - - OverviewPage - - - PaymentServer - - - PeerTableModel - - - QObject - - Amount - رقم - - - - QRImageWidget - - - RPCConsole - - - ReceiveCoinsDialog - - - ReceiveRequestDialog - - Address - Ù¾ØªÛ - - - Amount - رقم - - - Label - Ú†Ù¹ - - - - RecentRequestsTableModel - - Date - تاریخ - - - Label - Ú†Ù¹ - - - Amount - رقم - - - (no label) - Ú†Ù¹ Ú©Û’ بغیر - - - - SendCoinsDialog - - Balance: - بیلنس: - - - (no label) - Ú†Ù¹ Ú©Û’ بغیر - - - - SendCoinsEntry - - - ShutdownWindow - - - SignVerifyMessageDialog - - - SplashScreen - - - TrafficGraphWidget - - - TransactionDesc - - Date - تاریخ - - - Amount - رقم - - - - TransactionDescDialog - - - TransactionTableModel - - Date - تاریخ - - - Type - ٹائپ - - - Label - Ú†Ù¹ - - - Sent to - Ú©Ùˆ بھیجا - - - (n/a) - (N / A) - - - - TransactionView - - All - تمام - - - Today - آج - - - This week - اس ÛÙØªÛ’ - - - This month - اس Ù…Ûینے - - - Last month - Ù¾Ú†Ú¾Ù„Û’ Ù…Ûینے - - - This year - اس سال - - - Range... - دیگر - - - Sent to - Ú©Ùˆ بھیجا - - - Date - تاریخ - - - Type - ٹائپ - - - Label - Ú†Ù¹ - - - Address - Ù¾ØªÛ - - - - UnitDisplayStatusBarControl - - - WalletFrame - - - WalletModel - - - WalletView - - &Export - برآمد - - - Export the data in the current tab to a file - Ù…ÙˆØ¬ÙˆØ¯Û ÚˆÛŒÙ¹Ø§ Ú©Ùˆ ÙØ§Ø¦ÛŒÙ„ میں محÙوظ کریں - - - - bitcoin-core - - This help message - ÛŒÛ Ù…Ø¯Ø¯ کا پیغام - - - Insufficient funds - ناکاÙÛŒ Ùنڈز - - - Error - نقص - - - \ No newline at end of file diff --git a/src/qt/locale/bitcoin_uz@Cyrl.ts b/src/qt/locale/bitcoin_uz@Cyrl.ts deleted file mode 100644 index cc0a4bba0..000000000 --- a/src/qt/locale/bitcoin_uz@Cyrl.ts +++ /dev/null @@ -1,1914 +0,0 @@ - - - AddressBookPage - - Right-click to edit address or label - Манзил ёки ёрлиқни таҳрирлаш учун икки марта боÑинг - - - Create a new address - Янги манзил Ñратинг - - - &New - &Янги - - - Copy the currently selected address to the system clipboard - Жорий танланган манзилни тизим вақтинчалик хотираÑига нуÑха кўчиринг - - - &Copy - &ÐуÑха олиш - - - C&lose - &Ðпиш - - - &Copy Address - Манзилдан &нуÑха олиш - - - Delete the currently selected address from the list - Жорий танланган манзилни рўйхатдан ўчириш - - - Export the data in the current tab to a file - Жорий ички ойна ичидаги маълумотларни файлга ÑкÑпорт қилиш - - - &Export - &ЭкÑпорт - - - &Delete - &Ўчириш - - - Choose the address to send coins to - Тангаларни жўнатиш учун манзилни танланг - - - Choose the address to receive coins with - Тангаларни қабул қилиш учун манзилни танланг - - - C&hoose - &Танлаш - - - Sending addresses - Жўнатиладиган манзиллар - - - Receiving addresses - Қабул қилинадиган манзиллар - - - These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins. - Улар тўловларни жўнатиш учун Ñизнинг Bitcoin манзилларингиз. Доимо тангаларни жўнатишдан олдин Ñумма ва қабул қилувчи манзилни текшириб кўринг. - - - These are your Bitcoin addresses for receiving payments. It is recommended to use a new receiving address for each transaction. - Улар тўловларни қабул қилиш учун Ñизнинг Bitcoin манзилларингиз. Ҳар бир ўтказма учун Ñнги қабул қилувчи манзилдан фойдаланиш тавÑÐ¸Ñ Ò›Ð¸Ð»Ð¸Ð½Ð°Ð´Ð¸. - - - Copy &Label - ÐуÑха олиш ва ёрлиқ - - - &Edit - &Таҳрирлаш - - - Export Address List - Манзил рўйхатини ÑкÑпорт қилиш - - - Comma separated file (*.csv) - Вергул билан ажратилган файл (*.csv) - - - Exporting Failed - ЭкÑпорт қилиб бўлмади - - - There was an error trying to save the address list to %1. Please try again. - Манзил рўйхатини %1.га Ñақлашда хатолик юз берди. Яна уриниб кўринг. - - - - AddressTableModel - - Label - Ðрлиқ - - - Address - Манзил - - - (no label) - (Ðрлиқ мавжуд ÑмаÑ) - - - - AskPassphraseDialog - - Passphrase Dialog - Махфий Ñўз ойнаÑи - - - Enter passphrase - Махфий Ñузни киритинг - - - New passphrase - Янги махфий Ñуз - - - Repeat new passphrase - Янги махфий Ñузни такрорланг - - - Encrypt wallet - Ҳамённи қодлаш - - - This operation needs your wallet passphrase to unlock the wallet. - Ушбу операциÑни амалга ошириш учун ҳамённи қулфдан чиқариш парол Ñўзини талаб қилади. - - - Unlock wallet - Ҳамённи қулфдан чиқариш - - - This operation needs your wallet passphrase to decrypt the wallet. - Ушбу операциÑни амалга ошириш учун ҳамённи коддан чиқариш парол Ñўзини талаб қилади. - - - Decrypt wallet - Ҳамённи коддан чиқариш - - - Change passphrase - Махфий Ñузни узгартириш - - - Confirm wallet encryption - Ҳамённи кодлашни таÑдиқлаш - - - Warning: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR BITCOINS</b>! - Диққат: Ðгар Ñиз ҳамёнингизни кодлаÑангиз ва махфий Ñўзингизни унутÑангиз, Ñиз <b>БÐРЧРBITCOIN ПУЛЛÐРИÐГИЗÐИ ЙЎҚОТÐСИЗ</b>! - - - Are you sure you wish to encrypt your wallet? - Ҳамёнингизни кодлашни роÑтдан хоҳлайÑизми? - - - 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. - МУҲИМ: Сиз қилган олдинги ҳамён файли заҳиралари Ñнги Ñратилган, кодланган ҳамён файли билан алмаштирилиши керак. ХавфÑизлик Ñабабларига кўра олдинги кодланган ҳамён файли заҳираÑи Ñнги кодланган ҳамёндан фойдаланишингиз билан ÑроқÑиз ҳолга келади. - - - Warning: The Caps Lock key is on! - Диққат: Caps Lock тугмаÑи ёқилган! - - - Wallet encrypted - Ҳамёни кодланган - - - 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>. - Ҳамёнга Ñнги махфий Ñўз киритинг.<br/>ИлтимоÑ, <b>ўнта ёки таÑодифий белгили</b> махфий Ñўздан фойдаланинг ёки <b>Ñаккизта ёки кўпроқ Ñўзлар</b>дан фойдаланинг. - - - Wallet encryption failed - Ҳамённи кодлаш амалга ошмади - - - Wallet encryption failed due to an internal error. Your wallet was not encrypted. - Ҳамённи кодлаш ташқи хато туфайли амалга ошмади. Ҳамёнингиз кодланмади. - - - The supplied passphrases do not match. - Киритилган пароллар Ð¼Ð¾Ñ ÐºÐµÐ»Ð¼Ð°Ð´Ð¸. - - - Wallet unlock failed - Ҳамённи қулфдан чиқариш амалга ошмади - - - The passphrase entered for the wallet decryption was incorrect. - Ҳамённи коддан чиқариш учун киритилган парол нотўғри. - - - Wallet decryption failed - Ҳамённи коддан чиқариш амалга ошмади - - - Wallet passphrase was successfully changed. - Ҳамён пароли муваффақиÑтли алмаштирилди. - - - - BitcoinGUI - - Sign &message... - &Хабар ёзиш... - - - Synchronizing with network... - Тармоқ билан Ñинхронланмоқда... - - - &Overview - &Кўриб чиқиш - - - Node - Улам - - - Show general overview of wallet - Ҳамённинг умумий кўринишини кўрÑатиш - - - &Transactions - &Пул ўтказмалари - - - Browse transaction history - Пул ўтказмалари тарихини кўриш - - - E&xit - Ч&иқиш - - - Quit application - Иловадан чиқиш - - - About &Qt - &Qt ҳақида - - - Show information about Qt - Qt ҳақидаги маълумотларни кўрÑатиш - - - &Options... - &МоÑламалар... - - - &Encrypt Wallet... - Ҳамённи &кодлаш... - - - &Backup Wallet... - Ҳамённи &заҳиралаш... - - - &Change Passphrase... - Махфий Ñўзни &ўзгартириш... - - - &Sending addresses... - &Жўнатилувчи манзиллар... - - - &Receiving addresses... - &Қабул қилувчи манзиллар... - - - Open &URI... - Интернет манзилни очиш - - - Bitcoin Core client - Bitcoin аÑÐ¾Ñ Ð¼Ð¸Ð¶Ð¾Ð·Ð¸ - - - Importing blocks from disk... - ДиÑкдан блоклар импорт қилинмоқда... - - - Reindexing blocks on disk... - ДиÑкдаги блоклар қайта индекÑланмоқда... - - - Send coins to a Bitcoin address - Тангаларни Bitcoin манзилига жўнатиш - - - Backup wallet to another location - Ҳамённи бошқа манзилга заҳиралаш - - - Change the passphrase used for wallet encryption - Паролни ўзгартириш ҳамённи кодлашда фойдаланилади - - - &Debug window - &ÐоÑозликни ҳал қилиш ойнаÑи - - - Open debugging and diagnostic console - ÐоÑозликни ҳал қилиш ва Ñ‚Ð°ÑˆÑ…Ð¸Ñ Ñ‚ÐµÑ€Ð¼Ð¸Ð½Ð°Ð»Ð¸ - - - &Verify message... - Хабарни &таÑдиқлаш... - - - Bitcoin - Bitcoin - - - Wallet - Ҳамён - - - &Send - &Жўнатиш - - - &Receive - &Қабул қилиш - - - Show information about Bitcoin Core - Bitcoin Core ҳақидаги маълумотларни кўрÑатиш - - - &Show / Hide - &КўрÑатиш / Яшириш - - - Show or hide the main Window - ÐÑоÑий ойнани кўрÑатиш ёки Ñшириш - - - Encrypt the private keys that belong to your wallet - Ҳамёнингизга тегишли махфий калитларни кодлаш - - - Sign messages with your Bitcoin addresses to prove you own them - Bitcoin манзилидан унинг ÑгаÑи Ñканлигингизни иÑботлаш учун хабарлар ёзинг - - - Verify messages to ensure they were signed with specified Bitcoin addresses - Хабарларни махÑÑƒÑ Bitcoin манзилларингиз билан ёзилганлигига ишонч ҳоÑил қилиш учун уларни таÑдиқланг - - - &File - &Файл - - - &Settings - & Созламалар - - - &Help - &Ðрдам - - - Tabs toolbar - Ички ойналар аÑбоблар панели - - - Bitcoin Core - Bitcoin Core - - - Request payments (generates QR codes and bitcoin: URIs) - Тўловлар (QR кодлари ва bitcoin ёрдамида Ñратишлар: URI’лар) Ñўраш - - - &About Bitcoin Core - Bitcoin Core &ҳақида - - - Show the list of used sending addresses and labels - Фойдаланилган жўнатилган манзиллар ва ёрлиқлар рўйхатини кўрÑатиш - - - Show the list of used receiving addresses and labels - Фойдаланилган қабул қилинган манзиллар ва ёрлиқлар рўйхатини кўрÑатиш - - - Open a bitcoin: URI or payment request - Bitcoin’ни очиш: URI ёки тўлов Ñўрови - - - &Command-line options - &Буйруқлар Ñатри моÑламалари - - - Show the Bitcoin Core help message to get a list with possible Bitcoin command-line options - Мавжуд Bitcoin буйруқлар матни моÑламалари билан Bitcoin Core ёрдам хабарларини олиш рўйхатини кўрÑатиш - - - %n active connection(s) to Bitcoin network - %n та Bitcoin тармоғига фаол уланиш мавжуд - - - No block source available... - Блок манбалари мавжуд ÑмаÑ... - - - %n hour(s) - %n Ñоат - - - %n day(s) - %n кун - - - %n week(s) - %n ҳафта - - - %1 and %2 - %1 ва %2 - - - %n year(s) - %n йил - - - %1 behind - %1 орқада - - - Last received block was generated %1 ago. - Сўнги қабул қилинган блок %1 олдин Ñратилган. - - - Transactions after this will not yet be visible. - Бундан кейинги пул ўтказмалари кўринмайдиган бўлади. - - - Error - Хатолик - - - Warning - Диққат - - - Information - Маълумот - - - Up to date - Янгиланган - - - Catching up... - Банд қилинмоқда... - - - Sent transaction - Жўнатилган Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ - - - Incoming transaction - Кирувчи Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ - - - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - Ҳамён <b>кодланган</b> ва вақтинча <b>қулфдан чиқарилган</b> - - - Wallet is <b>encrypted</b> and currently <b>locked</b> - Ҳамён <b>кодланган</b> ва вақтинча <b>қулфланган</b> - - - - ClientModel - - Network Alert - Тармоқ огоҳлантиргичи - - - - CoinControlDialog - - Quantity: - Сони: - - - Bytes: - Байт: - - - Amount: - Миқдори: - - - Priority: - Муҳимлиги: - - - Fee: - Солиқ: - - - Dust: - Ðхлат қутиÑи: - - - After Fee: - Солиқдан Ñўнг: - - - Change: - Ўзгартириш: - - - (un)select all - барчаÑини танаш (бекор қилиш) - - - Tree mode - Дарахт уÑулида - - - List mode - Рўйхат уÑулида - - - Amount - Миқдори - - - Date - Сана - - - Confirmations - ТаÑдиқлашлар - - - Confirmed - ТаÑдиқланди - - - Priority - Муҳимлиги - - - Copy address - Манзилни нуÑхалаш - - - Copy label - Ðрликни нуÑхала - - - Copy amount - Кийматни нуÑхала - - - Copy transaction ID - Ўтказам рақамидан нуÑха олиш - - - Lock unspent - Сарфланмаганларни қулфлаш - - - Unlock unspent - Сарфланмаганларни қулфдан чиқариш - - - Copy quantity - ÐуÑха Ñони - - - Copy fee - ÐуÑха Ñолиғи - - - Copy after fee - ÐуÑха Ñолиқдан Ñўнг - - - Copy bytes - ÐуÑха байти - - - Copy priority - ÐуÑха муҳимлиги - - - Copy dust - ÐуÑха чангги - - - Copy change - ÐуÑха қайтими - - - highest - Ñнг юқори - - - higher - юқорирок - - - high - юқори - - - medium-high - ўртача-юқори - - - medium - ўрта - - - low-medium - паÑÑ‚-юқори - - - low - паÑÑ‚ - - - lower - паÑтроқ - - - lowest - Ñнг паÑÑ‚ - - - (%1 locked) - (%1 қулфланган) - - - none - йўқ - - - Can vary +/- %1 satoshi(s) per input. - Ҳар бир кирим +/- %1 Ñатоши(лар) билан ўзгариши мумкин. - - - yes - ҳа - - - no - йўқ - - - This means a fee of at least %1 per kB is required. - Бу дегани Ñолиқ ҳар кб учун камида %1 талаб қилинади. - - - Can vary +/- 1 byte per input. - Ҳар бир кирим +/- 1 байт билан ўзгариши мумкин. - - - Transactions with higher priority are more likely to get included into a block. - Юқори муҳимликка Ñга бўлган ўтказмалар тезда блокнинг ичига қўшимча олади. - - - (no label) - (Ðрлик мавжуд ÑмаÑ) - - - change from %1 (%2) - %1 (%2)дан ўзгартириш - - - (change) - (ўзгартириш) - - - - EditAddressDialog - - Edit Address - Манзилларни таҳрирлаш - - - &Label - &Ðрлик - - - The label associated with this address list entry - Ðрлиқ ушбу манзилар рўйхати ёзуви билан боғланган - - - The address associated with this address list entry. This can only be modified for sending addresses. - Манзил ушбу манзиллар рўйхати ёзуви билан боғланган. Уни фақат жўнатиладиган манзиллар учун ўзгартирÑа бўлади. - - - &Address - &Манзил - - - New receiving address - Янги кабул килувчи манзил - - - New sending address - Янги жунатилувчи манзил - - - Edit receiving address - Кабул килувчи манзилни тахрирлаш - - - Edit sending address - Жунатилувчи манзилни тахрирлаш - - - The entered address "%1" is already in the address book. - Киритилган "%1" манзили аллақачон манзил китобида. - - - The entered address "%1" is not a valid Bitcoin address. - Киритилган "%1" манзили тўғри Bitcoin манзили ÑмаÑ. - - - Could not unlock wallet. - Ҳамён қулфдан чиқмади. - - - New key generation failed. - Янги калит Ñратиш амалга ошмади. - - - - FreespaceChecker - - A new data directory will be created. - Янги маълумотлар директориÑÑи Ñратилади. - - - name - номи - - - Directory already exists. Add %1 if you intend to create a new directory here. - Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð°Ð»Ð»Ð°Ò›Ð°Ñ‡Ð¾Ð½ мавжуд. Ðгар бу ерда Ñнги Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ñратмоқчи бўлÑангиз, %1 қўшинг. - - - Path already exists, and is not a directory. - Йўл аллақачон мавжуд. У Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ ÑмаÑ. - - - Cannot create data directory here. - Маълумотлар директориÑÑини бу ерда Ñратиб бўлмайди.. - - - - HelpMessageDialog - - Bitcoin Core - Bitcoin Core - - - version - верÑиÑÑи - - - (%1-bit) - (%1-bit) - - - About Bitcoin Core - Bitcoin Core ҳақида - - - Usage: - Фойдаланиш: - - - command-line options - буйруқлар қатори орқали моÑлаш - - - - Intro - - Welcome - Хуш келибÑиз - - - Welcome to Bitcoin Core. - "Bitcoin Core"га хуш келибÑиз. - - - As this is the first time the program is launched, you can choose where Bitcoin Core will store its data. - Биринчи марта даÑтур ишга тушгани каби Ñиз Bitcoin Core маълумотларини жойлаштирадиган жойни танлашингиз мумкин. - - - Bitcoin Core will download and store a copy of the Bitcoin block chain. At least %1GB of data will be stored in this directory, and it will grow over time. The wallet will also be stored in this directory. - Bitcoin Core юклаб олинади ва Bitcoin блок занжири нуÑхаÑи жойлаштирилади. Камида %1GB маълумот ушбу директориÑга жойлаштирилади ва вақт давомида ÑžÑиб боради. Ҳамён ҳам ушбу директориÑда жойлашади. - - - Use the default data directory - Стандарт маълумотлар директориÑÑидан фойдаланиш - - - Use a custom data directory: - Бошқа маълумотлар директориÑÑида фойдаланинг: - - - Bitcoin Core - Bitcoin Core - - - Error: Specified data directory "%1" cannot be created. - Хато: кўрÑатилган "%1" маълумотлар директориÑÑини Ñратиб бўлмайди. - - - Error - Хатолик - - - - OpenURIDialog - - Open URI - URI ни очиш - - - Open payment request from URI or file - URL файлдан тўлов Ñўровларини очиш - - - URI: - URI: - - - Select payment request file - Тўлов Ñўрови файлини танлаш - - - Select payment request file to open - Очиш учун тўлов Ñўрови файлини танлаш - - - - OptionsDialog - - Options - Танламалар - - - &Main - &ÐÑоÑий - - - Size of &database cache - &Маълумотлар базаÑи кеши - - - MB - МБ - - - Number of script &verification threads - Мавзуларни &тўғрилаш Ñкрипти миқдори - - - Accept connections from outside - Ташқаридан уланишларга рози бўлиш - - - Allow incoming connections - Кирувчи уланишларга рухÑат бериш - - - IP address of the proxy (e.g. IPv4: 127.0.0.1 / IPv6: ::1) - ПрокÑи IP манзили (маÑалан: IPv4: 127.0.0.1 / IPv6: ::1) - - - Third party transaction URLs - Бегона тараф ўтказмалари URL манзиллари - - - Proxy &IP: - ПрокÑи &IP рақами: - - - &Port: - &Порт: - - - Port of the proxy (e.g. 9050) - ПрокÑи порти (e.g. 9050) - - - &Window - &Ойна - - - Show only a tray icon after minimizing the window. - Ойна йиғилгандан Ñўнг фақат трÑй нишончаÑи кўрÑатилÑин. - - - &Minimize to the tray instead of the taskbar - Манзиллар панели ўрнига трÑйни &йиғиш - - - M&inimize on close - Ðпишда й&иғиш - - - &Display - &КўрÑатиш - - - User Interface &language: - Фойдаланувчи интерфейÑи &тили: - - - &Unit to show amounts in: - Миқдорларни кўрÑатиш учун &қиÑм: - - - &OK - &OK - - - &Cancel - &Бекор қилиш - - - default - Ñтандарт - - - none - йўқ - - - Confirm options reset - ТаÑдиқлаш танловларини рад қилиш - - - Client restart required to activate changes. - Ўзгаришлар амалга ошиши учун мижозни қайта ишга тушириш талаб қилинади. - - - This change would require a client restart. - Ушбу ўзгариш мижозни қайтадан ишга туширишни талаб қилади. - - - The supplied proxy address is invalid. - Келтирилган прокÑи манзили ишламайди. - - - - OverviewPage - - Form - Шакл - - - The displayed information may be out of date. Your wallet automatically synchronizes with the Bitcoin network after a connection is established, but this process has not completed yet. - КўрÑатилган маълумот ÑÑкирган бўлиши мумкин. Ҳамёнингиз алоқа ўрнатилгандан Ñўнг Bitcoin тармоқ билан автоматик тарзда Ñинхронланади, аммо жараён ҳалигача тугалланмади. - - - Watch-only: - Фақат кўришга - - - Available: - Мавжуд: - - - Your current spendable balance - Жорий Ñарфланадиган баланÑингиз - - - Pending: - Кутилмоқда: - - - Total of transactions that have yet to be confirmed, and do not yet count toward the spendable balance - Жами ўтказмалар ҳозиргача таÑдиқланган ва Ñафланадиган Ð±Ð°Ð»Ð°Ð½Ñ Ñ‚Ð¾Ð¼Ð¾Ð½Ð³Ð° ҳали ҳам ҳиÑобланмади - - - Immature: - Тайёр ÑмаÑ: - - - Mined balance that has not yet matured - Миналаштирилган Ð±Ð°Ð»Ð°Ð½Ñ Ò³Ð°Ð»Ð¸Ð³Ð°Ñ‡Ð° тайёр ÑÐ¼Ð°Ñ - - - Balances - БаланÑлар - - - Total: - Жами: - - - Your current total balance - Жорий умумий баланÑингиз - - - Your current balance in watch-only addresses - Жорий баланÑингиз фақат кўринадиган манзилларда - - - Spendable: - Сарфланадиган: - - - Recent transactions - Сўнгги пул ўтказмалари - - - - PaymentServer - - - PeerTableModel - - Ping Time - Ping вақти - - - - QObject - - Amount - Миқдори - - - %1 m - %1 д - - - %1 s - %1 Ñ - - - None - Йўқ - - - N/A - Тўғри келмайди - - - %1 ms - %1 Ð¼Ñ - - - - QRImageWidget - - &Save Image... - РаÑмни &Ñақлаш - - - &Copy Image - РаÑмдан &нуÑха олиш - - - Save QR Code - QR кодни Ñақлаш - - - PNG Image (*.png) - PNG раÑм (*.png) - - - - RPCConsole - - Client name - Мижоз номи - - - N/A - Тўғри келмайди - - - Client version - Мижоз номи - - - &Information - &Маълумот - - - Debug window - Тузатиш ойнаÑи - - - General - ÐÑоÑий - - - Using OpenSSL version - Фойдаланилаётган OpenSSL верÑиÑÑи - - - Using BerkeleyDB version - Фойдаланилаётган BerkeleyDB верÑиÑÑи - - - Startup time - Бошланиш вақти - - - Network - Тармоқ - - - Name - Ðом - - - &Peers - &Уламлар - - - Select a peer to view detailed information. - БатафÑил маълумотларни кўриш учун уламни танланг. - - - Starting Height - Узунликнинг бошланиши - - - Sync Height - Узунликни Ñинхронлаш - - - Ban Score - Тезликни бан қилиш - - - Connection Time - Уланиш вақти - - - Last Send - Сўнгги жўнатилган - - - Last Receive - Сўнгги қабул қилинган - - - Bytes Sent - Жўнатилган байтлар - - - Bytes Received - Қабул қилинган байтлар - - - Ping Time - Ping вақти - - - Last block time - Сўнгги блок вақти - - - &Open - &Очиш - - - &Console - &Терминал - - - &Network Traffic - &Тармоқ трафиги - - - &Clear - &Тозалаш - - - Totals - Жами - - - In: - Ичига: - - - Out: - Ташқарига: - - - Build date - Тузилган ÑанаÑи - - - Debug log file - Тузатиш журнали файли - - - Clear console - Терминални тозалаш - - - Use up and down arrows to navigate history, and <b>Ctrl-L</b> to clear screen. - Тарихни кўриш учун тепага ва паÑтга кўрÑаткичларидан фойдаланинг, Ñкранни тозалаш учун <b>Ctrl-L</b> тугмалар бирикмаÑидан фойдаланинг. - - - Type <b>help</b> for an overview of available commands. - Мавжуд буйруқларни кўриш учун <b>help</b> деб ёзинг. - - - %1 B - %1 Б - - - %1 KB - %1 КБ - - - %1 MB - %1 МБ - - - %1 GB - %1 ГБ - - - via %1 - %1 орқали - - - never - ҳеч қачон - - - Unknown - Ðомаълум - - - Fetching... - Олинмоқда... - - - - ReceiveCoinsDialog - - &Amount: - &Миқдор: - - - &Label: - &Ðрлиқ: - - - &Message: - &Хабар: - - - Reuse one of the previously used receiving addresses. Reusing addresses has security and privacy issues. Do not use this unless re-generating a payment request made before. - Олдинги фойдаланилган қабул қилинган манзиллардан биридан қайта фойдаланилÑин. ХавÑизлик ва махфийлик муаммолар мавжуд манзиллардан қайта фойдаланилмоқда. Бундан тўлов Ñўров қайта Ñратилмагунича фойдаланманг. - - - An optional label to associate with the new receiving address. - Янги қабул қилинаётган манзил билан боғланган танланадиган ёрлиқ. - - - Use this form to request payments. All fields are <b>optional</b>. - Ушбу Ñўровдан тўловларни Ñўраш учун фойдаланинг. Барча майдонлар <b>мажбурий ÑмаÑ</b>. - - - An optional amount to request. Leave this empty or zero to not request a specific amount. - Хоҳланган миқдор Ñўрови. КўрÑатилган миқдорни Ñўраш учун буни бўш ёки ноль қолдиринг. - - - Clear all fields of the form. - Шаклнинг барча майдончаларини тозалаш - - - Clear - Тозалаш - - - Requested payments history - Сўралган тўлов тарихи - - - &Request payment - Тўловни &Ñўраш - - - Show the selected request (does the same as double clicking an entry) - Танланган Ñўровни кўрÑатиш (икки марта боÑилганда ҳам бир хил амал бажарилÑин) - - - Show - КўрÑатиш - - - Remove the selected entries from the list - Танланганларни рўйхатдан ўчириш - - - Remove - Ўчириш - - - Copy label - Ðрликни нуÑхала - - - Copy message - Хабарни нуÑхала - - - Copy amount - Кийматни нуÑхала - - - - ReceiveRequestDialog - - &Save Image... - РаÑмни &Ñақлаш - - - Address - Манзил - - - Amount - Миқдори - - - Label - Ðрлик - - - - RecentRequestsTableModel - - Date - Сана - - - Label - Ðрлик - - - Amount - Миқдори - - - (no label) - (Ðрлик мавжуд ÑмаÑ) - - - - SendCoinsDialog - - Send Coins - Тангаларни жунат - - - Quantity: - Сони: - - - Bytes: - Байт: - - - Amount: - Миқдори: - - - Priority: - Муҳимлиги: - - - Fee: - Солиқ: - - - After Fee: - Солиқдан Ñўнг: - - - Change: - Ўзгартириш: - - - If this is activated, but the change address is empty or invalid, change will be sent to a newly generated address. - Ðгар бу фаоллаштирилÑа, аммо ўзгартирилган манзил бўл ёки нотўғри бўлÑа, ўзгариш Ñнги Ñратилган манзилга жўнатилади. - - - Custom change address - Бошқа ўзгартирилган манзил - - - Send to multiple recipients at once - Бирданига бир нечта қабул қилувчиларга жўнатиш - - - Clear all fields of the form. - Шаклнинг барча майдончаларини тозалаш - - - Dust: - Ðхлат қутиÑи: - - - Balance: - Ð‘Ð°Ð»Ð°Ð½Ñ - - - Confirm the send action - Жўнатиш амалини таÑдиқлаш - - - Confirm send coins - Тангалар жўнаишни таÑдиқлаш - - - Copy quantity - ÐуÑха Ñони - - - Copy amount - Кийматни нуÑхала - - - Copy fee - ÐуÑха Ñолиғи - - - Copy after fee - ÐуÑха Ñолиқдан Ñўнг - - - Copy bytes - ÐуÑха байти - - - Copy priority - ÐуÑха муҳимлиги - - - Copy change - ÐуÑха қайтими - - - The amount to pay must be larger than 0. - Тўлов миқдори 0. дан катта бўлиши керак. - - - Warning: Invalid Bitcoin address - Диққат: Ðотўғр Bitcoin манзили - - - (no label) - (Ðрлик мавжуд ÑмаÑ) - - - Warning: Unknown change address - Диққат: Ðомаълум ўзгариш манзили - - - Copy dust - ÐуÑха чангги - - - Are you sure you want to send? - Жўнатишни хоҳлашингизга ишончингиз комилми? - - - added as transaction fee - ўтказма Ñолиғи қўшилди - - - - SendCoinsEntry - - A&mount: - &Миқдори: - - - Pay &To: - &Тўлов олувчи: - - - Enter a label for this address to add it to your address book - Манзил китобингизга қўшиш учун ушбу манзил учун ёрлиқ киритинг - - - &Label: - &Ðрлиқ: - - - Alt+A - Alt+A - - - Paste address from clipboard - Клипбоарддан манзилни қўйиш - - - Alt+P - Alt+P - - - - ShutdownWindow - - - SignVerifyMessageDialog - - Alt+A - Alt+A - - - Paste address from clipboard - Клипбоарддан манзилни қўйиш - - - Alt+P - Alt+P - - - Signature - Имзо - - - - SplashScreen - - Bitcoin Core - Bitcoin Core - - - The Bitcoin Core developers - Bitcoin Core даÑтурчилари - - - [testnet] - [testnet] - - - - TrafficGraphWidget - - - TransactionDesc - - Open until %1 - %1 гача очиш - - - %1/unconfirmed - %1/таÑдиқланмади - - - %1 confirmations - %1 таÑдиқлашлар - - - Date - Сана - - - Transaction ID - ID - - - Amount - Миқдори - - - , has not been successfully broadcast yet - , ҳалигача транÑлÑÑ†Ð¸Ñ Ò›Ð¸Ð»Ð¸Ð½Ð³Ð°Ð½Ð¸ йўқ - - - unknown - Ðомаълум - - - - TransactionDescDialog - - Transaction details - ÐžÐ¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ñ‚Ð°Ñ„Ñилотлари - - - This pane shows a detailed description of the transaction - Ушбу ойна операциÑнинг батафÑил таърифини кўрÑатади - - - - TransactionTableModel - - Date - Сана - - - Type - Тури - - - Open until %1 - %1 гача очиш - - - Confirmed (%1 confirmations) - ТаÑдиқланди (%1 та таÑдиқ) - - - This block was not received by any other nodes and will probably not be accepted! - Ушбу тўÑиқ бирорта бошқа уланишлар томонидан қабул қилинмаган ва таÑдиқланмаган! - - - Generated but not accepted - Яратилди, аммо қабул қилинмади - - - Label - Ðрлиқ - - - Received with - Ðрдамида қабул қилиш - - - Sent to - Жўнатиш - - - Payment to yourself - Ўзингизга тўлов - - - Mined - Фойда - - - (n/a) - (Ò›/Ò›) - - - Transaction status. Hover over this field to show number of confirmations. - Ўтказма ҳолати. Ушбу майдон бўйлаб таÑдиқлашлар Ñонини кўрÑатиш. - - - Date and time that the transaction was received. - Ўтказма қабул қилинган Ñана ва вақт. - - - Type of transaction. - Пул ўтказмаÑи тури - - - Amount removed from or added to balance. - Миқдор ўчирилган ёки баланÑга қўшилган. - - - - TransactionView - - All - Барча - - - Today - Бугун - - - This week - Шу ҳафта - - - This month - Шу ой - - - Last month - Ўтган хафта - - - This year - Шу йил - - - Range... - Оралиқ... - - - Received with - Ðрдамида қабул қилинган - - - Sent to - Жўнатиш - - - To yourself - Ўзингизга - - - Mined - Фойда - - - Other - Бошка - - - Enter address or label to search - Излаш учун манзил ёки ёрлиқни киритинг - - - Min amount - Мин қиймат - - - Copy address - Манзилни нуÑхалаш - - - Copy label - Ðрликни нуÑхалаш - - - Copy amount - Кийматни нуÑхала - - - Copy transaction ID - Ўтказам рақамидан нуÑха олиш - - - Edit label - Ðрликни тахрирлаш - - - Exporting Failed - ЭкÑпорт қилиб бўлмади - - - Comma separated file (*.csv) - Вергул билан ажратилган файл (*.csv) - - - Confirmed - ТаÑдиқланди - - - Date - Сана - - - Type - Туркум - - - Label - Ðрлик - - - Address - Манзил - - - ID - ID - - - Range: - Оралиқ: - - - to - Кимга - - - - UnitDisplayStatusBarControl - - - WalletFrame - - - WalletModel - - Send Coins - Тангаларни жунат - - - - WalletView - - &Export - &ЭкÑпорт - - - Export the data in the current tab to a file - Жорий ички ойна ичидаги маълумотларни файлга ÑкÑпорт қилиш - - - - bitcoin-core - - Options: - Танламалар: - - - Specify data directory - Маълумотлар директориÑÑини кўрÑатинг - - - Accept command line and JSON-RPC commands - Буйруқлар Ñатри ва JSON-RPC буйруқларига рози бўлинг - - - Run in the background as a daemon and accept commands - Демон Ñифатида орқа фонда ишга туширинг ва буйруқларга рози бўлинг - - - Use the test network - Синов тармоғидан фойдаланинг - - - Choose data directory on startup (default: 0) - Ишга тушиш вақтида маълумотлар директориÑÑини танлаш (Ñтандарт: 0) - - - Information - Маълумот - - - Set SSL root certificates for payment request (default: -system-) - Тўлов Ñўровлари учун SSL аÑÐ¾Ñ Ñертификатларини ўрнатиш (Ñтандарт: -system-) - - - Start minimized - Йиғилганларни бошлаш - - - Username for JSON-RPC connections - JSON-RPC уланишлари учун фойдаланувчи номи - - - Warning - Диққат - - - Password for JSON-RPC connections - JSON-RPC уланишлари учун парол - - - Use OpenSSL (https) for JSON-RPC connections - JSON-RPC уланишлари учун OpenSSL (https)дан фойдаланиш - - - This help message - Бу ёрдам хабари - - - Loading addresses... - Манзиллар юкланмоқда... - - - Loading block index... - ТўÑиқ индекÑи юкланмоқда... - - - Loading wallet... - Ҳамён юкланмоқда... - - - Rescanning... - Қайта текшириб чиқилмоқда... - - - Done loading - Юклаш тайёр - - - Error - Хатолик - - - \ No newline at end of file diff --git a/src/qt/locale/bitcoin_vi.ts b/src/qt/locale/bitcoin_vi.ts deleted file mode 100644 index 64d11d464..000000000 --- a/src/qt/locale/bitcoin_vi.ts +++ /dev/null @@ -1,210 +0,0 @@ - - - AddressBookPage - - Create a new address - Tạo má»™t địa chỉ má»›i - - - &New - Tạo má»›i - - - Copy the currently selected address to the system clipboard - Sao chép các địa chỉ đã được chá»n vào bá»™ nhá»› tạm thá»i cá»§a hệ thống - - - &Copy - Sao chép - - - &Copy Address - Sao chép địa chỉ - - - &Delete - &Xóa - - - Comma separated file (*.csv) - Tập tin tách biệt bởi dấu phẩy (*.csv) - - - - AddressTableModel - - Label - Nhãn dữ liệu - - - Address - Äịa chỉ - - - (no label) - (chưa có nhãn) - - - - AskPassphraseDialog - - - BitcoinGUI - - - ClientModel - - - CoinControlDialog - - Amount - Số lượng - - - (no label) - (chưa có nhãn) - - - - EditAddressDialog - - - FreespaceChecker - - - HelpMessageDialog - - - Intro - - - OpenURIDialog - - - OptionsDialog - - - OverviewPage - - - PaymentServer - - - PeerTableModel - - - QObject - - Amount - Số lượng - - - - QRImageWidget - - - RPCConsole - - - ReceiveCoinsDialog - - - ReceiveRequestDialog - - Address - Äịa chỉ - - - Amount - Số lượng - - - Label - Nhãn dữ liệu - - - - RecentRequestsTableModel - - Label - Nhãn dữ liệu - - - Amount - Số lượng - - - (no label) - (chưa có nhãn) - - - - SendCoinsDialog - - (no label) - (chưa có nhãn) - - - - SendCoinsEntry - - - ShutdownWindow - - - SignVerifyMessageDialog - - - SplashScreen - - - TrafficGraphWidget - - - TransactionDesc - - Amount - Số lượng - - - - TransactionDescDialog - - - TransactionTableModel - - Label - Nhãn dữ liệu - - - - TransactionView - - Comma separated file (*.csv) - Tập tin tách biệt bởi dấu phẩy (*.csv) - - - Label - Nhãn dữ liệu - - - Address - Äịa chỉ - - - - UnitDisplayStatusBarControl - - - WalletFrame - - - WalletModel - - - WalletView - - - bitcoin-core - - \ No newline at end of file diff --git a/src/qt/locale/bitcoin_vi_VN.ts b/src/qt/locale/bitcoin_vi_VN.ts deleted file mode 100644 index 7bcded744..000000000 --- a/src/qt/locale/bitcoin_vi_VN.ts +++ /dev/null @@ -1,734 +0,0 @@ - - - AddressBookPage - - Right-click to edit address or label - Nhấn chuá»™t phải để sá»­a địa chỉ hoặc nhãn - - - Create a new address - Tạo má»™t địa chỉ má»›i - - - &New - &Má»›i - - - Copy the currently selected address to the system clipboard - Copy địa chỉ được chá»n vào clipboard - - - &Copy - &Copy - - - C&lose - Äó&ng - - - &Copy Address - &Copy Äịa Chỉ - - - Delete the currently selected address from the list - Xóa địa chỉ hiện tại từ danh sách - - - Export the data in the current tab to a file - Xuất dữ liệu trong mục hiện tại ra file - - - &Export - X&uất - - - &Delete - &Xó&a - - - Choose the address to send coins to - Chá»n địa chỉ để gá»­i coin tá»›i - - - Choose the address to receive coins with - Chá»n địa chỉ để nhận coin - - - C&hoose - C&há»n - - - Sending addresses - Äịa chỉ gá»­i - - - Receiving addresses - Äịa chỉ nhận - - - Copy &Label - Copy &Nhãn - - - &Edit - &Sá»­a - - - Export Address List - Xuất Danh Sách Äịa Chỉ - - - Comma separated file (*.csv) - Comma separated file (*.csv) - - - Exporting Failed - Xuất Äã Thất Bại - - - - AddressTableModel - - Label - Nhãn - - - Address - Äịa chỉ - - - (no label) - (không nhãn) - - - - AskPassphraseDialog - - Passphrase Dialog - Há»™i thoại Passphrase - - - Enter passphrase - Äiá»n passphrase - - - New passphrase - Passphrase má»›i - - - Repeat new passphrase - Äiá»n lại passphrase - - - Encrypt wallet - Mã hóa ví - - - Unlock wallet - Mở khóa ví - - - Decrypt wallet - Giải mã ví - - - Wallet encrypted - Ví đã được mã hóa - - - - BitcoinGUI - - &Overview - &Tổng quan - - - Node - Node - - - E&xit - T&hoát - - - Quit application - Thoát chương trình - - - About &Qt - Vá» &Qt - - - Show information about Qt - Xem thông tin vá» Qt - - - Open &URI... - Mở &URI... - - - Bitcoin Core client - Bitcoin Core client - - - Bitcoin - Bitcoin - - - Wallet - Ví - - - &Send - &Gá»­i - - - &Receive - &Nhận - - - &Show / Hide - Ẩn / H&iện - - - Show or hide the main Window - Hiện hoặc ẩn cá»­a sổ chính - - - &File - &File - - - &Settings - &Thiết lập - - - &Help - Trợ &giúp - - - Bitcoin Core - Bitcoin Core - - - &About Bitcoin Core - &Vá» Bitcoin Core - - - %n hour(s) - %n giá» - - - %n day(s) - %n ngày - - - %n week(s) - %n tuần - - - %1 and %2 - %1 và %2 - - - %n year(s) - %n năm - - - Error - Lá»—i - - - Warning - Chú ý - - - Information - Thông tin - - - Up to date - Äã cập nhật - - - Sent transaction - Giao dịch đã gá»­i - - - Incoming transaction - Giao dịch Ä‘ang tá»›i - - - - ClientModel - - Network Alert - Network Alert - - - - CoinControlDialog - - Quantity: - Lượng: - - - Bytes: - Bytes: - - - Amount: - Lượng: - - - Priority: - Tầm quan trá»ng: - - - Fee: - Phí: - - - Change: - Thay đổi: - - - Amount - Lượng - - - Date - Ngày tháng - - - Confirmations - Lần xác nhận - - - Confirmed - Äã xác nhận - - - Priority - Tầm quan trá»ng - - - Copy address - Copy địa chỉ - - - Copy label - Copy nhãn - - - Copy amount - Lượng copy - - - low - thấp - - - lower - thấp hÆ¡n - - - lowest - thấp nhất - - - yes - có - - - no - không - - - (no label) - (không nhãn) - - - - EditAddressDialog - - - FreespaceChecker - - name - tên - - - - HelpMessageDialog - - Bitcoin Core - Bitcoin Core - - - version - version - - - About Bitcoin Core - Vá» Bitcoin Core - - - - Intro - - Welcome - Chào mừng - - - Bitcoin Core - Bitcoin Core - - - Error - Lá»—i - - - - OpenURIDialog - - Open URI - Mở URI - - - URI: - URI: - - - - OptionsDialog - - Options - Lá»±a chá»n - - - &Main - &Chính - - - MB - MB - - - &Display - &Hiển thị - - - &OK - &OK - - - &Cancel - &Từ chối - - - default - mặc định - - - - OverviewPage - - Form - Form - - - Total: - Tổng: - - - - PaymentServer - - - PeerTableModel - - User Agent - User Agent - - - - QObject - - Amount - Lượng - - - - QRImageWidget - - - RPCConsole - - General - Nhìn Chung - - - Name - Tên - - - Block chain - Block chain - - - Sent - Äã gá»­i - - - User Agent - User Agent - - - - ReceiveCoinsDialog - - Copy label - Copy nhãn - - - Copy amount - Lượng copy - - - - ReceiveRequestDialog - - Address - Äịa chỉ - - - Amount - Lượng - - - Label - Nhãn - - - - RecentRequestsTableModel - - Date - Ngày tháng - - - Label - Nhãn - - - Amount - Lượng - - - (no label) - (không nhãn) - - - - SendCoinsDialog - - Quantity: - Lượng: - - - Bytes: - Bytes: - - - Amount: - Lượng: - - - Priority: - Tầm quan trá»ng: - - - Fee: - Phí: - - - Change: - Thay đổi: - - - Copy amount - Lượng copy - - - (no label) - (không nhãn) - - - - SendCoinsEntry - - - ShutdownWindow - - - SignVerifyMessageDialog - - - SplashScreen - - Bitcoin Core - Bitcoin Core - - - - TrafficGraphWidget - - - TransactionDesc - - Date - Ngày tháng - - - Amount - Lượng - - - - TransactionDescDialog - - - TransactionTableModel - - Date - Ngày tháng - - - Label - Nhãn - - - - TransactionView - - Copy address - Copy địa chỉ - - - Copy label - Copy nhãn - - - Copy amount - Lượng copy - - - Exporting Failed - Xuất Äã Thất Bại - - - Comma separated file (*.csv) - Comma separated file (*.csv) - - - Confirmed - Äã xác nhận - - - Date - Ngày tháng - - - Label - Nhãn - - - Address - Äịa chỉ - - - - UnitDisplayStatusBarControl - - - WalletFrame - - - WalletModel - - - WalletView - - &Export - X&uất - - - Export the data in the current tab to a file - Xuất dữ liệu trong mục hiện tại ra file - - - - bitcoin-core - - Information - Thông tin - - - Transaction too large - Giao dịch quá lá»›n - - - Warning - Chú ý - - - on startup - khi khởi động - - - This help message - Thông Ä‘iệp trợ giúp này - - - Loading addresses... - Äang Ä‘á»c các địa chỉ... - - - (default: %s) - (mặc định: %s) - - - Insufficient funds - Không đủ tiá»n - - - Loading block index... - Äang Ä‘á»c block index... - - - Loading wallet... - Äang Ä‘á»c ví... - - - Cannot downgrade wallet - Không downgrade được ví - - - Cannot write default address - Không ghi được địa chỉ mặc định - - - Rescanning... - Äang quét lại... - - - Done loading - Äã nạp xong - - - Error - Lá»—i - - - \ No newline at end of file diff --git a/src/qt/locale/bitcoin_zh_CN.ts b/src/qt/locale/bitcoin_zh_CN.ts deleted file mode 100644 index 72ed56c41..000000000 --- a/src/qt/locale/bitcoin_zh_CN.ts +++ /dev/null @@ -1,3593 +0,0 @@ - - - AddressBookPage - - Right-click to edit address or label - é¼ æ ‡å³å‡»ç¼–è¾‘åœ°å€æˆ–标签 - - - Create a new address - åˆ›å»ºæ–°åœ°å€ - - - &New - 新建(&N) - - - Copy the currently selected address to the system clipboard - å¤åˆ¶å½“å‰é€‰ä¸­çš„地å€åˆ°ç³»ç»Ÿå‰ªè´´æ¿ - - - &Copy - å¤åˆ¶(&C) - - - C&lose - 关闭(&C) - - - &Copy Address - å¤åˆ¶åœ°å€(&C) - - - Delete the currently selected address from the list - ä»Žåˆ—è¡¨ä¸­åˆ é™¤é€‰ä¸­çš„åœ°å€ - - - Export the data in the current tab to a file - å¯¼å‡ºå½“å‰æ•°æ®åˆ°æ–‡ä»¶ - - - &Export - 导出(&E) - - - &Delete - 删除(&D) - - - Choose the address to send coins to - é€‰æ‹©å‘æ¬¾åœ°å€ - - - Choose the address to receive coins with - é€‰æ‹©æ”¶æ¬¾åœ°å€ - - - C&hoose - 选择(&H) - - - Sending addresses - 正在å‘é€åœ°å€ - - - Receiving addresses - æ­£åœ¨æŽ¥æ”¶åœ°å€ - - - These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins. - 这是您用æ¥ä»˜æ¬¾çš„æ¯”特å¸åœ°å€ã€‚在付款å‰ï¼Œè¯·ä»”细核实付款金é¢å’Œæ”¶æ¬¾åœ°å€ã€‚ - - - These are your Bitcoin addresses for receiving payments. It is recommended to use a new receiving address for each transaction. - 这些都是您的比特å¸åœ°å€ï¼Œå¯ç”¨äºŽæ”¶æ¬¾ã€‚建议对æ¯ç¬”交易都使用一个新的地å€ã€‚ - - - Copy &Label - å¤åˆ¶æ ‡ç­¾(&L) - - - &Edit - 编辑(&E) - - - Export Address List - 导出地å€åˆ—表 - - - Comma separated file (*.csv) - 逗å·åˆ†é𔿖‡ä»¶ (*.csv) - - - Exporting Failed - 导出失败 - - - There was an error trying to save the address list to %1. Please try again. - ä¿å­˜åœ°å€åˆ—表出现 %1错误。请é‡è¯•。 - - - - AddressTableModel - - Label - 标签 - - - Address - åœ°å€ - - - (no label) - (没有标签) - - - - AskPassphraseDialog - - Passphrase Dialog - 密ç å¯¹è¯æ¡† - - - Enter passphrase - è¾“å…¥å¯†ç  - - - New passphrase - æ–°å¯†ç  - - - Repeat new passphrase - é‡å¤æ–°å¯†ç  - - - Encrypt wallet - 钱包加密 - - - This operation needs your wallet passphrase to unlock the wallet. - æ­¤æ“ä½œéœ€è¦æ‚¨é¦–先使用密ç è§£é”该钱包。 - - - Unlock wallet - è§£é”钱包 - - - This operation needs your wallet passphrase to decrypt the wallet. - 该æ“ä½œéœ€è¦æ‚¨é¦–先使用密ç è§£å¯†é’±åŒ…。 - - - Decrypt wallet - 解密钱包 - - - Change passphrase - æ›´æ”¹å¯†ç  - - - Confirm wallet encryption - 确认加密钱包 - - - Warning: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR BITCOINS</b>! - 警告:如果您加密了您的钱包,但是忘记了密ç ï¼Œä½ å°†ä¼š<b>丢失所有的比特å¸</b>ï¼ - - - Are you sure you wish to encrypt your wallet? - 您确定需è¦ä¸ºé’±åŒ…加密å—? - - - Bitcoin Core 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. - æ¯”ç‰¹å¸æ ¸å¿ƒçŽ°åœ¨å°†å…³é—­ä»¥å®ŒæˆåŠ å¯†è¿‡ç¨‹ã€‚è¯·è®°ä½ï¼Œåœ¨æ‚¨çš„è®¡ç®—æœºè¢«æ¶æ„软件感染的情况下,加密ä¸èƒ½å®Œå…¨ä¿æŠ¤æ‚¨çš„æ¯”特å¸å…于被盗。 - - - 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. - é‡è¦æç¤ºï¼šæ‚¨ä»¥å‰å¤‡ä»½çš„é’±åŒ…æ–‡ä»¶åº”è¯¥æ›¿æ¢æˆæœ€æ–°ç”Ÿæˆçš„åŠ å¯†é’±åŒ…æ–‡ä»¶ï¼ˆé‡æ–°å¤‡ä»½ï¼‰ã€‚从安全性上考虑,您以å‰å¤‡ä»½çš„æœªåŠ å¯†çš„é’±åŒ…æ–‡ä»¶ï¼Œåœ¨æ‚¨ä½¿ç”¨æ–°çš„åŠ å¯†é’±åŒ…åŽå°†æ— æ•ˆï¼Œè¯·é‡æ–°å¤‡ä»½ã€‚ - - - Warning: The Caps Lock key is on! - 警告:大写é”定键处于打开状æ€ï¼ - - - Wallet encrypted - 钱包已加密 - - - 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>. - 请输入新的钱包密ç . <br/>密ç é¡»åŒ…å«<b>10个以上字符</b>,或<b>8个以上å•è¯</b>. - - - Enter the old passphrase and new passphrase to the wallet. - 请输入钱包的旧密ç ä¸Žæ–°å¯†ç ã€‚ - - - Wallet encryption failed - 钱包加密失败 - - - Wallet encryption failed due to an internal error. Your wallet was not encrypted. - 由于一个本地错误,加密钱包的æ“作已ç»å¤±è´¥ã€‚您的钱包没能被加密。 - - - The supplied passphrases do not match. - 密ç ä¸åŒ¹é…。 - - - Wallet unlock failed - 钱包解é”失败 - - - The passphrase entered for the wallet decryption was incorrect. - 用于解密钱包的密ç ä¸æ­£ç¡®ã€‚ - - - Wallet decryption failed - 钱包解密失败。 - - - Wallet passphrase was successfully changed. - ä¿®æ”¹é’±åŒ…å¯†ç æˆåŠŸã€‚ - - - - BitcoinGUI - - Sign &message... - 消æ¯ç­¾å(&M)... - - - Synchronizing with network... - æ­£åœ¨ä¸Žç½‘ç»œåŒæ­¥... - - - &Overview - 概况(&O) - - - Node - 节点 - - - Show general overview of wallet - 显示钱包概况 - - - &Transactions - 交易记录(&T) - - - Browse transaction history - æŸ¥çœ‹äº¤æ˜“åŽ†å² - - - E&xit - 退出(&X) - - - Quit application - é€€å‡ºç¨‹åº - - - About &Qt - 关于 &Qt - - - Show information about Qt - 显示 Qt ç›¸å…³ä¿¡æ¯ - - - &Options... - 选项(&O)... - - - &Encrypt Wallet... - 加密钱包(&E)... - - - &Backup Wallet... - 备份钱包(&B)... - - - &Change Passphrase... - 更改密ç (&C)... - - - &Sending addresses... - 正在å‘é€åœ°å€(&S)... - - - &Receiving addresses... - 正在接收地å€(&R)... - - - Open &URI... - 打开 &URI... - - - Bitcoin Core client - æ¯”ç‰¹å¸æ ¸å¿ƒé’±åŒ… - - - Importing blocks from disk... - 正在从ç£ç›˜å¯¼å…¥æ•°æ®å—... - - - Reindexing blocks on disk... - 正在为数æ®å—建立索引... - - - Send coins to a Bitcoin address - å‘一个比特å¸åœ°å€å‘逿¯”ç‰¹å¸ - - - Backup wallet to another location - 备份钱包到其他文件夹 - - - Change the passphrase used for wallet encryption - 更改钱包加密å£ä»¤ - - - &Debug window - 调试窗å£(&D) - - - Open debugging and diagnostic console - æ‰“å¼€è°ƒè¯•å’Œè¯Šæ–­æŽ§åˆ¶å° - - - &Verify message... - éªŒè¯æ¶ˆæ¯(&V)... - - - Bitcoin - æ¯”ç‰¹å¸ - - - Wallet - 钱包 - - - &Send - å‘é€(&S) - - - &Receive - 接收(&R) - - - Show information about Bitcoin Core - æ˜¾ç¤ºæœ‰å…³æ¯”ç‰¹å¸æ ¸å¿ƒé’±åŒ…ä¿¡æ¯ - - - &Show / Hide - 显示 / éšè—(&S) - - - Show or hide the main Window - 显示或éšè—ä¸»çª—å£ - - - Encrypt the private keys that belong to your wallet - 对钱包中的ç§é’¥åР坆 - - - Sign messages with your Bitcoin addresses to prove you own them - 用比特å¸åœ°å€å…³è”çš„ç§é’¥ä¸ºæ¶ˆæ¯ç­¾åï¼Œä»¥è¯æ˜Žæ‚¨æ‹¥æœ‰è¿™ä¸ªæ¯”特å¸åœ°å€ - - - Verify messages to ensure they were signed with specified Bitcoin addresses - 校验消æ¯ï¼Œç¡®ä¿è¯¥æ¶ˆæ¯æ˜¯ç”±æŒ‡å®šçš„æ¯”特å¸åœ°å€æ‰€æœ‰è€…ç­¾åçš„ - - - &File - 文件(&F) - - - &Settings - 设置(&S) - - - &Help - 帮助(&H) - - - Tabs toolbar - åˆ†é¡µå·¥å…·æ  - - - Bitcoin Core - æ¯”ç‰¹å¸æ ¸å¿ƒ - - - Request payments (generates QR codes and bitcoin: URIs) - 请求支付(生æˆäºŒç»´ç å’Œ bitcoin: URI) - - - &About Bitcoin Core - å…³äºŽæ¯”ç‰¹å¸æ ¸å¿ƒ(&A) - - - Modify configuration options for Bitcoin Core - ä¿®æ”¹æ¯”ç‰¹å¸æ ¸å¿ƒçš„é…置选项 - - - Show the list of used sending addresses and labels - 显示用过的å‘é€åœ°å€å’Œæ ‡ç­¾çš„列表 - - - Show the list of used receiving addresses and labels - 显示用过的接收地å€å’Œæ ‡ç­¾çš„列表 - - - Open a bitcoin: URI or payment request - 打开一个比特å¸ï¼šURI 或支付请求 - - - &Command-line options - 命令行选项(&C) - - - Show the Bitcoin Core help message to get a list with possible Bitcoin command-line options - æ˜¾ç¤ºæ¯”ç‰¹å¸æ ¸å¿ƒ 程åºå¸®åŠ©ä¿¡æ¯ï¼ŒèŽ·å–å¯ç”¨çš„命令行选项 - - - %n active connection(s) to Bitcoin network - %n 个到比特å¸ç½‘络的活动连接 - - - No block source available... - 沒有å¯ç”¨çš„åŒºå—æ¥æº... - - - Processed %n block(s) of transaction history. - å·²å¤„ç† %n ä¸ªäº¤æ˜“åŽ†å²æ•°æ®å—。 - - - %n hour(s) - %n å°æ—¶ - - - %n day(s) - %n 天 - - - %n week(s) - %n 周 - - - %1 and %2 - %1 å’Œ %2 - - - %n year(s) - %n å¹´ - - - %1 behind - è½åŽ %1 - - - Last received block was generated %1 ago. - 最新收到的区å—产生于 %1。 - - - Transactions after this will not yet be visible. - 在此之åŽçš„交易尚未å¯è§ - - - Error - 错误 - - - Warning - 警告 - - - Information - ä¿¡æ¯ - - - Up to date - 已是最新 - - - Catching up... - 更新中... - - - Date: %1 - - 日期: %1 - - - - Amount: %1 - - 金é¢: %1 - - - - Type: %1 - - 类型: %1 - - - - Label: %1 - - 标签: %1 - - - - Address: %1 - - 地å€: %1 - - - - Sent transaction - å‘é€äº¤æ˜“ - - - Incoming transaction - æµå…¥äº¤æ˜“ - - - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - 钱包已被<b>加密</b>,当å‰ä¸º<b>è§£é”</b>çŠ¶æ€ - - - Wallet is <b>encrypted</b> and currently <b>locked</b> - 钱包已被<b>加密</b>,当å‰ä¸º<b>é”定</b>çŠ¶æ€ - - - - ClientModel - - Network Alert - 网络警报 - - - - CoinControlDialog - - Coin Selection - 叿ºé€‰æ‹©(Coin Selection) - - - Quantity: - 总é‡ï¼š - - - Bytes: - 字节: - - - Amount: - 金é¢ï¼š - - - Priority: - 优先级: - - - Fee: - 费用: - - - Dust: - å°é¢ï¼š - - - After Fee: - 加上交易费用åŽ: - - - Change: - å˜æ›´ : - - - (un)select all - (ä¸)全选 - - - Tree mode - æ ‘çŠ¶æ¨¡å¼ - - - List mode - åˆ—è¡¨æ¨¡å¼ - - - Amount - é‡‘é¢ - - - Received with label - 按标签收款 - - - Received with address - æŒ‰åœ°å€æ”¶æ¬¾ - - - Date - 日期 - - - Confirmations - 确认 - - - Confirmed - 已确认 - - - Priority - 优先级 - - - Copy address - å¤åˆ¶åœ°å€ - - - Copy label - å¤åˆ¶æ ‡ç­¾ - - - Copy amount - å¤åˆ¶é‡‘é¢ - - - Copy transaction ID - å¤åˆ¶äº¤æ˜“ç¼–å· - - - Lock unspent - é”定未花费 - - - Unlock unspent - è§£é”æœªèŠ±è´¹ - - - Copy quantity - å¤åˆ¶é‡‘é¢ - - - Copy fee - å¤åˆ¶äº¤æ˜“è´¹ - - - Copy after fee - å¤åˆ¶å«äº¤æ˜“è´¹çš„é‡‘é¢ - - - Copy bytes - å¤åˆ¶å­—节 - - - Copy priority - å¤åˆ¶ä¼˜å…ˆçº§ - - - Copy dust - å¤åˆ¶å°é¢ - - - Copy change - å¤åˆ¶é›¶é’± - - - highest - 最高 - - - higher - 更高 - - - high - 高 - - - medium-high - 中高 - - - medium - 中等 - - - low-medium - 中低 - - - low - 低 - - - lower - 更低 - - - lowest - 最低 - - - (%1 locked) - (%1 é”定) - - - none - æ—  - - - This label turns red if the transaction size is greater than 1000 bytes. - 如果交易规模大于 1000 字节,此标签将å˜ä¸ºçº¢è‰²ã€‚ - - - This label turns red if the priority is smaller than "medium". - 如果优先级å°äºŽâ€œä¸­ç­‰â€ï¼Œæ­¤æ ‡ç­¾å°†å˜ä¸ºçº¢è‰²ã€‚ - - - This label turns red if any recipient receives an amount smaller than %1. - 如果任何接收人收到的金é¢å°äºŽ %1,此标签将å˜ä¸ºçº¢è‰²ã€‚ - - - Can vary +/- %1 satoshi(s) per input. - å¯èƒ½ä¼šæœ‰ 正负 %1 èª(satoshi)çš„åå·® - - - yes - 是 - - - no - å¦ - - - This means a fee of at least %1 per kB is required. - è¿™æ„味ç€å°†å¯¹äº¤æ˜“æ”¶å– %1/åƒå­—节 的交易费。 - - - Can vary +/- 1 byte per input. - æ¯ç¬”输入å¯èƒ½ä¼šæœ‰ 正负1字节的å差。 - - - Transactions with higher priority are more likely to get included into a block. - 交易的优先级越高,被矿工收入数æ®å—的速度也越快。 - - - (no label) - (没有标签) - - - change from %1 (%2) - æ¥è‡ª%1的零钱 (%2) - - - (change) - (é›¶é’±) - - - - EditAddressDialog - - Edit Address - ç¼–è¾‘åœ°å€ - - - &Label - 标签(&L) - - - The label associated with this address list entry - 与此地å€ç›¸å…³çš„æ ‡ç­¾é¡¹ - - - The address associated with this address list entry. This can only be modified for sending addresses. - 该地å€å·²ä¸Žåœ°å€åˆ—表中的æ¡ç›®å…³è”,åªèƒ½è¢«å‘é€åœ°å€ä¿®æ”¹ã€‚ - - - &Address - 地å€(&A) - - - New receiving address - æ–°å»ºæŽ¥æ”¶åœ°å€ - - - New sending address - 新建å‘é€åœ°å€ - - - Edit receiving address - ç¼–è¾‘æŽ¥æ”¶åœ°å€ - - - Edit sending address - 编辑å‘é€åœ°å€ - - - The entered address "%1" is already in the address book. - 输入的地å€â€œ%1â€å·²ç»å­˜åœ¨äºŽåœ°å€ç°¿ä¸­ã€‚ - - - The entered address "%1" is not a valid Bitcoin address. - 您输入的“%1â€ä¸æ˜¯æœ‰æ•ˆçš„æ¯”特å¸åœ°å€ã€‚ - - - Could not unlock wallet. - 无法解é”钱包 - - - New key generation failed. - 新的密钥生æˆå¤±è´¥ã€‚ - - - - FreespaceChecker - - A new data directory will be created. - 一个新的数æ®ç›®å½•将被创建。 - - - name - åç§° - - - Directory already exists. Add %1 if you intend to create a new directory here. - 目录已存在。如果您打算在这里创建一个新目录,添加 %1。 - - - Path already exists, and is not a directory. - è·¯å¾„å·²å­˜åœ¨ï¼Œå¹¶ä¸”ä¸æ˜¯ä¸€ä¸ªç›®å½•。 - - - Cannot create data directory here. - 无法在此创建数æ®ç›®å½•。 - - - - HelpMessageDialog - - Bitcoin Core - æ¯”ç‰¹å¸æ ¸å¿ƒ - - - version - 版本 - - - (%1-bit) - (%1 ä½) - - - About Bitcoin Core - å…³äºŽæ¯”ç‰¹å¸æ ¸å¿ƒ - - - Command-line options - 命令行选项 - - - Usage: - 使用: - - - command-line options - 命令行选项 - - - - Intro - - Welcome - 欢迎 - - - Welcome to Bitcoin Core. - 欢迎使用 æ¯”ç‰¹å¸æ ¸å¿ƒ 程åºã€‚ - - - As this is the first time the program is launched, you can choose where Bitcoin Core will store its data. - 由于这是第一次è¿è¡Œ æ¯”ç‰¹å¸æ ¸å¿ƒ 程åºï¼Œæ‚¨å¯ä»¥é€‰æ‹©æ•°æ®å­˜å‚¨ç›®å½•。 - - - Bitcoin Core will download and store a copy of the Bitcoin block chain. At least %1GB of data will be stored in this directory, and it will grow over time. The wallet will also be stored in this directory. - æ¯”ç‰¹å¸æ ¸å¿ƒ 程åºä¼šä¸‹è½½å‚¨å­˜ä¸€ä»½æ•°æ®å—链(blockchain)ã€‚è‡³å°‘éœ€è¦ %1 GB的存储空间,éšç€æ—¶é—´æŽ¨ç§»ä¼šéœ€è¦æ›´å¤šçš„存储空间。钱包文件也储存在该目录。 - - - Use the default data directory - 使用默认的数æ®ç›®å½• - - - Use a custom data directory: - 使用自定义的数æ®ç›®å½•: - - - Bitcoin Core - æ¯”ç‰¹å¸æ ¸å¿ƒ - - - Error: Specified data directory "%1" cannot be created. - 错误:无法创建 指定的数æ®ç›®å½• "%1" - - - Error - 错误 - - - %n GB of free space available - 有 %n GB 空闲空间 - - - (of %n GB needed) - (需è¦%n GB空间) - - - - OpenURIDialog - - Open URI - 打开 URI - - - Open payment request from URI or file - 打开æ¥è‡ªURI或文件的付款请求 - - - URI: - URI: - - - Select payment request file - 选择付款请求文件 - - - Select payment request file to open - é€‰æ‹©éœ€è¦æ‰“开的付款请求文件 - - - - OptionsDialog - - Options - 选项 - - - &Main - 主è¦(&M) - - - Size of &database cache - æ•°æ®åº“缓存大å°(&D) - - - MB - MB - - - Number of script &verification threads - 脚本验è¯çº¿ç¨‹æ•°(&V) - - - Accept connections from outside - 接收外部连接 - - - Allow incoming connections - å…许æµå…¥è¿žæŽ¥ - - - IP address of the proxy (e.g. IPv4: 127.0.0.1 / IPv6: ::1) - 代ç†çš„ IP åœ°å€ (例如 IPv4: 127.0.0.1 / IPv6: ::1) - - - Minimize instead of exit the application when the window is closed. When this option is enabled, the application will be closed only after selecting Exit in the menu. - 窗å£è¢«å…³é—­æ—¶æœ€å°åŒ–è€Œä¸æ˜¯é€€å‡ºåº”用程åºã€‚当此选项å¯ç”¨æ—¶ï¼Œåº”用程åºåªä¼šåœ¨èœå•中选择退出时退出。 - - - The user interface language can be set here. This setting will take effect after restarting Bitcoin Core. - å¯ä»¥åœ¨è¿™é‡Œè®¾ç½®ç”¨æˆ·ç•Œé¢è¯­è¨€ã€‚æ­¤è®¾ç½®å°†åœ¨é‡æ–°å¯åŠ¨æ¯”ç‰¹å¸æ ¸å¿ƒåŽç”Ÿæ•ˆã€‚ - - - 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 |. - 出现在交易的选项å¡çš„上下文èœå•é¡¹çš„ç¬¬ä¸‰æ–¹ç½‘å€ (例如:区å—链接查询) 。 %sçš„URL被替æ¢ä¸ºäº¤æ˜“哈希。多个的URL需è¦ç«–线 | 分隔。 - - - Third party transaction URLs - ç¬¬ä¸‰æ–¹äº¤æ˜“ç½‘å€ - - - Active command-line options that override above options: - æœ‰æ•ˆçš„å‘½ä»¤è¡Œå‚æ•°è¦†ç›–上述选项: - - - Reset all client options to default. - æ¢å¤å®¢æˆ·ç«¯çš„缺çœè®¾ç½® - - - &Reset Options - æ¢å¤ç¼ºçœè®¾ç½®(&R) - - - &Network - 网络(&N) - - - Automatically start Bitcoin Core after logging in to the system. - 登录到系统åŽè‡ªåЍå¯åŠ¨æ¯”ç‰¹å¸æ ¸å¿ƒã€‚ - - - &Start Bitcoin Core on system login - 系统登录时å¯åŠ¨æ¯”ç‰¹å¸æ ¸å¿ƒ(&S) - - - (0 = auto, <0 = leave that many cores free) - (0 = 自动, <0 = 离开很多å…费的核心) - - - W&allet - 钱包(&A) - - - Expert - 专家 - - - Enable coin &control features - å¯åŠ¨è´§å¸æŽ§åˆ¶åŠŸèƒ½(&C) - - - 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. - 如果ç¦ç”¨æœªç¡®è®¤çš„零钱,则零钱至少需è¦1个确认æ‰èƒ½ä½¿ç”¨ã€‚åŒæ—¶è´¦æˆ·ä½™é¢æ˜¾ç¤ºä¼šå—到影å“。 - - - &Spend unconfirmed change - 使用未ç»ç¡®è®¤çš„é›¶é’±(&S) - - - Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled. - 自动在路由器中打开比特å¸ç«¯å£ã€‚åªæœ‰å½“您的路由器开å¯äº† UPnP é€‰é¡¹æ—¶æ­¤åŠŸèƒ½æ‰æœ‰æ•ˆã€‚ - - - Map port using &UPnP - 使用 &UPnP æ˜ å°„ç«¯å£ - - - Connect to the Bitcoin network through a SOCKS5 proxy. - 通过 SOCKS5 代ç†è¿žæŽ¥æ¯”特å¸ç½‘络。 - - - &Connect through SOCKS5 proxy (default proxy): - 通过 SO&CKS5 代ç†è¿žæŽ¥(默认代ç†): - - - Proxy &IP: - ä»£ç†æœåС噍 &IP: - - - &Port: - 端å£(&P): - - - Port of the proxy (e.g. 9050) - 代ç†ç«¯å£ï¼ˆä¾‹å¦‚ 9050) - - - &Window - 窗å£(&W) - - - Show only a tray icon after minimizing the window. - 最å°åŒ–窗å£åŽä»…显示托盘图标 - - - &Minimize to the tray instead of the taskbar - 最å°åŒ–到托盘(&M) - - - M&inimize on close - å•击关闭按钮最å°åŒ–(&I) - - - &Display - 显示(&D) - - - User Interface &language: - 用户界é¢è¯­è¨€(&L): - - - &Unit to show amounts in: - 比特å¸é‡‘é¢å•ä½(&U): - - - Choose the default subdivision unit to show in the interface and when sending coins. - 选择比特å¸å•ä½ã€‚ - - - Whether to show coin control features or not. - 是å¦éœ€è¦äº¤æ˜“æºåœ°å€æŽ§åˆ¶åŠŸèƒ½ã€‚ - - - &OK - 确定(&O) - - - &Cancel - å–æ¶ˆ(&C) - - - default - 默认 - - - none - æ—  - - - Confirm options reset - 确认æ¢å¤ç¼ºçœè®¾ç½® - - - Client restart required to activate changes. - 更改生效需è¦é‡å¯å®¢æˆ·ç«¯ã€‚ - - - Client will be shut down. Do you want to proceed? - 客户端å³å°†å…³é—­ï¼Œæ‚¨æƒ³ç»§ç»­å—? - - - This change would require a client restart. - 此更改需è¦é‡å¯å®¢æˆ·ç«¯ã€‚ - - - The supplied proxy address is invalid. - æä¾›çš„ä»£ç†æœåŠ¡å™¨åœ°å€æ— æ•ˆã€‚ - - - - OverviewPage - - Form - è¡¨å• - - - The displayed information may be out of date. Your wallet automatically synchronizes with the Bitcoin network after a connection is established, but this process has not completed yet. - 现在显示的消æ¯å¯èƒ½æ˜¯è¿‡æœŸçš„. 在连接上比特å¸ç½‘络节点åŽï¼Œæ‚¨çš„é’±åŒ…å°†è‡ªåŠ¨ä¸Žç½‘ç»œåŒæ­¥ï¼Œä½†æ˜¯è¿™ä¸ªè¿‡ç¨‹è¿˜æ²¡æœ‰å®Œæˆã€‚ - - - Watch-only: - 查看-åªæœ‰: - - - Available: - å¯ä½¿ç”¨çš„ä½™é¢ï¼š - - - Your current spendable balance - 您当å‰å¯ä½¿ç”¨çš„ä½™é¢ - - - Pending: - 等待中的余é¢ï¼š - - - Total of transactions that have yet to be confirmed, and do not yet count toward the spendable balance - 尚未确认的交易总é¢ï¼Œæœªè®¡å…¥å½“å‰ä½™é¢ - - - Immature: - 未æˆç†Ÿçš„: - - - Mined balance that has not yet matured - 尚未æˆç†Ÿçš„æŒ–çŸ¿æ”¶å…¥ä½™é¢ - - - Balances - ä½™é¢ - - - Total: - 总é¢ï¼š - - - Your current total balance - 您当å‰çš„æ€»ä½™é¢ - - - Your current balance in watch-only addresses - æ‚¨å½“å‰ è§‚å¯Ÿåœ°å€(watch-only address)çš„ä½™é¢ - - - Spendable: - å¯ä½¿ç”¨ï¼š - - - Recent transactions - 最近交易记录 - - - Unconfirmed transactions to watch-only addresses - 观察地å€(watch-only address)的未确认交易记录 - - - Mined balance in watch-only addresses that has not yet matured - 观察地å€(watch-only address)中尚未æˆç†Ÿ(matured)的挖矿收入余é¢ï¼š - - - Current total balance in watch-only addresses - 观察地å€(watch-only address)ä¸­çš„å½“å‰æ€»ä½™é¢ - - - - PaymentServer - - URI handling - URI å¤„ç† - - - Invalid payment address %1 - æ— æ•ˆçš„ä»˜æ¬¾åœ°å€ %1 - - - Payment request rejected - æ”¯ä»˜è¯·æ±‚è¢«æ‹’ç» - - - Payment request network doesn't match client network. - 付款请求所在的网络与当å‰å®¢æˆ·ç«¯æ‰€åœ¨çš„网络ä¸åŒ¹é…。 - - - Payment request is not initialized. - 支付请求未æˆå½¢ã€‚ - - - Requested payment amount of %1 is too small (considered dust). - è¯·æ±‚æ”¯ä»˜çš„é‡‘é¢ %1 太å°ï¼ˆå°±åƒå°˜åŸƒï¼‰ã€‚ - - - Payment request error - 支付请求出错 - - - Cannot start bitcoin: click-to-pay handler - 暂时无法å¯åŠ¨æ¯”ç‰¹å¸ï¼šç‚¹å‡»æ”¯ä»˜åŠŸèƒ½ - - - Payment request fetch URL is invalid: %1 - 付款请求URIé“¾æŽ¥éžæ³•: %1 - - - URI cannot be parsed! This can be caused by an invalid Bitcoin address or malformed URI parameters. - URI无法解æžï¼åŽŸå› å¯èƒ½æ˜¯æ¯”特å¸åœ°å€ä¸æ­£ç¡®ï¼Œæˆ–者URI傿•°é”™è¯¯ã€‚ - - - Payment request file handling - ä»˜æ¬¾è¯·æ±‚æ–‡ä»¶å¤„ç† - - - Payment request file cannot be read! This can be caused by an invalid payment request file. - 付款请求文件无法读å–ï¼å¯èƒ½æ˜¯ä»˜æ¬¾è¯·æ±‚文件ä¸åˆæ ¼ã€‚ - - - Payment request expired. - 支付请求已过期。 - - - Unverified payment requests to custom payment scripts are unsupported. - 䏿”¯æŒåˆ°è‡ªå®šä¹‰ä»˜æ¬¾è„šæœ¬çš„æœªéªŒè¯ä»˜æ¬¾è¯·æ±‚。 - - - Invalid payment request. - 无效的支付请求。 - - - Refund from %1 - 退款æ¥è‡ª %1 - - - Payment request %1 is too large (%2 bytes, allowed %3 bytes). - 支付请求 %1 太大 (%2 字节。åªå…许 %3 字节)。 - - - Payment request DoS protection - æ”¯ä»˜è¯·æ±‚é˜²æ»¥ç”¨ä¿æŠ¤ - - - Error communicating with %1: %2 - %1: %2 通讯出错 - - - Payment request cannot be parsed! - æ— æ³•è§£æž ä»˜æ¬¾è¯·æ±‚ï¼ - - - Bad response from server %1 - æ¥è‡ª %1 æœåŠ¡å™¨çš„é”™è¯¯å“应 - - - Payment acknowledged - 支付已到账 - - - Network request error - 网络请求出错 - - - - PeerTableModel - - User Agent - ç”¨æˆ·ä»£ç† - - - Node/Service - 节点/æœåŠ¡ - - - Ping Time - Ping æ—¶é—´ - - - - QObject - - Amount - é‡‘é¢ - - - Enter a Bitcoin address (e.g. %1) - 请输入一个比特å¸åœ°å€ (例如 %1) - - - %1 d - %1 天 - - - %1 h - %1 å°æ—¶ - - - %1 m - %1 分钟 - - - %1 s - %1 ç§’ - - - None - æ—  - - - N/A - ä¸å¯ç”¨ - - - %1 ms - %1 毫秒 - - - - QRImageWidget - - &Save Image... - ä¿å­˜å›¾ç‰‡(&S)... - - - &Copy Image - å¤åˆ¶å›¾ç‰‡(&C) - - - Save QR Code - ä¿å­˜äºŒç»´ç  - - - PNG Image (*.png) - PNG图片(*.png) - - - - RPCConsole - - Client name - 客户端åç§° - - - N/A - ä¸å¯ç”¨ - - - Client version - 客户端版本 - - - &Information - ä¿¡æ¯ - - - Debug window - è°ƒè¯•çª—å£ - - - General - 常规 - - - Using OpenSSL version - 使用 OpenSSL 版本 - - - Using BerkeleyDB version - 使用的 BerkeleyDB 版本 - - - Startup time - å¯åŠ¨æ—¶é—´ - - - Network - 网络 - - - Name - å§“å - - - Number of connections - 连接数 - - - Block chain - æ•°æ®é“¾ - - - Current number of blocks - 当剿•°æ®å—æ•°é‡ - - - Open the Bitcoin Core debug log file from the current data directory. This can take a few seconds for large log files. - 从当å‰çš„æ•°æ®ç›®å½•æ‰“å¼€æ¯”ç‰¹å¸æ ¸å¿ƒè°ƒè¯•日志文件。对于较大的日志文件,这å¯èƒ½éœ€è¦å‡ ç§’钟。 - - - Received - 收到 - - - Sent - å‘é€ - - - &Peers - åŒä¼´(&P) - - - Select a peer to view detailed information. - 选择节点查看详细信æ¯ã€‚ - - - Direction - æ–¹å‘ - - - Version - 版本 - - - User Agent - ç”¨æˆ·ä»£ç† - - - Services - æœåŠ¡ - - - Starting Height - 开始高度 - - - Sync Height - åŒæ­¥é«˜åº¦ - - - Ban Score - ç¦æ­¢å¾—分 - - - Connection Time - 连接时间 - - - Last Send - 最åŽå‘é€ - - - Last Receive - æœ€åŽæŽ¥æ”¶ - - - Bytes Sent - å‘é€å­—节 - - - Bytes Received - 接收字节 - - - Ping Time - Ping æ—¶é—´ - - - Time Offset - æ—¶é—´åç§» - - - Last block time - 上一数æ®å—æ—¶é—´ - - - &Open - 打开(&O) - - - &Console - 控制å°(&C) - - - &Network Traffic - 网络æµé‡(&N) - - - &Clear - 清除(&C) - - - Totals - 总数 - - - In: - 输入: - - - Out: - 输出: - - - Build date - 创建时间 - - - Debug log file - 调试日志文件 - - - Clear console - æ¸…ç©ºæŽ§åˆ¶å° - - - Welcome to the Bitcoin Core RPC console. - 欢迎使用 æ¯”ç‰¹å¸æ ¸å¿ƒ RPC 控制å°ã€‚ - - - Use up and down arrows to navigate history, and <b>Ctrl-L</b> to clear screen. - 使用上下方å‘é”®æµè§ˆåކå², <b>Ctrl-L</b>清除å±å¹•。 - - - Type <b>help</b> for an overview of available commands. - 使用 <b>help</b> 命令显示帮助信æ¯ã€‚ - - - %1 B - %1 字节 - - - %1 KB - %1 KB - - - %1 MB - %1 MB - - - %1 GB - %1 GB - - - via %1 - 通过 %1 - - - never - 从未 - - - Inbound - ä¼ å…¥ - - - Outbound - 传出 - - - Unknown - 未知 - - - Fetching... - 获å–中... - - - - ReceiveCoinsDialog - - &Amount: - 总é¢(&A): - - - &Label: - 标签(&L): - - - &Message: - 消æ¯(&M): - - - Reuse one of the previously used receiving addresses. Reusing addresses has security and privacy issues. Do not use this unless re-generating a payment request made before. - é‡å¤ä½¿ç”¨ä»¥å‰ç”¨è¿‡çš„æŽ¥æ”¶åœ°å€ã€‚é‡ç”¨åœ°å€æœ‰å®‰å…¨å’Œéšç§æ–¹é¢çš„éšæ‚£ã€‚é™¤éžæ˜¯ä¸ºé‡å¤ç”ŸæˆåŒä¸€é¡¹æ”¯ä»˜è¯·æ±‚,å¦åˆ™è¯·ä¸è¦è¿™æ ·åšã€‚ - - - R&euse an existing receiving address (not recommended) - é‡ç”¨çŽ°æœ‰çš„æŽ¥æ”¶åœ°å€ï¼ˆä¸æŽ¨è) - - - An optional message to attach to the payment request, which will be displayed when the request is opened. Note: The message will not be sent with the payment over the Bitcoin network. - å¯åœ¨ä»˜æ¬¾è¯·æ±‚上备注一æ¡ä¿¡æ¯ï¼Œåœ¨æ‰“开付款请求时å¯ä»¥çœ‹åˆ°ã€‚注æ„:该消æ¯ä¸æ˜¯é€šè¿‡æ¯”特å¸ç½‘络传é€ã€‚ - - - An optional label to associate with the new receiving address. - å¯ä¸ºæ–°å»ºçš„æ”¶æ¬¾åœ°å€æ·»åŠ ä¸€ä¸ªæ ‡ç­¾ã€‚ - - - Use this form to request payments. All fields are <b>optional</b>. - 使用此表å•è¦æ±‚付款。所有字段都是<b>å¯é€‰</b>。 - - - An optional amount to request. Leave this empty or zero to not request a specific amount. - å¯é€‰çš„请求金é¢ã€‚留空或填零为ä¸è¦æ±‚具体金é¢ã€‚ - - - Clear all fields of the form. - 清除此表å•的所有字段。 - - - Clear - 清除 - - - Requested payments history - è¯·æ±‚ä»˜æ¬¾çš„åŽ†å² - - - &Request payment - 请求付款(&R) - - - Show the selected request (does the same as double clicking an entry) - 显示选中的请求 (åŒå‡»ä¹Ÿå¯ä»¥æ˜¾ç¤º) - - - Show - 显示 - - - Remove the selected entries from the list - 从列表中移除选中的æ¡ç›® - - - Remove - 移除 - - - Copy label - å¤åˆ¶æ ‡ç­¾ - - - Copy message - å¤åˆ¶æ¶ˆæ¯ - - - Copy amount - å¤åˆ¶é‡‘é¢ - - - - ReceiveRequestDialog - - QR Code - äºŒç»´ç  - - - Copy &URI - å¤åˆ¶ URI(&U) - - - Copy &Address - å¤åˆ¶åœ°å€(&A) - - - &Save Image... - ä¿å­˜å›¾ç‰‡(&S)... - - - Request payment to %1 - 请求付款到 %1 - - - Payment information - ä»˜æ¬¾ä¿¡æ¯ - - - URI - URI - - - Address - åœ°å€ - - - Amount - é‡‘é¢ - - - Label - 标签 - - - Message - æ¶ˆæ¯ - - - Resulting URI too long, try to reduce the text for label / message. - URI 太长,请试ç€ç²¾ç®€æ ‡ç­¾æˆ–æ¶ˆæ¯æ–‡æœ¬ã€‚ - - - Error encoding URI into QR Code. - å°† URI 转为二维ç å¤±è´¥ã€‚ - - - - RecentRequestsTableModel - - Date - 日期 - - - Label - 标签 - - - Message - æ¶ˆæ¯ - - - Amount - é‡‘é¢ - - - (no label) - (没有标签) - - - (no message) - (无消æ¯) - - - (no amount) - (无金é¢) - - - - SendCoinsDialog - - Send Coins - å‘逿¯”ç‰¹å¸ - - - Coin Control Features - 交易æºåœ°å€æŽ§åˆ¶åŠŸèƒ½ - - - Inputs... - 输入... - - - automatically selected - 自动选择 - - - Insufficient funds! - 存款ä¸è¶³ï¼ - - - Quantity: - 总é‡ï¼š - - - Bytes: - 字节: - - - Amount: - 金é¢ï¼š - - - Priority: - 优先级: - - - Fee: - 费用: - - - After Fee: - 加上交易费用åŽ: - - - Change: - å˜æ›´ : - - - If this is activated, but the change address is empty or invalid, change will be sent to a newly generated address. - 如果激活该选项,但是零钱地å€ç”¨å…‰æˆ–è€…éžæ³•,将会新生æˆé›¶é’±åœ°å€ï¼Œè½¬å…¥é›¶é’±ã€‚ - - - Custom change address - è‡ªå®šä¹‰é›¶é’±åœ°å€ - - - Transaction Fee: - 交易费用: - - - Choose... - 选择... - - - collapse fee-settings - æ”¶èµ· 费用设置 - - - per kilobyte - æ¯kb - - - 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. - 如果自定义交易费设置为 1000èªè€Œäº¤æ˜“大å°åªæœ‰250字节,则“æ¯åƒå­—节" 模å¼åªæ”¯ä»˜250èªäº¤æ˜“费, 而"最少"模å¼åˆ™æ”¯ä»˜1000èªã€‚ 大于1000字节的交易按æ¯åƒå­—节付费。 - - - Hide - éšè— - - - total at least - 最å°é¢ - - - 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. - 交易é‡å°æ—¶åªæ”¯ä»˜æœ€å°äº¤æ˜“费是å¯ä»¥çš„。但是请注æ„,当交易é‡å¤§æ—¶æ‚¨çš„交易å¯èƒ½æ°¸è¿œæ— æ³•确认。 - - - (read the tooltip) - (è¯·æ³¨æ„æç¤ºä¿¡æ¯) - - - Recommended: - 推è: - - - Custom: - 自定义: - - - (Smart fee not initialized yet. This usually takes a few blocks...) - (智能交易费用 尚未åˆå§‹åŒ–。 需è¦å†ä¸‹è½½ä¸€äº›æ•°æ®å—...) - - - Confirmation time: - 确认时间: - - - normal - 一般 - - - fast - 快速 - - - Send as zero-fee transaction if possible - å‘逿—¶å°½å¯èƒ½ 䏿”¯ä»˜äº¤æ˜“费用 - - - (confirmation may take longer) - (确认时间更长) - - - Send to multiple recipients at once - 一次å‘é€ç»™å¤šä¸ªæŽ¥æ”¶è€… - - - Add &Recipient - 添加收款人(&R) - - - Clear all fields of the form. - 清除此表å•的所有字段。 - - - Dust: - å°é¢ï¼š - - - Clear &All - 清除所有(&A) - - - Balance: - ä½™é¢ï¼š - - - Confirm the send action - 确认并å‘é€è´§å¸ - - - S&end - å‘é€(&E) - - - Confirm send coins - 确认å‘é€è´§å¸ - - - %1 to %2 - %1 到 %2 - - - Copy quantity - å¤åˆ¶é‡‘é¢ - - - Copy amount - å¤åˆ¶é‡‘é¢ - - - Copy fee - å¤åˆ¶äº¤æ˜“è´¹ - - - Copy after fee - å¤åˆ¶å«äº¤æ˜“è´¹çš„é‡‘é¢ - - - Copy bytes - å¤åˆ¶å­—节 - - - Copy priority - å¤åˆ¶ä¼˜å…ˆçº§ - - - Copy change - å¤åˆ¶é›¶é’± - - - or - 或 - - - The amount to pay must be larger than 0. - 支付金é¢å¿…须大于0。 - - - The amount exceeds your balance. - 金é¢è¶…出您的账上余é¢ã€‚ - - - The total exceeds your balance when the %1 transaction fee is included. - 计入 %1 交易费åŽçš„金é¢è¶…出您的账上余é¢ã€‚ - - - Transaction creation failed! - äº¤æ˜“åˆ›å»ºå¤±è´¥ï¼ - - - 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. - 错误:该交易被拒ç»ï¼å‘生这ç§é”™è¯¯çš„原因å¯èƒ½æ˜¯ï¼šé’±åŒ…中的比特å¸å·²ç»è¢«ç”¨æŽ‰ï¼Œæœ‰å¯èƒ½æ‚¨å¤åˆ¶äº†wallet.dat钱包文件,然åŽç”¨å¤åˆ¶çš„钱包文件支付了比特å¸ï¼Œä½†æ˜¯è¿™ä¸ªé’±åŒ…文件中没有记录。 - - - A fee higher than %1 is considered an absurdly high fee. - 超过 %1 的交易费被认为是è’谬的高费率。 - - - Payment request expired. - 支付请求已过期。 - - - Estimated to begin confirmation within %n block(s). - 预计 %n 个数æ®å—åŽè¢«ç¡®è®¤ã€‚ - - - Pay only the minimum fee of %1 - åªæ”¯ä»˜æœ€å°è´¹ç”¨ %1 - - - Total Amount %1<span style='font-size:10pt;font-weight:normal;'><br />(=%2)</span> - æ€»é‡‘é¢ %1<span style='font-size:10pt;font-weight:normal;'><br />(=%2)</span> - - - The recipient address is not valid. Please recheck. - æŽ¥æ”¶äººåœ°å€æ— æ•ˆã€‚è¯·é‡æ–°æ£€æŸ¥ã€‚ - - - Duplicate address found: addresses should only be used once each. - å‘现é‡å¤åœ°å€ï¼šæ¯ä¸ªåœ°å€åº”该åªä½¿ç”¨ä¸€æ¬¡ã€‚ - - - Warning: Invalid Bitcoin address - 警告:无效的比特å¸åœ°å€ - - - (no label) - (没有标签) - - - Warning: Unknown change address - è­¦å‘Šï¼šæœªçŸ¥çš„æ›´æ”¹åœ°å€ - - - Copy dust - å¤åˆ¶å°é¢ - - - Are you sure you want to send? - 您确定è¦å‘出å—? - - - added as transaction fee - 已添加交易费 - - - - SendCoinsEntry - - A&mount: - 金é¢(&M) - - - Pay &To: - 付给(&T): - - - Enter a label for this address to add it to your address book - 为这个地å€è¾“入一个标签,以便将它添加到您的地å€ç°¿ - - - &Label: - 标签(&L): - - - Choose previously used address - 选择以å‰ç”¨è¿‡çš„åœ°å€ - - - This is a normal payment. - 这是笔正常的支付。 - - - The Bitcoin address to send the payment to - ä»˜æ¬¾ç›®çš„åœ°å€ - - - Alt+A - Alt+A - - - Paste address from clipboard - 从剪贴æ¿ç²˜è´´åœ°å€ - - - Alt+P - Alt+P - - - Remove this entry - 移除此项 - - - The fee will be deducted from the amount being sent. The recipient will receive less bitcoins than you enter in the amount field. If multiple recipients are selected, the fee is split equally. - 交易费将从å‘逿€»é¢ä¸­æ‰£é™¤ã€‚æŽ¥æ”¶äººå°†æ”¶åˆ°æ¯”æ‚¨åœ¨é‡‘é¢æ¡†ä¸­è¾“入的更少的比特å¸ã€‚如果选中了多个收件人,交易费平分。 - - - S&ubtract fee from amount - 从金é¢ä¸­å‡åŽ»äº¤æ˜“è´¹(&U) - - - Message: - 消æ¯ï¼š - - - This is an unauthenticated payment request. - 这是一个未ç»éªŒè¯çš„æ”¯ä»˜è¯·æ±‚。 - - - This is an authenticated payment request. - 这是一个已ç»éªŒè¯çš„æ”¯ä»˜è¯·æ±‚。 - - - Enter a label for this address to add it to the list of used addresses - 请为此地å€è¾“入一个标签以将它加入用过的地å€åˆ—表 - - - A message that was attached to the bitcoin: URI which will be stored with the transaction for your reference. Note: This message will not be sent over the Bitcoin network. - bitcoin:URI 附带的备注信æ¯ï¼Œå°†ä¼šå’Œäº¤æ˜“一起存储,备查。 注æ„:该消æ¯ä¸ä¼šé€šè¿‡æ¯”特å¸ç½‘络传输。 - - - Pay To: - 支付给: - - - Memo: - 便æ¡ï¼š - - - - ShutdownWindow - - Bitcoin Core is shutting down... - æ¯”ç‰¹å¸æ ¸å¿ƒæ­£åœ¨å…³æœº... - - - Do not shut down the computer until this window disappears. - åœ¨æ­¤çª—å£æ¶ˆå¤±å‰ä¸è¦å…³é—­è®¡ç®—机。 - - - - SignVerifyMessageDialog - - Signatures - Sign / Verify a Message - ç­¾å - 为消æ¯ç­¾å/验è¯ç­¾åæ¶ˆæ¯ - - - &Sign Message - ç­¾åæ¶ˆæ¯(&S) - - - You can sign messages/agreements with your addresses to prove you can receive bitcoins sent to them. Be careful not to sign anything vague or random, as phishing attacks may try to trick you into signing your identity over to them. Only sign fully-detailed statements you agree to. - 您å¯ä»¥ç”¨ä½ çš„地å€å¯¹æ¶ˆæ¯/å议进行签åï¼Œä»¥è¯æ˜Žæ‚¨å¯ä»¥æŽ¥æ”¶å‘é€åˆ°è¯¥åœ°å€çš„æ¯”特å¸ã€‚注æ„ä¸è¦å¯¹ä»»ä½•æ¨¡æ£±ä¸¤å¯æˆ–è€…éšæœºçš„æ¶ˆæ¯è¿›è¡Œç­¾å,以å…é­å—钓鱼弿”»å‡»ã€‚è¯·ç¡®ä¿æ¶ˆæ¯å†…å®¹å‡†ç¡®çš„è¡¨è¾¾äº†æ‚¨çš„çœŸå®žæ„æ„¿ã€‚ - - - The Bitcoin address to sign the message with - 用æ¥å¯¹æ¶ˆæ¯ç­¾åçš„åœ°å€ - - - Choose previously used address - 选择以å‰ç”¨è¿‡çš„åœ°å€ - - - Alt+A - Alt+A - - - Paste address from clipboard - 从剪贴æ¿ç²˜è´´åœ°å€ - - - Alt+P - Alt+P - - - Enter the message you want to sign here - 请输入您è¦å‘é€çš„ç­¾åæ¶ˆæ¯ - - - Signature - ç­¾å - - - Copy the current signature to the system clipboard - å¤åˆ¶å½“å‰ç­¾åè‡³å‰ªåˆ‡æ¿ - - - Sign the message to prove you own this Bitcoin address - ç­¾åæ¶ˆæ¯ï¼Œè¯æ˜Žè¿™ä¸ªåœ°å€å±žäºŽæ‚¨ã€‚ - - - Sign &Message - 消æ¯ç­¾å(&M) - - - Reset all sign message fields - æ¸…ç©ºæ‰€æœ‰ç­¾åæ¶ˆæ¯æ  - - - Clear &All - 清除所有(&A) - - - &Verify Message - éªŒè¯æ¶ˆæ¯(&V) - - - Enter the receiver's address, message (ensure you copy line breaks, spaces, tabs, etc. exactly) and signature below to verify the message. Be careful not to read more into the signature than what is in the signed message itself, to avoid being tricked by a man-in-the-middle attack. Note that this only proves the signing party receives with the address, it cannot prove sendership of any transaction! - 请在下é¢è¾“入接收者地å€ã€æ¶ˆæ¯ï¼ˆç¡®ä¿æ¢è¡Œç¬¦ã€ç©ºæ ¼ç¬¦ã€åˆ¶è¡¨ç¬¦ç­‰å®Œå…¨ç›¸åŒï¼‰å’Œç­¾åä»¥éªŒè¯æ¶ˆæ¯ã€‚请仔细核对签åä¿¡æ¯ï¼Œä»¥æé˜²ä¸­é—´äººæ”»å‡»ã€‚请注æ„ï¼Œè¿™åªæ˜¯è¯æ˜ŽæŽ¥æ”¶æ–¹ç­¾å的地å€ï¼Œå®ƒä¸èƒ½è¯æ˜Žä»»ä½•äº¤æ˜“ï¼ - - - The Bitcoin address the message was signed with - 消æ¯ä½¿ç”¨çš„ç­¾ååœ°å€ - - - Verify the message to ensure it was signed with the specified Bitcoin address - éªŒè¯æ¶ˆæ¯ï¼Œç¡®ä¿æ¶ˆæ¯æ˜¯ç”±æŒ‡å®šçš„æ¯”特å¸åœ°å€ç­¾å过的。 - - - Verify &Message - éªŒè¯æ¶ˆæ¯ç­¾å(&M) - - - Reset all verify message fields - æ¸…ç©ºæ‰€æœ‰éªŒè¯æ¶ˆæ¯æ  - - - Click "Sign Message" to generate signature - å•å‡»â€œç­¾åæ¶ˆæ¯â€œäº§ç”Ÿç­¾å。 - - - The entered address is invalid. - 输入的地å€éžæ³•。 - - - Please check the address and try again. - 请检查地å€åŽé‡è¯•。 - - - The entered address does not refer to a key. - è¾“å…¥çš„åœ°å€æ²¡æœ‰å…³è”的公ç§é’¥å¯¹ã€‚ - - - Wallet unlock was cancelled. - 钱包解é”åŠ¨ä½œå–æ¶ˆã€‚ - - - Private key for the entered address is not available. - 找ä¸åˆ°è¾“入地å€å…³è”çš„ç§é’¥ã€‚ - - - Message signing failed. - 消æ¯ç­¾å失败。 - - - Message signed. - 消æ¯å·²ç­¾å。 - - - The signature could not be decoded. - ç­¾åæ— æ³•è§£ç ã€‚ - - - Please check the signature and try again. - 请检查签ååŽé‡è¯•。 - - - The signature did not match the message digest. - ç­¾åä¸Žæ¶ˆæ¯æ‘˜è¦ä¸åŒ¹é…。 - - - Message verification failed. - 消æ¯éªŒè¯å¤±è´¥ã€‚ - - - Message verified. - 消æ¯éªŒè¯æˆåŠŸã€‚ - - - - SplashScreen - - Bitcoin Core - æ¯”ç‰¹å¸æ ¸å¿ƒ - - - The Bitcoin Core developers - Bitcoin Core 的开å‘者 - - - [testnet] - [测试网络] - - - - TrafficGraphWidget - - KB/s - KB/s - - - - TransactionDesc - - Open until %1 - 至 %1 个数æ®å—æ—¶å¼€å¯ - - - conflicted - å‘çŽ°å†²çª - - - %1/offline - %1 / 离线 - - - %1/unconfirmed - %1/未确认 - - - %1 confirmations - %1 已确认 - - - Status - çŠ¶æ€ - - - , broadcast through %n node(s) - , 通过 %n 个节点广播 - - - Date - 日期 - - - Source - æº - - - Generated - ç”Ÿæˆ - - - From - æ¥è‡ª - - - To - 到 - - - own address - è‡ªå·±çš„åœ°å€ - - - watch-only - 观察地å€(watch-only) - - - label - 标签 - - - Credit - æ”¶å…¥ - - - matures in %n more block(s) - %n 个数æ®å—åŽæˆç†Ÿ(mature) - - - not accepted - æœªè¢«æŽ¥å— - - - Debit - 支出 - - - Total debit - 总收入 - - - Total credit - 总支出 - - - Transaction fee - 交易费 - - - Net amount - å‡€é¢ - - - Message - æ¶ˆæ¯ - - - Comment - 备注 - - - Transaction ID - ID - - - Merchant - 商店 - - - Generated coins must mature %1 blocks before they can be spent. When you generated this block, it was broadcast to the network to be added to the block chain. If it fails to get into the chain, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - 生æˆçš„æ¯”特å¸åœ¨å¯ä»¥ä½¿ç”¨å‰å¿…须有 %1 个æˆç†Ÿçš„区å—。当您生æˆäº†æ­¤åŒºå—åŽï¼Œå®ƒå°†è¢«å¹¿æ’­åˆ°ç½‘络中以加入区å—链。如果它未æˆåŠŸè¿›å…¥åŒºå—链,其状æ€å°†å˜æ›´ä¸ºâ€œä¸æŽ¥å—â€å¹¶ä¸”ä¸å¯ä½¿ç”¨ã€‚è¿™å¯èƒ½å¶å°”会å‘生,如果å¦ä¸€ä¸ªèŠ‚ç‚¹æ¯”ä½ æ—©å‡ ç§’é’ŸæˆåŠŸç”Ÿæˆä¸€ä¸ªåŒºå—。 - - - Debug information - è°ƒè¯•ä¿¡æ¯ - - - Transaction - 交易 - - - Inputs - 输入 - - - Amount - é‡‘é¢ - - - true - 正确 - - - false - 错误 - - - , has not been successfully broadcast yet - ,未被æˆåŠŸå¹¿æ’­ - - - Open for %n more block(s) - 冿‰“å¼€ %n 个数æ®å— - - - unknown - 未知 - - - - TransactionDescDialog - - Transaction details - 交易细节 - - - This pane shows a detailed description of the transaction - 当å‰é¢æ¿æ˜¾ç¤ºäº†äº¤æ˜“çš„è¯¦ç»†ä¿¡æ¯ - - - - TransactionTableModel - - Date - 日期 - - - Type - 类别 - - - Immature (%1 confirmations, will be available after %2) - 未æˆç†Ÿ (%1 个确认,将在 %2 个åŽå¯ç”¨) - - - Open for %n more block(s) - 冿‰“å¼€ %n 个数æ®å— - - - Open until %1 - 至 %1 个数æ®å—æ—¶å¼€å¯ - - - Confirmed (%1 confirmations) - 已确认 (%1 æ¡ç¡®è®¤ä¿¡æ¯) - - - This block was not received by any other nodes and will probably not be accepted! - 此数æ®å—未被任何其他节点接收,å¯èƒ½ä¸è¢«æŽ¥å—ï¼ - - - Generated but not accepted - 已生æˆä½†æœªè¢«æŽ¥å— - - - Offline - 掉线 - - - Label - 标签 - - - Unconfirmed - 未确认的 - - - Confirming (%1 of %2 recommended confirmations) - 确认中 (推è %2ä¸ªç¡®è®¤ï¼Œå·²ç»æœ‰ %1个确认) - - - Conflicted - 冲çªçš„ - - - Received with - 接收于 - - - Received from - 收款æ¥è‡ª - - - Sent to - å‘é€ç»™ - - - Payment to yourself - 付款给自己 - - - Mined - 挖矿所得 - - - watch-only - 观察地å€(watch-only) - - - (n/a) - (ä¸å¯ç”¨ï¼‰ - - - Transaction status. Hover over this field to show number of confirmations. - 交易状æ€ã€‚ é¼ æ ‡ç§»åˆ°æ­¤åŒºåŸŸå¯æ˜¾ç¤ºç¡®è®¤é¡¹æ•°é‡ã€‚ - - - Date and time that the transaction was received. - 接收到交易的时间 - - - Type of transaction. - 交易类别。 - - - Whether or not a watch-only address is involved in this transaction. - è¯¥äº¤æ˜“ä¸­æ˜¯å¦æ¶‰åŠ è§‚å¯Ÿåœ°å€(watch-only address)。 - - - User-defined intent/purpose of the transaction. - 用户定义的该交易的æ„图/目的。 - - - Amount removed from or added to balance. - ä»Žä½™é¢æ·»åŠ æˆ–ç§»é™¤çš„é‡‘é¢ã€‚ - - - - TransactionView - - All - 全部 - - - Today - 今天 - - - This week - 本周 - - - This month - 本月 - - - Last month - 上月 - - - This year - 今年 - - - Range... - 范围... - - - Received with - 接收于 - - - Sent to - å‘é€ç»™ - - - To yourself - 到自己 - - - Mined - 挖矿所得 - - - Other - å…¶ä»– - - - Enter address or label to search - è¾“å…¥åœ°å€æˆ–标签进行æœç´¢ - - - Min amount - 最å°é‡‘é¢ - - - Copy address - å¤åˆ¶åœ°å€ - - - Copy label - å¤åˆ¶æ ‡ç­¾ - - - Copy amount - å¤åˆ¶é‡‘é¢ - - - Copy transaction ID - å¤åˆ¶äº¤æ˜“ç¼–å· - - - Edit label - 编辑标签 - - - Show transaction details - 显示交易详情 - - - Export Transaction History - å¯¼å‡ºäº¤æ˜“åŽ†å² - - - Watch-only - 观察地å€(Watch-only) - - - Exporting Failed - 导出失败 - - - There was an error trying to save the transaction history to %1. - 导出交易历å²åˆ° %1 æ—¶å‘生错误。 - - - Exporting Successful - 导出æˆåŠŸ - - - The transaction history was successfully saved to %1. - 交易历å²å·²æˆåŠŸä¿å­˜åˆ° %1。 - - - Comma separated file (*.csv) - 逗å·åˆ†é𔿖‡ä»¶ (*.csv) - - - Confirmed - 已确认 - - - Date - 日期 - - - Type - 类别 - - - Label - 标签 - - - Address - åœ°å€ - - - ID - ID - - - Range: - 范围: - - - to - 到 - - - - UnitDisplayStatusBarControl - - Unit to show amounts in. Click to select another unit. - 金é¢å•ä½ã€‚å•击选择别的å•ä½ã€‚ - - - - WalletFrame - - No wallet has been loaded. - 没有载入钱包。 - - - - WalletModel - - Send Coins - å‘逿¯”ç‰¹å¸ - - - - WalletView - - &Export - 导出(&E) - - - Export the data in the current tab to a file - å¯¼å‡ºå½“å‰æ•°æ®åˆ°æ–‡ä»¶ - - - Backup Wallet - 备份钱包 - - - Wallet Data (*.dat) - 钱包文件(*.dat) - - - Backup Failed - 备份失败 - - - There was an error trying to save the wallet data to %1. - å°è¯•ä¿å­˜é’±åŒ…æ•°æ®è‡³ %1 æ—¶å‘生错误。 - - - The wallet data was successfully saved to %1. - é’±åŒ…æ•°æ®æˆåŠŸä¿å­˜è‡³ %1 。 - - - Backup Successful - 备份æˆåŠŸ - - - - bitcoin-core - - Options: - 选项: - - - - Specify data directory - 指定数æ®ç›®å½• - - - - Connect to a node to retrieve peer addresses, and disconnect - 连接一个节点并获å–对端地å€ï¼Œç„¶åŽæ–­å¼€è¿žæŽ¥ - - - Specify your own public address - æŒ‡å®šæ‚¨çš„å…¬å…±åœ°å€ - - - Accept command line and JSON-RPC commands - 接å—命令行和 JSON-RPC 命令 - - - - Run in the background as a daemon and accept commands - 在åŽå°è¿è¡Œå¹¶æŽ¥å—命令 - - - - - Use the test network - 使用测试网络 - - - - Accept connections from outside (default: 1 if no -proxy or -connect) - æŽ¥å—æ¥è‡ªå¤–部的连接 (缺çœ: 如果ä¸å¸¦ -proxy or -connect 傿•°è®¾ç½®ä¸º1) - - - Bind to given address and always listen on it. Use [host]:port notation for IPv6 - 绑定指定的IP地å€å¼€å§‹ç›‘å¬ã€‚IPv6地å€è¯·ä½¿ç”¨[host]:port æ ¼å¼ - - - Delete all wallet transactions and only recover those parts of the blockchain through -rescan on startup - åˆ é™¤é’±åŒ…çš„æ‰€æœ‰äº¤æ˜“è®°å½•ï¼Œä¸”åªæœ‰ç”¨ -rescan傿•°å¯åŠ¨å®¢æˆ·ç«¯æ‰èƒ½é‡æ–°å–回交易记录 - - - Distributed under the MIT software license, see the accompanying file COPYING or <http://www.opensource.org/licenses/mit-license.php>. - Distributed under the MIT software license, see the accompanying file COPYING or <http://www.opensource.org/licenses/mit-license.php>. - - - Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) - 当最佳区å—å˜åŒ–时执行命令 (命令行中的 %s ä¼šè¢«æ›¿æ¢æˆåŒºå—哈希值) - - - Maximum total fees to use in a single wallet transaction; setting this too low may abort large transactions (default: %s) - 啿¬¡äº¤æ˜“最多使用交易费;设置太低å¯èƒ½å¯¼è‡´å¤§å®—交易中止 (默认: %s) - - - Reduce storage requirements by pruning (deleting) old blocks. This mode disables wallet support and is incompatible with -txindex. Warning: Reverting this setting requires re-downloading the entire blockchain. (default: 0 = disable pruning blocks, >%u = target size in MiB to use for block files) - 通过修剪(删除)旧数æ®å—å‡å°‘存储需求。此模å¼å°†ç¦ç”¨é’±åŒ…支æŒï¼Œå¹¶ä¸Ž -txindex ä¸å…¼å®¹ã€‚警告:还原此设置需è¦é‡æ–°ä¸‹è½½æ•´ä¸ªæ•°æ®é“¾ã€‚(默认: 0 = ç¦ç”¨ä¿®å‰ªæ•°æ®å—, >%u = æ•°æ®å—文件目标大å°ï¼Œå•ä½ MiB) - - - Set the number of script verification threads (%u to %d, 0 = auto, <0 = leave that many cores free, default: %d) - 设置脚本验è¯çš„ç¨‹åº (%u 到 %d, 0 = 自动, <0 = ä¿ç•™è‡ªç”±çš„æ ¸å¿ƒ, 默认值: %d) - - - This is a pre-release test build - use at your own risk - do not use for mining or merchant applications - 这是测试用的预å‘布版本 - 请谨慎使用 - ä¸è¦ç”¨æ¥æŒ–矿,或者在正å¼å•†ç”¨çŽ¯å¢ƒä¸‹ä½¿ç”¨ - - - Unable to bind to %s on this computer. Bitcoin Core is probably already running. - 无法 %sçš„ç»‘å®šåˆ°ç”µè„‘ä¸Šï¼Œæ¯”ç‰¹å¸æ ¸å¿ƒé’±åŒ…å¯èƒ½å·²ç»åœ¨è¿è¡Œã€‚ - - - WARNING: abnormally high number of blocks generated, %d blocks received in the last %d hours (%d expected) - 警告:数æ®å—ç”Ÿæˆæ•°é‡å¼‚常,最近 %d å°æ—¶æ”¶åˆ°äº† %d 个数æ®å—(预期为 %d 个) - - - WARNING: check your network connection, %d blocks received in the last %d hours (%d expected) - 警告:请检查您的网络连接,最近 %d å°æ—¶æ”¶åˆ°äº† %d 个数æ®å—(预期为 %d 个) - - - Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. - 警告:-paytxfee äº¤æ˜“è´¹è®¾ç½®å¾—å¤ªé«˜äº†ï¼æ¯ç¬”交易都将支付交易费。 - - - Warning: The network does not appear to fully agree! Some miners appear to be experiencing issues. - 警告:网络似乎并ä¸å®Œå…¨åŒæ„ï¼æœ‰äº›çŸ¿å·¥ä¼¼ä¹Žé‡åˆ°äº†é—®é¢˜ã€‚ - - - Warning: We do not appear to fully agree with our peers! You may need to upgrade, or other nodes may need to upgrade. - 警告:我们的åŒè¡Œä¼¼ä¹Žä¸å®Œå…¨åŒæ„ï¼æ‚¨å¯èƒ½éœ€è¦å‡çº§ï¼Œæˆ–者其他节点å¯èƒ½éœ€è¦å‡çº§ã€‚ - - - Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. - 警告:钱包文件wallet.dat读å–å¤±è´¥ï¼æœ€é‡è¦çš„公钥ã€ç§é’¥æ•°æ®éƒ½æ²¡æœ‰é—®é¢˜ï¼Œä½†æ˜¯äº¤æ˜“记录或地å€ç°¿æ•°æ®ä¸æ­£ç¡®ï¼Œæˆ–者存在数æ®ä¸¢å¤±ã€‚ - - - 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. - 警告:钱包文件wallet.datæŸå! 原始的钱包文件已ç»å¤‡ä»½åˆ°%s目录下并é‡å‘½å为{timestamp}.bak ã€‚å¦‚æžœæ‚¨çš„è´¦æˆ·ä½™é¢æˆ–è€…äº¤æ˜“è®°å½•ä¸æ­£ç¡®ï¼Œè¯·ä½¿ç”¨æ‚¨çš„钱包备份文件æ¢å¤ã€‚ - - - Whitelist peers connecting from the given netmask or IP address. Can be specified multiple times. - 节点白åå•,ç½‘ç»œæŽ©ç æˆ–IPå€ã€‚å¯å¤šæ¬¡æŒ‡å®šã€‚ - - - (default: 1) - (默认值: 1) - - - <category> can be: - <category> å¯èƒ½æ˜¯ï¼š - - - Attempt to recover private keys from a corrupt wallet.dat - å°è¯•从æŸå的钱包文件wallet.dat中æ¢å¤ç§é’¥ - - - Block creation options: - æ•°æ®å—创建选项: - - - Connect only to the specified node(s) - 仅连接到指定节点 - - - Connection options: - 连接选项: - - - Corrupted block database detected - 检测å‘现数æ®å—æ•°æ®åº“æŸå。请使用 -reindex傿•°é‡å¯å®¢æˆ·ç«¯ã€‚ - - - Debugging/Testing options: - 调试/测试选项: - - - Do not load the wallet and disable wallet RPC calls - ä¸è¦åŠ è½½é’±åŒ…å’Œç¦ç”¨é’±åŒ…çš„ RPC 调用 - - - Do you want to rebuild the block database now? - 你想现在就é‡å»ºå—æ•°æ®åº“å—? - - - Error initializing block database - åˆå§‹åŒ–æ•°æ®å—æ•°æ®åº“出错 - - - Error initializing wallet database environment %s! - Error initializing wallet database environment %s! - - - Error loading block database - 导入数æ®å—æ•°æ®åº“出错 - - - Error opening block database - 导入数æ®å—æ•°æ®åº“出错 - - - Error: Disk space is low! - 错误:ç£ç›˜å‰©ä½™ç©ºé—´ä½Ž! - - - Failed to listen on any port. Use -listen=0 if you want this. - 监å¬ç«¯å£å¤±è´¥ã€‚请使用 -listen=0 傿•°ã€‚ - - - If <category> is not supplied, output all debugging information. - 如果<category>未æä¾›ï¼Œå°†è¾“出所有调试信æ¯ã€‚ - - - Importing... - 导入中... - - - Incorrect or no genesis block found. Wrong datadir for network? - 䏿­£ç¡®æˆ–没有找到起æºåŒºå—。网络错误? - - - Invalid -onion address: '%s' - 无效的 -onion 地å€ï¼šâ€œ%s†- - - Not enough file descriptors available. - 没有足够的文件æè¿°ç¬¦å¯ç”¨ã€‚ - - - Only connect to nodes in network <net> (ipv4, ipv6 or onion) - åªè¿žæŽ¥ <net>网络中的节点 (ipv4, ipv6 或 onion) - - - Prune cannot be configured with a negative value. - 修剪ä¸èƒ½é…置一个负数。 - - - Prune mode is incompatible with -txindex. - 修剪模å¼ä¸Ž -txindex ä¸å…¼å®¹ã€‚ - - - Set database cache size in megabytes (%d to %d, default: %d) - 设置以MB为å•ä½çš„æ•°æ®åº“缓存大å°(%d 到 %d, 默认值: %d) - - - Set maximum block size in bytes (default: %d) - 设置最大区å—å¤§å° (默认: %d,å•ä½å­—节) - - - Specify wallet file (within data directory) - 指定钱包文件(数æ®ç›®å½•内) - - - Use UPnP to map the listening port (default: %u) - 使用UPnp映射监å¬ç«¯å£ (默认: %u) - - - Verifying blocks... - æ­£åœ¨éªŒè¯æ•°æ®åº“的完整性... - - - Verifying wallet... - 正在检测钱包的完整性... - - - Wallet %s resides outside data directory %s - 钱包 %s 在外部的数æ®ç›®å½• %s - - - Wallet options: - 钱包选项: - - - Warning: This version is obsolete; upgrade required! - 警告:此版本已过时,必须å‡çº§ï¼ - - - You need to rebuild the database using -reindex to change -txindex - 您需è¦å°† -reindex 改为 -txindex 以é‡å»ºæ•°æ®åº“ - - - Imports blocks from external blk000??.dat file - 从blk000??.dat文件导入数æ®å— - - - 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 - å…许æ¥è‡ªæŒ‡å®šåœ°å€çš„ JSON-RPC 连接。 <ip>为å•一IP (如: 1.2.3.4), 网络/æŽ©ç  (如: 1.2.3.4/255.255.255.0), 网络/CIDR (如: 1.2.3.4/24)。该选项å¯å¤šæ¬¡æŒ‡å®šã€‚ - - - An error occurred while setting up the RPC address %s port %u for listening: %s - 设置RPC监å¬ç«¯å£ %s:%u æ—¶å‘生错误: %s - - - Bind to given address and whitelist peers connecting to it. Use [host]:port notation for IPv6 - 绑定到指定地å€å’Œè¿žæŽ¥çš„白åå•节点。 IPv6使用 [主机]:ç«¯å£ æ ¼å¼ - - - Bind to given address to listen for JSON-RPC connections. Use [host]:port notation for IPv6. This option can be specified multiple times (default: bind to all interfaces) - 绑定到指定地å€ç›‘å¬ JSON-RPC连接。 IPv6使用[主机]:ç«¯å£ æ ¼å¼ã€‚该选项å¯å¤šæ¬¡æŒ‡å®š (默认: 绑定到所有接å£) - - - Cannot obtain a lock on data directory %s. Bitcoin Core is probably already running. - æ— æ³•èŽ·å–æ•°æ®ç›®å½•çš„ %s. æ¯”ç‰¹å¸æ ¸å¿ƒé’±åŒ…å¯èƒ½å·²ç»åœ¨è¿è¡Œ. - - - Create new files with system default permissions, instead of umask 077 (only effective with disabled wallet functionality) - 创建系统默认æƒé™çš„æ–‡ä»¶ï¼Œè€Œä¸æ˜¯ umask 077 (åªåœ¨å…³é—­é’±åŒ…功能时有效) - - - Discover own IP addresses (default: 1 when listening and no -externalip or -proxy) - å‘现自己的 IP 地å€ï¼ˆé»˜è®¤: 监å¬å¹¶ä¸”æ—  -externalip 或 -proxy 时为 1) - - - Error: Listening for incoming connections failed (listen returned error %s) - 错误:监å¬å¤–部连接失败 (监å¬è¿”回错误 %s) - - - Error: Unsupported argument -socks found. Setting SOCKS version isn't possible anymore, only SOCKS5 proxies are supported. - é”™è¯¯ï¼šä¸æ”¯æŒçš„ -socks 傿•°ã€‚ä¸å†æ”¯æŒè®¾ç½®SOCKSç‰ˆæœ¬ï¼ŒçŽ°åœ¨åªæ”¯æŒ SOCKS5代ç†ã€‚ - - - Execute command when a relevant alert is received or we see a really long fork (%s in cmd is replaced by message) - 当收到相关æé†’æˆ–è€…æˆ‘ä»¬çœ‹åˆ°ä¸€ä¸ªé•¿åˆ†å‰æ—¶æ‰§è¡Œå‘½ä»¤ï¼ˆ%s 将替æ¢ä¸ºæ¶ˆæ¯ï¼‰ - - - Fees (in BTC/Kb) smaller than this are considered zero fee for relaying (default: %s) - 交易费(BTC/kb)比这更å°çš„äº¤æ˜“åœ¨è½¬å‘æ—¶å°†è¢«è§†ä¸ºé›¶è´¹äº¤æ˜“ (默认: %s) - - - If paytxfee is not set, include enough fee so transactions begin confirmation on average within n blocks (default: %u) - 如果未设置交易费用,自动添加足够的交易费以确ä¿äº¤æ˜“在平å‡n个数æ®å—内被确认 (默认: %u) - - - Invalid amount for -maxtxfee=<amount>: '%s' (must be at least the minrelay fee of %s to prevent stuck transactions) - -maxtxfee=<amount>: '%s' çš„é‡‘é¢æ— æ•ˆï¼ˆäº¤æ˜“费至少为 %s,以å…交易滞留过久) - - - Maximum size of data in data carrier transactions we relay and mine (default: %u) - Maximum size of data in data carrier transactions we relay and mine (default: %u) - - - Prune configured below the minimum of %d MB. Please use a higher number. - 修剪被é…置为比最å°å€¼ %d MB 更低。请使用更大的数字。 - - - Query for peer addresses via DNS lookup, if low on addresses (default: 1 unless -connect) - 通过DNS查询æ¯ä¸ªåœ°å€ï¼Œå¦‚æžœçŸ­åœ°å€ (默认值: 1 é™¤éž -连接) - - - Randomize credentials for every proxy connection. This enables Tor stream isolation (default: %u) - 为æ¯ä¸ªä»£ç†è¿žæŽ¥éšæœºåŒ–å‡­æ®ã€‚这将å¯ç”¨ Tor æµéš”离 (默认: %u) - - - Set maximum size of high-priority/low-fee transactions in bytes (default: %d) - 设置 高优先级/低交易费 交易的最大字节 (缺çœ: %d) - - - Set the number of threads for coin generation if enabled (-1 = all cores, default: %d) - 设置比特å¸ç”Ÿæˆçº¿ç¨‹æ•° ( -1=所有核, 默认: %d) - - - The transaction amount is too small to send after the fee has been deducted - 在交易费被扣除åŽå‘é€çš„交易金é¢å¤ªå° - - - 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. - 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. - - - 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 - - è¦ä½¿ç”¨ bitcoind 或者 bitcoin-qt 中的 -server 选项,您必须在é…置文件中设置一个密ç ï¼š -%s -å»ºè®®æ‚¨ä½¿ç”¨ä¸‹åˆ—éšæœºå¯†ç ï¼š -rpcuser=bitcoinrpc -rpcpassword=%s -(您ä¸éœ€è¦è®°ä½è¿™ä¸ªå¯†ç ï¼‰ -用户å和密ç ä¸èƒ½ç›¸åŒã€‚ -如果该文件ä¸å­˜åœ¨ï¼Œåˆ›å»ºä¸€ä¸ªæ–‡ä»¶å¹¶è®¾ç½®æƒé™ä¸ºä»…创建者å¯è¯»ã€‚ -此外,还建议您设置 alertnotify 以便您能注æ„到问题: -例如 alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com - - - - Warning: -maxtxfee is set very high! Fees this large could be paid on a single transaction. - 警告:-maxtxfee è®¾ç½®çš„å¤ªé«˜äº†ï¼æ¯è¿›è¡Œä¸€ç¬”交易时您都è¦èŠ±è´¹è¿™ä¹ˆå¤šè´¹ç”¨ã€‚ - - - Warning: Please check that your computer's date and time are correct! If your clock is wrong Bitcoin Core will not work properly. - è­¦å‘Šï¼šè¯·æ£€æŸ¥ç”µè„‘çš„æ—¥æœŸæ—¶é—´è®¾ç½®æ˜¯å¦æ­£ç¡®ï¼æ—¶é—´é”™è¯¯å¯èƒ½ä¼šå¯¼è‡´æ¯”特å¸å®¢æˆ·ç«¯è¿è¡Œå¼‚常。 - - - 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 - 白åå•节点ä¸èƒ½è¢«DoS banned ï¼Œä¸”è½¬å‘æ‰€æœ‰æ¥è‡ªä»–们的交易(å³ä¾¿è¿™äº›äº¤æ˜“å·²ç»å­˜åœ¨äºŽmempool中),常用于网关 - - - You need to rebuild the database using -reindex to go back to unpruned mode. This will redownload the entire blockchain - 您需è¦ä½¿ç”¨ -reindex 釿–°æž„建数æ®åº“以返回未修剪的模å¼ã€‚è¿™å°†é‡æ–°ä¸‹è½½æ•´ä¸ªåŒºå—链 - - - (default: %u) - (默认: %u) - - - Accept public REST requests (default: %u) - 接å—公共 REST 请求 (默认: %u) - - - Activating best chain... - 正在激活最佳数æ®é“¾... - - - Can't run with a wallet in prune mode. - ä¸èƒ½åœ¨ä¿®å‰ªæ¨¡å¼ä¸‹è¿è¡Œä¸€ä¸ªé’±åŒ…。 - - - Cannot resolve -whitebind address: '%s' - æ— æ³•è§£æž -whitebind 地å€: '%s' - - - Choose data directory on startup (default: 0) - 在å¯åŠ¨æ—¶é€‰æ‹©æ•°æ®ç›®å½•(默认:0) - - - Connect through SOCKS5 proxy - 通过 SOCKS5 代ç†è¿žæŽ¥ - - - Copyright (C) 2009-%i The Bitcoin Core Developers - ç‰ˆæƒæ‰€æœ‰ (C) 2009-%i Bitcoin Core å¼€å‘者 - - - Could not parse -rpcbind value %s as network address - æ— æ³•è§£æž -rpcbind 的值 %s ä¸ºç½‘ç»œåœ°å€ - - - Error loading wallet.dat: Wallet requires newer version of Bitcoin Core - 加载wallet.daté”™è¯¯ï¼šéœ€è¦æ–°ç‰ˆçš„æ¯”ç‰¹å¸æ ¸å¿ƒé’±åŒ… - - - Error reading from database, shutting down. - è¯»å–æ•°æ®åº“出错,关闭中。 - - - Error: A fatal internal error occurred, see debug.log for details - 错误:å‘ç”Ÿäº†è‡´å‘½çš„å†…éƒ¨é”™è¯¯ï¼Œè¯¦æƒ…è§ debug.log 文件 - - - Error: Unsupported argument -tor found, use -onion. - 错误:å‘çŽ°äº†ä¸æ”¯æŒçš„傿•° -tor,请使用 -onion。 - - - Fee (in BTC/kB) to add to transactions you send (default: %s) - 为付款交易添加交易费 (BTC/kb) (默认: %s) - - - Information - ä¿¡æ¯ - - - Initialization sanity check failed. Bitcoin Core is shutting down. - åˆå§‹åŒ–完整性检查失败。Bitcoin Core å³å°†å…³é—­ã€‚ - - - Invalid amount for -maxtxfee=<amount>: '%s' - -maxtxfee=<amount>: '%s' çš„é‡‘é¢æ— æ•ˆ - - - Invalid amount for -minrelaytxfee=<amount>: '%s' - -minrelaytxfee=<amount>: '%s' æ— æ•ˆçš„é‡‘é¢ - - - Invalid amount for -mintxfee=<amount>: '%s' - -mintxfee=<amount>: '%s' æ— æ•ˆçš„é‡‘é¢ - - - Invalid amount for -paytxfee=<amount>: '%s' (must be at least %s) - æ— æ•ˆçš„é‡‘é¢ -paytxfee=<amount>: '%s' (必须至少为 %s) - - - Invalid netmask specified in -whitelist: '%s' - -whitelist: '%s' æŒ‡å®šçš„ç½‘ç»œæŽ©ç æ— æ•ˆ - - - Need to specify a port with -whitebind: '%s' - -whitebind: '%s' éœ€è¦æŒ‡å®šä¸€ä¸ªç«¯å£ - - - Node relay options: - 节点中继选项: - - - Pruning blockstore... - 正在修剪区å—存储... - - - RPC SSL options: (see the Bitcoin Wiki for SSL setup instructions) - RPC SSL选项:(è§æœ‰å…³æ¯”特å¸è®¾ç½®ç”¨äºŽSSL说明的维基百科) - - - RPC server options: - RPC æœåŠ¡å™¨é€‰é¡¹ï¼š - - - RPC support for HTTP persistent connections (default: %d) - RPC æ”¯æŒ HTTP æŒä¹…连接 (默认: %d) - - - Rebuild block chain index from current blk000??.dat files on startup - å¯åŠ¨æ—¶é‡æ–°ä¸ºå½“å‰çš„ blk000??.dat 文件建立索引 - - - Receive and display P2P network alerts (default: %u) - 收到并且显示P2P网络的告警(默认:%u) - - - Send trace/debug info to console instead of debug.log file - 跟踪/调试信æ¯è¾“出到控制å°ï¼Œä¸è¾“出到 debug.log 文件 - - - Send transactions as zero-fee transactions if possible (default: %u) - å‘逿—¶å°½å¯èƒ½ 䏿”¯ä»˜äº¤æ˜“费用 (默认: %u) - - - Set SSL root certificates for payment request (default: -system-) - 设置SSLæ ¹è¯ä¹¦çš„付款请求(默认:-系统-) - - - Set language, for example "de_DE" (default: system locale) - 设置语言, 例如“zh-TWâ€ï¼ˆé»˜è®¤ä¸ºç³»ç»Ÿè¯­è¨€ï¼‰ - - - Show all debugging options (usage: --help -help-debug) - 显示所有调试选项 (用法: --帮助 -帮助调试) - - - Show splash screen on startup (default: 1) - å¯åŠ¨æ—¶æ˜¾ç¤ºç‰ˆæƒé¡µ (缺çœ: 1) - - - Shrink debug.log file on client startup (default: 1 when no -debug) - 客户端å¯åŠ¨æ—¶åŽ‹ç¼©debug.log文件(缺çœï¼šno-debugæ¨¡å¼æ—¶ä¸º1) - - - Signing transaction failed - 签署交易失败 - - - Start minimized - å¯åŠ¨æ—¶æœ€å°åŒ– - - - - The transaction amount is too small to pay the fee - 交易金é¢å¤ªå°ï¼Œä¸è¶³ä»¥æ”¯ä»˜äº¤æ˜“è´¹ - - - This is experimental software. - 这是实验性的软件。 - - - Transaction amount too small - 交易é‡å¤ªå° - - - Transaction amounts must be positive - 交易金é¢å¿…须是积æžçš„ - - - Transaction too large for fee policy - 费用策略的交易太大 - - - Transaction too large - 交易太大 - - - UI Options: - 界é¢é€‰é¡¹ï¼š - - - Unable to bind to %s on this computer (bind returned error %s) - 无法在此计算机上绑定 %s (绑定返回错误 %s) - - - Use UPnP to map the listening port (default: 1 when listening) - 使用UPnp映射监å¬ç«¯å£(缺çœ: 监å¬çжæ€è®¾ä¸º1) - - - Username for JSON-RPC connections - JSON-RPC 连接用户å - - - Wallet needed to be rewritten: restart Bitcoin Core to complete - 钱包需è¦è¢«æ”¹å†™ï¼šé‡æ–°å¯åŠ¨æ ¸å¿ƒé’±åŒ…æ¥å®Œæˆ - - - Warning - 警告 - - - Warning: Unsupported argument -benchmark ignored, use -debug=bench. - è­¦å‘Šï¼šä¸æ”¯æŒçš„傿•° -benchmark 已忽略,请使用 -debug=bench。 - - - Warning: Unsupported argument -debugnet ignored, use -debug=net. - è­¦å‘Šï¼šä¸æ”¯æŒçš„傿•° -debugnet 已忽略,请使用 -debug=net。 - - - Zapping all transactions from wallet... - Zapping all transactions from wallet... - - - on startup - å¯åЍ䏭 - - - wallet.dat corrupt, salvage failed - 钱包文件wallet.datæŸå,抢救备份失败 - - - Password for JSON-RPC connections - JSON-RPC è¿žæŽ¥å¯†ç  - - - - Execute command when the best block changes (%s in cmd is replaced by block hash) - 当最佳数æ®å—å˜åŒ–时执行命令 (命令行中的 %s ä¼šè¢«æ›¿æ¢æˆæ•°æ®å—哈希值) - - - Upgrade wallet to latest format - 将钱包å‡çº§åˆ°æœ€æ–°çš„æ ¼å¼ - - - Rescan the block chain for missing wallet transactions - 釿–°æ‰«æåŒºå—é“¾ä»¥æŸ¥æ‰¾é—æ¼çš„钱包交易 - - - Use OpenSSL (https) for JSON-RPC connections - 为 JSON-RPC 连接使用 OpenSSL (https) 连接 - - - This help message - æœ¬å¸®åŠ©ä¿¡æ¯ - - - - Allow DNS lookups for -addnode, -seednode and -connect - 使用 -addnode, -seednode å’Œ -connect 选项时å…许查询DNS - - - Loading addresses... - 正在加载地å€ç°¿... - - - Error loading wallet.dat: Wallet corrupted - wallet.dat 钱包文件加载出错:钱包æŸå - - - (1 = keep tx meta data e.g. account owner and payment request information, 2 = drop tx meta data) - (1 = ä¿ç•™ tx meta data , 如 account owner å’Œ payment request information, 2 = ä¸ä¿ç•™ tx meta data) - - - How thorough the block verification of -checkblocks is (0-4, default: %u) - æ•°æ®å—éªŒè¯ ä¸¥å¯†çº§åˆ« -checkblocks (0-4, 默认: %u) - - - Maintain a full transaction index, used by the getrawtransaction rpc call (default: %u) - 维护一份完整的交易索引, 用于 getrawtransaction RPC调用 (默认: %u) - - - Number of seconds to keep misbehaving peers from reconnecting (default: %u) - é™åˆ¶ éžç¤¼èŠ‚ç‚¹ 若干秒内ä¸èƒ½è¿žæŽ¥ (默认: %u) - - - Output debugging information (default: %u, supplying <category> is optional) - è¾“å‡ºè°ƒè¯•ä¿¡æ¯ (默认: %u, æä¾› <category> 是å¯é€‰é¡¹) - - - Use separate SOCKS5 proxy to reach peers via Tor hidden services (default: %s) - 通过Toréšè—æœåŠ¡è¿žæŽ¥èŠ‚ç‚¹æ—¶ 使用ä¸åŒçš„SOCKS5ä»£ç† (默认: %s) - - - (default: %s) - (默认: %s) - - - Acceptable ciphers (default: %s) - 坿ޥå—的密ç ç®—法 (默认: %s) - - - Error loading wallet.dat - wallet.dat 钱包文件加载出错 - - - Generate coins (default: %u) - ç”Ÿæˆæ¯”ç‰¹å¸ (默认: %u) - - - How many blocks to check at startup (default: %u, 0 = all) - å¯åŠ¨æ—¶æ£€æµ‹å¤šå°‘ä¸ªæ•°æ®å—(默认: %u, 0=所有) - - - Include IP addresses in debug output (default: %u) - 在调试输出中包å«IPåœ°å€ (默认: %u) - - - Invalid -proxy address: '%s' - 无效的代ç†åœ°å€ï¼š%s - - - Listen for JSON-RPC connections on <port> (default: %u or testnet: %u) - 使用 <port>端å£ç›‘å¬ JSON-RPC 连接 (默认: %u ; testnet: %u) - - - Listen for connections on <port> (default: %u or testnet: %u) - ä½¿ç”¨ç«¯å£ <port> 监å¬è¿žæŽ¥ (默认: %u ; testnet: %u) - - - Maintain at most <n> connections to peers (default: %u) - ä¿ç•™æœ€å¤š <n> æ¡èŠ‚ç‚¹è¿žæŽ¥ (默认: %u) - - - Make the wallet broadcast transactions - é’±åŒ…å¹¿æ’­äº‹åŠ¡å¤„ç† - - - Maximum per-connection receive buffer, <n>*1000 bytes (default: %u) - æ¯ä¸ªè¿žæŽ¥çš„æœ€å¤§æŽ¥æ”¶ç¼“存,<n>*1000 字节 (默认: %u) - - - Maximum per-connection send buffer, <n>*1000 bytes (default: %u) - æ¯ä¸ªè¿žæŽ¥çš„æœ€å¤§å‘é€ç¼“存,<n>*1000 字节 (默认: %u) - - - Prepend debug output with timestamp (default: %u) - è¾“å‡ºè°ƒè¯•ä¿¡æ¯æ—¶ï¼Œå‰é¢åŠ ä¸Šæ—¶é—´æˆ³ (默认: %u) - - - Relay and mine data carrier transactions (default: %u) - Relay and mine data carrier transactions (default: %u) - - - Relay non-P2SH multisig (default: %u) - 是å¦è½¬å‘ éžP2SHæ ¼å¼çš„多签å交易 (默认: %u) - - - Server certificate file (default: %s) - æœåС噍è¯ä¹¦æ–‡ä»¶ (默认: %s) - - - Server private key (default: %s) - æœåС噍ç§é’¥ (默认: %s) - - - Set key pool size to <n> (default: %u) - 设置ç§é’¥æ± å¤§å°ä¸º <n> (默认:%u) - - - Set minimum block size in bytes (default: %u) - 设置数æ®å— 最å°å­—节数 (默认: %u) - - - Set the number of threads to service RPC calls (default: %d) - 设置RPCæœåŠ¡çº¿ç¨‹æ•° (默认: %d) - - - Specify configuration file (default: %s) - 指定é…置文件 (默认: %s) - - - Specify connection timeout in milliseconds (minimum: 1, default: %d) - 指定连接超时毫秒数 (最å°: 1, 默认: %d) - - - Specify pid file (default: %s) - 指定 pid 文件 (默认: %s) - - - Spend unconfirmed change when sending transactions (default: %u) - 付款时å…许使用未确认的零钱 (默认: %u) - - - Threshold for disconnecting misbehaving peers (default: %u) - æ–­å¼€ éžç¤¼èŠ‚ç‚¹çš„é˜€å€¼ (默认: %u) - - - Unknown network specified in -onlynet: '%s' - -onlynet 指定的是未知网络:%s - - - Cannot resolve -bind address: '%s' - æ— æ³•è§£æž -bind 端å£åœ°å€: '%s' - - - Cannot resolve -externalip address: '%s' - æ— æ³•è§£æž -externalip 地å€: '%s' - - - Invalid amount for -paytxfee=<amount>: '%s' - éžæ³•é‡‘é¢ -paytxfee=<amount>: '%s' - - - Insufficient funds - 金é¢ä¸è¶³ - - - Loading block index... - 正在加载数æ®å—索引... - - - Add a node to connect to and attempt to keep the connection open - æ·»åŠ èŠ‚ç‚¹å¹¶ä¸Žå…¶ä¿æŒè¿žæŽ¥ - - - Loading wallet... - 正在加载钱包... - - - Cannot downgrade wallet - 无法é™çº§é’±åŒ… - - - Cannot write default address - æ— æ³•å†™å…¥é»˜è®¤åœ°å€ - - - Rescanning... - æ­£åœ¨é‡æ–°æ‰«æ... - - - Done loading - åŠ è½½å®Œæˆ - - - Error - 错误 - - - \ No newline at end of file diff --git a/src/qt/locale/bitcoin_zh_HK.ts b/src/qt/locale/bitcoin_zh_HK.ts deleted file mode 100644 index 7062377f4..000000000 --- a/src/qt/locale/bitcoin_zh_HK.ts +++ /dev/null @@ -1,110 +0,0 @@ - - - AddressBookPage - - - AddressTableModel - - - AskPassphraseDialog - - - BitcoinGUI - - - ClientModel - - - CoinControlDialog - - - EditAddressDialog - - - FreespaceChecker - - - HelpMessageDialog - - - Intro - - - OpenURIDialog - - - OptionsDialog - - - OverviewPage - - - PaymentServer - - - PeerTableModel - - - QObject - - - QRImageWidget - - - RPCConsole - - - ReceiveCoinsDialog - - - ReceiveRequestDialog - - - RecentRequestsTableModel - - - SendCoinsDialog - - - SendCoinsEntry - - - ShutdownWindow - - - SignVerifyMessageDialog - - - SplashScreen - - - TrafficGraphWidget - - - TransactionDesc - - - TransactionDescDialog - - - TransactionTableModel - - - TransactionView - - - UnitDisplayStatusBarControl - - - WalletFrame - - - WalletModel - - - WalletView - - - bitcoin-core - - \ No newline at end of file diff --git a/src/qt/locale/bitcoin_zh_TW.ts b/src/qt/locale/bitcoin_zh_TW.ts deleted file mode 100644 index b7adeaf77..000000000 --- a/src/qt/locale/bitcoin_zh_TW.ts +++ /dev/null @@ -1,3585 +0,0 @@ - - - AddressBookPage - - Right-click to edit address or label - å³éµé»žä¸€ä¸‹ä¾†ä¿®æ”¹ä½å€æˆ–標記 - - - Create a new address - 新增新的ä½å€ - - - &New - 新增 - - - Copy the currently selected address to the system clipboard - 複製目å‰é¸æ“‡çš„ä½å€åˆ°ç³»çµ±å‰ªè²¼ç°¿ - - - &Copy - 複製 - - - C&lose - 關閉 - - - &Copy Address - 複製ä½å€ - - - Delete the currently selected address from the list - 把目å‰é¸æ“‡çš„ä½å€å¾žåˆ—表中刪掉 - - - Export the data in the current tab to a file - 把目å‰åˆ†é çš„è³‡æ–™åŒ¯å‡ºå­˜æˆæª”案 - - - &Export - 匯出 - - - &Delete - 刪掉 - - - Choose the address to send coins to - 鏿“‡è¦ä»˜éŒ¢éŽåŽ»çš„ä½å€ - - - Choose the address to receive coins with - 鏿“‡è¦æ”¶éŒ¢é€²ä¾†çš„ä½å€ - - - C&hoose - é¸å– - - - Sending addresses - 付款ä½å€ - - - Receiving addresses - 收款ä½å€ - - - These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins. - 這些是你è¦ä»˜æ¬¾éŽåŽ»çš„ä½å…ƒå¹£ä½å€ã€‚在付錢之å‰ï¼Œå‹™å¿…è¦æª¢æŸ¥é‡‘é¡å’Œæ”¶æ¬¾ä½å€æ˜¯å¦æ­£ç¢ºã€‚ - - - These are your Bitcoin addresses for receiving payments. It is recommended to use a new receiving address for each transaction. - 這些是你用來收款的ä½å…ƒå¹£ä½å€ã€‚å»ºè­°åœ¨æ¯æ¬¡äº¤æ˜“時,都使用一個新的收款ä½å€ã€‚ - - - Copy &Label - 複製標記 - - - &Edit - 編輯 - - - Export Address List - 匯出ä½å€æ¸…å–® - - - Comma separated file (*.csv) - 逗號分隔資料檔(*.csv) - - - Exporting Failed - 匯出失敗 - - - There was an error trying to save the address list to %1. Please try again. - 儲存ä½å€åˆ—表到 %1 時發生錯誤。請é‡è©¦ä¸€æ¬¡ã€‚ - - - - AddressTableModel - - Label - 標記 - - - Address - ä½å€ - - - (no label) - (無標記) - - - - AskPassphraseDialog - - Passphrase Dialog - 密碼å°è©±è¦–窗 - - - Enter passphrase - 請輸入密碼 - - - New passphrase - 新密碼 - - - Repeat new passphrase - é‡è¤‡æ–°å¯†ç¢¼ - - - Encrypt wallet - 加密錢包 - - - This operation needs your wallet passphrase to unlock the wallet. - 這個動作需è¦ä½ çš„錢包密碼來解鎖錢包。 - - - Unlock wallet - 解鎖錢包 - - - This operation needs your wallet passphrase to decrypt the wallet. - 這個動作需è¦ä½ çš„錢包密碼來把錢包解密。 - - - Decrypt wallet - 解密錢包 - - - Change passphrase - 改變密碼 - - - Confirm wallet encryption - 確èªéŒ¢åŒ…加密 - - - Warning: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR BITCOINS</b>! - 警告: 如果把錢包加密後åˆå¿˜è¨˜å¯†ç¢¼ï¼Œä½ å°±æœƒå¾žæ­¤<b>失去其中所有的ä½å…ƒå¹£äº†</b>ï¼ - - - Are you sure you wish to encrypt your wallet? - ä½ ç¢ºå®šè¦æŠŠéŒ¢åŒ…åŠ å¯†å—Žï¼Ÿ - - - Bitcoin Core 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. - ä½å…ƒå¹£æ ¸å¿ƒç¾åœ¨è¦é—œé–‰ï¼Œå¥½å®ŒæˆåŠ å¯†ç¨‹åºã€‚請注æ„,加密錢包ä¸èƒ½å®Œå…¨é˜²æ­¢å…¥ä¾µä½ çš„電腦的惡æ„程å¼å·å–ä½å…ƒå¹£ã€‚ - - - 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. - é‡è¦: 請改用新產生有加密的錢包檔,來å–代舊錢包檔的備份。為了安全性的ç†ç”±ï¼Œç•¶ä½ é–‹å§‹ä½¿ç”¨æ–°çš„æœ‰åŠ å¯†çš„éŒ¢åŒ…å¾Œï¼ŒèˆŠéŒ¢åŒ…æª”çš„å‚™ä»½å°±ä¸èƒ½å†ä½¿ç”¨äº†ã€‚ - - - Warning: The Caps Lock key is on! - 警告: 大寫字æ¯éŽ–å®šä½œç”¨ä¸­ï¼ - - - Wallet encrypted - 錢包已加密 - - - 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>. - 輸入錢包的新密碼。<br/>密碼請用<b>10 個以上的字元</b>,或是<b>8 個以上的字詞</b>。 - - - Enter the old passphrase and new passphrase to the wallet. - 請輸入錢包的舊密碼和新密碼。 - - - Wallet encryption failed - 錢包加密失敗 - - - Wallet encryption failed due to an internal error. Your wallet was not encrypted. - 因為內部錯誤導致錢包加密失敗。你的錢包還是沒加密。 - - - The supplied passphrases do not match. - æä¾›çš„密碼ä¸ä¸€æ¨£ã€‚ - - - Wallet unlock failed - 錢包解鎖失敗 - - - The passphrase entered for the wallet decryption was incorrect. - 輸入è¦ç”¨ä¾†è§£å¯†éŒ¢åŒ…的密碼ä¸å°ã€‚ - - - Wallet decryption failed - 錢包解密失敗 - - - Wallet passphrase was successfully changed. - 錢包密碼改æˆåŠŸäº†ã€‚ - - - - BitcoinGUI - - Sign &message... - 簽署訊æ¯... - - - Synchronizing with network... - æ­£åœ¨è·Ÿç¶²è·¯é€²è¡ŒåŒæ­¥... - - - &Overview - 總覽 - - - Node - 節點 - - - Show general overview of wallet - 顯示錢包一般總覽 - - - &Transactions - 交易 - - - Browse transaction history - ç€è¦½äº¤æ˜“紀錄 - - - E&xit - çµæŸ - - - Quit application - çµæŸæ‡‰ç”¨ç¨‹å¼ - - - About &Qt - 關於 &Qt - - - Show information about Qt - 顯示 Qt 相關資訊 - - - &Options... - é¸é …... - - - &Encrypt Wallet... - 加密錢包... - - - &Backup Wallet... - 備份錢包... - - - &Change Passphrase... - 改變密碼... - - - &Sending addresses... - 付款ä½å€... - - - &Receiving addresses... - 收款ä½å€... - - - Open &URI... - é–‹å•“ URI... - - - Bitcoin Core client - ä½å…ƒå¹£æ ¸å¿ƒå®¢æˆ¶ç«¯è»Ÿé«” - - - Importing blocks from disk... - 正在從ç£ç¢ŸåŒ¯å…¥å€å¡Šè³‡æ–™... - - - Reindexing blocks on disk... - 正在為ç£ç¢Ÿè£¡çš„å€å¡Šé‡å»ºç´¢å¼•... - - - Send coins to a Bitcoin address - 付錢給一個ä½å…ƒå¹£ä½å€ - - - Backup wallet to another location - 把錢包備份到其它地方 - - - Change the passphrase used for wallet encryption - 改變錢包加密用的密碼 - - - &Debug window - 除錯視窗 - - - Open debugging and diagnostic console - é–‹å•“é™¤éŒ¯å’Œè¨ºæ–·ä¸»æŽ§å° - - - &Verify message... - 驗證訊æ¯... - - - Bitcoin - ä½å…ƒå¹£ - - - Wallet - 錢包 - - - &Send - å·²å‚³é€ - - - &Receive - 已接收 - - - Show information about Bitcoin Core - 顯示ä½å…ƒå¹£æ ¸å¿ƒçš„相關資訊 - - - &Show / Hide - é¡¯ç¤ºæˆ–éš±è— - - - Show or hide the main Window - 顯示或隱è—主視窗 - - - Encrypt the private keys that belong to your wallet - 把錢包中的密鑰加密 - - - Sign messages with your Bitcoin addresses to prove you own them - 用ä½å…ƒå¹£ä½å€ç°½ç½²è¨Šæ¯ä¾†è­‰æ˜Žä½å€æ˜¯ä½ çš„ - - - Verify messages to ensure they were signed with specified Bitcoin addresses - é©—è­‰è¨Šæ¯æ˜¯ç”¨ä¾†ç¢ºå®šè¨Šæ¯æ˜¯ç”¨æŒ‡å®šçš„ä½å…ƒå¹£ä½å€ç°½ç½²çš„ - - - &File - 檔案 - - - &Settings - 設定 - - - &Help - 說明 - - - Tabs toolbar - 分é å·¥å…·åˆ— - - - Bitcoin Core - ä½å…ƒå¹£æ ¸å¿ƒ - - - Request payments (generates QR codes and bitcoin: URIs) - è¦æ±‚付款(產生 QR Code å’Œä½å…ƒå¹£ä»˜æ¬¾å”è­°çš„ URI) - - - &About Bitcoin Core - 關於ä½å…ƒå¹£æ ¸å¿ƒ - - - Modify configuration options for Bitcoin Core - 修改ä½å…ƒå¹£æ ¸å¿ƒçš„設定é¸é … - - - Show the list of used sending addresses and labels - 顯示已使用éŽçš„付款ä½å€å’Œæ¨™è¨˜çš„æ¸…å–® - - - Show the list of used receiving addresses and labels - 顯示已使用éŽçš„æ”¶æ¬¾ä½å€å’Œæ¨™è¨˜çš„æ¸…å–® - - - Open a bitcoin: URI or payment request - é–‹å•“ bitcoin å”è­°çš„ URI æˆ–ä»˜æ¬¾è¦æ±‚ - - - &Command-line options - 命令列é¸é … - - - Show the Bitcoin Core help message to get a list with possible Bitcoin command-line options - 顯示ä½å…ƒå¹£æ ¸å¿ƒçš„說明訊æ¯ï¼Œä¾†å–å¾—å¯ç”¨å‘½ä»¤åˆ—é¸é …的列表 - - - %n active connection(s) to Bitcoin network - %n 個é‹ä½œä¸­çš„ä½å…ƒå¹£ç¶²è·¯é€£ç·š - - - No block source available... - 沒有å¯ç”¨çš„å€å¡Šä¾†æº... - - - Processed %n block(s) of transaction history. - 已經處ç†äº† %n 個å€å¡Šçš„交易紀錄。 - - - %n hour(s) - %n 個尿™‚ - - - %n day(s) - %n 天 - - - %n week(s) - %n 個星期 - - - %1 and %2 - %1åˆ %2 - - - %n year(s) - %n å¹´ - - - %1 behind - è½å¾Œ %1 - - - Last received block was generated %1 ago. - 最近收到的å€å¡Šæ˜¯åœ¨ %1 以å‰ç”Ÿå‡ºä¾†çš„。 - - - Transactions after this will not yet be visible. - 暫時會看ä¸åˆ°åœ¨é€™ä¹‹å¾Œçš„交易。 - - - Error - 錯誤 - - - Warning - 警告 - - - Information - 資訊 - - - Up to date - 最新狀態 - - - Catching up... - 正在趕進度... - - - Date: %1 - - 日期: %1 - - - - Amount: %1 - - 金é¡: %1 - - - - Type: %1 - - 種類: %1 - - - - Label: %1 - - 標記: %1 - - - - Address: %1 - - ä½å€: %1 - - - - Sent transaction - 付款交易 - - - Incoming transaction - 收款交易 - - - Wallet is <b>encrypted</b> and currently <b>unlocked</b> - 錢包<b>已加密</b>並且<b>解鎖中</b> - - - Wallet is <b>encrypted</b> and currently <b>locked</b> - 錢包<b>已加密</b>並且<b>上鎖中</b> - - - - ClientModel - - Network Alert - 網路警報 - - - - CoinControlDialog - - Coin Selection - 鏿“‡éŒ¢å¹£ - - - Quantity: - 數目: - - - Bytes: - ä½å…ƒçµ„數: - - - Amount: - 金é¡: - - - Priority: - 優先度: - - - Fee: - 手續費: - - - Dust: - 零散錢: - - - After Fee: - 計費後金é¡: - - - Change: - 找零金é¡: - - - (un)select all - 免鏿ˆ–å…¨ä¸é¸ - - - Tree mode - æ¨¹ç‹€æ¨¡å¼ - - - List mode - åˆ—è¡¨æ¨¡å¼ - - - Amount - é‡‘é¡ - - - Received with label - 收款標記 - - - Received with address - 收款ä½å€ - - - Date - 日期 - - - Confirmations - ç¢ºèªæ¬¡æ•¸ - - - Confirmed - å·²ç¢ºèª - - - Priority - 優先度 - - - Copy address - 複製ä½å€ - - - Copy label - 複製標記 - - - Copy amount - è¤‡è£½é‡‘é¡ - - - Copy transaction ID - 複製交易識別碼 - - - Lock unspent - 鎖定ä¸ç”¨ - - - Unlock unspent - 解鎖å¯ç”¨ - - - Copy quantity - 複製數目 - - - Copy fee - 複製手續費 - - - Copy after fee - è¤‡è£½è¨ˆè²»å¾Œé‡‘é¡ - - - Copy bytes - 複製ä½å…ƒçµ„數 - - - Copy priority - 複製優先度 - - - Copy dust - è¤‡è£½é›¶æ•£é‡‘é¡ - - - Copy change - è¤‡è£½æ‰¾é›¶é‡‘é¡ - - - highest - 最高 - - - higher - 很高 - - - high - 高 - - - medium-high - 中高 - - - medium - 中等 - - - low-medium - 中低 - - - low - 低 - - - lower - 很低 - - - lowest - 最低 - - - (%1 locked) - (鎖定 %1 æžš) - - - none - ç„¡ - - - This label turns red if the transaction size is greater than 1000 bytes. - 當交易大å°å¤§æ–¼ 1000 ä½å…ƒçµ„時,文字會變紅色。 - - - This label turns red if the priority is smaller than "medium". - ç•¶å„ªå…ˆåº¦ä½Žæ–¼ã€Œä¸­ç­‰ã€æ™‚,文字會變紅色。 - - - This label turns red if any recipient receives an amount smaller than %1. - 當任何一個收款金é¡å°æ–¼ %1 時,文字會變紅色。 - - - Can vary +/- %1 satoshi(s) per input. - æ¯çµ„輸入å¯èƒ½æœ‰ +/- %1 個 satoshi 的誤差。 - - - yes - 是 - - - no - å¦ - - - This means a fee of at least %1 per kB is required. - 表示æ¯ä¸€åƒä½å…ƒçµ„(kB)需è¦è‡³å°‘ %1 的手續費。 - - - Can vary +/- 1 byte per input. - æ¯çµ„輸入å¯èƒ½æœƒèª¤å·®å¤šæˆ–å°‘ 1 個ä½å…ƒçµ„。 - - - Transactions with higher priority are more likely to get included into a block. - 優先度較高的交易比較有å¯èƒ½è¢«æŽ¥å—放進å€å¡Šä¸­ã€‚ - - - (no label) - (無標記) - - - change from %1 (%2) - æ‰¾é›¶å‰æ˜¯ %1 (%2) - - - (change) - (找零) - - - - EditAddressDialog - - Edit Address - 編輯ä½å€ - - - &Label - 標記 - - - The label associated with this address list entry - 跟這個ä½å€ç°¿é …目關è¯çš„æ¨™è¨˜ - - - The address associated with this address list entry. This can only be modified for sending addresses. - 跟這個ä½å€ç°¿é …目關è¯çš„ä½å€ã€‚åªæœ‰ä»˜æ¬¾ä½å€èƒ½è¢«ä¿®æ”¹ã€‚ - - - &Address - ä½å€ - - - New receiving address - 造新的收款ä½å€ - - - New sending address - 造新的付款ä½å€ - - - Edit receiving address - 編輯收款ä½å€ - - - Edit sending address - 編輯付款ä½å€ - - - The entered address "%1" is already in the address book. - 輸入的ä½å€ %1 在ä½å€ç°¿ä¸­å·²ç¶“有了。 - - - The entered address "%1" is not a valid Bitcoin address. - 輸入的ä½å€ %1 䏦䏿˜¯æœ‰æ•ˆçš„ä½å…ƒå¹£ä½å€ã€‚ - - - Could not unlock wallet. - 沒辦法把錢包解鎖。 - - - New key generation failed. - 產生新的密鑰失敗了。 - - - - FreespaceChecker - - A new data directory will be created. - å°±è¦ç”¢ç”Ÿæ–°çš„資料目錄。 - - - name - å稱 - - - Directory already exists. Add %1 if you intend to create a new directory here. - 已經有這個目錄了。如果你è¦åœ¨è£¡é¢é€ å‡ºæ–°çš„目錄的話,請加上 %1. - - - Path already exists, and is not a directory. - å·²ç¶“æœ‰æŒ‡å®šçš„è·¯å¾‘äº†ï¼Œä¸¦ä¸”ä¸æ˜¯ä¸€å€‹ç›®éŒ„。 - - - Cannot create data directory here. - 沒辦法在這裡造出資料目錄。 - - - - HelpMessageDialog - - Bitcoin Core - ä½å…ƒå¹£æ ¸å¿ƒ - - - version - 版本 - - - (%1-bit) - (%1 ä½å…ƒ) - - - About Bitcoin Core - 關於ä½å…ƒå¹£æ ¸å¿ƒ - - - Command-line options - 命令列é¸é … - - - Usage: - 用法: - - - command-line options - 命令列é¸é … - - - - Intro - - Welcome - 歡迎 - - - Welcome to Bitcoin Core. - 歡迎使用ä½å…ƒå¹£æ ¸å¿ƒ - - - As this is the first time the program is launched, you can choose where Bitcoin Core will store its data. - 因為這是程å¼ç¬¬ä¸€æ¬¡å•“動,你å¯ä»¥é¸æ“‡ä½å…ƒå¹£æ ¸å¿ƒå„²å­˜è³‡æ–™çš„地方。 - - - Bitcoin Core will download and store a copy of the Bitcoin block chain. At least %1GB of data will be stored in this directory, and it will grow over time. The wallet will also be stored in this directory. - ä½å…ƒå¹£æ ¸å¿ƒæœƒä¸‹è¼‰ä¸¦å„²å­˜ä¸€ä»½ä½å…ƒå¹£å€å¡Šéˆçš„æ‹·è²ã€‚至少有 %1GB 的資料會儲存到這個目錄中,並且還會æŒçºŒå¢žé•·ã€‚å¦å¤–錢包資料也會儲存在這個目錄。 - - - Use the default data directory - 使用é è¨­çš„資料目錄 - - - Use a custom data directory: - 使用自定的資料目錄: - - - Bitcoin Core - ä½å…ƒå¹£æ ¸å¿ƒ - - - Error: Specified data directory "%1" cannot be created. - 錯誤: 無法新增指定的資料目錄: %1 - - - Error - 錯誤 - - - %n GB of free space available - å¯ç”¨ç©ºé–“å°šå­˜ %n GB - - - (of %n GB needed) - (éœ€è¦ %n GB) - - - - OpenURIDialog - - Open URI - é–‹å•“ URI - - - Open payment request from URI or file - 從 URI æˆ–æª”æ¡ˆé–‹å•Ÿä»˜æ¬¾è¦æ±‚ - - - URI: - URI: - - - Select payment request file - 鏿“‡ä»˜æ¬¾è¦æ±‚資料檔 - - - Select payment request file to open - 鏿“‡è¦é–‹å•Ÿçš„ä»˜æ¬¾è¦æ±‚資料檔 - - - - OptionsDialog - - Options - é¸é … - - - &Main - ä¸»è¦ - - - Size of &database cache - 資料庫快å–å¤§å° - - - MB - MB (百è¬ä½å…ƒçµ„) - - - Number of script &verification threads - 指令碼驗證執行緒數目 - - - Accept connections from outside - 接å—外來連線 - - - Allow incoming connections - 接å—外來連線 - - - IP address of the proxy (e.g. IPv4: 127.0.0.1 / IPv6: ::1) - 代ç†ä¼ºæœå™¨çš„網際網路ä½å€(åƒæ˜¯ IPv4 çš„ 127.0.0.1 或 IPv6 çš„ ::1) - - - Minimize instead of exit the application when the window is closed. When this option is enabled, the application will be closed only after selecting Exit in the menu. - 當視窗關閉時,把應用程å¼ç¸®åˆ°æœ€å°ï¼Œè€Œä¸æ˜¯çµæŸã€‚當勾é¸é€™å€‹é¸é …時,åªèƒ½å¤ ç”¨é¸å–®ä¸­çš„çµæŸä¾†é—œæŽ‰æ‡‰ç”¨ç¨‹å¼ã€‚ - - - The user interface language can be set here. This setting will take effect after restarting Bitcoin Core. - å¯ä»¥åœ¨é€™è£¡è¨­å®šä½¿ç”¨è€…介é¢çš„語言。這個設定在é‡å•“ä½å…ƒå¹£æ ¸å¿ƒå¾Œæ‰æœƒç”Ÿæ•ˆã€‚ - - - 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 |. - 在交易é ç±¤çš„æƒ…境é¸å–®å‡ºç¾çš„第三方(比如說å€å¡ŠæŽ¢ç´¢ç¶²ç«™)ç¶²å€é€£çµã€‚ç¶²å€ä¸­çš„ %s 會被å–代為交易的雜湊值。å¯ä»¥ç”¨ç›´ç·šç¬¦è™Ÿ | 來分隔多個連çµã€‚ - - - Third party transaction URLs - 交易的第三方網å€é€£çµ - - - Active command-line options that override above options: - 從命令列å–代掉以上設定的é¸é …有: - - - Reset all client options to default. - é‡è¨­æ‰€æœ‰å®¢æˆ¶ç«¯è»Ÿé«”é¸é …æˆé è¨­å€¼ã€‚ - - - &Reset Options - é‡è¨­é¸é … - - - &Network - 網路 - - - Automatically start Bitcoin Core after logging in to the system. - 在登入系統後自動啓動ä½å…ƒå¹£æ ¸å¿ƒã€‚ - - - &Start Bitcoin Core on system login - 系統登入時啟動ä½å…ƒå¹£æ ¸å¿ƒ - - - (0 = auto, <0 = leave that many cores free) - (0 表示程å¼è‡ªå‹•æ±ºå®šï¼Œå°æ–¼ 0 表示ä¿ç•™è™•ç†å™¨æ ¸å¿ƒä¸ç”¨çš„æ•¸ç›®) - - - W&allet - 錢包 - - - Expert - 專家 - - - Enable coin &control features - 開啟錢幣控制功能 - - - 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. - 如果你關掉「å¯ä»¥èŠ±é‚„æ²’ç¢ºèªçš„零錢ã€ï¼Œé‚£éº¼äº¤æ˜“中找零的零錢就必須è¦ç­‰äº¤æ˜“至少有一次確èªå¾Œï¼Œæ‰èƒ½å¤ ä½¿ç”¨ã€‚這也會影響餘é¡çš„計算方å¼ã€‚ - - - &Spend unconfirmed change - å¯ä»¥èŠ±é‚„æ²’ç¢ºèªçš„零錢 - - - Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled. - 自動在路由器上開放ä½å…ƒå¹£çš„å®¢æˆ¶ç«¯é€šè¨ŠåŸ ã€‚åªæœ‰åœ¨ä½ çš„路由器支æ´ä¸”é–‹å•“ã€Œé€šç”¨å³æ’å³ç”¨ã€å”定(UPnP)æ™‚æ‰æœ‰ä½œç”¨ã€‚ - - - Map port using &UPnP - 用 &UPnP è¨­å®šé€šè¨ŠåŸ å°æ‡‰ - - - Connect to the Bitcoin network through a SOCKS5 proxy. - é€éŽ SOCKS5 代ç†ä¼ºæœå™¨ä¾†é€£ç·šåˆ°ä½å…ƒå¹£ç¶²è·¯ã€‚ - - - &Connect through SOCKS5 proxy (default proxy): - é€éŽ SOCKS5 代ç†ä¼ºæœå™¨é€£ç·š(é è¨­ä»£ç†ä¼ºæœå™¨): - - - Proxy &IP: - 代ç†ä½å€: - - - &Port: - 埠號: - - - Port of the proxy (e.g. 9050) - 代ç†ä¼ºæœå™¨çš„通訊埠(åƒæ˜¯ 9050) - - - &Window - 視窗 - - - Show only a tray icon after minimizing the window. - 視窗縮到最å°å¾Œåªåœ¨é€šçŸ¥å€åŸŸé¡¯ç¤ºåœ–示。 - - - &Minimize to the tray instead of the taskbar - 縮到最å°åˆ°é€šçŸ¥å€åŸŸè€Œä¸æ˜¯å·¥ä½œåˆ— - - - M&inimize on close - é—œé–‰æ™‚ç¸®åˆ°æœ€å° - - - &Display - 顯示 - - - User Interface &language: - 使用界é¢èªžè¨€: - - - &Unit to show amounts in: - 金é¡é¡¯ç¤ºå–®ä½: - - - Choose the default subdivision unit to show in the interface and when sending coins. - 鏿“‡æ“作界é¢å’Œä»˜æ¬¾æ™‚,é è¨­é¡¯ç¤ºé‡‘é¡çš„細分單ä½ã€‚ - - - Whether to show coin control features or not. - 是å¦è¦é¡¯ç¤ºéŒ¢å¹£æŽ§åˆ¶åŠŸèƒ½ã€‚ - - - &OK - 好 - - - &Cancel - å–æ¶ˆ - - - default - é è¨­å€¼ - - - none - ç„¡ - - - Confirm options reset - 確èªé‡è¨­é¸é … - - - Client restart required to activate changes. - 需è¦é‡æ–°å•Ÿå‹•客戶端軟體來讓改變生效。 - - - Client will be shut down. Do you want to proceed? - 客戶端軟體就è¦é—œæŽ‰äº†ã€‚繼續åšä¸‹åŽ»å—Žï¼Ÿ - - - This change would require a client restart. - 這項改變需è¦é‡æ–°å•Ÿå‹•客戶端軟體。 - - - The supplied proxy address is invalid. - æä¾›çš„代ç†ä¼ºæœå™¨ä½å€ç„¡æ•ˆã€‚ - - - - OverviewPage - - Form - 表單 - - - The displayed information may be out of date. Your wallet automatically synchronizes with the Bitcoin network after a connection is established, but this process has not completed yet. - 顯示的資訊å¯èƒ½æ˜¯éŽæœŸçš„。跟ä½å…ƒå¹£ç¶²è·¯çš„é€£ç·šå»ºç«‹å¾Œï¼Œä½ çš„éŒ¢åŒ…æœƒè‡ªå‹•å’Œç¶²è·¯åŒæ­¥ï¼Œä½†æ˜¯é€™å€‹æ­¥é©Ÿé‚„沒完æˆã€‚ - - - Watch-only: - åªèƒ½çœ‹: - - - Available: - å¯ç”¨é‡‘é¡: - - - Your current spendable balance - ç›®å‰å¯ç”¨é¤˜é¡ - - - Pending: - 未定金é¡: - - - Total of transactions that have yet to be confirmed, and do not yet count toward the spendable balance - 還沒被確èªçš„交易的總金é¡ï¼Œå¯ç”¨é¤˜é¡ä¸åŒ…å«é€™äº›é‡‘é¡ - - - Immature: - 未æˆç†Ÿé‡‘é¡: - - - Mined balance that has not yet matured - é‚„æ²’æˆç†Ÿçš„é–‹æŽ¡é‡‘é¡ - - - Balances - é¤˜é¡ - - - Total: - 總金é¡: - - - Your current total balance - ç›®å‰å…¨éƒ¨é¤˜é¡ - - - Your current balance in watch-only addresses - 所有åªèƒ½çœ‹ä½å€çš„ç›®å‰é¤˜é¡ - - - Spendable: - 坿”¯é…: - - - Recent transactions - 最近的交易 - - - Unconfirmed transactions to watch-only addresses - 所有åªèƒ½çœ‹ä½å€é‚„沒確èªçš„交易 - - - Mined balance in watch-only addresses that has not yet matured - 所有åªèƒ½çœ‹ä½å€é‚„æ²’æˆç†Ÿçš„é–‹æŽ¡é‡‘é¡ - - - Current total balance in watch-only addresses - 所有åªèƒ½çœ‹ä½å€çš„ç›®å‰å…¨éƒ¨é¤˜é¡ - - - - PaymentServer - - URI handling - URI è™•ç† - - - Invalid payment address %1 - 無效的付款ä½å€ %1 - - - Payment request rejected - ä»˜æ¬¾çš„è¦æ±‚被拒絕了 - - - Payment request network doesn't match client network. - ä»˜æ¬¾è¦æ±‚的網路類型跟客戶端ä¸ç¬¦ã€‚ - - - Payment request is not initialized. - ä»˜æ¬¾çš„è¦æ±‚沒有完æˆåˆå§‹åŒ–。 - - - Requested payment amount of %1 is too small (considered dust). - è¦æ±‚ä»˜æ¬¾çš„é‡‘é¡ %1 太少(會被網路èªç‚ºæ˜¯æ²’å¿…è¦çš„零散錢)。 - - - Payment request error - è¦æ±‚付款時發生錯誤 - - - Cannot start bitcoin: click-to-pay handler - 沒辦法啟動 bitcoin å”議的按就付處ç†å™¨ - - - Payment request fetch URL is invalid: %1 - å–å¾—ä»˜æ¬¾è¦æ±‚çš„ URL 無效: %1 - - - URI cannot be parsed! This can be caused by an invalid Bitcoin address or malformed URI parameters. - æ²’è¾¦æ³•è§£æž URI ä½å€ï¼å¯èƒ½æ˜¯å› ç‚ºä½å…ƒå¹£ä½å€ç„¡æ•ˆï¼Œæˆ–是 URI åƒæ•¸æ ¼å¼éŒ¯èª¤ã€‚ - - - Payment request file handling - 處ç†ä»˜æ¬¾è¦æ±‚檔案 - - - Payment request file cannot be read! This can be caused by an invalid payment request file. - 沒辦法讀å–ä»˜æ¬¾è¦æ±‚檔案ï¼å¯èƒ½æ˜¯ç„¡æ•ˆçš„æª”案造æˆçš„。 - - - Payment request expired. - ä»˜æ¬¾çš„è¦æ±‚éŽæœŸäº†ã€‚ - - - Unverified payment requests to custom payment scripts are unsupported. - 䏿”¯æ´å«æœ‰è‡ªè¨‚付款指令碼,且沒驗證éŽçš„ä»˜æ¬¾è¦æ±‚。 - - - Invalid payment request. - ä»˜æ¬¾çš„è¦æ±‚無效。 - - - Refund from %1 - 來自 %1 的退款 - - - Payment request %1 is too large (%2 bytes, allowed %3 bytes). - ä»˜æ¬¾è¦æ±‚ %1 éŽå¤§ (%2 ä½å…ƒçµ„, ä¸Šé™ %3 ä½å…ƒçµ„). - - - Payment request DoS protection - 支付請求的分佈å¼é˜»æ–·æœå‹™æ”»æ“ŠDoSä¿è­· - - - Error communicating with %1: %2 - è·Ÿ %1 通訊時發生錯誤: %2 - - - Payment request cannot be parsed! - 沒辦法解æžä»˜æ¬¾è¦æ±‚å…§å®¹ï¼ - - - Bad response from server %1 - 伺æœå™¨ %1 的回應有誤 - - - Payment acknowledged - 已確èªä»˜æ¬¾ - - - Network request error - ç™¼å‡ºè¦æ±‚時發生網路錯誤 - - - - PeerTableModel - - User Agent - ä½¿ç”¨è€…ä»£ç† - - - Node/Service - 節點/æœå‹™ - - - Ping Time - Ping 時間 - - - - QObject - - Amount - é‡‘é¡ - - - Enter a Bitcoin address (e.g. %1) - 輸入ä½å…ƒå¹£ä½å€ (比如說 %1) - - - %1 d - %1 天 - - - %1 h - %1 å°æ™‚ - - - %1 m - %1 åˆ†é˜ - - - %1 s - %1 ç§’ - - - None - ç„¡ - - - N/A - 未知 - - - %1 ms - %1 毫秒 - - - - QRImageWidget - - &Save Image... - 儲存圖片... - - - &Copy Image - 複製圖片 - - - Save QR Code - 儲存 QR Code - - - PNG Image (*.png) - PNG 圖檔(*.png) - - - - RPCConsole - - Client name - 客戶端軟體å稱 - - - N/A - 未知 - - - Client version - 客戶端軟體版本 - - - &Information - 資訊 - - - Debug window - 除錯視窗 - - - General - 普通 - - - Using OpenSSL version - 使用的 OpenSSL 版本 - - - Using BerkeleyDB version - 使用 BerkeleyDB 版本 - - - Startup time - 啓動時間 - - - Network - 網路 - - - Name - å稱 - - - Number of connections - 連線數 - - - Block chain - å€å¡Šéˆ - - - Current number of blocks - ç›®å‰å€å¡Šæ•¸ - - - Open the Bitcoin Core debug log file from the current data directory. This can take a few seconds for large log files. - 從目å‰çš„資料目錄下開啓ä½å…ƒå¹£æ ¸å¿ƒçš„除錯紀錄檔。當紀錄檔很大時,å¯èƒ½æœƒèŠ±å¥½å¹¾ç§’çš„æ™‚é–“ã€‚ - - - Received - 收款 - - - Sent - 付款 - - - &Peers - 節點 - - - Select a peer to view detailed information. - é¸ä¸€å€‹ç¯€é»žä¾†çœ‹è©³ç´°è³‡è¨Š - - - Direction - æ–¹å‘ - - - Version - 版本 - - - User Agent - ä½¿ç”¨è€…ä»£ç† - - - Services - æœå‹™ - - - Starting Height - 起始高度 - - - Sync Height - åŒæ­¥é«˜åº¦ - - - Ban Score - 惡劣分數 - - - Connection Time - 連線時間 - - - Last Send - 最近é€å‡º - - - Last Receive - 最近收到 - - - Bytes Sent - é€å‡ºä½å…ƒçµ„ - - - Bytes Received - 收到ä½å…ƒçµ„ - - - Ping Time - Ping 時間 - - - Time Offset - 時間差 - - - Last block time - 最近å€å¡Šæ™‚é–“ - - - &Open - é–‹å•“ - - - &Console - ä¸»æŽ§å° - - - &Network Traffic - 網路æµé‡ - - - &Clear - 清掉 - - - Totals - 總計 - - - In: - 輸入: - - - Out: - 輸出: - - - Build date - 建置日期 - - - Debug log file - 除錯紀錄檔 - - - Clear console - æ¸…ä¸»æŽ§å° - - - Welcome to the Bitcoin Core RPC console. - 歡迎使用ä½å…ƒå¹£æ ¸å¿ƒ RPC 主控å°ã€‚ - - - Use up and down arrows to navigate history, and <b>Ctrl-L</b> to clear screen. - 請用上下游標éµä¾†ç€è¦½å…ˆå‰æŒ‡ä»¤çš„紀錄,並用 <b>Ctrl-L</b> 來清畫é¢ã€‚ - - - Type <b>help</b> for an overview of available commands. - 請打 <b>help</b> 來看å¯ç”¨æŒ‡ä»¤çš„簡介。 - - - %1 B - %1 B (ä½å…ƒçµ„) - - - %1 KB - %1 KB (åƒä½å…ƒçµ„) - - - %1 MB - %1 MB (百è¬ä½å…ƒçµ„) - - - %1 GB - %1 GB (åå„„ä½å…ƒçµ„) - - - via %1 - ç¶“ç”± %1 - - - never - æ²’æœ‰éŽ - - - Inbound - 進來 - - - Outbound - 出去 - - - Unknown - 䏿˜Ž - - - Fetching... - 正在擷å–中... - - - - ReceiveCoinsDialog - - &Amount: - 金é¡: - - - &Label: - 標記: - - - &Message: - 訊æ¯: - - - Reuse one of the previously used receiving addresses. Reusing addresses has security and privacy issues. Do not use this unless re-generating a payment request made before. - é‡è¤‡ä½¿ç”¨å…ˆå‰ä½¿ç”¨éŽçš„æ”¶æ¬¾ä½å€ã€‚é‡è¤‡ä½¿ç”¨ä½å€æœƒæœ‰å®‰å…¨å’Œéš±ç§æ–¹é¢çš„å•é¡Œã€‚é™¤éžæ˜¯è¦é‡æ–°ç”¢ç”Ÿå…ˆå‰çš„ä»˜æ¬¾è¦æ±‚,ä¸ç„¶è«‹ä¸è¦ä½¿ç”¨ã€‚ - - - R&euse an existing receiving address (not recommended) - é‡è¤‡ä½¿ç”¨ç¾æœ‰çš„æ”¶æ¬¾ä½å€(ä¸å»ºè­°) - - - An optional message to attach to the payment request, which will be displayed when the request is opened. Note: The message will not be sent with the payment over the Bitcoin network. - é™„åŠ åœ¨ä»˜æ¬¾è¦æ±‚中的訊æ¯ï¼Œå¯ä»¥ä¸å¡«ï¼Œæ‰“é–‹è¦æ±‚內容時會顯示。注æ„: 這個訊æ¯ä¸æœƒéš¨è‘—付款é€åˆ°ä½å…ƒå¹£ç¶²è·¯ä¸Šã€‚ - - - An optional label to associate with the new receiving address. - 跟新收款ä½å€é—œè¯çš„æ¨™è¨˜ï¼Œå¯ä»¥ä¸å¡«ã€‚ - - - Use this form to request payments. All fields are <b>optional</b>. - è«‹ç”¨é€™ä»½è¡¨å–®ä¾†è¦æ±‚付款。所有欄ä½éƒ½<b>å¯ä»¥ä¸å¡«</b>。 - - - An optional amount to request. Leave this empty or zero to not request a specific amount. - è¦æ±‚付款的金é¡ï¼Œå¯ä»¥ä¸å¡«ã€‚ä¸ç¢ºå®šé‡‘顿™‚å¯ä»¥ç•™ç™½æˆ–是填零。 - - - Clear all fields of the form. - æŠŠè¡¨å–®ä¸­çš„æ‰€æœ‰æ¬„ä½æ¸…空。 - - - Clear - 清空 - - - Requested payments history - å…ˆå‰è¦æ±‚付款的記錄 - - - &Request payment - è¦æ±‚付款 - - - Show the selected request (does the same as double clicking an entry) - é¡¯ç¤ºé¸æ“‡çš„è¦æ±‚內容(效果跟按它兩下一樣) - - - Show - 顯示 - - - Remove the selected entries from the list - å¾žåˆ—è¡¨ä¸­åˆªæŽ‰é¸æ“‡çš„é …ç›® - - - Remove - 刪掉 - - - Copy label - 複製標記 - - - Copy message - è¤‡è£½è¨Šæ¯ - - - Copy amount - è¤‡è£½é‡‘é¡ - - - - ReceiveRequestDialog - - QR Code - QR Code - - - Copy &URI - 複製 URI - - - Copy &Address - 複製ä½å€ - - - &Save Image... - 儲存圖片... - - - Request payment to %1 - 付款給 %1 çš„è¦æ±‚ - - - Payment information - 付款資訊 - - - URI - URI - - - Address - ä½å€ - - - Amount - é‡‘é¡ - - - Label - 標記 - - - Message - è¨Šæ¯ - - - Resulting URI too long, try to reduce the text for label / message. - 產生的 URI éŽé•·ï¼Œè«‹è©¦è‘—縮短標記或訊æ¯çš„æ–‡å­—內容。 - - - Error encoding URI into QR Code. - 把 URI ç·¨ç¢¼æˆ QR Code 時發生錯誤。 - - - - RecentRequestsTableModel - - Date - 日期 - - - Label - 標記 - - - Message - è¨Šæ¯ - - - Amount - é‡‘é¡ - - - (no label) - (無標記) - - - (no message) - (無訊æ¯) - - - (no amount) - (無金é¡) - - - - SendCoinsDialog - - Send Coins - 付款 - - - Coin Control Features - 錢幣控制功能 - - - Inputs... - 輸入... - - - automatically selected - è‡ªå‹•é¸æ“‡ - - - Insufficient funds! - 累計金é¡ä¸è¶³ï¼ - - - Quantity: - 數目: - - - Bytes: - ä½å…ƒçµ„數: - - - Amount: - 金é¡: - - - Priority: - 優先度: - - - Fee: - 手續費: - - - After Fee: - 計費後金é¡: - - - Change: - 找零金é¡: - - - If this is activated, but the change address is empty or invalid, change will be sent to a newly generated address. - 如果這項有打開,但是找零ä½å€æ˜¯ç©ºçš„æˆ–無效,那麼找零的錢會é€åˆ°ä¸€å€‹æ–°ç”¢ç”Ÿçš„ä½å€åŽ»ã€‚ - - - Custom change address - 自定找零ä½å€ - - - Transaction Fee: - 交易手續費: - - - Choose... - é¸é …... - - - collapse fee-settings - 展開手續費設定 - - - per kilobyte - æ¯åƒä½å…ƒçµ„ - - - 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. - 如果自訂手續費設定為 1000 satoshi, 而交易資料大å°åªæœ‰ 250 個ä½å…ƒçµ„çš„è©±ï¼Œé‚£éº½é¸æ“‡ã€Œæ¯åƒä½å…ƒçµ„ã€å°±åªæœƒä»˜ 250 satoshi 的手續費,æ›åšé¸ã€Œç¸½å…±è‡³å°‘ã€å°±æœƒä»˜ 1000 satoshi. 但是如果交易資料大å°è¶…éŽä¸€åƒå€‹ä½å…ƒçµ„,那麽兩者都是æ¯åƒä½å…ƒçµ„的費用。 - - - Hide - éš±è— - - - total at least - 總共最少 - - - 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. - 當交易é‡å°‘æ–¼å€å¡Šå¯å®¹ç´çš„空間時,åªä»˜æœ€ä½Žæ‰‹çºŒè²»ä¸æœƒæœ‰ä»€éº½å•題。但是當交易é‡çš„需求æˆé•·åˆ°è¶…éŽæ•´é«”網路å¯ä»¥è™•ç†çš„釿™‚,å¯èƒ½æœƒé€ æˆä¸€ç­†ä¸€ç›´ä¸æœƒè¢«ç¢ºèªçš„交易。 - - - (read the tooltip) - (請看æç¤º) - - - Recommended: - 建議值: - - - Custom: - 自訂: - - - (Smart fee not initialized yet. This usually takes a few blocks...) - (手續費智慧演算法還沒準備好。通常都è¦ç­‰å¹¾å€‹å€å¡Šæ‰è¡Œ...) - - - Confirmation time: - ç¢ºèªæ™‚é–“: - - - normal - 正常 - - - fast - 快速 - - - Send as zero-fee transaction if possible - 盡å¯èƒ½é€ä¸ç”¨ä»˜æ‰‹çºŒè²»çš„交易 - - - (confirmation may take longer) - (ç¢ºèªæ™‚é–“å¯èƒ½æ‹‰é•·) - - - Send to multiple recipients at once - 一次付給多個收款人 - - - Add &Recipient - 增加收款人 - - - Clear all fields of the form. - æŠŠè¡¨å–®ä¸­çš„æ‰€æœ‰æ¬„ä½æ¸…空。 - - - Dust: - 零散錢: - - - Clear &All - 全部清掉 - - - Balance: - 餘é¡: - - - Confirm the send action - 確èªä»˜æ¬¾å‹•作 - - - S&end - 付款 - - - Confirm send coins - 確èªä»˜æ¬¾é‡‘é¡ - - - %1 to %2 - %1 給 %2 - - - Copy quantity - 複製數目 - - - Copy amount - è¤‡è£½é‡‘é¡ - - - Copy fee - 複製手續費 - - - Copy after fee - è¤‡è£½è¨ˆè²»å¾Œé‡‘é¡ - - - Copy bytes - 複製ä½å…ƒçµ„數 - - - Copy priority - 複製優先度 - - - Copy change - è¤‡è£½æ‰¾é›¶é‡‘é¡ - - - or - 或 - - - The amount to pay must be larger than 0. - 付款金é¡å¿…須大於零。 - - - The amount exceeds your balance. - 金é¡è¶…éŽé¤˜é¡äº†ã€‚ - - - The total exceeds your balance when the %1 transaction fee is included. - åŒ…å« %1 的交易手續費後,總金é¡è¶…éŽä½ çš„餘é¡äº†ã€‚ - - - Transaction creation failed! - è£½é€ äº¤æ˜“å¤±æ•—äº†ï¼ - - - 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. - äº¤æ˜“è¢«æ‹’çµ•äº†ï¼æœ‰æ™‚候會發生這種錯誤,是因為你錢包中的一些錢已經被花掉了。比如說你複製了錢包檔 wallet.dat, 然後用複製的錢包花掉了錢,你ç¾åœ¨æ‰€ç”¨çš„åŽŸä¾†çš„éŒ¢åŒ…ä¸­ï¼Œå»æ²’有那筆錢已經花掉的紀錄。 - - - A fee higher than %1 is considered an absurdly high fee. - 高於 %1 的手續費會被èªç‚ºæ˜¯ä¸åˆç†ã€‚ - - - Payment request expired. - ä»˜æ¬¾çš„è¦æ±‚éŽæœŸäº†ã€‚ - - - Pay only the minimum fee of %1 - åªä»˜æœ€ä½Žæ‰‹çºŒè²» %1 - - - Total Amount %1<span style='font-size:10pt;font-weight:normal;'><br />(=%2)</span> - ç¸½é‡‘é¡ %1<span style='font-size:10pt;font-weight:normal;'><br />(=%2)</span> - - - The recipient address is not valid. Please recheck. - 收款ä½å€ç„¡æ•ˆã€‚è«‹å†æª¢æŸ¥çœ‹çœ‹ã€‚ - - - Duplicate address found: addresses should only be used once each. - ç™¼ç¾æœ‰é‡è¤‡çš„ä½å€: æ¯å€‹ä½å€åªèƒ½å‡ºç¾ä¸€æ¬¡ã€‚ - - - Warning: Invalid Bitcoin address - 警告: ä½å…ƒå¹£ä½å€ç„¡æ•ˆ - - - (no label) - (無標記) - - - Warning: Unknown change address - 警告: 䏿˜Žçš„æ‰¾é›¶ä½å€ - - - Copy dust - è¤‡è£½é›¶æ•£é‡‘é¡ - - - Are you sure you want to send? - 你確定è¦ä»˜éŒ¢å‡ºåŽ»å—Žï¼Ÿ - - - added as transaction fee - 加åšäº¤æ˜“手續費 - - - - SendCoinsEntry - - A&mount: - 金é¡: - - - Pay &To: - 付給: - - - Enter a label for this address to add it to your address book - 請輸入這個ä½å€çš„æ¨™è¨˜ä¾†æŠŠå®ƒåР進ä½å€ç°¿ä¸­ - - - &Label: - 標記: - - - Choose previously used address - 鏿“‡å…ˆå‰ä½¿ç”¨éŽçš„ä½å€ - - - This is a normal payment. - 這是一筆正常的付款。 - - - The Bitcoin address to send the payment to - 接收付款的ä½å…ƒå¹£ä½å€ - - - Alt+A - Alt+A - - - Paste address from clipboard - 貼上剪貼簿裡的ä½å€ - - - Alt+P - Alt+P - - - Remove this entry - 刪掉這個項目 - - - The fee will be deducted from the amount being sent. The recipient will receive less bitcoins than you enter in the amount field. If multiple recipients are selected, the fee is split equally. - 手續費會從è¦ä»˜æ¬¾å‡ºåŽ»çš„é‡‘é¡ä¸­æ‰£æŽ‰ã€‚因此收款人會收到比輸入的金é¡é‚„è¦å°‘çš„ä½å…ƒå¹£ã€‚如果有多個收款人的話,手續費會平å‡åˆ†é…來扣除。 - - - S&ubtract fee from amount - å¾žä»˜æ¬¾é‡‘é¡æ¸›åŽ»æ‰‹çºŒè²» - - - Message: - 訊æ¯: - - - This is an unauthenticated payment request. - 這是個沒驗證éŽçš„ä»˜æ¬¾è¦æ±‚。 - - - This is an authenticated payment request. - é€™æ˜¯å€‹å·²é©—è­‰çš„ä»˜æ¬¾è¦æ±‚。 - - - Enter a label for this address to add it to the list of used addresses - 請輸入這個ä½å€çš„æ¨™è¨˜ï¼Œä¾†æŠŠå®ƒåŠ é€²åŽ»å·²ä½¿ç”¨éŽä½å€çš„æ¸…單。 - - - A message that was attached to the bitcoin: URI which will be stored with the transaction for your reference. Note: This message will not be sent over the Bitcoin network. - 附加在ä½å…ƒå¹£ä»˜æ¬¾å”è­° URI 中的訊æ¯ï¼Œæœƒå’Œäº¤æ˜“內容一起存起來,給你自己åšåƒè€ƒã€‚注æ„: 這個訊æ¯ä¸æœƒé€åˆ°ä½å…ƒå¹£ç¶²è·¯ä¸Šã€‚ - - - Pay To: - 付給: - - - Memo: - 備註: - - - - ShutdownWindow - - Bitcoin Core is shutting down... - 正在關閉ä½å…ƒå¹£æ ¸å¿ƒä¸­... - - - Do not shut down the computer until this window disappears. - 在這個視窗ä¸è¦‹ä»¥å‰ï¼Œè«‹ä¸è¦é—œæŽ‰é›»è…¦ã€‚ - - - - SignVerifyMessageDialog - - Signatures - Sign / Verify a Message - 簽章 - ç°½ç½²æˆ–é©—è­‰è¨Šæ¯ - - - &Sign Message - ç°½ç½²è¨Šæ¯ - - - You can sign messages/agreements with your addresses to prove you can receive bitcoins sent to them. Be careful not to sign anything vague or random, as phishing attacks may try to trick you into signing your identity over to them. Only sign fully-detailed statements you agree to. - ä½ å¯ä»¥ç”¨è‡ªå·±çš„ä½å€ç°½ç½²è¨Šæ¯æˆ–åˆç´„,來證明你å¯ä»¥å¾žè©²ä½å€æ”¶æ¬¾ã€‚但是請å°å¿ƒï¼Œä¸è¦ç°½ç½²èªžæ„å«ç³Šä¸æ¸…,或隨機產生的內容,因為釣魚å¼è©é¨™å¯èƒ½æœƒç”¨é¨™ä½ ç°½ç½²çš„æ‰‹æ³•ä¾†å†’å……æ˜¯ä½ ã€‚åªæœ‰åœ¨èªžå¥ä¸­çš„ç´°ç¯€ä½ éƒ½åŒæ„時æ‰ç°½ç½²ã€‚ - - - The Bitcoin address to sign the message with - 用來簽署訊æ¯çš„ä½å…ƒå¹£ä½å€ - - - Choose previously used address - 鏿“‡å…ˆå‰ä½¿ç”¨éŽçš„ä½å€ - - - Alt+A - Alt+A - - - Paste address from clipboard - 貼上剪貼簿裡的ä½å€ - - - Alt+P - Alt+P - - - Enter the message you want to sign here - è«‹åœ¨é€™è£¡è¼¸å…¥ä½ æƒ³ç°½ç½²çš„è¨Šæ¯ - - - Signature - 簽章 - - - Copy the current signature to the system clipboard - 複製目å‰çš„簽章到系統剪貼簿 - - - Sign the message to prove you own this Bitcoin address - 簽署這個訊æ¯ä¾†è­‰æ˜Žé€™å€‹ä½å…ƒå¹£ä½å€æ˜¯ä½ çš„ - - - Sign &Message - ç°½ç½²è¨Šæ¯ - - - Reset all sign message fields - é‡è¨­æ‰€æœ‰è¨Šæ¯ç°½ç½²æ¬„ä½ - - - Clear &All - 全部清掉 - - - &Verify Message - é©—è­‰è¨Šæ¯ - - - Enter the receiver's address, message (ensure you copy line breaks, spaces, tabs, etc. exactly) and signature below to verify the message. Be careful not to read more into the signature than what is in the signed message itself, to avoid being tricked by a man-in-the-middle attack. Note that this only proves the signing party receives with the address, it cannot prove sendership of any transaction! - 請在下é¢è¼¸å…¥æ”¶æ¬¾äººçš„ä½å€ï¼Œè¨Šæ¯(請確定完整複製了所包å«çš„æ›è¡Œï¼Œç©ºæ ¼ï¼Œè·³ä½ç¬¦è™Ÿç­‰ç­‰),以åŠç°½ç« ï¼Œä¾†é©—證這個訊æ¯ã€‚è«‹å°å¿ƒï¼Œé™¤äº†è¨Šæ¯å…§å®¹ä»¥å¤–,ä¸è¦å°ç°½ç« æœ¬èº«éŽåº¦è§£è®€ï¼Œä»¥é¿å…被用「中間人攻擊法ã€è©é¨™ã€‚請注æ„,通éŽé©—證的簽章åªèƒ½è­‰æ˜Žç°½ç« äººç¢ºå¯¦å¯ä»¥å¾žè©²ä½å€æ”¶æ¬¾ï¼Œä¸èƒ½è­‰æ˜Žä»»ä½•äº¤æ˜“ä¸­çš„ä»˜æ¬¾äººèº«ä»½ï¼ - - - The Bitcoin address the message was signed with - 簽署這個訊æ¯çš„ä½å…ƒå¹£ä½å€ - - - Verify the message to ensure it was signed with the specified Bitcoin address - 驗證這個訊æ¯ä¾†ç¢ºå®šæ˜¯ç”¨æŒ‡å®šçš„ä½å…ƒå¹£ä½å€ç°½ç½²çš„ - - - Verify &Message - é©—è­‰è¨Šæ¯ - - - Reset all verify message fields - é‡è¨­æ‰€æœ‰è¨Šæ¯é©—è­‰æ¬„ä½ - - - Click "Sign Message" to generate signature - 請按一下「簽署訊æ¯ã€ä¾†ç”¢ç”Ÿç°½ç«  - - - The entered address is invalid. - 輸入的ä½å€ç„¡æ•ˆã€‚ - - - Please check the address and try again. - 請檢查ä½å€æ˜¯å¦æ­£ç¢ºå¾Œå†è©¦ä¸€æ¬¡ã€‚ - - - The entered address does not refer to a key. - 輸入的ä½å€æ²’æœ‰å°æ‡‰åˆ°ä½ çš„任何密鑰。 - - - Wallet unlock was cancelled. - éŒ¢åŒ…è§£éŽ–å·²å–æ¶ˆã€‚ - - - Private key for the entered address is not available. - æ²’æœ‰å°æ‡‰è¼¸å…¥ä½å€çš„密鑰。 - - - Message signing failed. - 訊æ¯ç°½ç½²å¤±æ•—。 - - - Message signed. - 訊æ¯ç°½ç½²å¥½äº†ã€‚ - - - The signature could not be decoded. - 沒辦法把這個簽章解碼。 - - - Please check the signature and try again. - è«‹æª¢æŸ¥ç°½ç« æ˜¯å¦æ­£ç¢ºå¾Œå†è©¦ä¸€æ¬¡ã€‚ - - - The signature did not match the message digest. - 這個簽章跟訊æ¯çš„æ•¸ä½æ‘˜è¦ä¸ç¬¦ã€‚ - - - Message verification failed. - 訊æ¯é©—證失敗。 - - - Message verified. - 訊æ¯é©—證沒錯。 - - - - SplashScreen - - Bitcoin Core - ä½å…ƒå¹£æ ¸å¿ƒ - - - The Bitcoin Core developers - ä½å…ƒå¹£æ ¸å¿ƒé–‹ç™¼äººå“¡ - - - [testnet] - [testnet] - - - - TrafficGraphWidget - - KB/s - KB/s - - - - TransactionDesc - - Open until %1 - 到 %1 å‰å¯ä¿®æ”¹ - - - conflicted - 有è¡çª - - - %1/offline - %1 次/離線中 - - - %1/unconfirmed - %1 次/æœªç¢ºèª - - - %1 confirmations - ç¢ºèª %1 次 - - - Status - 狀態 - - - , broadcast through %n node(s) - ,已公告給 %n 個節點 - - - Date - 日期 - - - Source - ä¾†æº - - - Generated - 生產出來 - - - From - ä¾†æº - - - To - 目的 - - - own address - 自己的ä½å€ - - - watch-only - åªèƒ½çœ‹ - - - label - 標記 - - - Credit - 入帳 - - - matures in %n more block(s) - å†ç­‰ %n 個å€å¡Šç”Ÿå‡ºä¾†å¾Œæˆç†Ÿ - - - not accepted - ä¸è¢«æŽ¥å— - - - Debit - 出帳 - - - Total debit - å‡ºå¸³ç¸½é¡ - - - Total credit - å…¥å¸³ç¸½é¡ - - - Transaction fee - 交易手續費 - - - Net amount - æ·¨é¡ - - - Message - è¨Šæ¯ - - - Comment - 附註 - - - Transaction ID - 交易識別碼 - - - Merchant - 商家 - - - Generated coins must mature %1 blocks before they can be spent. When you generated this block, it was broadcast to the network to be added to the block chain. If it fails to get into the chain, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. - 生產出來的錢è¦å†ç­‰ %1 個å€å¡Šç”Ÿå‡ºä¾†å¾Œæ‰æˆç†Ÿå¯ä»¥ç”¨ã€‚ç•¶å€å¡Šç”Ÿç”¢å‡ºä¾†æ™‚會公布到網路上,來被加進å€å¡Šéˆã€‚如果加失敗了,狀態就會變æˆã€Œä¸è¢«æŽ¥å—ã€ï¼Œè€Œä¸”ä¸èƒ½å¤ èŠ±ã€‚å¦‚æžœåœ¨ä½ ç”Ÿç”¢å‡ºå€å¡Šçš„幾秒é˜å…§ï¼Œä¹Ÿæœ‰å…¶ä»–節點生產出來的話,就有å¯èƒ½æœƒç™¼ç”Ÿé€™ç¨®æƒ…形。 - - - Debug information - 除錯資訊 - - - Transaction - 交易 - - - Inputs - 輸入 - - - Amount - é‡‘é¡ - - - true - 是 - - - false - å¦ - - - , has not been successfully broadcast yet - ,還沒æˆåŠŸå…¬å‘Šå‡ºåŽ» - - - Open for %n more block(s) - 到下 %n 個å€å¡Šç”Ÿå‡ºä¾†å‰å¯ä¿®æ”¹ - - - unknown - 未知 - - - - TransactionDescDialog - - Transaction details - 交易明細 - - - This pane shows a detailed description of the transaction - 這個版é¢é¡¯ç¤ºé€™æ¬¡äº¤æ˜“的詳細說明 - - - - TransactionTableModel - - Date - 日期 - - - Type - 種類 - - - Immature (%1 confirmations, will be available after %2) - 未æˆç†Ÿ(ç¢ºèª %1 次,會在 %2 次後å¯ç”¨) - - - Open for %n more block(s) - 到下 %n 個å€å¡Šç”Ÿå‡ºä¾†å‰å¯ä¿®æ”¹ - - - Open until %1 - 到 %1 å‰å¯ä¿®æ”¹ - - - Confirmed (%1 confirmations) - 已確èª(%1 次) - - - This block was not received by any other nodes and will probably not be accepted! - 沒有其他節點收到這個å€å¡Šï¼Œä¹Ÿè¨±å®ƒä¸æœƒè¢«æŽ¥å—ï¼ - - - Generated but not accepted - 生產出來但是ä¸è¢«æŽ¥å— - - - Offline - 離線中 - - - Label - 標記 - - - Unconfirmed - æœªç¢ºèª - - - Confirming (%1 of %2 recommended confirmations) - 確èªä¸­(已經 %1 次,建議至少 %2 次) - - - Conflicted - 有è¡çª - - - Received with - 收款在 - - - Received from - 收款自 - - - Sent to - 付款給 - - - Payment to yourself - 付給自己 - - - Mined - 開採所得 - - - watch-only - åªèƒ½çœ‹ - - - (n/a) - (ä¸é©ç”¨) - - - Transaction status. Hover over this field to show number of confirmations. - 交易狀態。把游標åœåœ¨æ¬„ä½ä¸Šæœƒé¡¯ç¤ºç¢ºèªæ¬¡æ•¸ã€‚ - - - Date and time that the transaction was received. - 收到交易的日期和時間。 - - - Type of transaction. - 交易的種類。 - - - Whether or not a watch-only address is involved in this transaction. - ä¸è«–如何有一個åªèƒ½è§€çœ‹çš„åœ°åªæœ‰åƒèˆ‡é€™æ¬¡çš„交易 - - - User-defined intent/purpose of the transaction. - 使用者定義的交易動機或ç†ç”±ã€‚ - - - Amount removed from or added to balance. - è¦æ¸›æŽ‰æˆ–加進餘é¡çš„金é¡ã€‚ - - - - TransactionView - - All - 全部 - - - Today - 今天 - - - This week - 這星期 - - - This month - 這個月 - - - Last month - 上個月 - - - This year - 今年 - - - Range... - 指定範åœ... - - - Received with - 收款 - - - Sent to - 付款 - - - To yourself - 給自己 - - - Mined - 開採所得 - - - Other - 其它 - - - Enter address or label to search - è«‹è¼¸å…¥è¦æœå°‹çš„ä½å€æˆ–標記 - - - Min amount - 最å°é‡‘é¡ - - - Copy address - 複製ä½å€ - - - Copy label - 複製標記 - - - Copy amount - è¤‡è£½é‡‘é¡ - - - Copy transaction ID - 複製交易識別碼 - - - Edit label - 編輯標記 - - - Show transaction details - 顯示交易明細 - - - Export Transaction History - 匯出交易記錄 - - - Watch-only - åªèƒ½è§€çœ‹çš„ - - - Exporting Failed - 匯出失敗 - - - There was an error trying to save the transaction history to %1. - 儲存交易記錄到 %1 時發生錯誤。 - - - Exporting Successful - 匯出æˆåŠŸ - - - The transaction history was successfully saved to %1. - 交易記錄已經æˆåŠŸå„²å­˜åˆ° %1 了。 - - - Comma separated file (*.csv) - 逗點分隔資料檔(*.csv) - - - Confirmed - å·²ç¢ºèª - - - Date - 日期 - - - Type - 種類 - - - Label - 標記 - - - Address - ä½å€ - - - ID - 識別碼 - - - Range: - 範åœ: - - - to - 到 - - - - UnitDisplayStatusBarControl - - Unit to show amounts in. Click to select another unit. - 金é¡é¡¯ç¤ºå–®ä½ã€‚å¯ä»¥é»žé¸å…¶ä»–å–®ä½ã€‚ - - - - WalletFrame - - No wallet has been loaded. - 沒有載入錢包。 - - - - WalletModel - - Send Coins - 付款 - - - - WalletView - - &Export - 匯出 - - - Export the data in the current tab to a file - 把目å‰åˆ†é çš„è³‡æ–™åŒ¯å‡ºå­˜æˆæª”案 - - - Backup Wallet - 備份錢包 - - - Wallet Data (*.dat) - 錢包資料檔(*.dat) - - - Backup Failed - 備份失敗 - - - There was an error trying to save the wallet data to %1. - 儲存錢包資料到 %1 時發生錯誤。 - - - The wallet data was successfully saved to %1. - 錢包的資料已經æˆåŠŸå„²å­˜åˆ° %1 了。 - - - Backup Successful - 備份æˆåŠŸ - - - - bitcoin-core - - Options: - é¸é …: - - - Specify data directory - 指定資料目錄 - - - Connect to a node to retrieve peer addresses, and disconnect - 連線到æŸå€‹ç¯€é»žä¾†å–得其它節點的ä½å€ï¼Œç„¶å¾Œæ–·ç·š - - - Specify your own public address - 指定自己的公開ä½å€ - - - Accept command line and JSON-RPC commands - æŽ¥å—æŒ‡ä»¤åˆ—å’Œ JSON-RPC 指令 - - - - Run in the background as a daemon and accept commands - ç”¨è­·éˆæ¨¡å¼åœ¨èƒŒå¾ŒåŸ·è¡Œä¸¦æŽ¥å—指令 - - - Use the test network - 使用測試網路 - - - Accept connections from outside (default: 1 if no -proxy or -connect) - æ˜¯å¦æŽ¥å—外來連線(é è¨­å€¼: 當沒有 -proxy 或 -connect 時為 1) - - - Bind to given address and always listen on it. Use [host]:port notation for IPv6 - 和指定的ä½å€ç¹«çµï¼Œä¸¦ä¸”一直在指定ä½å€è½å€™é€£ç·šã€‚IPv6 請用 [主機]:通訊埠 é€™ç¨®æ ¼å¼ - - - Delete all wallet transactions and only recover those parts of the blockchain through -rescan on startup - 清掉錢包裡的所有交易,並且在下次啟動時,使用 -rescan 來從å€å¡Šéˆä¸­å¾©åŽŸå›žä¾†ã€‚ - - - Distributed under the MIT software license, see the accompanying file COPYING or <http://www.opensource.org/licenses/mit-license.php>. - é€™å¥—è»Ÿé«”æ˜¯ä¾æ“š MIT è»Ÿé«”æŽˆæ¬Šæ¢æ¬¾æ•£å¸ƒï¼Œè©³æƒ…請見附帶的 COPYING 檔案,或是以下網站: <http://www.opensource.org/licenses/mit-license.php>. - - - Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) - 當錢包有交易改變時è¦åŸ·è¡Œçš„æŒ‡ä»¤(指令中的 %s 會被å–代æˆäº¤æ˜“識別碼) - - - Maximum total fees to use in a single wallet transaction; setting this too low may abort large transactions (default: %s) - 一次錢包交易å…許付出最高的總手續費;設定太低的話,å¯èƒ½æœƒç„¡æ³•進行資料é‡å¤§çš„交易(é è¨­å€¼: %s) - - - Reduce storage requirements by pruning (deleting) old blocks. This mode disables wallet support and is incompatible with -txindex. Warning: Reverting this setting requires re-downloading the entire blockchain. (default: 0 = disable pruning blocks, >%u = target size in MiB to use for block files) - 修剪(刪除)掉è€èˆŠå€å¡Šä¾†æ¸›å°‘å„²å­˜ç©ºé–“çš„éœ€æ±‚ã€‚é€™ç¨®æ¨¡å¼æœƒé—œé–‰éŒ¢åŒ…功能,並且和 -txindex åƒæ•¸ä¸ç›¸å®¹ã€‚警告: 從這種模å¼é‚„原會需è¦é‡æ–°ä¸‹è¼‰ä¸€æ•´å€‹å€å¡Šéˆã€‚(é è¨­å€¼: 0 表示ä¸ä¿®å‰ªå€å¡Šï¼Œ>%u 表示為å€å¡Šæª”案的目標大å°ï¼Œå–®ä½æ˜¯ç™¾è¬ä½å…ƒçµ„ MiB) - - - Set the number of script verification threads (%u to %d, 0 = auto, <0 = leave that many cores free, default: %d) - 設定指令碼驗證的執行緒數目 (%u 到 %d,0 表示程å¼è‡ªå‹•æ±ºå®šï¼Œå°æ–¼ 0 表示ä¿ç•™è™•ç†å™¨æ ¸å¿ƒä¸ç”¨çš„æ•¸ç›®ï¼Œé è¨­å€¼: %d) - - - This is a pre-release test build - use at your own risk - do not use for mining or merchant applications - 這是個還沒發表的測試版本 - 使用請自負風險 - è«‹ä¸è¦ç”¨ä¾†é–‹æŽ¡æˆ–商業應用 - - - Unable to bind to %s on this computer. Bitcoin Core is probably already running. - 沒辦法繫çµåœ¨é€™å°é›»è…¦ä¸Šçš„ %s 。ä½å…ƒå¹£æ ¸å¿ƒå¯èƒ½å·²ç¶“在執行了。 - - - WARNING: abnormally high number of blocks generated, %d blocks received in the last %d hours (%d expected) - 警告: 收到了ä¸å°‹å¸¸åœ°å¤šçš„ %d 個å€å¡Šåœ¨éŽåŽ» %d å°æ™‚內生產出來(é æœŸæ˜¯ %d 個) - - - WARNING: check your network connection, %d blocks received in the last %d hours (%d expected) - 警告: 請檢查你的網路連線狀æ³ï¼Œæ”¶åˆ°äº† %d 個å€å¡Šæ˜¯åœ¨éŽåŽ» %d å°æ™‚內生產出來(é æœŸæ˜¯ %d 個) - - - Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction. - 警告: -paytxfee 設定了很高的金é¡ï¼é€™å¯æ˜¯ä½ äº¤æ˜“付款所è¦ä»˜çš„æ‰‹çºŒè²»ã€‚ - - - Warning: The network does not appear to fully agree! Some miners appear to be experiencing issues. - 警告: ä½å…ƒå¹£ç¶²è·¯å°æ–¼å€å¡Šéˆçµçš„æ±ºå®šç›®å‰æœ‰åˆ†æ­§ï¼çœ‹ä¾†æœ‰äº›ç¤¦å·¥æœƒæœ‰å•題。 - - - Warning: We do not appear to fully agree with our peers! You may need to upgrade, or other nodes may need to upgrade. - 警告: 我們和æŸäº›é€£ç·šçš„ç¯€é»žå°æ–¼å€å¡Šéˆçµçš„æ±ºå®šä¸åŒï¼ä½ å¯èƒ½éœ€è¦å‡ç´šï¼Œæˆ–是需è¦ç­‰å…¶å®ƒçš„節點å‡ç´šã€‚ - - - Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect. - 警告: 讀å–錢包檔 wallet.dat æ™‚ç™¼ç”ŸéŒ¯èª¤ï¼æ‰€æœ‰çš„密鑰都正確讀å–了,但是交易資料或ä½å€ç°¿è³‡æ–™å¯èƒ½æœƒç¼ºå°‘æˆ–ä¸æ­£ç¢ºã€‚ - - - 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. - 警告: 錢包檔 wallet.dat 壞掉,但資料被拯救回來了ï¼åŽŸä¾†çš„ wallet.dat 會改儲存在 %s, æª”åæ˜¯ wallet.{timestamp}.bak. å¦‚æžœé¤˜é¡æˆ–交易資料有誤,你應該è¦ç”¨å‚™ä»½è³‡æ–™å¾©åŽŸå›žä¾†ã€‚ - - - Whitelist peers connecting from the given netmask or IP address. Can be specified multiple times. - 把來自指定網域或ä½å€çš„節點放進白å單。這個é¸é …å¯ä»¥è¨­å®šå¤šæ¬¡ã€‚ - - - (default: 1) - (é è¨­å€¼: 1) - - - <category> can be: - <category> å¯ä»¥æ˜¯: - - - Attempt to recover private keys from a corrupt wallet.dat - 嘗試從壞掉的錢包檔 wallet.dat 復原密鑰 - - - Block creation options: - å€å¡Šè£½é€ é¸é …: - - - Connect only to the specified node(s) - åªé€£ç·šåˆ°æŒ‡å®šç¯€é»ž(å¯å¤šå€‹) - - - Connection options: - 連線é¸é …: - - - Corrupted block database detected - 發ç¾å€å¡Šè³‡æ–™åº«å£žæŽ‰äº† - - - Debugging/Testing options: - 除錯與測試é¸é … - - - Do not load the wallet and disable wallet RPC calls - ä¸è¦è¼‰å…¥éŒ¢åŒ…,並且拿掉錢包相關的 RPC 功能請求。 - - - Do you want to rebuild the block database now? - 你想è¦ç¾åœ¨é‡å»ºå€å¡Šè³‡æ–™åº«å—Žï¼Ÿ - - - Error initializing block database - åˆå§‹åŒ–å€å¡Šè³‡æ–™åº«æ™‚發生錯誤 - - - Error initializing wallet database environment %s! - åˆå§‹åŒ–錢包資料庫環境 %s æ™‚ç™¼ç”ŸéŒ¯èª¤ï¼ - - - Error loading block database - 載入å€å¡Šè³‡æ–™åº«æ™‚發生錯誤 - - - Error opening block database - 打開å€å¡Šè³‡æ–™åº«æ™‚發生錯誤 - - - Error: Disk space is low! - 錯誤: ç£ç¢Ÿç©ºé–“å¾ˆå°‘ï¼ - - - Failed to listen on any port. Use -listen=0 if you want this. - 在任æ„的通訊埠è½å€™å¤±æ•—。如果你希望這樣的話,å¯ä»¥è¨­å®š -listen=0. - - - If <category> is not supplied, output all debugging information. - 如果沒有æä¾› <category> 就會輸出所有的除錯資訊。 - - - Importing... - 正在匯入中... - - - Incorrect or no genesis block found. Wrong datadir for network? - 創世å€å¡Šä¸æ­£ç¢ºæˆ–找ä¸åˆ°ã€‚資料目錄錯了嗎? - - - Invalid -onion address: '%s' - 無效的 -onion ä½å€: '%s' - - - Not enough file descriptors available. - 檔案æè¿°å…ƒä¸è¶³ã€‚ - - - Only connect to nodes in network <net> (ipv4, ipv6 or onion) - åªæœ‰é€£æŽ¥åˆ°ç¶²çµ¡ç¯€é»ž <net> (IPv4,IPv6或onion) - - - Prune cannot be configured with a negative value. - 修剪值ä¸èƒ½è¨­å®šç‚ºè² çš„。 - - - Prune mode is incompatible with -txindex. - 修剪模å¼å’Œ -txindex åƒæ•¸ä¸ç›¸å®¹ã€‚ - - - Set database cache size in megabytes (%d to %d, default: %d) - 設定資料庫快å–大尿˜¯å¤šå°‘百è¬ä½å…ƒçµ„(MB,範åœ: %d 到 %d,é è¨­å€¼: %d) - - - Set maximum block size in bytes (default: %d) - 設定å€å¡Šå¤§å°ä¸Šé™æˆå¤šå°‘ä½å…ƒçµ„(é è¨­å€¼: %d) - - - Specify wallet file (within data directory) - 指定錢包檔(會在資料目錄中) - - - Verifying blocks... - 正在驗證å€å¡Šè³‡æ–™... - - - Verifying wallet... - 正在驗證錢包資料... - - - Wallet %s resides outside data directory %s - 錢包檔 %s 沒有在資料目錄 %s è£¡é¢ - - - Wallet options: - 錢包é¸é …: - - - Warning: This version is obsolete; upgrade required! - 警告: 這個版本已經被淘汰了;必須è¦å‡ç´šï¼ - - - You need to rebuild the database using -reindex to change -txindex - 改變 -txindex åƒæ•¸å¾Œï¼Œå¿…é ˆè¦ç”¨ -reindex åƒæ•¸ä¾†é‡å»ºè³‡æ–™åº« - - - Imports blocks from external blk000??.dat file - 從其它來æºçš„ blk000??.dat 檔匯入å€å¡Š - - - 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 - å…許指定的來æºå»ºç«‹ JSON-RPC 連線。<ip> 的有效值å¯ä»¥æ˜¯ä¸€å€‹å–®ç¨ä½å€(åƒæ˜¯ 1.2.3.4),一個網段/網段罩é®å€¼(åƒæ˜¯ 1.2.3.4/255.255.255.0),或是網段/CIDR值(åƒæ˜¯ 1.2.3.4/24)。這個é¸é …å¯ä»¥è¨­å®šå¤šæ¬¡ã€‚ - - - An error occurred while setting up the RPC address %s port %u for listening: %s - 設定在網路上以ä½å€ %s 和通訊埠 %u è½å€™ RPC 連線時發生錯誤: %s - - - Bind to given address and whitelist peers connecting to it. Use [host]:port notation for IPv6 - 和指定的ä½å€ç¹«çµï¼Œä¸¦ä¸”把連線éŽä¾†çš„節點放進白å單。IPv6 請用 [主機]:通訊埠 é€™ç¨®æ ¼å¼ - - - Bind to given address to listen for JSON-RPC connections. Use [host]:port notation for IPv6. This option can be specified multiple times (default: bind to all interfaces) - 和指定的ä½å€ç¹«çµä»¥è½å€™ JSON-RPC 連線。IPv6 請用 [主機]:通訊埠 這種格å¼ã€‚這個é¸é …å¯ä»¥è¨­å®šå¤šæ¬¡ã€‚(é è¨­å€¼: 跟所有網路界é¢ä¸Šçš„ä½å€ç¹«çµ) - - - Cannot obtain a lock on data directory %s. Bitcoin Core is probably already running. - 沒辦法鎖定資料目錄 %s。ä½å…ƒå¹£æ ¸å¿ƒå¯èƒ½å·²ç¶“在執行了。 - - - Create new files with system default permissions, instead of umask 077 (only effective with disabled wallet functionality) - 用系統é è¨­æ¬Šé™ä¾†é€ å‡ºæ–°çš„æª”æ¡ˆï¼Œè€Œä¸æ˜¯ç”¨ä½¿ç”¨è€…權é™ç½©é®(umask)值 077 (åªæœ‰åœ¨é—œæŽ‰éŒ¢åŒ…åŠŸèƒ½æ™‚æ‰æœ‰ä½œç”¨)。 - - - Discover own IP addresses (default: 1 when listening and no -externalip or -proxy) - 找出自己的網際網路ä½å€(é è¨­å€¼: 當有è½å€™é€£ç·šä¸”沒有指定 -externalip 或 -proxy 時為 1) - - - Error: Listening for incoming connections failed (listen returned error %s) - 錯誤: è½å€™å¤–來連線失敗(回傳錯誤 %s) - - - Error: Unsupported argument -socks found. Setting SOCKS version isn't possible anymore, only SOCKS5 proxies are supported. - 錯誤: 找到ä¸å†æ”¯æ´çš„ -socks åƒæ•¸ã€‚ç¾åœ¨åªæ”¯æ´ SOCKS5 å”定的代ç†ä¼ºæœå™¨äº†ï¼Œå› ç‚ºä¸å†èƒ½å¤ æŒ‡å®š SOCKS å”定版本。 - - - Execute command when a relevant alert is received or we see a really long fork (%s in cmd is replaced by message) - 當收到相關警示,或發ç¾ç›¸ç•¶é•·çš„分支時,所è¦åŸ·è¡Œçš„æŒ‡ä»¤(指令中的 %s 會被å–代æˆè­¦ç¤ºè¨Šæ¯) - - - Fees (in BTC/Kb) smaller than this are considered zero fee for relaying (default: %s) - 當處ç†è½‰ç™¼çš„交易時,如果æ¯åƒä½å…ƒçµ„(Kb)的手續費比這個值低,就視為沒付手續費 (é è¨­å€¼: %s) - - - If paytxfee is not set, include enough fee so transactions begin confirmation on average within n blocks (default: %u) - 當沒有設定 paytxfee 時,自動包å«å¯ä»¥è®“äº¤æ˜“èƒ½åœ¨å¹³å‡ n 個å€å¡Šå…§é–‹å§‹ç¢ºèªçš„æ‰‹çºŒè²»(é è¨­å€¼: %u) - - - Invalid amount for -maxtxfee=<amount>: '%s' (must be at least the minrelay fee of %s to prevent stuck transactions) - -maxtxfee=<amount>: '%s' 的金é¡ç„¡æ•ˆ (必須大於最低轉發手續費 %s 以é¿å…交易無法確èª) - - - Maximum size of data in data carrier transactions we relay and mine (default: %u) - 轉發和開採時,å°åªå¸¶è³‡æ–™çš„交易的大å°ä¸Šé™(é è¨­å€¼: %u) - - - Prune configured below the minimum of %d MB. Please use a higher number. - è¨­å®šçš„ä¿®å‰ªå€¼å°æ–¼æœ€å°éœ€æ±‚çš„ %d MB. 請指定大一點的數字。 - - - Query for peer addresses via DNS lookup, if low on addresses (default: 1 unless -connect) - 是å¦å…許在節點ä½å€æ•¸ç›®ä¸è¶³æ™‚ï¼Œä½¿ç”¨åŸŸåæŸ¥è©¢ä¾†æœå°‹ç¯€é»ž (é è¨­å€¼: 當沒用 -connect 時為 1) - - - Randomize credentials for every proxy connection. This enables Tor stream isolation (default: %u) - å°æ¯å€‹ä»£ç†é€£ç·šä½¿ç”¨éš¨æ©Ÿç”¢ç”Ÿçš„æ†‘證。這個é¸é …會開啟 Tor 的串æµéš”離(é è¨­å€¼: %u) - - - Set maximum size of high-priority/low-fee transactions in bytes (default: %d) - 設定高優先度或低手續費的交易資料大å°ä¸Šé™æˆå¤šå°‘ä½å…ƒçµ„(é è¨­å€¼: %d) - - - Set the number of threads for coin generation if enabled (-1 = all cores, default: %d) - 設定產生錢幣的執行緒數目(-1 表示處ç†å™¨æ ¸å¿ƒæ•¸ï¼Œé è¨­å€¼: %d) - - - The transaction amount is too small to send after the fee has been deducted - 扣除手續費後的交易金é¡å¤ªå°‘而ä¸èƒ½å‚³é€ - - - 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. - 此產å“也包å«äº†ç”± OpenSSL Project 所開發的 OpenSSL Toolkit 軟體 <https://www.openssl.org/>, 和由 Eric Young 撰寫的加解密軟體,以åŠç”± Thomas Bernard 所撰寫的 UPnP 軟體。 - - - 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 - - è¦ä½¿ç”¨ bitcoind, æˆ–æ˜¯å° bitcoin-qt 指定 -server é¸é …,你必須è¦åœ¨ä»¥ä¸‹è¨­å®šæª”中設定 RPC 密碼(é¸é …: rpcpassword): -%s -建議你使用以下隨機產生的密碼: -rpcuser=bitcoinrpc -rpcpassword=%s -(ä½ ä¸ç”¨è¨˜ä½é€™å€‹å¯†ç¢¼) -注æ„使用者å稱(rpcuser)和密碼(rpcpassword)ä¸å¯ä»¥ç›¸åŒï¼ -如果設定檔還ä¸å­˜åœ¨ï¼Œè«‹åœ¨æ–°å¢žæ™‚,設定檔案權é™ç‚º"åªæœ‰ä¸»äººæ‰èƒ½è®€å–"。 -也建議你設定警示通知,這樣發生å•é¡Œæ™‚ä½ æ‰æœƒè¢«é€šçŸ¥åˆ°ï¼› -比如說設定: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com - - - - Warning: -maxtxfee is set very high! Fees this large could be paid on a single transaction. - 警告: -maxtxfee 設定了很高的金é¡ï¼é€™å¯æ˜¯ä¸€æ¬¡äº¤æ˜“就有å¯èƒ½ä»˜å‡ºçš„æœ€é«˜æ‰‹çºŒè²»ã€‚ - - - Warning: Please check that your computer's date and time are correct! If your clock is wrong Bitcoin Core will not work properly. - 警告: è«‹æª¢æŸ¥é›»è…¦æ—¥æœŸå’Œæ™‚é–“æ˜¯å¦æ­£ç¢ºï¼ä½å…ƒå¹£æ ¸å¿ƒæ²’辦法在時é˜ä¸æº–的情æ³ä¸‹æ­£å¸¸é‹ä½œã€‚ - - - 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 - 在白åå–®ä¸­çš„ç¯€é»žä¸æœƒå› ç‚ºåµæ¸¬åˆ°é˜»æ–·æœå‹™æ”»æ“Šè€Œè¢«åœç”¨ã€‚來自這些節點的交易也一定會被轉發,å³ä½¿èªªäº¤æ˜“本來就在記憶池裡了也一樣。é©ç”¨æ–¼åƒæ˜¯é–˜é“伺æœå™¨ã€‚ - - - You need to rebuild the database using -reindex to go back to unpruned mode. This will redownload the entire blockchain - 回到éžä¿®å‰ªçš„æ¨¡å¼éœ€è¦ç”¨ -reindex åƒæ•¸ä¾†é‡å»ºè³‡æ–™åº«ã€‚é€™æœƒå°Žè‡´é‡æ–°ä¸‹è¼‰æ•´å€‹å€å¡Šéˆã€‚ - - - (default: %u) - (é è¨­å€¼: %u) - - - Accept public REST requests (default: %u) - 接å—公開的REST請求 (é è¨­å€¼: %u) - - - Activating best chain... - 啟用最佳éˆçµ... - - - Can't run with a wallet in prune mode. - ä¸èƒ½åœ¨æœ‰éŒ¢åŒ…時執行修剪模å¼ã€‚ - - - Cannot resolve -whitebind address: '%s' - æ²’è¾¦æ³•è§£æž -whitebind 指定的ä½å€: '%s' - - - Choose data directory on startup (default: 0) - å•“å‹•æ™‚é¸æ“‡è³‡æ–™ç›®éŒ„(é è¨­å€¼: 0) - - - Connect through SOCKS5 proxy - é€éŽ SOCKS5 代ç†ä¼ºæœå™¨é€£ç·š - - - Copyright (C) 2009-%i The Bitcoin Core Developers - 版權為ä½å…ƒå¹£æ ¸å¿ƒé–‹ç™¼äººå“¡è‡ªè¥¿å…ƒ 2009 至 %i 年起所有 - - - Could not parse -rpcbind value %s as network address - æ²’è¾¦æ³•è§£æž -rpcbind åƒæ•¸å€¼ %s 為網路ä½å€ - - - Error loading wallet.dat: Wallet requires newer version of Bitcoin Core - 載入 wallet.dat 檔案時發生錯誤: é€™å€‹éŒ¢åŒ…éœ€è¦æ–°ç‰ˆçš„ä½å…ƒå¹£æ ¸å¿ƒ - - - Error reading from database, shutting down. - 讀å–資料庫時發生錯誤,è¦é—œé–‰äº†ã€‚ - - - Error: A fatal internal error occurred, see debug.log for details - 錯誤: 發生了致命的內部錯誤,詳情請看 debug.log - - - Error: Unsupported argument -tor found, use -onion. - 錯誤: 找到ä¸å†æ”¯æ´çš„ -tor åƒæ•¸ï¼Œè«‹æ”¹ç”¨ -onion åƒæ•¸ã€‚ - - - Fee (in BTC/kB) to add to transactions you send (default: %s) - 交易付款時æ¯åƒä½å…ƒçµ„(kB)的交易手續費 (é è¨­å€¼: %s) - - - Information - 資訊 - - - Initialization sanity check failed. Bitcoin Core is shutting down. - åˆå§‹åŒ–時的基本檢查失敗了。ä½å…ƒå¹£æ ¸å¿ƒå°±è¦é—œé–‰äº†ã€‚ - - - Invalid amount for -maxtxfee=<amount>: '%s' - -maxtxfee=<amount>: '%s' 的金é¡ç„¡æ•ˆ - - - Invalid amount for -minrelaytxfee=<amount>: '%s' - 設定最低轉發手續費 -minrelaytxfee=<金é¡> 的金é¡ç„¡æ•ˆ: '%s' - - - Invalid amount for -mintxfee=<amount>: '%s' - 設定 -mintxfee=<金é¡> 的金é¡ç„¡æ•ˆ: '%s' - - - Invalid amount for -paytxfee=<amount>: '%s' (must be at least %s) - 設定 -paytxfee=<金é¡> 的金é¡ç„¡æ•ˆ: '%s' (è‡³å°‘è¦æœ‰ %s) - - - Invalid netmask specified in -whitelist: '%s' - 指定在 -whitelist 的網段無效: '%s' - - - Keep at most <n> unconnectable transactions in memory (default: %u) - ä¿æŒæœ€å¤š <n> 無法連çµçš„交易在記憶體 (é è¨­: %u) - - - Need to specify a port with -whitebind: '%s' - 指定 -whitebind 時必須包å«é€šè¨ŠåŸ : '%s' - - - Node relay options: - 節點轉發é¸é …: - - - Pruning blockstore... - 正在修剪å€å¡Šè³‡æ–™åº«ä¸­... - - - RPC SSL options: (see the Bitcoin Wiki for SSL setup instructions) - RPC SSL é¸é …: (SSL 設定程åºè«‹è¦‹ Bitcoin Wiki) - - - RPC server options: - RPC 伺æœå™¨é¸é …: - - - RPC support for HTTP persistent connections (default: %d) - RPC æ˜¯å¦æ”¯æ´ HTTP æŒä¹…連線(é è¨­å€¼: %d) - - - Rebuild block chain index from current blk000??.dat files on startup - 啟動時從目å‰çš„å€å¡Šæª” blk000??.dat é‡å»ºå€å¡Šéˆçš„索引 - - - Receive and display P2P network alerts (default: %u) - 接收並顯示å°ç­‰ç¶²è·¯(P2P)警示 (é è¨­å€¼: %u) - - - Send trace/debug info to console instead of debug.log file - åœ¨çµ‚ç«¯æ©Ÿé¡¯ç¤ºè¿½è¹¤æˆ–é™¤éŒ¯è³‡è¨Šï¼Œè€Œä¸æ˜¯å¯«åˆ°æª”案 debug.log 中 - - - Send transactions as zero-fee transactions if possible (default: %u) - 盡å¯èƒ½é€å‡ºä¸ç”¨ä»˜æ‰‹çºŒè²»çš„交易(é è¨­å€¼: %u) - - - Set SSL root certificates for payment request (default: -system-) - 設定付款請求時所使用的 SSL 根憑證 (é è¨­å€¼: 系統憑證庫) - - - Set language, for example "de_DE" (default: system locale) - 設定語言,比如說 de_DE (é è¨­å€¼: 系統語系) - - - Show all debugging options (usage: --help -help-debug) - 顯示所有的除錯é¸é … (用法: --help --help-debug) - - - Show splash screen on startup (default: 1) - 顯示啓動畫é¢(é è¨­å€¼: 1) - - - Shrink debug.log file on client startup (default: 1 when no -debug) - 客戶端軟體啓動時把 debug.log 檔縮å°(é è¨­å€¼: 當沒有 -debug 時為 1) - - - Signing transaction failed - 簽署交易失敗 - - - Start minimized - å•“å‹•æ™‚ç¸®åˆ°æœ€å° - - - The transaction amount is too small to pay the fee - 交易金é¡å¤ªå°‘而付ä¸èµ·æ‰‹çºŒè²» - - - This is experimental software. - 這套軟體屬於實驗性質。 - - - Transaction amount too small - 交易金é¡å¤ªå° - - - Transaction amounts must be positive - 交易金é¡å¿…須是正的 - - - Transaction too large for fee policy - 根據交易手續費準則,本交易的ä½å…ƒé‡éŽå¤§ - - - Transaction too large - 交易ä½å…ƒé‡å¤ªå¤§ - - - UI Options: - 使用介é¢é¸é …: - - - Unable to bind to %s on this computer (bind returned error %s) - 無法和這å°é›»è…¦ä¸Šçš„ %s 繫çµ(回傳錯誤 %s) - - - Use UPnP to map the listening port (default: 1 when listening) - 是å¦è¦ä½¿ç”¨ã€Œé€šç”¨å³æ’å³ç”¨ã€å”定(UPnP),來設定è½å€™é€£ç·šçš„é€šè¨ŠåŸ çš„å°æ‡‰(é è¨­å€¼: 當有è½å€™é€£ç·šæ™‚為 1) - - - Username for JSON-RPC connections - JSON-RPC 連線使用者å稱 - - - Wallet needed to be rewritten: restart Bitcoin Core to complete - 錢包需è¦é‡å¯«: è«‹é‡æ–°å•“å‹•ä½å…ƒå¹£æ ¸å¿ƒä¾†å®Œæˆ - - - Warning - 警告 - - - Warning: Unsupported argument -benchmark ignored, use -debug=bench. - 警告: 忽略了ä¸å†æ”¯æ´çš„ -benchmark åƒæ•¸ï¼Œè«‹æ”¹ç”¨ -debug=bench. - - - Warning: Unsupported argument -debugnet ignored, use -debug=net. - 警告: 忽略了ä¸å†æ”¯æ´çš„ -debugnet åƒæ•¸ï¼Œè«‹æ”¹ç”¨ -debug=net. - - - Zapping all transactions from wallet... - æ­£åœ¨ç æŽ‰éŒ¢åŒ…ä¸­çš„æ‰€æœ‰äº¤æ˜“... - - - on startup - 當啟動時 - - - wallet.dat corrupt, salvage failed - 錢包檔 weallet.dat 壞掉了,拯救失敗 - - - Password for JSON-RPC connections - JSON-RPC 連線密碼 - - - Execute command when the best block changes (%s in cmd is replaced by block hash) - 當最新å€å¡Šæ”¹è®Šæ™‚è¦åŸ·è¡Œçš„æŒ‡ä»¤(指令中的 %s 會被å–代æˆå€å¡Šé›œæ¹Šå€¼) - - - Upgrade wallet to latest format - 把錢包檔案å‡ç´šæˆæœ€æ–°çš„æ ¼å¼ - - - Rescan the block chain for missing wallet transactions - 釿–°æŽƒæå€å¡Šéˆï¼Œä¾†å°‹æ‰¾éŒ¢åŒ…å¯èƒ½æ¼æŽ‰çš„交易。 - - - Use OpenSSL (https) for JSON-RPC connections - 在 JSON-RPC 連線使用 OpenSSL (https) - - - This help message - é€™äº›èªªæ˜Žè¨Šæ¯ - - - Allow DNS lookups for -addnode, -seednode and -connect - å…è¨±å° -addnode, -seednode, -connect çš„åƒæ•¸ä½¿ç”¨åŸŸå查詢 - - - Loading addresses... - 正在載入ä½å€è³‡æ–™... - - - Error loading wallet.dat: Wallet corrupted - 載入檔案 wallet.dat 時發生錯誤: éŒ¢åŒ…ææ¯€äº† - - - (1 = keep tx meta data e.g. account owner and payment request information, 2 = drop tx meta data) - (1 表示ä¿ç•™äº¤æ˜“æè¿°è³‡æ–™ï¼Œåƒæ˜¯å¸³æˆ¶ä½¿ç”¨è€…和付款請求資訊;2 表示丟掉交易æè¿°è³‡æ–™) - - - How thorough the block verification of -checkblocks is (0-4, default: %u) - 使用 -checkblocks 檢查å€å¡Šçš„仔細程度(0 到 4,é è¨­å€¼: %u) - - - Maintain a full transaction index, used by the getrawtransaction rpc call (default: %u) - 維護全部交易的索引,用在 getrawtransaction 這個 RPC 請求(é è¨­å€¼: %u) - - - Number of seconds to keep misbehaving peers from reconnecting (default: %u) - é¿å…與亂æžçš„節點連線的秒數(é è¨­: %u) - - - Output debugging information (default: %u, supplying <category> is optional) - 輸出除錯資訊(é è¨­å€¼: %u, ä¸ä¸€å®šè¦æŒ‡å®š <category>) - - - Use separate SOCKS5 proxy to reach peers via Tor hidden services (default: %s) - 使用å¦å¤–çš„ SOCK5 代ç†ä¼ºæœå™¨ï¼Œä¾†é€éŽ Tor éš±è—æœå‹™è·Ÿç¯€é»žè¯ç¹«(é è¨­å€¼: %s) - - - (default: %s) - (é è¨­å€¼: %s) - - - Acceptable ciphers (default: %s) - å¯ä»¥æŽ¥å—的加密演算法(é è¨­å€¼: %s) - - - Always query for peer addresses via DNS lookup (default: %u) - 是å¦ä¸€å®šè¦ç”¨åŸŸå查詢來æœå°‹ç¯€é»ž(é è¨­å€¼: %u) - - - Error loading wallet.dat - 載入錢包檔 wallet.dat 時發生錯誤 - - - Generate coins (default: %u) - 生產ä½å…ƒå¹£(é è¨­å€¼: %u) - - - How many blocks to check at startup (default: %u, 0 = all) - 啓動時檢查的å€å¡Šæ•¸(é è¨­å€¼: %u, 指定 0 表示全部) - - - Include IP addresses in debug output (default: %u) - 在除錯輸出內容中包å«ç¶²éš›ç¶²è·¯ä½å€(é è¨­å€¼: %u) - - - Invalid -proxy address: '%s' - 無效的 -proxy ä½å€: '%s' - - - Listen for JSON-RPC connections on <port> (default: %u or testnet: %u) - 在通訊埠 <port> è½å€™ JSON-RPC 連線(é è¨­å€¼: %u, 或若為測試網路: %u) - - - Listen for connections on <port> (default: %u or testnet: %u) - 在通訊埠 <port> è½å€™é€£ç·š(é è¨­å€¼: %u, 或若為測試網路: %u) - - - Maintain at most <n> connections to peers (default: %u) - ç¶­æŒèˆ‡ç¯€é»žé€£ç·šæ•¸çš„上é™ç‚º <n> 個(é è¨­å€¼: %u) - - - Make the wallet broadcast transactions - 讓錢包能公告交易 - - - Maximum per-connection receive buffer, <n>*1000 bytes (default: %u) - æ¯å€‹é€£ç·šçš„æŽ¥æ”¶ç·©è¡å€å¤§å°ä¸Šé™ç‚º <n>*1000 個ä½å…ƒçµ„(é è¨­å€¼: %u) - - - Maximum per-connection send buffer, <n>*1000 bytes (default: %u) - æ¯å€‹é€£ç·šçš„傳é€ç·©è¡å€å¤§å°ä¸Šé™ç‚º <n>*1000 個ä½å…ƒçµ„(é è¨­å€¼: %u) - - - Prepend debug output with timestamp (default: %u) - 在除錯輸出內容å‰é™„加時間(é è¨­å€¼: %u) - - - Relay and mine data carrier transactions (default: %u) - å…許轉發和開採åªå¸¶è³‡æ–™çš„交易(é è¨­å€¼: %u) - - - Relay non-P2SH multisig (default: %u) - å…è¨±è½‰ç™¼éž P2SH 的多簽章交易(é è¨­å€¼: %u) - - - Server certificate file (default: %s) - 伺æœå™¨æ†‘證檔(é è¨­å€¼: %s) - - - Server private key (default: %s) - 伺æœå™¨å¯†é‘°æª”(é è¨­å€¼: %s) - - - Set key pool size to <n> (default: %u) - 設定密鑰池大å°ç‚º <n> (é è¨­å€¼: %u) - - - Set minimum block size in bytes (default: %u) - 設定å€å¡Šå¤§å°ä¸‹é™ç‚ºå¤šå°‘ä½å…ƒçµ„(é è¨­å€¼: %u) - - - Set the number of threads to service RPC calls (default: %d) - è¨­å®šè™•ç† RPC æœå‹™è«‹æ±‚的執行緒數目(é è¨­å€¼: %d) - - - Specify configuration file (default: %s) - 指定設定檔(é è¨­å€¼: %s) - - - Specify connection timeout in milliseconds (minimum: 1, default: %d) - 指定連線在幾毫秒後逾時 (最少值: 1, é è¨­å€¼: %d) - - - Specify pid file (default: %s) - 指定行程識別碼檔案(é è¨­å€¼: %s) - - - Spend unconfirmed change when sending transactions (default: %u) - 傳é€äº¤æ˜“時å¯ä»¥èŠ±é‚„æ²’ç¢ºèªçš„零錢(é è¨­å€¼: %u) - - - Threshold for disconnecting misbehaving peers (default: %u) - 與亂æžçš„節點斷線的臨界值 (é è¨­: %u) - - - Unknown network specified in -onlynet: '%s' - 在 -onlynet æŒ‡å®šäº†ä¸æ˜Žçš„網路別: '%s' - - - Cannot resolve -bind address: '%s' - æ²’è¾¦æ³•è§£æž -bind ä½å€: '%s' - - - Cannot resolve -externalip address: '%s' - æ²’è¾¦æ³•è§£æž -externalip ä½å€: '%s' - - - Invalid amount for -paytxfee=<amount>: '%s' - 設定 -paytxfee=<金é¡> 的金é¡ç„¡æ•ˆ: '%s' - - - Insufficient funds - ç´¯ç©é‡‘é¡ä¸è¶³ - - - Loading block index... - 正在載入å€å¡Šç´¢å¼•... - - - Add a node to connect to and attempt to keep the connection open - 增加一個è¦é€£ç·šçš„ç¯€ç·šï¼Œä¸¦è©¦è‘—ä¿æŒå°å®ƒçš„連線暢通 - - - Loading wallet... - 正在載入錢包資料... - - - Cannot downgrade wallet - 沒辦法把錢包格å¼é™ç´š - - - Cannot write default address - 沒辦法把é è¨­ä½å€å¯«é€²åŽ» - - - Rescanning... - æ­£åœ¨é‡æ–°æŽƒæ... - - - Done loading - è¼‰å…¥å®Œæˆ - - - Error - 錯誤 - - - \ No newline at end of file diff --git a/src/qt/macdockiconhandler.h b/src/qt/macdockiconhandler.h deleted file mode 100644 index 8bd867c10..000000000 --- a/src/qt/macdockiconhandler.h +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright (c) 2011-2013 The Bitcoin Core developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#ifndef BITCOIN_QT_MACDOCKICONHANDLER_H -#define BITCOIN_QT_MACDOCKICONHANDLER_H - -#include -#include - -QT_BEGIN_NAMESPACE -class QIcon; -class QMenu; -class QWidget; -QT_END_NAMESPACE - -/** Macintosh-specific dock icon handler. - */ -class MacDockIconHandler : public QObject -{ - Q_OBJECT - -public: - ~MacDockIconHandler(); - - QMenu *dockMenu(); - void setIcon(const QIcon &icon); - void setMainWindow(QMainWindow *window); - static MacDockIconHandler *instance(); - static void cleanup(); - void handleDockIconClickEvent(); - -Q_SIGNALS: - void dockIconClicked(); - -private: - MacDockIconHandler(); - - QWidget *m_dummyWidget; - QMenu *m_dockMenu; - QMainWindow *mainWindow; -}; - -#endif // BITCOIN_QT_MACDOCKICONHANDLER_H diff --git a/src/qt/macdockiconhandler.mm b/src/qt/macdockiconhandler.mm deleted file mode 100644 index a41d39d51..000000000 --- a/src/qt/macdockiconhandler.mm +++ /dev/null @@ -1,134 +0,0 @@ -// Copyright (c) 2011-2013 The Bitcoin Core developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#include "macdockiconhandler.h" - -#include -#include -#include -#include - -#undef slots -#include -#include -#include - -#if QT_VERSION < 0x050000 -extern void qt_mac_set_dock_menu(QMenu *); -#endif - -static MacDockIconHandler *s_instance = NULL; - -bool dockClickHandler(id self,SEL _cmd,...) { - Q_UNUSED(self) - Q_UNUSED(_cmd) - - s_instance->handleDockIconClickEvent(); - - // Return NO (false) to suppress the default OS X actions - return false; -} - -void setupDockClickHandler() { - Class cls = objc_getClass("NSApplication"); - id appInst = objc_msgSend((id)cls, sel_registerName("sharedApplication")); - - if (appInst != NULL) { - id delegate = objc_msgSend(appInst, sel_registerName("delegate")); - Class delClass = (Class)objc_msgSend(delegate, sel_registerName("class")); - SEL shouldHandle = sel_registerName("applicationShouldHandleReopen:hasVisibleWindows:"); - if (class_getInstanceMethod(delClass, shouldHandle)) - class_replaceMethod(delClass, shouldHandle, (IMP)dockClickHandler, "B@:"); - else - class_addMethod(delClass, shouldHandle, (IMP)dockClickHandler,"B@:"); - } -} - - -MacDockIconHandler::MacDockIconHandler() : QObject() -{ - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - - setupDockClickHandler(); - this->m_dummyWidget = new QWidget(); - this->m_dockMenu = new QMenu(this->m_dummyWidget); - this->setMainWindow(NULL); -#if QT_VERSION < 0x050000 - qt_mac_set_dock_menu(this->m_dockMenu); -#elif QT_VERSION >= 0x050200 - this->m_dockMenu->setAsDockMenu(); -#endif - [pool release]; -} - -void MacDockIconHandler::setMainWindow(QMainWindow *window) { - this->mainWindow = window; -} - -MacDockIconHandler::~MacDockIconHandler() -{ - delete this->m_dummyWidget; - this->setMainWindow(NULL); -} - -QMenu *MacDockIconHandler::dockMenu() -{ - return this->m_dockMenu; -} - -void MacDockIconHandler::setIcon(const QIcon &icon) -{ - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - NSImage *image = nil; - if (icon.isNull()) - image = [[NSImage imageNamed:@"NSApplicationIcon"] retain]; - else { - // generate NSImage from QIcon and use this as dock icon. - QSize size = icon.actualSize(QSize(128, 128)); - QPixmap pixmap = icon.pixmap(size); - - // Write image into a R/W buffer from raw pixmap, then save the image. - QBuffer notificationBuffer; - if (!pixmap.isNull() && notificationBuffer.open(QIODevice::ReadWrite)) { - QImageWriter writer(¬ificationBuffer, "PNG"); - if (writer.write(pixmap.toImage())) { - NSData* macImgData = [NSData dataWithBytes:notificationBuffer.buffer().data() - length:notificationBuffer.buffer().size()]; - image = [[NSImage alloc] initWithData:macImgData]; - } - } - - if(!image) { - // if testnet image could not be created, load std. app icon - image = [[NSImage imageNamed:@"NSApplicationIcon"] retain]; - } - } - - [NSApp setApplicationIconImage:image]; - [image release]; - [pool release]; -} - -MacDockIconHandler *MacDockIconHandler::instance() -{ - if (!s_instance) - s_instance = new MacDockIconHandler(); - return s_instance; -} - -void MacDockIconHandler::cleanup() -{ - delete s_instance; -} - -void MacDockIconHandler::handleDockIconClickEvent() -{ - if (this->mainWindow) - { - this->mainWindow->activateWindow(); - this->mainWindow->show(); - } - - Q_EMIT this->dockIconClicked(); -} diff --git a/src/qt/macnotificationhandler.h b/src/qt/macnotificationhandler.h deleted file mode 100644 index bd66b96b2..000000000 --- a/src/qt/macnotificationhandler.h +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright (c) 2011-2013 The Bitcoin Core developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#ifndef BITCOIN_QT_MACNOTIFICATIONHANDLER_H -#define BITCOIN_QT_MACNOTIFICATIONHANDLER_H - -#include - -/** Macintosh-specific notification handler (supports UserNotificationCenter and Growl). - */ -class MacNotificationHandler : public QObject -{ - Q_OBJECT - -public: - /** shows a 10.8+ UserNotification in the UserNotificationCenter - */ - void showNotification(const QString &title, const QString &text); - - /** executes AppleScript */ - void sendAppleScript(const QString &script); - - /** check if OS can handle UserNotifications */ - bool hasUserNotificationCenterSupport(void); - static MacNotificationHandler *instance(); -}; - - -#endif // BITCOIN_QT_MACNOTIFICATIONHANDLER_H diff --git a/src/qt/networkstyle.cpp b/src/qt/networkstyle.cpp deleted file mode 100644 index e28f903b2..000000000 --- a/src/qt/networkstyle.cpp +++ /dev/null @@ -1,97 +0,0 @@ -// 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. - -#include "networkstyle.h" - -#include "guiconstants.h" -#include "scicon.h" - -#include - -static const struct { - const char *networkId; - const char *appName; - const int iconColorHueShift; - const int iconColorSaturationReduction; - const char *titleAddText; -} network_styles[] = { - {"main", QAPP_APP_NAME_DEFAULT, 0, 0, ""}, - {"test", QAPP_APP_NAME_TESTNET, 70, 30, QT_TRANSLATE_NOOP("SplashScreen", "[testnet]")}, - {"regtest", QAPP_APP_NAME_TESTNET, 160, 30, "[regtest]"} -}; -static const unsigned network_styles_count = sizeof(network_styles)/sizeof(*network_styles); - -// titleAddText needs to be const char* for tr() -NetworkStyle::NetworkStyle(const QString &appName, const int iconColorHueShift, const int iconColorSaturationReduction, const char *titleAddText): - appName(appName), - titleAddText(qApp->translate("SplashScreen", titleAddText)) -{ - // load pixmap - QPixmap pixmap(":/icons/bitcoin"); - - if(iconColorHueShift != 0 && iconColorSaturationReduction != 0) - { - // generate QImage from QPixmap - QImage img = pixmap.toImage(); - - int h,s,l,a; - - // traverse though lines - for(int y=0;y( img.scanLine( y ) ); - - // loop through pixels - for(int x=0;xiconColorSaturationReduction) - { - s -= iconColorSaturationReduction; - } - col.setHsl(h,s,l,a); - - // set the pixel - scL[x] = col.rgba(); - } - } - - //convert back to QPixmap -#if QT_VERSION >= 0x040700 - pixmap.convertFromImage(img); -#else - pixmap = QPixmap::fromImage(img); -#endif - } - - appIcon = QIcon(pixmap); - trayAndWindowIcon = QIcon(pixmap.scaled(QSize(256,256))); -} - -const NetworkStyle *NetworkStyle::instantiate(const QString &networkId) -{ - for (unsigned x=0; x -#include -#include - -/* Coin network-specific GUI style information */ -class NetworkStyle -{ -public: - /** Get style associated with provided BIP70 network id, or 0 if not known */ - static const NetworkStyle *instantiate(const QString &networkId); - - const QString &getAppName() const { return appName; } - const QIcon &getAppIcon() const { return appIcon; } - const QIcon &getTrayAndWindowIcon() const { return trayAndWindowIcon; } - const QString &getTitleAddText() const { return titleAddText; } - -private: - NetworkStyle(const QString &appName, const int iconColorHueShift, const int iconColorSaturationReduction, const char *titleAddText); - - QString appName; - QIcon appIcon; - QIcon trayAndWindowIcon; - QString titleAddText; -}; - -#endif // BITCOIN_QT_NETWORKSTYLE_H diff --git a/src/qt/notificator.cpp b/src/qt/notificator.cpp deleted file mode 100644 index 5a564248e..000000000 --- a/src/qt/notificator.cpp +++ /dev/null @@ -1,326 +0,0 @@ -// Copyright (c) 2011-2013 The Bitcoin Core developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#include "notificator.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#ifdef USE_DBUS -#include -#include -#endif -// Include ApplicationServices.h after QtDbus to avoid redefinition of check(). -// This affects at least OSX 10.6. See /usr/include/AssertMacros.h for details. -// Note: This could also be worked around using: -// #define __ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES 0 -#ifdef Q_OS_MAC -#include -#include "macnotificationhandler.h" -#endif - - -#ifdef USE_DBUS -// https://wiki.ubuntu.com/NotificationDevelopmentGuidelines recommends at least 128 -const int FREEDESKTOP_NOTIFICATION_ICON_SIZE = 128; -#endif - -Notificator::Notificator(const QString &programName, QSystemTrayIcon *trayicon, QWidget *parent) : - QObject(parent), - parent(parent), - programName(programName), - mode(None), - trayIcon(trayicon) -#ifdef USE_DBUS - ,interface(0) -#endif -{ - if(trayicon && trayicon->supportsMessages()) - { - mode = QSystemTray; - } -#ifdef USE_DBUS - interface = new QDBusInterface("org.freedesktop.Notifications", - "/org/freedesktop/Notifications", "org.freedesktop.Notifications"); - if(interface->isValid()) - { - mode = Freedesktop; - } -#endif -#ifdef Q_OS_MAC - // check if users OS has support for NSUserNotification - if( MacNotificationHandler::instance()->hasUserNotificationCenterSupport()) { - mode = UserNotificationCenter; - } - else { - // Check if Growl is installed (based on Qt's tray icon implementation) - CFURLRef cfurl; - OSStatus status = LSGetApplicationForInfo(kLSUnknownType, kLSUnknownCreator, CFSTR("growlTicket"), kLSRolesAll, 0, &cfurl); - if (status != kLSApplicationNotFoundErr) { - CFBundleRef bundle = CFBundleCreate(0, cfurl); - if (CFStringCompare(CFBundleGetIdentifier(bundle), CFSTR("com.Growl.GrowlHelperApp"), kCFCompareCaseInsensitive | kCFCompareBackwards) == kCFCompareEqualTo) { - if (CFStringHasSuffix(CFURLGetString(cfurl), CFSTR("/Growl.app/"))) - mode = Growl13; - else - mode = Growl12; - } - CFRelease(cfurl); - CFRelease(bundle); - } - } -#endif -} - -Notificator::~Notificator() -{ -#ifdef USE_DBUS - delete interface; -#endif -} - -#ifdef USE_DBUS - -// Loosely based on http://www.qtcentre.org/archive/index.php/t-25879.html -class FreedesktopImage -{ -public: - FreedesktopImage() {} - FreedesktopImage(const QImage &img); - - static int metaType(); - - // Image to variant that can be marshalled over DBus - static QVariant toVariant(const QImage &img); - -private: - int width, height, stride; - bool hasAlpha; - int channels; - int bitsPerSample; - QByteArray image; - - friend QDBusArgument &operator<<(QDBusArgument &a, const FreedesktopImage &i); - friend const QDBusArgument &operator>>(const QDBusArgument &a, FreedesktopImage &i); -}; - -Q_DECLARE_METATYPE(FreedesktopImage); - -// Image configuration settings -const int CHANNELS = 4; -const int BYTES_PER_PIXEL = 4; -const int BITS_PER_SAMPLE = 8; - -FreedesktopImage::FreedesktopImage(const QImage &img): - width(img.width()), - height(img.height()), - stride(img.width() * BYTES_PER_PIXEL), - hasAlpha(true), - channels(CHANNELS), - bitsPerSample(BITS_PER_SAMPLE) -{ - // Convert 00xAARRGGBB to RGBA bytewise (endian-independent) format - QImage tmp = img.convertToFormat(QImage::Format_ARGB32); - const uint32_t *data = reinterpret_cast(tmp.bits()); - - unsigned int num_pixels = width * height; - image.resize(num_pixels * BYTES_PER_PIXEL); - - for(unsigned int ptr = 0; ptr < num_pixels; ++ptr) - { - image[ptr*BYTES_PER_PIXEL+0] = data[ptr] >> 16; // R - image[ptr*BYTES_PER_PIXEL+1] = data[ptr] >> 8; // G - image[ptr*BYTES_PER_PIXEL+2] = data[ptr]; // B - image[ptr*BYTES_PER_PIXEL+3] = data[ptr] >> 24; // A - } -} - -QDBusArgument &operator<<(QDBusArgument &a, const FreedesktopImage &i) -{ - a.beginStructure(); - a << i.width << i.height << i.stride << i.hasAlpha << i.bitsPerSample << i.channels << i.image; - a.endStructure(); - return a; -} - -const QDBusArgument &operator>>(const QDBusArgument &a, FreedesktopImage &i) -{ - a.beginStructure(); - a >> i.width >> i.height >> i.stride >> i.hasAlpha >> i.bitsPerSample >> i.channels >> i.image; - a.endStructure(); - return a; -} - -int FreedesktopImage::metaType() -{ - return qDBusRegisterMetaType(); -} - -QVariant FreedesktopImage::toVariant(const QImage &img) -{ - FreedesktopImage fimg(img); - return QVariant(FreedesktopImage::metaType(), &fimg); -} - -void Notificator::notifyDBus(Class cls, const QString &title, const QString &text, const QIcon &icon, int millisTimeout) -{ - Q_UNUSED(cls); - // Arguments for DBus call: - QList args; - - // Program Name: - args.append(programName); - - // Unique ID of this notification type: - args.append(0U); - - // Application Icon, empty string - args.append(QString()); - - // Summary - args.append(title); - - // Body - args.append(text); - - // Actions (none, actions are deprecated) - QStringList actions; - args.append(actions); - - // Hints - QVariantMap hints; - - // If no icon specified, set icon based on class - QIcon tmpicon; - if(icon.isNull()) - { - QStyle::StandardPixmap sicon = QStyle::SP_MessageBoxQuestion; - switch(cls) - { - case Information: sicon = QStyle::SP_MessageBoxInformation; break; - case Warning: sicon = QStyle::SP_MessageBoxWarning; break; - case Critical: sicon = QStyle::SP_MessageBoxCritical; break; - default: break; - } - tmpicon = QApplication::style()->standardIcon(sicon); - } - else - { - tmpicon = icon; - } - hints["icon_data"] = FreedesktopImage::toVariant(tmpicon.pixmap(FREEDESKTOP_NOTIFICATION_ICON_SIZE).toImage()); - args.append(hints); - - // Timeout (in msec) - args.append(millisTimeout); - - // "Fire and forget" - interface->callWithArgumentList(QDBus::NoBlock, "Notify", args); -} -#endif - -void Notificator::notifySystray(Class cls, const QString &title, const QString &text, const QIcon &icon, int millisTimeout) -{ - Q_UNUSED(icon); - QSystemTrayIcon::MessageIcon sicon = QSystemTrayIcon::NoIcon; - switch(cls) // Set icon based on class - { - case Information: sicon = QSystemTrayIcon::Information; break; - case Warning: sicon = QSystemTrayIcon::Warning; break; - case Critical: sicon = QSystemTrayIcon::Critical; break; - } - trayIcon->showMessage(title, text, sicon, millisTimeout); -} - -// Based on Qt's tray icon implementation -#ifdef Q_OS_MAC -void Notificator::notifyGrowl(Class cls, const QString &title, const QString &text, const QIcon &icon) -{ - const QString script( - "tell application \"%5\"\n" - " set the allNotificationsList to {\"Notification\"}\n" // -- Make a list of all the notification types (all) - " set the enabledNotificationsList to {\"Notification\"}\n" // -- Make a list of the notifications (enabled) - " register as application \"%1\" all notifications allNotificationsList default notifications enabledNotificationsList\n" // -- Register our script with Growl - " notify with name \"Notification\" title \"%2\" description \"%3\" application name \"%1\"%4\n" // -- Send a Notification - "end tell" - ); - - QString notificationApp(QApplication::applicationName()); - if (notificationApp.isEmpty()) - notificationApp = "Application"; - - QPixmap notificationIconPixmap; - if (icon.isNull()) { // If no icon specified, set icon based on class - QStyle::StandardPixmap sicon = QStyle::SP_MessageBoxQuestion; - switch (cls) - { - case Information: sicon = QStyle::SP_MessageBoxInformation; break; - case Warning: sicon = QStyle::SP_MessageBoxWarning; break; - case Critical: sicon = QStyle::SP_MessageBoxCritical; break; - } - notificationIconPixmap = QApplication::style()->standardPixmap(sicon); - } - else { - QSize size = icon.actualSize(QSize(48, 48)); - notificationIconPixmap = icon.pixmap(size); - } - - QString notificationIcon; - QTemporaryFile notificationIconFile; - if (!notificationIconPixmap.isNull() && notificationIconFile.open()) { - QImageWriter writer(¬ificationIconFile, "PNG"); - if (writer.write(notificationIconPixmap.toImage())) - notificationIcon = QString(" image from location \"file://%1\"").arg(notificationIconFile.fileName()); - } - - QString quotedTitle(title), quotedText(text); - quotedTitle.replace("\\", "\\\\").replace("\"", "\\"); - quotedText.replace("\\", "\\\\").replace("\"", "\\"); - QString growlApp(this->mode == Notificator::Growl13 ? "Growl" : "GrowlHelperApp"); - MacNotificationHandler::instance()->sendAppleScript(script.arg(notificationApp, quotedTitle, quotedText, notificationIcon, growlApp)); -} - -void Notificator::notifyMacUserNotificationCenter(Class cls, const QString &title, const QString &text, const QIcon &icon) { - // icon is not supported by the user notification center yet. OSX will use the app icon. - MacNotificationHandler::instance()->showNotification(title, text); -} - -#endif - -void Notificator::notify(Class cls, const QString &title, const QString &text, const QIcon &icon, int millisTimeout) -{ - switch(mode) - { -#ifdef USE_DBUS - case Freedesktop: - notifyDBus(cls, title, text, icon, millisTimeout); - break; -#endif - case QSystemTray: - notifySystray(cls, title, text, icon, millisTimeout); - break; -#ifdef Q_OS_MAC - case UserNotificationCenter: - notifyMacUserNotificationCenter(cls, title, text, icon); - break; - case Growl12: - case Growl13: - notifyGrowl(cls, title, text, icon); - break; -#endif - default: - if(cls == Critical) - { - // Fall back to old fashioned pop-up dialog if critical and no other notification available - QMessageBox::critical(parent, title, text, QMessageBox::Ok, QMessageBox::Ok); - } - break; - } -} diff --git a/src/qt/notificator.h b/src/qt/notificator.h deleted file mode 100644 index f2a15e9c3..000000000 --- a/src/qt/notificator.h +++ /dev/null @@ -1,80 +0,0 @@ -// Copyright (c) 2011-2013 The Bitcoin Core developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#ifndef BITCOIN_QT_NOTIFICATOR_H -#define BITCOIN_QT_NOTIFICATOR_H - -#if defined(HAVE_CONFIG_H) -#include "config/bitcoin-config.h" -#endif - -#include -#include - -QT_BEGIN_NAMESPACE -class QSystemTrayIcon; - -#ifdef USE_DBUS -class QDBusInterface; -#endif -QT_END_NAMESPACE - -/** Cross-platform desktop notification client. */ -class Notificator: public QObject -{ - Q_OBJECT - -public: - /** Create a new notificator. - @note Ownership of trayIcon is not transferred to this object. - */ - Notificator(const QString &programName, QSystemTrayIcon *trayIcon, QWidget *parent); - ~Notificator(); - - // Message class - enum Class - { - Information, /**< Informational message */ - Warning, /**< Notify user of potential problem */ - Critical /**< An error occurred */ - }; - -public Q_SLOTS: - /** Show notification message. - @param[in] cls general message class - @param[in] title title shown with message - @param[in] text message content - @param[in] icon optional icon to show with message - @param[in] millisTimeout notification timeout in milliseconds (defaults to 10 seconds) - @note Platform implementations are free to ignore any of the provided fields except for \a text. - */ - void notify(Class cls, const QString &title, const QString &text, - const QIcon &icon = QIcon(), int millisTimeout = 10000); - -private: - QWidget *parent; - enum Mode { - None, /**< Ignore informational notifications, and show a modal pop-up dialog for Critical notifications. */ - Freedesktop, /**< Use DBus org.freedesktop.Notifications */ - QSystemTray, /**< Use QSystemTray::showMessage */ - Growl12, /**< Use the Growl 1.2 notification system (Mac only) */ - Growl13, /**< Use the Growl 1.3 notification system (Mac only) */ - UserNotificationCenter /**< Use the 10.8+ User Notification Center (Mac only) */ - }; - QString programName; - Mode mode; - QSystemTrayIcon *trayIcon; -#ifdef USE_DBUS - QDBusInterface *interface; - - void notifyDBus(Class cls, const QString &title, const QString &text, const QIcon &icon, int millisTimeout); -#endif - void notifySystray(Class cls, const QString &title, const QString &text, const QIcon &icon, int millisTimeout); -#ifdef Q_OS_MAC - void notifyGrowl(Class cls, const QString &title, const QString &text, const QIcon &icon); - void notifyMacUserNotificationCenter(Class cls, const QString &title, const QString &text, const QIcon &icon); -#endif -}; - -#endif // BITCOIN_QT_NOTIFICATOR_H diff --git a/src/qt/openuridialog.cpp b/src/qt/openuridialog.cpp deleted file mode 100644 index 1c843aecb..000000000 --- a/src/qt/openuridialog.cpp +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright (c) 2011-2013 The Bitcoin Core developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#include "openuridialog.h" -#include "ui_openuridialog.h" - -#include "guiutil.h" -#include "walletmodel.h" - -#include - -OpenURIDialog::OpenURIDialog(QWidget *parent) : - QDialog(parent), - ui(new Ui::OpenURIDialog) -{ - ui->setupUi(this); -#if QT_VERSION >= 0x040700 - ui->uriEdit->setPlaceholderText("bitcoin:"); -#endif -} - -OpenURIDialog::~OpenURIDialog() -{ - delete ui; -} - -QString OpenURIDialog::getURI() -{ - return ui->uriEdit->text(); -} - -void OpenURIDialog::accept() -{ - SendCoinsRecipient rcp; - if(GUIUtil::parseBitcoinURI(getURI(), &rcp)) - { - /* Only accept value URIs */ - QDialog::accept(); - } else { - ui->uriEdit->setValid(false); - } -} - -void OpenURIDialog::on_selectFileButton_clicked() -{ - QString filename = GUIUtil::getOpenFileName(this, tr("Select payment request file to open"), "", "", NULL); - if(filename.isEmpty()) - return; - QUrl fileUri = QUrl::fromLocalFile(filename); - ui->uriEdit->setText("bitcoin:?r=" + QUrl::toPercentEncoding(fileUri.toString())); -} diff --git a/src/qt/openuridialog.h b/src/qt/openuridialog.h deleted file mode 100644 index 28b8f56ca..000000000 --- a/src/qt/openuridialog.h +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright (c) 2011-2013 The Bitcoin Core developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#ifndef BITCOIN_QT_OPENURIDIALOG_H -#define BITCOIN_QT_OPENURIDIALOG_H - -#include - -namespace Ui { - class OpenURIDialog; -} - -class OpenURIDialog : public QDialog -{ - Q_OBJECT - -public: - explicit OpenURIDialog(QWidget *parent); - ~OpenURIDialog(); - - QString getURI(); - -protected Q_SLOTS: - void accept(); - -private Q_SLOTS: - void on_selectFileButton_clicked(); - -private: - Ui::OpenURIDialog *ui; -}; - -#endif // BITCOIN_QT_OPENURIDIALOG_H diff --git a/src/qt/optionsdialog.cpp b/src/qt/optionsdialog.cpp deleted file mode 100644 index 173199290..000000000 --- a/src/qt/optionsdialog.cpp +++ /dev/null @@ -1,288 +0,0 @@ -// Copyright (c) 2011-2013 The Bitcoin Core developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#if defined(HAVE_CONFIG_H) -#include "config/bitcoin-config.h" -#endif - -#include "optionsdialog.h" -#include "ui_optionsdialog.h" - -#include "bitcoinunits.h" -#include "guiutil.h" -#include "optionsmodel.h" - -#include "main.h" // for MAX_SCRIPTCHECK_THREADS -#include "netbase.h" -#include "txdb.h" // for -dbcache defaults - -#ifdef ENABLE_WALLET -#include "wallet/wallet.h" // for CWallet::minTxFee -#endif - -#include - -#include -#include -#include -#include -#include -#include - -OptionsDialog::OptionsDialog(QWidget *parent, bool enableWallet) : - QDialog(parent), - ui(new Ui::OptionsDialog), - model(0), - mapper(0), - fProxyIpValid(true) -{ - ui->setupUi(this); - - /* Main elements init */ - ui->databaseCache->setMinimum(nMinDbCache); - ui->databaseCache->setMaximum(nMaxDbCache); - ui->threadsScriptVerif->setMinimum(-(int)boost::thread::hardware_concurrency()); - ui->threadsScriptVerif->setMaximum(MAX_SCRIPTCHECK_THREADS); - - /* Network elements init */ -#ifndef USE_UPNP - ui->mapPortUpnp->setEnabled(false); -#endif - - ui->proxyIp->setEnabled(false); - ui->proxyPort->setEnabled(false); - ui->proxyPort->setValidator(new QIntValidator(1, 65535, this)); - - connect(ui->connectSocks, SIGNAL(toggled(bool)), ui->proxyIp, SLOT(setEnabled(bool))); - connect(ui->connectSocks, SIGNAL(toggled(bool)), ui->proxyPort, SLOT(setEnabled(bool))); - - ui->proxyIp->installEventFilter(this); - - /* Window elements init */ -#ifdef Q_OS_MAC - /* remove Window tab on Mac */ - ui->tabWidget->removeTab(ui->tabWidget->indexOf(ui->tabWindow)); -#endif - - /* remove Wallet tab in case of -disablewallet */ - if (!enableWallet) { - ui->tabWidget->removeTab(ui->tabWidget->indexOf(ui->tabWallet)); - } - - /* Display elements init */ - QDir translations(":translations"); - ui->lang->addItem(QString("(") + tr("default") + QString(")"), QVariant("")); - Q_FOREACH(const QString &langStr, translations.entryList()) - { - QLocale locale(langStr); - - /** check if the locale name consists of 2 parts (language_country) */ - if(langStr.contains("_")) - { -#if QT_VERSION >= 0x040800 - /** display language strings as "native language - native country (locale name)", e.g. "Deutsch - Deutschland (de)" */ - ui->lang->addItem(locale.nativeLanguageName() + QString(" - ") + locale.nativeCountryName() + QString(" (") + langStr + QString(")"), QVariant(langStr)); -#else - /** display language strings as "language - country (locale name)", e.g. "German - Germany (de)" */ - ui->lang->addItem(QLocale::languageToString(locale.language()) + QString(" - ") + QLocale::countryToString(locale.country()) + QString(" (") + langStr + QString(")"), QVariant(langStr)); -#endif - } - else - { -#if QT_VERSION >= 0x040800 - /** display language strings as "native language (locale name)", e.g. "Deutsch (de)" */ - ui->lang->addItem(locale.nativeLanguageName() + QString(" (") + langStr + QString(")"), QVariant(langStr)); -#else - /** display language strings as "language (locale name)", e.g. "German (de)" */ - ui->lang->addItem(QLocale::languageToString(locale.language()) + QString(" (") + langStr + QString(")"), QVariant(langStr)); -#endif - } - } -#if QT_VERSION >= 0x040700 - ui->thirdPartyTxUrls->setPlaceholderText("https://example.com/tx/%s"); -#endif - - ui->unit->setModel(new BitcoinUnits(this)); - - /* Widget-to-option mapper */ - mapper = new QDataWidgetMapper(this); - mapper->setSubmitPolicy(QDataWidgetMapper::ManualSubmit); - mapper->setOrientation(Qt::Vertical); - - /* setup/change UI elements when proxy IP is invalid/valid */ - connect(this, SIGNAL(proxyIpChecks(QValidatedLineEdit *, int)), this, SLOT(doProxyIpChecks(QValidatedLineEdit *, int))); -} - -OptionsDialog::~OptionsDialog() -{ - delete ui; -} - -void OptionsDialog::setModel(OptionsModel *model) -{ - this->model = model; - - if(model) - { - /* check if client restart is needed and show persistent message */ - if (model->isRestartRequired()) - showRestartWarning(true); - - QString strLabel = model->getOverriddenByCommandLine(); - if (strLabel.isEmpty()) - strLabel = tr("none"); - ui->overriddenByCommandLineLabel->setText(strLabel); - - mapper->setModel(model); - setMapper(); - mapper->toFirst(); - } - - /* warn when one of the following settings changes by user action (placed here so init via mapper doesn't trigger them) */ - - /* Main */ - connect(ui->databaseCache, SIGNAL(valueChanged(int)), this, SLOT(showRestartWarning())); - connect(ui->threadsScriptVerif, SIGNAL(valueChanged(int)), this, SLOT(showRestartWarning())); - /* Wallet */ - connect(ui->spendZeroConfChange, SIGNAL(clicked(bool)), this, SLOT(showRestartWarning())); - /* Network */ - connect(ui->allowIncoming, SIGNAL(clicked(bool)), this, SLOT(showRestartWarning())); - connect(ui->connectSocks, SIGNAL(clicked(bool)), this, SLOT(showRestartWarning())); - /* Display */ - connect(ui->lang, SIGNAL(valueChanged()), this, SLOT(showRestartWarning())); - connect(ui->thirdPartyTxUrls, SIGNAL(textChanged(const QString &)), this, SLOT(showRestartWarning())); -} - -void OptionsDialog::setMapper() -{ - /* Main */ - mapper->addMapping(ui->bitcoinAtStartup, OptionsModel::StartAtStartup); - mapper->addMapping(ui->threadsScriptVerif, OptionsModel::ThreadsScriptVerif); - mapper->addMapping(ui->databaseCache, OptionsModel::DatabaseCache); - - /* Wallet */ - mapper->addMapping(ui->spendZeroConfChange, OptionsModel::SpendZeroConfChange); - mapper->addMapping(ui->coinControlFeatures, OptionsModel::CoinControlFeatures); - - /* Network */ - mapper->addMapping(ui->mapPortUpnp, OptionsModel::MapPortUPnP); - mapper->addMapping(ui->allowIncoming, OptionsModel::Listen); - - mapper->addMapping(ui->connectSocks, OptionsModel::ProxyUse); - mapper->addMapping(ui->proxyIp, OptionsModel::ProxyIP); - mapper->addMapping(ui->proxyPort, OptionsModel::ProxyPort); - - /* Window */ -#ifndef Q_OS_MAC - mapper->addMapping(ui->minimizeToTray, OptionsModel::MinimizeToTray); - mapper->addMapping(ui->minimizeOnClose, OptionsModel::MinimizeOnClose); -#endif - - /* Display */ - mapper->addMapping(ui->lang, OptionsModel::Language); - mapper->addMapping(ui->unit, OptionsModel::DisplayUnit); - mapper->addMapping(ui->thirdPartyTxUrls, OptionsModel::ThirdPartyTxUrls); -} - -void OptionsDialog::enableOkButton() -{ - /* prevent enabling of the OK button when data modified, if there is an invalid proxy address present */ - if(fProxyIpValid) - setOkButtonState(true); -} - -void OptionsDialog::disableOkButton() -{ - setOkButtonState(false); -} - -void OptionsDialog::setOkButtonState(bool fState) -{ - ui->okButton->setEnabled(fState); -} - -void OptionsDialog::on_resetButton_clicked() -{ - if(model) - { - // confirmation dialog - QMessageBox::StandardButton btnRetVal = QMessageBox::question(this, tr("Confirm options reset"), - tr("Client restart required to activate changes.") + "

" + tr("Client will be shut down. Do you want to proceed?"), - QMessageBox::Yes | QMessageBox::Cancel, QMessageBox::Cancel); - - if(btnRetVal == QMessageBox::Cancel) - return; - - /* reset all options and close GUI */ - model->Reset(); - QApplication::quit(); - } -} - -void OptionsDialog::on_okButton_clicked() -{ - mapper->submit(); - accept(); -} - -void OptionsDialog::on_cancelButton_clicked() -{ - reject(); -} - -void OptionsDialog::showRestartWarning(bool fPersistent) -{ - ui->statusLabel->setStyleSheet("QLabel { color: red; }"); - - if(fPersistent) - { - ui->statusLabel->setText(tr("Client restart required to activate changes.")); - } - else - { - ui->statusLabel->setText(tr("This change would require a client restart.")); - // clear non-persistent status label after 10 seconds - // Todo: should perhaps be a class attribute, if we extend the use of statusLabel - QTimer::singleShot(10000, this, SLOT(clearStatusLabel())); - } -} - -void OptionsDialog::clearStatusLabel() -{ - ui->statusLabel->clear(); -} - -void OptionsDialog::doProxyIpChecks(QValidatedLineEdit *pUiProxyIp, int nProxyPort) -{ - Q_UNUSED(nProxyPort); - - const std::string strAddrProxy = pUiProxyIp->text().toStdString(); - CService addrProxy; - - /* Check for a valid IPv4 / IPv6 address */ - if (!(fProxyIpValid = LookupNumeric(strAddrProxy.c_str(), addrProxy))) - { - disableOkButton(); - pUiProxyIp->setValid(false); - ui->statusLabel->setStyleSheet("QLabel { color: red; }"); - ui->statusLabel->setText(tr("The supplied proxy address is invalid.")); - } - else - { - enableOkButton(); - ui->statusLabel->clear(); - } -} - -bool OptionsDialog::eventFilter(QObject *object, QEvent *event) -{ - if(event->type() == QEvent::FocusOut) - { - if(object == ui->proxyIp) - { - Q_EMIT proxyIpChecks(ui->proxyIp, ui->proxyPort->text().toInt()); - } - } - return QDialog::eventFilter(object, event); -} diff --git a/src/qt/optionsdialog.h b/src/qt/optionsdialog.h deleted file mode 100644 index fa983e798..000000000 --- a/src/qt/optionsdialog.h +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright (c) 2011-2013 The Bitcoin Core developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#ifndef BITCOIN_QT_OPTIONSDIALOG_H -#define BITCOIN_QT_OPTIONSDIALOG_H - -#include - -class OptionsModel; -class QValidatedLineEdit; - -QT_BEGIN_NAMESPACE -class QDataWidgetMapper; -QT_END_NAMESPACE - -namespace Ui { -class OptionsDialog; -} - -/** Preferences dialog. */ -class OptionsDialog : public QDialog -{ - Q_OBJECT - -public: - explicit OptionsDialog(QWidget *parent, bool enableWallet); - ~OptionsDialog(); - - void setModel(OptionsModel *model); - void setMapper(); - -protected: - bool eventFilter(QObject *object, QEvent *event); - -private Q_SLOTS: - /* enable OK button */ - void enableOkButton(); - /* disable OK button */ - void disableOkButton(); - /* set OK button state (enabled / disabled) */ - void setOkButtonState(bool fState); - void on_resetButton_clicked(); - void on_okButton_clicked(); - void on_cancelButton_clicked(); - - void showRestartWarning(bool fPersistent = false); - void clearStatusLabel(); - void doProxyIpChecks(QValidatedLineEdit *pUiProxyIp, int nProxyPort); - -Q_SIGNALS: - void proxyIpChecks(QValidatedLineEdit *pUiProxyIp, int nProxyPort); - -private: - Ui::OptionsDialog *ui; - OptionsModel *model; - QDataWidgetMapper *mapper; - bool fProxyIpValid; -}; - -#endif // BITCOIN_QT_OPTIONSDIALOG_H diff --git a/src/qt/optionsmodel.cpp b/src/qt/optionsmodel.cpp deleted file mode 100644 index b4ce8191d..000000000 --- a/src/qt/optionsmodel.cpp +++ /dev/null @@ -1,359 +0,0 @@ -// Copyright (c) 2011-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. - -#if defined(HAVE_CONFIG_H) -#include "config/bitcoin-config.h" -#endif - -#include "optionsmodel.h" - -#include "bitcoinunits.h" -#include "guiutil.h" - -#include "amount.h" -#include "init.h" -#include "main.h" -#include "net.h" -#include "txdb.h" // for -dbcache defaults - -#ifdef ENABLE_WALLET -#include "wallet/wallet.h" -#include "wallet/walletdb.h" -#endif - -#include -#include -#include - -OptionsModel::OptionsModel(QObject *parent) : - QAbstractListModel(parent) -{ - Init(); -} - -void OptionsModel::addOverriddenOption(const std::string &option) -{ - strOverriddenByCommandLine += QString::fromStdString(option) + "=" + QString::fromStdString(mapArgs[option]) + " "; -} - -// Writes all missing QSettings with their default values -void OptionsModel::Init() -{ - QSettings settings; - - // Ensure restart flag is unset on client startup - setRestartRequired(false); - - // These are Qt-only settings: - - // Window - if (!settings.contains("fMinimizeToTray")) - settings.setValue("fMinimizeToTray", false); - fMinimizeToTray = settings.value("fMinimizeToTray").toBool(); - - if (!settings.contains("fMinimizeOnClose")) - settings.setValue("fMinimizeOnClose", false); - fMinimizeOnClose = settings.value("fMinimizeOnClose").toBool(); - - // Display - if (!settings.contains("nDisplayUnit")) - settings.setValue("nDisplayUnit", BitcoinUnits::BTC); - nDisplayUnit = settings.value("nDisplayUnit").toInt(); - - if (!settings.contains("strThirdPartyTxUrls")) - settings.setValue("strThirdPartyTxUrls", ""); - strThirdPartyTxUrls = settings.value("strThirdPartyTxUrls", "").toString(); - - if (!settings.contains("fCoinControlFeatures")) - settings.setValue("fCoinControlFeatures", false); - fCoinControlFeatures = settings.value("fCoinControlFeatures", false).toBool(); - - // These are shared with the core or have a command-line parameter - // and we want command-line parameters to overwrite the GUI settings. - // - // If setting doesn't exist create it with defaults. - // - // If SoftSetArg() or SoftSetBoolArg() return false we were overridden - // by command-line and show this in the UI. - - // Main - if (!settings.contains("nDatabaseCache")) - settings.setValue("nDatabaseCache", (qint64)nDefaultDbCache); - if (!SoftSetArg("-dbcache", settings.value("nDatabaseCache").toString().toStdString())) - addOverriddenOption("-dbcache"); - - if (!settings.contains("nThreadsScriptVerif")) - settings.setValue("nThreadsScriptVerif", DEFAULT_SCRIPTCHECK_THREADS); - if (!SoftSetArg("-par", settings.value("nThreadsScriptVerif").toString().toStdString())) - addOverriddenOption("-par"); - - // Wallet -#ifdef ENABLE_WALLET - if (!settings.contains("bSpendZeroConfChange")) - settings.setValue("bSpendZeroConfChange", true); - if (!SoftSetBoolArg("-spendzeroconfchange", settings.value("bSpendZeroConfChange").toBool())) - addOverriddenOption("-spendzeroconfchange"); -#endif - - // Network - if (!settings.contains("fUseUPnP")) - settings.setValue("fUseUPnP", DEFAULT_UPNP); - if (!SoftSetBoolArg("-upnp", settings.value("fUseUPnP").toBool())) - addOverriddenOption("-upnp"); - - if (!settings.contains("fListen")) - settings.setValue("fListen", DEFAULT_LISTEN); - if (!SoftSetBoolArg("-listen", settings.value("fListen").toBool())) - addOverriddenOption("-listen"); - - if (!settings.contains("fUseProxy")) - settings.setValue("fUseProxy", false); - if (!settings.contains("addrProxy")) - settings.setValue("addrProxy", "127.0.0.1:9050"); - // Only try to set -proxy, if user has enabled fUseProxy - if (settings.value("fUseProxy").toBool() && !SoftSetArg("-proxy", settings.value("addrProxy").toString().toStdString())) - addOverriddenOption("-proxy"); - else if(!settings.value("fUseProxy").toBool() && !GetArg("-proxy", "").empty()) - addOverriddenOption("-proxy"); - - // Display - if (!settings.contains("language")) - settings.setValue("language", ""); - if (!SoftSetArg("-lang", settings.value("language").toString().toStdString())) - addOverriddenOption("-lang"); - - language = settings.value("language").toString(); -} - -void OptionsModel::Reset() -{ - QSettings settings; - - // Remove all entries from our QSettings object - settings.clear(); - - // default setting for OptionsModel::StartAtStartup - disabled - if (GUIUtil::GetStartOnSystemStartup()) - GUIUtil::SetStartOnSystemStartup(false); -} - -int OptionsModel::rowCount(const QModelIndex & parent) const -{ - return OptionIDRowCount; -} - -// read QSettings values and return them -QVariant OptionsModel::data(const QModelIndex & index, int role) const -{ - if(role == Qt::EditRole) - { - QSettings settings; - switch(index.row()) - { - case StartAtStartup: - return GUIUtil::GetStartOnSystemStartup(); - case MinimizeToTray: - return fMinimizeToTray; - case MapPortUPnP: -#ifdef USE_UPNP - return settings.value("fUseUPnP"); -#else - return false; -#endif - case MinimizeOnClose: - return fMinimizeOnClose; - - // default proxy - case ProxyUse: - return settings.value("fUseProxy", false); - case ProxyIP: { - // contains IP at index 0 and port at index 1 - QStringList strlIpPort = settings.value("addrProxy").toString().split(":", QString::SkipEmptyParts); - return strlIpPort.at(0); - } - case ProxyPort: { - // contains IP at index 0 and port at index 1 - QStringList strlIpPort = settings.value("addrProxy").toString().split(":", QString::SkipEmptyParts); - return strlIpPort.at(1); - } - -#ifdef ENABLE_WALLET - case SpendZeroConfChange: - return settings.value("bSpendZeroConfChange"); -#endif - case DisplayUnit: - return nDisplayUnit; - case ThirdPartyTxUrls: - return strThirdPartyTxUrls; - case Language: - return settings.value("language"); - case CoinControlFeatures: - return fCoinControlFeatures; - case DatabaseCache: - return settings.value("nDatabaseCache"); - case ThreadsScriptVerif: - return settings.value("nThreadsScriptVerif"); - case Listen: - return settings.value("fListen"); - default: - return QVariant(); - } - } - return QVariant(); -} - -// write QSettings values -bool OptionsModel::setData(const QModelIndex & index, const QVariant & value, int role) -{ - bool successful = true; /* set to false on parse error */ - if(role == Qt::EditRole) - { - QSettings settings; - switch(index.row()) - { - case StartAtStartup: - successful = GUIUtil::SetStartOnSystemStartup(value.toBool()); - break; - case MinimizeToTray: - fMinimizeToTray = value.toBool(); - settings.setValue("fMinimizeToTray", fMinimizeToTray); - break; - case MapPortUPnP: // core option - can be changed on-the-fly - settings.setValue("fUseUPnP", value.toBool()); - MapPort(value.toBool()); - break; - case MinimizeOnClose: - fMinimizeOnClose = value.toBool(); - settings.setValue("fMinimizeOnClose", fMinimizeOnClose); - break; - - // default proxy - case ProxyUse: - if (settings.value("fUseProxy") != value) { - settings.setValue("fUseProxy", value.toBool()); - setRestartRequired(true); - } - break; - case ProxyIP: { - // contains current IP at index 0 and current port at index 1 - QStringList strlIpPort = settings.value("addrProxy").toString().split(":", QString::SkipEmptyParts); - // if that key doesn't exist or has a changed IP - if (!settings.contains("addrProxy") || strlIpPort.at(0) != value.toString()) { - // construct new value from new IP and current port - QString strNewValue = value.toString() + ":" + strlIpPort.at(1); - settings.setValue("addrProxy", strNewValue); - setRestartRequired(true); - } - } - break; - case ProxyPort: { - // contains current IP at index 0 and current port at index 1 - QStringList strlIpPort = settings.value("addrProxy").toString().split(":", QString::SkipEmptyParts); - // if that key doesn't exist or has a changed port - if (!settings.contains("addrProxy") || strlIpPort.at(1) != value.toString()) { - // construct new value from current IP and new port - QString strNewValue = strlIpPort.at(0) + ":" + value.toString(); - settings.setValue("addrProxy", strNewValue); - setRestartRequired(true); - } - } - break; -#ifdef ENABLE_WALLET - case SpendZeroConfChange: - if (settings.value("bSpendZeroConfChange") != value) { - settings.setValue("bSpendZeroConfChange", value); - setRestartRequired(true); - } - break; -#endif - case DisplayUnit: - setDisplayUnit(value); - break; - case ThirdPartyTxUrls: - if (strThirdPartyTxUrls != value.toString()) { - strThirdPartyTxUrls = value.toString(); - settings.setValue("strThirdPartyTxUrls", strThirdPartyTxUrls); - setRestartRequired(true); - } - break; - case Language: - if (settings.value("language") != value) { - settings.setValue("language", value); - setRestartRequired(true); - } - break; - case CoinControlFeatures: - fCoinControlFeatures = value.toBool(); - settings.setValue("fCoinControlFeatures", fCoinControlFeatures); - Q_EMIT coinControlFeaturesChanged(fCoinControlFeatures); - break; - case DatabaseCache: - if (settings.value("nDatabaseCache") != value) { - settings.setValue("nDatabaseCache", value); - setRestartRequired(true); - } - break; - case ThreadsScriptVerif: - if (settings.value("nThreadsScriptVerif") != value) { - settings.setValue("nThreadsScriptVerif", value); - setRestartRequired(true); - } - break; - case Listen: - if (settings.value("fListen") != value) { - settings.setValue("fListen", value); - setRestartRequired(true); - } - break; - default: - break; - } - } - - Q_EMIT dataChanged(index, index); - - return successful; -} - -/** Updates current unit in memory, settings and emits displayUnitChanged(newUnit) signal */ -void OptionsModel::setDisplayUnit(const QVariant &value) -{ - if (!value.isNull()) - { - QSettings settings; - nDisplayUnit = value.toInt(); - settings.setValue("nDisplayUnit", nDisplayUnit); - Q_EMIT displayUnitChanged(nDisplayUnit); - } -} - -bool OptionsModel::getProxySettings(QNetworkProxy& proxy) const -{ - // Directly query current base proxy, because - // GUI settings can be overridden with -proxy. - proxyType curProxy; - if (GetProxy(NET_IPV4, curProxy)) { - proxy.setType(QNetworkProxy::Socks5Proxy); - proxy.setHostName(QString::fromStdString(curProxy.proxy.ToStringIP())); - proxy.setPort(curProxy.proxy.GetPort()); - - return true; - } - else - proxy.setType(QNetworkProxy::NoProxy); - - return false; -} - -void OptionsModel::setRestartRequired(bool fRequired) -{ - QSettings settings; - return settings.setValue("fRestartRequired", fRequired); -} - -bool OptionsModel::isRestartRequired() -{ - QSettings settings; - return settings.value("fRestartRequired", false).toBool(); -} diff --git a/src/qt/optionsmodel.h b/src/qt/optionsmodel.h deleted file mode 100644 index fc26d65b0..000000000 --- a/src/qt/optionsmodel.h +++ /dev/null @@ -1,89 +0,0 @@ -// Copyright (c) 2011-2013 The Bitcoin Core developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#ifndef BITCOIN_QT_OPTIONSMODEL_H -#define BITCOIN_QT_OPTIONSMODEL_H - -#include "amount.h" - -#include - -QT_BEGIN_NAMESPACE -class QNetworkProxy; -QT_END_NAMESPACE - -/** Interface from Qt to configuration data structure for Bitcoin client. - To Qt, the options are presented as a list with the different options - laid out vertically. - This can be changed to a tree once the settings become sufficiently - complex. - */ -class OptionsModel : public QAbstractListModel -{ - Q_OBJECT - -public: - explicit OptionsModel(QObject *parent = 0); - - enum OptionID { - StartAtStartup, // bool - MinimizeToTray, // bool - MapPortUPnP, // bool - MinimizeOnClose, // bool - ProxyUse, // bool - ProxyIP, // QString - ProxyPort, // int - DisplayUnit, // BitcoinUnits::Unit - ThirdPartyTxUrls, // QString - Language, // QString - CoinControlFeatures, // bool - ThreadsScriptVerif, // int - DatabaseCache, // int - SpendZeroConfChange, // bool - Listen, // bool - OptionIDRowCount, - }; - - void Init(); - void Reset(); - - int rowCount(const QModelIndex & parent = QModelIndex()) const; - QVariant data(const QModelIndex & index, int role = Qt::DisplayRole) const; - bool setData(const QModelIndex & index, const QVariant & value, int role = Qt::EditRole); - /** Updates current unit in memory, settings and emits displayUnitChanged(newUnit) signal */ - void setDisplayUnit(const QVariant &value); - - /* Explicit getters */ - bool getMinimizeToTray() { return fMinimizeToTray; } - bool getMinimizeOnClose() { return fMinimizeOnClose; } - int getDisplayUnit() { return nDisplayUnit; } - QString getThirdPartyTxUrls() { return strThirdPartyTxUrls; } - bool getProxySettings(QNetworkProxy& proxy) const; - bool getCoinControlFeatures() { return fCoinControlFeatures; } - const QString& getOverriddenByCommandLine() { return strOverriddenByCommandLine; } - - /* Restart flag helper */ - void setRestartRequired(bool fRequired); - bool isRestartRequired(); - -private: - /* Qt-only settings */ - bool fMinimizeToTray; - bool fMinimizeOnClose; - QString language; - int nDisplayUnit; - QString strThirdPartyTxUrls; - bool fCoinControlFeatures; - /* settings that were overriden by command-line */ - QString strOverriddenByCommandLine; - - /// Add option to list of GUI options overridden through command line/config file - void addOverriddenOption(const std::string &option); - -Q_SIGNALS: - void displayUnitChanged(int unit); - void coinControlFeaturesChanged(bool); -}; - -#endif // BITCOIN_QT_OPTIONSMODEL_H diff --git a/src/qt/overviewpage.cpp b/src/qt/overviewpage.cpp deleted file mode 100644 index bbd95ef47..000000000 --- a/src/qt/overviewpage.cpp +++ /dev/null @@ -1,264 +0,0 @@ -// Copyright (c) 2011-2013 The Bitcoin Core developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#include "overviewpage.h" -#include "ui_overviewpage.h" - -#include "bitcoinunits.h" -#include "clientmodel.h" -#include "guiconstants.h" -#include "guiutil.h" -#include "optionsmodel.h" -#include "scicon.h" -#include "transactionfilterproxy.h" -#include "transactiontablemodel.h" -#include "walletmodel.h" - -#include -#include - -#define DECORATION_SIZE 54 -#define NUM_ITEMS 5 - -class TxViewDelegate : public QAbstractItemDelegate -{ - Q_OBJECT -public: - TxViewDelegate(): QAbstractItemDelegate(), unit(BitcoinUnits::BTC) - { - - } - - inline void paint(QPainter *painter, const QStyleOptionViewItem &option, - const QModelIndex &index ) const - { - painter->save(); - - QIcon icon = qvariant_cast(index.data(TransactionTableModel::RawDecorationRole)); - QRect mainRect = option.rect; - QRect decorationRect(mainRect.topLeft(), QSize(DECORATION_SIZE, DECORATION_SIZE)); - int xspace = DECORATION_SIZE + 8; - int ypad = 6; - int halfheight = (mainRect.height() - 2*ypad)/2; - QRect amountRect(mainRect.left() + xspace, mainRect.top()+ypad, mainRect.width() - xspace, halfheight); - QRect addressRect(mainRect.left() + xspace, mainRect.top()+ypad+halfheight, mainRect.width() - xspace, halfheight); - icon = SingleColorIcon(icon, SingleColor()); - icon.paint(painter, decorationRect); - - QDateTime date = index.data(TransactionTableModel::DateRole).toDateTime(); - QString address = index.data(Qt::DisplayRole).toString(); - qint64 amount = index.data(TransactionTableModel::AmountRole).toLongLong(); - bool confirmed = index.data(TransactionTableModel::ConfirmedRole).toBool(); - QVariant value = index.data(Qt::ForegroundRole); - QColor foreground = option.palette.color(QPalette::Text); - if(value.canConvert()) - { - QBrush brush = qvariant_cast(value); - foreground = brush.color(); - } - - painter->setPen(foreground); - QRect boundingRect; - painter->drawText(addressRect, Qt::AlignLeft|Qt::AlignVCenter, address, &boundingRect); - - if (index.data(TransactionTableModel::WatchonlyRole).toBool()) - { - QIcon iconWatchonly = qvariant_cast(index.data(TransactionTableModel::WatchonlyDecorationRole)); - QRect watchonlyRect(boundingRect.right() + 5, mainRect.top()+ypad+halfheight, 16, halfheight); - iconWatchonly.paint(painter, watchonlyRect); - } - - if(amount < 0) - { - foreground = COLOR_NEGATIVE; - } - else if(!confirmed) - { - foreground = COLOR_UNCONFIRMED; - } - else - { - foreground = option.palette.color(QPalette::Text); - } - painter->setPen(foreground); - QString amountText = BitcoinUnits::formatWithUnit(unit, amount, true, BitcoinUnits::separatorAlways); - if(!confirmed) - { - amountText = QString("[") + amountText + QString("]"); - } - painter->drawText(amountRect, Qt::AlignRight|Qt::AlignVCenter, amountText); - - painter->setPen(option.palette.color(QPalette::Text)); - painter->drawText(amountRect, Qt::AlignLeft|Qt::AlignVCenter, GUIUtil::dateTimeStr(date)); - - painter->restore(); - } - - inline QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const - { - return QSize(DECORATION_SIZE, DECORATION_SIZE); - } - - int unit; - -}; -#include "overviewpage.moc" - -OverviewPage::OverviewPage(QWidget *parent) : - QWidget(parent), - ui(new Ui::OverviewPage), - clientModel(0), - walletModel(0), - currentBalance(-1), - currentUnconfirmedBalance(-1), - currentImmatureBalance(-1), - currentWatchOnlyBalance(-1), - currentWatchUnconfBalance(-1), - currentWatchImmatureBalance(-1), - txdelegate(new TxViewDelegate()), - filter(0) -{ - ui->setupUi(this); - - // use a SingleColorIcon for the "out of sync warning" icon - QIcon icon = SingleColorIcon(":/icons/warning"); - icon.addPixmap(icon.pixmap(QSize(64,64), QIcon::Normal), QIcon::Disabled); // also set the disabled icon because we are using a disabled QPushButton to work around missing HiDPI support of QLabel (https://bugreports.qt.io/browse/QTBUG-42503) - ui->labelTransactionsStatus->setIcon(icon); - ui->labelWalletStatus->setIcon(icon); - - // Recent transactions - ui->listTransactions->setItemDelegate(txdelegate); - ui->listTransactions->setIconSize(QSize(DECORATION_SIZE, DECORATION_SIZE)); - ui->listTransactions->setMinimumHeight(NUM_ITEMS * (DECORATION_SIZE + 2)); - ui->listTransactions->setAttribute(Qt::WA_MacShowFocusRect, false); - - connect(ui->listTransactions, SIGNAL(clicked(QModelIndex)), this, SLOT(handleTransactionClicked(QModelIndex))); - - // start with displaying the "out of sync" warnings - showOutOfSyncWarning(true); -} - -void OverviewPage::handleTransactionClicked(const QModelIndex &index) -{ - if(filter) - Q_EMIT transactionClicked(filter->mapToSource(index)); -} - -OverviewPage::~OverviewPage() -{ - delete ui; -} - -void OverviewPage::setBalance(const CAmount& balance, const CAmount& unconfirmedBalance, const CAmount& immatureBalance, const CAmount& watchOnlyBalance, const CAmount& watchUnconfBalance, const CAmount& watchImmatureBalance) -{ - int unit = walletModel->getOptionsModel()->getDisplayUnit(); - currentBalance = balance; - currentUnconfirmedBalance = unconfirmedBalance; - currentImmatureBalance = immatureBalance; - currentWatchOnlyBalance = watchOnlyBalance; - currentWatchUnconfBalance = watchUnconfBalance; - currentWatchImmatureBalance = watchImmatureBalance; - ui->labelBalance->setText(BitcoinUnits::formatWithUnit(unit, balance, false, BitcoinUnits::separatorAlways)); - ui->labelUnconfirmed->setText(BitcoinUnits::formatWithUnit(unit, unconfirmedBalance, false, BitcoinUnits::separatorAlways)); - ui->labelImmature->setText(BitcoinUnits::formatWithUnit(unit, immatureBalance, false, BitcoinUnits::separatorAlways)); - ui->labelTotal->setText(BitcoinUnits::formatWithUnit(unit, balance + unconfirmedBalance + immatureBalance, false, BitcoinUnits::separatorAlways)); - ui->labelWatchAvailable->setText(BitcoinUnits::formatWithUnit(unit, watchOnlyBalance, false, BitcoinUnits::separatorAlways)); - ui->labelWatchPending->setText(BitcoinUnits::formatWithUnit(unit, watchUnconfBalance, false, BitcoinUnits::separatorAlways)); - ui->labelWatchImmature->setText(BitcoinUnits::formatWithUnit(unit, watchImmatureBalance, false, BitcoinUnits::separatorAlways)); - ui->labelWatchTotal->setText(BitcoinUnits::formatWithUnit(unit, watchOnlyBalance + watchUnconfBalance + watchImmatureBalance, false, BitcoinUnits::separatorAlways)); - - // only show immature (newly mined) balance if it's non-zero, so as not to complicate things - // for the non-mining users - bool showImmature = immatureBalance != 0; - bool showWatchOnlyImmature = watchImmatureBalance != 0; - - // for symmetry reasons also show immature label when the watch-only one is shown - ui->labelImmature->setVisible(showImmature || showWatchOnlyImmature); - ui->labelImmatureText->setVisible(showImmature || showWatchOnlyImmature); - ui->labelWatchImmature->setVisible(showWatchOnlyImmature); // show watch-only immature balance -} - -// show/hide watch-only labels -void OverviewPage::updateWatchOnlyLabels(bool showWatchOnly) -{ - ui->labelSpendable->setVisible(showWatchOnly); // show spendable label (only when watch-only is active) - ui->labelWatchonly->setVisible(showWatchOnly); // show watch-only label - ui->lineWatchBalance->setVisible(showWatchOnly); // show watch-only balance separator line - ui->labelWatchAvailable->setVisible(showWatchOnly); // show watch-only available balance - ui->labelWatchPending->setVisible(showWatchOnly); // show watch-only pending balance - ui->labelWatchTotal->setVisible(showWatchOnly); // show watch-only total balance - - if (!showWatchOnly) - ui->labelWatchImmature->hide(); -} - -void OverviewPage::setClientModel(ClientModel *model) -{ - this->clientModel = model; - if(model) - { - // Show warning if this is a prerelease version - connect(model, SIGNAL(alertsChanged(QString)), this, SLOT(updateAlerts(QString))); - updateAlerts(model->getStatusBarWarnings()); - } -} - -void OverviewPage::setWalletModel(WalletModel *model) -{ - this->walletModel = model; - if(model && model->getOptionsModel()) - { - // Set up transaction list - filter = new TransactionFilterProxy(); - filter->setSourceModel(model->getTransactionTableModel()); - filter->setLimit(NUM_ITEMS); - filter->setDynamicSortFilter(true); - filter->setSortRole(Qt::EditRole); - filter->setShowInactive(false); - filter->sort(TransactionTableModel::Status, Qt::DescendingOrder); - - ui->listTransactions->setModel(filter); - ui->listTransactions->setModelColumn(TransactionTableModel::ToAddress); - - // Keep up to date with wallet - setBalance(model->getBalance(), model->getUnconfirmedBalance(), model->getImmatureBalance(), - model->getWatchBalance(), model->getWatchUnconfirmedBalance(), model->getWatchImmatureBalance()); - connect(model, SIGNAL(balanceChanged(CAmount,CAmount,CAmount,CAmount,CAmount,CAmount)), this, SLOT(setBalance(CAmount,CAmount,CAmount,CAmount,CAmount,CAmount))); - - connect(model->getOptionsModel(), SIGNAL(displayUnitChanged(int)), this, SLOT(updateDisplayUnit())); - - updateWatchOnlyLabels(model->haveWatchOnly()); - connect(model, SIGNAL(notifyWatchonlyChanged(bool)), this, SLOT(updateWatchOnlyLabels(bool))); - } - - // update the display unit, to not use the default ("BTC") - updateDisplayUnit(); -} - -void OverviewPage::updateDisplayUnit() -{ - if(walletModel && walletModel->getOptionsModel()) - { - if(currentBalance != -1) - setBalance(currentBalance, currentUnconfirmedBalance, currentImmatureBalance, - currentWatchOnlyBalance, currentWatchUnconfBalance, currentWatchImmatureBalance); - - // Update txdelegate->unit with the current unit - txdelegate->unit = walletModel->getOptionsModel()->getDisplayUnit(); - - ui->listTransactions->update(); - } -} - -void OverviewPage::updateAlerts(const QString &warnings) -{ - this->ui->labelAlerts->setVisible(!warnings.isEmpty()); - this->ui->labelAlerts->setText(warnings); -} - -void OverviewPage::showOutOfSyncWarning(bool fShow) -{ - ui->labelWalletStatus->setVisible(fShow); - ui->labelTransactionsStatus->setVisible(fShow); -} diff --git a/src/qt/overviewpage.h b/src/qt/overviewpage.h deleted file mode 100644 index de5ac345d..000000000 --- a/src/qt/overviewpage.h +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright (c) 2011-2013 The Bitcoin Core developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#ifndef BITCOIN_QT_OVERVIEWPAGE_H -#define BITCOIN_QT_OVERVIEWPAGE_H - -#include "amount.h" - -#include - -class ClientModel; -class TransactionFilterProxy; -class TxViewDelegate; -class WalletModel; - -namespace Ui { - class OverviewPage; -} - -QT_BEGIN_NAMESPACE -class QModelIndex; -QT_END_NAMESPACE - -/** Overview ("home") page widget */ -class OverviewPage : public QWidget -{ - Q_OBJECT - -public: - explicit OverviewPage(QWidget *parent = 0); - ~OverviewPage(); - - void setClientModel(ClientModel *clientModel); - void setWalletModel(WalletModel *walletModel); - void showOutOfSyncWarning(bool fShow); - -public Q_SLOTS: - void setBalance(const CAmount& balance, const CAmount& unconfirmedBalance, const CAmount& immatureBalance, - const CAmount& watchOnlyBalance, const CAmount& watchUnconfBalance, const CAmount& watchImmatureBalance); - -Q_SIGNALS: - void transactionClicked(const QModelIndex &index); - -private: - Ui::OverviewPage *ui; - ClientModel *clientModel; - WalletModel *walletModel; - CAmount currentBalance; - CAmount currentUnconfirmedBalance; - CAmount currentImmatureBalance; - CAmount currentWatchOnlyBalance; - CAmount currentWatchUnconfBalance; - CAmount currentWatchImmatureBalance; - - TxViewDelegate *txdelegate; - TransactionFilterProxy *filter; - -private Q_SLOTS: - void updateDisplayUnit(); - void handleTransactionClicked(const QModelIndex &index); - void updateAlerts(const QString &warnings); - void updateWatchOnlyLabels(bool showWatchOnly); -}; - -#endif // BITCOIN_QT_OVERVIEWPAGE_H diff --git a/src/qt/paymentrequest.proto b/src/qt/paymentrequest.proto deleted file mode 100644 index b2281c4c7..000000000 --- a/src/qt/paymentrequest.proto +++ /dev/null @@ -1,46 +0,0 @@ -// -// Simple Bitcoin Payment Protocol messages -// -// Use fields 100+ for extensions; -// to avoid conflicts, register extensions at: -// https://en.bitcoin.it/wiki/Payment_Request -// - -package payments; -option java_package = "org.bitcoin.protocols.payments"; -option java_outer_classname = "Protos"; - -// Generalized form of "send payment to this/these bitcoin addresses" -message Output { - optional uint64 amount = 1 [default = 0]; // amount is integer-number-of-satoshis - required bytes script = 2; // usually one of the standard Script forms -} -message PaymentDetails { - optional string network = 1 [default = "main"]; // "main" or "test" - repeated Output outputs = 2; // Where payment should be sent - required uint64 time = 3; // Timestamp; when payment request created - optional uint64 expires = 4; // Timestamp; when this request should be considered invalid - optional string memo = 5; // Human-readable description of request for the customer - optional string payment_url = 6; // URL to send Payment and get PaymentACK - optional bytes merchant_data = 7; // Arbitrary data to include in the Payment message -} -message PaymentRequest { - optional uint32 payment_details_version = 1 [default = 1]; - optional string pki_type = 2 [default = "none"]; // none / x509+sha256 / x509+sha1 - optional bytes pki_data = 3; // depends on pki_type - required bytes serialized_payment_details = 4; // PaymentDetails - optional bytes signature = 5; // pki-dependent signature -} -message X509Certificates { - repeated bytes certificate = 1; // DER-encoded X.509 certificate chain -} -message Payment { - optional bytes merchant_data = 1; // From PaymentDetails.merchant_data - repeated bytes transactions = 2; // Signed transactions that satisfy PaymentDetails.outputs - repeated Output refund_to = 3; // Where to send refunds, if a refund is necessary - optional string memo = 4; // Human-readable message for the merchant -} -message PaymentACK { - required Payment payment = 1; // Payment message that triggered this ACK - optional string memo = 2; // human-readable message for customer -} diff --git a/src/qt/paymentrequestplus.cpp b/src/qt/paymentrequestplus.cpp deleted file mode 100644 index 7e9729eeb..000000000 --- a/src/qt/paymentrequestplus.cpp +++ /dev/null @@ -1,209 +0,0 @@ -// Copyright (c) 2011-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. - -// -// Wraps dumb protocol buffer paymentRequest -// with some extra methods -// - -#include "paymentrequestplus.h" - -#include "util.h" - -#include - -#include - -#include -#include -#include - -using namespace std; - -class SSLVerifyError : public std::runtime_error -{ -public: - SSLVerifyError(std::string err) : std::runtime_error(err) { } -}; - -bool PaymentRequestPlus::parse(const QByteArray& data) -{ - bool parseOK = paymentRequest.ParseFromArray(data.data(), data.size()); - if (!parseOK) { - qWarning() << "PaymentRequestPlus::parse: Error parsing payment request"; - return false; - } - if (paymentRequest.payment_details_version() > 1) { - qWarning() << "PaymentRequestPlus::parse: Received up-version payment details, version=" << paymentRequest.payment_details_version(); - return false; - } - - parseOK = details.ParseFromString(paymentRequest.serialized_payment_details()); - if (!parseOK) - { - qWarning() << "PaymentRequestPlus::parse: Error parsing payment details"; - paymentRequest.Clear(); - return false; - } - return true; -} - -bool PaymentRequestPlus::SerializeToString(string* output) const -{ - return paymentRequest.SerializeToString(output); -} - -bool PaymentRequestPlus::IsInitialized() const -{ - return paymentRequest.IsInitialized(); -} - -bool PaymentRequestPlus::getMerchant(X509_STORE* certStore, QString& merchant) const -{ - merchant.clear(); - - if (!IsInitialized()) - return false; - - // One day we'll support more PKI types, but just - // x509 for now: - const EVP_MD* digestAlgorithm = NULL; - if (paymentRequest.pki_type() == "x509+sha256") { - digestAlgorithm = EVP_sha256(); - } - else if (paymentRequest.pki_type() == "x509+sha1") { - digestAlgorithm = EVP_sha1(); - } - else if (paymentRequest.pki_type() == "none") { - qWarning() << "PaymentRequestPlus::getMerchant: Payment request: pki_type == none"; - return false; - } - else { - qWarning() << "PaymentRequestPlus::getMerchant: Payment request: unknown pki_type " << QString::fromStdString(paymentRequest.pki_type()); - return false; - } - - payments::X509Certificates certChain; - if (!certChain.ParseFromString(paymentRequest.pki_data())) { - qWarning() << "PaymentRequestPlus::getMerchant: Payment request: error parsing pki_data"; - return false; - } - - std::vector certs; - const QDateTime currentTime = QDateTime::currentDateTime(); - for (int i = 0; i < certChain.certificate_size(); i++) { - QByteArray certData(certChain.certificate(i).data(), certChain.certificate(i).size()); - QSslCertificate qCert(certData, QSsl::Der); - if (currentTime < qCert.effectiveDate() || currentTime > qCert.expiryDate()) { - qWarning() << "PaymentRequestPlus::getMerchant: Payment request: certificate expired or not yet active: " << qCert; - return false; - } -#if QT_VERSION >= 0x050000 - if (qCert.isBlacklisted()) { - qWarning() << "PaymentRequestPlus::getMerchant: Payment request: certificate blacklisted: " << qCert; - return false; - } -#endif - const unsigned char *data = (const unsigned char *)certChain.certificate(i).data(); - X509 *cert = d2i_X509(NULL, &data, certChain.certificate(i).size()); - if (cert) - certs.push_back(cert); - } - if (certs.empty()) { - qWarning() << "PaymentRequestPlus::getMerchant: Payment request: empty certificate chain"; - return false; - } - - // The first cert is the signing cert, the rest are untrusted certs that chain - // to a valid root authority. OpenSSL needs them separately. - STACK_OF(X509) *chain = sk_X509_new_null(); - for (int i = certs.size() - 1; i > 0; i--) { - sk_X509_push(chain, certs[i]); - } - X509 *signing_cert = certs[0]; - - // Now create a "store context", which is a single use object for checking, - // load the signing cert into it and verify. - X509_STORE_CTX *store_ctx = X509_STORE_CTX_new(); - if (!store_ctx) { - qWarning() << "PaymentRequestPlus::getMerchant: Payment request: error creating X509_STORE_CTX"; - return false; - } - - char *website = NULL; - bool fResult = true; - try - { - if (!X509_STORE_CTX_init(store_ctx, certStore, signing_cert, chain)) - { - int error = X509_STORE_CTX_get_error(store_ctx); - throw SSLVerifyError(X509_verify_cert_error_string(error)); - } - - // Now do the verification! - int result = X509_verify_cert(store_ctx); - if (result != 1) { - int error = X509_STORE_CTX_get_error(store_ctx); - // For testing payment requests, we allow self signed root certs! - // This option is just shown in the UI options, if -help-debug is enabled. - if (!(error == X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT && GetBoolArg("-allowselfsignedrootcertificates", false))) { - throw SSLVerifyError(X509_verify_cert_error_string(error)); - } else { - qDebug() << "PaymentRequestPlus::getMerchant: Allowing self signed root certificate, because -allowselfsignedrootcertificates is true."; - } - } - X509_NAME *certname = X509_get_subject_name(signing_cert); - - // Valid cert; check signature: - payments::PaymentRequest rcopy(paymentRequest); // Copy - rcopy.set_signature(std::string("")); - std::string data_to_verify; // Everything but the signature - rcopy.SerializeToString(&data_to_verify); - - EVP_MD_CTX ctx; - EVP_PKEY *pubkey = X509_get_pubkey(signing_cert); - EVP_MD_CTX_init(&ctx); - if (!EVP_VerifyInit_ex(&ctx, digestAlgorithm, NULL) || - !EVP_VerifyUpdate(&ctx, data_to_verify.data(), data_to_verify.size()) || - !EVP_VerifyFinal(&ctx, (const unsigned char*)paymentRequest.signature().data(), (unsigned int)paymentRequest.signature().size(), pubkey)) { - throw SSLVerifyError("Bad signature, invalid payment request."); - } - - // OpenSSL API for getting human printable strings from certs is baroque. - int textlen = X509_NAME_get_text_by_NID(certname, NID_commonName, NULL, 0); - website = new char[textlen + 1]; - if (X509_NAME_get_text_by_NID(certname, NID_commonName, website, textlen + 1) == textlen && textlen > 0) { - merchant = website; - } - else { - throw SSLVerifyError("Bad certificate, missing common name."); - } - // TODO: detect EV certificates and set merchant = business name instead of unfriendly NID_commonName ? - } - catch (const SSLVerifyError& err) { - fResult = false; - qWarning() << "PaymentRequestPlus::getMerchant: SSL error: " << err.what(); - } - - if (website) - delete[] website; - X509_STORE_CTX_free(store_ctx); - for (unsigned int i = 0; i < certs.size(); i++) - X509_free(certs[i]); - - return fResult; -} - -QList > PaymentRequestPlus::getPayTo() const -{ - QList > result; - for (int i = 0; i < details.outputs_size(); i++) - { - const unsigned char* scriptStr = (const unsigned char*)details.outputs(i).script().data(); - CScript s(scriptStr, scriptStr+details.outputs(i).script().size()); - - result.append(make_pair(s, details.outputs(i).amount())); - } - return result; -} diff --git a/src/qt/paymentrequestplus.h b/src/qt/paymentrequestplus.h deleted file mode 100644 index 99a7186b8..000000000 --- a/src/qt/paymentrequestplus.h +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright (c) 2011-2014 The Bitcoin developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#ifndef BITCOIN_QT_PAYMENTREQUESTPLUS_H -#define BITCOIN_QT_PAYMENTREQUESTPLUS_H - -#include "paymentrequest.pb.h" - -#include "base58.h" - -#include - -#include -#include -#include - -// -// Wraps dumb protocol buffer paymentRequest -// with extra methods -// - -class PaymentRequestPlus -{ -public: - PaymentRequestPlus() { } - - bool parse(const QByteArray& data); - bool SerializeToString(std::string* output) const; - - bool IsInitialized() const; - // Returns true if merchant's identity is authenticated, and - // returns human-readable merchant identity in merchant - bool getMerchant(X509_STORE* certStore, QString& merchant) const; - - // Returns list of outputs, amount - QList > getPayTo() const; - - const payments::PaymentDetails& getDetails() const { return details; } - -private: - payments::PaymentRequest paymentRequest; - payments::PaymentDetails details; -}; - -#endif // BITCOIN_QT_PAYMENTREQUESTPLUS_H diff --git a/src/qt/paymentserver.cpp b/src/qt/paymentserver.cpp deleted file mode 100644 index 0e21d4e1f..000000000 --- a/src/qt/paymentserver.cpp +++ /dev/null @@ -1,805 +0,0 @@ -// Copyright (c) 2011-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. - -#include "paymentserver.h" - -#include "bitcoinunits.h" -#include "guiutil.h" -#include "optionsmodel.h" - -#include "base58.h" -#include "chainparams.h" -#include "main.h" -#include "ui_interface.h" -#include "util.h" -#include "wallet/wallet.h" - -#include - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if QT_VERSION < 0x050000 -#include -#else -#include -#endif - -using namespace std; - -const int BITCOIN_IPC_CONNECT_TIMEOUT = 1000; // milliseconds -const QString BITCOIN_IPC_PREFIX("bitcoin:"); -// BIP70 payment protocol messages -const char* BIP70_MESSAGE_PAYMENTACK = "PaymentACK"; -const char* BIP70_MESSAGE_PAYMENTREQUEST = "PaymentRequest"; -// BIP71 payment protocol media types -const char* BIP71_MIMETYPE_PAYMENT = "application/bitcoin-payment"; -const char* BIP71_MIMETYPE_PAYMENTACK = "application/bitcoin-paymentack"; -const char* BIP71_MIMETYPE_PAYMENTREQUEST = "application/bitcoin-paymentrequest"; -// BIP70 max payment request size in bytes (DoS protection) -const qint64 BIP70_MAX_PAYMENTREQUEST_SIZE = 50000; - -X509_STORE* PaymentServer::certStore = NULL; -void PaymentServer::freeCertStore() -{ - if (PaymentServer::certStore != NULL) - { - X509_STORE_free(PaymentServer::certStore); - PaymentServer::certStore = NULL; - } -} - -// -// Create a name that is unique for: -// testnet / non-testnet -// data directory -// -static QString ipcServerName() -{ - QString name("BitcoinQt"); - - // Append a simple hash of the datadir - // Note that GetDataDir(true) returns a different path - // for -testnet versus main net - QString ddir(QString::fromStdString(GetDataDir(true).string())); - name.append(QString::number(qHash(ddir))); - - return name; -} - -// -// We store payment URIs and requests received before -// the main GUI window is up and ready to ask the user -// to send payment. - -static QList savedPaymentRequests; - -static void ReportInvalidCertificate(const QSslCertificate& cert) -{ -#if QT_VERSION < 0x050000 - qDebug() << QString("%1: Payment server found an invalid certificate: ").arg(__func__) << cert.serialNumber() << cert.subjectInfo(QSslCertificate::CommonName) << cert.subjectInfo(QSslCertificate::OrganizationalUnitName); -#else - qDebug() << QString("%1: Payment server found an invalid certificate: ").arg(__func__) << cert.serialNumber() << cert.subjectInfo(QSslCertificate::CommonName) << cert.subjectInfo(QSslCertificate::DistinguishedNameQualifier) << cert.subjectInfo(QSslCertificate::OrganizationalUnitName); -#endif -} - -// -// Load OpenSSL's list of root certificate authorities -// -void PaymentServer::LoadRootCAs(X509_STORE* _store) -{ - if (PaymentServer::certStore == NULL) - atexit(PaymentServer::freeCertStore); - else - freeCertStore(); - - // Unit tests mostly use this, to pass in fake root CAs: - if (_store) - { - PaymentServer::certStore = _store; - return; - } - - // Normal execution, use either -rootcertificates or system certs: - PaymentServer::certStore = X509_STORE_new(); - - // Note: use "-system-" default here so that users can pass -rootcertificates="" - // and get 'I don't like X.509 certificates, don't trust anybody' behavior: - QString certFile = QString::fromStdString(GetArg("-rootcertificates", "-system-")); - - // Empty store - if (certFile.isEmpty()) { - qDebug() << QString("PaymentServer::%1: Payment request authentication via X.509 certificates disabled.").arg(__func__); - return; - } - - QList certList; - - if (certFile != "-system-") { - qDebug() << QString("PaymentServer::%1: Using \"%2\" as trusted root certificate.").arg(__func__).arg(certFile); - - certList = QSslCertificate::fromPath(certFile); - // Use those certificates when fetching payment requests, too: - QSslSocket::setDefaultCaCertificates(certList); - } else - certList = QSslSocket::systemCaCertificates(); - - int nRootCerts = 0; - const QDateTime currentTime = QDateTime::currentDateTime(); - - Q_FOREACH (const QSslCertificate& cert, certList) { - // Don't log NULL certificates - if (cert.isNull()) - continue; - - // Not yet active/valid, or expired certificate - if (currentTime < cert.effectiveDate() || currentTime > cert.expiryDate()) { - ReportInvalidCertificate(cert); - continue; - } - -#if QT_VERSION >= 0x050000 - // Blacklisted certificate - if (cert.isBlacklisted()) { - ReportInvalidCertificate(cert); - continue; - } -#endif - QByteArray certData = cert.toDer(); - const unsigned char *data = (const unsigned char *)certData.data(); - - X509* x509 = d2i_X509(0, &data, certData.size()); - if (x509 && X509_STORE_add_cert(PaymentServer::certStore, x509)) - { - // Note: X509_STORE_free will free the X509* objects when - // the PaymentServer is destroyed - ++nRootCerts; - } - else - { - ReportInvalidCertificate(cert); - continue; - } - } - qWarning() << "PaymentServer::LoadRootCAs: Loaded " << nRootCerts << " root certificates"; - - // Project for another day: - // Fetch certificate revocation lists, and add them to certStore. - // Issues to consider: - // performance (start a thread to fetch in background?) - // privacy (fetch through tor/proxy so IP address isn't revealed) - // would it be easier to just use a compiled-in blacklist? - // or use Qt's blacklist? - // "certificate stapling" with server-side caching is more efficient -} - -// -// Sending to the server is done synchronously, at startup. -// If the server isn't already running, startup continues, -// and the items in savedPaymentRequest will be handled -// when uiReady() is called. -// -// Warning: ipcSendCommandLine() is called early in init, -// so don't use "Q_EMIT message()", but "QMessageBox::"! -// -void PaymentServer::ipcParseCommandLine(int argc, char* argv[]) -{ - for (int i = 1; i < argc; i++) - { - QString arg(argv[i]); - if (arg.startsWith("-")) - continue; - - // If the bitcoin: URI contains a payment request, we are not able to detect the - // network as that would require fetching and parsing the payment request. - // That means clicking such an URI which contains a testnet payment request - // will start a mainnet instance and throw a "wrong network" error. - if (arg.startsWith(BITCOIN_IPC_PREFIX, Qt::CaseInsensitive)) // bitcoin: URI - { - savedPaymentRequests.append(arg); - - SendCoinsRecipient r; - if (GUIUtil::parseBitcoinURI(arg, &r) && !r.address.isEmpty()) - { - CBitcoinAddress address(r.address.toStdString()); - - if (address.IsValid(Params(CBaseChainParams::MAIN))) - { - SelectParams(CBaseChainParams::MAIN); - } - else if (address.IsValid(Params(CBaseChainParams::TESTNET))) - { - SelectParams(CBaseChainParams::TESTNET); - } - } - } - else if (QFile::exists(arg)) // Filename - { - savedPaymentRequests.append(arg); - - PaymentRequestPlus request; - if (readPaymentRequestFromFile(arg, request)) - { - if (request.getDetails().network() == "main") - { - SelectParams(CBaseChainParams::MAIN); - } - else if (request.getDetails().network() == "test") - { - SelectParams(CBaseChainParams::TESTNET); - } - } - } - else - { - // Printing to debug.log is about the best we can do here, the - // GUI hasn't started yet so we can't pop up a message box. - qWarning() << "PaymentServer::ipcSendCommandLine: Payment request file does not exist: " << arg; - } - } -} - -// -// Sending to the server is done synchronously, at startup. -// If the server isn't already running, startup continues, -// and the items in savedPaymentRequest will be handled -// when uiReady() is called. -// -bool PaymentServer::ipcSendCommandLine() -{ - bool fResult = false; - Q_FOREACH (const QString& r, savedPaymentRequests) - { - QLocalSocket* socket = new QLocalSocket(); - socket->connectToServer(ipcServerName(), QIODevice::WriteOnly); - if (!socket->waitForConnected(BITCOIN_IPC_CONNECT_TIMEOUT)) - { - delete socket; - socket = NULL; - return false; - } - - QByteArray block; - QDataStream out(&block, QIODevice::WriteOnly); - out.setVersion(QDataStream::Qt_4_0); - out << r; - out.device()->seek(0); - - socket->write(block); - socket->flush(); - socket->waitForBytesWritten(BITCOIN_IPC_CONNECT_TIMEOUT); - socket->disconnectFromServer(); - - delete socket; - socket = NULL; - fResult = true; - } - - return fResult; -} - -PaymentServer::PaymentServer(QObject* parent, bool startLocalServer) : - QObject(parent), - saveURIs(true), - uriServer(0), - netManager(0), - optionsModel(0) -{ - // Verify that the version of the library that we linked against is - // compatible with the version of the headers we compiled against. - GOOGLE_PROTOBUF_VERIFY_VERSION; - - // Install global event filter to catch QFileOpenEvents - // on Mac: sent when you click bitcoin: links - // other OSes: helpful when dealing with payment request files - if (parent) - parent->installEventFilter(this); - - QString name = ipcServerName(); - - // Clean up old socket leftover from a crash: - QLocalServer::removeServer(name); - - if (startLocalServer) - { - uriServer = new QLocalServer(this); - - if (!uriServer->listen(name)) { - // constructor is called early in init, so don't use "Q_EMIT message()" here - QMessageBox::critical(0, tr("Payment request error"), - tr("Cannot start bitcoin: click-to-pay handler")); - } - else { - connect(uriServer, SIGNAL(newConnection()), this, SLOT(handleURIConnection())); - connect(this, SIGNAL(receivedPaymentACK(QString)), this, SLOT(handlePaymentACK(QString))); - } - } -} - -PaymentServer::~PaymentServer() -{ - google::protobuf::ShutdownProtobufLibrary(); -} - -// -// OSX-specific way of handling bitcoin: URIs and PaymentRequest mime types. -// Also used by paymentservertests.cpp and when opening a payment request file -// via "Open URI..." menu entry. -// -bool PaymentServer::eventFilter(QObject *object, QEvent *event) -{ - if (event->type() == QEvent::FileOpen) { - QFileOpenEvent *fileEvent = static_cast(event); - if (!fileEvent->file().isEmpty()) - handleURIOrFile(fileEvent->file()); - else if (!fileEvent->url().isEmpty()) - handleURIOrFile(fileEvent->url().toString()); - - return true; - } - - return QObject::eventFilter(object, event); -} - -void PaymentServer::initNetManager() -{ - if (!optionsModel) - return; - if (netManager != NULL) - delete netManager; - - // netManager is used to fetch paymentrequests given in bitcoin: URIs - netManager = new QNetworkAccessManager(this); - - QNetworkProxy proxy; - - // Query active SOCKS5 proxy - if (optionsModel->getProxySettings(proxy)) { - netManager->setProxy(proxy); - - qDebug() << "PaymentServer::initNetManager: Using SOCKS5 proxy" << proxy.hostName() << ":" << proxy.port(); - } - else - qDebug() << "PaymentServer::initNetManager: No active proxy server found."; - - connect(netManager, SIGNAL(finished(QNetworkReply*)), - this, SLOT(netRequestFinished(QNetworkReply*))); - connect(netManager, SIGNAL(sslErrors(QNetworkReply*, const QList &)), - this, SLOT(reportSslErrors(QNetworkReply*, const QList &))); -} - -void PaymentServer::uiReady() -{ - initNetManager(); - - saveURIs = false; - Q_FOREACH (const QString& s, savedPaymentRequests) - { - handleURIOrFile(s); - } - savedPaymentRequests.clear(); -} - -void PaymentServer::handleURIOrFile(const QString& s) -{ - if (saveURIs) - { - savedPaymentRequests.append(s); - return; - } - - if (s.startsWith(BITCOIN_IPC_PREFIX, Qt::CaseInsensitive)) // bitcoin: URI - { -#if QT_VERSION < 0x050000 - QUrl uri(s); -#else - QUrlQuery uri((QUrl(s))); -#endif - if (uri.hasQueryItem("r")) // payment request URI - { - QByteArray temp; - temp.append(uri.queryItemValue("r")); - QString decoded = QUrl::fromPercentEncoding(temp); - QUrl fetchUrl(decoded, QUrl::StrictMode); - - if (fetchUrl.isValid()) - { - qDebug() << "PaymentServer::handleURIOrFile: fetchRequest(" << fetchUrl << ")"; - fetchRequest(fetchUrl); - } - else - { - qWarning() << "PaymentServer::handleURIOrFile: Invalid URL: " << fetchUrl; - Q_EMIT message(tr("URI handling"), - tr("Payment request fetch URL is invalid: %1").arg(fetchUrl.toString()), - CClientUIInterface::ICON_WARNING); - } - - return; - } - else // normal URI - { - SendCoinsRecipient recipient; - if (GUIUtil::parseBitcoinURI(s, &recipient)) - { - CBitcoinAddress address(recipient.address.toStdString()); - if (!address.IsValid()) { - Q_EMIT message(tr("URI handling"), tr("Invalid payment address %1").arg(recipient.address), - CClientUIInterface::MSG_ERROR); - } - else - Q_EMIT receivedPaymentRequest(recipient); - } - else - Q_EMIT message(tr("URI handling"), - tr("URI cannot be parsed! This can be caused by an invalid Bitcoin address or malformed URI parameters."), - CClientUIInterface::ICON_WARNING); - - return; - } - } - - if (QFile::exists(s)) // payment request file - { - PaymentRequestPlus request; - SendCoinsRecipient recipient; - if (!readPaymentRequestFromFile(s, request)) - { - Q_EMIT message(tr("Payment request file handling"), - tr("Payment request file cannot be read! This can be caused by an invalid payment request file."), - CClientUIInterface::ICON_WARNING); - } - else if (processPaymentRequest(request, recipient)) - Q_EMIT receivedPaymentRequest(recipient); - - return; - } -} - -void PaymentServer::handleURIConnection() -{ - QLocalSocket *clientConnection = uriServer->nextPendingConnection(); - - while (clientConnection->bytesAvailable() < (int)sizeof(quint32)) - clientConnection->waitForReadyRead(); - - connect(clientConnection, SIGNAL(disconnected()), - clientConnection, SLOT(deleteLater())); - - QDataStream in(clientConnection); - in.setVersion(QDataStream::Qt_4_0); - if (clientConnection->bytesAvailable() < (int)sizeof(quint16)) { - return; - } - QString msg; - in >> msg; - - handleURIOrFile(msg); -} - -// -// Warning: readPaymentRequestFromFile() is used in ipcSendCommandLine() -// so don't use "Q_EMIT message()", but "QMessageBox::"! -// -bool PaymentServer::readPaymentRequestFromFile(const QString& filename, PaymentRequestPlus& request) -{ - QFile f(filename); - if (!f.open(QIODevice::ReadOnly)) { - qWarning() << QString("PaymentServer::%1: Failed to open %2").arg(__func__).arg(filename); - return false; - } - - // BIP70 DoS protection - if (f.size() > BIP70_MAX_PAYMENTREQUEST_SIZE) { - qWarning() << QString("PaymentServer::%1: Payment request %2 is too large (%3 bytes, allowed %4 bytes).") - .arg(__func__) - .arg(filename) - .arg(f.size()) - .arg(BIP70_MAX_PAYMENTREQUEST_SIZE); - return false; - } - - QByteArray data = f.readAll(); - - return request.parse(data); -} - -bool PaymentServer::processPaymentRequest(const PaymentRequestPlus& request, SendCoinsRecipient& recipient) -{ - if (!optionsModel) - return false; - - if (request.IsInitialized()) { - // Payment request network matches client network? - if (!verifyNetwork(request.getDetails())) { - Q_EMIT message(tr("Payment request rejected"), tr("Payment request network doesn't match client network."), - CClientUIInterface::MSG_ERROR); - - return false; - } - - // Make sure any payment requests involved are still valid. - // This is re-checked just before sending coins in WalletModel::sendCoins(). - if (verifyExpired(request.getDetails())) { - Q_EMIT message(tr("Payment request rejected"), tr("Payment request expired."), - CClientUIInterface::MSG_ERROR); - - return false; - } - } else { - Q_EMIT message(tr("Payment request error"), tr("Payment request is not initialized."), - CClientUIInterface::MSG_ERROR); - - return false; - } - - recipient.paymentRequest = request; - recipient.message = GUIUtil::HtmlEscape(request.getDetails().memo()); - - request.getMerchant(PaymentServer::certStore, recipient.authenticatedMerchant); - - QList > sendingTos = request.getPayTo(); - QStringList addresses; - - Q_FOREACH(const PAIRTYPE(CScript, CAmount)& sendingTo, sendingTos) { - // Extract and check destination addresses - CTxDestination dest; - if (ExtractDestination(sendingTo.first, dest)) { - // Append destination address - addresses.append(QString::fromStdString(CBitcoinAddress(dest).ToString())); - } - else if (!recipient.authenticatedMerchant.isEmpty()) { - // Unauthenticated payment requests to custom bitcoin addresses are not supported - // (there is no good way to tell the user where they are paying in a way they'd - // have a chance of understanding). - Q_EMIT message(tr("Payment request rejected"), - tr("Unverified payment requests to custom payment scripts are unsupported."), - CClientUIInterface::MSG_ERROR); - return false; - } - - // Bitcoin amounts are stored as (optional) uint64 in the protobuf messages (see paymentrequest.proto), - // but CAmount is defined as int64_t. Because of that we need to verify that amounts are in a valid range - // and no overflow has happened. - if (!verifyAmount(sendingTo.second)) { - Q_EMIT message(tr("Payment request rejected"), tr("Invalid payment request."), CClientUIInterface::MSG_ERROR); - return false; - } - - // Extract and check amounts - CTxOut txOut(sendingTo.second, sendingTo.first); - if (txOut.IsDust(::minRelayTxFee)) { - Q_EMIT message(tr("Payment request error"), tr("Requested payment amount of %1 is too small (considered dust).") - .arg(BitcoinUnits::formatWithUnit(optionsModel->getDisplayUnit(), sendingTo.second)), - CClientUIInterface::MSG_ERROR); - - return false; - } - - recipient.amount += sendingTo.second; - // Also verify that the final amount is still in a valid range after adding additional amounts. - if (!verifyAmount(recipient.amount)) { - Q_EMIT message(tr("Payment request rejected"), tr("Invalid payment request."), CClientUIInterface::MSG_ERROR); - return false; - } - } - // Store addresses and format them to fit nicely into the GUI - recipient.address = addresses.join("
"); - - if (!recipient.authenticatedMerchant.isEmpty()) { - qDebug() << "PaymentServer::processPaymentRequest: Secure payment request from " << recipient.authenticatedMerchant; - } - else { - qDebug() << "PaymentServer::processPaymentRequest: Insecure payment request to " << addresses.join(", "); - } - - return true; -} - -void PaymentServer::fetchRequest(const QUrl& url) -{ - QNetworkRequest netRequest; - netRequest.setAttribute(QNetworkRequest::User, BIP70_MESSAGE_PAYMENTREQUEST); - netRequest.setUrl(url); - netRequest.setRawHeader("User-Agent", CLIENT_NAME.c_str()); - netRequest.setRawHeader("Accept", BIP71_MIMETYPE_PAYMENTREQUEST); - netManager->get(netRequest); -} - -void PaymentServer::fetchPaymentACK(CWallet* wallet, SendCoinsRecipient recipient, QByteArray transaction) -{ - const payments::PaymentDetails& details = recipient.paymentRequest.getDetails(); - if (!details.has_payment_url()) - return; - - QNetworkRequest netRequest; - netRequest.setAttribute(QNetworkRequest::User, BIP70_MESSAGE_PAYMENTACK); - netRequest.setUrl(QString::fromStdString(details.payment_url())); - netRequest.setHeader(QNetworkRequest::ContentTypeHeader, BIP71_MIMETYPE_PAYMENT); - netRequest.setRawHeader("User-Agent", CLIENT_NAME.c_str()); - netRequest.setRawHeader("Accept", BIP71_MIMETYPE_PAYMENTACK); - - payments::Payment payment; - payment.set_merchant_data(details.merchant_data()); - payment.add_transactions(transaction.data(), transaction.size()); - - // Create a new refund address, or re-use: - QString account = tr("Refund from %1").arg(recipient.authenticatedMerchant); - std::string strAccount = account.toStdString(); - set refundAddresses = wallet->GetAccountAddresses(strAccount); - if (!refundAddresses.empty()) { - CScript s = GetScriptForDestination(*refundAddresses.begin()); - payments::Output* refund_to = payment.add_refund_to(); - refund_to->set_script(&s[0], s.size()); - } - else { - CPubKey newKey; - if (wallet->GetKeyFromPool(newKey)) { - CKeyID keyID = newKey.GetID(); - wallet->SetAddressBook(keyID, strAccount, "refund"); - - CScript s = GetScriptForDestination(keyID); - payments::Output* refund_to = payment.add_refund_to(); - refund_to->set_script(&s[0], s.size()); - } - else { - // This should never happen, because sending coins should have - // just unlocked the wallet and refilled the keypool. - qWarning() << "PaymentServer::fetchPaymentACK: Error getting refund key, refund_to not set"; - } - } - - int length = payment.ByteSize(); - netRequest.setHeader(QNetworkRequest::ContentLengthHeader, length); - QByteArray serData(length, '\0'); - if (payment.SerializeToArray(serData.data(), length)) { - netManager->post(netRequest, serData); - } - else { - // This should never happen, either. - qWarning() << "PaymentServer::fetchPaymentACK: Error serializing payment message"; - } -} - -void PaymentServer::netRequestFinished(QNetworkReply* reply) -{ - reply->deleteLater(); - - // BIP70 DoS protection - if (reply->size() > BIP70_MAX_PAYMENTREQUEST_SIZE) { - QString msg = tr("Payment request %1 is too large (%2 bytes, allowed %3 bytes).") - .arg(reply->request().url().toString()) - .arg(reply->size()) - .arg(BIP70_MAX_PAYMENTREQUEST_SIZE); - - qWarning() << QString("PaymentServer::%1:").arg(__func__) << msg; - Q_EMIT message(tr("Payment request DoS protection"), msg, CClientUIInterface::MSG_ERROR); - return; - } - - if (reply->error() != QNetworkReply::NoError) { - QString msg = tr("Error communicating with %1: %2") - .arg(reply->request().url().toString()) - .arg(reply->errorString()); - - qWarning() << "PaymentServer::netRequestFinished: " << msg; - Q_EMIT message(tr("Payment request error"), msg, CClientUIInterface::MSG_ERROR); - return; - } - - QByteArray data = reply->readAll(); - - QString requestType = reply->request().attribute(QNetworkRequest::User).toString(); - if (requestType == BIP70_MESSAGE_PAYMENTREQUEST) - { - PaymentRequestPlus request; - SendCoinsRecipient recipient; - if (!request.parse(data)) - { - qWarning() << "PaymentServer::netRequestFinished: Error parsing payment request"; - Q_EMIT message(tr("Payment request error"), - tr("Payment request cannot be parsed!"), - CClientUIInterface::MSG_ERROR); - } - else if (processPaymentRequest(request, recipient)) - Q_EMIT receivedPaymentRequest(recipient); - - return; - } - else if (requestType == BIP70_MESSAGE_PAYMENTACK) - { - payments::PaymentACK paymentACK; - if (!paymentACK.ParseFromArray(data.data(), data.size())) - { - QString msg = tr("Bad response from server %1") - .arg(reply->request().url().toString()); - - qWarning() << "PaymentServer::netRequestFinished: " << msg; - Q_EMIT message(tr("Payment request error"), msg, CClientUIInterface::MSG_ERROR); - } - else - { - Q_EMIT receivedPaymentACK(GUIUtil::HtmlEscape(paymentACK.memo())); - } - } -} - -void PaymentServer::reportSslErrors(QNetworkReply* reply, const QList &errs) -{ - Q_UNUSED(reply); - - QString errString; - Q_FOREACH (const QSslError& err, errs) { - qWarning() << "PaymentServer::reportSslErrors: " << err; - errString += err.errorString() + "\n"; - } - Q_EMIT message(tr("Network request error"), errString, CClientUIInterface::MSG_ERROR); -} - -void PaymentServer::setOptionsModel(OptionsModel *optionsModel) -{ - this->optionsModel = optionsModel; -} - -void PaymentServer::handlePaymentACK(const QString& paymentACKMsg) -{ - // currently we don't further process or store the paymentACK message - Q_EMIT message(tr("Payment acknowledged"), paymentACKMsg, CClientUIInterface::ICON_INFORMATION | CClientUIInterface::MODAL); -} - -bool PaymentServer::verifyNetwork(const payments::PaymentDetails& requestDetails) -{ - bool fVerified = requestDetails.network() == Params().NetworkIDString(); - if (!fVerified) { - qWarning() << QString("PaymentServer::%1: Payment request network \"%2\" doesn't match client network \"%3\".") - .arg(__func__) - .arg(QString::fromStdString(requestDetails.network())) - .arg(QString::fromStdString(Params().NetworkIDString())); - } - return fVerified; -} - -bool PaymentServer::verifyExpired(const payments::PaymentDetails& requestDetails) -{ - bool fVerified = (requestDetails.has_expires() && (int64_t)requestDetails.expires() < GetTime()); - if (fVerified) { - const QString requestExpires = QString::fromStdString(DateTimeStrFormat("%Y-%m-%d %H:%M:%S", (int64_t)requestDetails.expires())); - qWarning() << QString("PaymentServer::%1: Payment request expired \"%2\".") - .arg(__func__) - .arg(requestExpires); - } - return fVerified; -} - -bool PaymentServer::verifyAmount(const CAmount& requestAmount) -{ - bool fVerified = MoneyRange(requestAmount); - if (!fVerified) { - qWarning() << QString("PaymentServer::%1: Payment request amount out of allowed range (%2, allowed 0 - %3).") - .arg(__func__) - .arg(requestAmount) - .arg(MAX_MONEY); - } - return fVerified; -} diff --git a/src/qt/paymentserver.h b/src/qt/paymentserver.h deleted file mode 100644 index 5df0a14cf..000000000 --- a/src/qt/paymentserver.h +++ /dev/null @@ -1,151 +0,0 @@ -// Copyright (c) 2011-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. - -#ifndef BITCOIN_QT_PAYMENTSERVER_H -#define BITCOIN_QT_PAYMENTSERVER_H - -// This class handles payment requests from clicking on -// bitcoin: URIs -// -// This is somewhat tricky, because we have to deal with -// the situation where the user clicks on a link during -// startup/initialization, when the splash-screen is up -// but the main window (and the Send Coins tab) is not. -// -// So, the strategy is: -// -// Create the server, and register the event handler, -// when the application is created. Save any URIs -// received at or during startup in a list. -// -// When startup is finished and the main window is -// shown, a signal is sent to slot uiReady(), which -// emits a receivedURL() signal for any payment -// requests that happened during startup. -// -// After startup, receivedURL() happens as usual. -// -// This class has one more feature: a static -// method that finds URIs passed in the command line -// and, if a server is running in another process, -// sends them to the server. -// - -#include "paymentrequestplus.h" -#include "walletmodel.h" - -#include -#include - -class OptionsModel; - -class CWallet; - -QT_BEGIN_NAMESPACE -class QApplication; -class QByteArray; -class QLocalServer; -class QNetworkAccessManager; -class QNetworkReply; -class QSslError; -class QUrl; -QT_END_NAMESPACE - -// BIP70 max payment request size in bytes (DoS protection) -extern const qint64 BIP70_MAX_PAYMENTREQUEST_SIZE; - -class PaymentServer : public QObject -{ - Q_OBJECT - -public: - // Parse URIs on command line - // Returns false on error - static void ipcParseCommandLine(int argc, char *argv[]); - - // Returns true if there were URIs on the command line - // which were successfully sent to an already-running - // process. - // Note: if a payment request is given, SelectParams(MAIN/TESTNET) - // will be called so we startup in the right mode. - static bool ipcSendCommandLine(); - - // parent should be QApplication object - PaymentServer(QObject* parent, bool startLocalServer = true); - ~PaymentServer(); - - // Load root certificate authorities. Pass NULL (default) - // to read from the file specified in the -rootcertificates setting, - // or, if that's not set, to use the system default root certificates. - // If you pass in a store, you should not X509_STORE_free it: it will be - // freed either at exit or when another set of CAs are loaded. - static void LoadRootCAs(X509_STORE* store = NULL); - - // Return certificate store - static X509_STORE* getCertStore() { return certStore; } - - // OptionsModel is used for getting proxy settings and display unit - void setOptionsModel(OptionsModel *optionsModel); - - // This is now public, because we use it in paymentservertests.cpp - static bool readPaymentRequestFromFile(const QString& filename, PaymentRequestPlus& request); - - // Verify that the payment request network matches the client network - static bool verifyNetwork(const payments::PaymentDetails& requestDetails); - // Verify if the payment request is expired - static bool verifyExpired(const payments::PaymentDetails& requestDetails); - // Verify the payment request amount is valid - static bool verifyAmount(const CAmount& requestAmount); - -Q_SIGNALS: - // Fired when a valid payment request is received - void receivedPaymentRequest(SendCoinsRecipient); - - // Fired when a valid PaymentACK is received - void receivedPaymentACK(const QString &paymentACKMsg); - - // Fired when a message should be reported to the user - void message(const QString &title, const QString &message, unsigned int style); - -public Q_SLOTS: - // Signal this when the main window's UI is ready - // to display payment requests to the user - void uiReady(); - - // Submit Payment message to a merchant, get back PaymentACK: - void fetchPaymentACK(CWallet* wallet, SendCoinsRecipient recipient, QByteArray transaction); - - // Handle an incoming URI, URI with local file scheme or file - void handleURIOrFile(const QString& s); - -private Q_SLOTS: - void handleURIConnection(); - void netRequestFinished(QNetworkReply*); - void reportSslErrors(QNetworkReply*, const QList &); - void handlePaymentACK(const QString& paymentACKMsg); - -protected: - // Constructor registers this on the parent QApplication to - // receive QEvent::FileOpen and QEvent:Drop events - bool eventFilter(QObject *object, QEvent *event); - -private: - bool processPaymentRequest(const PaymentRequestPlus& request, SendCoinsRecipient& recipient); - void fetchRequest(const QUrl& url); - - // Setup networking - void initNetManager(); - - bool saveURIs; // true during startup - QLocalServer* uriServer; - - static X509_STORE* certStore; // Trusted root certificates - static void freeCertStore(); - - QNetworkAccessManager* netManager; // Used to fetch payment requests - - OptionsModel *optionsModel; -}; - -#endif // BITCOIN_QT_PAYMENTSERVER_H diff --git a/src/qt/peertablemodel.cpp b/src/qt/peertablemodel.cpp deleted file mode 100644 index 4ab9528cc..000000000 --- a/src/qt/peertablemodel.cpp +++ /dev/null @@ -1,241 +0,0 @@ -// Copyright (c) 2011-2013 The Bitcoin Core developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#include "peertablemodel.h" - -#include "clientmodel.h" -#include "guiconstants.h" -#include "guiutil.h" - -#include "net.h" -#include "sync.h" - -#include -#include -#include - -bool NodeLessThan::operator()(const CNodeCombinedStats &left, const CNodeCombinedStats &right) const -{ - const CNodeStats *pLeft = &(left.nodeStats); - const CNodeStats *pRight = &(right.nodeStats); - - if (order == Qt::DescendingOrder) - std::swap(pLeft, pRight); - - switch(column) - { - case PeerTableModel::Address: - return pLeft->addrName.compare(pRight->addrName) < 0; - case PeerTableModel::Subversion: - return pLeft->cleanSubVer.compare(pRight->cleanSubVer) < 0; - case PeerTableModel::Ping: - return pLeft->dPingTime < pRight->dPingTime; - } - - return false; -} - -// private implementation -class PeerTablePriv -{ -public: - /** Local cache of peer information */ - QList cachedNodeStats; - /** Column to sort nodes by */ - int sortColumn; - /** Order (ascending or descending) to sort nodes by */ - Qt::SortOrder sortOrder; - /** Index of rows by node ID */ - std::map mapNodeRows; - - /** Pull a full list of peers from vNodes into our cache */ - void refreshPeers() - { - { - TRY_LOCK(cs_vNodes, lockNodes); - if (!lockNodes) - { - // skip the refresh if we can't immediately get the lock - return; - } - cachedNodeStats.clear(); -#if QT_VERSION >= 0x040700 - cachedNodeStats.reserve(vNodes.size()); -#endif - Q_FOREACH (CNode* pnode, vNodes) - { - CNodeCombinedStats stats; - stats.nodeStateStats.nMisbehavior = 0; - stats.nodeStateStats.nSyncHeight = -1; - stats.fNodeStateStatsAvailable = false; - pnode->copyStats(stats.nodeStats); - cachedNodeStats.append(stats); - } - } - - // Try to retrieve the CNodeStateStats for each node. - { - TRY_LOCK(cs_main, lockMain); - if (lockMain) - { - BOOST_FOREACH(CNodeCombinedStats &stats, cachedNodeStats) - stats.fNodeStateStatsAvailable = GetNodeStateStats(stats.nodeStats.nodeid, stats.nodeStateStats); - } - } - - if (sortColumn >= 0) - // sort cacheNodeStats (use stable sort to prevent rows jumping around unneceesarily) - qStableSort(cachedNodeStats.begin(), cachedNodeStats.end(), NodeLessThan(sortColumn, sortOrder)); - - // build index map - mapNodeRows.clear(); - int row = 0; - Q_FOREACH (const CNodeCombinedStats& stats, cachedNodeStats) - mapNodeRows.insert(std::pair(stats.nodeStats.nodeid, row++)); - } - - int size() - { - return cachedNodeStats.size(); - } - - CNodeCombinedStats *index(int idx) - { - if(idx >= 0 && idx < cachedNodeStats.size()) { - return &cachedNodeStats[idx]; - } else { - return 0; - } - } -}; - -PeerTableModel::PeerTableModel(ClientModel *parent) : - QAbstractTableModel(parent), - clientModel(parent), - timer(0) -{ - columns << tr("Node/Service") << tr("User Agent") << tr("Ping Time"); - priv = new PeerTablePriv(); - // default to unsorted - priv->sortColumn = -1; - - // set up timer for auto refresh - timer = new QTimer(); - connect(timer, SIGNAL(timeout()), SLOT(refresh())); - timer->setInterval(MODEL_UPDATE_DELAY); - - // load initial data - refresh(); -} - -void PeerTableModel::startAutoRefresh() -{ - timer->start(); -} - -void PeerTableModel::stopAutoRefresh() -{ - timer->stop(); -} - -int PeerTableModel::rowCount(const QModelIndex &parent) const -{ - Q_UNUSED(parent); - return priv->size(); -} - -int PeerTableModel::columnCount(const QModelIndex &parent) const -{ - Q_UNUSED(parent); - return columns.length();; -} - -QVariant PeerTableModel::data(const QModelIndex &index, int role) const -{ - if(!index.isValid()) - return QVariant(); - - CNodeCombinedStats *rec = static_cast(index.internalPointer()); - - if (role == Qt::DisplayRole) { - switch(index.column()) - { - case Address: - return QString::fromStdString(rec->nodeStats.addrName); - case Subversion: - return QString::fromStdString(rec->nodeStats.cleanSubVer); - case Ping: - return GUIUtil::formatPingTime(rec->nodeStats.dPingTime); - } - } else if (role == Qt::TextAlignmentRole) { - if (index.column() == Ping) - return (int)(Qt::AlignRight | Qt::AlignVCenter); - } - - return QVariant(); -} - -QVariant PeerTableModel::headerData(int section, Qt::Orientation orientation, int role) const -{ - if(orientation == Qt::Horizontal) - { - if(role == Qt::DisplayRole && section < columns.size()) - { - return columns[section]; - } - } - return QVariant(); -} - -Qt::ItemFlags PeerTableModel::flags(const QModelIndex &index) const -{ - if(!index.isValid()) - return 0; - - Qt::ItemFlags retval = Qt::ItemIsSelectable | Qt::ItemIsEnabled; - return retval; -} - -QModelIndex PeerTableModel::index(int row, int column, const QModelIndex &parent) const -{ - Q_UNUSED(parent); - CNodeCombinedStats *data = priv->index(row); - - if (data) - { - return createIndex(row, column, data); - } - else - { - return QModelIndex(); - } -} - -const CNodeCombinedStats *PeerTableModel::getNodeStats(int idx) -{ - return priv->index(idx); -} - -void PeerTableModel::refresh() -{ - Q_EMIT layoutAboutToBeChanged(); - priv->refreshPeers(); - Q_EMIT layoutChanged(); -} - -int PeerTableModel::getRowByNodeId(NodeId nodeid) -{ - std::map::iterator it = priv->mapNodeRows.find(nodeid); - if (it == priv->mapNodeRows.end()) - return -1; - - return it->second; -} - -void PeerTableModel::sort(int column, Qt::SortOrder order) -{ - priv->sortColumn = column; - priv->sortOrder = order; - refresh(); -} diff --git a/src/qt/peertablemodel.h b/src/qt/peertablemodel.h deleted file mode 100644 index fcb89b761..000000000 --- a/src/qt/peertablemodel.h +++ /dev/null @@ -1,81 +0,0 @@ -// Copyright (c) 2011-2013 The Bitcoin Core developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#ifndef BITCOIN_QT_PEERTABLEMODEL_H -#define BITCOIN_QT_PEERTABLEMODEL_H - -#include "main.h" -#include "net.h" - -#include -#include - -class ClientModel; -class PeerTablePriv; - -QT_BEGIN_NAMESPACE -class QTimer; -QT_END_NAMESPACE - -struct CNodeCombinedStats { - CNodeStats nodeStats; - CNodeStateStats nodeStateStats; - bool fNodeStateStatsAvailable; -}; - -class NodeLessThan -{ -public: - NodeLessThan(int nColumn, Qt::SortOrder fOrder) : - column(nColumn), order(fOrder) {} - bool operator()(const CNodeCombinedStats &left, const CNodeCombinedStats &right) const; - -private: - int column; - Qt::SortOrder order; -}; - -/** - Qt model providing information about connected peers, similar to the - "getpeerinfo" RPC call. Used by the rpc console UI. - */ -class PeerTableModel : public QAbstractTableModel -{ - Q_OBJECT - -public: - explicit PeerTableModel(ClientModel *parent = 0); - const CNodeCombinedStats *getNodeStats(int idx); - int getRowByNodeId(NodeId nodeid); - void startAutoRefresh(); - void stopAutoRefresh(); - - enum ColumnIndex { - Address = 0, - Subversion = 1, - Ping = 2 - }; - - /** @name Methods overridden from QAbstractTableModel - @{*/ - int rowCount(const QModelIndex &parent) const; - int columnCount(const QModelIndex &parent) const; - QVariant data(const QModelIndex &index, int role) const; - QVariant headerData(int section, Qt::Orientation orientation, int role) const; - QModelIndex index(int row, int column, const QModelIndex &parent) const; - Qt::ItemFlags flags(const QModelIndex &index) const; - void sort(int column, Qt::SortOrder order); - /*@}*/ - -public Q_SLOTS: - void refresh(); - -private: - ClientModel *clientModel; - QStringList columns; - PeerTablePriv *priv; - QTimer *timer; -}; - -#endif // BITCOIN_QT_PEERTABLEMODEL_H diff --git a/src/qt/qvalidatedlineedit.cpp b/src/qt/qvalidatedlineedit.cpp deleted file mode 100644 index 346369392..000000000 --- a/src/qt/qvalidatedlineedit.cpp +++ /dev/null @@ -1,107 +0,0 @@ -// Copyright (c) 2011-2013 The Bitcoin Core developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#include "qvalidatedlineedit.h" - -#include "bitcoinaddressvalidator.h" -#include "guiconstants.h" - -QValidatedLineEdit::QValidatedLineEdit(QWidget *parent) : - QLineEdit(parent), - valid(true), - checkValidator(0) -{ - connect(this, SIGNAL(textChanged(QString)), this, SLOT(markValid())); -} - -void QValidatedLineEdit::setValid(bool valid) -{ - if(valid == this->valid) - { - return; - } - - if(valid) - { - setStyleSheet(""); - } - else - { - setStyleSheet(STYLE_INVALID); - } - this->valid = valid; -} - -void QValidatedLineEdit::focusInEvent(QFocusEvent *evt) -{ - // Clear invalid flag on focus - setValid(true); - - QLineEdit::focusInEvent(evt); -} - -void QValidatedLineEdit::focusOutEvent(QFocusEvent *evt) -{ - checkValidity(); - - QLineEdit::focusOutEvent(evt); -} - -void QValidatedLineEdit::markValid() -{ - // As long as a user is typing ensure we display state as valid - setValid(true); -} - -void QValidatedLineEdit::clear() -{ - setValid(true); - QLineEdit::clear(); -} - -void QValidatedLineEdit::setEnabled(bool enabled) -{ - if (!enabled) - { - // A disabled QValidatedLineEdit should be marked valid - setValid(true); - } - else - { - // Recheck validity when QValidatedLineEdit gets enabled - checkValidity(); - } - - QLineEdit::setEnabled(enabled); -} - -void QValidatedLineEdit::checkValidity() -{ - if (text().isEmpty()) - { - setValid(true); - } - else if (hasAcceptableInput()) - { - setValid(true); - - // Check contents on focus out - if (checkValidator) - { - QString address = text(); - int pos = 0; - if (checkValidator->validate(address, pos) == QValidator::Acceptable) - setValid(true); - else - setValid(false); - } - } - else - setValid(false); -} - -void QValidatedLineEdit::setCheckValidator(const QValidator *v) -{ - checkValidator = v; -} diff --git a/src/qt/qvalidatedlineedit.h b/src/qt/qvalidatedlineedit.h deleted file mode 100644 index 8665acda5..000000000 --- a/src/qt/qvalidatedlineedit.h +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright (c) 2011-2013 The Bitcoin Core developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#ifndef BITCOIN_QT_QVALIDATEDLINEEDIT_H -#define BITCOIN_QT_QVALIDATEDLINEEDIT_H - -#include - -/** Line edit that can be marked as "invalid" to show input validation feedback. When marked as invalid, - it will get a red background until it is focused. - */ -class QValidatedLineEdit : public QLineEdit -{ - Q_OBJECT - -public: - explicit QValidatedLineEdit(QWidget *parent); - void clear(); - void setCheckValidator(const QValidator *v); - -protected: - void focusInEvent(QFocusEvent *evt); - void focusOutEvent(QFocusEvent *evt); - -private: - bool valid; - const QValidator *checkValidator; - -public Q_SLOTS: - void setValid(bool valid); - void setEnabled(bool enabled); - -private Q_SLOTS: - void markValid(); - void checkValidity(); -}; - -#endif // BITCOIN_QT_QVALIDATEDLINEEDIT_H diff --git a/src/qt/qvaluecombobox.cpp b/src/qt/qvaluecombobox.cpp deleted file mode 100644 index 800436661..000000000 --- a/src/qt/qvaluecombobox.cpp +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright (c) 2011-2013 The Bitcoin Core developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#include "qvaluecombobox.h" - -QValueComboBox::QValueComboBox(QWidget *parent) : - QComboBox(parent), role(Qt::UserRole) -{ - connect(this, SIGNAL(currentIndexChanged(int)), this, SLOT(handleSelectionChanged(int))); -} - -QVariant QValueComboBox::value() const -{ - return itemData(currentIndex(), role); -} - -void QValueComboBox::setValue(const QVariant &value) -{ - setCurrentIndex(findData(value, role)); -} - -void QValueComboBox::setRole(int role) -{ - this->role = role; -} - -void QValueComboBox::handleSelectionChanged(int idx) -{ - Q_EMIT valueChanged(); -} diff --git a/src/qt/qvaluecombobox.h b/src/qt/qvaluecombobox.h deleted file mode 100644 index 5b20e6a5a..000000000 --- a/src/qt/qvaluecombobox.h +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright (c) 2011-2013 The Bitcoin Core developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#ifndef BITCOIN_QT_QVALUECOMBOBOX_H -#define BITCOIN_QT_QVALUECOMBOBOX_H - -#include -#include - -/* QComboBox that can be used with QDataWidgetMapper to select ordinal values from a model. */ -class QValueComboBox : public QComboBox -{ - Q_OBJECT - - Q_PROPERTY(QVariant value READ value WRITE setValue NOTIFY valueChanged USER true) - -public: - explicit QValueComboBox(QWidget *parent = 0); - - QVariant value() const; - void setValue(const QVariant &value); - - /** Specify model role to use as ordinal value (defaults to Qt::UserRole) */ - void setRole(int role); - -Q_SIGNALS: - void valueChanged(); - -private: - int role; - -private Q_SLOTS: - void handleSelectionChanged(int idx); -}; - -#endif // BITCOIN_QT_QVALUECOMBOBOX_H diff --git a/src/qt/receivecoinsdialog.cpp b/src/qt/receivecoinsdialog.cpp deleted file mode 100644 index 43b46c63b..000000000 --- a/src/qt/receivecoinsdialog.cpp +++ /dev/null @@ -1,269 +0,0 @@ -// Copyright (c) 2011-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. - -#include "receivecoinsdialog.h" -#include "ui_receivecoinsdialog.h" - -#include "addressbookpage.h" -#include "addresstablemodel.h" -#include "bitcoinunits.h" -#include "guiutil.h" -#include "optionsmodel.h" -#include "receiverequestdialog.h" -#include "recentrequeststablemodel.h" -#include "scicon.h" -#include "walletmodel.h" - -#include -#include -#include -#include -#include -#include - -ReceiveCoinsDialog::ReceiveCoinsDialog(QWidget *parent) : - QDialog(parent), - ui(new Ui::ReceiveCoinsDialog), - model(0) -{ - ui->setupUi(this); - -#ifdef Q_OS_MAC // Icons on push buttons are very uncommon on Mac - ui->clearButton->setIcon(QIcon()); - ui->receiveButton->setIcon(QIcon()); - ui->showRequestButton->setIcon(QIcon()); - ui->removeRequestButton->setIcon(QIcon()); -#else - ui->clearButton->setIcon(SingleColorIcon(":/icons/remove")); - ui->receiveButton->setIcon(SingleColorIcon(":/icons/receiving_addresses")); - ui->showRequestButton->setIcon(SingleColorIcon(":/icons/edit")); - ui->removeRequestButton->setIcon(SingleColorIcon(":/icons/remove")); -#endif - - // context menu actions - QAction *copyLabelAction = new QAction(tr("Copy label"), this); - QAction *copyMessageAction = new QAction(tr("Copy message"), this); - QAction *copyAmountAction = new QAction(tr("Copy amount"), this); - - // context menu - contextMenu = new QMenu(); - contextMenu->addAction(copyLabelAction); - contextMenu->addAction(copyMessageAction); - contextMenu->addAction(copyAmountAction); - - // context menu signals - connect(ui->recentRequestsView, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(showMenu(QPoint))); - connect(copyLabelAction, SIGNAL(triggered()), this, SLOT(copyLabel())); - connect(copyMessageAction, SIGNAL(triggered()), this, SLOT(copyMessage())); - connect(copyAmountAction, SIGNAL(triggered()), this, SLOT(copyAmount())); - - connect(ui->clearButton, SIGNAL(clicked()), this, SLOT(clear())); -} - -void ReceiveCoinsDialog::setModel(WalletModel *model) -{ - this->model = model; - - if(model && model->getOptionsModel()) - { - model->getRecentRequestsTableModel()->sort(RecentRequestsTableModel::Date, Qt::DescendingOrder); - connect(model->getOptionsModel(), SIGNAL(displayUnitChanged(int)), this, SLOT(updateDisplayUnit())); - updateDisplayUnit(); - - QTableView* tableView = ui->recentRequestsView; - - tableView->verticalHeader()->hide(); - tableView->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - tableView->setModel(model->getRecentRequestsTableModel()); - tableView->setAlternatingRowColors(true); - tableView->setSelectionBehavior(QAbstractItemView::SelectRows); - tableView->setSelectionMode(QAbstractItemView::ContiguousSelection); - tableView->setColumnWidth(RecentRequestsTableModel::Date, DATE_COLUMN_WIDTH); - tableView->setColumnWidth(RecentRequestsTableModel::Label, LABEL_COLUMN_WIDTH); - - connect(tableView->selectionModel(), - SIGNAL(selectionChanged(QItemSelection, QItemSelection)), this, - SLOT(recentRequestsView_selectionChanged(QItemSelection, QItemSelection))); - // Last 2 columns are set by the columnResizingFixer, when the table geometry is ready. - columnResizingFixer = new GUIUtil::TableViewLastColumnResizingFixer(tableView, AMOUNT_MINIMUM_COLUMN_WIDTH, DATE_COLUMN_WIDTH); - } -} - -ReceiveCoinsDialog::~ReceiveCoinsDialog() -{ - delete ui; -} - -void ReceiveCoinsDialog::clear() -{ - ui->reqAmount->clear(); - ui->reqLabel->setText(""); - ui->reqMessage->setText(""); - ui->reuseAddress->setChecked(false); - updateDisplayUnit(); -} - -void ReceiveCoinsDialog::reject() -{ - clear(); -} - -void ReceiveCoinsDialog::accept() -{ - clear(); -} - -void ReceiveCoinsDialog::updateDisplayUnit() -{ - if(model && model->getOptionsModel()) - { - ui->reqAmount->setDisplayUnit(model->getOptionsModel()->getDisplayUnit()); - } -} - -void ReceiveCoinsDialog::on_receiveButton_clicked() -{ - if(!model || !model->getOptionsModel() || !model->getAddressTableModel() || !model->getRecentRequestsTableModel()) - return; - - QString address; - QString label = ui->reqLabel->text(); - if(ui->reuseAddress->isChecked()) - { - /* Choose existing receiving address */ - AddressBookPage dlg(AddressBookPage::ForSelection, AddressBookPage::ReceivingTab, this); - dlg.setModel(model->getAddressTableModel()); - if(dlg.exec()) - { - address = dlg.getReturnValue(); - if(label.isEmpty()) /* If no label provided, use the previously used label */ - { - label = model->getAddressTableModel()->labelForAddress(address); - } - } else { - return; - } - } else { - /* Generate new receiving address */ - address = model->getAddressTableModel()->addRow(AddressTableModel::Receive, label, ""); - } - SendCoinsRecipient info(address, label, - ui->reqAmount->value(), ui->reqMessage->text()); - ReceiveRequestDialog *dialog = new ReceiveRequestDialog(this); - dialog->setAttribute(Qt::WA_DeleteOnClose); - dialog->setModel(model->getOptionsModel()); - dialog->setInfo(info); - dialog->show(); - clear(); - - /* Store request for later reference */ - model->getRecentRequestsTableModel()->addNewRequest(info); -} - -void ReceiveCoinsDialog::on_recentRequestsView_doubleClicked(const QModelIndex &index) -{ - const RecentRequestsTableModel *submodel = model->getRecentRequestsTableModel(); - ReceiveRequestDialog *dialog = new ReceiveRequestDialog(this); - dialog->setModel(model->getOptionsModel()); - dialog->setInfo(submodel->entry(index.row()).recipient); - dialog->setAttribute(Qt::WA_DeleteOnClose); - dialog->show(); -} - -void ReceiveCoinsDialog::recentRequestsView_selectionChanged(const QItemSelection &selected, const QItemSelection &deselected) -{ - // Enable Show/Remove buttons only if anything is selected. - bool enable = !ui->recentRequestsView->selectionModel()->selectedRows().isEmpty(); - ui->showRequestButton->setEnabled(enable); - ui->removeRequestButton->setEnabled(enable); -} - -void ReceiveCoinsDialog::on_showRequestButton_clicked() -{ - if(!model || !model->getRecentRequestsTableModel() || !ui->recentRequestsView->selectionModel()) - return; - QModelIndexList selection = ui->recentRequestsView->selectionModel()->selectedRows(); - - Q_FOREACH (const QModelIndex& index, selection) { - on_recentRequestsView_doubleClicked(index); - } -} - -void ReceiveCoinsDialog::on_removeRequestButton_clicked() -{ - if(!model || !model->getRecentRequestsTableModel() || !ui->recentRequestsView->selectionModel()) - return; - QModelIndexList selection = ui->recentRequestsView->selectionModel()->selectedRows(); - if(selection.empty()) - return; - // correct for selection mode ContiguousSelection - QModelIndex firstIndex = selection.at(0); - model->getRecentRequestsTableModel()->removeRows(firstIndex.row(), selection.length(), firstIndex.parent()); -} - -// We override the virtual resizeEvent of the QWidget to adjust tables column -// sizes as the tables width is proportional to the dialogs width. -void ReceiveCoinsDialog::resizeEvent(QResizeEvent *event) -{ - QWidget::resizeEvent(event); - columnResizingFixer->stretchColumnWidth(RecentRequestsTableModel::Message); -} - -void ReceiveCoinsDialog::keyPressEvent(QKeyEvent *event) -{ - if (event->key() == Qt::Key_Return) - { - // press return -> submit form - if (ui->reqLabel->hasFocus() || ui->reqAmount->hasFocus() || ui->reqMessage->hasFocus()) - { - event->ignore(); - on_receiveButton_clicked(); - return; - } - } - - this->QDialog::keyPressEvent(event); -} - -// copy column of selected row to clipboard -void ReceiveCoinsDialog::copyColumnToClipboard(int column) -{ - if(!model || !model->getRecentRequestsTableModel() || !ui->recentRequestsView->selectionModel()) - return; - QModelIndexList selection = ui->recentRequestsView->selectionModel()->selectedRows(); - if(selection.empty()) - return; - // correct for selection mode ContiguousSelection - QModelIndex firstIndex = selection.at(0); - GUIUtil::setClipboard(model->getRecentRequestsTableModel()->data(firstIndex.child(firstIndex.row(), column), Qt::EditRole).toString()); -} - -// context menu -void ReceiveCoinsDialog::showMenu(const QPoint &point) -{ - if(!model || !model->getRecentRequestsTableModel() || !ui->recentRequestsView->selectionModel()) - return; - QModelIndexList selection = ui->recentRequestsView->selectionModel()->selectedRows(); - if(selection.empty()) - return; - contextMenu->exec(QCursor::pos()); -} - -// context menu action: copy label -void ReceiveCoinsDialog::copyLabel() -{ - copyColumnToClipboard(RecentRequestsTableModel::Label); -} - -// context menu action: copy message -void ReceiveCoinsDialog::copyMessage() -{ - copyColumnToClipboard(RecentRequestsTableModel::Message); -} - -// context menu action: copy amount -void ReceiveCoinsDialog::copyAmount() -{ - copyColumnToClipboard(RecentRequestsTableModel::Amount); -} diff --git a/src/qt/receivecoinsdialog.h b/src/qt/receivecoinsdialog.h deleted file mode 100644 index 6bb159482..000000000 --- a/src/qt/receivecoinsdialog.h +++ /dev/null @@ -1,76 +0,0 @@ -// Copyright (c) 2011-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. - -#ifndef BITCOIN_QT_RECEIVECOINSDIALOG_H -#define BITCOIN_QT_RECEIVECOINSDIALOG_H - -#include "guiutil.h" - -#include -#include -#include -#include -#include -#include -#include - -class OptionsModel; -class WalletModel; - -namespace Ui { - class ReceiveCoinsDialog; -} - -QT_BEGIN_NAMESPACE -class QModelIndex; -QT_END_NAMESPACE - -/** Dialog for requesting payment of bitcoins */ -class ReceiveCoinsDialog : public QDialog -{ - Q_OBJECT - -public: - enum ColumnWidths { - DATE_COLUMN_WIDTH = 130, - LABEL_COLUMN_WIDTH = 120, - AMOUNT_MINIMUM_COLUMN_WIDTH = 160, - MINIMUM_COLUMN_WIDTH = 130 - }; - - explicit ReceiveCoinsDialog(QWidget *parent = 0); - ~ReceiveCoinsDialog(); - - void setModel(WalletModel *model); - -public Q_SLOTS: - void clear(); - void reject(); - void accept(); - -protected: - virtual void keyPressEvent(QKeyEvent *event); - -private: - Ui::ReceiveCoinsDialog *ui; - GUIUtil::TableViewLastColumnResizingFixer *columnResizingFixer; - WalletModel *model; - QMenu *contextMenu; - void copyColumnToClipboard(int column); - virtual void resizeEvent(QResizeEvent *event); - -private Q_SLOTS: - void on_receiveButton_clicked(); - void on_showRequestButton_clicked(); - void on_removeRequestButton_clicked(); - void on_recentRequestsView_doubleClicked(const QModelIndex &index); - void recentRequestsView_selectionChanged(const QItemSelection &selected, const QItemSelection &deselected); - void updateDisplayUnit(); - void showMenu(const QPoint &point); - void copyLabel(); - void copyMessage(); - void copyAmount(); -}; - -#endif // BITCOIN_QT_RECEIVECOINSDIALOG_H diff --git a/src/qt/receiverequestdialog.cpp b/src/qt/receiverequestdialog.cpp deleted file mode 100644 index 0c4a20cf9..000000000 --- a/src/qt/receiverequestdialog.cpp +++ /dev/null @@ -1,197 +0,0 @@ -// Copyright (c) 2011-2013 The Bitcoin Core developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#include "receiverequestdialog.h" -#include "ui_receiverequestdialog.h" - -#include "bitcoinunits.h" -#include "guiconstants.h" -#include "guiutil.h" -#include "optionsmodel.h" -#include "walletmodel.h" - -#include -#include -#include -#include -#include -#include -#if QT_VERSION < 0x050000 -#include -#endif - -#if defined(HAVE_CONFIG_H) -#include "config/bitcoin-config.h" /* for USE_QRCODE */ -#endif - -#ifdef USE_QRCODE -#include -#endif - -QRImageWidget::QRImageWidget(QWidget *parent): - QLabel(parent), contextMenu(0) -{ - contextMenu = new QMenu(); - QAction *saveImageAction = new QAction(tr("&Save Image..."), this); - connect(saveImageAction, SIGNAL(triggered()), this, SLOT(saveImage())); - contextMenu->addAction(saveImageAction); - QAction *copyImageAction = new QAction(tr("&Copy Image"), this); - connect(copyImageAction, SIGNAL(triggered()), this, SLOT(copyImage())); - contextMenu->addAction(copyImageAction); -} - -QImage QRImageWidget::exportImage() -{ - if(!pixmap()) - return QImage(); - return pixmap()->toImage().scaled(EXPORT_IMAGE_SIZE, EXPORT_IMAGE_SIZE); -} - -void QRImageWidget::mousePressEvent(QMouseEvent *event) -{ - if(event->button() == Qt::LeftButton && pixmap()) - { - event->accept(); - QMimeData *mimeData = new QMimeData; - mimeData->setImageData(exportImage()); - - QDrag *drag = new QDrag(this); - drag->setMimeData(mimeData); - drag->exec(); - } else { - QLabel::mousePressEvent(event); - } -} - -void QRImageWidget::saveImage() -{ - if(!pixmap()) - return; - QString fn = GUIUtil::getSaveFileName(this, tr("Save QR Code"), QString(), tr("PNG Image (*.png)"), NULL); - if (!fn.isEmpty()) - { - exportImage().save(fn); - } -} - -void QRImageWidget::copyImage() -{ - if(!pixmap()) - return; - QApplication::clipboard()->setImage(exportImage()); -} - -void QRImageWidget::contextMenuEvent(QContextMenuEvent *event) -{ - if(!pixmap()) - return; - contextMenu->exec(event->globalPos()); -} - -ReceiveRequestDialog::ReceiveRequestDialog(QWidget *parent) : - QDialog(parent), - ui(new Ui::ReceiveRequestDialog), - model(0) -{ - ui->setupUi(this); - -#ifndef USE_QRCODE - ui->btnSaveAs->setVisible(false); - ui->lblQRCode->setVisible(false); -#endif - - connect(ui->btnSaveAs, SIGNAL(clicked()), ui->lblQRCode, SLOT(saveImage())); -} - -ReceiveRequestDialog::~ReceiveRequestDialog() -{ - delete ui; -} - -void ReceiveRequestDialog::setModel(OptionsModel *model) -{ - this->model = model; - - if (model) - connect(model, SIGNAL(displayUnitChanged(int)), this, SLOT(update())); - - // update the display unit if necessary - update(); -} - -void ReceiveRequestDialog::setInfo(const SendCoinsRecipient &info) -{ - this->info = info; - update(); -} - -void ReceiveRequestDialog::update() -{ - if(!model) - return; - QString target = info.label; - if(target.isEmpty()) - target = info.address; - setWindowTitle(tr("Request payment to %1").arg(target)); - - QString uri = GUIUtil::formatBitcoinURI(info); - ui->btnSaveAs->setEnabled(false); - QString html; - html += ""; - html += ""+tr("Payment information")+"
"; - html += ""+tr("URI")+": "; - html += "" + GUIUtil::HtmlEscape(uri) + "
"; - html += ""+tr("Address")+": " + GUIUtil::HtmlEscape(info.address) + "
"; - if(info.amount) - html += ""+tr("Amount")+": " + BitcoinUnits::formatWithUnit(model->getDisplayUnit(), info.amount) + "
"; - if(!info.label.isEmpty()) - html += ""+tr("Label")+": " + GUIUtil::HtmlEscape(info.label) + "
"; - if(!info.message.isEmpty()) - html += ""+tr("Message")+": " + GUIUtil::HtmlEscape(info.message) + "
"; - ui->outUri->setText(html); - -#ifdef USE_QRCODE - ui->lblQRCode->setText(""); - if(!uri.isEmpty()) - { - // limit URI length - if (uri.length() > MAX_URI_LENGTH) - { - ui->lblQRCode->setText(tr("Resulting URI too long, try to reduce the text for label / message.")); - } else { - QRcode *code = QRcode_encodeString(uri.toUtf8().constData(), 0, QR_ECLEVEL_L, QR_MODE_8, 1); - if (!code) - { - ui->lblQRCode->setText(tr("Error encoding URI into QR Code.")); - return; - } - QImage myImage = QImage(code->width + 8, code->width + 8, QImage::Format_RGB32); - myImage.fill(0xffffff); - unsigned char *p = code->data; - for (int y = 0; y < code->width; y++) - { - for (int x = 0; x < code->width; x++) - { - myImage.setPixel(x + 4, y + 4, ((*p & 1) ? 0x0 : 0xffffff)); - p++; - } - } - QRcode_free(code); - - ui->lblQRCode->setPixmap(QPixmap::fromImage(myImage).scaled(300, 300)); - ui->btnSaveAs->setEnabled(true); - } - } -#endif -} - -void ReceiveRequestDialog::on_btnCopyURI_clicked() -{ - GUIUtil::setClipboard(GUIUtil::formatBitcoinURI(info)); -} - -void ReceiveRequestDialog::on_btnCopyAddress_clicked() -{ - GUIUtil::setClipboard(info.address); -} diff --git a/src/qt/receiverequestdialog.h b/src/qt/receiverequestdialog.h deleted file mode 100644 index 69f84ebbd..000000000 --- a/src/qt/receiverequestdialog.h +++ /dev/null @@ -1,70 +0,0 @@ -// Copyright (c) 2011-2013 The Bitcoin Core developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#ifndef BITCOIN_QT_RECEIVEREQUESTDIALOG_H -#define BITCOIN_QT_RECEIVEREQUESTDIALOG_H - -#include "walletmodel.h" - -#include -#include -#include - -class OptionsModel; - -namespace Ui { - class ReceiveRequestDialog; -} - -QT_BEGIN_NAMESPACE -class QMenu; -QT_END_NAMESPACE - -/* Label widget for QR code. This image can be dragged, dropped, copied and saved - * to disk. - */ -class QRImageWidget : public QLabel -{ - Q_OBJECT - -public: - explicit QRImageWidget(QWidget *parent = 0); - QImage exportImage(); - -public Q_SLOTS: - void saveImage(); - void copyImage(); - -protected: - virtual void mousePressEvent(QMouseEvent *event); - virtual void contextMenuEvent(QContextMenuEvent *event); - -private: - QMenu *contextMenu; -}; - -class ReceiveRequestDialog : public QDialog -{ - Q_OBJECT - -public: - explicit ReceiveRequestDialog(QWidget *parent = 0); - ~ReceiveRequestDialog(); - - void setModel(OptionsModel *model); - void setInfo(const SendCoinsRecipient &info); - -private Q_SLOTS: - void on_btnCopyURI_clicked(); - void on_btnCopyAddress_clicked(); - - void update(); - -private: - Ui::ReceiveRequestDialog *ui; - OptionsModel *model; - SendCoinsRecipient info; -}; - -#endif // BITCOIN_QT_RECEIVEREQUESTDIALOG_H diff --git a/src/qt/recentrequeststablemodel.cpp b/src/qt/recentrequeststablemodel.cpp deleted file mode 100644 index 5692a7aae..000000000 --- a/src/qt/recentrequeststablemodel.cpp +++ /dev/null @@ -1,245 +0,0 @@ -// Copyright (c) 2011-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. - -#include "recentrequeststablemodel.h" - -#include "bitcoinunits.h" -#include "guiutil.h" -#include "optionsmodel.h" - -#include "clientversion.h" -#include "streams.h" - -#include - -RecentRequestsTableModel::RecentRequestsTableModel(CWallet *wallet, WalletModel *parent) : - walletModel(parent) -{ - Q_UNUSED(wallet); - nReceiveRequestsMaxId = 0; - - // Load entries from wallet - std::vector vReceiveRequests; - parent->loadReceiveRequests(vReceiveRequests); - BOOST_FOREACH(const std::string& request, vReceiveRequests) - addNewRequest(request); - - /* These columns must match the indices in the ColumnIndex enumeration */ - columns << tr("Date") << tr("Label") << tr("Message") << getAmountTitle(); - - connect(walletModel->getOptionsModel(), SIGNAL(displayUnitChanged(int)), this, SLOT(updateDisplayUnit())); -} - -RecentRequestsTableModel::~RecentRequestsTableModel() -{ - /* Intentionally left empty */ -} - -int RecentRequestsTableModel::rowCount(const QModelIndex &parent) const -{ - Q_UNUSED(parent); - - return list.length(); -} - -int RecentRequestsTableModel::columnCount(const QModelIndex &parent) const -{ - Q_UNUSED(parent); - - return columns.length(); -} - -QVariant RecentRequestsTableModel::data(const QModelIndex &index, int role) const -{ - if(!index.isValid() || index.row() >= list.length()) - return QVariant(); - - const RecentRequestEntry *rec = &list[index.row()]; - - if(role == Qt::DisplayRole || role == Qt::EditRole) - { - switch(index.column()) - { - case Date: - return GUIUtil::dateTimeStr(rec->date); - case Label: - if(rec->recipient.label.isEmpty() && role == Qt::DisplayRole) - { - return tr("(no label)"); - } - else - { - return rec->recipient.label; - } - case Message: - if(rec->recipient.message.isEmpty() && role == Qt::DisplayRole) - { - return tr("(no message)"); - } - else - { - return rec->recipient.message; - } - case Amount: - if (rec->recipient.amount == 0 && role == Qt::DisplayRole) - return tr("(no amount)"); - else if (role == Qt::EditRole) - return BitcoinUnits::format(walletModel->getOptionsModel()->getDisplayUnit(), rec->recipient.amount, false, BitcoinUnits::separatorNever); - else - return BitcoinUnits::format(walletModel->getOptionsModel()->getDisplayUnit(), rec->recipient.amount); - } - } - else if (role == Qt::TextAlignmentRole) - { - if (index.column() == Amount) - return (int)(Qt::AlignRight|Qt::AlignVCenter); - } - return QVariant(); -} - -bool RecentRequestsTableModel::setData(const QModelIndex &index, const QVariant &value, int role) -{ - return true; -} - -QVariant RecentRequestsTableModel::headerData(int section, Qt::Orientation orientation, int role) const -{ - if(orientation == Qt::Horizontal) - { - if(role == Qt::DisplayRole && section < columns.size()) - { - return columns[section]; - } - } - return QVariant(); -} - -/** Updates the column title to "Amount (DisplayUnit)" and emits headerDataChanged() signal for table headers to react. */ -void RecentRequestsTableModel::updateAmountColumnTitle() -{ - columns[Amount] = getAmountTitle(); - Q_EMIT headerDataChanged(Qt::Horizontal,Amount,Amount); -} - -/** Gets title for amount column including current display unit if optionsModel reference available. */ -QString RecentRequestsTableModel::getAmountTitle() -{ - QString amountTitle = tr("Amount"); - if (this->walletModel->getOptionsModel() != NULL) - { - amountTitle += " ("+BitcoinUnits::name(this->walletModel->getOptionsModel()->getDisplayUnit()) + ")"; - } - return amountTitle; -} - -QModelIndex RecentRequestsTableModel::index(int row, int column, const QModelIndex &parent) const -{ - Q_UNUSED(parent); - - return createIndex(row, column); -} - -bool RecentRequestsTableModel::removeRows(int row, int count, const QModelIndex &parent) -{ - Q_UNUSED(parent); - - if(count > 0 && row >= 0 && (row+count) <= list.size()) - { - const RecentRequestEntry *rec; - for (int i = 0; i < count; ++i) - { - rec = &list[row+i]; - if (!walletModel->saveReceiveRequest(rec->recipient.address.toStdString(), rec->id, "")) - return false; - } - - beginRemoveRows(parent, row, row + count - 1); - list.erase(list.begin() + row, list.begin() + row + count); - endRemoveRows(); - return true; - } else { - return false; - } -} - -Qt::ItemFlags RecentRequestsTableModel::flags(const QModelIndex &index) const -{ - return Qt::ItemIsSelectable | Qt::ItemIsEnabled; -} - -// called when adding a request from the GUI -void RecentRequestsTableModel::addNewRequest(const SendCoinsRecipient &recipient) -{ - RecentRequestEntry newEntry; - newEntry.id = ++nReceiveRequestsMaxId; - newEntry.date = QDateTime::currentDateTime(); - newEntry.recipient = recipient; - - CDataStream ss(SER_DISK, CLIENT_VERSION); - ss << newEntry; - - if (!walletModel->saveReceiveRequest(recipient.address.toStdString(), newEntry.id, ss.str())) - return; - - addNewRequest(newEntry); -} - -// called from ctor when loading from wallet -void RecentRequestsTableModel::addNewRequest(const std::string &recipient) -{ - std::vector data(recipient.begin(), recipient.end()); - CDataStream ss(data, SER_DISK, CLIENT_VERSION); - - RecentRequestEntry entry; - ss >> entry; - - if (entry.id == 0) // should not happen - return; - - if (entry.id > nReceiveRequestsMaxId) - nReceiveRequestsMaxId = entry.id; - - addNewRequest(entry); -} - -// actually add to table in GUI -void RecentRequestsTableModel::addNewRequest(RecentRequestEntry &recipient) -{ - beginInsertRows(QModelIndex(), 0, 0); - list.prepend(recipient); - endInsertRows(); -} - -void RecentRequestsTableModel::sort(int column, Qt::SortOrder order) -{ - qSort(list.begin(), list.end(), RecentRequestEntryLessThan(column, order)); - Q_EMIT dataChanged(index(0, 0, QModelIndex()), index(list.size() - 1, NUMBER_OF_COLUMNS - 1, QModelIndex())); -} - -void RecentRequestsTableModel::updateDisplayUnit() -{ - updateAmountColumnTitle(); -} - -bool RecentRequestEntryLessThan::operator()(RecentRequestEntry &left, RecentRequestEntry &right) const -{ - RecentRequestEntry *pLeft = &left; - RecentRequestEntry *pRight = &right; - if (order == Qt::DescendingOrder) - std::swap(pLeft, pRight); - - switch(column) - { - case RecentRequestsTableModel::Date: - return pLeft->date.toTime_t() < pRight->date.toTime_t(); - case RecentRequestsTableModel::Label: - return pLeft->recipient.label < pRight->recipient.label; - case RecentRequestsTableModel::Message: - return pLeft->recipient.message < pRight->recipient.message; - case RecentRequestsTableModel::Amount: - return pLeft->recipient.amount < pRight->recipient.amount; - default: - return pLeft->id < pRight->id; - } -} diff --git a/src/qt/recentrequeststablemodel.h b/src/qt/recentrequeststablemodel.h deleted file mode 100644 index 64faa72d4..000000000 --- a/src/qt/recentrequeststablemodel.h +++ /dev/null @@ -1,108 +0,0 @@ -// Copyright (c) 2011-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. - -#ifndef BITCOIN_QT_RECENTREQUESTSTABLEMODEL_H -#define BITCOIN_QT_RECENTREQUESTSTABLEMODEL_H - -#include "walletmodel.h" - -#include -#include -#include - -class CWallet; - -class RecentRequestEntry -{ -public: - RecentRequestEntry() : nVersion(RecentRequestEntry::CURRENT_VERSION), id(0) { } - - static const int CURRENT_VERSION = 1; - int nVersion; - int64_t id; - QDateTime date; - SendCoinsRecipient recipient; - - ADD_SERIALIZE_METHODS; - - template - inline void SerializationOp(Stream& s, Operation ser_action, int nType, int nVersion) { - unsigned int nDate = date.toTime_t(); - - READWRITE(this->nVersion); - nVersion = this->nVersion; - READWRITE(id); - READWRITE(nDate); - READWRITE(recipient); - - if (ser_action.ForRead()) - date = QDateTime::fromTime_t(nDate); - } -}; - -class RecentRequestEntryLessThan -{ -public: - RecentRequestEntryLessThan(int nColumn, Qt::SortOrder fOrder): - column(nColumn), order(fOrder) {} - bool operator()(RecentRequestEntry &left, RecentRequestEntry &right) const; - -private: - int column; - Qt::SortOrder order; -}; - -/** Model for list of recently generated payment requests / bitcoin: URIs. - * Part of wallet model. - */ -class RecentRequestsTableModel: public QAbstractTableModel -{ - Q_OBJECT - -public: - explicit RecentRequestsTableModel(CWallet *wallet, WalletModel *parent); - ~RecentRequestsTableModel(); - - enum ColumnIndex { - Date = 0, - Label = 1, - Message = 2, - Amount = 3, - NUMBER_OF_COLUMNS - }; - - /** @name Methods overridden from QAbstractTableModel - @{*/ - int rowCount(const QModelIndex &parent) const; - int columnCount(const QModelIndex &parent) const; - QVariant data(const QModelIndex &index, int role) const; - bool setData(const QModelIndex &index, const QVariant &value, int role); - QVariant headerData(int section, Qt::Orientation orientation, int role) const; - QModelIndex index(int row, int column, const QModelIndex &parent) const; - bool removeRows(int row, int count, const QModelIndex &parent = QModelIndex()); - Qt::ItemFlags flags(const QModelIndex &index) const; - /*@}*/ - - const RecentRequestEntry &entry(int row) const { return list[row]; } - void addNewRequest(const SendCoinsRecipient &recipient); - void addNewRequest(const std::string &recipient); - void addNewRequest(RecentRequestEntry &recipient); - -public Q_SLOTS: - void sort(int column, Qt::SortOrder order = Qt::AscendingOrder); - void updateDisplayUnit(); - -private: - WalletModel *walletModel; - QStringList columns; - QList list; - int64_t nReceiveRequestsMaxId; - - /** Updates the column title to "Amount (DisplayUnit)" and emits headerDataChanged() signal for table headers to react. */ - void updateAmountColumnTitle(); - /** Gets title for amount column including current display unit if optionsModel reference available. */ - QString getAmountTitle(); -}; - -#endif // BITCOIN_QT_RECENTREQUESTSTABLEMODEL_H diff --git a/src/qt/res/icons/about.png b/src/qt/res/icons/about.png deleted file mode 100644 index 83eb3c07e..000000000 Binary files a/src/qt/res/icons/about.png and /dev/null differ diff --git a/src/qt/res/icons/about_qt.png b/src/qt/res/icons/about_qt.png deleted file mode 100644 index dd27a99d0..000000000 Binary files a/src/qt/res/icons/about_qt.png and /dev/null differ diff --git a/src/qt/res/icons/add.png b/src/qt/res/icons/add.png deleted file mode 100644 index 1442b4e85..000000000 Binary files a/src/qt/res/icons/add.png and /dev/null differ diff --git a/src/qt/res/icons/address-book.png b/src/qt/res/icons/address-book.png deleted file mode 100644 index b11c7d535..000000000 Binary files a/src/qt/res/icons/address-book.png and /dev/null differ diff --git a/src/qt/res/icons/bitcoin.icns b/src/qt/res/icons/bitcoin.icns deleted file mode 100644 index 54d02d34d..000000000 Binary files a/src/qt/res/icons/bitcoin.icns and /dev/null differ diff --git a/src/qt/res/icons/bitcoin.ico b/src/qt/res/icons/bitcoin.ico deleted file mode 100755 index 8f5045015..000000000 Binary files a/src/qt/res/icons/bitcoin.ico and /dev/null differ diff --git a/src/qt/res/icons/bitcoin.png b/src/qt/res/icons/bitcoin.png deleted file mode 100644 index 435621af2..000000000 Binary files a/src/qt/res/icons/bitcoin.png and /dev/null differ diff --git a/src/qt/res/icons/clock1.png b/src/qt/res/icons/clock1.png deleted file mode 100644 index ceae5ed0d..000000000 Binary files a/src/qt/res/icons/clock1.png and /dev/null differ diff --git a/src/qt/res/icons/clock2.png b/src/qt/res/icons/clock2.png deleted file mode 100644 index 159f69a8f..000000000 Binary files a/src/qt/res/icons/clock2.png and /dev/null differ diff --git a/src/qt/res/icons/clock3.png b/src/qt/res/icons/clock3.png deleted file mode 100644 index d668e35ff..000000000 Binary files a/src/qt/res/icons/clock3.png and /dev/null differ diff --git a/src/qt/res/icons/clock4.png b/src/qt/res/icons/clock4.png deleted file mode 100644 index 5ebf8ed7a..000000000 Binary files a/src/qt/res/icons/clock4.png and /dev/null differ diff --git a/src/qt/res/icons/clock5.png b/src/qt/res/icons/clock5.png deleted file mode 100644 index 96f15ef7d..000000000 Binary files a/src/qt/res/icons/clock5.png and /dev/null differ diff --git a/src/qt/res/icons/configure.png b/src/qt/res/icons/configure.png deleted file mode 100644 index 5333c83d5..000000000 Binary files a/src/qt/res/icons/configure.png and /dev/null differ diff --git a/src/qt/res/icons/connect0.png b/src/qt/res/icons/connect0.png deleted file mode 100644 index 58e2c3e96..000000000 Binary files a/src/qt/res/icons/connect0.png and /dev/null differ diff --git a/src/qt/res/icons/connect1.png b/src/qt/res/icons/connect1.png deleted file mode 100644 index 949e7a922..000000000 Binary files a/src/qt/res/icons/connect1.png and /dev/null differ diff --git a/src/qt/res/icons/connect2.png b/src/qt/res/icons/connect2.png deleted file mode 100644 index 143b2054f..000000000 Binary files a/src/qt/res/icons/connect2.png and /dev/null differ diff --git a/src/qt/res/icons/connect3.png b/src/qt/res/icons/connect3.png deleted file mode 100644 index 143b2054f..000000000 Binary files a/src/qt/res/icons/connect3.png and /dev/null differ diff --git a/src/qt/res/icons/connect4.png b/src/qt/res/icons/connect4.png deleted file mode 100644 index f96e3455c..000000000 Binary files a/src/qt/res/icons/connect4.png and /dev/null differ diff --git a/src/qt/res/icons/debugwindow.png b/src/qt/res/icons/debugwindow.png deleted file mode 100644 index 290fe6086..000000000 Binary files a/src/qt/res/icons/debugwindow.png and /dev/null differ diff --git a/src/qt/res/icons/edit.png b/src/qt/res/icons/edit.png deleted file mode 100644 index 46582716e..000000000 Binary files a/src/qt/res/icons/edit.png and /dev/null differ diff --git a/src/qt/res/icons/editcopy.png b/src/qt/res/icons/editcopy.png deleted file mode 100644 index 74ac8b277..000000000 Binary files a/src/qt/res/icons/editcopy.png and /dev/null differ diff --git a/src/qt/res/icons/editpaste.png b/src/qt/res/icons/editpaste.png deleted file mode 100644 index 7b47f4d52..000000000 Binary files a/src/qt/res/icons/editpaste.png and /dev/null differ diff --git a/src/qt/res/icons/export.png b/src/qt/res/icons/export.png deleted file mode 100644 index ac76cc1ef..000000000 Binary files a/src/qt/res/icons/export.png and /dev/null differ diff --git a/src/qt/res/icons/eye.png b/src/qt/res/icons/eye.png deleted file mode 100644 index f2f139dbb..000000000 Binary files a/src/qt/res/icons/eye.png and /dev/null differ diff --git a/src/qt/res/icons/eye_minus.png b/src/qt/res/icons/eye_minus.png deleted file mode 100644 index 795bf6436..000000000 Binary files a/src/qt/res/icons/eye_minus.png and /dev/null differ diff --git a/src/qt/res/icons/eye_plus.png b/src/qt/res/icons/eye_plus.png deleted file mode 100644 index eaab69297..000000000 Binary files a/src/qt/res/icons/eye_plus.png and /dev/null differ diff --git a/src/qt/res/icons/filesave.png b/src/qt/res/icons/filesave.png deleted file mode 100644 index 779cca1d5..000000000 Binary files a/src/qt/res/icons/filesave.png and /dev/null differ diff --git a/src/qt/res/icons/history.png b/src/qt/res/icons/history.png deleted file mode 100644 index 68d841fa8..000000000 Binary files a/src/qt/res/icons/history.png and /dev/null differ diff --git a/src/qt/res/icons/info.png b/src/qt/res/icons/info.png deleted file mode 100644 index 692b50c2a..000000000 Binary files a/src/qt/res/icons/info.png and /dev/null differ diff --git a/src/qt/res/icons/key.png b/src/qt/res/icons/key.png deleted file mode 100644 index f301c4f38..000000000 Binary files a/src/qt/res/icons/key.png and /dev/null differ diff --git a/src/qt/res/icons/lock_closed.png b/src/qt/res/icons/lock_closed.png deleted file mode 100644 index 1bd98b21a..000000000 Binary files a/src/qt/res/icons/lock_closed.png and /dev/null differ diff --git a/src/qt/res/icons/lock_open.png b/src/qt/res/icons/lock_open.png deleted file mode 100644 index a7045133b..000000000 Binary files a/src/qt/res/icons/lock_open.png and /dev/null differ diff --git a/src/qt/res/icons/open.png b/src/qt/res/icons/open.png deleted file mode 100644 index 4d958f0e1..000000000 Binary files a/src/qt/res/icons/open.png and /dev/null differ diff --git a/src/qt/res/icons/overview.png b/src/qt/res/icons/overview.png deleted file mode 100644 index 411595413..000000000 Binary files a/src/qt/res/icons/overview.png and /dev/null differ diff --git a/src/qt/res/icons/quit.png b/src/qt/res/icons/quit.png deleted file mode 100644 index 55e34de4b..000000000 Binary files a/src/qt/res/icons/quit.png and /dev/null differ diff --git a/src/qt/res/icons/receive.png b/src/qt/res/icons/receive.png deleted file mode 100644 index f4e6f58d0..000000000 Binary files a/src/qt/res/icons/receive.png and /dev/null differ diff --git a/src/qt/res/icons/remove.png b/src/qt/res/icons/remove.png deleted file mode 100644 index 8e738d630..000000000 Binary files a/src/qt/res/icons/remove.png and /dev/null differ diff --git a/src/qt/res/icons/send.png b/src/qt/res/icons/send.png deleted file mode 100644 index ac76cc1ef..000000000 Binary files a/src/qt/res/icons/send.png and /dev/null differ diff --git a/src/qt/res/icons/synced.png b/src/qt/res/icons/synced.png deleted file mode 100644 index 5ac28d36a..000000000 Binary files a/src/qt/res/icons/synced.png and /dev/null differ diff --git a/src/qt/res/icons/transaction0.png b/src/qt/res/icons/transaction0.png deleted file mode 100644 index 1091b86e6..000000000 Binary files a/src/qt/res/icons/transaction0.png and /dev/null differ diff --git a/src/qt/res/icons/transaction2.png b/src/qt/res/icons/transaction2.png deleted file mode 100644 index 5ac28d36a..000000000 Binary files a/src/qt/res/icons/transaction2.png and /dev/null differ diff --git a/src/qt/res/icons/transaction_conflicted.png b/src/qt/res/icons/transaction_conflicted.png deleted file mode 100644 index 55e34de4b..000000000 Binary files a/src/qt/res/icons/transaction_conflicted.png and /dev/null differ diff --git a/src/qt/res/icons/tx_inout.png b/src/qt/res/icons/tx_inout.png deleted file mode 100644 index 0a6e72a89..000000000 Binary files a/src/qt/res/icons/tx_inout.png and /dev/null differ diff --git a/src/qt/res/icons/tx_input.png b/src/qt/res/icons/tx_input.png deleted file mode 100644 index 9e9ee9293..000000000 Binary files a/src/qt/res/icons/tx_input.png and /dev/null differ diff --git a/src/qt/res/icons/tx_mined.png b/src/qt/res/icons/tx_mined.png deleted file mode 100644 index 5a6ef521c..000000000 Binary files a/src/qt/res/icons/tx_mined.png and /dev/null differ diff --git a/src/qt/res/icons/tx_output.png b/src/qt/res/icons/tx_output.png deleted file mode 100644 index 6f66ab654..000000000 Binary files a/src/qt/res/icons/tx_output.png and /dev/null differ diff --git a/src/qt/res/icons/verify.png b/src/qt/res/icons/verify.png deleted file mode 100644 index 8e2cb2cc1..000000000 Binary files a/src/qt/res/icons/verify.png and /dev/null differ diff --git a/src/qt/res/icons/warning.png b/src/qt/res/icons/warning.png deleted file mode 100644 index 723a30a65..000000000 Binary files a/src/qt/res/icons/warning.png and /dev/null differ diff --git a/src/qt/res/movies/makespinner.sh b/src/qt/res/movies/makespinner.sh deleted file mode 100755 index 625fb1717..000000000 --- a/src/qt/res/movies/makespinner.sh +++ /dev/null @@ -1,6 +0,0 @@ -for i in {1..35} -do - value=$(printf "%03d" $i) - angle=$(($i * 10)) - convert spinner-000.png -background "rgba(0,0,0,0.0)" -distort SRT $angle spinner-$value.png -done diff --git a/src/qt/res/movies/spinner-000.png b/src/qt/res/movies/spinner-000.png deleted file mode 100644 index 1e92d859d..000000000 Binary files a/src/qt/res/movies/spinner-000.png and /dev/null differ diff --git a/src/qt/res/movies/spinner-001.png b/src/qt/res/movies/spinner-001.png deleted file mode 100644 index d167f2054..000000000 Binary files a/src/qt/res/movies/spinner-001.png and /dev/null differ diff --git a/src/qt/res/movies/spinner-002.png b/src/qt/res/movies/spinner-002.png deleted file mode 100644 index 4a1f1f8e5..000000000 Binary files a/src/qt/res/movies/spinner-002.png and /dev/null differ diff --git a/src/qt/res/movies/spinner-003.png b/src/qt/res/movies/spinner-003.png deleted file mode 100644 index fb1c2cd4a..000000000 Binary files a/src/qt/res/movies/spinner-003.png and /dev/null differ diff --git a/src/qt/res/movies/spinner-004.png b/src/qt/res/movies/spinner-004.png deleted file mode 100644 index 4df213234..000000000 Binary files a/src/qt/res/movies/spinner-004.png and /dev/null differ diff --git a/src/qt/res/movies/spinner-005.png b/src/qt/res/movies/spinner-005.png deleted file mode 100644 index 5d6f41e0d..000000000 Binary files a/src/qt/res/movies/spinner-005.png and /dev/null differ diff --git a/src/qt/res/movies/spinner-006.png b/src/qt/res/movies/spinner-006.png deleted file mode 100644 index c1f7d1889..000000000 Binary files a/src/qt/res/movies/spinner-006.png and /dev/null differ diff --git a/src/qt/res/movies/spinner-007.png b/src/qt/res/movies/spinner-007.png deleted file mode 100644 index 1e794b262..000000000 Binary files a/src/qt/res/movies/spinner-007.png and /dev/null differ diff --git a/src/qt/res/movies/spinner-008.png b/src/qt/res/movies/spinner-008.png deleted file mode 100644 index df12ea871..000000000 Binary files a/src/qt/res/movies/spinner-008.png and /dev/null differ diff --git a/src/qt/res/movies/spinner-009.png b/src/qt/res/movies/spinner-009.png deleted file mode 100644 index 18fc3a7d1..000000000 Binary files a/src/qt/res/movies/spinner-009.png and /dev/null differ diff --git a/src/qt/res/movies/spinner-010.png b/src/qt/res/movies/spinner-010.png deleted file mode 100644 index a79c845fe..000000000 Binary files a/src/qt/res/movies/spinner-010.png and /dev/null differ diff --git a/src/qt/res/movies/spinner-011.png b/src/qt/res/movies/spinner-011.png deleted file mode 100644 index 57baf6689..000000000 Binary files a/src/qt/res/movies/spinner-011.png and /dev/null differ diff --git a/src/qt/res/movies/spinner-012.png b/src/qt/res/movies/spinner-012.png deleted file mode 100644 index 9deae7853..000000000 Binary files a/src/qt/res/movies/spinner-012.png and /dev/null differ diff --git a/src/qt/res/movies/spinner-013.png b/src/qt/res/movies/spinner-013.png deleted file mode 100644 index 0659d48de..000000000 Binary files a/src/qt/res/movies/spinner-013.png and /dev/null differ diff --git a/src/qt/res/movies/spinner-014.png b/src/qt/res/movies/spinner-014.png deleted file mode 100644 index bc1ef51bd..000000000 Binary files a/src/qt/res/movies/spinner-014.png and /dev/null differ diff --git a/src/qt/res/movies/spinner-015.png b/src/qt/res/movies/spinner-015.png deleted file mode 100644 index 24b57b62c..000000000 Binary files a/src/qt/res/movies/spinner-015.png and /dev/null differ diff --git a/src/qt/res/movies/spinner-016.png b/src/qt/res/movies/spinner-016.png deleted file mode 100644 index d62287265..000000000 Binary files a/src/qt/res/movies/spinner-016.png and /dev/null differ diff --git a/src/qt/res/movies/spinner-017.png b/src/qt/res/movies/spinner-017.png deleted file mode 100644 index f48f688db..000000000 Binary files a/src/qt/res/movies/spinner-017.png and /dev/null differ diff --git a/src/qt/res/movies/spinner-018.png b/src/qt/res/movies/spinner-018.png deleted file mode 100644 index a2c8f38b1..000000000 Binary files a/src/qt/res/movies/spinner-018.png and /dev/null differ diff --git a/src/qt/res/movies/spinner-019.png b/src/qt/res/movies/spinner-019.png deleted file mode 100644 index 9d7cc35d8..000000000 Binary files a/src/qt/res/movies/spinner-019.png and /dev/null differ diff --git a/src/qt/res/movies/spinner-020.png b/src/qt/res/movies/spinner-020.png deleted file mode 100644 index 1a07acc45..000000000 Binary files a/src/qt/res/movies/spinner-020.png and /dev/null differ diff --git a/src/qt/res/movies/spinner-021.png b/src/qt/res/movies/spinner-021.png deleted file mode 100644 index 9cea8f254..000000000 Binary files a/src/qt/res/movies/spinner-021.png and /dev/null differ diff --git a/src/qt/res/movies/spinner-022.png b/src/qt/res/movies/spinner-022.png deleted file mode 100644 index 60250f6de..000000000 Binary files a/src/qt/res/movies/spinner-022.png and /dev/null differ diff --git a/src/qt/res/movies/spinner-023.png b/src/qt/res/movies/spinner-023.png deleted file mode 100644 index fc290a0cf..000000000 Binary files a/src/qt/res/movies/spinner-023.png and /dev/null differ diff --git a/src/qt/res/movies/spinner-024.png b/src/qt/res/movies/spinner-024.png deleted file mode 100644 index c5dcf1eae..000000000 Binary files a/src/qt/res/movies/spinner-024.png and /dev/null differ diff --git a/src/qt/res/movies/spinner-025.png b/src/qt/res/movies/spinner-025.png deleted file mode 100644 index 7f3577a4d..000000000 Binary files a/src/qt/res/movies/spinner-025.png and /dev/null differ diff --git a/src/qt/res/movies/spinner-026.png b/src/qt/res/movies/spinner-026.png deleted file mode 100644 index 1663ddf44..000000000 Binary files a/src/qt/res/movies/spinner-026.png and /dev/null differ diff --git a/src/qt/res/movies/spinner-027.png b/src/qt/res/movies/spinner-027.png deleted file mode 100644 index d0e6da450..000000000 Binary files a/src/qt/res/movies/spinner-027.png and /dev/null differ diff --git a/src/qt/res/movies/spinner-028.png b/src/qt/res/movies/spinner-028.png deleted file mode 100644 index 2a7aba50e..000000000 Binary files a/src/qt/res/movies/spinner-028.png and /dev/null differ diff --git a/src/qt/res/movies/spinner-029.png b/src/qt/res/movies/spinner-029.png deleted file mode 100644 index c8ca15c1e..000000000 Binary files a/src/qt/res/movies/spinner-029.png and /dev/null differ diff --git a/src/qt/res/movies/spinner-030.png b/src/qt/res/movies/spinner-030.png deleted file mode 100644 index c847c99a9..000000000 Binary files a/src/qt/res/movies/spinner-030.png and /dev/null differ diff --git a/src/qt/res/movies/spinner-031.png b/src/qt/res/movies/spinner-031.png deleted file mode 100644 index 403443144..000000000 Binary files a/src/qt/res/movies/spinner-031.png and /dev/null differ diff --git a/src/qt/res/movies/spinner-032.png b/src/qt/res/movies/spinner-032.png deleted file mode 100644 index f9db08056..000000000 Binary files a/src/qt/res/movies/spinner-032.png and /dev/null differ diff --git a/src/qt/res/movies/spinner-033.png b/src/qt/res/movies/spinner-033.png deleted file mode 100644 index 43f57719e..000000000 Binary files a/src/qt/res/movies/spinner-033.png and /dev/null differ diff --git a/src/qt/res/movies/spinner-034.png b/src/qt/res/movies/spinner-034.png deleted file mode 100644 index c26656ff1..000000000 Binary files a/src/qt/res/movies/spinner-034.png and /dev/null differ diff --git a/src/qt/res/movies/spinner-035.png b/src/qt/res/movies/spinner-035.png deleted file mode 100644 index e471f950a..000000000 Binary files a/src/qt/res/movies/spinner-035.png and /dev/null differ diff --git a/src/qt/res/spinner.png b/src/qt/res/spinner.png deleted file mode 100644 index b296a5848..000000000 Binary files a/src/qt/res/spinner.png and /dev/null differ diff --git a/src/qt/res/src/bitcoin.svg b/src/qt/res/src/bitcoin.svg deleted file mode 100644 index 14cf0c5e1..000000000 --- a/src/qt/res/src/bitcoin.svg +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/qt/res/src/clock_0.svg b/src/qt/res/src/clock_0.svg deleted file mode 100644 index 2a4ae0235..000000000 --- a/src/qt/res/src/clock_0.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - diff --git a/src/qt/res/src/clock_1.svg b/src/qt/res/src/clock_1.svg deleted file mode 100644 index 4e49772d2..000000000 --- a/src/qt/res/src/clock_1.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - diff --git a/src/qt/res/src/clock_2.svg b/src/qt/res/src/clock_2.svg deleted file mode 100644 index 995446e46..000000000 --- a/src/qt/res/src/clock_2.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - diff --git a/src/qt/res/src/clock_3.svg b/src/qt/res/src/clock_3.svg deleted file mode 100644 index ea47a8473..000000000 --- a/src/qt/res/src/clock_3.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - diff --git a/src/qt/res/src/clock_4.svg b/src/qt/res/src/clock_4.svg deleted file mode 100644 index 43160288d..000000000 --- a/src/qt/res/src/clock_4.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - diff --git a/src/qt/res/src/connect-0.svg b/src/qt/res/src/connect-0.svg deleted file mode 100644 index bedbec777..000000000 --- a/src/qt/res/src/connect-0.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - diff --git a/src/qt/res/src/connect-1.svg b/src/qt/res/src/connect-1.svg deleted file mode 100644 index d3d4e46a4..000000000 --- a/src/qt/res/src/connect-1.svg +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - diff --git a/src/qt/res/src/connect-2.svg b/src/qt/res/src/connect-2.svg deleted file mode 100644 index d5becc52b..000000000 --- a/src/qt/res/src/connect-2.svg +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - diff --git a/src/qt/res/src/connect-3.svg b/src/qt/res/src/connect-3.svg deleted file mode 100644 index 9bfa04721..000000000 --- a/src/qt/res/src/connect-3.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - diff --git a/src/qt/res/src/mine.svg b/src/qt/res/src/mine.svg deleted file mode 100644 index 4a3f78660..000000000 --- a/src/qt/res/src/mine.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - diff --git a/src/qt/res/src/qt.svg b/src/qt/res/src/qt.svg deleted file mode 100644 index 9ef54f493..000000000 --- a/src/qt/res/src/qt.svg +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - diff --git a/src/qt/res/src/tx_in.svg b/src/qt/res/src/tx_in.svg deleted file mode 100644 index a8911f904..000000000 --- a/src/qt/res/src/tx_in.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - diff --git a/src/qt/res/src/tx_inout.svg b/src/qt/res/src/tx_inout.svg deleted file mode 100644 index 5b6688978..000000000 --- a/src/qt/res/src/tx_inout.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - diff --git a/src/qt/res/src/verify.svg b/src/qt/res/src/verify.svg deleted file mode 100644 index 1ff11b7f5..000000000 --- a/src/qt/res/src/verify.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - diff --git a/src/qt/rpcconsole.cpp b/src/qt/rpcconsole.cpp deleted file mode 100644 index bdf2925fe..000000000 --- a/src/qt/rpcconsole.cpp +++ /dev/null @@ -1,661 +0,0 @@ -// Copyright (c) 2011-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. - -#include "rpcconsole.h" -#include "ui_rpcconsole.h" - -#include "clientmodel.h" -#include "guiutil.h" -#include "peertablemodel.h" -#include "scicon.h" - -#include "main.h" -#include "chainparams.h" -#include "rpcserver.h" -#include "rpcclient.h" -#include "util.h" - -#include "json/json_spirit_value.h" - -#include - -#ifdef ENABLE_WALLET -#include -#endif - -#include -#include -#include -#include - -#if QT_VERSION < 0x050000 -#include -#endif - -// TODO: add a scrollback limit, as there is currently none -// TODO: make it possible to filter out categories (esp debug messages when implemented) -// TODO: receive errors and debug messages through ClientModel - -const int CONSOLE_HISTORY = 50; -const QSize ICON_SIZE(24, 24); - -const int INITIAL_TRAFFIC_GRAPH_MINS = 30; - -const struct { - const char *url; - const char *source; -} ICON_MAPPING[] = { - {"cmd-request", ":/icons/tx_input"}, - {"cmd-reply", ":/icons/tx_output"}, - {"cmd-error", ":/icons/tx_output"}, - {"misc", ":/icons/tx_inout"}, - {NULL, NULL} -}; - -/* Object for executing console RPC commands in a separate thread. -*/ -class RPCExecutor : public QObject -{ - Q_OBJECT - -public Q_SLOTS: - void request(const QString &command); - -Q_SIGNALS: - void reply(int category, const QString &command); -}; - -#include "rpcconsole.moc" - -/** - * Split shell command line into a list of arguments. Aims to emulate \c bash and friends. - * - * - Arguments are delimited with whitespace - * - Extra whitespace at the beginning and end and between arguments will be ignored - * - Text can be "double" or 'single' quoted - * - The backslash \c \ is used as escape character - * - Outside quotes, any character can be escaped - * - Within double quotes, only escape \c " and backslashes before a \c " or another backslash - * - Within single quotes, no escaping is possible and no special interpretation takes place - * - * @param[out] args Parsed arguments will be appended to this list - * @param[in] strCommand Command line to split - */ -bool parseCommandLine(std::vector &args, const std::string &strCommand) -{ - enum CmdParseState - { - STATE_EATING_SPACES, - STATE_ARGUMENT, - STATE_SINGLEQUOTED, - STATE_DOUBLEQUOTED, - STATE_ESCAPE_OUTER, - STATE_ESCAPE_DOUBLEQUOTED - } state = STATE_EATING_SPACES; - std::string curarg; - Q_FOREACH(char ch, strCommand) - { - switch(state) - { - case STATE_ARGUMENT: // In or after argument - case STATE_EATING_SPACES: // Handle runs of whitespace - switch(ch) - { - case '"': state = STATE_DOUBLEQUOTED; break; - case '\'': state = STATE_SINGLEQUOTED; break; - case '\\': state = STATE_ESCAPE_OUTER; break; - case ' ': case '\n': case '\t': - if(state == STATE_ARGUMENT) // Space ends argument - { - args.push_back(curarg); - curarg.clear(); - } - state = STATE_EATING_SPACES; - break; - default: curarg += ch; state = STATE_ARGUMENT; - } - break; - case STATE_SINGLEQUOTED: // Single-quoted string - switch(ch) - { - case '\'': state = STATE_ARGUMENT; break; - default: curarg += ch; - } - break; - case STATE_DOUBLEQUOTED: // Double-quoted string - switch(ch) - { - case '"': state = STATE_ARGUMENT; break; - case '\\': state = STATE_ESCAPE_DOUBLEQUOTED; break; - default: curarg += ch; - } - break; - case STATE_ESCAPE_OUTER: // '\' outside quotes - curarg += ch; state = STATE_ARGUMENT; - break; - case STATE_ESCAPE_DOUBLEQUOTED: // '\' in double-quoted text - if(ch != '"' && ch != '\\') curarg += '\\'; // keep '\' for everything but the quote and '\' itself - curarg += ch; state = STATE_DOUBLEQUOTED; - break; - } - } - switch(state) // final state - { - case STATE_EATING_SPACES: - return true; - case STATE_ARGUMENT: - args.push_back(curarg); - return true; - default: // ERROR to end in one of the other states - return false; - } -} - -void RPCExecutor::request(const QString &command) -{ - std::vector args; - if(!parseCommandLine(args, command.toStdString())) - { - Q_EMIT reply(RPCConsole::CMD_ERROR, QString("Parse error: unbalanced ' or \"")); - return; - } - if(args.empty()) - return; // Nothing to do - try - { - std::string strPrint; - // Convert argument list to JSON objects in method-dependent way, - // and pass it along with the method name to the dispatcher. - json_spirit::Value result = tableRPC.execute( - args[0], - RPCConvertValues(args[0], std::vector(args.begin() + 1, args.end()))); - - // Format result reply - if (result.type() == json_spirit::null_type) - strPrint = ""; - else if (result.type() == json_spirit::str_type) - strPrint = result.get_str(); - else - strPrint = write_string(result, true); - - Q_EMIT reply(RPCConsole::CMD_REPLY, QString::fromStdString(strPrint)); - } - catch (const json_spirit::Object& objError) - { - try // Nice formatting for standard-format error - { - int code = find_value(objError, "code").get_int(); - std::string message = find_value(objError, "message").get_str(); - Q_EMIT reply(RPCConsole::CMD_ERROR, QString::fromStdString(message) + " (code " + QString::number(code) + ")"); - } - catch (const std::runtime_error&) // raised when converting to invalid type, i.e. missing code or message - { // Show raw JSON object - Q_EMIT reply(RPCConsole::CMD_ERROR, QString::fromStdString(write_string(json_spirit::Value(objError), false))); - } - } - catch (const std::exception& e) - { - Q_EMIT reply(RPCConsole::CMD_ERROR, QString("Error: ") + QString::fromStdString(e.what())); - } -} - -RPCConsole::RPCConsole(QWidget *parent) : - QWidget(parent), - ui(new Ui::RPCConsole), - clientModel(0), - historyPtr(0), - cachedNodeid(-1) -{ - ui->setupUi(this); - GUIUtil::restoreWindowGeometry("nRPCConsoleWindow", this->size(), this); - -#ifndef Q_OS_MAC - ui->openDebugLogfileButton->setIcon(SingleColorIcon(":/icons/export")); -#endif - ui->clearButton->setIcon(SingleColorIcon(":/icons/remove")); - - // Install event filter for up and down arrow - ui->lineEdit->installEventFilter(this); - ui->messagesWidget->installEventFilter(this); - - connect(ui->clearButton, SIGNAL(clicked()), this, SLOT(clear())); - connect(ui->btnClearTrafficGraph, SIGNAL(clicked()), ui->trafficGraph, SLOT(clear())); - - // set library version labels - ui->openSSLVersion->setText(SSLeay_version(SSLEAY_VERSION)); -#ifdef ENABLE_WALLET - ui->berkeleyDBVersion->setText(DbEnv::version(0, 0, 0)); -#else - ui->label_berkeleyDBVersion->hide(); - ui->berkeleyDBVersion->hide(); -#endif - - startExecutor(); - setTrafficGraphRange(INITIAL_TRAFFIC_GRAPH_MINS); - - ui->detailWidget->hide(); - ui->peerHeading->setText(tr("Select a peer to view detailed information.")); - - clear(); -} - -RPCConsole::~RPCConsole() -{ - GUIUtil::saveWindowGeometry("nRPCConsoleWindow", this); - Q_EMIT stopExecutor(); - delete ui; -} - -bool RPCConsole::eventFilter(QObject* obj, QEvent *event) -{ - if(event->type() == QEvent::KeyPress) // Special key handling - { - QKeyEvent *keyevt = static_cast(event); - int key = keyevt->key(); - Qt::KeyboardModifiers mod = keyevt->modifiers(); - switch(key) - { - case Qt::Key_Up: if(obj == ui->lineEdit) { browseHistory(-1); return true; } break; - case Qt::Key_Down: if(obj == ui->lineEdit) { browseHistory(1); return true; } break; - case Qt::Key_PageUp: /* pass paging keys to messages widget */ - case Qt::Key_PageDown: - if(obj == ui->lineEdit) - { - QApplication::postEvent(ui->messagesWidget, new QKeyEvent(*keyevt)); - return true; - } - break; - default: - // Typing in messages widget brings focus to line edit, and redirects key there - // Exclude most combinations and keys that emit no text, except paste shortcuts - if(obj == ui->messagesWidget && ( - (!mod && !keyevt->text().isEmpty() && key != Qt::Key_Tab) || - ((mod & Qt::ControlModifier) && key == Qt::Key_V) || - ((mod & Qt::ShiftModifier) && key == Qt::Key_Insert))) - { - ui->lineEdit->setFocus(); - QApplication::postEvent(ui->lineEdit, new QKeyEvent(*keyevt)); - return true; - } - } - } - return QWidget::eventFilter(obj, event); -} - -void RPCConsole::setClientModel(ClientModel *model) -{ - clientModel = model; - ui->trafficGraph->setClientModel(model); - if(model) - { - // Keep up to date with client - setNumConnections(model->getNumConnections()); - connect(model, SIGNAL(numConnectionsChanged(int)), this, SLOT(setNumConnections(int))); - - setNumBlocks(model->getNumBlocks(), model->getLastBlockDate()); - connect(model, SIGNAL(numBlocksChanged(int,QDateTime)), this, SLOT(setNumBlocks(int,QDateTime))); - - updateTrafficStats(model->getTotalBytesRecv(), model->getTotalBytesSent()); - connect(model, SIGNAL(bytesChanged(quint64,quint64)), this, SLOT(updateTrafficStats(quint64, quint64))); - - // set up peer table - ui->peerWidget->setModel(model->getPeerTableModel()); - ui->peerWidget->verticalHeader()->hide(); - ui->peerWidget->setEditTriggers(QAbstractItemView::NoEditTriggers); - ui->peerWidget->setSelectionBehavior(QAbstractItemView::SelectRows); - ui->peerWidget->setSelectionMode(QAbstractItemView::SingleSelection); - ui->peerWidget->setColumnWidth(PeerTableModel::Address, ADDRESS_COLUMN_WIDTH); - ui->peerWidget->setColumnWidth(PeerTableModel::Subversion, SUBVERSION_COLUMN_WIDTH); - ui->peerWidget->setColumnWidth(PeerTableModel::Ping, PING_COLUMN_WIDTH); - - // connect the peerWidget selection model to our peerSelected() handler - connect(ui->peerWidget->selectionModel(), SIGNAL(selectionChanged(const QItemSelection &, const QItemSelection &)), - this, SLOT(peerSelected(const QItemSelection &, const QItemSelection &))); - connect(model->getPeerTableModel(), SIGNAL(layoutChanged()), this, SLOT(peerLayoutChanged())); - - // Provide initial values - ui->clientVersion->setText(model->formatFullVersion()); - ui->clientName->setText(model->clientName()); - ui->buildDate->setText(model->formatBuildDate()); - ui->startupTime->setText(model->formatClientStartupTime()); - - ui->networkName->setText(QString::fromStdString(Params().NetworkIDString())); - } -} - -static QString categoryClass(int category) -{ - switch(category) - { - case RPCConsole::CMD_REQUEST: return "cmd-request"; break; - case RPCConsole::CMD_REPLY: return "cmd-reply"; break; - case RPCConsole::CMD_ERROR: return "cmd-error"; break; - default: return "misc"; - } -} - -void RPCConsole::clear() -{ - ui->messagesWidget->clear(); - history.clear(); - historyPtr = 0; - ui->lineEdit->clear(); - ui->lineEdit->setFocus(); - - // Add smoothly scaled icon images. - // (when using width/height on an img, Qt uses nearest instead of linear interpolation) - for(int i=0; ICON_MAPPING[i].url; ++i) - { - ui->messagesWidget->document()->addResource( - QTextDocument::ImageResource, - QUrl(ICON_MAPPING[i].url), - SingleColorImage(ICON_MAPPING[i].source, SingleColor()).scaled(ICON_SIZE, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); - } - - // Set default style sheet - ui->messagesWidget->document()->setDefaultStyleSheet( - "table { }" - "td.time { color: #808080; padding-top: 3px; } " - "td.cmd-request { color: #006060; } " - "td.cmd-error { color: red; } " - "b { color: #006060; } " - ); - - message(CMD_REPLY, (tr("Welcome to the Bitcoin Core RPC console.") + "
" + - tr("Use up and down arrows to navigate history, and Ctrl-L to clear screen.") + "
" + - tr("Type help for an overview of available commands.")), true); -} - -void RPCConsole::keyPressEvent(QKeyEvent *event) -{ - if(windowType() != Qt::Widget && event->key() == Qt::Key_Escape) - { - close(); - } -} - -void RPCConsole::message(int category, const QString &message, bool html) -{ - QTime time = QTime::currentTime(); - QString timeString = time.toString(); - QString out; - out += ""; - out += ""; - out += "
" + timeString + ""; - if(html) - out += message; - else - out += GUIUtil::HtmlEscape(message, true); - out += "
"; - ui->messagesWidget->append(out); -} - -void RPCConsole::setNumConnections(int count) -{ - if (!clientModel) - return; - - QString connections = QString::number(count) + " ("; - connections += tr("In:") + " " + QString::number(clientModel->getNumConnections(CONNECTIONS_IN)) + " / "; - connections += tr("Out:") + " " + QString::number(clientModel->getNumConnections(CONNECTIONS_OUT)) + ")"; - - ui->numberOfConnections->setText(connections); -} - -void RPCConsole::setNumBlocks(int count, const QDateTime& blockDate) -{ - ui->numberOfBlocks->setText(QString::number(count)); - ui->lastBlockTime->setText(blockDate.toString()); -} - -void RPCConsole::on_lineEdit_returnPressed() -{ - QString cmd = ui->lineEdit->text(); - ui->lineEdit->clear(); - - if(!cmd.isEmpty()) - { - message(CMD_REQUEST, cmd); - Q_EMIT cmdRequest(cmd); - // Remove command, if already in history - history.removeOne(cmd); - // Append command to history - history.append(cmd); - // Enforce maximum history size - while(history.size() > CONSOLE_HISTORY) - history.removeFirst(); - // Set pointer to end of history - historyPtr = history.size(); - // Scroll console view to end - scrollToEnd(); - } -} - -void RPCConsole::browseHistory(int offset) -{ - historyPtr += offset; - if(historyPtr < 0) - historyPtr = 0; - if(historyPtr > history.size()) - historyPtr = history.size(); - QString cmd; - if(historyPtr < history.size()) - cmd = history.at(historyPtr); - ui->lineEdit->setText(cmd); -} - -void RPCConsole::startExecutor() -{ - QThread *thread = new QThread; - RPCExecutor *executor = new RPCExecutor(); - executor->moveToThread(thread); - - // Replies from executor object must go to this object - connect(executor, SIGNAL(reply(int,QString)), this, SLOT(message(int,QString))); - // Requests from this object must go to executor - connect(this, SIGNAL(cmdRequest(QString)), executor, SLOT(request(QString))); - - // On stopExecutor signal - // - queue executor for deletion (in execution thread) - // - quit the Qt event loop in the execution thread - connect(this, SIGNAL(stopExecutor()), executor, SLOT(deleteLater())); - connect(this, SIGNAL(stopExecutor()), thread, SLOT(quit())); - // Queue the thread for deletion (in this thread) when it is finished - connect(thread, SIGNAL(finished()), thread, SLOT(deleteLater())); - - // Default implementation of QThread::run() simply spins up an event loop in the thread, - // which is what we want. - thread->start(); -} - -void RPCConsole::on_tabWidget_currentChanged(int index) -{ - if(ui->tabWidget->widget(index) == ui->tab_console) - { - ui->lineEdit->setFocus(); - } -} - -void RPCConsole::on_openDebugLogfileButton_clicked() -{ - GUIUtil::openDebugLogfile(); -} - -void RPCConsole::scrollToEnd() -{ - QScrollBar *scrollbar = ui->messagesWidget->verticalScrollBar(); - scrollbar->setValue(scrollbar->maximum()); -} - -void RPCConsole::on_sldGraphRange_valueChanged(int value) -{ - const int multiplier = 5; // each position on the slider represents 5 min - int mins = value * multiplier; - setTrafficGraphRange(mins); -} - -QString RPCConsole::FormatBytes(quint64 bytes) -{ - if(bytes < 1024) - return QString(tr("%1 B")).arg(bytes); - if(bytes < 1024 * 1024) - return QString(tr("%1 KB")).arg(bytes / 1024); - if(bytes < 1024 * 1024 * 1024) - return QString(tr("%1 MB")).arg(bytes / 1024 / 1024); - - return QString(tr("%1 GB")).arg(bytes / 1024 / 1024 / 1024); -} - -void RPCConsole::setTrafficGraphRange(int mins) -{ - ui->trafficGraph->setGraphRangeMins(mins); - ui->lblGraphRange->setText(GUIUtil::formatDurationStr(mins * 60)); -} - -void RPCConsole::updateTrafficStats(quint64 totalBytesIn, quint64 totalBytesOut) -{ - ui->lblBytesIn->setText(FormatBytes(totalBytesIn)); - ui->lblBytesOut->setText(FormatBytes(totalBytesOut)); -} - -void RPCConsole::peerSelected(const QItemSelection &selected, const QItemSelection &deselected) -{ - Q_UNUSED(deselected); - - if (!clientModel || selected.indexes().isEmpty()) - return; - - const CNodeCombinedStats *stats = clientModel->getPeerTableModel()->getNodeStats(selected.indexes().first().row()); - if (stats) - updateNodeDetail(stats); -} - -void RPCConsole::peerLayoutChanged() -{ - if (!clientModel) - return; - - const CNodeCombinedStats *stats = NULL; - bool fUnselect = false; - bool fReselect = false; - - if (cachedNodeid == -1) // no node selected yet - return; - - // find the currently selected row - int selectedRow; - QModelIndexList selectedModelIndex = ui->peerWidget->selectionModel()->selectedIndexes(); - if (selectedModelIndex.isEmpty()) - selectedRow = -1; - else - selectedRow = selectedModelIndex.first().row(); - - // check if our detail node has a row in the table (it may not necessarily - // be at selectedRow since its position can change after a layout change) - int detailNodeRow = clientModel->getPeerTableModel()->getRowByNodeId(cachedNodeid); - - if (detailNodeRow < 0) - { - // detail node disappeared from table (node disconnected) - fUnselect = true; - cachedNodeid = -1; - ui->detailWidget->hide(); - ui->peerHeading->setText(tr("Select a peer to view detailed information.")); - } - else - { - if (detailNodeRow != selectedRow) - { - // detail node moved position - fUnselect = true; - fReselect = true; - } - - // get fresh stats on the detail node. - stats = clientModel->getPeerTableModel()->getNodeStats(detailNodeRow); - } - - if (fUnselect && selectedRow >= 0) - { - ui->peerWidget->selectionModel()->select(QItemSelection(selectedModelIndex.first(), selectedModelIndex.last()), - QItemSelectionModel::Deselect); - } - - if (fReselect) - { - ui->peerWidget->selectRow(detailNodeRow); - } - - if (stats) - updateNodeDetail(stats); -} - -void RPCConsole::updateNodeDetail(const CNodeCombinedStats *stats) -{ - // Update cached nodeid - cachedNodeid = stats->nodeStats.nodeid; - - // update the detail ui with latest node information - QString peerAddrDetails(QString::fromStdString(stats->nodeStats.addrName)); - if (!stats->nodeStats.addrLocal.empty()) - peerAddrDetails += "
" + tr("via %1").arg(QString::fromStdString(stats->nodeStats.addrLocal)); - ui->peerHeading->setText(peerAddrDetails); - ui->peerServices->setText(GUIUtil::formatServicesStr(stats->nodeStats.nServices)); - ui->peerLastSend->setText(stats->nodeStats.nLastSend ? GUIUtil::formatDurationStr(GetTime() - stats->nodeStats.nLastSend) : tr("never")); - ui->peerLastRecv->setText(stats->nodeStats.nLastRecv ? GUIUtil::formatDurationStr(GetTime() - stats->nodeStats.nLastRecv) : tr("never")); - ui->peerBytesSent->setText(FormatBytes(stats->nodeStats.nSendBytes)); - ui->peerBytesRecv->setText(FormatBytes(stats->nodeStats.nRecvBytes)); - ui->peerConnTime->setText(GUIUtil::formatDurationStr(GetTime() - stats->nodeStats.nTimeConnected)); - ui->peerPingTime->setText(GUIUtil::formatPingTime(stats->nodeStats.dPingTime)); - ui->timeoffset->setText(GUIUtil::formatTimeOffset(stats->nodeStats.nTimeOffset)); - ui->peerVersion->setText(QString("%1").arg(stats->nodeStats.nVersion)); - ui->peerSubversion->setText(QString::fromStdString(stats->nodeStats.cleanSubVer)); - ui->peerDirection->setText(stats->nodeStats.fInbound ? tr("Inbound") : tr("Outbound")); - ui->peerHeight->setText(QString("%1").arg(stats->nodeStats.nStartingHeight)); - - // This check fails for example if the lock was busy and - // nodeStateStats couldn't be fetched. - if (stats->fNodeStateStatsAvailable) { - // Ban score is init to 0 - ui->peerBanScore->setText(QString("%1").arg(stats->nodeStateStats.nMisbehavior)); - - // Sync height is init to -1 - if (stats->nodeStateStats.nSyncHeight > -1) - ui->peerSyncHeight->setText(QString("%1").arg(stats->nodeStateStats.nSyncHeight)); - else - ui->peerSyncHeight->setText(tr("Unknown")); - } else { - ui->peerBanScore->setText(tr("Fetching...")); - ui->peerSyncHeight->setText(tr("Fetching...")); - } - - ui->detailWidget->show(); -} - -void RPCConsole::resizeEvent(QResizeEvent *event) -{ - QWidget::resizeEvent(event); -} - -void RPCConsole::showEvent(QShowEvent *event) -{ - QWidget::showEvent(event); - - if (!clientModel) - return; - - // start PeerTableModel auto refresh - clientModel->getPeerTableModel()->startAutoRefresh(); -} - -void RPCConsole::hideEvent(QHideEvent *event) -{ - QWidget::hideEvent(event); - - if (!clientModel) - return; - - // stop PeerTableModel auto refresh - clientModel->getPeerTableModel()->stopAutoRefresh(); -} diff --git a/src/qt/rpcconsole.h b/src/qt/rpcconsole.h deleted file mode 100644 index e93a61e9b..000000000 --- a/src/qt/rpcconsole.h +++ /dev/null @@ -1,103 +0,0 @@ -// Copyright (c) 2011-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. - -#ifndef BITCOIN_QT_RPCCONSOLE_H -#define BITCOIN_QT_RPCCONSOLE_H - -#include "guiutil.h" -#include "peertablemodel.h" - -#include "net.h" - -#include - -class ClientModel; - -namespace Ui { - class RPCConsole; -} - -QT_BEGIN_NAMESPACE -class QItemSelection; -QT_END_NAMESPACE - -/** Local Bitcoin RPC console. */ -class RPCConsole: public QWidget -{ - Q_OBJECT - -public: - explicit RPCConsole(QWidget *parent); - ~RPCConsole(); - - void setClientModel(ClientModel *model); - - enum MessageClass { - MC_ERROR, - MC_DEBUG, - CMD_REQUEST, - CMD_REPLY, - CMD_ERROR - }; - -protected: - virtual bool eventFilter(QObject* obj, QEvent *event); - void keyPressEvent(QKeyEvent *); - -private Q_SLOTS: - void on_lineEdit_returnPressed(); - void on_tabWidget_currentChanged(int index); - /** open the debug.log from the current datadir */ - void on_openDebugLogfileButton_clicked(); - /** change the time range of the network traffic graph */ - void on_sldGraphRange_valueChanged(int value); - /** update traffic statistics */ - void updateTrafficStats(quint64 totalBytesIn, quint64 totalBytesOut); - void resizeEvent(QResizeEvent *event); - void showEvent(QShowEvent *event); - void hideEvent(QHideEvent *event); - -public Q_SLOTS: - void clear(); - void message(int category, const QString &message, bool html = false); - /** Set number of connections shown in the UI */ - void setNumConnections(int count); - /** Set number of blocks and last block date shown in the UI */ - void setNumBlocks(int count, const QDateTime& blockDate); - /** Go forward or back in history */ - void browseHistory(int offset); - /** Scroll console view to end */ - void scrollToEnd(); - /** Handle selection of peer in peers list */ - void peerSelected(const QItemSelection &selected, const QItemSelection &deselected); - /** Handle updated peer information */ - void peerLayoutChanged(); - -Q_SIGNALS: - // For RPC command executor - void stopExecutor(); - void cmdRequest(const QString &command); - -private: - static QString FormatBytes(quint64 bytes); - void startExecutor(); - void setTrafficGraphRange(int mins); - /** show detailed information on ui about selected node */ - void updateNodeDetail(const CNodeCombinedStats *stats); - - enum ColumnWidths - { - ADDRESS_COLUMN_WIDTH = 200, - SUBVERSION_COLUMN_WIDTH = 100, - PING_COLUMN_WIDTH = 80 - }; - - Ui::RPCConsole *ui; - ClientModel *clientModel; - QStringList history; - int historyPtr; - NodeId cachedNodeid; -}; - -#endif // BITCOIN_QT_RPCCONSOLE_H diff --git a/src/qt/scicon.cpp b/src/qt/scicon.cpp deleted file mode 100644 index c493b5569..000000000 --- a/src/qt/scicon.cpp +++ /dev/null @@ -1,98 +0,0 @@ -// Copyright (c) 2014 The Bitcoin developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#include "scicon.h" - -#include -#include -#include -#include -#include -#include - -namespace { - -void MakeSingleColorImage(QImage& img, const QColor& colorbase) -{ - img = img.convertToFormat(QImage::Format_ARGB32); - for (int x = img.width(); x--; ) - { - for (int y = img.height(); y--; ) - { - const QRgb rgb = img.pixel(x, y); - img.setPixel(x, y, qRgba(colorbase.red(), colorbase.green(), colorbase.blue(), qAlpha(rgb))); - } - } -} - -} - -QImage SingleColorImage(const QString& filename, const QColor& colorbase) -{ - QImage img(filename); -#if !defined(WIN32) && !defined(MAC_OSX) - MakeSingleColorImage(img, colorbase); -#endif - return img; -} - -QIcon SingleColorIcon(const QIcon& ico, const QColor& colorbase) -{ -#if defined(WIN32) || defined(MAC_OSX) - return ico; -#else - QIcon new_ico; - QSize sz; - Q_FOREACH(sz, ico.availableSizes()) - { - QImage img(ico.pixmap(sz).toImage()); - MakeSingleColorImage(img, colorbase); - new_ico.addPixmap(QPixmap::fromImage(img)); - } - return new_ico; -#endif -} - -QIcon SingleColorIcon(const QString& filename, const QColor& colorbase) -{ - return QIcon(QPixmap::fromImage(SingleColorImage(filename, colorbase))); -} - -QColor SingleColor() -{ -#if defined(WIN32) || defined(MAC_OSX) - return QColor(0,0,0); -#else - const QColor colorHighlightBg(QApplication::palette().color(QPalette::Highlight)); - const QColor colorHighlightFg(QApplication::palette().color(QPalette::HighlightedText)); - const QColor colorText(QApplication::palette().color(QPalette::WindowText)); - const int colorTextLightness = colorText.lightness(); - QColor colorbase; - if (abs(colorHighlightBg.lightness() - colorTextLightness) < abs(colorHighlightFg.lightness() - colorTextLightness)) - colorbase = colorHighlightBg; - else - colorbase = colorHighlightFg; - return colorbase; -#endif -} - -QIcon SingleColorIcon(const QString& filename) -{ - return SingleColorIcon(filename, SingleColor()); -} - -static QColor TextColor() -{ - return QColor(QApplication::palette().color(QPalette::WindowText)); -} - -QIcon TextColorIcon(const QString& filename) -{ - return SingleColorIcon(filename, TextColor()); -} - -QIcon TextColorIcon(const QIcon& ico) -{ - return SingleColorIcon(ico, TextColor()); -} diff --git a/src/qt/scicon.h b/src/qt/scicon.h deleted file mode 100644 index 1388069dd..000000000 --- a/src/qt/scicon.h +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright (c) 2014 The Bitcoin developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#ifndef BITCOIN_QT_SCICON_H -#define BITCOIN_QT_SCICON_H - -#include - -QT_BEGIN_NAMESPACE -class QColor; -class QIcon; -class QString; -QT_END_NAMESPACE - -QImage SingleColorImage(const QString& filename, const QColor&); -QIcon SingleColorIcon(const QIcon&, const QColor&); -QIcon SingleColorIcon(const QString& filename, const QColor&); -QColor SingleColor(); -QIcon SingleColorIcon(const QString& filename); -QIcon TextColorIcon(const QIcon&); -QIcon TextColorIcon(const QString& filename); - -#endif // BITCOIN_QT_SCICON_H diff --git a/src/qt/sendcoinsdialog.cpp b/src/qt/sendcoinsdialog.cpp deleted file mode 100644 index f02161cf8..000000000 --- a/src/qt/sendcoinsdialog.cpp +++ /dev/null @@ -1,816 +0,0 @@ -// Copyright (c) 2011-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. - -#include "sendcoinsdialog.h" -#include "ui_sendcoinsdialog.h" - -#include "addresstablemodel.h" -#include "bitcoinunits.h" -#include "clientmodel.h" -#include "coincontroldialog.h" -#include "guiutil.h" -#include "optionsmodel.h" -#include "scicon.h" -#include "sendcoinsentry.h" -#include "walletmodel.h" - -#include "base58.h" -#include "coincontrol.h" -#include "main.h" -#include "ui_interface.h" -#include "wallet/wallet.h" - -#include -#include -#include -#include - -SendCoinsDialog::SendCoinsDialog(QWidget *parent) : - QDialog(parent), - ui(new Ui::SendCoinsDialog), - clientModel(0), - model(0), - fNewRecipientAllowed(true), - fFeeMinimized(true) -{ - ui->setupUi(this); - -#ifdef Q_OS_MAC // Icons on push buttons are very uncommon on Mac - ui->addButton->setIcon(QIcon()); - ui->clearButton->setIcon(QIcon()); - ui->sendButton->setIcon(QIcon()); -#else - ui->addButton->setIcon(SingleColorIcon(":/icons/add")); - ui->clearButton->setIcon(SingleColorIcon(":/icons/remove")); - ui->sendButton->setIcon(SingleColorIcon(":/icons/send")); -#endif - - GUIUtil::setupAddressWidget(ui->lineEditCoinControlChange, this); - - addEntry(); - - connect(ui->addButton, SIGNAL(clicked()), this, SLOT(addEntry())); - connect(ui->clearButton, SIGNAL(clicked()), this, SLOT(clear())); - - // Coin Control - connect(ui->pushButtonCoinControl, SIGNAL(clicked()), this, SLOT(coinControlButtonClicked())); - connect(ui->checkBoxCoinControlChange, SIGNAL(stateChanged(int)), this, SLOT(coinControlChangeChecked(int))); - connect(ui->lineEditCoinControlChange, SIGNAL(textEdited(const QString &)), this, SLOT(coinControlChangeEdited(const QString &))); - - // Coin Control: clipboard actions - QAction *clipboardQuantityAction = new QAction(tr("Copy quantity"), this); - QAction *clipboardAmountAction = new QAction(tr("Copy amount"), this); - QAction *clipboardFeeAction = new QAction(tr("Copy fee"), this); - QAction *clipboardAfterFeeAction = new QAction(tr("Copy after fee"), this); - QAction *clipboardBytesAction = new QAction(tr("Copy bytes"), this); - QAction *clipboardPriorityAction = new QAction(tr("Copy priority"), this); - QAction *clipboardLowOutputAction = new QAction(tr("Copy dust"), this); - QAction *clipboardChangeAction = new QAction(tr("Copy change"), this); - connect(clipboardQuantityAction, SIGNAL(triggered()), this, SLOT(coinControlClipboardQuantity())); - connect(clipboardAmountAction, SIGNAL(triggered()), this, SLOT(coinControlClipboardAmount())); - connect(clipboardFeeAction, SIGNAL(triggered()), this, SLOT(coinControlClipboardFee())); - connect(clipboardAfterFeeAction, SIGNAL(triggered()), this, SLOT(coinControlClipboardAfterFee())); - connect(clipboardBytesAction, SIGNAL(triggered()), this, SLOT(coinControlClipboardBytes())); - connect(clipboardPriorityAction, SIGNAL(triggered()), this, SLOT(coinControlClipboardPriority())); - connect(clipboardLowOutputAction, SIGNAL(triggered()), this, SLOT(coinControlClipboardLowOutput())); - connect(clipboardChangeAction, SIGNAL(triggered()), this, SLOT(coinControlClipboardChange())); - ui->labelCoinControlQuantity->addAction(clipboardQuantityAction); - ui->labelCoinControlAmount->addAction(clipboardAmountAction); - ui->labelCoinControlFee->addAction(clipboardFeeAction); - ui->labelCoinControlAfterFee->addAction(clipboardAfterFeeAction); - ui->labelCoinControlBytes->addAction(clipboardBytesAction); - ui->labelCoinControlPriority->addAction(clipboardPriorityAction); - ui->labelCoinControlLowOutput->addAction(clipboardLowOutputAction); - ui->labelCoinControlChange->addAction(clipboardChangeAction); - - // init transaction fee section - QSettings settings; - if (!settings.contains("fFeeSectionMinimized")) - settings.setValue("fFeeSectionMinimized", true); - if (!settings.contains("nFeeRadio") && settings.contains("nTransactionFee") && settings.value("nTransactionFee").toLongLong() > 0) // compatibility - settings.setValue("nFeeRadio", 1); // custom - if (!settings.contains("nFeeRadio")) - settings.setValue("nFeeRadio", 0); // recommended - if (!settings.contains("nCustomFeeRadio") && settings.contains("nTransactionFee") && settings.value("nTransactionFee").toLongLong() > 0) // compatibility - settings.setValue("nCustomFeeRadio", 1); // total at least - if (!settings.contains("nCustomFeeRadio")) - settings.setValue("nCustomFeeRadio", 0); // per kilobyte - if (!settings.contains("nSmartFeeSliderPosition")) - settings.setValue("nSmartFeeSliderPosition", 0); - if (!settings.contains("nTransactionFee")) - settings.setValue("nTransactionFee", (qint64)DEFAULT_TRANSACTION_FEE); - if (!settings.contains("fPayOnlyMinFee")) - settings.setValue("fPayOnlyMinFee", false); - if (!settings.contains("fSendFreeTransactions")) - settings.setValue("fSendFreeTransactions", false); - ui->groupFee->setId(ui->radioSmartFee, 0); - ui->groupFee->setId(ui->radioCustomFee, 1); - ui->groupFee->button((int)std::max(0, std::min(1, settings.value("nFeeRadio").toInt())))->setChecked(true); - ui->groupCustomFee->setId(ui->radioCustomPerKilobyte, 0); - ui->groupCustomFee->setId(ui->radioCustomAtLeast, 1); - ui->groupCustomFee->button((int)std::max(0, std::min(1, settings.value("nCustomFeeRadio").toInt())))->setChecked(true); - ui->sliderSmartFee->setValue(settings.value("nSmartFeeSliderPosition").toInt()); - ui->customFee->setValue(settings.value("nTransactionFee").toLongLong()); - ui->checkBoxMinimumFee->setChecked(settings.value("fPayOnlyMinFee").toBool()); - ui->checkBoxFreeTx->setChecked(settings.value("fSendFreeTransactions").toBool()); - minimizeFeeSection(settings.value("fFeeSectionMinimized").toBool()); -} - -void SendCoinsDialog::setClientModel(ClientModel *clientModel) -{ - this->clientModel = clientModel; - - if (clientModel) { - connect(clientModel, SIGNAL(numBlocksChanged(int,QDateTime)), this, SLOT(updateSmartFeeLabel())); - } -} - -void SendCoinsDialog::setModel(WalletModel *model) -{ - this->model = model; - - if(model && model->getOptionsModel()) - { - for(int i = 0; i < ui->entries->count(); ++i) - { - SendCoinsEntry *entry = qobject_cast(ui->entries->itemAt(i)->widget()); - if(entry) - { - entry->setModel(model); - } - } - - setBalance(model->getBalance(), model->getUnconfirmedBalance(), model->getImmatureBalance(), - model->getWatchBalance(), model->getWatchUnconfirmedBalance(), model->getWatchImmatureBalance()); - connect(model, SIGNAL(balanceChanged(CAmount,CAmount,CAmount,CAmount,CAmount,CAmount)), this, SLOT(setBalance(CAmount,CAmount,CAmount,CAmount,CAmount,CAmount))); - connect(model->getOptionsModel(), SIGNAL(displayUnitChanged(int)), this, SLOT(updateDisplayUnit())); - updateDisplayUnit(); - - // Coin Control - connect(model->getOptionsModel(), SIGNAL(displayUnitChanged(int)), this, SLOT(coinControlUpdateLabels())); - connect(model->getOptionsModel(), SIGNAL(coinControlFeaturesChanged(bool)), this, SLOT(coinControlFeatureChanged(bool))); - ui->frameCoinControl->setVisible(model->getOptionsModel()->getCoinControlFeatures()); - coinControlUpdateLabels(); - - // fee section - connect(ui->sliderSmartFee, SIGNAL(valueChanged(int)), this, SLOT(updateSmartFeeLabel())); - connect(ui->sliderSmartFee, SIGNAL(valueChanged(int)), this, SLOT(updateGlobalFeeVariables())); - connect(ui->sliderSmartFee, SIGNAL(valueChanged(int)), this, SLOT(coinControlUpdateLabels())); - connect(ui->groupFee, SIGNAL(buttonClicked(int)), this, SLOT(updateFeeSectionControls())); - connect(ui->groupFee, SIGNAL(buttonClicked(int)), this, SLOT(updateGlobalFeeVariables())); - connect(ui->groupFee, SIGNAL(buttonClicked(int)), this, SLOT(coinControlUpdateLabels())); - connect(ui->groupCustomFee, SIGNAL(buttonClicked(int)), this, SLOT(updateGlobalFeeVariables())); - connect(ui->groupCustomFee, SIGNAL(buttonClicked(int)), this, SLOT(coinControlUpdateLabels())); - connect(ui->customFee, SIGNAL(valueChanged()), this, SLOT(updateGlobalFeeVariables())); - connect(ui->customFee, SIGNAL(valueChanged()), this, SLOT(coinControlUpdateLabels())); - connect(ui->checkBoxMinimumFee, SIGNAL(stateChanged(int)), this, SLOT(setMinimumFee())); - connect(ui->checkBoxMinimumFee, SIGNAL(stateChanged(int)), this, SLOT(updateFeeSectionControls())); - connect(ui->checkBoxMinimumFee, SIGNAL(stateChanged(int)), this, SLOT(updateGlobalFeeVariables())); - connect(ui->checkBoxMinimumFee, SIGNAL(stateChanged(int)), this, SLOT(coinControlUpdateLabels())); - connect(ui->checkBoxFreeTx, SIGNAL(stateChanged(int)), this, SLOT(updateGlobalFeeVariables())); - connect(ui->checkBoxFreeTx, SIGNAL(stateChanged(int)), this, SLOT(coinControlUpdateLabels())); - ui->customFee->setSingleStep(CWallet::minTxFee.GetFeePerK()); - updateFeeSectionControls(); - updateMinFeeLabel(); - updateSmartFeeLabel(); - updateGlobalFeeVariables(); - } -} - -SendCoinsDialog::~SendCoinsDialog() -{ - QSettings settings; - settings.setValue("fFeeSectionMinimized", fFeeMinimized); - settings.setValue("nFeeRadio", ui->groupFee->checkedId()); - settings.setValue("nCustomFeeRadio", ui->groupCustomFee->checkedId()); - settings.setValue("nSmartFeeSliderPosition", ui->sliderSmartFee->value()); - settings.setValue("nTransactionFee", (qint64)ui->customFee->value()); - settings.setValue("fPayOnlyMinFee", ui->checkBoxMinimumFee->isChecked()); - settings.setValue("fSendFreeTransactions", ui->checkBoxFreeTx->isChecked()); - - delete ui; -} - -void SendCoinsDialog::on_sendButton_clicked() -{ - if(!model || !model->getOptionsModel()) - return; - - QList recipients; - bool valid = true; - - for(int i = 0; i < ui->entries->count(); ++i) - { - SendCoinsEntry *entry = qobject_cast(ui->entries->itemAt(i)->widget()); - if(entry) - { - if(entry->validate()) - { - recipients.append(entry->getValue()); - } - else - { - valid = false; - } - } - } - - if(!valid || recipients.isEmpty()) - { - return; - } - - fNewRecipientAllowed = false; - WalletModel::UnlockContext ctx(model->requestUnlock()); - if(!ctx.isValid()) - { - // Unlock wallet was cancelled - fNewRecipientAllowed = true; - return; - } - - // prepare transaction for getting txFee earlier - WalletModelTransaction currentTransaction(recipients); - WalletModel::SendCoinsReturn prepareStatus; - if (model->getOptionsModel()->getCoinControlFeatures()) // coin control enabled - prepareStatus = model->prepareTransaction(currentTransaction, CoinControlDialog::coinControl); - else - prepareStatus = model->prepareTransaction(currentTransaction); - - // process prepareStatus and on error generate message shown to user - processSendCoinsReturn(prepareStatus, - BitcoinUnits::formatWithUnit(model->getOptionsModel()->getDisplayUnit(), currentTransaction.getTransactionFee())); - - if(prepareStatus.status != WalletModel::OK) { - fNewRecipientAllowed = true; - return; - } - - CAmount txFee = currentTransaction.getTransactionFee(); - - // Format confirmation message - QStringList formatted; - Q_FOREACH(const SendCoinsRecipient &rcp, currentTransaction.getRecipients()) - { - // generate bold amount string - QString amount = "" + BitcoinUnits::formatHtmlWithUnit(model->getOptionsModel()->getDisplayUnit(), rcp.amount); - amount.append(""); - // generate monospace address string - QString address = "" + rcp.address; - address.append(""); - - QString recipientElement; - - if (!rcp.paymentRequest.IsInitialized()) // normal payment - { - if(rcp.label.length() > 0) // label with address - { - recipientElement = tr("%1 to %2").arg(amount, GUIUtil::HtmlEscape(rcp.label)); - recipientElement.append(QString(" (%1)").arg(address)); - } - else // just address - { - recipientElement = tr("%1 to %2").arg(amount, address); - } - } - else if(!rcp.authenticatedMerchant.isEmpty()) // authenticated payment request - { - recipientElement = tr("%1 to %2").arg(amount, GUIUtil::HtmlEscape(rcp.authenticatedMerchant)); - } - else // unauthenticated payment request - { - recipientElement = tr("%1 to %2").arg(amount, address); - } - - formatted.append(recipientElement); - } - - QString questionString = tr("Are you sure you want to send?"); - questionString.append("

%1"); - - if(txFee > 0) - { - // append fee string if a fee is required - questionString.append("
"); - questionString.append(BitcoinUnits::formatHtmlWithUnit(model->getOptionsModel()->getDisplayUnit(), txFee)); - questionString.append(" "); - questionString.append(tr("added as transaction fee")); - - // append transaction size - questionString.append(" (" + QString::number((double)currentTransaction.getTransactionSize() / 1000) + " kB)"); - } - - // add total amount in all subdivision units - questionString.append("
"); - CAmount totalAmount = currentTransaction.getTotalTransactionAmount() + txFee; - QStringList alternativeUnits; - Q_FOREACH(BitcoinUnits::Unit u, BitcoinUnits::availableUnits()) - { - if(u != model->getOptionsModel()->getDisplayUnit()) - alternativeUnits.append(BitcoinUnits::formatHtmlWithUnit(u, totalAmount)); - } - questionString.append(tr("Total Amount %1
(=%2)
") - .arg(BitcoinUnits::formatHtmlWithUnit(model->getOptionsModel()->getDisplayUnit(), totalAmount)) - .arg(alternativeUnits.join(" " + tr("or") + "
"))); - - QMessageBox::StandardButton retval = QMessageBox::question(this, tr("Confirm send coins"), - questionString.arg(formatted.join("
")), - QMessageBox::Yes | QMessageBox::Cancel, - QMessageBox::Cancel); - - if(retval != QMessageBox::Yes) - { - fNewRecipientAllowed = true; - return; - } - - // now send the prepared transaction - WalletModel::SendCoinsReturn sendStatus = model->sendCoins(currentTransaction); - // process sendStatus and on error generate message shown to user - processSendCoinsReturn(sendStatus); - - if (sendStatus.status == WalletModel::OK) - { - accept(); - CoinControlDialog::coinControl->UnSelectAll(); - coinControlUpdateLabels(); - } - fNewRecipientAllowed = true; -} - -void SendCoinsDialog::clear() -{ - // Remove entries until only one left - while(ui->entries->count()) - { - ui->entries->takeAt(0)->widget()->deleteLater(); - } - addEntry(); - - updateTabsAndLabels(); -} - -void SendCoinsDialog::reject() -{ - clear(); -} - -void SendCoinsDialog::accept() -{ - clear(); -} - -SendCoinsEntry *SendCoinsDialog::addEntry() -{ - SendCoinsEntry *entry = new SendCoinsEntry(this); - entry->setModel(model); - ui->entries->addWidget(entry); - connect(entry, SIGNAL(removeEntry(SendCoinsEntry*)), this, SLOT(removeEntry(SendCoinsEntry*))); - connect(entry, SIGNAL(payAmountChanged()), this, SLOT(coinControlUpdateLabels())); - connect(entry, SIGNAL(subtractFeeFromAmountChanged()), this, SLOT(coinControlUpdateLabels())); - - updateTabsAndLabels(); - - // Focus the field, so that entry can start immediately - entry->clear(); - entry->setFocus(); - ui->scrollAreaWidgetContents->resize(ui->scrollAreaWidgetContents->sizeHint()); - qApp->processEvents(); - QScrollBar* bar = ui->scrollArea->verticalScrollBar(); - if(bar) - bar->setSliderPosition(bar->maximum()); - return entry; -} - -void SendCoinsDialog::updateTabsAndLabels() -{ - setupTabChain(0); - coinControlUpdateLabels(); -} - -void SendCoinsDialog::removeEntry(SendCoinsEntry* entry) -{ - entry->hide(); - - // If the last entry is about to be removed add an empty one - if (ui->entries->count() == 1) - addEntry(); - - entry->deleteLater(); - - updateTabsAndLabels(); -} - -QWidget *SendCoinsDialog::setupTabChain(QWidget *prev) -{ - for(int i = 0; i < ui->entries->count(); ++i) - { - SendCoinsEntry *entry = qobject_cast(ui->entries->itemAt(i)->widget()); - if(entry) - { - prev = entry->setupTabChain(prev); - } - } - QWidget::setTabOrder(prev, ui->sendButton); - QWidget::setTabOrder(ui->sendButton, ui->clearButton); - QWidget::setTabOrder(ui->clearButton, ui->addButton); - return ui->addButton; -} - -void SendCoinsDialog::setAddress(const QString &address) -{ - SendCoinsEntry *entry = 0; - // Replace the first entry if it is still unused - if(ui->entries->count() == 1) - { - SendCoinsEntry *first = qobject_cast(ui->entries->itemAt(0)->widget()); - if(first->isClear()) - { - entry = first; - } - } - if(!entry) - { - entry = addEntry(); - } - - entry->setAddress(address); -} - -void SendCoinsDialog::pasteEntry(const SendCoinsRecipient &rv) -{ - if(!fNewRecipientAllowed) - return; - - SendCoinsEntry *entry = 0; - // Replace the first entry if it is still unused - if(ui->entries->count() == 1) - { - SendCoinsEntry *first = qobject_cast(ui->entries->itemAt(0)->widget()); - if(first->isClear()) - { - entry = first; - } - } - if(!entry) - { - entry = addEntry(); - } - - entry->setValue(rv); - updateTabsAndLabels(); -} - -bool SendCoinsDialog::handlePaymentRequest(const SendCoinsRecipient &rv) -{ - // Just paste the entry, all pre-checks - // are done in paymentserver.cpp. - pasteEntry(rv); - return true; -} - -void SendCoinsDialog::setBalance(const CAmount& balance, const CAmount& unconfirmedBalance, const CAmount& immatureBalance, - const CAmount& watchBalance, const CAmount& watchUnconfirmedBalance, const CAmount& watchImmatureBalance) -{ - Q_UNUSED(unconfirmedBalance); - Q_UNUSED(immatureBalance); - Q_UNUSED(watchBalance); - Q_UNUSED(watchUnconfirmedBalance); - Q_UNUSED(watchImmatureBalance); - - if(model && model->getOptionsModel()) - { - ui->labelBalance->setText(BitcoinUnits::formatWithUnit(model->getOptionsModel()->getDisplayUnit(), balance)); - } -} - -void SendCoinsDialog::updateDisplayUnit() -{ - setBalance(model->getBalance(), 0, 0, 0, 0, 0); - ui->customFee->setDisplayUnit(model->getOptionsModel()->getDisplayUnit()); - updateMinFeeLabel(); - updateSmartFeeLabel(); -} - -void SendCoinsDialog::processSendCoinsReturn(const WalletModel::SendCoinsReturn &sendCoinsReturn, const QString &msgArg) -{ - QPair msgParams; - // Default to a warning message, override if error message is needed - msgParams.second = CClientUIInterface::MSG_WARNING; - - // This comment is specific to SendCoinsDialog usage of WalletModel::SendCoinsReturn. - // WalletModel::TransactionCommitFailed is used only in WalletModel::sendCoins() - // all others are used only in WalletModel::prepareTransaction() - switch(sendCoinsReturn.status) - { - case WalletModel::InvalidAddress: - msgParams.first = tr("The recipient address is not valid. Please recheck."); - break; - case WalletModel::InvalidAmount: - msgParams.first = tr("The amount to pay must be larger than 0."); - break; - case WalletModel::AmountExceedsBalance: - msgParams.first = tr("The amount exceeds your balance."); - break; - case WalletModel::AmountWithFeeExceedsBalance: - msgParams.first = tr("The total exceeds your balance when the %1 transaction fee is included.").arg(msgArg); - break; - case WalletModel::DuplicateAddress: - msgParams.first = tr("Duplicate address found: addresses should only be used once each."); - break; - case WalletModel::TransactionCreationFailed: - msgParams.first = tr("Transaction creation failed!"); - msgParams.second = CClientUIInterface::MSG_ERROR; - break; - case WalletModel::TransactionCommitFailed: - msgParams.first = tr("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."); - msgParams.second = CClientUIInterface::MSG_ERROR; - break; - case WalletModel::AbsurdFee: - msgParams.first = tr("A fee higher than %1 is considered an absurdly high fee.").arg(BitcoinUnits::formatWithUnit(model->getOptionsModel()->getDisplayUnit(), 10000000)); - break; - case WalletModel::PaymentRequestExpired: - msgParams.first = tr("Payment request expired."); - msgParams.second = CClientUIInterface::MSG_ERROR; - break; - // included to prevent a compiler warning. - case WalletModel::OK: - default: - return; - } - - Q_EMIT message(tr("Send Coins"), msgParams.first, msgParams.second); -} - -void SendCoinsDialog::minimizeFeeSection(bool fMinimize) -{ - ui->labelFeeMinimized->setVisible(fMinimize); - ui->buttonChooseFee ->setVisible(fMinimize); - ui->buttonMinimizeFee->setVisible(!fMinimize); - ui->frameFeeSelection->setVisible(!fMinimize); - ui->horizontalLayoutSmartFee->setContentsMargins(0, (fMinimize ? 0 : 6), 0, 0); - fFeeMinimized = fMinimize; -} - -void SendCoinsDialog::on_buttonChooseFee_clicked() -{ - minimizeFeeSection(false); -} - -void SendCoinsDialog::on_buttonMinimizeFee_clicked() -{ - updateFeeMinimizedLabel(); - minimizeFeeSection(true); -} - -void SendCoinsDialog::setMinimumFee() -{ - ui->radioCustomPerKilobyte->setChecked(true); - ui->customFee->setValue(CWallet::minTxFee.GetFeePerK()); -} - -void SendCoinsDialog::updateFeeSectionControls() -{ - ui->sliderSmartFee ->setEnabled(ui->radioSmartFee->isChecked()); - ui->labelSmartFee ->setEnabled(ui->radioSmartFee->isChecked()); - ui->labelSmartFee2 ->setEnabled(ui->radioSmartFee->isChecked()); - ui->labelSmartFee3 ->setEnabled(ui->radioSmartFee->isChecked()); - ui->labelFeeEstimation ->setEnabled(ui->radioSmartFee->isChecked()); - ui->labelSmartFeeNormal ->setEnabled(ui->radioSmartFee->isChecked()); - ui->labelSmartFeeFast ->setEnabled(ui->radioSmartFee->isChecked()); - ui->checkBoxMinimumFee ->setEnabled(ui->radioCustomFee->isChecked()); - ui->labelMinFeeWarning ->setEnabled(ui->radioCustomFee->isChecked()); - ui->radioCustomPerKilobyte ->setEnabled(ui->radioCustomFee->isChecked() && !ui->checkBoxMinimumFee->isChecked()); - ui->radioCustomAtLeast ->setEnabled(ui->radioCustomFee->isChecked() && !ui->checkBoxMinimumFee->isChecked()); - ui->customFee ->setEnabled(ui->radioCustomFee->isChecked() && !ui->checkBoxMinimumFee->isChecked()); -} - -void SendCoinsDialog::updateGlobalFeeVariables() -{ - if (ui->radioSmartFee->isChecked()) - { - nTxConfirmTarget = defaultConfirmTarget - ui->sliderSmartFee->value(); - payTxFee = CFeeRate(0); - } - else - { - nTxConfirmTarget = defaultConfirmTarget; - payTxFee = CFeeRate(ui->customFee->value()); - fPayAtLeastCustomFee = ui->radioCustomAtLeast->isChecked(); - } - - fSendFreeTransactions = ui->checkBoxFreeTx->isChecked(); -} - -void SendCoinsDialog::updateFeeMinimizedLabel() -{ - if(!model || !model->getOptionsModel()) - return; - - if (ui->radioSmartFee->isChecked()) - ui->labelFeeMinimized->setText(ui->labelSmartFee->text()); - else { - ui->labelFeeMinimized->setText(BitcoinUnits::formatWithUnit(model->getOptionsModel()->getDisplayUnit(), ui->customFee->value()) + - ((ui->radioCustomPerKilobyte->isChecked()) ? "/kB" : "")); - } -} - -void SendCoinsDialog::updateMinFeeLabel() -{ - if (model && model->getOptionsModel()) - ui->checkBoxMinimumFee->setText(tr("Pay only the minimum fee of %1").arg( - BitcoinUnits::formatWithUnit(model->getOptionsModel()->getDisplayUnit(), CWallet::minTxFee.GetFeePerK()) + "/kB") - ); -} - -void SendCoinsDialog::updateSmartFeeLabel() -{ - if(!model || !model->getOptionsModel()) - return; - - int nBlocksToConfirm = defaultConfirmTarget - ui->sliderSmartFee->value(); - CFeeRate feeRate = mempool.estimateFee(nBlocksToConfirm); - if (feeRate <= CFeeRate(0)) // not enough data => minfee - { - ui->labelSmartFee->setText(BitcoinUnits::formatWithUnit(model->getOptionsModel()->getDisplayUnit(), CWallet::minTxFee.GetFeePerK()) + "/kB"); - ui->labelSmartFee2->show(); // (Smart fee not initialized yet. This usually takes a few blocks...) - ui->labelFeeEstimation->setText(""); - } - else - { - ui->labelSmartFee->setText(BitcoinUnits::formatWithUnit(model->getOptionsModel()->getDisplayUnit(), feeRate.GetFeePerK()) + "/kB"); - ui->labelSmartFee2->hide(); - ui->labelFeeEstimation->setText(tr("Estimated to begin confirmation within %n block(s).", "", nBlocksToConfirm)); - } - - updateFeeMinimizedLabel(); -} - -// Coin Control: copy label "Quantity" to clipboard -void SendCoinsDialog::coinControlClipboardQuantity() -{ - GUIUtil::setClipboard(ui->labelCoinControlQuantity->text()); -} - -// Coin Control: copy label "Amount" to clipboard -void SendCoinsDialog::coinControlClipboardAmount() -{ - GUIUtil::setClipboard(ui->labelCoinControlAmount->text().left(ui->labelCoinControlAmount->text().indexOf(" "))); -} - -// Coin Control: copy label "Fee" to clipboard -void SendCoinsDialog::coinControlClipboardFee() -{ - GUIUtil::setClipboard(ui->labelCoinControlFee->text().left(ui->labelCoinControlFee->text().indexOf(" ")).replace(ASYMP_UTF8, "")); -} - -// Coin Control: copy label "After fee" to clipboard -void SendCoinsDialog::coinControlClipboardAfterFee() -{ - GUIUtil::setClipboard(ui->labelCoinControlAfterFee->text().left(ui->labelCoinControlAfterFee->text().indexOf(" ")).replace(ASYMP_UTF8, "")); -} - -// Coin Control: copy label "Bytes" to clipboard -void SendCoinsDialog::coinControlClipboardBytes() -{ - GUIUtil::setClipboard(ui->labelCoinControlBytes->text().replace(ASYMP_UTF8, "")); -} - -// Coin Control: copy label "Priority" to clipboard -void SendCoinsDialog::coinControlClipboardPriority() -{ - GUIUtil::setClipboard(ui->labelCoinControlPriority->text()); -} - -// Coin Control: copy label "Dust" to clipboard -void SendCoinsDialog::coinControlClipboardLowOutput() -{ - GUIUtil::setClipboard(ui->labelCoinControlLowOutput->text()); -} - -// Coin Control: copy label "Change" to clipboard -void SendCoinsDialog::coinControlClipboardChange() -{ - GUIUtil::setClipboard(ui->labelCoinControlChange->text().left(ui->labelCoinControlChange->text().indexOf(" ")).replace(ASYMP_UTF8, "")); -} - -// Coin Control: settings menu - coin control enabled/disabled by user -void SendCoinsDialog::coinControlFeatureChanged(bool checked) -{ - ui->frameCoinControl->setVisible(checked); - - if (!checked && model) // coin control features disabled - CoinControlDialog::coinControl->SetNull(); - - if (checked) - coinControlUpdateLabels(); -} - -// Coin Control: button inputs -> show actual coin control dialog -void SendCoinsDialog::coinControlButtonClicked() -{ - CoinControlDialog dlg; - dlg.setModel(model); - dlg.exec(); - coinControlUpdateLabels(); -} - -// Coin Control: checkbox custom change address -void SendCoinsDialog::coinControlChangeChecked(int state) -{ - if (state == Qt::Unchecked) - { - CoinControlDialog::coinControl->destChange = CNoDestination(); - ui->labelCoinControlChangeLabel->clear(); - } - else - // use this to re-validate an already entered address - coinControlChangeEdited(ui->lineEditCoinControlChange->text()); - - ui->lineEditCoinControlChange->setEnabled((state == Qt::Checked)); -} - -// Coin Control: custom change address changed -void SendCoinsDialog::coinControlChangeEdited(const QString& text) -{ - if (model && model->getAddressTableModel()) - { - // Default to no change address until verified - CoinControlDialog::coinControl->destChange = CNoDestination(); - ui->labelCoinControlChangeLabel->setStyleSheet("QLabel{color:red;}"); - - CBitcoinAddress addr = CBitcoinAddress(text.toStdString()); - - if (text.isEmpty()) // Nothing entered - { - ui->labelCoinControlChangeLabel->setText(""); - } - else if (!addr.IsValid()) // Invalid address - { - ui->labelCoinControlChangeLabel->setText(tr("Warning: Invalid Bitcoin address")); - } - else // Valid address - { - CPubKey pubkey; - CKeyID keyid; - addr.GetKeyID(keyid); - if (!model->getPubKey(keyid, pubkey)) // Unknown change address - { - ui->labelCoinControlChangeLabel->setText(tr("Warning: Unknown change address")); - } - else // Known change address - { - ui->labelCoinControlChangeLabel->setStyleSheet("QLabel{color:black;}"); - - // Query label - QString associatedLabel = model->getAddressTableModel()->labelForAddress(text); - if (!associatedLabel.isEmpty()) - ui->labelCoinControlChangeLabel->setText(associatedLabel); - else - ui->labelCoinControlChangeLabel->setText(tr("(no label)")); - - CoinControlDialog::coinControl->destChange = addr.Get(); - } - } - } -} - -// Coin Control: update labels -void SendCoinsDialog::coinControlUpdateLabels() -{ - if (!model || !model->getOptionsModel() || !model->getOptionsModel()->getCoinControlFeatures()) - return; - - // set pay amounts - CoinControlDialog::payAmounts.clear(); - CoinControlDialog::fSubtractFeeFromAmount = false; - for(int i = 0; i < ui->entries->count(); ++i) - { - SendCoinsEntry *entry = qobject_cast(ui->entries->itemAt(i)->widget()); - if(entry) - { - SendCoinsRecipient rcp = entry->getValue(); - CoinControlDialog::payAmounts.append(rcp.amount); - if (rcp.fSubtractFeeFromAmount) - CoinControlDialog::fSubtractFeeFromAmount = true; - } - } - - if (CoinControlDialog::coinControl->HasSelected()) - { - // actual coin control calculation - CoinControlDialog::updateLabels(model, this); - - // show coin control stats - ui->labelCoinControlAutomaticallySelected->hide(); - ui->widgetCoinControl->show(); - } - else - { - // hide coin control stats - ui->labelCoinControlAutomaticallySelected->show(); - ui->widgetCoinControl->hide(); - ui->labelCoinControlInsuffFunds->hide(); - } -} diff --git a/src/qt/sendcoinsdialog.h b/src/qt/sendcoinsdialog.h deleted file mode 100644 index c833da84b..000000000 --- a/src/qt/sendcoinsdialog.h +++ /dev/null @@ -1,101 +0,0 @@ -// Copyright (c) 2011-2013 The Bitcoin Core developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#ifndef BITCOIN_QT_SENDCOINSDIALOG_H -#define BITCOIN_QT_SENDCOINSDIALOG_H - -#include "walletmodel.h" - -#include -#include - -class ClientModel; -class OptionsModel; -class SendCoinsEntry; -class SendCoinsRecipient; - -namespace Ui { - class SendCoinsDialog; -} - -QT_BEGIN_NAMESPACE -class QUrl; -QT_END_NAMESPACE - -const int defaultConfirmTarget = 25; - -/** Dialog for sending bitcoins */ -class SendCoinsDialog : public QDialog -{ - Q_OBJECT - -public: - explicit SendCoinsDialog(QWidget *parent = 0); - ~SendCoinsDialog(); - - void setClientModel(ClientModel *clientModel); - void setModel(WalletModel *model); - - /** Set up the tab chain manually, as Qt messes up the tab chain by default in some cases (issue https://bugreports.qt-project.org/browse/QTBUG-10907). - */ - QWidget *setupTabChain(QWidget *prev); - - void setAddress(const QString &address); - void pasteEntry(const SendCoinsRecipient &rv); - bool handlePaymentRequest(const SendCoinsRecipient &recipient); - -public Q_SLOTS: - void clear(); - void reject(); - void accept(); - SendCoinsEntry *addEntry(); - void updateTabsAndLabels(); - void setBalance(const CAmount& balance, const CAmount& unconfirmedBalance, const CAmount& immatureBalance, - const CAmount& watchOnlyBalance, const CAmount& watchUnconfBalance, const CAmount& watchImmatureBalance); - -private: - Ui::SendCoinsDialog *ui; - ClientModel *clientModel; - WalletModel *model; - bool fNewRecipientAllowed; - bool fFeeMinimized; - - // Process WalletModel::SendCoinsReturn and generate a pair consisting - // of a message and message flags for use in Q_EMIT message(). - // Additional parameter msgArg can be used via .arg(msgArg). - void processSendCoinsReturn(const WalletModel::SendCoinsReturn &sendCoinsReturn, const QString &msgArg = QString()); - void minimizeFeeSection(bool fMinimize); - void updateFeeMinimizedLabel(); - -private Q_SLOTS: - void on_sendButton_clicked(); - void on_buttonChooseFee_clicked(); - void on_buttonMinimizeFee_clicked(); - void removeEntry(SendCoinsEntry* entry); - void updateDisplayUnit(); - void coinControlFeatureChanged(bool); - void coinControlButtonClicked(); - void coinControlChangeChecked(int); - void coinControlChangeEdited(const QString &); - void coinControlUpdateLabels(); - void coinControlClipboardQuantity(); - void coinControlClipboardAmount(); - void coinControlClipboardFee(); - void coinControlClipboardAfterFee(); - void coinControlClipboardBytes(); - void coinControlClipboardPriority(); - void coinControlClipboardLowOutput(); - void coinControlClipboardChange(); - void setMinimumFee(); - void updateFeeSectionControls(); - void updateMinFeeLabel(); - void updateSmartFeeLabel(); - void updateGlobalFeeVariables(); - -Q_SIGNALS: - // Fired when a message should be reported to the user - void message(const QString &title, const QString &message, unsigned int style); -}; - -#endif // BITCOIN_QT_SENDCOINSDIALOG_H diff --git a/src/qt/sendcoinsentry.cpp b/src/qt/sendcoinsentry.cpp deleted file mode 100644 index 90a8cbdc4..000000000 --- a/src/qt/sendcoinsentry.cpp +++ /dev/null @@ -1,266 +0,0 @@ -// Copyright (c) 2011-2013 The Bitcoin Core developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#include "sendcoinsentry.h" -#include "ui_sendcoinsentry.h" - -#include "addressbookpage.h" -#include "addresstablemodel.h" -#include "guiutil.h" -#include "optionsmodel.h" -#include "scicon.h" -#include "walletmodel.h" - -#include -#include - -SendCoinsEntry::SendCoinsEntry(QWidget *parent) : - QStackedWidget(parent), - ui(new Ui::SendCoinsEntry), - model(0) -{ - ui->setupUi(this); - - ui->addressBookButton->setIcon(SingleColorIcon(":/icons/address-book")); - ui->pasteButton->setIcon(SingleColorIcon(":/icons/editpaste")); - ui->deleteButton->setIcon(SingleColorIcon(":/icons/remove")); - ui->deleteButton_is->setIcon(SingleColorIcon(":/icons/remove")); - ui->deleteButton_s->setIcon(SingleColorIcon(":/icons/remove")); - - setCurrentWidget(ui->SendCoins); - -#ifdef Q_OS_MAC - ui->payToLayout->setSpacing(4); -#endif -#if QT_VERSION >= 0x040700 - ui->addAsLabel->setPlaceholderText(tr("Enter a label for this address to add it to your address book")); -#endif - - // normal bitcoin address field - GUIUtil::setupAddressWidget(ui->payTo, this); - // just a label for displaying bitcoin address(es) - ui->payTo_is->setFont(GUIUtil::bitcoinAddressFont()); - - // Connect signals - connect(ui->payAmount, SIGNAL(valueChanged()), this, SIGNAL(payAmountChanged())); - connect(ui->checkboxSubtractFeeFromAmount, SIGNAL(toggled(bool)), this, SIGNAL(subtractFeeFromAmountChanged())); - connect(ui->deleteButton, SIGNAL(clicked()), this, SLOT(deleteClicked())); - connect(ui->deleteButton_is, SIGNAL(clicked()), this, SLOT(deleteClicked())); - connect(ui->deleteButton_s, SIGNAL(clicked()), this, SLOT(deleteClicked())); -} - -SendCoinsEntry::~SendCoinsEntry() -{ - delete ui; -} - -void SendCoinsEntry::on_pasteButton_clicked() -{ - // Paste text from clipboard into recipient field - ui->payTo->setText(QApplication::clipboard()->text()); -} - -void SendCoinsEntry::on_addressBookButton_clicked() -{ - if(!model) - return; - AddressBookPage dlg(AddressBookPage::ForSelection, AddressBookPage::SendingTab, this); - dlg.setModel(model->getAddressTableModel()); - if(dlg.exec()) - { - ui->payTo->setText(dlg.getReturnValue()); - ui->payAmount->setFocus(); - } -} - -void SendCoinsEntry::on_payTo_textChanged(const QString &address) -{ - updateLabel(address); -} - -void SendCoinsEntry::setModel(WalletModel *model) -{ - this->model = model; - - if (model && model->getOptionsModel()) - connect(model->getOptionsModel(), SIGNAL(displayUnitChanged(int)), this, SLOT(updateDisplayUnit())); - - clear(); -} - -void SendCoinsEntry::clear() -{ - // clear UI elements for normal payment - ui->payTo->clear(); - ui->addAsLabel->clear(); - ui->payAmount->clear(); - ui->checkboxSubtractFeeFromAmount->setCheckState(Qt::Unchecked); - ui->messageTextLabel->clear(); - ui->messageTextLabel->hide(); - ui->messageLabel->hide(); - // clear UI elements for unauthenticated payment request - ui->payTo_is->clear(); - ui->memoTextLabel_is->clear(); - ui->payAmount_is->clear(); - // clear UI elements for authenticated payment request - ui->payTo_s->clear(); - ui->memoTextLabel_s->clear(); - ui->payAmount_s->clear(); - - // update the display unit, to not use the default ("BTC") - updateDisplayUnit(); -} - -void SendCoinsEntry::deleteClicked() -{ - Q_EMIT removeEntry(this); -} - -bool SendCoinsEntry::validate() -{ - if (!model) - return false; - - // Check input validity - bool retval = true; - - // Skip checks for payment request - if (recipient.paymentRequest.IsInitialized()) - return retval; - - if (!model->validateAddress(ui->payTo->text())) - { - ui->payTo->setValid(false); - retval = false; - } - - if (!ui->payAmount->validate()) - { - retval = false; - } - - // Sending a zero amount is invalid - if (ui->payAmount->value(0) <= 0) - { - ui->payAmount->setValid(false); - retval = false; - } - - // Reject dust outputs: - if (retval && GUIUtil::isDust(ui->payTo->text(), ui->payAmount->value())) { - ui->payAmount->setValid(false); - retval = false; - } - - return retval; -} - -SendCoinsRecipient SendCoinsEntry::getValue() -{ - // Payment request - if (recipient.paymentRequest.IsInitialized()) - return recipient; - - // Normal payment - recipient.address = ui->payTo->text(); - recipient.label = ui->addAsLabel->text(); - recipient.amount = ui->payAmount->value(); - recipient.message = ui->messageTextLabel->text(); - recipient.fSubtractFeeFromAmount = (ui->checkboxSubtractFeeFromAmount->checkState() == Qt::Checked); - - return recipient; -} - -QWidget *SendCoinsEntry::setupTabChain(QWidget *prev) -{ - QWidget::setTabOrder(prev, ui->payTo); - QWidget::setTabOrder(ui->payTo, ui->addAsLabel); - QWidget *w = ui->payAmount->setupTabChain(ui->addAsLabel); - QWidget::setTabOrder(w, ui->checkboxSubtractFeeFromAmount); - QWidget::setTabOrder(ui->checkboxSubtractFeeFromAmount, ui->addressBookButton); - QWidget::setTabOrder(ui->addressBookButton, ui->pasteButton); - QWidget::setTabOrder(ui->pasteButton, ui->deleteButton); - return ui->deleteButton; -} - -void SendCoinsEntry::setValue(const SendCoinsRecipient &value) -{ - recipient = value; - - if (recipient.paymentRequest.IsInitialized()) // payment request - { - if (recipient.authenticatedMerchant.isEmpty()) // unauthenticated - { - ui->payTo_is->setText(recipient.address); - ui->memoTextLabel_is->setText(recipient.message); - ui->payAmount_is->setValue(recipient.amount); - ui->payAmount_is->setReadOnly(true); - setCurrentWidget(ui->SendCoins_UnauthenticatedPaymentRequest); - } - else // authenticated - { - ui->payTo_s->setText(recipient.authenticatedMerchant); - ui->memoTextLabel_s->setText(recipient.message); - ui->payAmount_s->setValue(recipient.amount); - ui->payAmount_s->setReadOnly(true); - setCurrentWidget(ui->SendCoins_AuthenticatedPaymentRequest); - } - } - else // normal payment - { - // message - ui->messageTextLabel->setText(recipient.message); - ui->messageTextLabel->setVisible(!recipient.message.isEmpty()); - ui->messageLabel->setVisible(!recipient.message.isEmpty()); - - ui->addAsLabel->clear(); - ui->payTo->setText(recipient.address); // this may set a label from addressbook - if (!recipient.label.isEmpty()) // if a label had been set from the addressbook, don't overwrite with an empty label - ui->addAsLabel->setText(recipient.label); - ui->payAmount->setValue(recipient.amount); - } -} - -void SendCoinsEntry::setAddress(const QString &address) -{ - ui->payTo->setText(address); - ui->payAmount->setFocus(); -} - -bool SendCoinsEntry::isClear() -{ - return ui->payTo->text().isEmpty() && ui->payTo_is->text().isEmpty() && ui->payTo_s->text().isEmpty(); -} - -void SendCoinsEntry::setFocus() -{ - ui->payTo->setFocus(); -} - -void SendCoinsEntry::updateDisplayUnit() -{ - if(model && model->getOptionsModel()) - { - // Update payAmount with the current unit - ui->payAmount->setDisplayUnit(model->getOptionsModel()->getDisplayUnit()); - ui->payAmount_is->setDisplayUnit(model->getOptionsModel()->getDisplayUnit()); - ui->payAmount_s->setDisplayUnit(model->getOptionsModel()->getDisplayUnit()); - } -} - -bool SendCoinsEntry::updateLabel(const QString &address) -{ - if(!model) - return false; - - // Fill in label from address book, if address has an associated label - QString associatedLabel = model->getAddressTableModel()->labelForAddress(address); - if(!associatedLabel.isEmpty()) - { - ui->addAsLabel->setText(associatedLabel); - return true; - } - - return false; -} diff --git a/src/qt/sendcoinsentry.h b/src/qt/sendcoinsentry.h deleted file mode 100644 index d7e655fdc..000000000 --- a/src/qt/sendcoinsentry.h +++ /dev/null @@ -1,71 +0,0 @@ -// Copyright (c) 2011-2013 The Bitcoin Core developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#ifndef BITCOIN_QT_SENDCOINSENTRY_H -#define BITCOIN_QT_SENDCOINSENTRY_H - -#include "walletmodel.h" - -#include - -class WalletModel; - -namespace Ui { - class SendCoinsEntry; -} - -/** - * A single entry in the dialog for sending bitcoins. - * Stacked widget, with different UIs for payment requests - * with a strong payee identity. - */ -class SendCoinsEntry : public QStackedWidget -{ - Q_OBJECT - -public: - explicit SendCoinsEntry(QWidget *parent = 0); - ~SendCoinsEntry(); - - void setModel(WalletModel *model); - bool validate(); - SendCoinsRecipient getValue(); - - /** Return whether the entry is still empty and unedited */ - bool isClear(); - - void setValue(const SendCoinsRecipient &value); - void setAddress(const QString &address); - - /** Set up the tab chain manually, as Qt messes up the tab chain by default in some cases - * (issue https://bugreports.qt-project.org/browse/QTBUG-10907). - */ - QWidget *setupTabChain(QWidget *prev); - - void setFocus(); - -public Q_SLOTS: - void clear(); - -Q_SIGNALS: - void removeEntry(SendCoinsEntry *entry); - void payAmountChanged(); - void subtractFeeFromAmountChanged(); - -private Q_SLOTS: - void deleteClicked(); - void on_payTo_textChanged(const QString &address); - void on_addressBookButton_clicked(); - void on_pasteButton_clicked(); - void updateDisplayUnit(); - -private: - SendCoinsRecipient recipient; - Ui::SendCoinsEntry *ui; - WalletModel *model; - - bool updateLabel(const QString &address); -}; - -#endif // BITCOIN_QT_SENDCOINSENTRY_H diff --git a/src/qt/signverifymessagedialog.cpp b/src/qt/signverifymessagedialog.cpp deleted file mode 100644 index ce166f367..000000000 --- a/src/qt/signverifymessagedialog.cpp +++ /dev/null @@ -1,283 +0,0 @@ -// Copyright (c) 2011-2013 The Bitcoin Core developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#include "signverifymessagedialog.h" -#include "ui_signverifymessagedialog.h" - -#include "addressbookpage.h" -#include "guiutil.h" -#include "scicon.h" -#include "walletmodel.h" - -#include "base58.h" -#include "init.h" -#include "main.h" // For strMessageMagic -#include "wallet/wallet.h" - -#include -#include - -#include - -SignVerifyMessageDialog::SignVerifyMessageDialog(QWidget *parent) : - QDialog(parent), - ui(new Ui::SignVerifyMessageDialog), - model(0) -{ - ui->setupUi(this); - - ui->addressBookButton_SM->setIcon(SingleColorIcon(":/icons/address-book")); - ui->pasteButton_SM->setIcon(SingleColorIcon(":/icons/editpaste")); - ui->copySignatureButton_SM->setIcon(SingleColorIcon(":/icons/editcopy")); - ui->signMessageButton_SM->setIcon(SingleColorIcon(":/icons/edit")); - ui->clearButton_SM->setIcon(SingleColorIcon(":/icons/remove")); - ui->addressBookButton_VM->setIcon(SingleColorIcon(":/icons/address-book")); - ui->verifyMessageButton_VM->setIcon(SingleColorIcon(":/icons/transaction_0")); - ui->clearButton_VM->setIcon(SingleColorIcon(":/icons/remove")); - -#if QT_VERSION >= 0x040700 - ui->signatureOut_SM->setPlaceholderText(tr("Click \"Sign Message\" to generate signature")); -#endif - - GUIUtil::setupAddressWidget(ui->addressIn_SM, this); - GUIUtil::setupAddressWidget(ui->addressIn_VM, this); - - ui->addressIn_SM->installEventFilter(this); - ui->messageIn_SM->installEventFilter(this); - ui->signatureOut_SM->installEventFilter(this); - ui->addressIn_VM->installEventFilter(this); - ui->messageIn_VM->installEventFilter(this); - ui->signatureIn_VM->installEventFilter(this); - - ui->signatureOut_SM->setFont(GUIUtil::bitcoinAddressFont()); - ui->signatureIn_VM->setFont(GUIUtil::bitcoinAddressFont()); -} - -SignVerifyMessageDialog::~SignVerifyMessageDialog() -{ - delete ui; -} - -void SignVerifyMessageDialog::setModel(WalletModel *model) -{ - this->model = model; -} - -void SignVerifyMessageDialog::setAddress_SM(const QString &address) -{ - ui->addressIn_SM->setText(address); - ui->messageIn_SM->setFocus(); -} - -void SignVerifyMessageDialog::setAddress_VM(const QString &address) -{ - ui->addressIn_VM->setText(address); - ui->messageIn_VM->setFocus(); -} - -void SignVerifyMessageDialog::showTab_SM(bool fShow) -{ - ui->tabWidget->setCurrentIndex(0); - if (fShow) - this->show(); -} - -void SignVerifyMessageDialog::showTab_VM(bool fShow) -{ - ui->tabWidget->setCurrentIndex(1); - if (fShow) - this->show(); -} - -void SignVerifyMessageDialog::on_addressBookButton_SM_clicked() -{ - if (model && model->getAddressTableModel()) - { - AddressBookPage dlg(AddressBookPage::ForSelection, AddressBookPage::ReceivingTab, this); - dlg.setModel(model->getAddressTableModel()); - if (dlg.exec()) - { - setAddress_SM(dlg.getReturnValue()); - } - } -} - -void SignVerifyMessageDialog::on_pasteButton_SM_clicked() -{ - setAddress_SM(QApplication::clipboard()->text()); -} - -void SignVerifyMessageDialog::on_signMessageButton_SM_clicked() -{ - if (!model) - return; - - /* Clear old signature to ensure users don't get confused on error with an old signature displayed */ - ui->signatureOut_SM->clear(); - - CBitcoinAddress addr(ui->addressIn_SM->text().toStdString()); - if (!addr.IsValid()) - { - ui->statusLabel_SM->setStyleSheet("QLabel { color: red; }"); - ui->statusLabel_SM->setText(tr("The entered address is invalid.") + QString(" ") + tr("Please check the address and try again.")); - return; - } - CKeyID keyID; - if (!addr.GetKeyID(keyID)) - { - ui->addressIn_SM->setValid(false); - ui->statusLabel_SM->setStyleSheet("QLabel { color: red; }"); - ui->statusLabel_SM->setText(tr("The entered address does not refer to a key.") + QString(" ") + tr("Please check the address and try again.")); - return; - } - - WalletModel::UnlockContext ctx(model->requestUnlock()); - if (!ctx.isValid()) - { - ui->statusLabel_SM->setStyleSheet("QLabel { color: red; }"); - ui->statusLabel_SM->setText(tr("Wallet unlock was cancelled.")); - return; - } - - CKey key; - if (!pwalletMain->GetKey(keyID, key)) - { - ui->statusLabel_SM->setStyleSheet("QLabel { color: red; }"); - ui->statusLabel_SM->setText(tr("Private key for the entered address is not available.")); - return; - } - - CDataStream ss(SER_GETHASH, 0); - ss << strMessageMagic; - ss << ui->messageIn_SM->document()->toPlainText().toStdString(); - - std::vector vchSig; - if (!key.SignCompact(Hash(ss.begin(), ss.end()), vchSig)) - { - ui->statusLabel_SM->setStyleSheet("QLabel { color: red; }"); - ui->statusLabel_SM->setText(QString("") + tr("Message signing failed.") + QString("")); - return; - } - - ui->statusLabel_SM->setStyleSheet("QLabel { color: green; }"); - ui->statusLabel_SM->setText(QString("") + tr("Message signed.") + QString("")); - - ui->signatureOut_SM->setText(QString::fromStdString(EncodeBase64(&vchSig[0], vchSig.size()))); -} - -void SignVerifyMessageDialog::on_copySignatureButton_SM_clicked() -{ - GUIUtil::setClipboard(ui->signatureOut_SM->text()); -} - -void SignVerifyMessageDialog::on_clearButton_SM_clicked() -{ - ui->addressIn_SM->clear(); - ui->messageIn_SM->clear(); - ui->signatureOut_SM->clear(); - ui->statusLabel_SM->clear(); - - ui->addressIn_SM->setFocus(); -} - -void SignVerifyMessageDialog::on_addressBookButton_VM_clicked() -{ - if (model && model->getAddressTableModel()) - { - AddressBookPage dlg(AddressBookPage::ForSelection, AddressBookPage::SendingTab, this); - dlg.setModel(model->getAddressTableModel()); - if (dlg.exec()) - { - setAddress_VM(dlg.getReturnValue()); - } - } -} - -void SignVerifyMessageDialog::on_verifyMessageButton_VM_clicked() -{ - CBitcoinAddress addr(ui->addressIn_VM->text().toStdString()); - if (!addr.IsValid()) - { - ui->statusLabel_VM->setStyleSheet("QLabel { color: red; }"); - ui->statusLabel_VM->setText(tr("The entered address is invalid.") + QString(" ") + tr("Please check the address and try again.")); - return; - } - CKeyID keyID; - if (!addr.GetKeyID(keyID)) - { - ui->addressIn_VM->setValid(false); - ui->statusLabel_VM->setStyleSheet("QLabel { color: red; }"); - ui->statusLabel_VM->setText(tr("The entered address does not refer to a key.") + QString(" ") + tr("Please check the address and try again.")); - return; - } - - bool fInvalid = false; - std::vector vchSig = DecodeBase64(ui->signatureIn_VM->text().toStdString().c_str(), &fInvalid); - - if (fInvalid) - { - ui->signatureIn_VM->setValid(false); - ui->statusLabel_VM->setStyleSheet("QLabel { color: red; }"); - ui->statusLabel_VM->setText(tr("The signature could not be decoded.") + QString(" ") + tr("Please check the signature and try again.")); - return; - } - - CDataStream ss(SER_GETHASH, 0); - ss << strMessageMagic; - ss << ui->messageIn_VM->document()->toPlainText().toStdString(); - - CPubKey pubkey; - if (!pubkey.RecoverCompact(Hash(ss.begin(), ss.end()), vchSig)) - { - ui->signatureIn_VM->setValid(false); - ui->statusLabel_VM->setStyleSheet("QLabel { color: red; }"); - ui->statusLabel_VM->setText(tr("The signature did not match the message digest.") + QString(" ") + tr("Please check the signature and try again.")); - return; - } - - if (!(CBitcoinAddress(pubkey.GetID()) == addr)) - { - ui->statusLabel_VM->setStyleSheet("QLabel { color: red; }"); - ui->statusLabel_VM->setText(QString("") + tr("Message verification failed.") + QString("")); - return; - } - - ui->statusLabel_VM->setStyleSheet("QLabel { color: green; }"); - ui->statusLabel_VM->setText(QString("") + tr("Message verified.") + QString("")); -} - -void SignVerifyMessageDialog::on_clearButton_VM_clicked() -{ - ui->addressIn_VM->clear(); - ui->signatureIn_VM->clear(); - ui->messageIn_VM->clear(); - ui->statusLabel_VM->clear(); - - ui->addressIn_VM->setFocus(); -} - -bool SignVerifyMessageDialog::eventFilter(QObject *object, QEvent *event) -{ - if (event->type() == QEvent::MouseButtonPress || event->type() == QEvent::FocusIn) - { - if (ui->tabWidget->currentIndex() == 0) - { - /* Clear status message on focus change */ - ui->statusLabel_SM->clear(); - - /* Select generated signature */ - if (object == ui->signatureOut_SM) - { - ui->signatureOut_SM->selectAll(); - return true; - } - } - else if (ui->tabWidget->currentIndex() == 1) - { - /* Clear status message on focus change */ - ui->statusLabel_VM->clear(); - } - } - return QDialog::eventFilter(object, event); -} diff --git a/src/qt/signverifymessagedialog.h b/src/qt/signverifymessagedialog.h deleted file mode 100644 index bf841e4f8..000000000 --- a/src/qt/signverifymessagedialog.h +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright (c) 2011-2013 The Bitcoin Core developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#ifndef BITCOIN_QT_SIGNVERIFYMESSAGEDIALOG_H -#define BITCOIN_QT_SIGNVERIFYMESSAGEDIALOG_H - -#include - -class WalletModel; - -namespace Ui { - class SignVerifyMessageDialog; -} - -class SignVerifyMessageDialog : public QDialog -{ - Q_OBJECT - -public: - explicit SignVerifyMessageDialog(QWidget *parent); - ~SignVerifyMessageDialog(); - - void setModel(WalletModel *model); - void setAddress_SM(const QString &address); - void setAddress_VM(const QString &address); - - void showTab_SM(bool fShow); - void showTab_VM(bool fShow); - -protected: - bool eventFilter(QObject *object, QEvent *event); - -private: - Ui::SignVerifyMessageDialog *ui; - WalletModel *model; - -private Q_SLOTS: - /* sign message */ - void on_addressBookButton_SM_clicked(); - void on_pasteButton_SM_clicked(); - void on_signMessageButton_SM_clicked(); - void on_copySignatureButton_SM_clicked(); - void on_clearButton_SM_clicked(); - /* verify message */ - void on_addressBookButton_VM_clicked(); - void on_verifyMessageButton_VM_clicked(); - void on_clearButton_VM_clicked(); -}; - -#endif // BITCOIN_QT_SIGNVERIFYMESSAGEDIALOG_H diff --git a/src/qt/splashscreen.cpp b/src/qt/splashscreen.cpp deleted file mode 100644 index c15b64c32..000000000 --- a/src/qt/splashscreen.cpp +++ /dev/null @@ -1,202 +0,0 @@ -// Copyright (c) 2011-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. - -#include "splashscreen.h" - -#include "networkstyle.h" - -#include "clientversion.h" -#include "init.h" -#include "util.h" -#include "ui_interface.h" -#include "version.h" - -#ifdef ENABLE_WALLET -#include "wallet/wallet.h" -#endif - -#include -#include -#include -#include -#include - -SplashScreen::SplashScreen(Qt::WindowFlags f, const NetworkStyle *networkStyle) : - QWidget(0, f), curAlignment(0) -{ - // set reference point, paddings - int paddingRight = 50; - int paddingTop = 50; - int titleVersionVSpace = 17; - int titleCopyrightVSpace = 40; - - float fontFactor = 1.0; - float devicePixelRatio = 1.0; -#if QT_VERSION > 0x050100 - devicePixelRatio = ((QGuiApplication*)QCoreApplication::instance())->devicePixelRatio(); -#endif - - // define text to place - QString titleText = tr("Bitcoin Core"); - QString versionText = QString("Version %1").arg(QString::fromStdString(FormatFullVersion())); - QString copyrightText = QChar(0xA9)+QString(" 2009-%1 ").arg(COPYRIGHT_YEAR) + QString(tr("The Bitcoin Core developers")); - QString titleAddText = networkStyle->getTitleAddText(); - - QString font = QApplication::font().toString(); - - // create a bitmap according to device pixelratio - QSize splashSize(480*devicePixelRatio,320*devicePixelRatio); - pixmap = QPixmap(splashSize); - -#if QT_VERSION > 0x050100 - // change to HiDPI if it makes sense - pixmap.setDevicePixelRatio(devicePixelRatio); -#endif - - QPainter pixPaint(&pixmap); - pixPaint.setPen(QColor(100,100,100)); - - // draw a slightly radial gradient - QRadialGradient gradient(QPoint(0,0), splashSize.width()/devicePixelRatio); - gradient.setColorAt(0, Qt::white); - gradient.setColorAt(1, QColor(247,247,247)); - QRect rGradient(QPoint(0,0), splashSize); - pixPaint.fillRect(rGradient, gradient); - - // draw the bitcoin icon, expected size of PNG: 1024x1024 - QRect rectIcon(QPoint(-150,-122), QSize(430,430)); - - const QSize requiredSize(1024,1024); - QPixmap icon(networkStyle->getAppIcon().pixmap(requiredSize)); - - pixPaint.drawPixmap(rectIcon, icon); - - // check font size and drawing with - pixPaint.setFont(QFont(font, 33*fontFactor)); - QFontMetrics fm = pixPaint.fontMetrics(); - int titleTextWidth = fm.width(titleText); - if(titleTextWidth > 160) { - // strange font rendering, Arial probably not found - fontFactor = 0.75; - } - - pixPaint.setFont(QFont(font, 33*fontFactor)); - fm = pixPaint.fontMetrics(); - titleTextWidth = fm.width(titleText); - pixPaint.drawText(pixmap.width()/devicePixelRatio-titleTextWidth-paddingRight,paddingTop,titleText); - - pixPaint.setFont(QFont(font, 15*fontFactor)); - - // if the version string is to long, reduce size - fm = pixPaint.fontMetrics(); - int versionTextWidth = fm.width(versionText); - if(versionTextWidth > titleTextWidth+paddingRight-10) { - pixPaint.setFont(QFont(font, 10*fontFactor)); - titleVersionVSpace -= 5; - } - pixPaint.drawText(pixmap.width()/devicePixelRatio-titleTextWidth-paddingRight+2,paddingTop+titleVersionVSpace,versionText); - - // draw copyright stuff - pixPaint.setFont(QFont(font, 10*fontFactor)); - pixPaint.drawText(pixmap.width()/devicePixelRatio-titleTextWidth-paddingRight,paddingTop+titleCopyrightVSpace,copyrightText); - - // draw additional text if special network - if(!titleAddText.isEmpty()) { - QFont boldFont = QFont(font, 10*fontFactor); - boldFont.setWeight(QFont::Bold); - pixPaint.setFont(boldFont); - fm = pixPaint.fontMetrics(); - int titleAddTextWidth = fm.width(titleAddText); - pixPaint.drawText(pixmap.width()/devicePixelRatio-titleAddTextWidth-10,15,titleAddText); - } - - pixPaint.end(); - - // Set window title - setWindowTitle(titleText + " " + titleAddText); - - // Resize window and move to center of desktop, disallow resizing - QRect r(QPoint(), QSize(pixmap.size().width()/devicePixelRatio,pixmap.size().height()/devicePixelRatio)); - resize(r.size()); - setFixedSize(r.size()); - move(QApplication::desktop()->screenGeometry().center() - r.center()); - - subscribeToCoreSignals(); -} - -SplashScreen::~SplashScreen() -{ - unsubscribeFromCoreSignals(); -} - -void SplashScreen::slotFinish(QWidget *mainWin) -{ - Q_UNUSED(mainWin); - hide(); -} - -static void InitMessage(SplashScreen *splash, const std::string &message) -{ - QMetaObject::invokeMethod(splash, "showMessage", - Qt::QueuedConnection, - Q_ARG(QString, QString::fromStdString(message)), - Q_ARG(int, Qt::AlignBottom|Qt::AlignHCenter), - Q_ARG(QColor, QColor(55,55,55))); -} - -static void ShowProgress(SplashScreen *splash, const std::string &title, int nProgress) -{ - InitMessage(splash, title + strprintf("%d", nProgress) + "%"); -} - -#ifdef ENABLE_WALLET -static void ConnectWallet(SplashScreen *splash, CWallet* wallet) -{ - wallet->ShowProgress.connect(boost::bind(ShowProgress, splash, _1, _2)); -} -#endif - -void SplashScreen::subscribeToCoreSignals() -{ - // Connect signals to client - uiInterface.InitMessage.connect(boost::bind(InitMessage, this, _1)); - uiInterface.ShowProgress.connect(boost::bind(ShowProgress, this, _1, _2)); -#ifdef ENABLE_WALLET - uiInterface.LoadWallet.connect(boost::bind(ConnectWallet, this, _1)); -#endif -} - -void SplashScreen::unsubscribeFromCoreSignals() -{ - // Disconnect signals from client - uiInterface.InitMessage.disconnect(boost::bind(InitMessage, this, _1)); - uiInterface.ShowProgress.disconnect(boost::bind(ShowProgress, this, _1, _2)); -#ifdef ENABLE_WALLET - if(pwalletMain) - pwalletMain->ShowProgress.disconnect(boost::bind(ShowProgress, this, _1, _2)); -#endif -} - -void SplashScreen::showMessage(const QString &message, int alignment, const QColor &color) -{ - curMessage = message; - curAlignment = alignment; - curColor = color; - update(); -} - -void SplashScreen::paintEvent(QPaintEvent *event) -{ - QPainter painter(this); - painter.drawPixmap(0, 0, pixmap); - QRect r = rect().adjusted(5, 5, -5, -5); - painter.setPen(curColor); - painter.drawText(r, curAlignment, curMessage); -} - -void SplashScreen::closeEvent(QCloseEvent *event) -{ - StartShutdown(); // allows an "emergency" shutdown during startup - event->ignore(); -} diff --git a/src/qt/splashscreen.h b/src/qt/splashscreen.h deleted file mode 100644 index 29d16d4ea..000000000 --- a/src/qt/splashscreen.h +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright (c) 2011-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. - -#ifndef BITCOIN_QT_SPLASHSCREEN_H -#define BITCOIN_QT_SPLASHSCREEN_H - -#include - -class NetworkStyle; - -/** Class for the splashscreen with information of the running client. - * - * @note this is intentionally not a QSplashScreen. Bitcoin Core initialization - * can take a long time, and in that case a progress window that cannot be - * moved around and minimized has turned out to be frustrating to the user. - */ -class SplashScreen : public QWidget -{ - Q_OBJECT - -public: - explicit SplashScreen(Qt::WindowFlags f, const NetworkStyle *networkStyle); - ~SplashScreen(); - -protected: - void paintEvent(QPaintEvent *event); - void closeEvent(QCloseEvent *event); - -public Q_SLOTS: - /** Slot to call finish() method as it's not defined as slot */ - void slotFinish(QWidget *mainWin); - - /** Show message and progress */ - void showMessage(const QString &message, int alignment, const QColor &color); - -private: - /** Connect core signals to splash screen */ - void subscribeToCoreSignals(); - /** Disconnect core signals to splash screen */ - void unsubscribeFromCoreSignals(); - - QPixmap pixmap; - QString curMessage; - QColor curColor; - int curAlignment; -}; - -#endif // BITCOIN_QT_SPLASHSCREEN_H diff --git a/src/qt/test/Makefile b/src/qt/test/Makefile deleted file mode 100644 index a02f86b62..000000000 --- a/src/qt/test/Makefile +++ /dev/null @@ -1,6 +0,0 @@ -all: - $(MAKE) -C ../../ test_bitcoin_qt -clean: - $(MAKE) -C ../../ test_bitcoin_qt_clean -check: - $(MAKE) -C ../../ test_bitcoin_qt_check diff --git a/src/qt/test/paymentrequestdata.h b/src/qt/test/paymentrequestdata.h deleted file mode 100644 index c548ffe42..000000000 --- a/src/qt/test/paymentrequestdata.h +++ /dev/null @@ -1,460 +0,0 @@ -// Copyright (c) 2009-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. - -// -// Data for paymentservertests.cpp -// - -// Base64/DER-encoded fake certificate authority certificates. -// Convert pem to base64/der with: -// openssl x509 -in cert.pem -inform PEM -outform DER | openssl enc -base64 - -// Serial Number: 10302349811211485352 (0x8ef94c91b112c0a8) -// Issuer: CN=PaymentRequest Test CA -// Subject: CN=PaymentRequest Test CA -// Not Valid After : Dec 8 16:37:24 2022 GMT -// -const char* caCert1_BASE64 = -"\ -MIIB0DCCATmgAwIBAgIJAI75TJGxEsCoMA0GCSqGSIb3DQEBCwUAMCExHzAdBgNV\ -BAMTFlBheW1lbnRSZXF1ZXN0IFRlc3QgQ0EwHhcNMTIxMjEwMTYzNzI0WhcNMjIx\ -MjA4MTYzNzI0WjAhMR8wHQYDVQQDExZQYXltZW50UmVxdWVzdCBUZXN0IENBMIGf\ -MA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCvua59nX9radoqDYyplcns5qdVDTN1\ -7tmcGixmMYOYU3UYMU55VSsJs0dWKnMm3COQDY+N63c0XSbRqarBcsLTkaNASuPX\ -FCv1VWuEKSyy5xe4zeoDU7CVSzlxtQD9wbZW/s3ISjgaXBpwn6eVmntb0JwYxxPc\ -M1u/hrMD8BDbSQIDAQABoxAwDjAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBCwUA\ -A4GBADSaRgK5xe47XxycXBhHhr0Wgl4pAsFsufqA9aB9r8KNEHJ0yUvvbD/jaJJM\ -RtQcf0AJ9olzUMY4syehxbzUJP6aeXhZEYiMvdvcv9D55clq6+WLLlNT3jBgAaVn\ -p3waRjPD4bUX3nv+ojz5s4puw7Qq5QUZlhGsMzPvwDGCmZkL\ -"; - -// Serial Number: f0:da:97:e4:38:d7:64:16 -// Issuer: CN=PaymentRequest Test CA -// Subject: CN=PaymentRequest Test CA -// Not Valid After : Jan 8 18:21:06 2025 GMT -// -const char* caCert2_BASE64 = -"\ -MIIC1TCCAb2gAwIBAgIJAPDal+Q412QWMA0GCSqGSIb3DQEBCwUAMCExHzAdBgNV\ -BAMMFlBheW1lbnRSZXF1ZXN0IFRlc3QgQ0EwHhcNMTUwMTExMTgyMTA2WhcNMjUw\ -MTA4MTgyMTA2WjAhMR8wHQYDVQQDDBZQYXltZW50UmVxdWVzdCBUZXN0IENBMIIB\ -IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1S9wVLfTplJuT/1OaaBgl/Mb\ -I392v8S9kHbzYz7B4OTMslaO7piz0v3SO3TKMh0dswjiRdHrIgpO7XdIUQiU/ugg\ -xDw0kuNehfz1ycaGedlFFtFHTNXqLyIUF3dlwHhQwaomM6RXoJmxLny5BhYHEcmk\ -yWwr3Cdjd9gAZpblugVJB9C1e40uyL8ao4PHdLzOqO27iSe6riP8SwwisJZEbMaz\ -AZpgNEEMbIXPJEFvm5HTRXSMtQCOTSZYMFF0M2yrtmlECnz7hWP19b9bcoDzZQB4\ -ylIsFG/7q2jV7MC/e2STZv+niJiHL08RUdoFpAgzaxMgqj63C7B55HgNDNHJYQID\ -AQABoxAwDjAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQBGejPxLxj9\ -+crv6gUeEBMZPiUx7pUgcI22Wm5yymP96B4fwI3Y0DBehq20d76vbWGPN17Z6pH3\ -ge7PVY1SYqXtS6hXTo4olCm/BZADli+2Bs2xCiaa+Ltve4ufVej+bKJXN/YnrhvO\ -Kq+klQkuuHywU+GJV/NQeBqToIrSOBgi477NgLFCCCmmx2QWsxHoCFGfuRCBVseT\ -z2k/tMuALCDXGeZBRPTsGHu1y4cj84swAeoDK5QSQcI+Ub7GKc+zkoj02sdDLiMo\ -3wokYPcIy47oclhmb4xubHc+y7nF610yZBoC/zgbhbawnZ65hDDWkdQ/SVAnWZD7\ -9PFfmNnYPTQH\ -"; - -// -// This payment request validates directly against the -// caCert1 certificate authority. -// -const char* paymentrequest1_cert1_BASE64 = -"\ -Egt4NTA5K3NoYTI1NhrxAwruAzCCAeowggFToAMCAQICAQEwDQYJKoZIhvcNAQEL\ -BQAwITEfMB0GA1UEAxMWUGF5bWVudFJlcXVlc3QgVGVzdCBDQTAeFw0xMjEyMTAx\ -NjM3MjRaFw0yMjEyMDgxNjM3MjRaMEMxGTAXBgNVBAMMEHRlc3RtZXJjaGFudC5v\ -cmcxJjAkBgNVBAoMHVBheW1lbnQgUmVxdWVzdCBUZXN0IE1lcmNoYW50MIGfMA0G\ -CSqGSIb3DQEBAQUAA4GNADCBiQKBgQDHkMy8W1u6HsWlSqdWTmMKf54gICxNfxbY\ -+rcMtAftr62hCYx2d2QiSRd1pCUzmo12IiSX3WxSHwaTnT3MFD6jRx6+zM6XdGar\ -I2zpYle11ANzu4gAthN17uRQHV2O5QxVtzNaMdKeJLXT2L9tfEdyL++9ZUqoQmdA\ -YG9ix330hQIDAQABoxAwDjAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBCwUAA4GB\ -AIkyO99KC68bi9PFRyQQ7nvn5GlQEb3Ca1bRG5+AKN9N5vc8rZ9G2hejtM8wEXni\ -eGBP+chVMsbTPEHKLrwREn7IvcyCcbAStaklPC3w0B/2idQSHskb6P3X13OR2bTH\ -a2+6wuhsOZRUrVNr24rM95DKx/eCC6JN1VW+qRPU6fqzIjQSHwiw2wYSGXapFJVg\ -igPI+6XpExtNLO/i1WFV8ZmoiKwYsuHFiwUqC1VuaXRUZXN0T25lKoABS0j59iMU\ -Uc9MdIfwsO1BskIET0eJSGNZ7eXb9N62u+qf831PMpEHkmlGpk8rHy92nPcgua/U\ -Yt8oZMn3QaTZ5A6HjJbc3A73eLylp1a0SwCl+KDMEvDQhqMn1jAVu2v92AH3uB7n\ -SiWVbw0tX/68iSQEGGfh9n6ee/8Myb3ICdw=\ -"; - -// -// Signed, but expired, merchant cert in the request -// -const char* paymentrequest2_cert1_BASE64 = -"\ -Egt4NTA5K3NoYTI1NhrsAwrpAzCCAeUwggFOoAMCAQICAQMwDQYJKoZIhvcNAQEL\ -BQAwITEfMB0GA1UEAxMWUGF5bWVudFJlcXVlc3QgVGVzdCBDQTAeFw0xMzAyMjMy\ -MTI2NDNaFw0xMzAyMjQyMTI2NDNaMD4xHDAaBgNVBAMME2V4cGlyZWRtZXJjaGFu\ -dC5vcmcxHjAcBgNVBAoMFUV4cGlyZWQgVGVzdCBNZXJjaGFudDCBnzANBgkqhkiG\ -9w0BAQEFAAOBjQAwgYkCgYEAx5DMvFtbuh7FpUqnVk5jCn+eICAsTX8W2Pq3DLQH\ -7a+toQmMdndkIkkXdaQlM5qNdiIkl91sUh8Gk509zBQ+o0cevszOl3RmqyNs6WJX\ -tdQDc7uIALYTde7kUB1djuUMVbczWjHSniS109i/bXxHci/vvWVKqEJnQGBvYsd9\ -9IUCAwEAAaMQMA4wDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOBgQAaU137\ -j53rvSjlmYZpZ4RWTP7EdD6fl5ZxBeXHytN6DQL33H0eD7OFHt+ofc7E6D7keubl\ -UfCu+jOvt/MvvPUmtCI9yXZ0dNC4sjyETv+wQpxO0UNZwOM4uegdCzlo6Bi3pD4/\ -KKLdMkWuUfuPBmoammny74lZaOVr5deKXztTuCI0Eh8IsNsGEhl2qRSVYIoDyPul\ -6RMbTSzv4tVhVfGZqIisGLLhxYsFKgtVbml0VGVzdFR3byqAAXHuo4nZEPniLpkd\ -y30TkwBxVgprWJ18a9z/7Py35Qss/JMbOXbnBhJtmJCdIowHRI0aa+zqt3KKKAXi\ -mm+V4seMgxTcxMS+eDDkiTcB/RtWWSyRcS2ANjFeY0T4SLMwiCL9qWPi03hr8j96\ -tejrSPOBNSJ3Mi/q5u2Yl4gJZY2b\ -"; - -// -// 10-long certificate chain, all intermediates valid -// -const char* paymentrequest3_cert1_BASE64 = -"\ -Egt4NTA5K3NoYTI1Nhq8JAr/AzCCAfswggFkoAMCAQICAQEwDQYJKoZIhvcNAQEL\ -BQAwPzEUMBIGA1UEAwwLdGVzdGNhOC5vcmcxJzAlBgNVBAoMHlBheW1lbnQgUmVx\ -dWVzdCBJbnRlcm1lZGlhdGUgODAeFw0xMzAyMjMyMjQyMzFaFw0yMzAyMjEyMjQy\ -MzFaMDYxGjAYBgNVBAMMEXRlc3RtZXJjaGFudDgub3JnMRgwFgYDVQQKDA9UZXN0\ -IE1lcmNoYW50IDgwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMMCHA3hiHbS\ -TKZ5K9jHRwE8NxkGp3IOx56PDB2diNkldG8XweTcRq7bBm7pdiBt4IVggtfs+6hE\ -hDYIOecyoAnVzPFTdvQ7KQdQ/fD9YLe6lk+o0edOqutPMyrxLFjSluXxEQyk7fdt\ -URloMMYfp3p1/hFCboA1rAsQ2RW38hR5AgMBAAGjEDAOMAwGA1UdEwQFMAMBAf8w\ -DQYJKoZIhvcNAQELBQADgYEAPsdFatnc2RJSpvZsw+nCiPVsllycw5ELglq9vfJz\ -nJJucRxgzmqI2iuas1ugwbXn0BEIRLK7vMF/qBzQR6M/nTxttah+KEu+okjps9vJ\ -cIyhfTyGPC5xkHaHZ7sG+UHOFhPw0/kXn0x+pbVgBZ5315axqcp1R+DTSj/whMAr\ -n0AKiAQwggIEMIIBbaADAgECAgECMA0GCSqGSIb3DQEBCwUAMD8xFDASBgNVBAMM\ -C3Rlc3RjYTcub3JnMScwJQYDVQQKDB5QYXltZW50IFJlcXVlc3QgSW50ZXJtZWRp\ -YXRlIDcwHhcNMTMwMjIzMjI0MjMxWhcNMjMwMjIxMjI0MjMxWjA/MRQwEgYDVQQD\ -DAt0ZXN0Y2E4Lm9yZzEnMCUGA1UECgweUGF5bWVudCBSZXF1ZXN0IEludGVybWVk\ -aWF0ZSA4MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDexUFfxb1sThvabp7u\ -dZz59ciThGmmAW0nP4tjrgEACgvWIInr2dZpTHbiQNF34ycsk0le1JD93D7Qb8rd\ -25OrpaO8XS2Li2zjR9cleixXjSLwV/zv8zJ8yPl/27XL++PDTKBXVpJ8/Syp+9Ty\ -plV1BqDhqtIHb/QSHEkTQXjeYQIDAQABoxAwDjAMBgNVHRMEBTADAQH/MA0GCSqG\ -SIb3DQEBCwUAA4GBACMooQVbkbIZ2DaPwHDc4ULwguG3VI2Kzj50UdExmHtzm2S4\ -MQei+n+HEPjtJAx5OY520+10nfuP+12H2DRLQmWmdvDpeQ/Cv0yavlw4ZRejRFo7\ -KS83C0wo5rd+qTvvOmAN4UTArWkzYcEUulPdiXnRamb0WQHTeVdIbHVkMormCogE\ -MIICBDCCAW2gAwIBAgIBAjANBgkqhkiG9w0BAQsFADA/MRQwEgYDVQQDDAt0ZXN0\ -Y2E2Lm9yZzEnMCUGA1UECgweUGF5bWVudCBSZXF1ZXN0IEludGVybWVkaWF0ZSA2\ -MB4XDTEzMDIyMzIyNDIzMVoXDTIzMDIyMTIyNDIzMVowPzEUMBIGA1UEAwwLdGVz\ -dGNhNy5vcmcxJzAlBgNVBAoMHlBheW1lbnQgUmVxdWVzdCBJbnRlcm1lZGlhdGUg\ -NzCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtjBRazrkebXAhXsbjimrMIRm\ -W/f9SwAHwXfc042keNtl0t2z6XE6UPcR2v/KrssXuCZgodeYxz6IM6lWosCM1xot\ -C3ChKKFBfVO30reuKBRUxXfKAFqxaG0YOAEzdZkkY9AGhqWloeSmgxpIfhInU0EF\ -JjCwrJ6IkijBatGoAAECAwEAAaMQMA4wDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0B\ -AQsFAAOBgQDBRTi1MolmOA0niHYX0A2lN5QWHkCfX0A7GwyoMA3dvM45m/NYd4WB\ -X+HwfnfYcI6X9jOgNo5OWmc4GGsld0HlxwMYEKISBS9PbSHPBrb3TBOlw5ztQpXZ\ -91+bOhLux52Fr03sK7v9qExmBM12M8UR2ltpzAMiUgLLMHyPfiWkvQqIBDCCAgQw\ -ggFtoAMCAQICAQIwDQYJKoZIhvcNAQELBQAwPzEUMBIGA1UEAwwLdGVzdGNhNS5v\ -cmcxJzAlBgNVBAoMHlBheW1lbnQgUmVxdWVzdCBJbnRlcm1lZGlhdGUgNTAeFw0x\ -MzAyMjMyMjQyMzBaFw0yMzAyMjEyMjQyMzBaMD8xFDASBgNVBAMMC3Rlc3RjYTYu\ -b3JnMScwJQYDVQQKDB5QYXltZW50IFJlcXVlc3QgSW50ZXJtZWRpYXRlIDYwgZ8w\ -DQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANJSH3xivX1t9olIdHsznI1aE9SD7t9i\ -SZJsIB0otoETHZRVv9M9LvyzBNK98ZV+kTOlST7PJgC0d9BQM9sgYApSRq5oqKDM\ -9FXbOm/yaReAbU3mkFNFw5roTlJ5ThEy0yOGT/DS0YBRaGIvRPRj2DiqDVdCZZ+w\ -4jo1IYHkZt4FAgMBAAGjEDAOMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQAD\ -gYEATm6+J1OmbrothO60xALKonWMBKr6hudb4amkFBqKbA9wMeM3jl+I/yKfz/Uf\ -xWuJ071IhiNv6Gxx5YwNvhUe1xMhUqHv0gpyK1Z47bD+kYS2se5sWNPNo3Y9qZDG\ -IXiGQxwHmrzaFk79Uy1xsmvsEz42w6hr25Yaw7HkIgrFveoKiAQwggIEMIIBbaAD\ -AgECAgECMA0GCSqGSIb3DQEBCwUAMD8xFDASBgNVBAMMC3Rlc3RjYTQub3JnMScw\ -JQYDVQQKDB5QYXltZW50IFJlcXVlc3QgSW50ZXJtZWRpYXRlIDQwHhcNMTMwMjIz\ -MjI0MjMwWhcNMjMwMjIxMjI0MjMwWjA/MRQwEgYDVQQDDAt0ZXN0Y2E1Lm9yZzEn\ -MCUGA1UECgweUGF5bWVudCBSZXF1ZXN0IEludGVybWVkaWF0ZSA1MIGfMA0GCSqG\ -SIb3DQEBAQUAA4GNADCBiQKBgQC7vVUFpxHzz2Tr/xij3k58s8d/BPA0R6D5RXTV\ -vmhAzc1Zuin4zUKRFs/aCj/0yED8Wu/COfNGF4tVlRNMdl9EcFsxa8XGEL4eAZa+\ -H/rOHH+7/1EINrrVWhZlUecyhilN8jmCZmqEM3ecuD0NAViqyMrgmaiFmsLoQZpE\ -GepDUQIDAQABoxAwDjAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBCwUAA4GBAEdJ\ -Ss8jWiooja3WZzHXeF95QkBJNjIlpDLGcpl4opOYLSuEl9Uxp//LaQQiXuzpj4/I\ -pkWGQmMy5HOyH1lqDyiMgXpcG8PE0jEQAoEUGZ0QEqB1mZ6BCrYvmUuf/5aSVd8Y\ -6lKMR3WzFDYU9Zy0nzuHB/3nvp6MeDRQeRMtYvz4CogEMIICBDCCAW2gAwIBAgIB\ -AjANBgkqhkiG9w0BAQsFADA/MRQwEgYDVQQDDAt0ZXN0Y2EzLm9yZzEnMCUGA1UE\ -CgweUGF5bWVudCBSZXF1ZXN0IEludGVybWVkaWF0ZSAzMB4XDTEzMDIyMzIyNDIy\ -OVoXDTIzMDIyMTIyNDIyOVowPzEUMBIGA1UEAwwLdGVzdGNhNC5vcmcxJzAlBgNV\ -BAoMHlBheW1lbnQgUmVxdWVzdCBJbnRlcm1lZGlhdGUgNDCBnzANBgkqhkiG9w0B\ -AQEFAAOBjQAwgYkCgYEAxYYo3w2UXiYg6O8b4QgwN/vgreTkiW122Ep/z2TiDrhV\ -MhfOOiKdwYESPflfnXnVaQQzCGexYTQqsvqvzHSyna5hL0zPTRJxSKmTVrXRsWtp\ -dCRhjxCGipS3tlQBDi7vb+7SNRIBK4dBjjGzALNk7gMCpy+yM8f6I043jTlmGb0C\ -AwEAAaMQMA4wDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOBgQDU+IQxt3Oh\ -KqaUYWC23+cB2gekvWqwMBnrCNrX/Dp+kjoJKUoR2Fs3qw53raHES4SIhpGT9l9l\ -rppNQgFe/JMHeYqOZMZO+6kuU0olJanBJ14tPIc7zlMTQ9OfmZ6v07IpyFbsQDtR\ -hpe80DpuvSFPfJ4fh0WrQf6kn3KDVpGDnAqIBDCCAgQwggFtoAMCAQICAQIwDQYJ\ -KoZIhvcNAQELBQAwPzEUMBIGA1UEAwwLdGVzdGNhMi5vcmcxJzAlBgNVBAoMHlBh\ -eW1lbnQgUmVxdWVzdCBJbnRlcm1lZGlhdGUgMjAeFw0xMzAyMjMyMjQyMjlaFw0y\ -MzAyMjEyMjQyMjlaMD8xFDASBgNVBAMMC3Rlc3RjYTMub3JnMScwJQYDVQQKDB5Q\ -YXltZW50IFJlcXVlc3QgSW50ZXJtZWRpYXRlIDMwgZ8wDQYJKoZIhvcNAQEBBQAD\ -gY0AMIGJAoGBANzgVP99Qg98e6NsKEz1v5KqRB7NTBRRsYnBvb/TSWipvMQaCYuE\ -yk1xG57x++QuASKeR3QHRQJOoAhQaj9JLUhSSv9GQ5PrFLLsOFv7L1tpzXHh2dOB\ -IW92X2yFRW2s39q+Q21yvN+N8uoKdqXhzRA+dDoXh3cavaVeHX1G+IrlAgMBAAGj\ -EDAOMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADgYEASTwg84cX+1UhOG9s\ -ejFV3m34QuI1hPZ+qhqVJlRYUtego8Wng1BburDSwqVAv4ch2wi3c2s4e8J7AXyL\ -tzSbSQG4RN0oZi0mR8EtTTN+Mix/hBIk79dMZg85+I29uFA6Zj2d9oAhQv2qkHhc\ -6tcaheNvkQRlCyH68k3iF1Fqf+4KiAQwggIEMIIBbaADAgECAgECMA0GCSqGSIb3\ -DQEBCwUAMD8xFDASBgNVBAMMC3Rlc3RjYTEub3JnMScwJQYDVQQKDB5QYXltZW50\ -IFJlcXVlc3QgSW50ZXJtZWRpYXRlIDEwHhcNMTMwMjIzMjI0MjI5WhcNMjMwMjIx\ -MjI0MjI5WjA/MRQwEgYDVQQDDAt0ZXN0Y2EyLm9yZzEnMCUGA1UECgweUGF5bWVu\ -dCBSZXF1ZXN0IEludGVybWVkaWF0ZSAyMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCB\ -iQKBgQDaV8zhfyQuSf/f+fauMfgs3g/RnWy9yxxUkvQneQQPH3uZzCyk3A6q72ip\ -TtwNqiibG9455L9A7SaUjGtnpUz0NKT/VWUdqbfCl1PqXjEZbDobbAQ5hxLGOTyL\ -RQhLIcgeq2/BnmeCqHsC4md04nUp+nBo1HwKyygvK+9sMbCp/wIDAQABoxAwDjAM\ -BgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBCwUAA4GBACvYyE+PPmWFkbjyRu9LAt8D\ -crtyYYLRClKSg6tVvutwukLG2l//kDOohYkJtgTqr6LnCIIIwYdXN+4wxugmw4cn\ -PIZmP6kovxjhhVM95okilor1zniTAo3RN7JDIfTGNgxLdGu1btt7DOFL4zTbeSJM\ -b8M1JpPftehH+x/VLyuUCuoDMIIB5jCCAU+gAwIBAgIBBTANBgkqhkiG9w0BAQsF\ -ADAhMR8wHQYDVQQDExZQYXltZW50UmVxdWVzdCBUZXN0IENBMB4XDTEzMDIyMzIy\ -NDIyOFoXDTIzMDIyMTIyNDIyOFowPzEUMBIGA1UEAwwLdGVzdGNhMS5vcmcxJzAl\ -BgNVBAoMHlBheW1lbnQgUmVxdWVzdCBJbnRlcm1lZGlhdGUgMTCBnzANBgkqhkiG\ -9w0BAQEFAAOBjQAwgYkCgYEAo5Vy9H3nA/OOkF5Ap89yfVNSiTay/LYCaB0eALpc\ -U690U75O9Q3w2M+2AN8wpbbHsJHZMIjEeBRoQfjlYXW1ucQTxWKyT+liu0D25mGX\ -X27CBXBd4iXTxVII/iX+u3lcjORjoHOBy7QgeIDIIS9y0vYu8eArpjh7m4thrVgI\ -RtMCAwEAAaMQMA4wDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOBgQB9LKcV\ -JK9sjASNzpQlpUp7nCiw5FSjVY+XMRIKK/kavzlKjZ+InsmmyRVGjDoZi9GrqG9P\ -VHgLBxi2VtVjmokZoNPqao3OfhqORAubC+JR/JLepM7aDaxDdTHVhSUk4lgNAvi2\ -6dGY7nZMsnHlPQ2tPp/HvRRiMq1oDjlylc8VTCI2Eh8IsNsGEhl2qRSVYIoDyPul\ -6RMbTSzv4tVhVfGZqIisGLLhxYsFKg1Vbml0VGVzdFRocmVlKoABn2HTsUQtMNI4\ -yNvkfkFNka3pRvTUTydJrvyfmEeLzImfM1BWddZjnywku9RToNFZZNgow5QnljmF\ -chhR/aHOuEMTxmc12K4rNlgYtHCsxLP9zd+6u0cva3TucZ6EzS8PKEib/+r12/52\ -664NuWA9WtsK7QCFrK2K95PnVCRmWl0=\ -"; - -// -// Long certificate chain, with an expired certificate in the middle -// -const char* paymentrequest4_cert1_BASE64 = -"\ -Egt4NTA5K3NoYTI1NhqeJAr/AzCCAfswggFkoAMCAQICAQEwDQYJKoZIhvcNAQEL\ -BQAwPzEUMBIGA1UEAwwLdGVzdGNhOC5vcmcxJzAlBgNVBAoMHlBheW1lbnQgUmVx\ -dWVzdCBJbnRlcm1lZGlhdGUgODAeFw0xMzAyMjMyMjQyMzFaFw0yMzAyMjEyMjQy\ -MzFaMDYxGjAYBgNVBAMMEXRlc3RtZXJjaGFudDgub3JnMRgwFgYDVQQKDA9UZXN0\ -IE1lcmNoYW50IDgwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMMCHA3hiHbS\ -TKZ5K9jHRwE8NxkGp3IOx56PDB2diNkldG8XweTcRq7bBm7pdiBt4IVggtfs+6hE\ -hDYIOecyoAnVzPFTdvQ7KQdQ/fD9YLe6lk+o0edOqutPMyrxLFjSluXxEQyk7fdt\ -URloMMYfp3p1/hFCboA1rAsQ2RW38hR5AgMBAAGjEDAOMAwGA1UdEwQFMAMBAf8w\ -DQYJKoZIhvcNAQELBQADgYEAPsdFatnc2RJSpvZsw+nCiPVsllycw5ELglq9vfJz\ -nJJucRxgzmqI2iuas1ugwbXn0BEIRLK7vMF/qBzQR6M/nTxttah+KEu+okjps9vJ\ -cIyhfTyGPC5xkHaHZ7sG+UHOFhPw0/kXn0x+pbVgBZ5315axqcp1R+DTSj/whMAr\ -n0AKiAQwggIEMIIBbaADAgECAgECMA0GCSqGSIb3DQEBCwUAMD8xFDASBgNVBAMM\ -C3Rlc3RjYTcub3JnMScwJQYDVQQKDB5QYXltZW50IFJlcXVlc3QgSW50ZXJtZWRp\ -YXRlIDcwHhcNMTMwMjIzMjI0MjMxWhcNMjMwMjIxMjI0MjMxWjA/MRQwEgYDVQQD\ -DAt0ZXN0Y2E4Lm9yZzEnMCUGA1UECgweUGF5bWVudCBSZXF1ZXN0IEludGVybWVk\ -aWF0ZSA4MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDexUFfxb1sThvabp7u\ -dZz59ciThGmmAW0nP4tjrgEACgvWIInr2dZpTHbiQNF34ycsk0le1JD93D7Qb8rd\ -25OrpaO8XS2Li2zjR9cleixXjSLwV/zv8zJ8yPl/27XL++PDTKBXVpJ8/Syp+9Ty\ -plV1BqDhqtIHb/QSHEkTQXjeYQIDAQABoxAwDjAMBgNVHRMEBTADAQH/MA0GCSqG\ -SIb3DQEBCwUAA4GBACMooQVbkbIZ2DaPwHDc4ULwguG3VI2Kzj50UdExmHtzm2S4\ -MQei+n+HEPjtJAx5OY520+10nfuP+12H2DRLQmWmdvDpeQ/Cv0yavlw4ZRejRFo7\ -KS83C0wo5rd+qTvvOmAN4UTArWkzYcEUulPdiXnRamb0WQHTeVdIbHVkMormCogE\ -MIICBDCCAW2gAwIBAgIBAjANBgkqhkiG9w0BAQsFADA/MRQwEgYDVQQDDAt0ZXN0\ -Y2E2Lm9yZzEnMCUGA1UECgweUGF5bWVudCBSZXF1ZXN0IEludGVybWVkaWF0ZSA2\ -MB4XDTEzMDIyMzIyNDIzMVoXDTIzMDIyMTIyNDIzMVowPzEUMBIGA1UEAwwLdGVz\ -dGNhNy5vcmcxJzAlBgNVBAoMHlBheW1lbnQgUmVxdWVzdCBJbnRlcm1lZGlhdGUg\ -NzCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtjBRazrkebXAhXsbjimrMIRm\ -W/f9SwAHwXfc042keNtl0t2z6XE6UPcR2v/KrssXuCZgodeYxz6IM6lWosCM1xot\ -C3ChKKFBfVO30reuKBRUxXfKAFqxaG0YOAEzdZkkY9AGhqWloeSmgxpIfhInU0EF\ -JjCwrJ6IkijBatGoAAECAwEAAaMQMA4wDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0B\ -AQsFAAOBgQDBRTi1MolmOA0niHYX0A2lN5QWHkCfX0A7GwyoMA3dvM45m/NYd4WB\ -X+HwfnfYcI6X9jOgNo5OWmc4GGsld0HlxwMYEKISBS9PbSHPBrb3TBOlw5ztQpXZ\ -91+bOhLux52Fr03sK7v9qExmBM12M8UR2ltpzAMiUgLLMHyPfiWkvQqIBDCCAgQw\ -ggFtoAMCAQICAQIwDQYJKoZIhvcNAQELBQAwPzEUMBIGA1UEAwwLdGVzdGNhNS5v\ -cmcxJzAlBgNVBAoMHlBheW1lbnQgUmVxdWVzdCBJbnRlcm1lZGlhdGUgNTAeFw0x\ -MzAyMjMyMjQyMzBaFw0yMzAyMjEyMjQyMzBaMD8xFDASBgNVBAMMC3Rlc3RjYTYu\ -b3JnMScwJQYDVQQKDB5QYXltZW50IFJlcXVlc3QgSW50ZXJtZWRpYXRlIDYwgZ8w\ -DQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANJSH3xivX1t9olIdHsznI1aE9SD7t9i\ -SZJsIB0otoETHZRVv9M9LvyzBNK98ZV+kTOlST7PJgC0d9BQM9sgYApSRq5oqKDM\ -9FXbOm/yaReAbU3mkFNFw5roTlJ5ThEy0yOGT/DS0YBRaGIvRPRj2DiqDVdCZZ+w\ -4jo1IYHkZt4FAgMBAAGjEDAOMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQAD\ -gYEATm6+J1OmbrothO60xALKonWMBKr6hudb4amkFBqKbA9wMeM3jl+I/yKfz/Uf\ -xWuJ071IhiNv6Gxx5YwNvhUe1xMhUqHv0gpyK1Z47bD+kYS2se5sWNPNo3Y9qZDG\ -IXiGQxwHmrzaFk79Uy1xsmvsEz42w6hr25Yaw7HkIgrFveoK6gMwggHmMIIBT6AD\ -AgECAgEGMA0GCSqGSIb3DQEBCwUAMCExHzAdBgNVBAMTFlBheW1lbnRSZXF1ZXN0\ -IFRlc3QgQ0EwHhcNMTMwMjIzMjI1OTUxWhcNMTMwMjI0MjI1OTUxWjA/MRQwEgYD\ -VQQDDAt0ZXN0Y2E1Lm9yZzEnMCUGA1UECgweUGF5bWVudCBSZXF1ZXN0IEludGVy\ -bWVkaWF0ZSA1MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC7vVUFpxHzz2Tr\ -/xij3k58s8d/BPA0R6D5RXTVvmhAzc1Zuin4zUKRFs/aCj/0yED8Wu/COfNGF4tV\ -lRNMdl9EcFsxa8XGEL4eAZa+H/rOHH+7/1EINrrVWhZlUecyhilN8jmCZmqEM3ec\ -uD0NAViqyMrgmaiFmsLoQZpEGepDUQIDAQABoxAwDjAMBgNVHRMEBTADAQH/MA0G\ -CSqGSIb3DQEBCwUAA4GBAEmcUEnhua/oiXy1fwScLgMqt+jk9mHRpE6SVsIop23Q\ -CY2JfpG6RxhMMzzzhGklEGN6cxG0HCi6B3HJx6PYrFEfTB0rW4K6m0Tvx3WpS9mN\ -uoEuJHLy18ausI/sYAPDHCL+SfBVcqorpaIG2sSpZouRBjRHAyqFAYlwlW87uq5n\ -CogEMIICBDCCAW2gAwIBAgIBAjANBgkqhkiG9w0BAQsFADA/MRQwEgYDVQQDDAt0\ -ZXN0Y2EzLm9yZzEnMCUGA1UECgweUGF5bWVudCBSZXF1ZXN0IEludGVybWVkaWF0\ -ZSAzMB4XDTEzMDIyMzIyNDIyOVoXDTIzMDIyMTIyNDIyOVowPzEUMBIGA1UEAwwL\ -dGVzdGNhNC5vcmcxJzAlBgNVBAoMHlBheW1lbnQgUmVxdWVzdCBJbnRlcm1lZGlh\ -dGUgNDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAxYYo3w2UXiYg6O8b4Qgw\ -N/vgreTkiW122Ep/z2TiDrhVMhfOOiKdwYESPflfnXnVaQQzCGexYTQqsvqvzHSy\ -na5hL0zPTRJxSKmTVrXRsWtpdCRhjxCGipS3tlQBDi7vb+7SNRIBK4dBjjGzALNk\ -7gMCpy+yM8f6I043jTlmGb0CAwEAAaMQMA4wDAYDVR0TBAUwAwEB/zANBgkqhkiG\ -9w0BAQsFAAOBgQDU+IQxt3OhKqaUYWC23+cB2gekvWqwMBnrCNrX/Dp+kjoJKUoR\ -2Fs3qw53raHES4SIhpGT9l9lrppNQgFe/JMHeYqOZMZO+6kuU0olJanBJ14tPIc7\ -zlMTQ9OfmZ6v07IpyFbsQDtRhpe80DpuvSFPfJ4fh0WrQf6kn3KDVpGDnAqIBDCC\ -AgQwggFtoAMCAQICAQIwDQYJKoZIhvcNAQELBQAwPzEUMBIGA1UEAwwLdGVzdGNh\ -Mi5vcmcxJzAlBgNVBAoMHlBheW1lbnQgUmVxdWVzdCBJbnRlcm1lZGlhdGUgMjAe\ -Fw0xMzAyMjMyMjQyMjlaFw0yMzAyMjEyMjQyMjlaMD8xFDASBgNVBAMMC3Rlc3Rj\ -YTMub3JnMScwJQYDVQQKDB5QYXltZW50IFJlcXVlc3QgSW50ZXJtZWRpYXRlIDMw\ -gZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANzgVP99Qg98e6NsKEz1v5KqRB7N\ -TBRRsYnBvb/TSWipvMQaCYuEyk1xG57x++QuASKeR3QHRQJOoAhQaj9JLUhSSv9G\ -Q5PrFLLsOFv7L1tpzXHh2dOBIW92X2yFRW2s39q+Q21yvN+N8uoKdqXhzRA+dDoX\ -h3cavaVeHX1G+IrlAgMBAAGjEDAOMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEL\ -BQADgYEASTwg84cX+1UhOG9sejFV3m34QuI1hPZ+qhqVJlRYUtego8Wng1BburDS\ -wqVAv4ch2wi3c2s4e8J7AXyLtzSbSQG4RN0oZi0mR8EtTTN+Mix/hBIk79dMZg85\ -+I29uFA6Zj2d9oAhQv2qkHhc6tcaheNvkQRlCyH68k3iF1Fqf+4KiAQwggIEMIIB\ -baADAgECAgECMA0GCSqGSIb3DQEBCwUAMD8xFDASBgNVBAMMC3Rlc3RjYTEub3Jn\ -MScwJQYDVQQKDB5QYXltZW50IFJlcXVlc3QgSW50ZXJtZWRpYXRlIDEwHhcNMTMw\ -MjIzMjI0MjI5WhcNMjMwMjIxMjI0MjI5WjA/MRQwEgYDVQQDDAt0ZXN0Y2EyLm9y\ -ZzEnMCUGA1UECgweUGF5bWVudCBSZXF1ZXN0IEludGVybWVkaWF0ZSAyMIGfMA0G\ -CSqGSIb3DQEBAQUAA4GNADCBiQKBgQDaV8zhfyQuSf/f+fauMfgs3g/RnWy9yxxU\ -kvQneQQPH3uZzCyk3A6q72ipTtwNqiibG9455L9A7SaUjGtnpUz0NKT/VWUdqbfC\ -l1PqXjEZbDobbAQ5hxLGOTyLRQhLIcgeq2/BnmeCqHsC4md04nUp+nBo1HwKyygv\ -K+9sMbCp/wIDAQABoxAwDjAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBCwUAA4GB\ -ACvYyE+PPmWFkbjyRu9LAt8DcrtyYYLRClKSg6tVvutwukLG2l//kDOohYkJtgTq\ -r6LnCIIIwYdXN+4wxugmw4cnPIZmP6kovxjhhVM95okilor1zniTAo3RN7JDIfTG\ -NgxLdGu1btt7DOFL4zTbeSJMb8M1JpPftehH+x/VLyuUCuoDMIIB5jCCAU+gAwIB\ -AgIBBTANBgkqhkiG9w0BAQsFADAhMR8wHQYDVQQDExZQYXltZW50UmVxdWVzdCBU\ -ZXN0IENBMB4XDTEzMDIyMzIyNDIyOFoXDTIzMDIyMTIyNDIyOFowPzEUMBIGA1UE\ -AwwLdGVzdGNhMS5vcmcxJzAlBgNVBAoMHlBheW1lbnQgUmVxdWVzdCBJbnRlcm1l\ -ZGlhdGUgMTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAo5Vy9H3nA/OOkF5A\ -p89yfVNSiTay/LYCaB0eALpcU690U75O9Q3w2M+2AN8wpbbHsJHZMIjEeBRoQfjl\ -YXW1ucQTxWKyT+liu0D25mGXX27CBXBd4iXTxVII/iX+u3lcjORjoHOBy7QgeIDI\ -IS9y0vYu8eArpjh7m4thrVgIRtMCAwEAAaMQMA4wDAYDVR0TBAUwAwEB/zANBgkq\ -hkiG9w0BAQsFAAOBgQB9LKcVJK9sjASNzpQlpUp7nCiw5FSjVY+XMRIKK/kavzlK\ -jZ+InsmmyRVGjDoZi9GrqG9PVHgLBxi2VtVjmokZoNPqao3OfhqORAubC+JR/JLe\ -pM7aDaxDdTHVhSUk4lgNAvi26dGY7nZMsnHlPQ2tPp/HvRRiMq1oDjlylc8VTCI1\ -Eh8IsNsGEhl2qRSVYIoDyPul6RMbTSzv4tVhVfGZqIisGLLhxYsFKgxVbml0VGVz\ -dEZvdXIqgAEBE1PP93Tkpif35F+dYmXn9kLA/1djcPjCs2o2rwRMM4Uk356O5dgu\ -HXQjsfdR58qZQS9CS5DAtRUf0R8+43/wijO/hb49VNaNXmY+/cPHMkahP2aV3tZi\ -FAyZblLik9A7ZvF+UsjeFQiHB5wzWQvbqk5wQ4yabHIXoYv/E0q+eQ==\ -"; - -// -// Validly signed, but by a CA not in our root CA list -// -const char* paymentrequest5_cert1_BASE64 = -"\ -Egt4NTA5K3NoYTI1NhrxAwruAzCCAeowggFToAMCAQICAQEwDQYJKoZIhvcNAQEL\ -BQAwITEfMB0GA1UEAxMWUGF5bWVudFJlcXVlc3QgVGVzdCBDQTAeFw0xMzA0MTkx\ -NzIwMDZaFw0yMzA0MTcxNzIwMDZaMEMxGTAXBgNVBAMMEHRlc3RtZXJjaGFudC5v\ -cmcxJjAkBgNVBAoMHVBheW1lbnQgUmVxdWVzdCBUZXN0IE1lcmNoYW50MIGfMA0G\ -CSqGSIb3DQEBAQUAA4GNADCBiQKBgQDhV6Yn47aEEmbl50YLvXoqGEJA51I/40wr\ -Z6VQGdXYaRqYktagrWDlgYY9h0JQ1bQhm8HgW7ju0R4NaDTXUqxg4HjprF0z3Mfm\ -/6mmebkLOOptfkVD7ceAteNI7cyuqWGIAZA7D9mV97mXoCAtTlBUycvkmoiClCCS\ -h0EpF/UTaQIDAQABoxAwDjAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBCwUAA4GB\ -AGIRwW7I0QvLga+RnJoJSZNZQbtu4rQW3xmoz8WfZMBYXX3QBYg5ftycbdK+/IbP\ -qozfjGW2AS6DNArvpveSPDTK9+GJBNo1paiNtVqwXkC3Ddscv5AIms1eZGiIOQNC\ -mUvdLkpoXo48WAer3EGsZ3B15GyNEELc0q9W5yUebba1IjUSHwiw2wYSGXapFJVg\ -igPI+6XpExtNLO/i1WFV8ZmoiKwYuPvFiwUqDFVuaXRUZXN0Rml2ZSqAAXdsMgdG\ -ssymvca1S/1KeM3n8Ydi2fi1JUzAAr59xPvNJRUeqCLP9upHn5z7br3P12Oz9A20\ -5/4wL4ClPRPVnOHgij0bEg+y0tGESqmF1rfOfXDszlo2U92wCxS07kq79YAZJ1Zo\ -XYh860/Q4wvc7lfiTe+dXBzPKAKhMy91yETY\ -"; - -// -// Contains a testnet paytoaddress, so payment request network doesn't match client network -// -const char* paymentrequest1_cert2_BASE64 = -"\ -Egt4NTA5K3NoYTI1NhrQBArNBDCCAkkwggExoAMCAQICAQEwDQYJKoZIhvcNAQEL\ -BQAwITEfMB0GA1UEAwwWUGF5bWVudFJlcXVlc3QgVGVzdCBDQTAeFw0xNTAxMTEx\ -ODIxMDhaFw0yNTAxMDgxODIxMDhaMCExHzAdBgNVBAMMFlBheW1lbnRSZXF1ZXN0\ -IFRlc3QgQ0EwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMsZqzkzeBGo+i2N\ -mUak3Ciodr1V7S062VOy7N0OQYNDQHYkgDFAUET7cEb5VJaHPv5m3ppTBpU9xBcf\ -wbHHUt4VjA+mhRmYrl1khjvZM+X8kEqvWn20BtcM9R6r0yIYec8UERDDHBleL/P8\ -RkxEnVLjYTV9zigCXfMsgYb3EQShAgMBAAGjEDAOMAwGA1UdEwQFMAMBAf8wDQYJ\ -KoZIhvcNAQELBQADggEBABUJpl3QCqsoDSxAsQdV6zKT4VGV76AzoGj7etQsQY+r\ -+S26VfWh/fMobEzuxFChr0USgLJ6FoK78hAtoZvt1lrye9yqFv/ig3WLWsJKWHHb\ -3RT6oR03CIwZXFSUasi08QDVLxafwsU5OMcPLucF3a1lRL1ccYrNgVCCx1+X7Bos\ -tIgDGRQQ4AyoHTcfVd2hEGeUv7k14mOxFsAp6851yosHq9Q2kwmdH+rHEJbjof87\ -yyKLagc4owyXBZYkQmkeHWCNqnuRmO5vUsfVb0UUrkD64o7Th/NjwooA7SCiUXl6\ -dfygT1b7ggpx7GC+sP2DsIM47IAZ55drjqX5u2f+Ba0iPQoEdGVzdBIhCIDWwowE\ -Ehl2qRQErGqUUwSsaMpDvWIaGnJGNQqi8oisGNeMy6UFKgxKdXN0IFRlc3Rpbmcq\ -gAFwThsozZxkZxzCn4R8WxNiLFV6m0ye9fEtSbolfaW+EjBMpO03lr/dwNnrclhg\ -ew+A05xfZztrAt16XKEY7qKJ/eY2nLd0fVAIu/nIt+7/VYVXT83zLrWc150aRS7W\ -AdJbL3JOJLs6Eyp5zrPbfI8faRttFAdONKDrJgIpuW1E3g==\ -"; - -// -// Expired payment request (expires is set to 1 = 1970-01-01 00:00:01) -// -const char* paymentrequest2_cert2_BASE64 = -"\ -Egt4NTA5K3NoYTI1NhrQBArNBDCCAkkwggExoAMCAQICAQEwDQYJKoZIhvcNAQEL\ -BQAwITEfMB0GA1UEAwwWUGF5bWVudFJlcXVlc3QgVGVzdCBDQTAeFw0xNTAxMTEx\ -ODIxMDhaFw0yNTAxMDgxODIxMDhaMCExHzAdBgNVBAMMFlBheW1lbnRSZXF1ZXN0\ -IFRlc3QgQ0EwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMsZqzkzeBGo+i2N\ -mUak3Ciodr1V7S062VOy7N0OQYNDQHYkgDFAUET7cEb5VJaHPv5m3ppTBpU9xBcf\ -wbHHUt4VjA+mhRmYrl1khjvZM+X8kEqvWn20BtcM9R6r0yIYec8UERDDHBleL/P8\ -RkxEnVLjYTV9zigCXfMsgYb3EQShAgMBAAGjEDAOMAwGA1UdEwQFMAMBAf8wDQYJ\ -KoZIhvcNAQELBQADggEBABUJpl3QCqsoDSxAsQdV6zKT4VGV76AzoGj7etQsQY+r\ -+S26VfWh/fMobEzuxFChr0USgLJ6FoK78hAtoZvt1lrye9yqFv/ig3WLWsJKWHHb\ -3RT6oR03CIwZXFSUasi08QDVLxafwsU5OMcPLucF3a1lRL1ccYrNgVCCx1+X7Bos\ -tIgDGRQQ4AyoHTcfVd2hEGeUv7k14mOxFsAp6851yosHq9Q2kwmdH+rHEJbjof87\ -yyKLagc4owyXBZYkQmkeHWCNqnuRmO5vUsfVb0UUrkD64o7Th/NjwooA7SCiUXl6\ -dfygT1b7ggpx7GC+sP2DsIM47IAZ55drjqX5u2f+Ba0iQgoEdGVzdBIgCICt4gQS\ -GXapFASsapRTBKxoykO9YhoackY1CqLyiKwYiNLUpQUgASoQVGVzdGluZyB0ZXN0\ -bmV0ISqAATXq9A5nmJgtmee/bQTeHeif4w1YYFPBlKghwx6qbVgXTWnwBJtOQhhV\ -sZdzbTl95ENR7/Y7VJupW9kDWobCK7zUUhLAzUlwmLlcx6itHw8LTUF5HK+AwsZm\ -Zs85lISGvOS0NZW/ENa6l+oQRnL87oqVZr/EDGiuqjz6T0ThQi0l\ -"; - -// -// Unexpired payment request (expires is set to 0x7FFFFFFFFFFFFFFF = max. int64_t) -// -const char* paymentrequest3_cert2_BASE64 = -"\ -Egt4NTA5K3NoYTI1NhrQBArNBDCCAkkwggExoAMCAQICAQEwDQYJKoZIhvcNAQEL\ -BQAwITEfMB0GA1UEAwwWUGF5bWVudFJlcXVlc3QgVGVzdCBDQTAeFw0xNTAxMTEx\ -ODIxMDhaFw0yNTAxMDgxODIxMDhaMCExHzAdBgNVBAMMFlBheW1lbnRSZXF1ZXN0\ -IFRlc3QgQ0EwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMsZqzkzeBGo+i2N\ -mUak3Ciodr1V7S062VOy7N0OQYNDQHYkgDFAUET7cEb5VJaHPv5m3ppTBpU9xBcf\ -wbHHUt4VjA+mhRmYrl1khjvZM+X8kEqvWn20BtcM9R6r0yIYec8UERDDHBleL/P8\ -RkxEnVLjYTV9zigCXfMsgYb3EQShAgMBAAGjEDAOMAwGA1UdEwQFMAMBAf8wDQYJ\ -KoZIhvcNAQELBQADggEBABUJpl3QCqsoDSxAsQdV6zKT4VGV76AzoGj7etQsQY+r\ -+S26VfWh/fMobEzuxFChr0USgLJ6FoK78hAtoZvt1lrye9yqFv/ig3WLWsJKWHHb\ -3RT6oR03CIwZXFSUasi08QDVLxafwsU5OMcPLucF3a1lRL1ccYrNgVCCx1+X7Bos\ -tIgDGRQQ4AyoHTcfVd2hEGeUv7k14mOxFsAp6851yosHq9Q2kwmdH+rHEJbjof87\ -yyKLagc4owyXBZYkQmkeHWCNqnuRmO5vUsfVb0UUrkD64o7Th/NjwooA7SCiUXl6\ -dfygT1b7ggpx7GC+sP2DsIM47IAZ55drjqX5u2f+Ba0iSgoEdGVzdBIgCICt4gQS\ -GXapFASsapRTBKxoykO9YhoackY1CqLyiKwYyNfZpQUg//////////9/KhBUZXN0\ -aW5nIHRlc3RuZXQhKoABNwi8WnMW4aMvbmvorTiiWJLFhofLFnsoWCJnj3rWLnLh\ -n3w6q/fZ26p50ERL/noxdTUfeFsKnlECkUu/fOcOrqyYDiwvxI0SZ034DleVyFU1\ -Z3T+X0zcL8oe7bX01Yf+s2V+5JXQXarKnKBrZCGgv2ARjFNSZe7E7vGg5K4Q6Q8=\ -"; - -// -// Unexpired payment request (expires is set to 0x8000000000000000 > max. int64_t, allowed uint64) -// -const char* paymentrequest4_cert2_BASE64 = -"\ -Egt4NTA5K3NoYTI1NhrQBArNBDCCAkkwggExoAMCAQICAQEwDQYJKoZIhvcNAQEL\ -BQAwITEfMB0GA1UEAwwWUGF5bWVudFJlcXVlc3QgVGVzdCBDQTAeFw0xNTAxMTEx\ -ODIxMDhaFw0yNTAxMDgxODIxMDhaMCExHzAdBgNVBAMMFlBheW1lbnRSZXF1ZXN0\ -IFRlc3QgQ0EwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMsZqzkzeBGo+i2N\ -mUak3Ciodr1V7S062VOy7N0OQYNDQHYkgDFAUET7cEb5VJaHPv5m3ppTBpU9xBcf\ -wbHHUt4VjA+mhRmYrl1khjvZM+X8kEqvWn20BtcM9R6r0yIYec8UERDDHBleL/P8\ -RkxEnVLjYTV9zigCXfMsgYb3EQShAgMBAAGjEDAOMAwGA1UdEwQFMAMBAf8wDQYJ\ -KoZIhvcNAQELBQADggEBABUJpl3QCqsoDSxAsQdV6zKT4VGV76AzoGj7etQsQY+r\ -+S26VfWh/fMobEzuxFChr0USgLJ6FoK78hAtoZvt1lrye9yqFv/ig3WLWsJKWHHb\ -3RT6oR03CIwZXFSUasi08QDVLxafwsU5OMcPLucF3a1lRL1ccYrNgVCCx1+X7Bos\ -tIgDGRQQ4AyoHTcfVd2hEGeUv7k14mOxFsAp6851yosHq9Q2kwmdH+rHEJbjof87\ -yyKLagc4owyXBZYkQmkeHWCNqnuRmO5vUsfVb0UUrkD64o7Th/NjwooA7SCiUXl6\ -dfygT1b7ggpx7GC+sP2DsIM47IAZ55drjqX5u2f+Ba0iSwoEdGVzdBIgCICt4gQS\ -GXapFASsapRTBKxoykO9YhoackY1CqLyiKwYt+HZpQUggICAgICAgICAASoQVGVz\ -dGluZyB0ZXN0bmV0ISqAAXSQG8+GFA18VaKarlYrOz293rNMIub0swKGcQm8jAGX\ -HSLaRgHfUDeEPr4hydy4dtfu59KNwe2xsHOHu/SpO4L8SrA4Dm9A7SlNBVWdcLbw\ -d2hj739GDLz0b5KuJ2SG6VknMRQM976w/m2qlq0ccVGaaZ2zMIGfpzL3p6adwx/5\ -"; - -// -// Payment request with amount overflow (amount is set to 21000001 BTC) -// -const char* paymentrequest5_cert2_BASE64 = -"\ -Egt4NTA5K3NoYTI1NhrQBArNBDCCAkkwggExoAMCAQICAQEwDQYJKoZIhvcNAQEL\ -BQAwITEfMB0GA1UEAwwWUGF5bWVudFJlcXVlc3QgVGVzdCBDQTAeFw0xNTAxMTEx\ -ODIxMDhaFw0yNTAxMDgxODIxMDhaMCExHzAdBgNVBAMMFlBheW1lbnRSZXF1ZXN0\ -IFRlc3QgQ0EwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMsZqzkzeBGo+i2N\ -mUak3Ciodr1V7S062VOy7N0OQYNDQHYkgDFAUET7cEb5VJaHPv5m3ppTBpU9xBcf\ -wbHHUt4VjA+mhRmYrl1khjvZM+X8kEqvWn20BtcM9R6r0yIYec8UERDDHBleL/P8\ -RkxEnVLjYTV9zigCXfMsgYb3EQShAgMBAAGjEDAOMAwGA1UdEwQFMAMBAf8wDQYJ\ -KoZIhvcNAQELBQADggEBABUJpl3QCqsoDSxAsQdV6zKT4VGV76AzoGj7etQsQY+r\ -+S26VfWh/fMobEzuxFChr0USgLJ6FoK78hAtoZvt1lrye9yqFv/ig3WLWsJKWHHb\ -3RT6oR03CIwZXFSUasi08QDVLxafwsU5OMcPLucF3a1lRL1ccYrNgVCCx1+X7Bos\ -tIgDGRQQ4AyoHTcfVd2hEGeUv7k14mOxFsAp6851yosHq9Q2kwmdH+rHEJbjof87\ -yyKLagc4owyXBZYkQmkeHWCNqnuRmO5vUsfVb0UUrkD64o7Th/NjwooA7SCiUXl6\ -dfygT1b7ggpx7GC+sP2DsIM47IAZ55drjqX5u2f+Ba0iTAoEdGVzdBIkCIDC9P+F\ -vt0DEhl2qRQErGqUUwSsaMpDvWIaGnJGNQqi8oisGLzcrKYFKhhUZXN0aW5nIGFt\ -b3VudCBvdmVyZmxvdyEqgAG8S7WEDUC6tCL6q2CTBjop/AitgEy31RL9IqYruytR\ -iEBFUrBDJZU+UEezGwr7/zoECjo5ZY3PmtZcM2sILNjyweJF6XVzGqTxUw6pN6sW\ -XR2T3Gy2LzRvhVA25QgGqpz0/juS2BtmNbsZPkN9gMMwKimgzc+PuCzmEKwPK9cQ\ -YQ==\ -"; diff --git a/src/qt/test/paymentservertests.cpp b/src/qt/test/paymentservertests.cpp deleted file mode 100644 index b28934cd3..000000000 --- a/src/qt/test/paymentservertests.cpp +++ /dev/null @@ -1,210 +0,0 @@ -// Copyright (c) 2009-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. - -#include "paymentservertests.h" - -#include "optionsmodel.h" -#include "paymentrequestdata.h" - -#include "amount.h" -#include "random.h" -#include "script/script.h" -#include "script/standard.h" -#include "util.h" -#include "utilstrencodings.h" - -#include -#include - -#include -#include - -X509 *parse_b64der_cert(const char* cert_data) -{ - std::vector data = DecodeBase64(cert_data); - assert(data.size() > 0); - const unsigned char* dptr = &data[0]; - X509 *cert = d2i_X509(NULL, &dptr, data.size()); - assert(cert); - return cert; -} - -// -// Test payment request handling -// - -static SendCoinsRecipient handleRequest(PaymentServer* server, std::vector& data) -{ - RecipientCatcher sigCatcher; - QObject::connect(server, SIGNAL(receivedPaymentRequest(SendCoinsRecipient)), - &sigCatcher, SLOT(getRecipient(SendCoinsRecipient))); - - // Write data to a temp file: - QTemporaryFile f; - f.open(); - f.write((const char*)&data[0], data.size()); - f.close(); - - // Create a QObject, install event filter from PaymentServer - // and send a file open event to the object - QObject object; - object.installEventFilter(server); - QFileOpenEvent event(f.fileName()); - // If sending the event fails, this will cause sigCatcher to be empty, - // which will lead to a test failure anyway. - QCoreApplication::sendEvent(&object, &event); - - QObject::disconnect(server, SIGNAL(receivedPaymentRequest(SendCoinsRecipient)), - &sigCatcher, SLOT(getRecipient(SendCoinsRecipient))); - - // Return results from sigCatcher - return sigCatcher.recipient; -} - -void PaymentServerTests::paymentServerTests() -{ - SelectParams(CBaseChainParams::MAIN); - OptionsModel optionsModel; - PaymentServer* server = new PaymentServer(NULL, false); - X509_STORE* caStore = X509_STORE_new(); - X509_STORE_add_cert(caStore, parse_b64der_cert(caCert1_BASE64)); - PaymentServer::LoadRootCAs(caStore); - server->setOptionsModel(&optionsModel); - server->uiReady(); - - std::vector data; - SendCoinsRecipient r; - QString merchant; - - // Now feed PaymentRequests to server, and observe signals it produces - - // This payment request validates directly against the - // caCert1 certificate authority: - data = DecodeBase64(paymentrequest1_cert1_BASE64); - r = handleRequest(server, data); - r.paymentRequest.getMerchant(caStore, merchant); - QCOMPARE(merchant, QString("testmerchant.org")); - - // Signed, but expired, merchant cert in the request: - data = DecodeBase64(paymentrequest2_cert1_BASE64); - r = handleRequest(server, data); - r.paymentRequest.getMerchant(caStore, merchant); - QCOMPARE(merchant, QString("")); - - // 10-long certificate chain, all intermediates valid: - data = DecodeBase64(paymentrequest3_cert1_BASE64); - r = handleRequest(server, data); - r.paymentRequest.getMerchant(caStore, merchant); - QCOMPARE(merchant, QString("testmerchant8.org")); - - // Long certificate chain, with an expired certificate in the middle: - data = DecodeBase64(paymentrequest4_cert1_BASE64); - r = handleRequest(server, data); - r.paymentRequest.getMerchant(caStore, merchant); - QCOMPARE(merchant, QString("")); - - // Validly signed, but by a CA not in our root CA list: - data = DecodeBase64(paymentrequest5_cert1_BASE64); - r = handleRequest(server, data); - r.paymentRequest.getMerchant(caStore, merchant); - QCOMPARE(merchant, QString("")); - - // Try again with no root CA's, verifiedMerchant should be empty: - caStore = X509_STORE_new(); - PaymentServer::LoadRootCAs(caStore); - data = DecodeBase64(paymentrequest1_cert1_BASE64); - r = handleRequest(server, data); - r.paymentRequest.getMerchant(caStore, merchant); - QCOMPARE(merchant, QString("")); - - // Load second root certificate - caStore = X509_STORE_new(); - X509_STORE_add_cert(caStore, parse_b64der_cert(caCert2_BASE64)); - PaymentServer::LoadRootCAs(caStore); - - QByteArray byteArray; - - // For the tests below we just need the payment request data from - // paymentrequestdata.h parsed + stored in r.paymentRequest. - // - // These tests require us to bypass the following normal client execution flow - // shown below to be able to explicitly just trigger a certain condition! - // - // handleRequest() - // -> PaymentServer::eventFilter() - // -> PaymentServer::handleURIOrFile() - // -> PaymentServer::readPaymentRequestFromFile() - // -> PaymentServer::processPaymentRequest() - - // Contains a testnet paytoaddress, so payment request network doesn't match client network: - data = DecodeBase64(paymentrequest1_cert2_BASE64); - byteArray = QByteArray((const char*)&data[0], data.size()); - r.paymentRequest.parse(byteArray); - // Ensure the request is initialized, because network "main" is default, even for - // uninizialized payment requests and that will fail our test here. - QVERIFY(r.paymentRequest.IsInitialized()); - QCOMPARE(PaymentServer::verifyNetwork(r.paymentRequest.getDetails()), false); - - // Expired payment request (expires is set to 1 = 1970-01-01 00:00:01): - data = DecodeBase64(paymentrequest2_cert2_BASE64); - byteArray = QByteArray((const char*)&data[0], data.size()); - r.paymentRequest.parse(byteArray); - // Ensure the request is initialized - QVERIFY(r.paymentRequest.IsInitialized()); - // compares 1 < GetTime() == false (treated as expired payment request) - QCOMPARE(PaymentServer::verifyExpired(r.paymentRequest.getDetails()), true); - - // Unexpired payment request (expires is set to 0x7FFFFFFFFFFFFFFF = max. int64_t): - // 9223372036854775807 (uint64), 9223372036854775807 (int64_t) and -1 (int32_t) - // -1 is 1969-12-31 23:59:59 (for a 32 bit time values) - data = DecodeBase64(paymentrequest3_cert2_BASE64); - byteArray = QByteArray((const char*)&data[0], data.size()); - r.paymentRequest.parse(byteArray); - // Ensure the request is initialized - QVERIFY(r.paymentRequest.IsInitialized()); - // compares 9223372036854775807 < GetTime() == false (treated as unexpired payment request) - QCOMPARE(PaymentServer::verifyExpired(r.paymentRequest.getDetails()), false); - - // Unexpired payment request (expires is set to 0x8000000000000000 > max. int64_t, allowed uint64): - // 9223372036854775808 (uint64), -9223372036854775808 (int64_t) and 0 (int32_t) - // 0 is 1970-01-01 00:00:00 (for a 32 bit time values) - data = DecodeBase64(paymentrequest4_cert2_BASE64); - byteArray = QByteArray((const char*)&data[0], data.size()); - r.paymentRequest.parse(byteArray); - // Ensure the request is initialized - QVERIFY(r.paymentRequest.IsInitialized()); - // compares -9223372036854775808 < GetTime() == true (treated as expired payment request) - QCOMPARE(PaymentServer::verifyExpired(r.paymentRequest.getDetails()), true); - - // Test BIP70 DoS protection: - unsigned char randData[BIP70_MAX_PAYMENTREQUEST_SIZE + 1]; - GetRandBytes(randData, sizeof(randData)); - // Write data to a temp file: - QTemporaryFile tempFile; - tempFile.open(); - tempFile.write((const char*)randData, sizeof(randData)); - tempFile.close(); - QCOMPARE(PaymentServer::readPaymentRequestFromFile(tempFile.fileName(), r.paymentRequest), false); - - // Payment request with amount overflow (amount is set to 21000001 BTC): - data = DecodeBase64(paymentrequest5_cert2_BASE64); - byteArray = QByteArray((const char*)&data[0], data.size()); - r.paymentRequest.parse(byteArray); - // Ensure the request is initialized - QVERIFY(r.paymentRequest.IsInitialized()); - // Extract address and amount from the request - QList > sendingTos = r.paymentRequest.getPayTo(); - Q_FOREACH (const PAIRTYPE(CScript, CAmount)& sendingTo, sendingTos) { - CTxDestination dest; - if (ExtractDestination(sendingTo.first, dest)) - QCOMPARE(PaymentServer::verifyAmount(sendingTo.second), false); - } - - delete server; -} - -void RecipientCatcher::getRecipient(SendCoinsRecipient r) -{ - recipient = r; -} diff --git a/src/qt/test/paymentservertests.h b/src/qt/test/paymentservertests.h deleted file mode 100644 index 71d61fcbe..000000000 --- a/src/qt/test/paymentservertests.h +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright (c) 2009-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. - -#ifndef BITCOIN_QT_TEST_PAYMENTSERVERTESTS_H -#define BITCOIN_QT_TEST_PAYMENTSERVERTESTS_H - -#include "../paymentserver.h" - -#include -#include - -class PaymentServerTests : public QObject -{ - Q_OBJECT - -private Q_SLOTS: - void paymentServerTests(); -}; - -// Dummy class to receive paymentserver signals. -// If SendCoinsRecipient was a proper QObject, then -// we could use QSignalSpy... but it's not. -class RecipientCatcher : public QObject -{ - Q_OBJECT - -public Q_SLOTS: - void getRecipient(SendCoinsRecipient r); - -public: - SendCoinsRecipient recipient; -}; - -#endif // BITCOIN_QT_TEST_PAYMENTSERVERTESTS_H diff --git a/src/qt/test/uritests.cpp b/src/qt/test/uritests.cpp deleted file mode 100644 index 8b53c0d5c..000000000 --- a/src/qt/test/uritests.cpp +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright (c) 2009-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. - -#include "uritests.h" - -#include "guiutil.h" -#include "walletmodel.h" - -#include - -void URITests::uriTests() -{ - SendCoinsRecipient rv; - QUrl uri; - uri.setUrl(QString("bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?req-dontexist=")); - QVERIFY(!GUIUtil::parseBitcoinURI(uri, &rv)); - - uri.setUrl(QString("bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?dontexist=")); - QVERIFY(GUIUtil::parseBitcoinURI(uri, &rv)); - QVERIFY(rv.address == QString("175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W")); - QVERIFY(rv.label == QString()); - QVERIFY(rv.amount == 0); - - uri.setUrl(QString("bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?label=Wikipedia Example Address")); - QVERIFY(GUIUtil::parseBitcoinURI(uri, &rv)); - QVERIFY(rv.address == QString("175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W")); - QVERIFY(rv.label == QString("Wikipedia Example Address")); - QVERIFY(rv.amount == 0); - - uri.setUrl(QString("bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.001")); - QVERIFY(GUIUtil::parseBitcoinURI(uri, &rv)); - QVERIFY(rv.address == QString("175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W")); - QVERIFY(rv.label == QString()); - QVERIFY(rv.amount == 100000); - - uri.setUrl(QString("bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=1.001")); - QVERIFY(GUIUtil::parseBitcoinURI(uri, &rv)); - QVERIFY(rv.address == QString("175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W")); - QVERIFY(rv.label == QString()); - QVERIFY(rv.amount == 100100000); - - uri.setUrl(QString("bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=100&label=Wikipedia Example")); - QVERIFY(GUIUtil::parseBitcoinURI(uri, &rv)); - QVERIFY(rv.address == QString("175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W")); - QVERIFY(rv.amount == 10000000000LL); - QVERIFY(rv.label == QString("Wikipedia Example")); - - uri.setUrl(QString("bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?message=Wikipedia Example Address")); - QVERIFY(GUIUtil::parseBitcoinURI(uri, &rv)); - QVERIFY(rv.address == QString("175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W")); - QVERIFY(rv.label == QString()); - - QVERIFY(GUIUtil::parseBitcoinURI("bitcoin://175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?message=Wikipedia Example Address", &rv)); - QVERIFY(rv.address == QString("175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W")); - QVERIFY(rv.label == QString()); - - uri.setUrl(QString("bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?req-message=Wikipedia Example Address")); - QVERIFY(GUIUtil::parseBitcoinURI(uri, &rv)); - - uri.setUrl(QString("bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=1,000&label=Wikipedia Example")); - QVERIFY(!GUIUtil::parseBitcoinURI(uri, &rv)); - - uri.setUrl(QString("bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=1,000.0&label=Wikipedia Example")); - QVERIFY(!GUIUtil::parseBitcoinURI(uri, &rv)); -} diff --git a/src/qt/test/uritests.h b/src/qt/test/uritests.h deleted file mode 100644 index 434169dcd..000000000 --- a/src/qt/test/uritests.h +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright (c) 2009-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. - -#ifndef BITCOIN_QT_TEST_URITESTS_H -#define BITCOIN_QT_TEST_URITESTS_H - -#include -#include - -class URITests : public QObject -{ - Q_OBJECT - -private Q_SLOTS: - void uriTests(); -}; - -#endif // BITCOIN_QT_TEST_URITESTS_H diff --git a/src/qt/trafficgraphwidget.cpp b/src/qt/trafficgraphwidget.cpp deleted file mode 100644 index 9b67445bc..000000000 --- a/src/qt/trafficgraphwidget.cpp +++ /dev/null @@ -1,175 +0,0 @@ -// Copyright (c) 2011-2013 The Bitcoin Core developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#include "trafficgraphwidget.h" -#include "clientmodel.h" - -#include -#include -#include - -#include - -#define DESIRED_SAMPLES 800 - -#define XMARGIN 10 -#define YMARGIN 10 - -TrafficGraphWidget::TrafficGraphWidget(QWidget *parent) : - QWidget(parent), - timer(0), - fMax(0.0f), - nMins(0), - vSamplesIn(), - vSamplesOut(), - nLastBytesIn(0), - nLastBytesOut(0), - clientModel(0) -{ - timer = new QTimer(this); - connect(timer, SIGNAL(timeout()), SLOT(updateRates())); -} - -void TrafficGraphWidget::setClientModel(ClientModel *model) -{ - clientModel = model; - if(model) { - nLastBytesIn = model->getTotalBytesRecv(); - nLastBytesOut = model->getTotalBytesSent(); - } -} - -int TrafficGraphWidget::getGraphRangeMins() const -{ - return nMins; -} - -void TrafficGraphWidget::paintPath(QPainterPath &path, QQueue &samples) -{ - int h = height() - YMARGIN * 2, w = width() - XMARGIN * 2; - int sampleCount = samples.size(), x = XMARGIN + w, y; - if(sampleCount > 0) { - path.moveTo(x, YMARGIN + h); - for(int i = 0; i < sampleCount; ++i) { - x = XMARGIN + w - w * i / DESIRED_SAMPLES; - y = YMARGIN + h - (int)(h * samples.at(i) / fMax); - path.lineTo(x, y); - } - path.lineTo(x, YMARGIN + h); - } -} - -void TrafficGraphWidget::paintEvent(QPaintEvent *) -{ - QPainter painter(this); - painter.fillRect(rect(), Qt::black); - - if(fMax <= 0.0f) return; - - QColor axisCol(Qt::gray); - int h = height() - YMARGIN * 2; - painter.setPen(axisCol); - painter.drawLine(XMARGIN, YMARGIN + h, width() - XMARGIN, YMARGIN + h); - - // decide what order of magnitude we are - int base = floor(log10(fMax)); - float val = pow(10.0f, base); - - const QString units = tr("KB/s"); - const float yMarginText = 2.0; - - // draw lines - painter.setPen(axisCol); - painter.drawText(XMARGIN, YMARGIN + h - h * val / fMax-yMarginText, QString("%1 %2").arg(val).arg(units)); - for(float y = val; y < fMax; y += val) { - int yy = YMARGIN + h - h * y / fMax; - painter.drawLine(XMARGIN, yy, width() - XMARGIN, yy); - } - // if we drew 3 or fewer lines, break them up at the next lower order of magnitude - if(fMax / val <= 3.0f) { - axisCol = axisCol.darker(); - val = pow(10.0f, base - 1); - painter.setPen(axisCol); - painter.drawText(XMARGIN, YMARGIN + h - h * val / fMax-yMarginText, QString("%1 %2").arg(val).arg(units)); - int count = 1; - for(float y = val; y < fMax; y += val, count++) { - // don't overwrite lines drawn above - if(count % 10 == 0) - continue; - int yy = YMARGIN + h - h * y / fMax; - painter.drawLine(XMARGIN, yy, width() - XMARGIN, yy); - } - } - - if(!vSamplesIn.empty()) { - QPainterPath p; - paintPath(p, vSamplesIn); - painter.fillPath(p, QColor(0, 255, 0, 128)); - painter.setPen(Qt::green); - painter.drawPath(p); - } - if(!vSamplesOut.empty()) { - QPainterPath p; - paintPath(p, vSamplesOut); - painter.fillPath(p, QColor(255, 0, 0, 128)); - painter.setPen(Qt::red); - painter.drawPath(p); - } -} - -void TrafficGraphWidget::updateRates() -{ - if(!clientModel) return; - - quint64 bytesIn = clientModel->getTotalBytesRecv(), - bytesOut = clientModel->getTotalBytesSent(); - float inRate = (bytesIn - nLastBytesIn) / 1024.0f * 1000 / timer->interval(); - float outRate = (bytesOut - nLastBytesOut) / 1024.0f * 1000 / timer->interval(); - vSamplesIn.push_front(inRate); - vSamplesOut.push_front(outRate); - nLastBytesIn = bytesIn; - nLastBytesOut = bytesOut; - - while(vSamplesIn.size() > DESIRED_SAMPLES) { - vSamplesIn.pop_back(); - } - while(vSamplesOut.size() > DESIRED_SAMPLES) { - vSamplesOut.pop_back(); - } - - float tmax = 0.0f; - Q_FOREACH(float f, vSamplesIn) { - if(f > tmax) tmax = f; - } - Q_FOREACH(float f, vSamplesOut) { - if(f > tmax) tmax = f; - } - fMax = tmax; - update(); -} - -void TrafficGraphWidget::setGraphRangeMins(int mins) -{ - nMins = mins; - int msecsPerSample = nMins * 60 * 1000 / DESIRED_SAMPLES; - timer->stop(); - timer->setInterval(msecsPerSample); - - clear(); -} - -void TrafficGraphWidget::clear() -{ - timer->stop(); - - vSamplesOut.clear(); - vSamplesIn.clear(); - fMax = 0.0f; - - if(clientModel) { - nLastBytesIn = clientModel->getTotalBytesRecv(); - nLastBytesOut = clientModel->getTotalBytesSent(); - } - timer->start(); -} diff --git a/src/qt/trafficgraphwidget.h b/src/qt/trafficgraphwidget.h deleted file mode 100644 index 6336a8d14..000000000 --- a/src/qt/trafficgraphwidget.h +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright (c) 2011-2013 The Bitcoin Core developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#ifndef BITCOIN_QT_TRAFFICGRAPHWIDGET_H -#define BITCOIN_QT_TRAFFICGRAPHWIDGET_H - -#include -#include - -class ClientModel; - -QT_BEGIN_NAMESPACE -class QPaintEvent; -class QTimer; -QT_END_NAMESPACE - -class TrafficGraphWidget : public QWidget -{ - Q_OBJECT - -public: - explicit TrafficGraphWidget(QWidget *parent = 0); - void setClientModel(ClientModel *model); - int getGraphRangeMins() const; - -protected: - void paintEvent(QPaintEvent *); - -public Q_SLOTS: - void updateRates(); - void setGraphRangeMins(int mins); - void clear(); - -private: - void paintPath(QPainterPath &path, QQueue &samples); - - QTimer *timer; - float fMax; - int nMins; - QQueue vSamplesIn; - QQueue vSamplesOut; - quint64 nLastBytesIn; - quint64 nLastBytesOut; - ClientModel *clientModel; -}; - -#endif // BITCOIN_QT_TRAFFICGRAPHWIDGET_H diff --git a/src/qt/transactiondesc.h b/src/qt/transactiondesc.h deleted file mode 100644 index 5467348ee..000000000 --- a/src/qt/transactiondesc.h +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright (c) 2011-2013 The Bitcoin Core developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#ifndef BITCOIN_QT_TRANSACTIONDESC_H -#define BITCOIN_QT_TRANSACTIONDESC_H - -#include -#include - -class TransactionRecord; - -class CWallet; -class CWalletTx; - -/** Provide a human-readable extended HTML description of a transaction. - */ -class TransactionDesc: public QObject -{ - Q_OBJECT - -public: - static QString toHTML(CWallet *wallet, CWalletTx &wtx, TransactionRecord *rec, int unit); - -private: - TransactionDesc() {} - - static QString FormatTxStatus(const CWalletTx& wtx); -}; - -#endif // BITCOIN_QT_TRANSACTIONDESC_H diff --git a/src/qt/transactiondescdialog.cpp b/src/qt/transactiondescdialog.cpp deleted file mode 100644 index fadaa98f4..000000000 --- a/src/qt/transactiondescdialog.cpp +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright (c) 2011-2013 The Bitcoin Core developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#include "transactiondescdialog.h" -#include "ui_transactiondescdialog.h" - -#include "transactiontablemodel.h" - -#include - -TransactionDescDialog::TransactionDescDialog(const QModelIndex &idx, QWidget *parent) : - QDialog(parent), - ui(new Ui::TransactionDescDialog) -{ - ui->setupUi(this); - QString desc = idx.data(TransactionTableModel::LongDescriptionRole).toString(); - ui->detailText->setHtml(desc); -} - -TransactionDescDialog::~TransactionDescDialog() -{ - delete ui; -} diff --git a/src/qt/transactiondescdialog.h b/src/qt/transactiondescdialog.h deleted file mode 100644 index 54374e359..000000000 --- a/src/qt/transactiondescdialog.h +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright (c) 2011-2013 The Bitcoin Core developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#ifndef BITCOIN_QT_TRANSACTIONDESCDIALOG_H -#define BITCOIN_QT_TRANSACTIONDESCDIALOG_H - -#include - -namespace Ui { - class TransactionDescDialog; -} - -QT_BEGIN_NAMESPACE -class QModelIndex; -QT_END_NAMESPACE - -/** Dialog showing transaction details. */ -class TransactionDescDialog : public QDialog -{ - Q_OBJECT - -public: - explicit TransactionDescDialog(const QModelIndex &idx, QWidget *parent = 0); - ~TransactionDescDialog(); - -private: - Ui::TransactionDescDialog *ui; -}; - -#endif // BITCOIN_QT_TRANSACTIONDESCDIALOG_H diff --git a/src/qt/transactionfilterproxy.cpp b/src/qt/transactionfilterproxy.cpp deleted file mode 100644 index 7981eb7c9..000000000 --- a/src/qt/transactionfilterproxy.cpp +++ /dev/null @@ -1,114 +0,0 @@ -// Copyright (c) 2011-2013 The Bitcoin Core developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#include "transactionfilterproxy.h" - -#include "transactiontablemodel.h" -#include "transactionrecord.h" - -#include - -#include - -// Earliest date that can be represented (far in the past) -const QDateTime TransactionFilterProxy::MIN_DATE = QDateTime::fromTime_t(0); -// Last date that can be represented (far in the future) -const QDateTime TransactionFilterProxy::MAX_DATE = QDateTime::fromTime_t(0xFFFFFFFF); - -TransactionFilterProxy::TransactionFilterProxy(QObject *parent) : - QSortFilterProxyModel(parent), - dateFrom(MIN_DATE), - dateTo(MAX_DATE), - addrPrefix(), - typeFilter(ALL_TYPES), - watchOnlyFilter(WatchOnlyFilter_All), - minAmount(0), - limitRows(-1), - showInactive(true) -{ -} - -bool TransactionFilterProxy::filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const -{ - QModelIndex index = sourceModel()->index(sourceRow, 0, sourceParent); - - int type = index.data(TransactionTableModel::TypeRole).toInt(); - QDateTime datetime = index.data(TransactionTableModel::DateRole).toDateTime(); - bool involvesWatchAddress = index.data(TransactionTableModel::WatchonlyRole).toBool(); - QString address = index.data(TransactionTableModel::AddressRole).toString(); - QString label = index.data(TransactionTableModel::LabelRole).toString(); - qint64 amount = llabs(index.data(TransactionTableModel::AmountRole).toLongLong()); - int status = index.data(TransactionTableModel::StatusRole).toInt(); - - if(!showInactive && status == TransactionStatus::Conflicted) - return false; - if(!(TYPE(type) & typeFilter)) - return false; - if (involvesWatchAddress && watchOnlyFilter == WatchOnlyFilter_No) - return false; - if (!involvesWatchAddress && watchOnlyFilter == WatchOnlyFilter_Yes) - return false; - if(datetime < dateFrom || datetime > dateTo) - return false; - if (!address.contains(addrPrefix, Qt::CaseInsensitive) && !label.contains(addrPrefix, Qt::CaseInsensitive)) - return false; - if(amount < minAmount) - return false; - - return true; -} - -void TransactionFilterProxy::setDateRange(const QDateTime &from, const QDateTime &to) -{ - this->dateFrom = from; - this->dateTo = to; - invalidateFilter(); -} - -void TransactionFilterProxy::setAddressPrefix(const QString &addrPrefix) -{ - this->addrPrefix = addrPrefix; - invalidateFilter(); -} - -void TransactionFilterProxy::setTypeFilter(quint32 modes) -{ - this->typeFilter = modes; - invalidateFilter(); -} - -void TransactionFilterProxy::setMinAmount(const CAmount& minimum) -{ - this->minAmount = minimum; - invalidateFilter(); -} - -void TransactionFilterProxy::setWatchOnlyFilter(WatchOnlyFilter filter) -{ - this->watchOnlyFilter = filter; - invalidateFilter(); -} - -void TransactionFilterProxy::setLimit(int limit) -{ - this->limitRows = limit; -} - -void TransactionFilterProxy::setShowInactive(bool showInactive) -{ - this->showInactive = showInactive; - invalidateFilter(); -} - -int TransactionFilterProxy::rowCount(const QModelIndex &parent) const -{ - if(limitRows != -1) - { - return std::min(QSortFilterProxyModel::rowCount(parent), limitRows); - } - else - { - return QSortFilterProxyModel::rowCount(parent); - } -} diff --git a/src/qt/transactionfilterproxy.h b/src/qt/transactionfilterproxy.h deleted file mode 100644 index acea9a1e3..000000000 --- a/src/qt/transactionfilterproxy.h +++ /dev/null @@ -1,68 +0,0 @@ -// Copyright (c) 2011-2013 The Bitcoin Core developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#ifndef BITCOIN_QT_TRANSACTIONFILTERPROXY_H -#define BITCOIN_QT_TRANSACTIONFILTERPROXY_H - -#include "amount.h" - -#include -#include - -/** Filter the transaction list according to pre-specified rules. */ -class TransactionFilterProxy : public QSortFilterProxyModel -{ - Q_OBJECT - -public: - explicit TransactionFilterProxy(QObject *parent = 0); - - /** Earliest date that can be represented (far in the past) */ - static const QDateTime MIN_DATE; - /** Last date that can be represented (far in the future) */ - static const QDateTime MAX_DATE; - /** Type filter bit field (all types) */ - static const quint32 ALL_TYPES = 0xFFFFFFFF; - - static quint32 TYPE(int type) { return 1< - -#include - -/* Return positive answer if transaction should be shown in list. - */ -bool TransactionRecord::showTransaction(const CWalletTx &wtx) -{ - if (wtx.IsCoinBase()) - { - // Ensures we show generated coins / mined transactions at depth 1 - if (!wtx.IsInMainChain()) - { - return false; - } - } - return true; -} - -/* - * Decompose CWallet transaction to model transaction records. - */ -QList TransactionRecord::decomposeTransaction(const CWallet *wallet, const CWalletTx &wtx) -{ - QList parts; - int64_t nTime = wtx.GetTxTime(); - CAmount nCredit = wtx.GetCredit(ISMINE_ALL); - CAmount nDebit = wtx.GetDebit(ISMINE_ALL); - CAmount nNet = nCredit - nDebit; - uint256 hash = wtx.GetHash(); - std::map mapValue = wtx.mapValue; - - if (nNet > 0 || wtx.IsCoinBase()) - { - // - // Credit - // - BOOST_FOREACH(const CTxOut& txout, wtx.vout) - { - isminetype mine = wallet->IsMine(txout); - if(mine) - { - TransactionRecord sub(hash, nTime); - CTxDestination address; - sub.idx = parts.size(); // sequence number - sub.credit = txout.nValue; - sub.involvesWatchAddress = mine == ISMINE_WATCH_ONLY; - if (ExtractDestination(txout.scriptPubKey, address) && IsMine(*wallet, address)) - { - // Received by Bitcoin Address - sub.type = TransactionRecord::RecvWithAddress; - sub.address = CBitcoinAddress(address).ToString(); - } - else - { - // Received by IP connection (deprecated features), or a multisignature or other non-simple transaction - sub.type = TransactionRecord::RecvFromOther; - sub.address = mapValue["from"]; - } - if (wtx.IsCoinBase()) - { - // Generated - sub.type = TransactionRecord::Generated; - } - - parts.append(sub); - } - } - } - else - { - bool involvesWatchAddress = false; - isminetype fAllFromMe = ISMINE_SPENDABLE; - BOOST_FOREACH(const CTxIn& txin, wtx.vin) - { - isminetype mine = wallet->IsMine(txin); - if(mine == ISMINE_WATCH_ONLY) involvesWatchAddress = true; - if(fAllFromMe > mine) fAllFromMe = mine; - } - - isminetype fAllToMe = ISMINE_SPENDABLE; - BOOST_FOREACH(const CTxOut& txout, wtx.vout) - { - isminetype mine = wallet->IsMine(txout); - if(mine == ISMINE_WATCH_ONLY) involvesWatchAddress = true; - if(fAllToMe > mine) fAllToMe = mine; - } - - if (fAllFromMe && fAllToMe) - { - // Payment to self - CAmount nChange = wtx.GetChange(); - - parts.append(TransactionRecord(hash, nTime, TransactionRecord::SendToSelf, "", - -(nDebit - nChange), nCredit - nChange)); - parts.last().involvesWatchAddress = involvesWatchAddress; // maybe pass to TransactionRecord as constructor argument - } - else if (fAllFromMe) - { - // - // Debit - // - CAmount nTxFee = nDebit - wtx.GetValueOut(); - - for (unsigned int nOut = 0; nOut < wtx.vout.size(); nOut++) - { - const CTxOut& txout = wtx.vout[nOut]; - TransactionRecord sub(hash, nTime); - sub.idx = parts.size(); - sub.involvesWatchAddress = involvesWatchAddress; - - if(wallet->IsMine(txout)) - { - // Ignore parts sent to self, as this is usually the change - // from a transaction sent back to our own address. - continue; - } - - CTxDestination address; - if (ExtractDestination(txout.scriptPubKey, address)) - { - // Sent to Bitcoin Address - sub.type = TransactionRecord::SendToAddress; - sub.address = CBitcoinAddress(address).ToString(); - } - else - { - // Sent to IP, or other non-address transaction like OP_EVAL - sub.type = TransactionRecord::SendToOther; - sub.address = mapValue["to"]; - } - - CAmount nValue = txout.nValue; - /* Add fee to first output */ - if (nTxFee > 0) - { - nValue += nTxFee; - nTxFee = 0; - } - sub.debit = -nValue; - - parts.append(sub); - } - } - else - { - // - // Mixed debit transaction, can't break down payees - // - parts.append(TransactionRecord(hash, nTime, TransactionRecord::Other, "", nNet, 0)); - parts.last().involvesWatchAddress = involvesWatchAddress; - } - } - - return parts; -} - -void TransactionRecord::updateStatus(const CWalletTx &wtx) -{ - AssertLockHeld(cs_main); - // Determine transaction status - - // Find the block the tx is in - CBlockIndex* pindex = NULL; - BlockMap::iterator mi = mapBlockIndex.find(wtx.hashBlock); - if (mi != mapBlockIndex.end()) - pindex = (*mi).second; - - // Sort order, unrecorded transactions sort to the top - status.sortKey = strprintf("%010d-%01d-%010u-%03d", - (pindex ? pindex->nHeight : std::numeric_limits::max()), - (wtx.IsCoinBase() ? 1 : 0), - wtx.nTimeReceived, - idx); - status.countsForBalance = wtx.IsTrusted() && !(wtx.GetBlocksToMaturity() > 0); - status.depth = wtx.GetDepthInMainChain(); - status.cur_num_blocks = chainActive.Height(); - - if (!CheckFinalTx(wtx)) - { - if (wtx.nLockTime < LOCKTIME_THRESHOLD) - { - status.status = TransactionStatus::OpenUntilBlock; - status.open_for = wtx.nLockTime - chainActive.Height(); - } - else - { - status.status = TransactionStatus::OpenUntilDate; - status.open_for = wtx.nLockTime; - } - } - // For generated transactions, determine maturity - else if(type == TransactionRecord::Generated) - { - if (wtx.GetBlocksToMaturity() > 0) - { - status.status = TransactionStatus::Immature; - - if (wtx.IsInMainChain()) - { - status.matures_in = wtx.GetBlocksToMaturity(); - - // Check if the block was requested by anyone - if (GetAdjustedTime() - wtx.nTimeReceived > 2 * 60 && wtx.GetRequestCount() == 0) - status.status = TransactionStatus::MaturesWarning; - } - else - { - status.status = TransactionStatus::NotAccepted; - } - } - else - { - status.status = TransactionStatus::Confirmed; - } - } - else - { - if (status.depth < 0) - { - status.status = TransactionStatus::Conflicted; - } - else if (GetAdjustedTime() - wtx.nTimeReceived > 2 * 60 && wtx.GetRequestCount() == 0) - { - status.status = TransactionStatus::Offline; - } - else if (status.depth == 0) - { - status.status = TransactionStatus::Unconfirmed; - } - else if (status.depth < RecommendedNumConfirmations) - { - status.status = TransactionStatus::Confirming; - } - else - { - status.status = TransactionStatus::Confirmed; - } - } - -} - -bool TransactionRecord::statusUpdateNeeded() -{ - AssertLockHeld(cs_main); - return status.cur_num_blocks != chainActive.Height(); -} - -QString TransactionRecord::getTxID() const -{ - return formatSubTxId(hash, idx); -} - -QString TransactionRecord::formatSubTxId(const uint256 &hash, int vout) -{ - return QString::fromStdString(hash.ToString() + strprintf("-%03d", vout)); -} - diff --git a/src/qt/transactionrecord.h b/src/qt/transactionrecord.h deleted file mode 100644 index a5bc37571..000000000 --- a/src/qt/transactionrecord.h +++ /dev/null @@ -1,143 +0,0 @@ -// Copyright (c) 2011-2013 The Bitcoin Core developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#ifndef BITCOIN_QT_TRANSACTIONRECORD_H -#define BITCOIN_QT_TRANSACTIONRECORD_H - -#include "amount.h" -#include "uint256.h" - -#include -#include - -class CWallet; -class CWalletTx; - -/** UI model for transaction status. The transaction status is the part of a transaction that will change over time. - */ -class TransactionStatus -{ -public: - TransactionStatus(): - countsForBalance(false), sortKey(""), - matures_in(0), status(Offline), depth(0), open_for(0), cur_num_blocks(-1) - { } - - enum Status { - Confirmed, /**< Have 6 or more confirmations (normal tx) or fully mature (mined tx) **/ - /// Normal (sent/received) transactions - OpenUntilDate, /**< Transaction not yet final, waiting for date */ - OpenUntilBlock, /**< Transaction not yet final, waiting for block */ - Offline, /**< Not sent to any other nodes **/ - Unconfirmed, /**< Not yet mined into a block **/ - Confirming, /**< Confirmed, but waiting for the recommended number of confirmations **/ - Conflicted, /**< Conflicts with other transaction or mempool **/ - /// Generated (mined) transactions - Immature, /**< Mined but waiting for maturity */ - MaturesWarning, /**< Transaction will likely not mature because no nodes have confirmed */ - NotAccepted /**< Mined but not accepted */ - }; - - /// Transaction counts towards available balance - bool countsForBalance; - /// Sorting key based on status - std::string sortKey; - - /** @name Generated (mined) transactions - @{*/ - int matures_in; - /**@}*/ - - /** @name Reported status - @{*/ - Status status; - qint64 depth; - qint64 open_for; /**< Timestamp if status==OpenUntilDate, otherwise number - of additional blocks that need to be mined before - finalization */ - /**@}*/ - - /** Current number of blocks (to know whether cached status is still valid) */ - int cur_num_blocks; -}; - -/** UI model for a transaction. A core transaction can be represented by multiple UI transactions if it has - multiple outputs. - */ -class TransactionRecord -{ -public: - enum Type - { - Other, - Generated, - SendToAddress, - SendToOther, - RecvWithAddress, - RecvFromOther, - SendToSelf - }; - - /** Number of confirmation recommended for accepting a transaction */ - static const int RecommendedNumConfirmations = 6; - - TransactionRecord(): - hash(), time(0), type(Other), address(""), debit(0), credit(0), idx(0) - { - } - - TransactionRecord(uint256 hash, qint64 time): - hash(hash), time(time), type(Other), address(""), debit(0), - credit(0), idx(0) - { - } - - TransactionRecord(uint256 hash, qint64 time, - Type type, const std::string &address, - const CAmount& debit, const CAmount& credit): - hash(hash), time(time), type(type), address(address), debit(debit), credit(credit), - idx(0) - { - } - - /** Decompose CWallet transaction to model transaction records. - */ - static bool showTransaction(const CWalletTx &wtx); - static QList decomposeTransaction(const CWallet *wallet, const CWalletTx &wtx); - - /** @name Immutable transaction attributes - @{*/ - uint256 hash; - qint64 time; - Type type; - std::string address; - CAmount debit; - CAmount credit; - /**@}*/ - - /** Subtransaction index, for sort key */ - int idx; - - /** Status: can change with block chain update */ - TransactionStatus status; - - /** Whether the transaction was sent/received with a watch-only address */ - bool involvesWatchAddress; - - /** Return the unique identifier for this transaction (part) */ - QString getTxID() const; - - /** Format subtransaction id */ - static QString formatSubTxId(const uint256 &hash, int vout); - - /** Update status from core wallet tx. - */ - void updateStatus(const CWalletTx &wtx); - - /** Return whether a status update is needed. - */ - bool statusUpdateNeeded(); -}; - -#endif // BITCOIN_QT_TRANSACTIONRECORD_H diff --git a/src/qt/transactiontablemodel.cpp b/src/qt/transactiontablemodel.cpp deleted file mode 100644 index e3d64387f..000000000 --- a/src/qt/transactiontablemodel.cpp +++ /dev/null @@ -1,733 +0,0 @@ -// Copyright (c) 2011-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. - -#include "transactiontablemodel.h" - -#include "addresstablemodel.h" -#include "guiconstants.h" -#include "guiutil.h" -#include "optionsmodel.h" -#include "scicon.h" -#include "transactiondesc.h" -#include "transactionrecord.h" -#include "walletmodel.h" - -#include "main.h" -#include "sync.h" -#include "uint256.h" -#include "util.h" -#include "wallet/wallet.h" - -#include -#include -#include -#include -#include - -// Amount column is right-aligned it contains numbers -static int column_alignments[] = { - Qt::AlignLeft|Qt::AlignVCenter, /* status */ - Qt::AlignLeft|Qt::AlignVCenter, /* watchonly */ - Qt::AlignLeft|Qt::AlignVCenter, /* date */ - Qt::AlignLeft|Qt::AlignVCenter, /* type */ - Qt::AlignLeft|Qt::AlignVCenter, /* address */ - Qt::AlignRight|Qt::AlignVCenter /* amount */ - }; - -// Comparison operator for sort/binary search of model tx list -struct TxLessThan -{ - bool operator()(const TransactionRecord &a, const TransactionRecord &b) const - { - return a.hash < b.hash; - } - bool operator()(const TransactionRecord &a, const uint256 &b) const - { - return a.hash < b; - } - bool operator()(const uint256 &a, const TransactionRecord &b) const - { - return a < b.hash; - } -}; - -// Private implementation -class TransactionTablePriv -{ -public: - TransactionTablePriv(CWallet *wallet, TransactionTableModel *parent) : - wallet(wallet), - parent(parent) - { - } - - CWallet *wallet; - TransactionTableModel *parent; - - /* Local cache of wallet. - * As it is in the same order as the CWallet, by definition - * this is sorted by sha256. - */ - QList cachedWallet; - - /* Query entire wallet anew from core. - */ - void refreshWallet() - { - qDebug() << "TransactionTablePriv::refreshWallet"; - cachedWallet.clear(); - { - LOCK2(cs_main, wallet->cs_wallet); - for(std::map::iterator it = wallet->mapWallet.begin(); it != wallet->mapWallet.end(); ++it) - { - if(TransactionRecord::showTransaction(it->second)) - cachedWallet.append(TransactionRecord::decomposeTransaction(wallet, it->second)); - } - } - } - - /* Update our model of the wallet incrementally, to synchronize our model of the wallet - with that of the core. - - Call with transaction that was added, removed or changed. - */ - void updateWallet(const uint256 &hash, int status, bool showTransaction) - { - qDebug() << "TransactionTablePriv::updateWallet: " + QString::fromStdString(hash.ToString()) + " " + QString::number(status); - - // Find bounds of this transaction in model - QList::iterator lower = qLowerBound( - cachedWallet.begin(), cachedWallet.end(), hash, TxLessThan()); - QList::iterator upper = qUpperBound( - cachedWallet.begin(), cachedWallet.end(), hash, TxLessThan()); - int lowerIndex = (lower - cachedWallet.begin()); - int upperIndex = (upper - cachedWallet.begin()); - bool inModel = (lower != upper); - - if(status == CT_UPDATED) - { - if(showTransaction && !inModel) - status = CT_NEW; /* Not in model, but want to show, treat as new */ - if(!showTransaction && inModel) - status = CT_DELETED; /* In model, but want to hide, treat as deleted */ - } - - qDebug() << " inModel=" + QString::number(inModel) + - " Index=" + QString::number(lowerIndex) + "-" + QString::number(upperIndex) + - " showTransaction=" + QString::number(showTransaction) + " derivedStatus=" + QString::number(status); - - switch(status) - { - case CT_NEW: - if(inModel) - { - qWarning() << "TransactionTablePriv::updateWallet: Warning: Got CT_NEW, but transaction is already in model"; - break; - } - if(showTransaction) - { - LOCK2(cs_main, wallet->cs_wallet); - // Find transaction in wallet - std::map::iterator mi = wallet->mapWallet.find(hash); - if(mi == wallet->mapWallet.end()) - { - qWarning() << "TransactionTablePriv::updateWallet: Warning: Got CT_NEW, but transaction is not in wallet"; - break; - } - // Added -- insert at the right position - QList toInsert = - TransactionRecord::decomposeTransaction(wallet, mi->second); - if(!toInsert.isEmpty()) /* only if something to insert */ - { - parent->beginInsertRows(QModelIndex(), lowerIndex, lowerIndex+toInsert.size()-1); - int insert_idx = lowerIndex; - Q_FOREACH(const TransactionRecord &rec, toInsert) - { - cachedWallet.insert(insert_idx, rec); - insert_idx += 1; - } - parent->endInsertRows(); - } - } - break; - case CT_DELETED: - if(!inModel) - { - qWarning() << "TransactionTablePriv::updateWallet: Warning: Got CT_DELETED, but transaction is not in model"; - break; - } - // Removed -- remove entire transaction from table - parent->beginRemoveRows(QModelIndex(), lowerIndex, upperIndex-1); - cachedWallet.erase(lower, upper); - parent->endRemoveRows(); - break; - case CT_UPDATED: - // Miscellaneous updates -- nothing to do, status update will take care of this, and is only computed for - // visible transactions. - break; - } - } - - int size() - { - return cachedWallet.size(); - } - - TransactionRecord *index(int idx) - { - if(idx >= 0 && idx < cachedWallet.size()) - { - TransactionRecord *rec = &cachedWallet[idx]; - - // Get required locks upfront. This avoids the GUI from getting - // stuck if the core is holding the locks for a longer time - for - // example, during a wallet rescan. - // - // If a status update is needed (blocks came in since last check), - // update the status of this transaction from the wallet. Otherwise, - // simply re-use the cached status. - TRY_LOCK(cs_main, lockMain); - if(lockMain) - { - TRY_LOCK(wallet->cs_wallet, lockWallet); - if(lockWallet && rec->statusUpdateNeeded()) - { - std::map::iterator mi = wallet->mapWallet.find(rec->hash); - - if(mi != wallet->mapWallet.end()) - { - rec->updateStatus(mi->second); - } - } - } - return rec; - } - return 0; - } - - QString describe(TransactionRecord *rec, int unit) - { - { - LOCK2(cs_main, wallet->cs_wallet); - std::map::iterator mi = wallet->mapWallet.find(rec->hash); - if(mi != wallet->mapWallet.end()) - { - return TransactionDesc::toHTML(wallet, mi->second, rec, unit); - } - } - return QString(); - } -}; - -TransactionTableModel::TransactionTableModel(CWallet* wallet, WalletModel *parent): - QAbstractTableModel(parent), - wallet(wallet), - walletModel(parent), - priv(new TransactionTablePriv(wallet, this)), - fProcessingQueuedTransactions(false) -{ - columns << QString() << QString() << tr("Date") << tr("Type") << tr("Label") << BitcoinUnits::getAmountColumnTitle(walletModel->getOptionsModel()->getDisplayUnit()); - priv->refreshWallet(); - - connect(walletModel->getOptionsModel(), SIGNAL(displayUnitChanged(int)), this, SLOT(updateDisplayUnit())); - - subscribeToCoreSignals(); -} - -TransactionTableModel::~TransactionTableModel() -{ - unsubscribeFromCoreSignals(); - delete priv; -} - -/** Updates the column title to "Amount (DisplayUnit)" and emits headerDataChanged() signal for table headers to react. */ -void TransactionTableModel::updateAmountColumnTitle() -{ - columns[Amount] = BitcoinUnits::getAmountColumnTitle(walletModel->getOptionsModel()->getDisplayUnit()); - Q_EMIT headerDataChanged(Qt::Horizontal,Amount,Amount); -} - -void TransactionTableModel::updateTransaction(const QString &hash, int status, bool showTransaction) -{ - uint256 updated; - updated.SetHex(hash.toStdString()); - - priv->updateWallet(updated, status, showTransaction); -} - -void TransactionTableModel::updateConfirmations() -{ - // Blocks came in since last poll. - // Invalidate status (number of confirmations) and (possibly) description - // for all rows. Qt is smart enough to only actually request the data for the - // visible rows. - Q_EMIT dataChanged(index(0, Status), index(priv->size()-1, Status)); - Q_EMIT dataChanged(index(0, ToAddress), index(priv->size()-1, ToAddress)); -} - -int TransactionTableModel::rowCount(const QModelIndex &parent) const -{ - Q_UNUSED(parent); - return priv->size(); -} - -int TransactionTableModel::columnCount(const QModelIndex &parent) const -{ - Q_UNUSED(parent); - return columns.length(); -} - -QString TransactionTableModel::formatTxStatus(const TransactionRecord *wtx) const -{ - QString status; - - switch(wtx->status.status) - { - case TransactionStatus::OpenUntilBlock: - status = tr("Open for %n more block(s)","",wtx->status.open_for); - break; - case TransactionStatus::OpenUntilDate: - status = tr("Open until %1").arg(GUIUtil::dateTimeStr(wtx->status.open_for)); - break; - case TransactionStatus::Offline: - status = tr("Offline"); - break; - case TransactionStatus::Unconfirmed: - status = tr("Unconfirmed"); - break; - case TransactionStatus::Confirming: - status = tr("Confirming (%1 of %2 recommended confirmations)").arg(wtx->status.depth).arg(TransactionRecord::RecommendedNumConfirmations); - break; - case TransactionStatus::Confirmed: - status = tr("Confirmed (%1 confirmations)").arg(wtx->status.depth); - break; - case TransactionStatus::Conflicted: - status = tr("Conflicted"); - break; - case TransactionStatus::Immature: - status = tr("Immature (%1 confirmations, will be available after %2)").arg(wtx->status.depth).arg(wtx->status.depth + wtx->status.matures_in); - break; - case TransactionStatus::MaturesWarning: - status = tr("This block was not received by any other nodes and will probably not be accepted!"); - break; - case TransactionStatus::NotAccepted: - status = tr("Generated but not accepted"); - break; - } - - return status; -} - -QString TransactionTableModel::formatTxDate(const TransactionRecord *wtx) const -{ - if(wtx->time) - { - return GUIUtil::dateTimeStr(wtx->time); - } - return QString(); -} - -/* Look up address in address book, if found return label (address) - otherwise just return (address) - */ -QString TransactionTableModel::lookupAddress(const std::string &address, bool tooltip) const -{ - QString label = walletModel->getAddressTableModel()->labelForAddress(QString::fromStdString(address)); - QString description; - if(!label.isEmpty()) - { - description += label; - } - if(label.isEmpty() || tooltip) - { - description += QString(" (") + QString::fromStdString(address) + QString(")"); - } - return description; -} - -QString TransactionTableModel::formatTxType(const TransactionRecord *wtx) const -{ - switch(wtx->type) - { - case TransactionRecord::RecvWithAddress: - return tr("Received with"); - case TransactionRecord::RecvFromOther: - return tr("Received from"); - case TransactionRecord::SendToAddress: - case TransactionRecord::SendToOther: - return tr("Sent to"); - case TransactionRecord::SendToSelf: - return tr("Payment to yourself"); - case TransactionRecord::Generated: - return tr("Mined"); - default: - return QString(); - } -} - -QVariant TransactionTableModel::txAddressDecoration(const TransactionRecord *wtx) const -{ - switch(wtx->type) - { - case TransactionRecord::Generated: - return QIcon(":/icons/tx_mined"); - case TransactionRecord::RecvWithAddress: - case TransactionRecord::RecvFromOther: - return QIcon(":/icons/tx_input"); - case TransactionRecord::SendToAddress: - case TransactionRecord::SendToOther: - return QIcon(":/icons/tx_output"); - default: - return QIcon(":/icons/tx_inout"); - } -} - -QString TransactionTableModel::formatTxToAddress(const TransactionRecord *wtx, bool tooltip) const -{ - QString watchAddress; - if (tooltip) { - // Mark transactions involving watch-only addresses by adding " (watch-only)" - watchAddress = wtx->involvesWatchAddress ? QString(" (") + tr("watch-only") + QString(")") : ""; - } - - switch(wtx->type) - { - case TransactionRecord::RecvFromOther: - return QString::fromStdString(wtx->address) + watchAddress; - case TransactionRecord::RecvWithAddress: - case TransactionRecord::SendToAddress: - case TransactionRecord::Generated: - return lookupAddress(wtx->address, tooltip) + watchAddress; - case TransactionRecord::SendToOther: - return QString::fromStdString(wtx->address) + watchAddress; - case TransactionRecord::SendToSelf: - default: - return tr("(n/a)") + watchAddress; - } -} - -QVariant TransactionTableModel::addressColor(const TransactionRecord *wtx) const -{ - // Show addresses without label in a less visible color - switch(wtx->type) - { - case TransactionRecord::RecvWithAddress: - case TransactionRecord::SendToAddress: - case TransactionRecord::Generated: - { - QString label = walletModel->getAddressTableModel()->labelForAddress(QString::fromStdString(wtx->address)); - if(label.isEmpty()) - return COLOR_BAREADDRESS; - } break; - case TransactionRecord::SendToSelf: - return COLOR_BAREADDRESS; - default: - break; - } - return QVariant(); -} - -QString TransactionTableModel::formatTxAmount(const TransactionRecord *wtx, bool showUnconfirmed, BitcoinUnits::SeparatorStyle separators) const -{ - QString str = BitcoinUnits::format(walletModel->getOptionsModel()->getDisplayUnit(), wtx->credit + wtx->debit, false, separators); - if(showUnconfirmed) - { - if(!wtx->status.countsForBalance) - { - str = QString("[") + str + QString("]"); - } - } - return QString(str); -} - -QVariant TransactionTableModel::txStatusDecoration(const TransactionRecord *wtx) const -{ - switch(wtx->status.status) - { - case TransactionStatus::OpenUntilBlock: - case TransactionStatus::OpenUntilDate: - return COLOR_TX_STATUS_OPENUNTILDATE; - case TransactionStatus::Offline: - return COLOR_TX_STATUS_OFFLINE; - case TransactionStatus::Unconfirmed: - return QIcon(":/icons/transaction_0"); - case TransactionStatus::Confirming: - switch(wtx->status.depth) - { - case 1: return QIcon(":/icons/transaction_1"); - case 2: return QIcon(":/icons/transaction_2"); - case 3: return QIcon(":/icons/transaction_3"); - case 4: return QIcon(":/icons/transaction_4"); - default: return QIcon(":/icons/transaction_5"); - }; - case TransactionStatus::Confirmed: - return QIcon(":/icons/transaction_confirmed"); - case TransactionStatus::Conflicted: - return QIcon(":/icons/transaction_conflicted"); - case TransactionStatus::Immature: { - int total = wtx->status.depth + wtx->status.matures_in; - int part = (wtx->status.depth * 4 / total) + 1; - return QIcon(QString(":/icons/transaction_%1").arg(part)); - } - case TransactionStatus::MaturesWarning: - case TransactionStatus::NotAccepted: - return QIcon(":/icons/transaction_0"); - default: - return COLOR_BLACK; - } -} - -QVariant TransactionTableModel::txWatchonlyDecoration(const TransactionRecord *wtx) const -{ - if (wtx->involvesWatchAddress) - return QIcon(":/icons/eye"); - else - return QVariant(); -} - -QString TransactionTableModel::formatTooltip(const TransactionRecord *rec) const -{ - QString tooltip = formatTxStatus(rec) + QString("\n") + formatTxType(rec); - if(rec->type==TransactionRecord::RecvFromOther || rec->type==TransactionRecord::SendToOther || - rec->type==TransactionRecord::SendToAddress || rec->type==TransactionRecord::RecvWithAddress) - { - tooltip += QString(" ") + formatTxToAddress(rec, true); - } - return tooltip; -} - -QVariant TransactionTableModel::data(const QModelIndex &index, int role) const -{ - if(!index.isValid()) - return QVariant(); - TransactionRecord *rec = static_cast(index.internalPointer()); - - switch(role) - { - case RawDecorationRole: - switch(index.column()) - { - case Status: - return txStatusDecoration(rec); - case Watchonly: - return txWatchonlyDecoration(rec); - case ToAddress: - return txAddressDecoration(rec); - } - break; - case Qt::DecorationRole: - { - QIcon icon = qvariant_cast(index.data(RawDecorationRole)); - return TextColorIcon(icon); - } - case Qt::DisplayRole: - switch(index.column()) - { - case Date: - return formatTxDate(rec); - case Type: - return formatTxType(rec); - case ToAddress: - return formatTxToAddress(rec, false); - case Amount: - return formatTxAmount(rec, true, BitcoinUnits::separatorAlways); - } - break; - case Qt::EditRole: - // Edit role is used for sorting, so return the unformatted values - switch(index.column()) - { - case Status: - return QString::fromStdString(rec->status.sortKey); - case Date: - return rec->time; - case Type: - return formatTxType(rec); - case Watchonly: - return (rec->involvesWatchAddress ? 1 : 0); - case ToAddress: - return formatTxToAddress(rec, true); - case Amount: - return qint64(rec->credit + rec->debit); - } - break; - case Qt::ToolTipRole: - return formatTooltip(rec); - case Qt::TextAlignmentRole: - return column_alignments[index.column()]; - case Qt::ForegroundRole: - // Non-confirmed (but not immature) as transactions are grey - if(!rec->status.countsForBalance && rec->status.status != TransactionStatus::Immature) - { - return COLOR_UNCONFIRMED; - } - if(index.column() == Amount && (rec->credit+rec->debit) < 0) - { - return COLOR_NEGATIVE; - } - if(index.column() == ToAddress) - { - return addressColor(rec); - } - break; - case TypeRole: - return rec->type; - case DateRole: - return QDateTime::fromTime_t(static_cast(rec->time)); - case WatchonlyRole: - return rec->involvesWatchAddress; - case WatchonlyDecorationRole: - return txWatchonlyDecoration(rec); - case LongDescriptionRole: - return priv->describe(rec, walletModel->getOptionsModel()->getDisplayUnit()); - case AddressRole: - return QString::fromStdString(rec->address); - case LabelRole: - return walletModel->getAddressTableModel()->labelForAddress(QString::fromStdString(rec->address)); - case AmountRole: - return qint64(rec->credit + rec->debit); - case TxIDRole: - return rec->getTxID(); - case TxHashRole: - return QString::fromStdString(rec->hash.ToString()); - case ConfirmedRole: - return rec->status.countsForBalance; - case FormattedAmountRole: - // Used for copy/export, so don't include separators - return formatTxAmount(rec, false, BitcoinUnits::separatorNever); - case StatusRole: - return rec->status.status; - } - return QVariant(); -} - -QVariant TransactionTableModel::headerData(int section, Qt::Orientation orientation, int role) const -{ - if(orientation == Qt::Horizontal) - { - if(role == Qt::DisplayRole) - { - return columns[section]; - } - else if (role == Qt::TextAlignmentRole) - { - return column_alignments[section]; - } else if (role == Qt::ToolTipRole) - { - switch(section) - { - case Status: - return tr("Transaction status. Hover over this field to show number of confirmations."); - case Date: - return tr("Date and time that the transaction was received."); - case Type: - return tr("Type of transaction."); - case Watchonly: - return tr("Whether or not a watch-only address is involved in this transaction."); - case ToAddress: - return tr("User-defined intent/purpose of the transaction."); - case Amount: - return tr("Amount removed from or added to balance."); - } - } - } - return QVariant(); -} - -QModelIndex TransactionTableModel::index(int row, int column, const QModelIndex &parent) const -{ - Q_UNUSED(parent); - TransactionRecord *data = priv->index(row); - if(data) - { - return createIndex(row, column, priv->index(row)); - } - return QModelIndex(); -} - -void TransactionTableModel::updateDisplayUnit() -{ - // emit dataChanged to update Amount column with the current unit - updateAmountColumnTitle(); - Q_EMIT dataChanged(index(0, Amount), index(priv->size()-1, Amount)); -} - -// queue notifications to show a non freezing progress dialog e.g. for rescan -struct TransactionNotification -{ -public: - TransactionNotification() {} - TransactionNotification(uint256 hash, ChangeType status, bool showTransaction): - hash(hash), status(status), showTransaction(showTransaction) {} - - void invoke(QObject *ttm) - { - QString strHash = QString::fromStdString(hash.GetHex()); - qDebug() << "NotifyTransactionChanged: " + strHash + " status= " + QString::number(status); - QMetaObject::invokeMethod(ttm, "updateTransaction", Qt::QueuedConnection, - Q_ARG(QString, strHash), - Q_ARG(int, status), - Q_ARG(bool, showTransaction)); - } -private: - uint256 hash; - ChangeType status; - bool showTransaction; -}; - -static bool fQueueNotifications = false; -static std::vector< TransactionNotification > vQueueNotifications; - -static void NotifyTransactionChanged(TransactionTableModel *ttm, CWallet *wallet, const uint256 &hash, ChangeType status) -{ - // Find transaction in wallet - std::map::iterator mi = wallet->mapWallet.find(hash); - // Determine whether to show transaction or not (determine this here so that no relocking is needed in GUI thread) - bool inWallet = mi != wallet->mapWallet.end(); - bool showTransaction = (inWallet && TransactionRecord::showTransaction(mi->second)); - - TransactionNotification notification(hash, status, showTransaction); - - if (fQueueNotifications) - { - vQueueNotifications.push_back(notification); - return; - } - notification.invoke(ttm); -} - -static void ShowProgress(TransactionTableModel *ttm, const std::string &title, int nProgress) -{ - if (nProgress == 0) - fQueueNotifications = true; - - if (nProgress == 100) - { - fQueueNotifications = false; - if (vQueueNotifications.size() > 10) // prevent balloon spam, show maximum 10 balloons - QMetaObject::invokeMethod(ttm, "setProcessingQueuedTransactions", Qt::QueuedConnection, Q_ARG(bool, true)); - for (unsigned int i = 0; i < vQueueNotifications.size(); ++i) - { - if (vQueueNotifications.size() - i <= 10) - QMetaObject::invokeMethod(ttm, "setProcessingQueuedTransactions", Qt::QueuedConnection, Q_ARG(bool, false)); - - vQueueNotifications[i].invoke(ttm); - } - std::vector().swap(vQueueNotifications); // clear - } -} - -void TransactionTableModel::subscribeToCoreSignals() -{ - // Connect signals to wallet - wallet->NotifyTransactionChanged.connect(boost::bind(NotifyTransactionChanged, this, _1, _2, _3)); - wallet->ShowProgress.connect(boost::bind(ShowProgress, this, _1, _2)); -} - -void TransactionTableModel::unsubscribeFromCoreSignals() -{ - // Disconnect signals from wallet - wallet->NotifyTransactionChanged.disconnect(boost::bind(NotifyTransactionChanged, this, _1, _2, _3)); - wallet->ShowProgress.disconnect(boost::bind(ShowProgress, this, _1, _2)); -} diff --git a/src/qt/transactiontablemodel.h b/src/qt/transactiontablemodel.h deleted file mode 100644 index 25c82c764..000000000 --- a/src/qt/transactiontablemodel.h +++ /dev/null @@ -1,114 +0,0 @@ -// Copyright (c) 2011-2013 The Bitcoin Core developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#ifndef BITCOIN_QT_TRANSACTIONTABLEMODEL_H -#define BITCOIN_QT_TRANSACTIONTABLEMODEL_H - -#include "bitcoinunits.h" - -#include -#include - -class TransactionRecord; -class TransactionTablePriv; -class WalletModel; - -class CWallet; - -/** UI model for the transaction table of a wallet. - */ -class TransactionTableModel : public QAbstractTableModel -{ - Q_OBJECT - -public: - explicit TransactionTableModel(CWallet* wallet, WalletModel *parent = 0); - ~TransactionTableModel(); - - enum ColumnIndex { - Status = 0, - Watchonly = 1, - Date = 2, - Type = 3, - ToAddress = 4, - Amount = 5 - }; - - /** Roles to get specific information from a transaction row. - These are independent of column. - */ - enum RoleIndex { - /** Type of transaction */ - TypeRole = Qt::UserRole, - /** Date and time this transaction was created */ - DateRole, - /** Watch-only boolean */ - WatchonlyRole, - /** Watch-only icon */ - WatchonlyDecorationRole, - /** Long description (HTML format) */ - LongDescriptionRole, - /** Address of transaction */ - AddressRole, - /** Label of address related to transaction */ - LabelRole, - /** Net amount of transaction */ - AmountRole, - /** Unique identifier */ - TxIDRole, - /** Transaction hash */ - TxHashRole, - /** Is transaction confirmed? */ - ConfirmedRole, - /** Formatted amount, without brackets when unconfirmed */ - FormattedAmountRole, - /** Transaction status (TransactionRecord::Status) */ - StatusRole, - /** Unprocessed icon */ - RawDecorationRole, - }; - - int rowCount(const QModelIndex &parent) const; - int columnCount(const QModelIndex &parent) const; - QVariant data(const QModelIndex &index, int role) const; - QVariant headerData(int section, Qt::Orientation orientation, int role) const; - QModelIndex index(int row, int column, const QModelIndex & parent = QModelIndex()) const; - bool processingQueuedTransactions() { return fProcessingQueuedTransactions; } - -private: - CWallet* wallet; - WalletModel *walletModel; - QStringList columns; - TransactionTablePriv *priv; - bool fProcessingQueuedTransactions; - - void subscribeToCoreSignals(); - void unsubscribeFromCoreSignals(); - - QString lookupAddress(const std::string &address, bool tooltip) const; - QVariant addressColor(const TransactionRecord *wtx) const; - QString formatTxStatus(const TransactionRecord *wtx) const; - QString formatTxDate(const TransactionRecord *wtx) const; - QString formatTxType(const TransactionRecord *wtx) const; - QString formatTxToAddress(const TransactionRecord *wtx, bool tooltip) const; - QString formatTxAmount(const TransactionRecord *wtx, bool showUnconfirmed=true, BitcoinUnits::SeparatorStyle separators=BitcoinUnits::separatorStandard) const; - QString formatTooltip(const TransactionRecord *rec) const; - QVariant txStatusDecoration(const TransactionRecord *wtx) const; - QVariant txWatchonlyDecoration(const TransactionRecord *wtx) const; - QVariant txAddressDecoration(const TransactionRecord *wtx) const; - -public Q_SLOTS: - /* New transaction, or transaction changed status */ - void updateTransaction(const QString &hash, int status, bool showTransaction); - void updateConfirmations(); - void updateDisplayUnit(); - /** Updates the column title to "Amount (DisplayUnit)" and emits headerDataChanged() signal for table headers to react. */ - void updateAmountColumnTitle(); - /* Needed to update fProcessingQueuedTransactions through a QueuedConnection */ - void setProcessingQueuedTransactions(bool value) { fProcessingQueuedTransactions = value; } - - friend class TransactionTablePriv; -}; - -#endif // BITCOIN_QT_TRANSACTIONTABLEMODEL_H diff --git a/src/qt/transactionview.cpp b/src/qt/transactionview.cpp deleted file mode 100644 index 998789b3a..000000000 --- a/src/qt/transactionview.cpp +++ /dev/null @@ -1,536 +0,0 @@ -// Copyright (c) 2011-2013 The Bitcoin Core developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#include "transactionview.h" - -#include "addresstablemodel.h" -#include "bitcoinunits.h" -#include "csvmodelwriter.h" -#include "editaddressdialog.h" -#include "guiutil.h" -#include "optionsmodel.h" -#include "scicon.h" -#include "transactiondescdialog.h" -#include "transactionfilterproxy.h" -#include "transactionrecord.h" -#include "transactiontablemodel.h" -#include "walletmodel.h" - -#include "ui_interface.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -TransactionView::TransactionView(QWidget *parent) : - QWidget(parent), model(0), transactionProxyModel(0), - transactionView(0) -{ - // Build filter row - setContentsMargins(0,0,0,0); - - QHBoxLayout *hlayout = new QHBoxLayout(); - hlayout->setContentsMargins(0,0,0,0); -#ifdef Q_OS_MAC - hlayout->setSpacing(5); - hlayout->addSpacing(26); -#else - hlayout->setSpacing(0); - hlayout->addSpacing(23); -#endif - - watchOnlyWidget = new QComboBox(this); - watchOnlyWidget->setFixedWidth(24); - watchOnlyWidget->addItem("", TransactionFilterProxy::WatchOnlyFilter_All); - watchOnlyWidget->addItem(SingleColorIcon(":/icons/eye_plus"), "", TransactionFilterProxy::WatchOnlyFilter_Yes); - watchOnlyWidget->addItem(SingleColorIcon(":/icons/eye_minus"), "", TransactionFilterProxy::WatchOnlyFilter_No); - hlayout->addWidget(watchOnlyWidget); - - dateWidget = new QComboBox(this); -#ifdef Q_OS_MAC - dateWidget->setFixedWidth(121); -#else - dateWidget->setFixedWidth(120); -#endif - dateWidget->addItem(tr("All"), All); - dateWidget->addItem(tr("Today"), Today); - dateWidget->addItem(tr("This week"), ThisWeek); - dateWidget->addItem(tr("This month"), ThisMonth); - dateWidget->addItem(tr("Last month"), LastMonth); - dateWidget->addItem(tr("This year"), ThisYear); - dateWidget->addItem(tr("Range..."), Range); - hlayout->addWidget(dateWidget); - - typeWidget = new QComboBox(this); -#ifdef Q_OS_MAC - typeWidget->setFixedWidth(121); -#else - typeWidget->setFixedWidth(120); -#endif - - typeWidget->addItem(tr("All"), TransactionFilterProxy::ALL_TYPES); - typeWidget->addItem(tr("Received with"), TransactionFilterProxy::TYPE(TransactionRecord::RecvWithAddress) | - TransactionFilterProxy::TYPE(TransactionRecord::RecvFromOther)); - typeWidget->addItem(tr("Sent to"), TransactionFilterProxy::TYPE(TransactionRecord::SendToAddress) | - TransactionFilterProxy::TYPE(TransactionRecord::SendToOther)); - typeWidget->addItem(tr("To yourself"), TransactionFilterProxy::TYPE(TransactionRecord::SendToSelf)); - typeWidget->addItem(tr("Mined"), TransactionFilterProxy::TYPE(TransactionRecord::Generated)); - typeWidget->addItem(tr("Other"), TransactionFilterProxy::TYPE(TransactionRecord::Other)); - - hlayout->addWidget(typeWidget); - - addressWidget = new QLineEdit(this); -#if QT_VERSION >= 0x040700 - addressWidget->setPlaceholderText(tr("Enter address or label to search")); -#endif - hlayout->addWidget(addressWidget); - - amountWidget = new QLineEdit(this); -#if QT_VERSION >= 0x040700 - amountWidget->setPlaceholderText(tr("Min amount")); -#endif -#ifdef Q_OS_MAC - amountWidget->setFixedWidth(97); -#else - amountWidget->setFixedWidth(100); -#endif - amountWidget->setValidator(new QDoubleValidator(0, 1e20, 8, this)); - hlayout->addWidget(amountWidget); - - QVBoxLayout *vlayout = new QVBoxLayout(this); - vlayout->setContentsMargins(0,0,0,0); - vlayout->setSpacing(0); - - QTableView *view = new QTableView(this); - vlayout->addLayout(hlayout); - vlayout->addWidget(createDateRangeWidget()); - vlayout->addWidget(view); - vlayout->setSpacing(0); - int width = view->verticalScrollBar()->sizeHint().width(); - // Cover scroll bar width with spacing -#ifdef Q_OS_MAC - hlayout->addSpacing(width+2); -#else - hlayout->addSpacing(width); -#endif - // Always show scroll bar - view->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn); - view->setTabKeyNavigation(false); - view->setContextMenuPolicy(Qt::CustomContextMenu); - - view->installEventFilter(this); - - transactionView = view; - - // Actions - QAction *copyAddressAction = new QAction(tr("Copy address"), this); - QAction *copyLabelAction = new QAction(tr("Copy label"), this); - QAction *copyAmountAction = new QAction(tr("Copy amount"), this); - QAction *copyTxIDAction = new QAction(tr("Copy transaction ID"), this); - QAction *editLabelAction = new QAction(tr("Edit label"), this); - QAction *showDetailsAction = new QAction(tr("Show transaction details"), this); - - contextMenu = new QMenu(); - contextMenu->addAction(copyAddressAction); - contextMenu->addAction(copyLabelAction); - contextMenu->addAction(copyAmountAction); - contextMenu->addAction(copyTxIDAction); - contextMenu->addAction(editLabelAction); - contextMenu->addAction(showDetailsAction); - - mapperThirdPartyTxUrls = new QSignalMapper(this); - - // Connect actions - connect(mapperThirdPartyTxUrls, SIGNAL(mapped(QString)), this, SLOT(openThirdPartyTxUrl(QString))); - - connect(dateWidget, SIGNAL(activated(int)), this, SLOT(chooseDate(int))); - connect(typeWidget, SIGNAL(activated(int)), this, SLOT(chooseType(int))); - connect(watchOnlyWidget, SIGNAL(activated(int)), this, SLOT(chooseWatchonly(int))); - connect(addressWidget, SIGNAL(textChanged(QString)), this, SLOT(changedPrefix(QString))); - connect(amountWidget, SIGNAL(textChanged(QString)), this, SLOT(changedAmount(QString))); - - connect(view, SIGNAL(doubleClicked(QModelIndex)), this, SIGNAL(doubleClicked(QModelIndex))); - connect(view, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(contextualMenu(QPoint))); - - connect(copyAddressAction, SIGNAL(triggered()), this, SLOT(copyAddress())); - connect(copyLabelAction, SIGNAL(triggered()), this, SLOT(copyLabel())); - connect(copyAmountAction, SIGNAL(triggered()), this, SLOT(copyAmount())); - connect(copyTxIDAction, SIGNAL(triggered()), this, SLOT(copyTxID())); - connect(editLabelAction, SIGNAL(triggered()), this, SLOT(editLabel())); - connect(showDetailsAction, SIGNAL(triggered()), this, SLOT(showDetails())); -} - -void TransactionView::setModel(WalletModel *model) -{ - this->model = model; - if(model) - { - transactionProxyModel = new TransactionFilterProxy(this); - transactionProxyModel->setSourceModel(model->getTransactionTableModel()); - transactionProxyModel->setDynamicSortFilter(true); - transactionProxyModel->setSortCaseSensitivity(Qt::CaseInsensitive); - transactionProxyModel->setFilterCaseSensitivity(Qt::CaseInsensitive); - - transactionProxyModel->setSortRole(Qt::EditRole); - - transactionView->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - transactionView->setModel(transactionProxyModel); - transactionView->setAlternatingRowColors(true); - transactionView->setSelectionBehavior(QAbstractItemView::SelectRows); - transactionView->setSelectionMode(QAbstractItemView::ExtendedSelection); - transactionView->setSortingEnabled(true); - transactionView->sortByColumn(TransactionTableModel::Status, Qt::DescendingOrder); - transactionView->verticalHeader()->hide(); - - transactionView->setColumnWidth(TransactionTableModel::Status, STATUS_COLUMN_WIDTH); - transactionView->setColumnWidth(TransactionTableModel::Watchonly, WATCHONLY_COLUMN_WIDTH); - transactionView->setColumnWidth(TransactionTableModel::Date, DATE_COLUMN_WIDTH); - transactionView->setColumnWidth(TransactionTableModel::Type, TYPE_COLUMN_WIDTH); - transactionView->setColumnWidth(TransactionTableModel::Amount, AMOUNT_MINIMUM_COLUMN_WIDTH); - - columnResizingFixer = new GUIUtil::TableViewLastColumnResizingFixer(transactionView, AMOUNT_MINIMUM_COLUMN_WIDTH, MINIMUM_COLUMN_WIDTH); - - if (model->getOptionsModel()) - { - // Add third party transaction URLs to context menu - QStringList listUrls = model->getOptionsModel()->getThirdPartyTxUrls().split("|", QString::SkipEmptyParts); - for (int i = 0; i < listUrls.size(); ++i) - { - QString host = QUrl(listUrls[i].trimmed(), QUrl::StrictMode).host(); - if (!host.isEmpty()) - { - QAction *thirdPartyTxUrlAction = new QAction(host, this); // use host as menu item label - if (i == 0) - contextMenu->addSeparator(); - contextMenu->addAction(thirdPartyTxUrlAction); - connect(thirdPartyTxUrlAction, SIGNAL(triggered()), mapperThirdPartyTxUrls, SLOT(map())); - mapperThirdPartyTxUrls->setMapping(thirdPartyTxUrlAction, listUrls[i].trimmed()); - } - } - } - - // show/hide column Watch-only - updateWatchOnlyColumn(model->haveWatchOnly()); - - // Watch-only signal - connect(model, SIGNAL(notifyWatchonlyChanged(bool)), this, SLOT(updateWatchOnlyColumn(bool))); - } -} - -void TransactionView::chooseDate(int idx) -{ - if(!transactionProxyModel) - return; - QDate current = QDate::currentDate(); - dateRangeWidget->setVisible(false); - switch(dateWidget->itemData(idx).toInt()) - { - case All: - transactionProxyModel->setDateRange( - TransactionFilterProxy::MIN_DATE, - TransactionFilterProxy::MAX_DATE); - break; - case Today: - transactionProxyModel->setDateRange( - QDateTime(current), - TransactionFilterProxy::MAX_DATE); - break; - case ThisWeek: { - // Find last Monday - QDate startOfWeek = current.addDays(-(current.dayOfWeek()-1)); - transactionProxyModel->setDateRange( - QDateTime(startOfWeek), - TransactionFilterProxy::MAX_DATE); - - } break; - case ThisMonth: - transactionProxyModel->setDateRange( - QDateTime(QDate(current.year(), current.month(), 1)), - TransactionFilterProxy::MAX_DATE); - break; - case LastMonth: - transactionProxyModel->setDateRange( - QDateTime(QDate(current.year(), current.month()-1, 1)), - QDateTime(QDate(current.year(), current.month(), 1))); - break; - case ThisYear: - transactionProxyModel->setDateRange( - QDateTime(QDate(current.year(), 1, 1)), - TransactionFilterProxy::MAX_DATE); - break; - case Range: - dateRangeWidget->setVisible(true); - dateRangeChanged(); - break; - } -} - -void TransactionView::chooseType(int idx) -{ - if(!transactionProxyModel) - return; - transactionProxyModel->setTypeFilter( - typeWidget->itemData(idx).toInt()); -} - -void TransactionView::chooseWatchonly(int idx) -{ - if(!transactionProxyModel) - return; - transactionProxyModel->setWatchOnlyFilter( - (TransactionFilterProxy::WatchOnlyFilter)watchOnlyWidget->itemData(idx).toInt()); -} - -void TransactionView::changedPrefix(const QString &prefix) -{ - if(!transactionProxyModel) - return; - transactionProxyModel->setAddressPrefix(prefix); -} - -void TransactionView::changedAmount(const QString &amount) -{ - if(!transactionProxyModel) - return; - CAmount amount_parsed = 0; - if(BitcoinUnits::parse(model->getOptionsModel()->getDisplayUnit(), amount, &amount_parsed)) - { - transactionProxyModel->setMinAmount(amount_parsed); - } - else - { - transactionProxyModel->setMinAmount(0); - } -} - -void TransactionView::exportClicked() -{ - // CSV is currently the only supported format - QString filename = GUIUtil::getSaveFileName(this, - tr("Export Transaction History"), QString(), - tr("Comma separated file (*.csv)"), NULL); - - if (filename.isNull()) - return; - - CSVModelWriter writer(filename); - - // name, column, role - writer.setModel(transactionProxyModel); - writer.addColumn(tr("Confirmed"), 0, TransactionTableModel::ConfirmedRole); - if (model && model->haveWatchOnly()) - writer.addColumn(tr("Watch-only"), TransactionTableModel::Watchonly); - writer.addColumn(tr("Date"), 0, TransactionTableModel::DateRole); - writer.addColumn(tr("Type"), TransactionTableModel::Type, Qt::EditRole); - writer.addColumn(tr("Label"), 0, TransactionTableModel::LabelRole); - writer.addColumn(tr("Address"), 0, TransactionTableModel::AddressRole); - writer.addColumn(BitcoinUnits::getAmountColumnTitle(model->getOptionsModel()->getDisplayUnit()), 0, TransactionTableModel::FormattedAmountRole); - writer.addColumn(tr("ID"), 0, TransactionTableModel::TxIDRole); - - if(!writer.write()) { - Q_EMIT message(tr("Exporting Failed"), tr("There was an error trying to save the transaction history to %1.").arg(filename), - CClientUIInterface::MSG_ERROR); - } - else { - Q_EMIT message(tr("Exporting Successful"), tr("The transaction history was successfully saved to %1.").arg(filename), - CClientUIInterface::MSG_INFORMATION); - } -} - -void TransactionView::contextualMenu(const QPoint &point) -{ - QModelIndex index = transactionView->indexAt(point); - if(index.isValid()) - { - contextMenu->exec(QCursor::pos()); - } -} - -void TransactionView::copyAddress() -{ - GUIUtil::copyEntryData(transactionView, 0, TransactionTableModel::AddressRole); -} - -void TransactionView::copyLabel() -{ - GUIUtil::copyEntryData(transactionView, 0, TransactionTableModel::LabelRole); -} - -void TransactionView::copyAmount() -{ - GUIUtil::copyEntryData(transactionView, 0, TransactionTableModel::FormattedAmountRole); -} - -void TransactionView::copyTxID() -{ - GUIUtil::copyEntryData(transactionView, 0, TransactionTableModel::TxIDRole); -} - -void TransactionView::editLabel() -{ - if(!transactionView->selectionModel() ||!model) - return; - QModelIndexList selection = transactionView->selectionModel()->selectedRows(); - if(!selection.isEmpty()) - { - AddressTableModel *addressBook = model->getAddressTableModel(); - if(!addressBook) - return; - QString address = selection.at(0).data(TransactionTableModel::AddressRole).toString(); - if(address.isEmpty()) - { - // If this transaction has no associated address, exit - return; - } - // Is address in address book? Address book can miss address when a transaction is - // sent from outside the UI. - int idx = addressBook->lookupAddress(address); - if(idx != -1) - { - // Edit sending / receiving address - QModelIndex modelIdx = addressBook->index(idx, 0, QModelIndex()); - // Determine type of address, launch appropriate editor dialog type - QString type = modelIdx.data(AddressTableModel::TypeRole).toString(); - - EditAddressDialog dlg( - type == AddressTableModel::Receive - ? EditAddressDialog::EditReceivingAddress - : EditAddressDialog::EditSendingAddress, this); - dlg.setModel(addressBook); - dlg.loadRow(idx); - dlg.exec(); - } - else - { - // Add sending address - EditAddressDialog dlg(EditAddressDialog::NewSendingAddress, - this); - dlg.setModel(addressBook); - dlg.setAddress(address); - dlg.exec(); - } - } -} - -void TransactionView::showDetails() -{ - if(!transactionView->selectionModel()) - return; - QModelIndexList selection = transactionView->selectionModel()->selectedRows(); - if(!selection.isEmpty()) - { - TransactionDescDialog dlg(selection.at(0)); - dlg.exec(); - } -} - -void TransactionView::openThirdPartyTxUrl(QString url) -{ - if(!transactionView || !transactionView->selectionModel()) - return; - QModelIndexList selection = transactionView->selectionModel()->selectedRows(0); - if(!selection.isEmpty()) - QDesktopServices::openUrl(QUrl::fromUserInput(url.replace("%s", selection.at(0).data(TransactionTableModel::TxHashRole).toString()))); -} - -QWidget *TransactionView::createDateRangeWidget() -{ - dateRangeWidget = new QFrame(); - dateRangeWidget->setFrameStyle(QFrame::Panel | QFrame::Raised); - dateRangeWidget->setContentsMargins(1,1,1,1); - QHBoxLayout *layout = new QHBoxLayout(dateRangeWidget); - layout->setContentsMargins(0,0,0,0); - layout->addSpacing(23); - layout->addWidget(new QLabel(tr("Range:"))); - - dateFrom = new QDateTimeEdit(this); - dateFrom->setDisplayFormat("dd/MM/yy"); - dateFrom->setCalendarPopup(true); - dateFrom->setMinimumWidth(100); - dateFrom->setDate(QDate::currentDate().addDays(-7)); - layout->addWidget(dateFrom); - layout->addWidget(new QLabel(tr("to"))); - - dateTo = new QDateTimeEdit(this); - dateTo->setDisplayFormat("dd/MM/yy"); - dateTo->setCalendarPopup(true); - dateTo->setMinimumWidth(100); - dateTo->setDate(QDate::currentDate()); - layout->addWidget(dateTo); - layout->addStretch(); - - // Hide by default - dateRangeWidget->setVisible(false); - - // Notify on change - connect(dateFrom, SIGNAL(dateChanged(QDate)), this, SLOT(dateRangeChanged())); - connect(dateTo, SIGNAL(dateChanged(QDate)), this, SLOT(dateRangeChanged())); - - return dateRangeWidget; -} - -void TransactionView::dateRangeChanged() -{ - if(!transactionProxyModel) - return; - transactionProxyModel->setDateRange( - QDateTime(dateFrom->date()), - QDateTime(dateTo->date()).addDays(1)); -} - -void TransactionView::focusTransaction(const QModelIndex &idx) -{ - if(!transactionProxyModel) - return; - QModelIndex targetIdx = transactionProxyModel->mapFromSource(idx); - transactionView->scrollTo(targetIdx); - transactionView->setCurrentIndex(targetIdx); - transactionView->setFocus(); -} - -// We override the virtual resizeEvent of the QWidget to adjust tables column -// sizes as the tables width is proportional to the dialogs width. -void TransactionView::resizeEvent(QResizeEvent* event) -{ - QWidget::resizeEvent(event); - columnResizingFixer->stretchColumnWidth(TransactionTableModel::ToAddress); -} - -// Need to override default Ctrl+C action for amount as default behaviour is just to copy DisplayRole text -bool TransactionView::eventFilter(QObject *obj, QEvent *event) -{ - if (event->type() == QEvent::KeyPress) - { - QKeyEvent *ke = static_cast(event); - if (ke->key() == Qt::Key_C && ke->modifiers().testFlag(Qt::ControlModifier)) - { - QModelIndex i = this->transactionView->currentIndex(); - if (i.isValid() && i.column() == TransactionTableModel::Amount) - { - GUIUtil::setClipboard(i.data(TransactionTableModel::FormattedAmountRole).toString()); - return true; - } - } - } - return QWidget::eventFilter(obj, event); -} - -// show/hide column Watch-only -void TransactionView::updateWatchOnlyColumn(bool fHaveWatchOnly) -{ - watchOnlyWidget->setVisible(fHaveWatchOnly); - transactionView->setColumnHidden(TransactionTableModel::Watchonly, !fHaveWatchOnly); -} diff --git a/src/qt/transactionview.h b/src/qt/transactionview.h deleted file mode 100644 index 6c35362be..000000000 --- a/src/qt/transactionview.h +++ /dev/null @@ -1,115 +0,0 @@ -// Copyright (c) 2011-2013 The Bitcoin Core developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#ifndef BITCOIN_QT_TRANSACTIONVIEW_H -#define BITCOIN_QT_TRANSACTIONVIEW_H - -#include "guiutil.h" - -#include -#include - -class TransactionFilterProxy; -class WalletModel; - -QT_BEGIN_NAMESPACE -class QComboBox; -class QDateTimeEdit; -class QFrame; -class QLineEdit; -class QMenu; -class QModelIndex; -class QSignalMapper; -class QTableView; -QT_END_NAMESPACE - -/** Widget showing the transaction list for a wallet, including a filter row. - Using the filter row, the user can view or export a subset of the transactions. - */ -class TransactionView : public QWidget -{ - Q_OBJECT - -public: - explicit TransactionView(QWidget *parent = 0); - - void setModel(WalletModel *model); - - // Date ranges for filter - enum DateEnum - { - All, - Today, - ThisWeek, - ThisMonth, - LastMonth, - ThisYear, - Range - }; - - enum ColumnWidths { - STATUS_COLUMN_WIDTH = 30, - WATCHONLY_COLUMN_WIDTH = 23, - DATE_COLUMN_WIDTH = 120, - TYPE_COLUMN_WIDTH = 113, - AMOUNT_MINIMUM_COLUMN_WIDTH = 120, - MINIMUM_COLUMN_WIDTH = 23 - }; - -private: - WalletModel *model; - TransactionFilterProxy *transactionProxyModel; - QTableView *transactionView; - - QComboBox *dateWidget; - QComboBox *typeWidget; - QComboBox *watchOnlyWidget; - QLineEdit *addressWidget; - QLineEdit *amountWidget; - - QMenu *contextMenu; - QSignalMapper *mapperThirdPartyTxUrls; - - QFrame *dateRangeWidget; - QDateTimeEdit *dateFrom; - QDateTimeEdit *dateTo; - - QWidget *createDateRangeWidget(); - - GUIUtil::TableViewLastColumnResizingFixer *columnResizingFixer; - - virtual void resizeEvent(QResizeEvent* event); - - bool eventFilter(QObject *obj, QEvent *event); - -private Q_SLOTS: - void contextualMenu(const QPoint &); - void dateRangeChanged(); - void showDetails(); - void copyAddress(); - void editLabel(); - void copyLabel(); - void copyAmount(); - void copyTxID(); - void openThirdPartyTxUrl(QString url); - void updateWatchOnlyColumn(bool fHaveWatchOnly); - -Q_SIGNALS: - void doubleClicked(const QModelIndex&); - - /** Fired when a message should be reported to the user */ - void message(const QString &title, const QString &message, unsigned int style); - -public Q_SLOTS: - void chooseDate(int idx); - void chooseType(int idx); - void chooseWatchonly(int idx); - void changedPrefix(const QString &prefix); - void changedAmount(const QString &amount); - void exportClicked(); - void focusTransaction(const QModelIndex&); - -}; - -#endif // BITCOIN_QT_TRANSACTIONVIEW_H diff --git a/src/qt/utilitydialog.h b/src/qt/utilitydialog.h deleted file mode 100644 index 47282ae2d..000000000 --- a/src/qt/utilitydialog.h +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright (c) 2011-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. - -#ifndef BITCOIN_QT_UTILITYDIALOG_H -#define BITCOIN_QT_UTILITYDIALOG_H - -#include -#include - -class BitcoinGUI; -class ClientModel; - -namespace Ui { - class HelpMessageDialog; -} - -/** "Help message" dialog box */ -class HelpMessageDialog : public QDialog -{ - Q_OBJECT - -public: - explicit HelpMessageDialog(QWidget *parent, bool about); - ~HelpMessageDialog(); - - void printToConsole(); - void showOrPrint(); - -private: - Ui::HelpMessageDialog *ui; - QString text; - -private Q_SLOTS: - void on_okButton_accepted(); -}; - - -/** "Shutdown" window */ -class ShutdownWindow : public QWidget -{ - Q_OBJECT - -public: - ShutdownWindow(QWidget *parent=0, Qt::WindowFlags f=0); - static void showShutdownWindow(BitcoinGUI *window); - -protected: - void closeEvent(QCloseEvent *event); -}; - -#endif // BITCOIN_QT_UTILITYDIALOG_H diff --git a/src/qt/walletframe.cpp b/src/qt/walletframe.cpp deleted file mode 100644 index 892947bf3..000000000 --- a/src/qt/walletframe.cpp +++ /dev/null @@ -1,196 +0,0 @@ -// Copyright (c) 2011-2013 The Bitcoin Core developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#include "walletframe.h" - -#include "bitcoingui.h" -#include "walletview.h" - -#include - -#include -#include - -WalletFrame::WalletFrame(BitcoinGUI *_gui) : - QFrame(_gui), - gui(_gui) -{ - // Leave HBox hook for adding a list view later - QHBoxLayout *walletFrameLayout = new QHBoxLayout(this); - setContentsMargins(0,0,0,0); - walletStack = new QStackedWidget(this); - walletFrameLayout->setContentsMargins(0,0,0,0); - walletFrameLayout->addWidget(walletStack); - - QLabel *noWallet = new QLabel(tr("No wallet has been loaded.")); - noWallet->setAlignment(Qt::AlignCenter); - walletStack->addWidget(noWallet); -} - -WalletFrame::~WalletFrame() -{ -} - -void WalletFrame::setClientModel(ClientModel *clientModel) -{ - this->clientModel = clientModel; -} - -bool WalletFrame::addWallet(const QString& name, WalletModel *walletModel) -{ - if (!gui || !clientModel || !walletModel || mapWalletViews.count(name) > 0) - return false; - - WalletView *walletView = new WalletView(this); - walletView->setBitcoinGUI(gui); - walletView->setClientModel(clientModel); - walletView->setWalletModel(walletModel); - walletView->showOutOfSyncWarning(bOutOfSync); - - /* TODO we should goto the currently selected page once dynamically adding wallets is supported */ - walletView->gotoOverviewPage(); - walletStack->addWidget(walletView); - mapWalletViews[name] = walletView; - - // Ensure a walletView is able to show the main window - connect(walletView, SIGNAL(showNormalIfMinimized()), gui, SLOT(showNormalIfMinimized())); - - return true; -} - -bool WalletFrame::setCurrentWallet(const QString& name) -{ - if (mapWalletViews.count(name) == 0) - return false; - - WalletView *walletView = mapWalletViews.value(name); - walletStack->setCurrentWidget(walletView); - walletView->updateEncryptionStatus(); - return true; -} - -bool WalletFrame::removeWallet(const QString &name) -{ - if (mapWalletViews.count(name) == 0) - return false; - - WalletView *walletView = mapWalletViews.take(name); - walletStack->removeWidget(walletView); - return true; -} - -void WalletFrame::removeAllWallets() -{ - QMap::const_iterator i; - for (i = mapWalletViews.constBegin(); i != mapWalletViews.constEnd(); ++i) - walletStack->removeWidget(i.value()); - mapWalletViews.clear(); -} - -bool WalletFrame::handlePaymentRequest(const SendCoinsRecipient &recipient) -{ - WalletView *walletView = currentWalletView(); - if (!walletView) - return false; - - return walletView->handlePaymentRequest(recipient); -} - -void WalletFrame::showOutOfSyncWarning(bool fShow) -{ - bOutOfSync = fShow; - QMap::const_iterator i; - for (i = mapWalletViews.constBegin(); i != mapWalletViews.constEnd(); ++i) - i.value()->showOutOfSyncWarning(fShow); -} - -void WalletFrame::gotoOverviewPage() -{ - QMap::const_iterator i; - for (i = mapWalletViews.constBegin(); i != mapWalletViews.constEnd(); ++i) - i.value()->gotoOverviewPage(); -} - -void WalletFrame::gotoHistoryPage() -{ - QMap::const_iterator i; - for (i = mapWalletViews.constBegin(); i != mapWalletViews.constEnd(); ++i) - i.value()->gotoHistoryPage(); -} - -void WalletFrame::gotoReceiveCoinsPage() -{ - QMap::const_iterator i; - for (i = mapWalletViews.constBegin(); i != mapWalletViews.constEnd(); ++i) - i.value()->gotoReceiveCoinsPage(); -} - -void WalletFrame::gotoSendCoinsPage(QString addr) -{ - QMap::const_iterator i; - for (i = mapWalletViews.constBegin(); i != mapWalletViews.constEnd(); ++i) - i.value()->gotoSendCoinsPage(addr); -} - -void WalletFrame::gotoSignMessageTab(QString addr) -{ - WalletView *walletView = currentWalletView(); - if (walletView) - walletView->gotoSignMessageTab(addr); -} - -void WalletFrame::gotoVerifyMessageTab(QString addr) -{ - WalletView *walletView = currentWalletView(); - if (walletView) - walletView->gotoVerifyMessageTab(addr); -} - -void WalletFrame::encryptWallet(bool status) -{ - WalletView *walletView = currentWalletView(); - if (walletView) - walletView->encryptWallet(status); -} - -void WalletFrame::backupWallet() -{ - WalletView *walletView = currentWalletView(); - if (walletView) - walletView->backupWallet(); -} - -void WalletFrame::changePassphrase() -{ - WalletView *walletView = currentWalletView(); - if (walletView) - walletView->changePassphrase(); -} - -void WalletFrame::unlockWallet() -{ - WalletView *walletView = currentWalletView(); - if (walletView) - walletView->unlockWallet(); -} - -void WalletFrame::usedSendingAddresses() -{ - WalletView *walletView = currentWalletView(); - if (walletView) - walletView->usedSendingAddresses(); -} - -void WalletFrame::usedReceivingAddresses() -{ - WalletView *walletView = currentWalletView(); - if (walletView) - walletView->usedReceivingAddresses(); -} - -WalletView *WalletFrame::currentWalletView() -{ - return qobject_cast(walletStack->currentWidget()); -} - diff --git a/src/qt/walletframe.h b/src/qt/walletframe.h deleted file mode 100644 index 5a5e2ab94..000000000 --- a/src/qt/walletframe.h +++ /dev/null @@ -1,80 +0,0 @@ -// Copyright (c) 2011-2013 The Bitcoin Core developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#ifndef BITCOIN_QT_WALLETFRAME_H -#define BITCOIN_QT_WALLETFRAME_H - -#include -#include - -class BitcoinGUI; -class ClientModel; -class SendCoinsRecipient; -class WalletModel; -class WalletView; - -QT_BEGIN_NAMESPACE -class QStackedWidget; -QT_END_NAMESPACE - -class WalletFrame : public QFrame -{ - Q_OBJECT - -public: - explicit WalletFrame(BitcoinGUI *_gui = 0); - ~WalletFrame(); - - void setClientModel(ClientModel *clientModel); - - bool addWallet(const QString& name, WalletModel *walletModel); - bool setCurrentWallet(const QString& name); - bool removeWallet(const QString &name); - void removeAllWallets(); - - bool handlePaymentRequest(const SendCoinsRecipient& recipient); - - void showOutOfSyncWarning(bool fShow); - -private: - QStackedWidget *walletStack; - BitcoinGUI *gui; - ClientModel *clientModel; - QMap mapWalletViews; - - bool bOutOfSync; - - WalletView *currentWalletView(); - -public Q_SLOTS: - /** Switch to overview (home) page */ - void gotoOverviewPage(); - /** Switch to history (transactions) page */ - void gotoHistoryPage(); - /** Switch to receive coins page */ - void gotoReceiveCoinsPage(); - /** Switch to send coins page */ - void gotoSendCoinsPage(QString addr = ""); - - /** Show Sign/Verify Message dialog and switch to sign message tab */ - void gotoSignMessageTab(QString addr = ""); - /** Show Sign/Verify Message dialog and switch to verify message tab */ - void gotoVerifyMessageTab(QString addr = ""); - - /** Encrypt the wallet */ - void encryptWallet(bool status); - /** Backup the wallet */ - void backupWallet(); - /** Change encrypted wallet passphrase */ - void changePassphrase(); - /** Ask for passphrase to unlock wallet temporarily */ - void unlockWallet(); - - /** Show used sending addresses */ - void usedSendingAddresses(); - /** Show used receiving addresses */ - void usedReceivingAddresses(); -}; - -#endif // BITCOIN_QT_WALLETFRAME_H diff --git a/src/qt/walletmodel.cpp b/src/qt/walletmodel.cpp deleted file mode 100644 index 2691fa930..000000000 --- a/src/qt/walletmodel.cpp +++ /dev/null @@ -1,663 +0,0 @@ -// Copyright (c) 2011-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. - -#include "walletmodel.h" - -#include "addresstablemodel.h" -#include "guiconstants.h" -#include "guiutil.h" -#include "paymentserver.h" -#include "recentrequeststablemodel.h" -#include "transactiontablemodel.h" - -#include "base58.h" -#include "keystore.h" -#include "main.h" -#include "sync.h" -#include "ui_interface.h" -#include "wallet/wallet.h" -#include "wallet/walletdb.h" // for BackupWallet - -#include - -#include -#include -#include - -using namespace std; - -WalletModel::WalletModel(CWallet *wallet, OptionsModel *optionsModel, QObject *parent) : - QObject(parent), wallet(wallet), optionsModel(optionsModel), addressTableModel(0), - transactionTableModel(0), - recentRequestsTableModel(0), - cachedBalance(0), cachedUnconfirmedBalance(0), cachedImmatureBalance(0), - cachedEncryptionStatus(Unencrypted), - cachedNumBlocks(0) -{ - fHaveWatchOnly = wallet->HaveWatchOnly(); - fForceCheckBalanceChanged = false; - - addressTableModel = new AddressTableModel(wallet, this); - transactionTableModel = new TransactionTableModel(wallet, this); - recentRequestsTableModel = new RecentRequestsTableModel(wallet, this); - - // This timer will be fired repeatedly to update the balance - pollTimer = new QTimer(this); - connect(pollTimer, SIGNAL(timeout()), this, SLOT(pollBalanceChanged())); - pollTimer->start(MODEL_UPDATE_DELAY); - - subscribeToCoreSignals(); -} - -WalletModel::~WalletModel() -{ - unsubscribeFromCoreSignals(); -} - -CAmount WalletModel::getBalance(const CCoinControl *coinControl) const -{ - if (coinControl) - { - CAmount nBalance = 0; - std::vector vCoins; - wallet->AvailableCoins(vCoins, true, coinControl); - BOOST_FOREACH(const COutput& out, vCoins) - if(out.fSpendable) - nBalance += out.tx->vout[out.i].nValue; - - return nBalance; - } - - return wallet->GetBalance(); -} - -CAmount WalletModel::getUnconfirmedBalance() const -{ - return wallet->GetUnconfirmedBalance(); -} - -CAmount WalletModel::getImmatureBalance() const -{ - return wallet->GetImmatureBalance(); -} - -bool WalletModel::haveWatchOnly() const -{ - return fHaveWatchOnly; -} - -CAmount WalletModel::getWatchBalance() const -{ - return wallet->GetWatchOnlyBalance(); -} - -CAmount WalletModel::getWatchUnconfirmedBalance() const -{ - return wallet->GetUnconfirmedWatchOnlyBalance(); -} - -CAmount WalletModel::getWatchImmatureBalance() const -{ - return wallet->GetImmatureWatchOnlyBalance(); -} - -void WalletModel::updateStatus() -{ - EncryptionStatus newEncryptionStatus = getEncryptionStatus(); - - if(cachedEncryptionStatus != newEncryptionStatus) - Q_EMIT encryptionStatusChanged(newEncryptionStatus); -} - -void WalletModel::pollBalanceChanged() -{ - // Get required locks upfront. This avoids the GUI from getting stuck on - // periodical polls if the core is holding the locks for a longer time - - // for example, during a wallet rescan. - TRY_LOCK(cs_main, lockMain); - if(!lockMain) - return; - TRY_LOCK(wallet->cs_wallet, lockWallet); - if(!lockWallet) - return; - - if(fForceCheckBalanceChanged || chainActive.Height() != cachedNumBlocks) - { - fForceCheckBalanceChanged = false; - - // Balance and number of transactions might have changed - cachedNumBlocks = chainActive.Height(); - - checkBalanceChanged(); - if(transactionTableModel) - transactionTableModel->updateConfirmations(); - } -} - -void WalletModel::checkBalanceChanged() -{ - CAmount newBalance = getBalance(); - CAmount newUnconfirmedBalance = getUnconfirmedBalance(); - CAmount newImmatureBalance = getImmatureBalance(); - CAmount newWatchOnlyBalance = 0; - CAmount newWatchUnconfBalance = 0; - CAmount newWatchImmatureBalance = 0; - if (haveWatchOnly()) - { - newWatchOnlyBalance = getWatchBalance(); - newWatchUnconfBalance = getWatchUnconfirmedBalance(); - newWatchImmatureBalance = getWatchImmatureBalance(); - } - - if(cachedBalance != newBalance || cachedUnconfirmedBalance != newUnconfirmedBalance || cachedImmatureBalance != newImmatureBalance || - cachedWatchOnlyBalance != newWatchOnlyBalance || cachedWatchUnconfBalance != newWatchUnconfBalance || cachedWatchImmatureBalance != newWatchImmatureBalance) - { - cachedBalance = newBalance; - cachedUnconfirmedBalance = newUnconfirmedBalance; - cachedImmatureBalance = newImmatureBalance; - cachedWatchOnlyBalance = newWatchOnlyBalance; - cachedWatchUnconfBalance = newWatchUnconfBalance; - cachedWatchImmatureBalance = newWatchImmatureBalance; - Q_EMIT balanceChanged(newBalance, newUnconfirmedBalance, newImmatureBalance, - newWatchOnlyBalance, newWatchUnconfBalance, newWatchImmatureBalance); - } -} - -void WalletModel::updateTransaction() -{ - // Balance and number of transactions might have changed - fForceCheckBalanceChanged = true; -} - -void WalletModel::updateAddressBook(const QString &address, const QString &label, - bool isMine, const QString &purpose, int status) -{ - if(addressTableModel) - addressTableModel->updateEntry(address, label, isMine, purpose, status); -} - -void WalletModel::updateWatchOnlyFlag(bool fHaveWatchonly) -{ - fHaveWatchOnly = fHaveWatchonly; - Q_EMIT notifyWatchonlyChanged(fHaveWatchonly); -} - -bool WalletModel::validateAddress(const QString &address) -{ - CBitcoinAddress addressParsed(address.toStdString()); - return addressParsed.IsValid(); -} - -WalletModel::SendCoinsReturn WalletModel::prepareTransaction(WalletModelTransaction &transaction, const CCoinControl *coinControl) -{ - CAmount total = 0; - bool fSubtractFeeFromAmount = false; - QList recipients = transaction.getRecipients(); - std::vector vecSend; - - if(recipients.empty()) - { - return OK; - } - - QSet setAddress; // Used to detect duplicates - int nAddresses = 0; - - // Pre-check input data for validity - Q_FOREACH(const SendCoinsRecipient &rcp, recipients) - { - if (rcp.fSubtractFeeFromAmount) - fSubtractFeeFromAmount = true; - - if (rcp.paymentRequest.IsInitialized()) - { // PaymentRequest... - CAmount subtotal = 0; - const payments::PaymentDetails& details = rcp.paymentRequest.getDetails(); - for (int i = 0; i < details.outputs_size(); i++) - { - const payments::Output& out = details.outputs(i); - if (out.amount() <= 0) continue; - subtotal += out.amount(); - const unsigned char* scriptStr = (const unsigned char*)out.script().data(); - CScript scriptPubKey(scriptStr, scriptStr+out.script().size()); - CAmount nAmount = out.amount(); - CRecipient recipient = {scriptPubKey, nAmount, rcp.fSubtractFeeFromAmount}; - vecSend.push_back(recipient); - } - if (subtotal <= 0) - { - return InvalidAmount; - } - total += subtotal; - } - else - { // User-entered bitcoin address / amount: - if(!validateAddress(rcp.address)) - { - return InvalidAddress; - } - if(rcp.amount <= 0) - { - return InvalidAmount; - } - setAddress.insert(rcp.address); - ++nAddresses; - - CScript scriptPubKey = GetScriptForDestination(CBitcoinAddress(rcp.address.toStdString()).Get()); - CRecipient recipient = {scriptPubKey, rcp.amount, rcp.fSubtractFeeFromAmount}; - vecSend.push_back(recipient); - - total += rcp.amount; - } - } - if(setAddress.size() != nAddresses) - { - return DuplicateAddress; - } - - CAmount nBalance = getBalance(coinControl); - - if(total > nBalance) - { - return AmountExceedsBalance; - } - - { - LOCK2(cs_main, wallet->cs_wallet); - - transaction.newPossibleKeyChange(wallet); - - CAmount nFeeRequired = 0; - int nChangePosRet = -1; - std::string strFailReason; - - CWalletTx *newTx = transaction.getTransaction(); - CReserveKey *keyChange = transaction.getPossibleKeyChange(); - bool fCreated = wallet->CreateTransaction(vecSend, *newTx, *keyChange, nFeeRequired, nChangePosRet, strFailReason, coinControl); - transaction.setTransactionFee(nFeeRequired); - if (fSubtractFeeFromAmount && fCreated) - transaction.reassignAmounts(nChangePosRet); - - if(!fCreated) - { - if(!fSubtractFeeFromAmount && (total + nFeeRequired) > nBalance) - { - return SendCoinsReturn(AmountWithFeeExceedsBalance); - } - Q_EMIT message(tr("Send Coins"), QString::fromStdString(strFailReason), - CClientUIInterface::MSG_ERROR); - return TransactionCreationFailed; - } - - // reject absurdly high fee > 0.1 bitcoin - if (nFeeRequired > 10000000) - return AbsurdFee; - } - - return SendCoinsReturn(OK); -} - -WalletModel::SendCoinsReturn WalletModel::sendCoins(WalletModelTransaction &transaction) -{ - QByteArray transaction_array; /* store serialized transaction */ - - { - LOCK2(cs_main, wallet->cs_wallet); - CWalletTx *newTx = transaction.getTransaction(); - - Q_FOREACH(const SendCoinsRecipient &rcp, transaction.getRecipients()) - { - if (rcp.paymentRequest.IsInitialized()) - { - // Make sure any payment requests involved are still valid. - if (PaymentServer::verifyExpired(rcp.paymentRequest.getDetails())) { - return PaymentRequestExpired; - } - - // Store PaymentRequests in wtx.vOrderForm in wallet. - std::string key("PaymentRequest"); - std::string value; - rcp.paymentRequest.SerializeToString(&value); - newTx->vOrderForm.push_back(make_pair(key, value)); - } - else if (!rcp.message.isEmpty()) // Message from normal bitcoin:URI (bitcoin:123...?message=example) - newTx->vOrderForm.push_back(make_pair("Message", rcp.message.toStdString())); - } - - CReserveKey *keyChange = transaction.getPossibleKeyChange(); - if(!wallet->CommitTransaction(*newTx, *keyChange)) - return TransactionCommitFailed; - - CTransaction* t = (CTransaction*)newTx; - CDataStream ssTx(SER_NETWORK, PROTOCOL_VERSION); - ssTx << *t; - transaction_array.append(&(ssTx[0]), ssTx.size()); - } - - // Add addresses / update labels that we've sent to to the address book, - // and emit coinsSent signal for each recipient - Q_FOREACH(const SendCoinsRecipient &rcp, transaction.getRecipients()) - { - // Don't touch the address book when we have a payment request - if (!rcp.paymentRequest.IsInitialized()) - { - std::string strAddress = rcp.address.toStdString(); - CTxDestination dest = CBitcoinAddress(strAddress).Get(); - std::string strLabel = rcp.label.toStdString(); - { - LOCK(wallet->cs_wallet); - - std::map::iterator mi = wallet->mapAddressBook.find(dest); - - // Check if we have a new address or an updated label - if (mi == wallet->mapAddressBook.end()) - { - wallet->SetAddressBook(dest, strLabel, "send"); - } - else if (mi->second.name != strLabel) - { - wallet->SetAddressBook(dest, strLabel, ""); // "" means don't change purpose - } - } - } - Q_EMIT coinsSent(wallet, rcp, transaction_array); - } - checkBalanceChanged(); // update balance immediately, otherwise there could be a short noticeable delay until pollBalanceChanged hits - - return SendCoinsReturn(OK); -} - -OptionsModel *WalletModel::getOptionsModel() -{ - return optionsModel; -} - -AddressTableModel *WalletModel::getAddressTableModel() -{ - return addressTableModel; -} - -TransactionTableModel *WalletModel::getTransactionTableModel() -{ - return transactionTableModel; -} - -RecentRequestsTableModel *WalletModel::getRecentRequestsTableModel() -{ - return recentRequestsTableModel; -} - -WalletModel::EncryptionStatus WalletModel::getEncryptionStatus() const -{ - if(!wallet->IsCrypted()) - { - return Unencrypted; - } - else if(wallet->IsLocked()) - { - return Locked; - } - else - { - return Unlocked; - } -} - -bool WalletModel::setWalletEncrypted(bool encrypted, const SecureString &passphrase) -{ - if(encrypted) - { - // Encrypt - return wallet->EncryptWallet(passphrase); - } - else - { - // Decrypt -- TODO; not supported yet - return false; - } -} - -bool WalletModel::setWalletLocked(bool locked, const SecureString &passPhrase) -{ - if(locked) - { - // Lock - return wallet->Lock(); - } - else - { - // Unlock - return wallet->Unlock(passPhrase); - } -} - -bool WalletModel::changePassphrase(const SecureString &oldPass, const SecureString &newPass) -{ - bool retval; - { - LOCK(wallet->cs_wallet); - wallet->Lock(); // Make sure wallet is locked before attempting pass change - retval = wallet->ChangeWalletPassphrase(oldPass, newPass); - } - return retval; -} - -bool WalletModel::backupWallet(const QString &filename) -{ - return BackupWallet(*wallet, filename.toLocal8Bit().data()); -} - -// Handlers for core signals -static void NotifyKeyStoreStatusChanged(WalletModel *walletmodel, CCryptoKeyStore *wallet) -{ - qDebug() << "NotifyKeyStoreStatusChanged"; - QMetaObject::invokeMethod(walletmodel, "updateStatus", Qt::QueuedConnection); -} - -static void NotifyAddressBookChanged(WalletModel *walletmodel, CWallet *wallet, - const CTxDestination &address, const std::string &label, bool isMine, - const std::string &purpose, ChangeType status) -{ - QString strAddress = QString::fromStdString(CBitcoinAddress(address).ToString()); - QString strLabel = QString::fromStdString(label); - QString strPurpose = QString::fromStdString(purpose); - - qDebug() << "NotifyAddressBookChanged: " + strAddress + " " + strLabel + " isMine=" + QString::number(isMine) + " purpose=" + strPurpose + " status=" + QString::number(status); - QMetaObject::invokeMethod(walletmodel, "updateAddressBook", Qt::QueuedConnection, - Q_ARG(QString, strAddress), - Q_ARG(QString, strLabel), - Q_ARG(bool, isMine), - Q_ARG(QString, strPurpose), - Q_ARG(int, status)); -} - -static void NotifyTransactionChanged(WalletModel *walletmodel, CWallet *wallet, const uint256 &hash, ChangeType status) -{ - Q_UNUSED(wallet); - Q_UNUSED(hash); - Q_UNUSED(status); - QMetaObject::invokeMethod(walletmodel, "updateTransaction", Qt::QueuedConnection); -} - -static void ShowProgress(WalletModel *walletmodel, const std::string &title, int nProgress) -{ - // emits signal "showProgress" - QMetaObject::invokeMethod(walletmodel, "showProgress", Qt::QueuedConnection, - Q_ARG(QString, QString::fromStdString(title)), - Q_ARG(int, nProgress)); -} - -static void NotifyWatchonlyChanged(WalletModel *walletmodel, bool fHaveWatchonly) -{ - QMetaObject::invokeMethod(walletmodel, "updateWatchOnlyFlag", Qt::QueuedConnection, - Q_ARG(bool, fHaveWatchonly)); -} - -void WalletModel::subscribeToCoreSignals() -{ - // Connect signals to wallet - wallet->NotifyStatusChanged.connect(boost::bind(&NotifyKeyStoreStatusChanged, this, _1)); - wallet->NotifyAddressBookChanged.connect(boost::bind(NotifyAddressBookChanged, this, _1, _2, _3, _4, _5, _6)); - wallet->NotifyTransactionChanged.connect(boost::bind(NotifyTransactionChanged, this, _1, _2, _3)); - wallet->ShowProgress.connect(boost::bind(ShowProgress, this, _1, _2)); - wallet->NotifyWatchonlyChanged.connect(boost::bind(NotifyWatchonlyChanged, this, _1)); -} - -void WalletModel::unsubscribeFromCoreSignals() -{ - // Disconnect signals from wallet - wallet->NotifyStatusChanged.disconnect(boost::bind(&NotifyKeyStoreStatusChanged, this, _1)); - wallet->NotifyAddressBookChanged.disconnect(boost::bind(NotifyAddressBookChanged, this, _1, _2, _3, _4, _5, _6)); - wallet->NotifyTransactionChanged.disconnect(boost::bind(NotifyTransactionChanged, this, _1, _2, _3)); - wallet->ShowProgress.disconnect(boost::bind(ShowProgress, this, _1, _2)); - wallet->NotifyWatchonlyChanged.disconnect(boost::bind(NotifyWatchonlyChanged, this, _1)); -} - -// WalletModel::UnlockContext implementation -WalletModel::UnlockContext WalletModel::requestUnlock() -{ - bool was_locked = getEncryptionStatus() == Locked; - if(was_locked) - { - // Request UI to unlock wallet - Q_EMIT requireUnlock(); - } - // If wallet is still locked, unlock was failed or cancelled, mark context as invalid - bool valid = getEncryptionStatus() != Locked; - - return UnlockContext(this, valid, was_locked); -} - -WalletModel::UnlockContext::UnlockContext(WalletModel *wallet, bool valid, bool relock): - wallet(wallet), - valid(valid), - relock(relock) -{ -} - -WalletModel::UnlockContext::~UnlockContext() -{ - if(valid && relock) - { - wallet->setWalletLocked(true); - } -} - -void WalletModel::UnlockContext::CopyFrom(const UnlockContext& rhs) -{ - // Transfer context; old object no longer relocks wallet - *this = rhs; - rhs.relock = false; -} - -bool WalletModel::getPubKey(const CKeyID &address, CPubKey& vchPubKeyOut) const -{ - return wallet->GetPubKey(address, vchPubKeyOut); -} - -// returns a list of COutputs from COutPoints -void WalletModel::getOutputs(const std::vector& vOutpoints, std::vector& vOutputs) -{ - LOCK2(cs_main, wallet->cs_wallet); - BOOST_FOREACH(const COutPoint& outpoint, vOutpoints) - { - if (!wallet->mapWallet.count(outpoint.hash)) continue; - int nDepth = wallet->mapWallet[outpoint.hash].GetDepthInMainChain(); - if (nDepth < 0) continue; - COutput out(&wallet->mapWallet[outpoint.hash], outpoint.n, nDepth, true); - vOutputs.push_back(out); - } -} - -bool WalletModel::isSpent(const COutPoint& outpoint) const -{ - LOCK2(cs_main, wallet->cs_wallet); - return wallet->IsSpent(outpoint.hash, outpoint.n); -} - -// AvailableCoins + LockedCoins grouped by wallet address (put change in one group with wallet address) -void WalletModel::listCoins(std::map >& mapCoins) const -{ - std::vector vCoins; - wallet->AvailableCoins(vCoins); - - LOCK2(cs_main, wallet->cs_wallet); // ListLockedCoins, mapWallet - std::vector vLockedCoins; - wallet->ListLockedCoins(vLockedCoins); - - // add locked coins - BOOST_FOREACH(const COutPoint& outpoint, vLockedCoins) - { - if (!wallet->mapWallet.count(outpoint.hash)) continue; - int nDepth = wallet->mapWallet[outpoint.hash].GetDepthInMainChain(); - if (nDepth < 0) continue; - COutput out(&wallet->mapWallet[outpoint.hash], outpoint.n, nDepth, true); - if (outpoint.n < out.tx->vout.size() && wallet->IsMine(out.tx->vout[outpoint.n]) == ISMINE_SPENDABLE) - vCoins.push_back(out); - } - - BOOST_FOREACH(const COutput& out, vCoins) - { - COutput cout = out; - - while (wallet->IsChange(cout.tx->vout[cout.i]) && cout.tx->vin.size() > 0 && wallet->IsMine(cout.tx->vin[0])) - { - if (!wallet->mapWallet.count(cout.tx->vin[0].prevout.hash)) break; - cout = COutput(&wallet->mapWallet[cout.tx->vin[0].prevout.hash], cout.tx->vin[0].prevout.n, 0, true); - } - - CTxDestination address; - if(!out.fSpendable || !ExtractDestination(cout.tx->vout[cout.i].scriptPubKey, address)) - continue; - mapCoins[QString::fromStdString(CBitcoinAddress(address).ToString())].push_back(out); - } -} - -bool WalletModel::isLockedCoin(uint256 hash, unsigned int n) const -{ - LOCK2(cs_main, wallet->cs_wallet); - return wallet->IsLockedCoin(hash, n); -} - -void WalletModel::lockCoin(COutPoint& output) -{ - LOCK2(cs_main, wallet->cs_wallet); - wallet->LockCoin(output); -} - -void WalletModel::unlockCoin(COutPoint& output) -{ - LOCK2(cs_main, wallet->cs_wallet); - wallet->UnlockCoin(output); -} - -void WalletModel::listLockedCoins(std::vector& vOutpts) -{ - LOCK2(cs_main, wallet->cs_wallet); - wallet->ListLockedCoins(vOutpts); -} - -void WalletModel::loadReceiveRequests(std::vector& vReceiveRequests) -{ - LOCK(wallet->cs_wallet); - BOOST_FOREACH(const PAIRTYPE(CTxDestination, CAddressBookData)& item, wallet->mapAddressBook) - BOOST_FOREACH(const PAIRTYPE(std::string, std::string)& item2, item.second.destdata) - if (item2.first.size() > 2 && item2.first.substr(0,2) == "rr") // receive request - vReceiveRequests.push_back(item2.second); -} - -bool WalletModel::saveReceiveRequest(const std::string &sAddress, const int64_t nId, const std::string &sRequest) -{ - CTxDestination dest = CBitcoinAddress(sAddress).Get(); - - std::stringstream ss; - ss << nId; - std::string key = "rr" + ss.str(); // "rr" prefix = "receive request" in destdata - - LOCK(wallet->cs_wallet); - if (sRequest.empty()) - return wallet->EraseDestData(dest, key); - else - return wallet->AddDestData(dest, key, sRequest); -} diff --git a/src/qt/walletmodel.h b/src/qt/walletmodel.h deleted file mode 100644 index 40bc62354..000000000 --- a/src/qt/walletmodel.h +++ /dev/null @@ -1,268 +0,0 @@ -// Copyright (c) 2011-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. - -#ifndef BITCOIN_QT_WALLETMODEL_H -#define BITCOIN_QT_WALLETMODEL_H - -#include "paymentrequestplus.h" -#include "walletmodeltransaction.h" - -#include "support/allocators/secure.h" - -#include -#include - -#include - -class AddressTableModel; -class OptionsModel; -class RecentRequestsTableModel; -class TransactionTableModel; -class WalletModelTransaction; - -class CCoinControl; -class CKeyID; -class COutPoint; -class COutput; -class CPubKey; -class CWallet; -class uint256; - -QT_BEGIN_NAMESPACE -class QTimer; -QT_END_NAMESPACE - -class SendCoinsRecipient -{ -public: - explicit SendCoinsRecipient() : amount(0), fSubtractFeeFromAmount(false), nVersion(SendCoinsRecipient::CURRENT_VERSION) { } - explicit SendCoinsRecipient(const QString &addr, const QString &label, const CAmount& amount, const QString &message): - address(addr), label(label), amount(amount), message(message), fSubtractFeeFromAmount(false), nVersion(SendCoinsRecipient::CURRENT_VERSION) {} - - // If from an unauthenticated payment request, this is used for storing - // the addresses, e.g. address-A
address-B
address-C. - // Info: As we don't need to process addresses in here when using - // payment requests, we can abuse it for displaying an address list. - // Todo: This is a hack, should be replaced with a cleaner solution! - QString address; - QString label; - CAmount amount; - // If from a payment request, this is used for storing the memo - QString message; - - // If from a payment request, paymentRequest.IsInitialized() will be true - PaymentRequestPlus paymentRequest; - // Empty if no authentication or invalid signature/cert/etc. - QString authenticatedMerchant; - - bool fSubtractFeeFromAmount; // memory only - - static const int CURRENT_VERSION = 1; - int nVersion; - - ADD_SERIALIZE_METHODS; - - template - inline void SerializationOp(Stream& s, Operation ser_action, int nType, int nVersion) { - std::string sAddress = address.toStdString(); - std::string sLabel = label.toStdString(); - std::string sMessage = message.toStdString(); - std::string sPaymentRequest; - if (!ser_action.ForRead() && paymentRequest.IsInitialized()) - paymentRequest.SerializeToString(&sPaymentRequest); - std::string sAuthenticatedMerchant = authenticatedMerchant.toStdString(); - - READWRITE(this->nVersion); - nVersion = this->nVersion; - READWRITE(sAddress); - READWRITE(sLabel); - READWRITE(amount); - READWRITE(sMessage); - READWRITE(sPaymentRequest); - READWRITE(sAuthenticatedMerchant); - - if (ser_action.ForRead()) - { - address = QString::fromStdString(sAddress); - label = QString::fromStdString(sLabel); - message = QString::fromStdString(sMessage); - if (!sPaymentRequest.empty()) - paymentRequest.parse(QByteArray::fromRawData(sPaymentRequest.data(), sPaymentRequest.size())); - authenticatedMerchant = QString::fromStdString(sAuthenticatedMerchant); - } - } -}; - -/** Interface to Bitcoin wallet from Qt view code. */ -class WalletModel : public QObject -{ - Q_OBJECT - -public: - explicit WalletModel(CWallet *wallet, OptionsModel *optionsModel, QObject *parent = 0); - ~WalletModel(); - - enum StatusCode // Returned by sendCoins - { - OK, - InvalidAmount, - InvalidAddress, - AmountExceedsBalance, - AmountWithFeeExceedsBalance, - DuplicateAddress, - TransactionCreationFailed, // Error returned when wallet is still locked - TransactionCommitFailed, - AbsurdFee, - PaymentRequestExpired - }; - - enum EncryptionStatus - { - Unencrypted, // !wallet->IsCrypted() - Locked, // wallet->IsCrypted() && wallet->IsLocked() - Unlocked // wallet->IsCrypted() && !wallet->IsLocked() - }; - - OptionsModel *getOptionsModel(); - AddressTableModel *getAddressTableModel(); - TransactionTableModel *getTransactionTableModel(); - RecentRequestsTableModel *getRecentRequestsTableModel(); - - CAmount getBalance(const CCoinControl *coinControl = NULL) const; - CAmount getUnconfirmedBalance() const; - CAmount getImmatureBalance() const; - bool haveWatchOnly() const; - CAmount getWatchBalance() const; - CAmount getWatchUnconfirmedBalance() const; - CAmount getWatchImmatureBalance() const; - EncryptionStatus getEncryptionStatus() const; - - // Check address for validity - bool validateAddress(const QString &address); - - // Return status record for SendCoins, contains error id + information - struct SendCoinsReturn - { - SendCoinsReturn(StatusCode status = OK): - status(status) {} - StatusCode status; - }; - - // prepare transaction for getting txfee before sending coins - SendCoinsReturn prepareTransaction(WalletModelTransaction &transaction, const CCoinControl *coinControl = NULL); - - // Send coins to a list of recipients - SendCoinsReturn sendCoins(WalletModelTransaction &transaction); - - // Wallet encryption - bool setWalletEncrypted(bool encrypted, const SecureString &passphrase); - // Passphrase only needed when unlocking - bool setWalletLocked(bool locked, const SecureString &passPhrase=SecureString()); - bool changePassphrase(const SecureString &oldPass, const SecureString &newPass); - // Wallet backup - bool backupWallet(const QString &filename); - - // RAI object for unlocking wallet, returned by requestUnlock() - class UnlockContext - { - public: - UnlockContext(WalletModel *wallet, bool valid, bool relock); - ~UnlockContext(); - - bool isValid() const { return valid; } - - // Copy operator and constructor transfer the context - UnlockContext(const UnlockContext& obj) { CopyFrom(obj); } - UnlockContext& operator=(const UnlockContext& rhs) { CopyFrom(rhs); return *this; } - private: - WalletModel *wallet; - bool valid; - mutable bool relock; // mutable, as it can be set to false by copying - - void CopyFrom(const UnlockContext& rhs); - }; - - UnlockContext requestUnlock(); - - bool getPubKey(const CKeyID &address, CPubKey& vchPubKeyOut) const; - void getOutputs(const std::vector& vOutpoints, std::vector& vOutputs); - bool isSpent(const COutPoint& outpoint) const; - void listCoins(std::map >& mapCoins) const; - - bool isLockedCoin(uint256 hash, unsigned int n) const; - void lockCoin(COutPoint& output); - void unlockCoin(COutPoint& output); - void listLockedCoins(std::vector& vOutpts); - - void loadReceiveRequests(std::vector& vReceiveRequests); - bool saveReceiveRequest(const std::string &sAddress, const int64_t nId, const std::string &sRequest); - -private: - CWallet *wallet; - bool fHaveWatchOnly; - bool fForceCheckBalanceChanged; - - // Wallet has an options model for wallet-specific options - // (transaction fee, for example) - OptionsModel *optionsModel; - - AddressTableModel *addressTableModel; - TransactionTableModel *transactionTableModel; - RecentRequestsTableModel *recentRequestsTableModel; - - // Cache some values to be able to detect changes - CAmount cachedBalance; - CAmount cachedUnconfirmedBalance; - CAmount cachedImmatureBalance; - CAmount cachedWatchOnlyBalance; - CAmount cachedWatchUnconfBalance; - CAmount cachedWatchImmatureBalance; - EncryptionStatus cachedEncryptionStatus; - int cachedNumBlocks; - - QTimer *pollTimer; - - void subscribeToCoreSignals(); - void unsubscribeFromCoreSignals(); - void checkBalanceChanged(); - -Q_SIGNALS: - // Signal that balance in wallet changed - void balanceChanged(const CAmount& balance, const CAmount& unconfirmedBalance, const CAmount& immatureBalance, - const CAmount& watchOnlyBalance, const CAmount& watchUnconfBalance, const CAmount& watchImmatureBalance); - - // Encryption status of wallet changed - void encryptionStatusChanged(int status); - - // Signal emitted when wallet needs to be unlocked - // It is valid behaviour for listeners to keep the wallet locked after this signal; - // this means that the unlocking failed or was cancelled. - void requireUnlock(); - - // Fired when a message should be reported to the user - void message(const QString &title, const QString &message, unsigned int style); - - // Coins sent: from wallet, to recipient, in (serialized) transaction: - void coinsSent(CWallet* wallet, SendCoinsRecipient recipient, QByteArray transaction); - - // Show progress dialog e.g. for rescan - void showProgress(const QString &title, int nProgress); - - // Watch-only address added - void notifyWatchonlyChanged(bool fHaveWatchonly); - -public Q_SLOTS: - /* Wallet status might have changed */ - void updateStatus(); - /* New transaction, or transaction changed status */ - void updateTransaction(); - /* New, updated or removed address book entry */ - void updateAddressBook(const QString &address, const QString &label, bool isMine, const QString &purpose, int status); - /* Watch-only added */ - void updateWatchOnlyFlag(bool fHaveWatchonly); - /* Current, immature or unconfirmed balance might have changed - emit 'balanceChanged' if so */ - void pollBalanceChanged(); -}; - -#endif // BITCOIN_QT_WALLETMODEL_H diff --git a/src/qt/walletmodeltransaction.cpp b/src/qt/walletmodeltransaction.cpp deleted file mode 100644 index 6a9b2d5bd..000000000 --- a/src/qt/walletmodeltransaction.cpp +++ /dev/null @@ -1,99 +0,0 @@ -// Copyright (c) 2011-2013 The Bitcoin Core developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#include "walletmodeltransaction.h" - -#include "wallet/wallet.h" - -WalletModelTransaction::WalletModelTransaction(const QList &recipients) : - recipients(recipients), - walletTransaction(0), - keyChange(0), - fee(0) -{ - walletTransaction = new CWalletTx(); -} - -WalletModelTransaction::~WalletModelTransaction() -{ - delete keyChange; - delete walletTransaction; -} - -QList WalletModelTransaction::getRecipients() -{ - return recipients; -} - -CWalletTx *WalletModelTransaction::getTransaction() -{ - return walletTransaction; -} - -unsigned int WalletModelTransaction::getTransactionSize() -{ - return (!walletTransaction ? 0 : (::GetSerializeSize(*(CTransaction*)walletTransaction, SER_NETWORK, PROTOCOL_VERSION))); -} - -CAmount WalletModelTransaction::getTransactionFee() -{ - return fee; -} - -void WalletModelTransaction::setTransactionFee(const CAmount& newFee) -{ - fee = newFee; -} - -void WalletModelTransaction::reassignAmounts(int nChangePosRet) -{ - int i = 0; - for (QList::iterator it = recipients.begin(); it != recipients.end(); ++it) - { - SendCoinsRecipient& rcp = (*it); - - if (rcp.paymentRequest.IsInitialized()) - { - CAmount subtotal = 0; - const payments::PaymentDetails& details = rcp.paymentRequest.getDetails(); - for (int j = 0; j < details.outputs_size(); j++) - { - const payments::Output& out = details.outputs(j); - if (out.amount() <= 0) continue; - if (i == nChangePosRet) - i++; - subtotal += walletTransaction->vout[i].nValue; - i++; - } - rcp.amount = subtotal; - } - else // normal recipient (no payment request) - { - if (i == nChangePosRet) - i++; - rcp.amount = walletTransaction->vout[i].nValue; - i++; - } - } -} - -CAmount WalletModelTransaction::getTotalTransactionAmount() -{ - CAmount totalTransactionAmount = 0; - Q_FOREACH(const SendCoinsRecipient &rcp, recipients) - { - totalTransactionAmount += rcp.amount; - } - return totalTransactionAmount; -} - -void WalletModelTransaction::newPossibleKeyChange(CWallet *wallet) -{ - keyChange = new CReserveKey(wallet); -} - -CReserveKey *WalletModelTransaction::getPossibleKeyChange() -{ - return keyChange; -} diff --git a/src/qt/walletmodeltransaction.h b/src/qt/walletmodeltransaction.h deleted file mode 100644 index 7765fea4a..000000000 --- a/src/qt/walletmodeltransaction.h +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright (c) 2011-2013 The Bitcoin Core developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#ifndef BITCOIN_QT_WALLETMODELTRANSACTION_H -#define BITCOIN_QT_WALLETMODELTRANSACTION_H - -#include "walletmodel.h" - -#include - -class SendCoinsRecipient; - -class CReserveKey; -class CWallet; -class CWalletTx; - -/** Data model for a walletmodel transaction. */ -class WalletModelTransaction -{ -public: - explicit WalletModelTransaction(const QList &recipients); - ~WalletModelTransaction(); - - QList getRecipients(); - - CWalletTx *getTransaction(); - unsigned int getTransactionSize(); - - void setTransactionFee(const CAmount& newFee); - CAmount getTransactionFee(); - - CAmount getTotalTransactionAmount(); - - void newPossibleKeyChange(CWallet *wallet); - CReserveKey *getPossibleKeyChange(); - - void reassignAmounts(int nChangePosRet); // needed for the subtract-fee-from-amount feature - -private: - QList recipients; - CWalletTx *walletTransaction; - CReserveKey *keyChange; - CAmount fee; -}; - -#endif // BITCOIN_QT_WALLETMODELTRANSACTION_H diff --git a/src/qt/walletview.cpp b/src/qt/walletview.cpp deleted file mode 100644 index c5f556b44..000000000 --- a/src/qt/walletview.cpp +++ /dev/null @@ -1,312 +0,0 @@ -// Copyright (c) 2011-2013 The Bitcoin Core developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#include "walletview.h" - -#include "addressbookpage.h" -#include "askpassphrasedialog.h" -#include "bitcoingui.h" -#include "clientmodel.h" -#include "guiutil.h" -#include "optionsmodel.h" -#include "overviewpage.h" -#include "receivecoinsdialog.h" -#include "scicon.h" -#include "sendcoinsdialog.h" -#include "signverifymessagedialog.h" -#include "transactiontablemodel.h" -#include "transactionview.h" -#include "walletmodel.h" - -#include "ui_interface.h" - -#include -#include -#include -#include -#include -#include -#include - -WalletView::WalletView(QWidget *parent): - QStackedWidget(parent), - clientModel(0), - walletModel(0) -{ - // Create tabs - overviewPage = new OverviewPage(); - - transactionsPage = new QWidget(this); - QVBoxLayout *vbox = new QVBoxLayout(); - QHBoxLayout *hbox_buttons = new QHBoxLayout(); - transactionView = new TransactionView(this); - vbox->addWidget(transactionView); - QPushButton *exportButton = new QPushButton(tr("&Export"), this); - exportButton->setToolTip(tr("Export the data in the current tab to a file")); -#ifndef Q_OS_MAC // Icons on push buttons are very uncommon on Mac - exportButton->setIcon(SingleColorIcon(":/icons/export")); -#endif - hbox_buttons->addStretch(); - hbox_buttons->addWidget(exportButton); - vbox->addLayout(hbox_buttons); - transactionsPage->setLayout(vbox); - - receiveCoinsPage = new ReceiveCoinsDialog(); - sendCoinsPage = new SendCoinsDialog(); - - addWidget(overviewPage); - addWidget(transactionsPage); - addWidget(receiveCoinsPage); - addWidget(sendCoinsPage); - - // Clicking on a transaction on the overview pre-selects the transaction on the transaction history page - connect(overviewPage, SIGNAL(transactionClicked(QModelIndex)), transactionView, SLOT(focusTransaction(QModelIndex))); - - // Double-clicking on a transaction on the transaction history page shows details - connect(transactionView, SIGNAL(doubleClicked(QModelIndex)), transactionView, SLOT(showDetails())); - - // Clicking on "Export" allows to export the transaction list - connect(exportButton, SIGNAL(clicked()), transactionView, SLOT(exportClicked())); - - // Pass through messages from sendCoinsPage - connect(sendCoinsPage, SIGNAL(message(QString,QString,unsigned int)), this, SIGNAL(message(QString,QString,unsigned int))); - // Pass through messages from transactionView - connect(transactionView, SIGNAL(message(QString,QString,unsigned int)), this, SIGNAL(message(QString,QString,unsigned int))); -} - -WalletView::~WalletView() -{ -} - -void WalletView::setBitcoinGUI(BitcoinGUI *gui) -{ - if (gui) - { - // Clicking on a transaction on the overview page simply sends you to transaction history page - connect(overviewPage, SIGNAL(transactionClicked(QModelIndex)), gui, SLOT(gotoHistoryPage())); - - // Receive and report messages - connect(this, SIGNAL(message(QString,QString,unsigned int)), gui, SLOT(message(QString,QString,unsigned int))); - - // Pass through encryption status changed signals - connect(this, SIGNAL(encryptionStatusChanged(int)), gui, SLOT(setEncryptionStatus(int))); - - // Pass through transaction notifications - connect(this, SIGNAL(incomingTransaction(QString,int,CAmount,QString,QString,QString)), gui, SLOT(incomingTransaction(QString,int,CAmount,QString,QString,QString))); - } -} - -void WalletView::setClientModel(ClientModel *clientModel) -{ - this->clientModel = clientModel; - - overviewPage->setClientModel(clientModel); - sendCoinsPage->setClientModel(clientModel); -} - -void WalletView::setWalletModel(WalletModel *walletModel) -{ - this->walletModel = walletModel; - - // Put transaction list in tabs - transactionView->setModel(walletModel); - overviewPage->setWalletModel(walletModel); - receiveCoinsPage->setModel(walletModel); - sendCoinsPage->setModel(walletModel); - - if (walletModel) - { - // Receive and pass through messages from wallet model - connect(walletModel, SIGNAL(message(QString,QString,unsigned int)), this, SIGNAL(message(QString,QString,unsigned int))); - - // Handle changes in encryption status - connect(walletModel, SIGNAL(encryptionStatusChanged(int)), this, SIGNAL(encryptionStatusChanged(int))); - updateEncryptionStatus(); - - // Balloon pop-up for new transaction - connect(walletModel->getTransactionTableModel(), SIGNAL(rowsInserted(QModelIndex,int,int)), - this, SLOT(processNewTransaction(QModelIndex,int,int))); - - // Ask for passphrase if needed - connect(walletModel, SIGNAL(requireUnlock()), this, SLOT(unlockWallet())); - - // Show progress dialog - connect(walletModel, SIGNAL(showProgress(QString,int)), this, SLOT(showProgress(QString,int))); - } -} - -void WalletView::processNewTransaction(const QModelIndex& parent, int start, int /*end*/) -{ - // Prevent balloon-spam when initial block download is in progress - if (!walletModel || !clientModel || clientModel->inInitialBlockDownload()) - return; - - TransactionTableModel *ttm = walletModel->getTransactionTableModel(); - if (!ttm || ttm->processingQueuedTransactions()) - return; - - QString date = ttm->index(start, TransactionTableModel::Date, parent).data().toString(); - qint64 amount = ttm->index(start, TransactionTableModel::Amount, parent).data(Qt::EditRole).toULongLong(); - QString type = ttm->index(start, TransactionTableModel::Type, parent).data().toString(); - QModelIndex index = ttm->index(start, 0, parent); - QString address = ttm->data(index, TransactionTableModel::AddressRole).toString(); - QString label = ttm->data(index, TransactionTableModel::LabelRole).toString(); - - Q_EMIT incomingTransaction(date, walletModel->getOptionsModel()->getDisplayUnit(), amount, type, address, label); -} - -void WalletView::gotoOverviewPage() -{ - setCurrentWidget(overviewPage); -} - -void WalletView::gotoHistoryPage() -{ - setCurrentWidget(transactionsPage); -} - -void WalletView::gotoReceiveCoinsPage() -{ - setCurrentWidget(receiveCoinsPage); -} - -void WalletView::gotoSendCoinsPage(QString addr) -{ - setCurrentWidget(sendCoinsPage); - - if (!addr.isEmpty()) - sendCoinsPage->setAddress(addr); -} - -void WalletView::gotoSignMessageTab(QString addr) -{ - // calls show() in showTab_SM() - SignVerifyMessageDialog *signVerifyMessageDialog = new SignVerifyMessageDialog(this); - signVerifyMessageDialog->setAttribute(Qt::WA_DeleteOnClose); - signVerifyMessageDialog->setModel(walletModel); - signVerifyMessageDialog->showTab_SM(true); - - if (!addr.isEmpty()) - signVerifyMessageDialog->setAddress_SM(addr); -} - -void WalletView::gotoVerifyMessageTab(QString addr) -{ - // calls show() in showTab_VM() - SignVerifyMessageDialog *signVerifyMessageDialog = new SignVerifyMessageDialog(this); - signVerifyMessageDialog->setAttribute(Qt::WA_DeleteOnClose); - signVerifyMessageDialog->setModel(walletModel); - signVerifyMessageDialog->showTab_VM(true); - - if (!addr.isEmpty()) - signVerifyMessageDialog->setAddress_VM(addr); -} - -bool WalletView::handlePaymentRequest(const SendCoinsRecipient& recipient) -{ - return sendCoinsPage->handlePaymentRequest(recipient); -} - -void WalletView::showOutOfSyncWarning(bool fShow) -{ - overviewPage->showOutOfSyncWarning(fShow); -} - -void WalletView::updateEncryptionStatus() -{ - Q_EMIT encryptionStatusChanged(walletModel->getEncryptionStatus()); -} - -void WalletView::encryptWallet(bool status) -{ - if(!walletModel) - return; - AskPassphraseDialog dlg(status ? AskPassphraseDialog::Encrypt : AskPassphraseDialog::Decrypt, this); - dlg.setModel(walletModel); - dlg.exec(); - - updateEncryptionStatus(); -} - -void WalletView::backupWallet() -{ - QString filename = GUIUtil::getSaveFileName(this, - tr("Backup Wallet"), QString(), - tr("Wallet Data (*.dat)"), NULL); - - if (filename.isEmpty()) - return; - - if (!walletModel->backupWallet(filename)) { - Q_EMIT message(tr("Backup Failed"), tr("There was an error trying to save the wallet data to %1.").arg(filename), - CClientUIInterface::MSG_ERROR); - } - else { - Q_EMIT message(tr("Backup Successful"), tr("The wallet data was successfully saved to %1.").arg(filename), - CClientUIInterface::MSG_INFORMATION); - } -} - -void WalletView::changePassphrase() -{ - AskPassphraseDialog dlg(AskPassphraseDialog::ChangePass, this); - dlg.setModel(walletModel); - dlg.exec(); -} - -void WalletView::unlockWallet() -{ - if(!walletModel) - return; - // Unlock wallet when requested by wallet model - if (walletModel->getEncryptionStatus() == WalletModel::Locked) - { - AskPassphraseDialog dlg(AskPassphraseDialog::Unlock, this); - dlg.setModel(walletModel); - dlg.exec(); - } -} - -void WalletView::usedSendingAddresses() -{ - if(!walletModel) - return; - AddressBookPage *dlg = new AddressBookPage(AddressBookPage::ForEditing, AddressBookPage::SendingTab, this); - dlg->setAttribute(Qt::WA_DeleteOnClose); - dlg->setModel(walletModel->getAddressTableModel()); - dlg->show(); -} - -void WalletView::usedReceivingAddresses() -{ - if(!walletModel) - return; - AddressBookPage *dlg = new AddressBookPage(AddressBookPage::ForEditing, AddressBookPage::ReceivingTab, this); - dlg->setAttribute(Qt::WA_DeleteOnClose); - dlg->setModel(walletModel->getAddressTableModel()); - dlg->show(); -} - -void WalletView::showProgress(const QString &title, int nProgress) -{ - if (nProgress == 0) - { - progressDialog = new QProgressDialog(title, "", 0, 100); - progressDialog->setWindowModality(Qt::ApplicationModal); - progressDialog->setMinimumDuration(0); - progressDialog->setCancelButton(0); - progressDialog->setAutoClose(false); - progressDialog->setValue(0); - } - else if (nProgress == 100) - { - if (progressDialog) - { - progressDialog->close(); - progressDialog->deleteLater(); - } - } - else if (progressDialog) - progressDialog->setValue(nProgress); -} diff --git a/src/qt/walletview.h b/src/qt/walletview.h deleted file mode 100644 index 87c5d7bfb..000000000 --- a/src/qt/walletview.h +++ /dev/null @@ -1,119 +0,0 @@ -// Copyright (c) 2011-2013 The Bitcoin Core developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#ifndef BITCOIN_QT_WALLETVIEW_H -#define BITCOIN_QT_WALLETVIEW_H - -#include "amount.h" - -#include - -class BitcoinGUI; -class ClientModel; -class OverviewPage; -class ReceiveCoinsDialog; -class SendCoinsDialog; -class SendCoinsRecipient; -class TransactionView; -class WalletModel; - -QT_BEGIN_NAMESPACE -class QModelIndex; -class QProgressDialog; -QT_END_NAMESPACE - -/* - WalletView class. This class represents the view to a single wallet. - It was added to support multiple wallet functionality. Each wallet gets its own WalletView instance. - It communicates with both the client and the wallet models to give the user an up-to-date view of the - current core state. -*/ -class WalletView : public QStackedWidget -{ - Q_OBJECT - -public: - explicit WalletView(QWidget *parent); - ~WalletView(); - - void setBitcoinGUI(BitcoinGUI *gui); - /** Set the client model. - The client model represents the part of the core that communicates with the P2P network, and is wallet-agnostic. - */ - void setClientModel(ClientModel *clientModel); - /** Set the wallet model. - The wallet model represents a bitcoin wallet, and offers access to the list of transactions, address book and sending - functionality. - */ - void setWalletModel(WalletModel *walletModel); - - bool handlePaymentRequest(const SendCoinsRecipient& recipient); - - void showOutOfSyncWarning(bool fShow); - -private: - ClientModel *clientModel; - WalletModel *walletModel; - - OverviewPage *overviewPage; - QWidget *transactionsPage; - ReceiveCoinsDialog *receiveCoinsPage; - SendCoinsDialog *sendCoinsPage; - - TransactionView *transactionView; - - QProgressDialog *progressDialog; - -public Q_SLOTS: - /** Switch to overview (home) page */ - void gotoOverviewPage(); - /** Switch to history (transactions) page */ - void gotoHistoryPage(); - /** Switch to receive coins page */ - void gotoReceiveCoinsPage(); - /** Switch to send coins page */ - void gotoSendCoinsPage(QString addr = ""); - - /** Show Sign/Verify Message dialog and switch to sign message tab */ - void gotoSignMessageTab(QString addr = ""); - /** Show Sign/Verify Message dialog and switch to verify message tab */ - void gotoVerifyMessageTab(QString addr = ""); - - /** Show incoming transaction notification for new transactions. - - The new items are those between start and end inclusive, under the given parent item. - */ - void processNewTransaction(const QModelIndex& parent, int start, int /*end*/); - /** Encrypt the wallet */ - void encryptWallet(bool status); - /** Backup the wallet */ - void backupWallet(); - /** Change encrypted wallet passphrase */ - void changePassphrase(); - /** Ask for passphrase to unlock wallet temporarily */ - void unlockWallet(); - - /** Show used sending addresses */ - void usedSendingAddresses(); - /** Show used receiving addresses */ - void usedReceivingAddresses(); - - /** Re-emit encryption status signal */ - void updateEncryptionStatus(); - - /** Show progress dialog e.g. for rescan */ - void showProgress(const QString &title, int nProgress); - -Q_SIGNALS: - /** Signal that we want to show the main window */ - void showNormalIfMinimized(); - /** Fired when a message should be reported to the user */ - void message(const QString &title, const QString &message, unsigned int style); - /** Encryption status of wallet changed */ - void encryptionStatusChanged(int status); - /** Notify that a new transaction appeared */ - void incomingTransaction(const QString& date, int unit, const CAmount& amount, const QString& type, const QString& address, const QString& label); -}; - -#endif // BITCOIN_QT_WALLETVIEW_H diff --git a/src/qt/winshutdownmonitor.cpp b/src/qt/winshutdownmonitor.cpp deleted file mode 100644 index 1bc4f7795..000000000 --- a/src/qt/winshutdownmonitor.cpp +++ /dev/null @@ -1,70 +0,0 @@ -// 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. - -#include "winshutdownmonitor.h" - -#if defined(Q_OS_WIN) && QT_VERSION >= 0x050000 -#include "init.h" -#include "util.h" - -#include - -#include - -#include - -// If we don't want a message to be processed by Qt, return true and set result to -// the value that the window procedure should return. Otherwise return false. -bool WinShutdownMonitor::nativeEventFilter(const QByteArray &eventType, void *pMessage, long *pnResult) -{ - Q_UNUSED(eventType); - - MSG *pMsg = static_cast(pMessage); - - // Seed OpenSSL PRNG with Windows event data (e.g. mouse movements and other user interactions) - if (RAND_event(pMsg->message, pMsg->wParam, pMsg->lParam) == 0) { - // Warn only once as this is performance-critical - static bool warned = false; - if (!warned) { - LogPrint("%s: OpenSSL RAND_event() failed to seed OpenSSL PRNG with enough data.\n", __func__); - warned = true; - } - } - - switch(pMsg->message) - { - case WM_QUERYENDSESSION: - { - // Initiate a client shutdown after receiving a WM_QUERYENDSESSION and block - // Windows session end until we have finished client shutdown. - StartShutdown(); - *pnResult = FALSE; - return true; - } - - case WM_ENDSESSION: - { - *pnResult = FALSE; - return true; - } - } - - return false; -} - -void WinShutdownMonitor::registerShutdownBlockReason(const QString& strReason, const HWND& mainWinId) -{ - typedef BOOL (WINAPI *PSHUTDOWNBRCREATE)(HWND, LPCWSTR); - PSHUTDOWNBRCREATE shutdownBRCreate = (PSHUTDOWNBRCREATE)GetProcAddress(GetModuleHandleA("User32.dll"), "ShutdownBlockReasonCreate"); - if (shutdownBRCreate == NULL) { - qWarning() << "registerShutdownBlockReason: GetProcAddress for ShutdownBlockReasonCreate failed"; - return; - } - - if (shutdownBRCreate(mainWinId, strReason.toStdWString().c_str())) - qWarning() << "registerShutdownBlockReason: Successfully registered: " + strReason; - else - qWarning() << "registerShutdownBlockReason: Failed to register: " + strReason; -} -#endif diff --git a/src/qt/winshutdownmonitor.h b/src/qt/winshutdownmonitor.h deleted file mode 100644 index 0bed55a2c..000000000 --- a/src/qt/winshutdownmonitor.h +++ /dev/null @@ -1,29 +0,0 @@ -// 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. - -#ifndef BITCOIN_QT_WINSHUTDOWNMONITOR_H -#define BITCOIN_QT_WINSHUTDOWNMONITOR_H - -#ifdef WIN32 -#include -#include - -#if QT_VERSION >= 0x050000 -#include // for HWND - -#include - -class WinShutdownMonitor : public QAbstractNativeEventFilter -{ -public: - /** Implements QAbstractNativeEventFilter interface for processing Windows messages */ - bool nativeEventFilter(const QByteArray &eventType, void *pMessage, long *pnResult); - - /** Register the reason for blocking shutdown on Windows to allow clean client exit */ - static void registerShutdownBlockReason(const QString& strReason, const HWND& mainWinId); -}; -#endif -#endif - -#endif // BITCOIN_QT_WINSHUTDOWNMONITOR_H diff --git a/src/random.cpp b/src/random.cpp index 4f197fcac..29faa32a7 100644 --- a/src/random.cpp +++ b/src/random.cpp @@ -19,8 +19,7 @@ #include #endif -#include -#include +#include "sodium.h" static inline int64_t GetPerformanceCounter() { @@ -35,60 +34,9 @@ static inline int64_t GetPerformanceCounter() return nCounter; } -void RandAddSeed() +void GetRandBytes(unsigned char* buf, size_t num) { - // Seed with CPU performance counter - int64_t nCounter = GetPerformanceCounter(); - RAND_add(&nCounter, sizeof(nCounter), 1.5); - memory_cleanse((void*)&nCounter, sizeof(nCounter)); -} - -void RandAddSeedPerfmon() -{ - RandAddSeed(); - -#ifdef WIN32 - // Don't need this on Linux, OpenSSL automatically uses /dev/urandom - // Seed with the entire set of perfmon data - - // This can take up to 2 seconds, so only do it every 10 minutes - static int64_t nLastPerfmon; - if (GetTime() < nLastPerfmon + 10 * 60) - return; - nLastPerfmon = GetTime(); - - std::vector vData(250000, 0); - long ret = 0; - unsigned long nSize = 0; - const size_t nMaxSize = 10000000; // Bail out at more than 10MB of performance data - while (true) { - nSize = vData.size(); - ret = RegQueryValueExA(HKEY_PERFORMANCE_DATA, "Global", NULL, NULL, begin_ptr(vData), &nSize); - if (ret != ERROR_MORE_DATA || vData.size() >= nMaxSize) - break; - vData.resize(std::max((vData.size() * 3) / 2, nMaxSize)); // Grow size of buffer exponentially - } - RegCloseKey(HKEY_PERFORMANCE_DATA); - if (ret == ERROR_SUCCESS) { - RAND_add(begin_ptr(vData), nSize, nSize / 100.0); - memory_cleanse(begin_ptr(vData), nSize); - LogPrint("rand", "%s: %lu bytes\n", __func__, nSize); - } else { - static bool warned = false; // Warn only once - if (!warned) { - LogPrintf("%s: Warning: RegQueryValueExA(HKEY_PERFORMANCE_DATA) failed with code %i\n", __func__, ret); - warned = true; - } - } -#endif -} - -void GetRandBytes(unsigned char* buf, int num) -{ - if (RAND_bytes(buf, num) != 1) { - LogPrintf("%s: OpenSSL RAND_bytes() failed with error: %s\n", __func__, ERR_error_string(ERR_get_error(), NULL)); - assert(false); - } + randombytes_buf(buf, num); } uint64_t GetRand(uint64_t nMax) diff --git a/src/random.h b/src/random.h index 5bc8b5480..8cec678ef 100644 --- a/src/random.h +++ b/src/random.h @@ -12,15 +12,9 @@ #include /** - * Seed OpenSSL PRNG with additional entropy data + * Functions to gather random data via the libsodium CSPRNG */ -void RandAddSeed(); -void RandAddSeedPerfmon(); - -/** - * Functions to gather random data via the OpenSSL PRNG - */ -void GetRandBytes(unsigned char* buf, int num); +void GetRandBytes(unsigned char* buf, size_t num); uint64_t GetRand(uint64_t nMax); int GetRandInt(int nMax); uint256 GetRandHash(); diff --git a/src/rest.cpp b/src/rest.cpp index d278198b4..1a1e5268b 100644 --- a/src/rest.cpp +++ b/src/rest.cpp @@ -6,6 +6,7 @@ #include "primitives/block.h" #include "primitives/transaction.h" #include "main.h" +#include "httpserver.h" #include "rpcserver.h" #include "streams.h" #include "sync.h" @@ -16,10 +17,11 @@ #include #include -using namespace std; -using namespace json_spirit; +#include -static const int MAX_GETUTXOS_OUTPOINTS = 15; //allow a max of 15 outpoints to be queried at once +using namespace std; + +static const size_t MAX_GETUTXOS_OUTPOINTS = 15; //allow a max of 15 outpoints to be queried at once enum RetFormat { RF_UNDEF, @@ -54,26 +56,21 @@ struct CCoin { } }; -class RestErr -{ -public: - enum HTTPStatusCode status; - string message; -}; +extern void TxToJSON(const CTransaction& tx, const uint256 hashBlock, UniValue& entry); +extern UniValue blockToJSON(const CBlock& block, const CBlockIndex* blockindex, bool txDetails = false); +extern UniValue mempoolInfoToJSON(); +extern UniValue mempoolToJSON(bool fVerbose = false); +extern void ScriptPubKeyToJSON(const CScript& scriptPubKey, UniValue& out, bool fIncludeHex); +extern UniValue blockheaderToJSON(const CBlockIndex* blockindex); -extern void TxToJSON(const CTransaction& tx, const uint256 hashBlock, Object& entry); -extern Object blockToJSON(const CBlock& block, const CBlockIndex* blockindex, bool txDetails = false); -extern void ScriptPubKeyToJSON(const CScript& scriptPubKey, Object& out, bool fIncludeHex); - -static RestErr RESTERR(enum HTTPStatusCode status, string message) +static bool RESTERR(HTTPRequest* req, enum HTTPStatusCode status, string message) { - RestErr re; - re.status = status; - re.message = message; - return re; + req->WriteHeader("Content-Type", "text/plain"); + req->WriteReply(status, message + "\r\n"); + return false; } -static enum RetFormat ParseDataFormat(vector& params, const string strReq) +static enum RetFormat ParseDataFormat(vector& params, const string& strReq) { boost::split(params, strReq, boost::is_any_of(".")); if (params.size() > 1) { @@ -110,37 +107,44 @@ static bool ParseHashStr(const string& strReq, uint256& v) return true; } -static bool rest_headers(AcceptedConnection* conn, - const std::string& strURIPart, - const std::string& strRequest, - const std::map& mapHeaders, - bool fRun) +static bool CheckWarmup(HTTPRequest* req) { + std::string statusmessage; + if (RPCIsInWarmup(&statusmessage)) + return RESTERR(req, HTTP_SERVICE_UNAVAILABLE, "Service temporarily unavailable: " + statusmessage); + return true; +} + +static bool rest_headers(HTTPRequest* req, + const std::string& strURIPart) +{ + if (!CheckWarmup(req)) + return false; vector params; const RetFormat rf = ParseDataFormat(params, strURIPart); vector path; boost::split(path, params[0], boost::is_any_of("/")); if (path.size() != 2) - throw RESTERR(HTTP_BAD_REQUEST, "No header count specified. Use /rest/headers//.."); + return RESTERR(req, HTTP_BAD_REQUEST, "No header count specified. Use /rest/headers//.."); long count = strtol(path[0].c_str(), NULL, 10); if (count < 1 || count > 2000) - throw RESTERR(HTTP_BAD_REQUEST, "Header count out of range: " + path[0]); + return RESTERR(req, HTTP_BAD_REQUEST, "Header count out of range: " + path[0]); string hashStr = path[1]; uint256 hash; if (!ParseHashStr(hashStr, hash)) - throw RESTERR(HTTP_BAD_REQUEST, "Invalid hash: " + hashStr); + return RESTERR(req, HTTP_BAD_REQUEST, "Invalid hash: " + hashStr); - std::vector headers; + std::vector headers; headers.reserve(count); { LOCK(cs_main); BlockMap::const_iterator it = mapBlockIndex.find(hash); const CBlockIndex *pindex = (it != mapBlockIndex.end()) ? it->second : NULL; while (pindex != NULL && chainActive.Contains(pindex)) { - headers.push_back(pindex->GetBlockHeader()); + headers.push_back(pindex); if (headers.size() == (unsigned long)count) break; pindex = chainActive.Next(pindex); @@ -148,25 +152,36 @@ static bool rest_headers(AcceptedConnection* conn, } CDataStream ssHeader(SER_NETWORK, PROTOCOL_VERSION); - BOOST_FOREACH(const CBlockHeader &header, headers) { - ssHeader << header; + BOOST_FOREACH(const CBlockIndex *pindex, headers) { + ssHeader << pindex->GetBlockHeader(); } switch (rf) { case RF_BINARY: { string binaryHeader = ssHeader.str(); - conn->stream() << HTTPReplyHeader(HTTP_OK, fRun, binaryHeader.size(), "application/octet-stream") << binaryHeader << std::flush; + req->WriteHeader("Content-Type", "application/octet-stream"); + req->WriteReply(HTTP_OK, binaryHeader); return true; } case RF_HEX: { string strHex = HexStr(ssHeader.begin(), ssHeader.end()) + "\n"; - conn->stream() << HTTPReply(HTTP_OK, strHex, fRun, false, "text/plain") << std::flush; + req->WriteHeader("Content-Type", "text/plain"); + req->WriteReply(HTTP_OK, strHex); + return true; + } + case RF_JSON: { + UniValue jsonHeaders(UniValue::VARR); + BOOST_FOREACH(const CBlockIndex *pindex, headers) { + jsonHeaders.push_back(blockheaderToJSON(pindex)); + } + string strJSON = jsonHeaders.write() + "\n"; + req->WriteHeader("Content-Type", "application/json"); + req->WriteReply(HTTP_OK, strJSON); return true; } - default: { - throw RESTERR(HTTP_NOT_FOUND, "output format not found (available: .bin, .hex)"); + return RESTERR(req, HTTP_NOT_FOUND, "output format not found (available: .bin, .hex)"); } } @@ -174,34 +189,33 @@ static bool rest_headers(AcceptedConnection* conn, return true; // continue to process further HTTP reqs on this cxn } -static bool rest_block(AcceptedConnection* conn, +static bool rest_block(HTTPRequest* req, const std::string& strURIPart, - const std::string& strRequest, - const std::map& mapHeaders, - bool fRun, bool showTxDetails) { + if (!CheckWarmup(req)) + return false; vector params; const RetFormat rf = ParseDataFormat(params, strURIPart); string hashStr = params[0]; uint256 hash; if (!ParseHashStr(hashStr, hash)) - throw RESTERR(HTTP_BAD_REQUEST, "Invalid hash: " + hashStr); + return RESTERR(req, HTTP_BAD_REQUEST, "Invalid hash: " + hashStr); CBlock block; CBlockIndex* pblockindex = NULL; { LOCK(cs_main); if (mapBlockIndex.count(hash) == 0) - throw RESTERR(HTTP_NOT_FOUND, hashStr + " not found"); + return RESTERR(req, HTTP_NOT_FOUND, hashStr + " not found"); pblockindex = mapBlockIndex[hash]; if (fHavePruned && !(pblockindex->nStatus & BLOCK_HAVE_DATA) && pblockindex->nTx > 0) - throw RESTERR(HTTP_NOT_FOUND, hashStr + " not available (pruned data)"); + return RESTERR(req, HTTP_NOT_FOUND, hashStr + " not available (pruned data)"); if (!ReadBlockFromDisk(block, pblockindex)) - throw RESTERR(HTTP_NOT_FOUND, hashStr + " not found"); + return RESTERR(req, HTTP_NOT_FOUND, hashStr + " not found"); } CDataStream ssBlock(SER_NETWORK, PROTOCOL_VERSION); @@ -210,25 +224,28 @@ static bool rest_block(AcceptedConnection* conn, switch (rf) { case RF_BINARY: { string binaryBlock = ssBlock.str(); - conn->stream() << HTTPReplyHeader(HTTP_OK, fRun, binaryBlock.size(), "application/octet-stream") << binaryBlock << std::flush; + req->WriteHeader("Content-Type", "application/octet-stream"); + req->WriteReply(HTTP_OK, binaryBlock); return true; } case RF_HEX: { string strHex = HexStr(ssBlock.begin(), ssBlock.end()) + "\n"; - conn->stream() << HTTPReply(HTTP_OK, strHex, fRun, false, "text/plain") << std::flush; + req->WriteHeader("Content-Type", "text/plain"); + req->WriteReply(HTTP_OK, strHex); return true; } case RF_JSON: { - Object objBlock = blockToJSON(block, pblockindex, showTxDetails); - string strJSON = write_string(Value(objBlock), false) + "\n"; - conn->stream() << HTTPReply(HTTP_OK, strJSON, fRun) << std::flush; + UniValue objBlock = blockToJSON(block, pblockindex, showTxDetails); + string strJSON = objBlock.write() + "\n"; + req->WriteHeader("Content-Type", "application/json"); + req->WriteReply(HTTP_OK, strJSON); return true; } default: { - throw RESTERR(HTTP_NOT_FOUND, "output format not found (available: " + AvailableDataFormatsString() + ")"); + return RESTERR(req, HTTP_NOT_FOUND, "output format not found (available: " + AvailableDataFormatsString() + ")"); } } @@ -236,44 +253,34 @@ static bool rest_block(AcceptedConnection* conn, return true; // continue to process further HTTP reqs on this cxn } -static bool rest_block_extended(AcceptedConnection* conn, - const std::string& strURIPart, - const std::string& strRequest, - const std::map& mapHeaders, - bool fRun) +static bool rest_block_extended(HTTPRequest* req, const std::string& strURIPart) { - return rest_block(conn, strURIPart, strRequest, mapHeaders, fRun, true); + return rest_block(req, strURIPart, true); } -static bool rest_block_notxdetails(AcceptedConnection* conn, - const std::string& strURIPart, - const std::string& strRequest, - const std::map& mapHeaders, - bool fRun) +static bool rest_block_notxdetails(HTTPRequest* req, const std::string& strURIPart) { - return rest_block(conn, strURIPart, strRequest, mapHeaders, fRun, false); + return rest_block(req, strURIPart, false); } -static bool rest_chaininfo(AcceptedConnection* conn, - const std::string& strURIPart, - const std::string& strRequest, - const std::map& mapHeaders, - bool fRun) +static bool rest_chaininfo(HTTPRequest* req, const std::string& strURIPart) { + if (!CheckWarmup(req)) + return false; vector params; const RetFormat rf = ParseDataFormat(params, strURIPart); switch (rf) { case RF_JSON: { - Array rpcParams; - Value chainInfoObject = getblockchaininfo(rpcParams, false); - - string strJSON = write_string(chainInfoObject, false) + "\n"; - conn->stream() << HTTPReply(HTTP_OK, strJSON, fRun) << std::flush; + UniValue rpcParams(UniValue::VARR); + UniValue chainInfoObject = getblockchaininfo(rpcParams, false); + string strJSON = chainInfoObject.write() + "\n"; + req->WriteHeader("Content-Type", "application/json"); + req->WriteReply(HTTP_OK, strJSON); return true; } default: { - throw RESTERR(HTTP_NOT_FOUND, "output format not found (available: json)"); + return RESTERR(req, HTTP_NOT_FOUND, "output format not found (available: json)"); } } @@ -281,24 +288,72 @@ static bool rest_chaininfo(AcceptedConnection* conn, return true; // continue to process further HTTP reqs on this cxn } -static bool rest_tx(AcceptedConnection* conn, - const std::string& strURIPart, - const std::string& strRequest, - const std::map& mapHeaders, - bool fRun) +static bool rest_mempool_info(HTTPRequest* req, const std::string& strURIPart) { + if (!CheckWarmup(req)) + return false; + vector params; + const RetFormat rf = ParseDataFormat(params, strURIPart); + + switch (rf) { + case RF_JSON: { + UniValue mempoolInfoObject = mempoolInfoToJSON(); + + string strJSON = mempoolInfoObject.write() + "\n"; + req->WriteHeader("Content-Type", "application/json"); + req->WriteReply(HTTP_OK, strJSON); + return true; + } + default: { + return RESTERR(req, HTTP_NOT_FOUND, "output format not found (available: json)"); + } + } + + // not reached + return true; // continue to process further HTTP reqs on this cxn +} + +static bool rest_mempool_contents(HTTPRequest* req, const std::string& strURIPart) +{ + if (!CheckWarmup(req)) + return false; + vector params; + const RetFormat rf = ParseDataFormat(params, strURIPart); + + switch (rf) { + case RF_JSON: { + UniValue mempoolObject = mempoolToJSON(true); + + string strJSON = mempoolObject.write() + "\n"; + req->WriteHeader("Content-Type", "application/json"); + req->WriteReply(HTTP_OK, strJSON); + return true; + } + default: { + return RESTERR(req, HTTP_NOT_FOUND, "output format not found (available: json)"); + } + } + + // not reached + return true; // continue to process further HTTP reqs on this cxn +} + +static bool rest_tx(HTTPRequest* req, const std::string& strURIPart) +{ + if (!CheckWarmup(req)) + return false; vector params; const RetFormat rf = ParseDataFormat(params, strURIPart); string hashStr = params[0]; uint256 hash; if (!ParseHashStr(hashStr, hash)) - throw RESTERR(HTTP_BAD_REQUEST, "Invalid hash: " + hashStr); + return RESTERR(req, HTTP_BAD_REQUEST, "Invalid hash: " + hashStr); CTransaction tx; uint256 hashBlock = uint256(); if (!GetTransaction(hash, tx, hashBlock, true)) - throw RESTERR(HTTP_NOT_FOUND, hashStr + " not found"); + return RESTERR(req, HTTP_NOT_FOUND, hashStr + " not found"); CDataStream ssTx(SER_NETWORK, PROTOCOL_VERSION); ssTx << tx; @@ -306,26 +361,29 @@ static bool rest_tx(AcceptedConnection* conn, switch (rf) { case RF_BINARY: { string binaryTx = ssTx.str(); - conn->stream() << HTTPReplyHeader(HTTP_OK, fRun, binaryTx.size(), "application/octet-stream") << binaryTx << std::flush; + req->WriteHeader("Content-Type", "application/octet-stream"); + req->WriteReply(HTTP_OK, binaryTx); return true; } case RF_HEX: { string strHex = HexStr(ssTx.begin(), ssTx.end()) + "\n"; - conn->stream() << HTTPReply(HTTP_OK, strHex, fRun, false, "text/plain") << std::flush; + req->WriteHeader("Content-Type", "text/plain"); + req->WriteReply(HTTP_OK, strHex); return true; } case RF_JSON: { - Object objTx; + UniValue objTx(UniValue::VOBJ); TxToJSON(tx, hashBlock, objTx); - string strJSON = write_string(Value(objTx), false) + "\n"; - conn->stream() << HTTPReply(HTTP_OK, strJSON, fRun) << std::flush; + string strJSON = objTx.write() + "\n"; + req->WriteHeader("Content-Type", "application/json"); + req->WriteReply(HTTP_OK, strJSON); return true; } default: { - throw RESTERR(HTTP_NOT_FOUND, "output format not found (available: " + AvailableDataFormatsString() + ")"); + return RESTERR(req, HTTP_NOT_FOUND, "output format not found (available: " + AvailableDataFormatsString() + ")"); } } @@ -333,12 +391,10 @@ static bool rest_tx(AcceptedConnection* conn, return true; // continue to process further HTTP reqs on this cxn } -static bool rest_getutxos(AcceptedConnection* conn, - const std::string& strURIPart, - const std::string& strRequest, - const std::map& mapHeaders, - bool fRun) +static bool rest_getutxos(HTTPRequest* req, const std::string& strURIPart) { + if (!CheckWarmup(req)) + return false; vector params; enum RetFormat rf = ParseDataFormat(params, strURIPart); @@ -350,8 +406,9 @@ static bool rest_getutxos(AcceptedConnection* conn, } // throw exception in case of a empty request - if (strRequest.length() == 0 && uriParts.size() == 0) - throw RESTERR(HTTP_INTERNAL_SERVER_ERROR, "Error: empty request"); + std::string strRequestMutable = req->ReadBody(); + if (strRequestMutable.length() == 0 && uriParts.size() == 0) + return RESTERR(req, HTTP_INTERNAL_SERVER_ERROR, "Error: empty request"); bool fInputParsed = false; bool fCheckMemPool = false; @@ -375,7 +432,7 @@ static bool rest_getutxos(AcceptedConnection* conn, std::string strOutput = uriParts[i].substr(uriParts[i].find("-")+1); if (!ParseInt32(strOutput, &nOutput) || !IsHex(strTxid)) - throw RESTERR(HTTP_INTERNAL_SERVER_ERROR, "Parse error"); + return RESTERR(req, HTTP_INTERNAL_SERVER_ERROR, "Parse error"); txid.SetHex(strTxid); vOutPoints.push_back(COutPoint(txid, (uint32_t)nOutput)); @@ -384,15 +441,13 @@ static bool rest_getutxos(AcceptedConnection* conn, if (vOutPoints.size() > 0) fInputParsed = true; else - throw RESTERR(HTTP_INTERNAL_SERVER_ERROR, "Error: empty request"); + return RESTERR(req, HTTP_INTERNAL_SERVER_ERROR, "Error: empty request"); } - string strRequestMutable = strRequest; //convert const string to string for allowing hex to bin converting - switch (rf) { case RF_HEX: { // convert hex to bin, continue then with bin part - std::vector strRequestV = ParseHex(strRequest); + std::vector strRequestV = ParseHex(strRequestMutable); strRequestMutable.assign(strRequestV.begin(), strRequestV.end()); } @@ -402,7 +457,7 @@ static bool rest_getutxos(AcceptedConnection* conn, if (strRequestMutable.size() > 0) { if (fInputParsed) //don't allow sending input over URI and HTTP RAW DATA - throw RESTERR(HTTP_INTERNAL_SERVER_ERROR, "Combination of URI scheme inputs and raw post data is not allowed"); + return RESTERR(req, HTTP_INTERNAL_SERVER_ERROR, "Combination of URI scheme inputs and raw post data is not allowed"); CDataStream oss(SER_NETWORK, PROTOCOL_VERSION); oss << strRequestMutable; @@ -411,24 +466,24 @@ static bool rest_getutxos(AcceptedConnection* conn, } } catch (const std::ios_base::failure& e) { // abort in case of unreadable binary data - throw RESTERR(HTTP_INTERNAL_SERVER_ERROR, "Parse error"); + return RESTERR(req, HTTP_INTERNAL_SERVER_ERROR, "Parse error"); } break; } case RF_JSON: { if (!fInputParsed) - throw RESTERR(HTTP_INTERNAL_SERVER_ERROR, "Error: empty request"); + return RESTERR(req, HTTP_INTERNAL_SERVER_ERROR, "Error: empty request"); break; } default: { - throw RESTERR(HTTP_NOT_FOUND, "output format not found (available: " + AvailableDataFormatsString() + ")"); + return RESTERR(req, HTTP_NOT_FOUND, "output format not found (available: " + AvailableDataFormatsString() + ")"); } } // limit max outpoints if (vOutPoints.size() > MAX_GETUTXOS_OUTPOINTS) - throw RESTERR(HTTP_INTERNAL_SERVER_ERROR, strprintf("Error: max outpoints exceeded (max: %d, tried: %d)", MAX_GETUTXOS_OUTPOINTS, vOutPoints.size())); + return RESTERR(req, HTTP_INTERNAL_SERVER_ERROR, strprintf("Error: max outpoints exceeded (max: %d, tried: %d)", MAX_GETUTXOS_OUTPOINTS, vOutPoints.size())); // check spentness and form a bitmap (as well as a JSON capable human-readble string representation) vector bitmap; @@ -478,7 +533,8 @@ static bool rest_getutxos(AcceptedConnection* conn, ssGetUTXOResponse << chainActive.Height() << chainActive.Tip()->GetBlockHash() << bitmap << outs; string ssGetUTXOResponseString = ssGetUTXOResponse.str(); - conn->stream() << HTTPReplyHeader(HTTP_OK, fRun, ssGetUTXOResponseString.size(), "application/octet-stream") << ssGetUTXOResponseString << std::flush; + req->WriteHeader("Content-Type", "application/octet-stream"); + req->WriteReply(HTTP_OK, ssGetUTXOResponseString); return true; } @@ -487,12 +543,13 @@ static bool rest_getutxos(AcceptedConnection* conn, ssGetUTXOResponse << chainActive.Height() << chainActive.Tip()->GetBlockHash() << bitmap << outs; string strHex = HexStr(ssGetUTXOResponse.begin(), ssGetUTXOResponse.end()) + "\n"; - conn->stream() << HTTPReply(HTTP_OK, strHex, fRun, false, "text/plain") << std::flush; + req->WriteHeader("Content-Type", "text/plain"); + req->WriteReply(HTTP_OK, strHex); return true; } case RF_JSON: { - Object objGetUTXOResponse; + UniValue objGetUTXOResponse(UniValue::VOBJ); // pack in some essentials // use more or less the same output as mentioned in Bip64 @@ -500,16 +557,16 @@ static bool rest_getutxos(AcceptedConnection* conn, objGetUTXOResponse.push_back(Pair("chaintipHash", chainActive.Tip()->GetBlockHash().GetHex())); objGetUTXOResponse.push_back(Pair("bitmap", bitmapStringRepresentation)); - Array utxos; + UniValue utxos(UniValue::VARR); BOOST_FOREACH (const CCoin& coin, outs) { - Object utxo; + UniValue utxo(UniValue::VOBJ); utxo.push_back(Pair("txvers", (int32_t)coin.nTxVer)); utxo.push_back(Pair("height", (int32_t)coin.nHeight)); utxo.push_back(Pair("value", ValueFromAmount(coin.out.nValue))); //utxo.push_back(Pair("interest", ValueFromAmount(komodo_interest(coin.out.nValue,coin.nLockTime,chainActive.Tip()->nTime)))); // include the script in a json output - Object o; + UniValue o(UniValue::VOBJ); ScriptPubKeyToJSON(coin.out.scriptPubKey, o, true); utxo.push_back(Pair("scriptPubKey", o)); utxos.push_back(utxo); @@ -517,12 +574,13 @@ static bool rest_getutxos(AcceptedConnection* conn, objGetUTXOResponse.push_back(Pair("utxos", utxos)); // return json string - string strJSON = write_string(Value(objGetUTXOResponse), false) + "\n"; - conn->stream() << HTTPReply(HTTP_OK, strJSON, fRun) << std::flush; + string strJSON = objGetUTXOResponse.write() + "\n"; + req->WriteHeader("Content-Type", "application/json"); + req->WriteReply(HTTP_OK, strJSON); return true; } default: { - throw RESTERR(HTTP_NOT_FOUND, "output format not found (available: " + AvailableDataFormatsString() + ")"); + return RESTERR(req, HTTP_NOT_FOUND, "output format not found (available: " + AvailableDataFormatsString() + ")"); } } @@ -532,43 +590,31 @@ static bool rest_getutxos(AcceptedConnection* conn, static const struct { const char* prefix; - bool (*handler)(AcceptedConnection* conn, - const std::string& strURIPart, - const std::string& strRequest, - const std::map& mapHeaders, - bool fRun); + bool (*handler)(HTTPRequest* req, const std::string& strReq); } uri_prefixes[] = { {"/rest/tx/", rest_tx}, {"/rest/block/notxdetails/", rest_block_notxdetails}, {"/rest/block/", rest_block_extended}, {"/rest/chaininfo", rest_chaininfo}, + {"/rest/mempool/info", rest_mempool_info}, + {"/rest/mempool/contents", rest_mempool_contents}, {"/rest/headers/", rest_headers}, {"/rest/getutxos", rest_getutxos}, }; -bool HTTPReq_REST(AcceptedConnection* conn, - const std::string& strURI, - const string& strRequest, - const std::map& mapHeaders, - bool fRun) +bool StartREST() { - try { - std::string statusmessage; - if (RPCIsInWarmup(&statusmessage)) - throw RESTERR(HTTP_SERVICE_UNAVAILABLE, "Service temporarily unavailable: " + statusmessage); - - for (unsigned int i = 0; i < ARRAYLEN(uri_prefixes); i++) { - unsigned int plen = strlen(uri_prefixes[i].prefix); - if (strURI.substr(0, plen) == uri_prefixes[i].prefix) { - string strURIPart = strURI.substr(plen); - return uri_prefixes[i].handler(conn, strURIPart, strRequest, mapHeaders, fRun); - } - } - } catch (const RestErr& re) { - conn->stream() << HTTPReply(re.status, re.message + "\r\n", false, false, "text/plain") << std::flush; - return false; - } - - conn->stream() << HTTPError(HTTP_NOT_FOUND, false) << std::flush; - return false; + for (unsigned int i = 0; i < ARRAYLEN(uri_prefixes); i++) + RegisterHTTPHandler(uri_prefixes[i].prefix, false, uri_prefixes[i].handler); + return true; +} + +void InterruptREST() +{ +} + +void StopREST() +{ + for (unsigned int i = 0; i < ARRAYLEN(uri_prefixes); i++) + UnregisterHTTPHandler(uri_prefixes[i].prefix, false); } diff --git a/src/rpcblockchain.cpp b/src/rpcblockchain.cpp index b1fa9d3d5..a825d1e8a 100644 --- a/src/rpcblockchain.cpp +++ b/src/rpcblockchain.cpp @@ -13,13 +13,14 @@ #include -#include "json/json_spirit_value.h" +#include + +#include -using namespace json_spirit; using namespace std; -extern void TxToJSON(const CTransaction& tx, const uint256 hashBlock, Object& entry); -void ScriptPubKeyToJSON(const CScript& scriptPubKey, Object& out, bool fIncludeHex); +extern void TxToJSON(const CTransaction& tx, const uint256 hashBlock, UniValue& entry); +void ScriptPubKeyToJSON(const CScript& scriptPubKey, UniValue& out, bool fIncludeHex); double GetDifficultyINTERNAL(const CBlockIndex* blockindex, bool networkDifficulty) { @@ -73,10 +74,36 @@ double GetNetworkDifficulty(const CBlockIndex* blockindex) return GetDifficultyINTERNAL(blockindex, true); } - -Object blockToJSON(const CBlock& block, const CBlockIndex* blockindex, bool txDetails = false) +UniValue blockheaderToJSON(const CBlockIndex* blockindex) { - Object result; + UniValue result(UniValue::VOBJ); + result.push_back(Pair("hash", blockindex->GetBlockHash().GetHex())); + int confirmations = -1; + // Only report confirmations if the block is on the main chain + if (chainActive.Contains(blockindex)) + confirmations = chainActive.Height() - blockindex->nHeight + 1; + result.push_back(Pair("confirmations", confirmations)); + result.push_back(Pair("height", blockindex->nHeight)); + result.push_back(Pair("version", blockindex->nVersion)); + result.push_back(Pair("merkleroot", blockindex->hashMerkleRoot.GetHex())); + result.push_back(Pair("time", (int64_t)blockindex->nTime)); + result.push_back(Pair("nonce", blockindex->nNonce.GetHex())); + result.push_back(Pair("solution", HexStr(blockindex->nSolution))); + result.push_back(Pair("bits", strprintf("%08x", blockindex->nBits))); + result.push_back(Pair("difficulty", GetDifficulty(blockindex))); + result.push_back(Pair("chainwork", blockindex->nChainWork.GetHex())); + + if (blockindex->pprev) + result.push_back(Pair("previousblockhash", blockindex->pprev->GetBlockHash().GetHex())); + CBlockIndex *pnext = chainActive.Next(blockindex); + if (pnext) + result.push_back(Pair("nextblockhash", pnext->GetBlockHash().GetHex())); + return result; +} + +UniValue blockToJSON(const CBlock& block, const CBlockIndex* blockindex, bool txDetails = false) +{ + UniValue result(UniValue::VOBJ); result.push_back(Pair("hash", block.GetHash().GetHex())); int confirmations = -1; // Only report confirmations if the block is on the main chain @@ -87,12 +114,12 @@ Object blockToJSON(const CBlock& block, const CBlockIndex* blockindex, bool txDe result.push_back(Pair("height", blockindex->nHeight)); result.push_back(Pair("version", block.nVersion)); result.push_back(Pair("merkleroot", block.hashMerkleRoot.GetHex())); - Array txs; + UniValue txs(UniValue::VARR); BOOST_FOREACH(const CTransaction&tx, block.vtx) { if(txDetails) { - Object objTx; + UniValue objTx(UniValue::VOBJ); TxToJSON(tx, uint256(), objTx); txs.push_back(objTx); } @@ -106,6 +133,7 @@ Object blockToJSON(const CBlock& block, const CBlockIndex* blockindex, bool txDe result.push_back(Pair("bits", strprintf("%08x", block.nBits))); result.push_back(Pair("difficulty", GetDifficulty(blockindex))); result.push_back(Pair("chainwork", blockindex->nChainWork.GetHex())); + result.push_back(Pair("anchor", blockindex->hashAnchorEnd.GetHex())); if (blockindex->pprev) result.push_back(Pair("previousblockhash", blockindex->pprev->GetBlockHash().GetHex())); @@ -115,8 +143,7 @@ Object blockToJSON(const CBlock& block, const CBlockIndex* blockindex, bool txDe return result; } - -Value getblockcount(const Array& params, bool fHelp) +UniValue getblockcount(const UniValue& params, bool fHelp) { if (fHelp || params.size() != 0) throw runtime_error( @@ -133,7 +160,7 @@ Value getblockcount(const Array& params, bool fHelp) return chainActive.Height(); } -Value getbestblockhash(const Array& params, bool fHelp) +UniValue getbestblockhash(const UniValue& params, bool fHelp) { if (fHelp || params.size() != 0) throw runtime_error( @@ -150,7 +177,7 @@ Value getbestblockhash(const Array& params, bool fHelp) return chainActive.Tip()->GetBlockHash().GetHex(); } -Value getdifficulty(const Array& params, bool fHelp) +UniValue getdifficulty(const UniValue& params, bool fHelp) { if (fHelp || params.size() != 0) throw runtime_error( @@ -167,8 +194,56 @@ Value getdifficulty(const Array& params, bool fHelp) return GetNetworkDifficulty(); } +UniValue mempoolToJSON(bool fVerbose = false) +{ + if (fVerbose) + { + LOCK(mempool.cs); + UniValue o(UniValue::VOBJ); + BOOST_FOREACH(const PAIRTYPE(uint256, CTxMemPoolEntry)& entry, mempool.mapTx) + { + const uint256& hash = entry.first; + const CTxMemPoolEntry& e = entry.second; + UniValue info(UniValue::VOBJ); + info.push_back(Pair("size", (int)e.GetTxSize())); + info.push_back(Pair("fee", ValueFromAmount(e.GetFee()))); + info.push_back(Pair("time", e.GetTime())); + info.push_back(Pair("height", (int)e.GetHeight())); + info.push_back(Pair("startingpriority", e.GetPriority(e.GetHeight()))); + info.push_back(Pair("currentpriority", e.GetPriority(chainActive.Height()))); + const CTransaction& tx = e.GetTx(); + set setDepends; + BOOST_FOREACH(const CTxIn& txin, tx.vin) + { + if (mempool.exists(txin.prevout.hash)) + setDepends.insert(txin.prevout.hash.ToString()); + } -Value getrawmempool(const Array& params, bool fHelp) + UniValue depends(UniValue::VARR); + BOOST_FOREACH(const string& dep, setDepends) + { + depends.push_back(dep); + } + + info.push_back(Pair("depends", depends)); + o.push_back(Pair(hash.ToString(), info)); + } + return o; + } + else + { + vector vtxid; + mempool.queryHashes(vtxid); + + UniValue a(UniValue::VARR); + BOOST_FOREACH(const uint256& hash, vtxid) + a.push_back(hash.ToString()); + + return a; + } +} + +UniValue getrawmempool(const UniValue& params, bool fHelp) { if (fHelp || params.size() > 1) throw runtime_error( @@ -206,48 +281,10 @@ Value getrawmempool(const Array& params, bool fHelp) if (params.size() > 0) fVerbose = params[0].get_bool(); - if (fVerbose) - { - LOCK(mempool.cs); - Object o; - BOOST_FOREACH(const PAIRTYPE(uint256, CTxMemPoolEntry)& entry, mempool.mapTx) - { - const uint256& hash = entry.first; - const CTxMemPoolEntry& e = entry.second; - Object info; - info.push_back(Pair("size", (int)e.GetTxSize())); - info.push_back(Pair("fee", ValueFromAmount(e.GetFee()))); - info.push_back(Pair("time", e.GetTime())); - info.push_back(Pair("height", (int)e.GetHeight())); - info.push_back(Pair("startingpriority", e.GetPriority(e.GetHeight()))); - info.push_back(Pair("currentpriority", e.GetPriority(chainActive.Height()))); - const CTransaction& tx = e.GetTx(); - set setDepends; - BOOST_FOREACH(const CTxIn& txin, tx.vin) - { - if (mempool.exists(txin.prevout.hash)) - setDepends.insert(txin.prevout.hash.ToString()); - } - Array depends(setDepends.begin(), setDepends.end()); - info.push_back(Pair("depends", depends)); - o.push_back(Pair(hash.ToString(), info)); - } - return o; - } - else - { - vector vtxid; - mempool.queryHashes(vtxid); - - Array a; - BOOST_FOREACH(const uint256& hash, vtxid) - a.push_back(hash.ToString()); - - return a; - } + return mempoolToJSON(fVerbose); } -Value getblockhash(const Array& params, bool fHelp) +UniValue getblockhash(const UniValue& params, bool fHelp) { if (fHelp || params.size() != 1) throw runtime_error( @@ -288,13 +325,16 @@ uint256 _komodo_getblockhash(int32_t nHeight) return(hash); } -Value getblock(const Array& params, bool fHelp) +//Value getblock(const Array& params, bool fHelp) +//======= +UniValue getblockheader(const UniValue& params, bool fHelp) +//>>>>>>> zcash/master { if (fHelp || params.size() < 1 || params.size() > 2) throw runtime_error( - "getblock \"hash\" ( verbose )\n" - "\nIf verbose is false, returns a string that is serialized, hex-encoded data for block 'hash'.\n" - "If verbose is true, returns an Object with information about block .\n" + "getblockheader \"hash\" ( verbose )\n" + "\nIf verbose is false, returns a string that is serialized, hex-encoded data for blockheader 'hash'.\n" + "If verbose is true, returns an Object with information about blockheader .\n" "\nArguments:\n" "1. \"hash\" (string, required) The block hash\n" "2. verbose (boolean, optional, default=true) true for a json object, false for the hex encoded data\n" @@ -302,14 +342,9 @@ Value getblock(const Array& params, bool fHelp) "{\n" " \"hash\" : \"hash\", (string) the block hash (same as provided)\n" " \"confirmations\" : n, (numeric) The number of confirmations, or -1 if the block is not on the main chain\n" - " \"size\" : n, (numeric) The block size\n" " \"height\" : n, (numeric) The block height or index\n" " \"version\" : n, (numeric) The block version\n" " \"merkleroot\" : \"xxxx\", (string) The merkle root\n" - " \"tx\" : [ (array of string) The transaction ids\n" - " \"transactionid\" (string) The transaction id\n" - " ,...\n" - " ],\n" " \"time\" : ttt, (numeric) The block time in seconds since epoch (Jan 1 1970 GMT)\n" " \"nonce\" : n, (numeric) The nonce\n" " \"bits\" : \"1d00ffff\", (string) The bits\n" @@ -320,8 +355,8 @@ Value getblock(const Array& params, bool fHelp) "\nResult (for verbose=false):\n" "\"data\" (string) A string that is serialized, hex-encoded data for block 'hash'.\n" "\nExamples:\n" - + HelpExampleCli("getblock", "\"00000000c937983704a73af28acdec37b049d214adbda81d7e2a3dd146f6ed09\"") - + HelpExampleRpc("getblock", "\"00000000c937983704a73af28acdec37b049d214adbda81d7e2a3dd146f6ed09\"") + + HelpExampleCli("getblockheader", "\"00000000c937983704a73af28acdec37b049d214adbda81d7e2a3dd146f6ed09\"") + + HelpExampleRpc("getblockheader", "\"00000000c937983704a73af28acdec37b049d214adbda81d7e2a3dd146f6ed09\"") ); LOCK(cs_main); @@ -329,6 +364,92 @@ Value getblock(const Array& params, bool fHelp) std::string strHash = params[0].get_str(); uint256 hash(uint256S(strHash)); + bool fVerbose = true; + if (params.size() > 1) + fVerbose = params[1].get_bool(); + + if (mapBlockIndex.count(hash) == 0) + throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, "Block not found"); + + CBlockIndex* pblockindex = mapBlockIndex[hash]; + + if (!fVerbose) + { + CDataStream ssBlock(SER_NETWORK, PROTOCOL_VERSION); + ssBlock << pblockindex->GetBlockHeader(); + std::string strHex = HexStr(ssBlock.begin(), ssBlock.end()); + return strHex; + } + + return blockheaderToJSON(pblockindex); +} + +UniValue getblock(const UniValue& params, bool fHelp) +{ + if (fHelp || params.size() < 1 || params.size() > 2) + throw runtime_error( + "getblock \"hash|height\" ( verbose )\n" + "\nIf verbose is false, returns a string that is serialized, hex-encoded data for block 'hash|height'.\n" + "If verbose is true, returns an Object with information about block .\n" + "\nArguments:\n" + "1. \"hash|height\" (string, required) The block hash or height\n" + "2. verbose (boolean, optional, default=true) true for a json object, false for the hex encoded data\n" + "\nResult (for verbose = true):\n" + "{\n" + " \"hash\" : \"hash\", (string) the block hash (same as provided hash)\n" + " \"confirmations\" : n, (numeric) The number of confirmations, or -1 if the block is not on the main chain\n" + " \"size\" : n, (numeric) The block size\n" + " \"height\" : n, (numeric) The block height or index (same as provided height)\n" + " \"version\" : n, (numeric) The block version\n" + " \"merkleroot\" : \"xxxx\", (string) The merkle root\n" + " \"tx\" : [ (array of string) The transaction ids\n" + " \"transactionid\" (string) The transaction id\n" + " ,...\n" + " ],\n" + " \"time\" : ttt, (numeric) The block time in seconds since epoch (Jan 1 1970 GMT)\n" + " \"nonce\" : n, (numeric) The nonce\n" + " \"bits\" : \"1d00ffff\", (string) The bits\n" + " \"difficulty\" : x.xxx, (numeric) The difficulty\n" + " \"previousblockhash\" : \"hash\", (string) The hash of the previous block\n" + " \"nextblockhash\" : \"hash\" (string) The hash of the next block\n" + "}\n" + "\nResult (for verbose=false):\n" + "\"data\" (string) A string that is serialized, hex-encoded data for block 'hash'.\n" + "\nExamples:\n" + + HelpExampleCli("getblock", "\"00000000c937983704a73af28acdec37b049d214adbda81d7e2a3dd146f6ed09\"") + + HelpExampleRpc("getblock", "\"00000000c937983704a73af28acdec37b049d214adbda81d7e2a3dd146f6ed09\"") + + HelpExampleCli("getblock", "12800") + + HelpExampleRpc("getblock", "12800") + ); + + LOCK(cs_main); + + std::string strHash = params[0].get_str(); + + // If height is supplied, find the hash + if (strHash.size() < (2 * sizeof(uint256))) { + // std::stoi allows characters, whereas we want to be strict + regex r("[[:digit:]]+"); + if (!regex_match(strHash, r)) { + throw JSONRPCError(RPC_INVALID_PARAMETER, "Invalid block height parameter"); + } + + int nHeight = -1; + try { + nHeight = std::stoi(strHash); + } + catch (const std::exception &e) { + throw JSONRPCError(RPC_INVALID_PARAMETER, "Invalid block height parameter"); + } + + if (nHeight < 0 || nHeight > chainActive.Height()) { + throw JSONRPCError(RPC_INVALID_PARAMETER, "Block height out of range"); + } + strHash = chainActive[nHeight]->GetBlockHash().GetHex(); + } + + uint256 hash(uint256S(strHash)); + bool fVerbose = true; if (params.size() > 1) fVerbose = params[1].get_bool(); @@ -356,7 +477,7 @@ Value getblock(const Array& params, bool fHelp) return blockToJSON(block, pblockindex); } -Value gettxoutsetinfo(const Array& params, bool fHelp) +UniValue gettxoutsetinfo(const UniValue& params, bool fHelp) { if (fHelp || params.size() != 0) throw runtime_error( @@ -378,9 +499,7 @@ Value gettxoutsetinfo(const Array& params, bool fHelp) + HelpExampleRpc("gettxoutsetinfo", "") ); - LOCK(cs_main); - - Object ret; + UniValue ret(UniValue::VOBJ); CCoinsStats stats; FlushStateToDisk(); @@ -655,7 +774,10 @@ Value paxprices(const Array& params, bool fHelp) uint64_t komodo_accrued_interest(int32_t *txheightp,uint32_t *locktimep,uint256 hash,int32_t n,int32_t checkheight,uint64_t checkvalue); -Value gettxout(const Array& params, bool fHelp) +//Value gettxout(const Array& params, bool fHelp) +//======= +UniValue gettxout(const UniValue& params, bool fHelp) +//>>>>>>> zcash/master { if (fHelp || params.size() < 2 || params.size() > 3) throw runtime_error( @@ -695,7 +817,7 @@ Value gettxout(const Array& params, bool fHelp) LOCK(cs_main); - Object ret; + UniValue ret(UniValue::VOBJ); std::string strHash = params[0].get_str(); uint256 hash(uint256S(strHash)); @@ -709,14 +831,14 @@ Value gettxout(const Array& params, bool fHelp) LOCK(mempool.cs); CCoinsViewMemPool view(pcoinsTip, mempool); if (!view.GetCoins(hash, coins)) - return Value::null; + return NullUniValue; mempool.pruneSpent(hash, coins); // TODO: this should be done by the CCoinsViewMemPool } else { if (!pcoinsTip->GetCoins(hash, coins)) - return Value::null; + return NullUniValue; } if (n<0 || (unsigned int)n>=coins.vout.size() || coins.vout[n].IsNull()) - return Value::null; + return NullUniValue; BlockMap::iterator it = mapBlockIndex.find(pcoinsTip->GetBestBlock()); CBlockIndex *pindex = it->second; @@ -728,7 +850,7 @@ Value gettxout(const Array& params, bool fHelp) uint64_t interest; int32_t txheight; uint32_t locktime; if ( (interest= komodo_accrued_interest(&txheight,&locktime,hash,n,coins.nHeight,coins.vout[n].nValue)) != 0 ) ret.push_back(Pair("interest", ValueFromAmount(interest))); - Object o; + UniValue o(UniValue::VOBJ); ScriptPubKeyToJSON(coins.vout[n].scriptPubKey, o, true); ret.push_back(Pair("scriptPubKey", o)); ret.push_back(Pair("version", coins.nVersion)); @@ -737,7 +859,7 @@ Value gettxout(const Array& params, bool fHelp) return ret; } -Value verifychain(const Array& params, bool fHelp) +UniValue verifychain(const UniValue& params, bool fHelp) { if (fHelp || params.size() > 2) throw runtime_error( @@ -766,7 +888,7 @@ Value verifychain(const Array& params, bool fHelp) } /** Implementation of IsSuperMajority with better feedback */ -Object SoftForkMajorityDesc(int minVersion, CBlockIndex* pindex, int nRequired, const Consensus::Params& consensusParams) +static UniValue SoftForkMajorityDesc(int minVersion, CBlockIndex* pindex, int nRequired, const Consensus::Params& consensusParams) { int nFound = 0; CBlockIndex* pstart = pindex; @@ -777,7 +899,7 @@ Object SoftForkMajorityDesc(int minVersion, CBlockIndex* pindex, int nRequired, pstart = pstart->pprev; } - Object rv; + UniValue rv(UniValue::VOBJ); rv.push_back(Pair("status", nFound >= nRequired)); rv.push_back(Pair("found", nFound)); rv.push_back(Pair("required", nRequired)); @@ -785,9 +907,9 @@ Object SoftForkMajorityDesc(int minVersion, CBlockIndex* pindex, int nRequired, return rv; } -Object SoftForkDesc(const std::string &name, int version, CBlockIndex* pindex, const Consensus::Params& consensusParams) +static UniValue SoftForkDesc(const std::string &name, int version, CBlockIndex* pindex, const Consensus::Params& consensusParams) { - Object rv; + UniValue rv(UniValue::VOBJ); rv.push_back(Pair("id", name)); rv.push_back(Pair("version", version)); rv.push_back(Pair("enforce", SoftForkMajorityDesc(version, pindex, consensusParams.nMajorityEnforceBlockUpgrade, consensusParams))); @@ -795,7 +917,7 @@ Object SoftForkDesc(const std::string &name, int version, CBlockIndex* pindex, c return rv; } -Value getblockchaininfo(const Array& params, bool fHelp) +UniValue getblockchaininfo(const UniValue& params, bool fHelp) { if (fHelp || params.size() != 0) throw runtime_error( @@ -832,7 +954,7 @@ Value getblockchaininfo(const Array& params, bool fHelp) LOCK(cs_main); - Object obj; + UniValue obj(UniValue::VOBJ); obj.push_back(Pair("chain", Params().NetworkIDString())); obj.push_back(Pair("blocks", (int)chainActive.Height())); obj.push_back(Pair("headers", pindexBestHeader ? pindexBestHeader->nHeight : -1)); @@ -848,7 +970,7 @@ Value getblockchaininfo(const Array& params, bool fHelp) const Consensus::Params& consensusParams = Params().GetConsensus(); CBlockIndex* tip = chainActive.Tip(); - Array softforks; + UniValue softforks(UniValue::VARR); softforks.push_back(SoftForkDesc("bip34", 2, tip, consensusParams)); softforks.push_back(SoftForkDesc("bip66", 3, tip, consensusParams)); softforks.push_back(SoftForkDesc("bip65", 4, tip, consensusParams)); @@ -880,7 +1002,7 @@ struct CompareBlocksByHeight } }; -Value getchaintips(const Array& params, bool fHelp) +UniValue getchaintips(const UniValue& params, bool fHelp) { if (fHelp || params.size() != 0) throw runtime_error( @@ -932,10 +1054,10 @@ Value getchaintips(const Array& params, bool fHelp) setTips.insert(chainActive.Tip()); /* Construct the output array. */ - Array res; + UniValue res(UniValue::VARR); BOOST_FOREACH(const CBlockIndex* block, setTips) { - Object obj; + UniValue obj(UniValue::VOBJ); obj.push_back(Pair("height", block->nHeight)); obj.push_back(Pair("hash", block->phashBlock->GetHex())); @@ -970,7 +1092,17 @@ Value getchaintips(const Array& params, bool fHelp) return res; } -Value getmempoolinfo(const Array& params, bool fHelp) +UniValue mempoolInfoToJSON() +{ + UniValue ret(UniValue::VOBJ); + ret.push_back(Pair("size", (int64_t) mempool.size())); + ret.push_back(Pair("bytes", (int64_t) mempool.GetTotalTxSize())); + ret.push_back(Pair("usage", (int64_t) mempool.DynamicMemoryUsage())); + + return ret; +} + +UniValue getmempoolinfo(const UniValue& params, bool fHelp) { if (fHelp || params.size() != 0) throw runtime_error( @@ -980,20 +1112,17 @@ Value getmempoolinfo(const Array& params, bool fHelp) "{\n" " \"size\": xxxxx (numeric) Current tx count\n" " \"bytes\": xxxxx (numeric) Sum of all tx sizes\n" + " \"usage\": xxxxx (numeric) Total memory usage for the mempool\n" "}\n" "\nExamples:\n" + HelpExampleCli("getmempoolinfo", "") + HelpExampleRpc("getmempoolinfo", "") ); - Object ret; - ret.push_back(Pair("size", (int64_t) mempool.size())); - ret.push_back(Pair("bytes", (int64_t) mempool.GetTotalTxSize())); - - return ret; + return mempoolInfoToJSON(); } -Value invalidateblock(const Array& params, bool fHelp) +UniValue invalidateblock(const UniValue& params, bool fHelp) { if (fHelp || params.size() != 1) throw runtime_error( @@ -1028,10 +1157,10 @@ Value invalidateblock(const Array& params, bool fHelp) throw JSONRPCError(RPC_DATABASE_ERROR, state.GetRejectReason()); } - return Value::null; + return NullUniValue; } -Value reconsiderblock(const Array& params, bool fHelp) +UniValue reconsiderblock(const UniValue& params, bool fHelp) { if (fHelp || params.size() != 1) throw runtime_error( @@ -1067,5 +1196,5 @@ Value reconsiderblock(const Array& params, bool fHelp) throw JSONRPCError(RPC_DATABASE_ERROR, state.GetRejectReason()); } - return Value::null; + return NullUniValue; } diff --git a/src/rpcclient.cpp b/src/rpcclient.cpp index 5b89b18c4..da8fdc4b6 100644 --- a/src/rpcclient.cpp +++ b/src/rpcclient.cpp @@ -11,8 +11,9 @@ #include #include +#include + using namespace std; -using namespace json_spirit; class CRPCConvertParam { @@ -69,6 +70,7 @@ static const CRPCConvertParam vRPCConvertParams[] = { "listunspent", 1 }, { "listunspent", 2 }, { "getblock", 1 }, + { "getblockheader", 1 }, { "gettransaction", 1 }, { "getrawtransaction", 1 }, { "createrawtransaction", 0 }, @@ -76,6 +78,7 @@ static const CRPCConvertParam vRPCConvertParams[] = { "signrawtransaction", 1 }, { "signrawtransaction", 2 }, { "sendrawtransaction", 1 }, + { "fundrawtransaction", 1 }, { "gettxout", 1 }, { "gettxout", 2 }, { "gettxoutproof", 0 }, @@ -91,6 +94,8 @@ static const CRPCConvertParam vRPCConvertParams[] = { "estimatepriority", 0 }, { "prioritisetransaction", 1 }, { "prioritisetransaction", 2 }, + { "setban", 2 }, + { "setban", 3 }, { "zcrawjoinsplit", 1 }, { "zcrawjoinsplit", 2 }, { "zcrawjoinsplit", 3 }, @@ -114,6 +119,7 @@ static const CRPCConvertParam vRPCConvertParams[] = { "minerids", 1 }, { "kvsearch", 1 }, { "kvupdate", 4 }, + { "z_importkey", 2 }, }; class CRPCConvertTable @@ -142,25 +148,32 @@ CRPCConvertTable::CRPCConvertTable() static CRPCConvertTable rpcCvtTable; -/** Convert strings to command-specific RPC representation */ -Array RPCConvertValues(const std::string &strMethod, const std::vector &strParams) +/** Non-RFC4627 JSON parser, accepts internal values (such as numbers, true, false, null) + * as well as objects and arrays. + */ +UniValue ParseNonRFCJSONValue(const std::string& strVal) { - Array params; + UniValue jVal; + if (!jVal.read(std::string("[")+strVal+std::string("]")) || + !jVal.isArray() || jVal.size()!=1) + throw runtime_error(string("Error parsing JSON:")+strVal); + return jVal[0]; +} + +/** Convert strings to command-specific RPC representation */ +UniValue RPCConvertValues(const std::string &strMethod, const std::vector &strParams) +{ + UniValue params(UniValue::VARR); for (unsigned int idx = 0; idx < strParams.size(); idx++) { const std::string& strVal = strParams[idx]; - // insert string value directly if (!rpcCvtTable.convert(strMethod, idx)) { + // insert string value directly params.push_back(strVal); - } - - // parse string as JSON, insert bool/number/object/etc. value - else { - Value jVal; - if (!read_string(strVal, jVal)) - throw runtime_error(string("Error parsing JSON:")+strVal); - params.push_back(jVal); + } else { + // parse string as JSON, insert bool/number/object/etc. value + params.push_back(ParseNonRFCJSONValue(strVal)); } } diff --git a/src/rpcclient.h b/src/rpcclient.h index 42fa2d06f..8937a56f0 100644 --- a/src/rpcclient.h +++ b/src/rpcclient.h @@ -6,10 +6,12 @@ #ifndef BITCOIN_RPCCLIENT_H #define BITCOIN_RPCCLIENT_H -#include "json/json_spirit_reader_template.h" -#include "json/json_spirit_utils.h" -#include "json/json_spirit_writer_template.h" +#include -json_spirit::Array RPCConvertValues(const std::string& strMethod, const std::vector& strParams); +UniValue RPCConvertValues(const std::string& strMethod, const std::vector& strParams); +/** Non-RFC4627 JSON parser, accepts internal values (such as numbers, true, false, null) + * as well as objects and arrays. + */ +UniValue ParseNonRFCJSONValue(const std::string& strVal); #endif // BITCOIN_RPCCLIENT_H diff --git a/src/rpcmining.cpp b/src/rpcmining.cpp index 8dc4111a5..f2fdc1415 100644 --- a/src/rpcmining.cpp +++ b/src/rpcmining.cpp @@ -8,7 +8,9 @@ #include "consensus/consensus.h" #include "consensus/validation.h" #include "core_io.h" +#ifdef ENABLE_MINING #include "crypto/equihash.h" +#endif #include "init.h" #include "main.h" #include "metrics.h" @@ -26,10 +28,8 @@ #include -#include "json/json_spirit_utils.h" -#include "json/json_spirit_value.h" +#include -using namespace json_spirit; using namespace std; /** @@ -74,7 +74,7 @@ int64_t GetNetworkHashPS(int lookup, int height) { return (int64_t)(workDiff.getdouble() / timeDiff); } -Value getlocalsolps(const Array& params, bool fHelp) +UniValue getlocalsolps(const UniValue& params, bool fHelp) { if (fHelp) throw runtime_error( @@ -92,7 +92,7 @@ Value getlocalsolps(const Array& params, bool fHelp) return GetLocalSolPS(); } -Value getnetworksolps(const Array& params, bool fHelp) +UniValue getnetworksolps(const UniValue& params, bool fHelp) { if (fHelp || params.size() > 2) throw runtime_error( @@ -114,7 +114,7 @@ Value getnetworksolps(const Array& params, bool fHelp) return GetNetworkHashPS(params.size() > 0 ? params[0].get_int() : 120, params.size() > 1 ? params[1].get_int() : -1); } -Value getnetworkhashps(const Array& params, bool fHelp) +UniValue getnetworkhashps(const UniValue& params, bool fHelp) { if (fHelp || params.size() > 2) throw runtime_error( @@ -137,8 +137,8 @@ Value getnetworkhashps(const Array& params, bool fHelp) return GetNetworkHashPS(params.size() > 0 ? params[0].get_int() : 120, params.size() > 1 ? params[1].get_int() : -1); } -#ifdef ENABLE_WALLET -Value getgenerate(const Array& params, bool fHelp) +#ifdef ENABLE_MINING +UniValue getgenerate(const UniValue& params, bool fHelp) { if (fHelp || params.size() != 0) throw runtime_error( @@ -159,7 +159,8 @@ Value getgenerate(const Array& params, bool fHelp) extern uint8_t NOTARY_PUBKEY33[33]; -Value generate(const Array& params, bool fHelp) +//Value generate(const Array& params, bool fHelp) +UniValue generate(const UniValue& params, bool fHelp) { if (fHelp || params.size() < 1 || params.size() > 1) throw runtime_error( @@ -175,8 +176,15 @@ Value generate(const Array& params, bool fHelp) + HelpExampleCli("generate", "11") ); - if (pwalletMain == NULL) - throw JSONRPCError(RPC_METHOD_NOT_FOUND, "Method not found (disabled)"); + if (GetArg("-mineraddress", "").empty()) { +#ifdef ENABLE_WALLET + if (!pwalletMain) { + throw JSONRPCError(RPC_METHOD_NOT_FOUND, "Wallet disabled and -mineraddress not set"); + } +#else + throw JSONRPCError(RPC_METHOD_NOT_FOUND, "zcashd compiled without wallet and -mineraddress not set"); +#endif + } if (!Params().MineBlocksOnDemand()) throw JSONRPCError(RPC_METHOD_NOT_FOUND, "This method can only be used on regtest"); @@ -184,7 +192,9 @@ Value generate(const Array& params, bool fHelp) int nHeightEnd = 0; int nHeight = 0; int nGenerate = params[0].get_int(); +#ifdef ENABLE_WALLET CReserveKey reservekey(pwalletMain); +#endif { // Don't keep cs_main locked LOCK(cs_main); @@ -193,12 +203,16 @@ Value generate(const Array& params, bool fHelp) nHeightEnd = nHeightStart+nGenerate; } unsigned int nExtraNonce = 0; - Array blockHashes; + UniValue blockHashes(UniValue::VARR); unsigned int n = Params().EquihashN(); unsigned int k = Params().EquihashK(); while (nHeight < nHeightEnd) { - unique_ptr pblocktemplate(CreateNewBlockWithKey(reservekey)); +#ifdef ENABLE_WALLET + std::unique_ptr pblocktemplate(CreateNewBlockWithKey(reservekey)); +#else + std::unique_ptr pblocktemplate(CreateNewBlockWithKey()); +#endif if (!pblocktemplate.get()) throw JSONRPCError(RPC_INTERNAL_ERROR, "Wallet keypool empty"); CBlock *pblock = &pblocktemplate->block; @@ -257,7 +271,7 @@ endloop: } -Value setgenerate(const Array& params, bool fHelp) +UniValue setgenerate(const UniValue& params, bool fHelp) { if (fHelp || params.size() < 1 || params.size() > 2) throw runtime_error( @@ -279,8 +293,15 @@ Value setgenerate(const Array& params, bool fHelp) + HelpExampleRpc("setgenerate", "true, 1") ); - if (pwalletMain == NULL) - throw JSONRPCError(RPC_METHOD_NOT_FOUND, "Method not found (disabled)"); + if (GetArg("-mineraddress", "").empty()) { +#ifdef ENABLE_WALLET + if (!pwalletMain) { + throw JSONRPCError(RPC_METHOD_NOT_FOUND, "Wallet disabled and -mineraddress not set"); + } +#else + throw JSONRPCError(RPC_METHOD_NOT_FOUND, "zcashd compiled without wallet and -mineraddress not set"); +#endif + } if (Params().MineBlocksOnDemand()) throw JSONRPCError(RPC_METHOD_NOT_FOUND, "Use the generate method instead of setgenerate on this network"); @@ -298,14 +319,18 @@ Value setgenerate(const Array& params, bool fHelp) mapArgs["-gen"] = (fGenerate ? "1" : "0"); mapArgs ["-genproclimit"] = itostr(nGenProcLimit); +#ifdef ENABLE_WALLET GenerateBitcoins(fGenerate, pwalletMain, nGenProcLimit); +#else + GenerateBitcoins(fGenerate, nGenProcLimit); +#endif - return Value::null; + return NullUniValue; } #endif -Value getmininginfo(const Array& params, bool fHelp) +UniValue getmininginfo(const UniValue& params, bool fHelp) { if (fHelp || params.size() != 0) throw runtime_error( @@ -334,7 +359,7 @@ Value getmininginfo(const Array& params, bool fHelp) LOCK(cs_main); - Object obj; + UniValue obj(UniValue::VOBJ); obj.push_back(Pair("blocks", (int)chainActive.Height())); obj.push_back(Pair("currentblocksize", (uint64_t)nLastBlockSize)); obj.push_back(Pair("currentblocktx", (uint64_t)nLastBlockTx)); @@ -347,7 +372,7 @@ Value getmininginfo(const Array& params, bool fHelp) obj.push_back(Pair("pooledtx", (uint64_t)mempool.size())); obj.push_back(Pair("testnet", Params().TestnetToBeDeprecatedFieldRPC())); obj.push_back(Pair("chain", Params().NetworkIDString())); -#ifdef ENABLE_WALLET +#ifdef ENABLE_MINING obj.push_back(Pair("generate", getgenerate(params, false))); #endif return obj; @@ -355,7 +380,7 @@ Value getmininginfo(const Array& params, bool fHelp) // NOTE: Unlike wallet RPC (which use BTC values), mining RPCs follow GBT (BIP 22) in using satoshi amounts -Value prioritisetransaction(const Array& params, bool fHelp) +UniValue prioritisetransaction(const UniValue& params, bool fHelp) { if (fHelp || params.size() != 3) throw runtime_error( @@ -387,10 +412,10 @@ Value prioritisetransaction(const Array& params, bool fHelp) // NOTE: Assumes a conclusive result; if result is inconclusive, it must be handled by caller -static Value BIP22ValidationResult(const CValidationState& state) +static UniValue BIP22ValidationResult(const CValidationState& state) { if (state.IsValid()) - return Value::null; + return NullUniValue; std::string strRejectReason = state.GetRejectReason(); if (state.IsError()) @@ -405,8 +430,7 @@ static Value BIP22ValidationResult(const CValidationState& state) return "valid?"; } -#ifdef ENABLE_WALLET -Value getblocktemplate(const Array& params, bool fHelp) +UniValue getblocktemplate(const UniValue& params, bool fHelp) { if (fHelp || params.size() > 1) throw runtime_error( @@ -470,22 +494,28 @@ Value getblocktemplate(const Array& params, bool fHelp) LOCK(cs_main); - // Wallet is required because we support coinbasetxn - if (pwalletMain == NULL) { - throw JSONRPCError(RPC_METHOD_NOT_FOUND, "Method not found (disabled)"); + // Wallet or miner address is required because we support coinbasetxn + if (GetArg("-mineraddress", "").empty()) { +#ifdef ENABLE_WALLET + if (!pwalletMain) { + throw JSONRPCError(RPC_METHOD_NOT_FOUND, "Wallet disabled and -mineraddress not set"); + } +#else + throw JSONRPCError(RPC_METHOD_NOT_FOUND, "zcashd compiled without wallet and -mineraddress not set"); +#endif } std::string strMode = "template"; - Value lpval = Value::null; + UniValue lpval = NullUniValue; // TODO: Re-enable coinbasevalue once a specification has been written bool coinbasetxn = true; if (params.size() > 0) { - const Object& oparam = params[0].get_obj(); - const Value& modeval = find_value(oparam, "mode"); - if (modeval.type() == str_type) + const UniValue& oparam = params[0].get_obj(); + const UniValue& modeval = find_value(oparam, "mode"); + if (modeval.isStr()) strMode = modeval.get_str(); - else if (modeval.type() == null_type) + else if (modeval.isNull()) { /* Do nothing */ } @@ -495,8 +525,8 @@ Value getblocktemplate(const Array& params, bool fHelp) if (strMode == "proposal") { - const Value& dataval = find_value(oparam, "data"); - if (dataval.type() != str_type) + const UniValue& dataval = find_value(oparam, "data"); + if (!dataval.isStr()) throw JSONRPCError(RPC_TYPE_ERROR, "Missing data String key for proposal"); CBlock block; @@ -535,14 +565,14 @@ Value getblocktemplate(const Array& params, bool fHelp) static unsigned int nTransactionsUpdatedLast; - if (lpval.type() != null_type) + if (!lpval.isNull()) { // Wait to respond until either the best block changes, OR a minute has passed and there are more transactions uint256 hashWatchedChain; boost::system_time checktxtime; unsigned int nTransactionsUpdatedLastLP; - if (lpval.type() == str_type) + if (lpval.isStr()) { // Format: std::string lpstr = lpval.get_str(); @@ -602,8 +632,12 @@ Value getblocktemplate(const Array& params, bool fHelp) delete pblocktemplate; pblocktemplate = NULL; } +#ifdef ENABLE_WALLET CReserveKey reservekey(pwalletMain); pblocktemplate = CreateNewBlockWithKey(reservekey); +#else + pblocktemplate = CreateNewBlockWithKey(); +#endif if (!pblocktemplate) throw JSONRPCError(RPC_OUT_OF_MEMORY, "Out of memory"); @@ -616,27 +650,26 @@ Value getblocktemplate(const Array& params, bool fHelp) UpdateTime(pblock, Params().GetConsensus(), pindexPrev); pblock->nNonce = uint256(); - static const Array aCaps = boost::assign::list_of("proposal"); + UniValue aCaps(UniValue::VARR); aCaps.push_back("proposal"); - Value txCoinbase = Value::null; - Array transactions; + UniValue txCoinbase = NullUniValue; + UniValue transactions(UniValue::VARR); map setTxIndex; int i = 0; - BOOST_FOREACH (CTransaction& tx, pblock->vtx) - { + BOOST_FOREACH (const CTransaction& tx, pblock->vtx) { uint256 txHash = tx.GetHash(); setTxIndex[txHash] = i++; if (tx.IsCoinBase() && !coinbasetxn) continue; - Object entry; + UniValue entry(UniValue::VOBJ); entry.push_back(Pair("data", EncodeHexTx(tx))); entry.push_back(Pair("hash", txHash.GetHex())); - Array deps; + UniValue deps(UniValue::VARR); BOOST_FOREACH (const CTxIn &in, tx.vin) { if (setTxIndex.count(in.prevout.hash)) @@ -661,12 +694,12 @@ Value getblocktemplate(const Array& params, bool fHelp) transactions.push_back(entry); } - Object aux; + UniValue aux(UniValue::VOBJ); aux.push_back(Pair("flags", HexStr(COINBASE_FLAGS.begin(), COINBASE_FLAGS.end()))); arith_uint256 hashTarget = arith_uint256().SetCompact(pblock->nBits); - static Array aMutable; + static UniValue aMutable(UniValue::VARR); if (aMutable.empty()) { aMutable.push_back("time"); @@ -674,13 +707,13 @@ Value getblocktemplate(const Array& params, bool fHelp) aMutable.push_back("prevblock"); } - Object result; + UniValue result(UniValue::VOBJ); result.push_back(Pair("capabilities", aCaps)); result.push_back(Pair("version", pblock->nVersion)); result.push_back(Pair("previousblockhash", pblock->hashPrevBlock.GetHex())); result.push_back(Pair("transactions", transactions)); if (coinbasetxn) { - assert(txCoinbase.type() == obj_type); + assert(txCoinbase.isObject()); result.push_back(Pair("coinbasetxn", txCoinbase)); } else { result.push_back(Pair("coinbaseaux", aux)); @@ -700,7 +733,6 @@ Value getblocktemplate(const Array& params, bool fHelp) //fprintf(stderr,"return complete template\n"); return result; } -#endif class submitblock_StateCatcher : public CValidationInterface { @@ -720,7 +752,7 @@ protected: }; }; -Value submitblock(const Array& params, bool fHelp) +UniValue submitblock(const UniValue& params, bool fHelp) { if (fHelp || params.size() < 1 || params.size() > 2) throw runtime_error( @@ -736,6 +768,12 @@ Value submitblock(const Array& params, bool fHelp) " \"workid\" : \"id\" (string, optional) if the server provided a workid, it MUST be included with submissions\n" " }\n" "\nResult:\n" + "\"duplicate\" - node already has valid copy of block\n" + "\"duplicate-invalid\" - node already has block, but it is invalid\n" + "\"duplicate-inconclusive\" - node already has block but has not validated it\n" + "\"inconclusive\" - node has not validated the block, it may not be on the node's current best chain\n" + "\"rejected\" - block was rejected as invalid\n" + "For more information on submitblock parameters and results, see: https://github.com/bitcoin/bips/blob/master/bip-0022.mediawiki#block-submission\n" "\nExamples:\n" + HelpExampleCli("submitblock", "\"mydata\"") + HelpExampleRpc("submitblock", "\"mydata\"") @@ -781,7 +819,7 @@ Value submitblock(const Array& params, bool fHelp) return BIP22ValidationResult(state); } -Value estimatefee(const Array& params, bool fHelp) +UniValue estimatefee(const UniValue& params, bool fHelp) { if (fHelp || params.size() != 1) throw runtime_error( @@ -800,7 +838,7 @@ Value estimatefee(const Array& params, bool fHelp) + HelpExampleCli("estimatefee", "6") ); - RPCTypeCheck(params, boost::assign::list_of(int_type)); + RPCTypeCheck(params, boost::assign::list_of(UniValue::VNUM)); int nBlocks = params[0].get_int(); if (nBlocks < 1) @@ -813,7 +851,7 @@ Value estimatefee(const Array& params, bool fHelp) return ValueFromAmount(feeRate.GetFeePerK()); } -Value estimatepriority(const Array& params, bool fHelp) +UniValue estimatepriority(const UniValue& params, bool fHelp) { if (fHelp || params.size() != 1) throw runtime_error( @@ -832,7 +870,7 @@ Value estimatepriority(const Array& params, bool fHelp) + HelpExampleCli("estimatepriority", "6") ); - RPCTypeCheck(params, boost::assign::list_of(int_type)); + RPCTypeCheck(params, boost::assign::list_of(UniValue::VNUM)); int nBlocks = params[0].get_int(); if (nBlocks < 1) @@ -841,7 +879,7 @@ Value estimatepriority(const Array& params, bool fHelp) return mempool.estimatePriority(nBlocks); } -Value getblocksubsidy(const Array& params, bool fHelp) +UniValue getblocksubsidy(const UniValue& params, bool fHelp) { if (fHelp || params.size() > 1) throw runtime_error( @@ -864,7 +902,7 @@ Value getblocksubsidy(const Array& params, bool fHelp) throw JSONRPCError(RPC_INVALID_PARAMETER, "Block height out of range"); CAmount nReward = GetBlockSubsidy(nHeight, Params().GetConsensus()); - Object result; + UniValue result(UniValue::VOBJ); result.push_back(Pair("miner", ValueFromAmount(nReward))); //result.push_back(Pair("founders", ValueFromAmount(nFoundersReward))); return result; diff --git a/src/rpcmisc.cpp b/src/rpcmisc.cpp index 9135cd812..f6a78ce3d 100644 --- a/src/rpcmisc.cpp +++ b/src/rpcmisc.cpp @@ -20,12 +20,11 @@ #include #include -#include "json/json_spirit_utils.h" -#include "json/json_spirit_value.h" + +#include #include "zcash/Address.hpp" -using namespace json_spirit; using namespace std; /** @@ -41,6 +40,7 @@ using namespace std; * * Or alternatively, create a specific query method for the information. **/ + uint64_t komodo_interestsum(); int32_t komodo_longestchain(); int32_t komodo_notarized_height(uint256 *hashp,uint256 *txidp); @@ -50,7 +50,7 @@ extern char ASSETCHAINS_SYMBOL[]; int32_t notarizedtxid_height(char *dest,char *txidstr,int32_t *kmdnotarized_heightp); #define KOMODO_VERSION "0.1.0" -Value getinfo(const Array& params, bool fHelp) +UniValue getinfo(const UniValue& params, bool fHelp) { uint256 notarized_hash,notarized_desttxid; int32_t notarized_height,longestchain,kmdnotarized_height,txid_height; if (fHelp || params.size() != 0) @@ -91,7 +91,7 @@ Value getinfo(const Array& params, bool fHelp) GetProxy(NET_IPV4, proxy); notarized_height = komodo_notarized_height(¬arized_hash,¬arized_desttxid); - Object obj; + UniValue obj(UniValue::VOBJ); obj.push_back(Pair("version", CLIENT_VERSION)); obj.push_back(Pair("protocolversion", PROTOCOL_VERSION)); obj.push_back(Pair("KMDversion", KOMODO_VERSION)); @@ -149,41 +149,34 @@ Value getinfo(const Array& params, bool fHelp) } #ifdef ENABLE_WALLET -class DescribeAddressVisitor : public boost::static_visitor +class DescribeAddressVisitor : public boost::static_visitor { -private: - isminetype mine; - public: - DescribeAddressVisitor(isminetype mineIn) : mine(mineIn) {} + UniValue operator()(const CNoDestination &dest) const { return UniValue(UniValue::VOBJ); } - Object operator()(const CNoDestination &dest) const { return Object(); } - - Object operator()(const CKeyID &keyID) const { - Object obj; + UniValue operator()(const CKeyID &keyID) const { + UniValue obj(UniValue::VOBJ); CPubKey vchPubKey; obj.push_back(Pair("isscript", false)); - if (mine == ISMINE_SPENDABLE) { - pwalletMain->GetPubKey(keyID, vchPubKey); + if (pwalletMain && pwalletMain->GetPubKey(keyID, vchPubKey)) { obj.push_back(Pair("pubkey", HexStr(vchPubKey))); obj.push_back(Pair("iscompressed", vchPubKey.IsCompressed())); } return obj; } - Object operator()(const CScriptID &scriptID) const { - Object obj; + UniValue operator()(const CScriptID &scriptID) const { + UniValue obj(UniValue::VOBJ); + CScript subscript; obj.push_back(Pair("isscript", true)); - if (mine != ISMINE_NO) { - CScript subscript; - pwalletMain->GetCScript(scriptID, subscript); + if (pwalletMain && pwalletMain->GetCScript(scriptID, subscript)) { std::vector addresses; txnouttype whichType; int nRequired; ExtractDestinations(subscript, whichType, addresses, nRequired); obj.push_back(Pair("script", GetTxnOutputType(whichType))); obj.push_back(Pair("hex", HexStr(subscript.begin(), subscript.end()))); - Array a; + UniValue a(UniValue::VARR); BOOST_FOREACH(const CTxDestination& addr, addresses) a.push_back(CBitcoinAddress(addr).ToString()); obj.push_back(Pair("addresses", a)); @@ -195,7 +188,7 @@ public: }; #endif -Value validateaddress(const Array& params, bool fHelp) +UniValue validateaddress(const UniValue& params, bool fHelp) { if (fHelp || params.size() != 1) throw runtime_error( @@ -228,7 +221,7 @@ Value validateaddress(const Array& params, bool fHelp) CBitcoinAddress address(params[0].get_str()); bool isValid = address.IsValid(); - Object ret; + UniValue ret(UniValue::VOBJ); ret.push_back(Pair("isvalid", isValid)); if (isValid) { @@ -242,11 +235,9 @@ Value validateaddress(const Array& params, bool fHelp) #ifdef ENABLE_WALLET isminetype mine = pwalletMain ? IsMine(*pwalletMain, dest) : ISMINE_NO; ret.push_back(Pair("ismine", (mine & ISMINE_SPENDABLE) ? true : false)); - if (mine != ISMINE_NO) { - ret.push_back(Pair("iswatchonly", (mine & ISMINE_WATCH_ONLY) ? true: false)); - Object detail = boost::apply_visitor(DescribeAddressVisitor(mine), dest); - ret.insert(ret.end(), detail.begin(), detail.end()); - } + ret.push_back(Pair("iswatchonly", (mine & ISMINE_WATCH_ONLY) ? true: false)); + UniValue detail = boost::apply_visitor(DescribeAddressVisitor(), dest); + ret.pushKVs(detail); if (pwalletMain && pwalletMain->mapAddressBook.count(dest)) ret.push_back(Pair("account", pwalletMain->mapAddressBook[dest].name)); #endif @@ -255,7 +246,7 @@ Value validateaddress(const Array& params, bool fHelp) } -Value z_validateaddress(const Array& params, bool fHelp) +UniValue z_validateaddress(const UniValue& params, bool fHelp) { if (fHelp || params.size() != 1) throw runtime_error( @@ -302,7 +293,7 @@ Value z_validateaddress(const Array& params, bool fHelp) // address is invalid, nop here as isValid is false. } - Object ret; + UniValue ret(UniValue::VOBJ); ret.push_back(Pair("isvalid", isValid)); if (isValid) { @@ -320,10 +311,10 @@ Value z_validateaddress(const Array& params, bool fHelp) /** * Used by addmultisigaddress / createmultisig: */ -CScript _createmultisig_redeemScript(const Array& params) +CScript _createmultisig_redeemScript(const UniValue& params) { int nRequired = params[0].get_int(); - const Array& keys = params[1].get_array(); + const UniValue& keys = params[1].get_array(); // Gather public keys if (nRequired < 1) @@ -381,7 +372,7 @@ CScript _createmultisig_redeemScript(const Array& params) return result; } -Value createmultisig(const Array& params, bool fHelp) +UniValue createmultisig(const UniValue& params, bool fHelp) { if (fHelp || params.size() < 2 || params.size() > 2) { @@ -417,14 +408,14 @@ Value createmultisig(const Array& params, bool fHelp) CScriptID innerID(inner); CBitcoinAddress address(innerID); - Object result; + UniValue result(UniValue::VOBJ); result.push_back(Pair("address", address.ToString())); result.push_back(Pair("redeemScript", HexStr(inner.begin(), inner.end()))); return result; } -Value verifymessage(const Array& params, bool fHelp) +UniValue verifymessage(const UniValue& params, bool fHelp) { if (fHelp || params.size() != 3) throw runtime_error( @@ -478,7 +469,7 @@ Value verifymessage(const Array& params, bool fHelp) return (pubkey.GetID() == keyID); } -Value setmocktime(const Array& params, bool fHelp) +UniValue setmocktime(const UniValue& params, bool fHelp) { if (fHelp || params.size() != 1) throw runtime_error( @@ -492,10 +483,19 @@ Value setmocktime(const Array& params, bool fHelp) if (!Params().MineBlocksOnDemand()) throw runtime_error("setmocktime for regression testing (-regtest mode) only"); - LOCK(cs_main); + // cs_vNodes is locked and node send/receive times are updated + // atomically with the time change to prevent peers from being + // disconnected because we think we haven't communicated with them + // in a long time. + LOCK2(cs_main, cs_vNodes); - RPCTypeCheck(params, boost::assign::list_of(int_type)); + RPCTypeCheck(params, boost::assign::list_of(UniValue::VNUM)); SetMockTime(params[0].get_int64()); - return Value::null; + uint64_t t = GetTime(); + BOOST_FOREACH(CNode* pnode, vNodes) { + pnode->nLastSend = pnode->nLastRecv = t; + } + + return NullUniValue; } diff --git a/src/rpcnet.cpp b/src/rpcnet.cpp index 7e05c6efd..ee2c21d4d 100644 --- a/src/rpcnet.cpp +++ b/src/rpcnet.cpp @@ -16,12 +16,11 @@ #include -#include "json/json_spirit_value.h" +#include -using namespace json_spirit; using namespace std; -Value getconnectioncount(const Array& params, bool fHelp) +UniValue getconnectioncount(const UniValue& params, bool fHelp) { if (fHelp || params.size() != 0) throw runtime_error( @@ -39,7 +38,7 @@ Value getconnectioncount(const Array& params, bool fHelp) return (int)vNodes.size(); } -Value ping(const Array& params, bool fHelp) +UniValue ping(const UniValue& params, bool fHelp) { if (fHelp || params.size() != 0) throw runtime_error( @@ -59,7 +58,7 @@ Value ping(const Array& params, bool fHelp) pNode->fPingQueued = true; } - return Value::null; + return NullUniValue; } static void CopyNodeStats(std::vector& vstats) @@ -75,7 +74,7 @@ static void CopyNodeStats(std::vector& vstats) } } -Value getpeerinfo(const Array& params, bool fHelp) +UniValue getpeerinfo(const UniValue& params, bool fHelp) { if (fHelp || params.size() != 0) throw runtime_error( @@ -120,10 +119,10 @@ Value getpeerinfo(const Array& params, bool fHelp) vector vstats; CopyNodeStats(vstats); - Array ret; + UniValue ret(UniValue::VARR); BOOST_FOREACH(const CNodeStats& stats, vstats) { - Object obj; + UniValue obj(UniValue::VOBJ); CNodeStateStats statestats; bool fStateStats = GetNodeStateStats(stats.nodeid, statestats); obj.push_back(Pair("id", stats.nodeid)); @@ -151,7 +150,7 @@ Value getpeerinfo(const Array& params, bool fHelp) obj.push_back(Pair("banscore", statestats.nMisbehavior)); obj.push_back(Pair("synced_headers", statestats.nSyncHeight)); obj.push_back(Pair("synced_blocks", statestats.nCommonHeight)); - Array heights; + UniValue heights(UniValue::VARR); BOOST_FOREACH(int height, statestats.vHeightInFlight) { heights.push_back(height); } @@ -195,7 +194,7 @@ int32_t komodo_longestchain() else return(0); } -Value addnode(const Array& params, bool fHelp) +UniValue addnode(const UniValue& params, bool fHelp) { string strCommand; if (params.size() == 2) @@ -220,7 +219,7 @@ Value addnode(const Array& params, bool fHelp) { CAddress addr; OpenNetworkConnection(addr, NULL, strNode.c_str()); - return Value::null; + return NullUniValue; } LOCK(cs_vAddedNodes); @@ -242,10 +241,32 @@ Value addnode(const Array& params, bool fHelp) vAddedNodes.erase(it); } - return Value::null; + return NullUniValue; } -Value getaddednodeinfo(const Array& params, bool fHelp) +UniValue disconnectnode(const UniValue& params, bool fHelp) +{ + if (fHelp || params.size() != 1) + throw runtime_error( + "disconnectnode \"node\" \n" + "\nImmediately disconnects from the specified node.\n" + "\nArguments:\n" + "1. \"node\" (string, required) The node (see getpeerinfo for nodes)\n" + "\nExamples:\n" + + HelpExampleCli("disconnectnode", "\"192.168.0.6:8233\"") + + HelpExampleRpc("disconnectnode", "\"192.168.0.6:8233\"") + ); + + CNode* pNode = FindNode(params[0].get_str()); + if (pNode == NULL) + throw JSONRPCError(RPC_CLIENT_NODE_NOT_CONNECTED, "Node not found in connected nodes"); + + pNode->fDisconnect = true; + + return NullUniValue; +} + +UniValue getaddednodeinfo(const UniValue& params, bool fHelp) { if (fHelp || params.size() < 1 || params.size() > 2) throw runtime_error( @@ -284,29 +305,29 @@ Value getaddednodeinfo(const Array& params, bool fHelp) if (params.size() == 1) { LOCK(cs_vAddedNodes); - BOOST_FOREACH(string& strAddNode, vAddedNodes) + BOOST_FOREACH(const std::string& strAddNode, vAddedNodes) laddedNodes.push_back(strAddNode); } else { string strNode = params[1].get_str(); LOCK(cs_vAddedNodes); - BOOST_FOREACH(string& strAddNode, vAddedNodes) + BOOST_FOREACH(const std::string& strAddNode, vAddedNodes) { if (strAddNode == strNode) { laddedNodes.push_back(strAddNode); break; } + } if (laddedNodes.size() == 0) throw JSONRPCError(RPC_CLIENT_NODE_NOT_ADDED, "Error: Node has not been added."); } - Array ret; + UniValue ret(UniValue::VARR); if (!fDns) { - BOOST_FOREACH(string& strAddNode, laddedNodes) - { - Object obj; + BOOST_FOREACH (const std::string& strAddNode, laddedNodes) { + UniValue obj(UniValue::VOBJ); obj.push_back(Pair("addednode", strAddNode)); ret.push_back(obj); } @@ -314,17 +335,16 @@ Value getaddednodeinfo(const Array& params, bool fHelp) } list > > laddedAddreses(0); - BOOST_FOREACH(string& strAddNode, laddedNodes) - { + BOOST_FOREACH(const std::string& strAddNode, laddedNodes) { vector vservNode(0); if(Lookup(strAddNode.c_str(), vservNode, Params().GetDefaultPort(), fNameLookup, 0)) laddedAddreses.push_back(make_pair(strAddNode, vservNode)); else { - Object obj; + UniValue obj(UniValue::VOBJ); obj.push_back(Pair("addednode", strAddNode)); obj.push_back(Pair("connected", false)); - Array addresses; + UniValue addresses(UniValue::VARR); obj.push_back(Pair("addresses", addresses)); } } @@ -332,17 +352,16 @@ Value getaddednodeinfo(const Array& params, bool fHelp) LOCK(cs_vNodes); for (list > >::iterator it = laddedAddreses.begin(); it != laddedAddreses.end(); it++) { - Object obj; + UniValue obj(UniValue::VOBJ); obj.push_back(Pair("addednode", it->first)); - Array addresses; + UniValue addresses(UniValue::VARR); bool fConnected = false; - BOOST_FOREACH(CService& addrNode, it->second) - { + BOOST_FOREACH(const CService& addrNode, it->second) { bool fFound = false; - Object node; + UniValue node(UniValue::VOBJ); node.push_back(Pair("address", addrNode.ToString())); - BOOST_FOREACH(CNode* pnode, vNodes) + BOOST_FOREACH(CNode* pnode, vNodes) { if (pnode->addr == addrNode) { fFound = true; @@ -350,6 +369,7 @@ Value getaddednodeinfo(const Array& params, bool fHelp) node.push_back(Pair("connected", pnode->fInbound ? "inbound" : "outbound")); break; } + } if (!fFound) node.push_back(Pair("connected", "false")); addresses.push_back(node); @@ -362,7 +382,7 @@ Value getaddednodeinfo(const Array& params, bool fHelp) return ret; } -Value getnettotals(const Array& params, bool fHelp) +UniValue getnettotals(const UniValue& params, bool fHelp) { if (fHelp || params.size() > 0) throw runtime_error( @@ -380,23 +400,23 @@ Value getnettotals(const Array& params, bool fHelp) + HelpExampleRpc("getnettotals", "") ); - Object obj; + UniValue obj(UniValue::VOBJ); obj.push_back(Pair("totalbytesrecv", CNode::GetTotalBytesRecv())); obj.push_back(Pair("totalbytessent", CNode::GetTotalBytesSent())); obj.push_back(Pair("timemillis", GetTimeMillis())); return obj; } -static Array GetNetworksInfo() +static UniValue GetNetworksInfo() { - Array networks; + UniValue networks(UniValue::VARR); for(int n=0; n(n); if(network == NET_UNROUTABLE) continue; proxyType proxy; - Object obj; + UniValue obj(UniValue::VOBJ); GetProxy(network, proxy); obj.push_back(Pair("name", GetNetworkName(network))); obj.push_back(Pair("limited", IsLimited(network))); @@ -408,7 +428,7 @@ static Array GetNetworksInfo() return networks; } -Value getnetworkinfo(const Array& params, bool fHelp) +UniValue getnetworkinfo(const UniValue& params, bool fHelp) { if (fHelp || params.size() != 0) throw runtime_error( @@ -440,6 +460,7 @@ Value getnetworkinfo(const Array& params, bool fHelp) " }\n" " ,...\n" " ]\n" + " \"warnings\": \"...\" (string) any network warnings (such as alert messages) \n" "}\n" "\nExamples:\n" + HelpExampleCli("getnetworkinfo", "") @@ -448,7 +469,7 @@ Value getnetworkinfo(const Array& params, bool fHelp) LOCK(cs_main); - Object obj; + UniValue obj(UniValue::VOBJ); obj.push_back(Pair("version", CLIENT_VERSION)); obj.push_back(Pair("subversion", FormatSubVersion(CLIENT_NAME, CLIENT_VERSION, std::vector()))); @@ -458,12 +479,12 @@ Value getnetworkinfo(const Array& params, bool fHelp) obj.push_back(Pair("connections", (int)vNodes.size())); obj.push_back(Pair("networks", GetNetworksInfo())); obj.push_back(Pair("relayfee", ValueFromAmount(::minRelayTxFee.GetFeePerK()))); - Array localAddresses; + UniValue localAddresses(UniValue::VARR); { LOCK(cs_mapLocalHost); BOOST_FOREACH(const PAIRTYPE(CNetAddr, LocalServiceInfo) &item, mapLocalHost) { - Object rec; + UniValue rec(UniValue::VOBJ); rec.push_back(Pair("address", item.first.ToString())); rec.push_back(Pair("port", item.second.nPort)); rec.push_back(Pair("score", item.second.nScore)); @@ -471,5 +492,112 @@ Value getnetworkinfo(const Array& params, bool fHelp) } } obj.push_back(Pair("localaddresses", localAddresses)); + obj.push_back(Pair("warnings", GetWarnings("statusbar"))); return obj; } + +UniValue setban(const UniValue& params, bool fHelp) +{ + string strCommand; + if (params.size() >= 2) + strCommand = params[1].get_str(); + if (fHelp || params.size() < 2 || + (strCommand != "add" && strCommand != "remove")) + throw runtime_error( + "setban \"ip(/netmask)\" \"add|remove\" (bantime) (absolute)\n" + "\nAttempts add or remove a IP/Subnet from the banned list.\n" + "\nArguments:\n" + "1. \"ip(/netmask)\" (string, required) The IP/Subnet (see getpeerinfo for nodes ip) with a optional netmask (default is /32 = single ip)\n" + "2. \"command\" (string, required) 'add' to add a IP/Subnet to the list, 'remove' to remove a IP/Subnet from the list\n" + "3. \"bantime\" (numeric, optional) time in seconds how long (or until when if [absolute] is set) the ip is banned (0 or empty means using the default time of 24h which can also be overwritten by the -bantime startup argument)\n" + "4. \"absolute\" (boolean, optional) If set, the bantime must be a absolute timestamp in seconds since epoch (Jan 1 1970 GMT)\n" + "\nExamples:\n" + + HelpExampleCli("setban", "\"192.168.0.6\" \"add\" 86400") + + HelpExampleCli("setban", "\"192.168.0.0/24\" \"add\"") + + HelpExampleRpc("setban", "\"192.168.0.6\", \"add\" 86400") + ); + + CSubNet subNet; + CNetAddr netAddr; + bool isSubnet = false; + + if (params[0].get_str().find("/") != string::npos) + isSubnet = true; + + if (!isSubnet) + netAddr = CNetAddr(params[0].get_str()); + else + subNet = CSubNet(params[0].get_str()); + + if (! (isSubnet ? subNet.IsValid() : netAddr.IsValid()) ) + throw JSONRPCError(RPC_CLIENT_NODE_ALREADY_ADDED, "Error: Invalid IP/Subnet"); + + if (strCommand == "add") + { + if (isSubnet ? CNode::IsBanned(subNet) : CNode::IsBanned(netAddr)) + throw JSONRPCError(RPC_CLIENT_NODE_ALREADY_ADDED, "Error: IP/Subnet already banned"); + + int64_t banTime = 0; //use standard bantime if not specified + if (params.size() >= 3 && !params[2].isNull()) + banTime = params[2].get_int64(); + + bool absolute = false; + if (params.size() == 4 && params[3].isTrue()) + absolute = true; + + isSubnet ? CNode::Ban(subNet, banTime, absolute) : CNode::Ban(netAddr, banTime, absolute); + + //disconnect possible nodes + while(CNode *bannedNode = (isSubnet ? FindNode(subNet) : FindNode(netAddr))) + bannedNode->fDisconnect = true; + } + else if(strCommand == "remove") + { + if (!( isSubnet ? CNode::Unban(subNet) : CNode::Unban(netAddr) )) + throw JSONRPCError(RPC_MISC_ERROR, "Error: Unban failed"); + } + + return NullUniValue; +} + +UniValue listbanned(const UniValue& params, bool fHelp) +{ + if (fHelp || params.size() != 0) + throw runtime_error( + "listbanned\n" + "\nList all banned IPs/Subnets.\n" + "\nExamples:\n" + + HelpExampleCli("listbanned", "") + + HelpExampleRpc("listbanned", "") + ); + + std::map banMap; + CNode::GetBanned(banMap); + + UniValue bannedAddresses(UniValue::VARR); + for (std::map::iterator it = banMap.begin(); it != banMap.end(); it++) + { + UniValue rec(UniValue::VOBJ); + rec.push_back(Pair("address", (*it).first.ToString())); + rec.push_back(Pair("banned_until", (*it).second)); + bannedAddresses.push_back(rec); + } + + return bannedAddresses; +} + +UniValue clearbanned(const UniValue& params, bool fHelp) +{ + if (fHelp || params.size() != 0) + throw runtime_error( + "clearbanned\n" + "\nClear all banned IPs.\n" + "\nExamples:\n" + + HelpExampleCli("clearbanned", "") + + HelpExampleRpc("clearbanned", "") + ); + + CNode::ClearBanned(); + + return NullUniValue; +} diff --git a/src/rpcprotocol.cpp b/src/rpcprotocol.cpp index 19badb473..ac26bbdaa 100644 --- a/src/rpcprotocol.cpp +++ b/src/rpcprotocol.cpp @@ -5,7 +5,6 @@ #include "rpcprotocol.h" -#include "clientversion.h" #include "random.h" #include "tinyformat.h" #include "util.h" @@ -16,235 +15,7 @@ #include #include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "json/json_spirit_writer_template.h" - using namespace std; -using namespace json_spirit; - -//! Number of bytes to allocate and read at most at once in post data -const size_t POST_READ_SIZE = 256 * 1024; - -/** - * HTTP protocol - * - * This ain't Apache. We're just using HTTP header for the length field - * and to be compatible with other JSON-RPC implementations. - */ - -string HTTPPost(const string& strMsg, const map& mapRequestHeaders) -{ - ostringstream s; - s << "POST / HTTP/1.1\r\n" - << "User-Agent: zcash-json-rpc/" << FormatFullVersion() << "\r\n" - << "Host: 127.0.0.1\r\n" - << "Content-Type: application/json\r\n" - << "Content-Length: " << strMsg.size() << "\r\n" - << "Connection: close\r\n" - << "Accept: application/json\r\n"; - BOOST_FOREACH(const PAIRTYPE(string, string)& item, mapRequestHeaders) - s << item.first << ": " << item.second << "\r\n"; - s << "\r\n" << strMsg; - - return s.str(); -} - -static string rfc1123Time() -{ - return DateTimeStrFormat("%a, %d %b %Y %H:%M:%S +0000", GetTime()); -} - -static const char *httpStatusDescription(int nStatus) -{ - switch (nStatus) { - case HTTP_OK: return "OK"; - case HTTP_BAD_REQUEST: return "Bad Request"; - case HTTP_FORBIDDEN: return "Forbidden"; - case HTTP_NOT_FOUND: return "Not Found"; - case HTTP_INTERNAL_SERVER_ERROR: return "Internal Server Error"; - default: return ""; - } -} - -string HTTPError(int nStatus, bool keepalive, bool headersOnly) -{ - if (nStatus == HTTP_UNAUTHORIZED) - return strprintf("HTTP/1.0 401 Authorization Required\r\n" - "Date: %s\r\n" - "Server: zcash-json-rpc/%s\r\n" - "WWW-Authenticate: Basic realm=\"jsonrpc\"\r\n" - "Content-Type: text/html\r\n" - "Content-Length: 296\r\n" - "\r\n" - "\r\n" - "\r\n" - "\r\n" - "Error\r\n" - "\r\n" - "\r\n" - "

401 Unauthorized.

\r\n" - "\r\n", rfc1123Time(), FormatFullVersion()); - - return HTTPReply(nStatus, httpStatusDescription(nStatus), keepalive, - headersOnly, "text/plain"); -} - -string HTTPReplyHeader(int nStatus, bool keepalive, size_t contentLength, const char *contentType) -{ - return strprintf( - "HTTP/1.1 %d %s\r\n" - "Date: %s\r\n" - "Connection: %s\r\n" - "Content-Length: %u\r\n" - "Content-Type: %s\r\n" - "Server: zcash-json-rpc/%s\r\n" - "\r\n", - nStatus, - httpStatusDescription(nStatus), - rfc1123Time(), - keepalive ? "keep-alive" : "close", - contentLength, - contentType, - FormatFullVersion()); -} - -string HTTPReply(int nStatus, const string& strMsg, bool keepalive, - bool headersOnly, const char *contentType) -{ - if (headersOnly) - { - return HTTPReplyHeader(nStatus, keepalive, 0, contentType); - } else { - return HTTPReplyHeader(nStatus, keepalive, strMsg.size(), contentType) + strMsg; - } -} - -bool ReadHTTPRequestLine(std::basic_istream& stream, int &proto, - string& http_method, string& http_uri) -{ - string str; - getline(stream, str); - - // HTTP request line is space-delimited - vector vWords; - boost::split(vWords, str, boost::is_any_of(" ")); - if (vWords.size() < 2) - return false; - - // HTTP methods permitted: GET, POST - http_method = vWords[0]; - if (http_method != "GET" && http_method != "POST") - return false; - - // HTTP URI must be an absolute path, relative to current host - http_uri = vWords[1]; - if (http_uri.size() == 0 || http_uri[0] != '/') - return false; - - // parse proto, if present - string strProto = ""; - if (vWords.size() > 2) - strProto = vWords[2]; - - proto = 0; - const char *ver = strstr(strProto.c_str(), "HTTP/1."); - if (ver != NULL) - proto = atoi(ver+7); - - return true; -} - -int ReadHTTPStatus(std::basic_istream& stream, int &proto) -{ - string str; - getline(stream, str); - vector vWords; - boost::split(vWords, str, boost::is_any_of(" ")); - if (vWords.size() < 2) - return HTTP_INTERNAL_SERVER_ERROR; - proto = 0; - const char *ver = strstr(str.c_str(), "HTTP/1."); - if (ver != NULL) - proto = atoi(ver+7); - return atoi(vWords[1].c_str()); -} - -int ReadHTTPHeaders(std::basic_istream& stream, map& mapHeadersRet) -{ - int nLen = 0; - while (true) - { - string str; - std::getline(stream, str); - if (str.empty() || str == "\r") - break; - string::size_type nColon = str.find(":"); - if (nColon != string::npos) - { - string strHeader = str.substr(0, nColon); - boost::trim(strHeader); - boost::to_lower(strHeader); - string strValue = str.substr(nColon+1); - boost::trim(strValue); - mapHeadersRet[strHeader] = strValue; - if (strHeader == "content-length") - nLen = atoi(strValue.c_str()); - } - } - return nLen; -} - - -int ReadHTTPMessage(std::basic_istream& stream, map& mapHeadersRet, string& strMessageRet, - int nProto, size_t max_size) -{ - mapHeadersRet.clear(); - strMessageRet = ""; - - // Read header - int nLen = ReadHTTPHeaders(stream, mapHeadersRet); - if (nLen < 0 || (size_t)nLen > max_size) - return HTTP_INTERNAL_SERVER_ERROR; - - // Read message - if (nLen > 0) - { - vector vch; - size_t ptr = 0; - while (ptr < (size_t)nLen) - { - size_t bytes_to_read = std::min((size_t)nLen - ptr, POST_READ_SIZE); - vch.resize(ptr + bytes_to_read); - stream.read(&vch[ptr], bytes_to_read); - if (!stream) // Connection lost while reading - return HTTP_INTERNAL_SERVER_ERROR; - ptr += bytes_to_read; - } - strMessageRet = string(vch.begin(), vch.end()); - } - - string sConHdr = mapHeadersRet["connection"]; - - if ((sConHdr != "close") && (sConHdr != "keep-alive")) - { - if (nProto >= 1) - mapHeadersRet["connection"] = "keep-alive"; - else - mapHeadersRet["connection"] = "close"; - } - - return HTTP_OK; -} /** * JSON-RPC protocol. Bitcoin speaks version 1.0 for maximum compatibility, @@ -253,23 +24,22 @@ int ReadHTTPMessage(std::basic_istream& stream, map #include #include -#include -#include -#include -#include #include -#include "json/json_spirit_reader_template.h" -#include "json/json_spirit_utils.h" -#include "json/json_spirit_writer_template.h" +#include //! HTTP status codes enum HTTPStatusCode @@ -28,6 +22,7 @@ enum HTTPStatusCode HTTP_UNAUTHORIZED = 401, HTTP_FORBIDDEN = 403, HTTP_NOT_FOUND = 404, + HTTP_BAD_METHOD = 405, HTTP_INTERNAL_SERVER_ERROR = 500, HTTP_SERVICE_UNAVAILABLE = 503, }; @@ -66,6 +61,8 @@ enum RPCErrorCode RPC_CLIENT_IN_INITIAL_DOWNLOAD = -10, //! Still downloading initial blocks RPC_CLIENT_NODE_ALREADY_ADDED = -23, //! Node is already added RPC_CLIENT_NODE_NOT_ADDED = -24, //! Node has not been added before + RPC_CLIENT_NODE_NOT_CONNECTED = -29, //! Node to disconnect not found in connected nodes + RPC_CLIENT_INVALID_IP_OR_SUBNET = -30, //! Invalid IP/Subnet //! Wallet errors RPC_WALLET_ERROR = -4, //! Unspecified problem with wallet (key not found etc.) @@ -79,92 +76,10 @@ enum RPCErrorCode RPC_WALLET_ALREADY_UNLOCKED = -17, //! Wallet is already unlocked }; -/** - * IOStream device that speaks SSL but can also speak non-SSL - */ -template -class SSLIOStreamDevice : public boost::iostreams::device { -public: - SSLIOStreamDevice(boost::asio::ssl::stream &streamIn, bool fUseSSLIn) : stream(streamIn) - { - fUseSSL = fUseSSLIn; - fNeedHandshake = fUseSSLIn; - } - - void handshake(boost::asio::ssl::stream_base::handshake_type role) - { - if (!fNeedHandshake) return; - fNeedHandshake = false; - stream.handshake(role); - } - std::streamsize read(char* s, std::streamsize n) - { - handshake(boost::asio::ssl::stream_base::server); // HTTPS servers read first - if (fUseSSL) return stream.read_some(boost::asio::buffer(s, n)); - return stream.next_layer().read_some(boost::asio::buffer(s, n)); - } - std::streamsize write(const char* s, std::streamsize n) - { - handshake(boost::asio::ssl::stream_base::client); // HTTPS clients write first - if (fUseSSL) return boost::asio::write(stream, boost::asio::buffer(s, n)); - return boost::asio::write(stream.next_layer(), boost::asio::buffer(s, n)); - } - bool connect(const std::string& server, const std::string& port) - { - using namespace boost::asio::ip; - tcp::resolver resolver(stream.get_io_service()); - tcp::resolver::iterator endpoint_iterator; -#if BOOST_VERSION >= 104300 - try { -#endif - // The default query (flags address_configured) tries IPv6 if - // non-localhost IPv6 configured, and IPv4 if non-localhost IPv4 - // configured. - tcp::resolver::query query(server.c_str(), port.c_str()); - endpoint_iterator = resolver.resolve(query); -#if BOOST_VERSION >= 104300 - } catch (const boost::system::system_error&) { - // If we at first don't succeed, try blanket lookup (IPv4+IPv6 independent of configured interfaces) - tcp::resolver::query query(server.c_str(), port.c_str(), resolver_query_base::flags()); - endpoint_iterator = resolver.resolve(query); - } -#endif - boost::system::error_code error = boost::asio::error::host_not_found; - tcp::resolver::iterator end; - while (error && endpoint_iterator != end) - { - stream.lowest_layer().close(); - stream.lowest_layer().connect(*endpoint_iterator++, error); - } - if (error) - return false; - return true; - } - -private: - bool fNeedHandshake; - bool fUseSSL; - boost::asio::ssl::stream& stream; -}; - -std::string HTTPPost(const std::string& strMsg, const std::map& mapRequestHeaders); -std::string HTTPError(int nStatus, bool keepalive, - bool headerOnly = false); -std::string HTTPReplyHeader(int nStatus, bool keepalive, size_t contentLength, - const char *contentType = "application/json"); -std::string HTTPReply(int nStatus, const std::string& strMsg, bool keepalive, - bool headerOnly = false, - const char *contentType = "application/json"); -bool ReadHTTPRequestLine(std::basic_istream& stream, int &proto, - std::string& http_method, std::string& http_uri); -int ReadHTTPStatus(std::basic_istream& stream, int &proto); -int ReadHTTPHeaders(std::basic_istream& stream, std::map& mapHeadersRet); -int ReadHTTPMessage(std::basic_istream& stream, std::map& mapHeadersRet, - std::string& strMessageRet, int nProto, size_t max_size); -std::string JSONRPCRequest(const std::string& strMethod, const json_spirit::Array& params, const json_spirit::Value& id); -json_spirit::Object JSONRPCReplyObj(const json_spirit::Value& result, const json_spirit::Value& error, const json_spirit::Value& id); -std::string JSONRPCReply(const json_spirit::Value& result, const json_spirit::Value& error, const json_spirit::Value& id); -json_spirit::Object JSONRPCError(int code, const std::string& message); +std::string JSONRPCRequest(const std::string& strMethod, const UniValue& params, const UniValue& id); +UniValue JSONRPCReplyObj(const UniValue& result, const UniValue& error, const UniValue& id); +std::string JSONRPCReply(const UniValue& result, const UniValue& error, const UniValue& id); +UniValue JSONRPCError(int code, const std::string& message); /** Get name of RPC authentication cookie file */ boost::filesystem::path GetAuthCookieFile(); diff --git a/src/rpcrawtransaction.cpp b/src/rpcrawtransaction.cpp index 313cfea2c..2bda8df6d 100644 --- a/src/rpcrawtransaction.cpp +++ b/src/rpcrawtransaction.cpp @@ -25,13 +25,12 @@ #include #include -#include "json/json_spirit_utils.h" -#include "json/json_spirit_value.h" -using namespace json_spirit; +#include + using namespace std; -void ScriptPubKeyToJSON(const CScript& scriptPubKey, Object& out, bool fIncludeHex) +void ScriptPubKeyToJSON(const CScript& scriptPubKey, UniValue& out, bool fIncludeHex) { txnouttype type; vector addresses; @@ -49,23 +48,26 @@ void ScriptPubKeyToJSON(const CScript& scriptPubKey, Object& out, bool fIncludeH out.push_back(Pair("reqSigs", nRequired)); out.push_back(Pair("type", GetTxnOutputType(type))); - Array a; + UniValue a(UniValue::VARR); BOOST_FOREACH(const CTxDestination& addr, addresses) a.push_back(CBitcoinAddress(addr).ToString()); out.push_back(Pair("addresses", a)); } -Array TxJoinSplitToJSON(const CTransaction& tx) { - Array vjoinsplit; +UniValue TxJoinSplitToJSON(const CTransaction& tx) { + UniValue vjoinsplit(UniValue::VARR); for (unsigned int i = 0; i < tx.vjoinsplit.size(); i++) { const JSDescription& jsdescription = tx.vjoinsplit[i]; - Object joinsplit; + UniValue joinsplit(UniValue::VOBJ); + + joinsplit.push_back(Pair("vpub_old", ValueFromAmount(jsdescription.vpub_old))); + joinsplit.push_back(Pair("vpub_new", ValueFromAmount(jsdescription.vpub_new))); joinsplit.push_back(Pair("anchor", jsdescription.anchor.GetHex())); { - Array nullifiers; + UniValue nullifiers(UniValue::VARR); BOOST_FOREACH(const uint256 nf, jsdescription.nullifiers) { nullifiers.push_back(nf.GetHex()); } @@ -73,23 +75,35 @@ Array TxJoinSplitToJSON(const CTransaction& tx) { } { - Array commitments; + UniValue commitments(UniValue::VARR); BOOST_FOREACH(const uint256 commitment, jsdescription.commitments) { commitments.push_back(commitment.GetHex()); } joinsplit.push_back(Pair("commitments", commitments)); } + joinsplit.push_back(Pair("onetimePubKey", jsdescription.ephemeralKey.GetHex())); + joinsplit.push_back(Pair("randomSeed", jsdescription.randomSeed.GetHex())); + { - Array macs; + UniValue macs(UniValue::VARR); BOOST_FOREACH(const uint256 mac, jsdescription.macs) { macs.push_back(mac.GetHex()); } joinsplit.push_back(Pair("macs", macs)); } - joinsplit.push_back(Pair("vpub_old", ValueFromAmount(jsdescription.vpub_old))); - joinsplit.push_back(Pair("vpub_new", ValueFromAmount(jsdescription.vpub_new))); + CDataStream ssProof(SER_NETWORK, PROTOCOL_VERSION); + ssProof << jsdescription.proof; + joinsplit.push_back(Pair("proof", HexStr(ssProof.begin(), ssProof.end()))); + + { + UniValue ciphertexts(UniValue::VARR); + for (const ZCNoteEncryption::Ciphertext ct : jsdescription.ciphertexts) { + ciphertexts.push_back(HexStr(ct.begin(), ct.end())); + } + joinsplit.push_back(Pair("ciphertexts", ciphertexts)); + } vjoinsplit.push_back(joinsplit); } @@ -98,20 +112,20 @@ Array TxJoinSplitToJSON(const CTransaction& tx) { uint64_t komodo_interest(int32_t txheight,uint64_t nValue,uint32_t nLockTime,uint32_t tiptime); -void TxToJSON(const CTransaction& tx, const uint256 hashBlock, Object& entry) +void TxToJSON(const CTransaction& tx, const uint256 hashBlock, UniValue& entry) { entry.push_back(Pair("txid", tx.GetHash().GetHex())); entry.push_back(Pair("version", tx.nVersion)); entry.push_back(Pair("locktime", (int64_t)tx.nLockTime)); - Array vin; + UniValue vin(UniValue::VARR); BOOST_FOREACH(const CTxIn& txin, tx.vin) { - Object in; + UniValue in(UniValue::VOBJ); if (tx.IsCoinBase()) in.push_back(Pair("coinbase", HexStr(txin.scriptSig.begin(), txin.scriptSig.end()))); else { in.push_back(Pair("txid", txin.prevout.hash.GetHex())); in.push_back(Pair("vout", (int64_t)txin.prevout.n)); - Object o; + UniValue o(UniValue::VOBJ); o.push_back(Pair("asm", txin.scriptSig.ToString())); o.push_back(Pair("hex", HexStr(txin.scriptSig.begin(), txin.scriptSig.end()))); in.push_back(Pair("scriptSig", o)); @@ -120,13 +134,12 @@ void TxToJSON(const CTransaction& tx, const uint256 hashBlock, Object& entry) vin.push_back(in); } entry.push_back(Pair("vin", vin)); - Array vout; BlockMap::iterator it = mapBlockIndex.find(pcoinsTip->GetBestBlock()); CBlockIndex *tipindex,*pindex = it->second; uint64_t interest; for (unsigned int i = 0; i < tx.vout.size(); i++) { const CTxOut& txout = tx.vout[i]; - Object out; + UniValue out(UniValue::VOBJ); out.push_back(Pair("value", ValueFromAmount(txout.nValue))); if ( pindex != 0 && tx.nLockTime != 0 && (tipindex= chainActive.Tip()) != 0 ) { @@ -137,14 +150,14 @@ void TxToJSON(const CTransaction& tx, const uint256 hashBlock, Object& entry) out.push_back(Pair("interest", ValueFromAmount(interest))); } out.push_back(Pair("n", (int64_t)i)); - Object o; + UniValue o(UniValue::VOBJ); ScriptPubKeyToJSON(txout.scriptPubKey, o, true); out.push_back(Pair("scriptPubKey", o)); vout.push_back(out); } entry.push_back(Pair("vout", vout)); - Array vjoinsplit = TxJoinSplitToJSON(tx); + UniValue vjoinsplit = TxJoinSplitToJSON(tx); entry.push_back(Pair("vjoinsplit", vjoinsplit)); if (!hashBlock.IsNull()) { @@ -163,7 +176,7 @@ void TxToJSON(const CTransaction& tx, const uint256 hashBlock, Object& entry) } } -Value getrawtransaction(const Array& params, bool fHelp) +UniValue getrawtransaction(const UniValue& params, bool fHelp) { if (fHelp || params.size() < 1 || params.size() > 2) throw runtime_error( @@ -217,6 +230,33 @@ Value getrawtransaction(const Array& params, bool fHelp) " }\n" " ,...\n" " ],\n" + " \"vjoinsplit\" : [ (array of json objects, only for version >= 2)\n" + " {\n" + " \"vpub_old\" : x.xxx, (numeric) public input value in ZEC\n" + " \"vpub_new\" : x.xxx, (numeric) public output value in ZEC\n" + " \"anchor\" : \"hex\", (string) the anchor\n" + " \"nullifiers\" : [ (json array of string)\n" + " \"hex\" (string) input note nullifier\n" + " ,...\n" + " ],\n" + " \"commitments\" : [ (json array of string)\n" + " \"hex\" (string) output note commitment\n" + " ,...\n" + " ],\n" + " \"onetimePubKey\" : \"hex\", (string) the onetime public key used to encrypt the ciphertexts\n" + " \"randomSeed\" : \"hex\", (string) the random seed\n" + " \"macs\" : [ (json array of string)\n" + " \"hex\" (string) input note MAC\n" + " ,...\n" + " ],\n" + " \"proof\" : \"hex\", (string) the zero-knowledge proof\n" + " \"ciphertexts\" : [ (json array of string)\n" + " \"hex\" (string) output note ciphertext\n" + " ,...\n" + " ]\n" + " }\n" + " ,...\n" + " ],\n" " \"blockhash\" : \"hash\", (string) the block hash\n" " \"confirmations\" : n, (numeric) The confirmations\n" " \"time\" : ttt, (numeric) The transaction time in seconds since epoch (Jan 1 1970 GMT)\n" @@ -247,7 +287,7 @@ Value getrawtransaction(const Array& params, bool fHelp) if (!fVerbose) return strHex; - Object result; + UniValue result(UniValue::VOBJ); result.push_back(Pair("hex", strHex)); TxToJSON(tx, hashBlock, result); return result; @@ -303,7 +343,7 @@ int32_t gettxout_scriptPubKey(uint8_t *scriptPubKey,int32_t maxsize,uint256 txid return(-1); } -Value gettxoutproof(const Array& params, bool fHelp) +UniValue gettxoutproof(const UniValue& params, bool fHelp) { if (fHelp || (params.size() != 1 && params.size() != 2)) throw runtime_error( @@ -327,8 +367,9 @@ Value gettxoutproof(const Array& params, bool fHelp) set setTxids; uint256 oneTxid; - Array txids = params[0].get_array(); - BOOST_FOREACH(Value& txid, txids) { + UniValue txids = params[0].get_array(); + for (size_t idx = 0; idx < txids.size(); idx++) { + const UniValue& txid = txids[idx]; if (txid.get_str().length() != 64 || !IsHex(txid.get_str())) throw JSONRPCError(RPC_INVALID_PARAMETER, string("Invalid txid ")+txid.get_str()); uint256 hash(uint256S(txid.get_str())); @@ -383,7 +424,7 @@ Value gettxoutproof(const Array& params, bool fHelp) return strHex; } -Value verifytxoutproof(const Array& params, bool fHelp) +UniValue verifytxoutproof(const UniValue& params, bool fHelp) { if (fHelp || params.size() != 1) throw runtime_error( @@ -400,7 +441,7 @@ Value verifytxoutproof(const Array& params, bool fHelp) CMerkleBlock merkleBlock; ssMB >> merkleBlock; - Array res; + UniValue res(UniValue::VARR); vector vMatch; if (merkleBlock.txn.ExtractMatches(vMatch) != merkleBlock.header.hashMerkleRoot) @@ -416,7 +457,7 @@ Value verifytxoutproof(const Array& params, bool fHelp) return res; } -Value createrawtransaction(const Array& params, bool fHelp) +UniValue createrawtransaction(const UniValue& params, bool fHelp) { if (fHelp || params.size() != 2) throw runtime_error( @@ -450,20 +491,21 @@ Value createrawtransaction(const Array& params, bool fHelp) ); LOCK(cs_main); - RPCTypeCheck(params, boost::assign::list_of(array_type)(obj_type)); + RPCTypeCheck(params, boost::assign::list_of(UniValue::VARR)(UniValue::VOBJ)); - Array inputs = params[0].get_array(); - Object sendTo = params[1].get_obj(); + UniValue inputs = params[0].get_array(); + UniValue sendTo = params[1].get_obj(); CMutableTransaction rawTx; - BOOST_FOREACH(const Value& input, inputs) { - const Object& o = input.get_obj(); + for (size_t idx = 0; idx < inputs.size(); idx++) { + const UniValue& input = inputs[idx]; + const UniValue& o = input.get_obj(); uint256 txid = ParseHashO(o, "txid"); - const Value& vout_v = find_value(o, "vout"); - if (vout_v.type() != int_type) + const UniValue& vout_v = find_value(o, "vout"); + if (!vout_v.isNum()) throw JSONRPCError(RPC_INVALID_PARAMETER, "Invalid parameter, missing vout key"); int nOutput = vout_v.get_int(); if (nOutput < 0) @@ -474,17 +516,18 @@ Value createrawtransaction(const Array& params, bool fHelp) } set setAddress; - BOOST_FOREACH(const Pair& s, sendTo) { - CBitcoinAddress address(s.name_); + vector addrList = sendTo.getKeys(); + BOOST_FOREACH(const string& name_, addrList) { + CBitcoinAddress address(name_); if (!address.IsValid()) - throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, string("Invalid Bitcoin address: ")+s.name_); + throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, string("Invalid Bitcoin address: ")+name_); if (setAddress.count(address)) - throw JSONRPCError(RPC_INVALID_PARAMETER, string("Invalid parameter, duplicated address: ")+s.name_); + throw JSONRPCError(RPC_INVALID_PARAMETER, string("Invalid parameter, duplicated address: ")+name_); setAddress.insert(address); CScript scriptPubKey = GetScriptForDestination(address.Get()); - CAmount nAmount = AmountFromValue(s.value_); + CAmount nAmount = AmountFromValue(sendTo[name_]); CTxOut out(nAmount, scriptPubKey); rawTx.vout.push_back(out); @@ -493,7 +536,7 @@ Value createrawtransaction(const Array& params, bool fHelp) return EncodeHexTx(rawTx); } -Value decoderawtransaction(const Array& params, bool fHelp) +UniValue decoderawtransaction(const UniValue& params, bool fHelp) { if (fHelp || params.size() != 1) throw runtime_error( @@ -537,6 +580,33 @@ Value decoderawtransaction(const Array& params, bool fHelp) " }\n" " ,...\n" " ],\n" + " \"vjoinsplit\" : [ (array of json objects, only for version >= 2)\n" + " {\n" + " \"vpub_old\" : x.xxx, (numeric) public input value in ZEC\n" + " \"vpub_new\" : x.xxx, (numeric) public output value in ZEC\n" + " \"anchor\" : \"hex\", (string) the anchor\n" + " \"nullifiers\" : [ (json array of string)\n" + " \"hex\" (string) input note nullifier\n" + " ,...\n" + " ],\n" + " \"commitments\" : [ (json array of string)\n" + " \"hex\" (string) output note commitment\n" + " ,...\n" + " ],\n" + " \"onetimePubKey\" : \"hex\", (string) the onetime public key used to encrypt the ciphertexts\n" + " \"randomSeed\" : \"hex\", (string) the random seed\n" + " \"macs\" : [ (json array of string)\n" + " \"hex\" (string) input note MAC\n" + " ,...\n" + " ],\n" + " \"proof\" : \"hex\", (string) the zero-knowledge proof\n" + " \"ciphertexts\" : [ (json array of string)\n" + " \"hex\" (string) output note ciphertext\n" + " ,...\n" + " ]\n" + " }\n" + " ,...\n" + " ],\n" "}\n" "\nExamples:\n" @@ -545,20 +615,20 @@ Value decoderawtransaction(const Array& params, bool fHelp) ); LOCK(cs_main); - RPCTypeCheck(params, boost::assign::list_of(str_type)); + RPCTypeCheck(params, boost::assign::list_of(UniValue::VSTR)); CTransaction tx; if (!DecodeHexTx(tx, params[0].get_str())) throw JSONRPCError(RPC_DESERIALIZATION_ERROR, "TX decode failed"); - Object result; + UniValue result(UniValue::VOBJ); TxToJSON(tx, uint256(), result); return result; } -Value decodescript(const Array& params, bool fHelp) +UniValue decodescript(const UniValue& params, bool fHelp) { if (fHelp || params.size() != 1) throw runtime_error( @@ -584,9 +654,9 @@ Value decodescript(const Array& params, bool fHelp) ); LOCK(cs_main); - RPCTypeCheck(params, boost::assign::list_of(str_type)); + RPCTypeCheck(params, boost::assign::list_of(UniValue::VSTR)); - Object r; + UniValue r(UniValue::VOBJ); CScript script; if (params[0].get_str().size() > 0){ vector scriptData(ParseHexV(params[0], "argument")); @@ -601,9 +671,9 @@ Value decodescript(const Array& params, bool fHelp) } /** Pushes a JSON object for script verification or signing errors to vErrorsRet. */ -static void TxInErrorToJSON(const CTxIn& txin, Array& vErrorsRet, const std::string& strMessage) +static void TxInErrorToJSON(const CTxIn& txin, UniValue& vErrorsRet, const std::string& strMessage) { - Object entry; + UniValue entry(UniValue::VOBJ); entry.push_back(Pair("txid", txin.prevout.hash.ToString())); entry.push_back(Pair("vout", (uint64_t)txin.prevout.n)); entry.push_back(Pair("scriptSig", HexStr(txin.scriptSig.begin(), txin.scriptSig.end()))); @@ -612,7 +682,7 @@ static void TxInErrorToJSON(const CTxIn& txin, Array& vErrorsRet, const std::str vErrorsRet.push_back(entry); } -Value signrawtransaction(const Array& params, bool fHelp) +UniValue signrawtransaction(const UniValue& params, bool fHelp) { if (fHelp || params.size() < 1 || params.size() > 4) throw runtime_error( @@ -677,7 +747,7 @@ Value signrawtransaction(const Array& params, bool fHelp) #else LOCK(cs_main); #endif - RPCTypeCheck(params, boost::assign::list_of(str_type)(array_type)(array_type)(str_type), true); + RPCTypeCheck(params, boost::assign::list_of(UniValue::VSTR)(UniValue::VARR)(UniValue::VARR)(UniValue::VSTR), true); vector txData(ParseHexV(params[0], "argument 1")); CDataStream ssData(txData, SER_NETWORK, PROTOCOL_VERSION); @@ -720,10 +790,11 @@ Value signrawtransaction(const Array& params, bool fHelp) bool fGivenKeys = false; CBasicKeyStore tempKeystore; - if (params.size() > 2 && params[2].type() != null_type) { + if (params.size() > 2 && !params[2].isNull()) { fGivenKeys = true; - Array keys = params[2].get_array(); - BOOST_FOREACH(Value k, keys) { + UniValue keys = params[2].get_array(); + for (size_t idx = 0; idx < keys.size(); idx++) { + UniValue k = keys[idx]; CBitcoinSecret vchSecret; bool fGood = vchSecret.SetString(k.get_str()); if (!fGood) @@ -740,15 +811,16 @@ Value signrawtransaction(const Array& params, bool fHelp) #endif // Add previous txouts given in the RPC call: - if (params.size() > 1 && params[1].type() != null_type) { - Array prevTxs = params[1].get_array(); - BOOST_FOREACH(Value& p, prevTxs) { - if (p.type() != obj_type) + if (params.size() > 1 && !params[1].isNull()) { + UniValue prevTxs = params[1].get_array(); + for (size_t idx = 0; idx < prevTxs.size(); idx++) { + const UniValue& p = prevTxs[idx]; + if (!p.isObject()) throw JSONRPCError(RPC_DESERIALIZATION_ERROR, "expected object with {\"txid'\",\"vout\",\"scriptPubKey\"}"); - Object prevOut = p.get_obj(); + UniValue prevOut = p.get_obj(); - RPCTypeCheck(prevOut, boost::assign::map_list_of("txid", str_type)("vout", int_type)("scriptPubKey", str_type)); + RPCTypeCheckObj(prevOut, boost::assign::map_list_of("txid", UniValue::VSTR)("vout", UniValue::VNUM)("scriptPubKey", UniValue::VSTR)); uint256 txid = ParseHashO(prevOut, "txid"); @@ -776,9 +848,9 @@ Value signrawtransaction(const Array& params, bool fHelp) // if redeemScript given and not using the local wallet (private keys // given), add redeemScript to the tempKeystore so it can be signed: if (fGivenKeys && scriptPubKey.IsPayToScriptHash()) { - RPCTypeCheck(prevOut, boost::assign::map_list_of("txid", str_type)("vout", int_type)("scriptPubKey", str_type)("redeemScript",str_type)); - Value v = find_value(prevOut, "redeemScript"); - if (!(v == Value::null)) { + RPCTypeCheckObj(prevOut, boost::assign::map_list_of("txid", UniValue::VSTR)("vout", UniValue::VNUM)("scriptPubKey", UniValue::VSTR)("redeemScript",UniValue::VSTR)); + UniValue v = find_value(prevOut, "redeemScript"); + if (!v.isNull()) { vector rsData(ParseHexV(v, "redeemScript")); CScript redeemScript(rsData.begin(), rsData.end()); tempKeystore.AddCScript(redeemScript); @@ -794,7 +866,7 @@ Value signrawtransaction(const Array& params, bool fHelp) #endif int nHashType = SIGHASH_ALL; - if (params.size() > 3 && params[3].type() != null_type) { + if (params.size() > 3 && !params[3].isNull()) { static map mapSigHashValues = boost::assign::map_list_of (string("ALL"), int(SIGHASH_ALL)) @@ -814,7 +886,7 @@ Value signrawtransaction(const Array& params, bool fHelp) bool fHashSingle = ((nHashType & ~SIGHASH_ANYONECANPAY) == SIGHASH_SINGLE); // Script verification errors - Array vErrors; + UniValue vErrors(UniValue::VARR); // Sign what we can: for (unsigned int i = 0; i < mergedTx.vin.size(); i++) { @@ -842,7 +914,7 @@ Value signrawtransaction(const Array& params, bool fHelp) } bool fComplete = vErrors.empty(); - Object result; + UniValue result(UniValue::VOBJ); result.push_back(Pair("hex", EncodeHexTx(mergedTx))); result.push_back(Pair("complete", fComplete)); if (!vErrors.empty()) { @@ -852,7 +924,7 @@ Value signrawtransaction(const Array& params, bool fHelp) return result; } -Value sendrawtransaction(const Array& params, bool fHelp) +UniValue sendrawtransaction(const UniValue& params, bool fHelp) { if (fHelp || params.size() < 1 || params.size() > 2) throw runtime_error( @@ -876,7 +948,7 @@ Value sendrawtransaction(const Array& params, bool fHelp) ); LOCK(cs_main); - RPCTypeCheck(params, boost::assign::list_of(str_type)(bool_type)); + RPCTypeCheck(params, boost::assign::list_of(UniValue::VSTR)(UniValue::VBOOL)); // parse hex string from parameter CTransaction tx; diff --git a/src/rpcserver.cpp b/src/rpcserver.cpp index cde0ed095..4749cfdc4 100644 --- a/src/rpcserver.cpp +++ b/src/rpcserver.cpp @@ -12,16 +12,12 @@ #include "ui_interface.h" #include "util.h" #include "utilstrencodings.h" -#ifdef ENABLE_WALLET -#include "wallet/wallet.h" -#endif #include "asyncrpcqueue.h" #include -#include -#include -#include +#include + #include #include #include @@ -30,28 +26,20 @@ #include #include #include -#include "json/json_spirit_writer_template.h" +#include // for to_upper() -using namespace boost::asio; -using namespace json_spirit; using namespace RPCServer; using namespace std; -static std::string strRPCUserColonPass; - static bool fRPCRunning = false; static bool fRPCInWarmup = true; static std::string rpcWarmupStatus("RPC server started"); static CCriticalSection cs_rpcWarmup; - -//! These are created by StartRPCThreads, destroyed in StopRPCThreads -static boost::asio::io_service* rpc_io_service = NULL; -static map > deadlineTimers; -static ssl::context* rpc_ssl_context = NULL; -static boost::thread_group* rpc_worker_group = NULL; -static boost::asio::io_service::work *rpc_dummy_work = NULL; -static std::vector rpc_allow_subnets; //!< List of subnets to allow RPC connections from -static std::vector< boost::shared_ptr > rpc_acceptors; +/* Timer-creating functions */ +static std::vector timerInterfaces; +/* Map of name to timer. + * @note Can be changed to std::unique_ptr when C++11 */ +static std::map > deadlineTimers; static struct CRPCSignals { @@ -81,71 +69,72 @@ void RPCServer::OnPostCommand(boost::function slot) g_rpcSignals.PostCommand.connect(boost::bind(slot, _1)); } -void RPCTypeCheck(const Array& params, - const list& typesExpected, +void RPCTypeCheck(const UniValue& params, + const list& typesExpected, bool fAllowNull) { - unsigned int i = 0; - BOOST_FOREACH(Value_type t, typesExpected) + size_t i = 0; + BOOST_FOREACH(UniValue::VType t, typesExpected) { if (params.size() <= i) break; - const Value& v = params[i]; - if (!((v.type() == t) || (fAllowNull && (v.type() == null_type)))) + const UniValue& v = params[i]; + if (!((v.type() == t) || (fAllowNull && (v.isNull())))) { string err = strprintf("Expected type %s, got %s", - Value_type_name[t], Value_type_name[v.type()]); + uvTypeName(t), uvTypeName(v.type())); throw JSONRPCError(RPC_TYPE_ERROR, err); } i++; } } -void RPCTypeCheck(const Object& o, - const map& typesExpected, +void RPCTypeCheckObj(const UniValue& o, + const map& typesExpected, bool fAllowNull) { - BOOST_FOREACH(const PAIRTYPE(string, Value_type)& t, typesExpected) + BOOST_FOREACH(const PAIRTYPE(string, UniValue::VType)& t, typesExpected) { - const Value& v = find_value(o, t.first); - if (!fAllowNull && v.type() == null_type) + const UniValue& v = find_value(o, t.first); + if (!fAllowNull && v.isNull()) throw JSONRPCError(RPC_TYPE_ERROR, strprintf("Missing %s", t.first)); - if (!((v.type() == t.second) || (fAllowNull && (v.type() == null_type)))) + if (!((v.type() == t.second) || (fAllowNull && (v.isNull())))) { string err = strprintf("Expected type %s for %s, got %s", - Value_type_name[t.second], t.first, Value_type_name[v.type()]); + uvTypeName(t.second), t.first, uvTypeName(v.type())); throw JSONRPCError(RPC_TYPE_ERROR, err); } } } -static inline int64_t roundint64(double d) +CAmount AmountFromValue(const UniValue& value) { - return (int64_t)(d > 0 ? d + 0.5 : d - 0.5); -} - -CAmount AmountFromValue(const Value& value) -{ - double dAmount = value.get_real(); - if (dAmount <= 0.0 || dAmount > 21000000.0) + if (!value.isNum() && !value.isStr()) + throw JSONRPCError(RPC_TYPE_ERROR, "Amount is not a number or string"); + CAmount amount; + if (!ParseFixedPoint(value.getValStr(), 8, &amount)) throw JSONRPCError(RPC_TYPE_ERROR, "Invalid amount"); - CAmount nAmount = roundint64(dAmount * COIN); - if (!MoneyRange(nAmount)) - throw JSONRPCError(RPC_TYPE_ERROR, "Invalid amount"); - return nAmount; + if (!MoneyRange(amount)) + throw JSONRPCError(RPC_TYPE_ERROR, "Amount out of range"); + return amount; } -Value ValueFromAmount(const CAmount& amount) +UniValue ValueFromAmount(const CAmount& amount) { - return (double)amount / (double)COIN; + bool sign = amount < 0; + int64_t n_abs = (sign ? -amount : amount); + int64_t quotient = n_abs / COIN; + int64_t remainder = n_abs % COIN; + return UniValue(UniValue::VNUM, + strprintf("%s%d.%08d", sign ? "-" : "", quotient, remainder)); } -uint256 ParseHashV(const Value& v, string strName) +uint256 ParseHashV(const UniValue& v, string strName) { string strHex; - if (v.type() == str_type) + if (v.isStr()) strHex = v.get_str(); if (!IsHex(strHex)) // Note: IsHex("") is false throw JSONRPCError(RPC_INVALID_PARAMETER, strName+" must be hexadecimal string (not '"+strHex+"')"); @@ -153,30 +142,29 @@ uint256 ParseHashV(const Value& v, string strName) result.SetHex(strHex); return result; } -uint256 ParseHashO(const Object& o, string strKey) +uint256 ParseHashO(const UniValue& o, string strKey) { return ParseHashV(find_value(o, strKey), strKey); } -vector ParseHexV(const Value& v, string strName) +vector ParseHexV(const UniValue& v, string strName) { string strHex; - if (v.type() == str_type) + if (v.isStr()) strHex = v.get_str(); if (!IsHex(strHex)) throw JSONRPCError(RPC_INVALID_PARAMETER, strName+" must be hexadecimal string (not '"+strHex+"')"); return ParseHex(strHex); } -vector ParseHexO(const Object& o, string strKey) +vector ParseHexO(const UniValue& o, string strKey) { return ParseHexV(find_value(o, strKey), strKey); } - /** * Note: This interface may still be subject to change. */ -string CRPCTable::help(string strCommand) const +std::string CRPCTable::help(const std::string& strCommand) const { string strRet; string category; @@ -198,7 +186,7 @@ string CRPCTable::help(string strCommand) const continue; try { - Array params; + UniValue params; rpcfn_type pfn = pcmd->actor; if (setDone.insert(pfn).second) (*pfn)(params, true); @@ -231,7 +219,7 @@ string CRPCTable::help(string strCommand) const return strRet; } -Value help(const Array& params, bool fHelp) +UniValue help(const UniValue& params, bool fHelp) { if (fHelp || params.size() > 1) throw runtime_error( @@ -251,7 +239,7 @@ Value help(const Array& params, bool fHelp) } -Value stop(const Array& params, bool fHelp) +UniValue stop(const UniValue& params, bool fHelp) { // Accept the deprecated and ignored 'detach' boolean argument if (fHelp || params.size() > 1) @@ -263,8 +251,6 @@ Value stop(const Array& params, bool fHelp) return "Komodo server stopping"; } - - /** * Call Table */ @@ -279,11 +265,15 @@ static const CRPCCommand vRPCCommands[] = /* P2P networking */ { "network", "getnetworkinfo", &getnetworkinfo, true }, { "network", "addnode", &addnode, true }, + { "network", "disconnectnode", &disconnectnode, true }, { "network", "getaddednodeinfo", &getaddednodeinfo, true }, { "network", "getconnectioncount", &getconnectioncount, true }, { "network", "getnettotals", &getnettotals, true }, { "network", "getpeerinfo", &getpeerinfo, true }, { "network", "ping", &ping, true }, + { "network", "setban", &setban, true }, + { "network", "listbanned", &listbanned, true }, + { "network", "clearbanned", &clearbanned, true }, /* Block chain and UTXO */ { "blockchain", "getblockchaininfo", &getblockchaininfo, true }, @@ -291,7 +281,8 @@ static const CRPCCommand vRPCCommands[] = { "blockchain", "getblockcount", &getblockcount, true }, { "blockchain", "getblock", &getblock, true }, { "blockchain", "getblockhash", &getblockhash, true }, - //{ "blockchain", "getchaintips", &getchaintips, true }, + { "blockchain", "getblockheader", &getblockheader, true }, + { "blockchain", "getchaintips", &getchaintips, true }, { "blockchain", "getdifficulty", &getdifficulty, true }, { "blockchain", "getmempoolinfo", &getmempoolinfo, true }, { "blockchain", "getrawmempool", &getrawmempool, true }, @@ -320,7 +311,7 @@ static const CRPCCommand vRPCCommands[] = { "mining", "submitblock", &submitblock, true }, { "mining", "getblocksubsidy", &getblocksubsidy, true }, -#ifdef ENABLE_WALLET +#ifdef ENABLE_MINING /* Coin generation */ { "generating", "getgenerate", &getgenerate, true }, { "generating", "setgenerate", &setgenerate, true }, @@ -334,6 +325,9 @@ static const CRPCCommand vRPCCommands[] = { "rawtransactions", "getrawtransaction", &getrawtransaction, true }, { "rawtransactions", "sendrawtransaction", &sendrawtransaction, false }, { "rawtransactions", "signrawtransaction", &signrawtransaction, false }, /* uses wallet if enabled */ +#ifdef ENABLE_WALLET + { "rawtransactions", "fundrawtransaction", &fundrawtransaction, false }, +#endif /* Utility functions */ { "util", "createmultisig", &createmultisig, true }, @@ -428,7 +422,7 @@ CRPCTable::CRPCTable() } } -const CRPCCommand *CRPCTable::operator[](string name) const +const CRPCCommand *CRPCTable::operator[](const std::string &name) const { map::const_iterator it = mapCommands.find(name); if (it == mapCommands.end()) @@ -436,168 +430,9 @@ const CRPCCommand *CRPCTable::operator[](string name) const return (*it).second; } - -bool HTTPAuthorized(map& mapHeaders) -{ - string strAuth = mapHeaders["authorization"]; - if (strAuth.substr(0,6) != "Basic ") - return false; - string strUserPass64 = strAuth.substr(6); boost::trim(strUserPass64); - string strUserPass = DecodeBase64(strUserPass64); - return TimingResistantEqual(strUserPass, strRPCUserColonPass); -} - -void ErrorReply(std::ostream& stream, const Object& objError, const Value& id) -{ - // Send error reply from json-rpc error object - int nStatus = HTTP_INTERNAL_SERVER_ERROR; - int code = find_value(objError, "code").get_int(); - if (code == RPC_INVALID_REQUEST) nStatus = HTTP_BAD_REQUEST; - else if (code == RPC_METHOD_NOT_FOUND) nStatus = HTTP_NOT_FOUND; - string strReply = JSONRPCReply(Value::null, objError, id); - stream << HTTPReply(nStatus, strReply, false) << std::flush; -} - -CNetAddr BoostAsioToCNetAddr(boost::asio::ip::address address) -{ - CNetAddr netaddr; - // Make sure that IPv4-compatible and IPv4-mapped IPv6 addresses are treated as IPv4 addresses - if (address.is_v6() - && (address.to_v6().is_v4_compatible() - || address.to_v6().is_v4_mapped())) - address = address.to_v6().to_v4(); - - if(address.is_v4()) - { - boost::asio::ip::address_v4::bytes_type bytes = address.to_v4().to_bytes(); - netaddr.SetRaw(NET_IPV4, &bytes[0]); - } - else - { - boost::asio::ip::address_v6::bytes_type bytes = address.to_v6().to_bytes(); - netaddr.SetRaw(NET_IPV6, &bytes[0]); - } - return netaddr; -} - -bool ClientAllowed(const boost::asio::ip::address& address) -{ - CNetAddr netaddr = BoostAsioToCNetAddr(address); - BOOST_FOREACH(const CSubNet &subnet, rpc_allow_subnets) - if (subnet.Match(netaddr)) - return true; - return false; -} - -template -class AcceptedConnectionImpl : public AcceptedConnection -{ -public: - AcceptedConnectionImpl( - boost::asio::io_service& io_service, - ssl::context &context, - bool fUseSSL) : - sslStream(io_service, context), - _d(sslStream, fUseSSL), - _stream(_d) - { - } - - virtual std::iostream& stream() - { - return _stream; - } - - virtual std::string peer_address_to_string() const - { - return peer.address().to_string(); - } - - virtual void close() - { - _stream.close(); - } - - typename Protocol::endpoint peer; - boost::asio::ssl::stream sslStream; - -private: - SSLIOStreamDevice _d; - boost::iostreams::stream< SSLIOStreamDevice > _stream; -}; - -void ServiceConnection(AcceptedConnection *conn); - -//! Forward declaration required for RPCListen -template -static void RPCAcceptHandler(boost::shared_ptr< basic_socket_acceptor > acceptor, - ssl::context& context, - bool fUseSSL, - boost::shared_ptr< AcceptedConnection > conn, - const boost::system::error_code& error); - -/** - * Sets up I/O resources to accept and handle a new connection. - */ -template -static void RPCListen(boost::shared_ptr< basic_socket_acceptor > acceptor, - ssl::context& context, - const bool fUseSSL) -{ - // Accept connection - boost::shared_ptr< AcceptedConnectionImpl > conn(new AcceptedConnectionImpl(acceptor->get_io_service(), context, fUseSSL)); - - acceptor->async_accept( - conn->sslStream.lowest_layer(), - conn->peer, - boost::bind(&RPCAcceptHandler, - acceptor, - boost::ref(context), - fUseSSL, - conn, - _1)); -} - - -/** - * Accept and handle incoming connection. - */ -template -static void RPCAcceptHandler(boost::shared_ptr< basic_socket_acceptor > acceptor, - ssl::context& context, - const bool fUseSSL, - boost::shared_ptr< AcceptedConnection > conn, - const boost::system::error_code& error) -{ - // Immediately start accepting new connections, except when we're cancelled or our socket is closed. - if (error != boost::asio::error::operation_aborted && acceptor->is_open()) - RPCListen(acceptor, context, fUseSSL); - - AcceptedConnectionImpl* tcp_conn = dynamic_cast< AcceptedConnectionImpl* >(conn.get()); - - if (error) - { - // TODO: Actually handle errors - LogPrintf("%s: Error: %s\n", __func__, error.message()); - } - // Restrict callers by IP. It is important to - // do this before starting client thread, to filter out - // certain DoS and misbehaving clients. - else if (tcp_conn && !ClientAllowed(tcp_conn->peer.address())) - { - // Only send a 403 if we're not using SSL to prevent a DoS during the SSL handshake. - if (!fUseSSL) - conn->stream() << HTTPError(HTTP_FORBIDDEN, false) << std::flush; - conn->close(); - } - else { - ServiceConnection(conn.get()); - conn->close(); - } -} - -static ip::tcp::endpoint ParseEndpoint(const std::string &strEndpoint, int defaultPort) +bool StartRPC() { +/*<<<<<<< HEA std::string addr; int port = defaultPort; SplitHostPort(strEndpoint, port, addr); @@ -633,26 +468,6 @@ void StartRPCThreads() if (mapArgs["-rpcpassword"] == "") { -/*<<<<<<< HEAD - unsigned char rand_pwd[32]; - GetRandBytes(rand_pwd, 32); - uiInterface.ThreadSafeMessageBox(strprintf( - _("To use komodod you must set an rpcpassword in the configuration file:\n" - "%s\n" - "It is recommended you use the following random password:\n" - "rpcuser=zcashrpc\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 \"Komodo Alert\" admin@foo.com\n"), - GetConfigFile().string(), - EncodeBase58(&rand_pwd[0],&rand_pwd[0]+32)), - "", CClientUIInterface::MSG_ERROR | CClientUIInterface::SECURE); - StartShutdown(); - return; -=======*/ LogPrintf("No rpcpassword set - using random cookie authentication\n"); if (!GenerateAuthCookie(&strRPCUserColonPass)) { uiInterface.ThreadSafeMessageBox( @@ -663,7 +478,6 @@ void StartRPCThreads() } } else { strRPCUserColonPass = mapArgs["-rpcuser"] + ":" + mapArgs["-rpcpassword"]; -//>>>>>>> zcash/master } assert(rpc_io_service == NULL); @@ -771,6 +585,9 @@ void StartRPCThreads() rpc_worker_group = new boost::thread_group(); for (int i = 0; i < GetArg("-rpcthreads", 4); i++) rpc_worker_group->create_thread(boost::bind(&boost::asio::io_service::run, rpc_io_service)); +======= + LogPrint("rpc", "Starting RPC\n"); +>>>>>>> zcash/master*/ fRPCRunning = true; g_rpcSignals.Started(); @@ -789,57 +606,21 @@ void StartRPCThreads() for (int i = 0; i < n; i++) getAsyncRPCQueue()->addWorker(); */ + return true; } -void StartDummyRPCThread() +void InterruptRPC() { - if(rpc_io_service == NULL) - { - rpc_io_service = new boost::asio::io_service(); - /* Create dummy "work" to keep the thread from exiting when no timeouts active, - * see http://www.boost.org/doc/libs/1_51_0/doc/html/boost_asio/reference/io_service.html#boost_asio.reference.io_service.stopping_the_io_service_from_running_out_of_work */ - rpc_dummy_work = new boost::asio::io_service::work(*rpc_io_service); - rpc_worker_group = new boost::thread_group(); - rpc_worker_group->create_thread(boost::bind(&boost::asio::io_service::run, rpc_io_service)); - fRPCRunning = true; - } -} - -void StopRPCThreads() -{ - if (rpc_io_service == NULL) return; - // Set this to false first, so that longpolling loops will exit when woken up + LogPrint("rpc", "Interrupting RPC\n"); + // Interrupt e.g. running longpolls fRPCRunning = false; +} - // First, cancel all timers and acceptors - // This is not done automatically by ->stop(), and in some cases the destructor of - // boost::asio::io_service can hang if this is skipped. - boost::system::error_code ec; - BOOST_FOREACH(const boost::shared_ptr &acceptor, rpc_acceptors) - { - acceptor->cancel(ec); - if (ec) - LogPrintf("%s: Warning: %s when cancelling acceptor\n", __func__, ec.message()); - } - rpc_acceptors.clear(); - BOOST_FOREACH(const PAIRTYPE(std::string, boost::shared_ptr) &timer, deadlineTimers) - { - timer.second->cancel(ec); - if (ec) - LogPrintf("%s: Warning: %s when cancelling timer\n", __func__, ec.message()); - } +void StopRPC() +{ + LogPrint("rpc", "Stopping RPC\n"); deadlineTimers.clear(); - - DeleteAuthCookie(); - - rpc_io_service->stop(); g_rpcSignals.Stopped(); - if (rpc_worker_group != NULL) - rpc_worker_group->join_all(); - delete rpc_dummy_work; rpc_dummy_work = NULL; - delete rpc_worker_group; rpc_worker_group = NULL; - delete rpc_ssl_context; rpc_ssl_context = NULL; - delete rpc_io_service; rpc_io_service = NULL; // Tells async queue to cancel all operations and shutdown. LogPrintf("%s: waiting for async rpc workers to stop\n", __func__); @@ -872,118 +653,83 @@ bool RPCIsInWarmup(std::string *outStatus) return fRPCInWarmup; } -void RPCRunHandler(const boost::system::error_code& err, boost::function func) -{ - if (!err) - func(); -} - -void RPCRunLater(const std::string& name, boost::function func, int64_t nSeconds) -{ - assert(rpc_io_service != NULL); - - if (deadlineTimers.count(name) == 0) - { - deadlineTimers.insert(make_pair(name, - boost::shared_ptr(new deadline_timer(*rpc_io_service)))); - } - deadlineTimers[name]->expires_from_now(boost::posix_time::seconds(nSeconds)); - deadlineTimers[name]->async_wait(boost::bind(RPCRunHandler, _1, func)); -} - -class JSONRequest -{ -public: - Value id; - string strMethod; - Array params; - - JSONRequest() { id = Value::null; } - void parse(const Value& valRequest); -}; - -void JSONRequest::parse(const Value& valRequest) +void JSONRequest::parse(const UniValue& valRequest) { // Parse request - if (valRequest.type() != obj_type) + if (!valRequest.isObject()) throw JSONRPCError(RPC_INVALID_REQUEST, "Invalid Request object"); - const Object& request = valRequest.get_obj(); + const UniValue& request = valRequest.get_obj(); // Parse id now so errors from here on will have the id id = find_value(request, "id"); // Parse method - Value valMethod = find_value(request, "method"); - if (valMethod.type() == null_type) + UniValue valMethod = find_value(request, "method"); + if (valMethod.isNull()) throw JSONRPCError(RPC_INVALID_REQUEST, "Missing method"); - if (valMethod.type() != str_type) + if (!valMethod.isStr()) throw JSONRPCError(RPC_INVALID_REQUEST, "Method must be a string"); strMethod = valMethod.get_str(); if (strMethod != "getblocktemplate") LogPrint("rpc", "ThreadRPCServer method=%s\n", SanitizeString(strMethod)); // Parse params - Value valParams = find_value(request, "params"); - if (valParams.type() == array_type) + UniValue valParams = find_value(request, "params"); + if (valParams.isArray()) params = valParams.get_array(); - else if (valParams.type() == null_type) - params = Array(); + else if (valParams.isNull()) + params = UniValue(UniValue::VARR); else throw JSONRPCError(RPC_INVALID_REQUEST, "Params must be an array"); } - -static Object JSONRPCExecOne(const Value& req) +static UniValue JSONRPCExecOne(const UniValue& req) { - Object rpc_result; + UniValue rpc_result(UniValue::VOBJ); JSONRequest jreq; try { jreq.parse(req); - Value result = tableRPC.execute(jreq.strMethod, jreq.params); - rpc_result = JSONRPCReplyObj(result, Value::null, jreq.id); + UniValue result = tableRPC.execute(jreq.strMethod, jreq.params); + rpc_result = JSONRPCReplyObj(result, NullUniValue, jreq.id); } - catch (const Object& objError) + catch (const UniValue& objError) { - rpc_result = JSONRPCReplyObj(Value::null, objError, jreq.id); + rpc_result = JSONRPCReplyObj(NullUniValue, objError, jreq.id); } catch (const std::exception& e) { - rpc_result = JSONRPCReplyObj(Value::null, + rpc_result = JSONRPCReplyObj(NullUniValue, JSONRPCError(RPC_PARSE_ERROR, e.what()), jreq.id); } return rpc_result; } -static string JSONRPCExecBatch(const Array& vReq) +std::string JSONRPCExecBatch(const UniValue& vReq) { - Array ret; - for (unsigned int reqIdx = 0; reqIdx < vReq.size(); reqIdx++) + UniValue ret(UniValue::VARR); + for (size_t reqIdx = 0; reqIdx < vReq.size(); reqIdx++) ret.push_back(JSONRPCExecOne(vReq[reqIdx])); - return write_string(Value(ret), false) + "\n"; + return ret.write() + "\n"; } -static bool HTTPReq_JSONRPC(AcceptedConnection *conn, - string& strRequest, - map& mapHeaders, - bool fRun) +UniValue CRPCTable::execute(const std::string &strMethod, const UniValue ¶ms) const { - // Check authorization - if (mapHeaders.count("authorization") == 0) + // Return immediately if in warmup { - conn->stream() << HTTPError(HTTP_UNAUTHORIZED, false) << std::flush; - return false; + LOCK(cs_rpcWarmup); + if (fRPCInWarmup) + throw JSONRPCError(RPC_IN_WARMUP, rpcWarmupStatus); } +/*<<<<<<< HEA if (!HTTPAuthorized(mapHeaders)) { LogPrintf("ThreadRPCServer incorrect password attempt from %s\n", conn->peer_address_to_string()); - /* Deter brute-forcing - We don't support exposing the RPC port, so this shouldn't result - in a DoS. */ + //Deter brute-forcing We don't support exposing the RPC port, so this shouldn't result in a DoS. MilliSleep(250); conn->stream() << HTTPError(HTTP_UNAUTHORIZED, false) << std::flush; @@ -1058,11 +804,11 @@ void ServiceConnection(AcceptedConnection *conn) // We have disabled support for HTTP Keep-Alive until resolution of #1680, upstream rpc deadlock. // Close connection immediately. fRun = false; - /* + // HTTP Keep-Alive is false; close connection immediately - if ((mapHeaders["connection"] == "close") || (!GetBoolArg("-rpckeepalive", true))) - fRun = false; - */ + //if ((mapHeaders["connection"] == "close") || (!GetBoolArg("-rpckeepalive", true))) + // fRun = false; + // Process via JSON-RPC API if (strURI == "/") { @@ -1083,6 +829,8 @@ void ServiceConnection(AcceptedConnection *conn) json_spirit::Value CRPCTable::execute(const std::string &strMethod, const json_spirit::Array ¶ms) const { +======= +>>>>>>> zcash/master*/ // Find method const CRPCCommand *pcmd = tableRPC[strMethod]; if (!pcmd) @@ -1103,15 +851,39 @@ json_spirit::Value CRPCTable::execute(const std::string &strMethod, const json_s g_rpcSignals.PostCommand(*pcmd); } -std::string HelpExampleCli(string methodname, string args){ +std::string HelpExampleCli(const std::string& methodname, const std::string& args) +{ return "> zcash-cli " + methodname + " " + args + "\n"; } -std::string HelpExampleRpc(string methodname, string args){ +std::string HelpExampleRpc(const std::string& methodname, const std::string& args) +{ return "> curl --user myusername --data-binary '{\"jsonrpc\": \"1.0\", \"id\":\"curltest\", " "\"method\": \"" + methodname + "\", \"params\": [" + args + "] }' -H 'content-type: text/plain;' http://127.0.0.1:8232/\n"; } +void RPCRegisterTimerInterface(RPCTimerInterface *iface) +{ + timerInterfaces.push_back(iface); +} + +void RPCUnregisterTimerInterface(RPCTimerInterface *iface) +{ + std::vector::iterator i = std::find(timerInterfaces.begin(), timerInterfaces.end(), iface); + assert(i != timerInterfaces.end()); + timerInterfaces.erase(i); +} + +void RPCRunLater(const std::string& name, boost::function func, int64_t nSeconds) +{ + if (timerInterfaces.empty()) + throw JSONRPCError(RPC_INTERNAL_ERROR, "No timer handler registered for RPC"); + deadlineTimers.erase(name); + RPCTimerInterface* timerInterface = timerInterfaces[0]; + LogPrint("rpc", "queue run of timer %s in %i seconds (using %s)\n", name, nSeconds, timerInterface->Name()); + deadlineTimers.insert(std::make_pair(name, boost::shared_ptr(timerInterface->NewTimer(func, nSeconds*1000)))); +} + const CRPCTable tableRPC; // Return async rpc queue diff --git a/src/rpcserver.h b/src/rpcserver.h index 9a5c02dca..c94450609 100644 --- a/src/rpcserver.h +++ b/src/rpcserver.h @@ -16,9 +16,9 @@ #include #include -#include "json/json_spirit_reader_template.h" -#include "json/json_spirit_utils.h" -#include "json/json_spirit_writer_template.h" +#include + +#include class AsyncRPCQueue; class CRPCCommand; @@ -34,26 +34,17 @@ namespace RPCServer class CBlockIndex; class CNetAddr; -class AcceptedConnection +class JSONRequest { public: - virtual ~AcceptedConnection() {} + UniValue id; + std::string strMethod; + UniValue params; - virtual std::iostream& stream() = 0; - virtual std::string peer_address_to_string() const = 0; - virtual void close() = 0; + JSONRequest() { id = NullUniValue; } + void parse(const UniValue& valRequest); }; -/** Start RPC threads */ -void StartRPCThreads(); -/** - * Alternative to StartRPCThreads for the GUI, when no server is - * used. The RPC thread in this case is only used to handle timeouts. - * If real RPC threads have already been started this is a no-op. - */ -void StartDummyRPCThread(); -/** Stop RPC threads */ -void StopRPCThreads(); /** Query whether RPC is running */ bool IsRPCRunning(); @@ -61,7 +52,7 @@ bool IsRPCRunning(); std::shared_ptr getAsyncRPCQueue(); -/** +/** * Set the RPC warmup status. When this is done, all RPC calls will error out * immediately with RPC_IN_WARMUP. */ @@ -77,25 +68,56 @@ bool RPCIsInWarmup(std::string *statusOut); * the right number of arguments are passed, just that any passed are the correct type. * Use like: RPCTypeCheck(params, boost::assign::list_of(str_type)(int_type)(obj_type)); */ -void RPCTypeCheck(const json_spirit::Array& params, - const std::list& typesExpected, bool fAllowNull=false); -/** - * Check for expected keys/value types in an Object. - * Use like: RPCTypeCheck(object, boost::assign::map_list_of("name", str_type)("value", int_type)); +void RPCTypeCheck(const UniValue& params, + const std::list& typesExpected, bool fAllowNull=false); + +/* + Check for expected keys/value types in an Object. + Use like: RPCTypeCheckObj(object, boost::assign::map_list_of("name", str_type)("value", int_type)); +*/ +void RPCTypeCheckObj(const UniValue& o, + const std::map& typesExpected, bool fAllowNull=false); + +/** Opaque base class for timers returned by NewTimerFunc. + * This provides no methods at the moment, but makes sure that delete + * cleans up the whole state. */ -void RPCTypeCheck(const json_spirit::Object& o, - const std::map& typesExpected, bool fAllowNull=false); +class RPCTimerBase +{ +public: + virtual ~RPCTimerBase() {} +}; /** - * Run func nSeconds from now. Uses boost deadline timers. + * RPC timer "driver". + */ +class RPCTimerInterface +{ +public: + virtual ~RPCTimerInterface() {} + /** Implementation name */ + virtual const char *Name() = 0; + /** Factory function for timers. + * RPC will call the function to create a timer that will call func in *millis* milliseconds. + * @note As the RPC mechanism is backend-neutral, it can use different implementations of timers. + * This is needed to cope with the case in which there is no HTTP server, but + * only GUI RPC console, and to break the dependency of rpcserver on httprpc. + */ + virtual RPCTimerBase* NewTimer(boost::function& func, int64_t millis) = 0; +}; + +/** Register factory function for timers */ +void RPCRegisterTimerInterface(RPCTimerInterface *iface); +/** Unregister factory function for timers */ +void RPCUnregisterTimerInterface(RPCTimerInterface *iface); + +/** + * Run func nSeconds from now. * Overrides previous timer (if any). */ void RPCRunLater(const std::string& name, boost::function func, int64_t nSeconds); -//! Convert boost::asio address to CNetAddr -extern CNetAddr BoostAsioToCNetAddr(boost::asio::ip::address address); - -typedef json_spirit::Value(*rpcfn_type)(const json_spirit::Array& params, bool fHelp); +typedef UniValue(*rpcfn_type)(const UniValue& params, bool fHelp); class CRPCCommand { @@ -115,17 +137,17 @@ private: std::map mapCommands; public: CRPCTable(); - const CRPCCommand* operator[](std::string name) const; - std::string help(std::string name) const; + const CRPCCommand* operator[](const std::string& name) const; + std::string help(const std::string& name) const; /** * Execute a method. * @param method Method to execute - * @param params Array of arguments (JSON objects) + * @param params UniValue Array of arguments (JSON objects) * @returns Result of the call. - * @throws an exception (json_spirit::Value) when an error happens. + * @throws an exception (UniValue) when an error happens. */ - json_spirit::Value execute(const std::string &method, const json_spirit::Array ¶ms) const; + UniValue execute(const std::string &method, const UniValue ¶ms) const; }; extern const CRPCTable tableRPC; @@ -134,154 +156,155 @@ extern const CRPCTable tableRPC; * Utilities: convert hex-encoded Values * (throws error if not hex). */ -extern uint256 ParseHashV(const json_spirit::Value& v, std::string strName); -extern uint256 ParseHashO(const json_spirit::Object& o, std::string strKey); -extern std::vector ParseHexV(const json_spirit::Value& v, std::string strName); -extern std::vector ParseHexO(const json_spirit::Object& o, std::string strKey); - -extern void InitRPCMining(); -extern void ShutdownRPCMining(); +extern uint256 ParseHashV(const UniValue& v, std::string strName); +extern uint256 ParseHashO(const UniValue& o, std::string strKey); +extern std::vector ParseHexV(const UniValue& v, std::string strName); +extern std::vector ParseHexO(const UniValue& o, std::string strKey); extern int64_t nWalletUnlockTime; -extern CAmount AmountFromValue(const json_spirit::Value& value); -extern json_spirit::Value ValueFromAmount(const CAmount& amount); +extern CAmount AmountFromValue(const UniValue& value); +extern UniValue ValueFromAmount(const CAmount& amount); extern double GetDifficulty(const CBlockIndex* blockindex = NULL); extern double GetNetworkDifficulty(const CBlockIndex* blockindex = NULL); extern std::string HelpRequiringPassphrase(); -extern std::string HelpExampleCli(std::string methodname, std::string args); -extern std::string HelpExampleRpc(std::string methodname, std::string args); +extern std::string HelpExampleCli(const std::string& methodname, const std::string& args); +extern std::string HelpExampleRpc(const std::string& methodname, const std::string& args); extern void EnsureWalletIsUnlocked(); -extern json_spirit::Value getconnectioncount(const json_spirit::Array& params, bool fHelp); // in rpcnet.cpp -extern json_spirit::Value getpeerinfo(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value ping(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value addnode(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value getaddednodeinfo(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value getnettotals(const json_spirit::Array& params, bool fHelp); +extern UniValue getconnectioncount(const UniValue& params, bool fHelp); // in rpcnet.cpp +extern UniValue getpeerinfo(const UniValue& params, bool fHelp); +extern UniValue ping(const UniValue& params, bool fHelp); +extern UniValue addnode(const UniValue& params, bool fHelp); +extern UniValue disconnectnode(const UniValue& params, bool fHelp); +extern UniValue getaddednodeinfo(const UniValue& params, bool fHelp); +extern UniValue getnettotals(const UniValue& params, bool fHelp); +extern UniValue setban(const UniValue& params, bool fHelp); +extern UniValue listbanned(const UniValue& params, bool fHelp); +extern UniValue clearbanned(const UniValue& params, bool fHelp); -extern json_spirit::Value dumpprivkey(const json_spirit::Array& params, bool fHelp); // in rpcdump.cpp -extern json_spirit::Value importprivkey(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value importaddress(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value dumpwallet(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value importwallet(const json_spirit::Array& params, bool fHelp); +extern UniValue dumpprivkey(const UniValue& params, bool fHelp); // in rpcdump.cpp +extern UniValue importprivkey(const UniValue& params, bool fHelp); +extern UniValue importaddress(const UniValue& params, bool fHelp); +extern UniValue dumpwallet(const UniValue& params, bool fHelp); +extern UniValue importwallet(const UniValue& params, bool fHelp); -extern json_spirit::Value getgenerate(const json_spirit::Array& params, bool fHelp); // in rpcmining.cpp -extern json_spirit::Value setgenerate(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value generate(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value getlocalsolps(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value getnetworksolps(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value getnetworkhashps(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value getmininginfo(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value prioritisetransaction(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value getblocktemplate(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value submitblock(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value estimatefee(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value estimatepriority(const json_spirit::Array& params, bool fHelp); +extern UniValue getgenerate(const UniValue& params, bool fHelp); // in rpcmining.cpp +extern UniValue setgenerate(const UniValue& params, bool fHelp); +extern UniValue generate(const UniValue& params, bool fHelp); +extern UniValue getlocalsolps(const UniValue& params, bool fHelp); +extern UniValue getnetworksolps(const UniValue& params, bool fHelp); +extern UniValue getnetworkhashps(const UniValue& params, bool fHelp); +extern UniValue getmininginfo(const UniValue& params, bool fHelp); +extern UniValue prioritisetransaction(const UniValue& params, bool fHelp); +extern UniValue getblocktemplate(const UniValue& params, bool fHelp); +extern UniValue submitblock(const UniValue& params, bool fHelp); +extern UniValue estimatefee(const UniValue& params, bool fHelp); +extern UniValue estimatepriority(const UniValue& params, bool fHelp); -extern json_spirit::Value getnewaddress(const json_spirit::Array& params, bool fHelp); // in rpcwallet.cpp -extern json_spirit::Value getaccountaddress(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value getrawchangeaddress(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value setaccount(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value getaccount(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value getaddressesbyaccount(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value sendtoaddress(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value signmessage(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value verifymessage(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value getreceivedbyaddress(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value getreceivedbyaccount(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value getbalance(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value getunconfirmedbalance(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value movecmd(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value sendfrom(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value sendmany(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value addmultisigaddress(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value createmultisig(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value listreceivedbyaddress(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value listreceivedbyaccount(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value listtransactions(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value listaddressgroupings(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value listaccounts(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value listsinceblock(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value gettransaction(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value backupwallet(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value keypoolrefill(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value walletpassphrase(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value walletpassphrasechange(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value walletlock(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value encryptwallet(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value validateaddress(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value getinfo(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value getwalletinfo(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value getblockchaininfo(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value getnetworkinfo(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value setmocktime(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value resendwallettransactions(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value zc_benchmark(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value zc_raw_keygen(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value zc_raw_joinsplit(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value zc_raw_receive(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value zc_sample_joinsplit(const json_spirit::Array& params, bool fHelp); +extern UniValue getnewaddress(const UniValue& params, bool fHelp); // in rpcwallet.cpp +extern UniValue getaccountaddress(const UniValue& params, bool fHelp); +extern UniValue getrawchangeaddress(const UniValue& params, bool fHelp); +extern UniValue setaccount(const UniValue& params, bool fHelp); +extern UniValue getaccount(const UniValue& params, bool fHelp); +extern UniValue getaddressesbyaccount(const UniValue& params, bool fHelp); +extern UniValue sendtoaddress(const UniValue& params, bool fHelp); +extern UniValue signmessage(const UniValue& params, bool fHelp); +extern UniValue verifymessage(const UniValue& params, bool fHelp); +extern UniValue getreceivedbyaddress(const UniValue& params, bool fHelp); +extern UniValue getreceivedbyaccount(const UniValue& params, bool fHelp); +extern UniValue getbalance(const UniValue& params, bool fHelp); +extern UniValue getunconfirmedbalance(const UniValue& params, bool fHelp); +extern UniValue movecmd(const UniValue& params, bool fHelp); +extern UniValue sendfrom(const UniValue& params, bool fHelp); +extern UniValue sendmany(const UniValue& params, bool fHelp); +extern UniValue addmultisigaddress(const UniValue& params, bool fHelp); +extern UniValue createmultisig(const UniValue& params, bool fHelp); +extern UniValue listreceivedbyaddress(const UniValue& params, bool fHelp); +extern UniValue listreceivedbyaccount(const UniValue& params, bool fHelp); +extern UniValue listtransactions(const UniValue& params, bool fHelp); +extern UniValue listaddressgroupings(const UniValue& params, bool fHelp); +extern UniValue listaccounts(const UniValue& params, bool fHelp); +extern UniValue listsinceblock(const UniValue& params, bool fHelp); +extern UniValue gettransaction(const UniValue& params, bool fHelp); +extern UniValue backupwallet(const UniValue& params, bool fHelp); +extern UniValue keypoolrefill(const UniValue& params, bool fHelp); +extern UniValue walletpassphrase(const UniValue& params, bool fHelp); +extern UniValue walletpassphrasechange(const UniValue& params, bool fHelp); +extern UniValue walletlock(const UniValue& params, bool fHelp); +extern UniValue encryptwallet(const UniValue& params, bool fHelp); +extern UniValue validateaddress(const UniValue& params, bool fHelp); +extern UniValue getinfo(const UniValue& params, bool fHelp); +extern UniValue getwalletinfo(const UniValue& params, bool fHelp); +extern UniValue getblockchaininfo(const UniValue& params, bool fHelp); +extern UniValue getnetworkinfo(const UniValue& params, bool fHelp); +extern UniValue setmocktime(const UniValue& params, bool fHelp); +extern UniValue resendwallettransactions(const UniValue& params, bool fHelp); +extern UniValue zc_benchmark(const UniValue& params, bool fHelp); +extern UniValue zc_raw_keygen(const UniValue& params, bool fHelp); +extern UniValue zc_raw_joinsplit(const UniValue& params, bool fHelp); +extern UniValue zc_raw_receive(const UniValue& params, bool fHelp); +extern UniValue zc_sample_joinsplit(const UniValue& params, bool fHelp); -extern json_spirit::Value getrawtransaction(const json_spirit::Array& params, bool fHelp); // in rcprawtransaction.cpp -extern json_spirit::Value listunspent(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value lockunspent(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value listlockunspent(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value createrawtransaction(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value decoderawtransaction(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value decodescript(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value signrawtransaction(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value sendrawtransaction(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value gettxoutproof(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value verifytxoutproof(const json_spirit::Array& params, bool fHelp); +extern UniValue getrawtransaction(const UniValue& params, bool fHelp); // in rcprawtransaction.cpp +extern UniValue listunspent(const UniValue& params, bool fHelp); +extern UniValue lockunspent(const UniValue& params, bool fHelp); +extern UniValue listlockunspent(const UniValue& params, bool fHelp); +extern UniValue createrawtransaction(const UniValue& params, bool fHelp); +extern UniValue decoderawtransaction(const UniValue& params, bool fHelp); +extern UniValue decodescript(const UniValue& params, bool fHelp); +extern UniValue fundrawtransaction(const UniValue& params, bool fHelp); +extern UniValue signrawtransaction(const UniValue& params, bool fHelp); +extern UniValue sendrawtransaction(const UniValue& params, bool fHelp); +extern UniValue gettxoutproof(const UniValue& params, bool fHelp); +extern UniValue verifytxoutproof(const UniValue& params, bool fHelp); -extern json_spirit::Value getblockcount(const json_spirit::Array& params, bool fHelp); // in rpcblockchain.cpp -extern json_spirit::Value getbestblockhash(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value getdifficulty(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value settxfee(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value getmempoolinfo(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value getrawmempool(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value getblockhash(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value getblock(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value gettxoutsetinfo(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value gettxout(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value notaries(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value minerids(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value kvsearch(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value kvupdate(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value paxprice(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value paxpending(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value paxprices(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value paxdeposit(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value paxwithdraw(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value verifychain(const json_spirit::Array& params, bool fHelp); -//extern json_spirit::Value getchaintips(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value invalidateblock(const json_spirit::Array& params, bool fHelp); -extern json_spirit::Value reconsiderblock(const json_spirit::Array& params, bool fHelp); +extern UniValue getblockcount(const UniValue& params, bool fHelp); // in rpcblockchain.cpp +extern UniValue getbestblockhash(const UniValue& params, bool fHelp); +extern UniValue getdifficulty(const UniValue& params, bool fHelp); +extern UniValue settxfee(const UniValue& params, bool fHelp); +extern UniValue getmempoolinfo(const UniValue& params, bool fHelp); +extern UniValue getrawmempool(const UniValue& params, bool fHelp); +extern UniValue getblockhash(const UniValue& params, bool fHelp); +extern UniValue getblockheader(const UniValue& params, bool fHelp); +extern UniValue getblock(const UniValue& params, bool fHelp); +extern UniValue gettxoutsetinfo(const UniValue& params, bool fHelp); +extern UniValue gettxout(const UniValue& params, bool fHelp); +extern UniValue verifychain(const UniValue& params, bool fHelp); +extern UniValue getchaintips(const UniValue& params, bool fHelp); +extern UniValue invalidateblock(const UniValue& params, bool fHelp); +extern UniValue reconsiderblock(const UniValue& params, bool fHelp); -extern json_spirit::Value getblocksubsidy(const json_spirit::Array& params, bool fHelp); +extern UniValue getblocksubsidy(const UniValue& params, bool fHelp); -extern json_spirit::Value z_exportkey(const json_spirit::Array& params, bool fHelp); // in rpcdump.cpp -extern json_spirit::Value z_importkey(const json_spirit::Array& params, bool fHelp); // in rpcdump.cpp -extern json_spirit::Value z_getnewaddress(const json_spirit::Array& params, bool fHelp); // in rpcwallet.cpp -extern json_spirit::Value z_listaddresses(const json_spirit::Array& params, bool fHelp); // in rpcwallet.cpp -extern json_spirit::Value z_exportwallet(const json_spirit::Array& params, bool fHelp); // in rpcdump.cpp -extern json_spirit::Value z_importwallet(const json_spirit::Array& params, bool fHelp); // in rpcdump.cpp -extern json_spirit::Value z_listreceivedbyaddress(const json_spirit::Array& params, bool fHelp); // in rpcwallet.cpp -extern json_spirit::Value z_getbalance(const json_spirit::Array& params, bool fHelp); // in rpcwallet.cpp -extern json_spirit::Value z_gettotalbalance(const json_spirit::Array& params, bool fHelp); // in rpcwallet.cpp -extern json_spirit::Value z_sendmany(const json_spirit::Array& params, bool fHelp); // in rpcwallet.cpp -extern json_spirit::Value z_getoperationstatus(const json_spirit::Array& params, bool fHelp); // in rpcwallet.cpp -extern json_spirit::Value z_getoperationresult(const json_spirit::Array& params, bool fHelp); // in rpcwallet.cpp -extern json_spirit::Value z_listoperationids(const json_spirit::Array& params, bool fHelp); // in rpcwallet.cpp -extern json_spirit::Value z_validateaddress(const json_spirit::Array& params, bool fHelp); // in rpcmisc.cpp +extern UniValue z_exportkey(const UniValue& params, bool fHelp); // in rpcdump.cpp +extern UniValue z_importkey(const UniValue& params, bool fHelp); // in rpcdump.cpp +extern UniValue z_getnewaddress(const UniValue& params, bool fHelp); // in rpcwallet.cpp +extern UniValue z_listaddresses(const UniValue& params, bool fHelp); // in rpcwallet.cpp +extern UniValue z_exportwallet(const UniValue& params, bool fHelp); // in rpcdump.cpp +extern UniValue z_importwallet(const UniValue& params, bool fHelp); // in rpcdump.cpp +extern UniValue z_listreceivedbyaddress(const UniValue& params, bool fHelp); // in rpcwallet.cpp +extern UniValue z_getbalance(const UniValue& params, bool fHelp); // in rpcwallet.cpp +extern UniValue z_gettotalbalance(const UniValue& params, bool fHelp); // in rpcwallet.cpp +extern UniValue z_sendmany(const UniValue& params, bool fHelp); // in rpcwallet.cpp +extern UniValue z_getoperationstatus(const UniValue& params, bool fHelp); // in rpcwallet.cpp +extern UniValue z_getoperationresult(const UniValue& params, bool fHelp); // in rpcwallet.cpp +extern UniValue z_listoperationids(const UniValue& params, bool fHelp); // in rpcwallet.cpp +extern UniValue z_validateaddress(const UniValue& params, bool fHelp); // in rpcmisc.cpp +extern json_spirit::Value notaries(const UniValue& params, bool fHelp); +extern json_spirit::Value minerids(const UniValue& params, bool fHelp); +extern json_spirit::Value kvsearch(const UniValue& params, bool fHelp); +extern json_spirit::Value kvupdate(const UniValue& params, bool fHelp); +extern json_spirit::Value paxprice(const UniValue& params, bool fHelp); +extern json_spirit::Value paxpending(const UniValue& params, bool fHelp); +extern json_spirit::Value paxprices(const UniValue& params, bool fHelp); +extern json_spirit::Value paxdeposit(const UniValue& params, bool fHelp); +extern json_spirit::Value paxwithdraw(const UniValue& params, bool fHelp); -// in rest.cpp -extern bool HTTPReq_REST(AcceptedConnection *conn, - const std::string& strURI, - const std::string& strRequest, - const std::map& mapHeaders, - bool fRun); +bool StartRPC(); +void InterruptRPC(); +void StopRPC(); +std::string JSONRPCExecBatch(const UniValue& vReq); #endif // BITCOIN_RPCSERVER_H diff --git a/src/script/sign.cpp b/src/script/sign.cpp index 3f622a056..75e6c6d9d 100644 --- a/src/script/sign.cpp +++ b/src/script/sign.cpp @@ -281,3 +281,39 @@ CScript CombineSignatures(const CScript& scriptPubKey, const BaseSignatureChecke return CombineSignatures(scriptPubKey, checker, txType, vSolutions, stack1, stack2); } + +namespace { +/** Dummy signature checker which accepts all signatures. */ +class DummySignatureChecker : public BaseSignatureChecker +{ +public: + DummySignatureChecker() {} + + bool CheckSig(const std::vector& scriptSig, const std::vector& vchPubKey, const CScript& scriptCode) const + { + return true; + } +}; +const DummySignatureChecker dummyChecker; +} + +const BaseSignatureChecker& DummySignatureCreator::Checker() const +{ + return dummyChecker; +} + +bool DummySignatureCreator::CreateSig(std::vector& vchSig, const CKeyID& keyid, const CScript& scriptCode) const +{ + // Create a dummy signature that is a valid DER-encoding + vchSig.assign(72, '\000'); + vchSig[0] = 0x30; + vchSig[1] = 69; + vchSig[2] = 0x02; + vchSig[3] = 33; + vchSig[4] = 0x01; + vchSig[4 + 33] = 0x02; + vchSig[5 + 33] = 32; + vchSig[6 + 33] = 0x01; + vchSig[6 + 33 + 32] = SIGHASH_ALL; + return true; +} diff --git a/src/script/sign.h b/src/script/sign.h index 0c4cf61e5..13f45007d 100644 --- a/src/script/sign.h +++ b/src/script/sign.h @@ -43,6 +43,14 @@ public: bool CreateSig(std::vector& vchSig, const CKeyID& keyid, const CScript& scriptCode) const; }; +/** A signature creator that just produces 72-byte empty signatyres. */ +class DummySignatureCreator : public BaseSignatureCreator { +public: + DummySignatureCreator(const CKeyStore* keystoreIn) : BaseSignatureCreator(keystoreIn) {} + const BaseSignatureChecker& Checker() const; + bool CreateSig(std::vector& vchSig, const CKeyID& keyid, const CScript& scriptCode) const; +}; + /** Produce a script signature using a generic signature creator. */ bool ProduceSignature(const BaseSignatureCreator& creator, const CScript& scriptPubKey, CScript& scriptSig); diff --git a/src/sendalert.cpp b/src/sendalert.cpp index aed9b7682..fbe6dc03a 100644 --- a/src/sendalert.cpp +++ b/src/sendalert.cpp @@ -71,8 +71,8 @@ void ThreadSendAlert() // CAlert alert; alert.nRelayUntil = GetTime() + 15 * 60; - alert.nExpiration = GetTime() + 365 * 60 * 60; - alert.nID = 1000; // use https://github.com/zcash/zcash/wiki/specification#assigned-numbers to keep track of alert IDs + alert.nExpiration = GetTime() + 90 * 24 * 60 * 60; + alert.nID = 1001; // use https://github.com/zcash/zcash/wiki/specification#assigned-numbers to keep track of alert IDs alert.nCancel = 0; // cancels previous messages up to this ID number // These versions are protocol versions @@ -86,13 +86,19 @@ void ThreadSendAlert() // 2000 for longer invalid proof-of-work chain // Higher numbers mean higher priority // 4000 or higher will put the RPC into safe mode - alert.nPriority = 5000; + alert.nPriority = 1500; alert.strComment = ""; - alert.strStatusBar = "URGENT: Upgrade required: see https://z.cash"; - alert.strRPCError = "URGENT: Upgrade required: see https://z.cash"; + alert.strStatusBar = "Your client is out of date and potentially vulnerable to denial of service. Please update to the most recent version of Zcash (1.0.5). More info at: https://z.cash/support/security.html"; + alert.strRPCError = "Your client is out of date and potentially vulnerable to denial of service. Please update to the most recent version of Zcash (1.0.5). More info at: https://z.cash/support/security.html"; // Set specific client version/versions here. If setSubVer is empty, no filtering on subver is done: // alert.setSubVer.insert(std::string("/MagicBean:0.7.2/")); + alert.setSubVer.insert(std::string("/MagicBean:1.0.3/")); + + // Sanity check + assert(alert.strComment.length() <= 65536); // max length in alert.h + assert(alert.strStatusBar.length() <= 256); + assert(alert.strRPCError.length() <= 256); // Sign const CChainParams& chainparams = Params(); diff --git a/src/serialize.h b/src/serialize.h index 34d41bf84..f776d6d99 100644 --- a/src/serialize.h +++ b/src/serialize.h @@ -238,16 +238,16 @@ template inline void Unserialize(Stream& s, bool& a, int, int=0 /** * Compact Size * size < 253 -- 1 byte - * size <= USHRT_MAX -- 3 bytes (253 + 2 bytes) - * size <= UINT_MAX -- 5 bytes (254 + 4 bytes) - * size > UINT_MAX -- 9 bytes (255 + 8 bytes) + * size <= 0xFFFF -- 3 bytes (253 + 2 bytes) + * size <= 0xFFFFFFFF -- 5 bytes (254 + 4 bytes) + * size > 0xFFFFFFFF -- 9 bytes (255 + 8 bytes) */ inline unsigned int GetSizeOfCompactSize(uint64_t nSize) { - if (nSize < 253) return sizeof(unsigned char); - else if (nSize <= std::numeric_limits::max()) return sizeof(unsigned char) + sizeof(unsigned short); - else if (nSize <= std::numeric_limits::max()) return sizeof(unsigned char) + sizeof(unsigned int); - else return sizeof(unsigned char) + sizeof(uint64_t); + if (nSize < 253) return 1; + else if (nSize <= 0xFFFFu) return 3; + else if (nSize <= 0xFFFFFFFFu) return 5; + else return 9; } template @@ -257,12 +257,12 @@ void WriteCompactSize(Stream& os, uint64_t nSize) { ser_writedata8(os, nSize); } - else if (nSize <= std::numeric_limits::max()) + else if (nSize <= 0xFFFFu) { ser_writedata8(os, 253); ser_writedata16(os, nSize); } - else if (nSize <= std::numeric_limits::max()) + else if (nSize <= 0xFFFFFFFFu) { ser_writedata8(os, 254); ser_writedata32(os, nSize); @@ -272,7 +272,6 @@ void WriteCompactSize(Stream& os, uint64_t nSize) ser_writedata8(os, 255); ser_writedata64(os, nSize); } - return; } template diff --git a/src/streams.h b/src/streams.h index 9b678b3c0..81b58fd05 100644 --- a/src/streams.h +++ b/src/streams.h @@ -295,8 +295,8 @@ public: return (*this); } - void GetAndClear(CSerializeData &data) { - data.insert(data.end(), begin(), end()); + void GetAndClear(CSerializeData &d) { + d.insert(d.end(), begin(), end()); clear(); } }; diff --git a/src/support/events.h b/src/support/events.h new file mode 100644 index 000000000..4f2f3cf9e --- /dev/null +++ b/src/support/events.h @@ -0,0 +1,56 @@ +// Copyright (c) 2016 The Bitcoin Core developers +// Distributed under the MIT software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + +#ifndef BITCOIN_SUPPORT_EVENTS_H +#define BITCOIN_SUPPORT_EVENTS_H + +#include +#include + +#include +#include + +#define MAKE_RAII(type) \ +/* deleter */\ +struct type##_deleter {\ + void operator()(struct type* ob) {\ + type##_free(ob);\ + }\ +};\ +/* unique ptr typedef */\ +typedef std::unique_ptr raii_##type + +MAKE_RAII(event_base); +MAKE_RAII(event); +MAKE_RAII(evhttp); +MAKE_RAII(evhttp_request); +MAKE_RAII(evhttp_connection); + +raii_event_base obtain_event_base() { + auto result = raii_event_base(event_base_new()); + if (!result.get()) + throw std::runtime_error("cannot create event_base"); + return result; +} + +raii_event obtain_event(struct event_base* base, evutil_socket_t s, short events, event_callback_fn cb, void* arg) { + return raii_event(event_new(base, s, events, cb, arg)); +} + +raii_evhttp obtain_evhttp(struct event_base* base) { + return raii_evhttp(evhttp_new(base)); +} + +raii_evhttp_request obtain_evhttp_request(void(*cb)(struct evhttp_request *, void *), void *arg) { + return raii_evhttp_request(evhttp_request_new(cb, arg)); +} + +raii_evhttp_connection obtain_evhttp_connection_base(struct event_base* base, std::string host, uint16_t port) { + auto result = raii_evhttp_connection(evhttp_connection_base_new(base, NULL, host.c_str(), port)); + if (!result.get()) + throw std::runtime_error("create connection failed"); + return result; +} + +#endif // BITCOIN_SUPPORT_EVENTS_H diff --git a/src/sync.cpp b/src/sync.cpp index a42293996..1837e8d53 100644 --- a/src/sync.cpp +++ b/src/sync.cpp @@ -33,20 +33,22 @@ void PrintLockContention(const char* pszName, const char* pszFile, int nLine) // struct CLockLocation { - CLockLocation(const char* pszName, const char* pszFile, int nLine) + CLockLocation(const char* pszName, const char* pszFile, int nLine, bool fTryIn) { mutexName = pszName; sourceFile = pszFile; sourceLine = nLine; + fTry = fTryIn; } std::string ToString() const { - return mutexName + " " + sourceFile + ":" + itostr(sourceLine); + return mutexName + " " + sourceFile + ":" + itostr(sourceLine) + (fTry ? " (TRY)" : ""); } std::string MutexName() const { return mutexName; } + bool fTry; private: std::string mutexName; std::string sourceFile; @@ -62,23 +64,52 @@ static boost::thread_specific_ptr lockstack; static void potential_deadlock_detected(const std::pair& mismatch, const LockStack& s1, const LockStack& s2) { + // We attempt to not assert on probably-not deadlocks by assuming that + // a try lock will immediately have otherwise bailed if it had + // failed to get the lock + // We do this by, for the locks which triggered the potential deadlock, + // in either lockorder, checking that the second of the two which is locked + // is only a TRY_LOCK, ignoring locks if they are reentrant. + bool firstLocked = false; + bool secondLocked = false; + bool onlyMaybeDeadlock = false; + LogPrintf("POTENTIAL DEADLOCK DETECTED\n"); LogPrintf("Previous lock order was:\n"); BOOST_FOREACH (const PAIRTYPE(void*, CLockLocation) & i, s2) { - if (i.first == mismatch.first) + if (i.first == mismatch.first) { LogPrintf(" (1)"); - if (i.first == mismatch.second) + if (!firstLocked && secondLocked && i.second.fTry) + onlyMaybeDeadlock = true; + firstLocked = true; + } + if (i.first == mismatch.second) { LogPrintf(" (2)"); + if (!secondLocked && firstLocked && i.second.fTry) + onlyMaybeDeadlock = true; + secondLocked = true; + } LogPrintf(" %s\n", i.second.ToString()); } + firstLocked = false; + secondLocked = false; LogPrintf("Current lock order is:\n"); BOOST_FOREACH (const PAIRTYPE(void*, CLockLocation) & i, s1) { - if (i.first == mismatch.first) + if (i.first == mismatch.first) { LogPrintf(" (1)"); - if (i.first == mismatch.second) + if (!firstLocked && secondLocked && i.second.fTry) + onlyMaybeDeadlock = true; + firstLocked = true; + } + if (i.first == mismatch.second) { LogPrintf(" (2)"); + if (!secondLocked && firstLocked && i.second.fTry) + onlyMaybeDeadlock = true; + secondLocked = true; + } LogPrintf(" %s\n", i.second.ToString()); } + assert(onlyMaybeDeadlock); } static void push_lock(void* c, const CLockLocation& locklocation, bool fTry) @@ -101,10 +132,8 @@ static void push_lock(void* c, const CLockLocation& locklocation, bool fTry) lockorders[p1] = (*lockstack); std::pair p2 = std::make_pair(c, i.first); - if (lockorders.count(p2)) { + if (lockorders.count(p2)) potential_deadlock_detected(p1, lockorders[p2], lockorders[p1]); - break; - } } } dd_mutex.unlock(); @@ -119,7 +148,7 @@ static void pop_lock() void EnterCritical(const char* pszName, const char* pszFile, int nLine, void* cs, bool fTry) { - push_lock(cs, CLockLocation(pszName, pszFile, nLine), fTry); + push_lock(cs, CLockLocation(pszName, pszFile, nLine, fTry), fTry); } void LeaveCritical() diff --git a/src/sync.h b/src/sync.h index 5c1516534..68a944308 100644 --- a/src/sync.h +++ b/src/sync.h @@ -101,7 +101,7 @@ void PrintLockContention(const char* pszName, const char* pszFile, int nLine); /** Wrapper around boost::unique_lock */ template -class CMutexLock +class SCOPED_LOCKABLE CMutexLock { private: boost::unique_lock lock; @@ -129,7 +129,7 @@ private: } public: - CMutexLock(Mutex& mutexIn, const char* pszName, const char* pszFile, int nLine, bool fTry = false) : lock(mutexIn, boost::defer_lock) + CMutexLock(Mutex& mutexIn, const char* pszName, const char* pszFile, int nLine, bool fTry = false) EXCLUSIVE_LOCK_FUNCTION(mutexIn) : lock(mutexIn, boost::defer_lock) { if (fTry) TryEnter(pszName, pszFile, nLine); @@ -137,7 +137,7 @@ public: Enter(pszName, pszFile, nLine); } - CMutexLock(Mutex* pmutexIn, const char* pszName, const char* pszFile, int nLine, bool fTry = false) + CMutexLock(Mutex* pmutexIn, const char* pszName, const char* pszFile, int nLine, bool fTry = false) EXCLUSIVE_LOCK_FUNCTION(pmutexIn) { if (!pmutexIn) return; @@ -148,7 +148,7 @@ public: Enter(pszName, pszFile, nLine); } - ~CMutexLock() + ~CMutexLock() UNLOCK_FUNCTION() { if (lock.owns_lock()) LeaveCritical(); diff --git a/src/test/Checkpoints_tests.cpp b/src/test/Checkpoints_tests.cpp index c32a424f1..d15203945 100644 --- a/src/test/Checkpoints_tests.cpp +++ b/src/test/Checkpoints_tests.cpp @@ -23,21 +23,7 @@ BOOST_FIXTURE_TEST_SUITE(Checkpoints_tests, BasicTestingSetup) BOOST_AUTO_TEST_CASE(sanity) { const Checkpoints::CCheckpointData& checkpoints = Params(CBaseChainParams::MAIN).Checkpoints(); - uint256 p11111 = uint256S("0x0000000069e244f73d78e8fd29ba2fd2ed618bd6fa2ee92559f542fdb26e7c1d"); - uint256 p134444 = uint256S("0x00000000000005b12ffd4cd315cd34ffd4a594f430ac814c91184a0d42d2b0fe"); - BOOST_CHECK(Checkpoints::CheckBlock(checkpoints, 11111, p11111)); - BOOST_CHECK(Checkpoints::CheckBlock(checkpoints, 134444, p134444)); - - - // Wrong hashes at checkpoints should fail: - BOOST_CHECK(!Checkpoints::CheckBlock(checkpoints, 11111, p134444)); - BOOST_CHECK(!Checkpoints::CheckBlock(checkpoints, 134444, p11111)); - - // ... but any hash not at a checkpoint should succeed: - BOOST_CHECK(Checkpoints::CheckBlock(checkpoints, 11111+1, p134444)); - BOOST_CHECK(Checkpoints::CheckBlock(checkpoints, 134444+1, p11111)); - BOOST_CHECK(Checkpoints::GetTotalBlocksEstimate(checkpoints) >= 134444); -} +} */ BOOST_AUTO_TEST_SUITE_END() diff --git a/src/test/alert_tests.cpp b/src/test/alert_tests.cpp index 9a861f182..ab3841c48 100644 --- a/src/test/alert_tests.cpp +++ b/src/test/alert_tests.cpp @@ -27,7 +27,6 @@ #include #include #include -#include "json/json_spirit_reader_template.h" #include "key.h" #include "alertkeys.h" diff --git a/src/test/base58_tests.cpp b/src/test/base58_tests.cpp index f07dd7a7d..361d8b8ea 100644 --- a/src/test/base58_tests.cpp +++ b/src/test/base58_tests.cpp @@ -17,23 +17,20 @@ #include #include -#include "json/json_spirit_reader_template.h" -#include "json/json_spirit_utils.h" -#include "json/json_spirit_writer_template.h" -using namespace json_spirit; -extern Array read_json(const std::string& jsondata); +#include + +extern UniValue read_json(const std::string& jsondata); BOOST_FIXTURE_TEST_SUITE(base58_tests, BasicTestingSetup) // Goal: test low-level base58 encoding functionality BOOST_AUTO_TEST_CASE(base58_EncodeBase58) { - Array tests = read_json(std::string(json_tests::base58_encode_decode, json_tests::base58_encode_decode + sizeof(json_tests::base58_encode_decode))); - BOOST_FOREACH(Value& tv, tests) - { - Array test = tv.get_array(); - std::string strTest = write_string(tv, false); + UniValue tests = read_json(std::string(json_tests::base58_encode_decode, json_tests::base58_encode_decode + sizeof(json_tests::base58_encode_decode))); + for (size_t idx = 0; idx < tests.size(); idx++) { + UniValue test = tests[idx]; + std::string strTest = test.write(); if (test.size() < 2) // Allow for extra stuff (useful for comments) { BOOST_ERROR("Bad test: " << strTest); @@ -50,13 +47,12 @@ BOOST_AUTO_TEST_CASE(base58_EncodeBase58) // Goal: test low-level base58 decoding functionality BOOST_AUTO_TEST_CASE(base58_DecodeBase58) { - Array tests = read_json(std::string(json_tests::base58_encode_decode, json_tests::base58_encode_decode + sizeof(json_tests::base58_encode_decode))); + UniValue tests = read_json(std::string(json_tests::base58_encode_decode, json_tests::base58_encode_decode + sizeof(json_tests::base58_encode_decode))); std::vector result; - BOOST_FOREACH(Value& tv, tests) - { - Array test = tv.get_array(); - std::string strTest = write_string(tv, false); + for (size_t idx = 0; idx < tests.size(); idx++) { + UniValue test = tests[idx]; + std::string strTest = test.write(); if (test.size() < 2) // Allow for extra stuff (useful for comments) { BOOST_ERROR("Bad test: " << strTest); @@ -124,16 +120,15 @@ public: // Goal: check that parsed keys match test payload BOOST_AUTO_TEST_CASE(base58_keys_valid_parse) { - Array tests = read_json(std::string(json_tests::base58_keys_valid, json_tests::base58_keys_valid + sizeof(json_tests::base58_keys_valid))); + UniValue tests = read_json(std::string(json_tests::base58_keys_valid, json_tests::base58_keys_valid + sizeof(json_tests::base58_keys_valid))); std::vector result; CBitcoinSecret secret; CBitcoinAddress addr; SelectParams(CBaseChainParams::MAIN); - BOOST_FOREACH(Value& tv, tests) - { - Array test = tv.get_array(); - std::string strTest = write_string(tv, false); + for (size_t idx = 0; idx < tests.size(); idx++) { + UniValue test = tests[idx]; + std::string strTest = test.write(); if (test.size() < 3) // Allow for extra stuff (useful for comments) { BOOST_ERROR("Bad test: " << strTest); @@ -141,7 +136,7 @@ BOOST_AUTO_TEST_CASE(base58_keys_valid_parse) } std::string exp_base58string = test[0].get_str(); std::vector exp_payload = ParseHex(test[1].get_str()); - const Object &metadata = test[2].get_obj(); + const UniValue &metadata = test[2].get_obj(); bool isPrivkey = find_value(metadata, "isPrivkey").get_bool(); bool isTestnet = find_value(metadata, "isTestnet").get_bool(); if (isTestnet) @@ -183,12 +178,12 @@ BOOST_AUTO_TEST_CASE(base58_keys_valid_parse) // Goal: check that generated keys match test vectors BOOST_AUTO_TEST_CASE(base58_keys_valid_gen) { - Array tests = read_json(std::string(json_tests::base58_keys_valid, json_tests::base58_keys_valid + sizeof(json_tests::base58_keys_valid))); + UniValue tests = read_json(std::string(json_tests::base58_keys_valid, json_tests::base58_keys_valid + sizeof(json_tests::base58_keys_valid))); std::vector result; - BOOST_FOREACH(Value& tv, tests) - { - Array test = tv.get_array(); - std::string strTest = write_string(tv, false); + + for (size_t idx = 0; idx < tests.size(); idx++) { + UniValue test = tests[idx]; + std::string strTest = test.write(); if (test.size() < 3) // Allow for extra stuff (useful for comments) { BOOST_ERROR("Bad test: " << strTest); @@ -196,7 +191,7 @@ BOOST_AUTO_TEST_CASE(base58_keys_valid_gen) } std::string exp_base58string = test[0].get_str(); std::vector exp_payload = ParseHex(test[1].get_str()); - const Object &metadata = test[2].get_obj(); + const UniValue &metadata = test[2].get_obj(); bool isPrivkey = find_value(metadata, "isPrivkey").get_bool(); bool isTestnet = find_value(metadata, "isTestnet").get_bool(); if (isTestnet) @@ -251,15 +246,14 @@ BOOST_AUTO_TEST_CASE(base58_keys_valid_gen) // Goal: check that base58 parsing code is robust against a variety of corrupted data BOOST_AUTO_TEST_CASE(base58_keys_invalid) { - Array tests = read_json(std::string(json_tests::base58_keys_invalid, json_tests::base58_keys_invalid + sizeof(json_tests::base58_keys_invalid))); // Negative testcases + UniValue tests = read_json(std::string(json_tests::base58_keys_invalid, json_tests::base58_keys_invalid + sizeof(json_tests::base58_keys_invalid))); // Negative testcases std::vector result; CBitcoinSecret secret; CBitcoinAddress addr; - BOOST_FOREACH(Value& tv, tests) - { - Array test = tv.get_array(); - std::string strTest = write_string(tv, false); + for (size_t idx = 0; idx < tests.size(); idx++) { + UniValue test = tests[idx]; + std::string strTest = test.write(); if (test.size() < 1) // Allow for extra stuff (useful for comments) { BOOST_ERROR("Bad test: " << strTest); diff --git a/src/test/bip32_tests.cpp b/src/test/bip32_tests.cpp index 0d815c27f..69084213a 100644 --- a/src/test/bip32_tests.cpp +++ b/src/test/bip32_tests.cpp @@ -88,12 +88,23 @@ void RunTest(const TestVector &test) { unsigned char data[74]; key.Encode(data); pubkey.Encode(data); + // Test private key CBitcoinExtKey b58key; b58key.SetKey(key); BOOST_CHECK(b58key.ToString() == derive.prv); + + CBitcoinExtKey b58keyDecodeCheck(derive.prv); + CExtKey checkKey = b58keyDecodeCheck.GetKey(); + assert(checkKey == key); //ensure a base58 decoded key also matches + // Test public key CBitcoinExtPubKey b58pubkey; b58pubkey.SetKey(pubkey); BOOST_CHECK(b58pubkey.ToString() == derive.pub); + + CBitcoinExtPubKey b58PubkeyDecodeCheck(derive.pub); + CExtPubKey checkPubKey = b58PubkeyDecodeCheck.GetKey(); + assert(checkPubKey == pubkey); //ensure a base58 decoded pubkey also matches + // Derive new keys CExtKey keyNew; BOOST_CHECK(key.Derive(keyNew, derive.nChild)); diff --git a/src/test/coins_tests.cpp b/src/test/coins_tests.cpp index ea7e81851..2779557ea 100644 --- a/src/test/coins_tests.cpp +++ b/src/test/coins_tests.cpp @@ -143,9 +143,9 @@ public: memusage::DynamicUsage(cacheAnchors) + memusage::DynamicUsage(cacheNullifiers); for (CCoinsMap::iterator it = cacheCoins.begin(); it != cacheCoins.end(); it++) { - ret += memusage::DynamicUsage(it->second.coins); + ret += it->second.coins.DynamicMemoryUsage(); } - BOOST_CHECK_EQUAL(memusage::DynamicUsage(*this), ret); + BOOST_CHECK_EQUAL(DynamicMemoryUsage(), ret); } }; @@ -756,7 +756,7 @@ BOOST_AUTO_TEST_CASE(coins_coinbase_spends) { CTransaction tx2(mtx2); - BOOST_CHECK(NonContextualCheckInputs(tx2, state, cache, false, SCRIPT_VERIFY_NONE, false, Params().GetConsensus())); + BOOST_CHECK(Consensus::CheckTxInputs(tx2, state, cache, 100+COINBASE_MATURITY, Params().GetConsensus())); } mtx2.vout.resize(1); @@ -765,7 +765,7 @@ BOOST_AUTO_TEST_CASE(coins_coinbase_spends) { CTransaction tx2(mtx2); - BOOST_CHECK(!NonContextualCheckInputs(tx2, state, cache, false, SCRIPT_VERIFY_NONE, false, Params().GetConsensus())); + BOOST_CHECK(!Consensus::CheckTxInputs(tx2, state, cache, 100+COINBASE_MATURITY, Params().GetConsensus())); BOOST_CHECK(state.GetRejectReason() == "bad-txns-coinbase-spend-has-transparent-outputs"); } } diff --git a/src/test/data/bitcoin-util-test.json b/src/test/data/bitcoin-util-test.json index e30c53759..c23befe23 100644 --- a/src/test/data/bitcoin-util-test.json +++ b/src/test/data/bitcoin-util-test.json @@ -52,7 +52,7 @@ ["-create", "in=4d49a71ec9da436f71ec4ee231d04f292a29cd316f598bb7068feccabdc59485:0", "set=privatekeys:[\"5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB3kEsreAnchuDf\"]", - "set=prevtxs:[{\"txid\":\"4d49a71ec9da436f71ec4ee231d04f292a29cd316f598bb7068feccabdc59485\",\"vout\":0,\"scriptPubKey\":\"4d49a71ec9da436f71ec4ee231d04f292a29cd316f598bb7068feccabdc59485\"}]", + "set=prevtxs:[{\"txid\":\"4d49a71ec9da436f71ec4ee231d04f292a29cd316f598bb7068feccabdc59485\",\"vout\":0,\"scriptPubKey\":\"76a91491b24bf9f5288532960ac687abb035127b1d28a588ac\"}]", "sign=ALL", "outaddr=0.001:t1Ruz6gK4QPZoPPGpHaieupnnh62mktjQE7"], "output_cmp": "txcreatesign.hex" diff --git a/src/test/data/txcreatesign.hex b/src/test/data/txcreatesign.hex index 56ce28a86..a46fcc88c 100644 --- a/src/test/data/txcreatesign.hex +++ b/src/test/data/txcreatesign.hex @@ -1 +1 @@ -01000000018594c5bdcaec8f06b78b596f31cd292a294fd031e24eec716f43dac91ea7494d0000000000ffffffff01a0860100000000001976a9145834479edbbe0539b31ffd3a8f8ebadc2165ed0188ac00000000 +01000000018594c5bdcaec8f06b78b596f31cd292a294fd031e24eec716f43dac91ea7494d000000008b48304502210096a75056c9e2cc62b7214777b3d2a592cfda7092520126d4ebfcd6d590c99bd8022051bb746359cf98c0603f3004477eac68701132380db8facba19c89dc5ab5c5e201410479be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8ffffffff01a0860100000000001976a9145834479edbbe0539b31ffd3a8f8ebadc2165ed0188ac00000000 diff --git a/src/test/equihash_tests.cpp b/src/test/equihash_tests.cpp index f6fb7ecf5..6f2f0b858 100644 --- a/src/test/equihash_tests.cpp +++ b/src/test/equihash_tests.cpp @@ -3,6 +3,10 @@ // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. +#if defined(HAVE_CONFIG_H) +#include "config/bitcoin-config.h" +#endif + #include "arith_uint256.h" #include "crypto/sha256.h" #include "crypto/equihash.h" @@ -40,6 +44,7 @@ void PrintSolutions(std::stringstream &strm, std::set> sol strm << "\n}"; } +#ifdef ENABLE_MINING void TestEquihashSolvers(unsigned int n, unsigned int k, const std::string &I, const arith_uint256 &nonce, const std::set> &solns) { size_t cBitLen { n/(k+1) }; crypto_generichash_blake2b_state state; @@ -78,6 +83,7 @@ void TestEquihashSolvers(unsigned int n, unsigned int k, const std::string &I, c BOOST_CHECK(retOpt == solns); BOOST_CHECK(retOpt == ret); } +#endif void TestEquihashValidator(unsigned int n, unsigned int k, const std::string &I, const arith_uint256 &nonce, std::vector soln, bool expected) { size_t cBitLen { n/(k+1) }; @@ -95,6 +101,7 @@ void TestEquihashValidator(unsigned int n, unsigned int k, const std::string &I, BOOST_CHECK(isValid == expected); } +#ifdef ENABLE_MINING BOOST_AUTO_TEST_CASE(solver_testvectors) { TestEquihashSolvers(96, 5, "block header", 0, { {976, 126621, 100174, 123328, 38477, 105390, 38834, 90500, 6411, 116489, 51107, 129167, 25557, 92292, 38525, 56514, 1110, 98024, 15426, 74455, 3185, 84007, 24328, 36473, 17427, 129451, 27556, 119967, 31704, 62448, 110460, 117894}, @@ -147,6 +154,7 @@ BOOST_AUTO_TEST_CASE(solver_testvectors) { {8144, 33053, 33933, 77498, 21356, 110495, 42805, 116575, 27360, 48574, 100682, 102629, 50754, 64608, 96899, 120978, 11924, 74422, 49240, 106822, 12787, 68290, 44314, 50005, 38056, 49716, 83299, 95307, 41798, 82309, 94504, 96161} }); } +#endif BOOST_AUTO_TEST_CASE(validator_testvectors) { // Original valid solution diff --git a/src/test/raii_event_tests.cpp b/src/test/raii_event_tests.cpp new file mode 100644 index 000000000..0f40874f5 --- /dev/null +++ b/src/test/raii_event_tests.cpp @@ -0,0 +1,94 @@ +// Copyright (c) 2016 The Bitcoin Core developers +// Distributed under the MIT software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + +#include + +#ifdef EVENT_SET_MEM_FUNCTIONS_IMPLEMENTED +// It would probably be ideal to define dummy test(s) that report skipped, but boost::test doesn't seem to make that practical (at least not in versions available with common distros) + +#include +#include + +#include "support/events.h" + +#include "test/test_bitcoin.h" + +#include + +#include + +static std::map tags; +static std::map orders; +static uint16_t tagSequence = 0; + +static void* tag_malloc(size_t sz) { + void* mem = malloc(sz); + if (!mem) return mem; + tags[mem]++; + orders[mem] = tagSequence++; + return mem; +} + +static void tag_free(void* mem) { + tags[mem]--; + orders[mem] = tagSequence++; + free(mem); +} + +BOOST_FIXTURE_TEST_SUITE(raii_event_tests, BasicTestingSetup) + +BOOST_AUTO_TEST_CASE(raii_event_creation) +{ + event_set_mem_functions(tag_malloc, realloc, tag_free); + + void* base_ptr = NULL; + { + auto base = obtain_event_base(); + base_ptr = (void*)base.get(); + BOOST_CHECK(tags[base_ptr] == 1); + } + BOOST_CHECK(tags[base_ptr] == 0); + + void* event_ptr = NULL; + { + auto base = obtain_event_base(); + auto event = obtain_event(base.get(), -1, 0, NULL, NULL); + + base_ptr = (void*)base.get(); + event_ptr = (void*)event.get(); + + BOOST_CHECK(tags[base_ptr] == 1); + BOOST_CHECK(tags[event_ptr] == 1); + } + BOOST_CHECK(tags[base_ptr] == 0); + BOOST_CHECK(tags[event_ptr] == 0); + + event_set_mem_functions(malloc, realloc, free); +} + +BOOST_AUTO_TEST_CASE(raii_event_order) +{ + event_set_mem_functions(tag_malloc, realloc, tag_free); + + void* base_ptr = NULL; + void* event_ptr = NULL; + { + auto base = obtain_event_base(); + auto event = obtain_event(base.get(), -1, 0, NULL, NULL); + + base_ptr = (void*)base.get(); + event_ptr = (void*)event.get(); + + // base should have allocated before event + BOOST_CHECK(orders[base_ptr] < orders[event_ptr]); + } + // base should be freed after event + BOOST_CHECK(orders[base_ptr] > orders[event_ptr]); + + event_set_mem_functions(malloc, realloc, free); +} + +BOOST_AUTO_TEST_SUITE_END() + +#endif // EVENT_SET_MEM_FUNCTIONS_IMPLEMENTED diff --git a/src/test/rpc_tests.cpp b/src/test/rpc_tests.cpp index 16709dc80..c2b29ab67 100644 --- a/src/test/rpc_tests.cpp +++ b/src/test/rpc_tests.cpp @@ -13,22 +13,23 @@ #include #include -using namespace std; -using namespace json_spirit; +#include -Array +using namespace std; + +UniValue createArgs(int nRequired, const char* address1=NULL, const char* address2=NULL) { - Array result; + UniValue result(UniValue::VARR); result.push_back(nRequired); - Array addresses; + UniValue addresses(UniValue::VARR); if (address1) addresses.push_back(address1); if (address2) addresses.push_back(address2); result.push_back(addresses); return result; } -Value CallRPC(string args) +UniValue CallRPC(string args) { vector vArgs; boost::split(vArgs, args, boost::is_any_of(" \t")); @@ -40,14 +41,14 @@ Value CallRPC(string args) vArgs[i] = ""; } } - Array params = RPCConvertValues(strMethod, vArgs); + UniValue params = RPCConvertValues(strMethod, vArgs); rpcfn_type method = tableRPC[strMethod]->actor; try { - Value result = (*method)(params, false); + UniValue result = (*method)(params, false); return result; } - catch (const Object& objError) { + catch (const UniValue& objError) { throw runtime_error(find_value(objError, "message").get_str()); } } @@ -58,7 +59,7 @@ BOOST_FIXTURE_TEST_SUITE(rpc_tests, TestingSetup) BOOST_AUTO_TEST_CASE(rpc_rawparams) { // Test raw transaction API argument handling - Value r; + UniValue r; BOOST_CHECK_THROW(CallRPC("getrawtransaction"), runtime_error); BOOST_CHECK_THROW(CallRPC("getrawtransaction not_hex"), runtime_error); @@ -98,7 +99,7 @@ BOOST_AUTO_TEST_CASE(rpc_rawparams) BOOST_AUTO_TEST_CASE(rpc_rawsign) { - Value r; + UniValue r; // input is a 1-of-2 multisig (so is output): string prevout = "[{\"txid\":\"b4cc287e58f87cdae59417329f710f3ecd75a4ee1d2872b7248f50977c8493f3\"," @@ -117,25 +118,51 @@ BOOST_AUTO_TEST_CASE(rpc_rawsign) BOOST_AUTO_TEST_CASE(rpc_format_monetary_values) { - BOOST_CHECK_EQUAL(write_string(ValueFromAmount(0LL), false), "0.00000000"); - BOOST_CHECK_EQUAL(write_string(ValueFromAmount(1LL), false), "0.00000001"); - BOOST_CHECK_EQUAL(write_string(ValueFromAmount(17622195LL), false), "0.17622195"); - BOOST_CHECK_EQUAL(write_string(ValueFromAmount(50000000LL), false), "0.50000000"); - BOOST_CHECK_EQUAL(write_string(ValueFromAmount(89898989LL), false), "0.89898989"); - BOOST_CHECK_EQUAL(write_string(ValueFromAmount(100000000LL), false), "1.00000000"); - BOOST_CHECK_EQUAL(write_string(ValueFromAmount(2099999999999990LL), false), "20999999.99999990"); - BOOST_CHECK_EQUAL(write_string(ValueFromAmount(2099999999999999LL), false), "20999999.99999999"); + BOOST_CHECK(ValueFromAmount(0LL).write() == "0.00000000"); + BOOST_CHECK(ValueFromAmount(1LL).write() == "0.00000001"); + BOOST_CHECK(ValueFromAmount(17622195LL).write() == "0.17622195"); + BOOST_CHECK(ValueFromAmount(50000000LL).write() == "0.50000000"); + BOOST_CHECK(ValueFromAmount(89898989LL).write() == "0.89898989"); + BOOST_CHECK(ValueFromAmount(100000000LL).write() == "1.00000000"); + BOOST_CHECK(ValueFromAmount(2099999999999990LL).write() == "20999999.99999990"); + BOOST_CHECK(ValueFromAmount(2099999999999999LL).write() == "20999999.99999999"); + + BOOST_CHECK_EQUAL(ValueFromAmount(0).write(), "0.00000000"); + BOOST_CHECK_EQUAL(ValueFromAmount((COIN/10000)*123456789).write(), "12345.67890000"); + BOOST_CHECK_EQUAL(ValueFromAmount(-COIN).write(), "-1.00000000"); + BOOST_CHECK_EQUAL(ValueFromAmount(-COIN/10).write(), "-0.10000000"); + + BOOST_CHECK_EQUAL(ValueFromAmount(COIN*100000000).write(), "100000000.00000000"); + BOOST_CHECK_EQUAL(ValueFromAmount(COIN*10000000).write(), "10000000.00000000"); + BOOST_CHECK_EQUAL(ValueFromAmount(COIN*1000000).write(), "1000000.00000000"); + BOOST_CHECK_EQUAL(ValueFromAmount(COIN*100000).write(), "100000.00000000"); + BOOST_CHECK_EQUAL(ValueFromAmount(COIN*10000).write(), "10000.00000000"); + BOOST_CHECK_EQUAL(ValueFromAmount(COIN*1000).write(), "1000.00000000"); + BOOST_CHECK_EQUAL(ValueFromAmount(COIN*100).write(), "100.00000000"); + BOOST_CHECK_EQUAL(ValueFromAmount(COIN*10).write(), "10.00000000"); + BOOST_CHECK_EQUAL(ValueFromAmount(COIN).write(), "1.00000000"); + BOOST_CHECK_EQUAL(ValueFromAmount(COIN/10).write(), "0.10000000"); + BOOST_CHECK_EQUAL(ValueFromAmount(COIN/100).write(), "0.01000000"); + BOOST_CHECK_EQUAL(ValueFromAmount(COIN/1000).write(), "0.00100000"); + BOOST_CHECK_EQUAL(ValueFromAmount(COIN/10000).write(), "0.00010000"); + BOOST_CHECK_EQUAL(ValueFromAmount(COIN/100000).write(), "0.00001000"); + BOOST_CHECK_EQUAL(ValueFromAmount(COIN/1000000).write(), "0.00000100"); + BOOST_CHECK_EQUAL(ValueFromAmount(COIN/10000000).write(), "0.00000010"); + BOOST_CHECK_EQUAL(ValueFromAmount(COIN/100000000).write(), "0.00000001"); } -static Value ValueFromString(const std::string &str) +static UniValue ValueFromString(const std::string &str) { - Value value; - BOOST_CHECK(read_string(str, value)); + UniValue value; + BOOST_CHECK(value.setNumStr(str)); return value; } BOOST_AUTO_TEST_CASE(rpc_parse_monetary_values) { + BOOST_CHECK_THROW(AmountFromValue(ValueFromString("-0.00000001")), UniValue); + BOOST_CHECK_EQUAL(AmountFromValue(ValueFromString("0")), 0LL); + BOOST_CHECK_EQUAL(AmountFromValue(ValueFromString("0.00000000")), 0LL); BOOST_CHECK_EQUAL(AmountFromValue(ValueFromString("0.00000001")), 1LL); BOOST_CHECK_EQUAL(AmountFromValue(ValueFromString("0.17622195")), 17622195LL); BOOST_CHECK_EQUAL(AmountFromValue(ValueFromString("0.5")), 50000000LL); @@ -144,39 +171,128 @@ BOOST_AUTO_TEST_CASE(rpc_parse_monetary_values) BOOST_CHECK_EQUAL(AmountFromValue(ValueFromString("1.00000000")), 100000000LL); BOOST_CHECK_EQUAL(AmountFromValue(ValueFromString("20999999.9999999")), 2099999999999990LL); BOOST_CHECK_EQUAL(AmountFromValue(ValueFromString("20999999.99999999")), 2099999999999999LL); + + BOOST_CHECK_EQUAL(AmountFromValue(ValueFromString("1e-8")), COIN/100000000); + BOOST_CHECK_EQUAL(AmountFromValue(ValueFromString("0.1e-7")), COIN/100000000); + BOOST_CHECK_EQUAL(AmountFromValue(ValueFromString("0.01e-6")), COIN/100000000); + BOOST_CHECK_EQUAL(AmountFromValue(ValueFromString("0.0000000000000000000000000000000000000000000000000000000000000000000000000001e+68")), COIN/100000000); + BOOST_CHECK_EQUAL(AmountFromValue(ValueFromString("10000000000000000000000000000000000000000000000000000000000000000e-64")), COIN); + BOOST_CHECK_EQUAL(AmountFromValue(ValueFromString("0.000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000e64")), COIN); + + BOOST_CHECK_THROW(AmountFromValue(ValueFromString("1e-9")), UniValue); //should fail + BOOST_CHECK_THROW(AmountFromValue(ValueFromString("0.000000019")), UniValue); //should fail + BOOST_CHECK_EQUAL(AmountFromValue(ValueFromString("0.00000001000000")), 1LL); //should pass, cut trailing 0 + BOOST_CHECK_THROW(AmountFromValue(ValueFromString("19e-9")), UniValue); //should fail + BOOST_CHECK_EQUAL(AmountFromValue(ValueFromString("0.19e-6")), 19); //should pass, leading 0 is present + + BOOST_CHECK_THROW(AmountFromValue(ValueFromString("92233720368.54775808")), UniValue); //overflow error + BOOST_CHECK_THROW(AmountFromValue(ValueFromString("1e+11")), UniValue); //overflow error + BOOST_CHECK_THROW(AmountFromValue(ValueFromString("1e11")), UniValue); //overflow error signless + BOOST_CHECK_THROW(AmountFromValue(ValueFromString("93e+9")), UniValue); //overflow error } BOOST_AUTO_TEST_CASE(json_parse_errors) { - Value value; // Valid - BOOST_CHECK_EQUAL(read_string(std::string("1.0"), value), true); - // Valid, with trailing whitespace - BOOST_CHECK_EQUAL(read_string(std::string("1.0 "), value), true); + BOOST_CHECK_EQUAL(ParseNonRFCJSONValue("1.0").get_real(), 1.0); + // Valid, with leading or trailing whitespace + BOOST_CHECK_EQUAL(ParseNonRFCJSONValue(" 1.0").get_real(), 1.0); + BOOST_CHECK_EQUAL(ParseNonRFCJSONValue("1.0 ").get_real(), 1.0); + + BOOST_CHECK_THROW(AmountFromValue(ParseNonRFCJSONValue(".19e-6")), std::runtime_error); //should fail, missing leading 0, therefore invalid JSON + BOOST_CHECK_EQUAL(AmountFromValue(ParseNonRFCJSONValue("0.00000000000000000000000000000000000001e+30 ")), 1); // Invalid, initial garbage - BOOST_CHECK_EQUAL(read_string(std::string("[1.0"), value), false); - BOOST_CHECK_EQUAL(read_string(std::string("a1.0"), value), false); + BOOST_CHECK_THROW(ParseNonRFCJSONValue("[1.0"), std::runtime_error); + BOOST_CHECK_THROW(ParseNonRFCJSONValue("a1.0"), std::runtime_error); // Invalid, trailing garbage - BOOST_CHECK_EQUAL(read_string(std::string("1.0sds"), value), false); - BOOST_CHECK_EQUAL(read_string(std::string("1.0]"), value), false); + BOOST_CHECK_THROW(ParseNonRFCJSONValue("1.0sds"), std::runtime_error); + BOOST_CHECK_THROW(ParseNonRFCJSONValue("1.0]"), std::runtime_error); // BTC addresses should fail parsing - BOOST_CHECK_EQUAL(read_string(std::string("175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W"), value), false); - BOOST_CHECK_EQUAL(read_string(std::string("3J98t1WpEZ73CNmQviecrnyiWrnqRhWNL"), value), false); + BOOST_CHECK_THROW(ParseNonRFCJSONValue("175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W"), std::runtime_error); + BOOST_CHECK_THROW(ParseNonRFCJSONValue("3J98t1WpEZ73CNmQviecrnyiWrnqRhWNL"), std::runtime_error); } -BOOST_AUTO_TEST_CASE(rpc_boostasiotocnetaddr) +BOOST_AUTO_TEST_CASE(rpc_ban) { - // Check IPv4 addresses - BOOST_CHECK_EQUAL(BoostAsioToCNetAddr(boost::asio::ip::address::from_string("1.2.3.4")).ToString(), "1.2.3.4"); - BOOST_CHECK_EQUAL(BoostAsioToCNetAddr(boost::asio::ip::address::from_string("127.0.0.1")).ToString(), "127.0.0.1"); - // Check IPv6 addresses - BOOST_CHECK_EQUAL(BoostAsioToCNetAddr(boost::asio::ip::address::from_string("::1")).ToString(), "::1"); - BOOST_CHECK_EQUAL(BoostAsioToCNetAddr(boost::asio::ip::address::from_string("123:4567:89ab:cdef:123:4567:89ab:cdef")).ToString(), - "123:4567:89ab:cdef:123:4567:89ab:cdef"); - // v4 compatible must be interpreted as IPv4 - BOOST_CHECK_EQUAL(BoostAsioToCNetAddr(boost::asio::ip::address::from_string("::0:127.0.0.1")).ToString(), "127.0.0.1"); - // v4 mapped must be interpreted as IPv4 - BOOST_CHECK_EQUAL(BoostAsioToCNetAddr(boost::asio::ip::address::from_string("::ffff:127.0.0.1")).ToString(), "127.0.0.1"); + BOOST_CHECK_NO_THROW(CallRPC(string("clearbanned"))); + + UniValue r; + BOOST_CHECK_NO_THROW(r = CallRPC(string("setban 127.0.0.0 add"))); + BOOST_CHECK_THROW(r = CallRPC(string("setban 127.0.0.0:8334")), runtime_error); //portnumber for setban not allowed + BOOST_CHECK_NO_THROW(r = CallRPC(string("listbanned"))); + UniValue ar = r.get_array(); + UniValue o1 = ar[0].get_obj(); + UniValue adr = find_value(o1, "address"); + BOOST_CHECK_EQUAL(adr.get_str(), "127.0.0.0/255.255.255.255"); + BOOST_CHECK_NO_THROW(CallRPC(string("setban 127.0.0.0 remove")));; + BOOST_CHECK_NO_THROW(r = CallRPC(string("listbanned"))); + ar = r.get_array(); + BOOST_CHECK_EQUAL(ar.size(), 0); + + BOOST_CHECK_NO_THROW(r = CallRPC(string("setban 127.0.0.0/24 add 1607731200 true"))); + BOOST_CHECK_NO_THROW(r = CallRPC(string("listbanned"))); + ar = r.get_array(); + o1 = ar[0].get_obj(); + adr = find_value(o1, "address"); + UniValue banned_until = find_value(o1, "banned_until"); + BOOST_CHECK_EQUAL(adr.get_str(), "127.0.0.0/255.255.255.0"); + BOOST_CHECK_EQUAL(banned_until.get_int64(), 1607731200); // absolute time check + + BOOST_CHECK_NO_THROW(CallRPC(string("clearbanned"))); + + BOOST_CHECK_NO_THROW(r = CallRPC(string("setban 127.0.0.0/24 add 200"))); + BOOST_CHECK_NO_THROW(r = CallRPC(string("listbanned"))); + ar = r.get_array(); + o1 = ar[0].get_obj(); + adr = find_value(o1, "address"); + banned_until = find_value(o1, "banned_until"); + BOOST_CHECK_EQUAL(adr.get_str(), "127.0.0.0/255.255.255.0"); + int64_t now = GetTime(); + BOOST_CHECK(banned_until.get_int64() > now); + BOOST_CHECK(banned_until.get_int64()-now <= 200); + + // must throw an exception because 127.0.0.1 is in already banned suubnet range + BOOST_CHECK_THROW(r = CallRPC(string("setban 127.0.0.1 add")), runtime_error); + + BOOST_CHECK_NO_THROW(CallRPC(string("setban 127.0.0.0/24 remove")));; + BOOST_CHECK_NO_THROW(r = CallRPC(string("listbanned"))); + ar = r.get_array(); + BOOST_CHECK_EQUAL(ar.size(), 0); + + BOOST_CHECK_NO_THROW(r = CallRPC(string("setban 127.0.0.0/255.255.0.0 add"))); + BOOST_CHECK_THROW(r = CallRPC(string("setban 127.0.1.1 add")), runtime_error); + + BOOST_CHECK_NO_THROW(CallRPC(string("clearbanned"))); + BOOST_CHECK_NO_THROW(r = CallRPC(string("listbanned"))); + ar = r.get_array(); + BOOST_CHECK_EQUAL(ar.size(), 0); + + + BOOST_CHECK_THROW(r = CallRPC(string("setban test add")), runtime_error); //invalid IP + + //IPv6 tests + BOOST_CHECK_NO_THROW(r = CallRPC(string("setban FE80:0000:0000:0000:0202:B3FF:FE1E:8329 add"))); + BOOST_CHECK_NO_THROW(r = CallRPC(string("listbanned"))); + ar = r.get_array(); + o1 = ar[0].get_obj(); + adr = find_value(o1, "address"); + BOOST_CHECK_EQUAL(adr.get_str(), "fe80::202:b3ff:fe1e:8329/ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"); + + BOOST_CHECK_NO_THROW(CallRPC(string("clearbanned"))); + BOOST_CHECK_NO_THROW(r = CallRPC(string("setban 2001:db8::/30 add"))); + BOOST_CHECK_NO_THROW(r = CallRPC(string("listbanned"))); + ar = r.get_array(); + o1 = ar[0].get_obj(); + adr = find_value(o1, "address"); + BOOST_CHECK_EQUAL(adr.get_str(), "2001:db8::/ffff:fffc:0:0:0:0:0:0"); + + BOOST_CHECK_NO_THROW(CallRPC(string("clearbanned"))); + BOOST_CHECK_NO_THROW(r = CallRPC(string("setban 2001:4d48:ac57:400:cacf:e9ff:fe1d:9c63/128 add"))); + BOOST_CHECK_NO_THROW(r = CallRPC(string("listbanned"))); + ar = r.get_array(); + o1 = ar[0].get_obj(); + adr = find_value(o1, "address"); + BOOST_CHECK_EQUAL(adr.get_str(), "2001:4d48:ac57:400:cacf:e9ff:fe1d:9c63/ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"); } BOOST_AUTO_TEST_SUITE_END() diff --git a/src/test/rpc_wallet_tests.cpp b/src/test/rpc_wallet_tests.cpp index b801d5093..bbb318b0f 100644 --- a/src/test/rpc_wallet_tests.cpp +++ b/src/test/rpc_wallet_tests.cpp @@ -31,15 +31,16 @@ #include #include -using namespace std; -using namespace json_spirit; +#include -extern Array createArgs(int nRequired, const char* address1 = NULL, const char* address2 = NULL); -extern Value CallRPC(string args); +using namespace std; + +extern UniValue createArgs(int nRequired, const char* address1 = NULL, const char* address2 = NULL); +extern UniValue CallRPC(string args); extern CWallet* pwalletMain; -bool find_error(const Object& objError, const std::string& expected) { +bool find_error(const UniValue& objError, const std::string& expected) { return find_value(objError, "message").get_str().find(expected) != string::npos; } @@ -56,7 +57,7 @@ BOOST_AUTO_TEST_CASE(rpc_addmultisig) // new, compressed: const char address2Hex[] = "0388c2037017c62240b6b72ac1a2a5f94da790596ebd06177c8572752922165cb4"; - Value v; + UniValue v; CBitcoinAddress address; BOOST_CHECK_NO_THROW(v = addmultisig(createArgs(1, address1Hex), false)); address.SetString(v.get_str()); @@ -87,13 +88,13 @@ BOOST_AUTO_TEST_CASE(rpc_addmultisig) BOOST_AUTO_TEST_CASE(rpc_wallet) { // Test RPC calls for various wallet statistics - Value r; + UniValue r; LOCK2(cs_main, pwalletMain->cs_wallet); CPubKey demoPubkey = pwalletMain->GenerateNewKey(); CBitcoinAddress demoAddress = CBitcoinAddress(CTxDestination(demoPubkey.GetID())); - Value retValue; + UniValue retValue; string strAccount = ""; string strPurpose = "receive"; BOOST_CHECK_NO_THROW({ /*Initialize Wallet with an account */ @@ -239,31 +240,47 @@ BOOST_AUTO_TEST_CASE(rpc_wallet) *********************************/ BOOST_CHECK_THROW(CallRPC("getaddressesbyaccount"), runtime_error); BOOST_CHECK_NO_THROW(retValue = CallRPC("getaddressesbyaccount " + strAccount)); - Array arr = retValue.get_array(); + UniValue arr = retValue.get_array(); BOOST_CHECK_EQUAL(4, arr.size()); bool notFound = true; - for (auto a : arr) { + for (auto a : arr.getValues()) { notFound &= CBitcoinAddress(a.get_str()).Get() != demoAddress.Get(); } BOOST_CHECK(!notFound); + /********************************* + * fundrawtransaction + *********************************/ + BOOST_CHECK_THROW(CallRPC("fundrawtransaction 28z"), runtime_error); + BOOST_CHECK_THROW(CallRPC("fundrawtransaction 01000000000180969800000000001976a91450ce0a4b0ee0ddeb633da85199728b940ac3fe9488ac00000000"), runtime_error); + /* * getblocksubsidy */ BOOST_CHECK_THROW(CallRPC("getblocksubsidy too many args"), runtime_error); BOOST_CHECK_THROW(CallRPC("getblocksubsidy -1"), runtime_error); BOOST_CHECK_NO_THROW(retValue = CallRPC("getblocksubsidy 50000")); - Object obj = retValue.get_obj(); - BOOST_CHECK(find_value(obj, "miner") == 10.0); - BOOST_CHECK(find_value(obj, "founders") == 2.5); + UniValue obj = retValue.get_obj(); + BOOST_CHECK_EQUAL(find_value(obj, "miner").get_real(), 10.0); + BOOST_CHECK_EQUAL(find_value(obj, "founders").get_real(), 2.5); BOOST_CHECK_NO_THROW(retValue = CallRPC("getblocksubsidy 1000000")); obj = retValue.get_obj(); - BOOST_CHECK(find_value(obj, "miner") == 6.25); - BOOST_CHECK(find_value(obj, "founders") == 0.0); + BOOST_CHECK_EQUAL(find_value(obj, "miner").get_real(), 6.25); + BOOST_CHECK_EQUAL(find_value(obj, "founders").get_real(), 0.0); BOOST_CHECK_NO_THROW(retValue = CallRPC("getblocksubsidy 2000000")); obj = retValue.get_obj(); - BOOST_CHECK(find_value(obj, "miner") == 3.125); - BOOST_CHECK(find_value(obj, "founders") == 0.0); + BOOST_CHECK_EQUAL(find_value(obj, "miner").get_real(), 3.125); + BOOST_CHECK_EQUAL(find_value(obj, "founders").get_real(), 0.0); + + /* + * getblock + */ + BOOST_CHECK_THROW(CallRPC("getblock too many args"), runtime_error); + BOOST_CHECK_THROW(CallRPC("getblock -1"), runtime_error); + BOOST_CHECK_THROW(CallRPC("getblock 2147483647"), runtime_error); // allowed, but > height of active chain tip + BOOST_CHECK_THROW(CallRPC("getblock 2147483648"), runtime_error); // not allowed, > int32 used for nHeight + BOOST_CHECK_THROW(CallRPC("getblock 100badchars"), runtime_error); + BOOST_CHECK_NO_THROW(CallRPC("getblock 0")); } BOOST_AUTO_TEST_CASE(rpc_wallet_getbalance) @@ -304,7 +321,7 @@ BOOST_AUTO_TEST_CASE(rpc_wallet_z_validateaddress) LOCK2(cs_main, pwalletMain->cs_wallet); - Value retValue; + UniValue retValue; // Check number of args BOOST_CHECK_THROW(CallRPC("z_validateaddress"), runtime_error); @@ -317,7 +334,7 @@ BOOST_AUTO_TEST_CASE(rpc_wallet_z_validateaddress) // This address is not valid, it belongs to another network BOOST_CHECK_NO_THROW(retValue = CallRPC("z_validateaddress ztaaga95QAPyp1kSQ1hD2kguCpzyMHjxWZqaYDEkzbvo7uYQYAw2S8X4Kx98AvhhofMtQL8PAXKHuZsmhRcanavKRKmdCzk")); - Object resultObj = retValue.get_obj(); + UniValue resultObj = retValue.get_obj(); bool b = find_value(resultObj, "isvalid").get_bool(); BOOST_CHECK_EQUAL(b, false); @@ -484,7 +501,7 @@ BOOST_AUTO_TEST_CASE(rpc_wallet_z_importwallet) BOOST_AUTO_TEST_CASE(rpc_wallet_z_importexport) { LOCK2(cs_main, pwalletMain->cs_wallet); - Value retValue; + UniValue retValue; int n1 = 1000; // number of times to import/export int n2 = 1000; // number of addresses to create and list @@ -493,9 +510,17 @@ BOOST_AUTO_TEST_CASE(rpc_wallet_z_importexport) BOOST_CHECK_THROW(CallRPC("z_exportkey"), runtime_error); // error if too many args - BOOST_CHECK_THROW(CallRPC("z_importkey too many args"), runtime_error); + BOOST_CHECK_THROW(CallRPC("z_importkey way too many args"), runtime_error); BOOST_CHECK_THROW(CallRPC("z_exportkey toomany args"), runtime_error); + // error if invalid args + auto sk = libzcash::SpendingKey::random(); + std::string prefix = std::string("z_importkey ") + CZCSpendingKey(sk).ToString() + " yes "; + BOOST_CHECK_THROW(CallRPC(prefix + "-1"), runtime_error); + BOOST_CHECK_THROW(CallRPC(prefix + "2147483647"), runtime_error); // allowed, but > height of active chain tip + BOOST_CHECK_THROW(CallRPC(prefix + "2147483648"), runtime_error); // not allowed, > int32 used for nHeight + BOOST_CHECK_THROW(CallRPC(prefix + "100badchars"), runtime_error); + // wallet should currently be empty std::set addrs; pwalletMain->GetPaymentAddresses(addrs); @@ -515,12 +540,12 @@ BOOST_AUTO_TEST_CASE(rpc_wallet_z_importexport) // Verify we can list the keys imported BOOST_CHECK_NO_THROW(retValue = CallRPC("z_listaddresses")); - Array arr = retValue.get_array(); + UniValue arr = retValue.get_array(); BOOST_CHECK(arr.size() == n1); // Put addresses into a set std::unordered_set myaddrs; - for (Value element : arr) { + for (UniValue element : arr.getValues()) { myaddrs.insert(element.get_str()); } @@ -542,7 +567,7 @@ BOOST_AUTO_TEST_CASE(rpc_wallet_z_importexport) // Create a set from them std::unordered_set listaddrs; - for (Value element : arr) { + for (UniValue element : arr.getValues()) { listaddrs.insert(element.get_str()); } @@ -581,7 +606,7 @@ public: start_execution_clock(); std::this_thread::sleep_for(std::chrono::milliseconds(naptime)); stop_execution_clock(); - set_result(Value("done")); + set_result(UniValue(UniValue::VSTR, "done")); set_state(OperationStatus::SUCCESS); } }; @@ -620,8 +645,8 @@ BOOST_AUTO_TEST_CASE(rpc_wallet_async_operations) BOOST_CHECK_EQUAL(op1->isReady(), false); BOOST_CHECK_EQUAL(op1->isFailed(), false); BOOST_CHECK_EQUAL(op1->isSuccess(), true); - BOOST_CHECK(op1->getError() == Value::null ); - BOOST_CHECK(op1->getResult().is_null() == false ); + BOOST_CHECK_EQUAL(op1->getError().isNull(), true); + BOOST_CHECK_EQUAL(op1->getResult().isNull(), false); BOOST_CHECK_EQUAL(op1->getStateAsString(), "success"); BOOST_CHECK_NE(op1->getStateAsString(), "executing"); @@ -781,12 +806,12 @@ BOOST_AUTO_TEST_CASE(rpc_z_getoperations) // Check if too many args BOOST_CHECK_THROW(CallRPC("z_listoperationids toomany args"), runtime_error); - Value retValue; + UniValue retValue; BOOST_CHECK_NO_THROW(retValue = CallRPC("z_listoperationids")); BOOST_CHECK(retValue.get_array().size() == 2); BOOST_CHECK_NO_THROW(retValue = CallRPC("z_getoperationstatus")); - Array array = retValue.get_array(); + UniValue array = retValue.get_array(); BOOST_CHECK(array.size() == 2); // idempotent @@ -794,18 +819,18 @@ BOOST_AUTO_TEST_CASE(rpc_z_getoperations) array = retValue.get_array(); BOOST_CHECK(array.size() == 2); - for (Value v : array) { - Object obj = v.get_obj(); - Value id = find_value(obj, "id"); + for (UniValue v : array.getValues()) { + UniValue obj = v.get_obj(); + UniValue id = find_value(obj, "id"); - Value result; + UniValue result; // removes result from internal storage BOOST_CHECK_NO_THROW(result = CallRPC("z_getoperationresult [\"" + id.get_str() + "\"]")); - Array resultArray = result.get_array(); + UniValue resultArray = result.get_array(); BOOST_CHECK(resultArray.size() == 1); - Object resultObj = resultArray.front().get_obj(); - Value resultId = find_value(resultObj, "id"); + UniValue resultObj = resultArray[0].get_obj(); + UniValue resultId = find_value(resultObj, "id"); BOOST_CHECK_EQUAL(id.get_str(), resultId.get_str()); // verify the operation has been removed @@ -884,26 +909,26 @@ BOOST_AUTO_TEST_CASE(rpc_z_sendmany_parameters) // Test constructor of AsyncRPCOperation_sendmany try { std::shared_ptr operation(new AsyncRPCOperation_sendmany("",{}, {}, -1)); - } catch (const Object& objError) { + } catch (const UniValue& objError) { BOOST_CHECK( find_error(objError, "Minconf cannot be negative")); } try { std::shared_ptr operation(new AsyncRPCOperation_sendmany("",{}, {}, 1)); - } catch (const Object& objError) { + } catch (const UniValue& objError) { BOOST_CHECK( find_error(objError, "From address parameter missing")); } try { std::shared_ptr operation( new AsyncRPCOperation_sendmany("tmRr6yJonqGK23UVhrKuyvTpF8qxQQjKigJ", {}, {}, 1) ); - } catch (const Object& objError) { + } catch (const UniValue& objError) { BOOST_CHECK( find_error(objError, "No recipients")); } try { std::vector recipients = { SendManyRecipient("dummy",1.0, "") }; std::shared_ptr operation( new AsyncRPCOperation_sendmany("INVALID", recipients, {}, 1) ); - } catch (const Object& objError) { + } catch (const UniValue& objError) { BOOST_CHECK( find_error(objError, "payment address is invalid")); } @@ -911,7 +936,7 @@ BOOST_AUTO_TEST_CASE(rpc_z_sendmany_parameters) try { std::vector recipients = { SendManyRecipient("dummy",1.0, "") }; std::shared_ptr operation( new AsyncRPCOperation_sendmany("zcMuhvq8sEkHALuSU2i4NbNQxshSAYrpCExec45ZjtivYPbuiFPwk6WHy4SvsbeZ4siy1WheuRGjtaJmoD1J8bFqNXhsG6U", recipients, {}, 1) ); - } catch (const Object& objError) { + } catch (const UniValue& objError) { BOOST_CHECK( find_error(objError, "payment address is for wrong network type")); } @@ -920,7 +945,7 @@ BOOST_AUTO_TEST_CASE(rpc_z_sendmany_parameters) try { std::vector recipients = { SendManyRecipient("dummy",1.0, "") }; std::shared_ptr operation( new AsyncRPCOperation_sendmany("ztjiDe569DPNbyTE6TSdJTaSDhoXEHLGvYoUnBU1wfVNU52TEyT6berYtySkd21njAeEoh8fFJUT42kua9r8EnhBaEKqCpP", recipients, {}, 1) ); - } catch (const Object& objError) { + } catch (const UniValue& objError) { BOOST_CHECK( find_error(objError, "no spending key found for zaddr")); } } @@ -933,7 +958,7 @@ BOOST_AUTO_TEST_CASE(rpc_z_sendmany_internals) LOCK(pwalletMain->cs_wallet); - Value retValue; + UniValue retValue; // add keys manually BOOST_CHECK_NO_THROW(retValue = CallRPC("getnewaddress")); @@ -985,7 +1010,7 @@ BOOST_AUTO_TEST_CASE(rpc_z_sendmany_internals) try { proxy.get_memo_from_hex_string(bigmemo); - } catch (const Object& objError) { + } catch (const UniValue& objError) { BOOST_CHECK( find_error(objError, "too big")); } @@ -995,7 +1020,7 @@ BOOST_AUTO_TEST_CASE(rpc_z_sendmany_internals) try { proxy.get_memo_from_hex_string(badmemo); - } catch (const Object& objError) { + } catch (const UniValue& objError) { BOOST_CHECK( find_error(objError, "hexadecimal format")); } @@ -1006,7 +1031,7 @@ BOOST_AUTO_TEST_CASE(rpc_z_sendmany_internals) std::string oddmemo(v.begin(), v.end()); try { proxy.get_memo_from_hex_string(oddmemo); - } catch (const Object& objError) { + } catch (const UniValue& objError) { BOOST_CHECK( find_error(objError, "hexadecimal format")); } } @@ -1061,7 +1086,7 @@ BOOST_AUTO_TEST_CASE(rpc_z_sendmany_internals) // Raw joinsplit is a zaddr->zaddr { std::string raw = "020000000000000000000100000000000000001027000000000000183a0d4c46c369078705e39bcfebee59a978dbd210ce8de3efc9555a03fbabfd3cea16693d730c63850d7e48ccde79854c19adcb7e9dcd7b7d18805ee09083f6b16e1860729d2d4a90e2f2acd009cf78b5eb0f4a6ee4bdb64b1262d7ce9eb910c460b02022991e968d0c50ee44908e4ccccbc591d0053bcca154dd6d6fc400a29fa686af4682339832ccea362a62aeb9df0d5aa74f86a1e75ac0f48a8ccc41e0a940643c6c33e1d09223b0a46eaf47a1bb4407cfc12b1dcf83a29c0cef51e45c7876ca5b9e5bae86d92976eb3ef68f29cd29386a8be8451b50f82bf9da10c04651868655194da8f6ed3d241bb5b5ff93a3e2bbe44644544d88bcde5cc35978032ee92699c7a61fcbb395e7583f47e698c4d53ede54f956629400bf510fb5e22d03158cc10bdcaaf29e418ef18eb6480dd9c8b9e2a377809f9f32a556ef872febd0021d4ad013aa9f0b7255e98e408d302abefd33a71180b720271835b487ab309e160b06dfe51932120fb84a7ede16b20c53599a11071592109e10260f265ee60d48c62bfe24074020e9b586ce9e9356e68f2ad1a9538258234afe4b83a209f178f45202270eaeaeecaf2ce3100b2c5a714f75f35777a9ebff5ebf47059d2bbf6f3726190216468f2b152673b766225b093f3a2f827c86d6b48b42117fec1d0ac38dd7af700308dcfb02eba821612b16a2c164c47715b9b0c93900893b1aba2ea03765c94d87022db5be06ab338d1912e0936dfe87586d0a8ee49144a6cd2e306abdcb652faa3e0222739deb23154d778b50de75069a4a2cce1208cd1ced3cb4744c9888ce1c2fcd2e66dc31e62d3aa9e423d7275882525e9981f92e84ac85975b8660739407efbe1e34c2249420fde7e17db3096d5b22e83d051d01f0e6e7690dca7d168db338aadf0897fedac10de310db2b1bff762d322935dddbb60c2efb8b15d231fa17b84630371cb275c209f0c4c7d0c68b150ea5cd514122215e3f7fcfb351d69514788d67c2f3c8922581946e3a04bdf1f07f15696ca76eb95b10698bf1188fd882945c57657515889d042a6fc45d38cbc943540c4f0f6d1c45a1574c81f3e42d1eb8702328b729909adee8a5cfed7c79d54627d1fd389af941d878376f7927b9830ca659bf9ab18c5ca5192d52d02723008728d03701b8ab3e1c4a3109409ec0b13df334c7deec3523eeef4c97b5603e643de3a647b873f4c1b47fbfc6586ba66724f112e51fc93839648005043620aa3ce458e246d77977b19c53d98e3e812de006afc1a79744df236582943631d04cc02941ac4be500e4ed9fb9e3e7cc187b1c4050fad1d9d09d5fd70d5d01d615b439d8c0015d2eb10398bcdbf8c4b2bd559dbe4c288a186aed3f86f608da4d582e120c4a896e015e2241900d1daeccd05db968852677c71d752bec46de9962174b46f980e8cc603654daf8b98a3ee92dac066033954164a89568b70b1780c2ce2410b2f816dbeddb2cd463e0c8f21a52cf6427d9647a6fd4bafa8fb4cd4d47ac057b0160bee86c6b2fb8adce214c2bcdda277512200adf0eaa5d2114a2c077b009836a68ec254bfe56f51d147b9afe2ddd9cb917c0c2de19d81b7b8fd9f4574f51fa1207630dc13976f4d7587c962f761af267de71f3909a576e6bedaf6311633910d291ac292c467cc8331ef577aef7646a5d949322fa0367a49f20597a13def53136ee31610395e3e48d291fd8f58504374031fe9dcfba5e06086ebcf01a9106f6a4d6e16e19e4c5bb893f7da79419c94eca31a384be6fa1747284dee0fc3bbc8b1b860172c10b29c1594bb8c747d7fe05827358ff2160f49050001625ffe2e880bd7fc26cd0ffd89750745379a8e862816e08a5a2008043921ab6a4976064ac18f7ee37b6628bc0127d8d5ebd3548e41d8881a082d86f20b32e33094f15a0e6ea6074b08c6cd28142de94713451640a55985051f5577eb54572699d838cb34a79c8939e981c0c277d06a6e2ce69ccb74f8a691ff08f81d8b99e6a86223d29a2b7c8e7b041aba44ea678ae654277f7e91cbfa79158b989164a3d549d9f4feb0cc43169699c13e321fe3f4b94258c75d198ff9184269cd6986c55409e07528c93f64942c6c283ce3917b4bf4c3be2fe3173c8c38cccb35f1fbda0ca88b35a599c0678cb22aa8eabea8249dbd2e4f849fffe69803d299e435ebcd7df95854003d8eda17a74d98b4be0e62d45d7fe48c06a6f464a14f8e0570077cc631279092802a89823f031eef5e1028a6d6fdbd502869a731ee7d28b4d6c71b419462a30d31442d3ee444ffbcbd16d558c9000c97e949c2b1f9d6f6d8db7b9131ebd963620d3fc8595278d6f8fdf49084325373196d53e64142fa5a23eccd6ef908c4d80b8b3e6cc334b7f7012103a3682e4678e9b518163d262a39a2c1a69bf88514c52b7ccd7cc8dc80e71f7c2ec0701cff982573eb0c2c4daeb47fa0b586f4451c10d1da2e5d182b03dd067a5e971b3a6138ca6667aaf853d2ac03b80a1d5870905f2cfb6c78ec3c3719c02f973d638a0f973424a2b0f2b0023f136d60092fe15fba4bc180b9176bd0ff576e053f1af6939fe9ca256203ffaeb3e569f09774d2a6cbf91873e56651f4d6ff77e0b5374b0a1a201d7e523604e0247644544cc571d48c458a4f96f45580b"; - Object obj; + UniValue obj(UniValue::VOBJ); obj.push_back(Pair("rawtxn", raw)); // we have the spending key for the dummy recipient zaddr1 @@ -1079,9 +1104,9 @@ BOOST_AUTO_TEST_CASE(rpc_z_sendmany_internals) // Verify test mode is returning output (since no input taddrs, signed and unsigned are the same). BOOST_CHECK_NO_THROW( proxy.sign_send_raw_transaction(obj) ); - Value result = operation->getResult(); - BOOST_CHECK(!result.is_null()); - Object resultObj = result.get_obj(); + UniValue result = operation->getResult(); + BOOST_CHECK(!result.isNull()); + UniValue resultObj = result.get_obj(); std::string hex = find_value(resultObj, "hex").get_str(); BOOST_CHECK_EQUAL(hex, raw); } @@ -1149,7 +1174,7 @@ BOOST_AUTO_TEST_CASE(rpc_z_sendmany_internals) BOOST_AUTO_TEST_CASE(rpc_wallet_encrypted_wallet_zkeys) { LOCK2(cs_main, pwalletMain->cs_wallet); - Value retValue; + UniValue retValue; int n = 100; // wallet should currently be empty @@ -1164,7 +1189,7 @@ BOOST_AUTO_TEST_CASE(rpc_wallet_encrypted_wallet_zkeys) // Verify we can list the keys imported BOOST_CHECK_NO_THROW(retValue = CallRPC("z_listaddresses")); - Array arr = retValue.get_array(); + UniValue arr = retValue.get_array(); BOOST_CHECK(arr.size() == n); // Verify that the wallet encryption RPC is disabled diff --git a/src/test/script_tests.cpp b/src/test/script_tests.cpp index cb028dfbb..a1e3dbdc2 100644 --- a/src/test/script_tests.cpp +++ b/src/test/script_tests.cpp @@ -26,12 +26,10 @@ #include #include -#include "json/json_spirit_reader_template.h" -#include "json/json_spirit_utils.h" -#include "json/json_spirit_writer_template.h" + +#include using namespace std; -using namespace json_spirit; // Uncomment if you want to output updated JSON tests. // #define UPDATE_JSON_TESTS @@ -41,15 +39,15 @@ static const unsigned int flags = SCRIPT_VERIFY_P2SH | SCRIPT_VERIFY_STRICTENC; unsigned int ParseScriptFlags(string strFlags); string FormatScriptFlags(unsigned int flags); -Array +UniValue read_json(const std::string& jsondata) { - Value v; + UniValue v; - if (!read_string(jsondata, v) || v.type() != array_type) + if (!v.read(jsondata) || !v.isArray()) { BOOST_ERROR("Parse error."); - return Array(); + return UniValue(UniValue::VARR); } return v.get_array(); } @@ -295,10 +293,10 @@ public: return *this; } - Array GetJSON() + UniValue GetJSON() { DoPush(); - Array array; + UniValue array(UniValue::VARR); array.push_back(FormatScript(spendTx.vin[0].scriptSig)); array.push_back(FormatScript(creditTx.vout[0].scriptPubKey)); array.push_back(FormatScriptFlags(flags)); @@ -582,14 +580,16 @@ BOOST_AUTO_TEST_CASE(script_build) std::set tests_bad; { - Array json_good = read_json(std::string(json_tests::script_valid, json_tests::script_valid + sizeof(json_tests::script_valid))); - Array json_bad = read_json(std::string(json_tests::script_invalid, json_tests::script_invalid + sizeof(json_tests::script_invalid))); + UniValue json_good = read_json(std::string(json_tests::script_valid, json_tests::script_valid + sizeof(json_tests::script_valid))); + UniValue json_bad = read_json(std::string(json_tests::script_invalid, json_tests::script_invalid + sizeof(json_tests::script_invalid))); - BOOST_FOREACH(Value& tv, json_good) { - tests_good.insert(write_string(Value(tv.get_array()), true)); + for (size_t idx = 0; idx < json_good.size(); idx++) { + const UniValue& tv = json_good[idx]; + tests_good.insert(tv.get_array().write()); } - BOOST_FOREACH(Value& tv, json_bad) { - tests_bad.insert(write_string(Value(tv.get_array()), true)); + for (size_t idx = 0; idx < json_bad.size(); idx++) { + const UniValue& tv = json_bad[idx]; + tests_bad.insert(tv.get_array().write()); } } @@ -598,7 +598,7 @@ BOOST_AUTO_TEST_CASE(script_build) BOOST_FOREACH(TestBuilder& test, good) { test.Test(true); - std::string str = write_string(Value(test.GetJSON()), true); + std::string str = test.GetJSON().write(); #ifndef UPDATE_JSON_TESTS if (tests_good.count(str) == 0) { BOOST_CHECK_MESSAGE(false, "Missing auto script_valid test: " + test.GetComment()); @@ -608,7 +608,7 @@ BOOST_AUTO_TEST_CASE(script_build) } BOOST_FOREACH(TestBuilder& test, bad) { test.Test(false); - std::string str = write_string(Value(test.GetJSON()), true); + std::string str = test.GetJSON().write(); #ifndef UPDATE_JSON_TESTS if (tests_bad.count(str) == 0) { BOOST_CHECK_MESSAGE(false, "Missing auto script_invalid test: " + test.GetComment()); @@ -634,12 +634,11 @@ BOOST_AUTO_TEST_CASE(script_valid) // Inner arrays are [ "scriptSig", "scriptPubKey", "flags" ] // ... where scriptSig and scriptPubKey are stringified // scripts. - Array tests = read_json(std::string(json_tests::script_valid, json_tests::script_valid + sizeof(json_tests::script_valid))); + UniValue tests = read_json(std::string(json_tests::script_valid, json_tests::script_valid + sizeof(json_tests::script_valid))); - BOOST_FOREACH(Value& tv, tests) - { - Array test = tv.get_array(); - string strTest = write_string(tv, false); + for (size_t idx = 0; idx < tests.size(); idx++) { + UniValue test = tests[idx]; + string strTest = test.write(); if (test.size() < 3) // Allow size > 3; extra stuff ignored (useful for comments) { if (test.size() != 1) { @@ -660,13 +659,12 @@ BOOST_AUTO_TEST_CASE(script_valid) BOOST_AUTO_TEST_CASE(script_invalid) { // Scripts that should evaluate as invalid - Array tests = read_json(std::string(json_tests::script_invalid, json_tests::script_invalid + sizeof(json_tests::script_invalid))); + UniValue tests = read_json(std::string(json_tests::script_invalid, json_tests::script_invalid + sizeof(json_tests::script_invalid))); - BOOST_FOREACH(Value& tv, tests) - { - Array test = tv.get_array(); - string strTest = write_string(tv, false); - if (test.size() < 3) // Allow size > 3; extra stuff ignored (useful for comments) + for (size_t idx = 0; idx < tests.size(); idx++) { + UniValue test = tests[idx]; + string strTest = test.write(); + if (test.size() < 3) // Allow size > 2; extra stuff ignored (useful for comments) { if (test.size() != 1) { BOOST_ERROR("Bad test: " << strTest); diff --git a/src/test/sighash_tests.cpp b/src/test/sighash_tests.cpp index c825a8bad..989ed7428 100644 --- a/src/test/sighash_tests.cpp +++ b/src/test/sighash_tests.cpp @@ -17,12 +17,10 @@ #include #include -#include "json/json_spirit_reader_template.h" -#include "json/json_spirit_utils.h" -#include "json/json_spirit_writer_template.h" -using namespace json_spirit; -extern Array read_json(const std::string& jsondata); +#include + +extern UniValue read_json(const std::string& jsondata); // Old script.cpp SignatureHash function uint256 static SignatureHashOld(CScript scriptCode, const CTransaction& txTo, unsigned int nIn, int nHashType) @@ -205,12 +203,11 @@ BOOST_AUTO_TEST_CASE(sighash_test) // Goal: check that SignatureHash generates correct hash BOOST_AUTO_TEST_CASE(sighash_from_data) { - Array tests = read_json(std::string(json_tests::sighash, json_tests::sighash + sizeof(json_tests::sighash))); + UniValue tests = read_json(std::string(json_tests::sighash, json_tests::sighash + sizeof(json_tests::sighash))); - BOOST_FOREACH(Value& tv, tests) - { - Array test = tv.get_array(); - std::string strTest = write_string(tv, false); + for (size_t idx = 0; idx < tests.size(); idx++) { + UniValue test = tests[idx]; + std::string strTest = test.write(); if (test.size() < 1) // Allow for extra stuff (useful for comments) { BOOST_ERROR("Bad test: " << strTest); diff --git a/src/test/torcontrol_tests.cpp b/src/test/torcontrol_tests.cpp new file mode 100644 index 000000000..68516599d --- /dev/null +++ b/src/test/torcontrol_tests.cpp @@ -0,0 +1,168 @@ +// Copyright (c) 2017 The Zcash developers +// Distributed under the MIT software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. +// +#include "test/test_bitcoin.h" +#include "torcontrol.cpp" + +#include + + +BOOST_FIXTURE_TEST_SUITE(torcontrol_tests, BasicTestingSetup) + +void CheckSplitTorReplyLine(std::string input, std::string command, std::string args) +{ + BOOST_TEST_MESSAGE(std::string("CheckSplitTorReplyLine(") + input + ")"); + auto ret = SplitTorReplyLine(input); + BOOST_CHECK_EQUAL(ret.first, command); + BOOST_CHECK_EQUAL(ret.second, args); +} + +BOOST_AUTO_TEST_CASE(util_SplitTorReplyLine) +{ + // Data we should receive during normal usage + CheckSplitTorReplyLine( + "PROTOCOLINFO PIVERSION", + "PROTOCOLINFO", "PIVERSION"); + CheckSplitTorReplyLine( + "AUTH METHODS=COOKIE,SAFECOOKIE COOKIEFILE=\"/home/x/.tor/control_auth_cookie\"", + "AUTH", "METHODS=COOKIE,SAFECOOKIE COOKIEFILE=\"/home/x/.tor/control_auth_cookie\""); + CheckSplitTorReplyLine( + "AUTH METHODS=NULL", + "AUTH", "METHODS=NULL"); + CheckSplitTorReplyLine( + "AUTH METHODS=HASHEDPASSWORD", + "AUTH", "METHODS=HASHEDPASSWORD"); + CheckSplitTorReplyLine( + "VERSION Tor=\"0.2.9.8 (git-a0df013ea241b026)\"", + "VERSION", "Tor=\"0.2.9.8 (git-a0df013ea241b026)\""); + CheckSplitTorReplyLine( + "AUTHCHALLENGE SERVERHASH=aaaa SERVERNONCE=bbbb", + "AUTHCHALLENGE", "SERVERHASH=aaaa SERVERNONCE=bbbb"); + + // Other valid inputs + CheckSplitTorReplyLine("COMMAND", "COMMAND", ""); + CheckSplitTorReplyLine("COMMAND SOME ARGS", "COMMAND", "SOME ARGS"); + + // These inputs are valid because PROTOCOLINFO accepts an OtherLine that is + // just an OptArguments, which enables multiple spaces to be present + // between the command and arguments. + CheckSplitTorReplyLine("COMMAND ARGS", "COMMAND", " ARGS"); + CheckSplitTorReplyLine("COMMAND EVEN+more ARGS", "COMMAND", " EVEN+more ARGS"); +} + +void CheckParseTorReplyMapping(std::string input, std::map expected) +{ + BOOST_TEST_MESSAGE(std::string("CheckParseTorReplyMapping(") + input + ")"); + auto ret = ParseTorReplyMapping(input); + BOOST_CHECK_EQUAL(ret.size(), expected.size()); + auto r_it = ret.begin(); + auto e_it = expected.begin(); + while (r_it != ret.end() && e_it != expected.end()) { + BOOST_CHECK_EQUAL(r_it->first, e_it->first); + BOOST_CHECK_EQUAL(r_it->second, e_it->second); + r_it++; + e_it++; + } +} + +BOOST_AUTO_TEST_CASE(util_ParseTorReplyMapping) +{ + // Data we should receive during normal usage + CheckParseTorReplyMapping( + "METHODS=COOKIE,SAFECOOKIE COOKIEFILE=\"/home/x/.tor/control_auth_cookie\"", { + {"METHODS", "COOKIE,SAFECOOKIE"}, + {"COOKIEFILE", "/home/x/.tor/control_auth_cookie"}, + }); + CheckParseTorReplyMapping( + "METHODS=NULL", { + {"METHODS", "NULL"}, + }); + CheckParseTorReplyMapping( + "METHODS=HASHEDPASSWORD", { + {"METHODS", "HASHEDPASSWORD"}, + }); + CheckParseTorReplyMapping( + "Tor=\"0.2.9.8 (git-a0df013ea241b026)\"", { + {"Tor", "0.2.9.8 (git-a0df013ea241b026)"}, + }); + CheckParseTorReplyMapping( + "SERVERHASH=aaaa SERVERNONCE=bbbb", { + {"SERVERHASH", "aaaa"}, + {"SERVERNONCE", "bbbb"}, + }); + CheckParseTorReplyMapping( + "ServiceID=exampleonion1234", { + {"ServiceID", "exampleonion1234"}, + }); + CheckParseTorReplyMapping( + "PrivateKey=RSA1024:BLOB", { + {"PrivateKey", "RSA1024:BLOB"}, + }); + CheckParseTorReplyMapping( + "ClientAuth=bob:BLOB", { + {"ClientAuth", "bob:BLOB"}, + }); + + // Other valid inputs + CheckParseTorReplyMapping( + "Foo=Bar=Baz Spam=Eggs", { + {"Foo", "Bar=Baz"}, + {"Spam", "Eggs"}, + }); + CheckParseTorReplyMapping( + "Foo=\"Bar=Baz\"", { + {"Foo", "Bar=Baz"}, + }); + CheckParseTorReplyMapping( + "Foo=\"Bar Baz\"", { + {"Foo", "Bar Baz"}, + }); + + // Escapes (which are left escaped by the parser) + CheckParseTorReplyMapping( + "Foo=\"Bar\\ Baz\"", { + {"Foo", "Bar\\ Baz"}, + }); + CheckParseTorReplyMapping( + "Foo=\"Bar\\Baz\"", { + {"Foo", "Bar\\Baz"}, + }); + CheckParseTorReplyMapping( + "Foo=\"Bar\\@Baz\"", { + {"Foo", "Bar\\@Baz"}, + }); + CheckParseTorReplyMapping( + "Foo=\"Bar\\\"Baz\" Spam=\"\\\"Eggs\\\"\"", { + {"Foo", "Bar\\\"Baz"}, + {"Spam", "\\\"Eggs\\\""}, + }); + CheckParseTorReplyMapping( + "Foo=\"Bar\\\\Baz\"", { + {"Foo", "Bar\\\\Baz"}, + }); + + // A more complex valid grammar. PROTOCOLINFO accepts a VersionLine that + // takes a key=value pair followed by an OptArguments, making this valid. + // Because an OptArguments contains no semantic data, there is no point in + // parsing it. + CheckParseTorReplyMapping( + "SOME=args,here MORE optional=arguments here", { + {"SOME", "args,here"}, + }); + + // Inputs that are effectively invalid under the target grammar. + // PROTOCOLINFO accepts an OtherLine that is just an OptArguments, which + // would make these inputs valid. However, + // - This parser is never used in that situation, because the + // SplitTorReplyLine parser enables OtherLine to be skipped. + // - Even if these were valid, an OptArguments contains no semantic data, + // so there is no point in parsing it. + CheckParseTorReplyMapping("ARGS", {}); + CheckParseTorReplyMapping("MORE ARGS", {}); + CheckParseTorReplyMapping("MORE ARGS", {}); + CheckParseTorReplyMapping("EVEN more=ARGS", {}); + CheckParseTorReplyMapping("EVEN+more ARGS", {}); +} + +BOOST_AUTO_TEST_SUITE_END() diff --git a/src/test/transaction_tests.cpp b/src/test/transaction_tests.cpp index 96ab6727b..7723cce1d 100644 --- a/src/test/transaction_tests.cpp +++ b/src/test/transaction_tests.cpp @@ -23,19 +23,20 @@ #include #include +#include #include #include -#include "json/json_spirit_writer_template.h" + +#include #include "zcash/Note.hpp" #include "zcash/Address.hpp" #include "zcash/Proof.hpp" using namespace std; -using namespace json_spirit; // In script_tests.cpp -extern Array read_json(const std::string& jsondata); +extern UniValue read_json(const std::string& jsondata); static std::map mapFlagNames = boost::assign::map_list_of (string("NONE"), (unsigned int)SCRIPT_VERIFY_NONE) @@ -96,33 +97,32 @@ BOOST_AUTO_TEST_CASE(tx_valid) // ... where all scripts are stringified scripts. // // verifyFlags is a comma separated list of script verification flags to apply, or "NONE" - Array tests = read_json(std::string(json_tests::tx_valid, json_tests::tx_valid + sizeof(json_tests::tx_valid))); + UniValue tests = read_json(std::string(json_tests::tx_valid, json_tests::tx_valid + sizeof(json_tests::tx_valid))); auto verifier = libzcash::ProofVerifier::Strict(); ScriptError err; - BOOST_FOREACH(Value& tv, tests) - { - Array test = tv.get_array(); - string strTest = write_string(tv, false); - if (test[0].type() == array_type) + for (size_t idx = 0; idx < tests.size(); idx++) { + UniValue test = tests[idx]; + string strTest = test.write(); + if (test[0].isArray()) { - if (test.size() != 3 || test[1].type() != str_type || test[2].type() != str_type) + if (test.size() != 3 || !test[1].isStr() || !test[2].isStr()) { BOOST_ERROR("Bad test: " << strTest); continue; } map mapprevOutScriptPubKeys; - Array inputs = test[0].get_array(); + UniValue inputs = test[0].get_array(); bool fValid = true; - BOOST_FOREACH(Value& input, inputs) - { - if (input.type() != array_type) + for (size_t inpIdx = 0; inpIdx < inputs.size(); inpIdx++) { + const UniValue& input = inputs[inpIdx]; + if (!input.isArray()) { fValid = false; break; } - Array vinput = input.get_array(); + UniValue vinput = input.get_array(); if (vinput.size() != 3) { fValid = false; @@ -173,33 +173,32 @@ BOOST_AUTO_TEST_CASE(tx_invalid) // ... where all scripts are stringified scripts. // // verifyFlags is a comma separated list of script verification flags to apply, or "NONE" - Array tests = read_json(std::string(json_tests::tx_invalid, json_tests::tx_invalid + sizeof(json_tests::tx_invalid))); + UniValue tests = read_json(std::string(json_tests::tx_invalid, json_tests::tx_invalid + sizeof(json_tests::tx_invalid))); auto verifier = libzcash::ProofVerifier::Strict(); ScriptError err; - BOOST_FOREACH(Value& tv, tests) - { - Array test = tv.get_array(); - string strTest = write_string(tv, false); - if (test[0].type() == array_type) + for (size_t idx = 0; idx < tests.size(); idx++) { + UniValue test = tests[idx]; + string strTest = test.write(); + if (test[0].isArray()) { - if (test.size() != 3 || test[1].type() != str_type || test[2].type() != str_type) + if (test.size() != 3 || !test[1].isStr() || !test[2].isStr()) { BOOST_ERROR("Bad test: " << strTest); continue; } map mapprevOutScriptPubKeys; - Array inputs = test[0].get_array(); + UniValue inputs = test[0].get_array(); bool fValid = true; - BOOST_FOREACH(Value& input, inputs) - { - if (input.type() != array_type) + for (size_t inpIdx = 0; inpIdx < inputs.size(); inpIdx++) { + const UniValue& input = inputs[inpIdx]; + if (!input.isArray()) { fValid = false; break; } - Array vinput = input.get_array(); + UniValue vinput = input.get_array(); if (vinput.size() != 3) { fValid = false; @@ -475,6 +474,7 @@ BOOST_AUTO_TEST_CASE(test_simple_joinsplit_invalidity) jsdesc->nullifiers[1] = GetRandHash(); newTx.vjoinsplit.push_back(JSDescription()); + jsdesc = &newTx.vjoinsplit[0]; // Fixes #2026. Related PR #2078. JSDescription *jsdesc2 = &newTx.vjoinsplit[1]; jsdesc2->nullifiers[0] = GetRandHash(); @@ -560,7 +560,7 @@ BOOST_AUTO_TEST_CASE(test_IsStandard) string reason; BOOST_CHECK(IsStandardTx(t, reason)); - t.vout[0].nValue = 501; // dust + t.vout[0].nValue = 53; // dust BOOST_CHECK(!IsStandardTx(t, reason)); t.vout[0].nValue = 2730; // not dust @@ -639,7 +639,7 @@ BOOST_AUTO_TEST_CASE(test_IsStandardV2) BOOST_CHECK(IsStandardTx(t, reason)); // v2 transactions can still be non-standard for the same reasons as v1. - t.vout[0].nValue = 501; // dust + t.vout[0].nValue = 53; // dust BOOST_CHECK(!IsStandardTx(t, reason)); // v3 is not standard. diff --git a/src/test/univalue_tests.cpp b/src/test/univalue_tests.cpp index 8cecfbf65..f3bbfaef1 100644 --- a/src/test/univalue_tests.cpp +++ b/src/test/univalue_tests.cpp @@ -6,7 +6,7 @@ #include #include #include -#include "univalue/univalue.h" +#include #include "test/test_bitcoin.h" #include @@ -63,6 +63,48 @@ BOOST_AUTO_TEST_CASE(univalue_constructor) BOOST_CHECK_EQUAL(v9.getValStr(), "zappa"); } +BOOST_AUTO_TEST_CASE(univalue_typecheck) +{ + UniValue v1; + BOOST_CHECK(v1.setNumStr("1")); + BOOST_CHECK(v1.isNum()); + BOOST_CHECK_THROW(v1.get_bool(), runtime_error); + + UniValue v2; + BOOST_CHECK(v2.setBool(true)); + BOOST_CHECK_EQUAL(v2.get_bool(), true); + BOOST_CHECK_THROW(v2.get_int(), runtime_error); + + UniValue v3; + BOOST_CHECK(v3.setNumStr("32482348723847471234")); + BOOST_CHECK_THROW(v3.get_int64(), runtime_error); + BOOST_CHECK(v3.setNumStr("1000")); + BOOST_CHECK_EQUAL(v3.get_int64(), 1000); + + UniValue v4; + BOOST_CHECK(v4.setNumStr("2147483648")); + BOOST_CHECK_EQUAL(v4.get_int64(), 2147483648); + BOOST_CHECK_THROW(v4.get_int(), runtime_error); + BOOST_CHECK(v4.setNumStr("1000")); + BOOST_CHECK_EQUAL(v4.get_int(), 1000); + BOOST_CHECK_THROW(v4.get_str(), runtime_error); + BOOST_CHECK_EQUAL(v4.get_real(), 1000); + BOOST_CHECK_THROW(v4.get_array(), runtime_error); + BOOST_CHECK_THROW(v4.getKeys(), runtime_error); + BOOST_CHECK_THROW(v4.getValues(), runtime_error); + BOOST_CHECK_THROW(v4.get_obj(), runtime_error); + + UniValue v5; + BOOST_CHECK(v5.read("[true, 10]")); + BOOST_CHECK_NO_THROW(v5.get_array()); + std::vector vals = v5.getValues(); + BOOST_CHECK_THROW(vals[0].get_int(), runtime_error); + BOOST_CHECK_EQUAL(vals[0].get_bool(), true); + + BOOST_CHECK_EQUAL(vals[1].get_int(), 10); + BOOST_CHECK_THROW(vals[1].get_bool(), runtime_error); +} + BOOST_AUTO_TEST_CASE(univalue_set) { UniValue v(UniValue::VSTR, "foo"); @@ -72,13 +114,13 @@ BOOST_AUTO_TEST_CASE(univalue_set) BOOST_CHECK(v.setObject()); BOOST_CHECK(v.isObject()); - BOOST_CHECK_EQUAL(v.count(), 0); + BOOST_CHECK_EQUAL(v.size(), 0); BOOST_CHECK_EQUAL(v.getType(), UniValue::VOBJ); BOOST_CHECK(v.empty()); BOOST_CHECK(v.setArray()); BOOST_CHECK(v.isArray()); - BOOST_CHECK_EQUAL(v.count(), 0); + BOOST_CHECK_EQUAL(v.size(), 0); BOOST_CHECK(v.setStr("zum")); BOOST_CHECK(v.isStr()); @@ -145,7 +187,7 @@ BOOST_AUTO_TEST_CASE(univalue_array) BOOST_CHECK(arr.push_backV(vec)); BOOST_CHECK_EQUAL(arr.empty(), false); - BOOST_CHECK_EQUAL(arr.count(), 5); + BOOST_CHECK_EQUAL(arr.size(), 5); BOOST_CHECK_EQUAL(arr[0].getValStr(), "1023"); BOOST_CHECK_EQUAL(arr[1].getValStr(), "zippy"); @@ -157,7 +199,7 @@ BOOST_AUTO_TEST_CASE(univalue_array) arr.clear(); BOOST_CHECK(arr.empty()); - BOOST_CHECK_EQUAL(arr.count(), 0); + BOOST_CHECK_EQUAL(arr.size(), 0); } BOOST_AUTO_TEST_CASE(univalue_object) @@ -197,7 +239,7 @@ BOOST_AUTO_TEST_CASE(univalue_object) BOOST_CHECK(obj.pushKVs(obj2)); BOOST_CHECK_EQUAL(obj.empty(), false); - BOOST_CHECK_EQUAL(obj.count(), 9); + BOOST_CHECK_EQUAL(obj.size(), 9); BOOST_CHECK_EQUAL(obj["age"].getValStr(), "100"); BOOST_CHECK_EQUAL(obj["first"].getValStr(), "John"); @@ -240,11 +282,11 @@ BOOST_AUTO_TEST_CASE(univalue_object) obj.clear(); BOOST_CHECK(obj.empty()); - BOOST_CHECK_EQUAL(obj.count(), 0); + BOOST_CHECK_EQUAL(obj.size(), 0); } static const char *json1 = -"[1.1,{\"key1\":\"str\",\"key2\":800,\"key3\":{\"name\":\"martian\"}}]"; +"[1.10000000,{\"key1\":\"str\\u0000\",\"key2\":800,\"key3\":{\"name\":\"martian http://test.com\"}}]"; BOOST_AUTO_TEST_CASE(univalue_readwrite) { @@ -255,16 +297,18 @@ BOOST_AUTO_TEST_CASE(univalue_readwrite) BOOST_CHECK(v.read(strJson1)); BOOST_CHECK(v.isArray()); - BOOST_CHECK_EQUAL(v.count(), 2); + BOOST_CHECK_EQUAL(v.size(), 2); - BOOST_CHECK_EQUAL(v[0].getValStr(), "1.1"); + BOOST_CHECK_EQUAL(v[0].getValStr(), "1.10000000"); UniValue obj = v[1]; BOOST_CHECK(obj.isObject()); - BOOST_CHECK_EQUAL(obj.count(), 3); + BOOST_CHECK_EQUAL(obj.size(), 3); BOOST_CHECK(obj["key1"].isStr()); - BOOST_CHECK_EQUAL(obj["key1"].getValStr(), "str"); + std::string correctValue("str"); + correctValue.push_back('\0'); + BOOST_CHECK_EQUAL(obj["key1"].getValStr(), correctValue); BOOST_CHECK(obj["key2"].isNum()); BOOST_CHECK_EQUAL(obj["key2"].getValStr(), "800"); BOOST_CHECK(obj["key3"].isObject()); diff --git a/src/test/util_tests.cpp b/src/test/util_tests.cpp index 46114c066..df8f8f43b 100644 --- a/src/test/util_tests.cpp +++ b/src/test/util_tests.cpp @@ -146,29 +146,27 @@ BOOST_AUTO_TEST_CASE(util_GetArg) BOOST_AUTO_TEST_CASE(util_FormatMoney) { - BOOST_CHECK_EQUAL(FormatMoney(0, false), "0.00"); - BOOST_CHECK_EQUAL(FormatMoney((COIN/10000)*123456789, false), "12345.6789"); - BOOST_CHECK_EQUAL(FormatMoney(COIN, true), "+1.00"); - BOOST_CHECK_EQUAL(FormatMoney(-COIN, false), "-1.00"); - BOOST_CHECK_EQUAL(FormatMoney(-COIN, true), "-1.00"); + BOOST_CHECK_EQUAL(FormatMoney(0), "0.00"); + BOOST_CHECK_EQUAL(FormatMoney((COIN/10000)*123456789), "12345.6789"); + BOOST_CHECK_EQUAL(FormatMoney(-COIN), "-1.00"); - BOOST_CHECK_EQUAL(FormatMoney(COIN*100000000, false), "100000000.00"); - BOOST_CHECK_EQUAL(FormatMoney(COIN*10000000, false), "10000000.00"); - BOOST_CHECK_EQUAL(FormatMoney(COIN*1000000, false), "1000000.00"); - BOOST_CHECK_EQUAL(FormatMoney(COIN*100000, false), "100000.00"); - BOOST_CHECK_EQUAL(FormatMoney(COIN*10000, false), "10000.00"); - BOOST_CHECK_EQUAL(FormatMoney(COIN*1000, false), "1000.00"); - BOOST_CHECK_EQUAL(FormatMoney(COIN*100, false), "100.00"); - BOOST_CHECK_EQUAL(FormatMoney(COIN*10, false), "10.00"); - BOOST_CHECK_EQUAL(FormatMoney(COIN, false), "1.00"); - BOOST_CHECK_EQUAL(FormatMoney(COIN/10, false), "0.10"); - BOOST_CHECK_EQUAL(FormatMoney(COIN/100, false), "0.01"); - BOOST_CHECK_EQUAL(FormatMoney(COIN/1000, false), "0.001"); - BOOST_CHECK_EQUAL(FormatMoney(COIN/10000, false), "0.0001"); - BOOST_CHECK_EQUAL(FormatMoney(COIN/100000, false), "0.00001"); - BOOST_CHECK_EQUAL(FormatMoney(COIN/1000000, false), "0.000001"); - BOOST_CHECK_EQUAL(FormatMoney(COIN/10000000, false), "0.0000001"); - BOOST_CHECK_EQUAL(FormatMoney(COIN/100000000, false), "0.00000001"); + BOOST_CHECK_EQUAL(FormatMoney(COIN*100000000), "100000000.00"); + BOOST_CHECK_EQUAL(FormatMoney(COIN*10000000), "10000000.00"); + BOOST_CHECK_EQUAL(FormatMoney(COIN*1000000), "1000000.00"); + BOOST_CHECK_EQUAL(FormatMoney(COIN*100000), "100000.00"); + BOOST_CHECK_EQUAL(FormatMoney(COIN*10000), "10000.00"); + BOOST_CHECK_EQUAL(FormatMoney(COIN*1000), "1000.00"); + BOOST_CHECK_EQUAL(FormatMoney(COIN*100), "100.00"); + BOOST_CHECK_EQUAL(FormatMoney(COIN*10), "10.00"); + BOOST_CHECK_EQUAL(FormatMoney(COIN), "1.00"); + BOOST_CHECK_EQUAL(FormatMoney(COIN/10), "0.10"); + BOOST_CHECK_EQUAL(FormatMoney(COIN/100), "0.01"); + BOOST_CHECK_EQUAL(FormatMoney(COIN/1000), "0.001"); + BOOST_CHECK_EQUAL(FormatMoney(COIN/10000), "0.0001"); + BOOST_CHECK_EQUAL(FormatMoney(COIN/100000), "0.00001"); + BOOST_CHECK_EQUAL(FormatMoney(COIN/1000000), "0.000001"); + BOOST_CHECK_EQUAL(FormatMoney(COIN/10000000), "0.0000001"); + BOOST_CHECK_EQUAL(FormatMoney(COIN/100000000), "0.00000001"); } BOOST_AUTO_TEST_CASE(util_ParseMoney) @@ -322,9 +320,16 @@ BOOST_AUTO_TEST_CASE(test_ParseInt32) BOOST_CHECK(ParseInt32("-2147483648", &n) && n == -2147483648); BOOST_CHECK(ParseInt32("-1234", &n) && n == -1234); // Invalid values + BOOST_CHECK(!ParseInt32("", &n)); + BOOST_CHECK(!ParseInt32(" 1", &n)); // no padding inside + BOOST_CHECK(!ParseInt32("1 ", &n)); BOOST_CHECK(!ParseInt32("1a", &n)); BOOST_CHECK(!ParseInt32("aap", &n)); BOOST_CHECK(!ParseInt32("0x1", &n)); // no hex + BOOST_CHECK(!ParseInt32("0x1", &n)); // no hex + const char test_bytes[] = {'1', 0, '1'}; + std::string teststr(test_bytes, sizeof(test_bytes)); + BOOST_CHECK(!ParseInt32(teststr, &n)); // no embedded NULs // Overflow and underflow BOOST_CHECK(!ParseInt32("-2147483649", NULL)); BOOST_CHECK(!ParseInt32("2147483648", NULL)); @@ -332,6 +337,64 @@ BOOST_AUTO_TEST_CASE(test_ParseInt32) BOOST_CHECK(!ParseInt32("32482348723847471234", NULL)); } +BOOST_AUTO_TEST_CASE(test_ParseInt64) +{ + int64_t n; + // Valid values + BOOST_CHECK(ParseInt64("1234", NULL)); + BOOST_CHECK(ParseInt64("0", &n) && n == 0LL); + BOOST_CHECK(ParseInt64("1234", &n) && n == 1234LL); + BOOST_CHECK(ParseInt64("01234", &n) && n == 1234LL); // no octal + BOOST_CHECK(ParseInt64("2147483647", &n) && n == 2147483647LL); + BOOST_CHECK(ParseInt64("-2147483648", &n) && n == -2147483648LL); + BOOST_CHECK(ParseInt64("9223372036854775807", &n) && n == (int64_t)9223372036854775807); + BOOST_CHECK(ParseInt64("-9223372036854775808", &n) && n == (int64_t)-9223372036854775807-1); + BOOST_CHECK(ParseInt64("-1234", &n) && n == -1234LL); + // Invalid values + BOOST_CHECK(!ParseInt64("", &n)); + BOOST_CHECK(!ParseInt64(" 1", &n)); // no padding inside + BOOST_CHECK(!ParseInt64("1 ", &n)); + BOOST_CHECK(!ParseInt64("1a", &n)); + BOOST_CHECK(!ParseInt64("aap", &n)); + BOOST_CHECK(!ParseInt64("0x1", &n)); // no hex + const char test_bytes[] = {'1', 0, '1'}; + std::string teststr(test_bytes, sizeof(test_bytes)); + BOOST_CHECK(!ParseInt64(teststr, &n)); // no embedded NULs + // Overflow and underflow + BOOST_CHECK(!ParseInt64("-9223372036854775809", NULL)); + BOOST_CHECK(!ParseInt64("9223372036854775808", NULL)); + BOOST_CHECK(!ParseInt64("-32482348723847471234", NULL)); + BOOST_CHECK(!ParseInt64("32482348723847471234", NULL)); +} + +BOOST_AUTO_TEST_CASE(test_ParseDouble) +{ + double n; + // Valid values + BOOST_CHECK(ParseDouble("1234", NULL)); + BOOST_CHECK(ParseDouble("0", &n) && n == 0.0); + BOOST_CHECK(ParseDouble("1234", &n) && n == 1234.0); + BOOST_CHECK(ParseDouble("01234", &n) && n == 1234.0); // no octal + BOOST_CHECK(ParseDouble("2147483647", &n) && n == 2147483647.0); + BOOST_CHECK(ParseDouble("-2147483648", &n) && n == -2147483648.0); + BOOST_CHECK(ParseDouble("-1234", &n) && n == -1234.0); + BOOST_CHECK(ParseDouble("1e6", &n) && n == 1e6); + BOOST_CHECK(ParseDouble("-1e6", &n) && n == -1e6); + // Invalid values + BOOST_CHECK(!ParseDouble("", &n)); + BOOST_CHECK(!ParseDouble(" 1", &n)); // no padding inside + BOOST_CHECK(!ParseDouble("1 ", &n)); + BOOST_CHECK(!ParseDouble("1a", &n)); + BOOST_CHECK(!ParseDouble("aap", &n)); + BOOST_CHECK(!ParseDouble("0x1", &n)); // no hex + const char test_bytes[] = {'1', 0, '1'}; + std::string teststr(test_bytes, sizeof(test_bytes)); + BOOST_CHECK(!ParseDouble(teststr, &n)); // no embedded NULs + // Overflow and underflow + BOOST_CHECK(!ParseDouble("-1e10000", NULL)); + BOOST_CHECK(!ParseDouble("1e10000", NULL)); +} + BOOST_AUTO_TEST_CASE(test_FormatParagraph) { BOOST_CHECK_EQUAL(FormatParagraph("", 79, 0), ""); @@ -363,4 +426,70 @@ BOOST_AUTO_TEST_CASE(test_FormatSubVersion) BOOST_CHECK_EQUAL(FormatSubVersion("Test", 99900, comments2), std::string("/Test:0.9.99-beta1(comment1; comment2)/")); BOOST_CHECK_EQUAL(FormatSubVersion("Test", 99950, comments2), std::string("/Test:0.9.99(comment1; comment2)/")); } + +BOOST_AUTO_TEST_CASE(test_ParseFixedPoint) +{ + int64_t amount = 0; + BOOST_CHECK(ParseFixedPoint("0", 8, &amount)); + BOOST_CHECK_EQUAL(amount, 0LL); + BOOST_CHECK(ParseFixedPoint("1", 8, &amount)); + BOOST_CHECK_EQUAL(amount, 100000000LL); + BOOST_CHECK(ParseFixedPoint("0.0", 8, &amount)); + BOOST_CHECK_EQUAL(amount, 0LL); + BOOST_CHECK(ParseFixedPoint("-0.1", 8, &amount)); + BOOST_CHECK_EQUAL(amount, -10000000LL); + BOOST_CHECK(ParseFixedPoint("1.1", 8, &amount)); + BOOST_CHECK_EQUAL(amount, 110000000LL); + BOOST_CHECK(ParseFixedPoint("1.10000000000000000", 8, &amount)); + BOOST_CHECK_EQUAL(amount, 110000000LL); + BOOST_CHECK(ParseFixedPoint("1.1e1", 8, &amount)); + BOOST_CHECK_EQUAL(amount, 1100000000LL); + BOOST_CHECK(ParseFixedPoint("1.1e-1", 8, &amount)); + BOOST_CHECK_EQUAL(amount, 11000000LL); + BOOST_CHECK(ParseFixedPoint("1000", 8, &amount)); + BOOST_CHECK_EQUAL(amount, 100000000000LL); + BOOST_CHECK(ParseFixedPoint("-1000", 8, &amount)); + BOOST_CHECK_EQUAL(amount, -100000000000LL); + BOOST_CHECK(ParseFixedPoint("0.00000001", 8, &amount)); + BOOST_CHECK_EQUAL(amount, 1LL); + BOOST_CHECK(ParseFixedPoint("0.0000000100000000", 8, &amount)); + BOOST_CHECK_EQUAL(amount, 1LL); + BOOST_CHECK(ParseFixedPoint("-0.00000001", 8, &amount)); + BOOST_CHECK_EQUAL(amount, -1LL); + BOOST_CHECK(ParseFixedPoint("1000000000.00000001", 8, &amount)); + BOOST_CHECK_EQUAL(amount, 100000000000000001LL); + BOOST_CHECK(ParseFixedPoint("9999999999.99999999", 8, &amount)); + BOOST_CHECK_EQUAL(amount, 999999999999999999LL); + BOOST_CHECK(ParseFixedPoint("-9999999999.99999999", 8, &amount)); + BOOST_CHECK_EQUAL(amount, -999999999999999999LL); + + BOOST_CHECK(!ParseFixedPoint("", 8, &amount)); + BOOST_CHECK(!ParseFixedPoint("-", 8, &amount)); + BOOST_CHECK(!ParseFixedPoint("a-1000", 8, &amount)); + BOOST_CHECK(!ParseFixedPoint("-a1000", 8, &amount)); + BOOST_CHECK(!ParseFixedPoint("-1000a", 8, &amount)); + BOOST_CHECK(!ParseFixedPoint("-01000", 8, &amount)); + BOOST_CHECK(!ParseFixedPoint("00.1", 8, &amount)); + BOOST_CHECK(!ParseFixedPoint(".1", 8, &amount)); + BOOST_CHECK(!ParseFixedPoint("--0.1", 8, &amount)); + BOOST_CHECK(!ParseFixedPoint("0.000000001", 8, &amount)); + BOOST_CHECK(!ParseFixedPoint("-0.000000001", 8, &amount)); + BOOST_CHECK(!ParseFixedPoint("0.00000001000000001", 8, &amount)); + BOOST_CHECK(!ParseFixedPoint("-10000000000.00000000", 8, &amount)); + BOOST_CHECK(!ParseFixedPoint("10000000000.00000000", 8, &amount)); + BOOST_CHECK(!ParseFixedPoint("-10000000000.00000001", 8, &amount)); + BOOST_CHECK(!ParseFixedPoint("10000000000.00000001", 8, &amount)); + BOOST_CHECK(!ParseFixedPoint("-10000000000.00000009", 8, &amount)); + BOOST_CHECK(!ParseFixedPoint("10000000000.00000009", 8, &amount)); + BOOST_CHECK(!ParseFixedPoint("-99999999999.99999999", 8, &amount)); + BOOST_CHECK(!ParseFixedPoint("99999909999.09999999", 8, &amount)); + BOOST_CHECK(!ParseFixedPoint("92233720368.54775807", 8, &amount)); + BOOST_CHECK(!ParseFixedPoint("92233720368.54775808", 8, &amount)); + BOOST_CHECK(!ParseFixedPoint("-92233720368.54775808", 8, &amount)); + BOOST_CHECK(!ParseFixedPoint("-92233720368.54775809", 8, &amount)); + BOOST_CHECK(!ParseFixedPoint("1.1e", 8, &amount)); + BOOST_CHECK(!ParseFixedPoint("1.1e-", 8, &amount)); + BOOST_CHECK(!ParseFixedPoint("1.", 8, &amount)); +} + BOOST_AUTO_TEST_SUITE_END() diff --git a/src/tinyformat.h b/src/tinyformat.h index e0b5bde76..5971b7af8 100644 --- a/src/tinyformat.h +++ b/src/tinyformat.h @@ -500,7 +500,7 @@ class FormatArg void format(std::ostream& out, const char* fmtBegin, const char* fmtEnd, int ntrunc) const { -/*<<<<<<< HEAD +/* // It would be nice if we could do this from the destructor, but we // can't if TINYFORMAT_ERROR is used to throw an exception! m_fmt = printFormatStringLiteral(m_out, m_fmt); diff --git a/src/torcontrol.cpp b/src/torcontrol.cpp new file mode 100644 index 000000000..60181b440 --- /dev/null +++ b/src/torcontrol.cpp @@ -0,0 +1,726 @@ +#include "torcontrol.h" +#include "utilstrencodings.h" +#include "net.h" +#include "util.h" +#include "crypto/hmac_sha256.h" + +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +/** Default control port */ +const std::string DEFAULT_TOR_CONTROL = "127.0.0.1:9051"; +/** Tor cookie size (from control-spec.txt) */ +static const int TOR_COOKIE_SIZE = 32; +/** Size of client/server nonce for SAFECOOKIE */ +static const int TOR_NONCE_SIZE = 32; +/** For computing serverHash in SAFECOOKIE */ +static const std::string TOR_SAFE_SERVERKEY = "Tor safe cookie authentication server-to-controller hash"; +/** For computing clientHash in SAFECOOKIE */ +static const std::string TOR_SAFE_CLIENTKEY = "Tor safe cookie authentication controller-to-server hash"; +/** Exponential backoff configuration - initial timeout in seconds */ +static const float RECONNECT_TIMEOUT_START = 1.0; +/** Exponential backoff configuration - growth factor */ +static const float RECONNECT_TIMEOUT_EXP = 1.5; +/** Maximum length for lines received on TorControlConnection. + * tor-control-spec.txt mentions that there is explicitly no limit defined to line length, + * this is belt-and-suspenders sanity limit to prevent memory exhaustion. + */ +static const int MAX_LINE_LENGTH = 100000; + +/****** Low-level TorControlConnection ********/ + +/** Reply from Tor, can be single or multi-line */ +class TorControlReply +{ +public: + TorControlReply() { Clear(); } + + int code; + std::vector lines; + + void Clear() + { + code = 0; + lines.clear(); + } +}; + +/** Low-level handling for Tor control connection. + * Speaks the SMTP-like protocol as defined in torspec/control-spec.txt + */ +class TorControlConnection +{ +public: + typedef boost::function ConnectionCB; + typedef boost::function ReplyHandlerCB; + + /** Create a new TorControlConnection. + */ + TorControlConnection(struct event_base *base); + ~TorControlConnection(); + + /** + * Connect to a Tor control port. + * target is address of the form host:port. + * connected is the handler that is called when connection is successfully established. + * disconnected is a handler that is called when the connection is broken. + * Return true on success. + */ + bool Connect(const std::string &target, const ConnectionCB& connected, const ConnectionCB& disconnected); + + /** + * Disconnect from Tor control port. + */ + bool Disconnect(); + + /** Send a command, register a handler for the reply. + * A trailing CRLF is automatically added. + * Return true on success. + */ + bool Command(const std::string &cmd, const ReplyHandlerCB& reply_handler); + + /** Response handlers for async replies */ + boost::signals2::signal async_handler; +private: + /** Callback when ready for use */ + boost::function connected; + /** Callback when connection lost */ + boost::function disconnected; + /** Libevent event base */ + struct event_base *base; + /** Connection to control socket */ + struct bufferevent *b_conn; + /** Message being received */ + TorControlReply message; + /** Response handlers */ + std::deque reply_handlers; + + /** Libevent handlers: internal */ + static void readcb(struct bufferevent *bev, void *ctx); + static void eventcb(struct bufferevent *bev, short what, void *ctx); +}; + +TorControlConnection::TorControlConnection(struct event_base *base): + base(base), b_conn(0) +{ +} + +TorControlConnection::~TorControlConnection() +{ + if (b_conn) + bufferevent_free(b_conn); +} + +void TorControlConnection::readcb(struct bufferevent *bev, void *ctx) +{ + TorControlConnection *self = (TorControlConnection*)ctx; + struct evbuffer *input = bufferevent_get_input(bev); + size_t n_read_out = 0; + char *line; + assert(input); + // If there is not a whole line to read, evbuffer_readln returns NULL + while((line = evbuffer_readln(input, &n_read_out, EVBUFFER_EOL_CRLF)) != NULL) + { + std::string s(line, n_read_out); + free(line); + if (s.size() < 4) // Short line + continue; + // (-|+| ) + self->message.code = atoi(s.substr(0,3)); + self->message.lines.push_back(s.substr(4)); + char ch = s[3]; // '-','+' or ' ' + if (ch == ' ') { + // Final line, dispatch reply and clean up + if (self->message.code >= 600) { + // Dispatch async notifications to async handler + // Synchronous and asynchronous messages are never interleaved + self->async_handler(*self, self->message); + } else { + if (!self->reply_handlers.empty()) { + // Invoke reply handler with message + self->reply_handlers.front()(*self, self->message); + self->reply_handlers.pop_front(); + } else { + LogPrint("tor", "tor: Received unexpected sync reply %i\n", self->message.code); + } + } + self->message.Clear(); + } + } + // Check for size of buffer - protect against memory exhaustion with very long lines + // Do this after evbuffer_readln to make sure all full lines have been + // removed from the buffer. Everything left is an incomplete line. + if (evbuffer_get_length(input) > MAX_LINE_LENGTH) { + LogPrintf("tor: Disconnecting because MAX_LINE_LENGTH exceeded\n"); + self->Disconnect(); + } +} + +void TorControlConnection::eventcb(struct bufferevent *bev, short what, void *ctx) +{ + TorControlConnection *self = (TorControlConnection*)ctx; + if (what & BEV_EVENT_CONNECTED) { + LogPrint("tor", "tor: Successfully connected!\n"); + self->connected(*self); + } else if (what & (BEV_EVENT_EOF|BEV_EVENT_ERROR)) { + if (what & BEV_EVENT_ERROR) + LogPrint("tor", "tor: Error connecting to Tor control socket\n"); + else + LogPrint("tor", "tor: End of stream\n"); + self->Disconnect(); + self->disconnected(*self); + } +} + +bool TorControlConnection::Connect(const std::string &target, const ConnectionCB& connected, const ConnectionCB& disconnected) +{ + if (b_conn) + Disconnect(); + // Parse target address:port + struct sockaddr_storage connect_to_addr; + int connect_to_addrlen = sizeof(connect_to_addr); + if (evutil_parse_sockaddr_port(target.c_str(), + (struct sockaddr*)&connect_to_addr, &connect_to_addrlen)<0) { + LogPrintf("tor: Error parsing socket address %s\n", target); + return false; + } + + // Create a new socket, set up callbacks and enable notification bits + b_conn = bufferevent_socket_new(base, -1, BEV_OPT_CLOSE_ON_FREE); + if (!b_conn) + return false; + bufferevent_setcb(b_conn, TorControlConnection::readcb, NULL, TorControlConnection::eventcb, this); + bufferevent_enable(b_conn, EV_READ|EV_WRITE); + this->connected = connected; + this->disconnected = disconnected; + + // Finally, connect to target + if (bufferevent_socket_connect(b_conn, (struct sockaddr*)&connect_to_addr, connect_to_addrlen) < 0) { + LogPrintf("tor: Error connecting to address %s\n", target); + return false; + } + return true; +} + +bool TorControlConnection::Disconnect() +{ + if (b_conn) + bufferevent_free(b_conn); + b_conn = 0; + return true; +} + +bool TorControlConnection::Command(const std::string &cmd, const ReplyHandlerCB& reply_handler) +{ + if (!b_conn) + return false; + struct evbuffer *buf = bufferevent_get_output(b_conn); + if (!buf) + return false; + evbuffer_add(buf, cmd.data(), cmd.size()); + evbuffer_add(buf, "\r\n", 2); + reply_handlers.push_back(reply_handler); + return true; +} + +/****** General parsing utilities ********/ + +/* Split reply line in the form 'AUTH METHODS=...' into a type + * 'AUTH' and arguments 'METHODS=...'. + * Grammar is implicitly defined in https://spec.torproject.org/control-spec by + * the server reply formats for PROTOCOLINFO (S3.21) and AUTHCHALLENGE (S3.24). + */ +static std::pair SplitTorReplyLine(const std::string &s) +{ + size_t ptr=0; + std::string type; + while (ptr < s.size() && s[ptr] != ' ') { + type.push_back(s[ptr]); + ++ptr; + } + if (ptr < s.size()) + ++ptr; // skip ' ' + return make_pair(type, s.substr(ptr)); +} + +/** Parse reply arguments in the form 'METHODS=COOKIE,SAFECOOKIE COOKIEFILE=".../control_auth_cookie"'. + * Returns a map of keys to values, or an empty map if there was an error. + * Grammar is implicitly defined in https://spec.torproject.org/control-spec by + * the server reply formats for PROTOCOLINFO (S3.21), AUTHCHALLENGE (S3.24), + * and ADD_ONION (S3.27). See also sections 2.1 and 2.3. + */ +static std::map ParseTorReplyMapping(const std::string &s) +{ + std::map mapping; + size_t ptr=0; + while (ptr < s.size()) { + std::string key, value; + while (ptr < s.size() && s[ptr] != '=' && s[ptr] != ' ') { + key.push_back(s[ptr]); + ++ptr; + } + if (ptr == s.size()) // unexpected end of line + return std::map(); + if (s[ptr] == ' ') // The remaining string is an OptArguments + break; + ++ptr; // skip '=' + if (ptr < s.size() && s[ptr] == '"') { // Quoted string + ++ptr; // skip opening '"' + bool escape_next = false; + while (ptr < s.size() && (escape_next || s[ptr] != '"')) { + escape_next = (s[ptr] == '\\'); + value.push_back(s[ptr]); + ++ptr; + } + if (ptr == s.size()) // unexpected end of line + return std::map(); + ++ptr; // skip closing '"' + /* TODO: unescape value - according to the spec this depends on the + * context, some strings use C-LogPrintf style escape codes, some + * don't. So may be better handled at the call site. + */ + } else { // Unquoted value. Note that values can contain '=' at will, just no spaces + while (ptr < s.size() && s[ptr] != ' ') { + value.push_back(s[ptr]); + ++ptr; + } + } + if (ptr < s.size() && s[ptr] == ' ') + ++ptr; // skip ' ' after key=value + mapping[key] = value; + } + return mapping; +} + +/** Read full contents of a file and return them in a std::string. + * Returns a pair . + * If an error occured, status will be false, otherwise status will be true and the data will be returned in string. + * + * @param maxsize Puts a maximum size limit on the file that is read. If the file is larger than this, truncated data + * (with len > maxsize) will be returned. + */ +static std::pair ReadBinaryFile(const std::string &filename, size_t maxsize=std::numeric_limits::max()) +{ + FILE *f = fopen(filename.c_str(), "rb"); + if (f == NULL) + return std::make_pair(false,""); + std::string retval; + char buffer[128]; + size_t n; + while ((n=fread(buffer, 1, sizeof(buffer), f)) > 0) { + // Check for reading errors so we don't return any data if we couldn't + // read the entire file (or up to maxsize) + if (ferror(f)) + return std::make_pair(false,""); + retval.append(buffer, buffer+n); + if (retval.size() > maxsize) + break; + } + fclose(f); + return std::make_pair(true,retval); +} + +/** Write contents of std::string to a file. + * @return true on success. + */ +static bool WriteBinaryFile(const std::string &filename, const std::string &data) +{ + FILE *f = fopen(filename.c_str(), "wb"); + if (f == NULL) + return false; + if (fwrite(data.data(), 1, data.size(), f) != data.size()) { + fclose(f); + return false; + } + fclose(f); + return true; +} + +/****** Bitcoin specific TorController implementation ********/ + +/** Controller that connects to Tor control socket, authenticate, then create + * and maintain a ephemeral hidden service. + */ +class TorController +{ +public: + TorController(struct event_base* base, const std::string& target); + ~TorController(); + + /** Get name fo file to store private key in */ + std::string GetPrivateKeyFile(); + + /** Reconnect, after getting disconnected */ + void Reconnect(); +private: + struct event_base* base; + std::string target; + TorControlConnection conn; + std::string private_key; + std::string service_id; + bool reconnect; + struct event *reconnect_ev; + float reconnect_timeout; + CService service; + /** Cooie for SAFECOOKIE auth */ + std::vector cookie; + /** ClientNonce for SAFECOOKIE auth */ + std::vector clientNonce; + + /** Callback for ADD_ONION result */ + void add_onion_cb(TorControlConnection& conn, const TorControlReply& reply); + /** Callback for AUTHENTICATE result */ + void auth_cb(TorControlConnection& conn, const TorControlReply& reply); + /** Callback for AUTHCHALLENGE result */ + void authchallenge_cb(TorControlConnection& conn, const TorControlReply& reply); + /** Callback for PROTOCOLINFO result */ + void protocolinfo_cb(TorControlConnection& conn, const TorControlReply& reply); + /** Callback after successful connection */ + void connected_cb(TorControlConnection& conn); + /** Callback after connection lost or failed connection attempt */ + void disconnected_cb(TorControlConnection& conn); + + /** Callback for reconnect timer */ + static void reconnect_cb(evutil_socket_t fd, short what, void *arg); +}; + +TorController::TorController(struct event_base* baseIn, const std::string& target): + base(baseIn), + target(target), conn(base), reconnect(true), reconnect_ev(0), + reconnect_timeout(RECONNECT_TIMEOUT_START) +{ + reconnect_ev = event_new(base, -1, 0, reconnect_cb, this); + if (!reconnect_ev) + LogPrintf("tor: Failed to create event for reconnection: out of memory?\n"); + // Start connection attempts immediately + if (!conn.Connect(target, boost::bind(&TorController::connected_cb, this, _1), + boost::bind(&TorController::disconnected_cb, this, _1) )) { + LogPrintf("tor: Initiating connection to Tor control port %s failed\n", target); + } + // Read service private key if cached + std::pair pkf = ReadBinaryFile(GetPrivateKeyFile()); + if (pkf.first) { + LogPrint("tor", "tor: Reading cached private key from %s\n", GetPrivateKeyFile()); + private_key = pkf.second; + } +} + +TorController::~TorController() +{ + if (reconnect_ev) { + event_free(reconnect_ev); + reconnect_ev = 0; + } + if (service.IsValid()) { + RemoveLocal(service); + } +} + +void TorController::add_onion_cb(TorControlConnection& conn, const TorControlReply& reply) +{ + if (reply.code == 250) { + LogPrint("tor", "tor: ADD_ONION successful\n"); + BOOST_FOREACH(const std::string &s, reply.lines) { + std::map m = ParseTorReplyMapping(s); + std::map::iterator i; + if ((i = m.find("ServiceID")) != m.end()) + service_id = i->second; + if ((i = m.find("PrivateKey")) != m.end()) + private_key = i->second; + } + if (service_id.empty()) { + LogPrintf("tor: Error parsing ADD_ONION parameters:\n"); + for (const std::string &s : reply.lines) { + LogPrintf(" %s\n", SanitizeString(s)); + } + return; + } + + service = CService(service_id+".onion", GetListenPort(), false); + LogPrintf("tor: Got service ID %s, advertizing service %s\n", service_id, service.ToString()); + if (WriteBinaryFile(GetPrivateKeyFile(), private_key)) { + LogPrint("tor", "tor: Cached service private key to %s\n", GetPrivateKeyFile()); + } else { + LogPrintf("tor: Error writing service private key to %s\n", GetPrivateKeyFile()); + } + AddLocal(service, LOCAL_MANUAL); + // ... onion requested - keep connection open + } else if (reply.code == 510) { // 510 Unrecognized command + LogPrintf("tor: Add onion failed with unrecognized command (You probably need to upgrade Tor)\n"); + } else { + LogPrintf("tor: Add onion failed; error code %d\n", reply.code); + } +} + +void TorController::auth_cb(TorControlConnection& conn, const TorControlReply& reply) +{ + if (reply.code == 250) { + LogPrint("tor", "tor: Authentication successful\n"); + + // Now that we know Tor is running setup the proxy for onion addresses + // if -onion isn't set to something else. + if (GetArg("-onion", "") == "") { + proxyType addrOnion = proxyType(CService("127.0.0.1", 9050), true); + SetProxy(NET_TOR, addrOnion); + SetLimited(NET_TOR, false); + } + + // Finally - now create the service + if (private_key.empty()) // No private key, generate one + private_key = "NEW:RSA1024"; // Explicitly request RSA1024 - see issue #9214 + // Request hidden service, redirect port. + // Note that the 'virtual' port doesn't have to be the same as our internal port, but this is just a convenient + // choice. TODO; refactor the shutdown sequence some day. + conn.Command(strprintf("ADD_ONION %s Port=%i,127.0.0.1:%i", private_key, GetListenPort(), GetListenPort()), + boost::bind(&TorController::add_onion_cb, this, _1, _2)); + } else { + LogPrintf("tor: Authentication failed\n"); + } +} + +/** Compute Tor SAFECOOKIE response. + * + * ServerHash is computed as: + * HMAC-SHA256("Tor safe cookie authentication server-to-controller hash", + * CookieString | ClientNonce | ServerNonce) + * (with the HMAC key as its first argument) + * + * After a controller sends a successful AUTHCHALLENGE command, the + * next command sent on the connection must be an AUTHENTICATE command, + * and the only authentication string which that AUTHENTICATE command + * will accept is: + * + * HMAC-SHA256("Tor safe cookie authentication controller-to-server hash", + * CookieString | ClientNonce | ServerNonce) + * + */ +static std::vector ComputeResponse(const std::string &key, const std::vector &cookie, const std::vector &clientNonce, const std::vector &serverNonce) +{ + CHMAC_SHA256 computeHash((const uint8_t*)key.data(), key.size()); + std::vector computedHash(CHMAC_SHA256::OUTPUT_SIZE, 0); + computeHash.Write(begin_ptr(cookie), cookie.size()); + computeHash.Write(begin_ptr(clientNonce), clientNonce.size()); + computeHash.Write(begin_ptr(serverNonce), serverNonce.size()); + computeHash.Finalize(begin_ptr(computedHash)); + return computedHash; +} + +void TorController::authchallenge_cb(TorControlConnection& conn, const TorControlReply& reply) +{ + if (reply.code == 250) { + LogPrint("tor", "tor: SAFECOOKIE authentication challenge successful\n"); + std::pair l = SplitTorReplyLine(reply.lines[0]); + if (l.first == "AUTHCHALLENGE") { + std::map m = ParseTorReplyMapping(l.second); + if (m.empty()) { + LogPrintf("tor: Error parsing AUTHCHALLENGE parameters: %s\n", SanitizeString(l.second)); + return; + } + std::vector serverHash = ParseHex(m["SERVERHASH"]); + std::vector serverNonce = ParseHex(m["SERVERNONCE"]); + LogPrint("tor", "tor: AUTHCHALLENGE ServerHash %s ServerNonce %s\n", HexStr(serverHash), HexStr(serverNonce)); + if (serverNonce.size() != 32) { + LogPrintf("tor: ServerNonce is not 32 bytes, as required by spec\n"); + return; + } + + std::vector computedServerHash = ComputeResponse(TOR_SAFE_SERVERKEY, cookie, clientNonce, serverNonce); + if (computedServerHash != serverHash) { + LogPrintf("tor: ServerHash %s does not match expected ServerHash %s\n", HexStr(serverHash), HexStr(computedServerHash)); + return; + } + + std::vector computedClientHash = ComputeResponse(TOR_SAFE_CLIENTKEY, cookie, clientNonce, serverNonce); + conn.Command("AUTHENTICATE " + HexStr(computedClientHash), boost::bind(&TorController::auth_cb, this, _1, _2)); + } else { + LogPrintf("tor: Invalid reply to AUTHCHALLENGE\n"); + } + } else { + LogPrintf("tor: SAFECOOKIE authentication challenge failed\n"); + } +} + +void TorController::protocolinfo_cb(TorControlConnection& conn, const TorControlReply& reply) +{ + if (reply.code == 250) { + std::set methods; + std::string cookiefile; + /* + * 250-AUTH METHODS=COOKIE,SAFECOOKIE COOKIEFILE="/home/x/.tor/control_auth_cookie" + * 250-AUTH METHODS=NULL + * 250-AUTH METHODS=HASHEDPASSWORD + */ + BOOST_FOREACH(const std::string &s, reply.lines) { + std::pair l = SplitTorReplyLine(s); + if (l.first == "AUTH") { + std::map m = ParseTorReplyMapping(l.second); + std::map::iterator i; + if ((i = m.find("METHODS")) != m.end()) + boost::split(methods, i->second, boost::is_any_of(",")); + if ((i = m.find("COOKIEFILE")) != m.end()) + cookiefile = i->second; + } else if (l.first == "VERSION") { + std::map m = ParseTorReplyMapping(l.second); + std::map::iterator i; + if ((i = m.find("Tor")) != m.end()) { + LogPrint("tor", "tor: Connected to Tor version %s\n", i->second); + } + } + } + BOOST_FOREACH(const std::string &s, methods) { + LogPrint("tor", "tor: Supported authentication method: %s\n", s); + } + // Prefer NULL, otherwise SAFECOOKIE. If a password is provided, use HASHEDPASSWORD + /* Authentication: + * cookie: hex-encoded ~/.tor/control_auth_cookie + * password: "password" + */ + std::string torpassword = GetArg("-torpassword", ""); + if (!torpassword.empty()) { + if (methods.count("HASHEDPASSWORD")) { + LogPrint("tor", "tor: Using HASHEDPASSWORD authentication\n"); + boost::replace_all(torpassword, "\"", "\\\""); + conn.Command("AUTHENTICATE \"" + torpassword + "\"", boost::bind(&TorController::auth_cb, this, _1, _2)); + } else { + LogPrintf("tor: Password provided with -torpassword, but HASHEDPASSWORD authentication is not available\n"); + } + } else if (methods.count("NULL")) { + LogPrint("tor", "tor: Using NULL authentication\n"); + conn.Command("AUTHENTICATE", boost::bind(&TorController::auth_cb, this, _1, _2)); + } else if (methods.count("SAFECOOKIE")) { + // Cookie: hexdump -e '32/1 "%02x""\n"' ~/.tor/control_auth_cookie + LogPrint("tor", "tor: Using SAFECOOKIE authentication, reading cookie authentication from %s\n", cookiefile); + std::pair status_cookie = ReadBinaryFile(cookiefile, TOR_COOKIE_SIZE); + if (status_cookie.first && status_cookie.second.size() == TOR_COOKIE_SIZE) { + // conn.Command("AUTHENTICATE " + HexStr(status_cookie.second), boost::bind(&TorController::auth_cb, this, _1, _2)); + cookie = std::vector(status_cookie.second.begin(), status_cookie.second.end()); + clientNonce = std::vector(TOR_NONCE_SIZE, 0); + GetRandBytes(&clientNonce[0], TOR_NONCE_SIZE); + conn.Command("AUTHCHALLENGE SAFECOOKIE " + HexStr(clientNonce), boost::bind(&TorController::authchallenge_cb, this, _1, _2)); + } else { + if (status_cookie.first) { + LogPrintf("tor: Authentication cookie %s is not exactly %i bytes, as is required by the spec\n", cookiefile, TOR_COOKIE_SIZE); + } else { + LogPrintf("tor: Authentication cookie %s could not be opened (check permissions)\n", cookiefile); + } + } + } else if (methods.count("HASHEDPASSWORD")) { + LogPrintf("tor: The only supported authentication mechanism left is password, but no password provided with -torpassword\n"); + } else { + LogPrintf("tor: No supported authentication method\n"); + } + } else { + LogPrintf("tor: Requesting protocol info failed\n"); + } +} + +void TorController::connected_cb(TorControlConnection& conn) +{ + reconnect_timeout = RECONNECT_TIMEOUT_START; + // First send a PROTOCOLINFO command to figure out what authentication is expected + if (!conn.Command("PROTOCOLINFO 1", boost::bind(&TorController::protocolinfo_cb, this, _1, _2))) + LogPrintf("tor: Error sending initial protocolinfo command\n"); +} + +void TorController::disconnected_cb(TorControlConnection& conn) +{ + // Stop advertizing service when disconnected + if (service.IsValid()) + RemoveLocal(service); + service = CService(); + if (!reconnect) + return; + + LogPrint("tor", "tor: Not connected to Tor control port %s, trying to reconnect\n", target); + + // Single-shot timer for reconnect. Use exponential backoff. + struct timeval time = MillisToTimeval(int64_t(reconnect_timeout * 1000.0)); + if (reconnect_ev) + event_add(reconnect_ev, &time); + reconnect_timeout *= RECONNECT_TIMEOUT_EXP; +} + +void TorController::Reconnect() +{ + /* Try to reconnect and reestablish if we get booted - for example, Tor + * may be restarting. + */ + if (!conn.Connect(target, boost::bind(&TorController::connected_cb, this, _1), + boost::bind(&TorController::disconnected_cb, this, _1) )) { + LogPrintf("tor: Re-initiating connection to Tor control port %s failed\n", target); + } +} + +std::string TorController::GetPrivateKeyFile() +{ + return (GetDataDir() / "onion_private_key").string(); +} + +void TorController::reconnect_cb(evutil_socket_t fd, short what, void *arg) +{ + TorController *self = (TorController*)arg; + self->Reconnect(); +} + +/****** Thread ********/ +static struct event_base *gBase; +static boost::thread torControlThread; + +static void TorControlThread() +{ + TorController ctrl(gBase, GetArg("-torcontrol", DEFAULT_TOR_CONTROL)); + + event_base_dispatch(gBase); +} + +void StartTorControl(boost::thread_group& threadGroup, CScheduler& scheduler) +{ + assert(!gBase); +#ifdef WIN32 + evthread_use_windows_threads(); +#else + evthread_use_pthreads(); +#endif + gBase = event_base_new(); + if (!gBase) { + LogPrintf("tor: Unable to create event_base\n"); + return; + } + + torControlThread = boost::thread(boost::bind(&TraceThread, "torcontrol", &TorControlThread)); +} + +void InterruptTorControl() +{ + if (gBase) { + LogPrintf("tor: Thread interrupt\n"); + event_base_loopbreak(gBase); + } +} + +void StopTorControl() +{ + if (gBase) { + torControlThread.join(); + event_base_free(gBase); + gBase = 0; + } +} + diff --git a/src/torcontrol.h b/src/torcontrol.h new file mode 100644 index 000000000..72dc82c5b --- /dev/null +++ b/src/torcontrol.h @@ -0,0 +1,20 @@ +// Copyright (c) 2015 The Bitcoin Core developers +// Distributed under the MIT software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + +/** + * Functionality for communicating with Tor. + */ +#ifndef BITCOIN_TORCONTROL_H +#define BITCOIN_TORCONTROL_H + +#include "scheduler.h" + +extern const std::string DEFAULT_TOR_CONTROL; +static const bool DEFAULT_LISTEN_ONION = true; + +void StartTorControl(boost::thread_group& threadGroup, CScheduler& scheduler); +void InterruptTorControl(); +void StopTorControl(); + +#endif /* BITCOIN_TORCONTROL_H */ diff --git a/src/txdb.cpp b/src/txdb.cpp index 95964f1a8..868d3d4cd 100644 --- a/src/txdb.cpp +++ b/src/txdb.cpp @@ -225,7 +225,10 @@ bool CCoinsViewDB::GetStats(CCoinsStats &stats) const { return error("%s: Deserialize or I/O error - %s", __func__, e.what()); } } - stats.nHeight = mapBlockIndex.find(GetBestBlock())->second->nHeight; + { + LOCK(cs_main); + stats.nHeight = mapBlockIndex.find(stats.hashBlock)->second->nHeight; + } stats.hashSerialized = ss.GetHash(); stats.nTotalAmount = nTotalAmount; return true; diff --git a/src/txmempool.cpp b/src/txmempool.cpp index e1bb80a08..6931afb3d 100644 --- a/src/txmempool.cpp +++ b/src/txmempool.cpp @@ -19,7 +19,7 @@ using namespace std; CTxMemPoolEntry::CTxMemPoolEntry(): - nFee(0), nTxSize(0), nModSize(0), nTime(0), dPriority(0.0), hadNoDependencies(false) + nFee(0), nTxSize(0), nModSize(0), nUsageSize(0), nTime(0), dPriority(0.0), hadNoDependencies(false) { nHeight = MEMPOOL_HEIGHT; } @@ -32,6 +32,7 @@ CTxMemPoolEntry::CTxMemPoolEntry(const CTransaction& _tx, const CAmount& _nFee, { nTxSize = ::GetSerializeSize(tx, SER_NETWORK, PROTOCOL_VERSION); nModSize = tx.CalculateModifiedSize(nTxSize); + nUsageSize = RecursiveDynamicUsage(tx); } CTxMemPoolEntry::CTxMemPoolEntry(const CTxMemPoolEntry& other) @@ -107,6 +108,7 @@ bool CTxMemPool::addUnchecked(const uint256& hash, const CTxMemPoolEntry &entry, } nTransactionsUpdated++; totalTxSize += entry.GetTxSize(); + cachedInnerUsage += entry.DynamicMemoryUsage(); minerPolicyEstimator->processTransaction(entry, fCurrentEstimate); return true; @@ -157,6 +159,7 @@ void CTxMemPool::remove(const CTransaction &origTx, std::list& rem removed.push_back(tx); totalTxSize -= mapTx[hash].GetTxSize(); + cachedInnerUsage -= mapTx[hash].DynamicMemoryUsage(); mapTx.erase(hash); nTransactionsUpdated++; minerPolicyEstimator->removeTx(hash); @@ -180,7 +183,7 @@ void CTxMemPool::removeCoinbaseSpends(const CCoinsViewCache *pcoins, unsigned in continue; const CCoins *coins = pcoins->AccessCoins(txin.prevout.hash); if (fSanityCheck) assert(coins); - if (!coins || (coins->IsCoinBase() && nMemPoolHeight - coins->nHeight < COINBASE_MATURITY)) { + if (!coins || (coins->IsCoinBase() && ((signed long)nMemPoolHeight) - coins->nHeight < COINBASE_MATURITY)) { transactionsToRemove.push_back(tx); break; } @@ -279,6 +282,7 @@ void CTxMemPool::clear() mapTx.clear(); mapNextTx.clear(); totalTxSize = 0; + cachedInnerUsage = 0; ++nTransactionsUpdated; } @@ -290,6 +294,7 @@ void CTxMemPool::check(const CCoinsViewCache *pcoins) const LogPrint("mempool", "Checking mempool with %u transactions and %u inputs\n", (unsigned int)mapTx.size(), (unsigned int)mapNextTx.size()); uint64_t checkTotal = 0; + uint64_t innerUsage = 0; CCoinsViewCache mempoolDuplicate(const_cast(pcoins)); @@ -298,6 +303,7 @@ void CTxMemPool::check(const CCoinsViewCache *pcoins) const for (std::map::const_iterator it = mapTx.begin(); it != mapTx.end(); it++) { unsigned int i = 0; checkTotal += it->second.GetTxSize(); + innerUsage += it->second.DynamicMemoryUsage(); const CTransaction& tx = it->second.GetTx(); bool fDependsWait = false; BOOST_FOREACH(const CTxIn &txin, tx.vin) { @@ -383,6 +389,7 @@ void CTxMemPool::check(const CCoinsViewCache *pcoins) const } assert(totalTxSize == checkTotal); + assert(innerUsage == cachedInnerUsage); } void CTxMemPool::queryHashes(vector& vtxid) @@ -510,3 +517,8 @@ bool CCoinsViewMemPool::GetCoins(const uint256 &txid, CCoins &coins) const { bool CCoinsViewMemPool::HaveCoins(const uint256 &txid) const { return mempool.exists(txid) || base->HaveCoins(txid); } + +size_t CTxMemPool::DynamicMemoryUsage() const { + LOCK(cs); + return memusage::DynamicUsage(mapTx) + memusage::DynamicUsage(mapNextTx) + memusage::DynamicUsage(mapDeltas) + cachedInnerUsage; +} diff --git a/src/txmempool.h b/src/txmempool.h index e6fd8e60b..cd0f9a54b 100644 --- a/src/txmempool.h +++ b/src/txmempool.h @@ -40,6 +40,7 @@ private: CAmount nFee; //! Cached to avoid expensive parent-transaction lookups size_t nTxSize; //! ... and avoid recomputing tx size size_t nModSize; //! ... and modified size for priority + size_t nUsageSize; //! ... and total memory usage int64_t nTime; //! Local time when entering the mempool double dPriority; //! Priority when entering the mempool unsigned int nHeight; //! Chain height when entering the mempool @@ -58,6 +59,7 @@ public: int64_t GetTime() const { return nTime; } unsigned int GetHeight() const { return nHeight; } bool WasClearAtEntry() const { return hadNoDependencies; } + size_t DynamicMemoryUsage() const { return nUsageSize; } }; class CBlockPolicyEstimator; @@ -73,6 +75,7 @@ public: CInPoint(const CTransaction* ptxIn, uint32_t nIn) { ptx = ptxIn; n = nIn; } void SetNull() { ptx = NULL; n = (uint32_t) -1; } bool IsNull() const { return (ptx == NULL && n == (uint32_t) -1); } + size_t DynamicMemoryUsage() const { return 0; } }; /** @@ -93,6 +96,7 @@ private: CBlockPolicyEstimator* minerPolicyEstimator; uint64_t totalTxSize = 0; //! sum of all mempool tx' byte sizes + uint64_t cachedInnerUsage; //! sum of dynamic memory usage of all the map elements (NOT the maps themselves) public: mutable CCriticalSection cs; @@ -141,6 +145,7 @@ public: LOCK(cs); return mapTx.size(); } + uint64_t GetTotalTxSize() { LOCK(cs); @@ -164,6 +169,8 @@ public: /** Write/Read estimates to disk */ bool WriteFeeEstimates(CAutoFile& fileout) const; bool ReadFeeEstimates(CAutoFile& filein); + + size_t DynamicMemoryUsage() const; }; /** diff --git a/src/ui_interface.h b/src/ui_interface.h index 32a92a4b8..ee0fd9113 100644 --- a/src/ui_interface.h +++ b/src/ui_interface.h @@ -75,6 +75,9 @@ public: /** Show message box. */ boost::signals2::signal > ThreadSafeMessageBox; + /** If possible, ask the user a question. If not, falls back to ThreadSafeMessageBox(noninteractive_message, caption, style) and returns false. */ + boost::signals2::signal > ThreadSafeQuestion; + /** Progress message during initialization. */ boost::signals2::signal InitMessage; diff --git a/src/univalue/.gitignore b/src/univalue/.gitignore new file mode 100644 index 000000000..19e42f814 --- /dev/null +++ b/src/univalue/.gitignore @@ -0,0 +1,32 @@ +.deps/ +INSTALL +Makefile +Makefile.in +aclocal.m4 +autom4te.cache/ +compile +config.log +config.status +config.guess +config.sub +configure +depcomp +install-sh +missing +stamp-h1 +univalue-config.h* +test-driver +libtool +ltmain.sh +test-suite.log + +*.a +*.la +*.lo +*.logs +*.o +*.pc +*.trs + +.dirstamp +.libs diff --git a/src/univalue/.travis.yml b/src/univalue/.travis.yml new file mode 100644 index 000000000..132743d34 --- /dev/null +++ b/src/univalue/.travis.yml @@ -0,0 +1,52 @@ +language: cpp + +compiler: + - clang + - gcc + +os: + - linux + - osx + +sudo: false + +env: + global: + - MAKEJOBS=-j3 + - RUN_TESTS=true + - BASE_OUTDIR=$TRAVIS_BUILD_DIR/out + +cache: + apt: true + +addons: + apt: + packages: + - pkg-config + +before_script: + - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew uninstall libtool; brew install libtool; fi + - if [ -n "$USE_SHELL" ]; then export CONFIG_SHELL="$USE_SHELL"; fi + - test -n "$USE_SHELL" && eval '"$USE_SHELL" -c "./autogen.sh"' || ./autogen.sh + +script: + - if [ -n "$UNIVALUE_CONFIG" ]; then unset CC; unset CXX; fi + - OUTDIR=$BASE_OUTDIR/$TRAVIS_PULL_REQUEST/$TRAVIS_JOB_NUMBER-$HOST + - UNIVALUE_CONFIG_ALL="--prefix=$TRAVIS_BUILD_DIR/depends/$HOST --bindir=$OUTDIR/bin --libdir=$OUTDIR/lib" + - ./configure --cache-file=config.cache $UNIVALUE_CONFIG_ALL $UNIVALUE_CONFIG || ( cat config.log && false) + - make -s $MAKEJOBS $GOAL || ( echo "Build failure. Verbose build follows." && make $GOAL ; false ) + - export LD_LIBRARY_PATH=$TRAVIS_BUILD_DIR/depends/$HOST/lib + - if [ "$RUN_TESTS" = "true" ]; then make $MAKEJOBS distcheck; fi + +matrix: + fast_finish: true + include: + - os: linux + compiler: gcc + env: UNIVALUE_CONFIG=--host=x86_64-w64-mingw32 RUN_TESTS=false + addons: + apt: + packages: + - g++-mingw-w64-x86-64 + - gcc-mingw-w64-x86-64 + - binutils-mingw-w64-x86-64 diff --git a/src/univalue/COPYING b/src/univalue/COPYING new file mode 100644 index 000000000..1fb429f35 --- /dev/null +++ b/src/univalue/COPYING @@ -0,0 +1,19 @@ + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + diff --git a/src/univalue/Makefile.am b/src/univalue/Makefile.am new file mode 100644 index 000000000..532fa1949 --- /dev/null +++ b/src/univalue/Makefile.am @@ -0,0 +1,109 @@ +ACLOCAL_AMFLAGS = -I build-aux/m4 +.PHONY: gen +.INTERMEDIATE: $(GENBIN) + +include_HEADERS = include/univalue.h +noinst_HEADERS = lib/univalue_escapes.h lib/univalue_utffilter.h + +lib_LTLIBRARIES = libunivalue.la + +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = pc/libunivalue.pc + +libunivalue_la_SOURCES = \ + lib/univalue.cpp \ + lib/univalue_read.cpp \ + lib/univalue_write.cpp + +libunivalue_la_LDFLAGS = \ + -version-info $(LIBUNIVALUE_CURRENT):$(LIBUNIVALUE_REVISION):$(LIBUNIVALUE_AGE) \ + -no-undefined +libunivalue_la_CXXFLAGS = -I$(top_srcdir)/include + +TESTS = test/unitester test/no_nul + +GENBIN = gen/gen$(BUILD_EXEEXT) +GEN_SRCS = gen/gen.cpp + +$(GENBIN): $(GEN_SRCS) + @echo Building $@ + $(AM_V_at)c++ -I$(top_srcdir)/include -o $@ $< + +gen: lib/univalue_escapes.h $(GENBIN) + @echo Updating $< + $(AM_V_at)$(GENBIN) > lib/univalue_escapes.h + +noinst_PROGRAMS = $(TESTS) test/test_json + +TEST_DATA_DIR=test + +test_unitester_SOURCES = test/unitester.cpp +test_unitester_LDADD = libunivalue.la +test_unitester_CXXFLAGS = -I$(top_srcdir)/include -DJSON_TEST_SRC=\"$(srcdir)/$(TEST_DATA_DIR)\" +test_unitester_LDFLAGS = -static $(LIBTOOL_APP_LDFLAGS) + +test_test_json_SOURCES = test/test_json.cpp +test_test_json_LDADD = libunivalue.la +test_test_json_CXXFLAGS = -I$(top_srcdir)/include +test_test_json_LDFLAGS = -static $(LIBTOOL_APP_LDFLAGS) + +test_no_nul_SOURCES = test/no_nul.cpp +test_no_nul_LDADD = libunivalue.la +test_no_nul_CXXFLAGS = -I$(top_srcdir)/include +test_no_nul_LDFLAGS = -static $(LIBTOOL_APP_LDFLAGS) + +TEST_FILES = \ + $(TEST_DATA_DIR)/fail10.json \ + $(TEST_DATA_DIR)/fail11.json \ + $(TEST_DATA_DIR)/fail12.json \ + $(TEST_DATA_DIR)/fail13.json \ + $(TEST_DATA_DIR)/fail14.json \ + $(TEST_DATA_DIR)/fail15.json \ + $(TEST_DATA_DIR)/fail16.json \ + $(TEST_DATA_DIR)/fail17.json \ + $(TEST_DATA_DIR)/fail18.json \ + $(TEST_DATA_DIR)/fail19.json \ + $(TEST_DATA_DIR)/fail1.json \ + $(TEST_DATA_DIR)/fail20.json \ + $(TEST_DATA_DIR)/fail21.json \ + $(TEST_DATA_DIR)/fail22.json \ + $(TEST_DATA_DIR)/fail23.json \ + $(TEST_DATA_DIR)/fail24.json \ + $(TEST_DATA_DIR)/fail25.json \ + $(TEST_DATA_DIR)/fail26.json \ + $(TEST_DATA_DIR)/fail27.json \ + $(TEST_DATA_DIR)/fail28.json \ + $(TEST_DATA_DIR)/fail29.json \ + $(TEST_DATA_DIR)/fail2.json \ + $(TEST_DATA_DIR)/fail30.json \ + $(TEST_DATA_DIR)/fail31.json \ + $(TEST_DATA_DIR)/fail32.json \ + $(TEST_DATA_DIR)/fail33.json \ + $(TEST_DATA_DIR)/fail34.json \ + $(TEST_DATA_DIR)/fail35.json \ + $(TEST_DATA_DIR)/fail36.json \ + $(TEST_DATA_DIR)/fail37.json \ + $(TEST_DATA_DIR)/fail38.json \ + $(TEST_DATA_DIR)/fail39.json \ + $(TEST_DATA_DIR)/fail40.json \ + $(TEST_DATA_DIR)/fail41.json \ + $(TEST_DATA_DIR)/fail42.json \ + $(TEST_DATA_DIR)/fail3.json \ + $(TEST_DATA_DIR)/fail4.json \ + $(TEST_DATA_DIR)/fail5.json \ + $(TEST_DATA_DIR)/fail6.json \ + $(TEST_DATA_DIR)/fail7.json \ + $(TEST_DATA_DIR)/fail8.json \ + $(TEST_DATA_DIR)/fail9.json \ + $(TEST_DATA_DIR)/pass1.json \ + $(TEST_DATA_DIR)/pass2.json \ + $(TEST_DATA_DIR)/pass3.json \ + $(TEST_DATA_DIR)/round1.json \ + $(TEST_DATA_DIR)/round2.json \ + $(TEST_DATA_DIR)/round3.json \ + $(TEST_DATA_DIR)/round4.json \ + $(TEST_DATA_DIR)/round5.json \ + $(TEST_DATA_DIR)/round6.json \ + $(TEST_DATA_DIR)/round7.json + +EXTRA_DIST=$(TEST_FILES) $(GEN_SRCS) diff --git a/src/univalue/README b/src/univalue/README new file mode 100644 index 000000000..48167b083 --- /dev/null +++ b/src/univalue/README @@ -0,0 +1,7 @@ + + UniValue + +A universal value object, with JSON encoding (output) and decoding (input). + +Built as a single dynamic RAII C++ object class, and no templates. + diff --git a/src/univalue/TODO b/src/univalue/TODO new file mode 100644 index 000000000..5530048e9 --- /dev/null +++ b/src/univalue/TODO @@ -0,0 +1,10 @@ + +Rearrange tree for easier 'git subtree' style use + +Move towards C++11 etc. + +Namespace support - must come up with useful shorthand, avoiding +long Univalue::Univalue::Univalue usages forced upon library users. + +Improve test suite + diff --git a/src/univalue/autogen.sh b/src/univalue/autogen.sh new file mode 100755 index 000000000..4b38721fa --- /dev/null +++ b/src/univalue/autogen.sh @@ -0,0 +1,9 @@ +#!/bin/sh +set -e +srcdir="$(dirname $0)" +cd "$srcdir" +if [ -z ${LIBTOOLIZE} ] && GLIBTOOLIZE="`which glibtoolize 2>/dev/null`"; then + LIBTOOLIZE="${GLIBTOOLIZE}" + export LIBTOOLIZE +fi +autoreconf --install --force diff --git a/src/univalue/build-aux/m4/.gitignore b/src/univalue/build-aux/m4/.gitignore new file mode 100644 index 000000000..f06368652 --- /dev/null +++ b/src/univalue/build-aux/m4/.gitignore @@ -0,0 +1 @@ +/*.m4 diff --git a/src/univalue/configure.ac b/src/univalue/configure.ac new file mode 100644 index 000000000..8298332ac --- /dev/null +++ b/src/univalue/configure.ac @@ -0,0 +1,69 @@ +m4_define([libunivalue_major_version], [1]) +m4_define([libunivalue_minor_version], [1]) +m4_define([libunivalue_micro_version], [3]) +m4_define([libunivalue_interface_age], [3]) +# If you need a modifier for the version number. +# Normally empty, but can be used to make "fixup" releases. +m4_define([libunivalue_extraversion], []) + +dnl libtool versioning from libunivalue +m4_define([libunivalue_current], [m4_eval(100 * libunivalue_minor_version + libunivalue_micro_version - libunivalue_interface_age)]) +m4_define([libunivalue_binary_age], [m4_eval(100 * libunivalue_minor_version + libunivalue_micro_version)]) +m4_define([libunivalue_revision], [libunivalue_interface_age]) +m4_define([libunivalue_age], [m4_eval(libunivalue_binary_age - libunivalue_interface_age)]) +m4_define([libunivalue_version], [libunivalue_major_version().libunivalue_minor_version().libunivalue_micro_version()libunivalue_extraversion()]) + + +AC_INIT([univalue], [1.0.3], + [http://github.com/jgarzik/univalue/]) + +dnl make the compilation flags quiet unless V=1 is used +m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) + +AC_PREREQ(2.60) +AC_CONFIG_SRCDIR([lib/univalue.cpp]) +AC_CONFIG_AUX_DIR([build-aux]) +AC_CONFIG_MACRO_DIR([build-aux/m4]) +AC_CONFIG_HEADERS([univalue-config.h]) +AM_INIT_AUTOMAKE([subdir-objects foreign]) + +LIBUNIVALUE_MAJOR_VERSION=libunivalue_major_version +LIBUNIVALUE_MINOR_VERSION=libunivalue_minor_version +LIBUNIVALUE_MICRO_VERSION=libunivalue_micro_version +LIBUNIVALUE_INTERFACE_AGE=libunivalue_interface_age + +# ABI version +# http://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html +LIBUNIVALUE_CURRENT=libunivalue_current +LIBUNIVALUE_REVISION=libunivalue_revision +LIBUNIVALUE_AGE=libunivalue_age + +AC_SUBST(LIBUNIVALUE_CURRENT) +AC_SUBST(LIBUNIVALUE_REVISION) +AC_SUBST(LIBUNIVALUE_AGE) + +LT_INIT +LT_LANG([C++]) + +case $host in + *mingw*) + LIBTOOL_APP_LDFLAGS="$LIBTOOL_APP_LDFLAGS -all-static" + ;; +esac + +BUILD_EXEEXT= +case $build in + *mingw*) + BUILD_EXEEXT=".exe" + ;; +esac + +AC_CONFIG_FILES([ + Makefile + pc/libunivalue.pc + pc/libunivalue-uninstalled.pc]) + +AC_SUBST(LIBTOOL_APP_LDFLAGS) +AC_SUBST(BUILD_EXEEXT) +AC_OUTPUT + diff --git a/src/univalue/gen.cpp b/src/univalue/gen/gen.cpp similarity index 76% rename from src/univalue/gen.cpp rename to src/univalue/gen/gen.cpp index abebe8863..17f361941 100644 --- a/src/univalue/gen.cpp +++ b/src/univalue/gen/gen.cpp @@ -8,7 +8,6 @@ // $ ./gen > univalue_escapes.h // -#include #include #include #include "univalue.h" @@ -16,18 +15,25 @@ using namespace std; static bool initEscapes; -static const char *escapes[256]; +static std::string escapes[256]; static void initJsonEscape() { + // Escape all lower control characters (some get overridden with smaller sequences below) + for (int ch=0x00; ch<0x20; ++ch) { + char tmpbuf[20]; + snprintf(tmpbuf, sizeof(tmpbuf), "\\u%04x", ch); + escapes[ch] = std::string(tmpbuf); + } + escapes[(int)'"'] = "\\\""; escapes[(int)'\\'] = "\\\\"; - escapes[(int)'/'] = "\\/"; escapes[(int)'\b'] = "\\b"; escapes[(int)'\f'] = "\\f"; escapes[(int)'\n'] = "\\n"; escapes[(int)'\r'] = "\\r"; escapes[(int)'\t'] = "\\t"; + escapes[(int)'\x7f'] = "\\u007f"; // U+007F DELETE initEscapes = true; } @@ -40,13 +46,13 @@ static void outputEscape() "static const char *escapes[256] = {\n"); for (unsigned int i = 0; i < 256; i++) { - if (!escapes[i]) { + if (escapes[i].empty()) { printf("\tNULL,\n"); } else { printf("\t\""); unsigned int si; - for (si = 0; si < strlen(escapes[i]); si++) { + for (si = 0; si < escapes[i].size(); si++) { char ch = escapes[i][si]; switch (ch) { case '"': diff --git a/src/univalue/include/univalue.h b/src/univalue/include/univalue.h new file mode 100644 index 000000000..07314bc5c --- /dev/null +++ b/src/univalue/include/univalue.h @@ -0,0 +1,296 @@ +// Copyright 2014 BitPay Inc. +// Copyright 2015 Bitcoin Core Developers +// Distributed under the MIT software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + +#ifndef __UNIVALUE_H__ +#define __UNIVALUE_H__ + +#include + +#include +#include +#include +#include + +#include // .get_int64() +#include // std::pair + +class UniValue { +public: + enum VType { VNULL, VOBJ, VARR, VSTR, VNUM, VBOOL, }; + + UniValue() { typ = VNULL; } + UniValue(UniValue::VType initialType, const std::string& initialStr = "") { + typ = initialType; + val = initialStr; + } + UniValue(uint64_t val_) { + setInt(val_); + } + UniValue(int64_t val_) { + setInt(val_); + } + UniValue(bool val_) { + setBool(val_); + } + UniValue(int val_) { + setInt(val_); + } + UniValue(double val_) { + setFloat(val_); + } + UniValue(const std::string& val_) { + setStr(val_); + } + UniValue(const char *val_) { + std::string s(val_); + setStr(s); + } + ~UniValue() {} + + void clear(); + + bool setNull(); + bool setBool(bool val); + bool setNumStr(const std::string& val); + bool setInt(uint64_t val); + bool setInt(int64_t val); + bool setInt(int val_) { return setInt((int64_t)val_); } + bool setFloat(double val); + bool setStr(const std::string& val); + bool setArray(); + bool setObject(); + + enum VType getType() const { return typ; } + const std::string& getValStr() const { return val; } + bool empty() const { return (values.size() == 0); } + + size_t size() const { return values.size(); } + + bool getBool() const { return isTrue(); } + bool checkObject(const std::map& memberTypes); + const UniValue& operator[](const std::string& key) const; + const UniValue& operator[](size_t index) const; + bool exists(const std::string& key) const { size_t i; return findKey(key, i); } + + bool isNull() const { return (typ == VNULL); } + bool isTrue() const { return (typ == VBOOL) && (val == "1"); } + bool isFalse() const { return (typ == VBOOL) && (val != "1"); } + bool isBool() const { return (typ == VBOOL); } + bool isStr() const { return (typ == VSTR); } + bool isNum() const { return (typ == VNUM); } + bool isArray() const { return (typ == VARR); } + bool isObject() const { return (typ == VOBJ); } + + bool push_back(const UniValue& val); + bool push_back(const std::string& val_) { + UniValue tmpVal(VSTR, val_); + return push_back(tmpVal); + } + bool push_back(const char *val_) { + std::string s(val_); + return push_back(s); + } + bool push_back(uint64_t val_) { + UniValue tmpVal(val_); + return push_back(tmpVal); + } + bool push_back(int64_t val_) { + UniValue tmpVal(val_); + return push_back(tmpVal); + } + bool push_back(int val_) { + UniValue tmpVal(val_); + return push_back(tmpVal); + } + bool push_backV(const std::vector& vec); + + bool pushKV(const std::string& key, const UniValue& val); + bool pushKV(const std::string& key, const std::string& val_) { + UniValue tmpVal(VSTR, val_); + return pushKV(key, tmpVal); + } + bool pushKV(const std::string& key, const char *val_) { + std::string _val(val_); + return pushKV(key, _val); + } + bool pushKV(const std::string& key, int64_t val_) { + UniValue tmpVal(val_); + return pushKV(key, tmpVal); + } + bool pushKV(const std::string& key, uint64_t val_) { + UniValue tmpVal(val_); + return pushKV(key, tmpVal); + } + bool pushKV(const std::string& key, int val_) { + UniValue tmpVal((int64_t)val_); + return pushKV(key, tmpVal); + } + bool pushKV(const std::string& key, double val_) { + UniValue tmpVal(val_); + return pushKV(key, tmpVal); + } + bool pushKVs(const UniValue& obj); + + std::string write(unsigned int prettyIndent = 0, + unsigned int indentLevel = 0) const; + + bool read(const char *raw, size_t len); + bool read(const char *raw); + bool read(const std::string& rawStr) { + return read(rawStr.data(), rawStr.size()); + } + +private: + UniValue::VType typ; + std::string val; // numbers are stored as C++ strings + std::vector keys; + std::vector values; + + bool findKey(const std::string& key, size_t& ret) const; + void writeArray(unsigned int prettyIndent, unsigned int indentLevel, std::string& s) const; + void writeObject(unsigned int prettyIndent, unsigned int indentLevel, std::string& s) const; + +public: + // Strict type-specific getters, these throw std::runtime_error if the + // value is of unexpected type + const std::vector& getKeys() const; + const std::vector& getValues() const; + bool get_bool() const; + const std::string& get_str() const; + int get_int() const; + int64_t get_int64() const; + double get_real() const; + const UniValue& get_obj() const; + const UniValue& get_array() const; + + enum VType type() const { return getType(); } + bool push_back(std::pair pear) { + return pushKV(pear.first, pear.second); + } + friend const UniValue& find_value( const UniValue& obj, const std::string& name); +}; + +// +// The following were added for compatibility with json_spirit. +// Most duplicate other methods, and should be removed. +// +static inline std::pair Pair(const char *cKey, const char *cVal) +{ + std::string key(cKey); + UniValue uVal(cVal); + return std::make_pair(key, uVal); +} + +static inline std::pair Pair(const char *cKey, std::string strVal) +{ + std::string key(cKey); + UniValue uVal(strVal); + return std::make_pair(key, uVal); +} + +static inline std::pair Pair(const char *cKey, uint64_t u64Val) +{ + std::string key(cKey); + UniValue uVal(u64Val); + return std::make_pair(key, uVal); +} + +static inline std::pair Pair(const char *cKey, int64_t i64Val) +{ + std::string key(cKey); + UniValue uVal(i64Val); + return std::make_pair(key, uVal); +} + +static inline std::pair Pair(const char *cKey, bool iVal) +{ + std::string key(cKey); + UniValue uVal(iVal); + return std::make_pair(key, uVal); +} + +static inline std::pair Pair(const char *cKey, int iVal) +{ + std::string key(cKey); + UniValue uVal(iVal); + return std::make_pair(key, uVal); +} + +static inline std::pair Pair(const char *cKey, double dVal) +{ + std::string key(cKey); + UniValue uVal(dVal); + return std::make_pair(key, uVal); +} + +static inline std::pair Pair(const char *cKey, const UniValue& uVal) +{ + std::string key(cKey); + return std::make_pair(key, uVal); +} + +static inline std::pair Pair(std::string key, const UniValue& uVal) +{ + return std::make_pair(key, uVal); +} + +enum jtokentype { + JTOK_ERR = -1, + JTOK_NONE = 0, // eof + JTOK_OBJ_OPEN, + JTOK_OBJ_CLOSE, + JTOK_ARR_OPEN, + JTOK_ARR_CLOSE, + JTOK_COLON, + JTOK_COMMA, + JTOK_KW_NULL, + JTOK_KW_TRUE, + JTOK_KW_FALSE, + JTOK_NUMBER, + JTOK_STRING, +}; + +extern enum jtokentype getJsonToken(std::string& tokenVal, + unsigned int& consumed, const char *raw, const char *end); +extern const char *uvTypeName(UniValue::VType t); + +static inline bool jsonTokenIsValue(enum jtokentype jtt) +{ + switch (jtt) { + case JTOK_KW_NULL: + case JTOK_KW_TRUE: + case JTOK_KW_FALSE: + case JTOK_NUMBER: + case JTOK_STRING: + return true; + + default: + return false; + } + + // not reached +} + +static inline bool json_isspace(int ch) +{ + switch (ch) { + case 0x20: + case 0x09: + case 0x0a: + case 0x0d: + return true; + + default: + return false; + } + + // not reached +} + +extern const UniValue NullUniValue; + +const UniValue& find_value( const UniValue& obj, const std::string& name); + +#endif // __UNIVALUE_H__ diff --git a/src/univalue/lib/.gitignore b/src/univalue/lib/.gitignore new file mode 100644 index 000000000..ee7fc2851 --- /dev/null +++ b/src/univalue/lib/.gitignore @@ -0,0 +1,2 @@ +gen +.libs diff --git a/src/univalue/lib/univalue.cpp b/src/univalue/lib/univalue.cpp new file mode 100644 index 000000000..47ca7aca7 --- /dev/null +++ b/src/univalue/lib/univalue.cpp @@ -0,0 +1,359 @@ +// Copyright 2014 BitPay Inc. +// Copyright 2015 Bitcoin Core Developers +// Distributed under the MIT software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "univalue.h" + +namespace +{ +static bool ParsePrechecks(const std::string& str) +{ + if (str.empty()) // No empty string allowed + return false; + if (str.size() >= 1 && (json_isspace(str[0]) || json_isspace(str[str.size()-1]))) // No padding allowed + return false; + if (str.size() != strlen(str.c_str())) // No embedded NUL characters allowed + return false; + return true; +} + +bool ParseInt32(const std::string& str, int32_t *out) +{ + if (!ParsePrechecks(str)) + return false; + char *endp = NULL; + errno = 0; // strtol will not set errno if valid + long int n = strtol(str.c_str(), &endp, 10); + if(out) *out = (int32_t)n; + // Note that strtol returns a *long int*, so even if strtol doesn't report a over/underflow + // we still have to check that the returned value is within the range of an *int32_t*. On 64-bit + // platforms the size of these types may be different. + return endp && *endp == 0 && !errno && + n >= std::numeric_limits::min() && + n <= std::numeric_limits::max(); +} + +bool ParseInt64(const std::string& str, int64_t *out) +{ + if (!ParsePrechecks(str)) + return false; + char *endp = NULL; + errno = 0; // strtoll will not set errno if valid + long long int n = strtoll(str.c_str(), &endp, 10); + if(out) *out = (int64_t)n; + // Note that strtoll returns a *long long int*, so even if strtol doesn't report a over/underflow + // we still have to check that the returned value is within the range of an *int64_t*. + return endp && *endp == 0 && !errno && + n >= std::numeric_limits::min() && + n <= std::numeric_limits::max(); +} + +bool ParseDouble(const std::string& str, double *out) +{ + if (!ParsePrechecks(str)) + return false; + if (str.size() >= 2 && str[0] == '0' && str[1] == 'x') // No hexadecimal floats allowed + return false; + std::istringstream text(str); + text.imbue(std::locale::classic()); + double result; + text >> result; + if(out) *out = result; + return text.eof() && !text.fail(); +} +} + +using namespace std; + +const UniValue NullUniValue; + +void UniValue::clear() +{ + typ = VNULL; + val.clear(); + keys.clear(); + values.clear(); +} + +bool UniValue::setNull() +{ + clear(); + return true; +} + +bool UniValue::setBool(bool val_) +{ + clear(); + typ = VBOOL; + if (val_) + val = "1"; + return true; +} + +static bool validNumStr(const string& s) +{ + string tokenVal; + unsigned int consumed; + enum jtokentype tt = getJsonToken(tokenVal, consumed, s.data(), s.data() + s.size()); + return (tt == JTOK_NUMBER); +} + +bool UniValue::setNumStr(const string& val_) +{ + if (!validNumStr(val_)) + return false; + + clear(); + typ = VNUM; + val = val_; + return true; +} + +bool UniValue::setInt(uint64_t val_) +{ + ostringstream oss; + + oss << val_; + + return setNumStr(oss.str()); +} + +bool UniValue::setInt(int64_t val_) +{ + ostringstream oss; + + oss << val_; + + return setNumStr(oss.str()); +} + +bool UniValue::setFloat(double val_) +{ + ostringstream oss; + + oss << std::setprecision(16) << val_; + + bool ret = setNumStr(oss.str()); + typ = VNUM; + return ret; +} + +bool UniValue::setStr(const string& val_) +{ + clear(); + typ = VSTR; + val = val_; + return true; +} + +bool UniValue::setArray() +{ + clear(); + typ = VARR; + return true; +} + +bool UniValue::setObject() +{ + clear(); + typ = VOBJ; + return true; +} + +bool UniValue::push_back(const UniValue& val_) +{ + if (typ != VARR) + return false; + + values.push_back(val_); + return true; +} + +bool UniValue::push_backV(const std::vector& vec) +{ + if (typ != VARR) + return false; + + values.insert(values.end(), vec.begin(), vec.end()); + + return true; +} + +bool UniValue::pushKV(const std::string& key, const UniValue& val_) +{ + if (typ != VOBJ) + return false; + + keys.push_back(key); + values.push_back(val_); + return true; +} + +bool UniValue::pushKVs(const UniValue& obj) +{ + if (typ != VOBJ || obj.typ != VOBJ) + return false; + + for (unsigned int i = 0; i < obj.keys.size(); i++) { + keys.push_back(obj.keys[i]); + values.push_back(obj.values.at(i)); + } + + return true; +} + +bool UniValue::findKey(const std::string& key, size_t& ret) const +{ + for (size_t i = 0; i < keys.size(); i++) { + if (keys[i] == key) { + ret = i; + return true; + } + } + + return false; +} + +bool UniValue::checkObject(const std::map& t) +{ + for (std::map::const_iterator it = t.begin(); + it != t.end(); ++it) { + size_t idx; + if (!findKey(it->first, idx)) + return false; + + if (values.at(idx).getType() != it->second) + return false; + } + + return true; +} + +const UniValue& UniValue::operator[](const std::string& key) const +{ + if (typ != VOBJ) + return NullUniValue; + + size_t index; + if (!findKey(key, index)) + return NullUniValue; + + return values.at(index); +} + +const UniValue& UniValue::operator[](size_t index) const +{ + if (typ != VOBJ && typ != VARR) + return NullUniValue; + if (index >= values.size()) + return NullUniValue; + + return values.at(index); +} + +const char *uvTypeName(UniValue::VType t) +{ + switch (t) { + case UniValue::VNULL: return "null"; + case UniValue::VBOOL: return "bool"; + case UniValue::VOBJ: return "object"; + case UniValue::VARR: return "array"; + case UniValue::VSTR: return "string"; + case UniValue::VNUM: return "number"; + } + + // not reached + return NULL; +} + +const UniValue& find_value(const UniValue& obj, const std::string& name) +{ + for (unsigned int i = 0; i < obj.keys.size(); i++) + if (obj.keys[i] == name) + return obj.values.at(i); + + return NullUniValue; +} + +const std::vector& UniValue::getKeys() const +{ + if (typ != VOBJ) + throw std::runtime_error("JSON value is not an object as expected"); + return keys; +} + +const std::vector& UniValue::getValues() const +{ + if (typ != VOBJ && typ != VARR) + throw std::runtime_error("JSON value is not an object or array as expected"); + return values; +} + +bool UniValue::get_bool() const +{ + if (typ != VBOOL) + throw std::runtime_error("JSON value is not a boolean as expected"); + return getBool(); +} + +const std::string& UniValue::get_str() const +{ + if (typ != VSTR) + throw std::runtime_error("JSON value is not a string as expected"); + return getValStr(); +} + +int UniValue::get_int() const +{ + if (typ != VNUM) + throw std::runtime_error("JSON value is not an integer as expected"); + int32_t retval; + if (!ParseInt32(getValStr(), &retval)) + throw std::runtime_error("JSON integer out of range"); + return retval; +} + +int64_t UniValue::get_int64() const +{ + if (typ != VNUM) + throw std::runtime_error("JSON value is not an integer as expected"); + int64_t retval; + if (!ParseInt64(getValStr(), &retval)) + throw std::runtime_error("JSON integer out of range"); + return retval; +} + +double UniValue::get_real() const +{ + if (typ != VNUM) + throw std::runtime_error("JSON value is not a number as expected"); + double retval; + if (!ParseDouble(getValStr(), &retval)) + throw std::runtime_error("JSON double out of range"); + return retval; +} + +const UniValue& UniValue::get_obj() const +{ + if (typ != VOBJ) + throw std::runtime_error("JSON value is not an object as expected"); + return *this; +} + +const UniValue& UniValue::get_array() const +{ + if (typ != VARR) + throw std::runtime_error("JSON value is not an array as expected"); + return *this; +} + diff --git a/src/univalue/univalue_escapes.h b/src/univalue/lib/univalue_escapes.h similarity index 84% rename from src/univalue/univalue_escapes.h rename to src/univalue/lib/univalue_escapes.h index 051411828..74596aab6 100644 --- a/src/univalue/univalue_escapes.h +++ b/src/univalue/lib/univalue_escapes.h @@ -2,38 +2,38 @@ #ifndef BITCOIN_UNIVALUE_UNIVALUE_ESCAPES_H #define BITCOIN_UNIVALUE_UNIVALUE_ESCAPES_H static const char *escapes[256] = { - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + "\\u0000", + "\\u0001", + "\\u0002", + "\\u0003", + "\\u0004", + "\\u0005", + "\\u0006", + "\\u0007", "\\b", "\\t", "\\n", - NULL, + "\\u000b", "\\f", "\\r", - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + "\\u000e", + "\\u000f", + "\\u0010", + "\\u0011", + "\\u0012", + "\\u0013", + "\\u0014", + "\\u0015", + "\\u0016", + "\\u0017", + "\\u0018", + "\\u0019", + "\\u001a", + "\\u001b", + "\\u001c", + "\\u001d", + "\\u001e", + "\\u001f", NULL, NULL, "\\\"", @@ -49,7 +49,7 @@ static const char *escapes[256] = { NULL, NULL, NULL, - "\\/", + NULL, NULL, NULL, NULL, @@ -129,7 +129,7 @@ static const char *escapes[256] = { NULL, NULL, NULL, - NULL, + "\\u007f", NULL, NULL, NULL, diff --git a/src/univalue/univalue_read.cpp b/src/univalue/lib/univalue_read.cpp similarity index 61% rename from src/univalue/univalue_read.cpp rename to src/univalue/lib/univalue_read.cpp index 5cea77899..7a9acdd75 100644 --- a/src/univalue/univalue_read.cpp +++ b/src/univalue/lib/univalue_read.cpp @@ -6,9 +6,15 @@ #include #include #include "univalue.h" +#include "univalue_utffilter.h" using namespace std; +static bool json_isdigit(int ch) +{ + return ((ch >= '0') && (ch <= '9')); +} + // convert hexadecimal string to unsigned integer static const char *hatoui(const char *first, const char *last, unsigned int& out) @@ -17,7 +23,7 @@ static const char *hatoui(const char *first, const char *last, for (; first != last; ++first) { int digit; - if (isdigit(*first)) + if (json_isdigit(*first)) digit = *first - '0'; else if (*first >= 'a' && *first <= 'f') @@ -37,21 +43,21 @@ static const char *hatoui(const char *first, const char *last, } enum jtokentype getJsonToken(string& tokenVal, unsigned int& consumed, - const char *raw) + const char *raw, const char *end) { tokenVal.clear(); consumed = 0; const char *rawStart = raw; - while ((*raw) && (isspace(*raw))) // skip whitespace + while (raw < end && (json_isspace(*raw))) // skip whitespace raw++; - switch (*raw) { - - case 0: + if (raw >= end) return JTOK_NONE; + switch (*raw) { + case '{': raw++; consumed = (raw - rawStart); @@ -113,48 +119,48 @@ enum jtokentype getJsonToken(string& tokenVal, unsigned int& consumed, const char *first = raw; const char *firstDigit = first; - if (!isdigit(*firstDigit)) + if (!json_isdigit(*firstDigit)) firstDigit++; - if ((*firstDigit == '0') && isdigit(firstDigit[1])) + if ((*firstDigit == '0') && json_isdigit(firstDigit[1])) return JTOK_ERR; numStr += *raw; // copy first char raw++; - if ((*first == '-') && (!isdigit(*raw))) + if ((*first == '-') && (raw < end) && (!json_isdigit(*raw))) return JTOK_ERR; - while ((*raw) && isdigit(*raw)) { // copy digits + while (raw < end && json_isdigit(*raw)) { // copy digits numStr += *raw; raw++; } // part 2: frac - if (*raw == '.') { + if (raw < end && *raw == '.') { numStr += *raw; // copy . raw++; - if (!isdigit(*raw)) + if (raw >= end || !json_isdigit(*raw)) return JTOK_ERR; - while ((*raw) && isdigit(*raw)) { // copy digits + while (raw < end && json_isdigit(*raw)) { // copy digits numStr += *raw; raw++; } } // part 3: exp - if (*raw == 'e' || *raw == 'E') { + if (raw < end && (*raw == 'e' || *raw == 'E')) { numStr += *raw; // copy E raw++; - if (*raw == '-' || *raw == '+') { // copy +/- + if (raw < end && (*raw == '-' || *raw == '+')) { // copy +/- numStr += *raw; raw++; } - if (!isdigit(*raw)) + if (raw >= end || !json_isdigit(*raw)) return JTOK_ERR; - while ((*raw) && isdigit(*raw)) { // copy digits + while (raw < end && json_isdigit(*raw)) { // copy digits numStr += *raw; raw++; } @@ -169,44 +175,35 @@ enum jtokentype getJsonToken(string& tokenVal, unsigned int& consumed, raw++; // skip " string valStr; + JSONUTF8StringFilter writer(valStr); - while (*raw) { - if (*raw < 0x20) + while (raw < end) { + if ((unsigned char)*raw < 0x20) return JTOK_ERR; else if (*raw == '\\') { raw++; // skip backslash + if (raw >= end) + return JTOK_ERR; + switch (*raw) { - case '"': valStr += "\""; break; - case '\\': valStr += "\\"; break; - case '/': valStr += "/"; break; - case 'b': valStr += "\b"; break; - case 'f': valStr += "\f"; break; - case 'n': valStr += "\n"; break; - case 'r': valStr += "\r"; break; - case 't': valStr += "\t"; break; + case '"': writer.push_back('\"'); break; + case '\\': writer.push_back('\\'); break; + case '/': writer.push_back('/'); break; + case 'b': writer.push_back('\b'); break; + case 'f': writer.push_back('\f'); break; + case 'n': writer.push_back('\n'); break; + case 'r': writer.push_back('\r'); break; + case 't': writer.push_back('\t'); break; case 'u': { - char buf[4] = {0,0,0,0}; - char *last = &buf[0]; unsigned int codepoint; - if (hatoui(raw + 1, raw + 1 + 4, codepoint) != + if (raw + 1 + 4 >= end || + hatoui(raw + 1, raw + 1 + 4, codepoint) != raw + 1 + 4) return JTOK_ERR; - - if (codepoint <= 0x7f) - *last = (char)codepoint; - else if (codepoint <= 0x7FF) { - *last++ = (char)(0xC0 | (codepoint >> 6)); - *last = (char)(0x80 | (codepoint & 0x3F)); - } else if (codepoint <= 0xFFFF) { - *last++ = (char)(0xE0 | (codepoint >> 12)); - *last++ = (char)(0x80 | ((codepoint >> 6) & 0x3F)); - *last = (char)(0x80 | (codepoint & 0x3F)); - } - - valStr += buf; + writer.push_back_u(codepoint); raw += 4; break; } @@ -224,11 +221,13 @@ enum jtokentype getJsonToken(string& tokenVal, unsigned int& consumed, } else { - valStr += *raw; + writer.push_back(*raw); raw++; } } + if (!writer.finalize()) + return JTOK_ERR; tokenVal = valStr; consumed = (raw - rawStart); return JTOK_STRING; @@ -239,26 +238,73 @@ enum jtokentype getJsonToken(string& tokenVal, unsigned int& consumed, } } -bool UniValue::read(const char *raw) +enum expect_bits { + EXP_OBJ_NAME = (1U << 0), + EXP_COLON = (1U << 1), + EXP_ARR_VALUE = (1U << 2), + EXP_VALUE = (1U << 3), + EXP_NOT_VALUE = (1U << 4), +}; + +#define expect(bit) (expectMask & (EXP_##bit)) +#define setExpect(bit) (expectMask |= EXP_##bit) +#define clearExpect(bit) (expectMask &= ~EXP_##bit) + +bool UniValue::read(const char *raw, size_t size) { clear(); - bool expectName = false; - bool expectColon = false; + uint32_t expectMask = 0; vector stack; + string tokenVal; + unsigned int consumed; enum jtokentype tok = JTOK_NONE; enum jtokentype last_tok = JTOK_NONE; - while (1) { + const char* end = raw + size; + do { last_tok = tok; - string tokenVal; - unsigned int consumed; - tok = getJsonToken(tokenVal, consumed, raw); + tok = getJsonToken(tokenVal, consumed, raw, end); if (tok == JTOK_NONE || tok == JTOK_ERR) - break; + return false; raw += consumed; + bool isValueOpen = jsonTokenIsValue(tok) || + tok == JTOK_OBJ_OPEN || tok == JTOK_ARR_OPEN; + + if (expect(VALUE)) { + if (!isValueOpen) + return false; + clearExpect(VALUE); + + } else if (expect(ARR_VALUE)) { + bool isArrValue = isValueOpen || (tok == JTOK_ARR_CLOSE); + if (!isArrValue) + return false; + + clearExpect(ARR_VALUE); + + } else if (expect(OBJ_NAME)) { + bool isObjName = (tok == JTOK_OBJ_CLOSE || tok == JTOK_STRING); + if (!isObjName) + return false; + + } else if (expect(COLON)) { + if (tok != JTOK_COLON) + return false; + clearExpect(COLON); + + } else if (!expect(COLON) && (tok == JTOK_COLON)) { + return false; + } + + if (expect(NOT_VALUE)) { + if (isValueOpen) + return false; + clearExpect(NOT_VALUE); + } + switch (tok) { case JTOK_OBJ_OPEN: @@ -280,13 +326,15 @@ bool UniValue::read(const char *raw) } if (utyp == VOBJ) - expectName = true; + setExpect(OBJ_NAME); + else + setExpect(ARR_VALUE); break; } case JTOK_OBJ_CLOSE: case JTOK_ARR_CLOSE: { - if (!stack.size() || expectColon || (last_tok == JTOK_COMMA)) + if (!stack.size() || (last_tok == JTOK_COMMA)) return false; VType utyp = (tok == JTOK_OBJ_CLOSE ? VOBJ : VARR); @@ -295,39 +343,39 @@ bool UniValue::read(const char *raw) return false; stack.pop_back(); - expectName = false; + clearExpect(OBJ_NAME); + setExpect(NOT_VALUE); break; } case JTOK_COLON: { - if (!stack.size() || expectName || !expectColon) + if (!stack.size()) return false; UniValue *top = stack.back(); if (top->getType() != VOBJ) return false; - expectColon = false; + setExpect(VALUE); break; } case JTOK_COMMA: { - if (!stack.size() || expectName || expectColon || + if (!stack.size() || (last_tok == JTOK_COMMA) || (last_tok == JTOK_ARR_OPEN)) return false; UniValue *top = stack.back(); if (top->getType() == VOBJ) - expectName = true; + setExpect(OBJ_NAME); + else + setExpect(ARR_VALUE); break; } case JTOK_KW_NULL: case JTOK_KW_TRUE: case JTOK_KW_FALSE: { - if (!stack.size() || expectName || expectColon) - return false; - UniValue tmpVal; switch (tok) { case JTOK_KW_NULL: @@ -342,49 +390,65 @@ bool UniValue::read(const char *raw) default: /* impossible */ break; } + if (!stack.size()) { + *this = tmpVal; + break; + } + UniValue *top = stack.back(); top->values.push_back(tmpVal); + setExpect(NOT_VALUE); break; } case JTOK_NUMBER: { - if (!stack.size() || expectName || expectColon) - return false; - UniValue tmpVal(VNUM, tokenVal); + if (!stack.size()) { + *this = tmpVal; + break; + } + UniValue *top = stack.back(); top->values.push_back(tmpVal); + setExpect(NOT_VALUE); break; } case JTOK_STRING: { - if (!stack.size()) - return false; - - UniValue *top = stack.back(); - - if (expectName) { + if (expect(OBJ_NAME)) { + UniValue *top = stack.back(); top->keys.push_back(tokenVal); - expectName = false; - expectColon = true; + clearExpect(OBJ_NAME); + setExpect(COLON); } else { UniValue tmpVal(VSTR, tokenVal); + if (!stack.size()) { + *this = tmpVal; + break; + } + UniValue *top = stack.back(); top->values.push_back(tmpVal); } + setExpect(NOT_VALUE); break; } default: return false; } - } + } while (!stack.empty ()); - if (stack.size() != 0) + /* Check that nothing follows the initial construct (parsed above). */ + tok = getJsonToken(tokenVal, consumed, raw, end); + if (tok != JTOK_NONE) return false; return true; } +bool UniValue::read(const char *raw) { + return read(raw, strlen(raw)); +} diff --git a/src/univalue/lib/univalue_utffilter.h b/src/univalue/lib/univalue_utffilter.h new file mode 100644 index 000000000..b4a9ddc0a --- /dev/null +++ b/src/univalue/lib/univalue_utffilter.h @@ -0,0 +1,119 @@ +// Copyright 2016 Wladimir J. van der Laan +// Distributed under the MIT software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. +#ifndef UNIVALUE_UTFFILTER_H +#define UNIVALUE_UTFFILTER_H + +#include + +/** + * Filter that generates and validates UTF-8, as well as collates UTF-16 + * surrogate pairs as specified in RFC4627. + */ +class JSONUTF8StringFilter +{ +public: + JSONUTF8StringFilter(std::string &s): + str(s), is_valid(true), codepoint(0), state(0), surpair(0) + { + } + // Write single 8-bit char (may be part of UTF-8 sequence) + void push_back(unsigned char ch) + { + if (state == 0) { + if (ch < 0x80) // 7-bit ASCII, fast direct pass-through + str.push_back(ch); + else if (ch < 0xc0) // Mid-sequence character, invalid in this state + is_valid = false; + else if (ch < 0xe0) { // Start of 2-byte sequence + codepoint = (ch & 0x1f) << 6; + state = 6; + } else if (ch < 0xf0) { // Start of 3-byte sequence + codepoint = (ch & 0x0f) << 12; + state = 12; + } else if (ch < 0xf8) { // Start of 4-byte sequence + codepoint = (ch & 0x07) << 18; + state = 18; + } else // Reserved, invalid + is_valid = false; + } else { + if ((ch & 0xc0) != 0x80) // Not a continuation, invalid + is_valid = false; + state -= 6; + codepoint |= (ch & 0x3f) << state; + if (state == 0) + push_back_u(codepoint); + } + } + // Write codepoint directly, possibly collating surrogate pairs + void push_back_u(unsigned int codepoint_) + { + if (state) // Only accept full codepoints in open state + is_valid = false; + if (codepoint_ >= 0xD800 && codepoint_ < 0xDC00) { // First half of surrogate pair + if (surpair) // Two subsequent surrogate pair openers - fail + is_valid = false; + else + surpair = codepoint_; + } else if (codepoint_ >= 0xDC00 && codepoint_ < 0xE000) { // Second half of surrogate pair + if (surpair) { // Open surrogate pair, expect second half + // Compute code point from UTF-16 surrogate pair + append_codepoint(0x10000 | ((surpair - 0xD800)<<10) | (codepoint_ - 0xDC00)); + surpair = 0; + } else // Second half doesn't follow a first half - fail + is_valid = false; + } else { + if (surpair) // First half of surrogate pair not followed by second - fail + is_valid = false; + else + append_codepoint(codepoint_); + } + } + // Check that we're in a state where the string can be ended + // No open sequences, no open surrogate pairs, etc + bool finalize() + { + if (state || surpair) + is_valid = false; + return is_valid; + } +private: + std::string &str; + bool is_valid; + // Current UTF-8 decoding state + unsigned int codepoint; + int state; // Top bit to be filled in for next UTF-8 byte, or 0 + + // Keep track of the following state to handle the following section of + // RFC4627: + // + // To escape an extended character that is not in the Basic Multilingual + // Plane, the character is represented as a twelve-character sequence, + // encoding the UTF-16 surrogate pair. So, for example, a string + // containing only the G clef character (U+1D11E) may be represented as + // "\uD834\uDD1E". + // + // Two subsequent \u.... may have to be replaced with one actual codepoint. + unsigned int surpair; // First half of open UTF-16 surrogate pair, or 0 + + void append_codepoint(unsigned int codepoint_) + { + if (codepoint_ <= 0x7f) + str.push_back((char)codepoint_); + else if (codepoint_ <= 0x7FF) { + str.push_back((char)(0xC0 | (codepoint_ >> 6))); + str.push_back((char)(0x80 | (codepoint_ & 0x3F))); + } else if (codepoint_ <= 0xFFFF) { + str.push_back((char)(0xE0 | (codepoint_ >> 12))); + str.push_back((char)(0x80 | ((codepoint_ >> 6) & 0x3F))); + str.push_back((char)(0x80 | (codepoint_ & 0x3F))); + } else if (codepoint_ <= 0x1FFFFF) { + str.push_back((char)(0xF0 | (codepoint_ >> 18))); + str.push_back((char)(0x80 | ((codepoint_ >> 12) & 0x3F))); + str.push_back((char)(0x80 | ((codepoint_ >> 6) & 0x3F))); + str.push_back((char)(0x80 | (codepoint_ & 0x3F))); + } + } +}; + +#endif diff --git a/src/univalue/univalue_write.cpp b/src/univalue/lib/univalue_write.cpp similarity index 89% rename from src/univalue/univalue_write.cpp rename to src/univalue/lib/univalue_write.cpp index 9a1d364c9..cf2783599 100644 --- a/src/univalue/univalue_write.cpp +++ b/src/univalue/lib/univalue_write.cpp @@ -2,13 +2,12 @@ // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. -#include +#include +#include #include #include "univalue.h" #include "univalue_escapes.h" -// TODO: Using UTF8 - using namespace std; static string json_escape(const string& inS) @@ -22,15 +21,8 @@ static string json_escape(const string& inS) if (escStr) outS += escStr; - - else if (isprint(ch)) + else outS += ch; - - else { - char tmpesc[16]; - sprintf(tmpesc, "\\u%04x", ch); - outS += tmpesc; - } } return outS; @@ -87,8 +79,6 @@ void UniValue::writeArray(unsigned int prettyIndent, unsigned int indentLevel, s s += values[i].write(prettyIndent, indentLevel + 1); if (i != (values.size() - 1)) { s += ","; - if (prettyIndent) - s += " "; } if (prettyIndent) s += "\n"; @@ -111,7 +101,7 @@ void UniValue::writeObject(unsigned int prettyIndent, unsigned int indentLevel, s += "\"" + json_escape(keys[i]) + "\":"; if (prettyIndent) s += " "; - s += values[i].write(prettyIndent, indentLevel + 1); + s += values.at(i).write(prettyIndent, indentLevel + 1); if (i != (values.size() - 1)) s += ","; if (prettyIndent) diff --git a/src/univalue/pc/libunivalue-uninstalled.pc.in b/src/univalue/pc/libunivalue-uninstalled.pc.in new file mode 100644 index 000000000..b7f53e875 --- /dev/null +++ b/src/univalue/pc/libunivalue-uninstalled.pc.in @@ -0,0 +1,9 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=@includedir@ + +Name: libunivalue +Description: libunivalue, C++ universal value object and JSON library +Version: @VERSION@ +Libs: ${pc_top_builddir}/${pcfiledir}/libunivalue.la diff --git a/src/univalue/pc/libunivalue.pc.in b/src/univalue/pc/libunivalue.pc.in new file mode 100644 index 000000000..358a2d5f7 --- /dev/null +++ b/src/univalue/pc/libunivalue.pc.in @@ -0,0 +1,10 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=@includedir@ + +Name: libunivalue +Description: libunivalue, C++ universal value object and JSON library +Version: @VERSION@ +Libs: -L${libdir} -lunivalue +Cflags: -I${includedir} diff --git a/src/univalue/test/.gitignore b/src/univalue/test/.gitignore new file mode 100644 index 000000000..9d0ed5701 --- /dev/null +++ b/src/univalue/test/.gitignore @@ -0,0 +1,6 @@ +unitester +test_json +no_nul + +*.trs +*.log diff --git a/src/univalue/test/fail1.json b/src/univalue/test/fail1.json new file mode 100644 index 000000000..8feb01a6d --- /dev/null +++ b/src/univalue/test/fail1.json @@ -0,0 +1 @@ +"This is a string that never ends, yes it goes on and on, my friends. diff --git a/src/univalue/test/fail10.json b/src/univalue/test/fail10.json new file mode 100644 index 000000000..5d8c0047b --- /dev/null +++ b/src/univalue/test/fail10.json @@ -0,0 +1 @@ +{"Extra value after close": true} "misplaced quoted value" \ No newline at end of file diff --git a/src/univalue/test/fail11.json b/src/univalue/test/fail11.json new file mode 100644 index 000000000..76eb95b45 --- /dev/null +++ b/src/univalue/test/fail11.json @@ -0,0 +1 @@ +{"Illegal expression": 1 + 2} \ No newline at end of file diff --git a/src/univalue/test/fail12.json b/src/univalue/test/fail12.json new file mode 100644 index 000000000..77580a452 --- /dev/null +++ b/src/univalue/test/fail12.json @@ -0,0 +1 @@ +{"Illegal invocation": alert()} \ No newline at end of file diff --git a/src/univalue/test/fail13.json b/src/univalue/test/fail13.json new file mode 100644 index 000000000..379406b59 --- /dev/null +++ b/src/univalue/test/fail13.json @@ -0,0 +1 @@ +{"Numbers cannot have leading zeroes": 013} \ No newline at end of file diff --git a/src/univalue/test/fail14.json b/src/univalue/test/fail14.json new file mode 100644 index 000000000..0ed366b38 --- /dev/null +++ b/src/univalue/test/fail14.json @@ -0,0 +1 @@ +{"Numbers cannot be hex": 0x14} \ No newline at end of file diff --git a/src/univalue/test/fail15.json b/src/univalue/test/fail15.json new file mode 100644 index 000000000..fc8376b60 --- /dev/null +++ b/src/univalue/test/fail15.json @@ -0,0 +1 @@ +["Illegal backslash escape: \x15"] \ No newline at end of file diff --git a/src/univalue/test/fail16.json b/src/univalue/test/fail16.json new file mode 100644 index 000000000..3fe21d4b5 --- /dev/null +++ b/src/univalue/test/fail16.json @@ -0,0 +1 @@ +[\naked] \ No newline at end of file diff --git a/src/univalue/test/fail17.json b/src/univalue/test/fail17.json new file mode 100644 index 000000000..62b9214ae --- /dev/null +++ b/src/univalue/test/fail17.json @@ -0,0 +1 @@ +["Illegal backslash escape: \017"] \ No newline at end of file diff --git a/src/univalue/test/fail18.json b/src/univalue/test/fail18.json new file mode 100644 index 000000000..edac92716 --- /dev/null +++ b/src/univalue/test/fail18.json @@ -0,0 +1 @@ +[[[[[[[[[[[[[[[[[[[["Too deep"]]]]]]]]]]]]]]]]]]]] \ No newline at end of file diff --git a/src/univalue/test/fail19.json b/src/univalue/test/fail19.json new file mode 100644 index 000000000..3b9c46fa9 --- /dev/null +++ b/src/univalue/test/fail19.json @@ -0,0 +1 @@ +{"Missing colon" null} \ No newline at end of file diff --git a/src/univalue/test/fail2.json b/src/univalue/test/fail2.json new file mode 100644 index 000000000..6b7c11e5a --- /dev/null +++ b/src/univalue/test/fail2.json @@ -0,0 +1 @@ +["Unclosed array" \ No newline at end of file diff --git a/src/univalue/test/fail20.json b/src/univalue/test/fail20.json new file mode 100644 index 000000000..27c1af3e7 --- /dev/null +++ b/src/univalue/test/fail20.json @@ -0,0 +1 @@ +{"Double colon":: null} \ No newline at end of file diff --git a/src/univalue/test/fail21.json b/src/univalue/test/fail21.json new file mode 100644 index 000000000..62474573b --- /dev/null +++ b/src/univalue/test/fail21.json @@ -0,0 +1 @@ +{"Comma instead of colon", null} \ No newline at end of file diff --git a/src/univalue/test/fail22.json b/src/univalue/test/fail22.json new file mode 100644 index 000000000..a7752581b --- /dev/null +++ b/src/univalue/test/fail22.json @@ -0,0 +1 @@ +["Colon instead of comma": false] \ No newline at end of file diff --git a/src/univalue/test/fail23.json b/src/univalue/test/fail23.json new file mode 100644 index 000000000..494add1ca --- /dev/null +++ b/src/univalue/test/fail23.json @@ -0,0 +1 @@ +["Bad value", truth] \ No newline at end of file diff --git a/src/univalue/test/fail24.json b/src/univalue/test/fail24.json new file mode 100644 index 000000000..caff239bf --- /dev/null +++ b/src/univalue/test/fail24.json @@ -0,0 +1 @@ +['single quote'] \ No newline at end of file diff --git a/src/univalue/test/fail25.json b/src/univalue/test/fail25.json new file mode 100644 index 000000000..8b7ad23e0 --- /dev/null +++ b/src/univalue/test/fail25.json @@ -0,0 +1 @@ +[" tab character in string "] \ No newline at end of file diff --git a/src/univalue/test/fail26.json b/src/univalue/test/fail26.json new file mode 100644 index 000000000..845d26a6a --- /dev/null +++ b/src/univalue/test/fail26.json @@ -0,0 +1 @@ +["tab\ character\ in\ string\ "] \ No newline at end of file diff --git a/src/univalue/test/fail27.json b/src/univalue/test/fail27.json new file mode 100644 index 000000000..6b01a2ca4 --- /dev/null +++ b/src/univalue/test/fail27.json @@ -0,0 +1,2 @@ +["line +break"] \ No newline at end of file diff --git a/src/univalue/test/fail28.json b/src/univalue/test/fail28.json new file mode 100644 index 000000000..621a0101c --- /dev/null +++ b/src/univalue/test/fail28.json @@ -0,0 +1,2 @@ +["line\ +break"] \ No newline at end of file diff --git a/src/univalue/test/fail29.json b/src/univalue/test/fail29.json new file mode 100644 index 000000000..47ec421bb --- /dev/null +++ b/src/univalue/test/fail29.json @@ -0,0 +1 @@ +[0e] \ No newline at end of file diff --git a/src/univalue/test/fail3.json b/src/univalue/test/fail3.json new file mode 100644 index 000000000..168c81eb7 --- /dev/null +++ b/src/univalue/test/fail3.json @@ -0,0 +1 @@ +{unquoted_key: "keys must be quoted"} \ No newline at end of file diff --git a/src/univalue/test/fail30.json b/src/univalue/test/fail30.json new file mode 100644 index 000000000..8ab0bc4b8 --- /dev/null +++ b/src/univalue/test/fail30.json @@ -0,0 +1 @@ +[0e+] \ No newline at end of file diff --git a/src/univalue/test/fail31.json b/src/univalue/test/fail31.json new file mode 100644 index 000000000..1cce602b5 --- /dev/null +++ b/src/univalue/test/fail31.json @@ -0,0 +1 @@ +[0e+-1] \ No newline at end of file diff --git a/src/univalue/test/fail32.json b/src/univalue/test/fail32.json new file mode 100644 index 000000000..45cba7396 --- /dev/null +++ b/src/univalue/test/fail32.json @@ -0,0 +1 @@ +{"Comma instead if closing brace": true, \ No newline at end of file diff --git a/src/univalue/test/fail33.json b/src/univalue/test/fail33.json new file mode 100644 index 000000000..ca5eb19dc --- /dev/null +++ b/src/univalue/test/fail33.json @@ -0,0 +1 @@ +["mismatch"} \ No newline at end of file diff --git a/src/univalue/test/fail34.json b/src/univalue/test/fail34.json new file mode 100644 index 000000000..3f8be1728 --- /dev/null +++ b/src/univalue/test/fail34.json @@ -0,0 +1 @@ +{} garbage \ No newline at end of file diff --git a/src/univalue/test/fail35.json b/src/univalue/test/fail35.json new file mode 100644 index 000000000..de30ca5c4 --- /dev/null +++ b/src/univalue/test/fail35.json @@ -0,0 +1 @@ +[ true true true [] [] [] ] diff --git a/src/univalue/test/fail36.json b/src/univalue/test/fail36.json new file mode 100644 index 000000000..f82eb8e1f --- /dev/null +++ b/src/univalue/test/fail36.json @@ -0,0 +1 @@ +{"a":} diff --git a/src/univalue/test/fail37.json b/src/univalue/test/fail37.json new file mode 100644 index 000000000..3294dc3a4 --- /dev/null +++ b/src/univalue/test/fail37.json @@ -0,0 +1 @@ +{"a":1 "b":2} diff --git a/src/univalue/test/fail38.json b/src/univalue/test/fail38.json new file mode 100644 index 000000000..b245e2e46 --- /dev/null +++ b/src/univalue/test/fail38.json @@ -0,0 +1 @@ +["\ud834"] diff --git a/src/univalue/test/fail39.json b/src/univalue/test/fail39.json new file mode 100644 index 000000000..7c9e263f2 --- /dev/null +++ b/src/univalue/test/fail39.json @@ -0,0 +1 @@ +["\udd61"] diff --git a/src/univalue/test/fail4.json b/src/univalue/test/fail4.json new file mode 100644 index 000000000..9de168bf3 --- /dev/null +++ b/src/univalue/test/fail4.json @@ -0,0 +1 @@ +["extra comma",] \ No newline at end of file diff --git a/src/univalue/test/fail40.json b/src/univalue/test/fail40.json new file mode 100644 index 000000000..664dc9e24 --- /dev/null +++ b/src/univalue/test/fail40.json @@ -0,0 +1 @@ +["…¡"] \ No newline at end of file diff --git a/src/univalue/test/fail41.json b/src/univalue/test/fail41.json new file mode 100644 index 000000000..0de342a2b --- /dev/null +++ b/src/univalue/test/fail41.json @@ -0,0 +1 @@ +["ð…"] \ No newline at end of file diff --git a/src/univalue/test/fail42.json b/src/univalue/test/fail42.json new file mode 100644 index 000000000..9c7565adb Binary files /dev/null and b/src/univalue/test/fail42.json differ diff --git a/src/univalue/test/fail5.json b/src/univalue/test/fail5.json new file mode 100644 index 000000000..ddf3ce3d2 --- /dev/null +++ b/src/univalue/test/fail5.json @@ -0,0 +1 @@ +["double extra comma",,] \ No newline at end of file diff --git a/src/univalue/test/fail6.json b/src/univalue/test/fail6.json new file mode 100644 index 000000000..ed91580e1 --- /dev/null +++ b/src/univalue/test/fail6.json @@ -0,0 +1 @@ +[ , "<-- missing value"] \ No newline at end of file diff --git a/src/univalue/test/fail7.json b/src/univalue/test/fail7.json new file mode 100644 index 000000000..8a96af3e4 --- /dev/null +++ b/src/univalue/test/fail7.json @@ -0,0 +1 @@ +["Comma after the close"], \ No newline at end of file diff --git a/src/univalue/test/fail8.json b/src/univalue/test/fail8.json new file mode 100644 index 000000000..b28479c6e --- /dev/null +++ b/src/univalue/test/fail8.json @@ -0,0 +1 @@ +["Extra close"]] \ No newline at end of file diff --git a/src/univalue/test/fail9.json b/src/univalue/test/fail9.json new file mode 100644 index 000000000..5815574f3 --- /dev/null +++ b/src/univalue/test/fail9.json @@ -0,0 +1 @@ +{"Extra comma": true,} \ No newline at end of file diff --git a/src/univalue/test/no_nul.cpp b/src/univalue/test/no_nul.cpp new file mode 100644 index 000000000..83d292200 --- /dev/null +++ b/src/univalue/test/no_nul.cpp @@ -0,0 +1,8 @@ +#include "univalue.h" + +int main (int argc, char *argv[]) +{ + char buf[] = "___[1,2,3]___"; + UniValue val; + return val.read(buf + 3, 7) ? 0 : 1; +} diff --git a/src/univalue/test/pass1.json b/src/univalue/test/pass1.json new file mode 100644 index 000000000..70e268543 --- /dev/null +++ b/src/univalue/test/pass1.json @@ -0,0 +1,58 @@ +[ + "JSON Test Pattern pass1", + {"object with 1 member":["array with 1 element"]}, + {}, + [], + -42, + true, + false, + null, + { + "integer": 1234567890, + "real": -9876.543210, + "e": 0.123456789e-12, + "E": 1.234567890E+34, + "": 23456789012E66, + "zero": 0, + "one": 1, + "space": " ", + "quote": "\"", + "backslash": "\\", + "controls": "\b\f\n\r\t", + "slash": "/ & \/", + "alpha": "abcdefghijklmnopqrstuvwyz", + "ALPHA": "ABCDEFGHIJKLMNOPQRSTUVWYZ", + "digit": "0123456789", + "0123456789": "digit", + "special": "`1~!@#$%^&*()_+-={':[,]}|;.?", + "hex": "\u0123\u4567\u89AB\uCDEF\uabcd\uef4A", + "true": true, + "false": false, + "null": null, + "array":[ ], + "object":{ }, + "address": "50 St. James Street", + "url": "http://www.JSON.org/", + "comment": "// /* */": " ", + " s p a c e d " :[1,2 , 3 + +, + +4 , 5 , 6 ,7 ],"compact":[1,2,3,4,5,6,7], + "jsontext": "{\"object with 1 member\":[\"array with 1 element\"]}", + "quotes": "" \u0022 %22 0x22 034 "", + "\/\\\"\uCAFE\uBABE\uAB98\uFCDE\ubcda\uef4A\b\f\n\r\t`1~!@#$%^&*()_+-=[]{}|;:',./<>?" +: "A key can be any string" + }, + 0.5 ,98.6 +, +99.44 +, + +1066, +1e1, +0.1e1, +1e-1, +1e00,2e+00,2e-00 +,"rosebud"] \ No newline at end of file diff --git a/src/univalue/test/pass2.json b/src/univalue/test/pass2.json new file mode 100644 index 000000000..d3c63c7ad --- /dev/null +++ b/src/univalue/test/pass2.json @@ -0,0 +1 @@ +[[[[[[[[[[[[[[[[[[["Not too deep"]]]]]]]]]]]]]]]]]]] \ No newline at end of file diff --git a/src/univalue/test/pass3.json b/src/univalue/test/pass3.json new file mode 100644 index 000000000..4528d51f1 --- /dev/null +++ b/src/univalue/test/pass3.json @@ -0,0 +1,6 @@ +{ + "JSON Test Pattern pass3": { + "The outermost value": "must be an object or array.", + "In this test": "It is an object." + } +} diff --git a/src/univalue/test/round1.json b/src/univalue/test/round1.json new file mode 100644 index 000000000..a711e7308 --- /dev/null +++ b/src/univalue/test/round1.json @@ -0,0 +1 @@ +["\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u007f"] diff --git a/src/univalue/test/round2.json b/src/univalue/test/round2.json new file mode 100644 index 000000000..b766cccc6 --- /dev/null +++ b/src/univalue/test/round2.json @@ -0,0 +1 @@ +["a§■ðŽ’ð…¡"] diff --git a/src/univalue/test/round3.json b/src/univalue/test/round3.json new file mode 100644 index 000000000..7182dc2f9 --- /dev/null +++ b/src/univalue/test/round3.json @@ -0,0 +1 @@ +"abcdefghijklmnopqrstuvwxyz" diff --git a/src/univalue/test/round4.json b/src/univalue/test/round4.json new file mode 100644 index 000000000..7f8f011eb --- /dev/null +++ b/src/univalue/test/round4.json @@ -0,0 +1 @@ +7 diff --git a/src/univalue/test/round5.json b/src/univalue/test/round5.json new file mode 100644 index 000000000..27ba77dda --- /dev/null +++ b/src/univalue/test/round5.json @@ -0,0 +1 @@ +true diff --git a/src/univalue/test/round6.json b/src/univalue/test/round6.json new file mode 100644 index 000000000..c508d5366 --- /dev/null +++ b/src/univalue/test/round6.json @@ -0,0 +1 @@ +false diff --git a/src/univalue/test/round7.json b/src/univalue/test/round7.json new file mode 100644 index 000000000..19765bd50 --- /dev/null +++ b/src/univalue/test/round7.json @@ -0,0 +1 @@ +null diff --git a/src/univalue/test/test_json.cpp b/src/univalue/test/test_json.cpp new file mode 100644 index 000000000..2943bae2b --- /dev/null +++ b/src/univalue/test/test_json.cpp @@ -0,0 +1,24 @@ +// Test program that can be called by the JSON test suite at +// https://github.com/nst/JSONTestSuite. +// +// It reads JSON input from stdin and exits with code 0 if it can be parsed +// successfully. It also pretty prints the parsed JSON value to stdout. + +#include +#include +#include "univalue.h" + +using namespace std; + +int main (int argc, char *argv[]) +{ + UniValue val; + if (val.read(string(istreambuf_iterator(cin), + istreambuf_iterator()))) { + cout << val.write(1 /* prettyIndent */, 4 /* indentLevel */) << endl; + return 0; + } else { + cerr << "JSON Parse Error." << endl; + return 1; + } +} diff --git a/src/univalue/test/unitester.cpp b/src/univalue/test/unitester.cpp new file mode 100644 index 000000000..aa6f91c1b --- /dev/null +++ b/src/univalue/test/unitester.cpp @@ -0,0 +1,169 @@ +// Copyright 2014 BitPay Inc. +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + +#include +#include +#include +#include +#include +#include "univalue.h" + +#ifndef JSON_TEST_SRC +#error JSON_TEST_SRC must point to test source directory +#endif + +#ifndef ARRAY_SIZE +#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0])) +#endif + +using namespace std; +string srcdir(JSON_TEST_SRC); +static bool test_failed = false; + +#define d_assert(expr) { if (!(expr)) { test_failed = true; fprintf(stderr, "%s failed\n", filename.c_str()); } } +#define f_assert(expr) { if (!(expr)) { test_failed = true; fprintf(stderr, "%s failed\n", __func__); } } + +static std::string rtrim(std::string s) +{ + s.erase(s.find_last_not_of(" \n\r\t")+1); + return s; +} + +static void runtest(string filename, const string& jdata) +{ + string prefix = filename.substr(0, 4); + + bool wantPass = (prefix == "pass") || (prefix == "roun"); + bool wantFail = (prefix == "fail"); + bool wantRoundTrip = (prefix == "roun"); + assert(wantPass || wantFail); + + UniValue val; + bool testResult = val.read(jdata); + + if (wantPass) { + d_assert(testResult == true); + } else { + d_assert(testResult == false); + } + + if (wantRoundTrip) { + std::string odata = val.write(0, 0); + assert(odata == rtrim(jdata)); + } +} + +static void runtest_file(const char *filename_) +{ + string basename(filename_); + string filename = srcdir + "/" + basename; + FILE *f = fopen(filename.c_str(), "r"); + assert(f != NULL); + + string jdata; + + char buf[4096]; + while (!feof(f)) { + int bread = fread(buf, 1, sizeof(buf), f); + assert(!ferror(f)); + + string s(buf, bread); + jdata += s; + } + + assert(!ferror(f)); + fclose(f); + + runtest(basename, jdata); +} + +static const char *filenames[] = { + "fail10.json", + "fail11.json", + "fail12.json", + "fail13.json", + "fail14.json", + "fail15.json", + "fail16.json", + "fail17.json", + //"fail18.json", // investigate + "fail19.json", + "fail1.json", + "fail20.json", + "fail21.json", + "fail22.json", + "fail23.json", + "fail24.json", + "fail25.json", + "fail26.json", + "fail27.json", + "fail28.json", + "fail29.json", + "fail2.json", + "fail30.json", + "fail31.json", + "fail32.json", + "fail33.json", + "fail34.json", + "fail35.json", + "fail36.json", + "fail37.json", + "fail38.json", // invalid unicode: only first half of surrogate pair + "fail39.json", // invalid unicode: only second half of surrogate pair + "fail40.json", // invalid unicode: broken UTF-8 + "fail41.json", // invalid unicode: unfinished UTF-8 + "fail42.json", // valid json with garbage following a nul byte + "fail3.json", + "fail4.json", // extra comma + "fail5.json", + "fail6.json", + "fail7.json", + "fail8.json", + "fail9.json", // extra comma + "pass1.json", + "pass2.json", + "pass3.json", + "round1.json", // round-trip test + "round2.json", // unicode + "round3.json", // bare string + "round4.json", // bare number + "round5.json", // bare true + "round6.json", // bare false + "round7.json", // bare null +}; + +// Test \u handling +void unescape_unicode_test() +{ + UniValue val; + bool testResult; + // Escaped ASCII (quote) + testResult = val.read("[\"\\u0022\"]"); + f_assert(testResult); + f_assert(val[0].get_str() == "\""); + // Escaped Basic Plane character, two-byte UTF-8 + testResult = val.read("[\"\\u0191\"]"); + f_assert(testResult); + f_assert(val[0].get_str() == "\xc6\x91"); + // Escaped Basic Plane character, three-byte UTF-8 + testResult = val.read("[\"\\u2191\"]"); + f_assert(testResult); + f_assert(val[0].get_str() == "\xe2\x86\x91"); + // Escaped Supplementary Plane character U+1d161 + testResult = val.read("[\"\\ud834\\udd61\"]"); + f_assert(testResult); + f_assert(val[0].get_str() == "\xf0\x9d\x85\xa1"); +} + +int main (int argc, char *argv[]) +{ + for (unsigned int fidx = 0; fidx < ARRAY_SIZE(filenames); fidx++) { + runtest_file(filenames[fidx]); + } + + unescape_unicode_test(); + + return test_failed ? 1 : 0; +} + diff --git a/src/univalue/univalue.cpp b/src/univalue/univalue.cpp deleted file mode 100644 index 4e445a542..000000000 --- a/src/univalue/univalue.cpp +++ /dev/null @@ -1,211 +0,0 @@ -// Copyright 2014 BitPay Inc. -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#include -#include -#include -#include "univalue.h" - -using namespace std; - -static const UniValue nullValue; - -void UniValue::clear() -{ - typ = VNULL; - val.clear(); - keys.clear(); - values.clear(); -} - -bool UniValue::setNull() -{ - clear(); - return true; -} - -bool UniValue::setBool(bool val_) -{ - clear(); - typ = VBOOL; - if (val_) - val = "1"; - return true; -} - -static bool validNumStr(const string& s) -{ - string tokenVal; - unsigned int consumed; - enum jtokentype tt = getJsonToken(tokenVal, consumed, s.c_str()); - return (tt == JTOK_NUMBER); -} - -bool UniValue::setNumStr(const string& val_) -{ - if (!validNumStr(val_)) - return false; - - clear(); - typ = VNUM; - val = val_; - return true; -} - -bool UniValue::setInt(uint64_t val) -{ - string s; - ostringstream oss; - - oss << val; - - return setNumStr(oss.str()); -} - -bool UniValue::setInt(int64_t val) -{ - string s; - ostringstream oss; - - oss << val; - - return setNumStr(oss.str()); -} - -bool UniValue::setFloat(double val) -{ - string s; - ostringstream oss; - - oss << val; - - return setNumStr(oss.str()); -} - -bool UniValue::setStr(const string& val_) -{ - clear(); - typ = VSTR; - val = val_; - return true; -} - -bool UniValue::setArray() -{ - clear(); - typ = VARR; - return true; -} - -bool UniValue::setObject() -{ - clear(); - typ = VOBJ; - return true; -} - -bool UniValue::push_back(const UniValue& val) -{ - if (typ != VARR) - return false; - - values.push_back(val); - return true; -} - -bool UniValue::push_backV(const std::vector& vec) -{ - if (typ != VARR) - return false; - - values.insert(values.end(), vec.begin(), vec.end()); - - return true; -} - -bool UniValue::pushKV(const std::string& key, const UniValue& val) -{ - if (typ != VOBJ) - return false; - - keys.push_back(key); - values.push_back(val); - return true; -} - -bool UniValue::pushKVs(const UniValue& obj) -{ - if (typ != VOBJ || obj.typ != VOBJ) - return false; - - for (unsigned int i = 0; i < obj.keys.size(); i++) { - keys.push_back(obj.keys[i]); - values.push_back(obj.values[i]); - } - - return true; -} - -int UniValue::findKey(const std::string& key) const -{ - for (unsigned int i = 0; i < keys.size(); i++) { - if (keys[i] == key) - return (int) i; - } - - return -1; -} - -bool UniValue::checkObject(const std::map& t) -{ - for (std::map::const_iterator it = t.begin(); - it != t.end(); it++) { - int idx = findKey(it->first); - if (idx < 0) - return false; - - if (values[idx].getType() != it->second) - return false; - } - - return true; -} - -const UniValue& UniValue::operator[](const std::string& key) const -{ - if (typ != VOBJ) - return nullValue; - - int index = findKey(key); - if (index < 0) - return nullValue; - - return values[index]; -} - -const UniValue& UniValue::operator[](unsigned int index) const -{ - if (typ != VOBJ && typ != VARR) - return nullValue; - if (index >= values.size()) - return nullValue; - - return values[index]; -} - -const char *uvTypeName(UniValue::VType t) -{ - switch (t) { - case UniValue::VNULL: return "null"; - case UniValue::VBOOL: return "bool"; - case UniValue::VOBJ: return "object"; - case UniValue::VARR: return "array"; - case UniValue::VSTR: return "string"; - case UniValue::VNUM: return "number"; - } - - // not reached - return NULL; -} - diff --git a/src/univalue/univalue.h b/src/univalue/univalue.h deleted file mode 100644 index 88d73b8c6..000000000 --- a/src/univalue/univalue.h +++ /dev/null @@ -1,155 +0,0 @@ -// Copyright 2014 BitPay Inc. -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#ifndef BITCOIN_UNIVALUE_UNIVALUE_H -#define BITCOIN_UNIVALUE_UNIVALUE_H - -#include -#include -#include -#include -#include - -class UniValue { -public: - enum VType { VNULL, VOBJ, VARR, VSTR, VNUM, VBOOL, }; - - UniValue() { typ = VNULL; } - UniValue(UniValue::VType initialType, const std::string& initialStr = "") { - typ = initialType; - val = initialStr; - } - UniValue(uint64_t val_) { - setInt(val_); - } - UniValue(int64_t val_) { - setInt(val_); - } - UniValue(int val_) { - setInt(val_); - } - UniValue(double val_) { - setFloat(val_); - } - UniValue(const std::string& val_) { - setStr(val_); - } - UniValue(const char *val_) { - std::string s(val_); - setStr(s); - } - ~UniValue() {} - - void clear(); - - bool setNull(); - bool setBool(bool val); - bool setNumStr(const std::string& val); - bool setInt(uint64_t val); - bool setInt(int64_t val); - bool setInt(int val) { return setInt((int64_t)val); } - bool setFloat(double val); - bool setStr(const std::string& val); - bool setArray(); - bool setObject(); - - enum VType getType() const { return typ; } - std::string getValStr() const { return val; } - bool empty() const { return (values.size() == 0); } - - size_t count() const { return values.size(); } - - bool getBool() const { return isTrue(); } - bool checkObject(const std::map& memberTypes); - const UniValue& operator[](const std::string& key) const; - const UniValue& operator[](unsigned int index) const; - bool exists(const std::string& key) const { return (findKey(key) >= 0); } - - bool isNull() const { return (typ == VNULL); } - bool isTrue() const { return (typ == VBOOL) && (val == "1"); } - bool isFalse() const { return (!isTrue()); } - bool isBool() const { return (typ == VBOOL); } - bool isStr() const { return (typ == VSTR); } - bool isNum() const { return (typ == VNUM); } - bool isArray() const { return (typ == VARR); } - bool isObject() const { return (typ == VOBJ); } - - bool push_back(const UniValue& val); - bool push_back(const std::string& val_) { - UniValue tmpVal(VSTR, val_); - return push_back(tmpVal); - } - bool push_back(const char *val_) { - std::string s(val_); - return push_back(s); - } - bool push_backV(const std::vector& vec); - - bool pushKV(const std::string& key, const UniValue& val); - bool pushKV(const std::string& key, const std::string& val) { - UniValue tmpVal(VSTR, val); - return pushKV(key, tmpVal); - } - bool pushKV(const std::string& key, const char *val_) { - std::string val(val_); - return pushKV(key, val); - } - bool pushKV(const std::string& key, int64_t val) { - UniValue tmpVal(val); - return pushKV(key, tmpVal); - } - bool pushKV(const std::string& key, uint64_t val) { - UniValue tmpVal(val); - return pushKV(key, tmpVal); - } - bool pushKV(const std::string& key, int val) { - UniValue tmpVal((int64_t)val); - return pushKV(key, tmpVal); - } - bool pushKV(const std::string& key, double val) { - UniValue tmpVal(val); - return pushKV(key, tmpVal); - } - bool pushKVs(const UniValue& obj); - - std::string write(unsigned int prettyIndent = 0, - unsigned int indentLevel = 0) const; - - bool read(const char *raw); - bool read(const std::string& rawStr) { - return read(rawStr.c_str()); - } - -private: - UniValue::VType typ; - std::string val; // numbers are stored as C++ strings - std::vector keys; - std::vector values; - - int findKey(const std::string& key) const; - void writeArray(unsigned int prettyIndent, unsigned int indentLevel, std::string& s) const; - void writeObject(unsigned int prettyIndent, unsigned int indentLevel, std::string& s) const; -}; - -enum jtokentype { - JTOK_ERR = -1, - JTOK_NONE = 0, // eof - JTOK_OBJ_OPEN, - JTOK_OBJ_CLOSE, - JTOK_ARR_OPEN, - JTOK_ARR_CLOSE, - JTOK_COLON, - JTOK_COMMA, - JTOK_KW_NULL, - JTOK_KW_TRUE, - JTOK_KW_FALSE, - JTOK_NUMBER, - JTOK_STRING, -}; - -extern enum jtokentype getJsonToken(std::string& tokenVal, - unsigned int& consumed, const char *raw); -extern const char *uvTypeName(UniValue::VType t); - -#endif // BITCOIN_UNIVALUE_UNIVALUE_H diff --git a/src/util.cpp b/src/util.cpp index 553aa3213..4c901d586 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -82,7 +82,6 @@ #include #include #include -#include #include // Work around clang compilation problem in Boost 1.46: @@ -142,19 +141,9 @@ public: // or corrupt. Explicitly tell OpenSSL not to try to load the file. The result for our libs will be // that the config appears to have been loaded and there are no modules/engines available. OPENSSL_no_config(); - -#ifdef WIN32 - // Seed OpenSSL PRNG with current contents of the screen - RAND_screen(); -#endif - - // Seed OpenSSL PRNG with performance counter - RandAddSeed(); } ~CInit() { - // Securely erase the memory used by the PRNG - RAND_cleanup(); // Shutdown OpenSSL library multithreading support CRYPTO_set_locking_callback(NULL); for (int i = 0; i < CRYPTO_num_locks(); i++) @@ -176,23 +165,51 @@ instance_of_cinit; */ static boost::once_flag debugPrintInitFlag = BOOST_ONCE_INIT; + /** - * We use boost::call_once() to make sure these are initialized - * in a thread-safe manner the first time called: + * We use boost::call_once() to make sure mutexDebugLog and + * vMsgsBeforeOpenLog are initialized in a thread-safe manner. + * + * NOTE: fileout, mutexDebugLog and sometimes vMsgsBeforeOpenLog + * are leaked on exit. This is ugly, but will be cleaned up by + * the OS/libc. When the shutdown sequence is fully audited and + * tested, explicit destruction of these objects can be implemented. */ static FILE* fileout = NULL; static boost::mutex* mutexDebugLog = NULL; +static list *vMsgsBeforeOpenLog; + +static int FileWriteStr(const std::string &str, FILE *fp) +{ + return fwrite(str.data(), 1, str.size(), fp); +} static void DebugPrintInit() { - assert(fileout == NULL); assert(mutexDebugLog == NULL); + mutexDebugLog = new boost::mutex(); + vMsgsBeforeOpenLog = new list; +} +void OpenDebugLog() +{ + boost::call_once(&DebugPrintInit, debugPrintInitFlag); + boost::mutex::scoped_lock scoped_lock(*mutexDebugLog); + + assert(fileout == NULL); + assert(vMsgsBeforeOpenLog); boost::filesystem::path pathDebug = GetDataDir() / "debug.log"; fileout = fopen(pathDebug.string().c_str(), "a"); if (fileout) setbuf(fileout, NULL); // unbuffered - mutexDebugLog = new boost::mutex(); + // dump buffered messages from before we opened the log + while (!vMsgsBeforeOpenLog->empty()) { + FileWriteStr(vMsgsBeforeOpenLog->front(), fileout); + vMsgsBeforeOpenLog->pop_front(); + } + + delete vMsgsBeforeOpenLog; + vMsgsBeforeOpenLog = NULL; } bool LogAcceptCategory(const char* category) @@ -224,44 +241,67 @@ bool LogAcceptCategory(const char* category) return true; } +/** + * fStartedNewLine is a state variable held by the calling context that will + * suppress printing of the timestamp when multiple calls are made that don't + * end in a newline. Initialize it to true, and hold it, in the calling context. + */ +static std::string LogTimestampStr(const std::string &str, bool *fStartedNewLine) +{ + string strStamped; + + if (!fLogTimestamps) + return str; + + if (*fStartedNewLine) + strStamped = DateTimeStrFormat("%Y-%m-%d %H:%M:%S", GetTime()) + ' ' + str; + else + strStamped = str; + + if (!str.empty() && str[str.size()-1] == '\n') + *fStartedNewLine = true; + else + *fStartedNewLine = false; + + return strStamped; +} + int LogPrintStr(const std::string &str) { int ret = 0; // Returns total number of characters written + static bool fStartedNewLine = true; if (fPrintToConsole) { // print to console ret = fwrite(str.data(), 1, str.size(), stdout); fflush(stdout); } - else if (fPrintToDebugLog && AreBaseParamsConfigured()) + else if (fPrintToDebugLog) { - static bool fStartedNewLine = true; boost::call_once(&DebugPrintInit, debugPrintInitFlag); - - if (fileout == NULL) - return ret; - boost::mutex::scoped_lock scoped_lock(*mutexDebugLog); - // reopen the log file, if requested - if (fReopenDebugLog) { - fReopenDebugLog = false; - boost::filesystem::path pathDebug = GetDataDir() / "debug.log"; - if (freopen(pathDebug.string().c_str(),"a",fileout) != NULL) - setbuf(fileout, NULL); // unbuffered + string strTimestamped = LogTimestampStr(str, &fStartedNewLine); + + // buffer if we haven't opened the log yet + if (fileout == NULL) { + assert(vMsgsBeforeOpenLog); + ret = strTimestamped.length(); + vMsgsBeforeOpenLog->push_back(strTimestamped); } - - // Debug print useful for profiling - if (fLogTimestamps && fStartedNewLine) - ret += fprintf(fileout, "%s ", DateTimeStrFormat("%Y-%m-%d %H:%M:%S", GetTime()).c_str()); - if (!str.empty() && str[str.size()-1] == '\n') - fStartedNewLine = true; else - fStartedNewLine = false; + { + // reopen the log file, if requested + if (fReopenDebugLog) { + fReopenDebugLog = false; + boost::filesystem::path pathDebug = GetDataDir() / "debug.log"; + if (freopen(pathDebug.string().c_str(),"a",fileout) != NULL) + setbuf(fileout, NULL); // unbuffered + } - ret = fwrite(str.data(), 1, str.size(), fileout); + ret = FileWriteStr(strTimestamped, fileout); + } } - return ret; } @@ -804,7 +844,7 @@ boost::filesystem::path GetTempPath() { #endif } -void runCommand(std::string strCommand) +void runCommand(const std::string& strCommand) { int nErr = ::system(strCommand.c_str()); if (nErr) @@ -846,6 +886,18 @@ void SetupEnvironment() boost::filesystem::path::imbue(loc); } +bool SetupNetworking() +{ +#ifdef WIN32 + // Initialize Windows Sockets + WSADATA wsadata; + int ret = WSAStartup(MAKEWORD(2,2), &wsadata); + if (ret != NO_ERROR || LOBYTE(wsadata.wVersion ) != 2 || HIBYTE(wsadata.wVersion) != 2) + return false; +#endif + return true; +} + void SetThreadPriority(int nPriority) { #ifdef WIN32 @@ -859,9 +911,17 @@ void SetThreadPriority(int nPriority) #endif // WIN32 } +std::string PrivacyInfo() +{ + return "\n" + + FormatParagraph(strprintf(_("In order to ensure you are adequately protecting your privacy when using Zcash, please see <%s>."), + "https://z.cash/support/security/index.html")) + "\n"; +} + std::string LicenseInfo() { - return FormatParagraph(strprintf(_("Copyright (C) 2009-%i The Bitcoin Core Developers"), COPYRIGHT_YEAR)) + "\n" + + return "\n" + + FormatParagraph(strprintf(_("Copyright (C) 2009-%i The Bitcoin Core Developers"), COPYRIGHT_YEAR)) + "\n" + FormatParagraph(strprintf(_("Copyright (C) 2015-%i The Zcash Developers"), COPYRIGHT_YEAR)) + "\n" + FormatParagraph(strprintf(_("Copyright (C) 2015-%i jl777 and SuperNET developers"), COPYRIGHT_YEAR)) + "\n" + "\n" + diff --git a/src/util.h b/src/util.h index bc413fbd8..361a9271f 100644 --- a/src/util.h +++ b/src/util.h @@ -64,6 +64,7 @@ inline std::string _(const char* psz) } void SetupEnvironment(); +bool SetupNetworking(); /** Return true if log accepts specified category */ bool LogAcceptCategory(const char* category); @@ -136,10 +137,14 @@ void ReadConfigFile(std::map& mapSettingsRet, std::map boost::filesystem::path GetSpecialFolderPath(int nFolder, bool fCreate = true); #endif boost::filesystem::path GetTempPath(); +void OpenDebugLog(); void ShrinkDebugFile(); -void runCommand(std::string strCommand); +void runCommand(const std::string& strCommand); const boost::filesystem::path GetExportDir(); +/** Returns privacy notice (for -version, -help and metrics screen) */ +std::string PrivacyInfo(); + /** Returns licensing information (for -version) */ std::string LicenseInfo(); diff --git a/src/utilmoneystr.cpp b/src/utilmoneystr.cpp index 2fbc04887..0f3203432 100644 --- a/src/utilmoneystr.cpp +++ b/src/utilmoneystr.cpp @@ -11,7 +11,7 @@ using namespace std; -string FormatMoney(const CAmount& n, bool fPlus) +std::string FormatMoney(const CAmount& n) { // Note: not using straight sprintf here because we do NOT want // localized number formatting. @@ -29,8 +29,6 @@ string FormatMoney(const CAmount& n, bool fPlus) if (n < 0) str.insert((unsigned int)0, 1, '-'); - else if (fPlus && n > 0) - str.insert((unsigned int)0, 1, '+'); return str; } diff --git a/src/utilmoneystr.h b/src/utilmoneystr.h index cd9b04810..99c3ba830 100644 --- a/src/utilmoneystr.h +++ b/src/utilmoneystr.h @@ -14,7 +14,7 @@ #include "amount.h" -std::string FormatMoney(const CAmount& n, bool fPlus=false); +std::string FormatMoney(const CAmount& n); bool ParseMoney(const std::string& str, CAmount& nRet); bool ParseMoney(const char* pszIn, CAmount& nRet); diff --git a/src/utilstrencodings.cpp b/src/utilstrencodings.cpp index 646536f1e..054992cfb 100644 --- a/src/utilstrencodings.cpp +++ b/src/utilstrencodings.cpp @@ -432,12 +432,25 @@ string DecodeBase32(const string& str) return (vchRet.size() == 0) ? string() : string((const char*)&vchRet[0], vchRet.size()); } +static bool ParsePrechecks(const std::string& str) +{ + if (str.empty()) // No empty string allowed + return false; + if (str.size() >= 1 && (isspace(str[0]) || isspace(str[str.size()-1]))) // No padding allowed + return false; + if (str.size() != strlen(str.c_str())) // No embedded NUL characters allowed + return false; + return true; +} + bool ParseInt32(const std::string& str, int32_t *out) { + if (!ParsePrechecks(str)) + return false; char *endp = NULL; errno = 0; // strtol will not set errno if valid long int n = strtol(str.c_str(), &endp, 10); - if(out) *out = (int)n; + if(out) *out = (int32_t)n; // Note that strtol returns a *long int*, so even if strtol doesn't report a over/underflow // we still have to check that the returned value is within the range of an *int32_t*. On 64-bit // platforms the size of these types may be different. @@ -446,7 +459,36 @@ bool ParseInt32(const std::string& str, int32_t *out) n <= std::numeric_limits::max(); } -std::string FormatParagraph(const std::string in, size_t width, size_t indent) +bool ParseInt64(const std::string& str, int64_t *out) +{ + if (!ParsePrechecks(str)) + return false; + char *endp = NULL; + errno = 0; // strtoll will not set errno if valid + long long int n = strtoll(str.c_str(), &endp, 10); + if(out) *out = (int64_t)n; + // Note that strtoll returns a *long long int*, so even if strtol doesn't report a over/underflow + // we still have to check that the returned value is within the range of an *int64_t*. + return endp && *endp == 0 && !errno && + n >= std::numeric_limits::min() && + n <= std::numeric_limits::max(); +} + +bool ParseDouble(const std::string& str, double *out) +{ + if (!ParsePrechecks(str)) + return false; + if (str.size() >= 2 && str[0] == '0' && str[1] == 'x') // No hexadecimal floats allowed + return false; + std::istringstream text(str); + text.imbue(std::locale::classic()); + double result; + text >> result; + if(out) *out = result; + return text.eof() && !text.fail(); +} + +std::string FormatParagraph(const std::string& in, size_t width, size_t indent) { std::stringstream out; size_t col = 0; @@ -513,3 +555,123 @@ int atoi(const std::string& str) { return atoi(str.c_str()); } + +/** Upper bound for mantissa. + * 10^18-1 is the largest arbitrary decimal that will fit in a signed 64-bit integer. + * Larger integers cannot consist of arbitrary combinations of 0-9: + * + * 999999999999999999 1^18-1 + * 9223372036854775807 (1<<63)-1 (max int64_t) + * 9999999999999999999 1^19-1 (would overflow) + */ +static const int64_t UPPER_BOUND = 1000000000000000000LL - 1LL; + +/** Helper function for ParseFixedPoint */ +static inline bool ProcessMantissaDigit(char ch, int64_t &mantissa, int &mantissa_tzeros) +{ + if(ch == '0') + ++mantissa_tzeros; + else { + for (int i=0; i<=mantissa_tzeros; ++i) { + if (mantissa > (UPPER_BOUND / 10LL)) + return false; /* overflow */ + mantissa *= 10; + } + mantissa += ch - '0'; + mantissa_tzeros = 0; + } + return true; +} + +bool ParseFixedPoint(const std::string &val, int decimals, int64_t *amount_out) +{ + int64_t mantissa = 0; + int64_t exponent = 0; + int mantissa_tzeros = 0; + bool mantissa_sign = false; + bool exponent_sign = false; + int ptr = 0; + int end = val.size(); + int point_ofs = 0; + + if (ptr < end && val[ptr] == '-') { + mantissa_sign = true; + ++ptr; + } + if (ptr < end) + { + if (val[ptr] == '0') { + /* pass single 0 */ + ++ptr; + } else if (val[ptr] >= '1' && val[ptr] <= '9') { + while (ptr < end && val[ptr] >= '0' && val[ptr] <= '9') { + if (!ProcessMantissaDigit(val[ptr], mantissa, mantissa_tzeros)) + return false; /* overflow */ + ++ptr; + } + } else return false; /* missing expected digit */ + } else return false; /* empty string or loose '-' */ + if (ptr < end && val[ptr] == '.') + { + ++ptr; + if (ptr < end && val[ptr] >= '0' && val[ptr] <= '9') + { + while (ptr < end && val[ptr] >= '0' && val[ptr] <= '9') { + if (!ProcessMantissaDigit(val[ptr], mantissa, mantissa_tzeros)) + return false; /* overflow */ + ++ptr; + ++point_ofs; + } + } else return false; /* missing expected digit */ + } + if (ptr < end && (val[ptr] == 'e' || val[ptr] == 'E')) + { + ++ptr; + if (ptr < end && val[ptr] == '+') + ++ptr; + else if (ptr < end && val[ptr] == '-') { + exponent_sign = true; + ++ptr; + } + if (ptr < end && val[ptr] >= '0' && val[ptr] <= '9') { + while (ptr < end && val[ptr] >= '0' && val[ptr] <= '9') { + if (exponent > (UPPER_BOUND / 10LL)) + return false; /* overflow */ + exponent = exponent * 10 + val[ptr] - '0'; + ++ptr; + } + } else return false; /* missing expected digit */ + } + if (ptr != end) + return false; /* trailing garbage */ + + /* finalize exponent */ + if (exponent_sign) + exponent = -exponent; + exponent = exponent - point_ofs + mantissa_tzeros; + + /* finalize mantissa */ + if (mantissa_sign) + mantissa = -mantissa; + + /* convert to one 64-bit fixed-point value */ + exponent += decimals; + if (exponent < 0) + return false; /* cannot represent values smaller than 10^-decimals */ + if (exponent >= 18) + return false; /* cannot represent values larger than or equal to 10^(18-decimals) */ + + for (int i=0; i < exponent; ++i) { + if (mantissa > (UPPER_BOUND / 10LL) || mantissa < -(UPPER_BOUND / 10LL)) + return false; /* overflow */ + mantissa *= 10; + } + if (mantissa > UPPER_BOUND || mantissa < -UPPER_BOUND) + return false; /* overflow */ + + if (amount_out) + *amount_out = mantissa; + + return true; +} + diff --git a/src/utilstrencodings.h b/src/utilstrencodings.h index e08de362b..d6973a130 100644 --- a/src/utilstrencodings.h +++ b/src/utilstrencodings.h @@ -50,6 +50,20 @@ int atoi(const std::string& str); */ bool ParseInt32(const std::string& str, int32_t *out); +/** + * Convert string to signed 64-bit integer with strict parse error feedback. + * @returns true if the entire string could be parsed as valid integer, + * false if not the entire string could be parsed or when overflow or underflow occurred. + */ +bool ParseInt64(const std::string& str, int64_t *out); + +/** + * Convert string to double with strict parse error feedback. + * @returns true if the entire string could be parsed as valid double, + * false if not the entire string could be parsed or when overflow or underflow occurred. + */ +bool ParseDouble(const std::string& str, double *out); + template std::string HexStr(const T itbegin, const T itend, bool fSpaces=false) { @@ -75,11 +89,11 @@ inline std::string HexStr(const T& vch, bool fSpaces=false) return HexStr(vch.begin(), vch.end(), fSpaces); } -/** +/** * Format a paragraph of text to a fixed width, adding spaces for * indentation to any added line. */ -std::string FormatParagraph(const std::string in, size_t width=79, size_t indent=0); +std::string FormatParagraph(const std::string& in, size_t width = 79, size_t indent = 0); /** * Timing-attack-resistant comparison. @@ -96,4 +110,11 @@ bool TimingResistantEqual(const T& a, const T& b) return accumulator == 0; } +/** Parse number as fixed point according to JSON number syntax. + * See http://json.org/number.gif + * @returns true on success, false on error. + * @note The result must be in the range (-10^18,10^18), otherwise an overflow error will trigger. + */ +bool ParseFixedPoint(const std::string &val, int decimals, int64_t *amount_out); + #endif // BITCOIN_UTILSTRENCODINGS_H diff --git a/src/validationinterface.cpp b/src/validationinterface.cpp index 3df6cd3f2..cd3e30f3d 100644 --- a/src/validationinterface.cpp +++ b/src/validationinterface.cpp @@ -13,6 +13,7 @@ CMainSignals& GetMainSignals() } void RegisterValidationInterface(CValidationInterface* pwalletIn) { + g_signals.UpdatedBlockTip.connect(boost::bind(&CValidationInterface::UpdatedBlockTip, pwalletIn, _1)); g_signals.SyncTransaction.connect(boost::bind(&CValidationInterface::SyncTransaction, pwalletIn, _1, _2)); g_signals.EraseTransaction.connect(boost::bind(&CValidationInterface::EraseFromWallet, pwalletIn, _1)); g_signals.UpdatedTransaction.connect(boost::bind(&CValidationInterface::UpdatedTransaction, pwalletIn, _1)); @@ -32,6 +33,7 @@ void UnregisterValidationInterface(CValidationInterface* pwalletIn) { g_signals.UpdatedTransaction.disconnect(boost::bind(&CValidationInterface::UpdatedTransaction, pwalletIn, _1)); g_signals.EraseTransaction.disconnect(boost::bind(&CValidationInterface::EraseFromWallet, pwalletIn, _1)); g_signals.SyncTransaction.disconnect(boost::bind(&CValidationInterface::SyncTransaction, pwalletIn, _1, _2)); + g_signals.UpdatedBlockTip.disconnect(boost::bind(&CValidationInterface::UpdatedBlockTip, pwalletIn, _1)); } void UnregisterAllValidationInterfaces() { @@ -43,6 +45,7 @@ void UnregisterAllValidationInterfaces() { g_signals.UpdatedTransaction.disconnect_all_slots(); g_signals.EraseTransaction.disconnect_all_slots(); g_signals.SyncTransaction.disconnect_all_slots(); + g_signals.UpdatedBlockTip.disconnect_all_slots(); } void SyncWithWallets(const CTransaction &tx, const CBlock *pblock) { diff --git a/src/validationinterface.h b/src/validationinterface.h index 144e716bb..1855dacd7 100644 --- a/src/validationinterface.h +++ b/src/validationinterface.h @@ -31,6 +31,7 @@ void SyncWithWallets(const CTransaction& tx, const CBlock* pblock = NULL); class CValidationInterface { protected: + virtual void UpdatedBlockTip(const CBlockIndex *pindex) {} virtual void SyncTransaction(const CTransaction &tx, const CBlock *pblock) {} virtual void EraseFromWallet(const uint256 &hash) {} virtual void ChainTip(const CBlockIndex *pindex, const CBlock *pblock, ZCIncrementalMerkleTree tree, bool added) {} @@ -45,6 +46,8 @@ protected: }; struct CMainSignals { + /** Notifies listeners of updated block chain tip */ + boost::signals2::signal UpdatedBlockTip; /** Notifies listeners of updated transaction data (transaction, and optionally the block it is found in. */ boost::signals2::signal SyncTransaction; /** Notifies listeners of an erased transaction (currently disabled, requires transaction replacement). */ diff --git a/src/wallet/asyncrpcoperation_sendmany.cpp b/src/wallet/asyncrpcoperation_sendmany.cpp index 704a44801..18e25bc97 100644 --- a/src/wallet/asyncrpcoperation_sendmany.cpp +++ b/src/wallet/asyncrpcoperation_sendmany.cpp @@ -21,6 +21,7 @@ #include "rpcprotocol.h" #include "zcash/IncrementalMerkleTree.hpp" #include "sodium.h" +#include "miner.h" #include @@ -31,16 +32,16 @@ using namespace libzcash; -int find_output(Object obj, int n) { - Value outputMapValue = find_value(obj, "outputmap"); - if (outputMapValue.type() != array_type) { +int find_output(UniValue obj, int n) { + UniValue outputMapValue = find_value(obj, "outputmap"); + if (!outputMapValue.isArray()) { throw JSONRPCError(RPC_WALLET_ERROR, "Missing outputmap for JoinSplit operation"); } - Array outputMap = outputMapValue.get_array(); + UniValue outputMap = outputMapValue.get_array(); assert(outputMap.size() == ZC_NUM_JS_OUTPUTS); for (size_t i = 0; i < outputMap.size(); i++) { - if (outputMap[i] == n) { + if (outputMap[i].get_int() == n) { return i; } } @@ -54,10 +55,10 @@ AsyncRPCOperation_sendmany::AsyncRPCOperation_sendmany( std::vector zOutputs, int minDepth, CAmount fee, - Value contextInfo) : + UniValue contextInfo) : fromaddress_(fromAddress), t_outputs_(tOutputs), z_outputs_(zOutputs), mindepth_(minDepth), fee_(fee), contextinfo_(contextInfo) { - assert(fee_ > 0); + assert(fee_ >= 0); if (minDepth < 0) { throw JSONRPCError(RPC_INVALID_PARAMETER, "Minconf cannot be negative"); @@ -93,6 +94,13 @@ AsyncRPCOperation_sendmany::AsyncRPCOperation_sendmany( throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, string("runtime error: ") + e.what()); } } + + // Log the context info i.e. the call parameters to z_sendmany + if (LogAcceptCategory("zrpcunsafe")) { + LogPrint("zrpcunsafe", "%s: z_sendmany initialized (params=%s)\n", getId(), contextInfo.write()); + } else { + LogPrint("zrpc", "%s: z_sendmany initialized\n", getId()); + } } AsyncRPCOperation_sendmany::~AsyncRPCOperation_sendmany() { @@ -107,9 +115,17 @@ void AsyncRPCOperation_sendmany::main() { bool success = false; +#ifdef ENABLE_MINING + #ifdef ENABLE_WALLET + GenerateBitcoins(false, NULL, 0); + #else + GenerateBitcoins(false, 0); + #endif +#endif + try { success = main_impl(); - } catch (const Object& objError) { + } catch (const UniValue& objError) { int code = find_value(objError, "code").get_int(); std::string message = find_value(objError, "message").get_str(); set_error_code(code); @@ -128,6 +144,14 @@ void AsyncRPCOperation_sendmany::main() { set_error_message("unknown error"); } +#ifdef ENABLE_MINING + #ifdef ENABLE_WALLET + GenerateBitcoins(GetBoolArg("-gen",false), pwalletMain, GetArg("-genproclimit", 1)); + #else + GenerateBitcoins(GetBoolArg("-gen",false), GetArg("-genproclimit", 1)); + #endif +#endif + stop_execution_clock(); if (success) { @@ -136,9 +160,9 @@ void AsyncRPCOperation_sendmany::main() { set_state(OperationStatus::FAILED); } - std::string s = strprintf("async rpc %s finished (status=%s", getId(), getStateAsString()); + std::string s = strprintf("%s: z_sendmany finished (status=%s", getId(), getStateAsString()); if (success) { - s += strprintf(", tx=%s)\n", tx_.ToString()); + s += strprintf(", txid=%s)\n", tx_.GetHash().ToString()); } else { s += strprintf(", error=%s)\n", getErrorMessage()); } @@ -271,13 +295,13 @@ bool AsyncRPCOperation_sendmany::main_impl() { tx_ = CTransaction(rawTx); } - LogPrint("zrpc", "%s: spending %s to send %s with fee %s\n", - getId().substr(0,10), FormatMoney(targetAmount, false), FormatMoney(sendAmount, false), FormatMoney(minersFee, false)); - LogPrint("zrpc", " - transparent input: %s (to choose from)\n", FormatMoney(t_inputs_total, false)); - LogPrint("zrpc", " - private input: %s (to choose from)\n", FormatMoney(z_inputs_total, false)); - LogPrint("zrpc", " - transparent output: %s\n", FormatMoney(t_outputs_total, false)); - LogPrint("zrpc", " - private output: %s\n", FormatMoney(z_outputs_total, false)); - LogPrint("zrpc", " - fee: %s\n", FormatMoney(minersFee, false)); + LogPrint((isfromtaddr_) ? "zrpc" : "zrpcunsafe", "%s: spending %s to send %s with fee %s\n", + getId(), FormatMoney(targetAmount), FormatMoney(sendAmount), FormatMoney(minersFee)); + LogPrint("zrpc", "%s: transparent input: %s (to choose from)\n", getId(), FormatMoney(t_inputs_total)); + LogPrint("zrpcunsafe", "%s: private input: %s (to choose from)\n", getId(), FormatMoney(z_inputs_total)); + LogPrint("zrpc", "%s: transparent output: %s\n", getId(), FormatMoney(t_outputs_total)); + LogPrint("zrpcunsafe", "%s: private output: %s\n", getId(), FormatMoney(z_outputs_total)); + LogPrint("zrpc", "%s: fee: %s\n", getId(), FormatMoney(minersFee)); /** * SCENARIO #1 @@ -297,12 +321,12 @@ bool AsyncRPCOperation_sendmany::main_impl() { add_taddr_change_output_to_tx(change); LogPrint("zrpc", "%s: transparent change in transaction output (amount=%s)\n", - getId().substr(0, 10), - FormatMoney(change, false) + getId(), + FormatMoney(change) ); } - Object obj; + UniValue obj(UniValue::VOBJ); obj.push_back(Pair("rawtxn", EncodeHexTx(tx_))); sign_send_raw_transaction(obj); return true; @@ -373,14 +397,14 @@ bool AsyncRPCOperation_sendmany::main_impl() { } else { add_taddr_change_output_to_tx(change); LogPrint("zrpc", "%s: transparent change in transaction output (amount=%s)\n", - getId().substr(0, 10), - FormatMoney(change, false) + getId(), + FormatMoney(change) ); } } // Create joinsplits, where each output represents a zaddr recipient. - Object obj; + UniValue obj(UniValue::VOBJ); while (zOutputsDeque.size() > 0) { AsyncJoinSplitInfo info; info.vpub_old = 0; @@ -429,7 +453,7 @@ bool AsyncRPCOperation_sendmany::main_impl() { * SCENARIO #3 * Part 1: Add to the transparent value pool. */ - Object obj; + UniValue obj(UniValue::VOBJ); CAmount jsChange = 0; // this is updated after each joinsplit int changeOutputIndex = -1; // this is updated after each joinsplit if jsChange > 0 bool minersFeeProcessed = false; @@ -462,12 +486,12 @@ bool AsyncRPCOperation_sendmany::main_impl() { wtxHeight = mapBlockIndex[wtx.hashBlock]->nHeight; wtxDepth = wtx.GetDepthInMainChain(); } - LogPrint("zrpc", "%s: spending note (txid=%s, vjoinsplit=%d, ciphertext=%d, amount=%s, height=%d, confirmations=%d)\n", - getId().substr(0, 10), + LogPrint("zrpcunsafe", "%s: spending note (txid=%s, vjoinsplit=%d, ciphertext=%d, amount=%s, height=%d, confirmations=%d)\n", + getId(), outPoint.hash.ToString().substr(0, 10), outPoint.js, int(outPoint.n), // uint8_t - FormatMoney(noteFunds, false), + FormatMoney(noteFunds), wtxHeight, wtxDepth ); @@ -491,9 +515,9 @@ bool AsyncRPCOperation_sendmany::main_impl() { info.vjsout.push_back(JSOutput()); info.vjsout.push_back(JSOutput(frompaymentaddress_, jsChange)); - LogPrint("zrpc", "%s: generating note for change (amount=%s)\n", - getId().substr(0, 10), - FormatMoney(jsChange, false) + LogPrint("zrpcunsafe", "%s: generating note for change (amount=%s)\n", + getId(), + FormatMoney(jsChange) ); } @@ -587,9 +611,9 @@ bool AsyncRPCOperation_sendmany::main_impl() { jsInputValue += plaintext.value; - LogPrint("zrpc", "%s: spending change (amount=%s)\n", - getId().substr(0, 10), - FormatMoney(plaintext.value, false) + LogPrint("zrpcunsafe", "%s: spending change (amount=%s)\n", + getId(), + FormatMoney(plaintext.value) ); } catch (const std::exception& e) { @@ -634,12 +658,12 @@ bool AsyncRPCOperation_sendmany::main_impl() { wtxHeight = mapBlockIndex[wtx.hashBlock]->nHeight; wtxDepth = wtx.GetDepthInMainChain(); } - LogPrint("zrpc", "%s: spending note (txid=%s, vjoinsplit=%d, ciphertext=%d, amount=%s, height=%d, confirmations=%d)\n", - getId().substr(0, 10), + LogPrint("zrpcunsafe", "%s: spending note (txid=%s, vjoinsplit=%d, ciphertext=%d, amount=%s, height=%d, confirmations=%d)\n", + getId(), jso.hash.ToString().substr(0, 10), jso.js, int(jso.n), // uint8_t - FormatMoney(noteFunds, false), + FormatMoney(noteFunds), wtxHeight, wtxDepth ); @@ -729,9 +753,9 @@ bool AsyncRPCOperation_sendmany::main_impl() { if (jsChange>0) { info.vjsout.push_back(JSOutput(frompaymentaddress_, jsChange)); - LogPrint("zrpc", "%s: generating note for change (amount=%s)\n", - getId().substr(0, 10), - FormatMoney(jsChange, false) + LogPrint("zrpcunsafe", "%s: generating note for change (amount=%s)\n", + getId(), + FormatMoney(jsChange) ); } @@ -752,42 +776,47 @@ bool AsyncRPCOperation_sendmany::main_impl() { * Sign and send a raw transaction. * Raw transaction as hex string should be in object field "rawtxn" */ -void AsyncRPCOperation_sendmany::sign_send_raw_transaction(Object obj) +void AsyncRPCOperation_sendmany::sign_send_raw_transaction(UniValue obj) { // Sign the raw transaction - Value rawtxnValue = find_value(obj, "rawtxn"); - if (rawtxnValue.is_null()) { + UniValue rawtxnValue = find_value(obj, "rawtxn"); + if (rawtxnValue.isNull()) { throw JSONRPCError(RPC_WALLET_ERROR, "Missing hex data for raw transaction"); } std::string rawtxn = rawtxnValue.get_str(); - Value signResultValue = signrawtransaction({Value(rawtxn)}, false); - Object signResultObject = signResultValue.get_obj(); - Value completeValue = find_value(signResultObject, "complete"); + UniValue params = UniValue(UniValue::VARR); + params.push_back(rawtxn); + UniValue signResultValue = signrawtransaction(params, false); + UniValue signResultObject = signResultValue.get_obj(); + UniValue completeValue = find_value(signResultObject, "complete"); bool complete = completeValue.get_bool(); if (!complete) { // TODO: #1366 Maybe get "errors" and print array vErrors into a string throw JSONRPCError(RPC_WALLET_ENCRYPTION_FAILED, "Failed to sign transaction"); } - Value hexValue = find_value(signResultObject, "hex"); - if (hexValue.is_null()) { + UniValue hexValue = find_value(signResultObject, "hex"); + if (hexValue.isNull()) { throw JSONRPCError(RPC_WALLET_ERROR, "Missing hex data for signed transaction"); } std::string signedtxn = hexValue.get_str(); // Send the signed transaction if (!testmode) { - Value sendResultValue = sendrawtransaction({Value(signedtxn)}, false); - if (sendResultValue.is_null()) { + params.clear(); + params.setArray(); + params.push_back(signedtxn); + UniValue sendResultValue = sendrawtransaction(params, false); + if (sendResultValue.isNull()) { throw JSONRPCError(RPC_WALLET_ERROR, "Send raw transaction did not return an error or a txid."); } std::string txid = sendResultValue.get_str(); - Object o; + UniValue o(UniValue::VOBJ); o.push_back(Pair("txid", txid)); - set_result(Value(o)); + set_result(o); } else { // Test mode does not send the transaction to the network. @@ -795,11 +824,11 @@ void AsyncRPCOperation_sendmany::sign_send_raw_transaction(Object obj) CTransaction tx; stream >> tx; - Object o; + UniValue o(UniValue::VOBJ); o.push_back(Pair("test", 1)); o.push_back(Pair("txid", tx.GetHash().ToString())); o.push_back(Pair("hex", signedtxn)); - set_result(Value(o)); + set_result(o); } // Keep the signed transaction so we can hash to the same txid @@ -864,24 +893,14 @@ bool AsyncRPCOperation_sendmany::find_unspent_notes() { for (CNotePlaintextEntry & entry : entries) { z_inputs_.push_back(SendManyInputJSOP(entry.jsop, entry.plaintext.note(frompaymentaddress_), CAmount(entry.plaintext.value))); std::string data(entry.plaintext.memo.begin(), entry.plaintext.memo.end()); - if (LogAcceptCategory("zrpcunsafe")) { - LogPrint("zrpcunsafe", "%s: found unspent note (txid=%s, vjoinsplit=%d, ciphertext=%d, amount=%s, memo=%s)\n", - getId().substr(0, 10), - entry.jsop.hash.ToString().substr(0, 10), - entry.jsop.js, - int(entry.jsop.n), // uint8_t - FormatMoney(entry.plaintext.value, false), - HexStr(data).substr(0, 10) - ); - } else { - LogPrint("zrpc", "%s: found unspent note (txid=%s, vjoinsplit=%d, ciphertext=%d, amount=%s)\n", - getId().substr(0, 10), - entry.jsop.hash.ToString().substr(0, 10), - entry.jsop.js, - int(entry.jsop.n), // uint8_t - FormatMoney(entry.plaintext.value, false) - ); - } + LogPrint("zrpcunsafe", "%s: found unspent note (txid=%s, vjoinsplit=%d, ciphertext=%d, amount=%s, memo=%s)\n", + getId(), + entry.jsop.hash.ToString().substr(0, 10), + entry.jsop.js, + int(entry.jsop.n), // uint8_t + FormatMoney(entry.plaintext.value), + HexStr(data).substr(0, 10) + ); } if (z_inputs_.size() == 0) { @@ -896,7 +915,7 @@ bool AsyncRPCOperation_sendmany::find_unspent_notes() { return true; } -Object AsyncRPCOperation_sendmany::perform_joinsplit(AsyncJoinSplitInfo & info) { +UniValue AsyncRPCOperation_sendmany::perform_joinsplit(AsyncJoinSplitInfo & info) { std::vector> witnesses; uint256 anchor; { @@ -907,7 +926,7 @@ Object AsyncRPCOperation_sendmany::perform_joinsplit(AsyncJoinSplitInfo & info) } -Object AsyncRPCOperation_sendmany::perform_joinsplit(AsyncJoinSplitInfo & info, std::vector & outPoints) { +UniValue AsyncRPCOperation_sendmany::perform_joinsplit(AsyncJoinSplitInfo & info, std::vector & outPoints) { std::vector> witnesses; uint256 anchor; { @@ -917,7 +936,7 @@ Object AsyncRPCOperation_sendmany::perform_joinsplit(AsyncJoinSplitInfo & info, return perform_joinsplit(info, witnesses, anchor); } -Object AsyncRPCOperation_sendmany::perform_joinsplit( +UniValue AsyncRPCOperation_sendmany::perform_joinsplit( AsyncJoinSplitInfo & info, std::vector> witnesses, uint256 anchor) @@ -952,12 +971,12 @@ Object AsyncRPCOperation_sendmany::perform_joinsplit( CMutableTransaction mtx(tx_); - LogPrint("zrpc", "%s: creating joinsplit at index %d (vpub_old=%s, vpub_new=%s, in[0]=%s, in[1]=%s, out[0]=%s, out[1]=%s)\n", - getId().substr(0,10), + LogPrint("zrpcunsafe", "%s: creating joinsplit at index %d (vpub_old=%s, vpub_new=%s, in[0]=%s, in[1]=%s, out[0]=%s, out[1]=%s)\n", + getId(), tx_.vjoinsplit.size(), - FormatMoney(info.vpub_old, false), FormatMoney(info.vpub_new, false), - FormatMoney(info.vjsin[0].note.value, false), FormatMoney(info.vjsin[1].note.value, false), - FormatMoney(info.vjsout[0].value, false), FormatMoney(info.vjsout[1].value, false) + FormatMoney(info.vpub_old), FormatMoney(info.vpub_new), + FormatMoney(info.vjsin[0].note.value), FormatMoney(info.vjsin[1].note.value), + FormatMoney(info.vjsout[0].value), FormatMoney(info.vjsout[1].value) ); // Generate the proof, this can take over a minute. @@ -1043,8 +1062,8 @@ Object AsyncRPCOperation_sendmany::perform_joinsplit( encryptedNote2 = HexStr(ss2.begin(), ss2.end()); } - Array arrInputMap; - Array arrOutputMap; + UniValue arrInputMap(UniValue::VARR); + UniValue arrOutputMap(UniValue::VARR); for (size_t i = 0; i < ZC_NUM_JS_INPUTS; i++) { arrInputMap.push_back(inputMap[i]); } @@ -1052,7 +1071,7 @@ Object AsyncRPCOperation_sendmany::perform_joinsplit( arrOutputMap.push_back(outputMap[i]); } - Object obj; + UniValue obj(UniValue::VOBJ); obj.push_back(Pair("encryptednote1", encryptedNote1)); obj.push_back(Pair("encryptednote2", encryptedNote2)); obj.push_back(Pair("rawtxn", HexStr(ss.begin(), ss.end()))); @@ -1128,15 +1147,15 @@ boost::array AsyncRPCOperation_sendmany::get_memo_f /** * Override getStatus() to append the operation's input parameters to the default status object. */ -Value AsyncRPCOperation_sendmany::getStatus() const { - Value v = AsyncRPCOperation::getStatus(); - if (contextinfo_.is_null()) { +UniValue AsyncRPCOperation_sendmany::getStatus() const { + UniValue v = AsyncRPCOperation::getStatus(); + if (contextinfo_.isNull()) { return v; } - Object obj = v.get_obj(); + UniValue obj = v.get_obj(); obj.push_back(Pair("method", "z_sendmany")); obj.push_back(Pair("params", contextinfo_ )); - return Value(obj); + return obj; } diff --git a/src/wallet/asyncrpcoperation_sendmany.h b/src/wallet/asyncrpcoperation_sendmany.h index 5108de8c5..6fac61160 100644 --- a/src/wallet/asyncrpcoperation_sendmany.h +++ b/src/wallet/asyncrpcoperation_sendmany.h @@ -11,17 +11,17 @@ #include "primitives/transaction.h" #include "zcash/JoinSplit.hpp" #include "zcash/Address.hpp" -#include "json/json_spirit_value.h" #include "wallet.h" #include #include +#include + // Default transaction fee if caller does not specify one. #define ASYNC_RPC_OPERATION_DEFAULT_MINERS_FEE 10000 using namespace libzcash; -using namespace json_spirit; // A recipient is a tuple of address, amount, memo (optional if zaddr) typedef std::tuple SendManyRecipient; @@ -50,7 +50,7 @@ struct WitnessAnchorData { class AsyncRPCOperation_sendmany : public AsyncRPCOperation { public: - AsyncRPCOperation_sendmany(std::string fromAddress, std::vector tOutputs, std::vector zOutputs, int minDepth, CAmount fee = ASYNC_RPC_OPERATION_DEFAULT_MINERS_FEE, Value contextInfo = Value::null); + AsyncRPCOperation_sendmany(std::string fromAddress, std::vector tOutputs, std::vector zOutputs, int minDepth, CAmount fee = ASYNC_RPC_OPERATION_DEFAULT_MINERS_FEE, UniValue contextInfo = NullUniValue); virtual ~AsyncRPCOperation_sendmany(); // We don't want to be copied or moved around @@ -61,14 +61,14 @@ public: virtual void main(); - virtual Value getStatus() const; + virtual UniValue getStatus() const; bool testmode = false; // Set to true to disable sending txs and generating proofs private: friend class TEST_FRIEND_AsyncRPCOperation_sendmany; // class for unit testing - Value contextinfo_; // optional data to include in return value from getStatus() + UniValue contextinfo_; // optional data to include in return value from getStatus() CAmount fee_; int mindepth_; @@ -100,18 +100,18 @@ private: bool main_impl(); // JoinSplit without any input notes to spend - Object perform_joinsplit(AsyncJoinSplitInfo &); + UniValue perform_joinsplit(AsyncJoinSplitInfo &); // JoinSplit with input notes to spend (JSOutPoints)) - Object perform_joinsplit(AsyncJoinSplitInfo &, std::vector & ); + UniValue perform_joinsplit(AsyncJoinSplitInfo &, std::vector & ); // JoinSplit where you have the witnesses and anchor - Object perform_joinsplit( + UniValue perform_joinsplit( AsyncJoinSplitInfo & info, std::vector> witnesses, uint256 anchor); - void sign_send_raw_transaction(Object obj); // throws exception if there was an error + void sign_send_raw_transaction(UniValue obj); // throws exception if there was an error }; @@ -157,15 +157,15 @@ public: return delegate->main_impl(); } - Object perform_joinsplit(AsyncJoinSplitInfo &info) { + UniValue perform_joinsplit(AsyncJoinSplitInfo &info) { return delegate->perform_joinsplit(info); } - Object perform_joinsplit(AsyncJoinSplitInfo &info, std::vector &v ) { + UniValue perform_joinsplit(AsyncJoinSplitInfo &info, std::vector &v ) { return delegate->perform_joinsplit(info, v); } - Object perform_joinsplit( + UniValue perform_joinsplit( AsyncJoinSplitInfo & info, std::vector> witnesses, uint256 anchor) @@ -173,7 +173,7 @@ public: return delegate->perform_joinsplit(info, witnesses, anchor); } - void sign_send_raw_transaction(Object obj) { + void sign_send_raw_transaction(UniValue obj) { delegate->sign_send_raw_transaction(obj); } diff --git a/src/wallet/rpcdump.cpp b/src/wallet/rpcdump.cpp index 7722fd3a6..83f0e5cac 100644 --- a/src/wallet/rpcdump.cpp +++ b/src/wallet/rpcdump.cpp @@ -19,16 +19,15 @@ #include #include -#include "json/json_spirit_value.h" +#include -using namespace json_spirit; using namespace std; void EnsureWalletIsUnlocked(); bool EnsureWalletIsAvailable(bool avoidException); -Value dumpwallet_impl(const Array& params, bool fHelp, bool fDumpZKeys); -Value importwallet_impl(const Array& params, bool fHelp, bool fImportZKeys); +UniValue dumpwallet_impl(const UniValue& params, bool fHelp, bool fDumpZKeys); +UniValue importwallet_impl(const UniValue& params, bool fHelp, bool fImportZKeys); std::string static EncodeDumpTime(int64_t nTime) { @@ -74,10 +73,10 @@ std::string DecodeDumpString(const std::string &str) { return ret.str(); } -Value importprivkey(const Array& params, bool fHelp) +UniValue importprivkey(const UniValue& params, bool fHelp) { if (!EnsureWalletIsAvailable(fHelp)) - return Value::null; + return NullUniValue; if (fHelp || params.size() < 1 || params.size() > 3) throw runtime_error( @@ -130,7 +129,7 @@ Value importprivkey(const Array& params, bool fHelp) // Don't throw error in case a key is already there if (pwalletMain->HaveKey(vchAddress)) - return Value::null; + return NullUniValue; pwalletMain->mapKeyMetadata[vchAddress].nCreateTime = 1; @@ -145,13 +144,13 @@ Value importprivkey(const Array& params, bool fHelp) } } - return Value::null; + return NullUniValue; } -Value importaddress(const Array& params, bool fHelp) +UniValue importaddress(const UniValue& params, bool fHelp) { if (!EnsureWalletIsAvailable(fHelp)) - return Value::null; + return NullUniValue; if (fHelp || params.size() < 1 || params.size() > 3) throw runtime_error( @@ -204,7 +203,7 @@ Value importaddress(const Array& params, bool fHelp) // Don't throw error in case an address is already there if (pwalletMain->HaveWatchOnly(script)) - return Value::null; + return NullUniValue; pwalletMain->MarkDirty(); @@ -218,13 +217,13 @@ Value importaddress(const Array& params, bool fHelp) } } - return Value::null; + return NullUniValue; } -Value z_importwallet(const Array& params, bool fHelp) +UniValue z_importwallet(const UniValue& params, bool fHelp) { if (!EnsureWalletIsAvailable(fHelp)) - return Value::null; + return NullUniValue; if (fHelp || params.size() != 1) throw runtime_error( @@ -244,10 +243,10 @@ Value z_importwallet(const Array& params, bool fHelp) return importwallet_impl(params, fHelp, true); } -Value importwallet(const Array& params, bool fHelp) +UniValue importwallet(const UniValue& params, bool fHelp) { if (!EnsureWalletIsAvailable(fHelp)) - return Value::null; + return NullUniValue; if (fHelp || params.size() != 1) throw runtime_error( @@ -267,7 +266,7 @@ Value importwallet(const Array& params, bool fHelp) return importwallet_impl(params, fHelp, false); } -Value importwallet_impl(const Array& params, bool fHelp, bool fImportZKeys) +UniValue importwallet_impl(const UniValue& params, bool fHelp, bool fImportZKeys) { LOCK2(cs_main, pwalletMain->cs_wallet); @@ -378,13 +377,13 @@ Value importwallet_impl(const Array& params, bool fHelp, bool fImportZKeys) if (!fGood) throw JSONRPCError(RPC_WALLET_ERROR, "Error adding some keys to wallet"); - return Value::null; + return NullUniValue; } -Value dumpprivkey(const Array& params, bool fHelp) +UniValue dumpprivkey(const UniValue& params, bool fHelp) { if (!EnsureWalletIsAvailable(fHelp)) - return Value::null; + return NullUniValue; if (fHelp || params.size() != 1) throw runtime_error( @@ -420,10 +419,10 @@ Value dumpprivkey(const Array& params, bool fHelp) -Value z_exportwallet(const Array& params, bool fHelp) +UniValue z_exportwallet(const UniValue& params, bool fHelp) { if (!EnsureWalletIsAvailable(fHelp)) - return Value::null; + return NullUniValue; if (fHelp || params.size() != 1) throw runtime_error( @@ -441,10 +440,10 @@ Value z_exportwallet(const Array& params, bool fHelp) return dumpwallet_impl(params, fHelp, true); } -Value dumpwallet(const Array& params, bool fHelp) +UniValue dumpwallet(const UniValue& params, bool fHelp) { if (!EnsureWalletIsAvailable(fHelp)) - return Value::null; + return NullUniValue; if (fHelp || params.size() != 1) throw runtime_error( @@ -462,7 +461,7 @@ Value dumpwallet(const Array& params, bool fHelp) return dumpwallet_impl(params, fHelp, false); } -Value dumpwallet_impl(const Array& params, bool fHelp, bool fDumpZKeys) +UniValue dumpwallet_impl(const UniValue& params, bool fHelp, bool fDumpZKeys) { LOCK2(cs_main, pwalletMain->cs_wallet); @@ -548,26 +547,31 @@ Value dumpwallet_impl(const Array& params, bool fHelp, bool fDumpZKeys) } -Value z_importkey(const Array& params, bool fHelp) +UniValue z_importkey(const UniValue& params, bool fHelp) { if (!EnsureWalletIsAvailable(fHelp)) - return Value::null; + return NullUniValue; - if (fHelp || params.size() < 1 || params.size() > 2) + if (fHelp || params.size() < 1 || params.size() > 3) throw runtime_error( - "z_importkey \"zkey\" ( rescan )\n" + "z_importkey \"zkey\" ( rescan startHeight )\n" "\nAdds a zkey (as returned by z_exportkey) to your wallet.\n" "\nArguments:\n" "1. \"zkey\" (string, required) The zkey (see z_exportkey)\n" - "2. rescan (boolean, optional, default=true) Rescan the wallet for transactions\n" + "2. rescan (string, optional, default=\"whenkeyisnew\") Rescan the wallet for transactions - can be \"yes\", \"no\" or \"whenkeyisnew\"\n" + "3. startHeight (numeric, optional, default=0) Block height to start rescan from\n" "\nNote: This call can take minutes to complete if rescan is true.\n" "\nExamples:\n" "\nExport a zkey\n" + HelpExampleCli("z_exportkey", "\"myaddress\"") + "\nImport the zkey with rescan\n" + HelpExampleCli("z_importkey", "\"mykey\"") + + "\nImport the zkey with partial rescan\n" + + HelpExampleCli("z_importkey", "\"mykey\" whenkeyisnew 30000") + + "\nRe-import the zkey with longer partial rescan\n" + + HelpExampleCli("z_importkey", "\"mykey\" yes 20000") + "\nAs a JSON-RPC call\n" - + HelpExampleRpc("z_importkey", "\"mykey\", false") + + HelpExampleRpc("z_importkey", "\"mykey\", \"no\"") ); LOCK2(cs_main, pwalletMain->cs_wallet); @@ -576,8 +580,36 @@ Value z_importkey(const Array& params, bool fHelp) // Whether to perform rescan after import bool fRescan = true; - if (params.size() > 1) - fRescan = params[1].get_bool(); + bool fIgnoreExistingKey = true; + if (params.size() > 1) { + auto rescan = params[1].get_str(); + if (rescan.compare("whenkeyisnew") != 0) { + fIgnoreExistingKey = false; + if (rescan.compare("yes") == 0) { + fRescan = true; + } else if (rescan.compare("no") == 0) { + fRescan = false; + } else { + // Handle older API + UniValue jVal; + if (!jVal.read(std::string("[")+rescan+std::string("]")) || + !jVal.isArray() || jVal.size()!=1 || !jVal[0].isBool()) { + throw JSONRPCError( + RPC_INVALID_PARAMETER, + "rescan must be \"yes\", \"no\" or \"whenkeyisnew\""); + } + fRescan = jVal[0].getBool(); + } + } + } + + // Height to rescan from + int nRescanHeight = 0; + if (params.size() > 2) + nRescanHeight = params[2].get_int(); + if (nRescanHeight < 0 || nRescanHeight > chainActive.Height()) { + throw JSONRPCError(RPC_INVALID_PARAMETER, "Block height out of range"); + } string strSecret = params[0].get_str(); CZCSpendingKey spendingkey(strSecret); @@ -586,33 +618,36 @@ Value z_importkey(const Array& params, bool fHelp) { // Don't throw error in case a key is already there - if (pwalletMain->HaveSpendingKey(addr)) - return Value::null; + if (pwalletMain->HaveSpendingKey(addr)) { + if (fIgnoreExistingKey) { + return NullUniValue; + } + } else { + pwalletMain->MarkDirty(); - pwalletMain->MarkDirty(); + if (!pwalletMain-> AddZKey(key)) + throw JSONRPCError(RPC_WALLET_ERROR, "Error adding spending key to wallet"); - if (!pwalletMain-> AddZKey(key)) - throw JSONRPCError(RPC_WALLET_ERROR, "Error adding spending key to wallet"); - - pwalletMain->mapZKeyMetadata[addr].nCreateTime = 1; + pwalletMain->mapZKeyMetadata[addr].nCreateTime = 1; + } // whenever a key is imported, we need to scan the whole chain pwalletMain->nTimeFirstKey = 1; // 0 would be considered 'no value' // We want to scan for transactions and notes if (fRescan) { - pwalletMain->ScanForWalletTransactions(chainActive.Genesis(), true); + pwalletMain->ScanForWalletTransactions(chainActive[nRescanHeight], true); } } - return Value::null; + return NullUniValue; } -Value z_exportkey(const Array& params, bool fHelp) +UniValue z_exportkey(const UniValue& params, bool fHelp) { if (!EnsureWalletIsAvailable(fHelp)) - return Value::null; + return NullUniValue; if (fHelp || params.size() != 1) throw runtime_error( diff --git a/src/wallet/rpcwallet.cpp b/src/wallet/rpcwallet.cpp index 819b5a8ec..0c3edfb2c 100644 --- a/src/wallet/rpcwallet.cpp +++ b/src/wallet/rpcwallet.cpp @@ -22,6 +22,7 @@ #include "utiltime.h" #include "asyncrpcoperation.h" +#include "asyncrpcqueue.h" #include "wallet/asyncrpcoperation_sendmany.h" #include "sodium.h" @@ -30,24 +31,21 @@ #include -#include "json/json_spirit_utils.h" -#include "json/json_spirit_value.h" -#include "asyncrpcqueue.h" +#include #include using namespace std; -using namespace json_spirit; using namespace libzcash; -extern Array TxJoinSplitToJSON(const CTransaction& tx); +extern UniValue TxJoinSplitToJSON(const CTransaction& tx); int64_t nWalletUnlockTime; static CCriticalSection cs_nWalletUnlockTime; // Private method: -Value z_getoperationstatus_IMPL(const Array&, bool); +UniValue z_getoperationstatus_IMPL(const UniValue&, bool); std::string HelpRequiringPassphrase() { @@ -77,7 +75,7 @@ void EnsureWalletIsUnlocked() uint64_t komodo_accrued_interest(int32_t *txheightp,uint32_t *locktimep,uint256 hash,int32_t n,int32_t checkheight,uint64_t checkvalue); uint64_t komodo_interest(int32_t txheight,uint64_t nValue,uint32_t nLockTime,uint32_t tiptime); -void WalletTxToJSON(const CWalletTx& wtx, Object& entry) +void WalletTxToJSON(const CWalletTx& wtx, UniValue& entry) { //int32_t i,n,txheight; uint32_t locktime; uint64_t interest = 0; int confirms = wtx.GetDepthInMainChain(); @@ -92,12 +90,7 @@ void WalletTxToJSON(const CWalletTx& wtx, Object& entry) } uint256 hash = wtx.GetHash(); entry.push_back(Pair("txid", hash.GetHex())); - //n = wtx.vout.size(); - //for (i=0; inHeight,wtx.vout[i].nValue,wtx.nLockTime,mapBlockIndex[wtx.hashBlock]->nTime); - //entry.push_back(Pair("interest", interest)); - - Array conflicts; + UniValue conflicts(UniValue::VARR); BOOST_FOREACH(const uint256& conflict, wtx.GetConflicts()) conflicts.push_back(conflict.GetHex()); entry.push_back(Pair("walletconflicts", conflicts)); @@ -109,7 +102,7 @@ void WalletTxToJSON(const CWalletTx& wtx, Object& entry) entry.push_back(Pair("vjoinsplit", TxJoinSplitToJSON(wtx))); } -string AccountFromValue(const Value& value) +string AccountFromValue(const UniValue& value) { string strAccount = value.get_str(); if (strAccount != "") @@ -117,10 +110,10 @@ string AccountFromValue(const Value& value) return strAccount; } -Value getnewaddress(const Array& params, bool fHelp) +UniValue getnewaddress(const UniValue& params, bool fHelp) { if (!EnsureWalletIsAvailable(fHelp)) - return Value::null; + return NullUniValue; if (fHelp || params.size() > 1) throw runtime_error( @@ -194,10 +187,10 @@ CBitcoinAddress GetAccountAddress(string strAccount, bool bForceNew=false) return CBitcoinAddress(account.vchPubKey.GetID()); } -Value getaccountaddress(const Array& params, bool fHelp) +UniValue getaccountaddress(const UniValue& params, bool fHelp) { if (!EnsureWalletIsAvailable(fHelp)) - return Value::null; + return NullUniValue; if (fHelp || params.size() != 1) throw runtime_error( @@ -219,17 +212,17 @@ Value getaccountaddress(const Array& params, bool fHelp) // Parse the account first so we don't generate a key if there's an error string strAccount = AccountFromValue(params[0]); - Value ret; + UniValue ret(UniValue::VSTR); ret = GetAccountAddress(strAccount).ToString(); return ret; } -Value getrawchangeaddress(const Array& params, bool fHelp) +UniValue getrawchangeaddress(const UniValue& params, bool fHelp) { if (!EnsureWalletIsAvailable(fHelp)) - return Value::null; + return NullUniValue; if (fHelp || params.size() > 1) throw runtime_error( @@ -261,10 +254,10 @@ Value getrawchangeaddress(const Array& params, bool fHelp) } -Value setaccount(const Array& params, bool fHelp) +UniValue setaccount(const UniValue& params, bool fHelp) { if (!EnsureWalletIsAvailable(fHelp)) - return Value::null; + return NullUniValue; if (fHelp || params.size() < 1 || params.size() > 2) throw runtime_error( @@ -303,14 +296,14 @@ Value setaccount(const Array& params, bool fHelp) else throw JSONRPCError(RPC_MISC_ERROR, "setaccount can only be used with own address"); - return Value::null; + return NullUniValue; } -Value getaccount(const Array& params, bool fHelp) +UniValue getaccount(const UniValue& params, bool fHelp) { if (!EnsureWalletIsAvailable(fHelp)) - return Value::null; + return NullUniValue; if (fHelp || params.size() != 1) throw runtime_error( @@ -339,10 +332,10 @@ Value getaccount(const Array& params, bool fHelp) } -Value getaddressesbyaccount(const Array& params, bool fHelp) +UniValue getaddressesbyaccount(const UniValue& params, bool fHelp) { if (!EnsureWalletIsAvailable(fHelp)) - return Value::null; + return NullUniValue; if (fHelp || params.size() != 1) throw runtime_error( @@ -365,7 +358,7 @@ Value getaddressesbyaccount(const Array& params, bool fHelp) string strAccount = AccountFromValue(params[0]); // Find all addresses that have the given account - Array ret; + UniValue ret(UniValue::VARR); BOOST_FOREACH(const PAIRTYPE(CBitcoinAddress, CAddressBookData)& item, pwalletMain->mapAddressBook) { const CBitcoinAddress& address = item.first; @@ -421,10 +414,10 @@ static void SendMoney(const CTxDestination &address, CAmount nValue, bool fSubtr throw JSONRPCError(RPC_WALLET_ERROR, "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."); } -Value sendtoaddress(const Array& params, bool fHelp) +UniValue sendtoaddress(const UniValue& params, bool fHelp) { if (!EnsureWalletIsAvailable(fHelp)) - return Value::null; + return NullUniValue; if (fHelp || params.size() < 2 || params.size() > 5) throw runtime_error( @@ -458,12 +451,14 @@ Value sendtoaddress(const Array& params, bool fHelp) // Amount CAmount nAmount = AmountFromValue(params[1]); + if (nAmount <= 0) + throw JSONRPCError(RPC_TYPE_ERROR, "Invalid amount for send"); // Wallet comments CWalletTx wtx; - if (params.size() > 2 && params[2].type() != null_type && !params[2].get_str().empty()) + if (params.size() > 2 && !params[2].isNull() && !params[2].get_str().empty()) wtx.mapValue["comment"] = params[2].get_str(); - if (params.size() > 3 && params[3].type() != null_type && !params[3].get_str().empty()) + if (params.size() > 3 && !params[3].isNull() && !params[3].get_str().empty()) wtx.mapValue["to"] = params[3].get_str(); bool fSubtractFeeFromAmount = false; @@ -690,10 +685,10 @@ Value paxwithdraw(const Array& params, bool fHelp) return wtx.GetHash().GetHex(); } -Value listaddressgroupings(const Array& params, bool fHelp) +UniValue listaddressgroupings(const UniValue& params, bool fHelp) { if (!EnsureWalletIsAvailable(fHelp)) - return Value::null; + return NullUniValue; if (fHelp) throw runtime_error( @@ -720,14 +715,14 @@ Value listaddressgroupings(const Array& params, bool fHelp) LOCK2(cs_main, pwalletMain->cs_wallet); - Array jsonGroupings; + UniValue jsonGroupings(UniValue::VARR); map balances = pwalletMain->GetAddressBalances(); BOOST_FOREACH(set grouping, pwalletMain->GetAddressGroupings()) { - Array jsonGrouping; + UniValue jsonGrouping(UniValue::VARR); BOOST_FOREACH(CTxDestination address, grouping) { - Array addressInfo; + UniValue addressInfo(UniValue::VARR); addressInfo.push_back(CBitcoinAddress(address).ToString()); addressInfo.push_back(ValueFromAmount(balances[address])); { @@ -741,10 +736,10 @@ Value listaddressgroupings(const Array& params, bool fHelp) return jsonGroupings; } -Value signmessage(const Array& params, bool fHelp) +UniValue signmessage(const UniValue& params, bool fHelp) { if (!EnsureWalletIsAvailable(fHelp)) - return Value::null; + return NullUniValue; if (fHelp || params.size() != 2) throw runtime_error( @@ -797,10 +792,10 @@ Value signmessage(const Array& params, bool fHelp) return EncodeBase64(&vchSig[0], vchSig.size()); } -Value getreceivedbyaddress(const Array& params, bool fHelp) +UniValue getreceivedbyaddress(const UniValue& params, bool fHelp) { if (!EnsureWalletIsAvailable(fHelp)) - return Value::null; + return NullUniValue; if (fHelp || params.size() < 1 || params.size() > 2) throw runtime_error( @@ -855,10 +850,10 @@ Value getreceivedbyaddress(const Array& params, bool fHelp) } -Value getreceivedbyaccount(const Array& params, bool fHelp) +UniValue getreceivedbyaccount(const UniValue& params, bool fHelp) { if (!EnsureWalletIsAvailable(fHelp)) - return Value::null; + return NullUniValue; if (fHelp || params.size() < 1 || params.size() > 2) throw runtime_error( @@ -944,10 +939,10 @@ CAmount GetAccountBalance(const string& strAccount, int nMinDepth, const isminef } -Value getbalance(const Array& params, bool fHelp) +UniValue getbalance(const UniValue& params, bool fHelp) { if (!EnsureWalletIsAvailable(fHelp)) - return Value::null; + return NullUniValue; if (fHelp || params.size() > 3) throw runtime_error( @@ -1016,10 +1011,10 @@ Value getbalance(const Array& params, bool fHelp) return ValueFromAmount(nBalance); } -Value getunconfirmedbalance(const Array ¶ms, bool fHelp) +UniValue getunconfirmedbalance(const UniValue ¶ms, bool fHelp) { if (!EnsureWalletIsAvailable(fHelp)) - return Value::null; + return NullUniValue; if (fHelp || params.size() > 0) throw runtime_error( @@ -1032,10 +1027,10 @@ Value getunconfirmedbalance(const Array ¶ms, bool fHelp) } -Value movecmd(const Array& params, bool fHelp) +UniValue movecmd(const UniValue& params, bool fHelp) { if (!EnsureWalletIsAvailable(fHelp)) - return Value::null; + return NullUniValue; if (fHelp || params.size() < 3 || params.size() > 5) throw runtime_error( @@ -1062,6 +1057,8 @@ Value movecmd(const Array& params, bool fHelp) string strFrom = AccountFromValue(params[0]); string strTo = AccountFromValue(params[1]); CAmount nAmount = AmountFromValue(params[2]); + if (nAmount <= 0) + throw JSONRPCError(RPC_TYPE_ERROR, "Invalid amount for send"); if (params.size() > 3) // unused parameter, used to be nMinDepth, keep type-checking it though (void)params[3].get_int(); @@ -1102,10 +1099,10 @@ Value movecmd(const Array& params, bool fHelp) } -Value sendfrom(const Array& params, bool fHelp) +UniValue sendfrom(const UniValue& params, bool fHelp) { if (!EnsureWalletIsAvailable(fHelp)) - return Value::null; + return NullUniValue; if (fHelp || params.size() < 3 || params.size() > 6) throw runtime_error( @@ -1141,15 +1138,17 @@ Value sendfrom(const Array& params, bool fHelp) if (!address.IsValid()) throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, "Invalid Komodo address"); CAmount nAmount = AmountFromValue(params[2]); + if (nAmount <= 0) + throw JSONRPCError(RPC_TYPE_ERROR, "Invalid amount for send"); int nMinDepth = 1; if (params.size() > 3) nMinDepth = params[3].get_int(); CWalletTx wtx; wtx.strFromAccount = strAccount; - if (params.size() > 4 && params[4].type() != null_type && !params[4].get_str().empty()) + if (params.size() > 4 && !params[4].isNull() && !params[4].get_str().empty()) wtx.mapValue["comment"] = params[4].get_str(); - if (params.size() > 5 && params[5].type() != null_type && !params[5].get_str().empty()) + if (params.size() > 5 && !params[5].isNull() && !params[5].get_str().empty()) wtx.mapValue["to"] = params[5].get_str(); EnsureWalletIsUnlocked(); @@ -1165,10 +1164,10 @@ Value sendfrom(const Array& params, bool fHelp) } -Value sendmany(const Array& params, bool fHelp) +UniValue sendmany(const UniValue& params, bool fHelp) { if (!EnsureWalletIsAvailable(fHelp)) - return Value::null; + return NullUniValue; if (fHelp || params.size() < 2 || params.size() > 5) throw runtime_error( @@ -1209,17 +1208,17 @@ Value sendmany(const Array& params, bool fHelp) LOCK2(cs_main, pwalletMain->cs_wallet); string strAccount = AccountFromValue(params[0]); - Object sendTo = params[1].get_obj(); + UniValue sendTo = params[1].get_obj(); int nMinDepth = 1; if (params.size() > 2) nMinDepth = params[2].get_int(); CWalletTx wtx; wtx.strFromAccount = strAccount; - if (params.size() > 3 && params[3].type() != null_type && !params[3].get_str().empty()) + if (params.size() > 3 && !params[3].isNull() && !params[3].get_str().empty()) wtx.mapValue["comment"] = params[3].get_str(); - Array subtractFeeFromAmount; + UniValue subtractFeeFromAmount(UniValue::VARR); if (params.size() > 4) subtractFeeFromAmount = params[4].get_array(); @@ -1227,24 +1226,29 @@ Value sendmany(const Array& params, bool fHelp) vector vecSend; CAmount totalAmount = 0; - BOOST_FOREACH(const Pair& s, sendTo) + vector keys = sendTo.getKeys(); + BOOST_FOREACH(const string& name_, keys) { - CBitcoinAddress address(s.name_); + CBitcoinAddress address(name_); if (!address.IsValid()) - throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, string("Invalid Komodo address: ")+s.name_); + throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, string("Invalid Komodo address: ")+name_); if (setAddress.count(address)) - throw JSONRPCError(RPC_INVALID_PARAMETER, string("Invalid parameter, duplicated address: ")+s.name_); + throw JSONRPCError(RPC_INVALID_PARAMETER, string("Invalid parameter, duplicated address: ")+name_); setAddress.insert(address); CScript scriptPubKey = GetScriptForDestination(address.Get()); - CAmount nAmount = AmountFromValue(s.value_); + CAmount nAmount = AmountFromValue(sendTo[name_]); + if (nAmount <= 0) + throw JSONRPCError(RPC_TYPE_ERROR, "Invalid amount for send"); totalAmount += nAmount; bool fSubtractFeeFromAmount = false; - BOOST_FOREACH(const Value& addr, subtractFeeFromAmount) - if (addr.get_str() == s.name_) + for (size_t idx = 0; idx < subtractFeeFromAmount.size(); idx++) { + const UniValue& addr = subtractFeeFromAmount[idx]; + if (addr.get_str() == name_) fSubtractFeeFromAmount = true; + } CRecipient recipient = {scriptPubKey, nAmount, fSubtractFeeFromAmount}; vecSend.push_back(recipient); @@ -1272,12 +1276,12 @@ Value sendmany(const Array& params, bool fHelp) } // Defined in rpcmisc.cpp -extern CScript _createmultisig_redeemScript(const Array& params); +extern CScript _createmultisig_redeemScript(const UniValue& params); -Value addmultisigaddress(const Array& params, bool fHelp) +UniValue addmultisigaddress(const UniValue& params, bool fHelp) { if (!EnsureWalletIsAvailable(fHelp)) - return Value::null; + return NullUniValue; if (fHelp || params.size() < 2 || params.size() > 3) { @@ -1337,7 +1341,7 @@ struct tallyitem } }; -Value ListReceived(const Array& params, bool fByAccounts) +UniValue ListReceived(const UniValue& params, bool fByAccounts) { // Minimum confirmations int nMinDepth = 1; @@ -1387,7 +1391,7 @@ Value ListReceived(const Array& params, bool fByAccounts) } // Reply - Array ret; + UniValue ret(UniValue::VARR); map mapAccountTally; BOOST_FOREACH(const PAIRTYPE(CBitcoinAddress, CAddressBookData)& item, pwalletMain->mapAddressBook) { @@ -1416,14 +1420,14 @@ Value ListReceived(const Array& params, bool fByAccounts) } else { - Object obj; + UniValue obj(UniValue::VOBJ); if(fIsWatchonly) obj.push_back(Pair("involvesWatchonly", true)); obj.push_back(Pair("address", address.ToString())); obj.push_back(Pair("account", strAccount)); obj.push_back(Pair("amount", ValueFromAmount(nAmount))); obj.push_back(Pair("confirmations", (nConf == std::numeric_limits::max() ? 0 : nConf))); - Array transactions; + UniValue transactions(UniValue::VARR); if (it != mapTally.end()) { BOOST_FOREACH(const uint256& item, (*it).second.txids) @@ -1442,7 +1446,7 @@ Value ListReceived(const Array& params, bool fByAccounts) { CAmount nAmount = (*it).second.nAmount; int nConf = (*it).second.nConf; - Object obj; + UniValue obj(UniValue::VOBJ); if((*it).second.fIsWatchonly) obj.push_back(Pair("involvesWatchonly", true)); obj.push_back(Pair("account", (*it).first)); @@ -1455,10 +1459,10 @@ Value ListReceived(const Array& params, bool fByAccounts) return ret; } -Value listreceivedbyaddress(const Array& params, bool fHelp) +UniValue listreceivedbyaddress(const UniValue& params, bool fHelp) { if (!EnsureWalletIsAvailable(fHelp)) - return Value::null; + return NullUniValue; if (fHelp || params.size() > 3) throw runtime_error( @@ -1492,10 +1496,10 @@ Value listreceivedbyaddress(const Array& params, bool fHelp) return ListReceived(params, false); } -Value listreceivedbyaccount(const Array& params, bool fHelp) +UniValue listreceivedbyaccount(const UniValue& params, bool fHelp) { if (!EnsureWalletIsAvailable(fHelp)) - return Value::null; + return NullUniValue; if (fHelp || params.size() > 3) throw runtime_error( @@ -1528,14 +1532,14 @@ Value listreceivedbyaccount(const Array& params, bool fHelp) return ListReceived(params, true); } -static void MaybePushAddress(Object & entry, const CTxDestination &dest) +static void MaybePushAddress(UniValue & entry, const CTxDestination &dest) { CBitcoinAddress addr; if (addr.Set(dest)) entry.push_back(Pair("address", addr.ToString())); } -void ListTransactions(const CWalletTx& wtx, const string& strAccount, int nMinDepth, bool fLong, Array& ret, const isminefilter& filter) +void ListTransactions(const CWalletTx& wtx, const string& strAccount, int nMinDepth, bool fLong, UniValue& ret, const isminefilter& filter) { CAmount nFee; string strSentAccount; @@ -1552,7 +1556,7 @@ void ListTransactions(const CWalletTx& wtx, const string& strAccount, int nMinDe { BOOST_FOREACH(const COutputEntry& s, listSent) { - Object entry; + UniValue entry(UniValue::VOBJ); if(involvesWatchonly || (::IsMine(*pwalletMain, s.destination) & ISMINE_WATCH_ONLY)) entry.push_back(Pair("involvesWatchonly", true)); entry.push_back(Pair("account", strSentAccount)); @@ -1578,7 +1582,7 @@ void ListTransactions(const CWalletTx& wtx, const string& strAccount, int nMinDe account = pwalletMain->mapAddressBook[r.destination].name; if (fAllAccounts || (account == strAccount)) { - Object entry; + UniValue entry(UniValue::VOBJ); if(involvesWatchonly || (::IsMine(*pwalletMain, r.destination) & ISMINE_WATCH_ONLY)) entry.push_back(Pair("involvesWatchonly", true)); entry.push_back(Pair("account", account)); @@ -1607,13 +1611,13 @@ void ListTransactions(const CWalletTx& wtx, const string& strAccount, int nMinDe } } -void AcentryToJSON(const CAccountingEntry& acentry, const string& strAccount, Array& ret) +void AcentryToJSON(const CAccountingEntry& acentry, const string& strAccount, UniValue& ret) { bool fAllAccounts = (strAccount == string("*")); if (fAllAccounts || acentry.strAccount == strAccount) { - Object entry; + UniValue entry(UniValue::VOBJ); entry.push_back(Pair("account", acentry.strAccount)); entry.push_back(Pair("category", "move")); entry.push_back(Pair("time", acentry.nTime)); @@ -1624,10 +1628,10 @@ void AcentryToJSON(const CAccountingEntry& acentry, const string& strAccount, Ar } } -Value listtransactions(const Array& params, bool fHelp) +UniValue listtransactions(const UniValue& params, bool fHelp) { if (!EnsureWalletIsAvailable(fHelp)) - return Value::null; + return NullUniValue; if (fHelp || params.size() > 4) throw runtime_error( @@ -1703,7 +1707,7 @@ Value listtransactions(const Array& params, bool fHelp) if (nFrom < 0) throw JSONRPCError(RPC_INVALID_PARAMETER, "Negative from"); - Array ret; + UniValue ret(UniValue::VARR); std::list acentries; CWallet::TxItems txOrdered = pwalletMain->OrderedTxItems(acentries, strAccount); @@ -1726,23 +1730,30 @@ Value listtransactions(const Array& params, bool fHelp) nFrom = ret.size(); if ((nFrom + nCount) > (int)ret.size()) nCount = ret.size() - nFrom; - Array::iterator first = ret.begin(); + + vector arrTmp = ret.getValues(); + + vector::iterator first = arrTmp.begin(); std::advance(first, nFrom); - Array::iterator last = ret.begin(); + vector::iterator last = arrTmp.begin(); std::advance(last, nFrom+nCount); - if (last != ret.end()) ret.erase(last, ret.end()); - if (first != ret.begin()) ret.erase(ret.begin(), first); + if (last != arrTmp.end()) arrTmp.erase(last, arrTmp.end()); + if (first != arrTmp.begin()) arrTmp.erase(arrTmp.begin(), first); - std::reverse(ret.begin(), ret.end()); // Return oldest to newest + std::reverse(arrTmp.begin(), arrTmp.end()); // Return oldest to newest + + ret.clear(); + ret.setArray(); + ret.push_backV(arrTmp); return ret; } -Value listaccounts(const Array& params, bool fHelp) +UniValue listaccounts(const UniValue& params, bool fHelp) { if (!EnsureWalletIsAvailable(fHelp)) - return Value::null; + return NullUniValue; if (fHelp || params.size() > 2) throw runtime_error( @@ -1812,17 +1823,17 @@ Value listaccounts(const Array& params, bool fHelp) BOOST_FOREACH(const CAccountingEntry& entry, acentries) mapAccountBalances[entry.strAccount] += entry.nCreditDebit; - Object ret; + UniValue ret(UniValue::VOBJ); BOOST_FOREACH(const PAIRTYPE(string, CAmount)& accountBalance, mapAccountBalances) { ret.push_back(Pair(accountBalance.first, ValueFromAmount(accountBalance.second))); } return ret; } -Value listsinceblock(const Array& params, bool fHelp) +UniValue listsinceblock(const UniValue& params, bool fHelp) { if (!EnsureWalletIsAvailable(fHelp)) - return Value::null; + return NullUniValue; if (fHelp) throw runtime_error( @@ -1890,7 +1901,7 @@ Value listsinceblock(const Array& params, bool fHelp) int depth = pindex ? (1 + chainActive.Height() - pindex->nHeight) : -1; - Array transactions; + UniValue transactions(UniValue::VARR); for (map::iterator it = pwalletMain->mapWallet.begin(); it != pwalletMain->mapWallet.end(); it++) { @@ -1903,17 +1914,17 @@ Value listsinceblock(const Array& params, bool fHelp) CBlockIndex *pblockLast = chainActive[chainActive.Height() + 1 - target_confirms]; uint256 lastblock = pblockLast ? pblockLast->GetBlockHash() : uint256(); - Object ret; + UniValue ret(UniValue::VOBJ); ret.push_back(Pair("transactions", transactions)); ret.push_back(Pair("lastblock", lastblock.GetHex())); return ret; } -Value gettransaction(const Array& params, bool fHelp) +UniValue gettransaction(const UniValue& params, bool fHelp) { if (!EnsureWalletIsAvailable(fHelp)) - return Value::null; + return NullUniValue; if (fHelp || params.size() < 1 || params.size() > 2) throw runtime_error( @@ -1972,7 +1983,7 @@ Value gettransaction(const Array& params, bool fHelp) if(params[1].get_bool()) filter = filter | ISMINE_WATCH_ONLY; - Object entry; + UniValue entry(UniValue::VOBJ); if (!pwalletMain->mapWallet.count(hash)) throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, "Invalid or non-wallet transaction id"); const CWalletTx& wtx = pwalletMain->mapWallet[hash]; @@ -1988,7 +1999,7 @@ Value gettransaction(const Array& params, bool fHelp) WalletTxToJSON(wtx, entry); - Array details; + UniValue details(UniValue::VARR); ListTransactions(wtx, "*", 0, false, details, filter); entry.push_back(Pair("details", details)); @@ -1999,10 +2010,10 @@ Value gettransaction(const Array& params, bool fHelp) } -Value backupwallet(const Array& params, bool fHelp) +UniValue backupwallet(const UniValue& params, bool fHelp) { if (!EnsureWalletIsAvailable(fHelp)) - return Value::null; + return NullUniValue; if (fHelp || params.size() != 1) throw runtime_error( @@ -2042,10 +2053,10 @@ Value backupwallet(const Array& params, bool fHelp) } -Value keypoolrefill(const Array& params, bool fHelp) +UniValue keypoolrefill(const UniValue& params, bool fHelp) { if (!EnsureWalletIsAvailable(fHelp)) - return Value::null; + return NullUniValue; if (fHelp || params.size() > 1) throw runtime_error( @@ -2075,7 +2086,7 @@ Value keypoolrefill(const Array& params, bool fHelp) if (pwalletMain->GetKeyPoolSize() < kpSize) throw JSONRPCError(RPC_WALLET_ERROR, "Error refreshing keypool."); - return Value::null; + return NullUniValue; } @@ -2086,10 +2097,10 @@ static void LockWallet(CWallet* pWallet) pWallet->Lock(); } -Value walletpassphrase(const Array& params, bool fHelp) +UniValue walletpassphrase(const UniValue& params, bool fHelp) { if (!EnsureWalletIsAvailable(fHelp)) - return Value::null; + return NullUniValue; if (pwalletMain->IsCrypted() && (fHelp || params.size() != 2)) throw runtime_error( @@ -2144,14 +2155,14 @@ Value walletpassphrase(const Array& params, bool fHelp) nWalletUnlockTime = GetTime() + nSleepTime; RPCRunLater("lockwallet", boost::bind(LockWallet, pwalletMain), nSleepTime); - return Value::null; + return NullUniValue; } -Value walletpassphrasechange(const Array& params, bool fHelp) +UniValue walletpassphrasechange(const UniValue& params, bool fHelp) { if (!EnsureWalletIsAvailable(fHelp)) - return Value::null; + return NullUniValue; if (pwalletMain->IsCrypted() && (fHelp || params.size() != 2)) throw runtime_error( @@ -2190,14 +2201,14 @@ Value walletpassphrasechange(const Array& params, bool fHelp) if (!pwalletMain->ChangeWalletPassphrase(strOldWalletPass, strNewWalletPass)) throw JSONRPCError(RPC_WALLET_PASSPHRASE_INCORRECT, "Error: The wallet passphrase entered was incorrect."); - return Value::null; + return NullUniValue; } -Value walletlock(const Array& params, bool fHelp) +UniValue walletlock(const UniValue& params, bool fHelp) { if (!EnsureWalletIsAvailable(fHelp)) - return Value::null; + return NullUniValue; if (pwalletMain->IsCrypted() && (fHelp || params.size() != 0)) throw runtime_error( @@ -2229,16 +2240,16 @@ Value walletlock(const Array& params, bool fHelp) nWalletUnlockTime = 0; } - return Value::null; + return NullUniValue; } -Value encryptwallet(const Array& params, bool fHelp) +UniValue encryptwallet(const UniValue& params, bool fHelp) { if (!EnsureWalletIsAvailable(fHelp)) - return Value::null; + return NullUniValue; - auto fEnableWalletEncryption = GetBoolArg("-developerencryptwallet", false); + auto fEnableWalletEncryption = fExperimentalMode && GetBoolArg("-developerencryptwallet", false); std::string strWalletEncryptionDisabledMsg = ""; if (!fEnableWalletEncryption) { @@ -2301,10 +2312,10 @@ Value encryptwallet(const Array& params, bool fHelp) return "wallet encrypted; Komodo server stopping, restart to run with encrypted wallet. The keypool has been flushed, you need to make a new backup."; } -Value lockunspent(const Array& params, bool fHelp) +UniValue lockunspent(const UniValue& params, bool fHelp) { if (!EnsureWalletIsAvailable(fHelp)) - return Value::null; + return NullUniValue; if (fHelp || params.size() < 1 || params.size() > 2) throw runtime_error( @@ -2345,9 +2356,9 @@ Value lockunspent(const Array& params, bool fHelp) LOCK2(cs_main, pwalletMain->cs_wallet); if (params.size() == 1) - RPCTypeCheck(params, boost::assign::list_of(bool_type)); + RPCTypeCheck(params, boost::assign::list_of(UniValue::VBOOL)); else - RPCTypeCheck(params, boost::assign::list_of(bool_type)(array_type)); + RPCTypeCheck(params, boost::assign::list_of(UniValue::VBOOL)(UniValue::VARR)); bool fUnlock = params[0].get_bool(); @@ -2357,14 +2368,14 @@ Value lockunspent(const Array& params, bool fHelp) return true; } - Array outputs = params[1].get_array(); - BOOST_FOREACH(Value& output, outputs) - { - if (output.type() != obj_type) + UniValue outputs = params[1].get_array(); + for (size_t idx = 0; idx < outputs.size(); idx++) { + const UniValue& output = outputs[idx]; + if (!output.isObject()) throw JSONRPCError(RPC_INVALID_PARAMETER, "Invalid parameter, expected object"); - const Object& o = output.get_obj(); + const UniValue& o = output.get_obj(); - RPCTypeCheck(o, boost::assign::map_list_of("txid", str_type)("vout", int_type)); + RPCTypeCheckObj(o, boost::assign::map_list_of("txid", UniValue::VSTR)("vout", UniValue::VNUM)); string txid = find_value(o, "txid").get_str(); if (!IsHex(txid)) @@ -2385,10 +2396,10 @@ Value lockunspent(const Array& params, bool fHelp) return true; } -Value listlockunspent(const Array& params, bool fHelp) +UniValue listlockunspent(const UniValue& params, bool fHelp) { if (!EnsureWalletIsAvailable(fHelp)) - return Value::null; + return NullUniValue; if (fHelp || params.size() > 0) throw runtime_error( @@ -2421,10 +2432,10 @@ Value listlockunspent(const Array& params, bool fHelp) vector vOutpts; pwalletMain->ListLockedCoins(vOutpts); - Array ret; + UniValue ret(UniValue::VARR); BOOST_FOREACH(COutPoint &outpt, vOutpts) { - Object o; + UniValue o(UniValue::VOBJ); o.push_back(Pair("txid", outpt.hash.GetHex())); o.push_back(Pair("vout", (int)outpt.n)); @@ -2434,10 +2445,10 @@ Value listlockunspent(const Array& params, bool fHelp) return ret; } -Value settxfee(const Array& params, bool fHelp) +UniValue settxfee(const UniValue& params, bool fHelp) { if (!EnsureWalletIsAvailable(fHelp)) - return Value::null; + return NullUniValue; if (fHelp || params.size() < 1 || params.size() > 1) throw runtime_error( @@ -2455,18 +2466,16 @@ Value settxfee(const Array& params, bool fHelp) LOCK2(cs_main, pwalletMain->cs_wallet); // Amount - CAmount nAmount = 0; - if (params[0].get_real() != 0.0) - nAmount = AmountFromValue(params[0]); // rejects 0.0 amounts + CAmount nAmount = AmountFromValue(params[0]); payTxFee = CFeeRate(nAmount, 1000); return true; } -Value getwalletinfo(const Array& params, bool fHelp) +UniValue getwalletinfo(const UniValue& params, bool fHelp) { if (!EnsureWalletIsAvailable(fHelp)) - return Value::null; + return NullUniValue; if (fHelp || params.size() != 0) throw runtime_error( @@ -2482,6 +2491,7 @@ Value getwalletinfo(const Array& params, bool fHelp) " \"keypoololdest\": xxxxxx, (numeric) the timestamp (seconds since GMT epoch) of the oldest pre-generated key in the key pool\n" " \"keypoolsize\": xxxx, (numeric) how many new keys are pre-generated\n" " \"unlocked_until\": ttt, (numeric) the timestamp in seconds since epoch (midnight Jan 1 1970 GMT) that the wallet is unlocked for transfers, or 0 if the wallet is locked\n" + " \"paytxfee\": x.xxxx, (numeric) the transaction fee configuration, set in ZEC/KB\n" "}\n" "\nExamples:\n" + HelpExampleCli("getwalletinfo", "") @@ -2490,7 +2500,7 @@ Value getwalletinfo(const Array& params, bool fHelp) LOCK2(cs_main, pwalletMain->cs_wallet); - Object obj; + UniValue obj(UniValue::VOBJ); obj.push_back(Pair("walletversion", pwalletMain->GetVersion())); obj.push_back(Pair("balance", ValueFromAmount(pwalletMain->GetBalance()))); obj.push_back(Pair("unconfirmed_balance", ValueFromAmount(pwalletMain->GetUnconfirmedBalance()))); @@ -2500,13 +2510,14 @@ Value getwalletinfo(const Array& params, bool fHelp) obj.push_back(Pair("keypoolsize", (int)pwalletMain->GetKeyPoolSize())); if (pwalletMain->IsCrypted()) obj.push_back(Pair("unlocked_until", nWalletUnlockTime)); + obj.push_back(Pair("paytxfee", ValueFromAmount(payTxFee.GetFeePerK()))); return obj; } -Value resendwallettransactions(const Array& params, bool fHelp) +UniValue resendwallettransactions(const UniValue& params, bool fHelp) { if (!EnsureWalletIsAvailable(fHelp)) - return Value::null; + return NullUniValue; if (fHelp || params.size() != 0) throw runtime_error( @@ -2520,7 +2531,7 @@ Value resendwallettransactions(const Array& params, bool fHelp) LOCK2(cs_main, pwalletMain->cs_wallet); std::vector txids = pwalletMain->ResendWalletTransactionsBefore(GetTime()); - Array result; + UniValue result(UniValue::VARR); BOOST_FOREACH(const uint256& txid, txids) { result.push_back(txid.ToString()); @@ -2530,10 +2541,10 @@ Value resendwallettransactions(const Array& params, bool fHelp) uint64_t komodo_interest(int32_t txheight,uint64_t nValue,uint32_t nLockTime,uint32_t tiptime); -Value listunspent(const Array& params, bool fHelp) +UniValue listunspent(const UniValue& params, bool fHelp) { if (!EnsureWalletIsAvailable(fHelp)) - return Value::null; + return NullUniValue; if (fHelp || params.size() > 3) throw runtime_error( @@ -2571,7 +2582,7 @@ Value listunspent(const Array& params, bool fHelp) + HelpExampleRpc("listunspent", "6, 9999999 \"[\\\"1PGFqEzfmQch1gKD3ra4k18PNj3tTUUSqg\\\",\\\"1LtvqCaApEdUGFkpKMM4MstjcaL4dKg8SP\\\"]\"") ); - RPCTypeCheck(params, boost::assign::list_of(int_type)(int_type)(array_type)); + RPCTypeCheck(params, boost::assign::list_of(UniValue::VNUM)(UniValue::VNUM)(UniValue::VARR)); int nMinDepth = 1; if (params.size() > 0) @@ -2583,8 +2594,9 @@ Value listunspent(const Array& params, bool fHelp) set setAddress; if (params.size() > 2) { - Array inputs = params[2].get_array(); - BOOST_FOREACH(Value& input, inputs) { + UniValue inputs = params[2].get_array(); + for (size_t idx = 0; idx < inputs.size(); idx++) { + const UniValue& input = inputs[idx]; CBitcoinAddress address(input.get_str()); if (!address.IsValid()) throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, string("Invalid Komodo address: ")+input.get_str()); @@ -2594,7 +2606,7 @@ Value listunspent(const Array& params, bool fHelp) } } - Array results; + UniValue results(UniValue::VARR); vector vecOutputs; assert(pwalletMain != NULL); LOCK2(cs_main, pwalletMain->cs_wallet); @@ -2614,7 +2626,7 @@ Value listunspent(const Array& params, bool fHelp) CAmount nValue = out.tx->vout[out.i].nValue; const CScript& pk = out.tx->vout[out.i].scriptPubKey; - Object entry; + UniValue entry(UniValue::VOBJ); entry.push_back(Pair("txid", out.tx->GetHash().GetHex())); entry.push_back(Pair("vout", out.i)); CTxDestination address; @@ -2679,7 +2691,61 @@ uint64_t komodo_interestsum() return(sum); } -Value zc_sample_joinsplit(const json_spirit::Array& params, bool fHelp) +UniValue fundrawtransaction(const UniValue& params, bool fHelp) +{ + if (!EnsureWalletIsAvailable(fHelp)) + return NullUniValue; + + if (fHelp || params.size() != 1) + throw runtime_error( + "fundrawtransaction \"hexstring\"\n" + "\nAdd inputs to a transaction until it has enough in value to meet its out value.\n" + "This will not modify existing inputs, and will add one change output to the outputs.\n" + "Note that inputs which were signed may need to be resigned after completion since in/outputs have been added.\n" + "The inputs added will not be signed, use signrawtransaction for that.\n" + "\nArguments:\n" + "1. \"hexstring\" (string, required) The hex string of the raw transaction\n" + "\nResult:\n" + "{\n" + " \"hex\": \"value\", (string) The resulting raw transaction (hex-encoded string)\n" + " \"fee\": n, (numeric) The fee added to the transaction\n" + " \"changepos\": n (numeric) The position of the added change output, or -1\n" + "}\n" + "\"hex\" \n" + "\nExamples:\n" + "\nCreate a transaction with no inputs\n" + + HelpExampleCli("createrawtransaction", "\"[]\" \"{\\\"myaddress\\\":0.01}\"") + + "\nAdd sufficient unsigned inputs to meet the output value\n" + + HelpExampleCli("fundrawtransaction", "\"rawtransactionhex\"") + + "\nSign the transaction\n" + + HelpExampleCli("signrawtransaction", "\"fundedtransactionhex\"") + + "\nSend the transaction\n" + + HelpExampleCli("sendrawtransaction", "\"signedtransactionhex\"") + ); + + RPCTypeCheck(params, boost::assign::list_of(UniValue::VSTR)); + + // parse hex string from parameter + CTransaction origTx; + if (!DecodeHexTx(origTx, params[0].get_str())) + throw JSONRPCError(RPC_DESERIALIZATION_ERROR, "TX decode failed"); + + CMutableTransaction tx(origTx); + CAmount nFee; + string strFailReason; + int nChangePos = -1; + if(!pwalletMain->FundTransaction(tx, nFee, nChangePos, strFailReason)) + throw JSONRPCError(RPC_INTERNAL_ERROR, strFailReason); + + UniValue result(UniValue::VOBJ); + result.push_back(Pair("hex", EncodeHexTx(tx))); + result.push_back(Pair("changepos", nChangePos)); + result.push_back(Pair("fee", ValueFromAmount(nFee))); + + return result; +} + +UniValue zc_sample_joinsplit(const UniValue& params, bool fHelp) { if (fHelp) { throw runtime_error( @@ -2707,10 +2773,10 @@ Value zc_sample_joinsplit(const json_spirit::Array& params, bool fHelp) return HexStr(ss.begin(), ss.end()); } -Value zc_benchmark(const json_spirit::Array& params, bool fHelp) +UniValue zc_benchmark(const UniValue& params, bool fHelp) { if (!EnsureWalletIsAvailable(fHelp)) { - return Value::null; + return NullUniValue; } if (fHelp || params.size() < 2) { @@ -2773,6 +2839,7 @@ Value zc_benchmark(const json_spirit::Array& params, bool fHelp) } } else if (benchmarktype == "verifyjoinsplit") { sample_times.push_back(benchmark_verify_joinsplit(samplejoinsplit)); +#ifdef ENABLE_MINING } else if (benchmarktype == "solveequihash") { if (params.size() < 3) { sample_times.push_back(benchmark_solve_equihash()); @@ -2781,6 +2848,7 @@ Value zc_benchmark(const json_spirit::Array& params, bool fHelp) std::vector vals = benchmark_solve_equihash_threaded(nThreads); sample_times.insert(sample_times.end(), vals.begin(), vals.end()); } +#endif } else if (benchmarktype == "verifyequihash") { sample_times.push_back(benchmark_verify_equihash()); } else if (benchmarktype == "validatelargetx") { @@ -2796,9 +2864,9 @@ Value zc_benchmark(const json_spirit::Array& params, bool fHelp) } } - Array results; + UniValue results(UniValue::VARR); for (auto time : sample_times) { - Object result; + UniValue result(UniValue::VOBJ); result.push_back(Pair("runningtime", time)); results.push_back(result); } @@ -2806,10 +2874,10 @@ Value zc_benchmark(const json_spirit::Array& params, bool fHelp) return results; } -Value zc_raw_receive(const json_spirit::Array& params, bool fHelp) +UniValue zc_raw_receive(const UniValue& params, bool fHelp) { if (!EnsureWalletIsAvailable(fHelp)) { - return Value::null; + return NullUniValue; } if (fHelp || params.size() != 2) { @@ -2827,7 +2895,7 @@ Value zc_raw_receive(const json_spirit::Array& params, bool fHelp) ); } - RPCTypeCheck(params, boost::assign::list_of(str_type)(str_type)); + RPCTypeCheck(params, boost::assign::list_of(UniValue::VSTR)(UniValue::VSTR)); LOCK(cs_main); @@ -2878,7 +2946,7 @@ Value zc_raw_receive(const json_spirit::Array& params, bool fHelp) CDataStream ss(SER_NETWORK, PROTOCOL_VERSION); ss << npt; - Object result; + UniValue result(UniValue::VOBJ); result.push_back(Pair("amount", ValueFromAmount(decrypted_note.value))); result.push_back(Pair("note", HexStr(ss.begin(), ss.end()))); result.push_back(Pair("exists", (bool) witnesses[0])); @@ -2887,10 +2955,10 @@ Value zc_raw_receive(const json_spirit::Array& params, bool fHelp) -Value zc_raw_joinsplit(const json_spirit::Array& params, bool fHelp) +UniValue zc_raw_joinsplit(const UniValue& params, bool fHelp) { if (!EnsureWalletIsAvailable(fHelp)) { - return Value::null; + return NullUniValue; } if (fHelp || params.size() != 5) { @@ -2923,8 +2991,8 @@ Value zc_raw_joinsplit(const json_spirit::Array& params, bool fHelp) if (!DecodeHexTx(tx, params[0].get_str())) throw JSONRPCError(RPC_DESERIALIZATION_ERROR, "TX decode failed"); - Object inputs = params[1].get_obj(); - Object outputs = params[2].get_obj(); + UniValue inputs = params[1].get_obj(); + UniValue outputs = params[2].get_obj(); CAmount vpub_old(0); CAmount vpub_new(0); @@ -2941,9 +3009,8 @@ Value zc_raw_joinsplit(const json_spirit::Array& params, bool fHelp) std::vector keys; std::vector commitments; - BOOST_FOREACH(const Pair& s, inputs) - { - CZCSpendingKey spendingkey(s.value_.get_str()); + for (const string& name_ : inputs.getKeys()) { + CZCSpendingKey spendingkey(inputs[name_].get_str()); SpendingKey k = spendingkey.Get(); keys.push_back(k); @@ -2951,7 +3018,7 @@ Value zc_raw_joinsplit(const json_spirit::Array& params, bool fHelp) NotePlaintext npt; { - CDataStream ssData(ParseHexV(s.name_, "note"), SER_NETWORK, PROTOCOL_VERSION); + CDataStream ssData(ParseHexV(name_, "note"), SER_NETWORK, PROTOCOL_VERSION); ssData >> npt; } @@ -2984,11 +3051,10 @@ Value zc_raw_joinsplit(const json_spirit::Array& params, bool fHelp) vjsin.push_back(JSInput()); } - BOOST_FOREACH(const Pair& s, outputs) - { - CZCPaymentAddress pubaddr(s.name_); + for (const string& name_ : outputs.getKeys()) { + CZCPaymentAddress pubaddr(name_); PaymentAddress addrTo = pubaddr.Get(); - CAmount nAmount = AmountFromValue(s.value_); + CAmount nAmount = AmountFromValue(outputs[name_]); vjsout.push_back(JSOutput(addrTo, nAmount)); } @@ -3068,17 +3134,17 @@ Value zc_raw_joinsplit(const json_spirit::Array& params, bool fHelp) encryptedNote2 = HexStr(ss2.begin(), ss2.end()); } - Object result; + UniValue result(UniValue::VOBJ); result.push_back(Pair("encryptednote1", encryptedNote1)); result.push_back(Pair("encryptednote2", encryptedNote2)); result.push_back(Pair("rawtxn", HexStr(ss.begin(), ss.end()))); return result; } -Value zc_raw_keygen(const json_spirit::Array& params, bool fHelp) +UniValue zc_raw_keygen(const UniValue& params, bool fHelp) { if (!EnsureWalletIsAvailable(fHelp)) { - return Value::null; + return NullUniValue; } if (fHelp || params.size() != 0) { @@ -3106,7 +3172,7 @@ Value zc_raw_keygen(const json_spirit::Array& params, bool fHelp) CZCSpendingKey spendingkey(k); std::string viewing_hex = HexStr(viewing.begin(), viewing.end()); - Object result; + UniValue result(UniValue::VOBJ); result.push_back(Pair("zcaddress", pubaddr.ToString())); result.push_back(Pair("zcsecretkey", spendingkey.ToString())); result.push_back(Pair("zcviewingkey", viewing_hex)); @@ -3114,10 +3180,10 @@ Value zc_raw_keygen(const json_spirit::Array& params, bool fHelp) } -Value z_getnewaddress(const Array& params, bool fHelp) +UniValue z_getnewaddress(const UniValue& params, bool fHelp) { if (!EnsureWalletIsAvailable(fHelp)) - return Value::null; + return NullUniValue; if (fHelp || params.size() > 0) throw runtime_error( @@ -3141,10 +3207,10 @@ Value z_getnewaddress(const Array& params, bool fHelp) } -Value z_listaddresses(const Array& params, bool fHelp) +UniValue z_listaddresses(const UniValue& params, bool fHelp) { if (!EnsureWalletIsAvailable(fHelp)) - return Value::null; + return NullUniValue; if (fHelp || params.size() > 1) throw runtime_error( @@ -3163,7 +3229,7 @@ Value z_listaddresses(const Array& params, bool fHelp) LOCK2(cs_main, pwalletMain->cs_wallet); - Array ret; + UniValue ret(UniValue::VARR); std::set addresses; pwalletMain->GetPaymentAddresses(addresses); for (auto addr : addresses ) { @@ -3223,10 +3289,10 @@ CAmount getBalanceZaddr(std::string address, int minDepth = 1) { } -Value z_listreceivedbyaddress(const Array& params, bool fHelp) +UniValue z_listreceivedbyaddress(const UniValue& params, bool fHelp) { if (!EnsureWalletIsAvailable(fHelp)) - return Value::null; + return NullUniValue; if (fHelp || params.size()==0 || params.size() >2) throw runtime_error( @@ -3269,11 +3335,11 @@ Value z_listreceivedbyaddress(const Array& params, bool fHelp) } - Array result; + UniValue result(UniValue::VARR); std::vector entries; pwalletMain->GetFilteredNotes(entries, fromaddress, nMinDepth, false); for (CNotePlaintextEntry & entry : entries) { - Object obj; + UniValue obj(UniValue::VOBJ); obj.push_back(Pair("txid",entry.jsop.hash.ToString())); obj.push_back(Pair("amount", ValueFromAmount(CAmount(entry.plaintext.value)))); std::string data(entry.plaintext.memo.begin(), entry.plaintext.memo.end()); @@ -3284,10 +3350,10 @@ Value z_listreceivedbyaddress(const Array& params, bool fHelp) } -Value z_getbalance(const Array& params, bool fHelp) +UniValue z_getbalance(const UniValue& params, bool fHelp) { if (!EnsureWalletIsAvailable(fHelp)) - return Value::null; + return NullUniValue; if (fHelp || params.size()==0 || params.size() >2) throw runtime_error( @@ -3346,10 +3412,10 @@ Value z_getbalance(const Array& params, bool fHelp) } -Value z_gettotalbalance(const Array& params, bool fHelp) +UniValue z_gettotalbalance(const UniValue& params, bool fHelp) { if (!EnsureWalletIsAvailable(fHelp)) - return Value::null; + return NullUniValue; if (fHelp || params.size() > 1) throw runtime_error( @@ -3390,18 +3456,18 @@ Value z_gettotalbalance(const Array& params, bool fHelp) CAmount nPrivateBalance = getBalanceZaddr("", nMinDepth); uint64_t interest = komodo_interestsum(); CAmount nTotalBalance = nBalance + nPrivateBalance + interest; - Object result; - result.push_back(Pair("transparent", FormatMoney(nBalance, false))); - result.push_back(Pair("interest", FormatMoney(interest, false))); - result.push_back(Pair("private", FormatMoney(nPrivateBalance, false))); - result.push_back(Pair("total", FormatMoney(nTotalBalance, false))); + UniValue result(UniValue::VOBJ); + result.push_back(Pair("transparent", FormatMoney(nBalance))); + result.push_back(Pair("interest", FormatMoney(interest))); + result.push_back(Pair("private", FormatMoney(nPrivateBalance))); + result.push_back(Pair("total", FormatMoney(nTotalBalance))); return result; } -Value z_getoperationresult(const Array& params, bool fHelp) +UniValue z_getoperationresult(const UniValue& params, bool fHelp) { if (!EnsureWalletIsAvailable(fHelp)) - return Value::null; + return NullUniValue; if (fHelp || params.size() > 1) throw runtime_error( @@ -3418,10 +3484,10 @@ Value z_getoperationresult(const Array& params, bool fHelp) return z_getoperationstatus_IMPL(params, true); } -Value z_getoperationstatus(const Array& params, bool fHelp) +UniValue z_getoperationstatus(const UniValue& params, bool fHelp) { if (!EnsureWalletIsAvailable(fHelp)) - return Value::null; + return NullUniValue; if (fHelp || params.size() > 1) throw runtime_error( @@ -3438,20 +3504,20 @@ Value z_getoperationstatus(const Array& params, bool fHelp) return z_getoperationstatus_IMPL(params, false); } -Value z_getoperationstatus_IMPL(const Array& params, bool fRemoveFinishedOperations=false) +UniValue z_getoperationstatus_IMPL(const UniValue& params, bool fRemoveFinishedOperations=false) { LOCK2(cs_main, pwalletMain->cs_wallet); std::set filter; if (params.size()==1) { - Array ids = params[0].get_array(); - for (Value & v : ids) { + UniValue ids = params[0].get_array(); + for (const UniValue & v : ids.getValues()) { filter.insert(v.get_str()); } } bool useFilter = (filter.size()>0); - Array ret; + UniValue ret(UniValue::VARR); std::shared_ptr q = getAsyncRPCQueue(); std::vector ids = q->getAllOperationIds(); @@ -3465,27 +3531,33 @@ Value z_getoperationstatus_IMPL(const Array& params, bool fRemoveFinishedOperati // It's possible that the operation was removed from the internal queue and map during this loop // throw JSONRPCError(RPC_INVALID_PARAMETER, "No operation exists for that id."); } - - Value status = operation->getStatus(); + UniValue obj = operation->getStatus(); + std::string s = obj["status"].get_str(); if (fRemoveFinishedOperations) { // Caller is only interested in retrieving finished results - if (operation->isSuccess() || operation->isFailed() || operation->isCancelled()) { - ret.push_back(status); + if ("success"==s || "failed"==s || "cancelled"==s) { + ret.push_back(obj); q->popOperationForId(id); } } else { - ret.push_back(status); + ret.push_back(obj); } } + std::vector arrTmp = ret.getValues(); + // sort results chronologically by creation_time - std::sort(ret.begin(), ret.end(), [](Value a, Value b) -> bool { + std::sort(arrTmp.begin(), arrTmp.end(), [](UniValue a, UniValue b) -> bool { const int64_t t1 = find_value(a.get_obj(), "creation_time").get_int64(); const int64_t t2 = find_value(b.get_obj(), "creation_time").get_int64(); return t1 < t2; }); + ret.clear(); + ret.setArray(); + ret.push_backV(arrTmp); + return ret; } @@ -3500,10 +3572,10 @@ Value z_getoperationstatus_IMPL(const Array& params, bool fRemoveFinishedOperati #define CTXIN_SPEND_DUST_SIZE 148 #define CTXOUT_REGULAR_SIZE 34 -Value z_sendmany(const Array& params, bool fHelp) +UniValue z_sendmany(const UniValue& params, bool fHelp) { if (!EnsureWalletIsAvailable(fHelp)) - return Value::null; + return NullUniValue; if (fHelp || params.size() < 2 || params.size() > 4) throw runtime_error( @@ -3553,7 +3625,7 @@ Value z_sendmany(const Array& params, bool fHelp) } } - Array outputs = params[1].get_array(); + UniValue outputs = params[1].get_array(); if (outputs.size()==0) throw JSONRPCError(RPC_INVALID_PARAMETER, "Invalid parameter, amounts array is empty."); @@ -3566,15 +3638,13 @@ Value z_sendmany(const Array& params, bool fHelp) std::vector zaddrRecipients; CAmount nTotalOut = 0; - BOOST_FOREACH(Value& output, outputs) - { - if (output.type() != obj_type) + for (const UniValue& o : outputs.getValues()) { + if (!o.isObject()) throw JSONRPCError(RPC_INVALID_PARAMETER, "Invalid parameter, expected object"); - const Object& o = output.get_obj(); // sanity check, report error if unknown key-value pairs - for (const Pair& p : o) { - std::string s = p.name_; + for (const string& name_ : o.getKeys()) { + std::string s = name_; if (s != "address" && s != "amount" && s!="memo") throw JSONRPCError(RPC_INVALID_PARAMETER, string("Invalid parameter, unknown key: ")+s); } @@ -3596,9 +3666,9 @@ Value z_sendmany(const Array& params, bool fHelp) throw JSONRPCError(RPC_INVALID_PARAMETER, string("Invalid parameter, duplicated address: ")+address); setAddress.insert(address); - Value memoValue = find_value(o, "memo"); + UniValue memoValue = find_value(o, "memo"); string memo; - if (!memoValue.is_null()) { + if (!memoValue.isNull()) { memo = memoValue.get_str(); if (!isZaddr) { throw JSONRPCError(RPC_INVALID_PARAMETER, "Memo can not be used with a taddr. It can only be used with a zaddr."); @@ -3610,7 +3680,7 @@ Value z_sendmany(const Array& params, bool fHelp) } } - Value av = find_value(o, "amount"); + UniValue av = find_value(o, "amount"); CAmount nAmount = AmountFromValue( av ); if (nAmount < 0) throw JSONRPCError(RPC_INVALID_PARAMETER, "Invalid parameter, amount must be positive"); @@ -3660,7 +3730,12 @@ Value z_sendmany(const Array& params, bool fHelp) // Fee in Zatoshis, not currency format) CAmount nFee = ASYNC_RPC_OPERATION_DEFAULT_MINERS_FEE; if (params.size() > 3) { - nFee = AmountFromValue( params[3] ); + if (params[3].get_real() == 0.0) { + nFee = 0; + } else { + nFee = AmountFromValue( params[3] ); + } + // Check that the user specified fee is sane. if (nFee > nTotalOut) { throw JSONRPCError(RPC_INVALID_PARAMETER, strprintf("Fee %s is greater than the sum of outputs %s", FormatMoney(nFee), FormatMoney(nTotalOut))); @@ -3668,12 +3743,12 @@ Value z_sendmany(const Array& params, bool fHelp) } // Use input parameters as the optional context info to be returned by z_getoperationstatus and z_getoperationresult. - Object o; + UniValue o(UniValue::VOBJ); o.push_back(Pair("fromaddress", params[0])); o.push_back(Pair("amounts", params[1])); o.push_back(Pair("minconf", nMinDepth)); o.push_back(Pair("fee", std::stod(FormatMoney(nFee)))); - Value contextInfo = Value(o); + UniValue contextInfo = o; // Create operation and add to global queue std::shared_ptr q = getAsyncRPCQueue(); @@ -3684,10 +3759,10 @@ Value z_sendmany(const Array& params, bool fHelp) } -Value z_listoperationids(const Array& params, bool fHelp) +UniValue z_listoperationids(const UniValue& params, bool fHelp) { if (!EnsureWalletIsAvailable(fHelp)) - return Value::null; + return NullUniValue; if (fHelp || params.size() > 1) throw runtime_error( @@ -3714,7 +3789,7 @@ Value z_listoperationids(const Array& params, bool fHelp) useFilter = true; } - Array ret; + UniValue ret(UniValue::VARR); std::shared_ptr q = getAsyncRPCQueue(); std::vector ids = q->getAllOperationIds(); for (auto id : ids) { @@ -3730,4 +3805,3 @@ Value z_listoperationids(const Array& params, bool fHelp) return ret; } - diff --git a/src/wallet/wallet.cpp b/src/wallet/wallet.cpp index 7fbdb237f..5f78be478 100644 --- a/src/wallet/wallet.cpp +++ b/src/wallet/wallet.cpp @@ -824,13 +824,11 @@ bool CWallet::EncryptWallet(const SecureString& strWalletPassphrase) return false; CKeyingMaterial vMasterKey; - RandAddSeedPerfmon(); vMasterKey.resize(WALLET_CRYPTO_KEY_SIZE); GetRandBytes(&vMasterKey[0], WALLET_CRYPTO_KEY_SIZE); CMasterKey kMasterKey; - RandAddSeedPerfmon(); kMasterKey.vchSalt.resize(WALLET_CRYPTO_SALT_SIZE); GetRandBytes(&kMasterKey.vchSalt[0], WALLET_CRYPTO_SALT_SIZE); @@ -1285,12 +1283,7 @@ mapNoteData_t CWallet::FindMyNotes(const CTransaction& tx) const noteData.insert(std::make_pair(jsoutpt, nd)); } break; - } catch (const std::runtime_error &err) { - if (memcmp("Could not decrypt message", err.what(), 25) != 0) { - // Unexpected failure - LogPrintf("FindMyNotes(): Unexpected runtime error while testing decrypt:\n"); - LogPrintf("%s\n", err.what()); - } // else + } catch (const note_decryption_failed &err) { // Couldn't decrypt with this decryptor } catch (const std::exception &exc) { // Unexpected failure @@ -2463,7 +2456,7 @@ bool CWallet::SelectCoinsMinConf(const CAmount& nTargetValue, int nConfMine, int bool CWallet::SelectCoins(const CAmount& nTargetValue, set >& setCoinsRet, CAmount& nValueRet, bool& fOnlyCoinbaseCoinsRet, bool& fNeedCoinbaseCoinsRet, const CCoinControl* coinControl,uint64_t *interestp) const { // Output parameter fOnlyCoinbaseCoinsRet is set to true when the only available coins are coinbase utxos. - uint64_t tmp,interest = 0; + uint64_t tmp,interest = 0; int32_t retval; if ( interestp == 0 ) { interestp = &tmp; @@ -2502,13 +2495,13 @@ bool CWallet::SelectCoins(const CAmount& nTargetValue, set= nTargetValue); } } - // coin control -> return all selected outputs (we want all to go into the transaction for sure) - if (coinControl && coinControl->HasSelected()) + // coin control -> return all selected outputs (we want all selected to go into the transaction for sure) + if (coinControl && coinControl->HasSelected() && !coinControl->fAllowOtherInputs) { BOOST_FOREACH(const COutput& out, vCoins) { - if(!out.fSpendable) - continue; + if (!out.fSpendable) + continue; nValueRet += out.tx->vout[out.i].nValue; if ( KOMODO_EXCHANGEWALLET == 0 ) *interestp += out.tx->vout[out.i].interest; @@ -2516,30 +2509,119 @@ bool CWallet::SelectCoins(const CAmount& nTargetValue, set= nTargetValue); } -//fprintf(stderr,"nValueRet %8f vs target %.8f\n",(double)nValueRet/COIN,(double)nTargetValue/COIN); - if ( SelectCoinsMinConf(nTargetValue, 1, 6, vCoins, setCoinsRet, nValueRet,&interest) != 0 ) + // calculate value from preset inputs and store them + set > setPresetCoins; + CAmount nValueFromPresetInputs = 0; + + std::vector vPresetInputs; + if (coinControl) + coinControl->ListSelected(vPresetInputs); + BOOST_FOREACH(const COutPoint& outpoint, vPresetInputs) + { + map::const_iterator it = mapWallet.find(outpoint.hash); + if (it != mapWallet.end()) + { + const CWalletTx* pcoin = &it->second; + // Clearly invalid input, fail + if (pcoin->vout.size() <= outpoint.n) + return false; + nValueFromPresetInputs += pcoin->vout[outpoint.n].nValue; + if ( KOMODO_EXCHANGEWALLET == 0 ) + nValueFromPresetInputs += pcoin->vout[outpoint.n].interest; + setPresetCoins.insert(make_pair(pcoin, outpoint.n)); + } else + return false; // TODO: Allow non-wallet inputs + } + + // remove preset inputs from vCoins + for (vector::iterator it = vCoins.begin(); it != vCoins.end() && coinControl && coinControl->HasSelected();) + { + if (setPresetCoins.count(make_pair(it->tx, it->i))) + it = vCoins.erase(it); + else + ++it; + } + retval = false; + if ( nTargetValue <= nValueFromPresetInputs ) + retval = true; + else if ( SelectCoinsMinConf(nTargetValue, 1, 6, vCoins, setCoinsRet, nValueRet,&interest) != 0 ) { *interestp += interest; - return(true); + retval = true; } else if ( SelectCoinsMinConf(nTargetValue, 1, 1, vCoins, setCoinsRet, nValueRet,&interest) != 0 ) { *interestp += interest; - return(true); + retval = true; } else if ( bSpendZeroConfChange && SelectCoinsMinConf(nTargetValue, 0, 1, vCoins, setCoinsRet, nValueRet,&interest) != 0 ) { *interestp += interest; - return(true); + retval = true; } - return(false); + //return (SelectCoinsMinConf(nTargetValue, 1, 6, vCoins, setCoinsRet, nValueRet,interestp) || // SelectCoinsMinConf(nTargetValue, 1, 1, vCoins, setCoinsRet, nValueRet,interestp) || // (bSpendZeroConfChange && SelectCoinsMinConf(nTargetValue, 0, 1, vCoins, setCoinsRet, nValueRet,interestp))); + /*bool res = nTargetValue <= nValueFromPresetInputs || + SelectCoinsMinConf(nTargetValue - nValueFromPresetInputs, 1, 6, vCoins, setCoinsRet, nValueRet) || + SelectCoinsMinConf(nTargetValue - nValueFromPresetInputs, 1, 1, vCoins, setCoinsRet, nValueRet) || + (bSpendZeroConfChange && SelectCoinsMinConf(nTargetValue - nValueFromPresetInputs, 0, 1, vCoins, setCoinsRet, nValueRet));*/ + + // because SelectCoinsMinConf clears the setCoinsRet, we now add the possible inputs to the coinset + setCoinsRet.insert(setPresetCoins.begin(), setPresetCoins.end()); + + // add preset inputs to the total value selected + nValueRet += nValueFromPresetInputs; + + return retval; } -bool CWallet::CreateTransaction(const vector& vecSend, - CWalletTx& wtxNew, CReserveKey& reservekey, CAmount& nFeeRet, int& nChangePosRet, std::string& strFailReason, const CCoinControl* coinControl) +bool CWallet::FundTransaction(CMutableTransaction& tx, CAmount &nFeeRet, int& nChangePosRet, std::string& strFailReason) +{ + vector vecSend; + + // Turn the txout set into a CRecipient vector + BOOST_FOREACH(const CTxOut& txOut, tx.vout) + { + CRecipient recipient = {txOut.scriptPubKey, txOut.nValue, false}; + vecSend.push_back(recipient); + } + + CCoinControl coinControl; + coinControl.fAllowOtherInputs = true; + BOOST_FOREACH(const CTxIn& txin, tx.vin) + coinControl.Select(txin.prevout); + + CReserveKey reservekey(this); + CWalletTx wtx; + if (!CreateTransaction(vecSend, wtx, reservekey, nFeeRet, nChangePosRet, strFailReason, &coinControl, false)) + return false; + + if (nChangePosRet != -1) + tx.vout.insert(tx.vout.begin() + nChangePosRet, wtx.vout[nChangePosRet]); + + // Add new txins (keeping original txin scriptSig/order) + BOOST_FOREACH(const CTxIn& txin, wtx.vin) + { + bool found = false; + BOOST_FOREACH(const CTxIn& origTxIn, tx.vin) + { + if (txin.prevout.hash == origTxIn.prevout.hash && txin.prevout.n == origTxIn.prevout.n) + { + found = true; + break; + } + } + if (!found) + tx.vin.push_back(txin); + } + + return true; +} + +bool CWallet::CreateTransaction(const vector& vecSend, CWalletTx& wtxNew, CReserveKey& reservekey, CAmount& nFeeRet, + int& nChangePosRet, std::string& strFailReason, const CCoinControl* coinControl, bool sign) { uint64_t interest2,interest = 0; CAmount nValue = 0; unsigned int nSubtractFeeFromAmount = 0; BOOST_FOREACH (const CRecipient& recipient, vecSend) @@ -2774,23 +2856,43 @@ fprintf(stderr,"wallet change %.8f (%.8f - %.8f) interest %.8f interest2 %.8f to // Sign int nIn = 0; + CTransaction txNewConst(txNew); BOOST_FOREACH(const PAIRTYPE(const CWalletTx*,unsigned int)& coin, setCoins) - if (!SignSignature(*this, *coin.first, txNew, nIn++)) + { + bool signSuccess; + const CScript& scriptPubKey = coin.first->vout[coin.second].scriptPubKey; + CScript& scriptSigRes = txNew.vin[nIn].scriptSig; + if (sign) + signSuccess = ProduceSignature(TransactionSignatureCreator(this, &txNewConst, nIn, SIGHASH_ALL), scriptPubKey, scriptSigRes); + else + signSuccess = ProduceSignature(DummySignatureCreator(this), scriptPubKey, scriptSigRes); + + if (!signSuccess) { strFailReason = _("Signing transaction failed"); return false; } + nIn++; + } + + unsigned int nBytes = ::GetSerializeSize(txNew, SER_NETWORK, PROTOCOL_VERSION); + + // Remove scriptSigs if we used dummy signatures for fee calculation + if (!sign) { + BOOST_FOREACH (CTxIn& vin, txNew.vin) + vin.scriptSig = CScript(); + } // Embed the constructed transaction data in wtxNew. *static_cast(&wtxNew) = CTransaction(txNew); // Limit size - unsigned int nBytes = ::GetSerializeSize(*(CTransaction*)&wtxNew, SER_NETWORK, PROTOCOL_VERSION); if (nBytes >= MAX_TX_SIZE) { strFailReason = _("Transaction too large"); return false; } + dPriority = wtxNew.ComputePriority(dPriority, nBytes); // Can we complete this as a free transaction? @@ -3289,7 +3391,7 @@ set< set > CWallet::GetAddressGroupings() return ret; } -set CWallet::GetAccountAddresses(string strAccount) const +std::set CWallet::GetAccountAddresses(const std::string& strAccount) const { LOCK(cs_wallet); set result; @@ -3699,9 +3801,12 @@ void CWallet::GetFilteredNotes(std::vector & outEntries, st outEntries.push_back(CNotePlaintextEntry{jsop, plaintext}); - } catch (const std::exception &) { + } catch (const note_decryption_failed &err) { // Couldn't decrypt with this spending key throw std::runtime_error(strprintf("Could not decrypt note for payment address %s", CZCPaymentAddress(pa).ToString())); + } catch (const std::exception &exc) { + // Unexpected failure + throw std::runtime_error(strprintf("Error while decrypting note for payment address %s: %s", CZCPaymentAddress(pa).ToString(), exc.what())); } } } diff --git a/src/wallet/wallet.h b/src/wallet/wallet.h index c790198df..ccba41065 100644 --- a/src/wallet/wallet.h +++ b/src/wallet/wallet.h @@ -713,7 +713,7 @@ public: SetNull(); } - CWallet(std::string strWalletFileIn) + CWallet(const std::string& strWalletFileIn) { SetNull(); @@ -917,8 +917,9 @@ public: CAmount GetWatchOnlyBalance() const; CAmount GetUnconfirmedWatchOnlyBalance() const; CAmount GetImmatureWatchOnlyBalance() const; - bool CreateTransaction(const std::vector& vecSend, - CWalletTx& wtxNew, CReserveKey& reservekey, CAmount& nFeeRet, int& nChangePosRet, std::string& strFailReason, const CCoinControl *coinControl = NULL); + bool FundTransaction(CMutableTransaction& tx, CAmount& nFeeRet, int& nChangePosRet, std::string& strFailReason); + bool CreateTransaction(const std::vector& vecSend, CWalletTx& wtxNew, CReserveKey& reservekey, CAmount& nFeeRet, int& nChangePosRet, + std::string& strFailReason, const CCoinControl *coinControl = NULL, bool sign = true); bool CommitTransaction(CWalletTx& wtxNew, CReserveKey& reservekey); static CFeeRate minTxFee; @@ -936,7 +937,7 @@ public: std::set< std::set > GetAddressGroupings(); std::map GetAddressBalances(); - std::set GetAccountAddresses(std::string strAccount) const; + std::set GetAccountAddresses(const std::string& strAccount) const; boost::optional GetNoteNullifier( const JSDescription& jsdesc, @@ -1064,7 +1065,7 @@ public: } void ReturnKey(); - bool GetReservedKey(CPubKey &pubkey); + virtual bool GetReservedKey(CPubKey &pubkey); void KeepKey(); }; diff --git a/src/zcash/NoteEncryption.cpp b/src/zcash/NoteEncryption.cpp index 101023fad..a5ea2da15 100644 --- a/src/zcash/NoteEncryption.cpp +++ b/src/zcash/NoteEncryption.cpp @@ -129,7 +129,7 @@ typename NoteDecryption::Plaintext NoteDecryption::decrypt NULL, 0, cipher_nonce, K) != 0) { - throw std::runtime_error("Could not decrypt message"); + throw note_decryption_failed(); } return plaintext; diff --git a/src/zcash/NoteEncryption.hpp b/src/zcash/NoteEncryption.hpp index e1f3718b0..11346ebc1 100644 --- a/src/zcash/NoteEncryption.hpp +++ b/src/zcash/NoteEncryption.hpp @@ -82,6 +82,11 @@ public: uint256 random_uint256(); uint252 random_uint252(); +class note_decryption_failed : public std::runtime_error { +public: + note_decryption_failed() : std::runtime_error("Could not decrypt message") { } +}; + } typedef libzcash::NoteEncryption ZCNoteEncryption; diff --git a/src/zcbenchmarks.cpp b/src/zcbenchmarks.cpp index e6f8440ac..14eabebff 100644 --- a/src/zcbenchmarks.cpp +++ b/src/zcbenchmarks.cpp @@ -126,6 +126,7 @@ double benchmark_verify_joinsplit(const JSDescription &joinsplit) return timer_stop(tv_start); } +#ifdef ENABLE_MINING double benchmark_solve_equihash() { CBlock pblock; @@ -173,6 +174,7 @@ std::vector benchmark_solve_equihash_threaded(int nThreads) } return ret; } +#endif // ENABLE_MINING double benchmark_verify_equihash() { diff --git a/src/zmq/zmqabstractnotifier.cpp b/src/zmq/zmqabstractnotifier.cpp new file mode 100644 index 000000000..9f5cb3ba6 --- /dev/null +++ b/src/zmq/zmqabstractnotifier.cpp @@ -0,0 +1,22 @@ +// Copyright (c) 2015 The Bitcoin Core developers +// Distributed under the MIT software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + +#include "zmqabstractnotifier.h" +#include "util.h" + + +CZMQAbstractNotifier::~CZMQAbstractNotifier() +{ + assert(!psocket); +} + +bool CZMQAbstractNotifier::NotifyBlock(const CBlockIndex * /*CBlockIndex*/) +{ + return true; +} + +bool CZMQAbstractNotifier::NotifyTransaction(const CTransaction &/*transaction*/) +{ + return true; +} diff --git a/src/zmq/zmqabstractnotifier.h b/src/zmq/zmqabstractnotifier.h new file mode 100644 index 000000000..77cf5141e --- /dev/null +++ b/src/zmq/zmqabstractnotifier.h @@ -0,0 +1,44 @@ +// Copyright (c) 2015 The Bitcoin Core developers +// Distributed under the MIT software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + +#ifndef BITCOIN_ZMQ_ZMQABSTRACTNOTIFIER_H +#define BITCOIN_ZMQ_ZMQABSTRACTNOTIFIER_H + +#include "zmqconfig.h" + +class CBlockIndex; +class CZMQAbstractNotifier; + +typedef CZMQAbstractNotifier* (*CZMQNotifierFactory)(); + +class CZMQAbstractNotifier +{ +public: + CZMQAbstractNotifier() : psocket(0) { } + virtual ~CZMQAbstractNotifier(); + + template + static CZMQAbstractNotifier* Create() + { + return new T(); + } + + std::string GetType() const { return type; } + void SetType(const std::string &t) { type = t; } + std::string GetAddress() const { return address; } + void SetAddress(const std::string &a) { address = a; } + + virtual bool Initialize(void *pcontext) = 0; + virtual void Shutdown() = 0; + + virtual bool NotifyBlock(const CBlockIndex *pindex); + virtual bool NotifyTransaction(const CTransaction &transaction); + +protected: + void *psocket; + std::string type; + std::string address; +}; + +#endif // BITCOIN_ZMQ_ZMQABSTRACTNOTIFIER_H diff --git a/src/zmq/zmqconfig.h b/src/zmq/zmqconfig.h new file mode 100644 index 000000000..6057f5d1a --- /dev/null +++ b/src/zmq/zmqconfig.h @@ -0,0 +1,24 @@ +// Copyright (c) 2015 The Bitcoin Core developers +// Distributed under the MIT software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + +#ifndef BITCOIN_ZMQ_ZMQCONFIG_H +#define BITCOIN_ZMQ_ZMQCONFIG_H + +#if defined(HAVE_CONFIG_H) +#include "config/bitcoin-config.h" +#endif + +#include +#include + +#if ENABLE_ZMQ +#include +#endif + +#include "primitives/block.h" +#include "primitives/transaction.h" + +void zmqError(const char *str); + +#endif // BITCOIN_ZMQ_ZMQCONFIG_H diff --git a/src/zmq/zmqnotificationinterface.cpp b/src/zmq/zmqnotificationinterface.cpp new file mode 100644 index 000000000..4df7550d4 --- /dev/null +++ b/src/zmq/zmqnotificationinterface.cpp @@ -0,0 +1,159 @@ +// Copyright (c) 2015 The Bitcoin Core developers +// Distributed under the MIT software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + +#include "zmqnotificationinterface.h" +#include "zmqpublishnotifier.h" + +#include "version.h" +#include "main.h" +#include "streams.h" +#include "util.h" + +void zmqError(const char *str) +{ + LogPrint("zmq", "zmq: Error: %s, errno=%s\n", str, zmq_strerror(errno)); +} + +CZMQNotificationInterface::CZMQNotificationInterface() : pcontext(NULL) +{ +} + +CZMQNotificationInterface::~CZMQNotificationInterface() +{ + Shutdown(); + + for (std::list::iterator i=notifiers.begin(); i!=notifiers.end(); ++i) + { + delete *i; + } +} + +CZMQNotificationInterface* CZMQNotificationInterface::CreateWithArguments(const std::map &args) +{ + CZMQNotificationInterface* notificationInterface = NULL; + std::map factories; + std::list notifiers; + + factories["pubhashblock"] = CZMQAbstractNotifier::Create; + factories["pubhashtx"] = CZMQAbstractNotifier::Create; + factories["pubrawblock"] = CZMQAbstractNotifier::Create; + factories["pubrawtx"] = CZMQAbstractNotifier::Create; + + for (std::map::const_iterator i=factories.begin(); i!=factories.end(); ++i) + { + std::map::const_iterator j = args.find("-zmq" + i->first); + if (j!=args.end()) + { + CZMQNotifierFactory factory = i->second; + std::string address = j->second; + CZMQAbstractNotifier *notifier = factory(); + notifier->SetType(i->first); + notifier->SetAddress(address); + notifiers.push_back(notifier); + } + } + + if (!notifiers.empty()) + { + notificationInterface = new CZMQNotificationInterface(); + notificationInterface->notifiers = notifiers; + + if (!notificationInterface->Initialize()) + { + delete notificationInterface; + notificationInterface = NULL; + } + } + + return notificationInterface; +} + +// Called at startup to conditionally set up ZMQ socket(s) +bool CZMQNotificationInterface::Initialize() +{ + LogPrint("zmq", "zmq: Initialize notification interface\n"); + assert(!pcontext); + + pcontext = zmq_init(1); + + if (!pcontext) + { + zmqError("Unable to initialize context"); + return false; + } + + std::list::iterator i=notifiers.begin(); + for (; i!=notifiers.end(); ++i) + { + CZMQAbstractNotifier *notifier = *i; + if (notifier->Initialize(pcontext)) + { + LogPrint("zmq", " Notifier %s ready (address = %s)\n", notifier->GetType(), notifier->GetAddress()); + } + else + { + LogPrint("zmq", " Notifier %s failed (address = %s)\n", notifier->GetType(), notifier->GetAddress()); + break; + } + } + + if (i!=notifiers.end()) + { + return false; + } + + return true; +} + +// Called during shutdown sequence +void CZMQNotificationInterface::Shutdown() +{ + LogPrint("zmq", "zmq: Shutdown notification interface\n"); + if (pcontext) + { + for (std::list::iterator i=notifiers.begin(); i!=notifiers.end(); ++i) + { + CZMQAbstractNotifier *notifier = *i; + LogPrint("zmq", " Shutdown notifier %s at %s\n", notifier->GetType(), notifier->GetAddress()); + notifier->Shutdown(); + } + zmq_ctx_destroy(pcontext); + + pcontext = 0; + } +} + +void CZMQNotificationInterface::UpdatedBlockTip(const CBlockIndex *pindex) +{ + for (std::list::iterator i = notifiers.begin(); i!=notifiers.end(); ) + { + CZMQAbstractNotifier *notifier = *i; + if (notifier->NotifyBlock(pindex)) + { + i++; + } + else + { + notifier->Shutdown(); + i = notifiers.erase(i); + } + } +} + +void CZMQNotificationInterface::SyncTransaction(const CTransaction &tx, const CBlock *pblock) +{ + for (std::list::iterator i = notifiers.begin(); i!=notifiers.end(); ) + { + CZMQAbstractNotifier *notifier = *i; + if (notifier->NotifyTransaction(tx)) + { + i++; + } + else + { + notifier->Shutdown(); + i = notifiers.erase(i); + } + } +} diff --git a/src/zmq/zmqnotificationinterface.h b/src/zmq/zmqnotificationinterface.h new file mode 100644 index 000000000..3ccfaf341 --- /dev/null +++ b/src/zmq/zmqnotificationinterface.h @@ -0,0 +1,37 @@ +// Copyright (c) 2015 The Bitcoin Core developers +// Distributed under the MIT software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + +#ifndef BITCOIN_ZMQ_ZMQNOTIFICATIONINTERFACE_H +#define BITCOIN_ZMQ_ZMQNOTIFICATIONINTERFACE_H + +#include "validationinterface.h" +#include +#include + +class CBlockIndex; +class CZMQAbstractNotifier; + +class CZMQNotificationInterface : public CValidationInterface +{ +public: + virtual ~CZMQNotificationInterface(); + + static CZMQNotificationInterface* CreateWithArguments(const std::map &args); + +protected: + bool Initialize(); + void Shutdown(); + + // CValidationInterface + void SyncTransaction(const CTransaction &tx, const CBlock *pblock); + void UpdatedBlockTip(const CBlockIndex *pindex); + +private: + CZMQNotificationInterface(); + + void *pcontext; + std::list notifiers; +}; + +#endif // BITCOIN_ZMQ_ZMQNOTIFICATIONINTERFACE_H diff --git a/src/zmq/zmqpublishnotifier.cpp b/src/zmq/zmqpublishnotifier.cpp new file mode 100644 index 000000000..75a2523e7 --- /dev/null +++ b/src/zmq/zmqpublishnotifier.cpp @@ -0,0 +1,189 @@ +// Copyright (c) 2015 The Bitcoin Core developers +// Distributed under the MIT software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + +#include "zmqpublishnotifier.h" +#include "main.h" +#include "util.h" + +static std::multimap mapPublishNotifiers; + +static const char *MSG_HASHBLOCK = "hashblock"; +static const char *MSG_HASHTX = "hashtx"; +static const char *MSG_RAWBLOCK = "rawblock"; +static const char *MSG_RAWTX = "rawtx"; + +// Internal function to send multipart message +static int zmq_send_multipart(void *sock, const void* data, size_t size, ...) +{ + va_list args; + va_start(args, size); + + while (1) + { + zmq_msg_t msg; + + int rc = zmq_msg_init_size(&msg, size); + if (rc != 0) + { + zmqError("Unable to initialize ZMQ msg"); + return -1; + } + + void *buf = zmq_msg_data(&msg); + memcpy(buf, data, size); + + data = va_arg(args, const void*); + + rc = zmq_msg_send(&msg, sock, data ? ZMQ_SNDMORE : 0); + if (rc == -1) + { + zmqError("Unable to send ZMQ msg"); + zmq_msg_close(&msg); + return -1; + } + + zmq_msg_close(&msg); + + if (!data) + break; + + size = va_arg(args, size_t); + } + return 0; +} + +bool CZMQAbstractPublishNotifier::Initialize(void *pcontext) +{ + assert(!psocket); + + // check if address is being used by other publish notifier + std::multimap::iterator i = mapPublishNotifiers.find(address); + + if (i==mapPublishNotifiers.end()) + { + psocket = zmq_socket(pcontext, ZMQ_PUB); + if (!psocket) + { + zmqError("Failed to create socket"); + return false; + } + + int rc = zmq_bind(psocket, address.c_str()); + if (rc!=0) + { + zmqError("Failed to bind address"); + zmq_close(psocket); + return false; + } + + // register this notifier for the address, so it can be reused for other publish notifier + mapPublishNotifiers.insert(std::make_pair(address, this)); + return true; + } + else + { + LogPrint("zmq", "zmq: Reusing socket for address %s\n", address); + + psocket = i->second->psocket; + mapPublishNotifiers.insert(std::make_pair(address, this)); + + return true; + } +} + +void CZMQAbstractPublishNotifier::Shutdown() +{ + assert(psocket); + + int count = mapPublishNotifiers.count(address); + + // remove this notifier from the list of publishers using this address + typedef std::multimap::iterator iterator; + std::pair iterpair = mapPublishNotifiers.equal_range(address); + + for (iterator it = iterpair.first; it != iterpair.second; ++it) + { + if (it->second==this) + { + mapPublishNotifiers.erase(it); + break; + } + } + + if (count == 1) + { + LogPrint("zmq", "Close socket at address %s\n", address); + int linger = 0; + zmq_setsockopt(psocket, ZMQ_LINGER, &linger, sizeof(linger)); + zmq_close(psocket); + } + + psocket = 0; +} + +bool CZMQAbstractPublishNotifier::SendMessage(const char *command, const void* data, size_t size) +{ + assert(psocket); + + /* send three parts, command & data & a LE 4byte sequence number */ + unsigned char msgseq[sizeof(uint32_t)]; + WriteLE32(&msgseq[0], nSequence); + int rc = zmq_send_multipart(psocket, command, strlen(command), data, size, msgseq, (size_t)sizeof(uint32_t), (void*)0); + if (rc == -1) + return false; + + /* increment memory only sequence number after sending */ + nSequence++; + + return true; +} + +bool CZMQPublishHashBlockNotifier::NotifyBlock(const CBlockIndex *pindex) +{ + uint256 hash = pindex->GetBlockHash(); + LogPrint("zmq", "zmq: Publish hashblock %s\n", hash.GetHex()); + char data[32]; + for (unsigned int i = 0; i < 32; i++) + data[31 - i] = hash.begin()[i]; + return SendMessage(MSG_HASHBLOCK, data, 32); +} + +bool CZMQPublishHashTransactionNotifier::NotifyTransaction(const CTransaction &transaction) +{ + uint256 hash = transaction.GetHash(); + LogPrint("zmq", "zmq: Publish hashtx %s\n", hash.GetHex()); + char data[32]; + for (unsigned int i = 0; i < 32; i++) + data[31 - i] = hash.begin()[i]; + return SendMessage(MSG_HASHTX, data, 32); +} + +bool CZMQPublishRawBlockNotifier::NotifyBlock(const CBlockIndex *pindex) +{ + LogPrint("zmq", "zmq: Publish rawblock %s\n", pindex->GetBlockHash().GetHex()); + + CDataStream ss(SER_NETWORK, PROTOCOL_VERSION); + { + LOCK(cs_main); + CBlock block; + if(!ReadBlockFromDisk(block, pindex)) + { + zmqError("Can't read block from disk"); + return false; + } + + ss << block; + } + + return SendMessage(MSG_RAWBLOCK, &(*ss.begin()), ss.size()); +} + +bool CZMQPublishRawTransactionNotifier::NotifyTransaction(const CTransaction &transaction) +{ + uint256 hash = transaction.GetHash(); + LogPrint("zmq", "zmq: Publish rawtx %s\n", hash.GetHex()); + CDataStream ss(SER_NETWORK, PROTOCOL_VERSION); + ss << transaction; + return SendMessage(MSG_RAWTX, &(*ss.begin()), ss.size()); +} diff --git a/src/zmq/zmqpublishnotifier.h b/src/zmq/zmqpublishnotifier.h new file mode 100644 index 000000000..22f02a3d0 --- /dev/null +++ b/src/zmq/zmqpublishnotifier.h @@ -0,0 +1,55 @@ +// Copyright (c) 2015 The Bitcoin Core developers +// Distributed under the MIT software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + +#ifndef BITCOIN_ZMQ_ZMQPUBLISHNOTIFIER_H +#define BITCOIN_ZMQ_ZMQPUBLISHNOTIFIER_H + +#include "zmqabstractnotifier.h" + +class CBlockIndex; + +class CZMQAbstractPublishNotifier : public CZMQAbstractNotifier +{ +private: + uint32_t nSequence; //! upcounting per message sequence number + +public: + + /* send zmq multipart message + parts: + * command + * data + * message sequence number + */ + bool SendMessage(const char *command, const void* data, size_t size); + + bool Initialize(void *pcontext); + void Shutdown(); +}; + +class CZMQPublishHashBlockNotifier : public CZMQAbstractPublishNotifier +{ +public: + bool NotifyBlock(const CBlockIndex *pindex); +}; + +class CZMQPublishHashTransactionNotifier : public CZMQAbstractPublishNotifier +{ +public: + bool NotifyTransaction(const CTransaction &transaction); +}; + +class CZMQPublishRawBlockNotifier : public CZMQAbstractPublishNotifier +{ +public: + bool NotifyBlock(const CBlockIndex *pindex); +}; + +class CZMQPublishRawTransactionNotifier : public CZMQAbstractPublishNotifier +{ +public: + bool NotifyTransaction(const CTransaction &transaction); +}; + +#endif // BITCOIN_ZMQ_ZMQPUBLISHNOTIFIER_H diff --git a/zcutil/build-debian-package.sh b/zcutil/build-debian-package.sh index 55e07e689..8c2d05c3f 100755 --- a/zcutil/build-debian-package.sh +++ b/zcutil/build-debian-package.sh @@ -9,6 +9,7 @@ BUILD_PATH="/tmp/zcbuild" PACKAGE_NAME="zcash" SRC_PATH=`pwd` SRC_DEB=$SRC_PATH/contrib/debian +SRC_DOC=$SRC_PATH/doc umask 022 @@ -45,9 +46,9 @@ cp $SRC_DEB/changelog $DEB_DOC/changelog.Debian cp $SRC_DEB/copyright $DEB_DOC cp -r $SRC_DEB/examples $DEB_DOC # Copy manpages -cp $SRC_DEB/manpages/zcashd.1 $DEB_MAN -cp $SRC_DEB/manpages/zcash-cli.1 $DEB_MAN -cp $SRC_DEB/manpages/zcash-fetch-params.1 $DEB_MAN +cp $SRC_DOC/man/zcashd.1 $DEB_MAN +cp $SRC_DOC/man/zcash-cli.1 $DEB_MAN +cp $SRC_DOC/man/zcash-fetch-params.1 $DEB_MAN # Copy bash completion files cp $SRC_PATH/contrib/bitcoind.bash-completion $DEB_CMP/zcashd cp $SRC_PATH/contrib/bitcoin-cli.bash-completion $DEB_CMP/zcash-cli diff --git a/zcutil/build.sh b/zcutil/build.sh index 0778152ea..2e3837f3a 100755 --- a/zcutil/build.sh +++ b/zcutil/build.sh @@ -33,13 +33,19 @@ Usage: $0 --help Show this help message and exit. -$0 [ --enable-lcov || --disable-tests ] [ MAKEARGS... ] +$0 [ --enable-lcov || --disable-tests ] [ --disable-mining ] [ --disable-rust ] [ MAKEARGS... ] Build Zcash and most of its transitive dependencies from source. MAKEARGS are applied to both dependencies and Zcash itself. If --enable-lcov is passed, Zcash is configured to add coverage instrumentation, thus enabling "make cov" to work. If --disable-tests is passed instead, the Zcash tests are not built. + + If --disable-mining is passed, Zcash is configured to not build any mining + code. It must be passed after the test arguments, if present. + + If --disable-rust is passed, Zcash is configured to not build any Rust language + assets. It must be passed after mining/test arguments, if present. EOF exit 0 fi @@ -62,9 +68,25 @@ then shift fi +# If --disable-mining is the next argument, disable mining code: +MINING_ARG='' +if [ "x${1:-}" = 'x--disable-mining' ] +then + MINING_ARG='--enable-mining=no' + shift +fi + +# If --disable-rust is the next argument, disable Rust code: +RUST_ARG='' +if [ "x${1:-}" = 'x--disable-rust' ] +then + RUST_ARG='--enable-rust=no' + shift +fi + PREFIX="$(pwd)/depends/$BUILD/" -HOST="$HOST" BUILD="$BUILD" "$MAKE" "$@" -C ./depends/ V=1 NO_QT=1 +HOST="$HOST" BUILD="$BUILD" NO_RUST="$RUST_ARG" "$MAKE" "$@" -C ./depends/ V=1 ./autogen.sh -CC="$CC" CXX="$CXX" ./configure --prefix="${PREFIX}" --host="$HOST" --build="$BUILD" --with-gui=no "$HARDENING_ARG" "$LCOV_ARG" "$TEST_ARG" CXXFLAGS='-fwrapv -fno-strict-aliasing -Werror -g -fopenmp' +CC="$CC" CXX="$CXX" ./configure --prefix="${PREFIX}" --host="$HOST" --build="$BUILD" "$RUST_ARG" "$HARDENING_ARG" "$LCOV_ARG" "$TEST_ARG" "$MINING_ARG" CXXFLAGS='-fwrapv -fno-strict-aliasing -Werror -g' "$MAKE" "$@" V=1 diff --git a/zcutil/fetch-params.sh b/zcutil/fetch-params.sh index ac5327ba6..8bb31fc35 100755 --- a/zcutil/fetch-params.sh +++ b/zcutil/fetch-params.sh @@ -28,7 +28,7 @@ function fetch_params { --retry-connrefused --waitretry=3 --timeout=30 \ "$url" - "$SHA256CMD" $SHA256ARGS --check <