KryptoCamp — Day28~29— solidity — 9

經過了前幾天的補足,已經把大部分 solidity 會出現的語法都做了基本的了解,今天來接著針對整個 solidity 寫完後,合約的去向以及運作合理和部署進行理解。

以下內容來自 all in one solidity ,如果希望了解更詳細的內容,請參考該書籍。

智能合約的部署

  1. 撰寫智能合約。
  2. 編譯智能合約後程式碼被轉為 bytes code。
  3. 這些 bytes code 會轉為交易(transaction),並且被打包到區塊中。
  4. 此智能合約被打包到該區塊之後,整個區塊會對內容進行 hash,我們無法改變這筆交易,也無法改變已經佈署的合約程式碼,因為這樣做會把整個區塊鏈的 hash 破壞掉。
  5. 我們無法真正刪掉智能合約,但能夠透過「狀態(state)改變」來編輯智能合約或其他資料的狀態。

生命週期

編譯 => 送出交易 => 部署 => 持續互動 => Selfdestruct 摧毀

編譯

編譯後的智能合約會產生兩個檔案:ABI (application binary interface) 與 byte code。

ABI 之前已經寫過相關的說明,可以簡單認為是一個讓外部知道如何用使用這個合約的文件。

bytecode 之於 EVM ,就像是機器語言之於電腦,EVM 是看不懂 solidity 的,它只能看懂被編譯過後的檔案,也就是 bytecode ,被編譯後的 bytecode 可以認為是 solidity 程式碼的一種表現。

函式簽章 (Function Signature)

來源:https://medium.com/linum-labs/a-technical-primer-on-using-encoded-function-calls-50e2b9939223

函式簽名這個詞可能用得不太好,如果直接翻譯 Signature 會得到一個比較能具體描述這個特性的詞,叫做識別標誌。
函式簽名用於描述這個函式該如何使用,而 EVM 利用它來判斷當前調用的是哪一個函式。

--

--

Galen-Ting
廢物到工程師的一大步

學程式不無聊,無聊就不學程式,皮皮的學習好過死死的學習。