Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Conversation

@tomkosm
Copy link
Contributor

@tomkosm tomkosm commented Apr 4, 2024

No description provided.

@RobinLinus
Copy link
Contributor

Our optimizer tool will do this automatically now. Anyway, thanks for the PR! :)

@RobinLinus RobinLinus closed this Jul 22, 2024
justin-elementlabs referenced this pull request in elementlabs42/BitVM Sep 10, 2024
* Add merge POC

* Work on validation

* Add graph validation

* Format

* Add todo comment

* Add todo comment

* Work on adding ftp and ftps

* Fix compilation issues

* Clean up cargo deps

* Add sftp (#44)

* Add sftp support

* Fully integrate sftp

---------

Co-authored-by: ivebeenherebefore <[email protected]>

---------

Co-authored-by: ivebeenherebefore <[email protected]>
lucidLuckylee added a commit that referenced this pull request Sep 11, 2024
* πŸ‘©β€πŸ« Reorganize bridge modules

* πŸ€“ Stub out more of implementation components

* Fix compilation error

* remove invalid secret and use existing unspendable pubkey

* 🫣 Progress

* 🏏 Fix errors, create alts

* 🎱 Cargo fix

* ✊ Progress

* πŸ‘ Cargo fix

* πŸ… Post meeting

* 😻 Complete txns

* 😼 Work of refactoring

* πŸ“¦ Cargo fix

* 😡 Progress

* 😐 Progress

* πŸ“¦ Cargo fix

* πŸš€ Progress

* πŸ€“ Progress

* πŸ‘¨β€πŸš€ Progress

* βœ‚οΈ Cargo clippy

* πŸ₯ rustfmt

* πŸ™ Progress

* πŸ‘¨β€πŸ³ rustfmt

* πŸ‘©β€βš–οΈ Progress

* πŸ”₯ Fix output amounts

* 🧼 Fix op code

* 🀑 fmt

* ❓ Added questions

* Add `peg_in_confirm` and `peg_in_refund` tests

* finish assert tx and add unit test

* fixed bugs and added test cases to disprove tx and burn tx

* fix control block error

* peg in confirm & test

* Refactor `Input` into a struct

* 😼 Fix pub key error by adding new Bitcoin PubKey

* pub key compressed or uncompressed error

* fixed burn tx test case for timelock and added more test cases

* take1 timelock fix & unit test

* clean up

* fixed import

* `peg_in_refund` and `connector_a` fixes

* Add `challenge` tx test

* πŸ€• Refactor context

* 🫣 Fix

* 🧼 Fix formatting

* Fix formatting

* Add todo

* Fix function call

* Fix type

* Fix formatting

* Update unspendable

* Format

* Fix burn

* move tests in tests folder

* prettier

* Fixed compilation errors and moved test cases to tests/

* refactoring

* refactoring connector b

* Update messages

* Rust fmt

* Refactor connectors

* Format

* Start updating tests

* Extract network setting from lower level functions

* continue refactoring

* Reorder network param

* Fix tests

* Refactor tests

* Fix formatting

* Format tests

* Fix up a few items

* Implement trait for connectors

* Always use the network provided in context

* Finalize the kick-off tx

* fixed compilation erros

* fix lint

* refactoring tests

* fix lint

* Rename variables

* COmment out incomplete signing code

* Refactor signing

* Restructure components into transactions and connectors

* Rename p2wpkh

* Format

* Replace connector 2 pub key with operator pub key

* Fixes (#23)

* Add codeowners (#24)

* Txn Serialization (#11)

* Fix compilation errors and run rustfmt

* add serialization trait

* add test

* use serde

* remove old version

* eleminate merge differences

* derive serialization for all txns

* Format

* Reorder imports

* feat: use consensus encode

---------

Co-authored-by: ivebeenherebefore <[email protected]>
Co-authored-by: stardustPandora <[email protected]>

* [WIP] Refactor pre-signing functions (#22)

* Refactor pre-signing functions

* Refactor remaining transactions

* Refactor

---------

Co-authored-by: ivebeenherebefore <[email protected]>

* Refactor contexts

* Refactor signing flow

* Fix some compile time issues

* Fix mutable borrow

* Update test setup

* Finish fixing all compile errors

* Refactor contexts (#26)

* Refactor contexts

* Refactor signing flow

* Fix some compile time issues

* Fix mutable borrow

* Update test setup

* Finish fixing all compile errors

* Rename assert leaf to disprove leaf

* Add integration tests (#21)

* Add peg-in integration tests

* Adjust peg-in integration tests

* Fix `add_input_output()` in disprove tx

* Remove input placeholder from challenge tx

* Add kick_off test and integration tests for challenge and disprove

* Add `take1` and `take2` tests

* Refactor tests and adding outputs

* Allow multiple inputs and one output in `challenge` tx

* Refactor adding inputs and output to `challenge` tx

* Refactor integration challenge test to use `add_inputs_and_output()` function

* Allow adding inputs only once in `challenge` tx (#28)

* Allow adding inputs only once in `challenge` tx

* Fix error msg

---------

Co-authored-by: ivebeenherebefore <[email protected]>

* Start on graphs (#27)

* Start on graphs

* Refactor into graph structs

* Commit pseudocode

* Fix compile errors

* Remove graph file

* Fix more warnings work on client

* Rc create graph client (#30)

* Commit progress

* Commit progress

* Start on client (#31)

* Commit progress

* Commit progress

* Merge and fix compile errors

* Update code to be compatible with Script changes

* Small changes to client

* [WIP] Rc create graph - implementation (#29)

* Start on graphs

* Refactor into graph structs

* Commit pseudocode

* Fix compile errors

* Remove graph file

* Fix more warnings work on client

* Fix tests

* Add constants file

* Implement `burn` in `peg_out` graph

* Implement `peg_out` graph remaining txs

---------

Co-authored-by: ivebeenherebefore <[email protected]>

* Add serialization and deserialization to graphs

* Refactor tests to use helper outpoint method (#32)

* Remove unused variables

* Add peg-in statuses and peg-out statuses (#34)

* Work on client syncing (#33)

* Refactor serialization

* Work on integrating Amazon S3

* Finished AWS reading and writing

* Make AWS s3 optional

* Fix test

* Update error handling

* Update warning message

* Delete obsolete files

* Refactor and clean up unused variables

* Remove unused variables

* Try to implement formatter for statuses (#35)

* Try to implement formatter for statuses

* Fix result error

* Remove status

* Delete codeowners

* Add peg out graph methods to client

* Implement `peg-in` graph tx functions (#36)

* Implement `peg-in` graph tx functions

* Use timelock constants

* Verify funding inputs at the beginnin of every integration test (#38)

* Add human-readable statuses (#39)

* Add human-readable statuses

* Rephrase statuses

* feat: refine evm address encode (#40)

Co-authored-by: stardustPandora <[email protected]>

* Add merge + validation POC (#37)

* Add merge POC

* Work on validation

* Add graph validation

* Format

* Add todo comment

* Add todo comment

* `read()`, `save()` and `merge()` implementation

---------

Co-authored-by: ivebeenherebefore <[email protected]>
Co-authored-by: StarDumpling <[email protected]>

* Add ftp and ftps support (#42)

* Add merge POC

* Work on validation

* Add graph validation

* Format

* Add todo comment

* Add todo comment

* Work on adding ftp and ftps

* Fix compilation issues

* Clean up cargo deps

* Add sftp (#44)

* Add sftp support

* Fully integrate sftp

---------

Co-authored-by: ivebeenherebefore <[email protected]>

---------

Co-authored-by: ivebeenherebefore <[email protected]>

* Add debug message to transaction verification

* Ftp tests (#45)

* Add progress

* Continue debugging

* Fix ftp lib

---------

Co-authored-by: ivebeenherebefore <[email protected]>

* Peg out test (#43)

* add peg out test

* updated with inscription

* use bitcoin hash

* format

* Add `validate()` test cases (#47)

* Add `merge()` test cases (#48)

* Add ftp tests (#52)

* Add progress

* Continue debugging

* Fix ftp lib

* Try russh

* Rollback russh

* Disable ftp datastores for now

---------

Co-authored-by: ivebeenherebefore <[email protected]>

* update test values (#53)

* add evm address for depositor (#54)

* Add MuSig2 (#41)

* Add merge POC

* Work on validation

* Add graph validation

* Format

* Add todo comment

* Add todo comment

* Add MuSig2 nonce handling

* Move nonce handling down to transaction layer, use common key types

* Add partial signatures, refactor

* Add a MuSig2 E2E test

* Update tests after `setup_test()` change

* Add signer key generation sample

* Add n-of-n pubkey generation

* Flesh out the MuSig2 test

* Refactor the client

* Refactor

* Pass the list of keys by reference in the client 'constructor'

* Add a TODO

* Clean up

* Clean up

* Refactored Musig2 (#46)

* Work on refactor

* Update N of N generation

* Work on refactor

* Work on applying nonce and signatures to other txns

* Commit changes

* Finish refactor and clean up

* Fix tests

---------

Co-authored-by: ivebeenherebefore <[email protected]>

* Refactor

* Lint

* Merge musig2 nonces and signatures, save local files to folders

* Save private nonces to local file

* Update some method names

* Wrap musig2 signature into taproot signature

* Change n of n p2wsh to p2tr (#50)

* Change n of n p2wsh to p2tr

* Fix consensus hex

* Fix leaf index

---------

Co-authored-by: ivebeenherebefore <[email protected]>

* Wait for peg-in deposit tx to be mined in musig2 test

* Fix merge

---------

Co-authored-by: ivebeenherebefore <[email protected]>
Co-authored-by: justin-elementlabs <[email protected]>
Co-authored-by: StarDumpling <[email protected]>

* Add client peg-out tests (#57)

* Refactor num blocks per x weeks constant

* Add client peg-out tests

* Read private data from local file (#56)

* Reduce console verbosity + reword messages for clarity

* Read private data from local file

* Remove unused function

---------

Co-authored-by: StarDumpling <[email protected]>

* Add directories to data stores, add `destination_network` (#60)

* Add public nonce verification (#63)

* Add nonce signatures

* OsRng is safe to use

* Do not fetch data when instantiating the `BitVMClient`

* Add pub nonce verification

* Rename test file `musig2.rs` to `musig2_peg_in.rs` for consistency

* Do not fail fast on pubnonce verification (get all the failures before returning)

* Send error messages to the error output

* L2 chain adaptors (#58)

* add l2 chain adaptors

* Fix compilation error

* debug pegin events

* feat: add pegin event

* type fixes in peg in event

* fix u256 to amount cast

* add peg out burnt event

* checks length of results

---------

Co-authored-by: ivebeenherebefore <[email protected]>
Co-authored-by: stardustPandora <[email protected]>

* Graph v3 merged (#59)

* Add merge POC

* Work on validation

* Add graph validation

* Format

* Add todo comment

* Add todo comment

* Add MuSig2 nonce handling

* Move nonce handling down to transaction layer, use common key types

* Add partial signatures, refactor

* Add a MuSig2 E2E test

* Update tests after `setup_test()` change

* Add signer key generation sample

* Add n-of-n pubkey generation

* Flesh out the MuSig2 test

* Refactor the client

* Refactor

* Pass the list of keys by reference in the client 'constructor'

* Add a TODO

* Clean up

* Clean up

* Refactored Musig2 (#46)

* Work on refactor

* Update N of N generation

* Work on refactor

* Work on applying nonce and signatures to other txns

* Commit changes

* Finish refactor and clean up

* Fix tests

---------

Co-authored-by: ivebeenherebefore <[email protected]>

* Refactor

* Lint

* Merge musig2 nonces and signatures, save local files to folders

* Save private nonces to local file

* Update some method names

* Wrap musig2 signature into taproot signature

* Change n of n p2wsh to p2tr (#50)

* Change n of n p2wsh to p2tr

* Fix consensus hex

* Fix leaf index

---------

Co-authored-by: ivebeenherebefore <[email protected]>

* Start v3 graph

* Work on graph v3

* Work on changing connectors and rename _d

* Rename leafs

* Work on transactions

* Finish updating txns to v3 graph

* Remove comment

* Refactor inputs

* Update graphs

* Update status check

* Update peg out graph

* Start updating status

* Graph v3 status progress

* Finish peg out status update

* Update tests

* Remove lib

* Fix integration tests

* Refactor

* Revert unneeded changes

* Update musig tests

* Update musig2 peg out tests

* Fix issues

* Fix merging

* Fix compile errors

* Fixes

---------

Co-authored-by: ivebeenherebefore <[email protected]>
Co-authored-by: franklynot <[email protected]>
Co-authored-by: StarDumpling <[email protected]>

* Nonce signature tests (#67)

* Add nonce signatures

* OsRng is safe to use

* Do not fetch data when instantiating the `BitVMClient`

* Add pub nonce verification

* Rename test file `musig2.rs` to `musig2_peg_in.rs` for consistency

* Do not fail fast on pubnonce verification (get all the failures before returning)

* Send error messages to the error output

* Add UTs for `verify_public_nonces()`

* Refactor test

* Fixes after the merge

* One more fix after the merge

* Reduce compiler warnings

* Undo the last change in files unrelated to this PR

* Sync with BitVM codebase (#70)

* Add basic implementation for `check_hash_sig`

* Add separate function for `blake3_160_var_length`

* Add separate function for `sign_hash`

* Complete version of algorithm 9 in On Proving Pairings (#83)

* resolve build error

* keep local ell_coeffs consistant with remote ark_ec, and move double/add into utils

* two things left: backward compatibility need to be done for arkworks, mul_by_034_with_4_constant_affine need to filled

* fill mul_by_34 instead of mul_by_034_with_4_constant_affine

* add test for fq12_mul_by_34, and some comment for fq12_mu_by_034_with_4_constant

* fix bug for fq12_mul_by_34

* fix bug on from_eval_point

* up

* test for from_eval_point, passed

* update package url for bn254

* add test_ell_by_constant_affine

* test of dual pairing passed!

* remove bn254_ell

* modify tests

* frame of quad_pairing

* refactor: remove unnecessary for loop

* fill utility funcs for quad_pairing

* fix conflicts

* restore

* fix double error

* text: add comments

* add test

* test: update test to use negative value for bias

* text: add comment

* test: add test for affine_double_line

* test: add check test for line type

* refactor: sync with upstream to use new form of script

* refactor: support new form of script for miller loop  in affine space

* refactor: add test for affine space

* fix: use projective mode to fix test error

* test: add test for quad pairing

* test: handle tangent line check logic

* update test

* add debug info

* debug

* debug

* change to use vec for computation

* refactor

* fixed version

* fix frob square bug

* code refactoring

* text: add comment for code

* feat: add pairing verification function

* comment for stack

* f initial value is c inverse

* update f with multiplying c or c inverse

* update comment

* update stack index

* update f

* update comment

* add test

* update test

* text: add comment

* fix index for roll to calculate Frobenius map

* refactor: update stack index

* update comment

* update comment

* update f value at first

* update comment

* fix stack index

* update comment

* add log

* update comment

* update comment

* fix: square f all the time

* this log will cause error, delete it

* update pairing, only use affine mode

* update test to support affine mode

* update test to support affine space for pairing zero test

* update test for miller loop in projective space

* feat: make fflonk verifier support dual pairing in affine space

* get groth16 verifier optimized with affine mode done

* code clean

---------

Co-authored-by: Harry <[email protected]>

* Use `run` function in Winternitz tests

* Add bridge progress (#79)

* πŸ‘©β€πŸ« Reorganize bridge modules

* πŸ€“ Stub out more of implementation components

* Fix compilation error

* remove invalid secret and use existing unspendable pubkey

* 🫣 Progress

* 🏏 Fix errors, create alts

* 🎱 Cargo fix

* ✊ Progress

* πŸ‘ Cargo fix

* πŸ… Post meeting

* 😻 Complete txns

* 😼 Work of refactoring

* πŸ“¦ Cargo fix

* 😡 Progress

* 😐 Progress

* πŸ“¦ Cargo fix

* πŸš€ Progress

* πŸ€“ Progress

* πŸ‘¨β€πŸš€ Progress

* βœ‚οΈ Cargo clippy

* πŸ₯ rustfmt

* πŸ™ Progress

* πŸ‘¨β€πŸ³ rustfmt

* πŸ‘©β€βš–οΈ Progress

* πŸ”₯ Fix output amounts

* 🧼 Fix op code

* 🀑 fmt

* ❓ Added questions

* Add `peg_in_confirm` and `peg_in_refund` tests

* finish assert tx and add unit test

* fixed bugs and added test cases to disprove tx and burn tx

* fix control block error

* peg in confirm & test

* Refactor `Input` into a struct

* 😼 Fix pub key error by adding new Bitcoin PubKey

* pub key compressed or uncompressed error

* fixed burn tx test case for timelock and added more test cases

* take1 timelock fix & unit test

* clean up

* fixed import

* `peg_in_refund` and `connector_a` fixes

* Add `challenge` tx test

* πŸ€• Refactor context

* 🫣 Fix

* 🧼 Fix formatting

* Fix formatting

* Add todo

* Fix function call

* Fix type

* Fix formatting

* Update unspendable

* Format

* Fix burn

* move tests in tests folder

* prettier

* Fixed compilation errors and moved test cases to tests/

* refactoring

* refactoring connector b

* Update messages

* Rust fmt

* Refactor connectors

* Format

* Start updating tests

* Extract network setting from lower level functions

* continue refactoring

* Reorder network param

* Fix tests

* Refactor tests

* Fix formatting

* Format tests

* Fix up a few items

* Implement trait for connectors

* Always use the network provided in context

* Finalize the kick-off tx

* fixed compilation erros

* fix lint

* refactoring tests

* fix lint

* Rename variables

* COmment out incomplete signing code

* Refactor signing

* Restructure components into transactions and connectors

* Rename p2wpkh

* Format

* Replace connector 2 pub key with operator pub key

* Fixes (#23)

* Add codeowners (#24)

* Txn Serialization (#11)

* Fix compilation errors and run rustfmt

* add serialization trait

* add test

* use serde

* remove old version

* eleminate merge differences

* derive serialization for all txns

* Format

* Reorder imports

* feat: use consensus encode

---------

Co-authored-by: ivebeenherebefore <[email protected]>
Co-authored-by: stardustPandora <[email protected]>

* [WIP] Refactor pre-signing functions (#22)

* Refactor pre-signing functions

* Refactor remaining transactions

* Refactor

---------

Co-authored-by: ivebeenherebefore <[email protected]>

* Refactor contexts

* Refactor signing flow

* Fix some compile time issues

* Fix mutable borrow

* Update test setup

* Finish fixing all compile errors

* Refactor contexts (#26)

* Refactor contexts

* Refactor signing flow

* Fix some compile time issues

* Fix mutable borrow

* Update test setup

* Finish fixing all compile errors

* Rename assert leaf to disprove leaf

* Add integration tests (#21)

* Add peg-in integration tests

* Adjust peg-in integration tests

* Fix `add_input_output()` in disprove tx

* Remove input placeholder from challenge tx

* Add kick_off test and integration tests for challenge and disprove

* Add `take1` and `take2` tests

* Refactor tests and adding outputs

* Allow multiple inputs and one output in `challenge` tx

* Refactor adding inputs and output to `challenge` tx

* Refactor integration challenge test to use `add_inputs_and_output()` function

* Allow adding inputs only once in `challenge` tx (#28)

* Allow adding inputs only once in `challenge` tx

* Fix error msg

---------

Co-authored-by: ivebeenherebefore <[email protected]>

* Start on graphs (#27)

* Start on graphs

* Refactor into graph structs

* Commit pseudocode

* Fix compile errors

* Remove graph file

* Fix more warnings work on client

* Rc create graph client (#30)

* Commit progress

* Commit progress

* Start on client (#31)

* Commit progress

* Commit progress

* Merge and fix compile errors

* Update code to be compatible with Script changes

* Small changes to client

* [WIP] Rc create graph - implementation (#29)

* Start on graphs

* Refactor into graph structs

* Commit pseudocode

* Fix compile errors

* Remove graph file

* Fix more warnings work on client

* Fix tests

* Add constants file

* Implement `burn` in `peg_out` graph

* Implement `peg_out` graph remaining txs

---------

Co-authored-by: ivebeenherebefore <[email protected]>

* Add serialization and deserialization to graphs

* Refactor tests to use helper outpoint method (#32)

* Remove unused variables

* Add peg-in statuses and peg-out statuses (#34)

* Work on client syncing (#33)

* Refactor serialization

* Work on integrating Amazon S3

* Finished AWS reading and writing

* Make AWS s3 optional

* Fix test

* Update error handling

* Update warning message

* Delete obsolete files

* Refactor and clean up unused variables

* Remove unused variables

* Try to implement formatter for statuses (#35)

* Try to implement formatter for statuses

* Fix result error

* Remove status

* Delete codeowners

---------

Co-authored-by: aristotleee <[email protected]>
Co-authored-by: StarDumpling <[email protected]>
Co-authored-by: timesaved12345 <[email protected]>
Co-authored-by: mac user <[email protected]>
Co-authored-by: franklynot <[email protected]>
Co-authored-by: stardustPandora <[email protected]>

* First prototype chunking for mul and fflonk

* Rework execute_as_chunks to copy over stack

* Executing chunks now copies over stack; add tests

* Remove dependency on seckey in Winternitz sig verification

* Fix: Remove outdated script chunk execution

* Split up if

* Add some debug info in tests

* Quick fix for if in add()

* Quick fix for double

* Use nested script in restart_if

* Print info to file and set target and tolerance

* Update gitignore and Cargo.toml

* Add from_bytes for U254

* Small cleanup and fixes

* Replace restart_if with selector pattern

* Fix: Unresolved restart_if import

* Optimized Fq multiplication using hints with w-width windowed method (#87)

* optimized tunable field multiplication using w-width windowed method

* reverted back formatting changes, and added few docstrings

* align comments

* fix: fq-mul (#86)

* G1 scalar mul optimization (#88)

* perf: g1_scalar_mul optimization

* add a few comments to G1.scalar_mul

---------

Co-authored-by: fatih <[email protected]>

---------

Co-authored-by: robinlinus <[email protected]>
Co-authored-by: ivebeenherebefore <[email protected]>
Co-authored-by: PayneJoe <[email protected]>
Co-authored-by: Harry <[email protected]>
Co-authored-by: aristotleee <[email protected]>
Co-authored-by: StarDumpling <[email protected]>
Co-authored-by: timesaved12345 <[email protected]>
Co-authored-by: mac user <[email protected]>
Co-authored-by: franklynot <[email protected]>
Co-authored-by: stardustPandora <[email protected]>
Co-authored-by: Lukas <[email protected]>
Co-authored-by: bbist <[email protected]>
Co-authored-by: FatihSolak <[email protected]>
Co-authored-by: Hakan Karakuş <[email protected]>
Co-authored-by: fatih <[email protected]>

---------

Co-authored-by: ivebeenherebefore <[email protected]>
Co-authored-by: aristotleee <[email protected]>
Co-authored-by: StarDumpling <[email protected]>
Co-authored-by: timesaved12345 <[email protected]>
Co-authored-by: mac user <[email protected]>
Co-authored-by: franklynot <[email protected]>
Co-authored-by: stardustPandora <[email protected]>
Co-authored-by: stardustPandora <[email protected]>
Co-authored-by: robinlinus <[email protected]>
Co-authored-by: PayneJoe <[email protected]>
Co-authored-by: Harry <[email protected]>
Co-authored-by: Lukas <[email protected]>
Co-authored-by: bbist <[email protected]>
Co-authored-by: FatihSolak <[email protected]>
Co-authored-by: Hakan Karakuş <[email protected]>
Co-authored-by: fatih <[email protected]>
justin-elementlabs referenced this pull request in elementlabs42/BitVM Nov 27, 2024
* Add basic implementation for `check_hash_sig`

* Add separate function for `blake3_160_var_length`

* Add separate function for `sign_hash`

* Complete version of algorithm 9 in On Proving Pairings (BitVM#83)

* resolve build error

* keep local ell_coeffs consistant with remote ark_ec, and move double/add into utils

* two things left: backward compatibility need to be done for arkworks, mul_by_034_with_4_constant_affine need to filled

* fill mul_by_34 instead of mul_by_034_with_4_constant_affine

* add test for fq12_mul_by_34, and some comment for fq12_mu_by_034_with_4_constant

* fix bug for fq12_mul_by_34

* fix bug on from_eval_point

* up

* test for from_eval_point, passed

* update package url for bn254

* add test_ell_by_constant_affine

* test of dual pairing passed!

* remove bn254_ell

* modify tests

* frame of quad_pairing

* refactor: remove unnecessary for loop

* fill utility funcs for quad_pairing

* fix conflicts

* restore

* fix double error

* text: add comments

* add test

* test: update test to use negative value for bias

* text: add comment

* test: add test for affine_double_line

* test: add check test for line type

* refactor: sync with upstream to use new form of script

* refactor: support new form of script for miller loop  in affine space

* refactor: add test for affine space

* fix: use projective mode to fix test error

* test: add test for quad pairing

* test: handle tangent line check logic

* update test

* add debug info

* debug

* debug

* change to use vec for computation

* refactor

* fixed version

* fix frob square bug

* code refactoring

* text: add comment for code

* feat: add pairing verification function

* comment for stack

* f initial value is c inverse

* update f with multiplying c or c inverse

* update comment

* update stack index

* update f

* update comment

* add test

* update test

* text: add comment

* fix index for roll to calculate Frobenius map

* refactor: update stack index

* update comment

* update comment

* update f value at first

* update comment

* fix stack index

* update comment

* add log

* update comment

* update comment

* fix: square f all the time

* this log will cause error, delete it

* update pairing, only use affine mode

* update test to support affine mode

* update test to support affine space for pairing zero test

* update test for miller loop in projective space

* feat: make fflonk verifier support dual pairing in affine space

* get groth16 verifier optimized with affine mode done

* code clean

---------

Co-authored-by: Harry <[email protected]>

* Use `run` function in Winternitz tests

* Add bridge progress (BitVM#79)

* πŸ‘©β€πŸ« Reorganize bridge modules

* πŸ€“ Stub out more of implementation components

* Fix compilation error

* remove invalid secret and use existing unspendable pubkey

* 🫣 Progress

* 🏏 Fix errors, create alts

* 🎱 Cargo fix

* ✊ Progress

* πŸ‘ Cargo fix

* πŸ… Post meeting

* 😻 Complete txns

* 😼 Work of refactoring

* πŸ“¦ Cargo fix

* 😡 Progress

* 😐 Progress

* πŸ“¦ Cargo fix

* πŸš€ Progress

* πŸ€“ Progress

* πŸ‘¨β€πŸš€ Progress

* βœ‚οΈ Cargo clippy

* πŸ₯ rustfmt

* πŸ™ Progress

* πŸ‘¨β€πŸ³ rustfmt

* πŸ‘©β€βš–οΈ Progress

* πŸ”₯ Fix output amounts

* 🧼 Fix op code

* 🀑 fmt

* ❓ Added questions

* Add `peg_in_confirm` and `peg_in_refund` tests

* finish assert tx and add unit test

* fixed bugs and added test cases to disprove tx and burn tx

* fix control block error

* peg in confirm & test

* Refactor `Input` into a struct

* 😼 Fix pub key error by adding new Bitcoin PubKey

* pub key compressed or uncompressed error

* fixed burn tx test case for timelock and added more test cases

* take1 timelock fix & unit test

* clean up

* fixed import

* `peg_in_refund` and `connector_a` fixes

* Add `challenge` tx test

* πŸ€• Refactor context

* 🫣 Fix

* 🧼 Fix formatting

* Fix formatting

* Add todo

* Fix function call

* Fix type

* Fix formatting

* Update unspendable

* Format

* Fix burn

* move tests in tests folder

* prettier

* Fixed compilation errors and moved test cases to tests/

* refactoring

* refactoring connector b

* Update messages

* Rust fmt

* Refactor connectors

* Format

* Start updating tests

* Extract network setting from lower level functions

* continue refactoring

* Reorder network param

* Fix tests

* Refactor tests

* Fix formatting

* Format tests

* Fix up a few items

* Implement trait for connectors

* Always use the network provided in context

* Finalize the kick-off tx

* fixed compilation erros

* fix lint

* refactoring tests

* fix lint

* Rename variables

* COmment out incomplete signing code

* Refactor signing

* Restructure components into transactions and connectors

* Rename p2wpkh

* Format

* Replace connector 2 pub key with operator pub key

* Fixes (#23)

* Add codeowners (#24)

* Txn Serialization (#11)

* Fix compilation errors and run rustfmt

* add serialization trait

* add test

* use serde

* remove old version

* eleminate merge differences

* derive serialization for all txns

* Format

* Reorder imports

* feat: use consensus encode

---------

Co-authored-by: ivebeenherebefore <[email protected]>
Co-authored-by: stardustPandora <[email protected]>

* [WIP] Refactor pre-signing functions (#22)

* Refactor pre-signing functions

* Refactor remaining transactions

* Refactor

---------

Co-authored-by: ivebeenherebefore <[email protected]>

* Refactor contexts

* Refactor signing flow

* Fix some compile time issues

* Fix mutable borrow

* Update test setup

* Finish fixing all compile errors

* Refactor contexts (#26)

* Refactor contexts

* Refactor signing flow

* Fix some compile time issues

* Fix mutable borrow

* Update test setup

* Finish fixing all compile errors

* Rename assert leaf to disprove leaf

* Add integration tests (#21)

* Add peg-in integration tests

* Adjust peg-in integration tests

* Fix `add_input_output()` in disprove tx

* Remove input placeholder from challenge tx

* Add kick_off test and integration tests for challenge and disprove

* Add `take1` and `take2` tests

* Refactor tests and adding outputs

* Allow multiple inputs and one output in `challenge` tx

* Refactor adding inputs and output to `challenge` tx

* Refactor integration challenge test to use `add_inputs_and_output()` function

* Allow adding inputs only once in `challenge` tx (#28)

* Allow adding inputs only once in `challenge` tx

* Fix error msg

---------

Co-authored-by: ivebeenherebefore <[email protected]>

* Start on graphs (#27)

* Start on graphs

* Refactor into graph structs

* Commit pseudocode

* Fix compile errors

* Remove graph file

* Fix more warnings work on client

* Rc create graph client (#30)

* Commit progress

* Commit progress

* Start on client (#31)

* Commit progress

* Commit progress

* Merge and fix compile errors

* Update code to be compatible with Script changes

* Small changes to client

* [WIP] Rc create graph - implementation (#29)

* Start on graphs

* Refactor into graph structs

* Commit pseudocode

* Fix compile errors

* Remove graph file

* Fix more warnings work on client

* Fix tests

* Add constants file

* Implement `burn` in `peg_out` graph

* Implement `peg_out` graph remaining txs

---------

Co-authored-by: ivebeenherebefore <[email protected]>

* Add serialization and deserialization to graphs

* Refactor tests to use helper outpoint method (#32)

* Remove unused variables

* Add peg-in statuses and peg-out statuses (#34)

* Work on client syncing (#33)

* Refactor serialization

* Work on integrating Amazon S3

* Finished AWS reading and writing

* Make AWS s3 optional

* Fix test

* Update error handling

* Update warning message

* Delete obsolete files

* Refactor and clean up unused variables

* Remove unused variables

* Try to implement formatter for statuses (#35)

* Try to implement formatter for statuses

* Fix result error

* Remove status

* Delete codeowners

---------

Co-authored-by: aristotleee <[email protected]>
Co-authored-by: StarDumpling <[email protected]>
Co-authored-by: timesaved12345 <[email protected]>
Co-authored-by: mac user <[email protected]>
Co-authored-by: franklynot <[email protected]>
Co-authored-by: stardustPandora <[email protected]>

* First prototype chunking for mul and fflonk

* Rework execute_as_chunks to copy over stack

* Executing chunks now copies over stack; add tests

* Remove dependency on seckey in Winternitz sig verification

* Fix: Remove outdated script chunk execution

* Split up if

* Add some debug info in tests

* Quick fix for if in add()

* Quick fix for double

* Use nested script in restart_if

* Print info to file and set target and tolerance

* Update gitignore and Cargo.toml

* Add from_bytes for U254

* Small cleanup and fixes

* Replace restart_if with selector pattern

* Fix: Unresolved restart_if import

* Optimized Fq multiplication using hints with w-width windowed method (BitVM#87)

* optimized tunable field multiplication using w-width windowed method

* reverted back formatting changes, and added few docstrings

* align comments

* fix: fq-mul (BitVM#86)

* fix is_positive()

* fix N_WINDOW

* better limb_add_with_carry_prevent_overflow and limb_double_with_carry_prevent_overflow

* feat: hinted mul integration

* G1 scalar mul optimization (BitVM#88)

* perf: g1_scalar_mul optimization

* add a few comments to G1.scalar_mul

---------

Co-authored-by: fatih <[email protected]>

* Fq.hinted_square

* Fq2.hinted_square

* feat: hinted mul by const

* Fq6.hinted_square

* feat: fq2 hinted mul by const

* Fq12.hinted_square

* feat: hinted line utils

* hinted_frobenius functions

* G1Projective.hinted_double

* feat: hinted g1 projective add

* Upgrade to v3 graph, add musig2 signing, improve client (BitVM#91)

* πŸ‘©β€πŸ« Reorganize bridge modules

* πŸ€“ Stub out more of implementation components

* Fix compilation error

* remove invalid secret and use existing unspendable pubkey

* 🫣 Progress

* 🏏 Fix errors, create alts

* 🎱 Cargo fix

* ✊ Progress

* πŸ‘ Cargo fix

* πŸ… Post meeting

* 😻 Complete txns

* 😼 Work of refactoring

* πŸ“¦ Cargo fix

* 😡 Progress

* 😐 Progress

* πŸ“¦ Cargo fix

* πŸš€ Progress

* πŸ€“ Progress

* πŸ‘¨β€πŸš€ Progress

* βœ‚οΈ Cargo clippy

* πŸ₯ rustfmt

* πŸ™ Progress

* πŸ‘¨β€πŸ³ rustfmt

* πŸ‘©β€βš–οΈ Progress

* πŸ”₯ Fix output amounts

* 🧼 Fix op code

* 🀑 fmt

* ❓ Added questions

* Add `peg_in_confirm` and `peg_in_refund` tests

* finish assert tx and add unit test

* fixed bugs and added test cases to disprove tx and burn tx

* fix control block error

* peg in confirm & test

* Refactor `Input` into a struct

* 😼 Fix pub key error by adding new Bitcoin PubKey

* pub key compressed or uncompressed error

* fixed burn tx test case for timelock and added more test cases

* take1 timelock fix & unit test

* clean up

* fixed import

* `peg_in_refund` and `connector_a` fixes

* Add `challenge` tx test

* πŸ€• Refactor context

* 🫣 Fix

* 🧼 Fix formatting

* Fix formatting

* Add todo

* Fix function call

* Fix type

* Fix formatting

* Update unspendable

* Format

* Fix burn

* move tests in tests folder

* prettier

* Fixed compilation errors and moved test cases to tests/

* refactoring

* refactoring connector b

* Update messages

* Rust fmt

* Refactor connectors

* Format

* Start updating tests

* Extract network setting from lower level functions

* continue refactoring

* Reorder network param

* Fix tests

* Refactor tests

* Fix formatting

* Format tests

* Fix up a few items

* Implement trait for connectors

* Always use the network provided in context

* Finalize the kick-off tx

* fixed compilation erros

* fix lint

* refactoring tests

* fix lint

* Rename variables

* COmment out incomplete signing code

* Refactor signing

* Restructure components into transactions and connectors

* Rename p2wpkh

* Format

* Replace connector 2 pub key with operator pub key

* Fixes (#23)

* Add codeowners (#24)

* Txn Serialization (#11)

* Fix compilation errors and run rustfmt

* add serialization trait

* add test

* use serde

* remove old version

* eleminate merge differences

* derive serialization for all txns

* Format

* Reorder imports

* feat: use consensus encode

---------

Co-authored-by: ivebeenherebefore <[email protected]>
Co-authored-by: stardustPandora <[email protected]>

* [WIP] Refactor pre-signing functions (#22)

* Refactor pre-signing functions

* Refactor remaining transactions

* Refactor

---------

Co-authored-by: ivebeenherebefore <[email protected]>

* Refactor contexts

* Refactor signing flow

* Fix some compile time issues

* Fix mutable borrow

* Update test setup

* Finish fixing all compile errors

* Refactor contexts (#26)

* Refactor contexts

* Refactor signing flow

* Fix some compile time issues

* Fix mutable borrow

* Update test setup

* Finish fixing all compile errors

* Rename assert leaf to disprove leaf

* Add integration tests (#21)

* Add peg-in integration tests

* Adjust peg-in integration tests

* Fix `add_input_output()` in disprove tx

* Remove input placeholder from challenge tx

* Add kick_off test and integration tests for challenge and disprove

* Add `take1` and `take2` tests

* Refactor tests and adding outputs

* Allow multiple inputs and one output in `challenge` tx

* Refactor adding inputs and output to `challenge` tx

* Refactor integration challenge test to use `add_inputs_and_output()` function

* Allow adding inputs only once in `challenge` tx (#28)

* Allow adding inputs only once in `challenge` tx

* Fix error msg

---------

Co-authored-by: ivebeenherebefore <[email protected]>

* Start on graphs (#27)

* Start on graphs

* Refactor into graph structs

* Commit pseudocode

* Fix compile errors

* Remove graph file

* Fix more warnings work on client

* Rc create graph client (#30)

* Commit progress

* Commit progress

* Start on client (#31)

* Commit progress

* Commit progress

* Merge and fix compile errors

* Update code to be compatible with Script changes

* Small changes to client

* [WIP] Rc create graph - implementation (#29)

* Start on graphs

* Refactor into graph structs

* Commit pseudocode

* Fix compile errors

* Remove graph file

* Fix more warnings work on client

* Fix tests

* Add constants file

* Implement `burn` in `peg_out` graph

* Implement `peg_out` graph remaining txs

---------

Co-authored-by: ivebeenherebefore <[email protected]>

* Add serialization and deserialization to graphs

* Refactor tests to use helper outpoint method (#32)

* Remove unused variables

* Add peg-in statuses and peg-out statuses (#34)

* Work on client syncing (#33)

* Refactor serialization

* Work on integrating Amazon S3

* Finished AWS reading and writing

* Make AWS s3 optional

* Fix test

* Update error handling

* Update warning message

* Delete obsolete files

* Refactor and clean up unused variables

* Remove unused variables

* Try to implement formatter for statuses (#35)

* Try to implement formatter for statuses

* Fix result error

* Remove status

* Delete codeowners

* Add peg out graph methods to client

* Implement `peg-in` graph tx functions (#36)

* Implement `peg-in` graph tx functions

* Use timelock constants

* Verify funding inputs at the beginnin of every integration test (#38)

* Add human-readable statuses (#39)

* Add human-readable statuses

* Rephrase statuses

* feat: refine evm address encode (#40)

Co-authored-by: stardustPandora <[email protected]>

* Add merge + validation POC (#37)

* Add merge POC

* Work on validation

* Add graph validation

* Format

* Add todo comment

* Add todo comment

* `read()`, `save()` and `merge()` implementation

---------

Co-authored-by: ivebeenherebefore <[email protected]>
Co-authored-by: StarDumpling <[email protected]>

* Add ftp and ftps support (#42)

* Add merge POC

* Work on validation

* Add graph validation

* Format

* Add todo comment

* Add todo comment

* Work on adding ftp and ftps

* Fix compilation issues

* Clean up cargo deps

* Add sftp (#44)

* Add sftp support

* Fully integrate sftp

---------

Co-authored-by: ivebeenherebefore <[email protected]>

---------

Co-authored-by: ivebeenherebefore <[email protected]>

* Add debug message to transaction verification

* Ftp tests (#45)

* Add progress

* Continue debugging

* Fix ftp lib

---------

Co-authored-by: ivebeenherebefore <[email protected]>

* Peg out test (#43)

* add peg out test

* updated with inscription

* use bitcoin hash

* format

* Add `validate()` test cases (#47)

* Add `merge()` test cases (#48)

* Add ftp tests (#52)

* Add progress

* Continue debugging

* Fix ftp lib

* Try russh

* Rollback russh

* Disable ftp datastores for now

---------

Co-authored-by: ivebeenherebefore <[email protected]>

* update test values (#53)

* add evm address for depositor (#54)

* Add MuSig2 (#41)

* Add merge POC

* Work on validation

* Add graph validation

* Format

* Add todo comment

* Add todo comment

* Add MuSig2 nonce handling

* Move nonce handling down to transaction layer, use common key types

* Add partial signatures, refactor

* Add a MuSig2 E2E test

* Update tests after `setup_test()` change

* Add signer key generation sample

* Add n-of-n pubkey generation

* Flesh out the MuSig2 test

* Refactor the client

* Refactor

* Pass the list of keys by reference in the client 'constructor'

* Add a TODO

* Clean up

* Clean up

* Refactored Musig2 (#46)

* Work on refactor

* Update N of N generation

* Work on refactor

* Work on applying nonce and signatures to other txns

* Commit changes

* Finish refactor and clean up

* Fix tests

---------

Co-authored-by: ivebeenherebefore <[email protected]>

* Refactor

* Lint

* Merge musig2 nonces and signatures, save local files to folders

* Save private nonces to local file

* Update some method names

* Wrap musig2 signature into taproot signature

* Change n of n p2wsh to p2tr (#50)

* Change n of n p2wsh to p2tr

* Fix consensus hex

* Fix leaf index

---------

Co-authored-by: ivebeenherebefore <[email protected]>

* Wait for peg-in deposit tx to be mined in musig2 test

* Fix merge

---------

Co-authored-by: ivebeenherebefore <[email protected]>
Co-authored-by: justin-elementlabs <[email protected]>
Co-authored-by: StarDumpling <[email protected]>

* Add client peg-out tests (#57)

* Refactor num blocks per x weeks constant

* Add client peg-out tests

* Read private data from local file (#56)

* Reduce console verbosity + reword messages for clarity

* Read private data from local file

* Remove unused function

---------

Co-authored-by: StarDumpling <[email protected]>

* Add directories to data stores, add `destination_network` (#60)

* Add public nonce verification (#63)

* Add nonce signatures

* OsRng is safe to use

* Do not fetch data when instantiating the `BitVMClient`

* Add pub nonce verification

* Rename test file `musig2.rs` to `musig2_peg_in.rs` for consistency

* Do not fail fast on pubnonce verification (get all the failures before returning)

* Send error messages to the error output

* L2 chain adaptors (#58)

* add l2 chain adaptors

* Fix compilation error

* debug pegin events

* feat: add pegin event

* type fixes in peg in event

* fix u256 to amount cast

* add peg out burnt event

* checks length of results

---------

Co-authored-by: ivebeenherebefore <[email protected]>
Co-authored-by: stardustPandora <[email protected]>

* Graph v3 merged (#59)

* Add merge POC

* Work on validation

* Add graph validation

* Format

* Add todo comment

* Add todo comment

* Add MuSig2 nonce handling

* Move nonce handling down to transaction layer, use common key types

* Add partial signatures, refactor

* Add a MuSig2 E2E test

* Update tests after `setup_test()` change

* Add signer key generation sample

* Add n-of-n pubkey generation

* Flesh out the MuSig2 test

* Refactor the client

* Refactor

* Pass the list of keys by reference in the client 'constructor'

* Add a TODO

* Clean up

* Clean up

* Refactored Musig2 (#46)

* Work on refactor

* Update N of N generation

* Work on refactor

* Work on applying nonce and signatures to other txns

* Commit changes

* Finish refactor and clean up

* Fix tests

---------

Co-authored-by: ivebeenherebefore <[email protected]>

* Refactor

* Lint

* Merge musig2 nonces and signatures, save local files to folders

* Save private nonces to local file

* Update some method names

* Wrap musig2 signature into taproot signature

* Change n of n p2wsh to p2tr (#50)

* Change n of n p2wsh to p2tr

* Fix consensus hex

* Fix leaf index

---------

Co-authored-by: ivebeenherebefore <[email protected]>

* Start v3 graph

* Work on graph v3

* Work on changing connectors and rename _d

* Rename leafs

* Work on transactions

* Finish updating txns to v3 graph

* Remove comment

* Refactor inputs

* Update graphs

* Update status check

* Update peg out graph

* Start updating status

* Graph v3 status progress

* Finish peg out status update

* Update tests

* Remove lib

* Fix integration tests

* Refactor

* Revert unneeded changes

* Update musig tests

* Update musig2 peg out tests

* Fix issues

* Fix merging

* Fix compile errors

* Fixes

---------

Co-authored-by: ivebeenherebefore <[email protected]>
Co-authored-by: franklynot <[email protected]>
Co-authored-by: StarDumpling <[email protected]>

* Nonce signature tests (#67)

* Add nonce signatures

* OsRng is safe to use

* Do not fetch data when instantiating the `BitVMClient`

* Add pub nonce verification

* Rename test file `musig2.rs` to `musig2_peg_in.rs` for consistency

* Do not fail fast on pubnonce verification (get all the failures before returning)

* Send error messages to the error output

* Add UTs for `verify_public_nonces()`

* Refactor test

* Fixes after the merge

* One more fix after the merge

* Reduce compiler warnings

* Undo the last change in files unrelated to this PR

* Sync with BitVM codebase (#70)

* Add basic implementation for `check_hash_sig`

* Add separate function for `blake3_160_var_length`

* Add separate function for `sign_hash`

* Complete version of algorithm 9 in On Proving Pairings (BitVM#83)

* resolve build error

* keep local ell_coeffs consistant with remote ark_ec, and move double/add into utils

* two things left: backward compatibility need to be done for arkworks, mul_by_034_with_4_constant_affine need to filled

* fill mul_by_34 instead of mul_by_034_with_4_constant_affine

* add test for fq12_mul_by_34, and some comment for fq12_mu_by_034_with_4_constant

* fix bug for fq12_mul_by_34

* fix bug on from_eval_point

* up

* test for from_eval_point, passed

* update package url for bn254

* add test_ell_by_constant_affine

* test of dual pairing passed!

* remove bn254_ell

* modify tests

* frame of quad_pairing

* refactor: remove unnecessary for loop

* fill utility funcs for quad_pairing

* fix conflicts

* restore

* fix double error

* text: add comments

* add test

* test: update test to use negative value for bias

* text: add comment

* test: add test for affine_double_line

* test: add check test for line type

* refactor: sync with upstream to use new form of script

* refactor: support new form of script for miller loop  in affine space

* refactor: add test for affine space

* fix: use projective mode to fix test error

* test: add test for quad pairing

* test: handle tangent line check logic

* update test

* add debug info

* debug

* debug

* change to use vec for computation

* refactor

* fixed version

* fix frob square bug

* code refactoring

* text: add comment for code

* feat: add pairing verification function

* comment for stack

* f initial value is c inverse

* update f with multiplying c or c inverse

* update comment

* update stack index

* update f

* update comment

* add test

* update test

* text: add comment

* fix index for roll to calculate Frobenius map

* refactor: update stack index

* update comment

* update comment

* update f value at first

* update comment

* fix stack index

* update comment

* add log

* update comment

* update comment

* fix: square f all the time

* this log will cause error, delete it

* update pairing, only use affine mode

* update test to support affine mode

* update test to support affine space for pairing zero test

* update test for miller loop in projective space

* feat: make fflonk verifier support dual pairing in affine space

* get groth16 verifier optimized with affine mode done

* code clean

---------

Co-authored-by: Harry <[email protected]>

* Use `run` function in Winternitz tests

* Add bridge progress (BitVM#79)

* πŸ‘©β€πŸ« Reorganize bridge modules

* πŸ€“ Stub out more of implementation components

* Fix compilation error

* remove invalid secret and use existing unspendable pubkey

* 🫣 Progress

* 🏏 Fix errors, create alts

* 🎱 Cargo fix

* ✊ Progress

* πŸ‘ Cargo fix

* πŸ… Post meeting

* 😻 Complete txns

* 😼 Work of refactoring

* πŸ“¦ Cargo fix

* 😡 Progress

* 😐 Progress

* πŸ“¦ Cargo fix

* πŸš€ Progress

* πŸ€“ Progress

* πŸ‘¨β€πŸš€ Progress

* βœ‚οΈ Cargo clippy

* πŸ₯ rustfmt

* πŸ™ Progress

* πŸ‘¨β€πŸ³ rustfmt

* πŸ‘©β€βš–οΈ Progress

* πŸ”₯ Fix output amounts

* 🧼 Fix op code

* 🀑 fmt

* ❓ Added questions

* Add `peg_in_confirm` and `peg_in_refund` tests

* finish assert tx and add unit test

* fixed bugs and added test cases to disprove tx and burn tx

* fix control block error

* peg in confirm & test

* Refactor `Input` into a struct

* 😼 Fix pub key error by adding new Bitcoin PubKey

* pub key compressed or uncompressed error

* fixed burn tx test case for timelock and added more test cases

* take1 timelock fix & unit test

* clean up

* fixed import

* `peg_in_refund` and `connector_a` fixes

* Add `challenge` tx test

* πŸ€• Refactor context

* 🫣 Fix

* 🧼 Fix formatting

* Fix formatting

* Add todo

* Fix function call

* Fix type

* Fix formatting

* Update unspendable

* Format

* Fix burn

* move tests in tests folder

* prettier

* Fixed compilation errors and moved test cases to tests/

* refactoring

* refactoring connector b

* Update messages

* Rust fmt

* Refactor connectors

* Format

* Start updating tests

* Extract network setting from lower level functions

* continue refactoring

* Reorder network param

* Fix tests

* Refactor tests

* Fix formatting

* Format tests

* Fix up a few items

* Implement trait for connectors

* Always use the network provided in context

* Finalize the kick-off tx

* fixed compilation erros

* fix lint

* refactoring tests

* fix lint

* Rename variables

* COmment out incomplete signing code

* Refactor signing

* Restructure components into transactions and connectors

* Rename p2wpkh

* Format

* Replace connector 2 pub key with operator pub key

* Fixes (#23)

* Add codeowners (#24)

* Txn Serialization (#11)

* Fix compilation errors and run rustfmt

* add serialization trait

* add test

* use serde

* remove old version

* eleminate merge differences

* derive serialization for all txns

* Format

* Reorder imports

* feat: use consensus encode

---------

Co-authored-by: ivebeenherebefore <[email protected]>
Co-authored-by: stardustPandora <[email protected]>

* [WIP] Refactor pre-signing functions (#22)

* Refactor pre-signing functions

* Refactor remaining transactions

* Refactor

---------

Co-authored-by: ivebeenherebefore <[email protected]>

* Refactor contexts

* Refactor signing flow

* Fix some compile time issues

* Fix mutable borrow

* Update test setup

* Finish fixing all compile errors

* Refactor contexts (#26)

* Refactor contexts

* Refactor signing flow

* Fix some compile time issues

* Fix mutable borrow

* Update test setup

* Finish fixing all compile errors

* Rename assert leaf to disprove leaf

* Add integration tests (#21)

* Add peg-in integration tests

* Adjust peg-in integration tests

* Fix `add_input_output()` in disprove tx

* Remove input placeholder from challenge tx

* Add kick_off test and integration tests for challenge and disprove

* Add `take1` and `take2` tests

* Refactor tests and adding outputs

* Allow multiple inputs and one output in `challenge` tx

* Refactor adding inputs and output to `challenge` tx

* Refactor integration challenge test to use `add_inputs_and_output()` function

* Allow adding inputs only once in `challenge` tx (#28)

* Allow adding inputs only once in `challenge` tx

* Fix error msg

---------

Co-authored-by: ivebeenherebefore <[email protected]>

* Start on graphs (#27)

* Start on graphs

* Refactor into graph structs

* Commit pseudocode

* Fix compile errors

* Remove graph file

* Fix more warnings work on client

* Rc create graph client (#30)

* Commit progress

* Commit progress

* Start on client (#31)

* Commit progress

* Commit progress

* Merge and fix compile errors

* Update code to be compatible with Script changes

* Small changes to client

* [WIP] Rc create graph - implementation (#29)

* Start on graphs

* Refactor into graph structs

* Commit pseudocode

* Fix compile errors

* Remove graph file

* Fix more warnings work on client

* Fix tests

* Add constants file

* Implement `burn` in `peg_out` graph

* Implement `peg_out` graph remaining txs

---------

Co-authored-by: ivebeenherebefore <[email protected]>

* Add serialization and deserialization to graphs

* Refactor tests to use helper outpoint method (#32)

* Remove unused variables

* Add peg-in statuses and peg-out statuses (#34)

* Work on client syncing (#33)

* Refactor serialization

* Work on integrating Amazon S3

* Finished AWS reading and writing

* Make AWS s3 optional

* Fix test

* Update error handling

* Update warning message

* Delete obsolete files

* Refactor and clean up unused variables

* Remove unused variables

* Try to implement formatter for statuses (#35)

* Try to implement formatter for statuses

* Fix result error

* Remove status

* Delete codeowners

---------

Co-authored-by: aristotleee <[email protected]>
Co-authored-by: StarDumpling <[email protected]>
Co-authored-by: timesaved12345 <[email protected]>
Co-authored-by: mac user <[email protected]>
Co-authored-by: franklynot <[email protected]>
Co-authored-by: stardustPandora <[email protected]>

* First prototype chunking for mul and fflonk

* Rework execute_as_chunks to copy over stack

* Executing chunks now copies over stack; add tests

* Remove dependency on seckey in Winternitz sig verification

* Fix: Remove outdated script chunk execution

* Split up if

* Add some debug info in tests

* Quick fix for if in add()

* Quick fix for double

* Use nested script in restart_if

* Print info to file and set target and tolerance

* Update gitignore and Cargo.toml

* Add from_bytes for U254

* Small cleanup and fixes

* Replace restart_if with selector pattern

* Fix: Unresolved restart_if import

* Optimized Fq multiplication using hints with w-width windowed method (BitVM#87)

* optimized tunable field multiplication using w-width windowed method

* reverted back formatting changes, and added few docstrings

* align comments

* fix: fq-mul (BitVM#86)

* G1 scalar mul optimization (BitVM#88)

* perf: g1_scalar_mul optimization

* add a few comments to G1.scalar_mul

---------

Co-authored-by: fatih <[email protected]>

---------

Co-authored-by: robinlinus <[email protected]>
Co-authored-by: ivebeenherebefore <[email protected]>
Co-authored-by: PayneJoe <[email protected]>
Co-authored-by: Harry <[email protected]>
Co-authored-by: aristotleee <[email protected]>
Co-authored-by: StarDumpling <[email protected]>
Co-authored-by: timesaved12345 <[email protected]>
Co-authored-by: mac user <[email protected]>
Co-authored-by: franklynot <[email protected]>
Co-authored-by: stardustPandora <[email protected]>
Co-authored-by: Lukas <[email protected]>
Co-authored-by: bbist <[email protected]>
Co-authored-by: FatihSolak <[email protected]>
Co-authored-by: Hakan Karakuş <[email protected]>
Co-authored-by: fatih <[email protected]>

---------

Co-authored-by: ivebeenherebefore <[email protected]>
Co-authored-by: aristotleee <[email protected]>
Co-authored-by: StarDumpling <[email protected]>
Co-authored-by: timesaved12345 <[email protected]>
Co-authored-by: mac user <[email protected]>
Co-authored-by: franklynot <[email protected]>
Co-authored-by: stardustPandora <[email protected]>
Co-authored-by: stardustPandora <[email protected]>
Co-authored-by: robinlinus <[email protected]>
Co-authored-by: PayneJoe <[email protected]>
Co-authored-by: Harry <[email protected]>
Co-authored-by: Lukas <[email protected]>
Co-authored-by: bbist <[email protected]>
Co-authored-by: FatihSolak <[email protected]>
Co-authored-by: Hakan Karakuş <[email protected]>
Co-authored-by: fatih <[email protected]>

* add Fq::mul_bucket and Fq::mul_by_constant_bucket (BitVM#89)

Co-authored-by: aiden-bitcoin <[email protected]>

* feat: hinted scalar mul by const g1

* fix: hinted scalar mul

* feat: hinted g1p equal verify

* hinted_quad_miller_with_c_wi but test can not be run

* fix: memory issues

* fix: curves.rs memory issues

* fix: utils.rs memory issues

* change the hinted scripts for Fq12, Fq6, Fq2

* fix: quad miller memory issue

* fix: quad miller loop test

* G1Projective.hinted_into_affine

* feat: hinted msm

* hinted_groth16_verifier done

* uncomment lines that push hints

* add push_not_montgomery functions

* get rid of some warnings unused imports

* fix is_one tests and Fq12::hinted_mul

* test: hinted f1 equal verify

* fix double BigInt import

* Integrate Stack Analyzer (BitVM#94)

* Use lucid branch for script macro

* Add stack_hint

* More chunk script tests

* Add DEBUG to u8_extract_hbit

* Add Debug to the start of u32_rrot

* Add stack_hint to u32_rrot

* Add stack hints to u8_{xor, and, or}

* Add stack hint to bigint copy

* Add stack hints to blake3

* Add a stack hint to batched_scalar_mul op_picks

* Write analyzed chunk stats to file

* Fix the batched_scalar_mul stack hint

* Fix wrong stack hint for blake3

* Integrate chunker stack limit changes

* Fix stack hints; Change run to analyze stack

* Refactor execute_script to run()

---------

Co-authored-by: Lukas <[email protected]>

* Use run() instead of execute_script()

* [FIX] Fix running tests procedure (BitVM#97)

* Merge into_projective fix from BitVM#92

* TMUL Optimization (BitVM#99)

* perf: tmul addition's optimization

* perf: remove add with 0

* optimize limb_with_carry_prevent_overflow functions

* perf: get window optimization

* fix: tmul

* refactor: clean

---------

Co-authored-by: Hakan Karakuş <[email protected]>

* Fix inv stack hint

* Fix batched_scalar_mul stack hint

* Fix: Non constant program flow in scalar_mul (BitVM#101)

Co-authored-by: Lukas <[email protected]>

* Revert changes to add and double

* Optimize "limb_add_with_carry_prevent_overflow" and "limb_lshift_with_carry_prevent_overflow" (BitVM#102)

* Optimization of limb_add_with_carry_prevent_overflow

* optimize limb_lshift_with_carry_prevent_overflow overflow checks

---------

Co-authored-by: Hakan Karakuş <[email protected]>

* Tests: Refactor and print stack info

* Add `u32x8.rs`

* feat: On-demand serialization in blake3 (BitVM#105)

* chore: add blake3 u32

* feat: add u32_compress

* bugfix

* fmt

* chore: update data

---------

Co-authored-by: anothebody <[email protected]>

* optimize u32_add_carry from 145 to 90 bytes (BitVM#106)

* optimize u32_add_carry from 145 to 90 bytes

* optimize u32_add_nocarry from 95 to 80 bytes

* Add `u32_sub_noborrow`

* Affine versioned MSM  (BitVM#114)

* affine mode of scalar mul done

* test for groth16 verifier done

* fix G2 element subgroup membership check (BitVM#115)

* Optimize Fq2 mul (hinted) to use 2 lc2 instead of 3 lc1 tmuls & Fix Fq neg (BitVM#116)

* add BigInt option to hint and create Fq::hinted_mul_lc2

* Fq2::hinted_mul using 2 tmul_lc2 instead of 3 tmul, and fix Fq::neg now gives 0 for negative 0 instead of p

* Update `u32x8.rs`

* Hint msm affine (BitVM#117)

* G1Affine hinted_add example

* WIP: remain some problems

* fix compile error

* WIP: fix bug and add test

* WIP:fix hinted_check_add and hinted_scalar_mul_by_constant_g1

* pass test hinted_groth16_verifier

* Add `blake3_var_length_copy`

* Update `blake3_u32.rs`

* Create LICENSE

* Fix `u32_compress`/`u32_uncompress`

* feat: optimize winternitz (BitVM#121)

* feat: Add helper functions to use signatures as witness (BitVM#123)

* change algebra dependency to the version with new ATE_LOOP_COUNT (BitVM#124)

* feat:  implement the g2_subgroup check (BitVM#125)

* chore: add demo

* chore: add it to mod

---------

Co-authored-by: anothebody <[email protected]>

* helper to dry-run transaction scripts (BitVM#130)

* Remove obsolete methods

* Add missing dep

* Clean up Winternitz signing code and use `execute_script` to get passing tests

* Fix sftp threading issue (BitVM#85)

* Work on fixing sftp thread issue

* Fix disconnect timeouts with SFTP

* Work on handling file path

* Rework test order

* Fix data_store constructor

---------

Co-authored-by: ivebeenherebefore <[email protected]>

---------

Co-authored-by: robinlinus <[email protected]>
Co-authored-by: ivebeenherebefore <[email protected]>
Co-authored-by: PayneJoe <[email protected]>
Co-authored-by: Harry <[email protected]>
Co-authored-by: aristotleee <[email protected]>
Co-authored-by: StarDumpling <[email protected]>
Co-authored-by: timesaved12345 <[email protected]>
Co-authored-by: mac user <[email protected]>
Co-authored-by: franklynot <[email protected]>
Co-authored-by: stardustPandora <[email protected]>
Co-authored-by: Lukas <[email protected]>
Co-authored-by: bbist <[email protected]>
Co-authored-by: FatihSolak <[email protected]>
Co-authored-by: Hakan Karakuş <[email protected]>
Co-authored-by: fatih <[email protected]>
Co-authored-by: Hakan Karakuş <[email protected]>
Co-authored-by: stardustPandora <[email protected]>
Co-authored-by: fiamma-dev <[email protected]>
Co-authored-by: aiden-bitcoin <[email protected]>
Co-authored-by: Hakkush-07 <[email protected]>
Co-authored-by: Lukas George <[email protected]>
Co-authored-by: ostadgeorge <[email protected]>
Co-authored-by: chickenblock <[email protected]>
Co-authored-by: erray <[email protected]>
Co-authored-by: stillsaiko <[email protected]>
Co-authored-by: anothebody <[email protected]>
Co-authored-by: dylanCai9 <[email protected]>
Co-authored-by: sander2 <[email protected]>
Co-authored-by: archidoge0 <[email protected]>
lucidLuckylee added a commit that referenced this pull request Nov 27, 2024
 (#138)

* πŸ‘©β€πŸ« Reorganize bridge modules

* πŸ€“ Stub out more of implementation components

* Fix compilation error

* remove invalid secret and use existing unspendable pubkey

* 🫣 Progress

* 🏏 Fix errors, create alts

* 🎱 Cargo fix

* ✊ Progress

* πŸ‘ Cargo fix

* πŸ… Post meeting

* 😻 Complete txns

* 😼 Work of refactoring

* πŸ“¦ Cargo fix

* 😡 Progress

* 😐 Progress

* πŸ“¦ Cargo fix

* πŸš€ Progress

* πŸ€“ Progress

* πŸ‘¨β€πŸš€ Progress

* βœ‚οΈ Cargo clippy

* πŸ₯ rustfmt

* πŸ™ Progress

* πŸ‘¨β€πŸ³ rustfmt

* πŸ‘©β€βš–οΈ Progress

* πŸ”₯ Fix output amounts

* 🧼 Fix op code

* 🀑 fmt

* ❓ Added questions

* Add `peg_in_confirm` and `peg_in_refund` tests

* finish assert tx and add unit test

* fixed bugs and added test cases to disprove tx and burn tx

* fix control block error

* peg in confirm & test

* Refactor `Input` into a struct

* 😼 Fix pub key error by adding new Bitcoin PubKey

* pub key compressed or uncompressed error

* fixed burn tx test case for timelock and added more test cases

* take1 timelock fix & unit test

* clean up

* fixed import

* `peg_in_refund` and `connector_a` fixes

* Add `challenge` tx test

* πŸ€• Refactor context

* 🫣 Fix

* 🧼 Fix formatting

* Fix formatting

* Add todo

* Fix function call

* Fix type

* Fix formatting

* Update unspendable

* Format

* Fix burn

* move tests in tests folder

* prettier

* Fixed compilation errors and moved test cases to tests/

* refactoring

* refactoring connector b

* Update messages

* Rust fmt

* Refactor connectors

* Format

* Start updating tests

* Extract network setting from lower level functions

* continue refactoring

* Reorder network param

* Fix tests

* Refactor tests

* Fix formatting

* Format tests

* Fix up a few items

* Implement trait for connectors

* Always use the network provided in context

* Finalize the kick-off tx

* fixed compilation erros

* fix lint

* refactoring tests

* fix lint

* Rename variables

* COmment out incomplete signing code

* Refactor signing

* Restructure components into transactions and connectors

* Rename p2wpkh

* Format

* Replace connector 2 pub key with operator pub key

* Fixes (#23)

* Add codeowners (#24)

* Txn Serialization (#11)

* Fix compilation errors and run rustfmt

* add serialization trait

* add test

* use serde

* remove old version

* eleminate merge differences

* derive serialization for all txns

* Format

* Reorder imports

* feat: use consensus encode

---------

Co-authored-by: ivebeenherebefore <[email protected]>
Co-authored-by: stardustPandora <[email protected]>

* [WIP] Refactor pre-signing functions (#22)

* Refactor pre-signing functions

* Refactor remaining transactions

* Refactor

---------

Co-authored-by: ivebeenherebefore <[email protected]>

* Refactor contexts

* Refactor signing flow

* Fix some compile time issues

* Fix mutable borrow

* Update test setup

* Finish fixing all compile errors

* Refactor contexts (#26)

* Refactor contexts

* Refactor signing flow

* Fix some compile time issues

* Fix mutable borrow

* Update test setup

* Finish fixing all compile errors

* Rename assert leaf to disprove leaf

* Add integration tests (#21)

* Add peg-in integration tests

* Adjust peg-in integration tests

* Fix `add_input_output()` in disprove tx

* Remove input placeholder from challenge tx

* Add kick_off test and integration tests for challenge and disprove

* Add `take1` and `take2` tests

* Refactor tests and adding outputs

* Allow multiple inputs and one output in `challenge` tx

* Refactor adding inputs and output to `challenge` tx

* Refactor integration challenge test to use `add_inputs_and_output()` function

* Allow adding inputs only once in `challenge` tx (#28)

* Allow adding inputs only once in `challenge` tx

* Fix error msg

---------

Co-authored-by: ivebeenherebefore <[email protected]>

* Start on graphs (#27)

* Start on graphs

* Refactor into graph structs

* Commit pseudocode

* Fix compile errors

* Remove graph file

* Fix more warnings work on client

* Rc create graph client (#30)

* Commit progress

* Commit progress

* Start on client (#31)

* Commit progress

* Commit progress

* Merge and fix compile errors

* Update code to be compatible with Script changes

* Small changes to client

* [WIP] Rc create graph - implementation (#29)

* Start on graphs

* Refactor into graph structs

* Commit pseudocode

* Fix compile errors

* Remove graph file

* Fix more warnings work on client

* Fix tests

* Add constants file

* Implement `burn` in `peg_out` graph

* Implement `peg_out` graph remaining txs

---------

Co-authored-by: ivebeenherebefore <[email protected]>

* Add serialization and deserialization to graphs

* Refactor tests to use helper outpoint method (#32)

* Remove unused variables

* Add peg-in statuses and peg-out statuses (#34)

* Work on client syncing (#33)

* Refactor serialization

* Work on integrating Amazon S3

* Finished AWS reading and writing

* Make AWS s3 optional

* Fix test

* Update error handling

* Update warning message

* Delete obsolete files

* Refactor and clean up unused variables

* Remove unused variables

* Try to implement formatter for statuses (#35)

* Try to implement formatter for statuses

* Fix result error

* Remove status

* Delete codeowners

* Add peg out graph methods to client

* Implement `peg-in` graph tx functions (#36)

* Implement `peg-in` graph tx functions

* Use timelock constants

* Verify funding inputs at the beginnin of every integration test (#38)

* Add human-readable statuses (#39)

* Add human-readable statuses

* Rephrase statuses

* feat: refine evm address encode (#40)

Co-authored-by: stardustPandora <[email protected]>

* Add merge + validation POC (#37)

* Add merge POC

* Work on validation

* Add graph validation

* Format

* Add todo comment

* Add todo comment

* `read()`, `save()` and `merge()` implementation

---------

Co-authored-by: ivebeenherebefore <[email protected]>
Co-authored-by: StarDumpling <[email protected]>

* Add ftp and ftps support (#42)

* Add merge POC

* Work on validation

* Add graph validation

* Format

* Add todo comment

* Add todo comment

* Work on adding ftp and ftps

* Fix compilation issues

* Clean up cargo deps

* Add sftp (#44)

* Add sftp support

* Fully integrate sftp

---------

Co-authored-by: ivebeenherebefore <[email protected]>

---------

Co-authored-by: ivebeenherebefore <[email protected]>

* Add debug message to transaction verification

* Ftp tests (#45)

* Add progress

* Continue debugging

* Fix ftp lib

---------

Co-authored-by: ivebeenherebefore <[email protected]>

* Peg out test (#43)

* add peg out test

* updated with inscription

* use bitcoin hash

* format

* Add `validate()` test cases (#47)

* Add `merge()` test cases (#48)

* Add ftp tests (#52)

* Add progress

* Continue debugging

* Fix ftp lib

* Try russh

* Rollback russh

* Disable ftp datastores for now

---------

Co-authored-by: ivebeenherebefore <[email protected]>

* update test values (#53)

* add evm address for depositor (#54)

* Add MuSig2 (#41)

* Add merge POC

* Work on validation

* Add graph validation

* Format

* Add todo comment

* Add todo comment

* Add MuSig2 nonce handling

* Move nonce handling down to transaction layer, use common key types

* Add partial signatures, refactor

* Add a MuSig2 E2E test

* Update tests after `setup_test()` change

* Add signer key generation sample

* Add n-of-n pubkey generation

* Flesh out the MuSig2 test

* Refactor the client

* Refactor

* Pass the list of keys by reference in the client 'constructor'

* Add a TODO

* Clean up

* Clean up

* Refactored Musig2 (#46)

* Work on refactor

* Update N of N generation

* Work on refactor

* Work on applying nonce and signatures to other txns

* Commit changes

* Finish refactor and clean up

* Fix tests

---------

Co-authored-by: ivebeenherebefore <[email protected]>

* Refactor

* Lint

* Merge musig2 nonces and signatures, save local files to folders

* Save private nonces to local file

* Update some method names

* Wrap musig2 signature into taproot signature

* Change n of n p2wsh to p2tr (#50)

* Change n of n p2wsh to p2tr

* Fix consensus hex

* Fix leaf index

---------

Co-authored-by: ivebeenherebefore <[email protected]>

* Wait for peg-in deposit tx to be mined in musig2 test

* Fix merge

---------

Co-authored-by: ivebeenherebefore <[email protected]>
Co-authored-by: justin-elementlabs <[email protected]>
Co-authored-by: StarDumpling <[email protected]>

* Add client peg-out tests (#57)

* Refactor num blocks per x weeks constant

* Add client peg-out tests

* Read private data from local file (#56)

* Reduce console verbosity + reword messages for clarity

* Read private data from local file

* Remove unused function

---------

Co-authored-by: StarDumpling <[email protected]>

* Add directories to data stores, add `destination_network` (#60)

* Add public nonce verification (#63)

* Add nonce signatures

* OsRng is safe to use

* Do not fetch data when instantiating the `BitVMClient`

* Add pub nonce verification

* Rename test file `musig2.rs` to `musig2_peg_in.rs` for consistency

* Do not fail fast on pubnonce verification (get all the failures before returning)

* Send error messages to the error output

* L2 chain adaptors (#58)

* add l2 chain adaptors

* Fix compilation error

* debug pegin events

* feat: add pegin event

* type fixes in peg in event

* fix u256 to amount cast

* add peg out burnt event

* checks length of results

---------

Co-authored-by: ivebeenherebefore <[email protected]>
Co-authored-by: stardustPandora <[email protected]>

* Graph v3 merged (#59)

* Add merge POC

* Work on validation

* Add graph validation

* Format

* Add todo comment

* Add todo comment

* Add MuSig2 nonce handling

* Move nonce handling down to transaction layer, use common key types

* Add partial signatures, refactor

* Add a MuSig2 E2E test

* Update tests after `setup_test()` change

* Add signer key generation sample

* Add n-of-n pubkey generation

* Flesh out the MuSig2 test

* Refactor the client

* Refactor

* Pass the list of keys by reference in the client 'constructor'

* Add a TODO

* Clean up

* Clean up

* Refactored Musig2 (#46)

* Work on refactor

* Update N of N generation

* Work on refactor

* Work on applying nonce and signatures to other txns

* Commit changes

* Finish refactor and clean up

* Fix tests

---------

Co-authored-by: ivebeenherebefore <[email protected]>

* Refactor

* Lint

* Merge musig2 nonces and signatures, save local files to folders

* Save private nonces to local file

* Update some method names

* Wrap musig2 signature into taproot signature

* Change n of n p2wsh to p2tr (#50)

* Change n of n p2wsh to p2tr

* Fix consensus hex

* Fix leaf index

---------

Co-authored-by: ivebeenherebefore <[email protected]>

* Start v3 graph

* Work on graph v3

* Work on changing connectors and rename _d

* Rename leafs

* Work on transactions

* Finish updating txns to v3 graph

* Remove comment

* Refactor inputs

* Update graphs

* Update status check

* Update peg out graph

* Start updating status

* Graph v3 status progress

* Finish peg out status update

* Update tests

* Remove lib

* Fix integration tests

* Refactor

* Revert unneeded changes

* Update musig tests

* Update musig2 peg out tests

* Fix issues

* Fix merging

* Fix compile errors

* Fixes

---------

Co-authored-by: ivebeenherebefore <[email protected]>
Co-authored-by: franklynot <[email protected]>
Co-authored-by: StarDumpling <[email protected]>

* Nonce signature tests (#67)

* Add nonce signatures

* OsRng is safe to use

* Do not fetch data when instantiating the `BitVMClient`

* Add pub nonce verification

* Rename test file `musig2.rs` to `musig2_peg_in.rs` for consistency

* Do not fail fast on pubnonce verification (get all the failures before returning)

* Send error messages to the error output

* Add UTs for `verify_public_nonces()`

* Refactor test

* Fixes after the merge

* One more fix after the merge

* Reduce compiler warnings

* Undo the last change in files unrelated to this PR

* Sync with BitVM codebase (#70)

* Add basic implementation for `check_hash_sig`

* Add separate function for `blake3_160_var_length`

* Add separate function for `sign_hash`

* Complete version of algorithm 9 in On Proving Pairings (#83)

* resolve build error

* keep local ell_coeffs consistant with remote ark_ec, and move double/add into utils

* two things left: backward compatibility need to be done for arkworks, mul_by_034_with_4_constant_affine need to filled

* fill mul_by_34 instead of mul_by_034_with_4_constant_affine

* add test for fq12_mul_by_34, and some comment for fq12_mu_by_034_with_4_constant

* fix bug for fq12_mul_by_34

* fix bug on from_eval_point

* up

* test for from_eval_point, passed

* update package url for bn254

* add test_ell_by_constant_affine

* test of dual pairing passed!

* remove bn254_ell

* modify tests

* frame of quad_pairing

* refactor: remove unnecessary for loop

* fill utility funcs for quad_pairing

* fix conflicts

* restore

* fix double error

* text: add comments

* add test

* test: update test to use negative value for bias

* text: add comment

* test: add test for affine_double_line

* test: add check test for line type

* refactor: sync with upstream to use new form of script

* refactor: support new form of script for miller loop  in affine space

* refactor: add test for affine space

* fix: use projective mode to fix test error

* test: add test for quad pairing

* test: handle tangent line check logic

* update test

* add debug info

* debug

* debug

* change to use vec for computation

* refactor

* fixed version

* fix frob square bug

* code refactoring

* text: add comment for code

* feat: add pairing verification function

* comment for stack

* f initial value is c inverse

* update f with multiplying c or c inverse

* update comment

* update stack index

* update f

* update comment

* add test

* update test

* text: add comment

* fix index for roll to calculate Frobenius map

* refactor: update stack index

* update comment

* update comment

* update f value at first

* update comment

* fix stack index

* update comment

* add log

* update comment

* update comment

* fix: square f all the time

* this log will cause error, delete it

* update pairing, only use affine mode

* update test to support affine mode

* update test to support affine space for pairing zero test

* update test for miller loop in projective space

* feat: make fflonk verifier support dual pairing in affine space

* get groth16 verifier optimized with affine mode done

* code clean

---------

Co-authored-by: Harry <[email protected]>

* Use `run` function in Winternitz tests

* Add bridge progress (#79)

* πŸ‘©β€πŸ« Reorganize bridge modules

* πŸ€“ Stub out more of implementation components

* Fix compilation error

* remove invalid secret and use existing unspendable pubkey

* 🫣 Progress

* 🏏 Fix errors, create alts

* 🎱 Cargo fix

* ✊ Progress

* πŸ‘ Cargo fix

* πŸ… Post meeting

* 😻 Complete txns

* 😼 Work of refactoring

* πŸ“¦ Cargo fix

* 😡 Progress

* 😐 Progress

* πŸ“¦ Cargo fix

* πŸš€ Progress

* πŸ€“ Progress

* πŸ‘¨β€πŸš€ Progress

* βœ‚οΈ Cargo clippy

* πŸ₯ rustfmt

* πŸ™ Progress

* πŸ‘¨β€πŸ³ rustfmt

* πŸ‘©β€βš–οΈ Progress

* πŸ”₯ Fix output amounts

* 🧼 Fix op code

* 🀑 fmt

* ❓ Added questions

* Add `peg_in_confirm` and `peg_in_refund` tests

* finish assert tx and add unit test

* fixed bugs and added test cases to disprove tx and burn tx

* fix control block error

* peg in confirm & test

* Refactor `Input` into a struct

* 😼 Fix pub key error by adding new Bitcoin PubKey

* pub key compressed or uncompressed error

* fixed burn tx test case for timelock and added more test cases

* take1 timelock fix & unit test

* clean up

* fixed import

* `peg_in_refund` and `connector_a` fixes

* Add `challenge` tx test

* πŸ€• Refactor context

* 🫣 Fix

* 🧼 Fix formatting

* Fix formatting

* Add todo

* Fix function call

* Fix type

* Fix formatting

* Update unspendable

* Format

* Fix burn

* move tests in tests folder

* prettier

* Fixed compilation errors and moved test cases to tests/

* refactoring

* refactoring connector b

* Update messages

* Rust fmt

* Refactor connectors

* Format

* Start updating tests

* Extract network setting from lower level functions

* continue refactoring

* Reorder network param

* Fix tests

* Refactor tests

* Fix formatting

* Format tests

* Fix up a few items

* Implement trait for connectors

* Always use the network provided in context

* Finalize the kick-off tx

* fixed compilation erros

* fix lint

* refactoring tests

* fix lint

* Rename variables

* COmment out incomplete signing code

* Refactor signing

* Restructure components into transactions and connectors

* Rename p2wpkh

* Format

* Replace connector 2 pub key with operator pub key

* Fixes (#23)

* Add codeowners (#24)

* Txn Serialization (#11)

* Fix compilation errors and run rustfmt

* add serialization trait

* add test

* use serde

* remove old version

* eleminate merge differences

* derive serialization for all txns

* Format

* Reorder imports

* feat: use consensus encode

---------

Co-authored-by: ivebeenherebefore <[email protected]>
Co-authored-by: stardustPandora <[email protected]>

* [WIP] Refactor pre-signing functions (#22)

* Refactor pre-signing functions

* Refactor remaining transactions

* Refactor

---------

Co-authored-by: ivebeenherebefore <[email protected]>

* Refactor contexts

* Refactor signing flow

* Fix some compile time issues

* Fix mutable borrow

* Update test setup

* Finish fixing all compile errors

* Refactor contexts (#26)

* Refactor contexts

* Refactor signing flow

* Fix some compile time issues

* Fix mutable borrow

* Update test setup

* Finish fixing all compile errors

* Rename assert leaf to disprove leaf

* Add integration tests (#21)

* Add peg-in integration tests

* Adjust peg-in integration tests

* Fix `add_input_output()` in disprove tx

* Remove input placeholder from challenge tx

* Add kick_off test and integration tests for challenge and disprove

* Add `take1` and `take2` tests

* Refactor tests and adding outputs

* Allow multiple inputs and one output in `challenge` tx

* Refactor adding inputs and output to `challenge` tx

* Refactor integration challenge test to use `add_inputs_and_output()` function

* Allow adding inputs only once in `challenge` tx (#28)

* Allow adding inputs only once in `challenge` tx

* Fix error msg

---------

Co-authored-by: ivebeenherebefore <[email protected]>

* Start on graphs (#27)

* Start on graphs

* Refactor into graph structs

* Commit pseudocode

* Fix compile errors

* Remove graph file

* Fix more warnings work on client

* Rc create graph client (#30)

* Commit progress

* Commit progress

* Start on client (#31)

* Commit progress

* Commit progress

* Merge and fix compile errors

* Update code to be compatible with Script changes

* Small changes to client

* [WIP] Rc create graph - implementation (#29)

* Start on graphs

* Refactor into graph structs

* Commit pseudocode

* Fix compile errors

* Remove graph file

* Fix more warnings work on client

* Fix tests

* Add constants file

* Implement `burn` in `peg_out` graph

* Implement `peg_out` graph remaining txs

---------

Co-authored-by: ivebeenherebefore <[email protected]>

* Add serialization and deserialization to graphs

* Refactor tests to use helper outpoint method (#32)

* Remove unused variables

* Add peg-in statuses and peg-out statuses (#34)

* Work on client syncing (#33)

* Refactor serialization

* Work on integrating Amazon S3

* Finished AWS reading and writing

* Make AWS s3 optional

* Fix test

* Update error handling

* Update warning message

* Delete obsolete files

* Refactor and clean up unused variables

* Remove unused variables

* Try to implement formatter for statuses (#35)

* Try to implement formatter for statuses

* Fix result error

* Remove status

* Delete codeowners

---------

Co-authored-by: aristotleee <[email protected]>
Co-authored-by: StarDumpling <[email protected]>
Co-authored-by: timesaved12345 <[email protected]>
Co-authored-by: mac user <[email protected]>
Co-authored-by: franklynot <[email protected]>
Co-authored-by: stardustPandora <[email protected]>

* First prototype chunking for mul and fflonk

* Rework execute_as_chunks to copy over stack

* Executing chunks now copies over stack; add tests

* Remove dependency on seckey in Winternitz sig verification

* Fix: Remove outdated script chunk execution

* Split up if

* Add some debug info in tests

* Quick fix for if in add()

* Quick fix for double

* Use nested script in restart_if

* Print info to file and set target and tolerance

* Update gitignore and Cargo.toml

* Add from_bytes for U254

* Small cleanup and fixes

* Replace restart_if with selector pattern

* Fix: Unresolved restart_if import

* Optimized Fq multiplication using hints with w-width windowed method (#87)

* optimized tunable field multiplication using w-width windowed method

* reverted back formatting changes, and added few docstrings

* align comments

* fix: fq-mul (#86)

* G1 scalar mul optimization (#88)

* perf: g1_scalar_mul optimization

* add a few comments to G1.scalar_mul

---------

Co-authored-by: fatih <[email protected]>

---------

Co-authored-by: robinlinus <[email protected]>
Co-authored-by: ivebeenherebefore <[email protected]>
Co-authored-by: PayneJoe <[email protected]>
Co-authored-by: Harry <[email protected]>
Co-authored-by: aristotleee <[email protected]>
Co-authored-by: StarDumpling <[email protected]>
Co-authored-by: timesaved12345 <[email protected]>
Co-authored-by: mac user <[email protected]>
Co-authored-by: franklynot <[email protected]>
Co-authored-by: stardustPandora <[email protected]>
Co-authored-by: Lukas <[email protected]>
Co-authored-by: bbist <[email protected]>
Co-authored-by: FatihSolak <[email protected]>
Co-authored-by: Hakan Karakuş <[email protected]>
Co-authored-by: fatih <[email protected]>

* Start on CLI (#65)

* Stub todos

* feat: add cli binary

---------

Co-authored-by: ivebeenherebefore <[email protected]>
Co-authored-by: stardustPandora <[email protected]>
Co-authored-by: stardustPandora <[email protected]>

* Add commits testing (#69)

* Add merge POC

* Work on validation

* Add graph validation

* Format

* Add todo comment

* Add todo comment

* Add MuSig2 nonce handling

* Move nonce handling down to transaction layer, use common key types

* Add partial signatures, refactor

* Add a MuSig2 E2E test

* Update tests after `setup_test()` change

* Add signer key generation sample

* Add n-of-n pubkey generation

* Flesh out the MuSig2 test

* Refactor the client

* Refactor

* Pass the list of keys by reference in the client 'constructor'

* Add a TODO

* Clean up

* Clean up

* Refactored Musig2 (#46)

* Work on refactor

* Update N of N generation

* Work on refactor

* Work on applying nonce and signatures to other txns

* Commit changes

* Finish refactor and clean up

* Fix tests

---------

Co-authored-by: ivebeenherebefore <[email protected]>

* Refactor

* Lint

* Merge musig2 nonces and signatures, save local files to folders

* Save private nonces to local file

* Update some method names

* Wrap musig2 signature into taproot signature

* Change n of n p2wsh to p2tr (#50)

* Change n of n p2wsh to p2tr

* Fix consensus hex

* Fix leaf index

---------

Co-authored-by: ivebeenherebefore <[email protected]>

* Start v3 graph

* Work on graph v3

* Work on changing connectors and rename _d

* Rename leafs

* Work on transactions

* Finish updating txns to v3 graph

* Remove comment

* Refactor inputs

* Update graphs

* Update status check

* Update peg out graph

* Start updating status

* Graph v3 status progress

* Finish peg out status update

* Update tests

* Remove lib

* Fix integration tests

* Refactor

* Revert unneeded changes

* Update musig tests

* Update musig2 peg out tests

* Stub out methods

* Commit comments

* Commit progress on winternitz integration

* Skip converting message digits to bytes

* Add winternitz block number test

* Refactor winternitz for use with variable digits

* Calculate checksum digits dynamically

* Specify arguments in winternitz tests

* Move test to winternitz implementation file

* Add `digits_to_bytes` fn and test

* Run rust code formatter

* Refactor `digits_to_bytes()` test

* Commit start time block in start time transaction

* Sign start time tx in client

---------

Co-authored-by: ivebeenherebefore <[email protected]>
Co-authored-by: franklynot <[email protected]>
Co-authored-by: StarDumpling <[email protected]>

* Implement peg out flow (#64)

* Add merge POC

* Work on validation

* Add graph validation

* Format

* Add todo comment

* Add todo comment

* Add MuSig2 nonce handling

* Move nonce handling down to transaction layer, use common key types

* Add partial signatures, refactor

* Add a MuSig2 E2E test

* Update tests after `setup_test()` change

* Add signer key generation sample

* Add n-of-n pubkey generation

* Flesh out the MuSig2 test

* Refactor the client

* Refactor

* Pass the list of keys by reference in the client 'constructor'

* Add a TODO

* Clean up

* Clean up

* Refactored Musig2 (#46)

* Work on refactor

* Update N of N generation

* Work on refactor

* Work on applying nonce and signatures to other txns

* Commit changes

* Finish refactor and clean up

* Fix tests

---------

Co-authored-by: ivebeenherebefore <[email protected]>

* Refactor

* Lint

* Merge musig2 nonces and signatures, save local files to folders

* Save private nonces to local file

* Update some method names

* Wrap musig2 signature into taproot signature

* Change n of n p2wsh to p2tr (#50)

* Change n of n p2wsh to p2tr

* Fix consensus hex

* Fix leaf index

---------

Co-authored-by: ivebeenherebefore <[email protected]>

* Start v3 graph

* Work on graph v3

* Work on changing connectors and rename _d

* Rename leafs

* Work on transactions

* Finish updating txns to v3 graph

* Remove comment

* Refactor inputs

* Update graphs

* Update status check

* Update peg out graph

* Start updating status

* Graph v3 status progress

* Finish peg out status update

* Update tests

* Remove lib

* Fix integration tests

* Refactor

* Revert unneeded changes

* Update musig tests

* Update musig2 peg out tests

* Stub out methods

* Commit comments

* Add stubbed methods

* Undo commits

* peg out flow in graph

* expose sync_l2
added test

* add to_block
add retry in fund_input

* make to_block configurable

* verify and fund inputs

* add mock up adaptor

* update peg out input

* refactor faucet

* add serial_test to run test consecutively

---------

Co-authored-by: ivebeenherebefore <[email protected]>
Co-authored-by: franklynot <[email protected]>
Co-authored-by: StarDumpling <[email protected]>
Co-authored-by: aristotleee <[email protected]>

* Add peg out confirm (#62)

* Add merge POC

* Work on validation

* Add graph validation

* Format

* Add todo comment

* Add todo comment

* Add MuSig2 nonce handling

* Move nonce handling down to transaction layer, use common key types

* Add partial signatures, refactor

* Add a MuSig2 E2E test

* Update tests after `setup_test()` change

* Add signer key generation sample

* Add n-of-n pubkey generation

* Flesh out the MuSig2 test

* Refactor the client

* Refactor

* Pass the list of keys by reference in the client 'constructor'

* Add a TODO

* Clean up

* Clean up

* Refactored Musig2 (#46)

* Work on refactor

* Update N of N generation

* Work on refactor

* Work on applying nonce and signatures to other txns

* Commit changes

* Finish refactor and clean up

* Fix tests

---------

Co-authored-by: ivebeenherebefore <[email protected]>

* Refactor

* Lint

* Merge musig2 nonces and signatures, save local files to folders

* Save private nonces to local file

* Update some method names

* Wrap musig2 signature into taproot signature

* Change n of n p2wsh to p2tr (#50)

* Change n of n p2wsh to p2tr

* Fix consensus hex

* Fix leaf index

---------

Co-authored-by: ivebeenherebefore <[email protected]>

* Start v3 graph

* Work on graph v3

* Work on changing connectors and rename _d

* Rename leafs

* Work on transactions

* Finish updating txns to v3 graph

* Remove comment

* Refactor inputs

* Update graphs

* Update status check

* Update peg out graph

* Start updating status

* Graph v3 status progress

* Finish peg out status update

* Update tests

* Remove lib

* Fix integration tests

* Refactor

* Revert unneeded changes

* Update musig tests

* Update musig2 peg out tests

* Stub out methods

* Mock up peg out confirm

* Commit comments

* Add stubbed methods

* Undo commits

* peg out flow in graph

* expose sync_l2
added test

* add to_block
add retry in fund_input

* make to_block configurable

* verify and fund inputs

* fix compilation errors

* add mock up adaptor

* update peg out input

* use generic type for transaction hash

* Add connector 6 to tests setup

* Commit eth txid and btc txid in kick off 1 tx

---------

Co-authored-by: ivebeenherebefore <[email protected]>
Co-authored-by: franklynot <[email protected]>
Co-authored-by: StarDumpling <[email protected]>
Co-authored-by: aristotleee <[email protected]>

* Infrastructure for Winternitz secrets + superblock commit (#73)

* Add merge POC

* Work on validation

* Add graph validation

* Format

* Add todo comment

* Add todo comment

* Add MuSig2 nonce handling

* Move nonce handling down to transaction layer, use common key types

* Add partial signatures, refactor

* Add a MuSig2 E2E test

* Update tests after `setup_test()` change

* Add signer key generation sample

* Add n-of-n pubkey generation

* Flesh out the MuSig2 test

* Refactor the client

* Refactor

* Pass the list of keys by reference in the client 'constructor'

* Add a TODO

* Clean up

* Clean up

* Refactored Musig2 (#46)

* Work on refactor

* Update N of N generation

* Work on refactor

* Work on applying nonce and signatures to other txns

* Commit changes

* Finish refactor and clean up

* Fix tests

---------

Co-authored-by: ivebeenherebefore <[email protected]>

* Refactor

* Lint

* Merge musig2 nonces and signatures, save local files to folders

* Save private nonces to local file

* Update some method names

* Wrap musig2 signature into taproot signature

* Change n of n p2wsh to p2tr (#50)

* Change n of n p2wsh to p2tr

* Fix consensus hex

* Fix leaf index

---------

Co-authored-by: ivebeenherebefore <[email protected]>

* Start v3 graph

* Work on graph v3

* Work on changing connectors and rename _d

* Rename leafs

* Work on transactions

* Finish updating txns to v3 graph

* Remove comment

* Refactor inputs

* Update graphs

* Update status check

* Update peg out graph

* Start updating status

* Graph v3 status progress

* Finish peg out status update

* Update tests

* Remove lib

* Fix integration tests

* Refactor

* Revert unneeded changes

* Update musig tests

* Update musig2 peg out tests

* Stub out methods

* Mock up peg out confirm

* Commit comments

* Add stubbed methods

* Undo commits

* peg out flow in graph

* expose sync_l2
added test

* add to_block
add retry in fund_input

* make to_block configurable

* Commit progress on winternitz integration

* verify and fund inputs

* fix compilation errors

* Skip converting message digits to bytes

* Add winternitz block number test

* Refactor winternitz for use with variable digits

* Calculate checksum digits dynamically

* Specify arguments in winternitz tests

* add mock up adaptor

* update peg out input

* Move test to winternitz implementation file

* use generic type for transaction hash

* Add `digits_to_bytes` fn and test

* Run rust code formatter

* Refactor `digits_to_bytes()` test

* Add Super Block hash commit

* Add missing import

* Do not panic on private data deserialization errors

* Add a comment

* Commit start time block in start time transaction

* WIP: Use winternitz_hash fo SB hash + store winternitz secrets locally

* Return signature instead of script

* Fix formatting

* Add connector 6 to tests setup

* Commit eth txid and btc txid in kick off 1 tx

* Infrastrucutre for Winternitz secrets

* Refactor fee constants

* Revert: Do not panic on private data deserialization errors

* Rename the private data file

* Revise the commitment lock and unlock scripts

* Remove unused import

* Rustfmt

* Update src/bridge/superblock.rs

Co-authored-by: StarDumpling <[email protected]>

* Introduce `ConnectorId` and refactor Winternitz secret mapping in private data

* Test setup update

* Refactor `setup_test`, wrap return values into a struct

* Broadcast peg-out confirm, refactor connector 6 to use commitment pattern

* Fix: Winternitz signing primitives expect message digits

* Addressing CR comments + a minor cleanup

* Fixes

---------

Co-authored-by: ivebeenherebefore <[email protected]>
Co-authored-by: justin-elementlabs <[email protected]>
Co-authored-by: StarDumpling <[email protected]>
Co-authored-by: aristotleee <[email protected]>

* Query CLI (#75)

* fmt

* add query cli

* sync in command constructor

* add file path prefix support

* rename status

* return value vector

* add tx info
optimize get_tx_status

* use same keys

* Reduce compiler warnings (#68)

* Reduce compiler warnings

* Fix wording

* Remove unused imports & code

* Undo changes in BitVM-owned files

* Enforce one commitment message per Winternitz key (#78)

* Do not reuse Winternitz keys

* Update Winternitz plumbing in remaining connectors

* Remove unnecessary `new_for_validation` on connectors

* Pull out connectors (#76)

* Pull out peg-out connectors

* Pull out peg-in connectors

* Remove `new_for_validation` fn from connectors

* Refactor creating connectors

* Fix start_time_timeout test (#79)

* Winternitz signing refactor: Pass only required commitment secrets (#80)

* Remove unused imports

* Pass only required commitment secrets

* Pass only required commitment secrets (compact signatures)

* Reverse `StartTimeTransaction::sign' parameters for consistency with `WinternitzSigningInputs`

* Make the `test_start_time_tx` test pass

* Pass only required commitment secrets from the client

* Add a comment

* Push down superblock handling from client to the graph struct to be consistent with other commitments

* Test fix

* Move `get_start_time_block_number` to `superblock` module

* Remove unnecessary reference

* Update a test function comment

* Use public key to create winternitz compact script

* Use Bitcoin `Header` for superblock

* Remove dependency on secret in compact Winternitz sig verification

* Fix after the last merge

* Another fix after the merge

* Remove unnecessary double conversion to `WinternitzPublicKey` in tests

---------

Co-authored-by: StarDumpling <[email protected]>

* feat: more precise pegin verifier status & state machine (#83)

* feat: more precise pegin verifier status & state machine

* chore: change PegInVerifierStatus fmt strings

Co-authored-by: StarDumpling <[email protected]>

* chore: remove printlns

* fix: call process_peg_ins & create process_peg_outs

---------

Co-authored-by: StarDumpling <[email protected]>

* Cli query commands for UI signing (#77)

* add command for getting peg in transactions for wallet signing

* add command for creating peg in graph with given signatures

* add command for fetching unused peg in graphs

* rustie

* add source outpoint to pegins data

* broadcast deposit after creation of peg in graph

* fix review comments

* Remove comment

* resolve conflict

---------

Co-authored-by: ivebeenherebefore <[email protected]>

* Format

* Remove obsolete methods

* Add missing dep

* Clean up Winternitz signing code and use `execute_script` to get passing tests

* Fix sftp threading issue (#85)

* Work on fixing sftp thread issue

* Fix disconnect timeouts with SFTP

* Work on handling file path

* Rework test order

* Fix data_store constructor

---------

Co-authored-by: ivebeenherebefore <[email protected]>

* Sync from BitVM (#84)

* Add basic implementation for `check_hash_sig`

* Add separate function for `blake3_160_var_length`

* Add separate function for `sign_hash`

* Complete version of algorithm 9 in On Proving Pairings (#83)

* resolve build error

* keep local ell_coeffs consistant with remote ark_ec, and move double/add into utils

* two things left: backward compatibility need to be done for arkworks, mul_by_034_with_4_constant_affine need to filled

* fill mul_by_34 instead of mul_by_034_with_4_constant_affine

* add test for fq12_mul_by_34, and some comment for fq12_mu_by_034_with_4_constant

* fix bug for fq12_mul_by_34

* fix bug on from_eval_point

* up

* test for from_eval_point, passed

* update package url for bn254

* add test_ell_by_constant_affine

* test of dual pairing passed!

* remove bn254_ell

* modify tests

* frame of quad_pairing

* refactor: remove unnecessary for loop

* fill utility funcs for quad_pairing

* fix conflicts

* restore

* fix double error

* text: add comments

* add test

* test: update test to use negative value for bias

* text: add comment

* test: add test for affine_double_line

* test: add check test for line type

* refactor: sync with upstream to use new form of script

* refactor: support new form of script for miller loop  in affine space

* refactor: add test for affine space

* fix: use projective mode to fix test error

* test: add test for quad pairing

* test: handle tangent line check logic

* update test

* add debug info

* debug

* debug

* change to use vec for computation

* refactor

* fixed version

* fix frob square bug

* code refactoring

* text: add comment for code

* feat: add pairing verification function

* comment for stack

* f initial value is c inverse

* update f with multiplying c or c inverse

* update comment

* update stack index

* update f

* update comment

* add test

* update test

* text: add comment

* fix index for roll to calculate Frobenius map

* refactor: update stack index

* update comment

* update comment

* update f value at first

* update comment

* fix stack index

* update comment

* add log

* update comment

* update comment

* fix: square f all the time

* this log will cause error, delete it

* update pairing, only use affine mode

* update test to support affine mode

* update test to support affine space for pairing zero test

* update test for miller loop in projective space

* feat: make fflonk verifier support dual pairing in affine space

* get groth16 verifier optimized with affine mode done

* code clean

---------

Co-authored-by: Harry <[email protected]>

* Use `run` function in Winternitz tests

* Add bridge progress (#79)

* πŸ‘©β€πŸ« Reorganize bridge modules

* πŸ€“ Stub out more of implementation components

* Fix compilation error

* remove invalid secret and use existing unspendable pubkey

* 🫣 Progress

* 🏏 Fix errors, create alts

* 🎱 Cargo fix

* ✊ Progress

* πŸ‘ Cargo fix

* πŸ… Post meeting

* 😻 Complete txns

* 😼 Work of refactoring

* πŸ“¦ Cargo fix

* 😡 Progress

* 😐 Progress

* πŸ“¦ Cargo fix

* πŸš€ Progress

* πŸ€“ Progress

* πŸ‘¨β€πŸš€ Progress

* βœ‚οΈ Cargo clippy

* πŸ₯ rustfmt

* πŸ™ Progress

* πŸ‘¨β€πŸ³ rustfmt

* πŸ‘©β€βš–οΈ Progress

* πŸ”₯ Fix output amounts

* 🧼 Fix op code

* 🀑 fmt

* ❓ Added questions

* Add `peg_in_confirm` and `peg_in_refund` tests

* finish assert tx and add unit test

* fixed bugs and added test cases to disprove tx and burn tx

* fix control block error

* peg in confirm & test

* Refactor `Input` into a struct

* 😼 Fix pub key error by adding new Bitcoin PubKey

* pub key compressed or uncompressed error

* fixed burn tx test case for timelock and added more test cases

* take1 timelock fix & unit test

* clean up

* fixed import

* `peg_in_refund` and `connector_a` fixes

* Add `challenge` tx test

* πŸ€• Refactor context

* 🫣 Fix

* 🧼 Fix formatting

* Fix formatting

* Add todo

* Fix function call

* Fix type

* Fix formatting

* Update unspendable

* Format

* Fix burn

* move tests in tests folder

* prettier

* Fixed compilation errors and moved test cases to tests/

* refactoring

* refactoring connector b

* Update messages

* Rust fmt

* Refactor connectors

* Format

* Start updating tests

* Extract network setting from lower level functions

* continue refactoring

* Reorder network param

* Fix tests

* Refactor tests

* Fix formatting

* Format tests

* Fix up a few items

* Implement trait for connectors

* Always use the network provided in context

* Finalize the kick-off tx

* fixed compilation erros

* fix lint

* refactoring tests

* fix lint

* Rename variables

* COmment out incomplete signing code

* Refactor signing

* Restructure components into transactions and connectors

* Rename p2wpkh

* Format

* Replace connector 2 pub key with operator pub key

* Fixes (#23)

* Add codeowners (#24)

* Txn Serialization (#11)

* Fix compilation errors and run rustfmt

* add serialization trait

* add test

* use serde

* remove old version

* eleminate merge differences

* derive serialization for all txns

* Format

* Reorder imports

* feat: use consensus encode

---------

Co-authored-by: ivebeenherebefore <[email protected]>
Co-authored-by: stardustPandora <[email protected]>

* [WIP] Refactor pre-signing functions (#22)

* Refactor pre-signing functions

* Refactor remaining transactions

* Refactor

---------

Co-authored-by: ivebeenherebefore <[email protected]>

* Refactor contexts

* Refactor signing flow

* Fix some compile time issues

* Fix mutable borrow

* Update test setup

* Finish fixing all compile errors

* Refactor contexts (#26)

* Refactor contexts

* Refactor signing flow

* Fix some compile time issues

* Fix mutable borrow

* Update test setup

* Finish fixing all compile errors

* Rename assert leaf to disprove leaf

* Add integration tests (#21)

* Add peg-in integration tests

* Adjust peg-in integration tests

* Fix `add_input_output()` in disprove tx

* Remove input placeholder from challenge tx

* Add kick_off test and integration tests for challenge and disprove

* Add `take1` and `take2` tests

* Refactor tests and adding outputs

* Allow multiple inputs and one output in `challenge` tx

* Refactor adding inputs and output to `challenge` tx

* Refactor integration challenge test to use `add_inputs_and_output()` function

* Allow adding inputs only once in `challenge` tx (#28)

* Allow adding inputs only once in `challenge` tx

* Fix error msg

---------

Co-authored-by: ivebeenherebefore <[email protected]>

* Start on graphs (#27)

* Start on graphs

* Refactor into graph structs

* Commit pseudocode

* Fix compile errors

* Remove graph file

* Fix more warnings work on client

* Rc create graph client (#30)

* Commit progress

* Commit progress

* Start on client (#31)

* Commit progress

* Commit progress

* Merge and fix compile errors

* Update code to be compatible with Script changes

* Small changes to client

* [WIP] Rc create graph - implementation (#29)

* Start on graphs

* Refactor into graph structs

* Commit pseudocode

* Fix compile errors

* Remove graph file

* Fix more warnings work on client

* Fix tests

* Add constants file

* Implement `burn` in `peg_out` graph

* Implement `peg_out` graph remaining txs

---------

Co-authored-by: ivebeenherebefore <[email protected]>

* Add serialization and deserialization to graphs

* Refactor tests to use helper outpoint method (#32)

* Remove unused variables

* Add peg-in statuses and peg-out statuses (#34)

* Work on client syncing (#33)

* Refactor serialization

* Work on integrating Amazon S3

* Finished AWS reading and writing

* Make AWS s3 optional

* Fix test

* Update error handling

* Update warning message

* Delete obsolete files

* Refactor and clean up unused variables

* Remove unused variables

* Try to implement formatter for statuses (#35)

* Try to implement formatter for statuses

* Fix result error

* Remove status

* Delete codeowners

---------

Co-authored-by: aristotleee <[email protected]>
Co-authored-by: StarDumpling <[email protected]>
Co-authored-by: timesaved12345 <[email protected]>
Co-authored-by: mac user <[email protected]>
Co-authored-by: franklynot <[email protected]>
Co-authored-by: stardustPandora <[email protected]>

* First prototype chunking for mul and fflonk

* Rework execute_as_chunks to copy over stack

* Executing chunks now copies over stack; add tests

* Remove dependency on seckey in Winternitz sig verification

* Fix: Remove outdated script chunk execution

* Split up if

* Add some debug info in tests

* Quick fix for if in add()

* Quick fix for double

* Use nested script in restart_if

* Print info to file and set target and tolerance

* Update gitignore and Cargo.toml

* Add from_bytes for U254

* Small cleanup and fixes

* Replace restart_if with selector pattern

* Fix: Unresolved restart_if import

* Optimized Fq multiplication using hints with w-width windowed method (#87)

* optimized tunable field multiplication using w-width windowed method

* reverted back formatting changes, and added few docstrings

* align comments

* fix: fq-mul (#86)

* fix is_positive()

* fix N_WINDOW

* better limb_add_with_carry_prevent_overflow and limb_double_with_carry_prevent_overflow

* feat: hinted mul integration

* G1 scalar mul optimization (#88)

* perf: g1_scalar_mul optimization

* add a few comments to G1.scalar_mul

---------

Co-authored-by: fatih <[email protected]>

* Fq.hinted_square

* Fq2.hinted_square

* feat: hinted mul by const

* Fq6.hinted_square

* feat: fq2 hinted mul by const

* Fq12.hinted_square

* feat: hinted line utils

* hinted_frobenius functions

* G1Projective.hinted_double

* feat: hinted g1 projective add

* Upgrade to v3 graph, add musig2 signing, improve client (#91)

* πŸ‘©β€πŸ« Reorganize bridge modules

* πŸ€“ Stub out more of implementation components

* Fix compilation error

* remove invalid secret and use existing unspendable pubkey

* 🫣 Progress

* 🏏 Fix errors, create alts

* 🎱 Cargo fix

* ✊ Progress

* πŸ‘ Cargo fix

* πŸ… Post meeting

* 😻 Complete txns

* 😼 Work of refactoring

* πŸ“¦ Cargo fix

* 😡 Progress

* 😐 Progress

* πŸ“¦ Cargo fix

* πŸš€ Progress

* πŸ€“ Progress

* πŸ‘¨β€πŸš€ Progress

* βœ‚οΈ Cargo clippy

* πŸ₯ rustfmt

* πŸ™ Progress

* πŸ‘¨β€πŸ³ rustfmt

* πŸ‘©β€βš–οΈ Progress

* πŸ”₯ Fix output amounts

* 🧼 Fix op code

* 🀑 fmt

* ❓ Added questions

* Add `peg_in_confirm` and `peg_in_refund` tests

* finish assert tx and add unit test

* fixed bugs and added test cases to disprove tx and burn tx

* fix control block error

* peg in confirm & test

* Refactor `Input` into a struct

* 😼 Fix pub key error by adding new Bitcoin PubKey

* pub key compressed or uncompressed error

* fixed burn tx test case for timelock and added more test cases

* take1 timelock fix & unit test

* clean up

* fixed import

* `peg_in_refund` and `connector_a` fixes

* Add `challenge` tx test

* πŸ€• Refactor context

* 🫣 Fix

* 🧼 Fix formatting

* Fix formatting

* Add todo

* Fix function call

* Fix type

* Fix formatting

* Update unspendable

* Format

* Fix burn

* move tests in tests folder

* prettier

* Fixed compilation errors and moved test cases to tests/

* refactoring

* refactoring connector b

* Update messages

* Rust fmt

* Refactor connectors

* Format

* Start updating tests

* Extract network setting from lower level functions

* continue refactoring

* Reorder network param

* Fix tests

* Refactor tests

* Fix formatting

* Format tests

* Fix up a few items

* Implement trait for connectors

* Always use the network provided in context

* Finalize the kick-off tx

* fixed compilation erros

* fix lint

* refactoring tests

* fix lint

* Rename variables

* COmment out incomplete signing code

* Refactor signing

* Restructure components into transactions and connectors

* Rename p2wpkh

* Format

* Replace connector 2 pub key with operator pub key

* Fixes (#23)

* Add codeowners (#24)

* Txn Serialization (#11)

* Fix compilation errors and run rustfmt

* add serialization trait

* add test

* use serde

* remove old version

* eleminate merge differences

* derive serialization for all txns

* Format

* Reorder imports

* feat: use consensus encode

---------

Co-authored-by: ivebeenherebefore <[email protected]>
Co-authored-by: stardustPandora <[email protected]>

* [WIP] Refactor pre-signing functions (#22)

* Refactor pre-signing functions

* Refactor remaining transactions

* Refactor

---------

Co-authored-by: ivebeenherebefore <[email protected]>

* Refactor contexts

* Refactor signing flow

* Fix some compile time issues

* Fix mutable borrow

* Update test setup

* Finish fixing all compile errors

* Refactor contexts (#26)

* Refactor contexts

* Refactor signing flow

* Fix some compile time issues

* Fix mutable borrow

* Update test setup

* Finish fixing all compile errors

* Rename assert leaf to disprove leaf

* Add integration tests (#21)

* Add peg-in integration tests

* Adjust peg-in integration tests

* Fix `add_input_output()` in disprove tx

* Remove input placeholder from challenge tx

* Add kick_off test and integration tests for challenge and disprove

* Add `take1` and `take2` tests

* Refactor tests and adding outputs

* Allow multiple inputs and one output in `challenge` tx

* Refactor adding inputs and output to `challenge` tx

* Refactor integration challenge test to use `add_inputs_and_output()` function

* Allow adding inputs only once in `challenge` tx (#28)

* Allow adding inputs only once in `challenge` tx

* Fix error msg

---------

Co-authored-by: ivebeenherebefore <[email protected]>

* Start on graphs (#27)

* Start on graphs

* Refactor into graph structs

* Commit pseudocode

* Fix compile errors

* Remove graph file

* Fix more warnings work on client

* Rc create graph client (#30)

* Commit progress

* Commit progress

* Start on client (#31)

* Commit progress

* Commit progress

* Merge and fix compile errors

* Update code to be compatible with Script changes

* Small changes to client

* [WIP] Rc create graph - implementation (#29)

* Start on graphs

* Refactor into graph structs

* Commit pseudocode

* Fix compile errors

* Remove graph file

* Fix more warnings work on client

* Fix tests

* Add constants file

* Implement `burn` in `peg_out` graph

* Implement `peg_out` graph remaining txs

---------

Co-authored-by: ivebeenherebefore <[email protected]>

* Add serialization and deserialization to graphs

* Refactor tests to use helper outpoint method (#32)

* Remove unused variables

* Add peg-in statuses and peg-out statuses (#34)

* Work on client syncing (#33)

* Refactor serialization

* Work on integrating Amazon S3

* Finished AWS reading and writing

* Make AWS s3 optional

* Fix test

* Update error handling

* Update warning message

* Delete obsolete files

* Refactor and clean up unused variables

* Remove unused variables

* Try to implement formatter for statuses (#35)

* Try to implement formatter for statuses

* Fix result error

* Remove status

* Delete codeowners

* Add peg out graph methods to client

* Implement `peg-in` graph tx functions (#36)

* Implement `peg-in` graph tx functions

* Use timelock constants

* Verify funding inputs at the beginnin of every integration test (#38)

* Add human-readable statuses (#39)

* Add human-readable statuses

* Rephrase statuses

* feat: refine evm address encode (#40)

Co-authored-by: stardustPandora <[email protected]>

* Add merge + validation POC (#37)

* Add merge POC

* Work on validation

* Add graph validation

* Format

* Add todo comment

* Add todo comment

* `read()`, `save()` and `merge()` implementation

---------

Co-authored-by: ivebeenherebefore <[email protected]>
Co-authored-by: StarDumpling <[email protected]>

* Add ftp and ftps support (#42)

* Add merge POC

* Work on validation

* Add graph validation

* Format

* Add todo comment

* Add todo comment

* Work on adding ftp and ftps

* Fix compilation issues

* Clean up cargo deps

* Add sftp (#44)

* Add sftp support

* Fully integrate sftp

---------

Co-authored-by: ivebeenherebefore <[email protected]>

---------

Co-authored-by: ivebeenherebefore <[email protected]>

* Add debug message to transaction verification

* Ftp tests (#45)

* Add progress

* Continue debugging

* Fix ftp lib

---------

Co-authored-by: ivebeenherebefore <[email protected]>

* Peg out test (#43)

* add peg out test

* updated with inscription

* use bitcoin hash

* format

* Add `validate()` test cases (#47)

* Add `merge()` test cases (#48)

* Add ftp tests (#52)

* Add progress

* Continue debugging

* Fix ftp lib

* Try russh

* Rollback russh

* Disable ftp datastores for now

---------

Co-authored-by: ivebeenherebefore <[email protected]>

* update test values (#53)

* add evm address for depositor (#54)

* Add MuSig2 (#41)

* Add merge POC

* Work on validation

* Add graph validation

* Format

* Add todo comment

* Add todo comment

* Add MuSig2 nonce handling

* Move nonce handling down to transaction layer, use common key types

* Add partial signatures, refactor

* Add a MuSig2 E2E test

* Update tests after `setup_test()` change

* Add signer key generation sample

* Add n-of-n pubkey generation

* Flesh out the MuSig2 test

* Refactor the client

* Refactor

* Pass the list of keys by reference in the client 'constructor'

* Add a TODO

* Clean up

* Clean up

* Refactored Musig2 (#46)

* Work on refactor

* Update N of N generation

* Work on refactor

* Work on applying nonce and signatures to other txns

* Commit changes

* Finish refactor and clean up

* Fix tests

---------

Co-authored-by: ivebeenherebefore <[email protected]>

* Refactor

* Lint

* Merge musig2 nonces and signatures, save local files to folders

* Save private nonces to local file

* Update some method names

* Wrap musig2 signature into taproot signature

* Change n of n p2wsh to p2tr (#50)

* Change n of n p2wsh to p2tr

* Fix consensus hex

* Fix leaf index

---------

Co-authored-by: ivebeenherebefore <[email protected]>

* Wait for peg-in deposit tx to be mined in musig2 test

* Fix merge

---------

Co-authored-by: ivebeenherebefore <[email protected]>
Co-authored-by: justin-elementlabs <[email protected]>
Co-authored-by: StarDumpling <[email protected]>

* Add client peg-out tests (#57)

* Refactor num blocks per x weeks constant

* Add client peg-out tests

* Read private data from local file (#56)

* Reduce console verbosity + reword messages for clarity

* Read private data from local file

* Remove unused function

---------

Co-authored-by: StarDumpling <[email protected]>

* Add directories to data stores, add `destination_network` (#60)

* Add public nonce verification (#63)

* Add nonce signatures

* OsRng is safe to use

* Do not fetch data when instantiating the `BitVMClient`

* Add pub nonce verification

* Rename test file `musig2.rs` to `musig2_peg_in.rs` for consistency

* Do not fail fast on pubnonce verification (get all the failures before returning)

* Send error messages to the error output

* L2 chain adaptors (#58)

* add l2 chain adaptors

* Fix compilation error

* debug pegin events

* feat: add pegin event

* type fixes in peg in event

* fix u256 to amount cast

* add peg out burnt event

* checks length of results

---------

Co-authored-by: ivebeenherebefore <[email protected]>
Co-authored-by: stardustPandora <[email protected]>

* Graph v3 merged (#59)

* Add merge POC

* Work on validation

* Add graph validation

* Format

* Add todo comment

* Add todo comment

* Add MuSig2 nonce handling

* Move nonce handling down to transaction layer, use common key types

* Add partial signatures, refactor

* Add a MuSig2 E2E test

* Update tests after `setup_test()` change

* Add signer key generation sample

* Add n-of-n pubkey generation

* Flesh out the MuSig2 test

* Refactor the client

* Refactor

* Pass the list of keys by reference in the client 'constructor'

* Add a TODO

* Clean up

* Clean up

* Refactored Musig2 (#46)

* Work on refactor

* Update N of N generation

* Work on refactor

* Work on applying nonce and signatures to other txns

* Commit changes

* Finish refactor and clean up

* Fix tests

---------

Co-authored-by: ivebeenherebefore <[email protected]>

* Refactor

* Lint

* Merge musig2 nonces and signatures, save local files to folders

* Save private nonces to local file

* Update some method names

* Wrap musig2 signature into taproot signature

* Change n of n p2wsh to p2tr (#50)

* Change n of n p2wsh to p2tr

* Fix consensus hex

* Fix leaf index

---------

Co-authored-by: ivebeenherebefore <[email protected]>

* Start v3 graph

* Work on graph v3

* Work on changing connectors and rename _d

* Rename leafs

* Work on transactions

* Finish updating txns to v3 graph

* Remove comment

* Refactor inputs

* Update graphs

* Update status check

* Update peg out graph

* Start updating status

* Graph v3 status progress

* Finish peg out status update

* Update tests

* Remove lib

* Fix integration tests

* Refactor

* Revert unneeded changes

* Update musig tests

* Update musig2 peg out tests

* Fix issues

* Fix merging

* Fix compile errors

* Fixes

---------

Co-authored-by: ivebeenherebefore <[email protected]>
Co-authored-by: franklynot <[email protected]>
Co-authored-by: StarDumpling <[email protected]>

* Nonce signature tests (#67)

* Add nonce signatures

* OsRng is safe to use

* Do not fetch data when instantiating the `BitVMClient`

* Add pub nonce verification

* Rename test file `musig2.rs` to `musig2_peg_in.rs` for consistency

* Do not fail fast on pub…
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants