UNPKG

@ixily/activ

Version:

Alpha Capture Trade Idea Verification. Blockchain ownership proven trade ideas and strategies.

68 lines (61 loc) 1.83 kB
const BufferB = require('buffer/').Buffer import { base58 } from 'ethers/lib/utils' const compress = (str: string): string => { return base58.encode(BufferB.from(str, 'utf8')) } const decompress = (str: string): string => { return BufferB.from(base58.decode(str)).toString('utf8') } // Join Unique Keys With Fast Zip Hash and a solid simple separator export const uniqueKeyJoin = (keys: string[]): string => { const preProcessedKeys = keys.map((key) => { return key.replace('|x', '|:x') }) const joinedKeys = preProcessedKeys.join('|x') return compress(joinedKeys) } // undo the above operation and return the keys after unzip and split export const uniqueKeySplit = (uniqueKey: string): string[] => { try { const unzipped = decompress(uniqueKey) const split = unzipped.split('|x') const postProcessedKeys = split.map((key) => { return key.replace('|:x', '|x') }) return postProcessedKeys } catch (e) { throw new Error( `uniqueKeySplit Error: Are u sure this is a valid uniqueKey? ${uniqueKey}`, ) } } export const getUniqueStrategyReference = ( chain: string, contractAddress: string, creatorAddress: string, strategyKey: string, ): string => { return uniqueKeyJoin([chain, contractAddress, creatorAddress, strategyKey]) } export const decomposeUniqueStrategyReference = ( uniqueStrategyReference: string, ): { chain: string contractAddress: string creatorAddress: string strategyKey: string } => { const decomposed = uniqueKeySplit(uniqueStrategyReference) if (decomposed[1] === undefined) { throw new Error( 'decomposeUniqueStrategyReference Error: Are u sure this is a valid uniqueStrategyReference? ' + uniqueStrategyReference, ) } return { chain: decomposed[0], contractAddress: decomposed[1], creatorAddress: decomposed[2], strategyKey: decomposed[3], } }