The reproducible runtime test failed due to running out of space. If we have
multiple tests failing due to out of space, and all of our tests have these
unused, it makes sense just to always so uninstall.
Also extends the time limit of reproducible-runtime, as 2h has been hit a few
times before.
* serai Dockerfile & Makefile fixed
* added new bitcoin mod & bitcoinhram
* couple changes
* added odd&even check for bitcoin signing
* sign message updated
* print_keys commented out
* fixed signing process
* Added new bitcoin library & added most of bitcoin processor logic
* added new crate and refactored the bitcoin coin library
* added signing test function
* moved signature.rs
* publish set to false
* tests moved back to the root
* added new functions to rpc
* added utxo test
* added new rpc methods and refactored bitcoin processor
* added spendable output & fixed errors & added new logic for sighash & opened port 18443 for bitcoin docker
* changed tweak keys
* added tweak_keys & publish transaction and refactored bitcoin processor
* added new structs and fixed problems for testing purposes
* reverted dockerfile back its original
* reverted block generation of bitcoin to 5 seconds
* deleted unnecessary test function
* added new sighash & added new dbg messages & fixed couple errors
* fixed couple issue & removed unused functions
* fix for signing process
* crypto file for bitcoin refactored
* disabled test_send & removed some of the debug logs
* signing implemented & transaction weight calculation added & change address logic added
* refactored tweak_keys
* refactored mine_block & fixed change_address logic
* implemented new traits to bitcoin processor& refactored bitcoin processor
* added new line to tests file
* added new line to bitcoin's wallet.rs
* deleted Cargo.toml from coins folder
* edited bitcoin's Cargo.toml and added LICENSE
* added new line to bitcoin's Cargo.toml
* added spaces
* added spaces
* deleted unnecessary object
* added spaces
* deleted patch numbers
* updated sha256 parameter for message
* updated tag as const
* deleted unnecessary brackets and imports
* updated rpc.rs to 2 space indent
* deleted unnecessary brackers
* deleted unnecessary brackets
* changed it to explicit
* updated to explicit
* deleted unnecessary parsing
* added ? for easy return
* updated imports
* updated height to number
* deleted unnecessary brackets
* updated clsag to sig & to_vec to as_ref
* updated _sig to schnorr_signature
* deleted unnecessary variable
* updated Cargo.toml of processor and bitcoin
* updated imports of bitcoin processor
* updated MBlock to BBlock
* updated MSignable to BSignable
* updated imports
* deleted mask from Fee
* updated get_block function return
* updated comparison logic for scripts
* updated assert to debug_assert
* updated height to number
* updated txid logic
* updated tweak_keys definition
* updated imports
* deleted new line
* delete HashMap from monero
* deleted old test code parts
* updated test amount to a round number
* changed the test code part back to its original
* updated imports of rpc.rs
* deleted unnecessary return assignments
* deleted get_fee_per_byte
* deleted create_raw_transaction
* deleted fund_raw_transaction
* deleted sign transaction rpc
* delete verify_message rpc
* deleted get_balance
* deleted decode_raw_transaction rpc
* deleted list_transactions rpc
* changed test_send to p2wpkh
* updated imports of test_send
* fixed imports of test_send
* updated bitcoin's mine_block function
* updated bitcoin's test_send
* updated bitcoin's hram and test_signing
* deleted 2 rpc function (is_confirmed & get_transaction_block_number)
* deleted get_raw_transaction_hex
* deleted get_raw_transaction_info
* deleted new_address
* deleted test_mempool_accept
* updated remove(0) to remove(index)
* deleted ger_raw_transaction
* deleted RawTx trait and converted type to Transaction
* reverted raw_hex feature back
* added NotEnoughFunds to CoinError
* changed Sighash to all
* removed lifetime of RpcParams
* changed pub to pub(crate) & changed sig_hash line
* changed taproot_key_spend_signature_hash to internal
* added Clone to RpcError & deleted get_utxo_for
* changed to_hex to as_bytes for weight calculation
* updated SpendableOutput
* deleted unnecessary parentheses
* updated serialize of Output s id field
* deleted unused crate & added lazy_static
* updated RPC init function
* added lazy_static for TAG_HASH & updated imported crates
* changed get_block_index to get_block_number
* deleted get_block_info
* updated get_height to get_latest_block_number
* removed GetBlockWithDetailResult and get_block_with_transactions
* deleted unnecessary imports from rpc_helper
* removed lock and unlock_unspent
* deleted get_transactions and get_transaction and renamed get_raw_transaction to get_transaction
* updated opt_into_json
* changed payment_address and amount to output_script and amount for transcript
* refactored error logic for rpc & deleted anyhow crate
* added a dedicated file for json helper functions
* refactored imports and deleted unused code
* added clippy::non_snake_case
* removed unused Error items
* added new line to Cargo
* rekmoved Block and used bitcoin::Block direcetly
* removed added println and futures.len check
* removed HashMap from coin mod.rs
* updated Testnet to Regtest
* removed unnecessary variable
* updated as_str to &
* removed RawTx trait
* added newline
* changed test transaction to p2pkh
* updated test_send
* updated test_send
* updated test_send
* reformatted bitcoin processor
* moved sighash logic into signmachine
* removed generate_to_address
* added test_address function to bitcoin processor
* updated RpcResponse to enum and added Clone trait
* removed old RpcResponse
* updated shared_key to internal_key
* updated fee part
* updated test_send block logic
* added a test function for getting spendables
* updated tweaking keys logic
* updated calculate_weight logic
* added todo for BitcoinSchnorr Algorithm
* updated calculate_weight
* updated calculate_weight
* updated calculate_weight
* added a TODO for bitcoin's signing process
* removed unused code
* Finish merging develop
* cargo fmt
* cargo machete
* Handle most clippy lints on bitcoin
Doesn't handle the unused transcript due to pending cryptographic considerations.
* Rearrange imports and clippy tests
* Misc processor lint
* Update deny.toml
* Remove unnecessary RPC code
* updated test_send
* added bitcoin ci & updated test-dependencies yml
* fixed bitcoin ci
* updated bitcoin ci yml
* Remove mining from the bitcoin/monero docker files
The tests should control block production in order to test various
circumstances. The automatic mining disrupts assumptions made in testing. Since
we're now using the Bitcoin docker container for testing...
* Multiple fixes to the Bitcoin processor
Doesn't unwrap on RPC errors. Returns the expected connection error.
Fee calculation has a random - 1. This has been removed.
Supports the change address being an Option, as it is. This should not have
been blindly unwrapped.
* Remove unnecessary RPC code
* Further RPC simplifications
* Simplify Bitcoin action
It should not be mining.
* cargo fmt
* Finish RPC simplifications
* Run bitcoind as a daemon
* Remove the requirement on txindex
Saves tens of GB.
Also has attempt_send no longer return a list of outputs. That's incompatible
with this and only relevant to old scheduling designs.
* Remove number from Bitcoin SignableTransaction
Monero requires the current block number for decoy selection. Bitcoin doesn't
have a use.
* Ban coinbase transactions
These are burdened by maturity, so it's critically flawed to support them.
This causes the test_send function to fail as its working was premised on
a coinbase output. While it does make an actual output, it had insufficient
funds for the test's expectations due to regtest halving every 150 blocks.
In order to workaround this, the test will invalidate any existing chain,
offering a fresh start.
Also removes test_get_spendables and simplifies test_send.
* Various simplifications
Modifies SpendableOutput further to not require RPC calls at time of sign.
Removes the need to have get_transaction in the RPC.
* Clean prepare_send
* Update the Bitcoin TransactionMachine to output a Transaction
* Bitcoin TransactionMachine simplifications
* Update XOnly key handling
* Use a single sighash cache
* Move tweak_keys
* Remove unnecessary PSBT sets
* Restore removed newlines
* Other newlines
* Replace calculate_weight's custom math with a dummy TX serialize
* Move BTC TX construction code from processor to bitcoin
* Rename transactions.rs to wallet.rs
* Remove unused crate
* Note TODO
* Clean bitcoin signature test
* Make unit test out of BTC FROST signing test
* Final lint
* Remove usage of PartiallySignedTransaction
---------
Co-authored-by: Luke Parker <lukeparker5132@gmail.com>
* Initial work on an In Inherents pallet
* Add an event for when a batch is executed
* Add a dummy provider for InInstructions
* Add in-instructions to the node
* Add the Serai runtime API to the processor
* Move processor tests around
* Build a subxt Client around Serai
* Successfully get Batch events from Serai
Renamed processor/substrate to processor/serai.
* Much more robust InInstruction pallet
* Implement the workaround from https://github.com/paritytech/subxt/issues/602
* Initial prototype of processor generated InInstructions
* Correct PendingCoins data flow for InInstructions
* Minor lint to in-instructions
* Remove the global Serai connection for a partial re-impl
* Correct ID handling of the processor test
* Workaround the delay in the subscription
* Make an unwrap an if let Some, remove old comments
* Lint the processor toml
* Rebase and update
* Move substrate/in-instructions to substrate/in-instructions/pallet
* Start an in-instructions primitives lib
* Properly update processor to subxt 0.24
Also corrects failures from the rebase.
* in-instructions cargo update
* Implement IsFatalError
* is_inherent -> true
* Rename in-instructions crates and misc cleanup
* Update documentation
* cargo update
* Misc update fixes
* Replace height with block_number
* Update processor src to latest subxt
* Correct pipeline for InInstructions testing
* Remove runtime::AccountId for serai_primitives::NativeAddress
* Rewrite the in-instructions pallet
Complete with respect to the currently written docs.
Drops the custom serializer for just using SCALE.
Makes slight tweaks as relevant.
* Move instructions' InherentDataProvider to a client crate
* Correct doc gen
* Add serde to in-instructions-primitives
* Add in-instructions-primitives to pallet
* Heights -> BlockNumbers
* Get batch pub test loop working
* Update in instructions pallet terminology
Removes the ambiguous Coin for Update.
Removes pending/artificial latency for furture client work.
Also moves to using serai_primitives::Coin.
* Add a BlockNumber primitive
* Belated cargo fmt
* Further document why DifferentBatch isn't fatal
* Correct processor sleeps
* Remove metadata at compile time, add test framework for Serai nodes
* Remove manual RPC client
* Simplify update test
* Improve re-exporting behavior of serai-runtime
It now re-exports all pallets underneath it.
* Add a function to get storage values to the Serai RPC
* Update substrate/ to latest substrate
* Create a dedicated crate for the Serai RPC
* Remove unused dependencies in substrate/
* Remove unused dependencies in coins/
Out of scope for this branch, just minor and path of least resistance.
* Use substrate/serai/client for the Serai RPC lib
It's a bit out of place, since these client folders are intended for the node to
access pallets and so on. This is for end-users to access Serai as a whole.
In that sense, it made more sense as a top level folder, yet that also felt
out of place.
* Move InInstructions test to serai-client for now
* Final cleanup
* Update deny.toml
* Cargo.lock update from merging develop
* Update nightly
Attempt to work around the current CI failure, which is a Rust ICE.
We previously didn't upgrade due to clippy 10134, yet that's been reverted.
* clippy
* clippy
* fmt
* NativeAddress -> SeraiAddress
* Sec fix on non-provided updates and doc fixes
* Add Serai as a Coin
Necessary in order to swap to Serai.
* Add a BlockHash type, used for batch IDs
* Remove origin from InInstruction
Makes InInstructionTarget. Adds RefundableInInstruction with origin.
* Document storage items in in-instructions
* Rename serai/client/tests/serai.rs to updates.rs
It only tested publishing updates and their successful acceptance.
* convert AddressSpec subbaddress to tuple
* add wallet-rpc tests
* fix payment id decryption bug
* run fmt
* fix CI
* use monero-rs wallet-rpc for tests
* update the subaddress index type
* fix wallet-rpc CI
* fix monero-wallet-rpc CI actions
* pull latest monero for CI
* fix pr issues
* detach monero wallet rpc
Co-authored-by: Luke Parker <lukeparker5132@gmail.com>
* Move to dtolnay/toolchain
* Correct dtolnay/toolchain to rust-roolchain
* Pass toolchain by argument instead of revision
Introduces malleability by referring to HEAD of dtolnay, yet GHA errored on the
prior syntax.
* Update to the latest Serai Substrate
* Add Protobuf to build dependencies
Docker shouldn't need updating as this should've been added to the image
in
2dbace5b01.
* Get substrate to build
* Correct protoc build step
* Remove the benchmarking code
There's some macro resolution error that isn't apparent. I worked on it
for about half an hour but...
* Remove unnecessary clone
* Correct runtime-benchmarks flag usage
Apparently, GitHub doesn't write back to the cache, leading to massive
build times a few moments after its initialization (when a change
happens invalidating it). While this forces a new cache whenever
dependencies change, it'll restore from an older set of dependencies in
that case, still minimizing build times.
* Consolidate GitHub CI actions, split out Monero
build now includes the specified Rust toolchain/components.
Added a test dependencies action which grabs Foundry and Monero.
Split the Monero v14 job into a matrixed job in its own workflow flow.
It's now only run when Monero has changes.
* Correct Monero unit/integration tests run timing
Additionally tests a feature-less Monero build.
Also removes a pointless Monero file, which already should have been
removed, causing this workflow to be triggered.
* Correct exclusion and paths
Updates to FROST should re-run the Monero tests to ensure it didn't
introduce API incompatibilities.
* Initial stab at Bulletproofs+
Does move around the existing Bulletproofs code, does still work as
expected.
* Make the Clsag RCTPrunable type work with BP and BP+
* Initial set of BP+ bug fixes
* Further bug fixes
* Remove RING_LEN as a constant
* Monero v16 TX support
Doesn't implement view tags, nor going back to v14, nor the updated BP
clawback logic.
* Support v14 and v16 at the same time