type
status
date
slug
summary
category
tags
icon
password
操作
在检查一笔以太坊代币授权时,遇到了这样一串数字:

115792089237316195423570985008687907853269984665640564039457584007913129639935
 
Q:这串看似随机的大数字是什么?
A:这是以太坊智能合约中的"无限授权"数值,用于授予第三方合约最大的代币使用权限。
 
Q:为什么选择这个数字代表"无限"?
A:将其转换为16进制,会呈现出特殊的规律: 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 这是uint256能表示的最大值,即2^256-1。
 
Q:为什么是2^256-1而不是2^256? A:这涉及计算机的基础原理:以4位二进制为例,从0000到1111,表示范围是0到15(2^4-1)。同理,256位二进制的表示范围是0到2^256-1。
 
Q:如果非要表示2^256呢? A:2^256用16进制表示将是0x1后跟64个0,但这需要257位,超出了uint256的范围。这正是智能合约选择2^256-1作为"无限"的技术原因。
 
这个例子展示了区块链如何在有限的数据类型中,优雅地实现了"无限"的概念。
 
为什么令人讨厌?两个沟通坏习惯如何撰写Commit消息?
Loading...
董振业
董振业
产品经理 | 新手奶爸 | 新手创作者
最新发布
哭闹测试:设定规则的好办法
2025-2-6
带娃笔记:不要试图用笑来掩盖哭
2025-2-6
带娃笔记:学会告别
2025-2-6
Roam Research:如何在块内显示[[roam/js]]的结果
2025-1-5
在 Excel 中使用IMAGE函数批量展示图片
2025-1-4
理解EVM中的事件
2025-1-3