Hedera (HBAR & HTS)
Get Public Key
In order to get public key for Hedera Account, you can use getAddress()
function.
If you use DcentCLIConnector.coinType.HEDERA
as a coinType parameter for getAddress()
function, you can get public key for the private key of the BIP44 path.
For more detail about getAddress()
, please see the below section.
go to Get Address API description
Sign Transaction
Supported Transaction Types
AccountCreateTransaction
O
Accounts
AccountUpdateTransaction
O
Accounts
TransferTransaction
O
Accounts
AccountDeleteTransaction
X
Accounts
AccountAllowanceApprovalTransaction
X
Accounts
AccountAllowanceAdjustTransaction
X
Accounts
TokenCreateTransaction
O
Token
TokenUpdateTransaction
O
Token
TokenDeleteTransaction
X
Token
TokenAssociateTransaction
O
Token
TokenDissociateTransaction
O
Token
TokenMintTransaction
O
Token
TokenBurnTransaction
O
Token
TokenFreezeTransaction
O
Token
TokenFeeScheduleUpdateTransaction
X
Token
TokenUnfreezeTransaction
O
Token
TokenGrantKycTransaction
X
Token
TokenRevokeKycTransaction
X
Token
TokenPauseTransaction
O
Token
TokenUnpauseTransaction
O
Token
TokenWipeTransaction
O
Token
For your reference, all transaction types for Hedera can be found here.
getHederaSignedTransaction()
Supported Coin Type
Hedera(HTS)
Parameters :
unsignedTx: unsigned hexadecimal tx Hedera Docs
path: key path, wallet sign with that private key with a given key path (BIP32 ex) "m/44'/144'/0'").
symbol: symbol, It is a symbol that the wallet displays on the screen.
decimals: hedera or hts token's decimals.
Requirements:
D'CENT Biometric Wallet version 2.19.3. or higher is required.
This feature is tested with Hedera JavaScript SDK v2.8.0
Usage:
const _buf2hex = (buffer) => { // buffer is an ArrayBuffer
return Array.prototype.map.call(new Uint8Array(buffer), x => ('00' + x.toString(16)).slice(-2)).join('');
}
const client = HederaSDK.Client.forMainnet()
const nodeList = client._network.getNodeAccountIdsForExecute()
const validStart = Timestamp.generate()
const fromAccountId = AccountId.fromString('accountIdString')
const txId = new TransactionId(fromAccountId, validStart)
const tx = new HederaSDK.TransferTransaction()
// when you transfer hbar
tx.addHbarTransfer(fromAccountId, HederaSDK.Hbar.fromTinybars('-' + amountTinybar))
tx.addHbarTransfer('toAccountIdString', HederaSDK.Hbar.fromTinybars(amountTinybar))
// or you can transfer token like this.
tx.addTokenTransfer(contractAddress, fromAccountId, HederaSDK.Hbar.fromTinybars('-' + amountTinybar))
tx.addTokenTransfer(contractAddress, 'toAccountIdString', HederaSDK.Hbar.fromTinybars(amountTinybar))
tx.setNodeAccountIds([nodeList[nodeList.length - 1]])
tx.setTransactionId(txId)
tx.setTransactionMemo('')
tx.setMaxTransactionFee(fee)
tx.freezeWith(client)
const bodyBytes = tx._signedTransactions[0].bodyBytes
const unsignedTx = _buf2hex(bodyBytes)
const transactionJson = {
unsignedTx: unsignedTx,
path: `m/44'/3030'/0'`,
symobl: HBAR,
decimals: 8,
}
var result
try {
result = await dcent.getHederaSignedTransaction(transactionJson);
} catch (e) {
console.log(e)
result = e
}
Returned response object:
{
"header": {
"version": "1.0",
"response_from": "hedera",
"status": "success"
},
"body": {
"command": "transaction",
"parameter": {
"signed_tx": "0x31aa13b5e04cb6fc6381ea0520bf7f6727ebdb6e96cd7ca8625bb3e3dd36cf0e2cee4ece13aa9f7ddc09ee10c74aa00af954201829d8016317f10f5a921dcc0d",
"pubkey": "0x9a5c753d02038e512c06867556324b37181c9c1fc19c21c27752c520e8f0d822"
}
}
}
Last updated
Was this helpful?