Uniswap V2 ERC20 代币可靠性代码:代币名称是硬编码的吗?
Uniswap V2 ERC20 token solidity code: Are token names hard coded?
我正在重新实现 Uniswap v2 合约,但我就是想不通。
https://github.com/Uniswap/v2-core/blob/master/contracts/UniswapV2Pair.sol
所以,据我了解:
如果在添加流动性时不存在配对交易所/流动性池,UniswapFactory.sol 会创建一个新的 LP 池合约。
这个矿池合约UniswapV2pair.sol本身就是一个ERC20合约。但是,我对它继承的 UniswapV2ERC20 合约有一些疑问。
https://github.com/Uniswap/v2-core/blob/master/contracts/UniswapV2ERC20.sol
名称和符号似乎被硬编码到合同中
string public constant name = "Uniswap V2;
string public constant symbol = 'UNI-V2';
,因此当从前端向流动性池合约调用“name”时,它将始终 return 字符串“Uniswap V2”,无论底层 LP 代币是什么(如 DAI-ETH , USDC-ETH.. 等等)
我的理解对吗?我知道功能应该没问题,因为所有这些 Pair Liquidity pool 合约都是作为单独的合约部署的,但我觉得有点奇怪,名称和符号不能仅仅设置为类似“DAI-ETH LP”的东西构造函数而不是所有相同的“uniswap v2”。
谢谢
您没看错代码。 Uniswap 已决定为所有 LP 代币合约(即配对合约)设置相同的名称。
这种方法更加强调实际的代币对地址,而不是名称。
如果一个交易对名称包含代币名称,不诚实的作者可以创建一个名为 USDT 的自定义代币,一个名为“ETH-USDT LP”的 Uniswap 交易对,并引诱那些不会将代币地址签入的用户出售他们的 ETH 换取一文不值的代币(而不是“真正的”USDT)。
我正在重新实现 Uniswap v2 合约,但我就是想不通。
https://github.com/Uniswap/v2-core/blob/master/contracts/UniswapV2Pair.sol
所以,据我了解:
如果在添加流动性时不存在配对交易所/流动性池,UniswapFactory.sol 会创建一个新的 LP 池合约。
这个矿池合约UniswapV2pair.sol本身就是一个ERC20合约。但是,我对它继承的 UniswapV2ERC20 合约有一些疑问。
https://github.com/Uniswap/v2-core/blob/master/contracts/UniswapV2ERC20.sol
名称和符号似乎被硬编码到合同中
string public constant name = "Uniswap V2;
string public constant symbol = 'UNI-V2';
,因此当从前端向流动性池合约调用“name”时,它将始终 return 字符串“Uniswap V2”,无论底层 LP 代币是什么(如 DAI-ETH , USDC-ETH.. 等等)
我的理解对吗?我知道功能应该没问题,因为所有这些 Pair Liquidity pool 合约都是作为单独的合约部署的,但我觉得有点奇怪,名称和符号不能仅仅设置为类似“DAI-ETH LP”的东西构造函数而不是所有相同的“uniswap v2”。
谢谢
您没看错代码。 Uniswap 已决定为所有 LP 代币合约(即配对合约)设置相同的名称。
这种方法更加强调实际的代币对地址,而不是名称。
如果一个交易对名称包含代币名称,不诚实的作者可以创建一个名为 USDT 的自定义代币,一个名为“ETH-USDT LP”的 Uniswap 交易对,并引诱那些不会将代币地址签入的用户出售他们的 ETH 换取一文不值的代币(而不是“真正的”USDT)。