* client: use native tls and disable default features for reqwest
* build: bring back reqwest default features except tls
* client: remove tls selection
* 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>
* 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
* 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>
* client: use native tls and disable default features for reqwest
* build: bring back reqwest default features except tls
* client: remove tls selection
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.
* 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>
* 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
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).
* 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>
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).
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.
* 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
* add all comsig code, update to master branch
* refactor code into libwallet, remove some redundancy and update type exports
* added api calls and unit test for comsig request creation
* Addition of JSON-RPC mwixnet function call
* attempt to debug invalid params
* additions to support json doctesting for comsig creation
* tweaks to testing and documentation updates
* dependencies for tests
* 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>