-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathvalidators.js
More file actions
73 lines (66 loc) · 2.07 KB
/
validators.js
File metadata and controls
73 lines (66 loc) · 2.07 KB
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
const web3 = require("web3")
const RLP = require('rlp');
// Configure
const validators = [
{
"consensusAddr": "0xa4eCD346d065827d303E95934eD712E978693d97",
"feeAddr": "0xa4eCD346d065827d303E95934eD712E978693d97",
},
{
"consensusAddr": "0x2Af1516cBA4b8aBd55E98eD2AABF91D367F02734",
"feeAddr": "0x2Af1516cBA4b8aBd55E98eD2AABF91D367F02734",
},
{
"consensusAddr": "0x217d71773cAF8916484800B959248DAfC44A0629",
"feeAddr": "0x217d71773cAF8916484800B959248DAfC44A0629",
},
{
"consensusAddr": "0x82F74B5Adc6Cc4aCAc54D80a2559317284fE2b87",
"feeAddr": "0x82F74B5Adc6Cc4aCAc54D80a2559317284fE2b87",
},
{
"consensusAddr": "0x68786fe80F10449C6cF3aCD97299fAcf15050721",
"feeAddr": "0x68786fe80F10449C6cF3aCD97299fAcf15050721",
},
{
"consensusAddr": "0xAB8F65a007481a346D907E9BB4c2a83bdb8e9aA9",
"feeAddr": "0xAB8F65a007481a346D907E9BB4c2a83bdb8e9aA9",
},
{
"consensusAddr": "0xA4458700cfadb165FA7ED5E650835F214482956f",
"feeAddr": "0xA4458700cfadb165FA7ED5E650835F214482956f",
},
];
// =============== Do not edit below ====
function generateExtradata(validators) {
let extraVanity =Buffer.alloc(32);
let validatorsBytes = extraDataSerialize(validators);
let extraSeal =Buffer.alloc(65);
return Buffer.concat([extraVanity,validatorsBytes,extraSeal]);
}
function extraDataSerialize(validators) {
let n = validators.length;
let arr = [];
for (let i = 0;i<n;i++) {
let validator = validators[i];
arr.push(Buffer.from(web3.utils.hexToBytes(validator.consensusAddr)));
}
return Buffer.concat(arr);
}
function validatorUpdateRlpEncode(validators) {
let n = validators.length;
let vals = [];
for (let i = 0;i<n;i++) {
vals.push([
validators[i].consensusAddr,
validators[i].feeAddr,
]);
}
return web3.utils.bytesToHex(RLP.encode(vals));
}
extraValidatorBytes = generateExtradata(validators);
validatorSetBytes = validatorUpdateRlpEncode(validators);
exports = module.exports = {
extraValidatorBytes: extraValidatorBytes,
validatorSetBytes: validatorSetBytes,
}