跳到主要内容

可执行函数

程序是 Gear 组件的主要单元。程序代码存储为不可变的 Wasm 二进制文件(blob)。 每个程序都有一个固定的内存,在消息处理之间持续存在(所谓的静态区域)。

基础结构

任何程序最多可以包含 3 个入口点,它们在程序生命周期中执行各种功能:init()handle()handle_reply()。 它们都是可选的,但任何程序都需要至少有一个方法:init()handle()

Gear 协议引入的另一个特殊系统入口点是 handle_signal()。如果有必要的通知(信号)与程序消息相关的某些事件已经发生,它允许系统与程序通信。

init()

init()方法是可选的,在程序初始化时只被调用一次。并处理传入的 init payload,如果有的话。


#[no_mangle]
extern "C" fn init() {
// execute this code during contract initialization
}

handle()

handle()方法(同样可选)将在每次程序收到传入的消息时被调用。在这种情况下,payload 将被处理。


#[no_mangle]
extern "C" fn handle() {
// execute this code during explicitly incoming message
}

handle_reply()

在 Gear 程序中对信息的回复,使用handle_reply函数进行处理。


#[no_mangle]
extern "C" fn handle_reply() {
// execute this code during handling reply on the previously sent message
}