Commit Graph
567 Commits
Author SHA1 Message Date
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 b406a4f707 close wallet before deleting 2026-09-02 21:57:04 +02:00
wiesche 39ba6c4ff2 run owner rpc doctests on windows 2026-09-02 20:37:44 +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 210a5a6ded lock contract selection doc 2026-09-02 18:14:58 +02:00
wiesche 6c09add70e lock contract selection 2026-09-02 18:09:02 +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 893e598512 make child key allocation atomic 2026-09-01 20:51:13 +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 6e08ec12e0 keep old payment proofs readable 2026-09-01 15:08:08 +02:00
wiesche f574e150ef fix contract view direction 2026-09-01 15:08:08 +02:00
wiesche 5596884097 remove unrelated changes 2026-09-01 14:31:14 +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 12b8072d2d fix contract overflow 2026-08-31 19:43:14 +02:00
wiesche 0116bcf74b merge upstream staging into contracts 2026-08-31 18:40:03 +02:00
ardocratandGitHub ffcdf7831b Merge pull request #784 from mimblewimble/release/v5.5.0
Release v5.5.0
2026-08-12 11:33:20 +03:00
wiesche a8f194ba90 release 5.5.0 2026-08-11 22:56:57 +02:00
ardocratandGitHub de96a53e94 ci: fix github macos platform build (#785)
* ci: fix github macos platform build

* ci: macos aarch64-apple-darwin target
2026-08-09 20:45:19 +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
154423fec8 Update jayson and uuid (#777)
* build: update jayson and uuid

* npm: update lock file to v3

* npm: update lock file

---------

Co-authored-by: ardocrat <ardocrat@gri.mw>
2026-08-09 19:49:29 +02:00
wiescheandwiesche 28908ea5d8 expose mwixnet onion apis (#781) 2026-08-09 19:49:29 +02:00
ardocratandwiesche 982bc27f76 Use native tls for client (#779)
* client: use native tls and disable default features for reqwest

* build: bring back reqwest default features except tls

* client: remove tls selection
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
09aebadce0 Bump lodash from 4.17.21 to 4.18.1 (#774)
* build: update lodash to 4.18.1

* fix: readme

* docs: add owner api authentication setup

* build: update package-lock.json to version 3

* fix: token result, inline some vars

---------

Co-authored-by: ardocrat <ardocrat@gri.mw>
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 c484ef03e0 Global Tor client state (#762)
* tor: global client state

* tor: optimize init client thread-safety

* tor: handle config change on client init

* tor: add logging for client reuse or reinit

* tor: do not reuse arti client for requests
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 7f03f9527b Contracts: bring the actions README in line with the code
The introduction still described a /setup endpoint that no longer exists
and called view and revoke future work. Describe the lifecycle as it is:
setup is a step inside new and sign, not a call, and all four actions
have owner API methods and commands.

Prune the TODO and test lists to what is still open, and record what the
contract flows do not support.
2026-07-28 16:24:20 -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 370cd4fae7 Contracts: make the invoice proof reader fully fallible
InvoiceProofBin is a normal Readable, so a malformed encoding must come
back as a serialization error. The two secp keys, the ed25519 sender
address and the memo were unwrapped or copied without a length check.
Map them all to grin_ser errors, and take the proof type with a cast
that cannot lose data rather than a fallible conversion.
2026-07-28 11:52:31 -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