erc20根据合约地址获取所有交易记录
生活随笔
收集整理的這篇文章主要介紹了
erc20根据合约地址获取所有交易记录
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1.etherscan api地址
https://etherscan.io/apis2.獲取特定區(qū)塊段,中的特定合約的交易記錄
https://api.etherscan.io/api?module=account&action=tokentx&contractaddress=填入合約地址&startblock=0&endblock=10000&page=1&offset=100&sort=asc&apikey=YourApiKeyToken接口原理:按照區(qū)塊獲取交易記錄(eth上的es設(shè)置只有10000,所以采取這種方式) 部分參數(shù)示例: contractaddress 自己的合約地址 startblock 開始區(qū)塊 endblock 結(jié)束區(qū)塊 page 頁(yè)數(shù) offset 每頁(yè)數(shù)量 &apikey=YourApiKeyToken 測(cè)試時(shí)(最好修改)可不修改,只是限制調(diào)用次數(shù)3.獲取eth區(qū)塊高度
https://api.etherscan.io/api?module=proxy&action=eth_blockNumber&apikey=YourApiKeyToken實(shí)現(xiàn)代碼:
@Scheduled(cron = "0/1 * * * * ? ") // 間隔1秒執(zhí)行public synchronized void tokenTranferRec() {try {logger.info("獲取交易記錄");ErcConfigEntity ercConfigEntity = ercConfigService.selectById(1);String result = GetApi.getApi(TOKENTRANSFERRECSTART +STARTBLOCK + ercConfigEntity.getStartBlock() +ENDBLOCK + ercConfigEntity.getEndBlock() +PAGE + ercConfigEntity.getPage() +OFFSET + ercConfigEntity.getOffset() +TOKENTRANSFERRECEND);JSONObject object = JSON.parseObject(result);//判斷接口調(diào)用返回值if ("1".equals(object.getString("status"))) {logger.info("已獲取到交易記錄");JSONArray list = object.getJSONArray("result");for (int i = 0; i < list.size(); i++) {JSONObject ercTraTec = list.getJSONObject(i);ErcTraRecEntity ercTraRecEntity = new ErcTraRecEntity();ercTraRecEntity = JSONObject.toJavaObject(ercTraTec, ErcTraRecEntity.class);logger.info(ercTraRecEntity.getHash());ercTraRecService.insertByHash(ercTraRecEntity);}ercConfigEntity.setPage(ercConfigEntity.getPage() + 1);ercConfigEntity.setOffseted(ercConfigEntity.getOffset());ercConfigService.updateById(ercConfigEntity);}//當(dāng)前區(qū)塊有數(shù)據(jù)時(shí),不執(zhí)行區(qū)塊+10000,page=1的操作if (object.getJSONArray("result").size() <= 0) {//當(dāng)前區(qū)段的塊中沒(méi)有記錄時(shí),將endBlock賦值給startBlock,endBlock+10000-->判斷是否大于當(dāng)前eth區(qū)塊高度,//將startBlock,endBlock以及page=1入庫(kù)。logger.info("start" + ercConfigEntity.getStartBlock());logger.info("end" + ercConfigEntity.getEndBlock());//獲取區(qū)塊高度String resul = GetApi.getApi(ETHBLOCKNUMBER);JSONObject object1 = JSON.parseObject(resul);long out = Integer.parseInt(object1.get("result").toString().substring(2, object1.get("result").toString().length()), 16) + 100000000L;//if (ercConfigEntity.getEndBlock() <= out) {ercConfigEntity.setStartBlock(ercConfigEntity.getEndBlock());ercConfigEntity.setPage(1L);}if ((ercConfigEntity.getEndBlock() + 10000) < out) {ercConfigEntity.setEndBlock(ercConfigEntity.getEndBlock() + 10000);} else {ercConfigEntity.setEndBlock(out);}ercConfigService.updateById(ercConfigEntity);}} catch (Exception e) {logger.error(e.toString());} finally {try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}}總結(jié)
以上是生活随笔為你收集整理的erc20根据合约地址获取所有交易记录的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 安卓进程优先级调高
- 下一篇: matlab 绘制扇形区域