以太坊智能合约开发工具链
最近大家都在谈论APE的空投被撸羊毛的事件,老板也让我分析一下。这里我就把我自己分析的部分贴出来,包括一些POC,欢迎讨论
整体的思路是特洛伊木马token的思路,重入masterChef中的 depositByAddLiquidity方法。该方法的核心错误逻辑在于:它只检查了lpToken的地址合法性,没有检查token0,token1的地址合法性。从而让token0可以做成一个特洛伊木马,在token0里面transfer一个合法的token,从而成功添加流动性;而导致deposit重复计算。
qubit
如何节省 gas 的批量铸造 NFT
masterChef的使用程度之广泛远超我的想象,之前写过一版本的分析,但是自己的认知还是不深刻。这次借用Paradigm的一篇分析文章,把masterchef重新再梳理一下。
主要是根据用户质押的时间和数量来线性的分发代币。即质押挖矿的模式。具体的分发逻辑是每一个区块固定分的一定量的sushi代币,考虑到同时存在不同的LP资金池都需要奖励sushi,这几个池子会按照预先设计好的allocPoint来按照权重分配sushi代币。对于一个池子中,会按照LPtoken的比例给用户分发该池子中分配得到的sushi代币。每一个区块都会累积,这里应该是累加,而不是累乘。
在具体写代码的时候,会发现一个问题:即如何合适的表达小数?一种简单的思路是把小数都乘以10^18,但是需要考虑到会不会溢出,以及后续还需要一个除法才行。
Compound简化版
关于借贷的思考 - 以compound为例