Créer un actif à capitalisation fixe
Créer et échanger un actif fongible à capitalisation fixe
Introduction
Ce tutoriel illustre comment Avalanche peut être utilisé pour créer et échanger un actif fongible à capitalisation fixe. Une quantité de l'actif est créée lors de l'initialisation de l'actif, puis plus rien n'est jamais créé.
Supposons qu'il existe un accord de partage des revenus (ISA) avec 10 millions d'actions et qu'aucune action ne soit plus créée. Créons un actif dans lequel une unité de l’actif représente une part de l’ISA.
Hypothèses
Nous supposons que le lecteur a déjà terminé le guide pour commencer et est familiarisé avec l'architecture d'Avalanche.
Créer l'actif
Notre actif existera sur la X-Chain, donc pour créer notre actif, nous appellerons avm.createFixedCapAsset, une méthode de l'API de X-Chain.
La signature de cette méthode est :
avm.createFixedCapAsset({
name: string,
symbol: string,
denomination: int,
initialHolders: []{
address: string,
amount: int
},
from: []string,
changeAddr: string,
username: string,
password: string
}) ->
{
assetID: string,
changeAddr: string,
}Paramètres
nameest un nom lisible par l'homme pour l'actif. Pas nécessairement unique.symbolest un symbole abrégé de l'actif. Entre 0 et 4 caractères. Pas nécessairement unique. Peut être omis.denominationdétermine la manière dont les soldes de cet actif sont affichés par les interfaces utilisateur. Si la dénomination est 0, 100 unités de cet actif sont affichées comme 100. Si la dénomination est 1, 100 unités de cet actif sont affichées comme 10,0. Si la dénomination est 2, 100 unités de cet actif sont affichées sous la forme .100, etc.Effectuer une transaction sur la X-Chain nécessite des frais de transaction payés en AVAX.
usernameetpasswordindiquent quel utilisateur paie les frais.Chaque élément de
initialHoldersspécifie que l'addresscontient les unités de montant de l'actifamountlors de la genèse.fromsont les adresses que vous souhaitez utiliser pour cette opération. En cas d'omission, utilise l'une de vos adresses au besoin.changeAddrest l'adresse à laquelle tout changement sera envoyé. En cas d'omission, la modification est envoyée à l'une des adresses contrôlées par l'utilisateur.
Réponse
assetIDest l'ID du nouvel actif.changeAddrdans le résultat est l'adresse à laquelle tout changement a été envoyé.
Passons maintenant à la création de l'actif. Vous souhaiterez remplacer l'adresse address par une adresse contrôlée par votre utilisateur afin de conserver tout l'élément nouvellement créé et de pouvoir l'envoyer plus tard dans ce didacticiel.
curl -X POST --data '{
"jsonrpc":"2.0",
"id" : 1,
"method" :"avm.createFixedCapAsset",
"params" :{
"name": "ISA Shares",
"symbol":"ISAS",
"denomination": 0,
"initialHolders": [
{
"address": "X-avax10pvk9anjqrjfv2xudkdptza654695uwc8ecyg5",
"amount": 10000000
}
],
"from":["X-avax1s65kep4smpr9cnf6uh9cuuud4ndm2z4jguj3gp"],
"changeAddr":"X-avax1turszjwn05lflpewurw96rfrd3h6x8flgs5uf8",
"username":"USERNAME GOES HERE",
"password":"PASSWORD GOES HERE"
}
}' -H 'content-type:application/json;' 127.0.0.1:9650/ext/bc/XLa réponse contient l'ID de l'actif, qui est également l'ID de cette transaction :
{
"jsonrpc":"2.0",
"id" :1,
"result" :{
"assetID":"keMuoTQSGjqZbNVTCcbrwuNNNv9eEEZWBaRY3TapcgjkoZmQ1",
"changeAddr":"X-avax1turszjwn05lflpewurw96rfrd3h6x8flgs5uf8"
}
}Échangez l'actif
Vérifier un solde
Les 10 000 000 d'unités de l'actif (actions) sont contrôlées par l'adresse que nous avons spécifiée dans initialHolders.
Pour vérifier cela, nous appelons avm.getBalance:
curl -X POST --data '{
"jsonrpc":"2.0",
"id" :1,
"method" :"avm.getBalance",
"params" :{
"address":"X-avax10pvk9anjqrjfv2xudkdptza654695uwc8ecyg5",
"assetID":"keMuoTQSGjqZbNVTCcbrwuNNNv9eEEZWBaRY3TapcgjkoZmQ1"
}
}' -H 'content-type:application/json;' 127.0.0.1:9650/ext/bc/XLa réponse confirme que notre création d'actifs a réussi et que l'adresse attendue contient les 10 000 000 actions :
{
"jsonrpc":"2.0",
"id" :1,
"result" :{
"balance":10000000
}
}Envoyez l'actif
Maintenant, envoyons 100 partages en appelant avm.send.
Pour envoyer les partages, nous devons prouver que nous contrôlons l'utilisateur à partir duquel les partages sont envoyés. Par conséquent, cette fois, nous devrons remplir le username et password.
curl -X POST --data '{
"jsonrpc":"2.0",
"id" :1,
"method" :"avm.send",
"params" :{
"username":"USERNAME GOES HERE",
"password":"PASSWORD GOES HERE",
"assetID" :"keMuoTQSGjqZbNVTCcbrwuNNNv9eEEZWBaRY3TapcgjkoZmQ1",
"amount" :100,
"to" :"X-avax1t8sl0knfzly3t3sherctxwezy533ega3sxww2k"
}
}' -H 'content-type:application/json;' 127.0.0.1:9650/ext/bc/XVérifiez l'état de la transaction
La réponse de l'appel ci-dessus devrait ressembler à ceci:
{
"jsonrpc":"2.0",
"id" :1,
"result" :{
"txID":"2EAgR1YbsaJrwFiU4DpwjUfTLkt97WrjQYYNQny13AheewnxSR",
"changeAddr": "X-avax1turszjwn05lflpewurw96rfrd3h6x8flgs5uf8"
}
}txID est l'ID de la transaction d'envoi que nous avons envoyée au réseau.
Après une seconde ou deux, la transaction devrait être finalisée. Nous pouvons vérifier le statut de la transaction avec avm.getTxStatus:
curl -X POST --data '{
"jsonrpc":"2.0",
"id" :1,
"method" :"avm.getTxStatus",
"params" :{
"txID":"2EAgR1YbsaJrwFiU4DpwjUfTLkt97WrjQYYNQny13AheewnxSR"
}
}' -H 'content-type:application/json;' 127.0.0.1:9650/ext/bc/XLa réponse devrait ressembler à ça :
{
"jsonrpc":"2.0",
"id" :1,
"result" :{
"status":"Accepted"
}
}Vous pouvez également voir que le status est en Pending si le réseau ne l'a pas encore finalisé.
Voyons maintenant le solde de l'adresse à:
curl -X POST --data '{
"jsonrpc":"2.0",
"id" :1,
"method" :"avm.getBalance",
"params" :{
"address":"X-avax1t8sl0knfzly3t3sherctxwezy533ega3sxww2k",
"assetID":"keMuoTQSGjqZbNVTCcbrwuNNNv9eEEZWBaRY3TapcgjkoZmQ1"
}
}' -H 'content-type:application/json;' 127.0.0.1:9650/ext/bc/XLa réponse devrait être :
{
"jsonrpc":"2.0",
"id" :1,
"result" :{
"balance":100
}
}Récapitulatif
Dans ce tutoriel, nous avons :
Utilisé
createFixedCapAssetpour créer un actif à capitalisation fixe.Utilisé
getBalancepour vérifier les soldes d'adresses.Utilisé
sendpour transférer une quantité de notre actif.
Mis à jour
Ce contenu vous a-t-il été utile ?