GenLayer WASI SDK WASI Interface#
Overview#
The GenLayer WASI SDK WASI interface provides blockchain-specific functionality to WebAssembly contracts through a custom WASI extension. This interface enables contracts to interact with blockchain state, execute non-deterministic operations, and participate in consensus mechanisms while maintaining security and isolation.
Interface Design#
Throughput-heavy operations are exposed as regular wasm functions.
Others functions are hidden behind gl_call function,
which accepts Calldata Encoded message and returns an error code.
Interface Definition#
#include <stdint.h>
static const uint32_t error_success = 0
static const uint32_t error_overflow = 1
static const uint32_t error_inval = 2
static const uint32_t error_fault = 3
static const uint32_t error_ilseq = 4
static const uint32_t error_io = 5
static const uint32_t error_forbidden = 6
static const uint32_t error_inbalance = 7
__attribute__((import_module("genlayer_sdk"))) uint32_t
storage_read(char const* slot, uint32_t index, char* buf, uint32_t buf_len);
__attribute__((import_module("genlayer_sdk"))) uint32_t
storage_write(
char const* slot,
int32_t index,
char const* buf,
uint32_t buf_len
);
__attribute__((import_module("genlayer_sdk"))) uint32_t
get_balance(char const* address, char* result);
__attribute__((import_module("genlayer_sdk"))) uint32_t
get_self_balance(char* result);
__attribute__((import_module("genlayer_sdk"))) uint32_t
gl_call(char const* request, uint32_t request_len, uint32_t* result_fd);
Backwards Compatibility#
Passing invalid request to gl_call results in error_inval.
Passing data that turned out to be compatible with future version
is filtered out by version limitation. And will result in error_inval
if method wasn’t available at given version
- Functions
gl_callMessagesEthSendMessageEthCallMessageCallContractMessagePostMessageMessageDeployContractMessageRunNondetMessageSandboxMessageWebRenderMessageWebRequestMessageExecPromptMessageExecPromptTemplateMessageEmitEventMessageRollbackMessageUserErrorMessageReturnMessageTrace.MessageMessageTrace.RuntimeMicroSecSub-Message
- Response Schemas