MultiChain 2.1: Variáveis ​​e Bibliotecas

Nó Fonte: 1587135

Tornando os Filtros Inteligentes muito mais inteligentes

Hoje, temos o prazer de lançar o MultiChain 2.1, com dois novos recursos importantes para os desenvolvedores do MultiChain.

Há um ano e meio, o MultiChain 2.0 introduziu Filtros inteligentes, que permitem que a lógica personalizada seja incorporada em um blockchain para validar transações e dados. Os Filtros Inteligentes são conceitualmente semelhantes aos “contratos inteligentes” fornecidos por outras plataformas blockchain, mas têm um design diferente para se adequar ao modelo de transação mais rápido da MultiChain.

Filtros inteligentes vêm em duas variedades – filtros de transação e filtros de fluxo. Um filtro de transação valida as transações on-chain em sua totalidade, examinando suas entradas, saídas e metadados. Se uma transação não passar pelo filtro, ela será rejeitada por todos os nós da rede. Um filtro de fluxo valida itens individuais gravados em um Fluxo MultiChain, analisando suas chaves, editores e dados on-chain ou off-chain, em formato JSON, texto ou binário. Se um item não passar no filtro, ele será marcado como inválido e seus dados serão ocultados por cada nó inscrito no fluxo.

Ambos os tipos de Filtro Inteligente são escritos em JavaScript e executados em uma versão determinística do Google V8, o mecanismo JavaScript super rápido que alimenta o Chrome, Node.js e muitas outras plataformas. Filtros simples são fáceis de codificar e entender – por exemplo, aqui está um filtro de fluxo que valida se os itens têm pelo menos duas chaves:

function filterstreamitem() { var item=getfilterstreamitem(); // função de retorno de chamada if (item.keys.length2) return "Pelo menos duas chaves necessárias"; }

No geral, tivemos ótimos comentários sobre os Filtros Inteligentes, mas também ouvimos repetidamente sobre duas maneiras de torná-los ainda melhores. Primeiro, muitos usuários querem filtros que possam ler informações que estão no blockchain, mas não dentro da transação ou item de fluxo que está sendo validado. Os casos de uso incluem uma lista de mudança de países permitidos, taxas de câmbio fornecidas por um “oráculo” externo ou uma mudança para alternar certas regras.

Segundo, alguns desenvolvedores querem usar um conjunto de funções JavaScript em vários filtros, sem duplicar o código. Eles também querem poder atualizar essas funções, corrigir um bug ou cobrir algumas novas situações, sem desabilitar seus filtros existentes e criar novos em seu lugar. Por exemplo, o código compartilhado pode conter lógica específica do aplicativo, uma biblioteca de terceiros para validar JSONs ou analisar o conteúdo de um PDF.

MultiChain 2.1 introduz dois novos tipos de entidade on-chain, variáveis e bibliotecas, para responder a essas necessidades.

Variáveis

Vamos começar com as variáveis ​​MultiChain. Eles funcionam como aqueles em linguagens de programação regulares, mas com um toque de blockchain. Qualquer número de variáveis ​​nomeadas pode ser criado no blockchain. Cada variável possui um conjunto dinâmico de endereços que tem permissão para atualizar seu valor, e esse conjunto é gerenciado por um ou mais administradores de variáveis ​​(por padrão, apenas o criador da variável). As variáveis ​​são criadas ou atualizadas em uma transação blockchain, que pode ser enviada usando um simples comando de API de alto nível. Como alternativa, as APIs de nível inferior podem ser usadas para criar transações complexas que definem atomicamente uma ou mais variáveis, gravam itens de fluxo, transferem ativos, alteram permissões e assim por diante.

O próprio valor da variável pode conter qualquer estrutura JSON, incluindo números, strings, booleanos, objetos aninhados e matrizes, e é armazenado na cadeia no formato eficiente. UBJSON formato de serialização. Obviamente, os Filtros Inteligentes podem consultar o valor atual de uma variável usando uma função de retorno de chamada simples. Mas por ser uma blockchain, o histórico completo dos valores e escritores da variável também está disponível e pode ser recuperado parcial ou totalmente usando outra função de retorno de chamada. Para facilitar o desenvolvimento, esses retornos de chamada também estão disponíveis por meio da API voltada para o aplicativo.

bibliotecas

Vamos passar para as bibliotecas, que são irmãs maiores das variáveis. Tal como acontece com as variáveis, qualquer número de bibliotecas nomeadas pode ser criada no blockchain. Mas as bibliotecas têm um modelo mais rico de atualização, com três modos disponíveis – imutável, instantâneos e Sujeito a aprovação.

Uma vez imutável biblioteca é criada, seu código nunca pode ser alterado. Uma biblioteca com instantâneos as atualizações podem ser alteradas como uma variável, com um conjunto de endereços que podem substituir individualmente seu código. Mas em uma biblioteca com Sujeito a aprovação atualizações, uma atualização só é aplicada após ser aprovada por uma certa proporção dos administradores globais do blockchain. Este último modo oferece uma grande troca entre segurança e flexibilidade.

O código de uma biblioteca é escrito em JavaScript normal e define uma ou mais funções para uso dos Filtros Inteligentes. Assim como as variáveis, as bibliotecas são criadas ou atualizadas em uma transação especial, enviada facilmente por meio da API. Quando um Filtro Inteligente é criado, suas bibliotecas necessárias são fornecidas em um parâmetro opcional. Uma biblioteca sempre é executada no contexto do filtro que o requer, para que possa usar retornos de chamada do Filtro Inteligente quando apropriado. O MultiChain fornece ampla funcionalidade para testar (e reverter) bibliotecas e suas atualizações localmente, antes de fazer uma alteração no blockchain.

Resumindo

Assim como todos os recursos relacionados às regras do blockchain, variáveis ​​e bibliotecas estão disponíveis nas edições Community e Enterprise do MultiChain 2.1. Nossa documentação do desenvolvedor fornece uma descrição detalhada do novo APIs JSON-RPC e Retornos de chamada do Filtro Inteligente acessível. Para usar os novos recursos em um blockchain já em execução, primeiro migre os nós para o MultiChain 2.1, depois atualização o protocolo da cadeia para a versão 20012.

Então o que vem depois? Nos próximos meses, estaremos focados em algum trabalho detalhado e intenso nos bastidores, para melhorar o desempenho e a simultaneidade do MultiChain enquanto ele estiver sob carga significativa. Isso aumentará a capacidade de resposta dos aplicativos que precisam consultar um nó enquanto ele continua processando centenas ou milhares de novas transações por segundo.

Enquanto isso, todos nós da equipe MultiChain desejamos aos nossos usuários e clientes saúde e sanidade para o próximo ano. Sabemos que são tempos difíceis para todos e esperamos voltar ao ritmo normal de reuniões e conferências assim que for seguro.

Por favor, poste comentários no LinkedIn.

Carimbo de hora:

Mais de Multichain