Commit graph

460 commits

Author SHA1 Message Date
Antioch Peverell
793e3843f0
HeaderEntry for storing subset of header info in the header MMR ()
* HeaderEntry for storing subset of header info in the header MMR

* cleanup

* cleanup
2018-12-13 09:57:24 +00:00
Antioch Peverell
305b36dcce
replace is_mainnet() with !is_testnet() ()
* replace is_mainnet() with !is_testnet()
makes testing "mainnet" code significantly easier (its the default)

* fix next_target_adjustment test based on tromp analysis

* rustfmt

* cleanup wallet db files and add to gitignore

* fix
2018-12-12 16:49:35 +00:00
Antioch Peverell
a0b9aa5967
Sign kernel features ()
* include kernel features in msg being signed
hash the msg before signing it (for consistent 32 bytes)

* rustfmt

* fix various tests

* no HF for this (mainnet only)
2018-12-12 09:19:36 +00:00
hashmap
aedac483f5
Convert to Rust 2018 edition ()
* Convert to Rust 2018 edition

* Update gitignore
2018-12-08 00:59:40 +01:00
Ignotus Peverell
3fdfa0b607
Fixed missing versioned dependency in core 2018-12-07 00:17:35 +00:00
Ignotus Peverell
87bfd9aaa4
Mark all crates as publishable 2018-12-07 00:08:15 +00:00
Ignotus Peverell
ef55b35416
Support for genesis block that includes a coinbase ()
* Chain init now handles genesis body properly, related unit test creating the genesis with reward
* Avoid making block body public by adding a with_reward method
* apply_block in all genesis cases works
2018-12-06 15:38:15 -08:00
Yeastplume
b8c8840cec
Refactor wallet commands ()
* start wallet command refactoring

* another re-structuring attempt

* rustfmt

* begin splitting up wallet commands

* rustfmt

* clean up wallet arg checking

* rustfmt

* macro for arg parsing

* rustfmt

* factor out init commands

* rustfmt

* move recover to new format

* rustfmt

* add listen command to new format

* rustfmt

* Finish moving commands to new format

* rustfmt

* rustfmt

* propogate errors more cleanly

* rustfmt

* error handling cleanup
2018-12-06 12:04:02 +00:00
Ignotus Peverell
54a034c40a
Fix txpool double spend edge case ()
Sorting validation on inputs, outputs and kernels now also checks for uniqueness.
2018-12-05 09:44:32 -08:00
Dobby the House Elf
b8124676c7 Move libtx to core 2018-12-05 09:41:26 -08:00
Antioch Peverell
bf815aa5cd
Readonly pmmr cleanup ()
* avoid locking txhashset by using a readonly PMMR

* rustfmt
2018-12-05 14:52:53 +00:00
Antioch Peverell
8d8f533b8e
store pmmr cleanup ()
* introduce DataFile<T> to hide the LEN handling
use slices rather than vec<u8> where possible

* cleanup

* use DataFile<Hash> and not HashFile

* fix core tests
2018-12-05 13:02:24 +00:00
antiochp
6a4278c67e
fix 2018-12-05 12:10:27 +00:00
antiochp
fd41b4918e
rustfmt 2018-12-05 10:28:21 +00:00
antiochp
bd771ecbc5
fix txpool double spend edge case 2018-12-05 10:27:46 +00:00
Antioch Peverell
a24d613b05
no need for write lock on txhashset for chain.is_unspent() ()
* no need for write lock on txhashset

* commit
2018-12-03 09:35:40 +00:00
Antioch Peverell
8bad93c8c9
Reduce amount of clone() going on when applying data to MMRs ()
* less cloning when pushing to PMMR

* pass a ref to data when applying to the MMR and appending to the backend

* cleanup

* rustfmt

