a
a
Weather:
city not found
HomeBitcoinExplorer Ethereum avec Raspberry Pi

Explorer Ethereum avec Raspberry Pi

Installer et exécuter un client blockchain Ethereum sur un Pi 3 modèle B.

La blockchain est un sujet incroyablement brûlant en ce moment et cela depuis un certain temps, en grande partie en raison de la richesse que les crypto-monnaies – principalement Bitcoin – ont apparemment générées du jour au lendemain pour leurs premiers utilisateurs, ainsi que de nouvelles possibilités économiques qui s’ouvrent. .

Cependant, la blockchain peut être utilisée pour beaucoup plus que les crypto-monnaies, et comme Greig l’a noté dans son récent article, sa nature distribuée et sa capacité à vérifier les transactions pour des enregistrements infalsifiables la prête à être utilisée dans les applications IoT. Ce qui est intéressant à propos de la plate-forme Ethereum, c’est qu’elle va au-delà de la simple protection de la crypto-monnaie et des transactions pour fournir une plate-forme informatique distribuée.

Dans cet article, nous examinerons rapidement l’architecture Ethereum et tenterons de couvrir certains des principaux concepts et composants, avant de procéder à l’installation du logiciel client sur un Raspberry Pi. Juste pour être clair: nous n’allons pas exploiter de crypto-monnaie, car vous avez vraiment besoin d’un GPU puissant pour cela, mais un Pi peut être utilisé pour créer un simple bac à sable pour l’expérimentation – et cela prouve également qu’il est vraiment possible de déployer la blockchain technologie avec plates-formes intégrées.

Ethereum 101

contract mortal {
    /* Define variable owner of the type address */
    address owner;

    /* This function is executed at initialization and sets the owner of the contract */
    function mortal() { owner = msg.sender; }

    /* Function to recover the funds on the contract */
    function kill() { if (msg.sender == owner) selfdestruct(owner); }
}

contract greeter is mortal {
    /* Define variable greeting of the type string */
    string greeting;
    
    /* This runs when the contract is executed */
    function greeter(string _greeting) public {
        greeting = _greeting;
    }

    /* Main function */
    function greet() constant returns (string) {
        return greeting;
    }
}

UNEn exemple de contrat intelligent Ethereum. Source: ethereum.org.

Une blockchain est un registre distribué qui est généralement géré via un réseau peer-to-peer et dont la taille augmente régulièrement à mesure que de plus en plus d’enregistrements ou de blocs sont ajoutés successivement. Les blocs contiennent généralement un horodatage avec les données de transaction et sont protégés cryptographiquement par des algorithmes de hachage, de sorte qu’une fois les données enregistrées, elles ne peuvent pas être modifiées: elles sont immuable.

La plate-forme Ethereum a sa propre crypto-monnaie, appelée éther, mais il s’appuie également sur la technologie blockchain pour créer une plateforme décentralisée pour contrats intelligents des objets qui contiennent des fonctions de code et qui vivent sur la blockchain et sont capables d’interagir avec d’autres contrats, de prendre des décisions, de stocker des données et d’envoyer de l’éther à d’autres.

Les contrats intelligents sont mis en œuvre dans un langage appelé Solidity, basé sur JavaScript. Le compilateur Solidity est utilisé pour compiler des contrats intelligents en bytecode – tout comme cela est fait avec JavaScript ou par exemple du code Python, Java et Android, etc. Avant l’exécution – qui est ensuite exécutée via la machine virtuelle Ethereum (EVM). Il y a un coût associé à l’exécution des transactions dans un contrat intelligent et c’est quelque chose que nous examinerons dans un prochain article.

Il existe plusieurs applications clientes disponibles pour Ethereum, avec l’implémentation de référence d’origine, geth, écrite en Go. Certaines d’entre elles peuvent extraire l’éther et il existe même un logiciel de minage autonome. Plusieurs clients GUI et un IDE pour les applications distribuées.

En plus du principal réseau public de blockchain d’Ethereum, réseau principal, il existe également des réseaux de test pour l’expérimentation et vous pouvez également créer vos propres réseaux privés.

Installation de Geth

En supposant que vous ayez déjà installé Raspbian, si nous commençons par mettre à jour le logiciel fourni installé avec les dernières versions.

