JULY 2018

VOLUME 33 NUMBER 7

ブロックチェーン - Azure のサービスとしてのブロックチェーンによるアプリケーションの分散化

によってStefano Tempesta

ブロック チェーンには、ビジネス プロセスの合理化でトランザクションを確認し、不正の可能性を削減する手段として、ビジネスとテクノロジの世界の注目がキャプチャしました。この記事では、Microsoft azure でこれを使用してセキュリティで保護されたデータ構造を構築し、分散型トランザクション デジタル台帳を作成する方法を紹介 Service (BaaS) としてブロック チェーンについて説明します。

ブロック チェーンとその起動方法としてデジタル台帳ビットコインの詳細については、インターネット上の資料をたくさんあります。どのようなブロック チェーンは良い入門記事をご覧bit.ly/2IsoWeJ、ブロック チェーンのしくみの詳細な技術概要については、記事をご覧ください Jonathan Waldman の「ブロック チェーンの基礎」2018 年 3 月と発行のMSDN Magazine (msdn.com/magazine/mt845650)。

ブロック チェーンでは、パブリック、プライベートまたは consortium (つまり、名前付きのメンバーだけに制限されている) 可能性のあるセキュリティで保護された、共有、分散型台帳です。(現在のコンピューティング テクノロジでは不可能ではない) 場合は、困難になっているトランザクションを作成する暗号化を使用しているため安全性が改ざん防止に使用します。すべてのノードまたはピア間で共有されると、チェーンでは、データ ストアを後ほど、コントラクトの形式でビジネス ロジック。ブロック チェーンの値は、それらに参加するエンティティの数を実際に直接リンクされます。非常には、ブロック チェーンのデータとコントラクトは分散して、データベースの多数のレプリカがあることを意味します。レプリカが多いより本物なります。最後に、ブロック チェーンは、デジタル台帳、トランザクションのデータベースが発生したすべてのトランザクションのレコードのみを追加します。

分散型台帳をされているブロック チェーンの詳細については、このポイントを強調したいと思います。従来型台帳は一元管理し、サード パーティ システム、またはひかれた、承認し、トランザクションを記録を使用しています。クレジット_カード、銀行、id 管理システムおよびなどと考えてください。このアプローチは、信頼とスケールのチャレンジを作成します。すべてのトランザクションのブローカーとして機能する、仲介者のエージェントを信頼できますか。単一障害点をエージェントになることができますか。これを侵害するでしょうか。

ブロック チェーンで、ネットワーク全体に分散型台帳とトランザクションの実行中に任意のサードパーティ製システムの必要はありません。テクノロジは、各ピアは、データセット全体のコピーを取得するピア ツー ピア ファイル共有のシステムでは、ように、データの複数のレプリカを保持します。全体の処理を所有していないが、そのコピーを所有のすべてのユーザー。図 1はこの方法を示しています。

分散型の分散型台帳
図 1 は、分散型台帳を分散します。

