2018 年 6 月

磁碟區 33 編號 6

本文章是由機器翻譯。

Blockchain-簡介 Azure Blockchain Workbench

Stefano Tempesta |2018 年 6 月

Azure Blockchain Workbench (aka.ms/abcworkbench) 是最新的步驟中,讓客戶能夠採用 blockchain 技術,並開始使用 Azure Blockchain Microsoft 的旅程。若要提供內容,Azure Blockchain 是 Azure 服務和功能,來協助建立和部署新的類別,用於與多個共用商務程序和資料的應用程式的企業而設計的集合非完全信任的組織。目前客戶可以將這些服務部署至他們的 Azure 訂用帳戶及 Azure Marketplace 上可用的 blockchains 加以整合。現在,使用 Azure Blockchain Workbench 困難會進行,讓他們能夠專注小於 scaffolding 和上一個邏輯和智慧合約。

Azure Blockchain Workbench 會協調熱門 blockchain 數位分類帳周圍,以及可用來建置 blockchain 型應用程式參考架構的數個 Azure 服務。這是簡化的介面,可讓使用者建立端對端非集中式應用程式,利用所有 Azure Blockchain 功能與免費、 簡單好用工具。到達配備範例跨組織的工作流程和智慧合約,以及客戶可以使用以大幅降低開發成本,並加速證明之 [跨 UI。

如果您還不熟悉 blockchain,建議您先閱讀 Jonathan Waldman 未處理文件: < Blockchain 基礎觀念 > (msdn.com/magazine/mt845650),在 MSDN Magazine 的年 3 月 2018年問題。此外,在進行以點為觀賞 Microsoft 機制,「 入門至 Blockchain 和 Azure Blockchain Workbench" aka.ms/workbenchintro

介紹 Azure Blockchain Workbench

相同方式進行應用程式目前與資料庫互動,blockchain 上執行的分散式應用程式通訊,並執行特定的數位分類帳,例如 Ethereum 或 Hyperledger 針對邏輯。數位分類帳網路對等非集中式網路的節點所組成。這些節點維護資料存放區的複本,並執行虛擬機器,以支援任意計算針對分類帳,同時維持一致。智慧合約是可讓這個複雜的計算,在網路上,類似於傳統的關聯式資料庫上的預存程序的機制。

儘管可能會利用 blockchain 日益商務程序中的,有一些要克服企業可以採用 blockchain 技術之前的障礙。缺乏控管、 網路效能和延展性都常引用為影響 blockchain 企業環境中採用的挑戰。

建置完整的解決方案通常 blockchain 上執行需要提供基礎結構,以及開發用戶端應用程式,撰寫和部署閘道 API、 實作鏈結關閉存放裝置的支援,寫入記錄檔和報表,以及整合識別身分與金鑰保存庫服務到解決方案。沒有一組常用的挑戰 blockchain 應用程式開發所處理之 Azure Blockchain 工作臺,將可大幅減少建置 blockchain 方案所需的時間量。

Azure Blockchain Workbench 提供程式碼資產和 ARM 範本驅動的部署 blockchain POCs,包括 blockchain 網路閘道 API,能繼續回應的 Web 應用程式、 Azure Active Directory 整合,Azure 金鑰所需的所有 scaffolding保存庫整合、 SQL DB 設定收集鏈結上的資料,而且支援一組服務的資料雜湊和簽署。此工具也可以建立 Web 前端,而不需要撰寫任何程式碼。它會使用提供智慧合約的中繼資料以動態方式傳遞內容的 UX 參與者。架構會填入 SQL 資料庫做為鏈結關閉存放區,因為它可讓組織充分利用現有的技術和工具亮起額外的功能。

如此便造就了Azure Blockchain Workbench 減少時間和成本的概念證明 (POC) 專案。它可讓客戶更專注於建立創新示範 blockchain,可能會花較少的時間和資源來建立基本 POC 所需的整合工作上的應用程式。

Azure Blockchain Workbench 上可用的 Azure Marketplace (aka.ms/tryworkbench),及工作臺] 的動作中的影片都由 Microsoft 技術團隊在aka.ms/workbenchdemo

部署 Azure Blockchain Workbench

Azure Blockchain 工作臺] 的部署需要下列先決條件步驟:

1.Azure Active Directory (Azure AD) 租用戶主機所需的 Azure AD 和金鑰保存庫的應用程式。

2.註冊 Azure AD 應用程式與 Azure Blockchain Workbench 在部署期間參考的金鑰保存庫值。

