blog details
author


blog detail

Одним из основных преимуществ продукта Web3.0 является децентрализация платежей от центрального банка с использованием криптовалюты и блокчейна. Ценность немыслима, потому что вы можете отправлять или получать деньги, используя собственный платежный шлюз Crypto. Кроме того, традиционная банковская система вряд ли сможет напрямую регистрировать все транзакции. На самом деле это подразумевает довольно много с точки зрения бизнес-активов и финансовых операций.

В этой статье я собираюсь поделиться смарт-контрактом Brownie FundMe и рассказать, как его развернуть в сети Ethereum.

Ингредиент для развертывания смарт-контракта Brownie FundMe на Ethereum с использованием Python и Web3.

Python3, Брауни, Solidity, ChainLink

Оглавление

Добавьте смарт-контракт Brownie FundMe .sol

Прежде всего, мы создаем смарт-контракт, который может обрабатывать отправку или получение средств и добавление в рамках нового проекта Brownie. Ранее нами был разработан смарт-контракт. Если вы заинтересованы, подпишитесь на информационный бюллетень Easy2Digital, оставив сообщение «Скрипт смарт-контракта Brownie FundMe», и мы вышлем вам как можно скорее.

Связаться с нами

Подключитесь к стороннему репозиторию, используя .yaml

Источники внешних сторонних репозиториев и потоки данных недоступны для чтения Brownie, если вы просто добавите их в смарт-контракт. Вот компоненты, добавленные для подключения к внешним источникам следующим образом:

1. Создайте брауни-config.YAML и добавьте зависимости — организацию и версию

Прежде всего, нам нужно добавить файл конфигурации YAML в корневой каталог. А именно, этот файл сообщает Brownies, что есть какие-то внутренние или внешние источники для подключения. В нашем случае мы используем Chainlink.

Обязательно проверьте последний номер смарт-контракта домового, который здесь равен 0.5.1. Это потому, что он сообщает домовым, к какой версии мы подключаемся. Для получения более подробной информации просто выполните поиск в Google, и он появится. Итак, вот пример кода в файле YAML с использованием зависимостей:

Dependencies:
smartcontractkit/chainlink-brownie-contracts@0.5.1

2. Co. mpiler, solc, remapping

После настройки назначения нам нужно сообщить Brownie, какой модуль мы хотим сопоставить с внешним источником. Как вы можете видеть в нашем заполненном файле Brownie FundMe.sol, мы используем @chainlink в разделе импорта модуля.

import "@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol";

Итак, вот следующие коды для сопоставления с внешним источником с использованием ompiler, solc and remappings

compiler:
solc:
remappings:
- '@chainlink=smartcontractkit/chainlink-brownie-contracts@0.5.1'

Обязательно проверьте версию внешнего источника, если она соответствует версии или находится в рамках версии, которую вы используете в смарт-контракте. Например, мы импортируем версию интерфейса V8, и диапазон версий Solidity должен охватывать V8 следующим образом:

pragma solidity >=0.6.0 <0.9.0;

3. Сборка брауни

Как только все будет завершено, как упоминалось ранее, мы можем ввести команду Brownie compile, и это покажет, что проект был скомпилирован. Затем вы можете увидеть, что в папку с контрактами добавлен новый файл JSON.

blog detail

blog detail

Создайте функцию get_account с помощью автономного скрипта Python.

В предыдущей главе, посвященной Infura и Metamask, мы создали функцию get_account в скрипте развертывания Python. Эта функция используется для получения конкретной учетной записи криптовалюты, которую вы хотите взаимодействовать с вашим смарт-контрактом. Помимо общего подхода к функциональному импорту Python, Brownie также предоставляет папку сценариев, в которую любой может добавить любые необходимые сценарии. Эти сценарии также могут быть связаны друг с другом.

Вот коды сценария функции get_account , который совпадает с тем, который используется для подключения к Ganache CLI.

