En un artículo anterior vimos cómo crear una cuenta en WAX Blockchain totalmente gestionada por nosotros y cuyas claves, activa y propietaria (active y owner) nos pertenecerían a nosotros y cuya custodia será nuestra responsabilidad:
También vimos cómo podíamos introducir la información de esas cuentas en Anchor Wallet y así poder hacer login en diferentes aplicaciones que nos ofrecen servicios en WAX Blockchain, como el market AtomicHub, la casa de subastas WAX Arena o juegos como R-Planet. Todas estas actividades las realizábamos con la clave activa, dejando la clave owner siempre protegida y oculta ya que su verdadero uso no es otro que el de poder gestionar la propia cuenta, no las acciones que hagamos desde nuestra cuenta.
En este artículo vamos a aprender:
- Cómo cambiar las claves de una cuenta en WAX
- Cómo limitar el acceso de una cuenta a acciones específicas
Será muy importante conocer la información del artículo anteriormete citado si se desea continuar con la siguiente práctica. Tómate unos minutos para revisarlo si no lo has hecho ya 😉
Cambiar las claves de la cuenta
Tal y como podemos deducir a partir de nuestro conocimiento actual de cómo se gestionan las cuentas de WAX, para poder cambiar las claves de acceso a una cuenta debemos ser el propietario de la misma y, además, debemos tener en nuestra posesión la clave privada owner, necesaria para la gestión completa de la cuenta. Con la clave privada active solo será posible cambiar la propia clave active. Si nuestra cuenta ha sido creada en WAX Cloud Wallet esto no será posible de realizar ya que las claves privadas, tanto owner como active, están custodiadas por la propia wallet y nosotros las desconocemos.
El primer paso que debemos realizar será importar la clave privada owner en Anchor Wallet. El proceso es idéntico al explicado en el artículo anterior salvo que, en esta ocasión, importaremos la clave privada owner en lugar de la clave privada active.
A continuación iniciaremos sesión en Blocks.io con la clave owner que hemos importado. Tendremos que añadir nuestra cuenta a la web de Anchor como ya hemos explicado.
Esta información será almacenada en nuestro terminal y no se compartirá con nadie. Si borramos la caché del navegador, todas las cuentas que hayamos asociado a Blocks.io desaparecerán y deberemos volver a asociarlas.
Si hemos iniciado sesión correctamente veremos junto a nuestro nombre de usuario la palabra owner.

En la sección de "Utilidades" de la Wallet generaremos un par de claves para cada clave que deseamos cambiar. Aprovechamos para recordar que necesitamos un par formado por clave privada y clave pública para cada uno de los tipos de permisos de la cuenta: owner y active. Si vamos a cambiar las claves de ambos permisos necesitaremos obtener 2 pares, que guardaremos para no perder el acceso a la cuenta.

Con los pares de claves copiados en un documento aparte, en el block de notas, por ejemplo, procedemos a entrar en el apartado "Keys and Permissions" y podremos añadir las nuevas claves públicas (owner y/o active) en las casillas que he resaltado en la captura siguiente:

Si solo queremos cambiar una de ellas, dejaremos la otra casilla vacía.
Una vez que aceptemos, las nuevas claves estarán ya operativas y deberemos actualizar nuestra wallet Anchor para que podamos seguir trabajando con normalidad, sobre todo si hemos cambiado la clave active.
Limitar el acceso a lista blanca de acciones
Nuestra comunicación con la blockchain, como usuarios, se realizará siempre a través de llamadas a las acciones de los smart contracts que hay publicados en la blockchain. Si, por ejemplo, enviamos un NFT desde nuestra cuenta a la cuenta de otro usuario utilizando el explorador de AtomicHub, estamos realizando una llamada a la acción transfer del smart contract atomicassets

Aunque pueda parecernos lo mismo, si ahora enviamos WAX desde nuestra cuenta a otra cuenta, en realidad estaremos llamando a una acción diferente de un smart contract diferente:

