Saltar al contenido principal

Flujo de trabajo de Fuji

Introducción

Fuji es la red de prueba de la red Avalanche. Puedes usarla para probar tu dapp o contrato inteligente después de haberlo desarrollado localmente. (Puedes usar Avalanche Network Runner para probar cosas localmente). Fuji está típicamente en la misma versión que la Avalanche Mainnet, pero a veces está ejecutando una versión no lanzada de AvalancheGo. En general, puedes esperar que el comportamiento de Fuji sea más o menos el mismo que el de Avalanche Mainnet. Herramientas como exploradores y billeteras deberían funcionar con la Testnet Fuji.

En este tutorial, pasaremos por un ejemplo de flujo de trabajo de Fuji para mostrar cómo se puede usar. Haremos lo siguiente:

  1. Configurar la red Fuji en Core (opcional)
  2. Generar una mnemónica de 24 palabras en inglés a través de AvalancheJS
  3. Derivar direcciones externas de la C-Chain a través de AvalancheJS
  4. Obtener AVAX del grifo de Fuji
  5. Enviar AVAX a través de ethersJS
  6. Examinar la transacción resultante en el Avalanche Explorer
  7. Usar una clave privada derivada de una mnemónica para iniciar sesión en la extensión Core (billetera)

Configurar la Red Fuji en Core (opcional)

Para acceder a la red de prueba Fuji, el Modo Testnet debe estar habilitado. Para hacer eso, ve a Configuración y haz clic en Avanzado.

Imagen de configuración 1

Aquí, activa la función de Modo Testnet. Esto hará que Core cambie automáticamente a Fuji Testnet.

Imagen de configuración 2

info

Si estás usando otras billeteras, como MetaMask, puedes agregar la Fuji Testnet usando las siguientes especificaciones:

Generar una Mnemónica

Para empezar, crearemos una frase mnemónica con AvalancheJS. Las mnemónicas nos permiten codificar una seguridad sólida en una frase legible para humanos. AvalancheJS soporta 10 idiomas incluyendo inglés, japonés, español, italiano, francés, coreano, checo, portugués, chino simplificado y chino tradicional.

Primero, genera una mnemónica de 24 palabras en inglés BIP39-compatible a través de AvalancheJS.

import { Mnemonic } from "avalanche";
const mnemonic: Mnemonic = Mnemonic.getInstance();
const strength: number = 256;
const wordlist = mnemonic.getWordlists("english") as string[];
const m: string = mnemonic.generateMnemonic(strength, randomBytes, wordlist);
console.log(m);
// "chimney asset heavy ecology accuse window gold weekend annual oil emerge alley retreat rabbit seed advance define off amused board quick wealth peasant disorder"

Derivar Direcciones

Después de generar una mnemónica, podemos usar AvalancheJS para derivar pares de claves jerárquicas deterministas (HD) compatibles con BIP32.

import HDNode from "avalanche/dist/utils/hdnode";
import { Avalanche, Mnemonic, Buffer } from "avalanche";
import { EVMAPI, KeyChain } from "avalanche/dist/apis/evm";
import { ethers } from "ethers";

const ip: string = "api.avax-test.network";
const port: number = 443;
const protocol: string = "https";
const networkID: number = 5;
const avalanche: Avalanche = new Avalanche(ip, port, protocol, networkID);
const cchain: EVMAPI = avalanche.CChain();

const mnemonic: Mnemonic = Mnemonic.getInstance();
const m: string =
"chimney asset heavy ecology accuse window gold weekend annual oil emerge alley retreat rabbit seed advance define off amused board quick wealth peasant disorder";
const seed: Buffer = mnemonic.mnemonicToSeedSync(m);
const hdnode: HDNode = new HDNode(seed);

const keyChain: KeyChain = cchain.newKeyChain();

const cAddresses: string[] = [];

for (let i: number = 0; i <= 2; i++) {
const child: HDNode = hdnode.derive(`m/44'/60'/0'/0/${i}`);
keyChain.importKey(child.privateKey);
const cchainAddress = ethers.utils.computeAddress(child.privateKey);
cAddresses.push(cchainAddress);
}
console.log(cAddresses);
// [
// '0x2d1d87fF3Ea2ba6E0576bCA4310fC057972F2559',
// '0x25d83F090D842c1b4645c1EFA46B15093d4CaC7C',
// '0xa14dFb7d8593c44a47A07298eCEA774557036ff3'
// ]

