-
Notifications
You must be signed in to change notification settings - Fork 25
feat: operator doppelgänger protection with slot-based detection #692
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 56 commits
dfaf1b4
5e2b95e
fd01236
4237308
be56784
f776d11
eb99a99
3117374
67b7126
4834057
8f98ea0
91836e3
d93ef67
64146a6
e268715
982db2e
892fcf6
8006a91
741c8ad
58170c6
9276f25
632f5d4
db1d9b2
ffc12a2
90b58b1
e0bd8b2
2d1b48c
fc962b0
00c7546
c06e7ce
571c3f8
5a8ba76
433feba
b4212b1
ba86842
de1a339
26ff439
2aa1ffb
56ef9a8
7122d72
885ab36
072924a
716b85c
cd826ae
c56dd46
550aea5
ff3c4a9
0fda8d4
a1a59b3
3ea5c20
ba750d4
42a1756
03f56a0
9ca3edb
fccefd0
d1499db
0d9948a
b2172a6
9b53677
1269e0c
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -491,6 +491,32 @@ pub struct Node { | |
| #[clap(long, help = "Disables gossipsub topic scoring.", hide = true)] | ||
| pub disable_gossipsub_topic_scoring: bool, | ||
|
|
||
| // Operator Doppelgänger Protection | ||
| #[clap( | ||
| long, | ||
| help = "Enable operator doppelgänger protection. When enabled, the node blocks all \ | ||
| outgoing messages and monitors the network for messages signed with its operator ID \ | ||
| that reference slots after startup. Shuts down if a twin operator is detected \ | ||
| to prevent QBFT protocol violations. Enabled by default.", | ||
| display_order = 0, | ||
| default_value_t = true, | ||
| help_heading = FLAG_HEADER, | ||
| action = ArgAction::Set | ||
| )] | ||
| pub operator_dg: bool, | ||
|
|
||
| #[clap( | ||
| long, | ||
| value_name = "EPOCHS", | ||
| help = "Number of epochs to monitor for twin operators using slot-based detection. \ | ||
| During monitoring, outgoing messages remain blocked and the node checks incoming \ | ||
| messages for slots after startup to detect duplicate operator instances.", | ||
| display_order = 0, | ||
| default_value_t = 2, | ||
| requires = "operator_dg" | ||
| )] | ||
| pub operator_dg_wait_epochs: u64, | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. we are not actually waiting anywhere
Member
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. it's a bit weird that when we use this, we need to set |
||
|
|
||
| #[clap(flatten)] | ||
| pub logging_flags: FileLoggingFlags, | ||
| } | ||
Uh oh!
There was an error while loading. Please reload this page.