Module abi
Last updated
Last updated
Provides message encoding and decoding according to the ABI specification.
– Encodes message body according to ABI function call.
– Encodes an ABI-compatible message
– Encodes an internal ABI-compatible message
– Combines hex
-encoded signature
with base64
-encoded unsigned_message
. Returns signed message encoded in base64
.
– Decodes message body using provided message BOC and ABI.
– Decodes message body using provided body BOC and ABI.
– Creates account state BOC
– Decodes account data using provided data BOC and ABI.
– Updates initial account data with initial values for the contract's static variables and owner's public key. This operation is applicable only for initial account data (before deploy). If the contract is already deployed, its data doesn't contain this data section any more.
– Encodes initial account data with initial values for the contract's static variables and owner's public key into a data BOC that can be passed to encode_tvc
function afterwards.
– Decodes initial values of a contract's static variables and owner's public key from account initial data This operation is applicable only for initial account data (before deploy). If the contract is already deployed, its data doesn't contain this data section any more.
– Decodes BOC into JSON as a set of provided parameters.
Encodes message body according to ABI function call.
NOTE: Sync version is available only for lib-node
binding.
is_internal
: boolean – True if internal message body must be encoded.
processing_try_index
?: number – Processing try index.
Used in message processing with retries.
Encoder uses the provided try index to calculate message
expiration time.
Expiration timeouts will grow with every retry.
Default value is 0.
address
?: string – Destination address of the message
Since ABI version 2.3 destination address of external inbound message is used in message
body signature calculation. Should be provided when signed external inbound message body is
created. Otherwise can be omitted.
signature_id
?: number – Signature ID to be used in data to sign preparing when CapSignatureWithId capability is enabled
body
: string – Message body BOC encoded with base64
.
data_to_sign
?: string – Optional data to sign.
Encoded with base64
.
Presents when message
is unsigned. Can be used for external
message signing. Is this case you need to sing this data and
produce signed message using abi.attach_signature
.
NOTE: Sync version is available only for lib-node
binding.
public_key
: string – Public key.
Must be encoded with hex
.
message
: string – Unsigned message body BOC.
Must be encoded with base64
.
signature
: string – Signature.
Must be encoded with hex
.
body
: string
Encodes an ABI-compatible message
Allows to encode deploy and function call messages, both signed and unsigned.
Use cases include messages of any possible type:
deploy with initial function call (i.e. constructor
or any other function that is used for some kind of initialization);
deploy without initial function call;
signed/unsigned + data for signing.
Signer
defines how the message should or shouldn't be signed:
Signer::None
creates an unsigned message. This may be needed in case of some public methods, that do not require authorization by pubkey.
Signer::External
takes public key and returns data_to_sign
for later signing. Use attach_signature
method with the result signature to get the signed message.
Signer::Keys
creates a signed message with provided key pair.
[SOON] Signer::SigningBox
Allows using a special interface to implement signing without private key disclosure to SDK. For instance, in case of using a cold wallet or HSM, when application calls some API to sign data.
There is an optional public key can be provided in deploy set in order to substitute one in TVM file.
Public key resolving priority:
Public key from deploy set.
Public key, specified in TVM file.
Public key, provided by signer.
NOTE: Sync version is available only for lib-node
binding.
address
?: string – Target address the message will be sent to.
Must be specified in case of non-deploy message.
processing_try_index
?: number – Processing try index.
Used in message processing with retries (if contract's ABI includes "expire" header).
Encoder uses the provided try index to calculate message
expiration time. The 1st message expiration time is specified in
Client config.
Expiration timeouts will grow with every retry.
Retry grow factor is set in Client config:
<.....add config parameter with default value here>
Default value is 0.
signature_id
?: number – Signature ID to be used in data to sign preparing when CapSignatureWithId capability is enabled
message
: string – Message BOC encoded with base64
.
data_to_sign
?: string – Optional data to be signed encoded in base64
.
Returned in case of Signer::External
. Can be used for external
message signing. Is this case you need to use this data to create signature and
then produce signed message using abi.attach_signature
.
address
: string – Destination address.
message_id
: string – Message id.
Encodes an internal ABI-compatible message
Allows to encode deploy and function call messages.
Use cases include messages of any possible type:
deploy with initial function call (i.e. constructor
or any other function that is used for some kind of initialization);
deploy without initial function call;
simple function call
There is an optional public key can be provided in deploy set in order to substitute one in TVM file.
Public key resolving priority:
Public key from deploy set.
Public key, specified in TVM file.
NOTE: Sync version is available only for lib-node
binding.
address
?: string – Target address the message will be sent to.
Must be specified in case of non-deploy message.
src_address
?: string – Source address of the message.
value
: string – Value in nanotokens to be sent with message.
bounce
?: boolean – Flag of bounceable message.
Default is true.
enable_ihr
?: boolean – Enable Instant Hypercube Routing for the message.
Default is false.
message
: string – Message BOC encoded with base64
.
address
: string – Destination address.
message_id
: string – Message id.
Combines hex
-encoded signature
with base64
-encoded unsigned_message
. Returns signed message encoded in base64
.
NOTE: Sync version is available only for lib-node
binding.
public_key
: string – Public key encoded in hex
.
message
: string – Unsigned message BOC encoded in base64
.
signature
: string – Signature encoded in hex
.
message
: string – Signed message BOC
message_id
: string – Message ID
Decodes message body using provided message BOC and ABI.
NOTE: Sync version is available only for lib-node
binding.
message
: string – Message BOC
allow_partial
?: boolean – Flag allowing partial BOC decoding when ABI doesn't describe the full body BOC. Controls decoder behaviour when after decoding all described in ABI params there are some data left in BOC: true
- return decoded values false
- return error of incomplete BOC deserialization (default)
function_name
?: string – Function name or function id if is known in advance
name
: string – Function or event name.
value
?: any – Parameters or result value.
Decodes message body using provided body BOC and ABI.
NOTE: Sync version is available only for lib-node
binding.
body
: string – Message body BOC encoded in base64
.
is_internal
: boolean – True if the body belongs to the internal message.
allow_partial
?: boolean – Flag allowing partial BOC decoding when ABI doesn't describe the full body BOC. Controls decoder behaviour when after decoding all described in ABI params there are some data left in BOC: true
- return decoded values false
- return error of incomplete BOC deserialization (default)
function_name
?: string – Function name or function id if is known in advance
name
: string – Function or event name.
value
?: any – Parameters or result value.
Creates account state BOC
NOTE: Sync version is available only for lib-node
binding.
state_init
: string – Account state init.
balance
?: bigint – Initial balance.
last_trans_lt
?: bigint – Initial value for the last_trans_lt
.
last_paid
?: number – Initial value for the last_paid
.
account
: string – Account BOC encoded in base64
.
id
: string – Account ID encoded in hex
.
Decodes account data using provided data BOC and ABI.
Note: this feature requires ABI 2.1 or higher.
NOTE: Sync version is available only for lib-node
binding.
data
: string – Data BOC or BOC handle
allow_partial
?: boolean – Flag allowing partial BOC decoding when ABI doesn't describe the full body BOC. Controls decoder behaviour when after decoding all described in ABI params there are some data left in BOC: true
- return decoded values false
- return error of incomplete BOC deserialization (default)
data
: any – Decoded data as a JSON structure.
Updates initial account data with initial values for the contract's static variables and owner's public key. This operation is applicable only for initial account data (before deploy). If the contract is already deployed, its data doesn't contain this data section any more.
Doesn't support ABI version >= 2.4. Use encode_initial_data
instead
NOTE: Sync version is available only for lib-node
binding.
data
: string – Data BOC or BOC handle
initial_data
?: any – List of initial values for contract's static variables.
abi
parameter should be provided to set initial data
initial_pubkey
?: string – Initial account owner's public key to set into account data
data
: string – Updated data BOC or BOC handle
Encodes initial account data with initial values for the contract's static variables and owner's public key into a data BOC that can be passed to encode_tvc
function afterwards.
This function is analogue of tvm.buildDataInit
function in Solidity.
NOTE: Sync version is available only for lib-node
binding.
initial_data
?: any – List of initial values for contract's static variables.
abi
parameter should be provided to set initial data
initial_pubkey
?: string – Initial account owner's public key to set into account data
data
: string – Updated data BOC or BOC handle
Decodes initial values of a contract's static variables and owner's public key from account initial data This operation is applicable only for initial account data (before deploy). If the contract is already deployed, its data doesn't contain this data section any more.
Doesn't support ABI version >= 2.4. Use decode_account_data
instead
NOTE: Sync version is available only for lib-node
binding.
data
: string – Data BOC or BOC handle
allow_partial
?: boolean – Flag allowing partial BOC decoding when ABI doesn't describe the full body BOC. Controls decoder behaviour when after decoding all described in ABI params there are some data left in BOC: true
- return decoded values false
- return error of incomplete BOC deserialization (default)
initial_data
: any – List of initial values of contract's public variables.
Initial data is decoded if abi
input parameter is provided
initial_pubkey
: string – Initial account owner's public key
Decodes BOC into JSON as a set of provided parameters.
To solve this problem we introduce a new ABI type Ref(<ParamType>)
which allows to store ParamType
ABI parameter in cell reference and, thus, decode manually encoded BOCs. This type is available only in decode_boc
function and will not be available in ABI messages encoding until it is included into some ABI revision.
Such BOC descriptions covers most users needs. If someone wants to decode some BOC which can not be described by these rules (i.e. BOC with TLB containing constructors of flags defining some parsing conditions) then they can decode the fields up to fork condition, check the parsed data manually, expand the parsing schema and then decode the whole BOC with the full schema.
NOTE: Sync version is available only for lib-node
binding.
boc
: string – Data BOC or BOC handle
allow_partial
: boolean
data
: any – Decoded data as a JSON structure.
Encodes given parameters in JSON into a BOC using param types from ABI.
NOTE: Sync version is available only for lib-node
binding.
data
: any – Parameters and values as a JSON structure
boc
: string – BOC encoded as base64
Calculates contract function ID by contract ABI
NOTE: Sync version is available only for lib-node
binding.
function_name
: string – Contract function name
output
?: boolean – If set to true
output function ID will be returned which is used in contract response. Default is false
function_id
: number – Contract function ID
Extracts signature from message body and calculates hash to verify the signature
NOTE: Sync version is available only for lib-node
binding.
message
: string – Message BOC encoded in base64
.
signature_id
?: number – Signature ID to be used in unsigned data preparing when CapSignatureWithId capability is enabled
signature
: string – Signature from the message in hex
.
unsigned
: string – Data to verify the signature in base64
.
One of the following value:
RequiredAddressMissingForEncodeMessage = 301
RequiredCallSetMissingForEncodeMessage = 302
InvalidJson = 303
InvalidMessage = 304
EncodeDeployMessageFailed = 305
EncodeRunMessageFailed = 306
AttachSignatureFailed = 307
InvalidTvcImage = 308
RequiredPublicKeyMissingForFunctionHeader = 309
InvalidSigner = 310
InvalidAbi = 311
InvalidFunctionId = 312
InvalidData = 313
EncodeInitialDataFailed = 314
InvalidFunctionName = 315
PubKeyNotSupported = 316
value
: string
Depends on value of the type
field.
When type is 'Contract'
When type is 'Json'
value
: string
When type is 'Handle'
When type is 'Serialized'
Variant constructors:
The ABI function header.
Includes several hidden function parameters that contract uses for security, message delivery monitoring and replay protection reasons.
The actual set of header fields depends on the contract's ABI. If a contract's ABI does not include some headers, then they are not filled.
expire
?: number – Message expiration timestamp (UNIX time) in seconds.
If not specified - calculated automatically from message_expiration_timeout(),
try_index and message_expiration_timeout_grow_factor() (if ABI includes expire
header).
time
?: bigint – Message creation time in milliseconds.
If not specified, now
is used (if ABI includes time
header).
pubkey
?: string – Public key is used by the contract to check the signature.
Encoded in hex
. If not specified, method fails with exception (if ABI includes pubkey
header)..
function_name
: string – Function name that is being called. Or function id encoded as string in hex (starting with 0x).
input
?: any – Function input parameters according to ABI.
tvc
?: string – Content of TVC file encoded in base64
. For compatibility reason this field can contain an encoded StateInit
.
code
?: string – Contract code BOC encoded with base64.
state_init
?: string – State init BOC encoded with base64.
workchain_id
?: number – Target workchain for destination address.
Default is 0
.
initial_data
?: any – List of initial values for contract's public variables.
initial_pubkey
?: string – Optional public key that can be provided in deploy set in order to substitute one in TVM file or provided by Signer.
Public key resolving priority:
1. Public key from deploy set.
2. Public key, specified in TVM file.
3. Public key, provided by Signer.
Applicable only for contracts with ABI version < 2.4. Contract initial public key should be
explicitly provided inside initial_data
since ABI 2.4
No keys are provided.
Creates an unsigned message.
Only public key is provided in unprefixed hex string format to generate unsigned message and data_to_sign
which can be signed later.
public_key
: string
Key pair is provided for signing
keys
: KeyPair
Signing Box interface is provided for signing, allows Dapps to sign messages using external APIs, such as HSM, cold wallet, etc.
handle
: SigningBoxHandle
Depends on value of the type
field.
When type is 'None'
No keys are provided.
Creates an unsigned message.
When type is 'External'
Only public key is provided in unprefixed hex string format to generate unsigned message and data_to_sign
which can be signed later.
public_key
: string
When type is 'Keys'
Key pair is provided for signing
keys
: KeyPair
When type is 'SigningBox'
Signing Box interface is provided for signing, allows Dapps to sign messages using external APIs, such as HSM, cold wallet, etc.
handle
: SigningBoxHandle
Variant constructors:
One of the following value:
Input = "Input"
– Message contains the input of the ABI function.
Output = "Output"
– Message contains the output of the ABI function.
InternalOutput = "InternalOutput"
– Message contains the input of the imported ABI function.
Occurs when contract sends an internal message to other
contract.
Event = "Event"
– Message contains the input of the ABI event.
name
: string
type
: string
init
?: boolean
name
: string
id
?: string?
key
: number
name
: string
type
: string
name
: string
id
?: string?
ABI version
?: number
abi_version
?: number
version
?: string?
header
?: string[]
One of the following value:
Input = "Input"
– Decode message body as function input parameters.
Output = "Output"
– Decode message body as function output.
is_internal
: boolean – True if internal message body must be encoded.
processing_try_index
?: number – Processing try index.
Used in message processing with retries.
Encoder uses the provided try index to calculate message
expiration time.
Expiration timeouts will grow with every retry.
Default value is 0.
address
?: string – Destination address of the message
Since ABI version 2.3 destination address of external inbound message is used in message
body signature calculation. Should be provided when signed external inbound message body is
created. Otherwise can be omitted.
signature_id
?: number – Signature ID to be used in data to sign preparing when CapSignatureWithId capability is enabled
body
: string – Message body BOC encoded with base64
.
data_to_sign
?: string – Optional data to sign.
Encoded with base64
.
Presents when message
is unsigned. Can be used for external
message signing. Is this case you need to sing this data and
produce signed message using abi.attach_signature
.
public_key
: string – Public key.
Must be encoded with hex
.
message
: string – Unsigned message body BOC.
Must be encoded with base64
.
signature
: string – Signature.
Must be encoded with hex
.
body
: string
address
?: string – Target address the message will be sent to.
Must be specified in case of non-deploy message.
processing_try_index
?: number – Processing try index.
Used in message processing with retries (if contract's ABI includes "expire" header).
Encoder uses the provided try index to calculate message
expiration time. The 1st message expiration time is specified in
Client config.
Expiration timeouts will grow with every retry.
Retry grow factor is set in Client config:
<.....add config parameter with default value here>
Default value is 0.
signature_id
?: number – Signature ID to be used in data to sign preparing when CapSignatureWithId capability is enabled
message
: string – Message BOC encoded with base64
.
data_to_sign
?: string – Optional data to be signed encoded in base64
.
Returned in case of Signer::External
. Can be used for external
message signing. Is this case you need to use this data to create signature and
then produce signed message using abi.attach_signature
.
address
: string – Destination address.
message_id
: string – Message id.
address
?: string – Target address the message will be sent to.
Must be specified in case of non-deploy message.
src_address
?: string – Source address of the message.
value
: string – Value in nanotokens to be sent with message.
bounce
?: boolean – Flag of bounceable message.
Default is true.
enable_ihr
?: boolean – Enable Instant Hypercube Routing for the message.
Default is false.
message
: string – Message BOC encoded with base64
.
address
: string – Destination address.
message_id
: string – Message id.
public_key
: string – Public key encoded in hex
.
message
: string – Unsigned message BOC encoded in base64
.
signature
: string – Signature encoded in hex
.
message
: string – Signed message BOC
message_id
: string – Message ID
message
: string – Message BOC
allow_partial
?: boolean – Flag allowing partial BOC decoding when ABI doesn't describe the full body BOC. Controls decoder behaviour when after decoding all described in ABI params there are some data left in BOC: true
- return decoded values false
- return error of incomplete BOC deserialization (default)
function_name
?: string – Function name or function id if is known in advance
name
: string – Function or event name.
value
?: any – Parameters or result value.
body
: string – Message body BOC encoded in base64
.
is_internal
: boolean – True if the body belongs to the internal message.
allow_partial
?: boolean – Flag allowing partial BOC decoding when ABI doesn't describe the full body BOC. Controls decoder behaviour when after decoding all described in ABI params there are some data left in BOC: true
- return decoded values false
- return error of incomplete BOC deserialization (default)
function_name
?: string – Function name or function id if is known in advance
state_init
: string – Account state init.
balance
?: bigint – Initial balance.
last_trans_lt
?: bigint – Initial value for the last_trans_lt
.
last_paid
?: number – Initial value for the last_paid
.
account
: string – Account BOC encoded in base64
.
id
: string – Account ID encoded in hex
.
data
: string – Data BOC or BOC handle
allow_partial
?: boolean – Flag allowing partial BOC decoding when ABI doesn't describe the full body BOC. Controls decoder behaviour when after decoding all described in ABI params there are some data left in BOC: true
- return decoded values false
- return error of incomplete BOC deserialization (default)
data
: any – Decoded data as a JSON structure.
data
: string – Data BOC or BOC handle
initial_data
?: any – List of initial values for contract's static variables.
abi
parameter should be provided to set initial data
initial_pubkey
?: string – Initial account owner's public key to set into account data
data
: string – Updated data BOC or BOC handle
initial_data
?: any – List of initial values for contract's static variables.
abi
parameter should be provided to set initial data
initial_pubkey
?: string – Initial account owner's public key to set into account data
data
: string – Updated data BOC or BOC handle
data
: string – Data BOC or BOC handle
allow_partial
?: boolean – Flag allowing partial BOC decoding when ABI doesn't describe the full body BOC. Controls decoder behaviour when after decoding all described in ABI params there are some data left in BOC: true
- return decoded values false
- return error of incomplete BOC deserialization (default)
initial_data
: any – List of initial values of contract's public variables.
Initial data is decoded if abi
input parameter is provided
initial_pubkey
: string – Initial account owner's public key
boc
: string – Data BOC or BOC handle
allow_partial
: boolean
data
: any – Decoded data as a JSON structure.
data
: any – Parameters and values as a JSON structure
boc
: string – BOC encoded as base64
function_name
: string – Contract function name
output
?: boolean – If set to true
output function ID will be returned which is used in contract response. Default is false
function_id
: number – Contract function ID
message
: string – Message BOC encoded in base64
.
signature_id
?: number – Signature ID to be used in unsigned data preparing when CapSignatureWithId capability is enabled
signature
: string – Signature from the message in hex
.
unsigned
: string – Data to verify the signature in base64
.
– Encodes given parameters in JSON into a BOC using param types from ABI.
– Calculates contract function ID by contract ABI
– Extracts signature from message body and calculates hash to verify the signature
– The ABI function header.
– No keys are provided.
– Only public key is provided in unprefixed hex string format to generate unsigned message and data_to_sign
which can be signed later.
– Key pair is provided for signing
– Signing Box interface is provided for signing, allows Dapps to sign messages using external APIs, such as HSM, cold wallet, etc.
abi
: – Contract ABI.
call_set
: – Function call parameters.
Must be specified in non deploy message.
In case of deploy message contains parameters of constructor.
signer
: – Signing parameters.
abi
: – Contract ABI
abi
: – Contract ABI.
deploy_set
?: – Deploy parameters.
Must be specified in case of deploy message.
call_set
?: – Function call parameters.
Must be specified in case of non-deploy message.
In case of deploy message it is optional and contains parameters
of the functions that will to be called upon deploy transaction.
signer
: – Signing parameters.
abi
?: – Contract ABI.
Can be None if both deploy_set and call_set are None.
deploy_set
?: – Deploy parameters.
Must be specified in case of deploy message.
call_set
?: – Function call parameters.
Must be specified in case of non-deploy message.
In case of deploy message it is optional and contains parameters
of the functions that will to be called upon deploy transaction.
abi
: – Contract ABI
abi
: – contract ABI
data_layout
?:
body_type
: – Type of the message body content.
header
?: – Function header.
abi
: – Contract ABI used to decode.
data_layout
?:
body_type
: – Type of the message body content.
header
?: – Function header.
boc_cache
?: – Cache type to put the result.
The BOC itself returned if no cache type provided
abi
: – Contract ABI
abi
: – Contract ABI
boc_cache
?: – Cache type to put the result. The BOC itself returned if no cache type provided.
abi
: – Contract ABI
boc_cache
?: – Cache type to put the result. The BOC itself returned if no cache type provided.
abi
: – Contract ABI.
Initial data is decoded if this parameter is provided
Solidity functions use ABI types for . The simplest way to decode such a BOC is to use ABI decoding. ABI has it own rules for fields layout in cells so manually encoded BOC can not be described in terms of ABI rules.
params
: [] – Parameters to decode from BOC
params
: [] – Parameters to encode into BOC
boc_cache
?: – Cache type to put the result.
The BOC itself returned if no cache type provided
abi
: – Contract ABI.
abi
: – Contract ABI used to decode.
value
:
value
:
value
:
value
:
value
:
value
:
header
?: – Function header.
If an application omits some header parameters required by the
contract's ABI, the library will set the default values for
them.
components
?: []
inputs
: []
components
?: []
inputs
: []
outputs
: []
functions
?: []
events
?: []
data
?: []
fields
?: []
abi
: – Contract ABI.
call_set
: – Function call parameters.
Must be specified in non deploy message.
In case of deploy message contains parameters of constructor.
signer
: – Signing parameters.
abi
: – Contract ABI
abi
: – Contract ABI.
deploy_set
?: – Deploy parameters.
Must be specified in case of deploy message.
call_set
?: – Function call parameters.
Must be specified in case of non-deploy message.
In case of deploy message it is optional and contains parameters
of the functions that will to be called upon deploy transaction.
signer
: – Signing parameters.
abi
?: – Contract ABI.
Can be None if both deploy_set and call_set are None.
deploy_set
?: – Deploy parameters.
Must be specified in case of deploy message.
call_set
?: – Function call parameters.
Must be specified in case of non-deploy message.
In case of deploy message it is optional and contains parameters
of the functions that will to be called upon deploy transaction.
abi
: – Contract ABI
abi
: – contract ABI
data_layout
?:
body_type
: – Type of the message body content.
header
?: – Function header.
abi
: – Contract ABI used to decode.
data_layout
?:
boc_cache
?: – Cache type to put the result.
The BOC itself returned if no cache type provided
abi
: – Contract ABI
abi
: – Contract ABI
boc_cache
?: – Cache type to put the result. The BOC itself returned if no cache type provided.
abi
: – Contract ABI
boc_cache
?: – Cache type to put the result. The BOC itself returned if no cache type provided.
abi
: – Contract ABI.
Initial data is decoded if this parameter is provided
params
: [] – Parameters to decode from BOC
params
: [] – Parameters to encode into BOC
boc_cache
?: – Cache type to put the result.
The BOC itself returned if no cache type provided
abi
: – Contract ABI.
abi
: – Contract ABI used to decode.