Julio de 2018

Volumen 33, número 7

Cadena de bloques: aplicaciones descentralizadas con Cadena de bloques como servicio de Azure

Por Stefano Tempesta

Cadena de bloques ha capturado la atención del mundo de la tecnología y negocio como una manera de optimizar los procesos de negocio, compruebe las transacciones y reducir las posibilidades de fraude. Este artículo presenta la cadena de bloques como servicio (BaaS) en Microsoft Azure, que muestra cómo se puede usar para crear una estructura de datos protegidos y cree un transaccional digital libro de contabilidad distribuida.

Hay una gran cantidad de literatura de Internet acerca de la cadena de bloques y cómo se inició como un libro de contabilidad digital de Bitcoin. Un buen artículo de introducción a qué cadena de bloques es que puede encontrarse en bit.ly/2IsoWeJy para obtener información más técnica sobre el funcionamiento de la cadena de bloques, consulte "Fundamentos de la cadena de bloques" artículo de Jonathan Waldman en el de marzo de 2018 número de MSDN Magazine (msdn.com/magazine/mt845650).

Cadena de bloques es un libro de contabilidad seguro, compartido, distribuida que puede ser público, privado o consorcio (que es, restringido a solo los miembros con nombre). Resulta seguro porque usa criptografía para crear transacciones que son difíciles de (si no imposible con la tecnología informática actual) con el que se va a manipular. Compartir entre todos los nodos o elementos del mismo nivel en la cadena es un almacén de datos y, como verá en breve, la lógica de negocios en forma de contratos. Un valor de cadena de bloques está vinculado realmente directamente al número de entidades que participan en ellas. De forma crítica, contratos y los datos de cadena de bloques se distribuyen, lo que significa que hay varias réplicas de la base de datos. Y las réplicas más allí, más auténtico se convierte en. Y por último, la cadena de bloques es un libro de contabilidad digital, una base de datos transaccional que anexa solo registros inmutables de todas las transacciones que se produce.

Me gustaría reforzar este punto acerca de la cadena de bloques que se va a un libro de contabilidad distribuida. Libros de contabilidad tradicionales están centralizados y usar sistemas de terceros o intermediarios, aprobar y registrar transacciones. Piense en las tarjetas de crédito, bancos, sistemas de administración de identidades y similares. Este enfoque crea un desafío de confianza y la escala. ¿Confía en el agente intermediario para que actúe como intermediario para todas sus transacciones? ¿Puede el agente se convierte en un único punto de error? ¿Puede ser segura?

En una cadena de bloques, libros de contabilidad se distribuyen por toda la red y no es necesario para cualquier sistema de terceros como medio de una transacción. La tecnología mantiene varias réplicas de datos, como se muestra en un sistema de uso compartido de archivos de punto a punto, ya que ambos interlocutores Obtiene una copia de todo el conjunto de datos. No hay ningún propietario todo ello, pero todo el mundo posea una copia del mismo. Figura 1 describe esta disposición.

Un libro de contabilidad distribuida descentralizada
Figura 1 descentralizado de libro de contabilidad distribuida

La primera cadena de bloques, Bitcoin, surgió en 2009, con límites claros. Como un libro de contabilidad digital, simplemente registra las transacciones y no realizar un seguimiento de los saldos de cuenta de activos digitales. Se comprueba la propiedad de bitcoins mediante vínculos a las transacciones anteriores, siguiendo el historial de bloques en la cadena de transacciones registradas inmutable. Además, Bitcoin no define ninguna lógica específica sobre cómo controlar una transacción y las condiciones, por ejemplo, que los dos implicado partes debe acordar un intercambio de criptomoneda.

Tecnología Blockchain evolucionó con la adición de contratos inteligentes, que son pequeños fragmentos de código que agreguen lógica a las transacciones. Piense en los contratos inteligentes como una representación de código del equipo de las condiciones legales en un contrato por bienes o servicios. Nuevos libros de contabilidad de cadena de bloques surgido en el mercado, más populares que se va a Ethereum (ethereum.org) y Hyperledger Fabric (hyperledger.org), para agregar funcionalidad de contrato inteligente a la red. En los siguientes (Llamémosles 2.0 Blockchain) libros de contabilidad digitales, ahora se almacenan en un bloque de los contratos inteligentes y se distribuyen a todos los nodos junto con los datos relacionados.

