-
Notifications
You must be signed in to change notification settings - Fork 1
/
multisig.js
52 lines (43 loc) · 1.29 KB
/
multisig.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
const {
Networks,
Server,
TransactionBuilder,
Operation,
Keypair
} = require("stellar-sdk");
const { alice, bob } = require("./accounts");
const server = new Server("https://horizon-testnet.stellar.org");
const setMultisigOnAliceAccount = async () => {
const extraSigner = {
signer: {
ed25519PublicKey: bob.publicKey,
weight: 1
}
};
const thresholds = {
masterWeight: 2, // master (alice) represents the account's private key
lowThreshold: 2, // alice can sign on its own, but bob can't
medThreshold: 3, // alice and bob both need to sign for payments or changes of trustlines
highThreshold: 3 // same, for account merges and other account options
};
const txOptions = {
fee: await server.fetchBaseFee(),
networkPassphrase: Networks.TESTNET
};
const aliceAccount = await server.loadAccount(alice.publicKey);
const multiSigTx = new TransactionBuilder(aliceAccount, txOptions)
.addOperation(Operation.setOptions(thresholds))
.addOperation(Operation.setOptions(extraSigner))
.setTimeout(0)
.build();
multiSigTx.sign(Keypair.fromSecret(alice.secret));
await server.submitTransaction(multiSigTx);
};
setMultisigOnAliceAccount()
.then(() => {
console.log("ok");
})
.catch(e => {
console.error(e);
throw e;
});