Giter Club home page Giter Club logo

bitgesell's People

Contributors

achow101 avatar ajtowns avatar amitiuttarwar avatar dongcarl avatar empact avatar fanquake avatar fjahr avatar gitcoindev avatar glozow avatar hebasto avatar jamesob avatar janus avatar jarolrod avatar jnewbery avatar jonatack avatar kallewoof avatar kiminuo avatar laanwj avatar le2ks avatar luke-jr avatar madnadyka avatar meshcollider avatar practicalswift avatar promag avatar ryanofsky avatar sipa avatar sjors avatar thestack avatar van-orton avatar vasild avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

bitgesell's Issues

bitgesell (BGL) CORE Wallet "corrupted block database"

I can't open my wallet nor BIT Core wallet due to the error above. Using windows 10, I've run a few commands, checked logs, and uninstalled/reinstalled. Anyone know how to fix this? I'm mining BGL, it's being transferred to the wallet, but I can't open the application. The warning is just really repetitive every time I opne it: bitgesell (BGL) CORE Wallet "corrupted block database"

Bump version

Please bump the version to v 0.1.2
It's still indicating 0.1.1

BGL PR bounty hunt

To get more people involved and provide motivation, we are announcing
Bitgesell Pull Request bounty hunt!

The rules are simple:

  • You can create any reasonable pull request that may contain any modifications, including,
    but not limited to:
    • Refactoring and simplification;
    • Test fixes (1 test group/file fixed by single PR counts!);
    • Cleanup of features that are no longer used (e.g. non-segwit transactions);
    • Documentation and comments (but if no code changes then some reasonable amount of changes should be done to count);
    • Bug fixes;
  • Every PR would be paid $100 in USDT upon approval, larger PRs could receive bigger payouts.
  • Interested people are welcome to become maintainers of the project;

(multi-contributor bounty would be recreated when possible on Gitcoin soon)

(I miscreated issue on personal repo, please make PRs and fork them from the repo github.com/bitgesellofficial/bitgesell), sorry created issue in this one by mistake

Create script to build installer .exe or .msi for Windows (runnable on windows 7 x64 and newer)

Task Description

The aim of this task is to revisit creation of the Windows installable package (the Nullsoft installer is currenly used) of BGL Core. It's largely the same script and process as the Bitcoin Core installation script, with same dependencies and build process.
It uses VS2019 image to build the installation executable package.
https://github.com/wu-emma/bitgesell/blob/master/.appveyor.yml

You can create free account on AppVeyor.com at https://www.appveyor.com/

