lunes, 26 de febrero de 2018

Cardstack en Español - Contratos actualizables en Solidity — Parte 03/03

Pero, ¿y los “permisos”?

Se ha mencionado la palabra “permisos” varias veces en esta publicación.
¿Qué quieren decir con eso? Los contratos Cardstack tienen la capacidad de designar direcciones desde las cuales las llamadas msg.send pueden invocar funciones privilegiadas. Además, cardstack ha diseñado dos niveles diferentes de acceso privilegiado (es muy probable que haya muchos más, y probablemente querrán generalizar más esta solución a medida que pase el tiempo). El rol de menor nivel de acceso privilegiado es lo que Hassan Abdel-Rahman llama un “administrador”, y el rol de mayor nivel de acceso privilegiado es lo que llama un “super administrador”.
En general, los administradores tienen la capacidad de modificar el almacenamiento, mientras que los superadministradores tienen la capacidad de crear administradores, registrar contratos y actualizar contratos.
Cardstack usa un contrato base administratable.sol que proporciona la capacidad de agregar y eliminar administradores y súper administradores, así como modificadores para designar que las funciones solo pueden ser invocadas por administradores y superadministradores, o de forma más restrictiva, solo superadministradores. Además, se utilizan mapas iterables para que revisar introspectivamente las direcciones administrativas.
administrable.sol
A modo de referencia, aparece el Registry.sol completo que muestra cómo se agrega el almacenamiento, cómo se registran y cómo se actualizan los contratos:
Registry.sol

Ethereum Name Service (ENS)

La piedra angular de todo este proceso es el llamado Servicio de nombres de Ethereum (ENS). ENS permite que los contratos se referencien usando un nombre amigable para los humanos en lugar de una cadena de caracteres hexadecimales no amigable para los humanos https://ens.domains/. Esto permite a los usuarios interactuar con un contrato de token en la dirección cardstack.ethen lugar de la dirección 0x66406f50624a645f36faa517c39049200d55c56e; al igual que ser capaz de utilizar un nombre de dominio como https://google.com en lugar del dns original que dificil de recordar que es https://172.217.12.206.
El registro Cardstack se adhiere a EIP-137, que es el estándar que rige ENS, de modo que puede actuar como un “nombre de sesión” resolver (que es cómo ENS representa internamente nombres de contrato). Debido a que el registro ya está haciendo un seguimiento de la dirección de la última versión de cualquier contrato, usarlo como un resolver para ENS es una opción muy natural.
Como parte del registro de un contrato con el registro de Cardstack, el “namehash” del nombre del contrato se suministra a la función register().
Ese namehash luego se puede derivar de la cadena utilizando un script (ver https://github.com/danfinlay/eth-ens-namehash) que convierte el nombre del contrato complejo a uno amigable con los humanos. La dirección del contrato de registro se puede usar como la ENS de la resolución, de modo que resuelve la dirección de la última versión de un contrato de token para los nombres que se le presentan.

Poniendolo todo junto

El enfoque que Cardstack está tomando para realizar contratos actualizables en Solidity incluye estas 3 características importantes:
  1. Resguardo de estado en su propio(s) contrato(s).
  2. Usar un contrato de registro para administrar direcciones de contrato y vincular contratos con su estado.
  3. Resolución de búsquedas de nombre de ENS para direcciones de contrato.
Al adoptar estos enfoques para el desarrollo de contratos, Cardstack puede crear contratos que pueden evolucionar con el tiempo para satisfacer las necesidades cambiantes de las personas que usan nuestras aplicaciones distribuidas.
Esta es la primera de las optimistas actualizaciones que compartiremos sobre nuestra experiencia en Cardstack con Solidity.

■ Autor:

Hassan Abdel-Rahman

Developer at Cardstack

■ Primera Parte

■ Segunda Parte

■ Únase la comunidad de Cardstack

Para obtener más información sobre Cardstack y el próximo Token Generating Event (THE), visite visite el website de cardstack o lea el white paper.
También le invito a ver un corto vídeo en video intro
únase al canal de Telegram en Ingles el canal de Telegram en español

No hay comentarios:

Publicar un comentario