Skip to content

Commit

Permalink
Merge pull request #51 from PINKPIG-17/main
Browse files Browse the repository at this point in the history
7.14 update
  • Loading branch information
luffythink authored Jul 14, 2024
2 parents b17e118 + 2cb7ef2 commit fb1c3c5
Showing 1 changed file with 25 additions and 1 deletion.
26 changes: 25 additions & 1 deletion Bugmaker_WICL1st .md
Original file line number Diff line number Diff line change
Expand Up @@ -56,14 +56,38 @@
## 笔记证明 Notes Proof
<!-- Content_START -->
### 07.14
- 今日学习时间:7.14 9 a.m--12a.m
- 今日学习时间:7.14 9 a.m--12 a.m
- 学习内容小结:`solidity`语法回顾
`require`语句的用法
`msg.sender&&t.orign`的区别(`msg.sender`指的是函数的调用者,`tx.orign`指的是合约总的发起人,一般是钱包地址)
`mapping`的用法,包括赋值、查询、删除语句
`引用类型`:对于已分配好的引用类型,对原有值的改变*不会*影响现有值
`字符串`:string.concat--字符串连接,bytes().length--获取字符串长度
复习了常见的控制流语句
### 07.15
- 今日学习时间:7.15 2 p.m--5 p.m
- 学习内容小结:`Uniswap V2`概念学习

*Flash Swap*
>Uniswap v2增加了一个新特性,允许用户在支付费用前先收到并使用代币,只要他们在同一个交易中完成支付。swap方法会在转出代币和检查k值两个步骤之间,调用一个可选的用户指定的回调合约。一旦回调完成,Uniswap合约会检查当前代币余额,并且确认其满足k值条件(在扣除手续费后)。如果当前合约没有足够的余额,整个交易将被回滚。
利用的是以太坊交易的原子性,用户已经接受到代币,后续如果检查k值不符合规定,就会回滚交易,整个交易不会被确认,即用户不会收到闪电贷的代币。

*WAP--时间加权*
>由于uniswap的价格定义规则,币价由上个区块最后记录的价格决定。在新一笔交易确认之前,修改上个区块的币价,则会导致币价波动。
假设交易池中有a 200、b 100,以a的来表示b的价格则为b=2a
若在下一笔交易产生之前,向交易池中发送100b,这是b的价格则为b=a,而不是b=2a
这样币价在短时间内偏离了市场价格,可能导致攻击者进行套利操作
此时Uniswap就采用了TWAP进行控制币价短时间波动

*手续费*
>Uniswap 手续费为交易额的0.3%,手续费会根据权重分给LP,交易保证池子满足x*y=k,代币数量可能会发生改变,但是x与y的乘积不变。
手续费会增加交易池的价值,币的总数可能也会改变。

*流动性代币*
>流动性代币(Liquidity Tokens),有时称为流动性提供者代币(LP Tokens),是由去中心化交易所(如Uniswap)发行的代币,用来表示流动性提供者在特定流动性池中的份额。当流动性提供者向流动性池中注入代币时,他们会收到相应的流动性代币作为凭证。
>流动性代币的数量与交易池中的总价值成比例。例如,如果用户提供了流动性池10%的代币,他们将获得总流动性代币的10%。
*首次铸币攻击*
>首次铸币攻击是指攻击者在第一次添加流动性时存入最小单位(10的-18次方,即1 wei)的流动性,比如1 wei ABC和1 wei XYZ,此时将铸造1 wei 流动性代币(根号1,二者乘积的算数平方根);同时,攻击者在同一个交易中继续向池子转入(非铸造)100万个ABC和100万个XYZ,接着调用 sync()方法更新缓存余额,此时1 wei的流动性代币价值100万+(10的-18次方)ABC和100万+(10的-18次方)XYZ。因为这是交易的最小单位,其他流动性参与者要想添加流动性,需要等价的大量代币,其价格可能高到大部分人无法参与。
### 07.16

XXX
Expand Down

0 comments on commit fb1c3c5

Please sign in to comment.