feat(lesson15): Added CoinJoin heuristics lesson#2
feat(lesson15): Added CoinJoin heuristics lesson#2Av1ralS1ngh wants to merge 3 commits intorawBit-io:mainfrom
Conversation
|
For me this is still not really a CoinJoin lesson yet, it reads more like a CoinJoin heuristics tool. But as proof of work / competency check, I think it is still useful. A complete rawBit CoinJoin lesson, as I imagine it, should start from real tx groups and build toward a real CoinJoin tx, with the tx relationships visible directly on the canvas / protocol map. Ideally it would show a few examples in progression — starting from a simple case and then moving to a more complex one with likely change outputs or false positives. Heuristics like equal outputs, likely change outputs, anonymity-set intuition etc can then support the explanation, but they should not be the center of the lesson. So overall, as proof of work for Summer of Bitcoin 2026 application I think this is good. |
96ab5d0 to
a86379b
Compare
|
Heads up! the work and wiring has some rough edges which I will clean up in the following commit soon :) I have proceeded and implemented my first iteration of the complete CoinJoin lesson in accordance to your vision. I added on-canvas protocol relationship checks for each case (independent input owners and parent transaction diversity) and wired those gates into case verdicts and cross-case comparison, so transaction relationships are directly visible and actually drive conclusions. Please review at your convenience. |
d2ac777 to
df31903
Compare
|
PR #2 fails to run because
…but Please add that file (or update the import path if it was renamed). |
|
oh yes apologies! I have just added that file back in. |
|
thanks for another update and for putting more work into this. But for me this is still going in wrong direction. I asked for lesson which starts from complete tx and then builds real CoinJoin tx from them, with script validation and sent to testnet. Instead this is still mainly classification / analytics flow. Also from rawBit design side this still does not match how rawBit flows are built. I normally do not pack comma-separated inputs into one field, and also not several values into one output. Normally one field = one input, and when something branches we use explicit nodes with multiple output handles. I also still do not see real grouping / flow-map logic here, and for this kind of lesson this part is important. |
Summary
Adds Lesson 15 as an interactive educational flow focused on practical transaction pattern analysis. The lesson covers CoinJoin-style outputs, a normal multi-party baseline, and a direct comparison between the two, with heuristic thresholds and interpretation guidance.
What Changed
Lesson flow (
src/my_tx_flows/p15_CoinJoin_Equal_Output_Heuristics.json)Backend (
backend/calc_functions/calc_func.py,backend/calc_functions/function_specs.py,backend/graph_logic.py)Flow registration (
src/my_tx_flows/customFlows.ts)Docs (
README.md,docu/l-sum.md)Testing and Validation
backend/tests/test_calc_func.pybackend/tests/test_flow_roundtrip.pybackend/tests/test_routes.pytests/e2e/flow.roundtrip.spec.tstests/e2e/utils.tsOut of Scope
This PR covers educational heuristics and comparison logic only. Full CoinJoin protocol simulation and advanced wallet fingerprinting are intentionally out of scope for this iteration.