Unwrap WHBAR for HBAR

Withdraw Wrapped HBAR (WHBAR) tokens to retrieve HBAR native cryptocurrency at a 1:1 ratio.

Contract ID: WhbarHelper

Granting a spender allowance to the WhbarHelper contract is required for the contract to transfer the WHBAR token from the user's wallet to the contract.


Function name: unwrapWhbar

Solidity Function Body
/// @notice Safely unwrap whbar to msg.sender
/// @dev This contract needs an allowance from msg.sender to transfer the whbar token
/// @param wad The amount to unwrap
function unwrapWhbar(uint wad) public {
  require(wad > 0, "WhbarHelper: wad cannot be lt zero");
  // transfer the whbar to this contract
  HederaTokenHelper.safeTransferFrom(whbarToken, msg.sender, address(this), wad);
  
  // approve sending the whbar to the whbar contract
  HederaTokenHelper.safeApprove(whbarToken, whbarContract, wad);
  
  // use withdraw(address src, address dst, uint wad) and use this contract and msg.sender to withdraw
  // to the contract caller
  IWHBAR(whbarContract).withdraw(address(this), msg.sender, wad);
}

Code Overview

Recommended gas: 1,000,000 gwei (~ $0.085 USD)

Resources:

import { 
  ContractExecuteTransaction,
  TokenAssociateTransaction,
  Hbar,
  HbarUnit,  
  .. 
} from '@hashgraph/sdk';

//Client pre-checks:
// - WhbarHelper contract has spender allowance for WHBAR token

const params = new ContractFunctionParameters();
params.addUint256(withdrawAmount); //amount in token's smallest unit

await new ContractExecuteTransaction()
  .setContractId(whbarHelperContractId)
  .setGas(gasLim)
  .setFunction('unwrapWhbar', params)
  .execute(client);

Last updated