最初の [、ビットコイン ブロック チェーンは、個別の制限、2009 年に登場しました。トランザクションが記録単に、デジタルの台帳としての追跡も行いませんデジタル資産のアカウント残高とします。れの所有権は、次の変更不可能な履歴の記録されたトランザクションのチェーンのブロックの前のトランザクションへのリンクによって検証されます。また、ビットコインがトランザクションと、条件を処理する方法の特定のロジックを定義されていない、たとえば、暗号通貨 exchange について合意する必要があります、2 つの関係者が関与しています。

スマート コントラクトは、小規模なコードにトランザクション ロジックを追加するには追加すると、ブロック チェーン テクノロジが進化しました。商品またはサービスのコントラクトで法律条項のコンピューターのコード表現とスマート コントラクトを考えます。新しいブロック チェーン元帳の登場、市場で最も人気のある、ネットワークにスマート コントラクト機能を追加するには、Ethereum (ethereum.org) と Hyperledger Fabric (hyperledger.org)。これらの (ましょうにブロック チェーン 2.0) デジタル台帳は、スマート コントラクトは、ブロックに格納され、関連データと共にすべてのノードに分散されます。

ブロック チェーン 3.0

ビットコインのブロック チェーンは、ブロック チェーン 1.0 とも呼ばれます。シーケンス内のトランザクションを記録し、特定の時点で、ネットワークの状態を表す単純な台帳になります。分散型データベースとして単純に考えます。

ロジックの実行機能を追加することによってデータベースが時間の経過と共に発展していくにつれてでも、そのまま-例については、ストアド プロシージャの形式で、ブロック チェーンは、ロジック層を処理するためにスマート コントラクトを導入しました。ただし、スマート コントラクトは、格納されているブロックにのみ含まれるデータを操作できます。外部データにアクセスすることはできません、またはそのブロック チェーンにブロック チェーン区切り、"信頼の circle"の外部のサービスを呼び出すと、システムは、暗号によるセキュリティとトランザクションの不変性を提供します。CRM、ERP、給与支払いシステムのすべては、ブロック チェーンの一部ではありませんが、トランザクション内でデータの交換に関連する可能性がありますが、外部のエンティティを表します。ブロック チェーンには、安全に外部のデータが表示されるだけでなくオフチェーン コードのセキュリティで保護された実行にアクセスする方法が必要があります。

この要件に対処するには、Microsoft は、「ブロック チェーン 3.0」、データ、ロジック、およびクラウド サービスのブロック チェーンの一部として cryptlets を導入しました。図 2機能の進行状況を示しています。

ブロック チェーンの進化
ブロック チェーンの進化を図 2

Cryptlets は、セキュリティで保護された、分離された、信頼されているコンテナー内で実行できるし、セキュリティで保護されたチャネル経由で通信できる任意の言語で記述されたオフチェーン コード モジュールです。Cryptlets は、暗号化、日付と時刻イベント、外部データ アクセス、および id の認証などのサービスを提供することで、外部にスマート コントラクトを拡張します。コード ネーム"Bletchley"をそのオープン ソース プロジェクトの一部として、Microsoft が cryptlets を導入しました (bit.ly/2Iv9VZz)、これは Microsoft Build developer conference で明らかになる Azure Blockchain Workbench の製品に進化しました可能性があります。

Web サイトのように、Bletchley、エンタープライズ consortium ブロック チェーン エコシステムを構築するアーキテクチャ アプローチです。言うとこれをブロック チェーンは、スタックが。分散型台帳 (ブロック チェーン) プラットフォームには、enterprise およびプラットフォームのオープンを維持しながら、実際のビジネス問題をアドレス指定実際のソリューションを構築する業務に持ち込んでに Microsoft のアプローチになります。

Azure Blockchain Workbench (aka.ms/abcworkbench) 別のブロック チェーン元帳と企業向けの堅牢なブロック チェーンのエコシステムを有効にする既存のクラウド サービスを活用します。これは、簡略化されたインターフェイスの最高の Azure Active Directory (Azure AD)、Azure Key Vault、Azure SQL Database、Application Insights などの Azure サービスを利用するエンド ツー エンドのブロック チェーン アプリケーションを作成することができる使いやすいツール、Azure Functions と Service Bus。人気のあるブロック チェーンとブロック チェーンに基づくアプリケーションの構築に使用できる参照アーキテクチャにします。

6 月号の MSDN マガジンの「Azure Blockchain Workbench の概要」の記事で、Azure Blockchain Workbench の詳細を学習することができます (msdn.com/magazine/mt846726)

Cryptlets に戻す、サード パーティ製システムとデータ アクセスへの統合などの横断機能を使用する開発者向けのわかりやすい方法を提供します。パブリックまたはプライベートの分散型台帳をセキュリティで保護された統合ソリューションを配信するため、プラットフォームが必要、ブロック チェーンで分散アプリケーションの開発にフォーカスを移動、前にします。Microsoft Azure では、ブロック チェーンの任意のプラットフォーム上で次世代アプリケーションを提供するハイパー スケール、セキュリティで保護されたデータと実行プラットフォームを構築できる世界規模のフット プリントを提供します。

Blockchain as a Service

Azure でのブロック チェーン (bit.ly/2rQUO5q) ブロック チェーン アプリケーションの構築と配置の迅速な低コスト、低リスク プラットフォームを提供します。Azure は基本的には、Ethereum、クォーラム、Hyperledger Fabric、Corda をなど、最も人気のある元帳のいくつかのデプロイが容易なエンタープライズ対応のテンプレートを提供することで、Service (BaaS) としてブロック チェーンを提供します。

みましょうの売上で十分の売り込みを始める前に、Azure portal での特定の台帳の構成によって、Azure の BaaS の主な機能を調査します。Azure ブロック チェーンで構成されます。

  • 1 つの組織内の複数の部門の運用環境をシミュレートするために単一ノード台帳です。
  • 複数の組織内の複数の部門の運用環境をシミュレートするマルチノード台帳です。
  • ブロック チェーンで配布される分散アプリケーションの開発ツールです。

分散型アプリケーション (dApps) は、1 台のコンピューターではなく、コンピューターのピア ツー ピア ネットワーク上で実行されるアプリケーションです。ブロック チェーンのコンテキストで考える、dApp ブロック チェーン ネットワークと対話するためのスマート コントラクトを通信するクライアント アプリケーション。DApps の紹介で BlockchainHub で確認できますbit.ly/2rRkijjします。

Azure でブロック チェーンのインフラストラクチャの構築の主な特性は次のとおりです。

  • 保護されたエンドポイントを公開するセキュリティで保護された環境を確立します。これは、Azure Virtual Network、Azure App Services の VNet 統合またはネットワーク セキュリティ グループを使用して実行できます。
  • Blockstack Core、Ethereum Studio Truffle など、使用可能な開発ツールを使用して、スマート コントラクトを開発します。
  • 仮想マシンとサービスとしてのプラットフォーム コンポーネントの両方の参加者のコンポーネントの展開を自動化します。これは、Azure Resource Manager と PowerShell スクリプトで有効にできます。
  • データとユーザー レベルの認証と承認、アプリをセキュリティで保護する Azure AD を実装して Api のロジックへのアクセスを保護します。
  • 一般に、ブロック チェーン台帳、Azure のエンタープライズ機能を利用して、世界規模の配布とエンタープライズ ソリューションの統合のアーキテクチャを構築します。

Azure の BaaS は、簡単に言うと、分散型台帳用のプロバイダーが、構築、ブロック チェーン テクノロジで実行される分散アプリケーションを提供するの有機的な統合プラットフォームをホストしているだけではなくパブリック クラウドを表します。図 3プラットフォーム アーキテクチャを示しています。

Azure のサービスとしてのブロック チェーン スタック
3 つの Azure サービスとしてのブロック チェーン スタックを図します。

今すぐ Azure BaaS の機能をプロビジョニングするデジタル台帳を見てみましょう。最初に、Azure ポータルにアクセスする必要があります (portal.azure.com) Azure Marketplace から新しいサービスを作成および |ブロック チェーン」セクション。デジタル台帳テクノロジをいくつかから選択できます: ここで、Ethereum Consortium マルチノード台帳を作成します-Azure でブロック チェーン ネットワークをすばやくプロビジョニングします。

Ethereum Consortium

Ethereum Consortium テンプレートは、マイニング ノードとトランザクション ノードのセットから成る、Ethereum 複数メンバー ネットワークをデプロイします。プロビジョニングには、ネットワーク、この時点で追加 Ethereum アカウントを構成することができますおよびスマート コントラクトと、管理者 Web ページを通じて dApp 開発の概要のサイズによっては、最大で 20 分かかります。

プロビジョニング プロセスに従って、5 つの手順で Azure で Ethereum 台帳をプロビジョニングするため、必要な構成設定を入力します。

手順 1:リソースのプレフィックスが割り当てられているリソース グループ、デプロイされたすべての仮想マシンの管理とデプロイの Azure リージョンとの認証資格情報にプロビジョニングされたすべての生成された Azure リソースの名前付けを含む、基本的な設定を構成します。

手順 2:ネットワークのサイズとパフォーマンスに対処します。(12)、最大 consortium のメンバーの数を指定するメンバー (マイニング ノード レコード内でのトランザクション ブロック チェーン ネットワーク)、storage のレプリケーション (ローカル冗長または geo 冗長)、およびパフォーマンスのそれぞれのマイニング ノードの数。ユーザーまたはアプリケーションがデプロイされたブロック チェーンでの相互作用のポイントを表す、トランザクションの負荷分散されたノードの数を設定することもできます。

手順 3:この手順では、Ethereum ノードに固有です。Ethereum ネットワーク ID、ネットワークを識別する一意の値を指定し、相互にピアリングするノードで使用されます。また、起源と呼ばれる、最初のブロックの生成方法、プラットフォームによって自動的に、または独自の JSON ファイルを指定して手動で指定できます。

手順 4:Ethereum Consortium 台帳内のリソースをデプロイする前に、入力した構成設定の概要を紹介したいます。ここでは、Azure Resource Manager での設定のようなリソースの展開を自動化する JSON テンプレート ファイルをダウンロードできます。図 4テンプレート ファイルのスニペットと共に、Ethereum 台帳のプロビジョニング、デプロイする Azure リソースを予測します。

リソース テンプレート ファイル Ethereum Consortium マルチノード台帳
図 4 リソース テンプレート ファイル Ethereum Consortium マルチノード台帳

このテンプレート ファイルは、.NET または PowerShell スクリプトの組み合わせを使用して今後、同様のリソースのデプロイの自動化に使用できます。

C# コード図 5識別された Azure リソースのデプロイを自動化するためのテンプレートによって生成される DeploymentHelper クラスについて説明します。次のコードを実行するパッケージを参照する必要があります。

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

図 5 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);
  }

