Releases: karlsen-network/karlsend
v2.2.1
Optional Update
This is an optional update which includes wallet related improvements and fixes.
Summary
Pool operators reported issues related to rejected transactions which has been fixed in upstream Kaspa already, cherry-pick all the important recent upstream fixes. It is highly recommended to update if you suffer from the following problem:
error submitting transaction:
Rejected transaction 2dd684fa94c448ef2e1c1245a2ed72edad25a16dcc1aa57ea01f77be58a380d8:
transaction 2dd684fa94c448ef2e1c1245a2ed72edad25a16dcc1aa57ea01f77be58a380d8 is not standard:
transaction mass in context (including storage mass) of 134421 is larger than max allowed size of 100000:
rpc error
Changes
- broadcast wallet transactions in chunks 564c4da
- adapt wallet UTXO selection to dust patch 695bed8
- if the tx has change and thus so 2 outputs, try having at least 2 inputs as well (in order to not be slowed down by dust patch)
- add options to see wallet and wallet daemon versions 034041b
- lazy wallet utxo sync after broadcasting a tx 23a313b
- granular lock for
refreshutxos
- avoid pushing to
forcesyncchan
if not empty - improve policy for used outpoints; wait for first sync on unsigned tx creation
- fix expire condition
- lock address reading
- fix memory leak
- add rpc client for background ops
- follow naming conventions
- another rename
- compare wallet addresses by value
- small fixes
- add comment
- granular lock for
- RPC SubmitTransaction: Dequeue old responses from previous requests 2e6f7ac
- fix deprecated Node.js warning fa307bc
- bump version to
v2.2.1
f5348da - rebuild pb files with protoc v3.12.3 and grpc v1.2.0 cc0d6c0
- regenerated
karlsenwalletd.pb.go
andkarlsenwalletd_grpc.pb.go
usingprotoc-gen-go-grpc v1.2.0
andprotoc v3.12.3
resolves compatibility issues with newer gRPC methods like grpc.StaticMethod
- regenerated
- updated workflows to use Go 1.23.1 b6ebc60
- KIP9 basic wallet compatibility ab46067
- introduce min change target
- clarify wallet help messages for from-address and send-all
- update changelog 07c174d
Thanks
Thanks to everyone who directly contributed to this release:
v2.2.0
Mandatory Update
Critical bug fix for difficulty adjustment after hardfork block.
Summary
We've recently realized that our previous method for difficulty adjustment isn't sufficient when a hardfork occurs, especially if the hashrate drops significantly. Normally, the default difficulty adjustment window spans 2641
blocks, which are used to calculate the target difficulty. Previously, we reset the difficulty for the first 10
blocks following a hardfork, but by block 11
, the difficulty reverted to almost the same level as before the hardfork. This situation necessitates rebuilding all releases, making it a mandatory update. Although this remains a single hardfork since we are still before the HF DAA score of 26962009
.
Changes
- Adjust difficulty managment between rusty and golang nodes during the first block window c7ac35d 8cb5eb9
- fix for integration test diff manager signature f118156
- difficulty adjustment window fix 9806d63
- Hardfork in devnet and simnet after the difficulty adjustment window 3d0201b
- Fix simnet pruning test eebcf69
- Version bump 54f6d23
Thanks
Thanks to everyone who directly contributed to this release:
v2.1.1
Optional Update
This is an optional update which includes changes for testnet
and no mainnet
changes.
Summary
We've experimented with 3 different hashing algorithm in testnet
, named khashv1
, khashv1.5
and khashv2
.
khashv1 = KarlsenHashv1
khashv1.5 = FishHash
khashv2 = FishHash Plus (KarlsenHashv2)
However at the end we've decided to use FishHash Plus as it was result of security review of the FishHash algorithm. The PoW code for FishHash is still there, but the expected blocks are either version 1 or version 2. Therefore we decided to restart testnet-1 with shorter HF DAA score and don't need to maintain code for special case in the network.
Changes
Thanks
Thanks to everyone who directly contributed to this release:
v2.1.0
Mandatory Update
Stable release of Golang node daemon including KarlsenHashv2 (khashv2
). The hardfork (HF) will happen at DAA score 26.962.009
around Fri Sep 13 01:37:00 PM UTC 2024. See here https://github.com/karlsen-network/karlsend/blob/d66fed86dfc849e0abf351f5116bdd543a1d5655/domain/dagconfig/params.go#L281. It is mandatory for all node operators to update the Golang node to v2.1.0
prior to reaching the DAA score.
DAG Generation
To start mining using the built-in CPU miner it needs a pre-generated DAG file. KarlsenHashv2 miner uses a 4GB DAG for efficient mining. It generates this DAG with 8 CPU threads and saves it as hashes.dat
for faster subsequent runs.
- First Run: Generates a 4GB DAG using 8 CPU threads. This may take time depending on your computer. Saves the DAG as
hashes.dat
for future use. - Next Runs: Loads
hashes.dat
to skip DAG generation, speeding up startup.
If you need to regenerate the DAG, delete hashes.dat
and run the karlsenminer
again. More information about mining and already available third-party miners are in the README.md
Changes
- First
fishhash
tests 707297b - refresh seeder url 3f0537b
- add minor version a7eaaea
- fix logging f239d00
- Fix issue on word32 usage in kernel mixing step 59e81f9
- Fix the dataset and light cache generation f19c8a5
- Last fixes on kernel has 7e8bc86
- Code cleanup and dag generation correct logging b6f296a
- Added lock on mainnet connection 223b0cd
- Fishhash plus implementation with hard fork procedure cd5888a
- Remove blocking tests on block version because node contains both algorithm 0bed91d
- hard fork procedure from
khashv1
tokhashv2
a8405b3 - fix critical bug in matrix generation 5dea9c1
- HF procedure with diff adjustment 4ab6b22
- align with rusty block version test d1e678a
- fix lint issues e7ce09b 39f0f3f
- Removed periodic race detection workflow 5707e8c
- Added
HFDAAScore
tosimnet
to pass tests e99a2e1 - Fixed pruning_test in
simnet
anddevnet
genesis from Rust node e135ccd - Fixed remaining integration tests and Go modules update 0cab1d1
- Use 4-char abbreviation as rest of KLS logging system (POW->POWK) 75d4ccf
- Increase windows runner pagefile to 32gb 32a6946
- Remove Go cache in test workflow due to its constant failures f8d8eae
- Increase code coverage timeout to 120m due to
khashv2
e34b69a - Increase timeout in integration tests and sequential execution 98b0730
- Fixed
BlockVersionKHashV2
in debug output and removed linebreak 03a8258 - Partially reverted commits e135ccd 0cab1d1
- Moving
khashv2
pre-computed dag file during stability tests 2ff2931 - Give orphans stability test more time to process blocks 23b175a
- Increase Linux swapfile size in GitHub runner to avoid OOM c56f01e
- Increase swap size for code coverage to support
khashv2
29726b7 - Version bump to 2.1.0 for
khashv2
89f8351 - Mainnet HFDAAScore set to 26962009 to switch to
khashv2
c2d369f - Updated README.md and added
khashv2
paragraph 5582011 - Re-enable
mainnet
sync bc65e01
Thanks
Thanks to everyone who directly contributed to this release:
v2.0.1 - Testnet 1 - FishHashPlus - KarlsenHashV2
Mandatory Testnet Update
This release is a mandatory update for testnet-1
introducing KarlsenHashV2
algorithm improvements. This release is intended to be used only in testnet-1
. Please don't try use it in mainnet
, it will immediately return with non-zero exit code.
- New version of the KarlsenHashV2 algorithm implementing a patch from IronFish algorithm audit suggestion.
- Hardfork at DAA score of
6,000,000
, approximatelyThu Mar 31 08:30:00 PM UTC 2024
.
Additional Information
In the course of a security review of FishHash, a recommendation was made to modify the algorithm to slightly improve it. This suggestion does not have an immediate effect on safety or security, but it was recommended to implement the change. The modifications have been made publicly accessible for review at the following URL: Lolliedieb/FishHashMiner@5d94a52
Setup
Instructions are the same as for v2.0.0-testnet-1-fishhash
and can be found here: https://github.com/karlsen-network/karlsend/releases/tag/v2.0.0-testnet-1-fishhash
Thanks
Thanks to everyone who directly contributed to this release:
A very huge kudos is given to @Lolliedieb for his exceptional work on the FishHash algorithm and for his assistance in addressing questions!
v1.2.0 - Mighty Marlsen - Update 2
Recommended Update
Stable release update 2 with the following changes:
- Added support for derivation path from Kaspa as wallet
v1
and Karlsen as walletv2
(see backward compatibility below) - Added new command line option
-l
(short) or--legacy
(long) to thecreate
subcommand (see backward compatibility below) - Switched cointype in bip39 derivation to
121337
(see backward compatibility below) - Changed
karlsenwallet
listen port from 8082 to 9182 - Fixed
karlsend
andkarlsenminer
Go traces - Fixed all stability and integration tests
- Fixed crash in
karlsenminer
- Fixed race in gRPC client
send
,recv
andclose
handler - Updated Go modules and dependencies
- Issues closed: #6, #7, #13, #17, #19, #25, #26, #34, #36, #37, #38, #40
Breaking Changes
With the complete decoupling of Karlsen from Kaspa, we've introduced several changes which may require attention from node operators. If you are using --loglevel
to specify different subsystem verbosity levels, you need to switch KASD=
to KLSD=
otherwise node startup will fail with: The specified subsystem [KASD] is invalid
.
Backward Compatibility
Following the recent transition from Kaspa coin type 111111
to Karlsen coin type 121337
- a change already documented on https://github.com/satoshilabs/slips/blob/master/slip-0044.md - we're in the process of adopting our specific derivation path. This step is crucial for most integrations that do not operate a node daemon, such as hardware wallets, to ensure address compatibility across different platforms. A unique derivation path is essential for this purpose.
We currently have wallets that use the old coin type, necessitating support for both the legacy and new derivation paths. To facilitate this, a new command line option has been introduced for the create
subcommand: -l
(short) or --legacy
(long). Here's how it functions:
- By default, the command creates or imports a version 2 wallet using the new coin type
121337
. - When the legacy option is invoked, it creates or imports a version 1 wallet with the original coin type
111111
.
Although wallets with version 1 will remain operational, migrating KLS to a newly established version 2 wallet is strongly advised for future compatibility with both software and hardware wallets.
Thanks
Thanks to everyone who directly contributed to this release:
v2.0.0 - Testnet 1 - FishHash
Testnet Release
This release is intended to be used only in testnet-1
to verify new mining algorithm based on FishHash. Please don't try use it in mainnet
, it will immediately return with non-zero exit code. You can find more information about FishHash in the following paper: https://github.com/iron-fish/fish-hash/blob/main/FishHash.pdf
Testnet Purpose
Our goal is to thoroughly evaluate KarlsenHashV2's (FishHash) performance and security. We invite blockchain enthusiasts, developers, and experts to join this open testnet and help us gather crucial data and insights.
Key Indicators for Monitoring
We'll be monitoring several key metrics to ensure our network's strength:
- Blockrate - Understanding the time to mine new blocks under different network conditions.
- Red Block Ratio - Assessing the frequency of orphaned blocks for network stability.
- Validation Time - Measuring transaction validation times on various machines.
Setup
Run the node:
karlsend --testnet --utxoindex --connect 192.99.200.155
Run the miner:
karlsenminer --testnet --miningaddr karlsentest:qrxuvenk483jj5k5zpwgdqyk27eacsgv9fj3kwu6puj38usnaj9uu55cz0y8q
Replace the miningaddr
with your wallet address and please be aware of the karlsentest:
prefix in testnet.
Thanks
Thanks to everyone who directly contributed to this release:
v1.1.0 - Mighty Marlsen - Update 1
Optional Update
Stable release update 1 with the following features:
- #1 [Fix] Max coin supply fixes
- #2 [Fix] Docker configs
- #15 [Fix] Rename text string kaspa to karlsen in karlsenwallet
- #18 [Testnet] Genesis hash for setup testnet, simnet & devnet for karlsen
- #20 [RPC][Fix] Batch upstream merge including critical RPC bug
- #23 [Fix] Additional DNS seeders and enabled testnet, simnet and devnet
- #24 [Fix] GitHub workflow for automatic and deterministic builds
Notes
It's worth noting that this marks the initial phase of our algorithm modification plan set for Q1/2024. During this period, a variety of algorithms will undergo testing on a public testnet. The team at Karlsen Network has put forward FishHash
as our proposed solution, and we openly invite members of our community to either suggest or create their own GPU-compatible algorithms. These submissions will be evaluated by the community and considered for inclusion on the list of algorithms up for voting.
Thanks
Thanks to everyone who directly contributed to this release: