-
Notifications
You must be signed in to change notification settings - Fork 1.7k
[AuRa] What is correct behaviour of Validating Contract with emptyStepsTransition enabled? #9546
Description
Before filing a new issue, please provide the following information.
- Parity Ethereum version: Parity-Ethereum/v2.2.0-unstable-6e62d77e4-20180912/x86_64-macos/rustc1.28.0 && Parity-Ethereum/v2.0.4-beta-e2e1d22-20180910/x86_64-macos/rustc1.28.0
- Operating system: MacOS
- Installation: built from source && Homebrew
Hello, Parity Team!
Recently I've reported the issue about wrong logic on reporting skipped steps when emptyStepsTransition is enabled (see #9325). And @andresilva fixed it in #9435, many thanks to him!
But now I've faced another problem.
In #9325 we had really generic case, when there is pre-defined list of validators and they have no any ability to repot each other besides reporting about step gap.
But as I said in out production network we have a contract, with reportBenign ability (cite):
Also in this test config you can see simple list of validators, but in production we have contract, which handles reportBenign with removing reported validator. And all validators rather quickly begin to report each other, due to building blocks with a "gap". But that's not the case here, I think I can provide you another chainspec, with contract supplied, to demonstrate similar beheviour.
And now, after the fix, I can't make my validators to report each other, even when the skip their steps! Is it even possible?
Our engine is Authority Round, of course, with immediateTransitions and maximumEmptySteps (set as 3, but any value will show same behaviour, even 0) and reporting (non-safe) validator contract, with reportBenign programmed to remove validators from a list of validators.
"engine": {
"authorityRound": {
"params": {
"immediateTransitions": true,
"stepDuration": 4,
"maximumEmptySteps": 3,
"emptyStepsTransition": 0,
"validators" : {
"contract": "0x0000000000000000000000000000000000000100"
}
}
}
},
I am adding 3 random addresses as validators, they are non-existent nodes, and they never connect of seal anything.
As you can see in logs below, there is no any reporting (as per engine) and transitioning to new validator set (as per contract logic) here. And of course block generation is really slow, on every step we are waiting for non-existent validator and we receive no empty (or real) seals.
My wild guess is that we need to add a report_skipped after
https://github.com/paritytech/parity-ethereum/blob/98f6d6cae51528b717d75abae91411a0ab5c1fa3/ethcore/src/engines/authority_round/mod.rs#L1007
But I pretty much sure, that it's wrong way to solve(?) it.
Thanks in advance!
And here is my logs:
Loading config file from config.toml
2018-09-13 12:24:03 main INFO parity_ethereum::run Starting Parity-Ethereum/v2.2.0-unstable-6e62d77e4-20180912/x86_64-macos/rustc1.28.0
2018-09-13 12:24:03 main INFO parity_ethereum::run Keys path eth/keys/Polys
2018-09-13 12:24:03 main INFO parity_ethereum::run DB path eth/db/Polys/db/27eb180af56a89b9
2018-09-13 12:24:03 main INFO parity_ethereum::run State DB configuration: fast
2018-09-13 12:24:03 main INFO parity_ethereum::run Operating mode: active
2018-09-13 12:24:03 main DEBUG poa Setting Engine signer to 0x4e65…162e
2018-09-13 12:24:04 main INFO ethcore_service::service Configured for Polys using AuthorityRound engine
2018-09-13 12:24:04 main TRACE engine obtained proof for initial set: 1 validators, 4682 bytes
2018-09-13 12:24:04 main INFO engine Signal for switch to contract-based validator set.
2018-09-13 12:24:04 main INFO engine Initial contract validators: [0x4e65fabe9a857524d0a3c7a69308462fe9fc162e]
2018-09-13 12:24:04 main TRACE engine Setting up contract caller.
2018-09-13 12:24:04 IO Worker #2 DEBUG engine Set of validators obtained: [0x4e65fabe9a857524d0a3c7a69308462fe9fc162e]
2018-09-13 12:24:04 IO Worker #2 TRACE engine Fetched proposer for step 384207661: 0x4e65…162e
2018-09-13 12:24:04 IO Worker #2 TRACE engine broadcasting empty step message: EmptyStep { signature: 0xaeb728f1d3a45e5c0c65f18315cac028ad3a4f4ee7684a0828939b6ae1a665e51bd013f739a95ffdec9487229e6dbe96f9f1069c1083cfc8736f1b886a21d1d601, step: 384207661, parent_hash: 0x438a0cd2e9a0eb39a03efc7a227df6f48f28fac827eb180af56a89b97338884f }
2018-09-13 12:24:08 IO Worker #3 TRACE engine Fetched proposer for step 384207662: 0x4e65…162e
2018-09-13 12:24:08 IO Worker #3 TRACE engine broadcasting empty step message: EmptyStep { signature: 0x5a335554b5ecc8b8a1db9fe24b8637033af85f73c2e60298a5f5e563339bc63f332856fd959ef3c0064c2995db6648a86d0de48d62f3f04dc75f5b4d9308be2301, step: 384207662, parent_hash: 0x438a0cd2e9a0eb39a03efc7a227df6f48f28fac827eb180af56a89b97338884f }
2018-09-13 12:24:09 IO Worker #2 INFO network Public node URL: enode://ff6744f2e25495340a991239092714c2925070ccd97ae4c981ac4844c0cb740d94b11531e3b4fb9362b98a63e3c9205e6890eeb5c38e49d0fb06eda096c39750@10.16.176.89:30329
2018-09-13 12:24:12 IO Worker #3 TRACE engine Fetched proposer for step 384207663: 0x4e65…162e
2018-09-13 12:24:12 IO Worker #3 TRACE engine broadcasting empty step message: EmptyStep { signature: 0x37cacf907ae1de5d7647d714770762e7b0dbfee1931f8a789d2c4a1245021f0d47bd50a6c435b0d08c71f26656d707e4a7acdb07fe0aa3e2acb3b5783ac87c0000, step: 384207663, parent_hash: 0x438a0cd2e9a0eb39a03efc7a227df6f48f28fac827eb180af56a89b97338884f }
2018-09-13 12:24:16 IO Worker #3 TRACE engine Fetched proposer for step 384207664: 0x4e65…162e
2018-09-13 12:24:16 IO Worker #3 TRACE engine generate_seal: Issuing a block for step 384207664.
2018-09-13 12:24:16 IO Worker #3 INFO import Imported #1 0xb9e6…b1ea (0 txs, 0.00 Mgas, 8 ms, 0.79 KiB)
2018-09-13 12:24:20 IO Worker #3 DEBUG engine Set of validators obtained: [0x4e65fabe9a857524d0a3c7a69308462fe9fc162e]
2018-09-13 12:24:20 IO Worker #3 TRACE engine Fetched proposer for step 384207665: 0x4e65…162e
2018-09-13 12:24:20 IO Worker #3 TRACE engine broadcasting empty step message: EmptyStep { signature: 0x6d29dd677a5ad9b987160cd95b8504a978fcdb8e226378cd610f9f86c3856b92615b0c4054115a3ecc7e51b740113af083a9448bee431e5262b4ce30fa07d86a00, step: 384207665, parent_hash: 0xb9e666881b1aae590a0a894e1064ce3d0ad010b01071ef917634bd1e8f6db1ea }
2018-09-13 12:24:24 IO Worker #3 TRACE engine Fetched proposer for step 384207666: 0x4e65…162e
2018-09-13 12:24:24 IO Worker #3 TRACE engine broadcasting empty step message: EmptyStep { signature: 0x6daa6fcfea63803536ff338f3e102b1839ec38b0af5a93b696c50b1bf78fbbc83d4ce42f0ac1a831f5b67fc17a6a6d45657c98d876519abe7f2af840f10fcb0201, step: 384207666, parent_hash: 0xb9e666881b1aae590a0a894e1064ce3d0ad010b01071ef917634bd1e8f6db1ea }
2018-09-13 12:24:25 WARN parity_rpc::v1::impls::eth Fallback to `BlockId::Latest`
2018-09-13 12:24:28 IO Worker #0 TRACE engine Fetched proposer for step 384207667: 0x4e65…162e
2018-09-13 12:24:28 IO Worker #0 TRACE engine generate_seal: Issuing a block for step 384207667.
2018-09-13 12:24:28 IO Worker #0 INFO import Imported #2 0xb0ff…4493 (1 txs, 0.10 Mgas, 8 ms, 0.86 KiB)
2018-09-13 12:24:32 IO Worker #0 DEBUG engine Set of validators obtained: [0x4e65fabe9a857524d0a3c7a69308462fe9fc162e, 0x5e27485c0ab3ec9f87429b0fed98b244c52f7d76]
2018-09-13 12:24:32 IO Worker #0 TRACE engine Fetched proposer for step 384207668: 0x4e65…162e
2018-09-13 12:24:32 IO Worker #0 TRACE engine generate_seal: Issuing a block for step 384207668.
2018-09-13 12:24:32 IO Worker #0 INFO import Imported #3 0x5a3c…1d3f (1 txs, 0.10 Mgas, 8 ms, 0.71 KiB)
2018-09-13 12:24:34 IO Worker #0 INFO import 0/25 peers 16 KiB chain 22 KiB db 0 bytes queue 448 bytes sync RPC: 1 conn, 3 req/s, 1606 µs
2018-09-13 12:24:36 IO Worker #1 DEBUG engine Set of validators obtained: [0x4e65fabe9a857524d0a3c7a69308462fe9fc162e, 0x5e27485c0ab3ec9f87429b0fed98b244c52f7d76, 0x5e27485c0ab3ec9f87429b0fed98b244c52f7d77]
2018-09-13 12:24:36 IO Worker #1 TRACE engine Fetched proposer for step 384207669: 0x4e65…162e
2018-09-13 12:24:36 IO Worker #1 TRACE engine generate_seal: Issuing a block for step 384207669.
2018-09-13 12:24:36 IO Worker #1 INFO import Imported #4 0xf242…137a (1 txs, 0.10 Mgas, 8 ms, 0.71 KiB)
2018-09-13 12:24:40 IO Worker #0 DEBUG engine Set of validators obtained: [0x4e65fabe9a857524d0a3c7a69308462fe9fc162e, 0x5e27485c0ab3ec9f87429b0fed98b244c52f7d76, 0x5e27485c0ab3ec9f87429b0fed98b244c52f7d77, 0x5e27485c0ab3ec9f87429b0fed98b244c52f7d78]
2018-09-13 12:24:40 IO Worker #0 TRACE engine Fetched proposer for step 384207670: 0x5e27…7d77
2018-09-13 12:24:40 IO Worker #0 TRACE engine generate_seal: 0x4e65…162e not a proposer for step 384207670.
2018-09-13 12:24:44 IO Worker #2 TRACE engine Fetched proposer for step 384207671: 0x5e27…7d78
2018-09-13 12:24:44 IO Worker #2 TRACE engine generate_seal: 0x4e65…162e not a proposer for step 384207671.
2018-09-13 12:24:48 IO Worker #1 TRACE engine Fetched proposer for step 384207672: 0x4e65…162e
2018-09-13 12:24:48 IO Worker #1 TRACE engine generate_seal: Issuing a block for step 384207672.
2018-09-13 12:24:48 IO Worker #1 INFO import Imported #5 0x5690…f600 (1 txs, 0.07 Mgas, 10 ms, 0.71 KiB)
2018-09-13 12:24:52 IO Worker #3 DEBUG engine Set of validators obtained: [0x4e65fabe9a857524d0a3c7a69308462fe9fc162e, 0x5e27485c0ab3ec9f87429b0fed98b244c52f7d76, 0x5e27485c0ab3ec9f87429b0fed98b244c52f7d77, 0x5e27485c0ab3ec9f87429b0fed98b244c52f7d78]
2018-09-13 12:24:52 IO Worker #3 TRACE engine Fetched proposer for step 384207673: 0x5e27…7d76
2018-09-13 12:24:52 IO Worker #3 TRACE engine generate_seal: 0x4e65…162e not a proposer for step 384207673.
2018-09-13 12:24:56 IO Worker #1 TRACE engine Fetched proposer for step 384207674: 0x5e27…7d77
2018-09-13 12:24:56 IO Worker #1 TRACE engine generate_seal: 0x4e65…162e not a proposer for step 384207674.
2018-09-13 12:25:00 IO Worker #1 TRACE engine Fetched proposer for step 384207675: 0x5e27…7d78
2018-09-13 12:25:00 IO Worker #1 TRACE engine generate_seal: 0x4e65…162e not a proposer for step 384207675.
2018-09-13 12:25:04 IO Worker #2 TRACE engine Fetched proposer for step 384207676: 0x4e65…162e
2018-09-13 12:25:04 IO Worker #2 TRACE engine broadcasting empty step message: EmptyStep { signature: 0xf41cd3d65e6d600c64476f4dd630f850088172029d756aa0f21800437da3d2f05cde965b08ddeff2a67ab775dcbe3c74a8320f36d5c5c56cb02512d9ee360d9700, step: 384207676, parent_hash: 0x56907fe666ce0bb9455da8bd6654ffb9bae7ec879269dc5efaff23207e16f600 }
2018-09-13 12:25:04 IO Worker #0 INFO import 0/25 peers 19 KiB chain 25 KiB db 0 bytes queue 448 bytes sync RPC: 0 conn, 1 req/s, 351 µs
2018-09-13 12:25:08 IO Worker #3 TRACE engine Fetched proposer for step 384207677: 0x5e27…7d76
2018-09-13 12:25:08 IO Worker #3 TRACE engine generate_seal: 0x4e65…162e not a proposer for step 384207677.
2018-09-13 12:25:12 IO Worker #0 TRACE engine Fetched proposer for step 384207678: 0x5e27…7d77
2018-09-13 12:25:12 IO Worker #0 TRACE engine generate_seal: 0x4e65…162e not a proposer for step 384207678.
2018-09-13 12:25:16 IO Worker #3 TRACE engine Fetched proposer for step 384207679: 0x5e27…7d78
2018-09-13 12:25:16 IO Worker #3 TRACE engine generate_seal: 0x4e65…162e not a proposer for step 384207679.
2018-09-13 12:25:20 IO Worker #2 TRACE engine Fetched proposer for step 384207680: 0x4e65…162e
2018-09-13 12:25:20 IO Worker #2 TRACE engine broadcasting empty step message: EmptyStep { signature: 0xe24042b78a8ad36e4addf12683724db4925743ff6e7c19d758cc8d44a38ec6cf5b4179ce8494ecc10cb727f8e93740373698274cd025774d1fa073fa39a32e0100, step: 384207680, parent_hash: 0x56907fe666ce0bb9455da8bd6654ffb9bae7ec879269dc5efaff23207e16f600 }
2018-09-13 12:25:24 IO Worker #0 TRACE engine Fetched proposer for step 384207681: 0x5e27…7d76
2018-09-13 12:25:24 IO Worker #0 TRACE engine generate_seal: 0x4e65…162e not a proposer for step 384207681.
2018-09-13 12:25:28 IO Worker #1 TRACE engine Fetched proposer for step 384207682: 0x5e27…7d77
2018-09-13 12:25:28 IO Worker #1 TRACE engine generate_seal: 0x4e65…162e not a proposer for step 384207682.
2018-09-13 12:25:32 IO Worker #1 TRACE engine Fetched proposer for step 384207683: 0x5e27…7d78
2018-09-13 12:25:32 IO Worker #1 TRACE engine generate_seal: 0x4e65…162e not a proposer for step 384207683.
2018-09-13 12:25:34 IO Worker #3 INFO import 0/25 peers 19 KiB chain 25 KiB db 0 bytes queue 448 bytes sync RPC: 0 conn, 0 req/s, 351 µs
2018-09-13 12:25:36 IO Worker #2 TRACE engine Fetched proposer for step 384207684: 0x4e65…162e
2018-09-13 12:25:36 IO Worker #2 TRACE engine broadcasting empty step message: EmptyStep { signature: 0xa707de6b00c48f9e12d66ff26dcd966d9a878d284ccfca7176b8a36b566c98a303d6976d9c7bef539ec723833e4ec930537d81c09925c7c37f5e63ac00fc097401, step: 384207684, parent_hash: 0x56907fe666ce0bb9455da8bd6654ffb9bae7ec879269dc5efaff23207e16f600 }
2018-09-13 12:25:40 IO Worker #2 TRACE engine Fetched proposer for step 384207685: 0x5e27…7d76
2018-09-13 12:25:40 IO Worker #2 TRACE engine generate_seal: 0x4e65…162e not a proposer for step 384207685.
2018-09-13 12:25:44 IO Worker #0 TRACE engine Fetched proposer for step 384207686: 0x5e27…7d77
2018-09-13 12:25:44 IO Worker #0 TRACE engine generate_seal: 0x4e65…162e not a proposer for step 384207686.
2018-09-13 12:25:48 IO Worker #0 TRACE engine Fetched proposer for step 384207687: 0x5e27…7d78
2018-09-13 12:25:48 IO Worker #0 TRACE engine generate_seal: 0x4e65…162e not a proposer for step 384207687.
2018-09-13 12:25:52 IO Worker #1 TRACE engine Fetched proposer for step 384207688: 0x4e65…162e
2018-09-13 12:25:52 IO Worker #1 TRACE engine generate_seal: Issuing a block for step 384207688.
2018-09-13 12:25:52 IO Worker #1 INFO import Imported #6 0xa15f…f94d (0 txs, 0.00 Mgas, 10 ms, 0.79 KiB)
2018-09-13 12:25:56 IO Worker #3 DEBUG engine Set of validators obtained: [0x4e65fabe9a857524d0a3c7a69308462fe9fc162e, 0x5e27485c0ab3ec9f87429b0fed98b244c52f7d76, 0x5e27485c0ab3ec9f87429b0fed98b244c52f7d77, 0x5e27485c0ab3ec9f87429b0fed98b244c52f7d78]
2018-09-13 12:25:56 IO Worker #3 TRACE engine Fetched proposer for step 384207689: 0x5e27…7d76
2018-09-13 12:25:56 IO Worker #3 TRACE engine generate_seal: 0x4e65…162e not a proposer for step 384207689.
2018-09-13 12:26:00 IO Worker #0 TRACE engine Fetched proposer for step 384207690: 0x5e27…7d77
2018-09-13 12:26:00 IO Worker #0 TRACE engine generate_seal: 0x4e65…162e not a proposer for step 384207690.
2018-09-13 12:26:04 IO Worker #1 TRACE engine Fetched proposer for step 384207691: 0x5e27…7d78
2018-09-13 12:26:04 IO Worker #1 TRACE engine generate_seal: 0x4e65…162e not a proposer for step 384207691.
2018-09-13 12:26:08 IO Worker #2 TRACE engine Fetched proposer for step 384207692: 0x4e65…162e
2018-09-13 12:26:08 IO Worker #2 TRACE engine broadcasting empty step message: EmptyStep { signature: 0xb469fa8c0e80ec46cd9c8beeb5751064a01dfd1f29bfae29c12d340953ccdf97297f0e9d2bee38ebb5cf1bff624494ef2ffa11d05cde5c106376d2a136ad3e9801, step: 384207692, parent_hash: 0xa15f3c2338ac7c0ff59f7c4d9af4118046c4d0df1d04b1897358fedd7618f94d }
2018-09-13 12:26:09 IO Worker #0 INFO import 0/25 peers 19 KiB chain 25 KiB db 0 bytes queue 448 bytes sync RPC: 0 conn, 0 req/s, 351 µs
2018-09-13 12:26:12 IO Worker #1 TRACE engine Fetched proposer for step 384207693: 0x5e27…7d76
2018-09-13 12:26:12 IO Worker #1 TRACE engine generate_seal: 0x4e65…162e not a proposer for step 384207693.
2018-09-13 12:26:16 IO Worker #2 TRACE engine Fetched proposer for step 384207694: 0x5e27…7d77
2018-09-13 12:26:16 IO Worker #2 TRACE engine generate_seal: 0x4e65…162e not a proposer for step 384207694.
2018-09-13 12:26:20 IO Worker #0 TRACE engine Fetched proposer for step 384207695: 0x5e27…7d78
2018-09-13 12:26:20 IO Worker #0 TRACE engine generate_seal: 0x4e65…162e not a proposer for step 384207695.
2018-09-13 12:26:24 IO Worker #1 TRACE engine Fetched proposer for step 384207696: 0x4e65…162e
2018-09-13 12:26:24 IO Worker #1 TRACE engine broadcasting empty step message: EmptyStep { signature: 0xc07500d1a2cff2bb3c7950e3704f3fe6b157c6768953ebf198103f6c45aa66865716f1e03beb692a0850df8252d5f9f53b2a4db616761127cae6b2f4f316e65901, step: 384207696, parent_hash: 0xa15f3c2338ac7c0ff59f7c4d9af4118046c4d0df1d04b1897358fedd7618f94d }
2018-09-13 12:26:28 IO Worker #0 TRACE engine Fetched proposer for step 384207697: 0x5e27…7d76
2018-09-13 12:26:28 IO Worker #0 TRACE engine generate_seal: 0x4e65…162e not a proposer for step 384207697.
2018-09-13 12:26:32 IO Worker #3 TRACE engine Fetched proposer for step 384207698: 0x5e27…7d77
2018-09-13 12:26:32 IO Worker #3 TRACE engine generate_seal: 0x4e65…162e not a proposer for step 384207698.
2018-09-13 12:26:36 IO Worker #0 TRACE engine Fetched proposer for step 384207699: 0x5e27…7d78
2018-09-13 12:26:36 IO Worker #0 TRACE engine generate_seal: 0x4e65…162e not a proposer for step 384207699.
2018-09-13 12:26:39 IO Worker #0 INFO import 0/25 peers 19 KiB chain 25 KiB db 0 bytes queue 448 bytes sync RPC: 0 conn, 0 req/s, 351 µs
2018-09-13 12:26:40 IO Worker #2 TRACE engine Fetched proposer for step 384207700: 0x4e65…162e
2018-09-13 12:26:40 IO Worker #2 TRACE engine broadcasting empty step message: EmptyStep { signature: 0xe540597ee492004b18a5c012256dc0232915f9b2489d848fab3eeda93bee612743c604c1b370a32820821e97da477b02f00cae0f551220182f5c96c3ce145eae01, step: 384207700, parent_hash: 0xa15f3c2338ac7c0ff59f7c4d9af4118046c4d0df1d04b1897358fedd7618f94d }
2018-09-13 12:26:44 IO Worker #0 TRACE engine Fetched proposer for step 384207701: 0x5e27…7d76
2018-09-13 12:26:44 IO Worker #0 TRACE engine generate_seal: 0x4e65…162e not a proposer for step 384207701.
2018-09-13 12:26:48 IO Worker #3 TRACE engine Fetched proposer for step 384207702: 0x5e27…7d77
2018-09-13 12:26:48 IO Worker #3 TRACE engine generate_seal: 0x4e65…162e not a proposer for step 384207702.
2018-09-13 12:26:52 IO Worker #3 TRACE engine Fetched proposer for step 384207703: 0x5e27…7d78
2018-09-13 12:26:52 IO Worker #3 TRACE engine generate_seal: 0x4e65…162e not a proposer for step 384207703.
2018-09-13 12:26:56 IO Worker #0 TRACE engine Fetched proposer for step 384207704: 0x4e65…162e
2018-09-13 12:26:56 IO Worker #0 TRACE engine generate_seal: Issuing a block for step 384207704.
2018-09-13 12:26:56 IO Worker #0 INFO import Imported #7 0x6bdc…7648 (0 txs, 0.00 Mgas, 8 ms, 0.79 KiB)
2018-09-13 12:27:00 IO Worker #2 DEBUG engine Set of validators obtained: [0x4e65fabe9a857524d0a3c7a69308462fe9fc162e, 0x5e27485c0ab3ec9f87429b0fed98b244c52f7d76, 0x5e27485c0ab3ec9f87429b0fed98b244c52f7d77, 0x5e27485c0ab3ec9f87429b0fed98b244c52f7d78]
2018-09-13 12:27:00 IO Worker #2 TRACE engine Fetched proposer for step 384207705: 0x5e27…7d76
2018-09-13 12:27:00 IO Worker #2 TRACE engine generate_seal: 0x4e65…162e not a proposer for step 384207705.
^C2018-09-13 12:27:01 main INFO parity_ethereum::run Finishing work, please wait...