Solidity 的ABI 和bytecode 是什麼

當你作為Solidity 開發者開始編寫Ethereum 合約的時候,你會很容易接觸到一些概念,比如EVM(以太坊虛擬機,字節碼和ABI(應用程序二進制接口)),你是一個Javascript 開發者(就像我第一次學習這些名字一樣),這些名字對你來說不是一個真正的人,你可能想知道在以太坊世界和以太坊世界的理解和理解。

這篇文章會從技術的角度去了解這三個概念,以後發表這篇文章,你會知道什麼是EVM,字節碼和ABI,並且會了解如何在項目中快速生成和使用字節碼和ABI。

虛擬機和EVM

讓從以太坊虛擬機)了解,先把EVM啟動一邊,也是我們硬件VM。通俗的在機器上,與什麼不同的VM(EVM)可以上運行的軟件,但是不同的軟件是, VM物理主要是被設計來模擬硬件的。即這個軟件是使用“假裝”自己是一個硬件,就像音樂應用程序是一個虛擬機的播放系統一樣,它不是一個硬件,而是模擬了一個物理。

答案是虛擬機可以有效地擴展、管理和升級軟件運行所以來的基礎設施。要使用1000 個物理服務器的業務,你可能只需要20 個在每個物理服務器上運行50個虛擬機。甚至你可以讓一個虛擬機都運行不同的Linux操作系統,比如一個虛擬機運行Windows服務器,第二個Debian,第三個運行Gen too Linux,然後第四個運行ChromeOS!

虛擬機與容器圖
在同一個硬件上的不同虛擬即運行多個操作系統

設施的這些好處是你可以在這些虛擬機上運行多個應用程序,在同一個硬件中運行,所以這些硬件的計算資源和系統資源的使用效率更高,提升了基礎的性價比。

以太坊虛擬機(EVM)也是一種虛擬機。 EVM 的目的是創造一個去中心化的“世界計算機”,而不是高效的硬件資源。一個運行區塊網絡中的每個“節點”是一個單獨的硬件,EVM 是客戶端的節點軟件。以太坊技術規範,因為他們需要更新彼此的狀態連接,形成一個網絡。然後他們的狀態同步,以形成一個經常的巨大的數據庫。網絡中的節點需要實現對數據的同步,而數據的同步是由共識算法的實現。

EVM作為一個天才化的虛擬網絡機,可以運行一個典型的智能去合約的程序。就像其他應用一樣,我們因為編完智能合約以後會,然後被部署(部署在以太坊區塊鏈)。區塊鍊是不可篡改的,所以合約一旦部署完成,就不能修改了。以後合約部署完成,EVM就是這個合約中的代碼被執行的環境,也就是運行我們部署的智能合約的虛擬機。

但是我們非常開始使用我們人類的代碼來編寫程序的(即使在剛學習的時候,可以機器性強),這是因為需要閱讀、編輯、維護和調試軟件。但是是無法執行人類的可調用代碼的,它們只能夠識別出由其後1個代碼所發出的數據,並且是一串串並組成請求的數據流。所以在我們完成編譯器(也是一個軟件)之後,它也需要編譯器來編譯上運行。

在Solidity 中,我們編譯代碼以後,會得到兩個“神器”:字節碼和ABI。

Solidity 中的字節碼

Bytecode是一種Solidity以後,它包含了一個用於編寫其他計算機指令的譯文。 Bytecode是以每一個數字信息,字符信息和被編碼的方式。為操作碼 的操作,這些操作碼的大小都是1 比特(8 位)。這也是為什麼我們叫它“字節碼”,即長度為一個字節的操作碼。

因為每一行代碼都會被分解成一個操作碼,所以計算機會在運行代碼的時候會清楚的知道要做什麼。

在以太坊,其實被部署在區塊鏈上的就是字節碼。我們用Metamask 協議部署到的字節鏈上,並確認交易的時候,我們實際上可以將字節碼部署了。字節碼可以被拆分時成多個操作碼,但本文不會涉及。

字節碼智能合約
通過Metamask 部署智能合約時可以看到字節碼。

