Entry points

All entry points must be WASM exports with type (func (param) (result)). The service should use getCurrentAction to get an Action containing the arguments. The sender and method fields are both set to 0. The result (if any) should be returned with setRetval. Both the arguments and result use fracpack encoding.

Each entry point starts a fresh transaction context. Modules will be instantiated on their first use within the context.

transact::processTransaction

processTransaction applies a transaction to the chain. It should be defined as a WASM export. Only subjective services can access subjective databases. Objective databases are readable and writable.

ArgumentTypeDescription
transactionbyte arrayA packed Transaction
checkFirstAuthAndExitboolIf true, instead of applying the transaction, check the authorization of the account to be billed for this transaction. This mode must not write the database.

Any result is ignored

transact::nextTransaction

nextTransaction returns the next transaction to apply when producing a block. It should be defined as a WASM export. All services can access subjective databases. Objective databases are not writable.

The result is an Option<SignedTransaction>. An empty result indicates that no transactions are ready to apply.

http-server::serve

serve is called to handle HTTP requests from the server. It should be defined as a WASM export. All databases are readable by all services. Only fork-independent databases are writable.

ArgumentTypeDescription
socketi32The socket on which to send the response
requestHttpRequest

serve should call socketSend to send the response. To send

The socket is initially owned by the serve context. If serve returns or aborts without sending a response or yielding ownership with socketSetAutoClose, a 500 response will be returned.

http-server::recv

recv is called when a message is received on a socket. It should be defined as a WASM export. All databases are readable by all services. Only fork-independent databases are writable.

ArgumentTypeDescription
socketi32The socket that the message came from
databyte vectorThe raw bytes of the message. The interpretation depends on the type of socket.

verify

Any service that provides signature verification defines verify. It should be defined as a WASM export. The database is not accessible.

ArgumentTypeDescription
transactionHashChecksum25The hash of the transaction
claimClaimThe public key
proofbyte vectorThe transaction signature

verify should return normally if the signature is valid or abort if the signature is invalid. Any return value is ignored.

Notifications

Notifications are registered in the native notifyTable. Unlike other entry points, they are executed as regular actions though the called export.