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:
- Configurar la red Fuji en Core (opcional)
- Generar una mnemónica de 24 palabras en inglés a través de AvalancheJS
- Derivar direcciones externas de la C-Chain a través de AvalancheJS
- Obtener AVAX del grifo de Fuji
- Enviar AVAX a través de ethersJS
- Examinar la transacción resultante en el Avalanche Explorer
- 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.
Aquí, activa la función de Modo Testnet. Esto hará que Core cambie automáticamente a Fuji Testnet.
Si estás usando otras billeteras, como MetaMask, puedes agregar la Fuji Testnet usando las siguientes especificaciones:
- Nombre de la Red: Avalanche C-Chain
- Nueva URL RPC: https://api.avax-test.network/ext/bc/C/rpc
- ChainID:
43113
- Símbolo: AVAX
- Explorador:
https://testnet.snowtrace.io
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:
- 0x2d1d87fF3Ea2ba6E0576bCA4310fC057972F2559
- 0x25d83F090D842c1b4645c1EFA46B15093d4CaC7C
- 0xa14dFb7d8593c44a47A07298eCEA774557036ff3
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.
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.
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.
Obtener el Saldo
También podemos usar el Explorador Fuji para obtener el saldo de la primera dirección: 0x2d1d87fF3Ea2ba6E0576bCA4310fC057972F2559.
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.
El saldo es correcto y la dirección es la primera dirección derivada.
Podemos repetir este proceso de inicio de sesión usando las claves privadas de las otras 2 direcciones en el script anterior.
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?