字節碼存儲在以太坊的東西,同時它在我們與智能合約的時候,為你將固體的網絡連接在一起。有很多工具和庫(有很多工具和庫(編譯機,solc 可以用字節碼編譯)就是幫助我們執行。的方式是通過在線IDE Remix來編譯合約,然後復制ABI和字節碼。

這裡舉個小例子,怎樣生成和復製字節碼,點擊這個連接然後打開Chainlink Price Feed,可以在Remix中看到Solidity智能。點擊編譯然後就可以復製字節碼了,非常簡單!

重新混合字節碼
使用Remix 生成字節碼

什麼是Solidity ABI?

聽說API(應用程序編程接口,它實際上包含了很多,,和特性,可以通過API,網絡變量的端點功能與函數庫的函數服務或應用程序服務或其他功能)。 API。 API 是一個接口,可以幫助多個軟件之間進行交互。

ABI 合約中可以定義為我們的智能合約中的智能合約和應用程序。 Javascript 是一個最常用的工具,而JavaScript 也是最常用的工具,而JavaScript ),只要你有任何一種語言,就可以使用ABI,只要你有任何一種語言都可以使用。

Solidity中的ABI結構

所以ABI 就是這樣一些定義,用於尋找合同的方法,參數,數據類型來幫助我們幫助我們的日常任務,智能合約發出的事件的結構,以下是在ABI 中找到名字的方法。

  • 類型: 定義了函數的類型,類型是`function`、`constructor`、`receive`或`fallback`中的一個。
  • 姓名: 函數的名稱是什麼。
  • 輸入: 一個包含了以下信息的對象的目錄
    • 姓名: 參數名稱。
    • 類型: 參數類型。
    • 成分: 參數類型是元組的時候會使用到。
  • 輸出: 類似輸入的物品種類。
  • 狀態可變性: 標註函數狀態的字符串。值可以是`view`、`pure`、`view`、`nonpayable`、和`payable`。

個性化的錯誤和時間有很相似的數據結構,你可以在官方文檔中學習它。

ABI 可以被表示成一個類似於下面的JSON 文件

[
      {
            "inputs": [],
            "stateMutability": "nonpayable",
            "type": "constructor"
      },
      {
            "inputs": [],
            "name": "getLatestPrice",
            "outputs": [
                  {
                        "internalType": "int256",
                        "name": "",
                        "type": "int256"
                  }
            ],
            "stateMutability": "view",
            "type": "function"
      }
]

你可以再次在Remix IDE 中打開Chainlink Price Feed 合約,然後生成上面的ABI。編譯代碼,然後再獲取ABI,如下圖所示。

混音ABI
使用Remix 快速生成ABI

你從一個普通的函數類型函數輸入和其他什麼類型的函數是一個普通的函數類型,它的返回值是一個普通的函數類型,它是一個智能合約時,它需要更多的電話呼叫。當然,在會使用類似的方式上,你可以用這個工具庫來與你最終的秘密。

另外一個獲取ABI 和Bytecode 的方法:你可以通過Remix 中的“Compilation Details”獲得需要的信息,如下圖所示。庫和協議無法通過這種方式獲取ABI 和字節碼。

Remix 中的ABI 和字節碼
通過Reimx 獲取ABI 和bytecode

你已經了解EVM 是,字節碼是什麼,為什麼ABI 智能合約很重要。開發效率。

您可以關注鏈家禽機資料和私信加入者社區,有大量關於智能合約開發的學習以及關於區塊鏈的話題!

Source Link

最受歡迎

繼續閱讀

長期持有者持有的比特幣(BTC)供應量達到最高水平

根據Glassnode 的估計,比特幣的長期持有者(LTH)目前擁有1452 萬枚BTC,創歷史新高,只剩下25% 留給短期持...

抓住Web3 遊戲的先發優勢:成功策略

Web3和區塊鏈技術的出現徹底改變了遊戲行業,為開發者和企業家提供了前所未有的機遇。 Web3 遊戲的去中心化性質為創新遊戲貨幣化模式、玩家所有權和社區參與打...

現在讀

$COOKIE, the Cookie3 Mark...

