Skip to content

Commit d17e039

Browse files
GeObtsclaude
andcommitted
feat: v4 audit-hardening — _mint NFTs, nonReentrant markDefaulter, default coverage
The v4 audit-hardened source. The live Arbitrum Sepolia deploy was built from this code, so the repo matches on-chain there. Base Sepolia has NOT been redeployed to v4 yet (still v2, Manager 0x606f71bd) — a v4 Base redeploy is a separate, pending step. - NFTs mint via _mint instead of _safeMint (Pass/Completion/Receipt): removes the onERC721Received callback from join/payout/completion so a non-receiver participant can't lock payouts. - markDefaulter gains nonReentrant; CEI + pull-payment preserved throughout. - Tests proving the tanda always reaches COMPLETED and funds are never trapped: majority-default, all-participants-default / full-collapse, and honest-refund settlement (new FullLifecycleIntegration.t.sol + EdgeCasesAndFuzz). - Deploy: fs_permissions for deployments/ JSON writes. - Broadcast logs: the v4 deploy is Arbitrum Sepolia 421614 (run-latest, Manager 0x6887437c). Earlier 421614 runs (v2 0x02532dbe, v3 0xc14ddbe2) and all Base Sepolia 84532 runs (latest is v2, 0x606f71bd) are kept as historical deploy records of prior versions, not v4 deploys. - Tanda.flat.sol (audit flatten) + receipt/pass NFT metadata. forge fmt + build + test all green (91 passed, 0 failed, 0 skipped). src/legacy/ left frozen (reference-only, untouched). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent eec636a commit d17e039

27 files changed

Lines changed: 7958 additions & 155 deletions

.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,3 +18,7 @@ docs/
1818
.env
1919
.env.*
2020
!.env.example
21+
22+
# IPFS upload staging folders — content is published to Pinata, not git
23+
ipfs-pass/
24+
ipfs-bitso/

Tanda.flat.sol

Lines changed: 3262 additions & 0 deletions
Large diffs are not rendered by default.

bitso-receipt-metadata.json

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"name": "Mi Tanda — Recibo Semana 1",
3+
"description": "Semana 1 · Patrocinado por Bitso. Recibo on-chain de tu participación en Mi Tanda.",
4+
"image": "ipfs://bafybeib5nb7q4jci5trcpnd5y4uryrnxckofc4vgquwaasia7ontnbz7we",
5+
"external_url": "https://bitso.com"
6+
}
7+

broadcast/Deploy.s.sol/421614/run-1780442906184.json

Lines changed: 560 additions & 0 deletions
Large diffs are not rendered by default.

broadcast/Deploy.s.sol/421614/run-1780488987187.json

Lines changed: 560 additions & 0 deletions
Large diffs are not rendered by default.

broadcast/Deploy.s.sol/421614/run-1780497488245.json

Lines changed: 560 additions & 0 deletions
Large diffs are not rendered by default.

broadcast/Deploy.s.sol/421614/run-latest.json

Lines changed: 560 additions & 0 deletions
Large diffs are not rendered by default.

broadcast/Deploy.s.sol/84532/run-1780008045361.json

Lines changed: 579 additions & 0 deletions
Large diffs are not rendered by default.

broadcast/Deploy.s.sol/84532/run-1780414492131.json

Lines changed: 579 additions & 0 deletions
Large diffs are not rendered by default.

broadcast/Deploy.s.sol/84532/run-latest.json

Lines changed: 579 additions & 0 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)