forked from trezor/connect
-
Notifications
You must be signed in to change notification settings - Fork 0
/
signtx-paytomultisig.html
97 lines (86 loc) · 3.75 KB
/
signtx-paytomultisig.html
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
<!DOCTYPE html>
<html>
<head>
<title>TREZOR Sign Transaction Test</title>
<script>
function trezorSignTx(testId) {
// this example requires a device loaded with seed:
// alcohol woman abuse must during monitor noble actual mixed trade anger aisle
// for a convenience, TrezorConnect internals convert xpubs to HDNodeType.
// Test:
// https://github.com/trezor/python-trezor/blob/master/tests/device_tests/test_multisig.py
var ext1 = 'xpub6E2LkiC2h7icfcjXPFDmwufDRaaTjTRYcS2nD7eGQeFx1WwZxxvCya5GefiJND6ddJnAjzzMusLcCnu6WyhZPrF6e5G71MWjNJVfs6u9csg';
var ext2 = 'xpub6FKKCwdfD85eHmKn7d3mmbhqsHnGkB2n7Hmre29gbnR1cR4U1wrtf2akh1VVqjcTdfkxmwPjQyYPhLLgwBijfFPAYqTZzcjj4awB1BMUxq2';
var int1 = 'xpub661MyMwAqRbcF1zGijBb2K6x9YiJPh58xpcCeLvTxMX6spkY3PcpJ4ABcCyWfskq5DDxM3e6Ez5ePCqG5bnPUXR4wL8TZWyoDaUdiWW7bKy';
//spend a multisig input
var inputs;
if (testId == 1) {
inputs = [
{
address_n: [1],
prev_index: 1,
prev_hash: 'c6091adf4c0c23982a35899a6e58ae11e703eacd7954f588ed4b9cdefc4dba52',
script_type: 'SPENDMULTISIG',
multisig: {
pubkeys: [
{node: int1, address_n: [1]},
{node: int1, address_n: [2]},
{node: int1, address_n: [3]}
],
signatures: ['', '', ''],
m: 2
}
}
];
} else {
inputs = [
{
address_n: [3],
prev_index: 1,
prev_hash: 'c6091adf4c0c23982a35899a6e58ae11e703eacd7954f588ed4b9cdefc4dba52',
script_type: 'SPENDMULTISIG',
multisig: {
pubkeys: [
{node: int1, address_n: [1]},
{node: int1, address_n: [2]},
{node: int1, address_n: [3]}
],
signatures: ['3045022100985cc1ba316d140eb4b2d4028d8cd1c451f87bff8ff679858732e516ad04cd3402207af6edda99972af0baa7702a3b7448517c8242e7bca669f6861771cdd16ee058', '', ''],
m: 2
}
}
];
}
// send to PAYTOADDRESS output
var outputs = [{
script_type: 'PAYTOADDRESS',
amount: 100000,
address: '12iyMbUb4R2K3gre4dHSrbu5azG5KaqVss'
}];
TrezorConnect.signTx(inputs, outputs, function (response) {
if (response.success) {
console.log('Serialized TX:', response.serialized_tx); // tx in hex
console.log('Signatures:', response.signatures); // array of signatures, in hex
} else {
console.error('Error:', response.error); // error message
}
document.getElementById("response").innerHTML = JSON.stringify(response, undefined, 2);
});
}
</script>
</head>
<body>
<p>This example requires a device loaded with seed:</p>
<pre>alcohol woman abuse must during monitor noble actual mixed trade anger aisle</pre>
<button onclick="trezorSignTx(1)">Sign with key 1</button>
<button onclick="trezorSignTx(2)">Sign with key 2</button>
<pre id="response"></pre>
<script>
if (window.location.hostname === 'localhost') {
window.TREZOR_POPUP_ORIGIN = window.location.origin;
window.TREZOR_POPUP_URL = window.TREZOR_POPUP_ORIGIN + '/popup/popup.html';
}
</script>
<script src="../connect.js"></script>
</body>
</html>