【发布时间】:2022-11-08 11:26:18
【问题描述】:
我是新来的。现在我很困惑,因为我们可以在solidity中编写函数?
例如,为什么我们需要图书馆。 uniswap 使用的库来写下他们的一些可重用的功能。
library UniswapV2Library {
using SafeMath for uint;
// returns sorted token addresses, used to handle return values from pairs sorted in this order
function sortTokens(address tokenA, address tokenB) internal pure returns (address token0, address token1) {
require(tokenA != tokenB, 'UniswapV2Library: IDENTICAL_ADDRESSES');
(token0, token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA);
require(token0 != address(0), 'UniswapV2Library: ZERO_ADDRESS');
}
// calculates the CREATE2 address for a pair without making any external calls
function pairFor(address factory, address tokenA, address tokenB) internal pure returns (address pair) {
(address token0, address token1) = sortTokens(tokenA, tokenB);
pair = address(uint(keccak256(abi.encodePacked(
hex'ff',
factory,
keccak256(abi.encodePacked(token0, token1)),
hex'96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f' // init code hash
))));
}
.... other functions ..
}
【问题讨论】:
-
是的,这可以使用简单的函数来实现,但是库就像智能合约一样工作,但它减少了为什么 uniswap 使用库的气体
标签: solidity smartcontracts uniswap