Browse Source

Merge branch 'dev' into getchaintips

pull/151/head
Jonathan "Duke" Leto 6 years ago
parent
commit
dcb5f16c93
  1. 100
      INSTALL.md
  2. 6
      README.md
  3. 4
      configure.ac
  4. 6
      depends/packages/libsodium.mk
  5. 3
      depends/packages/proton.mk
  6. 37
      depends/packages/rust.mk
  7. 12
      doc/man/hush-cli.1
  8. 12
      doc/man/hush-tx.1
  9. 16
      doc/man/hushd.1
  10. 2
      src/Makefile.am
  11. 96
      src/komodo_validation011.h

100
INSTALL.md

@ -1,40 +1,22 @@
# Installing Hush # Installing Hush
## Linux Install with Windows via VirtualBox ## Download and Install Hush v2.0.0 Stable Release
VirtualBox 5.2.8 (released February 27 2018)
https://www.virtualbox.org/wiki/Download_Old_Builds_5_2
Or click below for direct download This method can be used to install release packages:
https://download.virtualbox.org/virtualbox/5.2.8/VirtualBox-5.2.8-121009-Win.exe
Ubuntu Install
Download Ubuntu 16.04.4 LTS (Xenial Xerus) from your favorite mirror, or find it below.
http://www.gtlib.gatech.edu/pub/ubuntu-releases/xenial/
Or click below for direct download
http://www.gtlib.gatech.edu/pub/ubuntu-releases/xenial/ubuntu-16.04.4-desktop-amd64.iso
Set up VirtualBox to install from Ubuntu ISO, 4 Gigs of RAM and 20 GB of storage will work.
---
## Linux Install with VPS (<$3/month)
Ubuntu 16.04 VPS with CPU: 1 vCore, RAM: 512 MB, Storage: and 20 GB SSD will work.
Create a new username, just replace "CREATE_NEW_USERNAME" with a new name.
```sh ```sh
adduser CREATE_NEW_USERNAME && adduser CREATE_NEW_USERNAME sudo cd ~
sudo wget https://github.com/MyHush/hush/releases/download/v2.0.0/hush-2.0.0-c7d6ba61-amd64.deb
sudo dpkg -i hush-2.0.0-c7d6ba61-amd64.deb
``` ```
Reboot and log in as new user
--- To install Hush from source, read on.
## Update Ubuntu ## Build HUSH dependencies
After installation is complete open terminal and do an update. The following build process generally applies to Ubuntu (and similar) Linux
```sh distributions. For best results it is recommended to use Ubuntu Linux 16.04
sudo apt-get update && sudo apt-get upgrade -y or later.
```
## Swap Space (Optional) ## Swap Space (Optional)
You will need at least 4GB of RAM to build hush from git source, OR you can You will need at least 4GB of RAM to build hush from git source, OR you can
@ -47,48 +29,30 @@ sudo mkswap /swapfile
sudo swapon /swapfile sudo swapon /swapfile
``` ```
Now make the swap work better. Add a line to sysctl.conf ## Build on Linux:
```sh
sudo nano /etc/sysctl.conf
```
add to last line of file:
```
vm.swappiness=10
```
Then make it so the swap gets mounted when the server reboots. Edit the fstab file
```sh
sudo nano /etc/fstab
```
add to last line of file:
```
/swapfile none swap sw 0 0
```
## Build HUSH dependencies
The following build process generally applies to Ubuntu (and similar) Linux
distributions. For best results it is recommended to use Ubuntu Linux 16.04
or later.
```sh ```sh
# install build depedencies
sudo apt-get install build-essential pkg-config libc6-dev m4 g++-multilib \ sudo apt-get install build-essential pkg-config libc6-dev m4 g++-multilib \
autoconf libtool ncurses-dev unzip git python zlib1g-dev wget \ autoconf libtool ncurses-dev unzip git python zlib1g-dev wget \
bsdmainutils automake curl unzip nano bsdmainutils automake curl unzip nano
# pull
git clone https://github.com/MyHush/hush.git
cd hush
# Build
./zcutil/build.sh -j$(nproc)
``` ```
## Download and Install Hush v1.0.13 Stable Release ## Download proving key:
```sh
cd ~
sudo wget https://github.com/MyHush/hush/releases/download/v1.0.13/hush-1.0.13-afad8af-amd64.deb
sudo dpkg -i hush-1.0.13-afad8af-amd64.deb
```
## Download proving key
```sh ```sh
./zcutil/fetch-params.sh ./zcutil/fetch-params.sh
``` ```
## Create a HUSH configuration file (*important*): ## Create a HUSH configuration file (*important*):
You can compile Hush without this, but need a config file to run hushd.
```sh ```sh
mkdir -p ~/.hush mkdir -p ~/.hush
echo "rpcuser=username" >> ~/.hush/hush.conf echo "rpcuser=username" >> ~/.hush/hush.conf
@ -101,7 +65,8 @@ echo "addnode=dnsseed.hush.quebec" >> ~/.hush/hush.conf
``` ```
## Run a HUSH Node ## Run a HUSH Node
```ssh
```sh
./hushd ./hushd
``` ```
@ -129,28 +94,19 @@ cd hush
``` ```
## Mac ## Mac
Get dependencies: Install Xcode CLI tools:
```sh ```sh
# Install xcode
xcode-select --install xcode-select --install
# Install brew
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew install cmake autoconf libtool automake coreutils pkgconfig gmp wget
brew install gcc5 --without-multilib
``` ```
Downloading Git source repo, building and running Hush: Downloading Git source repo, building and running Hush:
```sh ```sh
# pull # pull
git clone https://github.com/MyHush/hush.git git clone -b v2.0.0 https://github.com/FireMartZ/hush-apple.git
cd hush cd hush-apple
# fetch key source environment
./zcutil/fetch-params.sh make
# Build
./zcutil/build-mac.sh
# Run a HUSH node # Run a HUSH node
./src/hushd ./src/hushd
``` ```

