Cover image
Blog icon0xAA
Nov 26

WTF Cairo极简教程: 2. 基本类型 Felt

我最近在学cairo-lang,巩固一下细节,也写一个WTF Cairo极简教程,供小白们使用。教程基于cairo 0.10.2版本 推特:@0xAA_Science|@WTFAcademy_ WTF Academy 社群:Discord|微信群|官网 wtf.academy 所有代码和教程开源在 github: github.com/WTFAcademy/WTF-Cairofeltfelt(field element,域元素)是 cairo 的基本类型,数字,字符串,地址通通由它表示。它是定义在 $[0, P]$ 的整数,其中 P 是一个非常大的质数。在目前的版本中,$P = 2^{251}+17*2^{192}+1$,大小为252 bit。P 具有一些很好的数学性质用于零知识证明,因此没有选择和Solidity一致的256 bit。整型felt 可以被整型赋值,下面的例子中,我们将 7828582 赋值给 res:@view func int() -> (res: felt) { return (res=7828582); } 字节felt 可以被 bytes(十六进制数)赋...

Most popular by 0xAA

Cover image

WTF Solidity 合约安全: S08. 绕过合约检查

Cover image

WTF Solidity 合约安全: S09. 拒绝服务

Cover image

WTF Solidity 合约安全 S06. 签名重放

Cover image

WTF Solidity极简入门:1. HelloWeb3 (三行代码)

Cover image

Solidity极简入门-工具篇1:Remix

Cover image

Solidity极简入门 ERC721专题:1. ERC721相关库

  • Previous
  • 1
  • 2
  • More pages
  • 7
  • Next

0xAA

Written by
0xAA

WTF Academy: wtf.academy

Subscribe

2025 Paragraph Technologies Inc

PopularTrendingPrivacyTermsHome
Search...Ctrl+K

0xAA

