Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

7.14 update #51

Merged
merged 1 commit into from
Jul 14, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
Loading