Skip to content

Commit

Permalink
Swap address and aliases return arg positions
Browse files Browse the repository at this point in the history
  • Loading branch information
Vectorized committed Jan 26, 2024
1 parent 29a0a9e commit e9ed65d
Show file tree
Hide file tree
Showing 5 changed files with 25 additions and 21 deletions.
20 changes: 10 additions & 10 deletions contracts/modules/AddressAliasRegistry.sol
Original file line number Diff line number Diff line change
Expand Up @@ -37,14 +37,14 @@ contract AddressAliasRegistry is IAddressAliasRegistry {
*/
function resolveAndRegister(address[] memory a)
public
returns (address[] memory aliases, address[] memory addresses)
returns (address[] memory addresses, address[] memory aliases)
{
unchecked {
uint256 n = a.length;
addresses = a;
aliases = new address[](n);
addresses = new address[](n);
for (uint256 i; i != n; ++i) {
(aliases[i], addresses[i]) = _resolveAndRegister(a[i]);
(addresses[i], aliases[i]) = _resolveAndRegister(a[i]);
}
}
}
Expand Down Expand Up @@ -73,13 +73,13 @@ contract AddressAliasRegistry is IAddressAliasRegistry {
/**
* @inheritdoc IAddressAliasRegistry
*/
function resolve(address[] memory a) public view returns (address[] memory aliases, address[] memory addresses) {
function resolve(address[] memory a) public view returns (address[] memory addresses, address[] memory aliases) {
unchecked {
uint256 n = a.length;
addresses = a;
aliases = new address[](n);
addresses = new address[](n);
for (uint256 i; i != n; ++i) {
(aliases[i], addresses[i]) = _resolve(a[i]);
(addresses[i], aliases[i]) = _resolve(a[i]);
}
}
}
Expand All @@ -93,10 +93,10 @@ contract AddressAliasRegistry is IAddressAliasRegistry {
* If the `aliasOrAddress` is less than `2**31 - 1`, it is treated as an alias.
* Otherwise, it is treated as an address, and it's alias will be registered on-the-fly.
* @param aliasOrAddress The alias or address.
* @return alias_ The alias.
* @return address_ The address.
* @return alias_ The alias.
*/
function _resolveAndRegister(address aliasOrAddress) internal returns (address alias_, address address_) {
function _resolveAndRegister(address aliasOrAddress) internal returns (address address_, address alias_) {
// If the `aliasOrAddress` is less than or equal to `2**32 - 1`, we will consider it an alias.
if (uint160(aliasOrAddress) <= type(uint32).max) {
alias_ = aliasOrAddress;
Expand All @@ -113,10 +113,10 @@ contract AddressAliasRegistry is IAddressAliasRegistry {
* If the `aliasOrAddress` is less than `2**31 - 1`, it is treated as an alias.
* Otherwise, it is treated as an address.
* @param aliasOrAddress The alias or address.
* @return alias_ The alias.
* @return address_ The address.
* @return alias_ The alias.
*/
function _resolve(address aliasOrAddress) internal view returns (address alias_, address address_) {
function _resolve(address aliasOrAddress) internal view returns (address address_, address alias_) {
// If the `aliasOrAddress` is less than or equal to `2**32 - 1`, we will consider it an alias.
if (uint160(aliasOrAddress) <= type(uint32).max) {
alias_ = aliasOrAddress;
Expand Down
2 changes: 1 addition & 1 deletion contracts/modules/PlatformAirdropper.sol
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ contract PlatformAirdropper is IPlatformAirdropper {
returns (uint256 fromTokenId, address[] memory aliases)
{
unchecked {
(aliases, p.to) = IAddressAliasRegistry(addressAliasRegistry).resolveAndRegister(p.to);
(p.to, aliases) = IAddressAliasRegistry(addressAliasRegistry).resolveAndRegister(p.to);
fromTokenId = ISuperMinterV2(superMinter).platformAirdrop(p);
}
}
Expand Down
8 changes: 4 additions & 4 deletions contracts/modules/interfaces/IAddressAliasRegistry.sol
Original file line number Diff line number Diff line change
Expand Up @@ -37,12 +37,12 @@ interface IAddressAliasRegistry {
* @dev Resolve the addresses or aliases.
* If an address does not have an aliases, an alias will be registered for it.
* @param a An array of addresses, which can be aliases.
* @return aliases The aliases for the addresses.
* @return addresses The resolved addresses.
* @return aliases The aliases for the addresses.
*/
function resolveAndRegister(address[] memory a)
external
returns (address[] memory aliases, address[] memory addresses);
returns (address[] memory addresses, address[] memory aliases);

// =============================================================
// PUBLIC / EXTERNAL VIEW FUNCTIONS
Expand All @@ -59,8 +59,8 @@ interface IAddressAliasRegistry {
* If an address does not have an aliases, it's corresponding returned alias will be zero.
* If an alias does not have an address, it's corresponding returned address will be zero.
* @param a An array of addresses, which can be aliases.
* @return aliases The aliases for the addresses.
* @return addresses The resolved addresses.
* @return aliases The aliases for the addresses.
*/
function resolve(address[] memory a) external view returns (address[] memory aliases, address[] memory addresses);
function resolve(address[] memory a) external view returns (address[] memory addresses, address[] memory aliases);
}
12 changes: 8 additions & 4 deletions tests/modules/AddressAliasRegistry.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -22,15 +22,19 @@ contract AddressAliasRegistryTests is TestConfigV2_1 {
Resolved memory r1;
address[] memory addresses = _randomNonZeroAddressesGreaterThan();
if (_random() % 32 == 0) {
(r0.aliases, r0.addresses) = aar.resolve(new address[](addresses.length));
(r0.addresses, r0.aliases) = aar.resolve(new address[](addresses.length));
assertEq(r0.aliases, new address[](addresses.length));
assertEq(r0.addresses, new address[](addresses.length));
}
(r0.aliases, r0.addresses) = aar.resolveAndRegister(addresses);
(r1.aliases, r1.addresses) = aar.resolve(addresses);
(r0.addresses, r0.aliases) = aar.resolveAndRegister(addresses);
(r1.addresses, r1.aliases) = aar.resolve(addresses);
if (addresses.length != 0) {
assertEq(uint160(r0.aliases[0]), 1);
assertEq(uint160(r1.aliases[0]), 1);
}
assertEq(r1.aliases, r0.aliases);
assertEq(r1.addresses, r0.addresses);
(r1.aliases, r1.addresses) = aar.resolve(r0.aliases);
(r1.addresses, r1.aliases) = aar.resolve(r0.aliases);
assertEq(r1.aliases, r0.aliases);
assertEq(r1.addresses, r0.addresses);
uint256 n = _uniquified(addresses).length;
Expand Down
4 changes: 2 additions & 2 deletions tests/modules/PlatformAirdropper.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ contract PlatformAirdropperTests is TestConfigV2_1 {
assertEq(aar.numAliases(), numAliases);
assertEq(aliases[0], aliases[1]);

(, p.to) = aar.resolve(p.to);
(p.to, ) = aar.resolve(p.to);

if (_random() % 8 == 0) {
for (uint256 i; i < p.to.length; ++i) {
Expand Down Expand Up @@ -157,7 +157,7 @@ contract PlatformAirdropperTests is TestConfigV2_1 {
(, aliases[1]) = pa.platformAirdropMulti(address(sm), p);
for (uint256 j; j != 2; ++j) {
assertEq(aliases[0][j], aliases[1][j]);
(, p[j].to) = aar.resolve(p[j].to);
(p[j].to, ) = aar.resolve(p[j].to);
}

if (_random() % 8 == 0) {
Expand Down

0 comments on commit e9ed65d

Please sign in to comment.