Skip to content

Releases: karlsen-network/karlsend

v2.2.1

19 Sep 19:40
7cca4f4
Compare
Choose a tag to compare

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
  • 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 and karlsenwalletd_grpc.pb.go using protoc-gen-go-grpc v1.2.0 and protoc v3.12.3 resolves compatibility issues with newer gRPC methods like grpc.StaticMethod
  • 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

03 Sep 19:56
2ace100
Compare
Choose a tag to compare

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

02 Sep 08:56
781b7b5
Compare
Choose a tag to compare

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

  • HF DAAscore to switch to khashv2 (12 hours after testnet launch) 2405395
  • Version bump 0e96279

Thanks

Thanks to everyone who directly contributed to this release:

v2.1.0

29 Aug 22:03
21b6f8d
Compare
Choose a tag to compare

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 to khashv2 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 to simnet to pass tests e99a2e1
  • Fixed pruning_test in simnet and devnet 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

28 Mar 21:13
1b6644b
Compare
Choose a tag to compare

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, approximately Thu 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

07 Mar 08:51
3c63c5e
Compare
Choose a tag to compare

Recommended Update

Stable release update 2 with the following changes:

  • Added support for derivation path from Kaspa as wallet v1 and Karlsen as wallet v2 (see backward compatibility below)
  • Added new command line option -l (short) or --legacy (long) to the create 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 and karlsenminer Go traces
  • Fixed all stability and integration tests
  • Fixed crash in karlsenminer
  • Fixed race in gRPC client send, recv and close 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

23 Jan 22:11
b9c6d1a
Compare
Choose a tag to compare
Pre-release

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

25 Dec 00:33
3909ca2
Compare
Choose a tag to compare

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:

v1.0.0

15 Nov 22:12
Compare
Choose a tag to compare

first shoot