Zelfstudie: Een blockchain-toepassing maken in Azure Blockchain WorkbenchTutorial: Create a blockchain application in Azure Blockchain Workbench

U kunt Azure Blockchain Workbench gebruiken om een blockchain-toepassing te maken waarmee werkstromen voor meerdere partijen worden gerepresenteerd die door configuratie en slimme-contractcode worden gedefinieerd.You can use Azure Blockchain Workbench to create blockchain applications that represent multi-party workflows defined by configuration and smart contract code.

U leert het volgende:You'll learn how to:

  • Een blockchain-toepassing configurerenConfigure a blockchain application
  • Maken van een smart contract codebestandCreate a smart contract code file
  • Een blockchain-toepassing toevoegen aan Blockchain WorkbenchAdd a blockchain application to Blockchain Workbench
  • Leden toevoegen aan de blockchain-toepassingAdd members to the blockchain application

Als u geen Azure-abonnement hebt, maakt u een gratis account voordat u begint.If you don't have an Azure subscription, create a free account before you begin.

VereistenPrerequisites

Hallo Blockchain.Hello, Blockchain!

We maken een eenvoudige toepassing waarin een aanvrager een aanvraag verzendt en een eindpunt een antwoord verzendt op deze aanvraag.Let's build a basic application in which a requestor sends a request and a responder send a response to the request. Een aanvraag kan bijvoorbeeld zijn, "Hallo, hoe gaat het?", en het antwoord kan worden, "Het gaat geweldig!".For example, a request can be, "Hello, how are you?", and the response can be, "I'm great!". Zowel de aanvraag als het antwoord worden op de onderliggende blockchain geregistreerd.Both the request and the response are recorded on the underlying blockchain.

Volg de stappen voor het maken van bestanden voor de toepassing of u kunt deze downloaden van het voorbeeld uit GitHub.Follow the steps to create the application files or you can download the sample from GitHub.

ConfiguratiebestandConfiguration file

Metagegevens van de configuratie definieren de werkstromen op hoog niveau en het model van de interactie van de blockchain-toepassing.Configuration metadata defines the high-level workflows and interaction model of the blockchain application. Metagegevens van de configuratie beschrijven de fasen van de werkstroom en het model van de interactie van de blockchain-toepassing.Configuration metadata represents the workflow stages and interaction model of the blockchain application.

  1. Maak een bestand met de naam HelloBlockchain.json in uw favoriete editor.In your favorite editor, create a file named HelloBlockchain.json.

  2. Plaats in dit bestand de volgende JSON voor het definiëren van de configuratie van de blockchain-toepassing.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. Sla het bestand HelloBlockchain.json op.Save the HelloBlockchain.json file.

Het configuratiebestand heeft meerdere secties.The configuration file has several sections. De details over de secties zijn als volgt:Details about each section are as follows:

ToepassingsmetagegevensApplication metadata

het begin van het configuratiebestand bevat informatie over de toepassing, waaronder de naam en een beschrijving.The beginning of the configuration file contains information about the application including application name and description.

ToepassingsrollenApplication roles

Het gedeelte van de toepassingsrollen definieert de gebruikersrollen die kunnen deelnemen in de blockchain-toepassing.The application roles section defines the user roles who can act or participate within the blockchain application. U definieert een verzameling afzonderlijke rollen over functionaliteit.You define a set of distinct roles based on functionality. In het scenario voor request-response is er een verschil tussen de functionaliteit van een aanvrager als een entiteit die aanvragen genereert en een eindpunt als een entiteit die antwoorden produceert.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.

WerkstromenWorkflows

Met werkstromen worden een of meer fasen en acties van het contract gedefinieerd.Workflows define one or more stages and actions of the contract. In het request-response scenario is de eerste fase (status) van de werkstroom dat een aanvrager (rol) een actie (overgang) onderneemt om een aanvraag (functie) te verzenden.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). De volgende fase (status) is dat een eindpunt (rol) een actie (overgang) onderneemt om een antwoord (functie) te verzenden.The next stage (state) is a responder (role) takes an action (transition) to send a response (function). De werkstroom van een toepassing kan betrekking hebben op eigenschappen, functies, en statussen die vereist zijn voor het beschrijven van de werkstroom van een contract.An application's workflow can involve properties, functions, and states required describe the flow of a contract.

Zie Naslaginformatie over Azure Blockchain Workbench-configuratie voor meer informatie over de inhoud van configuratiebestanden.For more information about the contents of configuration files, see Azure Blockchain Workflow configuration reference.

Smart contract codebestandSmart contract code file

Smart contracts vertegenwoordigen de zakelijke logica van de blockchain-toepassing.Smart contracts represent the business logic of the blockchain application. Op dit moment ondersteunt Blockchain Workbench Ethereum voor het blockchain-grootboek.Currently, Blockchain Workbench supports Ethereum for the blockchain ledger. Ethereum maakt gebruik van Solidity als programmeertaal voor het schrijven van zelf uitvoerende zakelijke logica voor smart contracts.Ethereum uses Solidity as its programming language for writing self-enforcing business logic for smart contracts.

