Например, на моем текущем проекте (thUSD) веб часть использвет web3.js плюс плагин для кошелька (можно и metamask). Как результат такое дебажить проще. Т.е. Метамаск не будет готовить транзакцию для подписания, это будет делать web часть, а Метамаск только подписывать (на случай, если что-то не так именно с подготовкой транзакций).
По поводу плагинов - кроме стандартного для solidity все остальное зависит от того какая среда для тестов и деплоя. Hardhat, foundry или что-то еще. И вот для этого всего обычно есть отдельный плагин (ручаюсь как минимум за hardhat)
Тут не могу сильно помочь, т.к. к Remix не очень тепло отношусь (по подобным причинам когда нужно разобраться в тонкостях). И Metamask тоже не раз скрывал реальную ошибку за бесполезным сообщением о газе. Так что в проектах где я участвую всегда используется либо web3.js либо web3.py (иногда правда в связке с metamask). Как идея в каком направлении двигаться: тестовая локальная нода + web3.js код для деплоя. Будет возможность убедиться, что это не проблема (или все же именно проблема) Remix с тем какие параметры транзакции задавать (а тут вариация не маленькая) и вполне вероятно получить нормальное сообщение об ошибке. Из IDE - рекомендую Visual Code, много плагинов для solidity.
EIP-1559 относится к блокчейну это правильно, но никак не относится к контрактам. По сути своей это изменение формата самой транзакции, но не байткода транзакции. A библиотеки openzeppelin это только solidity. После компиляции ничего кроме набора opcode на выходе ну будет (там конечно abi, metadata, но это все не обязательно). И совместимость с EVM будет определяться только по совместимости opcode.
И еще добавка по EIP-1559 - это изменило как комуницировать с клиентом ноды (своей или чужой), причем помню, что некоторые клиенты до сих пор могут принимать старый формат.
Лично не сталкивалась с несовместимостью, но могу представить, например, какой-то opcode не поддерживается. Как идея для проверки хорошая, взять хотя бы 0.7.x версию для компиляции.
Если я правильно понимаю, то тут контракт и не нужен. Приведенный код отсылает эфир, который принадлежит именно контракту, а не 1му аккаунту. Поэтому видимо и ошибка, т.к. средств на счету контракта нет. Чтобы переслать эфир - необходимо отправить пустую транзакцию (с пустым полем data) и прикрепленным эфиром на 2й аккаунт без посредника. Если же нужен посредник (контракт) - то сначала переслать эфир ему.
Пробую в Remix - компиляция проходит (ну и пара собственных контрактов работают с похожим кодом).
А ругается компилятор или же транзакция не выполняется?
Независимо от количество контрактов в вызове (а их может быть больше одного) и не зависимо от того, какой тип транзакции (пересылка средств это просто подвид остальных обращений контракту и/или другому адресу) - всегда платит тот, кто подписал транзакцию.
Причем хоть и называется комиссией, но по факту инициатор должен оплатить сложность работы операции, измеряемую в газе. Отправка средств - это одна из самых дешевых транзакций, порядка 23 000 газа.
А вот вывод средств - это уже выполнение хоть какого-то минимального кода и будет дороже, хотя зависит от реализации.
И еще один момент - цена за газ очень сильно варьируется и иногда можно выставить 0, хотя гарантий что такая транзакция будет включена в блокчейн нет.
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.
По поводу плагинов - кроме стандартного для solidity все остальное зависит от того какая среда для тестов и деплоя. Hardhat, foundry или что-то еще. И вот для этого всего обычно есть отдельный плагин (ручаюсь как минимум за hardhat)