Size: a a a

2021 February 25

A

Alex in Ethereum Russia
Evgenii Panichev | GaltProject.io
а почему в DepositWallet токен и ресивер не принимаются аргументами а захардкожены?
через аргументы нельзя, Но в фабрике они динамичные. Там прям в байткод они подставляются, те которые нужны
источник

EP

Evgenii Panichev | G... in Ethereum Russia
Alex
через аргументы нельзя, Но в фабрике они динамичные. Там прям в байткод они подставляются, те которые нужны
ты скомпилил контракт и скопировал байткод в фабрику за исключением этих аргументов, чтобы их в нужном месте вставить?
источник

A

Alex in Ethereum Russia
Если деплоить через CREATE2 то там нельзя подставить входые аргументы как при обычном деплое
источник

EP

Evgenii Panichev | G... in Ethereum Russia
ну тоесть ты сделал как я выше описал?
источник

A

Alex in Ethereum Russia
Evgenii Panichev | GaltProject.io
ну тоесть ты сделал как я выше описал?
Да
источник

EP

Evgenii Panichev | G... in Ethereum Russia
круто
источник

EP

Evgenii Panichev | G... in Ethereum Russia
пробовал увеличивать это число чтобы оптимизировать затрачиваемый газ?
источник

A

Alex in Ethereum Russia
Да конечно, но не помогло, после  200 прогонов уже вроде не особо смысл есть
источник

EP

Evgenii Panichev | G... in Ethereum Russia
ясн, ну не знаю чем тут ещё помочь можно) на сайдчейне гоняй проект чтобы меньше денег тратить на газ))
источник

MM

Mikhail Melnik in Ethereum Russia
Alex
Если деплоить через CREATE2 то там нельзя подставить входые аргументы как при обычном деплое
Сомнительное утверждение
источник

A

Alex in Ethereum Russia
Mikhail Melnik
Сомнительное утверждение
покажи, буду рад убрать костыли.
источник

AZ

Alexey Zhdanov in Ethereum Russia
А если на Yul собрать контракт?
источник

A

Alex in Ethereum Russia
Alexey Zhdanov
А если на Yul собрать контракт?
Можно попробовать
источник

AZ

Alexey Zhdanov in Ethereum Russia
Mikhail Melnik
Сомнительное утверждение
Стало интересно, нашёл это https://github.com/martinetlee/create2-snippets

contract WalletFactory{
 // ....

 function deployWallet(address designatedOwner, uint256 salt){
   
   bytes memory initCode = abi.encodePacked(type(Wallet).creationCode, designatedOwner);

   address deployedContract;
   assembly{
     deployedContract := create2(0, add(initCode, 0x20), mload(initCode), salt)
   }
   emit ContractDeployed(deployedContract);
 }
}
источник

AZ

Alexey Zhdanov in Ethereum Russia
Там же байткод деплоя содержит в себе аргументы конструктора
источник

A

Alex in Ethereum Russia
Alexey Zhdanov
Стало интересно, нашёл это https://github.com/martinetlee/create2-snippets

contract WalletFactory{
 // ....

 function deployWallet(address designatedOwner, uint256 salt){
   
   bytes memory initCode = abi.encodePacked(type(Wallet).creationCode, designatedOwner);

   address deployedContract;
   assembly{
     deployedContract := create2(0, add(initCode, 0x20), mload(initCode), salt)
   }
   emit ContractDeployed(deployedContract);
 }
}
Да, уже объяснили
источник

V

Vladimir in Ethereum Russia
Alex
Мб будет кому-то полезно и может кто-то подскажет как лучше оптимизировать решение: биржи и сервисы используют временные депозитные адреса для получения токенов юзеров. Для их вывода они потом отправляют немного эфира на этот адрес и делают трансфер токенов. В сумме это 2 транзакции (~47000 газа в лучшем случае). Через create2 можно выводить за одну транзу в ~57000 газа, PoC :https://github.com/davy42/DepositWallet Сам контракт крохотных и хотелось бы максимально оптимизировать байткод,
так профит-то какой? 47к < 57к
источник

A

Alex in Ethereum Russia
Vladimir
так профит-то какой? 47к < 57к
1 транза вместо 2,
источник

V

Vladimir in Ethereum Russia
экономии газа-то нет.
источник

V

Vladimir in Ethereum Russia
а транзакции зачем экономить?
источник