# Things BitVM needs

> original: <https://github.com/supertestnet/things-bitvm-needs>

A todo list for making bitvm great

## Implementations

* [ ] &#x20;Create github repos for more implementations of bitvm
* [ ] &#x20;E.g. one in rust
* [ ] &#x20;E.g. one in python
* [ ] &#x20;E.g. one in typescript
* [ ] &#x20;Improve [my javascript implementation](https://github.com/supertestnet/tapleaf-circuits/)
* [ ] &#x20;Prototype a bisection protocol -- there are no implementations yet!
* [ ] &#x20;"Translate" more circuit description formats so that bitvm isn't limited to "only" using bristol formatted circuits
* [ ] &#x20;E.g. here are some other circuit description formats:
* [ ] &#x20;“ABY format” (described [here](https://github.com/encryptogroup/ABY/blob/public/bin/circ/circuitformat.md), examples [here](https://github.com/encryptogroup/ABY/tree/public/bin/circ))
* [ ] &#x20;“Fairplay’s Secure Hardware Definition Language (SHDL)” (examples [here](https://github.com/Ethsnarks/ethsnarks-sfdl))
* [ ] &#x20;“Simple Circuit Description (SCD)” used by the TinyGarble compiler (described [here](https://github.com/esonghori/TinyGarble/tree/master/scd), I can’t find examples, but according to [this document](https://github.com/esonghori/TinyGarble) you can compile TinyGarble to find examples in bin/scd/netlists/).
* [ ] &#x20;"Verilog Netlists" (pictured [here](https://www.researchgate.net/profile/Kundan-Nepal/publication/220405407/figure/fig3/AS:670715174985734@1536922367281/C17-schematic-and-structural-verilog-netlist.png))

## Programming

* [ ] &#x20;Develop and document a toolchain for making bitvm applications
* [ ] &#x20;One possible toolchain: write app in python, export for bitvm using "circuit" and "bfcl" libraries, test/debug/deploy
* [ ] &#x20;Another possible toolchain: write app in C, export for bitvm using HyCC, test/debug/deploy
* [ ] &#x20;My current toolchain: find a bristol circuit, test it using a tester I wrote in js, give up if I can't make it work as expected, otherwise convert it to a tapleaf circuit using the procedure outlined [here](https://github.com/supertestnet/tapleaf-circuits/), do a final test, and add a button for it on [this site](https://supertestnet.github.io/tapleaf-circuits/)
* [ ] &#x20;Make a high level programming language that compiles programs down to the "bristol formatted" logical circuits that bitvm currently uses
* [ ] &#x20;Make an IDE to help developers design apps by "hooking together" logic circuits that already work in bitvm
* [ ] &#x20;Contribute to [the chess app](https://github.com/mcbagz/LogicGates/tree/main)
* [ ] &#x20;Contribute to [the python toolchain](https://twitter.com/rot13maxi/status/1713731080912527404)

## Functions

* [ ] &#x20;Make a 32 bit multiplier in bitcoin script
* [ ] &#x20;Make a bunch of functions that help with making a sha256 implementation, such as:
* [ ] &#x20;Make a function for doing 6 "right rotations" on a 32 bit string (e.g. if the string was 00000000000000000000000111110000, a right-rotation by 6 digits would turn it into 11000000000000000000000000000111 -- it shifts everything over by 6 and moves stuff that "falls off the end" over to the start)
* [ ] &#x20;Make a function for doing 2 right rotations
* [ ] &#x20;Make a function for doing 7 right rotations
* [ ] &#x20;Make a function for doing 10 right rotations
* [ ] &#x20;Make a function for doing 11 right rotations
* [ ] &#x20;Make a function for doing 13 right rotations
* [ ] &#x20;Make a function for doing 17 right rotations
* [ ] &#x20;Make a function for doing 18 right rotations
* [ ] &#x20;Make a function for doing 19 right rotations
* [ ] &#x20;Make a function for doing 22 right rotations
* [ ] &#x20;Make a function for doing 25 right rotations
* [ ] &#x20;Make a function for doing 3 "right shifts" on a 32 bit string (e.g. if the string was 00000000000000000000000001111100, a right-shift by 3 digits would turn it into 00000000000000000000000000001111 -- it shifts everything over by 3 and discards anything that "falls off the end")
* [ ] &#x20;Make a function for doing 10 right shifts
* [ ] &#x20;Make a sha256 function that "pads" inputs to a multiple of 512 bits

## DevEd

* [ ] &#x20;Contribute to [this playlist](https://github.com/supertestnet/bitvm_deved_videos) of youtube videos documenting how to write apps for bitvm
* [ ] &#x20;Make text tutorials documenting how to write apps for bitvm
* [ ] &#x20;Contribute to [the FAQ](https://github.com/PraiseTheMithra/BitVm-FAQ) -- it should have less tech-talk and focus more on a high level overview of what we're doing (this will help devs AND everyone else too)
* [ ] &#x20;Help me improve the visual look and feel of [this showcase](https://supertestnet.github.io/tapleaf-circuits/) of bitvm apps (fork it [here](https://github.com/supertestnet/tapleaf-circuits/), make it better, do a PR)

## Money

* [ ] &#x20;Devs can be either *attracted* to a project or *hired* for a project, or both. If you can't contribute via code, consider giving money so Robin can *hire* devs to work on bitvm: bc1qf5g6z0py2t3t49gupeqrlewga0qz2etalu4xf9

## Meta

* [ ] &#x20;Contribute to this todo list with other ideas for making bitvm great (click the Fork button above and do a PR with your changes)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://www.bitvm.club/resources/primer/things-bitvm-needs.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
