Recursos recentes e roteiro de 2016

Nó Fonte: 1576913

Uma atualização do chão de fábrica do MultiChain

Como uma mudança nas postagens do blog sobre blockchains em geral, gostaria de fornecer uma atualização sobre MultiChain, tanto em termos de aprimoramentos recentes quanto em nosso roteiro para 2016.

Em primeiro lugar, gostaria de agradecer aos muitos milhares de vocês que baixaram e criaram no MultiChain, frequentemente e nos enviou um feedback. Nos oito meses desde o primeiro lançamento ao público, nossas estatísticas mostraram um crescimento orgânico consistente no tráfego e nos downloads, e espero que isso signifique que estejamos chegando ao ponto. Na verdade, sem citar nomes, sabemos que o MultiChain tem sido usado com sucesso para pilotos de blockchain de longa duração em alguns dos maiores bancos, empresas de consultoria, tecnologia financeira e empresas de TI do planeta.

Uma pergunta que frequentemente nos perguntam é por que o MultiChain está em “alfa” por tanto tempo. A resposta simples é que fomos bombardeados com solicitações de recursos, a maioria das quais fazia sentido para nós, então estamos focados em adicionar esses aprimoramentos em vez de trazer o produto para beta. Dito isso, você deve achar que o MultiChain é muito estável para software alfa, e nós o testamos exaustivamente sob cargas extremas.

Também quero explicar como estamos posicionando o MultiChain no espaço cada vez mais amplo das plataformas de blockchain. Nos últimos seis meses, muitos produtos concorrentes foram anunciados, (quase) consórcios foram formados, empresas levantaram dezenas de milhões de dólares e apenas ocasionalmente vimos alguns lançamentos de software reais. Claro, a competição é natural e inevitável e estamos ansiosos para assistir o desenvolvimento dessas outras plataformas. Sem dúvida, estaremos pegando emprestadas suas melhores idéias e presumimos que eles retribuirão o elogio.

Então, onde o MultiChain se encaixa com todo esse ruído? Em suma, é focado em produto e praticidade:

  • Estabilidade. Ao bifurcar-se de Bitcoin Core, a implementação de referência para a rede bitcoin, o MultiChain baseia-se nos anos de estabilidade e segurança conquistadas com muito esforço, provenientes da administração de bilhões de dólares em valor de criptomoeda na Internet aberta. Para ficar claro, a base de código do Bitcoin Core tem limitações de arquitetura e, eventualmente, talvez tenhamos que nos afastar dela. No entanto, para os requisitos atuais do usuário, o custo de fazê-lo superaria significativamente os benefícios.
  • FÁCIL DE USAR. Muitos usuários do MultiChain nos disseram que é muito mais fácil de usar do que as plataformas de blockchain concorrentes. Não consigo nem lembrar quantas vezes eu disse a alguém que eles podem ir de zero a seu próprio blockchain privado em minutos, e eles simplesmente não acreditaram em mim. Mas é verdade - basta seguir as instruções no download e começando páginas e veja por si mesmo. Sem dependências, sem compilação, sem mexer com o Docker. Apenas três executáveis ​​independentes e um arquivo README.
  • Funcionalidades. Quando o MultiChain foi lançado pela primeira vez, tinha muito menos recursos do que hoje. Nenhum controle de ativos por endereço, nenhuma transação de troca atômica, nenhum metadado de transação fácil. Então, como decidimos o que adicionar? Simples - ouvimos nossos usuários. Às vezes, eles sabem exatamente o que querem, como a emissão de ativos subsequentes, e estamos felizes em atender. Outras vezes, eles sabem o que querem alcançar, mas não sabem como expressar isso como um recurso, e é nosso trabalho resolver isso. De qualquer forma, o roteiro do MultiChain é impulsionado incessantemente pelo feedback do usuário e, portanto, continuará.
  • Compatibilidade com Bitcoin. Se você estiver construindo uma solução de blockchain, verá que o nó é apenas uma pequena parte da imagem. Você pode precisar de carteiras móveis ou da web, soluções de gerenciamento de chaves e uma biblioteca em alguma linguagem obscura para decodificar, assinar e codificar transações. MultiChain foi desenvolvido para tornar tudo isso o mais simples e rápido possível, mantendo a compatibilidade máxima com bitcoin, para o qual uma grande quantidade de informações, ferramentas e códigos estão disponíveis gratuitamente. Para provar o ponto, o MultiChain pode até estar configurado como um nó na rede bitcoin.

