mirror of
https://github.com/dashpay/dash.git
synced 2024-12-25 12:02:48 +01:00
more bitcoin->dash fixes
This commit is contained in:
parent
8bd7e1d181
commit
fabca0a428
@ -26,7 +26,7 @@ matrix:
|
|||||||
include:
|
include:
|
||||||
- compiler: ": ARM"
|
- 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"
|
env: HOST=arm-linux-gnueabihf PACKAGES="g++-arm-linux-gnueabihf" DEP_OPTS="NO_QT=1" GOAL="install" BITCOIN_CONFIG="--enable-glibc-back-compat"
|
||||||
- compiler: ": bitcoind"
|
- compiler: ": dashd"
|
||||||
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 CPPFLAGS=-DDEBUG_LOCKORDER"
|
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 CPPFLAGS=-DDEBUG_LOCKORDER"
|
||||||
- compiler: ": No wallet"
|
- 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"
|
env: HOST=x86_64-unknown-linux-gnu DEP_OPTS="NO_WALLET=1" RUN_TESTS=true GOAL="install" BITCOIN_CONFIG="--enable-glibc-back-compat"
|
||||||
@ -55,8 +55,8 @@ script:
|
|||||||
- if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then export CCACHE_READONLY=1; fi
|
- if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then export CCACHE_READONLY=1; fi
|
||||||
- test -n "$USE_SHELL" && eval '"$USE_SHELL" -c "./autogen.sh"' || ./autogen.sh
|
- test -n "$USE_SHELL" && eval '"$USE_SHELL" -c "./autogen.sh"' || ./autogen.sh
|
||||||
- ./configure --cache-file=config.cache $BITCOIN_CONFIG_ALL $BITCOIN_CONFIG || ( cat config.log && false)
|
- ./configure --cache-file=config.cache $BITCOIN_CONFIG_ALL $BITCOIN_CONFIG || ( cat config.log && false)
|
||||||
- make distdir PACKAGE=bitcoin VERSION=$HOST
|
- make distdir PACKAGE=dash VERSION=$HOST
|
||||||
- cd bitcoin-$HOST
|
- cd dash-$HOST
|
||||||
- ./configure --cache-file=../config.cache $BITCOIN_CONFIG_ALL $BITCOIN_CONFIG || ( cat config.log && false)
|
- ./configure --cache-file=../config.cache $BITCOIN_CONFIG_ALL $BITCOIN_CONFIG || ( cat config.log && false)
|
||||||
- make $MAKEJOBS $GOAL || ( echo "Build failure. Verbose build follows." && make $GOAL V=1 ; false )
|
- make $MAKEJOBS $GOAL || ( echo "Build failure. Verbose build follows." && make $GOAL V=1 ; false )
|
||||||
- export LD_LIBRARY_PATH=$TRAVIS_BUILD_DIR/depends/$HOST/lib
|
- export LD_LIBRARY_PATH=$TRAVIS_BUILD_DIR/depends/$HOST/lib
|
||||||
|
@ -356,7 +356,6 @@ SOURCES += src/activemasternode.cpp \
|
|||||||
src/allocators.cpp \
|
src/allocators.cpp \
|
||||||
src/amount.cpp \
|
src/amount.cpp \
|
||||||
src/base58.cpp \
|
src/base58.cpp \
|
||||||
src/bitcoin-tx.cpp \
|
|
||||||
src/bloom.cpp \
|
src/bloom.cpp \
|
||||||
src/chain.cpp \
|
src/chain.cpp \
|
||||||
src/chainparams.cpp \
|
src/chainparams.cpp \
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
# bash programmable completion for bitcoind(1) and bitcoin-cli(1)
|
# bash programmable completion for dashd(1) and dash-cli(1)
|
||||||
# Copyright (c) 2012,2014 Christian von Roques <roques@mti.ag>
|
# Copyright (c) 2012,2014 Christian von Roques <roques@mti.ag>
|
||||||
# Distributed under the MIT/X11 software license, see the accompanying
|
# Distributed under the MIT/X11 software license, see the accompanying
|
||||||
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||||
|
|
||||||
have bitcoind && {
|
have dashd && {
|
||||||
|
|
||||||
# call $bitcoind for RPC
|
# call $dashd for RPC
|
||||||
_bitcoin_rpc() {
|
_dash_rpc() {
|
||||||
# determine already specified args necessary for RPC
|
# determine already specified args necessary for RPC
|
||||||
local rpcargs=()
|
local rpcargs=()
|
||||||
for i in ${COMP_LINE}; do
|
for i in ${COMP_LINE}; do
|
||||||
@ -16,23 +16,23 @@ _bitcoin_rpc() {
|
|||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
$bitcoind "${rpcargs[@]}" "$@"
|
$dashd "${rpcargs[@]}" "$@"
|
||||||
}
|
}
|
||||||
|
|
||||||
# Add bitcoin accounts to COMPREPLY
|
# Add dash accounts to COMPREPLY
|
||||||
_bitcoin_accounts() {
|
_dash_accounts() {
|
||||||
local accounts
|
local accounts
|
||||||
accounts=$(_bitcoin_rpc listaccounts | awk '/".*"/ { a=$1; gsub(/"/, "", a); print a}')
|
accounts=$(_dash_rpc listaccounts | awk '/".*"/ { a=$1; gsub(/"/, "", a); print a}')
|
||||||
COMPREPLY=( "${COMPREPLY[@]}" $( compgen -W "$accounts" -- "$cur" ) )
|
COMPREPLY=( "${COMPREPLY[@]}" $( compgen -W "$accounts" -- "$cur" ) )
|
||||||
}
|
}
|
||||||
|
|
||||||
_bitcoind() {
|
_dashd() {
|
||||||
local cur prev words=() cword
|
local cur prev words=() cword
|
||||||
local bitcoind
|
local dashd
|
||||||
|
|
||||||
# save and use original argument to invoke bitcoind
|
# save and use original argument to invoke dashd
|
||||||
# bitcoind might not be in $PATH
|
# dashd might not be in $PATH
|
||||||
bitcoind="$1"
|
dashd="$1"
|
||||||
|
|
||||||
COMPREPLY=()
|
COMPREPLY=()
|
||||||
_get_comp_words_by_ref -n = cur prev words cword
|
_get_comp_words_by_ref -n = cur prev words cword
|
||||||
@ -53,7 +53,7 @@ _bitcoind() {
|
|||||||
if ((cword > 3)); then
|
if ((cword > 3)); then
|
||||||
case ${words[cword-3]} in
|
case ${words[cword-3]} in
|
||||||
addmultisigaddress)
|
addmultisigaddress)
|
||||||
_bitcoin_accounts
|
_dash_accounts
|
||||||
return 0
|
return 0
|
||||||
;;
|
;;
|
||||||
getbalance|gettxout|importaddress|importprivkey|listreceivedbyaccount|listreceivedbyaddress|listsinceblock)
|
getbalance|gettxout|importaddress|importprivkey|listreceivedbyaccount|listreceivedbyaddress|listsinceblock)
|
||||||
@ -74,7 +74,7 @@ _bitcoind() {
|
|||||||
return 0
|
return 0
|
||||||
;;
|
;;
|
||||||
move|setaccount)
|
move|setaccount)
|
||||||
_bitcoin_accounts
|
_dash_accounts
|
||||||
return 0
|
return 0
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
@ -90,7 +90,7 @@ _bitcoind() {
|
|||||||
return 0
|
return 0
|
||||||
;;
|
;;
|
||||||
getaccountaddress|getaddressesbyaccount|getbalance|getnewaddress|getreceivedbyaccount|listtransactions|move|sendfrom|sendmany)
|
getaccountaddress|getaddressesbyaccount|getbalance|getnewaddress|getreceivedbyaccount|listtransactions|move|sendfrom|sendmany)
|
||||||
_bitcoin_accounts
|
_dash_accounts
|
||||||
return 0
|
return 0
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
@ -114,12 +114,12 @@ _bitcoind() {
|
|||||||
|
|
||||||
# only parse --help if senseful
|
# only parse --help if senseful
|
||||||
if [[ -z "$cur" || "$cur" =~ ^- ]]; then
|
if [[ -z "$cur" || "$cur" =~ ^- ]]; then
|
||||||
helpopts=$($bitcoind --help 2>&1 | awk '$1 ~ /^-/ { sub(/=.*/, "="); print $1 }' )
|
helpopts=$($dashd --help 2>&1 | awk '$1 ~ /^-/ { sub(/=.*/, "="); print $1 }' )
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# only parse help if senseful
|
# only parse help if senseful
|
||||||
if [[ -z "$cur" || "$cur" =~ ^[a-z] ]]; then
|
if [[ -z "$cur" || "$cur" =~ ^[a-z] ]]; then
|
||||||
commands=$(_bitcoin_rpc help 2>/dev/null | awk '$1 ~ /^[a-z]/ { print $1; }')
|
commands=$(_dash_rpc help 2>/dev/null | awk '$1 ~ /^[a-z]/ { print $1; }')
|
||||||
fi
|
fi
|
||||||
|
|
||||||
COMPREPLY=( $( compgen -W "$helpopts $commands" -- "$cur" ) )
|
COMPREPLY=( $( compgen -W "$helpopts $commands" -- "$cur" ) )
|
||||||
@ -133,7 +133,7 @@ _bitcoind() {
|
|||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
complete -F _bitcoind bitcoind bitcoin-cli
|
complete -F _dashd dashd dash-cli
|
||||||
}
|
}
|
||||||
|
|
||||||
# Local variables:
|
# Local variables:
|
@ -1,10 +1,10 @@
|
|||||||
.TH BITCOIN-QT "1" "April 2013" "bitcoin-qt 1"
|
.TH DASH-QT "1" "March 2015" "dash-qt 1"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
bitcoin-qt \- peer-to-peer network based digital currency
|
dash-qt \- peer-to-peer network based digital currency
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
.SS "Usage:"
|
.SS "Usage:"
|
||||||
.IP
|
.IP
|
||||||
bitcoin\-qt [command\-line options]
|
dash\-qt [command\-line options]
|
||||||
.SH OPTIONS
|
.SH OPTIONS
|
||||||
.TP
|
.TP
|
||||||
\-?
|
\-?
|
||||||
@ -14,7 +14,7 @@ This help message
|
|||||||
Specify configuration file (default: dash.conf)
|
Specify configuration file (default: dash.conf)
|
||||||
.TP
|
.TP
|
||||||
\fB\-pid=\fR<file>
|
\fB\-pid=\fR<file>
|
||||||
Specify pid file (default: bitcoind.pid)
|
Specify pid file (default: dashd.pid)
|
||||||
.TP
|
.TP
|
||||||
\fB\-gen\fR
|
\fB\-gen\fR
|
||||||
Generate coins
|
Generate coins
|
||||||
|
@ -1,14 +1,14 @@
|
|||||||
.TH BITCOIND "1" "January 2011" "bitcoind 3.19"
|
.TH DASHD "1" "January 2011" "dashd 3.19"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
bitcoind \- peer-to-peer network based digital currency
|
Dash \- peer-to-peer network based digital currency
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
bitcoin [options] <command> [params]
|
dashd [options] <command> [params]
|
||||||
.TP
|
.TP
|
||||||
bitcoin [options] help <command> \- Get help for a command
|
dashd [options] help <command> \- Get help for a command
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
This manual page documents the bitcoind program. Bitcoin is a peer-to-peer digital currency. Peer-to-peer (P2P) means that there is no central authority to issue new money or keep track of transactions. Instead, these tasks are managed collectively by the nodes of the network. Advantages:
|
This manual page documents the dashd program. Dash is a peer-to-peer digital currency. Peer-to-peer (P2P) means that there is no central authority to issue new money or keep track of transactions. Instead, these tasks are managed collectively by the nodes of the network. Advantages:
|
||||||
|
|
||||||
Bitcoins can be sent easily through the Internet, without having to trust middlemen. Transactions are designed to be irreversible. Be safe from instability caused by fractional reserve banking and central banks. The limited inflation of the Bitcoin system’s money supply is distributed evenly (by CPU power) throughout the network, not monopolized by banks.
|
Dash can be sent easily through the Internet, without having to trust middlemen. Transactions are designed to be irreversible. Be safe from instability caused by fractional reserve banking and central banks. The limited inflation of the Dash system’s money supply is distributed evenly (by CPU power) throughout the network, not monopolized by banks.
|
||||||
|
|
||||||
.SH OPTIONS
|
.SH OPTIONS
|
||||||
.TP
|
.TP
|
||||||
@ -84,14 +84,14 @@ This help message
|
|||||||
\fBbackupwallet 'destination'\fR
|
\fBbackupwallet 'destination'\fR
|
||||||
Safely copies *wallet.dat* to 'destination', which can be a directory or a path with filename.
|
Safely copies *wallet.dat* to 'destination', which can be a directory or a path with filename.
|
||||||
.TP
|
.TP
|
||||||
\fBgetaccount 'bitcoinaddress'\fR
|
\fBgetaccount 'dashaddress'\fR
|
||||||
Returns the account associated with the given address.
|
Returns the account associated with the given address.
|
||||||
.TP
|
.TP
|
||||||
\fBsetaccount 'bitcoinaddress' ['account']\fR
|
\fBsetaccount 'dashaddress' ['account']\fR
|
||||||
Sets the ['account'] associated with the given address. ['account'] may be omitted to remove an address from ['account'].
|
Sets the ['account'] associated with the given address. ['account'] may be omitted to remove an address from ['account'].
|
||||||
.TP
|
.TP
|
||||||
\fBgetaccountaddress 'account'\fR
|
\fBgetaccountaddress 'account'\fR
|
||||||
Returns a new bitcoin address for 'account'.
|
Returns a new dash address for 'account'.
|
||||||
.TP
|
.TP
|
||||||
\fBgetaddressesbyaccount 'account'\fR
|
\fBgetaddressesbyaccount 'account'\fR
|
||||||
Returns the list of addresses associated with the given 'account'.
|
Returns the list of addresses associated with the given 'account'.
|
||||||
@ -112,7 +112,7 @@ Returns the number of connections to other nodes.
|
|||||||
Returns the proof-of-work difficulty as a multiple of the minimum difficulty.
|
Returns the proof-of-work difficulty as a multiple of the minimum difficulty.
|
||||||
.TP
|
.TP
|
||||||
\fBgetgenerate\fR
|
\fBgetgenerate\fR
|
||||||
Returns boolean true if server is trying to generate bitcoins, false otherwise.
|
Returns boolean true if server is trying to generate DASH, false otherwise.
|
||||||
.TP
|
.TP
|
||||||
\fBsetgenerate 'generate' ['genproclimit']\fR
|
\fBsetgenerate 'generate' ['genproclimit']\fR
|
||||||
Generation is limited to ['genproclimit'] processors, \-1 is unlimited.
|
Generation is limited to ['genproclimit'] processors, \-1 is unlimited.
|
||||||
@ -124,13 +124,13 @@ Returns a recent hashes per second performance measurement while generating.
|
|||||||
Returns an object containing server information.
|
Returns an object containing server information.
|
||||||
.TP
|
.TP
|
||||||
\fBgetnewaddress 'account'\fR
|
\fBgetnewaddress 'account'\fR
|
||||||
Returns a new bitcoin address for receiving payments. If 'account' is specified (recommended), it is added to the address book so payments received with the address will be credited to 'account'.
|
Returns a new dash address for receiving payments. If 'account' is specified (recommended), it is added to the address book so payments received with the address will be credited to 'account'.
|
||||||
.TP
|
.TP
|
||||||
\fBgetreceivedbyaccount 'account' ['minconf=1']\fR
|
\fBgetreceivedbyaccount 'account' ['minconf=1']\fR
|
||||||
Returns the total amount received by addresses associated with 'account' in transactions with at least ['minconf'] confirmations.
|
Returns the total amount received by addresses associated with 'account' in transactions with at least ['minconf'] confirmations.
|
||||||
.TP
|
.TP
|
||||||
\fBgetreceivedbyaddress 'bitcoinaddress' ['minconf=1']\fR
|
\fBgetreceivedbyaddress 'dashaddress' ['minconf=1']\fR
|
||||||
Returns the total amount received by 'bitcoinaddress' in transactions with at least ['minconf'] confirmations.
|
Returns the total amount received by 'dashaddress' in transactions with at least ['minconf'] confirmations.
|
||||||
.TP
|
.TP
|
||||||
\fBgettransaction 'txid'\fR
|
\fBgettransaction 'txid'\fR
|
||||||
Returns information about a specific transaction, given hexadecimal transaction ID.
|
Returns information about a specific transaction, given hexadecimal transaction ID.
|
||||||
@ -148,7 +148,7 @@ List commands, or get help for a command.
|
|||||||
.TP
|
.TP
|
||||||
\fBlistaccounts ['minconf=1']\fR
|
\fBlistaccounts ['minconf=1']\fR
|
||||||
List accounts and their current balances.
|
List accounts and their current balances.
|
||||||
*note: requires bitcoin 0.3.20 or later.
|
*note: requires dash 0.3.20 or later.
|
||||||
.TP
|
.TP
|
||||||
\fBlistreceivedbyaccount ['minconf=1'] ['includeempty=false']\fR
|
\fBlistreceivedbyaccount ['minconf=1'] ['includeempty=false']\fR
|
||||||
['minconf'] is the minimum number of confirmations before payments are included. ['includeempty'] whether to include addresses that haven't received any payments. Returns an array of objects containing:
|
['minconf'] is the minimum number of confirmations before payments are included. ['includeempty'] whether to include addresses that haven't received any payments. Returns an array of objects containing:
|
||||||
@ -177,26 +177,26 @@ Returns a list of the last ['count'] transactions for 'account' \- for all accou
|
|||||||
"message" : message associated with transaction (only for send).
|
"message" : message associated with transaction (only for send).
|
||||||
"to" : message-to associated with transaction (only for send).
|
"to" : message-to associated with transaction (only for send).
|
||||||
|
|
||||||
*note: requires bitcoin 0.3.20 or later.
|
*note: requires dash 0.3.20 or later.
|
||||||
.TP
|
.TP
|
||||||
\fBmove <'fromaccount'> <'toaccount'> <'amount'> ['minconf=1'] ['comment']\fR
|
\fBmove <'fromaccount'> <'toaccount'> <'amount'> ['minconf=1'] ['comment']\fR
|
||||||
Moves funds between accounts.
|
Moves funds between accounts.
|
||||||
.TP
|
.TP
|
||||||
\fBsendfrom* <'account'> <'bitcoinaddress'> <'amount'> ['minconf=1'] ['comment'] ['comment-to']\fR
|
\fBsendfrom* <'account'> <'dashaddress'> <'amount'> ['minconf=1'] ['comment'] ['comment-to']\fR
|
||||||
Sends amount from account's balance to 'bitcoinaddress'. This method will fail if there is less than amount bitcoins with ['minconf'] confirmations in the account's balance (unless account is the empty-string-named default account; it behaves like the *sendtoaddress* method). Returns transaction ID on success.
|
Sends amount from account's balance to 'dashaddress'. This method will fail if there is less than amount DASH with ['minconf'] confirmations in the account's balance (unless account is the empty-string-named default account; it behaves like the *sendtoaddress* method). Returns transaction ID on success.
|
||||||
.TP
|
.TP
|
||||||
\fBsendtoaddress 'bitcoinaddress' 'amount' ['comment'] ['comment-to']\fR
|
\fBsendtoaddress 'dashaddress' 'amount' ['comment'] ['comment-to']\fR
|
||||||
Sends amount from the server's available balance to 'bitcoinaddress'. amount is a real and is rounded to the nearest 0.01. Returns transaction id on success.
|
Sends amount from the server's available balance to 'dashaddress'. amount is a real and is rounded to the nearest 0.01. Returns transaction id on success.
|
||||||
.TP
|
.TP
|
||||||
\fBstop\fR
|
\fBstop\fR
|
||||||
Stops the bitcoin server.
|
Stops the dash server.
|
||||||
.TP
|
.TP
|
||||||
\fBvalidateaddress 'bitcoinaddress'\fR
|
\fBvalidateaddress 'dashaddress'\fR
|
||||||
Checks that 'bitcoinaddress' looks like a proper bitcoin address. Returns an object containing:
|
Checks that 'dashaddress' looks like a proper Dash address. Returns an object containing:
|
||||||
|
|
||||||
"isvalid" : true or false.
|
"isvalid" : true or false.
|
||||||
"ismine" : true if the address is in the server's wallet.
|
"ismine" : true if the address is in the server's wallet.
|
||||||
"address" : bitcoinaddress.
|
"address" : dashaddress.
|
||||||
|
|
||||||
*note: ismine and address are only returned if the address is valid.
|
*note: ismine and address are only returned if the address is valid.
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
name: "bitcoin-dmg-signer"
|
name: "dash-dmg-signer"
|
||||||
suites:
|
suites:
|
||||||
- "precise"
|
- "precise"
|
||||||
architectures:
|
architectures:
|
||||||
@ -10,7 +10,7 @@ packages:
|
|||||||
reference_datetime: "2013-06-01 00:00:00"
|
reference_datetime: "2013-06-01 00:00:00"
|
||||||
remotes: []
|
remotes: []
|
||||||
files:
|
files:
|
||||||
- "bitcoin-osx-unsigned.tar.gz"
|
- "dash-osx-unsigned.tar.gz"
|
||||||
- "signature.tar.gz"
|
- "signature.tar.gz"
|
||||||
script: |
|
script: |
|
||||||
WRAP_DIR=$HOME/wrapped
|
WRAP_DIR=$HOME/wrapped
|
||||||
@ -28,10 +28,10 @@ script: |
|
|||||||
chmod +x ${WRAP_DIR}/${prog}
|
chmod +x ${WRAP_DIR}/${prog}
|
||||||
done
|
done
|
||||||
|
|
||||||
UNSIGNED=bitcoin-osx-unsigned.tar.gz
|
UNSIGNED=dash-osx-unsigned.tar.gz
|
||||||
SIGNED=bitcoin-osx-signed.dmg
|
SIGNED=dash-osx-signed.dmg
|
||||||
|
|
||||||
tar -xf ${UNSIGNED}
|
tar -xf ${UNSIGNED}
|
||||||
./detached-sig-apply.sh ${UNSIGNED} signature.tar.gz
|
./detached-sig-apply.sh ${UNSIGNED} signature.tar.gz
|
||||||
${WRAP_DIR}/genisoimage -no-cache-inodes -D -l -probe -V "Bitcoin-Qt" -no-pad -r -apple -o uncompressed.dmg signed-app
|
${WRAP_DIR}/genisoimage -no-cache-inodes -D -l -probe -V "Dash-Qt" -no-pad -r -apple -o uncompressed.dmg signed-app
|
||||||
${WRAP_DIR}/dmg dmg uncompressed.dmg ${OUTDIR}/${SIGNED}
|
${WRAP_DIR}/dmg dmg uncompressed.dmg ${OUTDIR}/${SIGNED}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
name: "bitcoin-osx-0.10"
|
name: "dash-osx-0.12"
|
||||||
enable_cache: true
|
enable_cache: true
|
||||||
suites:
|
suites:
|
||||||
- "precise"
|
- "precise"
|
||||||
@ -20,8 +20,8 @@ packages:
|
|||||||
- "libbz2-dev"
|
- "libbz2-dev"
|
||||||
reference_datetime: "2013-06-01 00:00:00"
|
reference_datetime: "2013-06-01 00:00:00"
|
||||||
remotes:
|
remotes:
|
||||||
- "url": "https://github.com/bitcoin/bitcoin.git"
|
- "url": "https://github.com/dashpay/dash.git"
|
||||||
"dir": "bitcoin"
|
"dir": "dash"
|
||||||
files:
|
files:
|
||||||
- "MacOSX10.7.sdk.tar.gz"
|
- "MacOSX10.7.sdk.tar.gz"
|
||||||
script: |
|
script: |
|
||||||
@ -68,7 +68,7 @@ script: |
|
|||||||
done
|
done
|
||||||
export PATH=${WRAP_DIR}:${PATH}
|
export PATH=${WRAP_DIR}:${PATH}
|
||||||
|
|
||||||
cd bitcoin
|
cd dash
|
||||||
BASEPREFIX=`pwd`/depends
|
BASEPREFIX=`pwd`/depends
|
||||||
|
|
||||||
mkdir -p ${BASEPREFIX}/SDKs
|
mkdir -p ${BASEPREFIX}/SDKs
|
||||||
@ -83,14 +83,14 @@ script: |
|
|||||||
./autogen.sh
|
./autogen.sh
|
||||||
./configure --prefix=${BASEPREFIX}/`echo "${HOSTS}" | awk '{print $1;}'`
|
./configure --prefix=${BASEPREFIX}/`echo "${HOSTS}" | awk '{print $1;}'`
|
||||||
make dist
|
make dist
|
||||||
SOURCEDIST=`echo bitcoin-*.tar.gz`
|
SOURCEDIST=`echo dash-*.tar.gz`
|
||||||
DISTNAME=`echo ${SOURCEDIST} | sed 's/.tar.*//'`
|
DISTNAME=`echo ${SOURCEDIST} | sed 's/.tar.*//'`
|
||||||
|
|
||||||
# Correct tar file order
|
# Correct tar file order
|
||||||
mkdir -p temp
|
mkdir -p temp
|
||||||
pushd temp
|
pushd temp
|
||||||
tar xf ../$SOURCEDIST
|
tar xf ../$SOURCEDIST
|
||||||
find bitcoin-* | sort | tar --no-recursion --mode='u+rw,go+r-w,a+X' --owner=0 --group=0 -c -T - | gzip -9n > ../$SOURCEDIST
|
find dash-* | sort | tar --no-recursion --mode='u+rw,go+r-w,a+X' --owner=0 --group=0 -c -T - | gzip -9n > ../$SOURCEDIST
|
||||||
popd
|
popd
|
||||||
|
|
||||||
ORIGPATH="$PATH"
|
ORIGPATH="$PATH"
|
||||||
@ -120,7 +120,7 @@ script: |
|
|||||||
popd
|
popd
|
||||||
|
|
||||||
make deploy
|
make deploy
|
||||||
${WRAP_DIR}/dmg dmg Bitcoin-Qt.dmg ${OUTDIR}/${DISTNAME}-osx-unsigned.dmg
|
${WRAP_DIR}/dmg dmg Dash-Qt.dmg ${OUTDIR}/${DISTNAME}-osx-unsigned.dmg
|
||||||
|
|
||||||
cd installed
|
cd installed
|
||||||
find . -name "lib*.la" -delete
|
find . -name "lib*.la" -delete
|
||||||
|
@ -65,7 +65,7 @@ script: |
|
|||||||
done
|
done
|
||||||
export PATH=${WRAP_DIR}:${PATH}
|
export PATH=${WRAP_DIR}:${PATH}
|
||||||
|
|
||||||
cd bitcoin
|
cd dash
|
||||||
BASEPREFIX=`pwd`/depends
|
BASEPREFIX=`pwd`/depends
|
||||||
# Build dependencies for each host
|
# Build dependencies for each host
|
||||||
for i in $HOSTS; do
|
for i in $HOSTS; do
|
||||||
@ -83,7 +83,7 @@ script: |
|
|||||||
mkdir -p temp
|
mkdir -p temp
|
||||||
pushd temp
|
pushd temp
|
||||||
tar xf ../$SOURCEDIST
|
tar xf ../$SOURCEDIST
|
||||||
find bitcoin-* | sort | tar --no-recursion --mode='u+rw,go+r-w,a+X' --owner=0 --group=0 -c -T - | gzip -9n > ../$SOURCEDIST
|
find dash-* | sort | tar --no-recursion --mode='u+rw,go+r-w,a+X' --owner=0 --group=0 -c -T - | gzip -9n > ../$SOURCEDIST
|
||||||
popd
|
popd
|
||||||
|
|
||||||
ORIGPATH="$PATH"
|
ORIGPATH="$PATH"
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
Sample configuration files for:
|
Sample configuration files for:
|
||||||
|
|
||||||
SystemD: bitcoind.service
|
SystemD: dashd.service
|
||||||
Upstart: bitcoind.conf
|
Upstart: dashd.conf
|
||||||
OpenRC: bitcoind.openrc
|
OpenRC: dashd.openrc
|
||||||
bitcoind.openrcconf
|
dashd.openrcconf
|
||||||
|
|
||||||
have been made available to assist packagers in creating node packages here.
|
have been made available to assist packagers in creating node packages here.
|
||||||
|
|
||||||
|
@ -1,27 +0,0 @@
|
|||||||
# /etc/conf.d/bitcoind: config file for /etc/init.d/bitcoind
|
|
||||||
|
|
||||||
# Config file location
|
|
||||||
#BITCOIND_CONFIGFILE="/etc/bitcoin/bitcoin.conf"
|
|
||||||
|
|
||||||
# What directory to write pidfile to? (created and owned by $BITCOIND_USER)
|
|
||||||
#BITCOIND_PIDDIR="/var/run/bitcoind"
|
|
||||||
|
|
||||||
# What filename to give the pidfile
|
|
||||||
#BITCOIND_PIDFILE="${BITCOIND_PIDDIR}/bitcoind.pid"
|
|
||||||
|
|
||||||
# Where to write bitcoind data (be mindful that the blockchain is large)
|
|
||||||
#BITCOIND_DATADIR="/var/lib/bitcoind"
|
|
||||||
|
|
||||||
# User and group to own bitcoind process
|
|
||||||
#BITCOIND_USER="bitcoin"
|
|
||||||
#BITCOIND_GROUP="bitcoin"
|
|
||||||
|
|
||||||
# Path to bitcoind executable
|
|
||||||
#BITCOIND_BIN="/usr/bin/bitcoind"
|
|
||||||
|
|
||||||
# Nice value to run bitcoind under
|
|
||||||
#BITCOIND_NICE=0
|
|
||||||
|
|
||||||
# Additional options (avoid -conf and -datadir, use flags above)
|
|
||||||
BITCOIND_OPTS="-disablewallet"
|
|
||||||
|
|
@ -1,22 +0,0 @@
|
|||||||
[Unit]
|
|
||||||
Description=Bitcoin's distributed currency daemon
|
|
||||||
After=network.target
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
User=bitcoin
|
|
||||||
Group=bitcoin
|
|
||||||
|
|
||||||
Type=forking
|
|
||||||
PIDFile=/var/lib/bitcoind/bitcoind.pid
|
|
||||||
ExecStart=/usr/bin/bitcoind -daemon -pid=/var/lib/bitcoind/bitcoind.pid \
|
|
||||||
-conf=/etc/bitcoin/bitcoin.conf -datadir=/var/lib/bitcoind -disablewallet
|
|
||||||
|
|
||||||
Restart=always
|
|
||||||
PrivateTmp=true
|
|
||||||
TimeoutStopSec=60s
|
|
||||||
TimeoutStartSec=2s
|
|
||||||
StartLimitInterval=120s
|
|
||||||
StartLimitBurst=5
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target
|
|
@ -1,16 +1,16 @@
|
|||||||
description "Bitcoin Core Daemon"
|
description "Dash Core Daemon"
|
||||||
|
|
||||||
start on runlevel [2345]
|
start on runlevel [2345]
|
||||||
stop on starting rc RUNLEVEL=[016]
|
stop on starting rc RUNLEVEL=[016]
|
||||||
|
|
||||||
env BITCOIND_BIN="/usr/bin/bitcoind"
|
env BITCOIND_BIN="/usr/bin/dashd"
|
||||||
env BITCOIND_USER="bitcoin"
|
env BITCOIND_USER="dash"
|
||||||
env BITCOIND_GROUP="bitcoin"
|
env BITCOIND_GROUP="dash"
|
||||||
env BITCOIND_PIDDIR="/var/run/bitcoind"
|
env BITCOIND_PIDDIR="/var/run/dashd"
|
||||||
# upstart can't handle variables constructed with other variables
|
# upstart can't handle variables constructed with other variables
|
||||||
env BITCOIND_PIDFILE="/var/run/bitcoind/bitcoind.pid"
|
env BITCOIND_PIDFILE="/var/run/dashd/dashd.pid"
|
||||||
env BITCOIND_CONFIGFILE="/etc/bitcoin/bitcoin.conf"
|
env BITCOIND_CONFIGFILE="/etc/dash/dash.conf"
|
||||||
env BITCOIND_DATADIR="/var/lib/bitcoind"
|
env BITCOIND_DATADIR="/var/lib/dashd"
|
||||||
|
|
||||||
expect fork
|
expect fork
|
||||||
|
|
||||||
@ -20,12 +20,12 @@ kill timeout 60
|
|||||||
|
|
||||||
pre-start script
|
pre-start script
|
||||||
# this will catch non-existent config files
|
# this will catch non-existent config files
|
||||||
# bitcoind will check and exit with this very warning, but it can do so
|
# dashd will check and exit with this very warning, but it can do so
|
||||||
# long after forking, leaving upstart to think everything started fine.
|
# long after forking, leaving upstart to think everything started fine.
|
||||||
# since this is a commonly encountered case on install, just check and
|
# since this is a commonly encountered case on install, just check and
|
||||||
# warn here.
|
# warn here.
|
||||||
if ! grep -qs '^rpcpassword=' "$BITCOIND_CONFIGFILE" ; then
|
if ! grep -qs '^rpcpassword=' "$BITCOIND_CONFIGFILE" ; then
|
||||||
echo "ERROR: You must set a secure rpcpassword to run bitcoind."
|
echo "ERROR: You must set a secure rpcpassword to run dashd."
|
||||||
echo "The setting must appear in $BITCOIND_CONFIGFILE"
|
echo "The setting must appear in $BITCOIND_CONFIGFILE"
|
||||||
echo
|
echo
|
||||||
echo "This password is security critical to securing wallets "
|
echo "This password is security critical to securing wallets "
|
||||||
@ -38,7 +38,7 @@ pre-start script
|
|||||||
echo "It is also recommended that you also set alertnotify so you are "
|
echo "It is also recommended that you also set alertnotify so you are "
|
||||||
echo "notified of problems:"
|
echo "notified of problems:"
|
||||||
echo
|
echo
|
||||||
echo "ie: alertnotify=echo %%s | mail -s \"Bitcoin Alert\"" \
|
echo "ie: alertnotify=echo %%s | mail -s \"Dash Alert\"" \
|
||||||
"admin@foo.com"
|
"admin@foo.com"
|
||||||
echo
|
echo
|
||||||
exit 1
|
exit 1
|
@ -2,24 +2,24 @@
|
|||||||
|
|
||||||
# backward compatibility for existing gentoo layout
|
# backward compatibility for existing gentoo layout
|
||||||
#
|
#
|
||||||
if [ -d "/var/lib/bitcoin/.bitcoin" ]; then
|
if [ -d "/var/lib/dash/.dash" ]; then
|
||||||
BITCOIND_DEFAULT_DATADIR="/var/lib/bitcoin/.bitcoin"
|
BITCOIND_DEFAULT_DATADIR="/var/lib/dash/.dash"
|
||||||
else
|
else
|
||||||
BITCOIND_DEFAULT_DATADIR="/var/lib/bitcoind"
|
BITCOIND_DEFAULT_DATADIR="/var/lib/dashd"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
BITCOIND_CONFIGFILE=${BITCOIND_CONFIGFILE:-/etc/bitcoin/bitcoin.conf}
|
BITCOIND_CONFIGFILE=${BITCOIND_CONFIGFILE:-/etc/dash/dash.conf}
|
||||||
BITCOIND_PIDDIR=${BITCOIND_PIDDIR:-/var/run/bitcoind}
|
BITCOIND_PIDDIR=${BITCOIND_PIDDIR:-/var/run/dashd}
|
||||||
BITCOIND_PIDFILE=${BITCOIND_PIDFILE:-${BITCOIND_PIDDIR}/bitcoind.pid}
|
BITCOIND_PIDFILE=${BITCOIND_PIDFILE:-${BITCOIND_PIDDIR}/dashd.pid}
|
||||||
BITCOIND_DATADIR=${BITCOIND_DATADIR:-${BITCOIND_DEFAULT_DATADIR}}
|
BITCOIND_DATADIR=${BITCOIND_DATADIR:-${BITCOIND_DEFAULT_DATADIR}}
|
||||||
BITCOIND_USER=${BITCOIND_USER:-bitcoin}
|
BITCOIND_USER=${BITCOIND_USER:-dash}
|
||||||
BITCOIND_GROUP=${BITCOIND_GROUP:-bitcoin}
|
BITCOIND_GROUP=${BITCOIND_GROUP:-dash}
|
||||||
BITCOIND_BIN=${BITCOIND_BIN:-/usr/bin/bitcoind}
|
BITCOIND_BIN=${BITCOIND_BIN:-/usr/bin/dashd}
|
||||||
|
|
||||||
name="Bitcoin Core Daemon"
|
name="Dash Core Daemon"
|
||||||
description="Bitcoin crypto-currency p2p network daemon"
|
description="Dash crypto-currency p2p network daemon"
|
||||||
|
|
||||||
command="/usr/bin/bitcoind"
|
command="/usr/bin/dashd"
|
||||||
command_args="-pid=\"${BITCOIND_PIDFILE}\" \
|
command_args="-pid=\"${BITCOIND_PIDFILE}\" \
|
||||||
-conf=\"${BITCOIND_CONFIGFILE}\" \
|
-conf=\"${BITCOIND_CONFIGFILE}\" \
|
||||||
-datadir=\"${BITCOIND_DATADIR}\" \
|
-datadir=\"${BITCOIND_DATADIR}\" \
|
||||||
@ -65,7 +65,7 @@ checkconfig()
|
|||||||
{
|
{
|
||||||
if ! grep -qs '^rpcpassword=' "${BITCOIND_CONFIGFILE}" ; then
|
if ! grep -qs '^rpcpassword=' "${BITCOIND_CONFIGFILE}" ; then
|
||||||
eerror ""
|
eerror ""
|
||||||
eerror "ERROR: You must set a secure rpcpassword to run bitcoind."
|
eerror "ERROR: You must set a secure rpcpassword to run dashd."
|
||||||
eerror "The setting must appear in ${BITCOIND_CONFIGFILE}"
|
eerror "The setting must appear in ${BITCOIND_CONFIGFILE}"
|
||||||
eerror ""
|
eerror ""
|
||||||
eerror "This password is security critical to securing wallets "
|
eerror "This password is security critical to securing wallets "
|
||||||
@ -78,7 +78,7 @@ checkconfig()
|
|||||||
eerror "It is also recommended that you also set alertnotify so you are "
|
eerror "It is also recommended that you also set alertnotify so you are "
|
||||||
eerror "notified of problems:"
|
eerror "notified of problems:"
|
||||||
eerror ""
|
eerror ""
|
||||||
eerror "ie: alertnotify=echo %%s | mail -s \"Bitcoin Alert\"" \
|
eerror "ie: alertnotify=echo %%s | mail -s \"Dash Alert\"" \
|
||||||
"admin@foo.com"
|
"admin@foo.com"
|
||||||
eerror ""
|
eerror ""
|
||||||
return 1
|
return 1
|
27
contrib/init/dashd.openrcconf
Normal file
27
contrib/init/dashd.openrcconf
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
# /etc/conf.d/dashd: config file for /etc/init.d/dashd
|
||||||
|
|
||||||
|
# Config file location
|
||||||
|
#BITCOIND_CONFIGFILE="/etc/dash/dash.conf"
|
||||||
|
|
||||||
|
# What directory to write pidfile to? (created and owned by $BITCOIND_USER)
|
||||||
|
#BITCOIND_PIDDIR="/var/run/dashd"
|
||||||
|
|
||||||
|
# What filename to give the pidfile
|
||||||
|
#BITCOIND_PIDFILE="${BITCOIND_PIDDIR}/dashd.pid"
|
||||||
|
|
||||||
|
# Where to write dashd data (be mindful that the blockchain is large)
|
||||||
|
#BITCOIND_DATADIR="/var/lib/dashd"
|
||||||
|
|
||||||
|
# User and group to own dashd process
|
||||||
|
#BITCOIND_USER="dash"
|
||||||
|
#BITCOIND_GROUP="dash"
|
||||||
|
|
||||||
|
# Path to dashd executable
|
||||||
|
#BITCOIND_BIN="/usr/bin/dashd"
|
||||||
|
|
||||||
|
# Nice value to run dashd under
|
||||||
|
#BITCOIND_NICE=0
|
||||||
|
|
||||||
|
# Additional options (avoid -conf and -datadir, use flags above)
|
||||||
|
BITCOIND_OPTS="-disablewallet"
|
||||||
|
|
22
contrib/init/dashd.service
Normal file
22
contrib/init/dashd.service
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Dash's distributed currency daemon
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
User=dash
|
||||||
|
Group=dash
|
||||||
|
|
||||||
|
Type=forking
|
||||||
|
PIDFile=/var/lib/dashd/dashd.pid
|
||||||
|
ExecStart=/usr/bin/dashd -daemon -pid=/var/lib/dashd/dashd.pid \
|
||||||
|
-conf=/etc/dash/dash.conf -datadir=/var/lib/dashd -disablewallet
|
||||||
|
|
||||||
|
Restart=always
|
||||||
|
PrivateTmp=true
|
||||||
|
TimeoutStopSec=60s
|
||||||
|
TimeoutStartSec=2s
|
||||||
|
StartLimitInterval=120s
|
||||||
|
StartLimitBurst=5
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
@ -5,7 +5,7 @@ UNSIGNED=$1
|
|||||||
SIGNATURE=$2
|
SIGNATURE=$2
|
||||||
ARCH=x86_64
|
ARCH=x86_64
|
||||||
ROOTDIR=dist
|
ROOTDIR=dist
|
||||||
BUNDLE=${ROOTDIR}/Bitcoin-Qt.app
|
BUNDLE=${ROOTDIR}/Dash-Qt.app
|
||||||
TEMPDIR=signed.temp
|
TEMPDIR=signed.temp
|
||||||
OUTDIR=signed-app
|
OUTDIR=signed-app
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
set -e
|
set -e
|
||||||
|
|
||||||
ROOTDIR=dist
|
ROOTDIR=dist
|
||||||
BUNDLE=${ROOTDIR}/Bitcoin-Qt.app
|
BUNDLE=${ROOTDIR}/Dash-Qt.app
|
||||||
CODESIGN=codesign
|
CODESIGN=codesign
|
||||||
TEMPDIR=sign.temp
|
TEMPDIR=sign.temp
|
||||||
TEMPLIST=${TEMPDIR}/signatures.txt
|
TEMPLIST=${TEMPDIR}/signatures.txt
|
||||||
|
@ -1,117 +1,5 @@
|
|||||||
Dash Core tree 0.11.x release notes can be found here:
|
Dash Core tree 0.11.x release notes can be found here:
|
||||||
- [v0.11.0](release-notes/release-notes-0.11.0.md) released Jan/15/2015
|
- [v0.11.0](release-notes/release-notes-0.11.0.md) released Jan/15/2015
|
||||||
- [v0.11.1](release-notes/release-notes-0.11.1.md) released Feb/10/2015.
|
- [v0.11.1](release-notes/release-notes-0.11.1.md) released Feb/10/2015.
|
||||||
- [v0.11.2](release-notes/release-notes-0.11.2.md) not released yet.
|
- [v0.11.2](release-notes/release-notes-0.11.2.md) released Mar/25/2015.
|
||||||
|
- [v0.12.0](release-notes/release-notes-0.12.0.md) not released yet.
|
||||||
***TODO***
|
|
||||||
|
|
||||||
Bitcoin Core version 0.10.1 is now available from:
|
|
||||||
|
|
||||||
https://bitcoin.org/bin/0.10.1/
|
|
||||||
|
|
||||||
This is a new minor version release, bringing bug fixes and translation
|
|
||||||
updates. If you are using 0.10.0, it is recommended to upgrade to this
|
|
||||||
version.
|
|
||||||
|
|
||||||
Please report bugs using the issue tracker at github:
|
|
||||||
|
|
||||||
https://github.com/bitcoin/bitcoin/issues
|
|
||||||
|
|
||||||
Upgrading and downgrading
|
|
||||||
=========================
|
|
||||||
|
|
||||||
How to Upgrade
|
|
||||||
--------------
|
|
||||||
|
|
||||||
If you are running an older version, shut it down. Wait until it has completely
|
|
||||||
shut down (which might take a few minutes for older versions), then run the
|
|
||||||
installer (on Windows) or just copy over /Applications/Bitcoin-Qt (on Mac) or
|
|
||||||
bitcoind/bitcoin-qt (on Linux).
|
|
||||||
|
|
||||||
Downgrade warning
|
|
||||||
------------------
|
|
||||||
|
|
||||||
Because release 0.10.0 and later makes use of headers-first synchronization and
|
|
||||||
parallel block download (see further), the block files and databases are not
|
|
||||||
backwards-compatible with pre-0.10 versions of Bitcoin Core or other software:
|
|
||||||
|
|
||||||
* Blocks will be stored on disk out of order (in the order they are
|
|
||||||
received, really), which makes it incompatible with some tools or
|
|
||||||
other programs. Reindexing using earlier versions will also not work
|
|
||||||
anymore as a result of this.
|
|
||||||
|
|
||||||
* The block index database will now hold headers for which no block is
|
|
||||||
stored on disk, which earlier versions won't support.
|
|
||||||
|
|
||||||
If you want to be able to downgrade smoothly, make a backup of your entire data
|
|
||||||
directory. Without this your node will need start syncing (or importing from
|
|
||||||
bootstrap.dat) anew afterwards. It is possible that the data from a completely
|
|
||||||
synchronised 0.10 node may be usable in older versions as-is, but this is not
|
|
||||||
supported and may break as soon as the older version attempts to reindex.
|
|
||||||
|
|
||||||
This does not affect wallet forward or backward compatibility.
|
|
||||||
|
|
||||||
Notable changes
|
|
||||||
===============
|
|
||||||
|
|
||||||
|
|
||||||
0.10.1 Change log
|
|
||||||
=================
|
|
||||||
|
|
||||||
Detailed release notes follow. This overview includes changes that affect external
|
|
||||||
behavior, not code moves, refactors or string updates.
|
|
||||||
|
|
||||||
RPC:
|
|
||||||
- `7f502be` fix crash: createmultisig and addmultisigaddress
|
|
||||||
|
|
||||||
Block (database) and transaction handling:
|
|
||||||
- `1d2cdd2` Fix InvalidateBlock to add chainActive.Tip to setBlockIndexCandidates
|
|
||||||
- `c91c660` fix InvalidateBlock to repopulate setBlockIndexCandidates
|
|
||||||
- `002c8a2` fix possible block db breakage during re-index
|
|
||||||
|
|
||||||
P2P protocol and network code:
|
|
||||||
- `78f64ef` don't trickle for whitelisted nodes
|
|
||||||
- `ca301bf` Reduce fingerprinting through timestamps in 'addr' messages.
|
|
||||||
- `200f293` Ignore getaddr messages on Outbound connections.
|
|
||||||
- `d5d8998` Limit message sizes before transfer
|
|
||||||
- `aeb9279` Better fingerprinting protection for non-main-chain getdatas.
|
|
||||||
|
|
||||||
Validation:
|
|
||||||
- `d148f62` Acquire CCheckQueue's lock to avoid race condition
|
|
||||||
|
|
||||||
Build system:
|
|
||||||
- `8752b5c` 0.10 fix for crashes on OSX 10.6
|
|
||||||
|
|
||||||
Wallet:
|
|
||||||
- N/A
|
|
||||||
|
|
||||||
GUI:
|
|
||||||
- `2c08406` some mac specifiy cleanup (memory handling, unnecessary code)
|
|
||||||
- `81145a6` fix OSX dock icon window reopening
|
|
||||||
- `786cf72` fix a issue where "command line options"-action overwrite "Preference"-action (on OSX)
|
|
||||||
|
|
||||||
Tests:
|
|
||||||
- `1117378` add RPC test for InvalidateBlock
|
|
||||||
|
|
||||||
Miscellaneous:
|
|
||||||
- `c9e022b` Initialization: set Boost path locale in main thread
|
|
||||||
- `23126a0` Sanitize command strings before logging them.
|
|
||||||
|
|
||||||
Credits
|
|
||||||
=======
|
|
||||||
|
|
||||||
Thanks to everyone who contributed to this release:
|
|
||||||
|
|
||||||
- Alex Morcos
|
|
||||||
- Cory Fields
|
|
||||||
- dexX7
|
|
||||||
- fsb4000
|
|
||||||
- Gregory Maxwell
|
|
||||||
- Ivan Pustogarov
|
|
||||||
- Jonas Schnelli
|
|
||||||
- Pieter Wuille
|
|
||||||
- Ruben de Vries
|
|
||||||
- Suhas Daftuar
|
|
||||||
- Wladimir J. van der Laan
|
|
||||||
|
|
||||||
As well as everyone that helped translating on [Transifex](https://www.transifex.com/projects/p/bitcoin/).
|
|
||||||
|
60
doc/release-notes/release-notes-0.12.0.md
Normal file
60
doc/release-notes/release-notes-0.12.0.md
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
*This is a draft!*
|
||||||
|
|
||||||
|
0.12.0 Release notes
|
||||||
|
====================
|
||||||
|
|
||||||
|
|
||||||
|
Dash Core version 0.11.2 is now available from:
|
||||||
|
|
||||||
|
https://dashpay.io/downloads
|
||||||
|
|
||||||
|
Please report bugs using the issue tracker at github:
|
||||||
|
|
||||||
|
https://github.com/dashpay/dash/issues
|
||||||
|
|
||||||
|
|
||||||
|
How to Upgrade
|
||||||
|
--------------
|
||||||
|
|
||||||
|
If you are running an older version, shut it down. Wait until it has completely
|
||||||
|
shut down (which might take a few minutes for older versions), then run the
|
||||||
|
installer (on Windows) or just copy over /Applications/Dash-Qt (on Mac) or
|
||||||
|
dashd/dash-qt (on Linux).
|
||||||
|
|
||||||
|
Downgrade warning
|
||||||
|
------------------
|
||||||
|
|
||||||
|
Because release 0.12.0 and later makes use of headers-first synchronization and
|
||||||
|
parallel block download (see further), the block files and databases are not
|
||||||
|
backwards-compatible with pre-0.12 versions of Dash Core or other software:
|
||||||
|
|
||||||
|
* Blocks will be stored on disk out of order (in the order they are
|
||||||
|
received, really), which makes it incompatible with some tools or
|
||||||
|
other programs. Reindexing using earlier versions will also not work
|
||||||
|
anymore as a result of this.
|
||||||
|
|
||||||
|
* The block index database will now hold headers for which no block is
|
||||||
|
stored on disk, which earlier versions won't support.
|
||||||
|
|
||||||
|
If you want to be able to downgrade smoothly, make a backup of your entire data
|
||||||
|
directory. Without this your node will need start syncing (or importing from
|
||||||
|
bootstrap.dat) anew afterwards. It is possible that the data from a completely
|
||||||
|
synchronised 0.10 node may be usable in older versions as-is, but this is not
|
||||||
|
supported and may break as soon as the older version attempts to reindex.
|
||||||
|
|
||||||
|
This does not affect wallet forward or backward compatibility.
|
||||||
|
|
||||||
|
|
||||||
|
0.12.0 changelog
|
||||||
|
----------------
|
||||||
|
|
||||||
|
Bitcoin Core version 0.10.1
|
||||||
|
|
||||||
|
Credits
|
||||||
|
--------
|
||||||
|
|
||||||
|
Thanks to who contributed to this release, at least:
|
||||||
|
|
||||||
|
- *to do ..*
|
||||||
|
|
||||||
|
As well as everyone that helped translating on [Transifex](https://www.transifex.com/projects/p/dash/).
|
@ -6,13 +6,13 @@ and tests weren't explicitly disabled.
|
|||||||
|
|
||||||
After configuring, they can be run with 'make check'.
|
After configuring, they can be run with 'make check'.
|
||||||
|
|
||||||
To run the bitcoind tests manually, launch src/test/test_dash .
|
To run the dashd tests manually, launch src/test/test_dash .
|
||||||
|
|
||||||
To add more bitcoind tests, add `BOOST_AUTO_TEST_CASE` functions to the existing
|
To add more dashd tests, add `BOOST_AUTO_TEST_CASE` functions to the existing
|
||||||
.cpp files in the test/ directory or add new .cpp files that
|
.cpp files in the test/ directory or add new .cpp files that
|
||||||
implement new BOOST_AUTO_TEST_SUITE sections.
|
implement new BOOST_AUTO_TEST_SUITE sections.
|
||||||
|
|
||||||
To run the bitcoin-qt tests manually, launch src/qt/test/bitcoin-qt_test
|
To run the dash-qt tests manually, launch src/qt/test/dash-qt_test
|
||||||
|
|
||||||
To add more bitcoin-qt tests, add them to the `src/qt/test/` directory and
|
To add more dash-qt tests, add them to the `src/qt/test/` directory and
|
||||||
the `src/qt/test/test_main.cpp` file.
|
the `src/qt/test/test_main.cpp` file.
|
||||||
|
@ -32,7 +32,7 @@
|
|||||||
<string>Dash-Qt</string>
|
<string>Dash-Qt</string>
|
||||||
|
|
||||||
<key>CFBundleIdentifier</key>
|
<key>CFBundleIdentifier</key>
|
||||||
<string>org.dashfoundation.Dash-Qt</string>
|
<string>io.dashpay.Dash-Qt</string>
|
||||||
|
|
||||||
<key>CFBundleURLTypes</key>
|
<key>CFBundleURLTypes</key>
|
||||||
<array>
|
<array>
|
||||||
@ -40,7 +40,7 @@
|
|||||||
<key>CFBundleTypeRole</key>
|
<key>CFBundleTypeRole</key>
|
||||||
<string>Editor</string>
|
<string>Editor</string>
|
||||||
<key>CFBundleURLName</key>
|
<key>CFBundleURLName</key>
|
||||||
<string>io.dash.DarkcoinPayment</string>
|
<string>io.dash.DashPayment</string>
|
||||||
<key>CFBundleURLSchemes</key>
|
<key>CFBundleURLSchemes</key>
|
||||||
<array>
|
<array>
|
||||||
<string>dash</string>
|
<string>dash</string>
|
||||||
|
@ -117,17 +117,17 @@ def main():
|
|||||||
g.write('#ifndef BITCOIN_CHAINPARAMSSEEDS_H\n')
|
g.write('#ifndef BITCOIN_CHAINPARAMSSEEDS_H\n')
|
||||||
g.write('#define BITCOIN_CHAINPARAMSSEEDS_H\n')
|
g.write('#define BITCOIN_CHAINPARAMSSEEDS_H\n')
|
||||||
g.write('/**\n')
|
g.write('/**\n')
|
||||||
g.write(' * List of fixed seed nodes for the bitcoin network\n')
|
g.write(' * List of fixed seed nodes for the dash network\n')
|
||||||
g.write(' * AUTOGENERATED by share/seeds/generate-seeds.py\n')
|
g.write(' * AUTOGENERATED by share/seeds/generate-seeds.py\n')
|
||||||
g.write(' *\n')
|
g.write(' *\n')
|
||||||
g.write(' * Each line contains a 16-byte IPv6 address and a port.\n')
|
g.write(' * Each line contains a 16-byte IPv6 address and a port.\n')
|
||||||
g.write(' * IPv4 as well as onion addresses are wrapped inside a IPv6 address accordingly.\n')
|
g.write(' * IPv4 as well as onion addresses are wrapped inside a IPv6 address accordingly.\n')
|
||||||
g.write(' */\n')
|
g.write(' */\n')
|
||||||
with open(os.path.join(indir,'nodes_main.txt'),'r') as f:
|
with open(os.path.join(indir,'nodes_main.txt'),'r') as f:
|
||||||
process_nodes(g, f, 'pnSeed6_main', 8333)
|
process_nodes(g, f, 'pnSeed6_main', 9999)
|
||||||
g.write('\n')
|
g.write('\n')
|
||||||
with open(os.path.join(indir,'nodes_test.txt'),'r') as f:
|
with open(os.path.join(indir,'nodes_test.txt'),'r') as f:
|
||||||
process_nodes(g, f, 'pnSeed6_test', 18333)
|
process_nodes(g, f, 'pnSeed6_test', 19999)
|
||||||
g.write('#endif // BITCOIN_CHAINPARAMSSEEDS_H\n')
|
g.write('#endif // BITCOIN_CHAINPARAMSSEEDS_H\n')
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
@ -1,633 +0,0 @@
|
|||||||
// Copyright (c) 2009-2014 The Bitcoin developers
|
|
||||||
// Distributed under the MIT/X11 software license, see the accompanying
|
|
||||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
||||||
|
|
||||||
#include "base58.h"
|
|
||||||
#include "clientversion.h"
|
|
||||||
#include "primitives/block.h" // for MAX_BLOCK_SIZE
|
|
||||||
#include "primitives/transaction.h"
|
|
||||||
#include "core_io.h"
|
|
||||||
#include "coins.h"
|
|
||||||
#include "keystore.h"
|
|
||||||
#include "script/script.h"
|
|
||||||
#include "script/sign.h"
|
|
||||||
#include "ui_interface.h" // for _(...)
|
|
||||||
#include "univalue/univalue.h"
|
|
||||||
#include "util.h"
|
|
||||||
#include "utilstrencodings.h"
|
|
||||||
#include "utilmoneystr.h"
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
|
|
||||||
#include <boost/algorithm/string.hpp>
|
|
||||||
#include <boost/assign/list_of.hpp>
|
|
||||||
|
|
||||||
using namespace boost::assign;
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
static bool fCreateBlank;
|
|
||||||
static map<string,UniValue> registers;
|
|
||||||
CClientUIInterface uiInterface;
|
|
||||||
|
|
||||||
static bool AppInitRawTx(int argc, char* argv[])
|
|
||||||
{
|
|
||||||
//
|
|
||||||
// Parameters
|
|
||||||
//
|
|
||||||
ParseParameters(argc, argv);
|
|
||||||
|
|
||||||
// Check for -testnet or -regtest parameter (Params() calls are only valid after this clause)
|
|
||||||
if (!SelectParamsFromCommandLine()) {
|
|
||||||
fprintf(stderr, "Error: Invalid combination of -regtest and -testnet.\n");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
fCreateBlank = GetBoolArg("-create", false);
|
|
||||||
|
|
||||||
if (argc<2 || mapArgs.count("-?") || mapArgs.count("-help"))
|
|
||||||
{
|
|
||||||
// First part of help message is specific to this utility
|
|
||||||
std::string strUsage = _("Bitcoin Core bitcoin-tx utility version") + " " + FormatFullVersion() + "\n\n" +
|
|
||||||
_("Usage:") + "\n" +
|
|
||||||
" bitcoin-tx [options] <hex-tx> [commands] " + _("Update hex-encoded bitcoin transaction") + "\n" +
|
|
||||||
" bitcoin-tx [options] -create [commands] " + _("Create hex-encoded bitcoin transaction") + "\n" +
|
|
||||||
"\n";
|
|
||||||
|
|
||||||
fprintf(stdout, "%s", strUsage.c_str());
|
|
||||||
|
|
||||||
strUsage = _("Options:") + "\n";
|
|
||||||
strUsage += " -? " + _("This help message") + "\n";
|
|
||||||
strUsage += " -create " + _("Create new, empty TX.") + "\n";
|
|
||||||
strUsage += " -json " + _("Select JSON output") + "\n";
|
|
||||||
strUsage += " -txid " + _("Output only the hex-encoded transaction id of the resultant transaction.") + "\n";
|
|
||||||
strUsage += " -regtest " + _("Enter regression test mode, which uses a special chain in which blocks can be solved instantly.") + "\n";
|
|
||||||
strUsage += " -testnet " + _("Use the test network") + "\n";
|
|
||||||
strUsage += "\n";
|
|
||||||
|
|
||||||
fprintf(stdout, "%s", strUsage.c_str());
|
|
||||||
|
|
||||||
|
|
||||||
strUsage = _("Commands:") + "\n";
|
|
||||||
strUsage += " delin=N " + _("Delete input N from TX") + "\n";
|
|
||||||
strUsage += " delout=N " + _("Delete output N from TX") + "\n";
|
|
||||||
strUsage += " in=TXID:VOUT " + _("Add input to TX") + "\n";
|
|
||||||
strUsage += " locktime=N " + _("Set TX lock time to N") + "\n";
|
|
||||||
strUsage += " nversion=N " + _("Set TX version to N") + "\n";
|
|
||||||
strUsage += " outaddr=VALUE:ADDRESS " + _("Add address-based output to TX") + "\n";
|
|
||||||
strUsage += " outscript=VALUE:SCRIPT " + _("Add raw script output to TX") + "\n";
|
|
||||||
strUsage += " sign=SIGHASH-FLAGS " + _("Add zero or more signatures to transaction") + "\n";
|
|
||||||
strUsage += " This command requires JSON registers:\n";
|
|
||||||
strUsage += " prevtxs=JSON object\n";
|
|
||||||
strUsage += " privatekeys=JSON object\n";
|
|
||||||
strUsage += " See signrawtransaction docs for format of sighash flags, JSON objects.\n";
|
|
||||||
strUsage += "\n";
|
|
||||||
fprintf(stdout, "%s", strUsage.c_str());
|
|
||||||
|
|
||||||
strUsage = _("Register Commands:") + "\n";
|
|
||||||
strUsage += " load=NAME:FILENAME " + _("Load JSON file FILENAME into register NAME") + "\n";
|
|
||||||
strUsage += " set=NAME:JSON-STRING " + _("Set register NAME to given JSON-STRING") + "\n";
|
|
||||||
strUsage += "\n";
|
|
||||||
fprintf(stdout, "%s", strUsage.c_str());
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void RegisterSetJson(const string& key, const string& rawJson)
|
|
||||||
{
|
|
||||||
UniValue val;
|
|
||||||
if (!val.read(rawJson)) {
|
|
||||||
string strErr = "Cannot parse JSON for key " + key;
|
|
||||||
throw runtime_error(strErr);
|
|
||||||
}
|
|
||||||
|
|
||||||
registers[key] = val;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void RegisterSet(const string& strInput)
|
|
||||||
{
|
|
||||||
// separate NAME:VALUE in string
|
|
||||||
size_t pos = strInput.find(':');
|
|
||||||
if ((pos == string::npos) ||
|
|
||||||
(pos == 0) ||
|
|
||||||
(pos == (strInput.size() - 1)))
|
|
||||||
throw runtime_error("Register input requires NAME:VALUE");
|
|
||||||
|
|
||||||
string key = strInput.substr(0, pos);
|
|
||||||
string valStr = strInput.substr(pos + 1, string::npos);
|
|
||||||
|
|
||||||
RegisterSetJson(key, valStr);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void RegisterLoad(const string& strInput)
|
|
||||||
{
|
|
||||||
// separate NAME:FILENAME in string
|
|
||||||
size_t pos = strInput.find(':');
|
|
||||||
if ((pos == string::npos) ||
|
|
||||||
(pos == 0) ||
|
|
||||||
(pos == (strInput.size() - 1)))
|
|
||||||
throw runtime_error("Register load requires NAME:FILENAME");
|
|
||||||
|
|
||||||
string key = strInput.substr(0, pos);
|
|
||||||
string filename = strInput.substr(pos + 1, string::npos);
|
|
||||||
|
|
||||||
FILE *f = fopen(filename.c_str(), "r");
|
|
||||||
if (!f) {
|
|
||||||
string strErr = "Cannot open file " + filename;
|
|
||||||
throw runtime_error(strErr);
|
|
||||||
}
|
|
||||||
|
|
||||||
// load file chunks into one big buffer
|
|
||||||
string valStr;
|
|
||||||
while ((!feof(f)) && (!ferror(f))) {
|
|
||||||
char buf[4096];
|
|
||||||
int bread = fread(buf, 1, sizeof(buf), f);
|
|
||||||
if (bread <= 0)
|
|
||||||
break;
|
|
||||||
|
|
||||||
valStr.insert(valStr.size(), buf, bread);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ferror(f)) {
|
|
||||||
string strErr = "Error reading file " + filename;
|
|
||||||
throw runtime_error(strErr);
|
|
||||||
}
|
|
||||||
|
|
||||||
fclose(f);
|
|
||||||
|
|
||||||
// evaluate as JSON buffer register
|
|
||||||
RegisterSetJson(key, valStr);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void MutateTxVersion(CMutableTransaction& tx, const string& cmdVal)
|
|
||||||
{
|
|
||||||
int64_t newVersion = atoi64(cmdVal);
|
|
||||||
if (newVersion < 1 || newVersion > CTransaction::CURRENT_VERSION)
|
|
||||||
throw runtime_error("Invalid TX version requested");
|
|
||||||
|
|
||||||
tx.nVersion = (int) newVersion;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void MutateTxLocktime(CMutableTransaction& tx, const string& cmdVal)
|
|
||||||
{
|
|
||||||
int64_t newLocktime = atoi64(cmdVal);
|
|
||||||
if (newLocktime < 0LL || newLocktime > 0xffffffffLL)
|
|
||||||
throw runtime_error("Invalid TX locktime requested");
|
|
||||||
|
|
||||||
tx.nLockTime = (unsigned int) newLocktime;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void MutateTxAddInput(CMutableTransaction& tx, const string& strInput)
|
|
||||||
{
|
|
||||||
// separate TXID:VOUT in string
|
|
||||||
size_t pos = strInput.find(':');
|
|
||||||
if ((pos == string::npos) ||
|
|
||||||
(pos == 0) ||
|
|
||||||
(pos == (strInput.size() - 1)))
|
|
||||||
throw runtime_error("TX input missing separator");
|
|
||||||
|
|
||||||
// extract and validate TXID
|
|
||||||
string strTxid = strInput.substr(0, pos);
|
|
||||||
if ((strTxid.size() != 64) || !IsHex(strTxid))
|
|
||||||
throw runtime_error("invalid TX input txid");
|
|
||||||
uint256 txid(strTxid);
|
|
||||||
|
|
||||||
static const unsigned int minTxOutSz = 9;
|
|
||||||
static const unsigned int maxVout = MAX_BLOCK_SIZE / minTxOutSz;
|
|
||||||
|
|
||||||
// extract and validate vout
|
|
||||||
string strVout = strInput.substr(pos + 1, string::npos);
|
|
||||||
int vout = atoi(strVout);
|
|
||||||
if ((vout < 0) || (vout > (int)maxVout))
|
|
||||||
throw runtime_error("invalid TX input vout");
|
|
||||||
|
|
||||||
// append to transaction input list
|
|
||||||
CTxIn txin(txid, vout);
|
|
||||||
tx.vin.push_back(txin);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void MutateTxAddOutAddr(CMutableTransaction& tx, const string& strInput)
|
|
||||||
{
|
|
||||||
// separate VALUE:ADDRESS in string
|
|
||||||
size_t pos = strInput.find(':');
|
|
||||||
if ((pos == string::npos) ||
|
|
||||||
(pos == 0) ||
|
|
||||||
(pos == (strInput.size() - 1)))
|
|
||||||
throw runtime_error("TX output missing separator");
|
|
||||||
|
|
||||||
// extract and validate VALUE
|
|
||||||
string strValue = strInput.substr(0, pos);
|
|
||||||
CAmount value;
|
|
||||||
if (!ParseMoney(strValue, value))
|
|
||||||
throw runtime_error("invalid TX output value");
|
|
||||||
|
|
||||||
// extract and validate ADDRESS
|
|
||||||
string strAddr = strInput.substr(pos + 1, string::npos);
|
|
||||||
CBitcoinAddress addr(strAddr);
|
|
||||||
if (!addr.IsValid())
|
|
||||||
throw runtime_error("invalid TX output address");
|
|
||||||
|
|
||||||
// build standard output script via GetScriptForDestination()
|
|
||||||
CScript scriptPubKey = GetScriptForDestination(addr.Get());
|
|
||||||
|
|
||||||
// construct TxOut, append to transaction output list
|
|
||||||
CTxOut txout(value, scriptPubKey);
|
|
||||||
tx.vout.push_back(txout);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void MutateTxAddOutScript(CMutableTransaction& tx, const string& strInput)
|
|
||||||
{
|
|
||||||
// separate VALUE:SCRIPT in string
|
|
||||||
size_t pos = strInput.find(':');
|
|
||||||
if ((pos == string::npos) ||
|
|
||||||
(pos == 0))
|
|
||||||
throw runtime_error("TX output missing separator");
|
|
||||||
|
|
||||||
// extract and validate VALUE
|
|
||||||
string strValue = strInput.substr(0, pos);
|
|
||||||
CAmount value;
|
|
||||||
if (!ParseMoney(strValue, value))
|
|
||||||
throw runtime_error("invalid TX output value");
|
|
||||||
|
|
||||||
// extract and validate script
|
|
||||||
string strScript = strInput.substr(pos + 1, string::npos);
|
|
||||||
CScript scriptPubKey = ParseScript(strScript); // throws on err
|
|
||||||
|
|
||||||
// construct TxOut, append to transaction output list
|
|
||||||
CTxOut txout(value, scriptPubKey);
|
|
||||||
tx.vout.push_back(txout);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void MutateTxDelInput(CMutableTransaction& tx, const string& strInIdx)
|
|
||||||
{
|
|
||||||
// parse requested deletion index
|
|
||||||
int inIdx = atoi(strInIdx);
|
|
||||||
if (inIdx < 0 || inIdx >= (int)tx.vin.size()) {
|
|
||||||
string strErr = "Invalid TX input index '" + strInIdx + "'";
|
|
||||||
throw runtime_error(strErr.c_str());
|
|
||||||
}
|
|
||||||
|
|
||||||
// delete input from transaction
|
|
||||||
tx.vin.erase(tx.vin.begin() + inIdx);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void MutateTxDelOutput(CMutableTransaction& tx, const string& strOutIdx)
|
|
||||||
{
|
|
||||||
// parse requested deletion index
|
|
||||||
int outIdx = atoi(strOutIdx);
|
|
||||||
if (outIdx < 0 || outIdx >= (int)tx.vout.size()) {
|
|
||||||
string strErr = "Invalid TX output index '" + strOutIdx + "'";
|
|
||||||
throw runtime_error(strErr.c_str());
|
|
||||||
}
|
|
||||||
|
|
||||||
// delete output from transaction
|
|
||||||
tx.vout.erase(tx.vout.begin() + outIdx);
|
|
||||||
}
|
|
||||||
|
|
||||||
static const unsigned int N_SIGHASH_OPTS = 6;
|
|
||||||
static const struct {
|
|
||||||
const char *flagStr;
|
|
||||||
int flags;
|
|
||||||
} sighashOptions[N_SIGHASH_OPTS] = {
|
|
||||||
{"ALL", SIGHASH_ALL},
|
|
||||||
{"NONE", SIGHASH_NONE},
|
|
||||||
{"SINGLE", SIGHASH_SINGLE},
|
|
||||||
{"ALL|ANYONECANPAY", SIGHASH_ALL|SIGHASH_ANYONECANPAY},
|
|
||||||
{"NONE|ANYONECANPAY", SIGHASH_NONE|SIGHASH_ANYONECANPAY},
|
|
||||||
{"SINGLE|ANYONECANPAY", SIGHASH_SINGLE|SIGHASH_ANYONECANPAY},
|
|
||||||
};
|
|
||||||
|
|
||||||
static bool findSighashFlags(int& flags, const string& flagStr)
|
|
||||||
{
|
|
||||||
flags = 0;
|
|
||||||
|
|
||||||
for (unsigned int i = 0; i < N_SIGHASH_OPTS; i++) {
|
|
||||||
if (flagStr == sighashOptions[i].flagStr) {
|
|
||||||
flags = sighashOptions[i].flags;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
uint256 ParseHashUO(map<string,UniValue>& o, string strKey)
|
|
||||||
{
|
|
||||||
if (!o.count(strKey))
|
|
||||||
return 0;
|
|
||||||
return ParseHashUV(o[strKey], strKey);
|
|
||||||
}
|
|
||||||
|
|
||||||
vector<unsigned char> ParseHexUO(map<string,UniValue>& o, string strKey)
|
|
||||||
{
|
|
||||||
if (!o.count(strKey)) {
|
|
||||||
vector<unsigned char> emptyVec;
|
|
||||||
return emptyVec;
|
|
||||||
}
|
|
||||||
return ParseHexUV(o[strKey], strKey);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void MutateTxSign(CMutableTransaction& tx, const string& flagStr)
|
|
||||||
{
|
|
||||||
int nHashType = SIGHASH_ALL;
|
|
||||||
|
|
||||||
if (flagStr.size() > 0)
|
|
||||||
if (!findSighashFlags(nHashType, flagStr))
|
|
||||||
throw runtime_error("unknown sighash flag/sign option");
|
|
||||||
|
|
||||||
vector<CTransaction> txVariants;
|
|
||||||
txVariants.push_back(tx);
|
|
||||||
|
|
||||||
// mergedTx will end up with all the signatures; it
|
|
||||||
// starts as a clone of the raw tx:
|
|
||||||
CMutableTransaction mergedTx(txVariants[0]);
|
|
||||||
bool fComplete = true;
|
|
||||||
CCoinsView viewDummy;
|
|
||||||
CCoinsViewCache view(&viewDummy);
|
|
||||||
|
|
||||||
if (!registers.count("privatekeys"))
|
|
||||||
throw runtime_error("privatekeys register variable must be set.");
|
|
||||||
bool fGivenKeys = false;
|
|
||||||
CBasicKeyStore tempKeystore;
|
|
||||||
UniValue keysObj = registers["privatekeys"];
|
|
||||||
fGivenKeys = true;
|
|
||||||
|
|
||||||
for (unsigned int kidx = 0; kidx < keysObj.count(); kidx++) {
|
|
||||||
if (!keysObj[kidx].isStr())
|
|
||||||
throw runtime_error("privatekey not a string");
|
|
||||||
CBitcoinSecret vchSecret;
|
|
||||||
bool fGood = vchSecret.SetString(keysObj[kidx].getValStr());
|
|
||||||
if (!fGood)
|
|
||||||
throw runtime_error("privatekey not valid");
|
|
||||||
|
|
||||||
CKey key = vchSecret.GetKey();
|
|
||||||
tempKeystore.AddKey(key);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Add previous txouts given in the RPC call:
|
|
||||||
if (!registers.count("prevtxs"))
|
|
||||||
throw runtime_error("prevtxs register variable must be set.");
|
|
||||||
UniValue prevtxsObj = registers["prevtxs"];
|
|
||||||
{
|
|
||||||
for (unsigned int previdx = 0; previdx < prevtxsObj.count(); previdx++) {
|
|
||||||
UniValue prevOut = prevtxsObj[previdx];
|
|
||||||
if (!prevOut.isObject())
|
|
||||||
throw runtime_error("expected prevtxs internal object");
|
|
||||||
|
|
||||||
map<string,UniValue::VType> types = map_list_of("txid", UniValue::VSTR)("vout",UniValue::VNUM)("scriptPubKey",UniValue::VSTR);
|
|
||||||
if (!prevOut.checkObject(types))
|
|
||||||
throw runtime_error("prevtxs internal object typecheck fail");
|
|
||||||
|
|
||||||
uint256 txid = ParseHashUV(prevOut["txid"], "txid");
|
|
||||||
|
|
||||||
int nOut = atoi(prevOut["vout"].getValStr());
|
|
||||||
if (nOut < 0)
|
|
||||||
throw runtime_error("vout must be positive");
|
|
||||||
|
|
||||||
vector<unsigned char> pkData(ParseHexUV(prevOut["scriptPubKey"], "scriptPubKey"));
|
|
||||||
CScript scriptPubKey(pkData.begin(), pkData.end());
|
|
||||||
|
|
||||||
{
|
|
||||||
CCoinsModifier coins = view.ModifyCoins(txid);
|
|
||||||
if (coins->IsAvailable(nOut) && coins->vout[nOut].scriptPubKey != scriptPubKey) {
|
|
||||||
string err("Previous output scriptPubKey mismatch:\n");
|
|
||||||
err = err + coins->vout[nOut].scriptPubKey.ToString() + "\nvs:\n"+
|
|
||||||
scriptPubKey.ToString();
|
|
||||||
throw runtime_error(err);
|
|
||||||
}
|
|
||||||
if ((unsigned int)nOut >= coins->vout.size())
|
|
||||||
coins->vout.resize(nOut+1);
|
|
||||||
coins->vout[nOut].scriptPubKey = scriptPubKey;
|
|
||||||
coins->vout[nOut].nValue = 0; // we don't know the actual output value
|
|
||||||
}
|
|
||||||
|
|
||||||
// if redeemScript given and private keys given,
|
|
||||||
// add redeemScript to the tempKeystore so it can be signed:
|
|
||||||
if (fGivenKeys && scriptPubKey.IsPayToScriptHash() &&
|
|
||||||
prevOut.exists("redeemScript")) {
|
|
||||||
UniValue v = prevOut["redeemScript"];
|
|
||||||
vector<unsigned char> rsData(ParseHexUV(v, "redeemScript"));
|
|
||||||
CScript redeemScript(rsData.begin(), rsData.end());
|
|
||||||
tempKeystore.AddCScript(redeemScript);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const CKeyStore& keystore = tempKeystore;
|
|
||||||
|
|
||||||
bool fHashSingle = ((nHashType & ~SIGHASH_ANYONECANPAY) == SIGHASH_SINGLE);
|
|
||||||
|
|
||||||
// Sign what we can:
|
|
||||||
for (unsigned int i = 0; i < mergedTx.vin.size(); i++) {
|
|
||||||
CTxIn& txin = mergedTx.vin[i];
|
|
||||||
const CCoins* coins = view.AccessCoins(txin.prevout.hash);
|
|
||||||
if (!coins || !coins->IsAvailable(txin.prevout.n)) {
|
|
||||||
fComplete = false;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
const CScript& prevPubKey = coins->vout[txin.prevout.n].scriptPubKey;
|
|
||||||
|
|
||||||
txin.scriptSig.clear();
|
|
||||||
// Only sign SIGHASH_SINGLE if there's a corresponding output:
|
|
||||||
if (!fHashSingle || (i < mergedTx.vout.size()))
|
|
||||||
SignSignature(keystore, prevPubKey, mergedTx, i, nHashType);
|
|
||||||
|
|
||||||
// ... and merge in other signatures:
|
|
||||||
BOOST_FOREACH(const CTransaction& txv, txVariants) {
|
|
||||||
txin.scriptSig = CombineSignatures(prevPubKey, mergedTx, i, txin.scriptSig, txv.vin[i].scriptSig);
|
|
||||||
}
|
|
||||||
if (!VerifyScript(txin.scriptSig, prevPubKey, STANDARD_SCRIPT_VERIFY_FLAGS, MutableTransactionSignatureChecker(&mergedTx, i)))
|
|
||||||
fComplete = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (fComplete) {
|
|
||||||
// do nothing... for now
|
|
||||||
// perhaps store this for later optional JSON output
|
|
||||||
}
|
|
||||||
|
|
||||||
tx = mergedTx;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void MutateTx(CMutableTransaction& tx, const string& command,
|
|
||||||
const string& commandVal)
|
|
||||||
{
|
|
||||||
if (command == "nversion")
|
|
||||||
MutateTxVersion(tx, commandVal);
|
|
||||||
else if (command == "locktime")
|
|
||||||
MutateTxLocktime(tx, commandVal);
|
|
||||||
|
|
||||||
else if (command == "delin")
|
|
||||||
MutateTxDelInput(tx, commandVal);
|
|
||||||
else if (command == "in")
|
|
||||||
MutateTxAddInput(tx, commandVal);
|
|
||||||
|
|
||||||
else if (command == "delout")
|
|
||||||
MutateTxDelOutput(tx, commandVal);
|
|
||||||
else if (command == "outaddr")
|
|
||||||
MutateTxAddOutAddr(tx, commandVal);
|
|
||||||
else if (command == "outscript")
|
|
||||||
MutateTxAddOutScript(tx, commandVal);
|
|
||||||
|
|
||||||
else if (command == "sign")
|
|
||||||
MutateTxSign(tx, commandVal);
|
|
||||||
|
|
||||||
else if (command == "load")
|
|
||||||
RegisterLoad(commandVal);
|
|
||||||
|
|
||||||
else if (command == "set")
|
|
||||||
RegisterSet(commandVal);
|
|
||||||
|
|
||||||
else
|
|
||||||
throw runtime_error("unknown command");
|
|
||||||
}
|
|
||||||
|
|
||||||
static void OutputTxJSON(const CTransaction& tx)
|
|
||||||
{
|
|
||||||
UniValue entry(UniValue::VOBJ);
|
|
||||||
TxToUniv(tx, 0, entry);
|
|
||||||
|
|
||||||
string jsonOutput = entry.write(4);
|
|
||||||
fprintf(stdout, "%s\n", jsonOutput.c_str());
|
|
||||||
}
|
|
||||||
|
|
||||||
static void OutputTxHash(const CTransaction& tx)
|
|
||||||
{
|
|
||||||
string strHexHash = tx.GetHash().GetHex(); // the hex-encoded transaction hash (aka the transaction id)
|
|
||||||
|
|
||||||
fprintf(stdout, "%s\n", strHexHash.c_str());
|
|
||||||
}
|
|
||||||
|
|
||||||
static void OutputTxHex(const CTransaction& tx)
|
|
||||||
{
|
|
||||||
string strHex = EncodeHexTx(tx);
|
|
||||||
|
|
||||||
fprintf(stdout, "%s\n", strHex.c_str());
|
|
||||||
}
|
|
||||||
|
|
||||||
static void OutputTx(const CTransaction& tx)
|
|
||||||
{
|
|
||||||
if (GetBoolArg("-json", false))
|
|
||||||
OutputTxJSON(tx);
|
|
||||||
else if (GetBoolArg("-txid", false))
|
|
||||||
OutputTxHash(tx);
|
|
||||||
else
|
|
||||||
OutputTxHex(tx);
|
|
||||||
}
|
|
||||||
|
|
||||||
static string readStdin()
|
|
||||||
{
|
|
||||||
char buf[4096];
|
|
||||||
string ret;
|
|
||||||
|
|
||||||
while (!feof(stdin)) {
|
|
||||||
size_t bread = fread(buf, 1, sizeof(buf), stdin);
|
|
||||||
ret.append(buf, bread);
|
|
||||||
if (bread < sizeof(buf))
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ferror(stdin))
|
|
||||||
throw runtime_error("error reading stdin");
|
|
||||||
|
|
||||||
boost::algorithm::trim_right(ret);
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int CommandLineRawTx(int argc, char* argv[])
|
|
||||||
{
|
|
||||||
string strPrint;
|
|
||||||
int nRet = 0;
|
|
||||||
try {
|
|
||||||
// Skip switches; Permit common stdin convention "-"
|
|
||||||
while (argc > 1 && IsSwitchChar(argv[1][0]) &&
|
|
||||||
(argv[1][1] != 0)) {
|
|
||||||
argc--;
|
|
||||||
argv++;
|
|
||||||
}
|
|
||||||
|
|
||||||
CTransaction txDecodeTmp;
|
|
||||||
int startArg;
|
|
||||||
|
|
||||||
if (!fCreateBlank) {
|
|
||||||
// require at least one param
|
|
||||||
if (argc < 2)
|
|
||||||
throw runtime_error("too few parameters");
|
|
||||||
|
|
||||||
// param: hex-encoded bitcoin transaction
|
|
||||||
string strHexTx(argv[1]);
|
|
||||||
if (strHexTx == "-") // "-" implies standard input
|
|
||||||
strHexTx = readStdin();
|
|
||||||
|
|
||||||
if (!DecodeHexTx(txDecodeTmp, strHexTx))
|
|
||||||
throw runtime_error("invalid transaction encoding");
|
|
||||||
|
|
||||||
startArg = 2;
|
|
||||||
} else
|
|
||||||
startArg = 1;
|
|
||||||
|
|
||||||
CMutableTransaction tx(txDecodeTmp);
|
|
||||||
|
|
||||||
for (int i = startArg; i < argc; i++) {
|
|
||||||
string arg = argv[i];
|
|
||||||
string key, value;
|
|
||||||
size_t eqpos = arg.find('=');
|
|
||||||
if (eqpos == string::npos)
|
|
||||||
key = arg;
|
|
||||||
else {
|
|
||||||
key = arg.substr(0, eqpos);
|
|
||||||
value = arg.substr(eqpos + 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
MutateTx(tx, key, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
OutputTx(tx);
|
|
||||||
}
|
|
||||||
|
|
||||||
catch (boost::thread_interrupted) {
|
|
||||||
throw;
|
|
||||||
}
|
|
||||||
catch (std::exception& e) {
|
|
||||||
strPrint = string("error: ") + e.what();
|
|
||||||
nRet = EXIT_FAILURE;
|
|
||||||
}
|
|
||||||
catch (...) {
|
|
||||||
PrintExceptionContinue(NULL, "CommandLineRawTx()");
|
|
||||||
throw;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (strPrint != "") {
|
|
||||||
fprintf((nRet == 0 ? stdout : stderr), "%s\n", strPrint.c_str());
|
|
||||||
}
|
|
||||||
return nRet;
|
|
||||||
}
|
|
||||||
|
|
||||||
int main(int argc, char* argv[])
|
|
||||||
{
|
|
||||||
SetupEnvironment();
|
|
||||||
|
|
||||||
try {
|
|
||||||
if(!AppInitRawTx(argc, argv))
|
|
||||||
return EXIT_FAILURE;
|
|
||||||
}
|
|
||||||
catch (std::exception& e) {
|
|
||||||
PrintExceptionContinue(&e, "AppInitRawTx()");
|
|
||||||
return EXIT_FAILURE;
|
|
||||||
} catch (...) {
|
|
||||||
PrintExceptionContinue(NULL, "AppInitRawTx()");
|
|
||||||
return EXIT_FAILURE;
|
|
||||||
}
|
|
||||||
|
|
||||||
int ret = EXIT_FAILURE;
|
|
||||||
try {
|
|
||||||
ret = CommandLineRawTx(argc, argv);
|
|
||||||
}
|
|
||||||
catch (std::exception& e) {
|
|
||||||
PrintExceptionContinue(&e, "CommandLineRawTx()");
|
|
||||||
} catch (...) {
|
|
||||||
PrintExceptionContinue(NULL, "CommandLineRawTx()");
|
|
||||||
}
|
|
||||||
return ret;
|
|
||||||
}
|
|
@ -9,8 +9,8 @@
|
|||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* CBaseChainParams defines the base parameters (shared between bitcoin-cli and bitcoind)
|
* CBaseChainParams defines the base parameters (shared between dash-cli and dashd)
|
||||||
* of a given instance of the Bitcoin system.
|
* of a given instance of the Dash system.
|
||||||
*/
|
*/
|
||||||
class CBaseChainParams
|
class CBaseChainParams
|
||||||
{
|
{
|
||||||
|
@ -7,6 +7,7 @@
|
|||||||
* Each line contains a 16-byte IPv6 address and a port.
|
* Each line contains a 16-byte IPv6 address and a port.
|
||||||
* IPv4 as well as onion addresses are wrapped inside a IPv6 address accordingly.
|
* IPv4 as well as onion addresses are wrapped inside a IPv6 address accordingly.
|
||||||
*/
|
*/
|
||||||
|
// ***TODO*** REGENERATE
|
||||||
static SeedSpec6 pnSeed6_main[] = {
|
static SeedSpec6 pnSeed6_main[] = {
|
||||||
{{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x01,0x21,0xc5,0x6e}, 8333},
|
{{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x01,0x21,0xc5,0x6e}, 8333},
|
||||||
{{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x01,0x22,0xb4,0xf5}, 8333},
|
{{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x01,0x22,0xb4,0xf5}, 8333},
|
||||||
|
@ -10,10 +10,10 @@
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Name of client reported in the 'version' message. Report the same name
|
* Name of client reported in the 'version' message. Report the same name
|
||||||
* for both bitcoind and bitcoin-core, to make it harder for attackers to
|
* for both dashd and dash-qt, to make it harder for attackers to
|
||||||
* target servers or GUI users specifically.
|
* target servers or GUI users specifically.
|
||||||
*/
|
*/
|
||||||
const std::string CLIENT_NAME("Dash");
|
const std::string CLIENT_NAME("Dash Core");
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Client version number
|
* Client version number
|
||||||
|
@ -71,9 +71,9 @@ static bool AppInitRPC(int argc, char* argv[])
|
|||||||
std::string strUsage = _("Dash Core RPC client version") + " " + FormatFullVersion() + "\n";
|
std::string strUsage = _("Dash Core RPC client version") + " " + FormatFullVersion() + "\n";
|
||||||
if (!mapArgs.count("-version")) {
|
if (!mapArgs.count("-version")) {
|
||||||
strUsage += "\n" + _("Usage:") + "\n" +
|
strUsage += "\n" + _("Usage:") + "\n" +
|
||||||
" bitcoin-cli [options] <command> [params] " + _("Send command to Dash Core") + "\n" +
|
" dash-cli [options] <command> [params] " + _("Send command to Dash Core") + "\n" +
|
||||||
" bitcoin-cli [options] help " + _("List commands") + "\n" +
|
" dash-cli [options] help " + _("List commands") + "\n" +
|
||||||
" bitcoin-cli [options] help <command> " + _("Get help for a command") + "\n";
|
" dash-cli [options] help <command> " + _("Get help for a command") + "\n";
|
||||||
|
|
||||||
strUsage += "\n" + HelpMessageCli();
|
strUsage += "\n" + HelpMessageCli();
|
||||||
}
|
}
|
||||||
|
@ -47,10 +47,10 @@ static bool AppInitRawTx(int argc, char* argv[])
|
|||||||
if (argc<2 || mapArgs.count("-?") || mapArgs.count("-help"))
|
if (argc<2 || mapArgs.count("-?") || mapArgs.count("-help"))
|
||||||
{
|
{
|
||||||
// First part of help message is specific to this utility
|
// First part of help message is specific to this utility
|
||||||
std::string strUsage = _("Bitcoin Core bitcoin-tx utility version") + " " + FormatFullVersion() + "\n\n" +
|
std::string strUsage = _("Dash Core dash-tx utility version") + " " + FormatFullVersion() + "\n\n" +
|
||||||
_("Usage:") + "\n" +
|
_("Usage:") + "\n" +
|
||||||
" bitcoin-tx [options] <hex-tx> [commands] " + _("Update hex-encoded bitcoin transaction") + "\n" +
|
" dash-tx [options] <hex-tx> [commands] " + _("Update hex-encoded dash transaction") + "\n" +
|
||||||
" bitcoin-tx [options] -create [commands] " + _("Create hex-encoded bitcoin transaction") + "\n" +
|
" dash-tx [options] -create [commands] " + _("Create hex-encoded dash transaction") + "\n" +
|
||||||
"\n";
|
"\n";
|
||||||
|
|
||||||
fprintf(stdout, "%s", strUsage.c_str());
|
fprintf(stdout, "%s", strUsage.c_str());
|
||||||
@ -555,7 +555,7 @@ static int CommandLineRawTx(int argc, char* argv[])
|
|||||||
if (argc < 2)
|
if (argc < 2)
|
||||||
throw runtime_error("too few parameters");
|
throw runtime_error("too few parameters");
|
||||||
|
|
||||||
// param: hex-encoded bitcoin transaction
|
// param: hex-encoded dash transaction
|
||||||
string strHexTx(argv[1]);
|
string strHexTx(argv[1]);
|
||||||
if (strHexTx == "-") // "-" implies standard input
|
if (strHexTx == "-") // "-" implies standard input
|
||||||
strHexTx = readStdin();
|
strHexTx = readStdin();
|
||||||
|
@ -357,7 +357,7 @@ void BitcoinGUI::createActions(const NetworkStyle *networkStyle)
|
|||||||
|
|
||||||
showHelpMessageAction = new QAction(QApplication::style()->standardIcon(QStyle::SP_MessageBoxInformation), tr("&Command-line options"), this);
|
showHelpMessageAction = new QAction(QApplication::style()->standardIcon(QStyle::SP_MessageBoxInformation), tr("&Command-line options"), this);
|
||||||
showHelpMessageAction->setMenuRole(QAction::NoRole);
|
showHelpMessageAction->setMenuRole(QAction::NoRole);
|
||||||
showHelpMessageAction->setStatusTip(tr("Show the Bitcoin Core help message to get a list with possible Dash command-line options"));
|
showHelpMessageAction->setStatusTip(tr("Show the Dash Core help message to get a list with possible Dash command-line options"));
|
||||||
|
|
||||||
connect(quitAction, SIGNAL(triggered()), qApp, SLOT(quit()));
|
connect(quitAction, SIGNAL(triggered()), qApp, SLOT(quit()));
|
||||||
connect(aboutAction, SIGNAL(triggered()), this, SLOT(aboutClicked()));
|
connect(aboutAction, SIGNAL(triggered()), this, SLOT(aboutClicked()));
|
||||||
@ -804,7 +804,7 @@ void BitcoinGUI::setNumBlocks(int count)
|
|||||||
|
|
||||||
void BitcoinGUI::message(const QString &title, const QString &message, unsigned int style, bool *ret)
|
void BitcoinGUI::message(const QString &title, const QString &message, unsigned int style, bool *ret)
|
||||||
{
|
{
|
||||||
QString strTitle = tr("Dash"); // default title
|
QString strTitle = tr("Dash Core"); // default title
|
||||||
// Default to information icon
|
// Default to information icon
|
||||||
int nMBoxIcon = QMessageBox::Information;
|
int nMBoxIcon = QMessageBox::Information;
|
||||||
int nNotifyIcon = Notificator::Information;
|
int nNotifyIcon = Notificator::Information;
|
||||||
|
@ -593,7 +593,7 @@ int main(int argc, char *argv[])
|
|||||||
/// 7a. parse masternode.conf
|
/// 7a. parse masternode.conf
|
||||||
string strErr;
|
string strErr;
|
||||||
if(!masternodeConfig.read(strErr)) {
|
if(!masternodeConfig.read(strErr)) {
|
||||||
QMessageBox::critical(0, QObject::tr("Dash"),
|
QMessageBox::critical(0, QObject::tr("Dash Core"),
|
||||||
QObject::tr("Error reading masternode configuration file: %1").arg(strErr.c_str()));
|
QObject::tr("Error reading masternode configuration file: %1").arg(strErr.c_str()));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -48,7 +48,7 @@
|
|||||||
<item row="6" column="0">
|
<item row="6" column="0">
|
||||||
<widget class="QLabel" name="label_3">
|
<widget class="QLabel" name="label_3">
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string>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.</string>
|
<string>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 Dash network.</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>&Message:</string>
|
<string>&Message:</string>
|
||||||
@ -71,7 +71,7 @@
|
|||||||
<item row="6" column="2">
|
<item row="6" column="2">
|
||||||
<widget class="QLineEdit" name="reqMessage">
|
<widget class="QLineEdit" name="reqMessage">
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string>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.</string>
|
<string>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 Dash network.</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
@ -904,7 +904,7 @@
|
|||||||
<item>
|
<item>
|
||||||
<widget class="QCheckBox" name="checkBoxMinimumFee">
|
<widget class="QCheckBox" name="checkBoxMinimumFee">
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string>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.</string>
|
<string>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 dash transactions than the network can process.</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string/>
|
<string/>
|
||||||
@ -917,7 +917,7 @@
|
|||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
</property>
|
</property>
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string>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.</string>
|
<string>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 dash transactions than the network can process.</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>(read the tooltip)</string>
|
<string>(read the tooltip)</string>
|
||||||
|
@ -29,7 +29,7 @@ class QUrl;
|
|||||||
class QWidget;
|
class QWidget;
|
||||||
QT_END_NAMESPACE
|
QT_END_NAMESPACE
|
||||||
|
|
||||||
/** Utility functions used by the Bitcoin Qt UI.
|
/** Utility functions used by the Dash Qt UI.
|
||||||
*/
|
*/
|
||||||
namespace GUIUtil
|
namespace GUIUtil
|
||||||
{
|
{
|
||||||
@ -37,14 +37,14 @@ namespace GUIUtil
|
|||||||
QString dateTimeStr(const QDateTime &datetime);
|
QString dateTimeStr(const QDateTime &datetime);
|
||||||
QString dateTimeStr(qint64 nTime);
|
QString dateTimeStr(qint64 nTime);
|
||||||
|
|
||||||
// Render Bitcoin addresses in monospace font
|
// Render Dash addresses in monospace font
|
||||||
QFont bitcoinAddressFont();
|
QFont bitcoinAddressFont();
|
||||||
|
|
||||||
// Set up widgets for address and amounts
|
// Set up widgets for address and amounts
|
||||||
void setupAddressWidget(QValidatedLineEdit *widget, QWidget *parent);
|
void setupAddressWidget(QValidatedLineEdit *widget, QWidget *parent);
|
||||||
void setupAmountWidget(QLineEdit *widget, QWidget *parent);
|
void setupAmountWidget(QLineEdit *widget, QWidget *parent);
|
||||||
|
|
||||||
// Parse "bitcoin:" URI into recipient object, return true on successful parsing
|
// Parse "dash:" URI into recipient object, return true on successful parsing
|
||||||
bool parseBitcoinURI(const QUrl &uri, SendCoinsRecipient *out);
|
bool parseBitcoinURI(const QUrl &uri, SendCoinsRecipient *out);
|
||||||
bool parseBitcoinURI(QString uri, SendCoinsRecipient *out);
|
bool parseBitcoinURI(QString uri, SendCoinsRecipient *out);
|
||||||
QString formatBitcoinURI(const SendCoinsRecipient &info);
|
QString formatBitcoinURI(const SendCoinsRecipient &info);
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
- (NSString *)__bundleIdentifier
|
- (NSString *)__bundleIdentifier
|
||||||
{
|
{
|
||||||
if (self == [NSBundle mainBundle]) {
|
if (self == [NSBundle mainBundle]) {
|
||||||
return @"org.bitcoinfoundation.Bitcoin-Qt";
|
return @"io.dashpay.Dash-Qt";
|
||||||
} else {
|
} else {
|
||||||
return [self __bundleIdentifier];
|
return [self __bundleIdentifier];
|
||||||
}
|
}
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
#define BITCOIN_QT_PAYMENTSERVER_H
|
#define BITCOIN_QT_PAYMENTSERVER_H
|
||||||
|
|
||||||
// This class handles payment requests from clicking on
|
// This class handles payment requests from clicking on
|
||||||
// bitcoin: URIs
|
// dash: URIs
|
||||||
//
|
//
|
||||||
// This is somewhat tricky, because we have to deal with
|
// This is somewhat tricky, because we have to deal with
|
||||||
// the situation where the user clicks on a link during
|
// the situation where the user clicks on a link during
|
||||||
|
@ -53,7 +53,7 @@ private:
|
|||||||
Qt::SortOrder order;
|
Qt::SortOrder order;
|
||||||
};
|
};
|
||||||
|
|
||||||
/** Model for list of recently generated payment requests / bitcoin: URIs.
|
/** Model for list of recently generated payment requests / dash: URIs.
|
||||||
* Part of wallet model.
|
* Part of wallet model.
|
||||||
*/
|
*/
|
||||||
class RecentRequestsTableModel: public QAbstractTableModel
|
class RecentRequestsTableModel: public QAbstractTableModel
|
||||||
|
@ -65,7 +65,7 @@ HelpMessageDialog::HelpMessageDialog(QWidget *parent, bool about) :
|
|||||||
} else {
|
} else {
|
||||||
setWindowTitle(tr("Command-line options"));
|
setWindowTitle(tr("Command-line options"));
|
||||||
QString header = tr("Usage:") + "\n" +
|
QString header = tr("Usage:") + "\n" +
|
||||||
" bitcoin-qt [" + tr("command-line options") + "] " + "\n";
|
" dash-qt [" + tr("command-line options") + "] " + "\n";
|
||||||
|
|
||||||
QString coreOptions = QString::fromStdString(HelpMessage(HMM_BITCOIN_QT));
|
QString coreOptions = QString::fromStdString(HelpMessage(HMM_BITCOIN_QT));
|
||||||
|
|
||||||
|
@ -305,7 +305,7 @@ WalletModel::SendCoinsReturn WalletModel::prepareTransaction(WalletModelTransact
|
|||||||
return TransactionCreationFailed;
|
return TransactionCreationFailed;
|
||||||
}
|
}
|
||||||
|
|
||||||
// reject insane fee > 0.1 bitcoin
|
// reject insane fee > 0.1 DASH
|
||||||
if (nFeeRequired > 10000000)
|
if (nFeeRequired > 10000000)
|
||||||
return InsaneFee;
|
return InsaneFee;
|
||||||
}
|
}
|
||||||
|
@ -168,7 +168,7 @@ Value importaddress(const Array& params, bool fHelp)
|
|||||||
std::vector<unsigned char> data(ParseHex(params[0].get_str()));
|
std::vector<unsigned char> data(ParseHex(params[0].get_str()));
|
||||||
script = CScript(data.begin(), data.end());
|
script = CScript(data.begin(), data.end());
|
||||||
} else {
|
} else {
|
||||||
throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, "Invalid Bitcoin address or script");
|
throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, "Invalid Dash address or script");
|
||||||
}
|
}
|
||||||
|
|
||||||
string strLabel = "";
|
string strLabel = "";
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
// Distributed under the MIT/X11 software license, see the accompanying
|
// Distributed under the MIT/X11 software license, see the accompanying
|
||||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||||
|
|
||||||
#define BOOST_TEST_MODULE Bitcoin Test Suite
|
#define BOOST_TEST_MODULE Dash Test Suite
|
||||||
|
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
#include "random.h"
|
#include "random.h"
|
||||||
|
@ -97,7 +97,7 @@ void AddTimeData(const CNetAddr& ip, int64_t nTime)
|
|||||||
if (!fMatch)
|
if (!fMatch)
|
||||||
{
|
{
|
||||||
fDone = true;
|
fDone = true;
|
||||||
string strMessage = _("Warning: Please check that your computer's date and time are correct! If your clock is wrong Bitcoin Core will not work properly.");
|
string strMessage = _("Warning: Please check that your computer's date and time are correct! If your clock is wrong Dash Core will not work properly.");
|
||||||
strMiscWarning = strMessage;
|
strMiscWarning = strMessage;
|
||||||
LogPrintf("*** %s\n", strMessage);
|
LogPrintf("*** %s\n", strMessage);
|
||||||
uiInterface.ThreadSafeMessageBox(strMessage, "", CClientUIInterface::MSG_WARNING);
|
uiInterface.ThreadSafeMessageBox(strMessage, "", CClientUIInterface::MSG_WARNING);
|
||||||
|
Loading…
Reference in New Issue
Block a user