Simulation contexts

This is a reference of how the init- and receive-context is specified as JSON, when simulating contract functions locally.

Init context

The context accessible in an init function.

Example of context

{
    "metadata": {
        "slotTime": "2021-01-01T00:00:01Z"
    },
    "initOrigin": "3uxeCZwa3SxbksPWHwXWxCsaPucZdzNaXsRbkztqUUYRo1MnvF",
    "senderPolicies": [{
        "identityProvider": 1,
        "createdAt": "202012",
        "validTo": "202109"
    }]
}

metadata

JSON Object containing the chain meta data, see Chain meta data for a reference of the fields.

initOrigin

The account address which triggered the invocation of the init function, by instantiating the smart contract.

Example:

"3uxeCZwa3SxbksPWHwXWxCsaPucZdzNaXsRbkztqUUYRo1MnvF"

senderPolicies

JSON array of the policies of the sender, see Policy for a reference a policy.

Receive context

The context accessible in a receive function.

Example of context:

{
    "metadata": {
        "slotTime": "2021-01-01T00:00:01Z"
    },
    "invoker": "3uxeCZwa3SxbksPWHwXWxCsaPucZdzNaXsRbkztqUUYRo1MnvF",
    "selfAddress": {"index": 0, "subindex": 0},
    "selfBalance": "0",
    "sender": {
        "type": "account",
        "address": "3uxeCZwa3SxbksPWHwXWxCsaPucZdzNaXsRbkztqUUYRo1MnvF"
    },
    "senderPolicies": [{
        "identityProvider": 1,
        "createdAt": "202012",
        "validTo": "202109"
    }],
    "owner": "3uxeCZwa3SxbksPWHwXWxCsaPucZdzNaXsRbkztqUUYRo1MnvF"
}

metadata

JSON Object containing the chain meta data, see Chain meta data for a reference of the fields.

invoker

The account address which made the transaction triggering the invocation of the receive function, by updating a smart contract instance.

Example:

"3uxeCZwa3SxbksPWHwXWxCsaPucZdzNaXsRbkztqUUYRo1MnvF"

sender

The address of the sender of the message triggering the receive function. Can be either a smart contract instance or an account address, given as a JSON object.

Example of account address:

{ "type": "account", "address": "3uxeCZwa3SxbksPWHwXWxCsaPucZdzNaXsRbkztqUUYRo1MnvF" }

Example of contract address:

{ "type": "contract", "address": { "index": 0, "subindex": 0 } }

senderPolicies

JSON array of the policies of the sender, see Policy for a reference a policy.

owner

JSON string containing the account address of the owner of the smart contract instance.

Example:

"3uxeCZwa3SxbksPWHwXWxCsaPucZdzNaXsRbkztqUUYRo1MnvF"

selfAddress

JSON object describing the contract address of the current smart contract instance. Must contain the index and subindex fields with JSON numbers.

Example:

{ "index": 0, "subindex": 0 }

selfBalance

A JSON string with the balance of the smart contract instance in micro GTU.

Example:

"100"

Chain meta data

Both the init- and receive-context contains a metadata section containing information of the blockchain at the block the smart contract is executed in. Below we refer to this block as the current block.

Example:

{
      "slotTime": "2021-01-01T00:00:01Z"
}

slotTime

The slot time at the beginning of the current block as a JSON string in the format of RFC3339 with precision up to milliseconds.

Policy

Both the init- and receive-context contain a list of policies of the sender. Such a policy is represented as a JSON Object.

Example:

{
    "identityProvider": 1,
    "createdAt": "202012",
    "validTo": "202109"
}

identityProvider

The id of the identity provider as a JSON number.

createdAt

The year and month of the date this policy was created at, given as a JSON string in the format YYYYMM.

validTo

The year and month of the date this policy is valid to, given as a JSON string in the format YYYYMM.

Support & Feedback

If you have questions or feedback, join us on Discourse, or contact us at support@concordium.software.