Urbit phonetische Namen sind Basis-65536-Nummern. Wir haben zwei Sätze mit jeweils 256 Silben, einen "linken" Satz und einen "rechten" Satz, die als Ziffern mit den Werten 0-255 dienen. Alle Silben sind Konsonant-Vokal-Konsonant Kombinationen. Die Vokale sind a
beschränkt, i
, o
für „links“ Silben und e
, u
, y
für die „richtigen“ Silben (mit Ausnahme von zod
, Null, was eine unregelmäßig o
als Vokal).
Von 0-255 oder ~zod
-~fes
wird ein einsames rechte Silbe verwendet, aber ansonsten nur ein Wort von einer links und einer rechts Silbe gemacht gültig ist. Wörter sind getrennt durch einen einzelnen Bindestrich (-
), und gruppiert in Gruppen von vier Wörter, die selbst durch einen doppelten Bindestrich getrennt sind (--
). Ein Beispiel einer gültigen Nummer, um Ihnen eine Idee zu geben, ist ~novful-dilsut--widdeg-mitdyr-dorsud-miplex
. Führende Nullen sind ein Fehler - das bedeutet keine führende dozzod
s, oder, wenn Ihre Nummer nur ein Wort lang ist, keine führende 'doz'. (Ja, das ist ~doznec
ein Syntaxfehler in das richtige System.)
So ist es nur eine normale Zahlensystem, aber es gibt einen Haken: die Scrambler. Bevor ich darauf eingehe, werde ich die Ticketing-Hierarchie so erklären, als ob sie nicht existierte.
Identities 0x0
durch 0xff
, ~zod
zu ~fes
sind Galaxien. Sie sind die obersten in der Hierarchie, und ihre öffentlichen Schlüssel sind von uns in den Kernel fest codiert. 0x100
bis 0xffff
, ~marzod
bis ~fipfes
sind Sterne. Sterne werden ausgegeben durch eine Elterngalaxie, die ihren Schlüssel unterzeichnet.Diese Elterngalaxie ist , angezeigt durch das niedrigstwertige Byte. Zum Beispiel ~zod
(0x0
) kann Ausgabe ~marzod
(0x100
) bis ~fipzod
(0xff00
). Ein gewöhnlicher Urbit Netzwerkbenutzer hat einen Planeten, 0x1.0000
bis 0xffff.ffff
. In einer ähnlichen Weise ist ihr ausgebender Stern durch die niedrigstwertigen zwei Bytes gegeben. So ~marzod
(0x100
) kann Ausgabe ~doznec-marzod
(0x1.0100
) durch ~fipfes-marzod
(0xffff.0100
). Der abgebende "Stern" kann tatsächlich auch eine Galaxie sein - zum Beispiel ~zod
(0x0
) direkt Ausgaben ~doznec-dozzod
(0x1.0000
), ohne Zwischenstern. Die Hierarchie erstreckt sich auch auf Monde, 0x1.0000.0000
bis 0xffff.ffff.ffff.ffff
. Dies sind Ihre Geräte und andere Bürger der zweiten Klasse. Moons haben keine eigene Reputation, weil sie nur Teil ihrer Eltern sind - es ist wie IPv6 mit einer /64
die Grundzuteilung Einheit. Ihr Elternteil wird durch die niedrigstwertigen vier Bytes angezeigt.
Das Problem hier ist, dass ein Planet von einem Ticketing-Star, ausgestellt werden könnte, aber ein voller, freier Bürger von Urbit ist. Also wollen wir nicht wirklich, dass den Namen des Emittenten in seinem eigenen Namen trägt. Sein Herausgeber ist kein Geheimnis, es muss nur nicht dort im sichtbaren Namen sein, also Sie können nicht unbewusste Vereinigungen herstellen, die auf Abstammung basieren.
Um dies zu erreichen, ist der Planetenraum pseudozufällig verschlüsselt. (Es gibt eine gute Arbeit von John Black und Philip Rogaway über die Generierung von Pseudozufalls-Permutationen auf Domains, die keine einfachen Zweierpotenzen sind. Es hat eine großartige Pseudo-Feistel-Konstruktion, die extrem gut funktioniert auf unserer Domain-Größe von 232-216 .)
Der Mondraum hat auch seine Namen angepasst, um diese Pseudozufallsverwürfelung zu entsprechen. So ist zum Beispiel 0x1.0100
nicht ~doznec-marzod
, aber ~dardev-ristuc
(Verschlüsselung kann nicht endgültig sein), die keine Verbindung zu ~marzod
verrät. Sein Wert als Nummer ist immer noch 0x1.0100
, die Verschlüsselung ist nur ein Teil der phonetischen Basis.
Oberhalb von 0xffff.ffff.ffff.ffff
ist die Hierarchie zu Ende und die phonetische Basis wird wieder zu einer einfachen Basis.