Klever Blockchain Testnet Scheduled Maintenance: A Major Leap for KVM 🚀

The Klever Blockchain ecosystem is about to take a major step forward with the deployment of a new and more robust version of the Klever Virtual Machine (KVM). As part of this process, a scheduled maintenance for the Testnet environment will take place to ensure a smooth transition to the upgraded infrastructure.

Scheduled Maintenance Details

  • Start Time: February 6, 2025, at 5 PM UTC
  • Duration: 24 hours
  • Expected Completion: February 7, 2025, at 5 PM UTC
  • Impact: The entire testnet environment, including KleverScan.org, will be unavailable during this period.
  • Notification: A maintenance notice will be displayed on the KleverScan homepage throughout the maintenance window.

This update follows crucial adjustments received from the certification body and marks a significant enhancement of the Klever Blockchain ecosystem.

Important Notice: Testnet Reset

As part of this update, the testnet will be fully reseted. This means that all existing projects, including tokens, smart contracts, nodes, addresses and funds will be erased. Developers and users will need to recreate their projects and wallets once the testnet is operational again. This reset is essential to align the environment with the latest improvements and ensure a stable and efficient deployment of the new KVM.

What’s New in the Core Module?

This update brings a comprehensive set of features, enhancements, and fixes to the core module of Klever Blockchain. Below is the full changelog:

New Features:

  • Users can now estimate fees using a node API.
  • Users can now send split royalties to unregistered addresses in Klever Blockchain.
  • Users can now access the userKDA endpoint on the node.
  • Users can now use KLV and KFI as valid token identifiers in the virtual machine.
  • Updating an asset owner will now also update the asset KDA pool owner.
  • Operators can specify encoded files or WebAssembly (WASM).
  • Deployment of multiple indirect smart contracts is now supported.
  • Users can add transfer roles when creating or triggering an asset.
  • Semi-Fungible Tokens (SFTs) can now be minted with an amount of 0.
  • API now displays asset type and indicates if an asset has a KDA pool.
  • Administrative functionalities for assets are now available via a designated admin address.
  • Operators can now decode VM outputs.
  • Users with the deposit role can now perform deposits on the KDA pool.
  • A managed method is now available to retrieve SFT metadata in the VM.

Enhancements:

  • More consistent behavior when updating contract code during contract calls.
  • More accurate gas charging when inserting/removing keys on managed maps.
  • Improved gas handling during contract deletions, including a new refund mechanism.
  • Smart contract deletions now preserve account state and only remove contract code.
  • Enhanced transaction integrity checks and size validation.
  • More efficient gas usage; gas is now consumed only for transfers that have not been executed.
  • Correct indexing of SFT attributes from smart contracts.
  • More consistent return values from IsOnCurveEC function.
  • Enhanced configuration options and better logging for VM query gas limits.
  • The total staked on a proposal will decrement when performing a KFI unfreeze.
  • Improved validation for BigFloatPow function to handle exponent correctly.
  • Implementation of a maximum gas limit check for improved transaction validation.
  • Optimization of transaction selection based on the block gas limit.
  • Maximum transaction nonce difference allowance reduced to 100.
  • Improved validation for KDATransfer transactions.

Bug Fixes:

  • Prevents setting a smart contract as the sender in transactions, improving security.
  • Handles cases where royalties are not specified without errors.
  • Improved validation to prevent input errors in asset names.
  • Corrected claim receipt asset IDs.

API & Public Access:

  • Improved access restrictions to mitigate potential DoS attacks.
  • Size limits introduced for raw transactions.
  • More accurate gas calculations in StorageContext, particularly for unchanged values.

What’s New in the VM-SDK?

  • Redesigned proxy feature for calling other smart contracts.
  • Redesigned transaction creation feature.
  • Lighter development environment with reduced usage of Rust macros.
  • Ability to set asset attributes using built-in functions.
  • Functionality to verify if an account has specific permissions.
  • Ability to update account permissions.
  • New function to retrieve metadata for semi-fungible tokens.

Why This Update Matters

The Klever Virtual Machine (KVM) is a game-changer for the Klever Blockchain ecosystem. It enables faster, more efficient execution of smart contracts and dApps while maintaining security and scalability. Key features include:

  • Efficiency: Fast and cost-effective execution of smart contracts.
  • Security: A highly secure environment for smart contract execution.
  • Scalability: Designed to handle large-scale dApp deployment.
  • Energy Efficiency: Utilizes a Secure Proof of Stake (SPoS) consensus for reduced energy consumption.
  • Future-Ready Technology: Built with WebAssembly (WASM) for cutting-edge performance.

What’s Next?

Following this testnet update, the peripheral components of Klever Blockchain and KVM will receive updates throughout the next weeks. These updates will further solidify the foundation for the mainnet launch of KVM.

This is a crucial step towards bringing KVM to the mainnet. Now is the time for developers and the community to test, identify potential issues, and fine-tune the system to ensure a seamless launch.

We Need Your Feedback!

Your input is vital to the success of this update. We encourage you to test the new features, report any issues, and share your thoughts with us. Your feedback will help us refine and perfect the KVM before its mainnet debut—a historic milestone for the Klever Blockchain ecosystem.


Stay tuned, test, be part of this revolutionary journey and always Be Klever!

22 Likes

Can you explain this?

2 Likes

@CryptoJaeger When a node receives a transaction, it performs security validations before any processing. One of these validations checks whether the received transaction has a higher nonce than the account’s current nonce and, if so, whether it falls within an acceptable margin.

This update reduces that margin to 100. This means that an account with a nonce of 1 will only be able to send up to 100 transactions while its nonce remains at 1. As soon as these transactions are committed to the network, the account nonce is updated, and this limit is reset.

The purpose of this change is to protect KleverChain from certain attacks, and it should not negatively impact normal users.

3 Likes

Thank you for explain.

2 Likes

@Validators good y’all know about this update on Testnet enviroment.

4 Likes

The update has been done!

Thank y’all for invaluable support, as always.

Klever Explorer TestNet

4 Likes

I’m sorry to have to say this, but this query is so counterproductive:
kda

You start iterating through all possible assets again to see what’s really there.

I would have liked a query where everything is included. KLV Balance, Nonce, Buckets and Assets.

Question:

I don´t find the endpoint:

API now displays asset type and indicates if an asset has a KDA pool.

1 Like

Hello @CryptoJaeger!

The new endpoint /address/{address}/kda does not involve any iteration. It returns only one asset at a time, identified by the query asset={id}. If no ID is provided, it defaults to KLV. This is useful for querying specific assets of specific accounts. Additionally, it includes buckets for the given account/asset. You can see an example [here].

If you are looking for an endpoint that includes KLV balance, nonce, buckets, and assets, it is available in the proxy under /v1.0/address/{address}. You can see an example [here].

Regarding the indication of whether an asset has a KDA pool, this information is available in the asset endpoint within the proxy: /v1.0/assets/{id}. You can see an example [here] (look for the attribute hasKdaPool).

I hope this helps you find what you’re looking for. Let me know if you need further clarification!

Unfortunately, this is not the solution that I personally would have liked.

I posted some wishes on Slack a long time ago, but unfortunately I can no longer find them. Here are a few too. Wishlist and Fixlist - #2 by Duka

What I meant by iterating is exactly what you describe here.

Every time I want to read an asset list of an account, I have to query all asset IDs to see if there is a pool and I have to query whether there are rewards for each asset. If I use the v1.0 API (KleverProxy), that’s 21 queries for 10 assets in the portfolio.

I have made a video of my KleverTip wallet. You can see how many unnecessary queries there are, just for one account.

Here is the video:
allowance

As far as the Node API is concerned, Klever is pretty poorly equipped. We should try to fix that. If I only have to rely on the KleverProxy, it’s neither decentralised nor, in the worst case, do I have any options for querying the accounts.

  • Account query with AssetIDs and balance, reward info’s etc.
  • Validator query with all necessary information
4 Likes

Thanks for your feedback! Regarding rewards, since they change dynamically every block/time depending on the type, we don’t index them. All reward-related information is fetched directly from the node to ensure accuracy. Unfortunately, nodes themselves cannot index this efficiently due to the high resource consumption.

To optimize your queries, you might consider implementing a cache to track which assets are set for rewards, so you only query the API for assets that actually have rewards. This should help reduce unnecessary requests.

Additionally, you might find the /:address/allowance/list?assetID=… entry point on KleverProxy useful, it could help streamline your queries further.

Let us know if you have any questions or need more details on optimizing your implementation!

1 Like