Skip to main content

Interactions

What’s an Interaction?

A MOI Interaction refers to any kind of action between participants on the MOI network. It results in a state change on the respective accounts of the interaction participants. For example, if Bob were to send Alice 1 unit of an asset, that asset must be deducted from Bob’s balance and credited to Alice; this is known as an Asset Transfer which is facilitated through AssetTransfer.

Other examples of Interaction in MOI include:

  • The creation of a new Asset
  • The transfer of one or more existing Assets between participants
  • The minting/burning of an existing supply adjustable Asset
  • The deployment of a new Logic
  • The invocation of a routine on an existing Logic

Just like Transactions in other blockchain networks, Interactions in MOI need to be broadcast to the whole network, and all Guardian nodes in the network compete to finalize them. Any node can attempt to finalize an Interaction by successfully locking the context of the Interaction participants, executing the Interaction and finalizing the state transitions on the participants. Interactions require a fee for the cost incurred by the network to validate & execute them.

Interaction vs Operation

The primary difference between Interactions in MOI and Transactions in other blockchain protocols is the degree of general-purpose capability and flexibility.

  • An Interaction intrinsically describes unique state transitions based on its type, and thus it is very easy to optimize consensus and design specific zk-proofs for these Interactions because the scope of the state transition is limited.
  • A Operation, on the other hand, is designed to be a general-purpose wrapper and has a very large scope of state transition, thus limiting the ability of the network to perform advanced validation and other optimisations without relying on the operation execution layer.
  • While Interactions are designed to express transitions between participants, Transactions are intended to express transitions between network state checkpoints and hence better at expressing units of transition on a large-scale peer-to-peer network
  • Interactions are also capable of being highly customizable with participants being able to choose the parameters and constraints within which they are finalized, allowing for a very flexible modulation of trust.

Structure of an Interaction

ParameterTypeDescription
senderSenderObject containing details of the interaction sender
payerHEX (32 bytes)Unique identifier of the payer [optional]
fuel_priceHEXFuel price
fuel_limitHEXFuel limit
ix_operationsArrayList containing one or more participant create, account configure, account inherit, asset create, asset action, logic deploy or logic invoke operations.
participantsArrayList of participants involved in the interaction, each defining an participants’s role, locking behavior, and notary status
preferencesIxPreferencesDefines the compute and consensus preferences for the interaction [optional]
perceptionBytesEncoded representation of the perceived asset value at the time of interaction (e.g., 1 KMOI token = 1 USD) [optional]

Sender

The Sender object represents the participant initiating the interaction.

FieldTypeDescription
idHEX (32 Bytes)Unique identifier of the sender
sequence_idNumberSequential identifier used for ordering interactions
key_idNumberIdentifier representing the public key associated with the sender

Participant

The Participant object represents a participant involved in the interaction.

FieldTypeDescription
idHEX (32 Bytes)Unique identifier representing the participant
lock_typeLockTypeDefines the locking mechanism used for the participant’s account
notaryBooleanIndicates whether the participant acts as a notary in the interaction

LockType

Specifies the type of lock applied to a participant’s account during interaction execution.

ValueDescription
MutateLockAllows modification of the participant’s account state
ReadLockGrants read-only access to the participant’s account
NoLockNo locking mechanism; the participant’s account remains unaffected

IxPreferences

The IxPreferences object defines the preferences used for interaction execution, covering compute and consensus behavior.

FieldTypeDescription
computeBytesEncoded data representing compute preferences
consensusIxConsensusPreferenceObject containing consensus-specific preferences for the interaction

IxConsensusPreference

The IxConsensusPreference object defines the consensus-related preferences for an interaction.

FieldTypeDescription
MTQuintModulated trust quotient required for the interaction to be considered valid
TrustNodesArrayList of trusted node identifiers (KramaID) that participate in the consensus process

