成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

區(qū)塊鏈平臺(tái)EOSIO開(kāi)發(fā)智能合約和dapp(一)

tylin / 3607人閱讀

摘要:與傳統(tǒng)方式不同,在去中心化的網(wǎng)絡(luò)及區(qū)塊鏈上運(yùn)行后端代碼智能合約。這個(gè)博客涵蓋了什么在本博客中,我將展示如何設(shè)置區(qū)塊鏈并開(kāi)發(fā)智能合約。

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

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

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

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

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

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

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

區(qū)塊鏈?zhǔn)侵螖?shù)字貨幣比特幣的技術(shù),但它具有更廣泛的應(yīng)用,并且正在越來(lái)越多的領(lǐng)域?qū)崿F(xiàn)商業(yè)化。它引起了對(duì)科技界及其他人的濃厚興趣,因?yàn)樗诮鹑诜?wù),公共部門(mén)和其他領(lǐng)域開(kāi)辟了新的可能性。 ——THOUGHT LEADERSHIP Nov 2017

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

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

這個(gè)博客涵蓋了什么?

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

一個(gè)干凈的虛擬機(jī)

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

8 GB RAM,4個(gè)vCPU

30 GB磁盤(pán)空間

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.啟動(dòng)服務(wù)器

此時(shí)安裝了EOSIO,我輸入以下命令來(lái)啟動(dòng)服務(wù)器:

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

打開(kāi)一個(gè)新的命令行客戶端:

$ 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

再打開(kāi)一個(gè)新的命令行客戶端:

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

要在區(qū)塊鏈中存儲(chǔ)信息,我們需要一個(gè)用于標(biāo)識(shí)數(shù)據(jù)和錢(qián)包的帳戶來(lái)保護(hù)用于簽署交易的密鑰。請(qǐng)參閱此處了解EOSIO帳戶和錢(qián)包概念概述

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

$ cd ~/eos
$ cleos wallet create

將屏幕中的密碼記錄下來(lái)備用。

$ cleos wallet key

將屏幕中private1和public2的密鑰對(duì)值記錄下來(lái)備用。

$ cleos wallet key

再來(lái)一組private2和public2的密鑰對(duì)值記錄下來(lái)備用。

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

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

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

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

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

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

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

這時(shí)你應(yīng)該可以在錢(qián)包里看到3個(gè)公鑰。

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

賬號(hào)會(huì)被成功建立,我們?cè)賮?lái)建幾個(gè)賬號(hào)。

$ 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賬號(hào)上創(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

做些單一操作測(cè)試,創(chuàng)建賬號(hào),發(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

建一個(gè)exchange賬號(hào),并建個(gè)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

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

$ 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

備份錢(qián)包:

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

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

EOSIO在contracts/目錄中提供了幾個(gè)樣本合約,我直接用了hello合約hello.cpp:

#include 
#include 
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) )

進(jìn)行測(cè)試如下:

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

創(chuàng)建賬號(hào):

$ 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)該有個(gè)錯(cuò)誤信息,我們把推送命令修改一下:

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

這回應(yīng)該沒(méi)問(wèn)題了。

$ pkill keosd && pkill nodeos

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

分享一個(gè)交互式的在線編程實(shí)戰(zhàn),EOS智能合約與DApp開(kāi)發(fā)入門(mén)

EOS教程

本課程幫助你快速入門(mén)EOS區(qū)塊鏈去中心化應(yīng)用的開(kāi)發(fā),內(nèi)容涵蓋EOS工具鏈、賬戶與錢(qián)包、發(fā)行代幣、智能合約開(kāi)發(fā)與部署、使用代碼與智能合約交互等核心知識(shí)點(diǎn),最后綜合運(yùn)用各知識(shí)點(diǎn)完成一個(gè)便簽DApp的開(kāi)發(fā)。

這里是原文

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/24283.html

相關(guān)文章

  • 區(qū)塊平臺(tái)EOSIO開(kāi)發(fā)智能合約dapp(二)

    摘要:示例智能合約的目的是模擬選舉。這告訴了智能合約中處理程序的定義。接下來(lái)的任務(wù)是創(chuàng)建一個(gè)新的帳戶來(lái)保存選舉智能合約。 這是一步步的用EOSIO開(kāi)發(fā)區(qū)塊鏈DApp的第二部分,這部分將主要是為EOSIO平臺(tái)開(kāi)發(fā)智能合約。 示例智能合約的目的是模擬選舉。我創(chuàng)建了一個(gè)EOSIO用戶來(lái)托管智能合約。創(chuàng)建了兩個(gè)公民用戶來(lái)投票給候選人。投票記錄保存在EOSIO區(qū)塊鏈中。在此示例中,所有操作都在命令模式...

    cuieney 評(píng)論0 收藏0
  • EOS DApp開(kāi)發(fā)入門(mén)(二): 智能合約探究

    摘要:在看啟動(dòng)腳本輸出的時(shí)候,發(fā)現(xiàn)了這兩樣輸出設(shè)置和智能合約,以及安裝合約開(kāi)發(fā)工具。合約開(kāi)發(fā)工具是的工具鏈和一組工具,用于促進(jìn)平臺(tái)的合同編寫(xiě)。系統(tǒng)智能合約,可以進(jìn)行很多系統(tǒng)級(jí)別的操作,比如用戶投票將用戶注冊(cè)成為生產(chǎn)者。 Previously 在EOS DApp開(kāi)發(fā)入門(mén)(一)中,通過(guò)docker image的方式架起了本地的eos區(qū)塊鏈,使Note chain DApp與本地區(qū)塊鏈進(jìn)行交互,成...

    Honwhy 評(píng)論0 收藏0
  • 區(qū)塊平臺(tái)EOSIO開(kāi)發(fā)智能合約dapp(三)

    摘要:在中被大量使用以便于開(kāi)發(fā)。事實(shí)上,在中創(chuàng)建帳戶存在問(wèn)題。這種方法使我可以輕松調(diào)用智能合約。結(jié)論這就是我的區(qū)塊鏈實(shí)驗(yàn)系列的全部?jī)?nèi)容。 這是一步步的用EOSIO開(kāi)發(fā)區(qū)塊鏈DApp的第三部分,上一部分中,我為EOSIO平臺(tái)開(kāi)發(fā)了一個(gè)模擬選舉的智能合約。這部分我將開(kāi)發(fā)一個(gè)webapp,允許訪問(wèn)者投票給候選人。 以下是webapp的快速預(yù)覽: showImg(https://segmentfau...

    yiliang 評(píng)論0 收藏0
  • 區(qū)塊平臺(tái)EOSIO開(kāi)發(fā)智能合約dapp(三)

    摘要:在中被大量使用以便于開(kāi)發(fā)。事實(shí)上,在中創(chuàng)建帳戶存在問(wèn)題。這種方法使我可以輕松調(diào)用智能合約。結(jié)論這就是我的區(qū)塊鏈實(shí)驗(yàn)系列的全部?jī)?nèi)容。 這是一步步的用EOSIO開(kāi)發(fā)區(qū)塊鏈DApp的第三部分,上一部分中,我為EOSIO平臺(tái)開(kāi)發(fā)了一個(gè)模擬選舉的智能合約。這部分我將開(kāi)發(fā)一個(gè)webapp,允許訪問(wèn)者投票給候選人。 以下是webapp的快速預(yù)覽: showImg(https://segmentfau...

    CoyPan 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<