同様に、PowerShell スクリプトは、Azure サブスクリプションにサインインのために必要なリソース プロバイダーの登録し、ように、テンプレート ファイルで識別されるリソースのデプロイを開始図 6します。

図 6:展開を開始

# 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;
}

設立 Blogchain 領域 (blogchain.space) のブロック チェーン テクノロジについてのブログを書き込みますMSDN MagazineとMS Dynamics World、し、マシンの発行Azure AI ギャラリーで実験を学習 (gallery.azure.ai)。

McCaffrey に到達できる jamccaff@microsoft.comします。20 分未満では、完全に機能ブロック チェーンの台帳を実行している必要があります。忘れないで dApps などを開発するために必要な重要な情報を保存します。

  • RPC エンドポイント:Ethereum Remix などの dApp 開発環境と consortium ブロック チェーンの間の通信を確立するには、このアドレスが必要です。
  • SSH 情報:ブロック チェーンの環境にサインインして Coinbase アカウントのロックを解除する通常のように、パラメーターを構成し、マイニングの新しいブロックを開始する資格情報が必要です。

Coinbase は、デジタル ウォレット、ブロック、およびマイ イーサ、マイニング プロセスの一環として獲得 Ethereum の暗号通貨のハッシュに使用される署名キーが含まれています。Azure で新しい Ethereum Consortium 台帳をデプロイするときにこのアカウントが最初にロックされている、スマート コントラクトを発行する前にロックを解除する必要があります。SSH の使用の [Ethereum コンソーシアム ネットワークのトランザクション ノードに接続し、Coinbase アカウントのロックを解除するようになります。

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

パスフレーズの入力を求められたらは構成ウィザード (いない、Ethereum 秘密キーのパスフレーズ) の手順 1. で指定した gethadmin パスワードを入力します。既定では、このアクションは、5 分間に Coinbase アカウントをロック解除します。次に示すように unlockAccount メソッドの別の署名を使用して期間を変更できます。

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

"Geth"コマンドの略がわからない場合は、外出先で実装された完全な Ethereum ノードを実行している multipurpose コマンド ライン ツール。

Coinbase アカウントがロックされているが、これを表すタイム 0ネットワークの開始時に、します。これ以降、ノードはトランザクションを受け入れることができます。トランザクションは、アカウントの作成、イーサやスマート契約の作成、ブロック チェーンの状態の変更の移動の形式である可能性があります。次に、時、定期的なネットワーク地雷の次のブロックをネットワークの構成します。このブロックは、最後のブロックの間でさらに、さらに、前のブロックおよび nonce からハッシュを実行されたトランザクションのハッシュを組み合わせることによって計算されたハッシュ: 一連の実証作業条件を満たすために試すために調整できるブロック内のビット。

これは、マイニングの重要な部分です。この値により、満足「作業の実証」は、運またはブルート フォース攻撃に依存する困難なコンピューティング タスク。コンセンサス、によってネットワークによって、ブロックが、受け入れられます、ので、チェーンの最初の 2 つのブロックがあるし、具合です。

スマート コントラクトを開発します。

Ethereum でスマート コントラクトを開発の詳細を経由するブック全体がかかります。この記事で最初にポインターを提供し、テクノロジとフレームワークを使用中のランドス ケープを理解したいです。

書き込みを Ethereum でスマート コントラクトを展開は、Azure では、使用できる開発環境のいずれかを使用またはイーサ Camp のように完全に外部ブラウザー ベースの IDE にアクセス (ether.camp) Ethereum Remix または (remix.ethereum.org)。

プログラミング言語、不透明度の観点から (solidity.readthedocs.io) は JavaScript に似た構文を使用した、ブロック チェーンのプログラミングの人気のあるコントラクト指向言語です。

クライアント側では、プログラミング言語、Ethereum ノードとの対話をサポートするには、c#、C++、JavaScript などが含まれます。NEthereum などのライブラリを使用して c# コードを記述することは (nethereum.com)、完全に管理された .NET 統合ライブラリ Ethereum geth、eth RPC を使用したパリティなど Ethereum クライアントとのやり取りができるのです。ライブラリでは、非常に同様の機能を持つ JavaScript Ethereum Web3 RPC クライアント ライブラリには、事実上標準ブロック チェーン クライアント相互運用性です。

たとえば、NEthereum を使用してスマート コントラクト呼び出しをするためには、以下を行う必要があります。

  • アプリケーション バイナリ インターフェイス (ABI) とスマート コントラクトのアドレスを取得します。ABI は、スマート コントラクトで関数を呼び出すし、Ethereum ノードからデータを取得するインターフェイスです。
  • 関数のシグネチャで呼び出されるスマート コントラクトを取得します。
  • アカウントのパスフレーズで呼び出しを行う Ethereum アカウントのロックを解除します。
  • スマート コントラクトへの呼び出しを作成します。

コード スニペット図 7 NEthereum ライブラリを使用して、いくつかの非常に基本的な手順を示しています。

図 7 のスマート コントラクトを呼び出す

// 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);
}

