Merge pull request #124 from VerusCoin/dev

Dev
This commit is contained in:
Asher Dawes
2018-09-04 15:00:00 -07:00
committed by GitHub
15 changed files with 409 additions and 187 deletions

View File

@@ -1,21 +1,16 @@
stages:
- build
- test
- package
- deploy
- build
- test
- deploy
variables:
VERSION: 0.3.12
AGAMA_ARTIFACTS_LINUX: linux64.tar.gz
AGAMA_ARTIFACTS_MACOS: osx.tar.gz
AGAMA_ARTIFACTS_WINDOWS: win64.zip
VERUS_CLI_LINUX: verus-cli-linux-v$VERSION-beta.tar.gz
VERUS_CLI_WINDOWS: verus-cli-windows-v$VERSION-beta.zip
VERUS_CLI_MACOS: verus-cli-mac-v$VERSION-beta.tar.gz
WINDOWS_INSTALLER: VerusCoin-v$VERSION-beta-windows-installer.exe
VERSION: 0.3.13
VERUS_CLI_LINUX: "Verus-CLI-Linux-v${VERSION}-beta.tar.gz"
VERUS_CLI_WINDOWS: "Verus-CLI-Windows-v${VERSION}-beta.zip"
VERUS_CLI_MACOS: "Verus-CLI-MacOS-v${VERSION}-beta.tar.gz"
POST_COMMENT: "Branch and Commit: ${CI_COMMIT_REF_NAME} ${CI_COMMIT_SHA} $'\n'MD5: "
.build:linux:
build:linux:
image: asherd/veruscoin-cross-compiler:linux
variables:
DOCKER_DRIVER: overlay2
@@ -26,15 +21,15 @@ variables:
script:
- zcutil/build.sh -j4
- cp src/komodod src/komodo-cli kmd/linux/verus-cli
- chmod +x kmd/linux/verus-cli/komodo
- chmod +x kmd/linux/verus-cli/komodod
- chmod +x kmd/linux/verus-cli/komodo-cli
- chmod +x kmd/linux/verus-cli/verus
- chmod +x kmd/linux/verus-cli/verusd
- chmod +x kmd/linux/verus-cli/fetch-params
- dos2unix kmd/linux/verus-cli/README.txt
- tar -C kmd/linux/ -czvf $VERUS_CLI_LINUX_PORTABLE verus-cli ./
- mv kmd/linux/verus-cli kmd/linux/linux64
- tar -C kmd/linux/ -czvf $AGAMA_ARTIFACTS_LINUX linux64 ./
- cd kmd/linux/
- tar -czvf $VERUS_CLI_LINUX verus-cli
- mv $VERUS_CLI_LINUX ../..
after_script:
- mv /root/.ccache ./ || true
cache:
@@ -44,8 +39,7 @@ variables:
- .ccache
artifacts:
paths:
- $VERUS_CLI_LINUX_PORTABLE
- $AGAMA_ARTIFACTS_LINUX
- $VERUS_CLI_LINUX
expire_in: 1 week
@@ -61,28 +55,23 @@ build:windows:
- .ccache
- .cargo
before_script:
- mkdir .ccache || echo ccache exists
- ln -s $PWD/.ccache /root/.ccache
- mkdir .zcash-params || echo zcash-params exists
- mkdir .cargo || echo .cargo exists
- ln -s $PWD/.cargo /root/.cargo
- mkdir .ccache || echo ccache exists
- ln -s $PWD/.ccache /root/.ccache
- mkdir .zcash-params || echo zcash-params exists
- mkdir .cargo || echo .cargo exists
- ln -s $PWD/.cargo /root/.cargo
script:
- zcutil/build-win.sh
- ./makeReleaseWindows.sh
- cd kmd/windows/
- zip -r $VERUS_CLI_WINDOWS_PORTABLE verus-cli
- mv $VERUS_CLI_WINDOWS_PORTABLE ../..
- mv verus-cli win64
- zip -r $AGAMA_ARTIFACTS_WINDOWS win64
- mv $AGAMA_ARTIFACTS_WINDOWS ../..
- zcutil/build-win.sh -j4
- cp src/komodod.exe src/komodo-cli.exe src/komodo-tx.exe kmd/windows/verus-cli
- cd kmd/windows/
- zip -r $VERUS_CLI_WINDOWS verus-cli
- mv $VERUS_CLI_WINDOWS ../..
artifacts:
paths:
- $VERUS_CLI_WINDOWS_PORTABLE
- $AGAMA_ARTIFACTS_WINDOWS
paths: [$VERUS_CLI_WINDOWS]
expire_in: 1 week
.build:mac:
build:mac:
stage: build
tags: ["High Sierra"]
cache:
@@ -90,16 +79,13 @@ build:windows:
paths:
- depends/built
script:
- zcutil/build-mac.sh | xcpretty
- ./makeReleaseMac.sh
- dos2unix kmd/mac/verus-cli/README.txt
- tar -C kmd/mac/ -czvf $VERUS_CLI_MACOS_PORTABLE verus-cli ./
- mv kmd/mac/verus-cli kmd/mac/osx
- tar -C kmd/mac/ -czvf $AGAMA_ARTIFACTS_MACOS osx ./
- brew bundle
- zcutil/build-mac.sh -j6 | xcpretty
- ./makeReleaseMac.sh
- dos2unix kmd/mac/verus-cli/README.txt
- tar -C kmd/mac/ -czvf $VERUS_CLI_MACOS verus-cli ./
artifacts:
paths:
- $VERUS_CLI_MACOS_PORTABLE
- $AGAMA_ARTIFACTS_MACOS
paths: [$VERUS_CLI_MACOS]
expire_in: 1 week
@@ -109,14 +95,14 @@ build:windows:
DOCKER_DRIVER: overlay2
allow_failure: true
services:
- docker:stable-dind
- docker:stable-dind
script:
- export SP_VERSION=$(echo "$CI_SERVER_VERSION" | sed 's/^\([0-9]*\)\.\([0-9]*\).*/\1-\2-stable/')
- docker run
--env SOURCE_CODE="$PWD"
--volume "$PWD":/code
--volume /var/run/docker.sock:/var/run/docker.sock
"registry.gitlab.com/gitlab-org/security-products/codequality:$SP_VERSION" /code
- export SP_VERSION=$(echo "$CI_SERVER_VERSION" | sed 's/^\([0-9]*\)\.\([0-9]*\).*/\1-\2-stable/')
- docker run
--env SOURCE_CODE="$PWD"
--volume "$PWD":/code
--volume /var/run/docker.sock:/var/run/docker.sock
"registry.gitlab.com/gitlab-org/security-products/codequality:$SP_VERSION" /code
artifacts:
paths: [gl-code-quality-report.json]
@@ -127,17 +113,17 @@ build:windows:
DOCKER_DRIVER: overlay2
allow_failure: true
services:
- docker:stable-dind
- docker:stable-dind
script:
- export SP_VERSION=$(echo "$CI_SERVER_VERSION" | sed 's/^\([0-9]*\)\.\([0-9]*\).*/\1-\2-stable/')
- docker run
--env SAST_CONFIDENCE_LEVEL="${SAST_CONFIDENCE_LEVEL:-3}"
--volume "$PWD:/code"
--volume /var/run/docker.sock:/var/run/docker.sock
"registry.gitlab.com/gitlab-org/security-products/sast:$SP_VERSION" /app/bin/run /code
- export SP_VERSION=$(echo "$CI_SERVER_VERSION" | sed 's/^\([0-9]*\)\.\([0-9]*\).*/\1-\2-stable/')
- docker run
--env SAST_CONFIDENCE_LEVEL="${SAST_CONFIDENCE_LEVEL:-3}"
--volume "$PWD:/code"
--volume /var/run/docker.sock:/var/run/docker.sock
"registry.gitlab.com/gitlab-org/security-products/sast:$SP_VERSION" /app/bin/run /code
artifacts:
paths: [gl-sast-report.json]
.license_management:
@@ -146,12 +132,12 @@ build:windows:
DOCKER_DRIVER: overlay2
allow_failure: true
services:
- docker:stable-dind
- docker:stable-dind
script:
- export LICENSE_MANAGEMENT_VERSION=$(echo "$CI_SERVER_VERSION" | sed 's/^\([0-9]*\)\.\([0-9]*\).*/\1-\2-stable/')
- docker run
--volume "$PWD:/code"
"registry.gitlab.com/gitlab-org/security-products/license-management:$LICENSE_MANAGEMENT_VERSION" analyze /code
- export LICENSE_MANAGEMENT_VERSION=$(echo "$CI_SERVER_VERSION" | sed 's/^\([0-9]*\)\.\([0-9]*\).*/\1-\2-stable/')
- docker run
--volume "$PWD:/code"
"registry.gitlab.com/gitlab-org/security-products/license-management:$LICENSE_MANAGEMENT_VERSION" analyze /code
artifacts:
paths: [gl-license-management-report.json]
@@ -162,16 +148,23 @@ build:windows:
DOCKER_DRIVER: overlay2
stage: test
before_script:
- apt update && apt install -y wget g++-multilib libcurl3 python
- apt update && apt install -y wget g++-multilib libcurl3 python
- rm -rf /root/.komodo || true
- mv .komodo /root/ || true
script:
- tar -xzvf $VERUS_CLI_LINUX_PORTABLE
- export PATH=$PATH:$CI_PROJECT_DIR/verus-cli
- python qa/verus-cli-tests/verus-cli-tester.py
- tar -xzvf $VERUS_CLI_LINUX
- export PATH=$PATH:$CI_PROJECT_DIR/verus-cli
- python qa/verus-cli-tests/verus-cli-tester.py
after_script:
- mv /root/.komodo ./ || true
cache:
key: ${CI_JOB_NAME}
paths: [.komodo]
artifacts:
paths: [log.txt]
expire_in: 1 week
dependencies:
- build:linux
- build:linux
.ubuntu:bionic:
@@ -180,81 +173,65 @@ build:windows:
DOCKER_DRIVER: overlay2
stage: test
before_script:
- apt update && apt install -y wget g++-multilib libcurl3 python
- apt update && apt install -y wget g++-multilib libcurl3 python
- rm -rf /root/.komodo || true
- mv .komodo /root/ || true
script:
- tar -xzvf $VERUS_CLI_LINUX_PORTABLE
- export PATH=$PATH:$CI_PROJECT_DIR/verus-cli
- python qa/verus-cli-tests/verus-cli-tester.py
- tar -xzvf $VERUS_CLI_LINUX
- export PATH=$PATH:$CI_PROJECT_DIR/verus-cli
- python qa/verus-cli-tests/verus-cli-tester.py
after_script:
- mv /root/.komodo ./ || true
cache:
key: ${CI_JOB_NAME}
paths: [.komodo]
artifacts:
paths: [log.txt]
expire_in: 1 week
dependencies:
- build:linux
- build:linux
.osx:sierra: # fetch-params.sh needs to be fixed for MacOS
stage: test
tags: ["Sierra"]
script:
- tar -xzvf $VERUS_CLI_MACOS_PORTABLE
- export PATH=$PATH:$CI_PROJECT_DIR/verus-cli
- python qa/verus-cli-tests/verus-cli-tester.py
- tar -xzvf $VERUS_CLI_MACOS
- export PATH=$PATH:$CI_PROJECT_DIR/verus-cli
- python qa/verus-cli-tests/verus-cli-tester.py
artifacts:
paths: [log.txt]
expire_in: 1 week
dependencies:
- build:mac
- build:mac
.osx:high-sierra: # fetch-params.sh needs to be fixed for MacOS
stage: test
tags: ["High Sierra"]
script:
- tar -xzvf $VERUS_CLI_MACOS_PORTABLE
- export PATH=$PATH:$CI_PROJECT_DIR/verus-cli
- python qa/verus-cli-tests/verus-cli-tester.py
- tar -xzvf $VERUS_CLI_MACOS
- export PATH=$PATH:$CI_PROJECT_DIR/verus-cli
- python qa/verus-cli-tests/verus-cli-tester.py
artifacts:
paths: [log.txt]
expire_in: 1 week
dependencies:
- build:mac
- build:mac
.windows:10:
stage: test
tags: ["Windows 10"]
script:
- PowerShell Expand-Archive -Path %VERUS_CLI_WINDOWS_PORTABLE% -DestinationPath %CI_PROJECT_DIR%
- set PATH=%PATH%;%CI_PROJECT_DIR%\verus-cli
- qa\verus-cli-tests\verus-cli-tester.py
- PowerShell Expand-Archive -Path %VERUS_CLI_WINDOWS% -DestinationPath %CI_PROJECT_DIR%
- set PATH=%PATH%;%CI_PROJECT_DIR%\verus-cli
- qa\verus-cli-tests\verus-cli-tester.py
artifacts:
paths: [log.txt]
expire_in: 1 week
dependencies:
- build:windows
package:
stage: package
image: asherd/agama-builder
variables:
DOCKER_DRIVER: overlay2
dependencies:
- build:windows
before_script:
- unzip $VERUS_CLI_WINDOWS_PORTABLE
- echo "$AUTH_KEY" > AUTH_KEY.json
- gcloud auth activate-service-account --key-file AUTH_KEY.json
- rm AUTH_KEY.json
- gsutil cp $STAGING/Agama/installer-prototype/Windows/Agama-win32-x64-v${VERSION}-beta.zip .
- unzip Agama-win32-x64-v${VERSION}-beta.zip
- git clone https://github.com/VerusCoin/Media-Assets --single-branch -b master
- mkdir -p assets/imgs/
- cp Media-Assets/Logos/PNG/* assets/imgs/
script:
- builder build zcutil/VerusCoin.xml windows --setvars project.version=$VERSION-beta
- mv builds/$WINDOWS_INSTALLER .
artifacts:
paths: [$WINDOWS_INSTALLER]
- build:windows
deploy:
@@ -263,19 +240,44 @@ deploy:
variables:
DOCKER_DRIVER: overlay2
dependencies:
#- build:linux
#- build:windows
#- build:mac
- package
- build:linux
- build:windows
- build:mac
before_script:
- export VERUS_CLI_LINUX_MD5=$(md5sum $VERUS_CLI_LINUX | cut -d " " -f 1)
- export VERUS_CLI_WINDOWS_MD5=$(md5sum $VERUS_CLI_WINDOWS | cut -d " " -f 1)
- export VERUS_CLI_MACOS_MD5=$(md5sum $VERUS_CLI_MACOS | cut -d " " -f 1)
script:
#- mkdir -p $CI_COMMIT_REF_NAME/Windows
#- mkdir -p $CI_COMMIT_REF_NAME/Linux
#- mkdir -p $CI_COMMIT_REF_NAME/MacOS
#- mv $VERUS_CLI_WINDOWS_PORTABLE $AGAMA_ARTIFACTS_WINDOWS $WINDOWS_INSTALLER $CI_COMMIT_REF_NAME/Windows
#- mv $VERUS_CLI_LINUX_PORTABLE $AGAMA_ARTIFACTS_LINUX $CI_COMMIT_REF_NAME/Linux
#- mv $VERUS_CLI_MACOS_PORTABLE $AGAMA_ARTIFACTS_MACOS $CI_COMMIT_REF_NAME/MacOS
- echo "$AUTH_KEY" > AUTH_KEY.json
- gcloud auth activate-service-account --key-file AUTH_KEY.json
#- gsutil rsync -r $CI_COMMIT_REF_NAME/ $STAGING/VerusCoin/$CI_COMMIT_REF_NAME/
- gsutil cp $WINDOWS_INSTALLER $CI_COMMIT_REF_NAME/ $STAGING/VerusCoin/$CI_COMMIT_REF_NAME/Windows/
- export VERUS_CLI_LINUX_MD5=$(md5sum $VERUS_CLI_LINUX | cut -d " " -f 1)
- curl -F file=@"$VERUS_CLI_LINUX"
-F channels="$CLI_POST_CHANNEL"
-F initial_comment="${POST_COMMENT}$VERUS_CLI_LINUX_MD5"
-H "${SLACK_BOT_AUTH}"
"https://slack.com/api/files.upload"
- curl -F file=@"$VERUS_CLI_WINDOWS"
-F channels="$CLI_POST_CHANNEL"
-F initial_comment="${POST_COMMENT}$VERUS_CLI_WINDOWS_MD5"
-H "${SLACK_BOT_AUTH}"
"https://slack.com/api/files.upload"
- curl -F file=@"$VERUS_CLI_MACOS"
-F channels="$CLI_POST_CHANNEL"
-F initial_comment="${POST_COMMENT}$VERUS_CLI_MACOS_MD5"
-H "${SLACK_BOT_AUTH}"
"https://slack.com/api/files.upload"
- mkdir Windows && mkdir Linux && mkdir MacOS &&
mv $VERUS_CLI_WINDOWS Windows &&
mv $VERUS_CLI_LINUX Linux &&
mv $VERUS_CLI_MACOS MacOS
- echo "$AUTH_KEY" > AUTH_KEY.json &&
gcloud auth activate-service-account
--key-file AUTH_KEY.json
- gsutil cp -r Windows Linux MacOS $STAGING/VerusCoin/$CI_COMMIT_REF_NAME/
- curl -X POST
-F token="$CI_JOB_TOKEN"
-F ref=dev
-F variables\[UPSTREAM_CLI_BRANCH\]="$CI_COMMIT_REF_NAME"
-F variables\[VERUS_CLI_LINUX\]="$VERUS_CLI_LINUX"
-F variables\[VERUS_CLI_WINDOWS\]="$VERUS_CLI_WINDOWS"
-F variables\[VERUS_CLI_MACOS\]="$VERUS_CLI_MACOS"
"https://gitlab.com/api/v4/projects/8018592/trigger/pipeline"

View File

@@ -1,10 +1,10 @@
## VerusCoin version 0.3.12a-beta
## VerusCoin version 0.3.13-beta
VerusCoin is a new, mineable and stakeable cryptocurrency. It is a live fork of Komodo that retains its Zcash lineage and improves it. VerusCoin will leverage the Komodo platform and dPoW notarization for enhanced security and cross-chain interoperability. We have added a variation of a zawy12, lwma difficulty algorithm, a new CPU-optimized hash algorithm and a new algorithm for fair proof of stake. We describe these changes and vision going forward in a [our Phase I white paper](http://185.25.51.16/papers/VerusPhaseI.pdf) and [our Vision](http://185.25.51.16/papers/VerusVision.pdf).
- [VerusCoin web site https://veruscoin.io/ Wallets and CLI tools](https://veruscoin.io/)
- [VerusCoin Explorer](https://explorer.veruscoin.io/)
Version 0.3.12-beta has portable mining working.
Version 0.3.13-beta has portable mining working.
## Komodo with Bitcore
This version of Komodo contains Bitcore support for komodo and all its assetchains.

View File

@@ -1,4 +1,4 @@
VerusCoin Command Line Tools v0.3.12a-beta
VerusCoin Command Line Tools v0.3.13-beta
Contents:
komodod - VerusCoin's enhanced Komodo daemon

View File

@@ -1,4 +1,4 @@
VerusCoin Command Line Tools v0.3.12a-beta
VerusCoin Command Line Tools v0.3.13-beta
Contents:
komodod - VerusCoin's enhanced Komodo daemon.
komodo-cli - VerusCoin's enhanced Komodo command line utility.

View File

@@ -1,7 +1,199 @@
#!/bin/bash
set -eu
curl "https://z.cash/downloads/sprout-proving.key" -o "$HOME/Library/Application Support/ZcashParams/sprout-proving.key"
curl "https://z.cash/downloads/sprout-verifying.key" -o "$HOME/Library/Application Support/ZcashParams/sprout-verifying.key"
if [[ "$OSTYPE" == "darwin"* ]]; then
PARAMS_DIR="$HOME/Library/Application Support/ZcashParams"
else
PARAMS_DIR="$HOME/.zcash-params"
fi
SPROUT_PKEY_NAME='sprout-proving.key'
SPROUT_VKEY_NAME='sprout-verifying.key'
SAPLING_SPEND_NAME='sapling-spend.params'
SAPLING_OUTPUT_NAME='sapling-output.params'
SAPLING_SPROUT_GROTH16_NAME='sprout-groth16.params'
SPROUT_URL="https://z.cash/downloads"
SPROUT_IPFS="/ipfs/QmZKKx7Xup7LiAtFRhYsE1M7waXcv9ir9eCECyXAFGxhEo"
SHA256CMD="$(command -v sha256sum || echo shasum)"
SHA256ARGS="$(command -v sha256sum >/dev/null || echo '-a 256')"
WGETCMD="$(command -v wget || echo '')"
IPFSCMD="$(command -v ipfs || echo '')"
CURLCMD="$(command -v curl || echo '')"
# fetch methods can be disabled with ZC_DISABLE_SOMETHING=1
ZC_DISABLE_WGET="${ZC_DISABLE_WGET:-}"
ZC_DISABLE_IPFS="${ZC_DISABLE_IPFS:-}"
ZC_DISABLE_CURL="${ZC_DISABLE_CURL:-}"
function fetch_wget {
if [ -z "$WGETCMD" ] || ! [ -z "$ZC_DISABLE_WGET" ]; then
return 1
fi
local filename="$1"
local dlname="$2"
cat <<EOF
Retrieving (wget): $SPROUT_URL/$filename
EOF
wget \
--progress=dot:giga \
--output-document="$dlname" \
--continue \
--retry-connrefused --waitretry=3 --timeout=30 \
"$SPROUT_URL/$filename"
}
function fetch_ipfs {
if [ -z "$IPFSCMD" ] || ! [ -z "$ZC_DISABLE_IPFS" ]; then
return 1
fi
local filename="$1"
local dlname="$2"
cat <<EOF
Retrieving (ipfs): $SPROUT_IPFS/$filename
EOF
ipfs get --output "$dlname" "$SPROUT_IPFS/$filename"
}
function fetch_curl {
if [ -z "$CURLCMD" ] || ! [ -z "$ZC_DISABLE_CURL" ]; then
return 1
fi
local filename="$1"
local dlname="$2"
cat <<EOF
Retrieving (curl): $SPROUT_URL/$filename
EOF
curl \
--output "$dlname" \
-# -L -C - \
"$SPROUT_URL/$filename"
}
function fetch_failure {
cat >&2 <<EOF
Failed to fetch the Zcash zkSNARK parameters!
Try installing one of the following programs and make sure you're online:
* ipfs
* wget
* curl
EOF
exit 1
}
function fetch_params {
local filename="$1"
local output="$2"
local dlname="${output}.dl"
local expectedhash="$3"
if ! [ -f "$output" ]
then
for method in wget ipfs curl failure; do
if "fetch_$method" "$filename" "$dlname"; then
echo "Download successful!"
break
fi
done
"$SHA256CMD" $SHA256ARGS -c <<EOF
$expectedhash $dlname
EOF
# Check the exit code of the shasum command:
CHECKSUM_RESULT=$?
if [ $CHECKSUM_RESULT -eq 0 ]; then
mv -v "$dlname" "$output"
else
echo "Failed to verify parameter checksums!" >&2
exit 1
fi
fi
}
# Use flock to prevent parallel execution.
function lock() {
local lockfile=/tmp/fetch_params.lock
if [[ "$OSTYPE" == "darwin"* ]]; then
if shlock -f ${lockfile} -p $$; then
return 0
else
return 1
fi
else
# create lock file
eval "exec 200>$lockfile"
# acquire the lock
flock -n 200 \
&& return 0 \
|| return 1
fi
}
function exit_locked_error {
echo "Only one instance of fetch-params.sh can be run at a time." >&2
exit 1
}
function main() {
lock fetch-params.sh \
|| exit_locked_error
cat <<EOF
Zcash - fetch-params.sh
This script will fetch the Zcash zkSNARK parameters and verify their
integrity with sha256sum.
If they already exist locally, it will exit now and do nothing else.
EOF
# Now create PARAMS_DIR and insert a README if necessary:
if ! [ -d "$PARAMS_DIR" ]
then
mkdir -p "$PARAMS_DIR"
README_PATH="$PARAMS_DIR/README"
cat >> "$README_PATH" <<EOF
This directory stores common Zcash zkSNARK parameters. Note that it is
distinct from the daemon's -datadir argument because the parameters are
large and may be shared across multiple distinct -datadir's such as when
setting up test networks.
EOF
# This may be the first time the user's run this script, so give
# them some info, especially about bandwidth usage:
cat <<EOF
The parameters are currently just under 911MB in size, so plan accordingly
for your bandwidth constraints. If the files are already present and
have the correct sha256sum, no networking is used.
Creating params directory. For details about this directory, see:
$README_PATH
EOF
fi
cd "$PARAMS_DIR"
# Sprout parameters:
fetch_params "$SPROUT_PKEY_NAME" "$PARAMS_DIR/$SPROUT_PKEY_NAME" "8bc20a7f013b2b58970cddd2e7ea028975c88ae7ceb9259a5344a16bc2c0eef7"
fetch_params "$SPROUT_VKEY_NAME" "$PARAMS_DIR/$SPROUT_VKEY_NAME" "4bd498dae0aacfd8e98dc306338d017d9c08dd0918ead18172bd0aec2fc5df82"
# Sapling parameters:
fetch_params "$SAPLING_SPEND_NAME" "$PARAMS_DIR/$SAPLING_SPEND_NAME" "8e48ffd23abb3a5fd9c5589204f32d9c31285a04b78096ba40a79b75677efc13"
fetch_params "$SAPLING_OUTPUT_NAME" "$PARAMS_DIR/$SAPLING_OUTPUT_NAME" "2f0ebbcbb9bb0bcffe95a397e7eba89c29eb4dde6191c339db88570e3f3fb0e4"
fetch_params "$SAPLING_SPROUT_GROTH16_NAME" "$PARAMS_DIR/$SAPLING_SPROUT_GROTH16_NAME" "b685d700c60328498fbde589c8c7c484c722b788b265b72af448a5bf0ee55b50"
}
main
rm -f /tmp/fetch_params.lock
exit 0

View File

@@ -1,4 +1,4 @@
VerusCoin Command Line Tools v0.3.12a-beta
VerusCoin Command Line Tools v0.3.13-beta
Contents:
komodod.exe - VerusCoin's enhanced Komodo daemon
komodo-cli.exe - VerusCoin's Komodo command line utility

View File

@@ -1,3 +0,0 @@
#!/bin/sh
cp src/komodod.exe src/komodo-cli.exe src/komodo-tx.exe kmd/windows/verus-cli

View File

@@ -235,12 +235,6 @@ void *chainparams_commandline(void *ptr)
mainParams.pchMessageStart[3] = (ASSETCHAINS_MAGIC >> 24) & 0xff;
fprintf(stderr,">>>>>>>>>> %s: p2p.%u rpc.%u magic.%08x %u %u coins\n",ASSETCHAINS_SYMBOL,ASSETCHAINS_P2PPORT,ASSETCHAINS_RPCPORT,ASSETCHAINS_MAGIC,ASSETCHAINS_MAGIC,(uint32_t)ASSETCHAINS_SUPPLY);
// only require coinbase protection on Verus from the Komodo family of coins
if (strcmp(ASSETCHAINS_SYMBOL,"VRSC") == 0)
{
mainParams.consensus.fCoinbaseMustBeProtected = true;
}
if (ASSETCHAINS_ALGO != ASSETCHAINS_EQUIHASH)
{
// this is only good for 60 second blocks with an averaging window of 45. for other parameters, use:
@@ -262,22 +256,38 @@ void *chainparams_commandline(void *ptr)
mainParams.consensus.nLwmaPOSAjustedWeight = 46531;
}
checkpointData = //(Checkpoints::CCheckpointData)
{
boost::assign::map_list_of
(0, mainParams.consensus.hashGenesisBlock)
(10000, uint256S("0xac2cd7d37177140ea4991cf630c0b9c7f94d707b84fb0351bf3a44856d2ae5dc"))
(20000, uint256S("0xb0e8cb9f77aaa7ff5bd90d6c08d06f4c4bf03e00c2b8a35a042e760845590c8a"))
(30000, uint256S("0xf2112ca577338ad7104bf905fa6a63d36b17a86f914c97b73cd31d43fcd7557c"))
(40000, uint256S("0x00000000008f83378dab727864b763ce91a4ea5f75d55939c0c1390cfb8c38f1"))
(49170, uint256S("0x2add646c0089871ec2379f02f7cd60b3af6efd9c152a6f16fc10925458c270cc")),
(int64_t)1529910234, // * UNIX timestamp of last checkpoint block
(int64_t)63661, // * total number of transactions between genesis and last checkpoint
// (the tx=... number in the SetBestChain debug.log lines)
(double)2777 // * estimated number of transactions per day after checkpoint
// total number of tx / (checkpoint block height / (24 * 24))
};
// only require coinbase protection on Verus from the Komodo family of coins
if (strcmp(ASSETCHAINS_SYMBOL,"VRSC") == 0)
{
mainParams.consensus.fCoinbaseMustBeProtected = true;
checkpointData = //(Checkpoints::CCheckpointData)
{
boost::assign::map_list_of
(0, mainParams.consensus.hashGenesisBlock)
(10000, uint256S("0xac2cd7d37177140ea4991cf630c0b9c7f94d707b84fb0351bf3a44856d2ae5dc"))
(20000, uint256S("0xb0e8cb9f77aaa7ff5bd90d6c08d06f4c4bf03e00c2b8a35a042e760845590c8a"))
(30000, uint256S("0xf2112ca577338ad7104bf905fa6a63d36b17a86f914c97b73cd31d43fcd7557c"))
(40000, uint256S("0x00000000008f83378dab727864b763ce91a4ea5f75d55939c0c1390cfb8c38f1"))
(49170, uint256S("0x2add646c0089871ec2379f02f7cd60b3af6efd9c152a6f16fc10925458c270cc")),
(int64_t)1529910234, // * UNIX timestamp of last checkpoint block
(int64_t)63661, // * total number of transactions between genesis and last checkpoint
// (the tx=... number in the SetBestChain debug.log lines)
(double)2777 // * estimated number of transactions per day after checkpoint
// total number of tx / (checkpoint block height / (24 * 24))
};
}
else
{
checkpointData = //(Checkpoints::CCheckpointData)
{
boost::assign::map_list_of
(0, mainParams.consensus.hashGenesisBlock),
(int64_t)1231006505,
(int64_t)1,
(double)2777 // * estimated number of transactions per day after checkpoint
// total number of tx / (checkpoint block height / (24 * 24))
};
}
}
else
{

View File

@@ -14,11 +14,12 @@ bit output.
void (*CVerusHash::haraka512Function)(unsigned char *out, const unsigned char *in);
void CVerusHash::Hash(void *result, const void *data, size_t len)
void CVerusHash::Hash(void *result, const void *data, size_t _len)
{
unsigned char buf[128];
unsigned char *bufPtr = buf;
int pos = 0, nextOffset = 64;
int nextOffset = 64;
uint32_t pos = 0, len = _len;
unsigned char *bufPtr2 = bufPtr + nextOffset;
unsigned char *ptr = (unsigned char *)data;
@@ -58,14 +59,15 @@ void CVerusHash::init()
}
}
CVerusHash &CVerusHash::Write(const unsigned char *data, size_t len)
CVerusHash &CVerusHash::Write(const unsigned char *data, size_t _len)
{
unsigned char *tmp;
uint32_t pos, len = _len;
// digest up to 32 bytes at a time
for ( int pos = 0; pos < len; )
for ( pos = 0; pos < len; )
{
int room = 32 - curPos;
uint32_t room = 32 - curPos;
if (len - pos >= room)
{

View File

@@ -9,5 +9,7 @@
#define KOMODO_LIMITED_NETWORKSIZE 4
#define KOMODO_MAXMEMPOOLTIME 3600 // affects consensus
#define CRYPTO777_PUBSECPSTR "020e46e79a2a8d12b9b5d12c7a91adb4e454edfae43c0a0cb805427d2ac7613fd9"
#define VRSC_KMD_MERGE_FIX 227520 // height that the inadvertent KMD merge/coinbase output changes to VRSC are removed
// approximately October 28th
#endif

View File

@@ -687,10 +687,12 @@ int32_t komodo_check_deposit(int32_t height,const CBlock& block,uint32_t prevtim
}
}
}
n = block.vtx[0].vout.size();
//script = (uint8_t *)block.vtx[0].vout[n-1].scriptPubKey.data();
//if ( n <= 2 || script[0] != 0x6a )
// we don't want any of these checks in VRSC, leave it for other chains until/unless KMD removes
if ( ASSETCHAINS_SYMBOL[0] == 0 ||
(ASSETCHAINS_COMMISSION != 0 && height > 1) ||
(strcmp(ASSETCHAINS_SYMBOL,"VRSC") == 0 && height < VRSC_KMD_MERGE_FIX) )
{
n = block.vtx[0].vout.size();
int64_t val,prevtotal = 0; int32_t strangeout=0,overflow = 0;
total = 0;
for (i=1; i<n; i++)
@@ -760,12 +762,12 @@ int32_t komodo_check_deposit(int32_t height,const CBlock& block,uint32_t prevtim
{
fprintf(stderr,"checkdeposit: ht.%d checktoshis %.8f overflow.%d total %.8f strangeout.%d\n",height,dstr(checktoshis),overflow,dstr(total),strangeout);
if ( strangeout != 0 )
fprintf(stderr,">>>>>>>>>>>>> %s DUST ht.%d strangout.%d notmatched.%d <<<<<<<<<\n",ASSETCHAINS_SYMBOL,height,strangeout,notmatched);
fprintf(stderr,">>>>>>>>>>>>> %s DUST ht.%d strangeout.%d notmatched.%d <<<<<<<<<\n",ASSETCHAINS_SYMBOL,height,strangeout,notmatched);
return(-1);
}
}
return(0);
}
return(0);
}
const char *komodo_opreturn(int32_t height,uint64_t value,uint8_t *opretbuf,int32_t opretlen,uint256 txid,uint16_t vout,char *source)

View File

@@ -1906,7 +1906,7 @@ bool IsInitialBlockDownload()
}
if (fCheckpointsEnabled && chainActive.Height() < Checkpoints::GetTotalBlocksEstimate(chainParams.Checkpoints()))
{
//fprintf(stderr,"IsInitialBlockDownload: checkpoint -> initialdownload\n");
//fprintf(stderr,"IsInitialBlockDownload: checkpoint -> initialdownload - %d blocks\n", Checkpoints::GetTotalBlocksEstimate(chainParams.Checkpoints()));
return true;
}
static bool lockIBDState = false;
@@ -1936,23 +1936,32 @@ bool IsInitialBlockDownload()
bool IsInSync()
{
const CChainParams& chainParams = Params();
LOCK(cs_main);
if (fImporting || fReindex)
{
//fprintf(stderr,"IsInitialBlockDownload: fImporting %d || %d fReindex\n",(int32_t)fImporting,(int32_t)fReindex);
//fprintf(stderr,"IsInSync: fImporting %d || %d fReindex\n",(int32_t)fImporting,(int32_t)fReindex);
return false;
}
if (fCheckpointsEnabled && chainActive.Height() < Checkpoints::GetTotalBlocksEstimate(chainParams.Checkpoints()))
if (fCheckpointsEnabled)
{
//fprintf(stderr,"IsInitialBlockDownload: checkpoint -> initialdownload\n");
return false;
if (fCheckpointsEnabled && chainActive.Height() < Checkpoints::GetTotalBlocksEstimate(chainParams.Checkpoints()))
{
//fprintf(stderr,"IsInSync: checkpoint -> initialdownload chainActive.Height().%d GetTotalBlocksEstimate(chainParams.Checkpoints().%d\n", chainActive.Height(), Checkpoints::GetTotalBlocksEstimate(chainParams.Checkpoints()));
return false;
}
}
CBlockIndex *ptr = chainActive.Tip();
if ( !ptr )
CBlockIndex *pbi = chainActive.Tip();
int longestchain = komodo_longestchain();
if ( !pbi ||
(pindexBestHeader == 0) ||
((pindexBestHeader->nHeight - 1) > pbi->nHeight) ||
(longestchain != 0 && longestchain > pbi->nHeight) )
return false;
else if ( pindexBestHeader != 0 && (pindexBestHeader->nHeight - 1) > ptr->nHeight )
return false;
//printf("IsInSync: checkpoint -> initialdownload chainActive.Height().%d longestchain.%d\n", chainActive.Height(), longestchain);
return true;
}
@@ -5941,8 +5950,9 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
CAddress addrMe;
CAddress addrFrom;
uint64_t nNonce = 1;
vRecv >> pfrom->nVersion >> pfrom->nServices >> nTime >> addrMe;
if (pfrom->nVersion < MIN_PEER_PROTO_VERSION)
int nVersion; // use temporary for version, don't set version number until validated as connected
vRecv >> nVersion >> pfrom->nServices >> nTime >> addrMe;
if (nVersion < MIN_PEER_PROTO_VERSION)
{
// disconnect from peers older than this proto version
LogPrintf("peer=%d using obsolete version %i; disconnecting\n", pfrom->id, pfrom->nVersion);
@@ -5955,9 +5965,9 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
// When Overwinter is active, reject incoming connections from non-Overwinter nodes
const Consensus::Params& params = Params().GetConsensus();
if (NetworkUpgradeActive(GetHeight(), params, Consensus::UPGRADE_OVERWINTER)
&& pfrom->nVersion < params.vUpgrades[Consensus::UPGRADE_OVERWINTER].nProtocolVersion)
&& nVersion < params.vUpgrades[Consensus::UPGRADE_OVERWINTER].nProtocolVersion)
{
LogPrintf("peer=%d using obsolete version %i; disconnecting\n", pfrom->id, pfrom->nVersion);
LogPrintf("peer=%d using obsolete version %i; disconnecting\n", pfrom->id, nVersion);
pfrom->PushMessage("reject", strCommand, REJECT_OBSOLETE,
strprintf("Version must be %d or greater",
params.vUpgrades[Consensus::UPGRADE_OVERWINTER].nProtocolVersion));
@@ -5965,8 +5975,8 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
return false;
}
if (pfrom->nVersion == 10300)
pfrom->nVersion = 300;
if (nVersion == 10300)
nVersion = 300;
if (!vRecv.empty())
vRecv >> addrFrom >> nNonce;
if (!vRecv.empty()) {
@@ -5987,6 +5997,8 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
pfrom->fDisconnect = true;
return true;
}
pfrom->nVersion = nVersion;
pfrom->addrLocal = addrMe;
if (pfrom->fInbound && addrMe.IsRoutable())

View File

@@ -796,15 +796,16 @@ int32_t waitForPeers(const CChainParams &chainparams)
LOCK(cs_vNodes);
fvNodesEmpty = vNodes.empty();
}
if (!IsInSync() || fvNodesEmpty)
if (fvNodesEmpty || !IsInSync())
{
do {
MilliSleep(100 + rand() % 400);
if (fvNodesEmpty)
MilliSleep(1000 + rand() % 4000);
{
LOCK(cs_vNodes);
fvNodesEmpty = vNodes.empty();
}
} while (!IsInSync() || fvNodesEmpty);
} while (fvNodesEmpty || !IsInSync());
MilliSleep(100 + rand() % 400);
}
}

View File

@@ -56,7 +56,7 @@ uint32_t komodo_segid32(char *coinaddr);
int64_t komodo_coinsupply(int64_t *zfundsp,int32_t height);
int32_t notarizedtxid_height(char *dest,char *txidstr,int32_t *kmdnotarized_heightp);
#define KOMODO_VERSION "0.1.1"
#define VERUS_VERSION "0.3.12"
#define VERUS_VERSION "0.3.13"
extern uint16_t ASSETCHAINS_P2PPORT,ASSETCHAINS_RPCPORT;
extern uint32_t ASSETCHAINS_CC;
extern uint32_t ASSETCHAINS_MAGIC;

View File

@@ -2346,6 +2346,8 @@ std::vector<uint256> CWallet::ResendWalletTransactionsBefore(int64_t nTime)
if ( wtx.nLockTime >= LOCKTIME_THRESHOLD && wtx.nLockTime < now-KOMODO_MAXMEMPOOLTIME )
{
LogPrintf("skip Relaying wtx %s nLockTime %u vs now.%u\n", wtx.GetHash().ToString(),(uint32_t)wtx.nLockTime,now);
//TODO: EraseFromWallet(wtx.GetHash()); //should be erased, but this creates issues, likely better to create
// vector and do it outside of this loop, but for later
continue;
}
}