WongSSH

761 posts

WongSSH banner
WongSSH

WongSSH

@wong_ssh

Build https://t.co/Vv4120dWCb Solidity/Huff/Cairo/Taproot engineer

Katılım Kasım 2022
580 Takip Edilen5.3K Takipçiler
WongSSH
WongSSH@wong_ssh·
之前还 vibe coding 了一个小工具来辅助抓取某一个核心不变量有关的所有函数片段,过几天可能开源一下,大概只需要十几分钟就可以拿 codex 写出来,底层用的是 slither-analyzer 来解析 solidity 合约
WongSSH tweet media
中文
0
0
5
691
WongSSH
WongSSH@wong_ssh·
博客链接 @wongssh/formal-verify-examples" target="_blank" rel="nofollow noopener">hackmd.io/@wongssh/forma…
中文
1
1
4
794
WongSSH
WongSSH@wong_ssh·
为昨天未完成的博客补充了最后一个案例,并且大概总结了一下如何在 dafny 内证明 solidity 的正确性,这个步骤是我目前认为正确的环节。目前我还没有证明过极其复杂的 solidity 合约机制,我认为 uniswap v3 的区间流动性手续费算法可能算最复杂的合约机制之一,这也是未来我希望证明的机制
WongSSH tweet media
中文
2
1
14
2.1K
WongSSH
WongSSH@wong_ssh·
@SphinxPatrick 居然在研究 Dafny 形式化证明前端,感觉杀鸡用牛刀,看了一下基础的模式,感觉和我现在使用 Dafny 证明智能合约用的方法是一致的,把机制抽象成类似状态机的系统,然后证明核心不变量在状态机的每一次状态转移都是正确的
中文
0
0
1
48
WongSSH
WongSSH@wong_ssh·
最近手动使用 dafny 证明了几个经典的数组排序算法,从浅入深分别是冒泡排序、快速排序和归并排序,最难证明的应该是快速排序。在写代码过程中,我写了一篇博客。由于我目前实践较少,所以博客内容不太成体系。 除了算法外,博客最后附上了一个智能合约漏洞的证明,明天应该还会再补充另一个案例。
WongSSH tweet mediaWongSSH tweet media
中文
1
5
26
3.9K
WongSSH
WongSSH@wong_ssh·
部分内容参考了 The Calculus of Computation 的第六章 Program Correctness: Strategies。 目前来看,使用 dafny 写形式化证明的核心就是复制已知条件进入 loop invariant,毕竟使用的 basic path 方法会丢弃大量上下文。当然,很好的是目前来看,LLM 比我这个初学者厉害,核心性质都可以写出来
中文
3
0
2
589
WongSSH
WongSSH@wong_ssh·
博客链接 @wongssh/formal-verify-examples" target="_blank" rel="nofollow noopener">hackmd.io/@wongssh/forma…
中文
1
0
2
715
אגי-e/acc
אגי-e/acc@murage_kibicho·
@wong_ssh z3 like the SAT solver? I saw it only solves 32 bit systems. What could it possibly be doing lol
English
1
0
0
160
WongSSH
WongSSH@wong_ssh·
发现我的 128GB 内存的 MacBook Pro 插电情况下也好卡,看一下活动监控器,发现 z3 内存泄漏了 128GB,太恐怖了。为了保命直接 kill 掉了,感觉应该研究一下内存泄漏的原因,也许这是一个用 Rust 重写 z3 的好理由
WongSSH tweet media
中文
3
0
5
2K
WongSSH
WongSSH@wong_ssh·
@yanbo2004 看上去是因为 vscode 和 dafny 的一些原因炸掉了,感觉应该收集一些信息给开发团队报一下 Bug,但是实在太卡了,直接全部 kill 掉了
中文
1
0
1
146
WongSSH
WongSSH@wong_ssh·
而《数学哲学讲义》是真心推荐所有人阅读,内容丰富且有趣,这点可以从课后习题内看到,课后习题的答案其实在前面的文本内都是出现过的。假如有计算机科学背景,建议优先阅读第五章 证明和第六章 可计算性。
WongSSH tweet mediaWongSSH tweet media
中文
1
1
6
1.2K
WongSSH
WongSSH@wong_ssh·
《面向计算机科学的数理逻辑》的影印版目前应该只能找到二手书了,2005 年出版的,最近出了中文版
WongSSH tweet media
中文
1
1
3
1.5K
WongSSH
WongSSH@wong_ssh·
最近正在读 2 本与逻辑学有关的书,一本是 The Calculus of Computation,另一本是《面向计算机科学的数理逻辑》(最近出了中文版,但我还是用的影印版)。前者强调 semantics,而后者第一章全是 natural deduction。我没有搞明白两者的异同,但《数学哲学讲义》内证明的哥德尔完备性定理解决了我的疑惑
WongSSH tweet mediaWongSSH tweet media
中文
5
13
110
9.9K
Iggie🚁
Iggie🚁@Kenntnis22·
为了合法抢劫,你得建立一个政权🤔
Iggie🚁 tweet media
中文
17
36
395
10.2K
WongSSH
WongSSH@wong_ssh·
@brucexu_eth 居然不用轻节点验证一下 RPC 返回值,震惊,这说明 eth_getProof 真没人用啊
中文
2
0
4
684
WongSSH
WongSSH@wong_ssh·
依靠 ChatGPT 证明了一个版本的快速排序,不是很理解证明思路,还是要继续研究一下证明策略,不知道能不能使用 precondition method 获得一些启发。
WongSSH tweet media
中文
0
0
4
1.3K
WongSSH
WongSSH@wong_ssh·
实际上就是因为 stage 机制依赖于 balanceOf 读取数据计算用户的代币输入,但是 licredity 内的 mint / burn 机制也会影响 balanceOf 的结果,这会导致相当程度的混淆,最后导致计算出的用户代币输入错误
中文
0
0
0
661
WongSSH
WongSSH@wong_ssh·
为什么探索该问题?实际上是因为人类审计没有发现 stage 机制内的问题,在随后一次 LLM 审计中,LLM 指出 decreaseDebtShare 存在严重漏洞,我们随后验证认为该漏洞确实存在,原因是因为 mint 函数对 balance 的影响没有处理好。简单编写几行形式化证明,其实我们都可以发现该问题。
WongSSH tweet media
中文
1
0
0
841
WongSSH
WongSSH@wong_ssh·
在 Licredity 内存在 stage 机制,该机制类似 balance delta,允许用户在 unlock 内多次向合约转账。我尝试对 stage 机制进行形式化证明。从 stage 开始到某一个函数结束,中间存在无数调用路径,但是教科书告诉我们不变量可以约束状态空间,所以我实际上只是证明所有中间环节不会打破如图所示的不变量
WongSSH tweet media
中文
1
1
8
1.5K