Saltar al contenido principal

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:

Resumen del código

deployassetcontract.js
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 de SorobanRpc.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ón createStellarAssetContract 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 utilizando StellarSdk.Address. finalmente, registra la ID del contrato para el activo desplegado.