* 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>
* 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>
* 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
* 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
* 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 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
* recreate PR from #400
* first tests with slate encryption
* simplify slatepack model to contain encryption header in payload, and add de/ser tests
* update tests and confirm slatepack encryption working
* remove recipient list, add version check warning
* add beginnings of jsonrpc node client, get_chain_tip implementation
* version info and outputs from node
* return async split up of get_output requests
* add and test get kernel functionality
* height range to pmmr indices
* test fixes
* outputs by pmmr index
* 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
* udpate for beta release
* initial tor explorations
* rustfmt
* basic tor tx send working
* rustfmt
* add tor proxy info to config file
* rustfmt
* add utilities to output tor hidden service configuration files
* output tor config as part of listener startup
* rustfmt
* fully automate config and startup of tor process
* rustfmt
* remove unnecessary process kill commands from listener
* rustfmt
* assume defaults for tor sending config if section doesn't exist in grin-wallet.toml
* rustfmt
* ignore tor dev test
* update default paths output by config, compilation + confirmed working on windows
* rustfmt
* fix on osx/unix
* add timeout to tor connector, remove unwrap in client
* allow specifiying tor address without 'http://[].onion' on the command line
* fix api test
* rustfmt
* update address derivation path as per spec
* rustfmt
* move tor init to separate function
* rustfmt
* re-ignore tor dev test
* listen on tor by default if tor available
* rustfmt
* test fix
* remove explicit send via tor flag, and assume tor if address fits
* rustfmt
* add test for no change output scenario
* rustfmt
* add kernel lookup functionality to transaction retrievals
* rustfmt
* updates and fixes for no-change invoice workflow, test implementations
* rustfmt
* version bump for next potential release
* Merge master into milestone/2.1.0 (#182)
* Derive --version output dynamically from cargo package version (#174)
* add --txid to the `wallet txs` command (#176)
* add --txid to the `wallet txs` command
* add test for `wallet txs` command with `--txid` parameter
* Refactor - Split WalletCommAdapter into multiple traits (#180)
* Derive --version output dynamically from cargo package version (#174)
* add server auth argument to http client
* Revert "add server auth argument to http client"
This reverts commit f52a8d2c7c.
* modify WalletCommAdapter, moving dest argument into fields on implementors,
visiting havok on automated tests, at least one of which is now out of date and failing
* Split WalletCommAdapter into four traits, one for each of its intended behaviors.
* Remove two vestigals
1. args, a stringly typed argument to put_tx
2. NullAdapter, which is no longer used
* Remove unused "params" argument from listen method.
* Re-add previously existing TODO comment
* Fix non-test build
* completely Fix non-test build
* Full Lifecycle API Support (#184)
* refactoring wallet lib traits
* rustfmt
* rustfmt
* add new files
* explicit lifetime specifiers on all wallet traits
* rustfmt
* modify apis to use new walletinst
* rustfmt
* converting controller crate
* rustfmt
* controller crate compiling
* rustfmt
* compilation
* rustfmt
* Remove config from wallet, implement open_wallet, close_wallet in lifecycle provider, remove password + open_with_credentials from WalletBackend + impl
* rustfmt
* full compilation, changing recovery + init to new model
* rustfmt
* wallet initialisation working, init command output and flow identical to v2.0.0 wallet
* rustfmt
* fix listener and owner api startup
* rustfmt
* rustfmt
* move encryption test
* rustfmt
* fix api doctests
* rustfmt
* fix for most tests in controller crate
* rustfmt
* fix for check tests in controller crate
* fix main wallet tests
* rustfmt
* add explicit functions to handle mnemonic recovery, fix CLI recovery workflow
* rustfmt
* update keybase adapter to use new wallet format
* rustfmt
* test fix
* remove debug output