Commit Graph
97 Commits
Author SHA1 Message Date
wiesche 210a5a6ded lock contract selection doc 2026-09-02 18:14:58 +02:00
wiesche 5809be06e4 support contract minimum confirmations 2026-09-02 15:58:47 +02:00
wiesche a9d82a5039 fix contract slatepack cli output 2026-09-01 15:37:11 +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 6d6e19832c Contracts: wire up the contract view command
contract view was in the CLI help but the command returned Not
implemented, and there was no owner API entry point for the existing
libwallet implementation. Add owner::contract_view through to the CLI
and the owner RPC, with a display for the result.

The slate is taken from --input or prompted for, as receive does.

is_executed was hardcoded to false. Derive it from our own tx log entry
for the slate, which is confirmed once the contract has executed.
2026-07-28 11:13:53 -04:00
ardocratandGitHub cd6285f8c0 Wrong Slatepack address fix (#773) 2026-07-26 18:07:53 +02: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
e9e27f4feb 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-07-16 20:24:09 +02:00
ardocratandGitHub 876ee1c277 Connection timeout (#765) 2026-07-05 21:21:53 +02:00
jwinterm bcea98be2a Contracts: remove the commented-out contract_setup
The separate contract_setup step is superseded by contract_sign, which runs
setup internally. Remove the dead commented-out function (libwallet, controller,
api), its CLI subcommand (grin-wallet.yml), and its dispatch arm (wallet_args).
The contract_sign path and the parse_contract_setup_args parser are unaffected.

Addresses PR #754 review (command.rs, owner.rs).
2026-06-07 19:07:24 -04:00
jwinterm 4fcb6053d5 Make contract slatepack encryption optional
--encrypt-for is no longer required. `contract new` without it produces an
unencrypted slatepack; `contract sign` without it replies to the incoming slate's
sender when known, otherwise unencrypted. Passing --encrypt-for is unchanged. The
slatepack layer already produced plaintext for an empty recipient list — this only
removes the CLI-side requirement.
2026-06-04 07:40:03 -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
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
Anynomouss e05aefa135 Preparing to merge with Pull 734, not fully ready yet 2025-06-30 21:40:47 +02: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 cd2f64c234 Third attempt to make a workaround for the Linux specific bug in the fs crate, to make it support backslashess in top_dir path 2025-04-06 21:59:36 +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
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 0573393e8d More debugging, next trace the overwrite of the config 2025-02-05 20:54:33 +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
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
f0cf8b0a7d 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>
2023-03-20 10:09:17 +00:00
YeastplumeandGitHub 8384a3ebb0 Remove grin lib re-exports from util crate (#661)
* updated util and libwallet with thiserror

* update impl crate to thiserror

* api crate converted to thiserror

* update of controller crate to thiserror

* update final bin + tests to thiserror

* update unused import

* remove failure derive

* reset import of grin to master

* update cargo lock

* update from master

* remove grin libs re-export from util crate :(

* temp local

* point code at bleeding edge grin master branch
2022-08-08 12:08:25 +01:00
67f0e2b0e0 Remove method from grin-wallet.yml and keybase.rs from adapters (#658)
* Remove method from grin-wallet.yml and keybase.rs from adapters

* Remove keybase_notify_ttl from config

* Remove keybase_notify_ttl from config

* Fix tests

Co-authored-by: rstetsurin <rstetsurin@coinloan.io>
2022-07-26 10:19:46 +01:00
a3687c69a8 Add option to limit number of TXs shown (#660)
Co-authored-by: cliik <cliik@example.com>
2022-07-26 10:16:47 +01:00
ef3fadbd24 Implement fee inclusive transactions (#657)
* Add amount_includes_fee option in TX building

* Add --amount_includes_fee CLI option

* Implement send 'max' amount

Co-authored-by: cliik <cliik@example.com>
2022-07-26 10:15:53 +01:00
95bb4c477e Show slatepack QR codes (#655)
* Show slatepack QR codes

* Make slatepack QR codes optional

Co-authored-by: cliik <cliik@example.com>
2022-07-12 10:32:26 +01:00
deevopeandGitHub c424a0ed10 TOR bridge + TOR Proxy + migration config_file_version (#617)
* tor bridge config and args

* migration `config_file_version=2`

* small fixes typo, comment etc..

* support: snowflake, meek_lite, obsf4 and tor proxy

* remove useless serde

* improve migrate function

* few fixes

* add bridge flags to pay and receive + few fixes

* some improvements
2022-02-03 15:33:41 +00:00
deevopeandGitHub d70423af57 View Wallet - fn rewind_hash & scan_rewind_hash (#632)
* fn rewind_hash & scan_rewind_hash

* update comments

* update doctest
2021-12-14 12:23:17 +00:00
Quentin Le ScellerandGitHub 83fd8ffc86 Replace custom hyper client with reqwest (#593)
* [DNM] Replace custom hyper client with reqwest

* Fix runtime error
2021-05-04 11:13:38 -04:00
goyleandGitHub f7c65c7b84 Change to proper spelling of Tor (#598)
* Change to proper spelling of Tor

* Change to proper spelling of Tor
2021-04-02 08:45:51 -04:00
Quentin Le ScellerandGitHub 4e4880be8e Update copyright license year to 2021 (#587) 2021-03-05 13:30:51 -05:00
8334304c16 fixfees on grin-wallet (#526)
* change fee to fee_fields in various structs and fix tests for new fee calculation

* set up accept_fee_base param in grin-wallet.toml

* fix bug and adopt new tx_fee interface

* Fix doctests

* Remove left over debug statement

* revert field name feef to fee to remain slate compatible

* use into() for some literal fee_fields

* add height arguments to FeeFields methods where necessary

* Fix tests

* Rename fee_fields -> fee on Context

* Rename fee_fields -> fee on TxLogEntry

* Update to grin master

* replace fee(0) by fee(2*YEAR_HEIGHT) to get fee masking

* Fix compilation error and revert Cargo lock

* fix wrong height passed into next_difficulty

Co-authored-by: Jasper van der Maarel <j@sper.dev>
2020-11-26 20:46:03 +01:00
jaspervdmandGitHub 429db61bb7 Deprecate HTTP(S) (#532)
* Deprecate HTTP(S)

* Remove http support altogether
2020-11-26 16:21:20 +01:00
Antioch PeverellandGitHub 01981ad1c1 default to smallest strategy for paying invoices (#531) 2020-11-19 12:38:43 +00:00
jaspervdmandGitHub a83f92dfd3 Late locking (experimental) (#530)
* Late locking (experimental)

* Error on fee change

* Improve comments

* Fix typo in comment

* Add late locking flag to CLI command
2020-11-19 12:54:49 +01:00
Quentin Le ScellerandGitHub c0e68ec3ea Rename Floonet to Testnet (#521)
* Replace floonet by testnet

* Update Cargo.lock
2020-10-08 10:00:01 -04:00
YeastplumeandGitHub 6c9cef1370 Post Hardfork 3 Cleanup (#490)
* Change versioning on master to 4.1.x development

* Remove SlateV3, V3 References from command-line code

* continue to remove pre HF3 functionality, remove participant_id from slate, remove is_compact, derive slate state based on slate state field

* slate no longer needs explicit compact step

* version/build coinbase doctest cleanup

* don't attempt to store transaction during tx lock if it doesn't exist

* repair incorrectly removed logic

* last test fixes (hopefully)
2020-07-31 10:33:45 +01:00
YeastplumeandGitHub dea5850e2b Add Slatepack file output override (#455) 2020-06-26 10:39:17 +01:00
YeastplumeandGitHub 99c2505bf5 Add option to skip Tor send attempts in TorConfig (#453) 2020-06-24 10:50:40 +01:00
YeastplumeandGitHub 2a5383d83e Default to outputting payment proof unless requested otherwise (#447) 2020-06-16 15:11:13 +01:00
YeastplumeandGitHub 5e20f5f0c8 add wallet unpack command (#433) 2020-06-11 08:34:00 +01:00
YeastplumeandGitHub 60ab3728ab Slatepack Workflow (#423)
* debugging tor sends

* use fixed yeast version of hyper-socks2

* send command working according to slatepack

* changes to handling proof address

* modifications of recieve command to work with slatepack and to attempt to return to sender via TOR

* finalize command tested

* attempting to add invoice processing

* fixes to tests, propagation of test mode where needed

* modify return values of api functions that can send as sync

* cleanup, testing and post_tx function

* revert changes to API, many test fixes

* deprecate http on the command-line warning
2020-06-03 08:39:23 +01:00
antiochp 72ff4b4e13 use local chain_type and global chain_type as necessary 2020-05-22 14:35:35 +01:00