Diff
checker
Texto
Texto
Imagens
Documentos
Excel
Pastas
Legal
Enterprise
Aplicativo para desktop
Preços
Fazer login
Baixar o Diffchecker Desktop
Comparar texto
Encontre a diferença entre dois arquivos de texto
Ferramentas
Histórico
Exibição
Layout
Dividido
Unificado
Editor live
Ocultar espaços em branco
Recolher inalteradas
Sem quebra de linha
Nível de detalhe
Inteligente
Sintaxe
Nenhum
Alterar aparência
Processamento
Ignorar
Transformar texto
Ir à primeira mudança
Editar entrada
Diffchecker Desktop
A maneira mais segura de usar o Diffchecker. Obtenha o aplicativo Diffchecker Desktop: seus diffs nunca saem do seu computador!
Obter Desktop
UnstakeStETH
Criado
há 12 meses
O diff nunca expira
Limpar
Exportar
Compartilhar
Explicar
11 remoções
Linhas
Total
Removido
Caracteres
Total
Removido
Para continuar usando este recurso, atualize para
Diff
checker
Pro
Ver preços
67 linhas
Copiar tudo
8 adições
Linhas
Total
Adicionado
Caracteres
Total
Adicionado
Para continuar usando este recurso, atualize para
Diff
checker
Pro
Ver preços
67 linhas
Copiar tudo
// SPDX-License-Identifier: BUSL-1.1
// SPDX-License-Identifier: BUSL-1.1
Copiar
Copiado
Copiar
Copiado
pragma solidity 0.8.
21
;
pragma solidity 0.8.
27
;
import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import { Initializable } from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
import { Initializable } from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
Copiar
Copiado
Copiar
Copiado
import { SafeERC20 } from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
interface ILidoWithdrawalQueue {
interface ILidoWithdrawalQueue {
function requestWithdrawals(
function requestWithdrawals(
uint256[] calldata _amounts,
uint256[] calldata _amounts,
address _owner
address _owner
)
)
external
external
returns (uint256[] memory requestIds);
returns (uint256[] memory requestIds);
/// Usage: findCheckpointHints(_requestIds, 1, getLastCheckpointIndex())
/// Usage: findCheckpointHints(_requestIds, 1, getLastCheckpointIndex())
function findCheckpointHints(
function findCheckpointHints(
uint256[] calldata _requestIds,
uint256[] calldata _requestIds,
uint256 _firstIndex,
uint256 _firstIndex,
uint256 _lastIndex
uint256 _lastIndex
)
)
external
external
view
view
returns (uint256[] memory hintIds);
returns (uint256[] memory hintIds);
function getLastCheckpointIndex() external view returns (uint256);
function getLastCheckpointIndex() external view returns (uint256);
Copiar
Copiado
Copiar
Copiado
function claimWithdrawalsTo(
function claimWithdrawalsTo(
uint256[] calldata _requestIds,
uint256[] calldata _hints,
address _recipient
)
external;
uint256[] calldata _requestIds,
uint256[] calldata _hints,
address _recipient
)
external;
function finalize(uint256 _lastRequestIdToBeFinalized, uint256 _maxShareRate) external payable;
function finalize(uint256 _lastRequestIdToBeFinalized, uint256 _maxShareRate) external payable;
function getLastRequestId() external view returns (uint256);
function getLastRequestId() external view returns (uint256);
}
}
Copiar
Copiado
Copiar
Copiado
/// @dev Upgradeable base contract without storage gaps; adding variables in upgrades can collide with inheritors.
abstract contract UnstakeStETH is Initializable {
abstract contract UnstakeStETH is Initializable {
Copiar
Copiado
Copiar
Copiado
using SafeERC20 for IERC20;
ILidoWithdrawalQueue public withdrawalQueue;
ILidoWithdrawalQueue public withdrawalQueue;
IERC20 public stETH;
IERC20 public stETH;
event UnstakeStETHStarted(uint256 tokenId);
event UnstakeStETHStarted(uint256 tokenId);
function __initializeStETH(address _withdrawalQueue, address _stETHAddress) internal onlyInitializing {
function __initializeStETH(address _withdrawalQueue, address _stETHAddress) internal onlyInitializing {
withdrawalQueue = ILidoWithdrawalQueue(_withdrawalQueue);
withdrawalQueue = ILidoWithdrawalQueue(_withdrawalQueue);
stETH = IERC20(_stETHAddress);
stETH = IERC20(_stETHAddress);
}
}
function _unstakeStEth(uint256 amountToUnstake) internal {
function _unstakeStEth(uint256 amountToUnstake) internal {
Copiar
Copiado
Copiar
Copiado
stETH.
approve
(address(withdrawalQueue), amountToUnstake);
stETH.
safeIncreaseAllowance
(address(withdrawalQueue), amountToUnstake);
uint256[] memory amounts = new uint256[](1);
uint256[] memory amounts = new uint256[](1);
amounts[0] = amountToUnstake;
amounts[0] = amountToUnstake;
uint256[] memory requestIds = withdrawalQueue.requestWithdrawals(amounts, address(this));
uint256[] memory requestIds = withdrawalQueue.requestWithdrawals(amounts, address(this));
emit UnstakeStETHStarted(requestIds[0]);
emit UnstakeStETHStarted(requestIds[0]);
}
}
function _claimStEth(uint256 _requestId, uint256 _hint) internal {
function _claimStEth(uint256 _requestId, uint256 _hint) internal {
uint256[] memory requestIds = new uint256[](1);
uint256[] memory requestIds = new uint256[](1);
uint256[] memory hints = new uint256[](1);
uint256[] memory hints = new uint256[](1);
requestIds[0] = _requestId;
requestIds[0] = _requestId;
hints[0] = _hint;
hints[0] = _hint;
withdrawalQueue.claimWithdrawalsTo(requestIds, hints, address(this));
withdrawalQueue.claimWithdrawalsTo(requestIds, hints, address(this));
}
}
}
}
Copiar
Copiado
Copiar
Copiado
Diferenças salvas
Texto original
Abrir arquivo
// SPDX-License-Identifier: BUSL-1.1 pragma solidity 0.8.21; import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import { Initializable } from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; interface ILidoWithdrawalQueue { function requestWithdrawals( uint256[] calldata _amounts, address _owner ) external returns (uint256[] memory requestIds); /// Usage: findCheckpointHints(_requestIds, 1, getLastCheckpointIndex()) function findCheckpointHints( uint256[] calldata _requestIds, uint256 _firstIndex, uint256 _lastIndex ) external view returns (uint256[] memory hintIds); function getLastCheckpointIndex() external view returns (uint256); function claimWithdrawalsTo( uint256[] calldata _requestIds, uint256[] calldata _hints, address _recipient ) external; function finalize(uint256 _lastRequestIdToBeFinalized, uint256 _maxShareRate) external payable; function getLastRequestId() external view returns (uint256); } abstract contract UnstakeStETH is Initializable { ILidoWithdrawalQueue public withdrawalQueue; IERC20 public stETH; event UnstakeStETHStarted(uint256 tokenId); function __initializeStETH(address _withdrawalQueue, address _stETHAddress) internal onlyInitializing { withdrawalQueue = ILidoWithdrawalQueue(_withdrawalQueue); stETH = IERC20(_stETHAddress); } function _unstakeStEth(uint256 amountToUnstake) internal { stETH.approve(address(withdrawalQueue), amountToUnstake); uint256[] memory amounts = new uint256[](1); amounts[0] = amountToUnstake; uint256[] memory requestIds = withdrawalQueue.requestWithdrawals(amounts, address(this)); emit UnstakeStETHStarted(requestIds[0]); } function _claimStEth(uint256 _requestId, uint256 _hint) internal { uint256[] memory requestIds = new uint256[](1); uint256[] memory hints = new uint256[](1); requestIds[0] = _requestId; hints[0] = _hint; withdrawalQueue.claimWithdrawalsTo(requestIds, hints, address(this)); } }
Texto alterado
Abrir arquivo
// SPDX-License-Identifier: BUSL-1.1 pragma solidity 0.8.27; import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import { Initializable } from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; import { SafeERC20 } from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; interface ILidoWithdrawalQueue { function requestWithdrawals( uint256[] calldata _amounts, address _owner ) external returns (uint256[] memory requestIds); /// Usage: findCheckpointHints(_requestIds, 1, getLastCheckpointIndex()) function findCheckpointHints( uint256[] calldata _requestIds, uint256 _firstIndex, uint256 _lastIndex ) external view returns (uint256[] memory hintIds); function getLastCheckpointIndex() external view returns (uint256); function claimWithdrawalsTo(uint256[] calldata _requestIds, uint256[] calldata _hints, address _recipient) external; function finalize(uint256 _lastRequestIdToBeFinalized, uint256 _maxShareRate) external payable; function getLastRequestId() external view returns (uint256); } /// @dev Upgradeable base contract without storage gaps; adding variables in upgrades can collide with inheritors. abstract contract UnstakeStETH is Initializable { using SafeERC20 for IERC20; ILidoWithdrawalQueue public withdrawalQueue; IERC20 public stETH; event UnstakeStETHStarted(uint256 tokenId); function __initializeStETH(address _withdrawalQueue, address _stETHAddress) internal onlyInitializing { withdrawalQueue = ILidoWithdrawalQueue(_withdrawalQueue); stETH = IERC20(_stETHAddress); } function _unstakeStEth(uint256 amountToUnstake) internal { stETH.safeIncreaseAllowance(address(withdrawalQueue), amountToUnstake); uint256[] memory amounts = new uint256[](1); amounts[0] = amountToUnstake; uint256[] memory requestIds = withdrawalQueue.requestWithdrawals(amounts, address(this)); emit UnstakeStETHStarted(requestIds[0]); } function _claimStEth(uint256 _requestId, uint256 _hint) internal { uint256[] memory requestIds = new uint256[](1); uint256[] memory hints = new uint256[](1); requestIds[0] = _requestId; hints[0] = _hint; withdrawalQueue.claimWithdrawalsTo(requestIds, hints, address(this)); } }
Encontrar Diferença