Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

WIP: Feature/8.22.0 #63

Merged
merged 2,523 commits into from
Mar 12, 2023
Merged

WIP: Feature/8.22.0 #63

merged 2,523 commits into from
Mar 12, 2023

Conversation

gto90
Copy link
Member

@gto90 gto90 commented Aug 9, 2021

All four GitHub Actions finally ran through 🎉🥳

🔥 This is a huge milestone for this pull request (PR) 🔥

However, the PR is not fully finished yet. We have a bunch of things to test thoroughly and several changes to consensus critical parameters to double check.
Throughout the last weeks, while I was working on this PR, I noted down a bunch of different things that are critical to this release:

  • TODO-001: Several deployments were moved to buried deployments. New values for the activation block heights were chosen by myself by looking up block heights in the block explorer. Example commit: JaredTate@3c7a7d3
    Required steps:

    • Validate that chosen block height for DEPLOYMENT_CSV and DEPLOYMENT_NVERSIONBIPS (4164302) was chosen correctly
    • Validate that chosen block height for DEPLOYMENT_SEGWIT (4394880) was chosen correctly
    • Validate that chosen block height for DEPLOYMENT_RESERVEALGO (7550000) was chosen correctly
    • Perform a full sync and validate that the node syncs to 100% without rejecting any blocks that have new versions active
  • TODO-002: Throughout fixing the automated unit tests for Qt we noticed that the current fee model for DigiByte needed special care. The commit JaredTate@4c03608 increases the incremental relay fee for replacement transactions (BIP 125) by 200x that was required for Rbf. This shouldn't have an impact at all since Rbf is disabled for DigiByte currently.
    Required steps:

    • Discuss whether Rbf shall remain disabled for the next release. Due to the small block time it is unlikely we will enable Rfb at all.
    • Create a bunch of transactions using digibyte-tx and digibyte-qt, validate the calculated fee is still correct and transactions will not be rejected by the network
  • TODO-003: Validate that digibyte-qt is working properly.
    Required steps:

    • Ensure digibyte-qt shows the correct DigiByte network parameters
    • Ensure digibyte-qt is not crashing when sending a regular transaction
  • TODO-004: The bitcoin upstream changes caused a big refactoring of internal classes, etc. This forced us to reintegrate Dandelion-specific code, which might have broken Dandelion.

    • Validate Dandelion is really disabled when using -disable-dandelion arg and non-dandelion transactions can be crafted and broadcasted
    • Validate Dandelion is enabled (i.e. dandelion thread is starting) when not specifying -disable-dandelion arg
    • Validate Dandelion is enabled and correctly broadcasting a dandelion transaction (observe logs!!). Ensure that the transaction eventually transitions from the stempool into the real mempool.
    • Validate Dandelion is enabled but normal transactions are still possible
  • TODO-005: Similar to TODO-004 we need to validate MultiAlgo is working properly

    • A full sync will already show that MultiAlgo is still working, as it would reject blocks if not working properly.
    • Try to submit malicious blocks and ensure they are properly rejected by the network (wrong high-hash)
    • Use a real Odocrypt miner to mine a block in testnet. An attempt to mine N consecutive blocks should show the adapting difficulty.
    • Use a real Odocrypt miner to mine a block in mainnet
  • TODO-006: During the merge, Taproot (🚀) was introduced into our codebase. The unit tests already validate that taproot is working as expected.
    Required steps:

  • TODO-007: DigiByte Signet has been added. Validate signet parameters.

  • TODO-008: Perform a fresh sync in DigiByte Testnet. Ensure that no crashes, no weird warnings and no unexpected behavior occurs.

  • TODO-009: Perform a fresh sync in DigiByte Mainnet. Ensure that no crashes, no weird warnings and no unexpected behavior occurs. Ensure that the client is not forking.

Not saying this list is complete, but it should serve as a perfect starting point.

When most of the tasks are completed, we could soon start the review and aim at an eventual approval.
From that point, we need to double test everything is working properly, add possibly create release candidates and finally distribute signed releases.

