mirror of
https://github.com/pezkuwichain/pezkuwi-api.git
synced 2026-04-22 03:17:56 +00:00
31467f90d4
- @pezkuwi/papi-utils (rebrand of @polkadot-api/utils) - @pezkuwi/bizinikiwi-bindings (rebrand of @polkadot-api/substrate-bindings) - @pezkuwi/metadata-builders (rebrand of @polkadot-api/metadata-builders) - @pezkuwi/merkleize-metadata (rebrand of @polkadot-api/merkleize-metadata) All @polkadot-api references replaced with @pezkuwi equivalents.
51 lines
1.6 KiB
JavaScript
51 lines
1.6 KiB
JavaScript
import { mergeUint8 } from '@pezkuwi/papi-utils';
|
|
import { compact, u16 } from 'scale-ts';
|
|
import './ss58-util.mjs';
|
|
import { Binary } from '../codecs/scale/Binary.mjs';
|
|
import '../codecs/scale/bitSequence.mjs';
|
|
import '../codecs/scale/char.mjs';
|
|
import '../codecs/scale/compact.mjs';
|
|
import '../codecs/scale/Hex.mjs';
|
|
import '../codecs/scale/fixed-str.mjs';
|
|
import '../codecs/scale/Variant.mjs';
|
|
import '../codecs/scale/ethAccount.mjs';
|
|
import '../codecs/scale/shaped.mjs';
|
|
import '../codecs/scale/BitSeq.mjs';
|
|
import '../codecs/blockHeader.mjs';
|
|
import '../codecs/metadata/metadata.mjs';
|
|
import '../codecs/metadata/v14.mjs';
|
|
import '../codecs/metadata/v15.mjs';
|
|
import '../codecs/metadata/v16.mjs';
|
|
import '../codecs/metadata/lookup.mjs';
|
|
import { Blake2256 } from '../hashes/blake2.mjs';
|
|
import '@noble/hashes/blake3.js';
|
|
import '@noble/hashes/sha3.js';
|
|
|
|
const PREFIX = Binary.fromText("modlpy/utilisuba").asBytes();
|
|
const getMultisigAccountId = ({
|
|
threshold,
|
|
signatories
|
|
}) => {
|
|
const sortedSignatories = sortMultisigSignatories(signatories);
|
|
const payload = mergeUint8([
|
|
PREFIX,
|
|
compact.enc(sortedSignatories.length),
|
|
...sortedSignatories,
|
|
u16.enc(threshold)
|
|
]);
|
|
return Blake2256(payload);
|
|
};
|
|
const sortMultisigSignatories = (signatories) => signatories.slice().sort((a, b) => {
|
|
for (let i = 0; ; i++) {
|
|
const overA = i >= a.length;
|
|
const overB = i >= b.length;
|
|
if (overA && overB) return 0;
|
|
else if (overA) return -1;
|
|
else if (overB) return 1;
|
|
else if (a[i] !== b[i]) return a[i] > b[i] ? 1 : -1;
|
|
}
|
|
});
|
|
|
|
export { getMultisigAccountId, sortMultisigSignatories };
|
|
//# sourceMappingURL=multisig.mjs.map
|