Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feat/tests for atomic swap #72

Merged
merged 23 commits into from
Jul 18, 2024
Merged

Feat/tests for atomic swap #72

merged 23 commits into from
Jul 18, 2024

Conversation

DhananjayPurohit
Copy link
Contributor

No description provided.

@tomt1664 tomt1664 merged commit d2fb048 into dev Jul 18, 2024
2 checks passed
ssantos21 added a commit that referenced this pull request Jul 18, 2024
---------

Co-authored-by: S. Santos <[email protected]>
tomt1664 added a commit that referenced this pull request Aug 2, 2024
* fix uuid

* Update clients and tests to get token from the server

* keylist endpoint

* Add tor connection to the rust client

* Add tor connection to the nodeJS client

* Add token command to standalone rust client

* add tor proxy

* fix config

* Fix clients/standalone-rust/Settings.toml

* Add first version of REact client

* Add wallet.db to gitignore

* Remove wallet.db

* Add conf file and Tor support to react client

* Organize better the REact client

* Centralize the Electrum client management, you simplifying the process of connecting to and disconnecting from the Electrum server

* Add broadcast backup function

* Add withdrawal function

* Add transfer-send function

* Add transfer-receive function

* Added automatic coin update function, but is not being used because asynchronous calls are not currently supported

* Changing React application structure to handle concurrency

* Changing React application structure to handle concurrency

* Changing React application structure to handle concurrency

* Changing React application structure to handle concurrency

* Changing React application structure to handle concurrency

* Changing React application structure to handle concurrency

* Changing React application structure to handle concurrency

* Changing React application structure to handle concurrency

* Changing React application structure to handle concurrency

* Changing React application structure to handle concurrency

* Changing React application structure to handle concurrency

* Changing React application structure to handle concurrency

* Changing React application structure to handle concurrency

* Changing React application structure to handle concurrency

* add token server

* fixes

* Remove thunks

* Improve backup transactions database and view

* Improve GUI

* Fix some warnings

* Fix some warnings

* Improve update function

* Improve GUI

* Remove DB transaction to avoid race condition

* config

* config

* add token server

* Update tokens.md

* Update Token struct

* Add WASM packages

* Improve UI

* Change react-app config file

* chore: add changes to get locofy-ui working

* chore: add key to wizard

* chore: add deposit process ui

* chore: add token ui logic

* chore: huge locofy ai changes, remove old code as wasn't scalable, learned new locofy formats

* chore: fix up icons

* chore: hook token info card and deposit page

* chore: update token card UI

* chore: add more validation to deposit process, and modal windows

* chore: update deposit pages

* add expiry time

* fix

* fix

* chore: finish the tab ui logic

* chore: add changes to deposit, hook up live methods to the deposit process, add loading spinners and validation

* add key check

* fix serialisation

* chore: add token insertion into wallet object, various other changes, wasm error in deposit 2

* chore: fix wallet load code

* chore: add back in validation for wizard page 2, cleanup the main header panel ui

* chore: refactor, add a logged in wallet hook, add validation to wallet page 1

* chore: show seed key in wizard states

* chore: fix error if coins / activities is null

* Modify Token struct

* chore: fix error message ordering in wizard page

* chore: move order of destructure variable in main page

* chore: fix coin item, display some info to user about their statecoin

* chore: add changes to main header panel, add up btc values

* chore: fix deposit addresses

* chore: change to testnet server, add withdraw ui components

* chore: fix more withdrawal logic, fix  bug in deposit 3 page

* chore: do not show withdrawn coins

* chore: add send page and logic

* chore: fix receive page

* chore: fix activities table

* chore: fix some navigation errors and settings page errors

* Add Settings property to wallet

* chore: add password encrypted db wallets, add error message handling for it, remove certain coins from UI

* chore: add backup from file/load into db

* chore: add changes to main load wallet

* chore: get latest password

* chore: change settings page

* chore: remove manage transactions from settings page as will be in modal

* chore: add settings ui hooked with redux state and notifications

* chore: add the reloading of wallets within load wallet page

* chore: remove debugging, add check on wizard for encrypted wallets instead of live wallets

* chore: fix loading from backup file to include backup tx

* chore: add more responsive main bar page, and add modal ui

* chore: fix coin modal and help page

* chore: remove amount

* chore: downgrade sql

* chore: enable debug mode

* chore: replace icon of app

* chore: huge fix for resources in wallet

* chore: add build

* chore: add dev branch

* chore: fix clearnet config issues, start a build

* chore: change actions

* chore: remove mainnet

* chore: remove mainnet

* chore: change github actions

* chore: change app icon

* chore: change app icon

* chore: remove unused files

* version: update to 0.1.1

* DB file path

* Update atomic_transfer.md

* Update atomic_transfer.md

typo

* Update atomic_transfer.md

Fixed typo

* Update atomic_transfer.md

* Update protocol.md

* Update transfer_sender_sequence.md

* Update transfer_receiver_sequence.md

* Update transfer_sender_sequence.md

* Update transfer_receiver_sequence.md

* Update protocol.md

* Add ChaCha20-Poly1305 encryption scheme

This commit adds ChaCha20-Poly1305 algorithm to be used
to encrypt any enclave data instead of using the SGX built-in
functions.
This way, the data can be decrypted on another machine as long
the same encryption key be used.
SGX functions are still used to seal and unseal the encryption key.

* Add password to add-mnemonic call

* Add Dockerfiles to SGX SIM mode

* Add docker files to the server

* Update protocol.md

* Update README.md

* Update deposit_sequence.md

* Update transfer_sender_sequence.md

* Update transfer_receiver_sequence.md

* Add docker files to the enclave - HW mode

* Remove r2 and blind commitments

* Change HRP to 'ml' and 'tml'

* Add address validation and remove standalone rust client

* Update WASM and rename lib

* Update atomic_transfer.md

* Update atomic_transfer.md

* Add UniFFI

* Re-add nodejs client

* Add kotlin client

* Use TransferReceiverPostResponsePayload

* Add Atomic transfer

* Use statechain_info to verify transfers

* Add automatic seed generation and replication

* Update react-app package.json

* Increase the maximum amount of time to spend waiting for a connection to 30s

* Allow coin to be withdrawn if in IN_TRANSFER status

* Fix minor errors regarding IN_TRANSFER status

* Update Kotlin client

* fix: server config with env for mercury & token server

* feat: add docker build for github actions

* feat: add dev branch to yaml

* fix: token server port

* fix: expose port in dockerfile for token-server

* fix: move Rocket.toml from sub folder to parent folder

* fix: add tls feature to sqlx

* fix: route for endpoint /info

* feat: add explorer

* feat: add keylist cronjob

* fix: version for docker images in ci/cd

* fix: add dev2 branch to ci/cd

* fix: import error with token server

* fix: mercury server start cmd

* fix: start cmd for mercury server

* debug: mercury server dockerfile

* fix: config for mercury and token server

* fix: mercury server dockerfile

* fix: dockerfile for mercury server

* Fix the mainnet address conversion

* Add address reuse functionality

* Create rust client lib

* Create nodejs client lib

* Update ECIES package and restructure project folders

* Add a new test file that uses the nodejs lib

* Fix docker error preventing Mercury server from starting

* Move signature validation from rust client lib to Mercury lib

* Refactor `clients/libs/rust/src/transfer_receiver.rs`. No change in behavior

* Use `validateSignatureScheme` in `clients/libs/nodejs/transfer_receive.js`

* Use `validateSignatureScheme` in `clients/apps/kotlin/TransferReceive.kt`

* Add web client lib

* Add `max_fee_rate` setting to rust lib

* Add `max_fee_rate` setting to nodejs lib

* Create client_guide.md

* Add `max_fee_rate` setting to web lib

* Update client_guide.md

* Update client_guide.md

* Update client_guide.md

* Add `max_fee_rate` setting to Kotlin client

* Add multiple enclave support

* Remove outdated react-app

* Handle fee rate < 0 in broadcast command

* Feat/fee unit

* Add integration tests on regtest mode
-------
Co-authored-by: DhananjayPurohit <[email protected]>

* Add Lightning Latch atomic transfer

* Improve transfer message verification

* Add basic Rust integration tests

* Add `batchtimeout` to `/info/config`

* fix: directory for Rocket.toml

* feat: add tests for coin expiry

* fix: add test for transfer-sender that make coin expired by sending

* fix: assertion for broadcast tx

* fix: add dev3 for integration tests

* Add TB02 - Transfer Address Reuse

* Add TM01 - Sender Double Spends

* chore: remove dev3 branch from integration tests

* Add TA01 - 'signSecond not called' and return the pubnonce if the challenge is null

* Refactor transfer-receive to make it non-blocking

* Refactor transfer-receive in nodeJS library to make it non-blocking

* Adjust tests to the new transferReceive function

* Add web lib tests

* Fix minor error in nodeJS transfer-receive

* Add lightning latch functions to the nodeJS client