您可能想要建立新的 Azure AD 租用戶設定測試使用者,或註冊應用程式中不同的 Azure AD 租用戶與您公司的 Azure AD 租用戶。Aka.ms/workbenchdocs 的官方 Azure Blockchain Workbench 文件中,會報告有關這些組態設定步驟的詳細的指示。

一旦先決條件步驟完成時,就可以部署 Workbench。登入 Azure 入口網站,並加入新的資源,透過 Azure Marketplace 所示圖 1。搜尋並選取 [Azure Blockchain Workbench 開始佈建程序。

圖 1 Azure Blockchain 工作臺中 Azure Marketplace

此解決方案範本被設計來簡化部署和建置 blockchain 網路上的應用程式所需的服務整合。少數幾個使用者輸入,並透過 Azure 入口網站按一下部署,您可以部署以及相關的 Azure 服務,建置端對端 blockchain 應用程式,使用 Web UI 的範例封裝需要 blockchain 分類帳。產生的應用程式包含 Web 應用程式、 REST API、 鏈結關閉儲存體等等。而不是花的時間建立及設定服務整合所需 blockchain 網路,Azure 團隊已自動化這些耗時的部分,讓您可以專注於建置出您的案例。透過 Azure Blockchain Workbench Web 應用程式,您可以產生端對端 UX 智慧合約您商務工作流程。

佈建 Azure Blockchain Workbench 需要六個步驟,以建立組態參數前, 兩個和後面的兩個位址的網路容量和監視。步驟 1 需要基本設定,以圖 2,包括:

• 使用做為前置詞命名佈建為此範本的一部分的所有 Azure 資源的唯一識別項。

• 所有已佈建虛擬機器 (Vm) 的系統管理員使用者名稱。

• SSH 公開金鑰用來連線至 Vm。複製並貼在單行格式 (起"ssh rsa") 或多行 PEM 格式的 RSA 公開金鑰。您可以產生使用透過像是 Linux 及 Windows 上的 Ssh-keygen 或 macOS 上的 SSH 金鑰。

• 密碼來保護包含 Workbench 部署的一部分資料庫的存取權。

• 您想要用來部署的 Azure 訂用帳戶。請注意,使用 Azure Blockchain Workbench 是免費的授權成本,但您支付已佈建的 Azure 運算、 儲存體和網路資源。

• 若要將所有這些資源群組在一起使用的資源群組。我建議您建立新的資源群組 Blockchain Workbench 方案。

• 區域至您要部署資源。

圖 2 開始佈建 Azure Blockchain Workbench

當您將需要註冊應用程式識別碼和金鑰輸入要求時,步驟 2 會要求您已經完成先決條件步驟的 blockchain 用戶端應用程式註冊在 Azure AD 中。您也需要指定 Azure AD 中註冊的用戶端應用程式時取得租用戶網域名稱。

在步驟 3 中,您可以指定佈建的 blockchain 分類帳中的節點數目和配置 Vm 的大小。(選擇性) 選擇 Operations Management Suite (OMS) 的監視已部署的解決方案為步驟 4。

步驟 5 和 6 都只是正在佈建的資源,以及您通知您了解是成本併入的摘要。一旦部署工作臺] 的已完成,您會看到新的資源群組具有指定名稱。部署在這裡,例如 Application Insights 一些資源可讓您取得 Workbench,包括有關已部署 Vm 及網路詳細資料狀態的詳細資訊。

如先前所述,Azure Blockchain Workbench 利用 Azure AD 進行驗證,存取控制與工作流程角色識別碼。只有在參考的 Azure AD 中指定的使用者將能夠驗證,並使用已部署的資源。此外,使用者必須是與特定使用者群組,以互動並執行動作相關聯。因此,它是為了管理使用者帳戶與 Azure Blockchain Workbench 互動,並將它們指派必要的權限。

部署智慧合約

一旦部署之後,您可以藉由瀏覽至其 URL 來存取 Azure Blockchain Workbench。您會看到為 Azure AD 為基礎的登入體驗,您可以在其中輸入您的公司或個人的 Microsoft 帳戶認證,存取應用程式。

您現在可以開始利用智慧合約,其中包含磁碟機不同的案例流程的商務邏輯。此方法提供的不變性、 具決定性的執行和不受信任的環境中需要的透明度。Blockchain 堆疊特定語言撰寫而成智慧的合約。例如,Solidity 用於 Ethereum,而 Go 用於 Hyperledger 網狀架構。智慧合約會部署到 blockchain 上的所有節點。在執行期間,它會傳遞的資訊也會複寫到網路上的所有節點。