Ahora supongamos como ejemplo que hemos desarrollado una aplicación web que se dedicará a enviar NFTs entre cuentas. Esa será su única función. Para que la aplicación pueda enviar los NFTs deberá llamar a la acción transfer del smart contract de AtomicAssets y, para ello, necesitará firmar la transacción y, dado que nosotros no podemos estar ahí para firmarla cada vez que ocurra, tendremos que dejársela disponible. Para firmar la transacción será necesario que dejemos a disposición de la aplicación, al menos, la clave privada active. Esto puede generar un problema de seguridad ya que si la clave queda al descubierto cualquiera podría hacerse con ella y vaciarnos la cuenta de todos los activos que tengamos: NFTs, WAX, tokens... Un desastre. Como desarrolladores deberemos tomar todas las precauciones posibles para que la clave nunca quede expuesta en el Front End de la aplicación. Este no es el lugar para comentar los diferentes métodos existentes para ello, tan solo trato de poner al desarrollador en un contexto.
Aún habiendo tomado todas las precauciones para que la clave no quede expuesta en el Front End, queda la posibilidad de que sea el servidor en donde se aloja la aplicación el que haya quedado comprometido y que un intruso pueda acceder a todos los archivos, incluendo aquel en el que hemos guardado la clave.
Gracias a la técnica que veremos a continuación podremos añadir un grado más de seguridad a la cuenta para que, en caso de robo de clave, el daño no sea completo.
Podemos asociar un par de claves (pública y privada) asociadas solo a las acciones de smart contracts que especifiquemos como si de una lista blanca se tratara.
Para nuestro ejemplo vamos a crear un par de claves que solo puedan utilizarse para llamar a la acción transfer de Atomic Assets ¡Y nada más! El proceso se realiza en 2 pasos:
- Crear un nuevo permiso
- Asociar el permiso a una acción (o varias)
Lo primero será obtener un nuevo par de claves (privada y pública) como ya vimos anteriormente (apartado Utilidades del wallet en Blocks.io).
A continuación, iremos al apartado "Keys and Permissions", "Advance" y haremos click en "Add new permission". Se nos abrirá un cuadro con varias casillas para rellenar:

Deberemos dar un nombre al permiso para poder identificarlo. El nombre puede ser el que queramos. El permiso podrá depender de Owner o de Active; la diferencia estará en que necesitaremos uno u otro permiso para poder crearlo y/o editarlo en el futuro.
En el apartado Keys añadimos la clave pública del par de claves generado anteriormente y nos guardaremos la clave privada (esta clave privada será la que utilice la aplicación que va a realizar las transacciones.
Para finalizar pulsamos Save y la clave habrá quedado añadida a nuestro diccionario de claves

Al tratar de hacer estas operaciones es posible que Anchor, o la wallet que utilicemos, nos advierta de la peligrosidad de esta acción. Se trata de una advertencia, no de un error:

Para finalizar, vamos a asociar este nuevo permiso a la acción transfer del smart contract atomicassets. Iremos a la sección "Link Auth", dentro de la misma sección "Keys and Permissions" y escribiremos el nombre del permiso, del smart contract y de la acción asociada:

Al hacer click sobre "Link Auth" ya quedará la asociación creada. A partir de ese momento, solo se podrán firmar transacciones de NFTs de atomicassets con esa clave; no se podrán enviar otros tokens, WAX, ni NFTs de otros formatos como SimpleAssets.

Esta técnica también puede servirnos para compartir claves con accesos restringidos entre miembros de un mismo equipo, por ejemplo.
¿Qué es 3DK Render?
![1*yhuV0_AUjL5ob2D3Y3civQ.png]()
3DK Render es un guild de productores de bloques para WAX Blockchain, involucrado en varios proyectos como Rada Quest TCG, WAX Arena y Blenderizer.
Únete a nuestra comunidad en Discord
Conoce nuestras creaciones:
⭐WAX ARENA⭐
Subastas gamificadas en WAX Blockchain, creadas por 3DK Render. Gana NFTs con las ofertas más altas o gana comisiones de sobreoferta.
Sitio Web | Twitter | Smart Contract | Testnet
🔥BLENDERIZER🔥
Configura la creación de una NFT a partir de otras NFTs.
Sitio Web | Twitter | Smart Contract | Testnet
🔮RADA QUEST🔮
Rada Quest es un juego de cartas coleccionables de fantasía, que se desarrolla sobre WAX Blockchain.
Sitio Web | Twitter | Instagram | Telegram | Steemit | Publish0x
Datos de la Colección en AtomicHub
Drops Activos del Arte del Juego: Parte 1 | Parte 2
