文章
视频
课程
百科图谱
集训营
更多
问答
提问
发表文章
专栏
活动
文档
工作
集市
发现
Toggle navigation
文章
问答
视频
课程
集训营
专栏
活动
工作
文档
集市
搜索
登录/注册
Solidity Yul Assembly 内联汇编
2024年09月11日更新
22 人订阅
原价:
¥ 14
限时优惠
10 元订阅
专栏简介
【Solidity Yul Assembly】1.1 | Types
【Solidity Yul Assembly】1.2 | Basic Operations
【Solidity Yul Assembly】1.3 | Storage Slots
【Solidity Yul Assembly】1.4 | Storage Offsets and Bitshifting
【Solidity Yul Assembly】1.5 | Storage of Arrays and Mappings
【Solidity Yul Assembly】2.1 | Memory Operations
【Solidity Yul Assembly】2.2 | How Solidity Uses Memory
【Solidity Yul Assembly】2.3 | Dangers of Memory Misuse
【Solidity Yul Assembly】2.4 | Return, Require and Keccak256
【Solidity Yul Assembly】2.5 | Logs and Events
【Solidity Yul Assembly】3.1 | Calldata
【Solidity Yul Assembly】3.2 | Calling other contracts
【Solidity Yul Assembly】3.3 | Dynamic Length Arguments
【Solidity Yul Assembly】3.4 | Transfer of value
【Solidity Yul Assembly】3.5 | Receiving contract calls
【Solidity Yul Assembly】4.1 | 100% Yul Contract
【Solidity Yul Assembly】4.2 | 100% Yul ERC20 Example
【Solidity Yul Assembly】4.3 | What We Didn't Cover
【Solidity Yul Assembly】3.1 | Calldata
0xE
发布于 2024-08-28 15:03
阅读 2064
在 Solidity 中关于 tx.data 有约定俗成的用法。
## 约定俗成 - Solidity 的普及已经促成了一种关于如何使用交易数据 (tx.data) 的约定。 - 当向一个钱包地址发送交易时,通常不会在 tx.data 中添加任何数据,除非你想发送一条消息给该地址的所有者。 - 而在向一个智能合约发送交易时,tx.data 的前四个字节(即前8个十六进制字符)用来指定你要调用的函数。这四个字节被称为函数选择器(function selector)。随后的字节是按ABI编码的函数参数。关于ABI的更多信息,可以参考[这里](https://docs.soliditylang.org/en/develop/abi-spec.html#abi)。 - Solidity 期望函数选择器后的字节长度始终是 32 的倍数。这是一种约定,便于解析交易数据。如果发送的字节长度不是 32 的倍数,Solidity会忽略多余的字节。 - 相较之下,Yul 合约可以根据需要自由地处理任意长度的交易数据。 ## 概述 - 函数选择器是函数签名经过 Keccak-256 哈希计算后的前四个字节。 - 例子1(ERC20) - balanceOf(address _address) -> keccak256("balanceO...
约定俗成
Solidity 的普及已经促成了一种关于如何使用交易数据 (tx.data) 的约定。
当向一个钱包地址发送交易时,通常不会在 tx.data 中添加任何数据,除非你想发送一条消息给该地址的所有者。
而在向一个智能合约发送交易时,tx.data 的前四个字节(即前8个十六进制字符)用来指定你要调用的函数。这四个字节被称为函数选择器(function selector)。随后的字节是按ABI编码的函数参数。关于ABI的更多信息,可以参考
这里
。
Solidity 期望函数选择器后的字节长度始终是 32 的倍数。这是一种约定,便于解析交易数据。如果发送的字节长度不是 32 的倍数,Solidity会忽略多余的字节。
相较之下,Yul 合约可以根据需要自由地处理任意长度的交易数据。
概述
函数选择器是函数签名经过 Keccak-256 哈希计算后的前四个字节。
例子1(ERC20)
balanceOf(address _address) -> keccak256("balanceO...
剩余50%的内容订阅专栏后可查看
单篇购买 5学分
永久订阅专栏 (50学分)
学分: 11
分类:
Solidity
标签:
Yul
Solidity合约
内联汇编
assembly
点赞 0
收藏 0
分享
复制链接
Twitter分享
微信扫码分享
本文参与
登链社区写作激励计划
,好文好收益,欢迎正在阅读的你也加入。
0 条评论
请先
登录
后评论
文章目录
×
举报此文章
垃圾广告信息:
广告、推广、测试等内容
违规内容:
色情、暴力、血腥、敏感信息等内容
不友善内容:
人身攻击、挑衅辱骂、恶意行为
其他原因:
请补充说明
举报原因:
×
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!