Saltar al contenido principal

Crear una cuenta

Antes de comenzar a trabajar con Stellar en código, considera revisar los siguientes ejemplos usando el Stellar Lab. El lab te permite crear cuentas, financiar cuentas en la red de prueba de Stellar, construir transacciones, ejecutar cualquier operación e inspeccionar respuestas de Horizon mediante el Explorador de Endpoints.

Las cuentas son un componente fundamental de Stellar: contienen todos tus saldos, te permiten enviar y recibir pagos, y hacer ofertas para comprar y vender activos. Dado que prácticamente todo en Stellar está vinculado a una cuenta, lo primero que generalmente necesitas hacer al comenzar a desarrollar es crear una. Este tutorial para principiantes te mostrará cómo hacerlo.

Crear un par de llaves

Stellar utiliza criptografía de clave pública para garantizar que cada transacción sea segura: cada cuenta Stellar tiene un par de llaves que consiste en una clave pública y una clave secreta. La clave pública siempre es segura para compartir: otras personas la necesitan para identificar tu cuenta y verificar que autorizaste una transacción. Es como una dirección de correo electrónico. Sin embargo, la clave secreta es información privada que prueba que eres el dueño y te da acceso a tu cuenta. Es como una contraseña, y nunca deberías compartirla con nadie.

Antes de crear una cuenta, necesitas generar tu propio par de llaves:

// create a completely new and unique pair of keys
// see more about KeyPair objects: https://stellar.github.io/js-stellar-sdk/Keypair.html
const pair = StellarSdk.Keypair.random();

pair.secret();
// SAV76USXIJOBMEQXPANUOQM6F5LIOTLPDIDVRJBFFE2MDJXG24TAPUU7
pair.publicKey();
// GCFXHS4GXL6BVUCXBWXGTITROWLVYXQKQLF4YH5O5JT3YZXCYPAFBJZB

Crear cuenta

Sin embargo, un par de llaves válido no crea una cuenta: para evitar que cuentas sin usar inflen el ledger, Stellar exige que las cuentas mantengan un saldo mínimo de 1 XLM antes de que realmente existan. Hasta que reciba un poco de financiamiento, tu par de llaves no merece espacio en el ledger.

En la red pública, donde los usuarios reales hacen transacciones reales, el siguiente paso sería adquirir XLM, lo cual puedes hacer consultando nuestra sección sobre lumens. Como este tutorial se ejecuta en la red de prueba, puedes obtener 10,000 XLM de prueba de Friendbot, una herramienta amigable para financiar cuentas.

Para hacerlo, envía a Friendbot la clave pública que creaste. Creará y financiará una nueva cuenta usando esa clave pública como el ID de la cuenta.

// The SDK does not have tools for creating test accounts, so you'll have to
// make your own HTTP request.

// if you're trying this on Node, install the `node-fetch` library and
// uncomment the next line:
// const fetch = require('node-fetch');

(async function main() {
try {
const response = await fetch(
`https://friendbot.stellar.org?addr=${encodeURIComponent(
pair.publicKey(),
)}`,
);
const responseJSON = await response.json();
console.log("SUCCESS! You have a new account :)\n", responseJSON);
} catch (e) {
console.error("ERROR!", e);
}
// After you've got your test lumens from friendbot, we can also use that account to create a new account on the ledger.
try {
const server = new StellarSdk.Horizon.Server(
"https://horizon-testnet.stellar.org",
);
var parentAccount = await server.loadAccount(pair.publicKey()); //make sure the parent account exists on ledger
var childAccount = StellarSdk.Keypair.random(); //generate a random account to create
//create a transacion object.
var createAccountTx = new StellarSdk.TransactionBuilder(parentAccount, {
fee: StellarSdk.BASE_FEE,
networkPassphrase: StellarSdk.Networks.TESTNET,
});
//add the create account operation to the createAccountTx transaction.
createAccountTx = await createAccountTx
.addOperation(
StellarSdk.Operation.createAccount({
destination: childAccount.publicKey(),
startingBalance: "5",
}),
)
.setTimeout(180)
.build();
//sign the transaction with the account that was created from friendbot.
await createAccountTx.sign(pair);
//submit the transaction
let txResponse = await server
.submitTransaction(createAccountTx)
// some simple error handling
.catch(function (error) {
console.log("there was an error");
console.log(error.response);
console.log(error.status);
console.log(error.extras);
return error;
});
console.log(txResponse);
console.log("Created the new account", childAccount.publicKey());
} catch (e) {
console.error("ERROR!", e);
}
})();

Ahora, para el último paso: obtener los detalles de la cuenta y comprobar su saldo. Las cuentas pueden tener múltiples saldos: uno para cada tipo de moneda que poseen.

const server = new StellarSdk.Horizon.Server(
"https://horizon-testnet.stellar.org",
);

// the JS SDK uses promises for most actions, such as retrieving an account
const account = await server.loadAccount(pair.publicKey());
console.log("Balances for account: " + pair.publicKey());
account.balances.forEach(function (balance) {
console.log("Type:", balance.asset_type, ", Balance:", balance.balance);
});

Ahora que tienes una cuenta, puedes comenzar a enviar y recibir pagos, o, si estás listo para profundizar, puedes avanzar y crear una billetera o emitir un activo en la red Stellar.

información

En los ejemplos de código anteriores, la verificación adecuada de errores fue omitida por brevedad. Sin embargo, debes siempre validar tus resultados, ya que hay muchas maneras en que las solicitudes pueden fallar. Deberías consultar la guía sobre Manejo de errores para obtener consejos sobre estrategias de gestión de errores.

Guías en esta categoría: