Explore new capabilities added to the Hedera network services in the areas of accounts, contracts, Solidity libraries, tokenization, and more.
Stake the HBAR balance of accounts and contracts to network nodes – no minimums, lock-up periods, bonding, or slashing
(v0.27 - HIP-406)
Send HBAR to the alias of an account ID that does not yet exist to automatically create a Hedera account
(v0.21 - HIP-32)
Send fungible and non-fungible native tokens to the alias of an account ID that does not yet exist to automatically create a Hedera account
(v0.31 - HIP-542)
Deploy Solidity-based, carbon-negative, low-cost, and scalable contracts
(v0.22 - HIP-25, HIP-185)
Create contract factories that deploy other smart contracts (factory patterns) to enable use cases like decentralized exchanges (DEX)
(v0.23 - HIP-329)
Generate a random number for use cases like games and lotteries by just calling a simple function
(v0.28 - HIP-351)
Keep your contracts current on the network by extending the expiration time with a renewal fee payment
(v0.30 - HIP-16, HIP-372)
Create Hedera accounts that have ECDSA keys to migrate your applications while using libraries and tools you’re already familiar with
(v0.21 - HIP-222)
Migrate your applications to Hedera by deploying contracts with the most ubiquitous EVM ecosystem libraries and tools you already know
(v0.26 - HIP-410)
Get block information to integrate EVM-based tooling, explorers, exchanges, and wallet with Hedera
(v0.26 - HIP-415)
Submit transactions with 0 tokens to Hedera without having to implement if statements or qualification logic to check for 0 values
(v0.31 - HIP-564)
// create constructor parameters from the signature of the constructor + parameter values // .slide(2) to remove '0x' from the result let constructParameters = web3.eth.abi.encodeParameters(['string'], [constructMessage]).slice(2); // convert to a Uint8Array const constructorParametersAsUint8Array = Buffer.from(constructParameters, 'hex'); // Create the contract const contractTransactionResponse = await new ContractCreateTransaction() // Set the parameters that should be passed to the contract constructor // using the output from the web3.js library .setConstructorParameters(constructorParametersAsUint8Array) // Set gas to create the contract .setGas(100_000) // The contract bytecode must be set to the file ID containing the contract bytecode .setBytecodeFileId(fileId) .execute(client); // Fetch the receipt for the transaction that created the contract const contractReceipt = await contractTransactionResponse.getReceipt(client); // The contract ID is located on the transaction receipt const contractId = contractReceipt.contractId
Transfer, mint, burn, associate, and dissociate native Hedera tokens using Solidity smart contracts
(v0.22 - HIP-206)
Create native Hedera tokens with or without custom fees using Solidity smart contracts
(v0.25 - HIP-358)
Access all other Hedera Token Service (HTS) capabilities to fully manage native tokens using Solidity smart contracts
(v0.30 - HIP-514)
Interact with fungible and non-fungible native Hedera tokens in your Solidity contracts using ERC-20 and ERC-721 standard functions
(v0.24 - HIP-218)
Enable third-party accounts to transfer assets on your behalf by approving allowances with the Hedera SDKs
(v0.25 - HIP-336)
Enable third-party accounts to transfer assets on your behalf by approving allowances with Token Service Libraries and ERC-20/721 standard functions
(v0.26 - HIP-376, HIP-514)
Submit an allowance approval transaction once all required signatures are collected
(v0.30 - HIP-336)
export async function hbarAllowanceFcn(owner, spender, allowBal, pvKey, client) { const allowanceTx = new AccountAllowanceApproveTransaction().approveHbarAllowance(owner, spender, allowBal).freezeWith(client); const allowanceSign = await allowanceTx.sign(pvKey); const allowanceSubmit = await allowanceSign.execute(client); const allowanceRx = await allowanceSubmit.getReceipt(client); return allowanceRx; }
export async function ftAllowanceFcn(tId, owner, spender, allowBal, pvKey, client) { const allowanceTx = new AccountAllowanceApproveTransaction().approveTokenAllowance(tId, owner, spender, allowBal).freezeWith(client); const allowanceSign = await allowanceTx.sign(pvKey); const allowanceSubmit = await allowanceSign.execute(client); const allowanceRx = await allowanceSubmit.getReceipt(client); return allowanceRx; }
export async function nftAllowanceFcn(tId, owner, spender, nft2Approve, pvKey, client) { const allowanceTx = new AccountAllowanceApproveTransaction() // .approveTokenNftAllowanceAllSerials(tId, owner, spender) // Can approve all serials under a NFT collection .approveTokenNftAllowance(nft2Approve[0], owner, spender) // Or can approve individual serials under a NFT collection .approveTokenNftAllowance(nft2Approve[1], owner, spender) .approveTokenNftAllowance(nft2Approve[2], owner, spender) .freezeWith(client); const allowanceSign = await allowanceTx.sign(pvKey); const allowanceSubmit = await allowanceSign.execute(client); const allowanceRx = await allowanceSubmit.getReceipt(client); return allowanceRx; }
Associate a Hedera account with an unlimited number of native tokens
(v0.25 - HIP-367)
Optionally exempt all fee collectors from paying custom fees when exchanging units of a native token
(v0.31 - HIP-573)