溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

C++智能合約怎么實現(xiàn)

發(fā)布時間:2022-01-15 14:30:28 來源:億速云 閱讀:305 作者:iii 欄目:互聯(lián)網(wǎng)科技

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

Ricardian Contracts是數(shù)字文檔,用于定義兩方或多方之間交互的條款和條件。

在20世紀90年代,伊恩·格里格(Ian Grigg)在尋找創(chuàng)造數(shù)字化現(xiàn)金的愿景的朋友之后學會了資產(chǎn)的數(shù)字化。Ian Grigg發(fā)現(xiàn)債券數(shù)字化的必要性,并試圖在互聯(lián)網(wǎng)上發(fā)行相同的債券,因為它們也是金融資產(chǎn),而世界正在開始通過互聯(lián)網(wǎng)創(chuàng)建業(yè)務(wù)。在努力解決問題的過程中,Ian Grigg開發(fā)了李嘉圖合約。

###李嘉圖合約與我們今天的智能合約有什么不同?

智能合約是機器可讀的指令集,而李嘉圖合約是指明智能合約所遵循的指令意圖的文件。

智能合約看起來像這樣:

 `#include <eosiolib/eosio.hpp>

class simpletoken : public eosio::contract {
   public:
      simpletoken( account_name self )
      :contract(self),_accounts( _self, _self){}

      void transfer( account_name from, account_name to, uint64_t quantity ) {
         require_auth( from );

         const auto& fromacnt = _accounts.get( from );
         eosio_assert( fromacnt.balance >= quantity, "overdrawn balance" );
         _accounts.modify( fromacnt, from, [&]( auto& a ){ a.balance -= quantity; } );

         add_balance( from, to, quantity );
      }

      void issue( account_name to, uint64_t quantity ) {
         require_auth( _self );
         add_balance( _self, to, quantity );
      }

   private:
      struct account {
         account_name owner;
         uint64_t     balance;

         uint64_t primary_key()const { return owner; }
      };

      eosio::multi_index<N(accounts), account> _accounts;

      void add_balance( account_name payer, account_name to, uint64_t q ) {
         auto toitr = _accounts.find( to );
         if( toitr == _accounts.end() ) {
           _accounts.emplace( payer, [&]( auto& a ) {
              a.owner = to;
              a.balance = q;
           });
         } else {
           _accounts.modify( toitr, 0, [&]( auto& a ) {
              a.balance += q;
              eosio_assert( a.balance >= q, "overflow detected" );
           });
         }
      }
};

EOSIO_ABI(simpletoken, (transfer)(issue) )`

上面的示例顯示了為發(fā)布新token而設(shè)計的C++智能合約。

雖然李嘉圖合約看起來像這樣:

TOKENNAME = XYZ
INFLATION = 5%
INITIALISSUE = 1,000,000,000

The Community hereby creates a currency known as {{TOKENNAME}}, possession of which is evidence of a contribution to the community. The quantity of {{TOKENNAME}} shall increase no more than INFLATION per year after the first {{INITIALISSUE}} of {{TOKENNAME}} are distributed.

李嘉圖合約前面的部分看起來像普通的軟件合同。

C++智能合約怎么實現(xiàn)

使用刻度線指定條件,使用單擊按鈕同意指定的條件和整個合約。

他們安全嗎?

是的,由于加密簽名,李嘉圖合約極其安全。每個李嘉圖合約文檔都可通過其哈希值進行唯一標識。編輯文檔很困難,一旦所有各方同意并使用私鑰在其上簽名,它就變得不可變。

它如何與智能合約一起使用?

我在iang.org上發(fā)現(xiàn)了一個不言自明的形象:

C++智能合約怎么實現(xiàn)

請記住:李嘉圖合約首先是人類可讀的,然后是機器可讀的合約。

李嘉圖合約的視覺表征:

C++智能合約怎么實現(xiàn)

開放市集合約模式的視覺表征:

C++智能合約怎么實現(xiàn)

誰在網(wǎng)絡(luò)上強制執(zhí)行?

EOS網(wǎng)絡(luò)上的憲法和仲裁員!

我希望它能幫助你更好地理解李嘉圖合同。謝謝你的閱讀。

為什么世界需要EOS合約?

@iang在他的一篇文章中對此進行了很好的解釋。假設(shè)我們有一份合約轉(zhuǎn)讓某些token以換取100美元。

這是智能合約:

{Alice,Bob,100,dollarsvalue,token}

dollar可能是新加坡元還是港元,計算機如何知道指定的dollar是美元以及閱讀合約的人如何知道上述dollar是美元?

為了明確智能合約的意圖,需要一份詳細的李嘉圖合約。與EOS網(wǎng)絡(luò)一樣,利益相關(guān)者同意憲法,如果他們對其他人采取行動,他們有可能通過仲裁程序。李嘉圖合約有助于仲裁員和成員接受合約意圖的審判。記?。翰皇敲總€人都是技術(shù)人員。

關(guān)于“C++智能合約怎么實現(xiàn)”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識,可以關(guān)注億速云行業(yè)資訊頻道,小編每天都會為大家更新不同的知識點。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

c++
AI