Öğretici: Azure Blockchain Workbench için blockchain uygulaması oluşturunTutorial: Create a blockchain application for Azure Blockchain Workbench

Yapılandırma ve akıllı sözleşme kodu yla tanımlanan çok taraflı iş akışlarını temsil eden blockchain uygulamalarını oluşturmak için Azure Blockchain Workbench'i kullanabilirsiniz.You can use Azure Blockchain Workbench to create blockchain applications that represent multi-party workflows defined by configuration and smart contract code.

Şunları öğrenirsiniz:You'll learn how to:

  • Blockchain uygulamasını yapılandırmaConfigure a blockchain application
  • Akıllı sözleşme kodu dosyası oluşturmaCreate a smart contract code file
  • Blockchain Workbench'e blockchain uygulaması eklemeAdd a blockchain application to Blockchain Workbench
  • Blockchain uygulamasına üye eklemeAdd members to the blockchain application

Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.If you don't have an Azure subscription, create a free account before you begin.

Ön koşullarPrerequisites

Merhaba Blockchain!Hello, Blockchain!

İstekçinin bir istek gönderdiği ve yanıtlayanın isteğe yanıt gönderdiği temel bir uygulama oluşturalım.Let's build a basic application in which a requestor sends a request and a responder send a response to the request. Örneğin, bir istek "Merhaba, nasılsın?", ve yanıt olabilir, "Ben harikayım!".For example, a request can be, "Hello, how are you?", and the response can be, "I'm great!". Hem istek hem de yanıt altta yatan blockchain'e kaydedilir.Both the request and the response are recorded on the underlying blockchain.

Uygulama dosyalarını oluşturmak için adımları izleyin veya örneği GitHub'dan indirebilirsiniz.Follow the steps to create the application files or you can download the sample from GitHub.

Yapılandırma dosyasıConfiguration file

Yapılandırma meta verileri blockchain uygulamasının üst düzey iş akışlarını ve etkileşim modelini tanımlar.Configuration metadata defines the high-level workflows and interaction model of the blockchain application. Yapılandırma meta verileri blockchain uygulamasının iş akışı aşamalarını ve etkileşim modelini temsil eder.Configuration metadata represents the workflow stages and interaction model of the blockchain application.

  1. Sık kullanılan düzenleyicinizde, '' adlı HelloBlockchain.jsonbir dosya oluşturun.In your favorite editor, create a file named HelloBlockchain.json.

  2. Blockchain uygulamasının yapılandırmasını tanımlamak için aşağıdaki JSON'u ekleyin.Add the following JSON to define the configuration of the blockchain application.

    {
      "ApplicationName": "HelloBlockchain",
      "DisplayName": "Hello, Blockchain!",
      "Description": "A simple application to send request and get response",
      "ApplicationRoles": [
        {
          "Name": "Requestor",
          "Description": "A person sending a request."
        },
        {
          "Name": "Responder",
          "Description": "A person responding to a request"
        }
      ],
      "Workflows": [
        {
          "Name": "HelloBlockchain",
          "DisplayName": "Request Response",
          "Description": "A simple workflow to send a request and receive a response.",
          "Initiators": [ "Requestor" ],
          "StartState": "Request",
          "Properties": [
            {
              "Name": "State",
              "DisplayName": "State",
              "Description": "Holds the state of the contract.",
              "Type": {
                "Name": "state"
              }
            },
            {
              "Name": "Requestor",
              "DisplayName": "Requestor",
              "Description": "A person sending a request.",
              "Type": {
                "Name": "Requestor"
              }
            },
            {
              "Name": "Responder",
              "DisplayName": "Responder",
              "Description": "A person sending a response.",
              "Type": {
                "Name": "Responder"
              }
            },
            {
              "Name": "RequestMessage",
              "DisplayName": "Request Message",
              "Description": "A request message.",
              "Type": {
                "Name": "string"
              }
            },
            {
              "Name": "ResponseMessage",
              "DisplayName": "Response Message",
              "Description": "A response message.",
              "Type": {
                "Name": "string"
              }
            }
          ],
          "Constructor": {
            "Parameters": [
              {
                "Name": "message",
                "Description": "...",
                "DisplayName": "Request Message",
                "Type": {
                  "Name": "string"
                }
              }
            ]
          },
          "Functions": [
            {
              "Name": "SendRequest",
              "DisplayName": "Request",
              "Description": "...",
              "Parameters": [
                {
                  "Name": "requestMessage",
                  "Description": "...",
                  "DisplayName": "Request Message",
                  "Type": {
                    "Name": "string"
                  }
                }
              ]
            },
            {
              "Name": "SendResponse",
              "DisplayName": "Response",
              "Description": "...",
              "Parameters": [
                {
                  "Name": "responseMessage",
                  "Description": "...",
                  "DisplayName": "Response Message",
                  "Type": {
                    "Name": "string"
                  }
                }
              ]
            }
          ],
          "States": [
            {
              "Name": "Request",
              "DisplayName": "Request",
              "Description": "...",
              "PercentComplete": 50,
              "Value": 0,
              "Style": "Success",
              "Transitions": [
                {
                  "AllowedRoles": ["Responder"],
                  "AllowedInstanceRoles": [],
                  "Description": "...",
                  "Function": "SendResponse",
                  "NextStates": [ "Respond" ],
                  "DisplayName": "Send Response"
                }
              ]
            },
            {
              "Name": "Respond",
              "DisplayName": "Respond",
              "Description": "...",
              "PercentComplete": 90,
              "Value": 1,
              "Style": "Success",
              "Transitions": [
                {
                  "AllowedRoles": [],
                  "AllowedInstanceRoles": ["Requestor"],
                  "Description": "...",
                  "Function": "SendRequest",
                  "NextStates": [ "Request" ],
                  "DisplayName": "Send Request"
                }
              ]
            }
          ]
        }
      ]
    }
    
  3. HelloBlockchain.json dosyasını kaydedin.Save the HelloBlockchain.json file.

Yapılandırma dosyasının birkaç bölümü vardır.The configuration file has several sections. Her bölüm le ilgili ayrıntılar aşağıdaki gibidir:Details about each section are as follows:

Uygulama meta verileriApplication metadata

Yapılandırma dosyasının başında uygulama adı ve açıklaması da dahil olmak üzere uygulama hakkında bilgi içerir.The beginning of the configuration file contains information about the application including application name and description.

Uygulama rolleriApplication roles

Uygulama rolleri bölümü, blockchain uygulamasında rol yapabilecek veya katılabilecek kullanıcı rollerini tanımlar.The application roles section defines the user roles who can act or participate within the blockchain application. İşlevsellik temeline dayalı farklı roller kümesi tanımlarsınız.You define a set of distinct roles based on functionality. İstek-yanıt senaryosunda, istek oluşturan bir varlık olarak istekverenin işlevselliği ile yanıt üreten bir kuruluş olarak yanıtlayıcı arasında bir ayrım vardır.In the request-response scenario, there is a distinction between the functionality of a requestor as an entity that produces requests and a responder as an entity that produces responses.

İş akışlarıWorkflows

İş akışları, sözleşmenin bir veya daha fazla aşamasını ve eylemlerini tanımlar.Workflows define one or more stages and actions of the contract. İstek-yanıt senaryosunda, iş akışının ilk aşaması (durum) bir istekçi (rol) bir istek (işlev) göndermek için bir eylem (geçiş) alır.In the request-response scenario, the first stage (state) of the workflow is a requestor (role) takes an action (transition) to send a request (function). Sonraki aşama (durum) yanıtlayıcı (rol) bir yanıt (işlev) göndermek için bir eylem (geçiş) alır.The next stage (state) is a responder (role) takes an action (transition) to send a response (function). Bir uygulamanın iş akışı özellikleri, işlevleri ve gerekli durumları bir sözleşmenin akışını açıklamak içerebilir.An application's workflow can involve properties, functions, and states required describe the flow of a contract.

Yapılandırma dosyalarının içeriği hakkında daha fazla bilgi için Azure Blockchain İş Akışı yapılandırma başvurusunabakın.For more information about the contents of configuration files, see Azure Blockchain Workflow configuration reference.

Akıllı sözleşme kodu dosyasıSmart contract code file

Akıllı sözleşmeler blockchain uygulamasının iş mantığını temsil ediyor.Smart contracts represent the business logic of the blockchain application. Şu anda Blockchain Workbench, blockchain defteri için Ethereum'u desteklemektedir.Currently, Blockchain Workbench supports Ethereum for the blockchain ledger. Ethereum, akıllı sözleşmeler için kendi kendini zorlayan iş mantığı yazmak için programlama dili olarak Solidity kullanır.Ethereum uses Solidity as its programming language for writing self-enforcing business logic for smart contracts.

Solidity'deki akıllı sözleşmeler nesne yönelimli dillerdeki sınıflara benzer.Smart contracts in Solidity are similar to classes in object-oriented languages. Her sözleşme, akıllı sözleşmenin aşamalarını ve eylemlerini uygulamak için durum ve işlevler içerir.Each contract contains state and functions to implement stages and actions of the smart contract.

Sık kullanılan düzenleyicinizde , HelloBlockchain.sol'.In your favorite editor, create a file called HelloBlockchain.sol.

Sürüm pragmaVersion pragma

En iyi uygulama olarak, hedeflediğiniz Solidity sürümünü belirtin.As a best practice, indicate the version of Solidity you are targeting. Sürümü belirtmek, gelecekteki Solidity sürümleriyle uyumsuzlukları önlemeye yardımcı olur.Specifying the version helps avoid incompatibilities with future Solidity versions.

Akıllı sözleşme kodu dosyasının HelloBlockchain.sol üst kısmında aşağıdaki sürümü pragma ekleyin.Add the following version pragma at the top of HelloBlockchain.sol smart contract code file.

pragma solidity >=0.4.25 <0.6.0;

Yapılandırma ve akıllı sözleşme kodu ilişkisiConfiguration and smart contract code relationship

Blockchain Workbench, blockchain uygulaması oluşturmak için yapılandırma dosyasını ve akıllı sözleşme kodu dosyasını kullanır.Blockchain Workbench uses the configuration file and smart contract code file to create a blockchain application. Yapılandırmada tanımlanan ile akıllı sözleşmedeki kod arasında bir ilişki vardır.There is a relationship between what is defined in the configuration and the code in the smart contract. Uygulamayı oluşturmak için sözleşme ayrıntıları, işlevleri, parametreleri ve türleri eşleştirmek için gereklidir.Contract details, functions, parameters, and types are required to match to create the application. Blockchain Workbench, uygulama oluşturmadan önce dosyaları doğrular.Blockchain Workbench verifies the files prior to application creation.

SözleşmeContract

Sözleşme üstbilgisini akıllı HelloBlockchain.sol sözleşme kodu dosyanıza ekleyin.Add the contract header to your HelloBlockchain.sol smart contract code file.