$ sudo apt-get update

$ sudo apt-get dist-upgrade

J’ai manqué de mémoire la première fois que j’ai essayé de compiler le client Ethereum, et un bon moyen de libérer de la RAM pour les tâches gourmandes en mémoire est de réduire la quantité allouée au GPU. De plus, si vous n’avez pas réellement besoin d’un bureau graphique, configurez votre système pour qu’il démarre simplement à partir de la ligne de commande.

$ sudo raspi-config
  • 3 → Démarrer
  • B1 → Bureau / CLI
  • B1 → Console
  • 7 → Avancé
  • A3 → Division de la mémoire
  • 16 (Mo)
  • Redémarrage

Ensuite, si nous installons les dépendances empaquetées.

$ sudo apt-get install git golang libgmp3-dev

Ensuite, si nous prenons les sources pour geth, l’implémentation officielle du langage Go d’un nœud Ethereum, compilez-les et copiez l’exécutable dans / usr / local / bin /.

$ mkdir src

$ cd src

$ git clone -b release/1.7 https://github.com/ethereum/go-ethereum.git

$ cd go-ethereum

$ make

$ sudo cp build/bin/geth /usr/local/bin/

Créez un compte et essayez

Premièrement, si nous utilisons geth pour créer un nouveau compte.

$ geth account new

Cela générera un nouvel ensemble de clés cryptographiques et protégera la clé privée avec un mot de passe. Notez que si vous utilisiez ce compte pour extraire la crypto-monnaie et effectuer des transactions significatives, vous devez vous assurer de sauvegarder vos clés et d’empêcher l’accès à votre clé privée.

Maintenant, commençons le nœud.

$ geth --syncmode light --cache 64 --maxpeers 12

Si nous exécutions geth sans argument, cela démarrerait un nœud et tenterait de synchroniser l’ensemble de la blockchain du réseau principal public. Ce qui, avec une taille> 50 Go et en constante augmentation, n’est peut-être pas une bonne idée sur un ordinateur embarqué. Donc, à la place, nous démarrons le nœud en mode de synchronisation légère. Cela ne récupère que les en-têtes de bloc tels qu’ils apparaissent et d’autres parties de la blockchain à la demande.

Pour forcer le nœud à quitter, appuyez simplement sur CTRL-C. Pour l’exécuter en tant que service au démarrage:

$ sudo vi /etc/systemd/system/geth@.service

(remplacez « vi » par votre éditeur de texte préféré)

Et puis entrez:

[Unit]
Description=Ethereum daemon
Requires=network.target

[Service]
Type=simple
User=%I
ExecStart=/usr/local/bin/geth --syncmode light --cache 64 --maxpeers 12
Restart=on-failure

[Install]
WantedBy=multi-user.target

Enregistrez le fichier. Ci-dessous pour faire fonctionner le nœud Ethereum en tant qu’utilisateur « pi »:

$ sudo systemctl enable geth@pi.service
$ sudo systemctl start geth@pi.service

Avec notre nœud Ethereum fonctionnant en tant que service, nous pouvons maintenant nous y connecter en utilisant:

$ geth attach

Cela nous donne une console JavaScript interactive. De là, nous pouvons appeler des fonctions, telles que:

> eth.accounts

Qui listera les comptes chèques.

Ou pour obtenir des informations sur les pairs connectés:

> admin.peers

Notez que le protocole client léger est encore en développement, quelque peu expérimental, et repose sur des pairs / nœuds complets permettant la prise en charge pour ça. En tant que tel, il il n’est peut-être pas tout à fait pratique au moment de la rédaction d’effectuer des transactions sur Ethereum réseau principal blockchain utilisant ceci. Cela dit, les choses avancent vite et cette situation pourrait changer facilement dans un avenir pas trop lointain.

En arrivant

Jusqu’à présent, nous venons d’installer un logiciel client, de créer un compte, de démarrer un nœud et d’observer une connexion homologue. Dans le prochain article, nous examinerons l’exécution réelle des transactions.

Andrew Back


https://www.rs-online.com/designspark/exploring-ethereum-with-raspberry-pi-part-1-getting-started

No comments

leave a comment