1import ./make-test-python.nix (
2 { pkgs, ... }:
3 let
4 keystore = {
5 address = "9377bc3936de934c497e22917b81aa8774ac3bb0";
6 crypto = {
7 cipher = "aes-128-ctr";
8 ciphertext = "ad8341d8ef225650403fd366c955f41095e438dd966a3c84b3d406818c1e366c";
9 cipherparams = {
10 iv = "2a09f7a72fd6dff7c43150ff437e6ac2";
11 };
12 kdf = "scrypt";
13 kdfparams = {
14 dklen = 32;
15 n = 262144;
16 p = 1;
17 r = 8;
18 salt = "d1a153845bb80cd6274c87c5bac8ac09fdfac5ff131a6f41b5ed319667f12027";
19 };
20 mac = "a9621ad88fa1d042acca6fc2fcd711f7e05bfbadea3f30f379235570c8e270d3";
21 };
22 id = "89e847a3-1527-42f6-a321-77de0a14ce02";
23 version = 3;
24 };
25 keystore-file = pkgs.writeText "keystore-file" (builtins.toJSON keystore);
26 in
27 {
28 name = "quorum";
29 meta = with pkgs.lib.maintainers; {
30 maintainers = [ mmahut ];
31 };
32
33 nodes = {
34 machine =
35 { ... }:
36 {
37 services.quorum = {
38 enable = true;
39 permissioned = false;
40 staticNodes = [
41 "enode://dd333ec28f0a8910c92eb4d336461eea1c20803eed9cf2c056557f986e720f8e693605bba2f4e8f289b1162e5ac7c80c914c7178130711e393ca76abc1d92f57@0.0.0.0:30303?discport=0"
42 ];
43 genesis = {
44 alloc = {
45 "189d23d201b03ae1cf9113672df29a5d672aefa3" = {
46 balance = "0x446c3b15f9926687d2c40534fdb564000000000000";
47 };
48 "44b07d2c28b8ed8f02b45bd84ac7d9051b3349e6" = {
49 balance = "0x446c3b15f9926687d2c40534fdb564000000000000";
50 };
51 "4c1ccd426833b9782729a212c857f2f03b7b4c0d" = {
52 balance = "0x446c3b15f9926687d2c40534fdb564000000000000";
53 };
54 "7ae555d0f6faad7930434abdaac2274fd86ab516" = {
55 balance = "0x446c3b15f9926687d2c40534fdb564000000000000";
56 };
57 c1056df7c02b6f1a353052eaf0533cc7cb743b52 = {
58 balance = "0x446c3b15f9926687d2c40534fdb564000000000000";
59 };
60 };
61 coinbase = "0x0000000000000000000000000000000000000000";
62 config = {
63 byzantiumBlock = 1;
64 chainId = 10;
65 eip150Block = 1;
66 eip150Hash = "0x0000000000000000000000000000000000000000000000000000000000000000";
67 eip155Block = 1;
68 eip158Block = 1;
69 homesteadBlock = 1;
70 isQuorum = true;
71 istanbul = {
72 epoch = 30000;
73 policy = 0;
74 };
75 };
76 difficulty = "0x1";
77 extraData = "0x0000000000000000000000000000000000000000000000000000000000000000f8aff869944c1ccd426833b9782729a212c857f2f03b7b4c0d94189d23d201b03ae1cf9113672df29a5d672aefa39444b07d2c28b8ed8f02b45bd84ac7d9051b3349e694c1056df7c02b6f1a353052eaf0533cc7cb743b52947ae555d0f6faad7930434abdaac2274fd86ab516b8410000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0";
78 gasLimit = "0xe0000000";
79 gasUsed = "0x0";
80 mixHash = "0x63746963616c2062797a616e74696e65206661756c7420746f6c6572616e6365";
81 nonce = "0x0";
82 number = "0x0";
83 parentHash = "0x0000000000000000000000000000000000000000000000000000000000000000";
84 timestamp = "0x5cffc201";
85 };
86 };
87 };
88 };
89
90 testScript = ''
91 start_all()
92 machine.succeed("mkdir -p /var/lib/quorum/keystore")
93 machine.succeed(
94 'cp ${keystore-file} /var/lib/quorum/keystore/UTC--2020-03-23T11-08-34.144812212Z--${keystore.address}'
95 )
96 machine.succeed(
97 "echo fe2725c4e8f7617764b845e8d939a65c664e7956eb47ed7d934573f16488efc1 > /var/lib/quorum/nodekey"
98 )
99 machine.succeed("systemctl restart quorum")
100 machine.wait_for_unit("quorum.service")
101 machine.sleep(15)
102 machine.succeed('geth attach /var/lib/quorum/geth.ipc --exec "eth.accounts" | grep ${keystore.address}')
103 '';
104 }
105)