Skip to content

Commit

Permalink
Token server update (#103)
Browse files Browse the repository at this point in the history
* 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]>
  • Loading branch information
8 people authored Oct 4, 2024
1 parent 5aa363b commit fb2e975
Show file tree
Hide file tree
Showing 5 changed files with 29 additions and 25 deletions.
2 changes: 1 addition & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion docker-compose-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ services:
context: .
dockerfile: ./server/Dockerfile
environment:
NETWORK: regtest
BITCOIN_NETWORK: regtest
LOCKHEIGHT_INIT: 1100
LH_DECREMENT: 1
DB_USER: postgres
Expand Down
2 changes: 1 addition & 1 deletion server/.env_example
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
NETWORK =
BITCOIN_NETWORK =
LOCKHEIGHT_INIT =
LH_DECREMENT =
DB_USER =
Expand Down
2 changes: 1 addition & 1 deletion token-server/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "token-server"
version = "0.1.0"
version = "0.1.1"
edition = "2021"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
Expand Down
46 changes: 25 additions & 21 deletions token-server/src/endpoints/token.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use std::str::FromStr;
use std::{collections::HashMap, str::FromStr};

use rocket::{serde::json::Json, response::status, State, http::Status};
use serde::{Serialize, Deserialize};
Expand Down Expand Up @@ -40,6 +40,8 @@ pub struct RTLInvoice{
pub pr: String,
pub checkoutUrl: String,
pub onChainAddr: String,
#[serde(flatten)]
additional_fields: HashMap<String, serde_json::Value>, // Capture arbitrary additional fields
}

#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
Expand All @@ -58,29 +60,31 @@ pub struct RTLData{
pub struct RTLQuery{
pub createdAt: u64,
pub delay: u64,
pub pr: String,
pub amount: u64,
pub btcAmount: String,
pub unit: String,
pub pr: Option<String>,
pub amount: Option<u64>,
pub btcAmount: Option<String>,
pub unit: Option<String>,
pub isPaid: bool,
pub updatePrice: bool,
pub isHodled: bool,
pub isInit: bool,
pub isFixedSatPrice: bool,
pub deleteExpiredInvoice: bool,
pub isExpired: bool,
pub updatePrice: Option<bool>,
pub isHodled: Option<bool>,
pub isInit: Option<bool>,
pub isFixedSatPrice: Option<bool>,
pub deleteExpiredInvoice: Option<bool>,
pub isExpired: Option<bool>,
pub paymentMethod: Option<String>,
pub paidAt: Option<String>,
pub title: String,
pub hash: String,
pub fiatAmount: f64,
pub fiatUnit: String,
pub onChainAddr: String,
pub minConfirmations: u64,
pub confirmations: u64,
pub paidAt: Option<u64>,
pub title: Option<String>,
pub hash: Option<String>,
pub fiatAmount: Option<f64>,
pub fiatUnit: Option<String>,
pub onChainAddr: Option<String>,
pub minConfirmations: Option<u64>,
pub confirmations: Option<u64>,
pub txId: Option<String>,
pub isPending: bool,
pub extra: Extra,
pub isPending: Option<bool>,
pub extra: Option<Extra>,
#[serde(flatten)]
additional_fields: HashMap<String, serde_json::Value>, // Capture arbitrary additional fields
}

#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
Expand Down

0 comments on commit fb2e975

Please sign in to comment.