Skip to content

StdLib

Back to Native Contracts

Provides serialization, encoding, and string manipulation utilities. StdLib methods are exposed through Syscalls.sol.

Methods

MethodSignatureReturnSafeDescription
serializeserialize(bytes)bytesSerialize a NeoVM stack item to bytes.
deserializedeserialize(bytes)bytesDeserialize bytes back to a stack item.
jsonSerializejsonSerialize(bytes)bytesSerialize a stack item to JSON.
jsonDeserializejsonDeserialize(bytes)bytesDeserialize JSON to a stack item.
base64Encodebase64Encode(bytes)stringBase64 encode.
base64Decodebase64Decode(string)bytesBase64 decode.
base58Encodebase58Encode(bytes)stringBase58 encode.
base58Decodebase58Decode(string)bytesBase58 decode.
itoaitoa(int256,uint8)stringInteger to string (base 10 or 16).
atoiatoi(string,uint8)int256String to integer (base 10 or 16).
memoryComparememoryCompare(bytes,bytes)int256Lexicographic byte comparison. Returns -1, 0, or 1.
memorySearchmemorySearch(bytes,bytes,int256,bool)int256Search for a byte pattern. Returns index or -1.
stringSplitstringSplit(string,string,bool)string[]Split string by separator.
strLenstrLen(string)uint256String length in text elements (not bytes).

Code Example

solidity
import "devpack/contracts/Syscalls.sol";

contract DataEncoder {
    function encodeForStorage(uint256 value) public view returns (bytes memory) {
        return Syscalls.serialize(abi.encode(value));
    }

    function toBase64(bytes memory data) public view returns (string memory) {
        return Syscalls.base64Encode(data);
    }

    function numberToHexString(int256 value) public view returns (string memory) {
        return Syscalls.itoa(value, 16);
    }

    function splitCsv(string memory csv) public view returns (string[] memory) {
        return Syscalls.stringSplit(csv, ",", true);
    }
}

MIT Licensed