惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Cyberwarzone
Cyberwarzone
Help Net Security
Help Net Security
L
LINUX DO - 最新话题
Security Archives - TechRepublic
Security Archives - TechRepublic
A
About on SuperTechFans
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Attack and Defense Labs
Attack and Defense Labs
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
The GitHub Blog
The GitHub Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Webroot Blog
Webroot Blog
T
Tenable Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
Microsoft Security Blog
Microsoft Security Blog
人人都是产品经理
人人都是产品经理
Simon Willison's Weblog
Simon Willison's Weblog
D
Docker
爱范儿
爱范儿
AI
AI
宝玉的分享
宝玉的分享
PCI Perspectives
PCI Perspectives
The Register - Security
The Register - Security
Project Zero
Project Zero
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
IT之家
IT之家
S
Securelist
Scott Helme
Scott Helme
B
Blog
Forbes - Security
Forbes - Security
Google DeepMind News
Google DeepMind News
T
The Blog of Author Tim Ferriss
月光博客
月光博客
P
Proofpoint News Feed
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
F
Fortinet All Blogs
H
Help Net Security
Last Week in AI
Last Week in AI
N
News and Events Feed by Topic
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
MyScale Blog
MyScale Blog
I
InfoQ
P
Privacy International News Feed
V
V2EX
有赞技术团队
有赞技术团队
G
Google Developers Blog
阮一峰的网络日志
阮一峰的网络日志
腾讯CDC
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
S
Schneier on Security
T
Tailwind CSS Blog

以太坊

ERC-4337 的 Bundler 网络会不会成为新的审查单点? 最近学了一点点 web3 开发,我把学习内容做成网站笔记,分享给 web3 初学者 狗屎运。昨晚睡觉前下了单 eth 的 10 倍的做空合约,醒来一看赚了 30%。发帖得瑟一下 BasePaint 以太坊可以随便声明我向外转出 Token?不需要我的同意和授权? 在家里跑 ETH、BSC 节点要紧不 Sign 第二期空投活动已经开始 大毛,领取 Etherscan 积分 以太坊十周年纪念 NFT 地板价 5.01U eth 这次能破前高吗 我从币安提现 eth,为啥钱包 account 1 的 eth 地址只可以用 BSC 网络, account 2 的地址却 BSC 和 ETH 网络都可以用? 以太坊十周年纪念 NFT 复刻一个 etherscan.io 这样的网站需要多少钱? 以太坊是否可以离线验证交易是否成功? [ETHGlobal Cannes] 第一次参加 IRL 黑客松,和同事一起做的项目获奖了,很开心 目前 Ethereum 生态里有哪些形态接近 ko-fi.com / Buy Me a Coffee / Kickstarter 的产品? Uniswap V4 中如何从 PoolManager 获取指定池的 ETH 余额? Uniswap v4 出来了,怎么看不懂啊 有人对 AI 模型根据开源项目依赖和数据生成权重分配赞助资金感兴趣吗? 这个 UI 实在是太酷了 搞爬虫前的一些疑问 - V2EX 目前 eth 全节搭建硬盘占用问题 写了一个以太坊靓号生成器, 支持多节点运行, 让你的任意设备成为计算节点 - V2EX 为什么以太坊的 Uncle rewards 比 block rewards 少那么多? STARK 都领了吗? blockchain.com 还有一点以太币,放了几年了都快忘记了,请问如何提现。 华为云开始做以太坊质押服务了 兄弟们 怎么看? 你们运行的以太坊全节点完全同步用了多久? 今天发现以太坊的手续费下降了很多,发生了啥?好像没看见有升级啊?哪位大佬指点一下?谢谢 现在国内还能运行全节点吗 Magician-Scanning 1.0.12 发布 viem 用 PostgreSQL 来存储以太坊上的所有交易 transaction,如何分表分库? 以太坊全节点和归档节点之间能互相同步数据吗? eth 和 bit 域名本质上是一样的吗?两者关系类似 com 和 net? 升级成千兆宽带, Geth 节点一晚上就同步好了 为什么太坊这种几千亿市值的项目,居然连断电保护都做不好? 以太坊全节点突然断电后无法同步 请教一下购买 ENS 域名支付的问题 有了这个工具包,用 Java 调用智能合约更加简便了 Magician-Web3 1.0.5 发布啦,加入了负载均衡 和 重试策略 Magician-Web3 1.0.2 发布,支持配置代理 大家好,我开发了一个扫块的 工具包,可以用来方便的监听 交易动态 请教一个 Eth 合约调用 Gas 的计算问题. 以太坊如何查出所有的 Pull Rugged (跑路/割韭菜) 项目? geth 的 bootnodes 好像不能作为服务发现了? 树莓派搭建以太坊全节点的成本是多少? - V2EX PoS 会让以太坊的安全性受到威胁吗? macOS 的快捷指令有啥比较亮眼的用法?
Magician-Web3 1.0.3 发布啦,可以根据 inputData 里的数据 进行监控了
Joker123456789 · 2022-11-23 · via 以太坊

