@tangle-js/anchors
Version:
Anchoring messages to the Tangle. Powered by IOTA Streams
44 lines • 3.52 kB
JavaScript
import { SingleNodeClient } from "@iota/iota.js";
import { Address, ChannelAddress, MsgId } from "@tangle.js/streams-wasm/node/streams.js";
import { AnchoringChannelError } from "../errors/anchoringChannelError.mjs";
import { AnchoringChannelErrorNames } from "../errors/anchoringChannelErrorNames.mjs";
import initialize from "./initializationHelper.mjs";
/**
* Helper class to deal with protocol aspects
*
*/
export class ProtocolHelper {
/**
* Given a channel address and a message Id returns the corresponding L1 tangle index that
* allows to locate the L1 Ledger message
*
* @param channelAddress The channel address
* @param messageId The message identifier
* @returns the tangle index encoded in hexadecimal chars
*/
static async getIndexL1(channelAddress, messageId) {
await initialize();
const addr = new Address(ChannelAddress.parse(channelAddress), MsgId.parse(messageId));
return addr.toMsgIndexHex();
}
/**
* Given an anchoring channel and an anchored message ID returns the
* corresponding message ID at L1 on the Ledger
*
* @param channel The anchoring channel
* @param messageId The Streams Message Id
* @returns the Layer 1 message ID
*/
static async getMsgIdL1(channel, messageId) {
await initialize();
const addr = new Address(ChannelAddress.parse(channel.channelAddr), MsgId.parse(messageId));
const index = addr.toMsgIndex();
const client = new SingleNodeClient(channel.node);
const messagesResponse = await client.messagesFind(index);
if (messagesResponse.count === 0) {
throw new AnchoringChannelError(AnchoringChannelErrorNames.L1_MSG_NOT_FOUND, "L1 message has not been found");
}
return messagesResponse.messageIds[0];
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdG9jb2xIZWxwZXIubWpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hlbHBlcnMvcHJvdG9jb2xIZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRWxGLE9BQU8sVUFBVSxNQUFNLHdCQUF3QixDQUFDO0FBRWhEOzs7R0FHRztBQUNILE1BQU0sT0FBTyxjQUFjO0lBQ3ZCOzs7Ozs7O09BT0c7SUFDSSxNQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxjQUFzQixFQUFFLFNBQWlCO1FBQ3BFLE1BQU0sVUFBVSxFQUFFLENBQUM7UUFFbkIsTUFBTSxJQUFJLEdBQUcsSUFBSSxPQUFPLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFFdkYsT0FBTyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSSxNQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxPQUE2QixFQUFFLFNBQWlCO1FBQzNFLE1BQU0sVUFBVSxFQUFFLENBQUM7UUFFbkIsTUFBTSxJQUFJLEdBQUcsSUFBSSxPQUFPLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQzVGLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUVoQyxNQUFNLE1BQU0sR0FBRyxJQUFJLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVsRCxNQUFNLGdCQUFnQixHQUFHLE1BQU0sTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUUxRCxJQUFJLGdCQUFnQixDQUFDLEtBQUssS0FBSyxDQUFDLEVBQUU7WUFDOUIsTUFBTSxJQUFJLHFCQUFxQixDQUMzQiwwQkFBMEIsQ0FBQyxnQkFBZ0IsRUFBRSwrQkFBK0IsQ0FBQyxDQUFDO1NBQ3JGO1FBRUQsT0FBTyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUMsQ0FBQztDQUNKIn0=