Brownie что за программа

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Switch branches/tags
Branches Tags
Could not load branches
Nothing to show
Could not load tags

Nothing to show

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Cancel Create

  • Local
  • Codespaces

HTTPS GitHub CLI
Use Git or checkout with SVN using the web URL.
Work fast with our official CLI. Learn more about the CLI.

Sign In Required

Please sign in to use Codespaces.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching Xcode

If nothing happens, download Xcode and try again.

Бюджетный брауни за 7 минут???Это возможно #shorts#

Launching Visual Studio Code

Your codespace will open once ready.

There was a problem preparing your codespace, please try again.

Latest commit

Git stats

Files

Failed to load latest commit information.

Latest commit message
Commit time

README.md

Brownie Example (Token)

Демонстрирует настройку среды и тесты для простого Ethereum стандарт ERC-20 токена, написанного на Solidity.

  • python3 version 3.6 or greater, python3-dev
  • ganache-cli — tested with version 6.11.0

Рекомендованная. Установит brownie в виртуальное окружение и сделает его доступным глобально, без необходимости каждый раз окружение активировать.

python3 -m pip install —user pipx python3 -m pipx ensurepath

Установка brownie через pipx :

pipx install eth-brownie
pip install eth-brownie

Другие варианты установки

В данном репозитории содержится Базовый Шаблон для токена, поверх которого можно написать свой собственный токен, а также тесты, покрывающие 100% стандартного ERC20 функционала.

Каждый проект Brownie включает в себя следующие папки:

  • contracts/ : Источники контрактов
  • interfaces/ : Источники интерфейса
  • scripts/ : Скрипты для развертывания и взаимодействия
  • tests/ : Скрипты для тестирования проекта

Следующие папки также создаются и используются внутри Brownie для управления проектом. Вы не должны редактировать или удалять файлы в этих папках.

  • build/ : Данные проекта, такие как артефакты компилятора и результаты юнит-тестов.
  • reports/ : JSON файлы отчетов для использования в Brownie GUI

Brownie имеет три основных компонента, которые можно использовать в разработке:

  • Консоль полезна для быстрого тестирования и отладки.
  • Скрипты позволяют автоматизировать общие задачи и обрабатывать развертывания.
  • Тесты помогают убедиться в том, что ваши контракты выполняются по назначению.
  • Создать пустой проект brownie: brownie init
  • Компиляция контрактов: brownie compile
  • Открыть консоль: brownie console
  • Выполнить тесты: brownie test
Читайте также:
Что за программа меняйся

Компиляция и деплой контракта

Мега шоколадный брауни за 5 минут | рецепты из тик тока

Чтобы скомпилировать все имеющиеся в папке /contracts контракты (даже во вложенных папках), выполните:

brownie compile

В данном примере там находится всего один файл Token.sol

Чтобы задеплоить тестовый токен, нужна функция deploy :

token = Token.deploy(«Test Token», «TST», 18, 1e21, ‘from’: accounts[0]>) Transaction sent: 0x4a61edfaaa8ba55573603abd35403cf41291eca443c983f85de06e0b119da377 Gas price: 0.0 gwei Gas limit: 12000000 Token.constructor confirmed — Block: 1 Gas used: 521513 (4.35%) Token deployed at: 0xd495633B90a237de510B4375c442C0469D3C161C

Ethereum + Python = Brownie

Сегодня речь пойдёт о Brownie — аналоге фреймворка Truffle, который часто используется для разработки умных контрактов на Solidity, их тестирования и развёртывания (о чём можно почитать в цикле соответствующих статей здесь).

Так зачем же нужен ещё один фреймворк и в чём его ключевое отличие от Truffle?

  • Во-первых, в них используются разные языки — в то время, как Truffle опирается на JS, не все знают этот язык и не всем его комфортно использовать; в brownie же в используется Python 3.
  • Во-вторых, brownie за счёт интеграций различного софта делает разработку удобнее: тут и менеджер пакетов ethpm для умных контрактов, и ganache для развёртывания локальной тестовой цепочки, и тесты через pytest, и все версии компиляторов solc, и даже биндинги к MythX — инструменту для автоматического поиска ошибок в умных контрактах,- иначе говоря brownie предлагает инструменты для всего цикла разработки. Конечно Truffle тоже позволяет использовать все эти инструменты, однако они не встроены во фреймворк и их приходится устанавливать дополнительно.
  • В-третьих, brownie позволяет работать не только с умными контрактами на Solidity, но и на vyper — типизированном python-based для разработки умных контрактов.

Таким образом, если вы предпочитаете работать с пайтоном и хотите упростить себе разработку умных контрактов, то однозначно стоит попробовать brownie.

Что же ещё умеет brownie?
Как сказано в самом репозитории brownie — это фреймворк разработки полного цикла умных контрактов для Ethereum-based платформ, поддерживающий:

  • Несколько языков программирования умных контрактов: 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 [. ] [options ] 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 —help’ for specific options and more information about each command.

Читайте также:
Autodesk 3ds что это за программа

Проект 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:UsersDefaultDocumentstokenbuildcontracts

Параметры компиляции, такие как версия компилятора или оптимизация кода, задаются в файле 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:UsersDefaultDocumentstoken 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 teststest_approve_transferFrom.py . [ 85%] teststest_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 с помощью специальной службы.

Подводя итог можно сказать, что brownie на текущий момент уже достаточно зрелое Enterpise-ready решение для разработки под Ethereum и способен удовлетворить практически все возникающие в её процессе потребности. Питонистам и не только однозначно стоит попробовать сделать на нём свой следующий проект.

Источник: habr.com

Brownie

  • Fault Search DC
  • Fault Search MC
  • Fault Search BC
  • Fault Search TC
    • SVAROG
    • Argus
    • Ponera BMS
    • Medstore
    • Brownie

    Источник: www.integer-soft.ru

    Рейтинг
    ( Пока оценок нет )
    Загрузка ...
    EFT-Soft.ru