Commit Graph

416 Commits

Author SHA1 Message Date
Jude Nelson
066ba602c9 take an optional end-block when syncing zonefiles (since we can be doing this while indexing) 2018-01-17 22:31:37 -05:00
Jude Nelson
5f7e6c68d2 sync the atlas db with operation(s) we just committed 2018-01-17 22:31:19 -05:00
Jude Nelson
723e4b6b35 restore lock on atlasdb to serialize ops 2018-01-17 18:59:08 -05:00
Jude Nelson
4302c958d7 whitespace 2018-01-17 18:59:00 -05:00
Jude Nelson
711e11df0b fix op_canonicalize_quirks to preserve op_fee float/int based on current last creation op by default (deferring to previous db record's last creation op and op_fee values only when needed) 2018-01-17 17:01:35 -05:00
Jude Nelson
b8bd31f0f3 expect returned db record to have all consensus fields 2018-01-17 17:01:18 -05:00
Jude Nelson
822127dee3 return merged record on state transition, and canonicalize it and preserve quirks 2018-01-17 17:00:59 -05:00
Jude Nelson
0e36eab0ea preorders don't have last_creation_op 2018-01-17 15:30:08 -05:00
Jude Nelson
8ed95cd48b preorders don't have last_creation_op 2018-01-17 15:29:24 -05:00
Jude Nelson
a955c775cc last_creation_op 2018-01-17 14:19:06 -05:00
Jude Nelson
af775a606e last_creation_op 2018-01-17 14:18:56 -05:00
Jude Nelson
eaf1c6c9cd debug output for consensus hash quirk in name transfer 2018-01-17 14:18:44 -05:00
Jude Nelson
84d91eb3e0 add code to preserve name record quirks 2018-01-17 14:18:24 -05:00
Jude Nelson
72a04eb734 check for serialization quirks before commiting a new name record 2018-01-17 14:18:06 -05:00
Jude Nelson
0e5d1822c8 take canonicalized records (with quirks) from the namedb_...() methods, instead of trying to do it in this layer 2018-01-17 14:17:38 -05:00
Jude Nelson
7e7e8e6d39 have all state-commit operations calculate a record's canonical form, *with* all quirks built in 2018-01-17 14:17:15 -05:00
Jude Nelson
a3fcc925a0 list all name operations 2018-01-17 14:17:03 -05:00
Jude Nelson
9149abfe51 update comment 2018-01-17 00:08:26 -05:00
Jude Nelson
f8ded9884a rework announce so that you can only send an announcement from a previously-sent zone file 2018-01-16 18:48:28 -05:00
Jude Nelson
c3c0659fd5 typo 2018-01-16 18:48:19 -05:00
Jude Nelson
9b4d08f845 remove the global atlasdb lock and rely instead on exponential back offs on lock contention. let sqlite3 handle locking 2018-01-16 18:47:52 -05:00
Jude Nelson
95427874a2 add method to set up the db 2018-01-16 16:36:08 -05:00
Jude Nelson
a5e23bfb45 when getting a name or namespace at a particular time under the condition that it must not be expired, don't return None if the name/namespace hadn't been registered/revealed at the given block height. The caller may be expecting a preorder 2018-01-16 16:35:34 -05:00
Jude Nelson
faca96fd51 missing cursor instantiation 2018-01-16 16:35:23 -05:00
Jude Nelson
c98e83bb1d typos and api sync 2018-01-16 16:35:14 -05:00
Jude Nelson
e93b576512 get_version_parts missing 2018-01-16 16:35:01 -05:00
Jude Nelson
6b331b9d2b fix imports 2018-01-16 16:34:51 -05:00
Jude Nelson
dea1d0ca85 missing self. 2018-01-16 16:34:41 -05:00
Jude Nelson
b1e1846630 fix up name_import's find-previous logic to just ask the DB 2018-01-14 15:52:13 -05:00
Jude Nelson
0d6bff034c typo: get a cursor correctly 2018-01-14 15:52:00 -05:00
Jude Nelson
5f2671e728 must_equal constraints must include all public key columns (TODO: extract from DB schema) 2018-01-14 15:51:39 -05:00
Jude Nelson
145661c16b import hex_hash160 2018-01-13 23:51:07 -05:00
Jude Nelson
a64f4019c0 expose getting all namespace preorders; fix typo 2018-01-13 23:50:35 -05:00
Jude Nelson
6e3078b34e add back getting all namespace preorders; fix offset pagination for quering name history 2018-01-13 23:50:14 -05:00
Jude Nelson
16607e1a30 addresses can be 35 bytes 2018-01-13 23:49:57 -05:00
Jude Nelson
c7cfed891f pass constraints-ignored hints to state-creation 2018-01-13 22:54:07 -05:00
Jude Nelson
9d64dc091a do either an INSERT or an UPDATE, depending on whether or not we're preorder/registering or re-preordering/registering. Also, tighten the input validation logic to ensure that each state-create and state-transition op data contains both the history ID (name or namespace) as well as the block number (i.e. all column data that goes into the table's primary key) 2018-01-13 22:52:53 -05:00
Jude Nelson
785de7bccb add utility methods from blockstack_client, like serializing an atlas zone file inventory message to a string and parsing host:port strings. This cuts dependency on blockstack_client 2018-01-12 18:36:55 -05:00
Jude Nelson
8aa485909b copy RPC client code from blockstack_client to blockstackd so the atlas peers can talk to one another. This cuts the dependency on blockstack_client in the Atlas subsystem 2018-01-12 18:36:22 -05:00
Jude Nelson
2705d59e1e remove all restore_delta() and snv_consensus_extras() code, and remove all dependence on blockstack_client from our operations. Also remove deprecated state_*() helpers that had been required for propagating ancilliary operation state to the database, i.e. in order to ensure that name operations' histories could be rewound. This is now handled automatically with a better database schema. 2018-01-12 18:33:04 -05:00
Jude Nelson
41c8693bae now that restore_delta() and snv_consensus_extras() and BACKUP_FIELDS are no longer required, remove all ancilliary ops_*() methods that are used to query and manipulate them. 2018-01-12 18:32:35 -05:00
Jude Nelson
54444e455e the new database schema no longer requires us to fetch and store prior name histories in our check() decorators. Remove the ancilliary code that they had been using to do this. 2018-01-12 18:31:45 -05:00
Jude Nelson
ed54c905de update virtualchain_hooks (the virtualchain implementation) to adhere to the new StateEngine standards in virtualchain 0.18. In particular:
* add method for which blockchain we're on
* add method for determining how long a consensus hash is valid
* add method for getting all opcodes
* add method for getting all operations' serialization fields
* accept transactions in the virtualchain-standardized format, not the bitcoind RPC format
* stronger and more explicit adherence to acquiring read/only versus read/write BlockstackDB handles
2018-01-12 18:28:06 -05:00
Jude Nelson
68c0828a6d rework the BlockstackDB class to rely on virtualchain-provided database functionality (such as getting a block's ops hash), and rework the methods to use the new queries. In particular, history replaying is no longer necessary since we store all snapshots of all name records now. 2018-01-12 18:27:02 -05:00
Jude Nelson
26c6fec052 do not store name operation history deltas any longer. Instead, when an operation is committed, store the new name state in the history table. This *greatly* simplifies the code for getting historic states of a name, and obviates the need for the per-operation restore_delta() and snv_consensus_extras() methods. It also simplifies a lot of queries. 2018-01-12 18:25:12 -05:00
Jude Nelson
e50005da2f this file is now dead. all functionality it provides is now handled by virtualchain 2018-01-12 18:24:47 -05:00
Jude Nelson
86b57aaf48 add config file parsing code from blockstack_client, so we no longer depend on it. Similar for semver parsing and environment variable munging 2018-01-12 18:24:22 -05:00
Jude Nelson
0d1b9a29b8 refactor fast_sync functionality to use new chainstate routines in virtualchain 2018-01-12 18:24:01 -05:00
Jude Nelson
9798186a18 add zonefile hashing methods, removing dependency on blockstack_client 2018-01-12 18:23:20 -05:00
Jude Nelson
063c02d7d8 remove code for loading/storing data and profiles, and loading/storing zonefiles to 3rd party storage. This is the gaiahub's responsibility. 2018-01-12 18:22:49 -05:00