イーサリアム+ Python =ブラウニー

敬具、愛する暗号愛好家!



本日は、Solidityのスマートコントラクトの開発、テスト、および展開によく使用されるTruffleフレームワークの類似体であるブラウニーについて説明します(これについては、一連の関連記事で確認できます)。



では、なぜ別のフレームワークが必要なのでしょうか。また、Truffleとの主な違いは何ですか。



  • まず、彼らはさまざまな言語を使用しています-TruffleはJSに依存していますが、誰もがこの言語を知っているわけではなく、誰もが使い慣れているわけではありません。ブラウニーはPython 3を使用しています。
  • 次に、ブラウニーは、さまざまなソフトウェアの統合により、開発をより便利にします。ここでは、スマートコントラクト用のethpmパッケージマネージャー、ローカルテストチェーンを展開するためのガナッシュ、pytestを介したテスト、およびすべてのバージョンのsolcコンパイラー、さらにはMythXへのバインディング-MythXへのバインディングスマートコントラクトのエラーの自動検索-つまり、ブラウニーは開発サイクル全体のツールを提供します。もちろん、Truffleではこれらすべてのツールを使用することもできますが、フレームワークに組み込まれていないため、追加でインストールする必要があります。
  • 第3に、brownieを使用すると、Solidityのスマートコントラクトだけでなく、スマートコントラクトを開発するための型指定されたpythonベースのvyperも使用できます


したがって、Pythonでの作業を好み、スマートコントラクトの開発を容易にしたい場合は、ブラウニーを試してみる価値があります。



ブラウニーの他に何ができますか?

リポジトリ自体で述べたように、ブラウニーは、以下をサポートするイーサリアムベースのプラットフォーム用のフルサイクルのスマートコントラクト開発フレームワークです。



  • いくつかのスマートコントラクトプログラミング言語:SolidityおよびVyper。
  • 契約を構築します。
  • 契約とのインタラクティブな相互作用。
  • pytestを使用したスマートコントラクトのテスト。
  • スマートコントラクトとやり取りするためのスクリプト。
  • スマートコントラクトテンプレートの操作。


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 .



要約すると、ブラウニーは現在、Ethereumの開発用のかなり成熟したエンタープライズ対応ソリューションであり、そのプロセスで発生するほとんどすべてのニーズを満たすことができると言えます。Pythonistsは、間違いなく次のプロジェクトを作ろうとするだけではありません。




All Articles