導航:首頁 > 以太坊區 > 以太坊能用ssm框架嗎

以太坊能用ssm框架嗎

發布時間:2023-02-26 06:52:01

『壹』 以太坊虛擬機是以太坊開發框架嗎

以太坊是一種區塊鏈的實現。在以太坊網路中,眾多的節點彼此連接,構成了以太坊網路:

以太坊節點軟體提供兩個核心功能:數據存儲、合約代碼執行。

在每個以太坊全節點中,都保存有完整的區塊鏈數據。以太坊不僅將交易數據保存在鏈上,編譯後 的合約代碼同樣也保存在鏈上。

以太坊全節點中,同時還提供了一個虛擬機來執行合約代碼。

以太坊虛擬機

以太坊區塊鏈不僅存儲數據和代碼,每個節點中還包含一個虛擬機(EVM:Ethereum Virtual Machine)來執行 合約代碼 —— 聽起來就像計算機操作系統。

事實上,這一點是以太坊區別於比特幣(Bitcoin)的最核心的一點:虛擬機的存在使區塊鏈邁入了2.0 時代,也讓區塊鏈第一次成為應用開發者友好的平台。

以上內容來自:以太坊DApp開發入門教程

『貳』 關於以太坊預編譯合約的一些使用方法

誠如以太坊黃皮書所言,這八個所謂的'預編譯'合約,意味著可能在以後成為原生擴展的初步體系結構。它是使用通用EVM執行框架的八個例外,用於評估消息調用。

『叄』 用Go來做以太坊開發④智能合約

在這個章節中我們會介紹如何用Go來編譯,部署,寫入和讀取智能合約。

與智能合約交互,我們要先生成相應智能合約的應用二進制介面ABI(application binary interface),並把ABI編譯成我們可以在Go應用中調用的格式。

第一步是安裝 Solidity編譯器 ( solc ).

Solc 在Ubuntu上有snapcraft包。

Solc在macOS上有Homebrew的包。

其他的平台或者從源碼編譯的教程請查閱官方solidity文檔 install guide .

我們還得安裝一個叫 abigen 的工具,來從solidity智能合約生成ABI。

假設您已經在計算機上設置了Go,只需運行以下命令即可安裝 abigen 工具。

我們將創建一個簡單的智能合約來測試。 學習更復雜的智能合約,或者智能合約的開發的內容則超出了本書的范圍。 我強烈建議您查看 truffle framework 來學習開發和測試智能合約。

這里只是一個簡單的合約,就是一個鍵/值存儲,只有一個外部方法來設置任何人的鍵/值對。 我們還在設置值後添加了要發出的事件。

雖然這個智能合約很簡單,但它將適用於這個例子。

現在我們可以從一個solidity文件生成ABI。

它會將其寫入名為「Store_sol_Store.abi」的文件中

現在讓我們用 abigen 將ABI轉換為我們可以導入的Go文件。 這個新文件將包含我們可以用來與Go應用程序中的智能合約進行交互的所有可用方法。

為了從Go部署智能合約,我們還需要將solidity智能合約編譯為EVM位元組碼。 EVM位元組碼將在事務的數據欄位中發送。 在Go文件上生成部署方法需要bin文件。

現在我們編譯Go合約文件,其中包括deploy方法,因為我們包含了bin文件。

在接下來的課程中,我們將學習如何部署智能合約,然後與之交互。

Commands

Store.sol

solc version used for these examples

如果你還沒看之前的章節,請先學習 編譯智能合約的章節 因為這節內容,需要先了解如何將智能合約編譯為Go文件。

假設你已經導入從 abigen 生成的新創建的Go包文件,並設置ethclient,載入您的私鑰,下一步是創建一個有配置密匙的交易發送器(tansactor)。 首先從go-ethereum導入 accounts/abi/bind 包,然後調用傳入私鑰的 NewKeyedTransactor 。 然後設置通常的屬性,如nonce,燃氣價格,燃氣上線限制和ETH值。

如果你還記得上個章節的內容, 我們創建了一個非常簡單的「Store」合約,用於設置和存儲鍵/值對。 生成的Go合約文件提供了部署方法。 部署方法名稱始終以單詞 Deploy 開頭,後跟合約名稱,在本例中為 Store 。

deploy函數接受有密匙的事務處理器,ethclient,以及智能合約構造函數可能接受的任何輸入參數。我們測試的智能合約接受一個版本號的字元串參數。 此函數將返回新部署的合約地址,事務對象,我們可以交互的合約實例,還有錯誤(如果有)。

就這么簡單:)你可以用事務哈希來在Etherscan上查詢合約的部署狀態: https://rinkeby.etherscan.io/tx/

Commands

Store.sol

contract_deploy.go

solc version used for these examples

這寫章節需要了解如何將智能合約的ABI編譯成Go的合約文件。如果你還沒看, 前先讀 上一個章節 。

