chơi phỏm online:联博(www.326681.com)_明晰以太坊事宜日志

admin 3个月前 (11-16) 科技 3 0

chơi game kiếm tiền(www.vng.app):chơi game kiếm tiền(www.vng.app) cổng Chơi tài xỉu uy tín nhất việt nam。chơi game kiếm tiền(www.vng.app)game tài Xỉu đánh bạc online công bằng nhất,chơi game kiếm tiền(www.vng.app)cổng game không thể dự đoán can thiệp,mở thưởng bằng blockchain ,đảm bảo kết quả công bằng.

前言

当你在区块链浏览器上查询生意时,是否只是查看概览和内部生意?那么事宜日志呢?是否在不起眼的角落被你忽略了。

生意事宜日志对于用户以及开发者来说现实上都是至关主要的。通过触发事宜不仅能将链上智能合约的生意通知给外界,还能让智能合约开发者对合约举行测试、保证合约平安。

接下来就辅助人人详细明晰下关于以太坊的事宜日志以及关于它所延伸出来的一些基础知识。

事宜

一、 什么是事宜

事宜是能利便地挪用以太坊虚拟机日志功效的接口。

而 Solidity 事宜就是 EVM 的日志功效之上的抽象。应用程序可以通过以太坊客户端的 RPC 接口订阅和监听这些事宜,允许我们打印在区块链上的信息。

以是通过 Solidity 事宜,我们可以做到:

二、声明和触发事宜

我们以官方 ERC20 合约代码为例,在 IERC20.sol 文件中通过 event 要害字举行声明。

我们可以把事宜看作是一个特殊类型,上面的代码中我们确立了一个名为 Transfer 的事宜,在该事宜中有两种参数类型:有索引 (indexed) 和无索引。其中 from 和 to 参数是有索引的,而 value 参数是没有索引的。

在 ERC20.sol 的 _transfer 函数中通过 emit 要害字触发响应事宜(之前的版本里并不需要使用 emit)。

日志

一、什么是日志

在以太坊中,日志是用来存储事宜。当事宜被挪用时,会触发参数存储到生意的日志中。其不能被智能合约接见,然则可以提供关于生意和区块中发送的信息。

我们随意点开一条生意 (0x477ed7208127bea597142622d52df46d3e4967835bd3609995581eb5aaeeec3e),查看其日志 Logs。

通过日志我们可以将日志分为四个部门:

1、Address: 地址。即发失事宜的合约地址或者账户的地址。

2、Name: 名字。即触发的事宜名及其参数。

3、Topics: 主题。即事宜中有索引 (indexed) 的参数。

4、Data: 数据。即事宜中没有索引的参数。

二、日志纪录中的主题

上面我们有说到主题 (Topics),接下来我们详细说下主题。

每个日志纪录都包罗「主题 (topics)」和「数据 (data)」。主题是 32 字节(256 位),用于形貌事宜中发生的事情。差其余操作码 (LOG0 LOG1 LOG2 LOG3 LOG4) 用以形貌需要包罗在日志纪录中的主题数。

EVM 中有 5 个操作码用于触发事宜日志并确立日志纪录,划分是 LOG0,LOG1,LOG2,LOG3 以及 LOG4,它们用于形貌智能合约中的事宜,例如代币的转移、所有权的调换等。LOG1 即包罗了一个主题,而单个日志纪录中最多可以包罗的主题就是 LOG4 的四个主题。

Topics0 通常为发生事宜名称的署名(keccak256 的哈希值),包罗其参数的类型(address,uint256 等),Topics1 为第一个索引参数的值,Topics2 为第二个索引参数的值。

该主题中 Topics0 的值为 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef,其事宜为上一行 Name 的内容。

而我们对事宜 Transfer(address,address,uint256) 举行 keccak256 加密后获得的效果和 Name 的值一样,说明 Name 的值简直为事宜名称的署名。固然,有一个破例是没有事宜署名的,那就是触发「匿名事宜」时。

Topics1 就是第一个索引参数的值,即 form 地址的值。Topics2 就是第二个索引参数的值,即 to 地址的值。从内部挪用剖析也能看到简直是这样。

主题只能包罗 32 个字节的数据,以是像可能跨越 32 个字节的内容如数组、字符串等的内容不能用作主题,若是要实验包罗大于 32 个字节的数据,则该主题必须进过 hash 盘算,以是跨越 32 个字节后最好当做数据包罗在日志纪录中。

三、日志纪录中的数据

日志纪录除了主题,尚有一部门内容就是数据,数据就是事宜的非索引参数的 ABI 编码或者 hash 值,我们可以使用 Dec 或 Hex 查看数据 data 的值。

数据和主题都有各自的优劣:

  • 数据比主题所需要的 gas 少。

由于主题是带有索引的参数,以是我们可以直接在日志中举行搜索,而数据是 ABI 编码或 hash 值,以是不能直接搜索。

,

以太坊统计网

,

皇冠代理网址www.hg9988.vip)是一个开放皇冠代理网址即时比分、皇冠手机网址代理最新登录线路、皇冠手机网址会员最新登录线路、皇冠网址代理APP下载、皇冠网址会员APP下载、皇冠网址线路APP下载、皇冠网址电脑版下载、皇冠网址手机版下载的皇冠新现金网平台。

,