Magician-Web3 是一个区块链开发工具包。它由两个功能组成。一个是扫描区块链,根据开发者的需要监控交易。另一个是对 web3j 的一些二次打包,可以减少开发者在一些常见场景下的工作量。它计划支持三种链,ETH ( BSC 、POLYGAN 等)、SOL 和 TRON

本次更新的点

  1. 新增 InputDataFilter ,可以更加精准的根据 inputData 进行监控了

  2. 改变扫描模式,现在只需要设定一个起始块就好了,程序会按照一定的频率从起始块往后扫描,不再需要设置每轮扫描块数

  3. Web3j 的扩展部分,修改了私钥的传入方式

InputDataFilter

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

public EthMonitorFilter ethMonitorFilter() {
        return EthMonitorFilter.builder()
                .setToAddress("0x552115849813d334C58f2757037F68E2963C4c5e") // 合约地址
                .setInputDataFilter( // 根据 inputData 筛选
                        InputDataFilter.create()
                                .setFunctionCode("0xadasasdf") // 被调用的函数编码( inputData 前十位)
                );
}

如果 有一个合约 [0x552115849813d334C58f2757037F68E2963C4c5e], 里面有一个函数是 transferFrom (address from, address to, uint256 amount)

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

public EthMonitorFilter ethMonitorFilter() {
        return EthMonitorFilter.builder()
                .setToAddress("0x552115849813d334C58f2757037F68E2963C4c5e") // 合约地址
                .setInputDataFilter( // 根据 inputData 筛选
                        InputDataFilter.create()
                                .setFunctionCode(ERC20.TRANSFER_FROM.getFunctionCode()) // 被调用的函数编码( inputData 前十位)
                                .setTypeReferences( // 此方法的参数列表(仅类型)
                                        new TypeReference<Address>(){}, // 第一个参数的类型
                                        new TypeReference<Address>(){}, // 第二个参数的类型
                                        new TypeReference<Uint256>(){} // 第三个参数的类型
                                )
                                .setValue(null, "0x552115849813d334C58f2757037F68E2963C4c5e", null)// 筛选第二个参数( to ) = 0x552115849813d334C58f2757037F68E2963C4c5e
                );
}

只需要设置起始块

MagicianBlockchainScan.create()
        .setRpcUrl("https://data-seed-prebsc-1-s1.binance.org:8545/")
        .setChainType(ChainType.ETH)
        .setScanPeriod(5000) 
        .setScanSize(1000) // 这个配置项已经被彻底移除了,不再需要配置了
        .setBeginBlockNumber(BigInteger.valueOf(24318610))
        .addEthMonitorEvent(new EventOne())
        .addEthMonitorEvent(new EventTwo())
        .addEthMonitorEvent(new EventThree())
        .start();

扫描的逻辑换成了从起始块 按照一定的频率 一块一块的往后扫,不再是以前的 每轮扫描多少块了

Web3j 的扩展部分,修改了私钥的传入方式

这种方式已经淘汰了

EthHelper ethHelper = MagicianWeb3.getEthBuilder().getEth(web3j, privateKey);

EthContract ethContract = MagicianWeb3.getEthBuilder().getEthContract(web3j, privateKey);

现在换成了,在调用方法时 才传入,目的是为了解决:如果有多个地址 需要发起交易,可以只用一个对象解决

// 转账
TransactionReceipt transactionReceipt = ethHelper.transfer(
            toAddress,
            privateKey, // 调用方法时传入私钥
            BigDecimal.valueOf(1),
            Convert.Unit.ETHER
);


// 往合约里写入数据
SendResultModel sendResultModel = ethContract.sendRawTransaction(
                    fromAddress, 
                    contractAddress, 
                    privateKey, // 调用方法时传入私钥
                    new BigInteger("1200000"),
                    new BigInteger("800000"),
                    ethAbiCodec.getInputData(
                            "transfer",
                            new Address(toAddress),
                            new Uint256(new BigInteger("1000000000000000000"))
                    )
            );

可以访问官网了解更多:https://magician-io.com