* Add Rust lightning latch test

* Add nodeJs lightning latch test

* Feat/tests for atomic swap (#72)

---------

Co-authored-by: S. Santos <[email protected]>

* Add lightning latch functions to web client

* Improve nodeJS API parameters

* Change fee rate to f64 instead of u64

* fix: ci build on main branch only (#78)

* Handle multiple deposit transactions

* Add multiple deposit support to the nodeJS client

* Update test_basic_workflow2 to support duplicated deposits

* Update web client to support multiple deposits

* Automate web client testing

* Add Vitest to web client tests

---------

Co-authored-by: Thomas Trevethan <[email protected]>
Co-authored-by: S. Santos <[email protected]>
Co-authored-by: rk16449 <[email protected]>
Co-authored-by: rk16449 <[email protected]>
Co-authored-by: Nicholas Gregory <[email protected]>
Co-authored-by: DhananjayPurohit <[email protected]>
Co-authored-by: S. Santos <[email protected]>
DhananjayPurohit added a commit that referenced this pull request Aug 21, 2024
* fix uuid

* Update clients and tests to get token from the server

* keylist endpoint

* Add tor connection to the rust client

* Add tor connection to the nodeJS client

* Add token command to standalone rust client

* add tor proxy

* fix config

* Fix clients/standalone-rust/Settings.toml

* Add first version of REact client

* Add wallet.db to gitignore

* Remove wallet.db

* Add conf file and Tor support to react client

* Organize better the REact client

* Centralize the Electrum client management, you simplifying the process of connecting to and disconnecting from the Electrum server

* Add broadcast backup function

* Add withdrawal function

* Add transfer-send function

* Add transfer-receive function

* Added automatic coin update function, but is not being used because asynchronous calls are not currently supported

* Changing React application structure to handle concurrency

* Changing React application structure to handle concurrency

* Changing React application structure to handle concurrency

* Changing React application structure to handle concurrency

* Changing React application structure to handle concurrency

* Changing React application structure to handle concurrency

* Changing React application structure to handle concurrency

* Changing React application structure to handle concurrency

* Changing React application structure to handle concurrency

* Changing React application structure to handle concurrency

* Changing React application structure to handle concurrency

* Changing React application structure to handle concurrency

* Changing React application structure to handle concurrency

* Changing React application structure to handle concurrency

* add token server

* fixes

* Remove thunks

* Improve backup transactions database and view

* Improve GUI

* Fix some warnings

* Fix some warnings

* Improve update function

* Improve GUI

* Remove DB transaction to avoid race condition

* config

* config

* add token server

* Update tokens.md

* Update Token struct

* Add WASM packages

* Improve UI

* Change react-app config file

* chore: add changes to get locofy-ui working

* chore: add key to wizard

* chore: add deposit process ui

* chore: add token ui logic

* chore: huge locofy ai changes, remove old code as wasn't scalable, learned new locofy formats

* chore: fix up icons

* chore: hook token info card and deposit page

* chore: update token card UI

* chore: add more validation to deposit process, and modal windows

* chore: update deposit pages

* add expiry time

* fix

* fix

* chore: finish the tab ui logic

* chore: add changes to deposit, hook up live methods to the deposit process, add loading spinners and validation

* add key check

* fix serialisation

* chore: add token insertion into wallet object, various other changes, wasm error in deposit 2

* chore: fix wallet load code

* chore: add back in validation for wizard page 2, cleanup the main header panel ui

* chore: refactor, add a logged in wallet hook, add validation to wallet page 1

* chore: show seed key in wizard states

* chore: fix error if coins / activities is null

* Modify Token struct

* chore: fix error message ordering in wizard page

* chore: move order of destructure variable in main page

* chore: fix coin item, display some info to user about their statecoin

* chore: add changes to main header panel, add up btc values

* chore: fix deposit addresses

* chore: change to testnet server, add withdraw ui components

* chore: fix more withdrawal logic, fix  bug in deposit 3 page

* chore: do not show withdrawn coins

* chore: add send page and logic

* chore: fix receive page

* chore: fix activities table

* chore: fix some navigation errors and settings page errors

* Add Settings property to wallet

* chore: add password encrypted db wallets, add error message handling for it, remove certain coins from UI

* chore: add backup from file/load into db

* chore: add changes to main load wallet

* chore: get latest password

* chore: change settings page

* chore: remove manage transactions from settings page as will be in modal

* chore: add settings ui hooked with redux state and notifications

* chore: add the reloading of wallets within load wallet page

* chore: remove debugging, add check on wizard for encrypted wallets instead of live wallets

* chore: fix loading from backup file to include backup tx

* chore: add more responsive main bar page, and add modal ui

* chore: fix coin modal and help page

* chore: remove amount

* chore: downgrade sql

* chore: enable debug mode

* chore: replace icon of app

* chore: huge fix for resources in wallet

* chore: add build

* chore: add dev branch

* chore: fix clearnet config issues, start a build

* chore: change actions

* chore: remove mainnet

* chore: remove mainnet

* chore: change github actions

* chore: change app icon

* chore: change app icon

* chore: remove unused files

* version: update to 0.1.1

* DB file path

* Update atomic_transfer.md

* Update atomic_transfer.md

typo

* Update atomic_transfer.md

Fixed typo

* Update atomic_transfer.md

* Update protocol.md

* Update transfer_sender_sequence.md

* Update transfer_receiver_sequence.md

* Update transfer_sender_sequence.md

* Update transfer_receiver_sequence.md

* Update protocol.md

* Add ChaCha20-Poly1305 encryption scheme

This commit adds ChaCha20-Poly1305 algorithm to be used
to encrypt any enclave data instead of using the SGX built-in
functions.
This way, the data can be decrypted on another machine as long
the same encryption key be used.
SGX functions are still used to seal and unseal the encryption key.

* Add password to add-mnemonic call

* Add Dockerfiles to SGX SIM mode

* Add docker files to the server

* Update protocol.md

* Update README.md

* Update deposit_sequence.md

* Update transfer_sender_sequence.md

* Update transfer_receiver_sequence.md

* Add docker files to the enclave - HW mode

* Remove r2 and blind commitments

* Change HRP to 'ml' and 'tml'

* Add address validation and remove standalone rust client

* Update WASM and rename lib

* Update atomic_transfer.md

* Update atomic_transfer.md

* Add UniFFI

* Re-add nodejs client

* Add kotlin client

* Use TransferReceiverPostResponsePayload

* Add Atomic transfer

* Use statechain_info to verify transfers

* Add automatic seed generation and replication

* Update react-app package.json

* Increase the maximum amount of time to spend waiting for a connection to 30s

* Allow coin to be withdrawn if in IN_TRANSFER status

* Fix minor errors regarding IN_TRANSFER status

* Update Kotlin client

* fix: server config with env for mercury & token server

* feat: add docker build for github actions

* feat: add dev branch to yaml

* fix: token server port

* fix: expose port in dockerfile for token-server

* fix: move Rocket.toml from sub folder to parent folder

* fix: add tls feature to sqlx

* fix: route for endpoint /info

* feat: add explorer

* feat: add keylist cronjob

* fix: version for docker images in ci/cd

* fix: add dev2 branch to ci/cd

* fix: import error with token server

* fix: mercury server start cmd

* fix: start cmd for mercury server

* debug: mercury server dockerfile

* fix: config for mercury and token server

* fix: mercury server dockerfile

* fix: dockerfile for mercury server

* Fix the mainnet address conversion

* Add address reuse functionality

* Create rust client lib

* Create nodejs client lib

* Update ECIES package and restructure project folders

* Add a new test file that uses the nodejs lib

* Fix docker error preventing Mercury server from starting

* Move signature validation from rust client lib to Mercury lib

* Refactor `clients/libs/rust/src/transfer_receiver.rs`. No change in behavior

* Use `validateSignatureScheme` in `clients/libs/nodejs/transfer_receive.js`

* Use `validateSignatureScheme` in `clients/apps/kotlin/TransferReceive.kt`

* Add web client lib

* Add `max_fee_rate` setting to rust lib

* Add `max_fee_rate` setting to nodejs lib

* Create client_guide.md

* Add `max_fee_rate` setting to web lib

* Update client_guide.md

* Update client_guide.md

* Update client_guide.md

* Add `max_fee_rate` setting to Kotlin client

* Add multiple enclave support

* Remove outdated react-app

* Handle fee rate < 0 in broadcast command

* Feat/fee unit

* Add integration tests on regtest mode
-------
Co-authored-by: DhananjayPurohit <[email protected]>

* Add Lightning Latch atomic transfer

* Improve transfer message verification

* Add basic Rust integration tests

* Add `batchtimeout` to `/info/config`

* fix: directory for Rocket.toml

* feat: add tests for coin expiry

* fix: add test for transfer-sender that make coin expired by sending

* fix: assertion for broadcast tx

* fix: add dev3 for integration tests

* Add TB02 - Transfer Address Reuse

* Add TM01 - Sender Double Spends

* chore: remove dev3 branch from integration tests

* Add TA01 - 'signSecond not called' and return the pubnonce if the challenge is null

* Refactor transfer-receive to make it non-blocking

* Refactor transfer-receive in nodeJS library to make it non-blocking

* Adjust tests to the new transferReceive function

* Add web lib tests

* Fix minor error in nodeJS transfer-receive

* Add lightning latch functions to the nodeJS client

* Add Rust lightning latch test

* Add nodeJs lightning latch test

* Feat/tests for atomic swap (#72)

---------

Co-authored-by: S. Santos <[email protected]>

* Add lightning latch functions to web client

* Improve nodeJS API parameters

* Change fee rate to f64 instead of u64

* fix: ci build on main branch only (#78)

* Handle multiple deposit transactions

* Add multiple deposit support to the nodeJS client

* Update test_basic_workflow2 to support duplicated deposits

* Update web client to support multiple deposits

* Automate web client testing

* Add Vitest to web client tests

---------

Co-authored-by: Thomas Trevethan <[email protected]>
Co-authored-by: S. Santos <[email protected]>
Co-authored-by: rk16449 <[email protected]>
Co-authored-by: rk16449 <[email protected]>
Co-authored-by: Nicholas Gregory <[email protected]>
Co-authored-by: DhananjayPurohit <[email protected]>
Co-authored-by: S. Santos <[email protected]>
tomt1664 added a commit that referenced this pull request Aug 28, 2024
* Organize better the REact client

* Centralize the Electrum client management, you simplifying the process of connecting to and disconnecting from the Electrum server

* Add broadcast backup function

* Add withdrawal function

* Add transfer-send function

* Add transfer-receive function

* Added automatic coin update function, but is not being used because asynchronous calls are not currently supported

* Changing React application structure to handle concurrency

* Changing React application structure to handle concurrency

* Changing React application structure to handle concurrency

* Changing React application structure to handle concurrency

* Changing React application structure to handle concurrency

* Changing React application structure to handle concurrency

* Changing React application structure to handle concurrency

* Changing React application structure to handle concurrency

* Changing React application structure to handle concurrency

* Changing React application structure to handle concurrency

* Changing React application structure to handle concurrency

* Changing React application structure to handle concurrency

* Changing React application structure to handle concurrency

* Changing React application structure to handle concurrency

* add token server

* fixes

* Remove thunks

* Improve backup transactions database and view

* Improve GUI

* Fix some warnings

* Fix some warnings

* Improve update function

* Improve GUI

* Remove DB transaction to avoid race condition

* config

* config

* add token server

* Update tokens.md

* Update Token struct

* Add WASM packages

* Improve UI

* Change react-app config file

* chore: add changes to get locofy-ui working

* chore: add key to wizard

* chore: add deposit process ui

* chore: add token ui logic

* chore: huge locofy ai changes, remove old code as wasn't scalable, learned new locofy formats

* chore: fix up icons

* chore: hook token info card and deposit page

* chore: update token card UI

* chore: add more validation to deposit process, and modal windows

* chore: update deposit pages

* add expiry time

* fix

* fix

* chore: finish the tab ui logic

* chore: add changes to deposit, hook up live methods to the deposit process, add loading spinners and validation

* add key check

* fix serialisation

* chore: add token insertion into wallet object, various other changes, wasm error in deposit 2

* chore: fix wallet load code

* chore: add back in validation for wizard page 2, cleanup the main header panel ui

* chore: refactor, add a logged in wallet hook, add validation to wallet page 1

* chore: show seed key in wizard states

* chore: fix error if coins / activities is null

* Modify Token struct

* chore: fix error message ordering in wizard page

* chore: move order of destructure variable in main page

* chore: fix coin item, display some info to user about their statecoin

* chore: add changes to main header panel, add up btc values

* chore: fix deposit addresses

* chore: change to testnet server, add withdraw ui components

* chore: fix more withdrawal logic, fix  bug in deposit 3 page

* chore: do not show withdrawn coins

* chore: add send page and logic

* chore: fix receive page

* chore: fix activities table

* chore: fix some navigation errors and settings page errors

* Add Settings property to wallet

* chore: add password encrypted db wallets, add error message handling for it, remove certain coins from UI

* chore: add backup from file/load into db

* chore: add changes to main load wallet

* chore: get latest password

* chore: change settings page

* chore: remove manage transactions from settings page as will be in modal

* chore: add settings ui hooked with redux state and notifications

* chore: add the reloading of wallets within load wallet page

* chore: remove debugging, add check on wizard for encrypted wallets instead of live wallets

* chore: fix loading from backup file to include backup tx

* chore: add more responsive main bar page, and add modal ui

* chore: fix coin modal and help page

* chore: remove amount

* chore: downgrade sql

* chore: enable debug mode

* chore: replace icon of app

* chore: huge fix for resources in wallet

* chore: add build

* chore: add dev branch

* chore: fix clearnet config issues, start a build

* chore: change actions

* chore: remove mainnet

* chore: remove mainnet

* chore: change github actions

* chore: change app icon

* chore: change app icon

* chore: remove unused files

* version: update to 0.1.1

* DB file path

* Update atomic_transfer.md

* Update atomic_transfer.md

typo

* Update atomic_transfer.md

Fixed typo

* Update atomic_transfer.md

* Update protocol.md

* Update transfer_sender_sequence.md

* Update transfer_receiver_sequence.md

* Update transfer_sender_sequence.md

* Update transfer_receiver_sequence.md

* Update protocol.md

* Add ChaCha20-Poly1305 encryption scheme

This commit adds ChaCha20-Poly1305 algorithm to be used
to encrypt any enclave data instead of using the SGX built-in
functions.
This way, the data can be decrypted on another machine as long
the same encryption key be used.
SGX functions are still used to seal and unseal the encryption key.

* Add password to add-mnemonic call

* Add Dockerfiles to SGX SIM mode

* Add docker files to the server

* Update protocol.md

* Update README.md

* Update deposit_sequence.md

* Update transfer_sender_sequence.md

* Update transfer_receiver_sequence.md

* Add docker files to the enclave - HW mode

* Remove r2 and blind commitments

* Change HRP to 'ml' and 'tml'

* Add address validation and remove standalone rust client

* Update WASM and rename lib

* Update atomic_transfer.md

* Update atomic_transfer.md

* Add UniFFI

* Re-add nodejs client

* Add kotlin client

* Use TransferReceiverPostResponsePayload

* Add Atomic transfer

* Use statechain_info to verify transfers

* Add automatic seed generation and replication

* Update react-app package.json

* Increase the maximum amount of time to spend waiting for a connection to 30s

* Allow coin to be withdrawn if in IN_TRANSFER status

* Fix minor errors regarding IN_TRANSFER status

* Update Kotlin client

* fix: server config with env for mercury & token server

* feat: add docker build for github actions

* feat: add dev branch to yaml

* fix: token server port

* fix: expose port in dockerfile for token-server

* fix: move Rocket.toml from sub folder to parent folder

* fix: add tls feature to sqlx

* fix: route for endpoint /info

* feat: add explorer

* feat: add keylist cronjob

* fix: version for docker images in ci/cd

* fix: add dev2 branch to ci/cd

* fix: import error with token server

* fix: mercury server start cmd

* fix: start cmd for mercury server

* debug: mercury server dockerfile

* fix: config for mercury and token server

* fix: mercury server dockerfile

* fix: dockerfile for mercury server

* Fix the mainnet address conversion

* Add address reuse functionality

* Create rust client lib

* Create nodejs client lib

* Update ECIES package and restructure project folders

* Add a new test file that uses the nodejs lib

* Fix docker error preventing Mercury server from starting

* Move signature validation from rust client lib to Mercury lib

* Refactor `clients/libs/rust/src/transfer_receiver.rs`. No change in behavior

* Use `validateSignatureScheme` in `clients/libs/nodejs/transfer_receive.js`

* Use `validateSignatureScheme` in `clients/apps/kotlin/TransferReceive.kt`

* Add web client lib

* Add `max_fee_rate` setting to rust lib

* Add `max_fee_rate` setting to nodejs lib

* Create client_guide.md

* Add `max_fee_rate` setting to web lib

* Update client_guide.md

* Update client_guide.md

* Update client_guide.md

* Add `max_fee_rate` setting to Kotlin client

* Add multiple enclave support

* Remove outdated react-app

* Handle fee rate < 0 in broadcast command

* Feat/fee unit

* Add integration tests on regtest mode
-------
Co-authored-by: DhananjayPurohit <[email protected]>

* Add Lightning Latch atomic transfer

* Improve transfer message verification

* Add basic Rust integration tests

* Add `batchtimeout` to `/info/config`

* fix: directory for Rocket.toml

* feat: add tests for coin expiry

* fix: add test for transfer-sender that make coin expired by sending

* fix: assertion for broadcast tx

* fix: add dev3 for integration tests

* Add TB02 - Transfer Address Reuse

* Add TM01 - Sender Double Spends

* chore: remove dev3 branch from integration tests

* Add TA01 - 'signSecond not called' and return the pubnonce if the challenge is null

* Refactor transfer-receive to make it non-blocking

* Refactor transfer-receive in nodeJS library to make it non-blocking

* Adjust tests to the new transferReceive function

* Add web lib tests

* Fix minor error in nodeJS transfer-receive

* Add lightning latch functions to the nodeJS client

* Add Rust lightning latch test

* Add nodeJs lightning latch test

* Feat/tests for atomic swap (#72)

---------

Co-authored-by: S. Santos <[email protected]>

* Add lightning latch functions to web client

* Improve nodeJS API parameters

* Change fee rate to f64 instead of u64

* fix: ci build on main branch only (#78)

* Handle multiple deposit transactions

* Add multiple deposit support to the nodeJS client

* Update test_basic_workflow2 to support duplicated deposits

* Update web client to support multiple deposits

* Automate web client testing

* Add Vitest to web client tests

* Update Dockerfile (#81)

* Update Dockerfile

* Create Rocket2.toml

* Update Dockerfile

* Revert "Update Dockerfile (#81)" (#83)

This reverts commit e37b627.

* Add GET `/transfer/paymenthash/<batch_id>`

* Add payment hash verification to nodeJS client

* Fix/dockerfile token server (#85)

* fix: token server dockerfile

* fix: build release for token server

* fix: upgrade sqlx version

* Add payment hash verification to web client

* Add log crate to the server

* fix: The pre-image is now only revealed if the transfer is unlocked.

* Set getrandom version

* Add rust-toolchain file to wasm project

* feat: add LND containers for testing (#77)

* feat: add LND containers for testing

* fix: lightning latch test run on actions

* fix: install mocha

* fix: wallet names

* feat: add test to get preimage before batch unlock

* feat: add test for sender recover coin after batch timeout

* fix: increase test timeout

* feat: wallet creation on lnd nodes

* feat: wallet creation on lnd nodes

* fix: wallet creation on start of lnd

* fix: wallet unlock flag

* debug: lnd node logs

* fix: add sleep for lnd to sync with latest block

* fix: upgrade lnd version

* fix: zmq flags in bitcoind config

* fix: port for node second to listen

* feat: add script to open channel

* feat: add fn to generate invoice

* fix: test failure

* feat: add test to steal hold invoice amount

* fix: await for hold invoice payment

* fix: import error

* fix: upgrade docker image version in actions

* fix: install docker compose

* fix: container name

* fix: network name

* fix: add assertion for invoice payment failure

* feat: add test for sender sends coin without batch_id

* feat: add fn for invoice verification against payment hash

* feat: add test for invoice verification

fix: walletname for invoice verification test

fix: payment hash for invoice verification test

* feat: setup web client tests on actions

* feat: setup esplora for actions

fix: esplora and node server for web client

fix: host for node server for web client

fix: dir for node server for web client

fix: volume for esplora and node server

fix: node server volume

fix: explora volume mount

fix: bitcoin cli commands for esplora

fix: host for node server

debug: esplora and node server requests

debug: host for esplora

debug: containers

fix: node server exit

debug: node server logs

fix: node server restart

debug: esplora logs

fix: restart policy for esplora

debug: node server start command

fix: add npm install before node start

fix: install and start cmd for node server

* feat: add dockerfile for node server

fix: dir with node server build

fix: dockerfile for node server

fix: setup script for web client tests

fix: step for script execution for web client

fix: add npm install in script for web client

debug: post request for node server

fix: post request for node server

* feat: add wallet creation for esplora

fix: order for running script for web client

fix: add step to generate block on esplora

fix: host for esplora

debug: get request for esplora

fix: permission error

fix: permission issue for data_bitcoin_regtest folder

fix: web client tests order

* feat: add test for atomic swap for web client

* feat: add test for coin steal in atomic swap for web client

* feat: add test for lightning latch

* feat: add test for invoice for lightning latch

* Fix/dockerfile token server (#85)

* fix: token server dockerfile

* fix: build release for token server

* fix: upgrade sqlx version

* Add payment hash verification to web client

* Add log crate to the server

* fix: The pre-image is now only revealed if the transfer is unlocked.

* fix: import error

* feat: add endpoints for invoice ops on node server

fix: invoice generation from node server

* feat: add test for invoice handling for lightning latch

fix: import error

fix: verifyInvoice fn

fix: add bolt11 as package

fix: bolt11 import error

* feat: add endpoint for decode invoice

fix: invoice from post request

fix: invoice payment hash

debug: invoice decode

fix: payment hash in invoice generation

debug: invoice verification

fix: extract hash from decoded invoice

fix: long running test due to hold invoice

fix: payment hashes

fix: web client tests running order

fix: verify invoice test

* refactor: verify invoice test

---------

Co-authored-by: S. Santos <[email protected]>

* Update Cargo.toml

* fix: upgrade sqlx version

* Update sqlx and toolchain

---------

Co-authored-by: S. Santos <[email protected]>
Co-authored-by: Thomas Trevethan <[email protected]>
Co-authored-by: rk16449 <[email protected]>
Co-authored-by: rk16449 <[email protected]>
Co-authored-by: Nicholas Gregory <[email protected]>
Co-authored-by: DhananjayPurohit <[email protected]>
Co-authored-by: S. Santos <[email protected]>
tomt1664 added a commit that referenced this pull request Sep 5, 2024
* Changing React application structure to handle concurrency

* Changing React application structure to handle concurrency

* Changing React application structure to handle concurrency

* Changing React application structure to handle concurrency

* Changing React application structure to handle concurrency

* Changing React application structure to handle concurrency

* Changing React application structure to handle concurrency

* Changing React application structure to handle concurrency

* Changing React application structure to handle concurrency

* Changing React application structure to handle concurrency

* add token server

* fixes

* Remove thunks

* Improve backup transactions database and view

* Improve GUI

* Fix some warnings

* Fix some warnings

* Improve update function

* Improve GUI

* Remove DB transaction to avoid race condition

* config

* config

* add token server

* Update tokens.md

* Update Token struct

* Add WASM packages

* Improve UI

* Change react-app config file

* chore: add changes to get locofy-ui working

* chore: add key to wizard

* chore: add deposit process ui

* chore: add token ui logic

* chore: huge locofy ai changes, remove old code as wasn't scalable, learned new locofy formats

* chore: fix up icons

* chore: hook token info card and deposit page

* chore: update token card UI

* chore: add more validation to deposit process, and modal windows

* chore: update deposit pages

* add expiry time

* fix

* fix

* chore: finish the tab ui logic

* chore: add changes to deposit, hook up live methods to the deposit process, add loading spinners and validation

* add key check

* fix serialisation

* chore: add token insertion into wallet object, various other changes, wasm error in deposit 2

* chore: fix wallet load code

* chore: add back in validation for wizard page 2, cleanup the main header panel ui

* chore: refactor, add a logged in wallet hook, add validation to wallet page 1

* chore: show seed key in wizard states

* chore: fix error if coins / activities is null

* Modify Token struct

* chore: fix error message ordering in wizard page

* chore: move order of destructure variable in main page

* chore: fix coin item, display some info to user about their statecoin

* chore: add changes to main header panel, add up btc values

* chore: fix deposit addresses

* chore: change to testnet server, add withdraw ui components

* chore: fix more withdrawal logic, fix  bug in deposit 3 page

* chore: do not show withdrawn coins

* chore: add send page and logic

* chore: fix receive page

* chore: fix activities table

* chore: fix some navigation errors and settings page errors

* Add Settings property to wallet

* chore: add password encrypted db wallets, add error message handling for it, remove certain coins from UI

* chore: add backup from file/load into db

* chore: add changes to main load wallet

* chore: get latest password

* chore: change settings page

* chore: remove manage transactions from settings page as will be in modal

* chore: add settings ui hooked with redux state and notifications

* chore: add the reloading of wallets within load wallet page

* chore: remove debugging, add check on wizard for encrypted wallets instead of live wallets

* chore: fix loading from backup file to include backup tx

* chore: add more responsive main bar page, and add modal ui

* chore: fix coin modal and help page

* chore: remove amount

* chore: downgrade sql

* chore: enable debug mode

* chore: replace icon of app

* chore: huge fix for resources in wallet

* chore: add build

* chore: add dev branch

* chore: fix clearnet config issues, start a build

* chore: change actions

* chore: remove mainnet

* chore: remove mainnet

* chore: change github actions

* chore: change app icon

* chore: change app icon

* chore: remove unused files

* version: update to 0.1.1

* DB file path

* Update atomic_transfer.md

* Update atomic_transfer.md

typo

* Update atomic_transfer.md

Fixed typo

* Update atomic_transfer.md

* Update protocol.md

* Update transfer_sender_sequence.md

* Update transfer_receiver_sequence.md

* Update transfer_sender_sequence.md

* Update transfer_receiver_sequence.md

* Update protocol.md

* Add ChaCha20-Poly1305 encryption scheme

This commit adds ChaCha20-Poly1305 algorithm to be used
to encrypt any enclave data instead of using the SGX built-in
functions.
This way, the data can be decrypted on another machine as long
the same encryption key be used.
SGX functions are still used to seal and unseal the encryption key.

* Add password to add-mnemonic call

* Add Dockerfiles to SGX SIM mode

* Add docker files to the server

* Update protocol.md

* Update README.md

* Update deposit_sequence.md

* Update transfer_sender_sequence.md

* Update transfer_receiver_sequence.md

* Add docker files to the enclave - HW mode

* Remove r2 and blind commitments

* Change HRP to 'ml' and 'tml'

* Add address validation and remove standalone rust client

* Update WASM and rename lib

* Update atomic_transfer.md

* Update atomic_transfer.md

* Add UniFFI

* Re-add nodejs client

* Add kotlin client

* Use TransferReceiverPostResponsePayload

* Add Atomic transfer

* Use statechain_info to verify transfers

* Add automatic seed generation and replication

* Update react-app package.json

* Increase the maximum amount of time to spend waiting for a connection to 30s

* Allow coin to be withdrawn if in IN_TRANSFER status

* Fix minor errors regarding IN_TRANSFER status

* Update Kotlin client

* fix: server config with env for mercury & token server

* feat: add docker build for github actions

* feat: add dev branch to yaml

* fix: token server port

* fix: expose port in dockerfile for token-server

* fix: move Rocket.toml from sub folder to parent folder

* fix: add tls feature to sqlx

* fix: route for endpoint /info

* feat: add explorer

* feat: add keylist cronjob

* fix: version for docker images in ci/cd

* fix: add dev2 branch to ci/cd

* fix: import error with token server

* fix: mercury server start cmd

* fix: start cmd for mercury server

* debug: mercury server dockerfile

* fix: config for mercury and token server

* fix: mercury server dockerfile

* fix: dockerfile for mercury server

* Fix the mainnet address conversion

* Add address reuse functionality

* Create rust client lib

* Create nodejs client lib

* Update ECIES package and restructure project folders

* Add a new test file that uses the nodejs lib

* Fix docker error preventing Mercury server from starting

* Move signature validation from rust client lib to Mercury lib

* Refactor `clients/libs/rust/src/transfer_receiver.rs`. No change in behavior

* Use `validateSignatureScheme` in `clients/libs/nodejs/transfer_receive.js`

* Use `validateSignatureScheme` in `clients/apps/kotlin/TransferReceive.kt`

* Add web client lib

* Add `max_fee_rate` setting to rust lib

* Add `max_fee_rate` setting to nodejs lib

* Create client_guide.md

* Add `max_fee_rate` setting to web lib

* Update client_guide.md

* Update client_guide.md

* Update client_guide.md

* Add `max_fee_rate` setting to Kotlin client

* Add multiple enclave support

* Remove outdated react-app

* Handle fee rate < 0 in broadcast command

* Feat/fee unit

* Add integration tests on regtest mode
-------
Co-authored-by: DhananjayPurohit <[email protected]>

* Add Lightning Latch atomic transfer

* Improve transfer message verification

* Add basic Rust integration tests

* Add `batchtimeout` to `/info/config`

* fix: directory for Rocket.toml

* feat: add tests for coin expiry

* fix: add test for transfer-sender that make coin expired by sending

* fix: assertion for broadcast tx

* fix: add dev3 for integration tests

* Add TB02 - Transfer Address Reuse

* Add TM01 - Sender Double Spends

* chore: remove dev3 branch from integration tests

* Add TA01 - 'signSecond not called' and return the pubnonce if the challenge is null

* Refactor transfer-receive to make it non-blocking

* Refactor transfer-receive in nodeJS library to make it non-blocking

* Adjust tests to the new transferReceive function

* Add web lib tests

* Fix minor error in nodeJS transfer-receive

* Add lightning latch functions to the nodeJS client

* Add Rust lightning latch test

* Add nodeJs lightning latch test

* Feat/tests for atomic swap (#72)

---------

Co-authored-by: S. Santos <[email protected]>

* Add lightning latch functions to web client

* Improve nodeJS API parameters

* Change fee rate to f64 instead of u64

* fix: ci build on main branch only (#78)

* Handle multiple deposit transactions

* Add multiple deposit support to the nodeJS client

* Update test_basic_workflow2 to support duplicated deposits

* Update web client to support multiple deposits

* Automate web client testing

* Add Vitest to web client tests

* Update Dockerfile (#81)

* Update Dockerfile

* Create Rocket2.toml

* Update Dockerfile

* Revert "Update Dockerfile (#81)" (#83)

This reverts commit e37b627.

* Add GET `/transfer/paymenthash/<batch_id>`

* Add payment hash verification to nodeJS client

* Fix/dockerfile token server (#85)

* fix: token server dockerfile

* fix: build release for token server

* fix: upgrade sqlx version

* Add payment hash verification to web client

* Add log crate to the server

* fix: The pre-image is now only revealed if the transfer is unlocked.

* Set getrandom version

* Add rust-toolchain file to wasm project

* feat: add LND containers for testing (#77)

* feat: add LND containers for testing

* fix: lightning latch test run on actions

* fix: install mocha

* fix: wallet names

* feat: add test to get preimage before batch unlock

* feat: add test for sender recover coin after batch timeout

* fix: increase test timeout

* feat: wallet creation on lnd nodes

* feat: wallet creation on lnd nodes

* fix: wallet creation on start of lnd

* fix: wallet unlock flag

* debug: lnd node logs

* fix: add sleep for lnd to sync with latest block

* fix: upgrade lnd version

* fix: zmq flags in bitcoind config

* fix: port for node second to listen

* feat: add script to open channel

* feat: add fn to generate invoice

* fix: test failure

* feat: add test to steal hold invoice amount

* fix: await for hold invoice payment

* fix: import error

* fix: upgrade docker image version in actions

* fix: install docker compose

* fix: container name

* fix: network name

* fix: add assertion for invoice payment failure

* feat: add test for sender sends coin without batch_id

* feat: add fn for invoice verification against payment hash

* feat: add test for invoice verification

fix: walletname for invoice verification test

fix: payment hash for invoice verification test

* feat: setup web client tests on actions

* feat: setup esplora for actions

fix: esplora and node server for web client

fix: host for node server for web client

fix: dir for node server for web client

fix: volume for esplora and node server

fix: node server volume

fix: explora volume mount

fix: bitcoin cli commands for esplora

fix: host for node server

debug: esplora and node server requests

debug: host for esplora

debug: containers

fix: node server exit

debug: node server logs

fix: node server restart

debug: esplora logs

fix: restart policy for esplora

debug: node server start command

fix: add npm install before node start

fix: install and start cmd for node server

* feat: add dockerfile for node server

fix: dir with node server build

fix: dockerfile for node server

fix: setup script for web client tests

fix: step for script execution for web client

fix: add npm install in script for web client

debug: post request for node server

fix: post request for node server

* feat: add wallet creation for esplora

fix: order for running script for web client

fix: add step to generate block on esplora

fix: host for esplora

debug: get request for esplora

fix: permission error

fix: permission issue for data_bitcoin_regtest folder

fix: web client tests order

* feat: add test for atomic swap for web client

* feat: add test for coin steal in atomic swap for web client

* feat: add test for lightning latch

* feat: add test for invoice for lightning latch

* Fix/dockerfile token server (#85)

* fix: token server dockerfile

* fix: build release for token server

* fix: upgrade sqlx version

* Add payment hash verification to web client

* Add log crate to the server

* fix: The pre-image is now only revealed if the transfer is unlocked.

* fix: import error

* feat: add endpoints for invoice ops on node server

fix: invoice generation from node server

* feat: add test for invoice handling for lightning latch

fix: import error

fix: verifyInvoice fn

fix: add bolt11 as package

fix: bolt11 import error

* feat: add endpoint for decode invoice

fix: invoice from post request

fix: invoice payment hash

debug: invoice decode

fix: payment hash in invoice generation

debug: invoice verification

fix: extract hash from decoded invoice

fix: long running test due to hold invoice

fix: payment hashes

fix: web client tests running order

fix: verify invoice test

* refactor: verify invoice test

---------

Co-authored-by: S. Santos <[email protected]>

* Update Cargo.toml

* fix: upgrade sqlx version

* Update sqlx and toolchain

* Change transaction sequence to 0

* Receiver now compares the backup transaction locktime with the current block height

* Validate backup transaction signatures using SIGHASH_ALL

* Validate transaction version

* Validate transaction output size

* Add blockheight in web library receive functionality

* Receiver constructs backup transactions for verification

* Add tx and locktime checks

* Version number

* Update Cargo.toml

---------

Co-authored-by: S. Santos <[email protected]>
Co-authored-by: Thomas Trevethan <[email protected]>
Co-authored-by: rk16449 <[email protected]>
Co-authored-by: rk16449 <[email protected]>
Co-authored-by: Nicholas Gregory <[email protected]>
Co-authored-by: DhananjayPurohit <[email protected]>
Co-authored-by: S. Santos <[email protected]>
tomt1664 added a commit that referenced this pull request Sep 12, 2024
* Changing React application structure to handle concurrency

* Changing React application structure to handle concurrency

* Changing React application structure to handle concurrency

* add token server

* fixes

* Remove thunks

* Improve backup transactions database and view

* Improve GUI

* Fix some warnings

* Fix some warnings

* Improve update function

* Improve GUI

* Remove DB transaction to avoid race condition

* config

* config

* add token server

* Update tokens.md

* Update Token struct

* Add WASM packages

* Improve UI

* Change react-app config file

* chore: add changes to get locofy-ui working

* chore: add key to wizard

* chore: add deposit process ui

* chore: add token ui logic

* chore: huge locofy ai changes, remove old code as wasn't scalable, learned new locofy formats

* chore: fix up icons

* chore: hook token info card and deposit page

* chore: update token card UI

* chore: add more validation to deposit process, and modal windows

* chore: update deposit pages

* add expiry time

* fix

* fix

* chore: finish the tab ui logic

* chore: add changes to deposit, hook up live methods to the deposit process, add loading spinners and validation

* add key check

* fix serialisation

* chore: add token insertion into wallet object, various other changes, wasm error in deposit 2

* chore: fix wallet load code

* chore: add back in validation for wizard page 2, cleanup the main header panel ui

* chore: refactor, add a logged in wallet hook, add validation to wallet page 1

* chore: show seed key in wizard states

* chore: fix error if coins / activities is null

* Modify Token struct

* chore: fix error message ordering in wizard page

* chore: move order of destructure variable in main page

* chore: fix coin item, display some info to user about their statecoin

* chore: add changes to main header panel, add up btc values

* chore: fix deposit addresses

* chore: change to testnet server, add withdraw ui components

* chore: fix more withdrawal logic, fix  bug in deposit 3 page

* chore: do not show withdrawn coins

* chore: add send page and logic

* chore: fix receive page

* chore: fix activities table

* chore: fix some navigation errors and settings page errors

* Add Settings property to wallet

* chore: add password encrypted db wallets, add error message handling for it, remove certain coins from UI

* chore: add backup from file/load into db

* chore: add changes to main load wallet

* chore: get latest password

* chore: change settings page

* chore: remove manage transactions from settings page as will be in modal

* chore: add settings ui hooked with redux state and notifications

* chore: add the reloading of wallets within load wallet page

* chore: remove debugging, add check on wizard for encrypted wallets instead of live wallets

* chore: fix loading from backup file to include backup tx

* chore: add more responsive main bar page, and add modal ui

* chore: fix coin modal and help page

* chore: remove amount

* chore: downgrade sql

* chore: enable debug mode

* chore: replace icon of app

* chore: huge fix for resources in wallet

* chore: add build

* chore: add dev branch

* chore: fix clearnet config issues, start a build

* chore: change actions

* chore: remove mainnet

* chore: remove mainnet

* chore: change github actions

* chore: change app icon

* chore: change app icon

* chore: remove unused files

* version: update to 0.1.1

* DB file path

* Update atomic_transfer.md

* Update atomic_transfer.md

typo

* Update atomic_transfer.md

Fixed typo

* Update atomic_transfer.md

* Update protocol.md

* Update transfer_sender_sequence.md

* Update transfer_receiver_sequence.md

* Update transfer_sender_sequence.md

* Update transfer_receiver_sequence.md

* Update protocol.md

* Add ChaCha20-Poly1305 encryption scheme

This commit adds ChaCha20-Poly1305 algorithm to be used
to encrypt any enclave data instead of using the SGX built-in
functions.
This way, the data can be decrypted on another machine as long
the same encryption key be used.
SGX functions are still used to seal and unseal the encryption key.

* Add password to add-mnemonic call

* Add Dockerfiles to SGX SIM mode

* Add docker files to the server

* Update protocol.md

* Update README.md

* Update deposit_sequence.md

* Update transfer_sender_sequence.md

* Update transfer_receiver_sequence.md

* Add docker files to the enclave - HW mode

* Remove r2 and blind commitments

* Change HRP to 'ml' and 'tml'

* Add address validation and remove standalone rust client

* Update WASM and rename lib

* Update atomic_transfer.md

* Update atomic_transfer.md

* Add UniFFI

* Re-add nodejs client

* Add kotlin client

* Use TransferReceiverPostResponsePayload

* Add Atomic transfer

* Use statechain_info to verify transfers

* Add automatic seed generation and replication

* Update react-app package.json

* Increase the maximum amount of time to spend waiting for a connection to 30s

* Allow coin to be withdrawn if in IN_TRANSFER status

* Fix minor errors regarding IN_TRANSFER status

* Update Kotlin client

* fix: server config with env for mercury & token server

* feat: add docker build for github actions

* feat: add dev branch to yaml

* fix: token server port

* fix: expose port in dockerfile for token-server

* fix: move Rocket.toml from sub folder to parent folder

* fix: add tls feature to sqlx

* fix: route for endpoint /info

* feat: add explorer

* feat: add keylist cronjob

* fix: version for docker images in ci/cd

* fix: add dev2 branch to ci/cd

* fix: import error with token server

* fix: mercury server start cmd

* fix: start cmd for mercury server

* debug: mercury server dockerfile

* fix: config for mercury and token server

* fix: mercury server dockerfile

* fix: dockerfile for mercury server

* Fix the mainnet address conversion

* Add address reuse functionality

* Create rust client lib

* Create nodejs client lib

* Update ECIES package and restructure project folders

* Add a new test file that uses the nodejs lib

* Fix docker error preventing Mercury server from starting

* Move signature validation from rust client lib to Mercury lib

* Refactor `clients/libs/rust/src/transfer_receiver.rs`. No change in behavior

* Use `validateSignatureScheme` in `clients/libs/nodejs/transfer_receive.js`

* Use `validateSignatureScheme` in `clients/apps/kotlin/TransferReceive.kt`

* Add web client lib

* Add `max_fee_rate` setting to rust lib

* Add `max_fee_rate` setting to nodejs lib

* Create client_guide.md

* Add `max_fee_rate` setting to web lib

* Update client_guide.md

* Update client_guide.md

* Update client_guide.md

* Add `max_fee_rate` setting to Kotlin client

* Add multiple enclave support

* Remove outdated react-app

* Handle fee rate < 0 in broadcast command

* Feat/fee unit

* Add integration tests on regtest mode
-------
Co-authored-by: DhananjayPurohit <[email protected]>

* Add Lightning Latch atomic transfer

* Improve transfer message verification

* Add basic Rust integration tests

* Add `batchtimeout` to `/info/config`

* fix: directory for Rocket.toml

* feat: add tests for coin expiry

* fix: add test for transfer-sender that make coin expired by sending

* fix: assertion for broadcast tx

* fix: add dev3 for integration tests

* Add TB02 - Transfer Address Reuse

* Add TM01 - Sender Double Spends

* chore: remove dev3 branch from integration tests

* Add TA01 - 'signSecond not called' and return the pubnonce if the challenge is null

* Refactor transfer-receive to make it non-blocking

* Refactor transfer-receive in nodeJS library to make it non-blocking

* Adjust tests to the new transferReceive function

* Add web lib tests

* Fix minor error in nodeJS transfer-receive

* Add lightning latch functions to the nodeJS client

* Add Rust lightning latch test

* Add nodeJs lightning latch test

* Feat/tests for atomic swap (#72)

---------

Co-authored-by: S. Santos <[email protected]>

* Add lightning latch functions to web client

* Improve nodeJS API parameters

* Change fee rate to f64 instead of u64

* fix: ci build on main branch only (#78)

* Handle multiple deposit transactions

* Add multiple deposit support to the nodeJS client

* Update test_basic_workflow2 to support duplicated deposits

* Update web client to support multiple deposits

* Automate web client testing

* Add Vitest to web client tests

* Update Dockerfile (#81)

* Update Dockerfile

* Create Rocket2.toml

* Update Dockerfile

* Revert "Update Dockerfile (#81)" (#83)

This reverts commit e37b627.

* Add GET `/transfer/paymenthash/<batch_id>`

* Add payment hash verification to nodeJS client

* Fix/dockerfile token server (#85)

* fix: token server dockerfile

* fix: build release for token server

* fix: upgrade sqlx version

* Add payment hash verification to web client

* Add log crate to the server

* fix: The pre-image is now only revealed if the transfer is unlocked.

* Set getrandom version

* Add rust-toolchain file to wasm project

* feat: add LND containers for testing (#77)

* feat: add LND containers for testing

* fix: lightning latch test run on actions

* fix: install mocha

* fix: wallet names

* feat: add test to get preimage before batch unlock

* feat: add test for sender recover coin after batch timeout

* fix: increase test timeout

* feat: wallet creation on lnd nodes

* feat: wallet creation on lnd nodes

* fix: wallet creation on start of lnd

* fix: wallet unlock flag

* debug: lnd node logs

* fix: add sleep for lnd to sync with latest block

* fix: upgrade lnd version

* fix: zmq flags in bitcoind config

* fix: port for node second to listen

* feat: add script to open channel

* feat: add fn to generate invoice

* fix: test failure

* feat: add test to steal hold invoice amount

* fix: await for hold invoice payment

* fix: import error

* fix: upgrade docker image version in actions

* fix: install docker compose

* fix: container name

* fix: network name

* fix: add assertion for invoice payment failure

* feat: add test for sender sends coin without batch_id

* feat: add fn for invoice verification against payment hash

* feat: add test for invoice verification

fix: walletname for invoice verification test

fix: payment hash for invoice verification test

* feat: setup web client tests on actions

* feat: setup esplora for actions

fix: esplora and node server for web client

fix: host for node server for web client

fix: dir for node server for web client

fix: volume for esplora and node server

fix: node server volume

fix: explora volume mount

fix: bitcoin cli commands for esplora

fix: host for node server

debug: esplora and node server requests

debug: host for esplora

debug: containers

fix: node server exit

debug: node server logs

fix: node server restart

debug: esplora logs

fix: restart policy for esplora

debug: node server start command

fix: add npm install before node start

fix: install and start cmd for node server

* feat: add dockerfile for node server

fix: dir with node server build

fix: dockerfile for node server

fix: setup script for web client tests

fix: step for script execution for web client

fix: add npm install in script for web client

debug: post request for node server

fix: post request for node server

* feat: add wallet creation for esplora

fix: order for running script for web client

fix: add step to generate block on esplora

fix: host for esplora

debug: get request for esplora

fix: permission error

fix: permission issue for data_bitcoin_regtest folder

fix: web client tests order

* feat: add test for atomic swap for web client

* feat: add test for coin steal in atomic swap for web client

* feat: add test for lightning latch

* feat: add test for invoice for lightning latch

* Fix/dockerfile token server (#85)

* fix: token server dockerfile

* fix: build release for token server

* fix: upgrade sqlx version

* Add payment hash verification to web client

* Add log crate to the server

* fix: The pre-image is now only revealed if the transfer is unlocked.

* fix: import error

* feat: add endpoints for invoice ops on node server

fix: invoice generation from node server

* feat: add test for invoice handling for lightning latch

fix: import error

fix: verifyInvoice fn

fix: add bolt11 as package

fix: bolt11 import error

* feat: add endpoint for decode invoice

fix: invoice from post request

fix: invoice payment hash

debug: invoice decode

fix: payment hash in invoice generation

debug: invoice verification

fix: extract hash from decoded invoice

fix: long running test due to hold invoice

fix: payment hashes

fix: web client tests running order

fix: verify invoice test

* refactor: verify invoice test

---------

Co-authored-by: S. Santos <[email protected]>

* Update Cargo.toml

* fix: upgrade sqlx version

* Update sqlx and toolchain

* Change transaction sequence to 0

* Receiver now compares the backup transaction locktime with the current block height

* Validate backup transaction signatures using SIGHASH_ALL

* Validate transaction version

* Validate transaction output size

* Add blockheight in web library receive functionality

* Receiver constructs backup transactions for verification

* Add tx and locktime checks

* Version number

* Update Cargo.toml

* Add server version number to /info/config

* feat: add tnc to token (#89)

* feat: add tnc to token

* feat: add endpoint for tnc acceptance

* fix: token init for tnc acceptance

* fix: dir for tnc.html

* Update tnc.html (#92)

* chore: remove nodejs tests

* Update tnc.html

---------

Co-authored-by: Tom Trevethan <[email protected]>

* Connection string secret as separate ENV.

* Change the PubKeyInfo struct to show creation date

* feat: add tnc to explorer page (#99)

* feat: add tnc to explorer page

* feat: add server version to explorer page

* version number

---------

Co-authored-by: S. Santos <[email protected]>
Co-authored-by: Thomas Trevethan <[email protected]>
Co-authored-by: rk16449 <[email protected]>
Co-authored-by: rk16449 <[email protected]>
Co-authored-by: Nicholas Gregory <[email protected]>
Co-authored-by: DhananjayPurohit <[email protected]>
Co-authored-by: S. Santos <[email protected]>
tomt1664 added a commit that referenced this pull request Oct 4, 2024
* Remove thunks

* Improve backup transactions database and view

* Improve GUI

* Fix some warnings

* Fix some warnings

* Improve update function

* Improve GUI

* Remove DB transaction to avoid race condition

* config

* config

* add token server

* Update tokens.md

* Update Token struct

* Add WASM packages

* Improve UI

* Change react-app config file

* chore: add changes to get locofy-ui working

* chore: add key to wizard

* chore: add deposit process ui

* chore: add token ui logic

* chore: huge locofy ai changes, remove old code as wasn't scalable, learned new locofy formats

* chore: fix up icons

* chore: hook token info card and deposit page

* chore: update token card UI

* chore: add more validation to deposit process, and modal windows

* chore: update deposit pages

* add expiry time

* fix

* fix

* chore: finish the tab ui logic

* chore: add changes to deposit, hook up live methods to the deposit process, add loading spinners and validation

* add key check

* fix serialisation

* chore: add token insertion into wallet object, various other changes, wasm error in deposit 2

* chore: fix wallet load code

* chore: add back in validation for wizard page 2, cleanup the main header panel ui

* chore: refactor, add a logged in wallet hook, add validation to wallet page 1

* chore: show seed key in wizard states

* chore: fix error if coins / activities is null

* Modify Token struct

* chore: fix error message ordering in wizard page

* chore: move order of destructure variable in main page

* chore: fix coin item, display some info to user about their statecoin

* chore: add changes to main header panel, add up btc values

* chore: fix deposit addresses

* chore: change to testnet server, add withdraw ui components

* chore: fix more withdrawal logic, fix  bug in deposit 3 page

* chore: do not show withdrawn coins

* chore: add send page and logic

* chore: fix receive page

* chore: fix activities table

* chore: fix some navigation errors and settings page errors

* Add Settings property to wallet

* chore: add password encrypted db wallets, add error message handling for it, remove certain coins from UI

* chore: add backup from file/load into db

* chore: add changes to main load wallet

* chore: get latest password

* chore: change settings page

* chore: remove manage transactions from settings page as will be in modal

* chore: add settings ui hooked with redux state and notifications

* chore: add the reloading of wallets within load wallet page

* chore: remove debugging, add check on wizard for encrypted wallets instead of live wallets

* chore: fix loading from backup file to include backup tx

* chore: add more responsive main bar page, and add modal ui

* chore: fix coin modal and help page

* chore: remove amount

* chore: downgrade sql

* chore: enable debug mode

* chore: replace icon of app

* chore: huge fix for resources in wallet

* chore: add build

* chore: add dev branch

* chore: fix clearnet config issues, start a build

* chore: change actions

* chore: remove mainnet

* chore: remove mainnet

* chore: change github actions

* chore: change app icon

* chore: change app icon

* chore: remove unused files

* version: update to 0.1.1

* DB file path

* Update atomic_transfer.md

* Update atomic_transfer.md

typo

* Update atomic_transfer.md

Fixed typo

* Update atomic_transfer.md

* Update protocol.md

* Update transfer_sender_sequence.md

* Update transfer_receiver_sequence.md

* Update transfer_sender_sequence.md

* Update transfer_receiver_sequence.md

* Update protocol.md

* Add ChaCha20-Poly1305 encryption scheme

This commit adds ChaCha20-Poly1305 algorithm to be used
to encrypt any enclave data instead of using the SGX built-in
functions.
This way, the data can be decrypted on another machine as long
the same encryption key be used.
SGX functions are still used to seal and unseal the encryption key.

* Add password to add-mnemonic call

* Add Dockerfiles to SGX SIM mode

* Add docker files to the server

* Update protocol.md

* Update README.md

* Update deposit_sequence.md

* Update transfer_sender_sequence.md

* Update transfer_receiver_sequence.md

* Add docker files to the enclave - HW mode

* Remove r2 and blind commitments

* Change HRP to 'ml' and 'tml'

* Add address validation and remove standalone rust client

* Update WASM and rename lib

* Update atomic_transfer.md

* Update atomic_transfer.md

* Add UniFFI

* Re-add nodejs client

* Add kotlin client

* Use TransferReceiverPostResponsePayload

* Add Atomic transfer

* Use statechain_info to verify transfers

* Add automatic seed generation and replication

* Update react-app package.json

* Increase the maximum amount of time to spend waiting for a connection to 30s

* Allow coin to be withdrawn if in IN_TRANSFER status

* Fix minor errors regarding IN_TRANSFER status

* Update Kotlin client

* fix: server config with env for mercury & token server

* feat: add docker build for github actions

* feat: add dev branch to yaml

* fix: token server port

* fix: expose port in dockerfile for token-server

* fix: move Rocket.toml from sub folder to parent folder

* fix: add tls feature to sqlx

* fix: route for endpoint /info

* feat: add explorer

* feat: add keylist cronjob

* fix: version for docker images in ci/cd

* fix: add dev2 branch to ci/cd

* fix: import error with token server

* fix: mercury server start cmd

* fix: start cmd for mercury server

* debug: mercury server dockerfile

* fix: config for mercury and token server

* fix: mercury server dockerfile

* fix: dockerfile for mercury server

* Fix the mainnet address conversion

* Add address reuse functionality

* Create rust client lib

* Create nodejs client lib

* Update ECIES package and restructure project folders

* Add a new test file that uses the nodejs lib

* Fix docker error preventing Mercury server from starting

* Move signature validation from rust client lib to Mercury lib

* Refactor `clients/libs/rust/src/transfer_receiver.rs`. No change in behavior

* Use `validateSignatureScheme` in `clients/libs/nodejs/transfer_receive.js`

* Use `validateSignatureScheme` in `clients/apps/kotlin/TransferReceive.kt`

* Add web client lib

* Add `max_fee_rate` setting to rust lib

* Add `max_fee_rate` setting to nodejs lib

* Create client_guide.md

* Add `max_fee_rate` setting to web lib

* Update client_guide.md

* Update client_guide.md

* Update client_guide.md

* Add `max_fee_rate` setting to Kotlin client

* Add multiple enclave support

* Remove outdated react-app

* Handle fee rate < 0 in broadcast command

* Feat/fee unit

* Add integration tests on regtest mode
-------
Co-authored-by: DhananjayPurohit <[email protected]>

* Add Lightning Latch atomic transfer

* Improve transfer message verification

* Add basic Rust integration tests

* Add `batchtimeout` to `/info/config`

* fix: directory for Rocket.toml

* feat: add tests for coin expiry

* fix: add test for transfer-sender that make coin expired by sending

* fix: assertion for broadcast tx

* fix: add dev3 for integration tests

* Add TB02 - Transfer Address Reuse

* Add TM01 - Sender Double Spends

* chore: remove dev3 branch from integration tests

* Add TA01 - 'signSecond not called' and return the pubnonce if the challenge is null

* Refactor transfer-receive to make it non-blocking

* Refactor transfer-receive in nodeJS library to make it non-blocking

* Adjust tests to the new transferReceive function

* Add web lib tests

* Fix minor error in nodeJS transfer-receive

* Add lightning latch functions to the nodeJS client

* Add Rust lightning latch test

* Add nodeJs lightning latch test

* Feat/tests for atomic swap (#72)

---------

Co-authored-by: S. Santos <[email protected]>

* Add lightning latch functions to web client

* Improve nodeJS API parameters

* Change fee rate to f64 instead of u64

* fix: ci build on main branch only (#78)

* Handle multiple deposit transactions

* Add multiple deposit support to the nodeJS client

* Update test_basic_workflow2 to support duplicated deposits

* Update web client to support multiple deposits

* Automate web client testing

* Add Vitest to web client tests

* Update Dockerfile (#81)

* Update Dockerfile

* Create Rocket2.toml

* Update Dockerfile

* Revert "Update Dockerfile (#81)" (#83)

This reverts commit e37b627.

* Add GET `/transfer/paymenthash/<batch_id>`

* Add payment hash verification to nodeJS client

* Fix/dockerfile token server (#85)

* fix: token server dockerfile

* fix: build release for token server

* fix: upgrade sqlx version

* Add payment hash verification to web client

* Add log crate to the server

* fix: The pre-image is now only revealed if the transfer is unlocked.

* Set getrandom version

* Add rust-toolchain file to wasm project

* feat: add LND containers for testing (#77)

* feat: add LND containers for testing

* fix: lightning latch test run on actions

* fix: install mocha

* fix: wallet names

* feat: add test to get preimage before batch unlock

* feat: add test for sender recover coin after batch timeout

* fix: increase test timeout

* feat: wallet creation on lnd nodes

* feat: wallet creation on lnd nodes

* fix: wallet creation on start of lnd

* fix: wallet unlock flag

* debug: lnd node logs

* fix: add sleep for lnd to sync with latest block

* fix: upgrade lnd version

* fix: zmq flags in bitcoind config

* fix: port for node second to listen

* feat: add script to open channel

* feat: add fn to generate invoice

* fix: test failure

* feat: add test to steal hold invoice amount

* fix: await for hold invoice payment

* fix: import error

* fix: upgrade docker image version in actions

* fix: install docker compose

* fix: container name

* fix: network name

* fix: add assertion for invoice payment failure

* feat: add test for sender sends coin without batch_id

* feat: add fn for invoice verification against payment hash

* feat: add test for invoice verification

fix: walletname for invoice verification test

fix: payment hash for invoice verification test

* feat: setup web client tests on actions

* feat: setup esplora for actions

fix: esplora and node server for web client

fix: host for node server for web client

fix: dir for node server for web client

fix: volume for esplora and node server

fix: node server volume

fix: explora volume mount

fix: bitcoin cli commands for esplora

fix: host for node server

debug: esplora and node server requests

debug: host for esplora

debug: containers

fix: node server exit

debug: node server logs

fix: node server restart

debug: esplora logs

fix: restart policy for esplora

debug: node server start command

fix: add npm install before node start

fix: install and start cmd for node server

* feat: add dockerfile for node server

fix: dir with node server build

fix: dockerfile for node server

fix: setup script for web client tests

fix: step for script execution for web client

fix: add npm install in script for web client

debug: post request for node server

fix: post request for node server

* feat: add wallet creation for esplora

fix: order for running script for web client

fix: add step to generate block on esplora

fix: host for esplora

debug: get request for esplora

fix: permission error

fix: permission issue for data_bitcoin_regtest folder

fix: web client tests order

* feat: add test for atomic swap for web client

* feat: add test for coin steal in atomic swap for web client

* feat: add test for lightning latch

* feat: add test for invoice for lightning latch

* Fix/dockerfile token server (#85)

* fix: token server dockerfile

* fix: build release for token server

* fix: upgrade sqlx version

* Add payment hash verification to web client

* Add log crate to the server

* fix: The pre-image is now only revealed if the transfer is unlocked.

* fix: import error

* feat: add endpoints for invoice ops on node server

fix: invoice generation from node server

* feat: add test for invoice handling for lightning latch

fix: import error

fix: verifyInvoice fn

fix: add bolt11 as package

fix: bolt11 import error

* feat: add endpoint for decode invoice

fix: invoice from post request

fix: invoice payment hash

debug: invoice decode

fix: payment hash in invoice generation

debug: invoice verification

fix: extract hash from decoded invoice

fix: long running test due to hold invoice

fix: payment hashes

fix: web client tests running order

fix: verify invoice test

* refactor: verify invoice test

---------

Co-authored-by: S. Santos <[email protected]>

* Update Cargo.toml

* fix: upgrade sqlx version

* Update sqlx and toolchain

* Change transaction sequence to 0

* Receiver now compares the backup transaction locktime with the current block height

* Validate backup transaction signatures using SIGHASH_ALL

* Validate transaction version

* Validate transaction output size

* Add blockheight in web library receive functionality

* Receiver constructs backup transactions for verification

* Add tx and locktime checks

* Version number

* Update Cargo.toml

* Add server version number to /info/config

* feat: add tnc to token (#89)

* feat: add tnc to token

* feat: add endpoint for tnc acceptance

* fix: token init for tnc acceptance

* fix: dir for tnc.html

* Update tnc.html (#92)

* chore: remove nodejs tests

* Update tnc.html

---------

Co-authored-by: Tom Trevethan <[email protected]>

* Connection string secret as separate ENV.

* Change the PubKeyInfo struct to show creation date

* feat: add tnc to explorer page (#99)

* feat: add tnc to explorer page

* feat: add server version to explorer page

* version number

* Update env var

* Allow `token_server::endpoints::token::{RTLQuery, RTLInvoice}` to capture arbitrary additional fields

* Update Cargo.toml

* Update token.rs

---------

Co-authored-by: S. Santos <[email protected]>
Co-authored-by: Thomas Trevethan <[email protected]>
Co-authored-by: rk16449 <[email protected]>
Co-authored-by: rk16449 <[email protected]>
Co-authored-by: Nicholas Gregory <[email protected]>
Co-authored-by: DhananjayPurohit <[email protected]>
Co-authored-by: S. Santos <[email protected]>
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.

3 participants