Theoretically, we can work on integrating additional features (sync improvements, new mining algorithms?) before creating an official release.

@JaredTate
Copy link

JaredTate commented Sep 9, 2021

Testing RPC Commands in v 8.22

Blockchain RPCs

  • getbestblockhash -working
  • getblock -working
  • getblockchaininfo -working
  • getblockcount -working
  • getblockfilter -working, needs indexing turned on to test
  • getblockhash -working
  • getblockheader -working
  • getblockstats -working
  • getchaintips -working
  • getchaintxstats -working
  • getdifficulty -working
  • getmempoolancestors - not working, or I am not testing right
  • getmempooldescendants - not working, or I am not testing right
  • getmempoolentry -working
  • getmempoolinfo -working.... but should it have dandelion info?
  • getrawmempool -working
  • gettxout -working
  • gettxoutproof -working
  • gettxoutsetinfo -working
  • preciousblock
  • pruneblockchain
  • savemempool
  • scantxoutset
  • verifychain -working
  • verifytxoutproof

Contol RPC's

  • getmemoryinfo -working
  • getrpcinfo -working
  • help -working
  • logging -working
  • stop -working
  • uptime -working

Generating RPCs

  • generateblock
  • generatetoaddress
  • generatetodescriptor

Mining RPCs

  • getblocktemplate
  • getmininginfo -working
  • getnetworkhashps - not calculating correctly
  • prioritisetransaction
  • submitblock
  • submitheader

Network RPC's

  • addnode -working
  • clearbanned -working
  • disconnectnode -working
  • getaddednodeinfo -working
  • getconnectioncount -working
  • getnettotals -working
  • getnetworkinfo -working
  • getnodeaddresses -working
  • getpeerinfo -working
  • listbanned -working
  • ping -working
  • setban -working
  • setnetworkactive -working

@JaredTate
Copy link

JaredTate commented Sep 9, 2021

Rawtransactions RPCs

  • analyzepsbt
  • combinepsbt
  • combinerawtransaction
  • converttopsbt
  • createpsbt
  • createrawtransaction
  • decodepsbt
  • decoderawtransaction
  • decodescript
  • finalizepsbt
  • fundrawtransaction
  • getrawtransaction
  • joinpsbts
  • sendrawtransaction
  • signrawtransactionwithkey
  • testmempoolaccept
  • utxoupdatepsbt

Util RPCs

  • createmultisig
  • deriveaddresses
  • estimatesmartfee -working
  • getdescriptorinfo
  • getindexinfo
  • signmessagewithprivkey
  • validateaddress -working
  • verifymessage

@JaredTate
Copy link

JaredTate commented Sep 9, 2021

Wallet RPCs
Note: the wallet RPCs are only available if DigiByte Core was built with wallet support, which is the default.

  • abandontransaction
  • abortrescan
  • addmultisigaddress
  • backupwallet
  • bumpfee
  • createwallet -working
  • dumpprivkey
  • dumpwallet
  • encryptwallet
  • getaddressesbylabel
  • getaddressinfo -working
  • getbalance -working
  • getbalances -working
  • getnewaddress -working
  • getrawchangeaddress -working
  • getreceivedbyaddress -working
  • getreceivedbylabel -working
  • gettransaction -working
  • getunconfirmedbalance -working
  • getwalletinfo -working
  • importaddress
  • importdescriptors
  • importmulti
  • importprivkey
  • importprunedfunds
  • importpubkey
  • importwallet
  • keypoolrefill
  • listaddressgroupings -working
  • listlabels -working
  • listlockunspent
  • listreceivedbyaddress -working
  • listreceivedbylabel -working
  • listsinceblock -working
  • listtransactions -working
  • listunspent -working
  • listwalletdir -working
  • listwallets -working
  • loadwallet
  • lockunspent
  • psbtbumpfee
  • removeprunedfunds
  • rescanblockchain
  • send
  • sendmany
  • sendtoaddress
  • sethdseed
  • setlabel
  • settxfee
  • setwalletflag
  • signmessage
  • signrawtransactionwithwallet
  • unloadwallet
  • upgradewallet
  • walletcreatefundedpsbt
  • walletlock
  • walletpassphrase
  • walletpassphrasechange
  • walletprocesspsbt