Cadena de bloques 3.0

Cadena de bloques de Bitcoin a menudo se conoce como cadena de bloques 1.0. Es un libro de contabilidad simple que registra las transacciones en secuencia y representa el estado de la red en un momento dado. Considerar simplemente como una base de datos distribuida.

Pero al igual que las bases de datos han evolucionado con el tiempo mediante la adición de funcionalidad para ejecutar lógica, en forma de procedimientos almacenados, por ejemplo, cadena de bloques ha introducido los contratos inteligentes para controlar el nivel lógico. Sin embargo, los contratos inteligentes pueden operar en datos que sólo se incluye en el bloque que se almacenan. No acceden a datos externos o sistemas, como llamar a un servicio fuera de los saltos de cadena de bloques del "círculo de confianza" cadena de bloques se proporciona para la seguridad criptográfica e inmutabilidad de transacciones. Todos los sistemas CRM, ERP y nóminas representan entidades externas que no forman parte de una cadena de bloques, pero pueden estar implicados en el intercambio de datos dentro de una transacción. Las cadenas de bloques, necesitan una manera segura reciba datos externos, así como el acceso a la ejecución segura de código fuera de la cadena.

Para abordar este requisito, Microsoft introdujo cryptlets como parte de "Cadena de bloques 3.0", la cadena de bloques de datos, lógica y cloud services. Figura 2 muestra el progreso de características.

Evolución de la cadena de bloques
Figura 2 la evolución de la cadena de bloques

Cryptlets son módulos de código fuera de la cadena escritos en cualquier lenguaje que puede ejecutar dentro de un contenedor seguro, aislado de confianza y puede comunicarse a través de canales seguros. Cryptlets extender los contratos inteligentes al mundo exterior, ya que proporciona servicios como cifrado, los eventos de fecha y hora, acceso a datos externos y la autenticación de identidad. Microsoft presentó cryptlets como parte de su proyecto de código abierto con nombre en código "Bletchley" (bit.ly/2Iv9VZz), que se ha convertido en el producto de Azure Blockchain Workbench revelado en la conferencia de desarrolladores de Microsoft Build en Mayo.

Como se describe en el sitio Web, Bletchley es un enfoque de arquitectura a la creación de un ecosistema de cadena de bloques del consorcio enterprise. Para ser más precisos, esto no es una pila de cadena de bloques. Es el enfoque de Microsoft para poner las plataformas de libro de contabilidad distribuida (cadena de bloques) en la empresa y compilar soluciones reales abordar problemas empresariales reales, manteniendo la plataforma abierta.

Azure Blockchain Workbench (aka.ms/abcworkbench) aprovecha los libros de Contabilidad diferente de la cadena de bloques y los servicios existentes en la nube para habilitar un ecosistema de cadena de bloques sólida para la empresa. Es una herramienta fácil de usar con una interfaz simplificada que permite a los usuarios crear aplicaciones de cadena de bloques to-end que aprovechan lo mejor de los servicios de Azure, incluidos Azure Active Directory (Azure AD), Azure Key Vault, Azure SQL Database, Application Insights , Azure Functions y Service Bus. Y lo hace en torno a las cadenas de bloques más populares y en una arquitectura de referencia que se puede usar para crear aplicaciones basadas en la cadena de bloques.

Puede aprender más acerca de Azure Blockchain Workbench en el artículo "Introducción a Azure Blockchain Workbench" que escribí para el número de junio de MSDN Magazine (msdn.com/magazine/mt846726)

Volviendo al cryptlets, proporcionan una manera accesible para los desarrolladores a usar las funcionalidades transversales, como la integración en el acceso de datos y sistemas de terceros. Pero antes de que cambiar el foco al desarrollo de aplicaciones descentralizadas en una cadena de bloques, necesito una plataforma para entregar una solución integrada y segura en los libros de contabilidad distribuidas públicos o privados. Microsoft Azure ofrece una superficie en todo el mundo que permite la creación de una plataforma de datos y la ejecución a gran escala y segura para entregar las aplicaciones de próxima generación en cualquier plataforma de la cadena de bloques.

Blockchain como servicio

Cadena de bloques en Azure (bit.ly/2rQUO5q) proporciona una plataforma rápida, bajo costo y bajo riesgo para compilar e implementar aplicaciones de cadena de bloques. Azure, básicamente, ofrece Blockchain como servicio (BaaS) proporcionando varias plantillas preparadas para la empresa, fácil de implementar para los libros de contabilidad más populares, incluidos Ethereum, quórum, Hyperledger Fabric, Corda y mucho más.

Basta con las ventas de tono, vamos a investigar algunas capacidades clave de Azure BaaS, antes de profundizar en la configuración de un libro de Contabilidad específico en el portal de Azure. Cadena de bloques de Azure consta de:

  • Libros de contabilidad de nodo único para simular los entornos de producción para varias divisiones dentro de una sola organización.
  • Libros de contabilidad de varios nodos para simular los entornos de producción para varias divisiones dentro de varias organizaciones.
  • Herramientas para el desarrollo de aplicaciones descentralizados distribuidos en una cadena de bloques.

Aplicaciones descentralizadas (dApps) son aplicaciones que se ejecutan en una red punto a punto de equipos en lugar de un único equipo. En el contexto de cadena de bloques, considere un dApp como una aplicación cliente que se comunica con un contrato inteligente para interactuar con la red de la cadena de bloques. Puede encontrar una buena introducción a dApps en BlockchainHub en bit.ly/2rRkijj.

Las características clave de la creación de una infraestructura de la cadena de bloques en Azure son:

  • Establecer protegidos de un entorno seguro que expone los puntos de conexión. Esto puede hacerse a través de redes virtuales de Azure, Azure App Services integración con redes virtuales o grupos de seguridad de red.
  • Desarrolle los contratos inteligentes, mediante cualquiera de las herramientas de desarrollo disponibles, como el núcleo de Blockstack Ethereum Studio o Truffle.
  • Automatizar la implementación de componentes de participante, máquinas virtuales y los componentes de plataforma como servicio. Esto se puede habilitar las secuencias de comandos de Azure Resource Manager y PowerShell.
  • Proteger el acceso a datos y lógica con la autenticación de usuario y la autorización, mediante la implementación de Azure AD para proteger aplicaciones y API.
  • En general, compilar una arquitectura para la integración de soluciones empresariales con un libro de contabilidad de cadena de bloques, aprovechando las capacidades de Azure enterprise y distribución en todo el mundo.

BaaS de Azure, en pocas palabras, representa no solo una nube pública hospedaje de proveedor para libros de contabilidad distribuidos, pero una plataforma orgánica e integrada para crear y entregar descentralizada de las aplicaciones que se ejecutan en una tecnología de cadena de bloques. Figura 3 ilustra la arquitectura de plataforma.

Pila de Azure Blockchain como servicio
Figura 3 Azure Stack de Blockchain como servicio

Ahora vamos a examinar el libro de contabilidad digital aprovisionamiento de capacidades de BaaS de Azure. En primer lugar, necesito para acceder al portal de Azure (portal.azure.com) y crear un nuevo servicio de Azure Marketplace | Sección de la cadena de bloques. Puedo seleccionar desde varias tecnologías de libro de contabilidad digital: en este caso crearé un libro de contabilidad de varios nodo Ethereum Consortium — y aprovisionar rápidamente mi red blockchain en Azure.

Ethereum Consortium

La plantilla de Ethereum Consortium implementa una red de varios miembro Ethereum, que consta de un conjunto de nodos de minería de datos y transacciones. El aprovisionamiento puede tardar hasta 20 minutos, dependiendo del tamaño de la red, momento en que pueden configurar cuentas adicionales de Ethereum y empezar a trabajar con desarrollo dApp a través de la página Web del administrador y de contrato inteligente.

El proceso de aprovisionamiento le guiará a través de cinco pasos para especificar las opciones de configuración necesarios para aprovisionar el libro de contabilidad Ethereum en Azure:

Paso 1: Configuración básica, que incluye un prefijo de recurso para asignar nombres a todos los recursos Azure generados aprovisionados en el grupo de recursos asignado como administrador de todas las máquinas virtuales implementadas y la región de Azure de la implementación de las credenciales de autenticación.

Paso 2: Tamaño de dirección de red y el rendimiento. Es posible que desee especificar el número de miembros en el consorcio (hasta 12), el número de nodos de minería de datos por cada miembro (minería de datos nodos registro de transacciones dentro de una red de la cadena de bloques), la replicación de almacenamiento (localmente redundante o con redundancia geográfica) y el rendimiento. También puede establecer el número de nodos de la transacción con equilibrio de carga, que representa el punto de interacción de usuarios o aplicaciones con la cadena de bloques implementada.

Paso 3: Este paso es específica para los nodos de Ethereum. Puede especificar el identificador de red de Ethereum, un valor único que identifica la red y se utilizarán en los nodos para emparejar entre sí. Además, puedo especificar cómo el primer bloque, llamado Genesis, se van a generar automáticamente por la plataforma o manualmente al proporcionar mi propio archivo JSON.

Paso 4: Antes de implementar los recursos en el libro de contabilidad Ethereum Consortium, aparece un resumen de las opciones de configuración que se ha especificado. Desde aquí, puedo descargar un archivo de plantilla JSON para automatizar la implementación de un conjunto con Azure Resource Manager de recursos similares. Figura 4 anticipa los recursos de Azure se implemente en el aprovisionamiento del libro de contabilidad Ethereum, junto con un fragmento del archivo de plantilla.

Archivo de plantilla de recursos para el libro de contabilidad de Ethereum Consortium multinodo
Figura 4 archivo de plantilla de recursos para el libro de contabilidad de Ethereum Consortium multinodo

Este archivo de plantilla puede utilizarse para automatizar la implementación de recursos similares en el futuro, mediante una combinación de secuencias de comandos de .NET o PowerShell.

El código de C# en figura 5 describe la clase DeploymentHelper generada por la plantilla para automatizar la implementación de los recursos de Azure identificados. Deberá hacer referencia a los paquetes para ejecutar el código siguientes:

  • Microsoft.Azure.Management.Authorization
  • Microsoft.Azure.Management.ResourceManager
  • Microsoft.Rest.ClientRuntime.Azure.Authentication

Figura 5 la clase DeploymentHelper

class DeploymentHelper
{
  string subscriptionId = "your-subscription-id";
  string clientId = "your-service-principal-clientId";
  string clientSecret = "your-service-principal-client-secret";
  string resourceGroupName = "resource-group-name";
  string deploymentName = "deployment-name";
  string resourceGroupLocation = "resource-group-location";
  // Must be specified for creating a new resource group
  string pathToTemplateFile = "path-to-template.json-on-disk";
  string pathToParameterFile = "path-to-parameters.json-on-disk";
  string tenantId = "tenant-id";
  public async void Run()
  {
    // Try to obtain the service credentials
    var serviceCreds = await ApplicationTokenProvider.LoginSilentAsync(
      tenantId, clientId, clientSecret);
    // Read the template and parameter file contents
    JObject templateFileContents =
      GetJsonFileContents(pathToTemplateFile);
    JObject parameterFileContents =
      GetJsonFileContents(pathToParameterFile);
    // Create the resource manager client
    var resourceManagementClient =
      new ResourceManagementClient(serviceCreds);
    resourceManagementClient.SubscriptionId = subscriptionId;
    // Create or check that resource group exists
    EnsureResourceGroupExists(resourceManagementClient, resourceGroupName,
      resourceGroupLocation);
    // Start a deployment
    DeployTemplate(resourceManagementClient, resourceGroupName, deploymentName,
      templateFileContents, parameterFileContents);
  }

De forma similar, el script de PowerShell inicia sesión en una suscripción de Azure registra los proveedores de recursos necesarios y, a continuación, inicia la implementación de los recursos identificados en el archivo de plantilla, como se muestra en figura 6.

Figura 6: Iniciando la implementación

# sign in
Write-Host "Logging in...";
Login-AzureRmAccount;
# select subscription
Write-Host "Selecting subscription '$subscriptionId'";
Select-AzureRmSubscription -SubscriptionID $subscriptionId;
# Register RPs
$resourceProviders = @("microsoft.compute","microsoft.resources","microsoft.network");
if($resourceProviders.length) {
  Write-Host "Registering resource providers"
  foreach($resourceProvider in $resourceProviders) {
    RegisterRP($resourceProvider);
  }
}
#Create or check for existing resource group
$resourceGroup = Get-AzureRmResourceGroup -Name $resourceGroupName -ErrorAction SilentlyContinue
if(!$resourceGroup)
{
  Write-Host "Resource group '$resourceGroupName' does not exist.
    To create a new resource
    group, please enter a location.";
  if(!$resourceGroupLocation) {
    $resourceGroupLocation = Read-Host "resourceGroupLocation";
  }
  Write-Host "Creating resource group '$resourceGroupName' in location
    '$resourceGroupLocation'";
  New-AzureRmResourceGroup -Name $resourceGroupName
    -Location $resourceGroupLocation
}
else{
  Write-Host "Using existing resource group '$resourceGroupName'";
}
# Start the deployment
Write-Host "Starting deployment...";
if(Test-Path $parametersFilePath) {
  New-AzureRmResourceGroupDeployment -ResourceGroupName $resourceGroupName
    -TemplateFile $templateFilePath -TemplateParameterFile $parametersFilePath;
} else {
  New-AzureRmResourceGroupDeployment -ResourceGroupName $resourceGroupName
    -TemplateFile $templateFilePath;
}

Toda la solución, que consta de archivos de plantilla y la secuencia de comandos, está disponible para su descarga desde Mi repositorio de GitHub en bit.ly/2INgNEP.

Una vez hecho esto, revise los términos de uso y condiciones de licencia y haga clic en crear para implementar los recursos. Tiene un libro de contabilidad de la cadena de bloques totalmente funcional ponerse en marcha en menos de 20 minutos. Simplemente no olvide guardar la información importante que necesita para desarrollar dApps, incluyendo:

  • Punto de conexión RPC: Necesitará esta dirección para establecer la comunicación entre un entorno de desarrollo dApp, por ejemplo, Ethereum Remix y la cadena de bloques del consorcio.
  • SSH información: Necesita credenciales para iniciar sesión en los entornos de la cadena de bloques y configurar los parámetros, como normalmente para desbloquear la cuenta Coinbase e iniciar nuevos bloques de minería de datos.

Coinbase es mi billetera digital, que contiene Mis claves de firma utilizadas para resumir criptográficamente un bloque y mi Ether, la criptodivisa de Ethereum, obtenida como parte del proceso de minería de datos. Al implementar un nuevo libro de contabilidad Ethereum Consortium en Azure, esta cuenta inicialmente está bloqueada, por lo que deberá desbloquearlo antes de que se puede publicar los contratos inteligentes. Con la Ayuda de SSH, conectar a un nodo de transacciones de la red de Ethereum Consortium y desbloquear la cuenta Coinbase, así:

geth attach -- opens the Geth console
personal.unlockAccount(eth.coinbase)

Cuando se le pida una frase de contraseña, escriba la contraseña de gethadmin que especifiqué en el paso 1 del Asistente de configuración (no la Ethereum privada clave frase de contraseña). De forma predeterminada, esta acción desbloquea la cuenta Coinbase durante 5 minutos. Puede cambiar la duración con una firma diferente del método unlockAccount, como se muestra aquí:

eth.coinbase -- address of the coinbase account
personal.unlockAccount('address', 'passphrase', 'duration') --
  unlocking the account for a longer time period

Si lo está preguntando qué significa el comando "geth", es una herramienta de línea de comandos multipropósito que ejecuta un nodo Ethereum completo implementado en Go.

Una vez que la cuenta Coinbase está desbloqueada, esto representa momento cero, cuando se inicia la red. Después de este punto, los nodos pueden aceptar las transacciones. Transacciones podrían estar en el formulario de creación de cuentas, el traslado de ether, la creación de contratos inteligentes o cualquier cambio en el estado de la cadena de bloques. A continuación, a la vez periódica configurado para la red, las minas de red del bloque siguiente. Este bloque es un hash calculado mediante la combinación de los valores hash de las transacciones ejecutadas entre el último bloque y ahora además el hash de bloque anterior y un valor nonce, una secuencia de bits en un bloque que se pueden ajustar para intentar satisfacen la condición de prueba de trabajo.

Esta es la esencia de minería de datos. Este valor hace que sea satisfactorio "trabajo de prueba de" una tarea difícil de cálculo que depende la suerte o por fuerza bruta. La red, a continuación, acepta el bloque por consenso y, por lo que tienen los primeros dos bloques en la cadena y así sucesivamente.

Desarrollo de los contratos inteligentes

Tardaría todo un libro para ir a través de los detalles del desarrollo de los contratos inteligentes en Ethereum. En este artículo, quiero ofrecer punteros para empezar y comprender el panorama de las tecnologías y marcos en uso.

Para escribir e implementar los contratos inteligentes en Ethereum, puede usar cualquiera de los entornos de desarrollo disponibles en Azure, o tener acceso a un IDE basado en explorador completamente externo como Ether campamento (ether.camp) o Ethereum Remix (REMIX.ethereum.org).

En cuanto a lenguajes de programación, solidez (solidity.readthedocs.io) es un lenguaje orientado a contrato popular para la programación de la cadena de bloques, con una sintaxis similar a JavaScript.

En el lado cliente, lenguajes de programación que permiten interactuar con un nodo Ethereum incluyen C#, C++, JavaScript y mucho más. Es posible escribir código C# con una biblioteca como NEthereum (nethereum.com), una biblioteca de integración de .NET totalmente administrada para Ethereum que permite la interacción con los clientes de Ethereum como geth, eth o paridad mediante RPC. La biblioteca tiene una funcionalidad muy similar a la biblioteca de cliente RPC de Web3 de Ethereum JavaScript, que es el hecho estándar para la interoperabilidad de cliente de cadena de bloques.

Por ejemplo, para realizar una llamada de contrato inteligente a través de NEthereum, necesito hacer lo siguiente:

  • Obtener la dirección de contrato inteligente y la interfaz binaria de aplicación (ABI). Una ABI es la interfaz para llamar a funciones en un contrato inteligente y obtener los datos de un nodo Ethereum.
  • Obtener la firma de función en el contrato inteligente que se debe invocar.
  • Desbloquear la cuenta de Ethereum que realiza la llamada con la frase de contraseña de la cuenta.
  • Realizar la llamada al contrato inteligente.

El fragmento de código en figura 7 muestra unos pocos pasos muy básicos, uso de la biblioteca NEthereum.

Figura 7 llamada a un contrato inteligente

// Obtain the contract ABI
abi = db.GetContract(ballot.ContractID);
// Get the function address to call on the smart contract
var func = web3.Eth.GetContract(
              abi,
              ballot.ContractID).GetFunction("vote");
// Unlock the account so you can call the smart contract
string passphrase = db.GetAccountPassphrase(agreement.OriginatorAccount);
bool success = await web3.Personal.UnlockAccount.SendRequestAsync(
                        ballot.OriginatorAccount,
                        passphrase,
                        120);
// Make the smart contract call
if (success)
{
  object[] args = new object[] {
     id,
     ballot.OriginatorAccount,
     ballot.CounterSigAccount,
     123 /* sample proposal number to vote for */ };
  // Call the "vote" function on the smart contract
  await func.SendTransactionAsync(ballot.OriginatorAccount, args);
}

El contrato inteligente invocado, escrito en solidez, tendría un aspecto similar a un contrato de votación que expone un método vote, que acepta un número de propuesta de entrada. Cuando se convierte un voto, la marca votada en los votantes (remitente del mensaje) se establece en true para evitar el doble de votación y se incrementa el contador de propuesta, teniendo en cuenta una ponderación para el voto de sí mismo. Figura 8 muestra el código para esto.

Figura 8 papeleta contrato en el código de Solidity

pragma solidity ^0.4.0;
contract Ballot {
  struct Voter {
    uint weight;
    bool voted;
    uint8 vote;
  }
  struct Proposal {
    uint voteCount;
  }
  address chairperson;
  mapping(address => Voter) voters;
  Proposal[] proposals;
  /// Create a new ballot with different proposals
  function Ballot(uint8 _numProposals) public {
    chairperson = msg.sender;
    voters[chairperson].weight = 1;
    proposals.length = _numProposals;
  }
  /// Give a single vote to the given proposal
  function vote(uint8 toProposal) public {
    Voter storage sender = voters[msg.sender];
    if (sender.voted || toProposal >= proposals.length) return;
    sender.voted = true;
    sender.vote = toProposal;
    proposals[toProposal].voteCount += sender.weight;
  }
}

Tenga en cuenta que se trata de código de solidez, un lenguaje fuertemente tipado con una sintaxis similar a JavaScript, con unas pocas variantes, al igual que el contrato, struct y palabras clave de dirección o la triple barra diagonal ("/ / /") para un comentario. Uso Ethereum Remix para el desarrollo de los contratos inteligentes de Solidity, que proporciona un IDE basado en Web para el desarrollo, prueba e implementación.

Azure vNext de cadena de bloques

Echemos un vistazo al futuro de qué aspecto en la visión de Microsoft para la tecnología de cadena de bloques. Próximamente, el marco de consorcio confidencial de Microsoft (Coco) es un sistema de código abierto que permite a las redes de confidencial a gran escala, cadena de bloques que cumplan todos los requisitos empresariales clave para la confidencialidad, gobierno y el rendimiento y al mismo tiempo tiempo proporcionan un medio para acelerar la adopción de producción empresarial de la tecnología de cadena de bloques.

Coco (bit.ly/2Ior8YA) combina la eficacia de los protocolos existentes, entornos de ejecución de confianza, los sistemas distribuidos y redes de criptografía para habilitar la cadena de bloques preparada para la empresa que brinda:

  • Rendimiento y latencia que se aproxima a velocidades de la base de datos
  • Modelos de confidencialidad completas, más flexibles y específicas de la empresa
  • Administración de directivas de red a través de administración distribuida
  • Compatibilidad con transacciones no determinista
  • Consumo energético reducido

Es importante tener en cuenta que Coco no es un protocolo de la cadena de bloques independientes. En su lugar, proporciona una base de confianza con los protocolos existentes, como se puede integrar Ethereum, quórum, Corda etc. para entregar soluciones de libro de contabilidad completo, preparado para la empresa. Coco está diseñado para ser compatible con cualquier protocolo de la cadena de bloques y abierta. Esto consigue mediante el uso de entornos de ejecución de confianza (TEE), como Intel Software Guard Extensions (SGX) y Windows Virtual seguro modo (VSM), para permitir la creación de una red de confianza de los nodos físicos en el que se va a ejecutar un libro de contabilidad distribuida. Figura 9 muestra la arquitectura de Coco Framework.

Descripción general de Coco Framework
Figura 9 Descripción general de Coco Framework

Microsoft tiene planeado abrir el código de Coco Framework origen más adelante en 2018.

Por último, una palabra en Azure Blockchain Workbench, que es el mecanismo principal para los clientes de empresa para comenzar con la cadena de bloques. Cadena de bloques de Azure es una colección de servicios de Azure y capacidades diseñadas para ayudar a las empresas crear e implementar una nueva clase de aplicaciones para compartir datos y procesos empresariales con varias organizaciones de confianza parcial. Actualmente, los clientes pueden implementar estos servicios en sus suscripciones e integrarlos con las cadenas de bloques disponibles en Azure Marketplace. Con Azure Blockchain Workbench que se realiza el trabajo pesado para ellos, por lo que puede dedicar menos en scaffolding y más en la lógica y los contratos inteligentes.

Azure Blockchain Workbench está disponible ahora en Azure Marketplace (aka.ms/tryworkbench).


Stefano Tempestaes un Director Regional de Microsoft y MVP, así como líder de capítulo para CRMUG en Suiza, la mayor comunidad de expertos en Dynamics 365 / CRM en el mundo. Tempesta es un instructor de cursos sobre Dynamics 365, la cadena de bloques y aprendizaje automático y un orador frecuente en conferencias de TI internacionales, incluidos Microsoft Ignite y Tech Summit. Fundó Blogchain espacio (blogchain.space), escribe un blog sobre las tecnologías de cadena de bloques, para MSDN Magazine y MS Dynamics Worldy publica la máquina aprendizaje de experimentos en Azure AI Gallery (gallery.azure.ai).

Gracias a los siguientes expertos técnicos de Microsoft por revisar este artículo: James McCaffrey
El Dr. James McCaffrey trabaja para Microsoft Research en Redmond, Washington. Ha colaborado en el desarrollo de varios productos de Microsoft como, por ejemplo, Internet Explorer y Bing. Puede Puede ponerse en contacto McCaffrey jamccaff@microsoft.com.


Discuta sobre este artículo en el foro de MSDN Magazine