Commit Graph
102 Commits
Author SHA1 Message Date
jwinterm 7b67d20b8e Add --payment-proof CLI flag for contracts
Expose contract payment proofs (already supported via the owner API) on the CLI.
contract new / contract sign --payment-proof opts the receiver into generating the
invoice proof. The proof commits to the sender's address, derived from the
--encrypt-for counterparty (mirroring how send derives its proof address from the
destination), and errors if --encrypt-for is absent.

Wiring: flag in grin-wallet.yml; ContractNewArgs/ContractSetupArgs carry the derived
sender address; to_api_args sets proof_args (suppress_proof=false + sender_address).
ed25519-dalek promoted to a controller dependency.
2026-06-04 07:44:23 -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
jwinterm 2e3b04498c De-panic and validate contract CLI input handling
Bad input to the contract CLI could abort the process:
- a non-numeric --make-outputs value reached output_amounts(), which
  unwrap()s the float parse;
- `contract new` with neither --send nor --receive hit a panic in
  get_net_change;
- `contract sign` panicked ("No address to encrypt for") when given no
  --encrypt-for and an incoming slate with no embedded sender.

Validate --make-outputs and require exactly one of --send/--receive at
parse time (ParseError, before reaching the panicking paths), and return a
typed error instead of panicking when there is no address to encrypt for.
Verified at runtime: each now yields a clean "Invalid Arguments" error.
2026-06-03 09:33:11 -04:00
jwinterm 311140f6f6 De-panic contract CLI argument parsing
The contract new/sign/revoke parsers panicked or unwrapped on user input:
conflicting --no-payjoin/--use-inputs, and unparseable receive / send /
num-participants / tx-id values would abort the process. Return
ParseError instead, and add a parse_grin_amount helper for the
Grin->nanogram conversion.
2026-06-02 21:02:24 -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
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
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
YeastplumeandGitHub 64cab53b1b Replace failure with thiserror (#654)
* 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
2022-07-28 10:21:45 +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
David TavarezandGitHub b45802aa6b Do not prompt for password to start owner API (#656)
* Do not prompt for password to start owner API

It makes no sense to ask for the password if one only wants to initialize the APIs. Asking for the password makes things unnecessarily difficult and insecure in case I, as a system administrator, want to have the APIs running as a system service.

* Update wallet_args.rs

* Update wallet_args.rs

opening wallet if password argument is present

* Update wallet_args.rs
2022-07-12 10:32:43 +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
trevynandGitHub a88a522f84 Clippy easy wins 1 (#596) 2021-03-17 10:51:53 -04:00
Quentin Le ScellerandGitHub 4e4880be8e Update copyright license year to 2021 (#587) 2021-03-05 13:30:51 -05:00
jaspervdmandGitHub 782dd8c29b Fix error when estimating fees for selection strategies (#545) 2020-12-16 15:18:55 +01: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
Antioch PeverellandGitHub e00c61fd05 refactor to pass slices around and not &Vec<> (#498)
cleaned up a couple of unwrap() calls
2020-08-03 10:29:54 +01: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
Quentin Le ScellerandGitHub 0e817fd1c0 Cargo Update (#426)
* Cargo update

* Fix easyjsonrpc import

* Cargo update

* Fix compiler warning
2020-06-10 12:31:04 -04: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