Commit Graph

70 Commits

Author SHA1 Message Date
gagliardetto f6a9e60f31
shred: improve DataShredsToEntries performance
* Don't use reflection for shred decoding
* Add shred decoding benchmark
2022-09-19 13:46:29 +02:00
Richard Patel bb6d4ce6f6
shred: skip empty shreds
Encountered in mainnet slot 102763321 data shred index 484
2022-09-18 01:49:01 +02:00
Richard Patel 0f7098a795 shred: support recent legacy shred
Some time along Solana mainnet-beta history,
the legacy data shred header was extended
from 86 bytes to 88 bytes.

We don't know when exactly this change has happened.
Or whether the shred version is self-describing.

For now, add a simple switch by slot number.
2022-09-18 01:21:42 +02:00
Richard Patel 0585231e9f
blockstore: add genesis deshred test 2022-09-17 20:42:34 +02:00
Richard Patel 64f4cbec93
cmd/blockstore/verify-data: log txn and byte count 2022-09-17 20:26:16 +02:00
Richard Patel 047585136b
cmd/blockstore: add verify-data tool
Adds tool that scans over the ledger entries in a blockstore.
2022-09-17 18:51:24 +02:00
Richard Patel b1052fb69a
genesis: support genesis.bin
Adds handwritten serde for mainnet genesis config.
(Binary doesn't properly support bincode-fixedint-le)
2022-09-17 16:47:47 +02:00
Richard Patel fd64bc1d6a
runtime: add core ledger data structures
Adds structs that appear in the GenesisConfig object

Adds handwritten serde for runtime structs because
binary doesn't properly support bincode-fixedint-le
2022-09-17 16:46:26 +02:00
Richard Patel 452d388b5c
archiveutil: add OpenTar() for `.tar`, `.tar.gz`, `.tar.bz2`
Adds utility function that reads tar streams
with optional compression handling.
2022-09-17 16:39:47 +02:00
Pires ffd44286a8 pkg/util: Schroeder wants testify/assert
This will come in handy for sure very soon
2022-09-15 09:45:53 -05:00
Pires 6db3220d26 cmd/solrays: move IsValidHostname to pkg/util 2022-09-15 09:45:53 -05:00
Richard Patel d7cd878bc9 blockstore: accurately encode entry batches as YAML
Updates blockstore dump YAML schema to reflect that
slices of shreds map to slices of entries.

Adds a new "entry_batches" wrapper list that annotates
each slice of entries with shred range and encoded size.
2022-09-11 08:56:03 +02:00
Richard Patel 3c69cf0eea blockstore: decode mainnet genesis shreds 2022-09-10 19:56:59 +02:00
Richard Patel 62357507ff blockstore: add shreds, slot meta client 2022-09-10 14:30:49 +02:00
Richard Patel 816ab66d28 blockstore: add package, add RocksDB client 2022-09-10 14:30:49 +02:00
Richard Patel 3172d5b4af shred: initial shred package, handle data shreds 2022-09-10 14:29:37 +02:00
Richard Patel cddcfc155d cmd: add initial gossip pull 2022-09-08 19:40:32 +02:00
Richard Patel b4c108cc5c gossip: add CrdsFilter 2022-09-08 18:58:15 +02:00
Richard Patel 6bad7ba959 gossip: add Crds Pubkey accessor 2022-09-08 18:57:57 +02:00
Richard Patel 9a94d4e982 gossip: add interim Transaction deserializer 2022-09-08 18:57:34 +02:00
Richard Patel 52f8bf1a1b gossip: rename Client => Driver 2022-09-08 18:57:07 +02:00
Richard Patel 27a52d3407 gossip: refactor into network-agnostic state machine
- Adds network-agnostic gossip message RX multiplexer
- Adds PingServer and PingClient with blocking-style API
- simplify cmd/gossip/ping
2022-09-08 13:37:59 +02:00
Richard Patel 5a9f2ba9ab gossip: add message fixtures from turbine-go
https://github.com/terorie/turbine-go
2022-09-08 11:30:48 +02:00
Richard Patel ef899f77f0 gossip: move BitVec to bitvec.go 2022-09-08 11:19:40 +02:00
Richard Patel 5c2c172dcc gossip: use netip.AddrPort 2022-09-08 11:19:15 +02:00
Richard Patel 7b0291dd85 gossip: improve schema 2022-09-08 10:42:11 +02:00
Richard Patel 275d51581c gossip: port more bloom tests 2022-09-08 10:30:54 +02:00
Richard Patel 7438e31fef sealevel: fix tests 2022-09-08 10:06:49 +02:00
Richard Patel 1e5e1b9f78 gossip: add bloom filter 2022-09-08 10:06:42 +02:00
Richard Patel b7be6db636 gossip: add all data types 2022-09-07 08:14:26 +02:00
Richard Patel 90498bde79 gossip: add ping tool
- Adds serde-generate based code generation for messages
- Adds gossip ping command-line tool

Closes https://github.com/certusone/radiance/issues/14
2022-09-06 03:07:42 +02:00
Richard Patel 713f6eeec3 sealevel: more log syscalls 2022-09-05 10:37:23 +02:00
Richard Patel 5d11c3c465 sealevel: run Pyth Oracle program 2022-09-05 10:28:08 +02:00
Richard Patel 0a3c7853fd sealevel: use JSON-based test framework 2022-09-05 10:16:52 +02:00
Richard Patel a940a46699 sealevel: run SPL token program 2022-09-05 09:39:40 +02:00
Richard Patel ce9887728d sbf: add disassembler 2022-09-05 09:34:37 +02:00
Richard Patel 2cc227561e sealevel, sbf: run SPL memo program 2022-09-05 00:28:39 +02:00
Richard Patel 8fb540af70 sealevel: add params serializer
Copied from https://github.com/terorie/sealevel-go
2022-09-04 21:50:20 +02:00
Richard Patel 69819dc852 sbf: add stack 2022-09-04 21:49:44 +02:00
Richard Patel 196e826d6b sbf: hello world 2022-09-04 18:40:18 +02:00
Richard Patel c3c4f02ef1 sbf: move ELFs to fixtures 2022-09-04 18:40:18 +02:00
Richard Patel 2ff0ca6127 sbf/interpreter: implement memory 2022-09-04 18:40:18 +02:00
Richard Patel b8beab2b81 sbf: add interpreter 2022-09-04 18:40:18 +02:00
Richard Patel 4eff1263c5 sbf: add verifier 2022-09-03 08:49:13 +02:00
Richard Patel 980712188b sbf: initial reloc support 2022-09-03 07:53:58 +02:00
Richard Patel d3d1d516f8 sbf: add opcodes 2022-09-03 06:45:26 +02:00
Richard Patel 36288397bd sbf: add section loader 2022-09-03 06:05:26 +02:00
Richard Patel 9e81eea4ff sbf: rename loader.go -> parse.go 2022-09-03 06:05:26 +02:00
Richard Patel 819eddb239 nftables: go fmt 2022-09-02 03:57:08 +02:00
Richard Patel ae44b84bc5 sbf: move loader to subpackage 2022-09-02 03:56:08 +02:00