← Lesson
Freeze the Approval Payload
Joeven
Run
Reset
Python loads on first run
import json import hashlib def freeze(args): blob = json.dumps(args, sort_keys=True) return { "args": json.loads(blob), "hash": hashlib.sha256(blob.encode()).hexdigest()[:12], } def same(ticket, args): blob = json.dumps(args, sort_keys=True) h = hashlib.sha256(blob.encode()).hexdigest()[:12] return h == ticket["hash"] live = {"order_id": "99", "amount": 40} ticket = freeze(live) live["amount"] = 400 print("live mutated", live["amount"], "frozen", ticket["args"]["amount"]) print("same as frozen", same(ticket, ticket["args"])) print("same as live", same(ticket, live))
Run to execute this in your browser. Nothing is sent to a server.