Wasmd 0.30 lançado
Lançamento de fim de ano!
Foi um 2022 agitado de várias maneiras, boas e ruins, então por que não encerrá-lo com um ótimo lançamento do Wasmd?
Tínhamos um grande número de solicitações de recursos da comunidade para revisar e priorizar e estamos felizes em anunciar que, com o Wasmd v0.30, conseguimos atender a muitos deles neste lançamento de final de ano.
Como de costume, um grande obrigado a todos os colaboradores que tornaram este lançamento possível!
Visão geral (TLDR)
O Wasmd v0.30 continha algumas mudanças fortemente solicitadas pela comunidade, além das correções de bugs e melhorias usuais, também enviamos o seguinte:
- Integração do módulo Authz
- Atualização do IBC para v4.2.0 com contas entre cadeias v0.2.4
- Adicionar guia do desenvolvedor e práticas recomendadas
- Bump Go mínimo para 1,19
- Armazenar e instanciar a proposta do governo
- Permitir que os votos do governo carreguem um bytecode wasm maior
- Apresentar AcceptListStargateQuerier
- Obter contratos por endereço do criador
- Permissão de instanciação de suporte > permissão de cadeia para loja gov
Integração do módulo Authz
O módulo authz é um módulo do Cosmos-SDK para conceder autorizações a uma conta diferente (concedente) e para executar ações na cadeia em nome da conta original (concedente).
Isso é especialmente útil para proteger a chave da conta privada, pois ela é necessária apenas para a operação de concessão, mas a chave do beneficiário pode ser usada. Isso também pode ser útil para combinar estruturas organizacionais ou de processo em que o acesso à chave privada do concedente é limitado.
Uma autorização concedida vem com muito poder, pois é executada com a conta do concedente. Portanto, existem certas extensões authz em outros módulos que limitam o escopo das ações. Por exemplo, no banco. A autorização, a quantidade total de tokens, é definida que pode ser transferida.
O módulo authz vem com uma autorização genérica que aceita um tipo de mensagem. Isso funciona com qualquer módulo Cosmos, incluindo wasmd. O problema é que os contratos wasm normalmente suportam várias operações e o controle de acesso refinado não seria possível.
A extensão de autorização wasmd foi criada para oferecer suporte a um nível mais refinado de controle de acesso. Os filtros podem ser definidos para corresponder à mensagem do contrato na execução e migração. Wasmd vem na primeira iteração com os seguintes filtros:
AllowAllMessagesFilter — caractere curinga para corresponder a qualquer mensagem de contrato
AcceptedMessageKeysFilter — as mensagens do contrato são interpretadas como um objeto json com exatamente uma chave. Essa chave pode ser definida em uma lista de aceitação para ser aceita. Por exemplo, com ` retirar, delegar` definido, as mensagens `{“withdraw”: {}}` e `{“delegate”:{}}` são permitidas, mas `{“sent”:{}}` não é tão a chave não está na lista.
AcceptedMessagesFilter — este filtro não faz suposições sobre a mensagem do contrato. Eles são interpretados como dados binários puros e comparados. Pequenas mudanças na formatação já importam. Por exemplo, com {"withdraw":{}}a mensagem de contrato definida deve ser {"withdraw":{}}enquanto {"withdraw":{} }seria rejeitada (observe os espaços).
O benefício desse filtro, porém, é que ele também contém os dados após a chave do objeto. Por exemplo, {"vote":"yes"}não pode ser alterado para{"vote":"no"}
Outro elemento da extensão de autorização wasmd são os limites. Como a operação é realizada no âmbito da conta do concedente, ele tem acesso total aos seus saldos bancários. O concedente tem algum interesse em limitar isso e manter o controle. Por exemplo, uma operação {“withdraw”:{}} pode não precisar de acesso ao saldo enquanto o {“delegate”:{}} precisa. Para suportar os diferentes casos de uso, temos os seguintes limites que podem ser definidos com os filtros:
MaxCallsLimit — define quantas vezes uma concessão de contrato pode ser usada, nenhuma transferência de token da conta do concedente é permitida.
MaxFundsLimit — define um orçamento de token a ser gasto, sem limite no número de chamadas.
CombinedLimit — define um orçamento de token e quantas execuções podem ser feitas
Os limites são atualizados após cada execução de outorga. Quando o limite expira, a autorização termina e é removida.
Leitura adicional:
https://github.com/cosmos/cosmos-sdk/tree/main/x/authz
Atualização do IBC para v4.2.0 com contas entre cadeias v0.2.4
Esta atualização inclui o handshake do protocolo IBC e o módulo de middleware de taxa, interchain-accounts v0.2.4, bem como atualiza o pacote ibctesting.
Leitura adicional:
https://github.com/CosmWasm/wasmd/issues/960
https://github.com/cosmos/ibc-go/blob/v4.2.0/CHANGELOG.md
Adicione o guia do desenvolvedor e as melhores práticas.
As diretrizes de codificação foram atualizadas para tornar mais fácil para os recém-chegados, bem como para os desenvolvedores mais experientes, encontrar e se orientar. As melhores práticas também foram adicionadas e o guia novo e atualizado pode ser encontrado aqui:
Bump Go mínimo para 1,19
Para seguir o cosmos-SDK, a versão mínima do Go foi aumentada para 1.19, o que também evita problemas de consenso em uma cadeia mista Go 1.18/19.
Leitura adicional:
https://github.com/CosmWasm/wasmd/issues/1041
Armazenar e instanciar a proposta do governo
Em versões anteriores, carregar wasm (armazenar) e instanciar contrato exigia 2 propostas gov separadas.
Agora há um novo tipo de proposta de governo que permite que ambas as etapas sejam executadas como uma só.
Portanto, agora temos menos sobrecarga organizacional e dependência na criação de propostas. (Como o armazenamento teve que ser agendado e executado antes da instanciação)
Leitura adicional:
https://github.com/CosmWasm/wasmd/issues/785
Permita que os votos do governo carreguem um bytecode wasm maior.
Costumávamos limitar o tamanho do wasm a 800 KB, o que era razoável para a maioria dos contratos, pois poderia ser indesejável aumentar o limite global da cadeia; foi proposto que os contratos governamentais pudessem atender a essa função e permitir tamanhos de wasm de até 4 MB ao mesmo tempo em que o Tx normal permanece em 800 KB.
Leitura adicional:
Apresentar lista de aceitação Stargate Querier
As consultas Stargate são um poderoso ponto de extensão genérico para consultar o estado do sistema por meio do formato protobuf genérico “Stargate”. Com essa cadeia, dados agnósticos podem ser consultados por um contrato, como um pool de liquidez.
Esse recurso causou muitos problemas no passado quando o estado retornado não era determinístico e, portanto, quebrava o consenso. Adicionamos esta lista de aceitação para permitir que cada cadeia configure facilmente sua própria lista de permissões sem manter muitas bifurcações e potencialmente introduzir bugs. A Osmosis bifurcou-se para habilitar isso para seus módulos personalizados, e outras cadeias queriam uma funcionalidade semelhante.
A lista de aceitação, no entanto, é uma maneira de os arquitetos de cadeia adicionarem suporte para consultas Stargate individuais que desejam manter e oferecer suporte (por sua conta e risco). Agora a lista de aceitação padrão está vazia e você precisa definir uma variável no código Go da cadeia para adicionar quaisquer tipos de consulta que deseja habilitar.
Leitura adicional:
https://github.com/CosmWasm/wasmd/issues/904
Obter contratos por endereço do criador
Nas versões anteriores, tínhamos uma consulta para obter todas as instâncias de contrato para um ID de código. Um caso de uso popular é me fornecer todas as instâncias de contrato que foram criadas pelo endereço x.
A partir desta versão, isso agora é suportado e permite uma melhor UX
Leitura adicional:
https://github.com/CosmWasm/wasmd/issues/998
Permissão de instanciação de suporte > permissão de cadeia para loja gov
Trata-se também de criar uma instância em cadeias permitidas.
Em versões anteriores, era necessário um código store wasm e uma atualização de configuração nas configurações de instanciação do código; agora, com esta versão, a proposta do governo da loja já pode definir a permissão de instanciação correta.
Isso melhora o fluxo de trabalho do governo e economiza uma proposta
Leitura adicional:
https://github.com/CosmWasm/wasmd/issues/1020
Envolver-se
Gostou do que está vendo? Deixe o mundo saber no Twitter ou participe da discussão no Discord. E lembre-se de nos seguir no meio para ser informado sobre as próximas coortes da CosmWasm Academy, ou visitehttp://academy.cosmwasm.com, onde você pode aumentar o nível de suas habilidades.
E confira nossa última chamada da comunidade do ano, onde muitos anúncios interessantes serão feitos na terça-feira, 20 de dezembro, às 18h CET, para obter mais informações iniciais e um espaço para fazer perguntas.
Agenda: https://github.com/CosmWasm/cosmwasm/issues/1548





































![O que é uma lista vinculada, afinal? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)