第一源码网 ??【刘文彬】【精解】EOS标准货币体系与源码实现分析(5)

电脑杂谈  发布时间:2018-12-14 00:14:01  来源:网络整理

特殊命令有“/target”“/focus”“/startattack”“/petattack”,这几个命令也是安全化命令,但是其特殊的地方是:当其[target=xxx]中的xxx必须为其特殊单位时才能正常工作,否则直接忽视掉[target=]以及其后的参数,而直接把xxx做为参数处理。

因为“focus”不是“/target”的特殊单位,所以“/traget”会直接忽视掉“[target=]”与其后的参数“party1”,而直接把“focus”作为了参数。

targetincludedirectories,include目录添加到target。

exchange.abi

abi文件是通过eosiocpp工具通过exchange.cpp生成的,具体可参照《EOS智能合约演练》。

exchange_accounts

从这里开始我们来详细分析exchange合约的源码内容,exchange.cpp需要引用exchangeaccounts, exchangestate以及marketstate这三个库。其中marketstate又依赖两外两个库,因此我们先从比较独立的exchange_accounts入手。

exchange_accounts.hpp

`
pragma once
include <eosiolib/asset.hpp>
include <eosiolib/multi_index.hpp>
namespace eosio {
using boost::container::flatmap;// 相当于java中的import,下面可以直接使用flatmap方法。
/**
    *  每个用户都有他们自己的账户,并且这个账户是带有exchange合约的。这可以让他们保持跟踪一个用户是如何抵押各种扩展资产类型的。假定存储一个独立的flatmap,包含一个特定用户的所有余额,这个用户比起打破使用扩展标识来排序的多重索引表,将更加实际的
    */
   struct exaccount {
      accountname                         owner;// uint64t类型,64位无符号整型
      flatmap<extendedsymbol, int64t>   balances;// extended_symbol是asset.hpp中定义的
  uint64_t primary_key() const { return owner; }// 结构体包含一个primary_key方法是不可变的,const,实现也有了,直接是返回owner。
  EOSLIB_SERIALIZE( exaccount, (owner)(balances) )// EOSLIB_SERIALIZE这是一种自定义的模板,是一种反射机制,可以给结构体赋值,第一个参数为结构体名字,后面的参数用括号分别括起来,传入当前两个成员变量。
};
typedef eosio::multiindex<N(exaccounts), exaccount> exaccounts;// multiindex是一个类,这行定义了一个变量exaccounts,它的类型是一种多重索引。
/**      提供一个抽象接口,为用户的余额排序。这个类缓存了数据表,以提供高效地多重访问。    /
   struct exchangeaccounts {
      exchangeaccounts( accountname code ):this_contract(code){}// 给私有成员赋值
  void adjust_balance( account_name owner, extended_asset delta, const string& reason = string() );//调整余额,传入owner、扩展资产,reason。exchange\_accounts.cpp会实现该函数。 
  private: 
     account_name _this_contract;// 私有成员 \_this\_contract
     /**
      *  保留一个缓存,用来存储我们访问的所有用户表
      */
     flat_map<account_name, exaccounts> exaccounts_cache;// flat_map类型的缓存exaccounts_cache,存储的是账户名和以上结构体exaccounts。
};
} /// namespace eosio`


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-90843-5.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 刘斌
      刘斌

      芝麻粉本身就是熟了的

    热点图片
    拼命载入中...