Hello world

编译项目

hello 内容
include/hello.hpp

#include <wasm.hpp>
using namespace wasm;
using namespace std;

CONTRACT hello : public contract {
   public:
      using contract::contract;

      ACTION hi( name nm );

};

src/hello.cpp

#include <hello.hpp>

ACTION hello::hi( name nm ) {
   print_f("Name : %\n", nm);
}

WASM_DISPATCH( hello, (hi))

文件层次和目录请参考wicc-wasm-cdt/examples

input
在编译好WASM的环境中输入以下内容:

$ cd examples/hello
$ mkdir build
$ cd build
$ cmake ..
$ make

result

[100%] Built target hello_project
➜  build git:(master) ll
total 56
-rw-r--r--   1 hpy  staff    14K  7  6 16:46 CMakeCache.txt
drwxr-xr-x  14 hpy  staff   448B  7  6 16:46 CMakeFiles
-rw-r--r--   1 hpy  staff   4.6K  7  6 16:46 Makefile
-rw-r--r--   1 hpy  staff   1.4K  7  6 16:46 cmake_install.cmake
drwxr-xr-x   8 hpy  staff   256B  7  6 16:46 hello
drwxr-xr-x   4 hpy  staff   128B  7  6 16:46 hello_project-prefix
➜  build git:(master) cd hello
➜  hello git:(master) ll
total 72
-rw-r--r--   1 hpy  staff    14K  7  6 16:46 CMakeCache.txt
drwxr-xr-x  13 hpy  staff   416B  7  6 16:46 CMakeFiles
-rw-r--r--   1 hpy  staff   5.2K  7  6 16:46 Makefile
-rw-r--r--   1 hpy  staff   1.4K  7  6 16:46 cmake_install.cmake
-rw-r--r--   1 hpy  staff   1.0K  7  6 16:46 hello.abi
-rwxr-xr-x   1 hpy  staff   955B  7  6 16:46 hello.wasm

如果存在hello.abi和hello.wasm文件,则编译成功。将其拷贝到需要的地方去吧。



以下为合约部署、调用的简单流程,接口详情可查看Smart Contract-wasm

部署合约


使用接口:submitsetcodetx

// Request
coind submitsetcodetx 0-2 /tmp/wasm/hello/hello.wasm /tmp/wasm/hello/hello.abi


// Response
"txid" : "3e5f9f31cdcf32ff93f4f8741b1fc467721b93a0282e7f5bea758096ffb49068"

获取智能合约的regid


使用接口:getcontractregid

// Request
coind getcontractregid "3e5f9f31cdcf32ff93f4f8741b1fc467721b93a0282e7f5bea758096ffb49068"


// Response
{
    "regid" : "9925-2",
    "regid_hex" : "c52600000200"
}

调用合约


使用接口:submittx

// Request
coind submittx 0-2 9925-2 hi '["kj"]'


// Response
{
    "txid" : "29a779176018e4f1bb8aaf58d89aa92d73bc0e73e62c88470c6c7db6664cc8e4",
    "tx_trace" : {
        "trx_id" : "29a779176018e4f1bb8aaf58d89aa92d73bc0e73e62c88470c6c7db6664cc8e4",
        "elapsed" : 262,
        "minimum_fee" : 100000,
        "traces" : [
            {
                "trx_id" : "29a779176018e4f1bb8aaf58d89aa92d73bc0e73e62c88470c6c7db6664cc8e4",
                "receiver" : "9925-2",
                "trx" : {
                    "contract" : "9925-2",
                    "action" : "hi",
                    "authorization" : [
                        {
                            "account" : "0-2",
                            "permission" : "wasmio_owner"
                        }
                    ],
                    "data" : {
                        "nm" : "kj"
                    }
                }
            }
        ]
    }
}