Solução Hackathon
Esta é uma rápida olhada em como resolver o mini hackathon de 24 horas que lançamos na semana passada. Para alguns de vocês, este foi o primeiro trecho de código que escreveram, então, para aqueles que ficaram aquém, aqui está um guia rápido sobre o que você precisava fazer para resolver o problema.
O problema
O hackathon solicitou que você retirasse exatamente “1 mHOPR” de um nó que havia exposto suas credenciais : “API URL” e “API KEY”.
A API KEY que foi “exposta” era, na verdade, uma chave criada usando o novo recurso de API baseado em capacidade para gerar um token que permitiria acessar apenas o endpoint “accountWithdraw” do nó no nível da API.
Solução Conceitual
Para se comunicar com um nó HOPR ou com outro dispositivo em geral, você precisa de duas coisas:
- Um endpoint para enviar suas instruções/solicitações
- Uma maneira de estruturar suas instruções para que o dispositivo as entenda (a API relevante)
O que você precisava encontrar
Você recebeu as informações necessárias para usar a API “accountWithdraw”, portanto, a primeira etapa foi localizá-las na documentação do HOPR em:https://docs.hoprnet.org/developers/rest-api
As duas primeiras coisas que você precisava encontrar aqui eram:
- O sufixo do endpoint é “/api/v2/account/withdraw”
- A chave de API é adicionada como um parâmetro de cabeçalho
- Envie a solicitação para “http://142.93.5.175:3001/api/v2/account/withdraw"
- No cabeçalho da solicitação, adicione x-auth-token=PZjS7imRpmoPNziYF7–2kCGvG-UfaG1XsdiKEMApGV4
- É um pedido “POST”
Em seguida, você precisa descobrir o que incluir em sua solicitação. Aqui você pode ver que há três parâmetros, todos obrigatórios.
- Moeda: pode ser “HOPR” ou “NATIVE” com essa grafia exata. Estamos tentando retirar tokens Hopr, então precisaríamos definir isso como: “HOPR”.
- Valor: um número contado na menor unidade dessa moeda. Os tokens HOPR têm 18 casas decimais, portanto, 1 token HOPR/mHOPR seria solicitado como “1000000000000000000”.
- Destinatário: este é apenas o endereço da carteira para a qual você deseja retirar seus fundos.
API_URL = “http://142.93.5.175:3001/api/v2/account/withdraw"
headers = {
‘x-auth-token’: “PZjS7imRpmoPNziYF7–2kCGvG-UfaG1XsdiKEMApGV4”
}
payload = {
“amount”: “1000000000000000000”,
“currency”: “HOPR”,
“recipient”: “YOUR_WALLET_ADDRESS”
}
Como fazer esta solicitação
Aqui estão alguns exemplos rápidos de como fazer essa solicitação, mas você pode usar qualquer linguagem de codificação ou plataforma de API.
Observação:
- Adicionei a chave/valor do cabeçalho: 'Content-Type': 'application/json' apenas para uma boa prática.
- Não há endereço de carteira adicionado e o token de segurança do hackathon agora expirou, então você precisa substituir as credenciais de trabalho para usar esses métodos agora.
Você pode enviar a solicitação por meio de seu terminal usando curl, semelhante ao seguinte.
curl -X POST http://142.93.5.175:3001/api/v2/account/withdraw \
-H "Content-Type: application/json" \
-H "x-auth-token: PZjS7imRpmoPNziYF7-2kCGvG-UfaG1XsdiKEMApGV4" \
-d '{"amount": "1000000000000000000", "currency": "HOPR", "recipient": "YOUR_WALLET_ADDRESS"}'
Você pode enviar a solicitação usando uma plataforma de API como Postman em seu navegador/desktop. Com o postman, você precisaria criar uma nova solicitação “POST” para o endpoint correto e adicionar os valores ao cabeçalho e corpo da solicitação conforme abaixo.
Usando Python
Com python, você pode formatar uma solicitação de forma semelhante usando as bibliotecas json/requests.
import requests
import json
api_key = 'FBg4ns - 2RHeNsB754tx5uM8v9lVXLSnN7IiSEVl09I'
api_url = "http://142.93.5.175:3001/api/v2/account/withdraw"
payload = json.dumps({
"amount": "1000000000000000000",
"currency": "HOPR",
"recipient": "0x5E14F9ba0F2aa3D3A11cF2823d0E45F0636a8baf"
})
headers = {
'x-auth-token': api_key,
'Content-Type': 'application/json'
}
response = requests.request("POST", api_url, headers=headers, data=payload)
Para fazer a requisição usando JavaScript e Node.js, você precisará instalar o pacote node-fetch:
npm install node-fetch
const fetch = require(‘node-fetch’);
const API_URL = 'http://142.93.5.175:3001/api/v2/account/withdraw';
const headers = {
'Content-Type': 'application/json',
'x-auth-token': 'PZjS7imRpmoPNziYF7–2kCGvG-UfaG1XsdiKEMApGV4',
};
const payload = {
amount: '1000000000000000000',
currency: 'HOPR',
recipient: 'YOUR_WALLET_ADDRESS',
};
fetch(API_URL, {
method: 'POST',
headers: headers,
body: JSON.stringify(payload),
})
.then((response) => response.json())
.then((data) => console.log(data))
.catch((error) => console.error('Error:', error));
node withdraw.js
Conhecimento transferível
Independentemente do seu método, a principal conclusão é como interagir conceitualmente com um nó HOPR. Se você entender o básico dessa lógica de solicitação/resposta, poderá criar qualquer aplicativo com HOPR usando qualquer linguagem.
De scripts simples a navegadores, jogos ou serviços complexos, os recursos de privacidade que o HOPR oferece existem na camada de mensagens, portanto, são aditivos a qualquer aplicativo que você desenvolver. Se você é novo no ecossistema, comece simplesmente executando um nó HOPR ou explore o primeiro serviço comercial desenvolvido no HOPR: RPCh.
Lógica de solicitação/resposta
Essa lógica de solicitação/resposta é fundamental na computação e não é novidade, mas também é a base de algumas das maiores preocupações com a privacidade na Internet.
Basta dar uma olhada neste problema de hackathon. Fazer a solicitação ao nó exposto exigia a transmissão de alguns detalhes: o token, o valor e o endereço de recebimento.
Agora imagine um cenário semelhante para tudo o que você faz online, expandindo uma imagem, clicando em um botão, navegando em um produto. Cada uma dessas pequenas ações requer comunicação entre dispositivos (solicitações/respostas).
O problema surge quando todos esses pequenos detalhes e ações são marcados com data e hora e marcados com sua identidade (endereço IP), e alguém pode sentar lá e ver praticamente tudo que você faz online e exatamente como você gasta seu tempo. É exatamente tão ruim assim toda vez que você usa sua carteira criptográfica. Você está expondo cada solicitação que faz e seu endereço IP ao seu provedor RPC. Esse é o mesmo tipo de processamento de dados centralizado que tornou a Web 2.0 tão atormentada pela coleta de dados.
E também é o problema exato que o RPCh resolve.
Sebastian Bürgel,
fundador do HOPR
Local na rede Internet:https://rpch.net
Execute o RPCh Alpha gratuitamente:https://access.rpch.net/
Twitter:https://twitter.com/RPC_h_
Discórdia:https://discord.gg/VRyTQTNBTy
Desenvolvido por HOPR:https://hoprnet.org/





































![O que é uma lista vinculada, afinal? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)