Junio de 2018

Volumen 33; número 6

Cadena de bloques: introducción a Azure Blockchain Workbench

Por Stefano Tempesta | De 2018 de junio

El área de trabajo de Azure Blockchain (aka.ms/abcworkbench) es el paso más reciente en viaje de Microsoft para permitir que los clientes adoptar las tecnologías de blockchain y empezar a trabajar con Blockchain de Azure. Para proporcionar un contexto, Blockchain de Azure es una colección de servicios de Azure y capacidades diseñadas para ayudar a las empresas a crear e implementar una nueva clase de aplicaciones para uso compartido de procesos empresariales y los datos con varios, las organizaciones de confianza parcial. Actualmente, los clientes pueden implementar estos servicios en sus suscripciones de Azure e integrarlos con blockchains disponible en Azure Marketplace. Ahora, con Azure Blockchain Workbench, el trabajo pesado se realiza para ellos, por lo que pueden concentrarse menor en scaffolding y más información sobre la lógica y los contratos inteligentes.

El área de trabajo de Azure Blockchain orquesta varios servicios de Azure alrededor de contabilidad digital blockchain popular y en una arquitectura de referencia que puede utilizarse para crear aplicaciones basadas en blockchain. Es una herramienta gratuita y fácil de usar con una interfaz simplificada que permite a los usuarios crear aplicaciones descentralizadas-to-end para aprovechar todas las capacidades del Blockchain de Azure. Está equipado con los flujos de trabajo entre organizaciones de ejemplo y contratos inteligentes, así como una interfaz de usuario del cuadro que los clientes pueden usar para reducir drásticamente los costos de desarrollo y acelerar las pruebas de concepto.

Si está familiarizado con blockchain, recomienda que lea el artículo pendiente de Jonathan Waldman, "Fundamentos de Blockchain" (msdn.com/magazine/mt845650), en el número de marzo de 2018 de MSDN Magazine. Asegúrese también de un punto para ver el vídeo de Microsoft Mechanics, "Introducción a Blockchain y Azure Blockchain Workbench," en aka.ms/workbenchintro.

Introducción a Azure Workbench Blockchain

En la misma manera que las aplicaciones interactúan hoy en día con las bases de datos, descentralizadas aplicaciones que se ejecutan en un blockchain comunicaran y ejecutan lógica en un libro de contabilidad digital específica, como Ethereum o Hyperledger. Una red de contabilidad digital está formada por una red descentralizada peer-to-peer de nodos. Estos nodos mantienen una copia del almacén de datos y ejecuten una máquina virtual para admitir cálculo arbitrario en el libro de contabilidad, manteniendo un consenso. Contratos inteligentes son el mecanismo que permite para este cálculo complicado en la red, de forma similar a los procedimientos almacenados en una base de datos relacional tradicionales.

A pesar de la posibilidad de aprovechar blockchain en un creciente número de procesos empresariales, existen obstáculos para superar antes de que las empresas pueden adoptar las tecnologías de blockchain. Falta de regulación, el rendimiento de la red y la escalabilidad se citan a menudo como desafíos que afectan a la adopción de blockchain en el espacio de la empresa.

Creación de una solución completa que se ejecuta en blockchain normalmente requiere desarrollar una aplicación de cliente, escribir y la implementación de una API de puerta de enlace, implementar la compatibilidad de desactivar la cadena de almacenamiento, escribir registros e informes y la integración y aprovisionamiento de infraestructura identidad y los servicios de almacén de claves en la solución. Hay un conjunto común de los desafíos relacionados con el desarrollo de aplicaciones de blockchain que se direccionan mediante Azure Blockchain Workbench, lo que reduce considerablemente la cantidad de tiempo necesario para crear una solución de blockchain.

El área de trabajo de Azure Blockchain proporciona recursos de código y la implementación basada en plantillas ARM para todo el scaffolding necesario para blockchain POCs, incluida la red blockchain, una puerta de enlace de API, una aplicación Web con capacidad de respuesta, la integración de Azure Active Directory, clave de Azure Integración del almacén, una base de datos de SQL configurado para recopilar datos de cadena y un conjunto de admitir servicios de datos, firma y operaciones hash. La herramienta también permite crear un front-end Web sin escribir ningún código. Usa metadatos proporcionados para los contratos inteligentes para entregar dinámicamente contextual experiencia del usuario para que los participantes. Dado que el marco de trabajo rellena la base de datos de SQL como almacén desactivar cadena, permite aprovechar los conocimientos y herramientas para habilitar las capacidades adicionales a una organización.

