Craquer le code : résoudre le mini hackathon de 24 heures
Ceci est un aperçu rapide de la façon de résoudre le mini hackathon de 24 heures que nous avons publié la semaine dernière. Pour certains d'entre vous, c'était même le premier morceau de code que vous ayez jamais écrit, donc pour ceux qui n'ont pas réussi, voici un guide rapide sur ce que vous deviez faire pour résoudre le problème.
Le problème
Le hackathon vous demandait de retirer exactement « 1 mHOPR » d'un nœud qui avait exposé ses identifiants : « API URL » & « API KEY ».
La CLÉ API qui a été "exposée" était en fait une clé créée à l'aide de la nouvelle fonctionnalité API basée sur les capacités pour générer un jeton qui vous permettrait uniquement d'accéder au point de terminaison "accountWithdraw" du nœud au niveau de l'API.
Solution conceptuelle
Pour communiquer avec un nœud HOPR ou vers un autre appareil en général, vous avez besoin de deux choses :
- Un terminal auquel envoyer vos instructions/demandes
- Un moyen de structurer vos instructions, afin que l'appareil les comprenne (l'API correspondante)
Ce que vous deviez trouver
Vous avez reçu les informations dont vous aviez besoin pour utiliser l'API "accountWithdraw". La première étape a donc consisté à les localiser dans la documentation HOPR à :https://docs.hoprnet.org/developers/rest-api
Les deux premières choses que vous deviez trouver ici étaient :
- Le suffixe du point de terminaison est "/api/v2/account/withdraw"
- La clé API est ajoutée en tant que paramètre d'en-tête
- Envoyez la demande à "http://142.93.5.175:3001/api/v2/account/withdraw"
- Dans l'en-tête de la requête, ajoutez x-auth-token=PZjS7imRpmoPNziYF7–2kCGvG-UfaG1XsdiKEMApGV4
- Il s'agit d'une requête "POST"
Ensuite, vous devez trouver ce qu'il faut inclure dans votre demande. Ici, vous pouvez voir qu'il y a trois paramètres, qui sont tous obligatoires.
- Devise : peut être « HOPR » ou « NATIVE » avec cette orthographe exacte. Nous essayons de retirer les jetons Hopr, nous aurions donc besoin de le définir sur : "HOPR".
- Montant : un nombre compté dans la plus petite unité de cette devise. Les jetons HOPR ont 18 décimales, donc 1 jeton HOPR/mHOPR serait demandé comme "1000000000000000000".
- Destinataire : il s'agit simplement de l'adresse du portefeuille vers laquelle vous souhaitez retirer vos fonds.
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”
}
Comment faire cette demande
Voici quelques exemples rapides de la façon de faire cette demande, mais vous pouvez utiliser n'importe quel langage de codage ou plate-forme API.
Note:
- J'ai ajouté la clé/valeur d'en-tête : 'Content-Type' : 'application/json' juste pour les bonnes pratiques.
- Il n'y a pas d'adresse de portefeuille ajoutée et le jeton de sécurité du hackathon est maintenant expiré, vous devrez donc remplacer les informations d'identification de travail pour utiliser ces méthodes maintenant.
Vous pouvez envoyer la demande via votre terminal en utilisant curl, similaire à ce qui suit.
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"}'
Vous pouvez envoyer la demande à l'aide d'une plate-forme API telle que Postman sur votre navigateur/bureau. Avec postman, vous devez créer une nouvelle demande "POST" au bon point de terminaison et ajouter les valeurs à l'en-tête et au corps de la demande comme ci-dessous.
Utiliser Python
Avec python, vous pouvez également formater une requête en utilisant les bibliothèques 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)
Pour effectuer la requête à l'aide de JavaScript et de Node.js, vous devez installer le package 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
Connaissances transférables
Quelle que soit votre méthode, la clé à retenir est de savoir comment interagir conceptuellement avec un nœud HOPR. Si vous comprenez les bases de cette logique de requête/réponse, vous pouvez créer n'importe quelle application avec HOPR en utilisant n'importe quel langage.
Qu'il s'agisse de simples scripts, de navigateurs, de jeux ou de services complexes, les fonctionnalités de confidentialité proposées par HOPR existent au niveau de la messagerie, elles s'ajoutent donc à toute application que vous développez. Si vous êtes nouveau dans l'écosystème, commencez simplement par exécuter un nœud HOPR ou explorez le premier service commercial développé sur HOPR : RPCh.
Logique de requête/réponse
Cette logique de requête/réponse est fondamentale en informatique et n'a rien de nouveau, mais elle est également à la base de certains des plus grands problèmes de confidentialité sur Internet.
Jetez un œil à ce problème de hackathon. Faire la demande au nœud exposé nécessitait de transmettre une poignée de détails : le jeton, le montant et l'adresse de réception.
Imaginez maintenant un scénario similaire pour tout ce que vous faites en ligne, développer une image, cliquer sur un bouton, parcourir un produit. Chacune de ces petites actions nécessite une communication entre les appareils (requêtes/réponses).
Le problème survient lorsque tous ces petits détails et actions sont horodatés et étiquetés avec votre identité (adresse IP), et que quelqu'un peut s'asseoir là et voir à peu près tout ce que vous faites en ligne et exactement comment vous passez votre temps. C'est précisément ce mal chaque fois que vous utilisez votre portefeuille crypto, car vous exposez chaque demande que vous faites et votre adresse IP à votre fournisseur RPC. C'est le même type de traitement de données centralisé qui a rendu le Web 2.0 si en proie à la collecte de données en premier lieu.
Et c'est aussi le problème exact que RPCh résout.
Sebastian Bürgel,
fondateur de HOPR
Site Internet:https://rpch.net
Exécutez RPCh Alpha gratuitement :https://access.rpch.net/
Twitter:https://twitter.com/RPC_h_
Discorde:https://discord.gg/VRyTQTNBTy
Propulsé par HOPR :https://hoprnet.org/
![Qu'est-ce qu'une liste liée, de toute façon? [Partie 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































