Coders and Decoders

Every data point in merkle tree is made with a key (LeafKey) and value (LeafValue). These keys and values aren't plain data, they are encoded.

You can encode/decode them using coders/decoders from the SDK:

import {LeafValueCoder, LeafKeyCoder} from `@umb-network/toolbox`; const f = 1234.0000987; const label = 'ETH-USD'; // encode data for leaf: const leafData: Buffer = LeafValueCoder.encode(f, label); console.log(leafData.toString('hex')); // decode data const originalValue = LeafValueCoder.decode(leafData.toString('hex'), label); console.log(originalValue); // encoder accepts Buffer or hex string const encodedKey: Buffer = LeafKeyCoder.encode('ETH-USD'); console.log(encodedKey.toString('hex')); const decodedKey: string = LeafKeyCoder.decode(encodedKey); console.log(decodedKey);

Types

Currently we are supporting:

  • floating point numbers: this is default type of any value, it is basically JS number
  • fixed data: any data in hex format

Types are determined by labels.

Floating points number

This is default type for any value. Floating point numbers are encoded to 18 decimal precision numbers - uint256 solidity type. This is compatible with blockchain standard of representing amounts.

Fixed data

  • This type of data is saved as is. Leaves for this type start with the prefix SDK.constants.FIXED_NUMBER_PREFIX.

Did this page help you?