* 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>
* 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
* 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
* addition of SlatepackAddress type
* complete conversion of ed25519 keys to x25519 and isolate conversion within libwallet
* refactor packing/unpacking of slates logic into libwallet and out of slate adapters
* println
* 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 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>
* make transaction field in V4 Slate optional
* add mutable/non mutable version of tx getter
* removal of mut references where not needed
* remove more muts
* update from master
* update from master
* test fixes
* Detect reverted transactions
* Add reverted amount to funds display
* Support cancelling reverted txs
* Add reverted_after field for reverted transactions
* Update grin dependency to master branch
* Panic on failed test cleanup
* Only delete test dir if it exists
* Stop wallet proxy in accounts test
* Stop proxy thread in all controller tests
* Typo
* Add sleep after revert test
* Longer sleep in revert tests
* Stop wallet proxy in controller tests to allow directory cleanup in Windows
* Update test client
* Update to latest grin master
* is_unspent -> get_unspent
* 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
* 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
* 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
* 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
* store last scanned PMMR check index
* rustfmt
* fix issue where account names will be overwritten on check_repair
* rustfmt
* attempts to include check_repair scan as part of normal update
* rustfmt
* fix error on restore due to incorrect parent key id being set
* addition of calls to heigt_range_to_pmmr_indices traits and implementations
* rustfmt
* get_chain_height -> get_chain_tip
* rustfmt
* retrieve height+hash from node, modify check_repair to use block heights
* rustfmt
* fixes from live testing
* rustfmt
* test cleanup and change dependencies back to grin master
* 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
* allow owner api to start up without a wallet, begin to add lifecycle functions
* rustfmt
* test and typos fix
* updated with lifecycle functions
* rustfmt
* updates to allow owner api tests to be executed against local wallet proxy
* rustfmt
* fix for windows test
* add ability to pass configuration to , begin to add documentation and doctests
* add ability to pass configuration to , begin to add documentation and doctests
* doctests for lifecycle functions
* rustfmt
* ensure foreign API also has mask updated when being run along owner api, add more tests to lifecycle
* rustfmt
* documentation for lifecycle methods + init_secure_api
* rustfmt
* failing doctest