Junho de 2018

Volume 33 Número 6

Blockchain — Introdução ao Azure Blockchain Workbench

Por Stefano Tempesta | De 2018 junho

Azure Workbench de Blockchain (aka.ms/abcworkbench) é a etapa mais recente em jornada da Microsoft para permitir que os clientes adotar tecnologias blockchain e começar a trabalhar com Blockchain do Azure. Para fornecer contexto, Blockchain do Azure é uma coleção de serviços do Azure e recursos projetados para ajudar as empresas a criar e implantar uma nova classe de aplicativos para o compartilhamento de dados e processos de negócios com várias organizações de confiança parcial. Atualmente, os clientes podem implantar esses serviços em suas assinaturas do Azure e integrá-las com blockchains disponíveis no Azure Marketplace. Agora, com o Azure Blockchain Workbench, o trabalho pesado é feito para eles, para que podem se concentrar menor em scaffolding e mais informações sobre a lógica e os contratos inteligentes.

Workbench de Blockchain do Azure orquestra vários serviços do Azure ao redor razões digital blockchain populares e em uma arquitetura de referência que pode ser usada para criar aplicativos baseados em blockchain. É uma ferramenta gratuita e fácil de usar com uma interface simplificada que permite aos usuários criar aplicativos descentralizados ponta a ponta, aproveitando todos os recursos do Azure Blockchain. Ela vem equipada com fluxos de trabalho entre organizações de exemplo e contratos inteligentes, bem como uma interface do usuário da caixa que os clientes podem usar para reduzir drasticamente os custos de desenvolvimento e acelerar provas de conceito.

Se você estiver familiarizado com blockchain, recomendo a leitura excelente artigo de Jonathan Waldman "Fundamentos de Blockchain" (msdn.com/magazine/mt845650), na edição de março de 2018 da MSDN Magazine. Além disso, fazer um ponto para assistir ao vídeo Microsoft Mechanics, "Introdução ao Blockchain e Azure Blockchain Workbench," em aka.ms/workbenchintro.

Introdução ao Workbench Blockchain do Azure

Em quase da mesma forma que os aplicativos hoje interagirem com bancos de dados, descentralizados aplicativos em execução em um blockchain se comunicam em executar a lógica em relação a uma razão digital específico, como Ethereum ou Hyperledger. Uma rede de razão digital consiste em uma rede de ponto a ponto descentralizada de nós. Esses nós mantém uma cópia do repositório de dados e executar uma máquina virtual para dar suporte à computação arbitrária em razão, mantendo consenso. Contratos inteligentes são o mecanismo que permite que esse cálculo complicado na rede, semelhante aos procedimentos armazenados em um banco de dados relacional tradicional.

Apesar do potencial para aproveitar blockchain em uma variedade de cada vez maior de processos de negócios, há obstáculos para superar antes que as empresas podem adotar blockchain tecnologias. Falta de controle, o desempenho da rede e escalabilidade são citados como desafios que afetam a adoção de blockchain no espaço de empresa.

Compilar uma solução completa em execução no blockchain normalmente requer infraestrutura de provisionamento e desenvolvendo um aplicativo cliente, gravar e implantar uma API de gateway, Implementando suporte para armazenamento de cadeia de logoff, gravar logs e relatórios e integração identidade e serviços de Cofre de chaves na solução. Há um conjunto comum de desafios relacionados ao desenvolvimento de aplicativos blockchain que são endereçadas por Azure Blockchain Workbench, que reduz significativamente a quantidade de tempo necessário para criar uma solução blockchain.

Workbench de Blockchain do Azure fornece ativos de código e a implantação baseada em modelos ARM para todo o scaffolding necessário para blockchain POCs, incluindo o blockchain gateway de rede, um API, um aplicativo Web responsivo, a integração do Active Directory do Azure, chave do Azure Integração do cofre, um banco de dados SQL configurados para coleta de dados na cadeia, e um conjunto de dar suporte a serviços de dados, hash e assinatura. A ferramenta também torna possível criar um front-end da Web sem gravar qualquer código. Ele usa metadados fornecidos para contratos inteligentes para entregar um UX contextual dinamicamente para os participantes. Porque a estrutura preenche o banco de dados SQL como um armazenamento de cadeia de off, ele permite que uma organização aproveitar recursos existentes e ferramentas para recursos adicionais de luz.

