readCallers
Signature
Section titled “Signature”enum CallerMode { /// No caller modification is currently active. None, /// Unsupported. Present for forge-std ABI compatibility. Broadcast, /// Unsupported. Present for forge-std ABI compatibility. RecurrentBroadcast, /// A one time prank triggered by a `vm.prank()` call is currently active. Prank, /// A recurrent prank triggered by a `vm.startPrank()` call is currently active. RecurrentPrank,}
function readCallers() external returns (CallerMode callerMode, address msgSender, address txOrigin);Description
Section titled “Description”Reads the current msg.sender and tx.origin from state and reports if there is any active caller modification.
The CallerMode enum indicates if there is an active caller modification and the type.
-
If there is an active prank:
callerModewill be equal to:CallerMode.Prankif the prank has been set withprank.CallerMode.RecurrentPrankif the prank has been set withstartPrank.
-
If no caller modification is active:
callerModewill be equal toCallerMode.None.
Examples
Section titled “Examples”CallerMode callerMode;address msgSender;address txOrigin;
// Example 1(callerMode, msgSender, txOrigin) = vm.readCallers();assertEq(callerMode, CallerMode.None);assertEq(msgSender, defaultSenderAddress);assertEq(txOrigin, defaultOriginAddress);
// Example 2vm.prank(senderPrankAddress);(callerMode, msgSender, txOrigin) = vm.readCallers();assertEq(callerMode, CallerMode.Prank);assertEq(msgSender, senderPrankAddress);assertEq(txOrigin, defaultOriginAddress);
// Example 3vm.prank(senderPrankAddress, originPrankAddress);(callerMode, msgSender, txOrigin) = vm.readCallers();assertEq(callerMode, CallerMode.Prank);assertEq(msgSender, senderPrankAddress);assertEq(txOrigin, originPrankAddress);