--- tags: DeFi 實戰人才加速器 --- # [Z] DeFi 實戰人才加速器 第 2 屆 Week 1 * Z Institute Incubator Instructor - Alvin Yap 葉志華(小葉) * Twitter: https://twitter.com/alvinyap510 * Facebook: fb.com/alvinyap510 ## Week 1 Class 1 - Blockchain 101 1. **請問要如何查看各個網絡目前有多少node?** 答案:可以上到區塊鏈瀏覽器如[Etherscan](https://etherscan.io/nodetracker)以及[Bitnodes](https://bitnodes.io/)上去了解有多少網絡上目前有多少節點在運作。 上面顯示的節點並不一定是真正的節點數量,因為有些節點可能選擇使用洋蔥路由器匿蹤運行。 2. **請問每次交易後出現不斷上升的block confirmation數目只說目前已經通過多少個節點認證嗎?過程中需要多久時間才能達到全節點同步?** Block Confirmation與節點認證無關,主要指的是指某個交易被收錄進區塊後,下方再覆蓋了多少個區塊。 每一個區塊都有一個Previous Hash、Closing Hash以及一個Merkle Root,使區塊中的資料從數學上不可能被篡改。基於區塊鏈的特性,越多Block Confirmation就表示該交易約不可能被回滾。 3. **請問比特幣的Scalability與以太幣之比較?** 區塊鏈的擴容是一個大議題,本質上分為「鏈上擴容」以及「鏈下擴容」。 「鏈上擴容」涉及直接修改區塊鏈的基礎規則,包括區塊大小、共識機制等等。即將到來的「以太坊2.0」就是鏈上擴容的例子。 「鏈下擴容」則涉及到 Layer 2、側鏈等等,是在原有區塊鏈上再建設另外一個更快速的網絡(可能犧牲去中心化),只將主要訊息打包並儲存其哈希值於主區塊鏈上,或在需要共識參與(如數據出錯、發生糾紛時)時才與主區塊鏈進行資訊交互和傳播。 比特幣最著名的 L2 為「閃電網絡」,而以太坊由於不僅僅是一個帳本而是一個去中心化的電腦,其使用量遠高於比特幣網絡,也因此更加擁堵。當前以太坊有許多的擴容方案,如:Optimistic Rollup(如: Arbitrum,Optimistic Ethereum 等等),ZK-Rollup(如:Starkware,Loopring 等等),以及側鏈(如:Polygon 等等) 4. **我可以將solidity合約建構在異構公鏈上兼容的側鏈嗎?** 當然可以,舉例而言:Kusama 的平行鏈 Moonriver 以及 Near 的側鏈 Aurora 本質上就是一個「以太坊虛擬機兼容鏈」,因此上面可以完美地運行 Solidity 智能合約。 5. **請問節點具體來說,或是實體來說是啥? 一群電腦嗎?** 在電信網絡術語中,節點的意思是指網絡中的一個連接點。節點可以是一個再分發點或者是一個通信終端,因此你可以簡單地了解節點為某網絡中有資訊交換的地方。 在區塊鏈中,Full Node(全節點)指的是運行區塊鏈客戶端並同步整個區塊鏈帳本的一方。全節點需要佔用記憶體與內存,並同步所有的區塊鏈數據,且能夠獨立校驗區塊鏈上的所有交易並實時更新數據,主要負責區塊鏈的交易的廣播和驗證。 6. **常聽到說Dapp項目都綁在AWS上運行,因此變得有點中心化。請問意思是前端網站建立在AWS上,還是説區塊鏈網路、或Dapp建立在AWS上呢,若AWS當機會不會導致什麼問題?** 在一個Dapps中,其業務邏輯是建立在區塊鏈上的智能合約上。然而區塊鏈上的儲存空間昂貴,1KB約相等於640,000 Gas。因此網站的前端需要用如AWS或Google Cloud等去Host。 當然,目前也有去中心化的解決方案,開發者也可以使用如 Filcoin 所建立的去中心化存儲 ipfs 去 host 前端。 7. **聽起來區塊鏈網路只是用來加密、解目;那區塊鏈網路(部署智能合約、 Write 函數)是如何運行的?(由全世界節點所運行的嗎,還是在機房運行的?不太了解)** 區塊鏈網絡的目的不是用來解密或解密,區塊鏈本質上就是數據庫的替代品,而智能合約公鏈上的區塊鏈同時也相等於一個去中心化的電腦,上面可以存有帳本、狀態、代碼、算法、函數、執行運算等等。 8. **Nonce是什麼** Nonce 是 「Number Only Used Once」或 「Number Once」的縮寫,在密碼學中Nonce是一個只被使用一次的任意或非重複的隨機數值。 在使用工作量證明的共識機制中,礦工競相尋找的就是符合條件的 Nonce,以便在與整體資料的 「Merkle Root」 Hash 了之後,可以獲得符合資格的 Block Hash (Block Hash 開頭的 0 的數量)。 ![](https://i.imgur.com/9QbaMAb.png) 9. **程式碼開源是一定要開源嗎?為什麼Solana可以不用開源程式?BTW 在etherscan上面或GitHub的程式碼是可以給假的嗎?** 在區塊鏈中,開源不是必要的,而是一種選擇。開源以及透明是不同的兩件事 - 開源意味著任何人都有權利在開源License所允許的情況下去分叉項目,透明意味著代碼是否可見。以區塊鏈著名項目Curve Finance而言,Curve 是不開源的,意味著任何人不可以在沒有 Curve 開發團隊允許的情況下分叉項目;然而 Curve 的代碼是透明的,意味著代碼可見。 Etherscan 上的代碼是不可能給假的,因為假的代碼在編譯後不可能出現一樣的字節碼(Bytecode),因此不可能被當作 Verified Contract。Github 上發布虛假代碼不是不可能,但是應該很快會被社群發現。 10. **傳統數據庫也會用到共識算法如Paxos與Raft,那這跟區塊鍊所運用的共識算法的關鍵差異在哪裡呢?** Paxos 以及 Raft 是傳統分布式系統數據庫確保一致性的共識算法。 在我看來 Paxos & Raft 與區塊鏈的共識算法最大的區別為 Paxos 等是 Known Participants (意味著知道參與方是誰),以及容錯機制為 Crash-Recovery Failures(在節點出錯崩潰的情況下,可以恢復),更適合內網使用。 區塊鏈共識機制是 Unknown Participants (任何人都可以加入 - 無需許可),同時容錯機制為可以容忍拜占庭錯誤 Byzantine Fault Tolerance (有可能有惡意節點發送惡意以及錯誤的信息)。 (小葉補習後回答) 11. **這些還沒上主鏈的transaction要怎麼確認最後會不會上主鏈?** 還沒上主鏈的交易會出現在 Pending Transactions,上主鏈的 Transactions 就會被記錄在主鏈上。 假設你要 cancel 一個 pending transaction 的話,可以直接發送一個擁有同樣的 nonce 但是卻更高 Gas Fee 的交易去取代原本的交易,從而取消它。(取消交易一般上是花 21000 Gas 去創造一個 0 Value 的Transaction) 12. **為何有些pending TX 是0 ETH value?** 區塊鏈上的交易並不一定涉及 ETH 的交換,更多時候是與智能合約的互動,也因此在 Etherscan 上會顯示 0 ETH Value,但是該交易還是需要付 Gas Fee 以便被記錄在區塊鏈上。 ![](https://i.imgur.com/W2eQCuq.png) 以這筆交易而言,涉及到發送 USDT ,因此 ETH Value 顯示為 0 ,然而還是需要支付 Gas Fee 以邊被記錄到區塊鏈上。 13. **之後過渡到乙太坊2.0後,礦工就消失了,那運作方式還是保持一樣,會到pending pool去撈尚未打包的交易嗎?** 在採用 PoS 機制的區塊鏈中,一般上稱創造區塊者為「驗證者」而不是「礦工」。可以參考 Polygon 目前運作的方式 - 驗證者在獲得建立區塊的權力後,依然是會從 Pending Transactions 中優先選擇最高 Gas Fee 的交易進入區塊中,以便最大化自身的回酬。 ## Week 1 Class 2 - DeFi 入門知識與操作 1. **為什麼像ENS的回溯空投可以其Token產生價值?** 答:ENS全名是 Ethereum Naming Services,是以太坊網絡上的一個去中心化域名服務區(某些 EVM 公鏈上的項目也支持 ENS ),是以太坊上重要的基礎設施之一,將以太坊地址轉換成便於人類記憶和識別的字符,形成以「.eth」結尾的以太坊域名。 「回溯空投」目前是區塊鏈中最受歡迎,也最符合區塊鏈去中心化的社群文化特性的代幣分發方式。選擇「回溯空投」分發代幣的項目,往往在事前並不會宣布代幣空投,而是選擇在某個區塊高度進行快照之後,才公開空投的消息。 「回溯空投」可以確保代幣分發到真正在項目早期就支持以及使用項目的社群手中,以感謝他們為項目成長所做出的貢獻,而不會落在專門有目的性地去擼空投的群體手中。 Uniswap 以及 ENS 通過空投所分發予早期用戶的代幣價值在幣價高峰期高達數千美元甚至數萬美元。 2. **為什麼像 Pancakeswap 這種 AMM 多數 Pool 都是 xxx/BNB 的對價關係,不是主流用 xxx/BUSD;xxx/BUSD 應該更為方便且更有需求性吧?** 答:在不同區塊鏈中的 AMM Swap ,慣例 / 共識為絕大部分的項目在創建代幣首個流動性池的時候,首選都是將自己的代幣與該區塊鏈上的原生幣掛鉤。以以太坊主網而言,ETH 為期原生幣;以 BSC 而言,其原生幣則是 BNB。 這是因為在區塊鏈中,往往原生幣擁有最大的流動性。同時 AMM Swap 中,假設某個交易對並沒有直接交換的流動性,AMM Swap 有個 Router 功能將為其尋找最優的交換路徑。 以 BSC 中 MIM 兌換 Meta 而言: ![](https://i.imgur.com/Lx9hH6B.png) 可以看到 MIM 與 Meta 之間並沒有直接的交易流動性,但是兩個幣都分別與 BNB 擁有流動性池,因此可以通過 BNB 做為中繼幣進行交換,更為有效率。 如果 MIM 與 Meta 分別選擇 BUSD 以及 BNB 做為其主要的流動性池,那麼可能就需要兩次的中繼幣才可以互相交換,因此所產生的 Gas 以及交易費用會更高。 3. **可以分享一下剛剛很多很多機槍池項目的連結們嗎~感覺可以研究一下?** 答:關於不同的機槍池項目的連結,個人推薦以下的地方查詢: [Debank - Yield Aggregator](https://debank.com/projects?tag=yield_aggregator) (小葉注:Debank 很好用,有很多功能,請好好善用它 XD) 在通過 Yield Aggregator 投資項目時,請確保你了解該機槍池中所投的項目 - 某些收益聚合器偏向投大型項目,某些收益聚合器會更為 Degen 些。Degen 不代表不能投,但是請先了解項目風險。 4. **請問defi應該是合約去中心化? 平台仍然有機會倒閉? 萬一平台倒閉? 你所損失的應該是平台幣價值歸零? 但是如果你貸款給平台的幣應該也是無法拿回?** 答:DeFi 的業務邏輯是構建於區塊鏈上的智能合約,前端網頁只是於區塊鏈上智能合約互動的一個中介。 假設平台惡意倒閉(假設:前端網頁下限,開發者惡意傾銷平台幣 / 抽乾流動性)的話,基於信心危機平台幣很可能會歸零。 然而假設該項目如果是分叉其他著名項目的智能合約,並且項目沒有修改智能合約添加惡意代碼(重要前提)的話 - 用戶完全可以 Etherscan 或者其他區塊瀏覽器上,直接去智能合約後端調用 Withdraw 或者 Emergency Withdraw 的功能取回自己的代幣。 以 AAVE 借貸協議而言,假設今天網頁前端下線了 / 項目開發者發生了什麼事情,都不會影響到你在智能合約中的存款。用戶完全可以到後端智能合約去調動 Withdraw 功能取回自己的代幣 ![](https://i.imgur.com/aPIb7iW.png) 以 PancakeSwap 為代表的 AMM Swap 以及其分叉項目,則往往 MasterChef 智能合約中都擁有 Withdraw 以及 Emergency Withdraw 函數,允許用戶直接取回代幣。 ![](https://i.imgur.com/JUruKwY.png) ![](https://i.imgur.com/Pp0ydun.png) 當然如果項目方添加了惡意代碼則可能直接有權限去盜取你的代幣,因此在投小型項目時,務必做好風險管控。 5. **關於Loop,借款利息大於存款利息,重複借款存入這邊還有收益,聽不懂** 答:Loop 代表著重複進行存款以及借貸的動作,以邊最大化自己的收益,你可以簡單地將之理解為槓桿的一種。 以借貸協議為例,在某些項目剛剛推出的時候,項目方會將代幣分發給項目的使用者 - 也就是存款方以及借貸方。 假設某個資產的抵押係數為75%(意味著抵押100美金可以貸款75美金),那麼通過反覆存款借貸同一資產的動作,可以最高槓桿出4倍的資產利用率( 1 / 0.25 = 4 倍)。 ![](https://i.imgur.com/K1c8B8N.png) 以 Blizz Finance 的 DAI 借貸池而言,存款的收益為「利息 1.45% + 代幣 4.31% = 5.76%」,而借款實際獲得的收益則為「代幣收益 14.85% - 借款利息 3.94% = 10.91%」,因此通過 Loop 進行反覆存款以及借貸,可以把收益槓桿最高達 4倍。 當然,Loop 也可以在不同的資產中進行如:存入 USDT 借出 DAI,再換成 USDT 存入,再借出 DAI... ,以便最大化收益。 以上只是舉 Blizz Finance 做為操作例子,在實際現實中 Blizz 的平台代幣是有鎖倉期的,因此也必須將此納入考量。 6. **請問 defi 跨鏈是如何做到的?不同鏈的智能合約是有辦法互通的嗎?** 不同公鏈上的的智能合約,原則上是無法直接溝通的,需要預言機提供鏈外的資料於鏈上的合約。(有例外:基於Cosmos SDK 開發的公鏈有一個原生讓不同區塊鏈溝通的協議 Inter-Blockchain Communication Protocol (IBC)) 實現跨鏈的方式有很多種,而 Anyswap V2 使用的是 MPC (多方計算),由 Anyswap 的節點去監聽不同鏈上發生的事情。 以 USDC 從 Avalanche 跨鏈到 Polygon 而言,Anyswap 首先需要在兩條公鏈上上部署 USDC 託管合約。當用戶存入 USDC 至 Avalabche 上的託管合約之後,合約將印製 anyUSDC 代幣作為憑證。通過焚毀 Avalanche 上的 anyUSDC,用戶可以在 Polygon 上鑄造相應的 anyUSDC 然後再以之提取為 Polygon 上的 USDC 。 Anyswap 的節點則負責監聽 Avalanche 上的事件,當絕大多數 Anyswap 的節點都同意用戶已經存入並焚毀 Avalanche 上的 anyUSDC時,就會指示 Polygon 上的智能合約鑄造 anyUSDC 予用戶同一地址,並直接兌換 anyUSDC 為 USDC。 發送方:Avalanche ![](https://i.imgur.com/tH0nlEC.png) 接收方:Polygon (扣除手續費) ![](https://i.imgur.com/HEknURp.png) 7. **Mirror Protocol這樣的做法,user買的標的實際上跟該公司的股票或其他相關事務有關嗎?** Mirror 上的合成資產是通過預言機去追蹤實際資產的價格波動而已,因此持有 Mirror Protocol 上的資產並不等同於持有公司的股票。印製合成資產的抵押品也不是真實股票,而是 UST 或其他 mAssets。