Basicamente, pretendemos encantar nossos usuários e acreditamos firmemente que este é o caminho mais seguro para o sucesso comercial. Por falar nisso, gostaria de descrever alguns dos novos recursos adicionados nos últimos meses.

Emissão subsequente de ativos (alfa 17)

Essa solicitação já existe há algum tempo e é o pergunta mais votada nas perguntas e respostas do desenvolvedor. Então, por que demorou tanto? Você pode nos culpar por sermos puristas. Você vê, em termos de segurança, não há diferença entre (a) emitir um zilhão de unidades de um ativo na primeira vez e manter a maioria deles fora de circulação e (b) permitir emissões subsequentes de mais unidades do mesmo ativo.

Mas acontece que, da perspectiva de nossos usuários, is uma grande diferença entre os dois casos, porque não é tão fácil diferenciar unidades em circulação ativa daquelas sentadas nas laterais. Portanto, temos o prazer de anunciar que, na versão lançada hoje, ao emitir um ativo, você pode decidir se esse ativo está aberto ou fechado. Se estiver aberto, o emissor original pode criar mais unidades quantas vezes quiser.

Por outro lado, o MultiChain agora também fornece um 'endereço de gravação' canônico para cada cadeia. Esse endereço está cheio de Xs e, portanto, foi obviamente criado sem uma chave privada correspondente (isso levaria uma quantidade interminável de tempo). Quaisquer unidades de ativos enviadas para este endereço nunca podem ser gastas e são destruídas de forma transparente. Observe que, para sua segurança, o endereço de gravação deve receber permissões de recebimento explicitamente antes de ser usado.

Chamadas de API: issue, issuefrom, issuemore, issuemorefrom, listassets, getinfo resposta's burnaddress campo.

Explorador MultiChain

Junto com o alfa 17, estamos lançando o primeiro beta do software livre e de código aberto Explorador MultiChain. Isso fornece uma visão intuitiva baseada na Web do estado global de uma blockchain MultiChain, semelhante aos exploradores de blockchain que os usuários de bitcoin conhecem e amam. Permite visualizar rápida e confortavelmente transações, bloqueios, ativos e endereços, bem como as conexões entre eles, tudo a partir do conforto do seu navegador favorito.

O MultiChain Explorer foi bifurcado do popular Abe projeto, escrito em Python e alimentado por SQLite. Ele se conecta à API de um nó MultiChain local e inclui um servidor da web independente para que não haja dependências adicionais. Esperamos que você goste desta ferramenta e receba seus comentários para nos ajudar a torná-la ainda melhor.

Modo de comando interativo (alpha 16)

Como um fork do Bitcoin Core, o MultiChain herdou o bitcoin-cli ferramenta, que renomeamos apropriadamente para multichain-cli é claro. Essa ferramenta fornece uma interface de linha de comando conveniente para a API JSON-RPC da MultiChain, permitindo que chamadas de API sejam enviadas da linha de comando do sistema, com suas respostas exibidas no terminal. Nos bastidores, ele lê as credenciais da API do arquivo de configuração da cadeia apropriada, cria a solicitação JSON-RPC e decodifica sua resposta.

Como usuários do MultiChain, uma frustração que tivemos foi que multichain-cli teve que ser executado separadamente para cada solicitação de API. Além da sobrecarga do sistema, isso evita o tipo de interação fluida que os bancos de dados SQL fornecem. E assim nós consertamos. A partir do alpha 16, se você executar multichain-cli [chain-name] sem nenhum comando, você é colocado em um modo interativo que permite digitar comandos repetidamente e ver suas respostas. O modo interativo oferece suporte a recursos de edição padrão, como histórico (setas para cima e para baixo), pular para o início (Ctrl A) ou fim (Ctrl E) da linha e passar para a palavra seguinte (Ctrl →) e anterior (Ctrl ←) .

Verificação mais rápida da assinatura (alfa 15)

