Skip to content

2024.07.1.1

Compare
Choose a tag to compare
@MaidSafe-QA MaidSafe-QA released this 29 Jul 10:48
· 12 commits to 6fb9e2769533e3051a6d347501c99cd58af993fe since this release

Binaries

  • faucet v0.4.31
  • nat-detection v0.2.1
  • node-launchpad v0.3.11
  • safe v0.94.0
  • safenode v0.110.0
  • safenode-manager v0.10.1
  • safenodemand v0.10.1
  • safenode_rpc_client v0.6.26
  • sn_auditor v0.2.3

🔦 Highlights

  • The introduction of a record-store cache has significantly reduced the node's disk IO. As a side
    effect, the CPU does less work, and performance improves. RAM usage has increased by around 25MB per
    node, but we view this as a reasonable trade off.
  • The node's relay server now supports more connections: when running with --home-network, up to
    256 will be supported, and otherwise, it will be 1024. Along with minor tweaks to utilize the
    relay server properly, this should hopefully result in less connections being dropped.
  • Reward forwarding is more robust.
  • Chunk verification is now probabilistic, which should reduce messaging. In combination with
    replication messages also being reduced, this should result in a bandwidth usage reduction of
    ~20%.
  • Replication messages are less frequent, reducing bandwidth by ~20% per node.
  • Bad nodes and nodes with a mismatched protocol are now added to a block list. This reduces the
    chance of a network interference and the impact of a bad node in the network.
  • For the time being, hole punching has been removed. It was causing handshake time outs, resulting
    in home nodes being less stable. It will be re-enabled in the future.
  • Wallet password encryption enhances security, and in the case of secret key leakage, prevents
    unauthorized access.
  • Native Apple Silicon (M-series) binaries have been added to our releases, meaning M-series Mac
    users do not have to rely on running Intel binaries with Rosetta.

Merged Pull Requests

2024-07-11 #1945 -- feat: double spend spam protection

2024-07-11 #1952 -- fix(auditor): create auditor directory if it doesn't exist

2024-07-11 #1951 -- test(spend_simulation): add more attacks

2024-07-11 #1953 -- chore/fix(resources): use more portable shebang

2024-07-12 #1959 -- refactor outdated conn removal

2024-07-12 #1964 -- refactor(cli)!: wallet address and wallet create changes

2024-07-15 #1946 -- docs(sn_client): Basic documentation

2024-07-15 #1966 -- fix(network): do not add bootstrap peer as relay candidate

2024-07-16 #1969 -- chore(network): force close connection if there is a protocol mistmatch

2024-07-16 #1972 -- feat(safenode_rpc_client): added --version flag

2024-07-17 #1973 -- Auditor supplement features

2024-07-17 #1975 -- feat(networking): remove self.close_group and checks there as unused

2024-07-18 #1976 -- chore(networking): make ChunkVerification probabalistic

2024-07-18 #1949 -- feat(wallet): wallet secret key file encryption

2024-07-18 #1977 -- Reduce replication msg processing

2024-07-18 #1983 -- fix(node): remove cn from disk and flush to confirmed_spends during forwarding

2024-07-18 #1980 -- feat(networking): add small record cache

2024-07-18 #1982 -- feat(network): implement blocklist behaviour

2024-07-18 #1984 -- chore(node): move sn_client to dev deps

2024-07-18 #1985 -- Fix Nano count disappearing from Launchpad after restart

2024-07-19 #1971 -- feat!: limit error surface

2024-07-19 #1986 -- Add native Apple Silicon binaries to the release artifacts

2024-07-19 #1955 -- feat(networking): relax relay limits

2024-07-24 #1990 -- chore: implement new process in release workflow

Detailed Changes

Network

Added
  • Protection against an attack allowing bad nodes or clients to shadow a spend (make it disappear)
    through spamming.
  • Nodes allow more relayed connections through them. Also, home nodes will relay through 4 nodes
    instead of 2. Without these changes, relays were denying new connections to home nodes, making them
    difficult to reach.
  • Auditor tracks forwarded payments using the default key.
  • Auditor tracks burnt spend attempts and only credits them once.
  • Auditor collects balance of UTXOs.
  • Added different attack types to the spend simulation test to ensure spend validation is solid.
  • Bad nodes and nodes with a mismatched protocol are now added to a block list. This reduces the
    chance of a network interference and the impact of a bad node in the network.
  • The introduction of a record-store cache has significantly reduced the node's disk IO. As a side
    effect, the CPU does less work, and performance improves. RAM usage has increased by around 25MB per
    node, but we view this as a reasonable trade off.
Changed
  • For the time being, hole punching has been removed. It was causing handshake time outs, resulting
    in home nodes being less stable. It will be re-enabled in the future.
  • Force connection closure if a peer is using a different protocol.
  • Reserve trace level logs for tracking event statistics. Now you can use SN_LOG=v to get more
    relevant logs without being overwhelmed by event handling stats.
  • Chunk verification is now probabilistic, which should reduce messaging. In combination with
    replication messages also being reduced, this should result in a bandwidth usage reduction of
    ~20%.
Fixed
  • During payment forwarding, CashNotes are removed from disk and confirmed spends are stored to
    disk. This is necessary for resolving burnt spend attempts for forwarded payments.
  • Fix a bug where the auditor was not storing data to disk because of a missing directory.
  • Bootstrap peers are not added as relay candidates as we do not want to overwhelm them.

Client

Added
  • Basic global documentation for the sn_client crate.
  • Option to encrypt the wallet private key with a password, in a file called
    main_secret_key.encrypted, inside the wallet directory.
  • Option to load a wallet from an encrypted secret-key file using a password.
  • The wallet create command provides a --password argument to encrypt the wallet.
  • The wallet create command provides a --no-password argument skip encryption.
  • The wallet create command provides a --no-replace argument to suppress a prompt to replace an
    existing wallet.
  • The wallet create command provides a --key argument to create a wallet from a hex-encoded
    private key.
  • The wallet create command provides a --derivation argument to set a derivation passphrase to
    be used with the mnemonic to create a new private key.
  • A new wallet encrypt command encrypts an existing wallet.
Changed
  • The wallet address command no longer creates a new wallet if no wallet exists.
  • The wallet create command creates a wallet using the account mnemonic instead of requiring a
    hex-encoded secret key.
  • The wallet create --key and --derivation arguments are mutually exclusive.

Launchpad

Fixed
  • The Total Nanos Earned stat no longer resets on restart.

RPC Client

Added
  • A --version argument shows the binary version

Other

Added
  • Native Apple Silicon (M-series) binaries have been added to our releases, meaning M-series Mac
    users do not have to rely on running Intel binaries with Rosetta.