Ethereum + Python = Brownie

Gruß, lieber Krypto-Enthusiast!



Heute werden wir ĂŒber Brownie sprechen - ein Analogon zum TrĂŒffel- Framework , das hĂ€ufig verwendet wird, um intelligente VertrĂ€ge fĂŒr Solidity zu entwickeln, zu testen und bereitzustellen (worĂŒber Sie in einer Reihe verwandter Artikel hier lesen können ).



Warum brauchen wir also ein anderes Framework und was ist der Hauptunterschied zu Truffle?



  • Erstens verwenden sie verschiedene Sprachen - wĂ€hrend Truffle sich auf JS verlĂ€sst, kennt nicht jeder diese Sprache und nicht jeder ist damit vertraut; Brownie verwendet Python 3.
  • Zweitens macht Brownie aufgrund der Integration verschiedener Software die Entwicklung komfortabler: Hier finden Sie den ethpm-Paketmanager fĂŒr intelligente VertrĂ€ge und Ganache fĂŒr die Bereitstellung einer lokalen Testkette sowie Tests ĂŒber pytest und alle Versionen von Solc-Compilern und sogar Bindungen an MythX - ein Tool fĂŒr Automatische Suche nach Fehlern in intelligenten VertrĂ€gen - mit anderen Worten, Brownie bietet Tools fĂŒr den gesamten Entwicklungszyklus. NatĂŒrlich können Sie mit Truffle auch alle diese Tools verwenden, aber sie sind nicht in das Framework integriert und mĂŒssen zusĂ€tzlich installiert werden.
  • Drittens können Sie mit Brownie nicht nur mit intelligenten VertrĂ€gen fĂŒr Solidity arbeiten, sondern auch mit vyper - einem typisierten Python-basierten Vertrag zur Entwicklung intelligenter VertrĂ€ge.


Wenn Sie also lieber mit Python arbeiten und sich die Entwicklung intelligenter VertrÀge erleichtern möchten, ist Brownie auf jeden Fall einen Versuch wert.



Was kann Brownie noch tun?

Wie im Repository selbst angegeben, handelt es sich bei Brownie um ein Framework fĂŒr die Entwicklung intelligenter VertrĂ€ge fĂŒr Ethereum-basierte Plattformen, das Folgendes unterstĂŒtzt:



  • Mehrere intelligente Vertragsprogrammiersprachen: Solidity und Vyper.
  • VertrĂ€ge erstellen.
  • Interaktive Interaktion mit VertrĂ€gen.
  • Testen intelligenter VertrĂ€ge mit pytest.
  • Skripte fĂŒr die Interaktion mit intelligenten VertrĂ€gen.
  • Arbeiten mit intelligenten Vertragsvorlagen.


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 .



Zusammenfassend können wir sagen, dass Brownie derzeit eine ziemlich ausgereifte Enterpise-fĂ€hige Lösung fĂŒr die Entwicklung von Ethereum ist und nahezu alle in diesem Prozess auftretenden Anforderungen erfĂŒllen kann. Pythonisten und nicht nur sollten auf jeden Fall versuchen, ihr nĂ€chstes Projekt darauf zu machen.




All Articles