Implement a fee on every input to prevent prior described economic attacks

Completes #297.
This commit is contained in:
Luke Parker
2023-10-22 21:31:13 -04:00
parent f561fa9ba1
commit fd1826cca9
6 changed files with 89 additions and 32 deletions

View File

@@ -451,6 +451,14 @@ impl Network for Bitcoin {
*/
const DUST: u64 = 10_000;
// 2 inputs should be 2 * 230 = 460 weight units
// The output should be ~36 bytes, or 144 weight units
// The overhead should be ~20 bytes at most, or 80 weight units
// 684 weight units, 171 vbytes, round up to 200
// 200 vbytes at 1 sat/weight (our current minumum fee, 4 sat/vbyte) = 800 sat fee for the
// aggregation TX
const COST_TO_AGGREGATE: u64 = 800;
// Bitcoin has a max weight of 400,000 (MAX_STANDARD_TX_WEIGHT)
// A non-SegWit TX will have 4 weight units per byte, leaving a max size of 100,000 bytes
// While our inputs are entirely SegWit, such fine tuning is not necessary and could create