@SmartArray
Copy link

SmartArray commented Sep 12, 2021

TODO-001

I finally found some time to validate the block heights for all buried deployments. This is what I came up with:

DEPLOYMENT NAME DEPLOYMENT HEIGHT
DEPLOYMENT_CLTV 4394880
DEPLOYMENT_DERSIG 4394880
DEPLOYMENT_CSV 4394880
DEPLOYMENT_SEGWIT 4394880
DEPLOYMENT_NVERSIONBIPS 4394880
DEPLOYMENT_RESERVEALGO 8547840
DEPLOYMENT_ODO 9112320

Preparing a commit now.

As always, good took time to validate them.

@SmartArray
Copy link

SmartArray commented Sep 13, 2021

I pushed several commits this morning to fix the wrong Difficulty that was printed out when calling getblockchaininfo().

Also I fixed several other things such as incorrect computed block versions.

Unfortunately, there is still one warning left (versionbit 12 is active and unknown).

JaredTate and others added 14 commits January 18, 2023 14:36
Need to make sure local Python version matches this for Make Deploy to build the dmg
I have removed all the non-functioning seeders after testing all of them. The list is here: https://1drv.ms/w/s!AsTGLNLt5YBypgS8ljrD5-aSSqol

Many of these were not actually DNS Seeders but full nodes. The plan is to replace all these with true DNS Seeders, with each one run by a different member of the community, distributed around the globe. Each person running a Seeder will be making their own PR to add theirs. All these should be DNS Seeders NOT full nodes. This is how Bitcoin does it: https://github.com/bitcoin/bitcoin/blob/07ce278455757fb46dab95fb9b97a3f6b1b84faf/src/chainparams.cpp#L132

I have also added some guidelines on how people should add their Seeder, including their name and Github URL so everyone knows who to contact in the event of a problem.

I have also added the testnet seeders setup by myself and @j50ng since there are none working right now. Everyone else will make their own PR to add theirs. This is simply to get the testnet working again at least for this branch.

The new list of Seeders can be seen here: https://1drv.ms/w/s!AsTGLNLt5YBypgadXSi16NEPaXes
…s.py: -easypow parameter added for regtest transactions
… as tested in init_tests.cpp by walletinit_verify_walletdir_no_trailing2 and walletinit_verify_walletdir_no_trailing
Bitcoin Core completely ripped out SSL tests as OpenSSL3 changed a ton of stuff and broke many things in core tests.
Fixed remaining Functional tests for 8.22
@JaredTate JaredTate self-requested a review March 12, 2023 18:04
Copy link

@JaredTate JaredTate left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

tACK. Now that we have the tests finished let's get this merged into develop. Continuing to create a PR into PR's is getting complicated.

Copy link

@SmartArray SmartArray left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

tACK

@JaredTate JaredTate requested review from j50ng and ycagel March 12, 2023 19:26
BouwmanR

This comment was marked as outdated.

@JaredTate JaredTate requested a review from BouwmanR March 12, 2023 20:57
BouwmanR

This comment was marked as outdated.

@JaredTate JaredTate requested a review from BouwmanR March 12, 2023 21:01
BouwmanR

This comment was marked as outdated.

BouwmanR

This comment was marked as outdated.

@JaredTate JaredTate requested a review from BouwmanR March 12, 2023 21:09
BouwmanR

This comment was marked as outdated.

Copy link

@BouwmanR BouwmanR left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

cACK

@JaredTate JaredTate merged commit 372a78a into develop Mar 12, 2023
@gto90 gto90 deleted the feature/8.22.0 branch December 23, 2024 17:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants