Amount: USD 2000
The goal with this bounty is to be able to get a counterwallet stack running via fednode, launch counterwallet, and have it "just work", similar to how it did in the 2016 or so timeframe before counterblock/counterwallet maintenance was (mostly) stopped. I suspect most things will be pretty straightforward, but since it has been so long between now and then, expect to run into more than a few hairy issues.
Please submit your code updates as pull requests to the relevant repos. I don't need or want a PR for every little thing, but it would be nice if they could be logically grouped (e.g. "update build deps for counterwallet and fix related issues", "fix counterblock reparsing issues", etc). I will review the PRs and merge them in if they look good, or offer comments if something needs to be resolved.
There is no firm time limit for this bounty, but it would be good if done over the next 1-3 months, as your schedule allows.
(These two sets of lists below are non-exhaustive, as-in I might have missed a few dependencies hiding somewhere.)
- This includes moving to the newest LTS Ubuntu in any dockerfile images, e.g. https://github.com/CounterpartyXCP/counterblock/blob/master/Dockerfile#L1 - from 16.04 to 22.04 LTS and addressing any breaking changes that come from this.
- Also includes pegging to newest versions of the applicable packages in counterblock's setup.py file: https://github.com/CounterpartyXCP/counterblock/blob/a09eb0235cd2d5d3d8605b075e66b299c357f711/setup.py#L38 -- note that if there is a newer major version (e.g. Mongo v5, hypothetically) but Mongo v3 is still actively maintained, I am fine keeping the major version at v3, but just moving up to the newest minor & revision versions.
- Update to a proper newest version of python-bitcoinlib, or utilize another library for the necessary functionality if it has been discontinued. See https://github.com/CounterpartyXCP/counterblock/blob/a09eb0235cd2d5d3d8605b075e66b299c357f711/requirements.txt#L3C78-L3C95
- Review for any other dependency versions elsewhere in the codebase and update as necessary.
- Update README to use newest Ubuntu LTS (22.04)
- Update all deps at https://github.com/CounterpartyXCP/counterwallet/blob/develop/package.json - See the note about major and minor versions under the counterblock section above.
- Most of the dependency updates are straightforward, but the CSS/Theme that Counterwallet is based off of is called SmartAdmin (see https://wrapbootstrap.com/theme/smartadmin-responsive-webapp-WB0573SK0 and https://github.com/CounterpartyXCP/counterwallet/blob/develop/src/index.html#L20) and updating it might be a challenge. I did buy the version that allowed for redistribution back in the day but I can't find my login anymore (and no longer have access to the email I probably used to purchase it). I can repurchase it again if necessary.
- There is a CSP policy header that will need to be updated as necessary - https://github.com/CounterpartyXCP/counterwallet/blob/develop/docker/nginx/counterwallet.conf.template#L15C30-L15C31
- IMPORTANT: Ensure that any bitcoin library versions used do not have security bugs with things like private key generation or signing. (Sounds like a bit of an odd thing to bring up, but this was an issue in the past with a version of bitcoinjslib that counterwallet used. IIRC we caught it and addressed it before people lost funds.)
- Use federatednode to download and launch the counterblock stack (this includes bitcoind, counterpartyd, counteryblock and counterparty services). Any errors, bugs or issues in deploying this from a 'greenfield' state should be fixed.
- Ensure that counterblock can successfully resync off of counterparty, properly establish state and open its ports for API service requests (which it will do once it has caught up fully with a sync). Note that getting counterblock working will depend on https://github.com/CounterpartyXCP/counterparty-lib/pull/1293 (or similar fix) being merged, in order to fix the messages feed logic counterblock depends on.
- Be able to build counterwallet in both static (minified/production) state and unminified (development) state.
- Be able to go to the counterwallet homepage and create a new wallet. Then, open the wallet, and accomplish all functionality that was working previously. I know this is a bit vague and I'll work with you and be reasonable here, but the goal is that if it was working previously, it should work again. This includes things like creating new wallet addresses, send/receive of XCP and other numeric and named assets, creation of a new numeric and named asset, the whole message feed feature (showing pending operations not yet mined to the blockchain yet), dex trading interface (listing markets, opening a trade, filling an existing open trade, and so on), creating new assets, bets, account history page, changing asset properties (locking, etc) and more. There is some disabled functionality in Counterwallet like asset leaderboard etc that doesn't need to be fixed or touched, and it was removed from the menu so a user will never encounter it.
- Be able to load an existing wallet (with multiple addresses) and show everything loading properly. The operations listed above should continue to work.
- Fee estimation is a thing that was causing issues on Counterwallet (due mostly to subsequent changes in the bitcoin network IIRC) and needs to be properly fixed. This would show up with things like error messages saying not enough BTC to send a transaction, when there indeed is.
- From a HTML/CSS/JS perspective, Counterwallet should display and work properly on the supported browsers listed (please update the versions listed in the README as necessary - they are very old!) Opera support is not necessary, but it would be good if it worked fine in Brave, which is a Chromium-based browser. MS Edge support is a nice-to-have.
- I wouldn't worry too much about localizations support, unless it is breaking other things.
armory_utxsvr
and Armory offline signing functionality can be removed from federatednode and counterwallet, as Armory (while it still exists) isn't particularly well maintained or widely used anymore.- If you come across anything that looks a bit wonky and needs fixing, go at it. Any other quality of life/usability fixes are welcome too.
- You are welcome to switch to
pyproject.toml
andhatch
in place of the existingsetup.py
-based install procedures. This seems to be the "next thing".
- Once you think you have everything working, let's hold a video call where you can walk me through everything on your dev system and show it off. After that, I will fetch the updated code and build a stack myself, and test through it. Any errors I still run into along the line of the criteria above, I will bring to your attention. Once they are addressed and the basic functionality of the whole stack (as listed above) seems to all work fine, I will accept the bounty and make payment to you using your preferred method (as long as it's possible for me) within 10 days.
- My full intention is to be reasonable, but if there is disagreement between us (e.g. you think you are done and I think there is still an issue that needs fixing) we will enlist a 3rd party member of the dev team to serve as the tiebreaker vote.
Feel free to reach out if ANY questions about things as you are working through them. THANK YOU for taking this on!