Skip to content

Instantly share code, notes, and snippets.

@robby-d
Last active January 15, 2024 22:59
Show Gist options
  • Save robby-d/85ca3125ee1ce96cf1e780f50819c976 to your computer and use it in GitHub Desktop.
Save robby-d/85ca3125ee1ce96cf1e780f50819c976 to your computer and use it in GitHub Desktop.
counterblock-bounty

Counterwallet/Counterblock improvement bounty

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.

Updating dependencies:

(These two sets of lists below are non-exhaustive, as-in I might have missed a few dependencies hiding somewhere.)

Update all dependencies for counterblock:

Update all dependencies for counterwallet:

Functional overview:

  1. 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.
  2. 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.
  3. Be able to build counterwallet in both static (minified/production) state and unminified (development) state.
  4. 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.
  5. Be able to load an existing wallet (with multiple addresses) and show everything loading properly. The operations listed above should continue to work.
  6. 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.
  7. 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.
  8. I wouldn't worry too much about localizations support, unless it is breaking other things.

Other notes:

  1. 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.
  2. 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.
  3. You are welcome to switch to pyproject.toml and hatch in place of the existing setup.py-based install procedures. This seems to be the "next thing".

Acceptance criteria:

  1. 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.
  2. 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!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment