Salut, cher passionné de crypto!
Aujourd'hui, nous allons parler de Brownie - un analogue du framework Truffle , qui est souvent utilisé pour développer des contrats intelligents pour Solidity, les tester et les déployer (que vous pouvez lire dans une série d'articles connexes ici ).
Alors pourquoi avons-nous besoin d'un autre cadre, et quelle est sa principale différence avec Truffle?
- PremiÚrement, ils utilisent des langues différentes - alors que Truffle s'appuie sur JS, tout le monde ne connaßt pas cette langue et tout le monde n'est pas à l'aise de l'utiliser; brownie utilise Python 3.
- DeuxiĂšmement, brownie, en raison de l'intĂ©gration de divers logiciels, rend le dĂ©veloppement plus pratique: voici le gestionnaire de packages ethpm pour les contrats intelligents et la ganache pour dĂ©ployer une chaĂźne de test locale, et des tests via pytest, et toutes les versions de compilateurs solc, et mĂȘme des liaisons Ă MythX - un outil pour recherche automatique d'erreurs dans les contrats intelligents - en d'autres termes, brownie propose des outils pour l'ensemble du cycle de dĂ©veloppement. Bien sĂ»r, Truffle vous permet Ă©galement d'utiliser tous ces outils, mais ils ne sont pas intĂ©grĂ©s au framework et doivent ĂȘtre installĂ©s en plus.
- TroisiÚmement, brownie vous permet de travailler non seulement avec des contrats intelligents sur Solidity, mais également sur vyper - un contrat typé basé sur python pour développer des contrats intelligents.
Ainsi, si vous prĂ©fĂ©rez travailler avec Python et que vous souhaitez vous faciliter le dĂ©veloppement de contrats intelligents, alors le brownie vaut vraiment la peine d'ĂȘtre essayĂ©.
Que peut faire d'autre le brownie?
Comme indiquĂ© dans le rĂ©fĂ©rentiel lui-mĂȘme, brownie est un cadre de dĂ©veloppement de contrat intelligent Ă cycle complet pour les plates-formes basĂ©es sur Ethereum qui prend en charge:
- Plusieurs langages de programmation de contrats intelligents: Solidity et Vyper.
- Construisez des contrats.
- Interaction interactive avec les contrats.
- Tester des contrats intelligents avec pytest.
- Scripts pour interagir avec les contrats intelligents.
- Travailler avec des modĂšles de contrat intelligents.
brownie , brownie . pip:
pip install eth-brownie
brownie .
brownie --help
Brownie v1.6.9 - Python development framework for Ethereum
Usage: brownie <command> [<args>...] [options <args>]
Commands:
init Initialize a new brownie project
bake Initialize from a brownie-mix template
ethpm Commands related to the ethPM package manager
compile Compiles the contract source files
console Load the console
test Run test cases in the tests/ folder
run Run a script in the scripts/ folder
accounts Manage local accounts
gui Load the GUI to view opcodes and test coverage
analyze Find security vulnerabilities using the MythX API
Options:
--help -h Display this message
Type 'brownie <command> --help' for specific options and more information about
each command.
brownie
brownie brownie-config.yaml
. brownie init
brownie init salut_habr
Brownie v1.6.9 - Python development framework for Ethereum
SUCCESS: Brownie environment has been initiated at salut_habr
brownie bake template_name
brownie bake token
Brownie v1.6.9 - Python development framework for Ethereum
Downloading from https://github.com/brownie-mix/token-mix/archive/master.zip...
5.62kiB [00:00, 2.82MiB/s]
SUCCESS: Brownie mix 'token' has been initiated at token
ERC-20 ( token).
:
ââââbuild # , .
â ââââcontracts # , ABI .
â ââââdeployments # .
ââââcontracts # ( ).
ââââinterfaces # .
ââââreports # .
ââââscripts # Python run.
ââââtests # pytest .
, brownie , brownie-config.yaml
â , .
brownie
brownie , , : compile
, console
, test
run
.
brownie compile
, contracts . , , "_",- brownie ( ).
./build/contracts/
json-, ABI , - -.
brownie , , . , -all
.
brownie compile --all
Brownie v1.6.9 - Python development framework for Ethereum
Compiling contracts...
Solc version: 0.5.17+commit.d19bba13.Windows.msvc
Optimizer: Enabled Runs: 200
EVM Version: Istanbul
Generating build data...
- Token...
- SafeMath...
Brownie project has been compiled at C:\Users\Default\Documents\token\build\contracts
, , brownie-config.yaml
brownie test
pytest, , , CI/CD.
brownie test
Brownie v1.6.9 - Python development framework for Ethereum
==================================================================================================== test session starts =====================================================================================================
platform win32 -- Python 3.8.3, pytest-5.4.1, py-1.8.1, pluggy-0.13.1
rootdir: C:\Users\Default\Documents\token
plugins: eth-brownie-1.6.9, hypothesis-5.5.4, forked-1.1.3, xdist-1.31.0, web3-5.5.1
collecting ... Launching 'ganache-cli.cmd --port 8545 --gasLimit 6721975 --accounts 10 --hardfork istanbul --mnemonic brownie'...
collected 7 items
tests\test_approve_transferFrom.py ...... [ 85%]
tests\test_transfer.py . [100%]
===================================================================================================== 7 passed in 9.35s ======================================================================================================
Terminating local RPC client...
tests/
brownie run
scripts. brownie 2.x, CI/CD ( ).
brownie run token
Brownie v1.6.9 - Python development framework for Ethereum
TokenProject is the active project.
Launching 'ganache-cli.cmd --port 8545 --gasLimit 6721975 --accounts 10 --hardfork istanbul --mnemonic brownie'...
Running 'scripts.token.main'...
Transaction sent: 0xe36fbf7d93c1c91bde5e9290128999ed06ea54eb68352fb477fa91ce8072f472
Gas price: 0.0 gwei Gas limit: 549953
Token.constructor confirmed - Block: 1 Gas used: 549953 (100.00%)
Token deployed at: 0x3194cBDC3dbcd3E11a07892e7bA5c3394048Cc87
Terminating local RPC client...
brownie console
brownie: , . :
brownie console
Brownie v1.6.9 - Python development framework for Ethereum
TokenProject is the active project.
Launching 'ganache-cli.cmd --port 8545 --gasLimit 6721975 --accounts 10 --hardfork istanbul --mnemonic brownie'...
Brownie environment is ready.
>>> dir()
[Fixed, Gui, SafeMath, Token, Wei, a, accounts, alert, compile_source, config, dir, history, network, project, rpc, run, web3]
brownie, , web3py.
/
brownie ganache ( Ethereum) , ( Quorum!). --network network_name
console run, network_name brownie-config.yaml. ETH ETC, . , yaml . develop, test master ( ), Azure .
Pour rĂ©sumer, nous pouvons dire que le brownie est actuellement une solution assez mature prĂȘte pour le dĂ©veloppement d'Enterpise pour Ethereum et est capable de satisfaire presque tous les besoins dĂ©coulant de son processus. Les pythonistes et pas seulement devraient absolument essayer d'y faire leur prochain projet.