Collected information
When a Dusk node starts, it records a few facts about itself, the operating system it runs on and the device under it, so that whoever looks after the node can tell what it is and where it runs. It gathers them once, at startup, keeps them in the node's key-value store and writes them to the node's logs.
Dusk sends none of this anywhere by itself. It leaves the node in two ways, both
started from outside it: a client that connects to the node can read it, from
the key-value store or from the logs, and logs stream sends the node's logs to
a file or a collector. None of it is kept across a restart; the node gathers it
again each time it starts.
Some of these facts can identify more than the node: the device's id, which stays the same for as long as the operating system is installed; the device's network name, or on Windows its computer name, which on many computers includes its owner's name; and the path of the program the node runs from and of the directory it was started in, which can include the name of an account's home folder. Anyone who can connect to the node can read them.
What a node records depends on the platform it runs on and on the
impl it was built with - the
part of Dusk that runs it on that platform. The sections below cover the impls
in Dusk's repository: nix on Linux, Android, macOS, iOS, the BSDs and illumos,
windows on Windows, and std on any platform.
Key-value store lists the key each
fact is kept under.
On all platforms
Nodes built with the nix, std and windows impls all record:
| Information | Where it comes from |
|---|---|
| Dusk's version, and the revision it was built from | The node's own build |
| The processor architecture and operating system the node was built for, and whether it is a 32- or 64-bit build | The node's own build |
Which impl the node was built with, e.g. nix, std or windows |
The node's own build |
| The process id the operating system gave the node, the path of the program file it runs from, the directory it was started in, and the process id of the process that started it | The operating system |
| The system's time zone | The operating system |
| How many processor cores the node may use | The operating system |
Linux
| Information | Where it comes from |
|---|---|
| The kernel's name, release and version, the device's network name, its hardware type and its domain name | The kernel |
| Which distribution and version this is - its name, version and codename, and the distributions it is based on | The distribution's release file, /etc/os-release, or /usr/lib/os-release |
| An id that changes every time the device boots | The kernel |
| The account ids the node runs as | The operating system |
| How many files the node may keep open at once, and how large a crash dump of the node may be | The limits the operating system sets for the node |
What process 1 is - systemd, init, or in a container whatever the container runs first |
The kernel, unless it hides process 1 from the node |
| The version of the C library the node runs with, on systems with glibc | The C library |
| Who made the device and its model | The device's firmware (DMI), or for the model on boards without it, the device tree |
| The processor's name | The kernel's CPU information, /proc/cpuinfo |
| When the device last booted | The kernel |
| The device's total memory and swap | The kernel |
| The device's id | The system's machine id file, /var/lib/dbus/machine-id or /etc/machine-id |
Android
| Information | Where it comes from |
|---|---|
| The Android version, API level, security patch level and build number | The device's system properties |
| The device's model, manufacturer and brand, the fingerprint of the exact build it runs, the kind of build it is, and the processor ABIs it runs | The device's system properties |
| The processor's name, on Android 12 and later | The device's system properties |
| The kernel's name, release and version, the device's network name, its hardware type and its domain name | The kernel |
| The account ids the node runs as | The operating system |
| How many files the node may keep open at once, and how large a crash dump of the node may be | The limits the operating system sets for the node |
| When the device last booted | The kernel |
| The device's total memory and swap | The kernel |
Android gives native programs no id for the device, so an Android node records none.
macOS
| Information | Where it comes from |
|---|---|
| The macOS version and build | The system |
| Whether the node runs translated by Rosetta - an Intel build on an Apple silicon Mac | The system |
The Mac's model, e.g. MacBookPro18,3, and its processor's name |
The system |
| When the Mac last booted | The system |
| The kernel's name, release and version, the Mac's network name and its hardware type | The kernel |
| The account ids the node runs as | The operating system |
| How many files the node may keep open at once, and how large a crash dump of the node may be | The limits the operating system sets for the node |
| The Mac's total memory and swap | The system |
| The device's id | The Mac's hardware UUID |
iOS
| Information | Where it comes from |
|---|---|
| The iOS version and build | The system |
The device's model, e.g. iPhone14,2 |
The system |
| When the device last booted | The system |
| The kernel's name, release and version, the device's network name and its hardware type | The kernel |
| The account ids the node runs as | The operating system |
| How many files the node may keep open at once, and how large a crash dump of the node may be | The limits the operating system sets for the node |
| The device's total memory | The system |
iOS gives native programs no id for the device, so an iOS node records none.
The BSDs and illumos
| Information | Where it comes from |
|---|---|
| The kernel's name, release and version, the device's network name and its hardware type | The kernel |
| The account ids the node runs as | The operating system |
| How many files the node may keep open at once, and how large a crash dump of the node may be | The limits the operating system sets for the node |
| The device's id | /etc/hostid on FreeBSD, DragonFly, OpenBSD and NetBSD, or where it is missing the device's SMBIOS system UUID on FreeBSD and DragonFly; the host id on illumos |
A node on these platforms does not record the device's total memory.
Windows
| Information | Where it comes from |
|---|---|
The Windows version - major and minor version, build number and update revision - and its display version, e.g. 23H2 |
The system, and the Windows registry for the update revision and the display version |
The Windows edition, e.g. Professional |
The Windows registry |
| The computer's name | The system |
| The session the node runs in - whether it runs as a service - and whether it runs with an administrator's rights | The system |
| The device's own processor architecture, and whether the node runs emulated on it | The system |
| Who made the device, its model, and its processor's name | The Windows registry, as the firmware reports them |
| When the device last booted | The system |
| The device's total memory | The system |
| The device's id | The Windows registry, MachineGuid |
Nodes built with the std impl
A node built with the portable std impl, on any platform, records what
all platforms record - except, on Windows, the time zone
and the process id of the process that started it - and the device's id on
Linux, macOS, Windows, the BSDs and illumos, from the same place as above.