EOS DAWN 3.0智能合约语法改进
旧版本智能合约
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) )
不同点在于:
编程方式:
旧版本采用
类C和C++的混合编程方式
,新版本则是使用更纯粹的C++面对对象编程方式
,合约继承eosio::contract
基类。Action定义
旧版本合约的
action
通过apply
方法的参数传递到具体实现中,而新版本则是通过方法名称来对应相应action
,代码中的hi()
方法就是一个action,执行下这个action
:$ cleos push action testuser hi '["user"]' -p user >> Hello, user