475c8c5ac0
imporove Monerod spawn stability ( #66 )
...
* output monerod logs when a thread panics
* always spawn a monerod don't attempt to re-use
* set zmq port and `non-interactive`
* check monerod has started before test
* remove test panic
* review changes
2024-02-16 22:47:50 +00:00
hinto-janai
331d4d3e7f
Database ( #35 )
...
* rename `database` -> `old_database`
Keeping it around for reference until new implementation is complete.
* create new `database/` skeleton
* add `DATABASE.md` design doc skeleton
* move design doc to `database/README.md`
* add rough code
* `lib.rs` -> `gist.rs`
* database: use workspace deps
* workspace: include `database/` as member
CI will now include this crate.
* cargo fmt
* database: `AGPL` -> `MIT`
* readme: add `TODO`s
* add base files
* cargo.toml: add `heed` feature
* fix clippy
* lib.rs: add extremely pedantic lints
* readme: add `# Backends`
* cargo.toml: add `cfg-if`
* add `backend/` structure
* base `database.rs`
* cargo.toml: add `borsh`
* backend: add `DATABASE_BACKEND`
* base `error.rs`
* base `database.rs`
* base `transaction.rs`
* base `table.rs`
* lib.rs: add imports
* add `pod.rs`
* pod: use `Read/Write`, add tests for all primitive numbers
* pod: impl Pod for `Vec<u8>`, `[u8; N]`
* pod: add docs, add `private::Sealed`
* pod: `to_writer`, `from_reader`
The new `as_bytes` + `from_bytes` now allows (de)serializing from
bytes directly instead of going through Read/Write.
Different array return sizes are abstracted away with `-> impl AsRef<[u8]>`
* pod: impl Pod for `Box<[u8]>`
* pod: return `Err` on incorrect length in `from_bytes()`
* pod: docs
* pod: impl Pod for `Arc<[u8]>`
* readme: docs
* database: add `create_table()`, `get_table()`
* table: `Pod` bound
* backend: move into directories
* pod: add `into_bytes()`
* heed: impl `BytesEncode`, `BytesDecode`
* add `actor`, `service` features
The thread/actor system used will be gated behind `actor`,
and the `tower/tokio` integration will be gated behind `service`.
* add `lib.rs` docs
* service: add `service.rs`
* service: add `reader.rs`
* service: add `writer.rs`
* service: add `request.rs` & `response.rs`
* cargo.toml: add `crossbeam`
* service: add/use `enum Request`, `enum Response`
* service: basic signatures for thread-pools, `Writer` -> `Writers`
* service: split `tower::Service<ReadRequest/WriteRequest>`
* service: impl `tower::Service` for `Database(Reader|Writer)`
* service: add `init()`, impl basic `Reader/Writer` pools
* service: add example `Request`'s
* service: add example `ReadRequest` handling
* temporarily allow clippy lints
* readme: update file structure
* transaction: add `RoTx::get_range()`
* service: module docs
* cargo.toml: add `cuprate-helper`
* service: scale readers/writers based on thread count
* database: change lifetimes
* heed: impl Database for `heed`
* heed: add `ConcreteRoTx`, `ConcreteRwTx`, impl Tx traits
* docs
* service: `read.rs` docs
* service: `write.rs` docs
* service: request/response docs
* service: use `OnceLock` in `init()`, add `db_read()`, `db_write()`
* service: leak database into `&'static`
* database: add `#[inline]`, `#[cold]`
* service: `free.rs` docs, more `#[inline]` + `#[cold]`
* service: add `shutdown()`
* service: add `Request::Shutdown`
* service: `shutdown()` docs
* heed: hide concrete tx types
* lib.rs: add terms
* split `Env` <-> `Database`
* cargo.toml: add `paste`
* database: add `tables/`
* impl `serde/borsh` where possible
* tables: add `Tables`, add test docs
* make db backend mutually exclusive to fix `--all-features`
* tables: use `$()*` in `tables!()`
* cargo.toml: add `sanakirja 1.4.0`
* sanakirja: impl `Env`
* sanakirja: impl `Database`
* sanakirja: impl `Transaction`
* table: temporarily fix `sanakirja` K/V bounds
* table: fix `#[cfg]`
* cargo.toml: fix deps
* lib.rs: docs
* service: docs
* readme: add files, update `# Documentation`, add `# Layers`
* readme: `src/` file purpose
* readme: `src/service/` file purpose
* readme: `src/backend/` file purpose
* fix `Cargo.lock` merge conflict
* database: remove `gist.rs`
* add to `constants.rs`
* add top `//! comments` for files/modules
* constants: add sanity-check test
* service: add `only_one_database` test in `free.rs`
* service: add `tests.rs`
* remove unneeded markers + imports
* backend: fix `get_range()`'s trait `impl` return
* env: add `create_tables_if_needed()`, don't return `Option<Db>`
* sort imports by `CONTRIBUTING.md` rules
oops sorry boog
* add `monero.rs`
* monero: docs
* database: add missing `RoTx/RwTx` inputs
* backend: add missing `RoTx/RwTx` inputs
* `monero.rs` trait -> free functions in `ops/`
* pod: make methods infallible
* ci: add `rustup update` step
* service: use `Arc` instead of leaking, remove `db_read/db_write`
* service: use `InfallibleOneshotReceiver` for readers
* service: shutdown on error, add todos
* service: remove `Request`
* service: combine `ReadResponse` and `WriteResponse`
* service: use `InfallibleOneshotReceiver` for writer
* service: only spawn 1 writer, don't allow cloning writer handle
* table: add associated `const CONSTANT_SIZE`
* add `key.rs` + `trait Key`, add bound to `Table`
* fix typos
2024-02-13 17:43:25 +00:00
b7df133175
consensus: fix batch handling when we don't have a full list of outputs. ( #54 )
...
* consensus: fix batch handling when we don't have a full list of outputs.
* change `scan_chain` to new API
* clippy
* add a test for calculating multiple difficulties
* fmt
* rx_seed -> rx_vms
* consensus-rules: ring members younger than current block.
* only create rx vms when required.
* fix rx initiation when syncing
* add single block verification (no batch)
* update serai
2024-02-13 00:51:11 +00:00
hinto-janai
630faed263
ci: include macos + windows ( #52 )
...
* ci: install boost, include macos + windows
* cryptonight: fix `MSVC`
* cryptonight: use `flag_if_supported()`
* fix cryptonight builds
* update randomX
* fix rx builds
* add memwipe
* include memwipe.c in build
* spawn monerod in msys2 for windows
* fix last commit
* install dependencies before spawning monerod
* remove --detach
* try another way of spawning monerod
* add /I
* download and spawn monerod as a part of tests
* add download.rs
* extend time for monerod spawn
* move sleep and show monerod output
* fix clippy
* change stdin to pipped
* #[cfg(unix)] on bytes::Buf
* fix macos capitalisation
* remove tar.bz2 on macos expected dir
* remove zip on windows expected dir
* fix todo
* add docs
* fix a couple typos
---------
Co-authored-by: Boog900 <54e72d8a-345f-4599-bd90-c6b9bc7d0ec5@aleeas.com>
Co-authored-by: Boog900 <boog900@tutanota.com>
2024-02-12 13:39:15 +00:00
hinto-janai
ba0f82c356
helper: use crossbeam::atomic::AtomicCell
for atomic floats ( #56 )
...
* cargo.toml: add `crossbeam`
* helper: use `crossbeam::atomic::AtomicCell` for `AtomicF(32|64)`
* helper: atomic docs
2024-02-10 23:19:12 +00:00
Boog900
83b59c557c
net: use epee_encoding instead of monero-epee-bin-serde
...
This gives us more control than what serde provides. This
PR also moves to use `Bytes` where possible to allow
zero-copy parsing of network messages.
2024-01-30 16:09:54 +00:00
Boog900
2b65be4b18
net: add epee-encoding and fixed-bytes
2024-01-29 22:44:59 +00:00
Boog900
ed598e374e
remove empty cuprate bin and common
2024-01-22 01:56:34 +00:00
Boog900
b20b6fdee1
remove primitive-types for crypto-bigint
...
we already have crypto-bigint in our tree
2024-01-21 15:18:25 +00:00
Boog900
b9334b6a90
clean up dependencies
2024-01-21 14:46:03 +00:00
hinto-janai
50894bef89
helper/
(#45 )
...
* add `/helper/`
* add `num.rs`
* add `sys.rs`
* add `crypto.rs`
* add lints and mod to `lib.rs`
* `sys` -> `time`, add more free functions
straight from https://docs.rs/readable/latest/readable/time/index.html
* num: add `Number/Float` types, `cmp_float()`, `cmp_float_nan()`
* `common/src/tower_utils.rs` -> `helper/src/asynch.rs`
* gate modules with `#[cfg(feature = "...")]`
* add `thread.rs`
* cargo fmt
* thread: test out of 100
* add `atomic.rs`
* atomic: fix `fetch_update()`
* atomic: impl `fetch_*()` for atomic floats
* `#[no_std]` where possible
* asynch: remove `InstaFuture`
https://docs.rs/futures/latest/futures/future/fn.ready.html
* crypto: remove `check_point()`
* thread: return percent computation without static
* thread: add `low_priority_thread()`
https://docs.rs/lpt
* add rayon_spawn_async, remove crypto
* remove current_time_try
---------
Co-authored-by: Boog900 <54e72d8a-345f-4599-bd90-c6b9bc7d0ec5@aleeas.com>
2024-01-21 00:04:09 +00:00
Boog900
bb2292289f
consensus: organize tests
2024-01-19 00:35:22 +00:00
Boog900
b14e740d2d
monero-wire: fix some message decoding
2024-01-17 16:31:57 +00:00
Boog900
478a8c1545
return the Client
after a handshake
2024-01-13 00:07:35 +00:00
Boog900
40e64cc9c3
integrate RandomX, plus some other misc changes.
2024-01-05 22:36:57 +00:00
Boog900
f037532610
add ringCT rules
2023-12-24 21:07:28 +00:00
Boog900
84343a8297
move RPC scanning cache to borsh
2023-12-18 14:36:22 +00:00
Boog900
cf5e909f1b
cargo update
2023-12-17 14:32:03 +00:00
Luke Parker
fbd324c45d
Commit Cargo.lock ( #47 )
...
Pins versions, preventing publish updates from being automatically applied.
Implications for #39 , which at one point mentions the ability to use
`cargo vendor` for some reason?
2023-12-17 14:19:12 +00:00
6b5d5a45f7
added .gitignore
2023-02-08 14:19:37 +01:00
65664a2962
repo be like
2023-02-07 22:45:30 +01:00