精品专区-精品自拍9-精品自拍三级乱伦-精品自拍视频-精品自拍视频曝光-精品自拍小视频

網站建設資訊

NEWS

網站建設資訊

EOS智能合約怎么實現

本篇內容介紹了“EOS智能合約怎么實現”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

10年積累的成都網站設計、做網站經驗,可以快速應對客戶對網站的新想法和需求。提供各種問題對應的解決方案。讓選擇我們的客戶得到更好、更有力的網絡服務。我雖然不認識你,你也不認識我。但先做網站設計后付款的網站建設流程,更有惠濟免費網站建設讓你可以放心的選擇與我們合作。

隨著對EOS的所有興奮而來的,對于大多數希望參與其中的開發人員仍然充滿挑戰的領域是開始使用智能合約。新開發人員通常需要克服兩個障礙:獲取工具和設置,并了解如何編寫智能合約本身。

EOS智能合約是用C++編寫的,并編譯成Web Assembly。Dan Larimer選擇C++來利用其類型和模板系統,這使得更安全的合約,并補充說,因為智能合約的運行時間很短,大多數內存問題都會消失。

配置

使用EOS的部分挑戰是設置本地區塊鏈。幸運的是,EOS為設置本地EOS環境提供了一些基礎。對于本指南,我們將使用EOSIO Dawn 3.0。

該指南的摘要可以壓縮為幾個關鍵命令:

$ git clone https://github.com/EOSIO/eos --recursive
$ cd eos
$ ./eosio_build.sh
$ cd build && make install
$ cd programs/nodeos
$ ./nodeos -e -p eosio --plugin eosio::wallet_api_plugin --plugin eosio::chain_api_plugin --plugin eosio::account_history_api_plugin --access-control-allow-origin=*

安裝需要一些時間,但很簡單。一旦在本地啟動并運行本地EOS區塊鏈,就可以開始了工作了。在整個指南中,我們將引用一些實用程序,如cleoseosiocpp。 你可以在eos/programs文件夾中找到這些內容。

建立ping智能合約

在本教程中,我們將創建和部署分布式系統的“Hello World”:ping/pong。對于沒有經驗的人,我們將向服務器發送一個“ping”命令,它將以“pong”響應。 智能合約由以下幾個部分組成:C++代碼,ABI(應用程序二進制接口)和基于C++代碼的WAST(Web程序集文本文件)。這是看起來像:

EOS智能合約怎么實現

實現ping

在我們完成工具環境設置之后,讓我們進入合約!要編寫ping智能合約,我們只需要一個實現一個操作的合約:ping。所有這些方法需要做的就是打印“Pong”作為響應。

在contract中創建一個名為ping的文件夾,并在ping/ping.cpp文件中創建一個文件:

#include 
#include 

class ping_contract : public eosio::contract {
  public:
      using eosio::contract::contract;
      void ping(account_name receiver) {
         eosio::print("Pong");
      }
};

EOSIO_ABI( ping_contract, (ping) )

這里有一個簡單的小例子,你可以測試,以便更熟悉。讓我們分解這里發生的事情:

  • 我們包含一些定義來寫我們的合同。

  • 我們創建了一個繼承自eos::contract的新合約類。

  • 我們創建了一個打印“Pong”的方法。

  • 最后一行是最近添加的宏,它通過基于我們傳遞給第二個參數的方法生成一個來節省我們維護自己的手寫ABI的工作量。

構建合約

EOS塊生成器在執行智能合約時不運行C++代碼,他們期望web-assembly。EOS提供了一個名為eosiocpp的工具,用于將C++代碼轉換為Web Assembly Text。我們現在就這樣做eosiocpp -o ping.wast ping.cpp。這一步將產生一些警告,但我們現在可以忽略這些警告。

接下來,我們需要應用程序二進制接口。基本上,你的智能合約的ABI將描述方法及其相應的簽名。由于我們在文件的末尾添加了EOSIO_ABI宏,而不手動編寫,我們可以使用以下命令生成它:eosiocpp -g ping.abi ping.cpp

此時,您的文件夾應如下所示:

