Integrierte Funktionen
Die integrierten Funktionen sind in mehrere Kategorien unterteilt:
Contract, SubContract, Asset, Utils, Chain, Conversion, ByteVec, Cryptography.
Alle Built-in Functions haben das Suffix !
.
Alle Byte-Codierungen verwenden die Byte-Reihenfolge Big Endian.
Contract Functions
createContract
fn createContract!(bytecode:ByteVec, encodedImmFields:ByteVec, encodedMutFields:ByteVec) -> (ByteVec)
Erstellt einen neuen Vertrag ohne Token-Ausgabe.
@param bytecode der Bytecode des zu erstellenden Vertrags
@param encodedImmFields die codierten unveränderlichen Felder als ByteVec
@param encodedMutFields die codierten veränderlichen Felder als ByteVec
@returns die ID des erstellten Vertrags
createContractWithToken
fn createContractWithToken!(bytecode:ByteVec, encodedImmFields:ByteVec, encodedMutFields:ByteVec, issueTokenAmount:U256, issueTo?:Address) -> (ByteVec)
Erstellt einen neuen Vertrag mit Token-Ausgabe.
@param bytecode der Bytecode des zu erstellenden Vertrags
@param encodedImmFields die codierten unveränderlichen Felder als ByteVec
@param encodedMutFields die codierten veränderlichen Felder als ByteVec
@param issueTokenAmount die Menge der auszugebenden Token
@param issueTo (optional) eine festgelegte Adresse, um die ausgegebenen Token zu erhalten
@returns die ID des erstellten Vertrags
copyCreateContract
fn copyCreateContract!(contractId:ByteVec, encodedImmFields:ByteVec, encodedMutFields:ByteVec) -> (ByteVec)
Erstellt einen neuen Vertrag ohne Token-Ausgabe durch Kopieren des Codes eines anderen Vertrags. Dies kostet weniger Gas als createContract!
@param contractId die ID des zu kopierenden Vertrags
@param encodedImmFields die codierten unveränderlichen Felder als ByteVec
@param encodedMutFields die codierten veränderlichen Felder als ByteVec
@returns die ID des erstellten Vertrags
copyCreateContractWithToken
fn copyCreateContractWithToken!(contractId:ByteVec, encodedImmFields:ByteVec, encodedMutFields:ByteVec, issueTokenAmount:U256, issueTo?:Address) -> (ByteVec)
Erstellt einen neuen Vertrag mit Token-Ausgabe durch Kopieren des Codes eines anderen Vertrags. Dies kostet weniger Gas als createContractWithToken!(...).
@param contractId die ID des zu kopierenden Vertrags
@param encodedImmFields die codierten unveränderlichen Felder als ByteVec
@param encodedMutFields die codierten veränderlichen Felder als ByteVec
@param issueTokenAmount die Menge der auszugebenden Token
@param issueTo (optional) eine festgelegte Adresse zum Empfangen der ausgegebenen Token
@returns die ID des erstellten Vertrags
selfAddress
Gibt die Adresse des Vertrags zurück.
@returns die Adresse des Vertrags
selfContractId
Gibt die ID (ByteVec) des Vertrags zurück.
@returns die ID (ByteVec) des Vertrags
selfTokenId
Gibt die Token-ID (ByteVec) des Vertrags zurück.
@returns die Token-ID (ByteVec) des Vertrags
tokenId
Gibt die ID des Vertrags zurück.
@param contract die Vertragsvariable
@returns die ID des Vertrags
contractId
Gibt die ID des Vertrags zurück.
@param contract die Vertragsvariable
@returns die ID des Vertrags
callerContractId
Gibt die Vertrags-ID des Aufrufers zurück.
@returns die Vertrags-ID des Aufrufers
callerAddress
Gibt die Adresse des Aufrufers zurück. Wenn es in einem TxScript verwendet wird, gibt es die eindeutige Eingangsadresse zurück, wenn die Eingangsadressen identisch sind, sonst schlägt es fehl.
@returns die Adresse des Aufrufers. Wenn sie in einem TxScript verwendet wird, gibt sie die eindeutige Eingangsadresse zurück, wenn die Eingangsadressen gleich sind, ansonsten schlägt sie fehl
contractInitialStateHash
Gibt den Hash des anfänglichen Zustands des Vertrags zurück.
@param contractId die ID des Eingangsvertrags
@returns den Hash des Anfangszustands des Vertrags
contractCodeHash
Gibt den Contract-Code-Hash des Vertrags zurück.
@param contractId die ID des Eingangsvertrags
@returns der Contract-Code-Hash des Vertrags
callerInitialStateHash
Gibt den Hash des anfänglichen Zustands des Caller-Vertrags zurück.
@returns den Hash des anfänglichen Zustands des Caller-Vertrags
callerCodeHash
Gibt den Contract-Code-Hash des Caller-Vertrags, also dem Aufrufer zurück.
@returns den Contract-Code-Hash des Caller-Vertrags
contractExists
Überprüft, ob der Vertrag mit der angegebenen ID existiert.
@param contractId die ID des zu testenden Eingangsvertrags
@returns true, wenn der Vertrag in der Kette existiert, andernfalls false
destroySelf
Zerstört den Vertrag und überträgt das verbleibende Vermögen an eine festgelegte Adresse.
@param refundAddress die Adresse, um die verbleibenden Vermögenswerte im Vertrag zu erhalten
@returns
migrate
Migriert den Code des Vertrags.
@param newBytecode der neue Bytecode für den Vertrag, zu dem migriert werden soll
@returns
migrateWithFields
fn migrateWithFields!(newBytecode:ByteVec, newEncodedImmFields:ByteVec, newEncodedMutFields:ByteVec) -> ()
Migriert sowohl den Code als auch die Felder des Vertrags.
@param newBytecode der Bytecode für den Vertrag, zu dem migriert werden soll
@param newEncodedImmFields die als unveränderlich codierten Felder für den Vertrag, zu dem migriert werden soll
@param newEncodedMutFields die als unveränderlich codierten Felder für den Vertrag, zu dem migriert werden soll
@returns
isCalledFromTxScript
Überprüft, ob die Funktion von einem TxScript aufgerufen wird.
@returns true, wenn die Funktion von einem TxScript aufgerufen wird, andernfalls false
selfContract
Gibt den eigenen Vertrag zurück.
@returns Selbstvertrag
SubContract Functions
createSubContract
fn createSubContract!(subContractPath:ByteVec, bytecode:ByteVec, encodedImmFields:ByteVec, encodedMutFields:ByteVec) -> (ByteVec)
Erstellt einen neuen Untervertag ohne Token-Ausgabe.
@param subContractPath der Pfad des zu erstellenden Unter-Vertrags
@param bytecode der Bytecode des zu erstellenden Unter-Vertrags
@param encodedImmFields die als unveränderlich codierten Felder als ByteVec
@param encodedMutFields die als unveränderlich codierten Felder als ByteVec
@returns die ID des erstellten Vertrags
createSubContractWithToken
fn createSubContractWithToken!(subContractPath:ByteVec, bytecode:ByteVec, encodedImmFields:ByteVec, encodedMutFields:ByteVec, issueTokenAmount:U256, issueTo?:Address) -> (ByteVec)
Erstellt einen neuen Untervertag mit Token-Ausgabe.
@param subContractPath der Pfad des zu erstellenden Unter-Vertrags
@param bytecode der Bytecode des zu erstellenden Unter-Vertrags
@param encodedImmFields die als unveränderlich codierten Felder als ByteVec
@param encodedMutFields die als unveränderlich codierten Felder als ByteVec
@param issueTokenAmount die Menge der auszugebenden Token
@param issueTo (optional) eine festgelegte Adresse zum Empfangen der ausgegebenen Token
@returns die ID des erstellten Vertrags
copyCreateSubContract
fn copyCreateSubContract!(subContractPath:ByteVec, contractId:ByteVec, encodedImmFields:ByteVec, encodedMutFields:ByteVec) -> (ByteVec)
Erstellt einen neuen Untervertag ohne Token-Ausgabe durch Kopieren des Codes eines anderen Vertrags. Dies kostet weniger Gas als createSubContract!(...).
@param subContractPath der Pfad des zu erstellenden Unter-Vertrags
@param contractId die ID des zu kopierenden Vertrags
@param encodedImmFields die als unveränderlich codierten Felder als ByteVec
@param encodedMutFields die als unveränderlich codierten Felder als ByteVec
@returns die ID des erstellten Vertrags
copyCreateSubContractWithToken
fn copyCreateSubContractWithToken!(subContractPath:ByteVec, contractId:ByteVec, encodedImmFields:ByteVec, encodedMutFields:ByteVec, issueTokenAmount:U256, issueTo?:Address) -> (ByteVec)
Erstellt einen neuen Untervertag mit Token-Ausgabe durch Kopieren des Codes eines anderen Vertrags. Dies kostet weniger Gas als createSubContractWithToken!(...).
@param subContractPath der Pfad des zu erstellenden Unter-Vertrags
@param contractId die ID des zu kopierenden Vertrags
@param encodedImmFields die als unveränderlich codierten Felder als ByteVec
@param encodedMutFields die als unveränderlich codierten Felder als ByteVec
@param issueTokenAmount die Menge der auszugebenden Token
@param issueTo (optional) eine festgelegte Adresse zum Empfangen der ausgegebenen Token
@returns die ID des erstellten Vertrags
subContractId
Gibt die ID des Untervertags zurück.
@param subContractPath der Pfad des SubContract
@returns die ID des SubContract
subContractIdOf
Gibt die ID des Untervertags zurück.
@param contract der übergeordnete Vertrag des SubContract
@param subContractPath der Pfad des USubContract
@returns die ID des SubContract
subContractIdInParentGroup
Gibt die ID des Untervertags zurück.
@param contract der übergeordnete Vertrag des SubContract
@param subContractPath der Pfad des SubContract
@returns die ID des SubContract
Asset Functions
approveToken
Genehmigt die Verwendung einer bestimmten Menge an Token von der angegebenen Adresse.
@param fromAddress der übergeordnete Vertrag des SubContract
@param tokenId das zu genehmigende Token
@param amount die Menge der zu genehmigenden Token
@returns
tokenRemaining
Gibt die Menge der verbleibenden Tokenmenge in den Eingangsvermögen der Funktion zurück.
@param address die Eingangsadresse
@param tokenId die Token-ID
@returns die Menge der verbleibenden Token in den Eingangsvermögen der Funktion
transferToken
Überträgt Token aus dem Eingangsvermögen der Funktion.
@param fromAddress *die Adresse, von der Token transferiert werden sollen
@param toAddress die Adresse, zu der Token transferiert werden sollen
@param tokenId das zu transferierende Token
@param amount die Menge der zu transferierenden Token
@returns
transferTokenFromSelf
Überträgt die Token des Vertrags aus dem Eingangsvermögen der Funktion.
@param toAddress die Adresse, zu der Token transferiert werden sollen
@param tokenId das zu transferierende Token
@param amount die Menge der zu transferierenden Token
@returns
transferTokenToSelf
Überträgt Token an den Vertrag aus dem Eingangsvermögen der Funktion.
@param fromAddress die Adresse, von der Token transferiert werden sollen
@param tokenId das zu transferierende Token
@param amount die Menge der zu transferierenden Token
@returns
burnToken
Verbrennt Token aus dem Eingangsvermögen der Funktion.
@param address die Adresse, von der Token verbrannt werden sollen
@param tokenId das zu verbrennende Token
@param amount die Menge der zu verbrennenden Token
@returns
lockApprovedAssets
Sperrt das aktuelle genehmigte Vermögen.
@param address die Adresse, in der die Vermögen gesperrt werden sollen
@param timestamp der Zeitstempel, bis zu dem die Vermögen gesperrt werden sollen
@returns
Utils Functions
assert
Testet die Bedingung oder überprüft Invarianten.
@param condition die zu überprüfende Bedingung
@param errorCode der Fehlercode, der ausgeworfen wird, wenn die Überprüfung fehlschlägt
@returns
checkCaller
Überprüft Bedingungen des externen Aufrufers der Funktion.
@param condition die zu überprüfende Bedingung
@param errorCode der Fehlercode, der ausgeworfen wird, wenn die Überprüfung fehlschlägt
@returns
isAssetAddress
Gibt zurück, ob eine Adresse eine Vermögensadresse ist.
@param address die zu testende Eingangsadresse
@returns true, wenn die Adresse eine Vermögensadresse ist, andernfalls false
isContractAddress
Gibt zurück, ob eine Adresse eine Vertragsadresse ist.
@param address die zu testende Eingangsadresse
@returns true, wenn die Adresse eine Vertragsadresse ist, andernfalls false
zeros
Gibt einen ByteVec von Nullen zurück.
@param n die Anzahl der Nullen
@returns ein ByteVec aus Nullen
panic
Beendet die Anwendung sofort.
@param errorCode (optional) der Fehlercode, der geworfen wird, wenn panic!(...) aufgerufen wird
@returns
mulModN
Berechnet x * y % n.
@param x x
@param y y
@param n n
@returns berechne x * y % n
addModN
Berechnet (x + y) % n.
@param x x
@param y y
@param n n
@returns berechne (x + y) % n
u256Max
Gibt den maximalen Wert von U256 zurück.
@returns der maximale Wert von U256
i256Max
Gibt den maximalen Wert von I256 zurück.
@returns der maximale Wert von I256
i256Min
Gibt den minimalen Wert von I256 zurück.
@returns der minimale Wert von I256
nullContractAddress
Gibt die Null-Vertragsadresse mit der Vertrags-ID, die Nullen sind, zurück.
@returns die Null-Vertragsadresse mit der Vertrags-ID als Nullen
Chain Functions
networkId
Gibt die Netzwerk-ID (ein einzelnes Byte) zurück.
@returns die Netzwerk-ID (ein einzelnes Byte)
blockTimeStamp
Gibt den Block-Zeitstempel zurück.
@returns der Zeitstempel des Blocks
blockTarget
Gibt das Schwierigkeitsziel des Blocks zurück.
@returns das Schwierigkeitsziel des Blocks
txId
Gibt die aktuelle Transaktions-ID zurück.
@returns die aktuelle Transaktions-ID
txInputAddress
Gibt die n-te Transaktionseingangsadresse zurück.
@param txInputIndex der Index der Transaktionseingabe
@returns die n-te Transaktionseingangsadresse
txInputsSize
Gibt die Anzahl der Transaktionseingänge zurück.
@returns die Anzahl der Transaktionseingaben
txGasPrice
Gibt den aktuellen Gaspreis der Transaktion zurück.
@returns der aktuelle Transaktions-Gaspreis
txGasAmount
Gibt die aktuelle Gasmenge der Transaktion zurück.
@returns die aktuelle Transaktions-Gasmenge
txGasFee
Gibt die aktuelle Transaktionsgebühr zurück.
@returns die aktuelle Transaktions-Gebühr
verifyAbsoluteLocktime
Überprüft, ob die absolute Sperrzeit vor dem Block-Zeitstempel liegt, andernfalls schlägt es fehl.
@param lockUntil der Zeitstempel, bis zu dem die Sperre gültig ist
@returns
verifyRelativeLocktime
Überprüft, ob der Erstellungszeitstempel der Eingabe + Sperrdauer vor dem Block-Zeitstempel liegt, andernfalls schlägt es fehl.
@param txInputIndex der Index der Transaktionseingabe
@param lockDuration die Dauer, für die die Eingabe gesperrt ist
@returns
dustAmount
Gibt den Dust-Betrag einer UTXO zurück.
@returns der Dust-Betrag eines UTXO
Conversion Functions
toI256
Konvertiert U256 in I256.
@param from ein zu konvertierendes U256
@returns ein I256
toU256
Konvertiert I256 in U256.
@param from ein zu konvertierendes I256
@returns ein U256
toByteVec
Konvertiert Bool/I256/U256/Adresse in ByteVec
@param from ein Bool|I256|U256|Adresse, das konvertiert werden soll
@returns einen ByteVec
contractIdToAddress
Konvertiert die Vertrags-ID (ByteVec) in die Vertragsadresse (Adresse).
@param contractId die Eingabe-Vertrags-ID
@returns eine Vertragsadresse
addressToContractId
Konvertiert die Vertragsadresse (Adresse) in die Vertrags-ID (ByteVec).
@param contractAddress die Eingabe-Vertragsadresse
@returns eine Vertrags-ID
byteVecToAddress
Konvertiert ByteVec in Adresse.
@param bytes die ByteVec-Eingabe
@returns eine Adresse
u256To1Byte
Konvertiert U256 in 1 Byte.
@param u256 die U256-Eingabe
@returns 1 Byte
u256To2Byte
Konvertiert U256 in 2 Big-Endian-Bytes.
@param u256 die U256-Eingabe
@returns 2 Bytes
u256To4Byte
Konvertiert U256 in 4 Big-Endian-Bytes.
@param u256 die U256-Eingabe
@returns 4 Bytes
u256To8Byte
Konvertiert U256 in 8 Byte im Big-Endian-Format.
@param u256 die U256-Eingabe
@returns 8 Bytes
u256To16Byte
Konvertiert U256 in 16 Big-Endian-Bytes.
@param u256 die U256-Eingabe
@returns 16 Bytes
u256To32Byte
Konvertiert U256 in 32 Big-Endian-Bytes.
@param u256 die U256-Eingabe
@returns 32 Bytes
u256ToString
Konvertiert U256 in Zeichenkette in ByteVec.
@param u256 die U256-Eingabe
@returns die in den ByteVec umgewandelte Zeichenkette
i256ToString
Konvertiert I256 in Zeichenkette in ByteVec.
@param i256 die U256-Eingabe
@returns die in ByteVec umgewandelte Zeichenkette
boolToString
Konvertiert Bool in Zeichenkette in ByteVec.
@param bool die Bool-Eingabe
@returns die in ByteVec umgewandelte Zeichenkette
u256From1Byte
Konvertiert 1 Byte in U256.
@param bytes die ByteVec-Eingabe
@returns eine U256
u256From2Byte
Konvertiert 2 Big-Endian-Bytes in U256.
@param bytes die ByteVec-Eingabe
@returns eine U256
u256From4Byte
Konvertiert 4 Big-Endian-Bytes in U256.
@param bytes die ByteVec-Eingabe
@returns eine U256
u256From8Byte
Konvertiert 8 Big-Endian-Bytes in U256.
@param bytes die ByteVec-Eingabe
@returns eine U256
u256From16Byte
Konvertiert 16 Big-Endian-Bytes in U256.
@param bytes die ByteVec-Eingabe
@returns eine U256
u256From32Byte
Konvertiert 32 Big-Endian-Bytes in U256.
@param bytes die ByteVec-Eingabe
@returns eine U256
ByteVec Functions
size
Gibt die Größe des ByteVec zurück.
@param bytes ein ByteVec
@returns die Größe des ByteVec
byteVecSlice
Wählt ein Intervall von Bytes aus.
@param bytes ein ByteVec
@param from der niedrigste Index, der von dem ByteVec einbezogen werden soll
@param until der niedrigste Index, der von dem ByteVec ausgeschlossen werden soll
@returns a ein ByteVec, der die Elemente ab Index oder höher enthält, bis (aber nicht einschließlich) Index, von diesem ByteVec erstreckt
encodeToByteVec
Kodiert Eingaben als Big-Endian ByteVec.
@param any eine Sequenz von Eingabewerten
@returns ein ByteVec, die die Eingaben kodiert
Cryptography Functions
blake2b
Berechnet den Blake2b-256-Hash der Eingabe.
@param data die zu hashenden Eingabedaten
@returns das 32-bytes-Hashergebnis
keccak256
Berechnet den Keccak256-Hash der Eingabe.
@param data die zu hashenden Eingabedaten
@returns das Hashergebnis
sha256
Berechnet den Sha256-Hash der Eingabe.
@param data die zu hashenden Eingabedaten
@returns das Hashergebnis
sha3
Berechnet den Sha3-Hash der Eingabe.
@param data die zu hashenden Eingabedaten
@returns das Hashergebnis
verifyTxSignature
Überprüft die Transaktions-SecP256K1-Signatur eines öffentlichen Schlüssels. Die Signatur ist gegen die Transaktions-ID signiert.
@param publicKey der öffentliche Schlüssel (33 Bytes) des Signierenden
@returns
getSegregatedSignature
Die getrennte Signatur der Transaktion
@returns die getrennte Signatur der Transaktion
verifySecP256K1
Überprüft die SecP256K1-Signatur der Eingabe und des öffentlichen Schlüssels.
@param data die Daten (32 Bytes), die eigentlich signiert werden sollten
@param publicKey der öffentliche Schlüssel (33 Bytes) des Signierenden
@param signature der Signaturwert (64 Bytes)
@returns
verifyED25519
Überprüft die ED25519-Signatur der Eingabe und des öffentlichen Schlüssels.
@param data die Daten (32 Bytes), die eigentlich signiert werden sollten
@param publicKey der öffentliche Schlüssel (32 Bytes) des Signierenden
@param signature der Signaturwert (64 Bytes)
@returns
verifyBIP340Schnorr
Überprüft die BIP340 Schnorr-Signatur der Eingabe und des öffentlichen Schlüssels.
@param data die Daten (32 Bytes), die eigentlich signiert werden sollten
@param publicKey der öffentliche Schlüssel (32 Bytes) des Signierenden
@param signature der Signaturwert (64 Bytes)
@returns
ethEcRecover
Stellt das ETH-Konto wieder her, das die Daten signiert hat.
@param data die Daten, die eigentlich signiert werden sollten
@param signature der Signaturwert
@returns das ETH-Konto, das die Daten signiert hat