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 $% [%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
%full kind with a
ships to $point:points is given immediately upon subscription and contains all public key records for the ships in question. After the
%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 [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
+$ 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.
listof ships and their $points in the ship's sponsorship chain, all the way to the galaxy level.
czaris a map from each galaxy's
life, and public key (
listof DNS suffixes used for galaxies, which is
bloqis the number of the Ethereum block in which the ship registered its keys with the Azimuth smart contract.
nodeis the URL of the Ethereum node used to monitor Azimuth.
+$ source (each ship term)
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 @udsourceid
Numerical index for Jael to organise its
sources. Jael assigns its
source-ids sequentially, starting from
+$ state-eth-node :: node config + meta $: top-source-id=source-id sources=(map source-id source) sources-reverse=(map source source-id) default-source=source-id ship-sources=(map ship source-id) ship-sources-reverse=(jug source-id ship) ==
Jael's data about
sources for PKI updates about ships.
top-source-idtracks the highest
source-idso Jael can easily determine what the next
mapof $source-ids to $sources.
sources-reversethe same as
sourcesbut in reverse.
default-sourceis the default
sourceto use (typically
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-reverseis the same as
ship-sourcesbut in reverse.
Structures for Ethereum blocks.
+$ hash @uxblockhash
Ethereum block hash.
+$ number @udblocknumber
Ethereum block number.
+$ id [=hash =number]
+$ block [=id =parent=hash]
Structures for points (Ship IDs in Azimuth).
+$ point $: =rift =life keys=(map life [crypto-suite=@ud =pass]) sponsor=(unit @p) ==
Public key data for a particular ship. The
rift is the current continuity breach number and
life is the current key revision number. The
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 [=life crypto-suite=@ud =pass]
An update to a ship's keys. The
life is the key revision number,
crypt-suite is a version number for the cryptographic suite used for keys in Azimuth, and
pass is the public key itself.
+$ diffs (list diff)
A list of invertible $diff:points.
+$ diff $% [%rift from=rift to=rift] [%keys from=key-update to=key-update] [%spon from=(unit @p) to=(unit @p)] ==
An invertible diff for public key (and related) changes to the state of an Azimuth point (ship ID).
%riftis a change to the
rift(continuity breach number) that occurs when a ship undergoes a continuity breach.
%keysis a change to a ship's
lifeand public key, specified in the $key-update:point.
%sponis a change to a ship's sponsor.
to field specify the old a new values respectively.
+$ udiffs (list [=ship =udiff])
A list of non-invertible $udiff:points.
+$ udiff $: =id:block $% [%rift =rift] [%keys key-update] [%spon sponsor=(unit @p)] [%disavow ~] == ==
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:
%riftmeans the ship has undergone a continuity breach and therefore the
rift(continuity revision number) has changed.
%keysmeans the ship's
life(key revision number) has changed, the $key-update:point contains the new
%sponmeans the ship's sponsor has changed.
%disavowmeans a previous Ethereum block has been disavowed.
udiff:point can be converted to a $diff:point with the
This structure is mostly a holdover from prior versions of Jael and is unused apart from $oath:pki.
+$ hand @uvH
+$ mind [who=ship lyf=life]
+$ name (pair @ta @t)
Name in both ASCII and Unicode.
+$ oath @
Signature. This type is used in the $seed for moons as a signature from the moon's parent.