Poor network conditions refer to an even where number of active validators falls below a safety threshold defined by MinValidators network Property. Such even can have many potential causes:
Malicious DOS/DDOS attack on the validators who do NOT use sentry nodes to protect their server
Coordinated censorship by multiple ISP's used by validators
DNS servers attacks / event where addresses are routed incorrectly
Failed network upgrade resulting in unforeseen state machine behaviour
The "Great Firewall 2.0" and other global political events influencing global internet
etc...
In such critical scenarios network must ensure safety of the user funds until number of active nodes recovers to the safety threshold levels as defined by MinValidators. One of such measures is PoorNetworkMaxBankSend Network Property defining the maximum amount of funds that can be transferred during poor network conditions. The PoorNetworkMaxBankSend can be set to value equal to the MaxTxFee thus prevent potential assets heist by malicious validators. Centralized custodians can observe MinValidators as well as PoorNetworkMaxBankSend and thus determine if they should accept transfers coming from the network / fork where validator count suddenly fell below the BFT/safety threshold. In short the Poor Network Conditions is a KIRA consensus feature preventing malicious validators from slowly DOS/DDOS'ing and kicking off honest validators from the set, thus gaining unfair advantage and ability to successfully execute a malicious fork and cheat centralized custodians.
One of the poor network conditions feature is ability to define which Transaction Message Types are allowed to be submitted on-chain thus further prevent any unsuspected network activity to occur while number of nodes is not sufficient to safely operate the chain. By default following set of messages is recommended: submit_evidence,submit-proposal,vote-proposal,set-network-properties,activate,pause,unpause
Commands Examples
Updating Allowed Transaction Types
Bash
Copy
# CLI
sekaid tx customgov proposal set-poor-network-msgs "$MESSAGES" \
--title="Update poor network messages" --description="Allowing submission of '[$MESSAGES]' during poor network conditions" \
--from "$ACCOUNT" --chain-id=$NETWORK_NAME --keyring-backend=test --fees=100ukex --yes --log_format=json --broadcast-mode=async --output=json
# KM
# setPoorNetworkMessages <account> <comma-transaction-types>
setPoorNetworkMessages $ACCOUNT $MESSAGES
Query Allowed Messages
Bash
Copy
# CLI
sekaid query customgov poor-network-messages --output=json --home=$SEKAID_HOME | jq
# KM
showPoorNetworkMessages
# Example Output:
{
"messages": [
"submit_evidence",
"submit-proposal",
"vote-proposal",
"claim-councilor",
"set-network-properties",
"claim-validator",
"activate",
"pause",
"unpause"
]
}