Example Interaction Objects

    {
"ix_index": "0x0",
"hash": "0x37fbbaa93e836670cfbe68e735b59ebb72726c86aa679c18513f1712c65dca00",
"fuel_price": "0x1",
"fuel_limit": "0x2710",
"sender": {
"id": "0x000000005dfd3e93ae09bea907f0d6db965ddfe84d09dfdf868e4e6800000000",
"sequence_id": "0x13",
"key_id": "0x0"
},
"payer": "0x0000000000000000000000000000000000000000000000000000000000000000",
"ix_participants": [
{
"id": "0x000000005dfd3e93ae09bea907f0d6db965ddfe84d09dfdf868e4e6800000000",
"lock_type": 0
},
{
"id": "0x108000004cd973c4eb83cdb8870c0de209736270491b7acc99873da100000000",
"lock_type": 2
}
],
"funds": [],
"ix_operations": [
{
"type": 1,
"payload": {
"id": "0x000000001fed487f9d4d794770627658f312e27208a9d17ff9befb9000000000",
"value": {
"asset_id": "0x108000004cd973c4eb83cdb8870c0de209736270491b7acc99873da100000000",
"callsite": "Transfer",
"calldata": "0x0d6f0665a601d502616d6f756e74030186a062656e656669636961727906000000001fed487f9d4d794770627658f312e27208a9d17ff9befb9000000000"
}
}
}
],
"participants_state": [
{
"id": "0x000000001fed487f9d4d794770627658f312e27208a9d17ff9befb9000000000",
"height": "0x0",
"transitive_link": "0x0000000000000000000000000000000000000000000000000000000000000000",
"locked_context": "0x0000000000000000000000000000000000000000000000000000000000000000",
"context_delta": {
"consensus_nodes": [
"1116Uiu2HAkxNAsjmsEQADvWYDcKdhvbdhtPdCTytMQnSeu5WCm66QY",
"1116Uiu2HAm6m1XjPXnP8m1qtBztnLLmGfr8QjW1QE3AfeZuTyDmM9S",
"1116Uiu2HAm4RFCEbTvfYcw1NF6pGCQob7ZhmdcwqhXczjFDmTrY9nm",
"1116Uiu2HAmEEvCb1aF47SSPVjetKmvfvHH5D1sRmdV2mACvVuWzKHx",
"1116Uiu2HAmQiXtvrRqhGeXPy1AXRZbYskiWHVWrhkqZih1Varo5ndG"
],
"replaced_nodes": null
},
"state_hash": "0xd04c9f7abef2a2fd4cbe64bfd4054d2bcea6b064c76155cb2a22d17b006f7d6a"
},
{
"id": "0x000000005dfd3e93ae09bea907f0d6db965ddfe84d09dfdf868e4e6800000000",
"height": "0x14",
"transitive_link": "0xc0343f04b70da28235398aebf7e8bafbeb25ccd243f1a925267471f87c762739",
"locked_context": "0xdb1cf3ee96b9666faee751df70d735db36a9cb1b86eff63f1306997e41f0d48f",
"context_delta": null,
"state_hash": "0xa0b92b3d4bb4d554ad221fc727437811b73c02656230d669583a3349a06f65ce"
},
{
"id": "0x108000004cd973c4eb83cdb8870c0de209736270491b7acc99873da100000000",
"height": "0x0",
"transitive_link": "0x57937b8e3f070334e2490a0f183ed793b3d2f9f26bd2b68e3cc26c2e79be1caa",
"locked_context": "0x1df96b8133811d9a3db0425d823c1ff3d12325c09c11d360605246749be7de72",
"context_delta": null,
"state_hash": "0x5053eb1143ee6eaf879fa2b3acb233aece2b78f00a2aca61652c392cd86dd852"
},
{
"id": "0x20800000a6ba9853f131679d00da0f033516a2efe9cd53c3d54e1f9a00000000",
"height": "0xb",
"transitive_link": "0xa9a755989697ff8c4cc5cdd292a8366c0b5ae052a905779e5272c6aa851e1afd",
"locked_context": "0xef3d55603796202949766067425ad95f82fb2450d1f3ea2ca546414e08e7eb98",
"context_delta": null,
"state_hash": "0xb824d167fc374f7123316480c430d5ae7683daf158fca343ef09e7f7fa4f2609"
}
],
"signatures": [
{
"id": "0x000000005dfd3e93ae09bea907f0d6db965ddfe84d09dfdf868e4e6800000000",
"key_id": "0x0",
"signature": "0x01463044022055d7a61ba37f6565cbb9a17f8964326d5ddc48b89b889ddd5c794077b1a9fbf5022067cfa50cc69ae4eb96c95a70d816fe213fe1f7151c3058e1f236c538cc2feac002"
}
],
"ts_hash": "0x3a2ff5148748e69101a66ce2d1f8b7c6a2cd01678ee048777f319ccd837f29ef",
"status": 1,
"timestamp": 1761911788
},
"preferences": {
"trust_quotient": 100,
"reputation_quotient": 100
},
"participants": [
{
"address": "0x000000001fed487f9d4d794770627658f312e27208a9d17ff9befb9000000000",
"context_hash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"state_hash": "0xd04c9f7abef2a2fd4cbe64bfd4054d2bcea6b064c76155cb2a22d17b006f7d6a",
"role": "participant"
},
{
"address": "0x000000005dfd3e93ae09bea907f0d6db965ddfe84d09dfdf868e4e6800000000",
"context_hash": "0xdb1cf3ee96b9666faee751df70d735db36a9cb1b86eff63f1306997e41f0d48f",
"state_hash": "0xa0b92b3d4bb4d554ad221fc727437811b73c02656230d669583a3349a06f65ce",
"role": "participant"
},
{
"address": "0x108000004cd973c4eb83cdb8870c0de209736270491b7acc99873da100000000",
"context_hash": "0x1df96b8133811d9a3db0425d823c1ff3d12325c09c11d360605246749be7de72",
"state_hash": "0x5053eb1143ee6eaf879fa2b3acb233aece2b78f00a2aca61652c392cd86dd852",
"role": "participant"
},
{
"address": "0x20800000a6ba9853f131679d00da0f033516a2efe9cd53c3d54e1f9a00000000",
"context_hash": "0xef3d55603796202949766067425ad95f82fb2450d1f3ea2ca546414e08e7eb98",
"state_hash": "0xb824d167fc374f7123316480c430d5ae7683daf158fca343ef09e7f7fa4f2609",
"role": "participant"
}
],
"receipt": {
"ix_hash": "0x37fbbaa93e836670cfbe68e735b59ebb72726c86aa679c18513f1712c65dca00",
"status": 0,
"fuel_used": "0x1af",
"ix_operations": [
{
"tx_type": "0x1",
"status": 0,
"data": {
"account_id": "0x000000001fed487f9d4d794770627658f312e27208a9d17ff9befb9000000000",
"error": "0x"
}
}
],
"from": "0x000000005dfd3e93ae09bea907f0d6db965ddfe84d09dfdf868e4e6800000000",
"ts_hash": "0x3a2ff5148748e69101a66ce2d1f8b7c6a2cd01678ee048777f319ccd837f29ef",
"participants": [
{
"id": "0x000000001fed487f9d4d794770627658f312e27208a9d17ff9befb9000000000",
"height": "0x0",
"transitive_link": "0x0000000000000000000000000000000000000000000000000000000000000000",
"locked_context": "0x0000000000000000000000000000000000000000000000000000000000000000",
"context_delta": {
"consensus_nodes": [
"1116Uiu2HAkxNAsjmsEQADvWYDcKdhvbdhtPdCTytMQnSeu5WCm66QY",
"1116Uiu2HAm6m1XjPXnP8m1qtBztnLLmGfr8QjW1QE3AfeZuTyDmM9S",
"1116Uiu2HAm4RFCEbTvfYcw1NF6pGCQob7ZhmdcwqhXczjFDmTrY9nm",
"1116Uiu2HAmEEvCb1aF47SSPVjetKmvfvHH5D1sRmdV2mACvVuWzKHx",
"1116Uiu2HAmQiXtvrRqhGeXPy1AXRZbYskiWHVWrhkqZih1Varo5ndG"
],
"replaced_nodes": null
},
"state_hash": "0xd04c9f7abef2a2fd4cbe64bfd4054d2bcea6b064c76155cb2a22d17b006f7d6a"
},
{
"id": "0x000000005dfd3e93ae09bea907f0d6db965ddfe84d09dfdf868e4e6800000000",
"height": "0x14",
"transitive_link": "0xc0343f04b70da28235398aebf7e8bafbeb25ccd243f1a925267471f87c762739",
"locked_context": "0xdb1cf3ee96b9666faee751df70d735db36a9cb1b86eff63f1306997e41f0d48f",
"context_delta": null,
"state_hash": "0xa0b92b3d4bb4d554ad221fc727437811b73c02656230d669583a3349a06f65ce"
},
{
"id": "0x108000004cd973c4eb83cdb8870c0de209736270491b7acc99873da100000000",
"height": "0x0",
"transitive_link": "0x57937b8e3f070334e2490a0f183ed793b3d2f9f26bd2b68e3cc26c2e79be1caa",
"locked_context": "0x1df96b8133811d9a3db0425d823c1ff3d12325c09c11d360605246749be7de72",
"context_delta": null,
"state_hash": "0x5053eb1143ee6eaf879fa2b3acb233aece2b78f00a2aca61652c392cd86dd852"
},
{
"id": "0x20800000a6ba9853f131679d00da0f033516a2efe9cd53c3d54e1f9a00000000",
"height": "0xb",
"transitive_link": "0xa9a755989697ff8c4cc5cdd292a8366c0b5ae052a905779e5272c6aa851e1afd",
"locked_context": "0xef3d55603796202949766067425ad95f82fb2450d1f3ea2ca546414e08e7eb98",
"context_delta": null,
"state_hash": "0xb824d167fc374f7123316480c430d5ae7683daf158fca343ef09e7f7fa4f2609"
}
]
}