├── ping.abi
├── ping.cpp
└── ping.wast

部署到本地網絡

現在我們擁有了智能合約所需的所有資源,讓我們來部署它。確保你有一個錢包創建了cleos wallet create并確保它通過運行cleos wallet unlock并在提示時鍵入你的錢包密碼來解鎖。我們將在另一個帳戶下部署我們的智能合約。

為此,我們需要創建一個新的密鑰對,讓我們通過運行:cleos create key來實現。這將為你生成隨機的公鑰和私鑰。在本教程的其余部分中,請務必使用你剛剛收到的值替換文中的[public_key]/[private_key]。

將私鑰導入當前未鎖定的帳戶錢包:cleos wallet import [private_key],使用公鑰設置合約帳戶:cleos create account eosio ping.ctr [owner_key:public_key] [active_key:public_key]

將合約與新創建的帳戶鏈接,ping.ctr ../ping -p ping.ctr

與ping交互

一旦部署了新合約,就可以與它進行交互了!讓我們使用相同的密鑰創建一個測試人員帳戶來運行交易:cleos create account eosio tester [public_key] [public_key]

現在我們可以在命令行上測試它:

$ cleos push action ping.ctr ping '["tester"]' -p tester
executed transaction: e89ebeaad8f3623e42d966f62d4d0adbf6a7412b6bb4d7be61f04a22d3cd485e  232 bytes  102400 cycles
#  ping.ctr <= ping.ctr::ping           {"account":"tester"}
>> Received ping

應該可以了!

這對我們的程序員來說是令人興奮的,但是大多數用戶都不會設置他們的命令行來與你的智能合約進行交互。因此,讓我們將這種互動帶到他們更熟悉的界面:他們的瀏覽器。

通過瀏覽器進行交互

要從前端與EOS交互,我們將使用EOS.js. 由于我們在EOS支持上使用dawn3,我們需要確保在安裝時使用dawn3分支:npm install eosjs @ dawn3。

我們從配置開始:

Eos = require('eosjs')

eos = EOS.Localnet({
  keyProvider: ['{replace_with_your_private_key}'],
  httpEndpoint: 'http://127.0.0.1:8888'
})

配置完成后,我們必須指定一些細節:

eos.contract('ping.ctr').then((contract) => {
  contract.ping("tester", { authorization: ['tester'] }).then((res) => {
    console.log(res)
  })
})

請注意ping.ctr,它與我們之前部署的合約的名稱相匹配。一旦我們獲取了合約接口(或ABI),我們就可以與它進行交互,就好像它是本機Javascript一樣。合約返回一個promise,其中包含resolve函數中包含的交易詳細信息。這是從前端與我們的ping智能合約進行交互的核心思想。

“EOS智能合約怎么實現”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注創新互聯網站,小編將為大家輸出更多高質量的實用文章!


網站標題:EOS智能合約怎么實現
鏈接分享:http://m.jcarcd.cn/article/iicips.html
主站蜘蛛池模板: 97精品在线 | 日本在线www | 日韩经典一区二区 | 苹果成人影院在线 | 国产精品美女 | 91小视频网站| 欧美日韩一区二区 | 欧美最猛性xxxx | 日韩精品欧美一区喷 | 国产福利电影网 | 国产激情a∨ | 成人亚欧网站在 | 最新免费高清电影 | 国产手机视频在线 | 日本偷窥| 国产精品先锋 | 欧美综合在线视频 | 日韩专区中文字幕 | 国产精品玖玖 | 日本好好热 | 区三区国产高清视频 | 国产在线综合网站 | 日韩中文精品视频 | 日韩四级片在线看 | 嗨嗨影院伦理电影 | 国产激情影视在线 | 日本日韩欧美 | 91蜜桃传媒精品 | 国产毛多| 日本在线看免费 | 每日福利天天更新 | 欧美日韩手机看片 | 国产精品中文久 | 日韩精品 | 国产丝袜视频在线 | 97碰碰| 精品国产香 | 欧美日韩中文 | 国产偷精品免费观看 | 91福利色资源 | 日韩精选 |