Commit Graph

164 Commits

Author SHA1 Message Date
Leo 3f81840e69 node/pkg/p2p: use mutex for error counters
Change-Id: Idde862e034c567b7ac2d5648bec0b3505f032b0c
2021-08-10 18:47:50 +02:00
Leo 212e04a72d node/pkg/ethereum: poll for guardian set changes
The new set of Eth contracts no longer emits an event.

Change-Id: I6c3654c88960b08b5548ed72cf09e555b079ef3a
2021-08-10 17:39:10 +02:00
Leo e9491d25f8 node/pkg/publicrpc: add GetCurrentGuardianSet RPC call
This is required for network explorers to know about missing guardians
(the GetLastHeartbeats call won't contain those nodes at all).

Change-Id: I28d8621023d79e6fa94c40f36a239c34aa12f1b0
2021-08-10 17:35:33 +02:00
Leo 67793cd144 node/pkg/p2p: add per-chain error counters
Change-Id: I47700ccb2dc93aefefa8ab6b6f0659f30912e142
2021-08-10 13:24:43 +00:00
justinschuldt 6126cfaf40 SignedObservation validation log message
Change-Id: I372f2ee703b5cc82a6a7e1f4df031357304b174b
2021-08-09 17:38:19 -05:00
Leo 8718e31fb4 node/pkg/p2p: remove support for plain heartbeats
Change-Id: I621467615c2a46ab08ecae6227021b1e4efc1196
2021-08-09 13:16:55 +00:00
Leo 73b0fce440 node/pkg/p2p: add metric for guardian network heights
Change-Id: Ie09d203d316a448dba5d4ac9269113467e2da78e
2021-08-09 13:16:55 +00:00
Leo 61a90136ca proto: add boot_timestamp to Heartbeat
Allows for precise uptime calculation.

Change-Id: I57d022ec10a56df57a4a1f79ae892eb8899f7154
2021-08-09 13:16:55 +00:00
Leo c7662d611e node: store heartbeats for multiple nodes per guardian
It's safe to break the proto API at this point.

Change-Id: I235100c5fef3abc9259d28f68d9bb7bf2be0ae5e
2021-08-09 13:16:55 +00:00
Leo e46d70bbe2 node/pkg/readiness: be even more explicit about readyz
RTFM!

Change-Id: I6f4eefb8f6d22fcd620b24658b3c2cfd0b48c949
2021-08-09 13:16:55 +00:00
Leo 61dd1c1052 node/cmd: unary list-nodes call with details
Change-Id: I9953b45d92461887b075b3456bdd9e161eefd263
2021-08-09 13:16:55 +00:00
Leo 336f373bb5 node/pkg/p2p: store own heartbeat in GuardianSetState
Change-Id: I6b9ab2ce267161d20c17d5d528fd7741c2eb48b4
2021-08-09 13:16:55 +00:00
Leo 3dcf1f1998 node/pkg/common: add GetAll accessor for GuardianSetState
Change-Id: I7ce71d356f9fc83cc751e98835cbae070deb8640
2021-08-09 13:16:55 +00:00
Leo 8cee72ba9c node: add disableHeartbeatVerify flag
During network boot, the guardian set is empty and we temporarily
need this flag to figure out everyone's status.

Change-Id: I8ba23848310837080ae845d55ece5d3818181b98
2021-08-06 15:14:17 +00:00
Leo 82731c22c0 node: add GetLastHeartbeats RPC call
This aggregates verified guardian heartbeats server-side so they
can be fetched via unary calls.

Change-Id: I8458b139bb5d75f87ed700b50684a5ff8ca594fa
2021-08-04 14:26:26 +00:00
Leo b77d408235 node/pkg/ethereum: readiness status for bsc
Bug: certusone/wormhole#292
Change-Id: Ibb176dc70beeb2c00c7faf7d85395e93d53e9e4c
2021-08-02 14:30:29 +02:00
Leo 3af233e3eb node: add GuardianSetState and verify heartbeat signature
Bug: certusone/wormhole#267
Change-Id: Ica8015fbbd52506d800670d933051f410bb1caa7
2021-07-31 19:02:09 +02:00
Leo 08a8f390ca node/pkg/version: panic on empty version
Change-Id: I72207193e459122596f9731b36f45f619ccdad6c
2021-07-31 17:15:51 +02:00
Leo fddbb0c2a4 node: remove outdated TODOs
Change-Id: I05c2e2599e081fb439fd186ee853c0b7ca508969
2021-07-31 16:32:54 +02:00
Leo 2ebf473531 node: introduce SignedHeartbeat
Bug: certusone/wormhole#267
Change-Id: Ia34fa053240d7b340287cc4cc1e15556d3ff2893
2021-07-31 16:21:38 +02:00
Leo 723cf5fe95 node: add GetSignedVAA endpoint
Works:

$ curl 'http://localhost:7071/v1/signed_vaa/1/1268b2bf4a[...]/0'
{"vaaBytes":"AQAAAAABACbK50nrmgWPtTmRlYf/[...]"}

Bug: certusone/wormhole#282
Change-Id: I09eade00c4649c550f06a2efe350d6d9ff9da3ae
2021-07-31 03:03:37 +02:00
Leo 9c9c48ef3b Migrate proto generation to buf
Bug: certusone/wormhole#282
Change-Id: Ib20d8b9bcf19a26b12a586532281d83e95f0653e
2021-07-31 03:03:36 +02:00
Leo 7e0bbdbe6e node/pkg/db: store signed VAAs in database
Bug: certusone/wormhole#282
Change-Id: Iecd4ff74a1e73655ac3240991a4dc36e572cdb15
2021-07-31 03:03:35 +02:00
Leo b2495ca43e node/pkg/solana: fix solanaConnectionErrors panic
Change-Id: I75889897e47902abe54cc45153934e73f1f3dcd4
2021-07-30 22:46:20 +02:00
Leo d37375e9a3 node/pkg/solana: simplify client method signatures
Change-Id: Ic317c78d7415dc11baf39d696ebdd57336b219bc
2021-07-30 09:06:25 +00:00
Leo 493b7ee855 node/pkg/solana: filter by requested consistency level
certusone/wormhole#248

Change-Id: Ib40b6016bda19e17c4700db6b39dbf340dfc0f4c
2021-07-29 15:55:57 +00:00
Leo 5bfa3b0055 node/pkg/solana: run one Solana watcher per consistency level
certusone/wormhole#248

Change-Id: I98abc6b4e635b8b5679fcda5342c90b0e5c96077
2021-07-29 14:27:04 +00:00
Leo b9633d6d65 node/pkg/solana: fork solana-go to add GetConfirmedTransactionWithOpts
certusone/wormhole#248

Change-Id: I093d619cb82b35b963447cf4a5dc18ef6be1a0f5
2021-07-29 14:14:09 +02:00
Leo cd8d2f68ed node/pkg/solana: verbose logging for observations
certusone/wormhole#248

Change-Id: Iae4b4d187e8d6728de9087e43c5f8a7b4d821540
2021-07-29 14:14:09 +02:00
Leo d5e6c844e3 node/pkg/solana: add initial logic for block-by-block requests
CPI part is untested.

Commitment level is hardcoded to "finalized", but can be refactored
to use both "committed" and "finalized" later.

certusone/wormhole#248

Change-Id: I5ae7711c306b33650367e6f7a417ab9d88753612
2021-07-29 12:14:01 +00:00
Leo b70466d185 node/pkg/solana: use gagliardetto/solana-go fork
This fork is up to date on latest Solana changes, while the dfuse
origin appears to be abandoned:

https://github.com/dfuse-io/solana-go/compare/master...gagliardetto:main

Change-Id: I5d2999ec7e26bd79a8302e2a5a6dddfd5e2bcbee
2021-07-28 16:34:24 +00:00
Leo cf9ea6bfde node: add Binance Smart Chain support
BSC is identical to Eth, so we can just re-use our Eth devnet.

Fixes certusone/wormhole#185

Change-Id: Ib96a71b5e5873d7cbd8f26dbb655049c6a64cef9
2021-07-28 16:34:24 +00:00
Leo 1686b35587 node/pkg/ethereum: remove emitGuardianSet flag
Change-Id: Ic275220080d29b5a834f6487502619df877059c9
2021-07-28 16:34:24 +00:00
Leo f717262282 node/pkg/ethereum: rename lockup to message
Change-Id: I914d348940ac3f0c359a4d5175cbe5861e9fe1c2
2021-07-28 16:34:24 +00:00
Leo 863e0e69ec node/pkg/ethereum: configurable chain ID and name
Fixes wormhole/issues#247

Change-Id: Ieb792b73970603283e4ffc4a8b9217c85964fb9f
2021-07-28 16:34:24 +00:00
Leo 514560f52c node: use promauto to auto-register metrics
Fixes certusone/wormhole#188

Change-Id: I26c0e3f05993e44185b6ee2531b7673f7fbc0eb6
2021-07-26 13:01:55 +00:00
Leo 54b2e51379 publicrpc: move runnable to cmd/guardiand
This matches the adminrpc implementation, removing the runnable
and socket listener from pkg/publicrpc API surface.

Change-Id: Ia6461c2ff839f39462391c5afd2694b1619b30b6
2021-07-22 13:26:19 +02:00
Leo a897166a0c publicrpc: expose PublicrpcServer
This is necessary if we want to register the service
with an existing gRPC server, rather than a separate service.

Also renames PublicRawHeartbeatConnections to RawHeartbeatConns
for brevity and fixes some typos.

Change-Id: If508de0e2fa68738ba204c4aafa1159139c6d1f8
2021-07-22 13:18:22 +02:00
Leo 07106497f1 readiness: fix data race
Change-Id: If548f2b28d4ebaaa7d5a2127f684371fad6c2451
2021-07-21 19:52:51 +00:00
Leo 052d922036 Clean up docs and packages for v2
Change-Id: I1020e648f4a8bd51412cf06196e78665308efdac
2021-07-21 19:46:10 +02:00
Hendrik Hofstadt 98810080cc Fix readiness probe in guardian
Change-Id: Ia83ba29a7facf687d1765bf45fe012969a9835dc
2021-07-21 14:05:13 +00:00
Hendrik Hofstadt 9fbb8d76c9 Remove persistence remainders from the guardian
Change-Id: I1c4c02820c2e5c0aca0c07402b854ffebd5cff0b
2021-07-20 23:50:38 +02:00
Hendrik Hofstadt c0228415f8 Fix devnet
Change-Id: I1d62e6323cc2169cce43581f9aeefb537bc84a76
2021-07-20 23:34:37 +02:00
Leo af31436915 node: remove VAA submission and channel
Change-Id: Iae82b6353852dc052a7e220f483e5557a0f157c4
2021-07-20 23:17:47 +02:00
Leo 584bfcba2d node: remove terra fee payer
Change-Id: Iffdf5a790fd546b9b43137ee03018da3d94d3ac8
2021-07-20 23:17:47 +02:00
Leo d509693367 node: remove Solana VAA submitter and agent connection
Change-Id: I6201b00f3cbf9f0fee0cc14ce8fdc8ca8583ce97
2021-07-20 23:17:47 +02:00
Leo 772922c9a6 node: remove terraEnabled flag
Terra is now always enabled

Change-Id: I2a898dd1a5027d1981cc4c65a65d14bd7c0f9fb0
2021-07-20 23:17:46 +02:00
Hendrik Hofstadt bb446fb338 Double hashing in the guardian
Change-Id: Ieeb9d9c0e258cf63ae0ce1d7fd1215eef6f1ced2
2021-07-20 16:06:45 +00:00
Hendrik Hofstadt af4e29978d Add commitment level to VAAs
This allows requesting attestations for various commitment/confirmation levels. This is helpful for low-latency applications like Pyth.

Change-Id: Ib49ace163365106b227613d2f66b787b3e5f5461
2021-07-19 07:11:45 +00:00
Hendrik Hofstadt 0f854dc08b Track optional persistence in guardian and terra
Also reformatting

Change-Id: Ibdc426aa09a74a6f564090bb838be1b037a9fce1
2021-07-05 18:02:04 +00:00