El resultado: El área de trabajo de Azure Blockchain reduce el tiempo y el costo para los proyectos de prueba de concepto (POC). Permite a los clientes a centrarse en crear aplicaciones innovadoras que muestran la posibilidad de blockchain, si se utilizan menos tiempo y recursos en las tareas de integración necesarios para crear una prueba de concepto básico.

El área de trabajo de Azure Blockchain está disponible en Azure Marketplace (aka.ms/tryworkbench), y ver un vídeo del área de trabajo en acción está disponible por el equipo de Microsoft Mechanics en aka.ms/workbenchdemo.

Implementar Azure Workbench Blockchain

La implementación de Azure Blockchain Workbench requiere los pasos de requisitos previos siguientes:

1. Un inquilino de Azure Active Directory (Azure AD) al host de Azure AD es necesario y aplicaciones de almacén de claves.

2. Registro de una aplicación de Azure AD y un valor de almacén de claves que se hizo referencia durante la implementación de Azure Blockchain Workbench.

Puede que desee crear un nuevo inquilino de Azure AD para configurar usuarios de prueba o registrar las aplicaciones de Azure diferentes inquilino del inquilino de AD de Azure AD corporativo. Instrucciones detalladas sobre estos pasos de configuración se muestran en la documentación de Azure Blockchain Workbench oficial en aka.ms/workbenchdocs.

Una vez que se completaron los pasos necesarios, se puede implementar el área de trabajo. Inicie sesión en el portal de Azure y agregar un nuevo recurso de Azure Marketplace, se muestra en figura 1. Busque y seleccione el área de trabajo de Azure Blockchain para iniciar el proceso de aprovisionamiento.

Figura 1 en el área de trabajo Blockchain Azure en Azure Marketplace

Esta plantilla de solución está diseñada para facilitar la implementación y la integración de los servicios necesarios para compilar una aplicación en una red de blockchain. Con una serie de entradas de usuario y una implementación con un solo clic a través del portal de Azure, puede implementar una contabilidad blockchain junto con los servicios de Azure relevantes necesarios para compilar una aplicación blockchain to-end, empaquetada con un interfaz de usuario Web de ejemplo. La aplicación generada incluye una aplicación Web, API de REST, desactivar la cadena de almacenamiento y similares. En lugar de pasar horas crear y configurar los servicios necesitan para integrar con una red blockchain, el equipo de Azure ha automatizada estas piezas que consumen muchos recursos de forma que pueda centrarse en crear los escenarios. A través de la aplicación Web de Azure Blockchain Workbench, puede generar un UX to-end para los flujos de trabajo empresariales basados en contratos inteligentes.

El aprovisionamiento de Azure Blockchain Workbench requiere seis pasos, con las dos primeras establecer parámetros de configuración y los dos siguientes direccionamiento capacidad de red y la supervisión. Paso 1 requiere algunas configuraciones básicas, representados en figura 2, que incluyen:

• Un identificador único como prefijo para asignar nombres a todos los recursos de Azure aprovisionados como parte de esta plantilla.

• El nombre de usuario para todos los aprovisionar máquinas virtuales (VM).

• Una clave pública SSH utilizada para conectarse a las máquinas virtuales. Copie y pegue una clave pública RSA en el formato de línea (comenzando por "ssh-rsa") o el formato PEM de varias líneas. Puede generar claves SSH mediante ssh-keygen en Linux y Mac OS o bien PuTTYGen en Windows.

• Una contraseña para proteger el acceso a la base de datos que se incluye como parte de la implementación de Workbench.

• La suscripción de Azure que se va a usar para la implementación. Recuerde que el uso de Azure Blockchain Workbench está libre de los costos de licencia, pero se paga por Azure aprovisionado, almacenamiento y red los recursos informáticos.

• El grupo de recursos para usar para agrupar todos estos recursos. Recomienda crear un nuevo grupo de recursos para la solución de Blockchain Workbench.

• La región a la que desea implementar los recursos.

Figura 2 Introducción aprovisionamiento Azure Blockchain Workbench

Paso 2 requiere haber completado los pasos de requisitos previos del registro de la aplicación de cliente blockchain en Azure AD, tal y como necesitará el Id. de aplicación del registro y la clave para escribir cuando se solicita. También debe especificar el nombre de dominio del inquilino obtiene como parte del registro de la aplicación de cliente en Azure AD.

En el paso 3 se pueden especificar el número de nodos en el libro de contabilidad blockchain aprovisionado y el tamaño de las máquinas virtuales asignadas. Paso 4 es para opcionalmente la aceptación de Operations Management Suite (OMS) para la supervisión de la solución implementada.

Los pasos 5 y 6 son simplemente un resumen de los recursos que se va a aprovisionar y la confirmación de que comprende que hay una implicación en el costo. Cuando haya completado la implementación de la mesa de trabajo, verá un nuevo grupo de recursos con el nombre especificado. Algunos recursos implementados en este caso, por ejemplo, Application Insights, le permitirá obtener más información sobre el estado de Workbench, incluidos los detalles acerca de las máquinas virtuales y redes implementado.

Se ha indicado anteriormente, aprovecha Azure AD para la autenticación de Azure Blockchain Workbench, acceder identificación de rol de control y flujo de trabajo. Solo los usuarios especificados en el que se hace referencia de Azure AD podrá autenticar y usar los recursos implementados. Además, los usuarios deben asociarse con un grupo de usuarios específico con el fin de interactuar y realizar acciones. Por lo tanto, es necesario administrar cuentas de usuario interactuar con Azure Blockchain Workbench y asignarles los permisos necesarios.

Implementar un contrato inteligente

Una vez implementado, puede tener acceso a Azure Blockchain Workbench, vaya a su dirección URL. Verá un inicio de sesión de seguridad de AD Azure experimentar donde puede escribir su trabajo o personales credenciales de la cuenta de Microsoft para obtener acceso a la aplicación.

Ahora puede comenzar a utilizar contratos inteligentes, que contienen la lógica de negocios que las unidades de flujos de distintos escenarios. Este enfoque proporciona la inmutabilidad, la ejecución determinista y la transparencia necesaria en entornos de confianza. Contratos inteligentes escritos en lenguajes de específica de la pila de blockchain. Por ejemplo, solidez sirve para Ethereum, mientras que vaya destinada al tejido Hyperledger. Un contrato inteligente se implementa en todos los nodos en el blockchain. Durante la ejecución, la información que transmite también se replica en todos los nodos de la red.

El objetivo principal de Azure Blockchain Workbench consiste en crear el scaffolding alrededor de la aplicación blockchain, por lo que los usuarios pueden centrarse en crear la lógica de negocios inteligentes basadas en contratos. Una vez que se crea una instancia de un contrato inteligente en el área de trabajo, se escribe en el blockchain y las actualizaciones posteriores al contrato inteligente se registran en el blockchain. Después de que el administrador del área de trabajo de Azure Blockchain implementado contratos inteligentes y asignaciones de usuario completa para los contratos inteligentes, otros usuarios pueden interactuar con la aplicación blockchain y participar en los flujos de trabajo de contrato inteligente.

Empecemos por implementar cualquiera de los contratos de demostración inteligente existente. Después de iniciar sesión correctamente, debería ver un vínculo de administración en la parte superior derecha. Haga clic en el vínculo de administración para tener acceso al panel de administrador. Hay actualmente tres acciones disponibles para el administrador en el área de trabajo, se muestra en figura 3. Desde aquí puede asignar a usuarios, implementar contratos de demostración e implementar contratos personalizados.

Figura 3 el panel del administrador

Al hacer clic en implementar el contrato de demostración en el panel de administrador que le ofrece a una lista de todos los contratos de demostración que puede proporcionar. La versión actual de Blockchain Workbench contiene un conjunto de contratos inteligente de demostración y archivos de configuración para ayudarle a comenzar. La documentación de Workbench proporciona más información sobre los escenarios concretos y un tutorial paso a paso de la interfaz de usuario. También hay instrucciones detalladas sobre cómo se crearon los contratos inteligente de demostración y archivos de configuración asociados y cómo configurar las cuentas de usuario en Azure AD para habilitar este escenario.

Cargar un contrato personalizado

También puede crear contratos personalizados en cualquiera de los lenguajes de programación compatibles con la plataforma de blockchain de referencia e implementarlos en Azure Blockchain Workbench. Todos los Azure Blockchain Workbench requiere tres archivos que definen la lógica de negocios, las interacciones y visualizaciones de los flujos de trabajo implementados. Estos son:

Contrato inteligente: Para empezar, debe crear un contrato inteligente que contiene la lógica de negocios para el escenario. En el ejemplo siguiente, el contrato inteligente tiene como destino el blockchain Ethereum, por lo que los contratos se escriben en la solidez de lenguaje de programación.

Configuración: En el archivo de configuración, los usuarios asignar propiedades, acciones y blockchain información del protocolo para el contrato inteligente. También se definen qué parámetros son obligatorios de los participantes de la creación de instancias y las acciones en el contrato inteligente.

Configuración de la interfaz de usuario: La interfaz de usuario en archivos de configuración, se define la interfaz de usuario para el control de acceso basado en roles en cada estado del contrato inteligente, como restringir que los roles pueden realizar acciones específicas. En este archivo, el usuario asigna roles y los Estados y especifica las definiciones de estado, porcentaje completado en cada estado del contrato y acciones aptas en cada estado.

Creación de contrato inteligente

La definición del contrato contiene algunos componentes que deben especificarse para que funcione con Azure Blockchain Workbench. Antes de definir los detalles del contrato específicos para el escenario como estados, los participantes y las funciones que describen la lógica detrás de cada acción, tendrá que implementar un contrato de LexingtonBase. El contrato real con la lógica de negocios para el escenario empresarial hereda el contrato LexingtonBase (que es equivalente a una clase de C#), tal y como se muestra en 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 debe tener un estado que representa el estado actual del contrato, las direcciones de participantes implicados en el contrato inteligente, datos que se almacenan en el contrato, las funciones que definen la lógica de negocios para distintas acciones y un constructor para Cuando se crea una instancia en el contrato inteligente. Figura 5 proporciona un ejemplo del constructor y propiedades del contrato inteligente transferir activos.

Figura 5 Asset transferencia 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();
  }
}

Asegúrese de que la coincidencia de nombres de nombre y el constructor de clase. Puede encontrar el código fuente de ejemplo en el lenguaje de solidez para este contrato inteligente, junto con los archivos de configuración de JSON en el repositorio de GitHub en bit.ly/2HJPcET.

Creación del archivo de configuración

El archivo de configuración define las propiedades principales y los parámetros para el contrato inteligente. Esto incluye enumerar todas las propiedades y los tipos, así como para definir un constructor que indica los parámetros que el usuario necesite de entrada para crear una instancia del contrato inteligente. Figura 6 muestra un ejemplo de las propiedades de transferencia activo y el constructor del archivo de configuración.

Propiedades de transferencia de activos de la figura 6 y el constructor

"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"
    }
  },

Además, el usuario debe enumerar y proporcione detalles para todas las acciones posibles, incluida la especificación de parámetros de entrada para cada acción. Figura 7 muestra un ejemplo de la especificación de acción de MakeOffer desde el archivo de configuración de transferencia de activos, que requiere que el usuario a un inspector, encargada de la valoración y el precio de una oferta de entrada.

Especificación de acción de la figura 7 MakeOffer

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

Por último, incluya la información de configuración blockchain, como se indica a continuación:

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

Creación del archivo de configuración de interfaz de usuario

Los usuarios definir los detalles de la interfaz de usuario para cada acción en el archivo de configuración de la interfaz de usuario. Esto incluye detalles sobre los usuarios, como el rol del iniciador o participante y asignación de rol, las asignaciones de estado, así como un constructor que indica el texto que se mostrará cuando un usuario desea volver a crear una instancia del contrato inteligente. Figura 8 muestra un ejemplo de las propiedades de transferencia activo y el constructor desde el archivo de configuración de la interfaz de usuario.

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"
  },

Además, el usuario debería enumerar todos los posibles estados e incluir detalles para cada estado especificar acciones que se pueden realizar en cada paso por rol, así como un valor de porcentaje completado para proporcionar a los usuarios una visualización del progreso a través del contrato inteligente. Por ejemplo, el archivo de configuración de interfaz de usuario de contrato de transferencia activo se muestra que cuando el estado se muestra en una oferta se ha colocado, sólo los propietarios y los compradores pueden realizar acciones especificadas, tal como se muestra en el código en figura 9.

Figura 9 OfferPlaced código

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

Después de crear el contrato inteligente personalizado y archivos de configuración asociados, la siguiente tarea consiste en implementar el contrato inteligente. Después de seleccionar cargar contrato personalizado en el panel Administrador de Azure Blockchain Workbench, verá una página de carga el contrato personalizado y los archivos de configuración. Hay tres archivos que necesita para proporcionar. Seleccione el archivo de contrato inteligentes y los dos archivos de configuración que creó anteriormente, como se indica en la pantalla Contrato cargar representada en figura 10.

Figura 10 la pantalla de contrato de carga

Asignación de usuario

Una vez que se implementa un contrato inteligente (demostración o personalizado), los usuarios con roles de iniciador pueden crear nuevas instancias de contrato. Para crear una instancia de un contrato determinado, el usuario debe tener un rol asociado a ese contrato. Según la especificación del contrato inteligente, no cada persona puede tener derechos para crear un contrato. Como administrador, puede asignar a un usuario a un contrato y especificar su rol (el rol) en el proceso empresarial. Tenga en cuenta que antes de que un administrador puede llevar a cabo las acciones de asignación de usuario, debe haber al menos un contrato (demostración o personalizado) implementado. Una vez cargado un contrato, el paso siguiente es completar la asignación de usuario para el contrato. Los administradores pueden asignar a usuarios a los contratos inteligentes desde la pantalla de asignación de usuario en el panel del administrador del área de trabajo Blockchain de Azure.

Una vez asignada a los contratos, los usuarios pueden participar en los flujos de trabajo de contrato inteligentes debe iniciar sesión en el área de trabajo de Azure Blockchain para crear los contratos. Decir que el usuario desea volver a generar una nueva transferencia activo, como se muestra en figura 11. Que debe crear un nuevo contrato, haga clic en crear un nuevo contrato en la esquina superior derecha de la vista y escriba los detalles del contrato (esta vista puede variar en función de su contrato inteligente) y enviar. La pantalla se genera automáticamente, basándose en los metadatos proporcionados como parte de la definición del contrato inteligente.

Figura 11 especificar detalles del contrato

Después de crea una instancia de contrato, un usuario puede profundizar en los detalles para ver las acciones disponibles, dado el estado actual del contrato.

Ampliar el área de trabajo de Azure Blockchain

En el núcleo de Azure Blockchain Workbench es Service Bus de Azure, lo que permite un modelo extensible y conectable que permite diversas tecnologías de libro de contabilidad distribuida, ofertas de almacenamiento y base de datos que se usará como parte de la solución blockchain. También hay oportunidades para integrar otros servicios con el área de trabajo para ampliar la funcionalidad, como con aplicaciones de Azure lógica, las API Web, centros de notificaciones y similares. Desactivar la cadena de almacenamiento de datos le permitirá para el almacenamiento posterior al procesamiento y escenarios de análisis, con opciones como con Power BI, aprendizaje automático de Azure, Hdinsight, Azure Data Lake y otros servicios donde se comparten los datos de contrato.

Blockchain tiene la posibilidad de ampliar la transformación digital más allá de la empresa y en los procesos que comparte con proveedores, clientes y socios. Ya he mostrado, en realidad que un blockchain es una estructura informática y los datos que puede usarse para crear un libro de contabilidad de transacción digital que, en lugar de colocar con un solo proveedor, se comparte entre una red distribuida de equipos. El resultado es un sistema más transparente y comprobable que vayan a cambiar la forma en que piensa sobre intercambio de valor y activos, exigir contratos y compartir datos.

Microsoft se compromete a incluir blockchain para la empresa y ponerlos todos los beneficios de Azure debe tener para desarrolladores y las organizaciones que desean para crear aplicaciones distribuidas. El objetivo es ayudar a las empresas a prosperar en esta nueva era de cálculo de varias parte, seguro proporcionando servicios y plataformas escalables que cualquier empresa, de libro de contabilidad a e inicios de distribuidores para proveedores de estado y los bancos globales, puede usar para mejorar el negocio compartidos procesos. El área de trabajo de Azure Blockchain forma parte de un ecosistema de los servicios de Azure, junto con el anunciada Azure confidencial informática y confidencial Consortium Blockchain Framework, que le ayuda a salvar la brecha entre el mundo blockchain y enterprise requisitos de gobierno, seguridad y escalabilidad. Pierda de vista este espacio para el desarrollo adicional en un futuro próximo.


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