This is the Api3Pool.getUser() signature
function getUser(address userAddress)
external
view
returns (
uint256 unstaked,
uint256 vesting,
uint256 unstakeAmount,
uint256 unstakeShares,
uint256 unstakeScheduledFor,
uint256 lastDelegationUpdateTimestamp,
uint256 lastProposalTimestamp
)
and this is the IApi3Pool.getUser() signature
function getUser(address userAddress)
external
view
returns (
uint256 unstaked,
uint256 vesting,
uint256 unstakeShares,
uint256 unstakeAmount,
uint256 unstakeScheduledFor,
uint256 lastDelegationUpdateTimestamp,
uint256 lastProposalTimestamp
);
Note that the names of the third and fourth returned variables are swapped around. This means that when the user is calling getUser() of an Api3Pool contract, they should expect unstakeAmount to be the third returned variable and unstakeShares to be the fourth returned variable (in other words, disregard the IApi3Pool.getUser() version).
This doesn't affect Api3Pool functionality, and the Etherscan UI already prefers the Api3Pool.getUser() signature over IApi3Pool.getUser() signature. This issue only concerns contracts and off-chain apps that depend on IApi3Pool.
This is the
Api3Pool.getUser()signatureand this is the
IApi3Pool.getUser()signatureNote that the names of the third and fourth returned variables are swapped around. This means that when the user is calling
getUser()of an Api3Pool contract, they should expectunstakeAmountto be the third returned variable andunstakeSharesto be the fourth returned variable (in other words, disregard theIApi3Pool.getUser()version).This doesn't affect Api3Pool functionality, and the Etherscan UI already prefers the
Api3Pool.getUser()signature overIApi3Pool.getUser()signature. This issue only concerns contracts and off-chain apps that depend onIApi3Pool.