6
README.md

@ -1,4 +1,4 @@
# HUSH 1.0.14 # HUSH 2.0.0
## What is HUSH? ## What is HUSH?
@ -7,7 +7,7 @@
HUSH (formerly Zdash) is a code fork of [ZCash](https://z.cash/) which has it's own genesis block. HUSH (formerly Zdash) is a code fork of [ZCash](https://z.cash/) which has it's own genesis block.
Based on Bitcoin's code, it intends to offer a far higher standard of privacy Based on Bitcoin's code, it intends to offer a far higher standard of privacy
through a sophisticated zero-knowledge proving scheme that preserves through a sophisticated zero-knowledge proving scheme that preserves
confidentiality of transaction metadata. confidentiality of transaction metadata.
This software is the HUSH node and command-line client. It downloads and stores the entire history This software is the HUSH node and command-line client. It downloads and stores the entire history
of HUSH transactions; depending on the speed of your computer and network of HUSH transactions; depending on the speed of your computer and network
@ -94,7 +94,7 @@ The section of using the command line is relevant to HUSH.
### Not content with command line use of HUSH? ### Not content with command line use of HUSH?
A [HUSH GUI Wallet](https://github.com/MyHush/hush-swing-wallet-ui/releases/tag/v0.71.2-beta) A [HUSH GUI Wallet](https://github.com/MyHush/hush-swing-wallet-ui/releases)
License License
------- -------

4
configure.ac

@ -1,8 +1,8 @@
dnl require autoconf 2.60 (AS_ECHO/AS_ECHO_N) dnl require autoconf 2.60 (AS_ECHO/AS_ECHO_N)
AC_PREREQ([2.60]) AC_PREREQ([2.60])
define(_CLIENT_VERSION_MAJOR, 1) define(_CLIENT_VERSION_MAJOR, 2)
define(_CLIENT_VERSION_MINOR, 0) define(_CLIENT_VERSION_MINOR, 0)
define(_CLIENT_VERSION_REVISION, 14) define(_CLIENT_VERSION_REVISION, 0)
define(_CLIENT_VERSION_BUILD, 50) 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(_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))) 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)))

6
depends/packages/libsodium.mk

@ -1,8 +1,8 @@
package=libsodium package=libsodium
$(package)_version=1.0.11 $(package)_version=1.0.16
$(package)_download_path=https://download.libsodium.org/libsodium/releases/ $(package)_download_path=https://download.libsodium.org/libsodium/releases/
$(package)_file_name=libsodium-1.0.11.tar.gz $(package)_file_name=libsodium-1.0.16.tar.gz
$(package)_sha256_hash=a14549db3c49f6ae2170cbbf4664bd48ace50681045e8dbea7c8d9fb96f9c765 $(package)_sha256_hash=eeadc7e1e1bcef09680fb4837d448fbdf57224978f865ac1c16745868fbd0533
$(package)_dependencies= $(package)_dependencies=
$(package)_config_opts= $(package)_config_opts=

3
depends/packages/proton.mk

@ -1,6 +1,6 @@
package=proton package=proton
$(package)_version=0.17.0 $(package)_version=0.17.0
$(package)_download_path=http://apache.cs.utah.edu/qpid/proton/$($(package)_version) $(package)_download_path=https://archive.apache.org/dist/qpid/proton/$($(package)_version)
$(package)_file_name=qpid-proton-$($(package)_version).tar.gz $(package)_file_name=qpid-proton-$($(package)_version).tar.gz
$(package)_sha256_hash=6ffd26d3d0e495bfdb5d9fefc5349954e6105ea18cc4bb191161d27742c5a01a $(package)_sha256_hash=6ffd26d3d0e495bfdb5d9fefc5349954e6105ea18cc4bb191161d27742c5a01a
$(package)_patches=minimal-build.patch $(package)_patches=minimal-build.patch
@ -21,4 +21,3 @@ endef
define $(package)_stage_cmds define $(package)_stage_cmds
cd build; $(MAKE) VERBOSE=1 DESTDIR=$($(package)_staging_prefix_dir) install cd build; $(MAKE) VERBOSE=1 DESTDIR=$($(package)_staging_prefix_dir) install
endef endef

37
depends/packages/rust.mk

