2024.07.1.1
Binaries
faucet
v0.4.31nat-detection
v0.2.1node-launchpad
v0.3.11safe
v0.94.0safenode
v0.110.0safenode-manager
v0.10.1safenodemand
v0.10.1safenode_rpc_client
v0.6.26sn_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.