UNPKG

@dioxide-js/silas

Version:

RPC utility for Silas

26 lines (23 loc) 903 B
import base32Decode from '../_virtual/index.mjs'; const addressToShard = (address, shardOrder = 2) => { const addressStr = address.split(':')[0]; if (!addressStr) { throw new Error('Invalid address format'); } const unit8Array = new Uint8Array(base32Decode(addressStr, 'Crockford')); const decoded = String.fromCharCode.apply(null, [...unit8Array]); if (!decoded || decoded.length != 36) throw 'invalid address format'; const dwords = new Uint32Array(9); for (let i = 0; i < 9; i++) { dwords[i] = 0; for (let j = 0; j < 4; j++) { dwords[i] += decoded.charCodeAt(i * 4 + j) << (j * 8); } } const shardDword = dwords[0] ^ dwords[7] ^ dwords[4]; const shardMask = ~(0xffffffff << shardOrder); return shardDword & shardMask; }; export { addressToShard }; //# sourceMappingURL=getAddressShardIndex.mjs.map