Each Interaction type may require different fields to be set along with a different structure for the payload of the Interaction. Refer to the Types of Interactions section and the JSON-RPC Documentation for more information on the payload structure for each Interaction type.

This Interaction object needs to be POLO-encoded and signed with the private key of the sender, allowing to network to prove the origin and validity of the interaction. This process of encoding and signing the Interaction is typically handled by a client SDK like JS-MOI-SDK.

For more information on how to submit an Interaction to the network, refer to the tutorial on Submitting an Interaction.

Execution Fuel for an Interaction

The Fuel parameters fuel_price and fuel_limit in the Interaction determine the fuel dynamics and cost of that Interaction. Fuel is paid for with the KMOI asset [Asset ID: 0x…].

  • Price adjustment of an Interaction is not supported for the Public Devnet, i.e, the fuel_price of an Interaction must always be 0x1 [1 fuel unit = 1 KMOI]. Any other value for this field will result in the Interaction being rejected by the network.
  • The account of the Interaction sender must have sufficient balance of KMOI for the specified fuel_limit of an Interaction. This fuel_limit value must be large enough for the cost of the Interaction execution (based on the Interaction Type). For LogicInvoke, additional FUEL will be charged based on code execution of the Logic.

For more information about Execution Fuel and KMOI in MOI. Refer to Execution Fuel.

