Runes
Runes stellen Bitcoin-transacties in staat om Bitcoin-native digitale goederen te graveren, te slaan en over te dragen.
Hoewel elke inscriptie uniek is, is elke eenheid van een rune hetzelfde. Het zijn verwisselbare tokens, geschikt voor verschillende doeleinden.
Runestones
Rune-protocolberichten, genaamd runestones, worden opgeslagen in Bitcoin-transactieoutputs.
Een runestone-outputscriptpubkey begint met een OP_RETURN
, gevolgd door OP_13
, gevolgd door nul of meer datastuwers. Deze datastuwers worden samengevoegd en gedecodeerd in een reeks van 128-bit gehele getallen, en uiteindelijk geparsed in een runestone.
Een transactie mag maximaal één runestone bevatten.
Een runestone kan een nieuwe rune graveren, een bestaande rune slaan en runes overdragen van de invoeren naar de outputs van een transactie.
Een transactieoutput kan saldi van elk aantal runes bevatten.
Runes worden geïdentificeerd door ID's, die bestaan uit het blok waarin een rune is gegraveerd en de index van de graveringstransactie binnen dat blok, weergegeven in tekst als BLOK:TX
. Bijvoorbeeld, de ID van de rune gegraveerd in de 20e transactie van het 500e blok is 500:20
.
Graveren (Etching)
Runes komen tot stand door te worden gegraveerd. Graveren creëert een rune en stelt zijn eigenschappen in. Zodra deze eigenschappen zijn ingesteld, zijn ze onwijzigbaar, zelfs voor de graveren.
Naam
Namen bestaan uit de letters A tot Z en zijn tussen de één en zesentwintig letters lang. Bijvoorbeeld UNCOMMONGOODS
is een runennaam.
Namen mogen spaties bevatten, weergegeven als punten, om de leesbaarheid te verbeteren. UNCOMMONGOODS
kan bijvoorbeeld worden gegraveerd als UNCOMMON•GOODS
.
De uniciteit van een naam hangt niet af van spaties. Een rune kan dus niet worden gegraveerd met dezelfde reeks letters als een bestaande rune, zelfs niet als deze verschillende spaties heeft.
Spaties kunnen alleen worden geplaatst tussen twee letters. Bovendien tellen spaties niet mee voor het aantal letters.
Deelbaarheid
De deelbaarheid van een rune is hoe fijn deze kan worden verdeeld in zijn atomaire eenheden. Deelbaarheid wordt uitgedrukt als het aantal cijfers dat is toegestaan na de decimale punt in een hoeveelheid runes. Een rune met deelbaarheid 0 kan niet worden verdeeld. Een eenheid van een rune met deelbaarheid 1 kan worden verdeeld in tien sub-eenheden, een rune met deelbaarheid 2 kan worden verdeeld in honderd, enzovoort.
Symbool
Het valutateken van een rune is een enkel Unicode-teken, bijvoorbeeld $
, ⧉
of 🧿
, weergegeven na hoeveelheden van die rune.
101 atomaire eenheden van een rune met deelbaarheid 2 en symbool 🧿
zouden worden weergegeven als 1.01 🧿
.
Als een rune geen symbool heeft, moet het algemene valutasymbool ¤
, ook wel een scarabee genoemd, worden gebruikt.
Premine
De graveren van een rune kan naar eigen keuze een aantal eenheden van de rune die wordt gegraveerd aan zichzelf toewijzen. Deze toewijzing wordt een premine genoemd.
Voorwaarden
Een rune kan een open mint hebben, waardoor iedereen eenheden van die rune voor zichzelf kan creëren en toewijzen. Een open mint is onderworpen aan voorwaarden, die worden vastgesteld bij het graveren.
Een mint is open zolang aan alle voorwaarden van de mint wordt voldaan, en gesloten wanneer aan een van deze voorwaarden niet wordt voldaan. Bijvoorbeeld, een mint kan beperkt zijn tot een starthoogte, een eindhoogte en een limiet, en zal open zijn tussen de starthoogte en de eindhoogte, of totdat de limiet is bereikt, afhankelijk van wat het eerst gebeurt.
Limiet
Het aantal keren dat een rune mag worden geslagen is de limiet. Een mint wordt gesloten zodra de limiet is bereikt.
Aantal
Elke mint-transactie creëert een vast aantal nieuwe eenheden van een rune.
Starthoogte
Een mint is open vanaf het blok met de gegeven starthoogte.
Eindhoogte
Een rune mag niet worden gemint in of na het blok met de gegeven eindhoogte.
Start Offset
Een mint is open vanaf het blok waarvan de hoogte gelijk is aan de startoffset plus de hoogte van het blok waarin de rune werd gegraveerd.
End Offset
Een rune mag niet worden gemint in of na het blok waarvan de hoogte gelijk is aan de eindoffset plus de hoogte van het blok waarin de rune werd gegraveerd.
Minting
Zolang de mint van een rune open is, kan iedereen een mint-transactie maken die een vast aantal nieuwe eenheden van die rune creëert, onderhevig aan de voorwaarden van de mint.
Overdragen
Wanneer transactie-invoeren runes bevatten, of nieuwe runes worden gecreëerd door een premine of mint, worden die runes overgedragen naar de outputs van die transactie. Een runestone van een transactie kan beïnvloeden hoe invoerrunes naar outputs worden overgedragen.
Edicten
Een runestone kan elk aantal edicten bevatten. Edicten bestaan uit een rune-ID, een hoeveelheid en een outputnummer. Edicten worden in volgorde verwerkt, waarbij niet-toegewezen runes worden toegewezen aan outputs.
Pointer
Nadat alle edicten zijn verwerkt, worden de resterende niet-toegewezen runes overgedragen naar de eerste non-OP_RETURN
output van de transactie. Een runestone kan optioneel een pointer bevatten die een alternatieve standaardoutput specificeert.
Verbranden
Runes kunnen worden verbrand door ze over te dragen naar een OP_RETURN
output met een edict of pointer.
Cenotaaf
Runestones kunnen om verschillende redenen defect zijn, waaronder non-pushdata opcodes in de runestone OP_RETURN
, ongeldige varints of niet-herkende runestone-velden.
Defecte runestones worden cenotaafs genoemd.
Runes die als invoer worden gebruikt in een transactie met een cenotaaf worden verbrand. Runes die zijn gegraveerd in een transactie met een cenotaaf worden ingesteld als niet-slaable. Mints in een transactie met een cenotaaf tellen mee voor de mintlimiet, maar de geslagen runes worden verbrand.
Cenotaafs zijn een upgrade-mechanisme waarmee runestones nieuwe semantiek kunnen krijgen die verandert hoe runes worden gecreëerd en overgedragen, terwijl niet-geüpgradede clients niet worden misleid over de locatie van die runes. Niet-geüpgradede clients zullen die runes zien als zijnde verbrand.