lightning-datastore

lightning-datastore -- Command for storing (plugin) data

SYNOPSIS

datastore key [string] [hex] [mode] [generation]

DESCRIPTION

The datastore RPC command allows plugins to store data in the Core Lightning database, for later retrieval.

  • key (one of): A key can either have children or a value, never both: parents are created and removed automatically.:
    • (array of strings): An array of values to form a hierarchy (though a single value is treated as a one-element array). Using the first element of the key as the plugin name (e.g. [ 'summary' ]) is recommended.
      • (string, optional)
    • (string)
  • string (string, optional): Data to be saved in string format.
  • hex (hex, optional): Data to be saved in hex format.
  • mode (string, optional) (one of "must-create", "must-replace", "create-or-replace", "must-append", "create-or-append"): Write mode to determine how the record is updated:
    • must-create: fails if it already exists.
    • must-replace: fails if it doesn't already exist.
    • create-or-replace: never fails.
    • must-append: must already exist, append this to what's already there.
    • create-or-append: append if anything is there, otherwise create. The default is must-create.
  • generation (u64, optional): If specified, means that the update will fail if the previously-existing data is not exactly that generation. This allows for simple atomicity. This is only legal with mode must-replace or must-append.

RETURN VALUE

On success, an object is returned, containing:

  • key (array of strings):
    • (string, optional): Part of the key added to the datastore.
  • generation (u64, optional): The number of times this has been updated.
  • hex (hex, optional): The hex data which has been added to the datastore.
  • string (string, optional): The data as a string, if it's valid utf-8.

ERRORS

The following error codes may occur:

  • 1202: The key already exists (and mode said it must not)
  • 1203: The key does not exist (and mode said it must)
  • 1204: The generation was wrong (and generation was specified)
  • 1205: The key has children already.
  • 1206: One of the parents already exists with a value.
  • -32602: invalid parameters

AUTHOR

Rusty Russell <[email protected]> is mainly responsible.

SEE ALSO

lightning-listdatastore(7), lightning-deldatastore(7), lightning-datastoreusage(7)

RESOURCES

Main web site: https://github.com/ElementsProject/lightning

EXAMPLES

Example 1:

Request:

lightning-cli datastore -k "key"='["employee", "index"]' "string"="saving employee keys to the store" "mode"="must-create"
{
  "id": "example:datastore#1",
  "method": "datastore",
  "params": {
    "key": [
      "employee",
      "index"
    ],
    "string": "saving employee keys to the store",
    "mode": "must-create"
  }
}

Response:

{
  "key": [
    "employee",
    "index"
  ],
  "generation": 0,
  "hex": "736176696e6720656d706c6f796565206b65797320746f207468652073746f7265",
  "string": "saving employee keys to the store"
}

Example 2:

Request:

lightning-cli datastore -k "key"="otherkey" "string"="other" "mode"="must-create"
{
  "id": "example:datastore#2",
  "method": "datastore",
  "params": {
    "key": "otherkey",
    "string": "other",
    "mode": "must-create"
  }
}

Response:

{
  "key": [
    "otherkey"
  ],
  "generation": 0,
  "hex": "6f74686572",
  "string": "other"
}

Example 3:

Request:

lightning-cli datastore -k "key"="otherkey" "string"=" key: text to be appended to the otherkey" "mode"="must-append" "generation"=0
{
  "id": "example:datastore#3",
  "method": "datastore",
  "params": {
    "key": "otherkey",
    "string": " key: text to be appended to the otherkey",
    "mode": "must-append",
    "generation": 0
  }
}

Response:

{
  "key": [
    "otherkey"
  ],
  "generation": 1,
  "hex": "6f74686572206b65793a207465787420746f20626520617070656e64656420746f20746865206f746865726b6579",
  "string": "other key: text to be appended to the otherkey"
}

Core Lightning (previously c-lightning) is a lightweight, highly customizable and standard compliant implementation of the Lightning Network protocol.

© 2023 Core Lightning
All rights reserved.

Discussion Forum

The official Core Lightning forum is hosted at discuss.corelightning.org

BuildonL2 Community

The official BuildOnL2 community lives at community.corelightning.org. Join us and build the future of bitcoin on lightning.

Mailing List

For general discussions about CLN implementation, use [email protected]. For the Lightning Network, use [email protected]

Telegram

Community-driven telegram group where most of the node operators hang out. Go to https://t.me/lightningd to join.

Discord

Community-driven discord server where the devs flock together. Go to https://discord.gg/w27fMFESMN to join.

Internet Relay Chat

Don't hesitate to reach out to us on IRC at #lightning-dev @ libera.chat, #c-lightning @ libera.chat.