Skip to content
This repository was archived by the owner on Aug 18, 2020. It is now read-only.

Commit 2a5b576

Browse files
Merge #4247
4247: Single-machine multi-node mixed cluster CI prerequisites r=deepfire a=deepfire This supplies the necessary changes for a mixed-cluster integration test, as per IntersectMBO/cardano-node#255 : 1. `mainnet_ci_full` genesis & configuration, starting in OBFT node 2. fix for an OBFT EBB rollback issue, which was trying to erase EBB even if the chain was started in OBFT mode, leading to IntersectMBO/cardano-node#255 (comment) 3. change in `network-transport-tcp` to be more lenient regarding remote address claims: deepfire/network-transport-tcp@44f84a8. This is necessary to avoid problems when starting multiple nodes on the same machine. 4. small improvements in genesis generation Additionally, this resets the protocol version for the `shelley_staging_short_full` configuration to 0 -- a prerequisite for its respin. *NOTE*: perhaps this PR should be split. But then, this repository sees very little activity, so perhaps the separation wouldn't have much benefit. I don't have a strong opinion myself. Co-authored-by: Kosyrev Serge <[email protected]>
2 parents 07d59e7 + f32a634 commit 2a5b576

File tree

14 files changed

+300
-10
lines changed

14 files changed

+300
-10
lines changed

auxx/Main.hs

+1
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ correctNodeParams AuxxOptions {..} np = do
7575
, ncFailurePolicy = topologyFailurePolicy topology
7676
, ncTopology = topology
7777
, ncTcpAddr = TCP.Unaddressable
78+
, ncCheckPeerHost = True
7879
}
7980

8081
runNodeWithSinglePlugin ::

chain/shell.nix

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
let
2+
self = import ../. {};
3+
in (self.nix-tools.shellFor {
4+
name = "cardano-chain";
5+
packages = ps: [ ps.cardano-sl-chain ];
6+
})

db/shell.nix

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
let
2+
self = import ../. {};
3+
in (self.nix-tools.shellFor {
4+
name = "cardano-db";
5+
packages = ps: [ ps.cardano-sl-db ];
6+
})

default.nix

+6-1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ let
44
in { customConfig ? {}
55
, target ? builtins.currentSystem
66
, gitrev ? commitIdFromGitRepo ./.git
7+
, genesisArgs ? {}
78
}:
89
#
910
#
@@ -41,6 +42,10 @@ let
4142
scripts = import ./nix/scripts.nix {
4243
inherit commonLib nixTools customConfig cardanoConfig;
4344
};
45+
mkGenesis = pkgs.callPackage ./scripts/prepare-genesis (genesisArgs // {
46+
inherit (nixTools.nix-tools.libs) cardano-sl;
47+
inherit (nixTools.nix-tools.exes) cardano-sl-tools;
48+
});
4449
# Tests contains code quality tests like shellcheck, yaml validation, and haskell style requirements to pass CI
4550
tests = import ./nix/tests.nix {
4651
inherit commonLib src nixTools;
@@ -70,7 +75,7 @@ let
7075
};
7176
in commonLib.forEnvironments mkTest;
7277
in {
73-
inherit pkgs acceptanceTests daedalus-bridge tests
78+
inherit pkgs acceptanceTests daedalus-bridge tests mkGenesis
7479
cardanoConfig faucetFrontend explorerFrontend explorerPythonAPI;
7580
inherit (nixTools) nix-tools;
7681
} // scripts

infra/shell.nix

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
let
2+
self = import ../. {};
3+
in (self.nix-tools.shellFor {
4+
name = "cardano-infra";
5+
packages = ps: [ ps.cardano-sl-infra ];
6+
})

infra/src/Pos/Infra/Diffusion/Transport/TCP.hs

+10-5
Original file line numberDiff line numberDiff line change
@@ -21,26 +21,31 @@ import Pos.Util.Trace (Trace, traceWith)
2121
-- - Given connection timeout in us
2222
-- - Given address (possibly unaddressable)
2323
-- - A fair QDisc
24-
-- - Check the peer host against resolved host (prevents easy denial-of-service)
24+
-- - Optionally check the peer host against resolved host, which prevents easy
25+
-- denial-of-service attacks
2526
-- - Do not crash the server if 'accept' fails; instead, use the given
2627
-- 'Trace' to log the reason and continue trying to accept new connections
2728
bracketTransportTCP
2829
:: Trace IO Text
2930
-> Microsecond
3031
-> TCP.TCPAddr
32+
-> Bool
3133
-> (NT.Transport -> IO a)
3234
-> IO a
33-
bracketTransportTCP logTrace connectionTimeout tcpAddr k = bracket
34-
(createTransportTCP logTrace connectionTimeout tcpAddr)
35+
bracketTransportTCP logTrace connectionTimeout tcpAddr checkPeerHost k = bracket
36+
(createTransportTCP logTrace connectionTimeout tcpAddr checkPeerHost)
3537
NT.closeTransport
3638
k
3739

3840
createTransportTCP
3941
:: Trace IO Text -- ^ Whenever there's an error accepting a new connection.
4042
-> Microsecond -- ^ Connection timeout
4143
-> TCP.TCPAddr
44+
-> Bool -- ^ Whether to perform the TCP peer address consistency.
4245
-> IO NT.Transport
43-
createTransportTCP logTrace connectionTimeout addrInfo = do
46+
createTransportTCP logTrace connectionTimeout addrInfo checkPeerHost = do
47+
unless checkPeerHost $ do
48+
traceWith logTrace "DANGER: peer host address check disabled! Node is vulnerable to DoS attacks."
4449
let tcpParams =
4550
(TCP.defaultTCPParameters
4651
{ TCP.transportConnectTimeout =
@@ -49,7 +54,7 @@ createTransportTCP logTrace connectionTimeout addrInfo = do
4954
-- Will check the peer's claimed host against the observed host
5055
-- when new connections are made. This prevents an easy denial
5156
-- of service attack.
52-
, TCP.tcpCheckPeerHost = True
57+
, TCP.tcpCheckPeerHost = checkPeerHost
5358
, TCP.tcpServerExceptionHandler = \e ->
5459
traceWith logTrace (sformat ("Exception in tcp server: " % shown) e)
5560
})

infra/src/Pos/Infra/Network/CLI.hs

+11
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,10 @@ data NetworkConfigOpts = NetworkConfigOpts
7878
-- address.
7979
, ncoExternalAddress :: !(Maybe NetworkAddress)
8080
-- ^ A node must be addressable on the network.
81+
, ncoCheckPeerHost :: !Bool
82+
-- ^ Whether to perform the peer host address consistency check.
83+
-- The check is necessary to avoid easy denial-of-service attacks,
84+
-- but can be restrictive in certain scenarios.
8185
} deriving (Show)
8286

8387
----------------------------------------------------------------------------
@@ -123,6 +127,12 @@ networkConfigOption = do
123127
, Opt.metavar "FILEPATH"
124128
, Opt.help "Path to a YAML file containing the network policies"
125129
]
130+
ncoCheckPeerHost <- (not <$>) .
131+
Opt.switch $
132+
mconcat
133+
[ Opt.long "disable-peer-host-check"
134+
, Opt.help "DANGER: disable the peer host address consistency check. Makes your node vulnerable"
135+
]
126136
ncoExternalAddress <- optional $ externalNetworkAddressOption Nothing
127137
ncoBindAddress <- optional $ listenNetworkAddressOption Nothing
128138
pure $ NetworkConfigOpts {..}
@@ -375,6 +385,7 @@ intNetworkConfigOpts logTrace cfg@NetworkConfigOpts{..} = do
375385
, ncDequeuePolicy = dequeuePolicy
376386
, ncFailurePolicy = failurePolicy
377387
, ncTcpAddr = tcpAddr
388+
, ncCheckPeerHost = ncoCheckPeerHost
378389
}
379390

380391
pure networkConfig

infra/src/Pos/Infra/Network/Types.hs