www.326681.com采用以太坊区块链高度哈希值作为统计数据,联博以太坊统计数据开源、公平、无任何作弊可能性。联博统计免费提供API接口,支持多语言接入。

,

凭证黄皮书我们可以找到日志的相关 gas 成本,日志的基础用度是 375 gas,每个主题也是 375 gas,而数据字节的成本是 8 gas。

我们可以通过黄皮书知道日志的 gas 用度异常廉价,一个 ERC20 代币转账事宜的成本最多只破费 1756 gas(日志基础的 375 gas,转账事宜 3 个主题的 375 * 3 =1125 gas,数据字节最大的 32 字节为 8 * 32 = 256 gas),而尺度以太币的转账需要破费 21000 gas。固然了,前面说的只是日志纪录操作自身的成本,智能合约开发中不能单纯值盘算日志纪录操作的成本,但在开发中,我们可以仅在状态变量中保留智能合约所需要使用的数据,其他的就用事宜来处置,这样能省下许多的 gas 用度。

触发事宜

接下来以一个实例举行说明触发事宜,下面的代码实现了相符 ERC20 尺度的代币合约所使用的转账事宜。

由于上面不是一个「匿名事宜」,以是第一个主题将包罗事宜的署名(署名时只需要参数的类型)。

然后我们看一下该事宜的参数,其中 from 和 _to 地址都是有索引的,value 值是没有索引的。以是 _from 和 _to 地址会被当成主题,而 _value 值会被当成数据。

在 3.3 节中我们说到过主题能被搜索,而数据不能,以是我们能在日志中搜索 from 地址和 _to 地址值的相关转账日志,却不能够搜索到转账金额为 _value 值的转账日志。由于该事宜具有 3 个主题(事宜的署名,from,_to),以是该日志纪录操作将使用 LOG3 操作码。

那若是我们想要找到数据的内容呢?这里就需要知道操作码在 EVM 中的参数。LOG3 虽然包罗 3 个主题,在 EVM 中却有 5 个参数。

若是要读取数据的内容,通过以下的方式就可以从内存中读取事宜数据了。

钓鱼

一、事宜在钓鱼中的使用

前面先容了那么多日志事宜,那这些是若何和钓鱼联系到一起的呢?攻击者一样平常会通过日志事宜伪装成生意所或者名人等给受害者转币(该币无现实生意价值,是钓鱼代币),受害者看到是生意所或者名人转来的代币则放松小心,此时攻击者会指导受害者到有钓鱼代币的池子中,受害者看到该代币生意价值极高,会马上授权举行生意,而此时就陷入了攻击者设置的圈套,攻击者会让受害者授权从而偷取走受害者钱包中的钱。

下图就是之前发生的一起钓鱼事宜,攻击者伪装成币安热钱包给其他人转钓鱼代币。

我们可以在 BSC 浏览器上通过标签找到官方地址。

通过查询,发现 Binance Hot Wallet 6 地址正是 0x8894e0a0c962cb723c1976a4421c95949be2d4e3

由于浏览器纪录是凭证事宜来的,以是说 topics1 的值即 sender 的值就是 0x8894e0a0c962cb723c1976a4421c95949be2d4e3

二、复现

下下面是 BEP20 的伪代码,以 BNB Chain 主网为例举行复现,攻击者确立一个名为「Phishing Token」的钓鱼代币。

如下图所示,新增 Binance 参数其值为 0x8894E0a0c962CB723c1976a4421c95949bE2D4E3

然后,我们要修改如下图红色符号代码,将 emit 触发事宜中的 sender 地址修改为 Binance。

部署好合约(https://bscscan.com/address/0x7c08aa19b8da2c14591506d7d3c385fc702e0630)后挪用 transfer 函数将钓鱼代币转发给受害者。

查看生意信息,发现这里的 from 地址并不是攻击者的地址 0x95E2Ea34dEB5C0954B91a47f459770D20568A15B,而是 Binance: Hot Wallet 6 的地址 0x8894E0a0c962CB723c1976a4421c95949bE2D4E3

查看 Logs 日志,Topics1 纪录的 sender 地址同样也是 Binance Hot Wallet 6 地址,而  Topics2 纪录的 recipient 就是受害者的地址了。

总结

细节决议成败,不要以为事宜日志是微不足道的九牛一毫。在区块链天下越是细节的地方越容易被黑客攻击行使,往往需要加倍郑重小心。同时需要注重的是,我们也不能由于日志所展示出来的内容掉入骗子设计好的圈套中。再次提醒人人,不要随意点击生疏链接,更不要随意授权他人。当我们加倍深入明晰事宜日志的时刻,才气更好的防止自己受骗受骗。

查看更多,

chơi phỏm online(www.vng.app):chơi phỏm online(www.vng.app) cổng Chơi tài xỉu uy tín nhất việt nam。chơi phỏm online(www.vng.app)game tài Xỉu đánh bạc online công bằng nhất,chơi phỏm online(www.vng.app)cổng game không thể dự đoán can thiệp,mở thưởng bằng blockchain ,đảm bảo kết quả công bằng.

Sunbet声明:该文看法仅代表作者自己,与本平台无关。转载请注明:chơi phỏm online:联博(www.326681.com)_明晰以太坊事宜日志

网友评论

  • (*)

最新评论

文章归档

    站点信息

    • 文章总数:10125
    • 页面总数:0
    • 分类总数:8
    • 标签总数:4557
    • 评论总数:7015
    • 浏览总数:715528