kaspa-redteam v0.15.0  curve.json  (library v0.9.1, covenant target)
 7 attacks run   6 survived   22 skipped   1 FINDING   0.0s

  OUT-04  FOUND     Keep what the fixed payouts leave over           1 of 2 attempts accepted
  FEE-01  survived  Route value to the miner fee                     2 attempts rejected
  IN-01   survived  Two covenant coins, one shared set of outputs    4 attempts rejected
  IN-02   survived  Attacker's coin at input 0, covenant moved behind it 2 attempts rejected
  OUT-01  survived  Correct value, attacker's script                 7 attempts rejected
  OUT-02  survived  Correct script, reduced value                    2 attempts rejected
  OUT-03  survived  Valid output 0, skim a later output              3 attempts rejected
  BOR-01  skipped   A stranger borrows the coin it holds and bricks it no coin the covenant holds was bricked by a borrow (where a borrow only moves it, see BOR-02)
  BOR-02  skipped   A stranger borrows the coin it holds             no explored spend lets a stranger borrow a coin the covenant holds (see BOR-01)
  BOR-03  skipped   A borrow takes the coin                          no token program with a borrowed receive among the explored paths
  BOR-04  skipped   A borrow adds nothing                            no token program with a borrowed receive among the explored paths
  BOR-05  skipped   A borrow takes the coin's KAS                    no token program with a borrowed receive among the explored paths
  BOR-06  skipped   A borrow without the borrow key                  no token program with a borrowed receive among the explored paths
  BOR-07  skipped   A borrow rewrites the borrow settings            no token program with a borrowed receive among the explored paths
  FAM-01  skipped   Mint more than allowed                           no explored spend creates coins of another program (give the project's files together)
  FAM-02  skipped   Mint to the attacker                             no explored spend creates coins of another program (give the project's files together)
  FAM-03  skipped   Mint one coin twice                              no explored spend creates coins of another program (give the project's files together)
  FAM-04  skipped   Coin of the right program, wrong family          no explored spend creates coins of another program (give the project's files together)
  FAM-05  skipped   Authority does not continue                      no explored spend creates coins of another program (give the project's files together)
  FAM-06  skipped   Replay the same proof on the next state          no explored spend creates coins of another program (give the project's files together)
  FAM-07  skipped   Start the family a second time                   no explored spend creates coins of another program (give the project's files together)
  FAM-08  skipped   Hand out the minting power                       no explored spend creates coins of another program (give the project's files together)
  FAM-09  skipped   Take tokens without paying                       no explored spend creates coins of another program (give the project's files together)
  FAM-10  skipped   Sweep coins sent to the covenant                 no explored spend creates coins of another program (give the project's files together)
  ORC-04  skipped   Reading signed by the attacker's own key         no explored path this attack applies to
  SEC-01  skipped   Front-run a revealed secret or reading           no explored path this attack applies to
  SIG-01  skipped   Spend a signed path with an invalid signature    no explored path this attack applies to
  SIG-02  skipped   Sign with the attacker's own key                 no explored path this attack applies to
  ST-01   skipped   Rewrite the recorded owner of the next state     no explored permissionless path carries a key in its next state

[MED]  OUT-04 Keep what the fixed payouts leave over
  Path `curve-v1-buy-one-lot (imported)`: the path fixes its payouts but not what is left of the coin. Here the coin held 1060.2333452 KAS and the payouts total 1060.2071012 KAS, so anyone kept 0.026044 KAS by adding an output of their own. A coin that always holds exactly the payouts plus the fee loses nothing.
  In practice: The coin holds more than the fixed payouts: an overpayment, a top-up, a deposit made before the final amounts were known. Whoever spends it adds an output and keeps the excess.
  Repro: /private/tmp/claude-501/-Users-seafalshannaq-Desktop-KCC20-Launchpad/f43fdbcb-a31e-494d-8281-46cb9ada79b6/scratchpad/verify-pack/.findings/curve/OUT-04.json   replay: kaspa-redteam replay /private/tmp/claude-501/-Users-seafalshannaq-Desktop-KCC20-Launchpad/f43fdbcb-a31e-494d-8281-46cb9ada79b6/scratchpad/verify-pack/.findings/curve/OUT-04.json
  Fix pattern: require(tx.inputs[this.activeInputIndex].value <= a + b + c + maxFee);  // or pin a change output back to the depositor

Spend map (who can spend each path, as found by search)
  curve-v1-buy-one-lot (imported) anyone, no signature; from 3 inputs worth 1060.2333452 KAS pays 1030.36751973 KAS to script aa20476b5bed9300.., 10 KAS to script aa20a1304af88cb2.., 5 KAS to script aa20d17a0122f348.., 14.83958147 KAS to attacker [imported]
  curve-v1-sell (imported) anyone, no signature; from 3 inputs worth 1042.86751973 KAS pays 10 KAS to script aa206093c3c5eec0.., 516.09497193 KAS to script aa20998ad052aa57.., 516.7388878 KAS to script 20774ae7f858a941.. [imported]

note: 2 baseline transaction(s) imported and attacked as given
note: judge: rusty-kaspa consensus validator 2.1.0 in process (mempool relay policy not applied)
