AMM ERC
The AMMs are used to swap a pegged token to the tenXXX version of the token and the other way around.
Functions
toggleBuy() external onlyOwner returns (bool)
canBuy() external view returns (bool)
getTenToken() external view returns (address)
buy(uint256 tokenAmount) external nonReentrant returns (bool)
sell(uint256 amount) external nonReentrant returns (bool)
getInPrice(uint256 amount) external view returns (uint256)
getOutPrice(uint256 amount) external view returns (uint256)
toggleBuy() external onlyOwner returns (bool)
Toggles the possibility to buy over the amm.
function toggleBuy() external onlyOwner returns (bool) {
_canBuy = !_canBuy;
return _canBuy;
}
canBuy() external view returns (bool)
Getter for the possibility to buy over the amm.
function canBuy() external view returns (bool) {
return _canBuy;
}
getTenToken() external view returns (address)
Returns the ten-Token address.
function getTenToken() external view returns (address) {
return address(_tenToken);
}
buy(uint256 tokenAmount) external nonReentrant returns (bool)
Mints new ten-Tokens for the sent ERC20 tokens.
function buy(uint256 tokenAmount) external nonReentrant returns (bool) {
require(_canBuy == true, "The buying function is not activated");
IERC20Upgradeable(_inToken).safeTransferFrom(msg.sender, address(this), tokenAmount);
_tenToken.mint(msg.sender, tokenAmount);
emit Bought(msg.sender, tokenAmount);
return true;
}
sell(uint256 amount) external nonReentrant returns (bool)
Burns ten-Tokens and sends the ERC20 token amount.
function sell(uint256 amount) external nonReentrant returns (bool) {
require(_inToken.balanceOf(address(this)) >= amount / 10**_calcDecimals, "sell: Too few pegged tokens locked");
require(_tenToken.totalSupply() >= amount, "sell: That's too much");
uint256 toSend = _tenToken.burn(msg.sender, amount);
IERC20Upgradeable(_inToken).safeTransfer(msg.sender, toSend);
emit Sold(msg.sender, toSend);
return true;
}
getInPrice(uint256 amount) external view returns (uint256)
Returns the actual price for swapping pegged token to ten-Token which can change.
function getInPrice(uint256 amount) external view returns (uint256) {
uint256 divisor;
uint256 multiplier;
(divisor, multiplier) = _tenToken.getActualBuyFees();
uint256 fee = amount * multiplier / divisor;
uint256 price = amount - fee;
return price * 10**_calcDecimals;
}
getOutPrice(uint256 amount) external view returns (uint256)
Returns the actual price for swapping ten-Token to pegged token which can change.
function getOutPrice(uint256 amount) external view returns (uint256) {
uint32 divisor;
uint32 multiplier;
(divisor, multiplier) = _tenToken.getActualSellFees();
uint256 fee = amount * multiplier / divisor;
uint256 price = amount - fee;
return price / 10**_calcDecimals;
}
Last updated
Was this helpful?