Smart contracts in Solidity zijn vergelijkbaar met de klassen in objectgeoriënteerde talen.Smart contracts in Solidity are similar to classes in object-oriented languages. Elke opdracht bevat functies voor het implementeren van fasen en acties van het smart contract.Each contract contains state and functions to implement stages and actions of the smart contract.

Maak een bestand met de naam HelloBlockchain.sol in uw favoriete editor.In your favorite editor, create a file called HelloBlockchain.sol.

VersiepragmaVersion pragma

Als een best practice geeft u de versie op van Solidity waarmee u ontwikkelt.As a best practice, indicate the version of Solidity you are targeting. Door de versie op te geven kunt u compatibiliteitsproblemen met toekomstige versies van Solidity voorkomen.Specifying the version helps avoid incompatibilities with future Solidity versions.

Voeg de volgende versiepragma toe aan de bovenkant van bestand HelloBlockchain.sol met de slimme-contractcode.Add the following version pragma at the top of HelloBlockchain.sol smart contract code file.

pragma solidity >=0.4.25 <0.6.0;

Relatie tussen configuratie en slimme-contractcodeConfiguration and smart contract code relationship

Blockchain Workbench maakt gebruik van het configuratiebestand en het smart contract codebestand om een blockchain-toepassing te maken.Blockchain Workbench uses the configuration file and smart contract code file to create a blockchain application. Er is een relatie tussen wat gedefinieerd is in de configuratie en de code in het smart contract.There is a relationship between what is defined in the configuration and the code in the smart contract. Details van het contract, functies, parameters en typen moeten overeenkomen om de toepassing te maken.Contract details, functions, parameters, and types are required to match to create the application. Blockchain Workbench verifieert de bestanden voordat de toepassing wordt gemaakt.Blockchain Workbench verifies the files prior to application creation.

ContractContract

Voeg de kop van het contract toe aan bestand HelloBlockchain.sol met de slimme-contractcode.Add the contract header to your HelloBlockchain.sol smart contract code file.

contract HelloBlockchain {

StatusvariabelenState variables

Status-variabelen bewaren de status van elke instantie van het contract.State variables store values of the state for each contract instance. De status-variabelen in uw contract moeten overeenkomen met de werkstroomeigenschappen die zijn gedefinieerd in het configuratiebestand.The state variables in your contract must match the workflow properties defined in the configuration file.

Voeg de variabelen toe aan uw contract in uw HelloBlockchain.sol smart contract codebestand.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;

ConstructorConstructor

De constructor definieert invoerparameters voor een nieuwe instantie van een smart contract van een werkstroom.The constructor defines input parameters for a new smart contract instance of a workflow. Vereiste parameters voor de constructor worden gedefinieerd als parameters van de constructor in het configuratiebestand.Required parameters for the constructor are defined as constructor parameters in the configuration file. Het aantal, de volgorde en het type van de parameters moeten overeenkomen in beide bestanden.The number, order, and type of parameters must match in both files.

In de constructorfunctie schrijft u eventuele bedrijfslogica die u wilt uitvoeren voordat het contract gemaakt wordt.In the constructor function, write any business logic you want to perform prior to creating the contract. Initialiseer bijvoorbeeld de statusvariabelen met beginwaarden.For example, initialize the state variables with starting values.

Voeg de constructorfunctie toe aan uw contract in bestand HelloBlockchain.sol voor de slimme-contractcode.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;
    }

FunctionsFunctions

Functies zijn de uitvoerbare eenheden van de bedrijfslogica in een contract.Functions are the executable units of business logic within a contract. Vereiste parameters voor de functie worden in het configuratiebestand gedefinieerd als functieparameters.Required parameters for the function are defined as function parameters in the configuration file. Het aantal, de volgorde en het type van de parameters moeten overeenkomen in beide bestanden.The number, order, and type of parameters must match in both files. Functies zijn gekoppeld aan de overgangen in een Blockchain Workbench-workflow zoals gedefinieerd in het configuratiebestand.Functions are associated to transitions in a Blockchain Workbench workflow in the configuration file. Een overgang is een actie die wordt uitgevoerd om naar de volgende fase van de werkstroom te gaan van een toepassing zoals is bepaald door het contract.A transition is an action performed to move to the next stage of an application's workflow as determined by the contract.

U kunt elke bedrijfslogica laten uitvoeren in de functie.Write any business logic you want to perform in the function. Bijvoorbeeld het wijzigen van de waarde van een variabele.For example, modifying a state variable's value.

  1. Voeg de volgende functies toe aan uw contract in bestand HelloBlockchain.sol voor de slimme-contractcode.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. Sla uw HelloBlockchain.sol smart contract codebestand op.Save your HelloBlockchain.sol smart contract code file.

Blockchain-toepassing toevoegen aan Blockchain WorkbenchAdd blockchain application to Blockchain Workbench