Tallinn, Estonia, March 26th, 2024...

長期持有者持有的比特幣(BTC)供應量達到最高水平...

根據Glassnode 的估計,比特幣的長期持有者(LTH)目前擁有1452 萬枚BTC,創歷史新高,只剩下25% 留給短期持有者和投機者。 儘管BTC 的價格在過去一個月中保持相對平穩,範圍在約29,000 美元至31,000 美元之間,但人們還是開始瘋狂囤積。 ...

Caldera 宣布與Espresso Syste...

Caldera 開發人員可以利用Espresso Sequence...

抓住Web3 遊戲的先發優勢:成功策略

Web3和區塊鏈技術的出現徹底改變了遊戲行業,為開發者和企業家提供了前所未有的機遇。 Web3 遊戲的去中心化性質為創新遊戲貨幣化模式、玩家所有權和社區參與打開了大門。對於那些尋求利用Web3 遊戲巨大潛力的人來說,確保先發優勢至關重要。 了解Web3 遊戲生態系統在深入研究Web3 遊戲之前,有...

Taapsee Pannu 推出NFT 平台,介紹...

企業家貢獻者表達的意見是他們自己的。 您正在閱讀《企業家印度》,這是企業家媒體的國際特許經營刊物。 女演員Taapsee Pannu 最近推出了“taapseeclub.com”,這是她自己的非同質代...

比特幣(BTC) 地址休眠超過11 年,轉移310...

經過11 年多的閒置之後,一個包含3100 萬美元BTC 的休眠比特幣地址最近突然活躍起來。 2023年7月22日,地址 轉入 將其全部餘額轉移到新地址。 早期BTC 地址復活 比特幣自2009 年以來就已經存在,因此存在多年來不活躍的休眠地址,其中包含大量BTC。這種加密貨幣的一些早期採用者能夠...

加密貨幣死了嗎?當今加密貨幣的現狀

您之前可能聽說過加密貨幣正在消亡(或比特幣已消亡)。在這篇文章中,我們將研究加密貨幣的狀態,並嘗試回答這個問題:加密貨幣現在已經死了嗎? 在我們開始之前,我們想澄清一下,本文指的是最廣泛意義上的“加密貨幣行業”; 在裡面 網絡3 感覺。該定義包括加密資產市場; 但它還包括其他非財務用例。 隨著近來加...

Chancer 可能成為體育和社交博彩領域的下一個...

加密貨幣 隨著企業財報季節的繼續,本週股市表現好壞參半。在Ne...

以太坊(ETH) 創下兩個月來CEX 流入最高紀錄...

過去一周,以太坊(ETH)流入中心化交易所(CEX)的資金量創下了過去兩個月來的最高水平。這些重大的資產變動表明ETH 的價格可能會下跌。 CoinGecko 數據顯示,第二大加密貨幣的價格一直在小幅下跌,過去一周價值下跌了2.5%。截至撰寫本文時,以太幣易手價格為1,892.65 美元,過去24...

新的DeFi 法案有“不可行的義務”

加密貨幣創新委員會表示,新的反洗錢法案沒有為DeFi 中的非法金融...

幣安大幅削減成本,瑞波幣為美國銀行和加密貨幣風險投...

美國證券交易委員會(SEC)對加密貨幣公司的打擊似乎嚴重影響了幣安的業務。據報導,在過去幾週內,該加密貨幣交易所解雇了1,000 多名員工,並削減了一些福利。 幣安表示,“當前的市場環境和監管環境”導致利潤下降,這表明可能正在進行更多削減。一位發言人告訴Cointelegraph,該公司將考慮縮減“...

Automata 雙週更新:第48 期| 通過自動...

迎接新的季度意味著設定我們的意圖並為團隊規劃下一步的行動。幕後醞釀的一切——合作、產品功能和營銷發布——很難抑制我們的興奮。我們一開始就在1RPC(2 個備受期待的第2 層主網)上添加了對Linea 和Base 的支持。科技載體更新頁腳以顯示界面版本平滑的用戶體驗 USDC CCTP 支持 關於仲裁...