文章
视频
讲堂
百科图谱
线下集训
更多
问答
提问
发表文章
专栏
活动
文档
工作
集市
发现
Toggle navigation
文章
问答
视频
讲堂
线下集训
专栏
活动
工作
文档
集市
搜索
登录/注册
【Solidity Yul Assembly】3.1 | Calldata
0xE
发布于 2024-08-28 15:03
阅读 938
在 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%的内容订阅专栏后可查看
单篇购买 3学分
永久订阅专栏 )
原创
学分: 11
分类:
Solidity
标签:
Yul
Solidity合约
内联汇编
assembly
本文已由作者铸造成 NFT
网络:
Polygon
合约地址:
0x6f772e254Ef50e9b462915b66404009c73766350
IPFS hash:
bafkreib33ckowhricjabjx4fietgyj5ac7eepeiwn2itkt6jxwpibyiddq
查看TA的链上存证
点赞 0
收藏 0
分享
复制链接
Twitter分享
微信扫码分享
该文章收录于
Solidity Yul Assembly 内联汇编
19 订阅
18 篇文章
订阅专栏
简单说说:Timelock合约
484 浏览
指南: 如何在 MEV 项目中使用 Yul
888 浏览
闪电贷以及如何利用它进行攻击:ERC 3156 漫游指南
1184 浏览
【Uniswap V2】| 详解 TWAP 价格预言机和使用举例
1230 浏览
Solidity 中定点数的运算
904 浏览
【Solidity Yul Assembly】4.3 | What We Didn't Cover
1083 浏览
【Solidity Yul Assembly】4.2 | 100% Yul ERC20 Example
890 浏览
【Solidity Yul Assembly】4.1 | 100% Yul Contract
934 浏览
【Solidity Yul Assembly】3.5 | Receiving contract calls
796 浏览
【Solidity Yul Assembly】3.4 | Transfer of value
931 浏览
【Solidity Yul Assembly】3.3 | Dynamic Length Arguments
848 浏览
【Solidity Yul Assembly】3.2 | Calling other contracts
862 浏览
0 条评论
请先
登录
后评论
0xE
0x59f6...a17e
关注
贡献值: 486
学分: 754
17年进入币圈,Web3 开发者。刨根问底探链上真相,品味坎坷悟 Web3 人生。有工作机会可加v:__0xE__
专栏:
Solidity Yul Assembly 内联汇编
文章目录
×
发送私信
请将文档链接发给晓娜,我们会尽快安排上架,感谢您的推荐!
发给:
内容:
×
举报此文章
垃圾广告信息:
广告、推广、测试等内容
违规内容:
色情、暴力、血腥、敏感信息等内容
不友善内容:
人身攻击、挑衅辱骂、恶意行为
其他原因:
请补充说明
举报原因:
×
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!