add hashURIToken

This commit is contained in:
Denis Angell
2023-06-23 15:33:20 +00:00
parent 32fba22240
commit dc09dae851
4 changed files with 30 additions and 0 deletions

View File

@@ -6,6 +6,8 @@
import { decodeAccountID } from '@transia/ripple-address-codec' import { decodeAccountID } from '@transia/ripple-address-codec'
import BigNumber from 'bignumber.js' import BigNumber from 'bignumber.js'
import { convertStringToHex } from '../stringConversion'
import hashLedger, { import hashLedger, {
hashLedgerHeader, hashLedgerHeader,
hashSignedTx, hashSignedTx,
@@ -184,4 +186,18 @@ export function hashPaymentChannel(
) )
} }
/**
* Compute the Hash of an URIToken LedgerEntry.
*
* @param issuer - Address of the issuer of the URIToken.
* @param uri - string uri of the URIToken (not the hex).
* @returns The hash of the URIToken LedgerEntry.
* @category Utilities
*/
export function hashURIToken(issuer: string, uri: string): string {
return sha512Half(
ledgerSpaceHex('uriToken') + addressToHex(issuer) + convertStringToHex(uri),
)
}
export { hashLedgerHeader, hashSignedTx, hashLedger, hashStateTree, hashTxTree } export { hashLedgerHeader, hashSignedTx, hashLedger, hashStateTree, hashTxTree }

View File

@@ -28,6 +28,7 @@ const ledgerSpaces = {
signerList: 'S', signerList: 'S',
paychan: 'x', paychan: 'x',
check: 'C', check: 'C',
uriToken: 'U',
depositPreauth: 'p', depositPreauth: 'p',
} }

View File

@@ -39,6 +39,7 @@ import {
hashLedgerHeader, hashLedgerHeader,
hashEscrow, hashEscrow,
hashPaymentChannel, hashPaymentChannel,
hashURIToken,
} from './hashes' } from './hashes'
import { calculateHookOn, hexHookParameters, TTS } from './hooks' import { calculateHookOn, hexHookParameters, TTS } from './hooks'
import parseNFTokenID from './parseNFTokenID' import parseNFTokenID from './parseNFTokenID'
@@ -173,6 +174,7 @@ const hashes = {
hashLedgerHeader, hashLedgerHeader,
hashEscrow, hashEscrow,
hashPaymentChannel, hashPaymentChannel,
hashURIToken,
} }
export { export {

View File

@@ -15,6 +15,7 @@ import {
hashAccountRoot, hashAccountRoot,
hashOfferId, hashOfferId,
hashSignerListId, hashSignerListId,
hashURIToken,
} from '../../src/utils/hashes' } from '../../src/utils/hashes'
import fixtures from '../fixtures/rippled' import fixtures from '../fixtures/rippled'
import { assertResultMatch } from '../testUtils' import { assertResultMatch } from '../testUtils'
@@ -143,6 +144,16 @@ describe('Hashes', function () {
assert.equal(actualEntryHash, expectedEntryHash) assert.equal(actualEntryHash, expectedEntryHash)
}) })
it('calcURITokenEntryHash', function () {
const issuer = 'rDx69ebzbowuqztksVDmZXjizTd12BVr4x'
const uri = 'ipfs://cid'
const expectedEntryHash =
'AFC4233E5C4094952DEF5483DC41488C8744D1268F897C0CB25DE66399591399'
const actualEntryHash = hashURIToken(issuer, uri)
assert.equal(actualEntryHash, expectedEntryHash)
})
it('Hash a signed transaction correctly', function () { it('Hash a signed transaction correctly', function () {
const expected_hash = const expected_hash =
'458101D51051230B1D56E9ACAFAA34451BF65FA000F95DF6F0FF5B3A62D83FC2' '458101D51051230B1D56E9ACAFAA34451BF65FA000F95DF6F0FF5B3A62D83FC2'