Diff
checker
Texte
Texte
Images
Documents
Excel
Dossiers
Legal
Enterprise
Application de bureau
Prix
Se connecter
Télécharger Diffchecker Desktop
Comparer le texte
Trouver la différence entre deux fichiers texte
Outils
Historique
Affichage
Vue
Divisé
Unifié
Éditeur live
Masquer les espaces
Cacher identiques
Sans retour à la ligne
Niveau de précision
Intelligent
Syntaxe
Aucun
Modifier l’apparence
Traitement
Ignorer
Transformer le texte
Aller au premier écart
Modifier l'entrée
Diffchecker Desktop
La façon la plus sécurisée d'utiliser Diffchecker. Obtenez l'application Diffchecker Desktop : vos diffs ne quittent jamais votre ordinateur !
Obtenir Desktop
UnstakeStETH
Créé
il y a 12 mois
Le diff n'expire jamais
Effacer
Exporter
Partager
Expliquer
11 suppressions
Lignes
Total
Supprimé
Caractères
Total
Supprimé
Pour continuer à utiliser cette fonctionnalité, passez à
Diff
checker
Pro
Voir les prix
67 lignes
Copier tout
8 ajouts
Lignes
Total
Ajouté
Caractères
Total
Ajouté
Pour continuer à utiliser cette fonctionnalité, passez à
Diff
checker
Pro
Voir les prix
67 lignes
Copier tout
// SPDX-License-Identifier: BUSL-1.1
// SPDX-License-Identifier: BUSL-1.1
Copier
Copié
Copier
Copié
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";
Copier
Copié
Copier
Copié
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);
Copier
Copié
Copier
Copié
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);
}
}
Copier
Copié
Copier
Copié
/// @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 {
Copier
Copié
Copier
Copié
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 {
Copier
Copié
Copier
Copié
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));
}
}
}
}
Copier
Copié
Copier
Copié
Différences enregistrées
Texte d'origine
Ouvrir un fichier
// 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)); } }
Texte modifié
Ouvrir un fichier
// 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)); } }
Trouver la différence