Interaction Lifecycle

Once the interactions has been submitted to the network the following happens:

  1. An interaction hash is cryptographically generated: 0x43d99bc7729218611a21b12c933c949d4f31684f1d6954ff417d0477538ff032
  2. The interaction is broadcast to the entire network and is added to the interaction pool consisting of other pending network interactions.
  3. Guardians will then attempt to finalize this Interaction (and other Interactions with the same context lock) by forming an ICS (Interaction Consensus Set) Cluster around it, the formation of this cluster indicates the successful locking on the context states of the interaction participants.
  4. Once the ICS is formed, all Guardians in the cluster will execute the Interactions, verify each other’s execution, update the participant contexts and agree on the state transition for each of the interaction participants. Once consensus is reached, the Interactions are bundled into a Tesseract for each participant and added to their respective participant Lattices.
  5. Each Interaction when included in a Tesseract is bundled with an Ixn Receipt with the proof and output of the Interaction. This receipt can be retrieved for interaction with the ixn hash.
  6. After successfully transitioning the context state of the interaction participants, the updated state is propagated to the rest of the network and the ICS cluster is dismissed.

At any point in time, millions of Interactions can be finalized in parallel across multiple ICS Clusters around the network that are being dynamically assembled and dismissed based on the context of the Interaction and its Participants.

Operations

A Operation is an individual action encapsulated within an interaction on the MOI network. It is responsible for executing specific actions, such as asset creation, asset invocation, participant creation, account configuration, account inheritance, logic deployment or logic invocation. Each operation includes key details like the type of action being performed and the associated payload. Operations are processed as part of an interaction, and their execution directly impacts the state of participants and contributes to changes in the overall network state. When an interaction containing these operations is submitted, you'll receive an Interaction Hash. This hash can be used to query the receipt of the interaction via the moi.InteractionReceipt API. The interaction receipt will include a list of operation results within the operations field containing specific details such as the operation type, status, and result.

The supported operation types are:

Operation TypeType of OperationPayloadResult
1ParticipantCreateParticipantCreatePayloadAccountCreationResult
2AccountConfigureAccountConfigurePayloadn/a
3AccountInheritAccountInheritPayloadAccountInheritResult
4AssetCreateAssetCreatePayloadAssetCreateResult
5AssetActionAssetActionPayloadn/a
11LogicDeployLogicDeployPayloadLogicDeployResult
12LogicInvokeLogicInvokePayloadLogicInvokeResult

ParticipantCreate

This operation registers a new participant within the network, establishing their unique identity. It serves as the entry point to interact with the network.

ParticipantCreateOperation

ParameterTypeDescription
typeNUMBERType of interaction (1 for ParticipantCreate)
payloadParticipantCreatePayloadContains the information about the participant to be registered

ParticipantCreatePayload

ParametersTypeDescription
idHEX (32 Bytes)Id of the participant to be registered
addArrayList of new keys to be added to the account.
valueAssetActionPayloadOptional payload defining contextual parameters or initialization actions.
  {
"sender": {
"id": "0x000000001ec28dabfc3e4ac4dfc2084b45785b5e9cf1287b63a4f46900000000",
"sequence": 0,
"key_id": 0
},
"fuel_price": 1,
"fuel_limit": 10000,
"ix_operations": [
{
"type": 1,
"payload": {
"id": "0x000000004678e9f5bf2f66362ef5367fbc72efe7b419a5e7d851f57b00000000",
"keys_payload": [
{
"public_key": "0x00000000513b40a069905a1b05bd28d8338ad4a2eff419d7972be75900000000",
"weight": 1000,
"signature_algorithm": 0
}
],
"value": {
"asset_id": "0x108000004cd973c4eb83cdb8870c0de209736270491b7acc99873da100000000",
"callsite": "Transfer",
"calldata": "0x0d6f06659601c502616d6f756e7403138862656e65666963696172790600000000513b40a069905a1b05bd28d8338ad4a2eff419d7972be75900000000"
}
}
}
],
"participants": [
{
"id": "0x108000004cd973c4eb83cdb8870c0de209736270491b7acc99873da100000000",
"lock_type": 2
}
]
}

AccountConfigure

This operation manages an account’s configuration by enabling the addition or revocation of associated cryptographic keys. It ensures that account control and permissions remain flexible and securely maintained over time.

AccountConfigureOperation

ParameterTypeDescription
typeNUMBERType of interaction (5 for AccountConfigure)
payloadAccountConfigurePayloadContains the key management details for account configuration.

AccountConfigurePayload

