Javascript
兩個地址可以有相同的排序值嗎?
token0 function token0() external view returns (address); Returns the address of the pair token with the lower sort order. token1 function token1() external view returns (address); Returns the address of the pair token with the higher sort order.
據我了解,為了在javascript中比較它們,我需要將它們轉換為
BigInt
,即let token0; let token1; const address0 = BigInt('0xDB17618B140EFCB8a07BC8e9b88920de1daE6C87'); const address1 = BigInt('0x4d4CC29b9C4E413CFe5f898E16280f11db57E186'); if (address0 < address1) { token0 = address0; token1 = address1; } else { token0 = address1; token1 = address0; }
兩個問題:
- 是否存在兩個不同地址具有相同排序值的情況?
- 如果是,那麼我應該使用
<=
還是<
在這裡?
是否存在兩個不同地址具有相同排序值的情況?
每個地址都必須是唯一的。每個地址都是一個 20 字節的數字。因此唯一的數字。
(如果您擔心校驗和 - 即各個地方的大小寫 - 這仍然不會影響基礎價值。)
Uniswap Factory 合約以相同的方式進行比較:
function createPair(address tokenA, address tokenB) external returns (address pair) { require(tokenA != tokenB, 'UniswapV2: IDENTICAL_ADDRESSES'); --> (address token0, address token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA); require(token0 != address(0), 'UniswapV2: ZERO_ADDRESS'); ...