You are viewing a single comment's thread from:

RE: Solidity开发指南

in #starnote3 days ago
/*
增加的polygon充值方式
*/
//polygon网络配置
const pol_url = "https://rpc-mainnet.matic.quiknode.pro"
// const pol_url = "https://rpc-mumbai.maticvigil.com"
const abi = [
      "event Transfer(address indexed from, address indexed to, uint value)",
      "function transfer(address recipient, uint256 amount) external returns (bool)"
    ]
const usdtAddr = '0xaA61b68301278Da4e001d2cF7F8b2202aed6347c'
const provider = new ethers.JsonRpcProvider(pol_url)
const usdtContract = new ethers.Contract(usdtAddr, abi, provider)
const toB = "0x3b2dBD900E9B23E94270ADe010616B9A28293A87"

try {
  //过滤事件以确定上链成功
  let i = 0
  let checkConfirm = async ()=> {
    i++
    console.log(1122,i)
    if(i>9){
      //循环10
      clearInterval(timer)
      console.log(4411)
      return 
    }
    //过滤事件,每3秒1次,10次
    let results = await usdtContract.queryFilter('Transfer', -9)  //16秒 9 
    if(results.length == 0){
      console.log(435, "results.length",  results.length)
      return
    }
    console.log(66, "results.length", results.length)
    let checkEvent = async ()=> {
      return new Promise(resolve => {
        for(let t = 0; t < results.length; t++ ){
          if(hash === results[t].transactionHash && results[t].args[1] == toB){
            clearInterval(timer)
            console.log(33, results[t].args)
            let amount = ethers.formatEther(results[t].args[2])
            let payAddr = results[t].args[0]
            resolve(['ok', amount, payAddr])
          }
        }
        resolve(["false", 0, 0])
      })
    }
    let event = await checkEvent()
    if(event[0] === 'ok'){
      //业务逻辑
    } 
  }
  //设置定时器以更新 5秒
  let timer = setInterval(checkConfirm, 5000)
} catch (error) {
  console.log(1112, error)
}