+4
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,10 @@ data NetworkConfig kademlia = NetworkConfig
109109
, ncTcpAddr :: !TCP.TCPAddr
110110
-- ^ External TCP address of the node.
111111
-- It encapsulates both bind address and address visible to other nodes.
112+
, ncCheckPeerHost :: !Bool
113+
-- ^ Whether to perform the peer host address consistency check.
114+
-- The check is necessary to avoid easy denial-of-service attacks,
115+
-- but can be restrictive in certain scenarios.
112116
}
113117

114118
instance Show kademlia => Show (NetworkConfig kademlia) where

lib/configuration.yaml

+47-1
Original file line numberDiff line numberDiff line change
@@ -14879,6 +14879,52 @@ mainnet_wallet_linux64: &mainnet_wallet_linux64
1487914879
bvAlt: 0
1488014880

1488114881

14882+
##############################################################################
14883+
## ##
14884+
## CI Mainnet lookalike: chosen to be similar to mainnet. ##
14885+
## ##
14886+
##############################################################################
14887+
14888+
mainnet_ci: &mainnet_ci
14889+
<<: *mainnet_base
14890+
core:
14891+
<<: *mainnet_base_core
14892+
genesis:
14893+
<<: *mainnet_base_genesis
14894+
spec:
14895+
<<: *mainnet_base_spec
14896+
blockVersionData:
14897+
<<: *mainnet_base_blockVersionData
14898+
unlockStakeEpoch: 9999999999999999999 # we're starting in OBFT mode
14899+
requiresNetworkMagic: RequiresNoMagic
14900+
txValidationRules:
14901+
attribResrictEpoch: 2
14902+
addrAttribSize: 128
14903+
txAttribSize: 128
14904+
14905+
mainnet_ci_full: &mainnet_ci_full
14906+
<<: *mainnet_ci
14907+
core:
14908+
<<: *mainnet_base_core
14909+
genesis:
14910+
<<: *mainnet_base_genesis
14911+
src:
14912+
file: mainnet-ci-genesis.json
14913+
hash: 12da51c484b5310fe26ca06ab24b94b323cde3698a0a50cb3f212abd08c2731e
14914+
requiresNetworkMagic: RequiresNoMagic
14915+
txValidationRules:
14916+
attribResrictEpoch: 2
14917+
addrAttribSize: 128
14918+
txAttribSize: 128
14919+
update:
14920+
<<: *mainnet_base_update
14921+
applicationName: cardano-sl
14922+
applicationVersion: 0
14923+
lastKnownBlockVersion:
14924+
bvMajor: 0
14925+
bvMinor: 0
14926+
bvAlt: 0
14927+
1488214928
##############################################################################
1488314929
## ##
1488414930
## Testnet config ##
@@ -15089,7 +15135,7 @@ shelley_staging_short_full: &shelley_staging_short_full
1508915135
applicationName: cardano-sl
1509015136
applicationVersion: 0
1509115137
lastKnownBlockVersion:
15092-
bvMajor: 1
15138+
bvMajor: 0
1509315139
bvMinor: 0
1509415140
bvAlt: 0
1509515141

lib/mainnet-ci-genesis.json

