All notable changes to this project will be documented in this file. See standard-version for commit guidelines.
0.77.9 (2021-06-18)
- filter: ignore JoinRequests from filtering (547625d)
0.77.8 (2021-06-18)
0.77.7 (2021-06-16)
- avoid JoinsAllowed re-votes got filter out (abc2531)
0.77.6 (2021-06-16)
- make JoinRequest be handled properly by AE after section split (88723b0)
0.77.5 (2021-06-15)
0.77.4 (2021-06-15)
- avoid dropping JoinResponse::Redirect mistakenly (b60510e)
- new node after section split retry with MIN_ADULT_AGE (e4238b6)
0.77.3 (2021-06-15)
0.77.2 (2021-06-14)
- cache: Prevent exposing expired values from Cache::set (e54f9c6)
0.77.1 (2021-06-14)
0.77.0 (2021-06-14)
- rename Proven to SectionSigned, MemberInfo to NodeState
- rename Proven to SectionSigned, MemberInfo to NodeState (cda7f78)
0.76.1 (2021-06-12)
0.76.0 (2021-06-10)
- connectivity: sn_messaging includes a breaking change
- connectivity: refactor handling of lost connections (96aecd9)
0.75.1 (2021-06-09)
0.75.0 (2021-06-09)
-
bootstrap: new node Join messaging is not backward compatible.
-
bootstrap: changes to new messaging flow for peers joining the network (0ebb7c0)
0.74.6 (2021-06-08)
0.74.5 (2021-06-07)
0.74.4 (2021-06-06)
- proper differentiate local close and peer un-reachable (655d8a2)
0.74.3 (2021-06-06)
- avoid cache dead-lock (8aa62ba)
0.74.2 (2021-06-04)
- comm: ignore connection loss (693f61c)
- comms: do not take connectivity complaints from adults (f76b3a2)
0.74.1 (2021-06-04)
- cache: address PR comments (1e6c0c4)
0.74.0 (2021-06-03)
-
deps: the messaging update includes a breaking change
-
deps: update sn_messaging to v29 (b360807)
0.73.6 (2021-06-02)
- await on future for the stress test (cf66585)
0.73.5 (2021-06-02)
0.73.4 (2021-06-01)
- send SectionKnowledge notifications during SAP change (a99cf78)
- message: add Section PK to Messages (9251792)
- tests: fix tests after refactor and rebase (20e857e)
- variant: verify chain for SectionKnowledge variant also (056766c)
0.73.3 (2021-06-01)
0.73.2 (2021-06-01)
0.73.1 (2021-05-31)
0.73.0 (2021-05-31)
-
api: includes a breaking change to the public API
-
api: return only SectionAuthorityProvider for matching_section (eaea2bc)
0.72.0 (2021-05-30)
-
msgs: some of these changes impact the pubic API requiring some newly introduced traits usage.
-
msgs: move all routing message definitions out to sn_messaging (2259b7b)
0.71.4 (2021-05-28)
- use message_id instead of hash for message_filter (9f937a7)
- use msg id for outgoing filter (cc3e144)
- use signature as outgoing message_id (02dffda)
- restore outgoing filter and only have one wire_msg copy for multiple recipients (ba98b41)
0.71.3 (2021-05-28)
- update sn_messaging. (14e1f04)
0.71.2 (2021-05-26)
0.71.1 (2021-05-26)
- update message bytes directly for dest change (d253690)
0.71.0 (2021-05-25)
-
removing support for Ping messages.
-
upgrading sn_messaging to v25.0.0 (7acb16a)
0.70.0 (2021-05-24)
-
new version of sn_messaging is not backward compatible for sn_node messages.
-
upgrading sn_messaging to v24.0.0 (81907b5)
0.69.2 (2021-05-24)
- end-user: assign clients a xorname which always matches the section prefix so they are propoerly routed in a multi-section network (ac4a27c)
0.69.1 (2021-05-24)
- msg: attach correct proof_chain to messages (e0cd846)
0.69.0 (2021-05-21)
-
messaging: this version uses a non backward-compatbile version of sn_messaging
-
messaging: remove the RegisterEndUser messaging handling and flows (fa88047)
0.68.6 (2021-05-20)
- catering qp2p error change (1747cc3)
- remove the obsolete member of Network (6b6788b)
- resolving failing AE tests (fcdf30a)
0.68.5 (2021-05-14)
- errors: maintain Error chain in our Error types while customising them when additional context is available/useful (c89c3a4)
0.68.4 (2021-05-14)
0.68.3 (2021-05-13)
0.68.2 (2021-05-13)
0.68.1 (2021-05-13)
0.68.0 (2021-05-13)
- AE work
- AE: flesh out remaining Anti-Entropy flow (b28c422)
- fixing stress statistic couting error (47f2024)
- test: fix AE tests (4d8ae27)
- test: fix node_msg_to_self test (a563a77)
- convert SrcLocation to DstLocation in AE messages (314dc3e)
- fix dst_info for send_or_handle method (649d27b)
- fix dst_key in send_or_handle (6436aee)
- post-rebase issues (ddd0682)
- AE: implement SrcAhead flow (ade92fb)
- AE work (3bb0c88)
0.67.1 (2021-05-10)
- move section_key into SectionAuthorityProvider (7d2d476)
0.67.0 (2021-05-10)
-
event:
Event
enum variants changed and new added. -
event: add SectionSplit, increase granularity (4766067)
0.66.3 (2021-05-10)
0.66.2 (2021-05-07)
0.66.1 (2021-05-07)
- resolve failing tests after SectionAuthProvider refactor (99d5d28)
0.66.0 (2021-05-06)
-
deps: Query response content changed.
-
deps: update sn_messaging (76e733b)
0.65.3 (2021-05-05)
0.65.2 (2021-05-04)
0.65.1 (2021-04-30)
- notification only about live adults (01a8524)
0.65.0 (2021-04-30)
-
deps: update sn_messaging to v20.0.0
-
deps: update sn_messaging to v20.0.0 (2417d53)
0.64.4 (2021-04-30)
- only send adult list notification when no elder changing (4964a20)
0.64.3 (2021-04-28)
- notify adult nodes with own section's adult list (b4dddc0)
0.64.2 (2021-04-28)
0.64.1 (2021-04-28)
0.64.0 (2021-04-27)
-
deps: update sn_messaging to 0.19.0
-
deps: update sn_messaging to 0.19.0 (c79313d)
0.63.2 (2021-04-27)
- only send to client directly when it belongs to self section (b8ddc1b)
0.63.1 (2021-04-26)
0.63.0 (2021-04-23)
-
deps: sn_messaging major version bump
-
deps: update sn_messaging (c7c4108)
0.62.1 (2021-04-23)
0.62.0 (2021-04-21)
-
deps: New major version for sn_messaging.
-
deps: update sn_messaging (ecc376d)
0.61.2 (2021-04-21)
0.61.1 (2021-04-21)
0.61.0 (2021-04-21)
- for aggregate_at_src message, notify sn_node with proof as well
- restore aggregate at source (4e86a20)
- for aggregate_at_src message, notify sn_node with proof as well (8a39aaa)
0.60.11 (2021-04-21)
0.60.10 (2021-04-21)
- delivery_targets: deliver to all when targets are final dst (f26722b)
0.60.9 (2021-04-21)
- vote DKG non_participants off (c4d6067)
0.60.8 (2021-04-21)
- api: add new API for an Elder node to propose that a node has gone (2937e59)
0.60.7 (2021-04-21)
- tests: refactor delivery group tests (6437b76)
0.60.6 (2021-04-21)
0.60.5 (2021-04-21)
- messaging: restore target group size (02fca6e)
0.60.4 (2021-04-21)
0.60.3 (2021-04-14)
- connectivity: use separate endpoint to test connectivity to new (26a2bcc)
0.60.2 (2021-04-14)
- kill elder received too many connectivity complaints (cc9ca8a)
0.60.1 (2021-04-14)
0.60.0 (2021-04-13)
-
deps: Node message members changed.
-
deps: update sn_messaging (1b1fdf7)
0.59.1 (2021-04-13)
0.59.0 (2021-04-13)
- new version of routing
- This commit is mainly to cover the change of Peer. Which used by a public struct but won't trigger the version update automatically.
- breaking version change (0fb090c)
0.58.2 (2021-04-13)
0.58.1 (2021-04-08)
- return TryJoinLater error when network disallow join (a5e4d4b)
0.58.0 (2021-04-08)
- deps: new version of sn_messaging
- Also removes handling of the unused
AtSource
aggregation scheme.
- deps: update sn_messaging (8d61421)
0.57.3 (2021-04-06)
- relocated allowed to join with own age (018a9b8)
0.57.2 (2021-04-05)
- nodes using different ages (abb39c1)
- relocated node can have higher age to join after first section split (68b3e1e)
0.57.1 (2021-04-02)
- no router startup fixed w/qp2p udpate (29b98ea)
0.57.0 (2021-04-01)
-
dep: the new qp2p version includes a breaking change
-
dep: update qp2p dependency (3efb8c5)
0.56.0 (2021-03-31)
- Events removed and event members changed.
- restore EldersChange to a previous version (0a85b87)
0.55.0 (2021-03-31)
- The
proof_chain
field ofEvent::MessageReceived
is nowOption
.
- adults not able to send non-aggregated messages (9248cd0)
0.54.4 (2021-03-31)
- remove potential panic in SignedRelocateDetails (23d0936)
0.54.3 (2021-03-31)
- bounce untrusted messages directly to the original sender (1bed232)
- send OtherSection to src of the original message, not src section (cd3e382)
0.54.2 (2021-03-29)
- last byte of node's name represents its age (69cef7a)
0.54.1 (2021-03-29)
- keep the genesis key and use it for fallback proofs (99fb5ca)
0.54.0 (2021-03-29)
- Added
additional_proof_chain_key
parameter toRouting::send_message
, addedproof_chain
field toEvent::MessageReceived
.
- support adding additional proof chain keys to user messages (2275730)
0.53.0 (2021-03-24)
Routing::neighbour_sections
renamed toother_sections
.
- remove neighbour restriction (269cff0)
- don't send OtherSection or vote TheirKnowledge to our section (95f14d8)
- reduce unneeded lazy messages (0498f24)
0.52.1 (2021-03-24)
- use supermajority agreement + increase elder size to 7 (b729a87)
- test: increase the number of nodes in the drop test from 3 to 4 (9ce0ec7)
0.52.0 (2021-03-22)
- DT update. Naming and message structs for splits
- chain: expose SectionChain via API (1590414)
- event: add separate genesis event (681d2c7)
- event: expose previous key in elderschanged (0718e0c)
- event: update elders_changed event (af37d06)
0.51.0 (2021-03-18)
Routing::match_section
renamed toRouting::matching_section
- support dst accumulation with any message variant (cc2f413)
- use src from itinerary for dst accumulated user message (31838e9)
- use XorName instead of Prefix for section message src (d2347ee)
0.50.0 (2021-03-16)
- remove
Event::PromotedToAdult
and thestartup_relocation
field ofEvent::MemberJoined
, both parts of public API.
- remove unused events and event properties (238a301)
0.49.1 (2021-03-11)
0.49.0 (2021-03-05)
-
tokio: new Tokio v1 is not backward compatible with previous runtime versions < 1.
-
tokio: upgrade tokio to v1.2.0 and qp2p 0.10.0 (e5adc1a)
0.48.1 (2021-03-04)
- prevent creating Section with elders info signed with wrong key (f0f839c)
- use chain main branch length as the DKG generation (ed3a54e)
- dkg: allow multiple pending key shares (92dfc70)
- dkg: avoid mixing DKG messages from different generations (e68ba2a)
- dkg: detect corrupted DKG outcome (ec53c63)
- make sure sibling section info is valid and trusted (2044b11)
0.48.0 (2021-03-03)
-
data-types: new Sequence data-type doesn't allow Policy mutations.
-
data-types: upgrading data-types to v0.16.0 and sn_messaging to v8.0.0 (5e39755)
0.47.5 (2021-03-03)
0.47.4 (2021-03-03)
- always send their Offline vote to relocated elders (7f77e97)
- avoid invalidating signature when resending bounced Sync message (d482dab)
- check trust with all known keys, not just the src matching ones (2c9a1b2)
- cover all cases of RelocatePromise handling (5966d3d)
- ignore Sync messages not for our section (6d90fcf)
0.47.3 (2021-03-03)
- respond with GetSectionResponse::Redirect on missing pk set (69a1fb8)
- bootstrap: avoid duplicate GetSectionRequest (84327e2)
- bootstrap: require GetSectionResponse to match our destination, not name (4f484f1)
- stress-test: fix probe message sending (a8a184c)
0.47.2 (2021-03-02)
- resolve a doc failure (d51f0c6)
0.47.1 (2021-03-02)
- implement new SectionChain that can resolve forks (a3d786f)
- replace (old) SectionProofChain with (new) SectionChain (03fb82c)
- bug in SectionChain::minimize (0eef78e)
- correctly handle section chain extend edge case (cae05ba)
- ensure section elders info is always signed with the last chain key (82fad1a)
- make SectionChain::check_trust more strict (8dcd021)
0.47.0 (2021-03-02)
- messaging: send_message api now requires an itinerary argument
-
issues pointed out in review comments (d9a986e)
-
messaging: add expected aggregation scheme, and use an itinerary (a79d2d0)
0.46.3 (2021-03-02)
0.46.2 (2021-03-01)
0.46.1 (2021-03-01)
0.46.0 (2021-02-25)
- accumulation: this uses a new version of sn_messaging with a breaking change
- accumulation: add support for accumlation at dest node (f892838)
- dst-accumulation: verify aggregated signature with proof chain (bd99595)
0.45.1 (2021-02-24)
0.45.0 (2021-02-24)
- added new field to the
Event::EldersChanged
variant.
0.44.0 (2021-02-23)
- deps: removes send_message_to_client api,
-
add missing routing to client of relayed client message (fbde5b1)
-
addresss review comments (27dcac5)
-
post-rebase issues (906ef03)
-
remove unnecessary error mapping (0f3418b)
-
remove use of wildcard match and unimplemented macro (84c53d8)
-
deps: update sn_messaging, sn_data_types (367b673)
0.43.4 (2021-02-23)
0.43.3 (2021-02-18)
0.43.2 (2021-02-16)
- having EldersInfo change candidate considered as DKG in progress (6137123)
- notify client of incorrect section_key (c54f034)
- updates for section key response changes (71f89d8)
0.43.1 (2021-02-15)
- remove offline elder from vote recipients (3bcea21)
0.43.0 (2021-02-15)
- this changes the return type of State::new
-
comm: dont hold on to messages sent on a channel that is unused (92856cd)
-
fix clippy errors with version 1.50.0 of rust (b6b385a)
0.42.4 (2021-02-09)
0.42.3 (2021-02-08)
0.42.2 (2021-02-04)
- redirect to our elders on mismatching GetSectionRequest as adult (22c4745)
0.42.1 (2021-02-04)
0.42.0 (2021-02-04)
- remove unused Error::NodeMessaging variant
- add Envelope and InfrastructureQuery (e0b999f)
- make use of sn_messaging crate for messaging serialisation/deserialisation (cbc4802)
- modify bootstrap to use infrastructure queries (9fb438f)
- remove unused Error::NodeMessaging variant (0b70c28)
- send messages with correct MessageKind byte (6756b43)
0.41.6 (2021-02-01)
- keycache: adds a key cache and removes exposure of secret key (b312446)
- clippy: remove clone (undetected in local clippy check) (da6cbc7)
0.41.5 (2021-01-27)
0.41.4 (2021-01-26)
- log send to client error (ddeff5e)
0.41.3 (2021-01-21)
0.41.2 (2021-01-20)
0.41.1 (2021-01-20)
- do not create connection when failed to send to client (d5eadd8)
0.41.0 (2021-01-19)
-
- remove `Error::BadLocation` (use the more specific `InvalidSrcLocation` / `InvalidDstLocation` instead)
- rename
Error::InvalidSource
toError::InvalidSrcLocation
- rename
Error::InvalidDestination
toError::InvalidDstLocation
- rename
- improve fork diagnostics (dbf9807)
- stress test: improve output (33eac1b)
- remove old DKG sessions (c8db72f)
- support multiple concurrent DKGs (98fc101)
-
allow only one relocation at the time per node (0e4d05f)
-
don't fail in update_state if secret key share is missing (97d8266)
-
ignore elders update with incorrect prefix (dfc9c60)
-
ignore invalid bootstrap response (3d8cfd5)
-
stress test: ignore InvalidSource errors when sending probes (adabf82)
-
send Sync messages on split even when demoted (5f42b78)
-
remove Error::BadLocation (3391c7f)
0.40.0 (2021-01-13)
- this affects the
Error
type which is a part of the public API.
-
trust check failure of Sync message sent to non-elders (5520c18)
-
use keys not key indices to check whether elders changed (a99a07f)
-
remove
Error::UntrustedMessage
(dbcf0db)
0.39.16 (2021-01-13)
0.39.15 (2021-01-13)
0.39.14 (2021-01-12)
- add stress test example (cf25c48)
- stress test: fix log to file and probe message destination (c933605)
- stress test: fix sent probe messages counter (b9b7530)
0.39.13 (2021-01-05)
0.39.12 (2020-12-29)
0.39.11 (2020-12-29)
0.39.10 (2020-12-25)
- avoid over relocation (989529c)
0.39.9 (2020-12-24)
- set filter number boundary (c129bff)
0.39.8 (2020-12-16)
- use age assigned by section (4db6351)
0.39.7 (2020-12-15)
- reject SectionInfo votes not voted by a participant (c40dc12)
0.39.6 (2020-12-14)
- handle message send to self (a1c26ff)
0.39.5 (2020-12-11)
0.39.4 (2020-12-09)
- test: account for relocations in test_startup_section_bootstrapping (53196a5)
- consider also relocated current elders for elder candidates (fffc946)
- do not require resource proof for relocated node + test (667e1fb)
- forward ResurceChallenge to the bootstrap task (2552f06)
- test: dont assert new joining node is not instantly relocated (9a18b4c)
0.39.3 (2020-12-09)
- use tracing for logging (a68af40)
0.39.2 (2020-12-07)
0.39.1 (2020-12-03)
- carry out resource proofing during bootstrap (a047ca1)
- relocation during startup no-longer required (cf937e4)
0.39.0 (2020-12-02)
-
- remove `Routing::secret_key_share` (use `Routing::sign_with_secret_key_share` instead).
- Rename
Error::InvalidElderDkgResult
toError::MissingSecretKeyShare
Routing::public_key_set
andRouting::our_index
now returnMissingSecretKeyShare
instead ofInvalidState
on error.
- Rename
- do not expose BLS secret key share (e8fa12e)
0.38.0 (2020-11-30)
- use
use sn_routing::Event;
instead ofuse sn_routing::event::Event;
. Event
changes:
- Remove
Event::Connected
- not needed becauseRouting::new
now returns fully connected routing instance. - Add
Event::Relocated
- replacesEvent::Connected(Connected::Relocate)
- Remove
Event::InfantJoined
- merged withMemberJoined
- Change
Event::MemberJoined::previous_name
toOption
to allow distinguishing between new and relocated peers.
- remove size fields within routing::Config
- remove NetworkParams
- some methods of
Routing
that previosuly returnedOption<T>
orResult<T>
now return just T. - rename Instance to Routing
Node
andNodeConfig
are part of the public API.
- add bootstrap message backlog (75f0a5c)
- allow rejoin with same name (ded038d)
- cancel running timers on drop (d8f420f)
- expose
Event
directly, hideevent
module (d940b77) - implement DKG message bouncing (551c427)
- implement lost peer detection (cbc57ba)
- implement message resending (cc2fcbd)
- implement proper node termination (0fbced8)
- improve Comm api and documentation (9ecfe8a)
- joins_allowed flag to toggle accept new node or not (5def794)
- make the log identifier work again (48d7ce7)
- make the resend delay configurable (8a0d043)
- minor changes to the Event enum (56e658f)
- notify when key got changed during relocation (2540a27)
- ping peers on connection loss to detect if they went offline (d6be64f)
- relocate all joining infants during startup phase (492f4d7)
- relocate one infant with age increased by one when set joins_allowed flag (03d9827)
- age: add age getter API (07430a0)
- comm: detect lost connections (f4e9e3a)
- remove resend delay (9b0971e)
- remove Variant::Ping (18a9d40)
- start the first node with higher age (d23914e)
- upnp: use new version of qp2p with UPnP and echo service (afb609e)
- relocate only the oldest peers that pass the relocation check (d7855b5)
- remove join timeout - to be handled by the upper layers instead (cb4f6fe)
- use unbounded channel for Events (fb5a3aa)
- api: expose an async event stream API, and adapt node module to use qp2p async API (a42b065)
- node: cache Connections to nodes (a78c305)
-
prevent losing incoming messages during bootstrapping (3c9357e)
-
dkg: backlog messages with unknown DKG key (03873c1)
-
dkg: handle delayed DKG outcome (c58611b)
-
dkg: handle DKG with single participant (00c2efa)
-
bounce DKG message only if node has no ongoing session (350b75d)
-
clear peer_mgr candidate post pfx change. (57cd490)
-
don't ack hop messages in Client state (9539c05)
-
expand ConnInfoReq handling conditions. (d081800)
-
handle invalid bootstrap response by retuning error (d5ee338)
-
lost peer handling (1d95194)
-
no longer use serde macro derive (2116420)
-
Remove old compatible neighbour pfx not restricted to a strict parent/child prefix in Chain on updating neighbour_infos. (#1579) (6d23fa3)
-
rename mock/quick_p2p to mock/quic_p2p (067fab0)
-
resolve clippy errors of non-mock tests (94eda60)
-
resolve failing example (121ce95)
-
send Event::Connected only after transition to Approved (dbe0593)
-
take ages into account when calculating DkgKey (824d229)
-
comm: try to re-connect after previously failed send (08d9410)
-
event: export qp2p SendStream and RecvStream for consumers to use (65af16f)
-
use the latest section key when updating non-elders (219f98d)
-
vote for sibling knowledge after parsec reset (090663f)
-
remove the Routing state machine (cfa19ff)
-
rename Instance to Routing (a227e3f)
-
rename Node to Instance and NodeConfig to Config (d8d6314)
0.37.0 (2018-08-28)
- Upgrade unwrap version to 1.2.0
- Use rust 1.28.0 stable / 2018-07-07 nightly
- rustfmt 0.99.2 and clippy-0.0.212
- Update license to mention GPLv3 only
0.36.0 (2018-04-05)
- Use rust 1.24.0 stable / 2018-02-05 nightly
- rustfmt 0.9.0 and clippy-0.0.186
- Use rust 1.22.1 stable / 2017-11-23 nightly
- rustfmt 0.9.0 and clippy-0.0.174
- Fix rounding error in test.
- Depend on Crust 0.29.0.
- Depend on rust_sodium 0.6.0.
- Depend on Crust 0.28.1.
- Increase MAX_MUTABLE_DATA_ENTRIES from 100 to 1000.
- Rate limiter refund on overcharge for get response.
- Rate limiter having soft capacity for clients.
- Bugfix to not mutate peer on receiving conn_info_response.
- Bugfix to remove expired peers(normalise peers) when receiving TunnelSuccess or TunnelRequest.
- Enforce one client per IP only on bootstrap request.
- Add Rand impl for PermissionSet.
- Resend rate exceeded user message parts and remove Event::ProxyRateLimitExceeded
- Bugfix to not reject BootstrapRequest messages invalidly.
- Bugfix to avoid adding nodes to disconnected client list.
- Bugfix to avoid handling recently-disconnected client direct messages.
- Allow mock-crust network to support multiple nodes/clients with the same IPs.
- Allow only one client ip per proxy.
- Modify the client Rate Limiter paradigm to not put an upper threshold on number of clients with unique IPs to bootstrap off a proxy.
- Add dev configuration options for routing such that these options can be supplied in a routing config file that routing would read to tweak parameters such as disable resource proof etc.
- Update to use Rust Stable 1.19.0 / Nightly 2017-07-20, clippy 0.0.144, and rustfmt 0.9.0.
- Make MutableData errors more descriptive.
- Remove support for Structured, PrivAppendable and PubAppendable Data
- Add Support for MutableData instead.
- Introduce mock-crypto which provides efficient mocking of the crypto primitives for faster test runs for cases where we don't care about tightness of security.
- Code rate-limiter to restrict proxy from relaying more than the agreed threshold to the Network on behalf of the clients (each client being identified on IP level).
- Detect malformed messages and invalid/disallowed RPCs and ban such a sender on IP level.
- Replace all sha256 from rust_sodium with sha3_256 from tiny_keccak.
- Move
AccountPacket
type required by vaults and clients into acommon_types
module.
- Integration with templatised Crust where now routing specifies what to use as a UID so that crust and routing use a common UID to identify peer.
- Peer manager clean up as connect success now tells us everything about the peer. Previously we needed to wait additionally for NodeIdentify for instance as crust-uid (PeerId) and routing-uid (PublicId) were separate and each layer informed about the id specific to that layer only.
- Add section update requests to make merges more stable.
- Don't approve new node if routing table is invalid.
- Work around cases where
OtherSectionMerge
would not accumulate. - Several fixes to tunnel nodes and peer manager.
- Remove more sources of randomness to make tests deterministic.
- Add new error types related to invitation-based account creation.
- Replace rustc-serialize with serde.
- Don't try to reconnect to candidates that are not yet approved.
- Don't include peers in
sent_to
that are not directly connected. - Use SHA3 everywhere instead of SipHash.
PrefixSection
authorities now always refer to all sections compatible with the given prefix.- Cache
OwnSectionMerge
messages until both merging sections have sent one. Only then update the routing table. - Cache any routing table updates while merging, and relay them afterwards.
- Other merge and tunnel fixes, and additional tests for merging and tunnels.
- Try to reconnect after a connection drops.
- Extend the tests for tunnelling and the churn tests.
- Fix several peer manager issues related to tunnel nodes and candidates.
- Send
SectionSplit
messages asPrefixSection
authority to allow resending. - Fix several issues related to merging sections.
- Some improvements to the log messages.
- Retry preparing connection info if Crust returns an error.
- Profile the bandwidth of nodes joining the network. Reject slow nodes.
- Organise nodes into disjoint sections. Introduce the
Section
andPrefixSection
authorities. - Maintain lists of signatures of neighbouring sections, which will enable secure message validation.
- Accumulate messages in the sending group/section, then send the messages with all the signatures across a single route. This reduces the number of total invididual hop messages that need to be sent.
- Routes are now disjoint: Retrying to send a message along a different route cannot potentially fail on the same node again.
- Merge the routing_table crate into routing.
- Remove the internal event handling thread. Events should be handled in the upper library's event loop. That way, some message passing can be replaced by direct calls to routing methods.
- Remove the
PlainData
type which was only used in tests.
- Increase the ID size limit by 10 kB.
- add
NO_OWNER_PUB_KEY
to make data effectively immutable - disallow that key together with other owners (new error
InvalidOwners
) - provide API for data chunk size validation (new error
DataTooLarge
) - support new deletion paradigm for structured data
- Add the public and private appendable data types.
- Allow whitelisting nodes via the crust config file.
- Randomise message handling order in the mock crust tests.
- Fix a panic in ack manager.
- Refactoring: Further split up and reorganise the states and move more logic into the peer manager module.
- Several bug fixes and test improvements.
- Refactoring: Turn
Core
into a state machine withClient
andNode
states. Move some more logic onto thePeerManager
. - Fix a bug that caused some nodes to refuse to close an unneeded connection.
- Fix redundant calls to Crust
connect
.
- Fix sodiumoxide to v0.0.10 as the new released v0.0.12 does not support rustc-serializable types anymore and breaks builds.
- Avoid redundant hash calculations by making the data
name
method a simple getter. - Fix ack handling when resending a message.
- Some refactoring and test updates.
- Don't cache as a member of recipient group: this can cause redundant responses.
- Disconnect previous bootstrap node when retrying to bootstrap.
- Fix tests involving sorting nodes by names.
- Fix random seeds when multiple tests are run at once.
- Add seeded rng support to mock crust tests.
- Add support for response caching.
- Add various mock crust tests.
- Prevent multiple routing nodes from starting on same LAN.
- Migrate to the mio-based Crust.
- Replace redundant group messages by hashes to save bandwidth.
- Split up large messages into 20 kB chunks.
- Improve message statistics; add total message size and count failures.
- Restart with blacklist if the proxy node denied the connection.
- Merge message_filter into routing.
- Some refactoring to clean up the logic in
Core
. - Several bug fixes.
- Reduce the
XorName
size from 512 to 256 bits.
- Send acknowledgement messages (acks) and resend via a different route only if no ack is received. Previously, several routes were used simultaneously, wasting a lot of bandwidth.
- Merge xor_name into routing.
- Simplify the message type hierarchy and the API.
- Fix sending redundant connection info.
- network size < GROUP_SIZE will only accept new nodes via first node
- Only start a network if explicitly designated as first node.
- Use a Crust priority based on message type.
- Don't send
Tick
events to clients. - Use a size limit for the data cache instead of a timeout.
- More detailed message stats logging.
- Allow up to 40 tunnel client pairs.
- Migrate to Crust 0.12.0.
- Add sequence diagrams to the documentation.
- Improve logging.
- Fix several bugs.
- Depend on latest Crust.
- Add the 'Stats' prefix to all statistics log messages.
- Add a periodic tick event.
- Increase the timeout for polling bucket groups.
- Extract the statistics module and gather more statistics.
- Some improvements to the log messages.
- Fix several lint warnings.
- Add the routing table to
NodeAdded
andNodeLost
events. - Add
NetworkStartupFailed
andStartListeningFailed
events. - Improve join limit to prevent damage to the network in case of many simultaneously joining nodes.
- Drop unneeded connections from the routing table.
- Replace node harvesting with periodic bucket polling.
- Depend on Crust 0.11.0.
- Add
HEARTBEAT_ATTEMPTS
constant to configure when an unresponsive peer is considered lost. - Fix a bug that caused unneeded node harvesting attempts.
- Reduce network traffic by including recipients in hop message that have handled the message.
- Bug fix: DataIdentifier now correctly returns the structured data computed name in its name() function
- Add
identifier()
method to all data elements (type + name) - All
ImmutableData
types now concrete (not variants)
- Fix a message handling bug.
- Add
MessageId::zero
constructor. - Always send
NodeAdded
for a new peer, even if not in a common group.
- Implement Rand for mock PeerId.
- Add data name to Put, Post and Delete success responses.
- Add message id to Refresh messages
- Node numbers only increase during node addition in churn for ci_test example
- Update dependencies
- Add tunnel nodes.
- Optimise the
GetNetworkName
message flow for quicker joining. - Make caching optional.
- Send keepalive signals to detect lost peers.
- Implement full
Put
response flow in the example node. - Remove digest from success responses; it has been replaced by
MessageId
. - Migrate to Crust 0.10.0.
- Various bug fixes.
- Make the mock_crust module public
- Send a Disconnected event if client fails to bootstrap.
- Replace CBOR usage with maidsafe_utilites::serialisation.
- Updated dependencies.
- Take
MessageId
s as an argument in the Client methods.
- Add mock Crust and network-less tests for
Core
. - Return
MessageId
s from Client methods. - Allow a user to connect to the same proxy node with several clients.
- Send a Disconnected event if the network connection is lost.
- Log disconnecting clients.
- Several bug fixes.
- Migrate to the new Crust API.
- Add some timeouts to check for stale connections.
- Limit proxy connections to one.
- Make node discovery more efficient.
- Shorten log messages and debug formats to make the logs clearer.
- Some updates to churn handling in the example.
- Fix lots of Clippy warnings.
- Fix lots of bugs.
- Added several tests
- Further documentation improvements
- Improved debug output of several types
- Reject clients if the routing table is too small
- Fix computation of remaining required signatures for StructuredData
- Limit the number of concurrently joining nodes
- Remove unneeded files
- Expand documentation
- Distinct message IDs for added and lost nodes
- Ignore double puts in the example
- Update core to send on only first connection
- Further updates to examples
- Moved CI scripts to use Stable Rust
- Getting examples updated
- Updating the API to expose the routing node name and close group
- Bug fix - Blocking InterfaceError not returning
- Changing mutable to immutable for stop() function in routing.rs
- Expose ImmutableDataType
- Cleanup of routing API
- Exposing of success and failure event for GET, PUT, POST and DELETE
- Separating XorName and Routing Table into their own crates
- Remove wildcard dependencies
- #711 remove unneeded state on ::connect
- MAID-1366 update routing to crust 0.3 API
- #369 enforce LINT checks
- MAID-1360 unit tests for RoutingCore
- MAID-1357 unit tests for message and refresh accumulator
- MAID-1359 unit tests for Relay
- MAID-1362 more unit tests for StructuredData, Types and Utils
- MAID-1350 introduce simple measuring tools for establishing the threshold for the accumulators
- MAID-1348 ChurnNode for integration tests
- #699 implement debug for StructuredData
- #696 expose NAME_TYPE_LEN and random traits
- #695 correct style error in error.rs
- #692 add cause and event::DoRefresh for improvements to churn
- #691 update QA libsodium documentation
- #690 correct failing test
- MAID-1361 unit tests for id, public_id, error, data, direct_messages
- MAID-1356 unit test filter.rs
- MAID-1358 unit test signed_message
- #685 use latest accumulator
- MAID-1349 refresh_request to use authority
- MAID-1363 remove wake_up.rs
- MAID-1344 ::error::ResponseError::LowBalance
- MAID-1364 clean out types.rs
- #663 only churn on QUORUM connected nodes
- #662 enable dynamic caching
- #670 update Travis with ElfUtils
- #669 update Travis with install_libsodium.sh
- #664 update to match Crust's api change
- #660 Unique SignedMessage with random bits and routing event loop
- Fixed #560 Removed unstable features.
- Updated "hello" messages
- Updated cache-handling in line with current Routing requirements
- Further work on churn handling
- #647 CI disallow failures on windows x86 (32bit) architecture
- #646 correct ResponseError::HadToClearSacrificial to return NameType and u32 size
- #645 key_value_store to test < Client | ClientManager > < ClientManager | NaeManager > behaviour
- #638 debug formatting for Data
- #637 our authority API update
- #626 refresh messages
- #636 rustfmt formatting
- #634 rename fob to public_id in routing table
- #628 initial handlers for cache
- #624 remove peers from example CLI, small improvements
- #620 event bootstrapped, connected, disconnected
- #623 maximum allowed size for structured data
- internal bug fixes
- partial restoration of unit tests
- fine-tuning public API in correspondence with user projects
- #582 implement routing public api channel to routing_node
- #580 review message_received in routing_node
- #579 simplify example to a pure DHT (no client_managers)
- #578 implement connect request and connect response
- #577 implement sending events to user
- #576 implement accumulator as stand-in for sentinel
- #575 temporarily remove sentinel dependency
- #574 fix sodiumoxide problems with Travis CI
- #573 use signature as filter type, deprecating message id
- #572 implement request network name
- #571 refactor example to new api
- #567 implement generic send for signed message
- #566 implement bootstrap connections in core
- #565 implement target nodes in core
- #564 pruning and clean up
-
MAID-1158 Unified Data
- MAID-1159 Implement PlainData
- MAID-1160 Implement ImmutableData
- MAID-1163 Implement StructuredData
- MAID-1165 StructuredData::is_valid_successor
- MAID-1166 Unit Tests for PlainData and ImmutableData
- MAID-1167 Unit Tests for StructuredData
- MAID-1168 Unit Test IsValidSuccessor for StructuredData
- MAID-1171 Implement UnifiedData enum
- MAID-1172 Update with UnifiedData: GetData and GetDataResponse
- MAID-1173 Update with UnifiedData: PutData and PutDataResponse
- MAID-1175 Update with UnifiedData: RoutingMembrane RoutingClient Put and Get
- MAID-1176 Update with UnifiedData: Interfaces and churn
-
MAID-1179 Implement Post and PostResponse
-
MAID-1170 Update RoutingClient and relay node: RoutingMessage
-
MAID-1251 Remove option first from routing node
-
MAID-1255 RFC 0001 - Use public key for id on all messages
-
MAID-1063 replace MessageTypeTag with full enum.
-
#557 channel architecture and simplified message
- Updated dependencies' versions
- Fixed lint warnings caused by latest Rust nightly
- #426 close bootstrap connection
- #426 routing acts on churn
- #426 group size 8; quorum 6
- #426 improve refresh routing_table
- #426 cache on connect_response
- #426 reflect own group: on FindGroupResponse in our range is seen, ask for FindGroup for our name.
- #424 Patch for Vaults handle put behaviour
- [0.2.5] #421 Set Authority unauthorised put to ManagedNode to accommodate Vaults for now
- [0.2.4] #419 Correct ClientInterface::HandlePutResponse
- [0.2.3] #416 Activate HandleChurn (but don't act on the resulting MethodCall yet)
- [0.2.2] Update sodiumoxide dependency to
*
- [0.2.2] Update crust dependency to
*
- [0.2.1] Update sodiumoxide dependency to
0.0.5
- Fix master documentation url in readme
- #406 enable handler for unauthorised put
- #369 clean up unneeded features
- #360 Fix intermittent failure in Relay
- #372 Introduce unit tests for Routing Membrane
- #388 Handle PutDataResponse for routing_client
- #395 Preserve message_id
- #354 Fix release builds
- MAID-1069 OurCloseGroup Authority
- #363 Refresh message and ad-hoc accumulator
- #290 Remove NodeInterface::handle_get_key
- #373 Reduce group size for QA to 23
- #330 Who-Are-You / I-Am message for identifying new connections
- #312 Fix never-connecting client
- #343 Filter escalating number of connect requests
- #342 Clean up overloaded debug command line printout
- #347 Relay GetDataResponses and cached GetDataResponses back to relayed node
- #314 simple_key_value_store input validation lacking
- #324 simple_key_value_store peer option
- #336 Routing
0.1.62
causes API inconsistency in usage of RoutingClient
- MAID-1037 Address relocation
- MAID-1052 Message Handling
- MAID-1062 extract all_connections into a module
- MAID-1070 drop_bootstrap in coordination with CRUST
- MAID-1071 Implement relay id exchange for client node
- MAID-1066 Routing Example : update to internal event loop
- MAID-1114 Relay module
- MAID-1060 update Interface for Vaults
- MAID-1040 enable Id, PublicId and NodeInfo with 'relocated' name
- MAID-1007 limit swarm to targeted group
- MAID-1032 correct name calculation of pure Id
- MAID-1034 ConnectResponse needs to include original signed ConnectRequest
- MAID-1043 remove old sentinel
- MAID-1059 rename types::Action -> types::MessageAction; rename RoutingNodeAction -> MethodCall
- Remove FailedToConnect Event
- Re-expose crust::Endpoint as routing::routing_client::Endpoint
- Move bootstrap out of routing
- Complete Routing Node Interface to accomodate churn
- Add caching to node interface
- Handle ID Caching
- Handle Cache / Get / Check calls
- Routing message handling
- Sentinel:
- Handover existing implementation
- Account transfer merge
- Group response merge
- Signature checks
- Check Authority (Ensure use and implementation of Authority is in line with the design doc / blog.)
- Implement unauthorised_put in routing_node and routing_client (this skips Sentinel checks)
- Implement routing connections management
- Added encodable/decodable for ClientIdPacket
Version 0.1.1
- Bootstrap handler implementation
- Bootstrap handler test
- Create sort and bucket index methods
- Implement routing table
- Test routing table
- Implement sentinel (initial)
- Finalise sentinel in line with tests
- Implement client node
- Test sentinel
- Implement routing message types (Connect FindNode)
- Test message types
- Implement Get Put Post messages
- Version 0.0.8
- Set up facade design pattern
- Test facade pattern
- Set up accumulator
- Accumulator tests
- Message header
- Message header tests
- API version 0.0.6