C++智能合约怎么实现

发布时间:2022-01-15 14:30:28 作者:iii
来源:亿速云 阅读:312

这篇文章主要介绍“C++智能合约怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C++智能合约怎么实现”文章能帮助大家解决问题。

Ricardian Contracts是数字文档,用于定义两方或多方之间交互的条款和条件。

在20世纪90年代,伊恩·格里格(Ian Grigg)在寻找创造数字化现金的愿景的朋友之后学会了资产的数字化。Ian Grigg发现债券数字化的必要性,并试图在互联网上发行相同的债券,因为它们也是金融资产,而世界正在开始通过互联网创建业务。在努力解决问题的过程中,Ian Grigg开发了李嘉图合约。

###李嘉图合约与我们今天的智能合约有什么不同?

智能合约是机器可读的指令集,而李嘉图合约是指明智能合约所遵循的指令意图的文件。

智能合约看起来像这样:

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

上面的示例显示了为发布新token而设计的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++智能合约怎么实现

使用刻度线指定条件,使用单击按钮同意指定的条件和整个合约。

他们安全吗?

是的,由于加密签名,李嘉图合约极其安全。每个李嘉图合约文档都可通过其哈希值进行唯一标识。编辑文档很困难,一旦所有各方同意并使用私钥在其上签名,它就变得不可变。

它如何与智能合约一起使用?

我在iang.org上发现了一个不言自明的形象:

C++智能合约怎么实现

请记住:李嘉图合约首先是人类可读的,然后是机器可读的合约。

李嘉图合约的视觉表征:

C++智能合约怎么实现

开放市集合约模式的视觉表征:

C++智能合约怎么实现

谁在网络上强制执行?

EOS网络上的宪法和仲裁员!

我希望它能帮助你更好地理解李嘉图合同。谢谢你的阅读。

为什么世界需要EOS合约?

@iang在他的一篇文章中对此进行了很好的解释。假设我们有一份合约转让某些token以换取100美元。

这是智能合约:

{Alice,Bob,100,dollarsvalue,token}

dollar可能是新加坡元还是港元,计算机如何知道指定的dollar是美元以及阅读合约的人如何知道上述dollar是美元?

为了明确智能合约的意图,需要一份详细的李嘉图合约。与EOS网络一样,利益相关者同意宪法,如果他们对其他人采取行动,他们有可能通过仲裁程序。李嘉图合约有助于仲裁员和成员接受合约意图的审判。记住:不是每个人都是技术人员。

关于“C++智能合约怎么实现”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注亿速云行业资讯频道,小编每天都会为大家更新不同的知识点。

推荐阅读:
  1. solidity智能合约[56]-solc编译智能合约
  2. solidity智能合约[26]-mapping

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

c++

上一篇:c语言中如何求连续子数组的最大和

下一篇:springboot整合quartz定时任务框架的方法是什么

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》