{
 "scenario": "devnet-hostile",
 "name": "DEVNET HOSTILE: B1 terms, 6 holders, trades at record moments, buyback, tender offer, an attacker at every step; the attacker services coupons 2-3 and the redemption (1 bond day = 1 chain second)",
 "bondMint": "Ce1se7FAG1HGUuxgh4SgKhRiv93Z1qE8CyGkgoacfUaJ",
 "cashMint": "3w25ggY22ce95afWfLWQTSkkVQeBHQWp51atUgTbXVuA",
 "attacker": "AkeyRKJSeGVs4DripmSQKoiVXKEycf1W8SaKU95HwA4T",
 "victim": "BH#1",
 "frozenCash": {
  "holder": "BH#5",
  "coupon": 1
 },
 "attempts": [
  {
   "id": "register-self",
   "when": "before the first record moment",
   "actor": "attacker",
   "tries": "registers itself as a holder, signing as registrar",
   "wouldCost": "an unvetted wallet in the register",
   "guard": "ConstraintHasOne",
   "signature": "4wzmF1M18pYuEEJx7sosm3t2oAxkkN7Xy9ewdYoTJt1kX9vdRGL9vPDxe6BJWXejvgJddpMoKfyQMrNSMFJwTx8i",
   "explorer": "https://explorer.solana.com/tx/4wzmF1M18pYuEEJx7sosm3t2oAxkkN7Xy9ewdYoTJt1kX9vdRGL9vPDxe6BJWXejvgJddpMoKfyQMrNSMFJwTx8i?cluster=devnet",
   "refused": true,
   "reason": "ConstraintHasOne: A has one constraint was violated.",
   "byGuard": true,
   "blockTime": 1791621783
  },
  {
   "id": "mint-bonds",
   "when": "before the first record moment",
   "actor": "attacker",
   "tries": "mints 1,000 bonds to itself",
   "wouldCost": "the issuer owes coupons and principal on bonds it never sold",
   "guard": "owner does not match",
   "signature": "5sGTL7iyfLsC7dfXcNyqjzJeP5WGaH63TFk8FNqbmRk6L7Pnkkrc3AWMbJ26ZhpoDmPYJXjfheqWtuFZBo5PDt85",
   "explorer": "https://explorer.solana.com/tx/5sGTL7iyfLsC7dfXcNyqjzJeP5WGaH63TFk8FNqbmRk6L7Pnkkrc3AWMbJ26ZhpoDmPYJXjfheqWtuFZBo5PDt85?cluster=devnet",
   "refused": true,
   "reason": "owner does not match",
   "byGuard": true,
   "blockTime": 1791621785
  },
  {
   "id": "mint-as-program",
   "when": "before the first record moment",
   "actor": "attacker",
   "tries": "mints 1,000 bonds naming the program as mint authority",
   "wouldCost": "the issuer owes coupons and principal on bonds it never sold",
   "guard": "MissingRequiredSignature",
   "signature": "65HGZc9m8ZF52UfiTJmArHycEt7ZtYz7q2Q635gMQRSg6mWcwDDcpXZhGkmPFr1v1DJanNXg573jQyJYiwjsU8R4",
   "explorer": "https://explorer.solana.com/tx/65HGZc9m8ZF52UfiTJmArHycEt7ZtYz7q2Q635gMQRSg6mWcwDDcpXZhGkmPFr1v1DJanNXg573jQyJYiwjsU8R4?cluster=devnet",
   "refused": true,
   "reason": "MissingRequiredSignature",
   "byGuard": true,
   "blockTime": 1791621789
  },
  {
   "id": "take-bonds",
   "when": "before the first record moment",
   "actor": "attacker",
   "tries": "moves BH#1's bonds to itself",
   "wouldCost": "BH#1 loses its bonds",
   "guard": "owner does not match",
   "signature": "VJwtHhbjkv5AYz8ww9jdErwpjDKaq4qJgdajdHdWxLKc5AfYWaKke8XaqmWr56WYQsuzSovbg6d9t14upJrSFHH",
   "explorer": "https://explorer.solana.com/tx/VJwtHhbjkv5AYz8ww9jdErwpjDKaq4qJgdajdHdWxLKc5AfYWaKke8XaqmWr56WYQsuzSovbg6d9t14upJrSFHH?cluster=devnet",
   "refused": true,
   "reason": "owner does not match",
   "byGuard": true,
   "blockTime": 1791621791
  },
  {
   "id": "take-as-delegate",
   "when": "before the first record moment",
   "actor": "attacker",
   "tries": "moves BH#1's bonds naming the program, the permanent delegate",
   "wouldCost": "BH#1 loses its bonds",
   "guard": "MissingRequiredSignature",
   "signature": "2qRQzo3wNJXYgAQQmmPHCHxjQumUjQPhwbCLADhBKeryFKeyjMG8chZPFb8GX5VSZ7QY9ARDWeLA2LspyT9sTA1P",
   "explorer": "https://explorer.solana.com/tx/2qRQzo3wNJXYgAQQmmPHCHxjQumUjQPhwbCLADhBKeryFKeyjMG8chZPFb8GX5VSZ7QY9ARDWeLA2LspyT9sTA1P?cluster=devnet",
   "refused": true,
   "reason": "MissingRequiredSignature",
   "byGuard": true,
   "blockTime": 1791621792
  },
  {
   "id": "burn-bonds",
   "when": "before the first record moment",
   "actor": "attacker",
   "tries": "burns BH#1's bonds",
   "wouldCost": "BH#1 loses coupons and principal",
   "guard": "Invalid instruction",
   "signature": "52F2h6JnkEyvw53hFfReSWtV6N5KjsEoU12KvNfSZxsGiVSdz83m6YFsa18fRKmesfeDwBSnxy36HwiEftq4vAt4",
   "explorer": "https://explorer.solana.com/tx/52F2h6JnkEyvw53hFfReSWtV6N5KjsEoU12KvNfSZxsGiVSdz83m6YFsa18fRKmesfeDwBSnxy36HwiEftq4vAt4?cluster=devnet",
   "refused": true,
   "reason": "Invalid instruction",
   "byGuard": true,
   "blockTime": 1791621794
  },
  {
   "id": "burn-permissioned",
   "when": "before the first record moment",
   "actor": "attacker",
   "tries": "burns BH#1's bonds with the permissioned burn, naming itself burn authority",
   "wouldCost": "BH#1 loses coupons and principal",
   "guard": "InvalidAccountData",
   "signature": "59q9pzaFgW4tB9VEr8eQF4JMi2zqDJARxcTXKexi5H4Qt5Lx9E6Y4NQan21tyJcrWt9LUkGe9pex16idnLyxWyNf",
   "explorer": "https://explorer.solana.com/tx/59q9pzaFgW4tB9VEr8eQF4JMi2zqDJARxcTXKexi5H4Qt5Lx9E6Y4NQan21tyJcrWt9LUkGe9pex16idnLyxWyNf?cluster=devnet",
   "refused": true,
   "reason": "InvalidAccountData",
   "byGuard": true,
   "blockTime": 1791621797
  },
  {
   "id": "burn-as-program",
   "when": "before the first record moment",
   "actor": "attacker",
   "tries": "burns BH#1's bonds with the permissioned burn, naming the program, the burn authority",
   "wouldCost": "BH#1 loses coupons and principal",
   "guard": "MissingRequiredSignature",
   "signature": "61DWe8qcyYkaDTtSzpCHLTtW7gcjVCx2FuULjNTyW5uGi6uJpN2pS551GXgtuJ54eMuT365GRteNqfe3ZMsXVauZ",
   "explorer": "https://explorer.solana.com/tx/61DWe8qcyYkaDTtSzpCHLTtW7gcjVCx2FuULjNTyW5uGi6uJpN2pS551GXgtuJ54eMuT365GRteNqfe3ZMsXVauZ?cluster=devnet",
   "refused": true,
   "reason": "MissingRequiredSignature",
   "byGuard": true,
   "blockTime": 1791621799
  },
  {
   "id": "freeze-holder",
   "when": "before the first record moment",
   "actor": "attacker",
   "tries": "freezes BH#1's bond account",
   "wouldCost": "BH#1 cannot sell",
   "guard": "cannot freeze",
   "signature": "5cYxWyWwuzBuiRMKkZeoKpWtEWdJ42EgZFjKRKLz2VbfnYi5geSt6tU8eaS5zr4hiogzMPSQUFSSQW3HZFyWzzu2",
   "explorer": "https://explorer.solana.com/tx/5cYxWyWwuzBuiRMKkZeoKpWtEWdJ42EgZFjKRKLz2VbfnYi5geSt6tU8eaS5zr4hiogzMPSQUFSSQW3HZFyWzzu2?cluster=devnet",
   "refused": true,
   "reason": "This token mint cannot freeze accounts",
   "byGuard": true,
   "blockTime": 1791621801
  },
  {
   "id": "send-unregistered",
   "when": "before the first record moment",
   "actor": "BH#1",
   "tries": "sends a bond to an unregistered wallet (the attacker)",
   "wouldCost": "bonds held outside the register",
   "guard": "AccountOwnedByWrongProgram",
   "signature": "2sXb7q26LXG5k5h9s8tfzWy5mKFRgv497bsckVadDFw9t7jd26FAnjPhhgbEt51TtdNttpPHWAopGdNQsUo4FPqh",
   "explorer": "https://explorer.solana.com/tx/2sXb7q26LXG5k5h9s8tfzWy5mKFRgv497bsckVadDFw9t7jd26FAnjPhhgbEt51TtdNttpPHWAopGdNQsUo4FPqh?cluster=devnet",
   "refused": true,
   "reason": "AccountOwnedByWrongProgram: The given account is owned by a different program than expected.",
   "byGuard": true,
   "blockTime": 1791621803
  },
  {
   "id": "second-account",
   "when": "before the first record moment",
   "actor": "BH#1",
   "tries": "moves a bond to a second account of its own",
   "wouldCost": "a position the register does not see",
   "guard": "NotAssociatedTokenAccount",
   "signature": "46VphaV4wcZj68MK7YQP8W4CCEbXCMh1tLQ3ub23Xb2d2Pa8TRfiguiBYgDzeTa7Di7NNBpNqLhPcuAC6BjXR2EF",
   "explorer": "https://explorer.solana.com/tx/46VphaV4wcZj68MK7YQP8W4CCEbXCMh1tLQ3ub23Xb2d2Pa8TRfiguiBYgDzeTa7Di7NNBpNqLhPcuAC6BjXR2EF?cluster=devnet",
   "refused": true,
   "reason": "NotAssociatedTokenAccount: Bonds may be held only in the owner's associated token account.",
   "byGuard": true,
   "blockTime": 1791621805
  },
  {
   "id": "skip-hook",
   "when": "before the first record moment",
   "actor": "BH#1",
   "tries": "sends a bond to BH#2 with the old transfer instruction, which skips the transfer hook",
   "wouldCost": "a bond moves without its record-moment position being saved",
   "guard": "custom program error: 0x1f",
   "signature": "3cAZX9bmrxETDDuhNceLms6dHTd3yrKCdY3qqmeYxdo9vwZVN2FegtujB3or3BfvFbC7Jic9totYTjHEaV9Ji3DD",
   "explorer": "https://explorer.solana.com/tx/3cAZX9bmrxETDDuhNceLms6dHTd3yrKCdY3qqmeYxdo9vwZVN2FegtujB3or3BfvFbC7Jic9totYTjHEaV9Ji3DD?cluster=devnet",
   "refused": true,
   "reason": "custom program error: 0x1f",
   "byGuard": true,
   "blockTime": 1791621807
  },
  {
   "id": "forge-position",
   "when": "before the first record moment",
   "actor": "attacker",
   "tries": "calls the transfer hook directly to add 5 bonds to BH#2's record",
   "wouldCost": "coupons paid on bonds nobody holds",
   "guard": "NotTransferring",
   "signature": "3fy5ADfJn46w2rfBPWoTaAFetUXaXF27TuCpQCjjTnu94RWeqhTLAqsxoX93bvoxKzS44NveYAUsqkKG6ELGGjKd",
   "explorer": "https://explorer.solana.com/tx/3fy5ADfJn46w2rfBPWoTaAFetUXaXF27TuCpQCjjTnu94RWeqhTLAqsxoX93bvoxKzS44NveYAUsqkKG6ELGGjKd?cluster=devnet",
   "refused": true,
   "reason": "NotTransferring: The hook was called outside a token transfer.",
   "byGuard": true,
   "blockTime": 1791621810
  },
  {
   "id": "take-program",
   "when": "before the first record moment",
   "actor": "attacker",
   "tries": "makes itself the program's upgrade authority",
   "wouldCost": "a replaced program could empty every vault",
   "guard": "Incorrect authority",
   "signature": "3rrLJBn1kRqPzYWTfwaAoysQ9HDSDb4jib9dqknpGe83WFZHJAUNfCnwXWoqMDDUgnYEdrZAvi23GpvDipajJpUd",
   "explorer": "https://explorer.solana.com/tx/3rrLJBn1kRqPzYWTfwaAoysQ9HDSDb4jib9dqknpGe83WFZHJAUNfCnwXWoqMDDUgnYEdrZAvi23GpvDipajJpUd?cluster=devnet",
   "refused": true,
   "reason": "Incorrect authority provided",
   "byGuard": true,
   "blockTime": 1791621813
  },
  {
   "id": "fee-cash-token",
   "when": "before the first record moment",
   "actor": "registrar",
   "tries": "creates a bond paid in a cash token that keeps a 1% fee on every transfer",
   "wouldCost": "holders receive 1% less than the terms",
   "guard": "UnsupportedCashToken",
   "signature": "45XoSoPuJdQBj5fbaXeoeatxBvEFodPLPf5z4S8sSYvRV6LxaQt56sCrzsPD3D5QMev9BMz3QRFXTDxFmCjTcHMb",
   "explorer": "https://explorer.solana.com/tx/45XoSoPuJdQBj5fbaXeoeatxBvEFodPLPf5z4S8sSYvRV6LxaQt56sCrzsPD3D5QMev9BMz3QRFXTDxFmCjTcHMb?cluster=devnet",
   "refused": true,
   "reason": "UnsupportedCashToken: Cash token has an extension that changes or conditions delivery (transfer fee, transfer hook, non-transferable) or one this program cannot read.",
   "byGuard": true,
   "blockTime": 1791621817
  },
  {
   "id": "place-late",
   "when": "after the first record moment",
   "actor": "registrar",
   "tries": "places 100 new bonds with BH#2",
   "wouldCost": "bonds issued after the issue closed",
   "guard": "PlacementClosed",
   "signature": "2RWSdLRPJ9MFGrnZATFuLvzRX5EE9Vvyzr1qtftReCHUyrtv8kYaTRJepLSo6W4198onKSfu6z14ej298WY569k5",
   "explorer": "https://explorer.solana.com/tx/2RWSdLRPJ9MFGrnZATFuLvzRX5EE9Vvyzr1qtftReCHUyrtv8kYaTRJepLSo6W4198onKSfu6z14ej298WY569k5?cluster=devnet",
   "refused": true,
   "reason": "PlacementClosed: Placement is allowed only before the first record moment.",
   "byGuard": true,
   "blockTime": 1791621958
  },
  {
   "id": "sell-others-bonds",
   "when": "buyback offer 0 open",
   "actor": "attacker",
   "tries": "sells BH#1's bonds to the buyback",
   "wouldCost": "BH#1's bonds sold without its consent",
   "guard": "ConstraintRaw",
   "signature": "5FLFMoZBp93vbtKc7Ahf2aLWa3b7mXSSmDnjfCqftBcZYV9hcDjt6H5E921zAaA8u4x2D6nNFSMZL35STsEFWrYT",
   "explorer": "https://explorer.solana.com/tx/5FLFMoZBp93vbtKc7Ahf2aLWa3b7mXSSmDnjfCqftBcZYV9hcDjt6H5E921zAaA8u4x2D6nNFSMZL35STsEFWrYT?cluster=devnet",
   "refused": true,
   "reason": "ConstraintRaw: A raw constraint was violated.",
   "byGuard": true,
   "blockTime": 1791621967
  },
  {
   "id": "over-maximum",
   "when": "buyback offer 0 open",
   "actor": "BH#1",
   "tries": "sells 1 bond to the buyback after its maximum is reached",
   "wouldCost": "the issuer buys more bonds than it offered",
   "guard": "ExceedsOffer",
   "signature": "2YujxoZw5A25uX4qN9Xgn48afTnqDAxx4CrABGjAjz9iYdS95dABohGJtuMeCbiyEhPQ3fqp2dTPhZe3nWiX789L",
   "explorer": "https://explorer.solana.com/tx/2YujxoZw5A25uX4qN9Xgn48afTnqDAxx4CrABGjAjz9iYdS95dABohGJtuMeCbiyEhPQ3fqp2dTPhZe3nWiX789L?cluster=devnet",
   "refused": true,
   "reason": "ExceedsOffer: Quantity exceeds what the offer still accepts.",
   "byGuard": true,
   "blockTime": 1791621969
  },
  {
   "id": "confirm-short",
   "when": "coupon 0, vault funded short by 0.000001",
   "actor": "attacker",
   "tries": "confirms the coupon funded",
   "wouldCost": "the last holders find the vault empty",
   "guard": "InsufficientFunding",
   "signature": "2D8WpwFuP5epB8Nr88qrBWWihmiAT2EWixLV37DM9rjR4xVRJJYt3Nah8eXnhgDGdtgMsZKgddonF6H2pWn5utRf",
   "explorer": "https://explorer.solana.com/tx/2D8WpwFuP5epB8Nr88qrBWWihmiAT2EWixLV37DM9rjR4xVRJJYt3Nah8eXnhgDGdtgMsZKgddonF6H2pWn5utRf?cluster=devnet",
   "refused": true,
   "reason": "InsufficientFunding: Vault balance does not cover the event's budget.",
   "byGuard": true,
   "blockTime": 1791621973
  },
  {
   "id": "pay-unfunded",
   "when": "coupon 0, vault funded short by 0.000001",
   "actor": "attacker",
   "tries": "pays BH#1 from the unconfirmed vault",
   "wouldCost": "the last holders find the vault empty",
   "guard": "NotFunded",
   "signature": "51xWFaBsVWUsmryNEeSjKiriJRdkyvx47AzMAPrBRtnLqWnUKbVMa1jvw7DPy8DPjBHVBcuHBRNj2YjR4EPQAT18",
   "explorer": "https://explorer.solana.com/tx/51xWFaBsVWUsmryNEeSjKiriJRdkyvx47AzMAPrBRtnLqWnUKbVMa1jvw7DPy8DPjBHVBcuHBRNj2YjR4EPQAT18?cluster=devnet",
   "refused": true,
   "reason": "NotFunded: The event is not funded.",
   "byGuard": true,
   "blockTime": 1791621974
  },
  {
   "id": "drain-vault",
   "when": "coupon 0, vault funded short by 0.000001",
   "actor": "attacker",
   "tries": "moves the vault's cash to itself",
   "wouldCost": "the coupon's cash is gone",
   "guard": "owner does not match",
   "signature": "3DEBeVhkNYa7TEaRPF6ygWjzgcBTba2goMtGaj14BenYr8tFQSHNu1CmfhThftkzekfboQXhAKzabtfw5BZg7MsC",
   "explorer": "https://explorer.solana.com/tx/3DEBeVhkNYa7TEaRPF6ygWjzgcBTba2goMtGaj14BenYr8tFQSHNu1CmfhThftkzekfboQXhAKzabtfw5BZg7MsC?cluster=devnet",
   "refused": true,
   "reason": "owner does not match",
   "byGuard": true,
   "blockTime": 1791621976
  },
  {
   "id": "drain-as-program",
   "when": "coupon 0, vault funded short by 0.000001",
   "actor": "attacker",
   "tries": "moves the vault's cash to itself naming the program, the vault's owner",
   "wouldCost": "the coupon's cash is gone",
   "guard": "MissingRequiredSignature",
   "signature": "5Fwy7kxfFEDUYE8F15pt5yDP6eFzqDhMuhr476zCm92TvKr8VUKR2HtKMA1UiFkvg9dudFc6N3xHBRfdGnGpdiaS",
   "explorer": "https://explorer.solana.com/tx/5Fwy7kxfFEDUYE8F15pt5yDP6eFzqDhMuhr476zCm92TvKr8VUKR2HtKMA1UiFkvg9dudFc6N3xHBRfdGnGpdiaS?cluster=devnet",
   "refused": true,
   "reason": "MissingRequiredSignature",
   "byGuard": true,
   "blockTime": 1791621978
  },
  {
   "id": "redirect-coupon",
   "when": "coupon 0, payment open",
   "actor": "attacker",
   "tries": "pays BH#1's coupon into its own cash account",
   "wouldCost": "BH#1's coupon",
   "guard": "ConstraintTokenOwner",
   "signature": "3xskneXjQH2a8EPABajXEXBS74S4o77mcDzauJpnwXPrwvizxeiHvDJJmiPXSomRZqeFaxKrrUoRoGuhskfuWcSf",
   "explorer": "https://explorer.solana.com/tx/3xskneXjQH2a8EPABajXEXBS74S4o77mcDzauJpnwXPrwvizxeiHvDJJmiPXSomRZqeFaxKrrUoRoGuhskfuWcSf?cluster=devnet",
   "refused": true,
   "reason": "ConstraintTokenOwner: A token owner constraint was violated.",
   "byGuard": true,
   "blockTime": 1791621984
  },
  {
   "id": "claim-as-owner",
   "when": "coupon 0, payment open",
   "actor": "attacker",
   "tries": "presents BH#1's holder record as its own",
   "wouldCost": "BH#1's coupon",
   "guard": "Constraint",
   "signature": "4jeHFAoRDkBGMfHnseZqqPvzTraSHoHej8fUaAesTYZop13TQcxR5hsAj6oFHoD1wZhYZo2wJL485kMRCrJZTcjh",
   "explorer": "https://explorer.solana.com/tx/4jeHFAoRDkBGMfHnseZqqPvzTraSHoHej8fUaAesTYZop13TQcxR5hsAj6oFHoD1wZhYZo2wJL485kMRCrJZTcjh?cluster=devnet",
   "refused": true,
   "reason": "ConstraintSeeds: A seeds constraint was violated.",
   "byGuard": true,
   "blockTime": 1791621985
  },
  {
   "id": "pay-twice",
   "when": "coupon 0, paid",
   "actor": "attacker",
   "tries": "pays BH#1's coupon again",
   "wouldCost": "the issuer pays a coupon twice; the last holders find the vault empty",
   "guard": "AlreadyPaid",
   "signature": "3KL5XSU2q7gUndCJztLymHFy9kCdjBpmib1dC4mZtL7UQ6RjtrNwjRuTvQQoKedUwhtfdBhQTWeJySc2HLaKCZ6k",
   "explorer": "https://explorer.solana.com/tx/3KL5XSU2q7gUndCJztLymHFy9kCdjBpmib1dC4mZtL7UQ6RjtrNwjRuTvQQoKedUwhtfdBhQTWeJySc2HLaKCZ6k?cluster=devnet",
   "refused": true,
   "reason": "AlreadyPaid: Already paid.",
   "byGuard": true,
   "blockTime": 1791621988
  },
  {
   "id": "late-buyer",
   "when": "coupon 0, paid",
   "actor": "BH#3",
   "tries": "bought after the record moment and asks for the coupon",
   "wouldCost": "the seller's coupon paid again to the buyer",
   "guard": "NothingToPay",
   "signature": "4qfFjvbzGeYay74gTHqLxGNxM88sx9om5gibmRfteatM77HigCS4fUCZykRr81zrmpGMSwKFTsnifPjtpc2CdwFD",
   "explorer": "https://explorer.solana.com/tx/4qfFjvbzGeYay74gTHqLxGNxM88sx9om5gibmRfteatM77HigCS4fUCZykRr81zrmpGMSwKFTsnifPjtpc2CdwFD?cluster=devnet",
   "refused": true,
   "reason": "NothingToPay: Nothing to pay.",
   "byGuard": true,
   "blockTime": 1791621990
  },
  {
   "id": "sell-tendered",
   "when": "tender offer 1 open",
   "actor": "BH#1",
   "tries": "transfers all its bonds to BH#2, including those tendered to the issuer",
   "wouldCost": "the same bonds sold twice: to the issuer and to a buyer",
   "guard": "BondsLocked",
   "signature": "3HXRFELeys7SwVriAHsty96z8e9Ejb514Ta86Kmdn9NZqWMvgZUFYp3BS4sEghFoTYoHuzGevmQZTT82LHpjbzmy",
   "explorer": "https://explorer.solana.com/tx/3HXRFELeys7SwVriAHsty96z8e9Ejb514Ta86Kmdn9NZqWMvgZUFYp3BS4sEghFoTYoHuzGevmQZTT82LHpjbzmy?cluster=devnet",
   "refused": true,
   "reason": "BondsLocked: Bonds are locked in a tender.",
   "byGuard": true,
   "blockTime": 1791622146
  },
  {
   "id": "other-vault",
   "when": "coupon 1, payment open",
   "actor": "attacker",
   "tries": "pays BH#1's coupon 1 from coupon 0's vault",
   "wouldCost": "one coupon's cash spent on another",
   "guard": "ConstraintHasOne",
   "signature": "hb28AGtuEGjUCtpAcBwsS8nH127Wm1zz3sCpUcjE4yQep2a39ZA5zvvuzjsopqGTUXAJwaxBSsduWe8zv3EYzZS",
   "explorer": "https://explorer.solana.com/tx/hb28AGtuEGjUCtpAcBwsS8nH127Wm1zz3sCpUcjE4yQep2a39ZA5zvvuzjsopqGTUXAJwaxBSsduWe8zv3EYzZS?cluster=devnet",
   "refused": true,
   "reason": "ConstraintHasOne: A has one constraint was violated.",
   "byGuard": true,
   "blockTime": 1791622155
  },
  {
   "id": "frozen-cash",
   "when": "coupon 1, paid",
   "actor": "anyone",
   "tries": "pays BH#5, whose cash account the bank froze",
   "wouldCost": "nothing: the others are already paid, and the right stays open",
   "guard": "Account is frozen",
   "signature": "2UfvADA5PC1UJ7Jo57gTwsEUTEVzhBCurkoUWwGrwhHR56UaTZAcbimTcpVAd8wYZmwHk1vEEZR7tRntwifcBPrN",
   "explorer": "https://explorer.solana.com/tx/2UfvADA5PC1UJ7Jo57gTwsEUTEVzhBCurkoUWwGrwhHR56UaTZAcbimTcpVAd8wYZmwHk1vEEZR7tRntwifcBPrN?cluster=devnet",
   "refused": true,
   "reason": "Account is frozen",
   "byGuard": true,
   "blockTime": 1791622159
  },
  {
   "id": "trade-at-maturity",
   "when": "after the final record moment",
   "actor": "BH#2",
   "tries": "sells 1 bond to BH#1",
   "wouldCost": "a bond changes hands while its principal is being paid",
   "guard": "TransfersClosedAtMaturity",
   "signature": "cU2bNQ6tkDjevZg3xL8yduefV3CEwVnnfzbey2ezXqcAqjc8ghPXF6nFwenqx96bDKXRDk22fYtmHwY5YWtSLBY",
   "explorer": "https://explorer.solana.com/tx/cU2bNQ6tkDjevZg3xL8yduefV3CEwVnnfzbey2ezXqcAqjc8ghPXF6nFwenqx96bDKXRDk22fYtmHwY5YWtSLBY?cluster=devnet",
   "refused": true,
   "reason": "TransfersClosedAtMaturity: Transfers are closed from the final record moment (redemption).",
   "byGuard": true,
   "blockTime": 1791622517
  },
  {
   "id": "redirect-principal",
   "when": "redemption, payment open",
   "actor": "attacker",
   "tries": "redeems BH#1's bonds into its own cash account",
   "wouldCost": "BH#1's principal",
   "guard": "ConstraintTokenOwner",
   "signature": "3dmpNYQD1QwdSDe3KcKiDcxyvKoX15ds2P4geLrCnfkukXwu1DMRZLucXu3fgqSJLdjtRf7NZA93aw5h3LbiEYK6",
   "explorer": "https://explorer.solana.com/tx/3dmpNYQD1QwdSDe3KcKiDcxyvKoX15ds2P4geLrCnfkukXwu1DMRZLucXu3fgqSJLdjtRf7NZA93aw5h3LbiEYK6?cluster=devnet",
   "refused": true,
   "reason": "ConstraintTokenOwner: A token owner constraint was violated.",
   "byGuard": true,
   "blockTime": 1791622522
  },
  {
   "id": "coupon-from-principal",
   "when": "redemption, payment open",
   "actor": "attacker",
   "tries": "pays BH#1 a coupon from the redemption vault",
   "wouldCost": "principal cash paid out as coupons",
   "guard": "WrongEventKind",
   "signature": "5RwEsNUVXwCVPvxheeQshfUdpke6YEGGKBFSmawLb2ZXXpMtqKsbEZGnZcBCBV13UN7KvHeaqsZXCogJxB9Lod7x",
   "explorer": "https://explorer.solana.com/tx/5RwEsNUVXwCVPvxheeQshfUdpke6YEGGKBFSmawLb2ZXXpMtqKsbEZGnZcBCBV13UN7KvHeaqsZXCogJxB9Lod7x?cluster=devnet",
   "refused": true,
   "reason": "WrongEventKind: Instruction does not apply to this event type.",
   "byGuard": true,
   "blockTime": 1791622524
  },
  {
   "id": "redeem-twice",
   "when": "redemption, paid",
   "actor": "attacker",
   "tries": "redeems BH#1 again",
   "wouldCost": "principal paid twice",
   "guard": "NothingToPay",
   "signature": "yVRChfCAkY3UDwpZHEx1oX9QTVa96HohgrfZ7MBgShwY9dYaxcih7GSeosa1ddTF6qCZtDfe3n1U7UJns4r9sSh",
   "explorer": "https://explorer.solana.com/tx/yVRChfCAkY3UDwpZHEx1oX9QTVa96HohgrfZ7MBgShwY9dYaxcih7GSeosa1ddTF6qCZtDfe3n1U7UJns4r9sSh?cluster=devnet",
   "refused": true,
   "reason": "NothingToPay: Nothing to pay.",
   "byGuard": true,
   "blockTime": 1791622529
  }
 ],
 "serviced": [
  {
   "step": "attacker opens its own bond and cash accounts, and a second bond account for the victim",
   "signature": "29u2sm9GYsxn456Ra2BpN2Nju7byuJspMJCDtaHcnZim327LcNV3A9ZAKTcxMNCMVGcSbFtNgSAb97sZEKVnFPsS",
   "explorer": "https://explorer.solana.com/tx/29u2sm9GYsxn456Ra2BpN2Nju7byuJspMJCDtaHcnZim327LcNV3A9ZAKTcxMNCMVGcSbFtNgSAb97sZEKVnFPsS?cluster=devnet",
   "cashTo": [],
   "cashToAttacker": 0,
   "bondsToAttacker": 0
  },
  {
   "step": "open_event coupon 2 [outside keeper]",
   "signature": "5pEuMo2sdUp2eXYbGYqbstegS8AeGEPs5V8eHKvvD8PBz8ScUHRCasFiW138cTiq77CHnud8gJUGVXTbbhe3YRj5",
   "explorer": "https://explorer.solana.com/tx/5pEuMo2sdUp2eXYbGYqbstegS8AeGEPs5V8eHKvvD8PBz8ScUHRCasFiW138cTiq77CHnud8gJUGVXTbbhe3YRj5?cluster=devnet",
   "cashTo": [],
   "cashToAttacker": 0,
   "bondsToAttacker": 0
  },
  {
   "step": "confirm_funding coupon 2 [outside keeper]",
   "signature": "4sAhEFGf7EfaNMbjAkkDSS9CWkNyTYNmTDGyYFcLPY1kaKQYYEfcEyb9cvNPZrTmxtV8R33TKXvLVfyNCu6uSVs3",
   "explorer": "https://explorer.solana.com/tx/4sAhEFGf7EfaNMbjAkkDSS9CWkNyTYNmTDGyYFcLPY1kaKQYYEfcEyb9cvNPZrTmxtV8R33TKXvLVfyNCu6uSVs3?cluster=devnet",
   "cashTo": [],
   "cashToAttacker": 0,
   "bondsToAttacker": 0
  },
  {
   "step": "pay_coupon 2 BH#1..BH#6 [outside keeper]",
   "signature": "3mz3e2cHFaSB2N6ceVg5XXu2hTCUJgm4AQ7hkuRwLkszFtCaU4SdKBzrzsebwEC3EdwNQBVrvqL9nDDD6gZQZqoh",
   "explorer": "https://explorer.solana.com/tx/3mz3e2cHFaSB2N6ceVg5XXu2hTCUJgm4AQ7hkuRwLkszFtCaU4SdKBzrzsebwEC3EdwNQBVrvqL9nDDD6gZQZqoh?cluster=devnet",
   "cashTo": [
    "BH#1",
    "BH#2",
    "BH#5",
    "BH#6"
   ],
   "cashToAttacker": 0,
   "bondsToAttacker": 0
  },
  {
   "step": "open_event coupon 3 [outside keeper]",
   "signature": "52oFL1Eavn4B86VCY1vpgU7xUdtXsyUoXqFzEWLur1LsSSYwsXVUxEVoNqvJWDs45fBHPwQnNNEpLuidra64LrKA",
   "explorer": "https://explorer.solana.com/tx/52oFL1Eavn4B86VCY1vpgU7xUdtXsyUoXqFzEWLur1LsSSYwsXVUxEVoNqvJWDs45fBHPwQnNNEpLuidra64LrKA?cluster=devnet",
   "cashTo": [],
   "cashToAttacker": 0,
   "bondsToAttacker": 0
  },
  {
   "step": "confirm_funding coupon 3 [outside keeper]",
   "signature": "M5T1c21u2UmQQrFdboZAs3Fg2HEtCyMwBk9K7kLKNixrbSY5LRyKeeaLNNdkNm4bvHaxzUGeS2wWryaUefnJoRg",
   "explorer": "https://explorer.solana.com/tx/M5T1c21u2UmQQrFdboZAs3Fg2HEtCyMwBk9K7kLKNixrbSY5LRyKeeaLNNdkNm4bvHaxzUGeS2wWryaUefnJoRg?cluster=devnet",
   "cashTo": [],
   "cashToAttacker": 0,
   "bondsToAttacker": 0
  },
  {
   "step": "pay_coupon 3 BH#1..BH#6 [outside keeper]",
   "signature": "mwhSK8GLER4xCqXJHjKvridYCdsmyfjQPxuzpvP7qqqspqFjzMmhqBqMKckmLYy1EyMZe81hb7kN349TeowXZsf",
   "explorer": "https://explorer.solana.com/tx/mwhSK8GLER4xCqXJHjKvridYCdsmyfjQPxuzpvP7qqqspqFjzMmhqBqMKckmLYy1EyMZe81hb7kN349TeowXZsf?cluster=devnet",
   "cashTo": [
    "BH#1",
    "BH#2",
    "BH#3",
    "BH#4",
    "BH#5",
    "BH#6"
   ],
   "cashToAttacker": 0,
   "bondsToAttacker": 0
  },
  {
   "step": "open_event redemption [outside keeper]",
   "signature": "2SVPxDmnF7WUVCSy8HsoFXPKpKrYxsrWgXZoj29sfAC5mjm5Pn7w9MKBMQL8ToNj7hChJWoWHdvhsikd3XFSS738",
   "explorer": "https://explorer.solana.com/tx/2SVPxDmnF7WUVCSy8HsoFXPKpKrYxsrWgXZoj29sfAC5mjm5Pn7w9MKBMQL8ToNj7hChJWoWHdvhsikd3XFSS738?cluster=devnet",
   "cashTo": [],
   "cashToAttacker": 0,
   "bondsToAttacker": 0
  },
  {
   "step": "confirm_funding redemption [outside keeper]",
   "signature": "4m758rzvc9haibGgdFcJrS5VFzcCLjdaT9hwvzuhZrfppoHvpi8Y2QwEimLKfRw8wCWZ8sa89mvpuTma2rL5FVJu",
   "explorer": "https://explorer.solana.com/tx/4m758rzvc9haibGgdFcJrS5VFzcCLjdaT9hwvzuhZrfppoHvpi8Y2QwEimLKfRw8wCWZ8sa89mvpuTma2rL5FVJu?cluster=devnet",
   "cashTo": [],
   "cashToAttacker": 0,
   "bondsToAttacker": 0
  },
  {
   "step": "redeem_holder BH#1..BH#4 [outside keeper]",
   "signature": "sZsafrqP57Ru8LDW7gv9QGCwxcABYsPRm5puZqY9QYgScSJyEEgxiNpq5zNd7uBkb54sw8pzVTNagQZ2iPCYUmv",
   "explorer": "https://explorer.solana.com/tx/sZsafrqP57Ru8LDW7gv9QGCwxcABYsPRm5puZqY9QYgScSJyEEgxiNpq5zNd7uBkb54sw8pzVTNagQZ2iPCYUmv?cluster=devnet",
   "cashTo": [
    "BH#1",
    "BH#2",
    "BH#3",
    "BH#4"
   ],
   "cashToAttacker": 0,
   "bondsToAttacker": 0
  },
  {
   "step": "redeem_holder BH#5..BH#6 [outside keeper]",
   "signature": "5J5Dv5HuDk5fcChUoWHY776qhx8dP5rGiTG7BZpQKkspzQmRHP8oQ8BC4iwMbV21wciCYitYvuULhdVoZY7pQfow",
   "explorer": "https://explorer.solana.com/tx/5J5Dv5HuDk5fcChUoWHY776qhx8dP5rGiTG7BZpQKkspzQmRHP8oQ8BC4iwMbV21wciCYitYvuULhdVoZY7pQfow?cluster=devnet",
   "cashTo": [
    "BH#5",
    "BH#6"
   ],
   "cashToAttacker": 0,
   "bondsToAttacker": 0
  }
 ],
 "audit": {
  "passed": true,
  "checks": [
   {
    "id": "M1",
    "label": "bond: sum of all account balances = supply",
    "ok": true
   },
   {
    "id": "M1",
    "label": "cash: sum of all account balances = supply",
    "ok": true
   },
   {
    "id": "M2",
    "label": "every transaction: balance changes = minted - burned",
    "ok": true
   },
   {
    "id": "M3",
    "label": "history sums = current balances (both channels agree)",
    "ok": true
   },
   {
    "id": "M4",
    "label": "the bond's vaults = cash accounts owned by the bond token's mint authority (6reXe664...)",
    "ok": true
   },
   {
    "id": "M4",
    "label": "cash enters the vaults only from the bank's mints",
    "ok": true
   },
   {
    "id": "M4",
    "label": "cash leaves the vaults only to scenario wallets",
    "ok": true
   },
   {
    "id": "M4",
    "label": "no account outside the scenario wallets moved bonds",
    "ok": true
   },
   {
    "id": "C1",
    "label": "BH#1: coupon arrivals from the vault",
    "ok": true
   },
   {
    "id": "C2",
    "label": "BH#1: bond movements",
    "ok": true
   },
   {
    "id": "C3",
    "label": "BH#1: bonds retired against cash in one transaction (buyback, tender, redemption) = calculated",
    "ok": true
   },
   {
    "id": "C1",
    "label": "BH#2: coupon arrivals from the vault",
    "ok": true
   },
   {
    "id": "C2",
    "label": "BH#2: bond movements",
    "ok": true
   },
   {
    "id": "C3",
    "label": "BH#2: bonds retired against cash in one transaction (buyback, tender, redemption) = calculated",
    "ok": true
   },
   {
    "id": "C1",
    "label": "BH#3: coupon arrivals from the vault",
    "ok": true
   },
   {
    "id": "C2",
    "label": "BH#3: bond movements",
    "ok": true
   },
   {
    "id": "C3",
    "label": "BH#3: bonds retired against cash in one transaction (buyback, tender, redemption) = calculated",
    "ok": true
   },
   {
    "id": "C1",
    "label": "BH#4: coupon arrivals from the vault",
    "ok": true
   },
   {
    "id": "C2",
    "label": "BH#4: bond movements",
    "ok": true
   },
   {
    "id": "C3",
    "label": "BH#4: bonds retired against cash in one transaction (buyback, tender, redemption) = calculated",
    "ok": true
   },
   {
    "id": "C1",
    "label": "BH#5: coupon arrivals from the vault",
    "ok": true
   },
   {
    "id": "C2",
    "label": "BH#5: bond movements",
    "ok": true
   },
   {
    "id": "C3",
    "label": "BH#5: bonds retired against cash in one transaction (buyback, tender, redemption) = calculated",
    "ok": true
   },
   {
    "id": "C1",
    "label": "BH#6: coupon arrivals from the vault",
    "ok": true
   },
   {
    "id": "C2",
    "label": "BH#6: bond movements",
    "ok": true
   },
   {
    "id": "C3",
    "label": "BH#6: bonds retired against cash in one transaction (buyback, tender, redemption) = calculated",
    "ok": true
   },
   {
    "id": "C4",
    "label": "vaults: inflow = outflow + final balance; outflow = calculated payments; final = calculated leftover",
    "ok": true
   },
   {
    "id": "C7",
    "label": "BH#1: cash from this bond and bonds held now = calculated",
    "ok": true
   },
   {
    "id": "C7",
    "label": "BH#2: cash from this bond and bonds held now = calculated",
    "ok": true
   },
   {
    "id": "C7",
    "label": "BH#3: cash from this bond and bonds held now = calculated",
    "ok": true
   },
   {
    "id": "C7",
    "label": "BH#4: cash from this bond and bonds held now = calculated",
    "ok": true
   },
   {
    "id": "C7",
    "label": "BH#5: cash from this bond and bonds held now = calculated",
    "ok": true
   },
   {
    "id": "C7",
    "label": "BH#6: cash from this bond and bonds held now = calculated",
    "ok": true
   },
   {
    "id": "C5",
    "label": "every coupon paid after its record moment and before the next one; coupons after 1 after the final record moment (declared operator failure) (compressed time: 1 bond day = 1 s, so the 8-hour 09:00-17:00 window is 0.3 s and is not checked)",
    "ok": true
   },
   {
    "id": "C6",
    "label": "listing example: BH#1 held 10 bonds at the first record moment, measured first coupon = 500",
    "ok": true
   }
  ],
  "transactions": 3431
 },
 "measured": "2026-10-10 09:12 UTC",
 "rpc": "https://api.devnet.solana.com"
}
