:DE: Address-Formate im Cardano-Ökosystem

Liebe Cardano-Community,

kann mir jemand eventuell folgende Frage beantworten?

Die alten Byron-Adressen hatten folgendes Format:
Ae2…
DdzFF…

Bei Shelley haben wir ja die BECH32-Adressen:
addr…
stake…

Aber wie sehen Pointer-, Franken- und/oder Enterprise-Adressen aus?
Vermutlich ist das eine etwas blöde Frage, bitte seid nicht zu streng mit mir. :joy:
Stake-Adressen sind anscheinend auch Pointer-Adressen?

Ich bin von folgenden Links und Videos nicht unbedingt schlauer geworden:
https://docs.cardano.org/core-concepts/cardano-addresses

Vielen Dank im Voraus für eure Hilfe! :slightly_smiling_face:

Die beginnen alle mit addr1 und werden nur daran unterschieden, was danach kommt.

Die Liste, was so alles möglich ist, ist hier: https://github.com/cardano-foundation/CIPs/tree/master/CIP-0019#binary-format
Oft wird das als Hexadezimalzahlen dargestellt. Dabei sind 4 Bit eines der Zeichen von 0 bis F.

Die zweite Hexadezimalziffer ist also gemäß dem unter “Network Tag” geschriebenen bei Shelley-Adressen immer 1 für das Mainnet und immer 0 für ein Testnet.

Die erste Hexadezimalziffer gibt dann an, welche Art von Adresse das ist:

  • 0 für „normale“ Adressen mit dem Hash eines Deiner Payment-Keys vorne und dem Hash Deines Stake-Keys hinten.
  • 1 für Scripte (simple oder Plutus), die gleichzeitig einen Stake-Key haben, vorne steht der Hash des Scriptes, hinten wieder der Hash des Stake-Keys.
  • 2 und 3 für das Gleiche, wobei aber nicht an einen normalen Key, sondern an ein Script delegiert ist. (Ist mir in freier Wildbahn noch nicht untergekommen.)
  • 4 und 5 für das Gleiche, aber mit Pointern statt eines normalen Keys für die Delegation.
  • 6 und 7 für die “Enterprise”-Variante also ohne Delegation, 6 für Payment-Key, 7 für Script.

In Cardanoscan werden beide Adressen angezeigt, oben die BECH32-Adresse mit addr1 vorne dran, darunter die hexadezimale Darstellung. BECH32 schauen wir uns gleich noch an.

Erstmal einige Beispiele, die ich auf die Schnelle gefunden habe:

Die häufiger anzutreffenden Adressen mit addr1 vorne dran sind BECH32-Adressen. Wie BECH32 genau funktioniert, steht hier: https://github.com/bitcoin/bips/blob/master/bip-0173.mediawiki#bech32

Das ist ein bisschen kompakter, weil hier ein Zeichen 5 Bit codiert und nicht nur 4 Bit wie bei Hexadezimal-Zahlen. Außerdem gibt es am Ende 6 Zeichen Prüfsumme, die sicherstellt, dass man sich nicht vertippt hat.

(EDIT: Es ist natürlich noch kompakter, das Ganze nicht als Zeichenkette, sondern als die Hexadezimalzahlen selbst zu speichern. Das ist, so weit ich weiß, das, was in den Transaktionen und Blöcken selbst gemacht wird. Das addr1-Zeug ist nur die Darstellung für die Menschen.)

Der Adress-Typ wird durch die ersten 8 Bit angegeben, haben wir oben gesehen. Das bestimmt das erste Zeichen nach addr1 komplett und schränkt das zweite auf jeweils vier Möglichkeiten ein:

  • „Normale“ Adresse: 010000 000100000 001xxaddr1qy, addr1q9, addr1qx oder addr1q8
  • Delegiertes Script: 110001 000100010 001xxaddr1zy, addr1z9, addr1zx oder addr1z8
  • “Enterprise”-Adresse: 610110 000101100 001xxaddr1vy, addr1v9, addr1vx oder addr1v8
  • Nicht-delegiertes Script: 710111 000101110 001xxaddr1wy, addr1w9, addr1wx oder addr1w8

„Franken“-Adressen bedeutet einfach nur, dass ein Payment-Key einer Wallet mit dem Stake-Key einer anderen Wallet kombiniert wird. Das Cardano-Netzwerk an sich kennt gar keine Wallets, weiß nicht, ob Keys zur gleichen Wallet gehören, aus der gleichen Seed-Phrase abgeleitet sind. „Franken“-Adressen sehen also einfach wie ganz normale Adressen aus und beginnen auch mit addr1q.

Hoffe, das hilft zumindest teilweise und ist nicht genau so verwirrend wie das, was Du schon gefunden hast.

EDIT: War gestern ein bisschen spät dafür:

Man kann als Stake-Teil einer Adresse einen Pointer verwenden. (Typ-Byte wäre dann 41 bzw. 51 für Scripte, Adressen würden mit addr1g bzw. addr12 beginnen.) Habe ich auch noch nie in freier Wildbahn gesehen. Die allermeisten Stake-Teile von Adressen sind also keine Pointer.

Es scheint mir keine zusätzliche Flexibilität zu bieten, da es Zeiger auf eine konkrete Stake-Key-Registrierung sind. Der einzige Vorteil wäre also die Ersparnis von ein paar Byte in der Länge der Adresse. Scheint bisher niemand Wert gefunden zu haben, das zu benutzen.

3 Likes