Saltar al contenido principal

Crear una cuenta

_Before we get started with working with Stellar in code, consider going through the following examples using the Stellar Lab. El laboratorio te permite crear cuentas, financiar cuentas en la red de prueba de Stellar, construir transacciones, ejecutar cualquier operación e inspeccionar respuestas de Horizon a través del Explorador de Endpoints.

Las cuentas son un bloque de construcción fundamental de Stellar: sostienen todos tus saldos, te permiten enviar y recibir pagos, y te dejan hacer ofertas para comprar y vender activos. Dado que prácticamente todo en Stellar está de alguna manera relacionado con una cuenta, lo primero que generalmente necesitas hacer cuando comienzas a desarrollar es crear una. Este tutorial para principiantes te mostrará cómo hacerlo.

Crear un Keypair

Stellar utiliza criptografía de clave pública para garantizar que cada transacción sea segura: cada cuenta Stellar tiene un keypair 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. La clave secreta, sin embargo, es información privada que demuestra que eres el dueño —y te da acceso a— tu cuenta. Es como una contraseña, y nunca debes compartirla con nadie.

Antes de crear una cuenta, necesitas generar tu propio keypair:

// 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

Un keypair válido, sin embargo, no crea una cuenta: para evitar que las cuentas no utilizadas aumenten el ledger, Stellar requiere que las cuentas mantengan un saldo mínimo de 1 XLM antes de que realmente existan. Hasta que no obtenga un poco de financiamiento, tu keypair no justifica espacio en el ledger.

En la red pública, donde los usuarios reales realizan transacciones en vivo, tu siguiente paso sería adquirir XLM, lo que puedes hacer consultando nuestra sección sobre lumens. Because this tutorial runs on the test network, you can get 10,000 test XLM from Friendbot, which is a friendly account funding tool.

Para hacerlo, envía a Friendbot la clave pública que creaste. Él 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 mantienen.

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 concentrarte, puedes avanzar y construir una billetera o emitir un activo de la red Stellar.

información

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