ParameterTypeDescription
addArrayList of new keys to be added to the account.
revokeArrayList of existing keys to be revoked.

KeyAddPayload

ParameterTypeDescription
public_keyBYTESPublic key of the account key to be added.
weightNUMBERThe weight assigned to the key for multi-signature operations.
signature_algorithmNUMBERThe signature algorithm type used by the key.

KeyRevokePayload

ParameterTypeDescription
key_idNUMBERThe unique identifier of the key to revoke.
{
"sender": {
"id": "0x000000001ec28dabfc3e4ac4dfc2084b45785b5e9cf1287b63a4f46900000000",
"sequence": 1,
"key_id": 0
},
"fuel_price": 1,
"fuel_limit": 10000,
"ix_operations": [
{
"type": 2,
"payload": {
"add": [
{
"public_key": "0x000000004678e9f5bf2f66362ef5367fbc72efe7b419a5e7d851f57b00000000",
"weight": 1000,
"signature_algorithm": 0
}
],
"revoke": []
}
}
],
"participants": []
}

AccountInherit

This operation allows an account to inherit the context or configuration of a specified target account. It is primarily used to instantiate sub-accounts that operate under shared governance or predefined parameters.

AccountInheritOperation

ParameterTypeDescription
typeNUMBERType of interaction (6 for AccountInherit)
payloadAccountInheritPayloadContains information about the inheritance process.

AccountInheritPayload

ParameterTypeDescription
target_accountHEX (32 Bytes)The account identifier whose context or configuration will be inherited.
valueAssetActionPayloadOptional payload defining contextual parameters or initialization actions.
sub_account_indexNUMBERThe index of the sub-account inheriting from the target account.
{
"sender": {
"id": "0x000000001ec28dabfc3e4ac4dfc2084b45785b5e9cf1287b63a4f46900000000",
"sequence": 2,
"key_id": 0
},
"fuel_price": 1,
"fuel_limit": 10000,
"ix_operations": [
{
"type": 3,
"payload": {
"target_account": "0x20800000a6ba9853f131679d00da0f033516a2efe9cd53c3d54e1f9a00000000",
"value": {
"asset_id": "0x108000004cd973c4eb83cdb8870c0de209736270491b7acc99873da100000000",
"callsite": "Transfer",
"calldata": "0x0d6f06659601c502616d6f756e7403138862656e65666963696172790600000000513b40a069905a1b05bd28d8338ad4a2eff419d7972be75900000000"
},
"sub_account_index": 0
}
}
],
"participants": [
{
"id": "0x108000004cd973c4eb83cdb8870c0de209736270491b7acc99873da100000000",
"lock_type": 2
}
]
}

AssetCreate

This operation defines and registers a new asset within the Tesseract Lattice. It establishes the foundational metadata, ownership structure, and initial state of the asset.

AssetCreateOperation

ParameterTypeDescription
typeNUMBERType of interaction (4 for AssetCreate)
payloadAssetCreatePayloadContains the information about the asset to be created

AssetCreatePayload

ParametersTypeDescription
symbolSTRINGSymbol of the asset (e.g., KOI)
max_supplyNUMBERMaximum supply of the asset (e.g., 20000)
standardNUMBERStandard of the asset (e.g., 0)
dimensionNUMBERDimension or type classification of the asset (e.g., 0)
enable_eventsBOOLEANWhether events are enabled for the asset
managerSTRINGParticipant id of the asset manager

AssetCreateResult

ParametersTypeDescription
asset_id[AssetID][AssetID_link]Asset ID of created asset
idHEXAccount id of asset
{
"sender": {
"id": "0x000000001ec28dabfc3e4ac4dfc2084b45785b5e9cf1287b63a4f46900000000",
"sequence": 4,
"key_id": 0
},
"fuel_price": 1,
"fuel_limit": 10000,
"ix_operations": [
{
"type": 4,
"payload": {
"symbol": "KOI",
"max_supply": 20000,
"standard": 0,
"dimension": 0,
"enable_events": true,
"manager": "0x000000001ec28dabfc3e4ac4dfc2084b45785b5e9cf1287b63a4f46900000000"
}
}
],
"participants": []
}

AssetAction

This operation executes asset-specific routines. It encompasses a wide range of programmable asset behaviors, including transfers, minting, burning, approvals, locking, and other custom interactions defined within the asset logic.

AssetActionOperation

ParameterTypeDescription
typeNUMBERType of interaction (5 for AssetAction)
payloadAssetActionPayloadContains the information about the asset to be transferred

AssetActionPayload

ParameterTypeDescription
asset_idHEX (32 Bytes)The asset or context reference identifier.
callsiteSTRINGThe function or entry point invoked during inheritance.
calldataHEXEncoded call data representing contextual parameters.
interfacesmap[HEX]HEX (32 Bytes)The external logic interfaces required for this interaction.
{
"sender": {
"id": "0x000000001ec28dabfc3e4ac4dfc2084b45785b5e9cf1287b63a4f46900000000",
"sequence": 7,
"key_id": 0
},
"fuel_price": 1,
"fuel_limit": 10000,
"ix_operations": [
{
"type": 5,
"payload": {
"asset_id": "0x10030000d9f12d13c0347a737430cdbcca174164f0823ccc39bedbe800000000",
"callsite": "Transfer",
"calldata": "0x0d6f06659601c502616d6f756e7403138862656e65666963696172790600000000ed434a2ab138e69295e134686d57d80a9aa3325dbbde9bbf00000000"
}
}
],
"participants": [
{
"id": "0x00000000ed434a2ab138e69295e134686d57d80a9aa3325dbbde9bbf00000000",
"lock_type": 0
},
{
"id": "0x10030000d9f12d13c0347a737430cdbcca174164f0823ccc39bedbe800000000",
"lock_type": 2
}
]
}

LogicDeploy

This operation deploys a new logic instance to the network for decentralized execution. It enables the registration of custom routines or smart modules that can be invoked by participants.

LogicDeployOperation

ParameterTypeDescription
typeNUMBERType of interaction (9 for LogicDeploy)
payloadLogicDeployPayloadContains the information about the logic to be deployed

LogicDeployPayload

ParametersTypeDescription
manifestHEXserialized manifest
callsiteSTRINGroutine to be executed
calldataHEXserialized input for logic deploy

LogicDeployResult