一旦使用 abigen 工具將智能合約的ABI編譯為Go包,下一步就是調用「New」方法,其格式為「New<contractname style="box-sizing: border-box; font-size: 16px; -ms-text-size-adjust: auto; -webkit-tap-highlight-color: transparent;">」,所以在我們的例子中如果你 回想一下它將是 NewStore 。 此初始化方法接收智能合約的地址,並返回可以開始與之交互的合約實例。</contractname>

Commands

Store.sol

contract_load.go

solc version used for these examples

這寫章節需要了解如何將智能合約的ABI編譯成Go的合約文件。如果你還沒看, 前先讀 上一個章節 。

在上個章節我們學習了如何在Go應用程序中初始化合約實例。 現在我們將使用新合約實例提供的方法來閱讀智能合約。 如果你還記得我們在部署過程中設置的合約中有一個名為 version 的全局變數。 因為它是公開的,這意味著它們將成為我們自動創建的getter函數。 常量和view函數也接受 bind.CallOpts 作為第一個參數。了解可用的具體選項要看相應類的 文檔 一般情況下我們可以用 nil 。

Commands

Store.sol

contract_read.go

solc version used for these examples

這寫章節需要了解如何將智能合約的ABI編譯成Go的合約文件。如果你還沒看, 前先讀 上一個章節 。

寫入智能合約需要我們用私鑰來對交易事務進行簽名。

我們還需要先查到nonce和燃氣價格。

接下來,我們創建一個新的keyed transactor,它接收私鑰。

然後我們需要設置keyed transactor的標准交易選項。

現在我們載入一個智能合約的實例。如果你還記得 上個章節 我們創建一個名為 Store 的合約,並使用 abigen 工具生成一個Go文件。 要初始化它,我們只需調用合約包的 New 方法,並提供智能合約地址和ethclient,它返回我們可以使用的合約實例。

我們創建的智能合約有一個名為 SetItem 的外部方法,它接受solidity「bytes32」格式的兩個參數(key,value)。 這意味著Go合約包要求我們傳遞一個長度為32個位元組的位元組數組。 調用 SetItem 方法需要我們傳遞我們之前創建的 auth 對象(keyed transactor)。 在幕後,此方法將使用它的參數對此函數調用進行編碼,將其設置為事務的 data 屬性,並使用私鑰對其進行簽名。 結果將是一個已簽名的事務對象。

現在我就可以看到交易已經成功被發送到了以太坊網路了: https://rinkeby.etherscan.io/tx/

要驗證鍵/值是否已設置,我們可以讀取智能合約中的值。

搞定!

Commands

Store.sol

contract_write.go

solc version used for these examples

有時您需要讀取已部署的智能合約的位元組碼。 由於所有智能合約位元組碼都存在於區塊鏈中,因此我們可以輕松獲取它。

首先設置客戶端和要讀取的位元組碼的智能合約地址。

現在你需要調用客戶端的 codeAt 方法。 codeAt 方法接受智能合約地址和可選的塊編號,並以位元組格式返回位元組碼。

你也可以在etherscan上查詢16進制格式的位元組碼 https://rinkeby.etherscan.io/address/#code

contract_bytecode.go

首先創建一個ERC20智能合約interface。 這只是與您可以調用的函數的函數定義的契約。

然後將interface智能合約編譯為JSON ABI,並使用 abigen 從ABI創建Go包。

假設我們已經像往常一樣設置了以太坊客戶端,我們現在可以將新的 token 包導入我們的應用程序並實例化它。這個例子里我們用 Golem 代幣的地址.

我們現在可以調用任何ERC20的方法。 例如,我們可以查詢用戶的代幣余額。

我們還可以讀ERC20智能合約的公共變數。

我們可以做一些簡單的數學運算將余額轉換為可讀的十進制格式。

同樣的信息也可以在etherscan上查詢: https://etherscan.io/token/?a=

Commands

erc20.sol

contract_read_erc20.go

solc version used for these examples

閱讀全文

與以太坊能用ssm框架嗎相關的資料

熱點內容
關於數字貨幣流動的背景 瀏覽:233
trx虛擬貨幣預計會漲到多少 瀏覽:266
囤萊特幣還是以太坊 瀏覽:968
以太坊啥時候開始的 瀏覽:362
比特幣從一萬漲到一萬五 瀏覽:810
做虛擬貨幣的人都瘋狂了 瀏覽:992
比特幣最貴價格多少錢一個 瀏覽:330
深圳數字貨幣在哪裡申請 瀏覽:162
比特幣最早在中國的體現 瀏覽:410
比特幣美國情報局 瀏覽:475
怎樣注銷數字貨幣賬戶 瀏覽:415
被騙充值花椒虛擬貨幣 瀏覽:681
虛擬貨幣拉人套路 瀏覽:648
比特幣礦機靜音 瀏覽:323
ht和btc有什麼不同 瀏覽:212
注冊數字貨幣不往裡打錢 瀏覽:378
除法算力怎麼寫 瀏覽:471
比特幣軟體叫什麼 瀏覽:904
河南雲享區塊鏈科技有限公司 瀏覽:976
中國幣虛擬貨幣總量 瀏覽:557