Commit Graph

2327 Commits

Author SHA1 Message Date
Bruce Riley 7da21a60b6 Should not govern algorand yet 2022-08-10 14:31:19 -04:00
wonge97 beee9d1cba
Governor Guardian admin commands (#1416)
* Governor Guardian admin commands

Opening PR describing the types of admin commands that Guardians would have in relation to the Governor security module.

* Update GOVERNOR.md

Small wording tweak to remove a duplicative clause
2022-08-10 13:00:48 -04:00
Bruce Riley 5ca2faa9a3 Governor should handle duplicate coin gecko ids 2022-08-10 12:59:32 -04:00
wonge97 09b33552df Chain Governor
Opening this PR for open feedback on a security feature that Guardians can optionally opt into that would limit the amount of notional value that can be transferred out of a given chain in a given time frame -- this would reduce the damage to the bridge during an existential threat scenario.
2022-08-10 12:20:34 -04:00
Josh Siegel e738eda7fd algo/audit: More security improvements 2022-08-10 10:17:58 -05:00
Josh Siegel 5470ed134a algo/audit: address KS-RL-12 @ gusc1a-ossdev-jsl5 2022-08-10 10:17:58 -05:00
Josh Siegel e385c8096d algo/audit: KS-RL-05 @ gusc1a-ossdev-jsl5 2022-08-10 10:17:58 -05:00
Josh Siegel 15be6cc73f algo/audit: KS-RL-04 - invalid asset check @ gusc1a-ossdev-jsl5 2022-08-10 10:17:58 -05:00
Josh Siegel d189f17320 algo/audit: KS-RL-03 @ gusc1a-ossdev-jsl5 2022-08-10 10:17:58 -05:00
Josh Siegel 44ceda5e10 algo/audit: Fix KS-RL-02 @ gusc1a-ossdev-jsl5 2022-08-10 10:17:58 -05:00
Josh Siegel 3a0a39a961 algo/audit: address KS-RL-01 @ gusc1a-ossdev-jsl5 2022-08-10 10:17:58 -05:00
Josh Siegel 7e958c1643 near/backwards: RPC jumping causes us to think the chain went backwards 2022-08-10 10:10:05 -05:00
Bruce Riley edfd9987aa Initial gonvernor mainnet config
Change-Id: Ia84a9bd79bb15a4915e54cf019be23f8eee0fdcf
2022-08-10 10:28:24 -04:00
bruce-riley 8557b6d232
More governor code review rework (#1404)
* More code review rework

Change-Id: I0ae094b16a8e0469f83f711e7118936abf70b109

* Fix lint error

Change-Id: Ie3bdcc61a8c475018a8f72c9cc84678779447d16

* Code review rework

Change-Id: Ief1119e7c9687db855fbee90d32f631630380e60

* Add features list to gossip heartbeat message
2022-08-09 23:22:14 -04:00
Kevin Peters cc5ecb315e bridge_ui: Removed Klaytn from beta 2022-08-09 18:37:42 -04:00
Csongor Kiss c585533529 CI: install foundry before running tests 2022-08-09 20:02:47 +01:00
Csongor Kiss 2e890f02b3 ethereum: be more explicit about invalid guardian + test 2022-08-09 20:02:47 +01:00
Csongor Kiss 85a8f2e733 ethereum: add forge script to generate BridgeToken constructor args 2022-08-09 20:02:47 +01:00
Csongor Kiss 520cbbb6ca ethereum: touch up foundry scripts 2022-08-09 20:02:47 +01:00
Csongor Kiss 3e051e97b6 ethereum: Init foundry project and add installer for native solc 2022-08-09 20:02:47 +01:00
Leopold Schabel d3440f879d
.github/workflows: clean workspace on self-hosted runners (#1413) 2022-08-09 18:14:30 +02:00
Csongor Kiss 9c9f5b4b23 terra/token_bridge: fixed wrapped asset ids
The wrapped assets on terra have been migrated to code id 767, but the
config wasn't updated to store this new code id, so newly created
wrapped assets all use an older code id. This patch upgrades all wrapped
assets to 767 and changes the config so future wrapped assets also use
that code id.

Also added a new function `migrate_wrapped_assets` so this task can be
done in the future in a less error-prone way.
2022-08-08 12:42:32 -05:00
Csongor Kiss aea76be327 terra: Ensure that recipient address is 32 bytes.
Before this check, users were able to lose funds by sending money to an
address that's shorter than 32 bytes.
This commit is essentially a backport of the fix from the new cosmwasm contract.
2022-08-08 12:12:14 -05:00
Jeff Schroeder 45de97015c
Add issue template (#1400)
Simple issue template with a few disclaimers for wormhole.
2022-08-08 09:54:59 -04:00
Jordan Liggitt 660bddac6b
Switch tools to standalone cobra-cli dependency (#936) 2022-08-05 13:49:57 -04:00
jumpsiegel 3f965da33b
node: add near support (#1397)
* node: add near support

* Tweaks suggested in zoom review

Co-authored-by: Bruce Riley <briley@jumptrading.com>
2022-08-05 13:49:16 -04:00
Jeff Schroeder bb4d2ac206
Modular relayer support (#1266)
* Add the default backend for the relayer

Start to slowly split things out.

* Configure the backends when configuring the env

* First stab at the pluggable listener backend

* Update relayer example (and test) config

* relayer: JIT backend

* relayer: walletMonitor remove useless function

* relayer: update worker init() funcs

It is silly to accept a boolean in thing.init() vs just not running init
if you don't want to run thing.

* relayer: remove env property from Listener

It is verified in init() in spy_listener.ts and rest_listen.ts, so it can
be deferred to not require the import.

* relayer: clean up the main bits

Only try to init() something when it is actually supposed to run
per the cli flags.

* spy_relayer: more descriptive var name in main

* spy_relayer: Update relay worker with more docs

* spy_relayer: add targetChainName to WorkerInfo

This makes it easier to pretty print the chain name in the logs without
having to look the name up.

* spy_relayer: update logs and use the backend

* Use the Relayer interface's process() method in place of processVaa()
* Update the logs to include the chain name in the worker and auditor threads

* spy_relayer: remove processRequest()

It has been moved to the process() method of the default Relayer backend.

* spy_relayer: start fleshing out the Relayer default

* spy_relayer: fix a logic bug in checkQueue()

Co-authored-by: @swimricky

* spy_relayer: update TokenBridgeRelayer.process()

* Remove some extra logic
* Actually use the ChainId type since the id of 0 is in the sdk now

* spy_signature: add Relayer.runAuditor()

The auditor code is payload specific and needs to be with the backend.

* spy_relayer: move Relayer.runAuditor()

Make it part of the backend since the backend has all of the payload
specific logic into it.

* spy_relayer: move relay() --> Relayer.relay()

The actual relaying is part of the backend, so make it so.

* spy_relayer: add Relayer.runAuditor()

* spy_relayer: no more deprecated hexToNativeString

* spy_relayer: implement Relayer.targetChainId()

This is used for finding workable items in the incoming queue to toss
into the working queue.

* spy_relayer: remove relay.ts

The relay() function was moved to Relayer.relay()

* spy_relayer: more uses of deprecated hexToNativeString()

* spy_relayer: remove unused import

* spy_relayer: review feedback from @bruce-riley

* Fix some spelling tyops
* Simplify some logging
* Simplify a conditional for the payload version check

* spy_relayer: misc fixes and code clean up

* Fixed integration tests
* Added launch.json file for debugging in VS Code
* Updated to latest wormhole SDK
* Backup queue uses same key as redis
* Added Terra Classic flag
* Throttle potential infinite loop in audit thread
* Fixed spy service connection leak

Co-authored-by: Evan Gray <battledingo@gmail.com>
Co-authored-by: Kevin Peters <kpeters@jumptrading.com>
2022-08-05 10:20:36 -04:00
justinschuldt 2c52f86546 add Prometheus + Grafana for Guardian metrics 2022-08-04 16:03:56 -04:00
bruce-riley 126c9dcf57
Add is_enqueued_vaa query to governor (#1395) 2022-08-04 11:51:04 -05:00
bruce-riley f0b7225591
Pythnet mainnet deploy (#1388) 2022-08-04 09:51:38 -05:00
Kevin Peters 910eb0f3e0 fix terra classic native token parsing
when a native denom is received (complete transfer native),
check if the token chain is terra classic
2022-08-03 12:02:02 -05:00
Csongor Kiss 1a758011e0 CI: don't build foundry from source
the upgrade script just uses docker now
2022-08-03 11:58:31 -04:00
Csongor Kiss ebdf66c8c4 CI: use working docker image for anvil in upgrade simulation testing 2022-08-03 11:58:31 -04:00
Kevin Peters 5c1a2fe182 cloud_functions: Use CoinGecko API IDs from allowlist in TVL calculations
Specify the CoinGecko API ID for tokens in the allowlist.
It's useful to manually specify the API ID to in certain cases.
2022-08-03 11:58:18 -04:00
tbjump 0809bd8874 Correct date in SECURITY.md 2022-08-02 15:57:18 -04:00
Kevin Peters a9b05d8868 sdk/js: 0.6.0 version bump and formatting changes 2022-08-01 12:33:53 -04:00
Chirantan Ekbote f64703c815 sdk/js: Add wormhole chain 2022-08-01 12:33:53 -04:00
Chirantan Ekbote 13a18d2f7e sdk/js: Move address functions to cosmos package
`canonicalAddress` and `humanAddress` are useful functions for all
cosmos chains so move it into a new cosmos package.  This also means we
need to stop hardcoding "terra" in `humanAddress` and take the human
readable part as a parameter instead.
2022-08-01 12:33:53 -04:00
Evan Gray e0fd3e788f
node: pythnet testnet support (#1380) 2022-07-28 12:30:00 -05:00
Bruce Riley d010f0d430 Deploy read only moonbeam 2022-07-21 16:23:08 -04:00
Bruce Riley d40f969d47 Deploy read only chains 2022-07-21 09:17:29 -04:00
Csongor Kiss f50586ad86 cosmwasm: move chain id and fee denom to storage
Prior to this change, these values were hardcode in the contract, as
the only supported chain was terra 2. This change allows the contract to
be deployed to other cosmwasm chains without having to recompile the
contract for each one.

The migration code ensures that terra2 is upgraded appropriately.
2022-07-20 16:09:39 -04:00
Kevin Peters eacb7c3f06 cloud_functions: Added LOAD_CACHE env variable
Can be set to false to effectively rebuild cache files.
2022-07-20 16:09:11 -04:00
Jeff Schroeder 3ce18fd66d Add the opencontainers source label to the relayer Dockerfile 2022-07-19 21:15:49 -04:00
Jeff Schroeder d9bde7e547 Build a relayer container image for each release
This, in addition to #1367, should make it easier for more people
to run their own relayer.
2022-07-19 21:15:49 -04:00
Evan Gray 577d9b35f8 sdk/js: parallelize tests 2022-07-19 19:43:41 -04:00
Kevin Peters c5a7d3e517 cloud_functions: use daily token prices to compute cumulative TVL
Use daily token prices to compute TVL instead of the prices fetched
at token transfer time, if available.

Added inactive tokenlist to exclude tokens that have essentially been
deactivated by CoinGecko (market data no longer available).
2022-07-19 16:45:21 -04:00
bruce-riley 7402259fc7
Chain governor (#1277)
* Rebase

* Reload from db on start up

Change-Id: I1deac9db28ad1157ea7e0c84af41c35b38497f4e

* Console commands

Change-Id: Ic242038312b7c837443a2df8823f100b3cdffd77

* Query prices from CoinGecko

Change-Id: I9a8c282ba374d32ef7045d11979a27ede3c52827

* Move chain config to separate file

Change-Id: I6a790eca765bce1f2caf48134e225df5c4daff15

* More code cleanup

Change-Id: Id12affa78cdc2d394d6dab0c53bb7ad06df8007e

* Few minor tweaks

Change-Id: I6cb511599d669e0b3d716d9f314ac0f26935ee92

* Create separate tests for different packages

Change-Id: Idb4da6817c9daad2a7420abc11bdaa702ae056dc

* Fix lint errors

Change-Id: I137c9e7e4574aee9c9fec22e91e19eee0e86a349

* Simplify chainlock message tests

* Add more governor db test coverage

* Next batch of review rework

Change-Id: Ife54852fca6c6990d1ffb3d60a8dd7f49d526f0a

* Still more rework

Change-Id: I43a8aa7fa4e1a7cea4d7fde68c963123c1ca8d53

* More rework

Change-Id: I9382412af4ffeda74967a834a6b0195a9d28b720

* Fix lint errors

Change-Id: Idaafce9b0314192557b7207911375d000bac5ae2

* Add rest and prometheus support

Change-Id: Ib870ed7eb305ef1ebbf6a7cedabc665c37c19171

* Add separate configs for testnet and devnet

Change-Id: I76b11d8940a8dc9935b3f276a008ed20ef60b850

* Update mainnet tokens to fix decimals

Change-Id: Iab018827766bc7748038b7be2f51342afb79b87c

* Let small enqueued VAAs go out when big ones can't

Change-Id: I7d3ef88d4579702d0c6ff4eaf5a8524799610ff6

* Tweak testnet config parameters

Change-Id: Id2c54151a7183ab3fb4af8060929198f6021ba4e

* Rework / enhancements from testnet testing

Change-Id: I1387b1d22667fa6ffe0bb1832dbc0b31196505d3

* Use known emitter maps

Change-Id: If330ee9d30ac3c2d1c6dca674f7777dc759de230

* Fix typo and out of date comments

Change-Id: I54a19792104ccc6ca023020303a710ef3ba18f74

Co-authored-by: claudijd <jclaudius@jumptrading.com>
2022-07-19 14:08:06 -04:00
bruce-riley 53efeb8c87
Add read only chain IDs (#1370)
* Add read only chain IDs

* Should be treated as EVMs
2022-07-19 14:05:40 -04:00
Chirantan Ekbote 7a1b1344a1 node: processor: Make observation state generic
We need to reuse almost all of the gossip infrastructure for accounting
transactions, with the only difference being that accounting will use a
`Transfer` message rather than a `VAA`.

Make the observation stored in the processor state generic so that it
can be either a VAA or a Transfer.  The rest of the code is shared.
2022-07-19 10:51:15 +09:00