openlang

Ошибка преобразования типа address в uint256 в Solidity

Я создал массив структур и попытался получить из него значения каждого аккаунта. Но передача переменной address, содержащей msg.sender, не удалась с этим массивом, поскольку её тип, видимо, не преобразуется в uint256. Как это сделать?

Переведено с английскогоПоказать оригинал

Разговор продолжается 3

Следуя доводам
  1. Ссылка на ответ

    Начиная с Solidity v0.8, явное преобразование напрямую из address в uint256 больше не разрешено.

    Вместо этого используется:

    uint256 accountNumber = uint256(uint160(msg.sender));
    function encodeAccount(address account) internal pure returns (uint256) {
        return uint256(uint160(account));
    }
    Переведено с английскогоПоказать оригинал
  2. Ссылка на ответ

    До Solidity v0.8.0 допускалась такая форма:

    pragma <0.8.0;
    
    return address(toUint(entry));

    Начиная с Solidity v0.8.0, используйте вместо неё следующую:

    pragma ^0.8.0
    
    return address(uint160(toUint(entry)));
    • Справочные материалы

    address(uint) и uint(address): они одновременно меняют разрядность и категорию типа. Замените их соответственно на address(uint160(uint) и uint(uint160(address)).

    смотрите Solidity Documentation, v0.8.0 breaking changes

    Переведено с английскогоПоказать оригинал

Другие стороны того же вопроса

  1. Инициализация TypeScript Map со значениями в виде массивов строк

    Создаю Map, в котором каждая запись содержит массив строк. Как одновременно задать его тип и инициализировать одним выражение…

    Ответы 2Последняя активность typescript
  2. Контракт вызываемой функции в Typescript

    Почему Typescript принимает определение моей функции, хотя оно отличается от сигнатуры интерфейса, но сообщает о проблеме, ко…

    Ответы 2Последняя активность typescript
  3. List<Int> только для чтения - это снимок?

    List<Int> всего лишь представление только для чтения, а не снимок. Он сообщает потребителю, какие операции доступны через эту…

    Ответы 4Последняя активность kotlin