MMS

За последние несколько месяцев Neon Labs сотрудничала с несколькими организациями для тестирования и развертывания различных протоколов и проектов на Neon EVM. Последнее партнерство Neon Labs с Zpoken привело к успешному развертыванию протокола Compound на Neon EVM. Развертывание Compound на Neon EVM служит для дальнейшего тестирования готовности Neon EVM к производству и интеграции сложных приложений dApp в его экосистему.

Compound — это децентрализованное приложение DeFi, впервые запущенное в сентябре 2018 года на Ethereum. Протокол позволяет пользователям одалживать и брать взаймы криптовалюты без посредника.

Zpoken — это компания, занимающаяся разработкой полного стека Web3. Компания реализовала более 50 проектов и имеет 30 активных разработчиков в более чем 10 сетях блокчейнов. Zpoken специализируется на высококлассной веб-разработке, криптографии, рынках капитала, дизайне токенов и ликвидности.

Основной целью учений с Zpoken было тестирование производительности и функциональности Neon EVM во время развертывания контрактов протокола Compound в Neon Devnet .

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

Zpoken протестировал следующие функции смарт-контракта, чтобы проверить производительность Compound на Neon EVM:

  • Развертывание составных контрактов в сети Neon Devnet;
  • Test cToken contract functions (constructor, mint, mintFresh, redeem, redeemFreshTokens, redeemFreshAmount, liquidateBorrow, liquidateBorrowFresh, seize, _setComptroller, transfer, balanceOfUnderlying, borrow, borrowRatePerBlock, supplyRatePerBlock, borrowBalanceCurrent, borrowBalanceStored, exchangeRateStored, getCash, borrowFresh, repayBorrowFresh, repayBorrow, repayBorrowBehalf , accrueInterest, _setInterestRateModel, _setInterestRateModelFresh, _setReserveFactor, _setReserveFactorFresh, _reduceReserves, _reduceReservesFresh, admin, pendingAdmin, _setPendingAdmin, _acceptAdmin);
  • Протестируйте функции контракта CEther (getCashPrior, doTransferIn, doTransferOut, mintExplicit, mintFallback, redeemCToken, redeemUnderlying, заимствование, заимствованиеFresh, repayBorrow, repayBorrowFresh, repayBorrowBehalf, addReserves);
  • Проверка функций контракта Контроллера (конструктор, _setLiquidationIncentive, _setPriceOracle, _setCloseFactor, _setCollateralFactor, _supportMarket, ликвидироватьBorrowAllowed, redeemVerify, ликвидироватьCalculateAmountSeize, _setPauseGuardian, настройка приостановлена, ликвидность, getAccountLiquidity, getHypotheticalAccountLiquidity, Admin, _setPendingAdmin);
  • Проверка функций контракта CompoundLens (cTokenMetadata, cTokenMetadataAll, cTokenBalances, cTokenBalancesAll, cTokenUnderlyingPrice, cTokenUnderlyingPriceAll, getAccountLimits, управление, комп);
  • Тестовые функции контракта PriceOracleProxy (конструктор, getUnderlyingPrice);
  • Тестовые функции контракта Timelock (конструктор, setDelay, setPendingAdmin, acceptAdmin, queueTransaction, cancelTransaction, executeTransaction, executeTransaction, очередь и отмена пусты);
  • Тестовые функции контракта InterestRateModel (baseP025-slopeP20, тесты скорости скачка, baseP05-slopeP45, isInterestRateModel, вычисляет правильную стоимость займа, скорость скачка);
  • Протестируйте функции контракта CCompLikeDelegate (_delegateCompLikeTo);
  • Протестировать контрактные функции Maximillion (конструктор, repayBehalf);
  • Протестировать функции контракта DAIInterestRateModelV3 (конструктор, getBorrowRate, getSupplyRate);
  • Протестируйте функции контракта маховика (_grantComp, getCompMarkets, _setCompSpeeds, updateCompBorrowIndex, updateCompSupplyIndex, DistributBorrowerComp, distributSupplierComp, transferComp, ClaimComp, ClaimComp пакет, жгутRefreshCompSpeeds, жгутSetCompSpeeds, жгутAddCompMarkets, updateContributorRewards, _setContributorCompSpeed).

