Demostración de WaxJS
A continuación se muestra un ejemplo básico de la funcionalidad de WaxJS. Para utilizar esta demostración, haz clic en Inicio de Sesión WAX (si no has iniciado sesión automáticamente), luego haz clic en Firmar Transacción.
Función de Auto-inicio de Sesión Si tu información de blockchain se muestra a continuación, estás automáticamente conectado a WaxJS, y no necesitas hacer clic en Inicio de Sesión WAX. ¡Esto elimina la necesidad de múltiples clics y ventanas emergentes!
Inicio de Sesión WAX Usa esto si no has iniciado sesión automáticamente. Ten en cuenta que si estás autoconectado, hacer clic en esto no abrirá una ventana emergente y el userAccount aún se devuelve.
<button class="text-md mt-4 border-black border-solid border-2 rounded px-4 py-2 w-40" id="login" onclick="login()">WAX Login</button>
Firmar Transacción Haz clic una vez que hayas iniciado sesión.
<button class="mt-4 border-black border-solid border-2 rounded px-4 py-2 w-40" id="sign" onclick="sign()">Sign Transaction</button>
Ejemplos de Código
Para utilizar estos ejemplos, descarga y guarda WaxJS desde GitHub.
Inicio de Sesión Simple
const wax = new waxjs.WaxJS({
rpcEndpoint: 'https://wax.greymass.com'
});
autoLogin();
// verifica si el auto-inicio de sesión está disponible y llama a la función de inicio de sesión normal si lo está
async function autoLogin() {
var isAutoLoginAvailable = await wax.isAutoLoginAvailable();
if (isAutoLoginAvailable) {
login();
}
}
// 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();
} catch(e) {
}
}
Demostración Completa
Para ejecutar la demostración anterior, copia el siguiente código en index.html:
<!DOCTYPE html>
<html>
<script src='waxjs.js'></script>
<body>
Below is a basic example of WaxJS functionality. To use this demo, click WAX Login (if you're not automatically logged in), then click Sign Transaction.
<strong>Auto-login Feature</strong>
<p>If your blockchain information displays below, you're automatically logged in to WaxJS, and you don't need to click WAX Login. This eliminates the need for multiple clicks and popups!</p>
<p style="color:#ef9d47" id="autologin"></p>
<strong>WAX Login</strong>
<p>Use this if you're not automatically logged in. Note that if you are auto-logged in, clicking this does not open a popup and the userAccount is still returned.</p>
<button id="login" onclick="login()">WAX Login</button>
<p style="color:#ef9d47" id="loginresponse"></p>
<p>&nbsp;</p>
<strong>Sign Transaction</strong>
<p>Click once you're logged in.</p>
<button id="sign" onclick="sign()">Sign Transaction</button>
<pre><code id="response">Transaction Response
</code></pre>
<script>
const wax = new waxjs.WaxJS({
rpcEndpoint: 'https://wax.greymass.com'
});
// automatically check for credentials
autoLogin();
// checks if autologin is available
async function autoLogin() {
let isAutoLoginAvailable = await wax.isAutoLoginAvailable();
if (isAutoLoginAvailable) {
let userAccount = wax.userAccount;
let pubKeys = wax.pubKeys;
let str = 'AutoLogin enabled for account: ' + userAccount + '<br/>Active: ' + pubKeys[0] + '<br/>Owner: ' + pubKeys[1];
document.getElementById('autologin').insertAdjacentHTML('beforeend', str);
}
else {
document.getElementById('autologin').insertAdjacentHTML('beforeend', 'Not auto-logged in');
}
}
// normal login. Triggers a popup for non-whitelisted dapps
async function login() {
try {
// if autologged in, this simply returns the user
Account with no popup
let userAccount = await wax.login();
let pubKeys = wax.pubKeys;
let str = 'Account: ' + userAccount + '<br/>Active: ' + pubKeys[0] + '<br/>Owner: ' + pubKeys[1];
document.getElementById('loginresponse').insertAdjacentHTML('beforeend', str);
} catch (e) {
document.getElementById('loginresponse').append(e.message);
}
}
async function sign() {
if(!wax.api) {
return document.getElementById('response').append('* Login first *');
}
try {
const result = await wax.api.transact({
actions: [{
account: 'eosio',
name: 'delegatebw',
authorization: [{
actor: wax.userAccount,
permission: 'active',
}],
data: {
from: wax.userAccount,
receiver: wax.userAccount,
stake_net_quantity: '0.00000001 WAX',
stake_cpu_quantity: '0.00000000 WAX',
transfer: false,
memo: 'This is a WaxJS/Cloud Wallet Demo.'
},
}]
}, {
blocksBehind: 3,
expireSeconds: 30
});
document.getElementById('response').append(JSON.stringify(result, null, 2))
} catch(e) {
document.getElementById('response').append(e.message);
}
}
</script>
</body>
</html>