* 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
* 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
* split api secret into owner_api secret and node api secrets
* update for master, drop requirement for authentication for foreign api when run on same port as owner api
* rustfmt
* re-trigger build
* 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
* adding initial version of init_secure_api
* rustfmt
* fix ECDH algo
* rustfmt
* trying to figure out best way of doing encryption
* refactor secure requests and responses into json-rpc responses, with base64 payload for encrypted messages
* rustfmt
* return proper errors from encrypted api, include tests covering encrypted API error cases
* rustfmt
* add test for normal error (unencrypted)
* rustfmt
* change ports for test, add foreign listener to V2 sanity tests, add ability to select owner api port via command line
* rustfmt
* turn it to 11
* explicit teardown after rpc tests
* update tests with explicit teardowns
* update tests to perform explicit teardown
* fix warnings, ensure all tests teardown
* log output to diagnose CI windows build failures
* disable owner api doctests on windows
* rustfmt