EOS DAWN 3.0智能合约语法改进

in #eos6 years ago

旧版本智能合约

extern "C" {
    void apply( uint64_t code, uint64_t action ) {
       eosio::print( "Hello World: ", eosio::name(code), "->", eosio::name(action), "\n" );
    }

}

新版本智能合约

#include <eosiolib/eosio.hpp>
#include <eosiolib/print.hpp>
using namespace eosio;

class hello : public eosio::contract {
  public:
      using contract::contract;

      /// @abi action 
      void hi( account_name user ) {
         print( "Hello, ", name{user} );
      }
};

EOSIO_ABI( hello, (hi) )

不同点在于:

  1. 编程方式:

    旧版本采用类C和C++的混合编程方式,新版本则是使用更纯粹的C++面对对象编程方式,合约继承eosio::contract基类。

  2. Action定义

    旧版本合约的action通过apply方法的参数传递到具体实现中,而新版本则是通过方法名称来对应相应action,代码中的hi()方法就是一个action,执行下这个action

    $ cleos push action testuser hi '["user"]' -p user
    >> Hello, user
    

Coin Marketplace

STEEM 0.20
TRX 0.16
JST 0.030
BTC 65970.26
ETH 2696.32
USDT 1.00
SBD 2.88