@ -1,11 +1,40 @@
package=rust package=rust
$(package)_version=1.16.0 $(package)_version=1.28.0
$(package)_download_path=https://static.rust-lang.org/dist $(package)_download_path=https://static.rust-lang.org/dist
$(package)_file_name=rust-$($(package)_version)-x86_64-unknown-linux-gnu.tar.gz $(package)_file_name_linux=rust-$($(package)_version)-x86_64-unknown-linux-gnu.tar.gz
$(package)_sha256_hash=48621912c242753ba37cad5145df375eeba41c81079df46f93ffb4896542e8fd $(package)_sha256_hash_linux=2a1390340db1d24a9498036884e6b2748e9b4b057fc5219694e298bdaa37b810
$(package)_file_name_darwin=rust-$($(package)_version)-x86_64-apple-darwin.tar.gz $(package)_file_name_darwin=rust-$($(package)_version)-x86_64-apple-darwin.tar.gz
$(package)_sha256_hash_darwin=2d08259ee038d3a2c77a93f1a31fc59e7a1d6d1bbfcba3dba3c8213b2e5d1926 $(package)_sha256_hash_darwin=5d7a70ed4701fe9410041c1eea025c95cad97e5b3d8acc46426f9ac4f9f02393
$(package)_file_name_mingw32=rust-$($(package)_version)-x86_64-pc-windows-gnu.tar.gz
$(package)_sha256_hash_mingw32=55c07426f791c51c8a2b6934b35784175c4abb4e03f123f3e847109c4dc1ad8b
ifeq ($(host_os),mingw32)
$(package)_build_subdir=buildos
$(package)_extra_sources = $($(package)_file_name_$(build_os))
define $(package)_fetch_cmds
$(call fetch_file,$(package),$($(package)_download_path),$($(package)_download_file),$($(package)_file_name),$($(package)_sha256_hash)) && \
$(call fetch_file,$(package),$($(package)_download_path),$($(package)_file_name_$(build_os)),$($(package)_file_name_$(build_os)),$($(package)_sha256_hash_$(build_os)))
endef
define $(package)_extract_cmds
mkdir -p $($(package)_extract_dir) && \
echo "$($(package)_sha256_hash) $($(package)_source)" > $($(package)_extract_dir)/.$($(package)_file_name).hash && \
echo "$($(package)_sha256_hash_$(build_os)) $($(package)_source_dir)/$($(package)_file_name_$(build_os))" >> $($(package)_extract_dir)/.$($(package)_file_name).hash && \
$(build_SHA256SUM) -c $($(package)_extract_dir)/.$($(package)_file_name).hash && \
mkdir mingw32 && \
tar --strip-components=1 -xf $($(package)_source) -C mingw32 && \
mkdir buildos && \
tar --strip-components=1 -xf $($(package)_source_dir)/$($(package)_file_name_$(build_os)) -C buildos
endef
define $(package)_stage_cmds
./install.sh --destdir=$($(package)_staging_dir) --prefix=$(host_prefix)/native --disable-ldconfig && \
cp -r ../mingw32/rust-std-x86_64-pc-windows-gnu/lib/rustlib/x86_64-pc-windows-gnu $($(package)_staging_dir)$(host_prefix)/native/lib/rustlib
endef
else
define $(package)_stage_cmds define $(package)_stage_cmds
./install.sh --destdir=$($(package)_staging_dir) --prefix=$(host_prefix)/native --disable-ldconfig ./install.sh --destdir=$($(package)_staging_dir) --prefix=$(host_prefix)/native --disable-ldconfig
endef endef
endif

12
doc/man/hush-cli.1

@ -1,9 +1,9 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.3. .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.3.
.TH HUSH-CLI "1" "March 2018" "hush-cli v1.0.14-a0d4aef" "User Commands" .TH HUSH-CLI "1" "October 2018" "hush-cli v2.0.0" "User Commands"
.SH NAME .SH NAME
hush-cli \- manual page for hush-cli v1.0.14-a0d4aef hush-cli \- manual page for hush-cli v2.0.0
.SH DESCRIPTION .SH DESCRIPTION
Hush RPC client version v1.0.14\-a0d4aef Hush RPC client version v2.0.0
.PP .PP
In order to ensure you are adequately protecting your privacy when using Hush, In order to ensure you are adequately protecting your privacy when using Hush,
please see <https://github.com/MyHush/hush/blob/master/doc/security.md>. please see <https://github.com/MyHush/hush/blob/master/doc/security.md>.
@ -70,9 +70,9 @@ Timeout in seconds during HTTP requests, or 0 for no timeout. (default:
In order to ensure you are adequately protecting your privacy when using Hush, In order to ensure you are adequately protecting your privacy when using Hush,
please see <https://github.com/MyHush/hush/blob/master/doc/security.md>. please see <https://github.com/MyHush/hush/blob/master/doc/security.md>.
Copyright (C) 2009-2017 The Bitcoin Core Developers Copyright (C) 2009-2018 The Bitcoin Core Developers
Copyright (C) 2015-2017 The Zcash Developers Copyright (C) 2015-2018 The Zcash Developers
Copyright (C) 2016-2017 The Hush Developers Copyright (C) 2016-2018 The Hush Developers
This is experimental software. This is experimental software.

12
doc/man/hush-tx.1

@ -1,9 +1,9 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.3. .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.3.
.TH HUSH-TX "1" "March 2018" "hush-tx v1.0.14-a0d4aef" "User Commands" .TH HUSH-TX "1" "October 2018" "hush-tx v2.0.0" "User Commands"
.SH NAME .SH NAME
hush-tx \- manual page for hush-tx v1.0.14-a0d4aef hush-tx \- manual page for hush-tx v2.0.0
.SH DESCRIPTION .SH DESCRIPTION
Hush hush\-tx utility version v1.0.14\-a0d4aef Hush hush\-tx utility version v2.0.0
.SS "Usage:" .SS "Usage:"
.TP .TP
hush\-tx [options] <hex\-tx> [commands] hush\-tx [options] <hex\-tx> [commands]
@ -88,9 +88,9 @@ Set register NAME to given JSON\-STRING
In order to ensure you are adequately protecting your privacy when using Hush, In order to ensure you are adequately protecting your privacy when using Hush,
please see <https://github.com/MyHush/hush/blob/master/doc/security.md>. please see <https://github.com/MyHush/hush/blob/master/doc/security.md>.
Copyright (C) 2009-2017 The Bitcoin Core Developers Copyright (C) 2009-2018 The Bitcoin Core Developers
Copyright (C) 2015-2017 The Zcash Developers Copyright (C) 2015-2018 The Zcash Developers
Copyright (C) 2016-2017 The Hush Developers Copyright (C) 2016-2018 The Hush Developers
This is experimental software. This is experimental software.

16
doc/man/hushd.1

@ -1,9 +1,9 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.3. .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.3.
.TH HUSHD "1" "March 2018" "hushd v1.0.14-a0d4aef" "User Commands" .TH HUSHD "1" "October 2018" "hushd v2.0.0" "User Commands"
.SH NAME .SH NAME
hushd \- manual page for hushd v1.0.14-a0d4aef hushd \- manual page for hushd v2.0.0
.SH DESCRIPTION .SH DESCRIPTION
Hush Daemon version v1.0.14\-a0d4aef Hush Daemon version v2.0.0
.PP .PP
In order to ensure you are adequately protecting your privacy when using Hush, In order to ensure you are adequately protecting your privacy when using Hush,
please see <https://github.com/MyHush/hush/blob/master/doc/security.md>. please see <https://github.com/MyHush/hush/blob/master/doc/security.md>.
@ -54,7 +54,7 @@ Specify data directory
\fB\-disabledeprecation=\fR<version> \fB\-disabledeprecation=\fR<version>
.IP .IP
Disable block\-height node deprecation and automatic shutdown (example: Disable block\-height node deprecation and automatic shutdown (example:
\fB\-disabledeprecation\fR=\fI\,1\/\fR.0.14) \fB\-disabledeprecation\fR=\fI\,2\/\fR.0.0)
.HP .HP
\fB\-exportdir=\fR<dir> \fB\-exportdir=\fR<dir>
.IP .IP
@ -79,7 +79,7 @@ mempool will accept (default: 0 = no limit applied)
.HP .HP
\fB\-par=\fR<n> \fB\-par=\fR<n>
.IP .IP
Set the number of script verification threads (\fB\-2\fR to 16, 0 = auto, <0 = Set the number of script verification threads (\fB\-4\fR to 16, 0 = auto, <0 =
leave that many cores free, default: 0) leave that many cores free, default: 0)
.HP .HP
\fB\-pid=\fR<file> \fB\-pid=\fR<file>
@ -504,9 +504,9 @@ console, 600 otherwise)
In order to ensure you are adequately protecting your privacy when using Hush, In order to ensure you are adequately protecting your privacy when using Hush,
please see <https://github.com/MyHush/hush/blob/master/doc/security.md>. please see <https://github.com/MyHush/hush/blob/master/doc/security.md>.
Copyright (C) 2009-2017 The Bitcoin Core Developers Copyright (C) 2009-2018 The Bitcoin Core Developers
Copyright (C) 2015-2017 The Zcash Developers Copyright (C) 2015-2018 The Zcash Developers
Copyright (C) 2016-2017 The Hush Developers Copyright (C) 2016-2018 The Hush Developers
This is experimental software. This is experimental software.

