怎么編寫區(qū)塊鏈智能合約hello

這篇文章主要介紹“怎么編寫區(qū)塊鏈智能合約hello”的相關(guān)知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“怎么編寫區(qū)塊鏈智能合約hello”文章能幫助大家解決問題。

成都創(chuàng)新互聯(lián)基于成都重慶香港及美國等地區(qū)分布式IDC機房數(shù)據(jù)中心構(gòu)建的電信大帶寬,聯(lián)通大帶寬,移動大帶寬,多線BGP大帶寬租用,是為眾多客戶提供專業(yè)服務(wù)器托管報價,主機托管價格性價比高,為金融證券行業(yè)德陽服務(wù)器托管,ai人工智能服務(wù)器托管提供bgp線路100M獨享,G口帶寬及機柜租用的專業(yè)成都idc公司。

在我傾聽Bettina Warburg的演講之后,我對去中心化經(jīng)濟(dApps)的概念著迷。傳統(tǒng)的Web應(yīng)用程序是:

  • 前端→后端→數(shù)據(jù)庫

相比之下,dApp網(wǎng)站是:

  • 前端→智能合約→區(qū)塊鏈

例如,當(dāng)你進入電子銀行時,網(wǎng)頁將調(diào)用后端代碼來獲取你的個人數(shù)據(jù)并將其顯示在頁面上。后端代碼在集中式服務(wù)器上運行。

與傳統(tǒng)方式不同,dApps在去中心化的P2P網(wǎng)絡(luò)及區(qū)塊鏈(Blockchain)上運行后端代碼智能合約(smart contract)。

為什么區(qū)塊鏈如此熱?

區(qū)塊鏈是支撐數(shù)字貨幣比特幣的技術(shù),但它具有更廣泛的應(yīng)用,并且正在越來越多的領(lǐng)域?qū)崿F(xiàn)商業(yè)化。它引起了對科技界及其他人的濃厚興趣,因為它在金融服務(wù),公共部門和其他領(lǐng)域開辟了新的可能性。 ——THOUGHT LEADERSHIP Nov 2017

什么是EOSIO區(qū)塊鏈?

EOSIO宣傳為dApp的操作系統(tǒng)。它是從頭開始構(gòu)建的,每秒執(zhí)行數(shù)百萬次交易(與目前最大的區(qū)塊鏈網(wǎng)絡(luò)相比:以太網(wǎng)每秒只有15次交易),這使其更適合復(fù)雜的dapp生態(tài)系統(tǒng)和去中心化,貨幣化的經(jīng)濟。

這個博客涵蓋了什么?

在本博客中,我將展示如何設(shè)置EOSIO區(qū)塊鏈并開發(fā)智能合約。這是本系列的第1部分。下面逐步演示了EOSIO安裝以及我如何設(shè)置錢包,帳戶和代幣。讓我們開始吧。

一個干凈的虛擬機

為了避免與現(xiàn)有軟件發(fā)生沖突,我為這個實驗準備了一個干凈的虛擬機。我正在使用Linux KVM虛擬化基礎(chǔ)架構(gòu)(KVM比Virtualbox快得多,它只比裸機差2%)。我為VM分配了以下配置:

  • 8 GB RAM,4個vCPU

  • 30 GB磁盤空間

  • Ubuntu 17.10 desktop

1.下載EOSIO

安裝操作系統(tǒng)后,我在終端中執(zhí)行以下操作:

$ sudo apt install git-core

$ git clone https://github.com/EOSIO/eos --recursive

$ cd eos
$ git submodule update --init --recursive

$ ./eosio_build.sh

$ export PATH=${HOME}/opt/MongoDB/bin:$PATH
$ ~/opt/mongodb/bin/mongod -f ~/opt/mongodb/mongod.conf &
$ cd ~/eos/build: make test

$ sudo make install
2.啟動服務(wù)器

此時安裝了EOSIO,我輸入以下命令來啟動服務(wù)器:

$ cd ~/eos/build/programs/keosd
$ keosd --http-server-address=localhost:8899

打開一個新的命令行客戶端:

$ cd ~/eos/build/programs/nodeos
$ nodeos -e -p eosio --contracts-console --plugin eosio::chain_api_plugin --plugin eosio::history_api_plugin --plugin eosio::wallet_api_plugin

再打開一個新的命令行客戶端:

$ alias cleos='~/eos/build/programs/cleos/cleos --wallet-url=http://localhost:8899'
3.創(chuàng)建錢包,密鑰對,帳戶和代幣

要在區(qū)塊鏈中存儲信息,我們需要一個用于標識數(shù)據(jù)和錢包的帳戶來保護用于簽署交易的密鑰。請參閱此處了解EOSIO帳戶和錢包概念概述

我執(zhí)行了以下操作:

$ cd ~/eos
$ cleos wallet create

將屏幕中的密碼記錄下來備用。

$ cleos wallet key

將屏幕中private1和public2的密鑰對值記錄下來備用。