contract HelloBlockchain {

Durum değişkenleriState variables

Durum değişkenleri her sözleşme örneği için durum değerlerini depolar.State variables store values of the state for each contract instance. Sözleşmenizdeki durum değişkenleri, yapılandırma dosyasında tanımlanan iş akışı özellikleriyle eşleşmelidir.The state variables in your contract must match the workflow properties defined in the configuration file.

Akıllı sözleşme kodu dosyanızda HelloBlockchain.sol sözleşmenize durum değişkenlerini ekleyin.Add the state variables to your contract in your HelloBlockchain.sol smart contract code file.

    //Set of States
    enum StateType { Request, Respond}

    //List of properties
    StateType public  State;
    address public  Requestor;
    address public  Responder;

    string public RequestMessage;
    string public ResponseMessage;

OluşturucuConstructor

Oluşturucu, iş akışının yeni bir akıllı sözleşme örneği için giriş parametrelerini tanımlar.The constructor defines input parameters for a new smart contract instance of a workflow. Konstrüktör için gerekli parametreler yapılandırma dosyasında yapıcı parametreler olarak tanımlanır.Required parameters for the constructor are defined as constructor parameters in the configuration file. Parametrelerin sayısı, sırası ve türü her iki dosyada da eşleşmelidir.The number, order, and type of parameters must match in both files.

Oluşturucu işlevinde, sözleşmeyi oluşturmadan önce gerçekleştirmek istediğiniz herhangi bir iş mantığını yazın.In the constructor function, write any business logic you want to perform prior to creating the contract. Örneğin, başlangıç değerleri yle durum değişkenlerini başlatın.For example, initialize the state variables with starting values.

Akıllı sözleşme kodu dosyanızda HelloBlockchain.sol sözleşmenize kurucu işlevini ekleyin.Add the constructor function to your contract in your HelloBlockchain.sol smart contract code file.

    // constructor function
    constructor(string memory message) public
    {
        Requestor = msg.sender;
        RequestMessage = message;
        State = StateType.Request;
    }

İşlevlerFunctions

İşlevler, bir sözleşme deki iş mantığının yürütülebilir birimleridir.Functions are the executable units of business logic within a contract. İşlev için gerekli parametreler yapılandırma dosyasında işlev parametreleri olarak tanımlanır.Required parameters for the function are defined as function parameters in the configuration file. Parametrelerin sayısı, sırası ve türü her iki dosyada da eşleşmelidir.The number, order, and type of parameters must match in both files. İşlevler, yapılandırma dosyasındaki Blockchain Çalışma Tezgahı iş akışındaki geçişlerle ilişkilidir.Functions are associated to transitions in a Blockchain Workbench workflow in the configuration file. Geçiş, sözleşme tarafından belirlenen bir uygulamanın iş akışının bir sonraki aşamasına geçmek için gerçekleştirilen bir eylemdir.A transition is an action performed to move to the next stage of an application's workflow as determined by the contract.

İşleviçinde gerçekleştirmek istediğiniz herhangi bir iş mantığını yazın.Write any business logic you want to perform in the function. Örneğin, bir durum değişkeninin değerini değiştirme.For example, modifying a state variable's value.

  1. Akıllı sözleşme kodu dosyanızda HelloBlockchain.sol sözleşmenize aşağıdaki işlevleri ekleyin.Add the following functions to your contract in your HelloBlockchain.sol smart contract code file.

        // call this function to send a request
        function SendRequest(string memory requestMessage) public
        {
            if (Requestor != msg.sender)
            {
                revert();
            }
    
            RequestMessage = requestMessage;
            State = StateType.Request;
        }
    
        // call this function to send a response
        function SendResponse(string memory responseMessage) public
        {
            Responder = msg.sender;
    
            ResponseMessage = responseMessage;
            State = StateType.Respond;
        }
    }
    
  2. Akıllı HelloBlockchain.sol sözleşme kodu dosyanızı kaydedin.Save your HelloBlockchain.sol smart contract code file.

Blockchain Workbench'e blockchain uygulaması eklemeAdd blockchain application to Blockchain Workbench

Blockchain Workbench'e blockchain uygulaması eklemek için, uygulamayı tanımlamak için yapılandırmayı ve akıllı sözleşme dosyalarını yüklersiniz.To add a blockchain application to Blockchain Workbench, you upload the configuration and smart contract files to define the application.

  1. Bir web tarayıcısında Blockchain Workbench web adresine gidin.In a web browser, navigate to the Blockchain Workbench web address. Örneğin, https://{workbench URL}.azurewebsites.net/ Blockchain Workbench'i dağıttığınızda web uygulaması oluşturulur.For example, https://{workbench URL}.azurewebsites.net/ The web application is created when you deploy Blockchain Workbench. Blockchain Workbench web adresinizi nasıl bulacağınız hakkında bilgi için Blockchain Workbench Web URL'sine bakınFor information on how to find your Blockchain Workbench web address, see Blockchain Workbench Web URL
  2. Blockchain Workbench yöneticisiolarak oturum açın.Sign in as a Blockchain Workbench administrator.
  3. Yeni Uygulamaları > Seçin.Select Applications > New. Yeni uygulama bölmesi görüntülenir.The New application pane is displayed.
  4. Oluşturduğunuz HelloBlockchain.json yapılandırma dosyasını bulmak için sözleşme yapılandırmasına > Göz At yükle'yi seçin.Select Upload the contract configuration > Browse to locate the HelloBlockchain.json configuration file you created. Yapılandırma dosyası otomatik olarak doğrulanır.The configuration file is automatically validated. Doğrulama hatalarını görüntülemek için Göster bağlantısını seçin.Select the Show link to display validation errors. Uygulamayı dağıtmadan önce doğrulama hatalarını düzeltin.Fix validation errors before you deploy the application.
  5. HelloBlockchain.sol akıllı sözleşme kodu dosyasınıbulmak için sözleşme kodunu > Yükle'yiseçin.Select Upload the contract code > Browse to locate the HelloBlockchain.sol smart contract code file. Kod dosyası otomatik olarak doğrulanır.The code file is automatically validated. Doğrulama hatalarını görüntülemek için Göster bağlantısını seçin.Select the Show link to display validation errors. Uygulamayı dağıtmadan önce doğrulama hatalarını düzeltin.Fix validation errors before you deploy the application.
  6. Yapılandırmayı ve akıllı sözleşme dosyalarını temel alan blockchain uygulamasını oluşturmak için Dağıt'ı seçin.Select Deploy to create the blockchain application based on the configuration and smart contract files.

