fix: correctly count duplicate signing keys

This commit is contained in:
Michael Vines 2019-05-08 11:00:05 -07:00
parent 48f0bcc2bf
commit f7a02e54df
2 changed files with 25 additions and 3 deletions

View File

@ -163,10 +163,10 @@ export class Transaction {
instruction.keys.forEach(keySignerPair => {
const keyStr = keySignerPair.pubkey.toString();
if (keySignerPair.isSigner) {
numRequiredSignatures += 1;
}
if (!keys.includes(keyStr)) {
if (keySignerPair.isSigner) {
numRequiredSignatures += 1;
}
keys.push(keyStr);
}
});

View File

@ -56,6 +56,28 @@ test('transfer signatures', () => {
expect(newTransaction).toEqual(orgTransaction);
});
test('dedup signatures', () => {
const account1 = new Account();
const account2 = new Account();
const recentBlockhash = account1.publicKey.toBase58(); // Fake recentBlockhash
const transfer1 = SystemProgram.transfer(
account1.publicKey,
account2.publicKey,
123,
);
const transfer2 = SystemProgram.transfer(
account1.publicKey,
account2.publicKey,
123,
);
const orgTransaction = new Transaction({recentBlockhash}).add(
transfer1,
transfer2,
);
orgTransaction.sign(account1);
});
test('parse wire format and serialize', () => {
const keypair = nacl.sign.keyPair.fromSeed(
Uint8Array.from(Array(32).fill(8)),