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.
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: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.eth
en 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
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.
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:
- Resguardo de estado en su propio(s) contrato(s).
- Usar un contrato de registro para administrar direcciones de contrato y vincular contratos con su estado.
- 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
Hemos publicado la primera parte de este artículo en:
https://medium.com/@rDieminger/cardstack-contratos-actualizables-en-solidity-parte-01-4a446a453c45
https://medium.com/@rDieminger/cardstack-contratos-actualizables-en-solidity-parte-01-4a446a453c45
■ Segunda Parte
Hemos publicado la segunda parte de este artículo en:
https://medium.com/@rDieminger/cardstack-contratos-actualizables-en-solidity-parte-02-03-3361ceb2fecf
https://medium.com/@rDieminger/cardstack-contratos-actualizables-en-solidity-parte-02-03-3361ceb2fecf
■ Ú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
También le invito a ver un corto vídeo en video intro
No hay comentarios:
Publicar un comentario