Commit Graph
151 Commits
Author SHA1 Message Date
wiesche edb0660ea3 merge staging 2026-09-15 22:30:41 +02:00
wiesche 0683a3a307 share proof amount and drop serde defaults 2026-09-15 21:59:15 +02:00
wiesche a1d683294b fix early proof export and slatepack account errors 2026-09-15 20:28:20 +02:00
wiescheandGitHub 991ba1a1f7 use current header version in new slates (#804)
* use current header version

* flip header version check and bump min node version
2026-09-15 19:42:56 +02:00
wiescheandGitHub e5e319b47e reject wrong slate states in receive and finalize (#807) 2026-09-14 21:08:36 +02:00
wiesche 049e73ac07 clean up contract tests 2026-09-14 08:13:48 +02:00
wiesche f64e502fcf clean up contracts 2026-09-12 11:19:57 +02:00
wiesche 1527537b57 fix contract setup retries 2026-09-12 08:45:28 +02:00
wiesche 2b6b58a093 fix contract context retries 2026-09-11 19:55:25 +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 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 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 21d9508241 fix contract handling and update docs 2026-09-01 13:52:18 +02:00
wiesche 0116bcf74b merge upstream staging into contracts 2026-08-31 18:40:03 +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 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
jwinterm f420e3906e Contracts: remove the unused contract test module
controller/tests/contract/mod.rs was never declared as a test module, so
none of it was compiled, and most of it was commented out. Its
create_wallets is an older copy of the one in the shared test module,
which every contract test already uses.
2026-07-28 11:38:33 -04:00
ardocratandGitHub cd6285f8c0 Wrong Slatepack address fix (#773) 2026-07-26 18:07:53 +02:00
jwinterm 6c7026604a Contracts: clear the warnings introduced by this PR
- Remove unused imports in api_impl::owner, backend, contract::utils,
  v5_bin and the contract tests.
- Remove unused test bindings, and document the shared slate test
  fixtures module.
- Drop the commented-out assertion block in the mwixnet contract test,
  along with the height bookkeeping and import that only it used.
2026-07-26 08:18:43 -04:00
jwinterm 894023a863 Merge upstream staging into contracts
Brings the branch current with staging for review.

- ed25519-dalek 1.0.0-pre.4 to 2: PublicKey is now VerifyingKey, Keypair
  is replaced by SigningKey, and from_bytes takes a fixed-size array.
  Ported the contract proof code and the V5 slate serializers, following
  the pattern staging already uses in v4_bin.
- owner_single_use and foreign_single_use now take the wallet instance
  and a config path rather than an optional API handle. Updated the
  contract call sites in command.rs and the contract tests.
- update_tx_slate_state moved to api_impl::types; dropped the local copy.
- Took staging's fixed-size-array form of the slate signature guards; it
  is equivalent to 25a5434 and keeps the file in sync with upstream.
- The grin node is now a submodule, so a build needs
  git submodule update --init.
2026-07-26 07:14:23 -04:00
d2fe2b90f6 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-07-24 22:15:19 +02:00