O resultado Azure Workbench de Blockchain reduz o tempo e custo para projetos de prova de conceito (POC). Ele permite que os clientes se concentrar na criação de aplicativos inovadores que demonstram o potencial de blockchain, gastar menos tempo e recursos em tarefas de integração que são necessárias para preparar um POC básico.

Workbench de Blockchain do Azure está disponível no Azure Marketplace (aka.ms/tryworkbench), e um vídeo do Workbench em ação está disponível pela equipe do Microsoft Mechanics em aka.ms/workbenchdemo.

Implantar o Workbench de Blockchain do Azure

A implantação do Azure Blockchain Workbench exige as seguintes etapas de pré-requisito:

1. Um locatário do Azure Active Directory (AD do Azure) para hospedar o AD do Azure necessário e aplicativos de Cofre de chaves.

2. Registro de um aplicativo do Azure AD e um valor de Cofre de chaves para referência durante a implantação do Azure Blockchain Workbench.

Você talvez queira criar um novo locatário do AD do Azure para configurar os usuários de teste ou registrar aplicativos no Azure diferente locatário de locatário do AD que sua empresa do AD do Azure. Instruções detalhadas sobre essas etapas de configuração são relatadas na documentação oficial do Azure Blockchain Workbench aka.ms/workbenchdocs.

Depois de concluir as etapas de pré-requisito, o Workbench pode ser implantado. Entre no portal do Azure e adicionar um novo recurso do Azure Marketplace, mostrado na Figura 1. Procure e selecione Azure Blockchain Workbench para iniciar o processo de provisionamento.

Figura 1 o Workbench Blockchain do Azure no Azure Marketplace

Este modelo de solução foi projetado para facilitar a implantação e integração dos serviços necessários para compilar um aplicativo em uma rede blockchain. Com algumas entradas de usuário e uma implantação de clique simples por meio do portal do Azure, você pode implantar uma razão blockchain juntamente com os serviços do Azure relevantes necessárias para criar um aplicativo blockchain de ponta a ponta, empacotado com um interface de usuário da Web de exemplo. O aplicativo gerado inclui um aplicativo Web, API REST, armazenamento fora da cadeia e assim por diante. Em vez de gastar horas criando e configurando os serviços necessários para integrar com uma rede blockchain, a equipe do Azure tem automatizadas essas partes demorados para que você possa se concentrar na criação seus cenários. Por meio do aplicativo da Web do Azure Blockchain Workbench, você pode gerar um UX de ponta a ponta para seus fluxos de trabalho de negócios com base nos contratos inteligentes.

Provisionamento do Azure Blockchain Workbench requer seis etapas, com as duas primeiras estabelecer parâmetros de configuração e as próximas duas abordar a capacidade de rede e o monitoramento. Etapa 1 requer algumas configurações básicas, descritas em Figura 2, que incluem:

• Um identificador exclusivo como um prefixo para nomear a todos os recursos do Azure provisionados como parte desse modelo.

• O nome de usuário de administrador para todas as máquinas virtuais provisionadas (VMs).

• Uma chave pública SSH usada para se conectar às VMs. Copie e cole uma chave pública RSA no formato de linha única (começando com "ssh-rsa") ou o formato PEM várias linha. Você pode gerar as chaves de SSH usando ssh-keygen no Linux e macOS ou PuTTYGen no Windows.

• Uma senha para proteger o acesso ao banco de dados incluído como parte da implantação do Workbench.

• A assinatura do Azure que você deseja usar para sua implantação. Lembre-se de que o uso do Azure Blockchain Workbench é gratuito de qualquer custo de licença, mas você paga do Azure provisionado recursos de computação, armazenamento e rede.

• O grupo de recursos a ser usado para agrupar todos esses recursos. É recomendável criar um novo grupo de recursos para sua solução Blockchain Workbench.

• A região à qual você deseja implantar os recursos.

Figura 2 introdução de provisionamento do Azure Blockchain Workbench

