For the complete documentation index, see llms.txt. This page is also available as Markdown.

Jael Data Types

Jael's section in lull.hoon contains three ancillary cores with their own type definitions as well as Jael's general types.

$public-keys-result

+$  public-keys-result
  $%  [%full points=(map ship point)]
      [%diff who=ship =diff:point]
      [%breach who=ship]
  ==

This is what Jael gives (in a %public-keys gift) to subcribers who are tracking public key information for a +set of $ships.

Typically the %full kind with a +map of $ships to $point:points is given immediately upon subscription and contains all public key records for the ships in question. After the %full, a %diff (including a $diff:point) will be given whenever a change (such as the sponsor or pubkey) has occurred for one of the ships being tracked, and a %breach will be given whenever a continuity breach for a tracked ship occurs.

$seed

+$  seed  [who=ship lyf=life key=ring sig=(unit oath:pki)]

Private boot parameters. The who field is the name of the ship, lyf is the $life (key revision number), key is the private key and sig is the signature of the parent ship if it's a moon, and ~ otherwise.

$dawn-event

+$  dawn-event
  $:  =seed
      spon=(list [=ship point:azimuth-types])
      czar=(map ship [=rift =life =pass])
      turf=(list turf)
      bloq=@ud
      node=(unit purl:eyre)
  ==

Ship initialisation parameters.

  • .seed contains the private boot parameters.

  • .spon is a +list of ships and their $points in the ship's sponsorship chain, all the way to the galaxy level.

  • .czar is a map from each galaxy's @p to its +rift, $life, and public key (+pass).

  • .turf is a +list of DNS suffixes used for galaxies, which is urbit.org by default.

  • .bloq is the number of the Ethereum block in which the ship registered its keys with the Azimuth smart contract.

  • .node is the URL of the Ethereum node used to monitor Azimuth.

$source

Source of public key updates for Jael. If it's a $term it's a Gall agent e.g %azimuth-tracker. If it's a $ship, Jael will subscribe to that ship's Jael for updates - e.g. Jael will subscribe to the parent planet of moons for updates about the moons.

$source-id

Numerical index for Jael to organise its $sources. Jael assigns its $source-ids sequentially, starting from 0.

$state-eth-node

Jael's data about $sources for PKI updates about ships.

  • .top-source-id tracks the highest $source-id so Jael can easily determine what the next $source-id should be.

  • .sources is a +map of $source-ids to $sources.

  • .sources-reverse the same as .sources but in reverse.

  • .default-source is the default $source to use (typically 0 - %azimuth-tracker).

  • .ship-sources is a +map from $ships to $source-ids and records where to get updates from for the ships in question. Typically these will map moons to their parent ships.

  • .ship-sources-reverse is the same as .ship-sources but in reverse.

block

Structures for Ethereum blocks.

$hash:block

Ethereum block hash.

$number:block

Ethereum block number.

$id:block

Ethereum block identifier - contains both the $hash:block and $number:block.

$block:block

A reference to an Ethereum block - contains the $id:block and the $hash:block of its parent for ordering purposes.

point

Structures for points (Ship IDs in Azimuth).

$point:point

Public key data for a particular ship. The rift is the current continuity breach number and $life is the current key revision number. The .keys +map contains the public key (.pass) for each $life up to the current one. The .sponsor is the current sponsor of the ship in question, if it has one.

$key-update:point

An update to a ship's keys. The $life is the key revision number, .crypto-suite is a version number for the cryptographic suite used for keys in Azimuth, and .pass is the public key itself.

$diffs:point

A list of invertible $diff:points.

$diff:point

An invertible diff for public key (and related) changes to the state of an Azimuth point (ship ID).

  • %rift is a change to the .rift (continuity breach number) that occurs when a ship undergoes a continuity breach.

  • %keys is a change to a ship's $life and public key, specified in the $key-update:point.

  • %spon is a change to a ship's sponsor.

The from and to field specify the old a new values respectively.

$udiffs:point

A list of non-invertible $udiff:points.

$udiff:point

A non-invertible diff for public key (and related) changes to the state of an Azimuth point (ship ID).

The $id:block contains the block number and block hash of the Ethereum block in which the change occurred. The next part specifies what changed, where:

  • %rift means the ship has undergone a continuity breach and therefore the rift (continuity revision number) has changed.

  • %keys means the ship's $life (key revision number) has changed, the $key-update:point contains the new $life and pubkeys.

  • %spon means the ship's sponsor has changed.

  • %disavow means a previous Ethereum block has been disavowed.

A udiff:point can be converted to a $diff:point with the +udiff-to-diff:point function.

pki

This structure is mostly a holdover from prior versions of Jael and is unused apart from $oath:pki.

$hand:pki

128-bit Hash.

$mind:pki

Key identifier.

$name:pki

Name in both ASCII and Unicode.

$oath:pki

Signature. This type is used in the $seed for moons as a signature from the moon's parent.

Last updated