Làm video ai all in 1

async function scan(){ const input=document.getElementById("contracts").value.trim() if(!input){ alert("paste contract list") return } const list=input.split("\n").map(x=>x.trim()).filter(x=>x) const chainKey=document.getElementById("chain").value const chain=CHAINS[chainKey] document.getElementById("status").innerText="scanning..." const rpc = chainKey === "bsc" ? RPCS[chainKey] : RPCS[chainKey] + ALCHEMY_KEY const provider=new ethers.providers.JsonRpcProvider(rpc) const factory=new ethers.Contract(chain.factory,FACTORY,provider) const out=document.getElementById("out") out.innerHTML="" let i=1 for(const addr of list){ try{ document.getElementById("status").innerText=`scanning ${i}/${list.length}` const token=new ethers.Contract(addr,ERC20,provider) const [name,symbol,decimals]=await Promise.all([ token.name(), token.symbol(), token.decimals() ]) const pairAddr=await factory.getPair(addr,chain.base) let tokenLP="-" let baseLP="-" let link="-" if(pairAddr!="0x0000000000000000000000000000000000000000"){ const pair=new ethers.Contract(pairAddr,PAIR,provider) const [token0,reserves]=await Promise.all([ pair.token0(), pair.getReserves() ]) if(token0.toLowerCase()==addr.toLowerCase()){ tokenLP=Number(reserves[0])/10**decimals baseLP=Number(reserves[1])/10**18 }else{ tokenLP=Number(reserves[1])/10**decimals baseLP=Number(reserves[0])/10**18 } link=`https://www.dextools.io/app/${chain.name}/pair-explorer/${pairAddr}` } const row=document.createElement("tr") row.innerHTML=` ${i} ${name} (${symbol}) ${addr} ${tokenLP} ${baseLP} ${link=="-"?"-":`view`} ` out.appendChild(row) }catch(e){ console.log("Lỗi token:", addr, e) const row=document.createElement("tr") row.innerHTML=` ${i} ERROR ${addr} - - - ` out.appendChild(row) } i++ } document.getElementById("status").innerText="done" }

Nhận xét