Etapa 2 exige que você concluiu as etapas de pré-requisito do registro do aplicativo cliente blockchain no AD do Azure, será necessário o ID do aplicativo de registro e a chave de inserir quando solicitado. Você também precisa especificar o nome de domínio de locatário obtida como parte do registro do aplicativo cliente no AD do Azure.

Na etapa 3, você pode especificar o número de nós no razão blockchain provisionados e o tamanho das VMs alocados. Etapa 4 é para opcionalmente aceitar para o Operations Management Suite (OMS) para monitorar a solução implantada.

As etapas 5 e 6 são simplesmente um resumo dos recursos sendo provisionados e a confirmação de que você entender o que há uma implicação de custo. Concluída a implantação do Workbench do, você verá um novo grupo de recursos com o nome especificado. Alguns recursos implantados aqui, como o Application Insights, permitirá que você obter mais informações sobre o estado do Workbench, incluindo detalhes sobre as redes e máquinas virtuais implantadas.

Como já mencionei anteriormente, aproveita o Azure Blockchain Workbench Azure AD para autenticação, acesse identificação persona de controle e fluxo de trabalho. Somente usuários especificados no AD do Azure referenciado será capazes de autenticar e usar os recursos implantados. Além disso, os usuários devem ser associados um grupo de usuários específicos para interagir e executar ações. Portanto, é necessário gerenciar contas de usuário interagir com o Azure Blockchain Workbench e atribuir a eles as permissões necessárias.

Implantando um contrato inteligente

Uma vez implantado, você pode acessar o Azure Blockchain Workbench navegando até a URL. Você verá um logon do Azure AD com backup experiência onde você pode inserir seu trabalho ou credenciais de conta pessoais da Microsoft para acessar o aplicativo.

Agora você pode começar a aproveitar contratos inteligentes, que contêm a lógica de negócios que conduz cenário diferentes fluxos. Esta abordagem fornece a imutabilidade, a execução determinística e a transparência necessário em ambientes não confiáveis. Contratos inteligentes escritos em linguagens de pilha específico blockchain. Por exemplo, solidez é usado para Ethereum, enquanto Go é usado para a malha Hyperledger. Um contrato inteligente é implantado em todos os nós a blockchain. Durante a execução, as informações que transmite também serão replicadas para todos os nós na rede.

O objetivo principal do Azure Blockchain Workbench é preparar o scaffolding ao redor do aplicativo blockchain, para que os usuários podem se concentrar na criação de lógica de negócios inteligente com base no contrato. Quando um contrato inteligente é instanciado no Workbench, que é gravado o blockchain e atualizações subsequentes para o contrato inteligente são registradas no blockchain. Depois que o administrador do Azure Blockchain Workbench implantou contratos inteligentes e atribuições de usuário concluída para os contratos inteligentes, outros usuários podem interagir com o aplicativo blockchain e participar de fluxos de trabalho inteligentes de contrato.

Vamos começar a implantação de qualquer um dos contratos inteligente demonstração existente. Depois de entrar com êxito, você verá um link de administrador no canto superior direito. Clique no link de administrador para acessar o painel do administrador. Existem atualmente três ações disponíveis para o administrador no Workbench, mostrado na Figura 3. Aqui você pode atribuir usuários, implantar contratos de demonstração e implantar contratos personalizados.

Figura 3 o painel do administrador

Clicando em implantar o contrato de demonstração no painel administrador lhe proporciona uma lista de todos os contratos de demonstração que podem ser fornecidas. A versão atual do Blockchain Workbench contém um conjunto de contratos de inteligente de demonstração e arquivos de configuração para começar. A documentação do Workbench fornece mais informações sobre os cenários específicos e uma apresentação passo a passo da interface do usuário. Também há instruções detalhadas sobre como os contratos de inteligente de demonstração e os arquivos de configuração associados foram criados e como configurar as contas de usuário no AD do Azure para habilitar esse cenário.

Carregando um contrato personalizado

Você também pode criar contratos personalizados de qualquer uma das linguagens de programação com suporte na plataforma blockchain de referência e implantá-las no Azure Blockchain Workbench. Todos os Workbench de Blockchain do Azure requer três arquivos que definem a lógica de negócios, interações e visualizações dos fluxos de trabalho implementados. Eles são:

