import sys, json, urllib.request; sys.path.insert(0,'scripts') from rpc import * DOM={0:"Ethereum",1:"Avalanche",2:"OP",3:"Arbitrum",5:"Solana",6:"Base",7:"Polygon",10:"Unichain",11:"Linea",12:"Codex",13:"Sonic",14:"WorldChain",16:"Sei",17:"BNB",18:"XDC",19:"HyperEVM",21:"Ink",22:"Plume",26:"Arc"} def decode(arc_tx): tx=call("eth_getTransactionByHash",[arc_tx]); inp=tx["input"][10:] off=int(inp[0:64],16)*2; ln=int(inp[off:off+64],16); m=inp[off+64:off+64+ln*2] f=lambda a,b:m[a*2:b*2]; body=m[148*2:]; g=lambda a,b:body[a*2:b*2] sd=int(f(4,8),16) return {"arc_tx":arc_tx,"srcDomain":sd,"srcChain":DOM.get(sd,"?"),"nonce":"0x"+f(12,44),"burnToken":"0x"+g(4,36),"mintRecipient":"0x"+g(36,68)[-40:],"amount":int(g(68,100),16)/1e6,"messageSender":"0x"+g(100,132),"relayer":tx["from"]} if __name__=="__main__": for h in sys.argv[1:]: d=decode(h); print(json.dumps(d,indent=1))