Size: a a a

2021 July 22

TD

Tyler Dyrden in Ethereum Russia
а как? где почитать про это?
источник

MD

Microwave Dev in Ethereum Russia
источник

TD

Tyler Dyrden in Ethereum Russia
ого, я подозревал что такое может быть, спасибо
источник

MD

Microwave Dev in Ethereum Russia
надо бы самому разобраться как следует и пост написать, интересная тема
источник

RP

Roman P in Ethereum Russia
Тут вот ещё была небольшая интересная история с флешботами
https://twitter.com/andrekorol1/status/1358252320207876104?s=19
источник

MD

Microwave Dev in Ethereum Russia
спасибо!
источник

SM

Sergey Mironov in Ethereum Russia
Народ, помогите разобраться в мистической хрени.

Один контракт вызывает функцию второго по переводу токенов, командой
_mainContract.safeTransferFrom(address(this), _msgSender(), getTokenId(), 1, "");

В таком виде транзакция проходит
Если вместо 1 в предпоследнем аргументе я подставляю переменную типа uint256, то транзакция фейлится.
уже даже эту переменную ивентом оттрейсил, она = 1 и все равно фелится
источник

MD

Microwave Dev in Ethereum Russia
если с текущего адреса надо перевести то нужно просто safeTransfer юзать, а не safeTransferFrom
источник

SM

Sergey Mironov in Ethereum Russia
нет, это erc1155 контракт, там нет SafeTransfer
источник

SM

Sergey Mironov in Ethereum Russia
И проблема не в выборе функции, а в том, что с прописанным руками значением транзакция проходит, а с тем же значением, но переданным в виде переменной - нет
источник

MD

Microwave Dev in Ethereum Russia
а что за аргумент там, в который ты 1 передаёшь?
источник

SM

Sergey Mironov in Ethereum Russia
это сумма токенов
источник

MD

Microwave Dev in Ethereum Russia
а аргумент точно с типом uint256?
источник

SM

Sergey Mironov in Ethereum Russia
да
источник

SM

Sergey Mironov in Ethereum Russia
я уже не знаю, что думать, реально какая-то мистика
источник

MD

Microwave Dev in Ethereum Russia
покажи код самой функции transferFrom
источник

SM

Sergey Mironov in Ethereum Russia
стандартная от erc1155

   function _safeTransferFrom(
       address from,
       address to,
       uint256 id,
       uint256 amount,
       bytes memory data
   ) internal virtual {
       require(to != address(0), "ERC1155: transfer to the zero address");

       address operator = _msgSender();

       _beforeTokenTransfer(operator, from, to, _asSingletonArray(id), _asSingletonArray(amount), data);

       uint256 fromBalance = _balances[id][from];
       require(fromBalance >= amount, "ERC1155: insufficient balance for transfer");
       unchecked {
           _balances[id][from] = fromBalance - amount;
       }
       _balances[id][to] += amount;

       emit TransferSingle(operator, from, to, id, amount);

       _doSafeTransferAcceptanceCheck(operator, from, to, id, amount, data);
   }
источник

RP

Roman P in Ethereum Russia
а как фейлится? не могли так звëзды сойтись что какой-нибудь там стек переполняется как раз?
источник

SM

Sergey Mironov in Ethereum Russia
несколько раз пробовал в разное время - одно и то же
источник

SM

Sergey Mironov in Ethereum Russia
фейлится без вразумительных объяснений
источник