Contrato inteligente: Para começar, você deve criar um contrato inteligente que contém a lógica de negócios para o cenário. No exemplo a seguir, o contrato inteligente está direcionando blockchain Ethereum, para que os contratos são gravados na solidez linguagem de programação.

Configuração: No arquivo de configuração, os usuários mapear propriedades, ações e informações de protocolo blockchain para o contrato inteligente. Você também pode definir quais parâmetros são necessários de participantes para a instanciação e ações no contrato inteligente.

Configuração de interface do usuário: Nos arquivos de configuração de interface do usuário, você define a interface do usuário para controle de acesso baseado em função em cada estado do contrato inteligente, como restringir quais personas podem executar ações específicas. Nesse arquivo, o usuário mapeia estados e personas e especifica as definições de estado, porcentagem concluída em cada estado de contrato e as ações qualificadas em cada estado.

Criação de contrato inteligente

A definição de contrato contém alguns componentes que devem ser especificados para trabalhar com o Azure Blockchain Workbench. Antes de definir os detalhes de contrato específicos para o cenário, como estados, participantes e as funções que descrevem a lógica por trás de cada ação, você precisa implementar um contrato LexingtonBase. O contrato real com a lógica de negócios para o cenário de negócios herdará do contrato LexingtonBase (que é equivalente a uma classe em c#), conforme mostrado no Figura 4.

Figura 4 LexingtonBase contrato

contract LexingtonBase {
  event LexingtonContractCreated(string contractType, address originatingAddress);
  event LexingtonContractUpdated(string contractType, string action,     address originatingAddress);
  string internal ContractType;

  function LexingtonBase(string contractType) internal {
    ContractType = contractType;
  }

  function ContractCreated() internal {
    LexingtonContractCreated(ContractType, msg.sender);
  }

  function ContractUpdated(string action) internal {
    LexingtonContractUpdated(ContractType, action, msg.sender);
  }
}

Cada contrato deve ter um estado que representa o estado atual do contrato, endereços de participantes envolvidos no contrato inteligente, dados armazenados no contrato, funções, definir a lógica de negócios para ações diferentes e um construtor para Quando o contrato inteligente é instanciado. Figura 5 fornece um exemplo do construtor e propriedades do contrato inteligente transferir ativo.

Figura 5 ativo transferência inteligente contrato

contract AssetTransfer is LexingtonBase('AssetTransfer')
{
  enum AssetState { Created, Active, OfferPlaced, PendingInspection,
    Inspected, Appraised,
    NotionalAcceptance, BuyerAccepted, SellerAccepted, Accepted,
      Complete, Terminated }

  address public Owner;
  string public Description;
  uint public AskingPrice;
  AssetState public State;
  address public Buyer;
  uint public OfferPrice;
  address public Inspector;
  address public Appraiser;

  function AssetTransfer(string description, uint256 price)
  {
    Owner = msg.sender;
    AskingPrice = price;
    Description = description;
    State = AssetState.Active;
    ContractCreated();
  }
}

Certifique-se que a correspondência de nome de nome e um construtor de classe. Você pode encontrar o código-fonte na linguagem de solidez para este contrato inteligente, juntamente com os arquivos de configuração JSON, em meu repositório do GitHub em bit.ly/2HJPcET.

Criação do arquivo de configuração

O arquivo de configuração define as propriedades principais e os parâmetros para o contrato inteligente. Isso inclui listando todas as propriedades e tipos, bem como definir um construtor que indica que o usuário precisa para instanciar o contrato inteligente de entrada de parâmetros. Figura 6 mostra um exemplo de como as propriedades de transferência de ativo e o construtor do arquivo de configuração.

Construtor e as propriedades de transferência de ativos de Figura 6

"Properties": {
    "State": {
      "Type": "state"
    },
    "Owner": {
      "Type": "user"
    },
    "Description": {
      "Type": "string"
    },
    "AskingPrice": {
      "Type": "money"
    },
    "Buyer": {
      "Type": "user"
    },
    "OfferPrice": {
      "Type": "money"
    },
    "Inspector": {
      "Type": "user"
    },
    "Appraiser": {
      "Type": "user"
    }
  },

"Constructor": {
    "description": {
      "Type": "string"
    },
    "price": {
      "Type": "money"
    }
  },

Além disso, o usuário deve enumerar e fornecer detalhes sobre todas as ações possíveis, incluindo a especificação de parâmetros de entrada para cada ação. Figura 7 mostra um exemplo da especificação de ação MakeOffer ativo transferir arquivo de configuração, que exige que o usuário insira um Inspetor, a ferramenta de avaliação e um preço de oferta.

Figura 7 MakeOffer ação especificação

"MakeOffer": {
    "Parameters": {
      "inspector": {
        "Type": "user"
      },
      "appraiser": {
        "Type": "user"
      },
      "offerPrice": {
        "Type": "money"
      }
    }
  },

Por fim, inclua as informações de configuração de blockchain, da seguinte maneira:

"Chains": {
    "Ethereum": {
      "Type": "Ethereum",
      "Version": "1.0",
      "Location": "AssetTransfer.sol",
      "TypeName": "AssetTransfer",
      "ActionOverrides": {},
      "PropertyOverrides": {}
    }
  }

Criação do arquivo de configuração de interface do usuário

Os usuários definem os detalhes da interface do usuário para cada ação no arquivo de configuração da interface do usuário. Isso inclui detalhes sobre os usuários, como a função de iniciador ou participante e mapeamento persona, mapeamentos de estado, bem como um construtor que indica o texto a ser exibido quando um usuário deseja instanciar o contrato inteligente. Figura 8 mostra um exemplo de como as propriedades de transferência de ativo e o construtor do arquivo de configuração da interface do usuário.

Figura 8 InitiatingRoles

"InitiatingRoles": [
    "Admin",
    "User"
  ],
  "Personas": {
    "Owner": {
      "Role": "Initiator",
      "IsInitiator": true,
      "PropertyMapping": "Owner"
    },
    "Buyer": {
      "Role": "Participant",
      "PropertyMapping": "Buyer"
    },
    "Appraiser": {
      "Role": "Participant",
      "PropertyMapping": "Appraiser"
    },
    "Inspector": {
      "Role": "Participant",
      "PropertyMapping": "Inspector"
    }
  },
  "StateProperty": "State",
  "StateMapping": {
    "Created": 0,
    "Active": 1,
    "OfferPlaced": 2,
    "PendingInspection": 3,
    "Inspected": 4,
    "Appraised": 5,
    "NotionalAcceptance": 6,
    "BuyerAccepted": 7,
    "SellerAccepted": 8,
    "Accepted": 9,
    "Complete": 10,
    "Terminated": 11
  },
"Constructor": {
    "DisplayName": "Create Asset Transfer",
    "Description": "Description of asset transfer"
  },

Além disso, o usuário deve enumerar todos os possíveis estados e incluir os detalhes para cada estado especificar ações que podem ser executadas em cada etapa por pessoa, bem como um valor de porcentagem para dar aos usuários uma visualização do progresso por meio do contrato inteligente. Por exemplo, o arquivo de configuração de interface do usuário de contrato ativo transferir mostra que quando o estado mostra uma oferta foi colocada, somente os proprietários e compradores podem levar ações especificadas, conforme mostrado no código da Figura 9.

Figura 9 OfferPlaced código

"OfferPlaced": {
    "PercentComplete": 30,
    "Style": "Success",
    "Actions": {
      "Owner": {
        "AcceptOffer": {},
        "Reject": {},
        "Terminate": {}
      },
      "Buyer": {
        "RescindOffer": {}
      }
    }
  }

Depois de criar o contrato inteligente personalizados e os arquivos de configuração associado, a próxima tarefa é implantar o contrato inteligente. Depois de selecionar carregar contrato personalizado no painel do administrador do Azure Blockchain Workbench, você verá uma página para carregar o contrato personalizado e os arquivos de configuração. Há três arquivos que você precisa fornecer. Selecione o arquivo do contrato inteligentes e os dois arquivos de configuração criados anteriormente, conforme indicado na tela Contrato carregar descrita nos Figura 10.

Figura 10 a tela do contrato de carregamento

Atribuição do usuário

Quando um contrato inteligente (demonstração ou personalizado) é implantado, os usuários com integrantes do iniciador podem criar novas instâncias de contrato. Para criar uma instância de um contrato específico, o usuário deve ter uma persona associada a esse contrato. Dependendo da especificação do contrato inteligente, nem toda pessoa pode ter direitos para criar um contrato. Como administrador, você pode atribuir um usuário a um contrato e especificar sua função (pessoa) do processo de negócios. Observe que antes que um administrador pode executar as ações de atribuição do usuário, deve haver pelo menos um contrato (demonstração ou personalizado) implantado. Quando um contrato é carregado, a próxima etapa é concluir a atribuição do usuário para o contrato. Os administradores podem atribuir usuários a contratos inteligentes na tela de atribuição do usuário no painel Blockchain Workbench administrador do Azure.

Depois de ser atribuído a contratos, os usuários podem participar os fluxos de trabalho do contrato inteligente entrando no Azure Blockchain Workbench para criar contratos. Digamos que o usuário deseja gerar uma nova transferência ativo, conforme mostrado no Figura 11. Deve criar um novo contrato ao clicar em criar novo contrato no canto superior direito da exibição e insira os detalhes do contrato (este modo de exibição pode variar com base no seu contrato inteligente) e envie-o. A tela é gerada automaticamente, com base nos metadados fornecidos como parte da definição de contrato inteligente.

Figura 11 inserir detalhes de contrato

Depois que uma instância de contrato é criada, um usuário pode fazer drill down nos detalhes para exibir as ações disponíveis, devido ao estado atual do contrato.

Estendendo Workbench Blockchain do Azure

No núcleo do Azure Blockchain Workbench está barramento de serviço do Azure, permitindo que um modelo extensível e conectável que permite que várias tecnologias distribuídas razão, ofertas de armazenamento e o banco de dados a ser usado como parte da solução blockchain. Também há oportunidades para integrar a outros serviços com o Workbench para estender a funcionalidade, como com os aplicativos lógicos do Azure, APIs da Web, Hubs de notificação e assim por diante. Armazenamento fora da cadeia de dados permitirá que para armazenamento de pós-processamento e cenários de análise, com opções como com o Power BI, aprendizado de máquina do Azure HD Insight, Azure Data Lake e outros serviços em que o contrato de dados são compartilhados.

Blockchain tem o potencial para estender a transformação digital além paredes da empresa e para os processos que ele compartilha com fornecedores, parceiros e clientes. Como mostrei, essencialmente que um blockchain é ambos os uma computação e dados de estrutura que pode ser usada para criar uma razão de transação digital que, em vez de local de descanso com um único provedor, é compartilhado entre uma rede distribuída de computadores. O resultado é um sistema mais transparente e verificável que irá alterar a maneira como você pensar em troca de valor e ativos, imposição de contratos e compartilhamento de dados.

A Microsoft está comprometida a trazer blockchain à empresa e trazer todos os benefícios do Azure deve ter para desenvolvedores e as organizações que desejam para criar aplicativos distribuídos. A meta é ajudar as empresas prosperam essa nova era da computação segura, de várias partes de fornecer serviços e plataformas dimensionáveis que qualquer empresa — de inicializações razão e revendedores para provedores de integridade e bancos globais — pode usar para melhorar comerciais compartilhados processos. Azure Workbench de Blockchain faz parte de um ecossistema de serviços no Azure, juntamente com o anunciado Azure confidencial computação e a estrutura de Blockchain Consortium confidencial, que ajuda a preencher a lacuna entre o mundo blockchain e enterprise requisitos de governança, segurança e escalabilidade. Assista a este espaço para desenvolvimento adicional em breve!


Stefano Tempestaé um Diretor Regional da Microsoft e MVP, bem como líder capítulo para CRMUG na Suíça, a maior comunidade de especialistas do Dynamics 365 / CRM no mundo. Tempesta é instrutor de cursos sobre Dynamics 365, blockchain e aprendizado de máquina e palestrante regular em conferências internacionais de IT, incluindo Microsoft Ignite e Tech Summit. Ele fundada Blogchain espaço (blogchain.space), um blog sobre tecnologias de blockchain grava da MSDN Magazine e MS Dynamics World e publique experiências de aprendizado de máquina na Galeria de AI do Azure (GAL lery.azure.ai).