Louis Singer
10ef0dbffa
Add reversible policy to pending vtxos ( #311 )
...
* [server] descriptor-based vtxo script
* [server] fix unit tests
* [sdk] descriptor based vtxo
* empty config check & version flag support
* fix: empty config check & version flag support (#309 )
* fix
* [sdk] several fixes
* [sdk][server] several fixes
* [common][sdk] add reversible VtxoScript type, use it in async payment
* [common] improve parser
* [common] fix reversible vtxo parser
* [sdk] remove logs
* fix forfeit map
* remove debug log
* [sdk] do not allow reversible vtxo script in case of self-transfer
* remove signing pubkey
* remove signer public key, craft forfeit txs client side
* go work sync
* fix linter errors
* rename MakeForfeitTxs to BuildForfeitTxs
* fix conflicts
* fix tests
* comment VtxoScript type
* revert ROUND_INTERVAL value
---------
Co-authored-by: Pietralberto Mazza <18440657+altafan@users.noreply.github.com >
Co-authored-by: sekulicd <sekula87@gmail.com >
2024-09-19 10:01:33 +02:00
Louis Singer
3782793431
Add tests for adversarial scenarios ( #300 )
...
* fix and test cheating scenario (malicious double spend)
* test and fix async vtxo cheating cases
* add replace statement in go.mod
* Update server/internal/core/application/covenantless.go
Co-authored-by: Pietralberto Mazza <18440657+altafan@users.noreply.github.com >
Signed-off-by: Louis Singer <41042567+louisinger@users.noreply.github.com >
* Update server/internal/infrastructure/wallet/btc-embedded/psbt.go
Co-authored-by: Pietralberto Mazza <18440657+altafan@users.noreply.github.com >
Signed-off-by: Louis Singer <41042567+louisinger@users.noreply.github.com >
* Update server/test/e2e/covenant/e2e_test.go
Co-authored-by: Pietralberto Mazza <18440657+altafan@users.noreply.github.com >
Signed-off-by: Louis Singer <41042567+louisinger@users.noreply.github.com >
* Update server/test/e2e/covenantless/e2e_test.go
Co-authored-by: Pietralberto Mazza <18440657+altafan@users.noreply.github.com >
Signed-off-by: Louis Singer <41042567+louisinger@users.noreply.github.com >
* Update server/test/e2e/covenantless/e2e_test.go
Co-authored-by: Pietralberto Mazza <18440657+altafan@users.noreply.github.com >
Signed-off-by: Louis Singer <41042567+louisinger@users.noreply.github.com >
* remove unused
* [btc-embedded] fix GetNotificationChannel
* [tx-builder] fix redeem transaction fee estimator
* close grpc client in tests
* [application] rework listentoscannerNotification
* [application][covenant] fix getConnectorAmount
* [tx-builder][covenant] get connector amount from wallet
* e2e test sleep time
* [liquid-standalone] ListConnectorUtxos: filter by script client side
* fix Makefile integrationtest
* do not use cache in integration tests
* use VtxoKey as argument of findForfeitTxBitcoin
* wrap adversarial test in t.Run
* increaste test timeout
* CI: setup go 1.23.1
* CI: revert go version
* add replace in server/go.mod
* Update server/internal/core/application/covenant.go
Co-authored-by: Pietralberto Mazza <18440657+altafan@users.noreply.github.com >
Signed-off-by: Louis Singer <41042567+louisinger@users.noreply.github.com >
* remove replace
* readd replace statement
* fixes
* go work sync
* fix CI
---------
Signed-off-by: Louis Singer <41042567+louisinger@users.noreply.github.com >
Co-authored-by: Pietralberto Mazza <18440657+altafan@users.noreply.github.com >
2024-09-16 17:03:43 +02:00
Louis Singer
1387c8da7a
CompleteAsyncPayment: validate signatures and transactions ( #298 )
2024-09-10 19:21:54 +02:00
Louis Singer
0fb34cb13d
Dynamic min-relay-fee and dust amount ( #280 )
...
* [btc-embedded] add chainfee.Estimator and extraAPI interfaces
* dynamic fee amount
* dynamic dust amount
* [client] fix linter errors
* [domain] fix unit tests
* [server] return dust amount in GetInfo RPC
* [sdk] fix lnd dependencie
* go work sync
* fix witness stack size forfeit tx size estimator
* remove hardcoded fee values in covenant txbuilder
* lower liquid feerate
* fix after reviews
* go work sync
2024-09-10 17:22:09 +02:00
Louis Singer
4da76ec88b
New boarding protocol ( #279 )
...
* [domain] add reverse boarding inputs in Payment struct
* [tx-builder] support reverse boarding script
* [wallet] add GetTransaction
* [api-spec][application] add reverse boarding support in covenantless
* [config] add reverse boarding config
* [api-spec] add ReverseBoardingAddress RPC
* [domain][application] support empty forfeits txs in EndFinalization events
* [tx-builder] optional connector output in round tx
* [btc-embedded] fix getTx and taproot finalizer
* whitelist ReverseBoardingAddress RPC
* [test] add reverse boarding integration test
* [client] support reverse boarding
* [sdk] support reverse boarding
* [e2e] add sleep time after faucet
* [test] run using bitcoin-core RPC
* [tx-builder] fix GetSweepInput
* [application][tx-builder] support reverse onboarding in covenant
* [cli] support reverse onboarding in covenant CLI
* [test] rework integration tests
* [sdk] remove onchain wallet, replace by onboarding address
* remove old onboarding protocols
* [sdk] Fix RegisterPayment
* [e2e] add more funds to covenant ASP
* [e2e] add sleeping time
* several fixes
* descriptor boarding
* remove boarding delay from info
* [sdk] implement descriptor boarding
* go mod tidy
* fixes and revert error msgs
* move descriptor pkg to common
* add replace in go.mod
* [sdk] fix unit tests
* rename DescriptorInput --> BoardingInput
* genrest in SDK
* remove boarding input from domain
* remove all "reverse boarding"
* rename "onboarding" ==> "boarding"
* remove outdate payment unit test
* use tmpfs docker volument for compose testing files
* several fixes
2024-09-04 19:21:26 +02:00
João Bordalo
8d339cd3e7
fix typo and spacing
2024-09-04 17:24:26 +01:00
Louis Singer
c183f99244
Make the round participants sign the vtxo tree ( #271 )
...
* [proto] add APIs to send and receive musig2 signing data
* [common] add serialization functions for nonces and signatures
* [application] implements tree signing
* fix: remove old debug logs
* [proto] cleaning
* [common] fix musig2.go
* [application] fixes and logs
* [interface] fix: stop forwarding 2 times the events
* [client] add musig2 support + sign the tree when joining a round
* [interface] add new APIs into permissions.go
* [application][proto] rework PingResponse (return all events type)
* [common] split SetKeys into 2 distinct methods
* [client] fixes according to musig2.go changes
* [sdk] support tree signing + new PingResponse
* [sdk] fixes
* [application] revert event channel type
* [application] use domain.RoundEvent as lastEvent type
* [application] remove IsCovenantLess
* comments
* [application] revert roundAborted changes
* [interface] remove bitcointree dependencie
2024-08-30 14:32:35 +02:00
Marco Argentieri
1b0252f3e4
Migrate to Go Workspaces ( #243 )
...
* api-spec: move the api-spec to root and init go.mod
* go mod tidy
* move buf files in the root as well
* gh action for api-spec changes only
* gh action for api-spec on push and pr
* introduce go.work and remove all replaces
* solve dependencies and force btcd/btcec@v2.3.3
* go work sync
* force btcd/btcec@v2.3.3
* go mod tidy
2024-08-13 03:27:41 +02:00
Pietralberto Mazza
72a7f29bab
Add CreatePayment and CompletePayment ( #229 )
...
Co-authored-by: Marco Argentieri <tiero@users.noreply.github.com >
* Add claim command
* Persist pending data in sqlite repo
* Remove debug log
* Return pending data at interface level
* Fix unlocking btc wallet after restart
* Lint & Fix whitelist permissions
* Fix send command for covenant
* Update client/covenantless/claim.go
Signed-off-by: Marco Argentieri <3596602+tiero@users.noreply.github.com >
* Fix
* Pay for min relay fee instead of estimating fees for redeem and unconf forfeit txs
* Add support for pending payments (coventanless)
* Fixes
* Fixes
* Improve verbosity
* Fix coin selection
* Fix
---------
Signed-off-by: Marco Argentieri <3596602+tiero@users.noreply.github.com >
Co-authored-by: louisinger <louis@vulpem.com >
Co-authored-by: Marco Argentieri <tiero@users.noreply.github.com >
Co-authored-by: Marco Argentieri <3596602+tiero@users.noreply.github.com >
2024-08-10 19:18:02 +02:00
Pietralberto Mazza
57ce08f239
Support macaroons and TLS && Add arkd wallet cmds ( #232 )
...
* Update protos
* Update handlers
* Support macaroons and TLS
* Add arkd cli
* Minor fixes
* Update deps
* Fixes
* Update makefile
* Fixes
* Fix
* Fix
* Fix
* Remove trusted onboarding from client
* Completely remove trusted onboarding
* Fix compose files and add --no-macaroon flag to arkd cli
* Lint
* Remove e2e for trusted onboarding
* Add sleep time
2024-08-09 17:59:31 +02:00
Pietralberto Mazza
8de2df3d7f
Covenant-less ark sdk ( #225 )
...
* Add method to compute vtxo taproot script
* Drop debug logs
* Refactor client:
* Remove dep from stubs in interface
* Remove redeem branch, out of scope (moved to ark client)
* Add example for covenant and covenantless sdk
* Simplify explorer - No need for bitcoin and liquid impls
* Refactor wallet:
* wallet struct for common operations (create, lock/unlock, getType, isLocked)
* liquidWallet struct for liquid operations (derive/get addresses, sign tx)
* bitcoinWallet struct for bitcoin operations (derive/get addresses, sign tx)
* Update utils:
* drop methods to parse tree (moved to ark client)
* add methods for encryption, network parsing, key generation
* add methods for covenant/covenantless redeem branches (move to common?)
* Add support for covenantless sdk:
* move interface to dedicated file
* arkCLient struct for common operations (Init, lock/unlock, get config data, receive)
* covenantArkClient struct for covenant operations (onboard, balance, send, redeem)
* covenantlessArkClient struct for covenantless operations (onboard, balance, send, redeem)
* Fix wasm
* Fixes
* Make explorer use utils.Cache
* Renamings
* Lint
* Fix e2e tests
* Fix e2e test
2024-08-07 01:37:18 +02:00
Pietralberto Mazza
1c67c56d9d
Add admin APIs to manage wallet ( #226 )
...
* Add admin rpcs to manage wallet
* Fix
* Fixes
* Add sleeping time
* Increase sleeping time
2024-08-07 00:36:51 +02:00
Louis Singer
01297ae38c
Add support for covenant-less ASP ( #214 )
...
* scaffolding wallet
* remove wallet db, add loader instead
* wip
* implement some wallet methods
* signing and utxos
* renaming
* fee estimator
* chain source options
* config
* application service
* clark docker-compose
* CLI refactor
* v0 clark
* v0.1 clark
* fix SignTapscriptInput (btcwallet)
* wallet.Broadcast, send via explora
* fix ASP pubkey
* Use lnd's btcwallet & Add rpc to get wallet staus
* wip
* unilateral exit
* Fixes on watching for notifications and cli init
* handle non-final BIP68 errors
* Fixes
* Fixes
* Fix
* a
* fix onboard cosigners + revert tree validation
* fix covenant e2e tests
* fix covenantless e2e tests
* fix container naming
* fix lint error
* update REAME.md
* Add env var for wallet password
---------
Co-authored-by: altafan <18440657+altafan@users.noreply.github.com >
2024-07-30 20:57:52 +02:00
Pietralberto Mazza
89df461623
Update client sdk ( #207 )
...
* Add bitcoin networks
* Refactor client
* Refactor explorer
* Refactor store
* Refactor wallet
* Refactor sdk client
* Refactor wasm & Update examples
* Move common util funcs to internal/utils
* Move to constants for service types
* Add unit tests
* Parallelize tests
* Lint
* Add job to gh action
* go mod tidy
* Fixes
* Fixes
* Fix compose file
* Fixes
* Fixes after review:
* Drop factory pattern
* Drop password from ark client methods
* Make singlekey wallet manage store and wallet store instead of defining WalletStore as extension of Store
* Move constants to arksdk module
* Drop config and expect directory store and wallet as ark client factory args
* Fix
* Add constants for bitcoin/liquid explorer
* Fix test
* Fix wasm
* Rename client.Client to client.ASPClient
* Rename store.Store to store.ConfigStore
* Rename wallet.Wallet to wallet.WalletService
* Renamings
* Lint
* Fixes
* Move everything to internal/utils & move ComputeVtxoTaprootScript to common
* Go mod tidy
2024-07-30 16:08:23 +02:00
Pietralberto Mazza
498394a191
Add endpoint to get round via id & round stage ( #202 )
2024-07-12 15:42:21 +02:00
Pietralberto Mazza
4ff1c7c87a
Add RoundFinalizationEvent to PingResponse ( #200 )
2024-07-11 14:21:12 +02:00
Pietralberto Mazza
d10c724ced
Fix errors on round finalization ( #199 )
...
* Fix ListConnectorUtxos
* Fix
* Fix
* Add log
* Store current round in memoory and drop GetCurrentRound repo api
* Skip lint
2024-07-08 14:22:35 +02:00
Louis Singer
bb208ec995
Implements SQLite repositories ( #180 )
...
* add sqlite db
* add .vscode to gitignore
* add vtxo repo
* add sqlite repos implementations
* add sqlite in db/service
* update go.mod
* fix sqlite
* move sqlite tests to service_test.go + fixes
* integration tests using sqlite + properly close statements
* implement GetRoundsIds
* add "tx" table to store forfeits, connectors and congestion trees
* add db max conn = 1
* upsert VTXO + fix onboarding
* remove json tags
* Fixes
* Fix
* fix lint
* fix config.go
* Fix rm config & open db only once
* Update makefile
---------
Co-authored-by: altafan <18440657+altafan@users.noreply.github.com >
2024-06-19 18:16:31 +02:00
Louis Singer
9fc49d9f08
Add AdminService ( #176 )
...
* add admin service
* go mod tidy
* fix linter: grpc.Dial
* fix ocean get balance
* fix linter
* add .vscode to gitignore
* rework admin balance API
* fix mockedwallet in covenantless pkg
* make proto
2024-05-31 15:46:46 +02:00
Louis Singer
329ba555db
Covenant-less TxBuilder ( #178 )
...
* initial commit
* wip
* add bitcointree pkg in common
* add bitcoin txbuilder
* fix BuildPoolTx test
* fix sweeper
* v0 musig2 congestion tree
* bitcointree: add signatures support
* add Makefile in common
* fix lint
* fix go.mod and TxBuilder
* go mod tidy
* rename "pset" --> "psbt"
* add GetSweepInput method in TxBuilder
* fix extractSweepLeaf (bitcoin tx builder)
2024-05-31 12:49:52 +02:00
Louis Singer
b5bac540ef
Use connectors utxos from swept rounds ( #167 )
...
* use connectors utxos from swept rounds
* revert docker-compose.regtest.yml
* add gitignore
* fix integration tests
2024-05-29 14:34:35 +02:00
Louis Singer
dca302df69
Dynamic amount in unroll closure ( #173 )
...
* update UnrollClosure
* update TrustedOnboarding flow + add TrustedOnboarding e2e test
* fix linter: grpc.Dial
* add comment
* integration tests: faucet the ASP with 2 utxos
2024-05-28 12:13:03 +02:00
Louis Singer
34aff2c4c3
ListVtxos rpc: return swept vtxos ( #168 )
2024-05-06 11:09:11 -05:00
Louis Singer
f1b83bd522
Add expireAt member in ListVtxo RPC ( #160 )
2024-05-01 16:42:13 +02:00
Louis Singer
02ff7c7ed9
Add roundInterval, network and minRelayFee to GetInfo RPC ( #159 )
2024-05-01 16:15:29 +02:00
Louis Singer
dc64947d28
returns forfeitsTxs in Ping RPC while the finalization started ( #161 )
2024-04-29 18:58:11 +02:00
Pietralberto Mazza
7fc8d7d07d
Get current round & Return spent vtxos for user ( #139 )
2024-04-23 16:14:35 +02:00
Louis Singer
740d4fb7b1
Add TrustedOnboarding RPC ( #138 )
...
* add CreateOnboardingAddress rpc
* add TrustedOnboarding rpc
* remove log.Info in notifications.go
2024-04-23 14:54:27 +02:00
Louis Singer
852756eaba
Add integration tests and regtest support ( #128 )
...
* regtest support + integration tests (e2e)
* add integration CI
* add PR trigger on integration CI
* wait for ocean to be unlocked at startup
* integration tests: add tests flags and build docker images at startup
* use nigiri chopsticks-liquid
* fix after reviews
* Update client/init.go
Co-authored-by: Pietralberto Mazza <18440657+altafan@users.noreply.github.com >
Signed-off-by: Louis Singer <41042567+louisinger@users.noreply.github.com >
* do not trigger integration on PR
---------
Signed-off-by: Louis Singer <41042567+louisinger@users.noreply.github.com >
Co-authored-by: Pietralberto Mazza <18440657+altafan@users.noreply.github.com >
2024-04-19 18:57:13 +02:00
Louis Singer
834af545de
Wait for boarding tx confirmation server-side ( #129 )
...
* wait for onboarding confirmation server side
* Update server/internal/core/application/service.go
Co-authored-by: Pietralberto Mazza <18440657+altafan@users.noreply.github.com >
Signed-off-by: Louis Singer <41042567+louisinger@users.noreply.github.com >
* Update server/internal/core/application/service.go
Co-authored-by: Pietralberto Mazza <18440657+altafan@users.noreply.github.com >
Signed-off-by: Louis Singer <41042567+louisinger@users.noreply.github.com >
* handleOnboarding func: sleep 30s if an error happens then retry
---------
Signed-off-by: Louis Singer <41042567+louisinger@users.noreply.github.com >
Co-authored-by: Pietralberto Mazza <18440657+altafan@users.noreply.github.com >
2024-03-08 17:24:47 +01:00
Louis Singer
066e8eeabb
Prevent getting cheated by broadcasting forfeit transactions ( #123 )
...
* broadcast forfeit transaction in case the user is trying the cheat the ASP
* fix connector input + --cheat flag in CLI
* WIP
* cleaning and fixes
* add TODO
* sweeper.go: mark round swept if vtxo are redeemed
* fixes after reviews
* revert "--cheat" flag in client
* revert redeem.go
* optimization
* update account.go according to ocean ListUtxos new spec
* WaitForSync implementation
* ocean-wallet/service.go: remove go rountine while writing to notification channel
2024-03-04 13:58:36 +01:00
Pietralberto Mazza
6d0d03e316
Cleanup ( #121 )
...
* Cleanup common
* Cleanup client
* Cleanup server
* Renamings
* Tidy up proto
* Update ocean protos
* Fixes
* Fixes
2024-02-28 18:05:03 +01:00
Pietralberto Mazza
1650ea5935
Support onboarding & Drop faucet ( #119 )
...
* Renaming
* Add server-side support for onboarding
* add onboard --amount command
* support client side onboarding
* Drop dummy tx builder
* Drop faucet
* Fixes
* fix public key encoding
* fix schnorr pub key check in validation
* fix server/README to accomodate onboarding
---------
Co-authored-by: Louis <louis@vulpem.com >
Co-authored-by: João Bordalo <bordalix@users.noreply.github.com >
2024-02-23 16:24:00 +01:00
Louis Singer
a95a829b20
Delay unilateral exit and support send to onchain address ( #117 )
...
* add delay on redeem close + forfeit close
* increase default round lifetime (16 minutes min)
* add sequence to final pset
* update CLI and server to support delayed vtxos oncahin
* rename future to "locked"
* add configurable EXIT_DELAY variable
* renaming
* rename "close" --> "closure"
* rename "close" to "closure"
* error message config.go
2024-02-22 16:47:52 +01:00
Louis Singer
936f9c5f51
Drop useless encoding ( #110 )
...
* drop asec private key encoding
* remove pubkey/relaykey/url encoding in common pkg
* fix pubkey encoding
* remove SecKey
2024-02-20 17:35:11 +01:00
Pietralberto Mazza
99961d9fd5
Update event and projection stores in sync ( #102 )
2024-02-12 14:07:15 +01:00
Pietralberto Mazza
dc00d60585
Rename folders ( #97 )
...
* Rename arkd folder & drop cli
* Rename ark cli folder & update docs
* Update readme
* Fix
* scripts: add build-all
* Add target to build cli for all platforms
* Update build scripts
---------
Co-authored-by: tiero <3596602+tiero@users.noreply.github.com >
2024-02-09 19:32:58 +01:00