Generar Claves Privadas a partir de una Mnemónica

Mientras tengas la frase mnemónica, puedes regenerar tus claves privadas y las direcciones que controlan.

Por ejemplo, si quieres generar las claves privadas para las primeras 3 direcciones en el keychain de la C Chain:

podrías actualizar el script de ejemplo anterior al siguiente:

const ethers = require("ethers");
const network = "https://api.avax-test.network/ext/bc/C/rpc";
const provider = ethers.getDefaultProvider(network);
const address = "0x25d83F090D842c1b4645c1EFA46B15093d4CaC7C";

const main = async (): Promise<any> => {
provider.getBalance(address).then((balance) => {
// convert a currency unit from wei to ether
const balanceInAvax = ethers.utils.formatEther(balance);
console.log(`balance: ${balanceInAvax} AVAX`);
// balance: 0.01 AVAX
});
};

main();

Obtener un Goteo del Grifo Fuji

Podemos obtener un "goteo" de AVAX del grifo Fuji. Si ya tienes un saldo de AVAX mayor que cero en Mainnet, pega tu dirección de la cadena C-Chain allí y solicita tokens de prueba. De lo contrario, por favor solicita un cupón de grifo en Guild. Los administradores y moderadores en el Discord oficial pueden proporcionar AVAX de la red de pruebas si los desarrolladores no pueden obtenerlo de las otras dos opciones. Estos AVAX son para la red de pruebas Fuji y no tienen valor monetario.

Solicitando AVAX

El grifo enviará algunos AVAX a la dirección y devolverá un ID de transacción (txID). Este txID se puede usar con el Explorador de la Red de Pruebas Fuji para obtener más información sobre la transacción.

Recibiendo AVAX

Verificar los Detalles de la Transacción

El txID, 0x1419b04559bf140ab82216f7696110936fb7d4bc1f147e3b85fef7ca1008a19e, se puede ver en el Explorador de la Red de Pruebas Fuji. Avalanche también tiene un Explorador de Mainnet.

Detalles de la transacción

Obtener el Saldo

También podemos usar el Explorador Fuji para obtener el saldo de la primera dirección: 0x2d1d87fF3Ea2ba6E0576bCA4310fC057972F2559.

Saldo de la primera dirección derivada

Alternativamente, podemos usar ethersJS para obtener el saldo.

const ethers = require("ethers");
@@ -187,10 +167,10 @@ const address = "0x25d83F090D842c1b4645c1EFA46B15093d4CaC7C";

const main = async (): Promise<any> => {
provider.getBalance(address).then((balance) => {
// convert a currency unit from wei to ether
const balanceInAvax = ethers.utils.formatEther(balance);
console.log(`balance: ${balanceInAvax} AVAX`);
// balance: 0.02 AVAX
});
};

Iniciar sesión en la Extensión Core

Por último, podemos usar la mnemotecnia para generar una clave privada para acceder a esa cuenta en la extensión Core. Veremos que tiene el saldo de AVAX y que deriva la dirección hexadecimal de la clave privada.

Usa la clave privada para acceder a la cuenta en la Extensión Core.

Acceder a la billetera

El saldo es correcto y la dirección es la primera dirección derivada.

Saldo de la extensión Core 3ra dirección derivada BIP44

Podemos repetir este proceso de inicio de sesión usando las claves privadas de las otras 2 direcciones en el script anterior.

Direcciones derivadas de la billetera Direcciones derivadas de la billetera2
Direcciones derivadas de la billetera3

Resumen

La red de pruebas Fuji juega un papel crítico en la prueba de dapps, contratos inteligentes y productos financieros antes de implementar en la red principal. Herramientas como AvalancheJS, la API pública, el grifo y el explorador ayudan a asegurar que tu entorno de prueba y QA esté cerca de la red principal para que puedas tener confianza al lanzar en la red principal.

Recursos

Para recursos adicionales y valiosos, consulta a continuación.

Grifo

El Fuji Faucet envía AVAX a direcciones de la cadena X o de la cadena C para ayudarte a probar. (Este AVAX de la red de pruebas no tiene valor.)

Billetera

La extensión Core y la versión móvil Core son billeteras simples, seguras y no custodiales para almacenar activos Avalanche. Soportan Mainnet, Fuji y redes personalizadas.

Explorador

El Avalanche Explorer te permite explorar la red en Mainnet y Fuji.

Puntos finales RPC - Servidor de API pública

Ver aquí.

Was this page helpful?