Subscribe
Post cover image
Blog icon0xAA
Nov 26
WTF Cairo极简教程: 1. Hello Cairo(5行代码)
我最近在学cairo-lang,巩固一下细节,也写一个WTF Cairo极简教程,供小白们使用。教程基于cairo 0.10.2版本 推特:@0xAA_Science|@WTFAcademy_ WTF Academy 社群:Discord|微信群|官网 wtf.academy 所有代码和教程开源在 github: github.com/WTFAcademy/WTF-CairoCairo 简介cairo(cairo-lang)是StarkNet(以太坊ZK-Rollup扩容方案)智能合约的编程语言。它同时也用于编写可证明程序,证明某个计算已正确执行。Cairo主要有两个特点:ZK友好: Cairo是原生的可证明计算的编程语言,可以直接编译为Stark可证明程序。而Solidity不能。难学: Cairo是低级语言,学习曲线陡峭;并且现在属于开发早期,每个版本都会有很大改变。目前Cairo版本为0.10.2,预计22年年底发行比较成熟的1.0版本。开发工具: Cairo Playground本教程中,我会用cairo playground来运行cairo合约。cairo playgr...
Post cover image
Blog icon0xAA
Nov 18
WTF Solidity 合约安全: S10. 貔貅
我最近在重新学 solidity,巩固一下细节,也写一个“WTF Solidity 极简入门”,供小白们使用(编程大佬可以另找教程),每周更新 1-3 讲。 推特:@0xAA_Science|@WTFAcademy_ 社区:Discord|微信群|官网 wtf.academy 所有代码和教程开源在 github: github.com/AmazingAng/WTF-Solidity这一讲,我们将介绍貔貅合约和预防方法(英文习惯叫蜜罐代币 honeypot token)。貔貅学入门貔貅是中国的一个神兽,因为在天庭犯了戒,被玉帝揍的肛门封闭了,只能吃不能拉,可以帮人们聚财。但在Web3中,貔貅变为了不详之兽,韭菜的天敌。貔貅盘的特点:投资人只能买不能卖,仅有项目方地址能卖出。 通常一个貔貅盘有如下的生命周期:恶意项目方部署貔貅代币合约。宣传貔貅代币让散户上车,由于只能买不能卖,代币价格会一路走高。项目方rug pull卷走资金。学会貔貅合约的原理,才能更好的识别并避免被割,才能做一个顽强的韭菜!貔貅合约这里我们介绍一个极简的ERC20代币貔貅合约Pixiu。在该合约中,只有合约拥有者...
Post cover image
Blog icon0xAA
Nov 13
WTF Solidity 合约安全: S09. 拒绝服务
我最近在重新学solidity,巩固一下细节,也写一个“WTF Solidity极简入门”,供小白们使用(编程大佬可以另找教程),每周更新1-3讲。 推特:@0xAA_Science|@WTFAcademy_ 社区:Discord|微信群|官网 wtf.academy 所有代码和教程开源在github: github.com/AmazingAng/WTFSolidity这一讲,我们将介绍智能合约的拒绝服务(Denial of Service, DoS)漏洞,并介绍预防的方法。NFT项目 Akutar 曾因为 DoS 漏洞损失 11,539 ETH,当时价值 3400 万美元。DoS​在 Web2 中,拒绝服务攻击(DoS)是指通过向服务器发送大量垃圾信息或干扰信息的方式,导致服务器无法向正常用户提供服务的现象。而在 Web3,它指的是利用漏洞使得智能合约无法正常提供服务。 在2022年4月,一个很火的 NFT 项目名为 Akutar,他们使用荷兰拍卖进行公开发行,筹集了 11,539.5 ETH,非常成功。之前持有他们社区Pass的参与者会得到 0.5 ETH的退款,但是他们处理...
Post cover image
Blog icon0xAA
Nov 12
WTF Solidity 合约安全: S08. 绕过合约检查
我最近在重新学solidity,巩固一下细节,也写一个“WTF Solidity极简入门”,供小白们使用(编程大佬可以另找教程),每周更新1-3讲。 推特:@0xAA_Science|@WTFAcademy_ 社区:Discord|微信群|官网 wtf.academy 所有代码和教程开源在github: github.com/AmazingAng/WTFSolidity这一讲,我们将介绍绕过合约长度检查,并介绍预防的方法。绕过合约检查​很多 freemint 的项目为了限制科学家(程序员)会用到 isContract() 方法,希望将调用者 msg.sender 限制为外部账户(EOA),而非合约。这个函数利用 extcodesize 获取该地址所存储的 bytecode 长度(runtime),若大于0,则判断为合约,否则就是EOA(用户)。 // 利用 extcodesize 检查是否为合约 function isContract(address account) public view returns (bool) { // extcodesize > 0 的地址一定是合约...
Post cover image
Blog icon0xAA
Nov 10
WTF Solidity 合约安全: S07. 坏随机数
我最近在重新学solidity,巩固一下细节,也写一个“WTF Solidity极简入门”,供小白们使用(编程大佬可以另找教程),每周更新1-3讲。 推特:@0xAA_Science|@WTFAcademy_ 社区:Discord|微信群|官网 wtf.academy 所有代码和教程开源在github: github.com/AmazingAng/WTFSolidity这一讲,我们将介绍智能合约的坏随机数(Bad Randomness)漏洞和预防方法,这个漏洞经常在 NFT 和 GameFi 中出现,包括 Meebits,Loots,Wolf Game等。伪随机数很多以太坊上的应用都需要用到随机数,例如NFT随机抽取tokenId、抽盲盒、gamefi战斗中随机分胜负等等。但是由于以太坊上所有数据都是公开透明(public)且确定性(deterministic)的,它没有其他编程语言一样给开发者提供生成随机数的方法,例如random()。很多项目方不得不使用链上的伪随机数生成方法,例如 blockhash() 和 keccak256() 方法。 坏随机数漏洞:攻击者可以事先计算这...
Post cover image
Blog icon0xAA
Nov 2
WTF Solidity 合约安全 S06. 签名重放
我最近在重新学solidity,巩固一下细节,也写一个“WTF Solidity极简入门”,供小白们使用(编程大佬可以另找教程),每周更新1-3讲。 推特:@0xAA_Science|@WTFAcademy_ 社区:Discord|微信群|官网 wtf.academy 所有代码和教程开源在github: github.com/AmazingAng/WTFSolidity这一讲,我们将介绍智能合约的签名重放(Signature Replay)攻击和预防方法,它曾间接导致了著名做市商 Wintermute 被盗2000万枚 $OP。签名重放​上学的时候,老师经常会让家长签字,有时候家长很忙,我就会很“贴心”照着以前的签字抄一遍。某种意义上来说,这就是签名重放。 在区块链中,数字签名可以用于识别数据签名者和验证数据完整性。发送交易时,用户使用私钥签名交易,使得其他人可以验证交易是由相应账户发出的。智能合约也能利用 ECDSA 算法验证用户将在链下创建的签名,然后执行铸造或转账等逻辑。更多关于数字签名的介绍请见WTF Solidity第37讲:数字签名。 数字签名一般有两种常见的重放攻击...
Post cover image
Blog icon0xAA
Oct 21
WTF Solidity 合约安全: S05. 整型溢出
我最近在重新学solidity,巩固一下细节,也写一个“WTF Solidity极简入门”,供小白们使用(编程大佬可以另找教程),每周更新1-3讲。 推特:@0xAA_Science|@WTFAcademy_ 社区:Discord|微信群|官网 wtf.academy 所有代码和教程开源在github: github.com/AmazingAng/WTFSolidity这一讲,我们将介绍整型溢出漏洞(Arithmetic Over/Under Flows)。这是一个比较经典的漏洞,Solidity 0.8版本后内置了Safemath库,因此很少发生。整型溢出以太坊虚拟机(EVM)为整型设置了固定大小,因此它只能表示特定范围的数字。例如 uint8,只能表示 [0,255] 范围内的数字。如果给 uint8 类型变量的赋值 257,则会上溢(overflow)变为 1;如果给它赋值-1,则会下溢(underflow)变为255。 攻击者可以利用这个漏洞进行攻击:想象一下,黑客余额为0,他凭空花 $1 之后,余额突然变成了 $2^256-1。2018年的土狗项目 PoWHC 因为这个...
Post cover image
Blog icon0xAA
Oct 19
WTF Solidity 合约安全: S04. 权限管理漏洞
我最近在重新学solidity,巩固一下细节,也写一个“WTF Solidity极简入门”,供小白们使用(编程大佬可以另找教程),每周更新1-3讲。 推特:@0xAA_Science|@WTFAcademy_ 社区:Discord|微信群|官网 wtf.academy 所有代码和教程开源在github: github.com/AmazingAng/WTFSolidity这一讲,我们将介绍智能合约的权限管理漏洞。这个漏洞导致了跨链桥 Poly Network 被黑 6.11 亿美元,并导致了BSC上DeFi项目 ShadowFi 被黑 $300,000。权限管理漏洞智能合约中的权限管理定义了不同角色在应用中的权限。通常来说,代币的铸造、提取资金、暂停等功能都需要较高权限的用户才能调用。如果权限配置错误,就可能造成意想不到的损失。下面我们介绍两种常见的权限管理漏洞。1. 权限配置错误如果合约中特殊功能没有加上权限管理,那么任何人都能铸造大量代币或将合约中的资金提光。跨链桥 Poly Network 的合约中转移守护者的函数没有配置相应权限,被黑客改为自己的地址,从而提走了合约中的 6...
Post cover image
Blog icon0xAA
Oct 16
WTF Solidity 合约安全: S03. 中心化风险
我最近在重新学solidity,巩固一下细节,也写一个“WTF Solidity极简入门”,供小白们使用(编程大佬可以另找教程),每周更新1-3讲。 推特:@0xAA_Science 社区:Discord|微信群|官网 wtf.academy 所有代码和教程开源在github: github.com/AmazingAng/WTFSolidity这一讲,我们将介绍智能合约中的中心化和伪去中心化所带来的风险。Ronin桥和Harmony桥因该漏洞被黑客攻击,分别被盗取了 6.24 亿美元和 1 亿美元。中心化风险我们经常以Web3的去中心化为骄傲,认为在Web3.0世界里,所有权和控制权都是去中心化。但实际上,中心化是Web3项目最常见的风险之一。知名区块链审计公司Certik在2021年DeFi安全报告中指出:中心化风险是 DeFi 中最常见的漏洞,2021年中有 44 次 DeFi 黑客攻击与它相关,造成用户资金损失超过 13 亿美元。这强调了权力下放的重要性,许多项目仍需努力实现这一目标。中心化风险指智能合约的所有权是中心化的,例如合约的owner由一个地址控制,它可以随意修改...
Post cover image
Blog icon0xAA
Oct 12
WTF Solidity 合约安全: S02. 选择器碰撞
我最近在重新学solidity,巩固一下细节,也写一个“WTF Solidity极简入门”,供小白们使用(编程大佬可以另找教程),每周更新1-3讲。 推特:@0xAA_Science 社区:Discord|微信群|官网 wtf.academy 所有代码和教程开源在github: github.com/AmazingAng/WTFSolidity这一讲,我们将介绍选择器碰撞攻击,它是导致跨链桥 Poly Network 被黑的原因之一。在2021年8月,Poly Network在ETH,BSC,和Polygon上的跨链桥合约被盗,损失高达6.11亿美元。这是2021年最大的区块链黑客事件,也是历史被盗金额榜单上第2名,仅次于 Ronin 桥黑客事件。选择器碰撞以太坊智能合约中,函数选择器是函数签名 "()" 的哈希值的前4个字节(8位十六进制)。当用户调用合约的函数时,calldata的前4字节就是目标函数的选择器,决定了调用哪个函数。如果你不了解它,可以阅读WTF Solidity极简教程第29讲:函数选择...
Post cover image
Blog icon0xAA
Oct 9
WTF Solidity 合约安全: S01. 重入攻击
我最近在重新学solidity,巩固一下细节,也写一个“WTF Solidity极简入门”,供小白们使用(编程大佬可以另找教程),每周更新1-3讲。 推特:@0xAA_Science 社区:Discord|微信群|官网 wtf.academy 所有代码和教程开源在github: github.com/AmazingAng/WTFSolidity这一讲,我们将介绍最常见的一种智能合约攻击-重入攻击,它曾导致以太坊分叉为 ETH 和 ETC(以太经典),并介绍如何避免它。重入攻击重入攻击是智能合约中最常见的一种攻击,攻击者通过合约漏洞(例如fallback函数)循环调用合约,将合约中资产转走或铸造大量代币。 一些著名的重入攻击事件:2016年,The DAO合约被重入攻击,黑客盗走了合约中的 3,600,000 枚 ETH,并导致以太坊分叉为 ETH 链和 ETC(以太经典)链。2019年,合成资产平台 Synthetix 遭受重入攻击,被盗 3,700,000 枚 sETH。2020年,借贷平台 Lendf.me 遭受重入攻击,被盗 $25,000,000。2021年,借贷平台 C...
Post cover image
Blog icon0xAA
Sep 30
Solcurity 安全标准
翻译修改自 @transmission11 的 The Solcurity Standard 最近在学 Solidity 智能合约安全,发现中文缺少这方面的资料,就翻译了 @transmission11 写的 Solcurity - Solidity 智能合约的安全和代码质量标准。它基于 BoringCrypto, Mudit Gupta, Runtime Verification, 和 ConsenSys Diligence 的工作,总结了审查合约时要注意的安全事项。之后 WTF Academy 会基于它添加新的安全事项。审查方法概览:阅读项目的文档、规范和白皮书,了解智能合约的用途。在查看代码之前,在脑海中构建一个期望中的合约架构模型。快速浏览一遍合约,感受项目结构,可以利用Surya这类工具。将项目架构与你脑海中的合约架构模型进行比较,检查不符合预期的部分。创建威胁模型并列出理论上的高级攻击向量。查看与价值交换相关的地方,尤其是transfer,transferFrom,send,call,delegatecall,和 selfdestruct。优先检查它们,确保安全。查看...