---
# System prepended metadata

title: Untitled

---

# 陳逸雲好gay，雞雞好臭（30cm）
1. What is the PoW consensus mechanism in Bitcoin Network, and PoS in Ethereum Network?
> 比特幣網絡採用工作量證明（PoW, proof of work）機制，要求礦工通過解決複雜計算問題來驗證交易和創建新區塊，以獲得比特幣獎勵。（去中心化，公平公正，誰先解題，誰就獲得相應的收益，但耗能）
> 以太坊網絡計畫採用權益證明（PoS, proof of stake）機制，這樣區塊的創建者不是依靠計算能力，而是基於持有的資產數量和時間。（過於集中化，持有的幣愈多，時間愈長，獲得的收益愈多。但不耗能）
> 許晉瑋老二超級小，所以一直感冒
> 30公分還不夠大嗎，要多少你（們）才能滿足
> 跟我一樣就好
> 那很小欸
> 亂講 市售的我都戴不下了
> 上次去康是美找了 30 分鐘才找到 sss 號的

2. What is the gas mechanism prior to EIP-1559 and how does it work?
> 在EIP-1559更新之前，以太坊的Gas機制要求用戶為執行交易或智能合約操作支付費用，費用基於Gas價格和消耗的Gas量。用戶設定的Gas價格高，其交易被挖礦者優先處理的可能性也高。

3. What is EIP-1559 and what does it solve?
> EIP-1559是一項以太坊網絡升級，旨在改善交易費用和網絡擁堵情況。它引入了一個基本費用機制，自動調整費用以反映網絡擁堵程度，並燒毀這部分費用，減少以太幣的總供應量，同時允許用戶支付額外的小費以加快交易處理速度

4. What is testing network and mainnet? What is a faucet? What can it do?
> 測試網絡是區塊鏈技術的實驗場，開發者可以在這裡測試新的功能或應用而不影響主網（主網是區塊鏈的主要公共網絡，處理真實的交易和資產）。水龍頭是測試網絡上的一個工具，允許用戶免費獲得少量的測試代幣，以便於開發和測試過程中使用。

5. What is the difference between Externally-owned account (EOA) and Contract Account(CA)?
> EOAs和CAs的主要區別在於控制方式（私鑰vs.合約代碼）和能力（直接交易發送vs.自動化操作）。EOAs作為用戶與區塊鏈互動的入口，而CAs則擴展了以太坊的功能，使其能夠運行去中心化應用
> EOAs是由用戶通過私鑰控制的賬戶。用戶可以使用私鑰發送交易，包括轉移以太幣、調用智能合約等。
> CAs是由智能合約代碼控制的賬戶。這些賬戶在被部署到區塊鏈上後，其行為由部署時編寫在智能合約中的代碼決定。

6. What is the difference between the private, internal, public and external functions?
> private：只能在定義它的合約內被調用。
internal：只能在定義它的合約及繼承它的合約中被調用。
public：可以在任何地方被調用，包括外部交易和合約內部。
external：只能從合約外部調用，不能被合約內部直接調用（除非使用this）。

7. What is the difference between pure and view functions?
> pure：不讀取也不修改合約的狀態變量。純粹進行一些計算和返回值。
view：僅讀取合約的狀態變量，不進行修改。

8. Are private visibility state variables able to be fetched from the blockchain?
> 即使設置為private，狀態變量仍然可以通過區塊鏈的數據直接讀取。private僅限制在智能合約的程式邏輯層面上的訪問，但不能阻止對存儲在區塊鏈上的數據的外部讀取。

9. What is the difference between call, staticcall and delegatecall?
> call：
>用途：调用另一个合约的函数，可以传递以太币。
存储和上下文：在目标合约的存储和上下文中执行。
安全性：相对较低，因为可以调用任何函数，包括状态改变函数。
>delegatecall：
用途：类似于call，但在当前合约的存储和上下文中执行目标合约的代码。
存储和上下文：保留调用者合约的msg.sender和msg.value，并在调用者的存储上下文中执行代码。
安全性：风险较高，因为错误的使用可能会破坏调用者合约的状态。
> staticcall：
用途：用于只读调用，确保不会修改状态。
存储和上下文：在目标合约的上下文中执行，但保证不改变状态。
安全性：相对较高，因为它不允许改变任何状态。

>作者：胖胖_喜欢玩APEX
链接：https://juejin.cn/post/7352770048514195507
来源：稀土掘金
著作权归作者所有。商业转载请联系作者获得授权，非商业转载请注明出处。

