Diff
checker
Text
Text
Bilder
Dokumente
Excel
Ordner
Legal
Enterprise
Desktop-App
Preise
Einloggen
Diffchecker Desktop herunterladen
Texte vergleichen
Finde den Unterschied zwischen zwei Textdateien
Werkzeuge
Verlauf
Anzeige
Ansicht
Zweispaltig
Einspaltig
Live-Editor
Leerzeichen ausblenden
Gleiches ausblenden
Zeilenumbruch aus
Vergleichsgenauigkeit
Intelligent
Syntax
Keine
Darstellung ändern
Verarbeitung
Ignorieren
Text umwandeln
Zur ersten Änderung
Eingabe bearbeiten
Diffchecker Desktop
Der sicherste Weg, Diffchecker zu nutzen. Hol dir die Desktop-App: Deine Diffs verlassen nie deinen Computer!
Desktop holen
UnstakeStETH
Erstellt
vor 12 Monaten
Diff läuft nie ab
Löschen
Exportieren
Teilen
Erklären
11 Entfernungen
Zeilen
Gesamt
Entfernt
Zeichen
Gesamt
Entfernt
Um diese Funktion weiterhin zu nutzen, aktualisiere auf
Diff
checker
Pro
Preise anzeigen
67 Zeilen
Kopieren
8 Hinzufügungen
Zeilen
Gesamt
Hinzugefügt
Zeichen
Gesamt
Hinzugefügt
Um diese Funktion weiterhin zu nutzen, aktualisiere auf
Diff
checker
Pro
Preise anzeigen
67 Zeilen
Kopieren
// SPDX-License-Identifier: BUSL-1.1
// SPDX-License-Identifier: BUSL-1.1
Kopieren
Kopiert
Kopieren
Kopiert
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";
Kopieren
Kopiert
Kopieren
Kopiert
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);
Kopieren
Kopiert
Kopieren
Kopiert
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);
}
}
Kopieren
Kopiert
Kopieren
Kopiert
/// @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 {
Kopieren
Kopiert
Kopieren
Kopiert
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 {
Kopieren
Kopiert
Kopieren
Kopiert
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));
}
}
}
}
Kopieren
Kopiert
Kopieren
Kopiert
Gespeicherte Diffs
Originaltext
Datei öffnen
// 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)); } }
Bearbeitung
Datei öffnen
// 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)); } }
Unterschied finden