The prior workflow (now deleted) required manually specifying the packages to check and only checked the package could compile under the stated MSRV. It didn't verify it was actually the _minimum_ supported Rust version. The new version finds the MSRV from scratch to check if the stated MSRV aligns. Updates stated MSRVs accordingly. Also removes many explicit dependencies from secq256k1 for their re-exports via k256. Not directly relevant, just part of tidying up all the `toml`s.
Transaction Chaining Scheduler
A scheduler of transactions for networks premised on the UTXO model which support transaction chaining. Transaction chaining refers to the ability to obtain an identifier for an output within a transaction not yet signed usable to build and sign a transaction spending it.
Design
The scheduler is designed to achieve fulfillment of all expected payments with
an O(1) delay (regardless of prior scheduler state), O(log n) time, and
O(log(n) + n) computational complexity.
Due to the ability to chain transactions, we can immediately plan/sign dependent
transactions. For the time/computational complexity, we use a tree to fulfill
payments. This quickly gives us the ability to make as many outputs as necessary
(regardless of per-transaction output limits) and only has the latency of
including a chain of O(log n) transactions on-chain. The only computational
overhead is in creating the transactions which are branches in the tree.