hello_wasm.code


Overview

The hello_wasm.code file contains the low-level code fragments and logic for a smart contract module implemented in a stack-based, assembly-like language, likely for blockchain virtual machine execution. It manages contract lifecycle events such as deployment, token exchange, message handling, and state updates while providing interaction mechanisms with external contracts and WASM execution. The file defines reusable code fragments representing internal procedures, external entry points, and utility methods for contract operations.


Core Functionalities


Detailed Fragment Descriptions

Fragment: constructor


Fragment: deployNewContract


Fragment: exchangeToken


Fragment: runWasm


Fragment: runWasmConcatMultiarg


Fragment: sendShell and sendVMShell


Fragment: touch and callExtTouch


Fragment: public_function_selector


Fragment: main_external and main_internal


Fragment: upd_only_time_in_c4


Fragment: c4_to_c7 and c7_to_c4


Important Implementation Details


Interaction with Other System Parts


Usage Examples

Deploying a New Contract

CALLREF {
    .inline deployNewContract
}

This fragment accepts an incoming message, processes tokens, constructs a new contract cell, and sends a raw message to deploy a contract.

Running WASM Code with Multiple Arguments

CALLREF {
    .inline runWasmConcatMultiarg
}

Runs embedded WASM code with many concatenated arguments, updating the contract state accordingly.

Handling an External Call

CALLREF {
    .inline main_external
}

Verifies an external message's signature, applies replay protection, and dispatches the function selector.


Mermaid Diagram

flowchart TD
A[main_external] -->|signature check| B[public_function_selector]
C[main_internal] -->|dispatch| B
B --> |function selector| D{Function}
D --> E[constructor]
D --> F[deployNewContract]
D --> G[exchangeToken]
D --> H[runWasm]
D --> I[runWasmConcatMultiarg]
D --> J[sendShell]
D --> K[sendVMShell]
D --> L[touch]
D --> M[callExtTouch]
D --> N[upd_only_time_in_c4]
E --> O[c4_to_c7]
F --> P[deployNewContract_e6e22826_internal]
G --> Q[exchangeToken_53d168e3_internal]
H --> R[runWasm_449543f3_internal]
I --> S[runWasmConcatMultiarg_be417fbd_internal]
J --> T[sendShell_77e2a3b5_internal]
K --> U[sendVMShell_e1519e7b_internal]
L --> V[touch_a55526db_internal]
M --> W[callExtTouch_347a50dc_internal]
O --> X[c7_to_c4]
W --> X
V --> X
T --> X
U --> X
S --> X
R --> X
Q --> X
P --> X
X --> N

Summary of Key Functions

Function Name

Description

Parameters

Returns

constructor

Initializes the contract state on deployment

None (uses globals)

None

deployNewContract

Deploys a new contract instance

None (uses globals and msg)

None

exchangeToken

Handles token exchange logic

None

None

runWasm

Runs WASM code with provided arguments

None

None

runWasmConcatMultiarg

Runs WASM with multiple concatenated args

None

None

sendShell

Sends raw shell messages

None

None

sendVMShell

Sends VM shell messages

None

None

touch

Updates the contract's timestamp

None

None

callExtTouch

External touch handler

None

None

public_function_selector

Dispatches calls to methods based on selector

Function selector integer

None

main_external

Processes external messages

Message slice

None

main_internal

Processes internal messages

Message slice

None


Notes on Code Style and Structure


Relevant Topics