Uso de WaxJS
La biblioteca WaxJS expone cuatro componentes principales:
- wax.userAccount. Nombre de usuario de la cuenta WAX, devuelto cuando haces una llamada a
wax.login()
. - wax.pubKeys. Las claves activas y de propietario de un usuario. Disponible una vez que un usuario ha iniciado sesión o si pasas las claves en el constructor de WaxJS.
- wax.api. Úsalo para ejecutar transacciones estándar de eosjs.
- wax.rpc. Úsalo para hacer llamadas API a la Blockchain de WAX. Consulta la API RPC de WAX para más información.
Para usar WaxJS:
Importar la Biblioteca. Aplicaciones estilo React que usan npm o yarn pueden importar la biblioteca mediante:
jsimport * as waxjs from "@waxio/waxjs/dist";
También puedes descargar y guardar WaxJS desde GitHub e incluir el archivo en una página web:
html<script src="waxjs.js"></script>
Hay varias maneras de instanciar el constructor WaxJS, dependiendo de qué información tengas de tus usuarios. Los parámetros del constructor incluyen:
- La URL del Servidor RPC al que deseas conectarte (requerido)
- El nombre de la Cuenta de Blockchain de WAX de un usuario (opcional)
- Un Array de claves públicas para una cuenta específica (opcional)
- Valor bool de autoLogin (opcional)
Para permitir que WaxJS asigne los valores de usuario apropiados, simplemente puedes pasar una URL RPC:
jsconst wax = new waxjs.WaxJS({ rpcEndpoint: "https://wax.greymass.com", });
Nota
El constructor para WaxJS cambió con la versión 1.0. Si estás actualizando desde una versión anterior necesitarás cambiar el constructor.
La biblioteca también puede ser instanciada con la cuenta de usuario y las claves públicas. Si tienes esta información, puedes pasarla al constructor de WaxJS.
jsconst wax = new waxjs.WaxJS({ rpcEndpoint: "https://wax.greymass.com", userAccount: "3m1q4.wam", pubKeys: [ "EOS6rjGKGYPBmVGsDDFAbM6UT5wQ9szB9m2fEcqHFMMcPge983xz9", "EOS7wTCoctybwrQWuE2tWYGwdLEGRXE9rrzALeBLUhWfbHXysFr9W", ], });
Nota
Si pasas estos parámetros adicionales, no necesitarás llamar al método autoLogin.
Antes de que puedas comenzar a firmar transacciones desde tu dApp, un usuario debe estar conectado. WaxJS incluye una función
isAutoLoginAvailable
que:- Verifica de manera segura las credenciales de Cloud Wallet
- Checa si tu dApp está en la lista blanca
Si ambas condiciones son verdaderas, la cuenta de usuario y las claves públicas se establecen en tu objeto WaxJS, y no necesitas llamar a la función
login()
. También tendrás acceso a wax.userAccount y wax.pubKeys.js//si es verdadero, no se activará la ventana emergente; el usuario ahora está conectado var isAutoLoginAvailable = await wax.isAutoLoginAvailable(); var userAccount = wax.userAccount; var pubKeys = wax.pubKeys;
Si el auto-inicio de sesión no está disponible, puedes usar fácilmente la función
login()
para permitir a los usuarios iniciar sesión o registrarse usando Cloud Wallet.js//inicio de sesión normal. Activa una ventana emergente para dapps no incluidas en la lista blanca async function login() { try { const userAccount = await wax.login(); const pubKeys = wax.pubKeys; } catch (e) {} }
La función
login()
abre Cloud Wallet en una nueva ventana del navegador. Se
solicita a los usuarios que aprueben que tu dApp "Conozca tu Nombre de Cuenta WAX". Una vez que hacen clic en Aprobar, son redirigidos de vuelta a tu dApp
Un inicio de sesión exitoso devuelve el userAccount (por ejemplo, jq3ao.wam), y también puedes acceder a esta propiedad llamando a wax.userAccount
.
Enviar una Transacción
Ahora que tienes el nombre de la Cuenta WAX de un usuario, puedes usar el objeto
wax.api
para construir tu transacción.
Nota
El método wax.api
no se inicializa hasta que inicies sesión de un usuario o pases la información de un usuario en el constructor de WaxJS.
const result = await wax.api.transact(
{
actions: [
{
account: "eosio.token",
name: "transfer",
authorization: [
{
actor: wax.userAccount,
permission: "active",
},
],
data: {
from: wax.userAccount,
to: "eosio",
quantity: "0.00000001 WAX",
memo: "",
},
},
],
},
{
blocksBehind: 3,
expireSeconds: 1200,
}
);
Nota
El método wax.api
es una instancia del objeto eosjs, y proporciona la misma funcionalidad. Consulta la documentación de eosjs para más información.
La función wax.api.transact()
lanza Cloud Wallet en una nueva ventana del navegador. En esta pantalla, los usuarios pueden revisar los detalles de la transacción y Aprobar o Denegar la transacción. Una vez que los usuarios hacen clic en Aprobar, la transacción se firma en la Blockchain de WAX y los usuarios son devueltos a tu dApp.