* fixup tests
2018-12-02 19:59:24 +00:00
Antioch Peverell
7b07fe99a7
bump 0.4.1 -> 0.4.2 so we can watch the HF () 2018-11-30 11:20:12 +00:00
Antioch Peverell
1dffd4df1e
Fix secondary pow scaling bug ()
* fix(es) for 

* rustfmt

* skip(1) is height dependent on testnet4
rename for clarity

* rustfmt
2018-11-30 11:19:55 +00:00
Antioch Peverell
f05d3dd920
decouple outputs from output MMR () 2018-11-29 10:17:44 +00:00
Antioch Peverell
8e62130a7a
decouple kernels from the kernel MMR () 2018-11-29 10:01:59 +00:00
Ignotus Peverell
e356280841
Quick fix for graph_weight used with AR PoW () 2018-11-28 20:33:46 -08:00
Ignotus Peverell
28e0d97e64
Cuckatoo size shift upgrade schedule ()
* Cuckatoo size shift upgrade schedule
* Move the schedule into graph_weight instead of messing with min edge bits
* Cleanup and fixes now that we have an agreed upon schedule
2018-11-28 14:05:55 -08:00
Antioch Peverell
7dee490962 Two year secondary pow ratio fix ()
* Tweak (consensus breaking) secondary_pow_ratio
* Look at chain type for sec pow ratio calc (hardfork is t4 only)
2018-11-28 14:05:13 -08:00
Antioch Peverell
79d540cf86
Header MMR Refactor ()
* refactor header MMR to use regular backend
this lets us store header hashes in the mmr data file
the hashes in the hash file are "hash with index"

* rustfmt

* get_header_hash(pos) on header extension

* rustfmt

* cleanup

* cleanup

* comments

* cleanup

* fixup testelem so tests work
2018-11-27 12:32:39 +00:00
Juan Leni
92ac80f0d3 Fixing disabled unit test pow::test::genesis_pow () 2018-11-27 18:33:58 +08:00
Ignotus Peverell
af595fa0fc
Fix T4 genesis after 2018-11-24 22:50:50 +00:00
Ignotus Peverell
c5b9d867ae
Cuckaroo Testnet4 hard fork ()
* PoW context is now properly picked depending on the chain type,
edge bits and block height. Height const for T4 hard fork leaving
a couple weeks to have miners in place. Removed now unused Cuckoo context.
* Simplified block siphash
* Fix servers crate compilation
* Tiny bit cleaner block siphash. Maybe.
* Cuckatoo min edge bits update for T4 and mainnet
* Fix header size tests, Cuckatoo31 default means one more bit per edge
* Remove redundant param from verify_size
2018-11-24 12:33:17 -08:00
Antioch Peverell
71342d11b1 Tweak input/output/kernel weights (1/21/3) () 2018-11-24 12:32:08 -08:00
Ignotus Peverell
66acee8f71
Cuckaroo validation implementation ()
* First pass at iterative siphash
* Generalizing our siphash24 implementation slightly to make it friendlier to repeated hashing
* Block siphash algorithm, Cuckaroo placeholder
* Cuckaroo validator, still needs to be tested with vectors from the @tromp implementation
* Working cuckaroo validation with test vectors for cuckaroo19, will add cuckaroo29 vectors when a lean or mean implementation can find some solutions
2018-11-19 11:03:58 -08:00
Antioch Peverell
f0fa410273
Streaming headers ()
* headers msg is now "streamed" off the tcp stream

* rustfmt

* cleanup

* move StreamingReader into ser.rs
extract read_exact out into util crate

* rustfmt
2018-11-16 11:00:39 +00:00
Antioch Peverell
2e421191e2
implement read_multi with an internal iterating reader ()
* rework read_multi to use an "iterating reader" internally
we are going to use this for reading headers in batches

* rustfmt
2018-11-14 14:52:43 +00:00
Yeastplume
5a06f5dac7
Split wallet client trait ()
* complete trait split

