UNPKG

@nodeset/contracts

Version:

Protocol for accessing NodeSet's Constellation Ethereum staking network

61 lines (51 loc) 2.05 kB
import { RocketDAOProtocolSettingsDeposit, RocketDepositPool, RocketTokenRETH, RocketVault, } from '../_utils/artifacts'; import { assertBN } from '../_helpers/bn'; // Make a deposit into the deposit pool export async function deposit(txOptions) { // Load contracts const [ rocketDAOProtocolSettingsDeposit, rocketDepositPool, rocketTokenRETH, rocketVault, ] = await Promise.all([ RocketDAOProtocolSettingsDeposit.deployed(), RocketDepositPool.deployed(), RocketTokenRETH.deployed(), RocketVault.deployed(), ]); // Get parameters let depositFeePerc = await rocketDAOProtocolSettingsDeposit.getDepositFee(); // Get balances function getBalances() { return Promise.all([ rocketDepositPool.getBalance.call(), rocketDepositPool.getNodeBalance.call(), web3.eth.getBalance(rocketVault.address).then(value => value.BN), rocketTokenRETH.balanceOf.call(txOptions.from), ]).then( ([depositPoolEth, depositPoolNodeEth, vaultEth, userReth]) => ({depositPoolEth, depositPoolNodeEth, vaultEth, userReth}) ); } // Get initial balances let balances1 = await getBalances(); // Deposit await rocketDepositPool.deposit(txOptions); // Get updated balances let balances2 = await getBalances(); // Calculate values let txValue = txOptions.value; let calcBase = '1'.ether; let depositFee = txValue.mul(depositFeePerc).div(calcBase); let expectedRethMinted = await rocketTokenRETH.getRethValue(txValue.sub(depositFee)); // Check balances assertBN.equal(balances2.depositPoolEth, balances1.depositPoolEth.add(txValue), 'Incorrect updated deposit pool ETH balance'); assertBN.equal(balances2.vaultEth, balances1.vaultEth.add(txValue), 'Incorrect updated vault ETH balance'); assertBN.equal(balances2.userReth, balances1.userReth.add(expectedRethMinted), 'Incorrect updated user rETH balance'); }