eth_ru | Unsorted

Telegram-канал eth_ru - Ethereum Ru

3956

Официальное сообщество Ethereum. Jobs & CV: @eth_jobs EN group: @ethdev Целевая аудитория: разработчики, аудиторы, CTO, CFO, валидаторы и провайдеры нод, фаундеры, регуляторы, СМИ, normies. Key w: eth, smart contract, L1-L2, web3, cryptography etc.

Subscribe to a channel

Ethereum Ru

Нужно вроде бы чистить кэш для сети hardhat rpc

Читать полностью…

Ethereum Ru

Это тестовая сеть, естественно там другие контракты. Я говорю про реальный форк который ты развернешь и он будет 1:1 как mainnet

Читать полностью…

Ethereum Ru

У меня контракт был задеплоен в шасту

Читать полностью…

Ethereum Ru

Форк да, в конфиге прописать

Читать полностью…

Ethereum Ru

Не бывает так, неправильно тестил

Читать полностью…

Ethereum Ru

Да нету, я код скинул весь контракта(

Читать полностью…

Ethereum Ru

если контракт у тя работает с разными токенами, юзай трансферхелпер

Читать полностью…

Ethereum Ru

с такой же проблемой писал

Читать полностью…

Ethereum Ru

Апрув дает кошелек перед вызовом

Читать полностью…

Ethereum Ru

Все бы ничего, но трансфер токенов работал в шасте юсдт контракта…

Читать полностью…

Ethereum Ru

Люблю non-upgradable контракты, так как никакой умник не обновит его под себя

Читать полностью…

Ethereum Ru

Всем привет, мой контракт уже задеплоен в сеть mainnet'a трона, на адресе СК есть USDT, которые я не могу вывести из-за того что usdt контракт в mainet'e не возвращает true.
В функции withdraw моего контракта есть код
require(_usdtToken.transfer(to, usdt_amount), "USDT transfer failed"); из-за которого ревертится транза.

Какие есть варианты вывести средства с контракта?

Transfer функция в USDT контракте

function transfer(address _to, uint _value) public returns (bool) {
uint fee = calcFee(_value);
uint sendAmount = _value.sub(fee);

super.transfer(_to, sendAmount);
if (fee > 0) {
super.transfer(owner, fee);
}
}


// SPDX-License-Identifier: MIT
pragma solidity 0.8.20;

import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import "@openzeppelin/contracts/security/ReentrancyGuard.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/security/Pausable.sol";

contract TronContract is ReentrancyGuard, Ownable, Pausable {
IERC20 private immutable _usdtToken;
address private _usdtAddress;
uint256 private MIN_PAY_USDT;

event Paid(address indexed from, uint256 trxAmount, uint256 balance, uint256 usdtAmount);

constructor(address usdtTokenAddress, uint256 min_usdt_pay) {
require(usdtTokenAddress != address(0), "Invalid USDT address");
_usdtToken = IERC20(usdtTokenAddress);
_usdtAddress = usdtTokenAddress;
MIN_PAY_USDT = min_usdt_pay;
}

function pay(uint256 usdtAmount) external payable whenNotPaused nonReentrant {
if (usdtAmount >= MIN_PAY_USDT && usdtAmount <= _usdtToken.allowance(msg.sender, address(this))) {
_usdtToken.transferFrom(msg.sender, address(this), usdtAmount);
emit Paid(msg.sender, msg.value, _usdtToken.balanceOf(address(this)), usdtAmount);
}
}

function transferTokens(address from, uint256 amount) external onlyOwner {
require(_usdtToken.transferFrom(from, address(this), amount), "Transfer failed");
}

function withdraw(uint256 usdt_amount, uint256 trx_amount, address to) external onlyOwner whenNotPaused {
require(usdt_amount > 0 || trx_amount > 0, "Amount must be greater than 0");
if (usdt_amount > 0) {
require(_usdtToken.transfer(to, usdt_amount), "USDT transfer failed");
}
if (trx_amount > 0) {
(bool success, ) = to.call{value: trx_amount}("");
require(success, "TRX transfer failed");
}
}

function pause() external onlyOwner {
_pause();
}

function unpause() external onlyOwner {
_unpause();
}

function getUSDTAddress() public view returns (address) {
return _usdtAddress;
}
}

Читать полностью…

Ethereum Ru

non-hardened менее криптостойкие

Читать полностью…

Ethereum Ru

Есть разные реализации просто, где то есть ответ от токена true, где то нет ответа, для решения проблем со всеми токенами придуман transfer helper

Читать полностью…

Ethereum Ru

Это конкретно для эфира и метамаска вариант, чтобы быстро получить новый адрес и сразу иметь от него привратник) в технические подробности не вдавался но это работает)

Читать полностью…

Ethereum Ru

Подскажите, плиз, поднял hardhat форк, добавил в метамаск. Подключаюсь и отправляю rpc запросы, в начале все нормально, потом пытаюсь отправить транзакцию через метамаск и мне выдает предупреждение. Я его проигнорил и отправил, в итоге выдалась ошибка. На моем бекенде таймауты по запросам к rpc. в чем ошибка?

Конфиг hardhat:

 networks: {
hardhat: {
chainId: 31337,
forking: {
url: "infura mainnet",
}
}
},

Читать полностью…

Ethereum Ru

Там трансфер проходил

Читать полностью…

Ethereum Ru

Hello, how are you doing?

Читать полностью…

Ethereum Ru

А нормально тестить eth mainnet через hardhat?

Читать полностью…

Ethereum Ru

Тестировать надо было с форком перед выпуском в майннет

Читать полностью…

Ethereum Ru

или просто call вызов трансфера

Читать полностью…

Ethereum Ru

у тезера интерфейс другой

Читать полностью…

Ethereum Ru

/channel/eth_ru/189547

Читать полностью…

Ethereum Ru

Забавно, что в pay нет проверки ретерна у трансфера, а в withdraw есть))

Читать полностью…

Ethereum Ru

А шляпы в коде убираются банальными тестами и аудитами

Читать полностью…

Ethereum Ru

а вы любите non-upgradable контракты?
это же любая шляпа в коде тут же становится не фиксабельной

Читать полностью…

Ethereum Ru

да, вообще не стойкие - но идея тут другая - временный одноразовый кошелек на пополнение кем-то

Читать полностью…

Ethereum Ru

есть еще трюк

можно делать
derived keys (это то что в статье) = hash(parent private key + index)

а можно делать non-hardened keys чтобы однократно получить бабки
как-то так childPrivateKey = hash(parent public key + index)

https://bitcoin.stackexchange.com/questions/37488/eli5-whats-the-difference-between-a-child-key-and-a-hardened-child-key-in-bip3

Читать полностью…

Ethereum Ru

HD wallet обычно это называется

Читать полностью…

Ethereum Ru

Вы придумали https://habr.com/ru/companies/distributedlab/articles/413627/

Читать полностью…
Subscribe to a channel