Solution steps

  • Ensure that windows build is working (including Qt wallet), this will require Visual Studio (download VS2019 Community Edition if you don't have one installed);
  • There are dependencies installed using vcpkg, but the more complicated thing is Qt, which should be installed by hand (check existing AppVeyor script link https://github.com/sipsorcery/qt_win_binary/releases/download/v1.6/Qt5.9.8_x64_static_vs2019.zip);
  • Fix dependencies or project settings (if needed) in build_msvc;
  • Sign up to AppVeyor free tier;
  • Fix AppVeyor script in .appveyor.yml

Acceptance criteria

  • AppVeyor has a free tier -- please sign up for it, project is public, so it is allowed;
  • AppVeyor can automatically build Windows installable package for Windows x64 platform;
  • Along with pull request (which probably would be rather short), provide sample of built setup executable and short notes of integrating/fetching built artifacts from AppVeyour build.

Adapt bitcoin-standup-scripts to automate deploy

Task description

The goal of the issue is to have a shell script, that will simplify putting a8 new BGL node online simple and fast.

There is a solution available for BTC at https://github.com/BlockchainCommons/Bitcoin-Standup-Scripts

So the solution direction looks like following:

  1. Get the scripts from the repo to work with BGL Core;
  2. Test with a clean Debian installation;
  3. Place modified scripts in the tools/standup-scripts section;

BGL Core command-line arguments are as of now fully compatible with Bitcoin Core arguments.
Packages and installation notes can be found in the 'releases' section on GitHub
https://github.com/wu-emma/bitgesell/releases/tag/0.1.2

Acceptance criteria:

  • On a VM with clean image of Ubuntu 18.04 (e.g. in popular cloud services like GCloud)
    the script could be downloaded with wget tool and ran with required parameters,
    making the VM a full BGL Core node with autorestart of the service (particular cloud
    firewall configuration is out of scope);

Bitgesell contribution program ($25000 overall budget)

Bitgesell (BGL) project is open for the contributions and participation.
BGL is BTC-derived cryptocurrency with own blockchain, transaction fee burning
mechanics and faster halving rate. A good source of the information would be
the first 2 posts in the bitcointalk forum thread:
https://bitcointalk.org/index.php?topic=5238559.0

There is community budget formed for the incentivizing project technical contributions.

Activities that would be compensated:

  • fixing integration tests (this process is approximately 50% completed).
    A good chunk of tests fixed (see example here #46 would be compensated around $1000);
  • cleaning the codebase (this must require thorough understanding of what is required
    and what is not), just fixing some comment links or introducing changes to readme
    files could be useful (but bounty payment would be less);
  • we are also looking for maintainers to review PRs, test the build, test changes manually
    and running test suites;
  • there are CirrusCI configs written to build the software for various platforms, there are
    minor issues present and fixes/updates to those are also welcome;
  • fixes to the UI are welcome, example: BGL has only segwit addresses support (no legacy),
    so the feature of signing a message is not supported (BTC does not support this too),
    removing this from UI in a graceful way would be considered as useful contribution;
  • infrastructural upgrades: if you want to bring up BGL testnet (which is not
    supported at the moment as the fees in mainnet are very reasonable) this would be much
    welcome too;

This list is just an example, if you want to contribute in another way that you think
brings value to the project, feel free to ask prior (if the task is large) or make a
partial change/prototype. Honest contributions are welcome, the cheat/abuse contributions
like formal changes (formatting, a pair of comments added, etc.) would be rejected.

There are other repositories of the project (where you can propose updates too), notably:

We are strong believers in open-source and the approach that GitCoin is offering to
the worldwide developer community: freedom, transparency and direct cooperation.

Please respect everyone and don't spam messages that make no sense, any questions could
be asked in:

PRs would be paid in USDT upon approval, contributions in other areas (like infrastructure)
would be compensated after implementation.
Interested people are welcome to become regular maintainers of the project (this is
negotiable after some contribution is made);

Welcome to Bitgesell team and good luck!

Functional p2p_segwit test 'test_witness_block_size' fails due to too large block constructed

I am reporting this issue while working on #63

Detected by failing functional test: p2p_segwit.py

Steps to reproduce:

python test/functional/p2p_segwit.py

Expected result:

Max block size is accepted by the BGL chain.

Actual behaviour:

$ python test/functional/p2p_segwit.py
2021-11-17T08:54:46.658000Z TestFramework (INFO): Initializing test directory /tmp/BGL_func_test_yukdiunt
2021-11-17T08:54:48.112000Z TestFramework (INFO): Starting tests before segwit activation
2021-11-17T08:54:48.112000Z TestFramework (INFO): Subtest: test_non_witness_transaction (Segwit active = False)
2021-11-17T08:54:48.315000Z TestFramework (INFO): Subtest: test_v0_outputs_arent_spendable (Segwit active = False)
2021-11-17T08:54:48.767000Z TestFramework (INFO): Subtest: test_block_relay (Segwit active = False)
2021-11-17T08:54:50.191000Z TestFramework (INFO): Advancing to segwit activation
2021-11-17T08:54:50.191000Z TestFramework (INFO): Subtest: advance_to_segwit_active (Segwit active = False)
2021-11-17T08:54:50.223000Z TestFramework (INFO): Subtest: test_p2sh_witness (Segwit active = True)
2021-11-17T08:54:50.560000Z TestFramework (INFO): Subtest: test_witness_commitments (Segwit active = True)
2021-11-17T08:54:50.840000Z TestFramework (INFO): Subtest: test_block_malleability (Segwit active = True)
2021-11-17T08:54:51.234000Z TestFramework (INFO): Subtest: test_witness_block_size (Segwit active = True)
2021-11-17T08:54:51.524000Z TestFramework (ERROR): Assertion failed

detailed log:

 test  2021-11-17T08:55:37.085000Z TestFramework.p2p (DEBUG): Send message to 127.0.0.1:12567: msg_block(block=CBlock(nVersion=4 hashPrevBlock=2a45d588c46a946d4e65a7ab4a7d601afe6fad7b6d37e8ee931bdfddcb5a0adb hashMerkleRoot=a08eed884447c70871d6675c7574a46e6c492261c724d768d711d7f15d37e003 nTime=Wed Nov 17 09:55:55 2021 nBits=207fffff nNonce=00000000 vtx=[CTransaction(nVersion=1 vin=[CTxIn(prevout=COutPoint(hash=0000000000000000000000000000000000000000000000000000000000000000 n=4294967295) scriptSig=028000 nSequence=4294967295)] vout=[CTxOut(nValue=200.00000000 scriptPubKey=51), CTxOut(nValu... (msg truncated) 
 test  2021-11-17T08:55:37.085000Z TestFramework.p2p (DEBUG): Send message to 127.0.0.1:12567: msg_ping(nonce=0000001a) 
 node0 2021-11-17T08:55:37.111988Z [msghand] [net_processing.cpp:2331] [ProcessMessage] received: block (3934751 bytes) peer=2 
 node0 2021-11-17T08:55:37.131215Z [msghand] [net_processing.cpp:3541] [ProcessMessage] received block 010771ebce3fd83690875e0793e1ba9a83b63050400b2ef945641ac672b07885 peer=2 
 node0 2021-11-17T08:55:37.131402Z [msghand] [util/system.h:52] [error] ERROR: AcceptBlock: bad-blk-weight, ContextualCheckBlock : weight limit failed 
 node0 2021-11-17T08:55:37.131416Z [msghand] [validationinterface.cpp:249] [BlockChecked] BlockChecked: block hash=010771ebce3fd83690875e0793e1ba9a83b63050400b2ef945641ac672b07885 state=bad-blk-weight, ContextualCheckBlock : weight limit failed 
 node0 2021-11-17T08:55:37.131428Z [msghand] [net_processing.cpp:1166] [Misbehaving] Misbehaving: peer=2 (800 -> 900) 
 node0 2021-11-17T08:55:37.131436Z [msghand] [util/system.h:52] [error] ERROR: ProcessNewBlock: AcceptBlock FAILED (bad-blk-weight, ContextualCheckBlock : weight limit failed) 

The test case itself is quite complex to fix as it constructs a large block with fake transactions, therefore I am opening a separate issue for that.

functional test p2p_dos_header_tree.py quarantine question

hi @madnadyka I analyzed failure of functional test case test/functional/p2p_dos_header_tree.py and figured out it contains simulated fork with headers from bitcoin test network stored in test/functional/data/blockheader_testnet3.hex data file. In bitcoin the first checkpoint for test network happens fast in block 546 defined here https://github.com/bitcoin/bitcoin/blob/master/src/chainparams.cpp#L258 but for BGL the hardcoded check point for test network was removed https://github.com/BitgesellOfficial/bitgesell/blob/master/src/chainparams.cpp#L266 should we quarantine /disable the test case then?

Last error I suppose

I solved all the previous errors and this may be the last error I suppose
import file mismatch:
imported module 'test_runner' has this file attribute:
/home/runner/work/bitgesell/bitgesell/test/functional/test_runner.py
which is not the same as the test file we want to collect:
/home/runner/work/bitgesell/bitgesell/test/fuzz/test_runner.py
HINT: remove pycache / .pyc files and/or use a unique basename for your test file modules
=============================== warnings summary ===============================
test/functional/test_runner.py:487
/home/runner/work/bitgesell/bitgesell/test/functional/test_runner.py:487: PytestCollectionWarning: cannot collect test class 'TestHandler' because it has a init constructor (from: test/functional/test_runner.py)
class TestHandler:

test/functional/test_runner.py:574
/home/runner/work/bitgesell/bitgesell/test/functional/test_runner.py:574: PytestCollectionWarning: cannot collect test class 'TestResult' because it has a init constructor (from: test/functional/test_runner.py)
class TestResult():

test/functional/test_framework/test_framework.py:38
/home/runner/work/bitgesell/bitgesell/test/functional/test_framework/test_framework.py:38: PytestCollectionWarning: cannot collect test class 'TestStatus' because it has a new constructor (from: test/functional/test_framework/test_framework.py)
class TestStatus(Enum):

test/functional/test_framework/test_node.py:49
/home/runner/work/bitgesell/bitgesell/test/functional/test_framework/test_node.py:49: PytestCollectionWarning: cannot collect test class 'TestNode' because it has a init constructor (from: test/functional/test_framework/test_framework.py)
class TestNode():

test/functional/test_framework/test_node.py:49
/home/runner/work/bitgesell/bitgesell/test/functional/test_framework/test_node.py:49: PytestCollectionWarning: cannot collect test class 'TestNode' because it has a init constructor (from: test/functional/test_framework/test_node.py)
class TestNode():

test/functional/test_framework/test_node.py:478
/home/runner/work/bitgesell/bitgesell/test/functional/test_framework/test_node.py:478: PytestCollectionWarning: cannot collect test class 'TestNodeCLIAttr' because it has a init constructor (from: test/functional/test_framework/test_node.py)
class TestNodeCLIAttr:

test/functional/test_framework/test_node.py:497
/home/runner/work/bitgesell/bitgesell/test/functional/test_framework/test_node.py:497: PytestCollectionWarning: cannot collect test class 'TestNodeCLI' because it has a init constructor (from: test/functional/test_framework/test_node.py)
class TestNodeCLI():

test/functional/test_framework/test_shell.py:8
/home/runner/work/bitgesell/bitgesell/test/functional/test_framework/test_shell.py:8: PytestCollectionWarning: cannot collect test class 'TestShell' because it has a new constructor (from: test/functional/test_framework/test_shell.py)
class TestShell:

-- Docs: https://docs.pytest.org/en/stable/warnings.html
=========================== short test summary info ============================
ERROR test/fuzz/test_runner.py
!!!!!!!!!!!!!!!!!!!! Interrupted: 1 error during collection !!!!!!!!!!!!!!!!!!!!
======================== 8 warnings, 1 error in 11.28s =========================
Error: Process completed with exit code 2.
Please solve this yourself and reward me if possible. I have done much work.

Completely remove old (non-segwit) transaction support

Problem description

The code of BGL core is derived from Bitcoin core with some changes. The BTC is switching gradually to segwit transactions, while allowing older txs and addresses to still work. In BGL, those legacy transactions are not required.
In other words, remove support for P2PK[H] to be sure no 'old' transaction can be made, and leave only SegWit transactions supported.

Solution direction

  • carefully check in source code where transaction types are detected or formed;
  • remove support for legacy transaction types where applicable;
  • tread lightly, don't remove something if unsure;

Acceptance criteria

  • Old transaction types cannot be created though CLI/wallet, validated, etc.

BGL-WBGL(ETH) bridge

Develop a working concept for a service that would provide following features:

  • Manage a custodial address in BGL mainnet, that would hold the funds and a
    externally owned address in Eth mainnet, holding WBGL;
  • These addresses would be filled with equal amount of BGL and WBGL (no minting
    for proof of concept, limited amount to reduce risks);
  • Provide transition from one BGL mainnet to Eth mainnet for user funds with
    a certain web application;

The main user flows are as following:

  1. User wants to transition from BGL mainnet to WBGL:
    • user opens web page;
    • user adds his Eth mainnet address and gets a generated BGL address that
      would be linked with his Eth address (address is derived from a custodial
      wallet). If user sends BGL to his address, service detects that and transfers
      WBGL to respective user wallet from WBGL custodial wallet and aggregates
      funds from user associated BGL wallet to BGL custodial wallet;
  2. User wants to transition from ERC20 WBGL to BGL mainnet:
    • user opens web page;
    • user adds his BGL wallet address and adds his Eth address, performing a signature of
      BGL address with his Eth wallet private key to serve as authentity proof.
      Adter sending WBGL to the custodial wallet from added Eth address, service detects such
      transaction and transfers equal portion of BGL to added user address.
      Linked addresses data can be stored in database.

(I miscreated issue on personal repo, please make PRs and fork them from the repo github.com/bitgesellofficial/bitgesell), sorry created issue in this one by mistake

Opened tag

Opened tag at build_msvc/BGL-wallet/BGL-wallet.vcxproj
Screenshot_20210719-151625
was seen without an open tag
at the last part of the code

BGL (Bitgesell) Bounty/Improvement Program ($50000 budget)

Bitgesell (BGL) project is open for the contributions and participation.

BGL is BTC-derived cryptocurrency with own blockchain, transaction fee burning
mechanics and faster halving rate. A good source of the information would be the
first 2 posts in the bitcointalk forum thread: https://bitcointalk.org/index.php?topic=5238559.0

A $50000 budget formed by the BGL community to motivate developers make technical contributions.

Code improvements that would be paid include:

  • fixes for unit and integration tests (this process is approximately 80% completed).
    A good chunk of tests fixed (see example here #46
    would be compensated around $1000);
  • cleaning the codebase (this must require thorough understanding of what is required
    and what is not), just fixing some comment links or introducing changes to readme files
    could be useful (but bounty payment would be less);
  • we are also looking for maintainers to review PRs, test the builds, test changes
    manually and running test suites;
  • Continuous Integration: there are CirrusCI configs written to build the
    software for various platforms, there are minor issues present and fixes/updates to
    those are also welcome;
  • fixes to the UI are welcome, example: BGL has only segwit addresses support
    (no legacy), so the feature of signing a message is not supported (BTC does not
    support this too), removing this from UI in a graceful way would be considered as
    useful contribution;
  • infrastructural upgrades: if you want to bring up BGL testnet (which is not supported
    at the moment as the fees in mainnet are very reasonable) this would be much welcome too;

This list is just an example, if you want to contribute in another way that you think
brings value to the project, feel free to ask prior (if the task is large) or make a
partial change/prototype. Honest contributions are welcome, the cheat/abuse contributions
like formal changes (formatting, a pair of comments added, etc.) would be rejected.
There are other repositories of the project (where you can propose updates too), notably:

We are strong believers in open-source and the approach that GitCoin is offering to the
worldwide developer community: freedom, transparency and direct cooperation.
Please respect everyone and don't spam messages that make no sense, any questions
could be asked in:

PRs would be paid in USDT upon approval, contributions in other areas (like infrastructure)
would be compensated after implementation. People that are interested are welcome to become regular
maintainers of the project (this is negotiable after some contribution is made);

Welcome to Bitgesell team and good luck!

3 maintainers would process new PRs: @madnadyka @janus @van-orton please keep incoming requests processed in good tempo (accept, reject, comment, etc.).

[BIP] Proposal for implementation of Bitgesel Improvement Proposals

Summary

Description

It would be great to a have a list of Improvement Proposals, better titled as Bitgesell Improvement Proposals(in short BIPs)

  • An improvement proposal can range from protocol changes to standard changes in the Bitgesell core software, an most importantly at time of existence the Improvement proposal can be in any of the following states:
  1. Draft Proposal
  2. Rejected Proposal
  3. Accepted

A list of proposals that are relevant and interesting to work on for Bitgesell can be found here: https://github.com/naftalimurgor/bips

A summary can be view here(Excel sheet): https://github.com/naftalimurgor/BIPs
[edit]: add an updated BIPs repo (Bitcoin BIPs) fork

New error

I got one more error in my forked repository bitgesell after solving the previous errors.
Run # stop the build if there are Python syntax errors or undefined names

stop the build if there are Python syntax errors or undefined names

flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics

exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide

flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
shell: /usr/bin/bash -e {0}
env:
pythonLocation: /opt/hostedtoolcache/Python/3.10.0/x64
LD_LIBRARY_PATH: /opt/hostedtoolcache/Python/3.10.0/x64/lib
./contrib/seeds/makeseeds.py:115:45: F821 undefined name 'dns'
asn = int([x.to_text() for x in dns.resolver.query('.'.join(reversed(ip['ip'].split('.'))) + '.origin.asn.cymru.com', 'TXT').response.answer][0].split('"')[1].split(' ')[0])
^
1 F821 undefined name 'dns'
1
Error: Process completed with exit code 1.

Adapt bitcoin-standup-scripts to automate deploy

Task description

The goal of the issue is to have a shell script, that will simplify putting a8 new BGL node online simple and fast.

There is a solution available for BTC at https://github.com/BlockchainCommons/Bitcoin-Standup-Scripts

So the solution direction looks like following:

  1. Get the scripts from the repo to work with BGL Core;
  2. Test with a clean Debian installation;
  3. Place modified scripts in the tools/standup-scripts section;

BGL Core command-line arguments are as of now fully compatible with Bitcoin Core arguments.
Packages and installation notes can be found in the 'releases' section on GitHub
https://github.com/wu-emma/bitgesell/releases/tag/0.1.2

Acceptance criteria:

  • On a VM with clean image of Ubuntu 18.04 (e.g. in popular cloud services like GCloud)
    the script could be downloaded with wget tool and ran with required parameters,
    making the VM a full BGL Core node with autorestart of the service (particular cloud
    firewall configuration is out of scope);

Functional test for i2p fails due to connection attempt on port !=0

I am reporting this issue while working on #63

Detected by failing functional test: p2p_i2p_ports.py

The test assumes that an I2P SAM proxy is not listening and tries to connect via i2p on port 8333.

Expected result:

Connection is not attempted.

Actual behaviour:

 node0 2021-11-17T08:14:18.170452Z [httpworker.2] [rpc/request.cpp:174] [parse] ThreadRPCServer method=addnode user=__cookie__ 
 node0 2021-11-17T08:14:18.170512Z [httpworker.2] [net.cpp:399] [ConnectNode] trying connection zsxwyo6qcn3chqzwxnseusqgsnuw3maqnztkiypyfxtya4snkoka.b32.i2p:8333 lastseen=0.0hrs 
 node0 2021-11-17T08:14:18.170531Z [httpworker.2] [i2p.cpp:239] [Log] I2P: Creating SAM session with 127.0.0.1:60000 
 node0 2021-11-17T08:14:18.170602Z [httpworker.2] [netbase.cpp:534] [LogConnectFailure] connect() to 127.0.0.1:60000 failed after wait: Connection refused (111) 
 node0 2021-11-17T08:14:18.170647Z [httpworker.2] [i2p.cpp:239] [Log] I2P: Error connecting to zsxwyo6qcn3chqzwxnseusqgsnuw3maqnztkiypyfxtya4snkoka.b32.i2p:8333: Cannot connect to 127.0.0.1:60000 
 node0 2021-11-17T08:14:18.170664Z [httpworker.2] [i2p.cpp:239] [Log] I2P: Control socket error: not connected 
 test  2021-11-17T08:14:18.171000Z TestFramework (ERROR): Assertion failed 
                                   Traceback (most recent call last):
                                     File "bitgesell/test/functional/test_framework/test_framework.py", line 132, in main
                                       self.run_test()
                                     File "test/functional/p2p_i2p_ports.py", line 34, in run_test
                                       raise AssertionError("Assertion should have been raised")

How to reproduce:

Run functional test: python test/functional/p2p_i2p_ports.py

Root cause:

Not known, yet.

The same test passes on btc@master:

$ python test/functional/p2p_i2p_ports.py
2021-11-17T08:20:03.515000Z TestFramework (INFO): Initializing test directory /tmp/bitcoin_func_test_32q6d44w
2021-11-17T08:20:03.800000Z TestFramework (INFO): Ensure we don't try to connect if port!=0
2021-11-17T08:20:05.816000Z TestFramework (INFO): Ensure we try to connect if port=0 and get an error due to missing I2P proxy
2021-11-17T08:20:05.870000Z TestFramework (INFO): Stopping nodes
2021-11-17T08:20:05.972000Z TestFramework (INFO): Cleaning up /tmp/bitcoin_func_test_32q6d44w on exit
2021-11-17T08:20:05.973000Z TestFramework (INFO): Tests successful

Generate sighash.json file with valid raw transaction data

Description

src/test/data/sighash.json contains data for raw transactions (meaning unsigned txs that can be signed) and this is simulated during the unit test execution.
Because of the different hashing algorithm used (keccak instead of double sha256) in BGL (in comparison to BTC from where the code is derived), this file has to be regenerated for this tests section to pass.
The test section is commented out and located in src/test/sighash_tests.cpp

Solution direction

The only differences should be only hashing algorithm used for txs (keccak) and that transactions are required to be segwit ('new' type).

  • Check test section in sighash_tests.cpp;
  • Build and run unit test executable and see the section failing;
  • Create a dataset that will pass the test (there are keccak3 utils/online tools, etc.)
  • Fix transaction data that can be fixed, include new testing data if removed some to keep test robust enough;

Acceptance criteria

  • sighash_tests.cpp is running BOOST_AUTO_TEST_CASE(sighash_from_data) properly;
  • there are numerous test cases defined in the json file (maybe fewer than in original one, but not by order of magnitude);

Some bugs that are preventing a successful build

When you try to build a GUI wallet on macOS according to the instructions (the CLI app works fine), it fails and the following is a snippet of the warnings and errors that are printed when building a GUI wallet:

    qt/BGL.cpp:241:53: warning: 'QFlags' is deprecated: Use default constructor instead [-Wdeprecated-declarations]
        SplashScreen *splash = new SplashScreen(m_node, nullptr, networkStyle);
                                                        ^
    /usr/local/Cellar/qt@5/5.15.2/lib/QtCore.framework/Headers/qflags.h:123:5: note: 'QFlags' has been explicitly marked deprecated here
        QT_DEPRECATED_X("Use default constructor instead") Q_DECL_CONSTEXPR inline QFlags(Zero) noexcept : i(0) {}
        ^
    /usr/local/Cellar/qt@5/5.15.2/lib/QtCore.framework/Headers/qglobal.h:294:33: note: expanded from macro 'QT_DEPRECATED_X'
    #  define QT_DEPRECATED_X(text) Q_DECL_DEPRECATED_X(text)
                                    ^
    /usr/local/Cellar/qt@5/5.15.2/lib/QtCore.framework/Headers/qcompilerdetection.h:675:55: note: expanded from macro 'Q_DECL_DEPRECATED_X'
    #    define Q_DECL_DEPRECATED_X(text) __attribute__ ((__deprecated__(text)))
                                                          ^
    1 warning generated.
      CXX      qt/libBGLqt_a-BGLaddressvalidator.o
      CXX      qt/libBGLqt_a-BGLgui.o
    qt/BGLgui.cpp:1267:29: warning: 'pixmap' is deprecated: Use the other overload which returns QPixmap by-value [-Wdeprecated-declarations]
            if (labelProxyIcon->pixmap() == nullptr) {
                                ^
    /usr/local/Cellar/qt@5/5.15.2/lib/QtWidgets.framework/Headers/qlabel.h:77:5: note: 'pixmap' has been explicitly marked deprecated here
        QT_DEPRECATED_VERSION_X(5, 15, "Use the other overload which returns QPixmap by-value")
        ^
    /usr/local/Cellar/qt@5/5.15.2/lib/QtCore.framework/Headers/qglobal.h:382:53: note: expanded from macro 'QT_DEPRECATED_VERSION_X'
    #define QT_DEPRECATED_VERSION_X(major, minor, text) QT_DEPRECATED_VERSION_X_##major(minor, text)
                                                        ^
    <scratch space>:25:1: note: expanded from here
    QT_DEPRECATED_VERSION_X_5
    ^
    /usr/local/Cellar/qt@5/5.15.2/lib/QtCore.framework/Headers/qglobal.h:381:53: note: expanded from macro 'QT_DEPRECATED_VERSION_X_5'
    #define QT_DEPRECATED_VERSION_X_5(minor, text)      QT_DEPRECATED_VERSION_X_5_##minor(text)
                                                        ^
    note: (skipping 1 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
    /usr/local/Cellar/qt@5/5.15.2/lib/QtCore.framework/Headers/qglobal.h:374:45: note: expanded from macro 'QT_DEPRECATED_VERSION_X_5_15'
    # define QT_DEPRECATED_VERSION_X_5_15(text) QT_DEPRECATED_X(text)
                                                ^
    /usr/local/Cellar/qt@5/5.15.2/lib/QtCore.framework/Headers/qglobal.h:294:33: note: expanded from macro 'QT_DEPRECATED_X'
    #  define QT_DEPRECATED_X(text) Q_DECL_DEPRECATED_X(text)
                                    ^
    /usr/local/Cellar/qt@5/5.15.2/lib/QtCore.framework/Headers/qcompilerdetection.h:675:55: note: expanded from macro 'Q_DECL_DEPRECATED_X'
    #    define Q_DECL_DEPRECATED_X(text) __attribute__ ((__deprecated__(text)))
                                                          ^
    1 warning generated.
      CXX      qt/libBGLqt_a-clientmodel.o
      CXX      qt/libBGLqt_a-guiutil.o
    qt/guiutil.cpp:81:22: warning: unused variable 'dummydata' [-Wunused-const-variable]
    static const uint8_t dummydata[] = {0xeb,0x15,0x23,0x1d,0xfc,0xeb,0x60,0x92,0x58,0x86,0xb6,0x7d,0x06,0x52,0x99,0x92,0x59,0x15,0xae,0xb1,0x72,0xc0,0x66,0x47};
                         ^
    1 warning generated.
      CXX      qt/libBGLqt_a-intro.o
      CXX      qt/libBGLqt_a-modaloverlay.o
      CXX      qt/libBGLqt_a-notificator.o
      CXX      qt/libBGLqt_a-optionsdialog.o
      CXX      qt/libBGLqt_a-optionsmodel.o
    qt/optionsmodel.cpp:221:59: warning: 'split' is deprecated: Use Qt::SplitBehavior variant instead [-Wdeprecated-declarations]
        QStringList ip_port = settings.value(name).toString().split(":", QString::SkipEmptyParts);
                                                              ^
    /usr/local/Cellar/qt@5/5.15.2/lib/QtCore.framework/Headers/qstring.h:608:23: note: 'split' has been explicitly marked deprecated here
        Q_REQUIRED_RESULT QT_DEPRECATED_VERSION_X_5_15("Use Qt::SplitBehavior variant instead")
                          ^
    /usr/local/Cellar/qt@5/5.15.2/lib/QtCore.framework/Headers/qglobal.h:374:45: note: expanded from macro 'QT_DEPRECATED_VERSION_X_5_15'
    # define QT_DEPRECATED_VERSION_X_5_15(text) QT_DEPRECATED_X(text)
                                                ^
    /usr/local/Cellar/qt@5/5.15.2/lib/QtCore.framework/Headers/qglobal.h:294:33: note: expanded from macro 'QT_DEPRECATED_X'
    #  define QT_DEPRECATED_X(text) Q_DECL_DEPRECATED_X(text)
                                    ^
    /usr/local/Cellar/qt@5/5.15.2/lib/QtCore.framework/Headers/qcompilerdetection.h:675:55: note: expanded from macro 'Q_DECL_DEPRECATED_X'
    #    define Q_DECL_DEPRECATED_X(text) __attribute__ ((__deprecated__(text)))
                                                          ^
    1 warning generated.
      CXX      qt/libBGLqt_a-peertablemodel.o
      CXX      qt/libBGLqt_a-rpcconsole.o
      CXX      qt/libBGLqt_a-splashscreen.o
    qt/splashscreen.cpp:43:9: warning: unused variable 'paddingTop' [-Wunused-variable]
        int paddingTop              = 490;
            ^
    qt/splashscreen.cpp:45:9: warning: unused variable 'titleCopyrightVSpace' [-Wunused-variable]
        int titleCopyrightVSpace    = 22;
            ^
    qt/splashscreen.cpp:42:9: warning: unused variable 'paddingRight' [-Wunused-variable]
        int paddingRight            = 14;
            ^
    qt/splashscreen.cpp:44:9: warning: unused variable 'titleVersionVSpace' [-Wunused-variable]
        int titleVersionVSpace      = 17;
            ^
    4 warnings generated.
      CXX      qt/libBGLqt_a-trafficgraphwidget.o
    qt/trafficgraphwidget.cpp:55:13: error: member access into incomplete type 'QPainterPath'
            path.moveTo(x, YMARGIN + h);
                ^
    /usr/local/Cellar/qt@5/5.15.2/lib/QtGui.framework/Headers/qmatrix.h:54:7: note: forward declaration of 'QPainterPath'
    class QPainterPath;
          ^
    qt/trafficgraphwidget.cpp:59:17: error: member access into incomplete type 'QPainterPath'
                path.lineTo(x, y);
                    ^
    /usr/local/Cellar/qt@5/5.15.2/lib/QtGui.framework/Headers/qmatrix.h:54:7: note: forward declaration of 'QPainterPath'
    class QPainterPath;
          ^
    qt/trafficgraphwidget.cpp:61:13: error: member access into incomplete type 'QPainterPath'
            path.lineTo(x, YMARGIN + h);
                ^
    /usr/local/Cellar/qt@5/5.15.2/lib/QtGui.framework/Headers/qmatrix.h:54:7: note: forward declaration of 'QPainterPath'
    class QPainterPath;
          ^
    qt/trafficgraphwidget.cpp:109:22: error: variable has incomplete type 'QPainterPath'
            QPainterPath p;
                         ^
    /usr/local/Cellar/qt@5/5.15.2/lib/QtGui.framework/Headers/qmatrix.h:54:7: note: forward declaration of 'QPainterPath'
    class QPainterPath;
          ^
    qt/trafficgraphwidget.cpp:116:22: error: variable has incomplete type 'QPainterPath'
            QPainterPath p;
                         ^
    /usr/local/Cellar/qt@5/5.15.2/lib/QtGui.framework/Headers/qmatrix.h:54:7: note: forward declaration of 'QPainterPath'
    class QPainterPath;
          ^
    5 errors generated.

Create Ubuntu/Debian package script so that deb won't require libdb

Task description

Currently there is a requirement of using libDb (Berkeley DB) package of specific version, which is overlapped in many of modern Linux distributions (It is required for wallet-related functionality, but making several package versions is not convenient).
The goal is to get rid of this package dependency (not library itself), which will ease installation on them for most cases (binaries would be immediately runnable).

The scripts for building Ubuntu/Debian package can be created and placed in the 'tools' folder to be created in the repository.
There are various documents/information about creating a package, like:
https://debian-handbook.info/browse/stable/debian-packaging.html
and for bundling shared libraries in the package as well:
https://www.debian.org/doc/manuals/maint-guide/advanced.en.html

Acceptance criteria:

  • On a VM with clean image of Ubuntu 18.04 (e.g. in popular cloud service like GCloud) installing the created .deb package from a file will result in commands like BGLd, BGL-cli;
  • The commands are runnable (without installing libdb as prerequisite as mentioned here: https://github.com/wu-emma/bitgesell/releases/tag/0.1.2)

Getblocktemplate broken in v 0.1.10

./BGL-cli getblocktemplate '{"rules": ["segwit"]}'
error code: -1
error message:
basic_string::_M_construct null not valid

Compiled from source ( After fixing some configure errors.... )

Create script to build installer .exe or .msi for Windows (runnable on windows 7 x64 and newer)

Task Description

The aim of this task is to revisit creation of the Windows installable package (the Nullsoft installer is currenly used) of BGL Core. It's largely the same script and process as the Bitcoin Core installation script, with same dependencies and build process.
It uses VS2019 image to build the installation executable package.
https://github.com/wu-emma/bitgesell/blob/master/.appveyor.yml

You can create free account on AppVeyor.com at https://www.appveyor.com/

Solution steps

  • Ensure that windows build is working (including Qt wallet), this will require Visual Studio (download VS2019 Community Edition if you don't have one installed);
  • There are dependencies installed using vcpkg, but the more complicated thing is Qt, which should be installed by hand (check existing AppVeyor script link https://github.com/sipsorcery/qt_win_binary/releases/download/v1.6/Qt5.9.8_x64_static_vs2019.zip);
  • Fix dependencies or project settings (if needed) in build_msvc;
  • Sign up to AppVeyor free tier;
  • Fix AppVeyor script in .appveyor.yml

Acceptance criteria

  • AppVeyor has a free tier -- please sign up for it, project is public, so it is allowed;
  • AppVeyor can automatically build Windows installable package for Windows x64 platform;
  • Along with pull request (which probably would be rather short), provide sample of built setup executable and short notes of integrating/fetching built artifacts from AppVeyour build.

RPC client conversion table and RPC server named arguments mismatch for gettxoutsetinfo

Hi, I am reporting this issue while working on #63

Detected by failing test:

File "test/functional/rpc_help.py", line 71, in test_client_conversion_table
raise AssertionError("RPC client conversion table ({}) and RPC server named arguments mismatch!\n{}".format(
AssertionError: RPC client conversion table (projects/bitgesell/src/rpc/client.cpp) and RPC server named arguments mismatch!
{('gettxoutsetinfo', 2, 'use_index'), ('gettxoutsetinfo', 1, 'hash_or_height')}

How to reproduce:

Run functional test: python test/functional/rpc_help.py

Root cause:

It looks like RPC client was not updated to reflect changes in the commit

https://github.com/BitgesellOfficial/bitgesell/blame/a3cb9f76cd01fa5bb9188d45d05e5b0f8e090e6e/src/rpc/blockchain.cpp#L1103

to use coinstatsindex if available.

The RPC client in this call is missing use_index argument:

https://github.com/BitgesellOfficial/bitgesell/blame/a3cb9f76cd01fa5bb9188d45d05e5b0f8e090e6e/src/rpc/client.cpp#L145

Fixed some tests

I have fixed some tests and have a successful build. I have requested a merge. Please merge my PR to remove errors from this repository.

Generate key_io_valid.json file with valid key data

Description

src/test/data/key_io_valid.json contains data for keys and this is validated during the unit test execution.
Because of the new address prefix (bgl1 instead of bc1) this file has to be regenerated for this tests section to pass.
The test section is commented out and located in src/test/key_io_tests.cpp

Solution direction

  • Check test sections in key_io_tests.cpp;
  • Build and run unit test executable and see the section failing;
  • Create a dataset that will pass the test (there are various online tools for btc, command-line BGL-cli has same arguments as bitcoin-cli to generate addresses and dump keys, etc.)
  • Fix key data that can be fixed, include new testing data if removed some to keep test robust enough;

Acceptance criteria

  • key_io_tests.cpp is running tests properly with new data in json file;
  • there are numerous test cases defined in the json file (maybe fewer than in original one, but not by order of magnitude);

Generate tx_valid.json file with valid transactions data

Description

src/test/data/tx_valid.json contains data for various transactions that are simulated during the unit test execution.
Because of the different hashing algorithm used (keccak instead of double sha256) in BGL, this file has to be regenerated
for tests section to pass.
The test section is commented out and located in src/test/transaction_tests.cpp

Solution direction

The only differences should be only hashing algorithm used for txs (keccak) and that transactions are required to be segwit ('new' type).

  • Uncomment test section in transaction_tests.cpp;
  • Build and run unit test executable and see the section failing;
  • Create a simple transaction data that will pass the test (there are keccak3 utils/online tools, etc.)
  • Fix transaction data that can be fixed, include new testing data if removed some to keep test robust enough;

Acceptance criteria

  • transaction_tests.cpp is running BOOST_AUTO_TEST_CASE(tx_valid) properly;
  • there are numerous test cases defined in the json file (maybe fewer than in original one, but not by order of magnitude);

Syntax error and more errors in the code

I have found this bug while testing the bitgesell code.
./contrib/testgen/base58.py:110:12: F632 use ==/!= to compare constant literals (str, bytes, int, float, tuple)
assert get_bcaddress_version('15VjRaDX9zpbA8LVnbrCAFzrVzN7ixHNsC') is 0
^
./contrib/seeds/generate-seeds.py:49:51: F821 undefined name 's'
raise ValueError('Invalid onion %s' % s)
^
./contrib/seeds/makeseeds.py:159:14: E999 SyntaxError: Missing parentheses in call to 'print'. Did you mean print(...)?
print '[%s]:%i' % (ip['ip'], ip['port'])
^
1 E999 SyntaxError: Missing parentheses in call to 'print'. Did you mean print(...)?
1 F632 use ==/!= to compare constant literals (str, bytes, int, float, tuple)
1 F821 undefined name 's'
3
Error: Process completed with exit code 1.
Please solve the syntax errors and reward if possible.

Suggesstion: Proof of stake

I am very new to crypto, but as far as I understand, proof of stake is better in environmental terms, because of a much smaller energy consumption. Would it be possible to change the proof of work of BGL to proof of stake or would it be easier to add the expiration mechanism to an already existing coin using proof of stake?

Translation of sites or pages, (GUI) Bug bounty

Launch Google Chrome and go to the Google Translate website i.e. translate.google.com.
Type the entire URL of your website in the text box on the left.
Select the new language you wish to translate your website into.
Click the Translate button.
This will allow different countries to be able to access the site in their choosing language
Erc 20-usdt wallet :
0xea7143dfde5e14919bca751cf3c5f5f141646faf

BGL PR bounty hunt ($10000 overall budget)

To get more people involved and provide motivation, we are announcing Bitgesell Pull Request bounty hunt!

The rules are simple:

  • You can create any reasonable pull request that may contain any modifications, including, but not limited to:
    • Refactoring and simplification;
    • Test fixes (1 test group/file fixed by single PR counts!);
    • Cleanup of features that are no longer used (e.g. non-segwit transactions);
    • Documentation and comments (but if no code changes then some reasonable amount of changes should be done to count);
    • Bug fixes;
  • Every PR would be paid $500 in USDT upon approval, larger PRs could receive bigger payouts (PRs of lesser significance like comments editing or one-line changes could receive lesser payout).
  • Interested people are welcome to become maintainers of the project;

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.