From 46d858beca2a257ba4dd461d51838e9433429023 Mon Sep 17 00:00:00 2001 From: Asher Dawes Date: Mon, 20 Aug 2018 12:23:05 -0700 Subject: [PATCH 01/10] Updating CI config --- .gitlab-ci.yml | 198 ++++++++++++++++++++++--------------------------- 1 file changed, 87 insertions(+), 111 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index e34253af5..922d9d411 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,9 +1,7 @@ stages: - - build - - test - - package - - deploy - +- build +- test +- deploy variables: VERSION: 0.3.12 @@ -13,9 +11,9 @@ variables: 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 -.build:linux: + +build:linux: image: asherd/veruscoin-cross-compiler:linux variables: DOCKER_DRIVER: overlay2 @@ -26,13 +24,13 @@ 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 ./ + - tar -C kmd/linux/ -czvf $VERUS_CLI_LINUX verus-cli ./ - mv kmd/linux/verus-cli kmd/linux/linux64 - tar -C kmd/linux/ -czvf $AGAMA_ARTIFACTS_LINUX linux64 ./ after_script: @@ -44,7 +42,7 @@ variables: - .ccache artifacts: paths: - - $VERUS_CLI_LINUX_PORTABLE + - $VERUS_CLI_LINUX - $AGAMA_ARTIFACTS_LINUX expire_in: 1 week @@ -61,28 +59,28 @@ 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 + - 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 ../.. + - mv verus-cli win64 + - zip -r $AGAMA_ARTIFACTS_WINDOWS win64 + - mv $AGAMA_ARTIFACTS_WINDOWS ../.. artifacts: paths: - - $VERUS_CLI_WINDOWS_PORTABLE + - $VERUS_CLI_WINDOWS - $AGAMA_ARTIFACTS_WINDOWS expire_in: 1 week -.build:mac: +build:mac: stage: build tags: ["High Sierra"] cache: @@ -90,15 +88,16 @@ 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 | xcpretty + - ./makeReleaseMac.sh + - dos2unix kmd/mac/verus-cli/README.txt + - tar -C kmd/mac/ -czvf $VERUS_CLI_MACOS verus-cli ./ + - mv kmd/mac/verus-cli kmd/mac/osx + - tar -C kmd/mac/ -czvf $AGAMA_ARTIFACTS_MACOS osx ./ artifacts: paths: - - $VERUS_CLI_MACOS_PORTABLE + - $VERUS_CLI_MACOS - $AGAMA_ARTIFACTS_MACOS expire_in: 1 week @@ -109,14 +108,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 +126,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 +145,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 +161,16 @@ 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 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 artifacts: paths: [log.txt] expire_in: 1 week dependencies: - - build:linux + - build:linux .ubuntu:bionic: @@ -180,81 +179,58 @@ 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 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 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 +239,19 @@ deploy: variables: DOCKER_DRIVER: overlay2 dependencies: - #- build:linux - #- build:windows - #- build:mac - - package + - build:linux + - build:windows + - build:mac 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/ + - mkdir Windows + - mkdir Linux + - mkdir MacOS + - mv $VERUS_CLI_WINDOWS $AGAMA_ARTIFACTS_WINDOWS Windows + - mv $VERUS_CLI_LINUX $AGAMA_ARTIFACTS_LINUX Linux + - mv $VERUS_CLI_MACOS $AGAMA_ARTIFACTS_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 --form ref=$CI_COMMIT_REF_NAME https://gitlab.com/api/v4/projects/8018638/trigger/pipeline + From 6d84700d44281e904a56e3e39f8d0b40b81dc083 Mon Sep 17 00:00:00 2001 From: miketout Date: Sat, 25 Aug 2018 10:48:40 -0700 Subject: [PATCH 02/10] Enable syncing of new test chains before checkpoints have started --- src/komodo_gateway.h | 2 +- src/main.cpp | 18 ++++++++++++------ src/miner.cpp | 2 +- src/wallet/wallet.cpp | 2 ++ 4 files changed, 16 insertions(+), 8 deletions(-) diff --git a/src/komodo_gateway.h b/src/komodo_gateway.h index 6a8ef310b..183b6bb54 100644 --- a/src/komodo_gateway.h +++ b/src/komodo_gateway.h @@ -760,7 +760,7 @@ 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); } } diff --git a/src/main.cpp b/src/main.cpp index 85af5ef2a..84a05bdbd 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1936,21 +1936,27 @@ bool IsInitialBlockDownload() bool IsInSync() { const CChainParams& chainParams = Params(); + CBlockIndex *pbi; + LOCK(cs_main); if (fImporting || fReindex) { //fprintf(stderr,"IsInitialBlockDownload: 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; + pbi = Checkpoints::GetLastCheckpoint(chainParams.Checkpoints()); + if (fCheckpointsEnabled && pbi && (chainActive.Height() < pbi->nHeight)) + { + //fprintf(stderr,"IsInitialBlockDownload: checkpoint -> initialdownload\n"); + return false; + } } - CBlockIndex *ptr = chainActive.Tip(); - if ( !ptr ) + pbi = chainActive.Tip(); + if ( !pbi ) return false; - else if ( pindexBestHeader != 0 && (pindexBestHeader->nHeight - 1) > ptr->nHeight ) + else if ( pindexBestHeader != 0 && ((pindexBestHeader->nHeight - 1) > pbi->nHeight) ) return false; return true; diff --git a/src/miner.cpp b/src/miner.cpp index 908fd601f..2c14d28d8 100644 --- a/src/miner.cpp +++ b/src/miner.cpp @@ -796,7 +796,7 @@ int32_t waitForPeers(const CChainParams &chainparams) LOCK(cs_vNodes); fvNodesEmpty = vNodes.empty(); } - if (!IsInSync() || fvNodesEmpty) + if (fvNodesEmpty || !IsInSync()) { do { MilliSleep(100 + rand() % 400); diff --git a/src/wallet/wallet.cpp b/src/wallet/wallet.cpp index f9198e487..6b6bbdd35 100644 --- a/src/wallet/wallet.cpp +++ b/src/wallet/wallet.cpp @@ -2346,6 +2346,8 @@ std::vector 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; } } From bca01f86eb28b41b60b12229a625891b7fc50fc2 Mon Sep 17 00:00:00 2001 From: miketout Date: Sat, 25 Aug 2018 21:47:10 -0700 Subject: [PATCH 03/10] Ensure in sync differently --- src/main.cpp | 2 +- src/miner.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 84a05bdbd..3ce84688e 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1956,7 +1956,7 @@ bool IsInSync() pbi = chainActive.Tip(); if ( !pbi ) return false; - else if ( pindexBestHeader != 0 && ((pindexBestHeader->nHeight - 1) > pbi->nHeight) ) + else if ( pindexBestHeader == 0 || ((komodo_longestchain() - 1) > pbi->nHeight) ) return false; return true; diff --git a/src/miner.cpp b/src/miner.cpp index 2c14d28d8..79d6b70db 100644 --- a/src/miner.cpp +++ b/src/miner.cpp @@ -804,7 +804,7 @@ int32_t waitForPeers(const CChainParams &chainparams) LOCK(cs_vNodes); fvNodesEmpty = vNodes.empty(); } - } while (!IsInSync() || fvNodesEmpty); + } while (fvNodesEmpty || !IsInSync()); MilliSleep(100 + rand() % 400); } } From 24dd56729b8d0a0e89febae601f4dfa157e1bad1 Mon Sep 17 00:00:00 2001 From: miketout Date: Sun, 26 Aug 2018 11:58:14 -0700 Subject: [PATCH 04/10] More work on initial sync --- src/main.cpp | 6 +++--- src/miner.cpp | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 3ce84688e..8e5625ab8 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1941,7 +1941,7 @@ bool IsInSync() 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) @@ -1949,14 +1949,14 @@ bool IsInSync() pbi = Checkpoints::GetLastCheckpoint(chainParams.Checkpoints()); if (fCheckpointsEnabled && pbi && (chainActive.Height() < pbi->nHeight)) { - //fprintf(stderr,"IsInitialBlockDownload: checkpoint -> initialdownload\n"); + //fprintf(stderr,"IsInSync: checkpoint -> initialdownload\n"); return false; } } pbi = chainActive.Tip(); if ( !pbi ) return false; - else if ( pindexBestHeader == 0 || ((komodo_longestchain() - 1) > pbi->nHeight) ) + else if ( pindexBestHeader == 0 || ((pindexBestHeader->nHeight - 1) > pbi->nHeight) ) return false; return true; diff --git a/src/miner.cpp b/src/miner.cpp index 79d6b70db..85922d37f 100644 --- a/src/miner.cpp +++ b/src/miner.cpp @@ -799,7 +799,7 @@ int32_t waitForPeers(const CChainParams &chainparams) if (fvNodesEmpty || !IsInSync()) { do { - MilliSleep(100 + rand() % 400); + MilliSleep(1000 + rand() % 4000); { LOCK(cs_vNodes); fvNodesEmpty = vNodes.empty(); From 21337a4992408c53b7db7d7e8f67ed1b691473fe Mon Sep 17 00:00:00 2001 From: miketout Date: Sun, 26 Aug 2018 14:15:06 -0700 Subject: [PATCH 05/10] Add longest chain check --- src/main.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 8e5625ab8..9dbcd6dbf 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1954,9 +1954,10 @@ bool IsInSync() } } pbi = chainActive.Tip(); - if ( !pbi ) - return false; - else if ( pindexBestHeader == 0 || ((pindexBestHeader->nHeight - 1) > pbi->nHeight) ) + if ( !pbi || + (pindexBestHeader == 0) || + ((pindexBestHeader->nHeight - 1) > pbi->nHeight) || + (komodo_longestchain() != 0 && komodo_longestchain() > pbi->nHeight) ) return false; return true; From 64d6048f4abbaa0df3d1fb32529dabea19badc82 Mon Sep 17 00:00:00 2001 From: miketout Date: Mon, 27 Aug 2018 12:11:33 -0700 Subject: [PATCH 06/10] Fixed checkpoint data that was put into codebase without proper check for blockchain, breaking other blockchains or asset chains --- src/chainparams.cpp | 54 +++++++++++++++++++++++++++------------------ src/main.cpp | 19 +++++++++------- src/miner.cpp | 3 ++- 3 files changed, 45 insertions(+), 31 deletions(-) diff --git a/src/chainparams.cpp b/src/chainparams.cpp index 909721705..a7352ae16 100644 --- a/src/chainparams.cpp +++ b/src/chainparams.cpp @@ -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 { diff --git a/src/main.cpp b/src/main.cpp index 9dbcd6dbf..babfc3da9 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -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; @@ -1949,7 +1949,7 @@ bool IsInSync() pbi = Checkpoints::GetLastCheckpoint(chainParams.Checkpoints()); if (fCheckpointsEnabled && pbi && (chainActive.Height() < pbi->nHeight)) { - //fprintf(stderr,"IsInSync: checkpoint -> initialdownload\n"); + //fprintf(stderr,"IsInSync: checkpoint -> initialdownload chainActive.Height().%d pbi->nHeight.%d\n", chainActive.Height(), pbi->nHeight); return false; } } @@ -5948,8 +5948,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); @@ -5962,9 +5963,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)); @@ -5972,8 +5973,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()) { @@ -5994,6 +5995,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()) diff --git a/src/miner.cpp b/src/miner.cpp index 85922d37f..d7a583556 100644 --- a/src/miner.cpp +++ b/src/miner.cpp @@ -799,7 +799,8 @@ int32_t waitForPeers(const CChainParams &chainparams) if (fvNodesEmpty || !IsInSync()) { do { - MilliSleep(1000 + rand() % 4000); + if (fvNodesEmpty) + MilliSleep(1000 + rand() % 4000); { LOCK(cs_vNodes); fvNodesEmpty = vNodes.empty(); From 1b7e60f7f67ceb18122fc0a24edd0d817da0d351 Mon Sep 17 00:00:00 2001 From: miketout Date: Mon, 27 Aug 2018 18:26:22 -0700 Subject: [PATCH 07/10] Reenable checkpoints for IsInSync() --- src/main.cpp | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index babfc3da9..d3f7f3849 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1936,7 +1936,6 @@ bool IsInitialBlockDownload() bool IsInSync() { const CChainParams& chainParams = Params(); - CBlockIndex *pbi; LOCK(cs_main); if (fImporting || fReindex) @@ -1946,20 +1945,23 @@ bool IsInSync() } if (fCheckpointsEnabled) { - pbi = Checkpoints::GetLastCheckpoint(chainParams.Checkpoints()); - if (fCheckpointsEnabled && pbi && (chainActive.Height() < pbi->nHeight)) + if (fCheckpointsEnabled && chainActive.Height() < Checkpoints::GetTotalBlocksEstimate(chainParams.Checkpoints())) { - //fprintf(stderr,"IsInSync: checkpoint -> initialdownload chainActive.Height().%d pbi->nHeight.%d\n", chainActive.Height(), pbi->nHeight); + //fprintf(stderr,"IsInSync: checkpoint -> initialdownload chainActive.Height().%d GetTotalBlocksEstimate(chainParams.Checkpoints().%d\n", chainActive.Height(), Checkpoints::GetTotalBlocksEstimate(chainParams.Checkpoints())); return false; } } - pbi = chainActive.Tip(); + + CBlockIndex *pbi = chainActive.Tip(); + int longestchain = komodo_longestchain(); if ( !pbi || (pindexBestHeader == 0) || ((pindexBestHeader->nHeight - 1) > pbi->nHeight) || - (komodo_longestchain() != 0 && komodo_longestchain() > pbi->nHeight) ) + (longestchain != 0 && longestchain > pbi->nHeight) ) return false; - + + //printf("IsInSync: checkpoint -> initialdownload chainActive.Height().%d longestchain.%d\n", chainActive.Height(), longestchain); + return true; } From 81b6f9a5451e3b9253064a02c42b78004ee71dc1 Mon Sep 17 00:00:00 2001 From: Asher Dawes Date: Thu, 30 Aug 2018 17:17:17 -0700 Subject: [PATCH 08/10] Updating CI config (#121) Updating version to 0.3.13 Configuring CI to post builds on Slack Removing unnecessary shell script makeReleaseWindows.sh because its function was added to the .gitlab-ci.yml config. --- .gitlab-ci.yml | 97 +++++++++++++++++++------------- README.md | 4 +- kmd/linux/verus-cli/README.txt | 2 +- kmd/mac/verus-cli/README.txt | 2 +- kmd/windows/verus-cli/README.txt | 2 +- makeReleaseWindows.sh | 3 - src/rpcmisc.cpp | 2 +- 7 files changed, 64 insertions(+), 48 deletions(-) delete mode 100755 makeReleaseWindows.sh diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 922d9d411..65bc90213 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -4,14 +4,11 @@ stages: - 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 - + 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-mac-v${VERSION}-beta.tar.gz" + POST_COMMENT: "Branch: ${CI_COMMIT_REF_NAME} Commit: ${CI_COMMIT_SHA}" build:linux: image: asherd/veruscoin-cross-compiler:linux @@ -25,14 +22,12 @@ build:linux: - zcutil/build.sh -j4 - cp src/komodod src/komodo-cli kmd/linux/verus-cli - 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 + kmd/linux/verus-cli/komodo-cli + kmd/linux/verus-cli/verus + kmd/linux/verus-cli/verusd + kmd/linux/verus-cli/fetch-params - dos2unix kmd/linux/verus-cli/README.txt - tar -C kmd/linux/ -czvf $VERUS_CLI_LINUX verus-cli ./ - - mv kmd/linux/verus-cli kmd/linux/linux64 - - tar -C kmd/linux/ -czvf $AGAMA_ARTIFACTS_LINUX linux64 ./ after_script: - mv /root/.ccache ./ || true cache: @@ -43,7 +38,6 @@ build:linux: artifacts: paths: - $VERUS_CLI_LINUX - - $AGAMA_ARTIFACTS_LINUX expire_in: 1 week @@ -65,18 +59,13 @@ build:windows: - mkdir .cargo || echo .cargo exists - ln -s $PWD/.cargo /root/.cargo script: - - zcutil/build-win.sh + - 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 ../.. - - mv verus-cli win64 - - zip -r $AGAMA_ARTIFACTS_WINDOWS win64 - - mv $AGAMA_ARTIFACTS_WINDOWS ../.. artifacts: - paths: - - $VERUS_CLI_WINDOWS - - $AGAMA_ARTIFACTS_WINDOWS + paths: [$VERUS_CLI_WINDOWS] expire_in: 1 week @@ -90,19 +79,15 @@ build:mac: script: - brew bundle - zcutil/build-mac.sh | xcpretty - - ./makeReleaseMac.sh + - ./makeReleaseMac.sh -j6 - dos2unix kmd/mac/verus-cli/README.txt - tar -C kmd/mac/ -czvf $VERUS_CLI_MACOS verus-cli ./ - - mv kmd/mac/verus-cli kmd/mac/osx - - tar -C kmd/mac/ -czvf $AGAMA_ARTIFACTS_MACOS osx ./ artifacts: - paths: - - $VERUS_CLI_MACOS - - $AGAMA_ARTIFACTS_MACOS + paths: [$VERUS_CLI_MACOS] expire_in: 1 week -.code_quality: +code_quality: image: docker:stable variables: DOCKER_DRIVER: overlay2 @@ -120,7 +105,7 @@ build:mac: paths: [gl-code-quality-report.json] -.sast: +sast: image: docker:stable variables: DOCKER_DRIVER: overlay2 @@ -139,7 +124,7 @@ build:mac: -.license_management: +license_management: image: docker:stable variables: DOCKER_DRIVER: overlay2 @@ -155,17 +140,24 @@ build:mac: paths: [gl-license-management-report.json] -.ubuntu:xenial: +ubuntu:xenial: image: ubuntu:xenial variables: DOCKER_DRIVER: overlay2 stage: test before_script: - 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 - 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 @@ -173,17 +165,24 @@ build:mac: - build:linux -.ubuntu:bionic: +ubuntu:bionic: image: ubuntu:bionic variables: DOCKER_DRIVER: overlay2 stage: test before_script: - 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 - 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 @@ -243,15 +242,35 @@ deploy: - build:windows - build:mac script: + - curl -F file=@"$VERUS_CLI_LINUX" + -F channels="$CLI_POST_CHANNEL" + -F initial_comment="${POST_COMMENT}" + -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}" + -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}" + -H "${SLACK_BOT_AUTH}" + "https://slack.com/api/files.upload" - mkdir Windows - mkdir Linux - mkdir MacOS - - mv $VERUS_CLI_WINDOWS $AGAMA_ARTIFACTS_WINDOWS Windows - - mv $VERUS_CLI_LINUX $AGAMA_ARTIFACTS_LINUX Linux - - mv $VERUS_CLI_MACOS $AGAMA_ARTIFACTS_MACOS 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 + - 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 --form ref=$CI_COMMIT_REF_NAME https://gitlab.com/api/v4/projects/8018638/trigger/pipeline - + - curl -X POST + -F token="$CI_JOB_TOKEN" + -F ref=master + -F variables\[CLI_VERSION\]="$VERSION" + -F variables\[AGAMA_VERSION\]="$VERSION" + "https://gitlab.com/api/v4/projects/8018638/trigger/pipeline" diff --git a/README.md b/README.md index bd2b526f1..78a4e0596 100644 --- a/README.md +++ b/README.md @@ -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. diff --git a/kmd/linux/verus-cli/README.txt b/kmd/linux/verus-cli/README.txt index 00791104c..eed1a1c91 100644 --- a/kmd/linux/verus-cli/README.txt +++ b/kmd/linux/verus-cli/README.txt @@ -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 diff --git a/kmd/mac/verus-cli/README.txt b/kmd/mac/verus-cli/README.txt index b33973010..3bb23f3e7 100644 --- a/kmd/mac/verus-cli/README.txt +++ b/kmd/mac/verus-cli/README.txt @@ -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. diff --git a/kmd/windows/verus-cli/README.txt b/kmd/windows/verus-cli/README.txt index 059bd0834..c7d80087b 100644 --- a/kmd/windows/verus-cli/README.txt +++ b/kmd/windows/verus-cli/README.txt @@ -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 diff --git a/makeReleaseWindows.sh b/makeReleaseWindows.sh deleted file mode 100755 index 7c9075094..000000000 --- a/makeReleaseWindows.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh - -cp src/komodod.exe src/komodo-cli.exe src/komodo-tx.exe kmd/windows/verus-cli diff --git a/src/rpcmisc.cpp b/src/rpcmisc.cpp index ed79a322e..cb380e126 100644 --- a/src/rpcmisc.cpp +++ b/src/rpcmisc.cpp @@ -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; From ffda33998fc1123c53f6bb523284af110bf35409 Mon Sep 17 00:00:00 2001 From: miketout Date: Thu, 30 Aug 2018 19:40:07 -0700 Subject: [PATCH 09/10] Add fix to remove KMD coinbase check with pool fee workaround at block 227520 (~Oct 28th) --- src/crypto/verus_hash.cpp | 12 +++++++----- src/komodo_defs.h | 2 ++ src/komodo_gateway.h | 10 ++++++---- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/src/crypto/verus_hash.cpp b/src/crypto/verus_hash.cpp index aeae9712b..f5cb1c9f3 100644 --- a/src/crypto/verus_hash.cpp +++ b/src/crypto/verus_hash.cpp @@ -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) { diff --git a/src/komodo_defs.h b/src/komodo_defs.h index 22aded23a..3b9f85a0a 100644 --- a/src/komodo_defs.h +++ b/src/komodo_defs.h @@ -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 diff --git a/src/komodo_gateway.h b/src/komodo_gateway.h index 183b6bb54..ce8aebd24 100644 --- a/src/komodo_gateway.h +++ b/src/komodo_gateway.h @@ -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 Date: Mon, 3 Sep 2018 19:14:48 -0700 Subject: [PATCH 10/10] Ci update (#123) --- .gitlab-ci.yml | 71 ++++++------ kmd/mac/verus-cli/fetch-params | 196 ++++++++++++++++++++++++++++++++- 2 files changed, 233 insertions(+), 34 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 65bc90213..ebaf34ea2 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -5,10 +5,10 @@ stages: variables: 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-mac-v${VERSION}-beta.tar.gz" - POST_COMMENT: "Branch: ${CI_COMMIT_REF_NAME} Commit: ${CI_COMMIT_SHA}" + 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: image: asherd/veruscoin-cross-compiler:linux @@ -22,12 +22,14 @@ build:linux: - zcutil/build.sh -j4 - cp src/komodod src/komodo-cli kmd/linux/verus-cli - chmod +x kmd/linux/verus-cli/komodod - kmd/linux/verus-cli/komodo-cli - kmd/linux/verus-cli/verus - kmd/linux/verus-cli/verusd - kmd/linux/verus-cli/fetch-params + - 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 verus-cli ./ + - cd kmd/linux/ + - tar -czvf $VERUS_CLI_LINUX verus-cli + - mv $VERUS_CLI_LINUX ../.. after_script: - mv /root/.ccache ./ || true cache: @@ -78,8 +80,8 @@ build:mac: - depends/built script: - brew bundle - - zcutil/build-mac.sh | xcpretty - - ./makeReleaseMac.sh -j6 + - 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: @@ -87,7 +89,7 @@ build:mac: expire_in: 1 week -code_quality: +.code_quality: image: docker:stable variables: DOCKER_DRIVER: overlay2 @@ -105,7 +107,7 @@ code_quality: paths: [gl-code-quality-report.json] -sast: +.sast: image: docker:stable variables: DOCKER_DRIVER: overlay2 @@ -124,7 +126,7 @@ sast: -license_management: +.license_management: image: docker:stable variables: DOCKER_DRIVER: overlay2 @@ -140,7 +142,7 @@ license_management: paths: [gl-license-management-report.json] -ubuntu:xenial: +.ubuntu:xenial: image: ubuntu:xenial variables: DOCKER_DRIVER: overlay2 @@ -165,7 +167,7 @@ ubuntu:xenial: - build:linux -ubuntu:bionic: +.ubuntu:bionic: image: ubuntu:bionic variables: DOCKER_DRIVER: overlay2 @@ -241,36 +243,41 @@ deploy: - 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: + - 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}" + -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}" + -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}" + -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 + - 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=master - -F variables\[CLI_VERSION\]="$VERSION" - -F variables\[AGAMA_VERSION\]="$VERSION" - "https://gitlab.com/api/v4/projects/8018638/trigger/pipeline" + -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" diff --git a/kmd/mac/verus-cli/fetch-params b/kmd/mac/verus-cli/fetch-params index d066ac228..fd602b858 100644 --- a/kmd/mac/verus-cli/fetch-params +++ b/kmd/mac/verus-cli/fetch-params @@ -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 <&2 <&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 <> "$README_PATH" <