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

Implement Testnet Configuration #9

Closed
joshmg opened this issue Jan 30, 2020 · 1 comment
Closed

Implement Testnet Configuration #9

joshmg opened this issue Jan 30, 2020 · 1 comment
Labels
enhancement New feature or request funded Sponsorship goal reached for this issue funding wanted Sponsorship is requested for this issue mining Related to mining / pools node Related to the node module

Comments

@joshmg
Copy link
Member

joshmg commented Jan 30, 2020

Implement Testnet Configuration

GitHub Issue #9

Problem Description

Currently Bitcoin Verde only allows for connections to mainnet.
While historically testing of edge cases has largely been does via unit tests with public test vectors, there is additional integration testing that Bitcoin Verde could benefit from by connecting to testnet, particularly in the time leading up to hard-forks where it appears testnet is more heavily used.
Connecting to testnet may also provide a way for Bitcoin Verde's unique perspective on testing Bitcoin Cash to benefit other node implementations in the event that the many difference between Bitcoin Verde and other implementations may lead to different kinds of test transactions.
One of the key reasons this isn't already implemented is that testnet has a number of differences in terms of how transactions and blocks are relayed, validated, and mined.
As such, these differences will all need to be implemented as toggle-able based on a new configuration field.

Value Proposition

This solution will provide the following benefits:

  • An additional mode of testing that should provide benefits over current modes.

  • Increased exposure to edge-case transactions that are less prohibited on testnet.

  • Improved coordination with other node implementations for hard-fork testing.

Solution Overview

In order to operate with the testnet, the following updates will be required:

  • Alternative port numbers, magic number, and DNS seeds

  • Different address version number and prefix

  • Different genesis block

  • Additional difficulty adjustment rules

It is also worth noting that, although transaction standardness is not enforced by Bitcoin Verde currently currently, steps should also be taken to ensure that if and when standardness checks are added to Bitcoin Verde, they will still be disabled when connecting to the testnet.

Solution Milestones

  1. Update components with different static content.

The first milestone consists of the changes needed purely to communicate with the BCH testnet. This includes port numbers, anything affecting protocol message contents, and information about the genesis block.

  1. Ensure full synchronization is possible.

Update transaction and block validation rules to ensure that Bitcoin Verde will in fact accept the content it is now able to request and receive.

Estimated Relative Complexity

  • Milestone 1 - 20 / 60 (33%)
  • Milestone 2 - 40 / 60 (67%)

Budget

This proposal does not have a minimum starting budget.

Completing this proposal will require approximately 60 hours.

At a rate of 0.5 BCH/hr, the total budget for this proposal is 30 BCH.

Funding Address

Funding this proposal may be sponsored by sending Bitcoin Cash to the following address:
196JBcMUrnekHYvnWXcy6mGN5xsGqiKZud
(bitcoincash:qpvvzm07gv38cyy47frutk5tj0er9vvjvvdzl3xggk)

Authorization Signature:

The signature is signed with our primary donation address, 1VerdeMuXH1ApSZsQDkuHHZrwJaAtXTVn, which can be found on bitcoinverde.org.

The signature message consists of a Bitcoin Signed Message with the following format:

Issue-Number | Issue Title | Funding Address | Estimate Hours | Budget BCH

Notes:

  1. The pre-image includes the concatenation symbol.

Pre-image:

9|Implement Testnet Configuration|196JBcMUrnekHYvnWXcy6mGN5xsGqiKZud|60|30

Signature:

G8fitCCem2B9Cy61I2Aub7A1Ge0QvUcBFYxNik5tQJkKaPFtAgnx0G8684BBeBdVdysVC8L50WUXXcCawsQLmLU=

@joshmg joshmg added enhancement New feature or request mining Related to mining / pools labels Jan 31, 2020
@joshmg joshmg modified the milestones: Update components with different static content., Ensure full synchronization is possible. Jan 31, 2020
@joshmg joshmg added node Related to the node module funding wanted Sponsorship is requested for this issue labels Feb 3, 2020
@joshmg joshmg added the funded Sponsorship goal reached for this issue label Aug 25, 2020
@joshmg
Copy link
Member Author

joshmg commented Mar 15, 2021

Merged via 25145ea .

@joshmg joshmg closed this as completed Mar 15, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request funded Sponsorship goal reached for this issue funding wanted Sponsorship is requested for this issue mining Related to mining / pools node Related to the node module
Projects
None yet
Development

No branches or pull requests

1 participant