Commit Graph
184 Commits
Author SHA1 Message Date
jwinterm 3fba1319fb Merge upstream staging (#755 multi-LMDB backend) into contracts
Reconcile the contract feature with #755, which replaced the WalletBackend
trait with a concrete WalletBackend<C,K> struct (libwallet/src/backend.rs) and
removed impls/src/backends/lmdb.rs.

- Port the contract module and contract API entry points from the trait form
  (T: WalletBackend<'a,C,K>) to the concrete struct.
- Re-home next_child_for and a parent_id+log_id get_tx_log_entry onto backend.rs.
- Re-apply the self-spend tx-log filters, cancel-loop, v5 payment-proof fields,
  and Context contract fields onto staging's rewritten files.
- Adapt to fallible iter()/tx_log_iter() and self-consuming batch commit.

Full suite green (53 binaries / 191 tests).
2026-06-10 13:48:34 -04:00
06ab92a619 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-06-09 13:54:51 +02:00
jwinterm 571b1f968a Contracts: only create a context on a genuine miss
get_private_context() flattened "missing context" and real store/keychain
errors into one error, so the contract code created a fresh context on ANY
error (e.g. a decryption failure from a wrong keychain mask), masking the
real problem.

- add Error::NotFoundErr; the grin_store conversion maps NotFoundErr through
  faithfully (other store errors stay Backend).
- contract get_or_create / get_net_change / sign create-or-skip only on
  NotFoundErr and propagate every other error.

Addresses PR #754 review (context.rs, utils.rs, sign.rs).
2026-06-04 19:34:21 -04:00
jwinterm 8c7c0d049d Contracts: derive output keys under the contract's account
New contract outputs were derived with next_child(), which uses the wallet's
active account. During a late-lock the active account can differ from the one the
contract context was created under, so an output could be created in the wrong
account. Derive under context.parent_key_id instead.

- WalletBackend: add next_child_for(parent_key_id, mask); next_child delegates to it.
- add_outputs_to_ctx derives via next_child_for(&context.parent_key_id, ..).
- parent_key_for returns Result and errors (UnknownAccountLabel) on an unknown
  account name instead of silently falling back to the active account.
- test: a contract referencing an unknown account now errors.

Addresses PR #754 review (context.rs, utils.rs).
2026-06-04 16:53:16 -04:00
jwinterm b7b7a6d21d Merge upstream staging into contracts
Bring the branch current with upstream staging (= master + #748). The earlier
"Merge branch master into contracts" used a stale local master snapshot, which
left the branch ~41 commits behind; this merges the current tip, including the
grin 5.4.0 dependency bump (#745) and the tx-delete / retrieve_txs fixes.

Only Cargo.lock conflicted (regenerated). Full cargo test --workspace green
(52 binaries / 185 tests).
2026-06-03 15:27:43 -04:00
jwinterm f7d3692ee8 Merge branch 'master' into contracts
Bring the contracts feature branch up to current master, which has since
landed rust 1.80 support (#722), the canonical mwixnet onion code (#726),
and node-client proxy support (#738).

Conflict resolution:
- libwallet/src/mwixnet/*: take master's (#726), dropping the contracts
  branch's older divergent copy. owner.rs::create_mwixnet_req updated to
  master's API (use_test_rng) and master's flat re-export imports.
- Cargo manifests/lock/.cargo: master's deps & version; re-add serde_with
  for Slate v5; keep contracts' .cargo/config.toml (Windows static-CRT).
- lib.rs: keep serde_derive AND serde_with macro_use; single mwixnet decl.
- error.rs: union of master + contracts variants; flat mwixnet re-exports.
- api/libwallet owner.rs: master's #738 + create_mwixnet_req plus the
  contract_* entry points; drop duplicate older create_mwixnet_req method.
- slatepack/armor.rs, node_clients/resp_types.rs: take master's.

Workspace builds; libwallet lib tests pass (34/34). The Slate version()
bug, issue #729 fix, and de-panicking follow in subsequent commits.
2026-06-02 18:26:08 -04:00
ardocratandGitHub 602d79e868 Update rust edition to 2021 (#749)
* build: update rust edition 2021

* cargo: format all

* build: fix tests and warnings
2026-05-14 12:58:22 +02:00
AnynomoussandGitHub c337a7aad6 Update default.rs
removed 2fA code 😅
2026-05-07 16:05:16 +02:00
AnynomoussandGitHub 555469fb75 Merge pull request #1 from mimblewimble/master
Trying to merge master 9 commits into my branch. All checks passed.
2026-04-14 10:29:22 +02:00
David BurkettandGitHub e732cbdc44 Merge pull request #745 from ardocrat/grin_5.4.0
Grin 5.4.0 update
2026-03-23 15:54:57 -04:00
ardocrat c4f473568f tx: ability to delete transaction from database 2026-03-21 22:48:52 +03:00
ardocrat d2edbe12d3 build: update deps to grin 5.4.0 and hyper 0.14 2026-03-10 03:32:20 +03:00
Anynomous ea1d68fd03 Normalize line endings, attempt 2 2025-09-18 14:56:43 +02:00
Anynomous 86de7c6bcd Normalize line endings 2025-09-18 14:51:29 +02:00
Anynomous 34b1d0c665 Fixed issue with top-dir without init, better absolut e path and more cleanup 2025-09-12 16:41:41 +02:00
ardocratandGitHub 930a44d456 http: provide proxy on node client creation (#738) 2025-06-18 16:01:06 +01:00
Anynomouss da0050172b Some last fixes to format directory paths using OS seperator everwhere in all warning messages 2025-04-11 17:21:52 +02:00
Anynomouss a37aa09f9f Smart config loading, initializing, normal and template works, do some last tests on Linux 2025-04-10 17:16:45 +02:00
Anynomouss 39f00fe8b7 Fix for top dir with backlashes to work on Linux and to properly format the path in the seed generation message 2025-04-08 11:04:12 +02:00
Anynomouss 004c46958b Second attempt to fix double path generation bug present in the original grin-wallet code, probably by an inherent bug in fs::create_dir_all 2025-04-04 15:32:23 +02:00
Anynomouss 21188555c6 Additional fix for double path generation bug present in the original grin-wallet code, test on Linux if it works 2025-04-04 14:37:30 +02:00
Anynomouss 37715f189f Fixes config node_dir problems, all logic for config creation moved grin-wallet.rs -> config::initial_setup_wallet, requires more testing! 2025-04-04 12:20:46 +02:00
Yeastplume b1ffe86a55 Revert "Fix for many wallet config errors (#731)"
This reverts commit 7ceade4449.
2025-03-08 13:28:27 +00:00
AnynomoussandGitHub 7ceade4449 Fix for many wallet config errors (#731)
* Added an extra warning message when failing to reach the node, work in progress on changing default dir for node api ssecret 'foreign_api_secret'

* In the middle of debugging hell, default overwrite any updates to the config made earlier, its never written to a file when running init

* More debugging, next trace the overwrite of the config

* Added get get_node_path function, seperating wallet dir and node_dir -compiling but some  warnings

* Tested wallet config creation fix for Issues: #728 #3394 Pull 3420, partial fix for 3002

* Removed some debugging code

* Fixed passing config to create_config function, some more test needed before pulling to main

* All test succeed: a) normal, b) top-dir, c) here, d) with default config template in working dir

* Cleaning up

* Fixed a single test for config that needed adjusting
2025-03-08 12:22:59 +00:00
Anynomouss b45b603382 All test succeed: a) normal, b) top-dir, c) here, d) with default config template in working dir 2025-03-01 13:52:04 +01:00
Anynomouss 7b1144e4ec Fixed passing config to create_config function, some more test needed before pulling to main 2025-03-01 13:28:41 +01:00
Anynomouss 0c5bdde4e8 Removed some debugging code 2025-02-18 13:44:09 +01:00
Anynomouss c0216a152a Tested wallet config creation fix for Issues: #728 #3394 Pull 3420, partial fix for 3002 2025-02-14 16:14:20 +01:00
Anynomouss 80586cc175 Added get get_node_path function, seperating wallet dir and node_dir -compiling but some warnings 2025-02-13 17:11:38 +01:00
Anynomouss 4fb0b7b387 In the middle of debugging hell, default overwrite any updates to the config made earlier, its never written to a file when running init 2025-01-30 16:25:41 +01:00
Anynomouss 82e61dd28a Added an extra warning message when failing to reach the node, work in progress on changing default dir for node api ssecret 'foreign_api_secret' 2025-01-24 13:45:55 +01:00
YeastplumeandGitHub 3b0cc2401a Versioning updates for alpha release (#727) 2024-11-01 12:40:48 +00:00
YeastplumeandGitHub b7104cd654 [MASTER] Updates for Rust 1.80+ (#722)
* warning fixes

* warning cleanup
2024-09-19 10:51:10 +01:00
yeastplume 7ac35f134b Revert "[CONTRACTS] Contracts branch update for 1.80 (#718)"
This reverts commit cdd63fb565.
2024-09-19 09:05:44 +00:00
cdd63fb565 [CONTRACTS] Contracts branch update for 1.80 (#718)
* Simple contracts restructured v3 (#675)

* Add prototype contract implementation

Lacks:
- Payment proofs (add early payment proofs)
- Tests
- Better structure

* Separate contract utilities

* Simplify the main setup/sign code flow

* Remove commented initial_sec_key assignment

* Simplify sign::compute function

* Add logic for "removal" of secret keys from the context

* Further simplify a bit sign and setup

* No need for mutable context when adding outputs

* Refactor the commented code (lol)

* Refactor a bit

* tmp

---------

Co-authored-by: oryhp <gtrphyro@gmail.com>

* contract test fixes (#676)

* [Contracts] Experimental Slate v5 (#677)

* beginning to add and modify slate version 5

* completion of conversions from V5 to V4 Slate

* timestamp and memo fields

* upgrade/downgrade serialization of v5 slates

* add v5 binary slate versions + start of tests

* add bin slate ser/deser to tests

* ensure serialization of timestamp always excludes milliseconds

* start to update v5 tests, update v5 documentation

* add fn to generate populated internal slate for conversion testing

* add basic tests to convert all slate versions

* update

* commit cargo.lock

* [WIP] [Contracts] Early payment proofs (#681)

* add types and beginnings of signature utils

* add proof serialization

* serialisation of proof data + signature operation

* add serialization type for invoice proof + separate bin wrapper version

* add witness data + serializion to invoice payment proof, insert verfication functions in place in order to begin verification testing

* tests and infrastructure in place for validation

* verification of promise sig

* added verification of promise signature, infrastructure up to the point where a signature must be subtracted

* attempting to figure out differences between recipient nonce that's getting stored and calculated recipient nonce

* implementation of witness verification function, retrieve relevant values and re-validate derived recipient partial signature

* move stored portion of invoice proof into core types for storage, need to rename invoice proof

* define/refine the stored portion of payment proofs type 2?

* Folding all proof data into tx log entry storage

* back to importing master

* remove cargo files from diffs

* remove a lot of extra debug output

* return proof witness as part of proof retrieval, define json serialization of invoice proof + witness fields

* finish adding verification steps to foreign API

* remove redundant promise sig field

* move lcation of sign/verify calls

* Replace Azure Pipelines with Github Actions (#688)

* Update CI Badge on README.MD (#690)

* Trigger CI on push and pull request (#693)

* Update versioning to 5.2.0-beta.1 against grin 5.2.0-beta.3 (#691)

* update versioning to 5.2.0-beta.1 against grin 5.2.0-beta.3

* tweak for CI trigger

---------

Co-authored-by: Quentin Le Sceller <q.lesceller@gmail.com>

---------

Co-authored-by: Quentin Le Sceller <q.lesceller@gmail.com>

* fix Cargo.lock

* Contracts - Test fixes + warning cleanups (#694)

* clean up warnings in libwallet crate

* clean up warnings in controller crate

* update all contract tests with awareness of new proof structure

* added explicit payment proof tests for both rsr and srs (#695)

* Basic mwmixnet send (#696)

* integrating onion library

* updates and changes to support newly included mwmixnet types

* add (incorrect) owner api function

* turn off test for now

* switch working grin branch to master

* fix doctests for build

* update cargo lock in attempt to fix croaring build on CI server

* update cargo lock with upstream thiserror crate

* update test dependency for croaring

* [Contracts] Add self spend transaction state (#697)

* Add self spend transaction state

* subtle errors with output states and tx lookups - fixes

* [Contracts] Slatepack v5 Deserialization fix (#698)

* add V5 deserialization test + fixes

* clarify comment

* upwrap fix during v4 deserialization

* further unwrap removal

* update cargo lock, use latest grin packages

* addition of self-spend cancel + tests (#699)

* add tests + legacy self send cancel (#702)

* [Contracts] Cancel self-spend TX Pt. 2 (#703)

* add tests + legacy self send cancel

* add missing file

* Update grin to latest master, change versioning label to include contracts (#712)

* Add owner_api_listen_interface as hidden configuration field (#714)

* updates for rust 1.80

* updates for rust 1.80

---------

Co-authored-by: oryhp <gtrphyro@gmail.com>
Co-authored-by: Quentin Le Sceller <q.lesceller@gmail.com>
2024-08-27 12:30:22 +01:00
Yeastplume 0b24640c89 update from 1_80 branch 2024-08-27 11:13:10 +00:00
Yeastplume d022f26adc updates for rust 1.80 2024-08-26 11:38:56 +00:00
YeastplumeandGitHub 765f11b168 Update working version on master (#713)
* Update working version on master

* update cargo lock
2024-05-21 10:20:09 +01:00
YeastplumeandGitHub c06c91d41a Update grin to latest master, change versioning label to include contracts (#712) 2024-05-20 09:56:05 +01:00
YeastplumeandGitHub 8069de9a56 Revert "update and versioning for v5.3.1 (#709)" (#710)
This reverts commit 3d6f4b8437.
2024-05-14 09:36:39 +01:00
YeastplumeandGitHub 3d6f4b8437 update and versioning for v5.3.1 (#709) 2024-05-14 09:35:42 +01:00
Yeastplume 57bf8be0cb merge from 5.3.0 master release 2024-04-30 11:11:25 +01:00
YeastplumeandGitHub 7741812599 Update versioning, dependencies for 5.3.0 release (#708) 2024-04-24 10:20:16 +01:00
YeastplumeandGitHub f28b8c653a Compilation fixes for master (#700)
* update to use grin master, cargo update

* and remaining crates
2024-02-16 11:19:01 +00:00
YeastplumeandGitHub 165632b1dc Basic mwmixnet send (#696)
* integrating onion library

* updates and changes to support newly included mwmixnet types

* add (incorrect) owner api function

* turn off test for now

* switch working grin branch to master

* fix doctests for build

* update cargo lock in attempt to fix croaring build on CI server

* update cargo lock with upstream thiserror crate

* update test dependency for croaring
2023-10-03 14:45:59 +01:00
YeastplumeandGitHub fa78d72d35 Contracts - Test fixes + warning cleanups (#694)
* clean up warnings in libwallet crate

* clean up warnings in controller crate

* update all contract tests with awareness of new proof structure
2023-08-10 13:24:25 +01:00
Yeastplume e674c4a2f0 Merge branch 'master' into contracts 2023-08-08 11:16:32 +01:00
12a25f82f1 Update versioning to 5.2.0-beta.1 against grin 5.2.0-beta.3 (#691)
* update versioning to 5.2.0-beta.1 against grin 5.2.0-beta.3

* tweak for CI trigger

---------

Co-authored-by: Quentin Le Sceller <q.lesceller@gmail.com>
2023-08-03 12:40:04 +01:00
Yeastplume ddd3e0102d Merge branch 'master' into contracts 2023-08-01 10:57:14 +01:00
YeastplumeandGitHub c0b7c68b13 Update sysinfo crate to 0.29.6 (#685)
* update sysinfo package to fix build error

* update tor process sysinfo calls to new api

* update deprecation warnings

* small logic cleanup

* tweak to retrigger CI

* new_all() not required

* give longer for test thread to stop to hopefully alleviate inconsistent CI failures
2023-07-26 12:59:36 +01:00