* node/cmd/guardiand: pythnet for mainnet
Pythnet is a read only chain that will only use the core bridge to
transfer messages to other chains. No tokens will be transferred
to pythnet, so it has no token or nft bridge.
* node/cmd/guardiand: fix help for solana flags
Commit `1753bb3: Send re-observation request when re-broadcasting local
observations` changed the processor code to automatically send
re-observation requests. If multiple guardians do this around the same
time that would lead to multiple re-observation requests for the same
transaction.
Deduplicate re-observation requests by keeping a cache of the requests
that were received in the last 11 minutes. Any request that's already
in the cache will not be forwarded to the chain-specific observation
code. The 11 minute value was chosen because the guardians will send
these requests approximately every 5 minutes.
Also move the re-observation code into a standalone function so that it
can be more easily tested.
Configure the bootstrapping nodes that we will connect to to seed and refresh
the Routing Table if it becomes empty.
Fixes an issue where the spy stops receiving gossiped messages after the node
is restarted, because the Routing Table becomes empty and is never refreshed.
Currently if an observation hasn't reached quorum within 5 minutes, the
processor will re-broadcast the signed local observation to the other
guardians in the network. However if not enough guardians actually
observed the original tx, then no amount of re-broadcasting will help
the network reach quorum.
Fix this issue by sending a re-observation request whenever we
re-broadcast a signed local observation. This ensures that any
guardians that missed the tx the first time it happened have a chance to
re-observe it and help the network reach quorum.
Any goroutine can push into a channel so the current implementation has
a race condition where the channel can become full immediately after the
length check, causing the subsequent send on the channel to block.
Fix this by wrapping the send on the channel with a select block.
Control will fall through to the default case only if the actual send
operation blocks, avoiding the potential race with other goroutines.
This does not require a transaction simulation, and should serve as the
basis for future cosmwasm sdk functions in the `getIsTransferCompleted*`
family.
* Non-critical tweaks for the next scheduled deploy
* Make tests fail if mainnet config is invalid
* Make the test pass
* Add test to verify testnet config
* Add support for included token list to script
* Initial include list and algorand token addresses
* Fix typo in algorand token
* Lowering min notional to zero