How to build a smart contract|编写与编译合约¶
本文的节点、CLI 与 RPC 目标版本为 FullOn Core v0.9.2。合约、CDT 和钱包各有独立版本;其已注明的核验范围不因 Core 升级自动改变。详见版本基线与升级说明。
准备工具¶
从官方 CDT 仓库与 releases选择与目标网络兼容的工具链。安装方式依平台和版本而异;本文核验本机 cdt-cpp --version 输出为 0.9.0,不代表推荐所有网络使用该版本。
最小 C++ 合约¶
创建 hello.cpp:
#include <eosio/eosio.hpp>
class [[eosio::contract("hello")]] hello : public eosio::contract {
public:
using eosio::contract::contract;
[[eosio::action]]
void hi(eosio::name user) {
eosio::require_auth(user);
eosio::print("Hello, ", user);
}
};
require_auth(user) 要求调用者满足该账户授权。此示例只打印文本,不持久化数据,也不转移资产。
编译¶
检查生成 build/hello.wasm 和 build/hello.abi,ABI 中应存在 hi 动作和 user 参数。保持编译器版本、源码提交和构建命令可追溯。
测试要点¶
在隔离链或测试网验证有效授权成功、缺少授权失败、ABI 参数正确。较复杂合约还应验证表迁移、整数边界、资源用量、重复调用和外部通知。仅编译通过不等于安全或可上线。
来源:CDT、其 examples/hello 与本地工具链编译核验。