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.
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.
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.
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
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
--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
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
Le répertoire de données se trouve par défaut dans "~ / .config / pyethapp / leveldb".
(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
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)>]
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 ++.
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
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
Ethereum Technologie prenant en charge la crypto-monnaie bitcoin et blockchain (NTT Publishing) https://github.com/ethereum/wiki/wiki/Ethereum-Contract-ABI
virtualenvwrapper http://virtualenvwrapper.readthedocs.io/en/latest/
pyethapp https://github.com/ethereum/pyethapp https://github.com/ethereum/pyethapp/wiki/The_Console
--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
pyethereum https://github.com/ethereum/pyethereum https://github.com/ethereum/pyethereum/wiki/Using-pyethereum.tester
Serpent https://github.com/ethereum/wiki/wiki/Serpent http://mc2-umd.github.io/ethereumlab/docs/serpent_tutorial.pdf
Recommended Posts