[PYTHON] De l'introduction de pyethapp à l'exécution du contrat

Objectif de cet article

Nous avons résumé de l'introduction de pyethapp pour l'utilisation d'Ethereum en Python jusqu'à l'exécution du contrat. Dans cet article, je présenterai jusqu'au point de contracter avec Ethereum selon le flux suivant.

--Construire un environnement virtuel pour Python --Installation de pyethapp et pyethereum

De plus, il a été confirmé que les commandes exécutées dans cet article fonctionnent avec ubuntu (16LTS) et CentOS (6.9).

Ethereum Voici un bref aperçu des termes liés à Ethereum dans cet article.

Qu'est-ce que l'Ethereum

Ethereum est une plate-forme complète de traitement et d'application des contrats de Turing pour les registres blockchain, avec des spécifications et des implémentations complètement indépendantes plutôt qu'une copie de Bitcoin. Il a une devise intégrée appelée éther et il vous sera demandé de payer lorsque vous exécuterez le contrat.

Qu'est-ce qu'un contrat

L'enregistrement de la blockchain Ethereum est effectué par contrat. contract est un langage de bas niveau, écrit en tuling code complet similaire au byte code. contract est un programme qui fonctionne sur le système Ethereum et peut stocker des données, payer de l'éther, recevoir et stocker. Il peut également s'agir d'un agent logiciel décentralisé et autonome qui peut effectuer des opérations d'une durée illimitée pouvant être calculées.

référence

Construction d'environnement virtuel Python

Créez un environnement virtuel Python pour lancer pyethapp.

$ pip install virtualenv
$ pip install virtualenvwrapper

//Redémarrez le terminal et virtualenvwrapper.faire sh
$ reset

// virtualenvwrapper.Vérifiez l'emplacement de sh
$ which virtualenvwrapper.sh
/usr/bin/virtualenvwrapper.sh

$ source /usr/bin/virtualenvwrapper.sh

$ export WORKON_HOME=~/Envs
$ mkdir -p $WORKON_HOME

$ mkvirtualenv pyethapp
$ cd $WORKON_HOME/pyethapp/bin
$ source activate

--Fin

(pyethapp)$ deactivate

référence

Installez pyethapp

pyethapp est un module basé sur Python qui implémente Ethereum. Dans git, seule la procédure d'installation avec ubuntu est écrite, mais j'ai pu l'installer avec CentOS.

Ubuntu/Debian

$ apt-get install build-essential automake pkg-config libtool libffi-dev libgmp-dev
(pyethapp)$ pip install pyethapp

CentOS

$ yum groupinstall "Development Tools"
(pyethapp)$ yum install kernel-devel kernel-headers
(pyethapp)$ yum install automake libtool libffi libffi-devel gmp

référence

--Il n'y a pas de packages liés Contre-mesures d'erreur (principalement CentOS) http://stackoverflow.com/questions/31508612/pip-install-unable-to-find-ffi-h-even-though-it-recognizes-libffi http://www.techblogistech.com/2012/03/installing-build-essentials-in-centos-make-gcc-gdb/ http://blog.goo.ne.jp/asakurah/e/7f9cdf8cbada8841c388ece8cd421432

Installez pyethereum

pyethereum est la bibliothèque principale pour le traitement de la blockchain, de l'éthereum et de l'exploitation minière. En installant ceci dans pyethapp, vous pouvez utiliser chaque bibliothèque.

(pyethapp)$ cd pyethapp
(pyethapp)$ git clone https://github.com/ethereum/pyethereum/
(pyethapp)$ cd pyethereum
(pyethapp)$ python setup.py install

référence

Exécutez pyethapp

Le répertoire de données se trouve par défaut dans "~ / .config / pyethapp / leveldb".

Créer un compte

(pyethapp)$ cd pyethapp
(pyethapp)$ pyethapp -d "~/.config/pyethapp/leveldb" account new