Quando se trata de desempenho em bitcoin ou MultiChain, o gargalo mais crucial é a verificação do Assinaturas ECDSA no qual o modelo de segurança do blockchain é construído. O software Bitcoin Core original contava com uma biblioteca de código aberto chamada OpenSSL para geração e verificação de assinatura, que funcionou, embora tivesse alguns problemas com maleabilidade, o que significa que mais de uma assinatura era válida para uma chave privada e carga útil.

Versões recentes do Bitcoin Core introduziram uma nova biblioteca para assinatura e verificação da ECDSA, chamada libsecp256k1. Esta biblioteca, escrita do zero por desenvolvedores de blockchain de classe mundial, remove a dependência do OpenSSL, resolve problemas de maleabilidade e executa várias vezes mais rapidamente. Um dos benefícios de derivar do Bitcoin Core é que o MultiChain pode tirar proveito desses tipos de aprimoramentos, que são extensivamente revistos por pares e testados antes de serem implantados na rede de bitcoin. E assim o alpha 15 faz exatamente isso com libsecp256k1.

Ativar permissão (alfa 14)

Ao desenvolver a primeira versão do MultiChain, enfrentamos um dilema em termos de permissão. Por um lado, não teríamos problemas para inventar e implementar um modelo de permissões extremamente poderoso, com várias camadas de administradores, permissões por ativo e esquemas de votação ponderada. Por outro lado, sabíamos que isso aumentaria a complexidade da perspectiva do usuário e não necessariamente atenderia às necessidades do usuário. Portanto, decidimos começar com um modelo simples, contendo apenas seis tipos de permissão (conectar, enviar, receber, emitir, minar, admin) e uma votação direta baseada em consenso para as alterações de privilégio mais importantes. Esperávamos que esse modelo ficasse mais complexo com o tempo, mas orientado pelos requisitos do usuário, e não por nossas próprias teorias.

Acontece que, neste caso, simples é realmente muito bom. Mas um parceiro sério com quem estamos trabalhando precisava de algo mais. Veja, um endereço MultiChain com privilégios de administrador tem o poder de controlar todos os tipos de permissões em um blockchain, sujeito, em alguns casos, ao consenso de outros administradores. Mas esse parceiro queria dar a um endereço o poder de controlar as permissões de conexão, envio e recebimento de terceiros apenas para fins de integração e não ter influência em processos mais cruciais, como mineração e emissão de ativos. Então, adicionamos uma nova permissão 'ativar' que faz exatamente isso. Esse também foi o primeiro exemplo de um parceiro pagando para implementar um recurso de que precisava no produto, uma vantagem para todos, se é que alguma vez houve.

APIs de transação da carteira (alfa 13)

Como um fork do Bitcoin Core, o MultiChain herdou algumas das coisas ruins junto com as boas. Um dos pontos fracos do Bitcoin Core é a API para recuperar informações sobre as transações na carteira do nó local. Ele oferece duas opções: (a) o getrawtransaction chamada que decodifica o conteúdo binário das transações, mas não explica como eles afetaram a carteira local, e (b) o gettransaction e listtransactions chamadas que visam descrever as transações do ponto de vista da carteira, mas o fazem de forma confusa, com vários elementos de resposta por transação. Para piorar as coisas, a saída dessas chamadas não poderia ser facilmente estendida para funcionar com a implementação de ativos emitidos por blockchain do MultiChain.

Portanto, este lançamento introduziu um monte de novas APIs para consultar as transações de um nó. A saída dessas chamadas retém todos os campos úteis daqueles que eles substituem. Mas eles também adicionam um monte de novos campos que descrevem como cada transação afetou o saldo da carteira local, que aborda isso envolvido, como ele modificou as permissões e quaisquer metadados contidos. Após a introdução (em alfa 8) da capacidade de isolar a atividade de cada endereço em uma carteira, as chamadas vêm em duas versões - um par que descreve as transações da perspectiva da carteira como um todo e outro que as descreve de a perspectiva de um endereço de carteira individual.

Chamadas de API: listwallettransactions, getwallettransaction, listaddresstransactions, getaddresstransaction.

Olhando para o 2016

