EOS區塊鏈技術開發(二)智慧型合約

2021-09-12 11:24:29 字數 1349 閱讀 7426

強烈建議直接去看eosio官網上的教程:

不要看我的??博文了,以下博文就是我當時隨便寫寫的,現在也沒有什麼時間詳細修改。如果有問題可以提問。

注:由於eosio仍在不斷更新,所以以下內容的一些步驟可能會在將來某天失效。本開發手冊編寫時間是在2018.10至2018.11.可能會不斷更新。

說一下eosio軟體和eos區塊鏈的區別:就行linux原始碼和實際跑在機器上linux作業系統一樣。

搬運自eosio官網:

第乙個智慧型合約

智慧型合約就看這個**:

eosio-cpp/docs/introduction

總結一下我現在知道的關於智慧型合約編寫的內容:

智慧型合約就是乙個區塊鏈意義下的程式,放在區塊鏈節點上的**(相當於中心化伺服器中的程式)。這個程式可以說是乙個cpp檔案,帶有乙個類,這個類必須繼承contract類。在這個類中寫成員變數和成員函式。部分函式會是action。要成為乙個action,需要定義巨集,比如:

eosio_abi( hello, (hi))
於是最後最後可以被呼叫。

這個巨集起的作用是dispatching,但是也有其他dispatching的方法。

除此之外,這個類中還應該有table類的結構和相關**用於資料持久化技術。

智慧型合約寫好以後,首先需要編譯,使用命令:

eosio-cpp -o hello.wasm hello.cpp –abigen
就可以編譯該檔案為abi檔案+wasm檔案。其中abi檔案是類json的傳遞資料結構、控制資訊的檔案。但是有的時候abi檔案會出錯,所以需要手動改。abi檔案十分重要,從智慧型合約最後一定要寫abi的巨集就知道,abi檔案有點類似於血管,流通在整個智慧型合約體系中。

成功得到abi和wasm檔案後,就可以部署智慧型合約了:

cleos set contract hello contracts_dir/hello -p hello@active
你必須要把合約和乙個account繫結。所以通常你會為每個智慧型合約建立乙個賬號。

最後,當合約部署完畢,你就可以使用它了。比如:

cleos push action hello hi '["bob"]' -p bob@active
eosio好像不是用資料庫來儲存資料的,而是用自己建立乙個結構體,並且自定義一些函式來完成資料的update /insert等操作,這種資料結構(schema)成為multi-index(說實話只要只有多屬性的資料肯定是多索引的吧…)。這或許是因為eos體系中的賬戶資訊等都是存在記憶體中的原因吧。

config.ini的路徑前面說過了:

區塊鏈技術開發

鏈客,有問必答!區塊鏈技術最初是由一位化名中本聰的人為位元幣 一種數字貨幣 而設計出的一種特殊的資料庫技術,它基於密碼學中的橢圓曲線數字簽名演算法 ecdsa 來實現去中心化的p2p系統設計。但區塊鏈的作用不僅僅侷限在位元幣上。現在,人們在使用 區塊鏈 這個詞時,有的時候是指資料結構,有時是指資料庫...

區塊鏈技術開發

從位元幣誕生到今天區塊鏈百花齊放 風靡全球,區塊鏈走過了它的第乙個十年。區塊鏈應用結合實體落地,為社會解決眾多網際網路難題,伴隨著區塊鏈的腳步不斷更新迭代,區塊鏈技術在網際網路領域發揮舉足輕重的作用。區塊鏈行業已經在慢慢走出混沌時期,越來越多合法 合規的產品和服務在誕生,區塊鏈為社會創造的真正價值日...

鏈客區塊鏈技術開發

我有個假設,如果交易會返還,惡意節點怎麼才能實現雙花,兩個交易不能是乙個nonce值。答 一條鏈的賬本是不會有雙花現象的。首先,所有交易都是按順序執行的,也就意味著賬戶餘額也都是按順序加減的。就像單執行緒。其次,如果有節點收到廣播訊息較晚,可以在兩個還沒同步的節點實現雙花。但是這種現象也會隨著時間推...