Als u een blockchain-toepassing wilt toevoegen aan Blockchain Workbench, uploadt u de configuratie en smart contractbestanden voor het definiëren van de toepassing.To add a blockchain application to Blockchain Workbench, you upload the configuration and smart contract files to define the application.

  1. Navigeer in een webbrowser naar het webadres van Blockchain Workbench.In a web browser, navigate to the Blockchain Workbench web address. bijvoorbeeld https://{workbench URL}.azurewebsites.net/. De webtoepassing wordt gemaakt als u Blockchain Workbench implementeert.For example, https://{workbench URL}.azurewebsites.net/ The web application is created when you deploy Blockchain Workbench. Zie Web-URL van Blockchain Workbench voor informatie over waar u het webadres van Blockchain Workbench kunt vindenFor information on how to find your Blockchain Workbench web address, see Blockchain Workbench Web URL
  2. Meld u aan als een Blockchain Workbench-beheerder.Sign in as a Blockchain Workbench administrator.
  3. Selecteer Toepassingen > Nieuw.Select Applications > New. Het nieuwe toepassing deelvenster wordt weergegeven.The New application pane is displayed.
  4. Selecteer uploaden van de configuratie van het contract > Bladeren om het HelloBlockchain.json configuratiebestand dat u hebt gemaakt te vinden.Select Upload the contract configuration > Browse to locate the HelloBlockchain.json configuration file you created. Het configuratiebestand wordt automatisch gevalideerd.The configuration file is automatically validated. Selecteer de weergeven koppeling om validatiefouten weer te geven.Select the Show link to display validation errors. Los validatiefouten op voordat u de toepassing implementeert.Fix validation errors before you deploy the application.
  5. Selecteer uploaden van de Contractcode > Bladeren om het HelloBlockchain.sol smart contract codebestand te vinden.Select Upload the contract code > Browse to locate the HelloBlockchain.sol smart contract code file. Het codebestand wordt automatisch gevalideerd.The code file is automatically validated. Selecteer de weergeven koppeling om validatiefouten weer te geven.Select the Show link to display validation errors. Los validatiefouten op voordat u de toepassing implementeert.Fix validation errors before you deploy the application.
  6. Selecteer implementeren om de blockchain-toepassing op basis van de configuratie en smart contract bestanden te maken.Select Deploy to create the blockchain application based on the configuration and smart contract files.

De implementatie van de blockchain-toepassing duurt een paar minuten.Deployment of the blockchain application takes a few minutes. Wanneer de implementatie is voltooid, wordt de nieuwe toepassing weergegeven in toepassingen.When deployment is finished, the new application is displayed in Applications.

Notitie

U kunt blockchain-toepassingen ook maken met behulp van de REST API voor Azure Blockchain Workbench.You can also create blockchain applications by using the Azure Blockchain Workbench REST API.

Leden voor blockchain-toepassing toevoegenAdd blockchain application members

Voeg leden van de toepassing toe aan uw toepassing om acties in het contract te starten en uit te voeren.Add application members to your application to initiate and take actions on contracts. Om leden van de toepassing toe te voegen moet u een Blockchain Workbench beheerder zijn.To add application members, you need to be a Blockchain Workbench administrator.

  1. Selecteer Toepassingen > Hallo Blockchain. .Select Applications > Hello, Blockchain!.
  2. Het aantal leden dat is gekoppeld aan de toepassing wordt weergegeven in de rechterbovenhoek van de pagina.The number of members associated to the application is displayed in the upper right corner of the page. Voor een nieuwe toepassing zal het aantal leden nul zijn.For a new application, the number of members will be zero.
  3. Selecteer de koppeling leden in de rechterbovenhoek van de pagina.Select the members link in the upper right corner of the page. De huidige ledenlijst voor de toepassing wordt weergegeven.A current list of members for the application is displayed.
  4. Selecteer Leden toevoegen in de ledenlijst.In the membership list, select Add members.
  5. Selecteer of typ de naam van het lid dat u wilt toevoegen.Select or enter the member's name you want to add. Alleen Azure AD-gebruikers die voorkomen in de Blockchain Workbench-tenant staan vermeld.Only Azure AD users that exist in the Blockchain Workbench tenant are listed. Als de gebruiker niet wordt gevonden, moet u deze Azure AD-gebruikers toevoegen.If the user is not found, you need to add Azure AD users.
  6. Selecteer de Rol voor het lid.Select the Role for the member. Voor het eerste lid selecteert u Aanvrager als de rol.For the first member, select Requestor as the role.
  7. Selecteer toevoegen om het lid met de bijbehorende functieservices toe te voegen aan de toepassing.Select Add to add the member with the associated role to the application.
  8. Voeg een ander lid toe aan de toepassing met de Responder rol.Add another member to the application with the Responder role.

Zie Gebruikers beheren in Azure Blockchain Workbench voor meer informatie over het beheren van gebruikers in Blockchain WorkbenchFor more information about managing users in Blockchain Workbench, see managing users in Azure Blockchain Workbench

Volgende stappenNext steps

In dit artikel met instructies hebt u een eenvoudige toepassing voor aanvraag en respons gemaakt.In this how-to article, you've created a basic request and response application. Voor informatie over het gebruik van de toepassing, ga door naar het volgende how-to artikel.To learn how to use the application, continue to the next how-to article.