Ethereum + Python = Brownie

¡Saludo, querido entusiasta de la criptografía!



Hoy hablaremos de Brownie , un análogo del marco Truffle , que a menudo se usa para desarrollar contratos inteligentes para Solidity, probarlos y desplegarlos (que puede leer en una serie de artículos relacionados aquí ).



Entonces, ¿por qué necesitamos otro marco y cuál es su diferencia clave con Truffle?



  • Primero, usan diferentes idiomas: aunque Truffle confía en JS, no todos conocen este idioma y no todos se sienten cómodos usándolo; Brownie usa Python 3.
  • En segundo lugar, debido a la integración de varios software, Brownie hace que el desarrollo sea más conveniente: aquí está el administrador de paquetes ethpm para contratos inteligentes, y ganache para implementar una cadena de prueba local, y pruebas a través de pytest, y todas las versiones de compiladores solc, e incluso enlaces a MythX, una herramienta para búsqueda automática de errores en contratos inteligentes: en otras palabras, brownie ofrece herramientas para todo el ciclo de desarrollo. Por supuesto, Truffle también le permite utilizar todas estas herramientas, pero no están integradas en el marco y deben instalarse adicionalmente.
  • En tercer lugar, brownie le permite trabajar no solo con contratos inteligentes en Solidity, sino también en vyper , uno basado en Python para desarrollar contratos inteligentes.


Por lo tanto, si prefiere trabajar con Python y desea facilitarle el desarrollo de contratos inteligentes, definitivamente vale la pena probar el brownie.



¿Qué más puede hacer Brownie?

Como se indica en el repositorio en sí, Brownie es un marco de desarrollo de contrato inteligente de ciclo completo para plataformas basadas en Ethereum que admite:



  • Varios lenguajes de programación de contratos inteligentes: Solidity y Vyper.
  • Construir contratos.
  • Interacción interactiva con contratos.
  • Prueba de contratos inteligentes con pytest.
  • Scripts para interactuar con contratos inteligentes.
  • Trabajando con plantillas de contratos inteligentes.


brownie , brownie . pip:



pip install eth-brownie



brownie .



help 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



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
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 .



Para resumir, podemos decir que Brownie es actualmente una solución bastante desarrollada para el desarrollo de Ethereum lista para Enterpise y es capaz de satisfacer casi todas las necesidades que surgen en su proceso. Los pitonistas y no solo definitivamente deberían intentar hacer su próximo proyecto en él.




All Articles