+191
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,191 @@
1+
{ "bootStakeholders":
2+
{ "349875334fa951017f7ce4fd975785274a3e7bcbb35fe28458ec5900": 1
3+
, "738c6dcec2909b2cf274feec9da4cc0f5876c4b7c6acf61cfbd618ac": 1
4+
, "99b34d57b3164744edbc8916f77d494b78fb3289ebf8b4691775e3b1": 1
5+
, "9ae136ae35f84efecf7dffa6bc5963d7caeffdacc12a2c6ea670528f": 1
6+
, "c2ddbcba2582c5b8fc918562714b77384fdedd0e4341eed34cc47b2e": 1
7+
, "cec348d48173fd89837d948c1666a18a2fb9ab44d39d8f23b1f2c736": 1
8+
, "de603c2e9009c91ccd4b582222d95732c2bcf2229e4f209f9c043983": 1
9+
}
10+
, "heavyDelegation":
11+
{ "de603c2e9009c91ccd4b582222d95732c2bcf2229e4f209f9c043983":
12+
{ "omega": 0
13+
, "issuerPk":
14+
"SjCXUJk2lGpKakmobelIjhGhawinAsi5YLnPqX6n8seLr4sDFyY6+BGVzEuPvKRUeAWWeM+3GuANXP985xXT7w=="
15+
, "delegatePk":
16+
"//mG4ipmYDEENKivhV7Oq46+tJif+2wa4GsuPwQDEURry+10BtD2w4s41WSpc9U0LEMmLVouaOu0CZYRM05m3Q=="
17+
, "cert":
18+
"a11d7ea60086b1595d98a1de84c382ede0dcb1792911284d7c428baee9604bd8d91d7865bb7ab76d2d82be10ea0cae4b530b8056db7495ae5cbcbd5fd35fec09"
19+
}
20+
, "9ae136ae35f84efecf7dffa6bc5963d7caeffdacc12a2c6ea670528f":
21+
{ "omega": 0
22+
, "issuerPk":
23+
"Yndxq1HBBG8NbDTL+kRF5HovIXry+5x2PJpz71wiQl/kUuvm+vsBXKO9UkBcy/vlnDQW+zuMU089+VIz9I5IKw=="
24+
, "delegatePk":
25+
"MtNTlXQR+kC39kDhrf/IQasPssmUnBXAj1pPtceVhFoBi90wECKbJXQbvZ72fs0ksaQRSWkO3dPbO6FsGQo0Rw=="
26+
, "cert":
27+
"06c48cb6f9d153e4d5c63ba9ebda88d62971145216333745877addad2a964fcaf828637fa7bc64d0238c7dd98c09870b27ff898dcab31060875c5378932c9703"
28+
}
29+
, "c2ddbcba2582c5b8fc918562714b77384fdedd0e4341eed34cc47b2e":
30+
{ "omega": 0
31+
, "issuerPk":
32+
"/rGQgnOqzluf7NmHPMdkpAaQapK/FTsZoT6w96QWCHkp+/vdYCS9bk9TdDtX0CRJLXzgzPXcq3UlOey+6CApXg=="
33+
, "delegatePk":
34+
"rxPs9hm/HZCn+Z06tU8j7A5EHvPIPoyonCyEzVKajtA8EMSkJYWlHdEfDl1JNx90Hd34J+p+UjT9pPLVHo3SAg=="
35+
, "cert":
36+
"e7ddb0ddeac825607f22bd9a6609ce0d4fc66ce4f4ed1b252465b56049380042ede3e76e3c8a6b083336cf9b8e3b5042d8af1df1624eeb850231c29ff6da2e05"
37+
}
38+
, "349875334fa951017f7ce4fd975785274a3e7bcbb35fe28458ec5900":
39+
{ "omega": 0
40+
, "issuerPk":
41+
"k4q/XteUcIQDlYXOBVeWLifA4/KYPdfIfqIMDz4dejoL/Pz6hHET1QwLTzAf44YZxr9XhGHJwl64H55HudRL/g=="
42+
, "delegatePk":
43+
"zsFdePoiBskHkMGVcqDM8WB4aTN+dVefPgGjpmW2xzFDJ8FiSCS9ArNsWOQX168YPI/XY9eDBTBxgRq1tzk9Vg=="
44+
, "cert":
45+
"4d496772684db4aa34b9146a37423dca7f807855db0233886cac3c551567763d7752eca1d66c4d0fea802963598d4748ff216a0ea4160f9359419bf68c305b00"
46+
}
47+
, "cec348d48173fd89837d948c1666a18a2fb9ab44d39d8f23b1f2c736":
48+
{ "omega": 0
49+
, "issuerPk":
50+
"9TRdc/1XW65HlqtGswn35X4afZHfle+DiY4HFz39XAROX+O/tyIjJaDx93WnxkHr1lCHUYrPxH0jKOYf+tQrgw=="
51+
, "delegatePk":
52+
"ULMqBI5sXWCmUAl7ApsY1P/eceSxe7NDfXG32iuXJVZFKWK4+PA+/2o/WSXMb9y6WhYHyVlG2wskfZI3aYt/pw=="
53+
, "cert":
54+
"b1627b29a53bdeea21e616fec7918d5de27fcf2f067fb1f6b89ffe24306a5222d98b20525d9cb5f448d8a425ee1e92e4f988c7ce2c81c97d193d9f1a50a6a609"
55+
}
56+
, "99b34d57b3164744edbc8916f77d494b78fb3289ebf8b4691775e3b1":
57+
{ "omega": 0
58+
, "issuerPk":
59+
"mlqqO78i9o10tSaRVORNs148vHRbvw4e+r9J6ysSIbCCSFprE6wclnwBQCAgWrwlLKWnFqmOpeGSD6okft+GlA=="
60+
, "delegatePk":
61+
"dYi6eBK9QghIyxQtgGU0lpjlQwJlDxkXFyb0zzw3TLGyVKuGHJ3IYuTB8hRV6VULgjp+qM+UpmuNg2yIud6JTQ=="
62+
, "cert":
63+
"4f61aedf34cd73a14a3398452cb198a532a048bee27f57761e4e6344a5b07c8dbfab6fc105fe1e58075a323a470ba8526b3e46dc654809be2858c96c2b996c0d"
64+
}
65+
, "738c6dcec2909b2cf274feec9da4cc0f5876c4b7c6acf61cfbd618ac":
66+
{ "omega": 0
67+
, "issuerPk":
68+
"hkfYBtKgT+UXZEHgXKdLyYzUBLRfP6tGzv3bBowK8VlgUHJSV2WrNlgE0X5XOSplBGVvumk5iFk/HMR/W/DUQQ=="
69+
, "delegatePk":
70+
"+YvE003e+XTaEipsQXoQrB4iFX1a6BkFrSYAKZVaCHUt/zwWkHS2rCOO5Kr4v3+8HoTUEJQurVfStHFKwU8z/A=="
71+
, "cert":
72+
"96980ebced8176e86d24e30f0db251097e0ecc133f0770a6f506a7ae5e07e80d250b904349e608bf01d5d13a4a973284105ecf1533255ee0466d95cc6c422d01"
73+
}
74+
}
75+
, "startTime": 1000000000
76+
, "vssCerts":
77+
{ "be97b02effc15b4819a74444788d1747bb97a83833295a488265f3fa":
78+
{ "vssKey": "WCED4yhvwuGjpTsmXrHEn1hgfXj1alVgjCpI5kcGn6RIuHw="
79+
, "expiryEpoch": 4
80+
, "signature":
81+
"9fc6584bf2ae7f9dbcbbbd02505cf3b1af76855a187132bc30e387c83f8f7fc649a934f66cee38436bb49656162c13b9cff41f6dfead1399c8ef475985f01e02"
82+
, "signingKey":
83+
"+YvE003e+XTaEipsQXoQrB4iFX1a6BkFrSYAKZVaCHUt/zwWkHS2rCOO5Kr4v3+8HoTUEJQurVfStHFKwU8z/A=="
84+
}
85+
, "f3b59f7606a323ef72caef05f0202eb2771e9b600a29991c9a75e27f":
86+
{ "vssKey": "WCEDdxpO+GablpMH+XdvBompn0aVlUD+SB5MxEnZyxIi8PQ="
87+
, "expiryEpoch": 4
88+
, "signature":
89+
"a502c6d76bc6bfa2510db1178e1eebe37a3e615302ec0c2f616adf112f90e5937f32703b21676ac8af58eb72a190f1e4de6c7eae4f638ec81e7a4abb1cda6106"
90+
, "signingKey":
91+
"rxPs9hm/HZCn+Z06tU8j7A5EHvPIPoyonCyEzVKajtA8EMSkJYWlHdEfDl1JNx90Hd34J+p+UjT9pPLVHo3SAg=="
92+
}
93+
, "f259e9754b74e1ce59c094a0a7f107e86c74ada5dcff9756cbf45ee8":
94+
{ "vssKey": "WCEDGLoZAlxTyFwYtrvtiP/8GnWdt7oJODaZgEHExn8w/rA="
95+
, "expiryEpoch": 5
96+
, "signature":
97+
"c61446d50f359ccbd92e7dcf8a7eb1de0a49e33c93005fba5c3915ff8577644ad0c7b15e3a32056c758d0bbbb23091e181d2871d72d226862a9726608cc8af05"
98+
, "signingKey":
99+
"MtNTlXQR+kC39kDhrf/IQasPssmUnBXAj1pPtceVhFoBi90wECKbJXQbvZ72fs0ksaQRSWkO3dPbO6FsGQo0Rw=="
100+
}
101+
, "dd5dc1f04be1818a6e88d9b41fcea777c95431a0c7fc4e40783676e2":
102+
{ "vssKey": "WCECJV1OT+KeVozv5WC3BjkYxkvW43OA9GS62HXC3dRhftc="
103+
, "expiryEpoch": 5
104+
, "signature":
105+
"fabf4c08420d568632f46fef7eb0a445ce1154f5406dc823622ed0f9872beb403a72b4ca8aa5213cc507797a259675dc1ff29b9133bd647fa94687ecfdf38f08"
106+
, "signingKey":
107+
"ULMqBI5sXWCmUAl7ApsY1P/eceSxe7NDfXG32iuXJVZFKWK4+PA+/2o/WSXMb9y6WhYHyVlG2wskfZI3aYt/pw=="
108+
}
109+
, "27f6b80abdbb88cd90fa3d1306e3c339616c9b9f8ab3e4b856b52b98":
110+
{ "vssKey": "WCEDf2+9DPmwTnGTPeyVV+5hQNbAHVdZA573JnvVl6qI+90="
111+
, "expiryEpoch": 3
112+
, "signature":
113+
"9a8914428f5175f2b92dcc8643200eb597ab418895fcee93ca10161a83e71c2ea48bbcdadfd71ae1d5c872317aff4d7531b0982f301c54cb0e1f9947286f0808"
114+
, "signingKey":
115+
"//mG4ipmYDEENKivhV7Oq46+tJif+2wa4GsuPwQDEURry+10BtD2w4s41WSpc9U0LEMmLVouaOu0CZYRM05m3Q=="
116+
}
117+
, "f80675f133629bfc9fd8f4f18e6aa7d9582ee9b3b503af62dfee18fb":
118+
{ "vssKey": "WCECFPSSfZ0u3uPOh+7eEIVIdqdqYEOzTnaBuphsWxS3+3w="
119+
, "expiryEpoch": 1
120+
, "signature":
121+
"77e3a387de9eb46759648976e14202147f8ddf3122078d9c829800556a311227c18078fc20ee6d5302fcac15c0d45f7020331cea73572671fe4f4f699420780b"
122+
, "signingKey":
123+
"dYi6eBK9QghIyxQtgGU0lpjlQwJlDxkXFyb0zzw3TLGyVKuGHJ3IYuTB8hRV6VULgjp+qM+UpmuNg2yIud6JTQ=="
124+
}
125+
, "ef2daf1e1514daa450ee09fe10e4bc4bfb0a118c8997ede5918399d0":
126+
{ "vssKey": "WCECW7KMfzRbNoXAtwgGI2XwX8y7spGSwhYWwJH1X+fBCeY="
127+
, "expiryEpoch": 1
128+
, "signature":
129+
"310e64bae51bc63f723e9ec61fa50c9a8b2dea0066b0a8cad6ae4d2a3b2954e03405cd1eaee950554ea73a2f7f942a57cd15b3284d6e0b15005aa5f198f95e0b"
130+
, "signingKey":
131+
"zsFdePoiBskHkMGVcqDM8WB4aTN+dVefPgGjpmW2xzFDJ8FiSCS9ArNsWOQX168YPI/XY9eDBTBxgRq1tzk9Vg=="
132+
}
133+
}
134+
, "nonAvvmBalances":
135+
{ "Ae2tdPwUPEZ21Dr9cLT4CYxW7DFpHTBvU4AR65J2u33zrujBHxaiPRxZyoR":
136+
"6364285714144286"
137+
, "Ae2tdPwUPEZ56zaZSxsY2BYXZaH2W4wZjHttNJkgSb11QxZs4VbhWYGx52U":
138+
"6364285714144286"
139+
, "Ae2tdPwUPEZGTh21xUi2fp8diX8aDhFjtvoZNbGbZFbC1WeE8kaoHviR5c1":
140+
"6364285714144286"
141+
, "Ae2tdPwUPEZ3FqpfqDpLLk5jZou5DH9ndMy4hjiqN1sPSB1Bjn4Qt3Fs4Jn":
142+
"6364285714144286"
143+
, "Ae2tdPwUPEZJe7EEtEvNbs3gz5sscWNTyj3VxuKnYZLsuXeHtfqmxi3E3Ev":
144+
"6364285714144286"
145+
, "Ae2tdPwUPEZ6bNgNJyfe7oLYsHzwQiGSfrQLChuWiokcVy5ZZtUKGgiBEhF":
146+
"6364285714144286"
147+
, "Ae2tdPwUPEZEVcTCHiYNRVWFNLonmbrby6UZQh5YL32wN2n7ey5KLrkWged":
148+
"6364285714144286"
149+
}
150+
, "blockVersionData":
151+
{ "scriptVersion": 0
152+
, "slotDuration": "20000"
153+
, "maxBlockSize": "2000000"
154+
, "maxHeaderSize": "2000000"
155+
, "maxTxSize": "4096"
156+
, "maxProposalSize": "700"
157+
, "mpcThd": "20000000000000"
158+
, "heavyDelThd": "300000000000"
159+
, "updateVoteThd": "1000000000000"
160+
, "updateProposalThd": "100000000000000"
161+
, "updateImplicit": "10000"
162+
, "softforkRule":
163+
{ "initThd": "900000000000000"
164+
, "minThd": "600000000000000"
165+
, "thdDecrement": "50000000000000"
166+
}
167+
, "txFeePolicy":
168+
{ "summand": "155381000000000" , "multiplier": "43946000000" }
169+
, "unlockStakeEpoch": "9999999999999999999"
170+
}
171+
, "protocolConsts":
172+
{ "k": 2160
173+
, "protocolMagic": 10000000
174+
, "vssMaxTTL": 6
175+
, "vssMinTTL": 2
176+
}
177+
, "avvmDistr":
178+
{ "auOjVwlo8o57KdHlW3G6kSqh3XXudncTgwhkDcasMM0=": "100000"
179+
, "YA4G1-UN0Wju8DEQYafUoCcW0MJArZj-ZZYONSMDdRk=": "100000"
180+
, "9rkRG-4GyyvjP1h7VuWY2dWPdoitqfsrBMz2MZjBLUM=": "100000"
181+
, "s-SYqVjCyQ1LxsKzGm5bnPfL3u7bxWd7UXvXsBii-QE=": "100000"
182+
, "AcI-mmPvZzNuBogo4mT6Pm-sORe2X8A_inis-kBhqts=": "100000"
183+
, "HpB3pRkwPHmQdsVAmpPTeWJXX0jlxQHATvAuHzQgI_M=": "100000"
184+
, "aQQcL_W7cHQJTO4yiJm1b5yTMSbfkr_3TVEhVdRkncY=": "100000"
185+
, "3TS-c7S9wjNAR1T3zWvOyxOoIVHBc-HQfHGNYjTeVSM=": "100000"
186+
, "lPQRZfGPN2GiqMuF-DtdL_lPUKktphyJc49oP8j1bGk=": "100000"
187+
, "KKWwJ0rcq7pyX-rf4cWfhb1XSk2uVqVk9x7RYbqNcnw=": "100000"
188+
}
189+
, "ftsSeed":
190+
"76617361206f7061736120736b6f766f726f64612047677572646120626f726f64612070726f766f6461"
191+
}

0 commit comments

Comments
 (0)