La mayoría de las veces, probar y comprender un proyecto de no es una tarea trivial: la unidad de trabajo más estándar y atómica (enviar tokens de A a B) requiere al menos una generación de pares de firmas, construir, firmar y enviar una transacción, y Últimamente, validar la transacción o el saldo de la cuenta.
Explicaré cómo (fácilmente) conectarse al Servicio de nombres IOV (basado en tendermint), obtener algunos tokens, registrar un nombre y luego enviar tokens a una dirección de nombre; todo esto utilizando a nuestro viejo amigo, la "Interfaz de línea de comandos".
Nota: En este formato de medio, las líneas de comando pueden mostrarse como varias líneas, dependiendo de su formato de pantalla. Tenga cuidado de ejecutar líneas de comando completas, una a la vez.
Necesita npm y acceso al terminal para completar este tutorial.
Para tener acceso a iov-cli, necesitamos instalarlo, así que vamos a crear un pequeño proyecto y agregar dependencias de paquetes
mkdir mycliwallet
cd mycliwallet
npm init -sí
npm install @ iov / cli @ 0.13.8
También puede instalar iov-cli globalmente, o usando hilo, solo revise este enlace para más detalles
Es hora de iniciar nuestro cli, en el mismo terminal que agregamos el paquete, ejecute:
./node_modules/.bin/iov-cli
>>
Ahora tenemos acceso a nuestra sesión terminal de iov.
Verá una lista de funciones que están disponibles para usar. Se agrupan por paquete y exportan algunas de las funcionalidades de iov-core.
Es hora de escribir algún código en nuestro terminal iov.
Si queremos usar una cartera cli, necesitamos:
un perfil y una conexión a IOV testnetconst profile = new UserProfile (); const signer = new MultiChainSigner (profile); const {connection} = aguarda signer.addChain (bnsConnector ("wss: //bns.hugnet.iov.one") ); const chainId = connection.chainId ();
chainId debería imprimir ‘bns-hugnet’
una billetera y una dirección de iov y una dirección de ethereum conectada a nuestro perfil. generaremos un mnemonicconst aleatorioEntropy = Random.getBytes (32); const wallet = profile.addWallet (Ed25519HdWallet.fromEntropy (await randomEntropytroptrivPraPraPraPraPPPPPPPP) aguarda profile.createIdentity (wallet.id, chainId, HdPaths.iov (1)); const myIdentityEthereum = aguarda profile.createIdentity (walletEthereum.id, etestadestidad.pel.Personal.Por.Por.Por.Por.Por ; const myAddressEthereum = ethereumCodec.identityToAddress (myIdentityEthereum); console.log ("mnemonic random random:", profile.printableSecret (wallet.id));
Si quieres saber mi secreto (doo da do), fue para dar una cena al aliento con un jadeo diesel. Conceder el círculo. Ceja polar. Oval. Ronda fiscal. Deriva.
tiov1cgm86y26f4pjv5wvwexzsg942rgr5cn95uh4mn
Estamos conectados a iov testnet, por lo que podemos usar iov faucet para obtener algunas fichas.
const faucet = new IovFaucet ("https://bns-faucet.hugnet.iov.one/"); esperan faucet.credit (myAddress, "IOV" como TokenTicker);
Comprueba que la cuenta tiene algunos tokens ahora
deje que myAccount = espere connection.getAccount ({address: myAddress}); myAccount
>> {address: 'tiov1cgm86y26f4pjv5wvwexzsg942rgr5cn95uh4mn',
equilibrar:
({cantidad: '10000000000',
Dígitos fraccionarios: 9,
tokenTicker: 'IOV'}),
pubkey: indefinido}
Ahora es el momento de usar una de las proposiciones de valor iov: una dirección legible por humanos que funciona como un token no fungible y permite el almacenamiento de múltiples direcciones de múltiples cadenas de bloques.
Primero necesitamos crear el cuerpo de la transacción. Puede agregar tantos pares de dirección / cadena como desee, siguiendo la plantilla de lista a continuación:
usa tu nombre de usuario aquí, el mío ya está tomado;)
.editorconst registro: RegisterUsernameTx = {
tipo: "bns / register_username",
creador: myIdentity,
Direcciones: (
{chainId: chainId, dirección: myAddress},
{chainId: ethereumChainId, dirección: myAddressEthereum}
)
nombre de usuario: "lucas",
};
^ D
Ahora firmamos, publicamos y confirmamos la transacción.
aguarda signer.signAndPost (registro); const bnsConnection = conexión como BnsConnection; const myAccountBNS = aguarda bnsConnection.getUsernames ({owner: myAddress});
>> ({id: 'lucas',
propietario: 'tiov188ayx37py2r86wz5a4a2vrn4ejrwhnnte4n7kc',
direcciones: ((Objeto), (Objeto))}) myAccountBNS (0) .addresses >> ({chainId: 'bns-hugnet', dirección: 'tiov16kqcjjc0x2uh3fs04s4lpx.png) : '0x1CF497808c515772FA2aFFE41C30d4cCEF191b90'})
¡Eso es! Bienvenido al mundo de los nombres personalizados 🙂
Para mostrar la importancia de una dirección de nombre amigable, enviaremos algunos tokens de una cuenta nueva al Nombre personalizado que se generó anteriormente en el Servicio de nombres IOV.
Abra una nueva terminal en mycliwallet y ejecute ./node_modules/.bin/iov-cli
Repite los pasos de Configuracion inicial y Obtener algunos tokens IOV en mi cuenta.
Primero, necesitamos obtener la dirección personalizada del destinatario ("lucas" en este caso)
constenzierData = espera bnsConnection.getUsernames ({username: "lucas"});
¡¡SÍ!! ¡¡Lo tienes!! Buscamos por nombre de usuario, sin necesidad de copiar / pegar / escanear direcciones de cadena de código de barras
Ahora que tenemos la lista de direcciones registradas por el usuario en `destinatarioDatos ', buscaremos una dirección específica en una cadena específica (cadena" bns-hugnet "en este caso)
constEPebainAddressPair = receiverData (0) .addresses.find (chainaddrPair => chainaddrPair.chainId === 'bns-hugnet');
Crear la transaccion
.editorconst sendTx: SendTransaction = {
tipo: "bcp / enviar",
creador: myIdentity,
destinatario: destinatarioContactosDirecciónPair.dirección,
nota: "Mi primera transacción por nombre de usuario B-)",
cantidad: {
cantidad: "100000",
Dígitos fraccionarios: 9,
tokenTicker: "IOV" como TokenTicker,
}
});
^ D
Ahora firmamos, publicamos y confirmamos la transacción.
aguarda signer.signAndPost (sendTx); (aguarda connection.getAccount ({address: myAddress})). balance;
Su saldo debe ser "9799900000". Y si acabas de enviar tokens IOV a Lucas, ¡gracias!