Объем тестирования был сосредоточен на следующих развернутых контрактах:

Перед развертыванием и тестированием Zpoken внесла два основных изменения в смарт-контракты протокола Compound:

  • Первое изменение было внесено в константы GRACE_PERIOD и MINIMUM_DELAY в Timelock.sol . Константы влияют на ограничения времени выполнения функций в контрактах. Изменения были необходимы, поскольку команда Zpoken проводила тесты на действующих сетевых узлах Neon и не могла манипулировать временем и номерами блоков.
  • Второе изменение скорректировало адрес внешнего контракта Comp в контракте Comptroller.sol (через функцию getCompAddress()).

После внесения изменений в контракт команда Zpoken выполнила развертывание в Neon Devnet из репозитория neon-smart-contract-dev/compound-finance с помощью команды yarn deploy -n neon .

После развертывания были запущены тесты из репозитория neon-smart-contract-dev/compound-finance . Для запуска тестов сначала необходимо было настроить локальную среду Neon и добавить закрытые ключи в ~/.neon/neon. Команда для запуска тестов была . start.sh

Тесты также запускались в локальной среде Neon через Docker в репозитории neon-smart-contract-dev/compound-finance . Этапы проведения теста следующие:

  1. Запустите локальный узел Neon, используя proxy-model.py
  2. Создайте образ докера, используя sudo docker build -t составной протокол.
  3. Запустите контейнер с помощью sudo docker run -it — net=host Compound-Protocol

Результаты проекта включают сценарии развертывания и тестирования, а также интеграционные и модульные тесты. Доступ к сценариям развертывания и тестирования можно получить через репозиторий . Выполненные интеграционные и модульные тесты доступны в репозитории GitHub и могут быть запущены в контейнере Docker для повторного воспроизведения сценариев тестирования.

Zpoken успешно развернул и протестировал базовые контракты протокола Compound, а также пул подкачки. Развертывание и связанные с ним тесты показали, что Neon EVM работает правильно и полностью совместим с Ethereum в отношении запуска сложных приложений dApp, таких как Compound. Все интеграционные и модульные тесты пройдены. Развертывание контракта, логика, математика и функциональность работают, как и ожидалось командой разработчиков Compound. Единственное, что не удалось протестировать, — это Compound Web Application из-за отсутствия Compound API в общедоступных репозиториях GitHub.

Zpoken также выявил две проблемы с платформой Neon:

  1. Для развертывания и тестирования составных контрактов требуется поддержка RPC eth_accounts. Метод был реализован, но есть ошибки, которые Neon Labs в настоящее время устраняет.
  2. Многопоточное выполнение тестовых сценариев, реализованное в исходных Compound-тестах, не поддерживается сетью Neon. Тесты были созданы для Ganache , персонального симулятора блокчейна Ethereum, а не для живой ноды. Попытка использовать несколько потоков приводит к ошибкам «nonce too low». Чтобы избежать ошибки, каждый скрипт должен запускаться с другого адреса развертывателя. Однако в тестах, использующих несколько потоков внутри одного теста, ошибки не избежать. Тесты не могли быть запущены в этих сценариях и были пропущены.

Пришло время ВАМ развернуть свои собственные смарт-контракты в Neon EVM. Обязательно делитесь с нами своими отзывами о Neon EVM на протяжении всего процесса. Если у вас есть какие-либо проблемы или вам нужны дополнительные рекомендации, ознакомьтесь с нашей Neon Docs или обратитесь к члену команды в Discord . Мы знаем, что вы создадите что-то великое!

Tags:

Leave a Reply

Your email address will not be published. Required fields are marked *