Size: a a a

2021 July 26

DG

Denis Glotov in Ethereum Russia
не, там же mload(add(array, index)), то есть загружаем слот по адресу, который есть сумма array + index, где
array = msg.data,
index = msg.data.length
источник

DG

Denis Glotov in Ethereum Russia
(а маска накладывается в конце, про нее я не упомянул для краткости)
источник

MD

Microwave Dev in Ethereum Russia
судя по всему это стандартная практика, честно говоря не шарю в низкоуровневом, но в доках солидити примерно такойже пример

https://docs.soliditylang.org/en/v0.5.4/assembly.html
источник

DG

Denis Glotov in Ethereum Russia
может быть этот abi.encodePacked(functionSignature, userAddress) по второй ссылке, создает такой массив в msg.data, длинна которого = длинна только functionSignature. Но о таком извращении даже думать не хочется
источник

DG

Denis Glotov in Ethereum Russia
тут как раз кристально чисто: они к адресу _data прибавляют 1 слот (20 байт), что бы обойти длинну массива (длинна хранится в первом слоте)
источник

MD

Microwave Dev in Ethereum Russia
а потом добавляют умножение на индекс массива
источник

DG

Denis Glotov in Ethereum Russia
и еще умножают i на 20 (длинна слота в байнах)
источник

DG

Denis Glotov in Ethereum Russia
это еще по-человечески :)
источник

MD

Microwave Dev in Ethereum Russia
а здесь?
источник

MM

Mikhail Melnik in Ethereum Russia
Это не сразу за, это читается последнее слово msg.data
источник

DG

Denis Glotov in Ethereum Russia
кажется я сам понял, спасибо за наведение на мысль!
источник

MD

Microwave Dev in Ethereum Russia
mload происходит из суммы data и 0x20
источник

DG

Denis Glotov in Ethereum Russia
именно. так как 0x20 мы не прибавили
источник

MM

Mikhail Melnik in Ethereum Russia
Масивы в памяти хранятся так:
первое слово — длина
остальная память (размер типа * длина) — данные
источник

DG

Denis Glotov in Ethereum Russia
а это и есть длинна адреса
источник

MM

Mikhail Melnik in Ethereum Russia
+
источник

DG

Denis Glotov in Ethereum Russia
С ассемблера, с ассемблера PDP-11 мы начинали, ассемблером EVM продолжаем. Эволюция сделала новый круг
источник

N

Nikita in Ethereum Russia
зубкова в детстве до дыр зачитал)
источник

N

Nikita in Ethereum Russia
В тетрадке решал примеры
источник

DG

Denis Glotov in Ethereum Russia
:) Прям всем спасибо, один бы долго еще пыхтел
источник