3 Commits

Author SHA1 Message Date
catbref
4ce499c444 More database work
No need for DB.executeUsingBytes as it was only a specific use-case for DB.checkedExecute.
Callers now refactored to use DB.checkedExecute instead.
Minor tidying up of BlockTransactions in light of above.

In the HSQLDB database, asset keys/IDs are now "asset_id" (previously: "asset").
Added initial Asset/Order/Trade classes.
Added CreateOrderTransaction class.
Renamed some asset-related fields back to old gen1 names, e.g. haveAmount -> amount, wantAmount -> price.

Added Accounts and AccountBalances to database.

Added get/set confirmed balance support to Account.
Added get/set last reference support to Account.

Added Block.toJSON() - untested at this time.

Fleshed out some Transaction sub-classes' process() and orphan() methods.
Fleshed out PaymentTransaction.isValid().
Added Transaction.delete() - untested.
2018-05-27 14:59:30 +01:00
catbref
216ed7c772 Better code for saving to database, using close-coupled column-value pairs 2018-05-25 15:23:10 +01:00
catbref
63be6b7e90 Basic block and genesis transaction processing + some refactoring.
DB.rebuild() to shutdown and delete database, then rebuild it (schema only).

DB.callIdentity() to fetch value of IDENTITY column after an INSERT.

Added basic Asset class.

Added TODOs to Account.

BULK REFACTOR to rename "generation target" back to "generating balance" and
"generation signature" back to "generator signature" to ease compatibility with
old QORA for now. (Maybe change again in the future if we change from PoS).

Added support for Block's totalFees which is either loaded from DB
or recalculated as transactions are added to the block.

Also in Block:

* We can't assume generator's public key is the correct length
in case we encounter the GenesisAccount's special 8-byte public key. Fix applied to
Block's ResultSet-based constructor.

* Forgot to save "signature" column!

* Initial version of Block.process()

* Block constructor takes transactionsSignature too now

Added BlockChain startup/init/validation method to determine whether to (re)build blockchain.
Rebuilding blockchain involves rebuilding DB schema, processing GenesisBlock and adding QORA asset.

Added some initial GenesisTranaction.process() code: GenesisTransactions are saved but recipient's balance/reference not yet updated.

Fix incorrect placeholder bind value for "creation" timestamp in Transaction.save().

Moved incremental database schema updates out from "updates" unit test into DatabaseUpdates class.

All unit tests work at this point!
2018-05-25 11:48:47 +01:00