_Docs/
Get StartedModulesPlatformDeployCookbookChangelogReference
_Stack
_Modules
  • Ledger
  • Numscript
    • Program Structure
    • Selecting an Interpreter
    • Unambiguous Monetary Notation
    • CLI
    • Numscript specs format
    • Reference
      • Send
      • Sources
      • Destinations
      • Rounding
      • Save
      • Overdraft
      • Variables
      • Metadata
      • oneofexp
      • Account Interpolationexp
      • get_assetexp
      • get_amountexp
      • Mid-script Function Callsexp
      • Asset Colorsexp
  • Connectivity
  • WalletsEE
  • FlowsEE
  • ReconciliationEE
  1. Modules
  2. Numscript
  3. Reference
  4. Metadata
Numscript

Metadata

Numscript transactions can interact with metadata, both on transactions and accounts.

Accounts metadata#

Reading metadata to initialize a variable#

Structured account metadata can be injected in Numscript variables during initialization. In the example below, we inject the monetary value stored under the metadata key "coupon_value" from the coupon account:

Numscript
vars {
  account  $coupon
  account  $wallet
  monetary $value = meta($coupon, "coupon_value")
}

send $value (
  source = $coupon
  destination = $wallet
)

Metadata injected in variables need to be typed, and its type is directly read from the value of the key type of the object stored under the metadata key. Its value is read from the value of the key value. Here are all the available types:

Writing account metadata during a transaction#

Metadata can be written to an account using the set_account_meta(_account_, "key", _value_) statement. The statement takes a string-type key and a value which can be of any type, either as a variable or a literal.

Writing metadata to a transaction#

Metadata can be written to a transaction using the set_tx_meta("key", _value_) statement. The statement takes a string-type key and a value which can be of any type, either as a variable or a literal.

Numscript
set_tx_meta("order_fee", [USD/2 100])
set_tx_meta("tax", 20/100)
set_tx_meta("collection_account", @platform:commission)
set_tx_meta("commission", $commission)

Wrap-up example#

Numscript
vars {
  account $order
  account $merchant = meta($order, "merchant")
  monetary $fee
  portion $commission
  string $ref
}

send $fee (
  source = @orders:1234
  destination = @platform:fees
)

send [USD/2 *] (
  source = @orders:1234
  destination = {
    $commission to @platform:fees
    remaining to $merchant
  }
)

set_account_meta($order, "reference", $ref)
set_tx_meta("order_fee", $fee)
set_tx_meta("tax", 20/100)
set_tx_meta("commission", $commission)
JSON
{
  "script": {
    "vars": {
      "order": "orders:186HH78UH",
      "fee": {
        "amount": 1000,
        "asset": "USD/2"
      },
      "commission": "15.5%",
      "reference": "108IUYGI"
    }
  }
}
Variablesoneof
On This Page
  • Accounts metadata
  • Reading metadata to initialize a variable
  • Writing account metadata during a transaction
  • Writing metadata to a transaction
  • Wrap-up example