Blockchain uygulamasının dağıtımı birkaç dakika sürer.Deployment of the blockchain application takes a few minutes. Dağıtım tamamlandığında, yeni uygulama Uygulamalar'dagörüntülenir.When deployment is finished, the new application is displayed in Applications.

Not

Ayrıca Azure Blockchain Workbench REST API'yikullanarak blockchain uygulamaları oluşturabilirsiniz.You can also create blockchain applications by using the Azure Blockchain Workbench REST API.

Blockchain uygulama üyeleri eklemeAdd blockchain application members

Sözleşmeleri başlatmak ve eylemde bulunmak için uygulama üyelerini uygulamanıza ekleyin.Add application members to your application to initiate and take actions on contracts. Uygulama üyeleri eklemek için Blockchain Workbench yöneticisiolmanız gerekir.To add application members, you need to be a Blockchain Workbench administrator.

  1. Uygulamalar > Merhaba, Blockchain seçin!.Select Applications > Hello, Blockchain!.
  2. Uygulamayla ilişkili üye sayısı sayfanın sağ üst köşesinde görüntülenir.The number of members associated to the application is displayed in the upper right corner of the page. Yeni bir uygulama için üye sayısı sıfır olacaktır.For a new application, the number of members will be zero.
  3. Sayfanın sağ üst köşesindeki üyeler bağlantısını seçin.Select the members link in the upper right corner of the page. Uygulama için geçerli bir üye listesi görüntülenir.A current list of members for the application is displayed.
  4. Üyelik listesinde üye ekle'yiseçin.In the membership list, select Add members.
  5. Eklemek istediğiniz üyenin adını seçin veya girin.Select or enter the member's name you want to add. Yalnızca Blockchain Workbench kiracısında bulunan Azure AD kullanıcıları listelenir.Only Azure AD users that exist in the Blockchain Workbench tenant are listed. Kullanıcı bulunamazsa, Azure AD kullanıcıları eklemenizgerekir.If the user is not found, you need to add Azure AD users.
  6. Üyenin Rolü'nü seçin.Select the Role for the member. İlk üye için rol olarak İstekçi'yi seçin.For the first member, select Requestor as the role.
  7. İlişkili role sahip üyeyi uygulamaya eklemek için Ekle'yi seçin.Select Add to add the member with the associated role to the application.
  8. Yanıtlayan rolüyle uygulamaya başka bir üye ekleyin.Add another member to the application with the Responder role.

Blockchain Workbench'teki kullanıcıları yönetme hakkında daha fazla bilgi için Azure Blockchain Workbench'teki kullanıcıları yönetme ye bakınFor more information about managing users in Blockchain Workbench, see managing users in Azure Blockchain Workbench

Sonraki adımlarNext steps

Bu nasıl yapılabilir makalesinde, temel bir istek ve yanıt uygulaması oluşturdunuz.In this how-to article, you've created a basic request and response application. Uygulamayı nasıl kullanacağınızı öğrenmek için, sonraki nasıl yapılacağını makaleye devam edin.To learn how to use the application, continue to the next how-to article.