Comment on page
AMM ETH
The AMMs are used to swap a pegged token to the tenXXX version of the token and the other way around.
- toggleBuy() external onlyOwner returns (bool)
- canBuy() external view returns (bool)
- getTenToken() external view returns (address)
- buy(uint256 tokenAmount) external nonReentrant payable returns (bool)
- sell(uint256 tokenAmount) external nonReentrant returns (bool)
- getInPrice(uint256 amount) external view returns (uint256)
- getOutPrice(uint256 amount) external view returns (uint256)
Toggles the possibility to buy over the amm.
function toggleBuy() external onlyOwner returns (bool) {
_canBuy = !_canBuy;
return _canBuy;
}
Getter for the possibility to buy over the amm.
function canBuy() external view returns (bool) {
return _canBuy;
}
Returns the ten-Token address.
function getTenToken() external view returns (address) {
return address(_tenToken);
}
Mints new ten-Tokens for the sent ERC20 tokens.
function buy(uint256 tokenAmount) external nonReentrant payable returns (bool) {
require(msg.value == tokenAmount, "buy: Sent value is not equal to the amount");
require(_canBuy == true, "buy: The buying function is not activated");
_tenETH.mint(msg.sender, msg.value);
emit Bought(msg.sender, tokenAmount);
return true;
}
Burns ten-Tokens and sends the ERC20 token amount.
function sell(uint256 tokenAmount) external nonReentrant returns (bool) {
require(address(this).balance >= tokenAmount / 10**_calcDecimals, "sell: Too few pegged tokens locked");
require(_tenETH.totalSupply() >= tokenAmount, "sell: That's too much");
uint256 toSend = _tenETH.burn(msg.sender, tokenAmount);
bool sendTx = payable(msg.sender).send(toSend);
require(sendTx, "sell: No fallback function in contract"); //fix
emit Sold(msg.sender, toSend);
return sendTx;
}
Returns the actual price for swapping pegged token to ten-Token which can change. And also have nothing to do with the transaction fees of the ten-Tokens.
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;
}
Returns the actual price for swapping ten-Token to pegged token which can change. And also have nothing to do with the transaction fees of the ten-Tokens.
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 modified 1yr ago