10. What is the storage slot and its rules?
> Ethereum Storage 是以一個 SLOT 一個 SLOT 為單位
每一個 Storage 都是從 SLOT0 開始
每一個 SLOT 都是存放 32 byte
reference type(如 array, mapping)都是 32 bytes
constant 跟 immutable 則都是不佔據 storage
![image](https://hackmd.io/_uploads/HkDbEk4gC.png)



11. What is the difference between receive and fallback?
> 當要接收ETH，且msg.data為空，則會用receive來收。
> 若沒有實作receive或者msg.data不為空，則fallback處理。

12. What does a modifier work? What is the execution order if there are multiple modifier?
> 在智能合約中，可以重複利用的function。它們可以用來檢查前提條件或重復使用某些邏輯。
> 如果一個函數有多個修飾符，它們的執行順序是從左到右，按照在函數定義時修飾符的排列順序。每個修飾符中的_;語句指示下一個修飾符或目標函數的執行位置。

13. What is the difference between tx.origin and msg.sender?
> tx.origin：表示最初的调用者，通常取得的是 EOA 的地址。
msg.sender：表示最近的调用者，通常取得是的上级调用者的地址，可以是 EOA 地址，也可以是合约地址。
如果 EOA 用户 A 调用合约 B，合约 B 调用合约 C。那么
在 C 合约中，msg.sender 就是 B 合约的地址，tx.origin 为 A 地址。
在 B 合约中，msg.sender 是 A 地址，tx.origin 也为 A 地址。

14. How to send native ether? What is the difference between call, send, transfer?
> call 沒有 gas 限制，最為靈活，是最提倡的方法(不會revert)；transfer 有 2300 gas 限制，但是發送失敗會自動 revert 交易，是次優選擇；send 有 2300 gas 限制，而且發送失敗不會自動 revert 交易，幾乎沒有人用它。

15. What is event, what is the purpose of emitting an event?
> 事件是智能合約中用來在區塊鏈上記錄日誌的機制。它們不會改變合約的狀態，但可以被外部監聽器捕捉，從而獲取合約執行的資訊。
發出事件（emitting an event）是一種有效的方式來通知外部監聽者關於合約中發生的重要動作或改變，例如交易的完成、資產的轉移等。它們提供了一個低成本的方式來追蹤區塊鏈上的活動。

16. What is the difference between transfer and transferFrom in ERC20?
> 當一個用戶想直接將自己的代幣轉給另一個用戶時，可以使用transfer函數。這是最直接的轉賬方式，不需要第三方的介入或許可。
> transferFrom函數允許一個合約或地址轉移另一個用戶授權給它的代幣。這在需要代幣授權和委託操作時非常有用，比如在一個代幣交易平台上，用戶允許交易平台代表自己轉賬。

17. What is the mechanism for approve function? What does it do?
> approve函數是ERC-20代幣標準的一部分，允許代幣持有者授權第三方（如另一個用戶或合約）從他們的賬戶中轉出最多一定數量的代幣。這樣，第三方可以使用transferFrom函數將這些代幣轉移到任何地址，而無需代幣持有者直接介入每筆交易。這個機制支持了如代幣交易所、代幣支付系統等多種去中心化應用的實現。

18. What is the difference between ERC-20 and ERC-721? Why is ERC-721 equivalent to NFT?
> ERC-20 標準 ：同質化代幣(強調代幣都是相同，沒有獨特性)，具有可分割性以及可替代性，以傳統世界來說就像：美國發行的美元、你手上的新台幣。
ERC-721 標準：非同質化代幣（強調代幣都是獨一無二的），具有不可分割性以及不可替代性，例如：帶有唯一編號的抽獎券、手工製的藝術品。
NFT（Non-Fungible Token，非同質化代幣）

19. What is the difference between transferFrom and safeTransferFrom in ERC-721?
> safeTransferFrom會檢查接收地址能夠處理或接受NFT，如果不支持，交易將會revert。防止了NFT被錯誤地發送到無法識別或處理它們的合約中，從而減少了丟失風險。

20. What is the difference between approve and approveForAll in ERC-721?
>approve：允許NFT的擁有者授權一個地址（通常是一個用戶或合約地址）來轉移一個特定的NFT
approveForAll：允許NFT的擁有者授權一個地址來轉移他們名下的所有NFT。

21. What is DEX? What is the difference between AMM and order book?
> DEX（Decentralized Exchange，去中心化交易所）：是一種允許用戶直接在區塊鏈上進行加密貨幣交易的平台，無需中心化的第三方機構介入。
> AMM（Automated Market Maker，自動做市商）：是一種在DEX上用於提供流動性和定價的算法模型，通過預設的公式（如Uniswap的x*y=k）來計算買賣價格，用戶與智能合約交易而非其他用戶。
> 交易帳本（order book）不管是在中心化交易所或去中心化交易所都是一樣的，都是在記錄某個資產買單(Buy order)和賣單(Sell order)的資訊，而這裡的買單賣單又是指有指定交易價格的限價單(Limited order)。假使有人送出一筆BTC買單，如果在交易帳本裡有符合交易價格條件的賣單，那這筆交易就會立即發生，反之，如果沒有符合交易價格條件的賣單，那這筆買單就會被掛在交易帳本上。

22. What is slippage in AMM? How to prevent them?
> 在AMM中，由於交易前後價格的變動，實際成交價格與預期價格之間可能存在差異，這種現象稱為滑點。
> 設置最小接受量（slippage tolerance），交易時指定一個最差可接受的成交價格，如果實際價格超出這個範圍，交易將被取消。

23. What is impermenant loss? How to calculate the loss?
> 當你將資產存入一個流動性池時，如果該資產的市場價格發生變化，那麼與單獨持有這些資產相比，你的資產總價值可能會減少。這種損失稱為"無常損失"
> **無常損失的例子**
假設你在一個由ETH和一種穩定幣（USDT）組成的流動性池中提供流動性。為了簡化計算，我們假設你存入了1 ETH和3000 USDT，當時1 ETH = 3000 USDT，池子中的ETH和USDT的價格比是1:3000。
>後來，ETH的價格上漲到了1 ETH = 6000 USDT，流動性池的價格通過交易而自動調整以反映這一變化。由於AMM的價格調整機制（如x*y=k恒定乘積公式），流動性池中ETH的相對數量會減少，而USDT的數量增加，以保持乘積k恒定。
>在價格變化後，假設你決定從流動性池中提取你的資產。由於ETH的價格上漲，你將會收回少於1 ETH，但是得到的USDT數量會多於最初的3000 USDT。儘管你得到的總資產（ETH和USDT的組合）的價值比最初存入時更高，但如果你在這段時間內單獨持有這些ETH而不是提供流動性，你將會擁有更多的財富，因為ETH的價值增加了。這就是所謂的無常損失。

24. What is sandwitch attack? How can it affect your swap?
> 當我要準備進行一個大交易時，攻擊者會監控到，並且提早先做一個同樣資產的交易，讓價格推高，接著我會變成以更高的價格去購買資產。最後，攻擊者在我交易完後馬上執行賣出的交易，因為剛剛我交易的影響，所以現在資產價格仍然在高點，所以攻擊者就能用高於市場價的價格賣出，賺取差價。
這樣的後果就是，我會以更高的市場價格去購買幣，增加了我的交易成本，如果我剛好又把slippage範圍設的很寬鬆，那我可能就會以對我很不利的價格成交。

25. What is the structure of Uniswap V2 (Related to core/periphery and Router/Pair/Factory)
> Uniswap V2的架構是為了提高去中心化金融（DeFi）交易的效率和靈活性而設計的，它分為核心（Core）和邊緣（Periphery）兩大部分，並透過路由器（Router）、配對（Pair）和工廠（Factory）合約來協調運作。

>核心（Core）
核心部分是Uniswap V2架構的基礎，包含最基本的合約，主要負責處理代幣的交換和流動性的管理。
>1. 配對合約（Pair Contract）：對於每一對交易的代幣，Uniswap V2都會有一個專門的配對合約。這個合約存儲著兩種代幣的資產和提供交換功能，保證交易的執行。每個配對合約還記錄著該代幣對的流動性供應情況，並基於提供的流動性來分配交易費用。
>2. 工廠合約（Factory Contract）：工廠合約是用於創建新配對合約的模板。當用戶希望添加一個新的代幣對交易時，工廠合約會根據需求自動生成一個新的配對合約。這個過程保證了每個代幣對都有一個獨立的合約來管理其流動性和交易。

>邊緣（Periphery）
邊緣部分包含了與用戶互動更為直接的合約，提供了一系列高級功能，如更加複雜的交易路徑、流動性的添加和移除等。
>1. 路由器合約（Router Contract）：路由器合約是用戶與Uniswap V2互動的主要入口。它為用戶提供了一個統一的界面，用於執行交易和管理流動性。路由器合約能夠處理復雜的交易路徑（例如，通過多個代幣對進行交換），並且支持一次性向多個配對合約添加或移除流動性。

>這種分層的設計允許Uniswap V2在保持核心交易和流動性管理機制的穩定性和安全性的同時，通過邊緣合約提供更多的靈活性和擴展性。用戶主要通過路由器合約與系統互動，而核心合約則負責處理低層次的資產管理和交換邏輯，確保整個系統的高效運作。

26. What is the formula for Uniswap V2 and how it works?
> Uniswap V2使用的是一個恒定乘積的公式 x×y=k，其中 x 和 y 分別是配對合約中兩種代幣的數量，k 是一個恒定的值。這個公式確保了交易前後，配對合約中代幣的乘積保持不變，從而確定了無需訂單簿即可進行代幣交換的價格。
當一種代幣的數量增加時，另一種代幣的數量必須減少，以保持 k 的恒定。這種機制允許交易即時發生，同時確保流動性池的價格自動調整以匹配外部市場。

27. What is the formula when minting liquidity in Uniswap V2 and how it works?
> 在Uniswap V2中，當用戶向一個代幣對的流動性池添加流動性時，會根據所添加的代幣數量鑄造（mint）新的流動性提供者代幣（LP代幣）。這些LP代幣代表用戶在該流動性池中的份額。計算新增流動性份額和鑄造LP代幣數量的公式是關鍵。

28. How to calculate the pair address in pairFor function?
> Uniswap V2使用一種特定的哈希函數，結合交易對中兩種代幣的地址和一個特定的創建碼，來計算配對地址。
29. What is arbitrage and how it works? How to calculate the reward?
> 套利是利用不同市場或平台之間的價格差異來賺取利潤的過程
> 套利的基本步驟是：
1.發現價格差異：識別兩個市場之間同一資產的買賣價格差異。
2.同時買入和賣出：在價格較低的市場購買資產，在價格較高的市場賣出。
3.獲得利潤：從賣出價格和買入價格的差額扣除交易費用後的剩餘金額為套利利潤。
獎勵 = (賣出價格 - 買入價格) * 資產數量 - 交易費用

30. What is liquidity mining?
>流動性挖礦是一種激勵機制，鼓勵用戶將資產存入DeFi平台的流動性池中，以換取代幣獎勵。這種做法旨在為去中心化交易所和其他金融應用提供所需的流動性，從而降低交易成本並提高市場效率。
>
31. What is DoS (Denial of Service) issue? Are there any real-world examples?
> DoS攻擊，全稱為Denial of Service攻擊，是一種安全問題，其目的是使目標系統、服務或網絡無法處理合法用戶的請求。這通常通過向目標發送大量請求或數據來實現，超出系統的處理能力，從而導致系統崩潰或服務不可用。
> 2016年，Dyn——一家大型DNS提供商遭受了巨大的DDoS攻擊（分布式拒絕服務攻擊，一種DoS攻擊），導致Twitter、Netflix、PayPal等多個大型網站暫時無法訪問。5x

32. What is reentrancy attack and examples of such vulnerability? How to mitigate the risk of potential exploit?
> 當一個合約在完成所有內部狀態更新之前調用外部合約（通常是為了轉賬），且該外部合約再次調用原合約的函數，試圖利用尚未更新的狀態。
> 
> 最著名的例子是2016年的DAO攻擊，攻擊者利用The DAO智能合約的重入漏洞，從合約中提取了價值約6000萬美元的以太幣。
> 
>1.使用鎖定機制，確保合約函數一次只能被一個外部調用者調用。
>2.确保在呼叫外部合約（如使用transfer或send）之前更新所有內部狀態。

33. What is front-run attack, how can it affect your transaction?
> 假設你想在一個去中心化交易所（DEX）上買入一定數量的代幣A，你提交了一個交易並設定了一個較高的gas費用以期快速完成。一個監控交易池（mempool）的攻擊者可以看到你的這個未確認交易，並且發現代幣A的購買將導致其價格上漲。
>攻擊者隨後可以提交一個購買相同代幣A的交易，但設定更高的gas費用，以確保其交易先於你的被區塊鏈確認。這樣，攻擊者的交易先執行，他們以較低的價格購入代幣A。當你的交易隨後被執行時，代幣A的價格已經上漲，你將不得不以更高的價格購買。攻擊者隨後可以在價格上漲後賣出代幣A，從中獲利。

hi

