//Typescriptimport*as ethers from'ethers'; //V6//Set one of Hedera's JSON RPC Relay as the providerconstprovider=newethers.JsonRpcProvider(hederaJsonRelayUrl,'', { batchMaxCount:1,//workaround for V6});constinterfaces=newethers.Interface(['function sauceForxSauce(uint256 _sauceAmount) external view returns (uint256 xSauceAmount_)']);constmothershipContract=newethers.Contract(mothershipEvmAddress,interfaces.fragments, provider);constresult=awaitmothershipContract.sauceForxSauce(sauceAmountTiny);constxSauceAmount= result[0]; //uint256 xSauceAmount_ - in token's smallest unit
Stake SAUCE Tokens for xSAUCE
Stake any amount of SAUCE tokens in exchange for xSAUCE tokens.
Function name: enter
⛽ Recommended gas: 100,000 gwei (~ $0.009 USD)
Parameter Name
Description
uint256 _amount
The amount of SAUCE to stake in its smallest unit
Solidity Function Body
//Mothership.solfunctionenter(uint256_amount) external {uint256 totalSauce =IERC20(sauce).balanceOf(address(this));uint256 totalShares =IERC20(xSauce).totalSupply();safeTransferToken(sauce, msg.sender,address(this), _amount); if (totalShares ==0|| totalSauce ==0) {safeMintToken(xSauce, _amount,newbytes[](0));safeTransferToken(xSauce,address(this), msg.sender, _amount); } // Calculate and mint the amount of xSAUCE the SAUCE is worth. The ratio will change overtime, as xSAUCE is burned/minted and SAUCE deposited + gained from fees / withdrawn.
else {uint256 what = _amount * (totalShares) / (totalSauce);safeMintToken(xSauce, what,newbytes[](0)); safeTransferToken(xSauce,address(this), msg.sender, what); }}
A spender allowance for the Mothership contract is required for the SAUCE token.
Ensure that the client has the xSAUCE token ID associated beforehand.
To calculate the amount of xSAUCE tokens a user will receive from a given SAUCE amount, use thesauceForXSauce() Solidity function in MotherShip.sol. Alternatively calculate the amount using the current SAUCE/xSAUCE ratio value.
//Typescriptimport*as ethers from'ethers'; //V6//Set one of Hedera's JSON RPC Relay as the providerconstprovider=newethers.JsonRpcProvider(hederaJsonRelayUrl,'', { batchMaxCount:1,//workaround for V6});constinterfaces=newethers.Interface(['function xSauceForSauce(uint256 _xSauceAmount) external view returns (uint256 sauceAmount_)']);constmothershipContract=newethers.Contract(mothershipEvmAddress,interfaces.fragments, provider);constresult=awaitmothershipContract.xSauceForSauce(xSauceAmountTiny);constsauceAmount= result[0]; //uint256 sauceAmount_ - in token's smallest unit
Unstake xSAUCE Tokens for SAUCE
Unstake any amount of xSAUCE tokens in exchange for SAUCE tokens.
To calculate the amount of SAUCE tokens a user will receive from a given xSAUCE amount, use the xSauceForSauce() Solidity function in MotherShip.sol. Alternatively calculate the output amount using the current SAUCE/xSAUCE ratio value.
Ensure that the client has the SAUCE token ID associated beforehand.