Kurz: Vytvoření aplikace blockchain pro Azure blockchain Workbench
Pomocí služby Azure blockchain Workbench můžete vytvářet aplikace blockchain, které reprezentují pracovní postupy s více stranami definované pomocí konfigurace a kódu inteligentní smlouvy.
Dozvíte se, jak provést tyto akce:
- Konfigurace aplikace blockchain
- Vytvořit soubor kódu inteligentního kontraktu
- Přidání aplikace blockchain do aplikace blockchain Workbench
- Přidání členů do aplikace blockchain
Pokud ještě nemáte předplatné Azure,vytvořte si bezplatný účet před tím, než začnete.
Požadavky
- Nasazení aplikace blockchain Workbench Další informace najdete v tématu nasazení Azure blockchain Workbench pro podrobnosti o nasazení.
- Azure Active Directory uživatelů v tenantovi přidružených k blockchain Workbench. Další informace najdete v tématu Přidání uživatelů Azure AD v Azure blockchain Workbench.
- Účet správce blockchain Workbench. Další informace najdete v tématu Přidání správců blockchain Workbench do Azure blockchain Workbench.
Dobrý den, blockchain!
Vytvoříme základní aplikaci, ve které žadatel pošle žádost a partnerovi pošle odpověď na požadavek. Například žádost může být "Hello, jak jste?" a odpověď může být "Skvělé!". Požadavek i odpověď se zaznamenávají na podkladové blockchainy.
Použijte postup vytvoření souborů aplikace nebo si ukázku si můžete stáhnout z GitHubu.
Konfigurační soubor
Metadata konfigurace definují pracovní postupy vysoké úrovně a model interakce aplikace blockchain. Metadata konfigurace představují fáze pracovního postupu a model interakce aplikace blockchain. Další informace o obsahu konfiguračních souborů najdete v referenčních informacích k Azure blockchain Workflow Configuration.
V oblíbeném editoru vytvořte soubor s názvem
HelloBlockchain.json.Přidejte následující JSON pro definování konfigurace aplikace blockchain.
{ "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" } ] } ] } ] }Uložte soubor
HelloBlockchain.json.
Konfigurační soubor obsahuje několik oddílů. Podrobnosti o jednotlivých oddílech jsou následující:
Metadata aplikace
Začátek konfiguračního souboru obsahuje informace o aplikaci, včetně názvu a popisu aplikace.
Aplikační role
Oddíl role aplikace definuje role uživatelů, kteří můžou pracovat s aplikací blockchain nebo se do ní zúčastnit. Můžete definovat sadu různých rolí založenou na funkcích. Ve scénáři požadavek-odpověď existuje rozdíl mezi funkcemi žadatele jako entita, která vytváří žádosti a respondér jako entita, která vytváří odpovědi.
Pracovní postupy
Pracovní postupy definují jednu nebo více fází a akcí smlouvy. Ve scénáři požadavek-odpověď je první fází (stav) pracovního postupu žadatelem (role), který odešle požadavek (funkce), provede akci (přechod). Další fáze (stav) je respondér (role), který provádí akci (přechod) k odeslání odpovědi (funkce). Pracovní postup aplikace může zahrnovat vlastnosti, funkce a stavy, které jsou nutné k popisu toku kontraktu.
Soubor kódu inteligentního kontraktu
Inteligentní kontrakty reprezentují obchodní logiku aplikace blockchain. V současné době blockchain Workbench podporuje Ethereem pro hlavní knihu blockchain. Ethereem využívá jako svůj programovací jazyk plnou zárukou pro vytváření samoobslužných obchodních logik pro inteligentní kontrakty.
Inteligentní kontrakty v hustotě jsou podobné třídám v objektově orientovaném jazyce. Každá smlouva obsahuje stav a funkce pro implementaci fází a akcí inteligentního kontraktu.
V oblíbeném editoru vytvořte soubor s názvem HelloBlockchain.sol .
Direktiva pragma verze
Osvědčeným postupem je označit verzi, na kterou cílíte. Určení verze pomáhá vyhnout se nekompatibilitě s budoucími verzemi.
Přidejte následující direktivu pragma verze v horní části HelloBlockchain.sol souboru kódu inteligentního kontraktu.
pragma solidity >=0.4.25 <0.6.0;
Vztah kódu konfigurace a inteligentního kontraktu
Blockchain Workbench používá konfigurační soubor a soubor kódu inteligentního kontraktu k vytvoření aplikace blockchain. Existuje vztah mezi tím, co je definováno v konfiguraci a kódem v rámci inteligentního kontraktu. Aby bylo možné vytvořit aplikaci, je nutné, aby odpovídaly podrobnosti kontraktu, funkce, parametry a typy. Blockchain Workbench ověřuje soubory před vytvořením aplikace.
Kontrakt
Přidejte hlavičku kontraktu do HelloBlockchain.sol souboru kódu inteligentního kontraktu.
contract HelloBlockchain {
Proměnné stavu
Proměnné stavu ukládají hodnoty stavu pro každou instanci smlouvy. Proměnné stavu ve vaší smlouvě musí odpovídat vlastnostem pracovního postupu, které jsou definovány v konfiguračním souboru.
Do svého kontraktu v HelloBlockchain.sol souboru kódu inteligentního kontraktu přidejte proměnné stavu.
//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;
Konstruktor
Konstruktor definuje vstupní parametry pro novou instanci inteligentního kontraktu pracovního postupu. Požadované parametry pro konstruktor jsou definovány jako parametry konstruktoru v konfiguračním souboru. Počet, pořadí a typ parametrů se musí shodovat v obou souborech.
Ve funkci konstruktoru napíšete jakoukoli obchodní logiku, kterou chcete provést před vytvořením smlouvy. Například inicializujte proměnné stavu pomocí počátečních hodnot.
Přidejte funkci konstruktoru do svého kontraktu do HelloBlockchain.sol souboru kódu inteligentního kontraktu.
// constructor function
constructor(string memory message) public
{
Requestor = msg.sender;
RequestMessage = message;
State = StateType.Request;
}
Functions
Funkce jsou spustitelné jednotky obchodní logiky v rámci smlouvy. Požadované parametry pro funkci jsou definovány jako parametry funkce v konfiguračním souboru. Počet, pořadí a typ parametrů se musí shodovat v obou souborech. Funkce jsou přidruženy k přechodům v pracovním postupu blockchain Workbench v konfiguračním souboru. Přechod je akce prováděná za účelem přechodu na další fázi pracovního postupu aplikace, kterou Určuje smlouva.
Napište libovolnou obchodní logiku, kterou chcete ve funkci provádět. Například úprava hodnoty proměnné stavu.
Do svého kontraktu do
HelloBlockchain.solsouboru kódu inteligentního kontraktu přidejte následující funkce.// 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; } }Uložte
HelloBlockchain.solsoubor kódu inteligentního kontraktu.
Přidání aplikace blockchain do aplikace blockchain Workbench
Pokud chcete přidat aplikaci blockchain do aplikace blockchain Workbench, nahrajete soubory konfigurace a inteligentních smluv pro definování aplikace.
- Ve webovém prohlížeči přejděte na webovou adresu blockchain Workbench. Například
https://{workbench URL}.azurewebsites.net/Webová aplikace je vytvořena při nasazení aplikace blockchain Workbench. Informace o tom, jak najít webovou adresu blockchain Workbench, najdete v tématu Webová adresa URL služby blockchain Workbench . - Přihlaste se jako správce aplikace blockchain Workbench.
- Vyberte aplikace > nové. Zobrazí se podokno Nová aplikace .
- Vyberte možnost nahrát konfiguraci smlouvy > Procházet a vyhledejte HelloBlockchain.js konfiguračního souboru, který jste vytvořili. Konfigurační soubor je automaticky ověřen. Vyberte odkaz Zobrazit pro zobrazení chyb ověřování. Před nasazením aplikace opravte chyby ověřování.
- Vyberte Odeslat kód kontraktu > a vyhledejte soubor kódu inteligentní kontraktu HelloBlockchain. Sol . Soubor kódu je automaticky ověřen. Vyberte odkaz Zobrazit pro zobrazení chyb ověřování. Před nasazením aplikace opravte chyby ověřování.
- Vyberte nasadit a vytvořte tak aplikaci blockchain založenou na konfiguračních a inteligentních souborech smluv.
Nasazení aplikace blockchain trvá několik minut. Po dokončení nasazení se v aplikacích zobrazí nová aplikace.
Poznámka
Blockchain aplikace můžete vytvářet také pomocí REST API Azure blockchain Workbench.
Přidat členy aplikace blockchain
Přidejte do své aplikace členy aplikace, abyste mohli iniciovat a provádět akce s kontrakty. Chcete-li přidat členy aplikace, musíte být správcem aplikace blockchain Workbench.
- Vyberte aplikace > Hello, blockchain!.
- Počet členů přidružených k aplikaci se zobrazí v pravém horním rohu stránky. U nové aplikace bude počet členů nula.
- V pravém horním rohu stránky vyberte odkaz Členové . Zobrazí se aktuální seznam členů pro aplikaci.
- V seznamu členství vyberte přidat členy.
- Vyberte nebo zadejte název člena, který chcete přidat. V seznamu jsou uvedeni pouze uživatelé Azure AD, kteří existují v tenantovi blockchain Workbench. Pokud uživatel není nalezen, je nutné Přidat uživatele Azure AD.
- Vyberte roli člena. Jako první člen vyberte žadatele jako roli.
- Výběrem Přidat přidejte člena s přidruženou rolí do aplikace.
- Přidejte do aplikace jiného člena s rolí odpovídajícího .
Další informace o správě uživatelů v blockchain Workbench najdete v tématu Správa uživatelů v Azure blockchain Workbench .
Další kroky
V tomto článku se naučíte vytvořit základní aplikaci pro žádosti a odpověď. Pokud se chcete dozvědět, jak aplikaci používat, přejděte k dalšímu článku s postupem.