_____________________________
< Azure Blockchain Workbench! >
-----------------------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
Fonte: https://101blockchains.com/azure-blockchain/
A Microsoft é líder em tecnologia com raízes na tecnologia de nuvem. Sua plataforma de nuvem do Azure provou seu domínio. Mas, a Microsoft sabia que eles têm um papel mais importante a desempenhar no mercado. É aí que entram os aplicativos Azure Blockchain e Azure Blockchain. Também podemos chamar de "Blockchain no Azure".
Se você é novo no blockchain, pode ficar confuso com os termos. Ou talvez você ache que o BaaS do Azure e a tecnologia blockchain são iguais? Mas isso não é verdade.
Blockchain é a tecnologia que possui recursos como transparência, integridade, descentralização e assim por diante. No entanto, existem diferentes tipos de blockchain, incluindo híbrido, privado, etc. Mas, um verdadeiro blockchain é dedicado principalmente ao fato de executar uma rede verdadeiramente descentralizada, e não a variações dela. A verdadeira ideia de blockchain surgiu com o bitcoin. É um acúmulo de rede completamente descentralizado de nós que cuida do consenso geral.
O Blockchain como serviço (BaaS) do Azure, por outro lado, usa a tecnologia blockchain e presta serviço aos seus clientes. No entanto, sua abordagem não é descentralizada. O BaaS é totalmente o oposto do descentralizado, pois oferece uma plataforma centralizada para vender, construir e comercializar blockchain. O BaaS como um ecossistema fornece valor, mas, para fazer isso, tem que ir contra a idéia básica da blockchain descentralizada.
No momento da redação deste artigo, o Serviço Blockchain do Azure oferece suporte ao Ethereum Quorum Ledger, Corda e Hyperledger Fabric. Como empresa, você não precisa gerenciar o razão. Além disso, não há custo associado ao próprio razão. No entanto, você precisa pagar pelo desenvolvimento do aplicativo e seu custo quando ele é executado na blockchain. Você obterá máquinas virtuais e a infraestrutura associada alocando os recursos e tempo necessários.
A visualização do Azure Blockchain Workbench é uma coleção de serviços e recursos do Azure projetados para ajudá-lo a criar e implantar aplicativos blockchain para compartilhar dados e processos de negócios com outras organizações
- Conta gratuita: Free Azure Trial: http://azure.microsoft.com/en-us/free/
- Clique em Marketplace > Azure Marketplace e na busca procure por: Azure Blockchain Workbench
- Em Azure Blockchain Workbench clique no botão Create.
__________________________________
/ Funcionou apenas com a Location: \
\ Southeast Asia! /
----------------------------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
Configuração | Descrição |
---|---|
Prefixo do recurso | Identificador único curto para sua implantação. Este valor é usado como base para nomear recursos. |
Nome de usuário da VM | O nome do usuário é usado como administrador para todas as máquinas virtuais (VM). |
Tipo de Autenticação | Selecione se deseja usar uma senha ou chave para conectar-se às VMs. |
Senha | A senha é usada para conectar-se às VMs. |
SSH | Use uma chave pública RSA no formato de linha única começando com ssh-rsa ou use o formato PEM de várias linhas. Você pode gerar chaves SSH usando ssh-keygen no Linux e OS X ou usando PuTTYGen no Windows. Mais informações sobre as chaves SSH, consulte Como usar chaves SSH com o Windows Azure . |
Senha do banco de dados e Blockchain | Especifique a senha a ser usada para acessar o banco de dados criado como parte da implantação. A senha deve atender a três dos quatro requisitos a seguir: o comprimento precisa ter entre 12 e 72 caracteres, 1 caractere em minúscula, 1 caractere em maiúscula, 1 número e 1 caractere especial que não é sinal de número (#), porcentagem (% ), vírgula (,), estrela (*), aspas (`), aspas duplas ("), aspas simples ('), traço (-) e semicoluna (;) |
Região de implantação | Especifique onde implantar os recursos do Blockchain Workbench. Para uma melhor disponibilidade, isso deve corresponder à configuração do local . |
Inscrição | Especifique a assinatura do Azure que você deseja usar para sua implantação. |
Grupos de recursos | Crie um novo grupo de recursos selecionando Criar novo e especifique um nome exclusivo para o grupo de recursos. |
Localização | Especifique a região que você deseja implantar a estrutura. |
- Subscription: Azure para Estudantes
- Resource group: pugafiapasiarg
- Location: Southeast Asia
- Resource prefix: pugafiap1
- VM user name: pugavm1
Configuração | Descrição |
---|---|
Camada de preços do Serviço Blockchain do Azure | Escolha a camada básica ou padrão do Serviço Blockchain do Azure usada para o Blockchain Workbench |
Configurações do Azure Active Directory | Escolha Adicionar mais tarde . Nota: Se você optar por pré-configurar o Azure AD ou estiver reimplantando, escolha Adicionar agora . |
Seleção de VM | Selecione o desempenho de armazenamento preferido e o tamanho da VM para sua rede blockchain. Escolha um tamanho de VM menor, como o Standard DS1 v2, se você estiver em uma assinatura com baixos limites de serviço, como o nível gratuito do Azure. |
- Create new
- Azure Blockchain Service Pricing Tier: Basic
- Azure Active Directory Settings: Add Later
- VM selection: 1x Standard DS1 v2 (1 vcpu, 3.5 GiB memory)
____________________________________
/ WTF? 90min??? Tempo pra ler a \
\ documentação não vai faltar LOL /
------------------------------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
NOTA: A implantação pode levar até 90 minutos. Maiores informações, acesse: https://docs.microsoft.com/en-us/azure/blockchain/workbench/deploy
- Portal
- Resource groups
- Filtrar por: App Services
- Copiar URL e colocar no Chrome
- Launch Bash (escolha ao gosto do cliente Bash ou PowerSheel)
________________________________________
< Agora, vamos no Azure Active Directory >
----------------------------------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
-
Portal
-
Azure Active Directory
-
App registrations (se não tiver o seu na lista, vamos criar um novo)
-
New Registration an application
-
Name: puga-fiap-asia-api
-
Support account types
-
Who can use this application or access this API?
(x) Accounts in this organizational directory only (Fiap-Faculdade de Informática e Administração Paulista only - Single tenant)
-
-
-
Clicar em Registrar
-
Dentro da Api criada clique em Api Permissions.
-
Add a permissions
-
Microsoft Graph
-
Delegated permissions
-
Select permissions: user
(x) User.Read.All
-
https://guidgenerator.com/online-guid-generator.aspx
d0b89f8a-d88e-4028-a7e3-bf97bb7ff543
- Adicionar na linha 8:
"appRoles": [
{
"allowedMemberTypes": [
"User",
"Application"
],
"displayName": "Administrator",
"id": "<GUID>",
"isEnabled": true,
"description": "Blockchain Workbench administrator role allows creation of applications, user to role assignments, etc.",
"value": "Administrator"
}
],
- Alterar a linha 19 Oauth2AllowImplicitFlow de
false
paratrue
:
Subscription ID: d1aa1416-3251-4a6c-94b0-2bc5b3b85267
Step 1. Launch Cloud Shell and run the following command:
cd; Invoke-WebRequest -Uri https://aka.ms/workbenchAADSetupScript -OutFile workbenchAADSetupScript.ps1; ./workbenchAADSetupScript.ps1 -SubscriptionID d1aa1416-3251-4a6c-94b0-2bc5b3b85267 -ResourceGroupName pugafiapasiarg -DeploymentId a66efz
Type "az" to use Azure CLI
Type "help" to learn about Cloud Shell
MOTD: Modules installed with 'Install-Module' are persisted across sessions
VERBOSE: Authenticating to Azure ...
VERBOSE: Building your Azure drive ...
Azure:/
PS Azure:\> ls
clouddrive workbenchAADSetupScript.ps1
Azure:/
PS Azure:\> cd; Invoke-WebRequest -Uri https://aka.ms/workbenchAADSetupScript -OutFile workbenchAADSetupScript.ps1; ./workbenchAADSetupScript.ps1 -SubscriptionID d1aa1416-3251-4a6c-94b0-2bc5b3b85267 -ResourceGroupName pugafiapasiarg -DeploymentId a66efz
Please enter the Azure Active Directory tenant you would like to use (Go to https://aka.ms/workbenchFAQ for more info): fiap.com.brWARNING: To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code AHBXVLYX2 to authenticate.INFO: Creating the AAD application
INFO: Successfully created AAD application with appId: 6f832aee-bdc0-44df-ad00-1ad23e48fd9f
INFO: Creating the Service Principal for Azure Blockchain Workbench
INFO: Adding current service principal as an admin
INFO: Successfully created role assignment
INFO: Looking for your user 'RM333257@fiap.com.br' in 'fiap.com.br' tenant
INFO: 1 user(s) were found with email 'RM333257@fiap.com.br'
INFO: Assign the current logged in user to be the owner of the Application.
INFO: Added 'RM333257@fiap.com.br' as an admin on the application
INFO: Updating your Workbench Instance with the Active Directory Application Info. This may take some time...
INFO: Attempting to update the reply URl to https://pugafiapasia-a66efz.azurewebsites.net
INFO: Waiting for changes to propagate...
INFO: Azure Active Directory Domain Name: fiap.com.br
INFO: Application Name: Azure Blockchain Workbench pugafiapasia-a66efz
INFO: Application Client Id: 6f832aee-bdc0-44df-ad00-1ad23e48fd9f
SUCCESS: Your Workbench instance was successfully provisioned. Navigate to https://pugafiapasia-a66efz.azurewebsites.net to use your instance.
INFO: Please refer to https://aka.ms/workbenchFAQ to read more about user management in Workbench.
============================================================================================================================
PS /home/renato>
- New
- Upload: HelloBlockchain.json
- Upload: HelloBlockchain.sol
- Add a member (Adicionar dois membors com seu RM da fiap)
- Requester
- Responder
- New
- New Contract:
- Request Message [ Enviando Mesangem]
- Your contract was created successfully.
pragma solidity >=0.4.25 <0.6.0;
contract HelloBlockchain
{
//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;
// constructor function
constructor(string memory message) public
{
Requestor = msg.sender;
RequestMessage = message;
State = StateType.Request;
}
// 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;
// call ContractUpdated() to record this action
ResponseMessage = responseMessage;
State = StateType.Respond;
}
}
{
"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"
}
]
}
]
}
]
- Clique no seu contrato
- Take action
- REQUEST MESSAGE
- RESPONSE MESSAGE: Tudo bem?
- Request Message: Tudo!