Skip to content

Latest commit

 

History

History
45 lines (33 loc) · 3.42 KB

0x3f3f3f3f3f3f.md

File metadata and controls

45 lines (33 loc) · 3.42 KB
timezone
Asia/Taipei

0x3f3f3f3f3f3f

  1. 自我介绍

My name is 0x3f3f3f3f3f3f i'm interesting in smart contract.

  1. 你认为你会完成本次残酷学习吗? i'll do my Best to complete this course.

Notes

2024.09.23

  1. 學習了如何使用remixIDE,以及compile到deploy的流程
  2. 值變量裡面比較特別的是address有分成單純的address跟address payable 兩種
  3. 宣告函式需要使用可見性 以及狀態修飾符,狀態修飾符有一個特別的payable代表這是一個能給合約收錢的function
  4. 可見性中 private跟internal的差異是在於繼承的合約能不能使用
  5. 宣告返回值前面記得要加上returns; 命名式返回跟解構式賦值都是新學到的語法

2024.09.24

今天沒有到solidity101上學東西,主要是完成了一份課堂上的作業,比較有收穫的是完成了一個 reentrancy attack的流程,我覺得收穫蠻多的具體了解了調用閃電貸的流程用solidity操作了一遍 ,然後學到用calldata以及solidity撰寫讓設計不完善的閃電貸項目轉移token權限 搞了很久一部分,最後答案也沒幾行,感覺是對語法不太熟悉導致對原理有誤解,進而有太多奇怪的想法 明天開始繼續基礎學習solidity101

2024.09.25

  1. 對結構的初始化都要再函示裡面
  2. 初始化struct 的四種方法,第一種用storage來創造一個引用然後對她初始化,第二種直接引入在外面的函數變量,第三種跟第四種很像,差別是第四種用了一種叫做key value的方法
  3. 在mapping的結構裡面 不能使用struct來mapping,mapping沒有定義初值的話她會默認是各個型別的初始值,初始化mapping的時候都是storage也就是狀態變量
  4. 變量初值的部分bool默認是false其他都蠻正常的,delete可以讓變量變成初始值
  5. immutable constant都不能在初始化後改變值 差別在於 immutable可以在constructor裡面在初始化邊量比較靈活 另外能聲明成immutable的只有數值變量,像是byte string這種的不行

2024.09.27

  1. event的用法有 在emmit裡面有加上index的也就是topic部分的之後可以直接檢索但是只能有最多三個,且每個最大256 bits多的都會被丟到剩下data的部分,event可以理解為他在做broadcast而不是把數據保存到鍊上,這樣做可以節省gas,topic除了包含三個index以外還有多一組哈希,這組哈希是用你emit的事件名稱哈希的例如emit transfer(xxx,xxx,xxx)就會用keccak256(”transfer(xxx,xxx,xxx)”)來處理
  2. 繼承的寫法蠻特別的要注意繼承的輩份關係由左到右由大到小,super可以用來調用最近的父合約,重載父合約的函數要用overrider關鍵字,然後如果父合約希望讓子合約重載他的函數他要加上virtual不然子合約是無法重載的,假如重載的函數在多個父輩都存在則要把父輩都打出來在override後面
  3. 知道了interface的用法以及要怎麼跟別人部署好的合約互動 如果是符合特定IERC可以直接import來用不用自己手打interface 如果不是那你可以去etherscan裡面看他的abi在按照他提供的內容打出他的interface
  4. 理解了異常的差別,之前只用過require 學了才知道require是gas消耗量最高的 然後error感覺跟require很像,只是把revert的部分分開來寫但是他的gas消耗量是最小的