Essas são algumas das principais melhorias introduzidas no MultiChain durante os últimos meses. É claro que muitos recursos menores também foram adicionados e estão listados por completo no arquivo README do download. E nossa primeira prioridade sempre será corrigir erros assim que aparecerem. Felizmente, os problemas que vimos nunca foram de natureza arquitetônica séria - o feliz resultado de usar o Bitcoin Core como ponto de partida.

Em termos do MultiChain em si, após um cronograma de lançamentos acelerado, vamos desacelerar um pouco. Isso ocorre porque estamos trabalhando em algo grande que levará alguns meses para ser concluído. Descreverei esse recurso em detalhes em uma postagem futura no blog, mas a ideia básica é fornecer um mecanismo simples e eficiente de registro imutável e carimbo de data / hora para qualquer tipo de informação, uma espécie de 'fita' digital. Embora os metadados da transação no MultiChain já possam ser usados ​​para esse propósito (em blocos de até 8 MB), não são particularmente convenientes para armazenamento ou recuperação e há problemas de escalabilidade ao lidar com grandes pedaços de dados.

O que está motivando esse recurso? Seu feedback, é claro, nos ensinou que o armazenamento imutável de uso geral é um caso de uso muito comum para blockchains. E se alguma vez virmos uma demanda significativa por “contratos inteligentes” (ou seja, computação em blockchain) no MultiChain, esse sistema pode servir como a camada de armazenamento subjacente, com cálculos realizados por nó, quando necessário. Como eu tenho explicado anteriormente, há pouco valor em exigir que cada nó em uma blockchain privada execute cálculos na cadeia em tempo real.

E depois disso? Bem, sem dúvida, haverá mais melhorias no produto gratuito, mas também vamos começar a trabalhar em um versão premium do MultiChain. Por sorte, nos últimos 8 meses, vimos várias solicitações de recursos comuns que compartilham as seguintes características:

  • Eles são importantes para implantações no mundo real, mas não para experimentação inicial.
  • Eles podem ser implementados por nó, sem afetar o consenso de uma cadeia.
  • Empresas reais realizando projetos reais parecem mais do que felizes em pagar por elas.

Esses recursos estão relacionados a desempenho, segurança, registro e análise, e vamos descrevê-los em detalhes com o passar do tempo. Por enquanto, quero enfatizar duas coisas importantes sobre esta versão premium. Primeiro, será um substituição drop-in para a versão gratuita, qualquer código ou aplicativo que você construa no MultiChain hoje continuará funcionando sem modificações. Segundo, todos os nós em uma blockchain poderão decidir independentemente atualizar ou não, porque nenhum dos recursos premium afetam o consenso do blockchain. Não somos apenas bondosos - é crucial se quisermos que o MultiChain continue a crescer organicamente. Uma nova entidade será capaz de se conectar e interagir com uma rede MultiChain existente cheia de nós premium, sem gastar um centavo.

Se você estiver interessado em discutir a versão premium do MultiChain, envie um e-mail premium@multichain.com or use este formulário. Teremos o maior prazer em saber mais sobre suas necessidades e ver como podemos atendê-las.

Uma coisa que aprendi nos últimos anos é que ninguém leva software a sério até que possa realmente vê-lo e usá-lo. Um mês antes do primeiro lançamento do MultiChain, eu estava contando às pessoas sobre o produto e notei que elas acenavam educadamente com a cabeça enquanto obviamente pensavam “Oh, me salve, aqui está outro locutor rápido com um white paper e nenhum código funcional”. Mas assim que você disponibiliza um produto, a resposta muda completamente. Então, se você está lendo sobre esta futura versão premium com uma dose de ceticismo, eu entendo e não vou usar isso contra você. Tudo o que posso dizer é que, até agora, o MultiChain tem um histórico muito sólido de cumprimento de suas promessas e estamos ansiosos para continuar.

Também quero aproveitar esta oportunidade para agradecer a nossa equipe por seu excelente trabalho. Embora eu seja um programador sério de profissão, atualmente passo todo o meu tempo escrevendo conteúdo, gerenciando produtos e conversando com clientes. Tenho muita sorte em saber que posso confiar em nossos desenvolvedores para criar um código sólido e eficiente, dia após dia, e não considero isso garantido por um momento.

E, finalmente, obrigado por ler e por ser um dos primeiros usuários da plataforma MultiChain.

Carimbo de hora:

Mais de Multichain