美文网首页
Eos上的Eos原生代币不见了

Eos上的Eos原生代币不见了

作者: learnforever01 | 来源:发表于2018-03-21 22:04 被阅读191次

    在之前的代码中,发送Eos代码是通过下面的函数进行的:

    libraries/native_contract/eos_contract.cpp
    
    void apply_eos_transfer(apply_context& context) {
       auto transfer = context.msg.as<types::transfer>();
    
       try {
          EOS_ASSERT(transfer.amount > 0, message_validate_exception, "Must transfer a positive amount");
          context.require_scope(transfer.to);
          context.require_scope(transfer.from);
    
          context.require_authorization(transfer.from);
    
          context.require_recipient(transfer.to);
          context.require_recipient(transfer.from);
       } FC_CAPTURE_AND_RETHROW((transfer))
    
    
       try {
          auto& db = context.mutable_db;
          const auto& from = db.get<balance_object, by_owner_name>(transfer.from);
    
          EOS_ASSERT(from.balance >= transfer.amount, message_precondition_exception, "Insufficient Funds",
                     ("from.balance",from.balance)("transfer.amount",transfer.amount));
    
          const auto& to = db.get<balance_object, by_owner_name>(transfer.to);
          db.modify(from, [&](balance_object& a) {
             a.balance -= share_type(transfer.amount);
          });
          db.modify(to, [&](balance_object& a) {
             a.balance += share_type(transfer.amount);
          });
       } FC_CAPTURE_AND_RETHROW( (transfer) ) 
    }
    

    新的代码中,native contract的实现已经移到下面这个文件
    libraries/chain/contracts/eosio_contract.cpp
    查看这个文件时,会发现apply_eos_transfer函数已经不见了。也就意味着,在native代码中,已经没有创建一个叫Eos的代币了,也就是没有所谓的native token了。这和以太坊已经不同了,以太坊上还是会创建一个叫Eth的原生代币的,代币的传输都是在区块链代码里实现,而不是智能合约代码里实现。那么Eos链上的代币在什么地方呢?答案是通过智能合约来发行一个叫Eos的代币。在libraries/contracts/currency目录下已经有相关的实现了。区块链的魔力之处是一切都基于共识,只要大家都认,它就是。完全不需要通过某个权威的组织或者个人去背书。区块链上信心比什么都重要,而人性难测,再加上目前区块链的体量还很小,这也是造成区块链的市值波动会很剧烈的原因吧。

    开发Eos的公司block.one已经明确表示只负责开发软件了,其它的一切都交给社区。在链上线后,block.one再认定哪条链才是“真正”的Eos链并会对其进行维护。美国的法律还是相当严格的,这样block.one也就规避了违法发行证券的风险,block.one的CEO还是很明智的。

    所以到时,一定会有组织或者个人在名为eosio的帐户上通过智能合约发布一个叫EOS的代币。从实现方式上来讲,这个Eos已经和其它代币没有差别了。用户也不会在乎其中的技术实现的区别。之所以采用这种方式,原因可能是为了减少代码的复杂度。既然这个Eos和其它代币已经没有了区别,那么操作上就可以统一起来。这对于例如实现去中心化的交易所来说,可以减少一些工作量。另外,由于Eos的DPOS还是有挖矿的,每年增发5%。所以挖矿的收益发放的实现肯定也会有所区别了,这需要通过智能合约来配合实现。

    相关文章

      网友评论

          本文标题:Eos上的Eos原生代币不见了

          本文链接:https://www.haomeiwen.com/subject/femnqftx.html