Magician-Scanning 区块链开发工具包开源项目

我要开发同款
匿名用户2022年11月06日
371阅读

技术信息

系统类型
Web3
开源地址
https://gitee.com/yuyenews/Magician-Scanning
授权协议
MIT

作品详情

Magicia-Scaig是一个用Java开发的扫描区块链的工具包,当我们在程序中需要一些功能时,它可以派上用场,比如说。

当一个地址收到ETH时,程序中的一个方法会被自动触发,这个交易会被传入该方法。

当一个合约的某个功能被调用时(比如ERC20转账),它会自动触发程序中的一个方法,并将这个交易传递给这个方法。它甚至可以只在代币被转移到指定地址时被触发。

当程序需要保留一个区块高度开始以来的所有交易记录时,也可以使用这个工具包。

它计划支持三种链,ETH(BSC,POLYGON等),SOL和TRON

初始化配置导入依赖<depedecy><groupId>com.github.yuyeews</groupId><artifactId>Magicia-Scaig</artifactId><versio>1.0.6</versio></depedecy><!--Thisistheloggigpackage,youmusthaveitorthecosolewillotseeaythig,ayloggigpackagethatcabridgewithslf4jissupported--><depedecy><groupId>org.slf4j</groupId><artifactId>slf4j-jdk14</artifactId><versio>1.7.12</versio></depedecy>扫块,监听交易事件创建一个监听器

监听器可以创建多个,根据你的需求分别设置监听条件

ETH(BSC,POYGAN等)监听器/***创建一个类,实现EthMoitorEvet接口即可*/publicclassEvetDemoimplemetsEthMoitorEvet{/***筛选条件,如果遇到了符合条件的交易,会自动触发call方法*这些条件都是并且的关系,必须要同时满足才行*如果不想根据某个条件筛选,直接不给那个条件设置值就好了*这个方法如果不实现,或者返回ull,那么就代表监听任意交易*/@OverridepublicEthMoitorFilterethMoitorFilter(){returEthMoitorFilter.builder().setFromAddress("0x131231249813d334C58f2757037F68E2963C4crc")//筛选fromAddress发送的交易.setToAddress("0x552115849813d334C58f2757037F68E2963C4c5e")//筛选toAddress或合约地址收到的交易.setMiValue(BigIteger.valueOf(1))//筛选发送的主链币数量>=miValue的交易.setMaxValue(BigIteger.valueOf(10))//筛选发送的主链币数量<=maxValue的交易.setIputDataFilter(//根据iputData筛选IputDataFilter.builder().setFuctioCode(ERC20.TRANSFER.getFuctioCode())//函数签名(被调用的合约内的某方法),支持任意函数,这里的枚举只是一部分标准的合约函数.setTypeRefereces(//此方法的参数列表(仅类型)ewTypeReferece<Address>(){},ewTypeReferece<Uit256>(){}).setValue("0x552115849813d334C58f2757037F68E2963C4c5e",ull)//筛选第几个参数=什么值);}/***如果遇到了符合上面条件的交易,就会触发这个方法*trasactioModel.getEthTrasactioModel()是一个交易对象,内部包含hash,value,from,to等所有的数据*/@Overridepublicvoidcall(TrasactioModeltrasactioModel){Strigtemplate="EvetOe扫描到了,hash:{0},from:{1},to:{2},iput:{3}";template=template.replace("{0}",trasactioModel.getEthTrasactioModel().getBlockHash());template=template.replace("{1}",trasactioModel.getEthTrasactioModel().getFrom());template=template.replace("{2}",trasactioModel.getEthTrasactioModel().getTo());template=template.replace("{3}",trasactioModel.getEthTrasactioModel().getIput());System.out.pritl(template);}}IputDataFilter详解

如果你想监控,某合约内的某函数被调用的交易

publicEthMoitorFilterethMoitorFilter(){returEthMoitorFilter.builder().setToAddress("0x552115849813d334C58f2757037F68E2963C4c5e")//合约地址.setIputDataFilter(//根据iputData筛选IputDataFilter.builder().setFuctioCode("0xadasasdf")//被调用的函数编码(iputData前十位));}

如果有一个合约[0x552115849813d334C58f2757037F68E2963C4c5e],里面有一个函数是trasferFrom(addressfrom,addressto,uit256amout)

你想实现一个监控:如果有人用这个合约里的这个函数,将代币转给[0x552115849813d334C58f2757037F68E2963C4c5e]时,就触发Moitor事件,那么你可以这样写

publicEthMoitorFilterethMoitorFilter(){returEthMoitorFilter.builder().setToAddress("0x552115849813d334C58f2757037F68E2963C4c5e")//合约地址.setIputDataFilter(//根据iputData筛选IputDataFilter.builder().setFuctioCode(ERC20.TRANSFER_FROM.getFuctioCode())//被调用的函数编码(iputData前十位).setTypeRefereces(//此方法的参数列表(仅类型)ewTypeReferece<Address>(){},//第一个参数的类型ewTypeReferece<Address>(){},//第二个参数的类型ewTypeReferece<Uit256>(){}//第三个参数的类型).setValue(ull,"0x552115849813d334C58f2757037F68E2963C4c5e",ull)//筛选第二个参数(to)=0x552115849813d334C58f2757037F68E2963C4c5e);}SOL,TRON链的扫块正在开发中......开发中......开启一个扫块任务//初始化线程池,核心线程数必须>=扫块的任务数量+重试策略的数量EvetThreadPool.iit(1);//开启一个扫块任务,如果你想扫描多个链,那么直接拷贝这段代码,并修改配置即可MagiciaBlockchaiSca.create().setRpcUrl(EthRpcIit.create().addRpcUrl("https://data-seed-prebsc-1-s1.biace.org:8545").addRpcUrl("https://data-seed-prebsc-2-s1.biace.org:8545").addRpcUrl("https://data-seed-prebsc-1-s2.biace.org:8545"))//节点的RPC地址.setScaPeriod(5000)//每轮扫描的间隔.setBegiBlockNumber(BigIteger.valueOf(24318610))//从哪个块高开始扫描.addEthMoitorEvet(ewEvetOe())//添加监听事件.addEthMoitorEvet(ewEvetTwo())//添加监听事件.addEthMoitorEvet(ewEvetThree())//添加监听事件.start();//TODO暂时不支持SOL和TRON,正在开发中......文档地址

https://magicia-io.com/chai

功能介绍

Magician-Scanning 是一个用 Java 开发的扫描区块链的工具包,当我们在程序中需要一些功能时,它可以派上用场,比如说。 当一个地址收到ETH时,程序中的一个方法会被自动触发,这...

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论