In the following example we will show how to invoke redeemDocRequest using Money on Chain contract. This method can recieve any amount of DOC to redeem, but this will be processed on the next settlement. Check the DOC redeemption section for more details.
We will use truffle and testnet network. You can find code examples into /examples dir.
First we create a new node project.
mkdir example-redeem-doc-request
cd example-redeem-doc-request
npm init
Let's add the necessary dependencies to run the project.
npm install --save web3
Example
constWeb3=require('web3');//You must compile the smart contracts or use the official ABIs of the repositoryconstMoC=require('../../build/contracts/MoC.json');consttruffleConfig=require('../../truffle');/** * Get a provider from truffle.js file * @param{String} network */constgetDefaultProvider= network =>truffleConfig.networks[network].provider ||truffleConfig.networks[network].endpoint;/** * Get a gasPrice from truffle.js file * @param{String} network */constgetGasPrice= network =>truffleConfig.networks[network].gasPrice ||60000000;/** * Get a new web3 instance from truffle.js file */constgetWeb3= network => {constprovider=getDefaultProvider(network);returnnewWeb3(provider,null, { transactionConfirmationBlocks:1 });};constweb3=getWeb3('rskTestnet');constgasPrice=getGasPrice('rskTestnet');//Loading MoC address on testnetconstmocAddress='<contract-address>';constexecute=async () => {web3.eth.defaultGas =2000000;/** * Loads an specified contract * @param{ContractABI} abi * @param{String} contractAddress */constgetContract=async (abi, contractAddress) =>newweb3.eth.Contract(abi, contractAddress);// Loading MoC contractconstmoc=awaitgetContract(MoC.abi, mocAddress);if (!moc) {throwError('Can not find MoC contract.'); }constredeemDocRequest=async docAmount => {const [from] =awaitweb3.eth.getAccounts();constweiAmount=web3.utils.toWei(docAmount,'ether');console.log(`Calling redeem Doc request, account: ${from}, amount: ${weiAmount}.`);moc.methods.redeemDocRequest(weiAmount).send({ from, gasPrice },function(error, transactionHash) {if (error) console.log(error);if (transactionHash) console.log('txHash: '.concat(transactionHash)); }).on('transactionHash',function(hash) {console.log('TxHash: '.concat(hash)); }).on('receipt',function(receipt) {console.log(receipt); }).on('error',console.error); };constdocAmount='10000';// Call redeemawaitredeemDocRequest(docAmount);};execute().then(() =>console.log('Completed')).catch(err => {console.log('Error', err); });