web3 или других инструментов, является ли адресс смарт контрактом или нет ?
Я прочитал, что
web3.eth.getCode
Не надежно
чем не надежно?
Можете использовать функцию из библиотеки контрактов zeppelin
Надежный способ если этот контракт существует хотя бы блок Потому что во время деплоя у контракта еще нет кода (пока крутится конструктор)
Если ты напишешь смарт контракт, который проверяет, не является ли вызывающий смарт контрактом А я вызову твой контракт из конструктора своего смарт контракта, то твой скажет, что я не смарт контракт Типа кода нет еще Это ответ про solidity<>solidity проверку Для web3/ethers<>solidity другие правила
что если сравнить msg.orgin и msg.sender в таком случаи?
Не поможет Хорошая практика – вообще забыть что такое tx.origin раз и навсегда
Есть вариант msg.sender == msg.origin Но это лишь сможет гарантировать, что вызывающий - это кошелек пользователя. С контрактами гарантированно убедиться так не получится по причинам выше Ну и да, аутентификацию на msg.origin делать ни в коем случае нельзя
нет, не сможет гарантировать
Почему? msg.origin - это всегда кошель в цепочке вызовов Если не учитывать нововведения эти
Ждем и готовимся) Да, лучше такое совсем теперь не юзать
Обсуждают сегодня