From abb4fc23725c7178a5b1151db2c44a35ed09d738 Mon Sep 17 00:00:00 2001
From: auxten
Date: Sun, 25 Nov 2018 09:05:25 +0800
Subject: [PATCH 01/36] Add v0.0.5 changelog
---
CHANGELOG.md | 28 ++++++++++++++++++++++++++++
1 file changed, 28 insertions(+)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 37674d155..ba8e0389b 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,33 @@
# Changelog
+## [v0.0.5](https://github.com/CovenantSQL/CovenantSQL/tree/v0.0.5) (2018-11-23)
+
+[Full Changelog](https://github.com/CovenantSQL/CovenantSQL/compare/v0.0.4...v0.0.5)
+
+**Fixed bugs:**
+
+- Stuck in 2pc inconsistent state error [\#56](https://github.com/CovenantSQL/CovenantSQL/issues/56)
+
+**Closed issues:**
+
+- 用 cql 来查看你的钱包余额时出错 [\#111](https://github.com/CovenantSQL/CovenantSQL/issues/111)
+
+**Merged pull requests:**
+
+- Fix table name should add space in one test case. [\#128](https://github.com/CovenantSQL/CovenantSQL/pull/128) ([laodouya](https://github.com/laodouya))
+- Fix memory exhausting issue [\#127](https://github.com/CovenantSQL/CovenantSQL/pull/127) ([leventeliu](https://github.com/leventeliu))
+- Add block cache pruning [\#126](https://github.com/CovenantSQL/CovenantSQL/pull/126) ([leventeliu](https://github.com/leventeliu))
+- Utils/Profiler log field name wrong. [\#124](https://github.com/CovenantSQL/CovenantSQL/pull/124) ([laodouya](https://github.com/laodouya))
+- Add simple Pub Sub framework and fix bug during long march [\#122](https://github.com/CovenantSQL/CovenantSQL/pull/122) ([auxten](https://github.com/auxten))
+- Move client.conn.pCaller init in newConn [\#121](https://github.com/CovenantSQL/CovenantSQL/pull/121) ([auxten](https://github.com/auxten))
+- Fix broken BenchmarkMinerXXX add BenchmarkMinerTwo to travis [\#120](https://github.com/CovenantSQL/CovenantSQL/pull/120) ([auxten](https://github.com/auxten))
+- FUSE on CovenantSQL [\#119](https://github.com/CovenantSQL/CovenantSQL/pull/119) ([auxten](https://github.com/auxten))
+- Integration bench test support on exist database file. [\#118](https://github.com/CovenantSQL/CovenantSQL/pull/118) ([laodouya](https://github.com/laodouya))
+- Move HashSignVerifier definition to crypto package [\#117](https://github.com/CovenantSQL/CovenantSQL/pull/117) ([leventeliu](https://github.com/leventeliu))
+- Increase project test coverage and fix bugs in kayak [\#116](https://github.com/CovenantSQL/CovenantSQL/pull/116) ([xq262144](https://github.com/xq262144))
+- Fix invalid parent, and increate block producing period on main chain [\#115](https://github.com/CovenantSQL/CovenantSQL/pull/115) ([zeqing-guo](https://github.com/zeqing-guo))
+- A shard chain eventual consistency implementation [\#103](https://github.com/CovenantSQL/CovenantSQL/pull/103) ([leventeliu](https://github.com/leventeliu))
+
## [v0.0.4](https://github.com/CovenantSQL/CovenantSQL/tree/v0.0.4) (2018-11-08)
[Full Changelog](https://github.com/CovenantSQL/CovenantSQL/compare/v0.0.3...v0.0.4)
From 2402a15db2ef92c7a934e2796ea01146ced901a4 Mon Sep 17 00:00:00 2001
From: auxten
Date: Wed, 5 Dec 2018 16:31:57 +0800
Subject: [PATCH 02/36] Add new cloudflare.com DNSKEY
---
test/GNTE/conf/node_0/config.yaml | 1 +
test/GNTE/conf/node_1/config.yaml | 1 +
test/GNTE/conf/node_2/config.yaml | 1 +
test/GNTE/conf/node_c/config.yaml | 1 +
test/GNTE/conf/node_miner_10.250.100.2/config.yaml | 1 +
test/GNTE/conf/node_miner_10.250.100.3/config.yaml | 1 +
test/GNTE/conf/node_miner_10.250.100.4/config.yaml | 1 +
test/GNTE/conf/node_miner_10.250.100.5/config.yaml | 1 +
test/GNTE/conf/node_miner_10.250.100.6/config.yaml | 1 +
test/GNTE/conf/node_miner_10.250.100.7/config.yaml | 1 +
test/GNTE/conf/node_miner_10.250.100.8/config.yaml | 1 +
test/GNTE/conf/node_miner_10.250.100.9/config.yaml | 1 +
test/bootstrap.yaml | 1 +
test/fuse/node_0/config.yaml | 1 +
test/fuse/node_1/config.yaml | 1 +
test/fuse/node_2/config.yaml | 1 +
test/fuse/node_c/config.yaml | 1 +
test/fuse/node_miner_0/config.yaml | 1 +
test/fuse/node_miner_1/config.yaml | 1 +
test/fuse/node_miner_2/config.yaml | 1 +
test/integration/node_0/config.yaml | 1 +
test/integration/node_1/config.yaml | 1 +
test/integration/node_2/config.yaml | 1 +
test/integration/node_c/config.yaml | 1 +
test/integration/node_miner_0/config.yaml | 1 +
test/integration/node_miner_1/config.yaml | 1 +
test/integration/node_miner_2/config.yaml | 1 +
test/leak/client.yaml | 1 +
test/leak/leader.yaml | 1 +
test/mainchain/node_0/config.yaml | 1 +
test/mainchain/node_1/config.yaml | 1 +
test/mainchain/node_2/config.yaml | 1 +
test/mainchain/node_c/config.yaml | 1 +
test/mainchain/node_miner_0/config.yaml | 1 +
test/mainchain/node_miner_1/config.yaml | 1 +
test/mainchain/node_miner_2/config.yaml | 1 +
test/mainchain/node_multi_0/config.yaml | 1 +
test/mainchain/node_multi_1/config.yaml | 1 +
test/mainchain/node_multi_2/config.yaml | 1 +
test/mainchain/node_standalone/config.yaml | 1 +
test/node_0/config.yaml | 1 +
test/node_1/config.yaml | 1 +
test/node_2/config.yaml | 1 +
test/node_c/config.yaml | 1 +
test/node_standalone/config.yaml | 1 +
test/node_standalone/config2.yaml | 1 +
test/observation/node_0/config.yaml | 1 +
test/observation/node_1/config.yaml | 1 +
test/observation/node_2/config.yaml | 1 +
test/observation/node_c/config.yaml | 1 +
test/observation/node_miner_0/config.yaml | 1 +
test/observation/node_miner_1/config.yaml | 1 +
test/observation/node_miner_2/config.yaml | 1 +
test/observation/node_observer/config.yaml | 1 +
test/pool/client.yaml | 1 +
test/pool/leader.yaml | 1 +
test/service/node_0/config.yaml | 1 +
test/service/node_1/config.yaml | 1 +
test/service/node_2/config.yaml | 1 +
test/service/node_adapter/config.yaml | 1 +
test/service/node_c/config.yaml | 1 +
test/service/node_miner_0/config.yaml | 1 +
test/service/node_miner_1/config.yaml | 1 +
test/service/node_miner_2/config.yaml | 1 +
test/service/node_mysql_adapter/config.yaml | 1 +
test/service/node_observer/config.yaml | 1 +
66 files changed, 66 insertions(+)
diff --git a/test/GNTE/conf/node_0/config.yaml b/test/GNTE/conf/node_0/config.yaml
index d0f183e52..5999a7e55 100644
--- a/test/GNTE/conf/node_0/config.yaml
+++ b/test/GNTE/conf/node_0/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/GNTE/conf/node_1/config.yaml b/test/GNTE/conf/node_1/config.yaml
index 70f6ca0f8..15df963f9 100644
--- a/test/GNTE/conf/node_1/config.yaml
+++ b/test/GNTE/conf/node_1/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "00000381d46fd6cf7742d7fb94e2422033af989c0e348b5781b3219599a3af35"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/GNTE/conf/node_2/config.yaml b/test/GNTE/conf/node_2/config.yaml
index c1321a15c..5cbac829d 100644
--- a/test/GNTE/conf/node_2/config.yaml
+++ b/test/GNTE/conf/node_2/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "000000172580063ded88e010556b0aca2851265be8845b1ef397e8fce6ab5582"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/GNTE/conf/node_c/config.yaml b/test/GNTE/conf/node_c/config.yaml
index 75aa1975c..242705fbb 100644
--- a/test/GNTE/conf/node_c/config.yaml
+++ b/test/GNTE/conf/node_c/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "00000f3b43288fe99831eb533ab77ec455d13e11fc38ec35a42d4edd17aa320d"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/GNTE/conf/node_miner_10.250.100.2/config.yaml b/test/GNTE/conf/node_miner_10.250.100.2/config.yaml
index 2a301d150..11f86f067 100644
--- a/test/GNTE/conf/node_miner_10.250.100.2/config.yaml
+++ b/test/GNTE/conf/node_miner_10.250.100.2/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "000005aa62048f85da4ae9698ed59c14ec0d48a88a07c15a32265634e7e64ade"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
BlockProducer:
PublicKey: "02c76216704d797c64c58bc11519fb68582e8e63de7e5b3b2dbbbe8733efe5fd24"
NodeID: 00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9
diff --git a/test/GNTE/conf/node_miner_10.250.100.3/config.yaml b/test/GNTE/conf/node_miner_10.250.100.3/config.yaml
index 1106c28bb..af4ebc1fd 100644
--- a/test/GNTE/conf/node_miner_10.250.100.3/config.yaml
+++ b/test/GNTE/conf/node_miner_10.250.100.3/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "000005f4f22c06f76c43c4f48d5a7ec1309cc94030cbf9ebae814172884ac8b5"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
BlockProducer:
PublicKey: "02c76216704d797c64c58bc11519fb68582e8e63de7e5b3b2dbbbe8733efe5fd24"
NodeID: 00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9
diff --git a/test/GNTE/conf/node_miner_10.250.100.4/config.yaml b/test/GNTE/conf/node_miner_10.250.100.4/config.yaml
index b19dace89..451175275 100644
--- a/test/GNTE/conf/node_miner_10.250.100.4/config.yaml
+++ b/test/GNTE/conf/node_miner_10.250.100.4/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "000003f49592f83d0473bddb70d543f1096b4ffed5e5f942a3117e256b7052b8"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
BlockProducer:
PublicKey: "02c76216704d797c64c58bc11519fb68582e8e63de7e5b3b2dbbbe8733efe5fd24"
NodeID: 00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9
diff --git a/test/GNTE/conf/node_miner_10.250.100.5/config.yaml b/test/GNTE/conf/node_miner_10.250.100.5/config.yaml
index a09d83606..c89c325cf 100755
--- a/test/GNTE/conf/node_miner_10.250.100.5/config.yaml
+++ b/test/GNTE/conf/node_miner_10.250.100.5/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "00eda359cd2aa0920cdd37b083b896cb18cd26b3bd51744d1b4f127830f820f2"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
BlockProducer:
PublicKey: "02c76216704d797c64c58bc11519fb68582e8e63de7e5b3b2dbbbe8733efe5fd24"
NodeID: 00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9
diff --git a/test/GNTE/conf/node_miner_10.250.100.6/config.yaml b/test/GNTE/conf/node_miner_10.250.100.6/config.yaml
index b96505d19..7e20eae29 100755
--- a/test/GNTE/conf/node_miner_10.250.100.6/config.yaml
+++ b/test/GNTE/conf/node_miner_10.250.100.6/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "0017017845ff9f9f7e8599d308652eb8ce480e689fbd49afb6b44cc9726cf84b"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
BlockProducer:
PublicKey: "02c76216704d797c64c58bc11519fb68582e8e63de7e5b3b2dbbbe8733efe5fd24"
NodeID: 00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9
diff --git a/test/GNTE/conf/node_miner_10.250.100.7/config.yaml b/test/GNTE/conf/node_miner_10.250.100.7/config.yaml
index 5370e24f6..e88979235 100755
--- a/test/GNTE/conf/node_miner_10.250.100.7/config.yaml
+++ b/test/GNTE/conf/node_miner_10.250.100.7/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "0075b97519d0a5cf9f7269a61b82bb3e082a5e7d796604e877ee28d08491979a"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
BlockProducer:
PublicKey: "02c76216704d797c64c58bc11519fb68582e8e63de7e5b3b2dbbbe8733efe5fd24"
NodeID: 00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9
diff --git a/test/GNTE/conf/node_miner_10.250.100.8/config.yaml b/test/GNTE/conf/node_miner_10.250.100.8/config.yaml
index bc633a6fc..94c0a66dd 100755
--- a/test/GNTE/conf/node_miner_10.250.100.8/config.yaml
+++ b/test/GNTE/conf/node_miner_10.250.100.8/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "0060bb3394f5185f760af690b0c124a70acbaf952fd79d794a0d394c37d7c0bc"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
BlockProducer:
PublicKey: "02c76216704d797c64c58bc11519fb68582e8e63de7e5b3b2dbbbe8733efe5fd24"
NodeID: 00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9
diff --git a/test/GNTE/conf/node_miner_10.250.100.9/config.yaml b/test/GNTE/conf/node_miner_10.250.100.9/config.yaml
index 887064529..b233b95c4 100755
--- a/test/GNTE/conf/node_miner_10.250.100.9/config.yaml
+++ b/test/GNTE/conf/node_miner_10.250.100.9/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "004e5cf49e88f6e35e344f35d73ffe6232d4ebe93a63a825e171b8f6f2a88859"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
BlockProducer:
PublicKey: "02c76216704d797c64c58bc11519fb68582e8e63de7e5b3b2dbbbe8733efe5fd24"
NodeID: 00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9
diff --git a/test/bootstrap.yaml b/test/bootstrap.yaml
index 08c2c7c50..7b4ba2b29 100644
--- a/test/bootstrap.yaml
+++ b/test/bootstrap.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "00000f3b43288fe99831eb533ab77ec455d13e11fc38ec35a42d4edd17aa320d"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: true
diff --git a/test/fuse/node_0/config.yaml b/test/fuse/node_0/config.yaml
index 9919e977e..b190fe355 100644
--- a/test/fuse/node_0/config.yaml
+++ b/test/fuse/node_0/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/fuse/node_1/config.yaml b/test/fuse/node_1/config.yaml
index caaa118d5..504bf58e2 100644
--- a/test/fuse/node_1/config.yaml
+++ b/test/fuse/node_1/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "00000381d46fd6cf7742d7fb94e2422033af989c0e348b5781b3219599a3af35"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/fuse/node_2/config.yaml b/test/fuse/node_2/config.yaml
index 18c3409d0..3cca205f2 100644
--- a/test/fuse/node_2/config.yaml
+++ b/test/fuse/node_2/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "000000172580063ded88e010556b0aca2851265be8845b1ef397e8fce6ab5582"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/fuse/node_c/config.yaml b/test/fuse/node_c/config.yaml
index d90eca3fe..b01fdbbf4 100644
--- a/test/fuse/node_c/config.yaml
+++ b/test/fuse/node_c/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "00000f3b43288fe99831eb533ab77ec455d13e11fc38ec35a42d4edd17aa320d"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/fuse/node_miner_0/config.yaml b/test/fuse/node_miner_0/config.yaml
index 448bb795f..93253c1e1 100644
--- a/test/fuse/node_miner_0/config.yaml
+++ b/test/fuse/node_miner_0/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "000005aa62048f85da4ae9698ed59c14ec0d48a88a07c15a32265634e7e64ade"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
BlockProducer:
PublicKey: "02c76216704d797c64c58bc11519fb68582e8e63de7e5b3b2dbbbe8733efe5fd24"
NodeID: 00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9
diff --git a/test/fuse/node_miner_1/config.yaml b/test/fuse/node_miner_1/config.yaml
index 558ca1cb1..54b02f8bc 100644
--- a/test/fuse/node_miner_1/config.yaml
+++ b/test/fuse/node_miner_1/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "000005f4f22c06f76c43c4f48d5a7ec1309cc94030cbf9ebae814172884ac8b5"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
BlockProducer:
PublicKey: "02c76216704d797c64c58bc11519fb68582e8e63de7e5b3b2dbbbe8733efe5fd24"
NodeID: 00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9
diff --git a/test/fuse/node_miner_2/config.yaml b/test/fuse/node_miner_2/config.yaml
index e6edd4d68..8ca540e29 100644
--- a/test/fuse/node_miner_2/config.yaml
+++ b/test/fuse/node_miner_2/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "000003f49592f83d0473bddb70d543f1096b4ffed5e5f942a3117e256b7052b8"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
BlockProducer:
PublicKey: "02c76216704d797c64c58bc11519fb68582e8e63de7e5b3b2dbbbe8733efe5fd24"
NodeID: 00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9
diff --git a/test/integration/node_0/config.yaml b/test/integration/node_0/config.yaml
index af162afb2..9548dfbf1 100644
--- a/test/integration/node_0/config.yaml
+++ b/test/integration/node_0/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/integration/node_1/config.yaml b/test/integration/node_1/config.yaml
index 0aa1f5a9b..ed74ff6c3 100644
--- a/test/integration/node_1/config.yaml
+++ b/test/integration/node_1/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "00000381d46fd6cf7742d7fb94e2422033af989c0e348b5781b3219599a3af35"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/integration/node_2/config.yaml b/test/integration/node_2/config.yaml
index 8f36e3ab9..fa4f7dc68 100644
--- a/test/integration/node_2/config.yaml
+++ b/test/integration/node_2/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "000000172580063ded88e010556b0aca2851265be8845b1ef397e8fce6ab5582"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/integration/node_c/config.yaml b/test/integration/node_c/config.yaml
index fe9fa6eb2..f710dc823 100644
--- a/test/integration/node_c/config.yaml
+++ b/test/integration/node_c/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "00000f3b43288fe99831eb533ab77ec455d13e11fc38ec35a42d4edd17aa320d"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/integration/node_miner_0/config.yaml b/test/integration/node_miner_0/config.yaml
index 8fd498a09..caf22c309 100644
--- a/test/integration/node_miner_0/config.yaml
+++ b/test/integration/node_miner_0/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "000005aa62048f85da4ae9698ed59c14ec0d48a88a07c15a32265634e7e64ade"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
BlockProducer:
PublicKey: "02c76216704d797c64c58bc11519fb68582e8e63de7e5b3b2dbbbe8733efe5fd24"
NodeID: 00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9
diff --git a/test/integration/node_miner_1/config.yaml b/test/integration/node_miner_1/config.yaml
index a2b44aaf6..b375805c4 100644
--- a/test/integration/node_miner_1/config.yaml
+++ b/test/integration/node_miner_1/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "000005f4f22c06f76c43c4f48d5a7ec1309cc94030cbf9ebae814172884ac8b5"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
BlockProducer:
PublicKey: "02c76216704d797c64c58bc11519fb68582e8e63de7e5b3b2dbbbe8733efe5fd24"
NodeID: 00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9
diff --git a/test/integration/node_miner_2/config.yaml b/test/integration/node_miner_2/config.yaml
index 900670988..8d8ed7429 100644
--- a/test/integration/node_miner_2/config.yaml
+++ b/test/integration/node_miner_2/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "000003f49592f83d0473bddb70d543f1096b4ffed5e5f942a3117e256b7052b8"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
BlockProducer:
PublicKey: "02c76216704d797c64c58bc11519fb68582e8e63de7e5b3b2dbbbe8733efe5fd24"
NodeID: 00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9
diff --git a/test/leak/client.yaml b/test/leak/client.yaml
index 89911d9ef..d31330f6e 100644
--- a/test/leak/client.yaml
+++ b/test/leak/client.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "00000f3b43288fe99831eb533ab77ec455d13e11fc38ec35a42d4edd17aa320d"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/leak/leader.yaml b/test/leak/leader.yaml
index 330ee46b5..db3098e14 100644
--- a/test/leak/leader.yaml
+++ b/test/leak/leader.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/mainchain/node_0/config.yaml b/test/mainchain/node_0/config.yaml
index 866534570..b212ca348 100644
--- a/test/mainchain/node_0/config.yaml
+++ b/test/mainchain/node_0/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/mainchain/node_1/config.yaml b/test/mainchain/node_1/config.yaml
index c53b9fba4..455bf210b 100644
--- a/test/mainchain/node_1/config.yaml
+++ b/test/mainchain/node_1/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "00000381d46fd6cf7742d7fb94e2422033af989c0e348b5781b3219599a3af35"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/mainchain/node_2/config.yaml b/test/mainchain/node_2/config.yaml
index b15a972b7..f00b915d4 100644
--- a/test/mainchain/node_2/config.yaml
+++ b/test/mainchain/node_2/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "000000172580063ded88e010556b0aca2851265be8845b1ef397e8fce6ab5582"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/mainchain/node_c/config.yaml b/test/mainchain/node_c/config.yaml
index 9c509ef03..9cf42891b 100644
--- a/test/mainchain/node_c/config.yaml
+++ b/test/mainchain/node_c/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "00000f3b43288fe99831eb533ab77ec455d13e11fc38ec35a42d4edd17aa320d"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/mainchain/node_miner_0/config.yaml b/test/mainchain/node_miner_0/config.yaml
index b5f65dc73..b7a496d61 100644
--- a/test/mainchain/node_miner_0/config.yaml
+++ b/test/mainchain/node_miner_0/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "000005aa62048f85da4ae9698ed59c14ec0d48a88a07c15a32265634e7e64ade"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
BlockProducer:
PublicKey: "02c76216704d797c64c58bc11519fb68582e8e63de7e5b3b2dbbbe8733efe5fd24"
NodeID: 00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9
diff --git a/test/mainchain/node_miner_1/config.yaml b/test/mainchain/node_miner_1/config.yaml
index 8d88cd5c9..2c49ebd8a 100644
--- a/test/mainchain/node_miner_1/config.yaml
+++ b/test/mainchain/node_miner_1/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "000005f4f22c06f76c43c4f48d5a7ec1309cc94030cbf9ebae814172884ac8b5"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
BlockProducer:
PublicKey: "02c76216704d797c64c58bc11519fb68582e8e63de7e5b3b2dbbbe8733efe5fd24"
NodeID: 00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9
diff --git a/test/mainchain/node_miner_2/config.yaml b/test/mainchain/node_miner_2/config.yaml
index 3e67adecf..779402323 100644
--- a/test/mainchain/node_miner_2/config.yaml
+++ b/test/mainchain/node_miner_2/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "000003f49592f83d0473bddb70d543f1096b4ffed5e5f942a3117e256b7052b8"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
BlockProducer:
PublicKey: "02c76216704d797c64c58bc11519fb68582e8e63de7e5b3b2dbbbe8733efe5fd24"
NodeID: 00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9
diff --git a/test/mainchain/node_multi_0/config.yaml b/test/mainchain/node_multi_0/config.yaml
index a0b088db4..e70ffd415 100644
--- a/test/mainchain/node_multi_0/config.yaml
+++ b/test/mainchain/node_multi_0/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/mainchain/node_multi_1/config.yaml b/test/mainchain/node_multi_1/config.yaml
index c92846f87..5c0fc2a6b 100644
--- a/test/mainchain/node_multi_1/config.yaml
+++ b/test/mainchain/node_multi_1/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/mainchain/node_multi_2/config.yaml b/test/mainchain/node_multi_2/config.yaml
index 8d5f46eee..2d1c650f0 100644
--- a/test/mainchain/node_multi_2/config.yaml
+++ b/test/mainchain/node_multi_2/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/mainchain/node_standalone/config.yaml b/test/mainchain/node_standalone/config.yaml
index a0b088db4..e70ffd415 100644
--- a/test/mainchain/node_standalone/config.yaml
+++ b/test/mainchain/node_standalone/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/node_0/config.yaml b/test/node_0/config.yaml
index 9c2327abb..f47c4cf22 100644
--- a/test/node_0/config.yaml
+++ b/test/node_0/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/node_1/config.yaml b/test/node_1/config.yaml
index be088389f..4f6a0a249 100644
--- a/test/node_1/config.yaml
+++ b/test/node_1/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "00000381d46fd6cf7742d7fb94e2422033af989c0e348b5781b3219599a3af35"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/node_2/config.yaml b/test/node_2/config.yaml
index 0e05b138f..96baa43ea 100644
--- a/test/node_2/config.yaml
+++ b/test/node_2/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "000000172580063ded88e010556b0aca2851265be8845b1ef397e8fce6ab5582"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/node_c/config.yaml b/test/node_c/config.yaml
index b23931038..36d58d9ce 100644
--- a/test/node_c/config.yaml
+++ b/test/node_c/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "00000f3b43288fe99831eb533ab77ec455d13e11fc38ec35a42d4edd17aa320d"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/node_standalone/config.yaml b/test/node_standalone/config.yaml
index b5709bde4..604658ac2 100644
--- a/test/node_standalone/config.yaml
+++ b/test/node_standalone/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/node_standalone/config2.yaml b/test/node_standalone/config2.yaml
index 7921f4cd1..3cd844de8 100644
--- a/test/node_standalone/config2.yaml
+++ b/test/node_standalone/config2.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/observation/node_0/config.yaml b/test/observation/node_0/config.yaml
index 5f28396f8..d47987c9c 100644
--- a/test/observation/node_0/config.yaml
+++ b/test/observation/node_0/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/observation/node_1/config.yaml b/test/observation/node_1/config.yaml
index 1d4a67dcd..4eef1664a 100644
--- a/test/observation/node_1/config.yaml
+++ b/test/observation/node_1/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "00000381d46fd6cf7742d7fb94e2422033af989c0e348b5781b3219599a3af35"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/observation/node_2/config.yaml b/test/observation/node_2/config.yaml
index af8bc1911..91c286918 100644
--- a/test/observation/node_2/config.yaml
+++ b/test/observation/node_2/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "000000172580063ded88e010556b0aca2851265be8845b1ef397e8fce6ab5582"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/observation/node_c/config.yaml b/test/observation/node_c/config.yaml
index 098da0e36..569a2bfb5 100644
--- a/test/observation/node_c/config.yaml
+++ b/test/observation/node_c/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "00000f3b43288fe99831eb533ab77ec455d13e11fc38ec35a42d4edd17aa320d"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/observation/node_miner_0/config.yaml b/test/observation/node_miner_0/config.yaml
index 43934a95e..05d7a724f 100644
--- a/test/observation/node_miner_0/config.yaml
+++ b/test/observation/node_miner_0/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "000005aa62048f85da4ae9698ed59c14ec0d48a88a07c15a32265634e7e64ade"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
BlockProducer:
PublicKey: "02c76216704d797c64c58bc11519fb68582e8e63de7e5b3b2dbbbe8733efe5fd24"
NodeID: 00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9
diff --git a/test/observation/node_miner_1/config.yaml b/test/observation/node_miner_1/config.yaml
index 400a21ad9..e49f53b51 100644
--- a/test/observation/node_miner_1/config.yaml
+++ b/test/observation/node_miner_1/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "000005f4f22c06f76c43c4f48d5a7ec1309cc94030cbf9ebae814172884ac8b5"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
BlockProducer:
PublicKey: "02c76216704d797c64c58bc11519fb68582e8e63de7e5b3b2dbbbe8733efe5fd24"
NodeID: 00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9
diff --git a/test/observation/node_miner_2/config.yaml b/test/observation/node_miner_2/config.yaml
index edeb37ebc..69e57496a 100644
--- a/test/observation/node_miner_2/config.yaml
+++ b/test/observation/node_miner_2/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "000003f49592f83d0473bddb70d543f1096b4ffed5e5f942a3117e256b7052b8"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
BlockProducer:
PublicKey: "02c76216704d797c64c58bc11519fb68582e8e63de7e5b3b2dbbbe8733efe5fd24"
NodeID: 00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9
diff --git a/test/observation/node_observer/config.yaml b/test/observation/node_observer/config.yaml
index 3a344a39f..55ef693f6 100644
--- a/test/observation/node_observer/config.yaml
+++ b/test/observation/node_observer/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "0000037c786c744967bf536e58d51f24c074f14f693b1daedef88bf9efb92349"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/pool/client.yaml b/test/pool/client.yaml
index 7bc3f1165..342f14f39 100644
--- a/test/pool/client.yaml
+++ b/test/pool/client.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "00000f3b43288fe99831eb533ab77ec455d13e11fc38ec35a42d4edd17aa320d"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/pool/leader.yaml b/test/pool/leader.yaml
index 400fb667d..a49763f6e 100644
--- a/test/pool/leader.yaml
+++ b/test/pool/leader.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/service/node_0/config.yaml b/test/service/node_0/config.yaml
index b346a58a2..6b5b43471 100644
--- a/test/service/node_0/config.yaml
+++ b/test/service/node_0/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/service/node_1/config.yaml b/test/service/node_1/config.yaml
index 0c0d2bf5f..38894accc 100644
--- a/test/service/node_1/config.yaml
+++ b/test/service/node_1/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "00000381d46fd6cf7742d7fb94e2422033af989c0e348b5781b3219599a3af35"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/service/node_2/config.yaml b/test/service/node_2/config.yaml
index 47d526619..c86182e5c 100644
--- a/test/service/node_2/config.yaml
+++ b/test/service/node_2/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "000000172580063ded88e010556b0aca2851265be8845b1ef397e8fce6ab5582"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/service/node_adapter/config.yaml b/test/service/node_adapter/config.yaml
index aeefebf7f..3070a5784 100644
--- a/test/service/node_adapter/config.yaml
+++ b/test/service/node_adapter/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "00000f3b43288fe99831eb533ab77ec455d13e11fc38ec35a42d4edd17aa320d"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/service/node_c/config.yaml b/test/service/node_c/config.yaml
index aeefebf7f..3070a5784 100644
--- a/test/service/node_c/config.yaml
+++ b/test/service/node_c/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "00000f3b43288fe99831eb533ab77ec455d13e11fc38ec35a42d4edd17aa320d"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/service/node_miner_0/config.yaml b/test/service/node_miner_0/config.yaml
index 4c981fcb7..ca3f3dd69 100644
--- a/test/service/node_miner_0/config.yaml
+++ b/test/service/node_miner_0/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "000005aa62048f85da4ae9698ed59c14ec0d48a88a07c15a32265634e7e64ade"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
BlockProducer:
PublicKey: "02c76216704d797c64c58bc11519fb68582e8e63de7e5b3b2dbbbe8733efe5fd24"
NodeID: 00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9
diff --git a/test/service/node_miner_1/config.yaml b/test/service/node_miner_1/config.yaml
index e41bbbb9f..f8aba6764 100644
--- a/test/service/node_miner_1/config.yaml
+++ b/test/service/node_miner_1/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "000005f4f22c06f76c43c4f48d5a7ec1309cc94030cbf9ebae814172884ac8b5"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
BlockProducer:
PublicKey: "02c76216704d797c64c58bc11519fb68582e8e63de7e5b3b2dbbbe8733efe5fd24"
NodeID: 00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9
diff --git a/test/service/node_miner_2/config.yaml b/test/service/node_miner_2/config.yaml
index 00d4caed0..b3f87924e 100644
--- a/test/service/node_miner_2/config.yaml
+++ b/test/service/node_miner_2/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "000003f49592f83d0473bddb70d543f1096b4ffed5e5f942a3117e256b7052b8"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
BlockProducer:
PublicKey: "02c76216704d797c64c58bc11519fb68582e8e63de7e5b3b2dbbbe8733efe5fd24"
NodeID: 00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9
diff --git a/test/service/node_mysql_adapter/config.yaml b/test/service/node_mysql_adapter/config.yaml
index 3045d1535..37d23a707 100644
--- a/test/service/node_mysql_adapter/config.yaml
+++ b/test/service/node_mysql_adapter/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "00000f3b43288fe99831eb533ab77ec455d13e11fc38ec35a42d4edd17aa320d"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/service/node_observer/config.yaml b/test/service/node_observer/config.yaml
index 9f6dff35a..0e731f457 100644
--- a/test/service/node_observer/config.yaml
+++ b/test/service/node_observer/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "0000037c786c744967bf536e58d51f24c074f14f693b1daedef88bf9efb92349"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
From 6620ca4475cabdef0408cc1fd5a3931c1a7c9a6a Mon Sep 17 00:00:00 2001
From: auxten
Date: Wed, 5 Dec 2018 16:31:57 +0800
Subject: [PATCH 03/36] Add new cloudflare.com DNSKEY
---
test/GNTE/conf/node_0/config.yaml | 1 +
test/GNTE/conf/node_1/config.yaml | 1 +
test/GNTE/conf/node_2/config.yaml | 1 +
test/GNTE/conf/node_c/config.yaml | 1 +
test/GNTE/conf/node_miner_10.250.100.2/config.yaml | 1 +
test/GNTE/conf/node_miner_10.250.100.3/config.yaml | 1 +
test/GNTE/conf/node_miner_10.250.100.4/config.yaml | 1 +
test/GNTE/conf/node_miner_10.250.100.5/config.yaml | 1 +
test/GNTE/conf/node_miner_10.250.100.6/config.yaml | 1 +
test/GNTE/conf/node_miner_10.250.100.7/config.yaml | 1 +
test/GNTE/conf/node_miner_10.250.100.8/config.yaml | 1 +
test/GNTE/conf/node_miner_10.250.100.9/config.yaml | 1 +
test/bootstrap.yaml | 1 +
test/fuse/node_0/config.yaml | 1 +
test/fuse/node_1/config.yaml | 1 +
test/fuse/node_2/config.yaml | 1 +
test/fuse/node_c/config.yaml | 1 +
test/fuse/node_miner_0/config.yaml | 1 +
test/fuse/node_miner_1/config.yaml | 1 +
test/fuse/node_miner_2/config.yaml | 1 +
test/integration/node_0/config.yaml | 1 +
test/integration/node_1/config.yaml | 1 +
test/integration/node_2/config.yaml | 1 +
test/integration/node_c/config.yaml | 1 +
test/integration/node_miner_0/config.yaml | 1 +
test/integration/node_miner_1/config.yaml | 1 +
test/integration/node_miner_2/config.yaml | 1 +
test/leak/client.yaml | 1 +
test/leak/leader.yaml | 1 +
test/mainchain/node_0/config.yaml | 1 +
test/mainchain/node_1/config.yaml | 1 +
test/mainchain/node_2/config.yaml | 1 +
test/mainchain/node_c/config.yaml | 1 +
test/mainchain/node_miner_0/config.yaml | 1 +
test/mainchain/node_miner_1/config.yaml | 1 +
test/mainchain/node_miner_2/config.yaml | 1 +
test/mainchain/node_multi_0/config.yaml | 1 +
test/mainchain/node_multi_1/config.yaml | 1 +
test/mainchain/node_multi_2/config.yaml | 1 +
test/mainchain/node_standalone/config.yaml | 1 +
test/node_0/config.yaml | 1 +
test/node_1/config.yaml | 1 +
test/node_2/config.yaml | 1 +
test/node_c/config.yaml | 1 +
test/node_standalone/config.yaml | 1 +
test/node_standalone/config2.yaml | 1 +
test/observation/node_0/config.yaml | 1 +
test/observation/node_1/config.yaml | 1 +
test/observation/node_2/config.yaml | 1 +
test/observation/node_c/config.yaml | 1 +
test/observation/node_miner_0/config.yaml | 1 +
test/observation/node_miner_1/config.yaml | 1 +
test/observation/node_miner_2/config.yaml | 1 +
test/observation/node_observer/config.yaml | 1 +
test/pool/client.yaml | 1 +
test/pool/leader.yaml | 1 +
test/service/node_0/config.yaml | 1 +
test/service/node_1/config.yaml | 1 +
test/service/node_2/config.yaml | 1 +
test/service/node_adapter/config.yaml | 1 +
test/service/node_c/config.yaml | 1 +
test/service/node_miner_0/config.yaml | 1 +
test/service/node_miner_1/config.yaml | 1 +
test/service/node_miner_2/config.yaml | 1 +
test/service/node_mysql_adapter/config.yaml | 1 +
test/service/node_observer/config.yaml | 1 +
66 files changed, 66 insertions(+)
diff --git a/test/GNTE/conf/node_0/config.yaml b/test/GNTE/conf/node_0/config.yaml
index d0f183e52..5999a7e55 100644
--- a/test/GNTE/conf/node_0/config.yaml
+++ b/test/GNTE/conf/node_0/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/GNTE/conf/node_1/config.yaml b/test/GNTE/conf/node_1/config.yaml
index 70f6ca0f8..15df963f9 100644
--- a/test/GNTE/conf/node_1/config.yaml
+++ b/test/GNTE/conf/node_1/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "00000381d46fd6cf7742d7fb94e2422033af989c0e348b5781b3219599a3af35"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/GNTE/conf/node_2/config.yaml b/test/GNTE/conf/node_2/config.yaml
index c1321a15c..5cbac829d 100644
--- a/test/GNTE/conf/node_2/config.yaml
+++ b/test/GNTE/conf/node_2/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "000000172580063ded88e010556b0aca2851265be8845b1ef397e8fce6ab5582"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/GNTE/conf/node_c/config.yaml b/test/GNTE/conf/node_c/config.yaml
index 75aa1975c..242705fbb 100644
--- a/test/GNTE/conf/node_c/config.yaml
+++ b/test/GNTE/conf/node_c/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "00000f3b43288fe99831eb533ab77ec455d13e11fc38ec35a42d4edd17aa320d"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/GNTE/conf/node_miner_10.250.100.2/config.yaml b/test/GNTE/conf/node_miner_10.250.100.2/config.yaml
index 2a301d150..11f86f067 100644
--- a/test/GNTE/conf/node_miner_10.250.100.2/config.yaml
+++ b/test/GNTE/conf/node_miner_10.250.100.2/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "000005aa62048f85da4ae9698ed59c14ec0d48a88a07c15a32265634e7e64ade"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
BlockProducer:
PublicKey: "02c76216704d797c64c58bc11519fb68582e8e63de7e5b3b2dbbbe8733efe5fd24"
NodeID: 00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9
diff --git a/test/GNTE/conf/node_miner_10.250.100.3/config.yaml b/test/GNTE/conf/node_miner_10.250.100.3/config.yaml
index 1106c28bb..af4ebc1fd 100644
--- a/test/GNTE/conf/node_miner_10.250.100.3/config.yaml
+++ b/test/GNTE/conf/node_miner_10.250.100.3/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "000005f4f22c06f76c43c4f48d5a7ec1309cc94030cbf9ebae814172884ac8b5"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
BlockProducer:
PublicKey: "02c76216704d797c64c58bc11519fb68582e8e63de7e5b3b2dbbbe8733efe5fd24"
NodeID: 00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9
diff --git a/test/GNTE/conf/node_miner_10.250.100.4/config.yaml b/test/GNTE/conf/node_miner_10.250.100.4/config.yaml
index b19dace89..451175275 100644
--- a/test/GNTE/conf/node_miner_10.250.100.4/config.yaml
+++ b/test/GNTE/conf/node_miner_10.250.100.4/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "000003f49592f83d0473bddb70d543f1096b4ffed5e5f942a3117e256b7052b8"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
BlockProducer:
PublicKey: "02c76216704d797c64c58bc11519fb68582e8e63de7e5b3b2dbbbe8733efe5fd24"
NodeID: 00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9
diff --git a/test/GNTE/conf/node_miner_10.250.100.5/config.yaml b/test/GNTE/conf/node_miner_10.250.100.5/config.yaml
index a09d83606..c89c325cf 100755
--- a/test/GNTE/conf/node_miner_10.250.100.5/config.yaml
+++ b/test/GNTE/conf/node_miner_10.250.100.5/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "00eda359cd2aa0920cdd37b083b896cb18cd26b3bd51744d1b4f127830f820f2"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
BlockProducer:
PublicKey: "02c76216704d797c64c58bc11519fb68582e8e63de7e5b3b2dbbbe8733efe5fd24"
NodeID: 00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9
diff --git a/test/GNTE/conf/node_miner_10.250.100.6/config.yaml b/test/GNTE/conf/node_miner_10.250.100.6/config.yaml
index b96505d19..7e20eae29 100755
--- a/test/GNTE/conf/node_miner_10.250.100.6/config.yaml
+++ b/test/GNTE/conf/node_miner_10.250.100.6/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "0017017845ff9f9f7e8599d308652eb8ce480e689fbd49afb6b44cc9726cf84b"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
BlockProducer:
PublicKey: "02c76216704d797c64c58bc11519fb68582e8e63de7e5b3b2dbbbe8733efe5fd24"
NodeID: 00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9
diff --git a/test/GNTE/conf/node_miner_10.250.100.7/config.yaml b/test/GNTE/conf/node_miner_10.250.100.7/config.yaml
index 5370e24f6..e88979235 100755
--- a/test/GNTE/conf/node_miner_10.250.100.7/config.yaml
+++ b/test/GNTE/conf/node_miner_10.250.100.7/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "0075b97519d0a5cf9f7269a61b82bb3e082a5e7d796604e877ee28d08491979a"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
BlockProducer:
PublicKey: "02c76216704d797c64c58bc11519fb68582e8e63de7e5b3b2dbbbe8733efe5fd24"
NodeID: 00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9
diff --git a/test/GNTE/conf/node_miner_10.250.100.8/config.yaml b/test/GNTE/conf/node_miner_10.250.100.8/config.yaml
index bc633a6fc..94c0a66dd 100755
--- a/test/GNTE/conf/node_miner_10.250.100.8/config.yaml
+++ b/test/GNTE/conf/node_miner_10.250.100.8/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "0060bb3394f5185f760af690b0c124a70acbaf952fd79d794a0d394c37d7c0bc"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
BlockProducer:
PublicKey: "02c76216704d797c64c58bc11519fb68582e8e63de7e5b3b2dbbbe8733efe5fd24"
NodeID: 00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9
diff --git a/test/GNTE/conf/node_miner_10.250.100.9/config.yaml b/test/GNTE/conf/node_miner_10.250.100.9/config.yaml
index 887064529..b233b95c4 100755
--- a/test/GNTE/conf/node_miner_10.250.100.9/config.yaml
+++ b/test/GNTE/conf/node_miner_10.250.100.9/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "004e5cf49e88f6e35e344f35d73ffe6232d4ebe93a63a825e171b8f6f2a88859"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
BlockProducer:
PublicKey: "02c76216704d797c64c58bc11519fb68582e8e63de7e5b3b2dbbbe8733efe5fd24"
NodeID: 00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9
diff --git a/test/bootstrap.yaml b/test/bootstrap.yaml
index 08c2c7c50..7b4ba2b29 100644
--- a/test/bootstrap.yaml
+++ b/test/bootstrap.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "00000f3b43288fe99831eb533ab77ec455d13e11fc38ec35a42d4edd17aa320d"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: true
diff --git a/test/fuse/node_0/config.yaml b/test/fuse/node_0/config.yaml
index 9919e977e..b190fe355 100644
--- a/test/fuse/node_0/config.yaml
+++ b/test/fuse/node_0/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/fuse/node_1/config.yaml b/test/fuse/node_1/config.yaml
index caaa118d5..504bf58e2 100644
--- a/test/fuse/node_1/config.yaml
+++ b/test/fuse/node_1/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "00000381d46fd6cf7742d7fb94e2422033af989c0e348b5781b3219599a3af35"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/fuse/node_2/config.yaml b/test/fuse/node_2/config.yaml
index 18c3409d0..3cca205f2 100644
--- a/test/fuse/node_2/config.yaml
+++ b/test/fuse/node_2/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "000000172580063ded88e010556b0aca2851265be8845b1ef397e8fce6ab5582"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/fuse/node_c/config.yaml b/test/fuse/node_c/config.yaml
index d90eca3fe..b01fdbbf4 100644
--- a/test/fuse/node_c/config.yaml
+++ b/test/fuse/node_c/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "00000f3b43288fe99831eb533ab77ec455d13e11fc38ec35a42d4edd17aa320d"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/fuse/node_miner_0/config.yaml b/test/fuse/node_miner_0/config.yaml
index 448bb795f..93253c1e1 100644
--- a/test/fuse/node_miner_0/config.yaml
+++ b/test/fuse/node_miner_0/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "000005aa62048f85da4ae9698ed59c14ec0d48a88a07c15a32265634e7e64ade"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
BlockProducer:
PublicKey: "02c76216704d797c64c58bc11519fb68582e8e63de7e5b3b2dbbbe8733efe5fd24"
NodeID: 00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9
diff --git a/test/fuse/node_miner_1/config.yaml b/test/fuse/node_miner_1/config.yaml
index 558ca1cb1..54b02f8bc 100644
--- a/test/fuse/node_miner_1/config.yaml
+++ b/test/fuse/node_miner_1/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "000005f4f22c06f76c43c4f48d5a7ec1309cc94030cbf9ebae814172884ac8b5"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
BlockProducer:
PublicKey: "02c76216704d797c64c58bc11519fb68582e8e63de7e5b3b2dbbbe8733efe5fd24"
NodeID: 00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9
diff --git a/test/fuse/node_miner_2/config.yaml b/test/fuse/node_miner_2/config.yaml
index e6edd4d68..8ca540e29 100644
--- a/test/fuse/node_miner_2/config.yaml
+++ b/test/fuse/node_miner_2/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "000003f49592f83d0473bddb70d543f1096b4ffed5e5f942a3117e256b7052b8"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
BlockProducer:
PublicKey: "02c76216704d797c64c58bc11519fb68582e8e63de7e5b3b2dbbbe8733efe5fd24"
NodeID: 00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9
diff --git a/test/integration/node_0/config.yaml b/test/integration/node_0/config.yaml
index af162afb2..9548dfbf1 100644
--- a/test/integration/node_0/config.yaml
+++ b/test/integration/node_0/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/integration/node_1/config.yaml b/test/integration/node_1/config.yaml
index 0aa1f5a9b..ed74ff6c3 100644
--- a/test/integration/node_1/config.yaml
+++ b/test/integration/node_1/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "00000381d46fd6cf7742d7fb94e2422033af989c0e348b5781b3219599a3af35"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/integration/node_2/config.yaml b/test/integration/node_2/config.yaml
index 8f36e3ab9..fa4f7dc68 100644
--- a/test/integration/node_2/config.yaml
+++ b/test/integration/node_2/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "000000172580063ded88e010556b0aca2851265be8845b1ef397e8fce6ab5582"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/integration/node_c/config.yaml b/test/integration/node_c/config.yaml
index fe9fa6eb2..f710dc823 100644
--- a/test/integration/node_c/config.yaml
+++ b/test/integration/node_c/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "00000f3b43288fe99831eb533ab77ec455d13e11fc38ec35a42d4edd17aa320d"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/integration/node_miner_0/config.yaml b/test/integration/node_miner_0/config.yaml
index 8fd498a09..caf22c309 100644
--- a/test/integration/node_miner_0/config.yaml
+++ b/test/integration/node_miner_0/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "000005aa62048f85da4ae9698ed59c14ec0d48a88a07c15a32265634e7e64ade"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
BlockProducer:
PublicKey: "02c76216704d797c64c58bc11519fb68582e8e63de7e5b3b2dbbbe8733efe5fd24"
NodeID: 00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9
diff --git a/test/integration/node_miner_1/config.yaml b/test/integration/node_miner_1/config.yaml
index a2b44aaf6..b375805c4 100644
--- a/test/integration/node_miner_1/config.yaml
+++ b/test/integration/node_miner_1/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "000005f4f22c06f76c43c4f48d5a7ec1309cc94030cbf9ebae814172884ac8b5"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
BlockProducer:
PublicKey: "02c76216704d797c64c58bc11519fb68582e8e63de7e5b3b2dbbbe8733efe5fd24"
NodeID: 00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9
diff --git a/test/integration/node_miner_2/config.yaml b/test/integration/node_miner_2/config.yaml
index 900670988..8d8ed7429 100644
--- a/test/integration/node_miner_2/config.yaml
+++ b/test/integration/node_miner_2/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "000003f49592f83d0473bddb70d543f1096b4ffed5e5f942a3117e256b7052b8"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
BlockProducer:
PublicKey: "02c76216704d797c64c58bc11519fb68582e8e63de7e5b3b2dbbbe8733efe5fd24"
NodeID: 00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9
diff --git a/test/leak/client.yaml b/test/leak/client.yaml
index 89911d9ef..d31330f6e 100644
--- a/test/leak/client.yaml
+++ b/test/leak/client.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "00000f3b43288fe99831eb533ab77ec455d13e11fc38ec35a42d4edd17aa320d"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/leak/leader.yaml b/test/leak/leader.yaml
index 330ee46b5..db3098e14 100644
--- a/test/leak/leader.yaml
+++ b/test/leak/leader.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/mainchain/node_0/config.yaml b/test/mainchain/node_0/config.yaml
index 866534570..b212ca348 100644
--- a/test/mainchain/node_0/config.yaml
+++ b/test/mainchain/node_0/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/mainchain/node_1/config.yaml b/test/mainchain/node_1/config.yaml
index c53b9fba4..455bf210b 100644
--- a/test/mainchain/node_1/config.yaml
+++ b/test/mainchain/node_1/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "00000381d46fd6cf7742d7fb94e2422033af989c0e348b5781b3219599a3af35"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/mainchain/node_2/config.yaml b/test/mainchain/node_2/config.yaml
index b15a972b7..f00b915d4 100644
--- a/test/mainchain/node_2/config.yaml
+++ b/test/mainchain/node_2/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "000000172580063ded88e010556b0aca2851265be8845b1ef397e8fce6ab5582"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/mainchain/node_c/config.yaml b/test/mainchain/node_c/config.yaml
index 9c509ef03..9cf42891b 100644
--- a/test/mainchain/node_c/config.yaml
+++ b/test/mainchain/node_c/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "00000f3b43288fe99831eb533ab77ec455d13e11fc38ec35a42d4edd17aa320d"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/mainchain/node_miner_0/config.yaml b/test/mainchain/node_miner_0/config.yaml
index b5f65dc73..b7a496d61 100644
--- a/test/mainchain/node_miner_0/config.yaml
+++ b/test/mainchain/node_miner_0/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "000005aa62048f85da4ae9698ed59c14ec0d48a88a07c15a32265634e7e64ade"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
BlockProducer:
PublicKey: "02c76216704d797c64c58bc11519fb68582e8e63de7e5b3b2dbbbe8733efe5fd24"
NodeID: 00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9
diff --git a/test/mainchain/node_miner_1/config.yaml b/test/mainchain/node_miner_1/config.yaml
index 8d88cd5c9..2c49ebd8a 100644
--- a/test/mainchain/node_miner_1/config.yaml
+++ b/test/mainchain/node_miner_1/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "000005f4f22c06f76c43c4f48d5a7ec1309cc94030cbf9ebae814172884ac8b5"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
BlockProducer:
PublicKey: "02c76216704d797c64c58bc11519fb68582e8e63de7e5b3b2dbbbe8733efe5fd24"
NodeID: 00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9
diff --git a/test/mainchain/node_miner_2/config.yaml b/test/mainchain/node_miner_2/config.yaml
index 3e67adecf..779402323 100644
--- a/test/mainchain/node_miner_2/config.yaml
+++ b/test/mainchain/node_miner_2/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "000003f49592f83d0473bddb70d543f1096b4ffed5e5f942a3117e256b7052b8"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
BlockProducer:
PublicKey: "02c76216704d797c64c58bc11519fb68582e8e63de7e5b3b2dbbbe8733efe5fd24"
NodeID: 00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9
diff --git a/test/mainchain/node_multi_0/config.yaml b/test/mainchain/node_multi_0/config.yaml
index a0b088db4..e70ffd415 100644
--- a/test/mainchain/node_multi_0/config.yaml
+++ b/test/mainchain/node_multi_0/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/mainchain/node_multi_1/config.yaml b/test/mainchain/node_multi_1/config.yaml
index c92846f87..5c0fc2a6b 100644
--- a/test/mainchain/node_multi_1/config.yaml
+++ b/test/mainchain/node_multi_1/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/mainchain/node_multi_2/config.yaml b/test/mainchain/node_multi_2/config.yaml
index 8d5f46eee..2d1c650f0 100644
--- a/test/mainchain/node_multi_2/config.yaml
+++ b/test/mainchain/node_multi_2/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/mainchain/node_standalone/config.yaml b/test/mainchain/node_standalone/config.yaml
index a0b088db4..e70ffd415 100644
--- a/test/mainchain/node_standalone/config.yaml
+++ b/test/mainchain/node_standalone/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/node_0/config.yaml b/test/node_0/config.yaml
index 9c2327abb..f47c4cf22 100644
--- a/test/node_0/config.yaml
+++ b/test/node_0/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/node_1/config.yaml b/test/node_1/config.yaml
index be088389f..4f6a0a249 100644
--- a/test/node_1/config.yaml
+++ b/test/node_1/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "00000381d46fd6cf7742d7fb94e2422033af989c0e348b5781b3219599a3af35"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/node_2/config.yaml b/test/node_2/config.yaml
index 0e05b138f..96baa43ea 100644
--- a/test/node_2/config.yaml
+++ b/test/node_2/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "000000172580063ded88e010556b0aca2851265be8845b1ef397e8fce6ab5582"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/node_c/config.yaml b/test/node_c/config.yaml
index b23931038..36d58d9ce 100644
--- a/test/node_c/config.yaml
+++ b/test/node_c/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "00000f3b43288fe99831eb533ab77ec455d13e11fc38ec35a42d4edd17aa320d"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/node_standalone/config.yaml b/test/node_standalone/config.yaml
index b5709bde4..604658ac2 100644
--- a/test/node_standalone/config.yaml
+++ b/test/node_standalone/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/node_standalone/config2.yaml b/test/node_standalone/config2.yaml
index 7921f4cd1..3cd844de8 100644
--- a/test/node_standalone/config2.yaml
+++ b/test/node_standalone/config2.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/observation/node_0/config.yaml b/test/observation/node_0/config.yaml
index 5f28396f8..d47987c9c 100644
--- a/test/observation/node_0/config.yaml
+++ b/test/observation/node_0/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/observation/node_1/config.yaml b/test/observation/node_1/config.yaml
index 1d4a67dcd..4eef1664a 100644
--- a/test/observation/node_1/config.yaml
+++ b/test/observation/node_1/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "00000381d46fd6cf7742d7fb94e2422033af989c0e348b5781b3219599a3af35"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/observation/node_2/config.yaml b/test/observation/node_2/config.yaml
index af8bc1911..91c286918 100644
--- a/test/observation/node_2/config.yaml
+++ b/test/observation/node_2/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "000000172580063ded88e010556b0aca2851265be8845b1ef397e8fce6ab5582"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/observation/node_c/config.yaml b/test/observation/node_c/config.yaml
index 098da0e36..569a2bfb5 100644
--- a/test/observation/node_c/config.yaml
+++ b/test/observation/node_c/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "00000f3b43288fe99831eb533ab77ec455d13e11fc38ec35a42d4edd17aa320d"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/observation/node_miner_0/config.yaml b/test/observation/node_miner_0/config.yaml
index 43934a95e..05d7a724f 100644
--- a/test/observation/node_miner_0/config.yaml
+++ b/test/observation/node_miner_0/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "000005aa62048f85da4ae9698ed59c14ec0d48a88a07c15a32265634e7e64ade"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
BlockProducer:
PublicKey: "02c76216704d797c64c58bc11519fb68582e8e63de7e5b3b2dbbbe8733efe5fd24"
NodeID: 00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9
diff --git a/test/observation/node_miner_1/config.yaml b/test/observation/node_miner_1/config.yaml
index 400a21ad9..e49f53b51 100644
--- a/test/observation/node_miner_1/config.yaml
+++ b/test/observation/node_miner_1/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "000005f4f22c06f76c43c4f48d5a7ec1309cc94030cbf9ebae814172884ac8b5"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
BlockProducer:
PublicKey: "02c76216704d797c64c58bc11519fb68582e8e63de7e5b3b2dbbbe8733efe5fd24"
NodeID: 00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9
diff --git a/test/observation/node_miner_2/config.yaml b/test/observation/node_miner_2/config.yaml
index edeb37ebc..69e57496a 100644
--- a/test/observation/node_miner_2/config.yaml
+++ b/test/observation/node_miner_2/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "000003f49592f83d0473bddb70d543f1096b4ffed5e5f942a3117e256b7052b8"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
BlockProducer:
PublicKey: "02c76216704d797c64c58bc11519fb68582e8e63de7e5b3b2dbbbe8733efe5fd24"
NodeID: 00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9
diff --git a/test/observation/node_observer/config.yaml b/test/observation/node_observer/config.yaml
index 3a344a39f..55ef693f6 100644
--- a/test/observation/node_observer/config.yaml
+++ b/test/observation/node_observer/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "0000037c786c744967bf536e58d51f24c074f14f693b1daedef88bf9efb92349"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/pool/client.yaml b/test/pool/client.yaml
index 7bc3f1165..342f14f39 100644
--- a/test/pool/client.yaml
+++ b/test/pool/client.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "00000f3b43288fe99831eb533ab77ec455d13e11fc38ec35a42d4edd17aa320d"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/pool/leader.yaml b/test/pool/leader.yaml
index 400fb667d..a49763f6e 100644
--- a/test/pool/leader.yaml
+++ b/test/pool/leader.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/service/node_0/config.yaml b/test/service/node_0/config.yaml
index b346a58a2..6b5b43471 100644
--- a/test/service/node_0/config.yaml
+++ b/test/service/node_0/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/service/node_1/config.yaml b/test/service/node_1/config.yaml
index 0c0d2bf5f..38894accc 100644
--- a/test/service/node_1/config.yaml
+++ b/test/service/node_1/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "00000381d46fd6cf7742d7fb94e2422033af989c0e348b5781b3219599a3af35"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/service/node_2/config.yaml b/test/service/node_2/config.yaml
index 47d526619..c86182e5c 100644
--- a/test/service/node_2/config.yaml
+++ b/test/service/node_2/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "000000172580063ded88e010556b0aca2851265be8845b1ef397e8fce6ab5582"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/service/node_adapter/config.yaml b/test/service/node_adapter/config.yaml
index aeefebf7f..3070a5784 100644
--- a/test/service/node_adapter/config.yaml
+++ b/test/service/node_adapter/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "00000f3b43288fe99831eb533ab77ec455d13e11fc38ec35a42d4edd17aa320d"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/service/node_c/config.yaml b/test/service/node_c/config.yaml
index aeefebf7f..3070a5784 100644
--- a/test/service/node_c/config.yaml
+++ b/test/service/node_c/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "00000f3b43288fe99831eb533ab77ec455d13e11fc38ec35a42d4edd17aa320d"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/service/node_miner_0/config.yaml b/test/service/node_miner_0/config.yaml
index 4c981fcb7..ca3f3dd69 100644
--- a/test/service/node_miner_0/config.yaml
+++ b/test/service/node_miner_0/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "000005aa62048f85da4ae9698ed59c14ec0d48a88a07c15a32265634e7e64ade"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
BlockProducer:
PublicKey: "02c76216704d797c64c58bc11519fb68582e8e63de7e5b3b2dbbbe8733efe5fd24"
NodeID: 00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9
diff --git a/test/service/node_miner_1/config.yaml b/test/service/node_miner_1/config.yaml
index e41bbbb9f..f8aba6764 100644
--- a/test/service/node_miner_1/config.yaml
+++ b/test/service/node_miner_1/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "000005f4f22c06f76c43c4f48d5a7ec1309cc94030cbf9ebae814172884ac8b5"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
BlockProducer:
PublicKey: "02c76216704d797c64c58bc11519fb68582e8e63de7e5b3b2dbbbe8733efe5fd24"
NodeID: 00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9
diff --git a/test/service/node_miner_2/config.yaml b/test/service/node_miner_2/config.yaml
index 00d4caed0..b3f87924e 100644
--- a/test/service/node_miner_2/config.yaml
+++ b/test/service/node_miner_2/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "000003f49592f83d0473bddb70d543f1096b4ffed5e5f942a3117e256b7052b8"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
BlockProducer:
PublicKey: "02c76216704d797c64c58bc11519fb68582e8e63de7e5b3b2dbbbe8733efe5fd24"
NodeID: 00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9
diff --git a/test/service/node_mysql_adapter/config.yaml b/test/service/node_mysql_adapter/config.yaml
index 3045d1535..37d23a707 100644
--- a/test/service/node_mysql_adapter/config.yaml
+++ b/test/service/node_mysql_adapter/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "00000f3b43288fe99831eb533ab77ec455d13e11fc38ec35a42d4edd17aa320d"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
diff --git a/test/service/node_observer/config.yaml b/test/service/node_observer/config.yaml
index 9f6dff35a..0e731f457 100644
--- a/test/service/node_observer/config.yaml
+++ b/test/service/node_observer/config.yaml
@@ -8,6 +8,7 @@ ThisNodeID: "0000037c786c744967bf536e58d51f24c074f14f693b1daedef88bf9efb92349"
ValidDNSKeys:
koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==: cloudflare.com
mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==: cloudflare.com
+ oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA==: cloudflare.com
MinNodeIDDifficulty: 2
DNSSeed:
EnforcedDNSSEC: false
From 0c337ad0f26870961b94229034ec347b5abd2558 Mon Sep 17 00:00:00 2001
From: auxten
Date: Wed, 5 Dec 2018 16:32:55 +0800
Subject: [PATCH 04/36] If smux session dead, cancel the context passed to RPC
through Envelope
---
Gopkg.lock | 6 +++---
Gopkg.toml | 4 ++++
proto/proto.go | 22 ++++++++++++++++++----
rpc/codec.go | 7 ++++++-
rpc/rpcutil.go | 2 +-
rpc/server.go | 8 +++++++-
vendor/github.com/xtaci/smux/stream.go | 6 ++++++
worker/db.go | 4 ++--
8 files changed, 47 insertions(+), 12 deletions(-)
diff --git a/Gopkg.lock b/Gopkg.lock
index dca93369b..f938ce406 100644
--- a/Gopkg.lock
+++ b/Gopkg.lock
@@ -559,12 +559,12 @@
source = "github.com/CovenantSQL/usql"
[[projects]]
- digest = "1:07aaea55c778d9f0461a429eb19a134f17e9ac3232a5a28b16dfe57c637889bc"
+ branch = "master"
+ digest = "1:fd9ee7072a8121eb2a1592611023924f00492432ef923e561110e4c5e380f285"
name = "github.com/xtaci/smux"
packages = ["."]
pruneopts = "UT"
- revision = "545ecee9d2a96ef4cf3c420c6b4095ac313fe870"
- version = "v1.09"
+ revision = "6cf098d439391c8f8f6a485f8928f47575b6002e"
[[projects]]
digest = "1:4619abe2e9ceabced45ff40a4826866c48f264bb58384efe799a8fb83c2256e0"
diff --git a/Gopkg.toml b/Gopkg.toml
index 89678703c..0b2e9a1b8 100644
--- a/Gopkg.toml
+++ b/Gopkg.toml
@@ -61,6 +61,10 @@
name = "github.com/CovenantSQL/xurls"
branch = "master"
+[[override]]
+ name = "github.com/xtaci/smux"
+ branch = "master"
+
[[override]]
name = "github.com/siddontang/go-mysql"
source = "github.com/CovenantSQL/go-mysql"
diff --git a/proto/proto.go b/proto/proto.go
index 2f5a812f8..936536449 100644
--- a/proto/proto.go
+++ b/proto/proto.go
@@ -18,6 +18,7 @@
package proto
import (
+ "context"
"time"
)
@@ -30,19 +31,22 @@ type EnvelopeAPI interface {
GetTTL() time.Duration
GetExpire() time.Duration
GetNodeID() *RawNodeID
+ GetContext() context.Context
SetVersion(string)
SetTTL(time.Duration)
SetExpire(time.Duration)
SetNodeID(*RawNodeID)
+ SetContext(context.Context)
}
// Envelope is the protocol header
type Envelope struct {
- Version string `json:"v"`
- TTL time.Duration `json:"t"`
- Expire time.Duration `json:"e"`
- NodeID *RawNodeID `json:"id"`
+ Version string `json:"v"`
+ TTL time.Duration `json:"t"`
+ Expire time.Duration `json:"e"`
+ NodeID *RawNodeID `json:"id"`
+ _ctx context.Context `json:"-"`
}
// PingReq is Ping RPC request
@@ -120,6 +124,11 @@ func (e *Envelope) GetNodeID() *RawNodeID {
return e.NodeID
}
+// GetContext returns context from envelop which is set in server Accept
+func (e *Envelope) GetContext() context.Context {
+ return e._ctx
+}
+
// SetVersion implements EnvelopeAPI.SetVersion
func (e *Envelope) SetVersion(ver string) {
e.Version = ver
@@ -140,5 +149,10 @@ func (e *Envelope) SetNodeID(nodeID *RawNodeID) {
e.NodeID = nodeID
}
+// SetContext set a ctx in envelope
+func (e *Envelope) SetContext(ctx context.Context) {
+ e._ctx = ctx
+}
+
// DatabaseID is database name, will be generated from UUID
type DatabaseID string
diff --git a/rpc/codec.go b/rpc/codec.go
index 63b8f53cc..3d5a58f06 100644
--- a/rpc/codec.go
+++ b/rpc/codec.go
@@ -17,6 +17,7 @@
package rpc
import (
+ "context"
"net/rpc"
"github.com/CovenantSQL/CovenantSQL/proto"
@@ -26,13 +27,15 @@ import (
type NodeAwareServerCodec struct {
rpc.ServerCodec
NodeID *proto.RawNodeID
+ Ctx context.Context
}
// NewNodeAwareServerCodec returns new NodeAwareServerCodec with normal rpc.ServerCode and proto.RawNodeID
-func NewNodeAwareServerCodec(codec rpc.ServerCodec, nodeID *proto.RawNodeID) *NodeAwareServerCodec {
+func NewNodeAwareServerCodec(codec rpc.ServerCodec, nodeID *proto.RawNodeID, ctx context.Context) *NodeAwareServerCodec {
return &NodeAwareServerCodec{
ServerCodec: codec,
NodeID: nodeID,
+ Ctx: ctx,
}
}
@@ -51,6 +54,8 @@ func (nc *NodeAwareServerCodec) ReadRequestBody(body interface{}) (err error) {
if r, ok := body.(proto.EnvelopeAPI); ok {
// inject node id to rpc envelope
r.SetNodeID(nc.NodeID)
+ // inject context
+ r.SetContext(nc.Ctx)
}
return
diff --git a/rpc/rpcutil.go b/rpc/rpcutil.go
index d39b12c86..84dc678c3 100644
--- a/rpc/rpcutil.go
+++ b/rpc/rpcutil.go
@@ -106,7 +106,7 @@ func (c *PersistentCaller) Call(method string, args interface{}, reply interface
}
// Reconnect tries to rebuild RPC client
-func (c *PersistentCaller) Reconnect(method string) (err error) {
+func (c *PersistentCaller) Reconnect(method string) (err error) {
c.Lock()
c.Close()
c.client = nil
diff --git a/rpc/server.go b/rpc/server.go
index 159ad76a0..a81add856 100644
--- a/rpc/server.go
+++ b/rpc/server.go
@@ -17,6 +17,7 @@
package rpc
import (
+ "context"
"io"
"net"
"net/rpc"
@@ -149,7 +150,12 @@ sessionLoop:
}
break sessionLoop
}
- nodeAwareCodec := NewNodeAwareServerCodec(utils.GetMsgPackServerCodec(muxConn), remoteNodeID)
+ ctx, cancelFunc := context.WithCancel(context.Background())
+ go func() {
+ <-muxConn.GetDieCh()
+ cancelFunc()
+ }()
+ nodeAwareCodec := NewNodeAwareServerCodec(utils.GetMsgPackServerCodec(muxConn), remoteNodeID, ctx)
go s.rpcServer.ServeCodec(nodeAwareCodec)
}
}
diff --git a/vendor/github.com/xtaci/smux/stream.go b/vendor/github.com/xtaci/smux/stream.go
index 2ce00d2d9..2a2b82fcc 100644
--- a/vendor/github.com/xtaci/smux/stream.go
+++ b/vendor/github.com/xtaci/smux/stream.go
@@ -146,6 +146,12 @@ func (s *Stream) Close() error {
}
}
+// GetDieCh returns a readonly chan which can be readable
+// when the stream is to be closed.
+func (s *Stream) GetDieCh() <-chan struct{} {
+ return s.die
+}
+
// SetReadDeadline sets the read deadline as defined by
// net.Conn.SetReadDeadline.
// A zero time value disables the deadline.
diff --git a/worker/db.go b/worker/db.go
index ba2c7289f..96095d271 100644
--- a/worker/db.go
+++ b/worker/db.go
@@ -17,9 +17,9 @@
package worker
import (
- "context"
"os"
"path/filepath"
+
//"runtime/trace"
"sync"
"time"
@@ -296,7 +296,7 @@ func (db *Database) writeQuery(request *types.Request) (response *types.Response
// call kayak runtime Process
var result interface{}
- if result, _, err = db.kayakRuntime.Apply(context.Background(), request); err != nil {
+ if result, _, err = db.kayakRuntime.Apply(request.GetContext(), request); err != nil {
err = errors.Wrap(err, "apply failed")
return
}
From 75c42c204575d16e1cdd7302dc6ebe24f9040e57 Mon Sep 17 00:00:00 2001
From: leventeliu
Date: Wed, 5 Dec 2018 17:06:37 +0800
Subject: [PATCH 05/36] Add context support for slow functions
---
sqlchain/chain.go | 154 ++++++++++++++++++-------------------------
sqlchain/observer.go | 8 +--
sqlchain/runtime.go | 28 +++++---
xenomint/state.go | 81 ++++++++++++++++++-----
4 files changed, 148 insertions(+), 123 deletions(-)
diff --git a/sqlchain/chain.go b/sqlchain/chain.go
index a95f81c45..e40a777b4 100644
--- a/sqlchain/chain.go
+++ b/sqlchain/chain.go
@@ -18,6 +18,7 @@ package sqlchain
import (
"bytes"
+ "context"
"encoding/binary"
"fmt"
"os"
@@ -112,8 +113,8 @@ type Chain struct {
st *x.State
cl *rpc.Caller
rt *runtime
+ ctx context.Context // ctx is the root context of Chain
- stopCh chan struct{}
blocks chan *types.Block
heights chan int32
responses chan *types.ResponseHeader
@@ -132,8 +133,6 @@ type Chain struct {
observerReplicators map[proto.NodeID]*observerReplicator
// replCh defines the replication trigger channel for replication check.
replCh chan struct{}
- // replWg defines the waitGroups for running replications.
- replWg sync.WaitGroup
// Cached fileds, may need to renew some of this fields later.
//
@@ -143,6 +142,11 @@ type Chain struct {
// NewChain creates a new sql-chain struct.
func NewChain(c *Config) (chain *Chain, err error) {
+ return NewChainWithContext(context.Background(), c)
+}
+
+// NewChainWithContext creates a new sql-chain struct with context.
+func NewChainWithContext(ctx context.Context, c *Config) (chain *Chain, err error) {
// TODO(leventeliu): this is a rough solution, you may also want to clean database file and
// force rebuilding.
var fi os.FileInfo
@@ -202,8 +206,8 @@ func NewChain(c *Config) (chain *Chain, err error) {
ai: newAckIndex(),
st: state,
cl: rpc.NewCaller(),
- rt: newRunTime(c),
- stopCh: make(chan struct{}),
+ rt: newRunTime(ctx, c),
+ ctx: ctx,
blocks: make(chan *types.Block),
heights: make(chan int32, 1),
responses: make(chan *types.ResponseHeader),
@@ -229,6 +233,12 @@ func NewChain(c *Config) (chain *Chain, err error) {
// LoadChain loads the chain state from the specified database and rebuilds a memory index.
func LoadChain(c *Config) (chain *Chain, err error) {
+ return LoadChainWithContext(context.Background(), c)
+}
+
+// LoadChainWithContext loads the chain state from the specified database and rebuilds
+// a memory index with context.
+func LoadChainWithContext(ctx context.Context, c *Config) (chain *Chain, err error) {
// Open LevelDB for block and state
bdbFile := c.ChainFilePrefix + "-block-state.ldb"
bdb, err := leveldb.OpenFile(bdbFile, &leveldbConf)
@@ -272,8 +282,8 @@ func LoadChain(c *Config) (chain *Chain, err error) {
ai: newAckIndex(),
st: xstate,
cl: rpc.NewCaller(),
- rt: newRunTime(c),
- stopCh: make(chan struct{}),
+ rt: newRunTime(ctx, c),
+ ctx: ctx,
blocks: make(chan *types.Block),
heights: make(chan int32, 1),
responses: make(chan *types.ResponseHeader),
@@ -537,7 +547,7 @@ func (c *Chain) produceBlockV2(now time.Time) (err error) {
frs []*types.Request
qts []*x.QueryTracker
)
- if frs, qts, err = c.st.CommitEx(); err != nil {
+ if frs, qts, err = c.st.CommitExWithContext(c.rt.ctx); err != nil {
return
}
var block = &types.Block{
@@ -609,28 +619,28 @@ func (c *Chain) produceBlockV2(now time.Time) (err error) {
go func(id proto.NodeID) {
defer wg.Done()
resp := &MuxAdviseNewBlockResp{}
- if err := c.cl.CallNode(
- id, route.SQLCAdviseNewBlock.String(), req, resp); err != nil {
+ if err := c.cl.CallNodeWithContext(
+ c.rt.ctx, id, route.SQLCAdviseNewBlock.String(), req, resp,
+ ); err != nil {
log.WithFields(log.Fields{
"peer": c.rt.getPeerInfoString(),
"time": c.rt.getChainTimeString(),
"curr_turn": c.rt.getNextTurn(),
"using_timestamp": now.Format(time.RFC3339Nano),
"block_hash": block.BlockHash().String(),
- }).WithError(err).Error(
- "Failed to advise new block")
+ }).WithError(err).Error("Failed to advise new block")
}
}(s)
}
}
wg.Wait()
// fire replication to observers
- c.startStopReplication()
+ c.startStopReplication(c.rt.ctx)
return
}
func (c *Chain) syncHead() {
- // Try to fetch if the the block of the current turn is not advised yet
+ // Try to fetch if the block of the current turn is not advised yet
if h := c.rt.getNextTurn() - 1; c.rt.getHead().Height < h {
var err error
req := &MuxFetchBlockReq{
@@ -739,16 +749,10 @@ func (c *Chain) runCurrentTurn(now time.Time) {
}
// mainCycle runs main cycle of the sql-chain.
-func (c *Chain) mainCycle() {
- defer func() {
- c.rt.wg.Done()
- // Signal worker goroutines to stop
- close(c.stopCh)
- }()
-
+func (c *Chain) mainCycle(ctx context.Context) {
for {
select {
- case <-c.rt.stopCh:
+ case <-ctx.Done():
return
default:
c.syncHead()
@@ -795,24 +799,26 @@ func (c *Chain) sync() (err error) {
return
}
-func (c *Chain) processBlocks() {
- rsCh := make(chan struct{})
- rsWG := &sync.WaitGroup{}
+func (c *Chain) processBlocks(ctx context.Context) {
+ var (
+ cld, ccl = context.WithCancel(ctx)
+ wg = &sync.WaitGroup{}
+ )
+
returnStash := func(stash []*types.Block) {
- defer rsWG.Done()
+ defer wg.Done()
for _, block := range stash {
select {
case c.blocks <- block:
- case <-rsCh:
+ case <-cld.Done():
return
}
}
}
defer func() {
- close(rsCh)
- rsWG.Wait()
- c.rt.wg.Done()
+ ccl()
+ wg.Wait()
}()
var stash []*types.Block
@@ -825,7 +831,7 @@ func (c *Chain) processBlocks() {
"stashs": len(stash),
}).Debug("Read new height from channel")
if stash != nil {
- rsWG.Add(1)
+ wg.Add(1)
go returnStash(stash)
stash = nil
}
@@ -863,30 +869,8 @@ func (c *Chain) processBlocks() {
}
}
// fire replication to observers
- c.startStopReplication()
- case <-c.stopCh:
- return
- }
- }
-}
-
-func (c *Chain) processResponses() {
- // TODO(leventeliu): implement that
- defer c.rt.wg.Done()
- for {
- select {
- case <-c.stopCh:
- return
- }
- }
-}
-
-func (c *Chain) processAcks() {
- // TODO(leventeliu): implement that
- defer c.rt.wg.Done()
- for {
- select {
- case <-c.stopCh:
+ c.startStopReplication(c.rt.ctx)
+ case <-ctx.Done():
return
}
}
@@ -898,16 +882,9 @@ func (c *Chain) Start() (err error) {
return
}
- c.rt.wg.Add(1)
- go c.processBlocks()
- c.rt.wg.Add(1)
- go c.processResponses()
- c.rt.wg.Add(1)
- go c.processAcks()
- c.rt.wg.Add(1)
- go c.mainCycle()
- c.rt.wg.Add(1)
- go c.replicationCycle()
+ c.rt.goFunc(c.processBlocks)
+ c.rt.goFunc(c.mainCycle)
+ c.rt.goFunc(c.replicationCycle)
c.rt.startService(c)
return
}
@@ -923,7 +900,7 @@ func (c *Chain) Stop() (err error) {
log.WithFields(log.Fields{
"peer": c.rt.getPeerInfoString(),
"time": c.rt.getChainTimeString(),
- }).Debug("Chain service stopped")
+ }).Debug("Chain service and workers stopped")
// Close LevelDB file
var ierr error
if ierr = c.bdb.Close(); ierr != nil && err == nil {
@@ -1040,7 +1017,7 @@ func (c *Chain) CheckAndPushNewBlock(block *types.Block) (err error) {
// }
// Replicate local state from the new block
- if err = c.st.ReplayBlock(block); err != nil {
+ if err = c.st.ReplayBlockWithContext(c.rt.ctx, block); err != nil {
return
}
@@ -1159,10 +1136,9 @@ func (c *Chain) getBilling(low, high int32) (req *pt.BillingRequest, err error)
return
}
-func (c *Chain) collectBillingSignatures(billings *pt.BillingRequest) {
- defer c.rt.wg.Done()
+func (c *Chain) collectBillingSignatures(ctx context.Context, billings *pt.BillingRequest) {
// Process sign billing responses, note that range iterating over channel will only break if
- // the channle is closed
+ // the channel is closed
req := &MuxSignBillingReq{
Envelope: proto.Envelope{
// TODO(leventeliu): Add fields.
@@ -1212,7 +1188,9 @@ func (c *Chain) collectBillingSignatures(billings *pt.BillingRequest) {
}
var resp interface{}
- if err = c.cl.CallNode(bpNodeID, route.MCCAdviseBillingRequest.String(), bpReq, resp); err != nil {
+ if err = c.cl.CallNodeWithContext(
+ ctx, bpNodeID, route.MCCAdviseBillingRequest.String(), bpReq, resp,
+ ); err != nil {
return
}
}()
@@ -1232,12 +1210,13 @@ func (c *Chain) collectBillingSignatures(billings *pt.BillingRequest) {
defer rpcWG.Done()
resp := &MuxSignBillingResp{}
- if err := c.cl.CallNode(id, route.SQLCSignBilling.String(), req, resp); err != nil {
+ if err := c.cl.CallNodeWithContext(
+ ctx, id, route.SQLCSignBilling.String(), req, resp,
+ ); err != nil {
log.WithFields(log.Fields{
"peer": c.rt.getPeerInfoString(),
"time": c.rt.getChainTimeString(),
- }).WithError(err).Error(
- "Failed to send sign billing request")
+ }).WithError(err).Error("Failed to send sign billing request")
}
respC <- &resp.SignBillingResp
@@ -1268,8 +1247,7 @@ func (c *Chain) LaunchBilling(low, high int32) (err error) {
return
}
- c.rt.wg.Add(1)
- go c.collectBillingSignatures(req)
+ c.rt.goFunc(func(ctx context.Context) { c.collectBillingSignatures(ctx, req) })
return
}
@@ -1307,7 +1285,7 @@ func (c *Chain) addSubscription(nodeID proto.NodeID, startHeight int32) (err err
c.observerLock.Lock()
defer c.observerLock.Unlock()
c.observers[nodeID] = startHeight
- c.startStopReplication()
+ c.startStopReplication(c.rt.ctx)
return
}
@@ -1316,15 +1294,15 @@ func (c *Chain) cancelSubscription(nodeID proto.NodeID) (err error) {
c.observerLock.Lock()
defer c.observerLock.Unlock()
delete(c.observers, nodeID)
- c.startStopReplication()
+ c.startStopReplication(c.rt.ctx)
return
}
-func (c *Chain) startStopReplication() {
+func (c *Chain) startStopReplication(ctx context.Context) {
if c.replCh != nil {
select {
case c.replCh <- struct{}{}:
- case <-c.stopCh:
+ case <-ctx.Done():
default:
}
}
@@ -1344,10 +1322,9 @@ func (c *Chain) populateObservers() {
}
} else {
// start new replication routine
- c.replWg.Add(1)
replicator := newObserverReplicator(nodeID, startHeight, c)
c.observerReplicators[nodeID] = replicator
- go replicator.run()
+ c.rt.goFunc(replicator.run)
}
}
@@ -1360,12 +1337,7 @@ func (c *Chain) populateObservers() {
}
}
-func (c *Chain) replicationCycle() {
- defer func() {
- c.replWg.Wait()
- c.rt.wg.Done()
- }()
-
+func (c *Chain) replicationCycle(ctx context.Context) {
for {
select {
case <-c.replCh:
@@ -1375,7 +1347,7 @@ func (c *Chain) replicationCycle() {
for _, replicator := range c.observerReplicators {
replicator.tick()
}
- case <-c.stopCh:
+ case <-ctx.Done():
return
}
}
@@ -1384,7 +1356,7 @@ func (c *Chain) replicationCycle() {
// Query queries req from local chain state and returns the query results in resp.
func (c *Chain) Query(req *types.Request) (resp *types.Response, err error) {
var ref *x.QueryTracker
- if ref, resp, err = c.st.Query(req); err != nil {
+ if ref, resp, err = c.st.QueryWithContext(c.rt.ctx, req); err != nil {
return
}
if err = resp.Sign(c.pk); err != nil {
@@ -1403,7 +1375,7 @@ func (c *Chain) Replay(req *types.Request, resp *types.Response) (err error) {
case types.ReadQuery:
return
case types.WriteQuery:
- return c.st.Replay(req, resp)
+ return c.st.ReplayWithContext(c.rt.ctx, req, resp)
default:
err = ErrInvalidRequest
}
diff --git a/sqlchain/observer.go b/sqlchain/observer.go
index e1fa19960..5e293578c 100644
--- a/sqlchain/observer.go
+++ b/sqlchain/observer.go
@@ -17,6 +17,7 @@
package sqlchain
import (
+ "context"
"sync"
"github.com/CovenantSQL/CovenantSQL/proto"
@@ -59,7 +60,6 @@ func newObserverReplicator(nodeID proto.NodeID, startHeight int32, c *Chain) *ob
func (r *observerReplicator) setNewHeight(newHeight int32) {
r.replLock.Lock()
defer r.replLock.Unlock()
-
r.height = newHeight
}
@@ -241,15 +241,13 @@ func (r *observerReplicator) tick() {
default:
}
}
-func (r *observerReplicator) run() {
- defer r.c.replWg.Done()
-
+func (r *observerReplicator) run(ctx context.Context) {
for {
select {
case <-r.triggerCh:
// replication
r.replicate()
- case <-r.c.stopCh:
+ case <-ctx.Done():
r.stop()
return
case <-r.stopCh:
diff --git a/sqlchain/runtime.go b/sqlchain/runtime.go
index b1935558d..14cdabf32 100644
--- a/sqlchain/runtime.go
+++ b/sqlchain/runtime.go
@@ -17,6 +17,7 @@
package sqlchain
import (
+ "context"
"fmt"
"sync"
"time"
@@ -29,8 +30,9 @@ import (
// runtime represents a chain runtime state.
type runtime struct {
- wg sync.WaitGroup
- stopCh chan struct{}
+ wg *sync.WaitGroup
+ ctx context.Context
+ cancel context.CancelFunc
// chainInitTime is the initial cycle time, when the Genesis blcok is produced.
chainInitTime time.Time
@@ -85,9 +87,13 @@ type runtime struct {
}
// newRunTime returns a new sql-chain runtime instance with the specified config.
-func newRunTime(c *Config) (r *runtime) {
+func newRunTime(ctx context.Context, c *Config) (r *runtime) {
+ var cld, ccl = context.WithCancel(ctx)
r = &runtime{
- stopCh: make(chan struct{}),
+ wg: &sync.WaitGroup{},
+ ctx: cld,
+ cancel: ccl,
+
databaseID: c.DatabaseID,
period: c.Period,
tick: c.Tick,
@@ -204,11 +210,7 @@ func (r *runtime) getQueryGas(t types.QueryType) uint64 {
// stop sends a signal to the Runtime stop channel by closing it.
func (r *runtime) stop() {
r.stopService()
- select {
- case <-r.stopCh:
- default:
- close(r.stopCh)
- }
+ r.cancel()
r.wg.Wait()
}
@@ -328,3 +330,11 @@ func (r *runtime) setHead(head *state) {
defer r.stateMutex.Unlock()
r.head = head
}
+
+func (r *runtime) goFunc(f func(context.Context)) {
+ r.wg.Add(1)
+ go func() {
+ defer r.wg.Done()
+ f(r.ctx)
+ }()
+}
diff --git a/xenomint/state.go b/xenomint/state.go
index 8599cf012..73cf0a7a7 100644
--- a/xenomint/state.go
+++ b/xenomint/state.go
@@ -17,6 +17,7 @@
package xenomint
import (
+ "context"
"database/sql"
"io"
"strings"
@@ -107,7 +108,7 @@ func (s *State) Close(commit bool) (err error) {
return
}
} else {
- // Only rollback to last commmit point
+ // Only rollback to last commit point
if err = s.rollback(); err != nil {
return
}
@@ -199,10 +200,13 @@ func buildTypeNamesFromSQLColumnTypes(types []*sql.ColumnType) (names []string)
type sqlQuerier interface {
Query(query string, args ...interface{}) (*sql.Rows, error)
+ QueryContext(ctx context.Context, query string, args ...interface{}) (*sql.Rows, error)
}
func readSingle(
- qer sqlQuerier, q *types.Query) (names []string, types []string, data [][]interface{}, err error,
+ ctx context.Context, qer sqlQuerier, q *types.Query,
+) (
+ names []string, types []string, data [][]interface{}, err error,
) {
var (
rows *sql.Rows
@@ -214,7 +218,7 @@ func readSingle(
if _, pattern, args, err = convertQueryAndBuildArgs(q.Pattern, q.Args); err != nil {
return
}
- if rows, err = qer.Query(pattern, args...); err != nil {
+ if rows, err = qer.QueryContext(ctx, pattern, args...); err != nil {
return
}
defer rows.Close()
@@ -253,6 +257,12 @@ func buildRowsFromNativeData(data [][]interface{}) (rows []types.ResponseRow) {
}
func (s *State) read(req *types.Request) (ref *QueryTracker, resp *types.Response, err error) {
+ return s.readWithContext(context.Background(), req)
+}
+
+func (s *State) readWithContext(
+ ctx context.Context, req *types.Request) (ref *QueryTracker, resp *types.Response, err error,
+) {
var (
ierr error
cnames, ctypes []string
@@ -260,7 +270,7 @@ func (s *State) read(req *types.Request) (ref *QueryTracker, resp *types.Respons
)
// TODO(leventeliu): no need to run every read query here.
for i, v := range req.Payload.Queries {
- if cnames, ctypes, data, ierr = readSingle(s.strg.DirtyReader(), &v); ierr != nil {
+ if cnames, ctypes, data, ierr = readSingle(ctx, s.strg.DirtyReader(), &v); ierr != nil {
err = errors.Wrapf(ierr, "query at #%d failed", i)
// Add to failed pool list
s.pool.setFailed(req)
@@ -288,7 +298,9 @@ func (s *State) read(req *types.Request) (ref *QueryTracker, resp *types.Respons
return
}
-func (s *State) readTx(req *types.Request) (ref *QueryTracker, resp *types.Response, err error) {
+func (s *State) readTx(
+ ctx context.Context, req *types.Request) (ref *QueryTracker, resp *types.Response, err error,
+) {
var (
tx *sql.Tx
id uint64
@@ -315,7 +327,7 @@ func (s *State) readTx(req *types.Request) (ref *QueryTracker, resp *types.Respo
}
for i, v := range req.Payload.Queries {
- if cnames, ctypes, data, ierr = readSingle(querier, &v); ierr != nil {
+ if cnames, ctypes, data, ierr = readSingle(ctx, querier, &v); ierr != nil {
err = errors.Wrapf(ierr, "query at #%d failed", i)
// Add to failed pool list
s.pool.setFailed(req)
@@ -343,7 +355,9 @@ func (s *State) readTx(req *types.Request) (ref *QueryTracker, resp *types.Respo
return
}
-func (s *State) writeSingle(q *types.Query) (res sql.Result, err error) {
+func (s *State) writeSingle(
+ ctx context.Context, q *types.Query) (res sql.Result, err error,
+) {
var (
containsDDL bool
pattern string
@@ -353,7 +367,7 @@ func (s *State) writeSingle(q *types.Query) (res sql.Result, err error) {
if containsDDL, pattern, args, err = convertQueryAndBuildArgs(q.Pattern, q.Args); err != nil {
return
}
- if res, err = s.unc.Exec(pattern, args...); err == nil {
+ if res, err = s.unc.ExecContext(ctx, pattern, args...); err == nil {
if containsDDL {
atomic.StoreUint32(&s.hasSchemaChange, 1)
}
@@ -373,7 +387,9 @@ func (s *State) rollbackTo(savepoint uint64) {
s.unc.Exec("ROLLBACK TO \"?\"", savepoint)
}
-func (s *State) write(req *types.Request) (ref *QueryTracker, resp *types.Response, err error) {
+func (s *State) write(
+ ctx context.Context, req *types.Request) (ref *QueryTracker, resp *types.Response, err error,
+) {
var (
savepoint uint64
query = &QueryTracker{Req: req}
@@ -390,7 +406,7 @@ func (s *State) write(req *types.Request) (ref *QueryTracker, resp *types.Respon
savepoint = s.getID()
for i, v := range req.Payload.Queries {
var res sql.Result
- if res, ierr = s.writeSingle(&v); ierr != nil {
+ if res, ierr = s.writeSingle(ctx, &v); ierr != nil {
err = errors.Wrapf(ierr, "execute at #%d failed", i)
// Add to failed pool list
s.pool.setFailed(req)
@@ -426,7 +442,7 @@ func (s *State) write(req *types.Request) (ref *QueryTracker, resp *types.Respon
return
}
-func (s *State) replay(req *types.Request, resp *types.Response) (err error) {
+func (s *State) replay(ctx context.Context, req *types.Request, resp *types.Response) (err error) {
var (
ierr error
savepoint uint64
@@ -443,7 +459,7 @@ func (s *State) replay(req *types.Request, resp *types.Response) (err error) {
return
}
for i, v := range req.Payload.Queries {
- if _, ierr = s.writeSingle(&v); ierr != nil {
+ if _, ierr = s.writeSingle(ctx, &v); ierr != nil {
err = errors.Wrapf(ierr, "execute at #%d failed", i)
s.rollbackTo(savepoint)
return
@@ -457,6 +473,12 @@ func (s *State) replay(req *types.Request, resp *types.Response) (err error) {
// ReplayBlock replays the queries from block. It also checks and skips some preceding pooled
// queries.
func (s *State) ReplayBlock(block *types.Block) (err error) {
+ return s.ReplayBlockWithContext(context.Background(), block)
+}
+
+// ReplayBlockWithContext replays the queries from block with context. It also checks and
+// skips some preceding pooled queries.
+func (s *State) ReplayBlockWithContext(ctx context.Context, block *types.Block) (err error) {
var (
ierr error
lastsp uint64 // Last savepoint
@@ -488,7 +510,7 @@ func (s *State) ReplayBlock(block *types.Block) (err error) {
s.rollbackTo(lastsp)
return
}
- if _, ierr = s.writeSingle(&v); ierr != nil {
+ if _, ierr = s.writeSingle(ctx, &v); ierr != nil {
err = errors.Wrapf(ierr, "execute at %d:%d failed", i, j)
s.rollbackTo(lastsp)
return
@@ -501,7 +523,7 @@ func (s *State) ReplayBlock(block *types.Block) (err error) {
for _, r := range block.FailedReqs {
s.pool.removeFailed(r)
}
- // Check if the current transaction is ok to commit
+ // Check if the current transaction is OK to commit
if s.pool.matchLast(lastsp) {
if err = s.uncCommit(); err != nil {
// FATAL ERROR
@@ -541,13 +563,21 @@ func (s *State) commit() (err error) {
// CommitEx commits the current transaction and returns all the pooled queries.
func (s *State) CommitEx() (failed []*types.Request, queries []*QueryTracker, err error) {
+ return s.CommitExWithContext(context.Background())
+}
+
+// CommitExWithContext commits the current transaction and returns all the pooled queries
+// with context.
+func (s *State) CommitExWithContext(
+ ctx context.Context) (failed []*types.Request, queries []*QueryTracker, err error,
+) {
s.Lock()
defer s.Unlock()
if err = s.uncCommit(); err != nil {
// FATAL ERROR
return
}
- if s.unc, err = s.strg.Writer().Begin(); err != nil {
+ if s.unc, err = s.strg.Writer().BeginTx(ctx, nil); err != nil {
// FATAL ERROR
return
}
@@ -586,11 +616,19 @@ func (s *State) getLocalTime() time.Time {
// Query does the query(ies) in req, pools the request and persists any change to
// the underlying storage.
func (s *State) Query(req *types.Request) (ref *QueryTracker, resp *types.Response, err error) {
+ return s.QueryWithContext(context.Background(), req)
+}
+
+// QueryWithContext does the query(ies) in req, pools the request and persists any change to
+// the underlying storage.
+func (s *State) QueryWithContext(
+ ctx context.Context, req *types.Request) (ref *QueryTracker, resp *types.Response, err error,
+) {
switch req.Header.QueryType {
case types.ReadQuery:
- return s.readTx(req)
+ return s.readTx(ctx, req)
case types.WriteQuery:
- return s.write(req)
+ return s.write(ctx, req)
default:
err = ErrInvalidRequest
}
@@ -599,6 +637,13 @@ func (s *State) Query(req *types.Request) (ref *QueryTracker, resp *types.Respon
// Replay replays a write log from other peer to replicate storage state.
func (s *State) Replay(req *types.Request, resp *types.Response) (err error) {
+ return s.ReplayWithContext(context.Background(), req, resp)
+}
+
+// ReplayWithContext replays a write log from other peer to replicate storage state with context.
+func (s *State) ReplayWithContext(
+ ctx context.Context, req *types.Request, resp *types.Response) (err error,
+) {
// NOTE(leventeliu): in the current implementation, failed requests are not tracked in remote
// nodes (while replaying via Replay calls). Because we don't want to actually replay read
// queries in all synchronized nodes, meanwhile, whether a request will fail or not
@@ -609,7 +654,7 @@ func (s *State) Replay(req *types.Request, resp *types.Response) (err error) {
case types.ReadQuery:
return
case types.WriteQuery:
- return s.replay(req, resp)
+ return s.replay(ctx, req, resp)
default:
err = ErrInvalidRequest
}
From 80751eab47fb9caf49b9a5ee8fbdcbf8c04b24a5 Mon Sep 17 00:00:00 2001
From: leventeliu
Date: Wed, 5 Dec 2018 17:16:20 +0800
Subject: [PATCH 06/36] Use request context for query and replay, instead of
chain runtime context
---
sqlchain/chain.go | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/sqlchain/chain.go b/sqlchain/chain.go
index e40a777b4..4b488a201 100644
--- a/sqlchain/chain.go
+++ b/sqlchain/chain.go
@@ -1356,7 +1356,9 @@ func (c *Chain) replicationCycle(ctx context.Context) {
// Query queries req from local chain state and returns the query results in resp.
func (c *Chain) Query(req *types.Request) (resp *types.Response, err error) {
var ref *x.QueryTracker
- if ref, resp, err = c.st.QueryWithContext(c.rt.ctx, req); err != nil {
+ // TODO(leventeliu): we're using an external context passed by request. Make sure that
+ // cancelling will be propagated to this context before chain instance stops.
+ if ref, resp, err = c.st.QueryWithContext(req.GetContext(), req); err != nil {
return
}
if err = resp.Sign(c.pk); err != nil {
@@ -1375,7 +1377,7 @@ func (c *Chain) Replay(req *types.Request, resp *types.Response) (err error) {
case types.ReadQuery:
return
case types.WriteQuery:
- return c.st.ReplayWithContext(c.rt.ctx, req, resp)
+ return c.st.ReplayWithContext(req.GetContext(), req, resp)
default:
err = ErrInvalidRequest
}
From c6180688c1f50c7c43d148cda877ad19ada1a0c9 Mon Sep 17 00:00:00 2001
From: laodouya
Date: Thu, 29 Nov 2018 15:13:29 +0800
Subject: [PATCH 07/36] Add multi gnte config file. Run all gnte delay test
case in run.sh
---
cmd/cql-minerd/benchGNTE.sh | 42 +++++++++---------
test/GNTE/conf/gnte.yaml | 18 +++-----
test/GNTE/conf/gnte_0ms.yaml | 73 +++++++++++++++++++++++++++++++
test/GNTE/conf/gnte_100ms.yaml | 79 ++++++++++++++++++++++++++++++++++
test/GNTE/conf/gnte_200ms.yaml | 79 ++++++++++++++++++++++++++++++++++
test/GNTE/conf/gnte_20ms.yaml | 79 ++++++++++++++++++++++++++++++++++
test/GNTE/conf/gnte_5ms.yaml | 79 ++++++++++++++++++++++++++++++++++
test/GNTE/run.sh | 66 +++++++++++++++++-----------
8 files changed, 456 insertions(+), 59 deletions(-)
create mode 100644 test/GNTE/conf/gnte_0ms.yaml
create mode 100644 test/GNTE/conf/gnte_100ms.yaml
create mode 100644 test/GNTE/conf/gnte_200ms.yaml
create mode 100644 test/GNTE/conf/gnte_20ms.yaml
create mode 100644 test/GNTE/conf/gnte_5ms.yaml
diff --git a/cmd/cql-minerd/benchGNTE.sh b/cmd/cql-minerd/benchGNTE.sh
index fd6da72bb..03bd8e2b5 100755
--- a/cmd/cql-minerd/benchGNTE.sh
+++ b/cmd/cql-minerd/benchGNTE.sh
@@ -1,26 +1,26 @@
#!/bin/bash
-../../build.sh && \
-go test -bench=^BenchmarkMinerGNTE1$ -benchtime=10s -run ^$ && \
-go test -bench=^BenchmarkMinerGNTE2$ -benchtime=10s -run ^$ && \
-go test -bench=^BenchmarkMinerGNTE3$ -benchtime=10s -run ^$ && \
-go test -bench=^BenchmarkMinerGNTE4$ -benchtime=10s -run ^$ && \
-go test -bench=^BenchmarkMinerGNTE8$ -benchtime=10s -run ^$
+#../../build.sh && \
+go test -bench=^BenchmarkMinerGNTE1$ -benchtime=10s -run ^$ |tee gnte.log
+go test -bench=^BenchmarkMinerGNTE2$ -benchtime=10s -run ^$ |tee -a gnte.log
+go test -bench=^BenchmarkMinerGNTE3$ -benchtime=10s -run ^$ |tee -a gnte.log
+go test -bench=^BenchmarkMinerGNTE4$ -benchtime=10s -run ^$ |tee -a gnte.log
+go test -bench=^BenchmarkMinerGNTE8$ -benchtime=10s -run ^$ |tee -a gnte.log
-go test -cpu=4 -bench=^BenchmarkMinerGNTE1$ -benchtime=10s -run ^$ && \
-go test -cpu=4 -bench=^BenchmarkMinerGNTE2$ -benchtime=10s -run ^$ && \
-go test -cpu=4 -bench=^BenchmarkMinerGNTE3$ -benchtime=10s -run ^$ && \
-go test -cpu=4 -bench=^BenchmarkMinerGNTE4$ -benchtime=10s -run ^$ && \
-go test -cpu=4 -bench=^BenchmarkMinerGNTE8$ -benchtime=10s -run ^$
+go test -cpu=4 -bench=^BenchmarkMinerGNTE1$ -benchtime=10s -run ^$ |tee -a gnte.log
+go test -cpu=4 -bench=^BenchmarkMinerGNTE2$ -benchtime=10s -run ^$ |tee -a gnte.log
+go test -cpu=4 -bench=^BenchmarkMinerGNTE3$ -benchtime=10s -run ^$ |tee -a gnte.log
+go test -cpu=4 -bench=^BenchmarkMinerGNTE4$ -benchtime=10s -run ^$ |tee -a gnte.log
+go test -cpu=4 -bench=^BenchmarkMinerGNTE8$ -benchtime=10s -run ^$ |tee -a gnte.log
-go test -cpu=2 -bench=^BenchmarkMinerGNTE1$ -benchtime=10s -run ^$ && \
-go test -cpu=2 -bench=^BenchmarkMinerGNTE2$ -benchtime=10s -run ^$ && \
-go test -cpu=2 -bench=^BenchmarkMinerGNTE3$ -benchtime=10s -run ^$ && \
-go test -cpu=2 -bench=^BenchmarkMinerGNTE4$ -benchtime=10s -run ^$ && \
-go test -cpu=2 -bench=^BenchmarkMinerGNTE8$ -benchtime=10s -run ^$
+go test -cpu=2 -bench=^BenchmarkMinerGNTE1$ -benchtime=10s -run ^$ |tee -a gnte.log
+go test -cpu=2 -bench=^BenchmarkMinerGNTE2$ -benchtime=10s -run ^$ |tee -a gnte.log
+go test -cpu=2 -bench=^BenchmarkMinerGNTE3$ -benchtime=10s -run ^$ |tee -a gnte.log
+go test -cpu=2 -bench=^BenchmarkMinerGNTE4$ -benchtime=10s -run ^$ |tee -a gnte.log
+go test -cpu=2 -bench=^BenchmarkMinerGNTE8$ -benchtime=10s -run ^$ |tee -a gnte.log
-go test -cpu=1 -bench=^BenchmarkMinerGNTE1$ -benchtime=10s -run ^$ && \
-go test -cpu=1 -bench=^BenchmarkMinerGNTE2$ -benchtime=10s -run ^$ && \
-go test -cpu=1 -bench=^BenchmarkMinerGNTE3$ -benchtime=10s -run ^$ && \
-go test -cpu=1 -bench=^BenchmarkMinerGNTE4$ -benchtime=10s -run ^$ && \
-go test -cpu=1 -bench=^BenchmarkMinerGNTE8$ -benchtime=10s -run ^$
+go test -cpu=1 -bench=^BenchmarkMinerGNTE1$ -benchtime=10s -run ^$ |tee -a gnte.log
+go test -cpu=1 -bench=^BenchmarkMinerGNTE2$ -benchtime=10s -run ^$ |tee -a gnte.log
+go test -cpu=1 -bench=^BenchmarkMinerGNTE3$ -benchtime=10s -run ^$ |tee -a gnte.log
+go test -cpu=1 -bench=^BenchmarkMinerGNTE4$ -benchtime=10s -run ^$ |tee -a gnte.log
+go test -cpu=1 -bench=^BenchmarkMinerGNTE8$ -benchtime=10s -run ^$ |tee -a gnte.log
diff --git a/test/GNTE/conf/gnte.yaml b/test/GNTE/conf/gnte.yaml
index 11c5eebb6..0ffb819b8 100644
--- a/test/GNTE/conf/gnte.yaml
+++ b/test/GNTE/conf/gnte.yaml
@@ -12,8 +12,7 @@ group:
- # bp10.250.1.4
ip: 10.250.1.4/32
cmd: "cd /scripts && ./bin/cqld -config ./node_2/config.yaml"
- delay: "100ms 1ms 1%"
- rate: "100mbit"
+ rate: "1000mbit"
-
name: miner
nodes:
@@ -41,8 +40,7 @@ group:
- # miner10.250.100.9
ip: 10.250.100.9/32
cmd: "cd /scripts && ./bin/cql-minerd -config ./node_miner_10.250.100.9/config.yaml"
- delay: "100ms 1ms 1%"
- rate: "100mbit"
+ rate: "1000mbit"
-
name: client
nodes:
@@ -52,28 +50,24 @@ group:
- # node_adapter
ip: 10.250.0.254/32
cmd: "cd /scripts && ./bin/cql-adapter -config ./node_c/config.yaml"
- delay: "100ms 1ms 1%"
- rate: "100mbit"
+ rate: "1000mbit"
network:
-
groups:
- bp
- miner
- delay: "100ms 1ms 1%"
- rate: "10mbit"
+ rate: "1000mbit"
-
groups:
- bp
- client
- delay: "100ms 1ms 1%"
- rate: "10mbit"
+ rate: "1000mbit"
-
groups:
- client
- miner
- delay: "100ms 1ms 1%"
- rate: "10mbit"
+ rate: "1000mbit"
diff --git a/test/GNTE/conf/gnte_0ms.yaml b/test/GNTE/conf/gnte_0ms.yaml
new file mode 100644
index 000000000..0ffb819b8
--- /dev/null
+++ b/test/GNTE/conf/gnte_0ms.yaml
@@ -0,0 +1,73 @@
+# Only support 10.250.0.2 ~ 10.250.254.254
+group:
+ -
+ name: bp
+ nodes:
+ - # bp10.250.1.2
+ ip: 10.250.1.2/32
+ cmd: "cd /scripts && ./bin/cqld -config ./node_0/config.yaml"
+ - # bp10.250.1.3
+ ip: 10.250.1.3/32
+ cmd: "cd /scripts && ./bin/cqld -config ./node_1/config.yaml"
+ - # bp10.250.1.4
+ ip: 10.250.1.4/32
+ cmd: "cd /scripts && ./bin/cqld -config ./node_2/config.yaml"
+ rate: "1000mbit"
+ -
+ name: miner
+ nodes:
+ - # miner10.250.100.2
+ ip: 10.250.100.2/32
+ cmd: "cd /scripts && ./bin/cql-minerd -config ./node_miner_10.250.100.2/config.yaml"
+ - # miner10.250.100.3
+ ip: 10.250.100.3/32
+ cmd: "cd /scripts && ./bin/cql-minerd -config ./node_miner_10.250.100.3/config.yaml"
+ - # miner10.250.100.4
+ ip: 10.250.100.4/32
+ cmd: "cd /scripts && ./bin/cql-minerd -config ./node_miner_10.250.100.4/config.yaml"
+ - # miner10.250.100.5
+ ip: 10.250.100.5/32
+ cmd: "cd /scripts && ./bin/cql-minerd -config ./node_miner_10.250.100.5/config.yaml"
+ - # miner10.250.100.6
+ ip: 10.250.100.6/32
+ cmd: "cd /scripts && ./bin/cql-minerd -config ./node_miner_10.250.100.6/config.yaml"
+ - # miner10.250.100.7
+ ip: 10.250.100.7/32
+ cmd: "cd /scripts && ./bin/cql-minerd -config ./node_miner_10.250.100.7/config.yaml"
+ - # miner10.250.100.8
+ ip: 10.250.100.8/32
+ cmd: "cd /scripts && ./bin/cql-minerd -config ./node_miner_10.250.100.8/config.yaml"
+ - # miner10.250.100.9
+ ip: 10.250.100.9/32
+ cmd: "cd /scripts && ./bin/cql-minerd -config ./node_miner_10.250.100.9/config.yaml"
+ rate: "1000mbit"
+ -
+ name: client
+ nodes:
+ - # node_c
+ ip: 10.250.0.2/32
+ cmd: "ping -c3 g.cn"
+ - # node_adapter
+ ip: 10.250.0.254/32
+ cmd: "cd /scripts && ./bin/cql-adapter -config ./node_c/config.yaml"
+ rate: "1000mbit"
+
+network:
+ -
+ groups:
+ - bp
+ - miner
+ rate: "1000mbit"
+
+ -
+ groups:
+ - bp
+ - client
+ rate: "1000mbit"
+
+ -
+ groups:
+ - client
+ - miner
+ rate: "1000mbit"
+
diff --git a/test/GNTE/conf/gnte_100ms.yaml b/test/GNTE/conf/gnte_100ms.yaml
new file mode 100644
index 000000000..5cb7d815f
--- /dev/null
+++ b/test/GNTE/conf/gnte_100ms.yaml
@@ -0,0 +1,79 @@
+# Only support 10.250.0.2 ~ 10.250.254.254
+group:
+ -
+ name: bp
+ nodes:
+ - # bp10.250.1.2
+ ip: 10.250.1.2/32
+ cmd: "cd /scripts && ./bin/cqld -config ./node_0/config.yaml"
+ - # bp10.250.1.3
+ ip: 10.250.1.3/32
+ cmd: "cd /scripts && ./bin/cqld -config ./node_1/config.yaml"
+ - # bp10.250.1.4
+ ip: 10.250.1.4/32
+ cmd: "cd /scripts && ./bin/cqld -config ./node_2/config.yaml"
+ delay: "100ms"
+ rate: "1000mbit"
+ -
+ name: miner
+ nodes:
+ - # miner10.250.100.2
+ ip: 10.250.100.2/32
+ cmd: "cd /scripts && ./bin/cql-minerd -config ./node_miner_10.250.100.2/config.yaml"
+ - # miner10.250.100.3
+ ip: 10.250.100.3/32
+ cmd: "cd /scripts && ./bin/cql-minerd -config ./node_miner_10.250.100.3/config.yaml"
+ - # miner10.250.100.4
+ ip: 10.250.100.4/32
+ cmd: "cd /scripts && ./bin/cql-minerd -config ./node_miner_10.250.100.4/config.yaml"
+ - # miner10.250.100.5
+ ip: 10.250.100.5/32
+ cmd: "cd /scripts && ./bin/cql-minerd -config ./node_miner_10.250.100.5/config.yaml"
+ - # miner10.250.100.6
+ ip: 10.250.100.6/32
+ cmd: "cd /scripts && ./bin/cql-minerd -config ./node_miner_10.250.100.6/config.yaml"
+ - # miner10.250.100.7
+ ip: 10.250.100.7/32
+ cmd: "cd /scripts && ./bin/cql-minerd -config ./node_miner_10.250.100.7/config.yaml"
+ - # miner10.250.100.8
+ ip: 10.250.100.8/32
+ cmd: "cd /scripts && ./bin/cql-minerd -config ./node_miner_10.250.100.8/config.yaml"
+ - # miner10.250.100.9
+ ip: 10.250.100.9/32
+ cmd: "cd /scripts && ./bin/cql-minerd -config ./node_miner_10.250.100.9/config.yaml"
+ delay: "100ms"
+ rate: "1000mbit"
+ -
+ name: client
+ nodes:
+ - # node_c
+ ip: 10.250.0.2/32
+ cmd: "ping -c3 g.cn"
+ - # node_adapter
+ ip: 10.250.0.254/32
+ cmd: "cd /scripts && ./bin/cql-adapter -config ./node_c/config.yaml"
+ delay: "100ms"
+ rate: "1000mbit"
+
+network:
+ -
+ groups:
+ - bp
+ - miner
+ delay: "100ms"
+ rate: "1000mbit"
+
+ -
+ groups:
+ - bp
+ - client
+ delay: "100ms"
+ rate: "1000mbit"
+
+ -
+ groups:
+ - client
+ - miner
+ delay: "100ms"
+ rate: "1000mbit"
+
diff --git a/test/GNTE/conf/gnte_200ms.yaml b/test/GNTE/conf/gnte_200ms.yaml
new file mode 100644
index 000000000..6a75a4f06
--- /dev/null
+++ b/test/GNTE/conf/gnte_200ms.yaml
@@ -0,0 +1,79 @@
+# Only support 10.250.0.2 ~ 10.250.254.254
+group:
+ -
+ name: bp
+ nodes:
+ - # bp10.250.1.2
+ ip: 10.250.1.2/32
+ cmd: "cd /scripts && ./bin/cqld -config ./node_0/config.yaml"
+ - # bp10.250.1.3
+ ip: 10.250.1.3/32
+ cmd: "cd /scripts && ./bin/cqld -config ./node_1/config.yaml"
+ - # bp10.250.1.4
+ ip: 10.250.1.4/32
+ cmd: "cd /scripts && ./bin/cqld -config ./node_2/config.yaml"
+ delay: "200ms"
+ rate: "1000mbit"
+ -
+ name: miner
+ nodes:
+ - # miner10.250.100.2
+ ip: 10.250.100.2/32
+ cmd: "cd /scripts && ./bin/cql-minerd -config ./node_miner_10.250.100.2/config.yaml"
+ - # miner10.250.100.3
+ ip: 10.250.100.3/32
+ cmd: "cd /scripts && ./bin/cql-minerd -config ./node_miner_10.250.100.3/config.yaml"
+ - # miner10.250.100.4
+ ip: 10.250.100.4/32
+ cmd: "cd /scripts && ./bin/cql-minerd -config ./node_miner_10.250.100.4/config.yaml"
+ - # miner10.250.100.5
+ ip: 10.250.100.5/32
+ cmd: "cd /scripts && ./bin/cql-minerd -config ./node_miner_10.250.100.5/config.yaml"
+ - # miner10.250.100.6
+ ip: 10.250.100.6/32
+ cmd: "cd /scripts && ./bin/cql-minerd -config ./node_miner_10.250.100.6/config.yaml"
+ - # miner10.250.100.7
+ ip: 10.250.100.7/32
+ cmd: "cd /scripts && ./bin/cql-minerd -config ./node_miner_10.250.100.7/config.yaml"
+ - # miner10.250.100.8
+ ip: 10.250.100.8/32
+ cmd: "cd /scripts && ./bin/cql-minerd -config ./node_miner_10.250.100.8/config.yaml"
+ - # miner10.250.100.9
+ ip: 10.250.100.9/32
+ cmd: "cd /scripts && ./bin/cql-minerd -config ./node_miner_10.250.100.9/config.yaml"
+ delay: "200ms"
+ rate: "1000mbit"
+ -
+ name: client
+ nodes:
+ - # node_c
+ ip: 10.250.0.2/32
+ cmd: "ping -c3 g.cn"
+ - # node_adapter
+ ip: 10.250.0.254/32
+ cmd: "cd /scripts && ./bin/cql-adapter -config ./node_c/config.yaml"
+ delay: "200ms"
+ rate: "1000mbit"
+
+network:
+ -
+ groups:
+ - bp
+ - miner
+ delay: "200ms"
+ rate: "1000mbit"
+
+ -
+ groups:
+ - bp
+ - client
+ delay: "200ms"
+ rate: "1000mbit"
+
+ -
+ groups:
+ - client
+ - miner
+ delay: "200ms"
+ rate: "1000mbit"
+
diff --git a/test/GNTE/conf/gnte_20ms.yaml b/test/GNTE/conf/gnte_20ms.yaml
new file mode 100644
index 000000000..c1e648e1c
--- /dev/null
+++ b/test/GNTE/conf/gnte_20ms.yaml
@@ -0,0 +1,79 @@
+# Only support 10.250.0.2 ~ 10.250.254.254
+group:
+ -
+ name: bp
+ nodes:
+ - # bp10.250.1.2
+ ip: 10.250.1.2/32
+ cmd: "cd /scripts && ./bin/cqld -config ./node_0/config.yaml"
+ - # bp10.250.1.3
+ ip: 10.250.1.3/32
+ cmd: "cd /scripts && ./bin/cqld -config ./node_1/config.yaml"
+ - # bp10.250.1.4
+ ip: 10.250.1.4/32
+ cmd: "cd /scripts && ./bin/cqld -config ./node_2/config.yaml"
+ delay: "20ms"
+ rate: "1000mbit"
+ -
+ name: miner
+ nodes:
+ - # miner10.250.100.2
+ ip: 10.250.100.2/32
+ cmd: "cd /scripts && ./bin/cql-minerd -config ./node_miner_10.250.100.2/config.yaml"
+ - # miner10.250.100.3
+ ip: 10.250.100.3/32
+ cmd: "cd /scripts && ./bin/cql-minerd -config ./node_miner_10.250.100.3/config.yaml"
+ - # miner10.250.100.4
+ ip: 10.250.100.4/32
+ cmd: "cd /scripts && ./bin/cql-minerd -config ./node_miner_10.250.100.4/config.yaml"
+ - # miner10.250.100.5
+ ip: 10.250.100.5/32
+ cmd: "cd /scripts && ./bin/cql-minerd -config ./node_miner_10.250.100.5/config.yaml"
+ - # miner10.250.100.6
+ ip: 10.250.100.6/32
+ cmd: "cd /scripts && ./bin/cql-minerd -config ./node_miner_10.250.100.6/config.yaml"
+ - # miner10.250.100.7
+ ip: 10.250.100.7/32
+ cmd: "cd /scripts && ./bin/cql-minerd -config ./node_miner_10.250.100.7/config.yaml"
+ - # miner10.250.100.8
+ ip: 10.250.100.8/32
+ cmd: "cd /scripts && ./bin/cql-minerd -config ./node_miner_10.250.100.8/config.yaml"
+ - # miner10.250.100.9
+ ip: 10.250.100.9/32
+ cmd: "cd /scripts && ./bin/cql-minerd -config ./node_miner_10.250.100.9/config.yaml"
+ delay: "20ms"
+ rate: "1000mbit"
+ -
+ name: client
+ nodes:
+ - # node_c
+ ip: 10.250.0.2/32
+ cmd: "ping -c3 g.cn"
+ - # node_adapter
+ ip: 10.250.0.254/32
+ cmd: "cd /scripts && ./bin/cql-adapter -config ./node_c/config.yaml"
+ delay: "20ms"
+ rate: "1000mbit"
+
+network:
+ -
+ groups:
+ - bp
+ - miner
+ delay: "20ms"
+ rate: "1000mbit"
+
+ -
+ groups:
+ - bp
+ - client
+ delay: "20ms"
+ rate: "1000mbit"
+
+ -
+ groups:
+ - client
+ - miner
+ delay: "20ms"
+ rate: "1000mbit"
+
diff --git a/test/GNTE/conf/gnte_5ms.yaml b/test/GNTE/conf/gnte_5ms.yaml
new file mode 100644
index 000000000..86392bd32
--- /dev/null
+++ b/test/GNTE/conf/gnte_5ms.yaml
@@ -0,0 +1,79 @@
+# Only support 10.250.0.2 ~ 10.250.254.254
+group:
+ -
+ name: bp
+ nodes:
+ - # bp10.250.1.2
+ ip: 10.250.1.2/32
+ cmd: "cd /scripts && ./bin/cqld -config ./node_0/config.yaml"
+ - # bp10.250.1.3
+ ip: 10.250.1.3/32
+ cmd: "cd /scripts && ./bin/cqld -config ./node_1/config.yaml"
+ - # bp10.250.1.4
+ ip: 10.250.1.4/32
+ cmd: "cd /scripts && ./bin/cqld -config ./node_2/config.yaml"
+ delay: "5ms"
+ rate: "1000mbit"
+ -
+ name: miner
+ nodes:
+ - # miner10.250.100.2
+ ip: 10.250.100.2/32
+ cmd: "cd /scripts && ./bin/cql-minerd -config ./node_miner_10.250.100.2/config.yaml"
+ - # miner10.250.100.3
+ ip: 10.250.100.3/32
+ cmd: "cd /scripts && ./bin/cql-minerd -config ./node_miner_10.250.100.3/config.yaml"
+ - # miner10.250.100.4
+ ip: 10.250.100.4/32
+ cmd: "cd /scripts && ./bin/cql-minerd -config ./node_miner_10.250.100.4/config.yaml"
+ - # miner10.250.100.5
+ ip: 10.250.100.5/32
+ cmd: "cd /scripts && ./bin/cql-minerd -config ./node_miner_10.250.100.5/config.yaml"
+ - # miner10.250.100.6
+ ip: 10.250.100.6/32
+ cmd: "cd /scripts && ./bin/cql-minerd -config ./node_miner_10.250.100.6/config.yaml"
+ - # miner10.250.100.7
+ ip: 10.250.100.7/32
+ cmd: "cd /scripts && ./bin/cql-minerd -config ./node_miner_10.250.100.7/config.yaml"
+ - # miner10.250.100.8
+ ip: 10.250.100.8/32
+ cmd: "cd /scripts && ./bin/cql-minerd -config ./node_miner_10.250.100.8/config.yaml"
+ - # miner10.250.100.9
+ ip: 10.250.100.9/32
+ cmd: "cd /scripts && ./bin/cql-minerd -config ./node_miner_10.250.100.9/config.yaml"
+ delay: "5ms"
+ rate: "1000mbit"
+ -
+ name: client
+ nodes:
+ - # node_c
+ ip: 10.250.0.2/32
+ cmd: "ping -c3 g.cn"
+ - # node_adapter
+ ip: 10.250.0.254/32
+ cmd: "cd /scripts && ./bin/cql-adapter -config ./node_c/config.yaml"
+ delay: "5ms"
+ rate: "1000mbit"
+
+network:
+ -
+ groups:
+ - bp
+ - miner
+ delay: "5ms"
+ rate: "1000mbit"
+
+ -
+ groups:
+ - bp
+ - client
+ delay: "5ms"
+ rate: "1000mbit"
+
+ -
+ groups:
+ - client
+ - miner
+ delay: "5ms"
+ rate: "1000mbit"
+
diff --git a/test/GNTE/run.sh b/test/GNTE/run.sh
index 44fc9624c..077be6711 100755
--- a/test/GNTE/run.sh
+++ b/test/GNTE/run.sh
@@ -1,38 +1,52 @@
#!/bin/bash -x
+yaml[0]=./scripts/gnte_0ms.yaml
+yaml[1]=./scripts/gnte_5ms.yaml
+yaml[2]=./scripts/gnte_20ms.yaml
+yaml[3]=./scripts/gnte_100ms.yaml
+yaml[4]=./scripts/gnte_200ms.yaml
+
TEST_WD=$(cd $(dirname $0)/; pwd)
PROJECT_DIR=$(cd ${TEST_WD}/../../; pwd)
echo ${PROJECT_DIR}
-cd ${PROJECT_DIR} && ./build.sh
+# Build
+#Notice!!!!: uncomment this when you run this manually.
+#cd ${PROJECT_DIR} && ./build.sh
-if [ -d ${TEST_WD}/GNTE/scripts/bin ];then
- mv ${TEST_WD}/GNTE/scripts/bin{,.bak}
+BENCHRESULT_FILE=${PROJECT_DIR}/bench.log
+if [ -f ${BENCHRESULT_FILE} ];then
+ rm -rf ${BENCHRESULT_FILE}
fi
-cd ${PROJECT_DIR} && cp ./cleanupDB.sh ${TEST_WD}/GNTE/scripts
-cd ${TEST_WD} && bash ./GNTE/scripts/cleanupDB.sh
-cd ${PROJECT_DIR} && cp -r ./bin ${TEST_WD}/GNTE/scripts
-
-cd ${TEST_WD} && cp -r ./conf/* ./GNTE/scripts
-
-cd ${TEST_WD}/GNTE && bash -x ./build.sh
-cd ${TEST_WD}/GNTE && bash -x ./generate.sh ./scripts/gnte.yaml
-rm -rf ${TEST_WD}/GNTE/scripts/bin.bak
-
-#BUILD_IMG="covenantsql/build"
-#BENCH_CONTAIN="bench10.250.1.8"
-#INSIDE_GOPATH=$(docker run -it --rm ${BUILD_IMG} bash -c 'echo -n "$GOPATH"')
-#docker run -itd \
-# --name ${BENCH_CONTAIN}\
-# --net container:client10.250.1.8 \
-# -v ${PROJECT_DIR}/../:${INSIDE_GOPATH}/src/github.com/CovenantSQL/ \
-# ${BUILD_IMG} tail -f /dev/null
-#
-#docker exec -it ${BENCH_CONTAIN} bash -c \
-# "cd ${INSIDE_GOPATH}/src/github.com/CovenantSQL/CovenantSQL/client && go test -bench . -run BenchmarkCovenantSQLDriver"
-#
-#docker rm -f ${BENCH_CONTAIN}
+for gnte_yaml in ${yaml[@]};
+do
+ if [ -d ${TEST_WD}/GNTE/scripts/bin ];then
+ rm -rf ${TEST_WD}/GNTE/scripts/bin
+ fi
+
+ # Prepare
+ cd ${PROJECT_DIR} && cp ./cleanupDB.sh ${TEST_WD}/GNTE/scripts
+ cd ${PROJECT_DIR} && cp -r ./bin ${TEST_WD}/GNTE/scripts
+ cd ${TEST_WD} && cp -r ./conf/* ./GNTE/scripts
+ cd ${TEST_WD}/GNTE && bash -x ./build.sh
+
+ # Clean
+ cd ${TEST_WD} && bash ./GNTE/scripts/cleanupDB.sh
+ cd ${TEST_WD}/GNTE && bash -x ./generate.sh ${gnte_yaml}
+
+ # Bench GNTE
+ cd ${PROJECT_DIR}/cmd/cql-minerd/
+ bash -x ./benchGNTE.sh
+ echo "${gnte_yaml}" >> ${BENCHRESULT_FILE}
+ grep BenchmarkMinerGNTE gnte.log >> ${BENCHRESULT_FILE}
+ echo "" >> ${BENCHRESULT_FILE}
+done
+#cd ${TEST_WD}/GNTE && bash -x ./generate.sh stopall miner
+#cd test/GNTE/GNTE/scripts/node_miner_10.250.100.3/
+#cd data/randomid
+#replace storage.db3* file
+#cd ${TEST_WD}/GNTE && bash -x ./generate.sh startall
From e4dae8f396fff810669e93bf236731d90e031f93 Mon Sep 17 00:00:00 2001
From: laodouya
Date: Thu, 29 Nov 2018 15:15:14 +0800
Subject: [PATCH 08/36] Use index variable for row index in bench test.
---
cmd/cql-minerd/integration_test.go | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/cmd/cql-minerd/integration_test.go b/cmd/cql-minerd/integration_test.go
index bd6237d67..8d296713e 100644
--- a/cmd/cql-minerd/integration_test.go
+++ b/cmd/cql-minerd/integration_test.go
@@ -427,14 +427,17 @@ func benchDB(b *testing.B, db *sql.DB, createDB bool) {
b.RunParallel(func(pb *testing.PB) {
for pb.Next() {
ii := atomic.AddInt64(&i, 1)
+ index := ROWSTART + ii
+ //start := time.Now()
_, err = db.Exec("INSERT INTO "+TABLENAME+" ( k, v1 ) VALUES"+
- "(?, ?)", ROWSTART+ii, ii,
+ "(?, ?)", index, ii,
)
+ //log.Warnf("Insert index = %d %v", index, time.Since(start))
for err != nil && err.Error() == sqlite3.ErrBusy.Error() {
// retry forever
- log.Warnf("ROWSTART+ii = %d retried", ROWSTART+ii)
+ log.Warnf("index = %d retried", index)
_, err = db.Exec("INSERT INTO "+TABLENAME+" ( k, v1 ) VALUES"+
- "(?, ?)", ROWSTART+ii, ii,
+ "(?, ?)", index, ii,
)
}
if err != nil {
@@ -470,7 +473,9 @@ func benchDB(b *testing.B, db *sql.DB, createDB bool) {
index = rand.Int63n(count - 1)
}
//log.Debugf("index = %d", index)
+ //start := time.Now()
row := db.QueryRow("SELECT v1 FROM "+TABLENAME+" WHERE k = ? LIMIT 1", index)
+ //log.Warnf("Select index = %d %v", index, time.Since(start))
var result []byte
err = row.Scan(&result)
if err != nil || (len(result) == 0) {
From fdef2753658a8e0b4862870d70674b2ac1a7a27f Mon Sep 17 00:00:00 2001
From: laodouya
Date: Thu, 29 Nov 2018 15:17:18 +0800
Subject: [PATCH 09/36] Stop profile log and write to file immediately after
recieve stop signal. Still cannot write while panic
---
cmd/cql-minerd/main.go | 1 +
1 file changed, 1 insertion(+)
diff --git a/cmd/cql-minerd/main.go b/cmd/cql-minerd/main.go
index 1dfbd5b34..cf41f7853 100644
--- a/cmd/cql-minerd/main.go
+++ b/cmd/cql-minerd/main.go
@@ -272,6 +272,7 @@ func main() {
//}
<-signalCh
+ utils.StopProfile()
log.Info("miner stopped")
}
From 0793fcabf12822144031af6ae5242e615eb57797 Mon Sep 17 00:00:00 2001
From: laodouya
Date: Tue, 4 Dec 2018 21:14:53 +0800
Subject: [PATCH 10/36] Calc GNTE bench result.
---
test/GNTE/run.sh | 19 ++++++++++++++++---
1 file changed, 16 insertions(+), 3 deletions(-)
diff --git a/test/GNTE/run.sh b/test/GNTE/run.sh
index 077be6711..2b7573d5c 100755
--- a/test/GNTE/run.sh
+++ b/test/GNTE/run.sh
@@ -20,6 +20,13 @@ BENCHRESULT_FILE=${PROJECT_DIR}/bench.log
if [ -f ${BENCHRESULT_FILE} ];then
rm -rf ${BENCHRESULT_FILE}
fi
+tmp_file=${PROJECT_DIR}/tmp.log
+if [ -f ${tmp_file} ];then
+ rm -rf ${tmp_file}
+fi
+
+# Clean submodule
+cd ${TEST_WD}/GNTE/ && git clean -dfx
for gnte_yaml in ${yaml[@]};
do
@@ -40,10 +47,16 @@ do
# Bench GNTE
cd ${PROJECT_DIR}/cmd/cql-minerd/
bash -x ./benchGNTE.sh
- echo "${gnte_yaml}" >> ${BENCHRESULT_FILE}
- grep BenchmarkMinerGNTE gnte.log >> ${BENCHRESULT_FILE}
- echo "" >> ${BENCHRESULT_FILE}
+ echo "${gnte_yaml}" >> ${tmp_file}
+ grep BenchmarkMinerGNTE gnte.log >> ${tmp_file}
+ echo "" >> ${tmp_file}
done
+
+# clean GNTE docker
+cd ${TEST_WD} && bash ./GNTE/scripts/cleanupDB.sh
+cd ${TEST_WD} && bash ./GNTE/scripts/clean.sh
+
+perl -lane 'print $F[0], "\t", 1000000000.0/$F[2] if $F[2]; print if /script/' ${tmp_file} > ${BENCHRESULT_FILE}
#cd ${TEST_WD}/GNTE && bash -x ./generate.sh stopall miner
#cd test/GNTE/GNTE/scripts/node_miner_10.250.100.3/
#cd data/randomid
From adc74cdbfe2148e76f4626a4de4fb538ecbb972e Mon Sep 17 00:00:00 2001
From: laodouya
Date: Tue, 4 Dec 2018 21:17:16 +0800
Subject: [PATCH 11/36] Disable go test race for jenkins.
---
build.sh | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/build.sh b/build.sh
index fc39ea309..70616579c 100755
--- a/build.sh
+++ b/build.sh
@@ -1,6 +1,8 @@
#!/bin/bash -x
set -e
+param=$1
+
branch=`git rev-parse --abbrev-ref HEAD`
commitid=`git rev-parse --short HEAD`
builddate=`date +%Y%m%d%H%M%S`
@@ -24,15 +26,16 @@ go build -ldflags "-X main.version=${version} ${GOLDFLAGS}" -o bin/cql-utils ${
cqld_pkgpath="github.com/CovenantSQL/CovenantSQL/cmd/cqld"
CGO_ENABLED=1 go build -ldflags "-X main.version=${version} -X github.com/CovenantSQL/CovenantSQL/conf.RoleTag=B ${GOLDFLAGS}" -tags "${platform} sqlite_omit_load_extension" -o bin/cqld ${cqld_pkgpath}
-CGO_ENABLED=1 go test -coverpkg github.com/CovenantSQL/CovenantSQL/... -cover -race -c -tags "${platform} sqlite_omit_load_extension testbinary" -ldflags "-X main.version=${version} -X github.com/CovenantSQL/CovenantSQL/conf.RoleTag=B ${GOLDFLAGS}" -o bin/cqld.test ${cqld_pkgpath}
+
+#CGO_ENABLED=1 go test -coverpkg github.com/CovenantSQL/CovenantSQL/... -cover -race -c -tags "${platform} sqlite_omit_load_extension testbinary" -ldflags "-X main.version=${version} -X github.com/CovenantSQL/CovenantSQL/conf.RoleTag=B ${GOLDFLAGS}" -o bin/cqld.test ${cqld_pkgpath}
cql_minerd_pkgpath="github.com/CovenantSQL/CovenantSQL/cmd/cql-minerd"
CGO_ENABLED=1 go build -ldflags "-X main.version=${version} -X github.com/CovenantSQL/CovenantSQL/conf.RoleTag=M ${GOLDFLAGS}" --tags ${platform}" sqlite_omit_load_extension" -o bin/cql-minerd ${cql_minerd_pkgpath}
-CGO_ENABLED=1 go test -coverpkg github.com/CovenantSQL/CovenantSQL/... -cover -race -c -tags "${platform} sqlite_omit_load_extension testbinary" -ldflags "-X main.version=${version} -X github.com/CovenantSQL/CovenantSQL/conf.RoleTag=M ${GOLDFLAGS}" -o bin/cql-minerd.test ${cql_minerd_pkgpath}
+#CGO_ENABLED=1 go test -coverpkg github.com/CovenantSQL/CovenantSQL/... -cover -race -c -tags "${platform} sqlite_omit_load_extension testbinary" -ldflags "-X main.version=${version} -X github.com/CovenantSQL/CovenantSQL/conf.RoleTag=M ${GOLDFLAGS}" -o bin/cql-minerd.test ${cql_minerd_pkgpath}
cql_observer_pkgpath="github.com/CovenantSQL/CovenantSQL/cmd/cql-observer"
go build -ldflags "-X main.version=${version} -X github.com/CovenantSQL/CovenantSQL/conf.RoleTag=C ${GOLDFLAGS}" -o bin/cql-observer ${cql_observer_pkgpath}
-go test -coverpkg github.com/CovenantSQL/CovenantSQL/... -cover -race -c -tags 'testbinary' -ldflags "-X main.version=${version} -X github.com/CovenantSQL/CovenantSQL/conf.RoleTag=C ${GOLDFLAGS}" -o bin/cql-observer.test ${cql_observer_pkgpath}
+#go test -coverpkg github.com/CovenantSQL/CovenantSQL/... -cover -race -c -tags 'testbinary' -ldflags "-X main.version=${version} -X github.com/CovenantSQL/CovenantSQL/conf.RoleTag=C ${GOLDFLAGS}" -o bin/cql-observer.test ${cql_observer_pkgpath}
cli_pkgpath="github.com/CovenantSQL/CovenantSQL/cmd/cql"
CGO_ENABLED=1 go build -ldflags "-X main.version=${version} -X github.com/CovenantSQL/CovenantSQL/conf.RoleTag=C ${GOLDFLAGS}" --tags ${platform}" sqlite_omit_load_extension" -o bin/cql ${cli_pkgpath}
From 5dc2c2cf31fd41886b57dab38520a00470af98c6 Mon Sep 17 00:00:00 2001
From: laodouya
Date: Tue, 4 Dec 2018 21:31:55 +0800
Subject: [PATCH 12/36] Update GNTE submodule.
---
test/GNTE/GNTE | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/test/GNTE/GNTE b/test/GNTE/GNTE
index 93e48d707..d34ad0da6 160000
--- a/test/GNTE/GNTE
+++ b/test/GNTE/GNTE
@@ -1 +1 @@
-Subproject commit 93e48d7072b002c3d070f9b712ff22b53c65c6b3
+Subproject commit d34ad0da6cf6fb07065da2fb8e050366adb58123
From c251aac08b47f6e70686d10d88ba9827e4c6bd55 Mon Sep 17 00:00:00 2001
From: laodouya
Date: Wed, 5 Dec 2018 10:59:04 +0800
Subject: [PATCH 13/36] Revert "Disable go test race for jenkins."
This reverts commit e1b09818f653e5676e713e824d00718145245138.
---
build.sh | 9 +++------
1 file changed, 3 insertions(+), 6 deletions(-)
diff --git a/build.sh b/build.sh
index 70616579c..fc39ea309 100755
--- a/build.sh
+++ b/build.sh
@@ -1,8 +1,6 @@
#!/bin/bash -x
set -e
-param=$1
-
branch=`git rev-parse --abbrev-ref HEAD`
commitid=`git rev-parse --short HEAD`
builddate=`date +%Y%m%d%H%M%S`
@@ -26,16 +24,15 @@ go build -ldflags "-X main.version=${version} ${GOLDFLAGS}" -o bin/cql-utils ${
cqld_pkgpath="github.com/CovenantSQL/CovenantSQL/cmd/cqld"
CGO_ENABLED=1 go build -ldflags "-X main.version=${version} -X github.com/CovenantSQL/CovenantSQL/conf.RoleTag=B ${GOLDFLAGS}" -tags "${platform} sqlite_omit_load_extension" -o bin/cqld ${cqld_pkgpath}
-
-#CGO_ENABLED=1 go test -coverpkg github.com/CovenantSQL/CovenantSQL/... -cover -race -c -tags "${platform} sqlite_omit_load_extension testbinary" -ldflags "-X main.version=${version} -X github.com/CovenantSQL/CovenantSQL/conf.RoleTag=B ${GOLDFLAGS}" -o bin/cqld.test ${cqld_pkgpath}
+CGO_ENABLED=1 go test -coverpkg github.com/CovenantSQL/CovenantSQL/... -cover -race -c -tags "${platform} sqlite_omit_load_extension testbinary" -ldflags "-X main.version=${version} -X github.com/CovenantSQL/CovenantSQL/conf.RoleTag=B ${GOLDFLAGS}" -o bin/cqld.test ${cqld_pkgpath}
cql_minerd_pkgpath="github.com/CovenantSQL/CovenantSQL/cmd/cql-minerd"
CGO_ENABLED=1 go build -ldflags "-X main.version=${version} -X github.com/CovenantSQL/CovenantSQL/conf.RoleTag=M ${GOLDFLAGS}" --tags ${platform}" sqlite_omit_load_extension" -o bin/cql-minerd ${cql_minerd_pkgpath}
-#CGO_ENABLED=1 go test -coverpkg github.com/CovenantSQL/CovenantSQL/... -cover -race -c -tags "${platform} sqlite_omit_load_extension testbinary" -ldflags "-X main.version=${version} -X github.com/CovenantSQL/CovenantSQL/conf.RoleTag=M ${GOLDFLAGS}" -o bin/cql-minerd.test ${cql_minerd_pkgpath}
+CGO_ENABLED=1 go test -coverpkg github.com/CovenantSQL/CovenantSQL/... -cover -race -c -tags "${platform} sqlite_omit_load_extension testbinary" -ldflags "-X main.version=${version} -X github.com/CovenantSQL/CovenantSQL/conf.RoleTag=M ${GOLDFLAGS}" -o bin/cql-minerd.test ${cql_minerd_pkgpath}
cql_observer_pkgpath="github.com/CovenantSQL/CovenantSQL/cmd/cql-observer"
go build -ldflags "-X main.version=${version} -X github.com/CovenantSQL/CovenantSQL/conf.RoleTag=C ${GOLDFLAGS}" -o bin/cql-observer ${cql_observer_pkgpath}
-#go test -coverpkg github.com/CovenantSQL/CovenantSQL/... -cover -race -c -tags 'testbinary' -ldflags "-X main.version=${version} -X github.com/CovenantSQL/CovenantSQL/conf.RoleTag=C ${GOLDFLAGS}" -o bin/cql-observer.test ${cql_observer_pkgpath}
+go test -coverpkg github.com/CovenantSQL/CovenantSQL/... -cover -race -c -tags 'testbinary' -ldflags "-X main.version=${version} -X github.com/CovenantSQL/CovenantSQL/conf.RoleTag=C ${GOLDFLAGS}" -o bin/cql-observer.test ${cql_observer_pkgpath}
cli_pkgpath="github.com/CovenantSQL/CovenantSQL/cmd/cql"
CGO_ENABLED=1 go build -ldflags "-X main.version=${version} -X github.com/CovenantSQL/CovenantSQL/conf.RoleTag=C ${GOLDFLAGS}" --tags ${platform}" sqlite_omit_load_extension" -o bin/cql ${cli_pkgpath}
From 3633ead815c9c8313e3dfd1b96ae9fa1e6a42f6f Mon Sep 17 00:00:00 2001
From: laodouya
Date: Wed, 5 Dec 2018 11:34:15 +0800
Subject: [PATCH 14/36] Rename bench.log to bench.txt for read in email client
---
test/GNTE/run.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/test/GNTE/run.sh b/test/GNTE/run.sh
index 2b7573d5c..c01cc10f6 100755
--- a/test/GNTE/run.sh
+++ b/test/GNTE/run.sh
@@ -16,7 +16,7 @@ echo ${PROJECT_DIR}
#Notice!!!!: uncomment this when you run this manually.
#cd ${PROJECT_DIR} && ./build.sh
-BENCHRESULT_FILE=${PROJECT_DIR}/bench.log
+BENCHRESULT_FILE=${PROJECT_DIR}/bench.txt
if [ -f ${BENCHRESULT_FILE} ];then
rm -rf ${BENCHRESULT_FILE}
fi
From d5eea385947dc10685872498ed6e21f6b366b7ae Mon Sep 17 00:00:00 2001
From: laodouya
Date: Wed, 5 Dec 2018 11:36:04 +0800
Subject: [PATCH 15/36] Reduce bench case count for test only. NEED REVERT!
---
cmd/cql-minerd/benchGNTE.sh | 38 ++++++++++++++++++-------------------
test/GNTE/run.sh | 8 ++++----
2 files changed, 23 insertions(+), 23 deletions(-)
diff --git a/cmd/cql-minerd/benchGNTE.sh b/cmd/cql-minerd/benchGNTE.sh
index 03bd8e2b5..4209653fc 100755
--- a/cmd/cql-minerd/benchGNTE.sh
+++ b/cmd/cql-minerd/benchGNTE.sh
@@ -2,25 +2,25 @@
#../../build.sh && \
go test -bench=^BenchmarkMinerGNTE1$ -benchtime=10s -run ^$ |tee gnte.log
-go test -bench=^BenchmarkMinerGNTE2$ -benchtime=10s -run ^$ |tee -a gnte.log
-go test -bench=^BenchmarkMinerGNTE3$ -benchtime=10s -run ^$ |tee -a gnte.log
-go test -bench=^BenchmarkMinerGNTE4$ -benchtime=10s -run ^$ |tee -a gnte.log
-go test -bench=^BenchmarkMinerGNTE8$ -benchtime=10s -run ^$ |tee -a gnte.log
+#go test -bench=^BenchmarkMinerGNTE2$ -benchtime=10s -run ^$ |tee -a gnte.log
+#go test -bench=^BenchmarkMinerGNTE3$ -benchtime=10s -run ^$ |tee -a gnte.log
+#go test -bench=^BenchmarkMinerGNTE4$ -benchtime=10s -run ^$ |tee -a gnte.log
+#go test -bench=^BenchmarkMinerGNTE8$ -benchtime=10s -run ^$ |tee -a gnte.log
-go test -cpu=4 -bench=^BenchmarkMinerGNTE1$ -benchtime=10s -run ^$ |tee -a gnte.log
-go test -cpu=4 -bench=^BenchmarkMinerGNTE2$ -benchtime=10s -run ^$ |tee -a gnte.log
-go test -cpu=4 -bench=^BenchmarkMinerGNTE3$ -benchtime=10s -run ^$ |tee -a gnte.log
-go test -cpu=4 -bench=^BenchmarkMinerGNTE4$ -benchtime=10s -run ^$ |tee -a gnte.log
-go test -cpu=4 -bench=^BenchmarkMinerGNTE8$ -benchtime=10s -run ^$ |tee -a gnte.log
+#go test -cpu=4 -bench=^BenchmarkMinerGNTE1$ -benchtime=10s -run ^$ |tee -a gnte.log
+#go test -cpu=4 -bench=^BenchmarkMinerGNTE2$ -benchtime=10s -run ^$ |tee -a gnte.log
+#go test -cpu=4 -bench=^BenchmarkMinerGNTE3$ -benchtime=10s -run ^$ |tee -a gnte.log
+#go test -cpu=4 -bench=^BenchmarkMinerGNTE4$ -benchtime=10s -run ^$ |tee -a gnte.log
+#go test -cpu=4 -bench=^BenchmarkMinerGNTE8$ -benchtime=10s -run ^$ |tee -a gnte.log
-go test -cpu=2 -bench=^BenchmarkMinerGNTE1$ -benchtime=10s -run ^$ |tee -a gnte.log
-go test -cpu=2 -bench=^BenchmarkMinerGNTE2$ -benchtime=10s -run ^$ |tee -a gnte.log
-go test -cpu=2 -bench=^BenchmarkMinerGNTE3$ -benchtime=10s -run ^$ |tee -a gnte.log
-go test -cpu=2 -bench=^BenchmarkMinerGNTE4$ -benchtime=10s -run ^$ |tee -a gnte.log
-go test -cpu=2 -bench=^BenchmarkMinerGNTE8$ -benchtime=10s -run ^$ |tee -a gnte.log
+#go test -cpu=2 -bench=^BenchmarkMinerGNTE1$ -benchtime=10s -run ^$ |tee -a gnte.log
+#go test -cpu=2 -bench=^BenchmarkMinerGNTE2$ -benchtime=10s -run ^$ |tee -a gnte.log
+#go test -cpu=2 -bench=^BenchmarkMinerGNTE3$ -benchtime=10s -run ^$ |tee -a gnte.log
+#go test -cpu=2 -bench=^BenchmarkMinerGNTE4$ -benchtime=10s -run ^$ |tee -a gnte.log
+#go test -cpu=2 -bench=^BenchmarkMinerGNTE8$ -benchtime=10s -run ^$ |tee -a gnte.log
-go test -cpu=1 -bench=^BenchmarkMinerGNTE1$ -benchtime=10s -run ^$ |tee -a gnte.log
-go test -cpu=1 -bench=^BenchmarkMinerGNTE2$ -benchtime=10s -run ^$ |tee -a gnte.log
-go test -cpu=1 -bench=^BenchmarkMinerGNTE3$ -benchtime=10s -run ^$ |tee -a gnte.log
-go test -cpu=1 -bench=^BenchmarkMinerGNTE4$ -benchtime=10s -run ^$ |tee -a gnte.log
-go test -cpu=1 -bench=^BenchmarkMinerGNTE8$ -benchtime=10s -run ^$ |tee -a gnte.log
+#go test -cpu=1 -bench=^BenchmarkMinerGNTE1$ -benchtime=10s -run ^$ |tee -a gnte.log
+#go test -cpu=1 -bench=^BenchmarkMinerGNTE2$ -benchtime=10s -run ^$ |tee -a gnte.log
+#go test -cpu=1 -bench=^BenchmarkMinerGNTE3$ -benchtime=10s -run ^$ |tee -a gnte.log
+#go test -cpu=1 -bench=^BenchmarkMinerGNTE4$ -benchtime=10s -run ^$ |tee -a gnte.log
+#go test -cpu=1 -bench=^BenchmarkMinerGNTE8$ -benchtime=10s -run ^$ |tee -a gnte.log
diff --git a/test/GNTE/run.sh b/test/GNTE/run.sh
index c01cc10f6..98c5333ab 100755
--- a/test/GNTE/run.sh
+++ b/test/GNTE/run.sh
@@ -1,10 +1,10 @@
#!/bin/bash -x
yaml[0]=./scripts/gnte_0ms.yaml
-yaml[1]=./scripts/gnte_5ms.yaml
-yaml[2]=./scripts/gnte_20ms.yaml
-yaml[3]=./scripts/gnte_100ms.yaml
-yaml[4]=./scripts/gnte_200ms.yaml
+#yaml[1]=./scripts/gnte_5ms.yaml
+#yaml[2]=./scripts/gnte_20ms.yaml
+#yaml[3]=./scripts/gnte_100ms.yaml
+#yaml[4]=./scripts/gnte_200ms.yaml
TEST_WD=$(cd $(dirname $0)/; pwd)
From dfeb50072e1552547addb43f181f1b3957c92fbe Mon Sep 17 00:00:00 2001
From: laodouya
Date: Wed, 5 Dec 2018 12:50:46 +0800
Subject: [PATCH 16/36] Add GNTE bench count and op time in bench result
column.
---
test/GNTE/run.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/test/GNTE/run.sh b/test/GNTE/run.sh
index 98c5333ab..36f40e63d 100755
--- a/test/GNTE/run.sh
+++ b/test/GNTE/run.sh
@@ -56,7 +56,7 @@ done
cd ${TEST_WD} && bash ./GNTE/scripts/cleanupDB.sh
cd ${TEST_WD} && bash ./GNTE/scripts/clean.sh
-perl -lane 'print $F[0], "\t", 1000000000.0/$F[2] if $F[2]; print if /script/' ${tmp_file} > ${BENCHRESULT_FILE}
+perl -lane 'print $F[0], "\t", $F[1], "\t", $F[2], "\t", 1000000000.0/$F[2] if $F[2]; print if /script/' ${tmp_file} > ${BENCHRESULT_FILE}
#cd ${TEST_WD}/GNTE && bash -x ./generate.sh stopall miner
#cd test/GNTE/GNTE/scripts/node_miner_10.250.100.3/
#cd data/randomid
From 6b2f1a3a939b7be0423c15cf2f0a4d2bbb9bc751 Mon Sep 17 00:00:00 2001
From: laodouya
Date: Wed, 5 Dec 2018 13:37:09 +0800
Subject: [PATCH 17/36] Revert "Reduce bench case count for test only. NEED
REVERT!"
This reverts commit c8de97a4b9ae05b8c2a2ae856e0b76384a0969e3.
---
cmd/cql-minerd/benchGNTE.sh | 38 ++++++++++++++++++-------------------
test/GNTE/run.sh | 8 ++++----
2 files changed, 23 insertions(+), 23 deletions(-)
diff --git a/cmd/cql-minerd/benchGNTE.sh b/cmd/cql-minerd/benchGNTE.sh
index 4209653fc..03bd8e2b5 100755
--- a/cmd/cql-minerd/benchGNTE.sh
+++ b/cmd/cql-minerd/benchGNTE.sh
@@ -2,25 +2,25 @@
#../../build.sh && \
go test -bench=^BenchmarkMinerGNTE1$ -benchtime=10s -run ^$ |tee gnte.log
-#go test -bench=^BenchmarkMinerGNTE2$ -benchtime=10s -run ^$ |tee -a gnte.log
-#go test -bench=^BenchmarkMinerGNTE3$ -benchtime=10s -run ^$ |tee -a gnte.log
-#go test -bench=^BenchmarkMinerGNTE4$ -benchtime=10s -run ^$ |tee -a gnte.log
-#go test -bench=^BenchmarkMinerGNTE8$ -benchtime=10s -run ^$ |tee -a gnte.log
+go test -bench=^BenchmarkMinerGNTE2$ -benchtime=10s -run ^$ |tee -a gnte.log
+go test -bench=^BenchmarkMinerGNTE3$ -benchtime=10s -run ^$ |tee -a gnte.log
+go test -bench=^BenchmarkMinerGNTE4$ -benchtime=10s -run ^$ |tee -a gnte.log
+go test -bench=^BenchmarkMinerGNTE8$ -benchtime=10s -run ^$ |tee -a gnte.log
-#go test -cpu=4 -bench=^BenchmarkMinerGNTE1$ -benchtime=10s -run ^$ |tee -a gnte.log
-#go test -cpu=4 -bench=^BenchmarkMinerGNTE2$ -benchtime=10s -run ^$ |tee -a gnte.log
-#go test -cpu=4 -bench=^BenchmarkMinerGNTE3$ -benchtime=10s -run ^$ |tee -a gnte.log
-#go test -cpu=4 -bench=^BenchmarkMinerGNTE4$ -benchtime=10s -run ^$ |tee -a gnte.log
-#go test -cpu=4 -bench=^BenchmarkMinerGNTE8$ -benchtime=10s -run ^$ |tee -a gnte.log
+go test -cpu=4 -bench=^BenchmarkMinerGNTE1$ -benchtime=10s -run ^$ |tee -a gnte.log
+go test -cpu=4 -bench=^BenchmarkMinerGNTE2$ -benchtime=10s -run ^$ |tee -a gnte.log
+go test -cpu=4 -bench=^BenchmarkMinerGNTE3$ -benchtime=10s -run ^$ |tee -a gnte.log
+go test -cpu=4 -bench=^BenchmarkMinerGNTE4$ -benchtime=10s -run ^$ |tee -a gnte.log
+go test -cpu=4 -bench=^BenchmarkMinerGNTE8$ -benchtime=10s -run ^$ |tee -a gnte.log
-#go test -cpu=2 -bench=^BenchmarkMinerGNTE1$ -benchtime=10s -run ^$ |tee -a gnte.log
-#go test -cpu=2 -bench=^BenchmarkMinerGNTE2$ -benchtime=10s -run ^$ |tee -a gnte.log
-#go test -cpu=2 -bench=^BenchmarkMinerGNTE3$ -benchtime=10s -run ^$ |tee -a gnte.log
-#go test -cpu=2 -bench=^BenchmarkMinerGNTE4$ -benchtime=10s -run ^$ |tee -a gnte.log
-#go test -cpu=2 -bench=^BenchmarkMinerGNTE8$ -benchtime=10s -run ^$ |tee -a gnte.log
+go test -cpu=2 -bench=^BenchmarkMinerGNTE1$ -benchtime=10s -run ^$ |tee -a gnte.log
+go test -cpu=2 -bench=^BenchmarkMinerGNTE2$ -benchtime=10s -run ^$ |tee -a gnte.log
+go test -cpu=2 -bench=^BenchmarkMinerGNTE3$ -benchtime=10s -run ^$ |tee -a gnte.log
+go test -cpu=2 -bench=^BenchmarkMinerGNTE4$ -benchtime=10s -run ^$ |tee -a gnte.log
+go test -cpu=2 -bench=^BenchmarkMinerGNTE8$ -benchtime=10s -run ^$ |tee -a gnte.log
-#go test -cpu=1 -bench=^BenchmarkMinerGNTE1$ -benchtime=10s -run ^$ |tee -a gnte.log
-#go test -cpu=1 -bench=^BenchmarkMinerGNTE2$ -benchtime=10s -run ^$ |tee -a gnte.log
-#go test -cpu=1 -bench=^BenchmarkMinerGNTE3$ -benchtime=10s -run ^$ |tee -a gnte.log
-#go test -cpu=1 -bench=^BenchmarkMinerGNTE4$ -benchtime=10s -run ^$ |tee -a gnte.log
-#go test -cpu=1 -bench=^BenchmarkMinerGNTE8$ -benchtime=10s -run ^$ |tee -a gnte.log
+go test -cpu=1 -bench=^BenchmarkMinerGNTE1$ -benchtime=10s -run ^$ |tee -a gnte.log
+go test -cpu=1 -bench=^BenchmarkMinerGNTE2$ -benchtime=10s -run ^$ |tee -a gnte.log
+go test -cpu=1 -bench=^BenchmarkMinerGNTE3$ -benchtime=10s -run ^$ |tee -a gnte.log
+go test -cpu=1 -bench=^BenchmarkMinerGNTE4$ -benchtime=10s -run ^$ |tee -a gnte.log
+go test -cpu=1 -bench=^BenchmarkMinerGNTE8$ -benchtime=10s -run ^$ |tee -a gnte.log
diff --git a/test/GNTE/run.sh b/test/GNTE/run.sh
index 36f40e63d..69ca7800a 100755
--- a/test/GNTE/run.sh
+++ b/test/GNTE/run.sh
@@ -1,10 +1,10 @@
#!/bin/bash -x
yaml[0]=./scripts/gnte_0ms.yaml
-#yaml[1]=./scripts/gnte_5ms.yaml
-#yaml[2]=./scripts/gnte_20ms.yaml
-#yaml[3]=./scripts/gnte_100ms.yaml
-#yaml[4]=./scripts/gnte_200ms.yaml
+yaml[1]=./scripts/gnte_5ms.yaml
+yaml[2]=./scripts/gnte_20ms.yaml
+yaml[3]=./scripts/gnte_100ms.yaml
+yaml[4]=./scripts/gnte_200ms.yaml
TEST_WD=$(cd $(dirname $0)/; pwd)
From e35728d559df8b59ae628082490f44fc192bf682 Mon Sep 17 00:00:00 2001
From: leventeliu
Date: Wed, 5 Dec 2018 18:00:28 +0800
Subject: [PATCH 18/36] Return background context if not set
---
proto/proto.go | 3 +++
proto/proto_test.go | 7 +++++++
2 files changed, 10 insertions(+)
diff --git a/proto/proto.go b/proto/proto.go
index 936536449..1e04c2999 100644
--- a/proto/proto.go
+++ b/proto/proto.go
@@ -126,6 +126,9 @@ func (e *Envelope) GetNodeID() *RawNodeID {
// GetContext returns context from envelop which is set in server Accept
func (e *Envelope) GetContext() context.Context {
+ if e._ctx == nil {
+ return context.Background()
+ }
return e._ctx
}
diff --git a/proto/proto_test.go b/proto/proto_test.go
index 82428d995..50db0d90e 100644
--- a/proto/proto_test.go
+++ b/proto/proto_test.go
@@ -17,6 +17,7 @@
package proto
import (
+ "context"
"testing"
"time"
@@ -41,5 +42,11 @@ func TestEnvelope_GetSet(t *testing.T) {
env.SetVersion("0.0.1")
So(env.GetVersion(), ShouldEqual, "0.0.1")
+
+ ctx := env.GetContext()
+ So(ctx, ShouldEqual, context.Background())
+ cldCtx, _ := context.WithCancel(ctx)
+ env.SetContext(cldCtx)
+ So(env.GetContext(), ShouldEqual, cldCtx)
})
}
From e6c54494691c756c36deef9737f30dbb4af2c085 Mon Sep 17 00:00:00 2001
From: laodouya
Date: Fri, 7 Dec 2018 11:58:30 +0800
Subject: [PATCH 19/36] Remove extra defer.StopProfile()
Remove extra defer.StopProfile()
---
cmd/cql-minerd/main.go | 1 -
1 file changed, 1 deletion(-)
diff --git a/cmd/cql-minerd/main.go b/cmd/cql-minerd/main.go
index cf41f7853..ed6c3abb5 100644
--- a/cmd/cql-minerd/main.go
+++ b/cmd/cql-minerd/main.go
@@ -158,7 +158,6 @@ func main() {
// init profile, if cpuProfile, memProfile length is 0, nothing will be done
utils.StartProfile(cpuProfile, memProfile)
- defer utils.StopProfile()
// set generate key pair config
conf.GConf.GenerateKeyPair = genKeyPair
From ea5bf559c2cc2fb73a0e0dfd98eba5514d664947 Mon Sep 17 00:00:00 2001
From: auxten
Date: Fri, 7 Dec 2018 12:03:34 +0800
Subject: [PATCH 20/36] Move context to the first arg
---
rpc/codec.go | 2 +-
rpc/server.go | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/rpc/codec.go b/rpc/codec.go
index 3d5a58f06..98f38ce33 100644
--- a/rpc/codec.go
+++ b/rpc/codec.go
@@ -31,7 +31,7 @@ type NodeAwareServerCodec struct {
}
// NewNodeAwareServerCodec returns new NodeAwareServerCodec with normal rpc.ServerCode and proto.RawNodeID
-func NewNodeAwareServerCodec(codec rpc.ServerCodec, nodeID *proto.RawNodeID, ctx context.Context) *NodeAwareServerCodec {
+func NewNodeAwareServerCodec(ctx context.Context, codec rpc.ServerCodec, nodeID *proto.RawNodeID) *NodeAwareServerCodec {
return &NodeAwareServerCodec{
ServerCodec: codec,
NodeID: nodeID,
diff --git a/rpc/server.go b/rpc/server.go
index a81add856..3a56db669 100644
--- a/rpc/server.go
+++ b/rpc/server.go
@@ -155,7 +155,7 @@ sessionLoop:
<-muxConn.GetDieCh()
cancelFunc()
}()
- nodeAwareCodec := NewNodeAwareServerCodec(utils.GetMsgPackServerCodec(muxConn), remoteNodeID, ctx)
+ nodeAwareCodec := NewNodeAwareServerCodec(ctx, utils.GetMsgPackServerCodec(muxConn), remoteNodeID)
go s.rpcServer.ServeCodec(nodeAwareCodec)
}
}
From ca80080b35e4e004505f347cdae5c2c4c59eddbf Mon Sep 17 00:00:00 2001
From: auxten
Date: Fri, 7 Dec 2018 11:56:24 +0800
Subject: [PATCH 21/36] Mock query context for db_test.go
---
worker/db_test.go | 2 ++
1 file changed, 2 insertions(+)
diff --git a/worker/db_test.go b/worker/db_test.go
index 36561d5bc..e1689cb0e 100644
--- a/worker/db_test.go
+++ b/worker/db_test.go
@@ -18,6 +18,7 @@ package worker
import (
"bytes"
+ "context"
"fmt"
"io/ioutil"
"math/rand"
@@ -631,6 +632,7 @@ func buildQueryEx(queryType types.QueryType, connID uint64, seqNo uint64, timeSh
Queries: realQueries,
},
}
+ query.SetContext(context.Background())
err = query.Sign(privateKey)
From 1a85ba06967089d50afd7c1bfdbf0f248687ef55 Mon Sep 17 00:00:00 2001
From: auxten
Date: Fri, 7 Dec 2018 17:46:31 +0800
Subject: [PATCH 22/36] Add test for query cancel, tobe debuged
---
cmd/cql-minerd/integration_test.go | 47 ++++++++++++++++++++++++++++--
1 file changed, 44 insertions(+), 3 deletions(-)
diff --git a/cmd/cql-minerd/integration_test.go b/cmd/cql-minerd/integration_test.go
index bd6237d67..e5314fd2b 100644
--- a/cmd/cql-minerd/integration_test.go
+++ b/cmd/cql-minerd/integration_test.go
@@ -35,7 +35,10 @@ import (
"time"
"github.com/CovenantSQL/CovenantSQL/client"
+ "github.com/CovenantSQL/CovenantSQL/conf"
"github.com/CovenantSQL/CovenantSQL/crypto/asymmetric"
+ "github.com/CovenantSQL/CovenantSQL/proto"
+ "github.com/CovenantSQL/CovenantSQL/rpc"
"github.com/CovenantSQL/CovenantSQL/utils"
"github.com/CovenantSQL/CovenantSQL/utils/log"
"github.com/CovenantSQL/go-sqlite3-encrypt"
@@ -316,7 +319,7 @@ func stopNodes() {
func TestFullProcess(t *testing.T) {
log.SetLevel(log.DebugLevel)
- Convey("test full process", t, func() {
+ Convey("test full process", t, func(c C) {
startNodes()
defer stopNodes()
var err error
@@ -384,11 +387,49 @@ func TestFullProcess(t *testing.T) {
So(err, ShouldBeNil)
So(resultBytes, ShouldResemble, []byte("ha\001ppy"))
+ Convey("test query cancel", func(c C) {
+ wg := sync.WaitGroup{}
+ wg.Add(1)
+ go func() {
+ // sleep 10s
+ _, er := db.Exec("INSERT INTO test VALUES(sleep(10000000000))")
+ if er != nil {
+ log.Errorf("insert sleep: %v", er)
+ }
+ wg.Done()
+ }()
+ time.Sleep(time.Second)
+ go func() {
+ db.Exec("UPDATE test SET test = 100;")
+ }()
+ time.Sleep(time.Second)
+ for _, n := range conf.GConf.KnownNodes {
+ if n.Role == proto.Miner {
+ rpc.GetSessionPoolInstance().Remove(n.ID)
+ }
+ }
+ time.Sleep(time.Second)
+
+ row := db.QueryRow("SELECT * FROM test WHERE test = 4 LIMIT 1")
+ var result int
+ err = row.Scan(&result)
+ c.So(err, ShouldBeNil)
+ c.So(result, ShouldEqual, 4)
+ wg.Wait()
+ time.Sleep(10 * time.Second)
+ row = db.QueryRow("SELECT * FROM test WHERE test = 10000000000 LIMIT 1")
+ err = row.Scan(&result)
+ c.So(err, ShouldBeNil)
+ c.So(result, ShouldEqual, 4)
+
+ c.So(err, ShouldBeNil)
+ })
+
err = db.Close()
So(err, ShouldBeNil)
- err = client.Drop(dsn)
- So(err, ShouldBeNil)
+ //err = client.Drop(dsn)
+ //So(err, ShouldBeNil)
})
}
From f112e3fa4c33dd4e1c8188df45124840ec513e6d Mon Sep 17 00:00:00 2001
From: auxten
Date: Fri, 7 Dec 2018 17:47:12 +0800
Subject: [PATCH 23/36] Fix xenomint race
---
xenomint/sqlite/sqlite.go | 21 ++++++++++++++++++++-
xenomint/state.go | 14 +++++++-------
2 files changed, 27 insertions(+), 8 deletions(-)
diff --git a/xenomint/sqlite/sqlite.go b/xenomint/sqlite/sqlite.go
index 0ea8bf846..0c2780250 100644
--- a/xenomint/sqlite/sqlite.go
+++ b/xenomint/sqlite/sqlite.go
@@ -18,22 +18,41 @@ package sqlite
import (
"database/sql"
+ "time"
"github.com/CovenantSQL/CovenantSQL/storage"
+ "github.com/CovenantSQL/CovenantSQL/utils/log"
"github.com/CovenantSQL/go-sqlite3-encrypt"
)
const (
- serializableDriver = "sqlite3"
+ serializableDriver = "sqlite3-custom"
dirtyReadDriver = "sqlite3-dirty-reader"
)
func init() {
+ sleepFunc := func(t int64) int64 {
+ log.Info("sqlite func sleep start")
+ time.Sleep(time.Duration(t))
+ log.Info("sqlite func sleep end")
+ return t
+ }
sql.Register(dirtyReadDriver, &sqlite3.SQLiteDriver{
ConnectHook: func(c *sqlite3.SQLiteConn) (err error) {
if _, err = c.Exec("PRAGMA read_uncommitted=1", nil); err != nil {
return
}
+ if err = c.RegisterFunc("sleep", sleepFunc, true); err != nil {
+ return
+ }
+ return
+ },
+ })
+ sql.Register(serializableDriver, &sqlite3.SQLiteDriver{
+ ConnectHook: func(c *sqlite3.SQLiteConn) (err error) {
+ if err = c.RegisterFunc("sleep", sleepFunc, true); err != nil {
+ return
+ }
return
},
})
diff --git a/xenomint/state.go b/xenomint/state.go
index 73cf0a7a7..05834e9e4 100644
--- a/xenomint/state.go
+++ b/xenomint/state.go
@@ -68,20 +68,21 @@ func NewState(nodeID proto.NodeID, strg xi.Storage) (s *State, err error) {
}
func (s *State) incSeq() {
- s.current++
+ atomic.AddUint64(&s.current, 1)
}
func (s *State) setNextTxID() {
- s.origin = s.current
- s.cmpoint = s.current
+ current := s.getID()
+ s.origin = current
+ s.cmpoint = current
}
func (s *State) setCommitPoint() {
- s.cmpoint = s.current
+ s.cmpoint = s.getID()
}
func (s *State) rollbackID(id uint64) {
- s.current = id
+ atomic.StoreUint64(&s.current, id)
}
// InitTx sets the initial id of the current transaction. This method is not safe for concurrency
@@ -89,7 +90,7 @@ func (s *State) rollbackID(id uint64) {
func (s *State) InitTx(id uint64) {
s.origin = id
s.cmpoint = id
- s.current = id
+ s.rollbackID(id)
s.setSavepoint()
}
@@ -605,7 +606,6 @@ func (s *State) rollback() (err error) {
s.Lock()
defer s.Unlock()
s.rollbackTo(s.cmpoint)
- s.current = s.cmpoint
return
}
From 1f719fd4bc0b1ac591ca7ee59eeda82ee7e32425 Mon Sep 17 00:00:00 2001
From: Ggicci
Date: Fri, 7 Dec 2018 19:06:56 +0800
Subject: [PATCH 24/36] Support using follower peers to do queries
---
client/config.go | 21 +++++-
client/config_test.go | 46 ++++++++++---
client/conn.go | 154 +++++++++++++++++++++++++++++-------------
3 files changed, 164 insertions(+), 57 deletions(-)
diff --git a/client/config.go b/client/config.go
index 9f18a6861..6c8ea9736 100644
--- a/client/config.go
+++ b/client/config.go
@@ -18,6 +18,7 @@ package client
import (
"net/url"
+ "strconv"
"strings"
)
@@ -28,6 +29,12 @@ type Config struct {
// additional configs should be filled
// such as read/write/exec timeout
// currently no timeout is supported.
+
+ // UseLeader use leader nodes to do queries
+ UseLeader bool
+
+ // UseFollower use follower nodes to do queries
+ UseFollower bool
}
// NewConfig creates a new config with default value.
@@ -45,6 +52,8 @@ func (cfg *Config) FormatDSN() string {
}
newQuery := u.Query()
+ newQuery.Add("use_leader", strconv.FormatBool(cfg.UseLeader))
+ newQuery.Add("use_follower", strconv.FormatBool(cfg.UseFollower))
u.RawQuery = newQuery.Encode()
return u.String()
@@ -58,11 +67,19 @@ func ParseDSN(dsn string) (cfg *Config, err error) {
var u *url.URL
if u, err = url.Parse(dsn); err != nil {
- return
+ return nil, err
}
cfg = NewConfig()
cfg.DatabaseID = u.Host
- return
+ q := u.Query()
+ // option: use_leader, use_follower
+ cfg.UseLeader, _ = strconv.ParseBool(q.Get("use_leader"))
+ cfg.UseFollower, _ = strconv.ParseBool(q.Get("use_follower"))
+ if !cfg.UseLeader && !cfg.UseFollower {
+ cfg.UseLeader = true
+ }
+
+ return cfg, nil
}
diff --git a/client/config_test.go b/client/config_test.go
index f7a3d501b..cbfb7a60d 100644
--- a/client/config_test.go
+++ b/client/config_test.go
@@ -19,28 +19,56 @@ package client
import (
"testing"
- "github.com/CovenantSQL/CovenantSQL/proto"
. "github.com/smartystreets/goconvey/convey"
)
func TestConfig(t *testing.T) {
- Convey("test config", t, func() {
- var cfg *Config
- var err error
+ Convey("test config without additional options", t, func() {
+ cfg, err := ParseDSN("covenantsql://db")
+ So(err, ShouldBeNil)
+ So(cfg, ShouldResemble, &Config{
+ DatabaseID: "db",
+ UseLeader: true,
+ UseFollower: false,
+ })
- cfg, err = ParseDSN("covenantsql://db")
+ recoveredCfg, err := ParseDSN(cfg.FormatDSN())
So(err, ShouldBeNil)
- So(cfg.DatabaseID, ShouldEqual, proto.DatabaseID("db"))
- So(cfg.FormatDSN(), ShouldEqual, "covenantsql://db")
+ So(cfg, ShouldResemble, recoveredCfg)
})
+
Convey("test invalid config", t, func() {
- _, err := ParseDSN("invalid dsn")
+ cfg, err := ParseDSN("invalid dsn")
So(err, ShouldNotBeNil)
+ So(cfg, ShouldBeNil)
})
+
Convey("test dsn with only database id", t, func() {
dbIDStr := "00000bef611d346c0cbe1beaa76e7f0ed705a194fdf9ac3a248ec70e9c198bf9"
cfg, err := ParseDSN(dbIDStr)
So(err, ShouldBeNil)
- So(cfg.DatabaseID, ShouldEqual, dbIDStr)
+ So(cfg, ShouldResemble, &Config{
+ DatabaseID: dbIDStr,
+ UseLeader: true,
+ UseFollower: false,
+ })
+
+ recoveredCfg, err := ParseDSN(cfg.FormatDSN())
+ So(err, ShouldBeNil)
+ So(cfg, ShouldResemble, recoveredCfg)
+ })
+
+ Convey("test dsn with additional options", t, func() {
+ cfg, err := ParseDSN("covenantsql://db?use_leader=0&use_follower=true")
+ So(err, ShouldBeNil)
+ So(cfg, ShouldResemble, &Config{
+ DatabaseID: "db",
+ UseLeader: false,
+ UseFollower: true,
+ })
+
+ recoveredCfg, err := ParseDSN(cfg.FormatDSN())
+ So(err, ShouldBeNil)
+ So(cfg, ShouldResemble, recoveredCfg)
})
}
diff --git a/client/conn.go b/client/conn.go
index eeec4d1db..a73d02154 100644
--- a/client/conn.go
+++ b/client/conn.go
@@ -20,6 +20,7 @@ import (
"context"
"database/sql"
"database/sql/driver"
+ "math/rand"
"sync"
"sync/atomic"
"time"
@@ -31,6 +32,7 @@ import (
"github.com/CovenantSQL/CovenantSQL/rpc"
"github.com/CovenantSQL/CovenantSQL/types"
"github.com/CovenantSQL/CovenantSQL/utils/log"
+ "github.com/pkg/errors"
)
// conn implements an interface sql.Conn.
@@ -41,10 +43,20 @@ type conn struct {
localNodeID proto.NodeID
privKey *asymmetric.PrivateKey
- ackCh chan *types.Ack
inTransaction bool
closed int32
- pCaller *rpc.PersistentCaller
+
+ leader *pconn
+ follower *pconn
+ pCaller *rpc.PersistentCaller
+ pFollowerCaller *rpc.PersistentCaller
+}
+
+// pconn represents a connection to a peer
+type pconn struct {
+ parent *conn
+ ackCh chan *types.Ack
+ pCaller *rpc.PersistentCaller
}
func newConn(cfg *Config) (c *conn, err error) {
@@ -67,14 +79,41 @@ func newConn(cfg *Config) (c *conn, err error) {
queries: make([]types.Query, 0),
}
- var peers *proto.Peers
// get peers from BP
+ var peers *proto.Peers
if peers, err = cacheGetPeers(c.dbID, c.privKey); err != nil {
log.WithError(err).Error("cacheGetPeers failed")
c = nil
return
}
- c.pCaller = rpc.NewPersistentCaller(peers.Leader)
+
+ if cfg.UseLeader {
+ c.pCaller = rpc.NewPersistentCaller(peers.Leader)
+ c.leader = &pconn{
+ parent: c,
+ pCaller: c.pCaller,
+ }
+ }
+
+ // choose a random follower node
+ if cfg.UseFollower && len(peers.Servers) > 1 {
+ for {
+ rand.Seed(time.Now().UnixNano())
+ node := peers.Servers[rand.Intn(len(peers.Servers))]
+ if node != peers.Leader {
+ c.pFollowerCaller = rpc.NewPersistentCaller(node)
+ c.follower = &pconn{
+ parent: c,
+ pCaller: c.pFollowerCaller,
+ }
+ break
+ }
+ }
+ }
+
+ if c.leader == nil && c.follower == nil {
+ return nil, errors.New("no follower peers found")
+ }
err = c.startAckWorkers(2)
if err != nil {
@@ -88,6 +127,29 @@ func newConn(cfg *Config) (c *conn, err error) {
}
func (c *conn) startAckWorkers(workerCount int) (err error) {
+ if c.leader != nil {
+ if err := c.leader.startAckWorkers(workerCount); err != nil {
+ return err
+ }
+ }
+ if c.follower != nil {
+ if err := c.follower.startAckWorkers(workerCount); err != nil {
+ return err
+ }
+ }
+ return nil
+}
+
+func (c *conn) stopAckWorkers() {
+ if c.leader != nil {
+ close(c.leader.ackCh)
+ }
+ if c.follower != nil {
+ close(c.follower.ackCh)
+ }
+}
+
+func (c *pconn) startAckWorkers(workerCount int) (err error) {
c.ackCh = make(chan *types.Ack, workerCount*4)
for i := 0; i < workerCount; i++ {
go c.ackWorker()
@@ -95,50 +157,44 @@ func (c *conn) startAckWorkers(workerCount int) (err error) {
return
}
-func (c *conn) stopAckWorkers() {
+func (c *pconn) stopAckWorkers() {
close(c.ackCh)
}
-func (c *conn) ackWorker() {
- if rawPeers, ok := peerList.Load(c.dbID); ok {
- if peers, ok := rawPeers.(*proto.Peers); ok {
- var (
- oneTime sync.Once
- pc *rpc.PersistentCaller
- err error
- )
-
- ackWorkerLoop:
- for {
- ack, got := <-c.ackCh
- if !got { //closed and empty
- break ackWorkerLoop
- }
- oneTime.Do(func() {
- pc = rpc.NewPersistentCaller(peers.Leader)
- })
- if err = ack.Sign(c.privKey, false); err != nil {
- log.WithField("target", pc.TargetID).WithError(err).Error("failed to sign ack")
- continue
- }
+func (c *pconn) ackWorker() {
+ var (
+ oneTime sync.Once
+ pc *rpc.PersistentCaller
+ err error
+ )
+
+ackWorkerLoop:
+ for {
+ ack, got := <-c.ackCh
+ if !got { //closed and empty
+ break ackWorkerLoop
+ }
+ oneTime.Do(func() {
+ pc = rpc.NewPersistentCaller(c.pCaller.TargetID)
+ })
+ if err = ack.Sign(c.parent.privKey, false); err != nil {
+ log.WithField("target", pc.TargetID).WithError(err).Error("failed to sign ack")
+ continue
+ }
- var ackRes types.AckResponse
- // send ack back
- if err = pc.Call(route.DBSAck.String(), ack, &ackRes); err != nil {
- log.WithError(err).Warning("send ack failed")
- continue
- }
- }
- if pc != nil {
- pc.CloseStream()
- }
- log.Debug("ack worker quiting")
- return
+ var ackRes types.AckResponse
+ // send ack back
+ if err = pc.Call(route.DBSAck.String(), ack, &ackRes); err != nil {
+ log.WithError(err).Warning("send ack failed")
+ continue
}
}
- log.Fatal("must GetPeers first")
- return
+ if pc != nil {
+ pc.CloseStream()
+ }
+
+ log.Debug("ack worker quiting")
}
// Prepare implements the driver.Conn.Prepare method.
@@ -307,9 +363,15 @@ func (c *conn) addQuery(queryType types.QueryType, query *types.Query) (affected
}
func (c *conn) sendQuery(queryType types.QueryType, queries []types.Query) (affectedRows int64, lastInsertID int64, rows driver.Rows, err error) {
- var peers *proto.Peers
- if peers, err = cacheGetPeers(c.dbID, c.privKey); err != nil {
- return
+ var uc *pconn // peer connection used to execute the queries
+
+ uc = c.leader
+ // use follower pconn only when the query is readonly
+ if queryType == types.ReadQuery && c.follower != nil {
+ uc = c.follower
+ }
+ if uc == nil {
+ uc = c.follower
}
// allocate sequence
@@ -322,7 +384,7 @@ func (c *conn) sendQuery(queryType types.QueryType, queries []types.Query) (affe
"type": queryType.String(),
"connID": connID,
"seqNo": seqNo,
- "target": peers.Leader,
+ "target": uc.pCaller.TargetID,
"source": c.localNodeID,
}).WithError(err).Debug("send query")
}()
@@ -365,7 +427,7 @@ func (c *conn) sendQuery(queryType types.QueryType, queries []types.Query) (affe
}
// build ack
- c.ackCh <- &types.Ack{
+ uc.ackCh <- &types.Ack{
Header: types.SignedAckHeader{
AckHeader: types.AckHeader{
Response: response.Header,
From a57037a9489528ed72b2f2c2e34b7e7464f374cb Mon Sep 17 00:00:00 2001
From: Ggicci
Date: Fri, 7 Dec 2018 22:58:18 +0800
Subject: [PATCH 25/36] Fix the failed testcase for the driver
---
client/config.go | 2 +-
client/driver_test.go | 8 +++++++-
2 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/client/config.go b/client/config.go
index 6c8ea9736..cde8eec94 100644
--- a/client/config.go
+++ b/client/config.go
@@ -39,7 +39,7 @@ type Config struct {
// NewConfig creates a new config with default value.
func NewConfig() *Config {
- return &Config{}
+ return &Config{UseLeader: true}
}
// FormatDSN formats the given Config into a DSN string which can be passed to the driver.
diff --git a/client/driver_test.go b/client/driver_test.go
index 018cd9665..4fade57e5 100644
--- a/client/driver_test.go
+++ b/client/driver_test.go
@@ -61,7 +61,13 @@ func TestCreate(t *testing.T) {
var dsn string
dsn, err = Create(ResourceMeta{})
So(err, ShouldBeNil)
- So(dsn, ShouldEqual, "covenantsql://db")
+
+ recoveredCfg, err := ParseDSN(dsn)
+ So(err, ShouldBeNil)
+ So(recoveredCfg, ShouldResemble, &Config{
+ DatabaseID: "db",
+ UseLeader: true,
+ })
})
}
From 5f4deb4d964e96f60633320423e0c62d6266c3e0 Mon Sep 17 00:00:00 2001
From: Qi Xiao
Date: Mon, 10 Dec 2018 15:00:49 +0800
Subject: [PATCH 26/36] Fix query cancellation feature
---
cmd/cql-minerd/integration_test.go | 52 +++++++++++++++++++++++-----
kayak/runtime.go | 55 +++++++++++++++---------------
rpc/rpcutil.go | 21 ++++++------
worker/db_storage.go | 4 +++
xenomint/state.go | 21 +++++++++++-
5 files changed, 106 insertions(+), 47 deletions(-)
diff --git a/cmd/cql-minerd/integration_test.go b/cmd/cql-minerd/integration_test.go
index e5314fd2b..3d9b4b581 100644
--- a/cmd/cql-minerd/integration_test.go
+++ b/cmd/cql-minerd/integration_test.go
@@ -387,7 +387,7 @@ func TestFullProcess(t *testing.T) {
So(err, ShouldBeNil)
So(resultBytes, ShouldResemble, []byte("ha\001ppy"))
- Convey("test query cancel", func(c C) {
+ Convey("test query cancel", FailureContinues, func(c C) {
wg := sync.WaitGroup{}
wg.Add(1)
go func() {
@@ -400,7 +400,8 @@ func TestFullProcess(t *testing.T) {
}()
time.Sleep(time.Second)
go func() {
- db.Exec("UPDATE test SET test = 100;")
+ _, err = db.Exec("UPDATE test SET test = 100;")
+ c.So(err, ShouldNotBeNil)
}()
time.Sleep(time.Second)
for _, n := range conf.GConf.KnownNodes {
@@ -410,17 +411,52 @@ func TestFullProcess(t *testing.T) {
}
time.Sleep(time.Second)
- row := db.QueryRow("SELECT * FROM test WHERE test = 4 LIMIT 1")
+ // ensure connection
+ db.Query("SELECT 1")
+
var result int
- err = row.Scan(&result)
+ err = db.QueryRow("SELECT * FROM test WHERE test = 4 LIMIT 1").Scan(&result)
c.So(err, ShouldBeNil)
c.So(result, ShouldEqual, 4)
+
wg.Wait()
- time.Sleep(10 * time.Second)
+ time.Sleep(30 * time.Second)
+
+ go func() {
+ _, err = db.Query("SELECT * FROM test WHERE test = sleep(10000000000)")
+ // call write query using read query interface
+ //_, err = db.Query("INSERT INTO test VALUES(sleep(10000000000))")
+ c.So(err, ShouldNotBeNil)
+ }()
+ time.Sleep(time.Second)
+ for _, n := range conf.GConf.KnownNodes {
+ if n.Role == proto.Miner {
+ rpc.GetSessionPoolInstance().Remove(n.ID)
+ }
+ }
+
+ time.Sleep(time.Second)
+
+ // ensure connection
+ db.Query("SELECT 1")
+
+ time.Sleep(time.Second)
+
+ func() {
+ rows, err := db.Query("SELECT * FROM test")
+ c.So(err, ShouldBeNil)
+ defer rows.Close()
+ var res int
+ for rows.Next() {
+ err = rows.Scan(&res)
+ c.So(err, ShouldBeNil)
+ log.WithField("record", res).Info("got record from test database")
+ }
+ }()
row = db.QueryRow("SELECT * FROM test WHERE test = 10000000000 LIMIT 1")
err = row.Scan(&result)
c.So(err, ShouldBeNil)
- c.So(result, ShouldEqual, 4)
+ c.So(result, ShouldEqual, 10000000000)
c.So(err, ShouldBeNil)
})
@@ -428,8 +464,8 @@ func TestFullProcess(t *testing.T) {
err = db.Close()
So(err, ShouldBeNil)
- //err = client.Drop(dsn)
- //So(err, ShouldBeNil)
+ err = client.Drop(dsn)
+ So(err, ShouldBeNil)
})
}
diff --git a/kayak/runtime.go b/kayak/runtime.go
index 8c763ceda..1858a803f 100644
--- a/kayak/runtime.go
+++ b/kayak/runtime.go
@@ -35,7 +35,7 @@ import (
const (
// commit channel window size
- commitWindow = 10
+ commitWindow = 0
// prepare window
trackerWindow = 10
)
@@ -246,6 +246,7 @@ func (r *Runtime) Shutdown() (err error) {
// Apply defines entry for Leader node.
func (r *Runtime) Apply(ctx context.Context, req interface{}) (result interface{}, logIndex uint64, err error) {
var commitFuture <-chan *commitResult
+ var cResult *commitResult
var tmStart, tmLeaderPrepare, tmFollowerPrepare, tmCommitEnqueue, tmLeaderRollback,
tmRollback, tmCommitDequeue, tmLeaderCommit, tmCommit time.Time
@@ -350,37 +351,36 @@ func (r *Runtime) Apply(ctx context.Context, req interface{}) (result interface{
tmCommitEnqueue = time.Now()
- select {
- case cResult := <-commitFuture:
- if cResult != nil {
- logIndex = prepareLog.Index
- result = cResult.result
- err = cResult.err
-
- tmCommitDequeue = cResult.start
- dbCost = cResult.dbCost
- tmLeaderCommit = time.Now()
-
- // wait until context deadline or commit done
- if cResult.rpc != nil {
- cResult.rpc.get(ctx)
- }
- } else {
- log.Fatal("IMPOSSIBLE BRANCH")
- select {
- case <-ctx.Done():
- err = errors.Wrap(ctx.Err(), "process commit timeout")
- goto ROLLBACK
- default:
- }
- }
- case <-ctx.Done():
- // pipeline commit timeout
+ if commitFuture == nil {
logIndex = prepareLog.Index
err = errors.Wrap(ctx.Err(), "enqueue commit timeout")
goto ROLLBACK
}
+ cResult = <-commitFuture
+ if cResult != nil {
+ logIndex = prepareLog.Index
+ result = cResult.result
+ err = cResult.err
+
+ tmCommitDequeue = cResult.start
+ dbCost = cResult.dbCost
+ tmLeaderCommit = time.Now()
+
+ // wait until context deadline or commit done
+ if cResult.rpc != nil {
+ cResult.rpc.get(ctx)
+ }
+ } else {
+ log.Fatal("IMPOSSIBLE BRANCH")
+ select {
+ case <-ctx.Done():
+ err = errors.Wrap(ctx.Err(), "process commit timeout")
+ goto ROLLBACK
+ default:
+ }
+ }
+
tmCommit = time.Now()
return
@@ -572,6 +572,7 @@ func (r *Runtime) leaderCommitResult(ctx context.Context, reqPayload interface{}
select {
case <-ctx.Done():
+ res = nil
case r.commitCh <- req:
}
diff --git a/rpc/rpcutil.go b/rpc/rpcutil.go
index 84dc678c3..d439dee95 100644
--- a/rpc/rpcutil.go
+++ b/rpc/rpcutil.go
@@ -23,6 +23,7 @@ import (
"math/rand"
"net"
"net/rpc"
+ "strings"
"sync"
"github.com/CovenantSQL/CovenantSQL/crypto/kms"
@@ -65,6 +66,7 @@ func (c *PersistentCaller) initClient(isAnonymous bool) (err error) {
c.Lock()
defer c.Unlock()
if c.client == nil {
+ log.Debug("init new rpc client")
var conn net.Conn
conn, err = DialToNode(c.TargetID, c.pool, isAnonymous)
if err != nil {
@@ -93,11 +95,13 @@ func (c *PersistentCaller) Call(method string, args interface{}, reply interface
if err == io.EOF ||
err == io.ErrUnexpectedEOF ||
err == io.ErrClosedPipe ||
- err == rpc.ErrShutdown {
+ err == rpc.ErrShutdown ||
+ strings.Contains(strings.ToLower(err.Error()), "shut down") ||
+ strings.Contains(strings.ToLower(err.Error()), "broken pipe") {
// if got EOF, retry once
- err = c.Reconnect(method)
- if err != nil {
- log.WithField("rpc", method).WithError(err).Error("reconnect failed")
+ reconnectErr := c.ResetClient(method)
+ if reconnectErr != nil {
+ log.WithField("rpc", method).WithError(reconnectErr).Error("reconnect failed")
}
}
log.WithField("rpc", method).WithError(err).Error("call RPC failed")
@@ -105,17 +109,12 @@ func (c *PersistentCaller) Call(method string, args interface{}, reply interface
return
}
-// Reconnect tries to rebuild RPC client
-func (c *PersistentCaller) Reconnect(method string) (err error) {
+// ResetClient resets client.
+func (c *PersistentCaller) ResetClient(method string) (err error) {
c.Lock()
c.Close()
c.client = nil
c.Unlock()
- err = c.initClient(method == route.DHTPing.String())
- if err != nil {
- log.WithField("rpc", method).WithError(err).Error("second init client for RPC failed")
- return
- }
return
}
diff --git a/worker/db_storage.go b/worker/db_storage.go
index b56f6bbee..1b49fce83 100644
--- a/worker/db_storage.go
+++ b/worker/db_storage.go
@@ -19,6 +19,7 @@ package worker
import (
"bytes"
"container/list"
+ "context"
"github.com/CovenantSQL/CovenantSQL/types"
"github.com/CovenantSQL/CovenantSQL/utils"
@@ -99,6 +100,9 @@ func (db *Database) Commit(rawReq interface{}) (result interface{}, err error) {
return
}
+ // reset context, commit should never be canceled
+ req.SetContext(context.Background())
+
// execute
return db.chain.Query(req)
}
diff --git a/xenomint/state.go b/xenomint/state.go
index 05834e9e4..e22f82c42 100644
--- a/xenomint/state.go
+++ b/xenomint/state.go
@@ -310,15 +310,18 @@ func (s *State) readTx(
data [][]interface{}
querier sqlQuerier
)
- id = s.getID()
if atomic.LoadUint32(&s.hasSchemaChange) == 1 {
// lock transaction
s.Lock()
defer s.Unlock()
+ id = s.getID()
s.setSavepoint()
querier = s.unc
defer s.rollbackTo(id)
+
+ // TODO(): should detect query type, any timeout write query will cause underlying transaction to rollback
} else {
+ id = s.getID()
if tx, ierr = s.strg.DirtyReader().Begin(); ierr != nil {
err = errors.Wrap(ierr, "open tx failed")
return
@@ -327,6 +330,16 @@ func (s *State) readTx(
defer tx.Rollback()
}
+ defer func() {
+ if ctx.Err() != nil {
+ log.WithError(ctx.Err()).WithFields(log.Fields{
+ "req": req,
+ "id": id,
+ "dirtyRead": atomic.LoadUint32(&s.hasSchemaChange) != 1,
+ }).Warning("read query canceled")
+ }
+ }()
+
for i, v := range req.Payload.Queries {
if cnames, ctypes, data, ierr = readSingle(ctx, querier, &v); ierr != nil {
err = errors.Wrapf(ierr, "query at #%d failed", i)
@@ -399,6 +412,12 @@ func (s *State) write(
lastInsertID int64
)
+ defer func() {
+ if ctx.Err() != nil {
+ log.WithError(err).WithField("req", req).Warning("write query canceled")
+ }
+ }()
+
// TODO(leventeliu): savepoint is a sqlite-specified solution for nested transaction.
if err = func() (err error) {
var ierr error
From 8c3b60bc09754e8c791ca035d6379bb89a1c74b6 Mon Sep 17 00:00:00 2001
From: Qi Xiao
Date: Mon, 10 Dec 2018 15:59:20 +0800
Subject: [PATCH 27/36] Add more comments to clarify test purposes
---
cmd/cql-minerd/integration_test.go | 32 ++++++++++--------------------
1 file changed, 10 insertions(+), 22 deletions(-)
diff --git a/cmd/cql-minerd/integration_test.go b/cmd/cql-minerd/integration_test.go
index bdcbc5afa..eacb16bce 100644
--- a/cmd/cql-minerd/integration_test.go
+++ b/cmd/cql-minerd/integration_test.go
@@ -388,19 +388,20 @@ func TestFullProcess(t *testing.T) {
So(resultBytes, ShouldResemble, []byte("ha\001ppy"))
Convey("test query cancel", FailureContinues, func(c C) {
+ /* test cancel write query */
wg := sync.WaitGroup{}
wg.Add(1)
go func() {
- // sleep 10s
- _, er := db.Exec("INSERT INTO test VALUES(sleep(10000000000))")
- if er != nil {
- log.Errorf("insert sleep: %v", er)
- }
- wg.Done()
+ defer wg.Done()
+ db.Exec("INSERT INTO test VALUES(sleep(10000000000))")
}()
time.Sleep(time.Second)
+ wg.Add(1)
go func() {
+ defer wg.Done()
+ var err error
_, err = db.Exec("UPDATE test SET test = 100;")
+ // should be canceled
c.So(err, ShouldNotBeNil)
}()
time.Sleep(time.Second)
@@ -414,14 +415,15 @@ func TestFullProcess(t *testing.T) {
// ensure connection
db.Query("SELECT 1")
+ // test before write operation complete
var result int
err = db.QueryRow("SELECT * FROM test WHERE test = 4 LIMIT 1").Scan(&result)
c.So(err, ShouldBeNil)
c.So(result, ShouldEqual, 4)
wg.Wait()
- time.Sleep(30 * time.Second)
+ /* test cancel read query */
go func() {
_, err = db.Query("SELECT * FROM test WHERE test = sleep(10000000000)")
// call write query using read query interface
@@ -434,25 +436,11 @@ func TestFullProcess(t *testing.T) {
rpc.GetSessionPoolInstance().Remove(n.ID)
}
}
-
time.Sleep(time.Second)
-
// ensure connection
db.Query("SELECT 1")
- time.Sleep(time.Second)
-
- func() {
- rows, err := db.Query("SELECT * FROM test")
- c.So(err, ShouldBeNil)
- defer rows.Close()
- var res int
- for rows.Next() {
- err = rows.Scan(&res)
- c.So(err, ShouldBeNil)
- log.WithField("record", res).Info("got record from test database")
- }
- }()
+ /* test long running write query */
row = db.QueryRow("SELECT * FROM test WHERE test = 10000000000 LIMIT 1")
err = row.Scan(&result)
c.So(err, ShouldBeNil)
From a5f5be896b3f4ccd7dc8930539b2df0b715dc640 Mon Sep 17 00:00:00 2001
From: Qi Xiao
Date: Tue, 11 Dec 2018 10:01:38 +0800
Subject: [PATCH 28/36] Avoid passing chain runtime context to xenomint state
on block producing
---
sqlchain/chain.go | 2 +-
xenomint/state.go | 4 ++++
2 files changed, 5 insertions(+), 1 deletion(-)
diff --git a/sqlchain/chain.go b/sqlchain/chain.go
index 4b488a201..de75dac87 100644
--- a/sqlchain/chain.go
+++ b/sqlchain/chain.go
@@ -547,7 +547,7 @@ func (c *Chain) produceBlockV2(now time.Time) (err error) {
frs []*types.Request
qts []*x.QueryTracker
)
- if frs, qts, err = c.st.CommitExWithContext(c.rt.ctx); err != nil {
+ if frs, qts, err = c.st.CommitEx(); err != nil {
return
}
var block = &types.Block{
diff --git a/xenomint/state.go b/xenomint/state.go
index e22f82c42..d6a986d61 100644
--- a/xenomint/state.go
+++ b/xenomint/state.go
@@ -105,6 +105,8 @@ func (s *State) Close(commit bool) (err error) {
}
if s.unc != nil {
if commit {
+ s.Lock()
+ defer s.Unlock()
if err = s.uncCommit(); err != nil {
return
}
@@ -113,6 +115,8 @@ func (s *State) Close(commit bool) (err error) {
if err = s.rollback(); err != nil {
return
}
+ s.Lock()
+ defer s.Unlock()
if err = s.uncCommit(); err != nil {
return
}
From 4aad36c207aa8b10ccd7634f33574778c447b077 Mon Sep 17 00:00:00 2001
From: leventeliu
Date: Tue, 11 Dec 2018 11:05:13 +0800
Subject: [PATCH 29/36] Fix starvation on unbuffered channel
---
sqlchain/chain.go | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/sqlchain/chain.go b/sqlchain/chain.go
index de75dac87..326619662 100644
--- a/sqlchain/chain.go
+++ b/sqlchain/chain.go
@@ -582,7 +582,12 @@ func (c *Chain) produceBlockV2(now time.Time) (err error) {
return
}
// Send to pending list
- c.blocks <- block
+ select {
+ case c.blocks <- block:
+ case <-c.rt.ctx.Done():
+ err = c.rt.ctx.Err()
+ return
+ }
log.WithFields(log.Fields{
"peer": c.rt.getPeerInfoString(),
"time": c.rt.getChainTimeString(),
@@ -672,7 +677,12 @@ func (c *Chain) syncHead() {
"Failed to fetch block from peer")
} else {
statBlock(resp.Block)
- c.blocks <- resp.Block
+ select {
+ case c.blocks <- resp.Block:
+ case <-c.rt.ctx.Done():
+ err = c.rt.ctx.Err()
+ return
+ }
log.WithFields(log.Fields{
"peer": c.rt.getPeerInfoString(),
"time": c.rt.getChainTimeString(),
From d8fe9b5b5f16b1008fbf11a58e6bb59a9501fa09 Mon Sep 17 00:00:00 2001
From: The Gitter Badger
Date: Thu, 13 Dec 2018 06:38:31 +0000
Subject: [PATCH 30/36] Add Gitter badge
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index b54cc285d..88c867456 100644
--- a/README.md
+++ b/README.md
@@ -98,7 +98,7 @@ CovenantSQL is still under construction and Testnet is already released, [have a
- [Python](https://github.com/CovenantSQL/python-driver)
- Coding for more……
-Watch us or [](https://twitter.com/intent/follow?screen_name=CovenantLabs) for updates.
+Watch us or [](https://twitter.com/intent/follow?screen_name=CovenantLabs) [](https://gitter.im/CovenantSQL/CovenantSQL?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) for updates.
## TestNet
From 207f9c7dab80cd5def4420ae0f8d98444b370af4 Mon Sep 17 00:00:00 2001
From: Ggicci
Date: Thu, 13 Dec 2018 15:13:05 +0800
Subject: [PATCH 31/36] fix: use package scoped rand source
---
client/conn.go | 10 ++++------
1 file changed, 4 insertions(+), 6 deletions(-)
diff --git a/client/conn.go b/client/conn.go
index a73d02154..288cb88af 100644
--- a/client/conn.go
+++ b/client/conn.go
@@ -20,7 +20,6 @@ import (
"context"
"database/sql"
"database/sql/driver"
- "math/rand"
"sync"
"sync/atomic"
"time"
@@ -98,8 +97,7 @@ func newConn(cfg *Config) (c *conn, err error) {
// choose a random follower node
if cfg.UseFollower && len(peers.Servers) > 1 {
for {
- rand.Seed(time.Now().UnixNano())
- node := peers.Servers[rand.Intn(len(peers.Servers))]
+ node := peers.Servers[randSource.Intn(len(peers.Servers))]
if node != peers.Leader {
c.pFollowerCaller = rpc.NewPersistentCaller(node)
c.follower = &pconn{
@@ -142,10 +140,10 @@ func (c *conn) startAckWorkers(workerCount int) (err error) {
func (c *conn) stopAckWorkers() {
if c.leader != nil {
- close(c.leader.ackCh)
+ c.leader.stopAckWorkers()
}
if c.follower != nil {
- close(c.follower.ackCh)
+ c.follower.stopAckWorkers()
}
}
@@ -171,7 +169,7 @@ func (c *pconn) ackWorker() {
ackWorkerLoop:
for {
ack, got := <-c.ackCh
- if !got { //closed and empty
+ if !got { // closed and empty
break ackWorkerLoop
}
oneTime.Do(func() {
From 44b18aa134ad6cf75ca8b21acc00a587e1a0ff22 Mon Sep 17 00:00:00 2001
From: Ggicci
Date: Thu, 13 Dec 2018 15:54:48 +0800
Subject: [PATCH 32/36] Fix stream not closed problem
---
client/conn.go | 51 +++++++++++++++++++++-----------------------------
1 file changed, 21 insertions(+), 30 deletions(-)
diff --git a/client/conn.go b/client/conn.go
index 288cb88af..b6a8d1027 100644
--- a/client/conn.go
+++ b/client/conn.go
@@ -81,9 +81,7 @@ func newConn(cfg *Config) (c *conn, err error) {
// get peers from BP
var peers *proto.Peers
if peers, err = cacheGetPeers(c.dbID, c.privKey); err != nil {
- log.WithError(err).Error("cacheGetPeers failed")
- c = nil
- return
+ return nil, errors.WithMessage(err, "cacheGetPeers failed")
}
if cfg.UseLeader {
@@ -113,38 +111,19 @@ func newConn(cfg *Config) (c *conn, err error) {
return nil, errors.New("no follower peers found")
}
- err = c.startAckWorkers(2)
- if err != nil {
- log.WithError(err).Error("startAckWorkers failed")
- c = nil
- return
- }
- log.WithField("db", c.dbID).Debug("new connection to database")
-
- return
-}
-
-func (c *conn) startAckWorkers(workerCount int) (err error) {
if c.leader != nil {
- if err := c.leader.startAckWorkers(workerCount); err != nil {
- return err
+ if err := c.leader.startAckWorkers(2); err != nil {
+ return nil, errors.WithMessage(err, "leader startAckWorkers failed")
}
}
if c.follower != nil {
- if err := c.follower.startAckWorkers(workerCount); err != nil {
- return err
+ if err := c.follower.startAckWorkers(2); err != nil {
+ return nil, errors.WithMessage(err, "follower startAckWorkers failed")
}
}
- return nil
-}
-func (c *conn) stopAckWorkers() {
- if c.leader != nil {
- c.leader.stopAckWorkers()
- }
- if c.follower != nil {
- c.follower.stopAckWorkers()
- }
+ log.WithField("db", c.dbID).Debug("new connection to database")
+ return
}
func (c *pconn) startAckWorkers(workerCount int) (err error) {
@@ -195,6 +174,14 @@ ackWorkerLoop:
log.Debug("ack worker quiting")
}
+func (c *pconn) close() error {
+ c.stopAckWorkers()
+ if c.pCaller != nil {
+ c.pCaller.CloseStream()
+ }
+ return nil
+}
+
// Prepare implements the driver.Conn.Prepare method.
func (c *conn) Prepare(query string) (driver.Stmt, error) {
return c.PrepareContext(context.Background(), query)
@@ -206,8 +193,12 @@ func (c *conn) Close() error {
if atomic.CompareAndSwapInt32(&c.closed, 0, 1) {
log.WithField("db", c.dbID).Debug("closed connection")
}
- c.stopAckWorkers()
- c.pCaller.CloseStream()
+ if c.leader != nil {
+ c.leader.close()
+ }
+ if c.follower != nil {
+ c.follower.close()
+ }
return nil
}
From 64539a7c378411cb2ff3851660b7c3fdd7fcf1ac Mon Sep 17 00:00:00 2001
From: Ggicci
Date: Thu, 13 Dec 2018 16:00:42 +0800
Subject: [PATCH 33/36] Remove redundant persistant caller references in conn
---
client/conn.go | 14 +++++---------
1 file changed, 5 insertions(+), 9 deletions(-)
diff --git a/client/conn.go b/client/conn.go
index b6a8d1027..b0ef613af 100644
--- a/client/conn.go
+++ b/client/conn.go
@@ -45,10 +45,8 @@ type conn struct {
inTransaction bool
closed int32
- leader *pconn
- follower *pconn
- pCaller *rpc.PersistentCaller
- pFollowerCaller *rpc.PersistentCaller
+ leader *pconn
+ follower *pconn
}
// pconn represents a connection to a peer
@@ -85,10 +83,9 @@ func newConn(cfg *Config) (c *conn, err error) {
}
if cfg.UseLeader {
- c.pCaller = rpc.NewPersistentCaller(peers.Leader)
c.leader = &pconn{
parent: c,
- pCaller: c.pCaller,
+ pCaller: rpc.NewPersistentCaller(peers.Leader),
}
}
@@ -97,10 +94,9 @@ func newConn(cfg *Config) (c *conn, err error) {
for {
node := peers.Servers[randSource.Intn(len(peers.Servers))]
if node != peers.Leader {
- c.pFollowerCaller = rpc.NewPersistentCaller(node)
c.follower = &pconn{
parent: c,
- pCaller: c.pFollowerCaller,
+ pCaller: rpc.NewPersistentCaller(node),
}
break
}
@@ -400,7 +396,7 @@ func (c *conn) sendQuery(queryType types.QueryType, queries []types.Query) (affe
}
var response types.Response
- if err = c.pCaller.Call(route.DBSQuery.String(), req, &response); err != nil {
+ if err = uc.pCaller.Call(route.DBSQuery.String(), req, &response); err != nil {
return
}
From dac74182f5975646724c6d2666516eb64a874abf Mon Sep 17 00:00:00 2001
From: auxten
Date: Fri, 14 Dec 2018 12:54:19 +0800
Subject: [PATCH 34/36] Add gitter chat link
---
README.md | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/README.md b/README.md
index 88c867456..39cd41040 100644
--- a/README.md
+++ b/README.md
@@ -21,6 +21,9 @@
+
+
@@ -98,7 +101,7 @@ CovenantSQL is still under construction and Testnet is already released, [have a
- [Python](https://github.com/CovenantSQL/python-driver)
- Coding for more……
-Watch us or [](https://twitter.com/intent/follow?screen_name=CovenantLabs) [](https://gitter.im/CovenantSQL/CovenantSQL?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) for updates.
+Watch us or [](https://twitter.com/intent/follow?screen_name=CovenantLabs) for updates.
## TestNet
@@ -112,5 +115,4 @@ Watch us or [](https://gitter.im/CovenantSQL/CovenantSQL?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
From cc395981277a44ea2c1cafea224370857a84afdc Mon Sep 17 00:00:00 2001
From: auxten
Date: Tue, 18 Dec 2018 10:40:58 +0800
Subject: [PATCH 35/36] Update cql README.md
---
cmd/cql/README.md | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/cmd/cql/README.md b/cmd/cql/README.md
index 1b6894726..4d3ec5074 100644
--- a/cmd/cql/README.md
+++ b/cmd/cql/README.md
@@ -30,12 +30,13 @@ INFO[0000] covenant coin balance is: 0 caller="main.go:247 mai
```
Here, I got **"stable coin balance is: 100"**.
-## Initialize a CovenantSQL `cli`
+## Initialize a CovenantSQL `cql`
-After you prepare your master key and config file, CovenantSQL `cli` can be initialized by:
+After you prepare your master key and config file, CovenantSQL `cql` can be initialized by:
You can get a database id when create a new SQL Chain:
```bash
+# if a non-default password applied on master key, use `-password` to pass it
$ cql -config conf/config.yaml -create 1
INFO[0000]
### Public Key ###
From fb685f316e2031288f3d09c0f16dec8eb97ffd61 Mon Sep 17 00:00:00 2001
From: auxten
Date: Tue, 18 Dec 2018 10:45:14 +0800
Subject: [PATCH 36/36] Fix smux link in README
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 39cd41040..ce0125546 100644
--- a/README.md
+++ b/README.md
@@ -80,7 +80,7 @@ that inspired us:
| RPC | `net/rpc` |
| Naming | [**C**onsistent **S**ecure **DHT**](https://godoc.org/github.com/CovenantSQL/CovenantSQL/consistent) |
| Pooling | Session Pool |
-| Multiplex | Yamux |
+| Multiplex | [smux](https://github.com/xtaci/smux) |
| Transport Security | [**E**nhanced **TLS**](https://github.com/CovenantSQL/research/wiki/ETLS(Enhanced-Transport-Layer-Security)) |
| Network | TCP or KCP for optional later |