不透明度で記述された、呼び出されたスマート コントラクトは、入力内の提案の数を受け付ける、投票のメソッドを公開する投票コントラクトのようになります。投票をキャストすると、(メッセージの送信者) voter で投票したフラグが二重の投票を防ぐために true に設定し、提案カウンターが増加し、それ自体の投票の重みを検討しています。図 8このコードを示しています。

図 8 投票コントラクト コードの不透明度

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;
  }
}

これは不透明度コード、コントラクト、構造体とアドレス キーワード、またはコメントのトリプル スラッシュ (「//」) のように、いくつかのバリエーションを含む、JavaScript に似た構文を使用して厳密に型指定された言語であることに注意してください。使用 Ethereum Remix スマート コントラクトを開発するための不透明度は、開発、テスト、配置の Web ベースの IDE を提供します。

Azure ブロック チェーン vNext

どのような未来がブロック チェーン テクノロジをマイクロソフトのビジョンでに見えるを見てみましょう。Microsoft 社外秘 Consortium (Coco) フレームワークは、機密性、ガバナンスとパフォーマンス、同時に、すべての主要なエンタープライズ要件を満たす高スケール、機密のブロック チェーン ネットワークできるオープン ソースのシステムを近日公開予定時間は、製造企業でのブロック チェーン テクノロジの採用を加速するための手段を提供します。

Coco (bit.ly/2Ior8YA) は、分散システムを信頼できる実行環境では、既存のブロック チェーン プロトコルの機能とエンタープライズ対応のブロック チェーンを有効にする暗号化ネットワーク配信されるまとめ。

  • データベースの速度のスループットと待機時間に近づいています
  • 豊富なより柔軟なビジネス固有の機密性モデル
  • 分散ガバナンスをネットワーク ポリシーの管理
  • 非確定的なトランザクションのサポート
  • 消費電力の削減

Coco スタンドアロン ブロック チェーンのプロトコルではないことに注意してください。 重要です。はなく、信頼できる基盤を提供の既存のブロック チェーン プロトコル台帳が、エンタープライズ対応の完全なソリューションを提供することができますを統合された Ethereum、クォーラム、Corda およびその他のユーザーなど。Coco は、開いていて、ブロック チェーン プロトコルに対応して設計されています。これを行う信頼できる実行環境 (TEE) を使用して、分散型台帳を実行する対象の物理ノードの信頼されたネットワークの作成を有効にするには、Intel ソフトウェア Guard Extensions (SGX) や Windows Virtual Secure Mode (VSM) など。図 9 Coco Framework アーキテクチャを示しています。

Coco Framework の概要
Coco Framework の高度な概要を図 9

Microsoft は、2018 年後半にオープン ソース、Coco Framework コードする予定です。

最後に、企業ユーザーのブロック チェーンの概要を主要なメカニズムである Azure Blockchain Workbench で単語。Azure ブロック チェーンは、一連の Azure サービスと機能を作成して、複数のビジネス プロセスとデータを共有するためのアプリケーションの新しいクラスを展開する企業を支援するように設計信頼度の低い組織。現時点では、お客様は、サブスクリプションにこれらのサービスを展開し、それらを Azure Marketplace で利用可能なブロック チェーンと統合できます。Azure Blockchain Workbench の面倒な作業はそれらの実行、そのため、集中できますスキャフォールディングではロジックとスマート コントラクトにより小さい。

Azure Blockchain Workbench は、Azure Marketplace で利用可能になりました (aka.ms/tryworkbench)。


Stefano TempestaCRMUG スイス、世界中の Dynamics 365/CRM エキスパートの最大のコミュニティでは、Microsoft Regional Director および mvp であり、だけでなく chapter のリーダー。Tempesta は、Dynamics 365、ブロック チェーンと、machine learning に関するコースの講師が Microsoft ignite に参加して Tech Summit を含む、IT の国際的なカンファレンスで定期的に講演します。設立 Blogchain 領域 (blogchain.space) のブロック チェーン テクノロジについてのブログを書き込みますMSDN MagazineMS Dynamics World*、し、マシンの発行Azure AI ギャラリーで実験を学習 (gallery.azure.ai)。*

この記事のレビューに協力してくれたマイクロソフト技術スタッフの James McCaffrey に心より感謝いたします。
Dr.James McCaffrey は、ワシントン州レドモンドの Microsoft Research に勤務しています。これまでに、Internet Explorer、Bing などの複数のマイクロソフト製品にも携わってきました。Dr.McCaffrey に到達できるjamccaff@microsoft.comします。


この記事について MSDN マガジン フォーラムで議論する