Commit Graph
266 Commits
Author SHA1 Message Date
wiesche 2b6b58a093 fix contract context retries 2026-09-11 19:55:25 +02:00
wiesche d2f37192b3 clean up slatepack TODO 2026-09-08 18:09:44 +02:00
wiesche b0722adce9 infer amount when signing contracts 2026-09-08 18:03:23 +02:00
wiesche 8cf5069c07 find contract tx logs by slate 2026-09-08 12:34:09 +02:00
wiesche f56d70dd17 test contract accounts 2026-09-08 11:41:09 +02:00
wiesche 0177b49b05 test self spend filters 2026-09-08 10:35:18 +02:00
wiesche 9ac678291a keep outgoing slatepacks readable 2026-09-07 22:54:00 +02:00
wiesche c613d82daf respect slate version 2026-09-07 18:53:36 +02:00
wiesche 538040865a clean up contract helpers 2026-09-06 20:22:19 +02:00
wiesche e0e33eae42 add contract proof options 2026-09-06 19:12:28 +02:00
wiesche 3f1d15fea0 add sender nonce proofs 2026-09-06 08:58:14 +02:00
wiesche dfce3ef377 test contract inputs 2026-09-05 11:51:03 +02:00
wiesche bc6516ed81 add contract outfile 2026-09-05 11:26:24 +02:00
wiesche fb0d0493bc add contract fee rates 2026-09-05 11:00:03 +02:00
wiesche fb99cd6c9b add contract ttl 2026-09-05 10:06:00 +02:00
wiesche 93881dfb35 validate contract participant count 2026-09-04 21:35:36 +02:00
wiesche 7bd69374af document contract account binding 2026-09-04 21:00:37 +02:00
wiesche 3d5b769511 derive contract signing state 2026-09-04 20:47:07 +02:00
wiesche b8ede99308 test contract input features 2026-09-04 16:13:32 +02:00
wiesche 483b29597f improve contract view and slatepack handling 2026-09-04 15:38:46 +02:00
wiesche 172a674531 test v4 slatepack compatibility 2026-09-04 12:11:09 +02:00
wiesche fff7948448 complete foreign middleware hooks 2026-09-02 20:24:50 +02:00
wiesche 2fc8d89add test contract foreign api 2026-09-02 20:24:39 +02:00
wiesche daa40683e9 validate contract states 2026-09-02 18:33:33 +02:00
wiesche 70617045bc validate contract net change 2026-09-02 17:31:11 +02:00
wiesche 5809be06e4 support contract minimum confirmations 2026-09-02 15:58:47 +02:00
wiesche a65ab35310 verify contract slate commitments 2026-09-02 14:03:16 +02:00
wiesche 9838ac3d8d fix invoice proof amount 2026-09-01 19:48:37 +02:00
wiesche 1d342e59de fix early payment proof versioning and validation 2026-09-01 19:19:06 +02:00
wiesche 88af108b88 verify invoice promises before signing 2026-09-01 16:13:22 +02:00
wiesche a9d82a5039 fix contract slatepack cli output 2026-09-01 15:37:11 +02:00
wiesche f574e150ef fix contract view direction 2026-09-01 15:08:08 +02:00
wiesche d13664574d configure owner api listen address 2026-09-01 14:21:14 +02:00
wiesche 21d9508241 fix contract handling and update docs 2026-09-01 13:52:18 +02:00
wiesche dc46cbe73a clean up contract review findings 2026-08-31 23:43:58 +02:00
wiesche 0116bcf74b merge upstream staging into contracts 2026-08-31 18:40:03 +02:00
wiesche a8f194ba90 release 5.5.0 2026-08-11 22:56:57 +02:00
ardocratandwiesche 2743dff020 Make updater APIs public (#782) 2026-08-09 19:49:29 +02:00
ardocratandwiesche c0245a03ea Optimize outputs scan and selection (#780) 2026-08-09 19:49:29 +02:00
ardocratandwiesche a3fb40caac Wrong Slatepack address fix (#773) 2026-08-09 19:49:29 +02:00
ardocratandwiesche 9e3ec0ed5b Global config instance (#769)
* config: global instance

* fix: cli tests

* fix: owner api tests

* config: save tor config

* fix: owner rpc tests

* fix: set config file path on init and owner api call

* tor: store launched services, get global config at command loop, remove unused listen args, check for empty global config to set default, do not save empty tor config at owner

* api: update config in memory after successful file write

* arti: restart proxy in loop

* fix: comment for tor config save

* config: set or init, update without error

* config: scoped tor config

* build: update lock file

* config: ability to store multiple configurations at memory from config path

* tor: restart service on config change

* fix: owner api test

* foreign: pass tor config from args, stop service, error handling

* arti: move runtime wrapper to single file

* config: read existing config from file at create_config

* config: handle error on read

* arti: single dir for cache

* foreign: register config listener before launch

* config: save temp

* config: remove unused error type

* config: make path and members not optional, return an error on config creation if it exists, pass default tor config to send if not set

* arti: non public runtime wrapper

* config: migrate comments

* fix: rpc tests

* config: return from cache if exists

* config: save disabled tor config when null provided at owner and tor section was not set

* config: update tor with args at listener

* config: pass pathbuf directly on creation

* config: unique tmp file name, setting permissions and providing config version

* fix global config handling

* fix config persistence

* fix tor service restart

* fix config synchronization

* require wallet close before changing data directory

* unify global config updates

---------

Co-authored-by: wiesche <wiesche89@googlemail.com>
2026-08-09 19:49:29 +02:00
ardocratandwiesche 5437dc0678 Update deps (#768)
* build: update grin submodule to last staging

* build: update grin submodule

* build: remove remove_dir_all dependency

* build: update rpassword

* build: update semver

* build: remove unused deps

* build: update ring

* build: update lock file deps

* build: update rustyline

* build: update ed25519-dalek

* build: update curve25519-dalek

* build: update age

* build: update uuid

* fix: uuid test

* build: update x25519-dalek

* fix: x25519-dalek build

* build: update arti

* build: update grin submodule

* build: update hyper

* fix: initialize rustls provider for tests

* build: update grin submodule

* fix: rustls install provider

* tor: share getting private key

* fix: show an error on node version parse

* cli: renamed prompt password method

* fix: replace into_boxed_slice with try_from

* fix: dalek tests for onion

* config: comment expanded secret key

* fix: import api body for controller

* password: handle prompt error

* wallet: parse node error message

* tests: do not use random values for sign messages

* build: make hook executable

* build: cargo format all

* rustls: do not install provider at tests and globally

* build: update grin submodule

* build: fix api channel from grin submodule

* args: use read_password for piped prompt

* build: remove unused dep

* test: fixed signature

* preserve piped pw input

---------

Co-authored-by: wiesche <wiesche89@googlemail.com>
2026-08-09 19:49:29 +02:00
ardocratandwiesche b6b3bdd0fd Connection timeout (#765) 2026-08-09 19:48:53 +02:00
wiescheandwiesche b8d46c917f Optimize tor sync flow (#763) 2026-08-09 19:48:53 +02:00
ardocratandwiesche 5415a9b181 Integrated Tor arti Client (#750)
* tor: integrated client for listener, update tokio to last version

* tor: send transaction with integrated client

* build: code format

* tor: optimize bootstrap percent check

* tor: handle config build error

* tor: do not show slatepack address if tor not launched

* tor: handle keystore errors

* tor: keep service launched

* tor: bootstrap timeout, clean cache before client launch

* tor: post request timeout

* fix: post timeout

* build: update deps after merge

* tor: store arti runtime

* tor: do not send over tor if `manual` arg presents or `skip_send_attempt` set at config

* fix: arg name

* tor: handle arti runtime creation error

* tor: handle connection error

* tor: handle bootstrap error

* tor: handle start service name error

* tor: handle service config creation error

* tor: service proxy errors

* tor: handle service key creation emptiness

* build: format code

* build: update arti to 0.43, hyper to 0.10.1

* api: start foreign listener before tor connection

* tor: handle json parse errors

* tor: prevent to create several client runtimes, ability to recreate

* tor: return bootstrap error

* tor: handle host parse error

* tor: restart proxy on error

* tor: do not use integrated client when config value use_integrated is missing, add logging

* build: update lock file
2026-08-09 19:48:53 +02:00
ardocratandwiesche c6dfaf5e8b Node submodules (#758)
* build: use node submodule as dependency

* ci: checkout submodules

* docs: add contributing and build instruction

* ci: update release build

* git: remove old submodule

* git: grin staging submodule

* git: add submodule dir
2026-08-09 19:48:39 +02:00
ardocratandwiesche 308f0a8458 Update lmdb (#755)
* wallet: update lmdb from store crate, migrate single backend from trait to struct, update tests cargo deps and design doc

* backend: do not panic on iter and directory creation

* return  iterator errors

* build: update to last node revision

* fix: height selection for scan, remove unused mutability for wallet

* wallet: remove unused mutability conversion

* tx: store slate state at database

* build: cargo fmt

* fix: do not return error when slate not found on tx slate state update

* lmdb: do not collect all tx log records at iterator, show read errors at log

* fix: save slate state, return error if slate not found

* tx: specify amount of bad txs on slate state update error

---------

Co-authored-by: Joerg <wiesche89@googlemail.com>
2026-08-09 19:48:39 +02:00
ardocratandwiesche 15833b23c0 Save last scanned block info for wallet scanning (#748)
* scan: save last scanned block info for initial wallet scanning

* scan: save start height at scanned block info on outputs collecting

* scan: 10k blocks batches

* fix: include last height into batch on scan

* scan: save hash of last block

* scan: add larger window (2880 blocks) to scan outputs when updating wallet state

* add test batched scan and resume, add scan doc

* rename corrupted restore test

---------

Co-authored-by: Joerg <wiesche89@googlemail.com>
2026-08-09 19:48:01 +02:00
jwinterm 4883c91d53 Merge upstream staging into contracts
Catches up with #773, #779 and #781. Only the import blocks in
command.rs and api/foreign.rs conflicted.
2026-07-28 16:27:22 -04:00
jwinterm 51583ac90f Contracts: document the stored tx window and record the tx location
save_step writes the signed transaction after the wallet state batch has
committed, so the write can fail with the tx log entry and the input
locks already persisted. store_tx writes a file outside LMDB, as it does
for every transaction in the wallet, so the two cannot share a commit
without moving stored transactions into the database, which backend.rs
already carries a TODO for. Cancelling is the way out: it releases the
inputs without reading the stored tx, and nothing has been broadcast
because the error returns before the caller posts. Tested by removing
the file and cancelling.

Also set stored_tx on the entry, as internal::selection does for a
standard send. It was left unset, so txs reported no transaction data
for every contract even though the transaction was stored.
2026-07-28 15:55:24 -04:00