Commit Graph

56 Commits

Author SHA1 Message Date
Mark Spanbroek 652e34d6b2 Speed up hashing of transactions and hashes
Calculate hashing without first concatenating bytes.
2021-09-01 13:00:32 +02:00
Mark Spanbroek 7e705dba3f Speed up hashing (for hashtable) of sha256 hash 2021-08-05 15:15:17 +02:00
Mark Spanbroek 941bdebab0 Replace HashSet with seq to improve performance
Transactions are expected to have small amounts of
incoming and outgoing vertices, which makes a linear
search through a seq of edges faster than a lookup
in a hash table.
2021-08-05 14:58:56 +02:00
Mark Spanbroek 67176b3687 Convert Transaction and Ack to ref types
Reason: performance, copying transactions and acks around leads
to significant slowdowns
2021-08-05 10:16:38 +02:00
Mark Spanbroek db1e8b805b Calculate hashes only once 2021-08-05 10:04:43 +02:00
Mark Spanbroek 669b322311 Stop traversing DAG once all transactions are confirmed 2021-08-04 16:51:28 +02:00
Mark Spanbroek c6bbe0d330 Add transaction confirmation to TxStore using DAG and voting 2021-08-04 16:31:31 +02:00
Mark Spanbroek a65269d37b Add voting mechanism
Transactions can be voted for by other transactions,
when they reach a majority, they are confirmed.
2021-08-04 16:13:21 +02:00
Mark Spanbroek 94b4cfb825 Calculate transaction and output values 2021-08-04 14:23:46 +02:00
Mark Spanbroek 7db55248fa Pretty printing of hashes 2021-08-04 14:20:24 +02:00
Mark Spanbroek 0a604491ee Create edges using -> operator, to make direction of edge explicit 2021-08-02 14:19:52 +02:00
Mark Spanbroek d15e23cf13 Implicitly add vertices when adding edges to a DAG 2021-08-02 13:37:13 +02:00
Mark Spanbroek dd0685c96e Combine TxHash and AckHash into single Hash type 2021-08-02 10:54:58 +02:00
Mark Spanbroek 957767c730 Add SortedDag, which maintains topological ordering 2021-07-27 15:22:26 +02:00
Mark Spanbroek 08b936e51e Introduce EdgeSet for keeping track of the edges in a DAG 2021-07-22 09:58:13 +02:00
Mark Spanbroek 4e8eb42d87 Allow public keys to be used in HashTable and HashSet 2021-07-15 13:46:51 +02:00
Mark Spanbroek 76006f4b73 Pass TxStore instances by reference 2021-07-14 17:10:26 +02:00
Mark Spanbroek 6c4fc39acf Return all missing and invalid transactions 2021-07-14 10:21:26 +02:00
Mark Spanbroek 0c51cd8131 Refactor 2021-07-14 10:21:26 +02:00
Mark Spanbroek d6f22399a5 Add genesis hash to past 2021-07-12 15:22:57 +02:00
Mark Spanbroek 31ca927b80 Evaluate validity while accumulating history 2021-07-08 15:11:53 +02:00
Mark Spanbroek 524689ac59 Convert History.transactions to a set 2021-07-08 14:11:30 +02:00
Mark Spanbroek 32be2fd97d Rename module: past -> history 2021-07-08 13:20:55 +02:00
Mark Spanbroek 87cc66a9ba Introduce History type 2021-07-08 13:20:07 +02:00
Mark Spanbroek 338f94b6c7 Check validity of set of acknowledgements 2021-07-08 12:42:54 +02:00
Mark Spanbroek db1d8d3ae8 Find all transactions that precede a set of acknowledgments 2021-07-08 12:00:13 +02:00
Mark Spanbroek cdaf1b22fa Find all transactions that precede an acknowledgement 2021-07-08 11:43:33 +02:00
Mark Spanbroek 9d79abb6e6 Replace getTx and getAck with indexing [] 2021-07-08 11:24:07 +02:00
Mark Spanbroek 67e515120c Separate Hash into TxHash and AckHash 2021-07-08 11:21:30 +02:00
Mark Spanbroek 07fbd31a65 Find all transactions that precede a transaction 2021-07-05 16:30:43 +02:00
Mark Spanbroek ac4a911ae7 Store.getTx() and getAck() return optionals
Removing the need for hasTx and hasAck
2021-07-05 16:19:36 +02:00
Mark Spanbroek 2789abeb0f Validate acknowledgements 2021-07-05 14:55:43 +02:00
Mark Spanbroek f7435a5d3b Store Acks in TxStore 2021-07-05 11:54:45 +02:00
Mark Spanbroek 64018dc97b String conversion for public key and signature 2021-07-05 11:53:58 +02:00
Mark Spanbroek 84645a1208 Wallet signs acks 2021-07-05 11:19:21 +02:00
Mark Spanbroek 34254152b3 Add public key of validator to Ack, allow signature to be checked 2021-07-05 11:07:47 +02:00
Mark Spanbroek 835e28ddbc Add signature to acknowledgements 2021-06-30 17:49:10 +02:00
Mark Spanbroek 9208af338f Introduce acknowledgements 2021-06-30 17:18:19 +02:00
Mark Spanbroek 1db30e9ee7 Rename TxHash to Hash and move into its own module
Reason: we'll need hashes for more than just transactions
2021-06-30 17:09:01 +02:00
Mark Spanbroek 2b51646c8f Include validator in transaction hash 2021-06-30 14:19:29 +02:00
Mark Spanbroek c054636381 Add validator to transactions 2021-06-30 13:49:55 +02:00
Mark Spanbroek 96908b01b5 Rename TxOutput.amount -> TxOutput.value 2021-06-30 12:37:33 +02:00
Mark Spanbroek e17c7cfedc Transaction validation 2021-06-30 11:23:04 +02:00
Mark Spanbroek 44c4bb56a2 Add transaction store 2021-06-30 11:22:28 +02:00
Mark Spanbroek 7fac1c9c94 Simplify imports 2021-06-29 15:24:11 +02:00
Mark Spanbroek 5194a88f2f Add Wallet 2021-06-29 15:18:41 +02:00
Mark Spanbroek b0babf9962 Add convenience method for signing transaction 2021-06-29 15:17:53 +02:00
Mark Spanbroek 1a0a96705b Check transaction signature 2021-06-29 15:10:03 +02:00
Mark Spanbroek f65ad13904 Check validity of outputs when initializing Transaction 2021-06-29 11:00:40 +02:00
Mark Spanbroek cc353875c8 Add signatures to transaction 2021-06-28 17:08:05 +02:00