ParametersTypeDescription
logic_id[LogicID][LogicID_link]Logic ID of deployed Logic
errorHEXserialised error data if deployer execution fails
{
"sender": {
"id": "0x000000001ec28dabfc3e4ac4dfc2084b45785b5e9cf1287b63a4f46900000000",
"sequence": 8,
"key_id": 0
},
"fuel_price": "0x130D41",
"fuel_limit": "0x130D41",
"ix_operations": [
{
"type": 11,
"payload": {
"manifest": "0x7b2273796e746178223a22302e312e30222c22656e67696e65223a7b226b696e64223a2250495341222c22666c616773223a5b5d7d2c22656c656d656e7473223a5b7b22707472223a302c2264657073223a6e756c6c2c226b696e64223a227374617465222c2264617461223a7b226b696e64223a2270657273697374656e74222c226669656c6473223a5b7b22736c6f74223a302c226c6162656c223a226e616d65222c2274797065223a22737472696e67227d2c7b22736c6f74223a312c226c6162656c223a2273796d626f6c222c2274797065223a22737472696e67227d2c7b22736c6f74223a322c226c6162656c223a22737570706c79222c2274797065223a22753634227d2c7b22736c6f74223a332c226c6162656c223a2262616c616e636573222c2274797065223a226d61705b616464726573735d753634227d2c7b22736c6f74223a342c226c6162656c223a22616c6c6f77616e636573222c2274797065223a226d61705b616464726573735d6d61705b616464726573735d753634227d5d7d7d2c7b22707472223a312c2264657073223a5b305d2c226b696e64223a22726f7574696e65222c2264617461223a7b226e616d65223a2253656564657221222c226b696e64223a226465706c6f796572222c2261636365707473223a5b7b22736c6f74223a302c226c6162656c223a226e616d65222c2274797065223a22737472696e67227d2c7b22736c6f74223a312c226c6162656c223a2273796d626f6c222c2274797065223a22737472696e67227d2c7b22736c6f74223a322c226c6162656c223a22737570706c79222c2274797065223a22753634227d2c7b22736c6f74223a332c226c6162656c223a22736565646572222c2274797065223a2261646472657373227d5d2c2272657475726e73223a6e756c6c2c226578656375746573223a7b2262696e223a5b342c302c302c3132392c302c302c342c302c312c3132392c302c312c342c302c322c3132392c302c322c3132382c312c332c342c322c332c38342c312c322c302c3132392c312c335d2c22686578223a22222c2261736d223a6e756c6c7d2c2263617463686573223a6e756c6c7d7d2c7b22707472223a322c2264657073223a6e756c6c2c226b696e64223a22636f6e7374616e74222c2264617461223a7b2274797065223a22753634222c2276616c7565223a22307830333061227d7d2c7b22707472223a332c2264657073223a6e756c6c2c226b696e64223a2274797065646566222c2264617461223a226d61705b616464726573735d753634227d2c7b22707472223a342c2264657073223a5b305d2c226b696e64223a22726f7574696e65222c2264617461223a7b226e616d65223a224e616d65222c226b696e64223a22696e766f6b61626c65222c2261636365707473223a6e756c6c2c2272657475726e73223a5b7b22736c6f74223a302c226c6162656c223a226e616d65222c2274797065223a22737472696e67227d5d2c226578656375746573223a7b2262696e223a5b3132382c302c302c352c302c305d2c22686578223a22222c2261736d223a6e756c6c7d2c2263617463686573223a6e756c6c7d7d2c7b22707472223a352c2264657073223a5b305d2c226b696e64223a22726f7574696e65222c2264617461223a7b226e616d65223a2253796d626f6c222c226b696e64223a22696e766f6b61626c65222c2261636365707473223a6e756c6c2c2272657475726e73223a5b7b22736c6f74223a302c226c6162656c223a2273796d626f6c222c2274797065223a22737472696e67227d5d2c226578656375746573223a7b2262696e223a5b3132382c302c312c352c302c305d2c22686578223a22222c2261736d223a6e756c6c7d2c2263617463686573223a6e756c6c7d7d2c7b22707472223a362c2264657073223a5b305d2c226b696e64223a22726f7574696e65222c2264617461223a7b226e616d65223a22446563696d616c73222c226b696e64223a22696e766f6b61626c65222c2261636365707473223a6e756c6c2c2272657475726e73223a5b7b22736c6f74223a302c226c6162656c223a22646563696d616c73222c2274797065223a22753634227d5d2c226578656375746573223a7b2262696e223a5b31372c302c322c31362c302c302c352c302c305d2c22686578223a22222c2261736d223a6e756c6c7d2c2263617463686573223a6e756c6c7d7d2c7b22707472223a372c2264657073223a5b305d2c226b696e64223a22726f7574696e65222c2264617461223a7b226e616d65223a22546f74616c537570706c79222c226b696e64223a22696e766f6b61626c65222c2261636365707473223a6e756c6c2c2272657475726e73223a5b7b22736c6f74223a302c226c6162656c223a22737570706c79222c2274797065223a22753634227d5d2c226578656375746573223a7b2262696e223a5b3132382c302c322c352c302c305d2c22686578223a22222c2261736d223a6e756c6c7d2c2263617463686573223a6e756c6c7d7d2c7b22707472223a382c2264657073223a5b305d2c226b696e64223a22726f7574696e65222c2264617461223a7b226e616d65223a2242616c616e63654f66222c226b696e64223a22696e766f6b61626c65222c2261636365707473223a5b7b22736c6f74223a302c226c6162656c223a2261646472222c2274797065223a2261646472657373227d5d2c2272657475726e73223a5b7b22736c6f74223a302c226c6162656c223a2262616c616e6365222c2274797065223a22753634227d5d2c226578656375746573223a7b2262696e223a5b3132382c302c332c342c312c302c38332c322c302c312c352c322c305d2c22686578223a22222c2261736d223a6e756c6c7d2c2263617463686573223a6e756c6c7d7d2c7b22707472223a392c2264657073223a5b305d2c226b696e64223a22726f7574696e65222c2264617461223a7b226e616d65223a22416c6c6f77616e6365222c226b696e64223a22696e766f6b61626c65222c2261636365707473223a5b7b22736c6f74223a302c226c6162656c223a226f776e6572222c2274797065223a2261646472657373227d2c7b22736c6f74223a312c226c6162656c223a227370656e646572222c2274797065223a2261646472657373227d5d2c2272657475726e73223a5b7b22736c6f74223a302c226c6162656c223a22616c6c6f77616e6365222c2274797065223a22753634227d5d2c226578656375746573223a7b2262696e223a5b3132382c302c342c342c312c302c38332c322c302c312c342c332c312c38332c342c322c332c352c342c305d2c22686578223a22222c2261736d223a6e756c6c7d2c2263617463686573223a6e756c6c7d7d2c7b22707472223a31302c2264657073223a5b302c335d2c226b696e64223a22726f7574696e65222c2264617461223a7b226e616d65223a22417070726f766521222c226b696e64223a22696e766f6b61626c65222c2261636365707473223a5b7b22736c6f74223a302c226c6162656c223a226f776e6572222c2274797065223a2261646472657373227d2c7b22736c6f74223a312c226c6162656c223a227370656e646572222c2274797065223a2261646472657373227d2c7b22736c6f74223a322c226c6162656c223a22616d6f756e74222c2274797065223a22753634227d5d2c2272657475726e73223a5b7b22736c6f74223a302c226c6162656c223a226f6b222c2274797065223a22626f6f6c227d5d2c226578656375746573223a7b2262696e223a5b3132382c302c342c342c312c302c38332c322c302c312c33322c332c322c39382c332c332c31372c342c31302c332c342c332c31372c342c302c34302c342c342c33362c322c342c312c342c332c312c342c342c322c38342c322c332c342c38342c302c312c322c3132392c302c342c34312c302c312c39382c302c302c352c302c305d2c22686578223a22222c2261736d223a6e756c6c7d2c2263617463686573223a6e756c6c7d7d2c7b22707472223a31312c2264657073223a5b305d2c226b696e64223a22726f7574696e65222c2264617461223a7b226e616d65223a225472616e7366657221222c226b696e64223a22696e766f6b61626c65222c2261636365707473223a5b7b22736c6f74223a302c226c6162656c223a2266726f6d222c2274797065223a2261646472657373227d2c7b22736c6f74223a312c226c6162656c223a22746f222c2274797065223a2261646472657373227d2c7b22736c6f74223a322c226c6162656c223a22616d6f756e74222c2274797065223a22753634227d5d2c2272657475726e73223a5b7b22736c6f74223a302c226c6162656c223a226f6b222c2274797065223a22626f6f6c227d5d2c226578656375746573223a7b2262696e223a5b3132382c302c332c342c312c302c38332c322c302c312c342c332c322c36382c342c332c322c31372c352c31302c332c352c342c34312c302c312c352c302c302c302c312c3130322c342c322c332c38342c302c312c342c342c352c312c38332c342c302c352c3130312c362c342c332c38342c302c352c362c3132392c302c332c34312c302c312c39382c302c302c352c302c305d2c22686578223a22222c2261736d223a6e756c6c7d2c2263617463686573223a6e756c6c7d7d2c7b22707472223a31322c2264657073223a5b305d2c226b696e64223a22726f7574696e65222c2264617461223a7b226e616d65223a224d696e7421222c226b696e64223a22696e766f6b61626c65222c2261636365707473223a5b7b22736c6f74223a302c226c6162656c223a22616d6f756e74222c2274797065223a22753634227d2c7b22736c6f74223a312c226c6162656c223a2261646472222c2274797065223a2261646472657373227d5d2c2272657475726e73223a5b7b22736c6f74223a302c226c6162656c223a226f6b222c2274797065223a22626f6f6c227d5d2c226578656375746573223a7b2262696e223a5b3132382c302c322c342c312c302c3130312c302c302c312c3132392c302c322c3132382c302c332c342c322c312c38332c332c302c322c3130312c332c332c312c38342c302c322c332c3132392c302c332c34312c302c312c39382c302c302c352c302c305d2c22686578223a22222c2261736d223a6e756c6c7d2c2263617463686573223a6e756c6c7d7d2c7b22707472223a31332c2264657073223a5b305d2c226b696e64223a22726f7574696e65222c2264617461223a7b226e616d65223a224275726e21222c226b696e64223a22696e766f6b61626c65222c2261636365707473223a5b7b22736c6f74223a302c226c6162656c223a22616d6f756e74222c2274797065223a22753634227d2c7b22736c6f74223a312c226c6162656c223a2261646472222c2274797065223a2261646472657373227d5d2c2272657475726e73223a5b7b22736c6f74223a302c226c6162656c223a226f6b222c2274797065223a22626f6f6c227d5d2c226578656375746573223a7b2262696e223a5b3132382c302c332c342c312c312c38332c322c302c312c342c332c302c36382c342c332c322c31372c352c31302c332c352c342c34312c302c312c352c302c302c302c312c3130322c342c322c332c38342c302c312c342c3132392c302c332c3132382c302c322c3130322c302c302c332c3132392c302c322c34312c302c312c39382c302c302c352c302c305d2c22686578223a22222c2261736d223a6e756c6c7d2c2263617463686573223a6e756c6c7d7d5d7d",
"callsite": "Seeder",
"calldata": "0x0def0106458601e501f605d506a60785086e616d65064d4f497365656465720652fdfc072182654f163f5f0f9a621d729566c74d10037c4d7bbb0407d1e2c649737570706c790301312d0073796d626f6c064d4f49"
}
}
],
"participants": []
}