from brownie import network, config, accounts
def get_account():
if network.show_active() == "development":
return accounts[0]
else:
return accounts.add(config["wallets"]["from_key"])

После того, как сценарий создан и сохранен в папке сценария, мы можем импортировать функцию в сценарий развертывания следующим образом:

blog detail

Как указано в приведенном выше коде, ознакомьтесь с предыдущей статьей, если у вас есть какие-либо вопросы о том, как создавать и добавлять wallets, from_key, and .env . Они используются для подключения к вашему реальному кошельку в безопасном режиме.

https://www.easy2digital.com/web3/brownie-web3-develop-ethereum-smart-contracts-interacting-with-cryptocurrency-network-using-brownie-and-python/#4

Или вы можете перейти к концу этой статьи и подписаться на информационный бюллетень Easy2Digital для получения полного сценария.

И последнее, но не менее важное: обязательно добавьте скрипт Python с именем, указанным ниже. Он сообщает Python, что может импортировать модули друг с другом.

__init__.py

Проверьте свой смарт-контракт на Etherscan

Если мы хотим проверить, действительна ли наша проверка смарт-контракта FundMe в сети Ethereum (Примечание **. Убедитесь, что вы развернули настройки, которые совпадают с нашими скриптами, необходимо выполнить несколько следующих шагов:

Шаг 1: Создайте учетную запись Etherscan и получите ключ API

Перейдите на etherscan.io и подпишитесь на бесплатную учетную запись. Каждая учетная запись имеет 5 бесплатных ключей API. После регистрации, пожалуйста, скопируйте его заранее, и вы сможете использовать его через мгновение.

Шаг 2. Добавьте ключ API с помощью ETHERSCAN_TOKEN в .env.

Помимо настройки вашего закрытого ключа, мы также поместим ключ Etherscan в .env. Таким образом, вот следующий код, который вы добавляете в .env file

export ETHERSCAN_TOKEN = your etherscan api key

Шаг 3: Запустите скрипт Brownie и проверьте проверку на Etherscan после того, как проверка произойдет

Наконец, снова запустите скрипт в своем терминале, и вы увидите успешное завершение и проверку, как только ваш смарт-контракт будет успешно загружен в сеть Etherscan.

blog detail

Добавьте параметры в конструктор смарт-контракта FundMe

При отправке или получении средств обязательно отображается курс обмена валюты в режиме реального времени, а также адрес спонсора и отправителя. Таким образом, прежде чем развертывать функции для этой функции, нам нужно установить в конструкторе параметр фида цен, который является address и _priceFeed . Вот обновленный пример кода конструктора в смарт-контракте FundMe:

constructor(address _priceFeed) public {
priceFeed = AggregatorV3Interface(_priceFeed);
owner = msg.sender;
}

Развернуть макеты

Если мы находимся только в сети блокчейна goerli, мы просто должны использовать ассоциированный адрес. Но почему нам нравится устанавливать либо или, либо множественные сети, включающие тестовые сети и реальные сети? В этом случае нам нужно развернуть моки.

Шаг 1. Добавьте набор сетевых данных, включающий ETH, в фид цен на целевую валюту.

Для извлечения различных наборов сетевых данных нам нужно преобразовать набор сетевых данных в .yaml. Вот код:

networks:
goerli:
eth_usd_price_feed: '0xD4a33860578De61DBAbDc8BFdb98FD742fA7028e'
verify: True

Chainlink предоставляет поток данных обменного курса в режиме реального времени, поэтому перейдите на data.chain.link, скопируйте и вставьте ключ комиссии ETH в сети блокчейна по сравнению с ценой целевой валюты в .yaml.

Шаг 2. Обновите файл deploy.py , добавив в него динамическую загрузку веб-канала цен.

if network.show_active() != "development":
price_feed_address = config["networks"][network.show_active(
)]["eth_usd_price_feed"]

Шаг 3. Разверните макеты

Прежде всего, нам нужно добавить тестовую папку и фиктивный контракт .sol в тестовую папку. Для этого макета смарт-контракта, пожалуйста, подпишитесь на информационный бюллетень Easy2Digital, оставив учебник 4 web3, мы вышлем вам как можно скорее.

blog detail

Затем, после повторной компиляции, в файле YAML мы добавим еще одну сеть под названием development, и проверка должна быть False, потому что это данные о ценах локального тестирования.

development:
verify: False

Кроме того, помимо импорта FundMe, нам нужно импортировать MockV3Aggregator и написать код в разделе else, что означает режим разработки.

from brownie import FundMe, MockV3Aggregator, network, config
else:
deploy_mocks()
price_feed_address = MockV3Aggregator[-1].address

Здесь мы создаем функцию deploy_mock() в скрипте get_account, которая использует фиктивный контракт, если это режим разработки, следующим образом:

DECIMALS = 8
STARTING_PRICE = 2000000000000000
def deploy_mo. cks():
print(f"The active network is {network.show_active()}")
print("Deploying Mocks......")
if len(MockV3Aggregator) <= 0:
mock_aggregator = MockV3Aggregator.deploy(
DECIMALS, STARTING_PRICE, {
"from": get_account()}

Добавить новую сеть

Помимо существующей сети, которую предоставляет Brownie, мы можем добавить новую сеть, необходимую, например, для целей тестирования.

Вот пример добавления ganache-local network в терминал:

brownie networks add Ethereum ganache-local host=http://address chainid=yours

По умолчанию Brownie использует сеть в режиме разработки. Поскольку теперь добавлена ​​еще одна локальная сеть, нам нужно обновить переменные, чтобы оправдать выполнение

LOCAL_BLOCKCHAIN_ENVIRONMENTS = ["development", "ganache-local"]

Пополнить и вывести

Под папкой скрипта создаем фонд и скрипт вывода. Вот следующие функции:

Фонд:

защитный фонд():
fund_me = FundMe[-1]
аккаунт = получить_аккаунт()
вход_плата = fund_me.getEntranceFee()
печать (входная_плата)
print(f"Текущий вступительный взнос {entrance_fee}")
распечатать("Финансирование")
fund_me.fund({"от": аккаунт, "значение": входная_плата})

Отзывать:

дефолт отозвать():
fund_me = FundMe[-1]
аккаунт = получить_аккаунт()
fund_me.withdraw({"из": счета})

Полученные результаты:

blog detail

Полный Python-скрипт смарт-контракта Brownie FundMe

Если вас интересует смарт-контракт Brownie FundMe, развернутый на Ethereum с использованием Python и Web3, пожалуйста , подпишитесь на нашу рассылку , добавив сообщение «Учебник Web3.0 4» . Мы отправим вам сценарий немедленно на ваш почтовый ящик.

Надеюсь, вам понравится читать смарт-контракт Brownie FundMe, развернутый на Ethereum с использованием Python и Web3. Если вы это сделали, пожалуйста, поддержите нас, выполнив одно из перечисленных ниже действий, потому что это всегда помогает нашему каналу.

  • Поддержите и пожертвуйте мой канал через PayPal ( paypal.me/Easy2digital )
  • Подпишитесь на мой канал и включите колокольчик уведомлений канала Easy2Digital Youtube .
  • Подписывайтесь и лайкайте мою страницу Страница Easy2Digital в Facebook
  • Поделитесь статьей в своей социальной сети с хэштегом #easy2digital
  • Вы подписываетесь на нашу еженедельную рассылку, чтобы получать последние статьи, видео и коды скидок Easy2Digital.
  • Подпишитесь на наше ежемесячное членство через Patreon, чтобы пользоваться эксклюзивными преимуществами ( www.patreon.com/louisludigital )
Поделиться этим постом

Пока нет комментариев...

shape shape

Подпишитесь на нашу рассылку!

Получайте эксклюзивные обновления и предложения в автомобильном стиле