$ cleos wallet key

再來一組private2和public2的密鑰對值記錄下來備用。

$ cleos wallet import ${private_key_1}
$ cleos wallet import ${private_key_2}
$ cleos wallet keys

通過私鑰private1和private2將密鑰導(dǎo)入錢包后你應(yīng)該可以在屏幕中看到錢包中顯示2個公鑰的值。

$ cleos create account eosio myaccount ${public_key_1} ${public_key_2}

執(zhí)行上面的命令,你應(yīng)該發(fā)現(xiàn)有錯誤信息。意思是說你的錢包沒有解鎖。

$ find ~ -name config.ini 
$ nano ~/.local/share/eosio/nodes/config/config.ini

config.ini可能位于其他平臺的另一個目錄中,在config.ini中看到配置項signature-provider =*******,將該值的私鑰導(dǎo)入錢包中:

$ cleos wallet import ${private_key_signature-provider}
$ cleos wallet keys

這時你應(yīng)該可以在錢包里看到3個公鑰。

$ cleos create account eosio myaccount ${public_key_1} ${public_key_2}

賬號會被成功建立,我們再來建幾個賬號。

$ cleos create account eosio user ${public_key_1} ${public_key_2}
$ cleos create account eosio tester ${public_key_1} ${public_key_2}
$ cleos create account eosio eosio.token ${public_key_1} ${public_key_2}

eosio.token賬號上創(chuàng)建合約。

$ cleos set contract eosio.token ~/eos/build/contracts/eosio.token -p eosio.token

將合約推送到區(qū)塊鏈:

$ cleos push action eosio.token create '{"issuer":"eosio", "maximum_supply":"1000000000.0000 SYS"}' -p eosio.token

做些單一操作測試,創(chuàng)建賬號,發(fā)代幣,轉(zhuǎn)賬:

$ cleos create account eosio user ${public_key_1} ${public_key_2}
$ cleos push action eosio.token issue '[ "user", "100.0000 SYS", "memo" ]' -p eosio
$ cleos push action eosio.token transfer '[ "user", "tester", "1.0000 SYS", "m" ]' -p user

建一個exchange賬號,并建個exchange合約,合約代碼在contracts/下,主要是創(chuàng)建和交易貨幣的功能:

$ cleos create account eosio exchange ${public_key_1} ${public_key_2}
$ cleos set contract exchange ~/eos/build/contracts/exchange -p exchange

建一個eosio.msig,建一個eosio.msig合約,合約代碼在contracts/下,主要是允許多方異步簽署單個交易:

$ cleos create account eosio eosio.msig ${public_key_1} ${public_key_2}
$ cleos set contract eosio.msig ~/eos/build/contracts/eosio.msig -p eosio.msig

備份錢包:

$ mkdir backup-my-wallet
$ cp -R ~/eosio-wallet ./backup-my-wallet/
4.試著編寫智能合約hello

EOSIO Smart Contract是一個在區(qū)塊鏈中執(zhí)行的C ++程序。 請參閱文檔此處了解。

EOSIO在contracts/目錄中提供了幾個demo合約,我直接用了hello合約hello.cpp:

#include <eosiolib/eosio.hpp>
#include <eosiolib/print.hpp>
using namespace eosio;

class hello : public eosio::contract {
  public:
      using contract::contract;

      /// @abi action 
      void hi( account_name user ) {
         print( "Hello, ", name{user} );
      }
};

EOSIO_ABI( hello, (hi) )

進行測試如下:

$ cd ~/eos/contracts/hello
$ eosiocpp -o hello.wast hello.cpp
$ eosiocpp -g hello.abi hello.cpp

創(chuàng)建賬號:

$ cleos create account eosio hello.code ${public_key_1} ${public_key_2}

創(chuàng)建合約:

$ cleos set contract hello.code ../hello -p hello.code

推送合約:

$ cleos push action hello.code hi '["user"]' -p user

修改hello.cpp,在print( "Hello, ", name{user} );上面加上一句require_auth(user)。

編譯合約,更新合約,推送合約:

$ eosiocpp -o hello.wast hello.cpp
$ cleos set contract hello.code ../hello -p hello.code
$ cleos push action hello.code hi '["tester"]' -p user

應(yīng)該有個錯誤信息,我們把推送命令修改一下:

$ cleos push action hello.code hi '["tester"]' -p tester

這回應(yīng)該沒問題了。

$ pkill keosd && pkill nodeos

關(guān)掉服務(wù)進程。

關(guān)于“怎么編寫區(qū)塊鏈智能合約hello”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,小編每天都會為大家更新不同的知識點。

當(dāng)前題目:怎么編寫區(qū)塊鏈智能合約hello
分享路徑:http://bm7419.com/article2/psogoc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)手機網(wǎng)站建設(shè)、網(wǎng)站設(shè)計公司、網(wǎng)站維護關(guān)鍵詞優(yōu)化、Google

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名