Commit Graph

8773 Commits

Author SHA1 Message Date
Jude Nelson
111ec0dfa2 revamp our story for dealing with multiple types of burn chains -- unfortunately, since rust lacks higher-kinded types, we have to have a lot of type parameters to encode all the specifics of blockchain indexing 2019-01-29 18:44:22 -05:00
Jude Nelson
f88e11d9aa revamp IPC story for block parsing and downloading -- instead of using a "pipeline", we'll directly implement a block parser and block downloader trait 2019-01-29 18:43:50 -05:00
Jude Nelson
c774f1aacc disable code for now 2019-01-27 18:25:28 -05:00
Jude Nelson
1fe0c0ad77 WIP: beginnings of a "main loop" that builds up the blockchain 2019-01-27 18:25:14 -05:00
Jude Nelson
d1aab4379a stub for stacks blockchain state 2019-01-27 18:25:06 -05:00
Jude Nelson
34cbb358e0 this module now points to both the burn chain state and the stacks chain state 2019-01-27 18:24:51 -05:00
Jude Nelson
7e18832c3b this directory has moved to src/chainstate/burn/operations 2019-01-27 18:24:31 -05:00
Jude Nelson
88ba930a7f clean up trait definitions for blockstack burn operations so they all take address and public key type parameters, and the compiler can assign them impls 2019-01-27 18:23:59 -05:00
Jude Nelson
1a57c08a2e this file now contains all our burn database types 2019-01-27 18:23:38 -05:00
Jude Nelson
c388cb4f19 flesh out more impls for data we stuff into the db; move to a burn db-specific folder 2019-01-27 18:22:58 -05:00
Jude Nelson
53637cc162 move burndb.rs to a burn-specific db dir; add code for snapshotting blocks and calculating consensus hashes; add code for processing parsed blocks, classifying their transactions, checking them, and committing them. 2019-01-27 18:21:59 -05:00
Jude Nelson
b58d6420c9 do some reorganization; adjust imports accordingly. also, add an error type for this module 2019-01-27 18:21:26 -05:00
Jude Nelson
9116f6711e clean up imports; more error types 2019-01-27 18:21:00 -05:00
Jude Nelson
78ea465b09 extend indexer trait to deal with reorgs and to fetch headers and blocks 2019-01-27 18:20:42 -05:00
Jude Nelson
2987a23889 API sync with new message handler trait 2019-01-27 18:20:29 -05:00
Jude Nelson
fe995996ad rework refs to messages in the network communication so that message handlers *consume* messages, and make it so we use Arc<...> for messages (so we can pass them between threads without having to copy them) 2019-01-27 18:19:50 -05:00
Jude Nelson
ceee097ab1 clean up imports 2019-01-27 18:19:41 -05:00
Jude Nelson
14b79a65ca clean up imports 2019-01-27 18:19:33 -05:00
Jude Nelson
1a462cab7a WIP: fleshed out indexer implementation to check for burn chain reorgs, fetch headers, fetch blocks, parse blocks, and (soon) feed them to the burn db 2019-01-27 18:18:59 -05:00
Jude Nelson
b61781f258 clean up imports; add pipeline processor trait impls to the block downloader and block parser so we can chain them together 2019-01-27 18:18:31 -05:00
Jude Nelson
90a2af22e1 clean up imports; add constructor for a burn header hash that takes a bitcoin header hash 2019-01-27 18:18:01 -05:00
Jude Nelson
5097644efd add to_string() and from_string() trait impls 2019-01-27 18:17:46 -05:00
Jude Nelson
4bc6a96f39 LeaderBlockCommitOp must indicate an epoch number so the parser will know whether or not it arrived on time (per SIP 001); also, make it so this op has a type parameter for both the address and public key so the rust compiler can assign impls when classifying transactions 2019-01-27 18:16:59 -05:00
Jude Nelson
1733658ccc clean up imports; add both an address and public key type parameter so the rust compiler can figure out how to match impls when classifying and checking transactions in the burndb code 2019-01-27 18:16:14 -05:00
Jude Nelson
da507017a9 clean up imports; force UserBurnSupportOp to be parameterized by both an address and public key type in order to make it possible for the rust compiler to correctly assign impls when processing transactions 2019-01-27 18:15:33 -05:00
Jude Nelson
c9fe11d61b add util error types in preparation for pipeline implementations 2019-01-27 18:15:09 -05:00
Jude Nelson
a391f13488 clean up imports 2019-01-27 18:14:58 -05:00
Jude Nelson
45eccd3bc0 remove unused macro 2019-01-27 18:14:48 -05:00
Jude Nelson
4bc68c31e2 move Hash160 to src/util/hash.rs 2019-01-27 18:14:32 -05:00
Jude Nelson
4df9a5eeea flesh out pipeline traits and impls 2019-01-27 18:14:13 -05:00
Jude Nelson
b650eb1bd7 clean up imports and warnings 2019-01-27 18:13:40 -05:00
Jude Nelson
733e078091 add a RowOrder trait that is used to force objects stored in the DB to describe the order in which their column fields should be SELECT'ed 2019-01-17 18:48:42 -05:00
Jude Nelson
f162465d05 change location of BitcoinNetworkType 2019-01-17 18:35:14 -05:00
Jude Nelson
e2714cb664 add FromRow trait to allow a uniform way of loading a particular (custom) data type from a Sqlite3 Row 2019-01-17 18:34:48 -05:00
Jude Nelson
6bfc549f15 denormalize the burnchain DB a little to avoid a JOIN; implement From trait to instantiate history rows from individual burn chain operations; implement helpers to insert and select rows of burn chain operations and convert them to and from database rows; implement basic DB tests 2019-01-17 18:33:45 -05:00
Jude Nelson
565ab06208 use new location of BitcoinNetworkType 2019-01-17 18:33:19 -05:00
Jude Nelson
f81d003205 BitcoinNetworkType is now a mod-level enum 2019-01-17 18:33:04 -05:00
Jude Nelson
4974ad431a serde is broken in the rust-secp256k1 module, so implement custom (de)serializer methods for Secp256k1PublicKey 2019-01-17 18:32:36 -05:00
Jude Nelson
c659082e68 BitcoinNetworkType is now mod-level 2019-01-17 18:32:22 -05:00
Jude Nelson
4044de0d4f update location of BitcoinNetworkType 2019-01-17 18:32:05 -05:00
Jude Nelson
4e7f7d7d3b test BurnchainTxInput<BitcoinPublicKey> (de)serialization with custom serializers for Secp256k1PublicKey. Also, update new location of BitcoinNetworkType 2019-01-17 18:31:29 -05:00
Jude Nelson
c55c7e38c1 change location of BitcoinNetworkType 2019-01-17 18:31:10 -05:00
Jude Nelson
987f15b7bd need serde_json for serializing burnchain inputs 2019-01-15 18:59:19 -05:00
Jude Nelson
01a7e18d33 WIP: add methods to insert entries into each of the principle tables in the burn db 2019-01-15 18:59:03 -05:00
Jude Nelson
3f0f0366d4 add method to serialize a VRF public key and to check that it is a valid ed25519 public key 2019-01-15 18:58:41 -05:00
Jude Nelson
b6ffc8475f add to_hex() for byte strings 2019-01-15 18:58:34 -05:00
Jude Nelson
2f34307fb8 add tests for all burn-chain transaction formats; update consensus hash to 20 bytes 2019-01-15 18:58:14 -05:00
Jude Nelson
b505d488fa make consensus hashes 20 bytes -- they'll be a ripemd160 in the implementation 2019-01-15 18:57:47 -05:00
Jude Nelson
6cc579787b add serialize/deserialize traits; make vtxindex a u32 so it serializes to sqlite3 2019-01-15 18:57:28 -05:00
Jude Nelson
3599c1e416 add serialize/deserialize auto-derived traits 2019-01-15 18:57:10 -05:00