Fonctions intégrées
Les fonctions intégrées sont divisées en plusieurs catégories:
Contrat, Sous-contrat, Actif, Utilitaires, Chaîne, Conversion, ByteVec, Cryptographie.
Toutes les fonctions intégrées sont suffixées par !.
Tous les encodages de bytes utilisent l'ordre de bytes big-endian.
Fonctions du contrat
createContract
fn createContract!(bytecode:ByteVec, encodedImmFields:ByteVec, encodedMutFields:ByteVec) -> (ByteVec)
Crée un nouveau contrat sans émission de jetons.
@param bytecode le bytecode du contrat à créer
@param encodedImmFields les champs immuables encodés en tant que ByteVec
@param encodedMutFields les champs mutables encodés en tant que ByteVec
@returns l'id du contrat créé
createContractWithToken
fn createContractWithToken!(bytecode:ByteVec, encodedImmFields:ByteVec, encodedMutFields:ByteVec, issueTokenAmount:U256, issueTo?:Address) -> (ByteVec)
Crée un nouveau contrat avec émission de jetons.
@param bytecode le bytecode du contrat à créer
@param encodedImmFields les champs immuables encodés en tant que ByteVec
@param encodedMutFields les champs mutables encodés en tant que ByteVec
@param issueTokenAmount le montant de jeton à émettre
@param issueTo (optionnel) une adresse désignée pour recevoir les jetons émis
@returns l'id du contrat créé
copyCreateContract
fn copyCreateContract!(contractId:ByteVec, encodedImmFields:ByteVec, encodedMutFields:ByteVec) -> (ByteVec)
Crée un nouveau contrat sans émission de jetons en copiant le code d'un autre contrat. Cela coûte moins de gaz que createContract!(...).
@param contractId l'id du contrat à copier
@param encodedImmFields les champs immuables encodés en tant que ByteVec
@param encodedMutFields les champs mutables encodés en tant que ByteVec
@returns l'id du contrat créé
copyCreateContractWithToken
fn copyCreateContractWithToken!(contractId:ByteVec, encodedImmFields:ByteVec, encodedMutFields:ByteVec, issueTokenAmount:U256, issueTo?:Address) -> (ByteVec)
Crée un nouveau contrat avec émission de jetons en copiant le code d'un autre contrat. Cela coûte moins de gaz que createContractWithToken!(...).
@param contractId l'id du contrat à copier
@param encodedImmFields les champs immuables encodés en tant que ByteVec
@param encodedMutFields les champs mutables encodés en tant que ByteVec
@param issueTokenAmount la quantité de jetons à émettre
@param issueTo (facultatif) une adresse désignée pour recevoir les jetons émis
@returns l'id du contrat créé
selfAddress
Retourne l'adresse du contrat.
@returns l'adresse du contrat
selfContractId
Retourne l'id (ByteVec) du contrat.
@returns l'id(ByteVec) du contrat
selfTokenId
Retourne l'id du jeton (ByteVec) du contrat.
@returns l'id du jeton (ByteVec) du contrat
tokenId
Retourne l'id du contrat.
@param contract la variable du contrat
@returns l'id du contrat
contractId
Retourne l'id du contrat
@param contract la variable du contrat
@returns l'id du contrat
contractAddress
Retourne l'adresse du contrat
@param contract la variable du contrat
@returns the address of the contract
callerContractId
Retourne l'id de contrat de l'appelant.
@returns l'ide du contrat de l'appelant
callerAddress
Retourne l'adresse de l'appelant. Lorsqu'il est utilisé dans un TxScript, il renvoie l'adresse d'entrée unique si les adresses d'entrée sont identiques, sinon il échoue.
@returns l'adresse de l'appelant. Lorsqu'il est utilisé dans un TxScript, il renvoie l'adresse d'entrée unique si les adresses d'entrée sont identiques, sinon il échoue
contractInitialStateHash
Retourne le hash de l'état initial du contrat.
@param contractId l'id du contrat d'entrée
@returns le hachage du code du contrat
contractCodeHash
Retourne le hash du code de contrat du contrat.
@param contractId l'id du contrat d'entrée
@returns le hachage du code du contrat
callerInitialStateHash
Retourne le hash de l'état initial du contrat appelant.
@returns the initial state hash of the caller contract
callerCodeHash
Retourne le hash du code de contrat du contrat appelant.
@returns le hash du code du contrat de l'appelant
contractExists
Vérifie si le contrat existe avec id donné.
@param contractId l'id du contrat à tester
@returns vrai si le contrat existe sur la chaîne, faux sinon
destroySelf
Détruit le contrat et transfère les actifs restants à une adresse désignée.
@param refundAddress l'adresse pour recevoir les actifs restants dans le contrat
@returns
migrate
Migre le code du contrat.
@param newBytecode le nouveau bytecode vers lequel le contrat doit migrer
@returns
migrateWithFields
fn migrateWithFields!(newBytecode:ByteVec, newEncodedImmFields:ByteVec, newEncodedMutFields:ByteVec) -> ()
Migre à la fois le code et les champs du contrat.
@param newBytecode le bytecode pour le contrat vers lequel migrer
@param newEncodedImmFields les champs immuables encodés pour le contrat vers lequel migrer
@param newEncodedMutFields les champs mutables encodés pour le contrat vers lequel migrer
@returns
isCalledFromTxScript
Vérifie si la fonction est appelée par un TxScript.
@returns vrai si la fonction est appelée par un TxScript, faux sinon
selfContract
Retourne le contrat lui-même
@returns contrat lui-même
Fonctions de sous-contrat
createSubContract
fn createSubContract!(subContractPath:ByteVec, bytecode:ByteVec, encodedImmFields:ByteVec, encodedMutFields:ByteVec) -> (ByteVec)
Crée un nouveau sous-contrat sans émission de jetons.
@param subContractPath le chemin du sous-contrat à créer
@param bytecode le bytecode du sous-contrat à créer
@param encodedImmFields les champs immuables encodés sous forme de ByteVec
@param encodedMutFields les champs mutables encodés sous forme de ByteVec
@returns l'id du contrat créé
createSubContractWithToken
fn createSubContractWithToken!(subContractPath:ByteVec, bytecode:ByteVec, encodedImmFields:ByteVec, encodedMutFields:ByteVec, issueTokenAmount:U256, issueTo?:Address) -> (ByteVec)
Crée un nouveau sous-contrat avec émission de jetons.
@param subContractPath le chemin du sous-contrat à créer
@param bytecode le bytecode du sous-contrat à créer
@param encodedImmFields les champs immuables encodés sous forme de ByteVec
@param encodedMutFields les champs mutables encodés sous forme de ByteVec
@param issueTokenAmount la quantité de jetons à émettre
@param issueTo (facultatif) une adresse désignée pour recevoir les jetons émis
@returns * l'id du contrat créé*
copyCreateSubContract
fn copyCreateSubContract!(subContractPath:ByteVec, contractId:ByteVec, encodedImmFields:ByteVec, encodedMutFields:ByteVec) -> (ByteVec)
Crée un nouveau sous-contrat sans émission de jetons en copiant le code d'un autre contrat. Cela coûte moins de gaz que createSubContract!(...).
@param subContractPath le chemin du sous-contrat à créer
@param contractId the id of the contract to be copied
@param encodedImmFields les champs immuables encodés sous forme de ByteVec
@param encodedMutFields les champs mutables encodés sous forme de ByteVec
@returns * l'id du contrat créé*
copyCreateSubContractWithToken
fn copyCreateSubContractWithToken!(subContractPath:ByteVec, contractId:ByteVec, encodedImmFields:ByteVec, encodedMutFields:ByteVec, issueTokenAmount:U256, issueTo?:Address) -> (ByteVec)
Crée un nouveau sous-contrat avec émission de jetons en copiant le code d'un autre contrat. Cela coûte moins de gaz que createSubContractWithToken!(...).
@param subContractPath le chemin du sous-contrat à créer
@param contractId the id of the contract to be copied
@param encodedImmFields les champs immuables encodés sous forme de ByteVec
@param encodedMutFields les champs mutables encodés sous forme de ByteVec
@param issueTokenAmount la quantité de jetons à émettre
@param issueTo (facultatif) une adresse désignée pour recevoir les jetons émis
@returns * l'id du contrat créé*
subContractId
Retourne id du sous-contrat.
@param subContractPath le chemin du sous-contrat
@returns l'id du sous-contrat
subContractIdOf
Retourne id du sous-contrat.
@param contract le contrat parent du sous-contrat
@param subContractPath le chemin du sous-contrat
@returns l'id du sous-contrat
subContractIdInParentGroup
Retourne id du sous-contrat.
@param contract le contrat parent du sous-contrat
@param subContractPath le chemin du sous-contrat
@returns l'id du sous-contrat
Fonctions d'actif
approveToken
Approuve l'utilisation d'une certaine quantité de jetons à partir de l'adresse donnée.
@param fromAddress l'adresse pour autoriser le jeton depuis
@param tokenId le jeton à autoriser
@param amount la quantité du jeton à autoriser
@returns
tokenRemaining
Retourne le montant restant de jeton dans les actifs d'entrée de la fonction.
@param address l'adresse d'entrée
@param tokenId l'id du jeton
@returns la quantité restante du jeton dans les actifs d'entrée de la fonction
transferToken
Transfère des jetons à partir des actifs d'entrée de la fonction.
@param fromAddress l'adresse d'origine du transfert de jeton
@param toAddress l'adresse de destination du transfert de jeton
@param tokenId le jeton à transférer
@param amount la quantité de jeton à transférer
@returns
transferTokenFromSelf
Transfère les jetons du contrat à partir des actifs d'entrée de la fonction.
@param toAddress l'adresse de destination du transfert de jeton
@param tokenId le jeton à transférer
@param amount la quantité de jeton à transférer
@returns
transferTokenToSelf
Transfère des jetons vers le contrat à partir des actifs d'entrée de la fonction.
@param fromAddress l'adresse de destination du transfert de jeton
@param tokenId le jeton à transférer
@param amount la quantité de jeton à transférer
@returns
burnToken
Brûle des jetons à partir des actifs d'entrée de la fonction.
@param address * l'adresse d'où brûler le jeton*
@param tokenId le jeton à brûler
@param amount la quantité de jeton à brûler
@returns
lockApprovedAssets
Verrouille les actifs approuvés actuels.
@param address l'adresse à laquelle les actifs seront bloqués
@param timestamp le moment jusqu'auquel les actifs seront bloqués
@returns
Fonctions utilitaires
assert
Teste la condition ou vérifie les invariants.
@param condition la condition à vérifier
@param errorCode le code d'erreur à renvoyer si la vérification échoue
@returns
checkCaller
Vérifie les conditions de l'appelant externe de la fonction.
@param condition la condition à vérifier
@param errorCode le code d'erreur à renvoyer si la vérification échoue
@returns
isAssetAddress
Retourne si une adresse est une adresse d'actif.
@param address l'adresse d'entrée à tester
@returns vrai si l'adresse est une adresse d'actif, faux sinon
isContractAddress
Retourne si une adresse est une adresse de contrat.
@param address l'adresse d'entrée à tester
@returns vrai si l'adresse est une adresse d'actif, faux sinon
zeros
Retourne un ByteVec de zéros.
@param n le nombre de zéros
@returns un ByteVec de zéros
panic
Termine immédiatement l'application.
@param errorCode (facultatif) le code d'erreur à renvoyer lorsque la fonction panic!(...) est appelée
@returns
mulModN
Returns calcule le résultat de x * y % n
@param x x
@param y y
@param n n
@returns calcule le résultat de x * y % n
addModN
Returns calcule le résultat de (x + y) % n.
@param x x
@param y y
@param n n
@returns calcule le résultat de (x + y) % n
u256Max
Retourne la valeur maximale de U256.
@returns la valeur maximale de U256
i256Max
Retourne la valeur maximale de I256.
@returns la valeur maximale deI256
i256Min
Retourne la valeur minimale de I256.
@returns la valeur minimale de I256
nullContractAddress
Retourne l'adresse de contrat nulle avec l'id de contrat étant zéros.
@returns l'adresse de contrat nulle avec l'id de contrat étant zéro
Fonctions de chaîne
networkId
Retourne l'id de réseau (un seul octet).
@returns l'id de réseau (un seul octet)
blockTimeStamp
Retourne le timestamp du bloc.
@returns le timestamp du bloc
blockTarget
Retourne la cible de difficulté du bloc.
@returns la cible de difficulté du bloc
txId
Retourne l'id de transaction actuel.
@returns l'id de transaction actuel
txInputAddress
Retourne l'adresse d'entrée de la transaction n-th.
@param txInputIndex l'indice de l'entrée de la transaction
@returns l'adresse de la n-ième entrée de la transaction
txInputsSize
Retourne le nombre d'adresses d'entrée de transaction.
@returns le nombre d'entrées de transaction
txGasPrice
Retourne le prix actuel du gaz de la transaction.
@returns le prix actuel du gaz de la transaction
txGasAmount
Retourne la quantité de gaz de la transaction actuelle.
@returns la quantité actuelle de gaz de la transaction
txGasFee
Retourne les frais de gaz de la transaction actuelle.
@returns la frais de gaz actuel de la transaction
verifyAbsoluteLocktime
Vérifie que le locktime absolu est avant le timestamp du bloc, sinon échoue.
@param lockUntil le timestamp jusqu'auquel le verrouillage est valide
@returns
verifyRelativeLocktime
Vérifie que le timestamp de création de l'entrée + la durée de verrouillage est avant le timestamp du bloc, sinon échoue.
@param txInputIndex l'indice de l'entrée de transaction
@param lockDuration la durée pendant laquelle l'entrée est verrouillée
@returns
dustAmount
Retourne la quantité de poussière d'un UTXO.
@returns le montant de poussière d'un UTXO
Fonctions de conversion
toI256
Convertit U256 en I256.
@param from un U256 à convertir
@returns un I256
toU256
Convertit I256 en U256.
@param from un I256 à convertir
@returns un U256
toByteVec
Convertit Bool/I256/U256/Adresse en ByteVec
@param from un Bool|I256|U256|Adresse à convertir
@returns un ByteVec
contractIdToAddress
Convertit l'id de contrat (ByteVec) en adresse de contrat (Adresse).
@param contractId l'id de contrat d'entrée
@returns une adresse de contrat
addressToContractId
Convertit l'adresse de contrat (Adresse) en id de contrat (ByteVec)
@param contractAddress l'adresse du contrat d'entrée
@returns un id de contrat
byteVecToAddress
Convertit ByteVec en Adresse.
@param bytes le ByteVec d'entrée
@returns une Adresse
u256To1Byte
Convertit U256 en 1 octet.
@param u256 l'entrée U256
@returns 1 octets
u256To2Byte
Convertit U256 en 2 octets en big-endian.
@param u256 l'entrée U256
@returns 2 octets
u256To4Byte
Convertit U256 en 4 octets en big-endian.
@param u256 l'entrée U256
@returns 4 octets
u256To8Byte
Convertit U256 en 8 octets en big-endian.
@param u256 l'entrée U256
@returns 8 octets
u256To16Byte
Convertit U256 en 16 octets en big-endian.
@param u256 l'entrée U256
@returns 16 octets
u256To32Byte
Convertit U256 en 32 octets en big-endian.
@param u256 l'entrée U256
@returns 32 octets
u256ToString
Convertit U256 en chaîne de caractères dans ByteVec.
@param u256 l'entrée U256
@returns Chaîne convertie en ByteVec
i256ToString
Convertit I256 en chaîne de caractères dans ByteVec.
@param i256 l'entrée I256
@returns Chaîne convertie en ByteVec
boolToString
Convertit Bool en chaîne de caractères dans ByteVec.
@param bool le Booléen d'entrée
@returns Chaîne convertie en ByteVec
u256From1Byte
Convertit 1 octet en U256.
@param bytes le ByteVec d'entrée
@returns un U256
u256From2Byte
Convertit 2 octets en big-endian en U256.
@param bytes le ByteVec d'entrée
@returns un U256
u256From4Byte
Convertit 4 octets en big-endian en U256.
@param bytes le ByteVec d'entrée
@returns un U256
u256From8Byte
Convertit 8 octets en big-endian en U256.
@param bytes le ByteVec d'entrée
@returns un U256
u256From16Byte
Convertit 16 octets en big-endian en U256.
@param bytes *le ByteVec d'entrée
@returns un U256
u256From32Byte
Convertit 32 octets en big-endian en U256.
@param bytes le ByteVec d'entrée
@returns un U256
Fonctions de vecteur d'octets
size
Retourne la taille du ByteVec.
@param bytes un ByteVec
@returns la taille du ByteVec
byteVecSlice
Sélectionne un intervalle d'octets.
@param bytes un ByteVec
@param from l'indice le plus bas à inclure du ByteVec
@param until l'indice le plus bas à inclure du ByteVec
@returns un ByteVec contenant les éléments supérieurs ou égaux à l'indice depuis l'extension jusqu'à (mais non inclus) l'indice jusqu'à de ce ByteVec
encodeToByteVec
Encode les entrées en ByteVec en big-endian.
@param any une séquence de valeurs d'entrée
@returns un ByteVec encodant les entrées
Fonctions de cryptographie
blake2b
Calcule le hachage Blake2b-256 de l'entrée.
@param data *les données d'entrée à hasher
@returns le résultat du hachage de 32 octets
keccak256
Calcule le hachage Keccak256 de l'entrée.
@param data les données d'entrée à hasher
@returns le résultat du hachage
sha256
Calcule le hachage Sha256 de l'entrée.
@param data les données d'entrée à hasher
@returns le résultat du hachage
sha3
Calcule le hachage Sha3 de l'entrée.
@param data les données d'entrée à hasher
@returns le résultat du hachage
verifyTxSignature
Vérifie la signature SecP256K1 de transaction d'une clé publique. La signature est signée contre l'id de transaction.
@param publicKey la clé publique (33 octets) du signataire
@returns
getSegregatedSignature
La signature séparée de la transaction.
@returns la signature ségréguée de la transaction
verifySecP256K1
Vérifie la signature SecP256K1 de l'entrée et de la clé publique.
@param data les données (32 octets) qui étaient censées être signées
@param publicKey la clé publique (33 octets) du signataire
@param signature la valeur de la signature (64 octets)
@returns
verifyED25519
Vérifie la signature ED25519 de l'entrée et de la clé publique.
@param data les données (32 octets) qui étaient censées être signées
@param publicKey la clé publique (32 octets) du signataire
@param signature la valeur de la signature (64 octets)
@returns
verifyBIP340Schnorr
Vérifie la signature Schnorr BIP340 de l'entrée et de la clé publique.
@param data les données (32 octets) qui étaient censées être signées
@param publicKey la clé publique (32 octets) du signataire
@param signature la valeur de la signature (64 octets)
@returns
ethEcRecover
Récupère le compte ETH qui a signé les données.
@param data les données qui étaient censées être signées
@param signature la valeur de la signature
@returns le compte ETH qui a signé les données