LogicInvoke

This operation triggers the execution of a predefined routine within a deployed logic instance. It allows participants to invoke specific routines within the deployed logic modules on the network.

LogicInvokeOperation

ParameterTypeDescription
typeNUMBERType of interaction (10 for LogicInvoke)
payloadLogicInvokePayloadContains the information about the specific routine to be invoked

LogicInvokePayload

ParametersTypeDescription
logic_id[LogicID][LogicID_link]The unique identifier of the logic for that needs to be invoked.
callsiteSTRINGroutine to be executed
calldataHEXserialised input for logic execution

LogicInvokeResult

ParametersTypeDescription
outputsHEXserialised output of logic execution
errorHEXserialised error data if logic execution failed
  {
"sender": {
"id": "0x000000001ec28dabfc3e4ac4dfc2084b45785b5e9cf1287b63a4f46900000000",
"sequence": 9,
"key_id": 0
},
"fuel_price": "0x130D41",
"fuel_limit": "0x130D41",
"ix_operations": [
{
"type": 12,
"payload": {
"logic_id": "0x0800008d898ef91ebd8a208855d6d1c98939202cfcb6a067530845993fe6975de1eb84",
"callsite": "BalanceOf",
"calldata": "0x0d2f0645616464720652fdfc072182654f163f5f0f9a621d729566c74d10037c4d7bbb0407d1e2c649"
}
}
],
"participants": [
{
"id": "0x0800008d898ef91ebd8a208855d6d1c98939202cfcb6a067530845993fe6975de1eb84",
"lock_type": 1
}
]
}

Future Interaction Types

The set of supported Interaction in MOI today, only covers the core capabilities of the MOI Protocol for the Public Devnet. This set will be extended in future rollouts to support capabilities like native fuel management, governance, voting, etc.