Desplegar un SAC para un activo Stellar utilizando código
Resumen
En esta guía, aprenderás a desplegar un Contrato de Activo Stellar (SAC) para un activo Stellar utilizando el SDK de Stellar. El SDK de Stellar es un conjunto de herramientas y bibliotecas diseñadas para ayudar a los desarrolladores a construir aplicaciones que interactúan con la red blockchain de Stellar. El SDK de Stellar es un conjunto de herramientas y una biblioteca diseñadas para ayudar a los desarrolladores a construir aplicaciones que interactúan con la red de blockchain de Stellar.
Requisitos previos:
-
- Node.js y npm instalados.
-
- SDK de Stellar para JavaScript instalado
- Una comprensión de la función rudimentaria de sondeo de transacciones habilitada para reintentos
submitTx
que describimos en otra guía
Resumen del código
import * as StellarSdk from "@stellar/stellar-sdk";
import { Server } from "@stellar/stellar-sdk/rpc";
const networkRPC = "https://soroban-testnet.stellar.org";
const server = new Server(networkRPC);
const networkPassphrase = StellarSdk.Networks.TESTNET;
const deployStellarAssetContract = async () => {
const sourceSecrets =
"SASI6PA4K52GQJF6BC263GLYOADVKFJ4SZ7TFX4QQF2U76T3EJ54DT7Y"; // Replace with your Secret Key
const sourceKeypair = StellarSdk.Keypair.fromSecret(sourceSecrets);
const sourceAccount = await server.getAccount(sourceKeypair.publicKey());
try {
const assetCode = "JOEBOY";
const issuerPublicKey = sourceKeypair.publicKey();
const customAsset = new StellarSdk.Asset(assetCode, issuerPublicKey);
const transaction = new StellarSdk.TransactionBuilder(sourceAccount, {
fee: StellarSdk.BASE_FEE,
networkPassphrase,
})
.addOperation(
StellarSdk.Operation.createStellarAssetContract({
asset: customAsset,
}),
)
.setTimeout(30)
.build();
const uploadTx = await server.prepareTransaction(transaction);
uploadTx.sign(sourceKeypair);
const feedback = await submitTx(uploadTx);
const contract = StellarSdk.Address.fromScAddress(
feedback.returnValue.address(),
);
console.log(
`ContractID of Our ${customAsset.code} Asset`,
contract.toString(),
);
} catch (e) {
console.error("An error occurred while Deploying assets:", e);
}
};
await deployStellarAssetContract();
Explicación del código
Configuración del servidor
import * as StellarSdk from "@stellar/stellar-sdk";
const networkRPC = "https://soroban-testnet.stellar.org";
const server = new StellarSdk.SorobanRpc.Server(networkRPC);
const network_passphrase = StellarSdk.Networks.TESTNET;
networkRPC
: La URL para la red de pruebas Soroban.server
: Se crea una nueva instancia deSorobanRpc.Server
, que se utilizará para interactuar con la red de pruebas Soroban.network_passphrase
: establece la frase de la red a TESTNET
Función DeployStellarAssetContract
const deployStellarAssetContract = async () => {
const sourceSecrets =
"SASI6PA4K52GQJF6BC263GLYOADVKFJ4SZ7TFX4QQF2U76T3EJ54DT7Y"; // Replace with your Secret Key
const networkPassphrase = StellarSdk.Networks.TESTNET;
const sourceKeypair = StellarSdk.Keypair.fromSecret(sourceSecrets);
const sourceAccount = await server.getAccount(sourceKeypair.publicKey());
try {
const assetCode = "JOEBOY";
const issuerPublicKey = sourceKeypair.publicKey();
const customAsset = new StellarSdk.Asset(assetCode, issuerPublicKey);
const transaction = new StellarSdk.TransactionBuilder(sourceAccount, {
fee: StellarSdk.BASE_FEE,
networkPassphrase,
})
.addOperation(
StellarSdk.Operation.createStellarAssetContract({
asset: customAsset,
}),
)
.setTimeout(30)
.build();
const uploadTx = await server.prepareTransaction(transaction);
uploadTx.sign(sourceKeypair);
const feedback = await submitTx(uploadTx);
const contract = StellarSdk.Address.fromScAddress(
feedback.returnValue.address(),
);
console.log(
`ContractID of Our ${customAsset.code} Asset`,
contract.toString(),
);
} catch (e) {
console.error("An error occurred while Deploying assets:", e);
}
};
await deployStellarAssetContract();
Esta función está diseñada para desplegar un Contrato de Activo Stellar (SAC) en la red de pruebas Soroban.
- Clave secreta: Comienza definiendo la clave secreta para la cuenta fuente (
sourceSecrets
), que debes reemplazar con la tuya. - Keypair y cuenta: Genera el keypair a partir de la clave secreta y obtiene los detalles de la cuenta del servidor Soroban.
- Activo personalizado: Define un activo personalizado con el código
JOEBOY
y la clave pública del emisor. - Construcción de la transacción: Se construye una transacción utilizando el
TransactionBuilder
, que incluye la operacióncreateStellarAssetContract
para el activo personalizado. La transacción se prepara y se firma. - Enviar transacción: La transacción firmada se envía a la red usando
server.sendTransaction
. - Manejo de la Retroalimentación: Espera la retroalimentación de la transacción utilizando la función
submitTx
para asegurar que ha tenido éxito. extrae el búfer del contrato de la retroalimentación y lo convierte en un ID de contrato utilizandoStellarSdk.Address
. finalmente, registra la ID del contrato para el activo desplegado.
Guías en esta categoría:
📄️ Usar __check_auth de maneras interesantes
Dos guías que explican cómo usar __check_auth
📄️ Hacer llamadas entre contratos
Llamar a un contrato inteligente desde otro contrato inteligente
📄️ Desplegar un contrato a partir de bytecode Wasm instalado usando un contrato desplegador
Desplegar un contrato a partir de bytecode Wasm instalado usando un contrato desplegador
📄️ Desplegar un SAC para un activo Stellar utilizando código
Desplegar un SAC para un activo Stellar utilizando el SDK de Javascript
📄️ Organizar errores de contrato con un tipo de enumeración de errores
Gestionar y comunicar errores de contrato utilizando una estructura de enumeración almacenada como valores de Estado
📄️ Extender el TTL de un contrato desplegado con código
Cómo extender el TTL del código Wasm de un contrato desplegado utilizando el SDK de JavaScript
📄️ Actualizando el bytecode de Wasm para un contrato desplegado
Actualizar el bytecode de Wasm para un contrato desplegado
📄️ Escribir metadatos para tu contrato
Usa el contractmeta! macro en Rust SDK para escribir metadatos en contratos Wasm