Wasmd 0.30 Lanzado
¡Lanzamiento de fin de año!
Ha sido un 2022 lleno de acontecimientos en muchos sentidos, tanto buenos como malos, entonces, ¿por qué no terminarlo con un gran lanzamiento de Wasmd?
Tuvimos una gran cantidad de solicitudes de funciones de la comunidad para revisar y priorizar, y nos complace anunciar que con Wasmd v0.30, logramos obtener muchas de ellas en este lanzamiento de fin de año.
Como de costumbre, ¡muchas gracias a todos los colaboradores que hicieron posible este lanzamiento!
Descripción general (TLDR)
Wasmd v0.30 contenía bastantes cambios muy solicitados por la comunidad, además de las correcciones de errores y mejoras habituales, también enviamos lo siguiente:
- Integración del módulo de autenticación
- Actualización de IBC a v4.2.0 con interchain-accounts v0.2.4
- Agregue la guía del desarrollador y las mejores prácticas
- Bump Go mínimo a 1.19
- Almacenar e instanciar la propuesta del gobierno
- Permitir que los votos del gobierno carguen un código de bytes wasm más grande
- Introducir AcceptListStargateQuerier
- Obtener contratos por dirección del creador
- Admite permiso de creación de instancias> permiso de cadena para gov store
Integración del módulo de autenticación
El módulo authz es un módulo Cosmos-SDK para otorgar autorizaciones a una cuenta diferente (beneficiario) y para ejecutar acciones en cadena en nombre de la cuenta original (otorgante).
Esto es especialmente útil para proteger la clave de la cuenta privada, ya que solo se necesita para la operación de concesión, pero luego se puede usar la clave del beneficiario. Esto también puede ser útil para hacer coincidir las estructuras organizativas o de procesos donde el acceso a la clave privada del otorgante es limitado.
Una autorización otorgada viene con mucho poder ya que se ejecuta con la cuenta del otorgante. Por lo tanto, existen ciertas extensiones de authz en otros módulos que limitan el alcance de las acciones. Por ejemplo, en el banco. Se define la autorización, la cantidad total de tokens que se pueden transferir.
El módulo authz viene con una autorización genérica que acepta un tipo de mensaje. Esto funciona con cualquier módulo de Cosmos, incluido wasmd. El problema es que los contratos de wasm normalmente admiten una serie de operaciones, y no sería posible un control de acceso detallado.
La extensión de autorización wasmd se creó para admitir un nivel más fino de control de acceso. Los filtros se pueden definir para que coincidan con el mensaje del contrato en la ejecución y la migración. Wasmd viene en la primera iteración con los siguientes filtros:
AllowAllMessagesFilter : comodín para coincidir con cualquier mensaje de contrato
AcceptedMessageKeysFilter : los mensajes del contrato se interpretan como un objeto json con exactamente una clave. Esta clave se puede configurar en una lista de aceptación para ser aceptada. Por ejemplo, con el conjunto `retirar, delegar`, los mensajes `{“retirar”: {}}` y `{“delegar”:{}}` están permitidos, pero `{“enviado”:{}}` no es tan la clave no está en la lista.
AcceptedMessagesFilter : este filtro no hace suposiciones sobre el mensaje del contrato. Se interpretan como datos binarios puros y se comparan. Los pequeños cambios en el formato ya importan. Por ejemplo, con {"withdraw":{}}el mensaje de contrato establecido debe ser {"withdraw":{}}mientras {"withdraw":{} }que sería rechazado (tenga en cuenta los espacios).
Sin embargo, el beneficio de este filtro es que también contiene los datos después de la clave de objeto. Por ejemplo, {"vote":"yes"}no se puede cambiar a{"vote":"no"}
Otro elemento de la extensión de Autorización wasmd son los límites. Como la operación se ejecuta en el ámbito de la cuenta del otorgante, éste tiene pleno acceso a sus saldos bancarios. El otorgante tiene algún interés en limitar esto y mantener el control. Por ejemplo, es posible que una operación {“retirar”:{}} no necesite acceso al saldo, mientras que el {“delegado”:{}} sí lo necesita. Para soportar los diferentes casos de uso, tenemos los siguientes límites que se pueden establecer con los filtros:
MaxCallsLimit : defina cuántas veces se puede usar una concesión de contrato, no se permite la transferencia de tokens desde la cuenta del otorgante.
MaxFundsLimit : establece un presupuesto de token para gastar, sin límite en la cantidad de llamadas.
CombinedLimit : establece un presupuesto de token y cuántas ejecuciones se pueden realizar
Los límites se actualizan después de cada ejecución de concesión. Cuando el límite caduca, la autorización finaliza y se elimina.
Otras lecturas:
https://github.com/cosmos/cosmos-sdk/tree/main/x/authz
Actualización de IBC a v4.2.0 con interchain-accounts v0.2.4
Esta actualización incluye el protocolo de enlace IBC y el módulo de middleware de tarifas, interchain-accounts v0.2.4, así como también actualiza el paquete ibctesting.
Otras lecturas:
https://github.com/CosmWasm/wasmd/issues/960
https://github.com/cosmos/ibc-go/blob/v4.2.0/CHANGELOG.md
Agregue la guía del desarrollador y las mejores prácticas.
Las pautas de codificación se han actualizado para que sea más fácil para los recién llegados, así como para los desarrolladores más experimentados, encontrar y orientarse. También se agregaron las mejores prácticas, y la guía nueva y actualizada se puede encontrar aquí:
Bump Go mínimo a 1.19
Para seguir el SDK de cosmos, la versión mínima de Go se elevó a 1.19, lo que también evita problemas de consenso en una cadena mixta de Go 1.18/19.
Otras lecturas:
https://github.com/CosmWasm/wasmd/issues/1041
Almacenar e instanciar la propuesta del gobierno
En versiones anteriores, cargar wasm (almacenar) e instanciar el contrato requería 2 propuestas gubernamentales separadas.
Ahora hay un nuevo tipo de propuesta gubernamental que permite que ambos pasos se ejecuten como uno solo.
Así que ahora tenemos menos gastos administrativos y dependencia en la creación de propuestas. (Como la tienda tenía que programarse y ejecutarse antes de instanciar)
Otras lecturas:
https://github.com/CosmWasm/wasmd/issues/785
Permitir que los votos del gobierno carguen un bytecode wasm más grande.
Solíamos limitar el tamaño de wasm a 800 KB, lo cual era razonable para la mayoría de los contratos, ya que podría no ser deseable aumentar el límite global de la cadena; se propuso que los contratos gubernamentales pudieran cumplir esta función y permitir tamaños de wasm de hasta 4 MB al mismo tiempo que el Tx normal se mantiene en 800 KB.
Otras lecturas:
Introducir lista de aceptación Stargate Querier
Las consultas de Stargate son un poderoso punto de extensión genérico para consultar el estado del sistema a través del formato protobuf genérico "Stargate". Con esta cadena, los datos agnósticos pueden consultarse mediante un contrato, como un grupo de liquidez.
Esta característica causó muchos problemas en el pasado cuando el retorno del estado no era determinista y, por lo tanto, rompía el consenso. Agregamos esta lista de aceptación para permitir que cada cadena configure fácilmente su propia lista blanca sin mantener muchas bifurcaciones y potencialmente introducir errores. Osmosis se bifurcó para habilitar esto para sus módulos personalizados, y otras cadenas querían una funcionalidad similar.
Sin embargo, la lista de aceptación es una forma para que los arquitectos de la cadena vuelvan a agregar soporte para consultas individuales de Stargate que desean mantener y admitir (bajo su propio riesgo). Ahora, la lista de aceptación predeterminada está vacía y debe configurar una variable en el código Go de la cadena para agregar cualquier tipo de consulta que desee habilitar.
Otras lecturas:
https://github.com/CosmWasm/wasmd/issues/904
Obtener contratos por dirección del creador
En versiones anteriores, teníamos una consulta para obtener todas las instancias de contrato para una identificación de código. Un caso de uso popular es darme todas las instancias de contrato que fueron creadas por la dirección x.
A partir de esta versión, ahora es compatible y permite una mejor UX
Otras lecturas:
https://github.com/CosmWasm/wasmd/issues/998
Admite permiso de creación de instancias> permiso de cadena para gov store
También se trata de crear una instancia en cadenas autorizadas.
En versiones anteriores, se necesitaba un código wasm de la tienda y una actualización de la configuración de creación de instancias del código; ahora, con este lanzamiento, la propuesta del gobierno de la tienda ya puede establecer el permiso de instanciación correcto.
Esto mejora el flujo de trabajo del gobierno y ahorra una propuesta
Otras lecturas:
https://github.com/CosmWasm/wasmd/issues/1020
Involucrarse
¿Te gusta lo que ves? Hágale saber al mundo en Twitter o únase a la discusión en Discord. Y recuerde seguirnos en medium para estar informado sobre las próximas cohortes de CosmWasm Academy, o visitehttp://academy.cosmwasm.com, donde puedes subir de nivel tus habilidades.
Y consulte nuestra última llamada de la comunidad del año, donde se realizarán muchos anuncios interesantes el martes 20 de diciembre a las 6 p. m. CET para obtener más información anticipada y un espacio para hacer preguntas.
Agenda: https://github.com/CosmWasm/cosmwasm/issues/1548

![¿Qué es una lista vinculada, de todos modos? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































