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