//Entrez le mot de passe de la clé privée deux fois
Password to encrypt private key:
Repeat for confirmation:
...
Account creation successful
Address: 8d69118ca81b5878ad22d40b701ea9ae88190a60
Id: None

Exécuter sur console

Spécifiez testnet dans --profile pour vous connecter à l'environnement de test. IPython est lancé en l'exécutant avec la console comme argument.

(pyethapp)$ workon pyethapp
(pyethapp)$ pyethapp -d "~/.config/pyethapp/leveldb" --profile testnet run --console

Vous pouvez utiliser l'objet eth sans importer la bibliothèque.

$ eth.latest
<CachedBlock(#0 0cd786a2)>

$ eth.latest.get_balance(eth.coinbase)
0

La bibliothèque pyethereum peut être utilisée sur la console en l'important de la même manière qu'IPython.


//Importer des utilitaires pour Ethereum
$ import ethereum.utils as u

//Importer le module de test
$ import ethereum.tester as t

//Adresse du compte test 1
$ t.a0
'\x82\xa9x\xb3\xf5\x96*[\tW\xd9\xee\x9e\xefG.\xe5[B\xf1'

$ u.is_numeric(t.a0)
False

$ u.is_string(t.a0)
True

//Clé privée pour le compte de test 1(k0)Convertir de en adresse
$ u.privtoaddr(t.k0)
'\x82\xa9x\xb3\xf5\x96*[\tW\xd9\xee\x9e\xefG.\xe5[B\xf1'

//Créer un nouvel état de blockchain
$ s=t.state()

//Vérifiez toutes les blockchains
$ s.blocks
[<Block(#0 565a32e6)>]

//Augmenter les chaînes en minant
$ s.mine(n=1)

$ s.blocks
[<Block(#0 50ba5c12)>, <Block(#1 6c0f699b)>]

référence

installation de serpent

serpent est un langage de programmation de haut niveau pour l'écriture de contrats Ethereum. C'est un langage spécialisé pour la programmation contractuelle, qui est similaire dans la méthode d'écriture à Python, permet un codage propre et facile, et combine de nombreux avantages des langages de bas niveau avec un style de programmation simple. Le compilateur serpent est écrit en C ++.

Installation

Il existe deux méthodes d'installation, mais peu importe laquelle.

$ git clone https://github.com/ethereum/serpent.git
$ cd serpent
$ git checkout develop
$ make && sudo make install
$ python setup.py install

--Installer sur pyethapp

(pyethapp)$ git clone https://github.com/ethereum/pyethereum.git
(pyethapp)$ cd pyethereum
(pyethapp)$ git checkout develop
(pyethapp)$ pip install -r requirements.txt
(pyethapp)$ python setup.py install

Courir

Créez le fichier serpent suivant directement sous le projet pyethapp.

mul2.se


def double(x):
 return (x*2)

Compilez en utilisant serpent.

$ serpent compile mul2.se
//Code d'octet renvoyé
6100...

Sur la console pyethapp, après compilation, le contrat peut être exécuté en consommant du gaz.

$ d=s.abi_contract("mul2.se")
$ s.block.gas_used
98065
$ d.double(2)
4
$ s.block.gas_used
119618

référence

Résumé de référence

--Il n'y a pas de packages liés Contre-mesures d'erreur (principalement CentOS) http://stackoverflow.com/questions/31508612/pip-install-unable-to-find-ffi-h-even-though-it-recognizes-libffi http://www.techblogistech.com/2012/03/installing-build-essentials-in-centos-make-gcc-gdb/ http://blog.goo.ne.jp/asakurah/e/7f9cdf8cbada8841c388ece8cd421432

Recommended Posts

De l'introduction de pyethapp à l'exécution du contrat
Introduction à Scapy ① (De l'installation à l'exécution de Scapy)
De l'introduction de l'API GoogleCloudPlatform Natural Language à son utilisation
[Procédure d'installation Ansible] De l'installation à l'exécution du playbook
Paramètre pour afficher le journal de l'exécution de cron
Modifiez le point décimal de la journalisation de, à.
Histoire de passer de Pipenv à la poésie
Le mur lors du passage du service Django de Python 2.7 à la série Python 3
Utilisé depuis l'introduction de Node.js dans l'environnement WSL
Je veux grep le résultat de l'exécution de strace
[Introduction à cx_Oracle] (Partie 11) Bases de l'exécution PL / SQL
[Introduction à Python] Utilisation basique de la bibliothèque matplotlib
[Introduction à cx_Oracle] Présentation de cx_Oracle
Résumé du début au chapitre 1 de l'introduction aux modèles de conception appris en langage Java
Une introduction à l'orientation des objets - changeons l'état interne d'un objet
Introduction aux statistiques Exercices du chapitre 2 de la presse de l'Université de Tokyo
Comment calculer la quantité de calcul appris de ABC134-D
[Introduction à matplotlib] Lire l'heure de fin à partir des données COVID-19 ♬
L'histoire de la copie de données de S3 vers TeamDrive de Google
Après tout, l'histoire du retour de Linux à Windows
[Introduction au graphique logarithmique] Prédire l'heure de fin de chaque pays à partir du graphique logarithmique des données sur le nombre d'infections ♬
Prenez le journal d'exécution du céleri
Existence du point de vue de Python
[Introduction] De l'installation de kibana au démarrage
Python (de la première fois à l'exécution)
De Ubuntu 20.04 introduction à la construction d'environnement
Supplément à l'explication de vscode
[Introduction à Python] J'ai comparé les conventions de nommage de C # et Python.
[Introduction à StyleGAN] J'ai joué avec "The Life of a Man" ♬
Lire tout le contenu de proc / [pid] ~ De setgroups à wchan ~
Lire tout le contenu de proc / [pid] ~ De cwd à loginuid ~
Lire tout le contenu de proc / [pid] ~ De map_files à numa_maps ~
Lire tout le contenu de proc / [pid] ~ De oom_adj à sessionid ~
[Python3] Définition d'un décorateur qui mesure le temps d'exécution d'une fonction
Comment surveiller l'état d'exécution de sqlldr avec la commande pv
[Introduction au modèle SIR] Considérez le résultat de l'ajustement de Diamond Princess ♬
Lire tout le contenu de proc / [pid] ~ De attr à cpuset ~
Chapitre 1 Introduction à Python Découpez uniquement les bons points de Deeplearning à partir de zéro
L'histoire d'essayer de reconnecter le client
À propos de l'ordre d'apprentissage des langages de programmation (de débutant à intermédiaire) Partie 2
Script pour changer la description de fasta
Comment vérifier la version de Django
L'histoire de la mise en place de MeCab dans Ubuntu 16.04
Notes d'apprentissage depuis le début de Python 1
[Introduction à Python] Comment trier efficacement le contenu d'une liste avec le tri par liste
Créer un environnement d'exécution pour Jupyter Lab
De l'acquisition de la licence MuJoCo, du renouvellement à l'exécution
Probablement l'introduction la plus simple à TensorFlow
De l'attention de Zero Tsuku 2 au transformateur
Comment faire fonctionner Linux depuis la console
Comment accéder à la banque de données de l'extérieur
Obtenez le titre de la chanson à partir du titre de la vidéo que vous avez chanté
[Introduction à Python] Une explication approfondie des types de chaînes de caractères utilisés dans Python!
L'histoire du changement de pep8 en pycodestyle
[Introduction à Python] Quelle est la méthode de répétition avec l'instruction continue?
Notes d'apprentissage depuis le début de Python 2
[Introduction au Data Scientist] Bases de Python ♬
Envoyez des notifications sur votre smartphone à partir de la ligne de commande ou du script Linux. (Introduction d'un outil appelé ntfy)