2
src/Makefile.am

@ -613,7 +613,7 @@ clean-local:
.rc.o: .rc.o:
@test -f $(WINDRES) @test -f $(WINDRES)
$(AM_V_GEN) $(WINDRES) -DWINDRES_PREPROC -i $< -o $@ $(AM_V_GEN) $(WINDRES) -DWINDRES_PREPROC -DHAVE_CONFIG_H -i $< -o $@
.mm.o: .mm.o:
$(AM_V_CXX) $(OBJCXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(AM_V_CXX) $(OBJCXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \

96
src/komodo_validation011.h

@ -90,22 +90,16 @@ int32_t gettxout_scriptPubKey(int32_t height,uint8_t *scriptPubKey,int32_t maxsi
{ {
if ( GetTransaction(txid,tx,hashBlock,false) == 0 ) if ( GetTransaction(txid,tx,hashBlock,false) == 0 )
{ {
fprintf(stderr,"ht.%d couldnt get txid.%s !\n",height,txid.GetHex().c_str()); LogPrint("dpow","ht.%d couldnt get txid.%s !\n",height,txid.GetHex().c_str());
return(-1); return(-1);
} }
} }
else else
{ {
CWallet * const pwallet = vpwallets[0]; if ( GetTransaction(txid,tx,hashBlock,true) == 0 )
if ( pwallet != 0 )
{ {
auto it = pwallet->mapWallet.find(txid); LogPrint("dpow","ht.%d couldnt get txid.%s !\n",height,txid.GetHex().c_str());
if ( it != pwallet->mapWallet.end() ) return(-1);
{
const CWalletTx& wtx = it->second;
tx = *wtx.tx;
fprintf(stderr,"found tx in wallet\n");
}
} }
} }
@ -117,11 +111,11 @@ int32_t gettxout_scriptPubKey(int32_t height,uint8_t *scriptPubKey,int32_t maxsi
for (i=0; i<maxsize&&i<m; i++) { for (i=0; i<maxsize&&i<m; i++) {
scriptPubKey[i] = ptr[i]; scriptPubKey[i] = ptr[i];
} }
fprintf(stderr,"got scriptPubKey[%d] via rawtransaction ht.%d %s\n",m,height,txid.GetHex().c_str()); LogPrint("dpow","got scriptPubKey[%d] via rawtransaction ht.%d %s\n",m,height,txid.GetHex().c_str());
return(i); return(i);
} }
else if ( !tx.IsNull() ) else if ( !tx.IsNull() )
fprintf(stderr,"gettxout_scriptPubKey ht.%d n.%d > voutsize.%d\n",height,n,(int32_t)tx.vout.size()); LogPrint("dpow","gettxout_scriptPubKey ht.%d n.%d > voutsize.%d\n",height,n,(int32_t)tx.vout.size());
return(-1); return(-1);
} }
@ -148,7 +142,7 @@ int32_t komodo_importaddress(std::string addr)
return(1); return(1);
} }
} }
printf("%s -> komodo_importaddress failed valid.%d\n",addr.c_str(),address.IsValid()); LogPrint("dpow","%s -> komodo_importaddress failed valid.%d\n",addr.c_str(),address.IsValid());
} }
return(-1); return(-1);
} }
@ -520,7 +514,7 @@ int32_t decode_hex(uint8_t *bytes,int32_t n,char *hex)
if ( n > 0 ) if ( n > 0 )
{ {
bytes[0] = unhex(hex[0]); bytes[0] = unhex(hex[0]);
printf("decode_hex n.%d hex[0] (%c) -> %d hex.(%s) [n*2+1: %d] [n*2: %d %c] len.%ld\n",n,hex[0],bytes[0],hex,hex[n*2+1],hex[n*2],hex[n*2],(long)strlen(hex)); LogPrint("dpow","decode_hex n.%d hex[0] (%c) -> %d hex.(%s) [n*2+1: %d] [n*2: %d %c] len.%ld\n",n,hex[0],bytes[0],hex,hex[n*2+1],hex[n*2],hex[n*2],(long)strlen(hex));
} }
bytes++; bytes++;
hex++; hex++;
@ -578,9 +572,9 @@ CBlockIndex *komodo_chainactive(int32_t height)
{ {
if ( height <= tipindex->nHeight ) if ( height <= tipindex->nHeight )
return(chainActive[height]); return(chainActive[height]);
else fprintf(stderr,"komodo_chainactive height %d > active.%d\n",height,chainActive.Tip()->nHeight); else LogPrint("dpow","komodo_chainactive height %d > active.%d\n",height,chainActive.Tip()->nHeight);
} }
fprintf(stderr,"komodo_chainactive null chainActive.Tip() height %d\n",height); LogPrint("dpow","komodo_chainactive null chainActive.Tip() height %d\n",height);
return(0); return(0);
} }
@ -589,7 +583,7 @@ uint32_t komodo_heightstamp(int32_t height)
CBlockIndex *ptr; CBlockIndex *ptr;
if ( height > 0 && (ptr= komodo_chainactive(height)) != 0 ) if ( height > 0 && (ptr= komodo_chainactive(height)) != 0 )
return(ptr->nTime); return(ptr->nTime);
else fprintf(stderr,"komodo_heightstamp null ptr for block.%d\n",height); else LogPrint("dpow","komodo_heightstamp null ptr for block.%d\n",height);
return(0); return(0);
} }
@ -760,13 +754,13 @@ void komodo_importpubkeys()
//fprintf(stderr,"pubkey=%s, addr=%s\n", pubkey, addr.c_str() ); //fprintf(stderr,"pubkey=%s, addr=%s\n", pubkey, addr.c_str() );
if ( (val= komodo_importaddress(addr)) < 0 ) if ( (val= komodo_importaddress(addr)) < 0 )
LogPrintf("dpow: error importing (%s)\n",addr.c_str()); LogPrint("dpow","dpow: error importing (%s)\n",addr.c_str());
else if ( val == 0 ) else if ( val == 0 )
dispflag++; dispflag++;
} }
} }
if ( dispflag != 0 ) if ( dispflag != 0 )
fprintf(stderr,"%d Notary pubkeys imported\n",dispflag); LogPrint("dpow","%d Notary pubkeys imported\n",dispflag);
} }
int32_t komodo_init() int32_t komodo_init()
@ -847,7 +841,7 @@ int32_t komodo_notaries(uint8_t pubkeys[64][33],int32_t height,uint32_t timestam
} }
memcpy(pubkeys,elected_pubkeys0,n0 * 33); memcpy(pubkeys,elected_pubkeys0,n0 * 33);
if ( ASSETCHAINS_SYMBOL[0] != 0 ) if ( ASSETCHAINS_SYMBOL[0] != 0 )
fprintf(stderr,"%s height.%d t.%u elected.%d notaries\n",ASSETCHAINS_SYMBOL,height,timestamp,n0); LogPrint("dpow","%s height.%d t.%u elected.%d notaries\n",ASSETCHAINS_SYMBOL,height,timestamp,n0);
return(n0); return(n0);
} }
else //if ( (timestamp != 0 && timestamp <= KOMODO_NOTARIES_TIMESTAMP2) || height <= KOMODO_NOTARIES_HEIGHT2 ) else //if ( (timestamp != 0 && timestamp <= KOMODO_NOTARIES_TIMESTAMP2) || height <= KOMODO_NOTARIES_HEIGHT2 )
@ -858,7 +852,7 @@ int32_t komodo_notaries(uint8_t pubkeys[64][33],int32_t height,uint32_t timestam
for (i=0; i<n1; i++) for (i=0; i<n1; i++)
decode_hex(elected_pubkeys1[i],33,(char *)Notaries_elected1[i][1]); decode_hex(elected_pubkeys1[i],33,(char *)Notaries_elected1[i][1]);
if ( ASSETCHAINS_SYMBOL[0] != 0 ) if ( ASSETCHAINS_SYMBOL[0] != 0 )
fprintf(stderr,"%s height.%d t.%u elected.%d notaries2\n",ASSETCHAINS_SYMBOL,height,timestamp,n1); LogPrint("dpow","%s height.%d t.%u elected.%d notaries2\n",ASSETCHAINS_SYMBOL,height,timestamp,n1);
did1 = 1; did1 = 1;
} }
memcpy(pubkeys,elected_pubkeys1,n1 * 33); memcpy(pubkeys,elected_pubkeys1,n1 * 33);
@ -884,7 +878,7 @@ void komodo_disconnect(CBlockIndex *pindex,CBlock *block)
{ {
if ( (int32_t)pindex->nHeight <= NOTARIZED_HEIGHT ) if ( (int32_t)pindex->nHeight <= NOTARIZED_HEIGHT )
{ {
fprintf(stderr,"komodo_disconnect unexpected reorg pindex->nHeight.%d vs %d\n",(int32_t)pindex->nHeight,NOTARIZED_HEIGHT); LogPrint("dpow","komodo_disconnect unexpected reorg pindex->nHeight.%d vs %d\n",(int32_t)pindex->nHeight,NOTARIZED_HEIGHT);
komodo_clearstate(); // bruteforce shortcut. on any reorg, no active notarization until next one is seen komodo_clearstate(); // bruteforce shortcut. on any reorg, no active notarization until next one is seen
} }
} }
@ -960,7 +954,7 @@ int32_t komodo_notarizeddata(int32_t nHeight,uint256 *notarized_hashp,uint256 *n
{ {
if ( NPOINTS[i].nHeight >= nHeight ) if ( NPOINTS[i].nHeight >= nHeight )
{ {
LogPrintf("dpow: flag.1 i.%d np->ht %d [%d].ht %d >= nHeight.%d, last.%d num.%d\n",i,np->nHeight,i,NPOINTS[i].nHeight,nHeight,last_NPOINTSi,NUM_NPOINTS); LogPrint("dpow","dpow: flag.1 i.%d np->ht %d [%d].ht %d >= nHeight.%d, last.%d num.%d\n",i,np->nHeight,i,NPOINTS[i].nHeight,nHeight,last_NPOINTSi,NUM_NPOINTS);
flag = 1; flag = 1;
break; break;
} }
@ -987,7 +981,7 @@ int32_t komodo_notarizeddata(int32_t nHeight,uint256 *notarized_hashp,uint256 *n
if ( np != 0 ) if ( np != 0 )
{ {
if ( np->nHeight >= nHeight || (i < NUM_NPOINTS && np[1].nHeight < nHeight) ) if ( np->nHeight >= nHeight || (i < NUM_NPOINTS && np[1].nHeight < nHeight) )
fprintf(stderr,"warning: flag.%d i.%d np->ht %d [1].ht %d >= nHeight.%d\n",flag,i,np->nHeight,np[1].nHeight,nHeight); LogPrint("dpow","warning: flag.%d i.%d np->ht %d [1].ht %d >= nHeight.%d\n",flag,i,np->nHeight,np[1].nHeight,nHeight);
*notarized_hashp = np->notarized_hash; *notarized_hashp = np->notarized_hash;
*notarized_desttxidp = np->notarized_desttxid; *notarized_desttxidp = np->notarized_desttxid;
return(np->notarized_height); return(np->notarized_height);
@ -1013,7 +1007,7 @@ void komodo_notarized_update(int32_t nHeight,int32_t notarized_height,uint256 no
sep = "/"; sep = "/";
#endif #endif
sprintf(fname,"%s%snotarizations%s",GetDefaultDataDir().string().c_str(), sep.c_str(), suffix.c_str()); sprintf(fname,"%s%snotarizations%s",GetDefaultDataDir().string().c_str(), sep.c_str(), suffix.c_str());
LogPrintf("dpow: fname.(%s)\n",fname); LogPrint("dpow","dpow: fname.(%s)\n",fname);
if ( (fp= fopen(fname,"rb+")) == 0 ) if ( (fp= fopen(fname,"rb+")) == 0 )
fp = fopen(fname,"wb+"); fp = fopen(fname,"wb+");
else else
@ -1036,12 +1030,12 @@ void komodo_notarized_update(int32_t nHeight,int32_t notarized_height,uint256 no
NOTARIZED_MOMDEPTH = np->MoMdepth; NOTARIZED_MOMDEPTH = np->MoMdepth;
//fprintf(stderr,"%d ",np->notarized_height); //fprintf(stderr,"%d ",np->notarized_height);
fpos = ftell(fp); fpos = ftell(fp);
} else LogPrintf("dpow: %s error with notarization ht.%d %s\n",ASSETCHAINS_SYMBOL,N.notarized_height,pindex->GetBlockHash().ToString().c_str()); } else LogPrint("dpow","dpow: %s error with notarization ht.%d %s\n",ASSETCHAINS_SYMBOL,N.notarized_height,pindex->GetBlockHash().ToString().c_str());
} }
if ( ftell(fp) != fpos ) if ( ftell(fp) != fpos )
fseek(fp,fpos,SEEK_SET); fseek(fp,fpos,SEEK_SET);
} }
LogPrintf("dpow: finished loading %s [pubkey %s]\n",fname,NOTARY_PUBKEY.c_str()); LogPrint("dpow","dpow: finished loading %s [pubkey %s]\n",fname,NOTARY_PUBKEY.c_str());
didinit = 1; didinit = 1;
} }
if ( notarized_height == 0 ) if ( notarized_height == 0 )
@ -1051,16 +1045,16 @@ void komodo_notarized_update(int32_t nHeight,int32_t notarized_height,uint256 no
} }
if ( notarized_height >= nHeight ) if ( notarized_height >= nHeight )
{ {
LogPrintf("dpow: komodo_notarized_update REJECT notarized_height %d > %d nHeight\n",notarized_height,nHeight); LogPrint("dpow","dpow: komodo_notarized_update REJECT notarized_height %d > %d nHeight\n",notarized_height,nHeight);
return; return;
} }
pindex = komodo_chainactive(notarized_height); pindex = komodo_chainactive(notarized_height);
if ( pindex == 0 || pindex->GetBlockHash() != notarized_hash || notarized_height != pindex->nHeight ) if ( pindex == 0 || pindex->GetBlockHash() != notarized_hash || notarized_height != pindex->nHeight )
{ {
LogPrintf("dpow: komodo_notarized_update reject nHeight.%d notarized_height.%d:%d\n",nHeight,notarized_height,(int32_t)pindex->nHeight); LogPrint("dpow","dpow: komodo_notarized_update reject nHeight.%d notarized_height.%d:%d\n",nHeight,notarized_height,(int32_t)pindex->nHeight);
return; return;
} }
LogPrintf("dpow: komodo_notarized_update nHeight.%d notarized_height.%d prev.%d\n",nHeight,notarized_height,NPOINTS!=0?NPOINTS[NUM_NPOINTS-1].notarized_height:-1); LogPrint("dpow","dpow: komodo_notarized_update nHeight.%d notarized_height.%d prev.%d\n",nHeight,notarized_height,NPOINTS!=0?NPOINTS[NUM_NPOINTS-1].notarized_height:-1);
portable_mutex_lock(&komodo_mutex); portable_mutex_lock(&komodo_mutex);
NPOINTS = (struct notarized_checkpoint *)realloc(NPOINTS,(NUM_NPOINTS+1) * sizeof(*NPOINTS)); NPOINTS = (struct notarized_checkpoint *)realloc(NPOINTS,(NUM_NPOINTS+1) * sizeof(*NPOINTS));
np = &NPOINTS[NUM_NPOINTS++]; np = &NPOINTS[NUM_NPOINTS++];
@ -1069,7 +1063,7 @@ void komodo_notarized_update(int32_t nHeight,int32_t notarized_height,uint256 no
NOTARIZED_HEIGHT = np->notarized_height = notarized_height; NOTARIZED_HEIGHT = np->notarized_height = notarized_height;
NOTARIZED_HASH = np->notarized_hash = notarized_hash; NOTARIZED_HASH = np->notarized_hash = notarized_hash;
NOTARIZED_DESTTXID = np->notarized_desttxid = notarized_desttxid; NOTARIZED_DESTTXID = np->notarized_desttxid = notarized_desttxid;
LogPrintf("dpow: komodo_notarized_update NOTARIZED (HEIGHT,HASH,DESTTXID) = (%d, %s, %s)\n", NOTARIZED_HEIGHT, NOTARIZED_HASH.GetHex().c_str(), NOTARIZED_DESTTXID.GetHex().c_str()); //LogPrintf("dpow: NOTARIZED (HEIGHT,HASH,DESTTXID) = (%d, %s, %s)\n", NOTARIZED_HEIGHT, NOTARIZED_HASH.GetHex().c_str(), NOTARIZED_DESTTXID.GetHex().c_str());
if ( MoM != zero && MoMdepth > 0 ) if ( MoM != zero && MoMdepth > 0 )
{ {
NOTARIZED_MOM = np->MoM = MoM; NOTARIZED_MOM = np->MoM = MoM;
@ -1079,7 +1073,7 @@ void komodo_notarized_update(int32_t nHeight,int32_t notarized_height,uint256 no
{ {
if ( fwrite(np,1,sizeof(*np),fp) == sizeof(*np) ) if ( fwrite(np,1,sizeof(*np),fp) == sizeof(*np) )
fflush(fp); fflush(fp);
else LogPrintf("dpow: error writing notarization to %d\n",(int32_t)ftell(fp)); else LogPrint("dpow","dpow: error writing notarization to %d\n",(int32_t)ftell(fp));
} }
// add to stored notarizations // add to stored notarizations
portable_mutex_unlock(&komodo_mutex); portable_mutex_unlock(&komodo_mutex);
@ -1098,22 +1092,22 @@ int32_t komodo_checkpoint(int32_t *notarized_heightp,int32_t nHeight,uint256 has
{ {
notary = mapBlockIndex[notarized_hash]; notary = mapBlockIndex[notarized_hash];
if ( IS_NOTARY ) if ( IS_NOTARY )
printf("nHeight.%d -> (%d %s)\n",pindex->nHeight,notarized_height,notarized_hash.ToString().c_str()); LogPrint("dpow","nHeight.%d -> (%d %s)\n",pindex->nHeight,notarized_height,notarized_hash.ToString().c_str());
if ( notary->nHeight == notarized_height ) // if notarized_hash not in chain, reorg if ( notary->nHeight == notarized_height ) // if notarized_hash not in chain, reorg
{ {
if ( nHeight < notarized_height ) if ( nHeight < notarized_height )
{ {
fprintf(stderr,"nHeight.%d < NOTARIZED_HEIGHT.%d\n",nHeight,notarized_height); LogPrint("dpow","nHeight.%d < NOTARIZED_HEIGHT.%d\n",nHeight,notarized_height);
return(-1); return(-1);
} }
else if ( nHeight == notarized_height && memcmp(&hash,&notarized_hash,sizeof(hash)) != 0 ) else if ( nHeight == notarized_height && memcmp(&hash,&notarized_hash,sizeof(hash)) != 0 )
{ {
fprintf(stderr,"nHeight.%d == NOTARIZED_HEIGHT.%d, diff hash\n",nHeight,notarized_height); LogPrint("dpow","nHeight.%d == NOTARIZED_HEIGHT.%d, diff hash\n",nHeight,notarized_height);
return(-1); return(-1);
} }
} else fprintf(stderr,"unexpected error notary_hash %s ht.%d at ht.%d\n",notarized_hash.ToString().c_str(),notarized_height,notary->nHeight); } else LogPrint("dpow","unexpected error notary_hash %s ht.%d at ht.%d\n",notarized_hash.ToString().c_str(),notarized_height,notary->nHeight);
} else if ( notarized_height > 0 ) } else if ( notarized_height > 0 )
fprintf(stderr,"%s couldnt find notarized.(%s %d) ht.%d\n",ASSETCHAINS_SYMBOL,notarized_hash.ToString().c_str(),notarized_height,pindex->nHeight); LogPrint("dpow","%s couldnt find notarized.(%s %d) ht.%d\n",ASSETCHAINS_SYMBOL,notarized_hash.ToString().c_str(),notarized_height,pindex->nHeight);
return(0); return(0);
} }
@ -1138,7 +1132,7 @@ void komodo_voutupdate(int32_t txi,int32_t vout,uint8_t *scriptbuf,int32_t scrip
opretlen = scriptbuf[len++]; opretlen = scriptbuf[len++];
opretlen += (scriptbuf[len++] << 8); opretlen += (scriptbuf[len++] << 8);
} }
printf("opretlen.%d vout.%d [%s].(%s)\n",opretlen,vout,(char *)&scriptbuf[len+32*2+4],ASSETCHAINS_SYMBOL); LogPrint("dpow","opretlen.%d vout.%d [%s].(%s)\n",opretlen,vout,(char *)&scriptbuf[len+32*2+4],ASSETCHAINS_SYMBOL);
if ( vout == 1 && opretlen-3 >= 32*2+4 && strcmp(ASSETCHAINS_SYMBOL,(char *)&scriptbuf[len+32*2+4]) == 0 ) if ( vout == 1 && opretlen-3 >= 32*2+4 && strcmp(ASSETCHAINS_SYMBOL,(char *)&scriptbuf[len+32*2+4]) == 0 )
{ {
len += iguana_rwbignum(0,&scriptbuf[len],32,(uint8_t *)&hash); len += iguana_rwbignum(0,&scriptbuf[len],32,(uint8_t *)&hash);
@ -1164,12 +1158,12 @@ void komodo_voutupdate(int32_t txi,int32_t vout,uint8_t *scriptbuf,int32_t scrip
} }
else else
{ {
LogPrintf("dpow: VALID %s MoM.%s [%d]\n",ASSETCHAINS_SYMBOL,MoM.ToString().c_str(),MoMdepth); LogPrint("dpow","dpow: VALID %s MoM.%s [%d]\n",ASSETCHAINS_SYMBOL,MoM.ToString().c_str(),MoMdepth);
} }
} }
komodo_notarized_update(height,*notarizedheightp,hash,desttxid,MoM,MoMdepth); komodo_notarized_update(height,*notarizedheightp,hash,desttxid,MoM,MoMdepth);
LogPrintf("dpow: %s ht.%d NOTARIZED.%d %s %sTXID.%s lens.(%d %d)\n",ASSETCHAINS_SYMBOL,height,*notarizedheightp,hash.ToString().c_str(),"KMD",desttxid.ToString().c_str(),opretlen,len); LogPrint("dpow","dpow: %s ht.%d NOTARIZED.%d %s %sTXID.%s lens.(%d %d)\n",ASSETCHAINS_SYMBOL,height,*notarizedheightp,hash.ToString().c_str(),"KMD",desttxid.ToString().c_str(),opretlen,len);
} else LogPrintf("dpow: notarized.%d ht %d vs prev %d vs height.%d\n",notarized,*notarizedheightp,NOTARIZED_HEIGHT,height); } else LogPrint("dpow","dpow: notarized.%d ht %d vs prev %d vs height.%d\n",notarized,*notarizedheightp,NOTARIZED_HEIGHT,height);
} }
} }
} }
@ -1193,13 +1187,13 @@ void komodo_connectblock(CBlockIndex *pindex,CBlock& block)
else else
{ {
if ( pindex->nHeight != hwmheight ) if ( pindex->nHeight != hwmheight )
LogPrintf("dpow: %s hwmheight.%d vs pindex->nHeight.%d t.%u reorg.%d\n",ASSETCHAINS_SYMBOL,hwmheight,pindex->nHeight,(uint32_t)pindex->nTime,hwmheight-pindex->nHeight); LogPrint("dpow","dpow: %s hwmheight.%d vs pindex->nHeight.%d t.%u reorg.%d\n",ASSETCHAINS_SYMBOL,hwmheight,pindex->nHeight,(uint32_t)pindex->nTime,hwmheight-pindex->nHeight);
} }
if ( pindex != 0 ) if ( pindex != 0 )
{ {
height = pindex->nHeight; height = pindex->nHeight;
//txn_count = block.vtx.size(); txn_count = block.vtx.size();
//fprintf(stderr, "txn_count=%d\n", txn_count); //fprintf(stderr, "txn_count=%d\n", txn_count);
for (i=0; i<txn_count; i++) for (i=0; i<txn_count; i++)
{ {
@ -1223,19 +1217,19 @@ void komodo_connectblock(CBlockIndex *pindex,CBlock& block)
} }
} }
} else if ( block.vtx[i].vin[j].prevout.hash != zero ) { } else if ( block.vtx[i].vin[j].prevout.hash != zero ) {
fprintf(stderr,"%s cant get scriptPubKey for ht.%d txi.%d vin.%d\n",ASSETCHAINS_SYMBOL,height,i,j); //if (IS_NOTARY)
// LogPrint("dpow","%s cant get scriptPubKey for ht.%d txi.%d vin.%d\n",ASSETCHAINS_SYMBOL,height,i,j);
} }
} }
numvalid = bitweight(signedmask); numvalid = bitweight(signedmask);
if ( numvalid >= KOMODO_MINRATIFY ) if ( numvalid >= KOMODO_MINRATIFY )
notarized = 1; notarized = 1;
if ( IS_NOTARY ) if ( IS_NOTARY )
printf("(tx.%d: ",i); LogPrint("dpow","(tx.%d: ",i);
for (j=0; j<numvouts; j++) for (j=0; j<numvouts; j++)
{ {
if ( IS_NOTARY ) if ( IS_NOTARY )
printf("%.8f ",dstr(block.vtx[i].vout[j].nValue)); LogPrint("dpow","%.8f ",dstr(block.vtx[i].vout[j].nValue));
len = block.vtx[i].vout[j].scriptPubKey.size(); len = block.vtx[i].vout[j].scriptPubKey.size();
if ( len >= (int32_t)sizeof(uint32_t) && len <= (int32_t)sizeof(scriptbuf) ) if ( len >= (int32_t)sizeof(uint32_t) && len <= (int32_t)sizeof(scriptbuf) )
{ {
@ -1244,11 +1238,11 @@ void komodo_connectblock(CBlockIndex *pindex,CBlock& block)
} }
} }
if ( NOTARY_PUBKEY33[0] != 0 ) if ( NOTARY_PUBKEY33[0] != 0 )
printf(") "); LogPrint("dpow",") ");
if ( NOTARY_PUBKEY33[0] != 0 ) if ( NOTARY_PUBKEY33[0] != 0 )
printf("%s ht.%d\n",ASSETCHAINS_SYMBOL,height); LogPrint("dpow","%s ht.%d\n",ASSETCHAINS_SYMBOL,height);
LogPrintf("dpow: [%s] ht.%d txi.%d signedmask.%llx numvins.%d numvouts.%d notarized.%d special.%d\n",ASSETCHAINS_SYMBOL,height,i,(long long)signedmask,numvins,numvouts,notarized,specialtx); LogPrint("dpow","dpow: [%s] ht.%d txi.%d signedmask.%llx numvins.%d numvouts.%d notarized.%d special.%d\n",ASSETCHAINS_SYMBOL,height,i,(long long)signedmask,numvins,numvouts,notarized,specialtx);
} }
} else fprintf(stderr,"komodo_connectblock: unexpected null pindex\n"); } else LogPrint("dpow","komodo_connectblock: unexpected null pindex\n");
} }

Loading…
Cancel
Save