* 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
* 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>
* 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
* 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 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>
* 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
* 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
* 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>
* 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)
* 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
* change all user-facing instances of addresses to a SlatepackAddress
* finish renaming get_slatepack_address + documentation
* get_slatepack_secret_key OwnerRPC implementation and test
* add owner api functions
* OwnerRPC functions + doctests
* add explicit slatepack API tests to exercise encryption
* update api function names to better reflect RFC
* Add support for sending compact slates (#366)
* WIP add support for sending compact slates
* add repopulate_tx function to internal API
* first pass at compacted slate working
* move slate compaction to separate function
* test fixes
* support compact slate inits in invoice workflow
* add compress flags to send and invoice
* attempting to remove is_compact and assume all V4 slates begin as compact
* attempting to calculate offsets when full tx data isn't available
* update calc_commit to use participant blind data
* update doctests for compact slates
* start to remove unneeded fields from serialization
* make num_participants optional
* remove other_version from slate
* use grin master branch
* remove message field
* lock height assumed to be 0 if it doesn't exist
* don't serialise receiver signature when null
* don't serialize payment_info if not needed
* remove participant id from participant info
* add note on id field
* fix finalize and receive doctests
* finalize_tx tests, init_send_tx tests
* doctests for process_invoice_tx, retrieve_tx, tx_lock_outputs
* finished test changes
* update from grin master
* rebuild PR from diff (#380)
* recreate PR from diff (#381)
* serialize tx struct into top level coms object (#382)
* remove height (#383)
* Add State Slate (#384)
* add state field to slate and SlateV4
* set slate state at each transaction stage, add check to tests
* serialize slate status properly
* V4 Slate field tweaks (#386)
* various tweaks to V4 slate
* field renaming
* serialize slate v4 ID as base64 (#387)
* remove amount and fee where not needed (#388)
* Final Changes for compact Slate (#389)
* add tests for all types of file output, remove message args
* default range proof serialization
* shorten output features serialization
* rename payment proof fields in slate v4
* v4 payment proof serialization
* Binary Slates (#385)
* start test implementation
* add experimental binary serialization to slate
* serialize id
* serialize fields that can be skipped as a separate struct
* factor out sigs serialization
* clean up sigs and coms serialization
* completed v4 bin serialization
* add manual de/ser traits for V4 bin slate
* add simple byte array serializer
* complete wiring in of bin slate serialization
* clarify comment
* clarify comment
* update version
* test output dir name fix
* update slate v4 change description
* add binary output to command line
* Remove unneeded signature data during S2 and I2 stages (#390)
* remove unneeded return signature data during S2
* remove unneeded sig data from I2
* Doctest Fixes for compact slate branch (#392)
* begin to fix doctests
* more doctest fixes
* fix receive_tx
* update get_stored_tx to accept an UUID instead of a tx object, and operate on a raw Transaction object (#394)
* Fixes to async transaction posting (#395)
* unstash post_tx changes
* add offset during S3 and I3
* Revert slate id serialization to hex-string uuid (#396)
* update from master (#397)
* v3.x.x - v4.0.0 wallet compatibility fixes (#398)
* changes to support http sending to v3 wallets
* sending via http/tor TO 3.0.0 wallet works
* receiving FROM 3.0.0 wallets works over http/tor
* output converted V3 slate when needed
* paying invoices from 3.0.0 wallets working
* handle all participant info in slate states
* sending and receiving standard file transactions between v3 and 4 wallets confirmed working
* all file-based workflows working
* fixes resulting from tests
* remove reminder warnings
* remove lock_height, add kernel_features + arguments (#399)
* grin-wallet master now building against grin master (#402) (#403)
Co-authored-by: Antioch Peverell <apeverell@protonmail.com>
* Enhanced offset creation (#407)
* initial tests reworking offset creation
* invoice flow fixing + tests
* further test fixes
* change offset name in v4 slate, base64 serialize
* logic optimisation
* changes based on review feedback
Co-authored-by: Antioch Peverell <apeverell@protonmail.com>
* cli addition to yml
* first experiments with CLI mode
* rustfmt
* modify owner_single_use to take optional instantiated API
* refactor command functions to take owner api instance
* modify commands to use single owner api instance
* add ability to pass customised message handler to API
* prevent update wallet attempt if wallet hasn't been opened
* fix output when internal updater is running
* add termion, use cli for status updates, remove logging output from CLI
* some attempts to clean up the command prompt and accomodate scanning intervals
* rework listener slightly to allow for cli mode, add close command
* remove termion dependency
* rework setup code to ensure --top_level_dir flag works and all files are only output into the desired directory
* check for existence of wallet configuration file in target directory before asking recovery phrase and password
* test fixes and add test_mode flag to parse_init_args
* initial addition of ov3
* move libwallet address functions into OnionV3Address type
* incorporate OnionV3 type where possible
* factor out manual dalek pubkey manipulations
* corrections due to test failures
* change json-rpc example to use ov3 for payment proof recipient address
* add payment proof struct and deser
* rustfmt
* adding proof export functions
* rustfmt
* add payment proof validation function
* rustfmt
* add RPC version of retrieve_payment_proof + doctest
* rustfmt
* add verify_proof rpc function and documentation for new functions
* rustfmt
* add export and verify commands
* rustfmt
* test + test framework fixes
* rustfmt
* check whether addresses belong to this wallet, output such when checking
* rustfmt
* remove raw pubkey address and replace with ov3 address in user-facing contexts
* merge from master and rustfmt
* doctests
* re-insert v2 slate
* reinstate version conversions
* rustfmt
* add and test versioning checks against 2.0.0 wallets
* rustfmt
* fix to invoice file output
* doctest fix
* remove target slate version from command line options
* add ttl option to send_tx and pay commands
* rustfmt
* re-insert v2 slate
* reinstate version conversions
* rustfmt
* add and test versioning checks against 2.0.0 wallets
* rustfmt
* fix to invoice file output
* doctest fix
* remove target slate version from command line options
* refactor address generation code into libwallet, bool to flag whether to include proof, add sender address in init_send_tx
* rustfmt
* require payment proof addr as part of init_tx
* rustfmt
* store payment proof on sender transaction side
* rustfmt
* change sig to ed25519 sig
* rustfmt
* add message creation and signature
* rustfmt
* add payment proof verification function
* rustfmt
* validate proof on sender side, store proof
* rustfmt
* fix json tests
* fixes and updates to tests
* added API functions for converting and retrieving proof addresses
* rustfmt
* add payment proof to init_send_tx example
* rustfmt
* incorrect comment
* add commands for requesting payment proofs
* rustfmt
* wire up payment proofs into command line
* rustfmt
* add address command
* rustfmt
* added tor sending from owner api
* rustfmt
* add TTL to slate, transaction log
* ttl cutoff tests
* add ttl check to recieve functions, add tests, modify doctests
* rustfmt
* fixes from upstream changes and test fixes
* rustfmt
* remove unnecessary block header version check
* refactor address generation code into libwallet, bool to flag whether to include proof, add sender address in init_send_tx
* rustfmt
* require payment proof addr as part of init_tx
* rustfmt
* store payment proof on sender transaction side
* rustfmt
* change sig to ed25519 sig
* rustfmt
* add message creation and signature
* rustfmt
* add payment proof verification function
* rustfmt
* validate proof on sender side, store proof
* rustfmt
* fix json tests
* fixes and updates to tests
* added API functions for converting and retrieving proof addresses
* rustfmt
* add payment proof to init_send_tx example
* rustfmt
* incorrect comment
* add commands for requesting payment proofs
* rustfmt
* wire up payment proofs into command line
* rustfmt
* add address command
* rustfmt
* added tor sending from owner api
* rustfmt
* first attempt at adding updater thread
* rustfmt
* rustfmt
* many lifetimes made static to allow api to spawn separate thread
* add first pass at updater thread functionality
* rustfmt
* add mpsc for returning status from update functions
* rustfmt
* add stop state, ensure update is triggered by wallet functions when wallet updater is running
* rustfmt
* add update status function to owner API, V3 owner api functions
* rustfmt
* change update warning
* adding tests for new updater control functions
* documentation updates
* rustfmt
* Rename check-repair -> scan, make lock logic more granular
* rustfmt
* update owner api implementations where to allow granular locking where required
* rustfmt
* store init state on startup to determine whether full utxo scan is required for new wallets
* rustfmt
* fix for init status persist
* add start height argument to scan
* rustfmt