← Back
import { deriveDepositWallet } from "@polymarket/builder-relayer-client";
import { createPublicClient, http, getAddress } from "viem";

const FACTORY="0x00000000000Fb5C9ADea0298D729A0CB3823Cc07";
const IMPL="0x58CA52ebe0DadfdF531Cde7062e76746de4Db1eB";
const PUSD="0xC011a7E12a19f7B1f670d46F03B03f3342E82DFB";
const RPC="https://polygon-bor-rpc.publicnode.com";

const users=[
  {name:"Rick",  eoa:"0xe2d892e35a55811c4215b14ec5ca59b3f9633d3f", dw:"0x50a8061e9448eb1e5d5e7af07be4e4f63c6f24ff"},
  {name:"User2", eoa:"0xc4b7106d2755d2e384119337ec167d359d964141", dw:"0x8b95fb94829ae79fba30708ea2b768b651cfd3cb"},
  {name:"User3", eoa:"0xbe327248a0218c4f9959a61bdde290f017f36919", dw:"0xa1c283710e2f26bbdc28a8e99c8a03d591456d23"},
];

const client=createPublicClient({transport:http(RPC)});
const erc20=[{name:"balanceOf",type:"function",stateMutability:"view",inputs:[{name:"a",type:"address"}],outputs:[{type:"uint256"}]}];

for(const u of users){
  let derived;
  try{ derived=deriveDepositWallet(getAddress(u.eoa),FACTORY,IMPL);}catch(e){derived="ERR:"+e.message;}
  const match=derived.toLowerCase()===u.dw.toLowerCase();
  let bal="?";
  try{ const b=await client.readContract({address:PUSD,abi:erc20,functionName:"balanceOf",args:[getAddress(u.dw)]}); bal=(Number(b)/1e6).toFixed(6);}catch(e){bal="ERR:"+e.message;}
  console.log(u.name, "stored_dw="+u.dw, "derived="+derived.toLowerCase(), "MATCH="+match, "pUSD_bal="+bal);
}