Вызов функции контракта солидности из эфиров с параметром uint16 работает только при числе 9 или меньше
У меня есть этот код в моем контракте на солидность:
константа uint256 maxNum = 10000;
function mintNewFull(uint16 tokenId) public {
require (0 <= tokenId && tokenId < maxNum;
// do other stuff
}
И я вызвал это с помощью этого кода в эфире, который работал:
contractWithSigner.mintNewFull(3);
Но позже, когда я изменил его на попытку монетного двора с tokenID 11:
contractWithSigner.mintNewFull(11);
Это не сработало. И я попробовал, и все числа меньше 10 работают, а числа больше - нет.
Это какая-то проблема с uint16 uint256? Если мою константу maxNum изменить на uint16, нельзя ли с помощью ethers вызвать функцию с параметром uint16? Я понятия не имею, как передать uimt16 вместо uint256, потому что я не мог найти, как объявить типы параметров в документах ethers. Кажется, что все просто используют числа или строки, что сбивает с толку (особенно когда мне позже придется передавать массив).
Пожалуйста, помогите, спасибо
1 ответ
Я понял!!! Оказывается, это было что-то в
// do other stuff
часть, где я вызывал целочисленное переполнение.
Ура, я так счастлива :):)