Azure Blockchain 工作臺的主要目標是抵禦周圍 blockchain 應用程式中,scaffolding,讓使用者能夠專注於建立智慧合約為基礎的商務邏輯。一旦工作臺中執行個體化智慧合約時,它會寫入 blockchain,而後續更新智慧合約會記錄於 blockchain。Azure Blockchain Workbench 系統管理員有部署智慧合約和已完成的使用者指派智慧合約之後,其他使用者可以與 blockchain 應用程式互動,並參與智慧合約工作流程。

讓我們開始部署的任何現有的示範智慧的合約。之後成功登入,您應該看到右上方的系統管理員連結。按一下管理連結來存取系統管理員儀表板。目前三個動作所示的 [工作臺] 中的管理員圖 3。從這裡您可以將使用者指派、 部署示範合約,以及部署自訂的合約。

圖 3 的系統管理員儀表板

按一下 [系統管理員儀表板中的 [部署示範合約上帶來了強大,可供所有示範合約清單。目前版本的 Blockchain Workbench 包含示範智慧合約及組態檔可協助您開始的一組。Workbench 文件提供有關的特定案例和逐步解說了解 UI 的詳細資訊。也有一些方式所建立的示範智慧合約和相關聯的組態檔,以及如何設定 Azure AD 中啟用此案例中的權限的使用者帳戶等詳細的指示。

上傳自訂合約

您也可以建立自訂的合約中的任何程式設計語言的參考,blockchain 平台支援,並將其部署 Azure Blockchain 工作臺] 中。所有 Azure Blockchain Workbench 都需要定義商務邏輯、 互動及實作工作流程的視覺效果的三個檔案。包括:

智慧合約: 若要開始,您必須建立智慧型的合約,其中包含案例的商務邏輯。在下列範例中,智慧合約的目標 Ethereum blockchain 中,因此合約會寫入 Solidity 程式設計語言。

組態: 在組態檔中,使用者會對應內容、 動作和 blockchain 智慧合約的通訊協定資訊。您也可以定義何種參數所需參與者所針對的具現化及智慧合約上的動作。

UI 組態: 在組態 UI 檔案中,定義在智慧型合約的每個狀態的角色型存取控制的 UI,例如限制的角色可以採取特定動作。在此檔案中,使用者狀態和角色,會將對應,並指定狀態的定義,在每個狀態的合約及合格的動作,在每個狀態的完成百分比。

建立智慧合約

合約定義包含一些元件,必須指定要使用 Azure Blockchain Workbench。之前的案例,例如狀態、 參與者和描述每個動作背後的邏輯函數來定義特定合約詳細資料,您必須實作 LexingtonBase 合約。商務案例的商務邏輯的實際合約會繼承 LexingtonBase 合約 (這是相當於 C# 中的類別) 中所示圖 4

圖 4 LexingtonBase 合約

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

每個合約都應該有一種狀態,表示目前狀態的合約、 位址參與者智慧合約,儲存的資料合約中定義不同的動作的商務邏輯和的建構函式的函式中當具現化智慧的合約。圖 5提供建構函式的範例,並傳送資產智慧合約的屬性。

圖 5 資產傳輸智慧合約

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

無法確定類別名稱和建構函式名稱比對。您可以找到範例原始程式碼 Solidity 語言這個智慧的合約,JSON 組態檔,在我 GitHub 儲存機制上並且bit.ly/2HJPcET

設定檔建立

組態檔定義的主要屬性和智慧合約參數。這包括列出的所有屬性和類型,以及定義指出使用者必須輸入到具現化智慧合約何種參數的建構函式。圖 6顯示資產傳輸屬性和組態檔中的建構函式的範例。

圖 6 Asset 傳輸內容和建構函式

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

此外,使用者必須列舉,並提供所有可能的動作,包括指定每個動作的輸入的參數的詳細資料。圖 7顯示從資產傳輸的組態檔,這需要使用者輸入 [偵測器、 評價者和供應項目價格 MakeOffer 動作規格的範例。

圖 7 MakeOffer 動作規格

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

最後,包含 blockchain 設定資訊,,如下所示:

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

UI 組態檔建立

使用者定義 UI 組態檔中的每個動作的 UI 詳細資料。這包括使用者,例如啟動者或參與者角色和角色對應、 狀態對應,以及指出文字的建構函式時使用者想要具現化智慧合約所要顯示的詳細資訊。圖 8顯示資產傳輸屬性和 UI 組態檔中的建構函式的範例。

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

此外,使用者應該列舉所有可能的狀態,並包含指定可以在每個步驟,每個角色,與百分比完成的值時,讓使用者透過智慧合約進度的視覺效果採取的動作每個狀態的詳細資料。例如,資產傳送合約 UI 組態檔會示範,一旦狀態會顯示已經放置於優惠,只擁有者和購買者可能需要指定的動作中的程式碼所示圖 9

圖 9 OfferPlaced 程式碼

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

建立您自訂的智慧合約和相關聯的組態檔之後下, 一個工作是部署智慧的合約。選取後上傳自訂合約管理員儀表板的 Azure Blockchain 工作臺中,您會看到的頁面,即可上傳自訂合約和組態檔。有三個您需要提供的檔案。選取智慧合約檔案和兩個稍早建立的組態檔,如同在 [上載合約] 畫面所示圖 10

圖 10 [上載合約] 畫面

使用者指派

一旦部署智慧的合約 (「 示範 」 或 「 自訂 」),啟動者角色的使用者可以建立新合約的執行個體。若要建立特定合約的執行個體,使用者必須具有該合約相關聯的角色。根據智慧合約的規格,並非每個角色可能沒有權限,來建立合約。身為管理員,您可以將使用者指派給合約,並在商務程序中指定其角色 (角色)。請注意,系統管理員可以執行任何使用者的指派動作之前,必須有至少一個合約 (「 示範 」 或 「 自訂 」) 部署。合約上傳之後下, 一個步驟是完成使用者指派的合約。系統管理員可以從 Azure Blockchain Workbench 管理員儀表板中的使用者指派螢幕指派使用者給智慧的合約。

指派給合約之後,使用者可以參與智慧合約流程登入 Azure Blockchain Workbench 建立合約。使用者想要產生新的資產傳輸,如中所示的假設圖 11。他或她必須建立新的合約上的 [建立新的合約的右上角的檢視,並輸入 (這個檢視會有所不同根據您的智慧合約) 的合約的詳細資料並送出。自動產生螢幕,這會根據智慧型合約定義中提供的中繼資料。

圖 11 輸入合約詳細資料

建立合約的執行個體之後,使用者可以向下鑽研詳細資料以檢視可用的動作,指定合約的目前狀態。

擴充 Azure Blockchain Workbench

在 Azure Blockchain 工作臺的核心是 Azure 服務匯流排,啟用可擴充且可插入的模型,可讓多個分散式的分類帳技術,來作為 blockchain 方案的一部分儲存體和資料庫供應項目。也有其他服務整合以擴充功能,例如 Azure 邏輯應用程式、 Web Api、 通知中樞及 like 工作臺的機會。鏈結關閉儲存體的資料可讓後置處理儲存體和分析的情況下,使用 Power BI,例如選項與 Azure Machine Learning 中,HD Insight Azure 資料湖和其他服務合約資料共用的位置。

Blockchain 就可能會延伸超過公司牆數位的轉換,並與其共用與供應商、 客戶或合作夥伴到程序。我已所示,在其核心 blockchain 是這兩個計算和資料結構,可用來建立數位交易分類帳,而不是使用單一提供者,將滑鼠停在分散式網路的電腦之間共用。結果是會變更您思考交換值和資產、 強制執行合約,以及共用資料方式的更透明的和可驗證系統。

Microsoft 致力於讓企業 blockchain 並使 Azure 務必牢記開發人員和組織想要建立分散式應用程式的完整優點。目標是要協助蓬勃發展的安全、 多方計算此新紀元中所提供可擴充的平台和服務,任何公司的公司 — 從分類帳啟動和健全狀況提供者和全域銀行零售商,可用來改善共用的商務處理程序。Azure Blockchain Workbench 是服務在 Azure 中,以及宣布 Azure 機密運算和機密的協會 Blockchain 架構,可協助 blockchain 全局和企業之間的差距的生態系統的一部分控管、 安全性及擴充性的需求。本空間聲明的其他開發在不久的將來 !


Stefano Tempesta CRMUG 瑞士 Dynamics 365 / CRM 專家世界中的最大社群中是 Microsoft 地區主管 MVP,以及章前置字元。Tempesta 是一位講師的課程有關 Dynamics 365、 blockchain 和機器學習和一般喇叭演說國際 IT,包括 Microsoft Ignite 和技術的高峰。他所建構 Blogchain 空間 (blogchain.space),blockchain 技術的相關部落格寫入 MSDN Magazine 和 MS Dynamics 世界中,並發行 Azure AI 組件庫上的機器學習實驗 (gal lery.azure.ai)。