* rustfmt
2018-11-13 13:18:33 +01:00
Antioch Peverell
c631b45ab6
cleanup how we deal with flexible rproof size in ser/deser () 2018-11-13 09:30:40 +00:00
Antioch Peverell
a3c1c6d603
Do not use mem::size_of() when calculating serialized size of data ()
* use FixedLength to define serialized size in bytes of various structs
replace usages of mem::size_of() with ::LEN so we correctly calculate serialized sizes in bytes

* rustfmt
2018-11-13 09:30:02 +00:00
Antioch Peverell
207621b545
Tx kernel entry ()
* Wrap tx kernels in tx kernel entries when storing them in the MMR.
Decouples the storage impl of kernels.

* rustfmt
2018-11-11 16:03:03 +01:00
Antioch Peverell
d0d8d14ac2
cleanup unused compact_transaction code ()
we use a simplified "kernel first" impl
2018-11-11 15:59:05 +01:00
Antioch Peverell
183d9c9f3e
Refactor kernel sig msg creation ()
* refactor kernel msg creation

* rustfmt

* Error not secp::Error

* fix tests for refactored errors
2018-11-10 16:24:11 +01:00
Antioch Peverell
29b2c3384c
refactor secp errors in transaction ()
* cleanup secp errors in transaction

* rustfmt
2018-11-10 15:48:45 +01:00
Gary Yu
9af9ca9518
refactor the state_sync to handle the long fork ()
* split horizon into two explicit values for cut through and txhashset request

* let node which has 2-7 days of history be able to handle forks larger than 2 days

* add test simulate_long_fork

* add pause/resume feature on p2p for tests

* refactor the state_sync

* ignore the test case simulate_long_fork for normal Travis-CI

* refactor function check_txhashset_needed to be shared with body_sync

* fix: state TxHashsetDone should allow header sync
2018-11-10 11:27:52 +08:00
Antioch Peverell
39ebb33ba1
bump 0.4.0 -> 0.4.1 (tx kernel broadcast support) () 2018-11-09 14:57:25 +00:00
hashmap
0af1f13bf9 Fix IPV6 address deserialization ()
Fuzz test found that we don't read IPV6 addr (as part of p2p message)
properly. The code is supposed to read 8 dwords, but [0..8] is not a
slice of 8 ints, but a slice of one Range, so we always read just one
dword
2018-11-05 20:38:41 -08:00
Antioch Peverell
d23dec73d0
PMMRable cleanup ()
* cleanup pmmrable and len()
introduce FixedLength trait with a const LEN
make Hash impl FixedLength for consistency

* rustfmt

* store tests cleanup

* rustfmt

* whats going on with those comments and rustfmt?
2018-11-01 20:14:46 +00:00
Antioch Peverell
12be191ecd
validate root of header MMR when processing headers (during sync and full blocks) ()
validate root of header MMR when processing headers (during sync and full blocks) ()
2018-11-01 09:51:32 +00:00
Antioch Peverell
d51522a9cd Genesis is height 0 (not height 1) () 2018-10-31 13:24:21 -07:00
Ignotus Peverell
385b385456
Minor block.rs cleanup () 2018-10-31 13:18:59 -07:00
Ignotus Peverell
0b22789865
Cleanup and minor fixes to core after transaction.rs review () 2018-10-30 14:09:56 -07:00
Ignotus Peverell
46051ee174
improve minimum difficulty handling ()
* rename MIN_DIFFICULTY to UNIT_DIFFICULTY; define Difficulty::unit, fix INITIAL_DIFFICULTY
* improve minimum difficulty handling
* replace all Difficulty::one by ::min
* revert secondary scaling default in HeaderInfo; rename scaling_difficulty; refactor difficulty_data_to_vector
2018-10-27 10:37:44 -07:00
Ignotus Peverell
bb5392548f
Take 2 2018-10-26 16:28:15 -07:00
Ignotus Peverell
6f3ae4563a
Small test fix 2018-10-26 16:07:12 -07:00